From 8d2b754b5aef96aa25f6fc867393bf01333ab5dc Mon Sep 17 00:00:00 2001 From: Phate Date: Tue, 2 Jul 2024 19:07:02 +0800 Subject: [PATCH 001/105] [multi-chat] fix: trust all proxies. --- src/multi-chat/app/Http/Middleware/TrustProxies.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/multi-chat/app/Http/Middleware/TrustProxies.php b/src/multi-chat/app/Http/Middleware/TrustProxies.php index 3391630e..f295139e 100644 --- a/src/multi-chat/app/Http/Middleware/TrustProxies.php +++ b/src/multi-chat/app/Http/Middleware/TrustProxies.php @@ -12,7 +12,7 @@ class TrustProxies extends Middleware * * @var array|string|null */ - protected $proxies; + protected $proxies = "*"; /** * The headers that should be used to detect proxies. From 47125fc8fce4927b2288f29593adb2ff2a0158f5 Mon Sep 17 00:00:00 2001 From: Vivian Huang <65839409+vivianh38@users.noreply.github.com> Date: Fri, 5 Jul 2024 16:43:14 +0800 Subject: [PATCH 002/105] Update README.md --- README.md | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 16a372eb..b943336b 100644 --- a/README.md +++ b/README.md @@ -13,13 +13,28 @@

- + - + + + + + + + + + + + + + + + +

From e9438fa7036c8c2842ef7b82bbbcd55d5970b9d2 Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Sun, 14 Jul 2024 21:42:03 +0800 Subject: [PATCH 003/105] [windows] fix: potential nginx conf issue The original configuration of nginx may lead to "upstream sent too big header while reading response header from upstream" error. --- windows/src/nginx.conf | 57 ++++++++++++++++++++++++------------------ windows/tool.bat | 2 +- 2 files changed, 33 insertions(+), 26 deletions(-) diff --git a/windows/src/nginx.conf b/windows/src/nginx.conf index c94e708b..798cbdb6 100644 --- a/windows/src/nginx.conf +++ b/windows/src/nginx.conf @@ -23,7 +23,7 @@ http { # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; - client_max_body_size 101m; + client_max_body_size 101m; sendfile on; #tcp_nopush on; @@ -33,46 +33,53 @@ http { #gzip on; server { - listen 80 default_server; - listen [::]:80 default_server; - #listen 443 ssl default_server; - #listen [::]:443 ssl default_server; - #server_name localhost; + listen 80 default_server; + listen [::]:80 default_server; + #listen 443 ssl default_server; + #listen [::]:443 ssl default_server; + #server_name localhost; - #ssl_certificate /ssl/fullchain1.pem; - #ssl_certificate_key /ssl/privkey1.pem; + #ssl_certificate /ssl/fullchain1.pem; + #ssl_certificate_key /ssl/privkey1.pem; - root html; + root html; - add_header X-Frame-Options "SAMEORIGIN"; - add_header X-Content-Type-Options "nosniff"; + add_header X-Frame-Options "SAMEORIGIN"; + add_header X-Content-Type-Options "nosniff"; - index index.php; + index index.php; - charset utf-8; + charset utf-8; - location / { - try_files $uri $uri/ /index.php?$query_string; - } + location / { + try_files $uri $uri/ /index.php?$query_string; + } - location = /favicon.ico { access_log off; log_not_found off; } - location = /robots.txt { access_log off; log_not_found off; } + location = /favicon.ico { access_log off; log_not_found off; } + location = /robots.txt { access_log off; log_not_found off; } - error_page 404 /index.php; + error_page 404 /index.php; - location ~ \.php$ { - try_files $uri =404; + proxy_buffer_size 128k; + proxy_buffers 4 256k; + proxy_busy_buffers_size 256k; + + location ~ \.php$ { + try_files $uri =404; include fastcgi.conf; fastcgi_pass 127.0.0.1:9123; fastcgi_read_timeout 120; + fastcgi_buffers 16 32k; + fastcgi_buffer_size 64k; + fastcgi_busy_buffers_size 64k; allow 127.0.0.1; allow ::1; deny all; - } + } - location ~ /\.(?!well-known).* { - deny all; - } + location ~ /\.(?!well-known).* { + deny all; + } } diff --git a/windows/tool.bat b/windows/tool.bat index aa142ae2..425af9b2 100644 --- a/windows/tool.bat +++ b/windows/tool.bat @@ -36,7 +36,7 @@ if /I "%userInput%"=="quit" ( goto loop ) else if /I "%userInput%"=="switch" ( set version= - set /p version=Switch to version ^(cpu | 12.3 | 12.2 | 12.1^): + set /p version="Switch to version (cpu | 12.3 | 12.2 | 12.1):" pushd src call switch.bat !version! popd From fb895f3fe143186c114e373407a959d62fbe2fd5 Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Mon, 15 Jul 2024 02:12:08 +0800 Subject: [PATCH 004/105] [multi-chat] fix: remove debugging snippet --- src/multi-chat/resources/views/room/home.blade.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/multi-chat/resources/views/room/home.blade.php b/src/multi-chat/resources/views/room/home.blade.php index c37ceb79..fff0b372 100644 --- a/src/multi-chat/resources/views/room/home.blade.php +++ b/src/multi-chat/resources/views/room/home.blade.php @@ -77,9 +77,6 @@ class="absolute sm:hidden text-center text-black hover:text-black dark:text-whit
@foreach($bots as $bot) - @php - error_log(print_r($bot, true), 0); - @endphp Date: Mon, 15 Jul 2024 14:33:19 +0800 Subject: [PATCH 005/105] [multi-chat] fix: requrements of llama-cpp-python --- docker/executor/Dockerfile | 2 ++ docker/executor/requirements.txt | 1 + src/executor/requirements.txt | 6 +++--- windows/src/requirements.txt | 2 +- windows/src/version_patch/12.1/windows/src/requirements.txt | 2 +- windows/src/version_patch/12.2/windows/src/requirements.txt | 2 +- windows/src/version_patch/12.3/windows/src/requirements.txt | 2 +- windows/src/version_patch/12.4/windows/src/requirements.txt | 2 +- windows/src/version_patch/cpu/windows/src/requirements.txt | 2 +- 9 files changed, 12 insertions(+), 9 deletions(-) create mode 100644 docker/executor/requirements.txt diff --git a/docker/executor/Dockerfile b/docker/executor/Dockerfile index 255e177d..81df8d14 100644 --- a/docker/executor/Dockerfile +++ b/docker/executor/Dockerfile @@ -6,6 +6,8 @@ RUN apt-get update &&\ apt-get install -y cmake build-essential git # Install the dependency of executor +COPY docker/executor/requirements.txt ./requirements-docker.txt +RUN pip install --no-cache-dir -r requirements-docker.txt COPY src/executor/requirements.txt ./ RUN sed -i '/\.[/]*/d' ./requirements.txt &&\ sed -i '/torch.*/d' ./requirements.txt diff --git a/docker/executor/requirements.txt b/docker/executor/requirements.txt new file mode 100644 index 00000000..085ca3a5 --- /dev/null +++ b/docker/executor/requirements.txt @@ -0,0 +1 @@ +llama-cpp-python @ https://github.com/abetlen/llama-cpp-python/releases/download/v0.2.77/llama_cpp_python-0.2.77-cp310-cp310-linux_x86_64.whl \ No newline at end of file diff --git a/src/executor/requirements.txt b/src/executor/requirements.txt index 4af72a38..7efe8819 100644 --- a/src/executor/requirements.txt +++ b/src/executor/requirements.txt @@ -8,11 +8,11 @@ openai tiktoken # llama.cpp -llama-cpp-python==0.2.77 +llama-cpp-python == 0.2.77 # Huggingface -torch==2.3.0 -torchvision==0.18.0 +torch == 2.3.0 +torchvision == 0.18.0 transformers accelerate sentencepiece diff --git a/windows/src/requirements.txt b/windows/src/requirements.txt index 8a60c9b2..efe06a71 100644 --- a/windows/src/requirements.txt +++ b/windows/src/requirements.txt @@ -1,5 +1,5 @@ hatchling hatch-vcs -https://github.com/abetlen/llama-cpp-python/releases/download/v0.2.77/llama_cpp_python-0.2.77-cp310-cp310-win_amd64.whl +llama-cpp-python @ https://github.com/abetlen/llama-cpp-python/releases/download/v0.2.77/llama_cpp_python-0.2.77-cp310-cp310-win_amd64.whl https://www.piwheels.org/simple/compressed-rtf/compressed_rtf-1.0.6-py3-none-any.whl#sha256=d6729750a95e2350a7ec0fd3284852a1f7f7e35bfae2699c67f9f4a9b7e6063d trio==0.24.0 \ No newline at end of file diff --git a/windows/src/version_patch/12.1/windows/src/requirements.txt b/windows/src/version_patch/12.1/windows/src/requirements.txt index 69601d1b..d74de088 100644 --- a/windows/src/version_patch/12.1/windows/src/requirements.txt +++ b/windows/src/version_patch/12.1/windows/src/requirements.txt @@ -1,6 +1,6 @@ hatchling hatch-vcs -https://github.com/abetlen/llama-cpp-python/releases/download/v0.2.77-cu121/llama_cpp_python-0.2.77-cp310-cp310-win_amd64.whl +llama-cpp-python @ https://github.com/abetlen/llama-cpp-python/releases/download/v0.2.77-cu121/llama_cpp_python-0.2.77-cp310-cp310-win_amd64.whl https://www.piwheels.org/simple/compressed-rtf/compressed_rtf-1.0.6-py3-none-any.whl#sha256=d6729750a95e2350a7ec0fd3284852a1f7f7e35bfae2699c67f9f4a9b7e6063d https://download.pytorch.org/whl/cu121/torch-2.3.0%2Bcu121-cp310-cp310-win_amd64.whl#sha256=002027d18a9c054f08fe9cf7a729e041229e783e065a71349015dcccc9a7137e trio==0.24.0 \ No newline at end of file diff --git a/windows/src/version_patch/12.2/windows/src/requirements.txt b/windows/src/version_patch/12.2/windows/src/requirements.txt index 83a3cf13..92b3710b 100644 --- a/windows/src/version_patch/12.2/windows/src/requirements.txt +++ b/windows/src/version_patch/12.2/windows/src/requirements.txt @@ -1,6 +1,6 @@ hatchling hatch-vcs -https://github.com/abetlen/llama-cpp-python/releases/download/v0.2.77-cu122/llama_cpp_python-0.2.77-cp310-cp310-win_amd64.whl +llama-cpp-python @ https://github.com/abetlen/llama-cpp-python/releases/download/v0.2.77-cu122/llama_cpp_python-0.2.77-cp310-cp310-win_amd64.whl https://www.piwheels.org/simple/compressed-rtf/compressed_rtf-1.0.6-py3-none-any.whl#sha256=d6729750a95e2350a7ec0fd3284852a1f7f7e35bfae2699c67f9f4a9b7e6063d https://download.pytorch.org/whl/cu121/torch-2.3.0%2Bcu121-cp310-cp310-win_amd64.whl#sha256=002027d18a9c054f08fe9cf7a729e041229e783e065a71349015dcccc9a7137e trio==0.24.0 \ No newline at end of file diff --git a/windows/src/version_patch/12.3/windows/src/requirements.txt b/windows/src/version_patch/12.3/windows/src/requirements.txt index 5828f06f..b0892edd 100644 --- a/windows/src/version_patch/12.3/windows/src/requirements.txt +++ b/windows/src/version_patch/12.3/windows/src/requirements.txt @@ -1,6 +1,6 @@ hatchling hatch-vcs -https://github.com/abetlen/llama-cpp-python/releases/download/v0.2.77-cu123/llama_cpp_python-0.2.77-cp310-cp310-win_amd64.whl +llama-cpp-python @ https://github.com/abetlen/llama-cpp-python/releases/download/v0.2.77-cu123/llama_cpp_python-0.2.77-cp310-cp310-win_amd64.whl https://www.piwheels.org/simple/compressed-rtf/compressed_rtf-1.0.6-py3-none-any.whl#sha256=d6729750a95e2350a7ec0fd3284852a1f7f7e35bfae2699c67f9f4a9b7e6063d https://download.pytorch.org/whl/cu121/torch-2.3.0%2Bcu121-cp310-cp310-win_amd64.whl#sha256=002027d18a9c054f08fe9cf7a729e041229e783e065a71349015dcccc9a7137e trio==0.24.0 \ No newline at end of file diff --git a/windows/src/version_patch/12.4/windows/src/requirements.txt b/windows/src/version_patch/12.4/windows/src/requirements.txt index f850be9e..4f38a2fc 100644 --- a/windows/src/version_patch/12.4/windows/src/requirements.txt +++ b/windows/src/version_patch/12.4/windows/src/requirements.txt @@ -1,6 +1,6 @@ hatchling hatch-vcs -https://github.com/abetlen/llama-cpp-python/releases/download/v0.2.77-cu124/llama_cpp_python-0.2.77-cp310-cp310-win_amd64.whl +llama-cpp-python @ https://github.com/abetlen/llama-cpp-python/releases/download/v0.2.77-cu124/llama_cpp_python-0.2.77-cp310-cp310-win_amd64.whl https://www.piwheels.org/simple/compressed-rtf/compressed_rtf-1.0.6-py3-none-any.whl#sha256=d6729750a95e2350a7ec0fd3284852a1f7f7e35bfae2699c67f9f4a9b7e6063d https://download.pytorch.org/whl/cu121/torch-2.3.0%2Bcu121-cp310-cp310-win_amd64.whl#sha256=002027d18a9c054f08fe9cf7a729e041229e783e065a71349015dcccc9a7137e trio==0.24.0 \ No newline at end of file diff --git a/windows/src/version_patch/cpu/windows/src/requirements.txt b/windows/src/version_patch/cpu/windows/src/requirements.txt index 8a60c9b2..efe06a71 100644 --- a/windows/src/version_patch/cpu/windows/src/requirements.txt +++ b/windows/src/version_patch/cpu/windows/src/requirements.txt @@ -1,5 +1,5 @@ hatchling hatch-vcs -https://github.com/abetlen/llama-cpp-python/releases/download/v0.2.77/llama_cpp_python-0.2.77-cp310-cp310-win_amd64.whl +llama-cpp-python @ https://github.com/abetlen/llama-cpp-python/releases/download/v0.2.77/llama_cpp_python-0.2.77-cp310-cp310-win_amd64.whl https://www.piwheels.org/simple/compressed-rtf/compressed_rtf-1.0.6-py3-none-any.whl#sha256=d6729750a95e2350a7ec0fd3284852a1f7f7e35bfae2699c67f9f4a9b7e6063d trio==0.24.0 \ No newline at end of file From 4264a851f25da33355f8ce6cc44456d2fca741a8 Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Mon, 15 Jul 2024 15:14:31 +0800 Subject: [PATCH 006/105] [windows] fix: pip cache dir --- windows/build.bat | 10 +++++----- windows/src/variables.bat | 2 ++ 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/windows/build.bat b/windows/build.bat index af568948..bcf0db72 100644 --- a/windows/build.bat +++ b/windows/build.bat @@ -158,11 +158,7 @@ REM Make shortcut from nginx_folder/html to ../public echo Creating shortcut from %nginx_folder%/html to ../public... mklink /j "%~dp0packages\%nginx_folder%\html" "%~dp0..\src\multi-chat\public" -REM Download Embedding Model -python ../src/executor/docqa/download_model.py - REM Download required pip packages -pip install --default-timeout=1000 -r .\src\requirements.txt pushd "..\src\kernel" pip install --default-timeout=1000 --force-reinstall . pip install --default-timeout=1000 -r requirements.txt @@ -177,5 +173,9 @@ popd pushd "..\src\toolchain" pip install --default-timeout=1000 -r requirements.txt popd + REM Make sure the windows edition package are still the correct version -pip install --default-timeout=1000 -r .\src\requirements.txt \ No newline at end of file +pip install --default-timeout=1000 -r .\src\requirements.txt + +REM Download Embedding Model +python ../src/executor/docqa/download_model.py \ No newline at end of file diff --git a/windows/src/variables.bat b/windows/src/variables.bat index ef39ccdb..c1fd8a66 100644 --- a/windows/src/variables.bat +++ b/windows/src/variables.bat @@ -70,6 +70,8 @@ for /f "tokens=2 delims=-" %%v in ("%filename_ffmpeg%") do set "version_ffmpeg=% REM Environment variables for model cache set "KUWA_CACHE=%~dp0..\cache" mkdir "%KUWA_CACHE%" +set "XDG_CACHE_HOME=%KUWA_CACHE%" +set "PIP_CACHE_DIR=%KUWA_CACHE%\pip" set "TORCH_HOME=%KUWA_CACHE%\torch" set "CSIDL_LOCAL_APPDATA=%KUWA_CACHE%\appdata" set "HF_HOME=%KUWA_CACHE%\huggingface" From aaf7441fd5908f7d169642fdfbc19fc29f341cc5 Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Tue, 23 Jul 2024 16:04:58 +0800 Subject: [PATCH 007/105] [executor] fix: VLLM example --- src/executor/README.md | 1 + src/executor/README_TW.md | 1 + 2 files changed, 2 insertions(+) diff --git a/src/executor/README.md b/src/executor/README.md index 86b0cd61..c178ccdd 100644 --- a/src/executor/README.md +++ b/src/executor/README.md @@ -124,6 +124,7 @@ docker run --runtime nvidia --gpus all \ kuwa-executor chatgpt --access_code vllm --log debug \ --base_url "http://localhost:8000/v1" `# Change the API base URL to vLLM` \ --api_key dummy `# Dummy API Key` \ + --no_override_api_key `#Disable override the system API key with user API key.` \ --model "google/gemma-7b-it" `# Specify Gemma 7B model` ``` diff --git a/src/executor/README_TW.md b/src/executor/README_TW.md index a5c44b2b..2c1d6b70 100644 --- a/src/executor/README_TW.md +++ b/src/executor/README_TW.md @@ -124,6 +124,7 @@ docker run --runtime nvidia --gpus all \ kuwa-executor chatgpt --access_code vllm --log debug \ --base_url "http://localhost:8000/v1" `# 將 API 的基礎路徑改為 vLLM`\ --api_key dummy `# API Key 隨意`\ + --no_override_api_key `#Disable override the system API key with user API key.` \ --model "google/gemma-7b-it" `# 選擇 Gemma 7B 模型` ``` From 34099e85e24455d1cd65216073a0975b2d726a76 Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Wed, 24 Jul 2024 08:50:05 +0800 Subject: [PATCH 008/105] [executor, docker, windows] fix: proxy config 1. Executor: set trust_env to True to consume proxy setting from env 2. Docker: Respect proxy env in dockerfile 3. Windows: Expose system proxy as env --- docker/executor/Dockerfile | 2 + docker/multi-chat/Dockerfile | 7 +- .../src/recursive_url_multimedia_loader.py | 1 + .../src/recursive_url_multimedia_loader.py | 1 + .../detector/src/core/llama_guard.py | 2 +- .../detector/src/core/llama_guard.py | 2 +- windows/build.bat | 1 + windows/src/getproxy.bat | 80 +++++++++++++++++++ windows/src/variables.bat | 2 + 9 files changed, 95 insertions(+), 3 deletions(-) create mode 100644 windows/src/getproxy.bat diff --git a/docker/executor/Dockerfile b/docker/executor/Dockerfile index 81df8d14..7161721b 100644 --- a/docker/executor/Dockerfile +++ b/docker/executor/Dockerfile @@ -35,6 +35,8 @@ COPY docker/executor/docker-entrypoint /usr/local/bin/ RUN chmod +x /usr/local/bin/docker-entrypoint # Default parameters +ENV no_proxy="kernel,web,localhost,127.0.0.0/8,::1,${no_proxy}" +ENV NO_PROXY="kernel,web,localhost,127.0.0.0/8,::1,${NO_PROXY}" ENV EXECUTOR_TYPE="debug" ENV EXECUTOR_ACCESS_CODE="debug" ENV EXECUTOR_NAME="Debug Executor" diff --git a/docker/multi-chat/Dockerfile b/docker/multi-chat/Dockerfile index cf0cba45..417f3c76 100644 --- a/docker/multi-chat/Dockerfile +++ b/docker/multi-chat/Dockerfile @@ -17,6 +17,8 @@ RUN apt-get install -y libldap-dev libzip-dev &&\ COPY src/multi-chat /app WORKDIR /app ## Install dependencies using npm and composer +ENV HTTP_PROXY_REQUEST_FULLURI=0 +ENV HTTPS_PROXY_REQUEST_FULLURI=0 RUN composer update --no-interaction &&\ composer install --no-interaction --optimize-autoloader --no-dev &&\ npm install @@ -51,7 +53,8 @@ RUN apt-get update &&\ apt-get install -y libldap-dev libzip-dev libcurl4-openssl-dev libonig-dev \ libxml2-dev libpq-dev libpng-dev &&\ docker-php-ext-install curl mbstring xml zip ldap mysqli pdo_mysql pgsql pdo_pgsql gd -RUN pecl install redis-6.0.2 &&\ +RUN pear config-set http_proxy "${https_proxy:-${HTTPS_PROXY}}" &&\ + pecl install redis-6.0.2 &&\ docker-php-ext-enable redis # Install tools to check service status @@ -72,6 +75,8 @@ RUN chmod +x docker-entrypoint multi-chat # Setup the entry point ENV KUWA_MULTI_CHAT_VERSION="0.3.2-docker1" +ENV no_proxy="kernel,web,localhost,127.0.0.0/8,::1,${no_proxy}" +ENV NO_PROXY="kernel,web,localhost,127.0.0.0/8,::1,${NO_PROXY}" ENV KUWA_KERNEL_URL="http://kernel:9000" ENV APP_URL="http://localhost/" ENV APP_ENV="production" diff --git a/src/executor/docqa/src/recursive_url_multimedia_loader.py b/src/executor/docqa/src/recursive_url_multimedia_loader.py index 043ff655..749cc335 100644 --- a/src/executor/docqa/src/recursive_url_multimedia_loader.py +++ b/src/executor/docqa/src/recursive_url_multimedia_loader.py @@ -308,6 +308,7 @@ async def _async_get_child_links_recursive( connector=aiohttp.TCPConnector(ssl=False), timeout=aiohttp.ClientTimeout(total=self.timeout), headers=self.headers, + trust_env=True, ) ) async with self._lock: # type: ignore diff --git a/src/executor/retriever/src/recursive_url_multimedia_loader.py b/src/executor/retriever/src/recursive_url_multimedia_loader.py index 1b33d0b1..88d013d4 100644 --- a/src/executor/retriever/src/recursive_url_multimedia_loader.py +++ b/src/executor/retriever/src/recursive_url_multimedia_loader.py @@ -313,6 +313,7 @@ async def _async_get_child_links_recursive( connector=aiohttp.TCPConnector(ssl=False), timeout=aiohttp.ClientTimeout(total=self.timeout), headers=self.headers, + trust_env=True, ) ) async with self._lock: # type: ignore diff --git a/src/executor/safety-guard/detector/src/core/llama_guard.py b/src/executor/safety-guard/detector/src/core/llama_guard.py index adac5d17..e63e53ef 100644 --- a/src/executor/safety-guard/detector/src/core/llama_guard.py +++ b/src/executor/safety-guard/detector/src/core/llama_guard.py @@ -165,7 +165,7 @@ async def invoke_llamaguard(self, prompt:str) -> str: base_url = os.environ.get('TGI_URL', 'http://127.0.0.1:8182') result = '' - async with aiohttp.ClientSession() as session: + async with aiohttp.ClientSession(trust_env=True) as session: async with session.post(f'{base_url}/generate', json=data, headers=headers) as resp: response = await resp.json() result = response['generated_text'].strip() diff --git a/src/executor/working/safety-guard/detector/src/core/llama_guard.py b/src/executor/working/safety-guard/detector/src/core/llama_guard.py index adac5d17..e63e53ef 100644 --- a/src/executor/working/safety-guard/detector/src/core/llama_guard.py +++ b/src/executor/working/safety-guard/detector/src/core/llama_guard.py @@ -165,7 +165,7 @@ async def invoke_llamaguard(self, prompt:str) -> str: base_url = os.environ.get('TGI_URL', 'http://127.0.0.1:8182') result = '' - async with aiohttp.ClientSession() as session: + async with aiohttp.ClientSession(trust_env=True) as session: async with session.post(f'{base_url}/generate', json=data, headers=headers) as resp: response = await resp.json() result = response['generated_text'].strip() diff --git a/windows/build.bat b/windows/build.bat index bcf0db72..de4c165f 100644 --- a/windows/build.bat +++ b/windows/build.bat @@ -133,6 +133,7 @@ if not exist "..\src\multi-chat\.env" ( set "PATH=%~dp0packages\%node_folder%;%PATH%" REM Production update +SET HTTP_PROXY_REQUEST_FULLURI=0 pushd "..\src\multi-chat" call php ..\..\windows\packages\composer.phar update call php artisan key:generate --force diff --git a/windows/src/getproxy.bat b/windows/src/getproxy.bat new file mode 100644 index 00000000..6dc4eef0 --- /dev/null +++ b/windows/src/getproxy.bat @@ -0,0 +1,80 @@ +:: This script will get proxies from the registry and write to environment variables. +:: Ref: https://github.com/python/cpython/blob/d86ab5dde286642a378fcc32c243bc3b4bed750d/Lib/urllib/request.py#L2684 + +@echo off +setlocal enableDelayedExpansion + +:: Check if reg query command is successful +reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable >nul 2>&1 +if %errorlevel% neq 0 goto :eof + +:: Get ProxyEnable value +for /f "tokens=3" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable ^| findstr /i "ProxyEnable"') do set "proxyEnable=%%a" + +:: Check if proxy is enabled +if "!proxyEnable!" neq "0x1" ( + set proxyEnable= + echo Proxy Related Environment Variables: + set | findstr /i _proxy + echo --- + goto :eof +) + +:: Get ProxyServer value +for /f "tokens=3" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer ^| findstr /i "ProxyServer"') do set "proxyServer=%%a" + +if "!proxyServer:==!" equ "!proxyServer!" ( + :: Use one setting for all protocols + set "proxyServer=http=!proxyServer!;https=!proxyServer!;ftp=!proxyServer!" +) + +:: Parse proxy settings +for %%p in ("!proxyServer:;=" "!") do ( + :: Default scheme is http + for /f "tokens=1,2 delims==" %%a in (%%p) do ( + set "scheme=%%a" + set "address=%%b" + ) + + :: Add type:// prefix if missing + if "!address:://=!" equ "!address!" ( + if "!scheme!" equ "http" set "address=http://!address!" + if "!scheme!" equ "https" set "address=https://!address!" + if "!scheme!" equ "ftp" set "address=ftp://!address!" + if "!scheme!" equ "socks" set "address=socks4://!address!" + ) + + :: Set proxy if it's not set + set "proxyName=!scheme!_proxy" + for /f %%a in ("!proxyName!") do (set "oldProxyValue=!%%a!") + if "!oldProxyValue!" equ "" ( + set "!proxyName!=!address!" + ) +) + +:: Use SOCKS proxy for HTTP(S) if available +if "!socks_proxy!" neq "" ( + if "!http_proxy!" equ "" set "http_proxy=http://!socks_proxy!" + if "!https_proxy!" equ "" set "https_proxy=https://!socks_proxy!" +) + +:: Parse no_proxy configuration +for /f "tokens=3" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyOverride ^| findstr /i "REG_SZ"') do set "no_proxy=%%a" +set "no_proxy=!no_proxy:;=,!" +set "no_proxy=!no_proxy:=localhost,127.0.0.0/8,::1/128!" + +::Clean up +set proxyEnable= +set proxyServer= +set proxyName= +set oldProxyValue= + +echo Proxy Related Environment Variables: +set | findstr /i _proxy +echo --- + +:: Expose all proxy related variables +for /f %%v in ('set ^| findstr /i _proxy') do ( + endlocal + set %%v +) \ No newline at end of file diff --git a/windows/src/variables.bat b/windows/src/variables.bat index c1fd8a66..e4561e13 100644 --- a/windows/src/variables.bat +++ b/windows/src/variables.bat @@ -1,6 +1,8 @@ @echo off cd "%~dp0.." +call src\getproxy.bat + REM Variables for RunHiddenConsole set "url_RunHiddenConsole=https://github.com/wenshui2008/RunHiddenConsole/releases/download/1.0/RunHiddenConsole.zip" for %%I in ("%url_RunHiddenConsole%") do set "filename_RunHiddenConsole=%%~nxI" From b1cc07915fe0611ef0b53ac7759915e5b10d347c Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Wed, 24 Jul 2024 14:36:07 +0800 Subject: [PATCH 009/105] [multi-chat] fix: trusted proxy env This patch enables the configuration of a trusted proxy via the environment variable, granting the ability to automatically prepend the "https://" prefix on generated links for HTTPS services. --- docker/.env.sample | 9 ++++++++- docker/multi-chat/app.env | 2 ++ src/multi-chat/.env.dev | 2 ++ src/multi-chat/config/trustedproxy.php | 15 +++++++++++++++ windows/build.bat | 6 ++++-- 5 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 src/multi-chat/config/trustedproxy.php diff --git a/docker/.env.sample b/docker/.env.sample index 57722b19..bd158fb4 100644 --- a/docker/.env.sample +++ b/docker/.env.sample @@ -4,4 +4,11 @@ PUBLIC_BASE_URL="http://${DOMAIN_NAME}/" ADMIN_NAME="Kuwa Admin" ADMIN_EMAIL="admin@${DOMAIN_NAME}" DB_USERNAME=kuwa -DB_DATABASE=kuwa-genai-os \ No newline at end of file +DB_DATABASE=kuwa-genai-os + +# To configure an HTTPS service using a reverse proxy, designate the reverse proxy +# as a trusted entity, allowing it to automatically prepend the "https://" prefix +# when generating links. +# Example1: TRUSTED_PROXIES=* +# Example2: TRUSTED_PROXIES=192.168.1.1,192.168.1.2 +TRUSTED_PROXIES= \ No newline at end of file diff --git a/docker/multi-chat/app.env b/docker/multi-chat/app.env index a5c648b6..df890c2a 100644 --- a/docker/multi-chat/app.env +++ b/docker/multi-chat/app.env @@ -11,6 +11,8 @@ LOG_CHANNEL=stack LOG_DEPRECATIONS_CHANNEL=null LOG_LEVEL=debug +TRUSTED_PROXIES= + # DB_CONNECTION= # DB_HOST= # DB_PORT= diff --git a/src/multi-chat/.env.dev b/src/multi-chat/.env.dev index 319adeb2..cc90b37a 100644 --- a/src/multi-chat/.env.dev +++ b/src/multi-chat/.env.dev @@ -11,6 +11,8 @@ LOG_CHANNEL=stack LOG_DEPRECATIONS_CHANNEL=null LOG_LEVEL=debug +TRUSTED_PROXIES= + DB_CONNECTION=sqlite DB_FOREIGN_KEYS=false #DB_HOST= diff --git a/src/multi-chat/config/trustedproxy.php b/src/multi-chat/config/trustedproxy.php new file mode 100644 index 00000000..b65c4fb7 --- /dev/null +++ b/src/multi-chat/config/trustedproxy.php @@ -0,0 +1,15 @@ + $proxies +]; \ No newline at end of file diff --git a/windows/build.bat b/windows/build.bat index de4c165f..d346af4d 100644 --- a/windows/build.bat +++ b/windows/build.bat @@ -71,8 +71,10 @@ IF EXIST packages\%nginx_folder% ( ) ELSE ( REM Download and extract Nginx if not exists call src\download_extract.bat %url_Nginx% packages\%nginx_folder% packages\. nginx.zip - REM Overwrite the nginx.conf file - echo Overwrite the nginx.conf file. + ren "packages\%nginx_folder%\conf\nginx.conf" "nginx.conf.old" +) +IF NOT EXIST packages\%nginx_folder%\conf\nginx.conf ( + echo Copying default nginx configuration. copy /Y src\nginx.conf "packages\%nginx_folder%\conf\nginx.conf" ) From ab002161f3ed600429943aac481249d9749aa934 Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Wed, 24 Jul 2024 21:48:17 +0800 Subject: [PATCH 010/105] [executor] add: vision and 4o-mini support --- src/executor/chatgpt.py | 56 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/src/executor/chatgpt.py b/src/executor/chatgpt.py index 4392d486..18a4ece3 100644 --- a/src/executor/chatgpt.py +++ b/src/executor/chatgpt.py @@ -11,7 +11,15 @@ import tiktoken from openai.resources.chat.completions import AsyncCompletions +import io +import functools +import mimetypes +import requests +import base64 +from PIL import Image + from kuwa.executor import LLMExecutor, Modelfile +from kuwa.executor.llm_executor import extract_last_url from kuwa.executor.util import ( expose_function_parameter, read_config, @@ -27,7 +35,7 @@ ("gpt-3.5-turbo-instruct",): 4096, ("gpt-4", "gpt-4-0613"): 8192, ("gpt-4-32k", "gpt-4-32k-0613"): 32768, - ("gpt-4-0125-preview", "gpt-4-turbo-preview", "gpt-4-1106-preview", "gpt-4-vision-preview", "gpt-4-1106-vision-preview", "gpt-4-turbo", "gpt-4-turbo-2024-04-09", "gpt-4o", "gpt-4o-2024-05-13"): 128000, + ("gpt-4-0125-preview", "gpt-4-turbo-preview", "gpt-4-1106-preview", "gpt-4-vision-preview", "gpt-4-1106-vision-preview", "gpt-4-turbo", "gpt-4-turbo-2024-04-09", "gpt-4o", "gpt-4o-2024-05-13", "gpt-4o-mini", "gpt-4o-mini-2024-07-18"): 128000, } class ChatGptDescParser(DescriptionParser): @@ -135,12 +143,57 @@ def num_tokens_from_messages(self, messages): for message in messages: num_tokens += tokens_per_message for key, value in message.items(): + if key=="content" and type(value) is list: + value = [v["text"] for v in value if v["type"]=="text"][0] num_tokens += len(encoding.encode(value)) if key == "name": num_tokens += tokens_per_name num_tokens += 3 # every reply is primed with <|start|>assistant<|message|> return num_tokens + @functools.cache + def get_supported_image_mime(self): + ext2mime = lambda ext: mimetypes.guess_type(f"a{ext}")[0] + exts = Image.registered_extensions() + exts = {ex for ex, f in exts.items() if f in Image.OPEN} + mimes = {ext2mime(ex) for ex in exts} - {None} + return mimes + + def fetch_image_as_data_url(self, url: str): + def image_to_data_url(img): + if img is None: + return None + buffered = io.BytesIO() + img.save(buffered, format="JPEG") + return 'data:image/jpeg;base64,' + base64.b64encode(buffered.getvalue()).decode("utf-8") + + image = None + if (url is not None and url != "") and\ + requests.head(url, allow_redirects=True).headers["content-type"] in self.get_supported_image_mime(): + image = Image.open(requests.get(url, stream=True, allow_redirects=True).raw) + logger.info("Image fetched.") + + result = image_to_data_url(image) if image is not None else None + return result + + def parse_images(self, history: [dict]): + """ + Parse image URL to image data URL in the messages. + """ + result = [] + for msg in history: + new_msg = msg.copy() + url, text = extract_last_url([msg]) + data_url = self.fetch_image_as_data_url(url) + if data_url is not None: + new_msg["content"] = [ + {"type": "text", "text": text[0]["content"]}, + {"type": "image_url", "image_url": {"url": data_url}} + ] + result.append(new_msg) + + return result + async def llm_compute(self, history: list[dict], modelfile:Modelfile): try: openai_token = self.api_key @@ -158,6 +211,7 @@ async def llm_compute(self, history: list[dict], modelfile:Modelfile): msg = [{"content": system_prompt, "role": "system"}] + msg msg[-1]['content'] = modelfile.before_prompt + msg[-1]['content'] + modelfile.after_prompt + msg = self.parse_images(msg) if not msg or len(msg) == 0: yield "[No input message entered]" return From bfd7c6251451a98106b8e7f8e222e71a68fb838d Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Wed, 24 Jul 2024 22:57:53 +0800 Subject: [PATCH 011/105] [executor] add: multi-modal support to gemini --- src/executor/geminipro.py | 52 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 48 insertions(+), 4 deletions(-) diff --git a/src/executor/geminipro.py b/src/executor/geminipro.py index d4d55409..cb926725 100644 --- a/src/executor/geminipro.py +++ b/src/executor/geminipro.py @@ -9,7 +9,12 @@ sys.path.append(os.path.dirname(os.path.abspath(__file__))) import google.generativeai as genai +import mimetypes +import requests +import base64 + from kuwa.executor import LLMExecutor, Modelfile +from kuwa.executor.llm_executor import extract_last_url from kuwa.executor.util import expose_function_parameter, read_config, merge_config, DescriptionParser logger = logging.getLogger(__name__) @@ -78,6 +83,48 @@ async def count_token(self, messages: list): contents = [m["parts"][0]["text"] for m in messages] check_resp = await self.model.count_tokens_async(contents=contents) return check_resp.total_tokens + + def fetch_attachment(self, url: str): + # Ref: https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/inference#blob + supported_mime_types=[ + "application/pdf", "text/plain", + "audio/mpeg", "audio/mp3", "audio/wav", + "image/png", "image/jpeg", + "video/mov", "video/mpeg", "video/mp4", "video/mpg", + "video/avi", "video/wmv", "video/mpegps", "video/flv", + ] + + mime_type = None + content = None + if url is not None and url != "": + mime_type = requests.head(url, allow_redirects=True).headers["content-type"] + if mime_type in supported_mime_types: + content = base64.b64encode(requests.get(url, stream=True, allow_redirects=True).content).decode("UTF-8") + logger.info("Attachment fetched.") + + return mime_type, content + + def parse_messages(self, msgs:[dict]): + """ + Parse multi-modal messages from chat history. + """ + result = [] + for msg in msgs: + new_msg = { + "parts":[], + "role": {"user": "user", "assistant": "model"}[msg["role"]] + } + url, text = extract_last_url([msg]) + mime_type, file_content = self.fetch_attachment(url) + new_msg["parts"].append({"text":text[0]["content"].encode("utf-8",'ignore').decode("utf-8")}) + if file_content is not None: + new_msg["parts"].append({ + "mime_type": mime_type, + "data": file_content + }) + result.append(new_msg) + + return result async def llm_compute(self, history: list[dict], modelfile:Modelfile): try: @@ -89,10 +136,7 @@ async def llm_compute(self, history: list[dict], modelfile:Modelfile): # Apply parsed modelfile data to Inference raw_inputs = modelfile.messages + history - msg = [{ - "parts":[{"text":i['content'].encode("utf-8",'ignore').decode("utf-8")}], - "role": {"user": "user", "assistant": "model"}[i["role"]] - } for i in raw_inputs] + msg = self.parse_messages(raw_inputs) msg[-1]["parts"][0]['text'] = modelfile.before_prompt + msg[-1]["parts"][0]['text'] + modelfile.after_prompt msg[0]["parts"][0]['text'] = override_system_prompt + msg[0]["parts"][0]['text'] From 21f450403d23b4803357a02cf3ec4826b709d7f3 Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Thu, 25 Jul 2024 02:47:10 +0800 Subject: [PATCH 012/105] [gemini] fix: use File API to process larger file --- src/executor/geminipro.py | 66 +++++++++++++++++++++++++++++++++++---- 1 file changed, 60 insertions(+), 6 deletions(-) diff --git a/src/executor/geminipro.py b/src/executor/geminipro.py index cb926725..4b22e592 100644 --- a/src/executor/geminipro.py +++ b/src/executor/geminipro.py @@ -11,7 +11,10 @@ import mimetypes import requests -import base64 +import hashlib +import tempfile +import mimetypes +import inspect from kuwa.executor import LLMExecutor, Modelfile from kuwa.executor.llm_executor import extract_last_url @@ -32,6 +35,53 @@ def __call__(self, doc:str, name:str) -> str: else: description = None return description + +class GoogleFileStore: + """ + Upload files and delete through Gemini File API. + """ + + files = {} # Hashmap to cache uploaded files + def __init__(self, google_token): + genai.configure(api_key=google_token) + + async def upload_file(self, content, mime_type:str): + checksum = hashlib.sha512(content).hexdigest() + if checksum in self.files: + return self.files[checksum] + + uploaded_file = None + with tempfile.NamedTemporaryFile(suffix=mimetypes.guess_extension(mime_type)) as f: + f.write(content) + f.flush() + uploaded_file = genai.upload_file(path=f.name, display_name=checksum) + logger.info(f"Uploaded file {checksum}") + f.close() + self.files[checksum] = uploaded_file + await self.wait_file_active(uploaded_file) + return uploaded_file + + async def wait_file_active(self, file, retry_second=2.0, backoff_factor=1.1): + """ + Wait until the uploaded file in ACTIVE state. + """ + while True: + resp = genai.get_file(name=file.name) + logger.info(f"Waiting file state become ACTIVE. Current: {resp.state}") + if resp.state == genai.protos.File.State.ACTIVE: + break + await asyncio.sleep(retry_second) + retry_second *= backoff_factor + + async def delete_all_files(self): + if len(self.files) == 0: + return + logger.info(f"Cleaning uploaded files") + for file in self.files.values(): + file.delete() + file = None + self.files = filter(None, self.files) + class GeminiExecutor(LLMExecutor): model_name: str = "gemini-1.5-pro" @@ -99,12 +149,12 @@ def fetch_attachment(self, url: str): if url is not None and url != "": mime_type = requests.head(url, allow_redirects=True).headers["content-type"] if mime_type in supported_mime_types: - content = base64.b64encode(requests.get(url, stream=True, allow_redirects=True).content).decode("UTF-8") + content = requests.get(url, stream=True, allow_redirects=True).content logger.info("Attachment fetched.") return mime_type, content - def parse_messages(self, msgs:[dict]): + async def parse_messages(self, msgs:[dict], file_store:GoogleFileStore): """ Parse multi-modal messages from chat history. """ @@ -119,8 +169,10 @@ def parse_messages(self, msgs:[dict]): new_msg["parts"].append({"text":text[0]["content"].encode("utf-8",'ignore').decode("utf-8")}) if file_content is not None: new_msg["parts"].append({ - "mime_type": mime_type, - "data": file_content + "file_data": { + "mime_type": mime_type, + "file_uri": (await file_store.upload_file(file_content, mime_type)).uri + } }) result.append(new_msg) @@ -129,6 +181,7 @@ def parse_messages(self, msgs:[dict]): async def llm_compute(self, history: list[dict], modelfile:Modelfile): try: google_token = modelfile.parameters["_"].get("google_token") or self.args.api_key + file_store = GoogleFileStore(google_token) # Parse and process modelfile override_system_prompt = modelfile.override_system_prompt @@ -136,7 +189,7 @@ async def llm_compute(self, history: list[dict], modelfile:Modelfile): # Apply parsed modelfile data to Inference raw_inputs = modelfile.messages + history - msg = self.parse_messages(raw_inputs) + msg = await self.parse_messages(raw_inputs, file_store) msg[-1]["parts"][0]['text'] = modelfile.before_prompt + msg[-1]["parts"][0]['text'] + modelfile.after_prompt msg[0]["parts"][0]['text'] = override_system_prompt + msg[0]["parts"][0]['text'] @@ -187,6 +240,7 @@ async def llm_compute(self, history: list[dict], modelfile:Modelfile): logger.exception("Error occurs when calling Gemini-Pro API.") yield str(e) finally: + await file_store.delete_all_files() self.proc = False logger.debug("finished") From ee4fc2212b0713f3e5bb4f8a0b8b64ecfe92076e Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Thu, 25 Jul 2024 03:11:53 +0800 Subject: [PATCH 013/105] [gemini] fix: cache exception when deleting file --- src/executor/geminipro.py | 27 ++++++++++++++++++--------- src/executor/requirements.txt | 2 +- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/executor/geminipro.py b/src/executor/geminipro.py index 4b22e592..9ed77b8f 100644 --- a/src/executor/geminipro.py +++ b/src/executor/geminipro.py @@ -46,18 +46,23 @@ def __init__(self, google_token): genai.configure(api_key=google_token) async def upload_file(self, content, mime_type:str): - checksum = hashlib.sha512(content).hexdigest() - if checksum in self.files: - return self.files[checksum] + name = hashlib.sha512(content).hexdigest() + suffix = mimetypes.guess_extension(mime_type) + try: + # Shortcut for the cached and valid file + if name in self.files and genai.get_file(name): + return self.files[name] + except: + pass uploaded_file = None - with tempfile.NamedTemporaryFile(suffix=mimetypes.guess_extension(mime_type)) as f: + with tempfile.NamedTemporaryFile(suffix=suffix) as f: f.write(content) f.flush() - uploaded_file = genai.upload_file(path=f.name, display_name=checksum) - logger.info(f"Uploaded file {checksum}") + uploaded_file = genai.upload_file(path=f.name, display_name=name) + logger.info(f"Uploaded file {name}") f.close() - self.files[checksum] = uploaded_file + self.files[name] = uploaded_file await self.wait_file_active(uploaded_file) return uploaded_file @@ -78,8 +83,12 @@ async def delete_all_files(self): return logger.info(f"Cleaning uploaded files") for file in self.files.values(): - file.delete() - file = None + try: + file.delete() + except Exception as e: + logger.exception("Error deleting file") + finally: + file = None self.files = filter(None, self.files) class GeminiExecutor(LLMExecutor): diff --git a/src/executor/requirements.txt b/src/executor/requirements.txt index 7efe8819..bc1fda56 100644 --- a/src/executor/requirements.txt +++ b/src/executor/requirements.txt @@ -1,7 +1,7 @@ ./ # kuwa-executor # Gemini-Pro -google-generativeai +google-generativeai >= 0.6.0 # GPT openai From 5d90b8026f8a333ed6bc0438fac48064eb18e97b Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Thu, 25 Jul 2024 14:34:51 +0800 Subject: [PATCH 014/105] [executor] add: dall-e image generation --- src/executor/image_generation/dall_e.py | 204 ++++++++++++++++++++++++ 1 file changed, 204 insertions(+) create mode 100644 src/executor/image_generation/dall_e.py diff --git a/src/executor/image_generation/dall_e.py b/src/executor/image_generation/dall_e.py new file mode 100644 index 00000000..dbc81d7c --- /dev/null +++ b/src/executor/image_generation/dall_e.py @@ -0,0 +1,204 @@ +import re +import os +import sys +import logging +import json +import typing +import pprint +from textwrap import dedent +sys.path.append(os.path.dirname(os.path.abspath(__file__))) +import openai +from packaging.version import Version + +import io +import functools +import mimetypes +import requests +import base64 +import hashlib +from PIL import Image + +from kuwa.executor import LLMExecutor, Modelfile +from kuwa.executor.llm_executor import extract_last_url +from kuwa.executor.util import ( + expose_function_parameter, + read_config, + merge_config, + DescriptionParser, +) + +if Version(openai.__version__) < Version("1.2.3"): + raise ValueError(f"Error: OpenAI version {openai.__version__}" + " is less than the minimum version 1.2.3\n\n" + ">>You should run 'pip install --upgrade openai')") + +logger = logging.getLogger(__name__) + +class DalleExecutor(LLMExecutor): + + openai_base_url: str = "https://api.openai.com/v1" + no_override_api_key: bool = False + + max_prompt_length: int = 1000 + generation_config: dict = { + "model": "dall-e-2", + "size": "256x256", + "quality": "standard", + "style": "vivid", + "n": 1, + } + fixed_generation_config = { + "response_format": "b64_json", + } + + proc: bool = False + + def __init__(self): + super().__init__() + + def extend_arguments(self, parser): + model_group = parser.add_argument_group('Model Options') + model_group.add_argument('--api_key', default=None, help='The API key to access the service') + model_group.add_argument('--no_override_api_key', default=False, action='store_true', help='Disable override the system API key with user API key.') + model_group.add_argument('--base_url', default=self.openai_base_url, help='Alter the base URL to use third-party service.') + + gen_group = parser.add_argument_group('Generation Options', 'Generation options for OpenAI API.') + gen_group.add_argument('--model', default=self.generation_config["model"], help='Model name. See https://platform.openai.com/docs/models/dall-e') + gen_group.add_argument('--size', default=self.generation_config["size"], help='The size of the generated images. Must be one of 256x256, 512x512, or 1024x1024 for dall-e-2. Must be one of 1024x1024, 1792x1024, or 1024x1792 for dall-e-3 models') + gen_group.add_argument('--quality', default=self.generation_config["quality"], help='The quality of the image that will be generated. hd creates images with finer details and greater consistency across the image. This param is only supported for dall-e-3.') + gen_group.add_argument('--style', default=self.generation_config["style"], help='The style of the generated images. Must be one of vivid or natural. Vivid causes the model to lean towards generating hyper-real and dramatic images. Natural causes the model to produce more natural, less hyper-real looking images. This param is only supported for dall-e-3.') + gen_group.add_argument('--n', default=self.generation_config["n"], type=int, help='The number of images to generate. Must be between 1 and 10. For dall-e-3, only n=1 is supported.') + + def setup(self): + self.generation_config["model"] = self.args.model + self.generation_config["size"] = self.args.size + self.generation_config["quality"] = self.args.quality + self.generation_config["style"] = self.args.style + self.generation_config["n"] = self.args.n + self.openai_base_url = self.args.base_url + self.api_key = self.args.api_key + self.no_override_api_key = self.args.no_override_api_key + if not (self.api_key or "").startswith("sk-") and not self.no_override_api_key: + logger.warning("By incorporating the \"--no_override_api_key\" argument, you can prevent overriding of the specified third-party API key by the user's OpenAI API key.") + + logger.debug(f"Generation config:\n{pprint.pformat(self.generation_config, indent=2)}") + + self.proc = False + + @functools.cache + def get_supported_image_mime(self): + ext2mime = lambda ext: mimetypes.guess_type(f"a{ext}")[0] + exts = Image.registered_extensions() + exts = {ex for ex, f in exts.items() if f in Image.OPEN} + mimes = {ext2mime(ex) for ex in exts} - {None} + return mimes + + def image2png(self, img): + if img is None: + return None + buffered = io.BytesIO() + img.save(buffered, format="PNG") + # return 'data:image/png;base64,' + return buffered.getvalue() + + def fetch_image_as_png(self, url: str): + image = None + if (url is not None and url != "") and\ + requests.head(url, allow_redirects=True).headers["content-type"] in self.get_supported_image_mime(): + image = Image.open(requests.get(url, stream=True, allow_redirects=True).raw) + image = image.convert('RGBA') + logger.info("Image fetched.") + + result = self.image2png(image) if image is not None else None + return result + + def get_mask_image(self, img): + input_image = Image.open(io.BytesIO(img)) + width, height = input_image.size + # Create a new image with an alpha channel (RGBA) and the same size as the input image + mask_image = Image.new("RGBA", (width, height), (0, 0, 0, 0)) + + return self.image2png(mask_image) + + async def image2image(self, client, prompt, url, generation_config): + image = self.fetch_image_as_png(url) + if image is None: + logger.warning("Failed to fetch image") + return None + + generation_config = {k: generation_config[k] for k in ["model", "n", "size", "response_format"]} + images_response = await client.images.edit( + prompt = prompt, + image = image, + mask = self.get_mask_image(image), + **generation_config + ) + return [img.model_dump()["b64_json"] for img in images_response.data] + + async def text2image(self, client, prompt, generation_config): + generation_config = {k: generation_config[k] for k in ["model", "n", "size", "response_format", "quality", "style"]} + images_response = await client.images.generate( + prompt=prompt, + **generation_config + ) + return [img.model_dump()["b64_json"] for img in images_response.data] + + async def llm_compute(self, history: list[dict], modelfile:Modelfile): + try: + openai_token = self.api_key + if not self.no_override_api_key: + openai_token = modelfile.parameters["_"].get("openai_token") or self.api_key + openai_token = openai_token.strip() + + url, history = extract_last_url(history) + + # Parse and process modelfile + override_system_prompt, messages = modelfile.override_system_prompt, modelfile.messages + prompt = modelfile.before_prompt + history[-1]["content"] + modelfile.after_prompt + generation_config = merge_config(self.generation_config, modelfile.parameters["model_"]) + generation_config["response_format"] = "b64_json" + generation_config["user"] = hashlib.sha1(modelfile.parameters["_"]["user_id"].encode("utf-8")).hexdigest() + + if len(prompt) > self.max_prompt_length: + yield f"[Prompt too long. Tne maximum length is {self.max_prompt_length}]" + return + + if not openai_token or len(openai_token) == 0: + yield "[Please enter your OpenAI API Token in the user settings on the website in order to use the model.]" + return + + client = openai.AsyncOpenAI( + api_key=openai_token, + base_url=self.openai_base_url + ) + + generated_images = [] + if url is None: + generated_images = await self.text2image(client, prompt, generation_config) + else: + generated_images = await self.image2image(client, prompt, url, generation_config) + + for image in generated_images: + image = f"data:image/png;base64,{image}" + yield "![{prompt}]({image})\n".format(prompt=prompt, image=image) + + except Exception as e: + logger.exception("Error occurs when calling OpenAI API") + if str(e).startswith("Incorrect API key provided:"): + yield "[Invalid OpenAI API Token, please check if the OpenAI API Token is correct.]" + else: + yield str(e) + finally: + self.proc = False + logger.debug("finished") + + async def abort(self): + if self.proc: + self.proc = False + logger.debug("aborted") + return "Aborted" + return "No process to abort" + +if __name__ == "__main__": + executor = DalleExecutor() + executor.run() \ No newline at end of file From 2cb4b19bf7be51654cdbb3d1683365d1a06700c4 Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Fri, 26 Jul 2024 23:52:46 +0800 Subject: [PATCH 015/105] [multi-chat] fix: change the uploaded file --- src/multi-chat/app/Http/Controllers/RoomController.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/multi-chat/app/Http/Controllers/RoomController.php b/src/multi-chat/app/Http/Controllers/RoomController.php index bfede862..c6bb29c8 100644 --- a/src/multi-chat/app/Http/Controllers/RoomController.php +++ b/src/multi-chat/app/Http/Controllers/RoomController.php @@ -360,7 +360,13 @@ public function upload_file(Request $request) $directory = 'pdfs/' . $request->user()->id; // Directory relative to 'public/storage/' $storagePath = public_path('storage/' . $directory); // Adjusted path - $fileName = time() . '_' . $request->file->getClientOriginalName(); + $filePathParts = pathinfo($request->file->getClientOriginalName()); + $fileName = sprintf( + "%s-%s%s", + $filePathParts["filename"], + time(), + $filePathParts["extension"] ? ("." . $filePathParts["extension"]) : "" + ); $filePath = $request->file('file')->storeAs($directory, $fileName, 'public'); // Use 'public' disk $files = File::files($storagePath); From 79019fdc9f22507222e15f21c2b3fada6e3e5bea Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Sat, 27 Jul 2024 00:16:10 +0800 Subject: [PATCH 016/105] [multi-chat] fix: center the elements in the store --- .../resources/views/components/store/bot-showcase.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/multi-chat/resources/views/components/store/bot-showcase.blade.php b/src/multi-chat/resources/views/components/store/bot-showcase.blade.php index 236dfbdd..fd9966e0 100644 --- a/src/multi-chat/resources/views/components/store/bot-showcase.blade.php +++ b/src/multi-chat/resources/views/components/store/bot-showcase.blade.php @@ -15,7 +15,7 @@ class="rounded-full bg-gray-300 hover:bg-gray-400 dark:bg-gray-800 w-[30px] h-[3 @foreach ($bots as $bot)
+ class="{{ $bot->owner_id == request()->user()->id ? 'bg-neutral-300 hover:bg-neutral-400 dark:bg-neutral-500 dark:hover:bg-neutral-700' : ' hover:bg-gray-300 dark:hover:bg-gray-700' }} text-center overflow-hidden flex flex-col justify-center border border-1 rounded-lg cursor-pointer border-gray-500 min-w-[150px] max-w-[150px] w-[150px] p-2">

