diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 2c4bf019b..fa44c39d3 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -11,7 +11,7 @@ permissions: jobs: deploy: runs-on: ubuntu-latest - if: ${{ github.event.head_commit.message != 'Merge pull request*' }} # Ensure it's not a merge commit + if: ${{ github.event.head_commit.message != 'Merge pull request*' }} steps: - uses: actions/checkout@v3 @@ -56,6 +56,9 @@ jobs: WEBUI_SECRET_KEY: ${{ secrets.WEBUI_SECRET_KEY }} DEV_ADMIN_EMAILS: ${{ secrets.DEV_ADMIN_EMAILS }} DEV_USER_EMAILS: ${{ secrets.DEV_USER_EMAILS }} + RAG_OPENAI_API_BASE_URL: ${{ secrets.RAG_OPENAI_API_BASE_URL }} + RAG_OPENAI_API_KEY: ${{ secrets.RAG_OPENAI_API_KEY }} + RAG_EMBEDDING_ENGINE: ${{ secrets.RAG_EMBEDDING_ENGINE }} with: cf_username: ${{ secrets.CLOUDGOV_USERNAME }} cf_password: ${{ secrets.CLOUDGOV_PASSWORD }} @@ -80,6 +83,9 @@ jobs: --var WEBUI_SECRET_KEY="$WEBUI_SECRET_KEY" --var DEV_ADMIN_EMAILS="$DEV_ADMIN_EMAILS" --var DEV_USER_EMAILS="$DEV_USER_EMAILS" + --var RAG_OPENAI_API_BASE_URL="$RAG_OPENAI_API_BASE_URL" + --var RAG_OPENAI_API_KEY="$RAG_OPENAI_API_KEY" + --var RAG_EMBEDDING_ENGINE="$RAG_EMBEDDING_ENGINE" bail: runs-on: ubuntu-latest diff --git a/.husky/pre-commit b/.husky/pre-commit index d942ad8a2..c9cf2e989 100644 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,2 +1,5 @@ +echo "Scanning commit history, ~30-60s... 💅🥱⏳" +gitleaks detect --log-opts="-n 1" +npm install npm run format npm run i18n:parse diff --git a/README.md b/README.md index 8f271369c..021ab8b26 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ 1. **Ensure Python 3.11 is installed**: - - You can check your Python version by running: + - You can check your Python3.11.x version by running: ```bash python3.11 --version @@ -39,22 +39,43 @@ nvm use 20.15.1 ``` -5. **Install deps, build and run**: +5. **Install gitleaks**: - - Install, build and run with hot reloading: + - Install with homebrew, then start a new terminal: ```bash - rm ./backend/data/webui.db && \ + brew install gitleaks + ``` + +6. **Run redis**: + + - Check for redis on the default `lsof -i:6379`, if it's there, make sure it's using the default creds, or kill it and run: + + ```bash + docker run -d --name redis -p 6379:6379 -p 8001:8001 redis/redis-stack:latest + ``` + +7. **Install deps, build and run**: + + - Make sure you've got the .env file set up, then install, build and run with hot reloading: + + ```bash + loadenv .env && \ + rm ./backend/data/webui.db || true && \ pip install -r ./backend/requirements.txt && \ - rm -rf node_modules && \ + rm -rf node_modules || true && \ npm install && \ + npx husky init && \ + cp pre-commit .husky/pre-commit && \ npm run build && \ ./backend/start.sh ``` - - You should see the pipelines server running at 9099, the static files should be compiled and the webui server should be running at http://0.0.0.0:8080. + - The first user to sign up to a new installation should get the admin role. You can also predefine user roles in the .env file. Github auth checks that email domain is in ['gsa.gov'], but you can easily modify it at `backend/apps/webui/routers/auths.py:233`. Eventually we'll need to make github for local dev only for compliance reasons. + - After the first install, you can just run `./backend/start.sh`. First app startup will take a minute even after it says `Uvicorn running on http://0.0.0.0:8080`, once you see the ascii art, all of the features should be available. You may see a 500 the first time and need to refresh. You can run a front end dev server that hot reloads via `npm run dev` but connecting it to the backend and getting auth redirects with live servers working is unresolved due to the frontend and back running on different ports. We probably need to mock auth locally. + - ollama is not required for the app to run, but it is assumed, you can ignore the 500s if its not running. If you want to use it, you can install it with `brew install ollama`. You can then run `ollama serve` to start the server. You can then add a model to ollama with `ollama run mistral`. -6. **Set up pipelines to access models via API**: +8. **Set up pipelines to access models via API**: -- The first user to sign up to a new installation should get the admin role. Once you're in, navigate to the Admin Panel > Settings > Connections > OpenAI API section. Set the API URL to http://localhost:9099 and the API key to 0p3n-w3bu! and hit refresh to see if it connects. -- After completing these steps, the model specified in the pipeline should be available in the drop down at the upper left when you create a new conversation. +- Once you're in, you should see the four default models available in the chat. If not, check that the pipelines server is running on 9099 and in the UI click on your user in the lower left > Admin Panel > Settings > Connections > OpenAI API section. Set the API URL to [) and the API key to 0p3n-w3bu! and hit refresh to see if it connects to the pipeline server. +- After completing these steps, the models specified in the pipeline settings should be available in the drop down at the upper left when you create a new conversation. diff --git a/TODO.md b/TODO.md index f09ea6e95..457d22119 100644 --- a/TODO.md +++ b/TODO.md @@ -1,9 +1,94 @@ # TODOs -- Integrate cloud SSO -- Use postgres for db -- Build step during CI. -- Consider checking for state and code in front-end auth route and then redirecting to /auth (and clearing params) on any auth failures. This will allow us to avoid flashing the sign in screen before showing "signing into ai sandbox..." -- Save and retrieve valves.json data from env instead of json -- Remove pipeline add from admin settings > pipelines -- Investigation RAG set up +## Current Project TODOs + +- Put up a warning banner on publicly shared links that says "This is a test for technology evaluation purposes only, this is not a decisional document" Make demo Videos: playground switching sys prompts, transfer sys prompt to custom model with docs +- Cite sources in rag (do this for other models, too): +- Allow bulk select even when nothing is tagged: +- Models and docs need ownership and visibility in database, owner str, visibility [str] +- gray out vision for custom models that don't have vision +- Ability to share docs/models by pasting an email of another user ("This email is belongs to a sandbox user. They will now have access to the model" / "This email does not belong to a sandbox user"). Probably want comma separation... +- Add http links to Doc upload options, seems mostly done +- stop checking for ollama models? +- Fix tagging ux, add tags should be clickable, should save when you hit save +- Check and batch-tag multiple docs +- documents tab needs a spinner when processing docs +- existing tags should be selectable when adding to docs +- Need initial (Type a message down there 👇 to get started / explain that this is a chat interface) message for new users +- Soft outline around new chat and documents buttons +- Fix translations for docs & more and search your chats, as well as sign in screen +- create a couple default custom prompts shortcuts like /quick-summary ([type something here]) and /quick-summary-from-paste {{clipboard}} +- Unhide Tools from Docs & more layout +- Chroma is kept in ram... need to swap for redisVL +- tell run format to ignore package.json so we don't have to npm install in pre-commit to get formatting to match in the ci check +- change cors all origins to front end and pipelines only + +## TODOs Found in Codebase + +### Git Hooks + +- Replace with appropriate checks (e.g. spell checking) +- Replace with appropriate checks for this patch (e.g. checkpatch.pl) +- Replace with appropriate checks for the whole series (e.g. quick build, coding style checks, etc.) + +### Passlib + +- Support the drupal phpass variants (see phpass homepage) +- Remove redundant category deprecations +- Verify digest size (if digest is known) +- Find out what crowd's policy is re: unicode +- Find out what grub's policy is re: unicode +- Try to detect incorrect 8bit/wraparound hashes +- Check for 2x support +- Figure out way to skip these tests when not needed +- Would like to implementing verify() directly, to skip need for parsing hash strings +- Would like to dynamically pick this based on system +- Make default block size configurable via using() and deprecatable via .needs_update() +- Could support the optional 'data' parameter +- Switch to working w/ str or unicode +- Factor out variable checksum size support into a mixin +- Add in 'encoding' support once that's finalized in 1.8 / 1.9 + +### Pandas + +- Use inspect.VALUE here, and make the annotations lazily evaluated +- Handle huge files in some other way +- Remove in 1.0 release +- Check -numweeks for next year +- Remove the '$' check after JMESPath supports it +- Make this configurable in the future +- Support text-indent, padding-left -> alignment.indent +- Allow for special properties -excel-pattern-bgcolor and -excel-pattern-type +- Refactor to remove code duplication +- Handle record value which are lists +- Do this timedelta properly in objToJSON.c +- Figure out why these two versions of `meta` dont always match +- Support other fill patterns +- Handle cell width and height: needs support in pandas.io.excel +- Try to consolidate the concat visible rows methods +- Expand to handle datetime to integer conversion +- Handle datetime to integer conversion +- Expand this to handle a default datetime format + +### Dateutil + +- Check week number 1 of next year as well +- Remove after deprecation period + +### Boto3 + +- Remove the '$' check after JMESPath supports it +- Make this configurable in the future + +### Openpyxl + +- This can probably be sped up using a regex + +### Other + +- Support % +- Don't lowercase case sensitive parts of values (strings) +- Hack in buffer capability for pyxlsb +- There is no way to distinguish between floats and datetimes in pyxlsb +- Can we use current color as initial value to comply with CSS standards? +- Warn user if item entered more than once (e.g. "border: red green") diff --git a/backend/__init__.py b/backend/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/backend/apps/__init__.py b/backend/apps/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/backend/apps/rag/__init__.py b/backend/apps/rag/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/backend/apps/rag/clients/__init__.py b/backend/apps/rag/clients/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/backend/apps/rag/clients/vector_client.py b/backend/apps/rag/clients/vector_client.py new file mode 100644 index 000000000..f3e7b6346 --- /dev/null +++ b/backend/apps/rag/clients/vector_client.py @@ -0,0 +1,243 @@ +from typing import Optional, List, Dict, Any, Union +from pydantic import BaseModel +import numpy as np +import hashlib +import json +from chromadb.utils.batch_utils import create_batches +from redisvl.query import VectorQuery, FilterQuery +from redisvl.index import AsyncSearchIndex +from redisvl.query.filter import Tag +import logging + +log = logging.getLogger(__name__) +log.setLevel("DEBUG") + + +class Metadata(BaseModel): + key: str + value: Any # Be sure `Any` is truly necessary; otherwise, consider a more specific type + + +class QueryResult(BaseModel): + ids: Optional[str] = None + embeddings: Optional[np.ndarray] = None # Single numpy array + documents: Optional[str] = None + uris: Optional[str] = None + datas: Optional[np.ndarray] = None # Single numpy array + metadatas: Optional[Metadata] = None + distances: Optional[float] = None + + def to_dict(self) -> Dict[str, Any]: + return { + "id": self.id, + "embedding": ( + self.embedding.tolist() if self.embedding is not None else None + ), + "document": self.document, + "uri": self.uri, + "data": self.data.tolist() if self.data is not None else None, + "metadata": self.metadata.dict() if self.metadata is not None else None, + "distance": self.distance, + } + + class Config: + arbitrary_types_allowed = True + + +class VectorClient: + """Unified client to manage vector collections in both Chroma and RedisVL.""" + + def __init__(self, backend: str, chroma_client: Optional[Any] = None): + self.backend = backend + self.chroma_client = chroma_client + self.async_search_index = None + + if backend not in ["chroma", "redis"]: + raise ValueError("Backend must be either 'chroma' or 'redis'.") + + async def initialize(self, async_search_index: AsyncSearchIndex): + """Initialize the VectorClient with the async_search_index.""" + if self.backend == "redis": + self.async_search_index = async_search_index + + def create_collection( + self, name: str, metadata: Optional[Dict[str, Any]] = None + ) -> "VectorCollection": + """Create a new vector collection.""" + if self.backend == "chroma": + self.chroma_client.create_collection(name=name, metadata=metadata) + return VectorCollection(name=name, vector_client=self, metadata=metadata) + + def get_collection(self, name: str) -> "VectorCollection": + """Retrieve an existing vector collection.""" + # TODO: check if collection exists, meaning entries with collection tag + if self.backend == "chroma": + self.chroma_client.get_collection(name=name) + elif self.backend == "redis": + return VectorCollection(name=name, vector_client=self) + + def delete_collection(self, name: str): + """Delete a vector collection. For Redis, handled via collection tag.""" + if self.backend == "chroma": + self.chroma_client.delete_collection(name=name) + elif self.backend == "redis": + # TODO: check for entries with collection tag + return True + + def _redis_schema(self) -> Dict[str, Any]: + """Define the shared schema for Redis.""" + return { + "index": {"name": "global_index", "prefix": "your_prefix"}, + "fields": [ + {"name": "text", "type": "text"}, + {"name": "metadata", "type": "text"}, + {"name": "doc_id", "type": "tag"}, + {"name": "collection", "type": "tag"}, + { + "name": "vector", + "type": "vector", + "attrs": { + "dims": 128, + "distance_metric": "cosine", + "algorithm": "flat", + "datatype": "float32", + }, + }, + ], + } + + +class VectorCollection: + def __init__( + self, + name: str, + vector_client: VectorClient, + metadata: Optional[Dict[str, Any]] = None, + ): + self.name = name + self.vector_client = vector_client + self.metadata = metadata + + if vector_client.backend == "chroma": + self.collection = vector_client.chroma_client.get_or_create_collection( + name=self.name + ) + elif vector_client.backend == "redis": + self.collection = vector_client.async_search_index + + async def add( + self, + texts: List[str], + embeddings: List[np.ndarray], + ids: Optional[List[str]] = None, + metadatas: Optional[List[Dict[str, Any]]] = None, + ): + """Add documents, embeddings, and other metadata to the collection.""" + ids = ids or [ + hashlib.sha256(text.encode("utf-8")).hexdigest() for text in texts + ] + ids = [str(id) for id in ids] # Ensure all IDs are strings + if self.vector_client.backend == "chroma": + for batch in create_batches( + api=self.vector_client.chroma_client, + ids=ids, + metadatas=metadatas, + embeddings=embeddings, + documents=texts, + ): + self.collection.add(*batch) + elif self.vector_client.backend == "redis": + data_items = [ + { + "text": text, + "metadata": json.dumps(metadatas[i]) if metadatas else "", + "vector": np.array(embedding, dtype=np.float32).tobytes(), + "doc_id": ids[i], + "collection": self.name, + } + for i, (text, embedding) in enumerate(zip(texts, embeddings)) + ] + for id in ids: + result = await self.collection.fetch(id) + if result: + log.debug(f"Document with ID {id}, skipping") + else: + await self.collection.load(data_items, id_field="doc_id") + + async def query( + self, query_embedding: np.ndarray, n_results: int + ) -> List[Dict[str, Any]]: + """Query the collection for similar vectors based on a query embedding.""" + results = [] + if self.vector_client.backend == "chroma": + raw_results = self.collection.query( + query_embeddings=[query_embedding], n_results=n_results + ) + # Assuming Chroma also returns a similar structure (list of dicts) + for raw_result in raw_results: + query_result = QueryResult( + ids=[doc["id"] for doc in raw_result], + embeddings=[np.array(doc["embedding"]) for doc in raw_result], + documents=[doc.get("document") for doc in raw_result], + distances=[doc.get("distance") for doc in raw_result], + # Assuming similar keys, adapt if necessary + ) + results.append(query_result.to_dict()) + elif self.vector_client.backend == "redis": + # log.debug(f"\n\nquery_embedding: {query_embedding}\n\n") + # log.debug(f"\n\nNum_results to return: {n_results}\n\n") + query = VectorQuery( + vector=query_embedding, + vector_field_name="vector", + num_results=n_results, + return_fields=["doc_id", "text", "vector", "metadata"], + filter_expression=Tag("collection") == self.name, + return_score=True, + ) + raw_results = await self.collection.query(query) + + for raw_result in raw_results: + query_result = { + "id": raw_result["doc_id"], + "embedding": np.array(raw_result["vector"]), + "document": raw_result["text"], + "metadata": json.loads(raw_result["metadata"]), + "distance": raw_result["vector_distance"], + } + results.append(query_result) + + return results + + async def get( + self, ids: Optional[List[str]] = None + ) -> Union[List[Dict[str, Any]], List[Any]]: + """Retrieve documents by their IDs.""" + if self.vector_client.backend == "chroma": + return self.collection.get(ids=ids) + elif self.vector_client.backend == "redis": + return ( + [await self.collection.fetch(doc_id) for doc_id in ids] if ids else [] + ) + + async def get_one(self) -> List[Dict[str, Any]]: + """Retrieve documents by their IDs.""" + if self.vector_client.backend == "chroma": + return NotImplementedError + elif self.vector_client.backend == "redis": + collection_tag = Tag("collection") == self.name + filter_query = FilterQuery( + filter_expression=collection_tag, + return_fields=["doc_id"], + num_results=1, + ) + collection_entries = await self.collection._query(filter_query) + if len(collection_entries) > 0: + return collection_entries + return None + + async def delete(self, ids: List[str]): + """Delete documents by their IDs.""" + if self.vector_client.backend == "chroma": + return self.collection.delete(ids) + elif self.vector_client.backend == "redis": + await self.collection.drop_keys(ids) diff --git a/backend/apps/rag/main.py b/backend/apps/rag/main.py index 4bd5da86c..4f5e06252 100644 --- a/backend/apps/rag/main.py +++ b/backend/apps/rag/main.py @@ -8,14 +8,18 @@ Form, ) from fastapi.middleware.cors import CORSMiddleware -import requests -import os, shutil, logging, re + +# import requests +import os +import shutil +import logging + +# import re from datetime import datetime from pathlib import Path -from typing import List, Union, Sequence, Iterator, Any +from typing import List, Union, Sequence, Iterator # , Any -from chromadb.utils.batch_utils import create_batches from langchain_core.documents import Document from langchain_community.document_loaders import ( @@ -26,7 +30,7 @@ BSHTMLLoader, Docx2txtLoader, UnstructuredEPubLoader, - UnstructuredWordDocumentLoader, + # UnstructuredWordDocumentLoader, UnstructuredMarkdownLoader, UnstructuredXMLLoader, UnstructuredRSTLoader, @@ -45,7 +49,6 @@ from pydantic import BaseModel from typing import Optional import mimetypes -import uuid import json import sentence_transformers @@ -53,7 +56,7 @@ from apps.webui.models.documents import ( Documents, DocumentForm, - DocumentResponse, + # DocumentResponse, ) from apps.rag.utils import ( @@ -124,6 +127,7 @@ RAG_WEB_SEARCH_RESULT_COUNT, RAG_WEB_SEARCH_CONCURRENT_REQUESTS, RAG_EMBEDDING_OPENAI_BATCH_SIZE, + VECTOR_CLIENT, ) from constants import ERROR_MESSAGES @@ -153,8 +157,10 @@ app.state.config.RAG_TEMPLATE = RAG_TEMPLATE -app.state.config.OPENAI_API_BASE_URL = RAG_OPENAI_API_BASE_URL -app.state.config.OPENAI_API_KEY = RAG_OPENAI_API_KEY +# app.state.config.OPENAI_API_BASE_URL = RAG_OPENAI_API_BASE_URL +# app.state.config.OPENAI_API_KEY = RAG_OPENAI_API_KEY +app.state.config.RAG_OPENAI_API_BASE_URL = RAG_OPENAI_API_BASE_URL +app.state.config.RAG_OPENAI_API_KEY = RAG_OPENAI_API_KEY app.state.config.PDF_EXTRACT_IMAGES = PDF_EXTRACT_IMAGES @@ -222,8 +228,8 @@ def update_reranking_model( app.state.config.RAG_EMBEDDING_ENGINE, app.state.config.RAG_EMBEDDING_MODEL, app.state.sentence_transformer_ef, - app.state.config.OPENAI_API_KEY, - app.state.config.OPENAI_API_BASE_URL, + app.state.config.RAG_OPENAI_API_KEY, + app.state.config.RAG_OPENAI_API_BASE_URL, app.state.config.RAG_EMBEDDING_OPENAI_BATCH_SIZE, ) @@ -272,8 +278,8 @@ async def get_embedding_config(user=Depends(get_admin_user)): "embedding_engine": app.state.config.RAG_EMBEDDING_ENGINE, "embedding_model": app.state.config.RAG_EMBEDDING_MODEL, "openai_config": { - "url": app.state.config.OPENAI_API_BASE_URL, - "key": app.state.config.OPENAI_API_KEY, + "url": app.state.config.RAG_OPENAI_API_BASE_URL, + "key": app.state.config.RAG_OPENAI_API_KEY, "batch_size": app.state.config.RAG_EMBEDDING_OPENAI_BATCH_SIZE, }, } @@ -310,10 +316,10 @@ async def update_embedding_config( app.state.config.RAG_EMBEDDING_ENGINE = form_data.embedding_engine app.state.config.RAG_EMBEDDING_MODEL = form_data.embedding_model - if app.state.config.RAG_EMBEDDING_ENGINE in ["ollama", "openai"]: + if app.state.config.RAG_EMBEDDING_ENGINE in ["ollama"]: if form_data.openai_config is not None: - app.state.config.OPENAI_API_BASE_URL = form_data.openai_config.url - app.state.config.OPENAI_API_KEY = form_data.openai_config.key + app.state.config.RAG_OPENAI_API_BASE_URL = form_data.openai_config.url + app.state.config.RAG_OPENAI_API_KEY = form_data.openai_config.key app.state.config.RAG_EMBEDDING_OPENAI_BATCH_SIZE = ( form_data.openai_config.batch_size if form_data.openai_config.batch_size @@ -326,8 +332,8 @@ async def update_embedding_config( app.state.config.RAG_EMBEDDING_ENGINE, app.state.config.RAG_EMBEDDING_MODEL, app.state.sentence_transformer_ef, - app.state.config.OPENAI_API_KEY, - app.state.config.OPENAI_API_BASE_URL, + app.state.config.RAG_OPENAI_API_KEY, + app.state.config.RAG_OPENAI_API_BASE_URL, app.state.config.RAG_EMBEDDING_OPENAI_BATCH_SIZE, ) @@ -336,8 +342,8 @@ async def update_embedding_config( "embedding_engine": app.state.config.RAG_EMBEDDING_ENGINE, "embedding_model": app.state.config.RAG_EMBEDDING_MODEL, "openai_config": { - "url": app.state.config.OPENAI_API_BASE_URL, - "key": app.state.config.OPENAI_API_KEY, + "url": app.state.config.RAG_OPENAI_API_BASE_URL, + "key": app.state.config.RAG_OPENAI_API_KEY, "batch_size": app.state.config.RAG_EMBEDDING_OPENAI_BATCH_SIZE, }, } @@ -618,10 +624,11 @@ class QueryCollectionsForm(BaseModel): @app.post("/query/collection") -def query_collection_handler( +async def query_collection_handler( form_data: QueryCollectionsForm, user=Depends(get_current_user), ): + log.debug(f"query_collection_handler: {form_data}") try: if app.state.config.ENABLE_RAG_HYBRID_SEARCH: return query_collection_with_hybrid_search( @@ -635,7 +642,7 @@ def query_collection_handler( ), ) else: - return query_collection( + return await query_collection( collection_names=form_data.collection_names, query=form_data.query, embedding_function=app.state.EMBEDDING_FUNCTION, @@ -651,7 +658,7 @@ def query_collection_handler( @app.post("/youtube") -def store_youtube_video(form_data: UrlForm, user=Depends(get_current_user)): +async def store_youtube_video(form_data: UrlForm, user=Depends(get_current_user)): try: loader = YoutubeLoader.from_youtube_url( form_data.url, @@ -665,7 +672,7 @@ def store_youtube_video(form_data: UrlForm, user=Depends(get_current_user)): if collection_name == "": collection_name = calculate_sha256_string(form_data.url)[:63] - store_data_in_vector_db(data, collection_name, overwrite=True) + await store_data_in_vector_db(data, collection_name, overwrite=True) return { "status": True, "collection_name": collection_name, @@ -680,7 +687,7 @@ def store_youtube_video(form_data: UrlForm, user=Depends(get_current_user)): @app.post("/web") -def store_web(form_data: UrlForm, user=Depends(get_current_user)): +async def store_web(form_data: UrlForm, user=Depends(get_current_user)): # "https://www.gutenberg.org/files/1727/1727-h/1727-h.htm" try: loader = get_web_loader( @@ -693,7 +700,7 @@ def store_web(form_data: UrlForm, user=Depends(get_current_user)): if collection_name == "": collection_name = calculate_sha256_string(form_data.url)[:63] - store_data_in_vector_db(data, collection_name, overwrite=True) + await store_data_in_vector_db(data, collection_name, overwrite=True) return { "status": True, "collection_name": collection_name, @@ -846,7 +853,7 @@ def search_web(engine: str, query: str) -> list[SearchResult]: @app.post("/web/search") -def store_web_search(form_data: SearchForm, user=Depends(get_current_user)): +async def store_web_search(form_data: SearchForm, user=Depends(get_current_user)): try: logging.info( f"trying to web search with {app.state.config.RAG_WEB_SEARCH_ENGINE, form_data.query}" @@ -872,7 +879,7 @@ def store_web_search(form_data: SearchForm, user=Depends(get_current_user)): if collection_name == "": collection_name = calculate_sha256_string(form_data.query)[:63] - store_data_in_vector_db(data, collection_name, overwrite=True) + await store_data_in_vector_db(data, collection_name, overwrite=True) return { "status": True, "collection_name": collection_name, @@ -886,7 +893,16 @@ def store_web_search(form_data: SearchForm, user=Depends(get_current_user)): ) -def store_data_in_vector_db(data, collection_name, overwrite: bool = False) -> bool: +async def store_data_in_vector_db( + data, collection_name, overwrite: bool = False +) -> bool: + + # check for collection + collection = VECTOR_CLIENT.get_collection(collection_name) + result = await collection.get_one() + if result is not None and not overwrite: + log.info(f"collection already exists for name: {collection_name}") + return True text_splitter = RecursiveCharacterTextSplitter( chunk_size=app.state.config.CHUNK_SIZE, @@ -897,76 +913,112 @@ def store_data_in_vector_db(data, collection_name, overwrite: bool = False) -> b docs = text_splitter.split_documents(data) if len(docs) > 0: - log.info(f"store_data_in_vector_db {docs}") - return store_docs_in_vector_db(docs, collection_name, overwrite), None + # log.info(f"store_data_in_vector_db {docs}") + return await store_docs_in_vector_db(docs, collection_name, overwrite), None else: raise ValueError(ERROR_MESSAGES.EMPTY_CONTENT) -def store_text_in_vector_db( +async def store_text_in_vector_db( text, metadata, collection_name, overwrite: bool = False ) -> bool: + + # check for collection + collection = VECTOR_CLIENT.get_collection(collection_name) + if collection is not None and not overwrite: + log.info(f"collection already exists for name: {collection_name}") + return True + text_splitter = RecursiveCharacterTextSplitter( chunk_size=app.state.config.CHUNK_SIZE, chunk_overlap=app.state.config.CHUNK_OVERLAP, add_start_index=True, ) docs = text_splitter.create_documents([text], metadatas=[metadata]) - return store_docs_in_vector_db(docs, collection_name, overwrite) + return await store_docs_in_vector_db(docs, collection_name, overwrite) -def store_docs_in_vector_db(docs, collection_name, overwrite: bool = False) -> bool: - log.info(f"store_docs_in_vector_db {docs} {collection_name}") +async def store_docs_in_vector_db( + docs, collection_name, overwrite: bool = False +) -> bool: + log.info(f"Storing documents in vector DB for collection {collection_name}") - texts = [doc.page_content for doc in docs] - metadatas = [doc.metadata for doc in docs] + # collection = VECTOR_CLIENT.get_collection(collection_name) - # ChromaDB does not like datetime formats - # for meta-data so convert them to string. - for metadata in metadatas: - for key, value in metadata.items(): - if isinstance(value, datetime): - metadata[key] = str(value) + texts = [doc.page_content for doc in docs] + metadatas = [convert_metadata_to_strings(doc.metadata) for doc in docs] try: - if overwrite: - for collection in CHROMA_CLIENT.list_collections(): - if collection_name == collection.name: - log.info(f"deleting existing collection {collection_name}") - CHROMA_CLIENT.delete_collection(name=collection_name) + collection = await prepare_collection(collection_name, overwrite) - collection = CHROMA_CLIENT.create_collection(name=collection_name) + if not collection: + raise Exception(f"Failed to create or get collection {collection_name}.") - embedding_func = get_embedding_function( - app.state.config.RAG_EMBEDDING_ENGINE, - app.state.config.RAG_EMBEDDING_MODEL, - app.state.sentence_transformer_ef, - app.state.config.OPENAI_API_KEY, - app.state.config.OPENAI_API_BASE_URL, - app.state.config.RAG_EMBEDDING_OPENAI_BATCH_SIZE, - ) + embeddings = await compute_embeddings(texts) - embedding_texts = list(map(lambda x: x.replace("\n", " "), texts)) - embeddings = embedding_func(embedding_texts) + log_and_print_summary(texts, embeddings, collection_name) - for batch in create_batches( - api=CHROMA_CLIENT, - ids=[str(uuid.uuid4()) for _ in texts], - metadatas=metadatas, - embeddings=embeddings, - documents=texts, - ): - collection.add(*batch) + await collection.add(texts, embeddings, metadatas=metadatas) return True except Exception as e: - log.exception(e) + log.exception(f"Error storing documents: {e}") + if e.__class__.__name__ == "UniqueConstraintError": return True return False +def convert_metadata_to_strings(metadata): + """Converts datetime objects in metadata to strings.""" + for key, value in metadata.items(): + if isinstance(value, datetime): + metadata[key] = str(value) + return metadata + + +async def prepare_collection(collection_name, overwrite): + """Prepare the vector collection, handling possible overwriting.""" + collection = VECTOR_CLIENT.get_collection(collection_name) + + if overwrite: + log.info(f"Deleting existing collection {collection_name}") + VECTOR_CLIENT.delete_collection(name=collection_name) + collection = VECTOR_CLIENT.create_collection(name=collection_name) + + return collection + + +async def compute_embeddings(texts): + """Compute embeddings for the given texts.""" + # Assume get_embedding_function and related configs are available + log.error(f"Computing embeddings for model: {app.state.config.RAG_EMBEDDING_MODEL}") + embedding_func = get_embedding_function( + app.state.config.RAG_EMBEDDING_ENGINE, + app.state.config.RAG_EMBEDDING_MODEL, + app.state.sentence_transformer_ef, + app.state.config.RAG_OPENAI_API_KEY, + app.state.config.RAG_OPENAI_API_BASE_URL, + app.state.config.RAG_EMBEDDING_OPENAI_BATCH_SIZE, + ) + + # Replace newlines + embedding_texts = [text.replace("\n", " ") for text in texts] + return await embedding_func(embedding_texts) + + +def log_and_print_summary(texts, embeddings, collection_name): + """Log and print the summary of the embeddings and memory usage.""" + d = 1536 if app.state.config.RAG_EMBEDDING_ENGINE == "openai" else 384 + memory_usage = len(texts) * d * 4 # memory in bytes + + log.info(f"Number of embeddings: {len(embeddings)} for {len(texts)} texts.") + log.debug(f"First text: {texts[0]} \nAnd last text: {texts[-1]}") + log.info(f"Estimated memory usage: {memory_usage / (1024 ** 2):.2f} MB") + log.warning(f"Adding {len(texts)} documents to collection {collection_name}") + + def get_loader(filename: str, file_content_type: str, file_path: str): file_ext = filename.split(".")[-1].lower() known_type = True @@ -1063,7 +1115,7 @@ def get_loader(filename: str, file_content_type: str, file_path: str): @app.post("/doc") -def store_doc( +async def store_doc( collection_name: Optional[str] = Form(None), file: UploadFile = File(...), user=Depends(get_current_user), @@ -1083,7 +1135,7 @@ def store_doc( f.close() f = open(file_path, "rb") - if collection_name == None: + if collection_name is None: collection_name = calculate_sha256(f)[:63] f.close() @@ -1091,7 +1143,7 @@ def store_doc( data = loader.load() try: - result = store_data_in_vector_db(data, collection_name) + result = await store_data_in_vector_db(data, collection_name) if result: return { @@ -1132,7 +1184,7 @@ def store_text( ): collection_name = form_data.collection_name - if collection_name == None: + if collection_name is None: collection_name = calculate_sha256_string(form_data.content) result = store_text_in_vector_db( @@ -1151,7 +1203,7 @@ def store_text( @app.get("/scan") -def scan_docs_dir(user=Depends(get_admin_user)): +async def scan_docs_dir(user=Depends(get_admin_user)): for path in Path(DOCS_DIR).rglob("./**/*"): try: if path.is_file() and not path.name.startswith("."): @@ -1169,13 +1221,13 @@ def scan_docs_dir(user=Depends(get_admin_user)): data = loader.load() try: - result = store_data_in_vector_db(data, collection_name) + result = await store_data_in_vector_db(data, collection_name) if result: sanitized_filename = sanitize_filename(filename) doc = Documents.get_doc_by_name(sanitized_filename) - if doc == None: + if doc is None: doc = Documents.insert_new_doc( user.id, DocumentForm( diff --git a/backend/apps/rag/pgvector_example.py b/backend/apps/rag/pgvector_example.py new file mode 100644 index 000000000..9b2a50c51 --- /dev/null +++ b/backend/apps/rag/pgvector_example.py @@ -0,0 +1,132 @@ +# from sentence_transformers import SentenceTransformer +# from langchain_huggingface import HuggingFaceEmbeddings + +# from langchain_core.documents import Document +# from langchain_postgres import PGVector +# from langchain_postgres.vectorstores import PGVector + +# embedding_model = HuggingFaceEmbeddings( +# model_name="sentence-transformers/all-MiniLM-L6-v2" +# ) + +# HOST = "localhost" +# DATABASE = "postgres" +# USER = "postgres" +# PASSWORD = "mysecretpassword" +# PORT = 5432 + +# connection = f"postgresql+psycopg://{USER}:{PASSWORD}@localhost:5432/{DATABASE}" # Uses psycopg3! +# collection_name = "my_docs" + +# vector_store = PGVector( +# embeddings=embedding_model, +# collection_name=collection_name, +# connection=connection, +# use_jsonb=True, +# ) + +# collections = {} + +# collections["collection_name"] = vector_store + +# docs = [ +# Document( +# page_content="there are cats in the pond", +# metadata={"id": 1, "location": "pond", "topic": "animals"}, +# ), +# Document( +# page_content="ducks are also found in the pond", +# metadata={"id": 2, "location": "pond", "topic": "animals"}, +# ), +# Document( +# page_content="fresh apples are available at the market", +# metadata={"id": 3, "location": "market", "topic": "food"}, +# ), +# Document( +# page_content="the market also sells fresh oranges", +# metadata={"id": 4, "location": "market", "topic": "food"}, +# ), +# Document( +# page_content="the new art exhibit is fascinating", +# metadata={"id": 5, "location": "museum", "topic": "art"}, +# ), +# Document( +# page_content="a sculpture exhibit is also at the museum", +# metadata={"id": 6, "location": "museum", "topic": "art"}, +# ), +# Document( +# page_content="a new coffee shop opened on Main Street", +# metadata={"id": 7, "location": "Main Street", "topic": "food"}, +# ), +# Document( +# page_content="the book club meets at the library", +# metadata={"id": 8, "location": "library", "topic": "reading"}, +# ), +# Document( +# page_content="the library hosts a weekly story time for kids", +# metadata={"id": 9, "location": "library", "topic": "reading"}, +# ), +# Document( +# page_content="a cooking class for beginners is offered at the community center", +# metadata={"id": 10, "location": "community center", "topic": "classes"}, +# ), +# ] + +# results = vector_store.add_documents(docs, ids=[doc.metadata["id"] for doc in docs]) +# print(f"add_documents return value: {results}") + +# results = vector_store.delete(ids=["3"]) +# print(f"delete return value: {results}") + +# results = vector_store.similarity_search( +# "kitty", k=10, filter={"id": {"$in": [1, 5, 2, 9]}} +# ) +# print( +# "Searching for the top 10 documents related to 'kitty', " +# + "filtered by IDs [1, 5, 2, 9] " +# ) +# for doc in results: +# print(f"* {doc.page_content} [{doc.metadata}]") +# # doc.page_content might look like: there are cats in the pond +# # doc.metadata might look like: [{'id': 1, 'topic': 'animals', 'location': 'pond'}] + +# # for filter dicts that don't start with an operator, $and is assumed +# results = vector_store.similarity_search( +# "ducks", +# k=10, +# filter={"id": {"$in": [1, 5, 2, 9]}, "location": {"$in": ["pond", "market"]}}, +# ) +# print( +# "Searching for the top 10 documents related to 'ducks', " +# + "filtered by IDs [1, 5, 2, 9] " +# + "and locations ['pond', 'market']." +# ) +# for doc in results: +# print(f"* {doc.page_content} [{doc.metadata}]") + +# # this should return the same results as the above search +# results = vector_store.similarity_search( +# "ducks", +# k=10, +# filter={ +# "$and": [ +# {"id": {"$in": [1, 5, 2, 9]}}, +# {"location": {"$in": ["pond", "market"]}}, +# ] +# }, +# ) +# print( +# "Searching for the top 10 documents related to 'ducks', " +# + "filtered by IDs [1, 5, 2, 9] " +# + "and locations ['pond', 'market']." +# ) +# for doc in results: +# print(f"* {doc.page_content} [{doc.metadata}]") + +# query = "there are cats" # "there are cats in the pond" +# top_n = 10 +# results = vector_store.similarity_search_with_score(query=query, k=top_n) +# print(f"printing top {top_n} similarity score against query: {query}") +# for doc, score in results: +# adjusted_score = max(0, 1 - score) * 100 +# print(f"* [SIM={adjusted_score:.1f}%] {doc.page_content} [{doc.metadata}]") diff --git a/backend/apps/rag/tests/__init__.py b/backend/apps/rag/tests/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/backend/apps/rag/tests/test_vector_client.py b/backend/apps/rag/tests/test_vector_client.py new file mode 100644 index 000000000..17b128b74 --- /dev/null +++ b/backend/apps/rag/tests/test_vector_client.py @@ -0,0 +1,118 @@ +import pytest +import numpy as np +from redis import Redis +from redisvl.index import AsyncSearchIndex +from backend.apps.rag.clients.vector_client import VectorClient, VectorCollection +from backend.apps.rag.utils import get_embedding_function +from backend.config import ( + RAG_OPENAI_API_KEY, + RAG_OPENAI_API_BASE_URL, + RAG_EMBEDDING_ENGINE, + RAG_EMBEDDING_MODEL, + RAG_EMBEDDING_OPENAI_BATCH_SIZE, + REDIS_HOST, + REDIS_PORT, + REDIS_DB, + REDIS_VL_SCHEMA, + VECTOR_STORE, +) + + +@pytest.fixture(scope="module") +async def initialize_client(): + redis_client = Redis( + host=REDIS_HOST, + port=REDIS_PORT, + db=REDIS_DB, + decode_responses=False, + ) + + if VECTOR_STORE == "redis": + print(f"REDIS_VL_SCHEMA: {REDIS_VL_SCHEMA}") + async_search_index = await AsyncSearchIndex.from_dict( + REDIS_VL_SCHEMA + ).set_client(redis_client) + await async_search_index.create(overwrite=True) + + client = VectorClient(backend="redis") + await client.initialize(async_search_index=async_search_index) + return client + else: + raise ValueError(f"Unsupported vector store: {VECTOR_STORE}") + + +@pytest.fixture(scope="module") +async def vector_client(initialize_client): + return await initialize_client + + +@pytest.fixture(scope="module") +def embedding_function(): + print( + f"Called get_embedding_function with engine={RAG_EMBEDDING_ENGINE}, model={RAG_EMBEDDING_MODEL}" + ) + return get_embedding_function( + str(RAG_EMBEDDING_ENGINE), + str(RAG_EMBEDDING_MODEL), + None, + str(RAG_OPENAI_API_KEY), + str(RAG_OPENAI_API_BASE_URL), + int(str(RAG_EMBEDDING_OPENAI_BATCH_SIZE)), + ) + + +# @pytest.mark.asyncio +# async def test_vector_client_creation(vector_client): +# client = await vector_client +# assert isinstance(client, VectorClient) +# assert client.backend == "redis" + + +# @pytest.mark.asyncio +# async def test_create_collection(vector_client): +# client = await vector_client +# collection = client.create_collection("test_collection") +# assert isinstance(collection, VectorCollection) +# assert collection.name == "test_collection" + + +@pytest.mark.asyncio +async def test_add_and_query(vector_client, embedding_function): + client = await vector_client # No need to await + collection = client.create_collection("test_collection") + paragraphs = [ + "The quick brown fox jumps over the lazy dog.", + "Lorem ipsum dolor sit amet, consectetur adipiscing elit.", + "To be or not to be, that is the question.", + ] + embeddings = await embedding_function(paragraphs) + # embeddings = [ + # np.array(embedding, dtype=np.float32).tobytes() for embedding in embeddings + # ] + # print(f"~~~~~~~~~~~Paras embedding: {embeddings}") + ids = [f"paragraph_{i}" for i in range(len(paragraphs))] + await collection.add( + texts=paragraphs, + embeddings=embeddings, + ids=ids, + metadatas=[{"source": f"paragraph_{i}"} for i in range(len(paragraphs))], + ) + docs = await collection.get(ids) + if docs: + texts = [doc["text"] for doc in docs] + ids = [doc["doc_id"] for doc in docs] + print(f"~~~~~~~~~~~Docs texts: {texts}\n for ids: {ids}") + query = "What does the fox do?" + query_embedding = await embedding_function(query) + # query_embedding = np.array(query_embedding, dtype=np.float32).tobytes() + # print(f"~~~~~~~~~~~Query embedding: {query_embedding}") + results = await collection.query(query_embedding=query_embedding, n_results=2) + print(f"~~~~~~~~~~~Query results: {results}") + assert len(results) > 0 + assert "document" in results[0] + assert "distance" in results[0] + assert len(results[0]["document"]) > 0 + + +if __name__ == "__main__": + pytest.main([__file__]) diff --git a/backend/apps/rag/utils.py b/backend/apps/rag/utils.py index f400279ea..ce5e530a0 100644 --- a/backend/apps/rag/utils.py +++ b/backend/apps/rag/utils.py @@ -1,6 +1,8 @@ +import asyncio import os import logging import requests +import aiohttp from typing import List, Union @@ -21,28 +23,30 @@ from typing import Optional from utils.misc import get_last_user_message, add_or_update_system_message -from config import SRC_LOG_LEVELS, CHROMA_CLIENT +from config import SRC_LOG_LEVELS, CHROMA_CLIENT, VECTOR_CLIENT log = logging.getLogger(__name__) log.setLevel(SRC_LOG_LEVELS["RAG"]) -def query_doc( +async def query_doc( collection_name: str, query: str, embedding_function, k: int, ): try: - collection = CHROMA_CLIENT.get_collection(name=collection_name) - query_embeddings = embedding_function(query) - - result = collection.query( - query_embeddings=[query_embeddings], + # log.debug(f"Firing query_doc for collection_name {collection_name}") + collection = VECTOR_CLIENT.get_collection( + name=collection_name + ) # Get the VectorCollection + query_embeddings = await embedding_function(query) + + result = await collection.query( + query_embedding=query_embeddings, n_results=k, ) - log.info(f"query_doc:result {result}") return result except Exception as e: raise e @@ -107,9 +111,9 @@ def merge_and_sort_query_results(query_results, k, reverse=False): combined_metadatas = [] for data in query_results: - combined_distances.extend(data["distances"][0]) - combined_documents.extend(data["documents"][0]) - combined_metadatas.extend(data["metadatas"][0]) + combined_distances.append(data["distance"]) + combined_documents.append(data["document"]) + combined_metadatas.append(data["metadata"]) # Create a list of tuples (distance, document, metadata) combined = list(zip(combined_distances, combined_documents, combined_metadatas)) @@ -141,7 +145,7 @@ def merge_and_sort_query_results(query_results, k, reverse=False): return result -def query_collection( +async def query_collection( collection_names: List[str], query: str, embedding_function, @@ -150,13 +154,13 @@ def query_collection( results = [] for collection_name in collection_names: try: - result = query_doc( + result = await query_doc( collection_name=collection_name, query=query, k=k, embedding_function=embedding_function, ) - results.append(result) + results.extend(result) except: pass return merge_and_sort_query_results(results, k=k) @@ -193,6 +197,71 @@ def rag_template(template: str, context: str, query: str): return template +async def generate_openai_embeddings_async( + model: str, + text: Union[str, list[str]], + key: str, + url: str = "https://api.openai.com/v1", +): + async with aiohttp.ClientSession() as session: + if isinstance(text, list): + embeddings = await generate_openai_batch_embeddings_async( + model, text, key, url, session + ) + else: + embeddings = await generate_openai_batch_embeddings_async( + model, [text], key, url, session + ) + # log.error( + # f"embeddings: {embeddings[0] if isinstance(text, str) else embeddings}" + # ) + return embeddings[0] if isinstance(text, str) else embeddings + + +async def generate_openai_batch_embeddings_async( + model: str, texts: list[str], key: str, url: str, session: aiohttp.ClientSession +) -> Optional[list[list[float]]]: + try: + if "azure.com" in url: + log.info(f"Generating async OpenAI embeddings for {texts[0][0:25]}...") + async with session.post( + f"{url}/embeddings?api-version=2023-05-15", + headers={ + "Content-Type": "application/json", + "api-key": f"{key}", + }, + json={"input": texts, "model": model}, + ) as response: + response.raise_for_status() + data = await response.json() + if "data" in data: + return [elem["embedding"] for elem in data["data"]] + else: + raise Exception("Something went wrong :/") + else: + log.info( + f"Generating async Azure OpenAI embeddings for {texts[0][0:25]}..." + ) + async with session.post( + f"{url}/embeddings", + headers={ + "Content-Type": "application/json", + "Authorization": f"Bearer {key}", + }, + json={"input": texts, "model": model}, + ) as response: + response.raise_for_status() + data = await response.json() + if "data" in data: + return [elem["embedding"] for elem in data["data"]] + else: + raise Exception("Something went wrong :/") + + except Exception as e: + print(e) + return None + + def get_embedding_function( embedding_engine, embedding_model, @@ -201,9 +270,15 @@ def get_embedding_function( openai_url, batch_size, ): + print(f"Getting embedding function for {embedding_engine} & {embedding_model}") + embedding_engine = str(embedding_engine).strip() if embedding_engine == "": + print(f"No engine for {embedding_engine} & {embedding_model}") return lambda query: embedding_function.encode(query).tolist() elif embedding_engine in ["ollama", "openai"]: + print( + f"found openai getting embedding function for {embedding_engine} & {embedding_model}" + ) if embedding_engine == "ollama": func = lambda query: generate_ollama_embeddings( GenerateEmbeddingsForm( @@ -214,29 +289,38 @@ def get_embedding_function( ) ) elif embedding_engine == "openai": - func = lambda query: generate_openai_embeddings( + print( + f"found openai again etting embedding function for {embedding_engine} & {embedding_model}" + ) + print("OpenAI embeddings are being generated.") + func = lambda query: generate_openai_embeddings_async( model=embedding_model, text=query, key=openai_key, url=openai_url, ) - def generate_multiple(query, f): + async def generate_multiple(query, f): if isinstance(query, list): if embedding_engine == "openai": - embeddings = [] + tasks = [] for i in range(0, len(query), batch_size): - embeddings.extend(f(query[i : i + batch_size])) - return embeddings + tasks.append(f(query[i : i + batch_size])) + embeddings = await asyncio.gather(*tasks) + return [item for sublist in embeddings for item in sublist] else: - return [f(q) for q in query] + tasks = [f(q) for q in query] + return await asyncio.gather(*tasks) else: - return f(query) + return await f(query) return lambda query: generate_multiple(query, func) + else: + raise Exception(f"Unknown embedding engine: {embedding_engine}") + -def get_rag_context( +async def get_rag_context( docs, messages, embedding_function, @@ -245,13 +329,17 @@ def get_rag_context( r, hybrid_search, ): - log.debug(f"docs: {docs} {messages} {embedding_function} {reranking_function}") + log.info(f"Starting get_rag_context with {len(docs)} docs") + query = get_last_user_message(messages) + log.info(f"Extracted query: {query}") extracted_collections = [] relevant_contexts = [] - for doc in docs: + log.info(f"Processing {len(docs)} documents") + for idx, doc in enumerate(docs): + log.info(f"Processing document {idx+1}/{len(docs)}") context = None collection_names = ( @@ -259,17 +347,26 @@ def get_rag_context( if doc["type"] == "collection" else [doc["collection_name"]] ) + log.info(f"Collection names for current doc: {collection_names}") collection_names = set(collection_names).difference(extracted_collections) + log.debug( + f"Filtered collection names (removing already extracted): {collection_names}" + ) + if not collection_names: - log.debug(f"skipping {doc} as it has already been extracted") + log.info(f"Skipping doc {idx+1} - collections already processed") continue try: if doc["type"] == "text": + log.info("Processing text type document") context = doc["content"] + log.debug(f"Text content: {context[:100]}...") else: + log.info("Processing collection type document") if hybrid_search: + log.info("Using hybrid search") context = query_collection_with_hybrid_search( collection_names=collection_names, query=query, @@ -279,40 +376,58 @@ def get_rag_context( r=r, ) else: - context = query_collection( + log.info("Using regular search") + context = await query_collection( collection_names=collection_names, query=query, embedding_function=embedding_function, k=k, ) except Exception as e: + log.error(f"Error processing document {idx+1}: {str(e)}") log.exception(e) context = None if context: + log.info(f"Adding context from doc {idx+1} to relevant contexts") relevant_contexts.append({**context, "source": doc}) + else: + log.warning(f"No context found for doc {idx+1}") extracted_collections.extend(collection_names) + log.debug(f"Updated extracted collections: {extracted_collections}") + log.info( + f"Processing {len(relevant_contexts)} relevant contexts to build final string" + ) context_string = "" - citations = [] - for context in relevant_contexts: + + for idx, context in enumerate(relevant_contexts): + log.info(f"Processing context {idx+1}/{len(relevant_contexts)}") + # log.debug(f"Current context: {context}") try: if "documents" in context: - context_string += "\n\n".join( - [text for text in context["documents"][0] if text is not None] - ) + # log.debug(f"Context documents: {context['documents']}") + texts = [text for text in context["documents"][0] if text is not None] + # log.info(f"Found texts: {texts}") + context_string += "\n\n".join(texts) if "metadatas" in context: - citations.append( - { - "source": context["source"], - "document": context["documents"][0], - "metadata": context["metadatas"][0], - } - ) + log.info("Adding citation from metadata") + log.debug(f"Metadata: {context['metadatas']}") + citation = { + "source": context["source"], + "document": context["documents"][0], + "metadata": context["metadatas"][0], + } + citations.append(citation) + log.debug(f"Updated context string: {context_string[:100]}...") + log.debug(f"Updated citations: {citations}") + else: + log.info("No documents in context") except Exception as e: + log.error(f"Error processing context {idx+1}: {str(e)}") log.exception(e) context_string = context_string.strip() @@ -377,6 +492,7 @@ def generate_openai_batch_embeddings( model: str, texts: list[str], key: str, url: str = "https://api.openai.com/v1" ) -> Optional[list[list[float]]]: try: + log.info(f"Generating OpenAI embeddings for {texts[0][0:25]}...") r = requests.post( f"{url}/embeddings", headers={ diff --git a/backend/apps/socket/main.py b/backend/apps/socket/main.py index 123ff31cd..698e11593 100644 --- a/backend/apps/socket/main.py +++ b/backend/apps/socket/main.py @@ -6,6 +6,17 @@ from utils.utils import decode_token sio = socketio.AsyncServer(cors_allowed_origins=[], async_mode="asgi") + +# ENABLE_WEBSOCKET_SUPPORT = False + +# sio = socketio.AsyncServer( +# cors_allowed_origins=[], +# async_mode="asgi", +# transports=(["polling", "websocket"] if ENABLE_WEBSOCKET_SUPPORT else ["polling"]), +# allow_upgrades=ENABLE_WEBSOCKET_SUPPORT, +# always_connect=True, +# ) + app = socketio.ASGIApp(sio, socketio_path="/ws/socket.io") # Dictionary to maintain the user pool diff --git a/backend/apps/webui/routers/auths.py b/backend/apps/webui/routers/auths.py index 5c4648f3b..5ef9d8fd0 100644 --- a/backend/apps/webui/routers/auths.py +++ b/backend/apps/webui/routers/auths.py @@ -224,12 +224,23 @@ async def signin_oauth(request: Request, provider: str, form_data: SigninFormOau user_has_permitted_domain = False for this_email in all_emails: + this_email = this_email.lower() domain = this_email.split("@")[1] + domain_tld = domain[-4:] user_email_domains.append(domain) - if domain in ["gsa.gov"]: - email = this_email - user_has_permitted_domain = True - break + if provider == "github": + log.error(f"github provided email is: {this_email}") + if domain in ["gsa.gov"]: + email = this_email + user_has_permitted_domain = True + break + elif provider == "cloudgov": + log.error(f"cloudgov provided email is: {this_email}") + log.error(f"email domain tld is: {domain_tld}") + if domain_tld == ".gov": + email = this_email + user_has_permitted_domain = True + break if not user_has_permitted_domain or not email: # Handle unauthorized domain error diff --git a/backend/apps/webui/routers/documents.py b/backend/apps/webui/routers/documents.py index 311455390..5638544c1 100644 --- a/backend/apps/webui/routers/documents.py +++ b/backend/apps/webui/routers/documents.py @@ -1,9 +1,11 @@ from fastapi import Depends, FastAPI, HTTPException, status from datetime import datetime, timedelta from typing import List, Union, Optional +import logging from fastapi import APIRouter from pydantic import BaseModel +from redisvl.query.filter import Tag import json from apps.webui.models.documents import ( @@ -17,6 +19,10 @@ from utils.utils import get_current_user, get_admin_user from constants import ERROR_MESSAGES +from config import CHROMA_CLIENT, VECTOR_CLIENT, VECTOR_STORE + +log = logging.getLogger(__name__) + router = APIRouter() ############################ @@ -44,7 +50,7 @@ async def get_documents(user=Depends(get_current_user)): @router.post("/create", response_model=Optional[DocumentResponse]) -async def create_new_doc(form_data: DocumentForm, user=Depends(get_admin_user)): +async def create_new_doc(form_data: DocumentForm, user=Depends(get_current_user)): doc = Documents.get_doc_by_name(form_data.name) if doc == None: doc = Documents.insert_new_doc(user.id, form_data) @@ -130,7 +136,7 @@ async def tag_doc_by_name(form_data: TagDocumentForm, user=Depends(get_current_u @router.post("/doc/update", response_model=Optional[DocumentResponse]) async def update_doc_by_name( - name: str, form_data: DocumentUpdateForm, user=Depends(get_admin_user) + name: str, form_data: DocumentUpdateForm, user=Depends(get_current_user) ): doc = Documents.update_doc_by_name(name, form_data) if doc: @@ -153,6 +159,33 @@ async def update_doc_by_name( @router.delete("/doc/delete", response_model=bool) -async def delete_doc_by_name(name: str, user=Depends(get_admin_user)): +async def delete_doc_by_name(name: str, user=Depends(get_current_user)): + doc = Documents.get_doc_by_name(name) + collection_name = doc.collection_name + + log.info(f"Deleting document {name}") result = Documents.delete_doc_by_name(name) + + collection = VECTOR_CLIENT.get_collection(collection_name) + + # Create a tag filter for your collection_name + tag_filter = Tag("collection") == collection_name + + # Convert to a query string + query_str = str(tag_filter) + + # Call the search method to find matching documents + results = await collection.collection.search(query_str) + + # Extract IDs from results + ids = [doc.id for doc in results.docs] # Assuming the documents have + + if ids: + log.info("found ids") + await collection.delete(ids) + del collection + + if VECTOR_STORE == "chroma": + log.info(f"Deleting collection {collection_name}") + VECTOR_CLIENT.delete_collection(collection_name) return result diff --git a/backend/apps/webui/routers/models.py b/backend/apps/webui/routers/models.py index acc1c6b47..b5619d3e6 100644 --- a/backend/apps/webui/routers/models.py +++ b/backend/apps/webui/routers/models.py @@ -1,3 +1,6 @@ +import logging +import sys + from fastapi import Depends, FastAPI, HTTPException, status, Request from datetime import datetime, timedelta from typing import List, Union, Optional @@ -7,9 +10,12 @@ import json from apps.webui.models.models import Models, ModelModel, ModelForm, ModelResponse -from utils.utils import get_verified_user, get_admin_user +from utils.utils import get_verified_user # , get_admin_user from constants import ERROR_MESSAGES +logging.basicConfig(stream=sys.stdout, level="INFO") +log = logging.getLogger(__name__) + router = APIRouter() ########################### @@ -29,8 +35,14 @@ async def get_models(user=Depends(get_verified_user)): @router.post("/add", response_model=Optional[ModelModel]) async def add_new_model( - request: Request, form_data: ModelForm, user=Depends(get_admin_user) + request: Request, form_data: ModelForm, user=Depends(get_verified_user) ): + hyphenated_user_name = user.name.replace(" ", "-").lower() + if hyphenated_user_name not in form_data.id and user.role == "user": + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="You must be an admin to create an unattributed model", + ) if form_data.id in request.app.state.MODELS: raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, @@ -73,23 +85,37 @@ async def get_model_by_id(id: str, user=Depends(get_verified_user)): @router.post("/update", response_model=Optional[ModelModel]) async def update_model_by_id( - request: Request, id: str, form_data: ModelForm, user=Depends(get_admin_user) + request: Request, id: str, form_data: ModelForm, user=Depends(get_verified_user) ): + hyphenated_user_name = user.name.replace(" ", "-").lower() + + log.error( + f"hyphenated_user_name: {hyphenated_user_name}\nid: {id}\nform_data: {form_data}" + ) + + if hyphenated_user_name not in id and user.role == "user": + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="You must be an admin to update this model", + ) model = Models.get_model_by_id(id) if model: model = Models.update_model_by_id(id, form_data) return model else: + log.error("Couldn't find model in database") if form_data.id in request.app.state.MODELS: model = Models.insert_new_model(form_data, user.id) if model: return model else: + log.error("Error inserting new model") raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail=ERROR_MESSAGES.DEFAULT(), ) else: + log.error("Couldn't find model in app state") raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail=ERROR_MESSAGES.DEFAULT(), @@ -102,6 +128,13 @@ async def update_model_by_id( @router.delete("/delete", response_model=bool) -async def delete_model_by_id(id: str, user=Depends(get_admin_user)): +async def delete_model_by_id(id: str, user=Depends(get_verified_user)): + hyphenated_user_name = user.name.replace(" ", "-").lower() + log.error(f"hyphenated_user_name: {hyphenated_user_name}\nid: {id}") + if hyphenated_user_name not in id and user.role == "user": + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="You must be an admin to delete this model", + ) result = Models.delete_model_by_id(id) return result diff --git a/backend/config.py b/backend/config.py index 8eff3a285..5d374cc9a 100644 --- a/backend/config.py +++ b/backend/config.py @@ -5,9 +5,11 @@ import pkgutil import chromadb from chromadb import Settings -from base64 import b64encode +from redis.asyncio import Redis + +# from base64 import b64encode from bs4 import BeautifulSoup -from typing import TypeVar, Generic, Union +from typing import TypeVar, Generic # , Union from pydantic import BaseModel from typing import Optional @@ -19,7 +21,9 @@ import requests import shutil -from secrets import token_bytes +from apps.rag.clients.vector_client import VectorClient + +# from secrets import token_bytes from constants import ERROR_MESSAGES #################################### @@ -96,7 +100,8 @@ try: PACKAGE_DATA = json.loads((BASE_DIR / "package.json").read_text()) -except: +except Exception as e: + log.error(f"Error loading package.json: {e}") try: PACKAGE_DATA = {"version": importlib.metadata.version("open-webui")} except importlib.metadata.PackageNotFoundError: @@ -129,7 +134,8 @@ def parse_section(section): with open(str(changelog_path.absolute()), "r", encoding="utf8") as file: changelog_content = file.read() -except: +except Exception as e: + log.error(f"Error loading CHANGELOG.md: {e}") changelog_content = (pkgutil.get_data("open_webui", "CHANGELOG.md") or b"").decode() @@ -188,12 +194,14 @@ def parse_section(section): os.remove(f"{DATA_DIR}/config.json") with open(f"{DATA_DIR}/config.json", "w") as f: f.write("{}") - except: + except Exception as e: + log.exception(e) pass try: CONFIG_DATA = json.loads((DATA_DIR / "config.json").read_text()) -except: +except Exception as e: + log.exception(e) CONFIG_DATA = {} @@ -311,6 +319,7 @@ def __getattr__(self, key): "cloud-gov-identity-provider" ][0]["credentials"]["client_secret"] + OAUTH2_PROVIDERS = { # Example provider configuration "github": { @@ -497,7 +506,7 @@ def create_config_file(file_path): if OLLAMA_BASE_URL == "/ollama" and not K8S_FLAG: if USE_OLLAMA_DOCKER.lower() == "true": # if you use all-in-one docker container (Open WebUI + Ollama) - # with the docker build arg USE_OLLAMA=true (--build-arg="USE_OLLAMA=true") this only works with http://localhost:11434 + # with the docker build arg USE_OLLAMA=true (--build-arg="USE_OLLAMA=true") this only works with http://localhost:11434 # noqa: E501 OLLAMA_BASE_URL = "http://localhost:11434" else: OLLAMA_BASE_URL = "http://host.docker.internal:11434" @@ -559,7 +568,8 @@ def create_config_file(file_path): OPENAI_API_KEY = OPENAI_API_KEYS.value[ OPENAI_API_BASE_URLS.value.index("https://api.openai.com/v1") ] -except: +except Exception as e: + log.error(e) pass OPENAI_API_BASE_URL = "https://api.openai.com/v1" @@ -587,11 +597,11 @@ def create_config_file(file_path): [ { "title": ["Help me study", "vocabulary for a college entrance exam"], - "content": "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.", + "content": "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.", # noqa: E501 }, { "title": ["Give me ideas", "for what to do with my kids' art"], - "content": "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.", + "content": "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.", # noqa: E501 }, { "title": ["Tell me a fun fact", "about the Roman Empire"], @@ -610,7 +620,7 @@ def create_config_file(file_path): }, { "title": ["Overcome procrastination", "give me tips"], - "content": "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?", + "content": "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?", # noqa: E501 }, ], ) @@ -718,7 +728,7 @@ class BannerModel(BaseModel): Evolution of Music Streaming Remote Work Productivity Tips Artificial Intelligence in Healthcare -🎮 Video Game Development Insights""", +🎮 Video Game Development Insights""", # noqa: E501 ), ) @@ -731,7 +741,7 @@ class BannerModel(BaseModel): """You are tasked with generating web search queries. Give me an appropriate query to answer my question for google search. Answer with only the query. Today is {{CURRENT_DATE}}. Question: -{{prompt:end:4000}}""", +{{prompt:end:4000}}""", # noqa: E501 ), ) @@ -752,7 +762,7 @@ class BannerModel(BaseModel): os.environ.get( "TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE", """Tools: {{TOOLS}} -If a function tool doesn't match the query, return an empty string. Else, pick a function tool, fill in the parameters from the function tool's schema, and return it in the format { "name": \"functionName\", "parameters": { "key": "value" } }. Only pick a function if the user asks. Only return the object. Do not return any other text.""", +If a function tool doesn't match the query, return an empty string. Else, pick a function tool, fill in the parameters from the function tool's schema, and return it in the format { "name": \"functionName\", "parameters": { "key": "value" } }. Only pick a function if the user asks. Only return the object. Do not return any other text.""", # noqa: E501 ), ) @@ -775,6 +785,25 @@ class BannerModel(BaseModel): # RAG #################################### +# Currently sentence transformers or openai +RAG_EMBEDDING_ENGINE = PersistentConfig( + "RAG_EMBEDDING_ENGINE", + "rag.embedding_engine", + os.environ.get("RAG_EMBEDDING_ENGINE", "openai"), +) + +# Redis connection settings +REDIS_HOST = os.environ.get("REDIS_HOST", "localhost") +REDIS_PORT = int(os.environ.get("REDIS_PORT", "6379")) +REDIS_PASSWORD = os.environ.get( + "REDIS_PASSWORD", "you forgot to set the redis password" +) +REDIS_DB = int(os.environ.get("REDIS_DB", "0")) +REDIS_INDEX_NAME = os.environ.get("REDIS_INDEX_NAME", "document-index") +REDIS_PREFIX = os.environ.get("REDIS_PREFIX", "doc") +REDIS_VECTOR_DIM = 1536 if RAG_EMBEDDING_ENGINE == "openai" else 384 + +VECTOR_STORE = os.environ.get("VECTOR_STORE", "redis") CHROMA_DATA_PATH = f"{DATA_DIR}/vector_db" CHROMA_TENANT = os.environ.get("CHROMA_TENANT", chromadb.DEFAULT_TENANT) CHROMA_DATABASE = os.environ.get("CHROMA_DATABASE", chromadb.DEFAULT_DATABASE) @@ -789,7 +818,7 @@ class BannerModel(BaseModel): else: CHROMA_HTTP_HEADERS = None CHROMA_HTTP_SSL = os.environ.get("CHROMA_HTTP_SSL", "false").lower() == "true" -# this uses the model defined in the Dockerfile ENV variable. If you dont use docker or docker based deployments such as k8s, the default embedding model will be used (sentence-transformers/all-MiniLM-L6-v2) +# this uses the model defined in the Dockerfile ENV variable. If you dont use docker or docker based deployments such as k8s, the default embedding model will be used (sentence-transformers/all-MiniLM-L6-v2) # noqa: E501 RAG_TOP_K = PersistentConfig( "RAG_TOP_K", "rag.top_k", int(os.environ.get("RAG_TOP_K", "5")) @@ -812,12 +841,6 @@ class BannerModel(BaseModel): os.environ.get("ENABLE_RAG_WEB_LOADER_SSL_VERIFICATION", "True").lower() == "true", ) -RAG_EMBEDDING_ENGINE = PersistentConfig( - "RAG_EMBEDDING_ENGINE", - "rag.embedding_engine", - os.environ.get("RAG_EMBEDDING_ENGINE", ""), -) - PDF_EXTRACT_IMAGES = PersistentConfig( "PDF_EXTRACT_IMAGES", "rag.pdf_extract_images", @@ -861,27 +884,7 @@ class BannerModel(BaseModel): os.environ.get("RAG_RERANKING_MODEL_TRUST_REMOTE_CODE", "").lower() == "true" ) - -if CHROMA_HTTP_HOST != "": - CHROMA_CLIENT = chromadb.HttpClient( - host=CHROMA_HTTP_HOST, - port=CHROMA_HTTP_PORT, - headers=CHROMA_HTTP_HEADERS, - ssl=CHROMA_HTTP_SSL, - tenant=CHROMA_TENANT, - database=CHROMA_DATABASE, - settings=Settings(allow_reset=True, anonymized_telemetry=False), - ) -else: - CHROMA_CLIENT = chromadb.PersistentClient( - path=CHROMA_DATA_PATH, - settings=Settings(allow_reset=True, anonymized_telemetry=False), - tenant=CHROMA_TENANT, - database=CHROMA_DATABASE, - ) - - -# device type embedding models - "cpu" (default), "cuda" (nvidia gpu required) or "mps" (apple silicon) - choosing this right can lead to better performance +# device type embedding models - "cpu" (default), "cuda" (nvidia gpu required) or "mps" (apple silicon) - choosing this right can lead to better performance # noqa: E501 USE_CUDA = os.environ.get("USE_CUDA_DOCKER", "false") if USE_CUDA.lower() == "true": @@ -921,12 +924,12 @@ class BannerModel(BaseModel): RAG_OPENAI_API_BASE_URL = PersistentConfig( "RAG_OPENAI_API_BASE_URL", "rag.openai_api_base_url", - os.getenv("RAG_OPENAI_API_BASE_URL", OPENAI_API_BASE_URL), + os.getenv("RAG_OPENAI_API_BASE_URL", ""), ) RAG_OPENAI_API_KEY = PersistentConfig( "RAG_OPENAI_API_KEY", "rag.openai_api_key", - os.getenv("RAG_OPENAI_API_KEY", OPENAI_API_KEY), + os.getenv("RAG_OPENAI_API_KEY", ""), ) ENABLE_RAG_LOCAL_WEB_FETCH = ( @@ -1167,7 +1170,99 @@ class BannerModel(BaseModel): #################################### -# Database +# Datastores #################################### +REDIS_PORT = 6379 +REDIS_URL = f"redis://localhost:{REDIS_PORT}" +REDIS_ENABLED = True +REDIS_CONFIG = dict(host="localhost", port=REDIS_PORT, password="") DATABASE_URL = os.environ.get("DATABASE_URL", f"sqlite:///{DATA_DIR}/webui.db") + +if os.environ.get("VCAP_SERVICES"): + DEBUG = False + vcap_services = json.loads(os.getenv("VCAP_SERVICES")) + vcap_app = json.loads(os.getenv("VCAP_APPLICATION")) + routes = vcap_app["application_uris"] + + if (vcap_services and "aws-rds" in vcap_services) and not os.getenv( + "DATABASE_URL", None + ): + os.environ["DATABASE_URL"] = vcap_services["aws-rds"][0]["credentials"]["uri"] + DATABASE_URL = vcap_services["aws-rds"][0]["credentials"]["uri"] + + if vcap_services and "aws-elasticache-redis" in vcap_services: + redis_credentials = vcap_services["aws-elasticache-redis"][0]["credentials"] + REDIS_CONFIG["host"] = redis_credentials["host"] + REDIS_CONFIG["port"] = int(redis_credentials["port"]) + REDIS_CONFIG["password"] = redis_credentials["password"] + REDIS_CONFIG["ssl"] = True + REDIS_CONFIG["ssl_cert_reqs"] = None + REDIS_URL = redis_credentials["uri"].replace("redis://", "rediss://") + # REDIS_CONFIG['REDIS_URL'] = REDIS_URL + REDIS_ENABLED = True + else: + REDIS_URL = None + REDIS_ENABLED = False + + +VECTOR_CLIENT = None # Global vector client container +REDIS_CLIENT = None # Global Redis client container +CHROMA_CLIENT = None # Global Chroma client container +REDIS_VL_SCHEMA = None + + +async def initialize_vector_client(): + REDIS_CLIENT = Redis( + host=REDIS_HOST, + port=REDIS_PORT, + # password=REDIS_PASSWORD, + db=REDIS_DB, + decode_responses=False, + ) + + return REDIS_CLIENT + + +if VECTOR_STORE == "chroma": + # Initialize Chroma client + if CHROMA_HTTP_HOST != "": + CHROMA_CLIENT = chromadb.HttpClient( + host=CHROMA_HTTP_HOST, + port=CHROMA_HTTP_PORT, + headers=CHROMA_HTTP_HEADERS, + ssl=CHROMA_HTTP_SSL, + tenant=CHROMA_TENANT, + database=CHROMA_DATABASE, + settings=Settings(allow_reset=True, anonymized_telemetry=False), + ) + else: + CHROMA_CLIENT = chromadb.PersistentClient( + path=CHROMA_DATA_PATH, + settings=Settings(allow_reset=True, anonymized_telemetry=False), + tenant=CHROMA_TENANT, + database=CHROMA_DATABASE, + ) + VECTOR_CLIENT = VectorClient(backend="chroma", chroma_client=CHROMA_CLIENT) + +elif VECTOR_STORE == "redis": + REDIS_VL_SCHEMA = { + "index": {"name": "global_index", "prefix": "your_prefix"}, + "fields": [ + {"name": "text", "type": "text"}, + {"name": "metadata", "type": "text"}, + {"name": "doc_id", "type": "tag"}, + {"name": "collection", "type": "tag"}, + { + "name": "vector", + "type": "vector", + "attrs": { + "dims": 1536, + "distance_metric": "cosine", + "algorithm": "flat", + "datatype": "float32", + }, + }, + ], + } + VECTOR_CLIENT = VectorClient(backend="redis") diff --git a/backend/conftest.py b/backend/conftest.py new file mode 100644 index 000000000..724574492 --- /dev/null +++ b/backend/conftest.py @@ -0,0 +1,6 @@ +import os +import sys + +# Add the backend directory to the Python path +backend_dir = os.path.dirname(os.path.abspath(__file__)) +sys.path.insert(0, backend_dir) diff --git a/backend/data/config.json b/backend/data/config.json new file mode 100644 index 000000000..c2aef18e5 --- /dev/null +++ b/backend/data/config.json @@ -0,0 +1,75 @@ +{ + "version": 0, + "ui": { + "default_locale": "en-US", + "prompt_suggestions": [ + { + "title": ["Help me study", "vocabulary for a college entrance exam"], + "content": "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option." + }, + { + "title": ["Give me ideas", "for what to do with my kids' art"], + "content": "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter." + }, + { + "title": ["Tell me a fun fact", "about the Roman Empire"], + "content": "Tell me a random fun fact about the Roman Empire" + }, + { + "title": ["Show me a code snippet", "of a website's sticky header"], + "content": "Show me a code snippet of a website's sticky header in CSS and JavaScript." + }, + { + "title": ["Explain options trading", "if I'm familiar with buying and selling stocks"], + "content": "Explain options trading in simple terms if I'm familiar with buying and selling stocks." + }, + { + "title": ["Overcome procrastination", "give me tips"], + "content": "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?" + }, + { + "title": ["Grammar check", "rewrite it for better readability "], + "content": "Check the following sentence for grammar and clarity: \"[sentence]\". Rewrite it for better readability while maintaining its original meaning." + } + ], + "default_models": "azure_openai_GPT4Omni_pipeline", + "user_permissions": { + "chat": { + "deletion": true + } + }, + "enable_signup": true, + "default_user_role": "pending", + "enable_community_sharing": true + }, + "ollama": { + "base_urls": ["http://localhost:11434"] + }, + "openai": { + "api_base_urls": ["http://localhost:9099"], + "api_keys": ["0p3n-w3bu!"] + }, + "model_filter": { + "enable": false, + "list": [""] + }, + "webhook_url": "", + "auth": { + "admin": { + "show": true + }, + "jwt_expiry": "-1" + }, + "rag": { + "embedding_engine": "openai", + "embedding_model": "text-embedding-3-small", + "embedding_openai_batch_size": 1, + "pdf_extract_images": false, + "chunk_size": 1500, + "chunk_overlap": 100, + "template": "Use the following context as your learned knowledge, inside XML tags.\n\n [context]\n\n\nWhen answer to user:\n- If you don't know, just say that you don't know.\n- If you don't know when you are not sure, ask for clarification.\nAvoid mentioning that you obtained the information from the context.\nAnd answer according to the language of the user's question.\n\nGiven the context information, answer the query.\nQuery: [query]", + "top_k": 5, + "relevance_threshold": 0.0, + "enable_hybrid_search": false + } +} diff --git a/backend/dev.sh b/backend/dev.sh index c66ae4ba9..c9baeef89 100755 --- a/backend/dev.sh +++ b/backend/dev.sh @@ -1,2 +1,2 @@ PORT="${PORT:-8080}" -uvicorn main:app --port $PORT --host 0.0.0.0 --forwarded-allow-ips '*' --reload \ No newline at end of file +uvicorn main:app --port $PORT --host 0.0.0.0 --forwarded-allow-ips '*' --reload diff --git a/backend/main.py b/backend/main.py index 5be4c7cce..f6198b734 100644 --- a/backend/main.py +++ b/backend/main.py @@ -8,12 +8,14 @@ import os import sys import logging +import traceback import aiohttp import requests import mimetypes import shutil import inspect + # import asyncio from urllib.parse import urlencode import secrets @@ -100,7 +102,11 @@ SEARCH_QUERY_GENERATION_PROMPT_TEMPLATE, SEARCH_QUERY_PROMPT_LENGTH_THRESHOLD, TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE, + VECTOR_STORE, + VECTOR_CLIENT, + REDIS_VL_SCHEMA, AppConfig, + initialize_vector_client, ) from constants import ERROR_MESSAGES @@ -139,8 +145,26 @@ async def get_response(self, path: str, scope): @asynccontextmanager async def lifespan(app: FastAPI): + # Startup code here + # Await inside the async function + redis_client = await initialize_vector_client() + + if VECTOR_STORE == "redis": + from redisvl.index import AsyncSearchIndex + + async_search_index = await AsyncSearchIndex.from_dict( + REDIS_VL_SCHEMA + ).set_client(redis_client) + await async_search_index.create(overwrite=False) + + await VECTOR_CLIENT.initialize(async_search_index=async_search_index) + yield + # Shutdown code here + if VECTOR_STORE == "redis": + await redis_client.aclose() + app = FastAPI( docs_url="/docs" if ENV == "dev" else None, redoc_url=None, lifespan=lifespan @@ -286,7 +310,9 @@ async def get_function_call_response(messages, tool_id, template, task_model_id, class ChatCompletionMiddleware(BaseHTTPMiddleware): async def dispatch(self, request: Request, call_next): - return_citations = False + + # TODO: make this a config var + return_citations = True if request.method == "POST" and ( "/ollama/api/chat" in request.url.path @@ -361,16 +387,31 @@ async def dispatch(self, request: Request, call_next): # If docs field is present, generate RAG completions if "docs" in data: data = {**data} - rag_context, citations = get_rag_context( - docs=data["docs"], - messages=data["messages"], - embedding_function=rag_app.state.EMBEDDING_FUNCTION, - k=rag_app.state.config.TOP_K, - reranking_function=rag_app.state.sentence_transformer_rf, - r=rag_app.state.config.RELEVANCE_THRESHOLD, - hybrid_search=rag_app.state.config.ENABLE_RAG_HYBRID_SEARCH, + log.error( + f"docs: {data}\n" + # + f"len messages: {len(data['messages'])}\n" + # + f"{rag_app.state.EMBEDDING_FUNCTION}\n" + # + f"{rag_app.state.config.ENABLE_RAG_HYBRID_SEARCH}" ) + try: + log.error("About to call get_rag_context...") + rag_context, citations = await get_rag_context( + docs=data["docs"], + messages=data["messages"], + embedding_function=rag_app.state.EMBEDDING_FUNCTION, + k=rag_app.state.config.TOP_K, + reranking_function=rag_app.state.sentence_transformer_rf, + r=rag_app.state.config.RELEVANCE_THRESHOLD, + hybrid_search=rag_app.state.config.ENABLE_RAG_HYBRID_SEARCH, + ) + log.info("get_rag_context completed successfully") + log.info("get_rag_context proceeding") + except Exception as e: + log.error(f"Error in get_rag_context: {str(e)}") + log.error(f"Full exception: {traceback.format_exc()}") + raise + log.info("get_rag_context proceeding...") if rag_context: context += ("\n" if context != "" else "") + rag_context @@ -405,19 +446,32 @@ async def dispatch(self, request: Request, call_next): response = await call_next(request) - if return_citations: - # Inject the citations into the response - if isinstance(response, StreamingResponse): - # If it's a streaming response, inject it as SSE event or NDJSON line - content_type = response.headers.get("Content-Type") - if "text/event-stream" in content_type: - return StreamingResponse( - self.openai_stream_wrapper(response.body_iterator, citations), - ) - if "application/x-ndjson" in content_type: - return StreamingResponse( - self.ollama_stream_wrapper(response.body_iterator, citations), - ) + if request.method == "POST" and ( + "/ollama/api/chat" in request.url.path + or "/chat/completions" in request.url.path + ): + + if return_citations: + # Inject the citations into the response + if isinstance(response, StreamingResponse): + # If it's a streaming response, inject it as SSE event or NDJSON line + try: + content_type = response.headers.get("Content-Type") + except: + content_type = response.headers.get("content-type") + + if "text/event-stream" in content_type: + return StreamingResponse( + self.openai_stream_wrapper( + response.body_iterator, citations + ), + ) + if "application/x-ndjson" in content_type: + return StreamingResponse( + self.ollama_stream_wrapper( + response.body_iterator, citations + ), + ) return response @@ -579,11 +633,6 @@ async def check_url(request: Request, call_next): start_time = int(time.time()) response = await call_next(request) - # session = request.cookies.get("session") - # if session: - # response.set_cookie( - # key="session", value=request.cookies.get("session"), httponly=True - # ) process_time = int(time.time()) - start_time response.headers["X-Process-Time"] = str(process_time) @@ -592,14 +641,39 @@ async def check_url(request: Request, call_next): @app.middleware("http") async def update_embedding_function(request: Request, call_next): + if "/ws/socket.io" in request.url.path: + try: + response = await call_next(request) + except: + return JSONResponse( + status_code=status.HTTP_400_BAD_REQUEST, + content={"detail": "Invalid WebSocket upgrade request"}, + ) response = await call_next(request) if "/embedding/update" in request.url.path: webui_app.state.EMBEDDING_FUNCTION = rag_app.state.EMBEDDING_FUNCTION return response -app.mount("/ws", socket_app) +# @app.middleware("http") +# async def inspect_websocket(request: Request, call_next): +# if ( +# "/ws/socket.io" in request.url.path +# and request.query_params.get("transport") == "websocket" +# ): +# upgrade = (request.headers.get("Upgrade") or "").lower() +# connection = (request.headers.get("Connection") or "").lower().split(",") +# # Check that there's the correct headers for an upgrade, else reject the connection +# # This is to work around this upstream issue: https://github.com/miguelgrinberg/python-engineio/issues/367 +# if upgrade != "websocket" or "upgrade" not in connection: +# return JSONResponse( +# status_code=status.HTTP_400_BAD_REQUEST, +# content={"detail": "Invalid WebSocket upgrade request"}, +# ) +# return await call_next(request) + +app.mount("/ws", socket_app) app.mount("/ollama", ollama_app) app.mount("/openai", openai_app) diff --git a/backend/open-webui-pipelines/examples/pipelines/providers/bedrock_claude_sonnet35_pipeline.py b/backend/open-webui-pipelines/examples/pipelines/providers/bedrock_claude_sonnet35_pipeline.py index 43a1e093c..0ec201e2a 100644 --- a/backend/open-webui-pipelines/examples/pipelines/providers/bedrock_claude_sonnet35_pipeline.py +++ b/backend/open-webui-pipelines/examples/pipelines/providers/bedrock_claude_sonnet35_pipeline.py @@ -205,9 +205,11 @@ def pipe( else: print(f"HTTP Error: {e} Response: {r.text}") return f"Error with r: {e} ({r.text}) for body:\n{body}\nand filtered_body:\n{filtered_body}" - except Exception as e: # This will catch other errors - print(f"Error without r: {e}") - return f"Error without r: {e}" + except Exception as e: + print( + f"Error without r: {e} for body:\n{body}\nand filtered_body:\n{filtered_body}" + ) + return f"Error without r: {e} for body:\n{body}\nand filtered_body:\n{filtered_body}" # import logging diff --git a/backend/open-webui-pipelines/pipelines/azure_openai_GPT35Turbo_pipeline.py b/backend/open-webui-pipelines/pipelines/azure_openai_GPT35Turbo_pipeline.py index 838e80f68..b9c1a242c 100644 --- a/backend/open-webui-pipelines/pipelines/azure_openai_GPT35Turbo_pipeline.py +++ b/backend/open-webui-pipelines/pipelines/azure_openai_GPT35Turbo_pipeline.py @@ -25,7 +25,7 @@ def __init__(self): """ # self.id = "azure_openai_pipeline" - self.name = "FedRamp High Azure GPT 3.5 Turbo" + self.name = "FedRamp High Azure GPT 3.5 Turbo (no vision)" self.valves = self.Valves( **{ "AZURE_OPENAI_API_KEY": os.getenv( @@ -115,6 +115,15 @@ def pipe( f"Dropped params: {', '.join(set(body.keys()) - set(filtered_body.keys()))}" ) + # GPT3.5 has no vision + for message in filtered_body["messages"]: + if message["role"] == "user": + if isinstance(message["content"], list): + for content in message["content"]: + if content["type"] == "image_url": + # remove this content from the message + message["content"].remove(content) + try: r = requests.post( url=url, diff --git a/backend/open-webui-pipelines/pipelines/bedrock_claude_instant_pipeline.py b/backend/open-webui-pipelines/pipelines/bedrock_claude_instant_pipeline.py index 7e16375c7..7080ab887 100644 --- a/backend/open-webui-pipelines/pipelines/bedrock_claude_instant_pipeline.py +++ b/backend/open-webui-pipelines/pipelines/bedrock_claude_instant_pipeline.py @@ -1,85 +1,91 @@ -import base64 +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# SPDX-License-Identifier: MIT-0 +"""Helper utilities for working with Amazon Bedrock from Python notebooks""" +# Python Built-Ins: import os import json -import re -import datetime -import hashlib -import hmac import requests -from requests.auth import AuthBase -from typing import List, Union, Generator, Iterator +from typing import List, Union, Generator, Iterator, Optional from pydantic import BaseModel +# External Dependencies: +import boto3 +from botocore.config import Config -class AWS4Auth(AuthBase): - def __init__(self, access_id, secret_key, region, service): - self.access_id = access_id - self.secret_key = secret_key - self.region = region - self.service = service +# from botocore.exceptions import ( +# EndpointConnectionError, +# NoCredentialsError, +# ParamValidationError, +# ) - def __call__(self, r): - aws_headers = self.sign(r) - r.headers.update(aws_headers) - return r +# import asyncio - def sign(self, r): - amz_date = datetime.datetime.now(datetime.timezone.utc).strftime( - "%Y%m%dT%H%M%SZ" - ) - date_stamp = datetime.datetime.now(datetime.timezone.utc).strftime("%Y%m%d") - canonical_uri = r.path_url - canonical_querystring = "" - canonical_headers = ( - f'host:{r.url.split("://")[1].split("/")[0]}\nx-amz-date:{amz_date}\n' - ) - signed_headers = "host;x-amz-date" - payload_hash = hashlib.sha256( - r.body - if isinstance(r.body, bytes) - else r.body.encode("utf-8") if r.body else b"" - ).hexdigest() - canonical_request = ( - f"{r.method}\n{canonical_uri}\n{canonical_querystring}\n" - + f"{canonical_headers}\n{signed_headers}\n{payload_hash}" - ) - algorithm = "AWS4-HMAC-SHA256" - credential_scope = f"{date_stamp}/{self.region}/{self.service}/aws4_request" - string_to_sign = ( - f"{algorithm}\n{amz_date}\n{credential_scope}\n" - + f'{hashlib.sha256(canonical_request.encode("utf-8")).hexdigest()}' - ) +def get_bedrock_client( + assumed_role: Optional[str] = None, + region: Optional[str] = None, + runtime: Optional[bool] = True, +): + """Create a boto3 client for Amazon Bedrock, with optional configuration overrides - signing_key = self.get_signature_key( - self.secret_key, date_stamp, self.region, self.service + Parameters + ---------- + assumed_role : + Optional ARN of an AWS IAM role to assume for calling the Bedrock service. If not + specified, the current active credentials will be used. + region : + Optional name of the AWS Region in which the service should be called (e.g. "us-east-1"). + If not specified, AWS_REGION or AWS_DEFAULT_REGION environment variable will be used. + runtime : + Optional choice of getting different client to perform operations with the Amazon Bedrock service. + """ + if region is None: + target_region = os.environ.get( + "AWS_REGION", os.environ.get("AWS_DEFAULT_REGION") ) - signature = hmac.new( - signing_key, string_to_sign.encode("utf-8"), hashlib.sha256 - ).hexdigest() + else: + target_region = region + + print(f"Create new client\n Using region: {target_region}") - authorization_header = ( - f"{algorithm} Credential={self.access_id}/{credential_scope}, " - + f"SignedHeaders={signed_headers}, Signature={signature}" + # Get the access key and secret key from the environment variables + aws_access_key_id = os.environ.get("AWS_ACCESS_KEY_ID") + aws_secret_access_key = os.environ.get("AWS_SECRET_ACCESS_KEY") + + os.environ.pop("AWS_PROFILE", None) + os.environ.pop("AWS_DEFAULT_PROFILE", None) + + if not aws_access_key_id or not aws_secret_access_key: + raise ValueError( + "AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY must be set in environment variables" ) - headers = { - "x-amz-date": amz_date, - "Authorization": authorization_header, - "x-amz-content-sha256": payload_hash, - } + retry_config = Config( + region_name=target_region, + retries={ + "max_attempts": 10, + "mode": "standard", + }, + ) + + if runtime: + service_name = "bedrock-runtime" + else: + service_name = "bedrock" - return headers + print(f"Creating client with region: {target_region}") - def get_signature_key(self, key, date_stamp, region_name, service_name): - k_date = self._sign(("AWS4" + key).encode("utf-8"), date_stamp) - k_region = self._sign(k_date, region_name) - k_service = self._sign(k_region, service_name) - k_signing = self._sign(k_service, "aws4_request") - return k_signing + bedrock_client = boto3.client( + service_name, + region_name=target_region, + aws_access_key_id=aws_access_key_id, + aws_secret_access_key=aws_secret_access_key, + config=retry_config, + ) - def _sign(self, key, msg): - return hmac.new(key, msg.encode("utf-8"), hashlib.sha256).digest() + print("boto3 Bedrock client successfully created!") + print(bedrock_client._endpoint) + return bedrock_client class Pipeline: @@ -89,7 +95,7 @@ class Valves(BaseModel): AWS_DEFAULT_REGION: str def __init__(self): - self.name = "FedRamp Moderate AWS Claude Instant" + self.name = "FedRamp Moderate AWS Claude Instant (no vision)" self.valves = self.Valves( **{ "AWS_ACCESS_KEY_ID": os.getenv( @@ -103,11 +109,9 @@ def __init__(self): ), } ) - self.auth = AWS4Auth( - self.valves.AWS_ACCESS_KEY_ID, - self.valves.AWS_SECRET_ACCESS_KEY, - self.valves.AWS_DEFAULT_REGION, - "bedrock", + self.bedrock_client = get_bedrock_client( + assumed_role=os.environ.get("BEDROCK_ASSUME_ROLE", None), + region=os.environ.get("AWS_DEFAULT_REGION", None), ) async def on_startup(self): @@ -121,13 +125,17 @@ async def on_shutdown(self): def pipe( self, user_message: str, model_id: str, messages: List[dict], body: dict ) -> Union[str, Generator, Iterator]: - print(f"pipe:{__name__}") + # print(f"pipe:{__name__}") # print(messages) # print(user_message) # allowed_roles = {"user", "assistant"} + model_id = ( + "anthropic.claude-instant-v1" # "anthropic.claude-3-5-sonnet-20240620-v1:0" + ) + if "messages" in body: # remove messages with system role and insert content into body new_msgs = [] @@ -139,17 +147,6 @@ def pipe( new_msgs.append(message) body["messages"] = new_msgs - headers = { - "X-Amzn-Bedrock-Accept": "application/json", - "Content-Type": "application/json", - } - - # Let's make a pipeline for each model - url = ( - f"https://bedrock-runtime.{self.valves.AWS_DEFAULT_REGION}.amazonaws.com" - + f"/model/anthropic.claude-instant-v1/invoke-with-response-stream" - ) - allowed_params = { "anthropic_version", "messages", @@ -191,54 +188,83 @@ def pipe( filtered_body["anthropic_version"] = "bedrock-2023-05-31" if "max_tokens" not in filtered_body: - filtered_body["max_tokens"] = 500 + filtered_body["max_tokens"] = 4000 + + # Claude instant has no vision + for message in filtered_body["messages"]: + if message["role"] == "user": + if isinstance(message["content"], list): + for content in message["content"]: + if content["type"] == "image_url": + # remove this content from the message + message["content"].remove(content) try: - r = requests.post( - url=url, - json=filtered_body, - headers=headers, - auth=self.auth, - stream=True, + + r = self.bedrock_client.invoke_model_with_response_stream( + body=json.dumps(filtered_body), modelId=model_id ) - r.raise_for_status() - if body.get("stream", False): - return self._parse_event_stream(r) + + for event in r["body"]: + chunk = json.loads(event["chunk"]["bytes"]) + if chunk["type"] == "content_block_delta": + yield chunk["delta"].get("text", "") + + except requests.exceptions.HTTPError as e: # This will catch HTTP errors + if r.status_code == 400: + print(f"400 Bad Request received: {r.text}") else: - return r.json() - except requests.exceptions.HTTPError as e: + print(f"HTTP Error: {e} Response: {r.text}") + return f"Error with r: {e} ({r.text}) for body:\n{body}\nand filtered_body:\n{filtered_body}" + except requests.exceptions.HTTPError as e: # This will catch HTTP errors if r.status_code == 400: print(f"400 Bad Request received: {r.text}") else: print(f"HTTP Error: {e} Response: {r.text}") - return ( - f"Error with r: {e} ({r.text}) for body:\n{body}\n" - + f"...and filtered_body:\n{filtered_body}" + return f"Error with r: {e} ({r.text}) for body:\n{body}\nand filtered_body:\n{filtered_body}" + except Exception as e: + print( + f"Error without r: {e} for body:\n{body}\nand filtered_body:\n{filtered_body}" ) - except Exception as e: # This will catch other errors - print(f"Error without r: {e} for auth: {self.auth}") - return f"Error without r: {e} for auth: {self.auth}" - - def _parse_event_stream(self, response): - for line in response.iter_lines(): - if line: - try: - decoded_line = line.decode("utf-8", errors="ignore") - - # Regular expression to find the value for the "bytes" key - pattern = r'"bytes":"(.*?)"' - - # Search for the pattern in the input string - match = re.search(pattern, decoded_line) - - if match: - bytes_value = match.group(1) - decoded_bytes = base64.b64decode(bytes_value) - decoded_str = decoded_bytes.decode("utf-8") - decoded_dict = json.loads(decoded_str) - if decoded_dict and "delta" in decoded_dict: - if "text" in decoded_dict["delta"]: - yield decoded_dict["delta"]["text"] - - except Exception as e: - yield f"Error parsing line: {e}" + return f"Error without r: {e} for body:\n{body}\nand filtered_body:\n{filtered_body}" + + +# import logging + +# logger = logging.getLogger(__name__) +# logging.basicConfig(level=logging.INFO) + + +# async def main(): +# pipeline = Pipeline() + +# await pipeline.on_startup() + +# model_id = "anthropic.claude-3-5-sonnet-20240620-v1:0" +# prompt = "Describe the purpose of a 'hello world' program in one line." +# messages = [ +# { +# "role": "user", +# "content": [{"type": "text", "text": prompt}], +# } +# ] + +# body = { +# "anthropic_version": "bedrock-2023-05-31", +# "max_tokens": 512, +# "temperature": 0.5, +# "messages": messages, +# } + +# r = pipeline.pipe( +# user_message=prompt, model_id=model_id, messages=messages, body=body +# ) + +# for event in r: +# print(event) + +# await pipeline.on_shutdown() + + +# # Run the example +# asyncio.run(main()) diff --git a/backend/open-webui-pipelines/pipelines/bedrock_claude_sonnet35_pipeline.py b/backend/open-webui-pipelines/pipelines/bedrock_claude_sonnet35_pipeline.py index 43a1e093c..2b45fdcd3 100644 --- a/backend/open-webui-pipelines/pipelines/bedrock_claude_sonnet35_pipeline.py +++ b/backend/open-webui-pipelines/pipelines/bedrock_claude_sonnet35_pipeline.py @@ -188,6 +188,24 @@ def pipe( if "max_tokens" not in filtered_body: filtered_body["max_tokens"] = 4000 + # Claude likes a different format for images than OpenAI + for message in filtered_body["messages"]: + if message["role"] == "user": + if isinstance(message["content"], list): + for content in message["content"]: + if content["type"] == "image_url": + content["type"] = "image" + image_type = ( + content["image_url"]["url"].split(";")[0].split("/")[1] + ) + data = content["image_url"]["url"].split(",")[1] + content["source"] = { + "type": "base64", # base64 + "media_type": f"image/{image_type}", # i.e. image/jpeg + "data": data, + } + del content["image_url"] + try: r = self.bedrock_client.invoke_model_with_response_stream( @@ -205,9 +223,17 @@ def pipe( else: print(f"HTTP Error: {e} Response: {r.text}") return f"Error with r: {e} ({r.text}) for body:\n{body}\nand filtered_body:\n{filtered_body}" - except Exception as e: # This will catch other errors - print(f"Error without r: {e}") - return f"Error without r: {e}" + except requests.exceptions.HTTPError as e: # This will catch HTTP errors + if r.status_code == 400: + print(f"400 Bad Request received: {r.text}") + else: + print(f"HTTP Error: {e} Response: {r.text}") + return f"Error with r: {e} ({r.text}) for body:\n{body}\nand filtered_body:\n{filtered_body}" + except Exception as e: + print( + f"Error without r: {e} for body:\n{body}\nand filtered_body:\n{filtered_body}" + ) + return f"Error without r: {e} for body:\n{body}\nand filtered_body:\n{filtered_body}" # import logging diff --git a/backend/requirements.txt b/backend/requirements.txt index be0e32c7d..6b5074e46 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -28,6 +28,10 @@ langchain==0.2.0 langchain-community==0.2.0 langchain-chroma==0.1.1 +redis==5.2.0 +redisvl==0.3.5 +pgvector==0.2.5 + fake-useragent==1.5.1 chromadb==0.5.0 sentence-transformers==2.7.0 @@ -53,6 +57,8 @@ faster-whisper==1.0.2 PyJWT[crypto]==2.8.0 +pytest-asyncio==0.24.0 + black==24.4.2 langfuse==2.33.0 youtube-transcript-api==0.6.2 diff --git a/build/_app/immutable/assets/0.bc7acc3d.css b/build/_app/immutable/assets/0.bc7acc3d.css deleted file mode 100644 index f1613862e..000000000 --- a/build/_app/immutable/assets/0.bc7acc3d.css +++ /dev/null @@ -1 +0,0 @@ -*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e3e3e3}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#b4b4b4}input::placeholder,textarea::placeholder{opacity:1;color:#b4b4b4}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}html,pre{font-family:-apple-system,Arimo,ui-sans-serif,system-ui,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,Helvetica Neue,Arial,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}pre{white-space:pre-wrap}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%),0 3px 0 rgb(var(--tw-prose-kbd-shadows) / 10%);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body: #374151;--tw-prose-headings: #111827;--tw-prose-lead: #4b5563;--tw-prose-links: #111827;--tw-prose-bold: #111827;--tw-prose-counters: #6b7280;--tw-prose-bullets: #d1d5db;--tw-prose-hr: #e5e7eb;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #e5e7eb;--tw-prose-captions: #6b7280;--tw-prose-kbd: #111827;--tw-prose-kbd-shadows: 17 24 39;--tw-prose-code: #111827;--tw-prose-pre-code: #e5e7eb;--tw-prose-pre-bg: #1f2937;--tw-prose-th-borders: #d1d5db;--tw-prose-td-borders: #e5e7eb;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-kbd: #fff;--tw-prose-invert-kbd-shadows: 255 255 255;--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-x-0{left:0;right:0}.-left-2{left:-.5rem}.-right-1{right:-.25rem}.-top-1{top:-.25rem}.-top-12{top:-3rem}.bottom-0{bottom:0}.end-2{inset-inline-end:.5rem}.left-0{left:0}.left-1{left:.25rem}.left-4{left:1rem}.right-0{right:0}.right-2\.5{right:.625rem}.right-\[10px\]{right:10px}.top-0{top:0}.top-1{top:.25rem}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.top-2\.5{top:.625rem}.top-4{top:1rem}.top-\[10px\]{top:10px}.top-\[4\.25rem\]{top:4.25rem}.top-\[50dvh\]{top:50dvh}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[9999\]{z-index:9999}.z-\[999\]{z-index:999}.col-span-1{grid-column:span 1 / span 1}.col-span-2{grid-column:span 2 / span 2}.m-0\.5{margin:.125rem}.m-1{margin:.25rem}.m-10{margin:2.5rem}.m-auto{margin:auto}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-1\.5{margin-left:.375rem;margin-right:.375rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-2\.5{margin-left:.625rem;margin-right:.625rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0\.5{margin-top:.125rem;margin-bottom:.125rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-1\.5{margin-top:.375rem;margin-bottom:.375rem}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.my-16{margin-top:4rem;margin-bottom:4rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-2\.5{margin-top:.625rem;margin-bottom:.625rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-auto{margin-top:auto;margin-bottom:auto}.-mb-0\.5{margin-bottom:-.125rem}.-mb-1{margin-bottom:-.25rem}.-ml-2{margin-left:-.5rem}.-mt-1{margin-top:-.25rem}.-mt-\[3px\]{margin-top:-3px}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-10{margin-bottom:2.5rem}.mb-2{margin-bottom:.5rem}.mb-2\.5{margin-bottom:.625rem}.mb-20{margin-bottom:5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-1\.5{margin-left:.375rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-\[25px\]{margin-left:25px}.ml-auto{margin-left:auto}.mr-0\.5{margin-right:.125rem}.mr-1{margin-right:.25rem}.mr-10{margin-right:2.5rem}.mr-14{margin-right:3.5rem}.mr-2{margin-right:.5rem}.mr-2\.5{margin-right:.625rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mr-5{margin-right:1.25rem}.mr-\[25px\]{margin-right:25px}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-2\.5{margin-top:.625rem}.mt-3{margin-top:.75rem}.mt-3\.5{margin-top:.875rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.line-clamp-3{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.size-12{width:3rem;height:3rem}.size-14{width:3.5rem;height:3.5rem}.size-16{width:4rem;height:4rem}.size-2{width:.5rem;height:.5rem}.size-3{width:.75rem;height:.75rem}.size-3\.5{width:.875rem;height:.875rem}.size-4{width:1rem;height:1rem}.size-44{width:11rem;height:11rem}.size-48{width:12rem;height:12rem}.size-5{width:1.25rem;height:1.25rem}.size-52{width:13rem;height:13rem}.size-6{width:1.5rem;height:1.5rem}.size-8{width:2rem;height:2rem}.size-\[1\.1rem\]{width:1.1rem;height:1.1rem}.size-\[11\.5rem\]{width:11.5rem;height:11.5rem}.size-\[2\.7rem\]{width:2.7rem;height:2.7rem}.size-\[4\.5rem\]{width:4.5rem;height:4.5rem}.h-0{height:0px}.h-1{height:.25rem}.h-10{height:2.5rem}.h-16{height:4rem}.h-2{height:.5rem}.h-20{height:5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-36{height:9rem}.h-4{height:1rem}.h-40{height:10rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-\[2\.5rem\]{height:2.5rem}.h-\[20px\]{height:20px}.h-\[28rem\]{height:28rem}.h-\[48px\]{height:48px}.h-\[72px\]{height:72px}.h-auto{height:auto}.h-fit{height:-moz-fit-content;height:fit-content}.h-full{height:100%}.h-screen{height:100vh}.max-h-28{max-height:7rem}.max-h-60{max-height:15rem}.max-h-64{max-height:16rem}.max-h-80{max-height:20rem}.max-h-96{max-height:24rem}.max-h-\[100dvh\]{max-height:100dvh}.max-h-\[10rem\]{max-height:10rem}.max-h-\[22rem\]{max-height:22rem}.max-h-\[25rem\]{max-height:25rem}.max-h-\[27rem\]{max-height:27rem}.max-h-full{max-height:100%}.max-h-screen{max-height:100vh}.min-h-20{min-height:5rem}.min-h-5{min-height:1.25rem}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-10{width:2.5rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-2\/3{width:66.666667%}.w-20{width:5rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-\[0px\]{width:0px}.w-\[15rem\]{width:15rem}.w-\[16rem\]{width:16rem}.w-\[1px\]{width:1px}.w-\[260px\]{width:260px}.w-\[2px\]{width:2px}.w-\[30rem\]{width:30rem}.w-\[32rem\]{width:32rem}.w-\[42rem\]{width:42rem}.w-\[48rem\]{width:48rem}.w-\[5\.5rem\]{width:5.5rem}.w-\[56rem\]{width:56rem}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.min-w-80{min-width:20rem}.min-w-\[6rem\]{min-width:6rem}.min-w-\[7rem\]{min-width:7rem}.min-w-fit{min-width:-moz-fit-content;min-width:fit-content}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-\[130px\]{max-width:130px}.max-w-\[160px\]{max-width:160px}.max-w-\[180px\]{max-width:180px}.max-w-\[200px\]{max-width:200px}.max-w-\[240px\]{max-width:240px}.max-w-\[28px\]{max-width:28px}.max-w-\[300px\]{max-width:300px}.max-w-\[30px\]{max-width:30px}.max-w-\[55px\]{max-width:55px}.max-w-\[90\%\]{max-width:90%}.max-w-\[calc\(100vw-1rem\)\]{max-width:calc(100vw - 1rem)}.max-w-fit{max-width:-moz-fit-content;max-width:fit-content}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.flex-1{flex:1 1 0%}.flex-auto{flex:1 1 auto}.flex-none{flex:none}.shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.table-auto{table-layout:auto}.-translate-x-1{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-1\.5{--tw-translate-x: -.375rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-\[260px\]{--tw-translate-x: -260px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-\[45\%\]{--tw-translate-y: -45%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[255px\]{--tw-translate-x: 255px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[3px\]{--tw-translate-x: 3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0\.5{--tw-translate-y: .125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-0\.15rem\]{--tw-translate-y: -.15rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[0\.15rem\]{--tw-translate-y: .15rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[0\.3px\]{--tw-translate-y: .3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[0\.5px\]{--tw-translate-y: .5px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-0{--tw-rotate: 0deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-45{--tw-rotate: 45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes ping{75%,to{transform:scale(2);opacity:0}}.animate-ping{animation:ping 1s cubic-bezier(0,0,.2,1) infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.resize{resize:both}.snap-x{scroll-snap-type:x var(--tw-scroll-snap-strictness)}.snap-mandatory{--tw-scroll-snap-strictness: mandatory}.snap-center{scroll-snap-align:center}.list-disc{list-style-type:disc}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.-space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(-1rem * var(--tw-space-x-reverse));margin-left:calc(-1rem * calc(1 - var(--tw-space-x-reverse)))}.-space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(-.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(-.125rem * var(--tw-space-y-reverse))}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-1\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.375rem * var(--tw-space-x-reverse));margin-left:calc(.375rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.75rem * var(--tw-space-x-reverse));margin-left:calc(.75rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-3\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.875rem * var(--tw-space-x-reverse));margin-left:calc(.875rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-5>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1.25rem * var(--tw-space-x-reverse));margin-left:calc(1.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.625rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.self-start{align-self:flex-start}.self-end{align-self:flex-end}.self-center{align-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-y-scroll{overflow-y:scroll}.overscroll-contain{overscroll-behavior:contain}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.text-wrap{text-wrap:wrap}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-\[9px\]{border-radius:9px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-l-lg{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-l-xl{border-top-left-radius:.75rem;border-bottom-left-radius:.75rem}.rounded-r-2xl{border-top-right-radius:1rem;border-bottom-right-radius:1rem}.rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.rounded-r-xl{border-top-right-radius:.75rem;border-bottom-right-radius:.75rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.rounded-br-xl{border-bottom-right-radius:.75rem}.rounded-tr-lg{border-top-right-radius:.5rem}.border{border-width:1px}.border-2{border-width:2px}.border-\[1\.5px\]{border-width:1.5px}.border-\[1px\]{border-width:1px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-r{border-right-width:1px}.border-r-0{border-right-width:0px}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-black\/10{border-color:#0000001a}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(236 236 236 / var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(227 227 227 / var(--tw-border-opacity))}.border-gray-300\/30{border-color:#cdcdcd4d}.border-gray-50{--tw-border-opacity: 1;border-color:rgb(249 249 249 / var(--tw-border-opacity))}.border-gray-700{--tw-border-opacity: 1;border-color:rgb(78 78 78 / var(--tw-border-opacity))}.border-gray-850{--tw-border-opacity: 1;border-color:rgb(38 38 38 / var(--tw-border-opacity))}.border-gray-900{border-color:var(--color-gray-900, #171717)}.border-red-800{--tw-border-opacity: 1;border-color:rgb(153 27 27 / var(--tw-border-opacity))}.border-white{--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity))}.bg-\[\#0f0f0f\]{--tw-bg-opacity: 1;background-color:rgb(15 15 15 / var(--tw-bg-opacity))}.bg-\[\#202123\]{--tw-bg-opacity: 1;background-color:rgb(32 33 35 / var(--tw-bg-opacity))}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.bg-black\/10{background-color:#0000001a}.bg-black\/60{background-color:#0009}.bg-blue-500\/20{background-color:#3b82f633}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}.bg-emerald-600{--tw-bg-opacity: 1;background-color:rgb(5 150 105 / var(--tw-bg-opacity))}.bg-emerald-700{--tw-bg-opacity: 1;background-color:rgb(4 120 87 / var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(236 236 236 / var(--tw-bg-opacity))}.bg-gray-100\/50{background-color:#ececec80}.bg-gray-100\/70{background-color:#ecececb3}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(227 227 227 / var(--tw-bg-opacity))}.bg-gray-200\/30{background-color:#e3e3e34d}.bg-gray-300{--tw-bg-opacity: 1;background-color:rgb(205 205 205 / var(--tw-bg-opacity))}.bg-gray-300\/20{background-color:#cdcdcd33}.bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(180 180 180 / var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 249 249 / var(--tw-bg-opacity))}.bg-gray-50\/90{background-color:#f9f9f9e6}.bg-gray-500{--tw-bg-opacity: 1;background-color:rgb(155 155 155 / var(--tw-bg-opacity))}.bg-gray-500\/20{background-color:#9b9b9b33}.bg-gray-600{--tw-bg-opacity: 1;background-color:rgb(103 103 103 / var(--tw-bg-opacity))}.bg-gray-700{--tw-bg-opacity: 1;background-color:rgb(78 78 78 / var(--tw-bg-opacity))}.bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(51 51 51 / var(--tw-bg-opacity))}.bg-gray-800\/40{background-color:#3336}.bg-gray-850{--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity))}.bg-gray-900{background-color:var(--color-gray-900, #171717)}.bg-green-200\/30{background-color:#bbf7d04d}.bg-green-400{--tw-bg-opacity: 1;background-color:rgb(74 222 128 / var(--tw-bg-opacity))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity))}.bg-green-500\/20{background-color:#22c55e33}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity))}.bg-indigo-300\/10{background-color:#a5b4fc1a}.bg-indigo-400\/20{background-color:#818cf833}.bg-indigo-500{--tw-bg-opacity: 1;background-color:rgb(99 102 241 / var(--tw-bg-opacity))}.bg-red-400{--tw-bg-opacity: 1;background-color:rgb(248 113 113 / var(--tw-bg-opacity))}.bg-red-500\/20{background-color:#ef444433}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity))}.bg-red-800\/30{background-color:#991b1b4d}.bg-sky-200\/30{background-color:#bae6fd4d}.bg-sky-600{--tw-bg-opacity: 1;background-color:rgb(2 132 199 / var(--tw-bg-opacity))}.bg-stone-700{--tw-bg-opacity: 1;background-color:rgb(68 64 60 / var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-transparent\/10{background-color:#0000001a}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-white\/10{background-color:#ffffff1a}.bg-white\/20{background-color:#fff3}.bg-yellow-500\/20{background-color:#eab30833}.bg-yellow-600{--tw-bg-opacity: 1;background-color:rgb(202 138 4 / var(--tw-bg-opacity))}.bg-gradient-to-l{background-image:linear-gradient(to left,var(--tw-gradient-stops))}.bg-gradient-to-t{background-image:linear-gradient(to top,var(--tw-gradient-stops))}.bg-none{background-image:none}.from-gray-100{--tw-gradient-from: #ececec var(--tw-gradient-from-position);--tw-gradient-to: rgb(236 236 236 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-gray-200{--tw-gradient-from: #e3e3e3 var(--tw-gradient-from-position);--tw-gradient-to: rgb(227 227 227 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-white{--tw-gradient-from: #fff var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-50\%{--tw-gradient-from-position: 50%}.from-80\%{--tw-gradient-from-position: 80%}.to-transparent{--tw-gradient-to: transparent var(--tw-gradient-to-position)}.bg-fixed{background-attachment:fixed}.fill-yellow-300{fill:#fde047}.object-cover{-o-object-fit:cover;object-fit:cover}.object-scale-down{-o-object-fit:scale-down;object-fit:scale-down}.object-center{-o-object-position:center;object-position:center}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.px-\[1\.75rem\]{padding-left:1.75rem;padding-right:1.75rem}.px-\[3px\]{padding-left:3px;padding-right:3px}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-\[0\.5px\]{padding-top:.5px;padding-bottom:.5px}.pb-0\.5{padding-bottom:.125rem}.pb-1{padding-bottom:.25rem}.pb-10{padding-bottom:2.5rem}.pb-12{padding-bottom:3rem}.pb-16{padding-bottom:4rem}.pb-2{padding-bottom:.5rem}.pb-2\.5{padding-bottom:.625rem}.pb-20{padding-bottom:5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-44{padding-bottom:11rem}.pb-5{padding-bottom:1.25rem}.pl-1{padding-left:.25rem}.pl-2{padding-left:.5rem}.pl-2\.5{padding-left:.625rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-5{padding-left:1.25rem}.pr-0\.5{padding-right:.125rem}.pr-1{padding-right:.25rem}.pr-1\.5{padding-right:.375rem}.pr-12{padding-right:3rem}.pr-2{padding-right:.5rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pr-5{padding-right:1.25rem}.pr-8{padding-right:2rem}.pt-0\.5{padding-top:.125rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-64{padding-top:16rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-6xl{font-size:3.75rem;line-height:1}.text-\[0\.7rem\]{font-size:.7rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.leading-none{line-height:1}.tracking-widest{letter-spacing:.1em}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity))}.text-gray-100{--tw-text-opacity: 1;color:rgb(236 236 236 / var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity: 1;color:rgb(227 227 227 / var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity: 1;color:rgb(205 205 205 / var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity: 1;color:rgb(180 180 180 / var(--tw-text-opacity))}.text-gray-50{--tw-text-opacity: 1;color:rgb(249 249 249 / var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity: 1;color:rgb(155 155 155 / var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity: 1;color:rgb(103 103 103 / var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity: 1;color:rgb(78 78 78 / var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity: 1;color:rgb(51 51 51 / var(--tw-text-opacity))}.text-gray-850{--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity))}.text-gray-900{color:var(--color-gray-900, #171717)}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity))}.text-indigo-400{--tw-text-opacity: 1;color:rgb(129 140 248 / var(--tw-text-opacity))}.text-indigo-600{--tw-text-opacity: 1;color:rgb(79 70 229 / var(--tw-text-opacity))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity))}.text-sky-600{--tw-text-opacity: 1;color:rgb(2 132 199 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-yellow-700{--tw-text-opacity: 1;color:rgb(161 98 7 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.no-underline{text-decoration-line:none}.placeholder-gray-400::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(180 180 180 / var(--tw-placeholder-opacity))}.placeholder-gray-400::placeholder{--tw-placeholder-opacity: 1;color:rgb(180 180 180 / var(--tw-placeholder-opacity))}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.outline-1{outline-width:1px}.outline-\[1\.5px\]{outline-width:1.5px}.-outline-offset-1{outline-offset:-1px}.outline-black{outline-color:#000}.outline-gray-100{outline-color:#ececec}.outline-gray-200{outline-color:#e3e3e3}.outline-gray-300{outline-color:#cdcdcd}.outline-red-300{outline-color:#fca5a5}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.brightness-90{--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert: invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-lg{--tw-backdrop-blur: blur(16px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-md{--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur: blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-300{transition-duration:.3s}.duration-75{transition-duration:75ms}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.dark\:prose-invert:is(.dark *){--tw-prose-body: var(--tw-prose-invert-body);--tw-prose-headings: var(--tw-prose-invert-headings);--tw-prose-lead: var(--tw-prose-invert-lead);--tw-prose-links: var(--tw-prose-invert-links);--tw-prose-bold: var(--tw-prose-invert-bold);--tw-prose-counters: var(--tw-prose-invert-counters);--tw-prose-bullets: var(--tw-prose-invert-bullets);--tw-prose-hr: var(--tw-prose-invert-hr);--tw-prose-quotes: var(--tw-prose-invert-quotes);--tw-prose-quote-borders: var(--tw-prose-invert-quote-borders);--tw-prose-captions: var(--tw-prose-invert-captions);--tw-prose-kbd: var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows: var(--tw-prose-invert-kbd-shadows);--tw-prose-code: var(--tw-prose-invert-code);--tw-prose-pre-code: var(--tw-prose-invert-pre-code);--tw-prose-pre-bg: var(--tw-prose-invert-pre-bg);--tw-prose-th-borders: var(--tw-prose-invert-th-borders);--tw-prose-td-borders: var(--tw-prose-invert-td-borders)}.hover\:bg-black\/5:hover{background-color:#0000000d}.hover\:bg-emerald-500:hover{--tw-bg-opacity: 1;background-color:rgb(16 185 129 / var(--tw-bg-opacity))}.hover\:bg-emerald-700:hover{--tw-bg-opacity: 1;background-color:rgb(4 120 87 / var(--tw-bg-opacity))}.hover\:bg-emerald-800:hover{--tw-bg-opacity: 1;background-color:rgb(6 95 70 / var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(236 236 236 / var(--tw-bg-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity: 1;background-color:rgb(227 227 227 / var(--tw-bg-opacity))}.hover\:bg-gray-300:hover{--tw-bg-opacity: 1;background-color:rgb(205 205 205 / var(--tw-bg-opacity))}.hover\:bg-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(249 249 249 / var(--tw-bg-opacity))}.hover\:bg-gray-800:hover{--tw-bg-opacity: 1;background-color:rgb(51 51 51 / var(--tw-bg-opacity))}.hover\:bg-gray-850:hover{--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity))}.hover\:bg-gray-900:hover{background-color:var(--color-gray-900, #171717)}.hover\:text-black:hover{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity: 1;color:rgb(78 78 78 / var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.hover\:opacity-50:hover{opacity:.5}.hover\:outline-gray-500:hover{outline-color:#9b9b9b}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:text-gray-300:disabled{--tw-text-opacity: 1;color:rgb(205 205 205 / var(--tw-text-opacity))}.disabled\:text-gray-400:disabled{--tw-text-opacity: 1;color:rgb(180 180 180 / var(--tw-text-opacity))}.disabled\:text-gray-500:disabled{--tw-text-opacity: 1;color:rgb(155 155 155 / var(--tw-text-opacity))}.disabled\:text-gray-600:disabled{--tw-text-opacity: 1;color:rgb(103 103 103 / var(--tw-text-opacity))}.disabled\:opacity-50:disabled{opacity:.5}.hover\:disabled\:bg-transparent:disabled:hover{background-color:transparent}.disabled\:hover\:text-gray-600:hover:disabled{--tw-text-opacity: 1;color:rgb(103 103 103 / var(--tw-text-opacity))}.group:hover .group-hover\:visible{visibility:visible}.group:hover .group-hover\:rotate-\[-15deg\]{--tw-rotate: -15deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:rotate-\[15deg\]{--tw-rotate: 15deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(236 236 236 / var(--tw-bg-opacity))}.group\/item:hover .group-hover\/item\:text-gray-600{--tw-text-opacity: 1;color:rgb(103 103 103 / var(--tw-text-opacity))}.group:hover .group-hover\:text-gray-500{--tw-text-opacity: 1;color:rgb(155 155 155 / var(--tw-text-opacity))}.group:hover .group-hover\:text-gray-600{--tw-text-opacity: 1;color:rgb(103 103 103 / var(--tw-text-opacity))}.group:hover .group-hover\:text-gray-800{--tw-text-opacity: 1;color:rgb(51 51 51 / var(--tw-text-opacity))}.group:hover .group-hover\:opacity-100{opacity:1}.data-\[state\=checked\]\:translate-x-3\.5[data-state=checked]{--tw-translate-x: .875rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[selected\]\:bg-black[data-selected]{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.data-\[selected\]\:text-gray-100[data-selected]{--tw-text-opacity: 1;color:rgb(236 236 236 / var(--tw-text-opacity))}.data-\[selected\]\:hover\:bg-black:hover[data-selected]{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.prose-headings\:my-0 :is(:where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *))){margin-top:0;margin-bottom:0}.prose-headings\:-mb-4 :is(:where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *))){margin-bottom:-1rem}.prose-p\:m-0 :is(:where(p):not(:where([class~=not-prose],[class~=not-prose] *))){margin:0}.prose-p\:my-0 :is(:where(p):not(:where([class~=not-prose],[class~=not-prose] *))){margin-top:0;margin-bottom:0}.prose-p\:-mb-4 :is(:where(p):not(:where([class~=not-prose],[class~=not-prose] *))){margin-bottom:-1rem}.prose-p\:-mb-6 :is(:where(p):not(:where([class~=not-prose],[class~=not-prose] *))){margin-bottom:-1.5rem}.prose-blockquote\:my-0 :is(:where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *))){margin-top:0;margin-bottom:0}.prose-pre\:my-0 :is(:where(pre):not(:where([class~=not-prose],[class~=not-prose] *))){margin-top:0;margin-bottom:0}.prose-ol\:-my-4 :is(:where(ol):not(:where([class~=not-prose],[class~=not-prose] *))){margin-top:-1rem;margin-bottom:-1rem}.prose-ol\:-mb-6 :is(:where(ol):not(:where([class~=not-prose],[class~=not-prose] *))){margin-bottom:-1.5rem}.prose-ol\:-mb-8 :is(:where(ol):not(:where([class~=not-prose],[class~=not-prose] *))){margin-bottom:-2rem}.prose-ol\:p-0 :is(:where(ol):not(:where([class~=not-prose],[class~=not-prose] *))){padding:0}.prose-ul\:-my-4 :is(:where(ul):not(:where([class~=not-prose],[class~=not-prose] *))){margin-top:-1rem;margin-bottom:-1rem}.prose-ul\:-mb-6 :is(:where(ul):not(:where([class~=not-prose],[class~=not-prose] *))){margin-bottom:-1.5rem}.prose-li\:-my-3 :is(:where(li):not(:where([class~=not-prose],[class~=not-prose] *))){margin-top:-.75rem;margin-bottom:-.75rem}.prose-li\:-mb-4 :is(:where(li):not(:where([class~=not-prose],[class~=not-prose] *))){margin-bottom:-1rem}.prose-table\:my-0 :is(:where(table):not(:where([class~=not-prose],[class~=not-prose] *))){margin-top:0;margin-bottom:0}.prose-img\:my-0 :is(:where(img):not(:where([class~=not-prose],[class~=not-prose] *))){margin-top:0;margin-bottom:0}.dark\:border:is(.dark *){border-width:1px}.dark\:border-0:is(.dark *){border-width:0px}.dark\:border-none:is(.dark *){border-style:none}.dark\:border-gray-600:is(.dark *){--tw-border-opacity: 1;border-color:rgb(103 103 103 / var(--tw-border-opacity))}.dark\:border-gray-700\/50:is(.dark *){border-color:#4e4e4e80}.dark\:border-gray-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(51 51 51 / var(--tw-border-opacity))}.dark\:border-gray-850:is(.dark *){--tw-border-opacity: 1;border-color:rgb(38 38 38 / var(--tw-border-opacity))}.dark\:border-gray-850\/50:is(.dark *){border-color:#26262680}.dark\:border-white\/10:is(.dark *){border-color:#ffffff1a}.dark\:bg-black:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.dark\:bg-black\/90:is(.dark *){background-color:#000000e6}.dark\:bg-gray-100:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(236 236 236 / var(--tw-bg-opacity))}.dark\:bg-gray-300:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(205 205 205 / var(--tw-bg-opacity))}.dark\:bg-gray-400:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(180 180 180 / var(--tw-bg-opacity))}.dark\:bg-gray-600:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(103 103 103 / var(--tw-bg-opacity))}.dark\:bg-gray-700:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(78 78 78 / var(--tw-bg-opacity))}.dark\:bg-gray-700\/50:is(.dark *){background-color:#4e4e4e80}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(51 51 51 / var(--tw-bg-opacity))}.dark\:bg-gray-850:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity))}.dark\:bg-gray-850\/50:is(.dark *){background-color:#26262680}.dark\:bg-gray-900:is(.dark *){background-color:var(--color-gray-900, #171717)}.dark\:bg-gray-950:is(.dark *){background-color:var(--color-gray-950, #0d0d0d)}.dark\:bg-green-300:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(134 239 172 / var(--tw-bg-opacity))}.dark\:bg-indigo-400:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(129 140 248 / var(--tw-bg-opacity))}.dark\:bg-indigo-500:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(99 102 241 / var(--tw-bg-opacity))}.dark\:bg-indigo-500\/10:is(.dark *){background-color:#6366f11a}.dark\:bg-sky-300:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(125 211 252 / var(--tw-bg-opacity))}.dark\:bg-stone-700:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(68 64 60 / var(--tw-bg-opacity))}.dark\:bg-transparent:is(.dark *){background-color:transparent}.dark\:bg-white:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.dark\:bg-white\/20:is(.dark *){background-color:#fff3}.dark\:from-gray-900:is(.dark *){--tw-gradient-from: var(--color-gray-900, #171717) var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-gray-950:is(.dark *){--tw-gradient-from: var(--color-gray-950, #0d0d0d) var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:text-black:is(.dark *){--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.dark\:text-blue-200:is(.dark *){--tw-text-opacity: 1;color:rgb(191 219 254 / var(--tw-text-opacity))}.dark\:text-blue-950:is(.dark *){--tw-text-opacity: 1;color:rgb(23 37 84 / var(--tw-text-opacity))}.dark\:text-gray-100:is(.dark *){--tw-text-opacity: 1;color:rgb(236 236 236 / var(--tw-text-opacity))}.dark\:text-gray-200:is(.dark *){--tw-text-opacity: 1;color:rgb(227 227 227 / var(--tw-text-opacity))}.dark\:text-gray-300:is(.dark *){--tw-text-opacity: 1;color:rgb(205 205 205 / var(--tw-text-opacity))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(180 180 180 / var(--tw-text-opacity))}.dark\:text-gray-500:is(.dark *){--tw-text-opacity: 1;color:rgb(155 155 155 / var(--tw-text-opacity))}.dark\:text-gray-600:is(.dark *){--tw-text-opacity: 1;color:rgb(103 103 103 / var(--tw-text-opacity))}.dark\:text-gray-700:is(.dark *){--tw-text-opacity: 1;color:rgb(78 78 78 / var(--tw-text-opacity))}.dark\:text-gray-800:is(.dark *){--tw-text-opacity: 1;color:rgb(51 51 51 / var(--tw-text-opacity))}.dark\:text-gray-900:is(.dark *){color:var(--color-gray-900, #171717)}.dark\:text-green-200:is(.dark *){--tw-text-opacity: 1;color:rgb(187 247 208 / var(--tw-text-opacity))}.dark\:text-indigo-300:is(.dark *){--tw-text-opacity: 1;color:rgb(165 180 252 / var(--tw-text-opacity))}.dark\:text-red-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 202 202 / var(--tw-text-opacity))}.dark\:text-sky-200:is(.dark *){--tw-text-opacity: 1;color:rgb(186 230 253 / var(--tw-text-opacity))}.dark\:text-white:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.dark\:text-yellow-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 240 138 / var(--tw-text-opacity))}.dark\:outline-gray-600:is(.dark *){outline-color:#676767}.dark\:outline-gray-800:is(.dark *){outline-color:#333}.dark\:outline-red-800:is(.dark *){outline-color:#991b1b}.dark\:brightness-50:is(.dark *){--tw-brightness: brightness(.5);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.dark\:hover\:bg-gray-100:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(236 236 236 / var(--tw-bg-opacity))}.dark\:hover\:bg-gray-700:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(78 78 78 / var(--tw-bg-opacity))}.dark\:hover\:bg-gray-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(51 51 51 / var(--tw-bg-opacity))}.dark\:hover\:bg-gray-850:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity))}.dark\:hover\:bg-gray-900:hover:is(.dark *){background-color:var(--color-gray-900, #171717)}.dark\:hover\:bg-white:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.dark\:hover\:bg-white\/5:hover:is(.dark *){background-color:#ffffff0d}.dark\:hover\:text-gray-300:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(205 205 205 / var(--tw-text-opacity))}.dark\:hover\:text-white:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.dark\:disabled\:text-gray-500:disabled:is(.dark *){--tw-text-opacity: 1;color:rgb(155 155 155 / var(--tw-text-opacity))}.dark\:disabled\:text-gray-700:disabled:is(.dark *){--tw-text-opacity: 1;color:rgb(78 78 78 / var(--tw-text-opacity))}.dark\:hover\:disabled\:bg-transparent:disabled:hover:is(.dark *){background-color:transparent}.group:hover .dark\:group-hover\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(51 51 51 / var(--tw-bg-opacity))}.group:hover .dark\:group-hover\:bg-gray-950:is(.dark *){background-color:var(--color-gray-950, #0d0d0d)}.group\/item:hover .dark\:group-hover\/item\:text-white:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.group:hover .dark\:group-hover\:text-gray-100:is(.dark *){--tw-text-opacity: 1;color:rgb(236 236 236 / var(--tw-text-opacity))}.group:hover .dark\:group-hover\:text-gray-200:is(.dark *){--tw-text-opacity: 1;color:rgb(227 227 227 / var(--tw-text-opacity))}.group:hover .dark\:group-hover\:text-gray-500:is(.dark *){--tw-text-opacity: 1;color:rgb(155 155 155 / var(--tw-text-opacity))}.group:hover .dark\:group-hover\:text-white:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.dark\:data-\[selected\]\:bg-white[data-selected]:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.dark\:data-\[selected\]\:text-gray-900[data-selected]:is(.dark *){color:var(--color-gray-900, #171717)}.dark\:data-\[selected\]\:hover\:bg-white:hover[data-selected]:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}@media (min-width: 640px){.sm\:max-w-md{max-width:28rem}.sm\:flex-row{flex-direction:row}.sm\:justify-center{justify-content:center}.sm\:space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1.5rem * var(--tw-space-x-reverse));margin-left:calc(1.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}}@media (min-width: 768px){.md\:fixed{position:fixed}.md\:relative{position:relative}.md\:left-\[260px\]{left:260px}.md\:top-8{top:2rem}.md\:mb-0{margin-bottom:0}.md\:flex{display:flex}.md\:hidden{display:none}.md\:min-h-\[28rem\]{min-height:28rem}.md\:min-h-\[380px\]{min-height:380px}.md\:w-40{width:10rem}.md\:w-60{width:15rem}.md\:w-\[calc\(100\%-260px\)\]{width:calc(100% - 260px)}.md\:max-w-\[calc\(100\%-260px\)\]{max-width:calc(100% - 260px)}.md\:flex-none{flex:none}.md\:translate-x-\[260px\]{--tw-translate-x: 260px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.md\:snap-none{scroll-snap-type:none}.md\:flex-row{flex-direction:row}.md\:flex-col{flex-direction:column}.md\:items-start{align-items:flex-start}.md\:items-center{align-items:center}.md\:space-x-0>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(0px * var(--tw-space-x-reverse));margin-left:calc(0px * calc(1 - var(--tw-space-x-reverse)))}.md\:space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.md\:space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.md\:self-center{align-self:center}.md\:p-6{padding:1.5rem}.md\:px-0{padding-left:0;padding-right:0}.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}.md\:px-\[1rem\]{padding-left:1rem;padding-right:1rem}.md\:py-6{padding-top:1.5rem;padding-bottom:1.5rem}}@media (min-width: 1024px){.lg\:mt-0{margin-top:0}.lg\:flex{display:flex}.lg\:w-44{width:11rem}.lg\:flex-none{flex:none}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:flex-col{flex-direction:column}.lg\:space-x-0>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(0px * var(--tw-space-x-reverse));margin-left:calc(0px * calc(1 - var(--tw-space-x-reverse)))}.lg\:space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.lg\:space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.lg\:px-24{padding-left:6rem;padding-right:6rem}}@font-face{font-family:Arimo;src:url(../../../assets/fonts/Arimo-Variable.ttf);font-display:swap}@font-face{font-family:Mona Sans;src:url(../../../assets/fonts/Mona-Sans.woff2);font-display:swap}html{word-break:break-word}code{overflow-x:auto;width:auto}math{margin-top:1rem}.hljs{border-radius:.5rem}.markdown a{text-decoration-line:underline}ol>li{counter-increment:list-number;display:block;margin-bottom:0;margin-top:0;min-height:28px}.prose ol>li:before{content:counters(list-number,".") ".";padding-right:.5rem;color:var(--tw-prose-counters);font-weight:400}li p{display:inline}::-webkit-scrollbar-thumb{--tw-border-opacity: 1;background-color:#d9d9e3cc;border-color:rgba(255,255,255,var(--tw-border-opacity));border-radius:9999px;border-width:1px}::-webkit-scrollbar{height:.4rem;width:.4rem}::-webkit-scrollbar-track{background-color:transparent;border-radius:9999px}select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236B7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact;-moz-appearance:none;-webkit-appearance:none}.katex-mathml{display:none}.scrollbar-hidden:active::-webkit-scrollbar-thumb,.scrollbar-hidden:focus::-webkit-scrollbar-thumb,.scrollbar-hidden:hover::-webkit-scrollbar-thumb{visibility:visible}.scrollbar-hidden::-webkit-scrollbar-thumb{visibility:hidden}.scrollbar-hidden::-webkit-scrollbar-corner{display:none}.scrollbar-none::-webkit-scrollbar{display:none}.scrollbar-none::-webkit-scrollbar-corner{display:none}.scrollbar-none{-ms-overflow-style:none;scrollbar-width:none}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}.cm-editor{height:100%;width:100%}.cm-scroller:active::-webkit-scrollbar-thumb,.cm-scroller:focus::-webkit-scrollbar-thumb,.cm-scroller:hover::-webkit-scrollbar-thumb{visibility:visible}.cm-scroller::-webkit-scrollbar-thumb{visibility:hidden}.cm-scroller::-webkit-scrollbar-corner{display:none}.cm-editor.cm-focused{outline:none}.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1} diff --git a/build/_app/immutable/assets/10.c242e6f1.css b/build/_app/immutable/assets/10.c242e6f1.css deleted file mode 100644 index 69fb1548e..000000000 --- a/build/_app/immutable/assets/10.c242e6f1.css +++ /dev/null @@ -1 +0,0 @@ -input.svelte-1vx7r9s::-webkit-outer-spin-button,input.svelte-1vx7r9s::-webkit-inner-spin-button{-webkit-appearance:none;margin:0} diff --git a/build/_app/immutable/assets/14.b0806465.css b/build/_app/immutable/assets/14.b0806465.css deleted file mode 100644 index 0f53198d7..000000000 --- a/build/_app/immutable/assets/14.b0806465.css +++ /dev/null @@ -1 +0,0 @@ -.scrollbar-hidden.svelte-8lkua9::-webkit-scrollbar{display:none}.scrollbar-hidden.svelte-8lkua9{-ms-overflow-style:none;scrollbar-width:none} diff --git a/build/_app/immutable/assets/2.ffa3d7c7.css b/build/_app/immutable/assets/2.ffa3d7c7.css deleted file mode 100644 index 038549b08..000000000 --- a/build/_app/immutable/assets/2.ffa3d7c7.css +++ /dev/null @@ -1 +0,0 @@ -.tabs.svelte-1vx7r9s::-webkit-scrollbar{display:none}.tabs.svelte-1vx7r9s{-ms-overflow-style:none;scrollbar-width:none}.scrollbar-hidden.svelte-141e0sl:active::-webkit-scrollbar-thumb,.scrollbar-hidden.svelte-141e0sl:focus::-webkit-scrollbar-thumb,.scrollbar-hidden.svelte-141e0sl:hover::-webkit-scrollbar-thumb{visibility:visible}.scrollbar-hidden.svelte-141e0sl::-webkit-scrollbar-thumb{visibility:hidden}.confetti-holder.svelte-15ksp55.svelte-15ksp55{position:relative}@keyframes svelte-15ksp55-rotate{0%{transform:skew(var(--skew)) rotate3d(var(--full-rotation))}to{transform:skew(var(--skew)) rotate3d(var(--rotation-xyz),calc(var(--rotation-deg) + 360deg))}}@keyframes svelte-15ksp55-translate{0%{opacity:1}8%{transform:translateY(calc(var(--translate-y) * .95)) translate(calc(var(--translate-x) * (var(--x-spread) * .9)));opacity:1}12%{transform:translateY(var(--translate-y)) translate(calc(var(--translate-x) * (var(--x-spread) * .95)));opacity:1}16%{transform:translateY(var(--translate-y)) translate(calc(var(--translate-x) * var(--x-spread)));opacity:1}to{transform:translateY(calc(var(--translate-y) + var(--fall-distance))) translate(var(--translate-x));opacity:0}}@keyframes svelte-15ksp55-no-gravity-translate{0%{opacity:1}to{transform:translateY(var(--translate-y)) translate(var(--translate-x));opacity:0}}.confetti.svelte-15ksp55.svelte-15ksp55{--translate-y:calc(-200px * var(--translate-y-multiplier));--translate-x:calc(200px * var(--translate-x-multiplier));position:absolute;height:calc(var(--size) * var(--scale));width:calc(var(--size) * var(--scale));animation:svelte-15ksp55-translate var(--transition-duration) var(--transition-delay) var(--transition-iteration-count) linear;opacity:0;pointer-events:none}.confetti.svelte-15ksp55.svelte-15ksp55:before{--full-rotation:var(--rotation-xyz), var(--rotation-deg);content:"";display:block;width:100%;height:100%;background:var(--color);background-size:contain;transform:skew(var(--skew)) rotate3d(var(--full-rotation));animation:svelte-15ksp55-rotate var(--transition-duration) var(--transition-delay) var(--transition-iteration-count) linear}.rounded.svelte-15ksp55 .confetti.svelte-15ksp55:before{border-radius:50%}.cone.svelte-15ksp55 .confetti.svelte-15ksp55{--translate-x:calc(200px * var(--translate-y-multiplier) * var(--translate-x-multiplier))}.no-gravity.svelte-15ksp55 .confetti.svelte-15ksp55{animation-name:svelte-15ksp55-no-gravity-translate;animation-timing-function:ease-out}@media (prefers-reduced-motion){.reduced-motion.svelte-15ksp55 .confetti.svelte-15ksp55,.reduced-motion.svelte-15ksp55 .confetti.svelte-15ksp55:before{animation:none}}@keyframes svelte-19023qi-l{to{clip-path:inset(0 -1ch 0 0)}} diff --git a/build/_app/immutable/assets/21.4dfbfe89.css b/build/_app/immutable/assets/21.4dfbfe89.css deleted file mode 100644 index fdda2c95d..000000000 --- a/build/_app/immutable/assets/21.4dfbfe89.css +++ /dev/null @@ -1 +0,0 @@ -.font-mona.svelte-zxai24{font-family:Mona Sans,-apple-system,Arimo,ui-sans-serif,system-ui,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,Helvetica Neue,Arial,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"} diff --git a/build/_app/immutable/assets/6.0c55a7ab.css b/build/_app/immutable/assets/6.0c55a7ab.css deleted file mode 100644 index 2dfdb89c0..000000000 --- a/build/_app/immutable/assets/6.0c55a7ab.css +++ /dev/null @@ -1 +0,0 @@ -input.svelte-1vx7r9s::-webkit-outer-spin-button,input.svelte-1vx7r9s::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.font-mona.svelte-3g4avz{font-family:Mona Sans}.scrollbar-hidden.svelte-3g4avz::-webkit-scrollbar{display:none}.scrollbar-hidden.svelte-3g4avz{-ms-overflow-style:none;scrollbar-width:none} diff --git a/build/_app/immutable/assets/Chat.2c02f5b5.css b/build/_app/immutable/assets/Chat.2c02f5b5.css deleted file mode 100644 index 7c4300626..000000000 --- a/build/_app/immutable/assets/Chat.2c02f5b5.css +++ /dev/null @@ -1 +0,0 @@ -.scrollbar-hidden.svelte-141e0sl:active::-webkit-scrollbar-thumb,.scrollbar-hidden.svelte-141e0sl:focus::-webkit-scrollbar-thumb,.scrollbar-hidden.svelte-141e0sl:hover::-webkit-scrollbar-thumb{visibility:visible}.scrollbar-hidden.svelte-141e0sl::-webkit-scrollbar-thumb{visibility:hidden} diff --git a/build/_app/immutable/assets/ConfirmDialog.c8c0830f.css b/build/_app/immutable/assets/ConfirmDialog.c8c0830f.css deleted file mode 100644 index bc0434916..000000000 --- a/build/_app/immutable/assets/ConfirmDialog.c8c0830f.css +++ /dev/null @@ -1 +0,0 @@ -@keyframes svelte-fq1rhy-scaleUp{0%{transform:scale(.985);opacity:0}to{transform:scale(1);opacity:1}} diff --git a/build/_app/immutable/assets/KaTeX_AMS-Regular.0cdd387c.woff2 b/build/_app/immutable/assets/KaTeX_AMS-Regular.0cdd387c.woff2 deleted file mode 100644 index 0acaaff03..000000000 Binary files a/build/_app/immutable/assets/KaTeX_AMS-Regular.0cdd387c.woff2 and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_AMS-Regular.30da91e8.woff b/build/_app/immutable/assets/KaTeX_AMS-Regular.30da91e8.woff deleted file mode 100644 index b804d7b33..000000000 Binary files a/build/_app/immutable/assets/KaTeX_AMS-Regular.30da91e8.woff and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_AMS-Regular.68534840.ttf b/build/_app/immutable/assets/KaTeX_AMS-Regular.68534840.ttf deleted file mode 100644 index c6f9a5e7c..000000000 Binary files a/build/_app/immutable/assets/KaTeX_AMS-Regular.68534840.ttf and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Caligraphic-Bold.07d8e303.ttf b/build/_app/immutable/assets/KaTeX_Caligraphic-Bold.07d8e303.ttf deleted file mode 100644 index 9ff4a5e04..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Caligraphic-Bold.07d8e303.ttf and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Caligraphic-Bold.1ae6bd74.woff b/build/_app/immutable/assets/KaTeX_Caligraphic-Bold.1ae6bd74.woff deleted file mode 100644 index 9759710d1..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Caligraphic-Bold.1ae6bd74.woff and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Caligraphic-Bold.de7701e4.woff2 b/build/_app/immutable/assets/KaTeX_Caligraphic-Bold.de7701e4.woff2 deleted file mode 100644 index f390922ec..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Caligraphic-Bold.de7701e4.woff2 and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Caligraphic-Regular.3398dd02.woff b/build/_app/immutable/assets/KaTeX_Caligraphic-Regular.3398dd02.woff deleted file mode 100644 index 9bdd534fd..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Caligraphic-Regular.3398dd02.woff and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Caligraphic-Regular.5d53e70a.woff2 b/build/_app/immutable/assets/KaTeX_Caligraphic-Regular.5d53e70a.woff2 deleted file mode 100644 index 75344a1f9..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Caligraphic-Regular.5d53e70a.woff2 and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Caligraphic-Regular.ed0b7437.ttf b/build/_app/immutable/assets/KaTeX_Caligraphic-Regular.ed0b7437.ttf deleted file mode 100644 index f522294ff..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Caligraphic-Regular.ed0b7437.ttf and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Fraktur-Bold.74444efd.woff2 b/build/_app/immutable/assets/KaTeX_Fraktur-Bold.74444efd.woff2 deleted file mode 100644 index 395f28bea..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Fraktur-Bold.74444efd.woff2 and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Fraktur-Bold.9163df9c.ttf b/build/_app/immutable/assets/KaTeX_Fraktur-Bold.9163df9c.ttf deleted file mode 100644 index 4e98259c3..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Fraktur-Bold.9163df9c.ttf and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Fraktur-Bold.9be7ceb8.woff b/build/_app/immutable/assets/KaTeX_Fraktur-Bold.9be7ceb8.woff deleted file mode 100644 index e7730f662..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Fraktur-Bold.9be7ceb8.woff and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Fraktur-Regular.1e6f9579.ttf b/build/_app/immutable/assets/KaTeX_Fraktur-Regular.1e6f9579.ttf deleted file mode 100644 index b8461b275..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Fraktur-Regular.1e6f9579.ttf and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Fraktur-Regular.51814d27.woff2 b/build/_app/immutable/assets/KaTeX_Fraktur-Regular.51814d27.woff2 deleted file mode 100644 index 735f6948d..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Fraktur-Regular.51814d27.woff2 and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Fraktur-Regular.5e28753b.woff b/build/_app/immutable/assets/KaTeX_Fraktur-Regular.5e28753b.woff deleted file mode 100644 index acab069f9..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Fraktur-Regular.5e28753b.woff and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Main-Bold.0f60d1b8.woff2 b/build/_app/immutable/assets/KaTeX_Main-Bold.0f60d1b8.woff2 deleted file mode 100644 index ab2ad21da..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Main-Bold.0f60d1b8.woff2 and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Main-Bold.138ac28d.ttf b/build/_app/immutable/assets/KaTeX_Main-Bold.138ac28d.ttf deleted file mode 100644 index 4060e627d..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Main-Bold.138ac28d.ttf and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Main-Bold.c76c5d69.woff b/build/_app/immutable/assets/KaTeX_Main-Bold.c76c5d69.woff deleted file mode 100644 index f38136ac1..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Main-Bold.c76c5d69.woff and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Main-BoldItalic.70ee1f64.ttf b/build/_app/immutable/assets/KaTeX_Main-BoldItalic.70ee1f64.ttf deleted file mode 100644 index dc007977e..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Main-BoldItalic.70ee1f64.ttf and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Main-BoldItalic.99cd42a3.woff2 b/build/_app/immutable/assets/KaTeX_Main-BoldItalic.99cd42a3.woff2 deleted file mode 100644 index 5931794de..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Main-BoldItalic.99cd42a3.woff2 and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Main-BoldItalic.a6f7ec0d.woff b/build/_app/immutable/assets/KaTeX_Main-BoldItalic.a6f7ec0d.woff deleted file mode 100644 index 67807b0bd..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Main-BoldItalic.a6f7ec0d.woff and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Main-Italic.0d85ae7c.ttf b/build/_app/immutable/assets/KaTeX_Main-Italic.0d85ae7c.ttf deleted file mode 100644 index 0e9b0f354..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Main-Italic.0d85ae7c.ttf and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Main-Italic.97479ca6.woff2 b/build/_app/immutable/assets/KaTeX_Main-Italic.97479ca6.woff2 deleted file mode 100644 index b50920e13..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Main-Italic.97479ca6.woff2 and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Main-Italic.f1d6ef86.woff b/build/_app/immutable/assets/KaTeX_Main-Italic.f1d6ef86.woff deleted file mode 100644 index 6f43b594b..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Main-Italic.f1d6ef86.woff and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Main-Regular.c2342cd8.woff2 b/build/_app/immutable/assets/KaTeX_Main-Regular.c2342cd8.woff2 deleted file mode 100644 index eb24a7ba2..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Main-Regular.c2342cd8.woff2 and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Main-Regular.c6368d87.woff b/build/_app/immutable/assets/KaTeX_Main-Regular.c6368d87.woff deleted file mode 100644 index 21f581296..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Main-Regular.c6368d87.woff and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Main-Regular.d0332f52.ttf b/build/_app/immutable/assets/KaTeX_Main-Regular.d0332f52.ttf deleted file mode 100644 index dd45e1ed2..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Main-Regular.d0332f52.ttf and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Math-BoldItalic.850c0af5.woff b/build/_app/immutable/assets/KaTeX_Math-BoldItalic.850c0af5.woff deleted file mode 100644 index 0ae390d74..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Math-BoldItalic.850c0af5.woff and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Math-BoldItalic.dc47344d.woff2 b/build/_app/immutable/assets/KaTeX_Math-BoldItalic.dc47344d.woff2 deleted file mode 100644 index 29657023a..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Math-BoldItalic.dc47344d.woff2 and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Math-BoldItalic.f9377ab0.ttf b/build/_app/immutable/assets/KaTeX_Math-BoldItalic.f9377ab0.ttf deleted file mode 100644 index 728ce7a1e..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Math-BoldItalic.f9377ab0.ttf and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Math-Italic.08ce98e5.ttf b/build/_app/immutable/assets/KaTeX_Math-Italic.08ce98e5.ttf deleted file mode 100644 index 70d559b4e..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Math-Italic.08ce98e5.ttf and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Math-Italic.7af58c5e.woff2 b/build/_app/immutable/assets/KaTeX_Math-Italic.7af58c5e.woff2 deleted file mode 100644 index 215c143fd..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Math-Italic.7af58c5e.woff2 and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Math-Italic.8a8d2445.woff b/build/_app/immutable/assets/KaTeX_Math-Italic.8a8d2445.woff deleted file mode 100644 index eb5159d4c..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Math-Italic.8a8d2445.woff and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_SansSerif-Bold.1ece03f7.ttf b/build/_app/immutable/assets/KaTeX_SansSerif-Bold.1ece03f7.ttf deleted file mode 100644 index 2f65a8a3a..000000000 Binary files a/build/_app/immutable/assets/KaTeX_SansSerif-Bold.1ece03f7.ttf and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_SansSerif-Bold.e99ae511.woff2 b/build/_app/immutable/assets/KaTeX_SansSerif-Bold.e99ae511.woff2 deleted file mode 100644 index cfaa3bda5..000000000 Binary files a/build/_app/immutable/assets/KaTeX_SansSerif-Bold.e99ae511.woff2 and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_SansSerif-Bold.ece03cfd.woff b/build/_app/immutable/assets/KaTeX_SansSerif-Bold.ece03cfd.woff deleted file mode 100644 index 8d47c02d9..000000000 Binary files a/build/_app/immutable/assets/KaTeX_SansSerif-Bold.ece03cfd.woff and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_SansSerif-Italic.00b26ac8.woff2 b/build/_app/immutable/assets/KaTeX_SansSerif-Italic.00b26ac8.woff2 deleted file mode 100644 index 349c06dc6..000000000 Binary files a/build/_app/immutable/assets/KaTeX_SansSerif-Italic.00b26ac8.woff2 and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_SansSerif-Italic.3931dd81.ttf b/build/_app/immutable/assets/KaTeX_SansSerif-Italic.3931dd81.ttf deleted file mode 100644 index d5850df98..000000000 Binary files a/build/_app/immutable/assets/KaTeX_SansSerif-Italic.3931dd81.ttf and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_SansSerif-Italic.91ee6750.woff b/build/_app/immutable/assets/KaTeX_SansSerif-Italic.91ee6750.woff deleted file mode 100644 index 7e02df963..000000000 Binary files a/build/_app/immutable/assets/KaTeX_SansSerif-Italic.91ee6750.woff and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_SansSerif-Regular.11e4dc8a.woff b/build/_app/immutable/assets/KaTeX_SansSerif-Regular.11e4dc8a.woff deleted file mode 100644 index 31b84829b..000000000 Binary files a/build/_app/immutable/assets/KaTeX_SansSerif-Regular.11e4dc8a.woff and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_SansSerif-Regular.68e8c73e.woff2 b/build/_app/immutable/assets/KaTeX_SansSerif-Regular.68e8c73e.woff2 deleted file mode 100644 index a90eea85f..000000000 Binary files a/build/_app/immutable/assets/KaTeX_SansSerif-Regular.68e8c73e.woff2 and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_SansSerif-Regular.f36ea897.ttf b/build/_app/immutable/assets/KaTeX_SansSerif-Regular.f36ea897.ttf deleted file mode 100644 index 537279f6b..000000000 Binary files a/build/_app/immutable/assets/KaTeX_SansSerif-Regular.f36ea897.ttf and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Script-Regular.036d4e95.woff2 b/build/_app/immutable/assets/KaTeX_Script-Regular.036d4e95.woff2 deleted file mode 100644 index b3048fc11..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Script-Regular.036d4e95.woff2 and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Script-Regular.1c67f068.ttf b/build/_app/immutable/assets/KaTeX_Script-Regular.1c67f068.ttf deleted file mode 100644 index fd679bf37..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Script-Regular.1c67f068.ttf and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Script-Regular.d96cdf2b.woff b/build/_app/immutable/assets/KaTeX_Script-Regular.d96cdf2b.woff deleted file mode 100644 index 0e7da821e..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Script-Regular.d96cdf2b.woff and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Size1-Regular.6b47c401.woff2 b/build/_app/immutable/assets/KaTeX_Size1-Regular.6b47c401.woff2 deleted file mode 100644 index c5a8462fb..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Size1-Regular.6b47c401.woff2 and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Size1-Regular.95b6d2f1.ttf b/build/_app/immutable/assets/KaTeX_Size1-Regular.95b6d2f1.ttf deleted file mode 100644 index 871fd7d19..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Size1-Regular.95b6d2f1.ttf and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Size1-Regular.c943cc98.woff b/build/_app/immutable/assets/KaTeX_Size1-Regular.c943cc98.woff deleted file mode 100644 index 7f292d911..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Size1-Regular.c943cc98.woff and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Size2-Regular.2014c523.woff b/build/_app/immutable/assets/KaTeX_Size2-Regular.2014c523.woff deleted file mode 100644 index d241d9be2..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Size2-Regular.2014c523.woff and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Size2-Regular.a6b2099f.ttf b/build/_app/immutable/assets/KaTeX_Size2-Regular.a6b2099f.ttf deleted file mode 100644 index 7a212caf9..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Size2-Regular.a6b2099f.ttf and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Size2-Regular.d04c5421.woff2 b/build/_app/immutable/assets/KaTeX_Size2-Regular.d04c5421.woff2 deleted file mode 100644 index e1bccfe24..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Size2-Regular.d04c5421.woff2 and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Size3-Regular.500e04d5.ttf b/build/_app/immutable/assets/KaTeX_Size3-Regular.500e04d5.ttf deleted file mode 100644 index 00bff3495..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Size3-Regular.500e04d5.ttf and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Size3-Regular.6ab6b62e.woff b/build/_app/immutable/assets/KaTeX_Size3-Regular.6ab6b62e.woff deleted file mode 100644 index e6e9b658d..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Size3-Regular.6ab6b62e.woff and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Size4-Regular.99f9c675.woff b/build/_app/immutable/assets/KaTeX_Size4-Regular.99f9c675.woff deleted file mode 100644 index e1ec54576..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Size4-Regular.99f9c675.woff and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Size4-Regular.a4af7d41.woff2 b/build/_app/immutable/assets/KaTeX_Size4-Regular.a4af7d41.woff2 deleted file mode 100644 index 680c13085..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Size4-Regular.a4af7d41.woff2 and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Size4-Regular.c647367d.ttf b/build/_app/immutable/assets/KaTeX_Size4-Regular.c647367d.ttf deleted file mode 100644 index 74f08921f..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Size4-Regular.c647367d.ttf and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Typewriter-Regular.71d517d6.woff2 b/build/_app/immutable/assets/KaTeX_Typewriter-Regular.71d517d6.woff2 deleted file mode 100644 index 771f1af70..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Typewriter-Regular.71d517d6.woff2 and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Typewriter-Regular.e14fed02.woff b/build/_app/immutable/assets/KaTeX_Typewriter-Regular.e14fed02.woff deleted file mode 100644 index 2432419f2..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Typewriter-Regular.e14fed02.woff and /dev/null differ diff --git a/build/_app/immutable/assets/KaTeX_Typewriter-Regular.f01f3e87.ttf b/build/_app/immutable/assets/KaTeX_Typewriter-Regular.f01f3e87.ttf deleted file mode 100644 index c83252c57..000000000 Binary files a/build/_app/immutable/assets/KaTeX_Typewriter-Regular.f01f3e87.ttf and /dev/null differ diff --git a/build/_app/immutable/assets/Messages.4e7a627f.css b/build/_app/immutable/assets/Messages.4e7a627f.css deleted file mode 100644 index 5b5a00130..000000000 --- a/build/_app/immutable/assets/Messages.4e7a627f.css +++ /dev/null @@ -1,10 +0,0 @@ -.tabs.svelte-1w57jp9::-webkit-scrollbar{display:none}.tabs.svelte-1w57jp9{-ms-overflow-style:none;scrollbar-width:none}@font-face{font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(./KaTeX_AMS-Regular.0cdd387c.woff2) format("woff2"),url(./KaTeX_AMS-Regular.30da91e8.woff) format("woff"),url(./KaTeX_AMS-Regular.68534840.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(./KaTeX_Caligraphic-Bold.de7701e4.woff2) format("woff2"),url(./KaTeX_Caligraphic-Bold.1ae6bd74.woff) format("woff"),url(./KaTeX_Caligraphic-Bold.07d8e303.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(./KaTeX_Caligraphic-Regular.5d53e70a.woff2) format("woff2"),url(./KaTeX_Caligraphic-Regular.3398dd02.woff) format("woff"),url(./KaTeX_Caligraphic-Regular.ed0b7437.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(./KaTeX_Fraktur-Bold.74444efd.woff2) format("woff2"),url(./KaTeX_Fraktur-Bold.9be7ceb8.woff) format("woff"),url(./KaTeX_Fraktur-Bold.9163df9c.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(./KaTeX_Fraktur-Regular.51814d27.woff2) format("woff2"),url(./KaTeX_Fraktur-Regular.5e28753b.woff) format("woff"),url(./KaTeX_Fraktur-Regular.1e6f9579.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(./KaTeX_Main-Bold.0f60d1b8.woff2) format("woff2"),url(./KaTeX_Main-Bold.c76c5d69.woff) format("woff"),url(./KaTeX_Main-Bold.138ac28d.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(./KaTeX_Main-BoldItalic.99cd42a3.woff2) format("woff2"),url(./KaTeX_Main-BoldItalic.a6f7ec0d.woff) format("woff"),url(./KaTeX_Main-BoldItalic.70ee1f64.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(./KaTeX_Main-Italic.97479ca6.woff2) format("woff2"),url(./KaTeX_Main-Italic.f1d6ef86.woff) format("woff"),url(./KaTeX_Main-Italic.0d85ae7c.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(./KaTeX_Main-Regular.c2342cd8.woff2) format("woff2"),url(./KaTeX_Main-Regular.c6368d87.woff) format("woff"),url(./KaTeX_Main-Regular.d0332f52.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(./KaTeX_Math-BoldItalic.dc47344d.woff2) format("woff2"),url(./KaTeX_Math-BoldItalic.850c0af5.woff) format("woff"),url(./KaTeX_Math-BoldItalic.f9377ab0.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(./KaTeX_Math-Italic.7af58c5e.woff2) format("woff2"),url(./KaTeX_Math-Italic.8a8d2445.woff) format("woff"),url(./KaTeX_Math-Italic.08ce98e5.ttf) format("truetype")}@font-face{font-family:KaTeX_SansSerif;font-style:normal;font-weight:700;src:url(./KaTeX_SansSerif-Bold.e99ae511.woff2) format("woff2"),url(./KaTeX_SansSerif-Bold.ece03cfd.woff) format("woff"),url(./KaTeX_SansSerif-Bold.1ece03f7.ttf) format("truetype")}@font-face{font-family:KaTeX_SansSerif;font-style:italic;font-weight:400;src:url(./KaTeX_SansSerif-Italic.00b26ac8.woff2) format("woff2"),url(./KaTeX_SansSerif-Italic.91ee6750.woff) format("woff"),url(./KaTeX_SansSerif-Italic.3931dd81.ttf) format("truetype")}@font-face{font-family:KaTeX_SansSerif;font-style:normal;font-weight:400;src:url(./KaTeX_SansSerif-Regular.68e8c73e.woff2) format("woff2"),url(./KaTeX_SansSerif-Regular.11e4dc8a.woff) format("woff"),url(./KaTeX_SansSerif-Regular.f36ea897.ttf) format("truetype")}@font-face{font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(./KaTeX_Script-Regular.036d4e95.woff2) format("woff2"),url(./KaTeX_Script-Regular.d96cdf2b.woff) format("woff"),url(./KaTeX_Script-Regular.1c67f068.ttf) format("truetype")}@font-face{font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(./KaTeX_Size1-Regular.6b47c401.woff2) format("woff2"),url(./KaTeX_Size1-Regular.c943cc98.woff) format("woff"),url(./KaTeX_Size1-Regular.95b6d2f1.ttf) format("truetype")}@font-face{font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(./KaTeX_Size2-Regular.d04c5421.woff2) format("woff2"),url(./KaTeX_Size2-Regular.2014c523.woff) format("woff"),url(./KaTeX_Size2-Regular.a6b2099f.ttf) format("truetype")}@font-face{font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(./KaTeX_Size3-Regular.6ab6b62e.woff) format("woff"),url(./KaTeX_Size3-Regular.500e04d5.ttf) format("truetype")}@font-face{font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(./KaTeX_Size4-Regular.a4af7d41.woff2) format("woff2"),url(./KaTeX_Size4-Regular.99f9c675.woff) format("woff"),url(./KaTeX_Size4-Regular.c647367d.ttf) format("truetype")}@font-face{font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(./KaTeX_Typewriter-Regular.71d517d6.woff2) format("woff2"),url(./KaTeX_Typewriter-Regular.e14fed02.woff) format("woff"),url(./KaTeX_Typewriter-Regular.f01f3e87.ttf) format("truetype")}.katex{font: 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.11"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*! - Theme: GitHub Dark - Description: Dark theme as seen on github.com - Author: github.com - Maintainer: @Hirse - Updated: 2021-05-15 - - Outdated base version: https://github.com/primer/github-syntax-dark - Current colors taken from GitHub's CSS -*/.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#79c0ff}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-code,.hljs-comment,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}.buttons.svelte-1u5gq5j::-webkit-scrollbar{display:none}.buttons.svelte-1u5gq5j{-ms-overflow-style:none;scrollbar-width:none} diff --git a/build/_app/immutable/assets/Messages.bc713b91.css b/build/_app/immutable/assets/Messages.bc713b91.css deleted file mode 100644 index f80352844..000000000 --- a/build/_app/immutable/assets/Messages.bc713b91.css +++ /dev/null @@ -1,10 +0,0 @@ -.tabs.svelte-1w57jp9::-webkit-scrollbar{display:none}.tabs.svelte-1w57jp9{-ms-overflow-style:none;scrollbar-width:none}@font-face{font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(/_app/immutable/assets/KaTeX_AMS-Regular.0cdd387c.woff2) format("woff2"),url(/_app/immutable/assets/KaTeX_AMS-Regular.30da91e8.woff) format("woff"),url(/_app/immutable/assets/KaTeX_AMS-Regular.68534840.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(/_app/immutable/assets/KaTeX_Caligraphic-Bold.de7701e4.woff2) format("woff2"),url(/_app/immutable/assets/KaTeX_Caligraphic-Bold.1ae6bd74.woff) format("woff"),url(/_app/immutable/assets/KaTeX_Caligraphic-Bold.07d8e303.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(/_app/immutable/assets/KaTeX_Caligraphic-Regular.5d53e70a.woff2) format("woff2"),url(/_app/immutable/assets/KaTeX_Caligraphic-Regular.3398dd02.woff) format("woff"),url(/_app/immutable/assets/KaTeX_Caligraphic-Regular.ed0b7437.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(/_app/immutable/assets/KaTeX_Fraktur-Bold.74444efd.woff2) format("woff2"),url(/_app/immutable/assets/KaTeX_Fraktur-Bold.9be7ceb8.woff) format("woff"),url(/_app/immutable/assets/KaTeX_Fraktur-Bold.9163df9c.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(/_app/immutable/assets/KaTeX_Fraktur-Regular.51814d27.woff2) format("woff2"),url(/_app/immutable/assets/KaTeX_Fraktur-Regular.5e28753b.woff) format("woff"),url(/_app/immutable/assets/KaTeX_Fraktur-Regular.1e6f9579.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(/_app/immutable/assets/KaTeX_Main-Bold.0f60d1b8.woff2) format("woff2"),url(/_app/immutable/assets/KaTeX_Main-Bold.c76c5d69.woff) format("woff"),url(/_app/immutable/assets/KaTeX_Main-Bold.138ac28d.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(/_app/immutable/assets/KaTeX_Main-BoldItalic.99cd42a3.woff2) format("woff2"),url(/_app/immutable/assets/KaTeX_Main-BoldItalic.a6f7ec0d.woff) format("woff"),url(/_app/immutable/assets/KaTeX_Main-BoldItalic.70ee1f64.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(/_app/immutable/assets/KaTeX_Main-Italic.97479ca6.woff2) format("woff2"),url(/_app/immutable/assets/KaTeX_Main-Italic.f1d6ef86.woff) format("woff"),url(/_app/immutable/assets/KaTeX_Main-Italic.0d85ae7c.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(/_app/immutable/assets/KaTeX_Main-Regular.c2342cd8.woff2) format("woff2"),url(/_app/immutable/assets/KaTeX_Main-Regular.c6368d87.woff) format("woff"),url(/_app/immutable/assets/KaTeX_Main-Regular.d0332f52.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(/_app/immutable/assets/KaTeX_Math-BoldItalic.dc47344d.woff2) format("woff2"),url(/_app/immutable/assets/KaTeX_Math-BoldItalic.850c0af5.woff) format("woff"),url(/_app/immutable/assets/KaTeX_Math-BoldItalic.f9377ab0.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(/_app/immutable/assets/KaTeX_Math-Italic.7af58c5e.woff2) format("woff2"),url(/_app/immutable/assets/KaTeX_Math-Italic.8a8d2445.woff) format("woff"),url(/_app/immutable/assets/KaTeX_Math-Italic.08ce98e5.ttf) format("truetype")}@font-face{font-family:KaTeX_SansSerif;font-style:normal;font-weight:700;src:url(/_app/immutable/assets/KaTeX_SansSerif-Bold.e99ae511.woff2) format("woff2"),url(/_app/immutable/assets/KaTeX_SansSerif-Bold.ece03cfd.woff) format("woff"),url(/_app/immutable/assets/KaTeX_SansSerif-Bold.1ece03f7.ttf) format("truetype")}@font-face{font-family:KaTeX_SansSerif;font-style:italic;font-weight:400;src:url(/_app/immutable/assets/KaTeX_SansSerif-Italic.00b26ac8.woff2) format("woff2"),url(/_app/immutable/assets/KaTeX_SansSerif-Italic.91ee6750.woff) format("woff"),url(/_app/immutable/assets/KaTeX_SansSerif-Italic.3931dd81.ttf) format("truetype")}@font-face{font-family:KaTeX_SansSerif;font-style:normal;font-weight:400;src:url(/_app/immutable/assets/KaTeX_SansSerif-Regular.68e8c73e.woff2) format("woff2"),url(/_app/immutable/assets/KaTeX_SansSerif-Regular.11e4dc8a.woff) format("woff"),url(/_app/immutable/assets/KaTeX_SansSerif-Regular.f36ea897.ttf) format("truetype")}@font-face{font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(/_app/immutable/assets/KaTeX_Script-Regular.036d4e95.woff2) format("woff2"),url(/_app/immutable/assets/KaTeX_Script-Regular.d96cdf2b.woff) format("woff"),url(/_app/immutable/assets/KaTeX_Script-Regular.1c67f068.ttf) format("truetype")}@font-face{font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(/_app/immutable/assets/KaTeX_Size1-Regular.6b47c401.woff2) format("woff2"),url(/_app/immutable/assets/KaTeX_Size1-Regular.c943cc98.woff) format("woff"),url(/_app/immutable/assets/KaTeX_Size1-Regular.95b6d2f1.ttf) format("truetype")}@font-face{font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(/_app/immutable/assets/KaTeX_Size2-Regular.d04c5421.woff2) format("woff2"),url(/_app/immutable/assets/KaTeX_Size2-Regular.2014c523.woff) format("woff"),url(/_app/immutable/assets/KaTeX_Size2-Regular.a6b2099f.ttf) format("truetype")}@font-face{font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(/_app/immutable/assets/KaTeX_Size3-Regular.6ab6b62e.woff) format("woff"),url(/_app/immutable/assets/KaTeX_Size3-Regular.500e04d5.ttf) format("truetype")}@font-face{font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(/_app/immutable/assets/KaTeX_Size4-Regular.a4af7d41.woff2) format("woff2"),url(/_app/immutable/assets/KaTeX_Size4-Regular.99f9c675.woff) format("woff"),url(/_app/immutable/assets/KaTeX_Size4-Regular.c647367d.ttf) format("truetype")}@font-face{font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(/_app/immutable/assets/KaTeX_Typewriter-Regular.71d517d6.woff2) format("woff2"),url(/_app/immutable/assets/KaTeX_Typewriter-Regular.e14fed02.woff) format("woff"),url(/_app/immutable/assets/KaTeX_Typewriter-Regular.f01f3e87.ttf) format("truetype")}.katex{font: 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.11"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*! - Theme: GitHub Dark - Description: Dark theme as seen on github.com - Author: github.com - Maintainer: @Hirse - Updated: 2021-05-15 - - Outdated base version: https://github.com/primer/github-syntax-dark - Current colors taken from GitHub's CSS -*/.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#79c0ff}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-code,.hljs-comment,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}.buttons.svelte-1u5gq5j::-webkit-scrollbar{display:none}.buttons.svelte-1u5gq5j{-ms-overflow-style:none;scrollbar-width:none} diff --git a/build/_app/immutable/assets/Modal.beb6c5d8.css b/build/_app/immutable/assets/Modal.beb6c5d8.css deleted file mode 100644 index a5468e6c0..000000000 --- a/build/_app/immutable/assets/Modal.beb6c5d8.css +++ /dev/null @@ -1 +0,0 @@ -.modal-content.svelte-fq1rhy{animation:svelte-fq1rhy-scaleUp .1s ease-out forwards}@keyframes svelte-fq1rhy-scaleUp{0%{transform:scale(.985);opacity:0}to{transform:scale(1);opacity:1}} diff --git a/build/_app/immutable/assets/Toaster.146ab3ed.css b/build/_app/immutable/assets/Toaster.146ab3ed.css deleted file mode 100644 index 29020b7cd..000000000 --- a/build/_app/immutable/assets/Toaster.146ab3ed.css +++ /dev/null @@ -1 +0,0 @@ -:where(html[dir=ltr]),:where([data-sonner-toaster][dir=ltr]){--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}:where(html[dir=rtl]),:where([data-sonner-toaster][dir=rtl]){--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}:where([data-sonner-toaster]){position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:none;z-index:999999999}:where([data-sonner-toaster][data-x-position=right]){right:max(var(--offset),env(safe-area-inset-right))}:where([data-sonner-toaster][data-x-position=left]){left:max(var(--offset),env(safe-area-inset-left))}:where([data-sonner-toaster][data-x-position=center]){left:50%;transform:translate(-50%)}:where([data-sonner-toaster][data-y-position=top]){top:max(var(--offset),env(safe-area-inset-top))}:where([data-sonner-toaster][data-y-position=bottom]){bottom:max(var(--offset),env(safe-area-inset-bottom))}:where([data-sonner-toast]){--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);filter:blur(0);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:none;overflow-wrap:anywhere}:where([data-sonner-toast][data-styled=true]){padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px #0000001a;width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}:where([data-sonner-toast]:focus-visible){box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast][data-y-position=top]){top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}:where([data-sonner-toast][data-y-position=bottom]){bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}:where([data-sonner-toast]) :where([data-description]){font-weight:400;line-height:1.4;color:inherit}:where([data-sonner-toast]) :where([data-title]){font-weight:500;line-height:1.5;color:inherit}:where([data-sonner-toast]) :where([data-icon]){display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}:where([data-sonner-toast][data-promise=true]) :where([data-icon])>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}:where([data-sonner-toast]) :where([data-icon])>*{flex-shrink:0}:where([data-sonner-toast]) :where([data-icon]) svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}:where([data-sonner-toast]) :where([data-content]){display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;cursor:pointer;outline:none;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}:where([data-sonner-toast]) :where([data-button]):focus-visible{box-shadow:0 0 0 2px #0006}:where([data-sonner-toast]) :where([data-button]):first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}:where([data-sonner-toast]) :where([data-cancel]){color:var(--normal-text);background:rgba(0,0,0,.08)}:where([data-sonner-toast][data-theme=dark]) :where([data-cancel]){background:rgba(255,255,255,.3)}:where([data-sonner-toast]) :where([data-close-button]){position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;background:var(--gray1);color:var(--gray12);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}:where([data-sonner-toast]) :where([data-close-button]):focus-visible{box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast]) :where([data-disabled=true]){cursor:not-allowed}:where([data-sonner-toast]):hover :where([data-close-button]):hover{background:var(--gray2);border-color:var(--gray5)}:where([data-sonner-toast][data-swiping=true]):before{content:"";position:absolute;left:0;right:0;height:100%;z-index:-1}:where([data-sonner-toast][data-y-position=top][data-swiping=true]):before{bottom:50%;transform:scaleY(3) translateY(50%)}:where([data-sonner-toast][data-y-position=bottom][data-swiping=true]):before{top:50%;transform:scaleY(3) translateY(-50%)}:where([data-sonner-toast][data-swiping=false][data-removed=true]):before{content:"";position:absolute;inset:0;transform:scaleY(2)}:where([data-sonner-toast]):after{content:"";position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}:where([data-sonner-toast][data-mounted=true]){--y:translateY(0);opacity:1}:where([data-sonner-toast][data-expanded=false][data-front=false]){--scale:var(--toasts-before) * .05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}:where([data-sonner-toast])>*{transition:opacity .4s}:where([data-sonner-toast][data-expanded=false][data-front=false][data-styled=true])>*{opacity:0}:where([data-sonner-toast][data-visible=false]){opacity:0;pointer-events:none}:where([data-sonner-toast][data-mounted=true][data-expanded=true]){--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}:where([data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]){--y:translateY(calc(var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]){--y:translateY( calc(var(--lift) * var(--offset) + var(--lift) * -100%) );opacity:0}:where([data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]){--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}:where([data-sonner-toast][data-removed=true][data-front=false]):before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount, 0px));transition:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation:swipe-out .2s ease-out forwards}@keyframes swipe-out{0%{transform:translateY(calc(var(--lift) * var(--offset) + var(--swipe-amount)));opacity:1}to{transform:translateY(calc(var(--lift) * var(--offset) + var(--swipe-amount) + var(--lift) * -100%));opacity:0}}@media (max-width: 600px){[data-sonner-toaster]{position:fixed;--mobile-offset:16px;right:var(--mobile-offset);left:var(--mobile-offset);width:100%}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset)}[data-sonner-toaster][data-y-position=bottom]{bottom:20px}[data-sonner-toaster][data-y-position=top]{top:20px}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset);right:var(--mobile-offset);transform:none}}[data-sonner-toaster][data-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 91%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 91%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 91%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-theme=dark]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 100%, 12%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 12%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-rich-colors=true] [data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-theme=dark] [data-sonner-toast][data-type=default] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-rich-colors=true] [data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true] [data-sonner-toast][data-type=info],[data-rich-colors=true] [data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true] [data-sonner-toast][data-type=warning],[data-rich-colors=true] [data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true] [data-sonner-toast][data-type=error],[data-rich-colors=true] [data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:nth-child(1){animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}to{opacity:.15}}@media (prefers-reduced-motion){[data-sonner-toast],[data-sonner-toast]>*,.sonner-loading-bar{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)} diff --git a/build/_app/immutable/assets/Toaster.77cf5b64.css b/build/_app/immutable/assets/Toaster.77cf5b64.css deleted file mode 100644 index 79eb41637..000000000 --- a/build/_app/immutable/assets/Toaster.77cf5b64.css +++ /dev/null @@ -1 +0,0 @@ -:where(html[dir=ltr]),:where([data-sonner-toaster][dir=ltr]){--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}:where(html[dir=rtl]),:where([data-sonner-toaster][dir=rtl]){--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}:where([data-sonner-toaster]){position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:none;z-index:999999999}:where([data-sonner-toaster][data-x-position=right]){right:max(var(--offset),env(safe-area-inset-right))}:where([data-sonner-toaster][data-x-position=left]){left:max(var(--offset),env(safe-area-inset-left))}:where([data-sonner-toaster][data-x-position=center]){left:50%;transform:translate(-50%)}:where([data-sonner-toaster][data-y-position=top]){top:max(var(--offset),env(safe-area-inset-top))}:where([data-sonner-toaster][data-y-position=bottom]){bottom:max(var(--offset),env(safe-area-inset-bottom))}:where([data-sonner-toast]){--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);filter:blur(0);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:none;overflow-wrap:anywhere}:where([data-sonner-toast][data-styled=true]){padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px #0000001a;width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}:where([data-sonner-toast]:focus-visible){box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast][data-y-position=top]){top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}:where([data-sonner-toast][data-y-position=bottom]){bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}:where([data-sonner-toast]) :where([data-description]){font-weight:400;line-height:1.4;color:inherit}:where([data-sonner-toast]) :where([data-title]){font-weight:500;line-height:1.5;color:inherit}:where([data-sonner-toast]) :where([data-icon]){display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}:where([data-sonner-toast][data-promise=true]) :where([data-icon])>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}:where([data-sonner-toast]) :where([data-icon])>*{flex-shrink:0}:where([data-sonner-toast]) :where([data-icon]) svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}:where([data-sonner-toast]) :where([data-content]){display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;cursor:pointer;outline:none;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}:where([data-sonner-toast]) :where([data-button]):focus-visible{box-shadow:0 0 0 2px #0006}:where([data-sonner-toast]) :where([data-button]):first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}:where([data-sonner-toast]) :where([data-cancel]){color:var(--normal-text);background:rgba(0,0,0,.08)}:where([data-sonner-toast][data-theme=dark]) :where([data-cancel]){background:rgba(255,255,255,.3)}:where([data-sonner-toast]) :where([data-close-button]){position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;background:var(--gray1);color:var(--gray12);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}:where([data-sonner-toast]) :where([data-close-button]):focus-visible{box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast]) :where([data-disabled=true]){cursor:not-allowed}:where([data-sonner-toast]):hover :where([data-close-button]):hover{background:var(--gray2);border-color:var(--gray5)}:where([data-sonner-toast][data-swiping=true]):before{content:"";position:absolute;left:0;right:0;height:100%;z-index:-1}:where([data-sonner-toast][data-y-position=top][data-swiping=true]):before{bottom:50%;transform:scaleY(3) translateY(50%)}:where([data-sonner-toast][data-y-position=bottom][data-swiping=true]):before{top:50%;transform:scaleY(3) translateY(-50%)}:where([data-sonner-toast][data-swiping=false][data-removed=true]):before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;transform:scaleY(2)}:where([data-sonner-toast]):after{content:"";position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}:where([data-sonner-toast][data-mounted=true]){--y:translateY(0);opacity:1}:where([data-sonner-toast][data-expanded=false][data-front=false]){--scale:var(--toasts-before) * .05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}:where([data-sonner-toast])>*{transition:opacity .4s}:where([data-sonner-toast][data-expanded=false][data-front=false][data-styled=true])>*{opacity:0}:where([data-sonner-toast][data-visible=false]){opacity:0;pointer-events:none}:where([data-sonner-toast][data-mounted=true][data-expanded=true]){--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}:where([data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]){--y:translateY(calc(var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]){--y:translateY( calc(var(--lift) * var(--offset) + var(--lift) * -100%) );opacity:0}:where([data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]){--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}:where([data-sonner-toast][data-removed=true][data-front=false]):before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount, 0px));transition:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation:swipe-out .2s ease-out forwards}@keyframes swipe-out{0%{transform:translateY(calc(var(--lift) * var(--offset) + var(--swipe-amount)));opacity:1}to{transform:translateY(calc(var(--lift) * var(--offset) + var(--swipe-amount) + var(--lift) * -100%));opacity:0}}@media (max-width: 600px){[data-sonner-toaster]{position:fixed;--mobile-offset:16px;right:var(--mobile-offset);left:var(--mobile-offset);width:100%}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset)}[data-sonner-toaster][data-y-position=bottom]{bottom:20px}[data-sonner-toaster][data-y-position=top]{top:20px}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset);right:var(--mobile-offset);transform:none}}[data-sonner-toaster][data-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 91%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 91%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 91%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-theme=dark]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 100%, 12%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 12%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-rich-colors=true] [data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-theme=dark] [data-sonner-toast][data-type=default] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-rich-colors=true] [data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true] [data-sonner-toast][data-type=info],[data-rich-colors=true] [data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true] [data-sonner-toast][data-type=warning],[data-rich-colors=true] [data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true] [data-sonner-toast][data-type=error],[data-rich-colors=true] [data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;top:0;right:0;bottom:0;left:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:nth-child(1){animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}to{opacity:.15}}@media (prefers-reduced-motion){[data-sonner-toast],[data-sonner-toast]>*,.sonner-loading-bar{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)} diff --git a/build/_app/immutable/assets/_layout.0d022a0b.css b/build/_app/immutable/assets/_layout.0d022a0b.css deleted file mode 100644 index c367d599a..000000000 --- a/build/_app/immutable/assets/_layout.0d022a0b.css +++ /dev/null @@ -1 +0,0 @@ -*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e3e3e3}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#b4b4b4}input::placeholder,textarea::placeholder{opacity:1;color:#b4b4b4}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}html,pre{font-family:-apple-system,Arimo,ui-sans-serif,system-ui,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,Helvetica Neue,Arial,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}pre{white-space:pre-wrap}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%),0 3px 0 rgb(var(--tw-prose-kbd-shadows) / 10%);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body: #374151;--tw-prose-headings: #111827;--tw-prose-lead: #4b5563;--tw-prose-links: #111827;--tw-prose-bold: #111827;--tw-prose-counters: #6b7280;--tw-prose-bullets: #d1d5db;--tw-prose-hr: #e5e7eb;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #e5e7eb;--tw-prose-captions: #6b7280;--tw-prose-kbd: #111827;--tw-prose-kbd-shadows: 17 24 39;--tw-prose-code: #111827;--tw-prose-pre-code: #e5e7eb;--tw-prose-pre-bg: #1f2937;--tw-prose-th-borders: #d1d5db;--tw-prose-td-borders: #e5e7eb;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-kbd: #fff;--tw-prose-invert-kbd-shadows: 255 255 255;--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-x-0{left:0;right:0}.-left-2{left:-.5rem}.-right-1{right:-.25rem}.-top-1{top:-.25rem}.-top-12{top:-3rem}.bottom-0{bottom:0}.end-2{inset-inline-end:.5rem}.left-0{left:0}.left-1{left:.25rem}.left-4{left:1rem}.right-0{right:0}.right-2\.5{right:.625rem}.right-\[10px\]{right:10px}.top-0{top:0}.top-1{top:.25rem}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.top-2\.5{top:.625rem}.top-4{top:1rem}.top-\[10px\]{top:10px}.top-\[4\.25rem\]{top:4.25rem}.top-\[50dvh\]{top:50dvh}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[9999\]{z-index:9999}.z-\[999\]{z-index:999}.col-span-1{grid-column:span 1 / span 1}.col-span-2{grid-column:span 2 / span 2}.m-0\.5{margin:.125rem}.m-1{margin:.25rem}.m-10{margin:2.5rem}.m-auto{margin:auto}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-1\.5{margin-left:.375rem;margin-right:.375rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-2\.5{margin-left:.625rem;margin-right:.625rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0\.5{margin-top:.125rem;margin-bottom:.125rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-1\.5{margin-top:.375rem;margin-bottom:.375rem}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.my-16{margin-top:4rem;margin-bottom:4rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-2\.5{margin-top:.625rem;margin-bottom:.625rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-auto{margin-top:auto;margin-bottom:auto}.-mb-0\.5{margin-bottom:-.125rem}.-mb-1{margin-bottom:-.25rem}.-ml-2{margin-left:-.5rem}.-mt-1{margin-top:-.25rem}.-mt-\[3px\]{margin-top:-3px}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-10{margin-bottom:2.5rem}.mb-2{margin-bottom:.5rem}.mb-2\.5{margin-bottom:.625rem}.mb-20{margin-bottom:5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-1\.5{margin-left:.375rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-\[25px\]{margin-left:25px}.ml-auto{margin-left:auto}.mr-0\.5{margin-right:.125rem}.mr-1{margin-right:.25rem}.mr-10{margin-right:2.5rem}.mr-14{margin-right:3.5rem}.mr-2{margin-right:.5rem}.mr-2\.5{margin-right:.625rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mr-5{margin-right:1.25rem}.mr-\[25px\]{margin-right:25px}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-2\.5{margin-top:.625rem}.mt-3{margin-top:.75rem}.mt-3\.5{margin-top:.875rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.line-clamp-3{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.size-12{width:3rem;height:3rem}.size-14{width:3.5rem;height:3.5rem}.size-16{width:4rem;height:4rem}.size-2{width:.5rem;height:.5rem}.size-3{width:.75rem;height:.75rem}.size-3\.5{width:.875rem;height:.875rem}.size-4{width:1rem;height:1rem}.size-44{width:11rem;height:11rem}.size-48{width:12rem;height:12rem}.size-5{width:1.25rem;height:1.25rem}.size-52{width:13rem;height:13rem}.size-6{width:1.5rem;height:1.5rem}.size-8{width:2rem;height:2rem}.size-\[1\.1rem\]{width:1.1rem;height:1.1rem}.size-\[11\.5rem\]{width:11.5rem;height:11.5rem}.size-\[2\.7rem\]{width:2.7rem;height:2.7rem}.size-\[4\.5rem\]{width:4.5rem;height:4.5rem}.h-0{height:0px}.h-1{height:.25rem}.h-10{height:2.5rem}.h-16{height:4rem}.h-2{height:.5rem}.h-20{height:5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-36{height:9rem}.h-4{height:1rem}.h-40{height:10rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-\[2\.5rem\]{height:2.5rem}.h-\[20px\]{height:20px}.h-\[28rem\]{height:28rem}.h-\[48px\]{height:48px}.h-\[72px\]{height:72px}.h-auto{height:auto}.h-fit{height:-moz-fit-content;height:fit-content}.h-full{height:100%}.h-screen{height:100vh}.max-h-28{max-height:7rem}.max-h-60{max-height:15rem}.max-h-64{max-height:16rem}.max-h-80{max-height:20rem}.max-h-96{max-height:24rem}.max-h-\[100dvh\]{max-height:100dvh}.max-h-\[10rem\]{max-height:10rem}.max-h-\[22rem\]{max-height:22rem}.max-h-\[25rem\]{max-height:25rem}.max-h-\[27rem\]{max-height:27rem}.max-h-full{max-height:100%}.max-h-screen{max-height:100vh}.min-h-20{min-height:5rem}.min-h-5{min-height:1.25rem}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-10{width:2.5rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-2\/3{width:66.666667%}.w-20{width:5rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-\[0px\]{width:0px}.w-\[15rem\]{width:15rem}.w-\[16rem\]{width:16rem}.w-\[1px\]{width:1px}.w-\[260px\]{width:260px}.w-\[2px\]{width:2px}.w-\[30rem\]{width:30rem}.w-\[32rem\]{width:32rem}.w-\[42rem\]{width:42rem}.w-\[48rem\]{width:48rem}.w-\[5\.5rem\]{width:5.5rem}.w-\[56rem\]{width:56rem}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.min-w-80{min-width:20rem}.min-w-\[6rem\]{min-width:6rem}.min-w-\[7rem\]{min-width:7rem}.min-w-fit{min-width:-moz-fit-content;min-width:fit-content}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-\[130px\]{max-width:130px}.max-w-\[160px\]{max-width:160px}.max-w-\[180px\]{max-width:180px}.max-w-\[200px\]{max-width:200px}.max-w-\[240px\]{max-width:240px}.max-w-\[28px\]{max-width:28px}.max-w-\[300px\]{max-width:300px}.max-w-\[30px\]{max-width:30px}.max-w-\[55px\]{max-width:55px}.max-w-\[90\%\]{max-width:90%}.max-w-\[calc\(100vw-1rem\)\]{max-width:calc(100vw - 1rem)}.max-w-fit{max-width:-moz-fit-content;max-width:fit-content}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.flex-1{flex:1 1 0%}.flex-auto{flex:1 1 auto}.flex-none{flex:none}.shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.table-auto{table-layout:auto}.-translate-x-1{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-1\.5{--tw-translate-x: -.375rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-\[260px\]{--tw-translate-x: -260px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-\[45\%\]{--tw-translate-y: -45%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[255px\]{--tw-translate-x: 255px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[3px\]{--tw-translate-x: 3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0\.5{--tw-translate-y: .125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-0\.15rem\]{--tw-translate-y: -.15rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[0\.15rem\]{--tw-translate-y: .15rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[0\.3px\]{--tw-translate-y: .3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[0\.5px\]{--tw-translate-y: .5px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-0{--tw-rotate: 0deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-45{--tw-rotate: 45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes ping{75%,to{transform:scale(2);opacity:0}}.animate-ping{animation:ping 1s cubic-bezier(0,0,.2,1) infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.resize{resize:both}.snap-x{scroll-snap-type:x var(--tw-scroll-snap-strictness)}.snap-mandatory{--tw-scroll-snap-strictness: mandatory}.snap-center{scroll-snap-align:center}.list-disc{list-style-type:disc}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.-space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(-1rem * var(--tw-space-x-reverse));margin-left:calc(-1rem * calc(1 - var(--tw-space-x-reverse)))}.-space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(-.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(-.125rem * var(--tw-space-y-reverse))}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-1\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.375rem * var(--tw-space-x-reverse));margin-left:calc(.375rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.75rem * var(--tw-space-x-reverse));margin-left:calc(.75rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-3\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.875rem * var(--tw-space-x-reverse));margin-left:calc(.875rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-5>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1.25rem * var(--tw-space-x-reverse));margin-left:calc(1.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.625rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.self-start{align-self:flex-start}.self-end{align-self:flex-end}.self-center{align-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-y-scroll{overflow-y:scroll}.overscroll-contain{overscroll-behavior:contain}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.text-wrap{text-wrap:wrap}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-\[9px\]{border-radius:9px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-l-lg{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-l-xl{border-top-left-radius:.75rem;border-bottom-left-radius:.75rem}.rounded-r-2xl{border-top-right-radius:1rem;border-bottom-right-radius:1rem}.rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.rounded-r-xl{border-top-right-radius:.75rem;border-bottom-right-radius:.75rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.rounded-br-xl{border-bottom-right-radius:.75rem}.rounded-tr-lg{border-top-right-radius:.5rem}.border{border-width:1px}.border-2{border-width:2px}.border-\[1\.5px\]{border-width:1.5px}.border-\[1px\]{border-width:1px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-r{border-right-width:1px}.border-r-0{border-right-width:0px}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-black\/10{border-color:#0000001a}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(236 236 236 / var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(227 227 227 / var(--tw-border-opacity))}.border-gray-300\/30{border-color:#cdcdcd4d}.border-gray-50{--tw-border-opacity: 1;border-color:rgb(249 249 249 / var(--tw-border-opacity))}.border-gray-700{--tw-border-opacity: 1;border-color:rgb(78 78 78 / var(--tw-border-opacity))}.border-gray-850{--tw-border-opacity: 1;border-color:rgb(38 38 38 / var(--tw-border-opacity))}.border-gray-900{border-color:var(--color-gray-900, #171717)}.border-red-800{--tw-border-opacity: 1;border-color:rgb(153 27 27 / var(--tw-border-opacity))}.border-white{--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity))}.bg-\[\#0f0f0f\]{--tw-bg-opacity: 1;background-color:rgb(15 15 15 / var(--tw-bg-opacity))}.bg-\[\#202123\]{--tw-bg-opacity: 1;background-color:rgb(32 33 35 / var(--tw-bg-opacity))}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.bg-black\/10{background-color:#0000001a}.bg-black\/60{background-color:#0009}.bg-blue-500\/20{background-color:#3b82f633}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}.bg-emerald-600{--tw-bg-opacity: 1;background-color:rgb(5 150 105 / var(--tw-bg-opacity))}.bg-emerald-700{--tw-bg-opacity: 1;background-color:rgb(4 120 87 / var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(236 236 236 / var(--tw-bg-opacity))}.bg-gray-100\/50{background-color:#ececec80}.bg-gray-100\/70{background-color:#ecececb3}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(227 227 227 / var(--tw-bg-opacity))}.bg-gray-200\/30{background-color:#e3e3e34d}.bg-gray-300{--tw-bg-opacity: 1;background-color:rgb(205 205 205 / var(--tw-bg-opacity))}.bg-gray-300\/20{background-color:#cdcdcd33}.bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(180 180 180 / var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 249 249 / var(--tw-bg-opacity))}.bg-gray-50\/90{background-color:#f9f9f9e6}.bg-gray-500{--tw-bg-opacity: 1;background-color:rgb(155 155 155 / var(--tw-bg-opacity))}.bg-gray-500\/20{background-color:#9b9b9b33}.bg-gray-600{--tw-bg-opacity: 1;background-color:rgb(103 103 103 / var(--tw-bg-opacity))}.bg-gray-700{--tw-bg-opacity: 1;background-color:rgb(78 78 78 / var(--tw-bg-opacity))}.bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(51 51 51 / var(--tw-bg-opacity))}.bg-gray-800\/40{background-color:#3336}.bg-gray-850{--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity))}.bg-gray-900{background-color:var(--color-gray-900, #171717)}.bg-green-200\/30{background-color:#bbf7d04d}.bg-green-400{--tw-bg-opacity: 1;background-color:rgb(74 222 128 / var(--tw-bg-opacity))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity))}.bg-green-500\/20{background-color:#22c55e33}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity))}.bg-indigo-300\/10{background-color:#a5b4fc1a}.bg-indigo-400\/20{background-color:#818cf833}.bg-indigo-500{--tw-bg-opacity: 1;background-color:rgb(99 102 241 / var(--tw-bg-opacity))}.bg-red-400{--tw-bg-opacity: 1;background-color:rgb(248 113 113 / var(--tw-bg-opacity))}.bg-red-500\/20{background-color:#ef444433}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity))}.bg-red-800\/30{background-color:#991b1b4d}.bg-sky-200\/30{background-color:#bae6fd4d}.bg-sky-600{--tw-bg-opacity: 1;background-color:rgb(2 132 199 / var(--tw-bg-opacity))}.bg-stone-700{--tw-bg-opacity: 1;background-color:rgb(68 64 60 / var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-transparent\/10{background-color:#0000001a}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-white\/10{background-color:#ffffff1a}.bg-white\/20{background-color:#fff3}.bg-yellow-500\/20{background-color:#eab30833}.bg-yellow-600{--tw-bg-opacity: 1;background-color:rgb(202 138 4 / var(--tw-bg-opacity))}.bg-gradient-to-l{background-image:linear-gradient(to left,var(--tw-gradient-stops))}.bg-gradient-to-t{background-image:linear-gradient(to top,var(--tw-gradient-stops))}.bg-none{background-image:none}.from-gray-100{--tw-gradient-from: #ececec var(--tw-gradient-from-position);--tw-gradient-to: rgb(236 236 236 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-gray-200{--tw-gradient-from: #e3e3e3 var(--tw-gradient-from-position);--tw-gradient-to: rgb(227 227 227 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-white{--tw-gradient-from: #fff var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-50\%{--tw-gradient-from-position: 50%}.from-80\%{--tw-gradient-from-position: 80%}.to-transparent{--tw-gradient-to: transparent var(--tw-gradient-to-position)}.bg-fixed{background-attachment:fixed}.fill-yellow-300{fill:#fde047}.object-cover{-o-object-fit:cover;object-fit:cover}.object-scale-down{-o-object-fit:scale-down;object-fit:scale-down}.object-center{-o-object-position:center;object-position:center}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.px-\[1\.75rem\]{padding-left:1.75rem;padding-right:1.75rem}.px-\[3px\]{padding-left:3px;padding-right:3px}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-\[0\.5px\]{padding-top:.5px;padding-bottom:.5px}.pb-0\.5{padding-bottom:.125rem}.pb-1{padding-bottom:.25rem}.pb-10{padding-bottom:2.5rem}.pb-12{padding-bottom:3rem}.pb-16{padding-bottom:4rem}.pb-2{padding-bottom:.5rem}.pb-2\.5{padding-bottom:.625rem}.pb-20{padding-bottom:5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-44{padding-bottom:11rem}.pb-5{padding-bottom:1.25rem}.pl-1{padding-left:.25rem}.pl-2{padding-left:.5rem}.pl-2\.5{padding-left:.625rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-5{padding-left:1.25rem}.pr-0\.5{padding-right:.125rem}.pr-1{padding-right:.25rem}.pr-1\.5{padding-right:.375rem}.pr-12{padding-right:3rem}.pr-2{padding-right:.5rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pr-5{padding-right:1.25rem}.pr-8{padding-right:2rem}.pt-0\.5{padding-top:.125rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-64{padding-top:16rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-6xl{font-size:3.75rem;line-height:1}.text-\[0\.7rem\]{font-size:.7rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.leading-none{line-height:1}.tracking-widest{letter-spacing:.1em}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity))}.text-gray-100{--tw-text-opacity: 1;color:rgb(236 236 236 / var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity: 1;color:rgb(227 227 227 / var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity: 1;color:rgb(205 205 205 / var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity: 1;color:rgb(180 180 180 / var(--tw-text-opacity))}.text-gray-50{--tw-text-opacity: 1;color:rgb(249 249 249 / var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity: 1;color:rgb(155 155 155 / var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity: 1;color:rgb(103 103 103 / var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity: 1;color:rgb(78 78 78 / var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity: 1;color:rgb(51 51 51 / var(--tw-text-opacity))}.text-gray-850{--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity))}.text-gray-900{color:var(--color-gray-900, #171717)}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity))}.text-indigo-400{--tw-text-opacity: 1;color:rgb(129 140 248 / var(--tw-text-opacity))}.text-indigo-600{--tw-text-opacity: 1;color:rgb(79 70 229 / var(--tw-text-opacity))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity))}.text-sky-600{--tw-text-opacity: 1;color:rgb(2 132 199 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-yellow-700{--tw-text-opacity: 1;color:rgb(161 98 7 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.no-underline{text-decoration-line:none}.placeholder-gray-400::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(180 180 180 / var(--tw-placeholder-opacity))}.placeholder-gray-400::placeholder{--tw-placeholder-opacity: 1;color:rgb(180 180 180 / var(--tw-placeholder-opacity))}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.outline-1{outline-width:1px}.outline-\[1\.5px\]{outline-width:1.5px}.-outline-offset-1{outline-offset:-1px}.outline-black{outline-color:#000}.outline-gray-100{outline-color:#ececec}.outline-gray-200{outline-color:#e3e3e3}.outline-gray-300{outline-color:#cdcdcd}.outline-red-300{outline-color:#fca5a5}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.brightness-90{--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert: invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-lg{--tw-backdrop-blur: blur(16px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-md{--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur: blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-300{transition-duration:.3s}.duration-75{transition-duration:75ms}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.dark\:prose-invert:is(.dark *){--tw-prose-body: var(--tw-prose-invert-body);--tw-prose-headings: var(--tw-prose-invert-headings);--tw-prose-lead: var(--tw-prose-invert-lead);--tw-prose-links: var(--tw-prose-invert-links);--tw-prose-bold: var(--tw-prose-invert-bold);--tw-prose-counters: var(--tw-prose-invert-counters);--tw-prose-bullets: var(--tw-prose-invert-bullets);--tw-prose-hr: var(--tw-prose-invert-hr);--tw-prose-quotes: var(--tw-prose-invert-quotes);--tw-prose-quote-borders: var(--tw-prose-invert-quote-borders);--tw-prose-captions: var(--tw-prose-invert-captions);--tw-prose-kbd: var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows: var(--tw-prose-invert-kbd-shadows);--tw-prose-code: var(--tw-prose-invert-code);--tw-prose-pre-code: var(--tw-prose-invert-pre-code);--tw-prose-pre-bg: var(--tw-prose-invert-pre-bg);--tw-prose-th-borders: var(--tw-prose-invert-th-borders);--tw-prose-td-borders: var(--tw-prose-invert-td-borders)}.hover\:bg-black\/5:hover{background-color:#0000000d}.hover\:bg-emerald-500:hover{--tw-bg-opacity: 1;background-color:rgb(16 185 129 / var(--tw-bg-opacity))}.hover\:bg-emerald-700:hover{--tw-bg-opacity: 1;background-color:rgb(4 120 87 / var(--tw-bg-opacity))}.hover\:bg-emerald-800:hover{--tw-bg-opacity: 1;background-color:rgb(6 95 70 / var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(236 236 236 / var(--tw-bg-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity: 1;background-color:rgb(227 227 227 / var(--tw-bg-opacity))}.hover\:bg-gray-300:hover{--tw-bg-opacity: 1;background-color:rgb(205 205 205 / var(--tw-bg-opacity))}.hover\:bg-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(249 249 249 / var(--tw-bg-opacity))}.hover\:bg-gray-800:hover{--tw-bg-opacity: 1;background-color:rgb(51 51 51 / var(--tw-bg-opacity))}.hover\:bg-gray-850:hover{--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity))}.hover\:bg-gray-900:hover{background-color:var(--color-gray-900, #171717)}.hover\:text-black:hover{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity: 1;color:rgb(78 78 78 / var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.hover\:opacity-50:hover{opacity:.5}.hover\:outline-gray-500:hover{outline-color:#9b9b9b}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:text-gray-300:disabled{--tw-text-opacity: 1;color:rgb(205 205 205 / var(--tw-text-opacity))}.disabled\:text-gray-400:disabled{--tw-text-opacity: 1;color:rgb(180 180 180 / var(--tw-text-opacity))}.disabled\:text-gray-500:disabled{--tw-text-opacity: 1;color:rgb(155 155 155 / var(--tw-text-opacity))}.disabled\:text-gray-600:disabled{--tw-text-opacity: 1;color:rgb(103 103 103 / var(--tw-text-opacity))}.disabled\:opacity-50:disabled{opacity:.5}.hover\:disabled\:bg-transparent:disabled:hover{background-color:transparent}.disabled\:hover\:text-gray-600:hover:disabled{--tw-text-opacity: 1;color:rgb(103 103 103 / var(--tw-text-opacity))}.group:hover .group-hover\:visible{visibility:visible}.group:hover .group-hover\:rotate-\[-15deg\]{--tw-rotate: -15deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:rotate-\[15deg\]{--tw-rotate: 15deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(236 236 236 / var(--tw-bg-opacity))}.group\/item:hover .group-hover\/item\:text-gray-600{--tw-text-opacity: 1;color:rgb(103 103 103 / var(--tw-text-opacity))}.group:hover .group-hover\:text-gray-500{--tw-text-opacity: 1;color:rgb(155 155 155 / var(--tw-text-opacity))}.group:hover .group-hover\:text-gray-600{--tw-text-opacity: 1;color:rgb(103 103 103 / var(--tw-text-opacity))}.group:hover .group-hover\:text-gray-800{--tw-text-opacity: 1;color:rgb(51 51 51 / var(--tw-text-opacity))}.group:hover .group-hover\:opacity-100{opacity:1}.data-\[state\=checked\]\:translate-x-3\.5[data-state=checked]{--tw-translate-x: .875rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[selected\]\:bg-black[data-selected]{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.data-\[selected\]\:text-gray-100[data-selected]{--tw-text-opacity: 1;color:rgb(236 236 236 / var(--tw-text-opacity))}.data-\[selected\]\:hover\:bg-black:hover[data-selected]{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.prose-headings\:my-0 :is(:where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *))){margin-top:0;margin-bottom:0}.prose-headings\:-mb-4 :is(:where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *))){margin-bottom:-1rem}.prose-p\:m-0 :is(:where(p):not(:where([class~=not-prose],[class~=not-prose] *))){margin:0}.prose-p\:my-0 :is(:where(p):not(:where([class~=not-prose],[class~=not-prose] *))){margin-top:0;margin-bottom:0}.prose-p\:-mb-4 :is(:where(p):not(:where([class~=not-prose],[class~=not-prose] *))){margin-bottom:-1rem}.prose-p\:-mb-6 :is(:where(p):not(:where([class~=not-prose],[class~=not-prose] *))){margin-bottom:-1.5rem}.prose-blockquote\:my-0 :is(:where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *))){margin-top:0;margin-bottom:0}.prose-pre\:my-0 :is(:where(pre):not(:where([class~=not-prose],[class~=not-prose] *))){margin-top:0;margin-bottom:0}.prose-ol\:-my-4 :is(:where(ol):not(:where([class~=not-prose],[class~=not-prose] *))){margin-top:-1rem;margin-bottom:-1rem}.prose-ol\:-mb-6 :is(:where(ol):not(:where([class~=not-prose],[class~=not-prose] *))){margin-bottom:-1.5rem}.prose-ol\:-mb-8 :is(:where(ol):not(:where([class~=not-prose],[class~=not-prose] *))){margin-bottom:-2rem}.prose-ol\:p-0 :is(:where(ol):not(:where([class~=not-prose],[class~=not-prose] *))){padding:0}.prose-ul\:-my-4 :is(:where(ul):not(:where([class~=not-prose],[class~=not-prose] *))){margin-top:-1rem;margin-bottom:-1rem}.prose-ul\:-mb-6 :is(:where(ul):not(:where([class~=not-prose],[class~=not-prose] *))){margin-bottom:-1.5rem}.prose-li\:-my-3 :is(:where(li):not(:where([class~=not-prose],[class~=not-prose] *))){margin-top:-.75rem;margin-bottom:-.75rem}.prose-li\:-mb-4 :is(:where(li):not(:where([class~=not-prose],[class~=not-prose] *))){margin-bottom:-1rem}.prose-table\:my-0 :is(:where(table):not(:where([class~=not-prose],[class~=not-prose] *))){margin-top:0;margin-bottom:0}.prose-img\:my-0 :is(:where(img):not(:where([class~=not-prose],[class~=not-prose] *))){margin-top:0;margin-bottom:0}.dark\:border:is(.dark *){border-width:1px}.dark\:border-0:is(.dark *){border-width:0px}.dark\:border-none:is(.dark *){border-style:none}.dark\:border-gray-600:is(.dark *){--tw-border-opacity: 1;border-color:rgb(103 103 103 / var(--tw-border-opacity))}.dark\:border-gray-700\/50:is(.dark *){border-color:#4e4e4e80}.dark\:border-gray-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(51 51 51 / var(--tw-border-opacity))}.dark\:border-gray-850:is(.dark *){--tw-border-opacity: 1;border-color:rgb(38 38 38 / var(--tw-border-opacity))}.dark\:border-gray-850\/50:is(.dark *){border-color:#26262680}.dark\:border-white\/10:is(.dark *){border-color:#ffffff1a}.dark\:bg-black:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.dark\:bg-black\/90:is(.dark *){background-color:#000000e6}.dark\:bg-gray-100:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(236 236 236 / var(--tw-bg-opacity))}.dark\:bg-gray-300:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(205 205 205 / var(--tw-bg-opacity))}.dark\:bg-gray-400:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(180 180 180 / var(--tw-bg-opacity))}.dark\:bg-gray-600:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(103 103 103 / var(--tw-bg-opacity))}.dark\:bg-gray-700:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(78 78 78 / var(--tw-bg-opacity))}.dark\:bg-gray-700\/50:is(.dark *){background-color:#4e4e4e80}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(51 51 51 / var(--tw-bg-opacity))}.dark\:bg-gray-850:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity))}.dark\:bg-gray-850\/50:is(.dark *){background-color:#26262680}.dark\:bg-gray-900:is(.dark *){background-color:var(--color-gray-900, #171717)}.dark\:bg-gray-950:is(.dark *){background-color:var(--color-gray-950, #0d0d0d)}.dark\:bg-green-300:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(134 239 172 / var(--tw-bg-opacity))}.dark\:bg-indigo-400:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(129 140 248 / var(--tw-bg-opacity))}.dark\:bg-indigo-500:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(99 102 241 / var(--tw-bg-opacity))}.dark\:bg-indigo-500\/10:is(.dark *){background-color:#6366f11a}.dark\:bg-sky-300:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(125 211 252 / var(--tw-bg-opacity))}.dark\:bg-stone-700:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(68 64 60 / var(--tw-bg-opacity))}.dark\:bg-transparent:is(.dark *){background-color:transparent}.dark\:bg-white:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.dark\:bg-white\/20:is(.dark *){background-color:#fff3}.dark\:from-gray-900:is(.dark *){--tw-gradient-from: var(--color-gray-900, #171717) var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-gray-950:is(.dark *){--tw-gradient-from: var(--color-gray-950, #0d0d0d) var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:text-black:is(.dark *){--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.dark\:text-blue-200:is(.dark *){--tw-text-opacity: 1;color:rgb(191 219 254 / var(--tw-text-opacity))}.dark\:text-blue-950:is(.dark *){--tw-text-opacity: 1;color:rgb(23 37 84 / var(--tw-text-opacity))}.dark\:text-gray-100:is(.dark *){--tw-text-opacity: 1;color:rgb(236 236 236 / var(--tw-text-opacity))}.dark\:text-gray-200:is(.dark *){--tw-text-opacity: 1;color:rgb(227 227 227 / var(--tw-text-opacity))}.dark\:text-gray-300:is(.dark *){--tw-text-opacity: 1;color:rgb(205 205 205 / var(--tw-text-opacity))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(180 180 180 / var(--tw-text-opacity))}.dark\:text-gray-500:is(.dark *){--tw-text-opacity: 1;color:rgb(155 155 155 / var(--tw-text-opacity))}.dark\:text-gray-600:is(.dark *){--tw-text-opacity: 1;color:rgb(103 103 103 / var(--tw-text-opacity))}.dark\:text-gray-700:is(.dark *){--tw-text-opacity: 1;color:rgb(78 78 78 / var(--tw-text-opacity))}.dark\:text-gray-800:is(.dark *){--tw-text-opacity: 1;color:rgb(51 51 51 / var(--tw-text-opacity))}.dark\:text-gray-900:is(.dark *){color:var(--color-gray-900, #171717)}.dark\:text-green-200:is(.dark *){--tw-text-opacity: 1;color:rgb(187 247 208 / var(--tw-text-opacity))}.dark\:text-indigo-300:is(.dark *){--tw-text-opacity: 1;color:rgb(165 180 252 / var(--tw-text-opacity))}.dark\:text-red-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 202 202 / var(--tw-text-opacity))}.dark\:text-sky-200:is(.dark *){--tw-text-opacity: 1;color:rgb(186 230 253 / var(--tw-text-opacity))}.dark\:text-white:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.dark\:text-yellow-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 240 138 / var(--tw-text-opacity))}.dark\:outline-gray-600:is(.dark *){outline-color:#676767}.dark\:outline-gray-800:is(.dark *){outline-color:#333}.dark\:outline-red-800:is(.dark *){outline-color:#991b1b}.dark\:brightness-50:is(.dark *){--tw-brightness: brightness(.5);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.dark\:hover\:bg-gray-100:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(236 236 236 / var(--tw-bg-opacity))}.dark\:hover\:bg-gray-700:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(78 78 78 / var(--tw-bg-opacity))}.dark\:hover\:bg-gray-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(51 51 51 / var(--tw-bg-opacity))}.dark\:hover\:bg-gray-850:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity))}.dark\:hover\:bg-gray-900:hover:is(.dark *){background-color:var(--color-gray-900, #171717)}.dark\:hover\:bg-white:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.dark\:hover\:bg-white\/5:hover:is(.dark *){background-color:#ffffff0d}.dark\:hover\:text-gray-300:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(205 205 205 / var(--tw-text-opacity))}.dark\:hover\:text-white:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.dark\:disabled\:text-gray-500:disabled:is(.dark *){--tw-text-opacity: 1;color:rgb(155 155 155 / var(--tw-text-opacity))}.dark\:disabled\:text-gray-700:disabled:is(.dark *){--tw-text-opacity: 1;color:rgb(78 78 78 / var(--tw-text-opacity))}.dark\:hover\:disabled\:bg-transparent:disabled:hover:is(.dark *){background-color:transparent}.group:hover .dark\:group-hover\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(51 51 51 / var(--tw-bg-opacity))}.group:hover .dark\:group-hover\:bg-gray-950:is(.dark *){background-color:var(--color-gray-950, #0d0d0d)}.group\/item:hover .dark\:group-hover\/item\:text-white:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.group:hover .dark\:group-hover\:text-gray-100:is(.dark *){--tw-text-opacity: 1;color:rgb(236 236 236 / var(--tw-text-opacity))}.group:hover .dark\:group-hover\:text-gray-200:is(.dark *){--tw-text-opacity: 1;color:rgb(227 227 227 / var(--tw-text-opacity))}.group:hover .dark\:group-hover\:text-gray-500:is(.dark *){--tw-text-opacity: 1;color:rgb(155 155 155 / var(--tw-text-opacity))}.group:hover .dark\:group-hover\:text-white:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.dark\:data-\[selected\]\:bg-white[data-selected]:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.dark\:data-\[selected\]\:text-gray-900[data-selected]:is(.dark *){color:var(--color-gray-900, #171717)}.dark\:data-\[selected\]\:hover\:bg-white:hover[data-selected]:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}@media (min-width: 640px){.sm\:max-w-md{max-width:28rem}.sm\:flex-row{flex-direction:row}.sm\:justify-center{justify-content:center}.sm\:space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1.5rem * var(--tw-space-x-reverse));margin-left:calc(1.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}}@media (min-width: 768px){.md\:fixed{position:fixed}.md\:relative{position:relative}.md\:left-\[260px\]{left:260px}.md\:top-8{top:2rem}.md\:mb-0{margin-bottom:0}.md\:flex{display:flex}.md\:hidden{display:none}.md\:min-h-\[28rem\]{min-height:28rem}.md\:min-h-\[380px\]{min-height:380px}.md\:w-40{width:10rem}.md\:w-60{width:15rem}.md\:w-\[calc\(100\%-260px\)\]{width:calc(100% - 260px)}.md\:max-w-\[calc\(100\%-260px\)\]{max-width:calc(100% - 260px)}.md\:flex-none{flex:none}.md\:translate-x-\[260px\]{--tw-translate-x: 260px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.md\:snap-none{scroll-snap-type:none}.md\:flex-row{flex-direction:row}.md\:flex-col{flex-direction:column}.md\:items-start{align-items:flex-start}.md\:items-center{align-items:center}.md\:space-x-0>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(0px * var(--tw-space-x-reverse));margin-left:calc(0px * calc(1 - var(--tw-space-x-reverse)))}.md\:space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.md\:space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.md\:self-center{align-self:center}.md\:p-6{padding:1.5rem}.md\:px-0{padding-left:0;padding-right:0}.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}.md\:px-\[1rem\]{padding-left:1rem;padding-right:1rem}.md\:py-6{padding-top:1.5rem;padding-bottom:1.5rem}}@media (min-width: 1024px){.lg\:mt-0{margin-top:0}.lg\:flex{display:flex}.lg\:w-44{width:11rem}.lg\:flex-none{flex:none}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:flex-col{flex-direction:column}.lg\:space-x-0>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(0px * var(--tw-space-x-reverse));margin-left:calc(0px * calc(1 - var(--tw-space-x-reverse)))}.lg\:space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.lg\:space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.lg\:px-24{padding-left:6rem;padding-right:6rem}}@font-face{font-family:Arimo;src:url(/assets/fonts/Arimo-Variable.ttf);font-display:swap}@font-face{font-family:Mona Sans;src:url(/assets/fonts/Mona-Sans.woff2);font-display:swap}html{word-break:break-word}code{overflow-x:auto;width:auto}math{margin-top:1rem}.hljs{border-radius:.5rem}.markdown a{text-decoration-line:underline}ol>li{counter-increment:list-number;display:block;margin-bottom:0;margin-top:0;min-height:28px}.prose ol>li:before{content:counters(list-number,".") ".";padding-right:.5rem;color:var(--tw-prose-counters);font-weight:400}li p{display:inline}::-webkit-scrollbar-thumb{--tw-border-opacity: 1;background-color:#d9d9e3cc;border-color:rgba(255,255,255,var(--tw-border-opacity));border-radius:9999px;border-width:1px}::-webkit-scrollbar{height:.4rem;width:.4rem}::-webkit-scrollbar-track{background-color:transparent;border-radius:9999px}select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236B7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact;-moz-appearance:none;-webkit-appearance:none}.katex-mathml{display:none}.scrollbar-hidden:active::-webkit-scrollbar-thumb,.scrollbar-hidden:focus::-webkit-scrollbar-thumb,.scrollbar-hidden:hover::-webkit-scrollbar-thumb{visibility:visible}.scrollbar-hidden::-webkit-scrollbar-thumb{visibility:hidden}.scrollbar-hidden::-webkit-scrollbar-corner{display:none}.scrollbar-none::-webkit-scrollbar{display:none}.scrollbar-none::-webkit-scrollbar-corner{display:none}.scrollbar-none{-ms-overflow-style:none;scrollbar-width:none}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}.cm-editor{height:100%;width:100%}.cm-scroller:active::-webkit-scrollbar-thumb,.cm-scroller:focus::-webkit-scrollbar-thumb,.cm-scroller:hover::-webkit-scrollbar-thumb{visibility:visible}.cm-scroller::-webkit-scrollbar-thumb{visibility:hidden}.cm-scroller::-webkit-scrollbar-corner{display:none}.cm-editor.cm-focused{outline:none}.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1} diff --git a/build/_app/immutable/assets/_layout.ffa3d7c7.css b/build/_app/immutable/assets/_layout.ffa3d7c7.css deleted file mode 100644 index 038549b08..000000000 --- a/build/_app/immutable/assets/_layout.ffa3d7c7.css +++ /dev/null @@ -1 +0,0 @@ -.tabs.svelte-1vx7r9s::-webkit-scrollbar{display:none}.tabs.svelte-1vx7r9s{-ms-overflow-style:none;scrollbar-width:none}.scrollbar-hidden.svelte-141e0sl:active::-webkit-scrollbar-thumb,.scrollbar-hidden.svelte-141e0sl:focus::-webkit-scrollbar-thumb,.scrollbar-hidden.svelte-141e0sl:hover::-webkit-scrollbar-thumb{visibility:visible}.scrollbar-hidden.svelte-141e0sl::-webkit-scrollbar-thumb{visibility:hidden}.confetti-holder.svelte-15ksp55.svelte-15ksp55{position:relative}@keyframes svelte-15ksp55-rotate{0%{transform:skew(var(--skew)) rotate3d(var(--full-rotation))}to{transform:skew(var(--skew)) rotate3d(var(--rotation-xyz),calc(var(--rotation-deg) + 360deg))}}@keyframes svelte-15ksp55-translate{0%{opacity:1}8%{transform:translateY(calc(var(--translate-y) * .95)) translate(calc(var(--translate-x) * (var(--x-spread) * .9)));opacity:1}12%{transform:translateY(var(--translate-y)) translate(calc(var(--translate-x) * (var(--x-spread) * .95)));opacity:1}16%{transform:translateY(var(--translate-y)) translate(calc(var(--translate-x) * var(--x-spread)));opacity:1}to{transform:translateY(calc(var(--translate-y) + var(--fall-distance))) translate(var(--translate-x));opacity:0}}@keyframes svelte-15ksp55-no-gravity-translate{0%{opacity:1}to{transform:translateY(var(--translate-y)) translate(var(--translate-x));opacity:0}}.confetti.svelte-15ksp55.svelte-15ksp55{--translate-y:calc(-200px * var(--translate-y-multiplier));--translate-x:calc(200px * var(--translate-x-multiplier));position:absolute;height:calc(var(--size) * var(--scale));width:calc(var(--size) * var(--scale));animation:svelte-15ksp55-translate var(--transition-duration) var(--transition-delay) var(--transition-iteration-count) linear;opacity:0;pointer-events:none}.confetti.svelte-15ksp55.svelte-15ksp55:before{--full-rotation:var(--rotation-xyz), var(--rotation-deg);content:"";display:block;width:100%;height:100%;background:var(--color);background-size:contain;transform:skew(var(--skew)) rotate3d(var(--full-rotation));animation:svelte-15ksp55-rotate var(--transition-duration) var(--transition-delay) var(--transition-iteration-count) linear}.rounded.svelte-15ksp55 .confetti.svelte-15ksp55:before{border-radius:50%}.cone.svelte-15ksp55 .confetti.svelte-15ksp55{--translate-x:calc(200px * var(--translate-y-multiplier) * var(--translate-x-multiplier))}.no-gravity.svelte-15ksp55 .confetti.svelte-15ksp55{animation-name:svelte-15ksp55-no-gravity-translate;animation-timing-function:ease-out}@media (prefers-reduced-motion){.reduced-motion.svelte-15ksp55 .confetti.svelte-15ksp55,.reduced-motion.svelte-15ksp55 .confetti.svelte-15ksp55:before{animation:none}}@keyframes svelte-19023qi-l{to{clip-path:inset(0 -1ch 0 0)}} diff --git a/build/_app/immutable/assets/_page.0c55a7ab.css b/build/_app/immutable/assets/_page.0c55a7ab.css deleted file mode 100644 index 2dfdb89c0..000000000 --- a/build/_app/immutable/assets/_page.0c55a7ab.css +++ /dev/null @@ -1 +0,0 @@ -input.svelte-1vx7r9s::-webkit-outer-spin-button,input.svelte-1vx7r9s::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.font-mona.svelte-3g4avz{font-family:Mona Sans}.scrollbar-hidden.svelte-3g4avz::-webkit-scrollbar{display:none}.scrollbar-hidden.svelte-3g4avz{-ms-overflow-style:none;scrollbar-width:none} diff --git a/build/_app/immutable/assets/_page.4dfbfe89.css b/build/_app/immutable/assets/_page.4dfbfe89.css deleted file mode 100644 index fdda2c95d..000000000 --- a/build/_app/immutable/assets/_page.4dfbfe89.css +++ /dev/null @@ -1 +0,0 @@ -.font-mona.svelte-zxai24{font-family:Mona Sans,-apple-system,Arimo,ui-sans-serif,system-ui,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,Helvetica Neue,Arial,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"} diff --git a/build/_app/immutable/assets/_page.b0806465.css b/build/_app/immutable/assets/_page.b0806465.css deleted file mode 100644 index 0f53198d7..000000000 --- a/build/_app/immutable/assets/_page.b0806465.css +++ /dev/null @@ -1 +0,0 @@ -.scrollbar-hidden.svelte-8lkua9::-webkit-scrollbar{display:none}.scrollbar-hidden.svelte-8lkua9{-ms-overflow-style:none;scrollbar-width:none} diff --git a/build/_app/immutable/assets/_page.c242e6f1.css b/build/_app/immutable/assets/_page.c242e6f1.css deleted file mode 100644 index 69fb1548e..000000000 --- a/build/_app/immutable/assets/_page.c242e6f1.css +++ /dev/null @@ -1 +0,0 @@ -input.svelte-1vx7r9s::-webkit-outer-spin-button,input.svelte-1vx7r9s::-webkit-inner-spin-button{-webkit-appearance:none;margin:0} diff --git a/build/_app/immutable/assets/dayjs.beb6c5d8.css b/build/_app/immutable/assets/dayjs.beb6c5d8.css deleted file mode 100644 index a5468e6c0..000000000 --- a/build/_app/immutable/assets/dayjs.beb6c5d8.css +++ /dev/null @@ -1 +0,0 @@ -.modal-content.svelte-fq1rhy{animation:svelte-fq1rhy-scaleUp .1s ease-out forwards}@keyframes svelte-fq1rhy-scaleUp{0%{transform:scale(.985);opacity:0}to{transform:scale(1);opacity:1}} diff --git a/build/_app/immutable/chunks/AddFilesPlaceholder.cd6db517.js b/build/_app/immutable/chunks/AddFilesPlaceholder.cd6db517.js deleted file mode 100644 index fa8173f20..000000000 --- a/build/_app/immutable/chunks/AddFilesPlaceholder.cd6db517.js +++ /dev/null @@ -1,2 +0,0 @@ -import{s as F,F as I,f as p,a as b,l as A,g as v,S as w,c as k,h as C,m as D,d,j as x,i as u,w as $,n as g,G as S,H as V,I as j,Q as y,A as E}from"./scheduler.2ec89978.js";import{S as q,i as z,a as G,t as H}from"./index.276f3600.js";function P(o){let e,r=o[0].t("Drop any files here to add to the conversation")+"",n;return{c(){e=p("div"),n=A(r),this.h()},l(s){e=v(s,"DIV",{class:!0});var a=C(e);n=D(a,r),a.forEach(d),this.h()},h(){x(e,"class","mt-2 text-center text-sm dark:text-gray-200 w-full")},m(s,a){u(s,e,a),$(e,n)},p(s,a){a&1&&r!==(r=s[0].t("Drop any files here to add to the conversation")+"")&&g(n,r)},d(s){s&&d(e)}}}function Q(o){let e,r="📄",n,s,a=o[0].t("Add Files")+"",_,c,f;const h=o[3].default,m=I(h,o,o[2],null),i=m||P(o);return{c(){e=p("div"),e.textContent=r,n=b(),s=p("div"),_=A(a),c=b(),i&&i.c(),this.h()},l(t){e=v(t,"DIV",{class:!0,"data-svelte-h":!0}),w(e)!=="svelte-g2aj7u"&&(e.textContent=r),n=k(t),s=v(t,"DIV",{class:!0});var l=C(s);_=D(l,a),l.forEach(d),c=k(t),i&&i.l(t),this.h()},h(){x(e,"class","text-center text-6xl mb-3"),x(s,"class","text-center dark:text-white text-2xl font-semibold z-50")},m(t,l){u(t,e,l),u(t,n,l),u(t,s,l),$(s,_),u(t,c,l),i&&i.m(t,l),f=!0},p(t,[l]){(!f||l&1)&&a!==(a=t[0].t("Add Files")+"")&&g(_,a),m?m.p&&(!f||l&4)&&S(m,h,t,t[2],f?j(h,t[2],l,null):V(t[2]),null):i&&i.p&&(!f||l&1)&&i.p(t,f?l:-1)},i(t){f||(G(i,t),f=!0)},o(t){H(i,t),f=!1},d(t){t&&(d(e),d(n),d(s),d(c)),i&&i.d(t)}}}function B(o,e,r){let n,{$$slots:s={},$$scope:a}=e;const _=y("i18n");return E(o,_,c=>r(0,n=c)),o.$$set=c=>{"$$scope"in c&&r(2,a=c.$$scope)},[n,_,a,s]}class L extends q{constructor(e){super(),z(this,e,B,Q,F,{})}}export{L as A}; -//# sourceMappingURL=AddFilesPlaceholder.cd6db517.js.map diff --git a/build/_app/immutable/chunks/AddFilesPlaceholder.cd6db517.js.map b/build/_app/immutable/chunks/AddFilesPlaceholder.cd6db517.js.map deleted file mode 100644 index cc3c8b9be..000000000 --- a/build/_app/immutable/chunks/AddFilesPlaceholder.cd6db517.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AddFilesPlaceholder.cd6db517.js","sources":["../../../../../../src/lib/components/AddFilesPlaceholder.svelte"],"sourcesContent":["\n\n
📄
\n
{$i18n.t('Add Files')}
\n\n
\n\t\t{$i18n.t('Drop any files here to add to the conversation')}\n\t
\n\n"],"names":["ctx","insert_hydration","target","div","anchor","set_data","t","t_value","div0","div1","t2","t2_value","i18n","getContext"],"mappings":"+PAUGA,EAAK,CAAA,EAAC,EAAE,gDAAgD,EAAA,kMADzDC,EAEIC,EAAAC,EAAAC,CAAA,6BADHJ,EAAK,CAAA,EAAC,EAAE,gDAAgD,EAAA,KAAAK,EAAAC,EAAAC,CAAA,mDAJWP,EAAK,CAAA,EAAC,EAAE,WAAW,EAAA,mcADzFC,EAAgDC,EAAAM,EAAAJ,CAAA,WAChDH,EAAgGC,EAAAO,EAAAL,CAAA,+DAA1BJ,EAAK,CAAA,EAAC,EAAE,WAAW,EAAA,KAAAK,EAAAK,EAAAC,CAAA,gPAJlFC,EAAOC,EAAW,MAAM"} \ No newline at end of file diff --git a/build/_app/immutable/chunks/AdvancedParams.49eb3c20.js b/build/_app/immutable/chunks/AdvancedParams.49eb3c20.js deleted file mode 100644 index 02a0c1fa0..000000000 --- a/build/_app/immutable/chunks/AdvancedParams.49eb3c20.js +++ /dev/null @@ -1,2 +0,0 @@ -import{s as Ln,f as c,l as V,a as k,g as _,h as d,m as N,d as f,c as y,j as u,i as w,w as r,y as E,n as T,r as gn,z as re,W as Fn,Q as Zn,A as Qn,R as I,$ as S}from"./scheduler.2ec89978.js";import{S as Wn,i as Gn}from"./index.276f3600.js";function Hn(a){let e,l=a[2].t("Custom")+"",t;return{c(){e=c("span"),t=V(l),this.h()},l(s){e=_(s,"SPAN",{class:!0});var n=d(e);t=N(n,l),n.forEach(f),this.h()},h(){u(e,"class","ml-2 self-center")},m(s,n){w(s,e,n),r(e,t)},p(s,n){n[0]&4&&l!==(l=s[2].t("Custom")+"")&&T(t,l)},d(s){s&&f(e)}}}function Jn(a){let e,l=a[2].t("Default")+"",t;return{c(){e=c("span"),t=V(l),this.h()},l(s){e=_(s,"SPAN",{class:!0});var n=d(e);t=N(n,l),n.forEach(f),this.h()},h(){u(e,"class","ml-2 self-center")},m(s,n){w(s,e,n),r(e,t)},p(s,n){n[0]&4&&l!==(l=s[2].t("Default")+"")&&T(t,l)},d(s){s&&f(e)}}}function wn(a){let e,l,t,s,n;return{c(){e=c("div"),l=c("div"),t=c("input"),this.h()},l(o){e=_(o,"DIV",{class:!0});var i=d(e);l=_(i,"DIV",{class:!0});var b=d(l);t=_(b,"INPUT",{class:!0,type:!0,placeholder:!0,autocomplete:!0,min:!0}),b.forEach(f),i.forEach(f),this.h()},h(){u(t,"class","w-full rounded-lg py-2 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none"),u(t,"type","number"),u(t,"placeholder","Enter Seed"),u(t,"autocomplete","off"),u(t,"min","0"),u(l,"class","flex-1"),u(e,"class","flex mt-0.5 space-x-2")},m(o,i){w(o,e,i),r(e,l),r(l,t),I(t,a[0].seed),s||(n=E(t,"input",a[5]),s=!0)},p(o,i){i[0]&1&&S(t.value)!==o[0].seed&&I(t,o[0].seed)},d(o){o&&f(e),s=!1,n()}}}function Xn(a){let e,l=a[2].t("Custom")+"",t;return{c(){e=c("span"),t=V(l),this.h()},l(s){e=_(s,"SPAN",{class:!0});var n=d(e);t=N(n,l),n.forEach(f),this.h()},h(){u(e,"class","ml-2 self-center")},m(s,n){w(s,e,n),r(e,t)},p(s,n){n[0]&4&&l!==(l=s[2].t("Custom")+"")&&T(t,l)},d(s){s&&f(e)}}}function Yn(a){let e,l=a[2].t("Default")+"",t;return{c(){e=c("span"),t=V(l),this.h()},l(s){e=_(s,"SPAN",{class:!0});var n=d(e);t=N(n,l),n.forEach(f),this.h()},h(){u(e,"class","ml-2 self-center")},m(s,n){w(s,e,n),r(e,t)},p(s,n){n[0]&4&&l!==(l=s[2].t("Default")+"")&&T(t,l)},d(s){s&&f(e)}}}function Vn(a){let e,l,t,s,n,o;return{c(){e=c("div"),l=c("div"),t=c("input"),this.h()},l(i){e=_(i,"DIV",{class:!0});var b=d(e);l=_(b,"DIV",{class:!0});var p=d(l);t=_(p,"INPUT",{class:!0,type:!0,placeholder:!0,autocomplete:!0}),p.forEach(f),b.forEach(f),this.h()},h(){u(t,"class","w-full rounded-lg py-2 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none"),u(t,"type","text"),u(t,"placeholder",s=a[2].t("Enter stop sequence")),u(t,"autocomplete","off"),u(l,"class","flex-1"),u(e,"class","flex mt-0.5 space-x-2")},m(i,b){w(i,e,b),r(e,l),r(l,t),I(t,a[0].stop),n||(o=E(t,"input",a[7]),n=!0)},p(i,b){b[0]&4&&s!==(s=i[2].t("Enter stop sequence"))&&u(t,"placeholder",s),b[0]&1&&t.value!==i[0].stop&&I(t,i[0].stop)},d(i){i&&f(e),n=!1,o()}}}function xn(a){let e,l=a[2].t("Custom")+"",t;return{c(){e=c("span"),t=V(l),this.h()},l(s){e=_(s,"SPAN",{class:!0});var n=d(e);t=N(n,l),n.forEach(f),this.h()},h(){u(e,"class","ml-2 self-center")},m(s,n){w(s,e,n),r(e,t)},p(s,n){n[0]&4&&l!==(l=s[2].t("Custom")+"")&&T(t,l)},d(s){s&&f(e)}}}function $n(a){let e,l=a[2].t("Default")+"",t;return{c(){e=c("span"),t=V(l),this.h()},l(s){e=_(s,"SPAN",{class:!0});var n=d(e);t=N(n,l),n.forEach(f),this.h()},h(){u(e,"class","ml-2 self-center")},m(s,n){w(s,e,n),r(e,t)},p(s,n){n[0]&4&&l!==(l=s[2].t("Default")+"")&&T(t,l)},d(s){s&&f(e)}}}function Nn(a){let e,l,t,s,n,o,i,b;return{c(){e=c("div"),l=c("div"),t=c("input"),s=k(),n=c("div"),o=c("input"),this.h()},l(p){e=_(p,"DIV",{class:!0});var h=d(e);l=_(h,"DIV",{class:!0});var D=d(l);t=_(D,"INPUT",{id:!0,type:!0,min:!0,max:!0,step:!0,class:!0}),D.forEach(f),s=y(h),n=_(h,"DIV",{});var g=d(n);o=_(g,"INPUT",{type:!0,class:!0,min:!0,max:!0,step:!0}),g.forEach(f),h.forEach(f),this.h()},h(){u(t,"id","steps-range"),u(t,"type","range"),u(t,"min","0"),u(t,"max","1"),u(t,"step","0.05"),u(t,"class","w-full h-2 rounded-lg appearance-none cursor-pointer dark:bg-gray-700"),u(l,"class","flex-1"),u(o,"type","number"),u(o,"class","bg-transparent text-center w-14"),u(o,"min","0"),u(o,"max","1"),u(o,"step","any"),u(e,"class","flex mt-0.5 space-x-2")},m(p,h){w(p,e,h),r(e,l),r(l,t),I(t,a[0].temperature),r(e,s),r(e,n),r(n,o),I(o,a[0].temperature),i||(b=[E(t,"change",a[9]),E(t,"input",a[9]),E(o,"input",a[10])],i=!0)},p(p,h){h[0]&1&&I(t,p[0].temperature),h[0]&1&&S(o.value)!==p[0].temperature&&I(o,p[0].temperature)},d(p){p&&f(e),i=!1,re(b)}}}function eu(a){let e,l=a[2].t("Custom")+"",t;return{c(){e=c("span"),t=V(l),this.h()},l(s){e=_(s,"SPAN",{class:!0});var n=d(e);t=N(n,l),n.forEach(f),this.h()},h(){u(e,"class","ml-2 self-center")},m(s,n){w(s,e,n),r(e,t)},p(s,n){n[0]&4&&l!==(l=s[2].t("Custom")+"")&&T(t,l)},d(s){s&&f(e)}}}function tu(a){let e,l=a[2].t("Default")+"",t;return{c(){e=c("span"),t=V(l),this.h()},l(s){e=_(s,"SPAN",{class:!0});var n=d(e);t=N(n,l),n.forEach(f),this.h()},h(){u(e,"class","ml-2 self-center")},m(s,n){w(s,e,n),r(e,t)},p(s,n){n[0]&4&&l!==(l=s[2].t("Default")+"")&&T(t,l)},d(s){s&&f(e)}}}function Tn(a){let e,l,t,s,n,o,i,b;return{c(){e=c("div"),l=c("div"),t=c("input"),s=k(),n=c("div"),o=c("input"),this.h()},l(p){e=_(p,"DIV",{class:!0});var h=d(e);l=_(h,"DIV",{class:!0});var D=d(l);t=_(D,"INPUT",{id:!0,type:!0,min:!0,max:!0,step:!0,class:!0}),D.forEach(f),s=y(h),n=_(h,"DIV",{});var g=d(n);o=_(g,"INPUT",{type:!0,class:!0,min:!0,max:!0,step:!0}),g.forEach(f),h.forEach(f),this.h()},h(){u(t,"id","steps-range"),u(t,"type","range"),u(t,"min","0"),u(t,"max","2"),u(t,"step","1"),u(t,"class","w-full h-2 rounded-lg appearance-none cursor-pointer dark:bg-gray-700"),u(l,"class","flex-1"),u(o,"type","number"),u(o,"class","bg-transparent text-center w-14"),u(o,"min","0"),u(o,"max","2"),u(o,"step","1"),u(e,"class","flex mt-0.5 space-x-2")},m(p,h){w(p,e,h),r(e,l),r(l,t),I(t,a[0].mirostat),r(e,s),r(e,n),r(n,o),I(o,a[0].mirostat),i||(b=[E(t,"change",a[12]),E(t,"input",a[12]),E(o,"input",a[13])],i=!0)},p(p,h){h[0]&1&&I(t,p[0].mirostat),h[0]&1&&S(o.value)!==p[0].mirostat&&I(o,p[0].mirostat)},d(p){p&&f(e),i=!1,re(b)}}}function lu(a){let e,l=a[2].t("Custom")+"",t;return{c(){e=c("span"),t=V(l),this.h()},l(s){e=_(s,"SPAN",{class:!0});var n=d(e);t=N(n,l),n.forEach(f),this.h()},h(){u(e,"class","ml-2 self-center")},m(s,n){w(s,e,n),r(e,t)},p(s,n){n[0]&4&&l!==(l=s[2].t("Custom")+"")&&T(t,l)},d(s){s&&f(e)}}}function su(a){let e,l=a[2].t("Default")+"",t;return{c(){e=c("span"),t=V(l),this.h()},l(s){e=_(s,"SPAN",{class:!0});var n=d(e);t=N(n,l),n.forEach(f),this.h()},h(){u(e,"class","ml-2 self-center")},m(s,n){w(s,e,n),r(e,t)},p(s,n){n[0]&4&&l!==(l=s[2].t("Default")+"")&&T(t,l)},d(s){s&&f(e)}}}function Pn(a){let e,l,t,s,n,o,i,b;return{c(){e=c("div"),l=c("div"),t=c("input"),s=k(),n=c("div"),o=c("input"),this.h()},l(p){e=_(p,"DIV",{class:!0});var h=d(e);l=_(h,"DIV",{class:!0});var D=d(l);t=_(D,"INPUT",{id:!0,type:!0,min:!0,max:!0,step:!0,class:!0}),D.forEach(f),s=y(h),n=_(h,"DIV",{});var g=d(n);o=_(g,"INPUT",{type:!0,class:!0,min:!0,max:!0,step:!0}),g.forEach(f),h.forEach(f),this.h()},h(){u(t,"id","steps-range"),u(t,"type","range"),u(t,"min","0"),u(t,"max","1"),u(t,"step","0.05"),u(t,"class","w-full h-2 rounded-lg appearance-none cursor-pointer dark:bg-gray-700"),u(l,"class","flex-1"),u(o,"type","number"),u(o,"class","bg-transparent text-center w-14"),u(o,"min","0"),u(o,"max","1"),u(o,"step","any"),u(e,"class","flex mt-0.5 space-x-2")},m(p,h){w(p,e,h),r(e,l),r(l,t),I(t,a[0].mirostat_eta),r(e,s),r(e,n),r(n,o),I(o,a[0].mirostat_eta),i||(b=[E(t,"change",a[15]),E(t,"input",a[15]),E(o,"input",a[16])],i=!0)},p(p,h){h[0]&1&&I(t,p[0].mirostat_eta),h[0]&1&&S(o.value)!==p[0].mirostat_eta&&I(o,p[0].mirostat_eta)},d(p){p&&f(e),i=!1,re(b)}}}function nu(a){let e,l=a[2].t("Custom")+"",t;return{c(){e=c("span"),t=V(l),this.h()},l(s){e=_(s,"SPAN",{class:!0});var n=d(e);t=N(n,l),n.forEach(f),this.h()},h(){u(e,"class","ml-2 self-center")},m(s,n){w(s,e,n),r(e,t)},p(s,n){n[0]&4&&l!==(l=s[2].t("Custom")+"")&&T(t,l)},d(s){s&&f(e)}}}function uu(a){let e,l=a[2].t("Default")+"",t;return{c(){e=c("span"),t=V(l),this.h()},l(s){e=_(s,"SPAN",{class:!0});var n=d(e);t=N(n,l),n.forEach(f),this.h()},h(){u(e,"class","ml-2 self-center")},m(s,n){w(s,e,n),r(e,t)},p(s,n){n[0]&4&&l!==(l=s[2].t("Default")+"")&&T(t,l)},d(s){s&&f(e)}}}function Un(a){let e,l,t,s,n,o,i,b;return{c(){e=c("div"),l=c("div"),t=c("input"),s=k(),n=c("div"),o=c("input"),this.h()},l(p){e=_(p,"DIV",{class:!0});var h=d(e);l=_(h,"DIV",{class:!0});var D=d(l);t=_(D,"INPUT",{id:!0,type:!0,min:!0,max:!0,step:!0,class:!0}),D.forEach(f),s=y(h),n=_(h,"DIV",{});var g=d(n);o=_(g,"INPUT",{type:!0,class:!0,min:!0,max:!0,step:!0}),g.forEach(f),h.forEach(f),this.h()},h(){u(t,"id","steps-range"),u(t,"type","range"),u(t,"min","0"),u(t,"max","10"),u(t,"step","0.5"),u(t,"class","w-full h-2 rounded-lg appearance-none cursor-pointer dark:bg-gray-700"),u(l,"class","flex-1"),u(o,"type","number"),u(o,"class","bg-transparent text-center w-14"),u(o,"min","0"),u(o,"max","10"),u(o,"step","any"),u(e,"class","flex mt-0.5 space-x-2")},m(p,h){w(p,e,h),r(e,l),r(l,t),I(t,a[0].mirostat_tau),r(e,s),r(e,n),r(n,o),I(o,a[0].mirostat_tau),i||(b=[E(t,"change",a[18]),E(t,"input",a[18]),E(o,"input",a[19])],i=!0)},p(p,h){h[0]&1&&I(t,p[0].mirostat_tau),h[0]&1&&S(o.value)!==p[0].mirostat_tau&&I(o,p[0].mirostat_tau)},d(p){p&&f(e),i=!1,re(b)}}}function au(a){let e,l=a[2].t("Custom")+"",t;return{c(){e=c("span"),t=V(l),this.h()},l(s){e=_(s,"SPAN",{class:!0});var n=d(e);t=N(n,l),n.forEach(f),this.h()},h(){u(e,"class","ml-2 self-center")},m(s,n){w(s,e,n),r(e,t)},p(s,n){n[0]&4&&l!==(l=s[2].t("Custom")+"")&&T(t,l)},d(s){s&&f(e)}}}function ru(a){let e,l=a[2].t("Default")+"",t;return{c(){e=c("span"),t=V(l),this.h()},l(s){e=_(s,"SPAN",{class:!0});var n=d(e);t=N(n,l),n.forEach(f),this.h()},h(){u(e,"class","ml-2 self-center")},m(s,n){w(s,e,n),r(e,t)},p(s,n){n[0]&4&&l!==(l=s[2].t("Default")+"")&&T(t,l)},d(s){s&&f(e)}}}function Sn(a){let e,l,t,s,n,o,i,b;return{c(){e=c("div"),l=c("div"),t=c("input"),s=k(),n=c("div"),o=c("input"),this.h()},l(p){e=_(p,"DIV",{class:!0});var h=d(e);l=_(h,"DIV",{class:!0});var D=d(l);t=_(D,"INPUT",{id:!0,type:!0,min:!0,max:!0,step:!0,class:!0}),D.forEach(f),s=y(h),n=_(h,"DIV",{});var g=d(n);o=_(g,"INPUT",{type:!0,class:!0,min:!0,max:!0,step:!0}),g.forEach(f),h.forEach(f),this.h()},h(){u(t,"id","steps-range"),u(t,"type","range"),u(t,"min","0"),u(t,"max","100"),u(t,"step","0.5"),u(t,"class","w-full h-2 rounded-lg appearance-none cursor-pointer dark:bg-gray-700"),u(l,"class","flex-1"),u(o,"type","number"),u(o,"class","bg-transparent text-center w-14"),u(o,"min","0"),u(o,"max","100"),u(o,"step","any"),u(e,"class","flex mt-0.5 space-x-2")},m(p,h){w(p,e,h),r(e,l),r(l,t),I(t,a[0].top_k),r(e,s),r(e,n),r(n,o),I(o,a[0].top_k),i||(b=[E(t,"change",a[21]),E(t,"input",a[21]),E(o,"input",a[22])],i=!0)},p(p,h){h[0]&1&&I(t,p[0].top_k),h[0]&1&&S(o.value)!==p[0].top_k&&I(o,p[0].top_k)},d(p){p&&f(e),i=!1,re(b)}}}function iu(a){let e,l=a[2].t("Custom")+"",t;return{c(){e=c("span"),t=V(l),this.h()},l(s){e=_(s,"SPAN",{class:!0});var n=d(e);t=N(n,l),n.forEach(f),this.h()},h(){u(e,"class","ml-2 self-center")},m(s,n){w(s,e,n),r(e,t)},p(s,n){n[0]&4&&l!==(l=s[2].t("Custom")+"")&&T(t,l)},d(s){s&&f(e)}}}function fu(a){let e,l=a[2].t("Default")+"",t;return{c(){e=c("span"),t=V(l),this.h()},l(s){e=_(s,"SPAN",{class:!0});var n=d(e);t=N(n,l),n.forEach(f),this.h()},h(){u(e,"class","ml-2 self-center")},m(s,n){w(s,e,n),r(e,t)},p(s,n){n[0]&4&&l!==(l=s[2].t("Default")+"")&&T(t,l)},d(s){s&&f(e)}}}function An(a){let e,l,t,s,n,o,i,b;return{c(){e=c("div"),l=c("div"),t=c("input"),s=k(),n=c("div"),o=c("input"),this.h()},l(p){e=_(p,"DIV",{class:!0});var h=d(e);l=_(h,"DIV",{class:!0});var D=d(l);t=_(D,"INPUT",{id:!0,type:!0,min:!0,max:!0,step:!0,class:!0}),D.forEach(f),s=y(h),n=_(h,"DIV",{});var g=d(n);o=_(g,"INPUT",{type:!0,class:!0,min:!0,max:!0,step:!0}),g.forEach(f),h.forEach(f),this.h()},h(){u(t,"id","steps-range"),u(t,"type","range"),u(t,"min","0"),u(t,"max","1"),u(t,"step","0.05"),u(t,"class","w-full h-2 rounded-lg appearance-none cursor-pointer dark:bg-gray-700"),u(l,"class","flex-1"),u(o,"type","number"),u(o,"class","bg-transparent text-center w-14"),u(o,"min","0"),u(o,"max","1"),u(o,"step","any"),u(e,"class","flex mt-0.5 space-x-2")},m(p,h){w(p,e,h),r(e,l),r(l,t),I(t,a[0].top_p),r(e,s),r(e,n),r(n,o),I(o,a[0].top_p),i||(b=[E(t,"change",a[24]),E(t,"input",a[24]),E(o,"input",a[25])],i=!0)},p(p,h){h[0]&1&&I(t,p[0].top_p),h[0]&1&&S(o.value)!==p[0].top_p&&I(o,p[0].top_p)},d(p){p&&f(e),i=!1,re(b)}}}function ou(a){let e,l=a[2].t("Custom")+"",t;return{c(){e=c("span"),t=V(l),this.h()},l(s){e=_(s,"SPAN",{class:!0});var n=d(e);t=N(n,l),n.forEach(f),this.h()},h(){u(e,"class","ml-2 self-center")},m(s,n){w(s,e,n),r(e,t)},p(s,n){n[0]&4&&l!==(l=s[2].t("Custom")+"")&&T(t,l)},d(s){s&&f(e)}}}function cu(a){let e,l=a[2].t("Default")+"",t;return{c(){e=c("span"),t=V(l),this.h()},l(s){e=_(s,"SPAN",{class:!0});var n=d(e);t=N(n,l),n.forEach(f),this.h()},h(){u(e,"class","ml-2 self-center")},m(s,n){w(s,e,n),r(e,t)},p(s,n){n[0]&4&&l!==(l=s[2].t("Default")+"")&&T(t,l)},d(s){s&&f(e)}}}function Cn(a){let e,l,t,s,n,o,i,b;return{c(){e=c("div"),l=c("div"),t=c("input"),s=k(),n=c("div"),o=c("input"),this.h()},l(p){e=_(p,"DIV",{class:!0});var h=d(e);l=_(h,"DIV",{class:!0});var D=d(l);t=_(D,"INPUT",{id:!0,type:!0,min:!0,max:!0,step:!0,class:!0}),D.forEach(f),s=y(h),n=_(h,"DIV",{});var g=d(n);o=_(g,"INPUT",{type:!0,class:!0,min:!0,max:!0,step:!0}),g.forEach(f),h.forEach(f),this.h()},h(){u(t,"id","steps-range"),u(t,"type","range"),u(t,"min","0"),u(t,"max","2"),u(t,"step","0.05"),u(t,"class","w-full h-2 rounded-lg appearance-none cursor-pointer dark:bg-gray-700"),u(l,"class","flex-1"),u(o,"type","number"),u(o,"class","bg-transparent text-center w-14"),u(o,"min","0"),u(o,"max","2"),u(o,"step","any"),u(e,"class","flex mt-0.5 space-x-2")},m(p,h){w(p,e,h),r(e,l),r(l,t),I(t,a[0].frequency_penalty),r(e,s),r(e,n),r(n,o),I(o,a[0].frequency_penalty),i||(b=[E(t,"change",a[27]),E(t,"input",a[27]),E(o,"input",a[28])],i=!0)},p(p,h){h[0]&1&&I(t,p[0].frequency_penalty),h[0]&1&&S(o.value)!==p[0].frequency_penalty&&I(o,p[0].frequency_penalty)},d(p){p&&f(e),i=!1,re(b)}}}function _u(a){let e,l=a[2].t("Custom")+"",t;return{c(){e=c("span"),t=V(l),this.h()},l(s){e=_(s,"SPAN",{class:!0});var n=d(e);t=N(n,l),n.forEach(f),this.h()},h(){u(e,"class","ml-2 self-center")},m(s,n){w(s,e,n),r(e,t)},p(s,n){n[0]&4&&l!==(l=s[2].t("Custom")+"")&&T(t,l)},d(s){s&&f(e)}}}function pu(a){let e,l=a[2].t("Default")+"",t;return{c(){e=c("span"),t=V(l),this.h()},l(s){e=_(s,"SPAN",{class:!0});var n=d(e);t=N(n,l),n.forEach(f),this.h()},h(){u(e,"class","ml-2 self-center")},m(s,n){w(s,e,n),r(e,t)},p(s,n){n[0]&4&&l!==(l=s[2].t("Default")+"")&&T(t,l)},d(s){s&&f(e)}}}function jn(a){let e,l,t,s,n,o,i,b;return{c(){e=c("div"),l=c("div"),t=c("input"),s=k(),n=c("div"),o=c("input"),this.h()},l(p){e=_(p,"DIV",{class:!0});var h=d(e);l=_(h,"DIV",{class:!0});var D=d(l);t=_(D,"INPUT",{id:!0,type:!0,min:!0,max:!0,step:!0,class:!0}),D.forEach(f),s=y(h),n=_(h,"DIV",{});var g=d(n);o=_(g,"INPUT",{type:!0,class:!0,min:!0,max:!0,step:!0}),g.forEach(f),h.forEach(f),this.h()},h(){u(t,"id","steps-range"),u(t,"type","range"),u(t,"min","-1"),u(t,"max","128"),u(t,"step","1"),u(t,"class","w-full h-2 rounded-lg appearance-none cursor-pointer dark:bg-gray-700"),u(l,"class","flex-1"),u(o,"type","number"),u(o,"class","bg-transparent text-center w-14"),u(o,"min","-1"),u(o,"max","128"),u(o,"step","1"),u(e,"class","flex mt-0.5 space-x-2")},m(p,h){w(p,e,h),r(e,l),r(l,t),I(t,a[0].repeat_last_n),r(e,s),r(e,n),r(n,o),I(o,a[0].repeat_last_n),i||(b=[E(t,"change",a[30]),E(t,"input",a[30]),E(o,"input",a[31])],i=!0)},p(p,h){h[0]&1&&I(t,p[0].repeat_last_n),h[0]&1&&S(o.value)!==p[0].repeat_last_n&&I(o,p[0].repeat_last_n)},d(p){p&&f(e),i=!1,re(b)}}}function du(a){let e,l=a[2].t("Custom")+"",t;return{c(){e=c("span"),t=V(l),this.h()},l(s){e=_(s,"SPAN",{class:!0});var n=d(e);t=N(n,l),n.forEach(f),this.h()},h(){u(e,"class","ml-2 self-center")},m(s,n){w(s,e,n),r(e,t)},p(s,n){n[0]&4&&l!==(l=s[2].t("Custom")+"")&&T(t,l)},d(s){s&&f(e)}}}function hu(a){let e,l=a[2].t("Default")+"",t;return{c(){e=c("span"),t=V(l),this.h()},l(s){e=_(s,"SPAN",{class:!0});var n=d(e);t=N(n,l),n.forEach(f),this.h()},h(){u(e,"class","ml-2 self-center")},m(s,n){w(s,e,n),r(e,t)},p(s,n){n[0]&4&&l!==(l=s[2].t("Default")+"")&&T(t,l)},d(s){s&&f(e)}}}function On(a){let e,l,t,s,n,o,i,b;return{c(){e=c("div"),l=c("div"),t=c("input"),s=k(),n=c("div"),o=c("input"),this.h()},l(p){e=_(p,"DIV",{class:!0});var h=d(e);l=_(h,"DIV",{class:!0});var D=d(l);t=_(D,"INPUT",{id:!0,type:!0,min:!0,max:!0,step:!0,class:!0}),D.forEach(f),s=y(h),n=_(h,"DIV",{});var g=d(n);o=_(g,"INPUT",{type:!0,class:!0,min:!0,max:!0,step:!0}),g.forEach(f),h.forEach(f),this.h()},h(){u(t,"id","steps-range"),u(t,"type","range"),u(t,"min","0"),u(t,"max","2"),u(t,"step","0.05"),u(t,"class","w-full h-2 rounded-lg appearance-none cursor-pointer dark:bg-gray-700"),u(l,"class","flex-1"),u(o,"type","number"),u(o,"class","bg-transparent text-center w-14"),u(o,"min","0"),u(o,"max","2"),u(o,"step","any"),u(e,"class","flex mt-0.5 space-x-2")},m(p,h){w(p,e,h),r(e,l),r(l,t),I(t,a[0].tfs_z),r(e,s),r(e,n),r(n,o),I(o,a[0].tfs_z),i||(b=[E(t,"change",a[33]),E(t,"input",a[33]),E(o,"input",a[34])],i=!0)},p(p,h){h[0]&1&&I(t,p[0].tfs_z),h[0]&1&&S(o.value)!==p[0].tfs_z&&I(o,p[0].tfs_z)},d(p){p&&f(e),i=!1,re(b)}}}function mu(a){let e,l=a[2].t("Custom")+"",t;return{c(){e=c("span"),t=V(l),this.h()},l(s){e=_(s,"SPAN",{class:!0});var n=d(e);t=N(n,l),n.forEach(f),this.h()},h(){u(e,"class","ml-2 self-center")},m(s,n){w(s,e,n),r(e,t)},p(s,n){n[0]&4&&l!==(l=s[2].t("Custom")+"")&&T(t,l)},d(s){s&&f(e)}}}function vu(a){let e,l=a[2].t("Default")+"",t;return{c(){e=c("span"),t=V(l),this.h()},l(s){e=_(s,"SPAN",{class:!0});var n=d(e);t=N(n,l),n.forEach(f),this.h()},h(){u(e,"class","ml-2 self-center")},m(s,n){w(s,e,n),r(e,t)},p(s,n){n[0]&4&&l!==(l=s[2].t("Default")+"")&&T(t,l)},d(s){s&&f(e)}}}function qn(a){let e,l,t,s,n,o,i,b;return{c(){e=c("div"),l=c("div"),t=c("input"),s=k(),n=c("div"),o=c("input"),this.h()},l(p){e=_(p,"DIV",{class:!0});var h=d(e);l=_(h,"DIV",{class:!0});var D=d(l);t=_(D,"INPUT",{id:!0,type:!0,min:!0,max:!0,step:!0,class:!0}),D.forEach(f),s=y(h),n=_(h,"DIV",{class:!0});var g=d(n);o=_(g,"INPUT",{type:!0,class:!0,min:!0,step:!0}),g.forEach(f),h.forEach(f),this.h()},h(){u(t,"id","steps-range"),u(t,"type","range"),u(t,"min","-1"),u(t,"max","10240000"),u(t,"step","1"),u(t,"class","w-full h-2 rounded-lg appearance-none cursor-pointer dark:bg-gray-700"),u(l,"class","flex-1"),u(o,"type","number"),u(o,"class","bg-transparent text-center w-14"),u(o,"min","-1"),u(o,"step","1"),u(n,"class",""),u(e,"class","flex mt-0.5 space-x-2")},m(p,h){w(p,e,h),r(e,l),r(l,t),I(t,a[0].num_ctx),r(e,s),r(e,n),r(n,o),I(o,a[0].num_ctx),i||(b=[E(t,"change",a[36]),E(t,"input",a[36]),E(o,"input",a[37])],i=!0)},p(p,h){h[0]&1&&I(t,p[0].num_ctx),h[0]&1&&S(o.value)!==p[0].num_ctx&&I(o,p[0].num_ctx)},d(p){p&&f(e),i=!1,re(b)}}}function bu(a){let e,l=a[2].t("Custom")+"",t;return{c(){e=c("span"),t=V(l),this.h()},l(s){e=_(s,"SPAN",{class:!0});var n=d(e);t=N(n,l),n.forEach(f),this.h()},h(){u(e,"class","ml-2 self-center")},m(s,n){w(s,e,n),r(e,t)},p(s,n){n[0]&4&&l!==(l=s[2].t("Custom")+"")&&T(t,l)},d(s){s&&f(e)}}}function ku(a){let e,l=a[2].t("Default")+"",t;return{c(){e=c("span"),t=V(l),this.h()},l(s){e=_(s,"SPAN",{class:!0});var n=d(e);t=N(n,l),n.forEach(f),this.h()},h(){u(e,"class","ml-2 self-center")},m(s,n){w(s,e,n),r(e,t)},p(s,n){n[0]&4&&l!==(l=s[2].t("Default")+"")&&T(t,l)},d(s){s&&f(e)}}}function Bn(a){let e,l,t,s,n,o,i,b;return{c(){e=c("div"),l=c("div"),t=c("input"),s=k(),n=c("div"),o=c("input"),this.h()},l(p){e=_(p,"DIV",{class:!0});var h=d(e);l=_(h,"DIV",{class:!0});var D=d(l);t=_(D,"INPUT",{id:!0,type:!0,min:!0,max:!0,step:!0,class:!0}),D.forEach(f),s=y(h),n=_(h,"DIV",{class:!0});var g=d(n);o=_(g,"INPUT",{type:!0,class:!0,min:!0,step:!0}),g.forEach(f),h.forEach(f),this.h()},h(){u(t,"id","steps-range"),u(t,"type","range"),u(t,"min","256"),u(t,"max","8192"),u(t,"step","256"),u(t,"class","w-full h-2 rounded-lg appearance-none cursor-pointer dark:bg-gray-700"),u(l,"class","flex-1"),u(o,"type","number"),u(o,"class","bg-transparent text-center w-14"),u(o,"min","256"),u(o,"step","256"),u(n,"class",""),u(e,"class","flex mt-0.5 space-x-2")},m(p,h){w(p,e,h),r(e,l),r(l,t),I(t,a[0].num_batch),r(e,s),r(e,n),r(n,o),I(o,a[0].num_batch),i||(b=[E(t,"change",a[39]),E(t,"input",a[39]),E(o,"input",a[40])],i=!0)},p(p,h){h[0]&1&&I(t,p[0].num_batch),h[0]&1&&S(o.value)!==p[0].num_batch&&I(o,p[0].num_batch)},d(p){p&&f(e),i=!1,re(b)}}}function yu(a){let e,l=a[2].t("Custom")+"",t;return{c(){e=c("span"),t=V(l),this.h()},l(s){e=_(s,"SPAN",{class:!0});var n=d(e);t=N(n,l),n.forEach(f),this.h()},h(){u(e,"class","ml-2 self-center")},m(s,n){w(s,e,n),r(e,t)},p(s,n){n[0]&4&&l!==(l=s[2].t("Custom")+"")&&T(t,l)},d(s){s&&f(e)}}}function Eu(a){let e,l=a[2].t("Default")+"",t;return{c(){e=c("span"),t=V(l),this.h()},l(s){e=_(s,"SPAN",{class:!0});var n=d(e);t=N(n,l),n.forEach(f),this.h()},h(){u(e,"class","ml-2 self-center")},m(s,n){w(s,e,n),r(e,t)},p(s,n){n[0]&4&&l!==(l=s[2].t("Default")+"")&&T(t,l)},d(s){s&&f(e)}}}function zn(a){let e,l,t,s,n,o,i,b;return{c(){e=c("div"),l=c("div"),t=c("input"),s=k(),n=c("div"),o=c("input"),this.h()},l(p){e=_(p,"DIV",{class:!0});var h=d(e);l=_(h,"DIV",{class:!0});var D=d(l);t=_(D,"INPUT",{id:!0,type:!0,min:!0,max:!0,step:!0,class:!0}),D.forEach(f),s=y(h),n=_(h,"DIV",{class:!0});var g=d(n);o=_(g,"INPUT",{type:!0,class:!0,min:!0,step:!0}),g.forEach(f),h.forEach(f),this.h()},h(){u(t,"id","steps-range"),u(t,"type","range"),u(t,"min","-1"),u(t,"max","10240000"),u(t,"step","1"),u(t,"class","w-full h-2 rounded-lg appearance-none cursor-pointer dark:bg-gray-700"),u(l,"class","flex-1"),u(o,"type","number"),u(o,"class","bg-transparent text-center w-14"),u(o,"min","-1"),u(o,"step","1"),u(n,"class",""),u(e,"class","flex mt-0.5 space-x-2")},m(p,h){w(p,e,h),r(e,l),r(l,t),I(t,a[0].num_keep),r(e,s),r(e,n),r(n,o),I(o,a[0].num_keep),i||(b=[E(t,"change",a[42]),E(t,"input",a[42]),E(o,"input",a[43])],i=!0)},p(p,h){h[0]&1&&I(t,p[0].num_keep),h[0]&1&&S(o.value)!==p[0].num_keep&&I(o,p[0].num_keep)},d(p){p&&f(e),i=!1,re(b)}}}function Du(a){let e,l=a[2].t("Custom")+"",t;return{c(){e=c("span"),t=V(l),this.h()},l(s){e=_(s,"SPAN",{class:!0});var n=d(e);t=N(n,l),n.forEach(f),this.h()},h(){u(e,"class","ml-2 self-center")},m(s,n){w(s,e,n),r(e,t)},p(s,n){n[0]&4&&l!==(l=s[2].t("Custom")+"")&&T(t,l)},d(s){s&&f(e)}}}function Iu(a){let e,l=a[2].t("Default")+"",t;return{c(){e=c("span"),t=V(l),this.h()},l(s){e=_(s,"SPAN",{class:!0});var n=d(e);t=N(n,l),n.forEach(f),this.h()},h(){u(e,"class","ml-2 self-center")},m(s,n){w(s,e,n),r(e,t)},p(s,n){n[0]&4&&l!==(l=s[2].t("Default")+"")&&T(t,l)},d(s){s&&f(e)}}}function Mn(a){let e,l,t,s,n,o,i,b;return{c(){e=c("div"),l=c("div"),t=c("input"),s=k(),n=c("div"),o=c("input"),this.h()},l(p){e=_(p,"DIV",{class:!0});var h=d(e);l=_(h,"DIV",{class:!0});var D=d(l);t=_(D,"INPUT",{id:!0,type:!0,min:!0,max:!0,step:!0,class:!0}),D.forEach(f),s=y(h),n=_(h,"DIV",{class:!0});var g=d(n);o=_(g,"INPUT",{type:!0,class:!0,min:!0,max:!0,step:!0}),g.forEach(f),h.forEach(f),this.h()},h(){u(t,"id","steps-range"),u(t,"type","range"),u(t,"min","-2"),u(t,"max","16000"),u(t,"step","1"),u(t,"class","w-full h-2 rounded-lg appearance-none cursor-pointer dark:bg-gray-700"),u(l,"class","flex-1"),u(o,"type","number"),u(o,"class","bg-transparent text-center w-14"),u(o,"min","-2"),u(o,"max","16000"),u(o,"step","1"),u(n,"class",""),u(e,"class","flex mt-0.5 space-x-2")},m(p,h){w(p,e,h),r(e,l),r(l,t),I(t,a[0].max_tokens),r(e,s),r(e,n),r(n,o),I(o,a[0].max_tokens),i||(b=[E(t,"change",a[45]),E(t,"input",a[45]),E(o,"input",a[46])],i=!0)},p(p,h){h[0]&1&&I(t,p[0].max_tokens),h[0]&1&&S(o.value)!==p[0].max_tokens&&I(o,p[0].max_tokens)},d(p){p&&f(e),i=!1,re(b)}}}function Rn(a){var it;let e,l,t,s=a[2].t("use_mmap (Ollama)")+"",n,o,i,b,p,h,D,g=a[2].t("use_mlock (Ollama)")+"",_e,ve,K,Oe,q,oe,he,M=a[2].t("num_thread (Ollama)")+"",ie,me,R,qe,Ke,ce;function rt(U,A){var C;return(((C=U[0])==null?void 0:C.use_mmap)??null)===null?wu:gu}let Be=rt(a),j=Be(a);function pe(U,A){var C;return(((C=U[0])==null?void 0:C.use_mlock)??null)===null?Nu:Vu}let de=pe(a),z=de(a);function Le(U,A){var C;return(((C=U[0])==null?void 0:C.num_thread)??null)===null?Pu:Tu}let ze=Le(a),O=ze(a),B=(((it=a[0])==null?void 0:it.num_thread)??null)!==null&&Kn(a);return{c(){e=c("div"),l=c("div"),t=c("div"),n=V(s),o=k(),i=c("button"),j.c(),b=k(),p=c("div"),h=c("div"),D=c("div"),_e=V(g),ve=k(),K=c("button"),z.c(),Oe=k(),q=c("div"),oe=c("div"),he=c("div"),ie=V(M),me=k(),R=c("button"),O.c(),qe=k(),B&&B.c(),this.h()},l(U){e=_(U,"DIV",{class:!0});var A=d(e);l=_(A,"DIV",{class:!0});var C=d(l);t=_(C,"DIV",{class:!0});var Me=d(t);n=N(Me,s),Me.forEach(f),o=y(C),i=_(C,"BUTTON",{class:!0,type:!0});var Fe=d(i);j.l(Fe),Fe.forEach(f),C.forEach(f),A.forEach(f),b=y(U),p=_(U,"DIV",{class:!0});var ft=d(p);h=_(ft,"DIV",{class:!0});var L=d(h);D=_(L,"DIV",{class:!0});var ot=d(D);_e=N(ot,g),ot.forEach(f),ve=y(L),K=_(L,"BUTTON",{class:!0,type:!0});var ct=d(K);z.l(ct),ct.forEach(f),L.forEach(f),ft.forEach(f),Oe=y(U),q=_(U,"DIV",{class:!0});var F=d(q);oe=_(F,"DIV",{class:!0});var fe=d(oe);he=_(fe,"DIV",{class:!0});var be=d(he);ie=N(be,M),be.forEach(f),me=y(fe),R=_(fe,"BUTTON",{class:!0,type:!0});var Re=d(R);O.l(Re),Re.forEach(f),fe.forEach(f),qe=y(F),B&&B.l(F),F.forEach(f),this.h()},h(){u(t,"class","self-center text-xs font-medium"),u(i,"class","p-1 px-3 text-xs flex rounded transition"),u(i,"type","button"),u(l,"class","flex w-full justify-between"),u(e,"class","py-0.5 w-full justify-between"),u(D,"class","self-center text-xs font-medium"),u(K,"class","p-1 px-3 text-xs flex rounded transition"),u(K,"type","button"),u(h,"class","flex w-full justify-between"),u(p,"class","py-0.5 w-full justify-between"),u(he,"class","self-center text-xs font-medium"),u(R,"class","p-1 px-3 text-xs flex rounded transition"),u(R,"type","button"),u(oe,"class","flex w-full justify-between"),u(q,"class","py-0.5 w-full justify-between")},m(U,A){w(U,e,A),r(e,l),r(l,t),r(t,n),r(l,o),r(l,i),j.m(i,null),w(U,b,A),w(U,p,A),r(p,h),r(h,D),r(D,_e),r(h,ve),r(h,K),z.m(K,null),w(U,Oe,A),w(U,q,A),r(q,oe),r(oe,he),r(he,ie),r(oe,me),r(oe,R),O.m(R,null),r(q,qe),B&&B.m(q,null),Ke||(ce=[E(i,"click",a[47]),E(K,"click",a[48]),E(R,"click",a[49])],Ke=!0)},p(U,A){var C;A[0]&4&&s!==(s=U[2].t("use_mmap (Ollama)")+"")&&T(n,s),Be===(Be=rt(U))&&j?j.p(U,A):(j.d(1),j=Be(U),j&&(j.c(),j.m(i,null))),A[0]&4&&g!==(g=U[2].t("use_mlock (Ollama)")+"")&&T(_e,g),de===(de=pe(U))&&z?z.p(U,A):(z.d(1),z=de(U),z&&(z.c(),z.m(K,null))),A[0]&4&&M!==(M=U[2].t("num_thread (Ollama)")+"")&&T(ie,M),ze===(ze=Le(U))&&O?O.p(U,A):(O.d(1),O=ze(U),O&&(O.c(),O.m(R,null))),(((C=U[0])==null?void 0:C.num_thread)??null)!==null?B?B.p(U,A):(B=Kn(U),B.c(),B.m(q,null)):B&&(B.d(1),B=null)},d(U){U&&(f(e),f(b),f(p),f(Oe),f(q)),j.d(),z.d(),O.d(),B&&B.d(),Ke=!1,re(ce)}}}function gu(a){let e,l=a[2].t("On")+"",t;return{c(){e=c("span"),t=V(l),this.h()},l(s){e=_(s,"SPAN",{class:!0});var n=d(e);t=N(n,l),n.forEach(f),this.h()},h(){u(e,"class","ml-2 self-center")},m(s,n){w(s,e,n),r(e,t)},p(s,n){n[0]&4&&l!==(l=s[2].t("On")+"")&&T(t,l)},d(s){s&&f(e)}}}function wu(a){let e,l=a[2].t("Default")+"",t;return{c(){e=c("span"),t=V(l),this.h()},l(s){e=_(s,"SPAN",{class:!0});var n=d(e);t=N(n,l),n.forEach(f),this.h()},h(){u(e,"class","ml-2 self-center")},m(s,n){w(s,e,n),r(e,t)},p(s,n){n[0]&4&&l!==(l=s[2].t("Default")+"")&&T(t,l)},d(s){s&&f(e)}}}function Vu(a){let e,l=a[2].t("On")+"",t;return{c(){e=c("span"),t=V(l),this.h()},l(s){e=_(s,"SPAN",{class:!0});var n=d(e);t=N(n,l),n.forEach(f),this.h()},h(){u(e,"class","ml-2 self-center")},m(s,n){w(s,e,n),r(e,t)},p(s,n){n[0]&4&&l!==(l=s[2].t("On")+"")&&T(t,l)},d(s){s&&f(e)}}}function Nu(a){let e,l=a[2].t("Default")+"",t;return{c(){e=c("span"),t=V(l),this.h()},l(s){e=_(s,"SPAN",{class:!0});var n=d(e);t=N(n,l),n.forEach(f),this.h()},h(){u(e,"class","ml-2 self-center")},m(s,n){w(s,e,n),r(e,t)},p(s,n){n[0]&4&&l!==(l=s[2].t("Default")+"")&&T(t,l)},d(s){s&&f(e)}}}function Tu(a){let e,l=a[2].t("Custom")+"",t;return{c(){e=c("span"),t=V(l),this.h()},l(s){e=_(s,"SPAN",{class:!0});var n=d(e);t=N(n,l),n.forEach(f),this.h()},h(){u(e,"class","ml-2 self-center")},m(s,n){w(s,e,n),r(e,t)},p(s,n){n[0]&4&&l!==(l=s[2].t("Custom")+"")&&T(t,l)},d(s){s&&f(e)}}}function Pu(a){let e,l=a[2].t("Default")+"",t;return{c(){e=c("span"),t=V(l),this.h()},l(s){e=_(s,"SPAN",{class:!0});var n=d(e);t=N(n,l),n.forEach(f),this.h()},h(){u(e,"class","ml-2 self-center")},m(s,n){w(s,e,n),r(e,t)},p(s,n){n[0]&4&&l!==(l=s[2].t("Default")+"")&&T(t,l)},d(s){s&&f(e)}}}function Kn(a){let e,l,t,s,n,o,i,b;return{c(){e=c("div"),l=c("div"),t=c("input"),s=k(),n=c("div"),o=c("input"),this.h()},l(p){e=_(p,"DIV",{class:!0});var h=d(e);l=_(h,"DIV",{class:!0});var D=d(l);t=_(D,"INPUT",{id:!0,type:!0,min:!0,max:!0,step:!0,class:!0}),D.forEach(f),s=y(h),n=_(h,"DIV",{class:!0});var g=d(n);o=_(g,"INPUT",{type:!0,class:!0,min:!0,max:!0,step:!0}),g.forEach(f),h.forEach(f),this.h()},h(){u(t,"id","steps-range"),u(t,"type","range"),u(t,"min","1"),u(t,"max","256"),u(t,"step","1"),u(t,"class","w-full h-2 rounded-lg appearance-none cursor-pointer dark:bg-gray-700"),u(l,"class","flex-1"),u(o,"type","number"),u(o,"class","bg-transparent text-center w-14"),u(o,"min","1"),u(o,"max","256"),u(o,"step","1"),u(n,"class",""),u(e,"class","flex mt-0.5 space-x-2")},m(p,h){w(p,e,h),r(e,l),r(l,t),I(t,a[0].num_thread),r(e,s),r(e,n),r(n,o),I(o,a[0].num_thread),i||(b=[E(t,"change",a[50]),E(t,"input",a[50]),E(o,"input",a[51])],i=!0)},p(p,h){h[0]&1&&I(t,p[0].num_thread),h[0]&1&&S(o.value)!==p[0].num_thread&&I(o,p[0].num_thread)},d(p){p&&f(e),i=!1,re(b)}}}function Uu(a){var Ms,Rs,Ks,Ls,Fs,Zs,Qs,Ws,Gs,Hs,Js,Xs,Ys,xs,$s;let e,l,t,s,n=a[2].t("Seed")+"",o,i,b,p,h,D,g,_e,ve=a[2].t("Stop Sequence")+"",K,Oe,q,oe,he,M,ie,me,R=a[2].t("Temperature")+"",qe,Ke,ce,rt,Be,j,pe,de,z=a[2].t("Mirostat")+"",Le,ze,O,B,it,U,A,C,Me=a[2].t("Mirostat Eta")+"",Fe,ft,L,ot,ct,F,fe,be,Re=a[2].t("Mirostat Tau")+"",Tt,zt,ke,Mt,Rt,Z,_t,Pt,Kt=a[2].t("Top K")+"",sl,Jl,Ze,Xl,Yl,Qe,pt,Ut,Lt=a[2].t("Top P")+"",nl,xl,We,$l,es,Ge,dt,St,Ft=a[2].t("Frequency Penalty")+"",ul,ts,He,ls,ss,Je,ht,At,Zt=a[2].t("Repeat Last N")+"",al,ns,Xe,us,as,Ye,mt,Ct,Qt=a[2].t("Tfs Z")+"",rl,rs,xe,is,fs,$e,vt,jt,Wt=a[2].t("Context Length")+"",il,os,et,cs,_s,tt,bt,Ot,Gt=a[2].t("Batch Size (num_batch)")+"",fl,ps,lt,ds,hs,st,kt,qt,Ht=a[2].t("Tokens To Keep On Context Refresh (num_keep)")+"",ol,ms,nt,vs,bs,ut,yt,Bt,Jt=a[2].t("Max Tokens (num_predict)")+"",cl,ks,at,ys,Es,Ds,Is;function gs(m,v){var P;return(((P=m[0])==null?void 0:P.seed)??null)===null?Jn:Hn}let _l=gs(a),ye=_l(a),Q=(((Ms=a[0])==null?void 0:Ms.seed)??null)!==null&&wn(a);function ws(m,v){var P;return(((P=m[0])==null?void 0:P.stop)??null)===null?Yn:Xn}let pl=ws(a),Ee=pl(a),W=(((Rs=a[0])==null?void 0:Rs.stop)??null)!==null&&Vn(a);function Vs(m,v){var P;return(((P=m[0])==null?void 0:P.temperature)??null)===null?$n:xn}let dl=Vs(a),De=dl(a),G=(((Ks=a[0])==null?void 0:Ks.temperature)??null)!==null&&Nn(a);function Ns(m,v){var P;return(((P=m[0])==null?void 0:P.mirostat)??null)===null?tu:eu}let hl=Ns(a),Ie=hl(a),H=(((Ls=a[0])==null?void 0:Ls.mirostat)??null)!==null&&Tn(a);function Ts(m,v){var P;return(((P=m[0])==null?void 0:P.mirostat_eta)??null)===null?su:lu}let ml=Ts(a),ge=ml(a),J=(((Fs=a[0])==null?void 0:Fs.mirostat_eta)??null)!==null&&Pn(a);function Ps(m,v){var P;return(((P=m[0])==null?void 0:P.mirostat_tau)??null)===null?uu:nu}let vl=Ps(a),we=vl(a),X=(((Zs=a[0])==null?void 0:Zs.mirostat_tau)??null)!==null&&Un(a);function Us(m,v){var P;return(((P=m[0])==null?void 0:P.top_k)??null)===null?ru:au}let bl=Us(a),Ve=bl(a),Y=(((Qs=a[0])==null?void 0:Qs.top_k)??null)!==null&&Sn(a);function Ss(m,v){var P;return(((P=m[0])==null?void 0:P.top_p)??null)===null?fu:iu}let kl=Ss(a),Ne=kl(a),x=(((Ws=a[0])==null?void 0:Ws.top_p)??null)!==null&&An(a);function As(m,v){var P;return(((P=m[0])==null?void 0:P.frequency_penalty)??null)===null?cu:ou}let yl=As(a),Te=yl(a),$=(((Gs=a[0])==null?void 0:Gs.frequency_penalty)??null)!==null&&Cn(a);function Cs(m,v){var P;return(((P=m[0])==null?void 0:P.repeat_last_n)??null)===null?pu:_u}let El=Cs(a),Pe=El(a),ee=(((Hs=a[0])==null?void 0:Hs.repeat_last_n)??null)!==null&&jn(a);function js(m,v){var P;return(((P=m[0])==null?void 0:P.tfs_z)??null)===null?hu:du}let Dl=js(a),Ue=Dl(a),te=(((Js=a[0])==null?void 0:Js.tfs_z)??null)!==null&&On(a);function Os(m,v){var P;return(((P=m[0])==null?void 0:P.num_ctx)??null)===null?vu:mu}let Il=Os(a),Se=Il(a),le=(((Xs=a[0])==null?void 0:Xs.num_ctx)??null)!==null&&qn(a);function qs(m,v){var P;return(((P=m[0])==null?void 0:P.num_batch)??null)===null?ku:bu}let gl=qs(a),Ae=gl(a),se=(((Ys=a[0])==null?void 0:Ys.num_batch)??null)!==null&&Bn(a);function Bs(m,v){var P;return(((P=m[0])==null?void 0:P.num_keep)??null)===null?Eu:yu}let wl=Bs(a),Ce=wl(a),ne=(((xs=a[0])==null?void 0:xs.num_keep)??null)!==null&&zn(a);function zs(m,v){var P;return(((P=m[0])==null?void 0:P.max_tokens)??null)===null?Iu:Du}let Vl=zs(a),je=Vl(a),ue=((($s=a[0])==null?void 0:$s.max_tokens)??null)!==null&&Mn(a),ae=a[1]&&Rn(a);return{c(){e=c("div"),l=c("div"),t=c("div"),s=c("div"),o=V(n),i=k(),b=c("button"),ye.c(),p=k(),Q&&Q.c(),h=k(),D=c("div"),g=c("div"),_e=c("div"),K=V(ve),Oe=k(),q=c("button"),Ee.c(),oe=k(),W&&W.c(),he=k(),M=c("div"),ie=c("div"),me=c("div"),qe=V(R),Ke=k(),ce=c("button"),De.c(),rt=k(),G&&G.c(),Be=k(),j=c("div"),pe=c("div"),de=c("div"),Le=V(z),ze=k(),O=c("button"),Ie.c(),B=k(),H&&H.c(),it=k(),U=c("div"),A=c("div"),C=c("div"),Fe=V(Me),ft=k(),L=c("button"),ge.c(),ot=k(),J&&J.c(),ct=k(),F=c("div"),fe=c("div"),be=c("div"),Tt=V(Re),zt=k(),ke=c("button"),we.c(),Mt=k(),X&&X.c(),Rt=k(),Z=c("div"),_t=c("div"),Pt=c("div"),sl=V(Kt),Jl=k(),Ze=c("button"),Ve.c(),Xl=k(),Y&&Y.c(),Yl=k(),Qe=c("div"),pt=c("div"),Ut=c("div"),nl=V(Lt),xl=k(),We=c("button"),Ne.c(),$l=k(),x&&x.c(),es=k(),Ge=c("div"),dt=c("div"),St=c("div"),ul=V(Ft),ts=k(),He=c("button"),Te.c(),ls=k(),$&&$.c(),ss=k(),Je=c("div"),ht=c("div"),At=c("div"),al=V(Zt),ns=k(),Xe=c("button"),Pe.c(),us=k(),ee&&ee.c(),as=k(),Ye=c("div"),mt=c("div"),Ct=c("div"),rl=V(Qt),rs=k(),xe=c("button"),Ue.c(),is=k(),te&&te.c(),fs=k(),$e=c("div"),vt=c("div"),jt=c("div"),il=V(Wt),os=k(),et=c("button"),Se.c(),cs=k(),le&&le.c(),_s=k(),tt=c("div"),bt=c("div"),Ot=c("div"),fl=V(Gt),ps=k(),lt=c("button"),Ae.c(),ds=k(),se&&se.c(),hs=k(),st=c("div"),kt=c("div"),qt=c("div"),ol=V(Ht),ms=k(),nt=c("button"),Ce.c(),vs=k(),ne&&ne.c(),bs=k(),ut=c("div"),yt=c("div"),Bt=c("div"),cl=V(Jt),ks=k(),at=c("button"),je.c(),ys=k(),ue&&ue.c(),Es=k(),ae&&ae.c(),this.h()},l(m){e=_(m,"DIV",{class:!0});var v=d(e);l=_(v,"DIV",{class:!0});var P=d(l);t=_(P,"DIV",{class:!0});var Et=d(t);s=_(Et,"DIV",{class:!0});var Xt=d(s);o=N(Xt,n),Xt.forEach(f),i=y(Et),b=_(Et,"BUTTON",{class:!0,type:!0});var Yt=d(b);ye.l(Yt),Yt.forEach(f),Et.forEach(f),p=y(P),Q&&Q.l(P),P.forEach(f),h=y(v),D=_(v,"DIV",{class:!0});var Dt=d(D);g=_(Dt,"DIV",{class:!0});var It=d(g);_e=_(It,"DIV",{class:!0});var xt=d(_e);K=N(xt,ve),xt.forEach(f),Oe=y(It),q=_(It,"BUTTON",{class:!0,type:!0});var $t=d(q);Ee.l($t),$t.forEach(f),It.forEach(f),oe=y(Dt),W&&W.l(Dt),Dt.forEach(f),he=y(v),M=_(v,"DIV",{class:!0});var gt=d(M);ie=_(gt,"DIV",{class:!0});var wt=d(ie);me=_(wt,"DIV",{class:!0});var el=d(me);qe=N(el,R),el.forEach(f),Ke=y(wt),ce=_(wt,"BUTTON",{class:!0,type:!0});var tl=d(ce);De.l(tl),tl.forEach(f),wt.forEach(f),rt=y(gt),G&&G.l(gt),gt.forEach(f),Be=y(v),j=_(v,"DIV",{class:!0});var Vt=d(j);pe=_(Vt,"DIV",{class:!0});var Nt=d(pe);de=_(Nt,"DIV",{class:!0});var ll=d(de);Le=N(ll,z),ll.forEach(f),ze=y(Nt),O=_(Nt,"BUTTON",{class:!0,type:!0});var en=d(O);Ie.l(en),en.forEach(f),Nt.forEach(f),B=y(Vt),H&&H.l(Vt),Vt.forEach(f),it=y(v),U=_(v,"DIV",{class:!0});var Nl=d(U);A=_(Nl,"DIV",{class:!0});var Tl=d(A);C=_(Tl,"DIV",{class:!0});var tn=d(C);Fe=N(tn,Me),tn.forEach(f),ft=y(Tl),L=_(Tl,"BUTTON",{class:!0,type:!0});var ln=d(L);ge.l(ln),ln.forEach(f),Tl.forEach(f),ot=y(Nl),J&&J.l(Nl),Nl.forEach(f),ct=y(v),F=_(v,"DIV",{class:!0});var Pl=d(F);fe=_(Pl,"DIV",{class:!0});var Ul=d(fe);be=_(Ul,"DIV",{class:!0});var sn=d(be);Tt=N(sn,Re),sn.forEach(f),zt=y(Ul),ke=_(Ul,"BUTTON",{class:!0,type:!0});var nn=d(ke);we.l(nn),nn.forEach(f),Ul.forEach(f),Mt=y(Pl),X&&X.l(Pl),Pl.forEach(f),Rt=y(v),Z=_(v,"DIV",{class:!0});var Sl=d(Z);_t=_(Sl,"DIV",{class:!0});var Al=d(_t);Pt=_(Al,"DIV",{class:!0});var un=d(Pt);sl=N(un,Kt),un.forEach(f),Jl=y(Al),Ze=_(Al,"BUTTON",{class:!0,type:!0});var an=d(Ze);Ve.l(an),an.forEach(f),Al.forEach(f),Xl=y(Sl),Y&&Y.l(Sl),Sl.forEach(f),Yl=y(v),Qe=_(v,"DIV",{class:!0});var Cl=d(Qe);pt=_(Cl,"DIV",{class:!0});var jl=d(pt);Ut=_(jl,"DIV",{class:!0});var rn=d(Ut);nl=N(rn,Lt),rn.forEach(f),xl=y(jl),We=_(jl,"BUTTON",{class:!0,type:!0});var fn=d(We);Ne.l(fn),fn.forEach(f),jl.forEach(f),$l=y(Cl),x&&x.l(Cl),Cl.forEach(f),es=y(v),Ge=_(v,"DIV",{class:!0});var Ol=d(Ge);dt=_(Ol,"DIV",{class:!0});var ql=d(dt);St=_(ql,"DIV",{class:!0});var on=d(St);ul=N(on,Ft),on.forEach(f),ts=y(ql),He=_(ql,"BUTTON",{class:!0,type:!0});var cn=d(He);Te.l(cn),cn.forEach(f),ql.forEach(f),ls=y(Ol),$&&$.l(Ol),Ol.forEach(f),ss=y(v),Je=_(v,"DIV",{class:!0});var Bl=d(Je);ht=_(Bl,"DIV",{class:!0});var zl=d(ht);At=_(zl,"DIV",{class:!0});var _n=d(At);al=N(_n,Zt),_n.forEach(f),ns=y(zl),Xe=_(zl,"BUTTON",{class:!0,type:!0});var pn=d(Xe);Pe.l(pn),pn.forEach(f),zl.forEach(f),us=y(Bl),ee&&ee.l(Bl),Bl.forEach(f),as=y(v),Ye=_(v,"DIV",{class:!0});var Ml=d(Ye);mt=_(Ml,"DIV",{class:!0});var Rl=d(mt);Ct=_(Rl,"DIV",{class:!0});var dn=d(Ct);rl=N(dn,Qt),dn.forEach(f),rs=y(Rl),xe=_(Rl,"BUTTON",{class:!0,type:!0});var hn=d(xe);Ue.l(hn),hn.forEach(f),Rl.forEach(f),is=y(Ml),te&&te.l(Ml),Ml.forEach(f),fs=y(v),$e=_(v,"DIV",{class:!0});var Kl=d($e);vt=_(Kl,"DIV",{class:!0});var Ll=d(vt);jt=_(Ll,"DIV",{class:!0});var mn=d(jt);il=N(mn,Wt),mn.forEach(f),os=y(Ll),et=_(Ll,"BUTTON",{class:!0,type:!0});var vn=d(et);Se.l(vn),vn.forEach(f),Ll.forEach(f),cs=y(Kl),le&&le.l(Kl),Kl.forEach(f),_s=y(v),tt=_(v,"DIV",{class:!0});var Fl=d(tt);bt=_(Fl,"DIV",{class:!0});var Zl=d(bt);Ot=_(Zl,"DIV",{class:!0});var bn=d(Ot);fl=N(bn,Gt),bn.forEach(f),ps=y(Zl),lt=_(Zl,"BUTTON",{class:!0,type:!0});var kn=d(lt);Ae.l(kn),kn.forEach(f),Zl.forEach(f),ds=y(Fl),se&&se.l(Fl),Fl.forEach(f),hs=y(v),st=_(v,"DIV",{class:!0});var Ql=d(st);kt=_(Ql,"DIV",{class:!0});var Wl=d(kt);qt=_(Wl,"DIV",{class:!0});var yn=d(qt);ol=N(yn,Ht),yn.forEach(f),ms=y(Wl),nt=_(Wl,"BUTTON",{class:!0,type:!0});var En=d(nt);Ce.l(En),En.forEach(f),Wl.forEach(f),vs=y(Ql),ne&&ne.l(Ql),Ql.forEach(f),bs=y(v),ut=_(v,"DIV",{class:!0});var Gl=d(ut);yt=_(Gl,"DIV",{class:!0});var Hl=d(yt);Bt=_(Hl,"DIV",{class:!0});var Dn=d(Bt);cl=N(Dn,Jt),Dn.forEach(f),ks=y(Hl),at=_(Hl,"BUTTON",{class:!0,type:!0});var In=d(at);je.l(In),In.forEach(f),Hl.forEach(f),ys=y(Gl),ue&&ue.l(Gl),Gl.forEach(f),Es=y(v),ae&&ae.l(v),v.forEach(f),this.h()},h(){u(s,"class","self-center text-xs font-medium"),u(b,"class","p-1 px-3 text-xs flex rounded transition"),u(b,"type","button"),u(t,"class","flex w-full justify-between"),u(l,"class","py-0.5 w-full justify-between"),u(_e,"class","self-center text-xs font-medium"),u(q,"class","p-1 px-3 text-xs flex rounded transition"),u(q,"type","button"),u(g,"class","flex w-full justify-between"),u(D,"class","py-0.5 w-full justify-between"),u(me,"class","self-center text-xs font-medium"),u(ce,"class","p-1 px-3 text-xs flex rounded transition"),u(ce,"type","button"),u(ie,"class","flex w-full justify-between"),u(M,"class","py-0.5 w-full justify-between"),u(de,"class","self-center text-xs font-medium"),u(O,"class","p-1 px-3 text-xs flex rounded transition"),u(O,"type","button"),u(pe,"class","flex w-full justify-between"),u(j,"class","py-0.5 w-full justify-between"),u(C,"class","self-center text-xs font-medium"),u(L,"class","p-1 px-3 text-xs flex rounded transition"),u(L,"type","button"),u(A,"class","flex w-full justify-between"),u(U,"class","py-0.5 w-full justify-between"),u(be,"class","self-center text-xs font-medium"),u(ke,"class","p-1 px-3 text-xs flex rounded transition"),u(ke,"type","button"),u(fe,"class","flex w-full justify-between"),u(F,"class","py-0.5 w-full justify-between"),u(Pt,"class","self-center text-xs font-medium"),u(Ze,"class","p-1 px-3 text-xs flex rounded transition"),u(Ze,"type","button"),u(_t,"class","flex w-full justify-between"),u(Z,"class","py-0.5 w-full justify-between"),u(Ut,"class","self-center text-xs font-medium"),u(We,"class","p-1 px-3 text-xs flex rounded transition"),u(We,"type","button"),u(pt,"class","flex w-full justify-between"),u(Qe,"class","py-0.5 w-full justify-between"),u(St,"class","self-center text-xs font-medium"),u(He,"class","p-1 px-3 text-xs flex rounded transition"),u(He,"type","button"),u(dt,"class","flex w-full justify-between"),u(Ge,"class","py-0.5 w-full justify-between"),u(At,"class","self-center text-xs font-medium"),u(Xe,"class","p-1 px-3 text-xs flex rounded transition"),u(Xe,"type","button"),u(ht,"class","flex w-full justify-between"),u(Je,"class","py-0.5 w-full justify-between"),u(Ct,"class","self-center text-xs font-medium"),u(xe,"class","p-1 px-3 text-xs flex rounded transition"),u(xe,"type","button"),u(mt,"class","flex w-full justify-between"),u(Ye,"class","py-0.5 w-full justify-between"),u(jt,"class","self-center text-xs font-medium"),u(et,"class","p-1 px-3 text-xs flex rounded transition"),u(et,"type","button"),u(vt,"class","flex w-full justify-between"),u($e,"class","py-0.5 w-full justify-between"),u(Ot,"class","self-center text-xs font-medium"),u(lt,"class","p-1 px-3 text-xs flex rounded transition"),u(lt,"type","button"),u(bt,"class","flex w-full justify-between"),u(tt,"class","py-0.5 w-full justify-between"),u(qt,"class","self-center text-xs font-medium"),u(nt,"class","p-1 px-3 text-xs flex rounded transition"),u(nt,"type","button"),u(kt,"class","flex w-full justify-between"),u(st,"class","py-0.5 w-full justify-between"),u(Bt,"class","self-center text-xs font-medium"),u(at,"class","p-1 px-3 text-xs flex rounded transition"),u(at,"type","button"),u(yt,"class","flex w-full justify-between"),u(ut,"class","py-0.5 w-full justify-between"),u(e,"class","space-y-1 text-xs")},m(m,v){w(m,e,v),r(e,l),r(l,t),r(t,s),r(s,o),r(t,i),r(t,b),ye.m(b,null),r(l,p),Q&&Q.m(l,null),r(e,h),r(e,D),r(D,g),r(g,_e),r(_e,K),r(g,Oe),r(g,q),Ee.m(q,null),r(D,oe),W&&W.m(D,null),r(e,he),r(e,M),r(M,ie),r(ie,me),r(me,qe),r(ie,Ke),r(ie,ce),De.m(ce,null),r(M,rt),G&&G.m(M,null),r(e,Be),r(e,j),r(j,pe),r(pe,de),r(de,Le),r(pe,ze),r(pe,O),Ie.m(O,null),r(j,B),H&&H.m(j,null),r(e,it),r(e,U),r(U,A),r(A,C),r(C,Fe),r(A,ft),r(A,L),ge.m(L,null),r(U,ot),J&&J.m(U,null),r(e,ct),r(e,F),r(F,fe),r(fe,be),r(be,Tt),r(fe,zt),r(fe,ke),we.m(ke,null),r(F,Mt),X&&X.m(F,null),r(e,Rt),r(e,Z),r(Z,_t),r(_t,Pt),r(Pt,sl),r(_t,Jl),r(_t,Ze),Ve.m(Ze,null),r(Z,Xl),Y&&Y.m(Z,null),r(e,Yl),r(e,Qe),r(Qe,pt),r(pt,Ut),r(Ut,nl),r(pt,xl),r(pt,We),Ne.m(We,null),r(Qe,$l),x&&x.m(Qe,null),r(e,es),r(e,Ge),r(Ge,dt),r(dt,St),r(St,ul),r(dt,ts),r(dt,He),Te.m(He,null),r(Ge,ls),$&&$.m(Ge,null),r(e,ss),r(e,Je),r(Je,ht),r(ht,At),r(At,al),r(ht,ns),r(ht,Xe),Pe.m(Xe,null),r(Je,us),ee&&ee.m(Je,null),r(e,as),r(e,Ye),r(Ye,mt),r(mt,Ct),r(Ct,rl),r(mt,rs),r(mt,xe),Ue.m(xe,null),r(Ye,is),te&&te.m(Ye,null),r(e,fs),r(e,$e),r($e,vt),r(vt,jt),r(jt,il),r(vt,os),r(vt,et),Se.m(et,null),r($e,cs),le&&le.m($e,null),r(e,_s),r(e,tt),r(tt,bt),r(bt,Ot),r(Ot,fl),r(bt,ps),r(bt,lt),Ae.m(lt,null),r(tt,ds),se&&se.m(tt,null),r(e,hs),r(e,st),r(st,kt),r(kt,qt),r(qt,ol),r(kt,ms),r(kt,nt),Ce.m(nt,null),r(st,vs),ne&&ne.m(st,null),r(e,bs),r(e,ut),r(ut,yt),r(yt,Bt),r(Bt,cl),r(yt,ks),r(yt,at),je.m(at,null),r(ut,ys),ue&&ue.m(ut,null),r(e,Es),ae&&ae.m(e,null),Ds||(Is=[E(b,"click",a[4]),E(q,"click",a[6]),E(ce,"click",a[8]),E(O,"click",a[11]),E(L,"click",a[14]),E(ke,"click",a[17]),E(Ze,"click",a[20]),E(We,"click",a[23]),E(He,"click",a[26]),E(Xe,"click",a[29]),E(xe,"click",a[32]),E(et,"click",a[35]),E(lt,"click",a[38]),E(nt,"click",a[41]),E(at,"click",a[44])],Ds=!0)},p(m,v){var P,Et,Xt,Yt,Dt,It,xt,$t,gt,wt,el,tl,Vt,Nt,ll;v[0]&4&&n!==(n=m[2].t("Seed")+"")&&T(o,n),_l===(_l=gs(m))&&ye?ye.p(m,v):(ye.d(1),ye=_l(m),ye&&(ye.c(),ye.m(b,null))),(((P=m[0])==null?void 0:P.seed)??null)!==null?Q?Q.p(m,v):(Q=wn(m),Q.c(),Q.m(l,null)):Q&&(Q.d(1),Q=null),v[0]&4&&ve!==(ve=m[2].t("Stop Sequence")+"")&&T(K,ve),pl===(pl=ws(m))&&Ee?Ee.p(m,v):(Ee.d(1),Ee=pl(m),Ee&&(Ee.c(),Ee.m(q,null))),(((Et=m[0])==null?void 0:Et.stop)??null)!==null?W?W.p(m,v):(W=Vn(m),W.c(),W.m(D,null)):W&&(W.d(1),W=null),v[0]&4&&R!==(R=m[2].t("Temperature")+"")&&T(qe,R),dl===(dl=Vs(m))&&De?De.p(m,v):(De.d(1),De=dl(m),De&&(De.c(),De.m(ce,null))),(((Xt=m[0])==null?void 0:Xt.temperature)??null)!==null?G?G.p(m,v):(G=Nn(m),G.c(),G.m(M,null)):G&&(G.d(1),G=null),v[0]&4&&z!==(z=m[2].t("Mirostat")+"")&&T(Le,z),hl===(hl=Ns(m))&&Ie?Ie.p(m,v):(Ie.d(1),Ie=hl(m),Ie&&(Ie.c(),Ie.m(O,null))),(((Yt=m[0])==null?void 0:Yt.mirostat)??null)!==null?H?H.p(m,v):(H=Tn(m),H.c(),H.m(j,null)):H&&(H.d(1),H=null),v[0]&4&&Me!==(Me=m[2].t("Mirostat Eta")+"")&&T(Fe,Me),ml===(ml=Ts(m))&&ge?ge.p(m,v):(ge.d(1),ge=ml(m),ge&&(ge.c(),ge.m(L,null))),(((Dt=m[0])==null?void 0:Dt.mirostat_eta)??null)!==null?J?J.p(m,v):(J=Pn(m),J.c(),J.m(U,null)):J&&(J.d(1),J=null),v[0]&4&&Re!==(Re=m[2].t("Mirostat Tau")+"")&&T(Tt,Re),vl===(vl=Ps(m))&&we?we.p(m,v):(we.d(1),we=vl(m),we&&(we.c(),we.m(ke,null))),(((It=m[0])==null?void 0:It.mirostat_tau)??null)!==null?X?X.p(m,v):(X=Un(m),X.c(),X.m(F,null)):X&&(X.d(1),X=null),v[0]&4&&Kt!==(Kt=m[2].t("Top K")+"")&&T(sl,Kt),bl===(bl=Us(m))&&Ve?Ve.p(m,v):(Ve.d(1),Ve=bl(m),Ve&&(Ve.c(),Ve.m(Ze,null))),(((xt=m[0])==null?void 0:xt.top_k)??null)!==null?Y?Y.p(m,v):(Y=Sn(m),Y.c(),Y.m(Z,null)):Y&&(Y.d(1),Y=null),v[0]&4&&Lt!==(Lt=m[2].t("Top P")+"")&&T(nl,Lt),kl===(kl=Ss(m))&&Ne?Ne.p(m,v):(Ne.d(1),Ne=kl(m),Ne&&(Ne.c(),Ne.m(We,null))),((($t=m[0])==null?void 0:$t.top_p)??null)!==null?x?x.p(m,v):(x=An(m),x.c(),x.m(Qe,null)):x&&(x.d(1),x=null),v[0]&4&&Ft!==(Ft=m[2].t("Frequency Penalty")+"")&&T(ul,Ft),yl===(yl=As(m))&&Te?Te.p(m,v):(Te.d(1),Te=yl(m),Te&&(Te.c(),Te.m(He,null))),(((gt=m[0])==null?void 0:gt.frequency_penalty)??null)!==null?$?$.p(m,v):($=Cn(m),$.c(),$.m(Ge,null)):$&&($.d(1),$=null),v[0]&4&&Zt!==(Zt=m[2].t("Repeat Last N")+"")&&T(al,Zt),El===(El=Cs(m))&&Pe?Pe.p(m,v):(Pe.d(1),Pe=El(m),Pe&&(Pe.c(),Pe.m(Xe,null))),(((wt=m[0])==null?void 0:wt.repeat_last_n)??null)!==null?ee?ee.p(m,v):(ee=jn(m),ee.c(),ee.m(Je,null)):ee&&(ee.d(1),ee=null),v[0]&4&&Qt!==(Qt=m[2].t("Tfs Z")+"")&&T(rl,Qt),Dl===(Dl=js(m))&&Ue?Ue.p(m,v):(Ue.d(1),Ue=Dl(m),Ue&&(Ue.c(),Ue.m(xe,null))),(((el=m[0])==null?void 0:el.tfs_z)??null)!==null?te?te.p(m,v):(te=On(m),te.c(),te.m(Ye,null)):te&&(te.d(1),te=null),v[0]&4&&Wt!==(Wt=m[2].t("Context Length")+"")&&T(il,Wt),Il===(Il=Os(m))&&Se?Se.p(m,v):(Se.d(1),Se=Il(m),Se&&(Se.c(),Se.m(et,null))),(((tl=m[0])==null?void 0:tl.num_ctx)??null)!==null?le?le.p(m,v):(le=qn(m),le.c(),le.m($e,null)):le&&(le.d(1),le=null),v[0]&4&&Gt!==(Gt=m[2].t("Batch Size (num_batch)")+"")&&T(fl,Gt),gl===(gl=qs(m))&&Ae?Ae.p(m,v):(Ae.d(1),Ae=gl(m),Ae&&(Ae.c(),Ae.m(lt,null))),(((Vt=m[0])==null?void 0:Vt.num_batch)??null)!==null?se?se.p(m,v):(se=Bn(m),se.c(),se.m(tt,null)):se&&(se.d(1),se=null),v[0]&4&&Ht!==(Ht=m[2].t("Tokens To Keep On Context Refresh (num_keep)")+"")&&T(ol,Ht),wl===(wl=Bs(m))&&Ce?Ce.p(m,v):(Ce.d(1),Ce=wl(m),Ce&&(Ce.c(),Ce.m(nt,null))),(((Nt=m[0])==null?void 0:Nt.num_keep)??null)!==null?ne?ne.p(m,v):(ne=zn(m),ne.c(),ne.m(st,null)):ne&&(ne.d(1),ne=null),v[0]&4&&Jt!==(Jt=m[2].t("Max Tokens (num_predict)")+"")&&T(cl,Jt),Vl===(Vl=zs(m))&&je?je.p(m,v):(je.d(1),je=Vl(m),je&&(je.c(),je.m(at,null))),(((ll=m[0])==null?void 0:ll.max_tokens)??null)!==null?ue?ue.p(m,v):(ue=Mn(m),ue.c(),ue.m(ut,null)):ue&&(ue.d(1),ue=null),m[1]?ae?ae.p(m,v):(ae=Rn(m),ae.c(),ae.m(e,null)):ae&&(ae.d(1),ae=null)},i:gn,o:gn,d(m){m&&f(e),ye.d(),Q&&Q.d(),Ee.d(),W&&W.d(),De.d(),G&&G.d(),Ie.d(),H&&H.d(),ge.d(),J&&J.d(),we.d(),X&&X.d(),Ve.d(),Y&&Y.d(),Ne.d(),x&&x.d(),Te.d(),$&&$.d(),Pe.d(),ee&&ee.d(),Ue.d(),te&&te.d(),Se.d(),le&&le.d(),Ae.d(),se&&se.d(),Ce.d(),ne&&ne.d(),je.d(),ue&&ue.d(),ae&&ae.d(),Ds=!1,re(Is)}}}function Su(a,e,l){let t;const s=Fn(),n=Zn("i18n");Qn(a,n,Z=>l(2,t=Z));let{admin:o=!1}=e,{params:i={seed:null,stop:null,temperature:null,frequency_penalty:null,repeat_last_n:null,mirostat:null,mirostat_eta:null,mirostat_tau:null,top_k:null,top_p:null,tfs_z:null,num_ctx:null,num_batch:null,num_keep:null,max_tokens:null,use_mmap:null,use_mlock:null,num_thread:null,template:null}}=e;const b=()=>{l(0,i.seed=((i==null?void 0:i.seed)??null)===null?0:null,i)};function p(){i.seed=S(this.value),l(0,i)}const h=()=>{l(0,i.stop=((i==null?void 0:i.stop)??null)===null?"":null,i)};function D(){i.stop=this.value,l(0,i)}const g=()=>{l(0,i.temperature=((i==null?void 0:i.temperature)??null)===null?.8:null,i)};function _e(){i.temperature=S(this.value),l(0,i)}function ve(){i.temperature=S(this.value),l(0,i)}const K=()=>{l(0,i.mirostat=((i==null?void 0:i.mirostat)??null)===null?0:null,i)};function Oe(){i.mirostat=S(this.value),l(0,i)}function q(){i.mirostat=S(this.value),l(0,i)}const oe=()=>{l(0,i.mirostat_eta=((i==null?void 0:i.mirostat_eta)??null)===null?.1:null,i)};function he(){i.mirostat_eta=S(this.value),l(0,i)}function M(){i.mirostat_eta=S(this.value),l(0,i)}const ie=()=>{l(0,i.mirostat_tau=((i==null?void 0:i.mirostat_tau)??null)===null?5:null,i)};function me(){i.mirostat_tau=S(this.value),l(0,i)}function R(){i.mirostat_tau=S(this.value),l(0,i)}const qe=()=>{l(0,i.top_k=((i==null?void 0:i.top_k)??null)===null?40:null,i)};function Ke(){i.top_k=S(this.value),l(0,i)}function ce(){i.top_k=S(this.value),l(0,i)}const rt=()=>{l(0,i.top_p=((i==null?void 0:i.top_p)??null)===null?.9:null,i)};function Be(){i.top_p=S(this.value),l(0,i)}function j(){i.top_p=S(this.value),l(0,i)}const pe=()=>{l(0,i.frequency_penalty=((i==null?void 0:i.frequency_penalty)??null)===null?1.1:null,i)};function de(){i.frequency_penalty=S(this.value),l(0,i)}function z(){i.frequency_penalty=S(this.value),l(0,i)}const Le=()=>{l(0,i.repeat_last_n=((i==null?void 0:i.repeat_last_n)??null)===null?64:null,i)};function ze(){i.repeat_last_n=S(this.value),l(0,i)}function O(){i.repeat_last_n=S(this.value),l(0,i)}const B=()=>{l(0,i.tfs_z=((i==null?void 0:i.tfs_z)??null)===null?1:null,i)};function it(){i.tfs_z=S(this.value),l(0,i)}function U(){i.tfs_z=S(this.value),l(0,i)}const A=()=>{l(0,i.num_ctx=((i==null?void 0:i.num_ctx)??null)===null?2048:null,i)};function C(){i.num_ctx=S(this.value),l(0,i)}function Me(){i.num_ctx=S(this.value),l(0,i)}const Fe=()=>{l(0,i.num_batch=((i==null?void 0:i.num_batch)??null)===null?512:null,i)};function ft(){i.num_batch=S(this.value),l(0,i)}function L(){i.num_batch=S(this.value),l(0,i)}const ot=()=>{l(0,i.num_keep=((i==null?void 0:i.num_keep)??null)===null?24:null,i)};function ct(){i.num_keep=S(this.value),l(0,i)}function F(){i.num_keep=S(this.value),l(0,i)}const fe=()=>{l(0,i.max_tokens=((i==null?void 0:i.max_tokens)??null)===null?128:null,i)};function be(){i.max_tokens=S(this.value),l(0,i)}function Re(){i.max_tokens=S(this.value),l(0,i)}const Tt=()=>{l(0,i.use_mmap=((i==null?void 0:i.use_mmap)??null)===null?!0:null,i)},zt=()=>{l(0,i.use_mlock=((i==null?void 0:i.use_mlock)??null)===null?!0:null,i)},ke=()=>{l(0,i.num_thread=((i==null?void 0:i.num_thread)??null)===null?2:null,i)};function Mt(){i.num_thread=S(this.value),l(0,i)}function Rt(){i.num_thread=S(this.value),l(0,i)}return a.$$set=Z=>{"admin"in Z&&l(1,o=Z.admin),"params"in Z&&l(0,i=Z.params)},a.$$.update=()=>{a.$$.dirty[0]&1&&i&&s("change",i)},[i,o,t,n,b,p,h,D,g,_e,ve,K,Oe,q,oe,he,M,ie,me,R,qe,Ke,ce,rt,Be,j,pe,de,z,Le,ze,O,B,it,U,A,C,Me,Fe,ft,L,ot,ct,F,fe,be,Re,Tt,zt,ke,Mt,Rt]}class ju extends Wn{constructor(e){super(),Gn(this,e,Su,Uu,Ln,{admin:1,params:0},null,[-1,-1])}}export{ju as A}; -//# sourceMappingURL=AdvancedParams.49eb3c20.js.map diff --git a/build/_app/immutable/chunks/AdvancedParams.49eb3c20.js.map b/build/_app/immutable/chunks/AdvancedParams.49eb3c20.js.map deleted file mode 100644 index 9925d6b41..000000000 --- a/build/_app/immutable/chunks/AdvancedParams.49eb3c20.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AdvancedParams.49eb3c20.js","sources":["../../../../../../src/lib/components/chat/Settings/Advanced/AdvancedParams.svelte"],"sourcesContent":["\n\n
\n\t
\n\t\t
\n\t\t\t
{$i18n.t('Seed')}
\n\n\t\t\t {\n\t\t\t\t\tparams.seed = (params?.seed ?? null) === null ? 0 : null;\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{#if (params?.seed ?? null) === null}\n\t\t\t\t\t {$i18n.t('Default')} \n\t\t\t\t{:else}\n\t\t\t\t\t {$i18n.t('Custom')} \n\t\t\t\t{/if}\n\t\t\t\n\t\t
\n\n\t\t{#if (params?.seed ?? null) !== null}\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t{/if}\n\t
\n\n\t
\n\t\t
\n\t\t\t
{$i18n.t('Stop Sequence')}
\n\n\t\t\t {\n\t\t\t\t\tparams.stop = (params?.stop ?? null) === null ? '' : null;\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{#if (params?.stop ?? null) === null}\n\t\t\t\t\t {$i18n.t('Default')} \n\t\t\t\t{:else}\n\t\t\t\t\t {$i18n.t('Custom')} \n\t\t\t\t{/if}\n\t\t\t\n\t\t
\n\n\t\t{#if (params?.stop ?? null) !== null}\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t{/if}\n\t
\n\n\t
\n\t\t
\n\t\t\t
{$i18n.t('Temperature')}
\n\n\t\t\t {\n\t\t\t\t\tparams.temperature = (params?.temperature ?? null) === null ? 0.8 : null;\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{#if (params?.temperature ?? null) === null}\n\t\t\t\t\t {$i18n.t('Default')} \n\t\t\t\t{:else}\n\t\t\t\t\t {$i18n.t('Custom')} \n\t\t\t\t{/if}\n\t\t\t\n\t\t
\n\n\t\t{#if (params?.temperature ?? null) !== null}\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t{/if}\n\t
\n\n\t
\n\t\t
\n\t\t\t
{$i18n.t('Mirostat')}
\n\n\t\t\t {\n\t\t\t\t\tparams.mirostat = (params?.mirostat ?? null) === null ? 0 : null;\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{#if (params?.mirostat ?? null) === null}\n\t\t\t\t\t{$i18n.t('Default')}\n\t\t\t\t{:else}\n\t\t\t\t\t{$i18n.t('Custom')}\n\t\t\t\t{/if}\n\t\t\t\n\t\t
\n\n\t\t{#if (params?.mirostat ?? null) !== null}\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t{/if}\n\t
\n\n\t
\n\t\t
\n\t\t\t
{$i18n.t('Mirostat Eta')}
\n\n\t\t\t {\n\t\t\t\t\tparams.mirostat_eta = (params?.mirostat_eta ?? null) === null ? 0.1 : null;\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{#if (params?.mirostat_eta ?? null) === null}\n\t\t\t\t\t{$i18n.t('Default')}\n\t\t\t\t{:else}\n\t\t\t\t\t{$i18n.t('Custom')}\n\t\t\t\t{/if}\n\t\t\t\n\t\t
\n\n\t\t{#if (params?.mirostat_eta ?? null) !== null}\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t{/if}\n\t
\n\n\t
\n\t\t
\n\t\t\t
{$i18n.t('Mirostat Tau')}
\n\n\t\t\t {\n\t\t\t\t\tparams.mirostat_tau = (params?.mirostat_tau ?? null) === null ? 5.0 : null;\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{#if (params?.mirostat_tau ?? null) === null}\n\t\t\t\t\t{$i18n.t('Default')}\n\t\t\t\t{:else}\n\t\t\t\t\t{$i18n.t('Custom')}\n\t\t\t\t{/if}\n\t\t\t\n\t\t
\n\n\t\t{#if (params?.mirostat_tau ?? null) !== null}\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t{/if}\n\t
\n\n\t
\n\t\t
\n\t\t\t
{$i18n.t('Top K')}
\n\n\t\t\t {\n\t\t\t\t\tparams.top_k = (params?.top_k ?? null) === null ? 40 : null;\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{#if (params?.top_k ?? null) === null}\n\t\t\t\t\t{$i18n.t('Default')}\n\t\t\t\t{:else}\n\t\t\t\t\t{$i18n.t('Custom')}\n\t\t\t\t{/if}\n\t\t\t\n\t\t
\n\n\t\t{#if (params?.top_k ?? null) !== null}\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t{/if}\n\t
\n\n\t
\n\t\t
\n\t\t\t
{$i18n.t('Top P')}
\n\n\t\t\t {\n\t\t\t\t\tparams.top_p = (params?.top_p ?? null) === null ? 0.9 : null;\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{#if (params?.top_p ?? null) === null}\n\t\t\t\t\t{$i18n.t('Default')}\n\t\t\t\t{:else}\n\t\t\t\t\t{$i18n.t('Custom')}\n\t\t\t\t{/if}\n\t\t\t\n\t\t
\n\n\t\t{#if (params?.top_p ?? null) !== null}\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t{/if}\n\t
\n\n\t
\n\t\t
\n\t\t\t
{$i18n.t('Frequency Penalty')}
\n\n\t\t\t {\n\t\t\t\t\tparams.frequency_penalty = (params?.frequency_penalty ?? null) === null ? 1.1 : null;\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{#if (params?.frequency_penalty ?? null) === null}\n\t\t\t\t\t{$i18n.t('Default')}\n\t\t\t\t{:else}\n\t\t\t\t\t{$i18n.t('Custom')}\n\t\t\t\t{/if}\n\t\t\t\n\t\t
\n\n\t\t{#if (params?.frequency_penalty ?? null) !== null}\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t{/if}\n\t
\n\n\t
\n\t\t
\n\t\t\t
{$i18n.t('Repeat Last N')}
\n\n\t\t\t {\n\t\t\t\t\tparams.repeat_last_n = (params?.repeat_last_n ?? null) === null ? 64 : null;\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{#if (params?.repeat_last_n ?? null) === null}\n\t\t\t\t\t{$i18n.t('Default')}\n\t\t\t\t{:else}\n\t\t\t\t\t{$i18n.t('Custom')}\n\t\t\t\t{/if}\n\t\t\t\n\t\t
\n\n\t\t{#if (params?.repeat_last_n ?? null) !== null}\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t{/if}\n\t
\n\n\t
\n\t\t
\n\t\t\t
{$i18n.t('Tfs Z')}
\n\n\t\t\t {\n\t\t\t\t\tparams.tfs_z = (params?.tfs_z ?? null) === null ? 1 : null;\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{#if (params?.tfs_z ?? null) === null}\n\t\t\t\t\t{$i18n.t('Default')}\n\t\t\t\t{:else}\n\t\t\t\t\t{$i18n.t('Custom')}\n\t\t\t\t{/if}\n\t\t\t\n\t\t
\n\n\t\t{#if (params?.tfs_z ?? null) !== null}\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t{/if}\n\t
\n\n\t
\n\t\t
\n\t\t\t
{$i18n.t('Context Length')}
\n\n\t\t\t {\n\t\t\t\t\tparams.num_ctx = (params?.num_ctx ?? null) === null ? 2048 : null;\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{#if (params?.num_ctx ?? null) === null}\n\t\t\t\t\t{$i18n.t('Default')}\n\t\t\t\t{:else}\n\t\t\t\t\t{$i18n.t('Custom')}\n\t\t\t\t{/if}\n\t\t\t\n\t\t
\n\n\t\t{#if (params?.num_ctx ?? null) !== null}\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t{/if}\n\t
\n\n\t
\n\t\t
\n\t\t\t
{$i18n.t('Batch Size (num_batch)')}
\n\n\t\t\t {\n\t\t\t\t\tparams.num_batch = (params?.num_batch ?? null) === null ? 512 : null;\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{#if (params?.num_batch ?? null) === null}\n\t\t\t\t\t{$i18n.t('Default')}\n\t\t\t\t{:else}\n\t\t\t\t\t{$i18n.t('Custom')}\n\t\t\t\t{/if}\n\t\t\t\n\t\t
\n\n\t\t{#if (params?.num_batch ?? null) !== null}\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t{/if}\n\t
\n\n\t
\n\t\t
\n\t\t\t
\n\t\t\t\t{$i18n.t('Tokens To Keep On Context Refresh (num_keep)')}\n\t\t\t
\n\n\t\t\t {\n\t\t\t\t\tparams.num_keep = (params?.num_keep ?? null) === null ? 24 : null;\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{#if (params?.num_keep ?? null) === null}\n\t\t\t\t\t{$i18n.t('Default')}\n\t\t\t\t{:else}\n\t\t\t\t\t{$i18n.t('Custom')}\n\t\t\t\t{/if}\n\t\t\t\n\t\t
\n\n\t\t{#if (params?.num_keep ?? null) !== null}\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t{/if}\n\t
\n\n\t
\n\t\t
\n\t\t\t
{$i18n.t('Max Tokens (num_predict)')}
\n\n\t\t\t {\n\t\t\t\t\tparams.max_tokens = (params?.max_tokens ?? null) === null ? 128 : null;\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{#if (params?.max_tokens ?? null) === null}\n\t\t\t\t\t{$i18n.t('Default')}\n\t\t\t\t{:else}\n\t\t\t\t\t{$i18n.t('Custom')}\n\t\t\t\t{/if}\n\t\t\t\n\t\t
\n\n\t\t{#if (params?.max_tokens ?? null) !== null}\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t{/if}\n\t
\n\n\t{#if admin}\n\t\t
\n\t\t\t
\n\t\t\t\t
{$i18n.t('use_mmap (Ollama)')}
\n\n\t\t\t\t {\n\t\t\t\t\t\tparams.use_mmap = (params?.use_mmap ?? null) === null ? true : null;\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{#if (params?.use_mmap ?? null) === null}\n\t\t\t\t\t\t{$i18n.t('Default')}\n\t\t\t\t\t{:else}\n\t\t\t\t\t\t{$i18n.t('On')}\n\t\t\t\t\t{/if}\n\t\t\t\t\n\t\t\t
\n\t\t
\n\n\t\t
\n\t\t\t
\n\t\t\t\t
{$i18n.t('use_mlock (Ollama)')}
\n\n\t\t\t\t {\n\t\t\t\t\t\tparams.use_mlock = (params?.use_mlock ?? null) === null ? true : null;\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{#if (params?.use_mlock ?? null) === null}\n\t\t\t\t\t\t{$i18n.t('Default')}\n\t\t\t\t\t{:else}\n\t\t\t\t\t\t{$i18n.t('On')}\n\t\t\t\t\t{/if}\n\t\t\t\t\n\t\t\t
\n\t\t
\n\n\t\t
\n\t\t\t
\n\t\t\t\t
{$i18n.t('num_thread (Ollama)')}
\n\n\t\t\t\t {\n\t\t\t\t\t\tparams.num_thread = (params?.num_thread ?? null) === null ? 2 : null;\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{#if (params?.num_thread ?? null) === null}\n\t\t\t\t\t\t{$i18n.t('Default')}\n\t\t\t\t\t{:else}\n\t\t\t\t\t\t{$i18n.t('Custom')}\n\t\t\t\t\t{/if}\n\t\t\t\t\n\t\t\t
\n\n\t\t\t{#if (params?.num_thread ?? null) !== null}\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t{/if}\n\t\t
\n\n\t\t\n\t{/if}\n
\n"],"names":["ctx","insert_hydration","target","span","anchor","set_data","t_value","div1","append_hydration","div0","input","set_input_value","dirty","to_number","div2","input0","input1","_a","create_if_block_4","create_if_block_3","create_if_block_2","if_block3","create_if_block_1","button0","div5","div4","div3","button1","div8","div7","div6","button2","t0","t0_value","t3","t3_value","t6","t6_value","create_if_block_34","if_block1","create_if_block_33","create_if_block_32","_b","create_if_block_31","create_if_block_30","if_block5","_c","create_if_block_29","create_if_block_28","if_block7","_d","create_if_block_27","create_if_block_26","if_block9","_e","create_if_block_25","create_if_block_24","if_block11","_f","create_if_block_23","create_if_block_22","if_block13","_g","create_if_block_21","create_if_block_20","if_block15","_h","create_if_block_19","create_if_block_18","if_block17","_i","create_if_block_17","create_if_block_16","if_block19","_j","create_if_block_15","create_if_block_14","if_block21","_k","create_if_block_13","create_if_block_12","if_block23","_l","create_if_block_11","create_if_block_10","if_block25","_m","create_if_block_9","create_if_block_8","if_block27","_n","create_if_block_7","create_if_block_6","if_block29","_o","create_if_block_5","create_if_block","div45","div11","div10","div9","button3","div14","div13","div12","button4","div17","div16","div15","button5","div20","div19","div18","button6","div23","div22","div21","button7","div26","div25","div24","button8","div29","div28","div27","button9","div32","div31","div30","button10","div35","div34","div33","button11","div38","div37","div36","button12","div41","div40","div39","button13","div44","div43","div42","button14","t4","t4_value","t8","t8_value","t12","t12_value","t16","t16_value","t20","t20_value","t24","t24_value","t28","t28_value","t32","t32_value","t36","t36_value","t40","t40_value","t44","t44_value","t48","t48_value","t52","t52_value","t56","t56_value","dispatch","createEventDispatcher","i18n","getContext","admin","$$props","params","$$invalidate"],"mappings":"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"} \ No newline at end of file diff --git a/build/_app/immutable/chunks/ArrowDownTray.dcc6ab67.js b/build/_app/immutable/chunks/ArrowDownTray.dcc6ab67.js deleted file mode 100644 index 25c0bdae9..000000000 --- a/build/_app/immutable/chunks/ArrowDownTray.dcc6ab67.js +++ /dev/null @@ -1,2 +0,0 @@ -import{s as d,u as l,v as h,h as c,d as n,j as s,i as m,w as f,r as u}from"./scheduler.2ec89978.js";import{S as k,i as v}from"./index.276f3600.js";function w(o){let e,r;return{c(){e=l("svg"),r=l("path"),this.h()},l(t){e=h(t,"svg",{xmlns:!0,fill:!0,viewBox:!0,"stroke-width":!0,stroke:!0,class:!0});var a=c(e);r=h(a,"path",{"stroke-linecap":!0,"stroke-linejoin":!0,d:!0}),c(r).forEach(n),a.forEach(n),this.h()},h(){s(r,"stroke-linecap","round"),s(r,"stroke-linejoin","round"),s(r,"d","M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3"),s(e,"xmlns","http://www.w3.org/2000/svg"),s(e,"fill","none"),s(e,"viewBox","0 0 24 24"),s(e,"stroke-width",o[1]),s(e,"stroke","currentColor"),s(e,"class",o[0])},m(t,a){m(t,e,a),f(e,r)},p(t,[a]){a&2&&s(e,"stroke-width",t[1]),a&1&&s(e,"class",t[0])},i:u,o:u,d(t){t&&n(e)}}}function g(o,e,r){let{className:t="size-4"}=e,{strokeWidth:a="1.5"}=e;return o.$$set=i=>{"className"in i&&r(0,t=i.className),"strokeWidth"in i&&r(1,a=i.strokeWidth)},[t,a]}class x extends k{constructor(e){super(),v(this,e,g,w,d,{className:0,strokeWidth:1})}}export{x as A}; -//# sourceMappingURL=ArrowDownTray.dcc6ab67.js.map diff --git a/build/_app/immutable/chunks/ArrowDownTray.dcc6ab67.js.map b/build/_app/immutable/chunks/ArrowDownTray.dcc6ab67.js.map deleted file mode 100644 index b2c1c38bb..000000000 --- a/build/_app/immutable/chunks/ArrowDownTray.dcc6ab67.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ArrowDownTray.dcc6ab67.js","sources":["../../../../../../src/lib/components/icons/ArrowDownTray.svelte"],"sourcesContent":["\n\n\n\t\n\n"],"names":["ctx","insert_hydration","target","svg","anchor","append_hydration","path","className","$$props","strokeWidth"],"mappings":"8rBASeA,EAAW,CAAA,CAAA,2CAElBA,EAAS,CAAA,CAAA,UANjBC,EAaKC,EAAAC,EAAAC,CAAA,EALJC,EAICF,EAAAG,CAAA,oCARaN,EAAW,CAAA,CAAA,mBAElBA,EAAS,CAAA,CAAA,gDAVL,UAAAO,EAAY,QAAA,EAAAC,GACZ,YAAAC,EAAc,KAAA,EAAAD"} \ No newline at end of file diff --git a/build/_app/immutable/chunks/Chat.2f049d04.js b/build/_app/immutable/chunks/Chat.2f049d04.js deleted file mode 100644 index 77b45060c..000000000 --- a/build/_app/immutable/chunks/Chat.2f049d04.js +++ /dev/null @@ -1,207 +0,0 @@ -import{s as Ye,F as ft,G as dt,H as ht,I as mt,A as oe,e as Fe,i as O,d as h,J as Xt,B as Et,C as Tn,p as ke,f as I,g as S,h as E,M as ut,Z as Ot,y as ee,z as gt,U as el,r as he,W as Gt,o as tl,l as _e,a as J,m as pe,c as Q,j as f,w as p,n as Se,S as Xe,Q as _t,L as St,t as Me,u as be,v as we,X as He,k as ct,T as At,R as _l,P as Un,N as Pn}from"./scheduler.2ec89978.js";import{S as Ke,i as xe,a as H,t as R,g as Ue,c as Pe,h as Cn,j as Vn,k as Yt,f as Oe,b as ie,d as ae,m as ce,e as ue}from"./index.276f3600.js";import{g as zn}from"./globals.7f7f1b26.js";import{e as nt}from"./each.de3f9353.js";import{a as Ee}from"./Toaster.svelte_svelte_type_style_lang.a694d3ca.js";import{M as Rn,m as jn}from"./Messages.0fec79ba.js";import"./dayjs.min.75d9117a.js";import{g as sl}from"./navigation.6e5a3761.js";import{p as Fn}from"./stores.0fdcfcce.js";import{p as qn,q as Wn,h as ll,c as Jt,g as kt,k as Kt,r as Zn,u as al,m as Bn,a as xt,S as pl,x as vl,y as $t,W as Nn,j as Lt,l as Gn,s as Jn,v as Qn,i as Wt,O as Xn}from"./index.3b6ce8f7.js";import{h as Ln,r as rl,i as bl,j as cl,v as wl,p as kl,s as Yn,k as Qt,a as yl,l as Kn}from"./index.1d78794b.js";import{i as xn}from"./index.b3521b72.js";import{e as $n,p as El,c as es,b as Zt,z as Il,k as ol,m as ts,A as ls}from"./index.180e8f9a.js";import{f as ns}from"./index.b8c0187f.js";import{i as ss,j as rs,k as os,l as is}from"./index.b46c02f3.js";import{T as as,S as cs,U as us,q as fs}from"./ShareChatModal.59f7f9c4.js";import{r as ds,s as hs,t as ms,v as gs}from"./index.6e6a3a3f.js";import{f as Sl}from"./index.703080a4.js";import{A as _s}from"./AddFilesPlaceholder.cd6db517.js";import"./sha256.65a6c54a.js";import{T as Dt}from"./Tooltip.3c52e2f2.js";import{f as An,h as ps}from"./updater.c075227d.js";import{D as ul,M as Ht}from"./Dropdown.9f1b9537.js";import{s as vs,g as bs,u as ws,a as ks,M as fl}from"./menu-trigger.1d870800.js";import{f as nl}from"./index.e8e699b3.js";import{S as Hn}from"./Switch.97783cfe.js";import{t as dl,s as ys}from"./index.6fcd4f2e.js";import{S as Es}from"./Selector.89e9dfa8.js";import{d as Is}from"./index.f2df4749.js";import{g as Ut}from"./spread.8a54911c.js";import{f as Ss}from"./FileSaver.min.898eb36f.js";import{b as Ds}from"./index.08c6a3d7.js";import"./singletons.02ae571c.js";import{M as Ms}from"./MenuLines.2c8cd836.js";import"./index.c4ca6160.js";const Ts=n=>({subIds:n&1}),Dl=n=>({subIds:n[0]});function Cs(n){let e;const t=n[6].default,l=ft(t,n,n[5],Dl);return{c(){l&&l.c()},l(s){l&&l.l(s)},m(s,o){l&&l.m(s,o),e=!0},p(s,[o]){l&&l.p&&(!e||o&33)&&dt(l,t,s,s[5],e?mt(t,s[5],o,Ts):ht(s[5]),Dl)},i(s){e||(H(l,s),e=!0)},o(s){R(l,s),e=!1},d(s){l&&l.d(s)}}}function Vs(n,e,t){let l,{$$slots:s={},$$scope:o}=e,{disabled:r=void 0}=e,{open:i=void 0}=e,{onOpenChange:a=void 0}=e;const{updateOption:u,ids:c,states:{subOpen:d}}=vs({disabled:r,onOpenChange:({next:v})=>(i!==v&&(a==null||a(v),t(2,i=v)),v)}),m=Is([c.menu,c.trigger],([v,y])=>({menu:v,trigger:y}));return oe(n,m,v=>t(0,l=v)),n.$$set=v=>{"disabled"in v&&t(3,r=v.disabled),"open"in v&&t(2,i=v.open),"onOpenChange"in v&&t(4,a=v.onOpenChange),"$$scope"in v&&t(5,o=v.$$scope)},n.$$.update=()=>{n.$$.dirty&4&&i!==void 0&&d.set(i),n.$$.dirty&8&&u("disabled",r)},[l,m,i,r,a,o,s]}class Bs extends Ke{constructor(e){super(),xe(this,e,Vs,Cs,Ye,{disabled:3,open:2,onOpenChange:4})}}const Ns=n=>({builder:n[0]&256}),Ml=n=>({builder:n[8]}),Ls=n=>({builder:n[0]&256}),Tl=n=>({builder:n[8]}),As=n=>({builder:n[0]&256}),Cl=n=>({builder:n[8]}),Hs=n=>({builder:n[0]&256}),Vl=n=>({builder:n[8]}),Os=n=>({builder:n[0]&256}),Bl=n=>({builder:n[8]}),Us=n=>({builder:n[0]&256}),Nl=n=>({builder:n[8]});function Ps(n){let e,t,l,s;const o=n[28].default,r=ft(o,n,n[27],Ml);let i=[n[8],n[13]],a={};for(let u=0;u{t=Vn(e,n[3],n[4]),t.start()})),l=!0)},o(c){R(i,c),l=!1},d(c){c&&h(e),i&&i.d(c),n[31](null),s=!1,gt(o)}}}function js(n){let e,t,l,s,o,r;const i=n[28].default,a=ft(i,n,n[27],Vl);let u=[n[8],n[13]],c={};for(let d=0;d{s&&(l&&l.end(1),t=Vn(e,n[3],n[4]),t.start())}),s=!0)},o(d){R(a,d),t&&t.invalidate(),d&&(l=Cn(e,n[5],n[6])),s=!1},d(d){d&&h(e),a&&a.d(d),n[30](null),d&&l&&l.end(),o=!1,gt(r)}}}function Fs(n){let e,t,l,s,o;const r=n[28].default,i=ft(r,n,n[27],Bl);let a=[n[8],n[13]],u={};for(let c=0;c{l&&(t||(t=Yt(e,n[1],n[2],!0)),t.run(1))}),l=!0)},o(c){R(i,c),c&&(t||(t=Yt(e,n[1],n[2],!1)),t.run(0)),l=!1},d(c){c&&h(e),i&&i.d(c),n[29](null),c&&t&&t.end(),s=!1,gt(o)}}}function qs(n){let e;const t=n[28].default,l=ft(t,n,n[27],Nl);return{c(){l&&l.c()},l(s){l&&l.l(s)},m(s,o){l&&l.m(s,o),e=!0},p(s,o){l&&l.p&&(!e||o[0]&134217984)&&dt(l,t,s,s[27],e?mt(t,s[27],o,Us):ht(s[27]),Nl)},i(s){e||(H(l,s),e=!0)},o(s){R(l,s),e=!1},d(s){l&&l.d(s)}}}function Ws(n){let e,t,l,s;const o=[qs,Fs,js,Rs,zs,Ps],r=[];function i(a,u){return a[7]&&a[9]?0:a[1]&&a[9]?1:a[3]&&a[5]&&a[9]?2:a[3]&&a[9]?3:a[5]&&a[9]?4:a[9]?5:-1}return~(e=i(n))&&(t=r[e]=o[e](n)),{c(){t&&t.c(),l=Fe()},l(a){t&&t.l(a),l=Fe()},m(a,u){~e&&r[e].m(a,u),O(a,l,u),s=!0},p(a,u){let c=e;e=i(a),e===c?~e&&r[e].p(a,u):(t&&(Ue(),R(r[c],1,1,()=>{r[c]=null}),Pe()),~e?(t=r[e],t?t.p(a,u):(t=r[e]=o[e](a),t.c()),H(t,1),t.m(l.parentNode,l)):t=null)},i(a){s||(H(t),s=!0)},o(a){R(t),s=!1},d(a){a&&h(l),~e&&r[e].d(a)}}}function Zs(n,e,t){let l;const s=["transition","transitionConfig","inTransition","inTransitionConfig","outTransition","outTransitionConfig","asChild","id","side","align","sideOffset","alignOffset","collisionPadding","avoidCollisions","collisionBoundary","sameWidth","fitViewport","strategy","overlap","el"];let o=Xt(e,s),r,i,{$$slots:a={},$$scope:u}=e,{transition:c=void 0}=e,{transitionConfig:d=void 0}=e,{inTransition:m=void 0}=e,{inTransitionConfig:v=void 0}=e,{outTransition:y=void 0}=e,{outTransitionConfig:b=void 0}=e,{asChild:g=!1}=e,{id:_=void 0}=e,{side:w="right"}=e,{align:C="start"}=e,{sideOffset:D=0}=e,{alignOffset:N=0}=e,{collisionPadding:T=8}=e,{avoidCollisions:A=!0}=e,{collisionBoundary:V=void 0}=e,{sameWidth:W=!1}=e,{fitViewport:j=!1}=e,{strategy:U="absolute"}=e,{overlap:F=!1}=e,{el:re=void 0}=e;const{elements:{subMenu:le},states:{subOpen:z},ids:M,getAttrs:B}=bs();oe(n,le,Z=>t(26,r=Z)),oe(n,z,Z=>t(9,i=Z));const $=An(),ne=B("sub-content");function fe(Z){ke[Z?"unshift":"push"](()=>{re=Z,t(0,re)})}function Be(Z){ke[Z?"unshift":"push"](()=>{re=Z,t(0,re)})}function Ge(Z){ke[Z?"unshift":"push"](()=>{re=Z,t(0,re)})}function $e(Z){ke[Z?"unshift":"push"](()=>{re=Z,t(0,re)})}function Ie(Z){ke[Z?"unshift":"push"](()=>{re=Z,t(0,re)})}return n.$$set=Z=>{e=Et(Et({},e),Tn(Z)),t(13,o=Xt(e,s)),"transition"in Z&&t(1,c=Z.transition),"transitionConfig"in Z&&t(2,d=Z.transitionConfig),"inTransition"in Z&&t(3,m=Z.inTransition),"inTransitionConfig"in Z&&t(4,v=Z.inTransitionConfig),"outTransition"in Z&&t(5,y=Z.outTransition),"outTransitionConfig"in Z&&t(6,b=Z.outTransitionConfig),"asChild"in Z&&t(7,g=Z.asChild),"id"in Z&&t(14,_=Z.id),"side"in Z&&t(15,w=Z.side),"align"in Z&&t(16,C=Z.align),"sideOffset"in Z&&t(17,D=Z.sideOffset),"alignOffset"in Z&&t(18,N=Z.alignOffset),"collisionPadding"in Z&&t(19,T=Z.collisionPadding),"avoidCollisions"in Z&&t(20,A=Z.avoidCollisions),"collisionBoundary"in Z&&t(21,V=Z.collisionBoundary),"sameWidth"in Z&&t(22,W=Z.sameWidth),"fitViewport"in Z&&t(23,j=Z.fitViewport),"strategy"in Z&&t(24,U=Z.strategy),"overlap"in Z&&t(25,F=Z.overlap),"el"in Z&&t(0,re=Z.el),"$$scope"in Z&&t(27,u=Z.$$scope)},n.$$.update=()=>{n.$$.dirty[0]&16384&&_&&M.menu.set(_),n.$$.dirty[0]&67108864&&t(8,l=r),n.$$.dirty[0]&256&&Object.assign(l,ne),n.$$.dirty[0]&67076096&&ws({side:w,align:C,sideOffset:D,alignOffset:N,collisionPadding:T,avoidCollisions:A,collisionBoundary:V,sameWidth:W,fitViewport:j,strategy:U,overlap:F})},[re,c,d,m,v,y,b,g,l,i,le,z,$,o,_,w,C,D,N,T,A,V,W,j,U,F,r,u,a,fe,Be,Ge,$e,Ie]}class Gs extends Ke{constructor(e){super(),xe(this,e,Zs,Ws,Ye,{transition:1,transitionConfig:2,inTransition:3,inTransitionConfig:4,outTransition:5,outTransitionConfig:6,asChild:7,id:14,side:15,align:16,sideOffset:17,alignOffset:18,collisionPadding:19,avoidCollisions:20,collisionBoundary:21,sameWidth:22,fitViewport:23,strategy:24,overlap:25,el:0},null,[-1,-1])}}const Js=n=>({builder:n&4}),Ll=n=>({builder:n[2]}),Qs=n=>({builder:n&4}),Al=n=>({builder:n[2]});function Xs(n){let e,t,l,s;const o=n[13].default,r=ft(o,n,n[12],Ll);let i=[n[2],n[6]],a={};for(let u=0;u{r[c]=null}),Pe(),t=r[e],t?t.p(a,u):(t=r[e]=o[e](a),t.c()),H(t,1),t.m(l.parentNode,l))},i(a){s||(H(t),s=!0)},o(a){R(t),s=!1},d(a){a&&h(l),r[e].d(a)}}}function xs(n,e,t){let l,s;const o=["disabled","asChild","id","el"];let r=Xt(e,o),i,a,{$$slots:u={},$$scope:c}=e,{disabled:d=!1}=e,{asChild:m=!1}=e,{id:v=void 0}=e,{el:y=void 0}=e;const{elements:{subTrigger:b},ids:g,getAttrs:_,options:w}=ks();oe(n,b,T=>t(11,a=T));const{disabled:C}=w;oe(n,C,T=>t(10,i=T));const D=An();function N(T){ke[T?"unshift":"push"](()=>{y=T,t(0,y)})}return n.$$set=T=>{e=Et(Et({},e),Tn(T)),t(6,r=Xt(e,o)),"disabled"in T&&t(7,d=T.disabled),"asChild"in T&&t(1,m=T.asChild),"id"in T&&t(8,v=T.id),"el"in T&&t(0,y=T.el),"$$scope"in T&&t(12,c=T.$$scope)},n.$$.update=()=>{n.$$.dirty&256&&v&&g.trigger.set(v),n.$$.dirty&2048&&t(2,l=a),n.$$.dirty&1152&&t(9,s={..._("sub-trigger"),...ps(d||i)}),n.$$.dirty&516&&Object.assign(l,s)},[y,m,l,b,C,D,r,d,v,s,i,a,c,u,N]}class $s extends Ke{constructor(e){super(),xe(this,e,xs,Ks,Ye,{disabled:7,asChild:1,id:8,el:0})}}function er(n){let e,t,l,s,o,r,i;return a(),{feed:u,reset:a};function a(){e=!0,t="",l=0,s=-1,o=void 0,r=void 0,i=""}function u(d){t=t?t+d:d,e&&tr(t)&&(t=t.slice(On.length)),e=!1;const m=t.length;let v=0,y=!1;for(;v0&&(t=t.slice(v))}function c(d,m,v,y){if(y===0){i.length>0&&(n({type:"event",id:o,event:r||void 0,data:i.slice(0,-1)}),i="",o=void 0),r=void 0;return}const b=v<0,g=d.slice(m,m+(b?y:v));let _=0;b?_=y:d[m+v+1]===" "?_=v+2:_=v+1;const w=m+_,C=y-_,D=d.slice(w,w+C).toString();if(g==="data")i+=D?"".concat(D,` -`):` -`;else if(g==="event")r=D;else if(g==="id"&&!D.includes("\0"))o=D;else if(g==="retry"){const N=parseInt(D,10);Number.isNaN(N)||n({type:"reconnect-interval",value:N})}}}const On=[239,187,191];function tr(n){return On.every((e,t)=>n.charCodeAt(t)===e)}class lr extends TransformStream{constructor(){let e;super({start(t){e=er(l=>{l.type==="event"&&t.enqueue(l)})},transform(t){e.feed(t)}})}}async function nr(n,e){const t=n.pipeThrough(new TextDecoderStream).pipeThrough(new lr).getReader();let l=sr(t);return e&&(l=rr(l)),l}async function*sr(n){var e,t,l;for(;;){const{value:s,done:o}=await n.read();if(o){yield{done:!0,value:""};break}if(!s)continue;const r=s.data;if(r.startsWith("[DONE]")){yield{done:!0,value:""};break}try{const i=JSON.parse(r);if(console.log(i),i.error){yield{done:!0,value:"",error:i.error};break}if(i.citations){yield{done:!1,value:"",citations:i.citations};continue}yield{done:!1,value:((l=(t=(e=i.choices)==null?void 0:e[0])==null?void 0:t.delta)==null?void 0:l.content)??"",usage:i.usage}}catch(i){console.error("Error extracting delta from SSE event:",i)}}}async function*rr(n){for await(const e of n){if(e.done){yield e;return}if(e.citations){yield e;continue}let t=e.value;if(t.length<5){yield{done:!1,value:t};continue}for(;t!="";){const l=Math.min(Math.floor(Math.random()*3)+1,t.length);yield{done:!1,value:t.slice(0,l)},(document==null?void 0:document.visibilityState)!=="hidden"&&await or(5),t=t.slice(l)}}}const or=n=>new Promise(e=>setTimeout(e,n));function Hl(n){let e,t=n[2]&&Ol(n);return{c(){t&&t.c(),e=Fe()},l(l){t&&t.l(l),e=Fe()},m(l,s){t&&t.m(l,s),O(l,e,s)},p(l,s){l[2]?t?(t.p(l,s),s&4&&H(t,1)):(t=Ol(l),t.c(),H(t,1),t.m(e.parentNode,e)):t&&(Ue(),R(t,1,1,()=>{t=null}),Pe())},d(l){l&&h(e),t&&t.d(l)}}}function Ol(n){let e,t,l,s,o=n[1].type+"",r,i,a,u,c,d=n[1].content+"",m,v,y,b,g,_,w=n[1].url&&Ul(),C=n[1].url&&Pl(),D=n[1].dismissible&&zl(n);return{c(){e=I("div"),t=I("div"),l=I("div"),s=I("div"),r=_e(o),a=J(),w&&w.c(),u=J(),c=I("div"),m=_e(d),v=J(),C&&C.c(),y=J(),b=I("div"),D&&D.c(),this.h()},l(N){e=S(N,"DIV",{class:!0});var T=E(e);t=S(T,"DIV",{class:!0});var A=E(t);l=S(A,"DIV",{class:!0});var V=E(l);s=S(V,"DIV",{class:!0});var W=E(s);r=pe(W,o),W.forEach(h),a=Q(V),w&&w.l(V),V.forEach(h),u=Q(A),c=S(A,"DIV",{class:!0});var j=E(c);m=pe(j,d),j.forEach(h),A.forEach(h),v=Q(T),C&&C.l(T),y=Q(T),b=S(T,"DIV",{class:!0});var U=E(b);D&&D.l(U),U.forEach(h),T.forEach(h),this.h()},h(){f(s,"class",i="text-xs font-black "+(n[3][n[1].type]??n[3].info)+" w-fit px-2 rounded uppercase line-clamp-1 mr-0.5"),f(l,"class","flex justify-between self-start"),f(c,"class","flex-1 text-xs text-gray-700 dark:text-white"),f(t,"class","flex flex-col md:flex-row md:items-center flex-1 text-sm w-fit gap-1.5"),f(b,"class","flex self-start"),f(e,"class","top-0 left-0 right-0 p-2 mx-4 px-3 flex justify-center items-center relative rounded-xl border border-gray-50 dark:border-gray-850 text-gray-800 dark:text-gary-100 bg-white dark:bg-gray-900 backdrop-blur-xl z-30")},m(N,T){O(N,e,T),p(e,t),p(t,l),p(l,s),p(s,r),p(l,a),w&&w.m(l,null),p(t,u),p(t,c),p(c,m),p(e,v),C&&C.m(e,null),p(e,y),p(e,b),D&&D.m(b,null),_=!0},p(N,T){(!_||T&2)&&o!==(o=N[1].type+"")&&Se(r,o),(!_||T&2&&i!==(i="text-xs font-black "+(N[3][N[1].type]??N[3].info)+" w-fit px-2 rounded uppercase line-clamp-1 mr-0.5"))&&f(s,"class",i),N[1].url?w||(w=Ul(),w.c(),w.m(l,null)):w&&(w.d(1),w=null),(!_||T&2)&&d!==(d=N[1].content+"")&&Se(m,d),N[1].url?C||(C=Pl(),C.c(),C.m(e,y)):C&&(C.d(1),C=null),N[1].dismissible?D?D.p(N,T):(D=zl(N),D.c(),D.m(b,null)):D&&(D.d(1),D=null)},i(N){_||(N&&el(()=>{_&&(g||(g=Yt(e,Sl,{delay:100,duration:300},!0)),g.run(1))}),_=!0)},o(N){N&&(g||(g=Yt(e,Sl,{delay:100,duration:300},!1)),g.run(0)),_=!1},d(N){N&&h(e),w&&w.d(),C&&C.d(),D&&D.d(),N&&g&&g.end()}}}function Ul(n){let e,t='Learn More
';return{c(){e=I("div"),e.innerHTML=t,this.h()},l(l){e=S(l,"DIV",{class:!0,"data-svelte-h":!0}),Xe(e)!=="svelte-1ofrdjc"&&(e.innerHTML=t),this.h()},h(){f(e,"class","flex md:hidden group w-fit md:items-center")},m(l,s){O(l,e,s)},d(l){l&&h(e)}}}function Pl(n){let e,t='Learn More
';return{c(){e=I("div"),e.innerHTML=t,this.h()},l(l){e=S(l,"DIV",{class:!0,"data-svelte-h":!0}),Xe(e)!=="svelte-15ujvd1"&&(e.innerHTML=t),this.h()},h(){f(e,"class","hidden md:flex group w-fit md:items-center")},m(l,s){O(l,e,s)},d(l){l&&h(e)}}}function zl(n){let e,t="×",l,s;return{c(){e=I("button"),e.textContent=t,this.h()},l(o){e=S(o,"BUTTON",{class:!0,"data-svelte-h":!0}),Xe(e)!=="svelte-17pf3tf"&&(e.textContent=t),this.h()},h(){f(e,"class","-mt-[3px] ml-1.5 mr-1 text-gray-400 dark:hover:text-white h-1")},m(o,r){O(o,e,r),l||(s=ee(e,"click",n[5]),l=!0)},p:he,d(o){o&&h(e),l=!1,s()}}}function ir(n){let e,t=!n[0]&&Hl(n);return{c(){t&&t.c(),e=Fe()},l(l){t&&t.l(l),e=Fe()},m(l,s){t&&t.m(l,s),O(l,e,s)},p(l,[s]){l[0]?t&&(t.d(1),t=null):t?t.p(l,s):(t=Hl(l),t.c(),t.m(e.parentNode,e))},i:he,o:he,d(l){l&&h(e),t&&t.d(l)}}}function ar(n,e,t){const l=Gt();let{banner:s={id:"",type:"info",title:"",content:"",url:"",dismissable:!0,timestamp:Math.floor(Date.now()/1e3)}}=e,{dismissed:o=!1}=e,r=!1;const i={info:"bg-blue-500/20 text-blue-700 dark:text-blue-200 ",success:"bg-green-500/20 text-green-700 dark:text-green-200",warning:"bg-yellow-500/20 text-yellow-700 dark:text-yellow-200",error:"bg-red-500/20 text-red-700 dark:text-red-200"},a=c=>{t(0,o=!0),l("dismiss",c)};tl(()=>{t(2,r=!0)});const u=()=>{a(s.id)};return n.$$set=c=>{"banner"in c&&t(1,s=c.banner),"dismissed"in c&&t(0,o=c.dismissed)},[o,s,r,i,a,u]}class cr extends Ke{constructor(e){super(),xe(this,e,ar,ir,Ye,{banner:1,dismissed:0})}}function Rl(n,e,t){const l=n.slice();return l[12]=e[t],l[14]=t,l}function jl(n){let e,t,l,s='
/
',o,r,i,a,u,c,d='',m,v,y=n[2].t("Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.")+"",b,g=nt(n[1]),_=[];for(let w=0;w0&&jl(n);return{c(){t&&t.c(),e=Fe()},l(l){t&&t.l(l),e=Fe()},m(l,s){t&&t.m(l,s),O(l,e,s)},p(l,[s]){l[1].length>0?t?t.p(l,s):(t=jl(l),t.c(),t.m(e.parentNode,e)):t&&(t.d(1),t=null)},i:he,o:he,d(l){l&&h(e),t&&t.d(l)}}}const fr=()=>{};function dr(n,e,t){let l,s;oe(n,qn,b=>t(9,s=b));const o=_t("i18n");oe(n,o,b=>t(2,l=b));let{files:r}=e,{prompt:i=""}=e,a=0,u=[];const c=()=>{t(0,a=Math.max(0,a-1))},d=()=>{t(0,a=Math.min(a+1,u.length-1))},m=async b=>{let g=b.content;if(b.content.includes("{{CLIPBOARD}}")){const C=await navigator.clipboard.readText().catch(T=>(Ee.error(l.t("Failed to read clipboard contents")),"{{CLIPBOARD}}"));console.log(C);const D=await navigator.clipboard.read();let N=null;for(const T of D)for(const A of T.types)if(A.startsWith("image/")){const V=await T.getType(A);N=URL.createObjectURL(V),console.log(`Image URL (${A}): ${N}`)}N&&t(6,r=[...r,{type:"image",url:N}]),g=b.content.replaceAll("{{CLIPBOARD}}",C)}t(5,i=g);const _=document.getElementById("chat-textarea");await Me(),_.style.height="",_.style.height=Math.min(_.scrollHeight,200)+"px",_==null||_.focus(),await Me();const w=Ln(i);if(w.length>0){const C=w.at(0);_.setSelectionRange(C==null?void 0:C.startIndex,C.endIndex+1)}},v=b=>{m(b)},y=b=>{t(0,a=b)};return n.$$set=b=>{"files"in b&&t(6,r=b.files),"prompt"in b&&t(5,i=b.prompt)},n.$$.update=()=>{n.$$.dirty&544&&t(1,u=s.filter(b=>b.command.includes(i)).sort((b,g)=>b.title.localeCompare(g.title))),n.$$.dirty&32&&i&&t(0,a=0)},[a,u,l,o,m,i,r,c,d,s,v,y]}class hr extends Ke{constructor(e){super(),xe(this,e,dr,ur,Ye,{files:6,prompt:5,selectUp:7,selectDown:8})}get selectUp(){return this.$$.ctx[7]}get selectDown(){return this.$$.ctx[8]}}function ql(n,e,t){const l=n.slice();return l[19]=e[t],l[21]=t,l}function Wl(n){let e,t,l,s='
#
',o,r,i,a,u,c,d=nt(n[3]),m=[];for(let g=0;g0||((o=(s=n[0].split(" "))==null?void 0:s.at(0))==null?void 0:o.substring(1).startsWith("http")),t,l=e&&Wl(n);return{c(){l&&l.c(),t=Fe()},l(r){l&&l.l(r),t=Fe()},m(r,i){l&&l.m(r,i),O(r,t,i)},p(r,[i]){var a,u;i&9&&(e=r[3].length>0||((u=(a=r[0].split(" "))==null?void 0:a.at(0))==null?void 0:u.substring(1).startsWith("http"))),e?l?l.p(r,i):(l=Wl(r),l.c(),l.m(t.parentNode,t)):l&&(l.d(1),l=null)},i:he,o:he,d(r){r&&h(t),l&&l.d(r)}}}const br=n=>n.substring(1).startsWith("https://www.youtube.com")||n.substring(1).startsWith("https://youtu.be"),wr=()=>{};function kr(n,e,t){let l,s,o;oe(n,Wn,T=>t(13,s=T));const r=_t("i18n");oe(n,r,T=>t(1,o=T));let{prompt:i=""}=e;const a=Gt();let u=0,c=[],d=[],m=[];const v=()=>{t(2,u=Math.max(0,u-1))},y=()=>{t(2,u=Math.min(u+1,c.length-1))},b=async T=>{a("select",T),t(0,i=rl(i));const A=document.getElementById("chat-textarea");await Me(),A==null||A.focus(),await Me()},g=async T=>{a("url",T),t(0,i=rl(i));const A=document.getElementById("chat-textarea");await Me(),A==null||A.focus(),await Me()},_=async T=>{a("youtube",T),t(0,i=rl(i));const A=document.getElementById("chat-textarea");await Me(),A==null||A.focus(),await Me()},w=T=>{console.log(T),b(T)},C=T=>{t(2,u=T)},D=()=>{var A,V;const T=(V=(A=i.split(" "))==null?void 0:A.at(0))==null?void 0:V.substring(1);bl(T)?_(T):Ee.error(o.t("Oops! Looks like the URL is invalid. Please double-check and try again."))},N=()=>{var A,V;const T=(V=(A=i.split(" "))==null?void 0:A.at(0))==null?void 0:V.substring(1);bl(T)?g(T):Ee.error(o.t("Oops! Looks like the URL is invalid. Please double-check and try again."))};return n.$$set=T=>{"prompt"in T&&t(0,i=T.prompt)},n.$$.update=()=>{n.$$.dirty&8194&&t(11,m=[...s.length>0?[{name:"All Documents",type:"collection",title:o.t("All Documents"),collection_names:s.map(T=>T.collection_name)}]:[],...s.reduce((T,A,V,W)=>{var j;return[...new Set([...T,...(((j=A==null?void 0:A.content)==null?void 0:j.tags)??[]).map(U=>U.name)])]},[]).map(T=>({name:T,type:"collection",collection_names:s.filter(A=>{var V;return(((V=A==null?void 0:A.content)==null?void 0:V.tags)??[]).map(W=>W.name).includes(T)}).map(A=>A.collection_name)}))]),n.$$.dirty&2049&&t(12,l=m.filter(T=>{var A,V;return T.name.includes(((V=(A=i.split(" "))==null?void 0:A.at(0))==null?void 0:V.substring(1))??"")}).sort((T,A)=>T.name.localeCompare(A.name))),n.$$.dirty&8193&&t(10,d=s.filter(T=>{var A,V;return T.name.includes(((V=(A=i.split(" "))==null?void 0:A.at(0))==null?void 0:V.substring(1))??"")}).sort((T,A)=>T.title.localeCompare(A.title))),n.$$.dirty&5120&&t(3,c=[...l,...d]),n.$$.dirty&4097&&i&&(t(2,u=0),console.log(l))},[i,o,u,c,r,b,g,_,v,y,d,m,l,s,w,C,D,N]}class yr extends Ke{constructor(e){super(),xe(this,e,kr,vr,Ye,{prompt:0,selectUp:8,selectDown:9})}get selectUp(){return this.$$.ctx[8]}get selectDown(){return this.$$.ctx[9]}}function Gl(n,e,t){const l=n.slice();return l[16]=e[t],l[18]=t,l}function Jl(n){let e,t=n[2].length>0&&Ql(n);return{c(){t&&t.c(),e=Fe()},l(l){t&&t.l(l),e=Fe()},m(l,s){t&&t.m(l,s),O(l,e,s)},p(l,s){l[2].length>0?t?t.p(l,s):(t=Ql(l),t.c(),t.m(e.parentNode,e)):t&&(t.d(1),t=null)},d(l){l&&h(e),t&&t.d(l)}}}function Ql(n){let e,t,l,s='
@
',o,r,i,a=nt(n[2]),u=[];for(let c=0;c{};function Sr(n,e,t){let l;oe(n,ll,_=>t(10,l=_));const s=_t("i18n");oe(n,s,_=>t(13,_));const o=Gt();let{prompt:r=""}=e,{user:i=null}=e,{chatInputPlaceholder:a=""}=e,{messages:u=[]}=e,c=0,d=[];const m=()=>{t(1,c=Math.max(0,c-1))},v=()=>{t(1,c=Math.min(c+1,d.length-1))},y=async _=>{t(0,r=""),o("select",_)},b=_=>{y(_)},g=_=>{t(1,c=_)};return n.$$set=_=>{"prompt"in _&&t(0,r=_.prompt),"user"in _&&t(5,i=_.user),"chatInputPlaceholder"in _&&t(6,a=_.chatInputPlaceholder),"messages"in _&&t(7,u=_.messages)},n.$$.update=()=>{n.$$.dirty&1025&&t(2,d=l.filter(_=>{var w,C;return _.name.includes(((C=(w=r.split(" "))==null?void 0:w.at(0))==null?void 0:C.substring(1))??"")}).sort((_,w)=>_.name.localeCompare(w.name))),n.$$.dirty&1&&r&&t(1,c=0)},[r,c,d,s,y,i,a,u,m,v,l,b,g]}class Dr extends Ke{constructor(e){super(),xe(this,e,Sr,Er,Ye,{prompt:0,user:5,chatInputPlaceholder:6,messages:7,selectUp:8,selectDown:9})}get selectUp(){return this.$$.ctx[8]}get selectDown(){return this.$$.ctx[9]}}function Mr(n){let e,t;return{c(){e=be("svg"),t=be("path"),this.h()},l(l){e=we(l,"svg",{xmlns:!0,fill:!0,viewBox:!0,"stroke-width":!0,stroke:!0,class:!0});var s=E(e);t=we(s,"path",{"stroke-linecap":!0,"stroke-linejoin":!0,d:!0}),E(t).forEach(h),s.forEach(h),this.h()},h(){f(t,"stroke-linecap","round"),f(t,"stroke-linejoin","round"),f(t,"d","M6 18 18 6M6 6l12 12"),f(e,"xmlns","http://www.w3.org/2000/svg"),f(e,"fill","none"),f(e,"viewBox","0 0 24 24"),f(e,"stroke-width",n[1]),f(e,"stroke","currentColor"),f(e,"class",n[0])},m(l,s){O(l,e,s),p(e,t)},p(l,[s]){s&2&&f(e,"stroke-width",l[1]),s&1&&f(e,"class",l[0])},i:he,o:he,d(l){l&&h(e)}}}function Tr(n,e,t){let{className:l="size-3.5"}=e,{strokeWidth:s="2"}=e;return n.$$set=o=>{"className"in o&&t(0,l=o.className),"strokeWidth"in o&&t(1,s=o.strokeWidth)},[l,s]}class Cr extends Ke{constructor(e){super(),xe(this,e,Tr,Mr,Ye,{className:0,strokeWidth:1})}}function Vr(n){let e,t,l;return{c(){e=be("svg"),t=be("path"),l=be("path"),this.h()},l(s){e=we(s,"svg",{xmlns:!0,viewBox:!0,fill:!0,class:!0});var o=E(e);t=we(o,"path",{"fill-rule":!0,d:!0,"clip-rule":!0}),E(t).forEach(h),l=we(o,"path",{d:!0}),E(l).forEach(h),o.forEach(h),this.h()},h(){f(t,"fill-rule","evenodd"),f(t,"d","M5.625 1.5H9a3.75 3.75 0 0 1 3.75 3.75v1.875c0 1.036.84 1.875 1.875 1.875H16.5a3.75 3.75 0 0 1 3.75 3.75v7.875c0 1.035-.84 1.875-1.875 1.875H5.625a1.875 1.875 0 0 1-1.875-1.875V3.375c0-1.036.84-1.875 1.875-1.875Zm6.905 9.97a.75.75 0 0 0-1.06 0l-3 3a.75.75 0 1 0 1.06 1.06l1.72-1.72V18a.75.75 0 0 0 1.5 0v-4.19l1.72 1.72a.75.75 0 1 0 1.06-1.06l-3-3Z"),f(t,"clip-rule","evenodd"),f(l,"d","M14.25 5.25a5.23 5.23 0 0 0-1.279-3.434 9.768 9.768 0 0 1 6.963 6.963A5.23 5.23 0 0 0 16.5 7.5h-1.875a.375.375 0 0 1-.375-.375V5.25Z"),f(e,"xmlns","http://www.w3.org/2000/svg"),f(e,"viewBox","0 0 24 24"),f(e,"fill","currentColor"),f(e,"class",n[0])},m(s,o){O(s,e,o),p(e,t),p(e,l)},p(s,[o]){o&1&&f(e,"class",s[0])},i:he,o:he,d(s){s&&h(e)}}}function Br(n,e,t){let{className:l="size-4"}=e;return n.$$set=s=>{"className"in s&&t(0,l=s.className)},[l]}class Nr extends Ke{constructor(e){super(),xe(this,e,Br,Vr,Ye,{className:0})}}function Lr(n){let e,t;return{c(){e=be("svg"),t=be("path"),this.h()},l(l){e=we(l,"svg",{xmlns:!0,viewBox:!0,fill:!0,class:!0});var s=E(e);t=we(s,"path",{d:!0}),E(t).forEach(h),s.forEach(h),this.h()},h(){f(t,"d","M21.721 12.752a9.711 9.711 0 0 0-.945-5.003 12.754 12.754 0 0 1-4.339 2.708 18.991 18.991 0 0 1-.214 4.772 17.165 17.165 0 0 0 5.498-2.477ZM14.634 15.55a17.324 17.324 0 0 0 .332-4.647c-.952.227-1.945.347-2.966.347-1.021 0-2.014-.12-2.966-.347a17.515 17.515 0 0 0 .332 4.647 17.385 17.385 0 0 0 5.268 0ZM9.772 17.119a18.963 18.963 0 0 0 4.456 0A17.182 17.182 0 0 1 12 21.724a17.18 17.18 0 0 1-2.228-4.605ZM7.777 15.23a18.87 18.87 0 0 1-.214-4.774 12.753 12.753 0 0 1-4.34-2.708 9.711 9.711 0 0 0-.944 5.004 17.165 17.165 0 0 0 5.498 2.477ZM21.356 14.752a9.765 9.765 0 0 1-7.478 6.817 18.64 18.64 0 0 0 1.988-4.718 18.627 18.627 0 0 0 5.49-2.098ZM2.644 14.752c1.682.971 3.53 1.688 5.49 2.099a18.64 18.64 0 0 0 1.988 4.718 9.765 9.765 0 0 1-7.478-6.816ZM13.878 2.43a9.755 9.755 0 0 1 6.116 3.986 11.267 11.267 0 0 1-3.746 2.504 18.63 18.63 0 0 0-2.37-6.49ZM12 2.276a17.152 17.152 0 0 1 2.805 7.121c-.897.23-1.837.353-2.805.353-.968 0-1.908-.122-2.805-.353A17.151 17.151 0 0 1 12 2.276ZM10.122 2.43a18.629 18.629 0 0 0-2.37 6.49 11.266 11.266 0 0 1-3.746-2.504 9.754 9.754 0 0 1 6.116-3.985Z"),f(e,"xmlns","http://www.w3.org/2000/svg"),f(e,"viewBox","0 0 24 24"),f(e,"fill","currentColor"),f(e,"class",n[0])},m(l,s){O(l,e,s),p(e,t)},p(l,[s]){s&1&&f(e,"class",l[0])},i:he,o:he,d(l){l&&h(e)}}}function Ar(n,e,t){let{className:l="size-4"}=e;return n.$$set=s=>{"className"in s&&t(0,l=s.className)},[l]}class Hr extends Ke{constructor(e){super(),xe(this,e,Ar,Lr,Ye,{className:0})}}function Or(n){let e,t;return{c(){e=be("svg"),t=be("path"),this.h()},l(l){e=we(l,"svg",{xmlns:!0,viewBox:!0,fill:!0,class:!0});var s=E(e);t=we(s,"path",{"fill-rule":!0,d:!0,"clip-rule":!0}),E(t).forEach(h),s.forEach(h),this.h()},h(){f(t,"fill-rule","evenodd"),f(t,"d","M12 6.75a5.25 5.25 0 0 1 6.775-5.025.75.75 0 0 1 .313 1.248l-3.32 3.319c.063.475.276.934.641 1.299.365.365.824.578 1.3.64l3.318-3.319a.75.75 0 0 1 1.248.313 5.25 5.25 0 0 1-5.472 6.756c-1.018-.086-1.87.1-2.309.634L7.344 21.3A3.298 3.298 0 1 1 2.7 16.657l8.684-7.151c.533-.44.72-1.291.634-2.309A5.342 5.342 0 0 1 12 6.75ZM4.117 19.125a.75.75 0 0 1 .75-.75h.008a.75.75 0 0 1 .75.75v.008a.75.75 0 0 1-.75.75h-.008a.75.75 0 0 1-.75-.75v-.008Z"),f(t,"clip-rule","evenodd"),f(e,"xmlns","http://www.w3.org/2000/svg"),f(e,"viewBox","0 0 24 24"),f(e,"fill","currentColor"),f(e,"class",n[0])},m(l,s){O(l,e,s),p(e,t)},p(l,[s]){s&1&&f(e,"class",l[0])},i:he,o:he,d(l){l&&h(e)}}}function Ur(n,e,t){let{className:l="size-4"}=e;return n.$$set=s=>{"className"in s&&t(0,l=s.className)},[l]}class Pr extends Ke{constructor(e){super(),xe(this,e,Ur,Or,Ye,{className:0})}}function Yl(n,e,t){const l=n.slice();return l[17]=e[t],l[18]=e,l[19]=t,l}function zr(n){let e;const t=n[9].default,l=ft(t,n,n[16],null);return{c(){l&&l.c()},l(s){l&&l.l(s)},m(s,o){l&&l.m(s,o),e=!0},p(s,o){l&&l.p&&(!e||o&65536)&&dt(l,t,s,s[16],e?mt(t,s[16],o,null):ht(s[16]),null)},i(s){e||(H(l,s),e=!0)},o(s){R(l,s),e=!1},d(s){l&&l.d(s)}}}function Rr(n){let e,t;return e=new Dt({props:{content:n[7].t("More"),$$slots:{default:[zr]},$$scope:{ctx:n}}}),{c(){ie(e.$$.fragment)},l(l){ae(e.$$.fragment,l)},m(l,s){ce(e,l,s),t=!0},p(l,s){const o={};s&128&&(o.content=l[7].t("More")),s&65536&&(o.$$scope={dirty:s,ctx:l}),e.$set(o)},i(l){t||(H(e.$$.fragment,l),t=!0)},o(l){R(e.$$.fragment,l),t=!1},d(l){ue(e,l)}}}function Kl(n){let e,t,l,s,o=nt(Object.keys(n[1])),r=[];for(let a=0;aR(r[a],1,1,()=>{r[a]=null});return{c(){e=I("div");for(let a=0;aOe(i,"state",d)),i.$on("change",m),{c(){e=I("div"),t=I("div"),ie(l.$$.fragment),s=J(),ie(o.$$.fragment),r=J(),ie(i.$$.fragment),u=J(),this.h()},l(b){e=S(b,"DIV",{class:!0});var g=E(e);t=S(g,"DIV",{class:!0});var _=E(t);ae(l.$$.fragment,_),s=Q(_),ae(o.$$.fragment,_),_.forEach(h),r=Q(g),ae(i.$$.fragment,g),u=Q(g),g.forEach(h),this.h()},h(){f(t,"class","flex-1 flex items-center gap-2"),f(e,"class","flex gap-2 items-center px-3 py-2 text-sm font-medium cursor-pointer rounded-xl")},m(b,g){O(b,e,g),p(e,t),ce(l,t,null),p(t,s),ce(o,t,null),p(e,r),ce(i,e,null),p(e,u),c=!0},p(b,g){var C;n=b;const _={};g&2&&(_.content=((C=n[1][n[17]])==null?void 0:C.description)??""),g&65538&&(_.$$scope={dirty:g,ctx:n}),o.$set(_);const w={};!a&&g&2&&(a=!0,w.state=n[1][n[17]].enabled,He(()=>a=!1)),i.$set(w)},i(b){c||(H(l.$$.fragment,b),H(o.$$.fragment,b),H(i.$$.fragment,b),c=!0)},o(b){R(l.$$.fragment,b),R(o.$$.fragment,b),R(i.$$.fragment,b),c=!1},d(b){b&&h(e),ue(l),ue(o),ue(i)}}}function $l(n){let e,t,l,s,o,r=n[7].t("Web Search")+"",i,a,u,c,d,m,v;l=new Hr({});function y(g){n[12](g)}let b={};return n[2]!==void 0&&(b.state=n[2]),u=new Hn({props:b}),ke.push(()=>Oe(u,"state",y)),{c(){e=I("div"),t=I("div"),ie(l.$$.fragment),s=J(),o=I("div"),i=_e(r),a=J(),ie(u.$$.fragment),d=J(),m=I("hr"),this.h()},l(g){e=S(g,"DIV",{class:!0});var _=E(e);t=S(_,"DIV",{class:!0});var w=E(t);ae(l.$$.fragment,w),s=Q(w),o=S(w,"DIV",{class:!0});var C=E(o);i=pe(C,r),C.forEach(h),w.forEach(h),a=Q(_),ae(u.$$.fragment,_),_.forEach(h),d=Q(g),m=S(g,"HR",{class:!0}),this.h()},h(){f(o,"class","line-clamp-1"),f(t,"class","flex-1 flex items-center gap-2"),f(e,"class","flex gap-2 items-center px-3 py-2 text-sm font-medium cursor-pointer rounded-xl"),f(m,"class","border-gray-100 dark:border-gray-800 my-1")},m(g,_){O(g,e,_),p(e,t),ce(l,t,null),p(t,s),p(t,o),p(o,i),p(e,a),ce(u,e,null),O(g,d,_),O(g,m,_),v=!0},p(g,_){(!v||_&128)&&r!==(r=g[7].t("Web Search")+"")&&Se(i,r);const w={};!c&&_&4&&(c=!0,w.state=g[2],He(()=>c=!1)),u.$set(w)},i(g){v||(H(l.$$.fragment,g),H(u.$$.fragment,g),v=!0)},o(g){R(l.$$.fragment,g),R(u.$$.fragment,g),v=!1},d(g){g&&(h(e),h(d),h(m)),ue(l),ue(u)}}}function Fr(n){let e,t,l,s=n[7].t("Upload Files")+"",o,r;return e=new Nr({}),{c(){ie(e.$$.fragment),t=J(),l=I("div"),o=_e(s),this.h()},l(i){ae(e.$$.fragment,i),t=Q(i),l=S(i,"DIV",{class:!0});var a=E(l);o=pe(a,s),a.forEach(h),this.h()},h(){f(l,"class","line-clamp-1")},m(i,a){ce(e,i,a),O(i,t,a),O(i,l,a),p(l,o),r=!0},p(i,a){(!r||a&128)&&s!==(s=i[7].t("Upload Files")+"")&&Se(o,s)},i(i){r||(H(e.$$.fragment,i),r=!0)},o(i){R(e.$$.fragment,i),r=!1},d(i){i&&(h(t),h(l)),ue(e,i)}}}function qr(n){var a,u;let e=Object.keys(n[1]).length>0,t,l,s,o,r=e&&Kl(n),i=((u=(a=n[6])==null?void 0:a.features)==null?void 0:u.enable_web_search)&&$l(n);return s=new Ht({props:{class:"flex gap-2 items-center px-3 py-2 text-sm font-medium cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl",$$slots:{default:[Fr]},$$scope:{ctx:n}}}),s.$on("click",n[13]),{c(){r&&r.c(),t=J(),i&&i.c(),l=J(),ie(s.$$.fragment)},l(c){r&&r.l(c),t=Q(c),i&&i.l(c),l=Q(c),ae(s.$$.fragment,c)},m(c,d){r&&r.m(c,d),O(c,t,d),i&&i.m(c,d),O(c,l,d),ce(s,c,d),o=!0},p(c,d){var v,y;d&2&&(e=Object.keys(c[1]).length>0),e?r?(r.p(c,d),d&2&&H(r,1)):(r=Kl(c),r.c(),H(r,1),r.m(t.parentNode,t)):r&&(Ue(),R(r,1,1,()=>{r=null}),Pe()),(y=(v=c[6])==null?void 0:v.features)!=null&&y.enable_web_search?i?(i.p(c,d),d&64&&H(i,1)):(i=$l(c),i.c(),H(i,1),i.m(l.parentNode,l)):i&&(Ue(),R(i,1,1,()=>{i=null}),Pe());const m={};d&65664&&(m.$$scope={dirty:d,ctx:c}),s.$set(m)},i(c){o||(H(r),H(i),H(s.$$.fragment,c),o=!0)},o(c){R(r),R(i),R(s.$$.fragment,c),o=!1},d(c){c&&(h(t),h(l)),r&&r.d(c),i&&i.d(c),ue(s,c)}}}function Wr(n){let e,t,l;return t=new fl({props:{class:"w-full max-w-[200px] rounded-xl px-1 py-1 border-gray-300/30 dark:border-gray-700/50 z-50 bg-white dark:bg-gray-850 dark:text-white shadow",sideOffset:15,alignOffset:-8,side:"top",align:"start",transition:nl,$$slots:{default:[qr]},$$scope:{ctx:n}}}),{c(){e=I("div"),ie(t.$$.fragment),this.h()},l(s){e=S(s,"DIV",{slot:!0});var o=E(e);ae(t.$$.fragment,o),o.forEach(h),this.h()},h(){f(e,"slot","content")},m(s,o){O(s,e,o),ce(t,e,null),l=!0},p(s,o){const r={};o&65743&&(r.$$scope={dirty:o,ctx:s}),t.$set(r)},i(s){l||(H(t.$$.fragment,s),l=!0)},o(s){R(t.$$.fragment,s),l=!1},d(s){s&&h(e),ue(t)}}}function Zr(n){let e,t,l;function s(r){n[14](r)}let o={$$slots:{content:[Wr],default:[Rr]},$$scope:{ctx:n}};return n[5]!==void 0&&(o.show=n[5]),e=new ul({props:o}),ke.push(()=>Oe(e,"show",s)),e.$on("change",n[15]),{c(){ie(e.$$.fragment)},l(r){ae(e.$$.fragment,r)},m(r,i){ce(e,r,i),l=!0},p(r,[i]){const a={};i&65743&&(a.$$scope={dirty:i,ctx:r}),!t&&i&32&&(t=!0,a.show=r[5],He(()=>t=!1)),e.$set(a)},i(r){l||(H(e.$$.fragment,r),l=!0)},o(r){R(e.$$.fragment,r),l=!1},d(r){ue(e,r)}}}function Gr(n,e,t){let l,s;oe(n,Jt,D=>t(6,l=D));let{$$slots:o={},$$scope:r}=e;const i=_t("i18n");oe(n,i,D=>t(7,s=D));let{uploadFilesHandler:a}=e,{selectedToolIds:u=[]}=e,{webSearchEnabled:c}=e,{tools:d={}}=e,{onClose:m}=e,v=!1;function y(D,N){n.$$.not_equal(d[N].enabled,D)&&(d[N].enabled=D,t(1,d),t(0,u))}const b=(D,N)=>{t(0,u=N.detail?[...u,D]:u.filter(T=>T!==D))};function g(D){c=D,t(2,c)}const _=()=>{a()};function w(D){v=D,t(5,v)}const C=D=>{D.detail===!1&&m()};return n.$$set=D=>{"uploadFilesHandler"in D&&t(3,a=D.uploadFilesHandler),"selectedToolIds"in D&&t(0,u=D.selectedToolIds),"webSearchEnabled"in D&&t(2,c=D.webSearchEnabled),"tools"in D&&t(1,d=D.tools),"onClose"in D&&t(4,m=D.onClose),"$$scope"in D&&t(16,r=D.$$scope)},n.$$.update=()=>{n.$$.dirty&3&&t(1,d=Object.fromEntries(Object.keys(d).map(D=>[D,{...d[D],enabled:u.includes(D)}])))},[u,d,c,a,m,v,l,s,i,o,y,b,g,_,w,C,r]}class Jr extends Ke{constructor(e){super(),xe(this,e,Gr,Zr,Ye,{uploadFilesHandler:3,selectedToolIds:0,webSearchEnabled:2,tools:1,onClose:4})}}function Qr(n){let e,t;return{c(){e=be("svg"),t=be("path"),this.h()},l(l){e=we(l,"svg",{"aria-hidden":!0,xmlns:!0,fill:!0,viewBox:!0,"stroke-width":!0,stroke:!0,class:!0});var s=E(e);t=we(s,"path",{"fill-rule":!0,d:!0,"clip-rule":!0}),E(t).forEach(h),s.forEach(h),this.h()},h(){f(t,"fill-rule","evenodd"),f(t,"d","M12 5a7 7 0 0 0-7 7v1.17c.313-.11.65-.17 1-.17h2a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1H6a3 3 0 0 1-3-3v-6a9 9 0 0 1 18 0v6a3 3 0 0 1-3 3h-2a1 1 0 0 1-1-1v-6a1 1 0 0 1 1-1h2c.35 0 .687.06 1 .17V12a7 7 0 0 0-7-7Z"),f(t,"clip-rule","evenodd"),f(e,"aria-hidden","true"),f(e,"xmlns","http://www.w3.org/2000/svg"),f(e,"fill","currentColor"),f(e,"viewBox","0 0 24 24"),f(e,"stroke-width",n[1]),f(e,"stroke","currentColor"),f(e,"class",n[0])},m(l,s){O(l,e,s),p(e,t)},p(l,[s]){s&2&&f(e,"stroke-width",l[1]),s&1&&f(e,"class",l[0])},i:he,o:he,d(l){l&&h(e)}}}function Xr(n,e,t){let{className:l="w-4 h-4"}=e,{strokeWidth:s="0"}=e;return n.$$set=o=>{"className"in o&&t(0,l=o.className),"strokeWidth"in o&&t(1,s=o.strokeWidth)},[l,s]}class Yr extends Ke{constructor(e){super(),xe(this,e,Xr,Qr,Ye,{className:0,strokeWidth:1})}}function en(n,e,t){const l=n.slice();return l[29]=e[t],l}function tn(n){let e,t;return{c(){e=I("div"),this.h()},l(l){e=S(l,"DIV",{class:!0,style:!0}),E(e).forEach(h),this.h()},h(){f(e,"class",t="w-[2px] "+(n[0]?" bg-gray-500 dark:bg-gray-400 ":"bg-indigo-500 dark:bg-indigo-400 ")+" inline-block h-full"),ct(e,"height",Math.min(100,Math.max(14,n[29]*100))+"%")},m(l,s){O(l,e,s)},p(l,s){s[0]&1&&t!==(t="w-[2px] "+(l[0]?" bg-gray-500 dark:bg-gray-400 ":"bg-indigo-500 dark:bg-indigo-400 ")+" inline-block h-full")&&f(e,"class",t),s[0]&4&&ct(e,"height",Math.min(100,Math.max(14,l[29]*100))+"%")},d(l){l&&h(e)}}}function Kr(n){let e,t='',l,s;return{c(){e=I("button"),e.innerHTML=t,this.h()},l(o){e=S(o,"BUTTON",{type:!0,class:!0,"data-svelte-h":!0}),Xe(e)!=="svelte-1qzkal"&&(e.innerHTML=t),this.h()},h(){f(e,"type","button"),f(e,"class","p-1.5 bg-indigo-500 text-white dark:bg-indigo-500 dark:text-blue-950 rounded-full")},m(o,r){O(o,e,r),l||(s=ee(e,"click",n[10]),l=!0)},p:he,d(o){o&&h(e),l=!1,s()}}}function xr(n){let e,t=``;return{c(){e=I("div"),e.innerHTML=t,this.h()},l(l){e=S(l,"DIV",{class:!0,"data-svelte-h":!0}),Xe(e)!=="svelte-otpw2s"&&(e.innerHTML=t),this.h()},h(){f(e,"class","text-gray-500 rounded-full cursor-not-allowed")},m(l,s){O(l,e,s)},p:he,d(l){l&&h(e)}}}function $r(n){let e,t,l,s,o,r,i,a,u,c,d,m,v=n[5](n[1])+"",y,b,g,_,w,C,D,N=nt(n[2].slice().reverse()),T=[];for(let j=0;jt(18,s=z)),oe(n,Jt,z=>t(19,o=z));const r=_t("i18n");oe(n,r,z=>t(17,l=z));const i=Gt();let{recording:a=!1}=e,u=!1,c=!1,d=0,m=null,v="";const y=()=>{m=setInterval(()=>{t(1,d++,d)},1e3)},b=()=>{clearInterval(m),t(1,d=0)},g=z=>{const M=Math.floor(z/60),B=z%60,$=B<10?`0${B}`:B;return`${M}:${$}`};let _,w,C=[];const D=-45;let N=Array(ln).fill(0);const T=z=>{let M=0;for(let B=0;B{z=z*10;const B=Math.pow(z,1.5);return Math.min(1,Math.max(.01,B))},V=z=>{const M=new AudioContext,B=M.createMediaStreamSource(z),$=M.createAnalyser();$.minDecibels=D,B.connect($);const ne=$.frequencyBinCount,fe=new Uint8Array(ne),Be=new Uint8Array($.fftSize);(()=>{const $e=()=>{if(!(!a||u)){if(a&&!u){$.getByteTimeDomainData(Be),$.getByteFrequencyData(fe);const Ie=T(Be);N.push(A(Ie)),N.length>=ln&&N.shift(),t(2,N)}window.requestAnimationFrame($e)}};window.requestAnimationFrame($e)})()},W=async z=>{await Me();const M=cl(z,"recording.wav"),B=await dl(localStorage.token,M).catch($=>(Ee.error($),null));B&&(console.log(B.text),i("confirm",B.text))},j=async()=>{var M,B;y();const z=await navigator.mediaDevices.getUserMedia({audio:!0});if(w=new MediaRecorder(z),w.onstart=()=>{console.log("Recording started"),C=[],V(z)},w.ondataavailable=$=>C.push($.data),w.onstop=async()=>{var $,ne;if(console.log("Recording stopped"),(((ne=($=s==null?void 0:s.audio)==null?void 0:$.stt)==null?void 0:ne.engine)??"")==="web")C=[];else{if(c){const fe=new Blob(C,{type:"audio/wav"});await W(fe),c=!1,t(0,u=!1)}C=[],t(8,a=!1)}},w.start(),(o.audio.stt.engine==="web"||(((B=(M=s==null?void 0:s.audio)==null?void 0:M.stt)==null?void 0:B.engine)??"")==="web")&&("SpeechRecognition"in window||"webkitSpeechRecognition"in window)){_=new(window.SpeechRecognition||window.webkitSpeechRecognition),_.continuous=!0;const $=2e3;let ne;_.start(),_.onresult=async fe=>{var Ge;clearTimeout(ne),console.log(fe);const Be=fe.results[Object.keys(fe.results).length-1][0].transcript;v=`${v}${Be}`,await Me(),(Ge=document.getElementById("chat-textarea"))==null||Ge.focus(),ne=setTimeout(()=>{console.log("Speech recognition turned off due to inactivity."),_.stop()},$)},_.onend=function(){console.log("recognition ended"),F(),i("confirm",v),c=!1,t(0,u=!1)},_.onerror=function(fe){console.log(fe),Ee.error(l.t("Speech recognition error: {{error}}",{error:fe.error})),i("cancel"),U()}}},U=async()=>{a&&w&&await w.stop(),b(),C=[]},F=async()=>{t(0,u=!0),c=!0,a&&w&&await w.stop(),clearInterval(m)},re=async()=>{i("cancel"),U()},le=async()=>{await F()};return n.$$set=z=>{"recording"in z&&t(8,a=z.recording)},n.$$.update=()=>{n.$$.dirty[0]&256&&(a?j():U())},[u,d,N,r,i,g,U,F,a,re,le]}class to extends Ke{constructor(e){super(),xe(this,e,eo,$r,Ye,{recording:8},null,[-1,-1])}}function nn(n,e,t){const l=n.slice();return l[74]=e[t],l[76]=t,l}function sn(n){let e,t,l,s,o,r,i;return o=new _s({}),{c(){e=I("div"),t=I("div"),l=I("div"),s=I("div"),ie(o.$$.fragment),this.h()},l(a){e=S(a,"DIV",{class:!0,id:!0,role:!0,"aria-label":!0});var u=E(e);t=S(u,"DIV",{class:!0});var c=E(t);l=S(c,"DIV",{class:!0});var d=E(l);s=S(d,"DIV",{class:!0});var m=E(s);ae(o.$$.fragment,m),m.forEach(h),d.forEach(h),c.forEach(h),u.forEach(h),this.h()},h(){f(s,"class","max-w-md"),f(l,"class","m-auto pt-64 flex flex-col justify-center"),f(t,"class","absolute w-full h-full backdrop-blur bg-gray-800/40 flex justify-center"),f(e,"class",r="fixed "+(n[24]?"left-0 md:left-[260px] md:w-[calc(100%-260px)]":"left-0")+" w-full h-full flex z-50 touch-none pointer-events-none"),f(e,"id","dropzone"),f(e,"role","region"),f(e,"aria-label","Drag and Drop Container")},m(a,u){O(a,e,u),p(e,t),p(t,l),p(l,s),ce(o,s,null),i=!0},p(a,u){(!i||u[0]&16777216&&r!==(r="fixed "+(a[24]?"left-0 md:left-[260px] md:w-[calc(100%-260px)]":"left-0")+" w-full h-full flex z-50 touch-none pointer-events-none"))&&f(e,"class",r)},i(a){i||(H(o.$$.fragment,a),i=!0)},o(a){R(o.$$.fragment,a),i=!1},d(a){a&&h(e),ue(o)}}}function rn(n){let e,t,l='',s,o;return{c(){e=I("div"),t=I("button"),t.innerHTML=l,this.h()},l(r){e=S(r,"DIV",{class:!0});var i=E(e);t=S(i,"BUTTON",{class:!0,"data-svelte-h":!0}),Xe(t)!=="svelte-a2mahu"&&(t.innerHTML=l),i.forEach(h),this.h()},h(){f(t,"class","bg-white border border-gray-100 dark:border-none dark:bg-white/20 p-1.5 rounded-full"),f(e,"class","absolute -top-12 left-0 right-0 flex justify-center z-30")},m(r,i){O(r,e,i),p(e,t),s||(o=ee(t,"click",n[35]),s=!0)},p:he,d(r){r&&h(e),s=!1,o()}}}function lo(n){let e,t,l;function s(r){n[40](r)}let o={};return n[1]!==void 0&&(o.prompt=n[1]),e=new yr({props:o}),n[39](e),ke.push(()=>Oe(e,"prompt",s)),e.$on("youtube",n[41]),e.$on("url",n[42]),e.$on("select",n[43]),{c(){ie(e.$$.fragment)},l(r){ae(e.$$.fragment,r)},m(r,i){ce(e,r,i),l=!0},p(r,i){const a={};!t&&i[0]&2&&(t=!0,a.prompt=r[1],He(()=>t=!1)),e.$set(a)},i(r){l||(H(e.$$.fragment,r),l=!0)},o(r){R(e.$$.fragment,r),l=!1},d(r){n[39](null),ue(e,r)}}}function no(n){let e,t,l,s;function o(a){n[37](a)}function r(a){n[38](a)}let i={};return n[1]!==void 0&&(i.prompt=n[1]),n[3]!==void 0&&(i.files=n[3]),e=new hr({props:i}),n[36](e),ke.push(()=>Oe(e,"prompt",o)),ke.push(()=>Oe(e,"files",r)),{c(){ie(e.$$.fragment)},l(a){ae(e.$$.fragment,a)},m(a,u){ce(e,a,u),s=!0},p(a,u){const c={};!t&&u[0]&2&&(t=!0,c.prompt=a[1],He(()=>t=!1)),!l&&u[0]&8&&(l=!0,c.files=a[3],He(()=>l=!1)),e.$set(c)},i(a){s||(H(e.$$.fragment,a),s=!0)},o(a){R(e.$$.fragment,a),s=!1},d(a){n[36](null),ue(e,a)}}}function on(n){let e,t,l,s,o,r,i,a,u=n[0].name+"",c,d,m,v,y,b,g,_;return y=new Cr({}),{c(){e=I("div"),t=I("div"),l=I("img"),o=J(),r=I("div"),i=_e("Talking to "),a=I("span"),c=_e(u),d=J(),m=I("div"),v=I("button"),ie(y.$$.fragment),this.h()},l(w){e=S(w,"DIV",{class:!0});var C=E(e);t=S(C,"DIV",{class:!0});var D=E(t);l=S(D,"IMG",{crossorigin:!0,alt:!0,class:!0,src:!0}),o=Q(D),r=S(D,"DIV",{});var N=E(r);i=pe(N,"Talking to "),a=S(N,"SPAN",{class:!0});var T=E(a);c=pe(T,u),T.forEach(h),N.forEach(h),D.forEach(h),d=Q(C),m=S(C,"DIV",{});var A=E(m);v=S(A,"BUTTON",{class:!0});var V=E(v);ae(y.$$.fragment,V),V.forEach(h),A.forEach(h),C.forEach(h),this.h()},h(){var w,C,D;f(l,"crossorigin","anonymous"),f(l,"alt","model profile"),f(l,"class","size-5 max-w-[28px] object-cover rounded-full"),At(l.src,s=((D=(C=(w=n[12].find(n[48]))==null?void 0:w.info)==null?void 0:C.meta)==null?void 0:D.profile_image_url)??(n[23].language==="dg-DG"?"/doge.png":`${xt}/static/favicon.png`))||f(l,"src",s),f(a,"class","font-medium"),f(t,"class","flex items-center gap-2 text-sm dark:text-gray-500"),f(v,"class","flex items-center"),f(e,"class","px-3 py-2.5 text-left w-full flex justify-between items-center absolute bottom-0 left-0 right-0 bg-gradient-to-t from-50% from-white dark:from-gray-900")},m(w,C){O(w,e,C),p(e,t),p(t,l),p(t,o),p(t,r),p(r,i),p(r,a),p(a,c),p(e,d),p(e,m),p(m,v),ce(y,v,null),b=!0,g||(_=ee(v,"click",n[49]),g=!0)},p(w,C){var D,N,T;(!b||C[0]&8392705&&!At(l.src,s=((T=(N=(D=w[12].find(w[48]))==null?void 0:D.info)==null?void 0:N.meta)==null?void 0:T.profile_image_url)??(w[23].language==="dg-DG"?"/doge.png":`${xt}/static/favicon.png`)))&&f(l,"src",s),(!b||C[0]&1)&&u!==(u=w[0].name+"")&&Se(c,u)},i(w){b||(H(y.$$.fragment,w),b=!0)},o(w){R(y.$$.fragment,w),b=!1},d(w){w&&h(e),ue(y),g=!1,_()}}}function so(n){let e,t,l,s,o,r,i,a,u,c,d,m,v,y=n[10].length==0||n[10].at(-1).done==!0,b,g,_,w,C,D,N,T,A,V=n[3].length>0&&an(n);function W(M){n[61](M)}function j(M){n[62](M)}let U={tools:n[26].reduce(n[58],{}),uploadFilesHandler:n[59],onClose:n[60],$$slots:{default:[ho]},$$scope:{ctx:n}};n[5]!==void 0&&(U.webSearchEnabled=n[5]),n[4]!==void 0&&(U.selectedToolIds=n[4]),r=new Jr({props:U}),ke.push(()=>Oe(r,"webSearchEnabled",W)),ke.push(()=>Oe(r,"selectedToolIds",j));let F=y&&fn(n);const re=[_o,go],le=[];function z(M,B){return B[0]&1024&&(w=null),w==null&&(w=M[10].length==0||M[10].at(-1).done==!0),w?0:1}return C=z(n,[-1,-1,-1]),D=le[C]=re[C](n),{c(){e=I("form"),t=I("div"),V&&V.c(),l=J(),s=I("div"),o=I("div"),ie(r.$$.fragment),u=J(),c=I("textarea"),m=J(),v=I("div"),F&&F.c(),g=J(),_=I("div"),D.c(),this.h()},l(M){e=S(M,"FORM",{class:!0});var B=E(e);t=S(B,"DIV",{class:!0,dir:!0});var $=E(t);V&&V.l($),l=Q($),s=S($,"DIV",{class:!0});var ne=E(s);o=S(ne,"DIV",{class:!0});var fe=E(o);ae(r.$$.fragment,fe),fe.forEach(h),u=Q(ne),c=S(ne,"TEXTAREA",{id:!0,class:!0,placeholder:!0,rows:!0}),E(c).forEach(h),m=Q(ne),v=S(ne,"DIV",{class:!0});var Be=E(v);F&&F.l(Be),Be.forEach(h),ne.forEach(h),$.forEach(h),g=Q(B),_=S(B,"DIV",{class:!0});var Ge=E(_);D.l(Ge),Ge.forEach(h),B.forEach(h),this.h()},h(){var M;f(o,"class","ml-0.5 self-end mb-1.5 flex space-x-1"),f(c,"id","chat-textarea"),f(c,"class","scrollbar-hidden bg-gray-50 dark:bg-gray-850 dark:text-gray-100 outline-none w-full py-3 px-1 rounded-xl resize-none h-[48px] svelte-141e0sl"),f(c,"placeholder",d=n[21]!==""?n[21]:n[23].t("Send a Message")),f(c,"rows","1"),f(v,"class","self-end mb-2 flex space-x-1 mr-1"),f(s,"class","flex"),f(t,"class","flex-1 flex flex-col relative w-full rounded-3xl px-1.5 bg-gray-50 dark:bg-gray-850 dark:text-gray-100"),f(t,"dir",b=((M=n[25])==null?void 0:M.chatDirection)??"LTR"),f(_,"class","flex items-end w-10"),f(e,"class","w-full flex gap-1.5")},m(M,B){O(M,e,B),p(e,t),V&&V.m(t,null),p(t,l),p(t,s),p(s,o),ce(r,o,null),p(s,u),p(s,c),n[63](c),_l(c,n[1]),p(s,m),p(s,v),F&&F.m(v,null),p(e,g),p(e,_),le[C].m(_,null),N=!0,T||(A=[ee(c,"input",n[64]),ee(c,"keypress",n[65]),ee(c,"keydown",n[66]),ee(c,"input",n[67]),ee(c,"focus",n[68]),ee(c,"paste",n[69]),ee(e,"submit",Un(n[73]))],T=!0)},p(M,B){var fe;M[3].length>0?V?(V.p(M,B),B[0]&8&&H(V,1)):(V=an(M),V.c(),H(V,1),V.m(t,l)):V&&(Ue(),R(V,1,1,()=>{V=null}),Pe());const $={};B[0]&201327104&&($.tools=M[26].reduce(M[58],{})),B[0]&16384&&($.uploadFilesHandler=M[59]),B[0]&2048&&($.onClose=M[60]),B[2]&32768&&($.$$scope={dirty:B,ctx:M}),!i&&B[0]&32&&(i=!0,$.webSearchEnabled=M[5],He(()=>i=!1)),!a&&B[0]&16&&(a=!0,$.selectedToolIds=M[4],He(()=>a=!1)),r.$set($),(!N||B[0]&10485760&&d!==(d=M[21]!==""?M[21]:M[23].t("Send a Message")))&&f(c,"placeholder",d),B[0]&2&&_l(c,M[1]),B[0]&1024&&(y=M[10].length==0||M[10].at(-1).done==!0),y?F?(F.p(M,B),B[0]&1024&&H(F,1)):(F=fn(M),F.c(),H(F,1),F.m(v,null)):F&&(Ue(),R(F,1,1,()=>{F=null}),Pe()),(!N||B[0]&33554432&&b!==(b=((fe=M[25])==null?void 0:fe.chatDirection)??"LTR"))&&f(t,"dir",b);let ne=C;C=z(M,B),C===ne?le[C].p(M,B):(Ue(),R(le[ne],1,1,()=>{le[ne]=null}),Pe(),D=le[C],D?D.p(M,B):(D=le[C]=re[C](M),D.c()),H(D,1),D.m(_,null))},i(M){N||(H(V),H(r.$$.fragment,M),H(F),H(D),N=!0)},o(M){R(V),R(r.$$.fragment,M),R(F),R(D),N=!1},d(M){M&&h(e),V&&V.d(),ue(r),n[63](null),F&&F.d(),le[C].d(),T=!1,gt(A)}}}function ro(n){let e,t,l;function s(r){n[53](r)}let o={};return n[13]!==void 0&&(o.recording=n[13]),e=new to({props:o}),ke.push(()=>Oe(e,"recording",s)),e.$on("cancel",n[54]),e.$on("confirm",n[55]),{c(){ie(e.$$.fragment)},l(r){ae(e.$$.fragment,r)},m(r,i){ce(e,r,i),l=!0},p(r,i){const a={};!t&&i[0]&8192&&(t=!0,a.recording=r[13],He(()=>t=!1)),e.$set(a)},i(r){l||(H(e.$$.fragment,r),l=!0)},o(r){R(e.$$.fragment,r),l=!1},d(r){ue(e,r)}}}function an(n){let e,t,l=nt(n[3]),s=[];for(let r=0;rR(s[r],1,1,()=>{s[r]=null});return{c(){e=I("div");for(let r=0;r{r=null}),Pe())},i(i){o||(H(r),o=!0)},o(i){R(r),o=!1},d(i){i&&h(e),r&&r.d()}}}function co(n){let e,t,l,s,o,r;return{c(){e=be("svg"),t=be("style"),l=_e(`.spinner_qM83 { - animation: spinner_8HQG 1.05s infinite; - } - .spinner_oXPr { - animation-delay: 0.1s; - } - .spinner_ZTLf { - animation-delay: 0.2s; - } - @keyframes spinner_8HQG { - 0%, - 57.14% { - animation-timing-function: cubic-bezier(0.33, 0.66, 0.66, 1); - transform: translate(0); - } - 28.57% { - animation-timing-function: cubic-bezier(0.33, 0, 0.66, 0.33); - transform: translateY(-6px); - } - 100% { - transform: translate(0); - } - } - `),s=be("circle"),o=be("circle"),r=be("circle"),this.h()},l(i){e=we(i,"svg",{class:!0,fill:!0,viewBox:!0,xmlns:!0});var a=E(e);t=we(a,"style",{});var u=E(t);l=pe(u,`.spinner_qM83 { - animation: spinner_8HQG 1.05s infinite; - } - .spinner_oXPr { - animation-delay: 0.1s; - } - .spinner_ZTLf { - animation-delay: 0.2s; - } - @keyframes spinner_8HQG { - 0%, - 57.14% { - animation-timing-function: cubic-bezier(0.33, 0.66, 0.66, 1); - transform: translate(0); - } - 28.57% { - animation-timing-function: cubic-bezier(0.33, 0, 0.66, 0.33); - transform: translateY(-6px); - } - 100% { - transform: translate(0); - } - } - `),u.forEach(h),s=we(a,"circle",{class:!0,cx:!0,cy:!0,r:!0}),E(s).forEach(h),o=we(a,"circle",{class:!0,cx:!0,cy:!0,r:!0}),E(o).forEach(h),r=we(a,"circle",{class:!0,cx:!0,cy:!0,r:!0}),E(r).forEach(h),a.forEach(h),this.h()},h(){f(s,"class","spinner_qM83"),f(s,"cx","4"),f(s,"cy","12"),f(s,"r","2.5"),f(o,"class","spinner_qM83 spinner_oXPr"),f(o,"cx","12"),f(o,"cy","12"),f(o,"r","2.5"),f(r,"class","spinner_qM83 spinner_ZTLf"),f(r,"cx","20"),f(r,"cy","12"),f(r,"r","2.5"),f(e,"class","w-6 h-6 translate-y-[0.5px]"),f(e,"fill","currentColor"),f(e,"viewBox","0 0 24 24"),f(e,"xmlns","http://www.w3.org/2000/svg")},m(i,a){O(i,e,a),p(e,t),p(t,l),p(e,s),p(e,o),p(e,r)},d(i){i&&h(e)}}}function uo(n){let e,t,l;return{c(){e=be("svg"),t=be("path"),l=be("path"),this.h()},l(s){e=we(s,"svg",{xmlns:!0,viewBox:!0,fill:!0,class:!0});var o=E(e);t=we(o,"path",{"fill-rule":!0,d:!0,"clip-rule":!0}),E(t).forEach(h),l=we(o,"path",{d:!0}),E(l).forEach(h),o.forEach(h),this.h()},h(){f(t,"fill-rule","evenodd"),f(t,"d","M5.625 1.5c-1.036 0-1.875.84-1.875 1.875v17.25c0 1.035.84 1.875 1.875 1.875h12.75c1.035 0 1.875-.84 1.875-1.875V12.75A3.75 3.75 0 0 0 16.5 9h-1.875a1.875 1.875 0 0 1-1.875-1.875V5.25A3.75 3.75 0 0 0 9 1.5H5.625ZM7.5 15a.75.75 0 0 1 .75-.75h7.5a.75.75 0 0 1 0 1.5h-7.5A.75.75 0 0 1 7.5 15Zm.75 2.25a.75.75 0 0 0 0 1.5H12a.75.75 0 0 0 0-1.5H8.25Z"),f(t,"clip-rule","evenodd"),f(l,"d","M12.971 1.816A5.23 5.23 0 0 1 14.25 5.25v1.875c0 .207.168.375.375.375H16.5a5.23 5.23 0 0 1 3.434 1.279 9.768 9.768 0 0 0-6.963-6.963Z"),f(e,"xmlns","http://www.w3.org/2000/svg"),f(e,"viewBox","0 0 24 24"),f(e,"fill","currentColor"),f(e,"class","w-6 h-6")},m(s,o){O(s,e,o),p(e,t),p(e,l)},d(s){s&&h(e)}}}function cn(n){let e,t;return e=new Dt({props:{className:" absolute top-1 left-1",content:n[23].t("{{ models }}",{models:[...n[0]?[n[0]]:n[8]].filter(n[56]).join(", ")}),$$slots:{default:[fo]},$$scope:{ctx:n}}}),{c(){ie(e.$$.fragment)},l(l){ae(e.$$.fragment,l)},m(l,s){ce(e,l,s),t=!0},p(l,s){const o={};s[0]&12583169&&(o.content=l[23].t("{{ models }}",{models:[...l[0]?[l[0]]:l[8]].filter(l[56]).join(", ")})),s[2]&32768&&(o.$$scope={dirty:s,ctx:l}),e.$set(o)},i(l){t||(H(e.$$.fragment,l),t=!0)},o(l){R(e.$$.fragment,l),t=!1},d(l){ue(e,l)}}}function fo(n){let e,t;return{c(){e=be("svg"),t=be("path"),this.h()},l(l){e=we(l,"svg",{xmlns:!0,viewBox:!0,fill:!0,class:!0});var s=E(e);t=we(s,"path",{"fill-rule":!0,d:!0,"clip-rule":!0}),E(t).forEach(h),s.forEach(h),this.h()},h(){f(t,"fill-rule","evenodd"),f(t,"d","M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003ZM12 8.25a.75.75 0 0 1 .75.75v3.75a.75.75 0 0 1-1.5 0V9a.75.75 0 0 1 .75-.75Zm0 8.25a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z"),f(t,"clip-rule","evenodd"),f(e,"xmlns","http://www.w3.org/2000/svg"),f(e,"viewBox","0 0 24 24"),f(e,"fill","currentColor"),f(e,"class","size-4 fill-yellow-300")},m(l,s){O(l,e,s),p(e,t)},p:he,d(l){l&&h(e)}}}function un(n){let e,t,l,s,o,r,i='',a,u,c,d;const m=[ao,io,oo],v=[];function y(g,_){return g[74].type==="image"?0:g[74].type==="doc"?1:g[74].type==="collection"?2:-1}~(t=y(n))&&(l=v[t]=m[t](n));function b(){return n[57](n[76])}return{c(){e=I("div"),l&&l.c(),s=J(),o=I("div"),r=I("button"),r.innerHTML=i,a=J(),this.h()},l(g){e=S(g,"DIV",{class:!0});var _=E(e);l&&l.l(_),s=Q(_),o=S(_,"DIV",{class:!0});var w=E(o);r=S(w,"BUTTON",{class:!0,type:!0,"data-svelte-h":!0}),Xe(r)!=="svelte-6u4utr"&&(r.innerHTML=i),w.forEach(h),a=Q(_),_.forEach(h),this.h()},h(){f(r,"class","bg-gray-400 text-white border border-white rounded-full group-hover:visible invisible transition"),f(r,"type","button"),f(o,"class","absolute -top-1 -right-1"),f(e,"class","relative group")},m(g,_){O(g,e,_),~t&&v[t].m(e,null),p(e,s),p(e,o),p(o,r),p(e,a),u=!0,c||(d=ee(r,"click",b),c=!0)},p(g,_){n=g;let w=t;t=y(n),t===w?~t&&v[t].p(n,_):(l&&(Ue(),R(v[w],1,1,()=>{v[w]=null}),Pe()),~t?(l=v[t],l?l.p(n,_):(l=v[t]=m[t](n),l.c()),H(l,1),l.m(e,s)):l=null)},i(g){u||(H(l),u=!0)},o(g){R(l),u=!1},d(g){g&&h(e),~t&&v[t].d(),c=!1,d()}}}function ho(n){let e,t='';return{c(){e=I("button"),e.innerHTML=t,this.h()},l(l){e=S(l,"BUTTON",{class:!0,type:!0,"data-svelte-h":!0}),Xe(e)!=="svelte-1948p7i"&&(e.innerHTML=t),this.h()},h(){f(e,"class","bg-gray-50 hover:bg-gray-100 text-gray-800 dark:bg-gray-850 dark:text-white dark:hover:bg-gray-800 transition rounded-full p-2 outline-none focus:outline-none"),f(e,"type","button")},m(l,s){O(l,e,s)},p:he,d(l){l&&h(e)}}}function fn(n){let e,t;return e=new Dt({props:{content:n[23].t("Record voice"),$$slots:{default:[mo]},$$scope:{ctx:n}}}),{c(){ie(e.$$.fragment)},l(l){ae(e.$$.fragment,l)},m(l,s){ce(e,l,s),t=!0},p(l,s){const o={};s[0]&8388608&&(o.content=l[23].t("Record voice")),s[0]&8396800|s[2]&32768&&(o.$$scope={dirty:s,ctx:l}),e.$set(o)},i(l){t||(H(e.$$.fragment,l),t=!0)},o(l){R(e.$$.fragment,l),t=!1},d(l){ue(e,l)}}}function mo(n){let e,t='',l,s;return{c(){e=I("button"),e.innerHTML=t,this.h()},l(o){e=S(o,"BUTTON",{id:!0,class:!0,type:!0,"data-svelte-h":!0}),Xe(e)!=="svelte-47fjze"&&(e.innerHTML=t),this.h()},h(){f(e,"id","voice-input-button"),f(e,"class","text-gray-600 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-850 transition rounded-full p-1.5 mr-0.5 self-center"),f(e,"type","button")},m(o,r){O(o,e,r),l||(s=ee(e,"click",n[70]),l=!0)},p:he,d(o){o&&h(e),l=!1,s()}}}function go(n){let e,t,l='',s,o;return{c(){e=I("div"),t=I("button"),t.innerHTML=l,this.h()},l(r){e=S(r,"DIV",{class:!0});var i=E(e);t=S(i,"BUTTON",{class:!0,"data-svelte-h":!0}),Xe(t)!=="svelte-5uu99u"&&(t.innerHTML=l),i.forEach(h),this.h()},h(){f(t,"class","bg-white hover:bg-gray-100 text-gray-800 dark:bg-gray-700 dark:text-white dark:hover:bg-gray-800 transition rounded-full p-1.5"),f(e,"class","flex items-center mb-1.5")},m(r,i){O(r,e,i),p(e,t),s||(o=ee(t,"click",n[72]),s=!0)},p:he,i:he,o:he,d(r){r&&h(e),s=!1,o()}}}function _o(n){let e,t,l,s;const o=[vo,po],r=[];function i(a,u){return a[1]===""?0:1}return e=i(n),t=r[e]=o[e](n),{c(){t.c(),l=Fe()},l(a){t.l(a),l=Fe()},m(a,u){r[e].m(a,u),O(a,l,u),s=!0},p(a,u){let c=e;e=i(a),e===c?r[e].p(a,u):(Ue(),R(r[c],1,1,()=>{r[c]=null}),Pe(),t=r[e],t?t.p(a,u):(t=r[e]=o[e](a),t.c()),H(t,1),t.m(l.parentNode,l))},i(a){s||(H(t),s=!0)},o(a){R(t),s=!1},d(a){a&&h(l),r[e].d(a)}}}function po(n){let e,t,l;return t=new Dt({props:{content:n[23].t("Send message"),$$slots:{default:[bo]},$$scope:{ctx:n}}}),{c(){e=I("div"),ie(t.$$.fragment),this.h()},l(s){e=S(s,"DIV",{class:!0});var o=E(e);ae(t.$$.fragment,o),o.forEach(h),this.h()},h(){f(e,"class","flex items-center mb-1")},m(s,o){O(s,e,o),ce(t,e,null),l=!0},p(s,o){const r={};o[0]&8388608&&(r.content=s[23].t("Send message")),o[0]&2|o[2]&32768&&(r.$$scope={dirty:o,ctx:s}),t.$set(r)},i(s){l||(H(t.$$.fragment,s),l=!0)},o(s){R(t.$$.fragment,s),l=!1},d(s){s&&h(e),ue(t)}}}function vo(n){let e,t,l;return t=new Dt({props:{content:n[23].t("Call"),$$slots:{default:[wo]},$$scope:{ctx:n}}}),{c(){e=I("div"),ie(t.$$.fragment),this.h()},l(s){e=S(s,"DIV",{class:!0});var o=E(e);ae(t.$$.fragment,o),o.forEach(h),this.h()},h(){f(e,"class","flex items-center mb-1")},m(s,o){O(s,e,o),ce(t,e,null),l=!0},p(s,o){const r={};o[0]&8388608&&(r.content=s[23].t("Call")),o[0]&545259776|o[2]&32768&&(r.$$scope={dirty:o,ctx:s}),t.$set(r)},i(s){l||(H(t.$$.fragment,s),l=!0)},o(s){R(t.$$.fragment,s),l=!1},d(s){s&&h(e),ue(t)}}}function bo(n){let e,t,l,s,o;return{c(){e=I("button"),t=be("svg"),l=be("path"),this.h()},l(r){e=S(r,"BUTTON",{id:!0,class:!0,type:!0});var i=E(e);t=we(i,"svg",{xmlns:!0,viewBox:!0,fill:!0,class:!0});var a=E(t);l=we(a,"path",{"fill-rule":!0,d:!0,"clip-rule":!0}),E(l).forEach(h),a.forEach(h),i.forEach(h),this.h()},h(){f(l,"fill-rule","evenodd"),f(l,"d","M8 14a.75.75 0 0 1-.75-.75V4.56L4.03 7.78a.75.75 0 0 1-1.06-1.06l4.5-4.5a.75.75 0 0 1 1.06 0l4.5 4.5a.75.75 0 0 1-1.06 1.06L8.75 4.56v8.69A.75.75 0 0 1 8 14Z"),f(l,"clip-rule","evenodd"),f(t,"xmlns","http://www.w3.org/2000/svg"),f(t,"viewBox","0 0 16 16"),f(t,"fill","currentColor"),f(t,"class","size-6"),f(e,"id","send-message-button"),f(e,"class",s=(n[1]!==""?"bg-black text-white hover:bg-gray-900 dark:bg-white dark:text-black dark:hover:bg-gray-100 ":"text-white bg-gray-200 dark:text-gray-900 dark:bg-gray-700 disabled")+" transition rounded-full p-1.5 m-0.5 self-center"),f(e,"type","submit"),e.disabled=o=n[1]===""},m(r,i){O(r,e,i),p(e,t),p(t,l)},p(r,i){i[0]&2&&s!==(s=(r[1]!==""?"bg-black text-white hover:bg-gray-900 dark:bg-white dark:text-black dark:hover:bg-gray-100 ":"text-white bg-gray-200 dark:text-gray-900 dark:bg-gray-700 disabled")+" transition rounded-full p-1.5 m-0.5 self-center")&&f(e,"class",s),i[0]&2&&o!==(o=r[1]==="")&&(e.disabled=o)},d(r){r&&h(e)}}}function wo(n){let e,t,l,s,o;return t=new Yr({props:{className:"size-6"}}),{c(){e=I("button"),ie(t.$$.fragment),this.h()},l(r){e=S(r,"BUTTON",{class:!0,type:!0});var i=E(e);ae(t.$$.fragment,i),i.forEach(h),this.h()},h(){f(e,"class","text-gray-600 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-850 transition rounded-full p-2 self-center"),f(e,"type","button")},m(r,i){O(r,e,i),ce(t,e,null),l=!0,s||(o=ee(e,"click",n[71]),s=!0)},p:he,i(r){l||(H(t.$$.fragment,r),l=!0)},o(r){R(t.$$.fragment,r),l=!1},d(r){r&&h(e),ue(t),s=!1,o()}}}function ko(n){let e,t,l,s,o,r,i,a,u,c,d,m,v,y,b,g,_,w,C,D,N,T,A,V,W,j,U=n[23].t("LLMs can make mistakes. Verify important information.")+"",F,re,le,z,M=n[19]&&sn(n),B=n[2]===!1&&n[10].length>0&&rn(n);const $=[no,lo],ne=[];function fe(P,X){return X[0]&2&&(a=null),X[0]&2&&(u=null),a==null&&(a=P[1].charAt(0)==="/"),a?0:(u==null&&(u=P[1].charAt(0)==="#"),u?1:-1)}~(c=fe(n,[-1,-1,-1]))&&(d=ne[c]=$[c](n));function Be(P){n[45](P)}function Ge(P){n[46](P)}let $e={messages:n[10]};n[1]!==void 0&&($e.prompt=n[1]),n[21]!==void 0&&($e.chatInputPlaceholder=n[21]),v=new Dr({props:$e}),n[44](v),ke.push(()=>Oe(v,"prompt",Be)),ke.push(()=>Oe(v,"chatInputPlaceholder",Ge)),v.$on("select",n[47]);let Ie=n[0]!==void 0&&on(n);const Z=[ro,so],et=[];function st(P,X){return P[13]?0:1}return A=st(n),V=et[A]=Z[A](n),{c(){M&&M.c(),e=J(),t=I("div"),l=I("div"),s=I("div"),o=I("div"),B&&B.c(),r=J(),i=I("div"),d&&d.c(),m=J(),ie(v.$$.fragment),g=J(),Ie&&Ie.c(),_=J(),w=I("div"),C=I("div"),D=I("div"),N=I("input"),T=J(),V.c(),W=J(),j=I("div"),F=_e(U),this.h()},l(P){M&&M.l(P),e=Q(P),t=S(P,"DIV",{class:!0});var X=E(t);l=S(X,"DIV",{class:!0});var Ne=E(l);s=S(Ne,"DIV",{class:!0});var Le=E(s);o=S(Le,"DIV",{class:!0});var ze=E(o);B&&B.l(ze),ze.forEach(h),r=Q(Le),i=S(Le,"DIV",{class:!0});var Je=E(i);d&&d.l(Je),m=Q(Je),ae(v.$$.fragment,Je),g=Q(Je),Ie&&Ie.l(Je),Je.forEach(h),Le.forEach(h),Ne.forEach(h),_=Q(X),w=S(X,"DIV",{class:!0});var Mt=E(w);C=S(Mt,"DIV",{class:!0});var Tt=E(C);D=S(Tt,"DIV",{class:!0});var at=E(D);N=S(at,"INPUT",{type:!0}),T=Q(at),V.l(at),W=Q(at),j=S(at,"DIV",{class:!0});var Ct=E(j);F=pe(Ct,U),Ct.forEach(h),at.forEach(h),Tt.forEach(h),Mt.forEach(h),X.forEach(h),this.h()},h(){f(o,"class","relative"),f(i,"class","w-full relative"),f(s,"class","flex flex-col max-w-6xl px-2.5 md:px-6 w-full"),f(l,"class","-mb-0.5 mx-auto inset-x-0 bg-transparent flex justify-center"),f(N,"type","file"),N.hidden=!0,N.multiple=!0,f(j,"class","mt-1.5 text-xs text-gray-500 text-center line-clamp-1"),f(D,"class","pb-2"),f(C,"class","max-w-6xl px-2.5 md:px-6 mx-auto inset-x-0"),f(w,"class","bg-white dark:bg-gray-900"),f(t,"class","w-full")},m(P,X){M&&M.m(P,X),O(P,e,X),O(P,t,X),p(t,l),p(l,s),p(s,o),B&&B.m(o,null),p(s,r),p(s,i),~c&&ne[c].m(i,null),p(i,m),ce(v,i,null),p(i,g),Ie&&Ie.m(i,null),p(t,_),p(t,w),p(w,C),p(C,D),p(D,N),n[50](N),p(D,T),et[A].m(D,null),p(D,W),p(D,j),p(j,F),re=!0,le||(z=[ee(N,"change",n[51]),ee(N,"change",n[52])],le=!0)},p(P,X){P[19]?M?(M.p(P,X),X[0]&524288&&H(M,1)):(M=sn(P),M.c(),H(M,1),M.m(e.parentNode,e)):M&&(Ue(),R(M,1,1,()=>{M=null}),Pe()),P[2]===!1&&P[10].length>0?B?B.p(P,X):(B=rn(P),B.c(),B.m(o,null)):B&&(B.d(1),B=null);let Ne=c;c=fe(P,X),c===Ne?~c&&ne[c].p(P,X):(d&&(Ue(),R(ne[Ne],1,1,()=>{ne[Ne]=null}),Pe()),~c?(d=ne[c],d?d.p(P,X):(d=ne[c]=$[c](P),d.c()),H(d,1),d.m(i,m)):d=null);const Le={};X[0]&1024&&(Le.messages=P[10]),!y&&X[0]&2&&(y=!0,Le.prompt=P[1],He(()=>y=!1)),!b&&X[0]&2097152&&(b=!0,Le.chatInputPlaceholder=P[21],He(()=>b=!1)),v.$set(Le),P[0]!==void 0?Ie?(Ie.p(P,X),X[0]&1&&H(Ie,1)):(Ie=on(P),Ie.c(),H(Ie,1),Ie.m(i,null)):Ie&&(Ue(),R(Ie,1,1,()=>{Ie=null}),Pe());let ze=A;A=st(P),A===ze?et[A].p(P,X):(Ue(),R(et[ze],1,1,()=>{et[ze]=null}),Pe(),V=et[A],V?V.p(P,X):(V=et[A]=Z[A](P),V.c()),H(V,1),V.m(D,W)),(!re||X[0]&8388608)&&U!==(U=P[23].t("LLMs can make mistakes. Verify important information.")+"")&&Se(F,U)},i(P){re||(H(M),H(d),H(v.$$.fragment,P),H(Ie),H(V),re=!0)},o(P){R(M),R(d),R(v.$$.fragment,P),R(Ie),R(V),re=!1},d(P){P&&(h(e),h(t)),M&&M.d(P),B&&B.d(),~c&&ne[c].d(),n[44](null),ue(v),Ie&&Ie.d(),n[50](null),et[A].d(),le=!1,gt(z)}}}function yo(n,e,t){let l,s,o,r,i,a,u,c;oe(n,ll,k=>t(12,s=k)),oe(n,Kt,k=>t(24,o=k)),oe(n,kt,k=>t(25,r=k)),oe(n,Zn,k=>t(26,i=k)),oe(n,al,k=>t(27,a=k)),oe(n,Bn,k=>t(28,u=k)),oe(n,Jt,k=>t(29,c=k));const d=_t("i18n");oe(n,d,k=>t(23,l=k));let{submitPrompt:m}=e,{stopResponse:v}=e,{autoScroll:y=!0}=e,{atSelectedModel:b}=e,{selectedModels:g}=e,_=!1,w,C,D,N,T,A,V=!1,W=null,j="",{files:U=[]}=e,{availableToolIds:F=[]}=e,{selectedToolIds:re=[]}=e,{webSearchEnabled:le=!1}=e,{prompt:z=""}=e,{messages:M=[]}=e,B=[];const $=()=>{const k=document.getElementById("messages-container");k.scrollTop=k.scrollHeight},ne=async k=>{console.log(k);const K={type:"doc",name:k.name,collection_name:"",upload_status:!1,error:""};try{if(t(3,U=[...U,K]),["audio/mpeg","audio/wav"].includes(k.type)){const se=await dl(localStorage.token,k).catch(De=>(Ee.error(De),null));if(se){console.log(se);const De=new Blob([se.text],{type:"text/plain"});k=cl(De,`${k.name}.txt`)}}const te=await ss(localStorage.token,"",k);te&&(K.upload_status=!0,K.collection_name=te.collection_name,t(3,U))}catch(te){t(3,U=U.filter(se=>se.name!==k.name)),Ee.error(te)}},fe=async k=>{console.log(k);const K={type:"doc",name:k,collection_name:"",upload_status:!1,url:k,error:""};try{t(3,U=[...U,K]);const te=await rs(localStorage.token,"",k);te&&(K.upload_status=!0,K.collection_name=te.collection_name,t(3,U))}catch(te){t(3,U=U.filter(se=>se.name!==k)),Ee.error(te)}},Be=async k=>{console.log(k);const K={type:"doc",name:k,collection_name:"",upload_status:!1,url:k,error:""};try{t(3,U=[...U,K]);const te=await os(localStorage.token,k);te&&(K.upload_status=!0,K.collection_name=te.collection_name,t(3,U))}catch(te){t(3,U=U.filter(se=>se.name!==k)),Ee.error(te)}};tl(()=>{window.setTimeout(()=>w==null?void 0:w.focus(),0);const k=document.querySelector("body"),K=Ze=>{Ze.key==="Escape"&&(console.log("Escape"),t(19,V=!1))},te=Ze=>{Ze.preventDefault(),t(19,V=!0)},se=()=>{t(19,V=!1)},De=async Ze=>{var pt,it;if(Ze.preventDefault(),console.log(Ze),(pt=Ze.dataTransfer)!=null&&pt.files){const vt=Array.from((it=Ze.dataTransfer)==null?void 0:it.files);vt&&vt.length>0?vt.forEach(tt=>{if(console.log(tt,tt.name.split(".").at(-1)),["image/gif","image/webp","image/jpeg","image/png"].includes(tt.type)){if(B.length===0){Ee.error(l.t("Selected model(s) do not support image inputs"));return}let bt=new FileReader;bt.onload=wt=>{t(3,U=[...U,{type:"image",url:`${wt.target.result}`}])},bt.readAsDataURL(tt)}else pl.includes(tt.type)||vl.includes(tt.name.split(".").at(-1))||Ee.error(l.t("Unknown File Type '{{file_type}}', but accepting and treating as plain text",{file_type:tt.type})),ne(tt)}):Ee.error(l.t("File not found."))}t(19,V=!1)};return window.addEventListener("keydown",K),k==null||k.addEventListener("dragover",te),k==null||k.addEventListener("drop",De),k==null||k.addEventListener("dragleave",se),()=>{window.removeEventListener("keydown",K),k==null||k.removeEventListener("dragover",te),k==null||k.removeEventListener("drop",De),k==null||k.removeEventListener("dragleave",se)}});const Ge=()=>{t(2,y=!0),$()};function $e(k){ke[k?"unshift":"push"](()=>{D=k,t(15,D)})}function Ie(k){z=k,t(1,z)}function Z(k){U=k,t(3,U)}function et(k){ke[k?"unshift":"push"](()=>{N=k,t(16,N)})}function st(k){z=k,t(1,z)}const P=k=>{console.log(k),Be(k.detail)},X=k=>{console.log(k),fe(k.detail)},Ne=k=>{var K;console.log(k),t(3,U=[...U,{type:((K=k==null?void 0:k.detail)==null?void 0:K.type)??"doc",...k.detail,upload_status:!0}])};function Le(k){ke[k?"unshift":"push"](()=>{T=k,t(17,T)})}function ze(k){z=k,t(1,z)}function Je(k){j=k,t(21,j)}const Mt=k=>{t(0,b=k.detail),w==null||w.focus()},Tt=k=>k.id===b.id,at=()=>{t(0,b=void 0)};function Ct(k){ke[k?"unshift":"push"](()=>{C=k,t(14,C)})}function Pt(){A=this.files,t(18,A)}const zt=async()=>{A&&A.length>0?Array.from(A).forEach(K=>{if(["image/gif","image/webp","image/jpeg","image/png"].includes(K.type)){if(B.length===0){Ee.error(l.t("Selected model(s) do not support image inputs")),t(18,A=null),t(14,C.value="",C);return}let te=new FileReader;te.onload=se=>{t(3,U=[...U,{type:"image",url:`${se.target.result}`}]),t(18,A=null),t(14,C.value="",C)},te.readAsDataURL(K)}else pl.includes(K.type)||vl.includes(K.name.split(".").at(-1))?(ne(K),t(14,C.value="",C)):(Ee.error(l.t("Unknown File Type '{{file_type}}', but accepting and treating as plain text",{file_type:K.type})),ne(K),t(14,C.value="",C))}):Ee.error(l.t("File not found."))};function Rt(k){_=k,t(13,_)}const jt=async()=>{var k;t(13,_=!1),await Me(),(k=document.getElementById("chat-textarea"))==null||k.focus()},G=async k=>{var te;const K=k.detail;t(1,z=`${z}${K} `),t(13,_=!1),await Me(),(te=document.getElementById("chat-textarea"))==null||te.focus(),((r==null?void 0:r.speechAutoSend)??!1)&&m(z)},ye=k=>!B.includes(k),de=k=>{U.splice(k,1),t(3,U)},me=(k,K,te,se)=>((F.includes(K.id)||((a==null?void 0:a.role)??"user")==="admin")&&(k[K.id]={name:K.name,description:K.meta.description,enabled:!1}),k),Ae=()=>{C.click()},qe=async()=>{await Me(),w==null||w.focus()};function rt(k){le=k,t(5,le)}function ot(k){re=k,t(4,re)}function Vt(k){ke[k?"unshift":"push"](()=>{w=k,t(11,w),t(1,z)})}function It(){z=this.value,t(1,z)}const Bt=k=>{(!u||!("ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0))&&(k.key==="Enter"&&!k.shiftKey&&k.preventDefault(),z!==""&&k.key==="Enter"&&!k.shiftKey&&m(z))},Ft=async k=>{var te;const K=k.ctrlKey||k.metaKey;if(z===""&&K&&k.key.toLowerCase()==="r"){k.preventDefault(),console.log("regenerate");const se=[...document.getElementsByClassName("regenerate-response-button")].at(-1);se==null||se.click()}if(z===""&&k.key=="ArrowUp"){k.preventDefault();const se=[...document.getElementsByClassName("user-message")].at(-1),De=[...document.getElementsByClassName("edit-user-message-button")].at(-1);console.log(se),se.scrollIntoView({block:"center"}),De==null||De.click()}if(["/","#","@"].includes(z.charAt(0))&&k.key==="ArrowUp"&&(k.preventDefault(),(D||N||T).selectUp(),[...document.getElementsByClassName("selected-command-option-button")].at(-1).scrollIntoView({block:"center"})),["/","#","@"].includes(z.charAt(0))&&k.key==="ArrowDown"&&(k.preventDefault(),(D||N||T).selectDown(),[...document.getElementsByClassName("selected-command-option-button")].at(-1).scrollIntoView({block:"center"})),["/","#","@"].includes(z.charAt(0))&&k.key==="Enter"){k.preventDefault();const se=[...document.getElementsByClassName("selected-command-option-button")].at(-1);k.shiftKey?t(1,z=`${z} -`):se?se==null||se.click():(te=document.getElementById("send-message-button"))==null||te.click()}if(["/","#","@"].includes(z.charAt(0))&&k.key==="Tab"){k.preventDefault();const se=[...document.getElementsByClassName("selected-command-option-button")].at(-1);se==null||se.click()}else if(k.key==="Tab"){const se=Ln(z);if(se.length>0){const De=se.at(0),Ze=z;t(1,z=z.substring(0,(De==null?void 0:De.endIndex)+1)),await Me(),k.target.scrollTop=k.target.scrollHeight,t(1,z=Ze),await Me(),k.preventDefault(),k.target.setSelectionRange(De==null?void 0:De.startIndex,De.endIndex+1)}k.target.style.height="",k.target.style.height=Math.min(k.target.scrollHeight,200)+"px"}k.key==="Escape"&&(console.log("Escape"),t(0,b=void 0))},L=k=>{k.target.style.height="",k.target.style.height=Math.min(k.target.scrollHeight,200)+"px",t(20,W=null)},Y=k=>{k.target.style.height="",k.target.style.height=Math.min(k.target.scrollHeight,200)+"px"},ge=k=>{const K=k.clipboardData||window.clipboardData;if(K&&K.items){for(const te of K.items)if(te.type.indexOf("image")!==-1){const se=te.getAsFile(),De=new FileReader;De.onload=function(Ze){t(3,U=[...U,{type:"image",url:`${Ze.target.result}`}])},De.readAsDataURL(se)}}},x=async()=>{try{await navigator.mediaDevices.getUserMedia({audio:!0}).catch(function(K){return Ee.error(l.t("Permission denied when accessing microphone: {{error}}",{error:K})),null})&&t(13,_=!0)}catch{Ee.error(l.t("Permission denied when accessing microphone"))}},Ve=async()=>{if(g.length>1){Ee.error(l.t("Select only one model to call"));return}if(c.audio.stt.engine==="web"){Ee.error(l.t("Call feature is not supported when using Web STT engine"));return}try{await navigator.mediaDevices.getUserMedia({audio:!0}),$t.set(!0)}catch{Ee.error(l.t("Permission denied when accessing media devices"))}},q=()=>{v()},Re=()=>{m(z)};return n.$$set=k=>{"submitPrompt"in k&&t(6,m=k.submitPrompt),"stopResponse"in k&&t(7,v=k.stopResponse),"autoScroll"in k&&t(2,y=k.autoScroll),"atSelectedModel"in k&&t(0,b=k.atSelectedModel),"selectedModels"in k&&t(8,g=k.selectedModels),"files"in k&&t(3,U=k.files),"availableToolIds"in k&&t(9,F=k.availableToolIds),"selectedToolIds"in k&&t(4,re=k.selectedToolIds),"webSearchEnabled"in k&&t(5,le=k.webSearchEnabled),"prompt"in k&&t(1,z=k.prompt),"messages"in k&&t(10,M=k.messages)},n.$$.update=()=>{n.$$.dirty[0]&4353&&t(22,B=[...b?[b]:g].filter(k=>{var K,te,se,De;return((De=(se=(te=(K=s.find(Ze=>Ze.id===k))==null?void 0:K.info)==null?void 0:te.meta)==null?void 0:se.capabilities)==null?void 0:De.vision)??!0})),n.$$.dirty[0]&2050&&z&&w&&(t(11,w.style.height="",w),t(11,w.style.height=Math.min(w.scrollHeight,200)+"px",w))},[b,z,y,U,re,le,m,v,g,F,M,w,s,_,C,D,N,T,A,V,W,j,B,l,o,r,i,a,u,c,d,$,ne,fe,Be,Ge,$e,Ie,Z,et,st,P,X,Ne,Le,ze,Je,Mt,Tt,at,Ct,Pt,zt,Rt,jt,G,ye,de,me,Ae,qe,rt,ot,Vt,It,Bt,Ft,L,Y,ge,x,Ve,q,Re]}class Eo extends Ke{constructor(e){super(),xe(this,e,yo,ko,Ye,{submitPrompt:6,stopResponse:7,autoScroll:2,atSelectedModel:0,selectedModels:8,files:3,availableToolIds:9,selectedToolIds:4,webSearchEnabled:5,prompt:1,messages:10},null,[-1,-1,-1])}}function dn(n,e,t){const l=n.slice();return l[11]=e[t],l[12]=e,l[13]=t,l}function Io(n){let e,t,l;return t=new Dt({props:{content:n[4].t("Remove Model"),$$slots:{default:[Do]},$$scope:{ctx:n}}}),{c(){e=I("div"),ie(t.$$.fragment),this.h()},l(s){e=S(s,"DIV",{class:!0});var o=E(e);ae(t.$$.fragment,o),o.forEach(h),this.h()},h(){f(e,"class","self-center disabled:text-gray-600 disabled:hover:text-gray-600 mr-2")},m(s,o){O(s,e,o),ce(t,e,null),l=!0},p(s,o){const r={};o&16&&(r.content=s[4].t("Remove Model")),o&16387&&(r.$$scope={dirty:o,ctx:s}),t.$set(r)},i(s){l||(H(t.$$.fragment,s),l=!0)},o(s){R(t.$$.fragment,s),l=!1},d(s){s&&h(e),ue(t)}}}function So(n){return{c:he,l:he,m:he,p:he,i:he,o:he,d:he}}function Do(n){let e,t,l,s,o;function r(){return n[9](n[13])}return{c(){e=I("button"),t=be("svg"),l=be("path"),this.h()},l(i){e=S(i,"BUTTON",{});var a=E(e);t=we(a,"svg",{xmlns:!0,fill:!0,viewBox:!0,"stroke-width":!0,stroke:!0,class:!0});var u=E(t);l=we(u,"path",{"stroke-linecap":!0,"stroke-linejoin":!0,d:!0}),E(l).forEach(h),u.forEach(h),a.forEach(h),this.h()},h(){f(l,"stroke-linecap","round"),f(l,"stroke-linejoin","round"),f(l,"d","M19.5 12h-15"),f(t,"xmlns","http://www.w3.org/2000/svg"),f(t,"fill","none"),f(t,"viewBox","0 0 24 24"),f(t,"stroke-width","2"),f(t,"stroke","currentColor"),f(t,"class","size-3.5"),e.disabled=n[1]},m(i,a){O(i,e,a),p(e,t),p(t,l),s||(o=ee(e,"click",r),s=!0)},p(i,a){n=i,a&2&&(e.disabled=n[1])},d(i){i&&h(e),s=!1,o()}}}function hn(n){let e,t,l,s,o,r,i,a,u,c;function d(g){n[8](g,n[11],n[12],n[13])}let m={placeholder:n[4].t("Select a model"),items:n[3].map(gn)};n[11]!==void 0&&(m.value=n[11]),s=new Es({props:m}),ke.push(()=>Oe(s,"value",d));const v=[So,Io],y=[];function b(g,_){return g[13]===0?0:1}return i=b(n),a=y[i]=v[i](n),{c(){e=I("div"),t=I("div"),l=I("div"),ie(s.$$.fragment),r=J(),a.c(),u=J(),this.h()},l(g){e=S(g,"DIV",{class:!0});var _=E(e);t=S(_,"DIV",{class:!0});var w=E(t);l=S(w,"DIV",{class:!0});var C=E(l);ae(s.$$.fragment,C),C.forEach(h),w.forEach(h),r=Q(_),a.l(_),u=Q(_),_.forEach(h),this.h()},h(){f(l,"class","mr-1 max-w-full"),f(t,"class","overflow-hidden w-full"),f(e,"class","flex w-full max-w-fit")},m(g,_){O(g,e,_),p(e,t),p(t,l),ce(s,l,null),p(e,r),y[i].m(e,null),p(e,u),c=!0},p(g,_){n=g;const w={};_&16&&(w.placeholder=n[4].t("Select a model")),_&8&&(w.items=n[3].map(gn)),!o&&_&1&&(o=!0,w.value=n[11],He(()=>o=!1)),s.$set(w),a.p(n,_)},i(g){c||(H(s.$$.fragment,g),H(a),c=!0)},o(g){R(s.$$.fragment,g),R(a),c=!1},d(g){g&&h(e),ue(s),y[i].d()}}}function mn(n){let e,t,l=n[4].t("Set as default")+"",s,o,r;return{c(){e=I("div"),t=I("button"),s=_e(l),this.h()},l(i){e=S(i,"DIV",{class:!0});var a=E(e);t=S(a,"BUTTON",{});var u=E(t);s=pe(u,l),u.forEach(h),a.forEach(h),this.h()},h(){f(e,"class","text-left mt-0.5 ml-1 text-[0.7rem] text-gray-500")},m(i,a){O(i,e,a),p(e,t),p(t,s),o||(r=ee(t,"click",n[7]),o=!0)},p(i,a){a&16&&l!==(l=i[4].t("Set as default")+"")&&Se(s,l)},d(i){i&&h(e),o=!1,r()}}}function Mo(n){let e,t,l,s,o=nt(n[0]),r=[];for(let u=0;uR(r[u],1,1,()=>{r[u]=null});let a=n[2]&&!n[5]&&mn(n);return{c(){e=I("div");for(let u=0;u({value:n.id,label:n.name,model:n});function To(n,e,t){let l,s,o,r;oe(n,ll,y=>t(3,l=y)),oe(n,kt,y=>t(10,o=y)),oe(n,Bn,y=>t(5,r=y));const i=_t("i18n");oe(n,i,y=>t(4,s=y));let{selectedModels:a=[""]}=e,{disabled:u=!1}=e,{showSetDefault:c=!0}=e;const d=async()=>{if(a.filter(b=>b==="").length){Ee.error(s.t("Choose a model before saving..."));return}kt.set({...o,models:a}),await $n(localStorage.token,{ui:o}),Ee.success(s.t("Default model updated"))};function m(y,b,g,_){g[_]=y,t(0,a),t(3,l)}const v=y=>{a.splice(y,1),t(0,a),t(3,l)};return n.$$set=y=>{"selectedModels"in y&&t(0,a=y.selectedModels),"disabled"in y&&t(1,u=y.disabled),"showSetDefault"in y&&t(2,c=y.showSetDefault)},n.$$.update=()=>{n.$$.dirty&9&&a.length>0&&l.length>0&&t(0,a=a.map(y=>l.map(b=>b.id).includes(y)?y:""))},[a,u,c,l,s,r,i,d,m,v]}class Co extends Ke{constructor(e){super(),xe(this,e,To,Mo,Ye,{selectedModels:0,disabled:1,showSetDefault:2})}}function Vo(n){let e;const t=n[10].default,l=ft(t,n,n[16],null);return{c(){l&&l.c()},l(s){l&&l.l(s)},m(s,o){l&&l.m(s,o),e=!0},p(s,o){l&&l.p&&(!e||o&65536)&&dt(l,t,s,s[16],e?mt(t,s[16],o,null):ht(s[16]),null)},i(s){e||(H(l,s),e=!0)},o(s){R(l,s),e=!1},d(s){l&&l.d(s)}}}function Bo(n){let e,t,l,s,o=n[3].t("Share")+"",r;return{c(){e=be("svg"),t=be("path"),l=J(),s=I("div"),r=_e(o),this.h()},l(i){e=we(i,"svg",{xmlns:!0,viewBox:!0,fill:!0,class:!0});var a=E(e);t=we(a,"path",{"fill-rule":!0,d:!0,"clip-rule":!0}),E(t).forEach(h),a.forEach(h),l=Q(i),s=S(i,"DIV",{class:!0});var u=E(s);r=pe(u,o),u.forEach(h),this.h()},h(){f(t,"fill-rule","evenodd"),f(t,"d","M15.75 4.5a3 3 0 1 1 .825 2.066l-8.421 4.679a3.002 3.002 0 0 1 0 1.51l8.421 4.679a3 3 0 1 1-.729 1.31l-8.421-4.678a3 3 0 1 1 0-4.132l8.421-4.679a3 3 0 0 1-.096-.755Z"),f(t,"clip-rule","evenodd"),f(e,"xmlns","http://www.w3.org/2000/svg"),f(e,"viewBox","0 0 24 24"),f(e,"fill","currentColor"),f(e,"class","size-4"),f(s,"class","flex items-center")},m(i,a){O(i,e,a),p(e,t),O(i,l,a),O(i,s,a),p(s,r)},p(i,a){a&8&&o!==(o=i[3].t("Share")+"")&&Se(r,o)},d(i){i&&(h(e),h(l),h(s))}}}function No(n){let e,t,l,s,o=n[3].t("Download")+"",r;return{c(){e=be("svg"),t=be("path"),l=J(),s=I("div"),r=_e(o),this.h()},l(i){e=we(i,"svg",{xmlns:!0,fill:!0,viewBox:!0,"stroke-width":!0,stroke:!0,class:!0});var a=E(e);t=we(a,"path",{"stroke-linecap":!0,"stroke-linejoin":!0,d:!0}),E(t).forEach(h),a.forEach(h),l=Q(i),s=S(i,"DIV",{class:!0});var u=E(s);r=pe(u,o),u.forEach(h),this.h()},h(){f(t,"stroke-linecap","round"),f(t,"stroke-linejoin","round"),f(t,"d","M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3"),f(e,"xmlns","http://www.w3.org/2000/svg"),f(e,"fill","none"),f(e,"viewBox","0 0 24 24"),f(e,"stroke-width","1.5"),f(e,"stroke","currentColor"),f(e,"class","size-4"),f(s,"class","flex items-center")},m(i,a){O(i,e,a),p(e,t),O(i,l,a),O(i,s,a),p(s,r)},p(i,a){a&8&&o!==(o=i[3].t("Download")+"")&&Se(r,o)},d(i){i&&(h(e),h(l),h(s))}}}function Lo(n){let e,t=n[3].t("Export chat (.json)")+"",l;return{c(){e=I("div"),l=_e(t),this.h()},l(s){e=S(s,"DIV",{class:!0});var o=E(e);l=pe(o,t),o.forEach(h),this.h()},h(){f(e,"class","flex items-center line-clamp-1")},m(s,o){O(s,e,o),p(e,l)},p(s,o){o&8&&t!==(t=s[3].t("Export chat (.json)")+"")&&Se(l,t)},d(s){s&&h(e)}}}function Ao(n){let e,t=n[3].t("Plain text (.txt)")+"",l;return{c(){e=I("div"),l=_e(t),this.h()},l(s){e=S(s,"DIV",{class:!0});var o=E(e);l=pe(o,t),o.forEach(h),this.h()},h(){f(e,"class","flex items-center line-clamp-1")},m(s,o){O(s,e,o),p(e,l)},p(s,o){o&8&&t!==(t=s[3].t("Plain text (.txt)")+"")&&Se(l,t)},d(s){s&&h(e)}}}function Ho(n){let e,t=n[3].t("PDF document (.pdf)")+"",l;return{c(){e=I("div"),l=_e(t),this.h()},l(s){e=S(s,"DIV",{class:!0});var o=E(e);l=pe(o,t),o.forEach(h),this.h()},h(){f(e,"class","flex items-center line-clamp-1")},m(s,o){O(s,e,o),p(e,l)},p(s,o){o&8&&t!==(t=s[3].t("PDF document (.pdf)")+"")&&Se(l,t)},d(s){s&&h(e)}}}function Oo(n){let e,t,l,s,o,r;return e=new Ht({props:{class:"flex gap-2 items-center px-3 py-2 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-md",$$slots:{default:[Lo]},$$scope:{ctx:n}}}),e.$on("click",n[12]),l=new Ht({props:{class:"flex gap-2 items-center px-3 py-2 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-md",$$slots:{default:[Ao]},$$scope:{ctx:n}}}),l.$on("click",n[13]),o=new Ht({props:{class:"flex gap-2 items-center px-3 py-2 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-md",$$slots:{default:[Ho]},$$scope:{ctx:n}}}),o.$on("click",n[14]),{c(){ie(e.$$.fragment),t=J(),ie(l.$$.fragment),s=J(),ie(o.$$.fragment)},l(i){ae(e.$$.fragment,i),t=Q(i),ae(l.$$.fragment,i),s=Q(i),ae(o.$$.fragment,i)},m(i,a){ce(e,i,a),O(i,t,a),ce(l,i,a),O(i,s,a),ce(o,i,a),r=!0},p(i,a){const u={};a&65544&&(u.$$scope={dirty:a,ctx:i}),e.$set(u);const c={};a&65544&&(c.$$scope={dirty:a,ctx:i}),l.$set(c);const d={};a&65544&&(d.$$scope={dirty:a,ctx:i}),o.$set(d)},i(i){r||(H(e.$$.fragment,i),H(l.$$.fragment,i),H(o.$$.fragment,i),r=!0)},o(i){R(e.$$.fragment,i),R(l.$$.fragment,i),R(o.$$.fragment,i),r=!1},d(i){i&&(h(t),h(s)),ue(e,i),ue(l,i),ue(o,i)}}}function Uo(n){let e,t,l,s;return e=new $s({props:{class:"flex gap-2 items-center px-3 py-2 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-md",$$slots:{default:[No]},$$scope:{ctx:n}}}),l=new Gs({props:{class:"w-full rounded-lg px-1 py-1.5 border border-gray-300/30 dark:border-gray-700/50 z-50 bg-white dark:bg-gray-850 dark:text-white shadow-lg",transition:nl,sideOffset:8,$$slots:{default:[Oo]},$$scope:{ctx:n}}}),{c(){ie(e.$$.fragment),t=J(),ie(l.$$.fragment)},l(o){ae(e.$$.fragment,o),t=Q(o),ae(l.$$.fragment,o)},m(o,r){ce(e,o,r),O(o,t,r),ce(l,o,r),s=!0},p(o,r){const i={};r&65544&&(i.$$scope={dirty:r,ctx:o}),e.$set(i);const a={};r&65544&&(a.$$scope={dirty:r,ctx:o}),l.$set(a)},i(o){s||(H(e.$$.fragment,o),H(l.$$.fragment,o),s=!0)},o(o){R(e.$$.fragment,o),R(l.$$.fragment,o),s=!1},d(o){o&&h(t),ue(e,o),ue(l,o)}}}function Po(n){let e,t,l,s,o,r,i,a,u;return e=new Ht({props:{class:"flex gap-2 items-center px-3 py-2 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-md",id:"chat-share-button",$$slots:{default:[Bo]},$$scope:{ctx:n}}}),e.$on("click",n[11]),l=new Bs({props:{$$slots:{default:[Uo]},$$scope:{ctx:n}}}),a=new as({props:{chatId:n[1].id}}),{c(){ie(e.$$.fragment),t=J(),ie(l.$$.fragment),s=J(),o=I("hr"),r=J(),i=I("div"),ie(a.$$.fragment),this.h()},l(c){ae(e.$$.fragment,c),t=Q(c),ae(l.$$.fragment,c),s=Q(c),o=S(c,"HR",{class:!0}),r=Q(c),i=S(c,"DIV",{class:!0});var d=E(i);ae(a.$$.fragment,d),d.forEach(h),this.h()},h(){f(o,"class","border-gray-100 dark:border-gray-800 mt-2.5 mb-1.5"),f(i,"class","flex p-1")},m(c,d){ce(e,c,d),O(c,t,d),ce(l,c,d),O(c,s,d),O(c,o,d),O(c,r,d),O(c,i,d),ce(a,i,null),u=!0},p(c,d){const m={};d&65544&&(m.$$scope={dirty:d,ctx:c}),e.$set(m);const v={};d&65544&&(v.$$scope={dirty:d,ctx:c}),l.$set(v);const y={};d&2&&(y.chatId=c[1].id),a.$set(y)},i(c){u||(H(e.$$.fragment,c),H(l.$$.fragment,c),H(a.$$.fragment,c),u=!0)},o(c){R(e.$$.fragment,c),R(l.$$.fragment,c),R(a.$$.fragment,c),u=!1},d(c){c&&(h(t),h(s),h(o),h(r),h(i)),ue(e,c),ue(l,c),ue(a)}}}function zo(n){let e,t,l;return t=new fl({props:{class:"w-full max-w-[200px] rounded-xl px-1 py-1.5 border border-gray-300/30 dark:border-gray-700/50 z-50 bg-white dark:bg-gray-850 dark:text-white shadow-lg",sideOffset:8,side:"bottom",align:"end",transition:nl,$$slots:{default:[Po]},$$scope:{ctx:n}}}),{c(){e=I("div"),ie(t.$$.fragment),this.h()},l(s){e=S(s,"DIV",{slot:!0});var o=E(e);ae(t.$$.fragment,o),o.forEach(h),this.h()},h(){f(e,"slot","content")},m(s,o){O(s,e,o),ce(t,e,null),l=!0},p(s,o){const r={};o&65547&&(r.$$scope={dirty:o,ctx:s}),t.$set(r)},i(s){l||(H(t.$$.fragment,s),l=!0)},o(s){R(t.$$.fragment,s),l=!1},d(s){s&&h(e),ue(t)}}}function Ro(n){let e,t;return e=new ul({props:{$$slots:{content:[zo],default:[Vo]},$$scope:{ctx:n}}}),e.$on("change",n[15]),{c(){ie(e.$$.fragment)},l(l){ae(e.$$.fragment,l)},m(l,s){ce(e,l,s),t=!0},p(l,[s]){const o={};s&65547&&(o.$$scope={dirty:s,ctx:l}),e.$set(o)},i(l){t||(H(e.$$.fragment,l),t=!0)},o(l){R(e.$$.fragment,l),t=!1},d(l){ue(e,l)}}}function jo(n,e,t){let l,{$$slots:s={},$$scope:o}=e;const{saveAs:r}=Ss,i=_t("i18n");oe(n,i,N=>t(3,l=N));let{shareEnabled:a=!1}=e,{shareHandler:u}=e,{downloadHandler:c}=e,{chat:d}=e,{onClose:m=()=>{}}=e;const v=async()=>{const N=d.chat;console.log("download",d);const T=N.messages.reduce((V,W,j,U)=>`${V}### ${W.role.toUpperCase()} -${W.content} - -`,"");let A=new Blob([T],{type:"text/plain"});r(A,`chat-${N.title}.txt`)},y=async()=>{const N=d.chat;console.log("download",d);const T=await Ds(N),A=window.URL.createObjectURL(T),V=document.createElement("a");V.href=A,V.download=`chat-${N.title}.pdf`,document.body.appendChild(V),V.click(),document.body.removeChild(V),window.URL.revokeObjectURL(A)},b=async()=>{let N=new Blob([JSON.stringify([d])],{type:"application/json"});r(N,`chat-export-${Date.now()}.json`)},g=()=>{u()},_=()=>{b()},w=()=>{v()},C=()=>{y()},D=N=>{N.detail===!1&&m()};return n.$$set=N=>{"shareEnabled"in N&&t(8,a=N.shareEnabled),"shareHandler"in N&&t(0,u=N.shareHandler),"downloadHandler"in N&&t(9,c=N.downloadHandler),"chat"in N&&t(1,d=N.chat),"onClose"in N&&t(2,m=N.onClose),"$$scope"in N&&t(16,o=N.$$scope)},[u,d,m,l,i,v,y,b,a,c,s,g,_,w,C,D,o]}class Fo extends Ke{constructor(e){super(),xe(this,e,jo,Ro,Ye,{shareEnabled:8,shareHandler:0,downloadHandler:9,chat:1,onClose:2})}}function _n(n){let e,t,l;function s(r){n[15](r)}let o={showSetDefault:!n[2]};return n[0]!==void 0&&(o.selectedModels=n[0]),e=new Co({props:o}),ke.push(()=>Oe(e,"selectedModels",s)),{c(){ie(e.$$.fragment)},l(r){ae(e.$$.fragment,r)},m(r,i){ce(e,r,i),l=!0},p(r,i){const a={};i&4&&(a.showSetDefault=!r[2]),!t&&i&1&&(t=!0,a.selectedModels=r[0],He(()=>t=!1)),e.$set(a)},i(r){l||(H(e.$$.fragment,r),l=!0)},o(r){R(e.$$.fragment,r),l=!1},d(r){ue(e,r)}}}function pn(n){let e,t;return e=new Fo({props:{chat:n[3],shareEnabled:n[2],shareHandler:n[16],downloadHandler:n[17],$$slots:{default:[qo]},$$scope:{ctx:n}}}),{c(){ie(e.$$.fragment)},l(l){ae(e.$$.fragment,l)},m(l,s){ce(e,l,s),t=!0},p(l,s){const o={};s&8&&(o.chat=l[3]),s&4&&(o.shareEnabled=l[2]),s&32&&(o.shareHandler=l[16]),s&64&&(o.downloadHandler=l[17]),s&2097152&&(o.$$scope={dirty:s,ctx:l}),e.$set(o)},i(l){t||(H(e.$$.fragment,l),t=!0)},o(l){R(e.$$.fragment,l),t=!1},d(l){ue(e,l)}}}function qo(n){let e,t='
';return{c(){e=I("button"),e.innerHTML=t,this.h()},l(l){e=S(l,"BUTTON",{class:!0,id:!0,"data-svelte-h":!0}),Xe(e)!=="svelte-9m6068"&&(e.innerHTML=t),this.h()},h(){f(e,"class","hidden md:flex cursor-pointer px-2 py-2 rounded-xl hover:bg-gray-100 dark:hover:bg-gray-850 transition"),f(e,"id","chat-context-menu-button")},m(l,s){O(l,e,s)},p:he,d(l){l&&h(e)}}}function Wo(n){let e,t,l='',s,o,r;return{c(){e=I("button"),t=I("div"),t.innerHTML=l,this.h()},l(i){e=S(i,"BUTTON",{id:!0,class:!0});var a=E(e);t=S(a,"DIV",{class:!0,"data-svelte-h":!0}),Xe(t)!=="svelte-1fcii9y"&&(t.innerHTML=l),a.forEach(h),this.h()},h(){f(t,"class","m-auto self-center"),f(e,"id","new-chat-button"),f(e,"class",s="flex "+(n[8]?"md:hidden":"")+" cursor-pointer px-2 py-2 rounded-xl hover:bg-gray-100 dark:hover:bg-gray-850 transition")},m(i,a){O(i,e,a),p(e,t),o||(r=ee(e,"click",n[18]),o=!0)},p(i,a){a&256&&s!==(s="flex "+(i[8]?"md:hidden":"")+" cursor-pointer px-2 py-2 rounded-xl hover:bg-gray-100 dark:hover:bg-gray-850 transition")&&f(e,"class",s)},d(i){i&&h(e),o=!1,r()}}}function vn(n){let e,t;return e=new us({props:{className:"max-w-[200px]",role:n[10].role,$$slots:{default:[Zo]},$$scope:{ctx:n}}}),e.$on("show",n[19]),{c(){ie(e.$$.fragment)},l(l){ae(e.$$.fragment,l)},m(l,s){ce(e,l,s),t=!0},p(l,s){const o={};s&1024&&(o.role=l[10].role),s&2098176&&(o.$$scope={dirty:s,ctx:l}),e.$set(o)},i(l){t||(H(e.$$.fragment,l),t=!0)},o(l){R(e.$$.fragment,l),t=!1},d(l){ue(e,l)}}}function Zo(n){let e,t,l,s;return{c(){e=I("button"),t=I("div"),l=I("img"),this.h()},l(o){e=S(o,"BUTTON",{class:!0,"aria-label":!0});var r=E(e);t=S(r,"DIV",{class:!0});var i=E(t);l=S(i,"IMG",{src:!0,class:!0,alt:!0,draggable:!0}),i.forEach(h),r.forEach(h),this.h()},h(){At(l.src,s=n[10].profile_image_url)||f(l,"src",s),f(l,"class","size-6 object-cover rounded-full"),f(l,"alt","User profile"),f(l,"draggable","false"),f(t,"class","self-center"),f(e,"class","select-none flex rounded-xl p-1.5 w-full hover:bg-gray-100 dark:hover:bg-gray-850 transition"),f(e,"aria-label","User Menu")},m(o,r){O(o,e,r),p(e,t),p(t,l)},p(o,r){r&1024&&!At(l.src,s=o[10].profile_image_url)&&f(l,"src",s)},d(o){o&&h(e)}}}function Go(n){let e,t,l,s,o,r,i,a,u,c,d,m,v,y,b,g,_,w,C,D,N;function T(U){n[13](U)}let A={chatId:n[7]};n[5]!==void 0&&(A.show=n[5]),e=new cs({props:A}),ke.push(()=>Oe(e,"show",T)),c=new Ms({});let V=n[4]&&_n(n),W=n[2]&&n[3]&&n[3].id&&pn(n);_=new Dt({props:{content:n[9].t("New Chat"),$$slots:{default:[Wo]},$$scope:{ctx:n}}});let j=n[10]!==void 0&&vn(n);return{c(){ie(e.$$.fragment),l=J(),s=I("nav"),o=I("div"),r=I("div"),i=I("div"),a=I("button"),u=I("div"),ie(c.$$.fragment),m=J(),v=I("div"),V&&V.c(),y=J(),b=I("div"),W&&W.c(),g=J(),ie(_.$$.fragment),w=J(),j&&j.c(),this.h()},l(U){ae(e.$$.fragment,U),l=Q(U),s=S(U,"NAV",{id:!0,class:!0});var F=E(s);o=S(F,"DIV",{class:!0});var re=E(o);r=S(re,"DIV",{class:!0});var le=E(r);i=S(le,"DIV",{class:!0});var z=E(i);a=S(z,"BUTTON",{id:!0,class:!0});var M=E(a);u=S(M,"DIV",{class:!0});var B=E(u);ae(c.$$.fragment,B),B.forEach(h),M.forEach(h),z.forEach(h),m=Q(le),v=S(le,"DIV",{class:!0});var $=E(v);V&&V.l($),$.forEach(h),y=Q(le),b=S(le,"DIV",{class:!0});var ne=E(b);W&&W.l(ne),g=Q(ne),ae(_.$$.fragment,ne),w=Q(ne),j&&j.l(ne),ne.forEach(h),le.forEach(h),re.forEach(h),F.forEach(h),this.h()},h(){f(u,"class","m-auto self-center"),f(a,"id","sidebar-toggle-button"),f(a,"class","cursor-pointer px-2 py-2 flex rounded-xl hover:bg-gray-100 dark:hover:bg-gray-850 transition"),f(i,"class",d=(n[8]?"md:hidden":"")+" mr-3 self-start flex flex-none items-center text-gray-600 dark:text-gray-400"),f(v,"class","flex-1 overflow-hidden max-w-full"),f(b,"class","self-start flex flex-none items-center text-gray-600 dark:text-gray-400"),f(r,"class","flex items-center w-full max-w-full"),f(o,"class","flex max-w-full w-full mx-auto px-5 pt-0.5 md:px-[1rem]"),f(s,"id","nav"),f(s,"class","sticky py-2.5 top-0 flex flex-row justify-center z-30")},m(U,F){ce(e,U,F),O(U,l,F),O(U,s,F),p(s,o),p(o,r),p(r,i),p(i,a),p(a,u),ce(c,u,null),p(r,m),p(r,v),V&&V.m(v,null),p(r,y),p(r,b),W&&W.m(b,null),p(b,g),ce(_,b,null),p(b,w),j&&j.m(b,null),C=!0,D||(N=ee(a,"click",n[14]),D=!0)},p(U,[F]){const re={};F&128&&(re.chatId=U[7]),!t&&F&32&&(t=!0,re.show=U[5],He(()=>t=!1)),e.$set(re),(!C||F&256&&d!==(d=(U[8]?"md:hidden":"")+" mr-3 self-start flex flex-none items-center text-gray-600 dark:text-gray-400"))&&f(i,"class",d),U[4]?V?(V.p(U,F),F&16&&H(V,1)):(V=_n(U),V.c(),H(V,1),V.m(v,null)):V&&(Ue(),R(V,1,1,()=>{V=null}),Pe()),U[2]&&U[3]&&U[3].id?W?(W.p(U,F),F&12&&H(W,1)):(W=pn(U),W.c(),H(W,1),W.m(b,g)):W&&(Ue(),R(W,1,1,()=>{W=null}),Pe());const le={};F&512&&(le.content=U[9].t("New Chat")),F&2097410&&(le.$$scope={dirty:F,ctx:U}),_.$set(le),U[10]!==void 0?j?(j.p(U,F),F&1024&&H(j,1)):(j=vn(U),j.c(),H(j,1),j.m(b,null)):j&&(Ue(),R(j,1,1,()=>{j=null}),Pe())},i(U){C||(H(e.$$.fragment,U),H(c.$$.fragment,U),H(V),H(W),H(_.$$.fragment,U),H(j),C=!0)},o(U){R(e.$$.fragment,U),R(c.$$.fragment,U),R(V),R(W),R(_.$$.fragment,U),R(j),C=!1},d(U){U&&(h(l),h(s)),ue(e,U),ue(c),V&&V.d(),W&&W.d(),ue(_),j&&j.d(),D=!1,N()}}}function Jo(n,e,t){let l,s,o,r,i;oe(n,Nn,V=>t(20,l=V)),oe(n,Lt,V=>t(7,s=V)),oe(n,Kt,V=>t(8,o=V)),oe(n,al,V=>t(10,i=V));const a=_t("i18n");oe(n,a,V=>t(9,r=V));let{initNewChat:u}=e,{title:c=l}=e,{shareEnabled:d=!1}=e,{chat:m}=e,{selectedModels:v}=e,{showModelSelector:y=!0}=e,b=!1,g=!1;function _(V){b=V,t(5,b)}const w=()=>{Kt.set(!o)};function C(V){v=V,t(0,v)}const D=()=>{t(5,b=!b)},N=()=>{t(6,g=!g)},T=()=>{u()},A=V=>{V.detail==="archived-chat"&&Gn.set(!0)};return n.$$set=V=>{"initNewChat"in V&&t(1,u=V.initNewChat),"title"in V&&t(12,c=V.title),"shareEnabled"in V&&t(2,d=V.shareEnabled),"chat"in V&&t(3,m=V.chat),"selectedModels"in V&&t(0,v=V.selectedModels),"showModelSelector"in V&&t(4,y=V.showModelSelector)},[v,u,d,m,y,b,g,s,o,r,i,a,c,_,w,C,D,N,T,A]}class Qo extends Ke{constructor(e){super(),xe(this,e,Jo,Go,Ye,{initNewChat:1,title:12,shareEnabled:2,chat:3,selectedModels:0,showModelSelector:4})}}function bn(n,e,t){const l=n.slice();return l[10]=e[t],l}function Xo(n){let e;const t=n[4].default,l=ft(t,n,n[8],null);return{c(){l&&l.c()},l(s){l&&l.l(s)},m(s,o){l&&l.m(s,o),e=!0},p(s,o){l&&l.p&&(!e||o&256)&&dt(l,t,s,s[8],e?mt(t,s[8],o,null):ht(s[8]),null)},i(s){e||(H(l,s),e=!0)},o(s){R(l,s),e=!1},d(s){l&&l.d(s)}}}function Yo(n){var r;let e,t,l=(((r=n[10])==null?void 0:r.label)??"Camera")+"",s,o;return{c(){e=I("div"),t=I("div"),s=_e(l),o=J(),this.h()},l(i){e=S(i,"DIV",{class:!0});var a=E(e);t=S(a,"DIV",{class:!0});var u=E(t);s=pe(u,l),u.forEach(h),a.forEach(h),o=Q(i),this.h()},h(){f(t,"class","line-clamp-1"),f(e,"class","flex items-center")},m(i,a){O(i,e,a),p(e,t),p(t,s),O(i,o,a)},p(i,a){var u;a&2&&l!==(l=(((u=i[10])==null?void 0:u.label)??"Camera")+"")&&Se(s,l)},d(i){i&&(h(e),h(o))}}}function wn(n){let e,t;function l(){return n[5](n[10])}return e=new Ht({props:{class:"flex gap-2 items-center px-3 py-2 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-md",$$slots:{default:[Yo]},$$scope:{ctx:n}}}),e.$on("click",l),{c(){ie(e.$$.fragment)},l(s){ae(e.$$.fragment,s)},m(s,o){ce(e,s,o),t=!0},p(s,o){n=s;const r={};o&258&&(r.$$scope={dirty:o,ctx:n}),e.$set(r)},i(s){t||(H(e.$$.fragment,s),t=!0)},o(s){R(e.$$.fragment,s),t=!1},d(s){ue(e,s)}}}function Ko(n){let e,t,l=nt(n[1]),s=[];for(let r=0;rR(s[r],1,1,()=>{s[r]=null});return{c(){for(let r=0;rOe(e,"show",s)),e.$on("change",n[7]),{c(){ie(e.$$.fragment)},l(r){ae(e.$$.fragment,r)},m(r,i){ce(e,r,i),l=!0},p(r,[i]){const a={};i&258&&(a.$$scope={dirty:i,ctx:r}),!t&&i&4&&(t=!0,a.show=r[2],He(()=>t=!1)),e.$set(a)},i(r){l||(H(e.$$.fragment,r),l=!0)},o(r){R(e.$$.fragment,r),l=!1},d(r){ue(e,r)}}}function ei(n,e,t){let{$$slots:l={},$$scope:s}=e;_t("i18n");const o=Gt();let{onClose:r=()=>{}}=e,{devices:i}=e,a=!1;const u=m=>{o("change",m.deviceId)};function c(m){a=m,t(2,a)}const d=m=>{m.detail===!1&&r()};return n.$$set=m=>{"onClose"in m&&t(0,r=m.onClose),"devices"in m&&t(1,i=m.devices),"$$scope"in m&&t(8,s=m.$$scope)},[r,i,a,o,l,u,c,d,s]}class ti extends Ke{constructor(e){super(),xe(this,e,ei,$o,Ye,{onClose:0,devices:1})}}function kn(n){let e,t,l,s,o,r,i,a,u,c,d,m,v,y,b,g,_,w='',C,D,N,T=n[3]&&yn(n);function A(M,B){return M[3]?ri:oi}let V=A(n),W=V(n);const j=[fi,ui],U=[];function F(M,B){return M[3]?0:1}u=F(n),c=U[u]=j[u](n);function re(M,B){return M[0]?_i:M[1]?gi:mi}let le=re(n),z=le(n);return{c(){e=I("div"),t=I("div"),l=I("div"),T&&T.c(),s=J(),o=I("div"),W.c(),r=J(),i=I("div"),a=I("div"),c.c(),d=J(),m=I("div"),v=I("button"),y=I("div"),z.c(),b=J(),g=I("div"),_=I("button"),_.innerHTML=w,this.h()},l(M){e=S(M,"DIV",{class:!0});var B=E(e);t=S(B,"DIV",{class:!0});var $=E(t);l=S($,"DIV",{class:!0});var ne=E(l);T&&T.l(ne),s=Q(ne),o=S(ne,"DIV",{class:!0});var fe=E(o);W.l(fe),fe.forEach(h),r=Q(ne),i=S(ne,"DIV",{class:!0});var Be=E(i);a=S(Be,"DIV",{});var Ge=E(a);c.l(Ge),Ge.forEach(h),d=Q(Be),m=S(Be,"DIV",{});var $e=E(m);v=S($e,"BUTTON",{type:!0});var Ie=E(v);y=S(Ie,"DIV",{class:!0});var Z=E(y);z.l(Z),Z.forEach(h),Ie.forEach(h),$e.forEach(h),b=Q(Be),g=S(Be,"DIV",{});var et=E(g);_=S(et,"BUTTON",{class:!0,type:!0,"data-svelte-h":!0}),Xe(_)!=="svelte-khrbnh"&&(_.innerHTML=w),et.forEach(h),Be.forEach(h),ne.forEach(h),$.forEach(h),B.forEach(h),this.h()},h(){f(o,"class","flex justify-center items-center flex-1 h-full w-full max-h-full"),f(y,"class","line-clamp-1 text-sm font-medium"),f(v,"type","button"),f(_,"class","p-3 rounded-full bg-gray-50 dark:bg-gray-900"),f(_,"type","button"),f(i,"class","flex justify-between items-center pb-2 w-full"),f(l,"class","max-w-lg w-full h-screen max-h-[100dvh] flex flex-col justify-between p-3 md:p-6"),f(t,"class","absolute w-full h-screen max-h-[100dvh] bg-white text-gray-700 dark:bg-black dark:text-gray-300 flex justify-center"),f(e,"class","absolute w-full h-screen max-h-[100dvh] flex z-[999] overflow-hidden")},m(M,B){O(M,e,B),p(e,t),p(t,l),T&&T.m(l,null),p(l,s),p(l,o),W.m(o,null),p(l,r),p(l,i),p(i,a),U[u].m(a,null),p(i,d),p(i,m),p(m,v),p(v,y),z.m(y,null),p(i,b),p(i,g),p(g,_),C=!0,D||(N=[ee(v,"click",n[26]),ee(_,"click",n[27])],D=!0)},p(M,B){M[3]?T?T.p(M,B):(T=yn(M),T.c(),T.m(l,s)):T&&(T.d(1),T=null),V===(V=A(M))&&W?W.p(M,B):(W.d(1),W=V(M),W&&(W.c(),W.m(o,null)));let $=u;u=F(M),u===$?U[u].p(M,B):(Ue(),R(U[$],1,1,()=>{U[$]=null}),Pe(),c=U[u],c?c.p(M,B):(c=U[u]=j[u](M),c.c()),H(c,1),c.m(a,null)),le===(le=re(M))&&z?z.p(M,B):(z.d(1),z=le(M),z&&(z.c(),z.m(y,null)))},i(M){C||(H(c),C=!0)},o(M){R(c),C=!1},d(M){M&&h(e),T&&T.d(),W.d(),U[u].d(),z.d(),D=!1,gt(N)}}}function yn(n){let e,t,l;function s(i,a){return i[2]?si:i[0]||i[1]?ni:li}let o=s(n),r=o(n);return{c(){e=I("button"),r.c(),this.h()},l(i){e=S(i,"BUTTON",{type:!0,class:!0});var a=E(e);r.l(a),a.forEach(h),this.h()},h(){f(e,"type","button"),f(e,"class","flex justify-center items-center w-full h-20 min-h-20")},m(i,a){O(i,e,a),r.m(e,null),t||(l=ee(e,"click",n[21]),t=!0)},p(i,a){o===(o=s(i))&&r?r.p(i,a):(r.d(1),r=o(i),r&&(r.c(),r.m(e,null)))},d(i){i&&h(e),r.d(),t=!1,l()}}}function li(n){let e,t;return{c(){e=I("div"),this.h()},l(l){e=S(l,"DIV",{class:!0}),E(e).forEach(h),this.h()},h(){f(e,"class",t=(n[4]*100>4?" size-[4.5rem]":n[4]*100>2?" size-16":n[4]*100>1?"size-14":"size-12")+" transition-all bg-black dark:bg-white rounded-full")},m(l,s){O(l,e,s)},p(l,s){s[0]&16&&t!==(t=(l[4]*100>4?" size-[4.5rem]":l[4]*100>2?" size-16":l[4]*100>1?"size-14":"size-12")+" transition-all bg-black dark:bg-white rounded-full")&&f(e,"class",t)},d(l){l&&h(e)}}}function ni(n){let e,t,l,s,o,r;return{c(){e=be("svg"),t=be("style"),l=_e(`.spinner_qM83 { - animation: spinner_8HQG 1.05s infinite; - } - .spinner_oXPr { - animation-delay: 0.1s; - } - .spinner_ZTLf { - animation-delay: 0.2s; - } - @keyframes spinner_8HQG { - 0%, - 57.14% { - animation-timing-function: cubic-bezier(0.33, 0.66, 0.66, 1); - transform: translate(0); - } - 28.57% { - animation-timing-function: cubic-bezier(0.33, 0, 0.66, 0.33); - transform: translateY(-6px); - } - 100% { - transform: translate(0); - } - } - `),s=be("circle"),o=be("circle"),r=be("circle"),this.h()},l(i){e=we(i,"svg",{class:!0,viewBox:!0,fill:!0,xmlns:!0});var a=E(e);t=we(a,"style",{});var u=E(t);l=pe(u,`.spinner_qM83 { - animation: spinner_8HQG 1.05s infinite; - } - .spinner_oXPr { - animation-delay: 0.1s; - } - .spinner_ZTLf { - animation-delay: 0.2s; - } - @keyframes spinner_8HQG { - 0%, - 57.14% { - animation-timing-function: cubic-bezier(0.33, 0.66, 0.66, 1); - transform: translate(0); - } - 28.57% { - animation-timing-function: cubic-bezier(0.33, 0, 0.66, 0.33); - transform: translateY(-6px); - } - 100% { - transform: translate(0); - } - } - `),u.forEach(h),s=we(a,"circle",{class:!0,cx:!0,cy:!0,r:!0}),E(s).forEach(h),o=we(a,"circle",{class:!0,cx:!0,cy:!0,r:!0}),E(o).forEach(h),r=we(a,"circle",{class:!0,cx:!0,cy:!0,r:!0}),E(r).forEach(h),a.forEach(h),this.h()},h(){f(s,"class","spinner_qM83"),f(s,"cx","4"),f(s,"cy","12"),f(s,"r","3"),f(o,"class","spinner_qM83 spinner_oXPr"),f(o,"cx","12"),f(o,"cy","12"),f(o,"r","3"),f(r,"class","spinner_qM83 spinner_ZTLf"),f(r,"cx","20"),f(r,"cy","12"),f(r,"r","3"),f(e,"class","size-12 text-gray-900 dark:text-gray-400"),f(e,"viewBox","0 0 24 24"),f(e,"fill","currentColor"),f(e,"xmlns","http://www.w3.org/2000/svg")},m(i,a){O(i,e,a),p(e,t),p(t,l),p(e,s),p(e,o),p(e,r)},p:he,d(i){i&&h(e)}}}function si(n){let e,t;return{c(){e=I("div"),t=_e(n[2]),this.h()},l(l){e=S(l,"DIV",{class:!0,style:!0});var s=E(e);t=pe(s,n[2]),s.forEach(h),this.h()},h(){f(e,"class","transition-all rounded-full"),ct(e,"font-size",(n[4]*100>4?"4.5":n[4]*100>2?"4.25":n[4]*100>1?"3.75":"3.5")+"rem"),ct(e,"width","100%"),ct(e,"text-align","center")},m(l,s){O(l,e,s),p(e,t)},p(l,s){s[0]&4&&Se(t,l[2]),s[0]&16&&ct(e,"font-size",(l[4]*100>4?"4.5":l[4]*100>2?"4.25":l[4]*100>1?"3.75":"3.5")+"rem")},d(l){l&&h(e)}}}function ri(n){let e,t,l,s,o,r,i,a='',u,c;return{c(){e=I("div"),t=I("video"),l=J(),s=I("canvas"),o=J(),r=I("div"),i=I("button"),i.innerHTML=a,this.h()},l(d){e=S(d,"DIV",{class:!0});var m=E(e);t=S(m,"VIDEO",{id:!0,class:!0}),E(t).forEach(h),l=Q(m),s=S(m,"CANVAS",{id:!0,style:!0}),E(s).forEach(h),o=Q(m),r=S(m,"DIV",{class:!0});var v=E(r);i=S(v,"BUTTON",{type:!0,class:!0,"data-svelte-h":!0}),Xe(i)!=="svelte-zfg1vd"&&(i.innerHTML=a),v.forEach(h),m.forEach(h),this.h()},h(){f(t,"id","camera-feed"),t.autoplay=!0,f(t,"class","rounded-2xl h-full min-w-full object-cover object-center"),t.playsInline=!0,f(s,"id","camera-canvas"),ct(s,"display","none"),f(i,"type","button"),f(i,"class","p-1.5 text-white cursor-pointer backdrop-blur-xl bg-black/10 rounded-full"),f(r,"class","absolute top-4 md:top-8 left-4"),f(e,"class","relative flex video-container w-full max-h-full pt-2 pb-4 md:py-6 px-2 h-full")},m(d,m){O(d,e,m),p(e,t),p(e,l),p(e,s),p(e,o),p(e,r),p(r,i),u||(c=ee(i,"click",n[23]),u=!0)},p:he,d(d){d&&h(e),u=!1,c()}}}function oi(n){let e,t,l;function s(i,a){return i[2]?ci:i[0]||i[1]?ai:ii}let o=s(n),r=o(n);return{c(){e=I("button"),r.c(),this.h()},l(i){e=S(i,"BUTTON",{type:!0});var a=E(e);r.l(a),a.forEach(h),this.h()},h(){f(e,"type","button")},m(i,a){O(i,e,a),r.m(e,null),t||(l=ee(e,"click",n[22]),t=!0)},p(i,a){o===(o=s(i))&&r?r.p(i,a):(r.d(1),r=o(i),r&&(r.c(),r.m(e,null)))},d(i){i&&h(e),r.d(),t=!1,l()}}}function ii(n){let e,t;return{c(){e=I("div"),this.h()},l(l){e=S(l,"DIV",{class:!0}),E(e).forEach(h),this.h()},h(){f(e,"class",t=(n[4]*100>4?" size-52":n[4]*100>2?"size-48":n[4]*100>1?"size-[11.5rem]":"size-44")+" transition-all bg-black dark:bg-white rounded-full")},m(l,s){O(l,e,s)},p(l,s){s[0]&16&&t!==(t=(l[4]*100>4?" size-52":l[4]*100>2?"size-48":l[4]*100>1?"size-[11.5rem]":"size-44")+" transition-all bg-black dark:bg-white rounded-full")&&f(e,"class",t)},d(l){l&&h(e)}}}function ai(n){let e,t,l,s,o,r;return{c(){e=be("svg"),t=be("style"),l=_e(`.spinner_qM83 { - animation: spinner_8HQG 1.05s infinite; - } - .spinner_oXPr { - animation-delay: 0.1s; - } - .spinner_ZTLf { - animation-delay: 0.2s; - } - @keyframes spinner_8HQG { - 0%, - 57.14% { - animation-timing-function: cubic-bezier(0.33, 0.66, 0.66, 1); - transform: translate(0); - } - 28.57% { - animation-timing-function: cubic-bezier(0.33, 0, 0.66, 0.33); - transform: translateY(-6px); - } - 100% { - transform: translate(0); - } - } - `),s=be("circle"),o=be("circle"),r=be("circle"),this.h()},l(i){e=we(i,"svg",{class:!0,viewBox:!0,fill:!0,xmlns:!0});var a=E(e);t=we(a,"style",{});var u=E(t);l=pe(u,`.spinner_qM83 { - animation: spinner_8HQG 1.05s infinite; - } - .spinner_oXPr { - animation-delay: 0.1s; - } - .spinner_ZTLf { - animation-delay: 0.2s; - } - @keyframes spinner_8HQG { - 0%, - 57.14% { - animation-timing-function: cubic-bezier(0.33, 0.66, 0.66, 1); - transform: translate(0); - } - 28.57% { - animation-timing-function: cubic-bezier(0.33, 0, 0.66, 0.33); - transform: translateY(-6px); - } - 100% { - transform: translate(0); - } - } - `),u.forEach(h),s=we(a,"circle",{class:!0,cx:!0,cy:!0,r:!0}),E(s).forEach(h),o=we(a,"circle",{class:!0,cx:!0,cy:!0,r:!0}),E(o).forEach(h),r=we(a,"circle",{class:!0,cx:!0,cy:!0,r:!0}),E(r).forEach(h),a.forEach(h),this.h()},h(){f(s,"class","spinner_qM83"),f(s,"cx","4"),f(s,"cy","12"),f(s,"r","3"),f(o,"class","spinner_qM83 spinner_oXPr"),f(o,"cx","12"),f(o,"cy","12"),f(o,"r","3"),f(r,"class","spinner_qM83 spinner_ZTLf"),f(r,"cx","20"),f(r,"cy","12"),f(r,"r","3"),f(e,"class","size-44 text-gray-900 dark:text-gray-400"),f(e,"viewBox","0 0 24 24"),f(e,"fill","currentColor"),f(e,"xmlns","http://www.w3.org/2000/svg")},m(i,a){O(i,e,a),p(e,t),p(t,l),p(e,s),p(e,o),p(e,r)},p:he,d(i){i&&h(e)}}}function ci(n){let e,t;return{c(){e=I("div"),t=_e(n[2]),this.h()},l(l){e=S(l,"DIV",{class:!0,style:!0});var s=E(e);t=pe(s,n[2]),s.forEach(h),this.h()},h(){f(e,"class","transition-all rounded-full"),ct(e,"font-size",(n[4]*100>4?"13":n[4]*100>2?"12":n[4]*100>1?"11.5":"11")+"rem"),ct(e,"width","100%"),ct(e,"text-align","center")},m(l,s){O(l,e,s),p(e,t)},p(l,s){s[0]&4&&Se(t,l[2]),s[0]&16&&ct(e,"font-size",(l[4]*100>4?"13":l[4]*100>2?"12":l[4]*100>1?"11.5":"11")+"rem")},d(l){l&&h(e)}}}function ui(n){let e,t;return e=new Dt({props:{content:n[8].t("Camera"),$$slots:{default:[di]},$$scope:{ctx:n}}}),{c(){ie(e.$$.fragment)},l(l){ae(e.$$.fragment,l)},m(l,s){ce(e,l,s),t=!0},p(l,s){const o={};s[0]&256&&(o.content=l[8].t("Camera")),s[1]&33554432&&(o.$$scope={dirty:s,ctx:l}),e.$set(o)},i(l){t||(H(e.$$.fragment,l),t=!0)},o(l){R(e.$$.fragment,l),t=!1},d(l){ue(e,l)}}}function fi(n){let e,t;return e=new ti({props:{devices:n[5],$$slots:{default:[hi]},$$scope:{ctx:n}}}),e.$on("change",n[24]),{c(){ie(e.$$.fragment)},l(l){ae(e.$$.fragment,l)},m(l,s){ce(e,l,s),t=!0},p(l,s){const o={};s[0]&32&&(o.devices=l[5]),s[1]&33554432&&(o.$$scope={dirty:s,ctx:l}),e.$set(o)},i(l){t||(H(e.$$.fragment,l),t=!0)},o(l){R(e.$$.fragment,l),t=!1},d(l){ue(e,l)}}}function di(n){let e,t='',l,s;return{c(){e=I("button"),e.innerHTML=t,this.h()},l(o){e=S(o,"BUTTON",{class:!0,type:!0,"data-svelte-h":!0}),Xe(e)!=="svelte-ehdlsa"&&(e.innerHTML=t),this.h()},h(){f(e,"class","p-3 rounded-full bg-gray-50 dark:bg-gray-900"),f(e,"type","button")},m(o,r){O(o,e,r),l||(s=ee(e,"click",n[25]),l=!0)},p:he,d(o){o&&h(e),l=!1,s()}}}function hi(n){let e,t='';return{c(){e=I("button"),e.innerHTML=t,this.h()},l(l){e=S(l,"BUTTON",{class:!0,type:!0,"data-svelte-h":!0}),Xe(e)!=="svelte-t977tc"&&(e.innerHTML=t),this.h()},h(){f(e,"class","p-3 rounded-full bg-gray-50 dark:bg-gray-900"),f(e,"type","button")},m(l,s){O(l,e,s)},p:he,d(l){l&&h(e)}}}function mi(n){let e=n[8].t("Listening...")+"",t;return{c(){t=_e(e)},l(l){t=pe(l,e)},m(l,s){O(l,t,s)},p(l,s){s[0]&256&&e!==(e=l[8].t("Listening...")+"")&&Se(t,e)},d(l){l&&h(t)}}}function gi(n){let e=n[8].t("Tap to interrupt")+"",t;return{c(){t=_e(e)},l(l){t=pe(l,e)},m(l,s){O(l,t,s)},p(l,s){s[0]&256&&e!==(e=l[8].t("Tap to interrupt")+"")&&Se(t,e)},d(l){l&&h(t)}}}function _i(n){let e=n[8].t("Thinking...")+"",t;return{c(){t=_e(e)},l(l){t=pe(l,e)},m(l,s){O(l,t,s)},p(l,s){s[0]&256&&e!==(e=l[8].t("Thinking...")+"")&&Se(t,e)},d(l){l&&h(t)}}}function pi(n){let e,t,l=n[7]&&kn(n);return{c(){l&&l.c(),e=Fe()},l(s){l&&l.l(s),e=Fe()},m(s,o){l&&l.m(s,o),O(s,e,o),t=!0},p(s,o){s[7]?l?(l.p(s,o),o[0]&128&&H(l,1)):(l=kn(s),l.c(),H(l,1),l.m(e.parentNode,e)):l&&(Ue(),R(l,1,1,()=>{l=null}),Pe())},i(s){t||(H(l),t=!0)},o(s){R(l),t=!1},d(s){s&&h(e),l&&l.d(s)}}}function vi(n,e,t){let l,s,o,r;oe(n,Jt,G=>t(40,l=G)),oe(n,kt,G=>t(41,s=G)),oe(n,$t,G=>t(7,o=G));const i=_t("i18n");oe(n,i,G=>t(8,r=G));let{eventTarget:a}=e,{submitPrompt:u}=e,{stopResponse:c}=e,{files:d}=e,{chatId:m}=e,{modelId:v}=e,y=!1,b=!1,g=!1,_=null,w=!1,C=null,D=!1,N=0,T=!1,A,V=[],W=[],j=null;const U=async()=>{const G=await navigator.mediaDevices.enumerateDevices();t(5,W=G.filter(ye=>ye.kind==="videoinput")),navigator.mediaDevices.getDisplayMedia&&t(5,W=[...W,{deviceId:"screen",label:"Screen Share"}]),console.log(W),j===null&&W.length>0&&t(6,j=W[0].deviceId)},F=async()=>{if(await U(),C===null){t(3,w=!0),await Me();try{await re()}catch(G){console.error("Error accessing webcam: ",G)}}},re=async()=>{const G=document.getElementById("camera-feed");G&&(j==="screen"?C=await navigator.mediaDevices.getDisplayMedia({video:{cursor:"always"},audio:!1}):C=await navigator.mediaDevices.getUserMedia({video:{deviceId:j?{exact:j}:void 0}}),C&&(await U(),G.srcObject=C,await G.play()))},le=async()=>{C&&C.getTracks().forEach(ye=>ye.stop()),C=null},z=()=>{const G=document.getElementById("camera-feed"),ye=document.getElementById("camera-canvas");if(!ye)return;const de=ye.getContext("2d");ye.width=G.videoWidth,ye.height=G.videoHeight,de.drawImage(G,0,0,G.videoWidth,G.videoHeight);const me=ye.toDataURL("image/png");return console.log(me),me},M=async()=>{await le(),t(3,w=!1)},B=-55,$=async G=>{await Me();const ye=cl(G,"recording.wav"),de=await dl(localStorage.token,ye).catch(me=>(Ee.error(me),null));if(de&&(console.log(de.text),de.text!=="")){const me=await u(de.text,{_raw:!0});console.log(me)}},ne=async(G=!0)=>{if(o){console.log("%c%s","color: red; font-size: 20px;","🚨 stopRecordingCallback 🚨");const ye=V.slice(0);if(V=[],A=!1,G&&fe(),b){if(t(0,y=!0),t(2,_=null),C){const me=z();t(15,d=[{type:"image",url:me}])}const de=new Blob(ye,{type:"audio/wav"});await $(de),b=!1,t(0,y=!1)}}else V=[],A=!1},fe=async()=>{const G=await navigator.mediaDevices.getUserMedia({audio:!0});A=new MediaRecorder(G),A.onstart=()=>{console.log("Recording started"),V=[],Ge(G)},A.ondataavailable=ye=>{T&&V.push(ye.data)},A.onstop=ye=>{console.log("Recording stopped",ye),ne()},A.start()},Be=G=>{let ye=0;for(let de=0;de{const ye=new AudioContext,de=ye.createMediaStreamSource(G),me=ye.createAnalyser();me.minDecibels=B,de.connect(me);const Ae=me.frequencyBinCount,qe=new Uint8Array(Ae),rt=new Uint8Array(me.fftSize);let ot=Date.now();T=!1,console.log("🔊 Sound detection started",ot,T),(()=>{const It=()=>{if(!A||!o)return;if(g?(me.maxDecibels=0,me.minDecibels=-1):(me.minDecibels=B,me.maxDecibels=-30),me.getByteTimeDomainData(rt),me.getByteFrequencyData(qe),t(4,N=Be(rt)),qe.some(Ft=>Ft>0)&&(console.log("%c%s","color: red; font-size: 20px;","🔊 Sound detected"),T||(T=!0,P()),ot=Date.now()),T&&Date.now()-ot>2e3&&(b=!0,A)){console.log("%c%s","color: red; font-size: 20px;","🔇 Silence detected"),A.stop();return}window.requestAnimationFrame(It)};window.requestAnimationFrame(It)})()};let $e={},Ie=null,Z=null;const et=G=>o?new Promise(ye=>{let de=[];const me=setInterval(async()=>{var Ae;if(de=await speechSynthesis.getVoices(),de.length>0){clearInterval(me);const qe=((Ae=de==null?void 0:de.filter(rt=>{var ot,Vt,It,Bt;return rt.voiceURI===(((Vt=(ot=s==null?void 0:s.audio)==null?void 0:ot.tts)==null?void 0:Vt.voice)??((Bt=(It=l==null?void 0:l.audio)==null?void 0:It.tts)==null?void 0:Bt.voice))}))==null?void 0:Ae.at(0))??void 0;Z=new SpeechSynthesisUtterance(G),qe&&(Z.voice=qe),speechSynthesis.speak(Z),Z.onend=async rt=>{await new Promise(ot=>setTimeout(ot,200)),ye(rt)}}},100)}):Promise.resolve(),st=G=>o?new Promise(ye=>{const de=document.getElementById("audioElement");de&&(de.src=G.src,de.muted=!0,de.play().then(()=>{de.muted=!1}).catch(me=>{console.error(me)}),de.onended=async me=>{await new Promise(Ae=>setTimeout(Ae,100)),ye(me)})}):Promise.resolve(),P=async()=>{t(1,g=!1),D&&c(),Z&&(speechSynthesis.cancel(),Z=null);const G=document.getElementById("audioElement");G&&(G.muted=!0,G.pause(),G.currentTime=0)};let X=new AbortController;const Ne=new Map,Le=new Map,ze=async G=>{var ye,de,me,Ae;if(!Ne.has(G))try{if((s==null?void 0:s.showEmojiInCall)??!1){const qe=await ds(localStorage.token,v,G,m);qe&&Le.set(G,qe)}if(l.audio.tts.engine!==""){const qe=await ys(localStorage.token,((de=(ye=s==null?void 0:s.audio)==null?void 0:ye.tts)==null?void 0:de.voice)??((Ae=(me=l==null?void 0:l.audio)==null?void 0:me.tts)==null?void 0:Ae.voice),G).catch(rt=>(console.error(rt),null));if(qe){const rt=await qe.blob(),ot=URL.createObjectURL(rt);Ne.set(G,new Audio(ot))}}else Ne.set(G,!0)}catch(qe){console.error("Error synthesizing speech:",qe)}return Ne.get(G)};let Je={};const Mt=async(G,ye)=>{for(;!ye.aborted;)if(Je[G]&&Je[G].length>0){const de=Je[G].shift();if(Ne.has(de))if(((s==null?void 0:s.showEmojiInCall)??!1)&&Le.has(de)?t(2,_=Le.get(de)):t(2,_=null),l.audio.tts.engine!=="")try{console.log("%c%s","color: red; font-size: 20px;",`Playing audio for content: ${de}`);const me=Ne.get(de);await st(me),console.log(`Played audio for content: ${de}`),await new Promise(Ae=>setTimeout(Ae,200))}catch(me){console.error("Error playing audio:",me)}else await et(de);else Je[G].unshift(de),console.log(`Audio for "${de}" not yet available in the cache, re-queued...`),await new Promise(me=>setTimeout(me,200))}else if($e[G]&&Je[G]&&Je[G].length===0){t(1,g=!1);break}else await new Promise(de=>setTimeout(de,200));console.log(`Audio monitoring and playing stopped for message ID ${G}`)};tl(async()=>{fe();const G=async me=>{const{id:Ae}=me.detail;D=!0,Ie!==Ae&&(console.log(`Received chat start event for message ID ${Ae}`),Ie=Ae,X&&X.abort(),X=new AbortController,t(1,g=!0),Mt(Ae,X.signal))},ye=async me=>{const{id:Ae,content:qe}=me.detail;if(Ie===Ae){console.log(`Received chat event for message ID ${Ae}: ${qe}`);try{Je[Ae]===void 0?Je[Ae]=[qe]:Je[Ae].push(qe),console.log(qe),ze(qe)}catch(rt){console.error("Failed to fetch or play audio:",rt)}}},de=async me=>{const{id:Ae,content:qe}=me.detail;$e[Ae]=!0,D=!1};return a.addEventListener("chat:start",G),a.addEventListener("chat",ye),a.addEventListener("chat:finish",de),async()=>{a.removeEventListener("chat:start",G),a.removeEventListener("chat",ye),a.removeEventListener("chat:finish",de),X.abort(),await Me(),await P(),await ne(!1),await M()}});const Tt=()=>{g&&P()},at=()=>{g&&P()},Ct=()=>{M()},Pt=async G=>{console.log(G.detail),t(6,j=G.detail),await le(),await re()},zt=async()=>{await navigator.mediaDevices.getUserMedia({video:!0}),F()},Rt=()=>{g&&P()},jt=async()=>{$t.set(!1)};return n.$$set=G=>{"eventTarget"in G&&t(16,a=G.eventTarget),"submitPrompt"in G&&t(17,u=G.submitPrompt),"stopResponse"in G&&t(18,c=G.stopResponse),"files"in G&&t(15,d=G.files),"chatId"in G&&t(19,m=G.chatId),"modelId"in G&&t(20,v=G.modelId)},[y,g,_,w,N,W,j,o,r,i,F,re,le,M,P,d,a,u,c,m,v,Tt,at,Ct,Pt,zt,Rt,jt]}class bi extends Ke{constructor(e){super(),xe(this,e,vi,pi,Ye,{eventTarget:16,submitPrompt:17,stopResponse:18,files:15,chatId:19,modelId:20},null,[-1,-1])}}const{document:il}=zn;function En(n,e,t){const l=n.slice();return l[68]=e[t],l}function In(n){var r;let e,t,l;function s(i){n[30](i)}let o={submitPrompt:n[25],stopResponse:n[27],modelId:((r=n[8])==null?void 0:r.at(0))??null,chatId:n[16],eventTarget:n[23]};return n[14]!==void 0&&(o.files=n[14]),e=new bi({props:o}),ke.push(()=>Oe(e,"files",s)),{c(){ie(e.$$.fragment)},l(i){ae(e.$$.fragment,i)},m(i,a){ce(e,i,a),l=!0},p(i,a){var c;const u={};a[0]&256&&(u.modelId=((c=i[8])==null?void 0:c.at(0))??null),a[0]&65536&&(u.chatId=i[16]),!t&&a[0]&16384&&(t=!0,u.files=i[14],He(()=>t=!1)),e.$set(u)},i(i){l||(H(e.$$.fragment,i),l=!0)},o(i){R(e.$$.fragment,i),l=!1},d(i){ue(e,i)}}}function Sn(n){let e,t,l,s,o,r,i,a,u,c,d,m,v,y,b,g,_,w,C,D,N,T,A,V,W,j,U;function F(P){n[31](P)}function re(P){n[32](P)}let le={title:n[12],shareEnabled:n[15].length>0,chat:n[11],initNewChat:n[24]};n[1]!==void 0&&(le.selectedModels=n[1]),n[7]!==void 0&&(le.showModelSelector=n[7]),t=new Qo({props:le}),ke.push(()=>Oe(t,"selectedModels",F)),ke.push(()=>Oe(t,"showModelSelector",re));let z=n[21].length>0&&n[15].length===0&&!n[16]&&n[1].length<=1&&Dn(n);function M(P){n[35](P)}function B(P){n[36](P)}function $(P){n[37](P)}function ne(P){n[38](P)}let fe={chatId:n[16],selectedModels:n[1],processing:ki,bottomPadding:n[14].length>0,sendPrompt:n[26],continueGeneration:n[29],regenerateResponse:n[28]};n[3]!==void 0&&(fe.history=n[3]),n[15]!==void 0&&(fe.messages=n[15]),n[5]!==void 0&&(fe.autoScroll=n[5]),n[13]!==void 0&&(fe.prompt=n[13]),c=new Rn({props:fe}),ke.push(()=>Oe(c,"history",M)),ke.push(()=>Oe(c,"messages",B)),ke.push(()=>Oe(c,"autoScroll",$)),ke.push(()=>Oe(c,"prompt",ne));function Be(P){n[42](P)}function Ge(P){n[43](P)}function $e(P){n[44](P)}function Ie(P){n[45](P)}function Z(P){n[46](P)}function et(P){n[47](P)}let st={availableToolIds:n[8].reduce(n[41],[]),selectedModels:n[1],messages:n[15],submitPrompt:n[25],stopResponse:n[27]};return n[14]!==void 0&&(st.files=n[14]),n[13]!==void 0&&(st.prompt=n[13]),n[5]!==void 0&&(st.autoScroll=n[5]),n[9]!==void 0&&(st.selectedToolIds=n[9]),n[10]!==void 0&&(st.webSearchEnabled=n[10]),n[2]!==void 0&&(st.atSelectedModel=n[2]),_=new Eo({props:st}),ke.push(()=>Oe(_,"files",Be)),ke.push(()=>Oe(_,"prompt",Ge)),ke.push(()=>Oe(_,"autoScroll",$e)),ke.push(()=>Oe(_,"selectedToolIds",Ie)),ke.push(()=>Oe(_,"webSearchEnabled",Z)),ke.push(()=>Oe(_,"atSelectedModel",et)),{c(){e=I("div"),ie(t.$$.fragment),o=J(),z&&z.c(),r=J(),i=I("div"),a=I("div"),u=I("div"),ie(c.$$.fragment),g=J(),ie(_.$$.fragment),this.h()},l(P){e=S(P,"DIV",{class:!0});var X=E(e);ae(t.$$.fragment,X),o=Q(X),z&&z.l(X),r=Q(X),i=S(X,"DIV",{class:!0});var Ne=E(i);a=S(Ne,"DIV",{class:!0,id:!0});var Le=E(a);u=S(Le,"DIV",{class:!0});var ze=E(u);ae(c.$$.fragment,ze),ze.forEach(h),Le.forEach(h),g=Q(Ne),ae(_.$$.fragment,Ne),Ne.forEach(h),X.forEach(h),this.h()},h(){f(u,"class",b="h-full w-full flex flex-col "+(n[0]?"py-4":"pt-2 pb-4")),f(a,"class","pb-2.5 flex flex-col justify-between w-full flex-auto overflow-auto h-0 max-w-full"),f(a,"id","messages-container"),f(i,"class","flex flex-col flex-auto"),f(e,"class",V="h-screen max-h-[100dvh] "+(n[20]?"md:max-w-[calc(100%-260px)]":"")+" w-full max-w-full flex flex-col")},m(P,X){O(P,e,X),ce(t,e,null),p(e,o),z&&z.m(e,null),p(e,r),p(e,i),p(i,a),p(a,u),ce(c,u,null),n[39](a),p(i,g),ce(_,i,null),W=!0,j||(U=ee(a,"scroll",n[40]),j=!0)},p(P,X){const Ne={};X[0]&4096&&(Ne.title=P[12]),X[0]&32768&&(Ne.shareEnabled=P[15].length>0),X[0]&2048&&(Ne.chat=P[11]),!l&&X[0]&2&&(l=!0,Ne.selectedModels=P[1],He(()=>l=!1)),!s&&X[0]&128&&(s=!0,Ne.showModelSelector=P[7],He(()=>s=!1)),t.$set(Ne),P[21].length>0&&P[15].length===0&&!P[16]&&P[1].length<=1?z?(z.p(P,X),X[0]&2195458&&H(z,1)):(z=Dn(P),z.c(),H(z,1),z.m(e,r)):z&&(Ue(),R(z,1,1,()=>{z=null}),Pe());const Le={};X[0]&65536&&(Le.chatId=P[16]),X[0]&2&&(Le.selectedModels=P[1]),X[0]&16384&&(Le.bottomPadding=P[14].length>0),!d&&X[0]&8&&(d=!0,Le.history=P[3],He(()=>d=!1)),!m&&X[0]&32768&&(m=!0,Le.messages=P[15],He(()=>m=!1)),!v&&X[0]&32&&(v=!0,Le.autoScroll=P[5],He(()=>v=!1)),!y&&X[0]&8192&&(y=!0,Le.prompt=P[13],He(()=>y=!1)),c.$set(Le),(!W||X[0]&1&&b!==(b="h-full w-full flex flex-col "+(P[0]?"py-4":"pt-2 pb-4")))&&f(u,"class",b);const ze={};X[0]&131328&&(ze.availableToolIds=P[8].reduce(P[41],[])),X[0]&2&&(ze.selectedModels=P[1]),X[0]&32768&&(ze.messages=P[15]),!w&&X[0]&16384&&(w=!0,ze.files=P[14],He(()=>w=!1)),!C&&X[0]&8192&&(C=!0,ze.prompt=P[13],He(()=>C=!1)),!D&&X[0]&32&&(D=!0,ze.autoScroll=P[5],He(()=>D=!1)),!N&&X[0]&512&&(N=!0,ze.selectedToolIds=P[9],He(()=>N=!1)),!T&&X[0]&1024&&(T=!0,ze.webSearchEnabled=P[10],He(()=>T=!1)),!A&&X[0]&4&&(A=!0,ze.atSelectedModel=P[2],He(()=>A=!1)),_.$set(ze),(!W||X[0]&1048576&&V!==(V="h-screen max-h-[100dvh] "+(P[20]?"md:max-w-[calc(100%-260px)]":"")+" w-full max-w-full flex flex-col"))&&f(e,"class",V)},i(P){W||(H(t.$$.fragment,P),H(z),H(c.$$.fragment,P),H(_.$$.fragment,P),W=!0)},o(P){R(t.$$.fragment,P),R(z),R(c.$$.fragment,P),R(_.$$.fragment,P),W=!1},d(P){P&&h(e),ue(t),z&&z.d(),ue(c),n[39](null),ue(_),j=!1,U()}}}function Dn(n){let e,t,l,s,o=nt(n[21].filter(n[33])),r=[];for(let a=0;aR(r[a],1,1,()=>{r[a]=null});return{c(){e=I("div"),t=I("div");for(let a=0;a30?`${n[12].slice(0,30)}...`:n[12]} | ${n[19]}`:`${n[19]}`)+` - `;let u=n[18]&&In(n),c=(!n[0]||n[4]&&n[0])&&Sn(n);return{c(){t=J(),l=I("audio"),o=J(),u&&u.c(),r=J(),c&&c.c(),i=Fe(),this.h()},l(d){Pn("svelte-1123lr8",il.head).forEach(h),t=Q(d),l=S(d,"AUDIO",{id:!0,src:!0,style:!0}),E(l).forEach(h),o=Q(d),u&&u.l(d),r=Q(d),c&&c.l(d),i=Fe(),this.h()},h(){f(l,"id","audioElement"),At(l.src,s="")||f(l,"src",s),ct(l,"display","none")},m(d,m){O(d,t,m),O(d,l,m),O(d,o,m),u&&u.m(d,m),O(d,r,m),c&&c.m(d,m),O(d,i,m),a=!0},p(d,m){(!a||m[0]&528384)&&e!==(e=` - `+(d[12]?`${d[12].length>30?`${d[12].slice(0,30)}...`:d[12]} | ${d[19]}`:`${d[19]}`)+` - `)&&(il.title=e),d[18]?u?(u.p(d,m),m[0]&262144&&H(u,1)):(u=In(d),u.c(),H(u,1),u.m(r.parentNode,r)):u&&(Ue(),R(u,1,1,()=>{u=null}),Pe()),!d[0]||d[4]&&d[0]?c?(c.p(d,m),m[0]&17&&H(c,1)):(c=Sn(d),c.c(),H(c,1),c.m(i.parentNode,i)):c&&(Ue(),R(c,1,1,()=>{c=null}),Pe())},i(d){a||(H(u),H(c),a=!0)},o(d){R(u),R(c),a=!1},d(d){d&&(h(t),h(l),h(o),h(r),h(i)),u&&u.d(d),c&&c.d(d)}}}let ki="";function yi(n,e,t){let l,s,o,r,i,a,u,c,d,m,v,y;oe(n,Lt,L=>t(16,l=L)),oe(n,kt,L=>t(51,o=L)),oe(n,ll,L=>t(17,r=L)),oe(n,$t,L=>t(18,i=L)),oe(n,al,L=>t(52,a=L)),oe(n,Jn,L=>t(53,u=L)),oe(n,Fn,L=>t(54,c=L)),oe(n,Jt,L=>t(55,d=L)),oe(n,Nn,L=>t(19,m=L)),oe(n,Kt,L=>t(20,v=L)),oe(n,Qn,L=>t(21,y=L));const b=_t("i18n");oe(n,b,L=>t(50,s=L));let{chatIdProp:g=""}=e,_=!1;const w=new EventTarget;let C=!1,D=!0,N,T=!0,A=[""],V,W=[],j=[],U=!1,F=null,re="",le="",z=[],M=[],B={messages:{},currentId:null};tl(async()=>{l?(o.saveChatHistory??!0)||await sl("/"):Lt.subscribe(async L=>{L||await $()})});const $=async()=>{var ge;window.history.replaceState(B.state,"","/"),await Lt.set(""),t(5,D=!0),t(12,re=""),t(15,M=[]),t(3,B={messages:{},currentId:null}),c.url.searchParams.get("models")?t(1,A=(ge=c.url.searchParams.get("models"))==null?void 0:ge.split(",")):o!=null&&o.models?t(1,A=o==null?void 0:o.models):d!=null&&d.default_models?(console.log((d==null?void 0:d.default_models.split(","))??""),t(1,A=d==null?void 0:d.default_models.split(","))):t(1,A=[""]),c.url.searchParams.get("q")&&(t(13,le=c.url.searchParams.get("q")??""),le&&(await Me(),Ie(le))),t(1,A=A.map(x=>r.map(Ve=>Ve.id).includes(x)?x:""));const L=await El(localStorage.token);L?kt.set(L.ui):kt.set(JSON.parse(localStorage.getItem("settings")??"{}"));const Y=document.getElementById("chat-textarea");setTimeout(()=>Y==null?void 0:Y.focus(),0)},ne=async()=>{if(Lt.set(g),t(11,F=await ts(localStorage.token,l).catch(async L=>(await sl("/"),null))),F){await Tt();const L=F.chat;if(L){console.log(L),t(1,A=((L==null?void 0:L.models)??void 0)!==void 0?L.models:[L.models??""]),t(3,B=((L==null?void 0:L.history)??void 0)!==void 0?L.history:Kn(L.messages)),t(12,re=L.title);const Y=await El(localStorage.token);return Y?await kt.set(Y.ui):await kt.set(JSON.parse(localStorage.getItem("settings")??"{}")),await kt.set({...o,system:L.system??o.system,params:L.options??o.params}),t(5,D=!0),await Me(),M.length>0&&t(3,B.messages[M.at(-1).id].done=!0,B),await Me(),!0}else return null}},fe=async()=>{await Me(),N&&t(6,N.scrollTop=N.scrollHeight,N)},Be=L=>{const Y=B.messages[L];return Y.parentId?[...Be(Y.parentId),Y]:[Y]},Ge=async(L,Y)=>{await jn.run({querySelector:".mermaid"});const ge=await ms(localStorage.token,{model:L,messages:Y.map(x=>({id:x.id,role:x.role,content:x.content,timestamp:x.timestamp})),chat_id:l}).catch(x=>(console.error(x),null));if(ge!==null)for(const x of ge.messages)t(3,B.messages[x.id]={...B.messages[x.id],...B.messages[x.id].content!==x.content?{originalContent:B.messages[x.id].content}:{},...x},B)},$e=async(L,Y="")=>setInterval(()=>{u==null||u.emit("usage",{action:"chat",model:L,chat_id:Y})},1e3),Ie=async(L,{_raw:Y=!1}={})=>{let ge=[];if(console.log("submitPrompt",l),t(1,A=A.map(x=>r.map(Ve=>Ve.id).includes(x)?x:"")),A.includes(""))Ee.error(s.t("Model not selected"));else if(M.length!=0&&M.at(-1).done!=!0)console.log("wait");else if(z.length>0&&z.filter(x=>x.upload_status===!1).length>0)Ee.error(s.t("Oops! Hold tight! Your files are still in the processing oven. We're cooking them up to perfection. Please be patient and we'll let you know once they're ready."));else{const x=document.getElementById("chat-textarea");x&&(x.value="",x.style.height="");const Ve=JSON.parse(JSON.stringify(z));t(14,z=[]),t(13,le="");let q=wl(),Re={id:q,parentId:M.length!==0?M.at(-1).id:null,childrenIds:[],role:"user",content:L,files:Ve.length>0?Ve:void 0,timestamp:Math.floor(Date.now()/1e3),models:A.filter((k,K)=>A.indexOf(k)===K)};t(3,B.messages[q]=Re,B),t(3,B.currentId=q,B),M.length!==0&&B.messages[M.at(-1).id].childrenIds.push(q),await Me(),ge=await Z(L,q,{newChat:!0})}return ge},Z=async(L,Y,{modelId:ge=null,newChat:x=!1}={})=>{let Ve=[],q=ge?[ge]:V!==void 0?[V.id]:A;const Re={};for(const K of q){const te=r.filter(se=>se.id===K).at(0);if(te){let se=wl(),De={parentId:Y,id:se,childrenIds:[],role:"assistant",content:"",model:te.id,modelName:te.name??te.id,userContext:null,timestamp:Math.floor(Date.now()/1e3)};t(3,B.messages[se]=De,B),t(3,B.currentId=se,B),Y!==null&&t(3,B.messages[Y].childrenIds=[...B.messages[Y].childrenIds,se],B),Re[K]=se}}await Me(),x&&M.length==2&&(o.saveChatHistory??!0?(t(11,F=await es(localStorage.token,{id:l,title:s.t("New Chat"),models:A,system:o.system??void 0,options:{...o.params??{}},messages:M,history:B,tags:[],timestamp:Date.now()})),await Wt.set(await Zt(localStorage.token)),await Lt.set(F.id)):await Lt.set("local"),await Me());const k=JSON.parse(JSON.stringify(l));return await Promise.all(q.map(async K=>{var se,De,Ze;console.log("modelId",K);const te=r.filter(pt=>pt.id===K).at(0);if(te){M.some(ve=>{var We;return(We=ve.files)==null?void 0:We.some(je=>je.type==="image")})&&!(((Ze=(De=(se=te.info)==null?void 0:se.meta)==null?void 0:De.capabilities)==null?void 0:Ze.vision)??!0)&&Ee.error(s.t("Model {{modelName}} is not vision capable",{modelName:te.name??te.id}));let it=Re[K],vt=B.messages[it],tt=null;if(((o==null?void 0:o.memory)??!1)&&tt===null){const ve=await fs(localStorage.token,L).catch(We=>(Ee.error(We),null));ve&&(ve.documents[0].length>0&&(tt=ve.documents.reduce((We,je,Qe)=>{const Te=ve.metadatas[Qe][0].created_at,Ce=new Date(Te*1e3).toISOString().split("T")[0];return We.push(`${Qe+1}. [${Ce}]. ${je[0]}`),We},[])),console.log(tt))}vt.userContext=tt;const bt=await $e(te.id,k);U&&await Mt(te.id,Y,it);let wt=null;(te==null?void 0:te.owned_by)==="openai"?wt=await st(te,L,it,k):te&&(wt=await et(te,L,it,k)),Ve.push(wt),bt&&clearInterval(bt)}else Ee.error(s.t("Model {{modelId}} not found",{modelId:K}))})),await Wt.set(await Zt(localStorage.token)),Ve},et=async(L,Y,ge,x)=>{var Ze,pt,it,vt,tt,bt,wt;let Ve=null;const q=B.messages[ge];await Me(),fe();const Re=[o.system||((q==null?void 0:q.userContext)??null)?{role:"system",content:`${kl((o==null?void 0:o.system)??"",a.name,o!=null&&o.userLocation?await Il(localStorage.token):void 0)}${(q==null?void 0:q.userContext)??null?` - -User Context: -${((q==null?void 0:q.userContext)??[]).join(` -`)}`:""}`}:void 0,...M].filter(ve=>{var We;return(We=ve==null?void 0:ve.content)==null?void 0:We.trim()}).map((ve,We,je)=>{var Ce;const Qe={role:ve.role,content:ve.content},Te=(Ce=ve.files)==null?void 0:Ce.filter(lt=>lt.type==="image").map(lt=>lt.url.slice(lt.url.indexOf(",")+1));return Te&&Te.length>0&&ve.role==="user"&&(Qe.images=Te),Qe});let k=-1;Re.forEach((ve,We)=>{ve.images&&(k=We)}),Re.forEach((ve,We)=>{We!==k&&delete ve.images});let K=[];(((pt=(Ze=L==null?void 0:L.info)==null?void 0:Ze.meta)==null?void 0:pt.knowledge)??!1)&&(K=L.info.meta.knowledge),K=[...K,...M.filter(ve=>(ve==null?void 0:ve.files)??null).map(ve=>ve.files.filter(We=>["doc","collection","web_search_results"].includes(We.type))).flat(1)].filter((ve,We,je)=>je.findIndex(Qe=>JSON.stringify(Qe)===JSON.stringify(ve))===We),w.dispatchEvent(new CustomEvent("chat:start",{detail:{id:ge}})),await Me();const[te,se]=await xn(localStorage.token,{model:L.id,messages:Re,options:{...o.params??{},stop:((it=o==null?void 0:o.params)==null?void 0:it.stop)??void 0?o.params.stop.map(ve=>decodeURIComponent(JSON.parse('"'+ve.replace(/\"/g,'\\"')+'"'))):void 0,num_predict:((vt=o==null?void 0:o.params)==null?void 0:vt.max_tokens)??void 0,repeat_penalty:((tt=o==null?void 0:o.params)==null?void 0:tt.frequency_penalty)??void 0},format:o.requestFormat??void 0,keep_alive:o.keepAlive??void 0,tool_ids:j.length>0?j:void 0,docs:K.length>0?K:void 0,citations:K.length>0,chat_id:l});if(te&&te.ok){console.log("controller",se);const ve=te.body.pipeThrough(new TextDecoderStream).pipeThrough(Yn(` -`)).getReader();for(;;){const{value:We,done:je}=await ve.read();if(je||C||x!==l){if(q.done=!0,t(15,M),t(3,B),C)se.abort("User: Stop Response");else{const Qe=Be(ge);await Ge(L.id,Qe)}Ve=q.content;break}try{let Qe=We.split(` -`);for(const Te of Qe)if(Te!==""){console.log(Te);let Ce=JSON.parse(Te);if("citations"in Ce){q.citations=Ce.citations;continue}if("detail"in Ce)throw Ce;if(Ce.done==!1){if(q.content==""&&Ce.message.content==` -`)continue;{q.content+=Ce.message.content;const lt=Qt(q.content);lt.pop(),lt.length>0&<[lt.length-1]!==q.lastSentence&&(q.lastSentence=lt[lt.length-1],w.dispatchEvent(new CustomEvent("chat",{detail:{id:ge,content:lt[lt.length-1]}}))),t(15,M),t(3,B)}}else{if(q.done=!0,q.content==""&&(q.error={code:400,content:"Oops! No text generated from Ollama, Please try again."}),q.context=Ce.context??null,q.info={total_duration:Ce.total_duration,load_duration:Ce.load_duration,sample_count:Ce.sample_count,sample_duration:Ce.sample_duration,prompt_eval_count:Ce.prompt_eval_count,prompt_eval_duration:Ce.prompt_eval_duration,eval_count:Ce.eval_count,eval_duration:Ce.eval_duration},t(15,M),t(3,B),o.notificationEnabled&&!document.hasFocus()){const lt=new Notification(`${L.id}`,{body:q.content,icon:`${xt}/static/favicon.png`})}((o==null?void 0:o.responseAutoCopy)??!1)&&yl(q.content),o.responseAutoPlayback&&!i&&(await Me(),(bt=document.getElementById(`speak-button-${q.id}`))==null||bt.click())}}}catch(Qe){console.log(Qe),"detail"in Qe&&Ee.error(Qe.detail);break}D&&fe()}l==x&&(o.saveChatHistory??!0)&&(t(11,F=await ol(localStorage.token,x,{messages:M,history:B,models:A})),await Wt.set(await Zt(localStorage.token)))}else{if(te!==null){const ve=await te.json();console.log(ve),"detail"in ve?(Ee.error(ve.detail),q.error={content:ve.detail}):(Ee.error(ve.error),q.error={content:ve.error})}else Ee.error(s.t("Uh-oh! There was an issue connecting to {{provider}}.",{provider:"Ollama"})),q.error={content:s.t("Uh-oh! There was an issue connecting to {{provider}}.",{provider:"Ollama"})};q.done=!0,t(15,M),t(3,B)}C=!1,await Me();let De=((wt=Qt(q.content))==null?void 0:wt.at(-1))??"";if(De&&w.dispatchEvent(new CustomEvent("chat",{detail:{id:ge,content:De}})),w.dispatchEvent(new CustomEvent("chat:finish",{detail:{id:ge,content:q.content}})),D&&fe(),M.length==2&&M.at(1).content!==""){window.history.replaceState(B.state,"",`/c/${x}`);const ve=await ze(Y);await Je(x,ve)}return Ve},st=async(L,Y,ge,x)=>{var K,te,se,De,Ze,pt,it,vt,tt,bt,wt,ve,We;let Ve=null;const q=B.messages[ge];let Re=[];(((te=(K=L==null?void 0:L.info)==null?void 0:K.meta)==null?void 0:te.knowledge)??!1)&&(Re=L.info.meta.knowledge),Re=[...Re,...M.filter(je=>(je==null?void 0:je.files)??null).map(je=>je.files.filter(Qe=>["doc","collection","web_search_results"].includes(Qe.type))).flat(1)].filter((je,Qe,Te)=>Te.findIndex(Ce=>JSON.stringify(Ce)===JSON.stringify(je))===Qe),fe(),w.dispatchEvent(new CustomEvent("chat:start",{detail:{id:ge}})),await Me();try{const[je,Qe]=await ns(localStorage.token,{model:L.id,stream:!0,stream_options:((Ze=(De=(se=L.info)==null?void 0:se.meta)==null?void 0:De.capabilities)==null?void 0:Ze.usage)??!1?{include_usage:!0}:void 0,messages:[o.system||((q==null?void 0:q.userContext)??null)?{role:"system",content:`${kl((o==null?void 0:o.system)??"",a.name,o!=null&&o.userLocation?await Il(localStorage.token):void 0)}${(q==null?void 0:q.userContext)??null?` - -User Context: -${((q==null?void 0:q.userContext)??[]).join(` -`)}`:""}`}:void 0,...M].filter(Te=>{var Ce;return(Ce=Te==null?void 0:Te.content)==null?void 0:Ce.trim()}).map((Te,Ce,lt)=>{var qt;return{role:Te.role,...((qt=Te.files)==null?void 0:qt.filter(Nt=>Nt.type==="image").length)>0&&Te.role==="user"?{content:[{type:"text",text:lt.length-1!==Ce?Te.content:(Te==null?void 0:Te.raContent)??Te.content},...Te.files.filter(Nt=>Nt.type==="image").map(Nt=>({type:"image_url",image_url:{url:Nt.url}}))]}:{content:lt.length-1!==Ce?Te.content:(Te==null?void 0:Te.raContent)??Te.content}}}),seed:((pt=o==null?void 0:o.params)==null?void 0:pt.seed)??void 0,stop:((it=o==null?void 0:o.params)==null?void 0:it.stop)??void 0?o.params.stop.map(Te=>decodeURIComponent(JSON.parse('"'+Te.replace(/\"/g,'\\"')+'"'))):void 0,temperature:((vt=o==null?void 0:o.params)==null?void 0:vt.temperature)??void 0,top_p:((tt=o==null?void 0:o.params)==null?void 0:tt.top_p)??void 0,frequency_penalty:((bt=o==null?void 0:o.params)==null?void 0:bt.frequency_penalty)??void 0,max_tokens:((wt=o==null?void 0:o.params)==null?void 0:wt.max_tokens)??void 0,tool_ids:j.length>0?j:void 0,docs:Re.length>0?Re:void 0,citations:Re.length>0,chat_id:l},`${Xn}`);if(await Me(),fe(),je&&je.ok&&je.body){const Te=await nr(je.body,o.splitLargeChunks);let Ce=null;for await(const lt of Te){const{value:qt,done:Nt,citations:hl,error:ml,usage:gl}=lt;if(ml){await P(ml,null,L,q);break}if(Nt||C||x!==l){if(q.done=!0,t(15,M),t(3,B),C)Qe.abort("User: Stop Response");else{const yt=Be(ge);await Ge(L.id,yt)}Ve=q.content;break}if(gl&&(Ce=gl),hl){q.citations=hl;continue}if(!(q.content==""&&qt==` -`)){{q.content+=qt;const yt=Qt(q.content);yt.pop(),yt.length>0&&yt[yt.length-1]!==q.lastSentence&&(q.lastSentence=yt[yt.length-1],w.dispatchEvent(new CustomEvent("chat",{detail:{id:ge,content:yt[yt.length-1]}}))),t(15,M),t(3,B)}D&&fe()}}if(o.notificationEnabled&&!document.hasFocus()){const lt=new Notification(`${L.id}`,{body:q.content,icon:`${xt}/static/favicon.png`})}o.responseAutoCopy&&yl(q.content),o.responseAutoPlayback&&!i&&(await Me(),(ve=document.getElementById(`speak-button-${q.id}`))==null||ve.click()),Ce&&(q.info={...Ce,openai:!0}),l==x&&(o.saveChatHistory??!0)&&(t(11,F=await ol(localStorage.token,x,{models:A,messages:M,history:B})),await Wt.set(await Zt(localStorage.token)))}else await P(null,je,L,q)}catch(je){await P(je,null,L,q)}t(15,M),t(3,B),C=!1,await Me();let k=((We=Qt(q.content))==null?void 0:We.at(-1))??"";if(k&&w.dispatchEvent(new CustomEvent("chat",{detail:{id:ge,content:k}})),w.dispatchEvent(new CustomEvent("chat:finish",{detail:{id:ge,content:q.content}})),D&&fe(),M.length==2){window.history.replaceState(B.state,"",`/c/${x}`);const je=await ze(Y);await Je(x,je)}return Ve},P=async(L,Y,ge,x)=>{let Ve="",q;L?q=L:Y!==null&&(q=await Y.json()),console.error(q),"detail"in q?(Ee.error(q.detail),Ve=q.detail):"error"in q?"message"in q.error?(Ee.error(q.error.message),Ve=q.error.message):(Ee.error(q.error),Ve=q.error):"message"in q&&(Ee.error(q.message),Ve=q.message),x.error={content:s.t("Uh-oh! There was an issue connecting to {{provider}}.",{provider:ge.name??ge.id})+` -`+Ve},x.done=!0,t(15,M),t(3,B)},X=()=>{C=!0,console.log("stopResponse")},Ne=async L=>{if(console.log("regenerateResponse"),M.length!=0){let Y=B.messages[L.parentId],ge=Y.content;((Y==null?void 0:Y.models)??[...A]).length==1?await Z(ge,Y.id):await Z(ge,Y.id,{modelId:L.model})}},Le=async()=>{console.log("continueGeneration");const L=JSON.parse(JSON.stringify(l));if(M.length!=0&&M.at(-1).done==!0){const Y=B.messages[B.currentId];Y.done=!1,await Me();const ge=r.filter(x=>x.id===Y.model).at(0);ge&&((ge==null?void 0:ge.owned_by)==="openai"?await st(ge,B.messages[Y.parentId].content,Y.id,L):await et(ge,B.messages[Y.parentId].content,Y.id,L))}else Ee.error(s.t("Model {{modelId}} not found",{modelId}))},ze=async L=>{var Y;return((Y=o==null?void 0:o.title)==null?void 0:Y.auto)??!0?await hs(localStorage.token,A[0],L,l).catch(x=>(console.error(x),"New Chat")):`${L}`},Je=async(L,Y)=>{L===l&&t(12,re=Y),(o.saveChatHistory??!0)&&(t(11,F=await ol(localStorage.token,L,{title:Y})),await Wt.set(await Zt(localStorage.token)))},Mt=async(L,Y,ge)=>{const x=B.messages[ge];x.statusHistory=[{done:!1,action:"web_search",description:s.t("Generating search query")}],t(15,M),t(3,B);const Ve=B.messages[Y].content;let q=await gs(localStorage.token,L,M,Ve).catch(k=>(console.log(k),Ve));q||(Ee.warning(s.t("No search query generated")),x.statusHistory.push({done:!0,error:!0,action:"web_search",description:"No search query generated"}),t(15,M),t(3,B)),x.statusHistory.push({done:!1,action:"web_search",description:s.t('Searching "{{searchQuery}}"',{searchQuery:q})}),t(15,M),t(3,B);const Re=await is(localStorage.token,q).catch(k=>(console.log(k),Ee.error(k),null));Re?(x.statusHistory.push({done:!0,action:"web_search",description:s.t("Searched {{count}} sites",{count:Re.filenames.length}),query:q,urls:Re.filenames}),((x==null?void 0:x.files)??!0)&&(x.files=[]),x.files.push({collection_name:Re.collection_name,name:q,type:"web_search_results",urls:Re.filenames}),t(15,M),t(3,B)):(x.statusHistory.push({done:!0,error:!0,action:"web_search",description:"No search results found"}),t(15,M),t(3,B))},Tt=async()=>await ls(localStorage.token,l).catch(async L=>[]);function at(L){z=L,t(14,z)}function Ct(L){A=L,t(1,A)}function Pt(L){T=L,t(7,T)}const zt=L=>L.dismissible?!JSON.parse(localStorage.getItem("dismissedBannerIds")??"[]").includes(L.id):!0,Rt=L=>{const Y=L.detail;localStorage.setItem("dismissedBannerIds",JSON.stringify([Y,...JSON.parse(localStorage.getItem("dismissedBannerIds")??"[]")].filter(ge=>y.find(x=>x.id===ge))))};function jt(L){B=L,t(3,B)}function G(L){M=L,t(15,M),t(3,B)}function ye(L){D=L,t(5,D)}function de(L){le=L,t(13,le)}function me(L){ke[L?"unshift":"push"](()=>{N=L,t(6,N)})}const Ae=L=>{t(5,D=N.scrollHeight-N.scrollTop<=N.clientHeight+5)},qe=(L,Y,ge,x)=>{var q,Re;const Ve=r.find(k=>k.id===Y);return((Re=(q=Ve==null?void 0:Ve.info)==null?void 0:q.meta)==null?void 0:Re.toolIds)??!1?[...new Set([...L,...Ve.info.meta.toolIds])]:L};function rt(L){z=L,t(14,z)}function ot(L){le=L,t(13,le)}function Vt(L){D=L,t(5,D)}function It(L){j=L,t(9,j)}function Bt(L){U=L,t(10,U)}function Ft(L){V=L,t(2,V)}return n.$$set=L=>{"chatIdProp"in L&&t(0,g=L.chatIdProp)},n.$$.update=()=>{if(n.$$.dirty[0]&6&&t(8,W=V!==void 0?[V.id]:A),n.$$.dirty[0]&8)if(B.currentId!==null){let L=[],Y=B.messages[B.currentId];for(;Y!==null;)L.unshift({...Y}),Y=Y.parentId!==null?B.messages[Y.parentId]:null;t(15,M=L)}else t(15,M=[]);n.$$.dirty[0]&1&&g&&(async()=>{if(console.log(g),g&&await ne()){await Me(),t(4,_=!0),window.setTimeout(()=>fe(),0);const L=document.getElementById("chat-textarea");L==null||L.focus()}else await sl("/")})()},[g,A,V,B,_,D,N,T,W,j,U,F,re,le,z,M,l,r,i,m,v,y,b,w,$,Ie,Z,X,Ne,Le,at,Ct,Pt,zt,Rt,jt,G,ye,de,me,Ae,qe,rt,ot,Vt,It,Bt,Ft]}class sa extends Ke{constructor(e){super(),xe(this,e,yi,wi,Ye,{chatIdProp:0},null,[-1,-1,-1])}}export{sa as C}; -//# sourceMappingURL=Chat.2f049d04.js.map diff --git a/build/_app/immutable/chunks/Chat.2f049d04.js.map b/build/_app/immutable/chunks/Chat.2f049d04.js.map deleted file mode 100644 index 23e6d4f7b..000000000 --- a/build/_app/immutable/chunks/Chat.2f049d04.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Chat.2f049d04.js","sources":["../../../../../../src/lib/apis/streaming/index.ts","../../../../../../src/lib/components/common/Banner.svelte","../../../../../../src/lib/components/chat/MessageInput/PromptCommands.svelte","../../../../../../src/lib/components/chat/MessageInput/Documents.svelte","../../../../../../src/lib/components/chat/MessageInput/Models.svelte","../../../../../../src/lib/components/icons/XMark.svelte","../../../../../../src/lib/components/icons/DocumentArrowUpSolid.svelte","../../../../../../src/lib/components/icons/GlobeAltSolid.svelte","../../../../../../src/lib/components/icons/WrenchSolid.svelte","../../../../../../src/lib/components/chat/MessageInput/InputMenu.svelte","../../../../../../src/lib/components/icons/Headphone.svelte","../../../../../../src/lib/components/chat/MessageInput/VoiceRecording.svelte","../../../../../../src/lib/components/chat/MessageInput.svelte","../../../../../../src/lib/components/chat/ModelSelector.svelte","../../../../../../src/lib/components/layout/Navbar/Menu.svelte","../../../../../../src/lib/components/layout/Navbar.svelte","../../../../../../src/lib/components/chat/MessageInput/CallOverlay/VideoInputMenu.svelte","../../../../../../src/lib/components/chat/MessageInput/CallOverlay.svelte","../../../../../../src/lib/components/chat/Chat.svelte"],"sourcesContent":["import { EventSourceParserStream } from 'eventsource-parser/stream';\nimport type { ParsedEvent } from 'eventsource-parser';\n\ntype TextStreamUpdate = {\n\tdone: boolean;\n\tvalue: string;\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tcitations?: any;\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\terror?: any;\n\tusage?: ResponseUsage;\n};\n\ntype ResponseUsage = {\n\t/** Including images and tools if any */\n\tprompt_tokens: number;\n\t/** The tokens generated */\n\tcompletion_tokens: number;\n\t/** Sum of the above two fields */\n\ttotal_tokens: number;\n};\n\n// createOpenAITextStream takes a responseBody with a SSE response,\n// and returns an async generator that emits delta updates with large deltas chunked into random sized chunks\nexport async function createOpenAITextStream(\n\tresponseBody: ReadableStream,\n\tsplitLargeDeltas: boolean\n): Promise> {\n\tconst eventStream = responseBody\n\t\t.pipeThrough(new TextDecoderStream())\n\t\t.pipeThrough(new EventSourceParserStream())\n\t\t.getReader();\n\tlet iterator = openAIStreamToIterator(eventStream);\n\tif (splitLargeDeltas) {\n\t\titerator = streamLargeDeltasAsRandomChunks(iterator);\n\t}\n\treturn iterator;\n}\n\nasync function* openAIStreamToIterator(\n\treader: ReadableStreamDefaultReader\n): AsyncGenerator {\n\twhile (true) {\n\t\tconst { value, done } = await reader.read();\n\t\tif (done) {\n\t\t\tyield { done: true, value: '' };\n\t\t\tbreak;\n\t\t}\n\t\tif (!value) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst data = value.data;\n\t\tif (data.startsWith('[DONE]')) {\n\t\t\tyield { done: true, value: '' };\n\t\t\tbreak;\n\t\t}\n\n\t\ttry {\n\t\t\tconst parsedData = JSON.parse(data);\n\t\t\tconsole.log(parsedData);\n\n\t\t\tif (parsedData.error) {\n\t\t\t\tyield { done: true, value: '', error: parsedData.error };\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (parsedData.citations) {\n\t\t\t\tyield { done: false, value: '', citations: parsedData.citations };\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tyield {\n\t\t\t\tdone: false,\n\t\t\t\tvalue: parsedData.choices?.[0]?.delta?.content ?? '',\n\t\t\t\tusage: parsedData.usage\n\t\t\t};\n\t\t} catch (e) {\n\t\t\tconsole.error('Error extracting delta from SSE event:', e);\n\t\t}\n\t}\n}\n\n// streamLargeDeltasAsRandomChunks will chunk large deltas (length > 5) into random sized chunks between 1-3 characters\n// This is to simulate a more fluid streaming, even though some providers may send large chunks of text at once\nasync function* streamLargeDeltasAsRandomChunks(\n\titerator: AsyncGenerator\n): AsyncGenerator {\n\tfor await (const textStreamUpdate of iterator) {\n\t\tif (textStreamUpdate.done) {\n\t\t\tyield textStreamUpdate;\n\t\t\treturn;\n\t\t}\n\t\tif (textStreamUpdate.citations) {\n\t\t\tyield textStreamUpdate;\n\t\t\tcontinue;\n\t\t}\n\t\tlet content = textStreamUpdate.value;\n\t\tif (content.length < 5) {\n\t\t\tyield { done: false, value: content };\n\t\t\tcontinue;\n\t\t}\n\t\twhile (content != '') {\n\t\t\tconst chunkSize = Math.min(Math.floor(Math.random() * 3) + 1, content.length);\n\t\t\tconst chunk = content.slice(0, chunkSize);\n\t\t\tyield { done: false, value: chunk };\n\t\t\t// Do not sleep if the tab is hidden\n\t\t\t// Timers are throttled to 1s in hidden tabs\n\t\t\tif (document?.visibilityState !== 'hidden') {\n\t\t\t\tawait sleep(5);\n\t\t\t}\n\t\t\tcontent = content.slice(chunkSize);\n\t\t}\n\t}\n}\n\nconst sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n","\n\n{#if !dismissed}\n\t{#if mounted}\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t{banner.type}\n\t\t\t\t\t
\n\n\t\t\t\t\t{#if banner.url}\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tLearn More\n\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t{/if}\n\t\t\t\t\n\n\t\t\t\t
\n\t\t\t\t\t{banner.content}\n\t\t\t\t
\n\t\t\t\n\n\t\t\t{#if banner.url}\n\t\t\t\t
\n\t\t\t\t\tLearn More\n\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t{/if}\n\t\t\t
\n\t\t\t\t{#if banner.dismissible}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tdismiss(banner.id);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tclass=\" -mt-[3px] ml-1.5 mr-1 text-gray-400 dark:hover:text-white h-1\">×\n\t\t\t\t{/if}\n\t\t\t
\n\t\t\n\t{/if}\n{/if}\n","\n\n{#if filteredPromptCommands.length > 0}\n\t
\n\t\t
\n\t\t\t
\n\t\t\t\t
/
\n\t\t\t
\n\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t{#each filteredPromptCommands as command, commandIdx}\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tconfirmCommand(command);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\ton:mousemove={() => {\n\t\t\t\t\t\t\t\tselectedCommandIdx = commandIdx;\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\ton:focus={() => {}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{command.command}\n\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{command.title}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t{/each}\n\t\t\t\t
\n\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t\t\t{$i18n.t(\n\t\t\t\t\t\t\t'Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.'\n\t\t\t\t\t\t)}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t\n\t\n{/if}\n","\n\n{#if filteredItems.length > 0 || prompt.split(' ')?.at(0)?.substring(1).startsWith('http')}\n\t
\n\t\t
\n\t\t\t
\n\t\t\t\t
#
\n\t\t\t
\n\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t{#each filteredItems as doc, docIdx}\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tconsole.log(doc);\n\n\t\t\t\t\t\t\t\tconfirmSelect(doc);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\ton:mousemove={() => {\n\t\t\t\t\t\t\t\tselectedIdx = docIdx;\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\ton:focus={() => {}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{#if doc.type === 'collection'}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t{doc?.title ?? `#${doc.name}`}\n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t{$i18n.t('Collection')}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t#{doc.name} ({doc.filename})\n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t{doc.title}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\n\t\t\t\t\t{/each}\n\n\t\t\t\t\t{#if prompt\n\t\t\t\t\t\t.split(' ')\n\t\t\t\t\t\t.some((s) => s.substring(1).startsWith('https://www.youtube.com') || s\n\t\t\t\t\t\t\t\t\t.substring(1)\n\t\t\t\t\t\t\t\t\t.startsWith('https://youtu.be'))}\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tconst url = prompt.split(' ')?.at(0)?.substring(1);\n\t\t\t\t\t\t\t\tif (isValidHttpUrl(url)) {\n\t\t\t\t\t\t\t\t\tconfirmSelectYoutube(url);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\ttoast.error(\n\t\t\t\t\t\t\t\t\t\t$i18n.t(\n\t\t\t\t\t\t\t\t\t\t\t'Oops! Looks like the URL is invalid. Please double-check and try again.'\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{prompt.split(' ')?.at(0)?.substring(1)}\n\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t
{$i18n.t('Youtube')}
\n\t\t\t\t\t\t\n\t\t\t\t\t{:else if prompt.split(' ')?.at(0)?.substring(1).startsWith('http')}\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tconst url = prompt.split(' ')?.at(0)?.substring(1);\n\t\t\t\t\t\t\t\tif (isValidHttpUrl(url)) {\n\t\t\t\t\t\t\t\t\tconfirmSelectWeb(url);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\ttoast.error(\n\t\t\t\t\t\t\t\t\t\t$i18n.t(\n\t\t\t\t\t\t\t\t\t\t\t'Oops! Looks like the URL is invalid. Please double-check and try again.'\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{prompt.split(' ')?.at(0)?.substring(1)}\n\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t
{$i18n.t('Web')}
\n\t\t\t\t\t\t\n\t\t\t\t\t{/if}\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t\n{/if}\n","\n\n{#if prompt.charAt(0) === '@'}\n\t{#if filteredModels.length > 0}\n\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
@
\n\t\t\t\t
\n\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t{#each filteredModels as model, modelIdx}\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tconfirmSelect(model);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\ton:mousemove={() => {\n\t\t\t\t\t\t\t\t\tselectedIdx = modelIdx;\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\ton:focus={() => {}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t{model.name}\n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{/each}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t\n\t{/if}\n{/if}\n","\n\n\n\t\n\n","\n\n\n\t\n\t\n\n","\n\n\n\t\n\n","\n\n\n\t\n\n","\n\n {\n\t\tif (e.detail === false) {\n\t\t\tonClose();\n\t\t}\n\t}}\n>\n\t\n\t\t\n\t\n\n\t
\n\t\t\n\t\t\t{#if Object.keys(tools).length > 0}\n\t\t\t\t
\n\t\t\t\t\t{#each Object.keys(tools) as toolId}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
{tools[toolId].name}
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tselectedToolIds = e.detail\n\t\t\t\t\t\t\t\t\t\t? [...selectedToolIds, toolId]\n\t\t\t\t\t\t\t\t\t\t: selectedToolIds.filter((id) => id !== toolId);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t
\n\t\t\t\t\t{/each}\n\t\t\t\t
\n\n\t\t\t\t
\n\t\t\t{/if}\n\n\t\t\t{#if $config?.features?.enable_web_search}\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
{$i18n.t('Web Search')}
\n\t\t\t\t\t
\n\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t
\n\t\t\t{/if}\n\n\t\t\t {\n\t\t\t\t\tuploadFilesHandler();\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t\n\t\t\t\t
{$i18n.t('Upload Files')}
\n\t\t\t\n\t\t\n\t\n\n","\n\n\n\t\n\n","\n\n\n\t
\n\t\t {\n\t\t\t\tdispatch('cancel');\n\t\t\t\tstopRecording();\n\t\t\t}}\n\t\t>\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t
\n\n\t\n\t\t
\n\t\t\t{#each visualizerData.slice().reverse() as rms}\n\t\t\t\t\n\t\t\t{/each}\n\t\t
\n\t\n\n\t
\n\t\t\n\t\t\t{formatSeconds(durationSeconds)}\n\t\t
\n\t\n\n\t
\n\t\t{#if loading}\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t{:else}\n\t\t\t {\n\t\t\t\t\tawait confirmRecording();\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t{/if}\n\t
\n\n\n\n","\n\n{#if dragged}\n\t\n\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t\n{/if}\n\n
\n\t
\n\t\t
\n\t\t\t
\n\t\t\t\t{#if autoScroll === false && messages.length > 0}\n\t\t\t\t\t
\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tautoScroll = true;\n\t\t\t\t\t\t\t\tscrollToBottom();\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t{/if}\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t{#if prompt.charAt(0) === '/'}\n\t\t\t\t\t\n\t\t\t\t{:else if prompt.charAt(0) === '#'}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tconsole.log(e);\n\t\t\t\t\t\t\tuploadYoutubeTranscription(e.detail);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ton:url={(e) => {\n\t\t\t\t\t\t\tconsole.log(e);\n\t\t\t\t\t\t\tuploadWeb(e.detail);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ton:select={(e) => {\n\t\t\t\t\t\t\tconsole.log(e);\n\t\t\t\t\t\t\tfiles = [\n\t\t\t\t\t\t\t\t...files,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttype: e?.detail?.type ?? 'doc',\n\t\t\t\t\t\t\t\t\t...e.detail,\n\t\t\t\t\t\t\t\t\tupload_status: true\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t{/if}\n\n\t\t\t\t {\n\t\t\t\t\t\tatSelectedModel = e.detail;\n\t\t\t\t\t\tchatTextAreaElement?.focus();\n\t\t\t\t\t}}\n\t\t\t\t/>\n\n\t\t\t\t{#if atSelectedModel !== undefined}\n\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t model.id === atSelectedModel.id)?.info?.meta\n\t\t\t\t\t\t\t\t\t?.profile_image_url ??\n\t\t\t\t\t\t\t\t\t($i18n.language === 'dg-DG'\n\t\t\t\t\t\t\t\t\t\t? `/doge.png`\n\t\t\t\t\t\t\t\t\t\t: `${WEBUI_BASE_URL}/static/favicon.png`)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tTalking to {atSelectedModel.name}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tatSelectedModel = undefined;\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t{/if}\n\t\t\t
\n\t\t
\n\t
\n\n\t
\n\t\t
\n\t\t\t
\n\t\t\t\t {\n\t\t\t\t\t\tif (inputFiles && inputFiles.length > 0) {\n\t\t\t\t\t\t\tconst _inputFiles = Array.from(inputFiles);\n\t\t\t\t\t\t\t_inputFiles.forEach((file) => {\n\t\t\t\t\t\t\t\tif (['image/gif', 'image/webp', 'image/jpeg', 'image/png'].includes(file['type'])) {\n\t\t\t\t\t\t\t\t\tif (visionCapableModels.length === 0) {\n\t\t\t\t\t\t\t\t\t\ttoast.error($i18n.t('Selected model(s) do not support image inputs'));\n\t\t\t\t\t\t\t\t\t\tinputFiles = null;\n\t\t\t\t\t\t\t\t\t\tfilesInputElement.value = '';\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tlet reader = new FileReader();\n\t\t\t\t\t\t\t\t\treader.onload = (event) => {\n\t\t\t\t\t\t\t\t\t\tfiles = [\n\t\t\t\t\t\t\t\t\t\t\t...files,\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\ttype: 'image',\n\t\t\t\t\t\t\t\t\t\t\t\turl: `${event.target.result}`\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\tinputFiles = null;\n\t\t\t\t\t\t\t\t\t\tfilesInputElement.value = '';\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\treader.readAsDataURL(file);\n\t\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\t\tSUPPORTED_FILE_TYPE.includes(file['type']) ||\n\t\t\t\t\t\t\t\t\tSUPPORTED_FILE_EXTENSIONS.includes(file.name.split('.').at(-1))\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\tuploadDoc(file);\n\t\t\t\t\t\t\t\t\tfilesInputElement.value = '';\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\ttoast.error(\n\t\t\t\t\t\t\t\t\t\t$i18n.t(\n\t\t\t\t\t\t\t\t\t\t\t`Unknown File Type '{{file_type}}', but accepting and treating as plain text`,\n\t\t\t\t\t\t\t\t\t\t\t{ file_type: file['type'] }\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tuploadDoc(file);\n\t\t\t\t\t\t\t\t\tfilesInputElement.value = '';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttoast.error($i18n.t(`File not found.`));\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t/>\n\n\t\t\t\t{#if recording}\n\t\t\t\t\t {\n\t\t\t\t\t\t\trecording = false;\n\n\t\t\t\t\t\t\tawait tick();\n\t\t\t\t\t\t\tdocument.getElementById('chat-textarea')?.focus();\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ton:confirm={async (e) => {\n\t\t\t\t\t\t\tconst response = e.detail;\n\t\t\t\t\t\t\tprompt = `${prompt}${response} `;\n\n\t\t\t\t\t\t\trecording = false;\n\n\t\t\t\t\t\t\tawait tick();\n\t\t\t\t\t\t\tdocument.getElementById('chat-textarea')?.focus();\n\n\t\t\t\t\t\t\tif ($settings?.speechAutoSend ?? false) {\n\t\t\t\t\t\t\t\tsubmitPrompt(prompt);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t{:else}\n\t\t\t\t\t {\n\t\t\t\t\t\t\t// check if selectedModels support image input\n\t\t\t\t\t\t\tsubmitPrompt(prompt);\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{#if files.length > 0}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t{#each files as file, fileIdx}\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t{#if file.type === 'image'}\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{#if atSelectedModel ? visionCapableModels.length === 0 : selectedModels.length !== visionCapableModels.length}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t !visionCapableModels.includes(id))\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.join(', ')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t{:else if file.type === 'doc'}\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{#if file.upload_status}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{file.name}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
{$i18n.t('Document')}
\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t{:else if file.type === 'collection'}\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{file?.title ?? `#${file.name}`}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
{$i18n.t('Collection')}
\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t{/if}\n\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfiles.splice(fileIdx, 1);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfiles = files;\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t{/each}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{/if}\n\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\tif (availableToolIds.includes(e.id) || ($_user?.role ?? 'user') === 'admin') {\n\t\t\t\t\t\t\t\t\t\t\t\ta[e.id] = {\n\t\t\t\t\t\t\t\t\t\t\t\t\tname: e.name,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdescription: e.meta.description,\n\t\t\t\t\t\t\t\t\t\t\t\t\tenabled: false\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\treturn a;\n\t\t\t\t\t\t\t\t\t\t}, {})}\n\t\t\t\t\t\t\t\t\t\tuploadFilesHandler={() => {\n\t\t\t\t\t\t\t\t\t\t\tfilesInputElement.click();\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tonClose={async () => {\n\t\t\t\t\t\t\t\t\t\t\tawait tick();\n\t\t\t\t\t\t\t\t\t\t\tchatTextAreaElement?.focus();\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t!$mobile ||\n\t\t\t\t\t\t\t\t\t\t\t!(\n\t\t\t\t\t\t\t\t\t\t\t\t'ontouchstart' in window ||\n\t\t\t\t\t\t\t\t\t\t\t\tnavigator.maxTouchPoints > 0 ||\n\t\t\t\t\t\t\t\t\t\t\t\tnavigator.msMaxTouchPoints > 0\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t// Prevent Enter key from creating a new line\n\t\t\t\t\t\t\t\t\t\t\tif (e.key === 'Enter' && !e.shiftKey) {\n\t\t\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Submit the prompt when Enter key is pressed\n\t\t\t\t\t\t\t\t\t\t\tif (prompt !== '' && e.key === 'Enter' && !e.shiftKey) {\n\t\t\t\t\t\t\t\t\t\t\t\tsubmitPrompt(prompt);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\ton:keydown={async (e) => {\n\t\t\t\t\t\t\t\t\t\tconst isCtrlPressed = e.ctrlKey || e.metaKey; // metaKey is for Cmd key on Mac\n\n\t\t\t\t\t\t\t\t\t\t// Check if Ctrl + R is pressed\n\t\t\t\t\t\t\t\t\t\tif (prompt === '' && isCtrlPressed && e.key.toLowerCase() === 'r') {\n\t\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\tconsole.log('regenerate');\n\n\t\t\t\t\t\t\t\t\t\t\tconst regenerateButton = [\n\t\t\t\t\t\t\t\t\t\t\t\t...document.getElementsByClassName('regenerate-response-button')\n\t\t\t\t\t\t\t\t\t\t\t]?.at(-1);\n\n\t\t\t\t\t\t\t\t\t\t\tregenerateButton?.click();\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif (prompt === '' && e.key == 'ArrowUp') {\n\t\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\t\t\t\t\t\tconst userMessageElement = [\n\t\t\t\t\t\t\t\t\t\t\t\t...document.getElementsByClassName('user-message')\n\t\t\t\t\t\t\t\t\t\t\t]?.at(-1);\n\n\t\t\t\t\t\t\t\t\t\t\tconst editButton = [\n\t\t\t\t\t\t\t\t\t\t\t\t...document.getElementsByClassName('edit-user-message-button')\n\t\t\t\t\t\t\t\t\t\t\t]?.at(-1);\n\n\t\t\t\t\t\t\t\t\t\t\tconsole.log(userMessageElement);\n\n\t\t\t\t\t\t\t\t\t\t\tuserMessageElement.scrollIntoView({ block: 'center' });\n\t\t\t\t\t\t\t\t\t\t\teditButton?.click();\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif (['/', '#', '@'].includes(prompt.charAt(0)) && e.key === 'ArrowUp') {\n\t\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\t\t\t\t\t\t(promptsElement || documentsElement || modelsElement).selectUp();\n\n\t\t\t\t\t\t\t\t\t\t\tconst commandOptionButton = [\n\t\t\t\t\t\t\t\t\t\t\t\t...document.getElementsByClassName('selected-command-option-button')\n\t\t\t\t\t\t\t\t\t\t\t]?.at(-1);\n\t\t\t\t\t\t\t\t\t\t\tcommandOptionButton.scrollIntoView({ block: 'center' });\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif (['/', '#', '@'].includes(prompt.charAt(0)) && e.key === 'ArrowDown') {\n\t\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\t\t\t\t\t\t(promptsElement || documentsElement || modelsElement).selectDown();\n\n\t\t\t\t\t\t\t\t\t\t\tconst commandOptionButton = [\n\t\t\t\t\t\t\t\t\t\t\t\t...document.getElementsByClassName('selected-command-option-button')\n\t\t\t\t\t\t\t\t\t\t\t]?.at(-1);\n\t\t\t\t\t\t\t\t\t\t\tcommandOptionButton.scrollIntoView({ block: 'center' });\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif (['/', '#', '@'].includes(prompt.charAt(0)) && e.key === 'Enter') {\n\t\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\t\t\t\t\t\tconst commandOptionButton = [\n\t\t\t\t\t\t\t\t\t\t\t\t...document.getElementsByClassName('selected-command-option-button')\n\t\t\t\t\t\t\t\t\t\t\t]?.at(-1);\n\n\t\t\t\t\t\t\t\t\t\t\tif (e.shiftKey) {\n\t\t\t\t\t\t\t\t\t\t\t\tprompt = `${prompt}\\n`;\n\t\t\t\t\t\t\t\t\t\t\t} else if (commandOptionButton) {\n\t\t\t\t\t\t\t\t\t\t\t\tcommandOptionButton?.click();\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tdocument.getElementById('send-message-button')?.click();\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif (['/', '#', '@'].includes(prompt.charAt(0)) && e.key === 'Tab') {\n\t\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\t\t\t\t\t\tconst commandOptionButton = [\n\t\t\t\t\t\t\t\t\t\t\t\t...document.getElementsByClassName('selected-command-option-button')\n\t\t\t\t\t\t\t\t\t\t\t]?.at(-1);\n\n\t\t\t\t\t\t\t\t\t\t\tcommandOptionButton?.click();\n\t\t\t\t\t\t\t\t\t\t} else if (e.key === 'Tab') {\n\t\t\t\t\t\t\t\t\t\t\tconst words = findWordIndices(prompt);\n\n\t\t\t\t\t\t\t\t\t\t\tif (words.length > 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst word = words.at(0);\n\t\t\t\t\t\t\t\t\t\t\t\tconst fullPrompt = prompt;\n\n\t\t\t\t\t\t\t\t\t\t\t\tprompt = prompt.substring(0, word?.endIndex + 1);\n\t\t\t\t\t\t\t\t\t\t\t\tawait tick();\n\n\t\t\t\t\t\t\t\t\t\t\t\te.target.scrollTop = e.target.scrollHeight;\n\t\t\t\t\t\t\t\t\t\t\t\tprompt = fullPrompt;\n\t\t\t\t\t\t\t\t\t\t\t\tawait tick();\n\n\t\t\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t\te.target.setSelectionRange(word?.startIndex, word.endIndex + 1);\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\te.target.style.height = '';\n\t\t\t\t\t\t\t\t\t\t\te.target.style.height = Math.min(e.target.scrollHeight, 200) + 'px';\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif (e.key === 'Escape') {\n\t\t\t\t\t\t\t\t\t\t\tconsole.log('Escape');\n\t\t\t\t\t\t\t\t\t\t\tatSelectedModel = undefined;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\trows=\"1\"\n\t\t\t\t\t\t\t\t\ton:input={(e) => {\n\t\t\t\t\t\t\t\t\t\te.target.style.height = '';\n\t\t\t\t\t\t\t\t\t\te.target.style.height = Math.min(e.target.scrollHeight, 200) + 'px';\n\t\t\t\t\t\t\t\t\t\tuser = null;\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\ton:focus={(e) => {\n\t\t\t\t\t\t\t\t\t\te.target.style.height = '';\n\t\t\t\t\t\t\t\t\t\te.target.style.height = Math.min(e.target.scrollHeight, 200) + 'px';\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\ton:paste={(e) => {\n\t\t\t\t\t\t\t\t\t\tconst clipboardData = e.clipboardData || window.clipboardData;\n\n\t\t\t\t\t\t\t\t\t\tif (clipboardData && clipboardData.items) {\n\t\t\t\t\t\t\t\t\t\t\tfor (const item of clipboardData.items) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (item.type.indexOf('image') !== -1) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst blob = item.getAsFile();\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst reader = new FileReader();\n\n\t\t\t\t\t\t\t\t\t\t\t\t\treader.onload = function (e) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfiles = [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...files,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype: 'image',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\turl: `${e.target.result}`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\t\t\t\t\t\treader.readAsDataURL(blob);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t{#if messages.length == 0 || messages.at(-1).done == true}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst res = await navigator.mediaDevices\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.getUserMedia({ audio: true })\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.catch(function (err) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttoast.error(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$i18n.t(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`Permission denied when accessing microphone: {{error}}`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\terror: err\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (res) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trecording = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttoast.error($i18n.t('Permission denied when accessing microphone'));\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{#if messages.length == 0 || messages.at(-1).done == true}\n\t\t\t\t\t\t\t\t{#if prompt === ''}\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (selectedModels.length > 1) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttoast.error($i18n.t('Select only one model to call'));\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\tif ($config.audio.stt.engine === 'web') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttoast.error(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$i18n.t('Call feature is not supported when using Web STT engine')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t// check if user has access to getUserMedia\n\t\t\t\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tawait navigator.mediaDevices.getUserMedia({ audio: true });\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// If the user grants the permission, proceed to show the call overlay\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tshowCallOverlay.set(true);\n\t\t\t\t\t\t\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// If the user denies the permission or an error occurs, show an error message\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttoast.error($i18n.t('Permission denied when accessing media devices'));\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\tstopResponse();\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t{/if}\n\n\t\t\t\t
\n\t\t\t\t\t{$i18n.t('LLMs can make mistakes. Verify important information.')}\n\t\t\t\t
\n\t\t\t\n\t\t\n\t\n\n\n\n","\n\n
\n\t{#each selectedModels as selectedModel, selectedModelIdx}\n\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t ({\n\t\t\t\t\t\t\tvalue: model.id,\n\t\t\t\t\t\t\tlabel: model.name,\n\t\t\t\t\t\t\tmodel: model\n\t\t\t\t\t\t}))}\n\t\t\t\t\t\tbind:value={selectedModel}\n\t\t\t\t\t/>\n\t\t\t\t
\n\t\t\t
\n\n\t\t\t{#if selectedModelIdx === 0}\n\t\t\t\t\n\t\t\t{:else}\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tselectedModels.splice(selectedModelIdx, 1);\n\t\t\t\t\t\t\t\tselectedModels = selectedModels;\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t{/if}\n\t\t
\n\t{/each}\n
\n\n{#if showSetDefault && !$mobile}\n\t
\n\t\t\n\t
\n{/if}\n","\n\n {\n\t\tif (e.detail === false) {\n\t\t\tonClose();\n\t\t}\n\t}}\n>\n\t\n\n\t
\n\t\t\n\t\t\t\n\n\t\t\t {\n\t\t\t\t\tshareHandler();\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t
{$i18n.t('Share')}
\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\t
{$i18n.t('Download')}
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tdownloadJSONExport();\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t
{$i18n.t('Export chat (.json)')}
\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tdownloadTxt();\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t
{$i18n.t('Plain text (.txt)')}
\n\t\t\t\t\t\n\n\t\t\t\t\t {\n\t\t\t\t\t\t\tdownloadPdf();\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t
{$i18n.t('PDF document (.pdf)')}
\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\n\t
\n\n","\n\n\n\n","\n\n {\n\t\tif (e.detail === false) {\n\t\t\tonClose();\n\t\t}\n\t}}\n>\n\t\n\n\t
\n\t\t\n\t\t\t{#each devices as device}\n\t\t\t\t {\n\t\t\t\t\t\tdispatch('change', device.deviceId);\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{device?.label ?? 'Camera'}\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\n\t\t\t{/each}\n\t\t\n\t
\n\n","\n\n{#if $showCallOverlay}\n\t
\n\t\t\n\t\t\t
\n\t\t\t\t{#if camera}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tif (assistantSpeaking) {\n\t\t\t\t\t\t\t\tstopAllAudio();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{#if emoji}\n\t\t\t\t\t\t\t 4\n\t\t\t\t\t\t\t\t\t? '4.5'\n\t\t\t\t\t\t\t\t\t: rmsLevel * 100 > 2\n\t\t\t\t\t\t\t\t\t? '4.25'\n\t\t\t\t\t\t\t\t\t: rmsLevel * 100 > 1\n\t\t\t\t\t\t\t\t\t? '3.75'\n\t\t\t\t\t\t\t\t\t: '3.5'}rem;width: 100%; text-align:center;\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{emoji}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t{:else if loading || assistantSpeaking}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t 4\n\t\t\t\t\t\t\t\t\t? ' size-[4.5rem]'\n\t\t\t\t\t\t\t\t\t: rmsLevel * 100 > 2\n\t\t\t\t\t\t\t\t\t? ' size-16'\n\t\t\t\t\t\t\t\t\t: rmsLevel * 100 > 1\n\t\t\t\t\t\t\t\t\t? 'size-14'\n\t\t\t\t\t\t\t\t\t: 'size-12'} transition-all bg-black dark:bg-white rounded-full\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{/if}\n\n\t\t\t\t
\n\t\t\t\t\t{#if !camera}\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tif (assistantSpeaking) {\n\t\t\t\t\t\t\t\t\tstopAllAudio();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{#if emoji}\n\t\t\t\t\t\t\t\t 4\n\t\t\t\t\t\t\t\t\t\t? '13'\n\t\t\t\t\t\t\t\t\t\t: rmsLevel * 100 > 2\n\t\t\t\t\t\t\t\t\t\t? '12'\n\t\t\t\t\t\t\t\t\t\t: rmsLevel * 100 > 1\n\t\t\t\t\t\t\t\t\t\t? '11.5'\n\t\t\t\t\t\t\t\t\t\t: '11'}rem;width:100%;text-align:center;\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{emoji}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{:else if loading || assistantSpeaking}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t\t 4\n\t\t\t\t\t\t\t\t\t\t? ' size-52'\n\t\t\t\t\t\t\t\t\t\t: rmsLevel * 100 > 2\n\t\t\t\t\t\t\t\t\t\t? 'size-48'\n\t\t\t\t\t\t\t\t\t\t: rmsLevel * 100 > 1\n\t\t\t\t\t\t\t\t\t\t? 'size-[11.5rem]'\n\t\t\t\t\t\t\t\t\t\t: 'size-44'} transition-all bg-black dark:bg-white rounded-full\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\n\t\t\t\t\t{:else}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tstopCamera();\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t{/if}\n\t\t\t\t\n\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{#if camera}\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tconsole.log(e.detail);\n\t\t\t\t\t\t\t\t\tselectedVideoInputDeviceId = e.detail;\n\t\t\t\t\t\t\t\t\tawait stopVideoStream();\n\t\t\t\t\t\t\t\t\tawait startVideoStream();\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tawait navigator.mediaDevices.getUserMedia({ video: true });\n\t\t\t\t\t\t\t\t\t\tstartCamera();\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{/if}\n\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tif (assistantSpeaking) {\n\t\t\t\t\t\t\t\t\tstopAllAudio();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{#if loading}\n\t\t\t\t\t\t\t\t\t{$i18n.t('Thinking...')}\n\t\t\t\t\t\t\t\t{:else if assistantSpeaking}\n\t\t\t\t\t\t\t\t\t{$i18n.t('Tap to interrupt')}\n\t\t\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t\t\t{$i18n.t('Listening...')}\n\t\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tshowCallOverlay.set(false);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\n\t\t\n\t\n{/if}\n","\n\n\n\t\n\t\t{title\n\t\t\t? `${title.length > 30 ? `${title.slice(0, 30)}...` : title} | ${$WEBUI_NAME}`\n\t\t\t: `${$WEBUI_NAME}`}\n\t\n\n\n