diff --git a/.gitattributes b/.gitattributes
index a41605e6606bb80dbfabf7e8d20d09825e18eadc..40edf9e78ae5a838fd65ed42c4b02094eafc5437 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -15,3 +15,7 @@
# Do not try and merge these files
poetry.lock -diff
+*.ipynb -diff
+
+# LFS
+models/** filter=lfs diff=lfs merge=lfs -text
diff --git a/.gitignore b/.gitignore
index 906e2fd5e7647da56af61856d9e0ff739712c234..dd902704a8a6c05973eb3593877c963b888c0ebc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -196,5 +196,4 @@ pyrightconfig.json
# Custom
data/
cache/
-models/
flagged/
diff --git a/.python-version b/.python-version
new file mode 100644
index 0000000000000000000000000000000000000000..2419ad5b0a329db360c988461d3ca3d7c73d6eef
--- /dev/null
+++ b/.python-version
@@ -0,0 +1 @@
+3.11.9
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..6036d9321346d1ba75294d3b662ac4ab06937028
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,20 @@
+#!/usr/bin/make -f
+
+default: install
+
+install:
+ @poetry install --only main
+ @poetry run spacy download en_core_web_sm
+
+install-dev:
+ @poetry self add poetry-plugin-export
+ @poetry install
+
+requirements:
+ @poetry export -f requirements.txt --output requirements.txt --without dev
+ @poetry export -f requirements.txt --output requirements-dev.txt
+
+lint:
+ @poetry run pre-commit run --all-files
+
+.PHONY: install install-dev requirements gradio lint run
diff --git a/README.md b/README.md
index 84a5c4393af9a32ba705df25df63e6ebe1bf77c0..05fee01bcbeba7fceeaf7abe50a88c21a7c2fe36 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,19 @@
-Sentiment Analysis
---
+title: Sentiment Analysis
+emoji: 🤗
+colorFrom: yellow
+colorTo: orange
+pinned: false
+sdk: gradio
+python_version: 3.11
+app_file: app.py
+datasets:
+ - mrshu/amazonreviews
+ - stanfordnlp/sentiment140
+ - stanfordnlp/imdb
+---
+
+# Sentiment Analysis
### Usage
1. Clone the repository
@@ -9,8 +23,8 @@ Sentiment Analysis
### Datasets
- [Sentiment140](https://www.kaggle.com/datasets/kazanova/sentiment140)
-- [IMDb](https://www.kaggle.com/datasets/lakshmi25npathi/imdb-dataset-of-50k-movie-reviews)
- [Amazon Reviews](https://www.kaggle.com/datasets/bittlingmayer/amazonreviews)
+- [IMDB](https://www.kaggle.com/datasets/lakshmi25npathi/imdb-dataset-of-50k-movie-reviews)
### Required tools
- `just`
diff --git a/justfile b/justfile
index b3643ff289f9973bdf2978f72b1cf352d3e5fab6..e4136ebdc2c17cc8fb06d86e146c16f35da75aa4 100644
--- a/justfile
+++ b/justfile
@@ -8,6 +8,7 @@
@install:
poetry install --only main
+ poetry run spacy download en_core_web_sm
@install-dev:
poetry self add poetry-plugin-export
diff --git a/notebook.ipynb b/notebook.ipynb
deleted file mode 100644
index d049b9929ab1e9c2b9d9991230ae9238b959c966..0000000000000000000000000000000000000000
--- a/notebook.ipynb
+++ /dev/null
@@ -1,778 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Sentiment Analysis"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {},
- "outputs": [],
- "source": [
- "from __future__ import annotations\n",
- "\n",
- "from typing import TYPE_CHECKING\n",
- "\n",
- "if TYPE_CHECKING:\n",
- " from sklearn.base import BaseEstimator\n",
- "\n",
- "import json\n",
- "import re\n",
- "import warnings\n",
- "from functools import cache\n",
- "from pathlib import Path\n",
- "\n",
- "import joblib\n",
- "import matplotlib.pyplot as plt\n",
- "import nltk\n",
- "import numpy as np\n",
- "import pandas as pd\n",
- "import seaborn as sns\n",
- "from nltk.corpus import stopwords\n",
- "from sklearn.feature_extraction.text import CountVectorizer, TfidfTransformer\n",
- "from sklearn.linear_model import LogisticRegression\n",
- "from sklearn.metrics import confusion_matrix\n",
- "from sklearn.model_selection import RandomizedSearchCV, train_test_split\n",
- "from sklearn.pipeline import Pipeline\n",
- "from sklearn.svm import SVC\n",
- "\n",
- "from app.constants import CACHE_DIR, MODELS_DIR, SENTIMENT140_PATH\n",
- "from app.model import TextCleaner, TextLemmatizer"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {},
- "outputs": [],
- "source": [
- "SEED = 42\n",
- "MAX_FEATURES = 20000"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "[nltk_data] Downloading package wordnet to /home/tymec/nltk_data...\n",
- "[nltk_data] Package wordnet is already up-to-date!\n",
- "[nltk_data] Downloading package stopwords to /home/tymec/nltk_data...\n",
- "[nltk_data] Package stopwords is already up-to-date!\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "True"
- ]
- },
- "execution_count": 3,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "nltk.download(\"wordnet\")\n",
- "nltk.download(\"stopwords\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Data"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Load the data"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "
\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " target | \n",
- " id | \n",
- " date | \n",
- " flag | \n",
- " user | \n",
- " text | \n",
- " sentiment | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " | 0 | \n",
- " 0 | \n",
- " 1467810369 | \n",
- " Mon Apr 06 22:19:45 PDT 2009 | \n",
- " NO_QUERY | \n",
- " _TheSpecialOne_ | \n",
- " @switchfoot http://twitpic.com/2y1zl - Awww, t... | \n",
- " 0 | \n",
- "
\n",
- " \n",
- " | 1 | \n",
- " 0 | \n",
- " 1467810672 | \n",
- " Mon Apr 06 22:19:49 PDT 2009 | \n",
- " NO_QUERY | \n",
- " scotthamilton | \n",
- " is upset that he can't update his Facebook by ... | \n",
- " 0 | \n",
- "
\n",
- " \n",
- " | 2 | \n",
- " 0 | \n",
- " 1467810917 | \n",
- " Mon Apr 06 22:19:53 PDT 2009 | \n",
- " NO_QUERY | \n",
- " mattycus | \n",
- " @Kenichan I dived many times for the ball. Man... | \n",
- " 0 | \n",
- "
\n",
- " \n",
- " | 3 | \n",
- " 0 | \n",
- " 1467811184 | \n",
- " Mon Apr 06 22:19:57 PDT 2009 | \n",
- " NO_QUERY | \n",
- " ElleCTF | \n",
- " my whole body feels itchy and like its on fire | \n",
- " 0 | \n",
- "
\n",
- " \n",
- " | 4 | \n",
- " 0 | \n",
- " 1467811193 | \n",
- " Mon Apr 06 22:19:57 PDT 2009 | \n",
- " NO_QUERY | \n",
- " Karoli | \n",
- " @nationwideclass no, it's not behaving at all.... | \n",
- " 0 | \n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " target id date flag \\\n",
- "0 0 1467810369 Mon Apr 06 22:19:45 PDT 2009 NO_QUERY \n",
- "1 0 1467810672 Mon Apr 06 22:19:49 PDT 2009 NO_QUERY \n",
- "2 0 1467810917 Mon Apr 06 22:19:53 PDT 2009 NO_QUERY \n",
- "3 0 1467811184 Mon Apr 06 22:19:57 PDT 2009 NO_QUERY \n",
- "4 0 1467811193 Mon Apr 06 22:19:57 PDT 2009 NO_QUERY \n",
- "\n",
- " user text \\\n",
- "0 _TheSpecialOne_ @switchfoot http://twitpic.com/2y1zl - Awww, t... \n",
- "1 scotthamilton is upset that he can't update his Facebook by ... \n",
- "2 mattycus @Kenichan I dived many times for the ball. Man... \n",
- "3 ElleCTF my whole body feels itchy and like its on fire \n",
- "4 Karoli @nationwideclass no, it's not behaving at all.... \n",
- "\n",
- " sentiment \n",
- "0 0 \n",
- "1 0 \n",
- "2 0 \n",
- "3 0 \n",
- "4 0 "
- ]
- },
- "execution_count": 4,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Load the data\n",
- "data = pd.read_csv(\n",
- " SENTIMENT140_PATH,\n",
- " encoding=\"ISO-8859-1\",\n",
- " names=[\n",
- " \"target\", # 0 = negative, 2 = neutral, 4 = positive\n",
- " \"id\", # The id of the tweet\n",
- " \"date\", # The date of the tweet\n",
- " \"flag\", # The query, NO_QUERY if not present\n",
- " \"user\", # The user that tweeted\n",
- " \"text\", # The text of the tweet\n",
- " ],\n",
- ")\n",
- "\n",
- "# Ignore rows with neutral sentiment\n",
- "data = data[data[\"target\"] != 2]\n",
- "\n",
- "# Map the sentiment values\n",
- "data[\"sentiment\"] = data[\"target\"].map({0: 0, 4: 1})\n",
- "\n",
- "# Show the first few rows\n",
- "data.head()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Load the stopwords"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "metadata": {},
- "outputs": [],
- "source": [
- "stopwords_en = stopwords.words(\"english\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Explore the data"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAFzCAYAAADsTAnbAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA5QElEQVR4nO3df1xW9f3/8Seg/PDHdeFPkInCslSWaWLh5arNRV426pOLmhZTUtR0YCmZSnPo+tRwtkqdJrU+n7BNl7rPcgWJEaaWkj9w5o/SrFFYeIGmcCUpINf5/tGXMy51AYY7Co/77XZutzjv13mfl9fNdzw9nHPwMQzDEAAAgEV8rW4AAAC0boQRAABgKcIIAACwFGEEAABYijACAAAsRRgBAACWIowAAABLEUYAAICl2ljdwOXM4/GopKREHTt2lI+Pj9XtAABwxTAMQ1999ZXCwsLk6/vt1z4II9+ipKRE4eHhVrcBAMAV68iRI+rZs+e31hBGvkXHjh0lffNB2mw2i7sBAODK4Xa7FR4ebn4v/TaEkW9R96MZm81GGAEA4CI05jYHbmAFAACWIowAAABLEUYAAIClCCMAAMBShBEAAGApwggAALAUYQQAAFiqSWGktrZWv/71rxUZGamgoCBdddVV+u///m8ZhmHWGIah9PR09ejRQ0FBQYqNjdXhw4e95jlx4oQSEhJks9kUHByspKQknTp1yqtm7969uvnmmxUYGKjw8HAtXLjwvH7Wrl2rfv36KTAwUAMGDNAbb7zhNd6YXgAAgMWMJnjyySeNLl26GNnZ2UZRUZGxdu1ao0OHDsbixYvNmgULFhh2u91Yt26d8f777xv/9V//ZURGRhqnT582a0aOHGkMHDjQeO+994x33nnH6NOnj3HfffeZ4xUVFUZISIiRkJBg7N+/3/jLX/5iBAUFGc8//7xZs3XrVsPPz89YuHCh8cEHHxhz58412rZta+zbt69JvXybiooKQ5JRUVHRlI8JAIBWrynfQ5sURuLi4owJEyZ47bv77ruNhIQEwzAMw+PxGKGhocZTTz1ljpeXlxsBAQHGX/7yF8MwDOODDz4wJBk7d+40a9avX2/4+PgYX3zxhWEYhvHcc88ZnTp1Mqqqqsya2bNnG3379jW//vnPf27ExcV59RITE2M8+OCDje6lIYQRAAAuTlO+hzbpxzTDhg1Tfn6+PvroI0nS+++/r3fffVe33367JKmoqEgul0uxsbHmMXa7XTExMSooKJAkFRQUKDg4WEOGDDFrYmNj5evrq+3bt5s1t9xyi/z9/c0ap9OpQ4cO6eTJk2ZN/fPU1dSdpzG9nKuqqkput9trAwAAl1aTfjfNnDlz5Ha71a9fP/n5+am2tlZPPvmkEhISJEkul0uSFBIS4nVcSEiIOeZyudS9e3fvJtq0UefOnb1qIiMjz5ujbqxTp05yuVwNnqehXs6VkZGh3/zmN434JFqeiDk5VreAZvbpgjirW0AzYo22LKxPb026MrJmzRqtXLlSq1at0u7du7VixQr9/ve/14oVKy5Vf/9RaWlpqqioMLcjR45Y3RIAAC1ek66MPProo5ozZ47GjBkjSRowYIA+++wzZWRkKDExUaGhoZKk0tJS9ejRwzyutLRUgwYNkiSFhoaqrKzMa96zZ8/qxIkT5vGhoaEqLS31qqn7uqGa+uMN9XKugIAABQQENO7DAAAAzaJJV0a+/vpr+fp6H+Ln5yePxyNJioyMVGhoqPLz881xt9ut7du3y+FwSJIcDofKy8tVWFho1mzcuFEej0cxMTFmzZYtW1RTU2PW5OXlqW/fvurUqZNZU/88dTV152lMLwAAwHpNCiN33nmnnnzySeXk5OjTTz/Vq6++qmeeeUY/+9nPJEk+Pj6aPn26nnjiCb322mvat2+fxo0bp7CwMI0aNUqS1L9/f40cOVKTJk3Sjh07tHXrVqWkpGjMmDEKCwuTJN1///3y9/dXUlKSDhw4oNWrV2vx4sVKTU01e3n44YeVm5urp59+WgcPHtT8+fO1a9cupaSkNLoXAABgvSb9mOYPf/iDfv3rX+uXv/ylysrKFBYWpgcffFDp6elmzaxZs1RZWanJkyervLxcN910k3JzcxUYGGjWrFy5UikpKbr11lvl6+ur+Ph4LVmyxBy32+168803lZycrOjoaHXt2lXp6emaPHmyWTNs2DCtWrVKc+fO1WOPPaarr75a69at07XXXtukXgAAgLV8DKPe61Phxe12y263q6KiQjabzep2Linu1G95uFu/ZWGNtiytYX025Xsov5sGAABYijACAAAsRRgBAACWIowAAABLEUYAAIClCCMAAMBShBEAAGApwggAALAUYQQAAFiKMAIAACxFGAEAAJYijAAAAEsRRgAAgKUI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uXOVnJysgIAASdKUKVO0dOlSzZo1SxMmTNDGjRu1Zs0a5eT8607y1NRUJSYmasiQIbrxxhu1aNEiVVZWavz48ZLUqF4AAMDloUlh5PPPP9d9992nL7/8Ut26ddNNN92k9957T926dZMkPfvss/L19VV8fLyqqqrkdDr13HPPmcf7+fkpOztbU6dOlcPhUPv27ZWYmKjHH3/crImMjFROTo5mzJihxYsXq2fPnnrxxRfldDrNmtGjR+vYsWNKT0+Xy+XSoEGDlJub63VTa0O9AACAy0OT3jPS2vCeEVzJWsN7DFoT1mjL0hrW5yV9zwgAAEBzIowAAABLEUYAAIClCCMAAMBShBEAAGApwggAALAUYQQAAFiKMAIAACxFGAEAAJYijAAAAEsRRgAAgKUIIwAAwFKEEQAAYCnCCAAAsBRhBAAAWIowAgAALEUYAQAAliKMAAAASxFGAACApQgjAADAUoQRAABgKcIIAACwFGEEAABYijACAAAsRRgBAACWIowAAABLfacwsmDBAvn4+Gj69OnmvjNnzig5OVldunRRhw4dFB8fr9LSUq/jiouLFRcXp3bt2ql79+569NFHdfbsWa+aTZs2afDgwQoICFCfPn2UlZV13vmXLVumiIgIBQYGKiYmRjt27PAab0wvAADAWhcdRnbu3Knnn39e1113ndf+GTNm6PXXX9fatWu1efNmlZSU6O677zbHa2trFRcXp+rqam3btk0rVqxQVlaW0tPTzZqioiLFxcVp+PDh2rNnj6ZPn66JEydqw4YNZs3q1auVmpqqefPmaffu3Ro4cKCcTqfKysoa3QsAALCej2EYRlMPOnXqlAYPHqznnntOTzzxhAYNGqRFixapoqJC3bp106pVq3TPPfdIkg4ePKj+/furoKBAQ4cO1fr163XHHXeopKREISEhkqTMzEzNnj1bx44dk7+/v2bPnq2cnBzt37/fPOeYMWNUXl6u3NxcSVJMTIxuuOEGLV26VJLk8XgUHh6uadOmac6cOY3qpSFut1t2u10VFRWy2WxN/ZiuKBFzcqxuAc3s0wVxVreAZsQabVlaw/psyvfQi7oykpycrLi4OMXGxnrtLywsVE1Njdf+fv36qVevXiooKJAkFRQUaMCAAWYQkSSn0ym3260DBw6YNefO7XQ6zTmqq6tVWFjoVePr66vY2FizpjG9nKuq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FKSBAwfqr3/9azN8UsDlISAgQKGhoerdu7emTp2q2NhYvfbaazp58qTGjRunTp06qV27drr99tt1+PBh87jPPvtMd955pzp16qT27dvrBz/4gd544w1J3j+mYT22ToQRWMrPz0+//e1v9Yc//EGff/75eeOffPKJRo4cqfj4eO3du1erV6/Wu+++q5SUFLNm3LhxKikp0aZNm/R///d/euGFF1RWVuY1j6+vr5YsWaIDBw5oxYoV2rhxo2bNmiXpm0vEixYtks1m09GjR3X06FHNnDnzvF4SEhL0+uuvmyFGkjZs2KCvv/5aP/vZzyR985ufX375ZWVmZurAgQOaMWOGfvGLX2jz5s3N8nkBl5ugoCBVV1frgQce0K5du/Taa6+poKBAhmHopz/9qWpqaiRJycnJqqqq0pYtW7Rv3z797ne/U4cOHc6bj/XYShmARRITE4277rrLMAzDGDp0qDFhwgTDMAzj1VdfNer+aiYlJRmTJ0/2Ou6dd94xfH19jdOnTxsffvihIcnYuXOnOX748GFDkvHss8/+23OvXbvW6NKli/n1Sy+9ZNjt9vPqevfubc5TU1NjdO3a1Xj55ZfN8fvuu88YPXq0YRiGcebMGaNdu3bGtm3bvOZISkoy7rvvvm//MIArQP016/F4jLy8PCMgIMAYNWqUIcnYunWrWXv8+HEjKCjIWLNmjWEYhjFgwABj/vz5F5z37bffNiQZJ0+eNAyD9dgatfjXwePK8Lvf/U4/+clPzvsX0Pvvv6+9e/dq5cqV5j7DMOTxeFRUVKSPPvpIbdq00eDBg83xPn36qFOnTl7zvPXWW8rIyNDBgwfldrt19uxZnTlzRl9//XWjfwbdpk0b/fznP9fKlSs1duxYVVZW6u9//7teeeUVSdLHH3+sr7/+WrfddpvXcdXV1br++uub9HkAl6vs7Gx16NBBNTU18ng8uv/++3X33XcrOztbMTExZl2XLl3Ut29fffjhh5Kkhx56SFOnTtWbb76p2NhYxcfH67rrrrvoPliPLQthBJeFW265RU6nU2lpaXrggQfM/adOndKDDz6ohx566LxjevXqpY8++qjBuT/99FPdcccdmjp1qp588kl17txZ7777rpKSklRdXd2kG+ISEhL0ox/9SGVlZcrLy1NQUJBGjhxp9ipJOTk5+t73vud1HL9rAy3F8OHDtXz5cvn7+yssLExt2rTRa6+91uBxEydOlNPpVE5Ojt58801lZGTo6aef1rRp0y66F9Zjy0EYwWVjwYIFGjRokPr27WvuGzx4sD744AP16dPngsf07dtXZ8+e1T/+8Q9FR0dL+uZfRPWfziksLJTH49HTTz8tX99vbpNas2aN1zz+/v6qra1tsMdhw4YpPDxcq1ev1vr163Xvvfeqbdu2kqSoqCgFBASouLhYP/rRj5r2hweuEO3btz9vPfbv319nz57V9u3bNWzYMEnSl19+qUOHDikqKsqsCw8P15QpUzRlyhSlpaXpj3/84wXDCOux9SGM4LIxYMAAJSQkaMmSJea+2bNna+jQoUpJSdHEiRPVvn17ffDBB8rLy9PSpUvVr18/xcbGavLkyVq+fLnatm2rRx55REFBQeZjgn369FFNTY3+8Ic/6M4779TWrVuVmZnpde6IiAidOnVK+fn5GjhwoNq1a/dvr5jcf//9yszM1EcffaS3337b3N+xY0fNnDlTM2bMkMfj0U033aSKigpt3bpVNptNiYmJl+BTA6x39dVX66677tKkSZP0/PPPq2PHjpozZ46+973v6a677pIkTZ8+XbfffruuueYanTx5Um+//bb69+9/wflYj62Q1TetoPWqfzNcnaKiIsPf39+o/1dzx44dxm233WZ06NDBaN++vXHdddcZTz75pDleUlJi3H777UZAQIDRu3dvY9WqVUb37t2NzMxMs+aZZ54xevToYQQFBRlOp9N4+eWXvW6YMwzDmDJlitGlSxdDkjFv3jzDMLxvmKvzwQcfGJKM3r17Gx6Px2vM4/EYixYtMvr27Wu0bdvW6Natm+F0Oo3Nmzd/tw8LuAxcaM3WOXHihDF27FjDbreb6+yjjz4yx1NSUoyrrrrKCAgIMLp162aMHTvWOH78uGEY59/Aahisx9bGxzAMw8IsBDS7zz//XOHh4Xrrrbd06623Wt0OAKABhBFc8TZu3KhTp05pwIABOnr0qGbNmqUvvvhCH330kfnzYwDA5Yt7RnDFq6mp0WOPPaZ//vOf6tixo4YNG6aVK1cSRADgCsGVEQAAYCleBw8AACxFGAEAAJYijAAAAEsRRgAAgKUIIwCuKJs2bZKPj4/Ky8utbgVAMyGMALgox44d09SpU9WrVy8FBAQoNDRUTqdTW7dubbZz/PjHP9b06dO99g0bNkxHjx6V3W5vtvNcrAceeECjRo2yug3gisd7RgBclPj4eFVXV2vFihX6/ve/r9LSUuXn5+vLL7+8pOf19/dXaGjoJT0HgP8wK99FD+DKdPLkSUOSsWnTpm+tSUpKMrp27Wp07NjRGD58uLFnzx5zfN68ecbAgQONl19+2ejdu7dhs9mM0aNHG2632zCMb34PiiSvraio6LzfY/LSSy8ZdrvdeP31141rrrnGCAoKMuLj443KykojKyvL6N27txEcHGxMmzbNOHv2rHn+M2fOGI888ogRFhZmtGvXzrjxxhuNt99+2xyvmzc3N9fo16+f0b59e8PpdBolJSVm/+f2V/94AI3Hj2kANFmHDh3UoUMHrVu3TlVVVResuffee1VWVqb169ersLBQgwcP1q233qoTJ06YNZ988onWrVun7OxsZWdna/PmzVqwYIEkafHixXI4HJo0aZKOHj2qo0ePKjw8/ILn+vrrr7VkyRK98sorys3N1aZNm/Szn/1Mb7zxht544w396U9/0vPPP6+//vWv5jEpKSkqKCjQK6+8or179+ree+/VyJEjdfjwYa95f//73+tPf/qTtmzZouLiYs2cOVOSNHPmTP385z/XyJEjzf6GDRv2nT9boFWyOg0BuDL99a9/NTp16mQEBgYaw4YNM9LS0oz333/fMAzDeOeddwybzWacOXPG65irrrrKeP755w3D+ObKQrt27cwrIYZhGI8++qgRExNjfv2jH/3IePjhh73muNCVEUnGxx9/bNY8+OCDRrt27YyvvvrK3Od0Oo0HH3zQMAzD+Oyzzww/Pz/jiy++8Jr71ltvNdLS0v7tvMuWLTNCQkLMr7/tt9gCaDzuGQFwUeLj4xUXF6d33nlH7733ntavX6+FCxfqxRdfVGVlpU6dOqUuXbp4HXP69Gl98skn5tcRERHq2LGj+XWPHj1UVlbW5F7atWunq666yvw6JCREERER6tChg9e+urn37dun2tpaXXPNNV7zVFVVefV87rwX2x+Ab0cYAXDRAgMDddttt+m2227Tr3/9a02cOFHz5s3TL3/5S/Xo0UObNm0675jg4GDzv8/9ZYY+Pj7yeDxN7uNC83zb3KdOnZKfn58KCwvl5+fnVVc/wFxoDoNf5wU0O8IIgGYTFRWldevWafDgwXK5XGrTpo0iIiIuej5/f3/V1tY2X4P/3/XXX6/a2lqVlZXp5ptvvuh5LlV/QGvDDawAmuzLL7/UT37yE/35z3/W3r17VVRUpLVr12rhwoW66667FBsbK4fDoVGjRunNN9/Up59+qm3btulXv/qVdu3a1ejzREREaPv27fr00091/Pjxi7pqciHXXHONEhISNG7cOP3tb39TUVGRduzYoYyMDOXk5DSpv7179+rQoUM6fvy4ampqmqU/oLUhjABosg4dOigmJkbPPvusbrnlFl177bX69a9/rUmTJmnp0qXy8fHRG2+8oVtuuUXjx4/XNddcozFjxuizzz5TSEhIo88zc+ZM+fn5KSoqSt26dVNxcXGz/RleeukljRs3To888oj69u2rUaNGaefOnerVq1ej55g0aZL69u2rIUOGqFu3bs36wjegNfEx+AEoAACwEFdGAACApQgjAADAUoQRAABgKcIIAACwFGEEAABYijACAAAsRRgBAACWIowAAABLEUYAAIClCCMAAMBShBEAAGApwggAALDU/wOo97ayD2CTygAAAABJRU5ErkJggg==",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "# Plot the distribution\n",
- "_, ax = plt.subplots(figsize=(6, 4))\n",
- "data[\"sentiment\"].value_counts().plot(kind=\"bar\", ax=ax)\n",
- "ax.set_xticklabels([\"Negative\", \"Positive\"], rotation=0)\n",
- "ax.set_xlabel(\"Sentiment\")\n",
- "ax.grid(False)\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "metadata": {},
- "outputs": [],
- "source": [
- "@cache\n",
- "def extract_words(text: str) -> list[str]:\n",
- " return re.findall(r\"(\\b[^\\s]+\\b)\", text.lower())"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 8,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " word | \n",
- " count | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " | 0 | \n",
- " i | \n",
- " 750749 | \n",
- "
\n",
- " \n",
- " | 1 | \n",
- " to | \n",
- " 564469 | \n",
- "
\n",
- " \n",
- " | 2 | \n",
- " the | \n",
- " 520036 | \n",
- "
\n",
- " \n",
- " | 3 | \n",
- " a | \n",
- " 377506 | \n",
- "
\n",
- " \n",
- " | 4 | \n",
- " my | \n",
- " 314024 | \n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " word count\n",
- "0 i 750749\n",
- "1 to 564469\n",
- "2 the 520036\n",
- "3 a 377506\n",
- "4 my 314024"
- ]
- },
- "execution_count": 8,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Extract words and count them\n",
- "words = data[\"text\"].apply(extract_words).explode()\n",
- "word_counts = words.value_counts().reset_index()\n",
- "word_counts.columns = [\"word\", \"count\"]\n",
- "word_counts.head()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 9,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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WNBxPMYY07lzZ+Pt7W1KlSplunbtambNmmWef/55I8nMnDnznj/n7777zkgyO3fudLQl9UfLli0dbV9//bWRZHbt2mWMMebq1asmJCTEeHp6moEDB5rp06ebmjVrGknm3Xffdaz3xx9/GEmmZMmSplChQmbixIlm6tSp5ujRo2bHjh3Gx8fH5M+f30yYMMGMGzfO5MiRw5QpU8b8/c/K/cYKACBtItcg10gPuUaRIkVMixYtbmvftWuXCQwMNCVLljRvvfWWmTFjhqlVq5ax2WxO4yDpuKdNm2aMMSYhIcFUr17d5MiRw5w7d86x3OjRo40kU61aNTNp0iQzbdo00759e/PKK684lqldu7apXbu243nSz/ePP/5wii1p7P3yyy+Otrlz5zq2P336dDNgwACTOXNmU6hQIadtJvX3vHnzHG0POj4SEhJMWFiYcXd3N3379jUzZsww9evXN6Ghobdt805effVVY7PZTI8ePcyHH35opkyZYtq1a2cmTpxojDHm119/NfXr1zeSHO/nzz77zBjz4L83jLn5vipdurTJli2bGTt2rHnrrbdMgQIFjI+Pj2McJyQkmMyZM5vBgwc71ps6dapxc3Mzbm5uJjo62rFcQECAGTJkiGO5UaNGGUmmXr165r333jN9+/Y17u7uplKlSiYuLs7p55kzZ04THBxs+vXrZ+bMmWMWL15sEhMTTa1atYybm5t56aWXzHvvvWfq1KnjGNd/78dq1aqZwMBAM2LECDN37lzz5ptvmqeeesqsWrXK6ZhPnDhhJJn33nvvnj8DPF4U1oB05u/J7owZM4y/v7+5evWqMcaYVq1aORKzfya7ixcvNpLM+PHjnbbXsmVLY7PZzMGDB40xN//wSDJnz569awwbN258oD+ySTp16mTc3NzMxo0bb3stMTHRGGPMgAEDjCSzZs0ax2uXLl0yTzzxhClYsKBJSEgwxtxKOEqXLu30B65du3bGZrOZhg0bOm0/LCzMFChQwKlNkrHb7U7JzJw5c4wkkzNnThMTE+NoHz58uFPiExcXZ7Jnz25Kly5trl275lju+++/N5LM66+/7mjr3LmzkWTGjh3rtP9y5cqZChUq3KvLTFRUlFPSc/HiRePm5mZatWplcuTI4Viuf//+JigoyNGP7777rpFkPv/8c8cycXFxJiwszGTKlMlxbEnJV0BAgImK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27fvtvY7xedKSXHcKdZ9+/Yla5xJf+xXrlypjRs3Op4nfdu2Zs0a+fn5OZ0OX6BAAR04cOC2b3IftB+Dg4Pl4+Nzx1P573TM9xsrAIC0j1wjZZFrOLOSa3h4eKhw4cL6448/nNqTzvLy9PRUvXr17vj4+5lTK1as0Ny5c/Xyyy8rODhYnTt3drrkt3DhwkpMTLztMuL7SbpE9Z+zRf7zrKikvvxnX8XHx992bI+iQIECOn36tK5everUfvDgwQfeRlBQkLp06aIvvvhCx48fV5kyZTR69GjH63d7Tz/M7w3p9r6QpP3798vX19dxZp6Xl5dj9tS/F9Bq1qyp2NhYLViwQGfOnFGtWrWc4pBuH4NxcXH6448/Huh9l9SPly9fdmq/07iWbo6fwYMH68cff9SuXbsUFxenKVOmOC1z8uRJxcXFOc7gg2tQWAPSuUyZMmnWrFkaPXq0mjZtetflGjVqpISEBM2YMcOpferUqbLZbGrYsKGkm/ee+KeyZctKkmMqeT8/P0m3JwN34ubmpubNm+s///mPNm3adNvrSd/ONmrUSL/99pvWr1/veO3KlSv64IMPVLBgwcd2iv3DqlixorJnz67Zs2c7+kOSli9frj179qhx48bJtq8nnnhCefLk0dSpUxUfH6/q1atLupkUHDp0SN98842qVq0qDw8PxzqNGjXSn3/+qS+//NLRduPGDb333nvKlCmTateufc99uru7q0GDBlq8eLGOHTvmaN+zZ4/jG9skDzJWAABpH7lGyiLXuOVRco2wsLDbxkP27NkVHh6uOXPm6PTp07etk3QpoXRz7HXv3l2VK1fWm2++qblz52rLli168803Hcs0b95cbm5uGjt27G2FxnudgVi4cGFJctzfTrp5ttoHH3zgtFzFihUVHBys2bNnKy4uztE+f/78B3pvPKgGDRooPj5eH374oaMtMTFR77///gOtf/78eafnmTJlUpEiRZx+Rnd7Tz/o740k69ev15YtWxzPjx8/riVLlujpp592OjuvZs2a2rBhg3755RdHYS1btmwKCQnRW2+95VgmSb169eTl5aXp06c7/ew++ugjRUdHP9D7rlGjRrpx44ZmzZrlaEtISNB7773ntNzVq1d1/fp1p7bChQvL39//tnG9efNmSVK1atXuu388Ph73XwRAWte5c+f7LtO0aVM99dRTeu21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7ZqJiYkxxty6rGfSpEnG3d3dfPvtt8YY47g0wxhjGjZsaHr27JnygbpARh4XeLzI8x6Pf16aePLkSZMnTx7TokULx+U9SctcuHDBuLu7m2+++SbF40xt6Dfrbty4YYy59XcyKirKVK9e3dSrV8/s3LnTadnLly+bTJkymVmzZqV4nKkN/fZ4ZOTPv48qI/Rdhjlj7e+eeuopff3115o7d6569eqlL7/8Unv27NG0adMUFRWlfPnyuTrEVOXs2bPasWOHdu3a5bis7aOPPpKXl5eaNWummJgYeXh4OJavU6eOPD090+Upxf+cxenrr79WXFycxowZo4YNG6pBgwZatWqVPD09Hd+ee3p6KnPmzK4N/DG4cOGCTpw4oRMnTji+XZgzZ46ioqLUqFEjSTe/gU36ViIsLMzx//SGcXEL4+KWf87ANWnSJF29elVDhgxR79691bZtW33++eeOMxakm9/ipccb9zMukJLI85Lfvn37NGrUKEVERGju3LnatWuXcufOrcWLF+vHH39Uv379dPr0acffuBs3bqhMmTIKCgpyceSuRb9Zt2fPHvXr10/NmzfXq6++qg0bNig4OFiff/65du7cqQEDBui3335zLO/h4aGyZcsqW7ZsLoza9ei35MHnX+sybN+5urLnSps3bza1a9c2BQoUMIULFzbFihUzW7ZscXVYqcqOHTvME088YUqVKmXc3d1N48aNzdy5c40xxuzatcsUKVLElC1b1mzbts1xM+5evXqZunXrprub1u7fv98EBgaaF154wbzxxhumWrVqply5cqZnz57m+vXr5uzZs6ZDhw7GZrOZ1157zbzzzjtm0KBBJjAw0Ozfv9/V4SerHTt2mBIlSphSpUoZLy8v061bN7Ns2TJjjDHff/+9yZUrl6lbt66Jjo52fCPRpUsX89xzzzmdtZUeMC5uYVzccvDgQZMlSxbTo0cP88EHH5h27dqZcuXKmXr16jluEvzyyy8bNzc307VrVzN06FDTt29f4+/vb/bs2ePi6JMX4wKuQp6XPH7//XcTGBhonn/+eVOtWjVTpUoVkzdvXvPDDz8YY4z55ZdfjL+/v6lfv775+OOPzaZNm8wrr7xicuTIYY4ePeri6F2HfrNuz549JiAgwHTu3Nk8//zzpn79+sZut5uPP/7YGGPM4cOHTaFChUzNmjXNqFGjzMqVK83AgQNNUFCQOXz4sIujdx36LXnw+de6jNx3GbqwZowx0dHR5o8//jA7duxwulwAxpw5c8YUKFDADBw40Bw6dMgsW7bMdOnSxeTNm9dMmDDBGGPMkSNHTNWqVU3+/PlNaGioadiwofH39zfbtm1zcfTJ726zOJUvX9688MILJjY21hhjzMyZM02VKlVM+fLlTd26dc3WrVtdFPHjcfLkSZM7d24zcOBAs3HjRvP555+bunXrmvLly5tPP/3UGHMzWSxatKjJnz+/adCggWnevLnx8/MzO3bscHH0yY9xcRPjwtndZuAqX768CQsLcxTXvv76a9O6dWtTvXp106JFC7N9+3ZXhp3sGBdwNfK8R3Pjxg3zwgsvmA4dOjjatm7darp162bc3d3Nf/7zH2OMMfv27TPPPPOMKVasmClUqJApVapUhi5i0m+P5qWXXjLNmzd3PD9z5owZMWKEcXNzM9OmTTPGGHPs2DHz4osvmtDQUFOsWDFTsWLFDN939Nuj4/OvdRm97zJ8YQ13t2nTJlO6dGlz/PhxR9vRo0fNuHHjTFBQkJkyZYqj/eOPPzbjxo0zb775ptm3b58rwn3s+vTpYypWrOjUdv36dTNz5kxTqVIl8/rrrzvOtrhw4YKJj49Pl9NXr1ixwoSGhpro6GhH29atW02vXr1MSEiIWbRokTHm5n0dxo4da/r3728GDx6cbqZS/ifGxU2MC2cjR440+fPnd2q7ceOGWbZsmalUqZLp0KGD455iSd/QpfVv6u6EcQGkbXFxcaZ27dpm2LBhTu1RUVHmxRdfNN7e3mb16tXGmJv3ajp58qTZu3evOX/+vCvCTTXot0fTokUL061bt9va33zzTWOz2cySJUuMMcbExsaaK1eumFOnTjnuZ5qR0W+Pjs+/1mX0vqOwhrvatm2b8fHxcZyynuTPP/80I0eONKVLl77ttfQo6YyTDz/80FSqVMls377d6dKky5cvmwEDBpjy5cs7vg3/+83I05uffvrJZM6c2WzatMmpfffu3aZLly6mTp066e6smzthXDhjXNyUdMPglStXmrJly5olS5Y4/dyvX79upk+fbsqWLWt27dpljGFcZIRxAaRlffr0MWFhYY4b7Sc5duyYef75503Dhg3NhQsXXBNcKka/WTd69GiTL18+c/LkSWPMrckd4uLiTO/evU1ISIjjNdxCvz06Pv9al9H7LkNOXoAHkyNHDlWrVk1Lly51TI+b1N6hQwfZ7Xbt2LFDkhw33zZ/uwl3Wpd0LG5uN98mjRo10qlTpzRmzBhdvHjRsYyfn59GjRql7du3O6YKTlonPcqVK5dy586tlStXKi4uztEeEhKiHj16aPfu3dq5c6fTOowLxkV6HxdJU9on3YA6NDRUfn5+eu+997R7927Hcna7XV27dtXBgwe1Zs0aSYyL9DwugPSgVq1aunbtmubNm6dLly452vPly6emTZtq+/btTu24iX6zrkGDBsqXL58mTJigqKgo2Ww2JSYmytPTUy1btlR0dLSioqJcHWaqQ789uoz++fdRZPS+S7/ZPB5aTEyMzpw5o7/++kuSlDNnTrVu3VqfffaZPv30U8esHpJUvHhxFStWTL/88osSExMdHyaT/k3rmMXplmvXrunixYuOGfpCQkLUrl07jRw5UosXL3ZaNiwsTGXKlNHKlSud2hkXjIv0PC6YgesWxgWQth05ckQffvihPvroI/3www+SpNatW6tGjRqaM2eOPv/8c0eeKEmVKlWSr69vhi8Q0W/WHTp0SG+99ZbGjx+vzz77TJJUtWpVPf/881q7dq0mT56skydPOr6EKlGihPz8/HTlyhVXhu1y9Fvy4POvdfSdM4/7L4KMYOfOnerdu7f+/PNPZc2aVSVLltTHH3+snj176vz583rttdcUFxendu3aqXDhwpJuVpgLFy6crt4QkrR7925Vq1ZN9erV0+nTp7V3716NGTNGH330kZ5++mn95z//0bPPPquoqCi1a9dOZcqU0ddff61Tp045+ia92LVrlwYPHqzjx4/riSeeUPny5TVu3DiNGDFCp0+fVufOnXX16lU1b95cmTNnlnSzaJA/f37XBv4YMC5uYVzcsnfvXlWtWlXPPfecPDw8tGXLFr377ruaNWuWunTpovXr16tevXoaMmSI6tSpoxo1amjZsmXavXu3KlSo4OrwkxXjAkjbdu7cqaeeekpFixbV2bNndebMGbVs2VLTp0/Xe++9p+7du2vmzJnav3+/+vbtq8DAQH3yySdyc3NTjhw5XB2+y9Bv1u3atUs1atRQ2bJldfXqVe3YsUMLFy7U22+/rUGDBunatWtasmSJ9u7dq3HjxsnPz08fffSR4uLi0l1u9TDot+TB51/r6Ls7SPmrT5HaHDlyxAQH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UX+biIiIiL4bx3lE1JIwsUZEVsnHxweOjo44cODAt17r3r07ioqKUFtbqx775JNPoNFo4OvrCwBwc3NDeXm5+rrBYEBJSckPiqFVq1bqe4mIiIioaXCcR0QtCRNrRGSVWrdujQULFiAxMRFbt27FF198gU8//RSbN2/GxIkT0bp1a0yePBklJSXIz8/H7NmzERMTo+67MXjwYOTm5iI3NxdnzpzBjBkzUFVV9YNi6NixIxwdHZGXl4dr166hurq6GT4pERERkW3hOI+IWhIm1ojIaqWkpGD+/PlYtGgRunfvjnHjxqGiogJt2rTB3r17UVlZiZCQEIwZMwYRERFYt26d+t6pU6di8uTJmDRpEsLCwuDt7Y1Bgwb9oL9vb2+PtWvXIjMzE507d8aIESOa+iMSERER2SSO84iopVDkfx8uJyIiIiIiIiIiou/FFWtERERERERERERmYGKNiIiIiIiIiIjIDEysERERERERERERmYGJNSIiIiIiIiIiIjMwsUZERERERERERGQGJtaIiIiIiIiIiIjMwMQaERERERERERGRGZhYIyIiIiIiIiIiMgMTa0RERERERERERGZgYo2IiIiIiIiIiMgMTKwRERERERERERGZ4f8ByXWyJL1524cAAAAASUVORK5CYII=",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "# Plot the most common words\n",
- "_, (ax1, ax2) = plt.subplots(1, 2, figsize=(15, 6))\n",
- "\n",
- "sns.barplot(data=word_counts.head(10), x=\"count\", y=\"word\", ax=ax1)\n",
- "ax1.set_title(\"Most common words\")\n",
- "ax1.grid(False)\n",
- "ax1.tick_params(axis=\"x\", rotation=45)\n",
- "\n",
- "ax2.set_title(\"Most common words (excluding stopwords)\")\n",
- "sns.barplot(\n",
- " data=word_counts[~word_counts[\"word\"].isin(stopwords_en)].head(10),\n",
- " x=\"count\",\n",
- " y=\"word\",\n",
- " ax=ax2,\n",
- ")\n",
- "ax2.grid(False)\n",
- "ax2.tick_params(axis=\"x\", rotation=45)\n",
- "ax2.set_ylabel(\"\")\n",
- "\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Split the data"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 10,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Set the features and target\n",
- "X, y = data[\"text\"].tolist(), data[\"sentiment\"].tolist()\n",
- "\n",
- "# Split the data\n",
- "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=SEED)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Model"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Create a tokenizer and transform the data"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 11,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Create the preprocessing pipeline\n",
- "preprocess_pipeline = Pipeline(\n",
- " [\n",
- " # Text preprocessing\n",
- " (\"clean\", TextCleaner()),\n",
- " (\"lemma\", TextLemmatizer()),\n",
- " # Tokenize (NOTE: Can be replaced with TfidfVectorizer, but left for clarity)\n",
- " (\"vectorize\", CountVectorizer(stop_words=stopwords_en, ngram_range=(1, 2), max_features=MAX_FEATURES)),\n",
- " (\"tfidf\", TfidfTransformer()),\n",
- " ],\n",
- " memory=joblib.Memory(CACHE_DIR, verbose=0),\n",
- " verbose=True,\n",
- ")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 12,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "[Pipeline] ............. (step 4 of 4) Processing tfidf, total= 0.0s\n"
- ]
- }
- ],
- "source": [
- "# Fit the pipeline\n",
- "with warnings.catch_warnings():\n",
- " warnings.simplefilter(\"ignore\")\n",
- " preprocess_pipeline.fit(X_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 13,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Transform the data\n",
- "X_train_preprocessed = preprocess_pipeline.transform(X_train)\n",
- "X_test_preprocessed = preprocess_pipeline.transform(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 14,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "['.cache/X_test_preprocessed.pkl']"
- ]
- },
- "execution_count": 14,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Cache the preprocessed data\n",
- "joblib.dump(X_train_preprocessed, CACHE_DIR / \"X_train_preprocessed.pkl\")\n",
- "joblib.dump(X_test_preprocessed, CACHE_DIR / \"X_test_preprocessed.pkl\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Or load cached data"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Load the transformed data\n",
- "X_train_preprocessed = joblib.load(CACHE_DIR / \"X_train_preprocessed.pkl\")\n",
- "X_test_preprocessed = joblib.load(CACHE_DIR / \"X_test_preprocessed.pkl\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Pick the classifier"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 15,
- "metadata": {},
- "outputs": [],
- "source": [
- "def evaluate_model(clf: BaseEstimator) -> None:\n",
- " # Calculate the accuracy\n",
- " accuracy = clf.score(X_test_preprocessed, y_test)\n",
- "\n",
- " # Calculate the confusion matrix\n",
- " y_pred = clf.predict(X_test_preprocessed)\n",
- " cm = confusion_matrix(y_test, y_pred)\n",
- "\n",
- " # Plot the confusion matrix\n",
- " categories = [\"Negative\", \"Positive\"]\n",
- " group_names = [\"True Neg\", \"False Pos\", \"False Neg\", \"True Pos\"]\n",
- " group_percentages = [f\"{value:.2%}\" for value in cm.flatten() / cm.sum()]\n",
- "\n",
- " labels = [f\"{v1}\\n{v2}\" for v1, v2 in zip(group_names, group_percentages)]\n",
- " labels = np.asarray(labels).reshape(2, 2)\n",
- "\n",
- " _, ax = plt.subplots(figsize=(8, 6))\n",
- " ax.grid(False)\n",
- " ax.set_title(f\"Accuracy: {accuracy:.2%}\")\n",
- " sns.heatmap(\n",
- " cm,\n",
- " xticklabels=categories,\n",
- " yticklabels=categories,\n",
- " annot=labels,\n",
- " square=True,\n",
- " cbar=False,\n",
- " cmap=\"viridis\",\n",
- " linewidths=0.5,\n",
- " fmt=\"\",\n",
- " ax=ax,\n",
- " )\n",
- " plt.show()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 16,
- "metadata": {},
- "outputs": [],
- "source": [
- "def random_search(clf: BaseEstimator, param_distributions: dict) -> tuple[BaseEstimator, dict]:\n",
- " # Create the search\n",
- " search = RandomizedSearchCV(\n",
- " clf,\n",
- " param_distributions,\n",
- " n_iter=10,\n",
- " scoring=\"accuracy\",\n",
- " n_jobs=-1,\n",
- " cv=3,\n",
- " random_state=SEED,\n",
- " verbose=1,\n",
- " )\n",
- "\n",
- " # Fit the search\n",
- " search.fit(X_train_preprocessed, y_train)\n",
- "\n",
- " # Print the best parameters\n",
- " print(f\"Best parameters: {search.best_params_}\")\n",
- "\n",
- " return search.best_estimator_, search.best_params_"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 19,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Fitting 3 folds for each of 10 candidates, totalling 30 fits\n",
- "Best parameters: {'solver': 'liblinear', 'penalty': 'l2', 'C': 1438.44988828766}\n"
- ]
- },
- {
- "data": {
- "image/png": "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",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "# Logistic Regression\n",
- "lr_clf = LogisticRegression(max_iter=1000, random_state=SEED)\n",
- "\n",
- "# Find optimal hyperparameters\n",
- "best_lr_clf, lr_params = random_search(\n",
- " lr_clf,\n",
- " {\n",
- " \"C\": np.logspace(-4, 4, 20),\n",
- " \"solver\": [\"liblinear\", \"saga\"], # lbfgs takes too long\n",
- " \"penalty\": [\"l1\", \"l2\"],\n",
- " },\n",
- ")\n",
- "\n",
- "# Evaluate the model\n",
- "evaluate_model(best_lr_clf)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 24,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Fitting 3 folds for each of 10 candidates, totalling 30 fits\n"
- ]
- }
- ],
- "source": [
- "# SVM\n",
- "svm_clf = SVC(random_state=SEED)\n",
- "\n",
- "# Find optimal hyperparameters\n",
- "best_svm_clf, svm_params = random_search(\n",
- " svm_clf,\n",
- " {\n",
- " \"C\": np.logspace(-4, 4, 20),\n",
- " \"kernel\": [\"linear\", \"poly\", \"rbf\"],\n",
- " \"degree\": [2, 3, 4],\n",
- " },\n",
- ")\n",
- "\n",
- "# Evaluate the model\n",
- "evaluate_model(best_svm_clf)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Export the final model"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 20,
- "metadata": {},
- "outputs": [],
- "source": [
- "best_clf = best_lr_clf # TODO: Pick the best classifier\n",
- "best_params = lr_params # TODO: Pick the best parameters"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 21,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Merge the tokenizer and the best classifier\n",
- "model = Pipeline(\n",
- " [\n",
- " (\"preprocess\", preprocess_pipeline),\n",
- " (\"clf\", best_clf),\n",
- " ],\n",
- ")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 22,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Export the model and the parameters\n",
- "joblib.dump(model, MODELS_DIR / \"best_model.pkl\")\n",
- "with Path.open(MODELS_DIR / \"best_params.json\", \"w\") as f:\n",
- " json.dump(best_params, f, indent=2)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 23,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Import and test the model\n",
- "model = joblib.load(MODELS_DIR / \"best_model.pkl\")\n",
- "assert model.predict([\"I love this!\"])[0] == 1 # noqa: S101\n",
- "assert model.predict([\"I hate this!\"])[0] == 0 # noqa: S101"
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": ".venv",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.12.3"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
diff --git a/poetry.lock b/poetry.lock
index d4902412d1cca4d3d8a99ea99b74ebdb20ce3442..e82570158b82c455d104c2142cf91a1ea3335357 100644
Binary files a/poetry.lock and b/poetry.lock differ
diff --git a/pyproject.toml b/pyproject.toml
index a4555ec8464b6eae2fdd2e75f178242cb9e81367..e2036961831da21e910afc90bf37ffa5c985db78 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -3,15 +3,17 @@ name = "sentiment-analysis"
package-mode = false
[tool.poetry.dependencies]
-python = "^3.12"
-click = "^8.1.7"
+python = "^3.11"
scikit-learn = "^1.4.2"
-gradio = "^4.31.0"
colorama = "^0.4.6"
-nltk = "^3.8.1"
pandas = "^2.2.2"
numpy = "^1.26.4"
seaborn = "^0.13.2"
+click = "^8.1.7"
+tensorflow = { extras = ["and-cuda"], version = "^2.16.1" }
+spacy = { extras = ["cuda12x"], version = "^3.7.4" }
+gradio = "^4.26.0"
+wordcloud = "^1.9.3"
[tool.poetry.group.dev.dependencies]
ruff = "^0.4.1"
diff --git a/requirements-dev.txt b/requirements-dev.txt
index 3cf5adf4b5328bf509e3127912992ad80ed601cc..ee26cc13864f41049b107ef853b4b160d02a0cdb 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -1,10 +1,10 @@
-appnope==0.1.4 ; python_version >= "3.12" and python_version < "4.0" and platform_system == "Darwin" \
+appnope==0.1.4 ; python_version >= "3.11" and python_version < "4.0" and platform_system == "Darwin" \
--hash=sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee \
--hash=sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c
-asttokens==2.4.1 ; python_version >= "3.12" and python_version < "4.0" \
+asttokens==2.4.1 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24 \
--hash=sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0
-cffi==1.16.0 ; python_version >= "3.12" and python_version < "4.0" and implementation_name == "pypy" \
+cffi==1.16.0 ; python_version >= "3.11" and python_version < "4.0" and implementation_name == "pypy" \
--hash=sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc \
--hash=sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a \
--hash=sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417 \
@@ -57,16 +57,16 @@ cffi==1.16.0 ; python_version >= "3.12" and python_version < "4.0" and implement
--hash=sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627 \
--hash=sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956 \
--hash=sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357
-cfgv==3.4.0 ; python_version >= "3.12" and python_version < "4.0" \
+cfgv==3.4.0 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9 \
--hash=sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560
-colorama==0.4.6 ; python_version >= "3.12" and python_version < "4.0" and sys_platform == "win32" \
+colorama==0.4.6 ; python_version >= "3.11" and python_version < "4.0" and sys_platform == "win32" \
--hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \
--hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6
-comm==0.2.2 ; python_version >= "3.12" and python_version < "4.0" \
+comm==0.2.2 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e \
--hash=sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3
-contourpy==1.2.1 ; python_version >= "3.12" and python_version < "4.0" \
+contourpy==1.2.1 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:00e5388f71c1a0610e6fe56b5c44ab7ba14165cdd6d695429c5cd94021e390b2 \
--hash=sha256:10a37ae557aabf2509c79715cd20b62e4c7c28b8cd62dd7d99e5ed3ce28c3fd9 \
--hash=sha256:11959f0ce4a6f7b76ec578576a0b61a28bdc0696194b6347ba3f1c53827178b9 \
@@ -111,10 +111,10 @@ contourpy==1.2.1 ; python_version >= "3.12" and python_version < "4.0" \
--hash=sha256:ef5adb9a3b1d0c645ff694f9bca7702ec2c70f4d734f9922ea34de02294fdf72 \
--hash=sha256:f32c38afb74bd98ce26de7cc74a67b40afb7b05aae7b42924ea990d51e4dac02 \
--hash=sha256:fe0ccca550bb8e5abc22f530ec0466136379c01321fd94f30a22231e8a48d985
-cycler==0.12.1 ; python_version >= "3.12" and python_version < "4.0" \
+cycler==0.12.1 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30 \
--hash=sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c
-debugpy==1.8.1 ; python_version >= "3.12" and python_version < "4.0" \
+debugpy==1.8.1 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:016a9fcfc2c6b57f939673c874310d8581d51a0fe0858e7fac4e240c5eb743cb \
--hash=sha256:0de56aba8249c28a300bdb0672a9b94785074eb82eb672db66c8144fff673146 \
--hash=sha256:1a9fe0829c2b854757b4fd0a338d93bc17249a3bf69ecf765c61d4c522bb92a8 \
@@ -137,92 +137,92 @@ debugpy==1.8.1 ; python_version >= "3.12" and python_version < "4.0" \
--hash=sha256:efd3fdd3f67a7e576dd869c184c5dd71d9aaa36ded271939da352880c012e703 \
--hash=sha256:f696d6be15be87aef621917585f9bb94b1dc9e8aced570db1b8a6fc14e8f9b42 \
--hash=sha256:fd97ed11a4c7f6d042d320ce03d83b20c3fb40da892f994bc041bbc415d7a099
-decorator==5.1.1 ; python_version >= "3.12" and python_version < "4.0" \
+decorator==5.1.1 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330 \
--hash=sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186
-distlib==0.3.8 ; python_version >= "3.12" and python_version < "4.0" \
+distlib==0.3.8 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784 \
--hash=sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64
-executing==2.0.1 ; python_version >= "3.12" and python_version < "4.0" \
+executing==2.0.1 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:35afe2ce3affba8ee97f2d69927fa823b08b472b7b994e36a52a964b93d16147 \
--hash=sha256:eac49ca94516ccc753f9fb5ce82603156e590b27525a8bc32cce8ae302eb61bc
-filelock==3.14.0 ; python_version >= "3.12" and python_version < "4.0" \
+filelock==3.14.0 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:43339835842f110ca7ae60f1e1c160714c5a6afd15a2873419ab185334975c0f \
--hash=sha256:6ea72da3be9b8c82afd3edcf99f2fffbb5076335a5ae4d03248bb5b6c3eae78a
-fonttools==4.51.0 ; python_version >= "3.12" and python_version < "4.0" \
- --hash=sha256:0118ef998a0699a96c7b28457f15546815015a2710a1b23a7bf6c1be60c01636 \
- --hash=sha256:0d145976194a5242fdd22df18a1b451481a88071feadf251221af110ca8f00ce \
- --hash=sha256:0e19bd9e9964a09cd2433a4b100ca7f34e34731e0758e13ba9a1ed6e5468cc0f \
- --hash=sha256:0f08c901d3866a8905363619e3741c33f0a83a680d92a9f0e575985c2634fcc1 \
- --hash=sha256:1250e818b5f8a679ad79660855528120a8f0288f8f30ec88b83db51515411fcc \
- --hash=sha256:15c94eeef6b095831067f72c825eb0e2d48bb4cea0647c1b05c981ecba2bf39f \
- --hash=sha256:1621ee57da887c17312acc4b0e7ac30d3a4fb0fec6174b2e3754a74c26bbed1e \
- --hash=sha256:180194c7fe60c989bb627d7ed5011f2bef1c4d36ecf3ec64daec8302f1ae0716 \
- --hash=sha256:278e50f6b003c6aed19bae2242b364e575bcb16304b53f2b64f6551b9c000e15 \
- --hash=sha256:32b17504696f605e9e960647c5f64b35704782a502cc26a37b800b4d69ff3c77 \
- --hash=sha256:3bee3f3bd9fa1d5ee616ccfd13b27ca605c2b4270e45715bd2883e9504735034 \
- --hash=sha256:4060acc2bfa2d8e98117828a238889f13b6f69d59f4f2d5857eece5277b829ba \
- --hash=sha256:54dcf21a2f2d06ded676e3c3f9f74b2bafded3a8ff12f0983160b13e9f2fb4a7 \
- --hash=sha256:56fc244f2585d6c00b9bcc59e6593e646cf095a96fe68d62cd4da53dd1287b55 \
- --hash=sha256:599bdb75e220241cedc6faebfafedd7670335d2e29620d207dd0378a4e9ccc5a \
- --hash=sha256:5f6bc991d1610f5c3bbe997b0233cbc234b8e82fa99fc0b2932dc1ca5e5afec0 \
- --hash=sha256:60a3409c9112aec02d5fb546f557bca6efa773dcb32ac147c6baf5f742e6258b \
- --hash=sha256:68b3fb7775a923be73e739f92f7e8a72725fd333eab24834041365d2278c3671 \
- --hash=sha256:76f1777d8b3386479ffb4a282e74318e730014d86ce60f016908d9801af9ca2a \
- --hash=sha256:806e7912c32a657fa39d2d6eb1d3012d35f841387c8fc6cf349ed70b7c340039 \
- --hash=sha256:84d7751f4468dd8cdd03ddada18b8b0857a5beec80bce9f435742abc9a851a74 \
- --hash=sha256:865a58b6e60b0938874af0968cd0553bcd88e0b2cb6e588727117bd099eef836 \
- --hash=sha256:8ac27f436e8af7779f0bb4d5425aa3535270494d3bc5459ed27de3f03151e4c2 \
- --hash=sha256:8b4850fa2ef2cfbc1d1f689bc159ef0f45d8d83298c1425838095bf53ef46308 \
- --hash=sha256:8b5ad456813d93b9c4b7ee55302208db2b45324315129d85275c01f5cb7e61a2 \
- --hash=sha256:8e2f1a4499e3b5ee82c19b5ee57f0294673125c65b0a1ff3764ea1f9db2f9ef5 \
- --hash=sha256:9696fe9f3f0c32e9a321d5268208a7cc9205a52f99b89479d1b035ed54c923f1 \
- --hash=sha256:96a48e137c36be55e68845fc4284533bda2980f8d6f835e26bca79d7e2006438 \
- --hash=sha256:a8feca65bab31479d795b0d16c9a9852902e3a3c0630678efb0b2b7941ea9c74 \
- --hash=sha256:aefa011207ed36cd280babfaa8510b8176f1a77261833e895a9d96e57e44802f \
- --hash=sha256:b2b92381f37b39ba2fc98c3a45a9d6383bfc9916a87d66ccb6553f7bdd129097 \
- --hash=sha256:b3c61423f22165541b9403ee39874dcae84cd57a9078b82e1dce8cb06b07fa2e \
- --hash=sha256:b5b48a1121117047d82695d276c2af2ee3a24ffe0f502ed581acc2673ecf1037 \
- --hash=sha256:c18b49adc721a7d0b8dfe7c3130c89b8704baf599fb396396d07d4aa69b824a1 \
- --hash=sha256:c5b8cab0c137ca229433570151b5c1fc6af212680b58b15abd797dcdd9dd5051 \
- --hash=sha256:c7e91abdfae1b5c9e3a543f48ce96013f9a08c6c9668f1e6be0beabf0a569c1b \
- --hash=sha256:cadf4e12a608ef1d13e039864f484c8a968840afa0258b0b843a0556497ea9ed \
- --hash=sha256:dc0673361331566d7a663d7ce0f6fdcbfbdc1f59c6e3ed1165ad7202ca183c68 \
- --hash=sha256:de7c29bdbdd35811f14493ffd2534b88f0ce1b9065316433b22d63ca1cd21f14 \
- --hash=sha256:e9d9298be7a05bb4801f558522adbe2feea1b0b103d5294ebf24a92dd49b78e5 \
- --hash=sha256:ee1af4be1c5afe4c96ca23badd368d8dc75f611887fb0c0dac9f71ee5d6f110e \
- --hash=sha256:f7e89853d8bea103c8e3514b9f9dc86b5b4120afb4583b57eb10dfa5afbe0936
-identify==2.5.36 ; python_version >= "3.12" and python_version < "4.0" \
+fonttools==4.52.4 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:00d9abf4b400f98fb895566eb298f60432b4b29048e3dc02807427b09a06604e \
+ --hash=sha256:05e4291db6af66f466a203d9922e4c1d3e18ef16868f76f10b00e2c3b9814df2 \
+ --hash=sha256:15efb2ba4b8c2d012ee0bb7a850c2e4780c530cc83ec8e843b2a97f8b3a5fd4b \
+ --hash=sha256:1dc626de4b204d025d029e646bae8fdbf5acd9217158283a567f4b523fda3bae \
+ --hash=sha256:21921e5855c399d10ddfc373538b425cabcf8b3258720b51450909e108896450 \
+ --hash=sha256:309b617942041073ffa96090d320b99d75648ed16e0c67fb1aa7788e06c834de \
+ --hash=sha256:346d08ff92e577b2dc5a0c228487667d23fe2da35a8b9a8bba22c2b6ba8be21c \
+ --hash=sha256:35af630404223273f1d7acd4761f399131c62820366f53eac029337069f5826a \
+ --hash=sha256:46cc5d06ee05fd239c45d7935aaffd060ee773a88b97e901df50478247472643 \
+ --hash=sha256:4b0b9eb0f55dce9c7278ad4175f1cbaed23b799dce5ecc20e3213da241584140 \
+ --hash=sha256:4b419207e53db1599b3d385afd4bca6692c219d53732890d0814a2593104d0e2 \
+ --hash=sha256:4c3ad89204c2d7f419436f1d6fde681b070c5e20b888beb57ccf92f640628cc9 \
+ --hash=sha256:52f6001814ec5e0c961cabe89642f7e8d7e07892b565057aa526569b9ebb711c \
+ --hash=sha256:5ecb88318ff249bd2a715e7aec36774ce7ae3441128007ef72a39a60601f4a8f \
+ --hash=sha256:70d87f2099006304d33438bdaa5101953b7e22e23a93b1c7b7ed0f32ff44b423 \
+ --hash=sha256:73ba38b98c012957940a04d9eb5439b42565ac892bba8cfc32e10d88e73921fe \
+ --hash=sha256:7467161f1eed557dbcec152d5ee95540200b1935709fa73307da16bc0b7ca361 \
+ --hash=sha256:7dccf4666f716e5e0753f0fa28dad2f4431154c87747bc781c838b8a5dca990e \
+ --hash=sha256:859399b7adc8ac067be8e5c80ef4bb2faddff97e9b40896a9de75606a43d0469 \
+ --hash=sha256:8873d6edd1dae5c088dd3d61c9fd4dd80c827c486fa224d368233e7f33dc98af \
+ --hash=sha256:890e7a657574610330e42dd1e38d3b9e0a8cb0eff3da080f80995460a256d3dd \
+ --hash=sha256:89b53386214197bd5b3e3c753895bad691de84726ced3c222a59cde1dd12d57b \
+ --hash=sha256:8b186cd6b8844f6cf04a7e0a174bc3649d3deddbfc10dc59846a4381f796d348 \
+ --hash=sha256:9180775c9535389a665cae7c5282f8e07754beabf59b66aeba7f6bfeb32a3652 \
+ --hash=sha256:95e8a5975d08d0b624a14eec0f987e204ad81b480e24c5436af99170054434b8 \
+ --hash=sha256:9725687db3c1cef13c0f40b380c3c15bea0113f4d0231b204d58edd5f2a53d90 \
+ --hash=sha256:9a5d1b0475050056d2e3bc378014f2ea2230e8ae434eeac8dfb182aa8efaf642 \
+ --hash=sha256:9ed23a03b7d9f0e29ca0679eafe5152aeccb0580312a3fc36f0662e178b4791b \
+ --hash=sha256:a4daf2751a98c69d9620717826ed6c5743b662ef0ae7bb33dc6c205425e48eba \
+ --hash=sha256:a64e72d2c144630e017ac9c1c416ddf8ac43bef9a083bf81fe08c0695f0baa95 \
+ --hash=sha256:a791f002d1b717268235cfae7e4957b7fd132e92e2c5400e521bf191f1b3a9a5 \
+ --hash=sha256:b4cba644e2515d685d4ee3ca2fbb5d53930a0e9ec2cf332ed704dc341b145878 \
+ --hash=sha256:b9a22cf1adaae7b2ba2ed7d8651a4193a4f348744925b4b740e6b38a94599c5b \
+ --hash=sha256:bb7d206fa5ba6e082ba5d5e1b7107731029fc3a55c71c48de65121710d817986 \
+ --hash=sha256:cf694159528022daa71b1777cb6ec9e0ebbdd29859f3e9c845826cafaef4ca29 \
+ --hash=sha256:d0184aa88865339d96f7f452e8c5b621186ef7638744d78bf9b775d67e206819 \
+ --hash=sha256:d272c7e173c3085308345ccc7fb2ad6ce7f415d777791dd6ce4e8140e354d09c \
+ --hash=sha256:d2cc7906bc0afdd2689aaf88b910307333b1f936262d1d98f25dbf8a5eb2e829 \
+ --hash=sha256:e03dae26084bb3632b4a77b1cd0419159d2226911aff6dc4c7e3058df68648c6 \
+ --hash=sha256:e176249292eccd89f81d39f514f2b5e8c75dfc9cef8653bdc3021d06697e9eff \
+ --hash=sha256:ebb183ed8b789cece0bd6363121913fb6da4034af89a2fa5408e42a1592889a8 \
+ --hash=sha256:fb8cd6559f0ae3a8f5e146f80ab2a90ad0325a759be8d48ee82758a0b89fa0aa
+identify==2.5.36 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:37d93f380f4de590500d9dba7db359d0d3da95ffe7f9de1753faa159e71e7dfa \
--hash=sha256:e5e00f54165f9047fbebeb4a560f9acfb8af4c88232be60a488e9b68d122745d
-ipykernel==6.29.4 ; python_version >= "3.12" and python_version < "4.0" \
+ipykernel==6.29.4 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:1181e653d95c6808039c509ef8e67c4126b3b3af7781496c7cbfb5ed938a27da \
--hash=sha256:3d44070060f9475ac2092b760123fadf105d2e2493c24848b6691a7c4f42af5c
-ipympl==0.9.4 ; python_version >= "3.12" and python_version < "4.0" \
+ipympl==0.9.4 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:5b0c08c6f4f6ea655ba58239363457c10fb921557f5038c1a46db4457d6d6b0e \
--hash=sha256:cfb53c5b4fcbcee6d18f095eecfc6c6c474303d5b744e72cc66e7a2804708907
-ipython-genutils==0.2.0 ; python_version >= "3.12" and python_version < "4.0" \
+ipython-genutils==0.2.0 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8 \
--hash=sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8
-ipython==8.24.0 ; python_version >= "3.12" and python_version < "4.0" \
+ipython==8.24.0 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:010db3f8a728a578bb641fdd06c063b9fb8e96a9464c63aec6310fbcb5e80501 \
--hash=sha256:d7bf2f6c4314984e3e02393213bab8703cf163ede39672ce5918c51fe253a2a3
-ipywidgets==8.1.2 ; python_version >= "3.12" and python_version < "4.0" \
- --hash=sha256:bbe43850d79fb5e906b14801d6c01402857996864d1e5b6fa62dd2ee35559f60 \
- --hash=sha256:d0b9b41e49bae926a866e613a39b0f0097745d2b9f1f3dd406641b4a57ec42c9
-jedi==0.19.1 ; python_version >= "3.12" and python_version < "4.0" \
+ipywidgets==8.1.3 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:efafd18f7a142248f7cb0ba890a68b96abd4d6e88ddbda483c9130d12667eaf2 \
+ --hash=sha256:f5f9eeaae082b1823ce9eac2575272952f40d748893972956dc09700a6392d9c
+jedi==0.19.1 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd \
--hash=sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0
-jupyter-client==8.6.1 ; python_version >= "3.12" and python_version < "4.0" \
- --hash=sha256:3b7bd22f058434e3b9a7ea4b1500ed47de2713872288c0d511d19926f99b459f \
- --hash=sha256:e842515e2bab8e19186d89fdfea7abd15e39dd581f94e399f00e2af5a1652d3f
-jupyter-core==5.7.2 ; python_version >= "3.12" and python_version < "4.0" \
+jupyter-client==8.6.2 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:2bda14d55ee5ba58552a8c53ae43d215ad9868853489213f37da060ced54d8df \
+ --hash=sha256:50cbc5c66fd1b8f65ecb66bc490ab73217993632809b6e505687de18e9dea39f
+jupyter-core==5.7.2 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409 \
--hash=sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9
-jupyterlab-widgets==3.0.10 ; python_version >= "3.12" and python_version < "4.0" \
- --hash=sha256:04f2ac04976727e4f9d0fa91cdc2f1ab860f965e504c29dbd6a65c882c9d04c0 \
- --hash=sha256:dd61f3ae7a5a7f80299e14585ce6cf3d6925a96c9103c978eda293197730cb64
-kiwisolver==1.4.5 ; python_version >= "3.12" and python_version < "4.0" \
+jupyterlab-widgets==3.0.11 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:78287fd86d20744ace330a61625024cf5521e1c012a352ddc0a3cdc2348becd0 \
+ --hash=sha256:dd5ac679593c969af29c9bed054c24f26842baa51352114736756bc035deee27
+kiwisolver==1.4.5 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:00bd361b903dc4bbf4eb165f24d1acbee754fce22ded24c3d56eec268658a5cf \
--hash=sha256:040c1aebeda72197ef477a906782b5ab0d387642e93bda547336b8957c61022e \
--hash=sha256:05703cf211d585109fcd72207a31bb170a0f22144d68298dc5e61b3c946518af \
@@ -327,10 +327,10 @@ kiwisolver==1.4.5 ; python_version >= "3.12" and python_version < "4.0" \
--hash=sha256:fcc700eadbbccbf6bc1bcb9dbe0786b4b1cb91ca0dcda336eef5c2beed37b797 \
--hash=sha256:fd32ea360bcbb92d28933fc05ed09bffcb1704ba3fc7942e81db0fd4f81a7892 \
--hash=sha256:fdb7adb641a0d13bdcd4ef48e062363d8a9ad4a182ac7647ec88f695e719ae9f
-matplotlib-inline==0.1.7 ; python_version >= "3.12" and python_version < "4.0" \
+matplotlib-inline==0.1.7 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90 \
--hash=sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca
-matplotlib==3.9.0 ; python_version >= "3.12" and python_version < "4.0" \
+matplotlib==3.9.0 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:063af8587fceeac13b0936c42a2b6c732c2ab1c98d38abc3337e430e1ff75e38 \
--hash=sha256:06a478f0d67636554fa78558cfbcd7b9dba85b51f5c3b5a0c9be49010cf5f321 \
--hash=sha256:0a490715b3b9984fa609116481b22178348c1a220a4499cda79132000a79b4db \
@@ -360,13 +360,13 @@ matplotlib==3.9.0 ; python_version >= "3.12" and python_version < "4.0" \
--hash=sha256:e6d29ea6c19e34b30fb7d88b7081f869a03014f66fe06d62cc77d5a6ea88ed7a \
--hash=sha256:eaf3978060a106fab40c328778b148f590e27f6fa3cd15a19d6892575bce387d \
--hash=sha256:fe428e191ea016bb278758c8ee82a8129c51d81d8c4bc0846c09e7e8e9057241
-nest-asyncio==1.6.0 ; python_version >= "3.12" and python_version < "4.0" \
+nest-asyncio==1.6.0 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe \
--hash=sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c
-nodeenv==1.8.0 ; python_version >= "3.12" and python_version < "4.0" \
- --hash=sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2 \
- --hash=sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec
-numpy==1.26.4 ; python_version >= "3.12" and python_version < "4.0" \
+nodeenv==1.9.0 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:07f144e90dae547bf0d4ee8da0ee42664a42a04e02ed68e06324348dafe4bdb1 \
+ --hash=sha256:508ecec98f9f3330b636d4448c0f1a56fc68017c68f1e7857ebc52acf0eb879a
+numpy==1.26.4 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b \
--hash=sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818 \
--hash=sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20 \
@@ -403,16 +403,16 @@ numpy==1.26.4 ; python_version >= "3.12" and python_version < "4.0" \
--hash=sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef \
--hash=sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3 \
--hash=sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f
-packaging==24.0 ; python_version >= "3.12" and python_version < "4.0" \
+packaging==24.0 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5 \
--hash=sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9
-parso==0.8.4 ; python_version >= "3.12" and python_version < "4.0" \
+parso==0.8.4 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18 \
--hash=sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d
-pexpect==4.9.0 ; python_version >= "3.12" and python_version < "4.0" and (sys_platform != "win32" and sys_platform != "emscripten") \
+pexpect==4.9.0 ; python_version >= "3.11" and python_version < "4.0" and (sys_platform != "win32" and sys_platform != "emscripten") \
--hash=sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523 \
--hash=sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f
-pillow==10.3.0 ; python_version >= "3.12" and python_version < "4.0" \
+pillow==10.3.0 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:048ad577748b9fa4a99a0548c64f2cb8d672d5bf2e643a739ac8faff1164238c \
--hash=sha256:048eeade4c33fdf7e08da40ef402e748df113fd0b4584e32c4af74fe78baaeb2 \
--hash=sha256:0ba26351b137ca4e0db0342d5d00d2e355eb29372c05afd544ebf47c0956ffeb \
@@ -482,16 +482,16 @@ pillow==10.3.0 ; python_version >= "3.12" and python_version < "4.0" \
--hash=sha256:f0d0591a0aeaefdaf9a5e545e7485f89910c977087e7de2b6c388aec32011e9f \
--hash=sha256:fdcbb4068117dfd9ce0138d068ac512843c52295ed996ae6dd1faf537b6dbc27 \
--hash=sha256:ff61bfd9253c3915e6d41c651d5f962da23eda633cf02262990094a18a55371a
-platformdirs==4.2.2 ; python_version >= "3.12" and python_version < "4.0" \
+platformdirs==4.2.2 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee \
--hash=sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3
-pre-commit==3.7.1 ; python_version >= "3.12" and python_version < "4.0" \
+pre-commit==3.7.1 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:8ca3ad567bc78a4972a3f1a477e94a79d4597e8140a6e0b651c5e33899c3654a \
--hash=sha256:fae36fd1d7ad7d6a5a1c0b0d5adb2ed1a3bda5a21bf6c3e5372073d7a11cd4c5
-prompt-toolkit==3.0.43 ; python_version >= "3.12" and python_version < "4.0" \
- --hash=sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d \
- --hash=sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6
-psutil==5.9.8 ; python_version >= "3.12" and python_version < "4.0" \
+prompt-toolkit==3.0.45 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:07c60ee4ab7b7e90824b61afa840c8f5aad2d46b3e2e10acc33d8ecc94a49089 \
+ --hash=sha256:a29b89160e494e3ea8622b09fa5897610b437884dcdcd054fdc1308883326c2a
+psutil==5.9.8 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:02615ed8c5ea222323408ceba16c60e99c3f91639b07da6373fb7e6539abc56d \
--hash=sha256:05806de88103b25903dff19bb6692bd2e714ccf9e668d050d144012055cbca73 \
--hash=sha256:26bd09967ae00920df88e0352a91cff1a78f8d69b3ecabbfe733610c0af486c8 \
@@ -508,25 +508,25 @@ psutil==5.9.8 ; python_version >= "3.12" and python_version < "4.0" \
--hash=sha256:bd1184ceb3f87651a67b2708d4c3338e9b10c5df903f2e3776b62303b26cb631 \
--hash=sha256:d06016f7f8625a1825ba3732081d77c94589dca78b7a3fc072194851e88461a4 \
--hash=sha256:d16bbddf0693323b8c6123dd804100241da461e41d6e332fb0ba6058f630f8c8
-ptyprocess==0.7.0 ; python_version >= "3.12" and python_version < "4.0" and (sys_platform != "win32" and sys_platform != "emscripten") \
+ptyprocess==0.7.0 ; python_version >= "3.11" and python_version < "4.0" and (sys_platform != "win32" and sys_platform != "emscripten") \
--hash=sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35 \
--hash=sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220
-pure-eval==0.2.2 ; python_version >= "3.12" and python_version < "4.0" \
+pure-eval==0.2.2 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350 \
--hash=sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3
-pycparser==2.22 ; python_version >= "3.12" and python_version < "4.0" and implementation_name == "pypy" \
+pycparser==2.22 ; python_version >= "3.11" and python_version < "4.0" and implementation_name == "pypy" \
--hash=sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6 \
--hash=sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc
-pygments==2.18.0 ; python_version >= "3.12" and python_version < "4.0" \
+pygments==2.18.0 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199 \
--hash=sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a
-pyparsing==3.1.2 ; python_version >= "3.12" and python_version < "4.0" \
+pyparsing==3.1.2 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:a1bac0ce561155ecc3ed78ca94d3c9378656ad4c94c1270de543f621420f94ad \
--hash=sha256:f9db75911801ed778fe61bb643079ff86601aca99fcae6345aa67292038fb742
-python-dateutil==2.9.0.post0 ; python_version >= "3.12" and python_version < "4.0" \
+python-dateutil==2.9.0.post0 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3 \
--hash=sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427
-pywin32==306 ; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_version >= "3.12" and python_version < "4.0" \
+pywin32==306 ; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d \
--hash=sha256:1c73ea9a0d2283d889001998059f5eaaba3b6238f767c9cf2833b13e6a685f65 \
--hash=sha256:37257794c1ad39ee9be652da0462dc2e394c8159dfd913a8a4e8eb6fd346da0e \
@@ -541,7 +541,7 @@ pywin32==306 ; sys_platform == "win32" and platform_python_implementation != "Py
--hash=sha256:e4c092e2589b5cf0d365849e73e02c391c1349958c5ac3e9d5ccb9a28e017b3a \
--hash=sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407 \
--hash=sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0
-pyyaml==6.0.1 ; python_version >= "3.12" and python_version < "4.0" \
+pyyaml==6.0.1 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5 \
--hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \
--hash=sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df \
@@ -593,7 +593,7 @@ pyyaml==6.0.1 ; python_version >= "3.12" and python_version < "4.0" \
--hash=sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585 \
--hash=sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d \
--hash=sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f
-pyzmq==26.0.3 ; python_version >= "3.12" and python_version < "4.0" \
+pyzmq==26.0.3 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:01fbfbeb8249a68d257f601deb50c70c929dc2dfe683b754659569e502fbd3aa \
--hash=sha256:0270b49b6847f0d106d64b5086e9ad5dc8a902413b5dbbb15d12b60f9c1747a4 \
--hash=sha256:03c0ae165e700364b266876d712acb1ac02693acd920afa67da2ebb91a0b3c09 \
@@ -682,34 +682,31 @@ pyzmq==26.0.3 ; python_version >= "3.12" and python_version < "4.0" \
--hash=sha256:f4b6cecbbf3b7380f3b61de3a7b93cb721125dc125c854c14ddc91225ba52f83 \
--hash=sha256:f6b1d1c631e5940cac5a0b22c5379c86e8df6a4ec277c7a856b714021ab6cfad \
--hash=sha256:f6c21c00478a7bea93caaaef9e7629145d4153b15a8653e8bb4609d4bc70dbfc
-ruff==0.4.4 ; python_version >= "3.12" and python_version < "4.0" \
- --hash=sha256:1aecced1269481ef2894cc495647392a34b0bf3e28ff53ed95a385b13aa45768 \
- --hash=sha256:29d44ef5bb6a08e235c8249294fa8d431adc1426bfda99ed493119e6f9ea1bf6 \
- --hash=sha256:39df0537b47d3b597293edbb95baf54ff5b49589eb7ff41926d8243caa995ea6 \
- --hash=sha256:424e5b72597482543b684c11def82669cc6b395aa8cc69acc1858b5ef3e5daae \
- --hash=sha256:4c8e2f1e8fc12d07ab521a9005d68a969e167b589cbcaee354cb61e9d9de9c15 \
- --hash=sha256:60ed88b636a463214905c002fa3eaab19795679ed55529f91e488db3fe8976ab \
- --hash=sha256:8e7e6ebc10ef16dcdc77fd5557ee60647512b400e4a60bdc4849468f076f6eef \
- --hash=sha256:958b4ea5589706a81065e2a776237de2ecc3e763342e5cc8e02a4a4d8a5e6f95 \
- --hash=sha256:9da73eb616b3241a307b837f32756dc20a0b07e2bcb694fec73699c93d04a69e \
- --hash=sha256:b1867ee9bf3acc21778dcb293db504692eda5f7a11a6e6cc40890182a9f9e595 \
- --hash=sha256:b5eb0a4bfd6400b7d07c09a7725e1a98c3b838be557fee229ac0f84d9aa49c36 \
- --hash=sha256:b90fc5e170fc71c712cc4d9ab0e24ea505c6a9e4ebf346787a67e691dfb72e85 \
- --hash=sha256:b9ddb2c494fb79fc208cd15ffe08f32b7682519e067413dbaf5f4b01a6087bcd \
- --hash=sha256:c4efe62b5bbb24178c950732ddd40712b878a9b96b1d02b0ff0b08a090cbd891 \
- --hash=sha256:c51c928a14f9f0a871082603e25a1588059b7e08a920f2f9fa7157b5bf08cfe9 \
- --hash=sha256:cb53473849f011bca6e754f2cdf47cafc9c4f4ff4570003a0dad0b9b6890e876 \
- --hash=sha256:f87ea42d5cdebdc6a69761a9d0bc83ae9b3b30d0ad78952005ba6568d6c022af
-setuptools==69.5.1 ; python_version >= "3.12" and python_version < "4.0" \
- --hash=sha256:6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987 \
- --hash=sha256:c636ac361bc47580504644275c9ad802c50415c7522212252c033bd15f301f32
-six==1.16.0 ; python_version >= "3.12" and python_version < "4.0" \
+ruff==0.4.6 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:04a80acfc862e0e1630c8b738e70dcca03f350bad9e106968a8108379e12b31f \
+ --hash=sha256:0cf5cc02d3ae52dfb0c8a946eb7a1d6ffe4d91846ffc8ce388baa8f627e3bd50 \
+ --hash=sha256:1fa8561489fadf483ffbb091ea94b9c39a00ed63efacd426aae2f197a45e67fc \
+ --hash=sha256:1ff930d6e05f444090a0139e4e13e1e2e1f02bd51bb4547734823c760c621e79 \
+ --hash=sha256:3a6a0a4f4b5f54fff7c860010ab3dd81425445e37d35701a965c0248819dde7a \
+ --hash=sha256:3f9ced5cbb7510fd7525448eeb204e0a22cabb6e99a3cb160272262817d49786 \
+ --hash=sha256:4d5b914818d8047270308fe3e85d9d7f4a31ec86c6475c9f418fbd1624d198e0 \
+ --hash=sha256:4f02284335c766678778475e7698b7ab83abaf2f9ff0554a07b6f28df3b5c259 \
+ --hash=sha256:602ebd7ad909eab6e7da65d3c091547781bb06f5f826974a53dbe563d357e53c \
+ --hash=sha256:735a16407a1a8f58e4c5b913ad6102722e80b562dd17acb88887685ff6f20cf6 \
+ --hash=sha256:9018bf59b3aa8ad4fba2b1dc0299a6e4e60a4c3bc62bbeaea222679865453062 \
+ --hash=sha256:a769ae07ac74ff1a019d6bd529426427c3e30d75bdf1e08bb3d46ac8f417326a \
+ --hash=sha256:a797a87da50603f71e6d0765282098245aca6e3b94b7c17473115167d8dfb0b7 \
+ --hash=sha256:be47700ecb004dfa3fd4dcdddf7322d4e632de3c06cd05329d69c45c0280e618 \
+ --hash=sha256:ea3424793c29906407e3cf417f28fc33f689dacbbadfb52b7e9a809dd535dcef \
+ --hash=sha256:ef995583a038cd4a7edf1422c9e19118e2511b8ba0b015861b4abd26ec5367c5 \
+ --hash=sha256:f13410aabd3b5776f9c5699f42b37a3a348d65498c4310589bc6e5c548dc8a2f
+six==1.16.0 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \
--hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254
-stack-data==0.6.3 ; python_version >= "3.12" and python_version < "4.0" \
+stack-data==0.6.3 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9 \
--hash=sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695
-tornado==6.4 ; python_version >= "3.12" and python_version < "4.0" \
+tornado==6.4 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:02ccefc7d8211e5a7f9e8bc3f9e5b0ad6262ba2fbb683a6443ecc804e5224ce0 \
--hash=sha256:10aeaa8006333433da48dec9fe417877f8bcc21f48dda8d661ae79da357b2a63 \
--hash=sha256:27787de946a9cffd63ce5814c33f734c627a87072ec7eed71f7fc4417bb16263 \
@@ -721,15 +718,18 @@ tornado==6.4 ; python_version >= "3.12" and python_version < "4.0" \
--hash=sha256:f0251554cdd50b4b44362f73ad5ba7126fc5b2c2895cc62b14a1c2d7ea32f212 \
--hash=sha256:f7894c581ecdcf91666a0912f18ce5e757213999e183ebfc2c3fdbf4d5bd764e \
--hash=sha256:fd03192e287fbd0899dd8f81c6fb9cbbc69194d2074b38f384cb6fa72b80e9c2
-traitlets==5.14.3 ; python_version >= "3.12" and python_version < "4.0" \
+traitlets==5.14.3 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7 \
--hash=sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f
-virtualenv==20.26.2 ; python_version >= "3.12" and python_version < "4.0" \
+typing-extensions==4.12.0 ; python_version >= "3.11" and python_version < "3.12" \
+ --hash=sha256:8cbcdc8606ebcb0d95453ad7dc5065e6237b6aa230a31e81d0f440c30fed5fd8 \
+ --hash=sha256:b349c66bea9016ac22978d800cfff206d5f9816951f12a7d0ec5578b0a819594
+virtualenv==20.26.2 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:82bf0f4eebbb78d36ddaee0283d43fe5736b53880b8a8cdcd37390a07ac3741c \
--hash=sha256:a624db5e94f01ad993d476b9ee5346fdf7b9de43ccaee0e0197012dc838a0e9b
-wcwidth==0.2.13 ; python_version >= "3.12" and python_version < "4.0" \
+wcwidth==0.2.13 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859 \
--hash=sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5
-widgetsnbextension==4.0.10 ; python_version >= "3.12" and python_version < "4.0" \
- --hash=sha256:64196c5ff3b9a9183a8e699a4227fb0b7002f252c814098e66c4d1cd0644688f \
- --hash=sha256:d37c3724ec32d8c48400a435ecfa7d3e259995201fbefa37163124a9fcb393cc
+widgetsnbextension==4.0.11 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:55d4d6949d100e0d08b94948a42efc3ed6dfdc0e9468b2c4b128c9a2ce3a7a36 \
+ --hash=sha256:8b22a8f1910bfd188e596fe7fc05dcbd87e810c8a4ba010bdb3da86637398474
diff --git a/requirements.txt b/requirements.txt
index 92262d9746ab6c156385d641bb70e1bfd846ecc8..dff624797007c4d18cc3cdf80af922f8c9f14dfe 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,22 +1,66 @@
-aiofiles==23.2.1 ; python_version >= "3.12" and python_version < "4.0" \
+absl-py==2.1.0 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:526a04eadab8b4ee719ce68f204172ead1027549089702d99b9059f129ff1308 \
+ --hash=sha256:7820790efbb316739cde8b4e19357243fc3608a152024288513dd968d7d959ff
+aiofiles==23.2.1 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:19297512c647d4b27a2cf7c34caa7e405c0d60b5560618a29a9fe027b18b0107 \
--hash=sha256:84ec2218d8419404abcb9f0c02df3f34c6e0a68ed41072acfb1cef5cbc29051a
-altair==5.3.0 ; python_version >= "3.12" and python_version < "4.0" \
+altair==5.3.0 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:5a268b1a0983b23d8f9129f819f956174aa7aea2719ed55a52eba9979b9f6675 \
--hash=sha256:7084a1dab4d83c5e7e5246b92dc1b4451a6c68fd057f3716ee9d315c8980e59a
-annotated-types==0.6.0 ; python_version >= "3.12" and python_version < "4.0" \
- --hash=sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43 \
- --hash=sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d
-anyio==4.3.0 ; python_version >= "3.12" and python_version < "4.0" \
- --hash=sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8 \
- --hash=sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6
-attrs==23.2.0 ; python_version >= "3.12" and python_version < "4.0" \
+annotated-types==0.7.0 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53 \
+ --hash=sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89
+anyio==4.4.0 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:5aadc6a1bbb7cdb0bede386cac5e2940f5e2ff3aa20277e991cf028e0585ce94 \
+ --hash=sha256:c1b2d8f46a8a812513012e1107cb0e68c17159a7a594208005a57dc776e1bdc7
+astunparse==1.6.3 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:5ad93a8456f0d084c3456d059fd9a92cce667963232cbf763eac3bc5b7940872 \
+ --hash=sha256:c2652417f2c8b5bb325c885ae329bdf3f86424075c4fd1a128674bc6fba4b8e8
+attrs==23.2.0 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30 \
--hash=sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1
-certifi==2024.2.2 ; python_version >= "3.12" and python_version < "4.0" \
+blis==0.7.11 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:0421d6e44cda202b113a34761f9a062b53f8c2ae8e4ec8325a76e709fca93b6e \
+ --hash=sha256:075431b13b9dd7b411894d4afbd4212acf4d0f56c5a20628f4b34902e90225f1 \
+ --hash=sha256:0dc9dcb3843045b6b8b00432409fd5ee96b8344a324e031bfec7303838c41a1a \
+ --hash=sha256:162e60d941a8151418d558a94ee5547cb1bbeed9f26b3b6f89ec9243f111a201 \
+ --hash=sha256:1b68df4d01d62f9adaef3dad6f96418787265a6878891fc4e0fabafd6d02afba \
+ --hash=sha256:2e62cd14b20e960f21547fee01f3a0b2ac201034d819842865a667c969c355d1 \
+ --hash=sha256:2fb36989ed61233cfd48915896802ee6d3d87882190000f8cfe0cf4a3819f9a8 \
+ --hash=sha256:2ff7abd784033836b284ff9f4d0d7cb0737b7684daebb01a4c9fe145ffa5a31e \
+ --hash=sha256:31273d9086cab9c56986d478e3ed6da6752fa4cdd0f7b5e8e5db30827912d90d \
+ --hash=sha256:324fdf62af9075831aa62b51481960e8465674b7723f977684e32af708bb7448 \
+ --hash=sha256:5a305dbfc96d202a20d0edd6edf74a406b7e1404f4fa4397d24c68454e60b1b4 \
+ --hash=sha256:5bb38adabbb22f69f22c74bad025a010ae3b14de711bf5c715353980869d491d \
+ --hash=sha256:5bcdaf370f03adaf4171d6405a89fa66cb3c09399d75fc02e1230a78cd2759e4 \
+ --hash=sha256:68544a1cbc3564db7ba54d2bf8988356b8c7acd025966e8e9313561b19f0fe2e \
+ --hash=sha256:686a7d0111d5ba727cd62f374748952fd6eb74701b18177f525b16209a253c01 \
+ --hash=sha256:688a8b21d2521c2124ee8dfcbaf2c385981ccc27e313e052113d5db113e27d3b \
+ --hash=sha256:6df00c24128e323174cde5d80ebe3657df39615322098ce06613845433057614 \
+ --hash=sha256:7de19264b1d49a178bf8035406d0ae77831f3bfaa3ce02942964a81a202abb03 \
+ --hash=sha256:7ea09f961871f880d5dc622dce6c370e4859559f0ead897ae9b20ddafd6b07a2 \
+ --hash=sha256:809d1da1331108935bf06e22f3cf07ef73a41a572ecd81575bdedb67defe3465 \
+ --hash=sha256:844b6377e3e7f3a2e92e7333cc644095386548ad5a027fdc150122703c009956 \
+ --hash=sha256:89b01c05a5754edc0b9a3b69be52cbee03f645b2ec69651d12216ea83b8122f0 \
+ --hash=sha256:8ea55c6a4a60fcbf6a0fdce40df6e254451ce636988323a34b9c94b583fc11e5 \
+ --hash=sha256:a73945a9d635eea528bccfdfcaa59dd35bd5f82a4a40d5ca31f08f507f3a6f81 \
+ --hash=sha256:afebdb02d2dcf9059f23ce1244585d3ce7e95c02a77fd45a500e4a55b7b23583 \
+ --hash=sha256:bfabd5272bbbe504702b8dfe30093653d278057656126716ff500d9c184b35a6 \
+ --hash=sha256:ca684f5c2f05269f17aefe7812360286e9a1cee3afb96d416485efd825dbcf19 \
+ --hash=sha256:cd5fba34c5775e4c440d80e4dea8acb40e2d3855b546e07c4e21fad8f972404c \
+ --hash=sha256:cec6d48f75f7ac328ae1b6fbb372dde8c8a57c89559172277f66e01ff08d4d42 \
+ --hash=sha256:cfee5ec52ba1e9002311d9191f7129d7b0ecdff211e88536fb24c865d102b50d \
+ --hash=sha256:d06883f83d4c8de8264154f7c4a420b4af323050ed07398c1ff201c34c25c0d2 \
+ --hash=sha256:dadf8713ea51d91444d14ad4104a5493fa7ecc401bbb5f4a203ff6448fadb113 \
+ --hash=sha256:ee493683e3043650d4413d531e79e580d28a3c7bdd184f1b9cfa565497bda1e7 \
+ --hash=sha256:f9caffcd14795bfe52add95a0dd8426d44e737b55fcb69e2b797816f4da0b1d2
+catalogue==2.0.10 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:4f56daa940913d3f09d589c191c74e5a6d51762b3a9e37dd53b7437afd6cda15 \
+ --hash=sha256:58c2de0020aa90f4a2da7dfad161bf7b3b054c86a5f09fcedc0b2b740c109a9f
+certifi==2024.2.2 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f \
--hash=sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1
-charset-normalizer==3.3.2 ; python_version >= "3.12" and python_version < "4.0" \
+charset-normalizer==3.3.2 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027 \
--hash=sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087 \
--hash=sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786 \
@@ -107,13 +151,19 @@ charset-normalizer==3.3.2 ; python_version >= "3.12" and python_version < "4.0"
--hash=sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33 \
--hash=sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519 \
--hash=sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561
-click==8.1.7 ; python_version >= "3.12" and python_version < "4.0" \
+click==8.1.7 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \
--hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de
-colorama==0.4.6 ; python_version >= "3.12" and python_version < "4.0" \
+cloudpathlib==0.16.0 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:cdfcd35d46d529587d744154a0bdf962aca953b725c8784cd2ec478354ea63a3 \
+ --hash=sha256:f46267556bf91f03db52b5df7a152548596a15aabca1c8731ef32b0b25a1a6a3
+colorama==0.4.6 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \
--hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6
-contourpy==1.2.1 ; python_version >= "3.12" and python_version < "4.0" \
+confection==0.1.4 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:a658818d004939069c3e2b3db74a2cb9d956a5e61a1c9ad61788e0ee09a7090f \
+ --hash=sha256:e80f22fd008b5231a2e8852fac6de9e28f2276a04031d0536cff74fe4a990c8f
+contourpy==1.2.1 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:00e5388f71c1a0610e6fe56b5c44ab7ba14165cdd6d695429c5cd94021e390b2 \
--hash=sha256:10a37ae557aabf2509c79715cd20b62e4c7c28b8cd62dd7d99e5ed3ce28c3fd9 \
--hash=sha256:11959f0ce4a6f7b76ec578576a0b61a28bdc0696194b6347ba3f1c53827178b9 \
@@ -158,146 +208,308 @@ contourpy==1.2.1 ; python_version >= "3.12" and python_version < "4.0" \
--hash=sha256:ef5adb9a3b1d0c645ff694f9bca7702ec2c70f4d734f9922ea34de02294fdf72 \
--hash=sha256:f32c38afb74bd98ce26de7cc74a67b40afb7b05aae7b42924ea990d51e4dac02 \
--hash=sha256:fe0ccca550bb8e5abc22f530ec0466136379c01321fd94f30a22231e8a48d985
-cycler==0.12.1 ; python_version >= "3.12" and python_version < "4.0" \
+cupy-cuda12x==12.3.0 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:182fed8568f60208bec43b8ad011f4ab2a80f5bc428bd34672b9ef130a93f772 \
+ --hash=sha256:1ac1312fa4f24598bced9ddd6b2cd66236c53171e9941c5ee170c5b14c7f0e3a \
+ --hash=sha256:27993b46a1dd5a6b2c269ab436e0927b5eb66adb03d24b9b321850a1b4140d7a \
+ --hash=sha256:32d0e03789ef3f02f0c098818e957c235b75c1636e9e0036299480db0c423dcd \
+ --hash=sha256:3c7ba97dcb78f8b65ff7c179eacde3e3f2cd895d5fd5041c5617e717d15b2e76 \
+ --hash=sha256:3e65f1cfd32fa5d9894681de35e57a79a8bf74e8a84e6ee3d24542ba71aaca34 \
+ --hash=sha256:43c54e121d9fdc92b246df438bc3f49d47a85c1562deefc9f5e16e55c27cec6a \
+ --hash=sha256:49626a975c87008a11b67a43ca4b5bd00c3029e093430511c83cbda422b6a89f \
+ --hash=sha256:5dea10a66a0e208f83ef80fca0e57f6ed227b93c138a65c6d23ff2d8350a3a33 \
+ --hash=sha256:6ab0d67db0ae74118b3b29c96cd79428593ee646c1e7b4f92ad76028033d3646 \
+ --hash=sha256:716db7567453a88795c1e157f4e9059d291f759e01d7c18df65feafb02209b31 \
+ --hash=sha256:77687b019383eb89da981638cfec6d5ba556a15f1be0945e8f7f80030b851d04 \
+ --hash=sha256:8fe596e792ef47bab71cc85fe0982d752357276d6eb701cfc823697d29e83257 \
+ --hash=sha256:c7282a51a6e74a2221285b44eb6deefac96965016b7eb4387903e5cee059bcb7 \
+ --hash=sha256:e8a4906da820f6ce39a3a1d18c4504da4e0faad87598761ea9d6bf8288423d69
+cycler==0.12.1 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30 \
--hash=sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c
-dnspython==2.6.1 ; python_version >= "3.12" and python_version < "4.0" \
- --hash=sha256:5ef3b9680161f6fa89daf8ad451b5f1a33b18ae8a1c6778cdf4b43f08c0a6e50 \
- --hash=sha256:e8f0f9c23a7b7cb99ded64e6c3a6f3e701d78f50c55e002b839dea7225cff7cc
-email-validator==2.1.1 ; python_version >= "3.12" and python_version < "4.0" \
- --hash=sha256:200a70680ba08904be6d1eef729205cc0d687634399a5924d842533efb824b84 \
- --hash=sha256:97d882d174e2a65732fb43bfce81a3a834cbc1bde8bf419e30ef5ea976370a05
-fastapi-cli==0.0.3 ; python_version >= "3.12" and python_version < "4.0" \
- --hash=sha256:3b6e4d2c4daee940fb8db59ebbfd60a72c4b962bcf593e263e4cc69da4ea3d7f \
- --hash=sha256:ae233115f729945479044917d949095e829d2d84f56f55ce1ca17627872825a5
-fastapi==0.111.0 ; python_version >= "3.12" and python_version < "4.0" \
- --hash=sha256:97ecbf994be0bcbdadedf88c3150252bed7b2087075ac99735403b1b76cc8fc0 \
- --hash=sha256:b9db9dd147c91cb8b769f7183535773d8741dd46f9dc6676cd82eab510228cd7
-ffmpy==0.3.2 ; python_version >= "3.12" and python_version < "4.0" \
+cymem==2.0.8 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:0d5f83dc3cb5a39f0e32653cceb7c8ce0183d82f1162ca418356f4a8ed9e203e \
+ --hash=sha256:167d8019db3b40308aabf8183fd3fbbc256323b645e0cbf2035301058c439cd0 \
+ --hash=sha256:17cd2c2791c8f6b52f269a756ba7463f75bf7265785388a2592623b84bb02bf8 \
+ --hash=sha256:1e593cd57e2e19eb50c7ddaf7e230b73c890227834425b9dadcd4a86834ef2ab \
+ --hash=sha256:29a551eda23eebd6d076b855f77a5ed14a1d1cae5946f7b3cb5de502e21b39b0 \
+ --hash=sha256:42c993589d1811ec665d37437d5677b8757f53afadd927bf8516ac8ce2d3a50c \
+ --hash=sha256:4ac218cf8a43a761dc6b2f14ae8d183aca2bbb85b60fe316fd6613693b2a7914 \
+ --hash=sha256:6204f0a3307bf45d109bf698ba37997ce765f21e359284328e4306c7500fcde8 \
+ --hash=sha256:6a6edddb30dd000a27987fcbc6f3c23b7fe1d74f539656952cb086288c0e4e29 \
+ --hash=sha256:6b84b780d52cb2db53d4494fe0083c4c5ee1f7b5380ceaea5b824569009ee5bd \
+ --hash=sha256:6ce641f7ba0489bd1b42a4335a36f38c8507daffc29a512681afaba94a0257d2 \
+ --hash=sha256:7372e2820fa66fd47d3b135f3eb574ab015f90780c3a21cfd4809b54f23a4723 \
+ --hash=sha256:77b5d3a73c41a394efd5913ab7e48512054cd2dabb9582d489535456641c7666 \
+ --hash=sha256:7bf49e3ea2c441f7b7848d5c61b50803e8cbd49541a70bb41ad22fce76d87603 \
+ --hash=sha256:84f8c58cde71b8fc7024883031a4eec66c0a9a4d36b7850c3065493652695156 \
+ --hash=sha256:8e370dd54359101b125bfb191aca0542718077b4edb90ccccba1a28116640fed \
+ --hash=sha256:8fb09d222e21dcf1c7e907dc85cf74501d4cea6c4ed4ac6c9e016f98fb59cbbf \
+ --hash=sha256:9235957f8c6bc2574a6a506a1687164ad629d0b4451ded89d49ebfc61b52660c \
+ --hash=sha256:a2cc38930ff5409f8d61f69a01e39ecb185c175785a1c9bec13bcd3ac8a614ba \
+ --hash=sha256:a4f8f2bfee34f6f38b206997727d29976666c89843c071a968add7d61a1e8024 \
+ --hash=sha256:a63a2bef4c7e0aec7c9908bca0a503bf91ac7ec18d41dd50dc7dff5d994e4387 \
+ --hash=sha256:ab3cf20e0eabee9b6025ceb0245dadd534a96710d43fb7a91a35e0b9e672ee44 \
+ --hash=sha256:ada6eb022e4a0f4f11e6356a5d804ceaa917174e6cf33c0b3e371dbea4dd2601 \
+ --hash=sha256:b896c83c08dadafe8102a521f83b7369a9c5cc3e7768eca35875764f56703f4c \
+ --hash=sha256:b9c05db55ea338648f8e5f51dd596568c7f62c5ae32bf3fa5b1460117910ebae \
+ --hash=sha256:bd33da892fb560ba85ea14b1528c381ff474048e861accc3366c8b491035a378 \
+ --hash=sha256:cb51fddf1b920abb1f2742d1d385469bc7b4b8083e1cfa60255e19bc0900ccb5 \
+ --hash=sha256:ceeab3ce2a92c7f3b2d90854efb32cb203e78cb24c836a5a9a2cac221930303b \
+ --hash=sha256:d513f0d5c6d76facdc605e42aa42c8d50bb7dedca3144ec2b47526381764deb0 \
+ --hash=sha256:e4e57bee56d35b90fc2cba93e75b2ce76feaca05251936e28a96cf812a1f5dda \
+ --hash=sha256:e6b83a5972a64f62796118da79dfeed71f4e1e770b2b7455e889c909504c2358 \
+ --hash=sha256:e8260445652ae5ab19fff6851f32969a7b774f309162e83367dd0f69aac5dbf7 \
+ --hash=sha256:ecd12e3bacf3eed5486e4cd8ede3c12da66ee0e0a9d0ae046962bc2bb503acef
+fastapi==0.110.3 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:555700b0159379e94fdbfc6bb66a0f1c43f4cf7060f25239af3d84b63a656626 \
+ --hash=sha256:fd7600612f755e4050beb74001310b5a7e1796d149c2ee363124abdfa0289d32
+fastrlock==0.8.2 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:067edb0a0805bf61e17a251d5046af59f6e9d2b8ad01222e0ef7a0b7937d5548 \
+ --hash=sha256:07ed3c7b3867c05a3d6be4ced200c7767000f3431b9be6da66972822dd86e8be \
+ --hash=sha256:08315bde19d0c2e6b06593d5a418be3dc8f9b1ee721afa96867b9853fceb45cf \
+ --hash=sha256:11bbbbc526363955aeddb9eec4cee2a0012322b7b2f15b54f44454fcf4fd398a \
+ --hash=sha256:17734e2e5af4c07ddb0fb10bd484e062c22de3be6b67940b9cc6ec2f18fa61ba \
+ --hash=sha256:1b15430b93d7eb3d56f6ff690d2ebecb79ed0e58248427717eba150a508d1cd7 \
+ --hash=sha256:1fed2f4797ad68e9982038423018cf08bec5f4ce9fed63a94a790773ed6a795c \
+ --hash=sha256:2074548a335fcf7d19ebb18d9208da9e33b06f745754466a7e001d2b1c58dd19 \
+ --hash=sha256:2587cedbb36c7988e707d83f0f1175c1f882f362b5ebbee25d70218ea33d220d \
+ --hash=sha256:25945f962c7bd808415cfde3da624d4399d4ea71ed8918538375f16bceb79e1c \
+ --hash=sha256:27786c62a400e282756ae1b090bcd7cfa35f28270cff65a9e7b27a5327a32561 \
+ --hash=sha256:2c1719ddc8218b01e82fb2e82e8451bd65076cb96d7bef4477194bbb4305a968 \
+ --hash=sha256:2d5595903444c854b99c42122b87edfe8a37cd698a4eae32f4fd1d2a7b6c115d \
+ --hash=sha256:30bdbe4662992348132d03996700e1cf910d141d629179b967b146a22942264e \
+ --hash=sha256:31a27a2edf482df72b91fe6c6438314d2c65290aa7becc55589d156c9b91f0da \
+ --hash=sha256:320fd55bafee3eb069cfb5d6491f811a912758387ef2193840e2663e80e16f48 \
+ --hash=sha256:33145acbad8317584cd64588131c7e1e286beef6280c0009b4544c91fce171d2 \
+ --hash=sha256:43a241655e83e4603a152192cf022d5ca348c2f4e56dfb02e5c9c4c1a32f9cdb \
+ --hash=sha256:4d63b6596368dab9e0cc66bf047e7182a56f33b34db141816a4f21f5bf958228 \
+ --hash=sha256:4fb04442b6d1e2b36c774919c6bcbe3339c61b337261d4bd57e27932589095af \
+ --hash=sha256:4fb2e77ff04bc4beb71d63c8e064f052ce5a6ea1e001d528d4d7f4b37d736f2e \
+ --hash=sha256:5460c5ee6ced6d61ec8cd2324ebbe793a4960c4ffa2131ffff480e3b61c99ec5 \
+ --hash=sha256:59344c1d46b7dec97d3f22f1cc930fafe8980b3c5bc9c9765c56738a5f1559e4 \
+ --hash=sha256:5dfb78dd600a12f23fc0c3ec58f81336229fdc74501ecf378d1ce5b3f2f313ea \
+ --hash=sha256:643e1e65b4f5b284427e61a894d876d10459820e93aa1e724dfb415117be24e0 \
+ --hash=sha256:644ec9215cf9c4df8028d8511379a15d9c1af3e16d80e47f1b6fdc6ba118356a \
+ --hash=sha256:66f2662c640bb71a1016a031eea6eef9d25c2bcdf7ffd1d1ddc5a58f9a1ced04 \
+ --hash=sha256:685e656048b59d8dfde8c601f188ad53a4d719eb97080cafc8696cda6d75865e \
+ --hash=sha256:7269bb3fc15587b0c191eecd95831d771a7d80f0c48929e560806b038ff3066c \
+ --hash=sha256:73426f5eb2ecc10626c67cf86bd0af9e00d53e80e5c67d5ce8e18376d6abfa09 \
+ --hash=sha256:75c07726c8b1a52147fd7987d6baaa318c5dced1416c3f25593e40f56e10755b \
+ --hash=sha256:790fc19bccbd39426060047e53629f171a44745613bf360a045e9f9c8c4a2cea \
+ --hash=sha256:7a2ccaf88ac0db153e84305d1ef0aa138cea82c6a88309066f6eaa3bc98636cd \
+ --hash=sha256:87f4e01b042c84e6090dbc4fbe3415ddd69f6bc0130382323f9d3f1b8dd71b46 \
+ --hash=sha256:88f079335e9da631efa64486c8207564a7bcd0c00526bb9e842e9d5b7e50a6cc \
+ --hash=sha256:8c1c91a68926421f5ccbc82c85f83bd3ba593b121a46a1b9a554b3f0dd67a4bf \
+ --hash=sha256:9121a894d74e65557e47e777060a495ab85f4b903e80dd73a3c940ba042920d7 \
+ --hash=sha256:94e348c72a1fd1f8191f25ea056448e4f5a87b8fbf005b39d290dcb0581a48cd \
+ --hash=sha256:98195866d3a9949915935d40a88e4f1c166e82e378f622c88025f2938624a90a \
+ --hash=sha256:99dd6652bd6f730beadf74ef769d38c6bbd8ee6d1c15c8d138ea680b0594387f \
+ --hash=sha256:9af691a9861027181d4de07ed74f0aee12a9650ac60d0a07f4320bff84b5d95f \
+ --hash=sha256:a3b8b5d2935403f1b4b25ae324560e94b59593a38c0d2e7b6c9872126a9622ed \
+ --hash=sha256:a3dcc876050b8f5cbc0ee84ef1e7f0c1dfe7c148f10098828bc4403683c33f10 \
+ --hash=sha256:a74f5a92fa6e51c4f3c69b29c4662088b97be12f40652a21109605a175c81824 \
+ --hash=sha256:ab91b0c36e95d42e1041a4907e3eefd06c482d53af3c7a77be7e214cc7cd4a63 \
+ --hash=sha256:ad1bc61c7f6b0e58106aaab034916b6cb041757f708b07fbcdd9d6e1ac629225 \
+ --hash=sha256:adcb9e77aa132cc6c9de2ffe7cf880a20aa8cdba21d367d1da1a412f57bddd5d \
+ --hash=sha256:b22ea9bf5f9fad2b0077e944a7813f91593a4f61adf8faf734a70aed3f2b3a40 \
+ --hash=sha256:b2a1c354f13f22b737621d914f3b4a8434ae69d3027a775e94b3e671756112f9 \
+ --hash=sha256:b32fdf874868326351a75b1e4c02f97e802147119ae44c52d3d9da193ec34f5b \
+ --hash=sha256:b3853ed4ce522598dc886160a7bab432a093051af85891fa2f5577c1dcac8ed6 \
+ --hash=sha256:b443e73a4dfc7b6e0800ea4c13567b9694358e86f53bb2612a51c9e727cac67b \
+ --hash=sha256:b4c9083ea89ab236b06e9ef2263971db3b4b507195fc7d5eecab95828dcae325 \
+ --hash=sha256:b8ca0fe21458457077e4cb2d81e1ebdb146a00b3e9e2db6180a773f7ea905032 \
+ --hash=sha256:c393af77c659a38bffbca215c0bcc8629ba4299568308dd7e4ff65d62cabed39 \
+ --hash=sha256:c6bffa978793bea5e1b00e677062e53a62255439339591b70e209fa1552d5ee0 \
+ --hash=sha256:ccf39ad5702e33e4d335b48ef9d56e21619b529b7f7471b5211419f380329b62 \
+ --hash=sha256:cf81e0278b645004388873e0a1f9e3bc4c9ab8c18e377b14ed1a544be4b18c9a \
+ --hash=sha256:d34546ad2e4a480b94b6797bcc5a322b3c705c4c74c3e4e545c4a3841c1b2d59 \
+ --hash=sha256:d47713ffe6d4a627fbf078be9836a95ac106b4a0543e3841572c91e292a5d885 \
+ --hash=sha256:d918dfe473291e8bfd8e13223ea5cb9b317bd9f50c280923776c377f7c64b428 \
+ --hash=sha256:dbdce852e6bb66e1b8c36679d482971d69d93acf1785657522e51b7de30c3356 \
+ --hash=sha256:dcc1bf0ac8a194313cf6e645e300a8a379674ceed8e0b1e910a2de3e3c28989e \
+ --hash=sha256:dd961a32a7182c3891cdebca417fda67496d5d5de6ae636962254d22723bdf52 \
+ --hash=sha256:ddf5d247f686aec853ddcc9a1234bfcc6f57b0a0670d2ad82fc25d8ae7e6a15f \
+ --hash=sha256:e27c3cd27fbd25e5223c5c992b300cd4ee8f0a75c6f222ce65838138d853712c \
+ --hash=sha256:e380ec4e6d8b26e389713995a43cb7fe56baea2d25fe073d4998c4821a026211 \
+ --hash=sha256:e4bbde174a0aff5f6eeba75cf8c4c5d2a316316bc21f03a0bddca0fc3659a6f3 \
+ --hash=sha256:e8b49b5743ede51e0bcf6805741f39f5e0e0fd6a172ba460cb39e3097ba803bb \
+ --hash=sha256:e9904b5b37c3e5bb4a245c56bc4b7e497da57ffb8528f4fc39af9dcb168ee2e1 \
+ --hash=sha256:ea96503b918fceaf40443182742b8964d47b65c5ebdea532893cb9479620000c \
+ --hash=sha256:eb31fe390f03f7ae886dcc374f1099ec88526631a4cb891d399b68181f154ff0 \
+ --hash=sha256:ebb32d776b61acd49f859a1d16b9e3d84e7b46d0d92aebd58acd54dc38e96664 \
+ --hash=sha256:fb5363cf0fddd9b50525ddbf64a1e1b28ec4c6dfb28670a940cb1cf988a6786b \
+ --hash=sha256:ff75c90663d6e8996610d435e71487daa853871ad1770dd83dc0f2fc4997241e
+ffmpy==0.3.2 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:475ebfff1044661b8d969349dbcd2db9bf56d3ee78c0627e324769b49a27a78f
-filelock==3.14.0 ; python_version >= "3.12" and python_version < "4.0" \
+filelock==3.14.0 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:43339835842f110ca7ae60f1e1c160714c5a6afd15a2873419ab185334975c0f \
--hash=sha256:6ea72da3be9b8c82afd3edcf99f2fffbb5076335a5ae4d03248bb5b6c3eae78a
-fonttools==4.51.0 ; python_version >= "3.12" and python_version < "4.0" \
- --hash=sha256:0118ef998a0699a96c7b28457f15546815015a2710a1b23a7bf6c1be60c01636 \
- --hash=sha256:0d145976194a5242fdd22df18a1b451481a88071feadf251221af110ca8f00ce \
- --hash=sha256:0e19bd9e9964a09cd2433a4b100ca7f34e34731e0758e13ba9a1ed6e5468cc0f \
- --hash=sha256:0f08c901d3866a8905363619e3741c33f0a83a680d92a9f0e575985c2634fcc1 \
- --hash=sha256:1250e818b5f8a679ad79660855528120a8f0288f8f30ec88b83db51515411fcc \
- --hash=sha256:15c94eeef6b095831067f72c825eb0e2d48bb4cea0647c1b05c981ecba2bf39f \
- --hash=sha256:1621ee57da887c17312acc4b0e7ac30d3a4fb0fec6174b2e3754a74c26bbed1e \
- --hash=sha256:180194c7fe60c989bb627d7ed5011f2bef1c4d36ecf3ec64daec8302f1ae0716 \
- --hash=sha256:278e50f6b003c6aed19bae2242b364e575bcb16304b53f2b64f6551b9c000e15 \
- --hash=sha256:32b17504696f605e9e960647c5f64b35704782a502cc26a37b800b4d69ff3c77 \
- --hash=sha256:3bee3f3bd9fa1d5ee616ccfd13b27ca605c2b4270e45715bd2883e9504735034 \
- --hash=sha256:4060acc2bfa2d8e98117828a238889f13b6f69d59f4f2d5857eece5277b829ba \
- --hash=sha256:54dcf21a2f2d06ded676e3c3f9f74b2bafded3a8ff12f0983160b13e9f2fb4a7 \
- --hash=sha256:56fc244f2585d6c00b9bcc59e6593e646cf095a96fe68d62cd4da53dd1287b55 \
- --hash=sha256:599bdb75e220241cedc6faebfafedd7670335d2e29620d207dd0378a4e9ccc5a \
- --hash=sha256:5f6bc991d1610f5c3bbe997b0233cbc234b8e82fa99fc0b2932dc1ca5e5afec0 \
- --hash=sha256:60a3409c9112aec02d5fb546f557bca6efa773dcb32ac147c6baf5f742e6258b \
- --hash=sha256:68b3fb7775a923be73e739f92f7e8a72725fd333eab24834041365d2278c3671 \
- --hash=sha256:76f1777d8b3386479ffb4a282e74318e730014d86ce60f016908d9801af9ca2a \
- --hash=sha256:806e7912c32a657fa39d2d6eb1d3012d35f841387c8fc6cf349ed70b7c340039 \
- --hash=sha256:84d7751f4468dd8cdd03ddada18b8b0857a5beec80bce9f435742abc9a851a74 \
- --hash=sha256:865a58b6e60b0938874af0968cd0553bcd88e0b2cb6e588727117bd099eef836 \
- --hash=sha256:8ac27f436e8af7779f0bb4d5425aa3535270494d3bc5459ed27de3f03151e4c2 \
- --hash=sha256:8b4850fa2ef2cfbc1d1f689bc159ef0f45d8d83298c1425838095bf53ef46308 \
- --hash=sha256:8b5ad456813d93b9c4b7ee55302208db2b45324315129d85275c01f5cb7e61a2 \
- --hash=sha256:8e2f1a4499e3b5ee82c19b5ee57f0294673125c65b0a1ff3764ea1f9db2f9ef5 \
- --hash=sha256:9696fe9f3f0c32e9a321d5268208a7cc9205a52f99b89479d1b035ed54c923f1 \
- --hash=sha256:96a48e137c36be55e68845fc4284533bda2980f8d6f835e26bca79d7e2006438 \
- --hash=sha256:a8feca65bab31479d795b0d16c9a9852902e3a3c0630678efb0b2b7941ea9c74 \
- --hash=sha256:aefa011207ed36cd280babfaa8510b8176f1a77261833e895a9d96e57e44802f \
- --hash=sha256:b2b92381f37b39ba2fc98c3a45a9d6383bfc9916a87d66ccb6553f7bdd129097 \
- --hash=sha256:b3c61423f22165541b9403ee39874dcae84cd57a9078b82e1dce8cb06b07fa2e \
- --hash=sha256:b5b48a1121117047d82695d276c2af2ee3a24ffe0f502ed581acc2673ecf1037 \
- --hash=sha256:c18b49adc721a7d0b8dfe7c3130c89b8704baf599fb396396d07d4aa69b824a1 \
- --hash=sha256:c5b8cab0c137ca229433570151b5c1fc6af212680b58b15abd797dcdd9dd5051 \
- --hash=sha256:c7e91abdfae1b5c9e3a543f48ce96013f9a08c6c9668f1e6be0beabf0a569c1b \
- --hash=sha256:cadf4e12a608ef1d13e039864f484c8a968840afa0258b0b843a0556497ea9ed \
- --hash=sha256:dc0673361331566d7a663d7ce0f6fdcbfbdc1f59c6e3ed1165ad7202ca183c68 \
- --hash=sha256:de7c29bdbdd35811f14493ffd2534b88f0ce1b9065316433b22d63ca1cd21f14 \
- --hash=sha256:e9d9298be7a05bb4801f558522adbe2feea1b0b103d5294ebf24a92dd49b78e5 \
- --hash=sha256:ee1af4be1c5afe4c96ca23badd368d8dc75f611887fb0c0dac9f71ee5d6f110e \
- --hash=sha256:f7e89853d8bea103c8e3514b9f9dc86b5b4120afb4583b57eb10dfa5afbe0936
-fsspec==2024.5.0 ; python_version >= "3.12" and python_version < "4.0" \
+flatbuffers==24.3.25 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:8dbdec58f935f3765e4f7f3cf635ac3a77f83568138d6a2311f524ec96364812 \
+ --hash=sha256:de2ec5b203f21441716617f38443e0a8ebf3d25bf0d9c0bb0ce68fa00ad546a4
+fonttools==4.52.4 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:00d9abf4b400f98fb895566eb298f60432b4b29048e3dc02807427b09a06604e \
+ --hash=sha256:05e4291db6af66f466a203d9922e4c1d3e18ef16868f76f10b00e2c3b9814df2 \
+ --hash=sha256:15efb2ba4b8c2d012ee0bb7a850c2e4780c530cc83ec8e843b2a97f8b3a5fd4b \
+ --hash=sha256:1dc626de4b204d025d029e646bae8fdbf5acd9217158283a567f4b523fda3bae \
+ --hash=sha256:21921e5855c399d10ddfc373538b425cabcf8b3258720b51450909e108896450 \
+ --hash=sha256:309b617942041073ffa96090d320b99d75648ed16e0c67fb1aa7788e06c834de \
+ --hash=sha256:346d08ff92e577b2dc5a0c228487667d23fe2da35a8b9a8bba22c2b6ba8be21c \
+ --hash=sha256:35af630404223273f1d7acd4761f399131c62820366f53eac029337069f5826a \
+ --hash=sha256:46cc5d06ee05fd239c45d7935aaffd060ee773a88b97e901df50478247472643 \
+ --hash=sha256:4b0b9eb0f55dce9c7278ad4175f1cbaed23b799dce5ecc20e3213da241584140 \
+ --hash=sha256:4b419207e53db1599b3d385afd4bca6692c219d53732890d0814a2593104d0e2 \
+ --hash=sha256:4c3ad89204c2d7f419436f1d6fde681b070c5e20b888beb57ccf92f640628cc9 \
+ --hash=sha256:52f6001814ec5e0c961cabe89642f7e8d7e07892b565057aa526569b9ebb711c \
+ --hash=sha256:5ecb88318ff249bd2a715e7aec36774ce7ae3441128007ef72a39a60601f4a8f \
+ --hash=sha256:70d87f2099006304d33438bdaa5101953b7e22e23a93b1c7b7ed0f32ff44b423 \
+ --hash=sha256:73ba38b98c012957940a04d9eb5439b42565ac892bba8cfc32e10d88e73921fe \
+ --hash=sha256:7467161f1eed557dbcec152d5ee95540200b1935709fa73307da16bc0b7ca361 \
+ --hash=sha256:7dccf4666f716e5e0753f0fa28dad2f4431154c87747bc781c838b8a5dca990e \
+ --hash=sha256:859399b7adc8ac067be8e5c80ef4bb2faddff97e9b40896a9de75606a43d0469 \
+ --hash=sha256:8873d6edd1dae5c088dd3d61c9fd4dd80c827c486fa224d368233e7f33dc98af \
+ --hash=sha256:890e7a657574610330e42dd1e38d3b9e0a8cb0eff3da080f80995460a256d3dd \
+ --hash=sha256:89b53386214197bd5b3e3c753895bad691de84726ced3c222a59cde1dd12d57b \
+ --hash=sha256:8b186cd6b8844f6cf04a7e0a174bc3649d3deddbfc10dc59846a4381f796d348 \
+ --hash=sha256:9180775c9535389a665cae7c5282f8e07754beabf59b66aeba7f6bfeb32a3652 \
+ --hash=sha256:95e8a5975d08d0b624a14eec0f987e204ad81b480e24c5436af99170054434b8 \
+ --hash=sha256:9725687db3c1cef13c0f40b380c3c15bea0113f4d0231b204d58edd5f2a53d90 \
+ --hash=sha256:9a5d1b0475050056d2e3bc378014f2ea2230e8ae434eeac8dfb182aa8efaf642 \
+ --hash=sha256:9ed23a03b7d9f0e29ca0679eafe5152aeccb0580312a3fc36f0662e178b4791b \
+ --hash=sha256:a4daf2751a98c69d9620717826ed6c5743b662ef0ae7bb33dc6c205425e48eba \
+ --hash=sha256:a64e72d2c144630e017ac9c1c416ddf8ac43bef9a083bf81fe08c0695f0baa95 \
+ --hash=sha256:a791f002d1b717268235cfae7e4957b7fd132e92e2c5400e521bf191f1b3a9a5 \
+ --hash=sha256:b4cba644e2515d685d4ee3ca2fbb5d53930a0e9ec2cf332ed704dc341b145878 \
+ --hash=sha256:b9a22cf1adaae7b2ba2ed7d8651a4193a4f348744925b4b740e6b38a94599c5b \
+ --hash=sha256:bb7d206fa5ba6e082ba5d5e1b7107731029fc3a55c71c48de65121710d817986 \
+ --hash=sha256:cf694159528022daa71b1777cb6ec9e0ebbdd29859f3e9c845826cafaef4ca29 \
+ --hash=sha256:d0184aa88865339d96f7f452e8c5b621186ef7638744d78bf9b775d67e206819 \
+ --hash=sha256:d272c7e173c3085308345ccc7fb2ad6ce7f415d777791dd6ce4e8140e354d09c \
+ --hash=sha256:d2cc7906bc0afdd2689aaf88b910307333b1f936262d1d98f25dbf8a5eb2e829 \
+ --hash=sha256:e03dae26084bb3632b4a77b1cd0419159d2226911aff6dc4c7e3058df68648c6 \
+ --hash=sha256:e176249292eccd89f81d39f514f2b5e8c75dfc9cef8653bdc3021d06697e9eff \
+ --hash=sha256:ebb183ed8b789cece0bd6363121913fb6da4034af89a2fa5408e42a1592889a8 \
+ --hash=sha256:fb8cd6559f0ae3a8f5e146f80ab2a90ad0325a759be8d48ee82758a0b89fa0aa
+fsspec==2024.5.0 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:1d021b0b0f933e3b3029ed808eb400c08ba101ca2de4b3483fbc9ca23fcee94a \
--hash=sha256:e0fdbc446d67e182f49a70b82cf7889028a63588fde6b222521f10937b2b670c
-gradio-client==0.16.3 ; python_version >= "3.12" and python_version < "4.0" \
- --hash=sha256:e35a9b36e67fe57fce932aa08f759c3ec6c8a7fa9faee3b169d74a2acc347454 \
- --hash=sha256:faba47cfd3c742bf7e454166ecd7e82de09a77c5798e35f1ffa97b2af8747dab
-gradio==4.31.3 ; python_version >= "3.12" and python_version < "4.0" \
- --hash=sha256:5b98caaf5515614e0caca0c54e932a66039b7af9e980621331472b7bfacda9ca \
- --hash=sha256:e1c62551d30861a456c4122e3809b09129a7587e18c08305d2eb8c3e789eca38
-h11==0.14.0 ; python_version >= "3.12" and python_version < "4.0" \
+gast==0.5.4 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:6fc4fa5fa10b72fb8aab4ae58bcb023058386e67b6fa2e3e34cec5c769360316 \
+ --hash=sha256:9c270fe5f4b130969b54174de7db4e764b09b4f7f67ccfc32480e29f78348d97
+google-pasta==0.2.0 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:4612951da876b1a10fe3960d7226f0c7682cf901e16ac06e473b267a5afa8954 \
+ --hash=sha256:b32482794a366b5366a32c92a9a9201b107821889935a02b3e51f6b432ea84ed \
+ --hash=sha256:c9f2c8dfc8f96d0d5808299920721be30c9eec37f2389f28904f454565c8a16e
+gradio-client==0.15.1 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:c31f2e00030cf39df7f198d1e430f38500b27232b7b62a7c42bdb26aee4c75b1 \
+ --hash=sha256:c6b12f7d3f63b65d6539920023ca733fddcacdc45a712c0c32342d34428c8130
+gradio==4.26.0 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:44d7c4cf01e02e38c03afcfda1ca3c070968b01dbd69747e240148deff2f9f6c \
+ --hash=sha256:63e9ae7e65098ba8431bb3d6b519c548b9cf57decad063391c380ed593abae93
+grpcio==1.64.0 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:01615bbcae6875eee8091e6b9414072f4e4b00d8b7e141f89635bdae7cf784e5 \
+ --hash=sha256:02cc9cc3f816d30f7993d0d408043b4a7d6a02346d251694d8ab1f78cc723e7e \
+ --hash=sha256:0b2dfe6dcace264807d9123d483d4c43274e3f8c39f90ff51de538245d7a4145 \
+ --hash=sha256:0da1d921f8e4bcee307aeef6c7095eb26e617c471f8cb1c454fd389c5c296d1e \
+ --hash=sha256:0f30596cdcbed3c98024fb4f1d91745146385b3f9fd10c9f2270cbfe2ed7ed91 \
+ --hash=sha256:1ce4cd5a61d4532651079e7aae0fedf9a80e613eed895d5b9743e66b52d15812 \
+ --hash=sha256:1f279ad72dd7d64412e10f2443f9f34872a938c67387863c4cd2fb837f53e7d2 \
+ --hash=sha256:1f5de082d936e0208ce8db9095821361dfa97af8767a6607ae71425ac8ace15c \
+ --hash=sha256:1f8ea18b928e539046bb5f9c124d717fbf00cc4b2d960ae0b8468562846f5aa1 \
+ --hash=sha256:2186d76a7e383e1466e0ea2b0febc343ffeae13928c63c6ec6826533c2d69590 \
+ --hash=sha256:23b6887bb21d77649d022fa1859e05853fdc2e60682fd86c3db652a555a282e0 \
+ --hash=sha256:257baf07f53a571c215eebe9679c3058a313fd1d1f7c4eede5a8660108c52d9c \
+ --hash=sha256:2a18090371d138a57714ee9bffd6c9c9cb2e02ce42c681aac093ae1e7189ed21 \
+ --hash=sha256:2e8fabe2cc57a369638ab1ad8e6043721014fdf9a13baa7c0e35995d3a4a7618 \
+ --hash=sha256:3161a8f8bb38077a6470508c1a7301cd54301c53b8a34bb83e3c9764874ecabd \
+ --hash=sha256:31890b24d47b62cc27da49a462efe3d02f3c120edb0e6c46dcc0025506acf004 \
+ --hash=sha256:3550493ac1d23198d46dc9c9b24b411cef613798dc31160c7138568ec26bc9b4 \
+ --hash=sha256:3b09c3d9de95461214a11d82cc0e6a46a6f4e1f91834b50782f932895215e5db \
+ --hash=sha256:3d2004e85cf5213995d09408501f82c8534700d2babeb81dfdba2a3bff0bb396 \
+ --hash=sha256:46b8b43ba6a2a8f3103f103f97996cad507bcfd72359af6516363c48793d5a7b \
+ --hash=sha256:579dd9fb11bc73f0de061cab5f8b2def21480fd99eb3743ed041ad6a1913ee2f \
+ --hash=sha256:597191370951b477b7a1441e1aaa5cacebeb46a3b0bd240ec3bb2f28298c7553 \
+ --hash=sha256:59c68df3a934a586c3473d15956d23a618b8f05b5e7a3a904d40300e9c69cbf0 \
+ --hash=sha256:5a56797dea8c02e7d3a85dfea879f286175cf4d14fbd9ab3ef2477277b927baa \
+ --hash=sha256:650a8150a9b288f40d5b7c1d5400cc11724eae50bd1f501a66e1ea949173649b \
+ --hash=sha256:6d5541eb460d73a07418524fb64dcfe0adfbcd32e2dac0f8f90ce5b9dd6c046c \
+ --hash=sha256:6ec5ed15b4ffe56e2c6bc76af45e6b591c9be0224b3fb090adfb205c9012367d \
+ --hash=sha256:73f84f9e5985a532e47880b3924867de16fa1aa513fff9b26106220c253c70c5 \
+ --hash=sha256:753cb58683ba0c545306f4e17dabf468d29cb6f6b11832e1e432160bb3f8403c \
+ --hash=sha256:7c1f5b2298244472bcda49b599be04579f26425af0fd80d3f2eb5fd8bc84d106 \
+ --hash=sha256:7e013428ab472892830287dd082b7d129f4d8afef49227a28223a77337555eaa \
+ --hash=sha256:7f17572dc9acd5e6dfd3014d10c0b533e9f79cd9517fc10b0225746f4c24b58e \
+ --hash=sha256:85fda90b81da25993aa47fae66cae747b921f8f6777550895fb62375b776a231 \
+ --hash=sha256:874c741c8a66f0834f653a69e7e64b4e67fcd4a8d40296919b93bab2ccc780ba \
+ --hash=sha256:8d598b5d5e2c9115d7fb7e2cb5508d14286af506a75950762aa1372d60e41851 \
+ --hash=sha256:8de0399b983f8676a7ccfdd45e5b2caec74a7e3cc576c6b1eecf3b3680deda5e \
+ --hash=sha256:a053584079b793a54bece4a7d1d1b5c0645bdbee729215cd433703dc2532f72b \
+ --hash=sha256:a54362f03d4dcfae63be455d0a7d4c1403673498b92c6bfe22157d935b57c7a9 \
+ --hash=sha256:aca4f15427d2df592e0c8f3d38847e25135e4092d7f70f02452c0e90d6a02d6d \
+ --hash=sha256:b2cbdfba18408389a1371f8c2af1659119e1831e5ed24c240cae9e27b4abc38d \
+ --hash=sha256:b52e1ec7185512103dd47d41cf34ea78e7a7361ba460187ddd2416b480e0938c \
+ --hash=sha256:c46fb6bfca17bfc49f011eb53416e61472fa96caa0979b4329176bdd38cbbf2a \
+ --hash=sha256:c56c91bd2923ddb6e7ed28ebb66d15633b03e0df22206f22dfcdde08047e0a48 \
+ --hash=sha256:cf4c8daed18ae2be2f1fc7d613a76ee2a2e28fdf2412d5c128be23144d28283d \
+ --hash=sha256:d7b7bf346391dffa182fba42506adf3a84f4a718a05e445b37824136047686a1 \
+ --hash=sha256:d9171f025a196f5bcfec7e8e7ffb7c3535f7d60aecd3503f9e250296c7cfc150
+h11==0.14.0 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \
--hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761
-httpcore==1.0.5 ; python_version >= "3.12" and python_version < "4.0" \
+h5py==3.11.0 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:083e0329ae534a264940d6513f47f5ada617da536d8dccbafc3026aefc33c90e \
+ --hash=sha256:1625fd24ad6cfc9c1ccd44a66dac2396e7ee74940776792772819fc69f3a3731 \
+ --hash=sha256:21dbdc5343f53b2e25404673c4f00a3335aef25521bd5fa8c707ec3833934892 \
+ --hash=sha256:52c416f8eb0daae39dabe71415cb531f95dce2d81e1f61a74537a50c63b28ab3 \
+ --hash=sha256:55106b04e2c83dfb73dc8732e9abad69d83a436b5b82b773481d95d17b9685e1 \
+ --hash=sha256:67462d0669f8f5459529de179f7771bd697389fcb3faab54d63bf788599a48ea \
+ --hash=sha256:6c4b760082626120031d7902cd983d8c1f424cdba2809f1067511ef283629d4b \
+ --hash=sha256:731839240c59ba219d4cb3bc5880d438248533366f102402cfa0621b71796b62 \
+ --hash=sha256:754c0c2e373d13d6309f408325343b642eb0f40f1a6ad21779cfa9502209e150 \
+ --hash=sha256:75bd7b3d93fbeee40860fd70cdc88df4464e06b70a5ad9ce1446f5f32eb84007 \
+ --hash=sha256:77b19a40788e3e362b54af4dcf9e6fde59ca016db2c61360aa30b47c7b7cef00 \
+ --hash=sha256:7b7e8f78072a2edec87c9836f25f34203fd492a4475709a18b417a33cfb21fa9 \
+ --hash=sha256:8ec9df3dd2018904c4cc06331951e274f3f3fd091e6d6cc350aaa90fa9b42a76 \
+ --hash=sha256:a76cae64080210389a571c7d13c94a1a6cf8cb75153044fd1f822a962c97aeab \
+ --hash=sha256:aa6ae84a14103e8dc19266ef4c3e5d7c00b68f21d07f2966f0ca7bdb6c2761fb \
+ --hash=sha256:bbd732a08187a9e2a6ecf9e8af713f1d68256ee0f7c8b652a32795670fb481ba \
+ --hash=sha256:c072655ad1d5fe9ef462445d3e77a8166cbfa5e599045f8aa3c19b75315f10e5 \
+ --hash=sha256:d9c944d364688f827dc889cf83f1fca311caf4fa50b19f009d1f2b525edd33a3 \
+ --hash=sha256:ef4e2f338fc763f50a8113890f455e1a70acd42a4d083370ceb80c463d803972 \
+ --hash=sha256:f3736fe21da2b7d8a13fe8fe415f1272d2a1ccdeff4849c1421d2fb30fd533bc \
+ --hash=sha256:f4e025e852754ca833401777c25888acb96889ee2c27e7e629a19aee288833f0
+httpcore==1.0.5 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61 \
--hash=sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5
-httptools==0.6.1 ; python_version >= "3.12" and python_version < "4.0" \
- --hash=sha256:00d5d4b68a717765b1fabfd9ca755bd12bf44105eeb806c03d1962acd9b8e563 \
- --hash=sha256:0ac5a0ae3d9f4fe004318d64b8a854edd85ab76cffbf7ef5e32920faef62f142 \
- --hash=sha256:0cf2372e98406efb42e93bfe10f2948e467edfd792b015f1b4ecd897903d3e8d \
- --hash=sha256:1ed99a373e327f0107cb513b61820102ee4f3675656a37a50083eda05dc9541b \
- --hash=sha256:3c3b214ce057c54675b00108ac42bacf2ab8f85c58e3f324a4e963bbc46424f4 \
- --hash=sha256:3e802e0b2378ade99cd666b5bffb8b2a7cc8f3d28988685dc300469ea8dd86cb \
- --hash=sha256:3f30d3ce413088a98b9db71c60a6ada2001a08945cb42dd65a9a9fe228627658 \
- --hash=sha256:405784577ba6540fa7d6ff49e37daf104e04f4b4ff2d1ac0469eaa6a20fde084 \
- --hash=sha256:48ed8129cd9a0d62cf4d1575fcf90fb37e3ff7d5654d3a5814eb3d55f36478c2 \
- --hash=sha256:4bd3e488b447046e386a30f07af05f9b38d3d368d1f7b4d8f7e10af85393db97 \
- --hash=sha256:4f0f8271c0a4db459f9dc807acd0eadd4839934a4b9b892f6f160e94da309837 \
- --hash=sha256:5cceac09f164bcba55c0500a18fe3c47df29b62353198e4f37bbcc5d591172c3 \
- --hash=sha256:639dc4f381a870c9ec860ce5c45921db50205a37cc3334e756269736ff0aac58 \
- --hash=sha256:678fcbae74477a17d103b7cae78b74800d795d702083867ce160fc202104d0da \
- --hash=sha256:6a4f5ccead6d18ec072ac0b84420e95d27c1cdf5c9f1bc8fbd8daf86bd94f43d \
- --hash=sha256:6f58e335a1402fb5a650e271e8c2d03cfa7cea46ae124649346d17bd30d59c90 \
- --hash=sha256:75c8022dca7935cba14741a42744eee13ba05db00b27a4b940f0d646bd4d56d0 \
- --hash=sha256:7a7ea483c1a4485c71cb5f38be9db078f8b0e8b4c4dc0210f531cdd2ddac1ef1 \
- --hash=sha256:7d9ceb2c957320def533671fc9c715a80c47025139c8d1f3797477decbc6edd2 \
- --hash=sha256:7ebaec1bf683e4bf5e9fbb49b8cc36da482033596a415b3e4ebab5a4c0d7ec5e \
- --hash=sha256:85ed077c995e942b6f1b07583e4eb0a8d324d418954fc6af913d36db7c05a5a0 \
- --hash=sha256:8ae5b97f690badd2ca27cbf668494ee1b6d34cf1c464271ef7bfa9ca6b83ffaf \
- --hash=sha256:8b0bb634338334385351a1600a73e558ce619af390c2b38386206ac6a27fecfc \
- --hash=sha256:8e216a038d2d52ea13fdd9b9c9c7459fb80d78302b257828285eca1c773b99b3 \
- --hash=sha256:93ad80d7176aa5788902f207a4e79885f0576134695dfb0fefc15b7a4648d503 \
- --hash=sha256:95658c342529bba4e1d3d2b1a874db16c7cca435e8827422154c9da76ac4e13a \
- --hash=sha256:95fb92dd3649f9cb139e9c56604cc2d7c7bf0fc2e7c8d7fbd58f96e35eddd2a3 \
- --hash=sha256:97662ce7fb196c785344d00d638fc9ad69e18ee4bfb4000b35a52efe5adcc949 \
- --hash=sha256:9bb68d3a085c2174c2477eb3ffe84ae9fb4fde8792edb7bcd09a1d8467e30a84 \
- --hash=sha256:b512aa728bc02354e5ac086ce76c3ce635b62f5fbc32ab7082b5e582d27867bb \
- --hash=sha256:c6e26c30455600b95d94b1b836085138e82f177351454ee841c148f93a9bad5a \
- --hash=sha256:d2f6c3c4cb1948d912538217838f6e9960bc4a521d7f9b323b3da579cd14532f \
- --hash=sha256:dcbab042cc3ef272adc11220517278519adf8f53fd3056d0e68f0a6f891ba94e \
- --hash=sha256:e0b281cf5a125c35f7f6722b65d8542d2e57331be573e9e88bc8b0115c4a7a81 \
- --hash=sha256:e57997ac7fb7ee43140cc03664de5f268813a481dff6245e0075925adc6aa185 \
- --hash=sha256:fe467eb086d80217b7584e61313ebadc8d187a4d95bb62031b7bab4b205c3ba3
-httpx==0.27.0 ; python_version >= "3.12" and python_version < "4.0" \
+httpx==0.27.0 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:71d5465162c13681bff01ad59b2cc68dd838ea1f10e51574bac27103f00c91a5 \
--hash=sha256:a0cb88a46f32dc874e04ee956e4c2764aba2aa228f650b06788ba6bda2962ab5
-huggingface-hub==0.23.0 ; python_version >= "3.12" and python_version < "4.0" \
- --hash=sha256:075c30d48ee7db2bba779190dc526d2c11d422aed6f9044c5e2fdc2c432fdb91 \
- --hash=sha256:7126dedd10a4c6fac796ced4d87a8cf004efc722a5125c2c09299017fa366fa9
-idna==3.7 ; python_version >= "3.12" and python_version < "4.0" \
+huggingface-hub==0.23.2 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:48727a16e704d409c4bb5913613308499664f22a99743435dc3a13b23c485827 \
+ --hash=sha256:f6829b62d5fdecb452a76fdbec620cba4c1573655a8d710c1df71735fd9edbd2
+idna==3.7 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc \
--hash=sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0
-importlib-resources==6.4.0 ; python_version >= "3.12" and python_version < "4.0" \
+importlib-resources==6.4.0 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:50d10f043df931902d4194ea07ec57960f66a80449ff867bfe782b4c486ba78c \
--hash=sha256:cdb2b453b8046ca4e3798eb1d84f3cce1446a0e8e7b5ef4efb600f19fc398145
-jinja2==3.1.4 ; python_version >= "3.12" and python_version < "4.0" \
+jinja2==3.1.4 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369 \
--hash=sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d
-joblib==1.4.2 ; python_version >= "3.12" and python_version < "4.0" \
+joblib==1.4.2 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:06d478d5674cbc267e7496a410ee875abd68e4340feff4490bcb7afb88060ae6 \
--hash=sha256:2382c5816b2636fbd20a09e0f4e9dad4736765fdfb7dca582943b9c1366b3f0e
-jsonschema-specifications==2023.12.1 ; python_version >= "3.12" and python_version < "4.0" \
+jsonschema-specifications==2023.12.1 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc \
--hash=sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c
-jsonschema==4.22.0 ; python_version >= "3.12" and python_version < "4.0" \
+jsonschema==4.22.0 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:5b22d434a45935119af990552c862e5d6d564e8f6601206b305a61fdf661a2b7 \
--hash=sha256:ff4cfd6b1367a40e7bc6411caec72effadd3db0bbe5017de188f2d6108335802
-kiwisolver==1.4.5 ; python_version >= "3.12" and python_version < "4.0" \
+keras==3.3.3 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:260df9ef71c6b89eb6816ce1c60f139c38ccdddd16f24e7005d2be127cdef8e4 \
+ --hash=sha256:f2fdffc8434fd77045cf8fb21816dbaa2308d5f76974ca924b2f60b40433b1a0
+kiwisolver==1.4.5 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:00bd361b903dc4bbf4eb165f24d1acbee754fce22ded24c3d56eec268658a5cf \
--hash=sha256:040c1aebeda72197ef477a906782b5ab0d387642e93bda547336b8957c61022e \
--hash=sha256:05703cf211d585109fcd72207a31bb170a0f22144d68298dc5e61b3c946518af \
@@ -402,10 +614,118 @@ kiwisolver==1.4.5 ; python_version >= "3.12" and python_version < "4.0" \
--hash=sha256:fcc700eadbbccbf6bc1bcb9dbe0786b4b1cb91ca0dcda336eef5c2beed37b797 \
--hash=sha256:fd32ea360bcbb92d28933fc05ed09bffcb1704ba3fc7942e81db0fd4f81a7892 \
--hash=sha256:fdb7adb641a0d13bdcd4ef48e062363d8a9ad4a182ac7647ec88f695e719ae9f
-markdown-it-py==3.0.0 ; python_version >= "3.12" and python_version < "4.0" \
+langcodes==3.4.0 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:10a4cc078b8e8937d8485d3352312a0a89a3125190db9f2bb2074250eef654e9 \
+ --hash=sha256:ae5a77d1a01d0d1e91854a671890892b7ce9abb601ab7327fc5c874f899e1979
+language-data==1.2.0 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:77d5cab917f91ee0b2f1aa7018443e911cf8985ef734ca2ba3940770f6a3816b \
+ --hash=sha256:82a86050bbd677bfde87d97885b17566cfe75dad3ac4f5ce44b52c28f752e773
+libclang==18.1.1 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:3f0e1f49f04d3cd198985fea0511576b0aee16f9ff0e0f0cad7f9c57ec3c20e8 \
+ --hash=sha256:4dd2d3b82fab35e2bf9ca717d7b63ac990a3519c7e312f19fa8e86dcc712f7fb \
+ --hash=sha256:54dda940a4a0491a9d1532bf071ea3ef26e6dbaf03b5000ed94dd7174e8f9592 \
+ --hash=sha256:69f8eb8f65c279e765ffd28aaa7e9e364c776c17618af8bff22a8df58677ff4f \
+ --hash=sha256:6f14c3f194704e5d09769108f03185fce7acaf1d1ae4bbb2f30a72c2400cb7c5 \
+ --hash=sha256:83ce5045d101b669ac38e6da8e58765f12da2d3aafb3b9b98d88b286a60964d8 \
+ --hash=sha256:a1214966d08d73d971287fc3ead8dfaf82eb07fb197680d8b3859dbbbbf78250 \
+ --hash=sha256:c533091d8a3bbf7460a00cb6c1a71da93bffe148f172c7d03b1c31fbf8aa2a0b \
+ --hash=sha256:cf4a99b05376513717ab5d82a0db832c56ccea4fd61a69dbb7bccf2dfb207dbe
+marisa-trie==1.1.1 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:0196e3a9ed3bfce20e32ff7d9ff1c929d0ceb8c380ae0f227e11ab819e70dc2c \
+ --hash=sha256:02578f4c709232caeb3bf404bfd6b1c49936db8899790dfe5cd21e1a72df18bb \
+ --hash=sha256:059a7b7cc0c7796c068e6ab07e522791c7addf3697616b2bcb73ed1d42a761aa \
+ --hash=sha256:08aed31f8164c7ec8ba6a449e6a18f4052bafe9dcaa2dcfd0e25fee9ddd94e36 \
+ --hash=sha256:1039316fc5899eee25df9302d81380e0be9a7fa0c10231322187b6d932b55a4a \
+ --hash=sha256:11765ee9c2ad162bc7f8ab9cf383a21349673034bfac9bf00d6b06e44d70a4c9 \
+ --hash=sha256:18a1440b01d87566a5c2bddd6a575180a3526ec9da5f7aa55769213153737d19 \
+ --hash=sha256:235a14f65fc453e6ffe1f4287d7eda832b6870f925adf9bf72a402b0417d2711 \
+ --hash=sha256:2601b320268a87a4a7accaf7c2e8fc99c568e13316903d2010eb09e0ff16b6a9 \
+ --hash=sha256:26232fe4442f89643b4206ded1be486a12fcf731d55c5e42ff86e2f2ba5e949a \
+ --hash=sha256:27567a8e8950ced08aa3c74da2ceeff1f433114064df15e9ed1ec981f30970af \
+ --hash=sha256:29414a4b49905c67b48c662f39894d7594be6e3a58b15d3e7eee3588188d5591 \
+ --hash=sha256:298a496ac0a7d06710e1ecc4df1f22b7384ca1a46d5295eb7b4445bbd15adb92 \
+ --hash=sha256:2d5abc72a7267de6a4e3aa7463e780ddfaac442ef3a385f9e1c60e7f32c0cc34 \
+ --hash=sha256:363f1be2314b1f9e26b5a3de45b59fd9a0a3289bf157be61bbed770643a46f1a \
+ --hash=sha256:37d423cb3a9fe4270ee2ad083d1bb62d6c4cc333dcb1197b024ee1ae7c5d6535 \
+ --hash=sha256:3fa3bd1d32faf6afdb877a1e1f65e33873d88d158a16f9e00830901519d428ca \
+ --hash=sha256:3fc5ba277a586a3fd97c56076d9bd84339ef8cef08f28527b2384d72f28df853 \
+ --hash=sha256:3ff16e08924f0c342a37b1b1762d8d1394c4cc3b29724e124af54edecbdbd820 \
+ --hash=sha256:405ece63330b113040ed5b2371ff6e026d53c9c706ca9c58baf57f322e192895 \
+ --hash=sha256:4241322c9022ad0f01e6049994c4eb95f35d8f64d2d7ab55f653d9e8bf51ba0f \
+ --hash=sha256:4261285399b27c36a7ff0eb13e4eebaab8dd814a9512b3cd1191552c0af799f8 \
+ --hash=sha256:4268b12a279c90450b39e062068ff4c878a6b9750d6ab52ade8285b1594b5d10 \
+ --hash=sha256:493956e76e2c6276d1e804ee723b23eaba30beca43fc0ddf3a093abc178af3f4 \
+ --hash=sha256:4ccf3ae61a63dec06f3cfb8521fd9c8e6391761d47a4df0164954690b7cc3fab \
+ --hash=sha256:511e5d23070c166427de24742771a6040eb5c787c51145dddcc7af4106ec8b08 \
+ --hash=sha256:5207026332ed08957a3bc1391eb9c8861a1882e1517887ef423cfd3afc30e947 \
+ --hash=sha256:52414fd15573475c8f79f90c3b7bbc37723e54f9671ba7d0e491887bcdeac7e7 \
+ --hash=sha256:52f0d96d738831c81127377920e86fc8cb14638df1ea8f37ea392b545f9f984c \
+ --hash=sha256:53d4ef171c77d4f0fd6278a0f1dab58562faa12cac3c5c9cc4cac4ba7e378f17 \
+ --hash=sha256:597077e4687d1ab2df13a6d46e33a09e6edcb985566717fe52bcb262f592754b \
+ --hash=sha256:5aa364e4ccda1af55784b6dd318954924870792f9fd336b941d9b2fd8a4311e0 \
+ --hash=sha256:5be36ef0f5649e47f53302dc5317445c2764870d6a0ab5317a79381ff5ddf2bb \
+ --hash=sha256:5c7785c04373d8d2844f6636d73c08384a587c098093a04166177fa45494d912 \
+ --hash=sha256:5dba7a60d6d340fd498f2a967c0a4c3aa7c4cab6ca7655cde0289cdc7bf3f747 \
+ --hash=sha256:5ecc678f562dd0cfe2406f0d5447e8200691509149c979334c2d0c26420d28ac \
+ --hash=sha256:5f410c0c28ec0d411d75f56327de35df15656bdc308648312c983a15ee84023b \
+ --hash=sha256:615d7de907919bda16e9cafc1fa74942354273c299bf07e3c0adb2420d6fad48 \
+ --hash=sha256:67fa17083d5fb6d883c91ae512f9aab093a8a73ed77eae07e963014774909e81 \
+ --hash=sha256:68e48a547b9a1fd64c648684cd375402ba521c2c4a724756a944ef4b88c3047c \
+ --hash=sha256:6c5519ff75e6001a62404b087774b517d669122b9b8b8ecf622f21e6d990700a \
+ --hash=sha256:73d7ae84293ea6986c168b0cf0d29cd3abf16cfef7375c33d423816ca0eebe48 \
+ --hash=sha256:73eec66265424a548119648a6f38b119a525a767a86dc397e001bfe70f518b91 \
+ --hash=sha256:76d7fd725dd7d7621f4202306ddb3f7a90ff3d1c511de9ea2c7ffa540169a7ca \
+ --hash=sha256:7cbcf88ddab9890a4942b52fff6c09d8b8aea59f4861b5d37e112a16a4218461 \
+ --hash=sha256:7cc903512d5d7cf3a30624dde8adc5ba4312732c931746f18641e0a5762646b3 \
+ --hash=sha256:86184796d384183da5e0068e6fb96b060fb437efc60ba264b125350e8c7f498c \
+ --hash=sha256:86427594ee1024d092a1482c33ed857b74d55418a4385495e1e2c60de8ca7572 \
+ --hash=sha256:8780b5a43a0cc861cafd78b9b2a9849648bb86d3cabe5e95d80350986ad7e801 \
+ --hash=sha256:883ec31db8ec790a3ce6f39988a983b2c2b49ab018ec0d5bad4a248c8171f90d \
+ --hash=sha256:8a2af61b5c3d9151b9320020499c3609651e24dd0c6178ec8f4826c78dbd5f42 \
+ --hash=sha256:93c7129f410f9f3215d01ae7737cfc9afa528264c53ba8ee9859a29f164069e0 \
+ --hash=sha256:98270ed60d0906a185dca185a9ce92fb97fbb68878a6cd76bd61994725727402 \
+ --hash=sha256:9992a5f0c90dfc21664d218cf016acc6d9ebeb2f97c57bb4aa4d063dcb2253b8 \
+ --hash=sha256:9c5baad750994681ebb8a92bd577a9be31de6e6f9cd391156bf595b91f719db2 \
+ --hash=sha256:a127e3eebfb638799cf35a8504174462cf45395825f1ae9d45a5c434490b1bcd \
+ --hash=sha256:a2ae28c5ad4abc1e638db5b39c454a03b25e966836cb3b7edbf398b34393d5ed \
+ --hash=sha256:a3edbb4373f20a5d62e33d8aad9d7f7ad40c2ccf8e41d0e2534f28c9a73d5613 \
+ --hash=sha256:a707aa9d0ad8fb2fcc074129652903801e5295e53c94d46fb66f46fe38ad8b19 \
+ --hash=sha256:a7e48ba7748c2090b58f911ea995b94ff590781e81d0a2e0fc8b583af4d26710 \
+ --hash=sha256:aacb972faffbc208ed7f52ed50dd6710f38175d3673861405e0e82fa12d57269 \
+ --hash=sha256:ad624e95f46d8fc6f82af2d372ad55ef218babc323aa14338df843d907d040cc \
+ --hash=sha256:b406bab536dde70b36a8e3e60d0b2f224b280281988d6b0a0c24e47bd71b2c18 \
+ --hash=sha256:b44bd2bfc4bf080421a9ebac5f12434b36494effaa0ca8593a3df4e77cc6620e \
+ --hash=sha256:b7a853063785e382d86eadea57363a0e2f04520d6ef948be88181df9e9ee5c0d \
+ --hash=sha256:bae9ff4146b84ef0d51e0940e310d034d1e6a6ce1879a03a891c541dce8b26f9 \
+ --hash=sha256:bbfbbff3e94b3a0be44e010b093af1ce0e29c7ed081d2a020496e863333f5c11 \
+ --hash=sha256:bd028e97d418f092e18d451a0a42bffaa849457662d66747a03332dfff6c39d9 \
+ --hash=sha256:bfc1a6b60bccee0f8b2edba893b9ad339e7607aee728f3bc4f75ba7d28185c7d \
+ --hash=sha256:c0a0ae5d8b6c39f53f3711b8bcdda0fe559f52c1789438b8399ea8a81b399dff \
+ --hash=sha256:c3140312ecb40456490d2afe24594bfc62a5a18de5344672ce6526e4c6e79e0e \
+ --hash=sha256:c70f85ab67754e2f28af6cb1f1db826b5ec735beca2fa021a79c14f9afbc6167 \
+ --hash=sha256:cd285b97204046e5c5018fa03752d243c6423df023963b52de39d4e90bb3024a \
+ --hash=sha256:cfe6454eb6d2a9b2bb5583b433048670f85f264e613d1f885251ce68070adad8 \
+ --hash=sha256:d45329585ad3e068b7878ba929032987c6a53f85a40bd859b9a1a16324236dd6 \
+ --hash=sha256:d587001ef30960eba6d4c9b1f6b03037480c1e4b277b305b5a2957a5eebe4f09 \
+ --hash=sha256:d5c3a3d12f9c1a4312562b03ccbbd29d0aa28bda999c4f7fa7763f011c9d3a11 \
+ --hash=sha256:dad3167eb1c8259afb183c3dddee070bc39c68857490ed61c5c90186ec380ab0 \
+ --hash=sha256:dea2583084f7d5e095676afc1cc6d342862911cd496095b636ef14ac74f14aa3 \
+ --hash=sha256:e2f867376a302d4770817f8caf1b1f22ac32a2a8a49629343391640054f8f7ab \
+ --hash=sha256:e5603cb20eeded143c5ff035978591b71bc0bc2c6cd9c2e6dfdaacdaab76907c \
+ --hash=sha256:e5661d8974b4128a847deb282dbe040e5eed5b91c56ed9d207623ea4db24abc5 \
+ --hash=sha256:e69ba62cbb74d2824cd49be9c2f592b306e5107d5005f0bb3b4d62c9b6ae7246 \
+ --hash=sha256:ec39c09c0bf850f01b15bbd18214a89b9730001fd1483de873f6b7dc73fb2316 \
+ --hash=sha256:f451948bfbdc9627318e3210683f7b8d4533d3174d7706ee94b6008c39e80753 \
+ --hash=sha256:f839cddd130d1073a151eb13d709b4449eb4eb2a29c0f38b8e1436fd57eb4a4b \
+ --hash=sha256:f9cc48c12556610d814e4b162123eee43a6048f032d3957554e664feb2f77504 \
+ --hash=sha256:fe5b7ed1768409933d4457b8bf8d2b2b1af77b7333a27bd418ea0510289d4763
+markdown-it-py==3.0.0 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \
--hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb
-markupsafe==2.1.5 ; python_version >= "3.12" and python_version < "4.0" \
+markdown==3.6 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:48f276f4d8cfb8ce6527c8f79e2ee29708508bf4d40aa410fbc3b4ee832c850f \
+ --hash=sha256:ed4f41f6daecbeeb96e576ce414c41d2d876daa9a16cb35fa8ed8c2ddfad0224
+markupsafe==2.1.5 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf \
--hash=sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff \
--hash=sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f \
@@ -466,7 +786,7 @@ markupsafe==2.1.5 ; python_version >= "3.12" and python_version < "4.0" \
--hash=sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab \
--hash=sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd \
--hash=sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68
-matplotlib==3.9.0 ; python_version >= "3.12" and python_version < "4.0" \
+matplotlib==3.9.0 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:063af8587fceeac13b0936c42a2b6c732c2ab1c98d38abc3337e430e1ff75e38 \
--hash=sha256:06a478f0d67636554fa78558cfbcd7b9dba85b51f5c3b5a0c9be49010cf5f321 \
--hash=sha256:0a490715b3b9984fa609116481b22178348c1a220a4499cda79132000a79b4db \
@@ -496,13 +816,65 @@ matplotlib==3.9.0 ; python_version >= "3.12" and python_version < "4.0" \
--hash=sha256:e6d29ea6c19e34b30fb7d88b7081f869a03014f66fe06d62cc77d5a6ea88ed7a \
--hash=sha256:eaf3978060a106fab40c328778b148f590e27f6fa3cd15a19d6892575bce387d \
--hash=sha256:fe428e191ea016bb278758c8ee82a8129c51d81d8c4bc0846c09e7e8e9057241
-mdurl==0.1.2 ; python_version >= "3.12" and python_version < "4.0" \
+mdurl==0.1.2 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \
--hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba
-nltk==3.8.1 ; python_version >= "3.12" and python_version < "4.0" \
- --hash=sha256:1834da3d0682cba4f2cede2f9aad6b0fafb6461ba451db0efb6f9c39798d64d3 \
- --hash=sha256:fd5c9109f976fa86bcadba8f91e47f5e9293bd034474752e92a520f81c93dda5
-numpy==1.26.4 ; python_version >= "3.12" and python_version < "4.0" \
+ml-dtypes==0.3.2 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:2c34f2ba9660b21fe1034b608308a01be82bbef2a92fb8199f24dc6bad0d5226 \
+ --hash=sha256:3a17ef2322e60858d93584e9c52a5be7dd6236b056b7fa1ec57f1bb6ba043e33 \
+ --hash=sha256:533059bc5f1764fac071ef54598db358c167c51a718f68f5bb55e3dee79d2967 \
+ --hash=sha256:6604877d567a29bfe7cc02969ae0f2425260e5335505cf5e7fefc3e5465f5655 \
+ --hash=sha256:6b35c4e8ca957c877ac35c79ffa77724ecc3702a1e4b18b08306c03feae597bb \
+ --hash=sha256:763697ab8a88d47443997a7cdf3aac7340049aed45f7521f6b0ec8a0594821fe \
+ --hash=sha256:7a4c3fcbf86fa52d0204f07cfd23947ef05b4ad743a1a988e163caa34a201e5e \
+ --hash=sha256:7afde548890a92b41c0fed3a6c525f1200a5727205f73dc21181a2726571bb53 \
+ --hash=sha256:7ba8e1fafc7fff3e643f453bffa7d082df1678a73286ce8187d3e825e776eb94 \
+ --hash=sha256:91f8783fd1f2c23fd3b9ee5ad66b785dafa58ba3cdb050c4458021fa4d1eb226 \
+ --hash=sha256:93b78f53431c93953f7850bb1b925a17f0ab5d97527e38a7e865b5b4bc5cfc18 \
+ --hash=sha256:961134ea44c7b8ca63eda902a44b58cd8bd670e21d62e255c81fba0a8e70d9b7 \
+ --hash=sha256:b89b194e9501a92d289c1ffd411380baf5daafb9818109a4f49b0a1b6dce4462 \
+ --hash=sha256:c7b3fb3d4f6b39bcd4f6c4b98f406291f0d681a895490ee29a0f95bab850d53c \
+ --hash=sha256:d1a746fe5fb9cd974a91070174258f0be129c592b93f9ce7df6cc336416c3fbd \
+ --hash=sha256:e8505946df1665db01332d885c2020b4cb9e84a8b1241eb4ba69d59591f65855 \
+ --hash=sha256:f47619d978ab1ae7dfdc4052ea97c636c6263e1f19bd1be0e42c346b98d15ff4
+murmurhash==1.0.10 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:0438f0cb44cf1cd26251f72c1428213c4197d40a4e3f48b1efc3aea12ce18517 \
+ --hash=sha256:16ef9f0855952493fe08929d23865425906a8c0c40607ac8a949a378652ba6a9 \
+ --hash=sha256:18b9d200a09d48ef67f6840b77c14f151f2b6c48fd69661eb75c7276ebdb146c \
+ --hash=sha256:1b64e5332932993fef598e78d633b1ba664789ab73032ed511f3dc615a631a1a \
+ --hash=sha256:1c9fbcd7646ad8ba67b895f71d361d232c6765754370ecea473dd97d77afe99f \
+ --hash=sha256:22e9926fdbec9d24ced9b0a42f0fee68c730438be3cfb00c2499fd495caec226 \
+ --hash=sha256:2cc3351ae92b89c2fcdc6e41ac6f17176dbd9b3554c96109fd0713695d8663e7 \
+ --hash=sha256:3310101004d9e2e0530c2fed30174448d998ffd1b50dcbfb7677e95db101aa4b \
+ --hash=sha256:3e90eef568adca5e17a91f96975e9a782ace3a617bbb3f8c8c2d917096e9bfeb \
+ --hash=sha256:4904f7e68674a64eb2b08823c72015a5e14653e0b4b109ea00c652a005a59bad \
+ --hash=sha256:5282aab1317804c6ebd6dd7f69f15ba9075aee671c44a34be2bde0f1b11ef88a \
+ --hash=sha256:54bfbfd68baa99717239b8844600db627f336a08b1caf4df89762999f681cdd1 \
+ --hash=sha256:55f4e4f9291a53c36070330950b472d72ba7d331e4ce3ce1ab349a4f458f7bc4 \
+ --hash=sha256:6559fef7c2e7349a42a63549067709b656d6d1580752bd76be1541d8b2d65718 \
+ --hash=sha256:6e2a38437a8497e082408aa015c6d90554b9e00c2c221fdfa79728a2d99a739e \
+ --hash=sha256:7024ab3498434f22f8e642ae31448322ad8228c65c8d9e5dc2d563d57c14c9b8 \
+ --hash=sha256:8b580b8503647de5dd7972746b7613ea586270f17ac92a44872a9b1b52c36d68 \
+ --hash=sha256:8bf49e3bb33febb7057ae3a5d284ef81243a1e55eaa62bdcd79007cddbdc0461 \
+ --hash=sha256:90ed37ee2cace9381b83d56068334f77e3e30bc521169a1f886a2a2800e965d6 \
+ --hash=sha256:96f0a070344d4802ea76a160e0d4c88b7dc10454d2426f48814482ba60b38b9e \
+ --hash=sha256:97e09d675de2359e586f09de1d0de1ab39f9911edffc65c9255fb5e04f7c1f85 \
+ --hash=sha256:9f61862060d677c84556610ac0300a0776cb13cb3155f5075ed97e80f86e55d9 \
+ --hash=sha256:a4209962b9f85de397c3203ea4b3a554da01ae9fd220fdab38757d4e9eba8d1a \
+ --hash=sha256:a99dedfb7f0cc5a4cd76eb409ee98d3d50eba024f934e705914f6f4d765aef2c \
+ --hash=sha256:b3b6d2d877d8881a08be66d906856d05944be0faf22b9a0390338bcf45299989 \
+ --hash=sha256:c65401a6f1778676253cbf89c1f45a8a7feb7d73038e483925df7d5943c08ed9 \
+ --hash=sha256:d75840212bf75eb1352c946c3cf1622dacddd6d6bdda34368237d1eb3568f23a \
+ --hash=sha256:d8f54b0031d8696fed17ed6e9628f339cdea0ba2367ca051e18ff59193f52687 \
+ --hash=sha256:db1171a3f9a10571931764cdbfaa5371f4cf5c23c680639762125cb075b833a5 \
+ --hash=sha256:e5d7cfe392c0a28129226271008e61e77bf307afc24abf34f386771daa7b28b0 \
+ --hash=sha256:f1605fde07030516eb63d77a598dd164fb9bf217fd937dbac588fe7e47a28c40 \
+ --hash=sha256:f23f2dfc7174de2cdc5007c0771ab8376a2a3f48247f32cac4a5563e40c6adcc \
+ --hash=sha256:f8ecb00cc1ab57e4b065f9fb3ea923b55160c402d959c69a0b6dbbe8bc73efc3
+namex==0.0.8 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:32a50f6c565c0bb10aa76298c959507abdc0e850efe085dc38f3440fcb3aa90b \
+ --hash=sha256:7ddb6c2bb0e753a311b7590f84f6da659dd0c05e65cb89d519d54c0a250c0487
+numpy==1.26.4 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b \
--hash=sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818 \
--hash=sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20 \
@@ -539,7 +911,95 @@ numpy==1.26.4 ; python_version >= "3.12" and python_version < "4.0" \
--hash=sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef \
--hash=sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3 \
--hash=sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f
-orjson==3.10.3 ; python_version >= "3.12" and python_version < "4.0" \
+nvidia-cublas-cu12==12.3.4.1 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:90e0344a0d96c72b6ee0ebec2b1447e552217131914aa678fff1603701005f3a \
+ --hash=sha256:9b25b27bd5a5be1cc7e83a7b8004258daa338800798e22986e5b67ee06f0859d \
+ --hash=sha256:d907eeefc5bab70c59454fe04c4c0f01928f667a94ad5ad4fb88a3f2b9920a88
+nvidia-cuda-cupti-cu12==12.3.101 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:735e3c5b0db489ff1277aacf19f17fc61c89dfd4d95c9f31f75a32550888c2eb \
+ --hash=sha256:7b984288af7db1faa1e6f1803db075d4350116b72a98d4be0e88d604dc812c0e \
+ --hash=sha256:a6576988a2496e95b7194f3c0cfd152cc76afaf611582e430d9a0093ca9aa91c
+nvidia-cuda-nvcc-cu12==12.3.107 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:35de71d29aef2e8699f083e5ef604155a8e1ada614d3ccba796303e8d2252c61 \
+ --hash=sha256:752f661c6ebf32bfb7e995f353a8de94c099ce6d2a8f2d747051d7e3806d9024 \
+ --hash=sha256:a3344b94f5e89023fa17e0bbf8fb0dd26d5ef6f4091a5aab08f215e4999eac62
+nvidia-cuda-nvrtc-cu12==12.3.107 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:048f0526521bcff2e8fda76d3f0b5284a24065f96096ad3f8f300ad970d7eae0 \
+ --hash=sha256:3971fca7d5eb4b102dabcae377959bbdb281b77d40361839f3ce254a1b0e6fcc \
+ --hash=sha256:4db66788a37a234304a0b3203744f9a6c665f48bde65f69a096ae3b5799b5b1d
+nvidia-cuda-runtime-cu12==12.3.101 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:04604679ddca6acb96c76a7a9306282cddc16981f92e148e2dfe227078883cda \
+ --hash=sha256:8a91b2284458643233097d10887b93dc4e8085d49228e228db698ec4bcf5ac3f \
+ --hash=sha256:fbbfb8f2b933cfbd33461cc5401cbeafb8b0a05cc18ec8070c10352c9b1b0d57
+nvidia-cudnn-cu12==8.9.7.29 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:4447321a2bdc8bd965084c1824575eb04f47a03ab62bbeb6cce7e9f74c3657f3 \
+ --hash=sha256:adf4f59ed7a1341103822ed8df6e144f4d47ea8b10d9bf0ea0047ba738fd7b02
+nvidia-cufft-cu12==11.0.12.1 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:1a2515a3f57ca9b05b8518f2172f446d19d1a1a5b5bdf03c2fa71961210daa3f \
+ --hash=sha256:3b2c85d24d7dcc578720fdf39e2823950b5857e85164c3c1dc97184a8a8e0398 \
+ --hash=sha256:f3c4ea318156899a1c14e16cceeb5ba204c4e57886dc018812d0f23664e753e2
+nvidia-curand-cu12==10.3.4.107 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:76eb6bcf8e1278150d5e22c88f60c5262baab679d1cae4b68abfdc85ed9c6892 \
+ --hash=sha256:d798db82ae445cf1d8bf6af9ca3bd6bb6cc87753c229a441cf8d2597b09332e5 \
+ --hash=sha256:ecdde1b11d20c07e5188ddc4d4fdd8a93254e59c4e5366a7fa34de50143e0cb9
+nvidia-cusolver-cu12==11.5.4.101 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:2c0b27909d7ca7eeffa9c67f88750093b98d540efacc2f709f42da253a676144 \
+ --hash=sha256:783a3279553feaf8e47af12cab1fa769ffd5e644ea876db3dc2252f35f9bf256 \
+ --hash=sha256:934511477d963cfd3a793bd43ac2823a753e542b2f884d7c34065068905eab40
+nvidia-cusparse-cu12==12.2.0.103 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:4a37a132497cb9c9a9aa9c7324c1dc63d564f257a93ed23ac250ebb0d050f408 \
+ --hash=sha256:bb1838a4af1b05108b6c37d52994a25fc1dd4746fd85dd6858d50dff431719be \
+ --hash=sha256:fe9e17daf406c98c28fbc8bcf785ecd4db301bf02ce626de6aa1046de66f84bd
+nvidia-nccl-cu12==2.19.3 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:a9734707a2c96443331c1e48c717024aa6678a0e2a4cb66b2c364d18cee6b48d
+nvidia-nvjitlink-cu12==12.3.101 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:1b2e317e437433753530792f13eece58f0aec21a2b05903be7bffe58a606cbd1 \
+ --hash=sha256:211a63e7b30a9d62f1a853e19928fbb1a750e3f17a13a3d1f98ff0ced19478dd \
+ --hash=sha256:64335a8088e2b9d196ae8665430bc6a2b7e6ef2eb877a9c735c804bd4ff6467c
+opt-einsum==3.3.0 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:2455e59e3947d3c275477df7f5205b30635e266fe6dc300e3d9f9646bfcea147 \
+ --hash=sha256:59f6475f77bbc37dcf7cd748519c0ec60722e91e63ca114e68821c0c54a46549
+optree==0.11.0 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:00a63f10d4a476e8e9aa2988daba9b2e88cb369c5aacc12545957d7d00bcd1a7 \
+ --hash=sha256:0db6968394096223881053dffdcaf2b8e220fd85db904f14aa931e4dc422c046 \
+ --hash=sha256:0df9a3923725aabb112ec7f10c74fa96b6c640da1cd30e7bc62fd4b03ef02875 \
+ --hash=sha256:162ed3ff2eb3f1c358e131e72c025f2b93d69b906e9057a811d014032ec71dc8 \
+ --hash=sha256:228b97e8c991739b10c8548c118747ba32ee765f88236342e492bf9648afc0bc \
+ --hash=sha256:234a4f8f97a1217f13390df7ac416771689749d9a1c8eda31bf8622cd333219e \
+ --hash=sha256:26b1230f9b75b579923a4f837c7c13db8b8d815cf68ce5af31dda5d818a877b2 \
+ --hash=sha256:2b3bb59324d635f2015bb3e237fd772b1fd548eee6cc80e008fbe0f092e9228d \
+ --hash=sha256:2bc08fb9691f43afc3a01119dead6b823ce3d7239e42fc3e47d4028eed50a6a2 \
+ --hash=sha256:31d444684ebd8c9f09a3d806fb3277843138ef9952b7a2954908e440e3b22519 \
+ --hash=sha256:39bed744a61e2f795e172d2853779ac59b8dea236982dc160ea22063afc99ca3 \
+ --hash=sha256:3cdc9fac9888d9eff11128ccfc4d4c10309163e372f312f7942ecee8df3d7824 \
+ --hash=sha256:4144126dd3c2ece2d2dd1d5e0b39fb91adf1c46f660c2c5a2df7f80666989d5d \
+ --hash=sha256:418850ceff364f51a6d81f32a1efd06a4e2d8df79a162e892685bc20c0aedd72 \
+ --hash=sha256:5e250144eacdd5813dec0b18d91df0229197e3be402db42fd8e254ec90ea343d \
+ --hash=sha256:5e5df0e8aaca124cc1ffca311786cc909810f3c046de090729cdafbf910082f8 \
+ --hash=sha256:63e020a34b7168b5d0701a265c7c95b07984ff699d4894b20fa601282be88f20 \
+ --hash=sha256:64c2e00fe508f50a42c50838df0d1f5be0dce5b4bef2373db8ad72b860211015 \
+ --hash=sha256:6a406eee5acd3fd4875fa44c3972d29ae6d4329e7296e9219986fe6ff8e92ea0 \
+ --hash=sha256:6cdd625dab2dff5374ff9c6792e8702fced8f0ea713ce959fc8f95499b5ecb2f \
+ --hash=sha256:6e8c3757088cd7fce666f2a5e031b65d7898e210452380d2657c0fc0a7ec9932 \
+ --hash=sha256:738e8bf4158e9c11cd051d89c2e453aeacf80ff8719ebc3251069015646554d0 \
+ --hash=sha256:8e6a46e95c3ea8546055087d6fe52a1dcd56de5182365f1469106cc72cdf3307 \
+ --hash=sha256:979ffc2b96f16595c219fb7a89597dd2fa00ac47a3b411fdcf8ae6821da52290 \
+ --hash=sha256:9bf322ad14f907ad4660ca286e731e750546d54934a94cc5ba7efe8860c60ab4 \
+ --hash=sha256:9d9d644e5448db9f32e2497487aca3bb2d3f92cbb50429a411ccda3f1f0968f3 \
+ --hash=sha256:a5f37bcfe4e363e3bb8d36c5698fb829546956b2fe88951994387162a1859625 \
+ --hash=sha256:a64df43fce2d8eeafd7db6e27447c56b3fa64842df847819684b3b1cc254c016 \
+ --hash=sha256:a91840f9d45e7c01f151ba1815ae32b4c3c21e4290298772ee4b13314f729856 \
+ --hash=sha256:b201a9405e250cf5770955863af2a236e382bdf5e4e086897ff03c41418c39da \
+ --hash=sha256:b26ac807d8993b7e43081b4b7bbb0378b4e5f3e6525daf923c470bc176cc3327 \
+ --hash=sha256:b8126d81ecb2c9e3554420834014ba343251f564c905ee3bef09d205b924b0c0 \
+ --hash=sha256:b9d236bc1491a5e366921b95fecc05aa6ff55989a81f2242cd11121b82c24503 \
+ --hash=sha256:bc17f9d085cd75a2de4f299a9c5e3c3520138eac7596061e581230b03862b44d \
+ --hash=sha256:d666099a78f7bf31bf3a520d6871ddcae65484bcff095fc4271a391553b09c75 \
+ --hash=sha256:e2d47bd28eff690eb2f7432e490265a291b04d6d346cf7b586491b2e2337bf97 \
+ --hash=sha256:ee208f0bec6436085a9fa3ae98af54bfcb8822086894fc1ade283e80a6f11fd7 \
+ --hash=sha256:f53951bfb640417558568284a8949d67bcdbf21fa0113107e20bd9403aa20b2b \
+ --hash=sha256:fa9ed745d4cbac5e15df70339b30867ba033542b87f7b734f4cacae5ec73ba00
+orjson==3.10.3 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:0943a96b3fa09bee1afdfccc2cb236c9c64715afa375b2af296c73d91c23eab2 \
--hash=sha256:0a62f9968bab8a676a164263e485f30a0b748255ee2f4ae49a0224be95f4532b \
--hash=sha256:16bda83b5c61586f6f788333d3cf3ed19015e3b9019188c56983b5a299210eb5 \
@@ -586,10 +1046,10 @@ orjson==3.10.3 ; python_version >= "3.12" and python_version < "4.0" \
--hash=sha256:cf20465e74c6e17a104ecf01bf8cd3b7b252565b4ccee4548f18b012ff2f8069 \
--hash=sha256:d4a654ec1de8fdaae1d80d55cee65893cb06494e124681ab335218be6a0691e7 \
--hash=sha256:e852baafceff8da3c9defae29414cc8513a1586ad93e45f27b89a639c68e8176
-packaging==24.0 ; python_version >= "3.12" and python_version < "4.0" \
+packaging==24.0 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5 \
--hash=sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9
-pandas==2.2.2 ; python_version >= "3.12" and python_version < "4.0" \
+pandas==2.2.2 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:001910ad31abc7bf06f49dcc903755d2f7f3a9186c0c040b827e522e9cef0863 \
--hash=sha256:0ca6377b8fca51815f382bd0b697a0814c8bda55115678cbc94c30aacbb6eff2 \
--hash=sha256:0cace394b6ea70c01ca1595f839cf193df35d1575986e484ad35c4aeae7266c1 \
@@ -617,7 +1077,7 @@ pandas==2.2.2 ; python_version >= "3.12" and python_version < "4.0" \
--hash=sha256:ddf818e4e6c7c6f4f7c8a12709696d193976b591cc7dc50588d3d1a6b5dc8772 \
--hash=sha256:e9b79011ff7a0f4b1d6da6a61aa1aa604fb312d6647de5bad20013682d1429ce \
--hash=sha256:eee3a87076c0756de40b05c5e9a6069c035ba43e8dd71c379e68cab2c20f16ad
-pillow==10.3.0 ; python_version >= "3.12" and python_version < "4.0" \
+pillow==10.3.0 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:048ad577748b9fa4a99a0548c64f2cb8d672d5bf2e643a739ac8faff1164238c \
--hash=sha256:048eeade4c33fdf7e08da40ef402e748df113fd0b4584e32c4af74fe78baaeb2 \
--hash=sha256:0ba26351b137ca4e0db0342d5d00d2e355eb29372c05afd544ebf47c0956ffeb \
@@ -687,111 +1147,154 @@ pillow==10.3.0 ; python_version >= "3.12" and python_version < "4.0" \
--hash=sha256:f0d0591a0aeaefdaf9a5e545e7485f89910c977087e7de2b6c388aec32011e9f \
--hash=sha256:fdcbb4068117dfd9ce0138d068ac512843c52295ed996ae6dd1faf537b6dbc27 \
--hash=sha256:ff61bfd9253c3915e6d41c651d5f962da23eda633cf02262990094a18a55371a
-pydantic-core==2.18.2 ; python_version >= "3.12" and python_version < "4.0" \
- --hash=sha256:0098300eebb1c837271d3d1a2cd2911e7c11b396eac9661655ee524a7f10587b \
- --hash=sha256:042473b6280246b1dbf530559246f6842b56119c2926d1e52b631bdc46075f2a \
- --hash=sha256:05b7133a6e6aeb8df37d6f413f7705a37ab4031597f64ab56384c94d98fa0e90 \
- --hash=sha256:0680b1f1f11fda801397de52c36ce38ef1c1dc841a0927a94f226dea29c3ae3d \
- --hash=sha256:0d69b4c2f6bb3e130dba60d34c0845ba31b69babdd3f78f7c0c8fae5021a253e \
- --hash=sha256:1404c69d6a676245199767ba4f633cce5f4ad4181f9d0ccb0577e1f66cf4c46d \
- --hash=sha256:182245ff6b0039e82b6bb585ed55a64d7c81c560715d1bad0cbad6dfa07b4027 \
- --hash=sha256:1a388a77e629b9ec814c1b1e6b3b595fe521d2cdc625fcca26fbc2d44c816804 \
- --hash=sha256:1d90c3265ae107f91a4f279f4d6f6f1d4907ac76c6868b27dc7fb33688cfb347 \
- --hash=sha256:20aca1e2298c56ececfd8ed159ae4dde2df0781988c97ef77d5c16ff4bd5b400 \
- --hash=sha256:219da3f096d50a157f33645a1cf31c0ad1fe829a92181dd1311022f986e5fbe3 \
- --hash=sha256:22057013c8c1e272eb8d0eebc796701167d8377441ec894a8fed1af64a0bf399 \
- --hash=sha256:223ee893d77a310a0391dca6df00f70bbc2f36a71a895cecd9a0e762dc37b349 \
- --hash=sha256:224c421235f6102e8737032483f43c1a8cfb1d2f45740c44166219599358c2cd \
- --hash=sha256:2334ce8c673ee93a1d6a65bd90327588387ba073c17e61bf19b4fd97d688d63c \
- --hash=sha256:269322dcc3d8bdb69f054681edff86276b2ff972447863cf34c8b860f5188e2e \
- --hash=sha256:2728b01246a3bba6de144f9e3115b532ee44bd6cf39795194fb75491824a1413 \
- --hash=sha256:2b8ed04b3582771764538f7ee7001b02e1170223cf9b75dff0bc698fadb00cf3 \
- --hash=sha256:2e29d20810dfc3043ee13ac7d9e25105799817683348823f305ab3f349b9386e \
- --hash=sha256:36789b70d613fbac0a25bb07ab3d9dba4d2e38af609c020cf4d888d165ee0bf3 \
- --hash=sha256:390193c770399861d8df9670fb0d1874f330c79caaca4642332df7c682bf6b91 \
- --hash=sha256:3a6515ebc6e69d85502b4951d89131ca4e036078ea35533bb76327f8424531ce \
- --hash=sha256:3f9a801e7c8f1ef8718da265bba008fa121243dfe37c1cea17840b0944dfd72c \
- --hash=sha256:43f0f463cf89ace478de71a318b1b4f05ebc456a9b9300d027b4b57c1a2064fb \
- --hash=sha256:4456f2dca97c425231d7315737d45239b2b51a50dc2b6f0c2bb181fce6207664 \
- --hash=sha256:470b94480bb5ee929f5acba6995251ada5e059a5ef3e0dfc63cca287283ebfa6 \
- --hash=sha256:4774f3184d2ef3e14e8693194f661dea5a4d6ca4e3dc8e39786d33a94865cefd \
- --hash=sha256:4b4356d3538c3649337df4074e81b85f0616b79731fe22dd11b99499b2ebbdf3 \
- --hash=sha256:553ef617b6836fc7e4df130bb851e32fe357ce36336d897fd6646d6058d980af \
- --hash=sha256:6132dd3bd52838acddca05a72aafb6eab6536aa145e923bb50f45e78b7251043 \
- --hash=sha256:6a46e22a707e7ad4484ac9ee9f290f9d501df45954184e23fc29408dfad61350 \
- --hash=sha256:6e5c584d357c4e2baf0ff7baf44f4994be121e16a2c88918a5817331fc7599d7 \
- --hash=sha256:75250dbc5290e3f1a0f4618db35e51a165186f9034eff158f3d490b3fed9f8a0 \
- --hash=sha256:75f7e9488238e920ab6204399ded280dc4c307d034f3924cd7f90a38b1829563 \
- --hash=sha256:78363590ef93d5d226ba21a90a03ea89a20738ee5b7da83d771d283fd8a56761 \
- --hash=sha256:7ca4ae5a27ad7a4ee5170aebce1574b375de390bc01284f87b18d43a3984df72 \
- --hash=sha256:800d60565aec896f25bc3cfa56d2277d52d5182af08162f7954f938c06dc4ee3 \
- --hash=sha256:82d5d4d78e4448683cb467897fe24e2b74bb7b973a541ea1dcfec1d3cbce39fb \
- --hash=sha256:852e966fbd035a6468fc0a3496589b45e2208ec7ca95c26470a54daed82a0788 \
- --hash=sha256:868649da93e5a3d5eacc2b5b3b9235c98ccdbfd443832f31e075f54419e1b96b \
- --hash=sha256:886eec03591b7cf058467a70a87733b35f44707bd86cf64a615584fd72488b7c \
- --hash=sha256:8b172601454f2d7701121bbec3425dd71efcb787a027edf49724c9cefc14c038 \
- --hash=sha256:95b9d5e72481d3780ba3442eac863eae92ae43a5f3adb5b4d0a1de89d42bb250 \
- --hash=sha256:98758d627ff397e752bc339272c14c98199c613f922d4a384ddc07526c86a2ec \
- --hash=sha256:997abc4df705d1295a42f95b4eec4950a37ad8ae46d913caeee117b6b198811c \
- --hash=sha256:9b5155ff768083cb1d62f3e143b49a8a3432e6789a3abee8acd005c3c7af1c74 \
- --hash=sha256:9e08e867b306f525802df7cd16c44ff5ebbe747ff0ca6cf3fde7f36c05a59a81 \
- --hash=sha256:9fdad8e35f278b2c3eb77cbdc5c0a49dada440657bf738d6905ce106dc1de439 \
- --hash=sha256:a1874c6dd4113308bd0eb568418e6114b252afe44319ead2b4081e9b9521fe75 \
- --hash=sha256:a8309f67285bdfe65c372ea3722b7a5642680f3dba538566340a9d36e920b5f0 \
- --hash=sha256:ae0a8a797a5e56c053610fa7be147993fe50960fa43609ff2a9552b0e07013e8 \
- --hash=sha256:b14d82cdb934e99dda6d9d60dc84a24379820176cc4a0d123f88df319ae9c150 \
- --hash=sha256:b1bd7e47b1558ea872bd16c8502c414f9e90dcf12f1395129d7bb42a09a95438 \
- --hash=sha256:b3ef08e20ec49e02d5c6717a91bb5af9b20f1805583cb0adfe9ba2c6b505b5ae \
- --hash=sha256:b89ed9eb7d616ef5714e5590e6cf7f23b02d0d539767d33561e3675d6f9e3857 \
- --hash=sha256:c4fcf5cd9c4b655ad666ca332b9a081112cd7a58a8b5a6ca7a3104bc950f2038 \
- --hash=sha256:c6fdc8627910eed0c01aed6a390a252fe3ea6d472ee70fdde56273f198938374 \
- --hash=sha256:c9bd70772c720142be1020eac55f8143a34ec9f82d75a8e7a07852023e46617f \
- --hash=sha256:ca7b0c1f1c983e064caa85f3792dd2fe3526b3505378874afa84baf662e12241 \
- --hash=sha256:cbca948f2d14b09d20268cda7b0367723d79063f26c4ffc523af9042cad95592 \
- --hash=sha256:cc1cfd88a64e012b74e94cd00bbe0f9c6df57049c97f02bb07d39e9c852e19a4 \
- --hash=sha256:ccdd111c03bfd3666bd2472b674c6899550e09e9f298954cfc896ab92b5b0e6d \
- --hash=sha256:cfeecd1ac6cc1fb2692c3d5110781c965aabd4ec5d32799773ca7b1456ac636b \
- --hash=sha256:d4d938ec0adf5167cb335acb25a4ee69a8107e4984f8fbd2e897021d9e4ca21b \
- --hash=sha256:d7d904828195733c183d20a54230c0df0eb46ec746ea1a666730787353e87182 \
- --hash=sha256:d91cb5ea8b11607cc757675051f61b3d93f15eca3cefb3e6c704a5d6e8440f4e \
- --hash=sha256:d9319e499827271b09b4e411905b24a426b8fb69464dfa1696258f53a3334641 \
- --hash=sha256:e0e8b1be28239fc64a88a8189d1df7fad8be8c1ae47fcc33e43d4be15f99cc70 \
- --hash=sha256:e18609ceaa6eed63753037fc06ebb16041d17d28199ae5aba0052c51449650a9 \
- --hash=sha256:e1b395e58b10b73b07b7cf740d728dd4ff9365ac46c18751bf8b3d8cca8f625a \
- --hash=sha256:e23ec367a948b6d812301afc1b13f8094ab7b2c280af66ef450efc357d2ae543 \
- --hash=sha256:e25add29b8f3b233ae90ccef2d902d0ae0432eb0d45370fe315d1a5cf231004b \
- --hash=sha256:e6dac87ddb34aaec85f873d737e9d06a3555a1cc1a8e0c44b7f8d5daeb89d86f \
- --hash=sha256:ef26c9e94a8c04a1b2924149a9cb081836913818e55681722d7f29af88fe7b38 \
- --hash=sha256:eff2de745698eb46eeb51193a9f41d67d834d50e424aef27df2fcdee1b153845 \
- --hash=sha256:f0a21cbaa69900cbe1a2e7cad2aa74ac3cf21b10c3efb0fa0b80305274c0e8a2 \
- --hash=sha256:f459a5ce8434614dfd39bbebf1041952ae01da6bed9855008cb33b875cb024c0 \
- --hash=sha256:f93a8a2e3938ff656a7c1bc57193b1319960ac015b6e87d76c76bf14fe0244b4 \
- --hash=sha256:fb2bd7be70c0fe4dfd32c951bc813d9fe6ebcbfdd15a07527796c8204bd36242
-pydantic==2.7.1 ; python_version >= "3.12" and python_version < "4.0" \
- --hash=sha256:e029badca45266732a9a79898a15ae2e8b14840b1eabbb25844be28f0b33f3d5 \
- --hash=sha256:e9dbb5eada8abe4d9ae5f46b9939aead650cd2b68f249bb3a8139dbe125803cc
-pydub==0.25.1 ; python_version >= "3.12" and python_version < "4.0" \
+preshed==3.0.9 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:0de63a560f10107a3f0a9e252cc3183b8fdedcb5f81a86938fd9f1dcf8a64adf \
+ --hash=sha256:182138033c0730c683a6d97e567ceb8a3e83f3bff5704f300d582238dbd384b3 \
+ --hash=sha256:1fa6d3d5529b08296ff9b7b4da1485c080311fd8744bbf3a86019ff88007b382 \
+ --hash=sha256:23906d114fc97c17c5f8433342495d7562e96ecfd871289c2bb2ed9a9df57c3f \
+ --hash=sha256:24229c77364628743bc29c5620c5d6607ed104f0e02ae31f8a030f99a78a5ceb \
+ --hash=sha256:2d473c5f6856e07a88d41fe00bb6c206ecf7b34c381d30de0b818ba2ebaf9406 \
+ --hash=sha256:3452b64d97ce630e200c415073040aa494ceec6b7038f7a2a3400cbd7858e952 \
+ --hash=sha256:345a10be3b86bcc6c0591d343a6dc2bfd86aa6838c30ced4256dfcfa836c3a64 \
+ --hash=sha256:3a9ad9f738084e048a7c94c90f40f727217387115b2c9a95c77f0ce943879fcd \
+ --hash=sha256:4a55091d0e395f1fdb62ab43401bb9f8b46c7d7794d5b071813c29dc1ab22fd0 \
+ --hash=sha256:4f96ef4caf9847b2bb9868574dcbe2496f974e41c2b83d6621c24fb4c3fc57e3 \
+ --hash=sha256:51d0192274aa061699b284f9fd08416065348edbafd64840c3889617ee1609de \
+ --hash=sha256:5cb90ecd5bec71c21d95962db1a7922364d6db2abe284a8c4b196df8bbcc871e \
+ --hash=sha256:721863c5244ffcd2651ad0928951a2c7c77b102f4e11a251ad85d37ee7621660 \
+ --hash=sha256:778cf71f82cedd2719b256f3980d556d6fb56ec552334ba79b49d16e26e854a0 \
+ --hash=sha256:78590a4a952747c3766e605ce8b747741005bdb1a5aa691a18aae67b09ece0e6 \
+ --hash=sha256:7de8f5138bcac7870424e09684dc3dd33c8e30e81b269f6c9ede3d8c7bb8e257 \
+ --hash=sha256:7fe81eb21c7d99e8b9a802cc313b998c5f791bda592903c732b607f78a6b7dc4 \
+ --hash=sha256:96b857d7a62cbccc3845ac8c41fd23addf052821be4eb987f2eb0da3d8745aa1 \
+ --hash=sha256:99499e8a58f58949d3f591295a97bca4e197066049c96f5d34944dd21a497193 \
+ --hash=sha256:a61302cf8bd30568631adcdaf9e6b21d40491bd89ba8ebf67324f98b6c2a2c05 \
+ --hash=sha256:a671dfa30b67baa09391faf90408b69c8a9a7f81cb9d83d16c39a182355fbfce \
+ --hash=sha256:a6e579439b329eb93f32219ff27cb358b55fbb52a4862c31a915a098c8a22ac2 \
+ --hash=sha256:ac970d97b905e9e817ec13d31befd5b07c9cfec046de73b551d11a6375834b79 \
+ --hash=sha256:b4fe6720012c62e6d550d6a5c1c7ad88cacef8388d186dad4bafea4140d9d198 \
+ --hash=sha256:b73b0f7ecc58095ebbc6ca26ec806008ef780190fe685ce471b550e7eef58dc2 \
+ --hash=sha256:bfd523085a84b1338ff18f61538e1cfcdedc4b9e76002589a301c364d19a2e36 \
+ --hash=sha256:e04f05758875be9751e483bd3c519c22b00d3b07f5a64441ec328bb9e3c03700 \
+ --hash=sha256:e304a0a8c9d625b70ba850c59d4e67082a6be9c16c4517b97850a17a282ebee6 \
+ --hash=sha256:e7c2364da27f2875524ce1ca754dc071515a9ad26eb5def4c7e69129a13c9a59 \
+ --hash=sha256:ea6b6566997dc3acd8c6ee11a89539ac85c77275b4dcefb2dc746d11053a5af8 \
+ --hash=sha256:eebaa96ece6641cd981491cba995b68c249e0b6877c84af74971eacf8990aa19 \
+ --hash=sha256:ef1e5173809d85edd420fc79563b286b88b4049746b797845ba672cf9435c0e7
+protobuf==4.25.3 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:19b270aeaa0099f16d3ca02628546b8baefe2955bbe23224aaf856134eccf1e4 \
+ --hash=sha256:209ba4cc916bab46f64e56b85b090607a676f66b473e6b762e6f1d9d591eb2e8 \
+ --hash=sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c \
+ --hash=sha256:7c8daa26095f82482307bc717364e7c13f4f1c99659be82890dcfc215194554d \
+ --hash=sha256:c053062984e61144385022e53678fbded7aea14ebb3e0305ae3592fb219ccfa4 \
+ --hash=sha256:d4198877797a83cbfe9bffa3803602bbe1625dc30d8a097365dbc762e5790faa \
+ --hash=sha256:e3c97a1555fd6388f857770ff8b9703083de6bf1f9274a002a332d65fbb56c8c \
+ --hash=sha256:e7cb0ae90dd83727f0c0718634ed56837bfeeee29a5f82a7514c03ee1364c019 \
+ --hash=sha256:f0700d54bcf45424477e46a9f0944155b46fb0639d69728739c0e47bab83f2b9 \
+ --hash=sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c \
+ --hash=sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2
+pydantic-core==2.18.3 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:0bee9bb305a562f8b9271855afb6ce00223f545de3d68560b3c1649c7c5295e9 \
+ --hash=sha256:0ecce4b2360aa3f008da3327d652e74a0e743908eac306198b47e1c58b03dd2b \
+ --hash=sha256:17954d784bf8abfc0ec2a633108207ebc4fa2df1a0e4c0c3ccbaa9bb01d2c426 \
+ --hash=sha256:19d2e725de0f90d8671f89e420d36c3dd97639b98145e42fcc0e1f6d492a46dc \
+ --hash=sha256:1f9cd7f5635b719939019be9bda47ecb56e165e51dd26c9a217a433e3d0d59a9 \
+ --hash=sha256:200ad4e3133cb99ed82342a101a5abf3d924722e71cd581cc113fe828f727fbc \
+ --hash=sha256:24b214b7ee3bd3b865e963dbed0f8bc5375f49449d70e8d407b567af3222aae4 \
+ --hash=sha256:2c44efdd3b6125419c28821590d7ec891c9cb0dff33a7a78d9d5c8b6f66b9702 \
+ --hash=sha256:2c8333f6e934733483c7eddffdb094c143b9463d2af7e6bd85ebcb2d4a1b82c6 \
+ --hash=sha256:2f7ef5f0ebb77ba24c9970da18b771711edc5feaf00c10b18461e0f5f5949231 \
+ --hash=sha256:304378b7bf92206036c8ddd83a2ba7b7d1a5b425acafff637172a3aa72ad7083 \
+ --hash=sha256:370059b7883485c9edb9655355ff46d912f4b03b009d929220d9294c7fd9fd60 \
+ --hash=sha256:37b40c05ced1ba4218b14986fe6f283d22e1ae2ff4c8e28881a70fb81fbfcda7 \
+ --hash=sha256:3d3e42bb54e7e9d72c13ce112e02eb1b3b55681ee948d748842171201a03a98a \
+ --hash=sha256:3fc1c7f67f34c6c2ef9c213e0f2a351797cda98249d9ca56a70ce4ebcaba45f4 \
+ --hash=sha256:41dbdcb0c7252b58fa931fec47937edb422c9cb22528f41cb8963665c372caf6 \
+ --hash=sha256:432e999088d85c8f36b9a3f769a8e2b57aabd817bbb729a90d1fe7f18f6f1f39 \
+ --hash=sha256:45e4ffbae34f7ae30d0047697e724e534a7ec0a82ef9994b7913a412c21462a0 \
+ --hash=sha256:4afa5f5973e8572b5c0dcb4e2d4fda7890e7cd63329bd5cc3263a25c92ef0026 \
+ --hash=sha256:544a9a75622357076efb6b311983ff190fbfb3c12fc3a853122b34d3d358126c \
+ --hash=sha256:5560dda746c44b48bf82b3d191d74fe8efc5686a9ef18e69bdabccbbb9ad9442 \
+ --hash=sha256:58ff8631dbab6c7c982e6425da8347108449321f61fe427c52ddfadd66642af7 \
+ --hash=sha256:5a64faeedfd8254f05f5cf6fc755023a7e1606af3959cfc1a9285744cc711044 \
+ --hash=sha256:60e4c625e6f7155d7d0dcac151edf5858102bc61bf959d04469ca6ee4e8381bd \
+ --hash=sha256:616221a6d473c5b9aa83fa8982745441f6a4a62a66436be9445c65f241b86c94 \
+ --hash=sha256:63081a49dddc6124754b32a3774331467bfc3d2bd5ff8f10df36a95602560361 \
+ --hash=sha256:666e45cf071669fde468886654742fa10b0e74cd0fa0430a46ba6056b24fb0af \
+ --hash=sha256:67bc078025d70ec5aefe6200ef094576c9d86bd36982df1301c758a9fff7d7f4 \
+ --hash=sha256:691018785779766127f531674fa82bb368df5b36b461622b12e176c18e119022 \
+ --hash=sha256:6a36f78674cbddc165abab0df961b5f96b14461d05feec5e1f78da58808b97e7 \
+ --hash=sha256:6afd5c867a74c4d314c557b5ea9520183fadfbd1df4c2d6e09fd0d990ce412cd \
+ --hash=sha256:6b32c2a1f8032570842257e4c19288eba9a2bba4712af542327de9a1204faff8 \
+ --hash=sha256:6e59fca51ffbdd1638b3856779342ed69bcecb8484c1d4b8bdb237d0eb5a45e2 \
+ --hash=sha256:70cf099197d6b98953468461d753563b28e73cf1eade2ffe069675d2657ed1d5 \
+ --hash=sha256:73038d66614d2e5cde30435b5afdced2b473b4c77d4ca3a8624dd3e41a9c19be \
+ --hash=sha256:744697428fcdec6be5670460b578161d1ffe34743a5c15656be7ea82b008197c \
+ --hash=sha256:77319771a026f7c7d29c6ebc623de889e9563b7087911b46fd06c044a12aa5e9 \
+ --hash=sha256:7a20dded653e516a4655f4c98e97ccafb13753987434fe7cf044aa25f5b7d417 \
+ --hash=sha256:7e6382ce89a92bc1d0c0c5edd51e931432202b9080dc921d8d003e616402efd1 \
+ --hash=sha256:7fdd362f6a586e681ff86550b2379e532fee63c52def1c666887956748eaa326 \
+ --hash=sha256:80aea0ffeb1049336043d07799eace1c9602519fb3192916ff525b0287b2b1e4 \
+ --hash=sha256:82f2718430098bcdf60402136c845e4126a189959d103900ebabb6774a5d9fdb \
+ --hash=sha256:855ec66589c68aa367d989da5c4755bb74ee92ccad4fdb6af942c3612c067e34 \
+ --hash=sha256:9128089da8f4fe73f7a91973895ebf2502539d627891a14034e45fb9e707e26d \
+ --hash=sha256:929c24e9dea3990bc8bcd27c5f2d3916c0c86f5511d2caa69e0d5290115344a9 \
+ --hash=sha256:98ed737567d8f2ecd54f7c8d4f8572ca7c7921ede93a2e52939416170d357812 \
+ --hash=sha256:9a46795b1f3beb167eaee91736d5d17ac3a994bf2215a996aed825a45f897558 \
+ --hash=sha256:9f9e04afebd3ed8c15d67a564ed0a34b54e52136c6d40d14c5547b238390e779 \
+ --hash=sha256:a4e651e47d981c1b701dcc74ab8fec5a60a5b004650416b4abbef13db23bc7be \
+ --hash=sha256:a62e437d687cc148381bdd5f51e3e81f5b20a735c55f690c5be94e05da2b0d5c \
+ --hash=sha256:aaee40f25bba38132e655ffa3d1998a6d576ba7cf81deff8bfa189fb43fd2bbe \
+ --hash=sha256:adf952c3f4100e203cbaf8e0c907c835d3e28f9041474e52b651761dc248a3c0 \
+ --hash=sha256:b367a73a414bbb08507da102dc2cde0fa7afe57d09b3240ce82a16d608a7679c \
+ --hash=sha256:b8e20e15d18bf7dbb453be78a2d858f946f5cdf06c5072453dace00ab652e2b2 \
+ --hash=sha256:b95a0972fac2b1ff3c94629fc9081b16371dad870959f1408cc33b2f78ad347a \
+ --hash=sha256:b9ebe8231726c49518b16b237b9fe0d7d361dd221302af511a83d4ada01183ab \
+ --hash=sha256:ba905d184f62e7ddbb7a5a751d8a5c805463511c7b08d1aca4a3e8c11f2e5048 \
+ --hash=sha256:bd4435b8d83f0c9561a2a9585b1de78f1abb17cb0cef5f39bf6a4b47d19bafe3 \
+ --hash=sha256:bd7df92f28d351bb9f12470f4c533cf03d1b52ec5a6e5c58c65b183055a60106 \
+ --hash=sha256:c0037a92cf0c580ed14e10953cdd26528e8796307bb8bb312dc65f71547df04d \
+ --hash=sha256:c0d9ff283cd3459fa0bf9b0256a2b6f01ac1ff9ffb034e24457b9035f75587cb \
+ --hash=sha256:c56eca1686539fa0c9bda992e7bd6a37583f20083c37590413381acfc5f192d6 \
+ --hash=sha256:c6ac9ffccc9d2e69d9fba841441d4259cb668ac180e51b30d3632cd7abca2b9b \
+ --hash=sha256:c826870b277143e701c9ccf34ebc33ddb4d072612683a044e7cce2d52f6c3fef \
+ --hash=sha256:cd4a032bb65cc132cae1fe3e52877daecc2097965cd3914e44fbd12b00dae7c5 \
+ --hash=sha256:d33ce258e4e6e6038f2b9e8b8a631d17d017567db43483314993b3ca345dcbbb \
+ --hash=sha256:d531076bdfb65af593326ffd567e6ab3da145020dafb9187a1d131064a55f97c \
+ --hash=sha256:dccf3ef1400390ddd1fb55bf0632209d39140552d068ee5ac45553b556780e06 \
+ --hash=sha256:df11fa992e9f576473038510d66dd305bcd51d7dd508c163a8c8fe148454e059 \
+ --hash=sha256:e1a8376fef60790152564b0eab376b3e23dd6e54f29d84aad46f7b264ecca943 \
+ --hash=sha256:e201935d282707394f3668380e41ccf25b5794d1b131cdd96b07f615a33ca4b1 \
+ --hash=sha256:e2e253af04ceaebde8eb201eb3f3e3e7e390f2d275a88300d6a1959d710539e2 \
+ --hash=sha256:e862823be114387257dacbfa7d78547165a85d7add33b446ca4f4fae92c7ff5c \
+ --hash=sha256:eecf63195be644b0396f972c82598cd15693550f0ff236dcf7ab92e2eb6d3522 \
+ --hash=sha256:f0928cde2ae416a2d1ebe6dee324709c6f73e93494d8c7aea92df99aab1fc40f \
+ --hash=sha256:f9c08cabff68704a1b4667d33f534d544b8a07b8e5d039c37067fceb18789e78 \
+ --hash=sha256:fec02527e1e03257aa25b1a4dcbe697b40a22f1229f5d026503e8b7ff6d2eda7 \
+ --hash=sha256:ff58f379345603d940e461eae474b6bbb6dab66ed9a851ecd3cb3709bf4dcf6a \
+ --hash=sha256:ffecbb5edb7f5ffae13599aec33b735e9e4c7676ca1633c60f2c606beb17efc5
+pydantic==2.7.2 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:71b2945998f9c9b7919a45bde9a50397b289937d215ae141c1d0903ba7149fd7 \
+ --hash=sha256:834ab954175f94e6e68258537dc49402c4a5e9d0409b9f1b86b7e934a8372de7
+pydub==0.25.1 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:65617e33033874b59d87db603aa1ed450633288aefead953b30bded59cb599a6 \
--hash=sha256:980a33ce9949cab2a569606b65674d748ecbca4f0796887fd6f46173a7b0d30f
-pygments==2.18.0 ; python_version >= "3.12" and python_version < "4.0" \
+pygments==2.18.0 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199 \
--hash=sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a
-pyparsing==3.1.2 ; python_version >= "3.12" and python_version < "4.0" \
+pyparsing==3.1.2 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:a1bac0ce561155ecc3ed78ca94d3c9378656ad4c94c1270de543f621420f94ad \
--hash=sha256:f9db75911801ed778fe61bb643079ff86601aca99fcae6345aa67292038fb742
-python-dateutil==2.9.0.post0 ; python_version >= "3.12" and python_version < "4.0" \
+python-dateutil==2.9.0.post0 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3 \
--hash=sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427
-python-dotenv==1.0.1 ; python_version >= "3.12" and python_version < "4.0" \
- --hash=sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca \
- --hash=sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a
-python-multipart==0.0.9 ; python_version >= "3.12" and python_version < "4.0" \
+python-multipart==0.0.9 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:03f54688c663f1b7977105f021043b0793151e4cb1c1a9d4a11fc13d622c4026 \
--hash=sha256:97ca7b8ea7b05f977dc3849c3ba99d51689822fab725c3703af7c866a0c2b215
-pytz==2024.1 ; python_version >= "3.12" and python_version < "4.0" \
+pytz==2024.1 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812 \
--hash=sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319
-pyyaml==6.0.1 ; python_version >= "3.12" and python_version < "4.0" \
+pyyaml==6.0.1 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5 \
--hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \
--hash=sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df \
@@ -843,96 +1346,16 @@ pyyaml==6.0.1 ; python_version >= "3.12" and python_version < "4.0" \
--hash=sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585 \
--hash=sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d \
--hash=sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f
-referencing==0.35.1 ; python_version >= "3.12" and python_version < "4.0" \
+referencing==0.35.1 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c \
--hash=sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de
-regex==2024.5.15 ; python_version >= "3.12" and python_version < "4.0" \
- --hash=sha256:0721931ad5fe0dda45d07f9820b90b2148ccdd8e45bb9e9b42a146cb4f695649 \
- --hash=sha256:10002e86e6068d9e1c91eae8295ef690f02f913c57db120b58fdd35a6bb1af35 \
- --hash=sha256:10e4ce0dca9ae7a66e6089bb29355d4432caed736acae36fef0fdd7879f0b0cb \
- --hash=sha256:119af6e56dce35e8dfb5222573b50c89e5508d94d55713c75126b753f834de68 \
- --hash=sha256:1337b7dbef9b2f71121cdbf1e97e40de33ff114801263b275aafd75303bd62b5 \
- --hash=sha256:13cdaf31bed30a1e1c2453ef6015aa0983e1366fad2667657dbcac7b02f67133 \
- --hash=sha256:1595f2d10dff3d805e054ebdc41c124753631b6a471b976963c7b28543cf13b0 \
- --hash=sha256:16093f563098448ff6b1fa68170e4acbef94e6b6a4e25e10eae8598bb1694b5d \
- --hash=sha256:1878b8301ed011704aea4c806a3cadbd76f84dece1ec09cc9e4dc934cfa5d4da \
- --hash=sha256:19068a6a79cf99a19ccefa44610491e9ca02c2be3305c7760d3831d38a467a6f \
- --hash=sha256:19dfb1c504781a136a80ecd1fff9f16dddf5bb43cec6871778c8a907a085bb3d \
- --hash=sha256:1b5269484f6126eee5e687785e83c6b60aad7663dafe842b34691157e5083e53 \
- --hash=sha256:1c1c174d6ec38d6c8a7504087358ce9213d4332f6293a94fbf5249992ba54efa \
- --hash=sha256:2431b9e263af1953c55abbd3e2efca67ca80a3de8a0437cb58e2421f8184717a \
- --hash=sha256:287eb7f54fc81546346207c533ad3c2c51a8d61075127d7f6d79aaf96cdee890 \
- --hash=sha256:2b4c884767504c0e2401babe8b5b7aea9148680d2e157fa28f01529d1f7fcf67 \
- --hash=sha256:35cb514e137cb3488bce23352af3e12fb0dbedd1ee6e60da053c69fb1b29cc6c \
- --hash=sha256:391d7f7f1e409d192dba8bcd42d3e4cf9e598f3979cdaed6ab11288da88cb9f2 \
- --hash=sha256:3ad070b823ca5890cab606c940522d05d3d22395d432f4aaaf9d5b1653e47ced \
- --hash=sha256:3cd7874d57f13bf70078f1ff02b8b0aa48d5b9ed25fc48547516c6aba36f5741 \
- --hash=sha256:3e507ff1e74373c4d3038195fdd2af30d297b4f0950eeda6f515ae3d84a1770f \
- --hash=sha256:455705d34b4154a80ead722f4f185b04c4237e8e8e33f265cd0798d0e44825fa \
- --hash=sha256:4a605586358893b483976cffc1723fb0f83e526e8f14c6e6614e75919d9862cf \
- --hash=sha256:4babf07ad476aaf7830d77000874d7611704a7fcf68c9c2ad151f5d94ae4bfc4 \
- --hash=sha256:4eee78a04e6c67e8391edd4dad3279828dd66ac4b79570ec998e2155d2e59fd5 \
- --hash=sha256:5397de3219a8b08ae9540c48f602996aa6b0b65d5a61683e233af8605c42b0f2 \
- --hash=sha256:5b5467acbfc153847d5adb21e21e29847bcb5870e65c94c9206d20eb4e99a384 \
- --hash=sha256:5eaa7ddaf517aa095fa8da0b5015c44d03da83f5bd49c87961e3c997daed0de7 \
- --hash=sha256:632b01153e5248c134007209b5c6348a544ce96c46005d8456de1d552455b014 \
- --hash=sha256:64c65783e96e563103d641760664125e91bd85d8e49566ee560ded4da0d3e704 \
- --hash=sha256:64f18a9a3513a99c4bef0e3efd4c4a5b11228b48aa80743be822b71e132ae4f5 \
- --hash=sha256:673b5a6da4557b975c6c90198588181029c60793835ce02f497ea817ff647cb2 \
- --hash=sha256:68811ab14087b2f6e0fc0c2bae9ad689ea3584cad6917fc57be6a48bbd012c49 \
- --hash=sha256:6e8d717bca3a6e2064fc3a08df5cbe366369f4b052dcd21b7416e6d71620dca1 \
- --hash=sha256:71a455a3c584a88f654b64feccc1e25876066c4f5ef26cd6dd711308aa538694 \
- --hash=sha256:72d7a99cd6b8f958e85fc6ca5b37c4303294954eac1376535b03c2a43eb72629 \
- --hash=sha256:7b59138b219ffa8979013be7bc85bb60c6f7b7575df3d56dc1e403a438c7a3f6 \
- --hash=sha256:7dbe2467273b875ea2de38ded4eba86cbcbc9a1a6d0aa11dcf7bd2e67859c435 \
- --hash=sha256:833616ddc75ad595dee848ad984d067f2f31be645d603e4d158bba656bbf516c \
- --hash=sha256:87e2a9c29e672fc65523fb47a90d429b70ef72b901b4e4b1bd42387caf0d6835 \
- --hash=sha256:8fe45aa3f4aa57faabbc9cb46a93363edd6197cbc43523daea044e9ff2fea83e \
- --hash=sha256:9e717956dcfd656f5055cc70996ee2cc82ac5149517fc8e1b60261b907740201 \
- --hash=sha256:9efa1a32ad3a3ea112224897cdaeb6aa00381627f567179c0314f7b65d354c62 \
- --hash=sha256:9ff11639a8d98969c863d4617595eb5425fd12f7c5ef6621a4b74b71ed8726d5 \
- --hash=sha256:a094801d379ab20c2135529948cb84d417a2169b9bdceda2a36f5f10977ebc16 \
- --hash=sha256:a0981022dccabca811e8171f913de05720590c915b033b7e601f35ce4ea7019f \
- --hash=sha256:a0bd000c6e266927cb7a1bc39d55be95c4b4f65c5be53e659537537e019232b1 \
- --hash=sha256:a32b96f15c8ab2e7d27655969a23895eb799de3665fa94349f3b2fbfd547236f \
- --hash=sha256:a81e3cfbae20378d75185171587cbf756015ccb14840702944f014e0d93ea09f \
- --hash=sha256:ac394ff680fc46b97487941f5e6ae49a9f30ea41c6c6804832063f14b2a5a145 \
- --hash=sha256:ada150c5adfa8fbcbf321c30c751dc67d2f12f15bd183ffe4ec7cde351d945b3 \
- --hash=sha256:b2b6f1b3bb6f640c1a92be3bbfbcb18657b125b99ecf141fb3310b5282c7d4ed \
- --hash=sha256:b802512f3e1f480f41ab5f2cfc0e2f761f08a1f41092d6718868082fc0d27143 \
- --hash=sha256:ba68168daedb2c0bab7fd7e00ced5ba90aebf91024dea3c88ad5063c2a562cca \
- --hash=sha256:bfc4f82cabe54f1e7f206fd3d30fda143f84a63fe7d64a81558d6e5f2e5aaba9 \
- --hash=sha256:c0c18345010870e58238790a6779a1219b4d97bd2e77e1140e8ee5d14df071aa \
- --hash=sha256:c3bea0ba8b73b71b37ac833a7f3fd53825924165da6a924aec78c13032f20850 \
- --hash=sha256:c486b4106066d502495b3025a0a7251bf37ea9540433940a23419461ab9f2a80 \
- --hash=sha256:c49e15eac7c149f3670b3e27f1f28a2c1ddeccd3a2812cba953e01be2ab9b5fe \
- --hash=sha256:c6a2b494a76983df8e3d3feea9b9ffdd558b247e60b92f877f93a1ff43d26656 \
- --hash=sha256:cab12877a9bdafde5500206d1020a584355a97884dfd388af3699e9137bf7388 \
- --hash=sha256:cac27dcaa821ca271855a32188aa61d12decb6fe45ffe3e722401fe61e323cd1 \
- --hash=sha256:cdd09d47c0b2efee9378679f8510ee6955d329424c659ab3c5e3a6edea696294 \
- --hash=sha256:cf2430df4148b08fb4324b848672514b1385ae3807651f3567871f130a728cc3 \
- --hash=sha256:d0a3d8d6acf0c78a1fff0e210d224b821081330b8524e3e2bc5a68ef6ab5803d \
- --hash=sha256:d0c0c0003c10f54a591d220997dd27d953cd9ccc1a7294b40a4be5312be8797b \
- --hash=sha256:d1f059a4d795e646e1c37665b9d06062c62d0e8cc3c511fe01315973a6542e40 \
- --hash=sha256:d347a741ea871c2e278fde6c48f85136c96b8659b632fb57a7d1ce1872547600 \
- --hash=sha256:d3ee02d9e5f482cc8309134a91eeaacbdd2261ba111b0fef3748eeb4913e6a2c \
- --hash=sha256:d99ceffa25ac45d150e30bd9ed14ec6039f2aad0ffa6bb87a5936f5782fc1569 \
- --hash=sha256:e38a7d4e8f633a33b4c7350fbd8bad3b70bf81439ac67ac38916c4a86b465456 \
- --hash=sha256:e4682f5ba31f475d58884045c1a97a860a007d44938c4c0895f41d64481edbc9 \
- --hash=sha256:e5bb9425fe881d578aeca0b2b4b3d314ec88738706f66f219c194d67179337cb \
- --hash=sha256:e64198f6b856d48192bf921421fdd8ad8eb35e179086e99e99f711957ffedd6e \
- --hash=sha256:e6662686aeb633ad65be2a42b4cb00178b3fbf7b91878f9446075c404ada552f \
- --hash=sha256:ec54d5afa89c19c6dd8541a133be51ee1017a38b412b1321ccb8d6ddbeb4cf7d \
- --hash=sha256:f5b1dff3ad008dccf18e652283f5e5339d70bf8ba7c98bf848ac33db10f7bc7a \
- --hash=sha256:f8ec0c2fea1e886a19c3bee0cd19d862b3aa75dcdfb42ebe8ed30708df64687a \
- --hash=sha256:f9ebd0a36102fcad2f03696e8af4ae682793a5d30b46c647eaf280d6cfb32796
-requests==2.31.0 ; python_version >= "3.12" and python_version < "4.0" \
- --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \
- --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1
-rich==13.7.1 ; python_version >= "3.12" and python_version < "4.0" \
+requests==2.32.3 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760 \
+ --hash=sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6
+rich==13.7.1 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:4edbae314f59eb482f54e9e30bf00d33350aaa94f4bfcd4e9e3110e64d0d7222 \
--hash=sha256:9be308cb1fe2f1f57d67ce99e95af38a1e2bc71ad9813b0e247cf7ffbcc3a432
-rpds-py==0.18.1 ; python_version >= "3.12" and python_version < "4.0" \
+rpds-py==0.18.1 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:05f3d615099bd9b13ecf2fc9cf2d839ad3f20239c678f461c753e93755d629ee \
--hash=sha256:06d218939e1bf2ca50e6b0ec700ffe755e5216a8230ab3e87c059ebb4ea06afc \
--hash=sha256:07f2139741e5deb2c5154a7b9629bc5aa48c766b643c1a6750d16f865a82c5fc \
@@ -1032,308 +1455,287 @@ rpds-py==0.18.1 ; python_version >= "3.12" and python_version < "4.0" \
--hash=sha256:f7afbfee1157e0f9376c00bb232e80a60e59ed716e3211a80cb8506550671e6e \
--hash=sha256:fa242ac1ff583e4ec7771141606aafc92b361cd90a05c30d93e343a0c2d82a89 \
--hash=sha256:fab6ce90574645a0d6c58890e9bcaac8d94dff54fb51c69e5522a7358b80ab64
-ruff==0.4.4 ; python_version >= "3.12" and python_version < "4.0" and sys_platform != "emscripten" \
- --hash=sha256:1aecced1269481ef2894cc495647392a34b0bf3e28ff53ed95a385b13aa45768 \
- --hash=sha256:29d44ef5bb6a08e235c8249294fa8d431adc1426bfda99ed493119e6f9ea1bf6 \
- --hash=sha256:39df0537b47d3b597293edbb95baf54ff5b49589eb7ff41926d8243caa995ea6 \
- --hash=sha256:424e5b72597482543b684c11def82669cc6b395aa8cc69acc1858b5ef3e5daae \
- --hash=sha256:4c8e2f1e8fc12d07ab521a9005d68a969e167b589cbcaee354cb61e9d9de9c15 \
- --hash=sha256:60ed88b636a463214905c002fa3eaab19795679ed55529f91e488db3fe8976ab \
- --hash=sha256:8e7e6ebc10ef16dcdc77fd5557ee60647512b400e4a60bdc4849468f076f6eef \
- --hash=sha256:958b4ea5589706a81065e2a776237de2ecc3e763342e5cc8e02a4a4d8a5e6f95 \
- --hash=sha256:9da73eb616b3241a307b837f32756dc20a0b07e2bcb694fec73699c93d04a69e \
- --hash=sha256:b1867ee9bf3acc21778dcb293db504692eda5f7a11a6e6cc40890182a9f9e595 \
- --hash=sha256:b5eb0a4bfd6400b7d07c09a7725e1a98c3b838be557fee229ac0f84d9aa49c36 \
- --hash=sha256:b90fc5e170fc71c712cc4d9ab0e24ea505c6a9e4ebf346787a67e691dfb72e85 \
- --hash=sha256:b9ddb2c494fb79fc208cd15ffe08f32b7682519e067413dbaf5f4b01a6087bcd \
- --hash=sha256:c4efe62b5bbb24178c950732ddd40712b878a9b96b1d02b0ff0b08a090cbd891 \
- --hash=sha256:c51c928a14f9f0a871082603e25a1588059b7e08a920f2f9fa7157b5bf08cfe9 \
- --hash=sha256:cb53473849f011bca6e754f2cdf47cafc9c4f4ff4570003a0dad0b9b6890e876 \
- --hash=sha256:f87ea42d5cdebdc6a69761a9d0bc83ae9b3b30d0ad78952005ba6568d6c022af
-scikit-learn==1.4.2 ; python_version >= "3.12" and python_version < "4.0" \
- --hash=sha256:1d0b25d9c651fd050555aadd57431b53d4cf664e749069da77f3d52c5ad14b3b \
- --hash=sha256:36f0ea5d0f693cb247a073d21a4123bdf4172e470e6d163c12b74cbb1536cf38 \
- --hash=sha256:426d258fddac674fdf33f3cb2d54d26f49406e2599dbf9a32b4d1696091d4256 \
- --hash=sha256:44c62f2b124848a28fd695db5bc4da019287abf390bfce602ddc8aa1ec186aae \
- --hash=sha256:45dee87ac5309bb82e3ea633955030df9bbcb8d2cdb30383c6cd483691c546cc \
- --hash=sha256:49d64ef6cb8c093d883e5a36c4766548d974898d378e395ba41a806d0e824db8 \
- --hash=sha256:5460a1a5b043ae5ae4596b3126a4ec33ccba1b51e7ca2c5d36dac2169f62ab1d \
- --hash=sha256:5cd7b524115499b18b63f0c96f4224eb885564937a0b3477531b2b63ce331904 \
- --hash=sha256:671e2f0c3f2c15409dae4f282a3a619601fa824d2c820e5b608d9d775f91780c \
- --hash=sha256:68b8404841f944a4a1459b07198fa2edd41a82f189b44f3e1d55c104dbc2e40c \
- --hash=sha256:81bf5d8bbe87643103334032dd82f7419bc8c8d02a763643a6b9a5c7288c5054 \
- --hash=sha256:8539a41b3d6d1af82eb629f9c57f37428ff1481c1e34dddb3b9d7af8ede67ac5 \
- --hash=sha256:87440e2e188c87db80ea4023440923dccbd56fbc2d557b18ced00fef79da0727 \
- --hash=sha256:90378e1747949f90c8f385898fff35d73193dfcaec3dd75d6b542f90c4e89755 \
- --hash=sha256:b0203c368058ab92efc6168a1507d388d41469c873e96ec220ca8e74079bf62e \
- --hash=sha256:c97a50b05c194be9146d61fe87dbf8eac62b203d9e87a3ccc6ae9aed2dfaf361 \
- --hash=sha256:d36d0bc983336bbc1be22f9b686b50c964f593c8a9a913a792442af9bf4f5e68 \
- --hash=sha256:d762070980c17ba3e9a4a1e043ba0518ce4c55152032f1af0ca6f39b376b5928 \
- --hash=sha256:d9993d5e78a8148b1d0fdf5b15ed92452af5581734129998c26f481c46586d68 \
- --hash=sha256:daa1c471d95bad080c6e44b4946c9390a4842adc3082572c20e4f8884e39e959 \
- --hash=sha256:ff4effe5a1d4e8fed260a83a163f7dbf4f6087b54528d8880bab1d1377bd78be
-scipy==1.13.0 ; python_version >= "3.12" and python_version < "4.0" \
- --hash=sha256:05f1432ba070e90d42d7fd836462c50bf98bd08bed0aa616c359eed8a04e3922 \
- --hash=sha256:09c74543c4fbeb67af6ce457f6a6a28e5d3739a87f62412e4a16e46f164f0ae5 \
- --hash=sha256:0fbcf8abaf5aa2dc8d6400566c1a727aed338b5fe880cde64907596a89d576fa \
- --hash=sha256:109d391d720fcebf2fbe008621952b08e52907cf4c8c7efc7376822151820820 \
- --hash=sha256:1d2f7bb14c178f8b13ebae93f67e42b0a6b0fc50eba1cd8021c9b6e08e8fb1cd \
- --hash=sha256:1e7626dfd91cdea5714f343ce1176b6c4745155d234f1033584154f60ef1ff42 \
- --hash=sha256:22789b56a999265431c417d462e5b7f2b487e831ca7bef5edeb56efe4c93f86e \
- --hash=sha256:28e286bf9ac422d6beb559bc61312c348ca9b0f0dae0d7c5afde7f722d6ea13d \
- --hash=sha256:33fde20efc380bd23a78a4d26d59fc8704e9b5fd9b08841693eb46716ba13d86 \
- --hash=sha256:45c08bec71d3546d606989ba6e7daa6f0992918171e2a6f7fbedfa7361c2de1e \
- --hash=sha256:4dca18c3ffee287ddd3bc8f1dabaf45f5305c5afc9f8ab9cbfab855e70b2df5c \
- --hash=sha256:5407708195cb38d70fd2d6bb04b1b9dd5c92297d86e9f9daae1576bd9e06f602 \
- --hash=sha256:58569af537ea29d3f78e5abd18398459f195546bb3be23d16677fb26616cc11e \
- --hash=sha256:5e4a756355522eb60fcd61f8372ac2549073c8788f6114449b37e9e8104f15a5 \
- --hash=sha256:6bf9fe63e7a4bf01d3645b13ff2aa6dea023d38993f42aaac81a18b1bda7a82a \
- --hash=sha256:8930ae3ea371d6b91c203b1032b9600d69c568e537b7988a3073dfe4d4774f21 \
- --hash=sha256:9ff7dad5d24a8045d836671e082a490848e8639cabb3dbdacb29f943a678683d \
- --hash=sha256:a2f471de4d01200718b2b8927f7d76b5d9bde18047ea0fa8bd15c5ba3f26a1d6 \
- --hash=sha256:ac38c4c92951ac0f729c4c48c9e13eb3675d9986cc0c83943784d7390d540c78 \
- --hash=sha256:b2a3ff461ec4756b7e8e42e1c681077349a038f0686132d623fa404c0bee2551 \
- --hash=sha256:b5acd8e1dbd8dbe38d0004b1497019b2dbbc3d70691e65d69615f8a7292865d7 \
- --hash=sha256:b8434f6f3fa49f631fae84afee424e2483289dfc30a47755b4b4e6b07b2633a4 \
- --hash=sha256:ba419578ab343a4e0a77c0ef82f088238a93eef141b2b8017e46149776dfad4d \
- --hash=sha256:d0de696f589681c2802f9090fff730c218f7c51ff49bf252b6a97ec4a5d19e8b \
- --hash=sha256:dcbb9ea49b0167de4167c40eeee6e167caeef11effb0670b554d10b1e693a8b9
-seaborn==0.13.2 ; python_version >= "3.12" and python_version < "4.0" \
+ruff==0.4.6 ; python_version >= "3.11" and python_version < "4.0" and sys_platform != "emscripten" \
+ --hash=sha256:04a80acfc862e0e1630c8b738e70dcca03f350bad9e106968a8108379e12b31f \
+ --hash=sha256:0cf5cc02d3ae52dfb0c8a946eb7a1d6ffe4d91846ffc8ce388baa8f627e3bd50 \
+ --hash=sha256:1fa8561489fadf483ffbb091ea94b9c39a00ed63efacd426aae2f197a45e67fc \
+ --hash=sha256:1ff930d6e05f444090a0139e4e13e1e2e1f02bd51bb4547734823c760c621e79 \
+ --hash=sha256:3a6a0a4f4b5f54fff7c860010ab3dd81425445e37d35701a965c0248819dde7a \
+ --hash=sha256:3f9ced5cbb7510fd7525448eeb204e0a22cabb6e99a3cb160272262817d49786 \
+ --hash=sha256:4d5b914818d8047270308fe3e85d9d7f4a31ec86c6475c9f418fbd1624d198e0 \
+ --hash=sha256:4f02284335c766678778475e7698b7ab83abaf2f9ff0554a07b6f28df3b5c259 \
+ --hash=sha256:602ebd7ad909eab6e7da65d3c091547781bb06f5f826974a53dbe563d357e53c \
+ --hash=sha256:735a16407a1a8f58e4c5b913ad6102722e80b562dd17acb88887685ff6f20cf6 \
+ --hash=sha256:9018bf59b3aa8ad4fba2b1dc0299a6e4e60a4c3bc62bbeaea222679865453062 \
+ --hash=sha256:a769ae07ac74ff1a019d6bd529426427c3e30d75bdf1e08bb3d46ac8f417326a \
+ --hash=sha256:a797a87da50603f71e6d0765282098245aca6e3b94b7c17473115167d8dfb0b7 \
+ --hash=sha256:be47700ecb004dfa3fd4dcdddf7322d4e632de3c06cd05329d69c45c0280e618 \
+ --hash=sha256:ea3424793c29906407e3cf417f28fc33f689dacbbadfb52b7e9a809dd535dcef \
+ --hash=sha256:ef995583a038cd4a7edf1422c9e19118e2511b8ba0b015861b4abd26ec5367c5 \
+ --hash=sha256:f13410aabd3b5776f9c5699f42b37a3a348d65498c4310589bc6e5c548dc8a2f
+scikit-learn==1.5.0 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:057b991ac64b3e75c9c04b5f9395eaf19a6179244c089afdebaad98264bff37c \
+ --hash=sha256:118a8d229a41158c9f90093e46b3737120a165181a1b58c03461447aa4657415 \
+ --hash=sha256:12e40ac48555e6b551f0a0a5743cc94cc5a765c9513fe708e01f0aa001da2801 \
+ --hash=sha256:174beb56e3e881c90424e21f576fa69c4ffcf5174632a79ab4461c4c960315ac \
+ --hash=sha256:1b94d6440603752b27842eda97f6395f570941857456c606eb1d638efdb38184 \
+ --hash=sha256:1f77547165c00625551e5c250cefa3f03f2fc92c5e18668abd90bfc4be2e0bff \
+ --hash=sha256:261fe334ca48f09ed64b8fae13f9b46cc43ac5f580c4a605cbb0a517456c8f71 \
+ --hash=sha256:2a65af2d8a6cce4e163a7951a4cfbfa7fceb2d5c013a4b593686c7f16445cf9d \
+ --hash=sha256:2c75ea812cd83b1385bbfa94ae971f0d80adb338a9523f6bbcb5e0b0381151d4 \
+ --hash=sha256:40fb7d4a9a2db07e6e0cae4dc7bdbb8fada17043bac24104d8165e10e4cff1a2 \
+ --hash=sha256:460806030c666addee1f074788b3978329a5bfdc9b7d63e7aad3f6d45c67a210 \
+ --hash=sha256:47132440050b1c5beb95f8ba0b2402bbd9057ce96ec0ba86f2f445dd4f34df67 \
+ --hash=sha256:4c0c56c3005f2ec1db3787aeaabefa96256580678cec783986836fc64f8ff622 \
+ --hash=sha256:789e3db01c750ed6d496fa2db7d50637857b451e57bcae863bff707c1247bef7 \
+ --hash=sha256:855fc5fa8ed9e4f08291203af3d3e5fbdc4737bd617a371559aaa2088166046e \
+ --hash=sha256:a03b09f9f7f09ffe8c5efffe2e9de1196c696d811be6798ad5eddf323c6f4d40 \
+ --hash=sha256:a3a10e1d9e834e84d05e468ec501a356226338778769317ee0b84043c0d8fb06 \
+ --hash=sha256:a90c5da84829a0b9b4bf00daf62754b2be741e66b5946911f5bdfaa869fcedd6 \
+ --hash=sha256:d82c2e573f0f2f2f0be897e7a31fcf4e73869247738ab8c3ce7245549af58ab8 \
+ --hash=sha256:df8ccabbf583315f13160a4bb06037bde99ea7d8211a69787a6b7c5d4ebb6fc3 \
+ --hash=sha256:f405c4dae288f5f6553b10c4ac9ea7754d5180ec11e296464adb5d6ac68b6ef5
+scipy==1.13.1 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:017367484ce5498445aade74b1d5ab377acdc65e27095155e448c88497755a5d \
+ --hash=sha256:095a87a0312b08dfd6a6155cbbd310a8c51800fc931b8c0b84003014b874ed3c \
+ --hash=sha256:20335853b85e9a49ff7572ab453794298bcf0354d8068c5f6775a0eabf350aca \
+ --hash=sha256:27e52b09c0d3a1d5b63e1105f24177e544a222b43611aaf5bc44d4a0979e32f9 \
+ --hash=sha256:2831f0dc9c5ea9edd6e51e6e769b655f08ec6db6e2e10f86ef39bd32eb11da54 \
+ --hash=sha256:2ac65fb503dad64218c228e2dc2d0a0193f7904747db43014645ae139c8fad16 \
+ --hash=sha256:392e4ec766654852c25ebad4f64e4e584cf19820b980bc04960bca0b0cd6eaa2 \
+ --hash=sha256:436bbb42a94a8aeef855d755ce5a465479c721e9d684de76bf61a62e7c2b81d5 \
+ --hash=sha256:45484bee6d65633752c490404513b9ef02475b4284c4cfab0ef946def50b3f59 \
+ --hash=sha256:54f430b00f0133e2224c3ba42b805bfd0086fe488835effa33fa291561932326 \
+ --hash=sha256:5713f62f781eebd8d597eb3f88b8bf9274e79eeabf63afb4a737abc6c84ad37b \
+ --hash=sha256:5d72782f39716b2b3509cd7c33cdc08c96f2f4d2b06d51e52fb45a19ca0c86a1 \
+ --hash=sha256:637e98dcf185ba7f8e663e122ebf908c4702420477ae52a04f9908707456ba4d \
+ --hash=sha256:8335549ebbca860c52bf3d02f80784e91a004b71b059e3eea9678ba994796a24 \
+ --hash=sha256:949ae67db5fa78a86e8fa644b9a6b07252f449dcf74247108c50e1d20d2b4627 \
+ --hash=sha256:a014c2b3697bde71724244f63de2476925596c24285c7a637364761f8710891c \
+ --hash=sha256:a78b4b3345f1b6f68a763c6e25c0c9a23a9fd0f39f5f3d200efe8feda560a5fa \
+ --hash=sha256:cdd7dacfb95fea358916410ec61bbc20440f7860333aee6d882bb8046264e949 \
+ --hash=sha256:cfa31f1def5c819b19ecc3a8b52d28ffdcc7ed52bb20c9a7589669dd3c250989 \
+ --hash=sha256:d533654b7d221a6a97304ab63c41c96473ff04459e404b83275b60aa8f4b7004 \
+ --hash=sha256:d605e9c23906d1994f55ace80e0125c587f96c020037ea6aa98d01b4bd2e222f \
+ --hash=sha256:de3ade0e53bc1f21358aa74ff4830235d716211d7d077e340c7349bc3542e884 \
+ --hash=sha256:e89369d27f9e7b0884ae559a3a956e77c02114cc60a6058b4e5011572eea9299 \
+ --hash=sha256:eccfa1906eacc02de42d70ef4aecea45415f5be17e72b61bafcfd329bdc52e94 \
+ --hash=sha256:f26264b282b9da0952a024ae34710c2aff7d27480ee91a2e82b7b7073c24722f
+seaborn==0.13.2 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:636f8336facf092165e27924f223d3c62ca560b1f2bb5dff7ab7fad265361987 \
--hash=sha256:93e60a40988f4d65e9f4885df477e2fdaff6b73a9ded434c1ab356dd57eefff7
-semantic-version==2.10.0 ; python_version >= "3.12" and python_version < "4.0" \
+semantic-version==2.10.0 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:bdabb6d336998cbb378d4b9db3a4b56a1e3235701dc05ea2690d9a997ed5041c \
--hash=sha256:de78a3b8e0feda74cabc54aab2da702113e33ac9d9eb9d2389bcf1f58b7d9177
-shellingham==1.5.4 ; python_version >= "3.12" and python_version < "4.0" \
+setuptools==70.0.0 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:54faa7f2e8d2d11bcd2c07bed282eef1046b5c080d1c32add737d7b5817b1ad4 \
+ --hash=sha256:f211a66637b8fa059bb28183da127d4e86396c991a942b028c6650d4319c3fd0
+shellingham==1.5.4 ; python_version >= "3.11" and python_version < "4.0" and sys_platform != "emscripten" \
--hash=sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686 \
--hash=sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de
-six==1.16.0 ; python_version >= "3.12" and python_version < "4.0" \
+six==1.16.0 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \
--hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254
-sniffio==1.3.1 ; python_version >= "3.12" and python_version < "4.0" \
+smart-open==6.4.0 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:8d3ef7e6997e8e42dd55c74166ed21e6ac70664caa32dd940b26d54a8f6b4142 \
+ --hash=sha256:be3c92c246fbe80ebce8fbacb180494a481a77fcdcb7c1aadb2ea5b9c2bee8b9
+sniffio==1.3.1 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2 \
--hash=sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc
-starlette==0.37.2 ; python_version >= "3.12" and python_version < "4.0" \
+spacy-legacy==3.0.12 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:476e3bd0d05f8c339ed60f40986c07387c0a71479245d6d0f4298dbd52cda55f \
+ --hash=sha256:b37d6e0c9b6e1d7ca1cf5bc7152ab64a4c4671f59c85adaf7a3fcb870357a774
+spacy-loggers==1.0.5 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:196284c9c446cc0cdb944005384270d775fdeaf4f494d8e269466cfa497ef645 \
+ --hash=sha256:d60b0bdbf915a60e516cc2e653baeff946f0cfc461b452d11a4d5458c6fe5f24
+spacy[cuda12x]==3.7.4 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:023c9a008328f55c4717c56c4f8a28073b9961547f7d38a9405c967a52e66d59 \
+ --hash=sha256:040f7df5096c817450820eaaa426d54ed266254d16974e9a707a32f5b0f139ae \
+ --hash=sha256:07ffedf51899441070fb70432f8f873696f39e0e31c9ce7403101c459f8a1281 \
+ --hash=sha256:0f748625192f573c07ddea5fcd324919dbfbf4f4a2f7a1fc731e6dcba7321ea1 \
+ --hash=sha256:11ebf6054cd3ec3638801d7ff9b709e32fb9c15512b347b489bfe2ccb1102c9f \
+ --hash=sha256:2463c56ab1378f2b9a675340a2e3dfb618989d0da8cdce06429bc9b1dad4f294 \
+ --hash=sha256:3ad5e931c294d100ec3edb40e40f2722ef505cea16312839dd6467e81d665740 \
+ --hash=sha256:4b16768b9e5c350b8a383a6bd84cd0481ccdf10ae6231f568598890638065f69 \
+ --hash=sha256:525f2ced2e40761562c8cace93ef6a1e6e8c483f27bd564bc1b15f608efbe85b \
+ --hash=sha256:5d7910ca7a91bf423febd8a9a10ca6a4cfcb5c99abdec79df1eb7b67ea3e3c90 \
+ --hash=sha256:6288dca7b3a5489b3d7ce68404bc432ca22f826c662a12af47ef7bdb264307fb \
+ --hash=sha256:7580d1565f4d1ccbee9a18531f993a5b9b37ced96f145153dd4e98ceec607a55 \
+ --hash=sha256:787ce42a837f7edfbd4185356eea893a81b7dd75743d0047f2b9bf179775f970 \
+ --hash=sha256:977f37493d7cf0b5dca155f0450d47890378703283c29919cdcc220db994a775 \
+ --hash=sha256:a6757e8fbfd35dc0ed830296d5756f46d5b8d4b0353925dbe2f9aa33b82c5308 \
+ --hash=sha256:b43e92edfa99f34dbb9dd30175f41158d20945e3179055d0071fee19394add96 \
+ --hash=sha256:b982ebab417189346acb4722637c573830d62e157ba336c3eb6c417249344be1 \
+ --hash=sha256:ba57bcc111eca7b086ee33a9636df775cfd4b14302f7d0ffbc11e95ac0fb3f0e \
+ --hash=sha256:c26a81d33c93e4a8e3360d61dcce0802fb886de79f666a487ea5abbd3ce4b30b \
+ --hash=sha256:c500c1bad9e0488814a75077089aeef64a6b520ae8131578f266a08168106fa3 \
+ --hash=sha256:c992e2c5c0cd06c7f3e74fe8d758885117090013931c7938277d1421660bf71f \
+ --hash=sha256:ca8112330982dbeef125cc5eb40e0349493055835a0ebe29028a0953a25d8522 \
+ --hash=sha256:d1969d3d0fd0c811b7485438460f0ae8cfe16d46b54bcb8d1c26e70914e67e3d \
+ --hash=sha256:df99c6f0085b1ec8e88beb5fd96d4371cef6fc19c202c41fc4fadc2afd55a157 \
+ --hash=sha256:e7c29e152d8ea060af60da9410fa8ef038f3c9068a206905ee5c704de78f6e87 \
+ --hash=sha256:e82b9da21853d4aee46811804dc7e136895f087fda25c7585172d95eb9b70833 \
+ --hash=sha256:ed99fb176979b1e3cf6830161f8e881beae54e80147b05fca31d9a67cb12fbca \
+ --hash=sha256:ef59db99b12a72d2646be3888d87f94c59e11cd07adc2f50a8130e83f07eb1cf \
+ --hash=sha256:f07477a4027711c22b3865e78dc9076335c03fcf318a6736159bf07e2a923125 \
+ --hash=sha256:f5b930753027ac599f70bb7e77d6a2256191fe582e6f3f0cd624d88f6c279fa4
+srsly==2.4.8 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:06d1733f4275eff4448e96521cc7dcd8fdabd68ba9b54ca012dcfa2690db2644 \
+ --hash=sha256:087e36439af517e259843df93eb34bb9e2d2881c34fa0f541589bcfbc757be97 \
+ --hash=sha256:0ac3e340e65a9fe265105705586aa56054dc3902789fcb9a8f860a218d6c0a00 \
+ --hash=sha256:0b070a58e21ab0e878fd949f932385abb4c53dd0acb6d3a7ee75d95d447bc609 \
+ --hash=sha256:17f3bcb418bb4cf443ed3d4dcb210e491bd9c1b7b0185e6ab10b6af3271e63b2 \
+ --hash=sha256:18685084e2e0cc47c25158cbbf3e44690e494ef77d6418c2aae0598c893f35b0 \
+ --hash=sha256:196b4261f9d6372d1d3d16d1216b90c7e370b4141471322777b7b3c39afd1210 \
+ --hash=sha256:24d05367b2571c0d08d00459636b951e3ca2a1e9216318c157331f09c33489d3 \
+ --hash=sha256:3fd661a1c4848deea2849b78f432a70c75d10968e902ca83c07c89c9b7050ab8 \
+ --hash=sha256:4750017e6d78590b02b12653e97edd25aefa4734281386cc27501d59b7481e4e \
+ --hash=sha256:50f10afe9230072c5aad9f6636115ea99b32c102f4c61e8236d8642c73ec7a13 \
+ --hash=sha256:5472ed9f581e10c32e79424c996cf54c46c42237759f4224806a0cd4bb770993 \
+ --hash=sha256:5a78ab9e9d177ee8731e950feb48c57380036d462b49e3fb61a67ce529ff5f60 \
+ --hash=sha256:5a9dc1da5cc94d77056b91ba38365c72ae08556b6345bef06257c7e9eccabafe \
+ --hash=sha256:6a60c905fd2c15e848ce1fc315fd34d8a9cc72c1dee022a0d8f4c62991131307 \
+ --hash=sha256:7347cff1eb4ef3fc335d9d4acc89588051b2df43799e5d944696ef43da79c873 \
+ --hash=sha256:7583c03d114b4478b7a357a1915305163e9eac2dfe080da900555c975cca2a11 \
+ --hash=sha256:7a919236a090fb93081fbd1cec030f675910f3863825b34a9afbcae71f643127 \
+ --hash=sha256:822a38b8cf112348f3accbc73274a94b7bf82515cb14a85ba586d126a5a72851 \
+ --hash=sha256:94ccdd2f6db824c31266aaf93e0f31c1c43b8bc531cd2b3a1d924e3c26a4f294 \
+ --hash=sha256:980a179cbf4eb5bc56f7507e53f76720d031bcf0cef52cd53c815720eb2fc30c \
+ --hash=sha256:98286d20014ed2067ad02b0be1e17c7e522255b188346e79ff266af51a54eb33 \
+ --hash=sha256:aa034cd582ba9e4a120c8f19efa263fcad0f10fc481e73fb8c0d603085f941c4 \
+ --hash=sha256:ace7ed4a0c20fa54d90032be32f9c656b6d75445168da78d14fe9080a0c208ad \
+ --hash=sha256:ad141d8a130cb085a0ed3a6638b643e2b591cb98a4591996780597a632acfe20 \
+ --hash=sha256:b24d95a65009c2447e0b49cda043ac53fecf4f09e358d87a57446458f91b8a91 \
+ --hash=sha256:be5b751ad88fdb58fb73871d456248c88204f213aaa3c9aab49b6a1802b3fa8d \
+ --hash=sha256:c994a89ba247a4d4f63ef9fdefb93aa3e1f98740e4800d5351ebd56992ac75e3 \
+ --hash=sha256:d2fd4bc081f1d6a6063396b6d97b00d98e86d9d3a3ac2949dba574a84e148080 \
+ --hash=sha256:db72d2974f91aee652d606c7def98744ca6b899bd7dd3009fd75ebe0b5a51034 \
+ --hash=sha256:dc0bf7b6f23c9ecb49ec0924dc645620276b41e160e9b283ed44ca004c060d79 \
+ --hash=sha256:e0b8d5722057000694edf105b8f492e7eb2f3aa6247a5f0c9170d1e0d074151c \
+ --hash=sha256:ec37233fe39af97b00bf20dc2ceda04d39b9ea19ce0ee605e16ece9785e11f65 \
+ --hash=sha256:ff8df21d00d73c371bead542cefef365ee87ca3a5660de292444021ff84e3b8c
+starlette==0.37.2 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:6fe59f29268538e5d0d182f2791a479a0c64638e6935d1c6989e63fb2699c6ee \
--hash=sha256:9af890290133b79fc3db55474ade20f6220a364a0402e0b556e7cd5e1e093823
-threadpoolctl==3.5.0 ; python_version >= "3.12" and python_version < "4.0" \
+tensorboard-data-server==0.7.2 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:7e0610d205889588983836ec05dc098e80f97b7e7bbff7e994ebb78f578d0ddb \
+ --hash=sha256:9fe5d24221b29625dbc7328b0436ca7fc1c23de4acf4d272f1180856e32f9f60 \
+ --hash=sha256:ef687163c24185ae9754ed5650eb5bc4d84ff257aabdc33f0cc6f74d8ba54530
+tensorboard==2.16.2 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:9f2b4e7dad86667615c0e5cd072f1ea8403fc032a299f0072d6f74855775cc45
+tensorflow-io-gcs-filesystem==0.37.0 ; python_version >= "3.11" and python_version < "3.12" \
+ --hash=sha256:03d5598b8007551f4e1391bf85a83a1865e3fa0789beef15a200efaa06a23fb5 \
+ --hash=sha256:0e2901bc4a91158fa0a10d37594c8a5efb1445dd5a041b1b5b90f782a5d1b15e \
+ --hash=sha256:13bc337f2c2db63a39c81c8fd0ececc0c3d5fcf4ce229dfed0b0085a23dd60e9 \
+ --hash=sha256:48a8e7aec651bea8db410f6426c6446a56d16a5ab32201a70d8d684c113137b7 \
+ --hash=sha256:4ec3c0d0a9d3676a2e74198e3dff66d74c7c34f974257f2176236d0703b31a0e \
+ --hash=sha256:500ec871a8d59cf78992b7fd4750d86ea3d35e231fb0bea7a7eabcf73abfceeb \
+ --hash=sha256:57e7af9c81e79bf8fb552985dc8972ac90437d34bd4c1c9019a92a07eb12bc98 \
+ --hash=sha256:677d6d7c84a94a3b27ea5d16633ea09adadef09c2630480e8e94209558828b02 \
+ --hash=sha256:71ccf64a137efcb2be2627225b4e48110cbf34da39b23c5cc688fe803f2510f1 \
+ --hash=sha256:82cc4d8e26fb143fc814ac8ab95fede83363a315f5b62f8ae68312f1aca1cc6e \
+ --hash=sha256:8385f4fe447812bd8e2e11ef523cf02765319100e5d9e4a9b5a876d4440c900c \
+ --hash=sha256:8d3ad5f30b6dbe09baefdb80e9aa7ff3869c772928b865f8ffc8402be7675a43 \
+ --hash=sha256:8e5d1ac4d2010e8cdf259918ba1500c942b51b7ed2e549f55b404c1fb52f695d \
+ --hash=sha256:95bb229e968fca943806c6ac04e81dc4966fc4a36ab83efaa061a4ecb3ea5e85 \
+ --hash=sha256:af0f79400656bb88bf326d2b8e63aef49c07a0ce8c14c3e2589a62e765d8c21f \
+ --hash=sha256:eab6e4c1daf7ddbfef608cd8e2102861021678dfb3f6a7fb3f613db9d6992919
+tensorflow[and-cuda]==2.16.1 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:03b946e73bf48d857928329b8b321b00b42fe1b4f774c6580666683b0629689f \
+ --hash=sha256:093573a8eb93ef9511e7015b8de9659ed27156f2f05e6d1211f8f4cb76407ee1 \
+ --hash=sha256:09cac3c6a8fbf85a9b95491b58086154dd00a09956ed31823bb45c6605f0e881 \
+ --hash=sha256:1c5611e7357b7a4bc6dccc60750c91e27cdff82622fc917848f22add5ab8de26 \
+ --hash=sha256:1e96047657c64459a36a0cc211a3d003df96c7be3f95a84f7b705715f5697270 \
+ --hash=sha256:21a3c6d76a39f52754c389326f6bef8aef3c26b5bc89ca365add4a69483e569e \
+ --hash=sha256:42858b5d14159a2b9cc01c7f5a88e063b0601f20430cb358374005a67da38114 \
+ --hash=sha256:4a123fbb5788ba30d1113ce01bb166ddf85056fcb40e287c32a929ebfa4aa061 \
+ --hash=sha256:617df9fa2d697c4bc22fa3ee87eb01d580ab1bd0438fea15c4ec2f2870c40bb0 \
+ --hash=sha256:8231a9d7bba92a51231dcdcc3073920ad7d22fa88c64c7e2ecb7f1feac9d5fcb \
+ --hash=sha256:8e376ab46fb1df18a1f927d77011d36ecf7b717a81cbfe4a941c7bf5236939b3 \
+ --hash=sha256:92152aa77c402684e9066885515af6a45d88455c4453a818052c7369357078d8 \
+ --hash=sha256:930c61100cce3a5cb63d30fe6776504405214e8398a26ca968222ecb8b8f9404 \
+ --hash=sha256:ab79f156dd746c2dae906e3b4c5daac3855742941752e5a2c28f094c56eed466 \
+ --hash=sha256:ae0554471d472b8095f8a5204d878389d0d4bc88f6ef6edcd477b952dff5cfab \
+ --hash=sha256:bbf06d879070dfce2617c7d2bb19696bb1b2bcbb3b4ae009520e7166dd75dfc2 \
+ --hash=sha256:c612cdd436bb55b8dae1ecdd1d253496c95b006870b7165b8480c6606b8622aa \
+ --hash=sha256:cc2065d1d27f9f89fea8a0fe8fdf6c437ae60987cd7f2928e0d00e532e79e44d \
+ --hash=sha256:e9cf3fba7f389ff8b8342c5fbebb2529321e0ce9e03d7bcb3657ee0876686c36 \
+ --hash=sha256:f8a5b83ca4bf1813da158f63479cfdf848c0761e5120258417b3a96074a489f5
+termcolor==2.4.0 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:9297c0df9c99445c2412e832e882a7884038a25617c60cea2ad69488d4040d63 \
+ --hash=sha256:aab9e56047c8ac41ed798fa36d892a37aca6b3e9159f3e0c24bc64a9b3ac7b7a
+thinc==8.2.3 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:0d57bdf43e0acd1406d681bf988179f677cf1b385c86f744bf314d827383ce31 \
+ --hash=sha256:1df983af74952d4818703e6bac8af64fad338eaaef8b017fa05d372e3c68e577 \
+ --hash=sha256:27950dc8a14e1ead09dec329ad98edf1b8f7cc71ec9d5ce5f301073de9d7dadf \
+ --hash=sha256:2817bde75c92f98fee747efdbebca68d16158b808401c5a922ba54a5f2619e9b \
+ --hash=sha256:324e5d2c98f787d82d239cf33cee425e1c11e34a3c96cb3f4e1ee5661abef50c \
+ --hash=sha256:45c1a2880329eae53da1d77a4898b7fd30faad445b28fdf92c5557dbf6492ff0 \
+ --hash=sha256:45e6416e56d5101d0557e31cd06235d80fc89e9ac455ef1b444c440cb3c1ce64 \
+ --hash=sha256:4d29ee871cfd0d40f4a0436e154640c0965b163b91a088a85bcd5658c1cc3ed4 \
+ --hash=sha256:4d448c8a870f594125cbfadc91024ce67683eae5698207101d2ea4793ab222a1 \
+ --hash=sha256:53b48a6ae43b0e4054816a378163237b1d2120a49c71994682037437d64b7f84 \
+ --hash=sha256:5c899b25442ed915bc77fa4cf07e908dea1bccab7c4b8d854cc0b261026d6a06 \
+ --hash=sha256:5e6ebf63a185d7691b38655a184e30554fbe589805a802d97230eed07af8ea39 \
+ --hash=sha256:607223c178ae5fba36a3b35fa82d94a453694551bcfbe7f9ac04a01a9e87ebad \
+ --hash=sha256:78311a593b8bf3f03af52bf71d6b364463c598f3540ea8387c00017d2a0e0a5d \
+ --hash=sha256:83a6b46d5f0accf0c2b2e5ff05b1bffd4d99721513b6d0374574009b0aab292c \
+ --hash=sha256:8b0309d14bcfdad24b1e8bb87f8b245acfd7eb5305be466c284c788adf026ffa \
+ --hash=sha256:97605421b898441733fda24c6dda74a85325fbeebc808176857b0a8e6e7a9d47 \
+ --hash=sha256:9a29a9ca7a5060c923866f16ba7823a4540cfd708eafa7202ee89ac029e0b78b \
+ --hash=sha256:9db67f460dae2e3aada1ff166394ce13c2dabb4db93d6bd79cd256f5beab9599 \
+ --hash=sha256:a336f8cae7374d1768a52e63a5084a1208e30b8761eede113d2703e43e7839f1 \
+ --hash=sha256:a8709d114131680bc7c02b0c97817bd7692eda50beb7849c7908666cf15a6cfd \
+ --hash=sha256:aa65182424efda03be9359c3540928bf2985792f89826a76ee475c7c6b2ec64f \
+ --hash=sha256:aead20abe233adade3c37daeb9d08e5429dfcada81856b1f2b1b7e4a67a671a0 \
+ --hash=sha256:b9489ae7fec427064a50a0c3e7c661a95251756032e31316add2c8c13f98f93c \
+ --hash=sha256:bb7c64d0cb8066c47af9441cd611e89a0e2b28b85f2fffbdec791724c81e1915 \
+ --hash=sha256:bd25b781faae71c52ba053157ab1865f4163be1a6485e70a007855a037ba060f \
+ --hash=sha256:c11ab3236e56311568f1e84099bfbeea3a4ee2434758a32982b224ddf8bad9c5 \
+ --hash=sha256:ce0fb4e534c978ff4b429678ab28db2f81503549f97ed61b2b752c07c08b2083 \
+ --hash=sha256:d0a7f29ad534b6e761ee24d0c9e7402447e8ed4e772922795f77c98d88d7f99c \
+ --hash=sha256:d0bf3840d434e3dbdf294643e6d54d2042d0e652abc68dee16673f28269fc456 \
+ --hash=sha256:d9b81e3c1e89c8ed6dff5a8440f584cda623ec77a3bd8c0ed059936405b8a7ca \
+ --hash=sha256:f01a7107c36c4fc60b60fdbda30d76a0ac9bc8f4f9c7f6872db62250e2f836a5 \
+ --hash=sha256:f5afc5222912a80bda8bdcec958362a2ba538d7027dc8db6154845d2859dca76 \
+ --hash=sha256:fce09571619f344983f915f5deb5b8346304b56d3a9ae1bc5ac8c5872eee0738
+threadpoolctl==3.5.0 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:082433502dd922bf738de0d8bcc4fdcbf0979ff44c42bd40f5af8a282f6fa107 \
--hash=sha256:56c1e26c150397e58c4926da8eeee87533b1e32bef131bd4bf6a2f45f3185467
-tomlkit==0.12.0 ; python_version >= "3.12" and python_version < "4.0" \
+tomlkit==0.12.0 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:01f0477981119c7d8ee0f67ebe0297a7c95b14cf9f4b102b45486deb77018716 \
--hash=sha256:926f1f37a1587c7a4f6c7484dae538f1345d96d793d9adab5d3675957b1d0766
-toolz==0.12.1 ; python_version >= "3.12" and python_version < "4.0" \
+toolz==0.12.1 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:d22731364c07d72eea0a0ad45bafb2c2937ab6fd38a3507bf55eae8744aa7d85 \
--hash=sha256:ecca342664893f177a13dac0e6b41cbd8ac25a358e5f215316d43e2100224f4d
-tqdm==4.66.4 ; python_version >= "3.12" and python_version < "4.0" \
+tqdm==4.66.4 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:b75ca56b413b030bc3f00af51fd2c1a1a5eac6a0c1cca83cbb37a5c52abce644 \
--hash=sha256:e4d936c9de8727928f3be6079590e97d9abfe8d39a590be678eb5919ffc186bb
-typer==0.12.3 ; python_version >= "3.12" and python_version < "4.0" \
- --hash=sha256:070d7ca53f785acbccba8e7d28b08dcd88f79f1fbda035ade0aecec71ca5c914 \
- --hash=sha256:49e73131481d804288ef62598d97a1ceef3058905aa536a1134f90891ba35482
-typing-extensions==4.11.0 ; python_version >= "3.12" and python_version < "4.0" \
- --hash=sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0 \
- --hash=sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a
-tzdata==2024.1 ; python_version >= "3.12" and python_version < "4.0" \
+typer==0.9.4 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:aa6c4a4e2329d868b80ecbaf16f807f2b54e192209d7ac9dd42691d63f7a54eb \
+ --hash=sha256:f714c2d90afae3a7929fcd72a3abb08df305e1ff61719381384211c4070af57f
+typer[all]==0.9.4 ; python_version >= "3.11" and python_version < "4.0" and sys_platform != "emscripten" \
+ --hash=sha256:aa6c4a4e2329d868b80ecbaf16f807f2b54e192209d7ac9dd42691d63f7a54eb \
+ --hash=sha256:f714c2d90afae3a7929fcd72a3abb08df305e1ff61719381384211c4070af57f
+typing-extensions==4.12.0 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:8cbcdc8606ebcb0d95453ad7dc5065e6237b6aa230a31e81d0f440c30fed5fd8 \
+ --hash=sha256:b349c66bea9016ac22978d800cfff206d5f9816951f12a7d0ec5578b0a819594
+tzdata==2024.1 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd \
--hash=sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252
-ujson==5.10.0 ; python_version >= "3.12" and python_version < "4.0" \
- --hash=sha256:0de4971a89a762398006e844ae394bd46991f7c385d7a6a3b93ba229e6dac17e \
- --hash=sha256:129e39af3a6d85b9c26d5577169c21d53821d8cf68e079060602e861c6e5da1b \
- --hash=sha256:22cffecf73391e8abd65ef5f4e4dd523162a3399d5e84faa6aebbf9583df86d6 \
- --hash=sha256:232cc85f8ee3c454c115455195a205074a56ff42608fd6b942aa4c378ac14dd7 \
- --hash=sha256:2544912a71da4ff8c4f7ab5606f947d7299971bdd25a45e008e467ca638d13c9 \
- --hash=sha256:2601aa9ecdbee1118a1c2065323bda35e2c5a2cf0797ef4522d485f9d3ef65bd \
- --hash=sha256:26b0e2d2366543c1bb4fbd457446f00b0187a2bddf93148ac2da07a53fe51569 \
- --hash=sha256:2987713a490ceb27edff77fb184ed09acdc565db700ee852823c3dc3cffe455f \
- --hash=sha256:29b443c4c0a113bcbb792c88bea67b675c7ca3ca80c3474784e08bba01c18d51 \
- --hash=sha256:2a890b706b64e0065f02577bf6d8ca3b66c11a5e81fb75d757233a38c07a1f20 \
- --hash=sha256:2aff2985cef314f21d0fecc56027505804bc78802c0121343874741650a4d3d1 \
- --hash=sha256:348898dd702fc1c4f1051bc3aacbf894caa0927fe2c53e68679c073375f732cf \
- --hash=sha256:38665e7d8290188b1e0d57d584eb8110951a9591363316dd41cf8686ab1d0abc \
- --hash=sha256:38d5d36b4aedfe81dfe251f76c0467399d575d1395a1755de391e58985ab1c2e \
- --hash=sha256:3ff201d62b1b177a46f113bb43ad300b424b7847f9c5d38b1b4ad8f75d4a282a \
- --hash=sha256:4573fd1695932d4f619928fd09d5d03d917274381649ade4328091ceca175539 \
- --hash=sha256:4734ee0745d5928d0ba3a213647f1c4a74a2a28edc6d27b2d6d5bd9fa4319e27 \
- --hash=sha256:4c4fc16f11ac1612f05b6f5781b384716719547e142cfd67b65d035bd85af165 \
- --hash=sha256:502bf475781e8167f0f9d0e41cd32879d120a524b22358e7f205294224c71126 \
- --hash=sha256:57aaf98b92d72fc70886b5a0e1a1ca52c2320377360341715dd3933a18e827b1 \
- --hash=sha256:59e02cd37bc7c44d587a0ba45347cc815fb7a5fe48de16bf05caa5f7d0d2e816 \
- --hash=sha256:5b6fee72fa77dc172a28f21693f64d93166534c263adb3f96c413ccc85ef6e64 \
- --hash=sha256:5b91b5d0d9d283e085e821651184a647699430705b15bf274c7896f23fe9c9d8 \
- --hash=sha256:604a046d966457b6cdcacc5aa2ec5314f0e8c42bae52842c1e6fa02ea4bda42e \
- --hash=sha256:618efd84dc1acbd6bff8eaa736bb6c074bfa8b8a98f55b61c38d4ca2c1f7f287 \
- --hash=sha256:61d0af13a9af01d9f26d2331ce49bb5ac1fb9c814964018ac8df605b5422dcb3 \
- --hash=sha256:61e1591ed9376e5eddda202ec229eddc56c612b61ac6ad07f96b91460bb6c2fb \
- --hash=sha256:621e34b4632c740ecb491efc7f1fcb4f74b48ddb55e65221995e74e2d00bbff0 \
- --hash=sha256:6627029ae4f52d0e1a2451768c2c37c0c814ffc04f796eb36244cf16b8e57043 \
- --hash=sha256:67079b1f9fb29ed9a2914acf4ef6c02844b3153913eb735d4bf287ee1db6e557 \
- --hash=sha256:6dea1c8b4fc921bf78a8ff00bbd2bfe166345f5536c510671bccececb187c80e \
- --hash=sha256:6e32abdce572e3a8c3d02c886c704a38a1b015a1fb858004e03d20ca7cecbb21 \
- --hash=sha256:7223f41e5bf1f919cd8d073e35b229295aa8e0f7b5de07ed1c8fddac63a6bc5d \
- --hash=sha256:73814cd1b9db6fc3270e9d8fe3b19f9f89e78ee9d71e8bd6c9a626aeaeaf16bd \
- --hash=sha256:7490655a2272a2d0b072ef16b0b58ee462f4973a8f6bbe64917ce5e0a256f9c0 \
- --hash=sha256:7663960f08cd5a2bb152f5ee3992e1af7690a64c0e26d31ba7b3ff5b2ee66337 \
- --hash=sha256:78778a3aa7aafb11e7ddca4e29f46bc5139131037ad628cc10936764282d6753 \
- --hash=sha256:7c10f4654e5326ec14a46bcdeb2b685d4ada6911050aa8baaf3501e57024b804 \
- --hash=sha256:7ec0ca8c415e81aa4123501fee7f761abf4b7f386aad348501a26940beb1860f \
- --hash=sha256:924f7318c31874d6bb44d9ee1900167ca32aa9b69389b98ecbde34c1698a250f \
- --hash=sha256:94a87f6e151c5f483d7d54ceef83b45d3a9cca7a9cb453dbdbb3f5a6f64033f5 \
- --hash=sha256:98ba15d8cbc481ce55695beee9f063189dce91a4b08bc1d03e7f0152cd4bbdd5 \
- --hash=sha256:a245d59f2ffe750446292b0094244df163c3dc96b3ce152a2c837a44e7cda9d1 \
- --hash=sha256:a5b366812c90e69d0f379a53648be10a5db38f9d4ad212b60af00bd4048d0f00 \
- --hash=sha256:a65b6af4d903103ee7b6f4f5b85f1bfd0c90ba4eeac6421aae436c9988aa64a2 \
- --hash=sha256:a984a3131da7f07563057db1c3020b1350a3e27a8ec46ccbfbf21e5928a43050 \
- --hash=sha256:a9d2edbf1556e4f56e50fab7d8ff993dbad7f54bac68eacdd27a8f55f433578e \
- --hash=sha256:ab13a2a9e0b2865a6c6db9271f4b46af1c7476bfd51af1f64585e919b7c07fd4 \
- --hash=sha256:ac56eb983edce27e7f51d05bc8dd820586c6e6be1c5216a6809b0c668bb312b8 \
- --hash=sha256:ad88ac75c432674d05b61184178635d44901eb749786c8eb08c102330e6e8996 \
- --hash=sha256:b0111b27f2d5c820e7f2dbad7d48e3338c824e7ac4d2a12da3dc6061cc39c8e6 \
- --hash=sha256:b3cd8f3c5d8c7738257f1018880444f7b7d9b66232c64649f562d7ba86ad4bc1 \
- --hash=sha256:b9500e61fce0cfc86168b248104e954fead61f9be213087153d272e817ec7b4f \
- --hash=sha256:ba17799fcddaddf5c1f75a4ba3fd6441f6a4f1e9173f8a786b42450851bd74f1 \
- --hash=sha256:ba43cc34cce49cf2d4bc76401a754a81202d8aa926d0e2b79f0ee258cb15d3a4 \
- --hash=sha256:baed37ea46d756aca2955e99525cc02d9181de67f25515c468856c38d52b5f3b \
- --hash=sha256:beeaf1c48e32f07d8820c705ff8e645f8afa690cca1544adba4ebfa067efdc88 \
- --hash=sha256:c18610b9ccd2874950faf474692deee4223a994251bc0a083c114671b64e6518 \
- --hash=sha256:c66962ca7565605b355a9ed478292da628b8f18c0f2793021ca4425abf8b01e5 \
- --hash=sha256:caf270c6dba1be7a41125cd1e4fc7ba384bf564650beef0df2dd21a00b7f5770 \
- --hash=sha256:cc6139531f13148055d691e442e4bc6601f6dba1e6d521b1585d4788ab0bfad4 \
- --hash=sha256:d2c75269f8205b2690db4572a4a36fe47cd1338e4368bc73a7a0e48789e2e35a \
- --hash=sha256:d47ebb01bd865fdea43da56254a3930a413f0c5590372a1241514abae8aa7c76 \
- --hash=sha256:d4dc2fd6b3067c0782e7002ac3b38cf48608ee6366ff176bbd02cf969c9c20fe \
- --hash=sha256:d7d0e0ceeb8fe2468c70ec0c37b439dd554e2aa539a8a56365fd761edb418988 \
- --hash=sha256:d8640fb4072d36b08e95a3a380ba65779d356b2fee8696afeb7794cf0902d0a1 \
- --hash=sha256:dee5e97c2496874acbf1d3e37b521dd1f307349ed955e62d1d2f05382bc36dd5 \
- --hash=sha256:dfef2814c6b3291c3c5f10065f745a1307d86019dbd7ea50e83504950136ed5b \
- --hash=sha256:e1402f0564a97d2a52310ae10a64d25bcef94f8dd643fcf5d310219d915484f7 \
- --hash=sha256:e7ce306a42b6b93ca47ac4a3b96683ca554f6d35dd8adc5acfcd55096c8dfcb8 \
- --hash=sha256:e82d4bb2138ab05e18f089a83b6564fee28048771eb63cdecf4b9b549de8a2cc \
- --hash=sha256:ecb24f0bdd899d368b715c9e6664166cf694d1e57be73f17759573a6986dd95a \
- --hash=sha256:f00ea7e00447918ee0eff2422c4add4c5752b1b60e88fcb3c067d4a21049a720 \
- --hash=sha256:f3caf9cd64abfeb11a3b661329085c5e167abbe15256b3b68cb5d914ba7396f3 \
- --hash=sha256:f44bd4b23a0e723bf8b10628288c2c7c335161d6840013d4d5de20e48551773b \
- --hash=sha256:f77b74475c462cb8b88680471193064d3e715c7c6074b1c8c412cb526466efe9 \
- --hash=sha256:f8ccb77b3e40b151e20519c6ae6d89bfe3f4c14e8e210d910287f778368bb3d1 \
- --hash=sha256:fbd8fd427f57a03cff3ad6574b5e299131585d9727c8c366da4624a9069ed746
-urllib3==2.2.1 ; python_version >= "3.12" and python_version < "4.0" \
+urllib3==2.2.1 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d \
--hash=sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19
-uvicorn==0.29.0 ; python_version >= "3.12" and python_version < "4.0" and sys_platform != "emscripten" \
- --hash=sha256:2c2aac7ff4f4365c206fd773a39bf4ebd1047c238f8b8268ad996829323473de \
- --hash=sha256:6a69214c0b6a087462412670b3ef21224fa48cae0e452b5883e8e8bdfdd11dd0
-uvicorn[standard]==0.29.0 ; python_version >= "3.12" and python_version < "4.0" \
- --hash=sha256:2c2aac7ff4f4365c206fd773a39bf4ebd1047c238f8b8268ad996829323473de \
- --hash=sha256:6a69214c0b6a087462412670b3ef21224fa48cae0e452b5883e8e8bdfdd11dd0
-uvloop==0.19.0 ; (sys_platform != "win32" and sys_platform != "cygwin") and platform_python_implementation != "PyPy" and python_version >= "3.12" and python_version < "4.0" \
- --hash=sha256:0246f4fd1bf2bf702e06b0d45ee91677ee5c31242f39aab4ea6fe0c51aedd0fd \
- --hash=sha256:02506dc23a5d90e04d4f65c7791e65cf44bd91b37f24cfc3ef6cf2aff05dc7ec \
- --hash=sha256:13dfdf492af0aa0a0edf66807d2b465607d11c4fa48f4a1fd41cbea5b18e8e8b \
- --hash=sha256:2693049be9d36fef81741fddb3f441673ba12a34a704e7b4361efb75cf30befc \
- --hash=sha256:271718e26b3e17906b28b67314c45d19106112067205119dddbd834c2b7ce797 \
- --hash=sha256:2df95fca285a9f5bfe730e51945ffe2fa71ccbfdde3b0da5772b4ee4f2e770d5 \
- --hash=sha256:31e672bb38b45abc4f26e273be83b72a0d28d074d5b370fc4dcf4c4eb15417d2 \
- --hash=sha256:34175c9fd2a4bc3adc1380e1261f60306344e3407c20a4d684fd5f3be010fa3d \
- --hash=sha256:45bf4c24c19fb8a50902ae37c5de50da81de4922af65baf760f7c0c42e1088be \
- --hash=sha256:472d61143059c84947aa8bb74eabbace30d577a03a1805b77933d6bd13ddebbd \
- --hash=sha256:47bf3e9312f63684efe283f7342afb414eea4d3011542155c7e625cd799c3b12 \
- --hash=sha256:492e2c32c2af3f971473bc22f086513cedfc66a130756145a931a90c3958cb17 \
- --hash=sha256:4ce6b0af8f2729a02a5d1575feacb2a94fc7b2e983868b009d51c9a9d2149bef \
- --hash=sha256:5138821e40b0c3e6c9478643b4660bd44372ae1e16a322b8fc07478f92684e24 \
- --hash=sha256:5588bd21cf1fcf06bded085f37e43ce0e00424197e7c10e77afd4bbefffef428 \
- --hash=sha256:570fc0ed613883d8d30ee40397b79207eedd2624891692471808a95069a007c1 \
- --hash=sha256:5a05128d315e2912791de6088c34136bfcdd0c7cbc1cf85fd6fd1bb321b7c849 \
- --hash=sha256:5daa304d2161d2918fa9a17d5635099a2f78ae5b5960e742b2fcfbb7aefaa593 \
- --hash=sha256:5f17766fb6da94135526273080f3455a112f82570b2ee5daa64d682387fe0dcd \
- --hash=sha256:6e3d4e85ac060e2342ff85e90d0c04157acb210b9ce508e784a944f852a40e67 \
- --hash=sha256:7010271303961c6f0fe37731004335401eb9075a12680738731e9c92ddd96ad6 \
- --hash=sha256:7207272c9520203fea9b93843bb775d03e1cf88a80a936ce760f60bb5add92f3 \
- --hash=sha256:78ab247f0b5671cc887c31d33f9b3abfb88d2614b84e4303f1a63b46c046c8bd \
- --hash=sha256:7b1fd71c3843327f3bbc3237bedcdb6504fd50368ab3e04d0410e52ec293f5b8 \
- --hash=sha256:8ca4956c9ab567d87d59d49fa3704cf29e37109ad348f2d5223c9bf761a332e7 \
- --hash=sha256:91ab01c6cd00e39cde50173ba4ec68a1e578fee9279ba64f5221810a9e786533 \
- --hash=sha256:cd81bdc2b8219cb4b2556eea39d2e36bfa375a2dd021404f90a62e44efaaf957 \
- --hash=sha256:da8435a3bd498419ee8c13c34b89b5005130a476bda1d6ca8cfdde3de35cd650 \
- --hash=sha256:de4313d7f575474c8f5a12e163f6d89c0a878bc49219641d49e6f1444369a90e \
- --hash=sha256:e27f100e1ff17f6feeb1f33968bc185bf8ce41ca557deee9d9bbbffeb72030b7 \
- --hash=sha256:f467a5fd23b4fc43ed86342641f3936a68ded707f4627622fa3f82a120e18256
-watchfiles==0.21.0 ; python_version >= "3.12" and python_version < "4.0" \
- --hash=sha256:02b73130687bc3f6bb79d8a170959042eb56eb3a42df3671c79b428cd73f17cc \
- --hash=sha256:02d91cbac553a3ad141db016e3350b03184deaafeba09b9d6439826ee594b365 \
- --hash=sha256:06247538e8253975bdb328e7683f8515ff5ff041f43be6c40bff62d989b7d0b0 \
- --hash=sha256:08dca260e85ffae975448e344834d765983237ad6dc308231aa16e7933db763e \
- --hash=sha256:0d9ac347653ebd95839a7c607608703b20bc07e577e870d824fa4801bc1cb124 \
- --hash=sha256:0dd5fad9b9c0dd89904bbdea978ce89a2b692a7ee8a0ce19b940e538c88a809c \
- --hash=sha256:11cd0c3100e2233e9c53106265da31d574355c288e15259c0d40a4405cbae317 \
- --hash=sha256:18722b50783b5e30a18a8a5db3006bab146d2b705c92eb9a94f78c72beb94094 \
- --hash=sha256:18d5b4da8cf3e41895b34e8c37d13c9ed294954907929aacd95153508d5d89d7 \
- --hash=sha256:1ad7247d79f9f55bb25ab1778fd47f32d70cf36053941f07de0b7c4e96b5d235 \
- --hash=sha256:1b8d1eae0f65441963d805f766c7e9cd092f91e0c600c820c764a4ff71a0764c \
- --hash=sha256:1bd467213195e76f838caf2c28cd65e58302d0254e636e7c0fca81efa4a2e62c \
- --hash=sha256:1c9198c989f47898b2c22201756f73249de3748e0fc9de44adaf54a8b259cc0c \
- --hash=sha256:1fd9a5205139f3c6bb60d11f6072e0552f0a20b712c85f43d42342d162be1235 \
- --hash=sha256:214cee7f9e09150d4fb42e24919a1e74d8c9b8a9306ed1474ecaddcd5479c293 \
- --hash=sha256:27b4035013f1ea49c6c0b42d983133b136637a527e48c132d368eb19bf1ac6aa \
- --hash=sha256:3a23092a992e61c3a6a70f350a56db7197242f3490da9c87b500f389b2d01eef \
- --hash=sha256:3ad692bc7792be8c32918c699638b660c0de078a6cbe464c46e1340dadb94c19 \
- --hash=sha256:3ccceb50c611c433145502735e0370877cced72a6c70fd2410238bcbc7fe51d8 \
- --hash=sha256:3d0f32ebfaa9c6011f8454994f86108c2eb9c79b8b7de00b36d558cadcedaa3d \
- --hash=sha256:3f92944efc564867bbf841c823c8b71bb0be75e06b8ce45c084b46411475a915 \
- --hash=sha256:40bca549fdc929b470dd1dbfcb47b3295cb46a6d2c90e50588b0a1b3bd98f429 \
- --hash=sha256:43babacef21c519bc6631c5fce2a61eccdfc011b4bcb9047255e9620732c8097 \
- --hash=sha256:4566006aa44cb0d21b8ab53baf4b9c667a0ed23efe4aaad8c227bfba0bf15cbe \
- --hash=sha256:49f56e6ecc2503e7dbe233fa328b2be1a7797d31548e7a193237dcdf1ad0eee0 \
- --hash=sha256:4c48a10d17571d1275701e14a601e36959ffada3add8cdbc9e5061a6e3579a5d \
- --hash=sha256:4ea10a29aa5de67de02256a28d1bf53d21322295cb00bd2d57fcd19b850ebd99 \
- --hash=sha256:511f0b034120cd1989932bf1e9081aa9fb00f1f949fbd2d9cab6264916ae89b1 \
- --hash=sha256:51ddac60b96a42c15d24fbdc7a4bfcd02b5a29c047b7f8bf63d3f6f5a860949a \
- --hash=sha256:57d430f5fb63fea141ab71ca9c064e80de3a20b427ca2febcbfcef70ff0ce895 \
- --hash=sha256:59137c0c6826bd56c710d1d2bda81553b5e6b7c84d5a676747d80caf0409ad94 \
- --hash=sha256:5a03651352fc20975ee2a707cd2d74a386cd303cc688f407296064ad1e6d1562 \
- --hash=sha256:5eb86c6acb498208e7663ca22dbe68ca2cf42ab5bf1c776670a50919a56e64ab \
- --hash=sha256:642d66b75eda909fd1112d35c53816d59789a4b38c141a96d62f50a3ef9b3360 \
- --hash=sha256:6674b00b9756b0af620aa2a3346b01f8e2a3dc729d25617e1b89cf6af4a54eb1 \
- --hash=sha256:668c265d90de8ae914f860d3eeb164534ba2e836811f91fecc7050416ee70aa7 \
- --hash=sha256:66fac0c238ab9a2e72d026b5fb91cb902c146202bbd29a9a1a44e8db7b710b6f \
- --hash=sha256:6c107ea3cf2bd07199d66f156e3ea756d1b84dfd43b542b2d870b77868c98c03 \
- --hash=sha256:6c889025f59884423428c261f212e04d438de865beda0b1e1babab85ef4c0f01 \
- --hash=sha256:6cb8fdc044909e2078c248986f2fc76f911f72b51ea4a4fbbf472e01d14faa58 \
- --hash=sha256:6e9be3ef84e2bb9710f3f777accce25556f4a71e15d2b73223788d528fcc2052 \
- --hash=sha256:7f762a1a85a12cc3484f77eee7be87b10f8c50b0b787bb02f4e357403cad0c0e \
- --hash=sha256:83a696da8922314ff2aec02987eefb03784f473281d740bf9170181829133765 \
- --hash=sha256:853853cbf7bf9408b404754b92512ebe3e3a83587503d766d23e6bf83d092ee6 \
- --hash=sha256:8ad3fe0a3567c2f0f629d800409cd528cb6251da12e81a1f765e5c5345fd0137 \
- --hash=sha256:8c6ed10c2497e5fedadf61e465b3ca12a19f96004c15dcffe4bd442ebadc2d85 \
- --hash=sha256:8d5f400326840934e3507701f9f7269247f7c026d1b6cfd49477d2be0933cfca \
- --hash=sha256:927c589500f9f41e370b0125c12ac9e7d3a2fd166b89e9ee2828b3dda20bfe6f \
- --hash=sha256:9a0aa47f94ea9a0b39dd30850b0adf2e1cd32a8b4f9c7aa443d852aacf9ca214 \
- --hash=sha256:9b37a7ba223b2f26122c148bb8d09a9ff312afca998c48c725ff5a0a632145f7 \
- --hash=sha256:9c873345680c1b87f1e09e0eaf8cf6c891b9851d8b4d3645e7efe2ec20a20cc7 \
- --hash=sha256:9d09869f2c5a6f2d9df50ce3064b3391d3ecb6dced708ad64467b9e4f2c9bef3 \
- --hash=sha256:9d353c4cfda586db2a176ce42c88f2fc31ec25e50212650c89fdd0f560ee507b \
- --hash=sha256:a1e3014a625bcf107fbf38eece0e47fa0190e52e45dc6eee5a8265ddc6dc5ea7 \
- --hash=sha256:a3b9bec9579a15fb3ca2d9878deae789df72f2b0fdaf90ad49ee389cad5edab6 \
- --hash=sha256:ab03a90b305d2588e8352168e8c5a1520b721d2d367f31e9332c4235b30b8994 \
- --hash=sha256:aff06b2cac3ef4616e26ba17a9c250c1fe9dd8a5d907d0193f84c499b1b6e6a9 \
- --hash=sha256:b3cab0e06143768499384a8a5efb9c4dc53e19382952859e4802f294214f36ec \
- --hash=sha256:b4a21f71885aa2744719459951819e7bf5a906a6448a6b2bbce8e9cc9f2c8128 \
- --hash=sha256:b6d45d9b699ecbac6c7bd8e0a2609767491540403610962968d258fd6405c17c \
- --hash=sha256:be6dd5d52b73018b21adc1c5d28ac0c68184a64769052dfeb0c5d9998e7f56a2 \
- --hash=sha256:c550a56bf209a3d987d5a975cdf2063b3389a5d16caf29db4bdddeae49f22078 \
- --hash=sha256:c76c635fabf542bb78524905718c39f736a98e5ab25b23ec6d4abede1a85a6a3 \
- --hash=sha256:c81818595eff6e92535ff32825f31c116f867f64ff8cdf6562cd1d6b2e1e8f3e \
- --hash=sha256:cfb92d49dbb95ec7a07511bc9efb0faff8fe24ef3805662b8d6808ba8409a71a \
- --hash=sha256:d23bcd6c8eaa6324fe109d8cac01b41fe9a54b8c498af9ce464c1aeeb99903d6 \
- --hash=sha256:d5b1dc0e708fad9f92c296ab2f948af403bf201db8fb2eb4c8179db143732e49 \
- --hash=sha256:d78f30cbe8b2ce770160d3c08cff01b2ae9306fe66ce899b73f0409dc1846c1b \
- --hash=sha256:d8f57c4461cd24fda22493109c45b3980863c58a25b8bec885ca8bea6b8d4b28 \
- --hash=sha256:d9792dff410f266051025ecfaa927078b94cc7478954b06796a9756ccc7e14a9 \
- --hash=sha256:e7941bbcfdded9c26b0bf720cb7e6fd803d95a55d2c14b4bd1f6a2772230c586 \
- --hash=sha256:ebe684d7d26239e23d102a2bad2a358dedf18e462e8808778703427d1f584400 \
- --hash=sha256:ec8c8900dc5c83650a63dd48c4d1d245343f904c4b64b48798c67a3767d7e165 \
- --hash=sha256:f564bf68404144ea6b87a78a3f910cc8de216c6b12a4cf0b27718bf4ec38d303 \
- --hash=sha256:fd7ac678b92b29ba630d8c842d8ad6c555abda1b9ef044d6cc092dacbfc9719d
-websockets==11.0.3 ; python_version >= "3.12" and python_version < "4.0" \
+uvicorn==0.30.0 ; python_version >= "3.11" and python_version < "4.0" and sys_platform != "emscripten" \
+ --hash=sha256:78fa0b5f56abb8562024a59041caeb555c86e48d0efdd23c3fe7de7a4075bdab \
+ --hash=sha256:f678dec4fa3a39706bbf49b9ec5fc40049d42418716cea52b53f07828a60aa37
+wasabi==1.1.2 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:0a3f933c4bf0ed3f93071132c1b87549733256d6c8de6473c5f7ed2e171b5cf9 \
+ --hash=sha256:1aaef3aceaa32edb9c91330d29d3936c0c39fdb965743549c173cb54b16c30b5
+weasel==0.3.4 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:eb16f92dc9f1a3ffa89c165e3a9acd28018ebb656e0da4da02c0d7d8ae3f6178 \
+ --hash=sha256:ee48a944f051d007201c2ea1661d0c41035028c5d5a8bcb29a0b10f1100206ae
+websockets==11.0.3 ; python_version >= "3.11" and python_version < "4.0" \
--hash=sha256:01f5567d9cf6f502d655151645d4e8b72b453413d3819d2b6f1185abc23e82dd \
--hash=sha256:03aae4edc0b1c68498f41a6772d80ac7c1e33c06c6ffa2ac1c27a07653e79d6f \
--hash=sha256:0ac56b661e60edd453585f4bd68eb6a29ae25b5184fd5ba51e97652580458998 \
@@ -1404,3 +1806,145 @@ websockets==11.0.3 ; python_version >= "3.12" and python_version < "4.0" \
--hash=sha256:f61bdb1df43dc9c131791fbc2355535f9024b9a04398d3bd0684fc16ab07df74 \
--hash=sha256:fb06eea71a00a7af0ae6aefbb932fb8a7df3cb390cc217d51a9ad7343de1b8d0 \
--hash=sha256:ffd7dcaf744f25f82190856bc26ed81721508fc5cbf2a330751e135ff1283564
+werkzeug==3.0.3 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:097e5bfda9f0aba8da6b8545146def481d06aa7d3266e7448e2cccf67dd8bd18 \
+ --hash=sha256:fc9645dc43e03e4d630d23143a04a7f947a9a3b5727cd535fdfe155a17cc48c8
+wheel==0.43.0 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:465ef92c69fa5c5da2d1cf8ac40559a8c940886afcef87dcf14b9470862f1d85 \
+ --hash=sha256:55c570405f142630c6b9f72fe09d9b67cf1477fcf543ae5b8dcb1f5b7377da81
+wordcloud==1.9.3 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:0058cf08573c99283fe189e93354d20ca8c9a8aac7207d96e74b93aedd02cdcc \
+ --hash=sha256:038de1701e7853c41850644453f1c9e69f878e480d42efae154684a47fd59f1a \
+ --hash=sha256:05aa3269c5af573cfb11e269de0fe73c2c72aefdd90cdb41368744e7d8bc7507 \
+ --hash=sha256:0c8e18c4afa025819332efffe8008267a83a9c54fe72ae1bc889ddce0eec470d \
+ --hash=sha256:103c9b0465e1cf5b7a38b49ab1c3a0b0301762fa56602ac79287f9d22b46ade3 \
+ --hash=sha256:1847ca4466e2b1588478dd8eb87fa7baa28515b37ab7926471595e8ac81e6578 \
+ --hash=sha256:1932726635c8ed12bb74201d2a6b07f18c2f732aecadb9ae915832485241991f \
+ --hash=sha256:19aa05f60d9261301e4942fd1b1c4b458d903f24c12d2bd1c6ecbb752697a2f3 \
+ --hash=sha256:1d1680bf6c3d1b2f8e3bd02ccfa868fee2655fe13cf5b9e9905251050448fbbd \
+ --hash=sha256:2061a9978a6243107ce1a8a9fa24f421b03a0f7e620769b6f5075857e75aa615 \
+ --hash=sha256:21f47fabe189f39532378759300a624ae166519dfafbd6a22cfe65b14a7d104d \
+ --hash=sha256:2a1c431f20ee28a8840f2552a89bd8332c455c318f4de7b6c2ca3159b76df4f0 \
+ --hash=sha256:387dc2bd528ff6bb661451f2a9fd4ccf74b86072d7a2c868285d4c0cf26abeb4 \
+ --hash=sha256:3b6adfc1465b9176b8bc602745dd3ed8ea782b006a81cb59eab3dde92ad9f94c \
+ --hash=sha256:3b90f0390c0a05ba4b4580fb765a3d45d8d21519b50ca5006d6dbdc2a0b86507 \
+ --hash=sha256:3e3907c6496e197a9c4be76770c5ff8a03eddbdfe5a151a55e4eedeaa45ab3ad \
+ --hash=sha256:4001317c0e3b5cb6fd106228ddcd27524d1caf9ae468b3c2c2fc571c6ce56b22 \
+ --hash=sha256:40c32a324319db610b40f387a2a0b42d091817958a5272e0a4c4eb6a158588b5 \
+ --hash=sha256:419acfe0b1d1227b9e3e14ec1bb6c40fd7fa652df4adf81f0ba3e00daca500b5 \
+ --hash=sha256:47d6918381a8a816141bdd391376bff703ec5aa3a6bd88631097a5e2963ebd1a \
+ --hash=sha256:483aa4f8d17b9744a3b238269593d1794b962fc757a72a9e7e8468c2665cffb7 \
+ --hash=sha256:4df25cb5dd347e43d53e02a009418f5776e7651063aff991865da8f6336bf193 \
+ --hash=sha256:512f3c9a2e8579269a33ac9219d042fd0cc5a3a524ee68079238a3e4efe2b879 \
+ --hash=sha256:524065f8a5a79e00748f45efbeacd25ac1d15850e0d0588753b17a8b2de2a6a7 \
+ --hash=sha256:53489ad22d58be3896ec16ed47604832e393224c89f7d7eed040096b07141ac4 \
+ --hash=sha256:5b2bb53492bc8663ba90a300bbd2da7be5059f9ad192ed1150e9bbbda8016c9a \
+ --hash=sha256:5e74ac99e9582873d7ee28bd03e125dcf73ae46666d55fb4c13e82e90c0e074a \
+ --hash=sha256:5f86042e5ce12e2795798033a56f0246906b4d7d9027d554b6cd951ce2fd342a \
+ --hash=sha256:5fce423a24e6ca1b89b2770a7c6917d6e26f04bcfefa601cf61819b2fc0770c4 \
+ --hash=sha256:61de4a5f3bfd33e0cb013cce6143bcf71959f3cd8536650b90134d745a553c2c \
+ --hash=sha256:643243474faee460e7d08944d3e529c58d0cbf8be11626fbb918ee8ccb913a23 \
+ --hash=sha256:64b342a79553970fa04083761d041067323219ad62b5550a496e42436d23cbb3 \
+ --hash=sha256:65e6f6b68eecb85c326ae19729dd4151fcdebffc2142c9ee882dc2de955210d0 \
+ --hash=sha256:6e33328044db5c01487f2a3a023b5476947942dacd6a5dc8c217fa039f6c5bd9 \
+ --hash=sha256:6f5499e6360219e61808dc0d2b00cd5104f78a82d2ae8f7986df04731713835f \
+ --hash=sha256:6f7977285df9254b8704d3f895c06814a6183c6c89e140d6281848c076635e91 \
+ --hash=sha256:78f4a3fd3526884e4f526ae070bcb47401766c48c9cb6488933f608f810fadae \
+ --hash=sha256:7b0e14e4dfcff7dee331df7880a2031e352e95a7d30e74ff152f162488b04179 \
+ --hash=sha256:7ced0d5c946d82cfc778febafe3eedeb0bae07dd57ea4f21fe06b9ec8225ab31 \
+ --hash=sha256:8078c6c58db4ccb893f120354e7e08bc48a5a5aac3e764f9008bc96a769b208c \
+ --hash=sha256:81f15eb60abc1676808bb85e2edfdbdc0a9011383f2a729c1c2a0cb941516768 \
+ --hash=sha256:888d088f54a897b8597da2fae3954d74b1f7251f7d311bbcc30ec3c6987d3605 \
+ --hash=sha256:8a36788c5c79604653327675023cbd97c68813640887b51ce651bb4f5c28c88b \
+ --hash=sha256:998dc0dc8fcbff88f566f17cb5e0eb3bb21fcafd387b0670be6c14feacaf4cdc \
+ --hash=sha256:a6ae5db43807ca10f5c77dd2d22c78f8f9399758cc5ac6afd7f3c19e58b75d66 \
+ --hash=sha256:a9aa738d63ed674a40f0cc31adb83f4ca5fc195f03a6aff6e010d1f5807d1c58 \
+ --hash=sha256:ab5bae12cf27d8de986e4d4518d4778f2b56c660b250b631ff805024038311a1 \
+ --hash=sha256:ad6db37a6f5abeba51a5d503228ea320d4f2fa774864103e7b24acd9dd86fd0e \
+ --hash=sha256:baea9ac88ec1ab317461c75834b64ad5dad12a02c4f2384dd546eac3c316dbbb \
+ --hash=sha256:c0f458681e4d49be36064f21bfb1dc8d8c3021fe30e474ee634666b4f84fd851 \
+ --hash=sha256:cb1e8bb7d60f7a90fa8439c7b56dd1df60766115fd57480ac0d83ca5204e0117 \
+ --hash=sha256:d00d916509a17b432032161d492ed7f30b2ebd921303090fe1d2b57011a49cc0 \
+ --hash=sha256:d221b4d0d1d2a1d79286c41d8a4c0ce70065488f153e5d81cc0be7fb494ff10f \
+ --hash=sha256:d5e0e7bbd269a62baa63ea2175faea4d74435c0ad828f3d5999fa4c33ebe0629 \
+ --hash=sha256:d74e206f42af172db4d3c0054853523bf46070b12f0626493a56599957dd2196 \
+ --hash=sha256:d95f44739a6972abfb97c12656999952dd28ed03700ee8b6efe35d688d489b36 \
+ --hash=sha256:daa6cfa11ce24e7eb4e42dc896dae4f74ae2166cf90ec997996300566e6811d1 \
+ --hash=sha256:db39dbe91dd31ffb667edcd496f4eeb85ceea397fef4ad51d0766ab934088cc7 \
+ --hash=sha256:dfea303fc1dec4811e4a5671a8021a89724b6fa70639d059ad30c492932be447 \
+ --hash=sha256:e1a1c3cfa86b605a19711ec58920ccb694dca9d5c9d00b373f4d5952d63793e9 \
+ --hash=sha256:e56364c8829d399397a649501f834c12751ab106cba488ba8d86d532889b528c \
+ --hash=sha256:e6956b9f0d0eb14a12f46d41aebb4e7ad2d4c2ec417cc7c586bebd2ddc9c8311 \
+ --hash=sha256:f1c0cff6037a3dc46437537a31925f3895d742fb6d67af71194149763de16a76 \
+ --hash=sha256:f504e3291256c0b6fca044602f8f0e5cb56b7c33724cde9d279c4077fa5b6d27
+wrapt==1.16.0 ; python_version >= "3.11" and python_version < "4.0" \
+ --hash=sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc \
+ --hash=sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81 \
+ --hash=sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09 \
+ --hash=sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e \
+ --hash=sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca \
+ --hash=sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0 \
+ --hash=sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb \
+ --hash=sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487 \
+ --hash=sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40 \
+ --hash=sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c \
+ --hash=sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060 \
+ --hash=sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202 \
+ --hash=sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41 \
+ --hash=sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9 \
+ --hash=sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b \
+ --hash=sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664 \
+ --hash=sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d \
+ --hash=sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362 \
+ --hash=sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00 \
+ --hash=sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc \
+ --hash=sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1 \
+ --hash=sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267 \
+ --hash=sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956 \
+ --hash=sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966 \
+ --hash=sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1 \
+ --hash=sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228 \
+ --hash=sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72 \
+ --hash=sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d \
+ --hash=sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292 \
+ --hash=sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0 \
+ --hash=sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0 \
+ --hash=sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36 \
+ --hash=sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c \
+ --hash=sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5 \
+ --hash=sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f \
+ --hash=sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73 \
+ --hash=sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b \
+ --hash=sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2 \
+ --hash=sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593 \
+ --hash=sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39 \
+ --hash=sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389 \
+ --hash=sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf \
+ --hash=sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf \
+ --hash=sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89 \
+ --hash=sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c \
+ --hash=sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c \
+ --hash=sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f \
+ --hash=sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440 \
+ --hash=sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465 \
+ --hash=sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136 \
+ --hash=sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b \
+ --hash=sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8 \
+ --hash=sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3 \
+ --hash=sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8 \
+ --hash=sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6 \
+ --hash=sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e \
+ --hash=sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f \
+ --hash=sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c \
+ --hash=sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e \
+ --hash=sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8 \
+ --hash=sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2 \
+ --hash=sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020 \
+ --hash=sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35 \
+ --hash=sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d \
+ --hash=sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3 \
+ --hash=sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537 \
+ --hash=sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809 \
+ --hash=sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d \
+ --hash=sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a \
+ --hash=sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4
diff --git a/style.css b/style.css
deleted file mode 100644
index 8ed6ed52078104797613820e8ee884eedfaa2815..0000000000000000000000000000000000000000
--- a/style.css
+++ /dev/null
@@ -1,3 +0,0 @@
-.justify-between {
- justify-content: space-between;
-}