Delete app.ipynb
Browse files
app.ipynb
DELETED
|
@@ -1,437 +0,0 @@
|
|
| 1 |
-
{
|
| 2 |
-
"cells": [
|
| 3 |
-
{
|
| 4 |
-
"cell_type": "code",
|
| 5 |
-
"execution_count": 2,
|
| 6 |
-
"metadata": {},
|
| 7 |
-
"outputs": [
|
| 8 |
-
{
|
| 9 |
-
"name": "stdout",
|
| 10 |
-
"output_type": "stream",
|
| 11 |
-
"text": [
|
| 12 |
-
"Collecting gradio\n",
|
| 13 |
-
" Using cached gradio-4.31.4-py3-none-any.whl.metadata (15 kB)\n",
|
| 14 |
-
"Collecting aiofiles<24.0,>=22.0 (from gradio)\n",
|
| 15 |
-
" Using cached aiofiles-23.2.1-py3-none-any.whl.metadata (9.7 kB)\n",
|
| 16 |
-
"Collecting altair<6.0,>=4.2.0 (from gradio)\n",
|
| 17 |
-
" Using cached altair-5.3.0-py3-none-any.whl.metadata (9.2 kB)\n",
|
| 18 |
-
"Collecting fastapi (from gradio)\n",
|
| 19 |
-
" Using cached fastapi-0.111.0-py3-none-any.whl.metadata (25 kB)\n",
|
| 20 |
-
"Collecting ffmpy (from gradio)\n",
|
| 21 |
-
" Using cached ffmpy-0.3.2.tar.gz (5.5 kB)\n",
|
| 22 |
-
" Preparing metadata (setup.py): started\n",
|
| 23 |
-
" Preparing metadata (setup.py): finished with status 'done'\n",
|
| 24 |
-
"Collecting gradio-client==0.16.4 (from gradio)\n",
|
| 25 |
-
" Using cached gradio_client-0.16.4-py3-none-any.whl.metadata (7.1 kB)\n",
|
| 26 |
-
"Collecting httpx>=0.24.1 (from gradio)\n",
|
| 27 |
-
" Using cached httpx-0.27.0-py3-none-any.whl.metadata (7.2 kB)\n",
|
| 28 |
-
"Collecting huggingface-hub>=0.19.3 (from gradio)\n",
|
| 29 |
-
" Using cached huggingface_hub-0.23.0-py3-none-any.whl.metadata (12 kB)\n",
|
| 30 |
-
"Requirement already satisfied: importlib-resources<7.0,>=1.3 in c:\\users\\angel\\workspace\\testpls\\.conda\\lib\\site-packages (from gradio) (6.4.0)\n",
|
| 31 |
-
"Collecting jinja2<4.0 (from gradio)\n",
|
| 32 |
-
" Downloading jinja2-3.1.4-py3-none-any.whl.metadata (2.6 kB)\n",
|
| 33 |
-
"Requirement already satisfied: markupsafe~=2.0 in c:\\users\\angel\\workspace\\testpls\\.conda\\lib\\site-packages (from gradio) (2.1.5)\n",
|
| 34 |
-
"Requirement already satisfied: matplotlib~=3.0 in c:\\users\\angel\\workspace\\testpls\\.conda\\lib\\site-packages (from gradio) (3.9.0)\n",
|
| 35 |
-
"Requirement already satisfied: numpy~=1.0 in c:\\users\\angel\\workspace\\testpls\\.conda\\lib\\site-packages (from gradio) (1.26.4)\n",
|
| 36 |
-
"Collecting orjson~=3.0 (from gradio)\n",
|
| 37 |
-
" Downloading orjson-3.10.3-cp311-none-win_amd64.whl.metadata (50 kB)\n",
|
| 38 |
-
" ---------------------------------------- 0.0/50.9 kB ? eta -:--:--\n",
|
| 39 |
-
" -------- ------------------------------- 10.2/50.9 kB ? eta -:--:--\n",
|
| 40 |
-
" ------------------------------ ------- 41.0/50.9 kB 487.6 kB/s eta 0:00:01\n",
|
| 41 |
-
" -------------------------------------- 50.9/50.9 kB 521.7 kB/s eta 0:00:00\n",
|
| 42 |
-
"Requirement already satisfied: packaging in c:\\users\\angel\\workspace\\testpls\\.conda\\lib\\site-packages (from gradio) (24.0)\n",
|
| 43 |
-
"Collecting pandas<3.0,>=1.0 (from gradio)\n",
|
| 44 |
-
" Downloading pandas-2.2.2-cp311-cp311-win_amd64.whl.metadata (19 kB)\n",
|
| 45 |
-
"Requirement already satisfied: pillow<11.0,>=8.0 in c:\\users\\angel\\workspace\\testpls\\.conda\\lib\\site-packages (from gradio) (10.3.0)\n",
|
| 46 |
-
"Collecting pydantic>=2.0 (from gradio)\n",
|
| 47 |
-
" Using cached pydantic-2.7.1-py3-none-any.whl.metadata (107 kB)\n",
|
| 48 |
-
"Collecting pydub (from gradio)\n",
|
| 49 |
-
" Using cached pydub-0.25.1-py2.py3-none-any.whl.metadata (1.4 kB)\n",
|
| 50 |
-
"Collecting python-multipart>=0.0.9 (from gradio)\n",
|
| 51 |
-
" Using cached python_multipart-0.0.9-py3-none-any.whl.metadata (2.5 kB)\n",
|
| 52 |
-
"Collecting pyyaml<7.0,>=5.0 (from gradio)\n",
|
| 53 |
-
" Downloading PyYAML-6.0.1-cp311-cp311-win_amd64.whl.metadata (2.1 kB)\n",
|
| 54 |
-
"Collecting ruff>=0.2.2 (from gradio)\n",
|
| 55 |
-
" Using cached ruff-0.4.4-py3-none-win_amd64.whl.metadata (24 kB)\n",
|
| 56 |
-
"Collecting semantic-version~=2.0 (from gradio)\n",
|
| 57 |
-
" Using cached semantic_version-2.10.0-py2.py3-none-any.whl.metadata (9.7 kB)\n",
|
| 58 |
-
"Collecting tomlkit==0.12.0 (from gradio)\n",
|
| 59 |
-
" Using cached tomlkit-0.12.0-py3-none-any.whl.metadata (2.7 kB)\n",
|
| 60 |
-
"Collecting typer<1.0,>=0.12 (from gradio)\n",
|
| 61 |
-
" Using cached typer-0.12.3-py3-none-any.whl.metadata (15 kB)\n",
|
| 62 |
-
"Requirement already satisfied: typing-extensions~=4.0 in c:\\users\\angel\\workspace\\testpls\\.conda\\lib\\site-packages (from gradio) (4.11.0)\n",
|
| 63 |
-
"Requirement already satisfied: urllib3~=2.0 in c:\\users\\angel\\workspace\\testpls\\.conda\\lib\\site-packages (from gradio) (2.2.1)\n",
|
| 64 |
-
"Collecting uvicorn>=0.14.0 (from gradio)\n",
|
| 65 |
-
" Using cached uvicorn-0.29.0-py3-none-any.whl.metadata (6.3 kB)\n",
|
| 66 |
-
"Requirement already satisfied: fsspec in c:\\users\\angel\\workspace\\testpls\\.conda\\lib\\site-packages (from gradio-client==0.16.4->gradio) (2024.5.0)\n",
|
| 67 |
-
"Collecting websockets<12.0,>=10.0 (from gradio-client==0.16.4->gradio)\n",
|
| 68 |
-
" Downloading websockets-11.0.3-cp311-cp311-win_amd64.whl.metadata (6.8 kB)\n",
|
| 69 |
-
"Collecting jsonschema>=3.0 (from altair<6.0,>=4.2.0->gradio)\n",
|
| 70 |
-
" Using cached jsonschema-4.22.0-py3-none-any.whl.metadata (8.2 kB)\n",
|
| 71 |
-
"Collecting toolz (from altair<6.0,>=4.2.0->gradio)\n",
|
| 72 |
-
" Using cached toolz-0.12.1-py3-none-any.whl.metadata (5.1 kB)\n",
|
| 73 |
-
"Collecting anyio (from httpx>=0.24.1->gradio)\n",
|
| 74 |
-
" Using cached anyio-4.3.0-py3-none-any.whl.metadata (4.6 kB)\n",
|
| 75 |
-
"Requirement already satisfied: certifi in c:\\users\\angel\\workspace\\testpls\\.conda\\lib\\site-packages (from httpx>=0.24.1->gradio) (2024.2.2)\n",
|
| 76 |
-
"Collecting httpcore==1.* (from httpx>=0.24.1->gradio)\n",
|
| 77 |
-
" Using cached httpcore-1.0.5-py3-none-any.whl.metadata (20 kB)\n",
|
| 78 |
-
"Requirement already satisfied: idna in c:\\users\\angel\\workspace\\testpls\\.conda\\lib\\site-packages (from httpx>=0.24.1->gradio) (3.7)\n",
|
| 79 |
-
"Collecting sniffio (from httpx>=0.24.1->gradio)\n",
|
| 80 |
-
" Using cached sniffio-1.3.1-py3-none-any.whl.metadata (3.9 kB)\n",
|
| 81 |
-
"Collecting h11<0.15,>=0.13 (from httpcore==1.*->httpx>=0.24.1->gradio)\n",
|
| 82 |
-
" Using cached h11-0.14.0-py3-none-any.whl.metadata (8.2 kB)\n",
|
| 83 |
-
"Collecting filelock (from huggingface-hub>=0.19.3->gradio)\n",
|
| 84 |
-
" Using cached filelock-3.14.0-py3-none-any.whl.metadata (2.8 kB)\n",
|
| 85 |
-
"Requirement already satisfied: requests in c:\\users\\angel\\workspace\\testpls\\.conda\\lib\\site-packages (from huggingface-hub>=0.19.3->gradio) (2.32.1)\n",
|
| 86 |
-
"Requirement already satisfied: tqdm>=4.42.1 in c:\\users\\angel\\workspace\\testpls\\.conda\\lib\\site-packages (from huggingface-hub>=0.19.3->gradio) (4.66.4)\n",
|
| 87 |
-
"Requirement already satisfied: contourpy>=1.0.1 in c:\\users\\angel\\workspace\\testpls\\.conda\\lib\\site-packages (from matplotlib~=3.0->gradio) (1.2.1)\n",
|
| 88 |
-
"Requirement already satisfied: cycler>=0.10 in c:\\users\\angel\\workspace\\testpls\\.conda\\lib\\site-packages (from matplotlib~=3.0->gradio) (0.12.1)\n",
|
| 89 |
-
"Requirement already satisfied: fonttools>=4.22.0 in c:\\users\\angel\\workspace\\testpls\\.conda\\lib\\site-packages (from matplotlib~=3.0->gradio) (4.51.0)\n",
|
| 90 |
-
"Requirement already satisfied: kiwisolver>=1.3.1 in c:\\users\\angel\\workspace\\testpls\\.conda\\lib\\site-packages (from matplotlib~=3.0->gradio) (1.4.5)\n",
|
| 91 |
-
"Requirement already satisfied: pyparsing>=2.3.1 in c:\\users\\angel\\workspace\\testpls\\.conda\\lib\\site-packages (from matplotlib~=3.0->gradio) (3.1.2)\n",
|
| 92 |
-
"Requirement already satisfied: python-dateutil>=2.7 in c:\\users\\angel\\workspace\\testpls\\.conda\\lib\\site-packages (from matplotlib~=3.0->gradio) (2.9.0)\n",
|
| 93 |
-
"Collecting pytz>=2020.1 (from pandas<3.0,>=1.0->gradio)\n",
|
| 94 |
-
" Downloading pytz-2024.1-py2.py3-none-any.whl.metadata (22 kB)\n",
|
| 95 |
-
"Collecting tzdata>=2022.7 (from pandas<3.0,>=1.0->gradio)\n",
|
| 96 |
-
" Downloading tzdata-2024.1-py2.py3-none-any.whl.metadata (1.4 kB)\n",
|
| 97 |
-
"Collecting annotated-types>=0.4.0 (from pydantic>=2.0->gradio)\n",
|
| 98 |
-
" Downloading annotated_types-0.7.0-py3-none-any.whl.metadata (15 kB)\n",
|
| 99 |
-
"Collecting pydantic-core==2.18.2 (from pydantic>=2.0->gradio)\n",
|
| 100 |
-
" Downloading pydantic_core-2.18.2-cp311-none-win_amd64.whl.metadata (6.7 kB)\n",
|
| 101 |
-
"Requirement already satisfied: click>=8.0.0 in c:\\users\\angel\\workspace\\testpls\\.conda\\lib\\site-packages (from typer<1.0,>=0.12->gradio) (8.1.7)\n",
|
| 102 |
-
"Collecting shellingham>=1.3.0 (from typer<1.0,>=0.12->gradio)\n",
|
| 103 |
-
" Using cached shellingham-1.5.4-py2.py3-none-any.whl.metadata (3.5 kB)\n",
|
| 104 |
-
"Requirement already satisfied: rich>=10.11.0 in c:\\users\\angel\\workspace\\testpls\\.conda\\lib\\site-packages (from typer<1.0,>=0.12->gradio) (13.7.1)\n",
|
| 105 |
-
"Collecting starlette<0.38.0,>=0.37.2 (from fastapi->gradio)\n",
|
| 106 |
-
" Using cached starlette-0.37.2-py3-none-any.whl.metadata (5.9 kB)\n",
|
| 107 |
-
"Collecting fastapi-cli>=0.0.2 (from fastapi->gradio)\n",
|
| 108 |
-
" Using cached fastapi_cli-0.0.4-py3-none-any.whl.metadata (7.0 kB)\n",
|
| 109 |
-
"Collecting ujson!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0,>=4.0.1 (from fastapi->gradio)\n",
|
| 110 |
-
" Downloading ujson-5.10.0-cp311-cp311-win_amd64.whl.metadata (9.5 kB)\n",
|
| 111 |
-
"Collecting email_validator>=2.0.0 (from fastapi->gradio)\n",
|
| 112 |
-
" Using cached email_validator-2.1.1-py3-none-any.whl.metadata (26 kB)\n",
|
| 113 |
-
"Requirement already satisfied: colorama in c:\\users\\angel\\workspace\\testpls\\.conda\\lib\\site-packages (from click>=8.0.0->typer<1.0,>=0.12->gradio) (0.4.6)\n",
|
| 114 |
-
"Collecting dnspython>=2.0.0 (from email_validator>=2.0.0->fastapi->gradio)\n",
|
| 115 |
-
" Using cached dnspython-2.6.1-py3-none-any.whl.metadata (5.8 kB)\n",
|
| 116 |
-
"Collecting attrs>=22.2.0 (from jsonschema>=3.0->altair<6.0,>=4.2.0->gradio)\n",
|
| 117 |
-
" Using cached attrs-23.2.0-py3-none-any.whl.metadata (9.5 kB)\n",
|
| 118 |
-
"Collecting jsonschema-specifications>=2023.03.6 (from jsonschema>=3.0->altair<6.0,>=4.2.0->gradio)\n",
|
| 119 |
-
" Using cached jsonschema_specifications-2023.12.1-py3-none-any.whl.metadata (3.0 kB)\n",
|
| 120 |
-
"Collecting referencing>=0.28.4 (from jsonschema>=3.0->altair<6.0,>=4.2.0->gradio)\n",
|
| 121 |
-
" Using cached referencing-0.35.1-py3-none-any.whl.metadata (2.8 kB)\n",
|
| 122 |
-
"Collecting rpds-py>=0.7.1 (from jsonschema>=3.0->altair<6.0,>=4.2.0->gradio)\n",
|
| 123 |
-
" Downloading rpds_py-0.18.1-cp311-none-win_amd64.whl.metadata (4.2 kB)\n",
|
| 124 |
-
"Requirement already satisfied: six>=1.5 in c:\\users\\angel\\workspace\\testpls\\.conda\\lib\\site-packages (from python-dateutil>=2.7->matplotlib~=3.0->gradio) (1.16.0)\n",
|
| 125 |
-
"Requirement already satisfied: markdown-it-py>=2.2.0 in c:\\users\\angel\\workspace\\testpls\\.conda\\lib\\site-packages (from rich>=10.11.0->typer<1.0,>=0.12->gradio) (3.0.0)\n",
|
| 126 |
-
"Requirement already satisfied: pygments<3.0.0,>=2.13.0 in c:\\users\\angel\\workspace\\testpls\\.conda\\lib\\site-packages (from rich>=10.11.0->typer<1.0,>=0.12->gradio) (2.18.0)\n",
|
| 127 |
-
"Collecting httptools>=0.5.0 (from uvicorn[standard]>=0.12.0->fastapi->gradio)\n",
|
| 128 |
-
" Downloading httptools-0.6.1-cp311-cp311-win_amd64.whl.metadata (3.7 kB)\n",
|
| 129 |
-
"Collecting python-dotenv>=0.13 (from uvicorn[standard]>=0.12.0->fastapi->gradio)\n",
|
| 130 |
-
" Using cached python_dotenv-1.0.1-py3-none-any.whl.metadata (23 kB)\n",
|
| 131 |
-
"Collecting watchfiles>=0.13 (from uvicorn[standard]>=0.12.0->fastapi->gradio)\n",
|
| 132 |
-
" Downloading watchfiles-0.21.0-cp311-none-win_amd64.whl.metadata (5.0 kB)\n",
|
| 133 |
-
"Requirement already satisfied: charset-normalizer<4,>=2 in c:\\users\\angel\\workspace\\testpls\\.conda\\lib\\site-packages (from requests->huggingface-hub>=0.19.3->gradio) (3.3.2)\n",
|
| 134 |
-
"Requirement already satisfied: mdurl~=0.1 in c:\\users\\angel\\workspace\\testpls\\.conda\\lib\\site-packages (from markdown-it-py>=2.2.0->rich>=10.11.0->typer<1.0,>=0.12->gradio) (0.1.2)\n",
|
| 135 |
-
"Using cached gradio-4.31.4-py3-none-any.whl (12.3 MB)\n",
|
| 136 |
-
"Using cached gradio_client-0.16.4-py3-none-any.whl (315 kB)\n",
|
| 137 |
-
"Using cached tomlkit-0.12.0-py3-none-any.whl (37 kB)\n",
|
| 138 |
-
"Using cached aiofiles-23.2.1-py3-none-any.whl (15 kB)\n",
|
| 139 |
-
"Using cached altair-5.3.0-py3-none-any.whl (857 kB)\n",
|
| 140 |
-
"Using cached httpx-0.27.0-py3-none-any.whl (75 kB)\n",
|
| 141 |
-
"Using cached httpcore-1.0.5-py3-none-any.whl (77 kB)\n",
|
| 142 |
-
"Using cached huggingface_hub-0.23.0-py3-none-any.whl (401 kB)\n",
|
| 143 |
-
"Downloading jinja2-3.1.4-py3-none-any.whl (133 kB)\n",
|
| 144 |
-
" ---------------------------------------- 0.0/133.3 kB ? eta -:--:--\n",
|
| 145 |
-
" --------------------------------------- 133.1/133.3 kB 4.0 MB/s eta 0:00:01\n",
|
| 146 |
-
" ---------------------------------------- 133.3/133.3 kB 4.0 MB/s eta 0:00:00\n",
|
| 147 |
-
"Downloading orjson-3.10.3-cp311-none-win_amd64.whl (138 kB)\n",
|
| 148 |
-
" ---------------------------------------- 0.0/138.8 kB ? eta -:--:--\n",
|
| 149 |
-
" -------------------------------------- - 133.1/138.8 kB 3.8 MB/s eta 0:00:01\n",
|
| 150 |
-
" ---------------------------------------- 138.8/138.8 kB 4.0 MB/s eta 0:00:00\n",
|
| 151 |
-
"Downloading pandas-2.2.2-cp311-cp311-win_amd64.whl (11.6 MB)\n",
|
| 152 |
-
" ---------------------------------------- 0.0/11.6 MB ? eta -:--:--\n",
|
| 153 |
-
" - -------------------------------------- 0.3/11.6 MB 6.3 MB/s eta 0:00:02\n",
|
| 154 |
-
" - -------------------------------------- 0.5/11.6 MB 5.2 MB/s eta 0:00:03\n",
|
| 155 |
-
" -- ------------------------------------- 0.7/11.6 MB 4.9 MB/s eta 0:00:03\n",
|
| 156 |
-
" --- ------------------------------------ 0.9/11.6 MB 5.0 MB/s eta 0:00:03\n",
|
| 157 |
-
" --- ------------------------------------ 1.2/11.6 MB 4.9 MB/s eta 0:00:03\n",
|
| 158 |
-
" ---- ----------------------------------- 1.3/11.6 MB 4.9 MB/s eta 0:00:03\n",
|
| 159 |
-
" ----- ---------------------------------- 1.5/11.6 MB 4.8 MB/s eta 0:00:03\n",
|
| 160 |
-
" ----- ---------------------------------- 1.6/11.6 MB 4.5 MB/s eta 0:00:03\n",
|
| 161 |
-
" ------ --------------------------------- 1.8/11.6 MB 4.5 MB/s eta 0:00:03\n",
|
| 162 |
-
" ------- -------------------------------- 2.1/11.6 MB 4.6 MB/s eta 0:00:03\n",
|
| 163 |
-
" ------- -------------------------------- 2.3/11.6 MB 4.5 MB/s eta 0:00:03\n",
|
| 164 |
-
" -------- ------------------------------- 2.5/11.6 MB 4.5 MB/s eta 0:00:03\n",
|
| 165 |
-
" --------- ------------------------------ 2.7/11.6 MB 4.6 MB/s eta 0:00:02\n",
|
| 166 |
-
" --------- ------------------------------ 2.9/11.6 MB 4.5 MB/s eta 0:00:02\n",
|
| 167 |
-
" ---------- ----------------------------- 3.0/11.6 MB 4.4 MB/s eta 0:00:02\n",
|
| 168 |
-
" ----------- ---------------------------- 3.2/11.6 MB 4.4 MB/s eta 0:00:02\n",
|
| 169 |
-
" ----------- ---------------------------- 3.4/11.6 MB 4.3 MB/s eta 0:00:02\n",
|
| 170 |
-
" ------------ --------------------------- 3.6/11.6 MB 4.3 MB/s eta 0:00:02\n",
|
| 171 |
-
" ------------- -------------------------- 3.8/11.6 MB 4.4 MB/s eta 0:00:02\n",
|
| 172 |
-
" ------------- -------------------------- 4.0/11.6 MB 4.4 MB/s eta 0:00:02\n",
|
| 173 |
-
" -------------- ------------------------- 4.3/11.6 MB 4.5 MB/s eta 0:00:02\n",
|
| 174 |
-
" --------------- ------------------------ 4.5/11.6 MB 4.4 MB/s eta 0:00:02\n",
|
| 175 |
-
" --------------- ------------------------ 4.6/11.6 MB 4.4 MB/s eta 0:00:02\n",
|
| 176 |
-
" ---------------- ----------------------- 4.9/11.6 MB 4.4 MB/s eta 0:00:02\n",
|
| 177 |
-
" ----------------- ---------------------- 5.2/11.6 MB 4.5 MB/s eta 0:00:02\n",
|
| 178 |
-
" ------------------ --------------------- 5.4/11.6 MB 4.5 MB/s eta 0:00:02\n",
|
| 179 |
-
" ------------------- -------------------- 5.6/11.6 MB 4.5 MB/s eta 0:00:02\n",
|
| 180 |
-
" ------------------- -------------------- 5.7/11.6 MB 4.5 MB/s eta 0:00:02\n",
|
| 181 |
-
" -------------------- ------------------- 6.0/11.6 MB 4.5 MB/s eta 0:00:02\n",
|
| 182 |
-
" --------------------- ------------------ 6.1/11.6 MB 4.5 MB/s eta 0:00:02\n",
|
| 183 |
-
" ---------------------- ----------------- 6.4/11.6 MB 4.5 MB/s eta 0:00:02\n",
|
| 184 |
-
" ---------------------- ----------------- 6.6/11.6 MB 4.5 MB/s eta 0:00:02\n",
|
| 185 |
-
" ----------------------- ---------------- 6.8/11.6 MB 4.5 MB/s eta 0:00:02\n",
|
| 186 |
-
" ------------------------ --------------- 7.0/11.6 MB 4.5 MB/s eta 0:00:02\n",
|
| 187 |
-
" ------------------------ --------------- 7.2/11.6 MB 4.5 MB/s eta 0:00:01\n",
|
| 188 |
-
" ------------------------- -------------- 7.4/11.6 MB 4.5 MB/s eta 0:00:01\n",
|
| 189 |
-
" ------------------------- -------------- 7.5/11.6 MB 4.4 MB/s eta 0:00:01\n",
|
| 190 |
-
" -------------------------- ------------- 7.8/11.6 MB 4.5 MB/s eta 0:00:01\n",
|
| 191 |
-
" --------------------------- ------------ 7.9/11.6 MB 4.5 MB/s eta 0:00:01\n",
|
| 192 |
-
" ---------------------------- ----------- 8.2/11.6 MB 4.5 MB/s eta 0:00:01\n",
|
| 193 |
-
" ---------------------------- ----------- 8.4/11.6 MB 4.5 MB/s eta 0:00:01\n",
|
| 194 |
-
" ----------------------------- ---------- 8.7/11.6 MB 4.5 MB/s eta 0:00:01\n",
|
| 195 |
-
" ------------------------------ --------- 8.8/11.6 MB 4.5 MB/s eta 0:00:01\n",
|
| 196 |
-
" ------------------------------- -------- 9.1/11.6 MB 4.5 MB/s eta 0:00:01\n",
|
| 197 |
-
" -------------------------------- ------- 9.3/11.6 MB 4.5 MB/s eta 0:00:01\n",
|
| 198 |
-
" -------------------------------- ------- 9.4/11.6 MB 4.5 MB/s eta 0:00:01\n",
|
| 199 |
-
" -------------------------------- ------- 9.5/11.6 MB 4.4 MB/s eta 0:00:01\n",
|
| 200 |
-
" --------------------------------- ------ 9.6/11.6 MB 4.4 MB/s eta 0:00:01\n",
|
| 201 |
-
" --------------------------------- ------ 9.8/11.6 MB 4.4 MB/s eta 0:00:01\n",
|
| 202 |
-
" ---------------------------------- ----- 10.1/11.6 MB 4.4 MB/s eta 0:00:01\n",
|
| 203 |
-
" ----------------------------------- ---- 10.3/11.6 MB 4.4 MB/s eta 0:00:01\n",
|
| 204 |
-
" ------------------------------------ --- 10.5/11.6 MB 4.4 MB/s eta 0:00:01\n",
|
| 205 |
-
" ------------------------------------ --- 10.6/11.6 MB 4.3 MB/s eta 0:00:01\n",
|
| 206 |
-
" ------------------------------------- -- 10.8/11.6 MB 4.3 MB/s eta 0:00:01\n",
|
| 207 |
-
" -------------------------------------- - 11.1/11.6 MB 4.3 MB/s eta 0:00:01\n",
|
| 208 |
-
" -------------------------------------- - 11.3/11.6 MB 4.3 MB/s eta 0:00:01\n",
|
| 209 |
-
" --------------------------------------- 11.6/11.6 MB 4.4 MB/s eta 0:00:01\n",
|
| 210 |
-
" ---------------------------------------- 11.6/11.6 MB 4.4 MB/s eta 0:00:00\n",
|
| 211 |
-
"Using cached pydantic-2.7.1-py3-none-any.whl (409 kB)\n",
|
| 212 |
-
"Downloading pydantic_core-2.18.2-cp311-none-win_amd64.whl (1.9 MB)\n",
|
| 213 |
-
" ---------------------------------------- 0.0/1.9 MB ? eta -:--:--\n",
|
| 214 |
-
" ---- ----------------------------------- 0.2/1.9 MB 4.8 MB/s eta 0:00:01\n",
|
| 215 |
-
" --------- ------------------------------ 0.5/1.9 MB 4.7 MB/s eta 0:00:01\n",
|
| 216 |
-
" -------------- ------------------------- 0.7/1.9 MB 5.5 MB/s eta 0:00:01\n",
|
| 217 |
-
" -------------------- ------------------- 1.0/1.9 MB 5.1 MB/s eta 0:00:01\n",
|
| 218 |
-
" ------------------------- -------------- 1.2/1.9 MB 5.5 MB/s eta 0:00:01\n",
|
| 219 |
-
" ----------------------------- ---------- 1.4/1.9 MB 5.0 MB/s eta 0:00:01\n",
|
| 220 |
-
" --------------------------------- ------ 1.6/1.9 MB 5.2 MB/s eta 0:00:01\n",
|
| 221 |
-
" -------------------------------------- - 1.8/1.9 MB 5.1 MB/s eta 0:00:01\n",
|
| 222 |
-
" ---------------------------------------- 1.9/1.9 MB 4.9 MB/s eta 0:00:00\n",
|
| 223 |
-
"Using cached python_multipart-0.0.9-py3-none-any.whl (22 kB)\n",
|
| 224 |
-
"Downloading PyYAML-6.0.1-cp311-cp311-win_amd64.whl (144 kB)\n",
|
| 225 |
-
" ---------------------------------------- 0.0/144.7 kB ? eta -:--:--\n",
|
| 226 |
-
" ---------------------------------------- 144.7/144.7 kB 2.9 MB/s eta 0:00:00\n",
|
| 227 |
-
"Using cached ruff-0.4.4-py3-none-win_amd64.whl (8.4 MB)\n",
|
| 228 |
-
"Using cached semantic_version-2.10.0-py2.py3-none-any.whl (15 kB)\n",
|
| 229 |
-
"Using cached typer-0.12.3-py3-none-any.whl (47 kB)\n",
|
| 230 |
-
"Using cached uvicorn-0.29.0-py3-none-any.whl (60 kB)\n",
|
| 231 |
-
"Using cached fastapi-0.111.0-py3-none-any.whl (91 kB)\n",
|
| 232 |
-
"Using cached pydub-0.25.1-py2.py3-none-any.whl (32 kB)\n",
|
| 233 |
-
"Downloading annotated_types-0.7.0-py3-none-any.whl (13 kB)\n",
|
| 234 |
-
"Using cached email_validator-2.1.1-py3-none-any.whl (30 kB)\n",
|
| 235 |
-
"Using cached fastapi_cli-0.0.4-py3-none-any.whl (9.5 kB)\n",
|
| 236 |
-
"Using cached h11-0.14.0-py3-none-any.whl (58 kB)\n",
|
| 237 |
-
"Using cached jsonschema-4.22.0-py3-none-any.whl (88 kB)\n",
|
| 238 |
-
"Downloading pytz-2024.1-py2.py3-none-any.whl (505 kB)\n",
|
| 239 |
-
" ---------------------------------------- 0.0/505.5 kB ? eta -:--:--\n",
|
| 240 |
-
" ----------- ---------------------------- 143.4/505.5 kB 4.3 MB/s eta 0:00:01\n",
|
| 241 |
-
" ---------------------------- ----------- 358.4/505.5 kB 4.5 MB/s eta 0:00:01\n",
|
| 242 |
-
" ---------------------------------------- 505.5/505.5 kB 4.5 MB/s eta 0:00:00\n",
|
| 243 |
-
"Using cached shellingham-1.5.4-py2.py3-none-any.whl (9.8 kB)\n",
|
| 244 |
-
"Using cached starlette-0.37.2-py3-none-any.whl (71 kB)\n",
|
| 245 |
-
"Using cached anyio-4.3.0-py3-none-any.whl (85 kB)\n",
|
| 246 |
-
"Using cached sniffio-1.3.1-py3-none-any.whl (10 kB)\n",
|
| 247 |
-
"Downloading tzdata-2024.1-py2.py3-none-any.whl (345 kB)\n",
|
| 248 |
-
" ---------------------------------------- 0.0/345.4 kB ? eta -:--:--\n",
|
| 249 |
-
" ---------------------- ----------------- 194.6/345.4 kB 3.9 MB/s eta 0:00:01\n",
|
| 250 |
-
" ---------------------------------------- 345.4/345.4 kB 4.3 MB/s eta 0:00:00\n",
|
| 251 |
-
"Downloading ujson-5.10.0-cp311-cp311-win_amd64.whl (42 kB)\n",
|
| 252 |
-
" ---------------------------------------- 0.0/42.1 kB ? eta -:--:--\n",
|
| 253 |
-
" ---------------------------------------- 42.1/42.1 kB ? eta 0:00:00\n",
|
| 254 |
-
"Downloading websockets-11.0.3-cp311-cp311-win_amd64.whl (124 kB)\n",
|
| 255 |
-
" ---------------------------------------- 0.0/124.7 kB ? eta -:--:--\n",
|
| 256 |
-
" ---------------------------------------- 124.7/124.7 kB 3.6 MB/s eta 0:00:00\n",
|
| 257 |
-
"Using cached filelock-3.14.0-py3-none-any.whl (12 kB)\n",
|
| 258 |
-
"Using cached toolz-0.12.1-py3-none-any.whl (56 kB)\n",
|
| 259 |
-
"Using cached attrs-23.2.0-py3-none-any.whl (60 kB)\n",
|
| 260 |
-
"Using cached dnspython-2.6.1-py3-none-any.whl (307 kB)\n",
|
| 261 |
-
"Downloading httptools-0.6.1-cp311-cp311-win_amd64.whl (55 kB)\n",
|
| 262 |
-
" ---------------------------------------- 0.0/55.4 kB ? eta -:--:--\n",
|
| 263 |
-
" ---------------------------------------- 55.4/55.4 kB 2.8 MB/s eta 0:00:00\n",
|
| 264 |
-
"Using cached jsonschema_specifications-2023.12.1-py3-none-any.whl (18 kB)\n",
|
| 265 |
-
"Using cached python_dotenv-1.0.1-py3-none-any.whl (19 kB)\n",
|
| 266 |
-
"Using cached referencing-0.35.1-py3-none-any.whl (26 kB)\n",
|
| 267 |
-
"Downloading rpds_py-0.18.1-cp311-none-win_amd64.whl (209 kB)\n",
|
| 268 |
-
" ---------------------------------------- 0.0/209.0 kB ? eta -:--:--\n",
|
| 269 |
-
" --------------------------------- ------ 174.1/209.0 kB 5.3 MB/s eta 0:00:01\n",
|
| 270 |
-
" ---------------------------------------- 209.0/209.0 kB 4.2 MB/s eta 0:00:00\n",
|
| 271 |
-
"Downloading watchfiles-0.21.0-cp311-none-win_amd64.whl (280 kB)\n",
|
| 272 |
-
" ---------------------------------------- 0.0/280.1 kB ? eta -:--:--\n",
|
| 273 |
-
" ----------------- ---------------------- 122.9/280.1 kB 3.6 MB/s eta 0:00:01\n",
|
| 274 |
-
" --------------------------------------- 276.5/280.1 kB 3.4 MB/s eta 0:00:01\n",
|
| 275 |
-
" ---------------------------------------- 280.1/280.1 kB 2.9 MB/s eta 0:00:00\n",
|
| 276 |
-
"Building wheels for collected packages: ffmpy\n",
|
| 277 |
-
" Building wheel for ffmpy (setup.py): started\n",
|
| 278 |
-
" Building wheel for ffmpy (setup.py): finished with status 'done'\n",
|
| 279 |
-
" Created wheel for ffmpy: filename=ffmpy-0.3.2-py3-none-any.whl size=5607 sha256=77b28e519de97b9b0180da222f159cb4ed9a3277932e30d4a5d5b6b77c53f96d\n",
|
| 280 |
-
" Stored in directory: c:\\users\\angel\\appdata\\local\\pip\\cache\\wheels\\55\\3c\\f2\\f6e34046bac0d57c13c7d08123b85872423b89c8f59bafda51\n",
|
| 281 |
-
"Successfully built ffmpy\n",
|
| 282 |
-
"Installing collected packages: pytz, pydub, ffmpy, websockets, ujson, tzdata, toolz, tomlkit, sniffio, shellingham, semantic-version, ruff, rpds-py, pyyaml, python-multipart, python-dotenv, pydantic-core, orjson, jinja2, httptools, h11, filelock, dnspython, attrs, annotated-types, aiofiles, uvicorn, referencing, pydantic, pandas, huggingface-hub, httpcore, email_validator, anyio, watchfiles, typer, starlette, jsonschema-specifications, httpx, jsonschema, gradio-client, fastapi-cli, fastapi, altair, gradio\n",
|
| 283 |
-
"Successfully installed aiofiles-23.2.1 altair-5.3.0 annotated-types-0.7.0 anyio-4.3.0 attrs-23.2.0 dnspython-2.6.1 email_validator-2.1.1 fastapi-0.111.0 fastapi-cli-0.0.4 ffmpy-0.3.2 filelock-3.14.0 gradio-4.31.4 gradio-client-0.16.4 h11-0.14.0 httpcore-1.0.5 httptools-0.6.1 httpx-0.27.0 huggingface-hub-0.23.0 jinja2-3.1.4 jsonschema-4.22.0 jsonschema-specifications-2023.12.1 orjson-3.10.3 pandas-2.2.2 pydantic-2.7.1 pydantic-core-2.18.2 pydub-0.25.1 python-dotenv-1.0.1 python-multipart-0.0.9 pytz-2024.1 pyyaml-6.0.1 referencing-0.35.1 rpds-py-0.18.1 ruff-0.4.4 semantic-version-2.10.0 shellingham-1.5.4 sniffio-1.3.1 starlette-0.37.2 tomlkit-0.12.0 toolz-0.12.1 typer-0.12.3 tzdata-2024.1 ujson-5.10.0 uvicorn-0.29.0 watchfiles-0.21.0 websockets-11.0.3\n"
|
| 284 |
-
]
|
| 285 |
-
}
|
| 286 |
-
],
|
| 287 |
-
"source": [
|
| 288 |
-
"!pip install gradio"
|
| 289 |
-
]
|
| 290 |
-
},
|
| 291 |
-
{
|
| 292 |
-
"cell_type": "code",
|
| 293 |
-
"execution_count": 1,
|
| 294 |
-
"metadata": {},
|
| 295 |
-
"outputs": [
|
| 296 |
-
{
|
| 297 |
-
"name": "stderr",
|
| 298 |
-
"output_type": "stream",
|
| 299 |
-
"text": [
|
| 300 |
-
"c:\\Users\\angel\\workspace\\testpls\\.conda\\Lib\\site-packages\\tqdm\\auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
|
| 301 |
-
" from .autonotebook import tqdm as notebook_tqdm\n"
|
| 302 |
-
]
|
| 303 |
-
}
|
| 304 |
-
],
|
| 305 |
-
"source": [
|
| 306 |
-
"import gradio as gr\n",
|
| 307 |
-
"import tensorflow as tf\n",
|
| 308 |
-
"import numpy as np\n",
|
| 309 |
-
"from PIL import Image"
|
| 310 |
-
]
|
| 311 |
-
},
|
| 312 |
-
{
|
| 313 |
-
"cell_type": "code",
|
| 314 |
-
"execution_count": 2,
|
| 315 |
-
"metadata": {},
|
| 316 |
-
"outputs": [],
|
| 317 |
-
"source": [
|
| 318 |
-
"model_path = \"pokemons-model_transferlearning.keras\"\n",
|
| 319 |
-
"model = tf.keras.models.load_model(model_path)"
|
| 320 |
-
]
|
| 321 |
-
},
|
| 322 |
-
{
|
| 323 |
-
"cell_type": "code",
|
| 324 |
-
"execution_count": 8,
|
| 325 |
-
"metadata": {},
|
| 326 |
-
"outputs": [],
|
| 327 |
-
"source": [
|
| 328 |
-
"# Define the core prediction function\n",
|
| 329 |
-
"def predict_pokemons(image):\n",
|
| 330 |
-
" # Preprocess image\n",
|
| 331 |
-
" print(type(image))\n",
|
| 332 |
-
" image = Image.fromarray(image.astype('uint8')) # Convert numpy array to PIL image\n",
|
| 333 |
-
" image = image.resize((150, 150)) #resize the image to 28x28 and converts it to gray scale\n",
|
| 334 |
-
" image = np.array(image)\n",
|
| 335 |
-
" image = np.expand_dims(image, axis=0) # same as image[None, ...]\n",
|
| 336 |
-
" \n",
|
| 337 |
-
" # Predict\n",
|
| 338 |
-
" prediction = model.predict(image)\n",
|
| 339 |
-
" \n",
|
| 340 |
-
" # Because the output layer was dense(0) without an activation function, we need to apply sigmoid to get the probability\n",
|
| 341 |
-
" # we could also change the output layer to dense(1, activation='sigmoid')\n",
|
| 342 |
-
" #prediction = np.round(float(tf.sigmoid(prediction)), 2)\n",
|
| 343 |
-
" #p_cat = (1 - prediction)\n",
|
| 344 |
-
" #p_dog = prediction\n",
|
| 345 |
-
" #return {'cat': p_cat, 'dog': p_dog}\n",
|
| 346 |
-
"\n",
|
| 347 |
-
" # No need to apply sigmoid, as the output layer already uses softmax\n",
|
| 348 |
-
" # Convert the probabilities to rounded values\n",
|
| 349 |
-
" prediction = np.round(prediction, 2)\n",
|
| 350 |
-
" \n",
|
| 351 |
-
" # Separate the probabilities for each class\n",
|
| 352 |
-
" p_bulbasaur = prediction[0][0] # Probability for class 'articuno'\n",
|
| 353 |
-
" p_dratini = prediction[0][1] # Probability for class 'moltres'\n",
|
| 354 |
-
" p_gengar = prediction[0][2] # Probability for class 'zapdos'\n",
|
| 355 |
-
" \n",
|
| 356 |
-
" # return {'charmander': p_charmander, 'mewtwo': p_mewtwo, 'squirtle': p_squirtle}\n",
|
| 357 |
-
" return {'Bulbasaur': p_bulbasaur, 'Dratini': p_dratini, 'Gengar': p_gengar}"
|
| 358 |
-
]
|
| 359 |
-
},
|
| 360 |
-
{
|
| 361 |
-
"cell_type": "code",
|
| 362 |
-
"execution_count": 12,
|
| 363 |
-
"metadata": {},
|
| 364 |
-
"outputs": [
|
| 365 |
-
{
|
| 366 |
-
"name": "stdout",
|
| 367 |
-
"output_type": "stream",
|
| 368 |
-
"text": [
|
| 369 |
-
"Running on local URL: http://127.0.0.1:7864\n",
|
| 370 |
-
"\n",
|
| 371 |
-
"To create a public link, set `share=True` in `launch()`.\n"
|
| 372 |
-
]
|
| 373 |
-
},
|
| 374 |
-
{
|
| 375 |
-
"data": {
|
| 376 |
-
"text/html": [
|
| 377 |
-
"<div><iframe src=\"http://127.0.0.1:7864/\" width=\"100%\" height=\"500\" allow=\"autoplay; camera; microphone; clipboard-read; clipboard-write;\" frameborder=\"0\" allowfullscreen></iframe></div>"
|
| 378 |
-
],
|
| 379 |
-
"text/plain": [
|
| 380 |
-
"<IPython.core.display.HTML object>"
|
| 381 |
-
]
|
| 382 |
-
},
|
| 383 |
-
"metadata": {},
|
| 384 |
-
"output_type": "display_data"
|
| 385 |
-
},
|
| 386 |
-
{
|
| 387 |
-
"data": {
|
| 388 |
-
"text/plain": []
|
| 389 |
-
},
|
| 390 |
-
"execution_count": 12,
|
| 391 |
-
"metadata": {},
|
| 392 |
-
"output_type": "execute_result"
|
| 393 |
-
},
|
| 394 |
-
{
|
| 395 |
-
"name": "stdout",
|
| 396 |
-
"output_type": "stream",
|
| 397 |
-
"text": [
|
| 398 |
-
"<class 'numpy.ndarray'>\n",
|
| 399 |
-
"\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1s/step\n"
|
| 400 |
-
]
|
| 401 |
-
}
|
| 402 |
-
],
|
| 403 |
-
"source": [
|
| 404 |
-
"# Create the Gradio interface\n",
|
| 405 |
-
"input_image = gr.Image()\n",
|
| 406 |
-
"iface = gr.Interface(\n",
|
| 407 |
-
" fn=predict_pokemons,\n",
|
| 408 |
-
" inputs=input_image, \n",
|
| 409 |
-
" outputs=gr.Label(),\n",
|
| 410 |
-
" examples=[\"images/bulbasaur1.png\", \"images/bulbasaur2.png\", \"images/dratini1.png\", \"images/dratini2.png\", \"images/dratini3.png\", \"images/gengar1.png\", \"images/gengar2.png\", \"images/gengar3.png\"], \n",
|
| 411 |
-
" description=\"A simple mlp classification model for image classification using the mnist dataset.\")\n",
|
| 412 |
-
"iface.launch()"
|
| 413 |
-
]
|
| 414 |
-
}
|
| 415 |
-
],
|
| 416 |
-
"metadata": {
|
| 417 |
-
"kernelspec": {
|
| 418 |
-
"display_name": "venv_new",
|
| 419 |
-
"language": "python",
|
| 420 |
-
"name": "python3"
|
| 421 |
-
},
|
| 422 |
-
"language_info": {
|
| 423 |
-
"codemirror_mode": {
|
| 424 |
-
"name": "ipython",
|
| 425 |
-
"version": 3
|
| 426 |
-
},
|
| 427 |
-
"file_extension": ".py",
|
| 428 |
-
"mimetype": "text/x-python",
|
| 429 |
-
"name": "python",
|
| 430 |
-
"nbconvert_exporter": "python",
|
| 431 |
-
"pygments_lexer": "ipython3",
|
| 432 |
-
"version": "3.11.9"
|
| 433 |
-
}
|
| 434 |
-
},
|
| 435 |
-
"nbformat": 4,
|
| 436 |
-
"nbformat_minor": 2
|
| 437 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|