{{ $bot->name }}

From 47af12e2ae7b51455e8d31ca74c40b216f7ca5f0 Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Sat, 27 Jul 2024 00:43:20 +0800 Subject: [PATCH 017/105] [multi-chat] fix: unexpected ';' --- src/multi-chat/resources/views/room.blade.php | 2 +- src/multi-chat/resources/views/room/home.blade.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/multi-chat/resources/views/room.blade.php b/src/multi-chat/resources/views/room.blade.php index 94b1fc3e..81b325dd 100644 --- a/src/multi-chat/resources/views/room.blade.php +++ b/src/multi-chat/resources/views/room.blade.php @@ -1,5 +1,5 @@ - @include('includes/sorted-bots'); + @include('includes/sorted-bots') @php $bots = getSortedBots(); $sorting_methods = getBotSortingMethods(); diff --git a/src/multi-chat/resources/views/room/home.blade.php b/src/multi-chat/resources/views/room/home.blade.php index fff0b372..b6b164f3 100644 --- a/src/multi-chat/resources/views/room/home.blade.php +++ b/src/multi-chat/resources/views/room/home.blade.php @@ -1,5 +1,5 @@ - @include('includes/sorted-bots'); + @include('includes/sorted-bots') @php $bots = getSortedBots(); $sorting_methods = getBotSortingMethods(); From 39dd38d4d580f967611ae58fd7d3f9b13c060c28 Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Sat, 27 Jul 2024 01:24:26 +0800 Subject: [PATCH 018/105] [multi-chat] fix: escape chat room name --- src/multi-chat/resources/views/components/room/llm.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/multi-chat/resources/views/components/room/llm.blade.php b/src/multi-chat/resources/views/components/room/llm.blade.php index 43474a49..ac9257e5 100644 --- a/src/multi-chat/resources/views/components/room/llm.blade.php +++ b/src/multi-chat/resources/views/components/room/llm.blade.php @@ -133,7 +133,7 @@ class="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-600 dark:hover:text-
  • {{ __('chat.button.delete') }}
  • @endif From faaad16fa3662585a4c2f6fc746af1f47e48611b Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Sat, 27 Jul 2024 04:29:12 +0800 Subject: [PATCH 019/105] [multi-chat] add: configurable max uploaded files --- docker/multi-chat/Dockerfile | 2 +- .../app/Http/Controllers/RoomController.php | 19 ++++- .../app/Http/Controllers/SystemController.php | 4 + ...7_27_020431_init_max_upload_file_count.php | 34 ++++++++ src/multi-chat/lang/cs_cz/chat.php | 1 + src/multi-chat/lang/cs_cz/manage.php | 2 + src/multi-chat/lang/de/chat.php | 1 + src/multi-chat/lang/de/manage.php | 2 + src/multi-chat/lang/en_us/chat.php | 1 + src/multi-chat/lang/en_us/manage.php | 2 + src/multi-chat/lang/fr_fr/chat.php | 1 + src/multi-chat/lang/fr_fr/manage.php | 2 + src/multi-chat/lang/ja_jp/chat.php | 1 + src/multi-chat/lang/ja_jp/manage.php | 2 + src/multi-chat/lang/ko_kr/chat.php | 1 + src/multi-chat/lang/ko_kr/manage.php | 2 + src/multi-chat/lang/zh_cn/chat.php | 1 + src/multi-chat/lang/zh_cn/manage.php | 2 + src/multi-chat/lang/zh_tw/chat.php | 1 + src/multi-chat/lang/zh_tw/manage.php | 2 + .../room/prompt-area/chat-script.blade.php | 5 ++ .../views/manage/tabs/settings.blade.php | 85 ++++++++++++++++++- 22 files changed, 167 insertions(+), 6 deletions(-) create mode 100644 src/multi-chat/database/migrations/2024_07_27_020431_init_max_upload_file_count.php diff --git a/docker/multi-chat/Dockerfile b/docker/multi-chat/Dockerfile index 417f3c76..43c4abc2 100644 --- a/docker/multi-chat/Dockerfile +++ b/docker/multi-chat/Dockerfile @@ -73,7 +73,7 @@ WORKDIR /usr/local/bin RUN chmod +x docker-entrypoint multi-chat # Setup the entry point -ENV KUWA_MULTI_CHAT_VERSION="0.3.2-docker1" +ENV KUWA_MULTI_CHAT_VERSION="0.3.2-docker2" ENV no_proxy="kernel,web,localhost,127.0.0.0/8,::1,${no_proxy}" ENV NO_PROXY="kernel,web,localhost,127.0.0.0/8,::1,${NO_PROXY}" diff --git a/src/multi-chat/app/Http/Controllers/RoomController.php b/src/multi-chat/app/Http/Controllers/RoomController.php index c6bb29c8..f0124bf7 100644 --- a/src/multi-chat/app/Http/Controllers/RoomController.php +++ b/src/multi-chat/app/Http/Controllers/RoomController.php @@ -335,8 +335,18 @@ public function upload_file(Request $request) } $max_file_size_mb = \App\Models\SystemSetting::where('key', 'upload_max_size_mb')->first()->value; $allowed_file_exts = \App\Models\SystemSetting::where('key', 'upload_allowed_extensions')->first()->value; + $upload_max_file_count = \App\Models\SystemSetting::where('key', 'upload_max_file_count')->first()->value; $max_file_size_kb = strval(intval($max_file_size_mb ?: 20) * 1024); $allowed_file_exts = $allowed_file_exts ?: 'pdf,doc,docx,odt,ppt,pptx,odp,xlsx,xls,ods,eml,txt,md,csv,json,jpg,bmp,png,zip,mp3,wav,flac,wma,m4a,aac'; + $upload_max_file_count = intval($upload_max_file_count ?: -1); + + if ($upload_max_file_count == 0) { + return [ + 'succeed' => false, + 'url' => null, + 'msg' => __("chat.hint.upload_disabled_by_admin"), + ]; + } Log::channel('analyze')->Debug("max_file_size_kb:". $max_file_size_kb); Log::channel('analyze')->Debug("allowed_file_exts:". $allowed_file_exts); @@ -371,17 +381,18 @@ public function upload_file(Request $request) $files = File::files($storagePath); - /* Disable auto delete files - if (count($files) > 5) { + // Auto delete files + if ($upload_max_file_count >= 0 && count($files) > $upload_max_file_count) { usort($files, function ($a, $b) { return filectime($a) - filectime($b); }); - while (count($files) > 5) { + while (count($files) > $upload_max_file_count) { $oldestFile = array_shift($files); File::delete($storagePath . '/' . $oldestFile->getFilename()); } - }*/ + } + //Create a chat and send that url into the llm $url = url('storage/' . $directory . '/' . rawurlencode($fileName)); return [ diff --git a/src/multi-chat/app/Http/Controllers/SystemController.php b/src/multi-chat/app/Http/Controllers/SystemController.php index fac6753b..ab26b25b 100644 --- a/src/multi-chat/app/Http/Controllers/SystemController.php +++ b/src/multi-chat/app/Http/Controllers/SystemController.php @@ -89,6 +89,10 @@ function extractBaseUrl($url) $model->value = implode(',', $upload_allowed_extensions); $model->save(); + $model = SystemSetting::where('key', 'upload_max_file_count')->first(); + $model->value = strval(intval($request->input('upload_max_file_count') ?? '-1')); + $model->save(); + $model = SystemSetting::where('key', 'tos')->first(); $oldtos = $model->value; $model->value = $request->input('tos') ?? ''; diff --git a/src/multi-chat/database/migrations/2024_07_27_020431_init_max_upload_file_count.php b/src/multi-chat/database/migrations/2024_07_27_020431_init_max_upload_file_count.php new file mode 100644 index 00000000..b2acfb7a --- /dev/null +++ b/src/multi-chat/database/migrations/2024_07_27_020431_init_max_upload_file_count.php @@ -0,0 +1,34 @@ +fill([ + 'key' => $this->field_upload_max_file_count, + 'value' => "-1", + ]); + $setting->save(); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + SystemSetting::where('key', $this->field_upload_max_file_count)->delete(); + } +}; diff --git a/src/multi-chat/lang/cs_cz/chat.php b/src/multi-chat/lang/cs_cz/chat.php index 9373d7c5..3fc566b1 100644 --- a/src/multi-chat/lang/cs_cz/chat.php +++ b/src/multi-chat/lang/cs_cz/chat.php @@ -77,4 +77,5 @@ 'hint.processing' => 'Zpráva se zpracovává... Čekejte...', 'hint.upload_file_too_large' => 'Velikost souboru překračuje limit', 'hint.upload_not_allowed_ext' => 'Tento typ souboru není povolen k nahrání', + 'hint.upload_disabled_by_admin' => 'Nahrávání souborů bylo administrátorem zakázáno', ]; \ No newline at end of file diff --git a/src/multi-chat/lang/cs_cz/manage.php b/src/multi-chat/lang/cs_cz/manage.php index 18fb65f0..953365f1 100644 --- a/src/multi-chat/lang/cs_cz/manage.php +++ b/src/multi-chat/lang/cs_cz/manage.php @@ -39,6 +39,7 @@ 'hint.group_updated' => 'Skupina byla úspěšně aktualizována!', 'hint.group_created' => 'Skupina byla úspěšně vytvořena!', 'modal.delete_group.header' => 'Opravdu chcete smazat tuto skupinu?', + 'modal.confirm_setting_modal.shrink_max_upload_file_count' => 'Snížení maximálního počtu nahraných souborů povede k odstranění souborů uživatelů přesahujících tento limit. Opravdu to chcete udělat?', // Users 'header.menu' => 'Hlavní menu', @@ -107,6 +108,7 @@ 'label.tos' => 'Podmínky služby', 'label.upload_max_size_mb' => 'Maximální velikost nahrávaného souboru (MB)', 'label.upload_allowed_extensions' => 'Povolené přípony souborů', + 'label.upload_max_file_count' => 'Maximální počet souborů pro nahrání (-1 znamená neomezeně)', //Permissions 'perm.Room_update_import_chat' => 'Importovat konverzaci', diff --git a/src/multi-chat/lang/de/chat.php b/src/multi-chat/lang/de/chat.php index 35285d37..415b21f7 100644 --- a/src/multi-chat/lang/de/chat.php +++ b/src/multi-chat/lang/de/chat.php @@ -77,4 +77,5 @@ 'hint.processing' => 'Nachricht wird verarbeitet... Bitte warten...', 'hint.upload_file_too_large' => 'Die Datei überschreitet die maximale Dateigröße.', 'hint.upload_not_allowed_ext' => 'Dieser Dateityp ist nicht zulässig.', + 'hint.upload_disabled_by_admin' => 'Das Hochladen von Dateien wurde vom Administrator deaktiviert.', ]; \ No newline at end of file diff --git a/src/multi-chat/lang/de/manage.php b/src/multi-chat/lang/de/manage.php index af95e7a4..5ab27c3c 100644 --- a/src/multi-chat/lang/de/manage.php +++ b/src/multi-chat/lang/de/manage.php @@ -92,6 +92,7 @@ 'label.description' => 'Beschreibung', 'modal.update_model.header' => 'Möchten Sie dieses Sprachmodellprofil wirklich aktualisieren?', 'modal.delete_model.header' => 'Möchten Sie dieses Sprachmodellprofil wirklich löschen?', + 'modal.confirm_setting_modal.shrink_max_upload_file_count' => 'Das Verringern der maximalen Anzahl von Uploads löscht die überschüssigen Benutzerdateien. Sind Sie sicher?', // Einstellungen 'header.settings' => 'Systemeinstellungen', @@ -108,6 +109,7 @@ 'label.tos' => 'Nutzungsbedingungen', 'label.upload_max_size_mb' => 'Maximale Upload-Dateigröße (MB)', 'label.upload_allowed_extensions' => 'Erlaubte Dateierweiterungen', + 'label.upload_max_file_count' => 'Maximale Anzahl hochzuladender Dateien (-1 für unbegrenzt)', // Berechtigungen 'perm.Room_update_import_chat' => 'Chat importieren', diff --git a/src/multi-chat/lang/en_us/chat.php b/src/multi-chat/lang/en_us/chat.php index e2b48d4f..aefa2eab 100644 --- a/src/multi-chat/lang/en_us/chat.php +++ b/src/multi-chat/lang/en_us/chat.php @@ -77,4 +77,5 @@ 'hint.processing' => 'Processing message...please wait...', 'hint.upload_file_too_large' => 'The uploaded file exceeds the size limit.', 'hint.upload_not_allowed_ext' => 'The uploaded file type is not allowed.', + 'hint.upload_disabled_by_admin' => 'File upload has been disabled by the administrator', ]; \ No newline at end of file diff --git a/src/multi-chat/lang/en_us/manage.php b/src/multi-chat/lang/en_us/manage.php index a8de08a8..d8f24e77 100644 --- a/src/multi-chat/lang/en_us/manage.php +++ b/src/multi-chat/lang/en_us/manage.php @@ -91,6 +91,7 @@ 'label.description' => 'Description', 'modal.update_model.header' => 'Are you sure you want to UPDATE this LLM Profile?', 'modal.delete_model.header' => 'Are you sure you want to DELETE this LLM Profile?', + 'modal.confirm_setting_modal.shrink_max_upload_file_count' => 'Decreasing the maximum number of uploaded files will delete the exceeding user files, are you sure?', //setting 'header.settings' => 'System Settings', @@ -107,6 +108,7 @@ 'label.tos' => 'Terms of Service', 'label.upload_max_size_mb' => 'Maximum upload file size (MB)', 'label.upload_allowed_extensions' => 'Allowed file extensions', + 'label.upload_max_file_count' => 'Maximum number of files allowed to upload (-1 means no limit)', //Permissions 'perm.Room_update_import_chat' => 'Import Chat', diff --git a/src/multi-chat/lang/fr_fr/chat.php b/src/multi-chat/lang/fr_fr/chat.php index 286ae4dc..d040cfe0 100644 --- a/src/multi-chat/lang/fr_fr/chat.php +++ b/src/multi-chat/lang/fr_fr/chat.php @@ -77,4 +77,5 @@ 'hint.processing' => 'Message en cours de traitement ... Veuillez patienter...', 'hint.upload_file_too_large' => 'La taille du fichier dépasse la limite autorisée.', 'hint.upload_not_allowed_ext' => 'Ce type de fichier n’est pas autorisé.', + 'hint.upload_disabled_by_admin' => 'Le téléchargement de fichiers a été désactivé par l\'administrateur', ]; \ No newline at end of file diff --git a/src/multi-chat/lang/fr_fr/manage.php b/src/multi-chat/lang/fr_fr/manage.php index e9623d86..b60f6181 100644 --- a/src/multi-chat/lang/fr_fr/manage.php +++ b/src/multi-chat/lang/fr_fr/manage.php @@ -40,6 +40,7 @@ 'hint.group_updated' => 'Groupe mis à jour avec succès !', 'hint.group_created' => 'Groupe créé avec succès !', 'modal.delete_group.header' => 'Êtes-vous sûr de vouloir supprimer ce groupe ?', + 'modal.confirm_setting_modal.shrink_max_upload_file_count' => 'La réduction du nombre maximal de fichiers téléchargeables supprimera les fichiers des utilisateurs excédentaires. Êtes-vous sûr ?', //Users 'header.menu' => 'Menu principal', @@ -108,6 +109,7 @@ 'label.tos' => 'Conditions d\'utilisation', 'label.upload_max_size_mb' => 'Taille maximale de fichier (Mo)', 'label.upload_allowed_extensions' => 'Extensions de fichiers autorisées', + 'label.upload_max_file_count' => 'Nombre maximum de fichiers téléchargeables (-1 pour illimité)', //Permissions 'perm.Room_update_import_chat' => 'Importer la conversation', diff --git a/src/multi-chat/lang/ja_jp/chat.php b/src/multi-chat/lang/ja_jp/chat.php index 0ea172cf..c781ba79 100644 --- a/src/multi-chat/lang/ja_jp/chat.php +++ b/src/multi-chat/lang/ja_jp/chat.php @@ -77,4 +77,5 @@ 'hint.processing' => 'メッセージを処理しています...しばらくお待ちください...', 'hint.upload_file_too_large' => 'ファイルサイズが上限を超えています', 'hint.upload_not_allowed_ext' => 'アップロードが許可されていないファイルの種類です', + 'hint.upload_disabled_by_admin' => 'ファイルのアップロード機能は管理者によって無効化されています', ]; \ No newline at end of file diff --git a/src/multi-chat/lang/ja_jp/manage.php b/src/multi-chat/lang/ja_jp/manage.php index fd2db11a..dbc5f89b 100644 --- a/src/multi-chat/lang/ja_jp/manage.php +++ b/src/multi-chat/lang/ja_jp/manage.php @@ -40,6 +40,7 @@ 'hint.group_updated' => 'グループが正常に更新されました!', 'hint.group_created' => 'グループが正常に作成されました!', 'modal.delete_group.header' => '本当にこのグループを削除しますか', + 'modal.confirm_setting_modal.shrink_max_upload_file_count' => 'アップロードファイルの総数制限を減らすと、超過したユーザーファイルが削除されます。よろしいですか?', //Users 'header.menu' => 'メインメニュー', @@ -107,6 +108,7 @@ 'label.tos' => '利用規約', 'label.upload_max_size_mb' => 'アップロードファイルサイズ制限(MB)', 'label.upload_allowed_extensions' => '許可されるアップロードファイル拡張子', + 'label.upload_max_file_count' => 'アップロードファイルの総数制限 (-1 は無制限)', //Permissions 'perm.Room_update_import_chat' => 'チャットのインポート', diff --git a/src/multi-chat/lang/ko_kr/chat.php b/src/multi-chat/lang/ko_kr/chat.php index 7249c3fb..e1c8a174 100644 --- a/src/multi-chat/lang/ko_kr/chat.php +++ b/src/multi-chat/lang/ko_kr/chat.php @@ -77,4 +77,5 @@ 'hint.processing' => '메시지를 처리하는 중입니다... 잠시 기다려 주세요...', 'hint.upload_file_too_large' => '파일 크기가 제한을 초과했습니다.', 'hint.upload_not_allowed_ext' => '업로드가 허용되지 않은 파일 형식입니다.', + 'hint.upload_disabled_by_admin' => '파일 업로드 기능이 관리자에 의해 비활성화되었습니다.', ]; \ No newline at end of file diff --git a/src/multi-chat/lang/ko_kr/manage.php b/src/multi-chat/lang/ko_kr/manage.php index ac8d8e26..630cb585 100644 --- a/src/multi-chat/lang/ko_kr/manage.php +++ b/src/multi-chat/lang/ko_kr/manage.php @@ -91,6 +91,7 @@ 'label.description' => '설명', 'modal.update_model.header' => '이 언어 모델 설정 파일을 업데이트 하시겠습니까?', 'modal.delete_model.header' => '이 언어 모델 설정 파일을 삭제하시겠습니까?', + 'modal.confirm_setting_modal.shrink_max_upload_file_count' => '업로드 가능한 파일 개수 제한을 줄이면 초과된 사용자 파일이 삭제됩니다. 계속하시겠습니까?', //setting 'header.settings' => '시스템 설정', @@ -107,6 +108,7 @@ 'label.tos' => '이용 약관', 'label.upload_max_size_mb' => '업로드 파일 크기 제한(MB)', 'label.upload_allowed_extensions' => '허용된 업로드 파일 확장자', + 'label.upload_max_file_count' => '업로드 가능한 파일 개수 제한 (-1은 무제한)', //Permissions 'perm.Room_update_import_chat' => '대화 가져오기', diff --git a/src/multi-chat/lang/zh_cn/chat.php b/src/multi-chat/lang/zh_cn/chat.php index 3000fac7..488203c8 100644 --- a/src/multi-chat/lang/zh_cn/chat.php +++ b/src/multi-chat/lang/zh_cn/chat.php @@ -77,4 +77,5 @@ 'hint.processing' => '信息处理中...请稍后...', 'hint.upload_file_too_large' => '文件大小超过限制', 'hint.upload_not_allowed_ext' => '不允许上传的文件类型', + 'hint.upload_disabled_by_admin' => '上传文件功能已被管理员关闭', ]; \ No newline at end of file diff --git a/src/multi-chat/lang/zh_cn/manage.php b/src/multi-chat/lang/zh_cn/manage.php index 0a4a7aaf..31a00907 100644 --- a/src/multi-chat/lang/zh_cn/manage.php +++ b/src/multi-chat/lang/zh_cn/manage.php @@ -92,6 +92,7 @@ 'label.description' => '叙述', 'modal.update_model.header' => '您确定要更新这个语言模型设定档吗', 'modal.delete_model.header' => '您确定要删除这个语言模型设定档吗', + 'modal.confirm_setting_modal.shrink_max_upload_file_count' => '降低上传文件总数限制会删除超出的用户文件,您确定吗?', //setting 'header.settings' => '系统设定', @@ -108,6 +109,7 @@ 'label.tos' => '服务条款', 'label.upload_max_size_mb' => '上传文件大小限制(MB)', 'label.upload_allowed_extensions' => '允许上传的文件扩展名', + 'label.upload_max_file_count' => '上传文件总数限制 (-1 表示不限制数量)', //Permissions 'perm.Room_update_import_chat' => '汇入对话', diff --git a/src/multi-chat/lang/zh_tw/chat.php b/src/multi-chat/lang/zh_tw/chat.php index 7396393f..861f3478 100644 --- a/src/multi-chat/lang/zh_tw/chat.php +++ b/src/multi-chat/lang/zh_tw/chat.php @@ -77,4 +77,5 @@ 'hint.processing' => '訊息處理中...請稍後...', 'hint.upload_file_too_large' => '檔案大小超過限制', 'hint.upload_not_allowed_ext' => '未允許上傳的檔案類型', + 'hint.upload_disabled_by_admin' => '上傳檔案功能已被管理員關閉', ]; diff --git a/src/multi-chat/lang/zh_tw/manage.php b/src/multi-chat/lang/zh_tw/manage.php index a1e42fd2..4d4f2a58 100644 --- a/src/multi-chat/lang/zh_tw/manage.php +++ b/src/multi-chat/lang/zh_tw/manage.php @@ -92,6 +92,7 @@ 'label.description' => '敘述', 'modal.update_model.header' => '您確定要更新這個語言模型設定檔嗎', 'modal.delete_model.header' => '您確定要刪除這個語言模型設定檔嗎', + 'modal.confirm_setting_modal.shrink_max_upload_file_count' => '降低上傳檔案總數限制會刪除超出的使用者檔案,您確定嗎?', //setting 'header.settings' => '系統設定', @@ -108,6 +109,7 @@ 'label.tos' => '服務條款', 'label.upload_max_size_mb' => '上傳檔案大小限制(MB)', 'label.upload_allowed_extensions' => '允許上傳的副檔名', + 'label.upload_max_file_count' => '上傳檔案總數限制 (-1 表示不限制數量)', //Permissions 'perm.Room_update_import_chat' => '匯入對話', diff --git a/src/multi-chat/resources/views/components/room/prompt-area/chat-script.blade.php b/src/multi-chat/resources/views/components/room/prompt-area/chat-script.blade.php index e5ee10f8..c15f4ddb 100644 --- a/src/multi-chat/resources/views/components/room/prompt-area/chat-script.blade.php +++ b/src/multi-chat/resources/views/components/room/prompt-area/chat-script.blade.php @@ -17,6 +17,7 @@ class="fas fa-wifi text-white animate-pulse bg-green-500 rounded-full p-4">< $upload_max_size_mb = SystemSetting::where('key', 'upload_max_size_mb')->first()->value; $upload_allowed_extensions = SystemSetting::where('key', 'upload_allowed_extensions')->first()->value; + $upload_max_file_count = \App\Models\SystemSetting::where('key', 'upload_max_file_count')->first()->value; @endphp From f28977ab291be26e9b526a8c4bd58ca3c5fbdac6 Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Sat, 27 Jul 2024 04:45:49 +0800 Subject: [PATCH 020/105] [multi-chat] fix: specify sotring type --- src/multi-chat/resources/views/includes/sorted-bots.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/multi-chat/resources/views/includes/sorted-bots.php b/src/multi-chat/resources/views/includes/sorted-bots.php index bca8ad10..c3f8178f 100644 --- a/src/multi-chat/resources/views/includes/sorted-bots.php +++ b/src/multi-chat/resources/views/includes/sorted-bots.php @@ -16,7 +16,7 @@ function sortBotsByModel($bots) * bots with the same model order. */ $bots = $bots - ->sortBy('order') + ->sortBy('order', SORT_NUMERIC) ->groupBy('order') ->map(function ($subSet) { return sortBotsByDate($subSet); @@ -28,7 +28,7 @@ function sortBotsByName($bots) /* * Sort the bots according to their name (a-z). */ - $bots = $bots->sortBy('name'); + $bots = $bots->sortBy('name', SORT_LOCALE_STRING); return $bots; } function sortBotsByNameDesc($bots) @@ -36,7 +36,7 @@ function sortBotsByNameDesc($bots) /* * Sort the bots according to their name (z-a). */ - $bots = $bots->sortByDesc('name'); + $bots = $bots->sortByDesc('name', SORT_LOCALE_STRING); return $bots; } function sortUserBots($bots, $sortingFunc = 'sortBotsByModel') From c8a2fc6f32121aa5c4ac46123ffe0b73ba1302ca Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Sun, 28 Jul 2024 22:09:08 +0800 Subject: [PATCH 021/105] [windows] fix: remove tee.bat To address the issue where tee.bat is mistakenly identified as malware, a replacement executable, which is a tiny binary, is employed. The source code for the tee.exe can be accessed at . --- windows/build.bat | 21 +++++++++----------- windows/src/bin/README.md | 3 +++ windows/src/bin/tee.exe | Bin 0 -> 19456 bytes windows/src/tee.bat | 40 -------------------------------------- windows/src/variables.bat | 4 ++-- windows/start.bat | 3 ++- 6 files changed, 16 insertions(+), 55 deletions(-) create mode 100644 windows/src/bin/README.md create mode 100644 windows/src/bin/tee.exe delete mode 100644 windows/src/tee.bat diff --git a/windows/build.bat b/windows/build.bat index d346af4d..5586c438 100644 --- a/windows/build.bat +++ b/windows/build.bat @@ -1,7 +1,8 @@ @echo off cd "%~dp0" if "%1" equ "__start__" (shift & goto main) -cmd /s /c "%0 __start__ %* 2>&1 | src\tee.bat logs\build.log" +if not exist "logs" mkdir logs +cmd /s /c "%0 __start__ %* 2>&1 | src\bin\tee.exe logs\build.log" exit /b :main @@ -10,21 +11,17 @@ call src\variables.bat cd "%~dp0" REM Check if VCredist is installed -set found=0 for /F "tokens=*" %%i in ('reg query "HKLM\SOFTWARE\Microsoft\VisualStudio" /s /f "Installed" 2^>nul') do ( - set found=1 - goto found + goto found_vcredist ) -:found -if %found%==0 ( - echo No Visual C++ Redistributable found, Please download vcredist from https://learn.microsoft.com/zh-tw/cpp/windows/latest-supported-vc-redist?view=msvc-170 - echo Press any key to continue building... - pause -) else ( - echo Visual C++ Redistributable found. -) +echo No Visual C++ Redistributable found, Please download vcredist from https://learn.microsoft.com/zh-tw/cpp/windows/latest-supported-vc-redist?view=msvc-170 +echo Press any key to continue building... +pause + +:found_vcredist +echo Visual C++ Redistributable found. REM Download and extract RunHiddenConsole if not exists call src\download_extract.bat %url_RunHiddenConsole% packages\%RunHiddenConsole_folder% packages\%RunHiddenConsole_folder% RunHiddenConsole.zip diff --git a/windows/src/bin/README.md b/windows/src/bin/README.md new file mode 100644 index 00000000..df521097 --- /dev/null +++ b/windows/src/bin/README.md @@ -0,0 +1,3 @@ +The folder houses essential embedded binaries employed during the Kuwa Windows edition's bootstrapping process: + +* tee.exe: Facilitates forwarding output to logging files. Derived from dEajL3kA's tee-win32 project version 1.3.3, which is licensed under the MIT license, and its source code may be accessed at https://github.com/ifTNT/tee-win32. \ No newline at end of file diff --git a/windows/src/bin/tee.exe b/windows/src/bin/tee.exe new file mode 100644 index 0000000000000000000000000000000000000000..cece9afac3d9dcef3c7d75a2554ea9e0aeb6cafd GIT binary patch literal 19456 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 literal 0 HcmV?d00001 diff --git a/windows/src/tee.bat b/windows/src/tee.bat deleted file mode 100644 index f4d3fc8c..00000000 --- a/windows/src/tee.bat +++ /dev/null @@ -1,40 +0,0 @@ -@if (@X)==(@Y) @end /* Harmless hybrid line that begins a JScript comment - -::--- Batch section within JScript comment that calls the internal JScript ---- -:: Reference: https://stackoverflow.com/a/10719322 -@echo off -cscript //E:JScript //nologo //D "%~f0" %* -exit /b - ------ End of JScript comment, beginning of normal JScript ------------------*/ -function stripAnsi(str) { - return str.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, ''); -} - -// Launch a powershell to enable ANSI color support -// Reference: https://www.dostips.com/forum/viewtopic.php?p=59696#p59696 -var ps = WScript.CreateObject("WScript.Shell").Exec("powershell.exe -nop -ep Bypass -c \"exit\""); -while (ps.Status == 0) WScript.Sleep(50); - -var fso = new ActiveXObject("Scripting.FileSystemObject"); -var mode=2; -if (WScript.Arguments.Count()==2) {mode=8;} -var logFile = WScript.Arguments(0) -var parentPath = logFile.substring(0, logFile.lastIndexOf("\\")); -if (!fso.FolderExists(parentPath)) { - fso.CreateFolder(parentPath); -} -var out = fso.OpenTextFile(logFile, mode, true); -var char; -var line; -while( !WScript.StdIn.AtEndOfStream ) { - char = ""; - line = ""; - while( char != "\n" ) { - char=WScript.StdIn.Read(1); - WScript.StdOut.Write(char); - line = line + char; - } - line=stripAnsi(line); - out.Write(line); -} \ No newline at end of file diff --git a/windows/src/variables.bat b/windows/src/variables.bat index e4561e13..494d7370 100644 --- a/windows/src/variables.bat +++ b/windows/src/variables.bat @@ -71,7 +71,7 @@ for /f "tokens=2 delims=-" %%v in ("%filename_ffmpeg%") do set "version_ffmpeg=% REM Environment variables for model cache set "KUWA_CACHE=%~dp0..\cache" -mkdir "%KUWA_CACHE%" +if not exist "%KUWA_CACHE%" mkdir "%KUWA_CACHE%" set "XDG_CACHE_HOME=%KUWA_CACHE%" set "PIP_CACHE_DIR=%KUWA_CACHE%\pip" set "TORCH_HOME=%KUWA_CACHE%\torch" @@ -90,7 +90,7 @@ REM Prepare packages folder mkdir packages 2>nul REM init env -set "PATH=%~dp0..\packages\%xpdfreader_folder%\bin64;%~dp0..\packages\%python_folder%\Scripts;%~dp0..\packages\%python_folder%;%~dp0..\packages\%php_folder%;%~dp0..\packages\%node_folder%;%~dp0..\packages\%gitbash_folder%\cmd;%~dp0..\packages\%antiword_folder%\bin;%~dp0..\packages\%ffmpeg_folder%\bin;%PATH%" +set "PATH=%~dp0\bin;%~dp0..\packages\%xpdfreader_folder%\bin64;%~dp0..\packages\%python_folder%\Scripts;%~dp0..\packages\%python_folder%;%~dp0..\packages\%php_folder%;%~dp0..\packages\%node_folder%;%~dp0..\packages\%gitbash_folder%\cmd;%~dp0..\packages\%antiword_folder%\bin;%~dp0..\packages\%ffmpeg_folder%\bin;%PATH%" if "%1"=="no_migrate" ( echo Skipped migration diff --git a/windows/start.bat b/windows/start.bat index fb4b9917..8f994379 100644 --- a/windows/start.bat +++ b/windows/start.bat @@ -1,7 +1,8 @@ @echo off cd "%~dp0" if "%1" equ "__start__" (shift & goto main) -cmd /s /c "%0 __start__ %* 2>&1 | src\tee.bat logs\start.log" +if not exist "logs" mkdir logs +cmd /s /c "%0 __start__ %* 2>&1 | src\bin\tee.exe logs\start.log" exit /b :main From 69c5e17ec9f481bfcb9a27cd042af9be95a44935 Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Sun, 28 Jul 2024 23:12:34 +0800 Subject: [PATCH 022/105] fix: replace kuwaai.org with kuwaai.tw --- README.md | 4 ++-- README_TW.md | 4 ++-- docker/multi-chat/Dockerfile | 2 +- scripts/windows-setup-files/Informations.txt | 2 +- scripts/windows-setup-files/kuwa_genai_os.iss | 2 +- src/executor/pyproject.toml | 2 +- src/executor/speech_recognition/README.md | 4 ++-- src/executor/speech_recognition/README_TW.md | 4 ++-- src/kernel/pyproject.toml | 2 +- .../resources/views/components/welcome_footer.blade.php | 4 ++-- windows/src/variables.bat | 8 ++++---- 11 files changed, 19 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index b943336b..c831b6f0 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@


    - + Kuwa GenAI OS
    Kuwa GenAI OS @@ -64,7 +64,7 @@ ## Architecture > **Warning**: This a preliminary draft and may be subject to further changes. -[![screenshot](./src/multi-chat/public/images/architecture.svg)](https://kuwaai.org/os/Intro) +[![screenshot](./src/multi-chat/public/images/architecture.svg)](https://kuwaai.tw/os/Intro) ## Dependencies diff --git a/README_TW.md b/README_TW.md index 27cb6992..a897bf71 100644 --- a/README_TW.md +++ b/README_TW.md @@ -2,7 +2,7 @@


    - + Kuwa GenAI OS
    Kuwa GenAI OS @@ -49,7 +49,7 @@ ## 架構 > **警告**: 本草案為初步版本,可能會有進一步的更改。 -[![screenshot](./src/multi-chat/public/images/architecture.svg)](https://kuwaai.org/os/Intro) +[![screenshot](./src/multi-chat/public/images/architecture.svg)](https://kuwaai.tw/os/Intro) ## 依賴套件 diff --git a/docker/multi-chat/Dockerfile b/docker/multi-chat/Dockerfile index 43c4abc2..0a310fca 100644 --- a/docker/multi-chat/Dockerfile +++ b/docker/multi-chat/Dockerfile @@ -87,7 +87,7 @@ ENV DB_HOST="db" ENV DB_PORT="5432" ENV LOGIN_WITH_EMAIL="true" -ENV INFORMATION_URL="https://kuwaai.org/" +ENV INFORMATION_URL="https://kuwaai.tw/" ENV ALLOWED_IPS="0.0.0.0/0" ENV DEFAULT_LOCALE="en_us" ENV FALLBACK_LOCALE="en_us" diff --git a/scripts/windows-setup-files/Informations.txt b/scripts/windows-setup-files/Informations.txt index a6fc0290..e92855c4 100644 --- a/scripts/windows-setup-files/Informations.txt +++ b/scripts/windows-setup-files/Informations.txt @@ -14,6 +14,6 @@ Kuwa系統還在持續開發及改善,難免會發生不穩。本系統生成 此客製化系統亦支援串接OpenAI ChatGPT及Google Gemini Pro,使用前請先依說明設定好全系統使用或個人使用的API Keys。 -如遇到問題,歡迎到Kuwa的開源社群詢問。更進一步的資訊參見: https://kuwaai.org/ +如遇到問題,歡迎到Kuwa的開源社群詢問。更進一步的資訊參見: https://kuwaai.tw/ 您必須已經成年並了解相關的說明及風險,才繼續進行安裝。全程約需10分鐘或更多,視網路頻寬及電腦效能而定,請耐心等候。 diff --git a/scripts/windows-setup-files/kuwa_genai_os.iss b/scripts/windows-setup-files/kuwa_genai_os.iss index 3a515ec1..21647747 100644 --- a/scripts/windows-setup-files/kuwa_genai_os.iss +++ b/scripts/windows-setup-files/kuwa_genai_os.iss @@ -4,7 +4,7 @@ #define MyAppName "Kuwa GenAI OS" #define MyAppVersion "v0.3.2" #define MyAppPublisher "Kuwa AI" -#define MyAppURL "https://kuwaai.org/os/intro" +#define MyAppURL "https://kuwaai.tw/os/intro" #define MyAppIcon "..\..\src\multi-chat\public\images\kuwa-logo.ico" [Setup] diff --git a/src/executor/pyproject.toml b/src/executor/pyproject.toml index e1aa0732..028bbe64 100644 --- a/src/executor/pyproject.toml +++ b/src/executor/pyproject.toml @@ -50,7 +50,7 @@ dependencies=[ ] [project.urls] -"Homepage" = "https://kuwaai.org/os/Intro" +"Homepage" = "https://kuwaai.tw/os/Intro" "Bug Tracker" = "https://github.com/kuwaai/genai-os/issues" [project.scripts] diff --git a/src/executor/speech_recognition/README.md b/src/executor/speech_recognition/README.md index 86cacb10..e8b50fbb 100644 --- a/src/executor/speech_recognition/README.md +++ b/src/executor/speech_recognition/README.md @@ -37,8 +37,8 @@ The default Whisper Medium model is used with the speaker labeling function disa 1. Agree to the terms of [pyannote/segmentation-3.0](https://huggingface.co/pyannote/segmentation-3.0) and [pyannote/speaker-diarization-3.1](https://hf.co/pyannote/speaker-diarization-3.1) 2. Refer to the guides of each version to add HuggingFace access token - 1. [Guide for Windows](https://kuwaai.org/blog/kuwa-os-v0.2.0-llama3-windows) - 2. [Guide for Docker](https://kuwaai.org/blog/kuwa-os-v0.2.0-llama3-linux) + 1. [Guide for Windows](https://kuwaai.tw/blog/kuwa-os-v0.2.0-llama3-windows) + 2. [Guide for Docker](https://kuwaai.tw/blog/kuwa-os-v0.2.0-llama3-linux) 3. Add the parameter `--enable_diarization` to the command line when the Executor is opened, or modify the corresponding parameters in the Modelfile ## Chat Commands diff --git a/src/executor/speech_recognition/README_TW.md b/src/executor/speech_recognition/README_TW.md index 2129b9b2..7409d33d 100644 --- a/src/executor/speech_recognition/README_TW.md +++ b/src/executor/speech_recognition/README_TW.md @@ -31,8 +31,8 @@ Kuwa Speech Recognizer 可以透過上傳錄音檔來產生逐字稿,支援時 ## 語者辨識開啟方法 1. 同意 [pyannote/segmentation-3.0](https://huggingface.co/pyannote/segmentation-3.0) 與 [pyannote/speaker-diarization-3.1](https://hf.co/pyannote/speaker-diarization-3.1) 的授權條款 2. 參考各版本的指南加入 HuggingFace access token - 1. [Windows 版指南](https://kuwaai.org/zh-Hant/blog/kuwa-os-v0.2.0-llama3-windows#%E6%96%B9%E6%B3%95%E4%B8%80%E7%99%BB%E5%85%A5-huggingface-%E5%90%91-meta-%E7%94%B3%E8%AB%8B%E5%AD%98%E5%8F%96%E6%AC%8A%E9%99%90) - 2. [Docker 版指南](https://kuwaai.org/zh-Hant/blog/kuwa-os-v0.2.0-llama3-linux#%E6%96%B9%E6%B3%95%E4%B8%80%E7%99%BB%E5%85%A5-huggingface-%E5%90%91-meta-%E7%94%B3%E8%AB%8B%E5%AD%98%E5%8F%96%E6%AC%8A%E9%99%90) + 1. [Windows 版指南](https://kuwaai.tw/zh-Hant/blog/kuwa-os-v0.2.0-llama3-windows#%E6%96%B9%E6%B3%95%E4%B8%80%E7%99%BB%E5%85%A5-huggingface-%E5%90%91-meta-%E7%94%B3%E8%AB%8B%E5%AD%98%E5%8F%96%E6%AC%8A%E9%99%90) + 2. [Docker 版指南](https://kuwaai.tw/zh-Hant/blog/kuwa-os-v0.2.0-llama3-linux#%E6%96%B9%E6%B3%95%E4%B8%80%E7%99%BB%E5%85%A5-huggingface-%E5%90%91-meta-%E7%94%B3%E8%AB%8B%E5%AD%98%E5%8F%96%E6%AC%8A%E9%99%90) 3. 於開啟 Executor 時的命令列加入參數 `--enable_diarization`,或是修改Modelfile相關參數 ## 聊天指令 diff --git a/src/kernel/pyproject.toml b/src/kernel/pyproject.toml index 2e93b7b5..76e80647 100644 --- a/src/kernel/pyproject.toml +++ b/src/kernel/pyproject.toml @@ -38,7 +38,7 @@ dependencies=[ ] [project.urls] -"Homepage" = "https://kuwaai.org/os/Intro" +"Homepage" = "https://kuwaai.tw/os/Intro" "Bug Tracker" = "https://github.com/kuwaai/genai-os/issues" [project.scripts] diff --git a/src/multi-chat/resources/views/components/welcome_footer.blade.php b/src/multi-chat/resources/views/components/welcome_footer.blade.php index daf05440..1f045a49 100644 --- a/src/multi-chat/resources/views/components/welcome_footer.blade.php +++ b/src/multi-chat/resources/views/components/welcome_footer.blade.php @@ -1,14 +1,14 @@
    Kuwa + href="https://kuwaai.tw/" target="_blank">Kuwa {{ __('welcome.version') }} {{ config('app.Version') }}
    diff --git a/windows/src/variables.bat b/windows/src/variables.bat index 494d7370..f75cc88e 100644 --- a/windows/src/variables.bat +++ b/windows/src/variables.bat @@ -45,15 +45,15 @@ set "redis_folder=%filename_Redis:~0,-4%" for /f "tokens=2 delims=-" %%v in ("%filename_Redis%") do set "version_Redis=%%v" REM Variables for XpdfReader -set "url_XpdfReader=https://dl.kuwaai.org/packages/xpdf/xpdf-tools-win-4.05.zip" +set "url_XpdfReader=https://github.com/kuwaai/xpdf/releases/download/4.05-kuwa1/xpdf-tools-4.05-kuwa1-win-x64.zip" for %%I in ("%url_XpdfReader%") do set "filename_XpdfReader=%%~nxI" set "xpdfreader_folder=%filename_XpdfReader:~0,-4%" for /f "tokens=2 delims=-" %%v in ("%filename_XpdfReader%") do set "version_XpdfReader=%%v" REM Variables for Antiword -set "url_antiword=https://dl.kuwaai.org/packages/antiword/antiword-0.37-windows.zip" +set "url_antiword=https://softpedia-secure-download.com/dl/38dcd67da529881c2013aa6a09267623/66a6587b/100136188/software/office/antiword-0_37-windows.zip" for %%I in ("%url_antiword%") do set "filename_antiword=%%~nxI" -set "antiword_folder=%filename_antiword:~0,-4%" +set "antiword_folder=antiword" for /f "tokens=2 delims=-" %%v in ("%filename_antiword%") do set "version_antiword=%%v" set "HOME=%~dp0..\packages\%antiword_folder%\" @@ -90,7 +90,7 @@ REM Prepare packages folder mkdir packages 2>nul REM init env -set "PATH=%~dp0\bin;%~dp0..\packages\%xpdfreader_folder%\bin64;%~dp0..\packages\%python_folder%\Scripts;%~dp0..\packages\%python_folder%;%~dp0..\packages\%php_folder%;%~dp0..\packages\%node_folder%;%~dp0..\packages\%gitbash_folder%\cmd;%~dp0..\packages\%antiword_folder%\bin;%~dp0..\packages\%ffmpeg_folder%\bin;%PATH%" +set "PATH=%~dp0\bin;%~dp0..\packages\%xpdfreader_folder%\bin64;%~dp0..\packages\%python_folder%\Scripts;%~dp0..\packages\%python_folder%;%~dp0..\packages\%php_folder%;%~dp0..\packages\%node_folder%;%~dp0..\packages\%gitbash_folder%\cmd;%~dp0..\packages\%antiword_folder%\;%~dp0..\packages\%ffmpeg_folder%\bin;%PATH%" if "%1"=="no_migrate" ( echo Skipped migration From 83d95a7ca0677609ff591486a6d08cc778b8ce7f Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Mon, 29 Jul 2024 01:40:06 +0800 Subject: [PATCH 023/105] [multi-chat] add: edit bot image when editing bot [TODO] Edit bot image when creating bot --- .../app/Http/Controllers/BotController.php | 4 +++ .../components/store/bot-showcase.blade.php | 20 +++++++++-- .../store/modal/bot-detail.blade.php | 33 ++++++++++++++++--- .../resources/views/store.blade.php | 3 +- 4 files changed, 52 insertions(+), 8 deletions(-) diff --git a/src/multi-chat/app/Http/Controllers/BotController.php b/src/multi-chat/app/Http/Controllers/BotController.php index 141b7986..9b4124c4 100644 --- a/src/multi-chat/app/Http/Controllers/BotController.php +++ b/src/multi-chat/app/Http/Controllers/BotController.php @@ -278,6 +278,10 @@ public function update(Request $request) if ($request->input('bot_describe')) { $bot->description = $request->input('bot_describe'); } + if ($file = $request->file('bot_image')) { + if ($bot->image) Storage::delete($bot->image); + $bot->image = $file->store('public/images'); + } $bot->model_id = $model_id; $bot->config = $config; $bot->save(); diff --git a/src/multi-chat/resources/views/components/store/bot-showcase.blade.php b/src/multi-chat/resources/views/components/store/bot-showcase.blade.php index fd9966e0..4f2de872 100644 --- a/src/multi-chat/resources/views/components/store/bot-showcase.blade.php +++ b/src/multi-chat/resources/views/components/store/bot-showcase.blade.php @@ -13,11 +13,25 @@ class="rounded-full bg-gray-300 hover:bg-gray-400 dark:bg-gray-800 w-[30px] h-[3
    @foreach ($bots as $bot) -
    image ?? $bot->base_image; + $bot_image_uri = asset($bot_image_name ? Storage::url($bot_image_name) : '/' . config('app.LLM_DEFAULT_IMG')); + $bot_arr = $bot->toArray(); + unset($bot_arr['base_image']); + $bot_arr = array_merge( + $bot_arr, + [ + 'image' => $bot_image_uri, + 'follow_base_bot_image' => is_null($bot->image) + ] + ); + $bot_json = json_encode($bot_arr); + $readonly = (request()->user()->id == $bot->owner_id || request()->user()->hasPerm('tab_Manage')) ? 'false' : 'true'; + @endphp +
    - +

    {{ $bot->name }}

    @if ($bot->description)

    @csrf @method('patch') @@ -51,10 +51,12 @@ class="text-gray-400 bg-transparent hover:bg-gray-200 hover:text-gray-900 rounde

    -
    @@ -169,7 +171,7 @@ class="ms-3 text-sm font-medium text-gray-900 dark:text-gray-300">{{ __('store.b {{ __('store.bot.base_model') }}
    @@ -306,6 +308,28 @@ class="text-gray-500 bg-white hover:bg-gray-100 focus:ring-4 focus:outline-none
    From facfef5d4b463fe736956a9b75749b0c01ec4486 Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Thu, 8 Aug 2024 22:56:31 +0800 Subject: [PATCH 073/105] [pipe] add: ensure_executable options --- src/executor/pipe/main.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/executor/pipe/main.py b/src/executor/pipe/main.py index 77062dd9..25541168 100644 --- a/src/executor/pipe/main.py +++ b/src/executor/pipe/main.py @@ -4,6 +4,7 @@ import asyncio import logging import shlex +import stat from importlib.metadata import version from kuwa.executor import LLMExecutor, Modelfile @@ -26,6 +27,7 @@ def extend_arguments(self, parser): parser.add_argument('--argv', default="", help='Arguments.') parser.add_argument('--encoding', default="utf-8", help='The encoding of the standard I/O streams. Set to None indicating I/O raw bytes.') parser.add_argument('--api_base_url', default="http://127.0.0.1/", help='The API base URL of Kuwa multi-chat WebUI. This value will pass to the subprocess.') + parser.add_argument('--ensure_executable', action='store_true', help='Change the program permission to executable.') parser.add_argument('--hide_stderr', action='store_true', help='Hide the stderr content in the executor response.') parser.add_argument('--extract_last_codeblock', action='store_true', help='Make sure the program only gets the code from inside the last code block.') @@ -94,8 +96,13 @@ async def llm_compute(self, history: list[dict], modelfile:Modelfile): # Run a subprocess with stdin from the request. program = os.path.realpath(program) if not self.is_exe(program): - yield "The program is not executable; please check its file permissions." - return + if self.args.ensure_executable: + st = os.stat(program) + os.chmod(program, st.st_mode | stat.S_IEXEC) + else: + yield "The program is not executable; please check its file permissions." + return + cmd = [program]+argv env = os.environ.copy() env["KUWA_BASE_URL"] = self.args.api_base_url From 5816cc3cadc5ddb0600ffe92bac71391b11359af Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Thu, 8 Aug 2024 22:58:04 +0800 Subject: [PATCH 074/105] [docker] fix: combing most of RAG executors --- .../compose/{dbqa.yaml => custom-dbqa.yaml} | 6 ++--- docker/compose/dev.yaml | 22 +++++++++---------- .../compose/{docqa_webqa.yaml => docqa.yaml} | 6 ++--- docker/compose/pipe.yaml | 3 ++- docker/root/bin/.gitkeep | 0 docker/root/bin/bash | 3 --- docker/run.sh.sample | 2 +- 7 files changed, 20 insertions(+), 22 deletions(-) rename docker/compose/{dbqa.yaml => custom-dbqa.yaml} (87%) rename docker/compose/{docqa_webqa.yaml => docqa.yaml} (77%) delete mode 100644 docker/root/bin/.gitkeep delete mode 100755 docker/root/bin/bash diff --git a/docker/compose/dbqa.yaml b/docker/compose/custom-dbqa.yaml similarity index 87% rename from docker/compose/dbqa.yaml rename to docker/compose/custom-dbqa.yaml index 163fc48e..8a88e4e4 100644 --- a/docker/compose/dbqa.yaml +++ b/docker/compose/custom-dbqa.yaml @@ -1,13 +1,13 @@ services: - dbqa-executor: + custom-dbqa-executor: build: context: ../../ dockerfile: docker/executor/Dockerfile image: kuwa-executor environment: CUSTOM_EXECUTOR_PATH: ./docqa/docqa.py - EXECUTOR_ACCESS_CODE: db-qa - EXECUTOR_NAME: DB QA + EXECUTOR_ACCESS_CODE: db-qa:custom-db + EXECUTOR_NAME: DB QA (Custom DB) TRANSFORMERS_OFFLINE: ${TRANSFORMERS_OFFLINE:-0} # For embedding model volumes: [ ":/var/database/", diff --git a/docker/compose/dev.yaml b/docker/compose/dev.yaml index 6a2f5ffd..aae89650 100644 --- a/docker/compose/dev.yaml +++ b/docker/compose/dev.yaml @@ -3,14 +3,14 @@ services: environment: APP_ENV: development APP_DEBUG: true - # db-ui: - # image: adminer - # restart: always - # depends_on: - # - db - # ports: - # - 8081:8080 - # environment: - # ADMINER_DEFAULT_SERVER: db - # networks: - # - backend \ No newline at end of file + db-ui: + image: adminer + restart: always + depends_on: + - db + ports: + - 8081:8080 + environment: + ADMINER_DEFAULT_SERVER: db + networks: + - backend \ No newline at end of file diff --git a/docker/compose/docqa_webqa.yaml b/docker/compose/docqa.yaml similarity index 77% rename from docker/compose/docqa_webqa.yaml rename to docker/compose/docqa.yaml index 5db0476a..9bbffd55 100644 --- a/docker/compose/docqa_webqa.yaml +++ b/docker/compose/docqa.yaml @@ -6,9 +6,9 @@ services: image: kuwa-executor environment: CUSTOM_EXECUTOR_PATH: ./docqa/docqa.py - EXECUTOR_ACCESS_CODE: doc-qa;web-qa - EXECUTOR_NAME: DocQA;WebQA - EXECUTOR_IMAGE: doc-qa.png;web-qa.png # Refer to src/multi-chat/public/images + EXECUTOR_ACCESS_CODE: doc-qa;web-qa;db-qa + EXECUTOR_NAME: DocQA;WebQA;DB QA + EXECUTOR_IMAGE: doc-qa.png;web-qa.png;db-qa.png # Refer to src/multi-chat/public/images TRANSFORMERS_OFFLINE: ${TRANSFORMERS_OFFLINE:-0} # For embedding model depends_on: - kernel diff --git a/docker/compose/pipe.yaml b/docker/compose/pipe.yaml index c97fd928..1dab9a87 100644 --- a/docker/compose/pipe.yaml +++ b/docker/compose/pipe.yaml @@ -14,7 +14,8 @@ services: - multi-chat command: [ "--api_base_url", "http://web/", - "--log", "debug" + "--log", "debug", + "--ensure_executable" ] volumes: [ "kuwa-root:/var/kuwa/docker/root:rw", # The root of Kuwa filesystem hierarchy to store user-uploaded data during runtime. diff --git a/docker/root/bin/.gitkeep b/docker/root/bin/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/root/bin/bash b/docker/root/bin/bash deleted file mode 100755 index 4c89d0e2..00000000 --- a/docker/root/bin/bash +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -bash $@ \ No newline at end of file diff --git a/docker/run.sh.sample b/docker/run.sh.sample index e6c9f0d8..85849d6e 100755 --- a/docker/run.sh.sample +++ b/docker/run.sh.sample @@ -11,7 +11,7 @@ confs=( "uploader" "token_counter" "gemini" - "docqa_webqa" + "docqa" "searchqa" ) From 0138cfe1159692dfb5a11d5ad4787bedb348ceb5 Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Thu, 8 Aug 2024 22:59:38 +0800 Subject: [PATCH 075/105] [uploader] add: path check to prevent jail break --- src/executor/uploader/main.py | 53 ++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 23 deletions(-) diff --git a/src/executor/uploader/main.py b/src/executor/uploader/main.py index de83459f..ce2b0284 100644 --- a/src/executor/uploader/main.py +++ b/src/executor/uploader/main.py @@ -11,6 +11,7 @@ from kuwa.executor import LLMExecutor, Modelfile from kuwa.executor.llm_executor import extract_last_url +from kuwa.executor.modelfile import extract_text_from_quotes from kuwa.client import KuwaClient logger = logging.getLogger(__name__) @@ -68,22 +69,23 @@ def parse_botfile(self, botfile_content): Returns: A tuple containing the bot name and base model as strings. """ - name = None - base_model = None - description = None + result = { + 'metadata': {}, + 'modelfile': "" + } + metadata_prefix = "KUWABOT" for line in botfile_content.splitlines(): - match_name = re.match(r'^KUWABOT name [\'"]?([^\'"]+)[\'"]?$', line.strip()) - match_base = re.match(r'^KUWABOT base [\'"]?([^\'"]*)[\'"]?$', line.strip()) - match_description = re.match(r'^KUWABOT description [\'"]?([^\'"]*)[\'"]?$', line.strip()) - if match_name: - name = match_name.group(1) - if match_base: - base_model = match_base.group(1) - if match_description: - description = match_description.group(1) - - return name, base_model, description + if not line.startswith(metadata_prefix): + continue + matches = re.match(rf'{metadata_prefix}\s+(?P\S+)\s+(?P.*)', line.strip()) + result['metadata'][matches.group('key')] = extract_text_from_quotes(matches.group('value')) + + result['modelfile'] = re.sub(rf'^{metadata_prefix}.*\n?', '', botfile_content, flags=re.MULTILINE) + + logger.debug(json.dumps(result, indent=2)) + + return result async def llm_compute(self, history: list[dict], modelfile:Modelfile): dst_dir = modelfile.parameters["uploader_"].get("dst_dir", "/database") @@ -92,6 +94,13 @@ async def llm_compute(self, history: list[dict], modelfile:Modelfile): url, history = extract_last_url(history) dst_path = os.path.abspath(os.path.join(self.args.root, "./"+dst_dir)) + + # Check whether the destination path is under the root path + if not dst_path.startswith(os.path.abspath(self.args.root)): + logger.debug(f"Root path:{os.path.abspath(self.args.root)}\nDst path: {dst_path}") + yield "Access outside the root directory is forbidden." + return + file_name, file_path = self.download_file(url, dst_path) yield f"{succeed_message}\n" @@ -102,11 +111,8 @@ async def llm_compute(self, history: list[dict], modelfile:Modelfile): botfile = bot_template.replace("{{file_name}}", file_name)\ .replace("{{file_path}}", file_path) botfile = bytes(botfile, "utf-8").decode("unicode_escape") - bot_name, bot_base = self.parse_botfile(botfile) - logger.debug(f"bot_name={bot_name}") - logger.debug(f"bot_base={bot_base}") - logger.debug(f"botfile={botfile}") - if bot_name is None or bot_base is None: + botfile = self.parse_botfile(botfile) + if botfile['metadata'].get('name') is None or botfile['metadata'].get('base') is None: yield "Missed name or base in botfile. Failed to create bot.\n" return @@ -116,11 +122,12 @@ async def llm_compute(self, history: list[dict], modelfile:Modelfile): auth_token=kuwa_api_token ) response = await client.create_bot( - bot_name=bot_name, - llm_access_code=bot_base, - modelfile=botfile + bot_name=botfile['metadata'].get('name'), + bot_description=botfile['metadata'].get('description'), + llm_access_code=botfile['metadata'].get('base'), + modelfile=botfile['modelfile'] ) - yield f"Bot \"{bot_name}\" created successfully." + yield f"Bot \"{botfile['metadata'].get('name')}\" created successfully." async def abort(self): logger.debug("aborted") From 3f78a18e430505d7721ee08b30f00178ced42281 Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Thu, 8 Aug 2024 23:09:51 +0800 Subject: [PATCH 076/105] [README] fix: official website URL --- README.md | 53 +---------------------------------------------------- 1 file changed, 1 insertion(+), 52 deletions(-) diff --git a/README.md b/README.md index 62e4d9f1..ae67e917 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@


    - + Kuwa GenAI OS
    Kuwa GenAI OS @@ -71,56 +71,6 @@ Download the script or the executable file, run it, and follow its steps to have * **Linux/Docker** -<<<<<<< HEAD - - For Linux: - ```sh - cp .env.dev .env - cd executables/sh - ./production_update.sh - cd ../../../kernel - pip install -r requirement.txt - cd ../executor - pip install -r requirement.txt - sudo chown -R $(whoami):www-data /var/www/html - ``` - - - For Windows: - ```bat - copy .env.dev .env - cd executables/bat - ./production_update.bat - cd ../../../kernel - pip install -r requirement.txt - cd ../executor - pip install -r requirement.txt - ``` - -3. **Set up PHP & PHP-FPM:** - - Make sure PHP is installed and configured properly. - - Configure your web server (Nginx or Apache) to set `src/multi-chat/public` as the website root directory. - - Example config files: [nginx_config_example](src/multi-chat/nginx_config_example), [php.ini](src/multi-chat/php.ini) - - Recommended settings: - - Set max upload file size in PHP to at least 20MB, for RAG applications. - -4. **Set up Redis:** - - Make sure you have a Redis server installed and running. - - Relevant settings can be adjusted in `.env`. - - Run `php artisan queue:work --timeout=0` under `src/multi-chat/` to start the Redis Worker, which handles user requests. We recommended running at least 5 Redis Workers at the same time. - -5. **Run the application:** - - Start your web server and PHP-FPM. - - Run the Kernel `src/kernel/main.py`. It is recommended that you copy the Kernel folder to another location before running it. - -6. **Connect to the application:** - - First, you need to create an admin account. Go to `src/multi-chat/`, and run `php artisan db:seed --class=AdminSeeder --force` to seed your first admin account. - - Open your browser and access the URL of your deployed Nginx/Apache application. - - Log in with your admin account, and start using Kuwa GenAI OS! - -7. **Deploy models:** - - No model is provided by default. Please read [this README](./src/executor/README.md) to deploy some models. - - The models do not appear automatically after deployment. The administrator must set the corresponding access_code on the website to access the model. - - Please note that the Kernel must be started before deploying the model (you can check if you can connect to `127.0.0.1:9000` to confirm) -======= Download and run [build.sh](./docker/build.sh) , or invoke the following command to automatically install Docker, Cuda, and Kuwa ``` curl -fsSL https://github.com/kuwaai/genai-os/tree/main/docker/build.sh | sh @@ -131,7 +81,6 @@ You can build your own customized Kuwa by following the step-by-step documents. * [Linux/Docker version](./docker/README.md) ### More Models and Applications With executors, Kuwa can orchestrate diverse multimodal models, remote services, applications, databases, bots, etc. You can check [Executor's README](./src/executor/README.md) for further customization and configuration. ->>>>>>> 700e613c0b7cc3b317d9199316524030a931ec2d ## Download From ab506fc293e359a04e7b075970c7e84614a94fde Mon Sep 17 00:00:00 2001 From: wcwu <103374825+wcwutw@users.noreply.github.com> Date: Thu, 8 Aug 2024 23:31:47 +0800 Subject: [PATCH 077/105] [docker] fix: build.sh change reboot flag file location --- docker/build.sh | 307 ++++++++++++++++++++++++------------------------ 1 file changed, 154 insertions(+), 153 deletions(-) diff --git a/docker/build.sh b/docker/build.sh index fba4ff17..a9ae0c3a 100755 --- a/docker/build.sh +++ b/docker/build.sh @@ -1,184 +1,185 @@ #!/bin/bash - # set -x -REBOOT_FLAG="/tmp/reboot_flag" + +REBOOT_FLAG="~/.reboot_flag" NOW_PATH=$(pwd) install_docker() { - # Add official GPG key - if ! command -v docker &> /dev/null; then - echo "Installing Docker..." - - # Setup repository - echo \ - "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ - "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ - tee /etc/apt/sources.list.d/docker.list > /dev/null - apt-get update - - # Install necessary package - apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin - - # Enable the service - systemctl --now enable docker - - # Enable unattended-update - cat < /dev/null; then + echo "Installing Docker..." + + # Setup repository + echo \ + "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ + "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ + tee /etc/apt/sources.list.d/docker.list > /dev/null + apt-get update + + # Install necessary package + apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin + + # Enable the service + systemctl --now enable docker + + # Enable unattended-update + cat < /dev/null; then - echo "Installing Nvidia driver..." - apt update - apt upgrade -y - - # Remove previous NVIDIA installation - apt autoremove nvidia* --purge -y - apt autoclean - - # Install Ubuntu and NVIDIA drivers - local version=$(ubuntu-drivers devices 2>/dev/null | grep recommended | grep -oP 'nvidia-driver-\d+') - #echo "$version" - ubuntu-drivers autoinstall - apt install -y $version - - # Reboot - touch "$REBOOT_FLAG" - reboot - else - echo "Nvidia Driver is already installed." - fi + if ! command -v nvidia-smi &> /dev/null; then + echo "Installing Nvidia driver..." + apt update + apt upgrade -y + + # Remove previous NVIDIA installation + apt autoremove nvidia* --purge -y + apt autoclean + + # Install Ubuntu and NVIDIA drivers + local version=$(ubuntu-drivers devices 2>/dev/null | grep recommended | grep -oP 'nvidia-driver-\d+') + #echo "$version" + ubuntu-drivers autoinstall + apt install -y $version + + # Reboot + touch "$REBOOT_FLAG" + reboot + else + echo "Nvidia Driver is already installed." + fi } install_cuda_toolkit() { - if ! command -v nvcc --version &> /dev/null; then - echo "Installing CUDA toolkit..." - apt update - apt upgrade -y - - # Install CUDA toolkit - apt install -y nvidia-cuda-toolkit - else - echo "CUDA toolkit is already installed." - fi + if ! command -v nvcc --version &> /dev/null; then + echo "Installing CUDA toolkit..." + apt update + apt upgrade -y + + # Install CUDA toolkit + apt install -y nvidia-cuda-toolkit + else + echo "CUDA toolkit is already installed." + fi } install_nvidia_container_toolkit() { - if ! command -v which nvidia-container-toolkit &> /dev/null; then - echo "Installing Nvidia continaer toolkit" - - # Setup GPG key - curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg - - # Setup the repository - local distribution=$(. /etc/os-release;echo $ID$VERSION_ID) - curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \ - sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ - tee /etc/apt/sources.list.d/nvidia-container-toolkit.list - apt-get update - apt-get install -y nvidia-container-toolkit - - # Configure the NVIDIA runtime to be the default docker runtime - nvidia-ctk runtime configure --runtime=docker --set-as-default - systemctl restart docker - else - echo "Nvidia toolkit is already installed." - fi + if ! command -v which nvidia-container-toolkit &> /dev/null; then + echo "Installing Nvidia continaer toolkit" + + # Setup GPG key + curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg + + # Setup the repository + local distribution=$(. /etc/os-release;echo $ID$VERSION_ID) + curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \ + sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ + tee /etc/apt/sources.list.d/nvidia-container-toolkit.list + apt-get update + apt-get install -y nvidia-container-toolkit + + # Configure the NVIDIA runtime to be the default docker runtime + nvidia-ctk runtime configure --runtime=docker --set-as-default + systemctl restart docker + else + echo "Nvidia toolkit is already installed." + fi } install_kuwa() { - # Download Kuwa repository - cd "$NOW_PATH" - git clone https://github.com/kuwaai/genai-os/ - cd genai-os/docker - - # Change configuration files - cp .admin-password.sample .admin-password - cp .db-password.sample .db-password - cp .env.sample .env - - # Set admin password - while true; do - read -sp "Enter admin password: " admin_passwd - echo - read -sp "Confirm admin password: " admin_passwd_confirm - echo - - if [ "$admin_passwd" == "$admin_passwd_confirm" ]; then - echo "Admin password set successfully." - echo "$admin_passwd" > .admin-password - break - else - echo "Passwords do not match. Please enter your password again." - fi - done - - # Set database password - while true; do - read -sp "Enter database password: " db_passwd - echo - read -sp "Confirm database password: " db_passwd_confirm - echo - - if [ "$db_passwd" == "$db_passwd_confirm" ]; then - echo "Database password set successfully." - echo "$db_passwd" > .db-password - break - else - echo "Passwords do not match. Please enter your password again." - fi - done + # Download Kuwa repository + cd "$NOW_PATH" + git clone https://github.com/kuwaai/genai-os/ + cd genai-os/docker + + # Change configuration files + cp .admin-password.sample .admin-password + cp .db-password.sample .db-password + cp .env.sample .env + + # Set admin password + while true; do + read -sp "Enter admin password: " admin_passwd + echo + read -sp "Confirm admin password: " admin_passwd_confirm + echo + + if [ "$admin_passwd" == "$admin_passwd_confirm" ]; then + echo "Admin password set successfully." + echo "$admin_passwd" > .admin-password + break + else + echo "Passwords do not match. Please enter your password again." + fi + done + + # Set database password + while true; do + read -sp "Enter database password: " db_passwd + echo + read -sp "Confirm database password: " db_passwd_confirm + echo + + if [ "$db_passwd" == "$db_passwd_confirm" ]; then + echo "Database password set successfully." + echo "$db_passwd" > .db-password + break + else + echo "Passwords do not match. Please enter your password again." + fi + done } fix() { - cd executor - echo "llama-cpp-python @ https://github.com/abetlen/llama-cpp-python/releases/download/v0.2.77/llama_cpp_python-0.2.77-cp310-cp310-linux_x86_64.whl" > requirements.txt - cd ../../src/executor - sed -i 's/==/ == /g' requirements.txt - cd ../../docker/executor - local LINES_TO_ADD=$(cat << 'EOF' - COPY docker/executor/requirements.txt ./requirements-docker.txt + cd executor + echo "llama-cpp-python @ https://github.com/abetlen/llama-cpp-python/releases/download/v0.2.77/llama_cpp_python-0.2.77-cp310-cp310-linux_x86_64.whl" > requirements.txt + cd ../../src/executor + sed -i 's/==/ == /g' requirements.txt + cd ../../docker/executor + local LINES_TO_ADD=$(cat << 'EOF' + COPY docker/executor/requirements.txt ./requirements-docker.txt EOF - ) - sed -i "8a${LINES_TO_ADD}" "Dockerfile" - LINES_TO_ADD=$(cat << 'EOF' - RUN pip install --no-cache-dir -r requirements-docker.txt + ) + sed -i "8a${LINES_TO_ADD}" "Dockerfile" + LINES_TO_ADD=$(cat << 'EOF' + RUN pip install --no-cache-dir -r requirements-docker.txt EOF - ) - sed -i "9a${LINES_TO_ADD}" "Dockerfile" - cd .. + ) + sed -i "9a${LINES_TO_ADD}" "Dockerfile" + cd .. } install_all() { - if [ -f "$REBOOT_FLAG" ]; then - echo "System has been rebooted. Continuing installation." - rm -f "$REBOOT_FLAG" - install_cuda_toolkit - install_nvidia_container_toolkit - else - sudo apt-get install curl - read -p "Do you want to install NVIDIA GPU drivers? [y/N]: " install_gpu - if [[ "$install_gpu" == "y" || "$install_gpu" == "Y" ]]; then - install_nvidia_driver - fi - fi - install_docker - install_kuwa - fix - #cd "$PATH/genai-os/docker" - cp run.sh.sample run.sh - ./run.sh + if [[ -f "$REBOOT_FLAG" || ! command -v nvidia-smi &> /dev/null ]]; then + echo "System has been rebooted. Continuing installation." + rm -f "$REBOOT_FLAG" + install_cuda_toolkit + install_nvidia_container_toolkit + else + apt-get install curl + read -p "Do you want to install NVIDIA GPU drivers? [y/N]: " install_gpu + if [[ "$install_gpu" == "y" || "$install_gpu" == "Y" ]]; then + install_nvidia_driver + fi + fi + install_docker + install_kuwa + fix + #cd "$PATH/genai-os/docker" + cp run.sh.sample run.sh + ./run.sh } +echo "Kuwa docker build script v0.1.0" +echo "This will install kuwa automatically on Ubuntu 22.04" +sleep 2 install_all - - From 57378ffd1673f0c4a35aa9239eacbfc39c24a3b0 Mon Sep 17 00:00:00 2001 From: wcwu <103374825+wcwutw@users.noreply.github.com> Date: Thu, 8 Aug 2024 23:57:48 +0800 Subject: [PATCH 078/105] [docker] fix: build.sh change reboot flag file location --- docker/build.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docker/build.sh b/docker/build.sh index a9ae0c3a..ab8a1722 100755 --- a/docker/build.sh +++ b/docker/build.sh @@ -2,7 +2,7 @@ # set -x -REBOOT_FLAG="~/.reboot_flag" +REBOOT_FLAG="$HOME/.reboot_flag" NOW_PATH=$(pwd) install_docker() { @@ -159,11 +159,14 @@ EOF } install_all() { - if [[ -f "$REBOOT_FLAG" || ! command -v nvidia-smi &> /dev/null ]]; then + if [[ -f "$REBOOT_FLAG" ]]; then echo "System has been rebooted. Continuing installation." rm -f "$REBOOT_FLAG" install_cuda_toolkit install_nvidia_container_toolkit + elif ! command -v nvidia-smi &> /dev/null; then + apt-get update + apt-get upgrade else apt-get install curl read -p "Do you want to install NVIDIA GPU drivers? [y/N]: " install_gpu From 7dd8df12bb42a52f39ef786eb2c5be0009be892f Mon Sep 17 00:00:00 2001 From: wcwu <103374825+wcwutw@users.noreply.github.com> Date: Fri, 9 Aug 2024 00:08:09 +0800 Subject: [PATCH 079/105] [docker] fix: build.sh fix bug when terminating the installation of cuda toolkit --- docker/build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/build.sh b/docker/build.sh index ab8a1722..0107e3c9 100755 --- a/docker/build.sh +++ b/docker/build.sh @@ -161,9 +161,9 @@ EOF install_all() { if [[ -f "$REBOOT_FLAG" ]]; then echo "System has been rebooted. Continuing installation." - rm -f "$REBOOT_FLAG" install_cuda_toolkit install_nvidia_container_toolkit + rm -f "$REBOOT_FLAG" elif ! command -v nvidia-smi &> /dev/null; then apt-get update apt-get upgrade From 3ce451b1e8856b879583952a84532b42886adcdc Mon Sep 17 00:00:00 2001 From: wcwu <103374825+wcwutw@users.noreply.github.com> Date: Fri, 9 Aug 2024 00:10:33 +0800 Subject: [PATCH 080/105] [docker] fix: build.sh change reboot flag file location --- docker/build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/build.sh b/docker/build.sh index 0107e3c9..a53ca919 100755 --- a/docker/build.sh +++ b/docker/build.sh @@ -2,7 +2,7 @@ # set -x -REBOOT_FLAG="$HOME/.reboot_flag" +REBOOT_FLAG=".reboot_flag" NOW_PATH=$(pwd) install_docker() { From 07790ea85181d9631d57afbcdd411b47655e3d29 Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Fri, 9 Aug 2024 01:45:43 +0800 Subject: [PATCH 081/105] [README] fix: docker building command --- README.md | 4 ++-- README_TW.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index ae67e917..399b13bc 100644 --- a/README.md +++ b/README.md @@ -71,9 +71,9 @@ Download the script or the executable file, run it, and follow its steps to have * **Linux/Docker** - Download and run [build.sh](./docker/build.sh) , or invoke the following command to automatically install Docker, Cuda, and Kuwa + Download and run sudo [build.sh](./docker/build.sh) , or invoke the following command to automatically install Docker, Cuda, and Kuwa ``` - curl -fsSL https://github.com/kuwaai/genai-os/tree/main/docker/build.sh | sh + curl -fsSL https://raw.githubusercontent.com/kuwaai/genai-os/main/docker/build.sh | sh ``` ### Step-by-step Installation You can build your own customized Kuwa by following the step-by-step documents. diff --git a/README_TW.md b/README_TW.md index 80db0164..5a804425 100644 --- a/README_TW.md +++ b/README_TW.md @@ -53,9 +53,9 @@ * **Windows** 下載最新版本GenAI OS的[Windows版單一執行檔](https://github.com/kuwaai/genai-os/releases) * **Linux/Docker** -可利用 [build.sh](./docker/build.sh) 或在Linux下執行以下指令即可自動下載及安裝Docker、CUDA及Kuwa +可執行 sudo [build.sh](./docker/build.sh) 或在Linux下執行以下指令即可自動下載及安裝Docker、CUDA及Kuwa ``` - curl -fsSL https://github.com/kuwaai/genai-os/tree/main/docker/build.sh | sh + curl -fsSL https://raw.githubusercontent.com/kuwaai/genai-os/main/docker/build.sh | sh ``` ### 手動安裝 可參考安裝文件逐步進行手動安裝 From 990bd8bf9d1d813a043b78117383d096076cfad4 Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Fri, 9 Aug 2024 02:25:50 +0800 Subject: [PATCH 082/105] [bot] add: upload tool/vdb/web components --- README.md | 4 ++-- README_TW.md | 2 +- docker/compose/docqa.yaml | 5 +++- docker/root/bootstrap/bot/Create_RAG.bot | 1 + docker/root/bootstrap/bot/Customize_Kuwa.bot | 1 + docker/root/bootstrap/bot/Upload_Tool.bot | 1 + src/bot/Create_RAG.bot | 22 +++++++++--------- src/bot/Customize_Kuwa.bot | 23 +++++++++++++++++++ src/bot/Upload_Tool.bot | 17 ++++++++++++++ src/bot/calculator.bot | 1 - src/multi-chat/public/images/custom-kuwa.png | Bin 0 -> 51084 bytes 11 files changed, 61 insertions(+), 16 deletions(-) create mode 120000 docker/root/bootstrap/bot/Create_RAG.bot create mode 120000 docker/root/bootstrap/bot/Customize_Kuwa.bot create mode 120000 docker/root/bootstrap/bot/Upload_Tool.bot create mode 100644 src/bot/Customize_Kuwa.bot create mode 100644 src/bot/Upload_Tool.bot create mode 100644 src/multi-chat/public/images/custom-kuwa.png diff --git a/README.md b/README.md index 399b13bc..b56de31e 100644 --- a/README.md +++ b/README.md @@ -71,9 +71,9 @@ Download the script or the executable file, run it, and follow its steps to have * **Linux/Docker** - Download and run sudo [build.sh](./docker/build.sh) , or invoke the following command to automatically install Docker, Cuda, and Kuwa + Download and run sudo [build.sh](./docker/build.sh) , or invoke the following command to automatically install Docker, CUDA, and Kuwa ``` - curl -fsSL https://raw.githubusercontent.com/kuwaai/genai-os/main/docker/build.sh | sh + curl -fsSL https://raw.githubusercontent.com/kuwaai/genai-os/main/docker/build.sh | sudo sh ``` ### Step-by-step Installation You can build your own customized Kuwa by following the step-by-step documents. diff --git a/README_TW.md b/README_TW.md index 5a804425..22c39349 100644 --- a/README_TW.md +++ b/README_TW.md @@ -55,7 +55,7 @@ * **Linux/Docker** 可執行 sudo [build.sh](./docker/build.sh) 或在Linux下執行以下指令即可自動下載及安裝Docker、CUDA及Kuwa ``` - curl -fsSL https://raw.githubusercontent.com/kuwaai/genai-os/main/docker/build.sh | sh + curl -fsSL https://raw.githubusercontent.com/kuwaai/genai-os/main/docker/build.sh | sudo sh ``` ### 手動安裝 可參考安裝文件逐步進行手動安裝 diff --git a/docker/compose/docqa.yaml b/docker/compose/docqa.yaml index 9bbffd55..e75561ed 100644 --- a/docker/compose/docqa.yaml +++ b/docker/compose/docqa.yaml @@ -18,7 +18,10 @@ services: "--model", "gemini-pro", "--log", "debug" ] - volumes: ["~/.cache/huggingface:/root/.cache/huggingface"] + volumes: [ + "kuwa-root:/var/kuwa/docker/root:rw", # The root of Kuwa filesystem hierarchy to store user-uploaded data during runtime. + "~/.cache/huggingface:/root/.cache/huggingface" + ] extra_hosts: - "localhost:host-gateway" restart: unless-stopped diff --git a/docker/root/bootstrap/bot/Create_RAG.bot b/docker/root/bootstrap/bot/Create_RAG.bot new file mode 120000 index 00000000..c37ec7d1 --- /dev/null +++ b/docker/root/bootstrap/bot/Create_RAG.bot @@ -0,0 +1 @@ +../../../../src/bot/Create_RAG.bot \ No newline at end of file diff --git a/docker/root/bootstrap/bot/Customize_Kuwa.bot b/docker/root/bootstrap/bot/Customize_Kuwa.bot new file mode 120000 index 00000000..b73752f0 --- /dev/null +++ b/docker/root/bootstrap/bot/Customize_Kuwa.bot @@ -0,0 +1 @@ +../../../../src/bot/Customize_Kuwa.bot \ No newline at end of file diff --git a/docker/root/bootstrap/bot/Upload_Tool.bot b/docker/root/bootstrap/bot/Upload_Tool.bot new file mode 120000 index 00000000..9b227e32 --- /dev/null +++ b/docker/root/bootstrap/bot/Upload_Tool.bot @@ -0,0 +1 @@ +../../../../src/bot/Upload_Tool.bot \ No newline at end of file diff --git a/src/bot/Create_RAG.bot b/src/bot/Create_RAG.bot index 8a8b0407..69ae1c67 100644 --- a/src/bot/Create_RAG.bot +++ b/src/bot/Create_RAG.bot @@ -1,24 +1,24 @@ Subject: Exported bot "Create RAG" -Date: Thu, 08 Aug 2024 08:24:49 +0800 -Content-Type: multipart/related; boundary="kuwaotbok"; type=application/vnd.kuwabot +Content-Type: multipart/related; boundary="kuwawt36h"; type=application/vnd.kuwabot Content-Transfer-Encoding: quoted-printable ---kuwaotbok +--kuwawt36h Content-Type: application/vnd.kuwabot; -#! -KUWABOT version 0.3.3 -KUWABOT name "Create RAG" -KUWABOT base "uploader" -PARAMETER uploader_dst_dir "/database" -PARAMETER uploader_succeed_message "The RAG database uploaded successfully." +#! +KUWABOT version 0.3.3 +KUWABOT name "Create RAG" +KUWABOT description "Import your knowledge base data into Kuwa." +KUWABOT base "uploader" +PARAMETER uploader_dst_dir "/database" +PARAMETER uploader_succeed_message "The RAG database uploaded successfully." PARAMETER uploader_bot_template "KUWABOT name 'DB QA ({{file_name}})'\nKUWABOT base 'db-qa'\nKUWABOT description 'Created by \"Create RAG\"'\nPARAMETER retriever_database '{{file_path}}'" ---kuwaotbok +--kuwawt36h Content-Type: image/png Content-Transfer-Encoding: base64 Content-Location: /bot-avatar iVBORw0KGgoAAAANSUhEUgAAAlgAAAJYCAYAAAC+ZpjcAAAA0GVYSWZJSSoACAAAAAoAAAEEAAEAAABYAgAAAQEEAAEAAABYAgAAAgEDAAMAAACGAAAAEgEDAAEAAAABAAAAGgEFAAEAAACMAAAAGwEFAAEAAACUAAAAKAEDAAEAAAACAAAAMQECAA0AAACcAAAAMgECABQAAACqAAAAaYcEAAEAAAC+AAAAAAAAAAgACAAIACEfAABTAAAAIR8AAFMAAABHSU1QIDIuMTAuMzgAADIwMjQ6MDg6MDggMDg6MjQ6NDEAAQABoAMAAQAAAAEAAAAAAAAAiwKI1gAAAYRpQ0NQSUNDIHByb2ZpbGUAAHicfZE9SMNAGIbfpkqLVBwsIuIQoTrZRUUctQpFqBBqhVYdTC79gyYNSYqLo+BacPBnserg4qyrg6sgCP6AODs4KbpIid8lhRYx3nHcw3vf+3L3HSA0KkyzumYBTbfNdDIhZnOrYugVYZrAAEZkZhlzkpSC7/i6R4Dvd3Ge5V/35+hV8xYDAiLxLDNMm3iDeHrTNjjvE0dZSVaJz4nHTbog8SPXFY/fOBddFnhm1Myk54mjxGKxg5UOZiVTI54ijqmaTvlC1mOV8xZnrVJjrXvyF0by+soy12kNI4lFLEGCCAU1lFGBjTjtOikW0nSe8PEPuX6JXAq5ymDkWEAVGmTXD/4Hv3trFSYnvKRIAuh+cZyPUSC0CzTrjvN97DjNEyD4DFzpbX+1Acx8kl5va7EjoG8buLhua8oecLkDDD4Zsim7UpCWUCgA72f0TTmg/xboWfP61jrH6QOQoV6lboCDQ2CsSNnrPu8Od/bt35pW/34ATvJymHShaEIAAA14aVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA0LjQuMC1FeGl2MiI+CiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiCiAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICB4bWxuczpHSU1QPSJodHRwOi8vd3d3LmdpbXAub3JnL3htcC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgeG1wTU06RG9jdW1lbnRJRD0iZ2ltcDpkb2NpZDpnaW1wOjQ5NThiYjk3LTljYTQtNDA1My1iNGIxLWY3MzljZWVjYjE1OCIKICAgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpiZjVjMGM4MC1iNWEyLTRiOWMtYWExMi1mYWQ4ZDFkMWRlZGQiCiAgIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpiZDY5YTg0MC0zNGIzLTQyN2ItODk3My1jMDMwZGU3YzQ4YjEiCiAgIGRjOkZvcm1hdD0iaW1hZ2UvcG5nIgogICBHSU1QOkFQST0iMi4wIgogICBHSU1QOlBsYXRmb3JtPSJMaW51eCIKICAgR0lNUDpUaW1lU3RhbXA9IjE3MjMwNzY2ODE5ODI0NzAiCiAgIEdJTVA6VmVyc2lvbj0iMi4xMC4zOCIKICAgdGlmZjpPcmllbnRhdGlvbj0iMSIKICAgeG1wOkNyZWF0b3JUb29sPSJHSU1QIDIuMTAiCiAgIHhtcDpNZXRhZGF0YURhdGU9IjIwMjQ6MDg6MDhUMDg6MjQ6NDErMDg6MDAiCiAgIHhtcDpNb2RpZnlEYXRlPSIyMDI0OjA4OjA4VDA4OjI0OjQxKzA4OjAwIj4KICAgPHhtcE1NOkhpc3Rvcnk+CiAgICA8cmRmOlNlcT4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii8iCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6YmUwMTczMzEtZjY1OS00MWE1LThkZDUtMDAzMjk3ZTM1M2E4IgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJHaW1wIDIuMTAgKExpbnV4KSIKICAgICAgc3RFdnQ6d2hlbj0iMjAyNC0wOC0wOFQwODoyNDo0MSswODowMCIvPgogICAgPC9yZGY6U2VxPgogICA8L3htcE1NOkhpc3Rvcnk+CiAgPC9yZGY6RGVzY3JpcHRpb24+CiA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4fdFebAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAB3RJTUUH6AgIABgpA65QVAAAIABJREFUeNrs3XmYFeWZNvD7rTpr7/tGb6xCN/sqbmg0MTEaM8mIyXyjk5lR3BJ3BWMS0SQTE03GxBUwRnEJYkyiGKNjlIAKKiBL0wv70tBNL9BN99lPVb3fH+c0NNgNDXT3qTrn/l2Xl9/4zcA5T9Wpuuutp54CiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIqH8tlslY2pnLQhBRPBEsARENipcOpsHhGqkaxjApUAmhVEDKSgCjAegAnjZE6CeYnXWYxSIiBiwiou7+0paBsGO4ashKKVAhBSqFISsgxNA+HHMOQuCnBpKfwGyhs5hExIBFRInl5fZM2JVKFWqFlHJYtyA1rB+OTOsNKW/H1akrWWgiYsAiongPUpUSqBDAWAAFA/1XS4G3pGq7Dd927eSGICIGLCKynj96i2yKrDAEKmHICinEMAFMABDrBvQQgGeMcPDH+PfsDm4oImLAIiLTBykhlEoJTABkisk/eaMQYr5ek/Qs5guDG5KIGLCIaHAtlzYcCpaqml4pISsgUSkEKiQwBkCSxQ9a63Rh3I7ZaR9xQxMRAxYR9b8F0o6cYEkPQaoSgCuev7oUeEvq6g/wXfdu7ghExIBFRKduqXRA84xUlcjYg24zpM4CoCZwZfwAfme4/D/Hlbmd3FGIiAGLiL7oxMM4FRaoV/uFEA+xP4uIGLCIEtmZDeOk3g9oa3TDuB3fTVvFahARAxZRvBrIYZzUGwkh/mSoyj34tnsPy0FEDFhE8RGkBnUYJ/XKB8hHDJHyS8wWfpaDiBiwiMzKvMM4qXf7hMT9+tXJL0IIyXIQEQMWkUmClIWGcVLvB7vPdKnchu8kfcJqEBEDFtFAieNhnNQrCYmXDAX3YnbKAZaDiBiwiE5XAg/jpF55Afmo4Ut5GP8pAiwHETFgEfWGwzjp1NULiR/p30lZzFIQEQMWJTYO46R+JgX+KYE7MDtlA6tBRAxYFN84jJMGlwGJlw0D9+DfUppYDiJiwCJr4zBOMtdh0QMYvzZSU36By0SQ9SAiBiyyUpDiME4y++Fxu5DGD/XvpL7GWhARAxbFXo8zpOQ4AGksDlmNBD6QOu7Av6VsYjWIiAGLBlZ0hpRN04ZxGCclgEh/lkPejW+lNrMcRMSARf0SpDiMkwgA0Abgl0Zq8mPszyIiBiw6uQXSjlTPqMgMKTGMwziJTmirkPJH7M8iIgYsiuAwTqJ+I4F/SCnvwHdSN7MaRMSAlRBB6lA64BzRNUMKQgzjME6iAaFByucMBT/C7NQWloOIGLDiwcvtmbDbh3EYJ1HMHYLAQ0Zu8pO4SGgsBxEDFlkmSB03Q0rKYRzGSWQ6WwTEnfrVyW+zFEQMWGTmIAWMA5DP4hBZhwT+IYW8DbNTa1gNIgYsGiwcxkmUCMIAnjYc4QfwL5ntLAcRAxb1Bw7jJKKISH8Wkp/AbKGzHEQMWHSqbv5rCaQ6BxnpI5UJk74GIbgiRURdNiqQd2hXpy5nKYgYsKgvbnsjH5ryG0hcja55UkLsFGPHtYms7CksEBF1kQJvSUO7Hd/J2MFqEDFgUW9ufvN7EOLXkMjq6ViK5JSVysRJ42CzZbFYRBQV6c8KB3+Mf8/uYDmIGLCoy1VLVeS5fwuJW/pQ6hYxdOhWUVp2LgtHRN20QuBn7M8iYsAiALj73WT4Qn8EcMUp/d85nGuUiZOK4HYPYRGJqJvPDcg7cHXqSpaCiAErMV21VEWu+y+nHK6O8on8gjXirNHnQQi+/4+IjpACb0mot2K2exerQcSAlVhuWfZE324LnoSqblHGjtORkVnBohJRNyEAz7A/i4gBK3HcvOw2AI/145+oITNrpTJ23HQoCmdjEVF3DUKIB/WapGcxXxgsBxEDVny66Y2zIJT1ANz9vyWUejFmdLPIzedIByI6/kC9ThfG7Zid9hGrQcSAFV/mz1fQPGUFgPMG9O9Jcq9WJkweCYcjh0Unou6kwFtSV3+A77p3sxpEDFjx4aZlN0Lg6cHZKuKQKCvbJEqHzoLgNiKiY/gAPG4I388wO8/DchAxYFnXnLV22A5sBWT5oP69NttGZeLkVCQnD+NGIKLj7BcSP9SvTn4RQkiWg8hcFJagL0Gn8buDHq4AQNMmGGs/KzKqq1fAMELcEETUzRAp8IK61Psp/thxDstBZC5cweqLm5dVARgb2yisbFPGjgsiM2ssNwgRHUdCiD8ZUO7GbPdeloOIAcv8bvhrBVS12jQH0bTUj5RxEyfCZkvlxiGi4/gA+YghUn6J2cLPchDFDm8RnoyqXm6qQNzReb6x+kOf3L//E24cIjpOEiAeUKR3q7rEcy2k5EU0UcxO2HRiNy9bCeB8U342h2uNMmniELjcRdxQRPSFA7zAp7qh3I7vJPGCjIgBy0SuWupArtsDwG7iLdghhpSuE8OHzQIEVySJ6HgSEi8ZCu7F7JQDLAcRA1bs3fJmJaTYbInParNvUsZPTEJqyghuOCLqgReQjxq+lIfxnyLAchANLK54nPC6Ty2xzGfVwuONz9eUGZs3roAhefAkouMlA+IBJSnan0VEDFixo2da7APbcfDQLOPjlQ2ytXUdtx8R9aBECrwgXvV8gCWeCSwHEQNWLDgt+akNY5isrppsrF3zMcKhQ9yMRHQ8AVykCHyuLPEsxiuefFaEiAFrMKmWPn56Pecaq1bpcu+ej7kpiajHc4DANYoqtiuvds7H29LJkhAxYA1GRomD+shcuWvnucYnq9bC79vHbUpEPRwnUgDxgNLhrVKXdF7FehAxYA3wMcfSK1jHCganGp99miXraldASp0bl4i+eE2JkVKIpeJVz/t4xTOeBSFiwBqgg42Mt/okyaYDs4yPVu5Ae1sNNzAR9Zyz8CVFxXpliWcx/tyZx4oQMWD1L6mocfm9DGOUsXHDKGPjhpXQNC83NBH1eH4QuEYJizrlVc9cLJUOloSIAaufLuNkPNfHhva2C4zVH7fJ5ua13NhE1ItMAA8r0lulLvFeznIQMWCduXjqweqNYRTL2uqpxppPViMUauVGJ6JejJJCLhOvet7Dks6xLAcRA9aZVEdNmO/q8880Vq+yy507P4SE5MYnop4I4BJFiPXKks4FeKUjhxUhYsA6dUaivTxZpsv6Pecbqz+sgte7kzsAEfXCBiHmKKqyRVnquQ3LpY0lIWLAOpXqqAn5vcPaeGPtZ0VGdfUKGEaQOwIR9SILEo8pTd4q9VXvZSwHEQNWH8lEro8Lrc2zjI9X1qPt0GbuC0TUK4HREvJv4lXPe1jaWcGCEDFgnSRfJegKVneGHGFs2lhprF/7ITStkzsFEfWes3CJIsUG5VXPb7H0UDorQgxY1MvRQrA+XcfNjs7zjdUf+uT+htUsBxGdgB3ArYp07FCWem7DUskLVWLAouMYkvU5ph7Il9u3zDRWr16DgL+BBSGiE8iGxGOK9FbZlnq+ynIQAxZ1rw6vvHoSCkwzPvkkQ27Z+jHfa0hEJzHGkPi7WOpZhiXtw1kOYsAiJHiT+4kJJMkD+881Pv5oOzrad7AgRHTCQ4bE5Yqw1Sqven6Llw6msSLEgJXY+YorWCeja2cZ69eXGhs3fAzDCLAgRHQCkf4su5P9WcSAleD44+/rQbO97Vzjo5XNsqXlc5aDiE4iJ9qf9Rle7byA5SAGrITDW4SnVi5ZKms2TzbWfLIa4dAhFoSITmKyArFCLPUsw1L/UJaDGLASB1ewTofPP9NY/bGQO3d+yGIQ0ckIicsVqdcpr3p+izdaUlkRYsCK/58963O6JDJl/Z7zjVUfb4DPu5sFIaKTcAC4VQm469Sl3jmYzzsIxIAVz7iCdabCoYnGms/yjerqFZAyzIIQ0UkUSSkXqGO8n2Fpx3ksBzFgxSVeQfUTN1qbZxkfrdyF9rZqloOITnr0BaYoUlmpLPUuxR/95awIMWDFF65g9SfDGGVs3DAm+l5DDwtCRCchIOVViqJXK696HsbS5hSWhBiw4uO3zfoMxD7X0Xm+seojj2zY/ynLQUR9kARgriKT6tQlnmshpWBJiAHLyiSH4A1gbQvktq0zIu81DBxgQYioD4ZIgRfUpd5P8ceOc1gOYsCyKsH6DLhQYJrx6SduuW3rSkAaLAgRnfT6DJimKMpHylLvUiz1l7IixIBlvV8xV7AGp9DpsmH/BcaqjzbD49nJehBRny6BpbxKkXqt8mrnfCyVbpaEGLCsUx0GrMEU1sYb69aUGJs3roBhBFkQIuqDJEA8oEjvVvZnEQOWVRisTwzYcfDQLGPVh42ytXUDy0FEfVQsBV5QX/OuxhLf2SwHMWCZGXuwYkc3ymV11Xhj/boPoWkdLAgRnVA4DBw+DONA0wxxYN8q8Zutf8O81eUsDMUuQlDvbln2BiS+wULEei8VB8TwEVvEkOJZLAZRgguGIP1ewOsDfF5IrxfweSMBq4dLNQDvQzHuxxNXrmXxiAHLLG5atgwCl7MQJuFwfapMnlQMp2sIi0EUxySAYADS7wO8kTAlfR7A5wM07XT+RANC/BhPXv4/LC4xYJnBzcveBvA1FsJUB95OUVz8iRgx4kuA4EMIRJb+PUsgGIT0RMNT14qU3wfo+kD8jQ/iqSvms/DEgBVrNy17BwKXshAmpNqqlAkTbEhNG8NiEFkgSPn90fDkBTzeyOqUzwcYgzr+zoCCi/HEFf/kRqGBZmMJThg/uUJiVro2zvh8XRiZWe8pY8eeA0VNZlGIYswwAL8PMtofBZ8X0hcNUlKa4RMqMPBzAOdyY9HARwjq3c3LPgBwEQth+r24XoypaBG5+ZNZDKLBClL+SHjyegGfx2xB6sSkGI6nL+dQYxpQXME62dUOWeBgiRJZU1Msk/b8U5k4aRzs9mwWhagfaFq3vig/4I2uSAX9kUZ06x40ZgFgwCIGrBjiLULrEPB5LzRWf9Qmiss+FEOHnQfBFVqiPgcpvx8yelsPHl9kFELA6kGq18NFHjc6MWDFFlewLHdhikxZv+d8eaBhjTJpcg7cSUNZFKKoUDB6Wy/6xJ7PG7nF1/MMqTg+svPF8sSAFWtcwbKqcHia8dmnPlFQ8J4YNXoWhHCwKJQgFxlA0A/p80dWo7y+oytTpzdDKv4Y2MYiEANWbI9UKp8DsLQkeeDAl2Vzy1Zl3LgwMjIrWRKKK6Fg5Im96PgD6Yk0nEPTWZveBaC7lrMMxIAVU4K3COPialUfZWzcoCM9/X1l7PgZsNlSWBSyznWeaWZIxctxfQkWfvkw60AMWLHFgBU/VBw+fLGx6qN9YuRZVaKwcCZLQua6EDAAny8SnjzRFSkrjT6whjYo+v0sAzFgmeGkTPG2GlAst9YVV+ypam4ZNy2zNTnTzqLQoNL1SHjy+o59PUwgwCA1sAKQ8l/wxJUNLAUxYMUeV7DiVHXQnpexdg0uynVixZgLYAj22lE/6z5DqitI+fxxMEPKihdW2AGIq/H0FetYDGLAMgeuYMWxdtjxfouBCYf+Bu+Y8diZXcqi0KkLh6MDOKNP6vmir4oJBVmb2AoA+BgCS9DiX4zXZodYEmLAIhpEG/VkODdvw8Wptfho/EUI2jjRgXrQ9cSeL8FnSJlMkkNBhkvZ39CprQBENXRjCxSlBlrBdiycyo1DDFgm5WUJEkMQCt7rdKB81fvIHFqKjSWc6JCwNC2yIuX1Hn1hsdcLhLgAEksZLhXDc5yoyHOhMt+NYVkOVOS7MCbPqSmKNlWkDD3AKhEDllVIdHIMVmLZLV3Yu7MZFzbsxsYJ56PNlcaixOdvOzqMs+tlxb6jK1I6Z0jFUmGaDRV5bozOc6Eiz4nRuS5U5LtRkNrb6Ur+jeGKGLCsRojd7EZNPAaADwJJyPt0NWYWpGH1WZzoYGk9DeP0ehikTBCkKvPdx6xIjS90IS/lFB/slcofWE1iwLLeZW4ta5C4muFA84EAph38Gxorp6IhPZ9FsVqQ8ngAg0EqVuwqUJLuQEWeG5UFTgzLcqEi34lJQ5KQbO+Xh7Rbkdr4NitNDFiWy1fyU/Dx/YS3JpyElA1VuDirBv8cewF0wYdLY/ib/OJUc58P8HOqeSwl2xWMjvRDYUyeG6NzXajMd2J4thM2ZSCPoeKvQrCRnRiwrEcvWgVbYwcANuIkOA9UvHcIGP3Ru1BGjkJdwQgWZaCDVCAQ7Yvq/tSejytSMXSCRnMosbgYfX9luwSEYC8HmRCXZ07m5jdfBMS/sxDUxQ4Ds1LC+HT8LHjtbhbkTBgG4PdFVqE83qNByu/nVPMYGpJux5g8V7TB3HVkReqU+6MGkj8AzP81oOkrIcStYsGCjdxyxIBlJd9/41wYykcsBB2vRASQXz4En5eOZzH6FKS6P7Xn4Xv2TKDfGs1jYe0m4I9/PbKHAXgZ4fBd4g9/aOGWJQYsq7hp2XIIXMhC0Bd/QBIXOH2oGXceDiZnsCCGHp0bFbmtB68P0usBAkHwLk5sOGwCo3KcX1iRGp3rgstu4VPAc68C1VuO/6+HIOWP0d6+QLz2Gu8lEwOW+QPWW1Mg5Kfgq3OoFzkIYVx+MlaedS5kIjwYoelHb+dFV6Wkz8f37MVQikPF6DwHxuS5oyHKiYroqtTANprHQFgDfvyryL97VgcpbxeLFr3LPYMYsMzu5mUPAJjPQtCJTFB98FRMwK6s4vgJUn7f0ffseXyQfm+k/4VJKiYy3SqGZR9tNK/Id6Iy343yTHtsGs1jYftu4OnFfTjDibcgxA/EM8/s5p5DDFhmNX++gubJrwHiWywGnUgSdJybAXw4dhZCqt0aHzqsHX0ljD96a8/nBYJ8YXGsFKfbMSbPHR194MLoPBcq813ITebD33h3BfB/K/r6v+2HlL+D3f4z8dRTHhaPGLDMaM5aO2wHXgLkbBaDTuYs4Ydj1AhUF4wyz4fSokHKw/fsmYGqCAzNdGBMXmQAZ+T1MG6MznMizcmOhF49+Tywc++p/l/tgxD3iwULFrOAxIBlSlLg5rduBfAwABfrQSc8gULiwqQA1oy/EB5n0uD9xboOeD1HZ0d5vVyRiiHnkUZzN8bkReZGjY42nTttPAyfkpP3X53kEC7/CSlvE88+u4nFJAYsM/rB28Oh6wsAXMxi0MnkI4ShxTn4bPiU/v2Djx9/0NkZ6ZEKsNk8VkFqeHZkZlRFnhuV+a4jDeeqwsNtv9i2C3jmxTP9UzQAzwG4Xyxc2MqiEgOW6UiBm9+6BgL/C4ks1oNOZprNh4Zx09GYlntmQaprjpTXByapwcdG8xg6tf6rkzkEKR9Ce/sTHOtADFhm9P03imAoTwL4JotBJ5MODVNznFhRcT6M40/GEkAwAOnpBLwewOOB9HiAYIA5KgZKMx0Ynes60mg+Js+NijwncthoHjvPvgLUbu/vP3UDDONW8eyzH7LAxIBlRje++W0o4nEAhSwGncwE1Yv2YWOwF65Ij5SnM9J4rvFCejCpioi8U6/bE3uRp/acSGWjufk8+BugY4AeBhTiLWja98Xvf7+HhSYGLLOZ8146bIGHAHwfgMKCEJmDXQVK0iNBqrLgaI/UmDwXkhz8qVqCxws88OuB/lt8AB5BKPSweP75AItODFhmc9Nb50PIhQBGsxhEg4eN5nFsxx7gqRcG62+rhxA/4lgHYsAyo+8tdyHJMw8C90HCwYIQ9Z/eGs2HZjrAPvM4tWYDsOTNQT5Lig8gxG3imWc2cwMQA5bZ3PTGeCjKIkhMZzGITj1IHX9brzLfjcI0NponnHf+Cby3MhZ/swbgKQA/EQsXHuaGIAYsM5m/3IZmzy0AfgYghQUhOsqmCJRm2L+wIjWh0M1GczpqyZuRVazYOQgpf8qxDsSAZUbff3MoDPEMgK+wGJRoHDaB4jT7F1akKvJdcNvZaE4n8fslQM1WM3ySzwHcJhYu/IgbhRiwzOamt66CkE8ByGExKN6kuxSMyHEdGX/ARnPqF4//Adhdb5ZPIwH8CcDdYuHCvdw4xIBlJre9kY+Q8ggErmExyIrYaE6D6pGngQMtZvtUXgCPcqwDMWCZ0S3LLgPwNCRKWQwyo8I0Gyrz3cesSI0tcKMglY3mNIh+9TTQ1GLWT7cdwA/FwoWvcUMRA5aZ3P1uMvzBHwuJeyQEm1Fo0PXWaD6xyI0UBxvNiQGrj96HlLeJRYuqucEYsMhEfn3ZdU8sKDjnlq2uXBaDBoTDJjAiOojz+B4pNpqTqZnzFmFPwgCeBsc6MGCReTROnbQkJNSrFxacg0eGXISQwlswdHrYaE5x53fPAXv2WekTR8Y6DBnyuJg/3+AGZMCiGGqYOmkTgHEAUOfOxz1Dr8S6lGIWhnrVfRDnsCwXG80pfi16GajbYcEzrVgHw7hVLFq0ihuRAYtiF7AOA0jr+p8lBF7OnYKHyi6FR3GyQAmsp0bzcYUu5KfYWRxKDC/9GVhv2TfWSAAvwWa7Vzz11AFuTAYsGkTVlZWOTLcj2NP/3z5nBuaVX4EP0keyUAniouEp+K+pOajId2J0rgtJDvZHUYL789+Bj9dY/VtExjo4nb8Qjz8e5EZlwKJBsG/69GzFCLee8PiSPQEPlH4VB+3JLFgcm//lAjxwSSELQdTdPz4E/r48Xr7NNgB3iIUL/8YNG594SWwiajh80u3xrYMbsaLqcfxr60YWLE5dNT6D4YqoJxnp8fRtRgJ4S86Z85687rox3LgMWGQCWZoPv9v5Ol7ZuhgloXYWJI6kOFQ8dgUfaiDqUXpqPH6rS6AoG+WcOb+VP/hBGjcyAxaZwIXt2/HPTY/jlsYPoUKyIHHg3yZloCiNTetEPV9dZsTrN7MDuBXBYJ284YY5cv58npsZsKg/CV0/5Z44txHG/fXv4c3qRRjja2IRLW72+EwWgag3memALa7fKlAIKRegoeETed11Z3ODM2CRCUzy7sM71c9g7r5/wCk1FsSKP0YhcHYZH14g6v1HogA5WYnwTadBUVbJOXMWy+uuy+eGZ8CiMyTcxhk91WmXOm5rWInlVU/gvI5dLKjVLs7dKpL5qhqiE8vLSZhTAoBroCh18oYb5sqrrnJw4zNgUYyVBw7h1brn8fDuZUjTAyyIRaQ6+UJlopMqSrgFnQxI+TAyM6vk9dd/jTsAAxbF/NJH4trmNVix6XFcfogvdbfK5SoRnURxUaJ+81EQ4m15ww3L5E03DeOOwIBFp3KCNdz9fo7ND3di4fZX8cLWl1EY4kvdicjqAasgsb+/lJdD12vlnDm/lf/1X6ncIRiwKMa+3L4Fyzc/if8+8AkUyZEORGRRqSnxPK6hrxwAboXNVidvuOFayQVwBiyKrTQtgJ/ufRuv1z2H4YFWFsRkhGDwJeqT4eWsQUQRpHwB11//ibzxxuksBwMW9XaCNYxBuQqZ0bkH721+CnftXw671Fl4IrKWEQxYx12dTYdhrJZz5iyWN96Yx4IwYFEMuQwNd+1fjneqn8FE734WxAzHSJaAqG9GDmUNej6fXwPDqJPXX3+bnD/fxpIwYFGUf5BWsLob42vCmzWL8NCevyNZD3EjEJH5pacCudmsQ88yIcRjaGioktdffynLwYBFMWSTBq5rWo1/bH4SFxzewYIQkflxFetkRkOId+QNNyyT113HYjFgUSyVBduwZMsLWLB9KbI0HwsyyITgTUIiBqx+JuXlUJRqef31D8ubb05hQRiwEvME6zJMcYa94tBmLK96Av/aupEbhYjMafQIwMG3x/SRG0LMhaZxrAMDFsVabtiD3+18HYu3voyiUAcLQkTm4rADo4ezDqdmCKR8AXPmLJfXXTee5WDAohi6pH0Lllc9zgGlg4B3CIlO0YQK1uD0zIKirJdz5iyW//mfuSwHA1b8n2ANacpTbKoexE/3vo2/1v4eowIt3FBEZA4Vo3ib8MzO/9fAbt8ir7/+NnnVVXzbPAMWxcpUz168V/UU7q9/Dw5DY0GIKLZ4m7A/RMY6ZGaulTfccAHLwYAVl4ThNP1NIrvUcUvjh3inegGmePZxo/Xn9mcJiE7dlHGsQf+YCClXyBtuWCZvvLGc5WDAohgZ7W/CG7WL8KtdbyLFCLIgRBQbFaMig0epf0h5OQyjWs6ZM19+73suFoQXzXFh/7RpJUJqe632ufc5MzC3/AosTx/JjXgGRuU4seUeNu0S9YVmSOw4GERNcxB1H9agdkcr6kQKGuGEX9hQIn04F224Vq/HdLSzYKd5eIcQ94sFCxazFAxYltYwZUophLHHqp//9ewJeKDsazhkS+LGZMAi6hfesIG6pgDqWoKoafJjS0sQtS1BbGv1I9zHd9VfLRvwlF6FLPB1YKdpOYDbxMKFVSwFAxYDVowcsiVhfunX8KecCdygp+isXBfq7h7DQlBCavVqkdWo5gBqm/2obY6Eqr3tIfTHhJjR0oN/6KsxBAEW+/RoAJ4DcL9YuLCV5WDAYsCKkZXpwzG3/BvY48zkhmXAIgIASAnsaQ+irjmEmiY/6loCqG0OorY5gIO+gX8y+WzZhhX6KjhgcGOcwXU0pHwI7e1PiNde01kOBixrBKxJk8qgYne8fJ+AYsOThefjd0UXICw4YuWkV9i5hnJcAAAgAElEQVS5LtQyYFEcCOtA/eEQqpv8qGkKYuehAKoPBLGx0Q9PKLbn5MeNzfi+sYsb6cytB3CrWLjwI5aCAYsBK0aqkwpx99BvYGPyEG5kBiyKIx1BHXXNQdQ2BVDb4kddcwi1zX7sPBSCZpjzzQ9l0ofd+vvceP2WIsRbkPIWsXDhXhaDAYsBKwYMIfBKzhQ8VHYpPIqTG5sBiyykza9/YTWqptmPXW390x812Gr0f2KM7OSG7T8+AI8gFHpYPP88m9wYsMyn8eyJ5VITcb123eRIxf1lX8fbmXxa7nhj8lyouYsBi2J4kdcRRk1TANVNAdREV6KqGgNo8oTj6nv+SV+Lb8tGbvD+twPAfWLhwtdYCsDGEtBgyg914tltS/Bm1lj8pOwyNNtTWBSiQRQIS2xpDUSf1os0mG9pCaCuJYCglhgvdPfw1DdQhgNYKufMeR9S3iYWLapmwCIaZN84tBkXdmzHI0Vfwh/yZ8AQXEwl6k/tAR07WoPYeSh0ZEWquimILS0B6IZM6NoUwc8dZGBdDCHWyzlzngbwE7Fw4eFELALPaiZyYPr4oYah7ky07706tRz3Dv0GdrhyEnr78xYhnY769hDqWgJHGszrWgKoaQrG3W29/qJCokH7P+Rx6OhgOQgpf5qIYx0YsBiwTCEobPhd0QV4ouj8hB3pUJHvRvWdo/lDoC/QDImdh7pmR0Vu69U2B1DXHERnkKOITsVXZAve1T9hIQY9bYh1MIxbxaJFqxiwaNA1TZs2TJfajkSuwS5nNu4degU+ThvGgEUJJ6RJbDsYRE1TIHprz4+a5gBqmgLwhzkc88xPeBKr9Y8xQ7axGLEhAfwJNttd4qmn6hmwiAFrkBlC4MW8afhF8SXoUBPnZe4MWImj1atFV6GC0Vt6fmxpCWFPe9CSYw+s4ofGNvzcqGMhYs8L4FE4nb8Qjz8eZMAiBqzBrkeCjXSozHdh853swYqbS/Vur4Xp6o3qemqv1auxQIN6opO4y9iJXxm1EGCCNZFtkPJOsWjRWwxYNLCBYsqU4bowtrMSx3oncwx+WP51HLCnMWCR6XTd1qtrjow6qIn2RtW1BOAL8bZerE2Uh/Fzow6XyWYWw7z+ASFuEwsW1DBgEQPWIOtUnXi45Mt4IXda3I50YMAyt46gji3N3RrMW4KoaTL3a2ESTYYMYzQ8qIQHY2UHviRbMU52ctXKGsIAnobT+WPx+OMdDFjEgDXIqpILcXf5N1GVXBh3321sgQtVdzBgxVpvr4XZ3RaGwQYpU8hEGBXSg0p0YJjhQwU6USk7MRR+himTk7oOLRBA2O+DFgjoYZ/XrweDhq5rDiFlEBJ1Usq/2hTb83lr1hxgwKJ+UT958ghVkdtYiRPThILn82bg4eKL4VMdcfO9xhW4sIkBa9AkymthrKwQAVTKTgyDLxKoZCfGoQP5MsjimJyhadACfmiBQOTffr8W9vkMQ9f6etDuEBA/LFz7+ZNWrQEnuZP1dlpp4Lqm1bjk8BbMLb8CH6YNZ1GoR2EdqD8cOrIi1TX2oK4pAC/HHpjkJCRRCj8qjE5Uis4jK1IT5WGkgDO+zE4PhyIhyu+HFoz+2++Thq6LM8wbaRLyicapk84qXLv+VgYsokFUHjiEV+tewLKssbiv/HIcsiWxKAnqcMDA9tYAXwtjYg4YGAEfKmVHZEXK6EQlPKiQHXCDYdf0QSoUPLoadfQWH6TeYwjut7tjEvhB47SJdYVrNjxltZrxFqGJ1M+YOFLVxVZW4tS12pPxUMlX8aecCZb9DuML3dh4O+dgnUhv/VG72kKcH2US6QhjhPQeuaU3DJEVqdHSA5X9UeYmJfRQCFoo2HVb70iY6iVIDRav0DG0cP36FiuVkytYFBdywl78bufr+ObBTbhv6BWod2SwKBalGRJ728PYeTB4dDXqQBBVB/zo4GthTION5lbOURJ6t/6ocPT2nh4IQJrzSiVZqmIOgJ8zYNFpEVIKLiqemS8d3oZ/bnocvxlyIZ4pPA8662lafC2MNXQ1mndfkWKjuYWCVLQvKhwNU13/s7Tckq/xVQYsohhzG2HcX/8e/uVgFe4eeiU2JA+xRsCO0+3R5tePWY2KhKnIYE6OPTDLiYCN5pYOUroOLRiEHgwcCVKR23v+eFqCGG293xVRnKrwHcCbNYvwfN4M/LL4YnjjaKSDGXWNPei+GrXzYBA7D4VYHJPordG8UnbCxSBleseMPuj21J4eTojfWAoDFp1+Pjck72f19w4eHenwlfY63Fd+OZanj2RRzsDxYw+6Gs03NvrhCfEEbRYZMozh+GKj+RjZCYXlsUiQ6npiL7oaFQpCDybybVnZwIBFZEKlwTa8vOVFLMsai/vLvo5We7L5AraJ4nVQk9ge7Y869taeH4Ewb+uZBRvNre3I6IPuM6QCfhg6L1Z6OEJ+zoBFZGJXHNqMWR3b8bOSr+Dl3CmQCd4Ef3x/FF8LY049NZqPl4eRB95+tYKj4SlwzHRzafBhjj5TxCsMWHT6+VzaBQR/cAMtTQvgV7vexDcOVuHe8iux25VljqvZARqIaUiJ3W3hyEuKm/yoawmhttmP2uYA2vy8UjYLOwyMhA8VMjIzqkJ2YLT0YDQ8HMRpBdEZUuFuDeZdYYpB6ox9XvjZ528wYBFZxHkdu/DB5ifwWNEsPF14HsJCjennOdOwE9QktrQEUNcSiISp5siTeltaA7ytZyLJUsNoeCIh6si/OzFc+mBnkDJ/jjKMbqtQ3fqkgkFw2u2AaBfCuFbAej8OBixKaC5Dw7x97+PKQ5txb/mVWJdSHLPPsr8jjIM+DdlJJ/5Ztgd01DUHou/UC6K2ORKqdrWF+FoYE8lCCGOkF2NkJ0ZHn9QbLTtRhgD7o6wQpHQ9MoQzEIDefRhnKMQgNXgaDQXfLv5sY7UVPzyfWjORhsmTx0CRNaxEbBhC4Pm8GXi45GJ4FGdMPsNvv1GMW8/NjQSuw+Ej4ammKYAtrUHUNvvR2KFxY5lIkQxgDDwYIzuPWZHiIE6L/O6Pf2KvayBniP1tMRQC8AebsM3PW7PmgFW/BAOWifBdhCa5ZHKk477yr+P/MgZ/rl2aU8XoPCfqmoN8LYyJKADK4YuEqGhfVGW0VyodYRbICkEqHD76aphuQcoIc/vFmAaJXRCogUAtINYEw8YHQzdsaLf6F2PAMpHmadMKNKk1shLm8F7GWbi/7OvY5+R7DROFHQZKEPjCRPNJ6ECy5MqhFeihUHT0ge/o03vBAAyN2y+mYcNhh62kGLbSYtjKimErK4UMhObumv/Lxyqrq+NyuZABy0QOjB+fbDhUDythHn7FjqcKz8Pvii6IeRM89Z/uE827jz7gRHMLBalw+NhBnIEAwj4vn9iLdahISoKtpAhqYQFsZaWwl5fAVl4KW2kxoBwz5jYMLZwnMoe2x20tuDuYhwRE49RJ7QDSWA1zqUkqwNzyK7AupYTFsBBONLf6QVFCOzKM0wfNH4AW5OgDM1AyM2ArK4muSJVGVqVKi6Hm5vQ1frwrUod8Na7DJncTc2mYOulTANNZCTMGYIE/5UzA/NKvoc3mZkFMpPtE8yNhSnoxDD4WxypBKvjFieZaIADJJ/ZimBAE1Pxc2EqHwFZeFglTpSWwlZdASU090z/9ZpFa/HQ8l49jGkx3nBE1QkgGLFNejUhc1boBFx7ejp+WXIrXc8Yn/CT4wcaJ5hY/vhlGJEB1PbXn5wwpU1BV2IoKo6tQR2/p2cqKIVyugbleVeWb8X/OIFPZP3XSfwvgWVbC/FanlmNe+RXY5s5lMfrR8Y3mFUYnKhF5co+N5la5UJTQoytR4ePCFMXwhG+3QS0qgm1oKWyF+ZFbe+WRf4TTMZjJ4zORUjwj3uvNFSyzHZhU/V2hs5naCmZ27sY/Nj+FhQXn4NHiixAU/DmdCjaax8HxyjAiLyw+PkgFA1yRimWQSk6CrbhPjeYx2nGwLCG2A3dF82mYOmkdgMmshHXsdmXhvrLLsSJ9BItxHDaaW19kGKf/Cy8t5jDO2FKyMiLBqaQE9vISqKXFsJeVQsnONPkOhZkivfgTBiyKQcCafAMgn2ElrGdZ1lj8qOwytNhTEu67s9E8ToKU39dtsnkAYQ7jjHGKUqDm5cFWHn1ar3RINFQVQ0m15HHmMFKG5Agh4v5+PwOWCTVXVqZobkc9AE64tKAOmwuPFH0JzxfMgB6HP7GeGs0noAO5fDWMdYJUOByZZn7cU3scxhlDNhW2IUOOjDs40mheUgzhcsbRF5VviNSSbybCJmXAMqn9UyffKyB/yUpY17qUEtxb/g3UJuVb7rPbpY7hgVaMUg5jnMvAOM2L0dH37DnB+UOWCVLHv2fPH3lpsaFxRSpmJ93ujebR/ii1sAC2oWUQDnsCVEDeKlJLHmfAopjZNmKEMzkjpQYQw1gNC5/ghMDr2RPwYOlXcciWZLrP5zA0lIfacJavCaP8LRjlb0FZ8BBG+5vhMLToCUGBe1Ip0o1cMFuZ8Xwlo6+HiTaaH1mV8nEYZwwpqamRQZxlkVUo29Ay2MqGQM3LA0Qin3qVCpFaVMuARTHVOHXCdAnlQwAOVsPa2tUk/HrIhTG7bZiu+VEWbMMofwvO8jdjVPSfklA7lD4+7aUUJiOjfBicQRc3aIz0+HoYvw9S51OXsQtSKdFxByVHRh7YigqhFiR6kOpRg0gtHpIoX5Zb3+x745RJd0Lg16xEfFifXIwflV+G9cnFA/LnF4YOY6S/FSP9LRgVaMYIfytGBVqQHfb209lEwDWhCOm2Aig6nwEcEN2nmndrNteCfD1M7FKUArUgD7bSEtjLS6GWRZ7Ws5UWQyQnsT59jxyviNQh/48Bi8wTsqZNeggSP2Yl4uT8CYG3sirxy+IvYacr57T+jPxwZ2QVyhddkQo0Y4yvCan64DSai3QHUiuGIjnI12aeSZDSQ6GjzebdVqb4epgYsalQc3MivVHRHilbeelATjRPsHyFO0RK8WMMWGQqjdMm3i2l+AU4HDZuaELB25kV+DhtGD5LLcVeZyb8ytEmV7cRRnngEEYGWjHS34yR/haMCLRiRKD1SH9UrNnH5CIjrRi2MHfLXnOUYRz7aphu79yjGJ343O7IuIOykmNHHxQWACoHPQ/cj0G5QKQVfciARaazf+rEc4UUL0GgnNWITwHFhqBih0sPw2mV18K4bUiZWI7UYEZCH1KkoR8ToMLdh3FyRSomlLTUbu/VKz3ScK4W5LE4g89AwJkhcnM7GbDIlOpnznTbtMADUuJuALzUItOwlaYjfUgZHEFnXH9PqevQgsHIQM5gAGFf5N8MUjEMUr01mhfmszjmUStSiysS6QszYFnUvmkTJyoQz0JiCqtBpqEKuCcUI10tgLD4g22GpkXGHxwfpIIcqBqzIJWdCXt5WTRIlcFWVgL78HKIJDaam//KBC+KtOJrGbDIGvvrhRfaGjoP3yUE5gNgByaZ6EToRtqooXAHky0RpI4fxqmFggxSsdJro3lJnE00TzBC3i5SSn7LgEWW0jRlynBNMRYKiS+xGmSmo4ujIh8ZSUOg6rG/m82p5ibbPRx2qIWFx0w07+qXgsIRIPHHmCVSS1cyYJHlSEAcmDrpGgn8L4AsVoRMc5BJdSKlshQpocF5tebxwzj1YBBhv4/v2YsRJTUFalFB5Im96O09e3kZB3Em3ElKyRVpRa0MWGRZzdOmFWhSexzAv7IaZCb2EdnIyCmBLdQ/71vjVHOTBalof5RamH+k0dxeXgYlO5PFocMitTgj0b40A1ac2j9t8hVCyqcAFLMaZJoDjkOFe0Ip0o0coC8P3PU2jDPAqeYxoapQ83JgKyo8ttF8RDmEm43m1NvvGGtEWvF0BiyKG7smTsxw2sWDkPg+ADY1kHnO00WpSC8rP/peQwYpc50Y7DaoRUWR/qjC/KON5uWlEE6+GpVO2asitfg7DFgUdxqnTLgIQlkogRGsBpmGImAvzoBs9kMLBjlDKhabICUZamn0vXplQ6LDOEuh5uey0Zz6j8RvRFrxXQxYFJfqZ850K+HgXAF5HwBeghIlUpDqNohTjd7eY6M5DV7AEnNF2pBfMWBRfAetyZPHq4p8FsA0VoMozoJUT43mw8qgZLLRnGKaNP5DpBQvZsCi+L+YuPBCW6O3/RZI8TMAKawIkYV0NZpHB3GqRYXRRvOhEG4360MmTP7y6yK55G0GLEoYTdOmDdOl9gyAL7MaRCY7OPfWaD60DMJhZ4HIUpf1IrVkBQMWJZzGKROvkkI8BSCH1SAa5Iv7lGSoQwqPDuLsur3HieYULww5Q6SXfMaARQmpacbYfF23PwLgGlaDaACCFBvNKVEJOV6klFQxYFFCa5wy8etSiKcBlLAaRKcRpKKN5l2DONXCfNiHlUPJzGBxiAGLAYsS2cEZM9KCRuinHFBK1AubCjX3aKP5kf6osmIIl4v1IeqOtwiJjrV/6sRzhRQLIVDBalBCXng77FALCyON5mWlsJeXQC0sYKM50aklrFkitXQlAxZRN3LKFHsDjDuFwIMAnKwIxSMlNQVqUcHRRvOu/ihONCfqh6QhvyZSSt5hwCLqwYGp48fqQl0kJM5mNcjKQaqr0bxrEKetqBBqYT6LQzRwSSMhB43auOWpLwrWbtosgXMbp02+DtJ4FBCprAqZNkgd12huKyuBfXg5RFISi0M02AxRkJi5kugU1c+cMEQNq08A8pusBsXu8rC3RvMSCBfvZhOZyGMitfgOBiyiPooOKH0SQC6rQQN2kOqh0ZyDOIks5VWRWvwdBiyiUwlZkyblSkX8L4T8f6wG9RfXzOlwX3YJ7KNGQs3jCwaILG6FSC2+kAGL6DQ0f/fC/zCa/E8bHSG+bZZO/4DksCP9ntvgvmQWi0EUP7aK1OKzEu1Ls8mdzoiUEL6qeddLKR9FQHMH/rIdoQ/qAUOyOHRqFAWZ8++Dc+Y01oIovhQm5AUjtzudrsCmecM0KZ8FcFH3/67vOAz/CzUw9neySNRnqd/7LlL+499YCKJ45Hekirw8DwMW0QlIOV/xVQWuk1L+BkByj/9LukTw3d0IvbkDMmywaHRCtiGFyHnuSU5HJ4pXhhwp0ku2J9JX5iM4dEo6N8yt9G7yr5JSLug1XAGAKuC8bCiSfzIT6ki+5JZOLHXO9xiuiOKZUBPuNiEDFvWJXD7f5tk0b64QWAdgRp93sKJkJM+dDte1FYCLLX/Uwz6SlQHXOTNYCKK4/qEbQxPtK/OMRyflqbp7vNfwPweJKad35QI4ZhXDNj4HwRdrEd7YwqLSEe6LZwE2lYUgiuurdIxkwCLq+j2snWP3OrLuhCEfAuA44wuYTBfct06CbWMLgotrYbQHWGSCY+I4FoEo/o1KtC/MW4TUI9/Ge8/2OjI3QMqH+yNcdWefkIvkh2bCcW4RH7MgOEafxSIQxb+EW8Hi6Y2OIVfd4fYm2R+AEHcDGPD7NvrWtshIhwNeFj8RKQoK3/sLX3lDFP88SBmSJoRImCGJPKrRER0b5p7nTXZsgBBzByNcAYA6KhPJD5wNx6XlgMK8n3D5KjmJ4YooMaTAV59QTxKyB4sg185P8tp8P4HAPbEI3cKhwjV7FOwzCxF4vhr67g5ulEShsrmdKGEYYiSAhoS5gOQWT2yeDXMv9dr9tdFVq5juD2pJKpLvnwHXd8+CcPLES0QUX1fzidWHxRWsBNW2/vYMm3D8EgLXw0y9eIqA45Iy2CbkIbC4BlrNQW4sIqJ4oCTWk4RcwUpA3vVzv25XnJuFEHNg0gcdlFw3ku6cAvd/j4VI4YRvIiLLM8TYRPq6XMFKIJ0b784TsD0qIa+xxAcWgP2cItgqcxB4bQvCqxu5EeON4IMNRInze8fkRPq6XMFKlHC1ad5VAupmWCVcdf9Npjvgvm4ckm6dDCXLxY1JRGRN+dK7O2GeJOQKVpzzVN9TIDTlSSnltyy/s07IQcqocxD463aEPqgHDMkNTERkKeokAAlxO4IrWHGsc9O8q6Ap1RL4Vtx8KbcNru+ORvK906AUJXMjWx5vERIlFENMSpSvyhWsOOT//K4y3WZbCCm/ErfXQCMzkPyTmQi9vQuht3dBagY3PBGR+SVMwOIKVhyREsK7ad4cXbVVQeIr8f59hV2B88rhSP7x2VCHpXMHICJiwDLPOYrbOj4ENs0bpkn5LICLErIAhkTow/0ILN0KBDTuEFa5wsvMRP6fF7MQRAm0FgAtnCUyh7bH+xflLUKr76lyvuKrClynSfkbAInblKQIOGYVwzY2OzKgdDMHlFrjEo8PKhAl2q8edud0AP8X96clbmvr6twwt9K7yb9KSrkgocNV9x06242kO6Yg6cbxHFBKRGTKlQH93ET4mlzBsuK+uXy+zZsduAtSPgjAyYr0sGNPK0BKRTaCr29DaMU+FoSIyDTE+Qlxwc8NbS2eqrvHe7P8n0DKhxmuTvITTrbDdW0Fkm6fDCWbA0rNuZHYBkqUgM6WstrBgEWmINfOsXs2zZsLQ10DYAor0ne2cTlI/tm5cF42lI91EBHFnhsdaXH/NCEDlgX4Nt57tteRuSG6auVgRU6dcKhwfnskku6bDqUohQUhIoolVZzHgEUxI1fd4fZsuPdhA+IjSFSwImfONjwDKfNnwvntkRB27v5ERLE5wcm478PiGcakOjbMPc+b7NgAIeYCUFmRfr1ygvOyoUh+6ByoZ2WxHjEk2INFlKguknJtXD/qzYBltlC/dn6SZ8O9DysCKwCMYkUGcOfPS0LyPVPhurYCcPGBWiKiQby8SkNn4XQGLBoUng1zL/Xa/bXRVStum0H5jQOOWcVI+fm5sE/KYz2IiAbt+GvE9SvdeBI3gbb1t2d0brh3AQT+DqCUFYnBDyHDCff3J0YGlKbxOYJBTbhElKi//7gOWLwvEmPeDfdcLoXyDIAhrIYJfhDTCpAyJhuBpVsQ/riBBRlwfFUOUcIwDOhNLdD27I38s7t+RsPMaWsQ1soAZEGgAxI1gHg9HAw/X1ZV1cbLRzplnRvvzhOwPQrIa1gNc9KqDyKwuAZGq5/FGCBqTjbyXnuehSCKp8umsAZ9fwO0PfVH/9m7D9reeshQuK9/TCukvK1o3YZXGLCo7+Fq07yrhJRPAshlNUx+oAjpCP5lO0Lv7eFiCwMWEXU/Pvr90Pbu7xai6qHtrofWeADQ9X75KwD5o6K1G/6HAYtOyFN9T4HQlCcl8C1Ww1r03YcReL4Gen0ni8GARZRQjI7OowFqT33k9t7e/dCbWgA54FeeEkL8a9Gaz//MgEU9iq5aPQOAg5cse5SRCH2wF8E/b4cM6qxHfwSs3BzkLf0DC0FkhkNcpwfa7r2RELV7T2Q1qqERemNTrD9ao253DS9ZvdpS/Rpsch9g/s/vKtMV2yJI+WVWw+IUAcclZbCNy4H/hRroW9pYEyKyWIoyoDU2HV2N2r0vuiK1D9LnM+unLrSF/LMBvMCARZASwlc173pdykcBpLIicZSz8pORfM80hFbuQ+C1rYBfY1GIyFznoFAY+r6GaJDaC23Pvkijef2+U2k0N8/3EeJSBixCYNO8Yd5N8llAXsRqxKnogFL7xDz4X6mFtraJNTnNOhLRGQaphkZou/civDsapnbthVa/DzCMePqqI632gRmw+nNHl/MVX1XgOk3K3wBIZkUSIB+kO5B00wRonzfD/1It5OEgi0JE/c443NHj2AO9qSVRSmC5cyoDVj/p3DC30rvJ/xyA6axG4rFNzkPqmCwE/rodoQ/qAYMzHYjoNIJUD43m4d17YBxM+J7PfQxYCUYun2/zZgfugpQPAnCyIgnMbYPru6Nhn5wH//M1MJp9rAkRfZGuQzvQBG3Xnsgcqb31kVC1dz+kn4ONeybWMGAlEE/V3eO9hv85SExhNaiLelYWkh86B6E3dyD4zm6uZp3wmMkmLIrjC/BQGFp9tLl8d3SO1N566PX7IcN8OOZUSimEbrmJ7gxYp7Ol186xex1Zd8KQDwHgm4Hpi7nBrsD57ZGwTS9E4IVq6LsOsyhE8XpO8Pmg1TdAbzwQ743msarwy4VrNlYzYMU538Z7z/ZCPAcpx7AadDJqSQqSfzgdoff2IPjXHZAhDiglsiqjrf1og3nX6IM99dBbD7I4A5atsA1Q77DiR2fA6us2XnWH25tkf8CAuBuAyopQnykCjkvLYZucj8DiGmg1PBgTmfdgL6E3N0Pb0xBpMo8+raftrofRyVdlDXK42ijs8puFn6xrZcCKUx0b5p7nFfg9gFGsBp12zsp1I+nOKQiv2o/Aq1shvWEWhT1YFCu6Dq2hMdIbVb8v2mS+D9qefZCBAOsTWwch8ZjucP3aaq/HYcDqa3heOz/Ja/P9BAL3AFBYETrzQAHYzx0C27gcBF7ZgvCaA6wJ0UAex4OhaHP5vqO393bXQ29oYKO5OXQAqJNS1ECgVhhYXSjEJ2LdOstfgTJg9cKzYe6lXuFfCIhSVoP6PWelOeG+cTzs5xQi8FItjIMJesUsuYJF/bQreX3Q9rHR3MQXl20AdkKiRkpUQxE1NqjVeWvW7BJAXD5qzYB1nLb1t2fYhOOXELgefJEHDfQPcHwukn+ahdBbOxH8+644PcwQ9Z/ugzj1hkaEd+2Ftmcv9APNgOQPyAQaAVQDcicEaiREtR22zXlrEm+5ngGrG++Gey6XQnkGwBBWgwbtws6pwvntkVAn5CLwfA2MRg+LQglPbz0UCU6NTUcnmu/cA6OtjcWJPQ2QewGxEwI1gKiGIWrsLs/G3I+38EkABqyjOjfenSdge1RCXsNqUMx+jCMykPLgTATf3Y3QmzsgwwlwW4NN7gmeonToza0IRwOUHm06D+/YxYnm5hCCxHYoolpARm7vGaJadzprrNx8zoA1WOFq07yrhJRPAjKXuwPFnCrgvGwo7BNy4H+hBvoODqaaaEAAACAASURBVCgl65NhDfr+hsitva4VqT310HbtgQzxaVoTOAyB7YDYKSVqFGlUQ5E1BeWj6sRrr3F43+lePybqF/dU31MgNOVJCXyLuwGZ86wEhFbuQ2DpFiAQn8c4taAAeX9cxG0dJwyPF/r+xmiPVDRMsdHcTGf8NkjUALJaSrEzERrNYykhV7A6N827Cpp8RgJZ3AXIzJc/jlnFsE3IRfDlWoQ/b2ZNyBxBio3mZveFRnObEq7K/3RzE0vDgDUg/OvnletCLoSUX+amJ6tQMpxw3zIR9jUH4H+5DrIzFEchkidjM+tqNNd2R/7RG5sQ3rkbRls7ixPzA4OEkqbBlh2CLTcMNUODf3vKd1Cl/C2vuppPyjBgDQ4pIXxV867XpXwUQCo3O1nyxzqtACkV2Qi+vg2hlfu4oE/9Q9OhtxxtND/SH8WJ5ua4BlEllIxwNESFoeaEYMuJ/FvYjj0I2Kd0rHUtOcxwxYA1OAKb5g3zbpLPAvIibm6y/ME22Q7XtRWwzyiA//kaGM0+FoX6dqEZCkef0tt7ZBCn3niAjeYmobiMSJDKCUHNiYQpW04Iana4793SYU7uZcAajIOJnK/4qgLXaVL+BkAyNzXFE/WsLCQ/OBOhZRxQSscyOj3QGw4caTQ/0h/V1MJGc5MEKTUnFPknQ4OaE4I9JwwlPczR1gxY5te5YW6ld5P/OQDTuYkpXglHZECpbVo+As9XQ99jwfl+nIN1RkGqq9G8axCn1tAIvZF9zKYIUinakVt5tpxw9DZfCEoypx4wYFmQXD7f5s0O3AUpHwTg5OalRKCWpiH5R2cj+E4CDShNIMc3mkcmmu+G9PH2cOxT1BcbzdWcEGz5QQh7DJaVFa6BMWANAE/V3eN9WtsLQtMnSsUNCIVblxLoQB8dUDolH/4Xa6DXHmJNrKTXRvN6yECQ9YmxYxrNc0KR3qgMDWpuGEI10QWNwh4sBqx+FFqaMVFxOH9obFt8pTCCjsivQUDa02A4sgBHNqQzG4YjC9KexlsSFN85Kz8JyXdNRXh1AwJLtkB6zd28LBLs99hTozkHcZro99MfjeZEVg9YcgHsWnbGo4D8vtQCyjH7vpQQocNQQ4cB7Or267FBOrIhnVkwHNlH/t9S5d1EiqfLbcB+ThFsldnwv1wHbR17cgYbG83NH6S6Gs27wpQtQ4OSwacpKcEDllwOm3Yw/Q1Afu3UjnoaRKAJItCE7jcQpS0F0pkN6ciKhC9nDqQjHQBvM5KFc1a6E0k3T0B4YwuCi2thtHOm0UAEqeMbzcO798A42MbimCFI9dRonheCkhSnjeYa19kYsM50H2pN/zkEvtZff57QPBCaB/Du6fYfVUhHJgxnVnSlKxrAbEnca8hS7BNyYXsoA8GlWxH6eL+pRjrIsAVWDHQd2oEmaLv2QNu7H9re+kio2rsf0u/nDhbrCwlVQskKw5YdhpodXY3KDkHNCn9hECcRA9YJBP6SPhw67hj4I78OEWyFGmw99j+r7shtRWc2DHv0FqMjE1Bs3JvIvCehZDtc/1kJ+9mF8L9YA6PJHE+gGZ1e84S9UBha/T5oe/dFGs33RprM9X37IcMad6JY78MOA2pWOLIilR2C2vXkXroGKAxSxIB1xlQD1wOwx+xHrvshfPsB336oR/6rAulIjzTSO6NN9c4swMa38pDJfj9jspD84DkIvb0Lobd3QWqx7QeSfj/05laoeTmD93f6fNDqG6A3HmCjuQl9odGcgzj7fn7imAYGrDM7OuIr5vtQBkSoDWqoDfDsOPpRFUd0hSsbRvQWI/5/e3ceJMd53nf893b3zOxiZ0/sgsQhXiAW4C52SQmUrIuKIouOpUgUHRypiLJSiVOiJJedMJVKpVLliI6iqiiuSqVcldgu2YkdWrYDEWIgynQoW6REiiJpWtRBABRO4tgFQeLa2Zk9Z6af/NGzF7gkcWzP1d9PlUrQFkTuPG9Pz2+6n37ezGqZl+LIQ+1OwilPmU9tVHDHmmhA6cnxmv4+sz/bp9aPfnjl35UXx6JbeadGoxB1YiS6InXuPAdBPYT9jpL81UX5q+ee1IsCldfKIE4QsGrl5ob5IAtn5abOSFNnFl3tksxvk2W6ZeluWaZPYUufLN0lvp6hqh9wN7ar7bd+QTOPn9Ds3iM1G1A6+ZffufqAZaby66+rdGK00hc1Mj8/KsznWeSanwRNfldp6W29yp9dmtt6IGDVm5aGP+eUJ+QmJ6TJkUU/DCqhq3K1a6653m/hKEV8PKfMx25S6s7rNP2/D6h0oPpXd2Z/8pKmnnhKrR/50Jv/pXJZ5dfPqVSZITU/0fzoKzSa18VxdMlE895FQSpFkKriOvAtnYB1DeFEGjHp1qZbCSvJTZ+Vmz67dISEv2q+ryua39UbXe1iUj1W8rzc16pV/3qbZp8Z1czuQ1UfUJr7nd+ViiVl3nunyq+fXbgSNddwPjoqlbh1VPPzbzqMbuvNPanXOxs9vddVkhxBCrgkrzSW0p7O/2mmf5bwj0NZukthpltKdSts6VOY7pZSHRzRuPasPz6j6d2HVHz2VYqR1DMMjeYNKfTKA5l/VHiZShCwrkrxm50fUajvsnTLfDD6mfmZXWG6R9ZSaax3jJDAVXyZ+dlZTT/0ssILDCht2iBVGcS5OEwFvUV5WcZSNGTACsuDmV2FA1SCgHX1IevhzseklRs02uxLbKnOaGBqZnWlx6uHq124PNMlTT9yRLNPnJJCbgE1Zoqq9Ed1lRZ6o3pnFayZodGcgAUC1lL2Z+295bT3nEkbWcKrrKGXktJdClPdspa+yhONq2V+K8XBG5SPXNTUnxxQeHqCYtTrydy36EpUX7RJ8eIwxURzAhYIWJdt6pGum4KyfVPSO1nGFQxec/syZhZvis2+jJBUNs08flyze4/WfEBpok/amVB+d9RYPrdZcTRHikbzxAcs+VszOy7spxIErGsPA48pU5zs+rxk/8pJN7GcMfECWaqrMqF+blNsrnYl9iQ+mtfUHx9Q+ViOYsT5tmsJ5fdGT+rNhSkazUHAImBV3czu7IDzgvc6C4fk3JCc905Z2MMSxxhw/VXz+zLO9XZZultyPsVp+jO5afbpUU3vPihNMz7hmk7Cq9xsas1k4HUVvflG876ivDYazXFlyqFtatk1foRKELDiDwDn9+2ziWODNn5AKhyRFY7K8vul8gwrH9/3bimVVViZUm/p7oXghebLWeenogGl+9h+5q3fFk7e6hZ5a9vkb2iX622Vv8YfW+WeOCo/v40CYSUEYWmt2zVxhkoQsOIPWPmRr0j690t/WJJNn4kCV+6AbHx/9OepUUn0L8S2Fl5aSncuNNVn+qIrX+zL2BRKL5zR1Nd/LsvPJvuEGnhyfavkbcjK72uVt7ZN3rqsvPVZudRCH2Nq7MBz3tmn+yXjKjtWMGCl292uswUqQcCK/0N9/PQH5cKnL+svF3Oy/CFZ4ZCUPyTLH5QVjkhltuGI7+hzsqBdYWa1lF7UVJ/qkBxNJg33fpsoambPYc1+f6T5X2xrIP+6VfMByu9rlbc+K29t9i3Pqi6cLaRHv/UzTZ97P0cMVthEsD3X7hxXCghY1TjhmwUqjJyX3NUPfZo5KxvfH91eLByRxg/IJo5JxlNU8R2VfmV2V29lfESPrGUNTfUNovTSOU0/dEDh+cYfUOraUvLWZuWvb5PrjUKUvy4rr7f1is+ebmpkf2b0saxZeCNHCWLw09SO3B2UgYBVvZBVGPmWTJ9c0X9oWJRNnpRy+2X5SvjKH5Jm6UOJdS39tsqG2FF/V5iO/iyPSfV1t1azZc0+ekwzf/VKQ9x5d50Z+euz8tZVbun1tcrfkJXryKzECaPkn/n+M0H+4PslcU8cMb3p9HBqZ24nhSBgVe+Yy5/6Dcn9blX+ZVOvyiYORbcaxw9KhcOyieOS8TRQfEewH+3LWLnFODe/y/w2alMHykdz0YDS0XztfxnfyVvTJm99m/y1bdHtvbVt8tYu7Y9aUbMXRzIj/3dc5ZkBjgbE+2Fn/yG1c/zLFIKAVb1jbvz0FrmwdptfhiXZ5ImFpxjnm+pHOPriXHcvLUuvljLd8080hi297MtYk/eAafaJk5p+5EhVRjosaTRf2yZ/XVv0v9fHGKSWEVz48TP+uefvkBNpH9U46X0otfPi0xSCgFXd4y4/clLSO+rql5o9H13pylea6guHoh6vcJajMsbDPbra1TM/rT7M9EhBO6WpRs46P63Zbx9T8blXZbPXHrTm+6PWVa5Ezf13T2ttz2zlqQvpk3uOuFLhPaw6qmQyWJXrcR8XM4gIWFUOWIVTfyRz/7z+f9FLRkhMHJEKR2WFo2KERJxf/C4ZIZHulmV6ZX4LxYmj3hNFFX/4qkovnVX5yJhs5q3DltfVshCe1rXJvz7qk3Id6bp7bV7hyIup03+zXk7XsdKo3puK/isCVu0C1qdl7usN+wJKBdnEiShszTXVj78sFcc4guM8bi5tqm/pk6W7xD4lKyg0lU/mFeZmZPmiNFmUa0vJtafkOjLyr1sltdb/bV1npWn/1e8870+cvEts3IlqH3/OfSrYPvYtKkHAqv4H5eSp9Sq7Jmt6smg4av5gNLMrfzj689QpRkjE+o7xoyb6dGVfxsqfudqVXN70mSPByKOes/ItVAM1cCY4n7vB3a8ipSBg1SaOjI8cl1Pzz59ZPEJiotJYn9snzZ7jaI/z+PIzslSPrKVXYbpbSvcobOljX8ZmX/azP3g6GNv3C5IylAM1OQideyC9fey/UQkCVu0Owvzon0p2X2JXevr1ynT6aEq9CodkE69IISMk4nt3eQsjJBY11lvAQ2WNzivmT6dO7Xld5WkGO6KGH2x2OrCOW92uEbYcIWDVMmCNfF7S77Hki4tSqvR2XTpCgn0ZYy37ciMkMr0MTG0QqbF9z3rnntkiM3YwR20/wJ12BttzD1MJAlaNA9aJQcnfx5JfhlJelj8smzi68ERj/mX2ZYz7GPXbZC29UV9Xqjtqqk91sS9jvQhn8+nRb//ETb9+F8VAzc8XTn+R3p77J1SCgFX7g9HMqTB6VtJqlv0qze3LuHiEBPsyxvwOXbQv4/wIidXsy1jtZZg4uS9z+v91mMIbqAbqwL7Ad3e5XxnjUXICVp2ErDj2JUy6UkFWOLwwMLUyNFWlArWJ81gOslHQSvfIWlZHw1PTXWJCwEoXulwKXv3r5/yJ4++TxBMLqP0hKR1PhcEH3a7zo1SDgFU/B+b46L+Vs6+y7FUwc1a2uLdr4mg0SoJJ9TG+mz1Zqkthpluau8XY0su+jFfJmzl3LDWyd0Zh8TaqgTrx48D597jtF9hrjYBVZwErP/IRSd9l2WukPFMJXYeipxjntgqavUBt4jzu/VUL87oq2wNZupsREm/BP/+3zwcXXhyStIpqoE4+rL/mh+3/kicGCVj1+UEzdqJbvn9ejOKuL8XxKHiNH1h4ojG/XyqzrVZ8PCmVnX+K0dLdC8ErySfE8tS51Mk9x9hHEHVkzJl9Idg5/heUgoBV3yErKQNHG36h2JexJmW/dF/GTF/U6+Wlmj9y5o/8KPXadzfIjH0EUSdvSD0ReP4/5ZYgAasxjtf8qUckdy9L36BKhejW4pIREj+XypPUJs73zXIjJJpkX0Zn5anU6F++4KZO3yWubqNOznQy95Vg/9h/dA+Kx7QJWI0SsEa/JNmDLH2TmRshUTgqKxyRxg8wQiL2s8eiERLp7ih8tfTJ/AZqW5p89eWW099uMSvfzIKiThw0p0+nt+depBQErMYKWOOj98jZXpY+AZbdl/ElafY8tYnzPbZoX0bL9EV9Xunu+ppUbxb65575QTC2772S0qwa6uKwlHsoFaa+6HadZc4NAasBD+DJ0XeobCdZ+gRbboRE4QhN9bGead44QiJMd0upjur/KqXx0dSJPedcOHM7C4M6QSM7AatJQlZ+5KykXpYf88KSbHK5fRnpLY31vVjlfRkr+wjeJrMuqo868WTg/M/SyE7AapaA9TeSfpHlx9tadoTEAak8TW3ifI/ON9UvGiFxLfsylmfG06f3vuSmL3yA6qJO0MhOwGrKgPU/JH2B5cfVHUBl2fSrbxwhQVN9vGX3UlK6a2GERLpblumV+S1v+f/zJo79OPXqX18vs7VUEXWCRnYCVpOeqAsjD8j0X1l+rOz30coIifzBRZPqD0vlCWoTp1S7wnSPwpY1stZ1ClvWRFPqrVxMnXn8Ba9w8r1ik0bUz4fu1/zJlgfcZ1/jxEDAasKANT7yCTk9yvKjCkebbGpUyh9c2Boof0g2dUqyMuWJo+J+i2zVDRe9wrGzslI/FUGdOO/MfS7YOfZNSkHAauaA1S+ngyw/ambZERL7pNlz1AZoPjSyE7ASErDscEaF1ikxtRn1hn0ZgWZCIzsBK4EhKz/ymqQ1HAKo/4O1JJtYboTEqNiXEajbD9dXLAzvS+3KP0s1CFhJC1h/J2kbhwAa97txXpY/fMm+jC9L5SlqA9Ty84WJ7Eh2wGLTZzQp9mUEaiXnzD7PRHZIUpDcl+7OsPxoSpk+ub4Py/V9eOFn5QlZ4Xg0rytfCV/5g9LsBeoFrIyokX0HjexIfMASnyxIDr9NrnNQ6hyU0z0LP19uX8b8YSmcpWbA5aGRHQSsJZy7KKNBGAmX6ZPL9Mmtft/Cz5bZl9HG90szZ6kXsPhjhEZ2ELCWEeoiQxqAZXiBXHajlN249C3CCAlgnsk9FNDIDgLWcl89LMfyA1cg1SHX/S657nct+pQpyabPvHFfxsJRMUICTSrnzD6f2pmjkR0ErOW/fnglOW6XA9f2RSWQa90gtW5Y2lQ/ty/jkhESP5fKk9QMjYxGdhCw3l5YYvmBuM4s2Tde7ZIYIYFGFTWy29iX3S6xiSgu7/tnUl+4TZz6mEL3GIcAUOvvOsvty/iSNHue2qAePiRpZMfVfc9M7Cs3C9mKEKgDXmr5pvrlRkgUjtBUj+p9TNDIDgLW1bxzvHaWH6hjy46QKEYN9PlDsolDsvPPR081AivrgpM+l9oxtodSgIB1xQHLtcvxlBPQULyUXMcWqWPL/NUue+07Ku/7LanERQasiKiRfTuN7LjG01ViX7kLuYIFNMNb+bpfkn/n16QgSzFwLYoy/btgX+6jhCushCTvRbiG5Qea5N3cOSx/65dV/skDFANXfvzQyI4YJPgKltax/EATvaWv+yW5dfdQCFzZceP0h/5kyxDhCistyT1Y65g0DTQXf9MDKr32OE8a4nLknOwLwfbxP5fY2AMrz0vwa9/A8gNNpmWNvA07qQPezpOB87cGO8b/nFKAgLWCzMyTbCPLDzQft347RcCbKcncbwdh7m4a2RG3ZN4izJ26Wb7XwvIDTRiw2vvl2jfJ8ocpBhaOCxrZUWXJvEWYcptZeqCJP0xXf4giYJ7JPeSH6WHCFaopmVewjIAFNHXA6tpKESBVGtlTO3L0WoGAVaWvM1tYeqCJdQxQAzCRHTWV1KcIuYIFNDGX7qMIyUUjO+pCUudgcQULaGZ+JvoP87CSFaxpZEcdSdwVLBs/3SvpOpYeaPaQxd6ECQtXf8REdtST5F3B8svvVuhYeQBoDtFE9h1MZAcBq7ZCdyfLDgBNgUZ21K0ENrnbNpYdABoajeyoewlscnfvZtmBRLzXKUFzruorZuFnUjvzP6QaqGeJuoJlhVeul7SOZQeABjyHz01kJ1yhASTrClaYfo+cseoA0FiYyA4CVl1z4TZuGwBJeb9TgiZBIzsaUrKa3M17D0sOAA2BRnY0tMRcwTIzX4XR97HkAFDfaGRHM0jOFazJ08OSOllyIEEf02i8L8M0sqNJJKcHKww/yAkXAOoWjewgYDXot9m7WG4AqEs0sqPpJKnJ/QMsNwDUFRrZ0bQScQXLxk5uFANGAaBu0MiOZpeMK1iex+1BAKiXL700siMBktGD5elDYoA7kCyOh1rqEI3sIGA12delj7LUAFBTNLIjUZr+FqHlXx2Q9A6WGgBqgkZ2JFLzX8Fypbtl3CoAgKqffmlkR4IloMnd3c0yAwn9eEfN0MiOpGvqK1hm+9Mq6O+xzABQNTSyA80esFToeJ+kLMsMAFVBIztQ0eS3CLk9CCQXtwiriEZ24BLNfQXL6W7mXwFArDGWRnZgGU17BcvGTnTLtI0lBoCYzrM0sgNvquGvYNlupct+xw6Tu1dmAzJ1y7lzpWc+Memt/6Tv2jdL7ZvlWteLWwZAgjDJPcba6qKTPpfaPvYwxQDe7G3SwIrf6PxF5/T7Jt36tn/Zb5PL3irX3h8Frvb+6M9BO0cB0IRKT90tTZ2mECvve0Hgf9bde+EUpQDeXMNewZrd0/lrMv2+Xe5rKE/Icj+V5X669Oet6+Sy/XLZTXIdm6XsJrm2myQXcHQAwKLvtHL6UvBS7qvuQYWUA3hrDXkFq7in6+/L7DuxBUQvLZe9VWrfJJdddLUrvZojBmgQXMFaUYfN2X3p7eMvUArg8jTcZRrbLb9k9t9j/d3DWdn4AWn8wNKHEFMdcm23ynUOSNlb5do2ynUMSH4LRxKApmRyD6XC1BfdrrMFqgE0ccAqu65PSXZbTf7lxXHZ2IuysRcXfuaC6JZi5Rajy0ZXvdS6lqMLqGkyoMn9mjhddKHuT+0c+wbFABIQsOTs4/V1Ei/JCkekwhHZmb9aVNn2yq3FzVLlFqPLbpL8VRx1AOrd9wLf/6zbTiM7kJiAZU4DDTE8tJSXXfyR7OKPlv480yfXMSiX3SjXdqvUOVhpqvc5GgHU/Mwlc18JbOzL7l6VKQeQoIAls46Gni4xc1Z29nuys99b+JnfunSERLbSVJ/q5AgFrpJzjo0crkzUyL4jRyM7kMyA5V6T02BTrUJ5SpZ7SZZ7aenPFzXVu/ZBKbsxerrRz3DkAli50yqN7AABS04vSvpIIlZnuaZ6LyXXdktlWOrCGAll+jiaAVzp+ZRGdoCANfdNS//HSf8msSsWFmX5g1L+4NLbH+luufboKUa190fBi6tdAN48XH0/8P1fpZEdiOst1oCK3+jYK+fuYfkuw1xTfaWxPprfdbPkPGqDplZ+6h/IpkYoxBstNLLvopEdIGAtYrtXry95peclrWcJr0KQrTTSb1p0q7FfCrLUBgSs5sZEdoCA9dZmHu4Z9FV+1KSbWcYVOhhaN0QDU+fnd22SW3UjIyTQoAHrl2VT3P2af387/S+/nP5NGtkBAtbbst0dPSXP+5Jk90ui2SgOfiYaIZGtDEzNborCV7qb2oCA1Rhn+Ysu1P3BzhyN7AAB6wqD1tc7u8sZ3W1yH5BsSNKwJHZmjlOmrzKdPrrFqGx/1OPlpagNCFj1c4aPGtnvpZEdIGCtYOgqpbxB82ybJxswuUHJtkliZ+bYjqZAruX6qJG+Y3BhU+zW9c18qIGAVY9oZAcIWFUMXU8qmD3fs9m3chS4nLY52UClj4sEEJe5pvq5pxg7BuQ6trAvIwhYcZznpOPOwvtSO/M/5CgACFi1PSE90tVVKrqt5ocDztygpG2S3SGpjerEaNl9GRkhgRUKWE9/TDZ5MmHhionsAAGrEU5We3vXlYvlbWbhgDk36KLgtUUSCSAuXip6crFjYCF8tfdLaVrqQMB6Cznn7IvB9vE/Y+UBAlajhq724kyx33Nu0Jy2STYg6XZJ7FUTp0xf5WnGjQv7MrZvkrw0tUGyA5bTs6Wy7mvdlXuFVQcIWM0YvNaVSsUBq9xidM4GZNoqxkfExwvkVt0Uha3KpthRU/0GagOVn/64bPJEM79EGtkBAlZCQ9cfKDW7uqd/cVO9otuMa6lOjFIdSwNX20a5jgHJ5wFSAlaTnFuk486Fn0ltzz/DSgMELMydHJcfIfEuSa1UJ64j/ZIREnNPNGZv4W1AwGqwcEUjO0DAwuWfNJ9UMHOh84bAvEEz2ybPBmRuULLbWKcYBVm5thulto0LTfUdt0mpLmrT8AHrH8omjzfTS6KRHSBgYcWC1+7uzpI0dMkIidslsTNznJYdIXET+zISsGp1pn62LH2mZXvuGCsLELAQZ/BihET1LR4hMfdEY+dWKd1LbQhYcaGRHSBgoeaha7fSs17PJt/CbbZwi/E9ktZQnRgtaqqfHyGRvVXyeYC0pgHrB5+QTTTu5AIa2QECFur9RL38CIlBsS9jjO+sILql+IYREuzLSMC6nHBFIztAwEJjnsCXGSFR2ZfxFqoTo6BdLrvpkn0Zb5N8HiAlYEmikR0gYKFJg9fy+zK+UxI7M8dprql+8QgJ9mW8xoD1SdlEA/WE08gOELCQsNC1W/6M33njMiMkaKqPk98ml71p6QiJ9s1SuofaNFfAopEdIGABi4LXn/Z0FNPlTUv2ZXS6QyYeq4sT+zI2TcCikR0gYAGX/6FxaVN9dJtxsySGSMVlbl/GxSMkOgalTHL3IC//4B7ZxNE6Dlc0sgMELOBaP0yWHyFxp6TrqU6Mlt2XcTARIyTqOGDlnNmvBzvHv84BChCwgHiCF/sy1uBdn4x9GesyYNHIDhCwgJqFrj9Qara7e4vvysPmuSGFul1OQ5LWU50YpTrk2vvlspul9n659s2VgamNmXXLT/2ybOpUvfw6RZkeDCz3VRrZAQIWUF/Ba/l9Ge+Q1EZ1YrTsvoz1P0Ki9MT7pWKu9sctjewAAQtouND1oLyZrR0bA+duN3NDkg07adikmzm+Y+Sviprp2zdL7Zvk2rfIZTdJqY76+P3KMyp9992S1fZikZP9sZ9K/6b71Lk8Bw1AwAIaP3jt7W0vzhT7l4yQkG6X1Ed1YrTcCIka7MtouZ+q/Nyna1kJGtkBAhaQoOC1p+vGclgeMs8bMtPtTm5Isn5JAdWJiZeKQlb7Jrm2frmOzXLZfikT37i08PifKDz4X2r1ip8KQu9X3a6LJ1l8gIAFJDd0LbMvo6L+rrVUJ0bLLetg+QAAA7xJREFUjpAYkPxr34O8/Ox22fjPq/2KmMgOgIAFvG3w2tt2XakcDMvcsFk45OSGJQ1IylCduM5IgdyqGyt9XZvl2vujP7dc/gOkdv45lf/u16p9Ij0ShnZfetf437KIAAhYwJWGricVzJ7v2exbacjkhiU3bM6GnHQD1YlRkL1khER/tD2Qf8kDpKWCys/+Y9nk8SqeRGlkB0DAAuIJXo90dZVCDZuFQ57csEnDkrZKylKd+E5frnW9NHelK9MnG9ldzVuDY066P9iR281aACBgAdUMXnt715WL5W1m4YA5N8i+jE3jubLTfUxkB0DAAuoldC23L6PZu+V0HdWpezSyAyBgAQ0VvBbtyyhpm3M2INOgpBaqUwfrw0R2AAQsoEk+1JcZIeFkAybdQnWqGa7cQ6lU8Os0sgMgYAHN/IH/SFdXqei2si9j7JjIDoCABSQ+eM031ds2zfV3ybZI8qjOFaORHQABC8Cbhq437svodIdMvVRnWTSyAyBgAbjq4LWuVCoOWOUWIyMkaGQHQMACEEfAmG+qXzRCQnanpOsTcDb8RuC5z7lfGRvjSABAwAIQf/BaNELCk0VPNMreJam1CV7euDP7Io3sAAhYAGofup5UMHOh84bAvEEz27ZohMTNDXRuoZEdAAELQAMEr90dPSXnDZu3aF/GaGBqPY2QMDn3n4Ly2G/TyA6AgAWgMUPXg/JmtnZsDOSGTW5YZkPOabgyMLXa56ExJ/2LYEduDysDgIAFoPmC1+6+bNGf2Sq5Yc/csMmGJA1L6orp37g3CILfcPdeOEX1ARCwACQseHXfUHalYfO8ITPd7uSGJOuXFFzNP06mx2XuP6d2jX2f6gIgYAHAXEp6TJniVOegZ27IrHKly2lA0vpl/vpZSS/IuScC6WG3fewEFQRAwAKAyw1ej65bNTM7cb0zv9VceSpT9s67XRdzVAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVtb/B3zmIf0zr5FiAAAAAElFTkSuQmCC ---kuwaotbok-- \ No newline at end of file +--kuwawt36h-- \ No newline at end of file diff --git a/src/bot/Customize_Kuwa.bot b/src/bot/Customize_Kuwa.bot new file mode 100644 index 00000000..cad2f572 --- /dev/null +++ b/src/bot/Customize_Kuwa.bot @@ -0,0 +1,23 @@ +Subject: Exported bot "Customize Kuwa" +Content-Type: multipart/related; boundary="kuwa3e7ro"; type=application/vnd.kuwabot +Content-Transfer-Encoding: quoted-printable + +--kuwa3e7ro +Content-Type: application/vnd.kuwabot; + +#! +KUWABOT version 0.3.3 +KUWABOT name "Customize Kuwa" +KUWABOT description "Customize the Kuwa Web UI by uploading components." +KUWABOT base "uploader" +PARAMETER uploader_dst_dir "/custom" +PARAMETER uploader_succeed_message "Custom web component uploaded." + +--kuwa3e7ro +Content-Type: image/png +Content-Transfer-Encoding: base64 +Content-Location: /bot-avatar + +iVBORw0KGgoAAAANSUhEUgAAA8gAAAPICAYAAAAFUtICAAAA0GVYSWZJSSoACAAAAAoAAAEEAAEAAADIAwAAAQEEAAEAAADIAwAAAgEDAAMAAACGAAAAEgEDAAEAAAABAAAAGgEFAAEAAACMAAAAGwEFAAEAAACUAAAAKAEDAAEAAAADAAAAMQECAA0AAACcAAAAMgECABQAAACqAAAAaYcEAAEAAAC+AAAAAAAAAAgACAAIAM4CAAATAAAAzgIAABMAAABHSU1QIDIuMTAuMzgAADIwMjQ6MDg6MDkgMDI6MTk6NTIAAQABoAMAAQAAAAEAAAAAAAAAgTgXawAAAYRpQ0NQSUNDIHByb2ZpbGUAAHicfZE9SMNAGIbfpkqLtAjaQUQkQ3Wyi4o41ioUoUKoFVp1MLn0D5o0JCkujoJrwcGfxaqDi7OuDq6CIPgD4uzgpOgiJX6XFlrEeMdxD+9978vdd4DQqDDN6okDmm6b6WRCzOZWxcArgjQHEMaozCxjTpJS8Bxf9/Dx/S7Gs7zr/hxhNW8xwCcSx5lh2sQbxDObtsF5nzjCSrJKfE48YdIFiR+5rrT4jXPRZYFnRsxMep44QiwWu1jpYlYyNeJp4qiq6ZQvZFusct7irFVqrH1P/sJQXl9Z5jqtESSxiCVIEKGghjIqsBGjXSfFQprOEx7+YdcvkUshVxmMHAuoQoPs+sH/4HdvrcLUZCsplAB6XxznYwwI7ALNuuN8HztO8wTwPwNXesdfbQCzn6TXO1r0COjfBi6uO5qyB1zuAENPhmzKruSnJRQKwPsZfVMOGLwF+tZafWuf4/QByFCvUjfAwSEwXqTsdY93B7v79m9Nu38/XhZynhmXdJ8AAA14aVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA0LjQuMC1FeGl2MiI+CiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiCiAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICB4bWxuczpHSU1QPSJodHRwOi8vd3d3LmdpbXAub3JnL3htcC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgeG1wTU06RG9jdW1lbnRJRD0iZ2ltcDpkb2NpZDpnaW1wOmQ5ZGMzNmEyLWNhMDUtNGQ0Zi04YmMxLWZmNDkzNWMxM2NkYSIKICAgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4ZGNjM2JmMi1iY2ZmLTQ5Y2QtODFmNi0xOGQ4N2M0ZDcwNmUiCiAgIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpiNDkyNDczNC0zN2E1LTRmNjEtOTQyYi01MTg4ZmVmMmM3MDIiCiAgIGRjOkZvcm1hdD0iaW1hZ2UvcG5nIgogICBHSU1QOkFQST0iMi4wIgogICBHSU1QOlBsYXRmb3JtPSJMaW51eCIKICAgR0lNUDpUaW1lU3RhbXA9IjE3MjMxNDExOTQxOTQyOTIiCiAgIEdJTVA6VmVyc2lvbj0iMi4xMC4zOCIKICAgdGlmZjpPcmllbnRhdGlvbj0iMSIKICAgeG1wOkNyZWF0b3JUb29sPSJHSU1QIDIuMTAiCiAgIHhtcDpNZXRhZGF0YURhdGU9IjIwMjQ6MDg6MDlUMDI6MTk6NTIrMDg6MDAiCiAgIHhtcDpNb2RpZnlEYXRlPSIyMDI0OjA4OjA5VDAyOjE5OjUyKzA4OjAwIj4KICAgPHhtcE1NOkhpc3Rvcnk+CiAgICA8cmRmOlNlcT4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii8iCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NTM5YzY3ODgtNThkMy00MTU0LTljMGMtNWVkMDAyMjA3ZDE0IgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJHaW1wIDIuMTAgKExpbnV4KSIKICAgICAgc3RFdnQ6d2hlbj0iMjAyNC0wOC0wOVQwMjoxOTo1NCswODowMCIvPgogICAgPC9yZGY6U2VxPgogICA8L3htcE1NOkhpc3Rvcnk+CiAgPC9yZGY6RGVzY3JpcHRpb24+CiA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4UkMR5AAAABmJLR0QAIQCWAPPYyNovAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAB3RJTUUH6AgIEhM2cvDzdAAAIABJREFUeNrs3Xdc1YX+x/HPOYfDEkHcmubImQNn7pUjZ5qrbFiZpVk2bI9b1r2VpZliijlIwT1SSYEQRRwooggKigNQQUQFZB844/v9/XFvv9u9t+FA/Z5zXs8/e/ToES+P8H3zXTpVVWsIAAAAAABOTk8CAAAAAAAYyAAAAAAAMJABAAAAAGAgAwAAAADAQAYAAAAAgIEMAAAAAAADGQAAAAAABjIAAAAAAAxkAAAAAAAYyAAAAAAA/CkXEgAA8OeKi4v1yamplS9fveptVW2G6wVFPlabzcVkNleyWK3uVpvN3Wy1VlIUxcVss/moquJitdkq//a/oSiKmyKq+3//t6021UdE1f36r7kY9IX//e/oRVem1+vL/+MHuMFQpNPpra4GQ4Fer7e6uriUGF0MJheDS7mHq2uJi8Fg9fWpXOBqMFp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 + +--kuwa3e7ro-- \ No newline at end of file diff --git a/src/bot/Upload_Tool.bot b/src/bot/Upload_Tool.bot new file mode 100644 index 00000000..d6cf8c10 --- /dev/null +++ b/src/bot/Upload_Tool.bot @@ -0,0 +1,17 @@ +Subject: Exported bot "Upload Tool" +Content-Type: multipart/related; boundary="kuwaxyfpe"; type=application/vnd.kuwabot +Content-Transfer-Encoding: quoted-printable + +--kuwaxyfpe +Content-Type: application/vnd.kuwabot; + +#! +KUWABOT version 0.3.3 +KUWABOT name "Upload Tool" +KUWABOT description "Augment Kuwa with a new program/tool." +KUWABOT base "uploader" +PARAMETER uploader_dst_dir "/bin" +PARAMETER uploader_succeed_message "Success! Your tool is ready to go." +PARAMETER uploader_bot_template "KUWABOT name 'Tool ({{file_name}})'\nKUWABOT base 'pipe'\nKUWABOT description 'Created by \"Upload Tool\"'\nPARAMETER pipe_program '{{file_name}}'" + +--kuwaxyfpe-- \ No newline at end of file diff --git a/src/bot/calculator.bot b/src/bot/calculator.bot index 3121fb09..3597b211 100644 --- a/src/bot/calculator.bot +++ b/src/bot/calculator.bot @@ -1,5 +1,4 @@ Subject: Exported bot "Calculator" -Date: Wed, 07 Aug 2024 06:16:08 +0800 Content-Type: multipart/related; boundary="kuwa207xj"; type=application/vnd.kuwabot Content-Transfer-Encoding: quoted-printable diff --git a/src/multi-chat/public/images/custom-kuwa.png b/src/multi-chat/public/images/custom-kuwa.png new file mode 100644 index 0000000000000000000000000000000000000000..5565230d1623c632f283705c3f0c6c6f39c2af39 GIT binary patch literal 51084 zcmagGbySpH*f)9;q9}q*2s#LgfPj>=fG8>5t#n8;AYD>Q3?Lv#DP4m!45@TWj&#=y zoziCyKIi-1cbz|uYq^A(eeZqc@2Y(ptRN?G^)l6E2!gIkNxoEqAc9uh-%CW`lM70H z_~0L6TS-j^2qJC3{l#ms$ua^TQaZlUa8$N2addubZwxs*JF}WwTRIrNwKZn7u{Zs? zCP)QAFi7g9sLK0D`QtH3pLdomqZrm5X-FXvE1cvEw90*bcgBzQN@Ge} zI<~baEx&4}uD4}X=9#k&$LOD##LGy-$M2@@$vAyADw8z%6f*uuUpur!Gilr;b%fsV z*`Tb<(Z*o#&3#nZ1!&5Q9f1e=z_(IF&97pItXM3=%ln8UuZFhN{+V8KCO}fnldjuXnfS`(c5h92;`Zg&~jAMIwolBBj z;ojug3H_!>+xs2=w9sa=)U?prv)%QFRyxWmCB0Tu5G(?BHaBv7>gR5Mf8WT#P+4qd z*-*T4=t_2^+#q`YFaG4=3y!nMl{%vm#i6|YwDP^R(Q?ld!*Gvzep2Y#B(NNBi|tkO zAM6VxhVR_4SQ5%oa)zH-_w-vW5;u1;N=*_=_qslt?R4Gl&+x$TlR($*3X5H%yP#1v^7iLiG@ z9UYu`jv0AE%HpfWpBZy+p{+!2e~)~Q804qimX|sUk?!cYe1)fqlmH?mC!mBjY!U;= z&OD8|Mw%o|+rE%SuELg&kX7CmJHbY3Z6m5`T1mGqv$z?yf0oygz=M2!fbA1A(cQ?7 zrHB9BGy3Do->*^XJbq!|8MB8)-s!=rRB@?OTm1L$Y&y<(ki~s)#EtqU!DZ@`NEh%m5o%1r*RMMF zE*nds1|%2TmIOEXA5Lkk#0)acng_3A{aww?Wn3;%K#lhS`;9(Meiza5QnEs$6b?y7 zJ<*OyX?zu!qK8P2qwZZnU5k9y=mA9%1K83t zs#J1!eYOE9Y1h-zwkT&5DL$kU3fAL&{?F+zO2ty8$}~Of7s&&p9FG1>xDi@gVlYy2 z8LbF;pEZgQd3(2B4wR256bfY@H->*p3qXE_2ENdUA67+c()VcpaBcs*uX7O(0+uoL zT24-GX?3BiC!(;XuJYaCYqTtsFl-j0_hYCt)OvK!eRyYi9_a_ct^?amxdW$S|L$UJ zJpW1@Lzh}R^O>UlY=kAZNiBX>Q@}>mZu1dZ6hb@(8!PyA{wdTODzh@BoLsjGU1f|5 ziwwcCLhKFFt_|&-`|e(An85pb)(6v9Aqx_q)tuq-SUGL;6r+OAj@8&lke%Vzyrd}h zhdLjxLWAKz0E6cOTRS;osW3kNC0IjLl1|09uSlcc4r zvg41XfU>LsRdx@Vsh{_6I~JFs)Rbrd?bkB*?xqgc7Dx=;AwLUMHikBR!I29%|Iq;c zGcWbl^7AU{B6OpZ$a43kG}qyukLLYlRbhDEhCmb7ifbLTj+Le0y8Dob@2m=?NGFaI zM#>1u8pLKn6!�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 Date: Fri, 9 Aug 2024 16:03:26 +0800 Subject: [PATCH 083/105] [execuotr] fix: strip the parameter --- src/executor/src/kuwa/executor/modelfile.py | 4 ++-- src/multi-chat/public/images/custom-kuwa.png | Bin 51084 -> 0 bytes 2 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 src/multi-chat/public/images/custom-kuwa.png diff --git a/src/executor/src/kuwa/executor/modelfile.py b/src/executor/src/kuwa/executor/modelfile.py index 101c1717..63d3a7ba 100644 --- a/src/executor/src/kuwa/executor/modelfile.py +++ b/src/executor/src/kuwa/executor/modelfile.py @@ -50,9 +50,9 @@ def extract_text_from_quotes(text): """, text, re.DOTALL | re.VERBOSE) if match: - return match.group(2) + return match.group(2).strip() else: - return text + return text.strip() class ParameterDict(dict): def __missing__(self, key): diff --git a/src/multi-chat/public/images/custom-kuwa.png b/src/multi-chat/public/images/custom-kuwa.png deleted file mode 100644 index 5565230d1623c632f283705c3f0c6c6f39c2af39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51084 zcmagGbySpH*f)9;q9}q*2s#LgfPj>=fG8>5t#n8;AYD>Q3?Lv#DP4m!45@TWj&#=y zoziCyKIi-1cbz|uYq^A(eeZqc@2Y(ptRN?G^)l6E2!gIkNxoEqAc9uh-%CW`lM70H z_~0L6TS-j^2qJC3{l#ms$ua^TQaZlUa8$N2addubZwxs*JF}WwTRIrNwKZn7u{Zs? zCP)QAFi7g9sLK0D`QtH3pLdomqZrm5X-FXvE1cvEw90*bcgBzQN@Ge} zI<~baEx&4}uD4}X=9#k&$LOD##LGy-$M2@@$vAyADw8z%6f*uuUpur!Gilr;b%fsV z*`Tb<(Z*o#&3#nZ1!&5Q9f1e=z_(IF&97pItXM3=%ln8UuZFhN{+V8KCO}fnldjuXnfS`(c5h92;`Zg&~jAMIwolBBj z;ojug3H_!>+xs2=w9sa=)U?prv)%QFRyxWmCB0Tu5G(?BHaBv7>gR5Mf8WT#P+4qd z*-*T4=t_2^+#q`YFaG4=3y!nMl{%vm#i6|YwDP^R(Q?ld!*Gvzep2Y#B(NNBi|tkO zAM6VxhVR_4SQ5%oa)zH-_w-vW5;u1;N=*_=_qslt?R4Gl&+x$TlR($*3X5H%yP#1v^7iLiG@ z9UYu`jv0AE%HpfWpBZy+p{+!2e~)~Q804qimX|sUk?!cYe1)fqlmH?mC!mBjY!U;= z&OD8|Mw%o|+rE%SuELg&kX7CmJHbY3Z6m5`T1mGqv$z?yf0oygz=M2!fbA1A(cQ?7 zrHB9BGy3Do->*^XJbq!|8MB8)-s!=rRB@?OTm1L$Y&y<(ki~s)#EtqU!DZ@`NEh%m5o%1r*RMMF zE*nds1|%2TmIOEXA5Lkk#0)acng_3A{aww?Wn3;%K#lhS`;9(Meiza5QnEs$6b?y7 zJ<*OyX?zu!qK8P2qwZZnU5k9y=mA9%1K83t zs#J1!eYOE9Y1h-zwkT&5DL$kU3fAL&{?F+zO2ty8$}~Of7s&&p9FG1>xDi@gVlYy2 z8LbF;pEZgQd3(2B4wR256bfY@H->*p3qXE_2ENdUA67+c()VcpaBcs*uX7O(0+uoL zT24-GX?3BiC!(;XuJYaCYqTtsFl-j0_hYCt)OvK!eRyYi9_a_ct^?amxdW$S|L$UJ zJpW1@Lzh}R^O>UlY=kAZNiBX>Q@}>mZu1dZ6hb@(8!PyA{wdTODzh@BoLsjGU1f|5 ziwwcCLhKFFt_|&-`|e(An85pb)(6v9Aqx_q)tuq-SUGL;6r+OAj@8&lke%Vzyrd}h zhdLjxLWAKz0E6cOTRS;osW3kNC0IjLl1|09uSlcc4r zvg41XfU>LsRdx@Vsh{_6I~JFs)Rbrd?bkB*?xqgc7Dx=;AwLUMHikBR!I29%|Iq;c zGcWbl^7AU{B6OpZ$a43kG}qyukLLYlRbhDEhCmb7ifbLTj+Le0y8Dob@2m=?NGFaI zM#>1u8pLKn6!�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 Date: Fri, 9 Aug 2024 23:40:03 +0800 Subject: [PATCH 084/105] [multi-chat] fix: hide private bot from others --- src/multi-chat/resources/views/store.blade.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/multi-chat/resources/views/store.blade.php b/src/multi-chat/resources/views/store.blade.php index 17903010..f9a4596d 100644 --- a/src/multi-chat/resources/views/store.blade.php +++ b/src/multi-chat/resources/views/store.blade.php @@ -107,7 +107,8 @@ function sortBots($bots) $group_bots = $group_bots->where('group_id', '=', request()->user()->group_id); } $group_bots = sortBots($group_bots); - $private_bots = sortBots($bots->where('visibility', '=', 3)); + $private_bots = $bots->where('visibility', '=', 3)->where('owner_id', '=', request()->user()->id); + $private_bots = sortBots($private_bots); @endphp @if (request()->user()->hasPerm('Store_read_discover_system_bots') && $system_bots->count() > 0) From f49ef322f24714f4ea328adc1fc17cb8425c5bd1 Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Sat, 10 Aug 2024 02:20:49 +0800 Subject: [PATCH 085/105] [tool] add: syntex check to calculator --- src/tools/calc.py | 75 +++++++++++++++++++++++++++++++---------------- 1 file changed, 49 insertions(+), 26 deletions(-) diff --git a/src/tools/calc.py b/src/tools/calc.py index 06f87fdd..11624075 100755 --- a/src/tools/calc.py +++ b/src/tools/calc.py @@ -4,22 +4,40 @@ import math import operator import ast +import sys + +class MathSyntaxError(Exception): + def __init__(self, message:str, node:ast.AST): + super().__init__(message) + width = 1 + self.message = message + self.node = node + self.offset = self.get_offset() + self.end_offset = self.offset + width + def get_offset(self): + if isinstance(self.node, ast.BinOp): + return self.node.right.col_offset + else: + return self.node.col_offset+1 + def __str__(self): + return self.message def safe_eval(s): """ Evaluate simple arithmetic expressions safely. Ref: https://stackoverflow.com/a/68732605 """ - def checkmath(x, *args): - if x not in [x for x in dir(math) if "__" not in x]: - raise SyntaxError(f"Unknown func {x}()") + def checkfunc(node, x, *args): + supported_func = [x for x in dir(math) if "__" not in x] + if x not in supported_func: + raise MathSyntaxError(f"invalid function \"{x}\". Use: {', '.join(supported_func)}", node) fun = getattr(math, x) return fun(*args) - def checkconst(x): - const = [k for k, v in vars(math).items() if not k.startswith('_') and not callable(v)] - if x not in const: - raise SyntaxError(f"Unknown constant {x}") + def checkconst(node, x): + supported_const = [k for k, v in vars(math).items() if not k.startswith('_') and not callable(v)] + if x not in supported_const: + raise MathSyntaxError(f"invalid constant \"{x}\". Use: {', '.join(supported_const)}", node) value = getattr(math, x) return value @@ -30,7 +48,7 @@ def checkconst(x): ast.Div: operator.truediv, ast.Mod: operator.mod, ast.Pow: operator.pow, - ast.Call: checkmath, + ast.BitXor: operator.pow, ast.BinOp: ast.BinOp, } @@ -38,11 +56,8 @@ def checkconst(x): ast.USub: operator.neg, ast.UAdd: operator.pos, ast.UnaryOp: ast.UnaryOp, - ast.Name: checkconst, } - ops = tuple(bin_ops) + tuple(un_ops) - tree = ast.parse(s, mode="eval") def _eval(node): @@ -51,31 +66,39 @@ def _eval(node): if isinstance(node, ast.Constant): return node.value if isinstance(node, ast.BinOp): - left = _eval(node.left) if isinstance(node.left, ops) else node.left.value - if isinstance(node.right, ops): - right = _eval(node.right) - else: - right = node.right.value + left = _eval(node.left) + right = _eval(node.right) + if type(node.op) not in bin_ops: + raise MathSyntaxError(f"invalid operator \"{type(node).__name__}\"", node) return bin_ops[type(node.op)](left, right) if isinstance(node, ast.UnaryOp): - if isinstance(node.operand, ops): - operand = _eval(node.operand) - else: - operand = node.operand.value + operand = _eval(node.operand) + if type(node.op) not in un_ops: + raise MathSyntaxError(f"invalid operator \"{type(node).__name__}\"", node) return un_ops[type(node.op)](operand) if isinstance(node, ast.Call): args = [_eval(x) for x in node.args] - return checkmath(node.func.id, *args) + return checkfunc(node, node.func.id, *args) if isinstance(node, ast.Name): - return checkconst(node.id) - raise SyntaxError(f"Bad syntax, {type(node)}") + return checkconst(node, node.id) + raise MathSyntaxError(f"invalid syntax \"{type(node).__name__}\"", node) return _eval(tree) def main(): for line in fileinput.input(): - result = safe_eval(line) - print(str(result)) + try: + line = line.strip() + result = safe_eval(line) + print(str(result)) + except (MathSyntaxError, SyntaxError) as e: + print(line) + print(f"{' '*(e.offset-1)}{'^'*(e.end_offset-e.offset)}") + print(f"{type(e).__name__}: {e.args[0]}") + except Exception as e: + print(f"{type(e).__name__}: {e.args[0]}") + if __name__ == "__main__": - main() \ No newline at end of file + sys.tracebacklimit = -1 + main() \ No newline at end of file From c31c61240a6ea6497d37ead11fdf0619575c26c3 Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Sat, 10 Aug 2024 04:39:43 +0800 Subject: [PATCH 086/105] [multi-chat] fix: sort bots on window loaded --- .../components/sorted-list/control-menu.blade.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/multi-chat/resources/views/components/sorted-list/control-menu.blade.php b/src/multi-chat/resources/views/components/sorted-list/control-menu.blade.php index 738ba96d..5c29bd11 100644 --- a/src/multi-chat/resources/views/components/sorted-list/control-menu.blade.php +++ b/src/multi-chat/resources/views/components/sorted-list/control-menu.blade.php @@ -68,10 +68,10 @@ function sortLists(id, key) { @if(count($sorting_methods) > 0) @endif \ No newline at end of file From 139e1641f7149748a600bf19aa1f8bbbe914f8a0 Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Sat, 10 Aug 2024 05:49:46 +0800 Subject: [PATCH 087/105] [pipe, uploader] fix: execution security --- docker/compose/pipe.yaml | 3 +-- docker/executor/Dockerfile | 13 ++++++++++--- src/bot/Upload_Tool.bot | 1 + src/executor/pipe/main.py | 11 +++-------- src/executor/uploader/main.py | 6 +++++- src/executor/uploader/requirements.txt | 1 + 6 files changed, 21 insertions(+), 14 deletions(-) create mode 100644 src/executor/uploader/requirements.txt diff --git a/docker/compose/pipe.yaml b/docker/compose/pipe.yaml index 1dab9a87..87fdd056 100644 --- a/docker/compose/pipe.yaml +++ b/docker/compose/pipe.yaml @@ -15,10 +15,9 @@ services: command: [ "--api_base_url", "http://web/", "--log", "debug", - "--ensure_executable" ] volumes: [ - "kuwa-root:/var/kuwa/docker/root:rw", # The root of Kuwa filesystem hierarchy to store user-uploaded data during runtime. + "kuwa-root:/var/kuwa/docker/root:ro", # The root of Kuwa filesystem hierarchy to store user-uploaded data during runtime. ] extra_hosts: - "localhost:host-gateway" diff --git a/docker/executor/Dockerfile b/docker/executor/Dockerfile index eff84682..42c95995 100644 --- a/docker/executor/Dockerfile +++ b/docker/executor/Dockerfile @@ -5,21 +5,28 @@ WORKDIR /usr/src/app RUN apt-get update &&\ apt-get install -y cmake build-essential git -# Install the dependency of executor +# Install the dependency of each executor COPY docker/executor/requirements.txt ./requirements-docker.txt RUN pip install --no-cache-dir -r requirements-docker.txt + COPY src/executor/requirements.txt ./ RUN sed -i '/^\.[\/]*/d' ./requirements.txt &&\ - sed -i '/torch.*/d' ./requirements.txt -RUN pip install --no-cache-dir -r requirements.txt + sed -i '/torch.*/d' ./requirements.txt &&\ + pip install --no-cache-dir -r requirements.txt + COPY src/executor/docqa/requirements.txt ./docqa/requirements.txt RUN pip install --no-cache-dir -r ./docqa/requirements.txt + COPY src/executor/speech_recognition/requirements.txt ./speech_recognition/requirements.txt RUN apt-get install -y ffmpeg &&\ pip install --no-cache-dir -r ./speech_recognition/requirements.txt + COPY src/executor/image_generation/requirements.txt ./image_generation/requirements.txt RUN pip install --no-cache-dir -r ./image_generation/requirements.txt +COPY src/executor/uploader/requirements.txt ./uploader/requirements.txt +RUN pip install --no-cache-dir -r ./uploader/requirements.txt + # Install the executor framework and client library COPY .git ../../.git COPY src/executor/. . diff --git a/src/bot/Upload_Tool.bot b/src/bot/Upload_Tool.bot index d6cf8c10..9d253f08 100644 --- a/src/bot/Upload_Tool.bot +++ b/src/bot/Upload_Tool.bot @@ -12,6 +12,7 @@ KUWABOT description "Augment Kuwa with a new program/tool." KUWABOT base "uploader" PARAMETER uploader_dst_dir "/bin" PARAMETER uploader_succeed_message "Success! Your tool is ready to go." +PARAMETER uploader_chmod "755" PARAMETER uploader_bot_template "KUWABOT name 'Tool ({{file_name}})'\nKUWABOT base 'pipe'\nKUWABOT description 'Created by \"Upload Tool\"'\nPARAMETER pipe_program '{{file_name}}'" --kuwaxyfpe-- \ No newline at end of file diff --git a/src/executor/pipe/main.py b/src/executor/pipe/main.py index 25541168..ae8ffba1 100644 --- a/src/executor/pipe/main.py +++ b/src/executor/pipe/main.py @@ -27,12 +27,11 @@ def extend_arguments(self, parser): parser.add_argument('--argv', default="", help='Arguments.') parser.add_argument('--encoding', default="utf-8", help='The encoding of the standard I/O streams. Set to None indicating I/O raw bytes.') parser.add_argument('--api_base_url', default="http://127.0.0.1/", help='The API base URL of Kuwa multi-chat WebUI. This value will pass to the subprocess.') - parser.add_argument('--ensure_executable', action='store_true', help='Change the program permission to executable.') parser.add_argument('--hide_stderr', action='store_true', help='Hide the stderr content in the executor response.') parser.add_argument('--extract_last_codeblock', action='store_true', help='Make sure the program only gets the code from inside the last code block.') def setup(self): - self.sub_process = None + logger.info(f"Path to find executables: {self.args.path}") def extract_code_from_markdown(self, markdown_text): """ @@ -96,12 +95,8 @@ async def llm_compute(self, history: list[dict], modelfile:Modelfile): # Run a subprocess with stdin from the request. program = os.path.realpath(program) if not self.is_exe(program): - if self.args.ensure_executable: - st = os.stat(program) - os.chmod(program, st.st_mode | stat.S_IEXEC) - else: - yield "The program is not executable; please check its file permissions." - return + yield "The program is not executable; please check its file permissions." + return cmd = [program]+argv env = os.environ.copy() diff --git a/src/executor/uploader/main.py b/src/executor/uploader/main.py index ce2b0284..eade0b00 100644 --- a/src/executor/uploader/main.py +++ b/src/executor/uploader/main.py @@ -6,6 +6,7 @@ import json import shlex import requests +import oschmod from textwrap import dedent sys.path.append(os.path.dirname(os.path.abspath(__file__))) @@ -30,7 +31,7 @@ def extend_arguments(self, parser): parser.add_argument('--api_base_url', default="http://127.0.0.1/", help='The API base URL of Kuwa multi-chat WebUI. This value will pass to the subprocess.') def setup(self): - pass + logger.info(f"Root path: {self.args.root}") def download_file(self, url, save_path): """ @@ -91,6 +92,7 @@ async def llm_compute(self, history: list[dict], modelfile:Modelfile): dst_dir = modelfile.parameters["uploader_"].get("dst_dir", "/database") bot_template = modelfile.parameters["uploader_"].get("bot_template") succeed_message = modelfile.parameters["uploader_"].get("succeed_message", "File uploaded successfully.") + chmod = modelfile.parameters["uploader_"].get("chmod", None) url, history = extract_last_url(history) dst_path = os.path.abspath(os.path.join(self.args.root, "./"+dst_dir)) @@ -102,6 +104,8 @@ async def llm_compute(self, history: list[dict], modelfile:Modelfile): return file_name, file_path = self.download_file(url, dst_path) + if chmod is not None: + oschmod.set_mode(file_path, chmod) yield f"{succeed_message}\n" if bot_template is None: diff --git a/src/executor/uploader/requirements.txt b/src/executor/uploader/requirements.txt new file mode 100644 index 00000000..a83675f9 --- /dev/null +++ b/src/executor/uploader/requirements.txt @@ -0,0 +1 @@ +oschmod ~= 0.3.12 \ No newline at end of file From b89d393e66a25cf0f7b9f1624430f6bec5e7fc12 Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Sat, 10 Aug 2024 05:56:28 +0800 Subject: [PATCH 088/105] [multi-chat] fix: importing bot error --- .../views/components/store/modal/create-bot.blade.php | 3 ++- src/multi-chat/resources/views/layouts/app.blade.php | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/multi-chat/resources/views/components/store/modal/create-bot.blade.php b/src/multi-chat/resources/views/components/store/modal/create-bot.blade.php index ad54c8e9..9cd51eb6 100644 --- a/src/multi-chat/resources/views/components/store/modal/create-bot.blade.php +++ b/src/multi-chat/resources/views/components/store/modal/create-bot.blade.php @@ -290,8 +290,8 @@ function checkForm2() { } function importBotModelfile(modelfile){ - console.debug(modelfile); modelfile = modelfile_parse(modelfile); + console.debug(modelfile); let get_bot_config = function (modelfile, k) { modelfile = modelfile.map((inst) => `${inst['name'].toLowerCase()} ${inst['args']}`); let config = modelfile.filter((inst) => inst.startsWith(k)); @@ -303,6 +303,7 @@ function importBotModelfile(modelfile){ let base_access_code = get_bot_config(modelfile, `${prefix} base`); let base = $(`#llm-list option[data-access-code='${base_access_code}']`).val() $("#create_room input[name='llm_name']").val(base); + $("#create_room input[name='llm_name']").trigger("input"); $("#create_room input[name='bot_name']").val(get_bot_config(modelfile, `${prefix} name`)); $("#create_room input[name='bot_describe']").val(get_bot_config(modelfile, `${prefix} description`)); diff --git a/src/multi-chat/resources/views/layouts/app.blade.php b/src/multi-chat/resources/views/layouts/app.blade.php index 4ca14773..cffa0da1 100644 --- a/src/multi-chat/resources/views/layouts/app.blade.php +++ b/src/multi-chat/resources/views/layouts/app.blade.php @@ -75,8 +75,9 @@ function modelfile_parse(data) { line = line.trim(); // Array of command keywords - const commandKeywords = ['FROM', 'ADAPTER', 'LICENSE', 'TEMPLATE', 'SYSTEM', 'PARAMETER', - 'MESSAGE', 'BEFORE-PROMPT', 'AFTER-PROMPT', 'KUWABOT' + const commandKeywords = [ + 'FROM', 'ADAPTER', 'LICENSE', 'TEMPLATE', 'SYSTEM', 'PARAMETER', 'MESSAGE', + 'BEFORE-PROMPT', 'AFTER-PROMPT', 'KUWABOT', 'KUWAPARAM', 'WELCOME' ]; // Check if the line starts with a command keyword From 0a42a9386b3de5539fecbd7bc4edc66ee95ad882 Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Sat, 10 Aug 2024 07:12:12 +0800 Subject: [PATCH 089/105] [pipe] fix: use shell to direct execute .py on win --- src/executor/pipe/src/subprocess_helper.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/executor/pipe/src/subprocess_helper.py b/src/executor/pipe/src/subprocess_helper.py index 930c2691..1cc0aadf 100644 --- a/src/executor/pipe/src/subprocess_helper.py +++ b/src/executor/pipe/src/subprocess_helper.py @@ -1,5 +1,6 @@ import asyncio import logging +import shlex from enum import Enum from .text_buffer import TextBuffer @@ -39,8 +40,10 @@ async def create_subprocess(self, cmd, input_data:str|None = None, **kwargs): Create a subprocess with optional input data. """ - process = await asyncio.create_subprocess_exec( - *cmd, + cmd = shlex.join(cmd) + + process = await asyncio.create_subprocess_shell( + cmd, stdin=asyncio.subprocess.PIPE, # Providing input from a stream stdout=asyncio.subprocess.PIPE, # Capturing stdout stderr=asyncio.subprocess.PIPE, # Capturing stderr From c47c8625112639348843a10be4d0a3dc1a186a96 Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Sat, 10 Aug 2024 08:35:18 +0800 Subject: [PATCH 090/105] [uploader] fix: escape file_path in botfile --- src/executor/uploader/main.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/executor/uploader/main.py b/src/executor/uploader/main.py index eade0b00..47f2f80b 100644 --- a/src/executor/uploader/main.py +++ b/src/executor/uploader/main.py @@ -87,6 +87,9 @@ def parse_botfile(self, botfile_content): logger.debug(json.dumps(result, indent=2)) return result + + def escape_botfile(self, str): + return str.replace('\\', '\\\\') async def llm_compute(self, history: list[dict], modelfile:Modelfile): dst_dir = modelfile.parameters["uploader_"].get("dst_dir", "/database") @@ -112,8 +115,8 @@ async def llm_compute(self, history: list[dict], modelfile:Modelfile): logger.debug("No bot template specified. Skipped creating bot.") return - botfile = bot_template.replace("{{file_name}}", file_name)\ - .replace("{{file_path}}", file_path) + botfile = bot_template.replace("{{file_name}}", self.escape_botfile(file_name))\ + .replace("{{file_path}}", self.escape_botfile(file_path)) botfile = bytes(botfile, "utf-8").decode("unicode_escape") botfile = self.parse_botfile(botfile) if botfile['metadata'].get('name') is None or botfile['metadata'].get('base') is None: From 8c2321feb5d866ac70b3ad218c8a8965e5b630e9 Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Sat, 10 Aug 2024 08:44:32 +0800 Subject: [PATCH 091/105] [windows] add: pipe, uploader --- windows/build.bat | 13 ++++++++++++- windows/executors/pipe/init.bat | 1 + windows/executors/pipe/pipe.png | Bin 0 -> 2138 bytes windows/executors/uploader/init.bat | 1 + windows/executors/uploader/upload.png | Bin 0 -> 8507 bytes windows/start.bat | 8 ++++++++ 6 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 windows/executors/pipe/init.bat create mode 100644 windows/executors/pipe/pipe.png create mode 100644 windows/executors/uploader/init.bat create mode 100644 windows/executors/uploader/upload.png diff --git a/windows/build.bat b/windows/build.bat index b9a66dea..9e43336f 100644 --- a/windows/build.bat +++ b/windows/build.bat @@ -172,6 +172,9 @@ pip install --default-timeout=1000 -r requirements.txt pushd "docqa" pip install --default-timeout=1000 -r requirements.txt popd +pushd "uploader" +pip install --default-timeout=1000 -r requirements.txt +popd popd pushd "..\src\toolchain" pip install --default-timeout=1000 -r requirements.txt @@ -181,4 +184,12 @@ REM Make sure the windows edition package are still the correct version pip install --default-timeout=1000 -r .\src\requirements.txt REM Download Embedding Model -python ../src/executor/docqa/download_model.py \ No newline at end of file +python ..\src\executor\docqa\download_model.py + +REM Make Kuwa root +mkdir "%KUWA_ROOT%\bin" +mkdir "%KUWA_ROOT%\database" +mkdir "%KUWA_ROOT%\custom" +mkdir "%KUWA_ROOT%\bootstrap\bot" +xcopy /s ..\src\bot "%KUWA_ROOT%\bootstrap\bot" +xcopy /s ..\src\tools "%KUWA_ROOT%\bin" \ No newline at end of file diff --git a/windows/executors/pipe/init.bat b/windows/executors/pipe/init.bat new file mode 100644 index 00000000..8494f4d9 --- /dev/null +++ b/windows/executors/pipe/init.bat @@ -0,0 +1 @@ +call ..\init.bat %1 \ No newline at end of file diff --git a/windows/executors/pipe/pipe.png b/windows/executors/pipe/pipe.png new file mode 100644 index 0000000000000000000000000000000000000000..573f604b44b18bba980950bdbeef2a9df80f2c86 GIT binary patch literal 2138 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 Yq_{u%5$fAL%}5d#Gf(wlRA$-#0Fq7zdH?_b literal 0 HcmV?d00001 diff --git a/windows/start.bat b/windows/start.bat index 8f994379..2657b454 100644 --- a/windows/start.bat +++ b/windows/start.bat @@ -89,6 +89,14 @@ start /b .\nginx.exe popd set "web_started=True" +REM Import bots +pushd ..\src\multi-chat +for %%a in ("%KUWA_ROOT%\bootstrap\bot\*.*") do ( + php artisan bot:import "%%~fa" +) +popd + + REM Loop to wait for commands :loop set userInput= From da12e37b253de8cde7fbfc4b99f210b0099a460c Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Sat, 10 Aug 2024 09:08:13 +0800 Subject: [PATCH 092/105] [windows] add: run.bat of pipe uploader, dbqa --- windows/executors/dbQA/run.bat | 10 ++++++++++ windows/executors/pipe/run.bat | 8 ++++++++ windows/executors/uploader/run.bat | 8 ++++++++ 3 files changed, 26 insertions(+) create mode 100644 windows/executors/dbQA/run.bat create mode 100644 windows/executors/pipe/run.bat create mode 100644 windows/executors/uploader/run.bat diff --git a/windows/executors/dbQA/run.bat b/windows/executors/dbQA/run.bat new file mode 100644 index 00000000..83cf9021 --- /dev/null +++ b/windows/executors/dbQA/run.bat @@ -0,0 +1,10 @@ +pushd "C:\kuwa\GenAI OS\windows\executors\dbQA" +call ..\..\src\variables.bat +popd +set EXECUTOR_ACCESS_CODE=db-qa +pushd ..\..\..\src\multi-chat +php artisan model:config "db-qa" "dbQA" --image "..\..\windows\executors\dbQA\dbQA.png" --do_not_create_bot +popd +pushd ..\..\..\src\executor\docqa\ +start /b "" "python" docqa.py "--access_code" "db-qa" +popd diff --git a/windows/executors/pipe/run.bat b/windows/executors/pipe/run.bat new file mode 100644 index 00000000..b277883d --- /dev/null +++ b/windows/executors/pipe/run.bat @@ -0,0 +1,8 @@ +call ..\..\src\variables.bat +set EXECUTOR_ACCESS_CODE=pipe +pushd ..\..\..\src\multi-chat +php artisan model:config "pipe" "Pipe" --image "..\..\windows\executors\pipe\pipe.png" +popd +pushd ..\..\..\src\executor\pipe +start /b "" "python" main.py "--access_code" "pipe" --log debug +popd \ No newline at end of file diff --git a/windows/executors/uploader/run.bat b/windows/executors/uploader/run.bat new file mode 100644 index 00000000..66c2755f --- /dev/null +++ b/windows/executors/uploader/run.bat @@ -0,0 +1,8 @@ +call ..\..\src\variables.bat +set EXECUTOR_ACCESS_CODE=uploader +pushd ..\..\..\src\multi-chat +php artisan model:config "uploader" "Uploader" --image "..\..\windows\executors\uploader\upload.png" +popd +pushd ..\..\..\src\executor\uploader +start /b "" "python" main.py "--access_code" "uploader" +popd From a8668c194a71bf3d3a90fcce3267ae72cdd65fd1 Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Sat, 10 Aug 2024 09:36:52 +0800 Subject: [PATCH 093/105] [windows] add: download script of Llama3.1 --- windows/executors/download.bat | 41 ++++++++++++++----- windows/root/bin/python.bat | 1 + .../migration/20240810_download_llama3_1.bat | 4 ++ 3 files changed, 36 insertions(+), 10 deletions(-) create mode 100755 windows/root/bin/python.bat create mode 100644 windows/src/migration/20240810_download_llama3_1.bat diff --git a/windows/executors/download.bat b/windows/executors/download.bat index 31ee8313..e8f7d895 100644 --- a/windows/executors/download.bat +++ b/windows/executors/download.bat @@ -8,7 +8,12 @@ if "%1"=="quick" ( ) cd "%~dp0" if "%1"=="quick" ( - goto function2 + if "%2"=="" ( + set option=2 + ) else ( + set option=%2 + ) + goto quick_main ) @@ -17,37 +22,40 @@ set "names[1]=Whisper Model" set "names[2]=TAIDE Model" set "names[3]=Stable Diffusion Model" set "names[4]=Diarization Model" +set "names[5]=llama3.1 Model" REM set "names[4]=Embedding Model" REM set "names[5]=GGUF Model" REM set "names[6]=HuggingFace Model" -set "names[5]=Exit" +set "names[6]=Exit" REM Define an array to store the model types and their names set "models[1]=whisper" set "models[2]=taide" set "models[3]=stable_diffusion" set "models[4]=diarization" +set "models[5]=llama" REM set "models[4]=embedding_model" REM set "models[5]=gguf_model" REM set "models[6]=huggingface" -set "models[5]=exit" +set "models[6]=exit" :main cls echo Now in: "%cd%" echo Download Model: -for %%a in (1 2 3 4 5) do ( +for %%a in (1 2 3 4 5 6) do ( echo %%a - !names[%%a]! - if "%%a" == "4" ( + if "%%a" == "5" ( echo ------------ ) ) -set /p "option=Enter the option number (1-5): " +set /p "option=Enter the option number (1-6): " if not defined models[%option%] ( echo Invalid option. Please try again. goto main ) +:quick_main set "EXECUTOR_TYPE=!models[%option%]!" if "%option%"=="1" ( @@ -80,9 +88,6 @@ if "%option%"=="1" ( ) else ( echo N|UӼҫ ) - if "%1"=="quick" ( - exit - ) pause ) else if "%option%"=="3" ( :function3 @@ -122,8 +127,24 @@ if "%option%"=="1" ( echo N|UӼҫ ) pause -) else if "%option%"=="5" ( +) else if "%option%"=="5" ( + :function5 + set userInput=n + set /p "userInput=nU Llama3.1-8B.Q4_K_M GGUF ҫ ( 4.7GB)H [y/N] " + + if /I "!userInput!"=="y" ( + echo bUҫ... + curl -L -o "llama3_1/llama3_1-8b-q4_k_m.gguf" https://huggingface.co/chatpdflocal/llama3.1-8b-gguf/resolve/main/ggml-model-Q4_K_M.gguf + echo UI + ) else ( + echo N|UӼҫ + ) + pause +) else if "%option%"=="6" ( exit ) +if "%1"=="quick" ( + exit /b +) goto main diff --git a/windows/root/bin/python.bat b/windows/root/bin/python.bat new file mode 100755 index 00000000..6abd3b85 --- /dev/null +++ b/windows/root/bin/python.bat @@ -0,0 +1 @@ +python %* \ No newline at end of file diff --git a/windows/src/migration/20240810_download_llama3_1.bat b/windows/src/migration/20240810_download_llama3_1.bat new file mode 100644 index 00000000..9a46aef6 --- /dev/null +++ b/windows/src/migration/20240810_download_llama3_1.bat @@ -0,0 +1,4 @@ +REM This open the model download window for user and quickly ask for model download + +start executors\download.bat quick 5 +exit /b 0 From db6e9b537b23b5a5509b9e84c269ae7da031c465 Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Sat, 10 Aug 2024 09:39:45 +0800 Subject: [PATCH 094/105] [windows] fix: exit from download.bat --- windows/executors/download.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/windows/executors/download.bat b/windows/executors/download.bat index e8f7d895..5f2fdd84 100644 --- a/windows/executors/download.bat +++ b/windows/executors/download.bat @@ -144,7 +144,7 @@ if "%option%"=="1" ( exit ) if "%1"=="quick" ( - exit /b + exit ) goto main From 04aa2ef9b9a417cad0650d7bf23f506276149fb7 Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Sat, 10 Aug 2024 09:48:25 +0800 Subject: [PATCH 095/105] [windows] fix: add KUWA_ROOT --- windows/src/variables.bat | 3 +++ 1 file changed, 3 insertions(+) diff --git a/windows/src/variables.bat b/windows/src/variables.bat index f75cc88e..8f9fcec8 100644 --- a/windows/src/variables.bat +++ b/windows/src/variables.bat @@ -80,6 +80,9 @@ set "HF_HOME=%KUWA_CACHE%\huggingface" set "CACHE_PATH_ENV=%KUWA_CACHE%\selenium" set "PYANNOTE_CACHE=%KUWA_CACHE%\torch\pyannote" +REM Kuwa env +set "KUWA_ROOT=%~dp0..\root" + REM Prepare migration file mkdir src\conf 2>nul if not exist "src\conf\migrations.txt" ( From a56ed3fdbeea26020e8dda42e7af0bf40f347740 Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Sat, 10 Aug 2024 20:30:48 +0800 Subject: [PATCH 096/105] [pipe, tool] fix: portable between unix and window This commit addresses two minor issues: - Portable shebang: The Python script now uses the portable shebang `#!/usr/local/bin/python` instead of the hardcoded `/bin/python`, ensuring compatibility across different systems. - Quoting program name: The program name is now enclosed in quotes when invoked, allowing for spaces in the program's path. --- docker/executor/Dockerfile | 1 - src/executor/pipe/src/subprocess_helper.py | 4 +++- src/tools/calc.py | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/docker/executor/Dockerfile b/docker/executor/Dockerfile index 42c95995..c9ddd4dd 100644 --- a/docker/executor/Dockerfile +++ b/docker/executor/Dockerfile @@ -50,7 +50,6 @@ VOLUME ${KUWA_ROOT} RUN mkdir -p ${KUWA_ROOT}/bin && \ mkdir -p ${KUWA_ROOT}/database && \ mkdir -p ${KUWA_ROOT}/custom -RUN ln -s $(which python) /bin/python COPY src/tools ${KUWA_ROOT}/../../src/tools # Default parameters diff --git a/src/executor/pipe/src/subprocess_helper.py b/src/executor/pipe/src/subprocess_helper.py index 1cc0aadf..2b570fb7 100644 --- a/src/executor/pipe/src/subprocess_helper.py +++ b/src/executor/pipe/src/subprocess_helper.py @@ -40,7 +40,9 @@ async def create_subprocess(self, cmd, input_data:str|None = None, **kwargs): Create a subprocess with optional input data. """ - cmd = shlex.join(cmd) + cmd = ' '.join([f'"{i}"' for i in cmd]) + + logger.debug(f'Cmd to shell: {cmd}') process = await asyncio.create_subprocess_shell( cmd, diff --git a/src/tools/calc.py b/src/tools/calc.py index 11624075..9001f089 100755 --- a/src/tools/calc.py +++ b/src/tools/calc.py @@ -1,4 +1,4 @@ -#!/bin/python +#!/usr/local/bin/python import fileinput import math From 35454aab904526fd7a6878df00c15605724d4d37 Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Sat, 10 Aug 2024 20:36:05 +0800 Subject: [PATCH 097/105] [windows] fix: portable run.bat This commit replaces absolute paths with relative paths in run.bat. This change makes the script more portable by ensuring it functions correctly regardless of the user's specific directory structure. --- windows/executors/init.bat | 8 ++++---- windows/executors/pipe/run.bat | 4 +++- windows/executors/uploader/run.bat | 4 +++- .../version_patch/12.1/windows/executors/llama3_1/run.bat | 4 ++-- .../version_patch/12.2/windows/executors/llama3_1/run.bat | 4 ++-- .../version_patch/12.3/windows/executors/llama3_1/run.bat | 4 ++-- .../version_patch/12.4/windows/executors/llama3_1/run.bat | 4 ++-- .../version_patch/cpu/windows/executors/llama3_1/run.bat | 4 ++-- 8 files changed, 20 insertions(+), 16 deletions(-) diff --git a/windows/executors/init.bat b/windows/executors/init.bat index c535939e..fd620910 100644 --- a/windows/executors/init.bat +++ b/windows/executors/init.bat @@ -342,8 +342,8 @@ if "!EXECUTOR_NAME!" == "docQA & webQA" ( set target_access_code=!EXECUTOR_ACCESS_CODE! ) REM Save configuration to run.bat - echo pushd %cd%> run.bat - echo call ..\..\src\variables.bat>> run.bat + echo pushd ..\..\src> run.bat + echo call variables.bat>> run.bat echo popd>> run.bat echo set "EXECUTOR_ACCESS_CODE="doc_qa --exclude=web_qa"">> run.bat @@ -376,8 +376,8 @@ if "!EXECUTOR_NAME!" == "docQA & webQA" ( echo popd>> run.bat ) else ( REM Save configuration to run.bat - echo pushd "%cd%"> run.bat - echo call ..\..\src\variables.bat>> run.bat + echo pushd ..\..\src> run.bat + echo call variables.bat>> run.bat echo popd>> run.bat echo set EXECUTOR_ACCESS_CODE=!EXECUTOR_ACCESS_CODE!>> run.bat diff --git a/windows/executors/pipe/run.bat b/windows/executors/pipe/run.bat index b277883d..15da8afe 100644 --- a/windows/executors/pipe/run.bat +++ b/windows/executors/pipe/run.bat @@ -1,4 +1,6 @@ -call ..\..\src\variables.bat +pushd ..\..\src +call variables.bat +popd set EXECUTOR_ACCESS_CODE=pipe pushd ..\..\..\src\multi-chat php artisan model:config "pipe" "Pipe" --image "..\..\windows\executors\pipe\pipe.png" diff --git a/windows/executors/uploader/run.bat b/windows/executors/uploader/run.bat index 66c2755f..06f1f2bc 100644 --- a/windows/executors/uploader/run.bat +++ b/windows/executors/uploader/run.bat @@ -1,4 +1,6 @@ -call ..\..\src\variables.bat +pushd ..\..\src +call variables.bat +popd set EXECUTOR_ACCESS_CODE=uploader pushd ..\..\..\src\multi-chat php artisan model:config "uploader" "Uploader" --image "..\..\windows\executors\uploader\upload.png" diff --git a/windows/src/version_patch/12.1/windows/executors/llama3_1/run.bat b/windows/src/version_patch/12.1/windows/executors/llama3_1/run.bat index ba15ee75..7837148a 100644 --- a/windows/src/version_patch/12.1/windows/executors/llama3_1/run.bat +++ b/windows/src/version_patch/12.1/windows/executors/llama3_1/run.bat @@ -1,5 +1,5 @@ -pushd "C:\kuwa\GenAI OS\windows\executors\llama3_1" -call ..\..\src\variables.bat +pushd ..\..\src +call variables.bat popd set EXECUTOR_ACCESS_CODE=llama3.1-8b-instruct pushd ..\..\..\src\multi-chat diff --git a/windows/src/version_patch/12.2/windows/executors/llama3_1/run.bat b/windows/src/version_patch/12.2/windows/executors/llama3_1/run.bat index ba15ee75..7837148a 100644 --- a/windows/src/version_patch/12.2/windows/executors/llama3_1/run.bat +++ b/windows/src/version_patch/12.2/windows/executors/llama3_1/run.bat @@ -1,5 +1,5 @@ -pushd "C:\kuwa\GenAI OS\windows\executors\llama3_1" -call ..\..\src\variables.bat +pushd ..\..\src +call variables.bat popd set EXECUTOR_ACCESS_CODE=llama3.1-8b-instruct pushd ..\..\..\src\multi-chat diff --git a/windows/src/version_patch/12.3/windows/executors/llama3_1/run.bat b/windows/src/version_patch/12.3/windows/executors/llama3_1/run.bat index ba15ee75..7837148a 100644 --- a/windows/src/version_patch/12.3/windows/executors/llama3_1/run.bat +++ b/windows/src/version_patch/12.3/windows/executors/llama3_1/run.bat @@ -1,5 +1,5 @@ -pushd "C:\kuwa\GenAI OS\windows\executors\llama3_1" -call ..\..\src\variables.bat +pushd ..\..\src +call variables.bat popd set EXECUTOR_ACCESS_CODE=llama3.1-8b-instruct pushd ..\..\..\src\multi-chat diff --git a/windows/src/version_patch/12.4/windows/executors/llama3_1/run.bat b/windows/src/version_patch/12.4/windows/executors/llama3_1/run.bat index ba15ee75..7837148a 100644 --- a/windows/src/version_patch/12.4/windows/executors/llama3_1/run.bat +++ b/windows/src/version_patch/12.4/windows/executors/llama3_1/run.bat @@ -1,5 +1,5 @@ -pushd "C:\kuwa\GenAI OS\windows\executors\llama3_1" -call ..\..\src\variables.bat +pushd ..\..\src +call variables.bat popd set EXECUTOR_ACCESS_CODE=llama3.1-8b-instruct pushd ..\..\..\src\multi-chat diff --git a/windows/src/version_patch/cpu/windows/executors/llama3_1/run.bat b/windows/src/version_patch/cpu/windows/executors/llama3_1/run.bat index 45224163..53fb15d6 100644 --- a/windows/src/version_patch/cpu/windows/executors/llama3_1/run.bat +++ b/windows/src/version_patch/cpu/windows/executors/llama3_1/run.bat @@ -1,5 +1,5 @@ -pushd "C:\kuwa\GenAI OS\windows\executors\llama3_1" -call ..\..\src\variables.bat +pushd ..\..\src +call variables.bat popd set EXECUTOR_ACCESS_CODE=llama3.1-8b-instruct pushd ..\..\..\src\multi-chat From faa833423f3a7bd075f95c6b53f5ab538a83292e Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Sat, 10 Aug 2024 21:03:01 +0800 Subject: [PATCH 098/105] [bot] add: Python bot --- src/bot/python.bot | 23 +++++++++++++++++++++++ windows/root/bin/python.bat | 2 +- 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 src/bot/python.bot diff --git a/src/bot/python.bot b/src/bot/python.bot new file mode 100644 index 00000000..202f14be --- /dev/null +++ b/src/bot/python.bot @@ -0,0 +1,23 @@ +Subject: Exported bot "Python" +Content-Type: multipart/related; boundary="kuwab3xa7"; type=application/vnd.kuwabot +Content-Transfer-Encoding: quoted-printable + +--kuwab3xa7 +Content-Type: application/vnd.kuwabot; + +#! +KUWABOT version 0.3.3 +KUWABOT name "Python" +KUWABOT description "This bot has the ability to run Python scripts created by other bots. [Important]: Remember that scripts can potentially access and change your data. Only run code from sources you trust completely." +KUWABOT base "pipe" +PARAMETER pipe_program python +PARAMETER pipe_extract_last_codeblock true + +--kuwab3xa7 +Content-Type: image/png +Content-Transfer-Encoding: base64 +Content-Location: /bot-avatar + +iVBORw0KGgoAAAANSUhEUgAAARgAAAEYCAYAAACHjumMAAAA0GVYSWZJSSoACAAAAAoAAAEEAAEAAAAYAQAAAQEEAAEAAAAYAQAAAgEDAAMAAACGAAAAEgEDAAEAAAABAAAAGgEFAAEAAACMAAAAGwEFAAEAAACUAAAAKAEDAAEAAAACAAAAMQECAA0AAACcAAAAMgECABQAAACqAAAAaYcEAAEAAAC+AAAAAAAAAAgACAAIAEs4AAA+AAAASzgAAD4AAABHSU1QIDIuMTAuMzgAADIwMjQ6MDg6MTAgMjA6NTY6MjcAAQABoAMAAQAAAAEAAAAAAAAAg21whwAAAYRpQ0NQSUNDIHByb2ZpbGUAAHicfZE9SMNAHMVfU6WltDjYQcQhQ3Wyi4o61ioUoUKoFVp1MLn0C5q0JCkujoJrwcGPxaqDi7OuDq6CIPgB4uzgpOgiJf4vKbSI8eC4H+/uPe7eAUKryjSzLwFoumVkUkkxl18VA68IIoQwZhCRmVmfk6Q0PMfXPXx8vYvzLO9zf46IWjAZ4BOJE6xuWMQbxNObVp3zPnGUlWWV+Jx43KALEj9yXXH5jXPJYYFnRo1sZp44SiyWeljpYVY2NOIp4piq6ZQv5FxWOW9x1qoN1rknf2G4oK8sc53mCFJYxBIkiFDQQAVVWIjTqpNiIkP7SQ//sOOXyKWQqwJGjgXUoEF2/OB/8Ltbszg54SaFk0D/i21/jAKBXaDdtO3vY9tunwD+Z+BK7/prLWD2k/RmV4sdAQPbwMV1V1P2gMsdYOipLhuyI/lpCsUi8H5G35QHBm+B0JrbW2cfpw9AlrpK3wAHh8BYibLXPd4d7O3t3zOd/n4Akp9ys1CC+HsAAA14aVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA0LjQuMC1FeGl2MiI+CiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiCiAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICB4bWxuczpHSU1QPSJodHRwOi8vd3d3LmdpbXAub3JnL3htcC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgeG1wTU06RG9jdW1lbnRJRD0iZ2ltcDpkb2NpZDpnaW1wOjQxZjU0ZDhlLTdjMDktNDc3MS04ZWQ2LTU4NTAwMDNmMzE5MCIKICAgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3YTYxYmVjZS1jMGY2LTRhOTItYTY2Ny1hODljMjAyZDgyYjgiCiAgIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplNjMwMTI3My0wOWI4LTRmODAtODc0ZS02YWY3ZWEzN2RmNjYiCiAgIGRjOkZvcm1hdD0iaW1hZ2UvcG5nIgogICBHSU1QOkFQST0iMi4wIgogICBHSU1QOlBsYXRmb3JtPSJMaW51eCIKICAgR0lNUDpUaW1lU3RhbXA9IjE3MjMyOTQ1ODc0MDIwNDMiCiAgIEdJTVA6VmVyc2lvbj0iMi4xMC4zOCIKICAgdGlmZjpPcmllbnRhdGlvbj0iMSIKICAgeG1wOkNyZWF0b3JUb29sPSJHSU1QIDIuMTAiCiAgIHhtcDpNZXRhZGF0YURhdGU9IjIwMjQ6MDg6MTBUMjA6NTY6MjcrMDg6MDAiCiAgIHhtcDpNb2RpZnlEYXRlPSIyMDI0OjA4OjEwVDIwOjU2OjI3KzA4OjAwIj4KICAgPHhtcE1NOkhpc3Rvcnk+CiAgICA8cmRmOlNlcT4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii8iCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NDIzZjJkM2ItNWM4NS00YzE4LTgzYjYtYjgyY2QzZGMxZGE5IgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJHaW1wIDIuMTAgKExpbnV4KSIKICAgICAgc3RFdnQ6d2hlbj0iMjAyNC0wOC0xMFQyMDo1NjoyNyswODowMCIvPgogICAgPC9yZGY6U2VxPgogICA8L3htcE1NOkhpc3Rvcnk+CiAgPC9yZGY6RGVzY3JpcHRpb24+CiA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz6WrEP5AAAABmJLR0QAIQCWAPPYyNovAAAACXBIWXMAACO/AAAjvwGm+t7LAAAAB3RJTUUH6AgKDDgb/e4UmQAAIABJREFUeNrtfXmcVOWx9lOnewaGTRTEyKLEKxEZNApGZVEhgAZZ1BiIgppcjaDZjCJeNVftT2MEBzHRm7h+10Rj9A5mMyqK4AzCDOgFwQVccAEFZhAhAsOs3W/dPwaHWc7afd7T53TX8/vFwEz36eLtqudUPXXetwCBQCAQCAQCgUAgEAgEAoFukCxB7mLawsqiL5M1/UnxkcR8ODH3VDAOJfChDBwK5kPB6AmiQwGOM3MPADGACaCeAABWBQzqduCSCuA94IOfweD9ABrBYAK+ZGAvwHuZsZfBew0Ye5l4D0F9qZh2ErhagbcDPavLE2Pr5VsSghGEFOPnvXxInOkbbKjBBDoG4P5Q6KuAAQTuC6DXARb46j8HuYG5zbWY2/y25YftXtXyEjb52QHCafcCNvm4ltfsBlDFzFVEqAKwFcwfkuI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 + +--kuwab3xa7-- \ No newline at end of file diff --git a/windows/root/bin/python.bat b/windows/root/bin/python.bat index 6abd3b85..23b2f773 100755 --- a/windows/root/bin/python.bat +++ b/windows/root/bin/python.bat @@ -1 +1 @@ -python %* \ No newline at end of file +@python %* \ No newline at end of file From 3e32200d894cadd8710616ffd2b4785fb78e1aeb Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Sat, 10 Aug 2024 21:04:05 +0800 Subject: [PATCH 099/105] [bot] refactor: rename the bots --- src/bot/{Create_RAG.bot => create-rag.bot} | 0 src/bot/{Customize_Kuwa.bot => customize-kuwa.bot} | 0 src/bot/{Upload_Tool.bot => upload-tool.bot} | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename src/bot/{Create_RAG.bot => create-rag.bot} (100%) rename src/bot/{Customize_Kuwa.bot => customize-kuwa.bot} (100%) rename src/bot/{Upload_Tool.bot => upload-tool.bot} (100%) diff --git a/src/bot/Create_RAG.bot b/src/bot/create-rag.bot similarity index 100% rename from src/bot/Create_RAG.bot rename to src/bot/create-rag.bot diff --git a/src/bot/Customize_Kuwa.bot b/src/bot/customize-kuwa.bot similarity index 100% rename from src/bot/Customize_Kuwa.bot rename to src/bot/customize-kuwa.bot diff --git a/src/bot/Upload_Tool.bot b/src/bot/upload-tool.bot similarity index 100% rename from src/bot/Upload_Tool.bot rename to src/bot/upload-tool.bot From 52b7bf2e217da58db998978e8a8064539c52a0fd Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Sat, 10 Aug 2024 21:10:19 +0800 Subject: [PATCH 100/105] [chatgpt] fix: update logo --- src/multi-chat/public/images/chatgpt.png | Bin 152500 -> 67003 bytes windows/executors/chatgpt/chatgpt.png | Bin 152500 -> 67003 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/src/multi-chat/public/images/chatgpt.png b/src/multi-chat/public/images/chatgpt.png index eb5c3cfb838ef6d6fec09fdf24392a111b321042..5bbbbdedacd09f8ce450f3b454e106f18e93d7f5 100644 GIT binary patch literal 67003 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

    HnNcB&?xjNJ)ab`C{_Gi6c% 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%0D7ga8wR33XS!E*h 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 diff --git a/windows/executors/chatgpt/chatgpt.png b/windows/executors/chatgpt/chatgpt.png index eb5c3cfb838ef6d6fec09fdf24392a111b321042..5bbbbdedacd09f8ce450f3b454e106f18e93d7f5 100644 GIT binary patch literal 67003 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

    HnNcB&?xjNJ)ab`C{_Gi6c% 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%0D7ga8wR33XS!E*h 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 From 609e8cca6ce67775ce50227a7c9b754fac3264c6 Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Sat, 10 Aug 2024 21:16:02 +0800 Subject: [PATCH 101/105] [docker] fix: bot name --- docker/root/bootstrap/bot/Create_RAG.bot | 1 - docker/root/bootstrap/bot/Customize_Kuwa.bot | 1 - docker/root/bootstrap/bot/Upload_Tool.bot | 1 - docker/root/bootstrap/bot/create-rag.bot | 1 + docker/root/bootstrap/bot/customize-kuwa.bot | 1 + docker/root/bootstrap/bot/python.bot | 1 + docker/root/bootstrap/bot/upload-tool.bot | 1 + 7 files changed, 4 insertions(+), 3 deletions(-) delete mode 120000 docker/root/bootstrap/bot/Create_RAG.bot delete mode 120000 docker/root/bootstrap/bot/Customize_Kuwa.bot delete mode 120000 docker/root/bootstrap/bot/Upload_Tool.bot create mode 120000 docker/root/bootstrap/bot/create-rag.bot create mode 120000 docker/root/bootstrap/bot/customize-kuwa.bot create mode 120000 docker/root/bootstrap/bot/python.bot create mode 120000 docker/root/bootstrap/bot/upload-tool.bot diff --git a/docker/root/bootstrap/bot/Create_RAG.bot b/docker/root/bootstrap/bot/Create_RAG.bot deleted file mode 120000 index c37ec7d1..00000000 --- a/docker/root/bootstrap/bot/Create_RAG.bot +++ /dev/null @@ -1 +0,0 @@ -../../../../src/bot/Create_RAG.bot \ No newline at end of file diff --git a/docker/root/bootstrap/bot/Customize_Kuwa.bot b/docker/root/bootstrap/bot/Customize_Kuwa.bot deleted file mode 120000 index b73752f0..00000000 --- a/docker/root/bootstrap/bot/Customize_Kuwa.bot +++ /dev/null @@ -1 +0,0 @@ -../../../../src/bot/Customize_Kuwa.bot \ No newline at end of file diff --git a/docker/root/bootstrap/bot/Upload_Tool.bot b/docker/root/bootstrap/bot/Upload_Tool.bot deleted file mode 120000 index 9b227e32..00000000 --- a/docker/root/bootstrap/bot/Upload_Tool.bot +++ /dev/null @@ -1 +0,0 @@ -../../../../src/bot/Upload_Tool.bot \ No newline at end of file diff --git a/docker/root/bootstrap/bot/create-rag.bot b/docker/root/bootstrap/bot/create-rag.bot new file mode 120000 index 00000000..825fc6cb --- /dev/null +++ b/docker/root/bootstrap/bot/create-rag.bot @@ -0,0 +1 @@ +../../../../src/bot/create-rag.bot \ No newline at end of file diff --git a/docker/root/bootstrap/bot/customize-kuwa.bot b/docker/root/bootstrap/bot/customize-kuwa.bot new file mode 120000 index 00000000..b395b1eb --- /dev/null +++ b/docker/root/bootstrap/bot/customize-kuwa.bot @@ -0,0 +1 @@ +../../../../src/bot/customize-kuwa.bot \ No newline at end of file diff --git a/docker/root/bootstrap/bot/python.bot b/docker/root/bootstrap/bot/python.bot new file mode 120000 index 00000000..19d1c0bb --- /dev/null +++ b/docker/root/bootstrap/bot/python.bot @@ -0,0 +1 @@ +../../../../src/bot/python.bot \ No newline at end of file diff --git a/docker/root/bootstrap/bot/upload-tool.bot b/docker/root/bootstrap/bot/upload-tool.bot new file mode 120000 index 00000000..63ba091e --- /dev/null +++ b/docker/root/bootstrap/bot/upload-tool.bot @@ -0,0 +1 @@ +../../../../src/bot/upload-tool.bot \ No newline at end of file From d780e1d66609d0e68558e49f9b727f8219e70a94 Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Sat, 10 Aug 2024 21:42:41 +0800 Subject: [PATCH 102/105] [windows, docker] add: dall-e executor --- docker/compose/dall-e.yaml | 22 ++++++++++++++++++++++ docker/run.sh.sample | 2 ++ src/executor/image_generation/dall_e.py | 7 ++++++- src/multi-chat/public/images/dall-e.png | Bin 0 -> 9573 bytes windows/executors/dall-e/dall-e.png | Bin 0 -> 9573 bytes windows/executors/dall-e/init.bat | 1 + windows/executors/dall-e/run.bat | 10 ++++++++++ 7 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 docker/compose/dall-e.yaml create mode 100644 src/multi-chat/public/images/dall-e.png create mode 100644 windows/executors/dall-e/dall-e.png create mode 100644 windows/executors/dall-e/init.bat create mode 100644 windows/executors/dall-e/run.bat diff --git a/docker/compose/dall-e.yaml b/docker/compose/dall-e.yaml new file mode 100644 index 00000000..861ac314 --- /dev/null +++ b/docker/compose/dall-e.yaml @@ -0,0 +1,22 @@ +services: + painter-executor: + build: + context: ../../ + dockerfile: docker/executor/Dockerfile + image: kuwa-executor + environment: + CUSTOM_EXECUTOR_PATH: ./image_generation/dall_e.py + EXECUTOR_ACCESS_CODE: dall-e + EXECUTOR_NAME: DALL-E + EXECUTOR_IMAGE: dall-e.png # Refer to src/multi-chat/public/images + depends_on: + - kernel + - multi-chat + command: [] + volumes: [ + "~/.cache/huggingface:/root/.cache/huggingface", + ] + extra_hosts: + - "localhost:host-gateway" + restart: unless-stopped + networks: ["backend", "frontend"] \ No newline at end of file diff --git a/docker/run.sh.sample b/docker/run.sh.sample index 85849d6e..bdd7b9c6 100755 --- a/docker/run.sh.sample +++ b/docker/run.sh.sample @@ -11,6 +11,8 @@ confs=( "uploader" "token_counter" "gemini" + "chatgpt" + "dall-e" "docqa" "searchqa" ) diff --git a/src/executor/image_generation/dall_e.py b/src/executor/image_generation/dall_e.py index dbc81d7c..468ae6b4 100644 --- a/src/executor/image_generation/dall_e.py +++ b/src/executor/image_generation/dall_e.py @@ -148,7 +148,12 @@ async def llm_compute(self, history: list[dict], modelfile:Modelfile): openai_token = self.api_key if not self.no_override_api_key: openai_token = modelfile.parameters["_"].get("openai_token") or self.api_key - openai_token = openai_token.strip() + + if not openai_token or len(openai_token) == 0: + yield "[Please enter your OpenAI API Token in the user settings on the website in order to use the model.]" + return + + openai_token = openai_token.strip() url, history = extract_last_url(history) diff --git a/src/multi-chat/public/images/dall-e.png b/src/multi-chat/public/images/dall-e.png new file mode 100644 index 0000000000000000000000000000000000000000..42ab9c47c6661f3e3122cf215f524b9812d7557d GIT binary patch literal 9573 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 PiNW01%BaHNLezf&0kUGv literal 0 HcmV?d00001 diff --git a/windows/executors/dall-e/dall-e.png b/windows/executors/dall-e/dall-e.png new file mode 100644 index 0000000000000000000000000000000000000000..42ab9c47c6661f3e3122cf215f524b9812d7557d GIT binary patch literal 9573 zcmeHtc{tSF`@bzqLS)Mx$=28gV}_BjODI{>n8wVIZEVA!BqUqbl!xqEgsAMwD22y9 zl9aWq?@ENRGz{ONXZ`*@*YEdzuIu;x?-|#bbD#U%_v_r}b?$TXeqZ8GTbXk07unCi zz`$j0W@N*_z)0C`EX;Hbbfcw#-jQ*R=5FTZiVW=Z0o{_3g@KVSQRrWcf03COnHhGy zuG1SIUEa0XZ6b{O_WB!iS@btKgD%VeX2V36)fkx=xafTjy{Xe>etKU@ZyvEf*CNs7 z-4FZTj~QLsMgF}vHMcx1rLL@|stneq`>U#Jz*HeHbxkQX4Hy^-QwP(n84Lc5Xcwt- z;mTn;$~6x|!_(%5hEje3zHT1gI0lB0obWWb*(-gqR@B)VX#qB!5^d~7WOZVK_B%!X zLW2^4b3v*N6wYjoqYBE&QC=@!rnHtuCstK(S42r|Fiy^YybDOnZmTF%$E|*>mt0(c zFN`x9G<9o~DY0H`^tsRHuXYnDz+B0GK^Pu);k?^zH92#0f*5N3`_ig%XB8}eGmugS zO=Q$d({4L3aBN&E??W|L@8;_x_8E4Qfs-6JmCd$(4Qic&^zO^tmv>lw;9=TZrkTpOksqwzc!5BdSq^wJ3k`uRKQJp3uNKM~YT+D~2l$smKhkcH6gUrz zGlhG(`1XY7=rMSFQ4D1k6Jx^c>vUQCzA(Nvz6~FkUu1h78qjW9Yd1{K!4MByM}ni} zDHz7rM;VRvb;T)%`1tJ}7=!MK5I;1=3rCQ0#kqUn;nIuGnx&;YuyAPyO-ofvKSSI_ z53{fU+}SWITTGZ228xwFp|@W*1V#t&!4c3>AwJ&tKv)P|dJh*ymv_}F(o%aS1TVO> zBR!7{eFJb(8p;~VsvzSKk6?9az5Pk9 z0E06Q#^DJve}%we{_yt;3h>_B4i=+=^TzqmO#|txs{L)r-5d9Z$1Vl#9zK41UUahm zW=ZgH`;)A{#kM=Mx1GNRLU;cI_ixs}?|sjhZe?i+GxEg*?S^M=1ee}jABOeCcwk|B zqNXd(RT~0@fHd8}Y9I}5buAE7%gqf0*3!b_wAHl1>YA9pK$+tM31~b9w+lrFSN5Re zXoA72U~O$xkR}wO4blMPTtTjCXedY%qOFR-scB%rP~2Z2tOGpgS&8=kYgD^XSUMC2 ztm=kVSI2?SbZ3wTR2>4+)jLjIhv_3*)+C7^fNRD-CiX=_6@wZIUF znwo~jpGNk$fIxaC?qcrM&b^u4V}a2(Lnju!o2PVuJw1IdFv9>Gn&2B?>+9*0d0gP;OL-#)M4A->#&llHca(r_`7hHzE}^p(Epe9?&XovrQ6ew+{`18 zzJBPQ>gSC*i}U|E`Z@IW*t<$nQhS#IhQ|EdLLfRAhuw>lj`ed2a}kYq$I+|DZ|VBG z-s3-{0#3_KRn-lG0pYYXHRC1AW~HM05ZS;ZEm~ z&J{g9_kKf3$?qMM!r!fl7je6%Kqm~O3IVBW{&&Jue%r9hZq4|8$GR&22Pe9F27f6s zbibcEdhw#yLX|&?;cuMnmYx5_&u?e(zqkS&`rk$V5x@V^^)Frjh=G4({BL&sOV>YQ z;2#95PaZFf= z(mO_13sWP8xP9WgkKP=9W=??&44j8{8zVz@jxb%xMliQDW&_v`v&sokJf5FpVBnuO zH$vEk41dez2q@P+pdXpXOipDczhKOsVPaf}xZm-{{4r=G9r9wr)^c!*()OzMs8?Vu zt;*px`B0dFHNXKcl%rhB`@apSLH!S&(CQmMOB&|4nP$<>+d+DE*r~9Zh*6Zoc<@T| zRlS<^Q}xSVgf~(FC6?{bu@MD4Wi`#b@{$mkYU7rmv^Z%jd23qI;rqV)+!)=iVdzN$ z%a7Q*`7%cBsS%HdmI_tmm-|*FM5zg~eam{vl$s8*gPv)O9`>42K}naD^dz_A!iP}7 zFkoguoR-B~DJ@93cejY`&T?MA!W(#X#`+CCH&zF6=0>Bo8N1E!Tc#&r%>eUr%^iQ^ ziUIaUmC~=phS9y7NA+taP!i!UyiYk?7#4Cc6=D+)ei>i2jj5>|pzyIjl0$_H29TBF zJM&o9JiQm27e=%@T;KjVmSAFnUm!&b9gx;{`wDlT8E3&&fj7J8$}P`V6{>Z?$>1GRLy|ow&OtGWbgX zs~e=#bp>B#>Nk52QT4?srXeXovk?z5_Ef*C?ZZ6OlW#vy@k)4|02Zt7h<*0o&sJe^ z0@%Dbkkr`DDR5^c+QsJDsHee#{+m$5L|N^qW8uVz2eq^G*0dujR~#ufeRO~BQtQjZ z_iNL8IjL9k7nQ^cKINuLT_ze(SS#NmYFO``v`%@mB-qPFb-@p^dOl*J^?H5P)|+7t zuPlc(p1b+Ye5n6X>UyM}t1)lMJN|(X0&G4DrQnb{nEi%FtzK-cyE3Efp{M0kWT>{r zXWas8Sx=Lw=^sW_Okco-)+svphdlSIG4M<){#~ zEF3a2j~W(YMWFWOL2l?uDW4DSbQWID>gq_=sslVNOFvN$6)^KTYaK1{GqpIr)*#Sc zY^cpA;`r#3`vTzB<}T5JlTm+TRi45tE)r1iZd;yT&zrza>qw|PKSc%&qHES3}`OV<+ z+5qK19U!z>bPOUJ7W-qE+nv1nvOfl~qj6Fe*t+DEk#;xXI2;scQBF3!$UQ|CkiMZt z<`eJ5)gk8K{A1UR9Uj)OmTeIyeu*`ad@-1)-^Vc>@bK}a zvi>$m;IZi|S6osm(ve(8q*fmf-~|Crv6-QwGJdLl$Cl)Lwezee$w8D4-u_UNWiy1o z@%ZFJ!^-{^q}&(5XI!UdFOr5t`I^+FGB10se}7fP!#7dH+5{QdXYX#HA`4}?4`io5 zIQJu7`Y2U8P+qjiE3pZ7>)3$=y8<{#(ynhcLU1LDM`q$J-7vR zPf+IBI9yoO0$+S#?w5ZLtU~usD#BZuR@o^w3w(DAQ%;r{7f&YZqXa(m9VLusAe`2kCqJ@N zj6b>FEwJ|Pkv`~bS6VMaw$rp^A>dCTc9KrEibrnS&KEBM0X6qmhMMf#c=r2{= z8;HTA>ILwgCHjh$$$oYR6y1;P4{sU>c!d@q9uM=qrtIHrlX#@-JHCT8a~))iVtZbN zyf^vOuph!qP=Gphv#q~cBsim^^hAQv&pvhd)bGm*jN%`)3Qmo&ycSo2$VEp zv-CG7oUS@Qwdj=NKmqZdUmusfYsV%*{Ob74enz|Gk(cI!mwqizFwPUKg(i^c_Fby3c|?Trq+# zv6t)HRpnIq%4FsGQJ>eB!xadTJ=ba9P6D@TI~$}+>X}VwZV4{kRJ&8}Uka|^$g-X6 zofTIr+Y!f-G#hP+{$IowOUjj_DjqvJuDQ09)}JOpEeLjFT0WQ z-bvZtfoxp7z5i&&VqZ$dpy5STq2fHUgyLzd;g4$fAyWEmykzTLPG*3 zwuw7Z?|p~|00gKtJ9cb*;en971x0|*?RCWJF=~}e9hUBQl}5Z z4O=}8-|8_F0rM`Ba)^hXj*y;r+yrEwM84HFd!K71Lcj`v#cUWqmO#N(A1$O zj`(DtvrkB8!_YyeJEu4$%w1vbOwU%~9ZhV&n>Y?$NvRS^81*23u0NY#n54@oz?y|8 zBP*=F(U<;$v#KJ?Jm8~sS_olToHR}+jw?3v2KE02DkH`CLa8<~*XQGBY zQ+nfx_&bd|EUs+MO0*CmqxPyrmRG-gC{X#-FI10YN46%-43a%!R~Qa$%JRPq2D1>V z@X_|b8*W!%`D>-~%)1`ieD6is#%vfWg_KL|(OE=w5 zF9BoGZo_6H`Y4ug-xE>CTTh{PcyC}SZO4y{3pCEYWqo~peI0tH|JH{e+x_le#pfrG zH~XXAObh|P=Dz*U;=e-9Qf3$kS6;E?zeB89o$b#@STG*F)XG~q$$uqOu@UWB?M&D> zeJn2AHAZZpATExSskVX!9ygNKHQF_J!#U2)9U~@RRa73L*i64Y!5hwgZmi@xXQW~> z#OH0Opax~I`dt^a(WtdYzQ!$zgnfV*%5Ny)Y8cH`Iypbv7nT3ZwFX-aA+j5lu40$z1o>A*j*cy*O z>`9s80u@18omi;H2Af`_B7XAefoDB}G<1JZ4=+`;^V9i4k&lPSGjox#hLua)?vIAj zuj&<~SJ7a_z9F$y!KvQ?r6cR_oGJJ8b#hi0M0KgDPTjj*13t~S@+~B!%%FkB0{o1i=Af?-rq|mK+E5PmZkcX~`qLr1;KESeh>m@4+p0JdPIhQ&(O)7S09^e#EZDCcBru$i_8ky?x+IevVPYTv9CkFPlA z(>!o9-TjDZ{z6tXqRyzDHQZ(X?$i%FUwD2B7s5Tn5cOpCt(irZU}$jtz1LHR1;Y)A z>f&9?<7rRXFCA_?77ODKizY>SWXofERip&MBG{><@*ph~gbL;m0P4OSq{P@}q}Y0; zo=+{FTTuhbXz3%W3dDrslCR%{35gf;({n0iQy)wTuABj^&s!buJ)XYkH3N(V^HW`Q zru>~8$}p|7Ou3&sPv}Tj-m-ole4C^NeL zMMLnoRb=m&aNAv(63vf7^O+4`N~EXjqqk8nXkraIhXYK3%kQzr^pqY!N$a6?1GTwq zxu^u#X29L-spy-Qr9zaLX|VL*wWX9=y~B-CkvdNe+LcSTy#bjkR4ds~PPZ%PkPHNb z<=j)VE;BjEiQ3~VFmgDTEkbGZ@&iK^xmcTC0oa9HM*Fql+pI44TM>6#Wngzp14+fB zA&_Ntt}C}2!G!l`NOxAt%4HMnk(ySMVcTRJ^rM|lxXZWVqwZ!q-Rp1qY>2THaS6BX zow=^@{gm$mBhw7Ha2hzJT1T!?o$4#0bYA_$xiN*t`_QyP>l**L@U_^AN5N_wdF56H zpU3+hhBHj}bzkqkX-`bF%30Q26&+I!ssl=`0^AtEQyV6Jgq8r)w5kE%+gkvbNj~(h zuY2M$F)10>jy|5%{$oK5iF|LGC=ihHL`R3J1wU`Op|%2@fEUPoSjE(5xXeA{A&lk> zS%tcIQXKT#KNH7TX7f-aBy+f^WNlZt#$%dQBBH^{~{lbWy@ngPCn^f{I(vX($m84pr3iEd_|Y& zGC)wK3`$v@@jX*80Dnhfh3mrLr~7@=3T|Qo2L-uc{+&XBM!;Pu%W)sx!dG0^U!7bp zCUbN(4NDtNuuj)I1QGyk_a@YGG}(W?wc0o?8Qn)qm%Lu_wej=WLdj%OjiOVg1F0j$ z$N~D*4({!$KXL5C3kT#?)CvA@=a-R{Ob32^0`eEM3#S}~zfbk^Jm>o#zD4-cY=N0( zS2I*Qfx9#evEU|Bx1LR}luc?bC2eVLB6jBUYRgVG)@4tptZoObPAYZHO~`gMM^9?b zjz|(emNpfrxT@WT&A6up+a2cD{LK8cl&3;gVXMHM`o)OX;0kPWu-`6be-Z^hsqgR@ z^2Uubt)MH#PyXJRDh82h_X)IYQ*)6lyShK|dB|KgFzDXDnu)IZs!Ud3(LFjjRyc>I zz#t984^0;)w;yD5p}C0w@}L)<_uVSW`s29(FJq2QCL$1iQ1l9;(J+sW)Mpa@n|+kD z9xG)ctcm-|rLn8)Li?!JwB(RV6wkdYQC&y4Df!FiL$I5~)34hjx4|=B&yQM`Pp~M-Pht=eP8pit7YqWTpAqi$zjtn;N`B%{QWFDU3NpT~~sI#okUxkpH z7mE%u;F}Xk$pSP{6`|V^w9SaRi~ad677=#_5%(!m`jRY8Ywpbkl8NlJTvOD}IA{Du z99c-hx6Xk^YOSm9pQ!in8v$*?>?ybEJo28IF7Z3L8mK@iO^|@^@#BXZKjjwsicuSh z&CL0Mv3QZo9MRlyA--yLlYWG@!yIuNzmTB{da7+@@{=+q?#w*aA%TbFV50aiAwA*6 zb91`nuI6jK>G5r`ywv5fleAIbe6>0Mk_o_kCxi0ltKDY(#K_v_34>=^*6&6cJ_Of* zsD}(r+~L}pHgP(*v{bb6gN1pgBaZxm*7*2|@Q?177yFxcY9{QkA2s5bXyW<~HMC^* zTx56p!g`&2zv!&2`O2oW3&r(p@uHpx4@@*9J#U#;7ADhXPlFy?Do_z-RH;}0RqJxc z(Sm#h(m42h`Gab#@pE2kC-r<^Bscqpfh-%Q>z=}Nh4vACQ76_x%ODG8rAe8tJ7tJ0 zwjH&n-W^V>T6hOhPFSWIyX&L!xRiZOj9dIM!*7#V!aEpF7;|O2e#!EOQ?BPOmK7a~ zstT(}?iE5DSEcevQv0+X4Rv$bziz)u+P}{_UB?|nVkbwWJp2NwxjMIfC7gm`LGWAKYQW$XQ}w>d&!8;RLO;t)2BQXOLzZy PiNW01%BaHNLezf&0kUGv literal 0 HcmV?d00001 diff --git a/windows/executors/dall-e/init.bat b/windows/executors/dall-e/init.bat new file mode 100644 index 00000000..8494f4d9 --- /dev/null +++ b/windows/executors/dall-e/init.bat @@ -0,0 +1 @@ +call ..\init.bat %1 \ No newline at end of file diff --git a/windows/executors/dall-e/run.bat b/windows/executors/dall-e/run.bat new file mode 100644 index 00000000..da2f4a62 --- /dev/null +++ b/windows/executors/dall-e/run.bat @@ -0,0 +1,10 @@ +pushd ..\..\src +call variables.bat +popd +set EXECUTOR_ACCESS_CODE=dall-e +pushd ..\..\..\src\multi-chat +php artisan model:config "dall-e" "DALL-E" --image "..\..\windows\executors\dall-e\dall-e.png" +popd +pushd ..\..\..\src\executor\image_generation +start /b "" "python" dall_e.py "--access_code" "dall-e" +popd From 528f2a62f711a131df9e0331a9d81c51445babdf Mon Sep 17 00:00:00 2001 From: Yung-Hsiang Hu Date: Sun, 11 Aug 2024 00:02:13 +0800 Subject: [PATCH 103/105] [multi-chat] fix: scrolling on mobile --- .../resources/views/components/room/rooms/drawer.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/multi-chat/resources/views/components/room/rooms/drawer.blade.php b/src/multi-chat/resources/views/components/room/rooms/drawer.blade.php index 899e507e..093b5b3e 100644 --- a/src/multi-chat/resources/views/components/room/rooms/drawer.blade.php +++ b/src/multi-chat/resources/views/components/room/rooms/drawer.blade.php @@ -2,7 +2,7 @@ @props(['llms' => null, 'DC' => null, 'result' => null])

    From e6ceb61f80c33a352c2366b764ff8f3d7d56e56c Mon Sep 17 00:00:00 2001 From: Chun-Hsin Wu Date: Sun, 11 Aug 2024 16:55:56 +0800 Subject: [PATCH 104/105] Update README_TW.md --- README_TW.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README_TW.md b/README_TW.md index 22c39349..02751c77 100644 --- a/README_TW.md +++ b/README_TW.md @@ -33,12 +33,12 @@

    ## 關鍵功能 -* 提供多語言生成式人工智慧的使用、開發與部署的整體解決方案,支援Windows、Linux及MacOS +* 提供生成式人工智慧的使用、開發與部署的整體解決方案,支援多語言及Windows、Linux、MacOS * 提供多模型群聊、引用、劇本匯入、生成內容完整匯出、多樣分享等自主編導與指揮的友善使用功能 -* 支援多模態模型,整合多項現有RAG/Agent開發工具,可串接傳統應用程式、自建Store應用商店 -* 可免寫程式,靈活組合「提示劇本x知識庫x模型x工具x腳本」等即可打造個人化強大的GenAI應用 +* 支援多模態模型,整合多項現有RAG/Agent開發工具,也可串接傳統應用程式、自建Store應用商店 +* 可免寫程式,藉由靈活組合「提示劇本x知識庫x模型x工具x腳本」即可打造個人化強大的GenAI應用 * 支援單板電腦、筆記型電腦、個人電腦、虛擬主機、地端伺服器,以及公私或混合雲端等各種環境 -* 開放原始碼,允許開發人員貢獻並根據自己的需求打造自己的客製系統 +* 開放原始碼,允許開發人員或企業根據自己的需求打造自己的客製系統,快速對內或對外提供服務 ![screenshot](./src/multi-chat/public/images/demo.gif) @@ -53,7 +53,7 @@ * **Windows** 下載最新版本GenAI OS的[Windows版單一執行檔](https://github.com/kuwaai/genai-os/releases) * **Linux/Docker** -可執行 sudo [build.sh](./docker/build.sh) 或在Linux下執行以下指令即可自動下載及安裝Docker、CUDA及Kuwa +可下載 [build.sh](./docker/build.sh) 後執行 **sudo build.sh**,或在Linux下執行以下指令即可自動下載及安裝Docker、CUDA及Kuwa。安裝CUDA後需重開機,安裝完成前會設定管理者及資料庫密碼,全部安裝完成後會執行 run.sh 自動啟動Kuwa,預設用 admin@localhost 帳號登入。 ``` curl -fsSL https://raw.githubusercontent.com/kuwaai/genai-os/main/docker/build.sh | sudo sh ``` From 155d247c3d8bafb3f347983970e3f4ec7754e872 Mon Sep 17 00:00:00 2001 From: Chun-Hsin Wu Date: Sun, 11 Aug 2024 17:02:08 +0800 Subject: [PATCH 105/105] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b56de31e..be67e1a5 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,7 @@ Download the script or the executable file, run it, and follow its steps to have * **Linux/Docker** - Download and run sudo [build.sh](./docker/build.sh) , or invoke the following command to automatically install Docker, CUDA, and Kuwa + Download and run sudo [build.sh](./docker/build.sh) , or invoke the following command to automatically install Docker, CUDA, and Kuwa. You may need to reboot after installing CUDA. Before finishing installation, you will be asked to set your administration passwords for your Kuwa and database. After installation, it will invoke run.sh to start the system and you can log in with admin@localhost. Enjoy! ``` curl -fsSL https://raw.githubusercontent.com/kuwaai/genai-os/main/docker/build.sh | sudo sh ```