From ac471fd7432906217f7a2d46b37d49b1c9f512ea Mon Sep 17 00:00:00 2001 From: Erik Hubers <2598139-erikhubers@users.noreply.gitlab.com> Date: Sun, 11 Aug 2024 14:52:52 +0200 Subject: [PATCH 01/16] #2: Build and publish Docker images using GitLab CI. --- Add the ability to build & publish a docker image to the Gitlab container registry when tagging a commit. For now we'll publish both tag (i.e. `x.x.x`) and `latest` upon trigger. It's assumed tags are only set on the default branch and only limited amount people have tag rights. As it publishes `latest` it's important not to push breaking / untested releases. If required a more elaborate setup can be created, but let's start somewhere. For now it's assumed in README.md files we're going to publish to the GitLab Container Registry, with $CI_REGISTRY/$CI_REGISTRY_IMAGE variables resolving to `registry.gitlab.com/jirafeau/jirafeau`. Changes: - Fixup of several pre-existing linter errors in `php` files - Cleanup `Dockerfile`, merged `COPY` & `RUN` layers leveraging BuildKit - Added `publish` pipeline step to be triggered using `tags` - Updated docker image related references in `README.md` - Refactored `.gitlab-ci.yaml` to only run `before_script` for linters --- .gitlab-ci.yml | 54 ++++++++++++++++++++++++---------------- Dockerfile | 21 +++++++--------- README.md | 2 +- docker/README.md | 10 ++++---- docker/docker_config.php | 2 +- index.php | 14 +++++------ lib/functions.php | 3 +-- script.php | 18 +++++++------- 8 files changed, 65 insertions(+), 59 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0d2d9c4..bf59897 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,35 +1,45 @@ -# Select docker image from https://hub.docker.com/_/php/ -image: php:8.1 - # Select what we should cache cache: paths: - vendor/ -before_script: - # Install git, the docker php image doesn't have it installed by default - - apt-get update -yqq - - apt-get install git -yqq - - apt-get install zip -yqq - # Enable necessary php extensions - - docker-php-ext-enable curl && docker-php-ext-enable json && docker-php-ext-enable zip && docker-php-ext-enable mbstring && docker-php-ext-enable gd && docker-php-ext-enable pdo_mysql - # Install composer - - curl -sS https://getcomposer.org/installer | php - # Create composer.json file manually, since this is a project without any non-dev dependencies yet - - php composer.phar require --dev php-parallel-lint/php-parallel-lint - - php composer.phar require --dev friendsofphp/php-cs-fixer:3.10.0 - # Install all project dependencies - - php composer.phar install - -# Run tests +# Run tests for php:8.1 job_lint_app_81: image: php:8.1 - script: + before_script: &before_linter_script + # Install git, the docker php image doesn't have it installed by default + - apt-get update -yqq + - apt-get install git -yqq + - apt-get install zip -yqq + # Enable necessary php extensions + - docker-php-ext-enable curl && docker-php-ext-enable json && docker-php-ext-enable zip && docker-php-ext-enable mbstring && docker-php-ext-enable gd && docker-php-ext-enable pdo_mysql + # Install composer + - curl -sS https://getcomposer.org/installer | php + # Create composer.json file manually, since this is a project without any non-dev dependencies yet + - php composer.phar require --dev php-parallel-lint/php-parallel-lint + - php composer.phar require --dev friendsofphp/php-cs-fixer:3.10.0 + # Install all project dependencies + - php composer.phar install + script: &linter_script - ./vendor/bin/parallel-lint --exclude vendor . - ./vendor/bin/php-cs-fixer -vvv fix . --dry-run --using-cache=no --rules=@PSR2 +# Run tests for php:7.4 job_lint_app_74: image: php:7.4 + before_script: *before_linter_script + script: *linter_script + +publish: + image: docker:latest + stage: deploy + services: + - docker:dind script: - - ./vendor/bin/parallel-lint --exclude vendor . - - ./vendor/bin/php-cs-fixer -vvv fix . --dry-run --using-cache=no --rules=@PSR2 + - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY" + - docker build -t $CI_REGISTRY/$CI_REGISTRY_IMAGE:$CI_COMMIT_TAG . + # If we're on the default branch, also tag the image as latest + - docker build -t $CI_REGISTRY/$CI_REGISTRY_IMAGE:$CI_COMMIT_TAG -t $CI_REGISTRY/$CI_REGISTRY_IMAGE:latest . + - docker push $CI_REGISTRY/$CI_REGISTRY_IMAGE --all-tags + only: + - tags diff --git a/Dockerfile b/Dockerfile index 9eb0423..d4854a8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,24 +8,21 @@ RUN apk update && \ ln -snf /usr/share/zoneinfo/Etc/UTC /etc/localtime && \ echo "UTC" > /etc/timezone -COPY docker/cleanup.sh /cleanup.sh -COPY docker/run.sh /run.sh -RUN chmod o=,ug=rx /cleanup.sh /run.sh -COPY docker/docker_config.php /docker_config.php +COPY --chmod=550 docker/cleanup.sh docker/run.sh / +COPY --chmod=640 docker/docker_config.php /docker_config.php -RUN mkdir -p /usr/local/etc/php COPY docker/php.ini /usr/local/etc/php/php.ini COPY docker/lighttpd.conf /etc/lighttpd/lighttpd.conf -# install jirafeau -RUN mkdir /www +# Install Jirafeau WORKDIR /www -# Will ignore some files through .dockerignore -COPY . . -RUN rm -rf docker && \ + +RUN --mount=type=bind,source=.,target=/mnt \ + cp -r /mnt/* /www/ && \ + rm -rf /www/docker && \ touch /www/lib/config.local.php && \ chown -R $(id -u lighttpd).$(id -g www-data) /www && \ - chmod o=,ug=rwX -R /www + chmod 770 /www -CMD /run.sh +CMD ["/run.sh"] EXPOSE 80 \ No newline at end of file diff --git a/README.md b/README.md index 7d89261..4fff851 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,7 @@ Jirafeau project won't evolve to a file manager and will focus to keep a very fe ## Installation This shows how to install Jirafeau by your own, it's quite simple but you can -also use a [docker image](https://hub.docker.com/r/mojo42/jirafeau/) or build +also use a [docker image](https://gitlab.com/jirafeau/Jirafeau/container_registry/) or build it yourself. Check [docker folder](docker/README.md) for more informations. System requirements: diff --git a/docker/README.md b/docker/README.md index 2c56d26..e7e68d7 100644 --- a/docker/README.md +++ b/docker/README.md @@ -7,8 +7,8 @@ Jirafeau is a small PHP application so running it inside a docker container is pretty straightforward. ``` -docker pull mojo42/jirafeau:latest -docker run -it --rm -p 8080:80 mojo42/jirafeau:latest +docker pull registry.gitlab.com/jirafeau:latest +docker run -it --rm -p 8080:80 registry.gitlab.com/jirafeau/jirafeau:latest ``` Then connect on [localhost:8080](http://localhost:8080/). @@ -26,7 +26,7 @@ docker build -t your/jirafeau:latest . You may be interested in running Jirafeau on port 80: ``` -docker run -d -p 80:80 --sysctl net.ipv4.ip_unprivileged_port_start=80 mojo42/jirafeau +docker run -d -p 80:80 --sysctl net.ipv4.ip_unprivileged_port_start=80 registry.gitlab.com/jirafeau/jirafeau ``` Note that Jirafeau image does not provide any SSL/TLS. You may be interested in using [docker compose](https://docs.docker.com/compose/) combined with [Let's Encrypt](https://letsencrypt.org/). @@ -66,7 +66,7 @@ Available options: Example: ``` -docker run -it -p 8080:80 --rm -e ADMIN_PASSWORD='p4ssw0rd' -e WEB_ROOT='jirafeau.mydomain.com/' -e UPLOAD_PASSWORD='foo,bar' -e PREVIEW=0 mojo42/jirafeau:latest +docker run -it -p 8080:80 --rm -e ADMIN_PASSWORD='p4ssw0rd' -e WEB_ROOT='jirafeau.mydomain.com/' -e UPLOAD_PASSWORD='foo,bar' -e PREVIEW=0 registry.gitlab.com/jirafeau/jirafeau:latest ``` ## Data storage @@ -77,7 +77,7 @@ Note that configuration is not stored in /data. Example of using a dedicated volume to store Jirafeau data separately from the container: ``` docker volume create jirafeau_data -docker run -it --rm -p 8080:80 --mount source=jirafeau_data,target=/data mojo42/jirafeau:latest +docker run -it --rm -p 8080:80 --mount source=jirafeau_data,target=/data registry.gitlab.com/jirafeau/jirafeau:latest ``` ## Few notes diff --git a/docker/docker_config.php b/docker/docker_config.php index 634d58b..0becc2d 100644 --- a/docker/docker_config.php +++ b/docker/docker_config.php @@ -194,4 +194,4 @@ function run_setup(&$cfg) } } -run_setup($cfg); \ No newline at end of file +run_setup($cfg); diff --git a/index.php b/index.php index 78c1beb..37dd677 100644 --- a/index.php +++ b/index.php @@ -25,7 +25,7 @@ require(JIRAFEAU_ROOT . 'lib/settings.php'); require(JIRAFEAU_ROOT . 'lib/functions.php'); require(JIRAFEAU_ROOT . 'lib/lang.php'); -if ($cfg['download_password_requirement'] === "generated"){ +if ($cfg['download_password_requirement'] === "generated") { $download_pass = jirafeau_gen_download_pass($cfg['download_password_gen_len'], $cfg['download_password_gen_chars']); } @@ -114,8 +114,8 @@ elseif (true === jirafeau_challenge_upload_ip($cfg, get_ip_address($cfg))) {

- +

@@ -206,15 +206,15 @@ elseif (true === jirafeau_challenge_upload_ip($cfg, get_ip_address($cfg))) { echo '' . t('ONE_TIME_DL') . ':'; echo ''; } - if ($cfg['download_password_requirement'] === 'generated'){ + if ($cfg['download_password_requirement'] === 'generated') { echo ''; - }else{ + } else { echo ''; echo ''; diff --git a/lib/functions.php b/lib/functions.php index b3a84ac..4736b7f 100644 --- a/lib/functions.php +++ b/lib/functions.php @@ -143,7 +143,6 @@ function jirafeau_human_size($octets) // Convert UTC timestamp to a datetime field function jirafeau_get_datetimefield($timestamp) { - $ts = date_create("@" . $timestamp); $content = '' . date_format($ts, 'Y-m-d H:i') . ' (GMT)'; @@ -1239,7 +1238,7 @@ function jirafeau_encrypt_file($fp_src, $fp_dst) $enc = sodium_crypto_secretstream_xchacha20poly1305_push($crypt_state, $to_enc); if (fwrite($w, $enc) === false) { - return ''; + return ''; } } diff --git a/script.php b/script.php index f32ab20..8ebcce3 100644 --- a/script.php +++ b/script.php @@ -81,13 +81,13 @@ if (isset($_FILES['file']) && is_writable(VAR_FILES) $key = ''; if (isset($_POST['key'])) { $key = $_POST['key']; - if ($cfg['download_password_requirement'] !== 'generated' && $cfg['download_password_policy'] === 'regex'){ - if (!preg_match($cfg['download_password_policy_regex'], $key)){ + if ($cfg['download_password_requirement'] !== 'generated' && $cfg['download_password_policy'] === 'regex') { + if (!preg_match($cfg['download_password_policy_regex'], $key)) { echo 'Error 14: The download password is not complying to the security standards.'; exit; } } - }elseif ($cfg['download_password_requirement'] !== 'optional'){ + } elseif ($cfg['download_password_requirement'] !== 'optional') { echo 'Error 13: The parameter password is required.'; exit; } @@ -175,13 +175,13 @@ if (isset($_FILES['file']) && is_writable(VAR_FILES) $key = ''; if (isset($_POST['key'])) { $key = $_POST['key']; - if ($cfg['download_password_requirement'] !== 'generated' && $cfg['download_password_policy'] === 'regex'){ - if (!preg_match($cfg['download_password_policy_regex'], $key)){ + if ($cfg['download_password_requirement'] !== 'generated' && $cfg['download_password_policy'] === 'regex') { + if (!preg_match($cfg['download_password_policy_regex'], $key)) { echo 'Error 14: The download password is not complying to the security standards.'; exit; } } - }elseif ($cfg['download_password_requirement'] !== 'optional'){ + } elseif ($cfg['download_password_requirement'] !== 'optional') { echo 'Error 13: The parameter password is required.'; exit; } @@ -451,13 +451,13 @@ elseif (isset($_GET['init_async'])) { $key = ''; if (isset($_POST['key'])) { $key = $_POST['key']; - if ($cfg['download_password_requirement'] !== 'generated' && $cfg['download_password_policy'] === 'regex'){ - if (!preg_match($cfg['download_password_policy_regex'], $key)){ + if ($cfg['download_password_requirement'] !== 'generated' && $cfg['download_password_policy'] === 'regex') { + if (!preg_match($cfg['download_password_policy_regex'], $key)) { echo 'Error 14: The download password is not complying to the security standards.'; exit; } } - }elseif ($cfg['download_password_requirement'] !== 'optional'){ + } elseif ($cfg['download_password_requirement'] !== 'optional') { echo 'Error 13: The parameter password is required.'; exit; } -- 2.34.1 From 1066fd240bd13bd8cd475c4f8c16689646694af7 Mon Sep 17 00:00:00 2001 From: Patrick Canterino Date: Sun, 18 Aug 2024 17:38:00 +0200 Subject: [PATCH 02/16] Fixed Docker README - URL was incorrect - Removed warning about outdated image --- docker/README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docker/README.md b/docker/README.md index e7e68d7..c506b43 100644 --- a/docker/README.md +++ b/docker/README.md @@ -2,12 +2,10 @@ ## Run Jirafeau through a pre-made Docker image -**There are currently no official pre-made Docker images of Jirafeau! The repository mentioned in this section is outdated!** - Jirafeau is a small PHP application so running it inside a docker container is pretty straightforward. ``` -docker pull registry.gitlab.com/jirafeau:latest +docker pull registry.gitlab.com/jirafeau/jirafeau:latest docker run -it --rm -p 8080:80 registry.gitlab.com/jirafeau/jirafeau:latest ``` -- 2.34.1 From 4efa531d11cac24cf1ef486c6050c38d4e86ec02 Mon Sep 17 00:00:00 2001 From: Patrick Canterino Date: Sun, 18 Aug 2024 17:52:31 +0200 Subject: [PATCH 03/16] Copied information about Docker from README files from next-release to master So our users will instantly get this new information whem opening the GitLab page --- README.md | 2 +- docker/README.md | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 0bd28ae..8f4d169 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,7 @@ Jirafeau project won't evolve to a file manager and will focus to keep a very fe ## Installation This shows how to install Jirafeau by your own, it's quite simple but you can -also use a [docker image](https://hub.docker.com/r/mojo42/jirafeau/) or build +also use a [docker image](https://gitlab.com/jirafeau/Jirafeau/container_registry/) or build it yourself. Check [docker folder](docker/README.md) for more informations. System requirements: diff --git a/docker/README.md b/docker/README.md index 2c56d26..8252795 100644 --- a/docker/README.md +++ b/docker/README.md @@ -2,13 +2,11 @@ ## Run Jirafeau through a pre-made Docker image -**There are currently no official pre-made Docker images of Jirafeau! The repository mentioned in this section is outdated!** - Jirafeau is a small PHP application so running it inside a docker container is pretty straightforward. ``` -docker pull mojo42/jirafeau:latest -docker run -it --rm -p 8080:80 mojo42/jirafeau:latest +docker pull registry.gitlab.com/jirafeau/jirafeau:latest +docker run -it --rm -p 8080:80 registry.gitlab.com/jirafeau/jirafeau:latest ``` Then connect on [localhost:8080](http://localhost:8080/). -- 2.34.1 From 85b1ac6414601717c4bb94b12ea724e10b78f2a6 Mon Sep 17 00:00:00 2001 From: Blackeye <14815724-Blackstareye@users.noreply.gitlab.com> Date: Mon, 26 Aug 2024 11:58:02 +0000 Subject: [PATCH 04/16] Code Modularization --- README.md | 4 +- index.php | 116 +--------- lib/functions.js.php | 186 ++++++++++----- lib/functions.php | 474 ++++++++++++++++++++++++++++++-------- lib/locales/ar.json | 8 + lib/locales/be.json | 8 + lib/locales/bn_IN.json | 8 + lib/locales/bo.json | 8 + lib/locales/ca.json | 8 + lib/locales/ckb.json | 8 + lib/locales/cs.json | 8 + lib/locales/da.json | 8 + lib/locales/de.json | 8 + lib/locales/el.json | 8 + lib/locales/en.json | 5 + lib/locales/es.json | 8 + lib/locales/et.json | 8 + lib/locales/fi.json | 8 + lib/locales/fr.json | 8 + lib/locales/he.json | 8 + lib/locales/hi.json | 8 + lib/locales/hr.json | 8 + lib/locales/hu.json | 8 + lib/locales/id.json | 8 + lib/locales/it.json | 8 + lib/locales/ja.json | 8 + lib/locales/ko.json | 8 + lib/locales/la.json | 8 + lib/locales/mfe.json | 8 + lib/locales/ms.json | 8 + lib/locales/nb_NO.json | 8 + lib/locales/nl.json | 8 + lib/locales/pl.json | 8 + lib/locales/ps.json | 8 + lib/locales/pt.json | 8 + lib/locales/pt_BR.json | 8 + lib/locales/ro.json | 8 + lib/locales/ru.json | 8 + lib/locales/sh.json | 8 + lib/locales/si.json | 8 + lib/locales/sk.json | 8 + lib/locales/sl.json | 8 + lib/locales/sq.json | 8 + lib/locales/sr.json | 8 + lib/locales/sv.json | 8 + lib/locales/ta.json | 8 + lib/locales/template.json | 8 + lib/locales/th.json | 8 + lib/locales/tr.json | 8 + lib/locales/uk.json | 8 + lib/locales/vi.json | 8 + lib/locales/zh.json | 8 + lib/locales/zh_TW.json | 8 + lib/template/footer.php | 1 + script.php | 62 +---- 55 files changed, 895 insertions(+), 337 deletions(-) diff --git a/README.md b/README.md index 4fff851..f343ed9 100644 --- a/README.md +++ b/README.md @@ -311,4 +311,6 @@ Feel free to create an [issue](https://gitlab.com/jirafeau/Jirafeau/-/issues) if ### Can I buy you a coffee? -You can [drop few bucks for Jérôme Jutteau](https://www.paypal.com/paypalme/jeromejutteau). +You can [drop few bucks for Jérôme Jutteau](https://www.paypal.com/paypalme/jeromejutteau) + +Many Thanks <3 \ No newline at end of file diff --git a/index.php b/index.php index b7e2606..43bb81d 100644 --- a/index.php +++ b/index.php @@ -101,70 +101,8 @@ elseif (true === jirafeau_challenge_upload_ip($cfg, get_ip_address($cfg))) { } ?> -
-

-
-

- - -

- - -

-
- - -
-

- -
-

- '?> - -

-
-
- - - -
-

- -

- - -

-
- - -
-

- -

- - -

-
- -
-

- -

- - -

-
- -
-

:

-

-
-
+

@@ -227,55 +165,9 @@ elseif (true === jirafeau_challenge_upload_ip($cfg, get_ip_address($cfg))) { }?> - + + + . */ + function template_js_preview_link() { + ?> + if (!!document.getElementById('preview_link')) + { + document.getElementById('upload_finished_preview').style.display = 'none'; + var preview_link_href = 'f.php?h=' + reference + '&p=1'; + if (crypt_key.length > 0) + { + preview_link_href += '&k=' + crypt_key; + } + + // Test if content can be previewed + type = document.getElementById('file_select').files[0].type; + if ((type.startsWith('image/') + || type.startsWith('audio') + || type.startsWith('text/plain') + || type.startsWith('video/')) + && !type.includes('image/svg+xml')) + { + document.getElementById('preview_link').href = preview_link_href; + document.getElementById('preview_link_text').innerHTML = web_root + preview_link_href; + document.getElementById('upload_finished_preview').style.display = ''; + } + } + + // Download page + var download_link_href = 'f.php?h=' + reference; + if (crypt_key.length > 0) + { + download_link_href += '&k=' + crypt_key; + } + if (!!document.getElementById('upload_finished_download_page')) + { + document.getElementById('upload_link').href = download_link_href; + document.getElementById('upload_link_text').innerHTML = web_root + download_link_href; + } + + // Email link + var b = encodeURIComponent(" \"" + filename + "\":") + "%0D" + "%0A"; + b += encodeURIComponent(web_root + download_link_href) + "%0D" + "%0A"; + if (false == isEmpty(date)) + { + b += "%0D" + "%0A" + encodeURIComponent(": " + date.format('YYYY-MM-DD hh:mm (GMT O)')) + "%0D" + "%0A"; + document.getElementById('upload_link_email').href = "mailto:?body=" + b + "&subject=" + encodeURIComponent(filename); + } + + // Delete link + var delete_link_href = 'f.php?h=' + reference + '&d=' + delete_code; + document.getElementById('delete_link').href = delete_link_href; + document.getElementById('delete_link_text').innerHTML = web_root + delete_link_href; + + // Direct download link + var direct_download_link_href = 'f.php?h=' + reference + '&d=1'; + if (crypt_key.length > 0) + { + direct_download_link_href += '&k=' + crypt_key; + } + document.getElementById('direct_link').href = direct_download_link_href; + document.getElementById('direct_link_text').innerHTML = web_root + direct_download_link_href; + + // Validity date + if (isEmpty(date)) + { + document.getElementById('date').style.display = 'none'; + } + else { + document.getElementById('date').innerHTML = + '' + + date.format('YYYY-MM-DD hh:mm (GMT O)') + + ''; + document.getElementById('date').style.display = ''; + } + + + + var filename = file_name; + + + + var type = file_type; + +} + + + function show_link (reference, delete_code, crypt_key, date) { // Upload finished @@ -132,78 +245,23 @@ function show_link (reference, delete_code, crypt_key, date) document.getElementById('upload_finished').style.display = ''; document.title = "100% - "; - // Download page - var download_link_href = 'f.php?h=' + reference; - if (crypt_key.length > 0) - { - download_link_href += '&k=' + crypt_key; - } - if (!!document.getElementById('upload_finished_download_page')) - { - document.getElementById('upload_link').href = download_link_href; - document.getElementById('upload_link_text').innerHTML = web_root + download_link_href; - } - + // Email link var filename = document.getElementById('file_select').files[0].name; - var b = encodeURIComponent(" \"" + filename + "\":") + "%0D" + "%0A"; - b += encodeURIComponent(web_root + download_link_href) + "%0D" + "%0A"; - if (false == isEmpty(date)) - { - b += "%0D" + "%0A" + encodeURIComponent(": " + date.format('YYYY-MM-DD hh:mm (GMT O)')) + "%0D" + "%0A"; - document.getElementById('upload_link_email').href = "mailto:?body=" + b + "&subject=" + encodeURIComponent(filename); - } - // Delete link - var delete_link_href = 'f.php?h=' + reference + '&d=' + delete_code; - document.getElementById('delete_link').href = delete_link_href; - document.getElementById('delete_link_text').innerHTML = web_root + delete_link_href; + + + + - // Validity date - if (isEmpty(date)) - { - document.getElementById('date').style.display = 'none'; - } - else { - document.getElementById('date').innerHTML = '' - + date.format('YYYY-MM-DD hh:mm (GMT O)') - + ''; - document.getElementById('date').style.display = ''; - } // Preview link (if allowed) - if (!!document.getElementById('preview_link')) - { - document.getElementById('upload_finished_preview').style.display = 'none'; - var preview_link_href = 'f.php?h=' + reference + '&p=1'; - if (crypt_key.length > 0) - { - preview_link_href += '&k=' + crypt_key; - } + + var type = document.getElementById('file_select').files[0].type; + - // Test if content can be previewed - type = document.getElementById('file_select').files[0].type; - if ((type.startsWith('image/') - || type.startsWith('audio') - || type.startsWith('text/plain') - || type.startsWith('video/')) - && !type.includes('image/svg+xml')) - { - document.getElementById('preview_link').href = preview_link_href; - document.getElementById('preview_link_text').innerHTML = web_root + preview_link_href; - document.getElementById('upload_finished_preview').style.display = ''; - } - } + - // Direct download link - var direct_download_link_href = 'f.php?h=' + reference + '&d=1'; - if (crypt_key.length > 0) - { - direct_download_link_href += '&k=' + crypt_key; - } - document.getElementById('direct_link').href = direct_download_link_href; - document.getElementById('direct_link_text').innerHTML = web_root + direct_download_link_href; // Hide preview and direct download link if password is set if (document.getElementById('input_key').value.length > 0) diff --git a/lib/functions.php b/lib/functions.php index 4736b7f..4991f23 100644 --- a/lib/functions.php +++ b/lib/functions.php @@ -446,25 +446,62 @@ function jirafeau_upload($file, $one_time_download, $key, $time, $ip, $crypt, $l 'link' => '', 'delete_link' => '')); } + jirafeau_add_file($file, $one_time_download, $key, $time, $ip, $crypt, $link_name_length, $file_hash_method); +} - /* array representing no error */ - $noerr = array('has_error' => false, 'why' => ''); - +/** + * + * @param bool $crypt_module_enabled + * @param string $file_path + * @return array [bool, string] + */ +function jirafeau_handle_add_file_encryption($crypt_module_enabled, $file_path) { /* Crypt file if option is enabled. */ $crypted = false; $crypt_key = ''; - if ($crypt == true && !(extension_loaded('sodium') == true)) { + if ($crypt_module_enabled == true && !(extension_loaded('sodium') == true)) { error_log("PHP extension sodium not loaded, won't encrypt in Jirafeau"); } - if ($crypt == true && extension_loaded('sodium') == true) { - $crypt_key = jirafeau_encrypt_file($file['tmp_name'], $file['tmp_name'].'crypt'); + if ($crypt_module_enabled == true && extension_loaded('sodium') == true) { + $crypt_key = jirafeau_encrypt_file($file_path, $file_path.'crypt'); if (strlen($crypt_key) > 0) { - if (rename($file['tmp_name'].'crypt', $file['tmp_name']) === true) { + if (rename($file_path.'crypt', $file_path) === true) { $crypted = true; } } } + return [$crypted, $crypt_key]; +} + +/** + * adds an uploaded or copy/linked local file + * @param $file the file struct given by $_FILE[] + * @param $one_time_download is the file a one time download ? + * @param $key if not empty, protect the file with this key + * @param $time the time of validity of the file + * @param $ip uploader's ip + * @param $crypt boolean asking to crypt or not + * @param $link_name_length size of the link name + * @param $is_upload, determines if the file is uploaded or local - it controls which file-functions are used + * @return array an array containing some information + * 'error' => information on possible errors + * 'link' => the link name of the uploaded file + * 'delete_link' => the link code to delete file + */ +function jirafeau_add_file($file, $one_time_download, $key, $time, $ip, $crypt, $link_name_length, $file_hash_method, $is_upload = true) +{ + // TODO needs to be adapted + $move_operation = $is_upload ? 'move_uploaded_file' : 'symlink'; + + /* array representing no error */ + $noerr = array('has_error' => false, 'why' => ''); + + $crypted = false; + $crypt_key = ''; + list($crypted, $crypt_key) = jirafeau_handle_add_file_encryption($crypt, $file['tmp_name']); + + /* file information */ $hash = jirafeau_hash_file($file_hash_method, $file['tmp_name']); $name = str_replace(NL, '', trim($file['name'])); @@ -477,7 +514,11 @@ function jirafeau_upload($file, $one_time_download, $key, $time, $ip, $crypt, $l if (file_exists(VAR_FILES . $p . $hash)) { $rc = unlink($file['tmp_name']); } elseif ((file_exists(VAR_FILES . $p) || @mkdir(VAR_FILES . $p, 0755, true)) - && move_uploaded_file($file['tmp_name'], VAR_FILES . $p . $hash)) { + && + //move_uploaded_file($file['tmp_name'], VAR_FILES . $p . $hash)) + $move_operation($file['tmp_name'], VAR_FILES . $p . $hash)) + { + $rc = true; } if (!$rc) { @@ -516,7 +557,7 @@ function jirafeau_upload($file, $one_time_download, $key, $time, $ip, $crypt, $l $handle, $name . NL. $mime_type . NL. $size . NL. $password . NL. $time . NL . $hash. NL . ($one_time_download ? 'O' : 'R') . NL . time() . - NL . $ip . NL. $delete_link_code . NL . ($crypted ? 'C2' : 'O') + NL . $ip . NL. $delete_link_code . NL . ($crypted ? 'C' : 'O') ); fclose($handle); $hash_link = substr(base_16_to_64(md5_file($link_tmp_name)), 0, $link_name_length); @@ -548,6 +589,37 @@ function jirafeau_upload($file, $one_time_download, $key, $time, $ip, $crypt, $l 'crypt_key' => $crypt_key); } + +function jirafeau_admin_list_table ($name, $file_hash, $link_hash, $visitor_function = null) { + echo '

'; + if (!empty($name)) { + echo t('FILENAME') . ": " . jirafeau_escape($name); + } + if (!empty($file_hash)) { + echo t('FILE') . ": " . jirafeau_escape($file_hash); + } + if (!empty($link_hash)) { + echo t('LINK') . ": " . jirafeau_escape($link_hash); + } + if (empty($name) && empty($file_hash) && empty($link_hash)) { + echo t('LS_FILES'); + } + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + if ($visitor_function != null) { + $visitor_function($name, $file_hash, $link_hash); + } + echo '
' . t('ACTION') . '
'; +} + + + + + /** * Tells if a mime-type is viewable in a browser * @param $mime the mime type @@ -672,103 +744,79 @@ function jirafeau_get_link($hash) } /** - * List files in admin interface. + * List files ii folder in admin interface. */ function jirafeau_admin_list($name, $file_hash, $link_hash) { - echo '
'; - if (!empty($name)) { - echo t('FILENAME') . ": " . jirafeau_escape($name); - } - if (!empty($file_hash)) { - echo t('FILE') . ": " . jirafeau_escape($file_hash); - } - if (!empty($link_hash)) { - echo t('LINK') . ": " . jirafeau_escape($link_hash); - } - if (empty($name) && empty($file_hash) && empty($link_hash)) { - echo t('LS_FILES'); - } - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - - /* Get all links files. */ - $stack = array(VAR_LINKS); - while (($d = array_shift($stack)) && $d != null) { - $dir = scandir($d); - foreach ($dir as $node) { - if (strcmp($node, '.') == 0 || strcmp($node, '..') == 0 || - preg_match('/\.tmp/i', "$node")) { - continue; - } - if (is_dir($d . $node)) { - /* Push new found directory. */ - $stack[] = $d . $node . '/'; - } elseif (is_file($d . $node)) { - /* Read link information. */ - $l = jirafeau_get_link($node); - if (!count($l)) { + $function = function($name, $file_hash, $link_hash) { + /* Get all links files. */ + $stack = array(VAR_LINKS); + while (($d = array_shift($stack)) && $d != null) { + $dir = scandir($d); + foreach ($dir as $node) { + if (strcmp($node, '.') == 0 || strcmp($node, '..') == 0 || + preg_match('/\.tmp/i', "$node")) { continue; } - $ld = jirafeau_get_download_stats($node); - - /* Filter. */ - if (!empty($name) && !@preg_match("/$name/i", jirafeau_escape($l['file_name']))) { - continue; + if (is_dir($d . $node)) { + /* Push new found directory. */ + $stack[] = $d . $node . '/'; + } elseif (is_file($d . $node)) { + /* Read link information. */ + $l = jirafeau_get_link($node); + if (!count($l)) { + continue; + } + + /* Filter. */ + if (!empty($name) && !@preg_match("/$name/i", jirafeau_escape($l['file_name']))) { + continue; + } + if (!empty($file_hash) && $file_hash != $l['hash']) { + continue; + } + if (!empty($link_hash) && $link_hash != $node) { + continue; + } + /* Print link information. */ + echo ''; + echo ''; + echo ''; } - if (!empty($file_hash) && $file_hash != $l['hash']) { - continue; - } - if (!empty($link_hash) && $link_hash != $node) { - continue; - } - /* Print link information. */ - echo ''; - echo ''; - echo ''; } } - } - echo '
' . t('ACTION') . '
' . + '' . jirafeau_escape($l['file_name']) . '
'; + echo t('TYPE') . ': ' . jirafeau_escape($l['mime_type']) . '
'; + echo t('SIZE') . ': ' . jirafeau_human_size($l['file_size']) . '
'; + echo t('EXPIRE') . ': ' . ($l['time'] == -1 ? '∞' : jirafeau_get_datetimefield($l['time'])) . '
'; + echo t('ONETIME') . ': ' . ($l['onetime'] == 'O' ? 'Yes' : 'No') . '
'; + echo t('UPLOAD_DATE') . ': ' . jirafeau_get_datetimefield($l['upload_date']) . '
'; + if (strlen($l['ip']) > 0) { + echo t('ORIGIN') . ': ' . $l['ip'] . '
'; + } + echo '
'; + echo '
' . + '' . + '' . + jirafeau_admin_csrf_field() . + '' . + '
' . + '
' . + '' . + '' . + jirafeau_admin_csrf_field() . + '' . + '
' . + '
' . + '' . + '' . + jirafeau_admin_csrf_field() . + '' . + '
' . + '
' . - '' . jirafeau_escape($l['file_name']) . '
'; - echo t('TYPE') . ': ' . jirafeau_escape($l['mime_type']) . '
'; - echo t('SIZE') . ': ' . jirafeau_human_size($l['file_size']) . '
'; - echo t('EXPIRE') . ': ' . ($l['time'] == -1 ? '∞' : jirafeau_get_datetimefield($l['time'])) . '
'; - echo t('ONETIME') . ': ' . ($l['onetime'] == 'O' ? 'Yes' : 'No') . '
'; - echo t('UPLOAD_DATE') . ': ' . jirafeau_get_datetimefield($l['upload_date']) . '
'; - if (strlen($l['ip']) > 0) { - echo t('ORIGIN') . ': ' . $l['ip'] . '
'; - } - echo t('DOWNLOAD_COUNT') . ': ' . $ld['count'] . '
'; - if ($ld['count'] > 0) { - echo t('DOWNLOAD_DATE') . ': ' . jirafeau_get_datetimefield($ld['date']) . '
'; - echo t('DOWNLOAD_IP') . ': ' . $ld['ip'] . '
'; - } - echo '
'; - echo '
' . - '' . - '' . - jirafeau_admin_csrf_field() . - '' . - '
' . - '
' . - '' . - '' . - jirafeau_admin_csrf_field() . - '' . - '
' . - '
' . - '' . - '' . - jirafeau_admin_csrf_field() . - '' . - '
' . - '
'; + }; + jirafeau_admin_list_table($name, $file_hash, $link_hash, $function); } /** @@ -1009,8 +1057,8 @@ function jirafeau_async_delete($ref) function jirafeau_async_init($filename, $type, $one_time, $key, $time, $ip) { /* Create temporary folder. */ - $ref; - $p; + $ref = ''; + $p = ''; $code = jirafeau_gen_random(4); do { $ref = jirafeau_gen_random(32); @@ -1719,3 +1767,229 @@ function jirafeau_write_download_stats($hash, $ip) fwrite($handle, $count . NL . time() . NL . $ip); fclose($handle); } + +function jirafeau_create_upload_finished_box($preview = true) { + ?> + +
+

+ +
+

+ + +

+ + +

+
+ + +
+

+ +

+ + +

+
+ + +
+

+ +

+ + +

+
+ +
+

+ +

+ + +

+
+ +
+

:

+

+
+
+ 'minute', + 'label' => '1_MIN' + ), + array( + 'value' => 'hour', + 'label' => '1_H' + ), + array( + 'value' => 'day', + 'label' => '1_D' + ), + array( + 'value' => 'week', + 'label' => '1_W' + ), + array( + 'value' => 'fortnight', + 'label' => '2_W' + ), + array( + 'value' => 'month', + 'label' => '1_M' + ), + array( + 'value' => 'quarter', + 'label' => '1_Q' + ), + array( + 'value' => 'year', + 'label' => '1_Y' + ), + array( + 'value' => 'none', + 'label' => 'NONE' + ) + ); +} + + + + /** + * + * creates the time selection field + * @param mixed $cfg + * @return void + */ + function jirafeau_create_selection_array($cfg) { + echo + ''; + } + + function jirafeau_datestr_to_int ($time_str) { + $time = time(); + switch ($time_str) { + case 'minute': + $time += JIRAFEAU_MINUTE; + break; + case 'hour': + $time += JIRAFEAU_HOUR; + break; + case 'day': + $time += JIRAFEAU_DAY; + break; + case 'week': + $time += JIRAFEAU_WEEK; + break; + case 'fortnight': + $time += JIRAFEAU_FORTNIGHT; + break; + case 'month': + $time += JIRAFEAU_MONTH; + break; + case 'quarter': + $time += JIRAFEAU_QUARTER; + break; + case 'year': + $time += JIRAFEAU_YEAR; + break; + default: + $time = JIRAFEAU_INFINITY; + break; + } + return $time; +} + + + + +/** + * links or copy a local file + * TODO: boolean in config for linking + * @param string $filepath + * @param $one_time_download is the file a one time download ? + * @param $key if not empty, protect the file with this key + * @param $time the time of validity of the file + * @param $ip uploader's ip + * @param $crypt boolean asking to crypt or not + * @param $link_name_length size of the link name + * @returns an array containing some information + * 'error' => information on possible errors + * 'link' => the link name of the uploaded file + * 'delete_link' => the link code to delete file + */ +function jirafeau_copy_local_file($local_file_path, $one_time_download, $key, $time, $ip, $crypt, $link_name_length, $file_hash_method) { + + if (!file_exists($local_file_path)) { + return (array( + 'error' => + array('has_error' => true, + 'why' => t('INTERNAL_ERROR_FILE_NOT_EXIST')), + 'link' =>'', + 'delete_link' => '')); + } + if( + // sanity check if file can be opened + $file = fopen($local_file_path, "r") + ) + { + // close file pointer - it's not needed here + fclose($file); + $time_in_int = jirafeau_datestr_to_int($time); + return jirafeau_add_file( + jirafeau_create_file_array($local_file_path), + $one_time_download, + $key, + $time_in_int, + $ip, + $crypt, + $link_name_length, + $file_hash_method, + false + ); + } + else { + return (array( + 'error' => + array('has_error' => true, + 'why' => t('INTERNAL_ERROR_FP_OPEN_LOCAL')), + 'link' =>'', + 'delete_link' => '')); + } + +} + + +function jirafeau_create_file_array($file_path) { + return + [ + 'type' => mime_content_type($file_path), + 'tmp_name' => $file_path, + 'name' => basename($file_path), + 'size' => filesize($file_path), + ]; +} diff --git a/lib/locales/ar.json b/lib/locales/ar.json index a048c2b..f8a9ad6 100644 --- a/lib/locales/ar.json +++ b/lib/locales/ar.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "", diff --git a/lib/locales/be.json b/lib/locales/be.json index 7f38ca9..1fa1e6f 100644 --- a/lib/locales/be.json +++ b/lib/locales/be.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "", diff --git a/lib/locales/bn_IN.json b/lib/locales/bn_IN.json index 796ceaa..4c86aef 100644 --- a/lib/locales/bn_IN.json +++ b/lib/locales/bn_IN.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "", diff --git a/lib/locales/bo.json b/lib/locales/bo.json index 0a94967..353cbd5 100644 --- a/lib/locales/bo.json +++ b/lib/locales/bo.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "", diff --git a/lib/locales/ca.json b/lib/locales/ca.json index 9fa8499..900d618 100644 --- a/lib/locales/ca.json +++ b/lib/locales/ca.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "Una quincena", diff --git a/lib/locales/ckb.json b/lib/locales/ckb.json index 6277346..f4f30fe 100644 --- a/lib/locales/ckb.json +++ b/lib/locales/ckb.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "", diff --git a/lib/locales/cs.json b/lib/locales/cs.json index 8aee626..a310461 100644 --- a/lib/locales/cs.json +++ b/lib/locales/cs.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "", diff --git a/lib/locales/da.json b/lib/locales/da.json index a08c46f..645bcef 100644 --- a/lib/locales/da.json +++ b/lib/locales/da.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "", diff --git a/lib/locales/de.json b/lib/locales/de.json index ea3c290..76062b5 100644 --- a/lib/locales/de.json +++ b/lib/locales/de.json @@ -1,5 +1,12 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "Verschlüsselung ist in der Konfiguration aktiviert, aber das PHP-Modul \"Sodium\" ist nicht verfügbar! Verschlüsselung ist nicht verfügbar!", + "ADMIN_FOLDER_INFO": "(Datei muss im Ordner %s liegen)", + "ADMIN_FILE_SELECT": "Dateiname:", + "INTERNAL_ERROR_FILE_NOT_EXIST": "Die zu verlinkende Datei konnte nicht gefunden werden", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "Internal Error - Die zu verlinkende Datei konnte nicht geöffnet werden", "INSTALL_FILE_NOT_FOUND_TITLE": "Installationsprogramm nicht gefunden", "INSTALL_FILE_NOT_FOUND_DESC": "Installation wurde nicht erfolgreich abgeschlossen und install.php scheint nicht zu existieren", "2_W": "Zwei Wochen", @@ -54,6 +61,7 @@ "LOGIN": "Anmelden", "LOGOUT": "Abmelden", "MADE_WITH": "Erstellt mit", + "DESIGNED": "", "MAX_FILE_SIZE": "Maximale Dateigröße", "NEXT_STEP": "Nächster Schritt", "NONE": "Nie", diff --git a/lib/locales/el.json b/lib/locales/el.json index a0da96f..d9ea2f5 100644 --- a/lib/locales/el.json +++ b/lib/locales/el.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "", diff --git a/lib/locales/en.json b/lib/locales/en.json index 092980a..aa7559d 100644 --- a/lib/locales/en.json +++ b/lib/locales/en.json @@ -1,5 +1,9 @@ { "SODIUM_UNAVAILABLE": "Encryption is enabled in configuration, but the Sodium PHP module is not loaded! Encryption is not available!", + "ADMIN_FOLDER_INFO": "(File must be in Folder %s)", + "ADMIN_FILE_SELECT": "Filename", + "INTERNAL_ERROR_FILE_NOT_EXIST": "Requested File not found.", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "Internal Error - Requested File could not be opened", "INSTALL_FILE_NOT_FOUND_TITLE": "Installation file not found", "INSTALL_FILE_NOT_FOUND_DESC": "Installation is not complete and install.php file does not seem to exist", "REPORTING_AN_ISSUE": "Reporting an issue", @@ -17,6 +21,7 @@ "MAX_FILE_SIZE": "Maximum file size", "POWERED_BY": "powered by the copyleft, libre software project Jirafeau", "MADE_WITH": "Made with", + "DESIGNED": "Designed and hosted by", "JI_PROJECT": "Jirafeau Project", "1_MIN": "One minute", "1_H": "One hour", diff --git a/lib/locales/es.json b/lib/locales/es.json index 5053041..339c468 100644 --- a/lib/locales/es.json +++ b/lib/locales/es.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "Una quincena", diff --git a/lib/locales/et.json b/lib/locales/et.json index 6277346..f4f30fe 100644 --- a/lib/locales/et.json +++ b/lib/locales/et.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "", diff --git a/lib/locales/fi.json b/lib/locales/fi.json index db7eecf..21c28d1 100644 --- a/lib/locales/fi.json +++ b/lib/locales/fi.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "", diff --git a/lib/locales/fr.json b/lib/locales/fr.json index a9162ab..9850683 100644 --- a/lib/locales/fr.json +++ b/lib/locales/fr.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "Fichier d'installation non-trouvé", "INSTALL_FILE_NOT_FOUND_DESC": "L'installation est incomplète et le ficher install.php est introuvable", "2_W": "Deux semaines", diff --git a/lib/locales/he.json b/lib/locales/he.json index 3e40020..f5c72b6 100644 --- a/lib/locales/he.json +++ b/lib/locales/he.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "", diff --git a/lib/locales/hi.json b/lib/locales/hi.json index 5c19acc..9349097 100644 --- a/lib/locales/hi.json +++ b/lib/locales/hi.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "", diff --git a/lib/locales/hr.json b/lib/locales/hr.json index 788ce9e..fb75482 100644 --- a/lib/locales/hr.json +++ b/lib/locales/hr.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "", diff --git a/lib/locales/hu.json b/lib/locales/hu.json index 4d3b8e0..a381b82 100644 --- a/lib/locales/hu.json +++ b/lib/locales/hu.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "", diff --git a/lib/locales/id.json b/lib/locales/id.json index 74fc276..4ed9761 100644 --- a/lib/locales/id.json +++ b/lib/locales/id.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "", diff --git a/lib/locales/it.json b/lib/locales/it.json index c4e53b5..2b8600b 100644 --- a/lib/locales/it.json +++ b/lib/locales/it.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "Due settimane", diff --git a/lib/locales/ja.json b/lib/locales/ja.json index ee6a2e8..0a39a65 100644 --- a/lib/locales/ja.json +++ b/lib/locales/ja.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "", diff --git a/lib/locales/ko.json b/lib/locales/ko.json index 5c19acc..9349097 100644 --- a/lib/locales/ko.json +++ b/lib/locales/ko.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "", diff --git a/lib/locales/la.json b/lib/locales/la.json index 45aeaaa..e1b1bce 100644 --- a/lib/locales/la.json +++ b/lib/locales/la.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "", diff --git a/lib/locales/mfe.json b/lib/locales/mfe.json index 6277346..f4f30fe 100644 --- a/lib/locales/mfe.json +++ b/lib/locales/mfe.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "", diff --git a/lib/locales/ms.json b/lib/locales/ms.json index c01c93d..e97fa01 100644 --- a/lib/locales/ms.json +++ b/lib/locales/ms.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "", diff --git a/lib/locales/nb_NO.json b/lib/locales/nb_NO.json index ce80c40..c5a6297 100644 --- a/lib/locales/nb_NO.json +++ b/lib/locales/nb_NO.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "To uker", diff --git a/lib/locales/nl.json b/lib/locales/nl.json index 1855d0b..ca4aa74 100644 --- a/lib/locales/nl.json +++ b/lib/locales/nl.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "Twee weken", diff --git a/lib/locales/pl.json b/lib/locales/pl.json index 07a814a..6a1fa9a 100644 --- a/lib/locales/pl.json +++ b/lib/locales/pl.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "", diff --git a/lib/locales/ps.json b/lib/locales/ps.json index 6277346..f4f30fe 100644 --- a/lib/locales/ps.json +++ b/lib/locales/ps.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "", diff --git a/lib/locales/pt.json b/lib/locales/pt.json index 9ec79a9..f326529 100644 --- a/lib/locales/pt.json +++ b/lib/locales/pt.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "Uma quinzena", diff --git a/lib/locales/pt_BR.json b/lib/locales/pt_BR.json index c902a9c..638dc08 100644 --- a/lib/locales/pt_BR.json +++ b/lib/locales/pt_BR.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "Uma quinzena", diff --git a/lib/locales/ro.json b/lib/locales/ro.json index dbe2046..fe03dec 100644 --- a/lib/locales/ro.json +++ b/lib/locales/ro.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "", diff --git a/lib/locales/ru.json b/lib/locales/ru.json index 6452559..e9dc7f1 100644 --- a/lib/locales/ru.json +++ b/lib/locales/ru.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "", diff --git a/lib/locales/sh.json b/lib/locales/sh.json index 6277346..f4f30fe 100644 --- a/lib/locales/sh.json +++ b/lib/locales/sh.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "", diff --git a/lib/locales/si.json b/lib/locales/si.json index 54401df..eb4a94d 100644 --- a/lib/locales/si.json +++ b/lib/locales/si.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "REPORTING_AN_ISSUE": "", "SIZE_DATA": "", "INCOMPATIBLE_OPTIONS_W": "", diff --git a/lib/locales/sk.json b/lib/locales/sk.json index e40d2b9..a69e18d 100644 --- a/lib/locales/sk.json +++ b/lib/locales/sk.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "", diff --git a/lib/locales/sl.json b/lib/locales/sl.json index 7f06388..bb4c65d 100644 --- a/lib/locales/sl.json +++ b/lib/locales/sl.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "", diff --git a/lib/locales/sq.json b/lib/locales/sq.json index 6277346..f4f30fe 100644 --- a/lib/locales/sq.json +++ b/lib/locales/sq.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "", diff --git a/lib/locales/sr.json b/lib/locales/sr.json index 53f23a2..7755688 100644 --- a/lib/locales/sr.json +++ b/lib/locales/sr.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "", diff --git a/lib/locales/sv.json b/lib/locales/sv.json index 0145206..8399753 100644 --- a/lib/locales/sv.json +++ b/lib/locales/sv.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "Två veckor", diff --git a/lib/locales/ta.json b/lib/locales/ta.json index d6e0c1d..58c4f51 100644 --- a/lib/locales/ta.json +++ b/lib/locales/ta.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "", diff --git a/lib/locales/template.json b/lib/locales/template.json index cfaefff..ee38ca9 100644 --- a/lib/locales/template.json +++ b/lib/locales/template.json @@ -1,5 +1,10 @@ { "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "", @@ -110,6 +115,9 @@ "ONETIME": "", "UPLOAD_DATE": "", "ORIGIN": "", + "DOWNLOAD_COUNT": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_IP": "", "ACTION": "", "DEL_LINK": "", "DEL_FILE_LINKS": "", diff --git a/lib/locales/th.json b/lib/locales/th.json index 6277346..f4f30fe 100644 --- a/lib/locales/th.json +++ b/lib/locales/th.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "", diff --git a/lib/locales/tr.json b/lib/locales/tr.json index 239a432..c29255e 100644 --- a/lib/locales/tr.json +++ b/lib/locales/tr.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "İki hafta", diff --git a/lib/locales/uk.json b/lib/locales/uk.json index 6b9e17e..f609ac8 100644 --- a/lib/locales/uk.json +++ b/lib/locales/uk.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "", diff --git a/lib/locales/vi.json b/lib/locales/vi.json index bcfad0a..4dfcf33 100644 --- a/lib/locales/vi.json +++ b/lib/locales/vi.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "", diff --git a/lib/locales/zh.json b/lib/locales/zh.json index cf65cc5..43495b1 100644 --- a/lib/locales/zh.json +++ b/lib/locales/zh.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "", diff --git a/lib/locales/zh_TW.json b/lib/locales/zh_TW.json index a571dcb..2e8bbf7 100644 --- a/lib/locales/zh_TW.json +++ b/lib/locales/zh_TW.json @@ -1,5 +1,13 @@ { + "DOWNLOAD_IP": "", + "DOWNLOAD_DATE": "", + "DOWNLOAD_COUNT": "", "SODIUM_UNAVAILABLE": "", + "ADMIN_FOLDER_INFO": "", + "ADMIN_FILE_SELECT": "", + "INTERNAL_ERROR_FILE_NOT_EXIST": "", + "INTERNAL_ERROR_FP_OPEN_LOCAL": "", + "DESIGNED": "", "INSTALL_FILE_NOT_FOUND_TITLE": "", "INSTALL_FILE_NOT_FOUND_DESC": "", "2_W": "", diff --git a/lib/template/footer.php b/lib/template/footer.php index efe238f..637ce42 100644 --- a/lib/template/footer.php +++ b/lib/template/footer.php @@ -4,6 +4,7 @@ ' . t('JI_PROJECT') . '' . + '

' . t('DESIGNED') . ' ' . $cfg['contactperson'] . '

' . ' (AGPL-3.0)'; ?> diff --git a/script.php b/script.php index 8ebcce3..6ef117e 100644 --- a/script.php +++ b/script.php @@ -92,40 +92,11 @@ if (isset($_FILES['file']) && is_writable(VAR_FILES) exit; } - $time = time(); if (!isset($_POST['time']) || !$cfg['availabilities'][$_POST['time']]) { echo 'Error 4: The parameter time is invalid.'; exit; } else { - switch ($_POST['time']) { - case 'minute': - $time += JIRAFEAU_MINUTE; - break; - case 'hour': - $time += JIRAFEAU_HOUR; - break; - case 'day': - $time += JIRAFEAU_DAY; - break; - case 'week': - $time += JIRAFEAU_WEEK; - break; - case 'fortnight': - $time += JIRAFEAU_FORTNIGHT; - break; - case 'month': - $time += JIRAFEAU_MONTH; - break; - case 'quarter': - $time += JIRAFEAU_QUARTER; - break; - case 'year': - $time += JIRAFEAU_YEAR; - break; - default: - $time = JIRAFEAU_INFINITY; - break; - } + $time = jirafeau_datestr_to_int($_POST['time']); } // Check file size @@ -468,40 +439,11 @@ elseif (isset($_GET['init_async'])) { exit; } - $time = time(); if (!isset($_POST['time']) || !$cfg['availabilities'][$_POST['time']]) { echo 'Error 22'; exit; } else { - switch ($_POST['time']) { - case 'minute': - $time += JIRAFEAU_MINUTE; - break; - case 'hour': - $time += JIRAFEAU_HOUR; - break; - case 'day': - $time += JIRAFEAU_DAY; - break; - case 'week': - $time += JIRAFEAU_WEEK; - break; - case 'fortnight': - $time += JIRAFEAU_FORTNIGHT; - break; - case 'month': - $time += JIRAFEAU_MONTH; - break; - case 'quarter': - $time += JIRAFEAU_QUARTER; - break; - case 'year': - $time += JIRAFEAU_YEAR; - break; - default: - $time = JIRAFEAU_INFINITY; - break; - } + $time = jirafeau_datestr_to_int($_POST['time']); } if ($cfg['store_uploader_ip']) { -- 2.34.1 From 84b16a863e63db323f9988516d1605242da7bab6 Mon Sep 17 00:00:00 2001 From: Patrick Canterino Date: Mon, 2 Sep 2024 17:14:13 +0000 Subject: [PATCH 05/16] Update screenshots in README and store them in the repository --- README.md | 19 +++++++++---------- screenshots/admin.png | Bin 0 -> 38123 bytes screenshots/install1.png | Bin 0 -> 32927 bytes screenshots/install2.png | Bin 0 -> 68480 bytes screenshots/install3.png | Bin 0 -> 38479 bytes screenshots/upload1.png | Bin 0 -> 19337 bytes screenshots/upload2.png | Bin 0 -> 29250 bytes screenshots/upload_confirm.png | Bin 0 -> 44963 bytes screenshots/upload_progress.png | Bin 0 -> 17363 bytes 9 files changed, 9 insertions(+), 10 deletions(-) create mode 100644 screenshots/admin.png create mode 100644 screenshots/install1.png create mode 100644 screenshots/install2.png create mode 100644 screenshots/install3.png create mode 100644 screenshots/upload1.png create mode 100644 screenshots/upload2.png create mode 100644 screenshots/upload_confirm.png create mode 100644 screenshots/upload_progress.png diff --git a/README.md b/README.md index f343ed9..8c900b0 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Jirafeau is a "one-click-filesharing": Select your file, upload, share a link. T See [jirafeau.net](https://jirafeau.net/) for a demo. -![Screenshot1](http://i.imgur.com/TPjh48P.png) +![Screenshot1](screenshots/upload1.png) ## DISCLAMER @@ -50,15 +50,14 @@ Jirafeau project won't evolve to a file manager and will focus to keep a very fe ## Screenshots -- [Installation - Step 1](http://i.imgur.com/hmpT1eN.jpg) -- [Installation - Step 2](http://i.imgur.com/2e0UGKE.jpg) -- [Installation - Step 3](http://i.imgur.com/ofAjLXh.jpg) -- [Installation - Step 4](http://i.imgur.com/WXqnfqJ.jpg) -- [Upload - Step 1](http://i.imgur.com/SBmSwzJ.jpg) -- [Upload - Step 2](http://i.imgur.com/wzPkb1Z.jpg) -- [Upload - Progress](http://i.imgur.com/i6n95kv.jpg) -- [Upload - Confirmation page](http://i.imgur.com/P2oS1MY.jpg) -- [Admin Interface](http://i.imgur.com/nTdsVzn.png) +- [Installation - Step 1](screenshots/install1.png) +- [Installation - Step 2](screenshots/install2.png) +- [Installation - Step 3](screenshots/install3.png) +- [Upload - Step 1](screenshots/upload1.png) +- [Upload - Step 2](screenshots/upload2.png) +- [Upload - Progress](screenshots/upload_progress.png) +- [Upload - Confirmation page](screenshots/upload_confirm.png) +- [Admin Interface](screenshots/admin.png) ## Installation diff --git a/screenshots/admin.png b/screenshots/admin.png new file mode 100644 index 0000000000000000000000000000000000000000..157c0d82e63b34566e33bea2f484b9775c00c548 GIT binary patch literal 38123 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 CLjYy~ literal 0 HcmV?d00001 diff --git a/screenshots/install1.png b/screenshots/install1.png new file mode 100644 index 0000000000000000000000000000000000000000..6868082a116a749cb31b1312f8ce7f52d2479f6c GIT binary patch literal 32927 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 Ht9Skv9o~XB literal 0 HcmV?d00001 diff --git a/screenshots/install2.png b/screenshots/install2.png new file mode 100644 index 0000000000000000000000000000000000000000..64aec663d5257314043218ea671a5577aa610adf GIT binary patch literal 68480 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

#3#XhxK|8~4Hx6R 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 NC#5V|`Pn$&e*vLbmAe1{ literal 0 HcmV?d00001 diff --git a/screenshots/install3.png b/screenshots/install3.png new file mode 100644 index 0000000000000000000000000000000000000000..04428fbe4ce02be3ca1595eb1cc6cbaad5494c0b GIT binary patch literal 38479 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 literal 0 HcmV?d00001 diff --git a/screenshots/upload1.png b/screenshots/upload1.png new file mode 100644 index 0000000000000000000000000000000000000000..23dc334506931cd8a4cd420032ce755d12a1d1ef GIT binary patch literal 19337 zcmdUXcR1T^`**sBD&18@jnbjCYLr+-jVjvOwc1*>qNpfoq?-;DB{hOpYs9J`M1)SW zR*gsqZEaaKl8^}RS6jV%-_P?N$9o*_?|pv1_YVj0y~cT+*Ev4t_~yY`b0fixdp3eV zAVCvjgYzKJ%2?p%#rn0tf1*D|)C0d(1f4h10~NOH9S1(F_B?5J5(Fxa5tzTU2Kc<; zsKAGCJR>PQO z)=qHi;39@tm^FW4HvAK#nuu;2W|-!oZTLEiaPHGp05N*PQY%0p;m5)oK%ko!?;0=B zD{Zh61lqS-ax3uR?RwyFp!J54t3e>$qk1yHhud5JCr-JUL+h<n`gzB{*6X!Aw5SI29cS~uwi07o&n#OljcdXoX~IZ(`{ zfwpgx+^V}hZBO8XO$t{en9mqFY22(lC3BkuC4OR~8MXqjR zKinzhufaUb`0yNV-CF@0JY+ArO;6^m!jDN;B&Ui8gwP~IfdsUw>|NswM?i|m&h3!= z(D9am?SZ1W;8@bPpZr$*6cORs1=;*6~Kp_`c^^Kx)u8cWUUu|xY)Yw40MwlSh?H3B0y2-iq}X4Qn+F$hjV6&eWaFfq*C_ z`)2k9zO~0llmt<-F=l7h$Lit$)h#95+7uhJ5dOqb&VTyhJ;-cEQ4`i{Fs<5%{WVwh zkJY9aw65u_hTzj=Y*>K4bQ}*`fTRju%`KB$dwZFk{kr$+V+O*{6#8iil)<$)SdUELIW^ zZb)5ilX5Oh7x4+R6Bf_a{&Uc=LIj0)MzUBBFui?U~xL_UBy-elQ+t zRJR0XA!|^Y;uJ4G!(|CxwMA<5F~Y3S6oH|K(<;;JSw2R~I?}J3+JYUm%L^7+?{749 z#?Rby)lYp}D`n6h_El}Da?|#dioUeB1>I#%zjXpwv3Vl2V~D%yX(kU^IoUeEWbo$} z6R6;}zi3?_%W+%~qm5voMN53Gd$&5>^0|zbK(Q4@l%DUF&(7$inDSdv^Nmk{IfF%syYtNztutd zCFu*hAEatQ9y>xGubto;|7Is#YwO$?b6vx5EiLAbVr(xNx%XJee@$24I@dCWA5waBagi;^NEF~QLwg@Di!j$)W~y6Y5eW{S z$#C>I=j*IJAgIo13gp2=rI-0uy)ibuYO&JMx&2eRvJC{`4|toOm&TPc(4M7E4`Cio z0NyBp_grnuvJk)n%!arhOMpkdGi|2B)ni8-w=MI59$W8u-{m0E^4iW?-c+SF#@(5s_6agQYfk#bP9g!Xc+Yx8=uKcnap3i@8<`XP4g-u`Z52+l?p^0W|aGH;CdV+Ogc?zq4^UTIb z$}>h(n)gwpPKXvPjhNHIE$;cata3#OvGsVxMJ(@I=LV7@T8vcEObHz?9}4&VV+BL0 zU1o3x_69#@VlZTO&7us)UF-L~C5t_%;yh$FEa$`aEKktDxf%X z4NHkF;GPUh6A6FS*Xs4#1fVp+&fZUy59)_mvyY#}7C6(i7pMY|Pg*rW7X8;vK2kH+ z;!O}?AC4rcnq$4>u=ofJIx zr7})@gW$(phAQ_gpT4MF*o(Lu&E|j9>;7Q~%5CgUz^KJrAe{RNfjItnrjDltPk-41 zs_c=9VGQi=4%LTxo)(TQqA2 zRoWx=-Z0r;QRsB^Jsdh8>6l%8b+M>gkr?s&05S&TvPiTa!k*P&g>&YQH;5`iC91f0 zdtbX@!LQ+&j;;OQxjB-7bH9~_AUxOk#MBMH@N`H1S~3O6$HUl(hbeb=N#twJ85O{C z9w=(bAWtom-z5;6-jXWQ%gSERPM~bU_c|274&Y@iSr*G9hVL1};vRZ;q<0@lJxDAN z(?U?K6ZpB<%yX8`p=a1;e~qh$K6AV=A2b(#wLImVZ8~)`6B4d8T^!RV&)dIjKQMYj zW~1cCalom zahf9jB8vyiq?)=#sO(&X7QWlV_Y~c7;FuJ{U%C;M<{cH$Oy4=yA_`n2rjZ}hTu_chn89BN>&4NT2$%5< zhg~Ja6nwb7fCokES&=B5N6be4>K_X6;`^uXhhgs;M|KFfn;}xTyE!Z`GIt z06x#zm0z*hpVNovB2Dpc9UbY{>0F(w)JyOx>$CU?t6q!EKz^d z+VGL~Y+j!c=;0$E3^Lmj*gw#uYb|ThcQw`l|HT!D0BsljzYm7me4=TTud0eEquQa1 z!D{0cF%^Jx4W$u=Pyc}7?fQxZRoUbfpl^V>v^^=v+ld>Nu(%pjTQibX&3?(7*4L-F z5}n2%a}D-WNsac2&DUMn>DR6en3qG^w^MZvFCz-EMYS+R)%2epx7MC2C@~WZko-IudaBru zbs0wymj)t)Er5G@9%VXOv1I%=$-{?}QV`A?OugZ?I*1zI_|gE99L8@;PuVN)6aw8R zu@MS7`UC(t4YdB(p9T3}ZQbm=x(arMX9mh)Ls<)=eN_+qtsqa-OM@Oc?qZH#LN+bL zX`|Fluu+tj;Pgg1i?(%D*JjY#J;1g}A%+9{-=Frcpkfg5P5Gm_DdDm_Q;iDO5?@g~ zCmo>+De???n+NQ;1gRQ&f}b49cN2jw=u|8zud_%f+&wIP9Ri+~KMl=yl0~L?&Id`m zyY$~7&g)_i--anHM)!HNGM?Jfe_Y3{tzqBpKXSWx42u4tULG-`gKS@C%MR$I5wj86 zZ-fwc>c|oYQ&1rfDTQCH=$FfbhxKrT{v*3mhpSHn>tWa2yafd1rzh^%rjOym+p{>u za-Z^@z8B}4;io_QH?+B?)vykcveE!VTiL6?MJ6wdm>*!E8kkxzmu9vsVeb1;(q<5O z1rR#DuIgxoavjRN?wSoAhxHv!FxpR!zo1%VcYylv8>4B#iJ>23Ndl2YfU!qY0uAqp zTcFk&l{ryu>*1sJyGN~5Z$bfD+P1@Fo^RCgnEUhqBiQn~?lc-cN{Tvz76X+E0C8_t z&!B+y>@iCh#A)nXkr;mXlfDq~lY4dX09?9qx<5F!xnDRCfPUqnb2sLkWA{?ZEg5R9 zhN0GY%-D&FI=_W$w{9ptDkEXTOxy!`9b$EEf;amC)7-Wlzrt|MzUj}Xnpi(f{xhwQ zS}H?vX>92G2lrN5JFK3Tiz*GfPWt@>PU;!CY^{ zU;^TGkCkx)pYwsG6N~_#e6pGg$c3(DB0}@|L@c zPdim%d86hD^oO7HT)K;|x-mDCYSTtCCz_WGv??e}XlV&wt_W+;PkfFN<1WhlURZ!@ zZ4zIyG0;=TZnP1Hp`tJw_O5i)Q(%>mBi6k4G*SgRD;&Uam~IEvL4Go@&aNNpyforp zPvIe0a8m7!sRb&eXU-*_UgZf{!1?C&97r%D`(?i$2%EPlU(zw6Jl-&f>(Gh=;_GT9 zx_Our6TrTQEoO^7FRD$siBT0PMxVhJl!LupC1L%gjk!*+J+V4sHwHP2I-D^Hg|R*z zX&8$%sG2^Cw#ce%a1}53G@jJImS^LkdhI&{>%jn?U^^kz>t7_&aj57Kxz#{*@UktW6t5H!p)(X~V`9#-r+wR~(|HVn* zlH|ExiZIRZiD`<|WFDq`QBfykeWnXTOhrS75jJHknqf+8&3u~gwr^cL|D5q&$kxiiINInfHGQpx_N=r9 zfj0>FRCKbcJpeiTI*q;R||8e1k=pQgJ`@sceUx;E=F0dE0V0j~i7(2nJ%eE)U_Bm2l{5b4Cp0d8J);7J*Ot5+DV?@BCAz})#zClV`V;#*8Y@PBVk2S%_}>nW9^!Kr-L5` zt#m0H7lamkV|+k$LrJ%QgNNAm9za*VZ5T`%)LjIi=6Vllt%-Ggy~R*_ivqJ$)D31* zN>L6Md=M_!ce}yAq4F#=GiFWiwg|R0*Qxxfhi6ZHjlO2XZTtTER7%ff=@RI4G)0o& z-^)eQzfXw=pI{`x+*3-cM1$hgHjDMv)Cuz2ZGF6b4TyzD%s4(-Ra16m@Wkgj^QTAI z&W;;uCg84W%KU)u`xE$=TQ}+i&s^-9!Wfp&8B_TU@93DdUA3^U>^yfch_Hmz?^5<1 z3mbD!Fq$C66s!T^b5C}4$A^fem~$(*@nKI``>?R%b_gMlV^%@=ZGwM4ttQ=ZLw5;fH^1D6m4GgiKsEqG4cmF&TGTZpGEcStam`gNnKl=| zH*QEhQRU(c^9Z4!xnc4duXs~5hHF=CQ_6rp{dP>Aw~K^|LAN^&@UuY@HT=sSC$L*8 z@CtleQg_LmVAnLhM2|$!S*%ehJKfKEvJ?=JWSbdhZ0U4v-O%)l>6Jw~T`0HKRGTsr zRg015ov+qnb*u~Knzof&cV&^T>7!BS;vd0�`@V=U+-^P=Gwf)@J}toLWaT7e#Y5 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 Q03$&rr_2os^)BB2U(Ha*g8%>k literal 0 HcmV?d00001 diff --git a/screenshots/upload2.png b/screenshots/upload2.png new file mode 100644 index 0000000000000000000000000000000000000000..4ee4a3df101275cbdcf955b2a191123ca40232e4 GIT binary patch literal 29250 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 z z#XNL#CX6gz%VEMga|Pd-tMfCnETR$E4jH4itJllR9v5&bC5JLfoFWhp4CP$WFg8oaL=6&n3W>KR*0*3_dFG+Gof9=q!g z;(Bj4tkIKqcyB_m;D+F|G*wDL|5EPE^Odra4B>Six}}XzGkk2eh@La+$Yd)#Emwjt zKe({z$$1lm@*eU`i2AK*al7$m*Tj^WRM`}Jf1xkgP6Y+nqUi@MvXvC=y(`TX2kq&5 zd(cATaW3v6Pgm~A>S8n;n`-lS$5gVtOB{_+Ron?s%E=UQ`0)jQ7u!U}BNb%71`XcY zj>B?iS8AO)Gur(#px1P9kzQ@cQ~qMxTE)`-v`R3F8KI>vnmuIfC}XXUP|ZoV+&OyJ zkeMS64gBG`Y_Q&$@&> zLx_bL9PGxKv)OGnGY*UE_A?O;Cg>+wrO=~=wEzicaU{K@8S|CT%hxGS#j+M4&A+3W zxHmm~(nCf(h?UR#f2-Al>p31a&7nl2ilS**!`V$lg2(3yw%*keF^6*F9z=quy{lgH zZ`rW%Rgmu)0_g=x2#^1q6L7G4kN!7tyJe#4z#qaoRyePibAHpmHYEvs$TOJb9)>s< zBBWl$>7v8=rplg#VY;#fdZz%e10+&}c6*tu8nvt4alDnv+N!C>ylhng}{Vu~Zpts6iUecRQ98L1pg z#Mc}GI(457nuFl*lv1C{EAU6{!t`B0pgw?7#2Qwee2#7KxU)UMjY2^X71(Jd2hrn# z`R?A!#<;%Apzl#6^d|=2_gsVM)tmBu1#jY0^III9WcX6PzW6c=1HTNaeo0x7K_rq0 zuZO#|e*3#k-Kowaat8@c$Uw^%BToz*lP~rrJZ*x?t^2C1;>4;8`C0MgV!yf+jb&sG zpTO?qCktalwon=s2SX_~A!}v9?m($^4RC_Ud~T~HGD^SHF0v3_Z}=TIbEtbsXe;RO zpu}&!2llbuu(N34MAAE;cOpuEmfGWA&_CDQjN6>phcuNLR_>~11+IJSc1p$)1e2uH z7beiQqN;QK6JJznwXohY4a!5&iFo#Vgep<=UJE7`R%_l;;9)ZR{EjW3Qm9F}qFB2} z|IskBW&?1e;y89gle5*y|2(JxICW5oTSB&P=fH?Wy!knY6hcthJoCoWoanV_x7MoF zK$4GehHjI8F#1zRgzAcsbNIW!!-AU7SV)5N;-{nAcZ&RboVFqfB7yh} zKR2#_7)`mxYlOq*2kl|)3dilRLY3?(@2%k6jsi7B1A;;hFU!85#w$!y#my5tzhC>i z@wzoovR7V7uEOqm9Y%`<#0i}JmGaofNiWtqx8xkZLWb`WSa5m5zv8`BWnksR6i50Q z#nKZWeQ-)?0AUC?O-sHtO#}7Xk3~wcbRp$>u!~aH3SQ(MdiW776c~!5I|$jBetXIHHmZ)`TR0*Al}wtuJQe%AnqGg5Ts?R`k#@tfDsu2}{`Y^;?)~@AEBxzh12muZ;g`(}W^4MitpnRY*LcoGcEC!y ziT`H{2c#!JAjW_GejohL=OUs=S!!&|H+aBCCuhn4(*HkjG%YCP<^T7S6#u#R|K;retmhZ zh)C|6NV^?4rdjh5UU63YH**eW6T@%~_3_Onk%-HkZ{VPVd;boC9^As2AARkib8*5q zd5@Gf$thV|wfiS9^xp}YX$&+S#7kiUC6dBz#6jE9c2I|@#3}wup*Uu-!rJ~$u_s;V zRhC!J3qO$y&$&#fZLWkzyq9D|MK1+7)brBq*Tn~h2azi^MO3b>k z(@bi6bN6d9$^zJb6(EQO{b&Zurtad~DdD`j_h=@t5g!s<-?7AZPRf-GT&&;xYBC|} z@NI3a-ZEXXsj}B_KWR!_h?#BS`i7i3Mhvv$tI{IQ#AGD!8rS(sGY9p+X;gZgDP%g= zSh8}2SYD_@mGXF?WY@u4))svJ`iD_+`x)j!(ZR(fD$F(*{l%BiSU5BjuOR@3w)`id?nCtek z=WM3#?G<6#jsBspSFfbEGD|4W91H4&>$fHOe;X?` z@Q^b8DBbRKq~k!g*wf<31Nj%|`0}njZ4v3KGOtL-+MNacIXk+obyMIq^Lw34 zpoW}3azgzZ{%?;r20iNu7|o1UT>Y^{_Wjn%w*+n<<1)HC(6Kvp{8p&tlN zE(zU_`EW(wN-6FOei3VesGkWC`nh)>U*TNL{}=?)SFe?`@x0s0Vrx4zqc2A`+TVRA zJ6)bF%k{_wcAw@1^lPYrLp(*Rs2tg$jJ{Jr6)yRS{*0b8<7_MDTj{P#C@eRuJw7+S zN&1!ZF=klItJ{TtA}zo`38K*PjSKW5oTy!HOO&wB1kr%5MEIsx5dN8ao4^mjkm z>#w~==o>XkBS;2zAdSLB*IQfMf2!qk6py^Y=w5ezLl|d$=~#ew~Mu-6I_3zTe0<^Q@%*p4)rIEU_^SD zK$v{=(|OIr(U#|TCOTO}G>|Q)H9>cf;oB_zGr9Nh%#;z`v>HPNZ_Fcq?nkd;eePtN zOZcWv{G|XK-V1rU4P`t=WK>jkOO}yp4K--otS6?0*P6!7<9W}?)dgs&a*N;~o4Q zD8w`S3NJu;fIzoc{@3vX;2=kmR;~D&vI-xtjL| zp&R~(n=e{bfL}04Tk1HD#ss%47jQY-0Qb)?s0ayM&t;ph5ixw@BXd`>{sxn z;XsjBzdGVM9o9jLNpa0RXAB*j$N~h(ywetMU;R!#ioTGn{`-NAk7t7>6cplkYue() z$a~dL@+ZfXaO6!;$N`WZOcq;+a}wT|w=SRaf1vaUi)=Yg3=Yi0{{5r=Wdp8m;Me4b z$t}zMKb_~h{I$|w=z{00nwonZkS>C?pKjy3Ze-GhsCSX`6xJv~B!D7fKQ+1^9400T zd-1_~p$+}jM45_@H5nP74VQMm-`juICix*}dQT*mr$6#1)B5>!$ug;Xeb^rn_qwhW zw`KTl8`LE6yoy;lCpiQehk)@GY!ax1hRpnd^dM!I+g`^!Je2TCI0%&TnO9MZu}Mc1 z$W0K)ZG99T)LQ4B3$4`s4?Y&}ejP@A(kRngbV!}FyHKH`8qsLDZ*rly(uEK3#`$+D z_puXYHxoaVXI6JT3?~x+o^=lBn(eJ z_P))(yl?yesO_u6qHMQ!2N6&a5J4$vK@g-v8l?Pai9xz0hZu6`kOl!sN$Ktw8Ug8U z7`n@$JAW^J-`>By&)H|6{kyJn{+o+;=AF4-p66coy4PCw6JZofE=W*^2C}61?0v?EFIhAG~G*c_K z$ShZGoji!2Qu2W^%2;pVXbuJnmv>JGQz-NU2a%nZsgQ^#YiRSlZgI6t`X(!+od@ot&`_-A#RAAA znpmB=(m*!mLs>x@*(7Jjj2;{f^n{M-!YM|NRHcA28+*74iH1GfK%=Bv4jHdWCVfey zd?ns!sk8sJ6OwK*JG#qwGWYT!$ok>koz_dZt2tNLzpDTKqr%J4CPlX(^ZANv52A?L;4c=j?crAkw)lGU)0OMlm*MuOx$ z{AGiwH-E-5rh4X9?aES2bC7G@0uf3~`T4H^Qt3HpIGbU~n5muS1U4w_>u-w!J3JR| zz72|TxA@@V?-$Np16Gaad5oSi$5X~S4a3_owI2{be!fGc|J+T;zi6d5Vi|ytG7wwX zS#4+8cNQ|7XX1Um7ceaVyoFXzn(`qK?(`v`-PGZX*K#c%E&*_OJ2POzK z6LNWsNWYn*)&Sqz8jXAd0ww;|On`TQa&?8t{&Vjqz)z%s$MNRC%Y$0JJvo|lZ}4># zvr643-L9wN0Q7MI&_@NmUe|$-7pvw&ql18<1}OdB6JYKwEexopuBWU|bG({ed`=kd zUlefT>~m3>cb{LPh`Kx=g=Qa*#=YpLe5~gE-}iyComgacKQlrxB-^)bW5l^rwHs2K zz7+fzcsBFk-wtetsRQiVO^U$wYNJv{ZLTld4o<#W^{sm=+T&MdgDU!q#L4d;0SJ}# zJ$vfR$juo6i8+1!p|<&QvFx6wApriyAsv8}l*IRl7%oJ4leW1J3rHjMgRsT|8G}OY zRrr%zQPmmRNyDfP|PcpyWQk++RYFuJBwN4Nd~{_J`V! zVXIpnk^bA2zFEVc-fOzWXj&3+$%`L&)^8#Ul8YKGpr+r5S#UaoRhrpDg34?FYYBVz z)aLsHFKD&r+y*6R4EyJ7M4(CP%)jDw1Lak1tcU$c@LLCmv<%1SXVvyN)eG@ zhPf>VZKi(hxHlv@B9|ig1~Zhd?VTFPGQh-w;B5H=aMW*x`a0 zu0G{qQzYd{i=)|qU7pPK(L-2ARNrr84!RBZ1!n@05aGb>PZb)Js+BWKDH&>p5~M%c zXp@KKBUQYWgEirwiy^&MqP%P?Ji0J1OMPzpj_Wbh{RYu4@`h@@wBGyuOl-7o%&@Br z1ylfLws6|~0kuFrfW6;xNK!4MFrGv|k*EOOBh;qOoj{UOs#6nkeom9+pY`ryVT7Bk$o&ufl*zcME*yRUvETBJ|NlSd!96KGz^t#`*0DWGqcHK zjS|8K*U+$hJmzWUw|&1*f?bRUSU4;uT(V*}hf7uR5?XRIrDNNE66(NKGcSpUo@9Qc zQ$+>-8xz#___O?KJ4&_l5;cTG6zON*-!F}kKwPf6^4ZeVRbU0*NsT98MDuuv9CuQ~ z6ev|fKi%bF(8Kd%1xWy{ABVcI)=Xzu*rwZy0y!f~< zDgjiy_Ng~3EAR`#@Mjp(?eF1!o=Z#Q4jIXAbkeK4v%w-EUsj-MYypaQ#DPAg{q%S_1Y3}{BEkQ$()|gS(`56yNxlf^KrD!6AWXS}|9GlO=lLRj4>Nx+uc8 z^*_mtrhW&+xBj_1Ba~%m11EngQ&1?moz8BlItwsk0%g$$xXu9I{#Py>gQ+hm%DYnD z{2;aVzuR=1J0Oj$XtOo|s5>yG_HJ8^27)Nd zx7$<EFvQihWSWXR4AOITQcpXLw$vvu8m9S)_SInv@(`KLHBCR`*0uzn#m~O7N z$?eTlPm4d!MQvyBk;T!sw0X$C2)n-gk-9$3uhyOY5j)frwVE3El$Oj}1`Tk~dDPc8 zPA?Ksq|lh}=!69dD990f&+P|4K0o(dXC#WE@7RXY}G&hgj=nPe~TG&1o# zib%V7gnJt7@FO{X+i`cc!DYR>l7!E3w@3ppDFMnV%fT{~*e}9f@RT|3?)V*V6EMZi zPxHmX;qg0A&IRWHhiZW-qb8Tr6Xdji*b4@Yer}2%Q|slZICQUHZyn`U=c$nOB=N!F zaBfn^YBp^CR1B(FUzgLJBwjbEqlr~TibEjx*dL*BZy&ra(x4k7@=?EgV&rB$?W146fJ4m(n# zBrqiH88@5^^sSPOo9*S0QiQ>^=Z0RR-&`2o914Xk zU{>;$!5Iff$=mpfhxa{`f_J-R(vadqlK5-4)BfPL(zd03AawT%SG2Z%mcO=()F)(N zQyy2`$hkqM`8CqDHCV+9o;NgeIvdS`R?j*7o8f?an!? zL>g|ECZM5#74Z#}GZ;e;)tibK2mQ8#_s<3$waZ$Jq zPEJMEIN=&uYS0pcyslyei|R?*^8e=$+tws zj1crNc?`zkHg{)j_V?>!CYy3Vh(>b@osbLPG&)R*36%@W&e4?0_{ATZF(*g5=0wOL z;>7lPeb-1|T!W=)ensYHJ@WJi?D{H{u~_I>BmBj!Zz}q8?mL#m6T=I-!|enZa`K!( zx`LzcQ}$F4*y^%e%2<1N7!QELEfJ8X-A>*31Bxl?aN2PkX;28qYpGS?x`>OYid6f< z^fCVZmjrlRy=5+qe&e@E_m6S+aGLXwbJ&h;6(}I6PNjaN%C$;Qdkl1i2@?6{`P9Ie7xXPbpv#$s3SVWOF>| zTS{_4UKwvmp7oeJ=`=aoyZwqsz-h#Kgs*5*H*rX@NWojeYT^sms0yN4YC|7pD=^Z& z>gLZtEzuK-;)MR&4t10E#Bz>K1H2_jN~N*K|HmJHIPT6h*sk~Y{rm~xb8y(5Qz`m>bRaIbkS-u`7%5m_VP9aUE=BrVU%lZKq8McrkFkp@9Z^mVr%x9&oW;nPn zdaE5EL>>GXF#Rlk7hPdxy*3z{uS#|DD@wdw;KtDUOCpa^ga}|pR_A(C&&Zae*(POl zO&%$Z9?1R7>P@hnw3Jk>I+Pc?3xRBe@WbU#g@Ii5@s2t7hhrl;o z0|0l6OB)=L4=&aN95R86KtpeGsN0W(7X-{&S^CHEK%4J$VBqb}S#a@@?@l<620#qfTOk@ajA8Mp7EojmBIz^ z{jw$i+H!F~paR@~43@&rAEY2gCk9=73qTZncdkwh&LrKJ>SS*3^+2^E6|Ja+zmVpH z&u2Z{5?R461>{czLgctW4HSq)8}JbsS=Rl5Gh4fG&F}X^XL-{zpK?Vt@___^t9mWj z?zMlgJ|-l3ZBB2e?BVnDWOK!O2;8xiAcHlr)>FB7v8FWI_Nl9 ziK{8>CB1m&)(wwWHO(@8=`jm3(l+1jt$M~aT9V~cwd!}{C)=7})`4ZF`>M&?Mq(9K zIKnfMQZJ3U`V?gS*~H)YVOT&+VbncTte~f)^n87OH`{&GC#j^~Z9%PD0K%tyrhk*o z9HVvfot4@tFWyzrJ$tALM*Z6GDD0fyK`p zl!O!sRolH#1PSxrJv0%ZD>;{N-92%sxANJD*e%~#VQDUHfkWQxP=NoY?lex*G|mv} z4^hB^%0|Yx2&=qd%VLsth*T#Id|G$7^sTwQ22yBcS)K+*X4;rOAU^bUuBu;sCPOfl zfK5MocpS0~PSBR+ix9MxxI_UO(@4p34)tMU-xAr#tLU91css^K3EC|;JVwoG-Qw6> zW&F@bd?c*k&S=Oir!~=_LEmi*I$I6Xd~Ma|78_P9Z!kPV_G;svFeiAr0DUC2cVq+T zg{P&poGvYQIZcM5h3CdFU010s`<)-G^+huPWCk7^8>@*@P56JJfB%{k{!jiY%=I8; z_@_eSsgxRuFc=slO9jwA>a>#oq98mNsDJ2`f)K-D9C~YEMb`S-D4J@@t&vO>{}>(Jaaa3K0MC1dm5#gYA(AjtrSFqPDd-7h()WeTK|&lWXOGZ@Rn zzd01U&j~4TkR9Nt0k3vINFQ( zW~)%y%8{ZZGe?dVcQb*^JQR0moPYr@V5SSH=9M3KXjjB|qwKw;krqu_+0n9VjJOVP7*I)b5H%XmKD16d%O8FFy^2v8V~vMUwSrNzTAJy@H;IF` z*2eY1FY-m4p;$RuwzeAe{ZW!`}u$70&Tih z$ScyZ3)AJGYhs2vRkPHD`Vy;}$p<5TTRLe(L8f~ClbrO~WIbr(`Ajglnc7GV`>kmG^*Q@AKh zoAJfR9yUIQPrG`V(vd4V;>SNGI*t9k3@tJPrmODarrN^!{vL0GmM)t+LG$uz5+Y1xjE9<<8oCF12 z8ZTZyoh{3B*40yQbhA(xoGcvQwdD0;3WcHY^QuHC5r}on(jOB@hAs~D5m`NQ%5I{4 zCKdJkR#xzypoebuSJzSVLuq4sODWgNSWBM=+_?j)zH)R1|&j zbyGt-siC|$KcmmqbNTzDLa>`3bFD#6m_uI#ngrVxJR~|dVM&Tsb_Oo9{F=SKBaLm+ zT@F%P52>nz5{ju|^2DW^m?B&g^&fnFFCpqUOVG)o$M{a^@b6)a4m0*EE|JGM?U#Wr_6 zxx`82<^}0X0y+@` zc)v;RXROR!Y+)SWYTRCKilyRXR0+Rs^+%**^WQ(a@v0?t#wZ~cl@hw|sCU6SJTjIq z;T-#K{KnMhzHFr`*i@c7>`6}k3%N(1Esr(Lq1+dpPeHwRw{86((N+w3B^@@) zNLTVTjWC_c$TV@{!rsV>OH(M_sCNduHlsC^?V1mZ{uD29FoC78Rw?(zI{5n+$aR#g z`KnS2by(1Z#%W})F$CjYeta41YzSprCh{J;x*rxhIbDE3@VG6*081Z%#YS;2#GG5L zq|7lN)*drru>8Cm4W#?OQ4bW0zjO=Aj|FcFiXNmK{1G<{z0jXp#UW;=`Z&cgn__(`Y@bi}@36_ru~Q z#-Eg1M#uO2r|U;`dx>;+b0&!Wgv*l&4EkYxk@%eNe{V^)fc9}7`WbyY-C=^5tog7* z(O1_M6c9bY8+24%#xkHQg0CoPsT?hhCDk>?E|z)B31Eb zq1L*I(_H77uKxbtV)9!2XqdSxl1ZouFxyL5_JL+}5U51*cfw$ygn{tmqPBeSAS%OG*|!(b|ha{=E1u2N`2Mf3~Dm5$F)w%s*ravxr?j{M&oEk95f4mY&UK z7vvy|y95IK@a_qbPo2OXB%+k`$WbbYm_&-h+;4rpF;?%elprvNJ$Hojrx#a z!fn4DIe;kF7m(i-8;oNfJv{g4dFz7%0#;S>VB3g~IFq^-yebW@7kB*4T+UvbpMBEA zrST$Yt}3=&EoTI&rEzHXTr+TcZ{YUN|0CD(x7NYZ=9_ z$qQo2|FoSsk^-(3PE?X+B1Hj_#fSeeZ?XG9UF6y*HORh7I|ih?c6R~}7s_c=RFvK6 z4lqWzGb1B2Q)OU$x+Adqh(hU&)&-=z9qVwlFM&ao$;!%#nVGrfo;B;y|F<)8yb8+F z;HmY+7bd(snoQm9z&^hqb}j~bz2yN}Q&bJA>T=X|^b0d(#&t4lfykzP^6m0TsR+~* z(UQ%<8nxS?2+kdD{Omt<7~MdQ)Wh&BxJ&+XBe($kaem|2_FGZ?HdBeE^P6xoDaU}q z-Tn!OAe&Mce~ADbhnG8QukA|TGO2YAp?c!~BO+zJ|2g>K8cS+28?jNrJ2-1-R?Q_{ zh&92TqAy^QRIfQL!&F&S2Dh57kr1Ea;D=Srca>Yr=lAr;7Nq20zXVXJsKJ|eSXa$N zUzyQ{$Ta9mccH$`q|CAFo*E<2rX2hrM7M@rHsbW!n>3C2c!v1=|93mi@ ze5Kt(a9smzgaff&Du`@2omG>zNwKMztk#U3#Cn2pUZxLDXR! zpTE4&4fw_n9y~k>bU4RifXL-zslyH*6p?*hDOrraMBn$FwhhzmU^xW3DC&C4J5NKf}aJB)t_(9qBTMH!%;!^e$>2S-j$HMq#vwD{yMKj}W2Yy-bKTu%Kr z5J7q;I+$q-H}uY0{h))A?kNDiA2`5b?LxUdC>*bxE#X9(-UIOhLma$MIM(F1xA!~k zf29ADu=jVB!&-}PM*H_Ps!PLV$W=pXKb_D}m}i04+!OPM`BJZ+{5TOcn-29MM4j0-b>aC)*^= zU(Y+CpxnDBK5F8+d)6a;@@uM4Am&K$Mq7Y8*b!vyXX4+XcDiFL5GwMgG z`J7dj1-X1R>L4nhEYU*8y&*wXyC{GQVI}EaS#cS}i>tfv%a~)_Ga{b+^cO`0zNQSa zf9fPLRecHDRL1t<8fKDM^io~UW)!d*SG4>}XwpXtY}u&lHi633E|(`fBMx?4pat`k(yz z^HnPBhe4fchj98nT6fyID=*OtPNk|o$8kwZUYjt}o*&}_0TY(I9~$*_SA!1FCK}G? zxaQ}`4iTQ&X7b&bhIvB?HT9Fgl zn)No*lp(*=wI}Z}tB^Ebf6m80(Cc3F94kF4Sg{CAk_r>(ltUTB0{rI1d*u8_Bb=ub z?PW;RxrLmWp2~My{ABa=e|N_<1lDA?k{IL&;YxVFSj`=cP<{ z(Lis-f%o0VhNXYg7f6AWSr%=0aJz`gsq&=)Y6BJT$fr`I|2)!v1BD{}F2q!&$XeuC zxD5PR+=is_C4V~A;2*oNgN@a4lP@WjSEb};&o>#kdv&U%Kkt~*i8JotI4GeU!Da<* z0H-zJi~^6|Wv;k7Cl=Oy)d1<6lV7iPo*s~i%~8vmo>#h{nZKl6{#o>LH_$;X>0Ino z`98K@r5f`<_wc@8 zbPV9k;0sj`mcR2oIGiBDk+@n3NCD3LvGmP@IoRk(fgZGn;ej$js!PTpV*cBJ4U*a>rV)w^9`6C;9v(04ohZsX2*HwRoPNh{SR0h`t8f$t10b3EH6GjW3a1D)w}BPvWD3D51?A#hQCgmHC*w+i6sl4yR9bB zlxLwEC^M;=fkf5TLlzCKG7cAE{s?%D?WSztiH3&X@%Q%u37hJB zG_(p)6?xgWz9#z%*nz|w3z)}!SzmCg8VM3!;wQXB$G}p0{fy)_AIEEj7vI0LP0WHE z)u7XPDJc$nx*WH89ebQ*tIxC_kjP?TU|}@0mjHb+r3v@c|8mojK*y;vaDEn^55QMq5$z$qy)=HUW#8N5#^9x-==XZ(A38kgLYc0?Nf$3QZ#C|Fyn-9Vc zefWfCjGwpZbU5p!6)mhh_A;(cMoAN_Pi=Pmbl%*H`rbl>vz?Ba_BtsU?J+?+wW418 zueYEO*`_4-^#8o0Z5zPJ*}iNH0#y_KT&8d6WZOMDvSlW3X={@Pp_5BufYH#N%ei5q zeWCw~Y_n8t;FheAw^Y}7^d_29-`|^Q?xdjKHL_^#wsXL9yuz~>@riA3~$I&StR)EKA3;M4~DPs_1 zh~?-$xz>o#N8LewM3#$*u&}it3>2o;f7pR2D0%-~z3#%asil5Z#ZU4h&E^xYV0psr zGaHwfIW{B@WydY_vCR;#fC<@$wUcPS;yi@B;Ykc0;W71a^ROm)_+iBox`oe61=xo4 z)yUpmwVC{J9ss%E=X9SRx^l`Sr5xdS!{YCo(Ww8v^6zOMWwVY6`q*h;Pbd8$R}Ca3 z>FvMYX}H+5lif4@cCAQ$$fl4FO$VqBT6FskL_rO9 znU^F@5KtcY=>~*=>v4V49@YHL{{Guhnfm~b>n9*g^6-BS=^KmOCZ?QZ#h81HVpFF( zx6!hzs@sY8HBbIIcQQLY1V6^un%Cl&q+2%1u!p%}_`JdY+;MjPD;P-(jjlRQ!_DzK ztEM~*{yp8w^q`vsSP;m(So^W`JS{>cc&FP((s|W%^8O$7tMzf4L7;suU`eBS>gb$ zz)B?5;%ab*0X33x%=UNRT-|`7^RoPnJrpMuE3lhiQ82ICvil3p{GbRDQ;U$lr_7zv zr|*D%^i1FSNyC<&A+VPFvVYey#I&;#?A3PAZd%^X?VgJX!la4`2J=Wn-gg z@9K!e%=Yri?&YxTUQND=GdZQUfBx^DGfrGR!HP+TI|)If`5Ynl{Yl^TLC>|f8$16U z8{bwOTDURY7|UV5aAfLzg>9A`|M95?5xAcHDOP8Nd3VVwW#`Razqvtp+MrIWbbm~VY60w8Dq54vdO z!ocb`2ZnTX_nNi{=ryD!^~Fn-D2|JtiL zDe5$tr%hoYIy-rPSo`d`|sQx>yvt4?rB&AHwe`p=d_#|BOlzGHE$QMjV>J__H;l zj03NTMymUl>9_FzhGNU8tdDDBLX`T}h^Xe9a%Qkh7hpY*FQfD5tzukT?&vXD^+55V z8w8TiiQv(?k01Wm2R~|Xi8eOKZjWe|2G`t)gAc(d9lpd$v{C7 z=Ilgs+nGTVEDLj?`Okt9rpsdWlf2vlA5do*1kwF>*ZAQ_CCB*Wt#CaNpN2aOCtu_XfukqU|Jikhv%Bni zSWss2x{Jqkbk6T*3Hx84|BF2IpP3bSd)KtO zEm?s0Ru6knVf{RW8mjD`y^chbzk=~Qa8FH8sm&+)oX=fOvIzJ6 zTtD6h49xVjM2DKPZ``E0O4Y~edd-N5y4=Gp|K0~MZo+GU8VD-i*@vaCW_k3ot~X^^ z7$mgQGfsBq3{4k*Ai}j4o!?AUmE@1eFzwz-OjYCj>;>Ev+TA{CjjYmz@r#$La^H_k zvNns)0&72n*MEenK1){8Yq=`!(ZPrG6~$HoN6#z$yBW#*XCce@dP8}0hqbjiKRNQh z6*r%C!V#s-)gLD?8D$u)m*6I|9w=|q{dtffsJAE<-;uI;Z{4?9u%QV63#A5bdn5Yx zUR3uMSJu`-&?hRk0edB{?o0ywhcZT_-S(kz?B%Av@`LYr&jz(YO>ZcYbl1H;oNu7Ochyc~W?vzkW@w&398BKa+#wS?@&`Sq zend7LtEkzne)F827P+C9bx;O#$v)Kd>~Tc@`WG72JmQ=L_O?#~l8{`UuwUH+b_#AN z34UrC<^byi|1xI+0yT-Xv!%#Ykv1w4qB)BVYVt2tJ2ORHw2GCez@)!Kb{PFTE8fT_ zM~9LbqKtG6A%t(s;M znkOL)dnkhcQQOLQ?T6{TWrfyja%gnyA4XHi>0}g)Kjl+*mj-@@xw-kw!i0gL_Mg$& z*@;n*_SYdA;rEo`?QY+;@bi_AT(KX8^+fwvv7Yi|niukIzPa7$%t4M22u} zgP)fR>kti%|5MGA|A*De3T3I;+cRt3SKbQVe&&|O8W4!7pRA9bQh0LhMpb}_MmFh? z4f=aN?DqS2dL~~KEWm2x8+ApGb-n#G{Nk(f8d?h@q@21&a_;WVZ$zph%Tu~<)2s5{ zf58G4%4zIc+lO6X<2W_>m!GvC8RM2Q9C?K@BS4E5!8)8u*?eqm-B(x|GG97|C{0ik zDtxs6K^7-n_$&gxZ$VPq;>p@JdqH9FfPGF(bP@U6b#uXs`EW)0%^S!(s&5WrL9$q? z!4qAPiuUcpa4CH zwISEb$P5$?QfjrhjL)zDPv&g+#^GtN1ovA@yIb@_jz%Xg#l5v+C0)1`0Ig0;fyfno zRx=1tGZUl39G3bD=5^*)teLEhKmq0Zahcoj*UT0Ya9UJbV__9rss;tNxxf|*K=4Js zx~s*H&cQj=3FWbMDgCSQMt5vCr>zG7qJ}tNa6X6@Q6A{kaW+`VfCqhRh9*vgca6?W z2+(~Z22gG2;8%gZ@uh{irHKVK-?#e^WXsN*TYJ!GEwF~4Gr>~OXq5@(8x-O~3dXRy zE$KdR*a?K|#cx~OTE&oSi?8unKPth#hz)SxNUIiHaI5=M$+#smqr~Xc)PU;az`r;d zCJsT+aqdv8ITOCO$2vS+CzFgxj;^lFS(XyB+Vti;3|{ri`Nk`(yIxh*R4N*$tB!*e zk6fDq;57j046I?QTDP&uUPJm`M8Irb0e29*3!4jJu&Ipv98+f8HNSTV)Fw0aGLW6M zHF)qn+!1o&F+T);VQ}#@^<5^H)m1xuha-OI2AHu(Eb;wVDX)%N=V>=i8{Dbaj0Vs*LOfDhiyO#xJ^P z-9UwG#u4SQd~IaTKhZnUdg zL)J$|=;uEvWR(f~R>f47%*OF&i`;p^=9!Vt@c7P>9`cg6TYm%oPLfFA(9ibOQRt0SMy*v8SKb|ESSbQ>x( z(pvCK2)<@{$1BT}^{kH1)6Dg#{Suk#{sy^pXqPdBM_FcJc7A(>mbi6!({NIHm_}#s z;NZq%s}8qMrmnuKSsYU%<7Rpi41+m;;^=+sfB0=fax^AcUVJv)Km`YT&-MOt>u(N{ zvtk7jR}4qtYnlO%;Vd&|V}UhS^FsH+`r^BfsX4>Sx3Tg*Z*)`0Xp!fwHlw|7+sTd) z8-oO<4gl)N^jw@SV>B~*<%apfQ6hqe!MmomDxsW3_W*_PBf{R>cx2#2IMUxeDe;=2 zRbXEc196LE zsP%P1spTvX*EMd4RG&B@q_a~`$I+Qb5xJH8eOO`=WGAJd-ARWvnq7eX+r5t$A z4j|yR_7!b+wO*(t!Dm5{Kh6Px))g+%KH2LhJy&fc1b1TB5R~}o%pHv3bkH!z@Agq8 zPVXb&3>D^FAFfRaS4YmS|Nd@@(Abj53_#r|S&GatxEP|KdxXKm91H+96Odur%u?g- z(>OXhB4fdUoaa~6i(Jk3MTYDb-OkQNj`f*q4;-RGlap(CA+Bz;i0vv`1dD{LSLUZY1JVYjelB19VO(}%z7{@usHgC9qXq5vT z$8Rh#d9smwGK`@b{5yXGvr(nuQ9`#~GctHJ0|lH|APY*KHIcwN0?uYIl?{7295l;a zcmj{5pzovU8a_@&xLyX=?&*TGaWfj-I#cTPL**~0a%3R;Xi#PPg}|{HTM`p3@YWS7 z=t_STl|VPlQWC!`ad&G-aK9AWRQg6Z0u0nNJqv+k&|?5JLlB6MNk?tu9XV8dPOi%J z3vOlvJG;{G0lR$W?_B*0jn-@L5BmGVvm;E|PhxoaP80fE_*w;G{7zj1(EpgCx!5~Q zUv4{FvEu4}(0V;xfvil`^(_FSPQ$EW420F&n|IkaoPSLR-10(*u>N=Y@_vUZV#q-q zlW|OGGHM@)>=mfZw)`B39r;Yeev&2XYWL^@IQ>b<-Ks5v<4Pt$4i}>%(&V$Wi41&6 z$-Ytx3mZ4LJN6dcA%!q2jGfDLqM3+S0jPzgsUD6u!Pn~xaMWsfu7c0%*X>}@VuGL| zvYCjDD^y7GpQ@Nl2Mo<9bLKB(7~tOt2>#Oi0r}i-FfK6wkmfoKW)@<@y8befuF?VU zDvRHyA3Z$Mn26IUlLC;pgV}JYxwjP%9f7l*T227|CcMx%m(yu)&8^!7QkDvTRdZ87 z6Pu(#=+wlhPow5-W`iK>+C(uZ2$hoslV)n&rQE){ykw&N17{$7Dr|hDW&KRdw(#f~ zF_lhO!i{r7ujKu0+8-2w94yXrp-6=wgOq8buiDcBq7|&Pf z7QFQDuaLU09u!at-Fa2FNhW>;=4x;YOO{vmv|t$Y274bO_grVwy&va1eUPgS54^~i zX$hcXQ&b?d;R{%Sq9!A^wQ`FC zfNp>s2tz*w$_I68?Q*NJPFI{eiM$vNXFWluO>_|92{ul~cchL+0kg7}I8)M)h?t-Q zK#Q38qP~Q?nze^kA4#I@nh(vSrI_mcmGRE#?k9hwoqc4q+*lYv z7&P&a;8YPioxu!))UN}zmDEYIs`F{Poz z*iXCRcU`M4ZH}sMx%?CWX6+P=(mX#WAT26J92dU+?dIhZ^R@b`?jMJKoL>(k1p#7e zm0R2+^h(!dw^ViMZk)*Q5Pk>-_arP&kNx>cL#|vGKkhR`YoG49M!jC&A+c<$g|t8E zukDbpJT{p9?7E+Al%O1K;?X~(>yJI$kz>TmbbV%xu>m+ob50? zYV}?iXZn0~b#-*VwFz*$muNhaKF`EZW+aP$;r+rQSpU~cFT{&0)TJxWq1fs5z)_>$ zO;w3Q!GmU?&K7BtN3E~mL1`EkoXy4kJn`TVL0kKfl_`yja&tTNESGa6l6R55VL(;M z5EpwJDEGwYc0}TOmHbh671#uLYw&+%OYx7AzVO=Ic zMap^SeQN!_h6tKPu;l3+nKa@<*EXe|tJ_r?m-^Ap;r!i*434!_uujpv#ay@+!g?xi zZc<$9luk$0V>~omP+3rfZ>&X>^<%O;K*S-66{{jYSehP;I@%a5NVyuKICBx5kR_q$ zA0qer+Mrck;!Se3s*$GPU$l$&m&hfjC=)lLoyNo|m+4D@YXxvcT5+u1<79`yjX5(Z zATlu0J)#$QI&Y2JZVXBw2+T|U(CVeR8t^r2x3s^%;I_IOX{Ip4d~c{@ps$aiVAo@8 zlymGk24^w$7-RaO(o_!jy!VtKBwO&WFehc$*+VIt#6-h`4tPxOW!wW^5pQi{Ua^lC zPO;H#VZfO9gW6+YR^NcEv2n+vui!k>n(-;ge|FSWIo0UvcfO+{386-=_97E6SJo{xIjZ>L$eeTD z-s+{24C;Ndm%?y!cCy#=ZaP8`KoA*(uC=geG2c6mF|$4rRIAYh z&!GN?F8=Y!9Y>1kl_!fzlRVAp{J4r9pU;vpQ9wn%vJ9S+3i z5?TWVrc1?qJ)RMon_0Jp6@Zu_A&~sV!63v;nEU%&PaV%STuuB(hcS-B01iR$`Q;J~ zeC@A?=8X8X$g>o&2K9^-3R$+tta~4zmW56`SxOcF_DMIxgpQRDHY|ahKvgF64qdrq zid*7CKfisBaix;oHcUhUV|bI9DJ~JU zF@0$2CrbdRk*$X%=I7FL=l?n|aZ8H(s zPOQ-5eJU#2+cipD*XGm-g{lHYydhp>YBopIIi`_6xt~Iq>t4-Fl)j3dW1_r+OI~wo zRK_q_#Y-E&`F?5dYFTCSHPCz?4K%nokwO0CXdc5S$31CgG&&#4#B-XRW$geme~ zM}*DQ-d`dDDBy(c>43@uD>n0DBLHIQ&7RBWu7z|SnKgy4O7>-GykRVx-Gdw4ZB}39 z$k11AQ5TqK12}A|+0>TgStrk{X8?}&ehfjnCA`%P%S@qO;)y@6&!9W$`7NvYcfs_7 zQ@loGf)B3JgI$bucfbKlerIWSK=IH)%tvY1JV$Hwu>sG!Mp&&5Gc17sQUA+q`1kX( z^Ky|$@0z+F37=Pj%m6rtI_o}LI`sQEq3|R%E5m0MfFIOqh^58y^12V*_@P6YkR^e+ z?75STRf$6pA05+>!OJLk;Bjx1gkZf5vD&>mN@7H&|I!EE6?Guwt5A>|bO$C-tr%Tq zrbfUatrv4SYWs>G`HsS6f{voVg-6$Ryga>lA5!l$att$jZkXc@clPZGq+YFH&6qe_q|EQnsI>*CUke~#iV~II3v3%Bky#b2 zeiTEO!OdGkz~LI=U;yfxQCwFR?PjJUxspE$+I$44Z{HiI^hh^$n9b)U19uCD-+umK z5CxJ#VxC;Rn@i6?0`3{T5Sh?*^+_oh+Q|0`DBayP{TCY(S%ITauVnk%T*g_43H_vI z+80$4zdjg&ar>@BFjZgqToTUyY<%Dq!`0m@0p<)7E9Yp^}N zCqP}0d;j6JY{Q=~gq5-jyIsK{M4WhkbDs1$!cZaY_7&L4>44^D9N!W`I5N3N541Nu zy507~@8O(KbA~EI{dbFjBi(b8ltJb60;ciM<}HBQIL%@R3i|aMXv8=|tan|KD7am+ z*Z;)mnq|InOU?ayZEb^0w*8O@&2UR30*Umo^8Rsi`2sgb`UK4S z6Cra!<5F=$#{R|YIW@vwYrA+__r|EjME^`97NB90YrBNVtPzj*j9KKD?d+dT7j()n z@q++V)#G_Rs}-P$tK{*AC|U{N)j%pPw?Mh+u+N|MJ}{vIe%7u~zi0_a16b1NZ{|?J zH!_N6r-_~UuJ6v2ulE(gr58`u+KinzmLT)zsRZgzl1HzBw9L(Tg9+l}?d!DN=p2#% z^@4t5Hvs`Q`O>f@vGW0F2QD@k9ug`lrWp4J-huZ%g?AwlaHW`-YQZG%VOQ#ri->!! z?(zz4jn~9uLUo~vn#%Ic1u|L@giZ(r{ix?r;5xVi5B>%p(s*QgUWe(AE|*VQ(PA37 z_Z1)v>vIf?VMz`4Ph>UGZI;~bfZ#M9Xge|ei!h|-!I_JJ_t}WBc$0FV7J4^31~`q8 zp8dXSl3(68%i#4kKDtgcE63)#u%Kjk`p3+GX!ayIV-yMkG@*};#WT}1XS`vjhN4(c>rSh zOWkIXqHe8CbPq3(8EkW;O!O4ss%u2Vs!hAXb>fih5VnyKu7%j^77hu!p@C&_qrrgU!ZvkG3pJ7>QW;q;L34AEXUKf`_#quZ!#A9&iSdQ|v=g`i#naL=B^flU z$L-Wsdw)A@-^;8>j6uS62?kDRGcVmR{oa65sBZRyKzvWh!(1eKsX`=r$H6E*e?t-m z(Xl@{s}H|CzyN>AZ7Qw8Wj#mv*64rRcJ+JMO9*`Kcl?O-@8L^o+1YD_71Wvi8Uea_l{h^b5fs`!2N)_Nv-N|>F)BFz{6{@(OT7RFc1*T@Bq(GKI_2;R;C)~C?$ZFXS`JjFRcG( zEgCQ@W{spN^sPFmzpCS|;HxFi0*qO}(f(dYnn{%?zD8UO#^m!x?86d;TS zhBi^ZTYF~Cs0DJOEA!VEA0wD$s`yir-Cg{&$wb=MmWOm0W{mPn+IW!-RY}!B7ALSF z7pK`{ybIm!eVq60awF7eFT;R#F~se&022YV0yXC*{t&$|1CRJ?<$dwq1r; zycj?uIhjrEPpckMX?#?;sO?yYg2;IB>6mDg6w7#n(Mjm>wwcDUXfMwe9>F`#vJ#@J z=0~QP#2rxo7(VWTH}BrkWj@aQ^qVmUjwbm>u<3^8d|t95BAo5)<2I^*fjGc;TbhLQaCd;)OE|> zZ~Pz+vQ+Of4$Q(m4X{AJso2Z#81o}5$CID`#rmdei^$0R<8LNOB8`V4X=h^EUy*qU zN7soiZO0sAp$@j(Q%U--$oR#kwe*dxYT`7ZXn*AlZpqumuZ_2diU>6I%B|$A(dt&@ zmYL^SKK)2w8qLfc5L5zz zfmckFA;P%k4+$}Sf8wi$XyQ0sg>9?g$ zR_9zN`L3T6g);{>GcHm~Oq#F4^Kyk&Uto}<&l^52XKygaHRAm3`G1Q?-#rGr?01c!CKRcVJU7xwiHoDj?V@@nzf7 z`3K#FTSvx!rltZ=)eyX#+Hdv6;Tl5aa5x-*Yh_Dij2o#}*-u$QqUm2eP zt(W%O(-N{)00dSKk^1`j`^Y^30?9j(P%xSyMlS^*10uH$0J}&`_i|9sRA!hO`xi1O zcF*k**ti?5=Z{D|A7R0x4KUU_4}CIT7gH~N)-A2;eS-AbN#qr8PO<7Z>Y4D*w8eO_THO#|0eKGfYNP#xZQE zgXaY>-GT0FS#i!R@mU%ne^bqq2Rkc=!7ky))j}XyR+0n17at){%6Z}J<1|aRhv9R< z#(SON)-(3n~{j9VpQc+Cy(-1xpN9=NXiok5t4C0w z3a=RyLI<>9ZP&-jx2B^rOl_(bt-@7A3IUTx2-qiL$sozzqwZ4vV2?N45u@^x_R`2? ztL)-)_g6#2S9NE!qTLN6psfgbGw-hrPZ>ZlY z`7o?~vmp^5pqHOhnJf=tTl;pH@`Xi}Xa;+To1$vDcSa55>U%G8#W4^S%KjqeqC&dX z!Na#kw5qfAuWb4K)7nSRUB^u%ms&T@g!k-d>rajinM(afqP&?&=+je^C&p(!b1>sI zSYOmgea0vAHdBFssxhjTjXG9Dt+7`O1dC9 zheuZjPBSkA1~aCf#U$E0Sqk$M^T@XHb$EEu5}M$r#`h|D_UR@aXcXaP_>-MzIZ3u? zjS~Y^hr<{E5*sW#JyD1usnT8kFg`3D}nY}48VHQy*SJY9aiqm zip_`R{3vy7vLC#k2-=wVt9qeyW$38iCF3~9eOe6eY?pl*QVn^;#9r!9Bqboh{yoSi@{U{souJGXm;=kf+LT_> zvDOJzW6b3SCA9w&_m927&{?m>n-=t%k<+t@upOO>(cg^`BcmClPnWw@6+eUMr8RO@ z=$mk|1c|jopFMl-MzUKS+1@XagBZPBl1B81ur`fTQ}bIMcBd`|t@1Q)&VPMbio=6i zg5O;LwIa~4-?R;P1Uj`(a+*?0RZ{o5*e}1o>>U)$hD2>L6IW`V-F!*Cu;$O|VYJHr z{eZS0y~+W!+7PMgebu;rEV4Qu^(EyQM#BkXU`>q}1EW0jX|0t?PiTwZdVXF_^s_MN zYg;ElnU76Hvr8iebF(By>i4G$aH;#a)gnlUs}l;Cg2 zyN~X+38+P5+0%w)sS^iP>tW4s$+(2n!I61eD=!-Vw=(lCe z^lP~){y^s2U9S?)9gHJ)H@;2se@_?X|LOPml$BUmLZY_qPf7yU6_GF@fq@-1l}Ra{ z+5Ckkcy;k!b}^UCU%OKn*Ly;VB?oGLw9?bu%WYTWb$?uXA*r!yQsZ2%rdJIm-n4i5 zes_K#BZC|ZNSqJyZ*G2!sI2sy{;_cYxkt9A3_Q#%d@l)T?v6*bX=jtgNBdwR6OIcs^(=1gG;M_(X|tfmfWb+2W`d=k;dhWM&HvW z0oo$e%x#p6OoP{6XZ@4wv$0nq@T+2tgR-Fo&25qWA3SJbXKWBK=SH2S7C& zYm}723?^5&uhH@!OM%~O=Ss_ts%V{%Jwz)9WR34f`B2ZZ0-y0!fvYfhvF)G#&Aa~r z%n#74066szcK-k7@>t~UgO~WbZ)0}IJO=t54T6->5mJ^mpPD(141xeXJ?4A&IQh#8 z0;(JdR&ge#-VTq?*bxBffIzG!RX?w<(C7Mi9a}Sa?Z$p4=L${GmB$hA)Q`|x`28;9 zB=PmIL@GToKmTcHh@zGf@U4nk5-MwElY>xPSl8ZOG5qc>;AZxxKZhnD*$OH3xi!_& zwT?%!2&EKM6B<0bqy1@AFd_{ej{g0F{Z;Hfh99>9x&gicMTTHDeM1}pK!U-jq{Q{h z;_gS>b@GZT-?*~gY)JKu3f%ge%T2@VZcQD%y}YnwWCvy!BM{{;1|1G8qSARU9_Rk7 zU5_`-7O=sp?H19vV7vQ=O)2U48s?baK?tL{HZ{BJ7l3m+>ZOGcdHY zaBh~T+^{+3olX$d+ZR%qwQ;ULkSvXlyRkz1VdJC))*P-xrD&UMoE3Q3SsfgmuTlgC z=ZDEZEKB1H*7@K*3Rr;$ALfgg5Jk#Ez?}CZ{jnA9g?&rdkILg9DfuF%E9uvEh8gak zE3~t97&06N^c6bUqe*U~#V2uf z(F6?iznHXRk(X>3d1D<~nifOzHB=b)u*tr>wllx^IX;4=+tJY-pX{4RHs7I|A`JWK zS^1p>E|s6EyHQlSYp{KOLO_fYT6`_9O0dLvWb2Hr4O(z=JW5a0ljS4@jc*RFvU>K5 zlV(qG0kRvlVJc_G;w_SX+@4-nT(z9xMPwlqG$z)2>fcNW9gynStQo7u?N>?~d6K4i zyWhI#a&9H}lzQDvq%TJoO;H|ItyT!Igu&dAQZa-+T5=b&hKsduTVQJDL> z=Y~jS9c-xJqZh~ffwQTr$3lv<26t(0VwZ@tIZ(YWK|zMcAILPCl<9`!N9z`t;-%5Dwujz-#M&0cVGFV%Kf6KeRedK zQ|hLSH$F?B7k?k}{@L5BK1PASmKNgk9+|_l&t*BZ*S8mxu`uk_Vqf;a; zj4St_u7sSQCxm@c+3lmV8`-iEZEqJA@-#i0F|P&ds(;VCHc^F;WjdGSO?`$rQB&^j z$`#+967bj2%)T9Dl1LZc0g(`I*!pRCf!(~)pR1i6ZH?`Of2(hMKU@GUo9xjEnD%aaB8f3v zCs_P=*1ZX2kX0|$Wv~?HKiX|D(%j0C13qPRY!q)2QQWPkd?l5Bu)lA4HnBxEJXg8i@D6bQ?5kzJ6Q2b>>2sYc!F-wH3iF-f43`n^p(9 zdoK95_JX3`!wQxEs?5-Gyi`xyX6j2{Umu72 z1dpUhkl6UC_~s$~ICXJ%xcZ6L4jDf(1yH=L!y||q%4y2sIfI=PO#Y<7E_9EPXvWX?QEM0Ur`MtTjIsDLW1YdyAp$G(|F$2-B=qI@UqAOlG-+2i9t z&{xsc{n{(I*RK`~kzJY??;IbPo9mgH8X1}DnVTCJ81HmO4|rYobiSgzCNW~ZhP+j) z!PkNUm7#+%^kbtULs)OjH{FXLS_c#5VO;u^W&=$g%4%JZia)be7&QLoRAXmk)FyWAMk>Ecdre6Wpa&j*(r|xF_avGI=7uubFM>TG$&B48M zdK726vpM8)#4EI>=>RIm$2a2(M_84eBi>h zE28_h`TD}0YQZ?Q|DBZcF4XX#v)KQbVE5qZSpIxwL7N$Drf_{J3kTlg9I&+4~GsD2kH0rUJ7|Z9dL%z1o-9LaZhr=10oatIc+O(xWflKY(h?p zJDvOA9lKjZjiPZ~K{LV7wV*5J!tIvPu5j9*prs&iRb+Qttq83*P(2>$Jgi*<*S?hr zx}WdNXuZtxGZ)XuyFBSJmA?LY0ONPb-704liw`7LNi|;!Y3iy_j(b(PZ@p3zPo?g4 zi%-~9$cm$-#X!r{*3-^>NdCP?+wXMm^qQn8e!Z`*vH!e}EVNhiQ)ob9uSu4B6*Sz_=V~HqKW6vjvyP31D~DzV_}-hTD$yap zys4rYGh%;%!+)aYTjXX3l)}H1yWr2%+X%)0$GF?E7ZqwpxN4K!a#lQILHb|mck1iFZUk-@V@C3mbM$SvD7Jmi ztl+{wGg8SxDMYvLu{{&du89JJHId<$IQGQ}5D~DeGS>2@^pFhGCz7#yCi8b+Z|pS} zAcBESD&mx`Rtnw9G-|g!#k|_5-x)u6-xXan6N-&43ivh&Lo75YO*^2gbKu}M2w%&j2)1Guy*mAk8Y{>6d=cnU9OP};&yw$S!Cb>kARe>)q(emB= z=r_AVA@0mt9EZn5#i5U;MMaza{K1!QIB@pVJsd;s@kFPMN9mP2+)`PPgv<0ivfqnJ z_V&isL7uvJtxPlG?IV-vIzm4LPJJerbC(@@gzBzLxbvs%Sv5uj_Z$0820n$vSnU2v zl+nD%Yjwy`nKTiwY4jVF*SM{$))4Gm+OsQ@a@sxRo}T@&+xW^9_fg*I{K?OT!WYg9 zWiJr5=t8y`4vw6-71)`c&KxEFm<*$vN9}Bddvb~^ROHK5Q zm1T8#>&vD^JT2O~KW{@*GIe*;0>`8(8osQq{;aLHbCr475IQ7^T#=dWw=c-9jn3*z zp}y+?Pp<9`dTJ6m-5z{8(yv@>EyUY1#xw$_HuboYNeHkfm%s0M0oABo5+d;q-mhXsF@7Si&KaiMiJ@g0D|~8EiT!b}F(Xu%gWWar zc%i$Z^^I1x1kGS;n*Rn6-%Cf){i>aKC+83zW za7XDk?TjtjV@5@&+xfHh5`CD&2SbGe*hH>c^&I}UXRxI!6 z+92zkZG|7p%`&oWc(diqR?Kj=Y)}f!&BR~REF6`jcFF^|nSbnF9ccoGaAICZOL16$ zke<~>^5kQ6Y>wW%lFKhYutFh#z!poKphxUa^(R0DRsap>9MG(-(yckso_*o<0EMNi z{l-iFE&L##@$ zFI9u7=uyaWTW#PAc-3SqZiucSG0&O-!GJaP^x{d|!%D%gVna#Y1d4)|kTEs7xmC`k zZ;r(>9ST@gd#fITSzhLez2#>M^-)7bY2*7MF23B<^Ocr8tZAg#(alW*^p4~&1VXy> zZZ!C*bYzt^*BfB8S4xWwRn?XA!^uIc-wW$Uibgty73Ypx=SL+*7fY)O3Yv;6g@@EH zMUsuZu+6|e#Db-}MkIo(Q(IYwX;gdW;|%K!enSNxo~mBV^vpAq@9jC%*A%ulNea!# z2y1R*2>Q5}*BPCpIStq8PMGg(%o`Xlh}!OWApMMNJQV++Bc+oVN-FK)%HxCANgp-|kNLLd|`F2UV{Q-XVOcXxLuXt2p| zt-aRTd-lwnnKN_F`~k`JUb)`n&G&OZ_vbm-sImR_ErTVjhk$^3lYY+DW`AVKTkqF_ z-~5D`B51#PYp)UgqL#oJDcuzNAV4e_QK>u54wJ-GR4{C&R^-9`&~SVBGB|krug7e) zf)R_XpbQuwc^NJ_=Qu5X>9de^upt&7y(4HUZA9B*UBZhs+rXpX5Xibk%TS6=c}#OM zcBbqnewS})Wkt8}7K{9V}@t;TB1@`*7uWc#-lPZ6|J#Sg;bLv+qz?mtVk#|Ej2B$X#kI>P%eG zGrWqZ!QP`QD0?(yW^mb&z8-qB>%|olubfQs40=7D>shnCTvH56AvS3f^NE&Z{<>GT zU_^cYfnZplb*1)b2}s0HV4FBX%GPhWALbN?KYOuo!@)F&k2CPWSePegyV=Fs=V8&k zVYsCRJifmxS;o)fw|F%NVgZ&pu8gw)ju(?ZAqxR~ZZ)q4ue53wiM1lrxHu*G&oZ0y zWIv>tiCgxbe)kU1colmD9O?=#`c%8Y&8gZ0dNm%@w??s?@lAbIkGX%p%0>0sOe)mX z*=c6Z($+9r$+52A(r|f`Yd;8kCbjLeY%uJ(ulX78?LomWUbugd-`N^l#O~)Bg-X{; z-WdWxdn=1=-I?C!fBs;S39cU=;u3PjP6n@=rkWo##q{BmJBe8gM4fzvg0jObk)KAaImcy3&C8Zq&|JgR=KD}m&^;1`Uql|~*zhG?=NdOBMPA->85Yv(Z*#lTfRU&`m|rEFWzVceZ^19Dv*^y#OUY!_S+jy%kB3v zu)QdlHWM+`bDzPMXD0q;giMKfvW5mGV$|Ty5MBbpD)Z)Kr92z#Hv5b~{E}&nllO5< z-j)Jh(fTIJ%$|KK5P?Ep(52a!gppp^?nd~hxPom8vc+0-0;&(lfQ&Wm_dqB;C*+tg z#E~7LaG0&3kJ~?eN*A*|B>^#)SU#YBFW`>JRAB~Gl8OJ4PjA_K41>9!={R^lM*~9j zqJT%g7_Uw+Jd9}PeHn`EB#>8E+s4k(cgK;lTmpfNLhR#?`5>58k@WBDCq-YRli|zt zSNgA*!tHYVb5;|o@PJPPFo=H|-WZajurTT>PKnHo*^!nVp)UNm#LWAn z%uq;y@))z1#}BHTlH#&Yt5VNy8EeB_YW5kT{iY~>41IDgjV%b8+kg5b8y)#70(q0I zA6cgQzoTxpNdwoF;=Qs57vQU_a7<`F{s z0Lp3Yr;;C##S`3n19D1u%l*yre52%kw(_i#;pUl~;p^GFQ03^Y)=Ao*OpvlM&EaA8 zXo_Q9!gnn{=yx#Hnwg+U8suc|F z{U-n1k-urgbFAiiR`=lB?Oa;*EEN5(4wZ>z6ZXY^OkKp7x==Gmy(`8@)S@;B1=?W=alK0?|x(a;OdY{!{8Zjt|UK>A3(y}D6>@6fJu0gny}!*gBgz=*Wd%S-e($$fk6c64PK z_4OvZZ{V7qp&~=~^nV>+tFa|67uEv@A`blC&BD(ByrmKeqD~jTebTsMVPz5GMtdF( zd_jHY1)ZX5zYes7NwMjl*&ER!ABFvSQB8`PPlFEp9-^{qF8i&|U4^{X<|j+D9?4Q>$FL6;i%DzCF!pu_k#pW$?QE_Xzkp;CoIShb%Jt zN}AJ7ddJY)yH|IMR5X2EFHZH<(>=#z z>@W6c_8sVF$P5#aK}p4eIl1ZRc{lmwwdi?>E<*LC&~r__)>IgDPf~sm;ZLd6z$Ucv zNXW`?$MLAhc%;#(iZ!36>i9M2>-Hqo3(RL`b_sp7$^g75ZhZQofu z`L6mOa`oy8^Y!;Ww`$oIM`er!uT$`5y8^}gkA|k^&VDB2As zKb*YyY~h$X`7mxe>Z1(;I2!$`_gw(;l?Rf>dV||yO3{uO+oj#N;_f7JdL2v4>a9i> zM%$}4&LR@{f(5g-TyZ=V+YnUT_{taPZ>uWf>O~oxPTWWq=O8}^+LuQjiOmW7+6=Im zo`=#orwg#RclQHCyzbV8B4!Xb-evkNt362{!NKuuu5-a8iB?Oe&yWYs@*{Km@=QHA z+EnU>tLnLGDYS^|HpMWSvOuz{%Rx`xNr*5i*-N_RU}V{WoVThj`uJwf4IaVD*++;< zJM|97WYgGG9i;H)U18m}0{(WKtE$N>wJ{D_ks1oPuA58VusDV($a09Tv5CE<0nn4P zud{^Q^LLoO#KVXN0mEL(>l}7;Oc^!B*q0h@oF01JJ9CgYsdLjaq!w&&B!x)bsmC?X- zj6g)KJ=2S;%KPM{_wG;)g^P!)HyVZfqm!e}lXQ(W4W&iHrA_Gpja~Iv!>_Ep8k-wy zvjVzYF@|pP5`v~M6*%xZUi!oGOOz5^U`@r5INCbey~lJ>1}@>){PRR1W5ZDv*TuCN zCv^8NNyV<;Cuc*ztq%|Hm2xO_&74o(l$Tctx_$EkPoaQGnIcZ=a-c`JY*NxJm(>#r zVXr7r@X3;T%gfVQsbxP*=UWpQmNjIu-hh;OTz5P??G+YaxNT0HN?YA_ETeS$SI`PV zV;*BWdc|fK_?89%e;~J}H-E8Xdl#wkIe#58Ag4h-N3OAcLMnZPYNhe|G;Dp@sowAH z*i6i*skQMgafSLS*QlY7&wfq$t5=)uhm0wUj464yU16iAta*C{mE+^GuDao=WlcmoNv%*`8xPh%m!Njg7sKb694=EJ-g5Y}S=A$BSLPY~#aH zJx#-^QI*C=_>3>x`WJ0-4tB&F?);LwbAnUGRz6ts+pjpzC2!Rsh7yOW;B_QPS)(sE z{Tb8)#D_lmANU?eFYDo&-t@{1bpkeA-Q>xHjUYw&s%kl8t7MsDL-@b3Z2NqYD@Fw9fT8l2A>#Ty|D07}ODA}X7U0Fs9E`SROUC7r0!S%zNv>SFaH z;yI;0?Tpo~1^MChVv}(ye_`><_Ua$P>YL>zGS_T%Ph)9a58*S?aVJjVecO2&Mja#i zc}37bXgrb5I;J#mC4Mir?UtsEAy9-aCQV64EEY$HPPCUs$^-yBjWIJqX_y6&7zy@n{xU1 zheL)}2SPE9_x6bc702i0?2(MY5Vrg!ux(Q$`PcetnUvR zh)!F2Xa*+HBnd)>cdslV9Pg)@Xj|rG=ln|%ZHYosmv@0);$jvoZe<=nx{qSpez<$D z#8$?oH1G>I23i?^?HhNtX%F+;8g#b!N@jaroj|+# z-ygkg@2PAFQMaKXlfB3^GzHCZbD72LC=!ieFap=prxbJyx)Ihw}?S}RHt zhRMurSL(RYUH)m)@yCCc-SesseZuO4TnG9=$5GM1iGL;ciipI6I#*#R1a~_9gFwV( z6ui)#kWky-_xGo49+%USH@q^PB_h=jVk>&)Yx%@M`yp}_te$L<)~7}w>5nZ=e4L+| zFDpGXL zX^5!ET>SZvfC85tBDPPd*;vah+|3k1K`~Zo_dCwug2*54RZ*CdOYA~@zpq^f>26q0 zJH~U=1u022BhKobuUsbZ=Nk&74E7G*jZMy_sFKI<4l+}lUIo$dsk~xm8+NT?w@LX=MR4mY>ib2T=x8_K={>SdWT}SNMEDcbUO}v~m(KNtcGrX-;eR+5dPo!?aZ~2phKEo`{ zT0U-k8!Ux6uyI$%>VHz;RiNPC&4J|4X+`Dz&L--PU^XqV#+n7dL-_bC4`|#P8hCV% zR!qdlg?{KsDyKt=?!}K4;v?@M!o2g2qDJ@uN3WuqYO+uBZpp||ux43IVqW#XPLXny zLQ;d}y`CY?O5Vt2Bch~`G0v#e=}~ju%k>sf7`BK$4d(|9LgnFKr&aFWUu z*_(8m=%FqmtthtW?&yb8I=L8uJ!u`7=Qu(yD8=lUKtL~9n2q*L7BI@}@H5P@t>2(b z+R;Lkbk3QJ8O#hVF3q`hG#J(qN$xG%~<&$Jzyq*nJk{K1!Hs2_gJ z1$%pA?6At9-T-YZ_oQ`;@8lo<7Wn$eI4PI@P)E?*>BVuaQ`n0u6tuUe=`UD>`E)%- zCKRE9n4@ln1M3@K$Im|zB!R*(rjM)l<*bT&)YWkmQ`fffxcZm8T+9WNk9Jqb#wLU~ zWI?@^H8ML`+OAdkg&eym%8#0H@vcL{T&-SR;)+NC@+HHAwNv5+$M&~4Qx=vUez(ZH zUH*CyZQv&py_y)t9D#eMo&zEWdh^iB&~RJkyn+w?g(;E#)8pGG?$-ms@778VcI})E zochmqzC3u97A04IR@+^!E<|@=-Z0V2NvDOn^Vvb{FsJ58s$G~{FIz+WWg}u$JbuM) z58#gd4FQzl@Rd+~s<>A~M6}WBE;7Wc>t#}9Mt1seU&A@l5*6`ZTdq?_Q1`B@Ao5jy z+`>zKd!^iT)CJ|W2% zv>%1%jE`eUYxq_#7=`UcTK^V%dBr|Brmd4hd$W@$lGoCOzOf*sX`>CJIXBypcRGtW zIl+cuJAJ!0;zn3!K?29?9>87_UK-CExW5<}?!v7hk9e7 zfAR;O$-cO7;+B}ZCTLk%n6HYLmr8qXOx|4uCMH)W@AiSUbVOnr@r14bH=7wDot$&& z&T(G$9CSEsa(Z%a+cFz-B_`x~$wU#Mj30hpWZoAoJK!hR3H;ePP5c~E#}MFAegdC$ zfc}OP!VPwc@4lZZ)hs-xKopSH@88A~7#`Ywd-E*bV@LQd{`bx$GTt_LcR^ND%ryy~ zR-L#h?@zmncxN~O=CjS=21iQAi~h2w2^Ecx`;UxZq+xUrGg&9DQjG-0ov_5Tm(rln zpTlzXM~K;Ayv;ZQ67F$1w5_NL6KeKT`jPk)V``_?^!~f$wqDhh`;XGim7}5)Tm`01 zD%!%)@m>^zq@}0Ji{rd$g;(kMx=mlpZojdfjwOarJpu9{tX=g)M8FcVXSrD+G8pk) zIL0P?w}EpC==1~3C49FsD>!rUybqJyBCTmfM=icF7#4L)LN19NV`Ivh%@ZM}AU zl4V-^#@gE2a))PG9A-U9v8{aa%uxq^$fs{^$b!~5@t)#wVUk>YZr6*mFB}bXD)J}B zyl=AzWKUMT^Xy5%_PcFYou~rIr6y{$Uz}g*j7G$0FBGbk)a14<13T&rZ1@Sz@exaK)cB8`fIc| zdG$+da0>d%)Cr8IlIg(GtloEgKg9Tz&X~BmPF{_U@W;uGq(btHfdo6sdv*<#=dvba zPZte-8BLobrjz8?t^(@IKjXp%w~vUvYRFtQ7|!;iIri^S4g306MTidTDU>E+6e_oA z6bqF*!!N~^aY|DOlcg1C{Q;79&Kk{BK`wk-R^yi2Z)jio-NZ~y4cD$tEsIsW1ksVka8< zMo;8m)ZNzD{OkOvlfETOFIw&2uG#%>Qz~N8yEvWgQd4pR1*f+OMGEzr?l*B|jn!dZ z6S^%=5N??8wLMGK3eRNTAzC}WCPF#4k=8SLYs^xi&*s=4N}J4o$5L-|IHvi>h85On ztPZFzj)|n%%pUQDC9fMw+Dbdc#^!)TQk97%H$#$`)V< z&#`eFiyZvN?pX9)=rAzh$3eY`A_C9RtHI;w4$Awm1IicP6^a zW0_6npt=_}6<;HL4ntRNBxQ%Qzg=4h`fCp7uX zAv28==f5=vMdWP{b;f7b4AiW5ag?WLj*etmya`n_Rr#qCfN@N6g518Xom%pk z@Vts^QGA25eC7*nRE>NPxmmgpCJqFQ*38VW}OT2vCg4U)k9MZ3yvO_+g(2CZ&&c2qEYXs+{C`ew^QpBV+e z2t@;HPae-jj-91Giv}&$tcGcLFbdJLwVj*j)I!Xlb+k01w-Rm zU7$mjv?D49vr!kLywT$^$Z4lug2kLyyWdfb3IcEXit!RtWmhz~VRc z*%9wKg|+O}q?utqqt_|-y% zVzVTrg>rg)+|s(_QFY8k(|K~b+UW;qq)Ii1>@*~kt%h~o>f4Xsv8h=_5f!;iVC?DR zg*^I#VhfDK_cH0dMb>KqdbRMIFb*;CE6;=C)r0dgx2k+w$pvkl7^iB7;1)}>^Yeg* z2N^s(J;AW*srs6*96`glY0?Rq^BZ_HjQ`0#KvhjGEnde< z9c=TCQg$uqgnYF!d#bWh8tH;$@|}e9yc(!S3lRhrHlZ|=56vzZfFz0cc|?8k{pjf= zZmS)21R*=Ps$*)*3ViI;V6^+be3Y=`LQDmNMO~fg-PKKn@V$jlkE@k0{uT1_3Q5zI z-T}Z5I~L5<&X{}o3{|es^@V;w-`(@)+Wfpy%}wS71$Jj=?_NIJOuJ_GcrX76IsAF+ z*IhZa!RtP%GyX)E=^7x%8tm7@ywEny3WI!+qxhlY2zfV)Mh?Rc6J$ggU;N70EWv^# zXWT&tdhrb7%rSQN#6bth*;jkdgEG*k9>S7T!6tK~`~vv z!N+9?yDZF8uL-VDI(Kr>gvYCKgr|oC86SK;LF^CgKHrmKL%fa-CZzQ-_}yRXDSv&( z<7{CI2#fusUnYX-HFoV(Gd08GzDaZcfz*pccuz8cF|(*{NZqq4qy#$r!-Mg zRV%lvUO$xY(BACskOI+8Ew5cy(Ni-1@c380PLQId{gb!5`OZn&b8aCIt2Ndh(g4^^=pIxo7WS~)YY*!Lwu$M`wm9|>XG4(|0YgxO*-#R zg%v&HRFhxxu{PSs-uGzELFqhmu2DNOn9o~$j9D!M1GrTWEO7a zJ2lK>OT#tg;)Xwg@2$)+v_7nnf@UK*yG6!SGvJa1ky-v%g)VKHERxuoFyo#5sZMZ*EoF8uvUX$)t~ zAP3FQG^_uTX8eP!`?ANS3EV*g3;6bU{rT51d!Zf3QO*`Q^L~H3@u}rRFWHzxE=HzA z$sR|6ho(`#ZjGub67S(X%XJUi->D#a+ai%wc-5#0#`XBj!cYXQc&{c)XxG1I4thtz zyvGB#GzEOb7~*Uk_*%`abcZ!#VoJP`{K0a%r5rERJQh~Ke@*V^=gC!5GAPaP7JC5e?Kw}5ekHA zHfz2*hp&tGPqzY74c(sYzeif&ggu_xcyQ}?v=2taO8>byF{D-wPm;Oqxxl5q z1DyOrQeqz(TWUmVN@77jflud5Z*ImQ&s&iM5>y>D?D_W333Vu=u|*ca4fBUbBpBt9 z_1iz4J3s%4M69PbsDp2ttUiVN`hLWmdPbg2(FG$DsIGcO&M}T`L{DN=?vNaOYe%V4 z(JYq-|KT@4q%2#XSDX~v!KB{1YJ0tb4LU?NlzbZke4s<>jyG!K9`URw8_3N70nF>x zs}8ve?sFgFw$w=kn5lfUOygR1@c*EyGgBt&>B}Qxj<--JhF?%2j+f(GC z8u$NOqW|B2u%FbvoG2h1XW590orWPIUtEK_241;p)WQ%mzQ|dG>33MOEkbr4M=3jz zksmSo$@7>Iw}>-%h{}-3LbKs%LfEl%|C2wQe&@5>Ly7MRxr}>|bEd=8fRFv;fbWnl zQY6N#4Ty=I4)9Yjh+QS`Cor)wRYguE{Hf|}Yx9W>F#R{kRhicYDbAUszMEc}AMXp+ z4(p>=A9L2yN_M6R!a;!giwNrme7pU3#r0hU8QuiIvQ$4Akv%AVN*EbepI3_|k3sfJ z`HNP_(&6xgyO?V8*EIr+MfL0+uHTw8(6`%_`x=CDpzJ1uQ(Z&j?QF)Mo+U$5|8AGV-?=fZ(Z zYg^xPcdTQ`tB;!l0=f6cA;q&^z_{HCX$APELt%hR-QsEkp@EzQg> z$<7fzh?IU@ue^R$#^W4wSDm(EzDw#xejz}IY}r4Fup2^;5PN)J&_AboBtESDJ@PZH z%L9x)y*$nDc#5UGQ}qr0JQVkT4r65-BbN;oVp!|h1b-3EoSUCCFa}U^j&|E~Ix`6! zDdeP_wR_ibm%Pi{PUR=!vc#mTbUNpo(Vnd4M(|*IBsS+&_E-iTi%qKOi$px>TkmmN18E2xjo)VTB-)VLm{t*>y0R2=NN+U+qh!xFHp zMkh?n7YEex^brTCgTULNM%L89vVV<3cj;mX{taN&jm1|MUA5TODuc7WI-MkD1|8r8 z9e6UqQiWiy#(BmjB>WrbKi>WYJ{{xkB+O}QGjg8wpUwW5F^Vu>pXPhpeAu> z@pAf*MGTT06bRh(Ar6ywhHnGuXDi=lww#IqM>E0|**Wz5%>s49+Cd-d$bRdwb#RA! zjqhR!Wo*YFUcXI_`u0EKR)gO;!WgC=gM9O3g$Jn@-Va%Xva-=~CQrI; zzB#W^bEGpBp)8ivaGrVrVrVE$;%ZKEzLQ>H3TcOS&dh6TpQ`+*R;tJrEz=Q~WjnRs zsL93k{JqBRDYqgN>oTt<@!4yQv?_Z2z$!JRUp7X?zOKxC6lp8op zOYZ<8M{YqcSdu&h=i%M#+xaz#CVcq{s=I`RpM8*qOE)Vjzz;r(O~-KtcEcT(@&Ar& zVwWN^p&5b67+d{(XExTh%TOU~F@dl}%Y}MDVvMtL5)9h*rx+Ml|tY@&6r7}Zjj;ND*-}wxD$HDk&ucCL3 zGW%HZ70$0bw^7hM*1NeC@{$9e_~YLkmYguCyy3GJD2~^P2PsEpR;GQjtHO7Nc44P3 zWu@e{RCv-J7S;a?TAe-Tbt&EEAA5SL1H@E}PpBP9CT1|jLEDtM6Kfma^?lJY@GI

bR@N17}hyZ|l^4ly(Hax)4V+2b!lVmrH-b5I@cv#g+N6qDk>s zL`#^iBDN5>BdmwDdoi5Xkfer!)K}(c?-(dpW^FHCf?cC3;`mA#S?=xUjEXdvSnHlz zER~PnT}I`X$a)Dyg}|j3q~eH=8(8QhW^S6%mth^x%`r^VWePPTGr-H8w#2hkmn|=P zOuDrAlxeiL%wbEYEoJ-bmrbSE=+rx00vfg^1+ z%wn73+#cOVF$bVT&igd0_Jp5wxx{hP7F%2M6Us`rs)@{_ZC^SSF;A`Lf3mG`I6E-Q zm_J-!U0js)-P!mP)QP{VwLj}g7QKv2cM3g{mZ_qeuAdFAPUO(IFx(7j>EHz&$d{x_ zYH8$x=YBv?B~G(luc;Ao$?-2jYuy^9V7gv=49|-ignGvH@Gb^|p(K!?~c#oOGMx zF~K0xO3rP}crLqG{GBS<#~bd*W%$;>fB?e3s=`%EnPOTQsHuK@WZ|}Y9ToXa!prM1 zH!Jv{@~-C{VKbTrYAT!mCFEJrIQXMKVz132x2mYEv@Fo%oWF2f(d(+}p6YlAL7`k_ zzu}u(1#0odpZ0Vc6?}Ucz5b`q!tfOaUf3PA=JAYQh#ICAT`!4CR6IV<+!!S% zoGQz~=G+vY`NLtr7@obPdRV&+`PlO z<7WUSA+?^lBj(g1iHBZeUN}Olb3>^yd+5|?{)~8ynN0|Tt#OoS+wwZ9|4p(*itKzx z%du6^v4Kev!fxOJ{_bUlb}ZwJB~=pc(Gh6`MhMH|FGHSwn|aihq7ea09iao!z2MK! zsvQ*|wD!hT=PSF%d3CmGj#3kET%$z4cs$$Q5T^cPomBz%Gyhzemm=_<@Bp8UpXz2s zBS&_E^8&bq+EmHOX<~}(Hvm@HtnmRB8lipzztGdz+Q*VyO7R6Md5`e;w2LZXMG5}Q z_00Mac*Zm&=9K3roI#xlGl?W`B=imkE3#}6>g6m*s~&jNlN3`Gg?M}2)Y z#`+5pkz|valN8J+>@o{^d@mY0tGF%G+^K=NtNf~b#!qQyY)q1RGYq?V{<=z|ke>Ig zEmpW`;2;xVt`KvUNbWceg>k!doPD=n@OK1YrqXV9J%=*A34VheTO7e+fCDu7kYCvcXAL($aDSUdgT-j-Mgoye}llU#|AYdWoJK2 zcHGhMP9eFrt2@U#n{Nx)YSu|IpP8&pkmtx$5v-$>s@P^SG(Sb@Kdy~QTN>Bp%w#st z5QOlsGFXXSj^>VLW!jS1cphYP{H*0Z`wOZH|>R#~C-Y--IV7OGqPVO@L6&)v>2)N2~bZ&;@0*5mWjwq(d&)rsxY(dGY-sg@sv%0XSp zo=@ZW@PmI^LyGRW;MECkQC-KNM{-${3k#=`2cJ28wk$u1qv6GzTT{@z`gvO({Bx3@ zl3ez*KXWcrk2xcepsg8L`?*_gyTx^G*dB7Phk5_!t=aDW?*4XO0IC-Mtz3db)5#~L zSVagO#D@~pz^5TtnU;*RhZDDg*Tr=?ky*CrlecYx)3sEooItTDoQqn5xP_k#w6P!6ORTC0`WhNG%n>@muRZP;sPV_mfX!UVHp+VD_Bwhpine9` zlO1U`20M8qkI7>TUk#@9ABaU;YGu_Fe|^s8rh09bjjvtdnsgBFR;HVCB%F4lSHeLk zvwRSH$0Pc1uQ!~Pb3Sg$BDZoKlEp# z*d%f~JeR6{CE}u|8=ePYw!)fqZoYLXpZ)v~l9i+7Oi{y^HeVCcDDU+19f)7GM%WsO zA|H)qYn|-6!%5POw12Q4DXd@ZPh1D={oJv8#%0m=If-F{~~| z=L)$EOGl*k7zPG*i$0~e!w>Nx&B-gA))pU{0=+Y8%EtSYi8lAOc^(?HbWiKXMJje! zN$H$sLiaAq=TJCqY?4|JzMH>u1gbgZhhD-=|MF};f3F-+Gd>_H{HHQ&z6=Qbr*vbR z4{ZMnS0SaFEW)6JCgS*bsfuS8VI(;XjN&dn;>bx~T?u(?x_JGsZ}(v^W8|Wx9KGN% zi%XKx-Vi)X3Vs7~17X3LwxxjN53n!44pIdd&iAuBqnc_pL2+Llwtm^Yw5!|E1*v2k z7}*XAi&F5f@@4Wf^5ygJ`=(p*Qq!|<#LX8C5hvgs(TZPQ#%Axqpx~$iN)Nl>+3(2S7Rnes z5ObciuSQB+!YD(zXmMxt3SO=aLZyq*!$I43F~lzS&*b6rs`}e&U4}r#HncDr>k z(WHHd2{|o6XfrfK$k@EO+bGGKPQcL$U06s@(bdv7Y&{2EO$RV^dLq#;eO{9x^U;OU z8wRL*n(0(F!DXLz_aw2)WhmCBwsfiMG7gNYF^XUGdX$t6kYmx6)*p4?esq@@w}pXj z^2VWMPI}n$aPGx@!-Y$_m+gJt^mrJs-|khzan%*D5m+;f{O8o-YP*(jSVvi_Z!UNk z&on2?f>+-)kh?B-EklyR*#Up7?dW?YpCiAc*Mf{gX?m=LttxLHo|)GCOqI@ z8qUt&G@KPehr_!!YJbI6)sfd}U~<<4FLIVY%N!<>*9l?&_dOgdnZKzu#l^UPb8CvN zME|3CBhNvP1TJ-s1KPy_M`yEnN#)jC!)UCG$OW1_DwU@9L&LI~#xIa8#o)e`QT=J; z8>9%aFHL(@M{;25MwL4D7ws>M7kzPL!dEe z@{}z;7&xOdNF&?xLq~8v&verIx!X~kDlStLw$EWQuzv-r?sZx0K6H_uwnqErr?oFD zhtBA{OxEUa>V5tT!pD3Q&=bkmNcV%qTZu!k$17}Gaf}C8?F!{#DdVe^;tSo|1jZE1 zhe}#wC7HA9S?_3N6kmz=_wty{oJ96C2ijPj)N91Qd2PJTa?r{p(qIj7krqq&#jEcjasjSI0R z-j~RU4b+wQ4T;P~i^_9^_JtF2_E(LD#|lC)NSG8ms^oLzIeK#@Gbx<}MEy}ze<^nR8g-55RlQF z{2Yg5E52AW?Kl0`glDWUWVWADP?~Q@{oSHZ&S*(u;O%T50$rWZpwPE_uy6PIYh*`m zC`Xmr=cq%Z*<^BF|AXhvJsa0=!84`QS(gvPPL^0ad+AZbDagL53b7}Y$lc0a5Twzx z>BvG#4u8hWER;e(-i*i?o)cyjwL?Y$=Bsp(n^7_&bTPbkzN;bw%BHA!?`kZ0sErMQ3)s4-+4n z{;-BH`6+=TLrus(H=eykzwWrN2&}8Z@OvqyN!PGdmt;#Usk<^ZzvC0=-ir4J2YJKk z@4Sl%OFAL>?LsM>A;I)lfnd%v`<1cynfwplJM)j;05WVA?+|dbr<&|ay;G5kGo{S~ zhosc?lh<#L{#K8>Q}=&x$@~9`B=>h6?#UDJ|F(;BFDvp_Y33J-+iBGB;Z$rAEG#1f z-VQ1$FMWM5*uHNzbY6q8x$P9W0btVo?zg zr+!&|KIm{@U6OC{8eVnb;<9sWlg7>zBR4QmaAaP(W68LRsK3K?F_LxCeeH?IqF>Yf z)#HKojNigQz?@CG)iT<8B=pZ#ICwZeF^6xm-+L%$YDwNprvU}dSz46)&;>fC^lv78 zc>2>)>p!?BvQELJ>@Tj~uk&)I#7>|C&J{a|Jt^VC#MCJGI@-uQU-og`pILWQ7ubW} zV3DlJudkzYWSDIYuXs!9nzpgEHOSmQ!{F!Gg~&Hwni>Mfm3pV-T5H@SrVUB*)!ni` ze!^!j(E9Ys#{{@M)v1QuS91UGi#4|%_GcEDWoo}Qe@tRkJ7iN@3yV!3G2Y*p0_w}i z#!Vgc6l`gr*p=kpZbT6X0fFdPlQ%hrV6d;yCpA%YJ&!&xd(1tEK40?b5JXIQ9>McZ?Ui`A}Oz!cQ`BE!b z?IP6$;yi?g6uE|NOZsgK`pnI0&YXA4E75)hz2OKwcynmI;c8Df*uFzypJJ(|&dJRc zC3|cHs>8#7jG=n9KMp`GT9wb&$W{akC@tOn$ml@s?k+WIsPy%1Wep`2Rh^zb zoWc!p8$d#XU43f%BJP8k`-Skuw=8gDY$>1rTm^-<_@CnXU8RiHB!cWe8&9Doc8r#I$nccy6Eqe zhPKYI;shKDli>vL;$WNj*v4m4ad?D37n@-_jBf9CfS zz_r*U_78=74nxz5trnEhe?uV3jT$smFO0mH&~;46SDjI7L|C?xSgaq_$+x1X{?-qL z7{b81{?qsO_#Q=&{9OGyw%}#@>%3Nkr7-y~;j8Z0ByI_Wpsbhaw3b&hH-+?k3*`Ge zZ_1QJ&cCFT;j6(e^n06W9x?6pRHxq=pf;{CGf0h>28D2k-L^a7N$t;TCYC@bKu&i@ zUI^>Io9<)#+sJ-qyZ@Tx57j#_&R?rkd59YIjH3dNc{BJ-?Gfti*GJMRC7Loz4kp`d z?~E)?o3?xL8g89yNhF$Am?+?G6*nd9;R`}5;*0VRQUqpaXF=?VJF7F%8tX=ulVlq< zqcZj9N0t7c_#ce_tnr%;2Ct-d-^@a~ev)pyG3JFl6W|?UvZCq7c^{r;gg!ksx^6Ul zwl&!|l~>>Y#uy)O0hXdF<4BRh6`7s2#=gxRwZFg3$i!pJF|FgaweisI&E|*P|&+_O%3 zIXmoSA9tgr%e=T2CyVJ>>nTQsR`uVz^@5AIPZ~l}swV7>-F71aA%*Uf&mcq@TO|C0 zwq!wbh3Eg)KV{T=+I$h^)4|Ow0*JLEF31yX%UQH+%$S9NOIBSRJv8t zE!Ac)pE8WCe`N$|@mN!#VlRtB{;8=r^~Fu#!0zKRod=bwpa!Df`Zm^#{*Rj}31tx6Tvsk0`| zGb5jn0;qi2fdcxyAjz&Nvz8{Gf4wWDMW12XV;;G%Z%nEV z#=N_k5iL#Srd!~!4*X!N4q&dJ|Kp)^0y;8l@ znyQgaNKWZamxnu^30G=J^T*yb)PclApKxE9KagJpCI*-rY(aUQA4gAiX?Cp|qi_i* z-57Vt(%Zy)v%_5g+$GBrYw<3Bw^j^Q9eCj#sQI@;Fjg-x16@CQ>>RzupjbAO=p?@k#DMLCo$BLzA|iFTFG)ASCjsmR5X5)pjKH<5zQOZdqcT`{%f#HEdhBIM zS|$DE$OpDk-&-HQz-vXH_~mcQAJP!JmEGigilJ^Pjk8Il)M9XV`&GWckn@fQQbPG6 zWz5Y~VN32Pm->5XKx|(cUW3@+AMOsa>Js9LR>B^W7wf;onCfV zYOHOJ-Gr2608Ad{Sz+ESzN~_-(y?V?IhbW6lH73>)rX#Xgbac(?r9vH8dsF z&B0T=7=XZNO0vs~=u*%2^O?j_;zL~d(~Mzbs;lT(3LDdVcC47$2ikk7RqWD3pbUAs z2Nt?NFLzUGdiv>r$A4XP74bDG4b|YpNhrQkitRGnD`t;X7o-i8{V9U#Zz!T4v;X1s zMH=+b+x>QXXno!4Cs((`Z4VSm9l6A2UDr!!-m^7Kgtym({+*@5a2d@8TX@s_Ep}7+ zxoeLl8_#e?Jhfi{leZJxKc;D8ZgA?K9?XO!zQd8pzcpm_2BB2xEm{u>ImRP5q^V4N zXpA; zq9NTfiRxnJIHiTT&-Lc`{8^fmU7F6>cjfyjXcXU&XV&UVr1LW!y+n?()aSEO?)n)L z$~R2onrx=^zt6jJ9>MFZuIuAYGI2&%Afsv-_Iy-3zoV{_&p9MVm9*>#LvvCuwRW$K z=zifI_0g`^H%>iAD?z-E+2%ZV+GNDw_E|3p`|GTS?A>rRd5KiAhMca)SL9s>P`IS~ zI%<#;ou8&v+lu>5#wF zgc6F1i1aQRdXo+cNGB*wdT*gOsi6cSEtI|7?tSJx^Uj$$U(VV2l$m_WT3OF}vhLq? zUnyEv_pX%@l>G}m)?w-pHaL&}Ic zFW==_cNjrewaN55zNr@C^h>ntX|O9nC(X|(+iF?ll$9rw55HqJP)gu5=4JUx9R z2w_VHs`>F5%ZwDqeVtW5xar26`5vLg!%B3v6JBJ5sQiQz=gEmU*2g+7U`Ktvt>EveJAW%Id!3AB|6YRz!kHz_e&(q-YL)LXI4a-{(U42prmN8_io}}KdS#B3Q70_?Z^;1% zsNz3am<-S#7RFPL-reu5^CqJv*XAI2Ol0LAOCtW1w}f(~Js0CJ<0C~_#^;c76i2Xo z5xu4%>ulg2@+LIJr~NA355Gi9ySNMsTNJq-Cs7CkT1kiySb;7m74PZtDMWF&`zh!Dh(nzG7yXJ%WMi1 z6UA_G+;XyXa7`&)E#k%Sifp~YH*hb+uJu#1v_vx8SYEGN|M~^Iz&m# z86hFhNy_9n;}Xq%jJ8cbZ*K)&AEZSlB(PjyRHq{fDk-}NXfHiU`M z)IdFHhSIA6&OE!t+x4)GdhEqUHF0Gv2OrJ=>Ta2ts-$b;8cDGZEIjvZ=Q0~j9ddD7 zEnW$Y*M4ojVok36|J~13^0Nml7j)cqJ2tCc$|)B1$kQro=7J57{l= zvNQ<@sEvVX#3Rtsi$P7(5QNk~@M`{}5C4poNhg>y4(-mWEO1H7zi(kInavVEdw>&| z%MOlm$qkIxj)ke@7Lvc%rTo_}uO!%Q?6k)~u#&OpzXT2UrB3F#t6!ecmTvO)51ML` zc|q-I#OYn#xcs+$6(e`*Sw5(3Qqe8dHm(ruVFP%6LcJMeBe!Sk!DN@*Lu+^ZXHM@_ z!>3Yc(oeFaldz*^-84Hp>-=Z!m8|;~wsm1q`~7;L;JRc_of-OhQPJ8aNttJunBbl; z=37p4MqU`BCG434bwNw-O!lWIVVWfq1)U2?p~QzGpYa1cVODs%6w(k?D9#3sFzuD! zUzhI(eZUvqFjfigbryuL2g^TKd!pLc9sAY2=zlRX_S~D#do}NDG28E73L8?q^)8Ee{Y@3P~<#-sx6-Iv_9CAt%X?iCAMEB2BTlxRlI zan%5>5&lRL8a6mgyhZTtUxuN;sa0^ORXt1o99JN!J;Wv>%mXoj+>b)vW=07XWWCIm z^?R9ED$9&YGt|ujh9Hvv6nWuYa1jiovjYjkdLKvC$#3tyoBEW$>gJpyHVHjweXm0gcRmM?Ag;m8;8;X$b5p7CU zMZ-7tN8O>T=tg+JKV{__RYL@-{ZB(yy8BhonyP18G>R`A2_14la_x^f5XL^m;icsI z{yHVsHPg-B8*}ZB4YUjDpX4=Ywi19B^byE5}LQy$H(Wn zs#W39uc*;xbdT-K#d5(REN&riaMCtcm(a{cw>3#Dq|A!fAPm2n!&}E>xkmj`PD3wb zE84thgx+Di&WkdKSzh(Oi@QGK#9CMzl1=q2EvvEb_yRU)^Bq*D&sOECD1n;$zKfIh zgBgN8|9nmb!)H$W%7dg&lxPso{_-cK8gCQ!b$G&CSIaEb?cD|PPd2uTnja~{+J3y- z*>#RhuVhXJ+wZ$@mTnpwTlO~@QE%@H347o(qZ*<$Gd^6%_7Q5^b2H4FHIx{gBAGd9 zQ7I_&Y|MK!3tad~o8h2UeX{BFqT2qMgy>p>J(0bXy$fVC8AC(UqP5+V` zTie)7vO*tN7c;AjH?6<~507=ZpOJp-P2{{MIzuM%4I zj@tIL_jqp(_9emChv$PJR@zS_YL$&SXs^dlT%T`iOnaZ&)8e4<52ONKx7E#Ob0-{> zE-_R8o3wE3Se}eNcellVV&B|yl|2%}U?wey!Um}QQ`#+_PPT~A66H&4lEuaZr)n_P{LU5G50YW-7my;1NY;3P~ zY1oiaT8sYh(bH+Eoqt9JB5id4C4X}tp@0yWfwe6G0)wJg-{^hO!Le767~^3gK(b3FHp+)UYSeNe0Q8V2`q9J8(rATUUX6WCZ73o>f&4yKyS zl|6BSzq6SI2P~o=FO6_|bJc~9_*NbtQ45eaI#pbWHpd{#rVojOCzjh*N zZw*F{T)S5WLl8*Fc5AL1Aonx1n1ttkN%TAjYndo3E1*%3ocJMYP<@y9?BIQ>*?;9? zoewdE?+re`gdcm*mO3jB(7 zcY|H+<{;V5UiOG)fn6kDzFizcPet*) zaJMA+La}5h|B%FVJ!_d9Z`snYLlyk46NtD7;x@B6)!v`lOrmToSB~GIndwm9@IB*6 z{X?waKpE82(ds2bik;JiI9{=_B`R}s6*=`b+H>!;)TYG94hRL-%R4_Ad&r{t+ItjUUiPS=nbIV3&B-sol zYax9geIM>?Ofm}tb=SHmj)nH{s+kM8z*QDXGbt;6QYyY*6i7FV6LJW;!v`jLmd4_f zN66aY{#@|W*s$u|%W7O=yWl~V5*0Vvk>a@wibA>%&+s&$D)D8SFiYi)e+Vq*!fiI5 zrF?U6_?^E58nTcb4Z^#Wen$ya<>St8C14Izj z!&f|qH;Z*6#elL`bt>lviXY9oRpNEVBn&>?ggUODn$1_^3~_IfDIQD%gY^U}yBqBq zt_X&<(|nx{m*D>XTM3W)H8|oAm#4K>I#T1!?cRE)Mz8t05XkxIJY96d*^t4N#_sWD;qzHoINueQDb`*0zStb+i3HYhX^{n7L8oAMs=Sdk)e7>Tsjl1u8%<);i2lcN35V_e8T-EjSVe2b;_8~V*_o^7h5{MB`b zU}gMXZCdsgW}iF!q&W)OpAe5Mn6%EvPf>AXIbZD?ypSDLv#J7qB`yn_%9GSKU{~!W zM_M`RptQM*>5IUWu7KbNM_)x#Kess1^RN!LM_qAC6-p5h$()8a%TtMoiP>kY;Cm>S@fO6>#90orq|~XMU((>!ig{-(i^~aMGk8cY6YMchk-& zuRhIPFkQJB<_Ii6h7vZR?bhEP+N{NK{kqJA9f_j+4c~Sd94Rk9Ja``z{i`g-U|;$- z*}dZiao@^oahEan(19MkZN8gmLaAr%+?ayRAs*NA0crKq%Y!YRBwUg%%3Z=;YXtDP z25F7@B+&*iN!t*2iVo1e`fey{u##^!VAFrd2`O~<QtY{lT46SH+V8hWsUodj zE~r4yp+YTUk>LfUi(F7EtDpq4^hF74z_)~eCQ!>h=<9vgoj#Mgdap?bJF3ORF`~Q8 z@LFjhYlg6PIOby-k`=+i*l5B%!VQV-)l#E{-rpcq*D+`QhS08sngP%6lhQ?_ST z`YSBN&i%g;90AR&|JM#Be!66_GQ!ot;;GvG9vcS$4HYc^?MR)wc0gioU>vA_k^{u@ z^WM*TcoX74C-zVIqDDAPJ6{GvU2de=eBV5j68O)(2a$?hAI-;xOAG8FBTyHoV%MFE z#7tP;O2r(XhngvlbWnEit-P7qwR)13LNtOr6l#!=toVc7rjYndvdxeu4~i3N!Ymu1 zz`jBp4EV8pG%vbE$i=IQ1Nx`A1C-(BCk}`iyhg3&>O}Gp&Z$Mm7q5jPfy?c&Heq%a z!_`rb%L=>oZ%UBeN)?5nBs6_RE}jx&dYX+ObW%;Ntka^il4}2Tgg+MyO^F-fvZK9Q zMnDfuBgk+XfqEKf4qH|Za&7JLHAaq8B*`c2yyZXihPHz(&%d1{HXjZ3VeYeNJHuN62>ra zcN}Syq6T?GVQ>~+g?wtE+ROQA1MH6Bfxdcg4UBl$k-IoFKi+fK5N-^ltVZ&)WoSS} z7L3JPiuKVJ#bFd28ZRZ#3muY+ZcEdfVh0vnpM#}!;FH@y)L+DHc~Z|S4&ss9Lknye&#zo8nE^5G)IN&# z*rX;E5}MO`e@_)BXl*3=`+2vssR=y~XLu_s9H(>qe6!E!GuPpc81Q`w_tCc=3~VKg z`T1peu-UAzRxLhIcH{^#VH;o4Q1oD~RR1!(b&ue7{Z~p;OZ`rs7kSTabCW+N)qiv} z6i@yP7?ptStlhi_{Jq)@5ToI#w}V!r1+z-a4ZIRObGZrXdFs!JBZg`tb~jd$eykWb znEElNi#?5WHwVX7Q4wSBD|(%);hOr*&^tcb86sN zz}1GBUCs~qMClN11deh%$E?+IB-eK4pdiAC=dLyJ;u*CV9=KsGU*SIZ8*pYZJ$@Ns zJ6#Hmj|9XcL#Wg!7xjpKzI#9JHZqTw%h$TkegOkq# ziciQ_Ks2(gCj7b-zPkhw$2gzH+?pY0e9ZA!p(xWrVz;cyEs3)nTIyAdC7mq$2+^Y& z1v(0Cg5p&X*(94n_FDl+HkH=b`3d8JnB|0-ep0jh+|qdU#2s*(j)$`FP@rj4fB=|B z%K>|6uaEO{hFkmTrZaOF9z}#VCQ*hKTiOs=;mrTypIS0S(#fWkZDbDkJ?=%wMG{4*g1#W`sQ>-=0G~~Ax_ugN{%eH@Z!3?lwu}VQ3orgE9*p9O9 zm4~5qk&xg)4OjALj^B64>t6uNl0;AUBcxvuD{<<(gp9yi-Swj$3f4zQc)2bXv*7bS z>@7yQgsWjbC?0>7RoC5<&AFb^nlt6zDsVk}IW2XXuLp z8^@%FHm(fJ3`4Cc=><K z@%Ewt_O-c*)o*9xt!tEtATheBx9Lrek50^Ub1tQ8{HbHkhRV!)zaBA(&7c#YJj(6M z6Pw?aQ>r{ArD%m`Vz=v31L1jBZ8uwP<@i75I(|iV{@J55`#H{D%VAt(bq@PVixph)6s~3 z)I4KN84Nse4k7;eEBFgYIBfO8#Qk(t<4&6RQ;1XKosP67r$7CzW>DN-if|c7t3+vt z+bfO9YQ1lJYag;`Ch$$T4L(rM4YAV|#ysyw_4q)00(+*JvMVKu-`pP$r!_<0Yz=2d z49M}S)*fhm^n+5)s(x%ORr{EL2R^#x@0}H_vr_QsM|#WMP~RBr9Nyez;?byC7!Y{u z(ku<~n!Y{h4HwHg(B5AorV5v@PJdnSt03Ov3$7s{5=}~E+>|wT0m16doL}^~9)AP_ zjv~qK?w79Cz*q^^IzIxelC9|%I$MNVDwL&^XbmY!l$BnaQhcCE zPdQM{Aue(fIsiuMCec!^b8!cMcTYL#Rhgs5b^go|##*k^ARWFn!PqNx>?L3K-Rq;@t9PN4K6+RyjPy7RFv=~r?`uiyX06e%hZ7D}>88h} z&$vbZk&~U*(V64eW-T$bH_6f&`@|V$x`4Wl4A8_{-SST^SASME?nsYx9ccUAyFNV2 zbnaujj4H&z#^{P)8m{7g9fE zc6uZb!P2tA7sq@xNC$hBKL7~6yK;`o0SdS=F|``h6JkXo?3 zrH9R)9QJPH9O6_%zRS#K#)P(}V}5#{>%0wXxYRTj)L#Bp+*KPnc*vp^ zviZHp&8dboqS-=6I;K{X`w0NHI2~&Yyw=qH>MzRE8o(;2{}ugGTwn5JN=tO}O~Mi0 zNiVV2!LQFLx=pgNr5xl*AjePPbuTyc!_Vg?-Gpr46Y2R8-6>AZW^F-nWxXKY?f4oe zdY1D;am?D#oqV^hBro4~Qqc>pEEBjiC>AkO){!@4e3IcZ<+ljV0C6SZUOQHcWtdP^ zc9QzYaGDEJ1yUo^C6y!zRmtTBY~@wv1ZqU{sr6IAL#ng6MI^#;nikQ*mt9+V;S_f} z6qOWVEHc+mS~6xp6jF;THJ426KflWZr+mO8&_;M!fCimV1t zsHU4pQudVBIOQtxp&U8lO_@nCxi(Pw6Yv<;t4s1j#^VINe zn=`i9II{)upHYf(NSGh;1h}mg-VJk>!djRM)_`BeNoFW=yNYn*p-boRaGM22CaWWT zB@Thav1H3jK3$;E+k1rAtB#zQj+gBuC2c>ttlh`w6}?P;e$pDFb?RD{xRJrg*NLU) zR#khz8TDkTL`ep)02aTP{Mli>lJv-*l=Rxzy0i>+J%vx{-;nHu`NX0^J~j}Mwn<|! zN0k|S0uMa~HE&HcpVU<>>Tp-YF6kUqk4C9u+hiY)xhJdp^t4>mN7~2DZt<$?=2zrC z4G!Jg-u%%h=&}O$9PH;5)30(@39LIkB}mUtJb%qkvpii2CPI`39#np)nqa z#u(YN-u2xGH0wD~ihFoOK8)ldkx|RO+)iRy$J`|v+MlV(tck#O`*%Kh=dqa`Kirig*I;b_O5Aq z|FjOGZ>0^3F9K%9YY(27Dsfw)FA*|{w>o+sq-1=(Q@na->o8>3=^$)b^wPcP7U`^5 z%7@pbZju=$L6Hu=@S@hJnv8vgxXZ=cjK!U*)io-gvV{M#16xilqVXb`K+q`rZu% mF9O0u8Tt6RoBwkkImzhxvFxjLN%7nOUSJg+@Q%bE31&A9~IV8F<|->F|efPd$0QVfLDF$mJ<_mpmh;OIU2EG zs8NC{OM;ZyiHhohMi5QHZ7^2u&&;2DZ|E6<&6nyfo7v|R>e!ivmj_cG509bt2YYjA zm&pw=4XG)8$Vl`GE;m9*-m7nxkv^5-*&wB>KjT4?XL?G8ME@EE2Z;a+867Fu-}?zt z*XLGbZ+)u&#?MYO!41j3)>}MvT0PZ%frC(p938& z(qG4OKTSTbKeK*bmF~yVO_A}>7cuot+-YEWJMMD!eAK_URVgc!B@Zjq^Au73L-34;(P$XG zv1mm-5d8Ku>8O3>Gczj6uw=q1hf7z#N%R{u zisr>F?~kj=cXVxdPA}a9^?ED+YUN#uP9T zji2|EinTq3G_a2*Hyb*7j^97`gsdzVc4%f_j22rnkICAd?+9n z7C;*t&%8o)%8Qj`HsLlyj>bd5k$y{WapWDu&Y)T_ILk?vavPo|Xm!yqsbbM3bzW9g zIL4ok1yR;QaAp28%+@P@Qtn-$18qb;hXn=CMb;~o0@bYMWUdSkD9wr@F7m%4pw-5m z@lbzS#W86)Z!y2Ofrh9}PxXc7^kqe`Rt-Lx$^>IRO^*4v;QA?6e-T+2Hny^uzSHZ} zk{*^jrQJ@x>nty>q-`x^mVjO)S_MqYhjQ=X5e2DmF;B}hVxC|SgG%A__Wg+=Vmp7S zGYv4~5AP?`<{1^SpVUTHqAHE20vZK-suKku4zN?UQcRq`)Ab7~yAZ%h7F-3N9p&Cs z3|XtkCSH2?!4G6-2C5@CwL;Fuvr+B;Qt{PFM-T>hbW`^T4%xyVm*s5@sd^k@ajA3j z(V|yXgGigpKy$;A|Ey-QF8vU27arH$q-}-T%~OZ;X5sT8(`d6yC){5+z@$kl`+naS zGyAgmqYd`)N&dfgCVZDF>92N#edOu^QEXOll2!Xw{2gR&zX~T#x4D*pt~;dg;Mb1v#Huf3R(A z=w!v3&dewi-L7y$Jizjlt#AGsd+ZG(_4^-STBRJbDzz;S!n=8Sgb+5-->D!Yn%ME+ z%Qw>Z&~hojWf>5c-D)@a;GKxWAoHi?W7>Ly(bRmUye_BV4ms-jx{9Z%fiwHCj$3$giZ{Ti$*Nz(}rA4TvDEh`;VN#;rnr zhd_t9&IUAHmqFF|zKQ4p9`=O#nR~SpbxSpj?TN@@ybSXntG~AClu;?1Q8_$6NrJKA zp1a?YpD)uV8Rzp5q7{

    sPLk8t)Ec+h}L++F@di6{GZwDs2D63VHn|F?GbwEyLVw==HKW8TyRt zo8=;9D7wavkqbxY^iR<1-Zr?$U{Pt>Q99(`r4cQCsrLd_u1<8lK6{uo#b`OabFP458i)mOG9p`QsMM$hc6j~d2(k?8MDfN{hvu;FvT9X z+`htm#i$@I%%EJvgJ|lKJvfKz^8d%9V)D_T8+%hFb4Un!*+~Rv_lS;8=0riJ&tJb{ zRLLZHXK_`y(a(5YsMr)cQ5&wR3WWXp%=G_Uza!}!>zW{u?Npnav>*IM)5Tx#@;|fM zRVrMMoAik}r*L;-^?F(;GfenD&wN#ZrnjNF!)(Ewz3#6idrwNrL>g-SI)bOWtcU-hdCKNO291#B7T zDC#Q36if=;Y5^y}PhWQL}`>nA#{TT}tQW%e3d& zr1qSGjveE0`yRjj8>5Y(WG1kgD@AA``iI{x&4;WkMS$4?MaH>Pg zGRt|0-LC6}u2Aunv&D!Cr7X|urkL17^-I0A!byj09Q8L($$Fn1aKf_lp1NNxFFK_) z9xv-4pG&=^x|r!M-THHU9{cLFJd$-naUx&7%#MzRLcbMQxu3*tw^H+BP46m<7DD%) zBcl6(aR)kCY4NxmtwLE3?$2-MT0GA*~l2h;~WKp7)^Pf&!&m)wTtr{R%4d^I~HG#S4p>4@NDGsJw|}slK@0<#ohNoe9hMIvoUUasXuKti=2D=22ebkPk>9! z=N9%k1%kX*k*ZQte-&crHu0Xh4|*a9Y0mBV{~1hC^uh55Fyz40T+J7h+lI*fmHiaK zuX0^;GUdtdvVp#4fcubRZ5c9U}(G)Yj0DlN&oobl6 z%ndW`+F)Ja5@;dbk6j#UWXzH(__AqbPP?UOz5=2>U)B_~r4KAlU+SB`+3ZNV$-IgFcn<@B zI2eE94l6JAHvrx;gB)_g`T)q*l$s(-jz#Bj*_ym!U#=Kapj@mDEuXQ1L-Xn_LGLk4 zphnjP@FYiF?GLX3fO}##1-7Wf*{9=@X1MPcHPdJgV4ju78YD#-b`_XN6VfWK2vl3> zHY#Ixsduq>qfbEPVe^}3z}ve*2RjMhbZ= zQy*fRK5n;pAk=ejWHcQ~KQ>2DcIUl*@(&rHV)$R@1{a2ZzSdZ+YmIyz`dXLl#C+QF zNRg)%+@LG}O)0}YJmUo<>1r$nsfYq)*gZ!J)N`_XF+}QQr8Cm^wNF}NP`1hL@Lr#b?OEUk_F2a8gS-qjWSo=`Hx@sT% zy2qP6Hom3ivHVN~@eECDu(Bu)Ne&g|;Jp;T)9Ny1ix$Y9>2V4hd}i3Fi58wv7Z37@ za(lQk9g{}ntIL1tO${l${S%botDAx2O`+a*1WUf!x)fE?Q5Q6@*lTO~6=NlRWIv)L z^*br1AjxX*aLEID=$>v2Ea&9C1hm5G0vTqcdpsMtHXyvE$!?#Xu4wPqEH~oNb7iiY9WtmWrq~{5 zjgt}Pr+uDSF(s;m{z*vL#%RB{gjp`$O1g`o8h^9I@G(F(b)sI%83-fgJKg-AcR#_P z`9}AAqY~Nukjz+G_7S5Gl+S9*HxDNLz&9!dijz53S>Cb&Ksu&!YriIi6Yr?8$oIS% z5j&xawk@8n&5go>3{LLcdnrmOg?x)j>v|Q9jI1^V7MLjXoQQ=*Ea62tb3v6Pm`6rQ+iB69?tiY(uh+!F9cyRmF3(`xRszDXWcKCdeGUDsZ?Bvk} zRwjyj#(tkFqdZK}(3d4AS-C8P&Hi@_i?ZIJz4 z59?Bc2X){L8Ta;Nf@S}@R=(V7c(15iwV0xKCIEY%P#aERJ=y-;s^LxksChRM3xO%< zb*QUuE9B7w1T}T$w5QI%&4NMM*>O3(oc9F+|Hi@na2LJ5#@B(#8^;dDU3xVjUn+rA^{!m8L|)2vm|{VOS;mw6&jW!Z60!;LJmNIz z+^lctYp$xoiSWur*RLV zE?3LQ%s%7oWXVQ6jrJ33qUx3(TnQIG+mI#yGPa3C~=RLi-o@sCJxH)dS|%m*@4=lG z_EV)rqO}%2V9B6N&>)Wqpc;|$L>yQoeXV^6*iOBY+2uCpP|!t0ntRjL(N#ybdWOqn zOO7HvHrM<20j!)poI+5Y&&h7@K}e&%%*wGpW*fWEN}_u9g{8(r-{Jb<=%4RWbq-;#F)SEV?Vxn*FivhlS+eZdzYY<~ zY`^fEVjJG%$K-H$%f(tBOu_cT;)Br`8Y2G> z!?)W+)bha3CpgbY*munly?RDn&AKge5W9jxSab(F0J3cS#NxW!xK3f3TszUr? zp0!p)inpY?FfS@FF2tmR_D5TJgZ+oSYF#<61kg*WroeMzff!(o@<6Tz+gi#Mqso<7 zDl(y3b#@e?Nt{R6d!wh<mvh$AV2JYgFu+C_jq~wKNC3H!EHxdJI;k3tp z0-B{*0}xB0iJ2*{`?$m1IpLHY&XZ8t6;{9)Q|EhG4b^~3L;wEa%`TA-s z>naLeiM4BCaHwCh2|V4P5x!D7JEM$OnzgYc;#INbvU0ZK<1S)gq5ydM%<0%d*x|_e z0Q^}P=w+#Ad3EoE%zSNZolzIvUO4hOXW6G6AuHF0gD3gA1YBVLDsIFQwHI9{MV2TU zgp#XFWTXwOl-yGCaMyY$q#$lILu&s7beW?ll?s5Od~tbOgv(ayL5zfE~KeXUu_+{bPGTeCGpmR z#ySI6dGU6k+BqyG!5o}uOn~i+Smh2{ZT%(1v489fS18{V##D|oQ@>v+tkJnLId!Vv z>Fy+-yY29Csu~Z~^W`+d7^Z+XEmsLYT7Wg{eP33PWyCJ8_@ckZn4M6O4!OvHjr+z3 zbxCj=Z{1iwxZTBr>>TgQPfpct<5(8rnlqz27-nU}X-G!3X6@?gM? z-ZV`3Xon{1Q}Z#K0#LHETCiB814=Vrb*tcKQ4gPXELqu>CU3j<;j?%rMJ}T@(!=6xxeP${ zbWbS1BDweBSXN+QW~Iqjfu!C z4sY);J=kh3WsCD6peq`-d_oXv`Ul6%ofGwv6zPL`uCD=D`ywuGc3F)x49jk3P{B;% z&sWYPB`=%D#d^7=dV8r`i(rf7s~exgCC$35=9-H^ZU5kpnz7{9<^$7*p$wv{QUFhs zC;VPiZDb%o%=SeiE0nvUAVZ<#_y8qB_dfV4vPI6j_im31dxTn>r!}Yc%up6+al9hd6!u z9cTS*uH-(~qe8~KYcR3qN?=E5MZ%dVgY>xH#f)5he;TR?v))mOWhobQXF z{59<)R&pbQaub#SGJwFcN8aB18dVSM3t8R7Yv{_wH`oCJ1RzgUDz|!WmAiev-d$>r z+n8?NUs4j!>97|`BV|iKg#%Hi=3!t5_u$niDoR@GH`PEz@jtt9FtT_;emQ&5sVqTf5fT42= zO1xlPWHm9&gL&hOSb&l(YJ2W#T~sYL8)rBxM68Ald{NX+dktIVQ5ANt<~5!zF9wLU zmY`E`tR%+;>+{-R6$@yNt_)pVb7`Z%X@fRXUj1_trMaq-+Pf8Bx7`+ZT?=zt>(TW| zmnE4yLx@eO-lREi8I8noURMZAJ(GCm<$nLQx|swIPlFrBSx#73Q;V3HXt9UomJan2 z-duyH4m9bbb{eG=voMgiZ)g|5jtAF^{XzjPoFkOZv_2Z9TWM^_k{S)y(Veb3TQ{t$7h4jhjAAuA9M&$; zs=JZFn(l$%cm+*r6mb}oeGTCNh_>BqxnhjPdGcPA(SJ@LkcC;(H%( zqK@nBX-3qRq}&Ge?fY#v(K7U^8eM~p>L{}_h8TB=O)EH`^^4o&c%i3S#MhTUFOI!B z1@J@8MmDQplS6 ztd#|i1bLgkQXp$u4ml*J+oSR`w>o>NPG+p%9;3d&z7!}b=z;2^W_{VO=Geq9HvGQN5@i@UqvZXdPs?ZwWu3X)#f3#~b2+$oye@`PN0i{( zR3$GIOgm(Ub;i_A)F;he2RdZMevvf}-mAAri{+thuzj=K|I><>TENOru%X6XoLMI2 zwr{VvFIy)Tp4h2<@a_m2x8}gD|II+!_C|WDPryrFDsv?NJunrw(g2mWSVr0{I)ZtG zsK+EmME`Le-o>KBHSWr~d8aAvWGUcwmgYCpp|7^z*5r1oyWi8#jVSaBcWKy?DpeBS z05Gb*(rm?3KpS=R@Fat9>>Nnu9Cnrmfeb9^E^o^DE_6nuGh%6%onV@4qiu)O$QV2U znE?QnyZz5eC^%8w!n8Ca8h?~+Z$Bpqa!K}09gU`!+-ykHN+(j!z^j-tF_h2Ga3*}JRXX-Snv#0K zNQGI0?vHvXv?@S>K|o^j%T2k_`wA2D^}ljfe(x}E`SjIoed!|Ucys(#nQ>y3NB2O@ z#*|8$g08H=qhpj{2-(GE&!qWet|$W&yv5agW)<2YNB-Mo%W^|!tONbhQE?zuI=ot6iX8f)9q4%HuDO*Ms#!Ui=o`n-+akk^v2ZVTxG?l+I`&KG zEun($=ga0bIWqO5+194Hhs*7Udp^-(r3;*Au6q5ArUTWEdwg0;$Pq-2Rcb;SxBch? zu)wq5!PjoLC&UIj3lDOeU4r8-qI=;(<4!uUUSCq;2mp*Mwdg6aX$gbVvbc5>Ff(q1 z6J*+J(+dFc$dn@6$?13k{Xw6zD_LPd(7Eh%tMtM|_a6PS3Rjp4aof-Fgc12;q>-xD z$ML#~M)QQF#>f8Hn2#IbPK+Yv2M*ktM&lgf>T0a1+GkT(beFx9fz-$I80Uf#+$Ba2 zmESiL>q-gdSL~Ho%rMK;DT&zZ0fGG9w}G$Td2>4<-lWl8v#hXBwRTT+$>XG(RZ2*? z1rOdMEjv2XySZIbycZsNV59kNK_ayY^x6`@`qy#?Ven^h;P(Dd0G^S|IAtz#?Z@^! z=hzCFQZ|1QSgsk7WT^&9S#U-Q` zu58akj?^1SI7i6m@GEY)Jzv~L>?#uelC&rwf;m6vplr|PG z2JL&cEii7$=>qENa#$Lr0Bq*XnvkHHQG33`x1Zu7x~jqze+D8+Poy|c%m=#9_cjOu z(&ya{^f0M+wF4A3)k2lq zGr@i0GR#*D<-sZ!NR4-Fog-SGvno9BKXH;Eydic9pH-`>s+ zXPGeDn!gcRDkvPC0tE+wvC&Ob+m+CRv60ns??hY)P6yv-nqAQenV#!v zlH3|6nWus$(9L45D$RBJM&Aw~$2)*R8u-f`e^%~-gRLIGL8r4@vpq~>ip65ZCg{Hs z>z&!9be6bWomiDBpz=Tb-8y^BQ9$QRCr$cJz*evwylUkeQ9!<&u;SegGo#=nH-uS# zX><5q2glRuE3hm6U4f14W^Jo@36YXlxVttDIbswn_HlZs-8&2|G=<8Ge{nCLYGqKa zq7?L^yBK8w_G~xSXHCwcjrUWH_J3vjZLk}K5%(}eEbEBOK@M51I3wMU_r{&XeiBM} zoV9qJS^8$~w)Z{JR2%00b0WOHt{~*FO!S%_p_b?b6at{*JKzqK09aY3MQ!ngQ>4)A zCdk_K9g9Br?@slMNv(t01R$@+$&yB-&{jmf?+9*F9XUIgxkNp0#=fDIBaZd8Y{1>S zxN~kG+4QWpI`#8*Gn*MXIs364EoG9ER8g)QVzT!7Jn81P`an7JyV9-4f|^^+eK-h( zE8QG^U5BGLQdlz}^HZQ6(GjGd^eSj=t4NtLx9n@)h3Nj=gYQ%VzIvtq88OAU=9;_% zutRWhcXJOF;Ok5oZ+zl2>qz;A+(ZD75JRTXchRDvG@GDO+)8=Q0580{3wmOLvk!7| zD4i0t*|R*mz}4R{0pfl+6$PMvckpqWszmIC3vZ{hfk`pwQbXW19`_n6wHQq48qqbo zY`;}HS927dthYq(uZGH6s=qpM8l6MJ32CeMU_c^nNB4T%x$Ny4zt)JW51n;9Tq-!V z?}D2Up9!}n`193RZEhImPu~k<_}ppQ_FQU9ZELr=CnA7AUaQ+5qa#3@HdVHgLtZGiOml^o-Bj|klWOtQ;?kCmI1u3{Od zMM83eL1n%%F}kMg1?xxejXms1>mS$`p&uz4b#3VO`~AgnuPt{0WgY<@nQLX&le={v zY~Ix%mbHTHa$ zKU&dtU?|QXpYb?j{$<&&sw5B&xN^}uzCu)a%x66G=74tnj{+0sx=6p&`W@IZnR>XB zIJAoY6<3%JjuN2{JecXRssC4_({}va>ANsTwq5W z4H?~N%h+n_xP@~#V`8R78#SrDSZATponda(Cj1)*@HD<#FHJe-m(fkxM1i{yaJsVF|`vF&F#d7ra+1C$N0}M;z*hYZkNr>@4EY0vvduR; z(NyKiI-9pFNLeC4cWfNk9MHzOv^$`v-;@C>VLebSKyx~(nrncR1Bkk>fDU}lJ0d(! zfe78by0)iy!q5AZEE-j_futkPJ=4u~YP7A?`Fa&k;v0i{2&NGoAC2uoo>KWlqLFay+N5oMzMmuj#6yOmu3lh%Tx2?Xrd?{aRTd5+F2cR!(HeXt2S zg9+F*`?QJtVGvEJ?h7`%4!w*ap&$NbpYcBdC1*^kqtT`VxmOD4pV0mmpcT%a?@61X z^csl3G}s{BvPlG=vA$UN5hYOYcnIgy5jHp&5^!_<(tHJxt?gyA=uFmQ`5c9YOC3D_zx}R?7>D-p*TXwFzc_D z;d)c*yO-1|6{d*iuUHc)jJ>QTgJmS{Xg=55W>olxblZ(ZJJg?Ks%=~-F7VTtB{|!( zEvRQ=T#|K<%e*T6h7Ht2F?s4K+fQPV_lOS)VzS0`kQ&$}qvRDD5BcQ!UE2kEXQnlQ4-mp+Q&l@m3N#@CD;r@G57ZNrOSAs zE^6;!pBwwy^9+{X5`Ni4}$TaS26L<8K%RG!4{U55BH& z)wnq!uPM5^F(3=EkpDv~yMD@Z2Jo1?~DhZ&{ZK<4|sp;>208;qQ%c zu2G#e;maNa8sEQVD`Q${7pMI}!O?qzzspR`V7z^1$T}7T+EnjdX-G{k*0x~TK4_>Q z7lsB*x0--s9)&8-FRapo1kmjdlUTt5-O1Hb&DJtG#iR zpgk`Le_7~Hz|6w7e$REd_&(Ub5|W|43;E@Ujjx84&l`YhxB6YD}OcP;ykQHL*IzKlPpg`TtwWKmR8|;Sps*#%iG%-{e_ zoc>RX(5i?62ljVDRtpHI61N3!d<FLqI&^mr#OG5o#(*1S2&u3g#@sX6{t+984 z3-RKYSRWq*8rK)F15f=zI0g8t=@R9*!wPri=m>Uqf019Vwc4we09n?T5G6#%A{8cYf4(P(c-Hd zYX%E`PHIr|r=jGKgqki@2)YwnIReCs^|)2L*XeAA0kpylv?AX<#fqErn%sImWr1$w zYXNtUl`oyp7I-qC@S9rch+nK#Wqh9yVH8#M!8%q%moijK#bQRKXwq$jk zCkdSKLK~rqH+xcEVVB>fY-ekiol6xKy8E+`pjNXEy2{{R2rp2Qo4>-_U4Zv$%r&TujRBfYa=_fDh&z?`C_uwbaaM?Ah6S{lcI*kYP(@3T)rp(Fw#DnGWh?1~t5{FAr#@CMoZzE|EXtqp%|9GyysWKrTRB9kD&52XF zi4B)hVp?QoDKv!-G7#ov-!6p zbi}GEtx8is3km%%d4*RT(s zsbvUn|EgP6GU1RGar-j)xY`*E-e8H`DB=Tvl)PUVa|rR+_dLpSi~( zKzl_-6fTyaO6I8tzzf@OS!Rm+Ef;WS=9ocmBq4}U)iiunja4^05oUl2Pd8$9e4iOG z!MubSH-nCQ^F7(5zn&B8;k9EwxAS-WKQ{Tx%g_qwj(kcYe;^2(<7A+_N4yH_HS1%& zLrNi8!U;3ofnTj(;bOVDucTHNT2oR3mIn*p%J;|_lnvq5wu!A()&8=gqWP9;ErMyg zT7L)*p2-YL_5_8F)_y&<-y@%@8aXEm>p7+vRMOwuH?K6fB@Lf5Vb4z_@l;Fy z=bTE6<8+D6>xVRZDabc_x64SYkmrAEj*Q#8Aa@wr}+@ts}U1gAMb3S$Fp z126kyt$!Izs6x69Z;GS5l3Th2YVYP+R;_T7m9nbOJ73cSRA4YL)O-Z@t+CwUd|8>V zHqCLNMsuV#_K4~a>aAuj6L+O2JKeU|ZrmyOAs=s---MooZjGMCRIdt_x%7B?n5@TD zz94I1hqKQ-ldby`iA=DfH&4kfbRUPyyua^<71Ut1-(*Am_+S8dM(({B#Bx9280z!S zQHc*+Ov{T5t-(eBojYiB z=Ry^>)WdqU2pSwzpA&L@uB8WX3WI*ejl<{(4l7K8Uc@hOb5F#i!XZmE?966WC;?r- z{oPm%`M693z~C5|2-M$aW4?&{QTi7}SU&0YyV{l=2l|IK-jiaE1nP1e8=f;QbmPL@Xg{?aeQ;wD(0o-ZEoN5V#5i1(1JrBK z$E3fX;OKTZPe#ZO;Em|5#TAp1eGy>c<&6WM=*OLi>c_J}uo-3R`y@ba!AdD4G1zJ1 z!{O;(q|a$s)zN^`@vaAFt`FHD`fP)IC7m;|va|k~%6GKl59|H^!f8;!sVtTd4+QhM zS||rLU*n(nooT&@Ed6x#4Oe^l>Pz4I zRc$nucrKrimx%P<@6&&bNEnfcR4vOwGT(KmkV}lU^vp^{^?GMvZJknU2yEq#1O+R< zGFtWB%#pHV!H*@3hfSkhf`MkZI^g=0AS|HFLYcjz?f}WL^cY16n z0mQFjD&en#0W<+X97!qbdNz_dy`xStJ?^nVXwjKP{nyVaA6JDunHhuznOwzwE&SHz zWp$N^U_|e%YL+_J)02UZr(>1VQQiP_l=X2&ah0F9iX31P1+j6I+Lw;vG0Ugupnged)a_snTcqx zdum!+AaO|iwM$93aQL-)xR8RXEKG2Pz^kmsKtni>uyI0Zl^M9Ht(0$ z9JKZ4qFHMZ>gx^;3Z$kK&Pi}iWsXdY?cwFERgycW{{~bNe?$2k)PsPE%(!eP%K89DWOF zGO7ayPvT{pMs+;r>x%0c6|s|lMB@tDQazU1q=wnr#8DFLYL>`}nSrX5ukcADf45mA z@2X#MRLW{##{$VuF0h&X_w0lPctz;kFipO{Z&aH_w-#Dk+n^}rFXX0|;hJIJ8Mql$ zV&jR&1e}2SMdxylITR_LAHyMwQY>YMrYMK53NlR&juwhZvk9yx404F2qm=G_Uyy6> zRI#PMhLvU#nJR;!K7LF`H7JuK__x1A;U6N>h@c=k(~}#^lU?GgnMl4T&_BVS6o7u`1e%d|9LF)zjw0n|4D8CIYMC!ADC%2z5vco-5wd?yMKRSukY5G$+Pc& z^M}#eF`2W*7wcTg*NX(&2F9gpkdM7d>}tX2=_)0!+b8O&!zDTOq!b5V7;X(MsMN`e!92g&c+bkIHk@KovQ{}*pd)K>JTS_|O8R)ojC$f!RI%lga8lodp$?dh zU~7TPTCU0Gv}oURyWJFVBug1;e_14x@^NL{r1D0SqKschOC1w&`+hbEt7k?|e}Tgw zhg45!8ZrTU>~`Br6IlC(rfvLNGw@O>-YQ_R5Ffq93c*AFML8=YgE=`;VV3 zfui%y=lH36m6kV&DW(plP+hDBO+o3&nn;((WAnU2r=-CWyv5DY>ZsyOiHz_F$uKAxt5|1!1e;C#@MGg%= zS0Y|1^j17cWsiF2kX@H2e|FDPa4}V+t2b!>Zgg$5`k6#dx@)@ry`>r{))l9Gji^6meJWUG*VjNhlr=IjB+IQ_tf}a@o5VSlJ(dtyEclBZ z6bg2n^%-X?&+oPeeTa(;Z7?j_q0Qapx{^}#!oE|?Rw2jSa)4{@r#ejeLVr1%s2Uqm-u~^CVGLHTeA-y8aZO6JHwK0 zHW-(@CetrX7eQ6R?e=j`Gw1YWtzec)R+8XDxt!*OO5FU8?q$We#GN^nhhPOaXe?zn zZ263z@?6FkyMJ>DbKz3bUyj98rY)e5EJmt$R#)kfWdz_W&+C+h~ z_*FTSqdNInAGML`(j&{QF7hous{Qrcp4UUV%$4vt^{e98Uqx!WQ;{G_vXJ6-)|c86 z%Tp^JD^#7^3h4ABN2kAzltu{4Mj}XI8Ao~fx8&cRKLVEFEfO`_=|~Y8qQemqw4_PF zwwx5dUpel;Mi!Fb&iDN@TGoRErVsOlVL=`UDnMn9V1`?yRk>`AorN$d1HuY0HM~!> z;^%03!Rc=Fdfr!l^4*`8$$O^} zjVq#r8ccQhG|Se71sPW_P1l4&!M>fPDngc!AA zTxx2~W~mWbFuPakrdLov@_=thYl7`%GkaBvM=7QsU(Wrz8#y4&M31}`VO4Tu-I99v zNkIr?FaP7=QTaFvHp#{-@bT(+hyJ2_%#LDmN+( z^}K@AzokxX$TkitSHIuoSM#p+WL+w`M4Eo=vxMmQ(AMQ?cgmdUc@3WDcq6XAN6Qu@ zimn-%2~pl#*HZXjj+E*wE7ncEAT>p{U;RS)sCu{bOIZ-JEA974K4fBMYq;O<=TJLJ zcdPkWY=wO{!m`g@${a#P`84VJ4gLL=x_h~9%c_^Z`a7A;K)26V8GI(u($6D4!R9PIc0O+MLZsY5U{X?UgGDhbI#f z<*dRo7p4P?Uv^*k8|6^dQF_j2sOa|!QtpgK>gH33zCPCJI-Kb()k#nF)}8##BrSea zc)=68|M?1oeE%|!;0o$GnKyDG1t{KEM);e{oN0PsSrQYQ{?9G??)Smz$KCyGcWn~K z=E=AcCY^SUEOR3mPX_hxrTGm#gUXkF(0NVfnozt-{w+9PMzAx>P4TE8LukG{yAmZb zPl&Ph-ZQ{$$f7yElw2_Xz0;Rk2BETof}`tV7Nds(nC+G#F7Np!rO&-+eQe^(cEXjH zcj(o&k9!fk7T)q-j+Y8Xt}ag1ei3;7-V2X^NU(s%$vbb^$!U%h9^f6+ft|mss1$Oq zGC|v&J#2l8x-px7SkiRZOP~vddSumnAVTM ze|3CzJ-7YV)BC#F=Kk$N_t!wty#;wo3Z|2^547&xh@TOk0VS+6oYr%{_lcE*OqxPe zk{DB>mvp1g4KWE*NU;2`(louj1)?;N*G2EWyZ8mgb1xgky}lxQExvLa<8&MLWqp1* zPpuIbbG50zcJiFey;Qz5M6z!ypv&6tOK&3e&H0wIWPJeQi%lL~j6!A#PI#`cvf~=L zDw<>vjx1ZS581+siN1b}TbW*-0L#kbDBDbhsS1^7)(3{{?xt$v6N2 literal 0 HcmV?d00001 -- 2.34.1 From a45ef3c4a65a3ad0fe137989de85098441364962 Mon Sep 17 00:00:00 2001 From: Patrick Canterino Date: Tue, 3 Sep 2024 19:34:19 +0200 Subject: [PATCH 06/16] Added screenshots directory to .dockerignore --- .dockerignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.dockerignore b/.dockerignore index 4c72529..e1e7064 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,7 +1,8 @@ +screenshots CHANGELOG.md CONTRIBUTING.md Dockerfile README.md composer.json install.php -.* \ No newline at end of file +.* -- 2.34.1 From 6a10a293ce68ed1910418cc8778434ca1a552c92 Mon Sep 17 00:00:00 2001 From: Patrick Canterino Date: Tue, 3 Sep 2024 19:49:49 +0200 Subject: [PATCH 07/16] Updated CHANGELOG --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c4e27de..1fcb501 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,15 @@ 5. Follow the installation wizard, it should propose you the same data folder or even update automatically 6. Check your `/lib/config.local.php` and compare it with the `/lib/config.original.php` to see if new configuration items are available. If a new item is missing in your `config.local.php`, this may trigger some errors as Jirafeau may expect to have them. +## Current snapshots + +- Lots of code refactoring +- Few more little fixes +- Typo and spelling mistakes + +New configuration items: +- `one_time_download_preselected` for preselecting the checkbox for deleting the file after the first download + ## Version 4.6.0 - New configuration options for allowing to require, check or generate file download passwords -- 2.34.1 From 42fe0291ef650140d5c712932d496c81fac18933 Mon Sep 17 00:00:00 2001 From: Patrick Canterino Date: Sun, 8 Sep 2024 14:26:07 +0000 Subject: [PATCH 08/16] Updated copyright header, new list of authors in separate file --- .dockerignore | 1 + AUTHORS.md | 117 +++++++++++++++++++++++++++++++++++++++ admin.php | 4 +- docker/docker_config.php | 4 +- f.php | 3 +- index.php | 6 +- install.php | 3 +- lib/config.original.php | 1 + lib/functions.js.php | 3 +- lib/functions.php | 2 +- lib/lang.php | 2 + lib/settings.php | 2 + script.php | 2 + tos.php | 3 + 14 files changed, 144 insertions(+), 9 deletions(-) create mode 100644 AUTHORS.md diff --git a/.dockerignore b/.dockerignore index e1e7064..670c268 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,4 +1,5 @@ screenshots +AUTHORS.md CHANGELOG.md CONTRIBUTING.md Dockerfile diff --git a/AUTHORS.md b/AUTHORS.md new file mode 100644 index 0000000..a5d94ae --- /dev/null +++ b/AUTHORS.md @@ -0,0 +1,117 @@ +# Authors of Jirafeau + +## Main author of Jirafeau from 2015 to 2024 + +Jirafeau was originally a project by **Jérôme Jutteau**, who forked the [Jyraphe](https://web.archive.org/web/20170506133242/home.gna.org/jyraphe) project in 2015. He was the main author Jirafeau from 2015 to 2024. + +Jyraphe was authored by **Julien "axolotl" Bernard**. + +## Contributors of Jirafeau from 2015 to present + +This is a list of people who contributed to Jirafeau over the years. The list was generated by extracting the authors from the Git history. If we forgot someone, it was simply by accident and not intentionally. + +- Allan Nordhøy +- Alper Burcu Torun +- Andrea Zucchelli +- Ante Nakic +- asashi +- Asharas +- bendia +- Blackeye +- Borja Saavedra Valdés +- ButterflyOfFire +- Cem +- Dan Untenzu +- Dark Horse +- Dennis de Best +- Edwin Bos +- Erik Hubers +- Erik Lundin +- Étienne Deparis +- Eugene Barbashin +- Fabien Clément +- Federico Bailes +- Fedor Piecka +- ferranroig +- Florian Fricke +- flsabourin +- fm-sys +- François Boulogne +- François L +- GoZ +- Guilherme Andrade +- gwunderlich +- Hunter Fuller +- hüseyinyıldız +- Igor Posledov +- ikmaak +- Ioannis +- Jack Footner +- Jasper +- j-broo +- Jeannette L +- Jimmy Beauvois +- Jindřich Skácel +- J. Lavoie +- João Paulo Freire +- JuLien42 +- Julien Malik +- KajmaczeK +- Kidhoma Norman +- Lari Oesch +- Laurentiu Dobrota +- Luna Jernberg +- Marc Gallet +- Marc Hauswirth +- Mathis Mensing +- Matthieu Schneider +- Mattias Münster +- max keiser +- Michal Čihař +- Milo Ivir +- Misik +- M Krisztián +- MrWouterNL +- Nelson Pereira +- Nicky Galliano +- Oded +- Oğuz Ersen +- Olivier Esver +- omar anwar aglan +- Oskar Fagerfjäll +- Patrick Canterino +- Pierre-Alain Bandinelli +- pixelbrackets +- Poorchop +- Pyry +- Pyry Kujala +- R.W +- Sabri Ünal +- sam lt +- Sandybunting +- scumjr +- Sebastien Mennetrier +- Slobodan Simić +- Spanti Nicola (RyDroid) +- Srikanth L +- ssantos +- Starus +- Stefano Mortellaro +- Sven Dickert +- Sylke Vicious +- Szylu +- Thomas LEBEAU +- Thomas Sontheimer +- Tymofij Lytvynenko +- Vasilis Giann +- Victor Lamoine +- Viktar Vauchkevich +- Weblate +- Wim Livens +- Yaron Shahrabani +- YFdyh000 +- Your Name +- Zertrin +- Zoltán Faludi +- Степанчук Максим +- Слободан Симић \ No newline at end of file diff --git a/admin.php b/admin.php index 09bded5..a6bacd3 100644 --- a/admin.php +++ b/admin.php @@ -1,7 +1,9 @@ * Copyright (C) 2015 Jerome Jutteau + * Copyright (C) 2024 Jirafeau project (see AUTHORS.md) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as @@ -14,7 +16,7 @@ * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . + * along with this program. If not, see . */ session_start(); define('JIRAFEAU_ROOT', dirname(__FILE__) . '/'); diff --git a/docker/docker_config.php b/docker/docker_config.php index 0becc2d..976f366 100644 --- a/docker/docker_config.php +++ b/docker/docker_config.php @@ -1,7 +1,9 @@ + * Copyright (C) 2008 Julien "axolotl" BERNARD + * Copyright (C) 2015 Jerome Jutteau + * Copyright (C) 2024 Jirafeau project (see AUTHORS.md) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as diff --git a/f.php b/f.php index 543fc10..f523f72 100644 --- a/f.php +++ b/f.php @@ -3,6 +3,7 @@ * Jirafeau, your web file repository * Copyright (C) 2008 Julien "axolotl" BERNARD * Copyright (C) 2015 Jerome Jutteau + * Copyright (C) 2024 Jirafeau project (see AUTHORS.md) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as @@ -15,7 +16,7 @@ * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . + * along with this program. If not, see . */ define('JIRAFEAU_ROOT', dirname(__FILE__) . '/'); diff --git a/index.php b/index.php index 43bb81d..da6ee2f 100644 --- a/index.php +++ b/index.php @@ -1,9 +1,9 @@ - * Jimmy Beauvois + * Copyright (C) 2008 Julien "axolotl" BERNARD + * Copyright (C) 2015 Jerome Jutteau + * Copyright (C) 2024 Jirafeau project (see AUTHORS.md) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as diff --git a/install.php b/install.php index ed99b19..2550aa6 100644 --- a/install.php +++ b/install.php @@ -2,7 +2,8 @@ /* * Jirafeau, your web file repository * Copyright (C) 2008 Julien "axolotl" BERNARD - * Copyright (C) 2015 Nicola Spanti (RyDroid) + * Copyright (C) 2015 Jerome Jutteau + * Copyright (C) 2024 Jirafeau project (see AUTHORS.md) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as diff --git a/lib/config.original.php b/lib/config.original.php index d261f68..8aec857 100644 --- a/lib/config.original.php +++ b/lib/config.original.php @@ -3,6 +3,7 @@ * Jirafeau, your web file repository * Copyright (C) 2008 Julien "axolotl" BERNARD * Copyright (C) 2015 Jerome Jutteau + * Copyright (C) 2024 Jirafeau project (see AUTHORS.md) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as diff --git a/lib/functions.js.php b/lib/functions.js.php index 17c6d0b..64154d3 100644 --- a/lib/functions.js.php +++ b/lib/functions.js.php @@ -1,8 +1,9 @@ * Copyright (C) 2015 Jerome Jutteau - * Copyright (C) 2015 Nicola Spanti (RyDroid) + * Copyright (C) 2024 Jirafeau project (see AUTHORS.md) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as diff --git a/lib/functions.php b/lib/functions.php index 4991f23..83d7a2d 100644 --- a/lib/functions.php +++ b/lib/functions.php @@ -3,7 +3,7 @@ * Jirafeau, your web file repository * Copyright (C) 2008 Julien "axolotl" BERNARD * Copyright (C) 2015 Jerome Jutteau - * Copyright (C) 2015 Nicola Spanti (RyDroid) + * Copyright (C) 2024 Jirafeau project (see AUTHORS.md) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as diff --git a/lib/lang.php b/lib/lang.php index cfb8f80..abba168 100644 --- a/lib/lang.php +++ b/lib/lang.php @@ -1,7 +1,9 @@ * Copyright (C) 2015 Jerome Jutteau + * Copyright (C) 2024 Jirafeau project (see AUTHORS.md) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as diff --git a/lib/settings.php b/lib/settings.php index 494dfd2..cbdfaff 100644 --- a/lib/settings.php +++ b/lib/settings.php @@ -2,6 +2,8 @@ /* * Jirafeau, your web file repository * Copyright (C) 2008 Julien "axolotl" BERNARD + * Copyright (C) 2015 Jerome Jutteau + * Copyright (C) 2024 Jirafeau project (see AUTHORS.md) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as diff --git a/script.php b/script.php index 6ef117e..c0cee68 100644 --- a/script.php +++ b/script.php @@ -1,7 +1,9 @@ * Copyright (C) 2015 Jerome Jutteau + * Copyright (C) 2024 Jirafeau project (see AUTHORS.md) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as diff --git a/tos.php b/tos.php index 313f0da..cc4a831 100644 --- a/tos.php +++ b/tos.php @@ -1,6 +1,9 @@ + * Copyright (C) 2015 Jerome Jutteau + * Copyright (C) 2024 Jirafeau project (see AUTHORS.md) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as -- 2.34.1 From a37a6ed33d07882e4259a6cd2a570893b0057bbf Mon Sep 17 00:00:00 2001 From: Patrick Canterino Date: Sat, 12 Oct 2024 14:48:50 +0000 Subject: [PATCH 09/16] Removed the download button and the corresponding link for encrypted files from the admin interface --- lib/functions.php | 36 +++++++++++++++++++++++++----------- lib/locales/ar.json | 3 +++ lib/locales/be.json | 3 +++ lib/locales/bn_IN.json | 3 +++ lib/locales/bo.json | 3 +++ lib/locales/ca.json | 3 +++ lib/locales/ckb.json | 3 +++ lib/locales/cs.json | 3 +++ lib/locales/da.json | 3 +++ lib/locales/de.json | 3 +++ lib/locales/el.json | 3 +++ lib/locales/en.json | 3 +++ lib/locales/es.json | 3 +++ lib/locales/et.json | 3 +++ lib/locales/fi.json | 3 +++ lib/locales/fr.json | 3 +++ lib/locales/he.json | 3 +++ lib/locales/hi.json | 3 +++ lib/locales/hr.json | 3 +++ lib/locales/hu.json | 3 +++ lib/locales/id.json | 3 +++ lib/locales/it.json | 3 +++ lib/locales/ja.json | 3 +++ lib/locales/ko.json | 3 +++ lib/locales/la.json | 3 +++ lib/locales/mfe.json | 3 +++ lib/locales/ms.json | 3 +++ lib/locales/nb_NO.json | 3 +++ lib/locales/nl.json | 3 +++ lib/locales/pl.json | 3 +++ lib/locales/ps.json | 3 +++ lib/locales/pt.json | 3 +++ lib/locales/pt_BR.json | 3 +++ lib/locales/ro.json | 3 +++ lib/locales/ru.json | 3 +++ lib/locales/sh.json | 3 +++ lib/locales/si.json | 3 +++ lib/locales/sk.json | 3 +++ lib/locales/sl.json | 3 +++ lib/locales/sq.json | 3 +++ lib/locales/sr.json | 3 +++ lib/locales/sv.json | 3 +++ lib/locales/ta.json | 3 +++ lib/locales/template.json | 3 +++ lib/locales/th.json | 3 +++ lib/locales/tr.json | 3 +++ lib/locales/uk.json | 3 +++ lib/locales/vi.json | 3 +++ lib/locales/zh.json | 3 +++ lib/locales/zh_TW.json | 3 +++ 50 files changed, 172 insertions(+), 11 deletions(-) diff --git a/lib/functions.php b/lib/functions.php index 83d7a2d..f70e0de 100644 --- a/lib/functions.php +++ b/lib/functions.php @@ -744,7 +744,7 @@ function jirafeau_get_link($hash) } /** - * List files ii folder in admin interface. + * List files in admin interface. */ function jirafeau_admin_list($name, $file_hash, $link_hash) { @@ -780,25 +780,39 @@ function jirafeau_admin_list($name, $file_hash, $link_hash) } /* Print link information. */ echo ''; - echo '' . - '' . jirafeau_escape($l['file_name']) . '
    '; + echo ''; + + if (!$l['crypted'] && !$l['crypted_legacy']) { + echo'' . jirafeau_escape($l['file_name']) . ''; + } + else { + echo jirafeau_escape($l['file_name']); + } + + echo '
    '; + echo t('TYPE') . ': ' . jirafeau_escape($l['mime_type']) . '
    '; echo t('SIZE') . ': ' . jirafeau_human_size($l['file_size']) . '
    '; echo t('EXPIRE') . ': ' . ($l['time'] == -1 ? '∞' : jirafeau_get_datetimefield($l['time'])) . '
    '; - echo t('ONETIME') . ': ' . ($l['onetime'] == 'O' ? 'Yes' : 'No') . '
    '; + echo t('ONETIME') . ': ' . ($l['onetime'] == 'O' ? t('YES') : t('NO')) . '
    '; + echo t('ENCRYPTED') . ': ' . (($l['crypted'] || $l['crypted_legacy']) ? t('YES') : t('NO')) . '
    '; echo t('UPLOAD_DATE') . ': ' . jirafeau_get_datetimefield($l['upload_date']) . '
    '; if (strlen($l['ip']) > 0) { echo t('ORIGIN') . ': ' . $l['ip'] . '
    '; } echo ''; + + if (!$l['crypted'] && !$l['crypted_legacy']) { + echo '
    ' . + '' . + '' . + jirafeau_admin_csrf_field() . + '' . + '
    '; + } + echo '
    ' . - '' . - '' . - jirafeau_admin_csrf_field() . - '' . - '
    ' . - '
    ' . '' . '' . jirafeau_admin_csrf_field() . diff --git a/lib/locales/ar.json b/lib/locales/ar.json index f8a9ad6..83227b4 100644 --- a/lib/locales/ar.json +++ b/lib/locales/ar.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/be.json b/lib/locales/be.json index 1fa1e6f..4dc371c 100644 --- a/lib/locales/be.json +++ b/lib/locales/be.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/bn_IN.json b/lib/locales/bn_IN.json index 4c86aef..c0d7a26 100644 --- a/lib/locales/bn_IN.json +++ b/lib/locales/bn_IN.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/bo.json b/lib/locales/bo.json index 353cbd5..9d08b73 100644 --- a/lib/locales/bo.json +++ b/lib/locales/bo.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/ca.json b/lib/locales/ca.json index 900d618..2d259b9 100644 --- a/lib/locales/ca.json +++ b/lib/locales/ca.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/ckb.json b/lib/locales/ckb.json index f4f30fe..bbc76bc 100644 --- a/lib/locales/ckb.json +++ b/lib/locales/ckb.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/cs.json b/lib/locales/cs.json index a310461..9db9731 100644 --- a/lib/locales/cs.json +++ b/lib/locales/cs.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/da.json b/lib/locales/da.json index 645bcef..af0ccb8 100644 --- a/lib/locales/da.json +++ b/lib/locales/da.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/de.json b/lib/locales/de.json index 76062b5..8936ee1 100644 --- a/lib/locales/de.json +++ b/lib/locales/de.json @@ -1,4 +1,7 @@ { + "NO": "Nein", + "YES": "Ja", + "ENCRYPTED": "Verschlüsselt", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/el.json b/lib/locales/el.json index d9ea2f5..2676b18 100644 --- a/lib/locales/el.json +++ b/lib/locales/el.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/en.json b/lib/locales/en.json index aa7559d..f17bf9a 100644 --- a/lib/locales/en.json +++ b/lib/locales/en.json @@ -1,4 +1,7 @@ { + "NO": "No", + "YES": "Yes", + "ENCRYPTED": "Encrypted", "SODIUM_UNAVAILABLE": "Encryption is enabled in configuration, but the Sodium PHP module is not loaded! Encryption is not available!", "ADMIN_FOLDER_INFO": "(File must be in Folder %s)", "ADMIN_FILE_SELECT": "Filename", diff --git a/lib/locales/es.json b/lib/locales/es.json index 339c468..3c6bac0 100644 --- a/lib/locales/es.json +++ b/lib/locales/es.json @@ -1,4 +1,7 @@ { + "NO": "No", + "YES": "Sí", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/et.json b/lib/locales/et.json index f4f30fe..bbc76bc 100644 --- a/lib/locales/et.json +++ b/lib/locales/et.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/fi.json b/lib/locales/fi.json index 21c28d1..debff9c 100644 --- a/lib/locales/fi.json +++ b/lib/locales/fi.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/fr.json b/lib/locales/fr.json index 9850683..8629b76 100644 --- a/lib/locales/fr.json +++ b/lib/locales/fr.json @@ -1,4 +1,7 @@ { + "NO": "Non", + "YES": "Oui", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/he.json b/lib/locales/he.json index f5c72b6..ea0f4e5 100644 --- a/lib/locales/he.json +++ b/lib/locales/he.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/hi.json b/lib/locales/hi.json index 9349097..fdca622 100644 --- a/lib/locales/hi.json +++ b/lib/locales/hi.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/hr.json b/lib/locales/hr.json index fb75482..d1994d6 100644 --- a/lib/locales/hr.json +++ b/lib/locales/hr.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/hu.json b/lib/locales/hu.json index a381b82..a4a075e 100644 --- a/lib/locales/hu.json +++ b/lib/locales/hu.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/id.json b/lib/locales/id.json index 4ed9761..24cea50 100644 --- a/lib/locales/id.json +++ b/lib/locales/id.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/it.json b/lib/locales/it.json index 2b8600b..4be5d53 100644 --- a/lib/locales/it.json +++ b/lib/locales/it.json @@ -1,4 +1,7 @@ { + "NO": "No", + "YES": "Sì", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/ja.json b/lib/locales/ja.json index 0a39a65..04e6735 100644 --- a/lib/locales/ja.json +++ b/lib/locales/ja.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/ko.json b/lib/locales/ko.json index 9349097..fdca622 100644 --- a/lib/locales/ko.json +++ b/lib/locales/ko.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/la.json b/lib/locales/la.json index e1b1bce..b5cf0a2 100644 --- a/lib/locales/la.json +++ b/lib/locales/la.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/mfe.json b/lib/locales/mfe.json index f4f30fe..bbc76bc 100644 --- a/lib/locales/mfe.json +++ b/lib/locales/mfe.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/ms.json b/lib/locales/ms.json index e97fa01..27575f7 100644 --- a/lib/locales/ms.json +++ b/lib/locales/ms.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/nb_NO.json b/lib/locales/nb_NO.json index c5a6297..939f52b 100644 --- a/lib/locales/nb_NO.json +++ b/lib/locales/nb_NO.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/nl.json b/lib/locales/nl.json index ca4aa74..c817eee 100644 --- a/lib/locales/nl.json +++ b/lib/locales/nl.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/pl.json b/lib/locales/pl.json index 6a1fa9a..d70f0de 100644 --- a/lib/locales/pl.json +++ b/lib/locales/pl.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/ps.json b/lib/locales/ps.json index f4f30fe..bbc76bc 100644 --- a/lib/locales/ps.json +++ b/lib/locales/ps.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/pt.json b/lib/locales/pt.json index f326529..812b59d 100644 --- a/lib/locales/pt.json +++ b/lib/locales/pt.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/pt_BR.json b/lib/locales/pt_BR.json index 638dc08..1e36b53 100644 --- a/lib/locales/pt_BR.json +++ b/lib/locales/pt_BR.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/ro.json b/lib/locales/ro.json index fe03dec..6d76460 100644 --- a/lib/locales/ro.json +++ b/lib/locales/ro.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/ru.json b/lib/locales/ru.json index e9dc7f1..6b0f951 100644 --- a/lib/locales/ru.json +++ b/lib/locales/ru.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/sh.json b/lib/locales/sh.json index f4f30fe..bbc76bc 100644 --- a/lib/locales/sh.json +++ b/lib/locales/sh.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/si.json b/lib/locales/si.json index eb4a94d..842db6c 100644 --- a/lib/locales/si.json +++ b/lib/locales/si.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/sk.json b/lib/locales/sk.json index a69e18d..8c42dc5 100644 --- a/lib/locales/sk.json +++ b/lib/locales/sk.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/sl.json b/lib/locales/sl.json index bb4c65d..463d58b 100644 --- a/lib/locales/sl.json +++ b/lib/locales/sl.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/sq.json b/lib/locales/sq.json index f4f30fe..bbc76bc 100644 --- a/lib/locales/sq.json +++ b/lib/locales/sq.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/sr.json b/lib/locales/sr.json index 7755688..6aca55f 100644 --- a/lib/locales/sr.json +++ b/lib/locales/sr.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/sv.json b/lib/locales/sv.json index 8399753..59c215b 100644 --- a/lib/locales/sv.json +++ b/lib/locales/sv.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/ta.json b/lib/locales/ta.json index 58c4f51..c46fd97 100644 --- a/lib/locales/ta.json +++ b/lib/locales/ta.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/template.json b/lib/locales/template.json index ee38ca9..ce688bf 100644 --- a/lib/locales/template.json +++ b/lib/locales/template.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "SODIUM_UNAVAILABLE": "", "ADMIN_FOLDER_INFO": "", "ADMIN_FILE_SELECT": "", diff --git a/lib/locales/th.json b/lib/locales/th.json index f4f30fe..bbc76bc 100644 --- a/lib/locales/th.json +++ b/lib/locales/th.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/tr.json b/lib/locales/tr.json index c29255e..76287db 100644 --- a/lib/locales/tr.json +++ b/lib/locales/tr.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/uk.json b/lib/locales/uk.json index f609ac8..bd8f31c 100644 --- a/lib/locales/uk.json +++ b/lib/locales/uk.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/vi.json b/lib/locales/vi.json index 4dfcf33..35bb24e 100644 --- a/lib/locales/vi.json +++ b/lib/locales/vi.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/zh.json b/lib/locales/zh.json index 43495b1..5b01550 100644 --- a/lib/locales/zh.json +++ b/lib/locales/zh.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", diff --git a/lib/locales/zh_TW.json b/lib/locales/zh_TW.json index 2e8bbf7..43877f5 100644 --- a/lib/locales/zh_TW.json +++ b/lib/locales/zh_TW.json @@ -1,4 +1,7 @@ { + "NO": "", + "YES": "", + "ENCRYPTED": "", "DOWNLOAD_IP": "", "DOWNLOAD_DATE": "", "DOWNLOAD_COUNT": "", -- 2.34.1 From e01619911be7d0d121ffed852b6b76ce661e38db Mon Sep 17 00:00:00 2001 From: Patrick Canterino Date: Mon, 14 Oct 2024 19:40:29 +0200 Subject: [PATCH 10/16] Updated README and CHANGELOG --- CHANGELOG.md | 3 ++- README.md | 13 +++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1fcb501..6f55e08 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,8 @@ ## Current snapshots -- Lots of code refactoring +- Removed the download button and the corresponding link for encrypted files from the admin interface +- Lots of code refactoring and cleanup - Few more little fixes - Typo and spelling mistakes diff --git a/README.md b/README.md index 8c900b0..d2ac2b5 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,7 @@ Jirafeau project won't evolve to a file manager and will focus to keep a very fe This shows how to install Jirafeau by your own, it's quite simple but you can also use a [docker image](https://gitlab.com/jirafeau/Jirafeau/container_registry/) or build -it yourself. Check [docker folder](docker/README.md) for more informations. +it yourself. Check [docker folder](docker/README.md) for more information. System requirements: - PHP >= 7.4 @@ -90,12 +90,13 @@ If you have some troubles, consider the following cases - Check your `/lib/config.local.php` file and compare it with `/lib/config.original.php`, the configuration syntax or a parameter may have changed - Check owner and permissions of your files -- set `debug` option to `true` to check any warning or error +- Set `debug` option to `true` to check any warning or error ## Security `var` directory contains all files and links. It is randomly named to limit access but you may add better protection to prevent un-authorized access to it. You have several options: + - Configure a `.htaccess` - Move var folder to a place on your server which can't be directly accessed - Disable automatic listing on your web server config or place a index.html in var's sub-directory (this is a limited solution) @@ -222,7 +223,7 @@ Hint: To create a custom theme just copy the `courgette` folder and name your th ### I found a bug, what should I do? Feel free to open a bug in the [GitLab's issues](https://gitlab.com/jirafeau/Jirafeau/issues). -If you can, please copy-paste informations related to bug opening provided in admin interface. +If you can, please copy-paste information related to bug opening provided in admin interface. Admin interface can be reached by accessing `/admin.php`. ### How to set maximum file size? @@ -236,8 +237,8 @@ If you don't want to allow unlimited upload size, you can still setup a maximal ### How can I edit an option? -Documentation of all default options are located in [lib/config.original.php](https://gitlab.com/jirafeau/Jirafeau/blob/master/lib/config.original.php). -If you want to change an option, just edit your `lib/config.local.php`. +Documentation of all default options are located in [/lib/config.original.php](https://gitlab.com/jirafeau/Jirafeau/blob/master/lib/config.original.php). +If you want to change an option, just edit your `/lib/config.local.php`. ### How can I change the Terms of Service? @@ -312,4 +313,4 @@ Feel free to create an [issue](https://gitlab.com/jirafeau/Jirafeau/-/issues) if You can [drop few bucks for Jérôme Jutteau](https://www.paypal.com/paypalme/jeromejutteau) -Many Thanks <3 \ No newline at end of file +Many Thanks <3 -- 2.34.1 From 9c3b702ab8f82079ddaa9a12413802de946d8ecc Mon Sep 17 00:00:00 2001 From: Patrick Canterino Date: Mon, 14 Oct 2024 12:22:34 +0200 Subject: [PATCH 11/16] Switched to php-cs-fixer 3.64.0 and PSR12 in CI Also "fix --dry-run" does the same as "check" --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bf59897..e7a6227 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -17,12 +17,12 @@ job_lint_app_81: - curl -sS https://getcomposer.org/installer | php # Create composer.json file manually, since this is a project without any non-dev dependencies yet - php composer.phar require --dev php-parallel-lint/php-parallel-lint - - php composer.phar require --dev friendsofphp/php-cs-fixer:3.10.0 + - php composer.phar require --dev friendsofphp/php-cs-fixer:3.64.0 # Install all project dependencies - php composer.phar install script: &linter_script - ./vendor/bin/parallel-lint --exclude vendor . - - ./vendor/bin/php-cs-fixer -vvv fix . --dry-run --using-cache=no --rules=@PSR2 + - ./vendor/bin/php-cs-fixer -vvv check . --using-cache=no --rules=@PSR12 # Run tests for php:7.4 job_lint_app_74: -- 2.34.1 From 4512832fcd6026051313a9764083b245a4951943 Mon Sep 17 00:00:00 2001 From: Patrick Canterino Date: Wed, 16 Oct 2024 19:50:05 +0200 Subject: [PATCH 12/16] Updated Docker README - Mount local directory for data storage - Syntax highlighting --- docker/README.md | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/docker/README.md b/docker/README.md index c506b43..33c9fc0 100644 --- a/docker/README.md +++ b/docker/README.md @@ -4,7 +4,7 @@ Jirafeau is a small PHP application so running it inside a docker container is pretty straightforward. -``` +```shell docker pull registry.gitlab.com/jirafeau/jirafeau:latest docker run -it --rm -p 8080:80 registry.gitlab.com/jirafeau/jirafeau:latest ``` @@ -14,7 +14,7 @@ The admin console is located on `/admin.php`, check console output to get auto-g ## Build your own Jirafeau docker image -``` +```shell git clone https://gitlab.com/jirafeau/Jirafeau.git cd Jirafeau docker build -t your/jirafeau:latest . @@ -23,7 +23,8 @@ docker build -t your/jirafeau:latest . ## Security You may be interested in running Jirafeau on port 80: -``` + +```shell docker run -d -p 80:80 --sysctl net.ipv4.ip_unprivileged_port_start=80 registry.gitlab.com/jirafeau/jirafeau ``` @@ -63,7 +64,8 @@ Available options: - `DOWNLOAD_PASSWORD_POLICY_REGEX`: regex to check against if password policy is set to regex Example: -``` + +```shell docker run -it -p 8080:80 --rm -e ADMIN_PASSWORD='p4ssw0rd' -e WEB_ROOT='jirafeau.mydomain.com/' -e UPLOAD_PASSWORD='foo,bar' -e PREVIEW=0 registry.gitlab.com/jirafeau/jirafeau:latest ``` @@ -73,11 +75,20 @@ Files and links are stored in `/data` by default. Subfolders are automatically c Note that configuration is not stored in /data. Example of using a dedicated volume to store Jirafeau data separately from the container: -``` + +```shell docker volume create jirafeau_data docker run -it --rm -p 8080:80 --mount source=jirafeau_data,target=/data registry.gitlab.com/jirafeau/jirafeau:latest ``` +It is also possible to put Jirafeau data into an already existing directory outside the container: + +```shell +mkdir /tmp/jirafeau_data +docker run -it --rm -p 8080:80 -v /tmp/jirafeau_data:/data registry.gitlab.com/jirafeau/jirafeau:latest + +``` + ## Few notes - `var-...` folder where lives all uploaded data is protected from direct access -- 2.34.1 From ea13ecd5272b130c028b76b91b2a05ea65fd565b Mon Sep 17 00:00:00 2001 From: Patrick Canterino Date: Mon, 14 Oct 2024 16:26:16 +0200 Subject: [PATCH 13/16] Fixed every error detected by php-cs-fixer (except the single_space_around_construct type) --- admin.php | 9 +- index.php | 30 +++---- install.php | 2 +- lib/functions.js.php | 24 +++-- lib/functions.php | 193 +++++++++++++++++++--------------------- lib/template/header.php | 4 +- script.php | 6 +- 7 files changed, 133 insertions(+), 135 deletions(-) diff --git a/admin.php b/admin.php index a6bacd3..f8270a2 100644 --- a/admin.php +++ b/admin.php @@ -37,17 +37,18 @@ if (php_sapi_name() == "cli") { if ($cfg['installation_done'] == false) { die("Installation not completed yet.\n"); } - if ((count($argv)>1) && $argv[1]=="clean_expired") { + if ((count($argv) > 1) && $argv[1] == 'clean_expired') { $total = jirafeau_admin_clean(); echo "$total expired files deleted.\n"; - } elseif ((count($argv)>1) && $argv[1]=="clean_async") { + } elseif ((count($argv) > 1) && $argv[1] == 'clean_async') { $total = jirafeau_admin_clean_async(); echo "$total old unfinished transfers deleted.\n"; } else { die("No command found. Should be admin.php .\n"); } -// Second check: Challenge by IP -} elseif (true === jirafeau_challenge_admin_ip($cfg, get_ip_address($cfg))) { +} +/* Second check: Challenge by IP */ +elseif (true === jirafeau_challenge_admin_ip($cfg, get_ip_address($cfg))) { /* Disable admin interface if we have a empty admin password. */ if (empty($cfg['admin_password']) && empty($cfg['admin_http_auth_user'])) { require(JIRAFEAU_ROOT . 'lib/template/header.php'); diff --git a/index.php b/index.php index da6ee2f..435e059 100644 --- a/index.php +++ b/index.php @@ -130,7 +130,7 @@ elseif (true === jirafeau_challenge_upload_ip($cfg, get_ip_address($cfg))) { 0) { echo t('2_BIG') . ', ' . t('FILE_LIM') . " " . $cfg['maximal_upload_size'] . " MB."; } @@ -143,26 +143,26 @@ elseif (true === jirafeau_challenge_upload_ip($cfg, get_ip_address($cfg))) { if ($cfg['one_time_download']) { echo '' . t('ONE_TIME_DL') . ':'; echo ''; } - if ($cfg['download_password_requirement'] === 'generated') { - echo ''; - } else { - echo ''; - echo ''; - }?> +if ($cfg['download_password_requirement'] === 'generated') { + echo ''; +} else { + echo ''; + echo ''; +}?> diff --git a/install.php b/install.php index 2550aa6..ebda6f5 100644 --- a/install.php +++ b/install.php @@ -153,7 +153,7 @@ break; 'abcdefghijklmnopqrstuvwxyz' . '0123456789'; $len_alphanum = strlen($alphanum); $var = 'var-'; - for ($i = 0; $i . */ - function template_js_preview_link() { +function template_js_preview_link() +{ ?> if (!!document.getElementById('preview_link')) { @@ -44,8 +45,9 @@ } } // Download page var download_link_href = 'f.php?h=' + reference; @@ -60,7 +62,8 @@ function template_js_download_page() { } // Email link var b = encodeURIComponent(" \"" + filename + "\":") + "%0D" + "%0A"; @@ -72,7 +75,8 @@ function template_js_email_link() { } // Delete link var delete_link_href = 'f.php?h=' + reference + '&d=' + delete_code; @@ -80,7 +84,8 @@ function template_js_delete_link() { document.getElementById('delete_link_text').innerHTML = web_root + delete_link_href; // Direct download link var direct_download_link_href = 'f.php?h=' + reference + '&d=1'; @@ -91,8 +96,9 @@ function template_js_delete_link() { document.getElementById('direct_link').href = direct_download_link_href; document.getElementById('direct_link_text').innerHTML = web_root + direct_download_link_href; // Validity date if (isEmpty(date)) @@ -111,7 +117,7 @@ function template_js_delete_link() { document.getElementById('date').style.display = ''; } ' . date_format($ts, 'Y-m-d H:i') . ' (GMT)'; - + return $content; } @@ -397,7 +397,7 @@ function jirafeau_hash_file($method, $file_path) function jirafeau_md5_outside($file_path) { $out = false; - $handle = fopen($file_path, "r"); + $handle = fopen($file_path, 'r'); if ($handle === false) { return false; } @@ -450,12 +450,13 @@ function jirafeau_upload($file, $one_time_download, $key, $time, $ip, $crypt, $l } /** - * - * @param bool $crypt_module_enabled - * @param string $file_path + * + * @param bool $crypt_module_enabled + * @param string $file_path * @return array [bool, string] */ -function jirafeau_handle_add_file_encryption($crypt_module_enabled, $file_path) { +function jirafeau_handle_add_file_encryption($crypt_module_enabled, $file_path) +{ /* Crypt file if option is enabled. */ $crypted = false; $crypt_key = ''; @@ -501,7 +502,6 @@ function jirafeau_add_file($file, $one_time_download, $key, $time, $ip, $crypt, $crypt_key = ''; list($crypted, $crypt_key) = jirafeau_handle_add_file_encryption($crypt, $file['tmp_name']); - /* file information */ $hash = jirafeau_hash_file($file_hash_method, $file['tmp_name']); $name = str_replace(NL, '', trim($file['name'])); @@ -513,12 +513,9 @@ function jirafeau_add_file($file, $one_time_download, $key, $time, $ip, $crypt, $p = s2p("$hash"); if (file_exists(VAR_FILES . $p . $hash)) { $rc = unlink($file['tmp_name']); - } elseif ((file_exists(VAR_FILES . $p) || @mkdir(VAR_FILES . $p, 0755, true)) - && - //move_uploaded_file($file['tmp_name'], VAR_FILES . $p . $hash)) - $move_operation($file['tmp_name'], VAR_FILES . $p . $hash)) - { - + } elseif ( + (file_exists(VAR_FILES . $p) || @mkdir(VAR_FILES . $p, 0755, true)) && + $move_operation($file['tmp_name'], VAR_FILES . $p . $hash)) { $rc = true; } if (!$rc) { @@ -526,7 +523,7 @@ function jirafeau_add_file($file, $one_time_download, $key, $time, $ip, $crypt, 'error' => array('has_error' => true, 'why' => t('INTERNAL_ERROR_DEL')), - 'link' =>'', + 'link' => '', 'delete_link' => '')); } @@ -580,7 +577,7 @@ function jirafeau_add_file($file, $one_time_download, $key, $time, $ip, $crypt, 'error' => array('has_error' => true, 'why' => t('Internal error during file creation. ')), - 'link' =>'', + 'link' => '', 'delete_link' => ''); } return array( 'error' => $noerr, @@ -589,8 +586,8 @@ function jirafeau_add_file($file, $one_time_download, $key, $time, $ip, $crypt, 'crypt_key' => $crypt_key); } - -function jirafeau_admin_list_table ($name, $file_hash, $link_hash, $visitor_function = null) { +function jirafeau_admin_list_table($name, $file_hash, $link_hash, $visitor_function = null) +{ echo '
    '; if (!empty($name)) { echo t('FILENAME') . ": " . jirafeau_escape($name); @@ -616,10 +613,6 @@ function jirafeau_admin_list_table ($name, $file_hash, $link_hash, $visitor_func echo '
    '; } - - - - /** * Tells if a mime-type is viewable in a browser * @param $mime the mime type @@ -748,8 +741,8 @@ function jirafeau_get_link($hash) */ function jirafeau_admin_list($name, $file_hash, $link_hash) { - $function = function($name, $file_hash, $link_hash) { - /* Get all links files. */ + $function = function ($name, $file_hash, $link_hash) { + /* Get all links files. */ $stack = array(VAR_LINKS); while (($d = array_shift($stack)) && $d != null) { $dir = scandir($d); @@ -785,8 +778,7 @@ function jirafeau_admin_list($name, $file_hash, $link_hash) if (!$l['crypted'] && !$l['crypted_legacy']) { echo'' . jirafeau_escape($l['file_name']) . ''; - } - else { + } else { echo jirafeau_escape($l['file_name']); } @@ -829,8 +821,9 @@ function jirafeau_admin_list($name, $file_hash, $link_hash) } } } - }; - jirafeau_admin_list_table($name, $file_hash, $link_hash, $function); + }; + + jirafeau_admin_list_table($name, $file_hash, $link_hash, $function); } /** @@ -1341,7 +1334,7 @@ function jirafeau_decrypt_file($fp_src, $fp_dst, $k) for ($i = SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_HEADERBYTES; $i < $fs; $i += JIRAFEAU_SODIUM_CHUNKSIZE + SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_ABYTES) { $to_dec = fread($r, JIRAFEAU_SODIUM_CHUNKSIZE + SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_ABYTES); [$dec, $crypt_tag] = sodium_crypto_secretstream_xchacha20poly1305_pull($crypt_state, $to_dec); - + if (fwrite($w, $dec) === false) { return false; } @@ -1758,7 +1751,7 @@ function jirafeau_get_download_stats($hash) $filename = VAR_LINKS . s2p("$hash") . $hash . '_download'; if (!file_exists($filename)) { - return array('count'=>0); + return array('count' => 0); } $c = file($filename); @@ -1782,7 +1775,8 @@ function jirafeau_write_download_stats($hash, $ip) fclose($handle); } -function jirafeau_create_upload_finished_box($preview = true) { +function jirafeau_create_upload_finished_box($preview = true) +{ ?>
    @@ -1798,8 +1792,8 @@ function jirafeau_create_upload_finished_box($preview = true) {

    - +

    @@ -1809,7 +1803,8 @@ function jirafeau_create_upload_finished_box($preview = true) {

    + } + ?>

    @@ -1834,77 +1829,76 @@ function jirafeau_create_upload_finished_box($preview = true) {

- 'minute', - 'label' => '1_MIN' + 'value' => 'minute', + 'label' => '1_MIN' ), array( - 'value' => 'hour', - 'label' => '1_H' + 'value' => 'hour', + 'label' => '1_H' ), array( - 'value' => 'day', - 'label' => '1_D' + 'value' => 'day', + 'label' => '1_D' ), array( - 'value' => 'week', - 'label' => '1_W' + 'value' => 'week', + 'label' => '1_W' ), array( 'value' => 'fortnight', 'label' => '2_W' ), array( - 'value' => 'month', - 'label' => '1_M' + 'value' => 'month', + 'label' => '1_M' ), array( - 'value' => 'quarter', - 'label' => '1_Q' + 'value' => 'quarter', + 'label' => '1_Q' ), array( - 'value' => 'year', - 'label' => '1_Y' + 'value' => 'year', + 'label' => '1_Y' ), array( - 'value' => 'none', - 'label' => 'NONE' + 'value' => 'none', + 'label' => 'NONE' ) - ); + ); } +/** + * + * creates the time selection field + * @param mixed $cfg + * @return void + */ +function jirafeau_create_selection_array($cfg) +{ + echo ''; - - - $expirationTimeOptions = jirafeau_get_expiration_time_options(); - - foreach ($expirationTimeOptions as $expirationTimeOption) { - $selected = ($expirationTimeOption['value'] === $cfg['availability_default'])? 'selected="selected"' : ''; - if (true === $cfg['availabilities'][$expirationTimeOption['value']]) { - echo ''; - } + foreach ($expirationTimeOptions as $expirationTimeOption) { + $selected = ($expirationTimeOption['value'] === $cfg['availability_default']) ? 'selected="selected"' : ''; + if (true === $cfg['availabilities'][$expirationTimeOption['value']]) { + echo ''; } - echo ''; - } + } + + echo ''; +} - function jirafeau_datestr_to_int ($time_str) { +function jirafeau_datestr_to_int($time_str) +{ $time = time(); switch ($time_str) { case 'minute': @@ -1931,7 +1925,7 @@ function jirafeau_get_expiration_time_options() { case 'year': $time += JIRAFEAU_YEAR; break; - default: + default: $time = JIRAFEAU_INFINITY; break; } @@ -1942,10 +1936,10 @@ function jirafeau_get_expiration_time_options() { /** - * links or copy a local file + * links or copy a local file * TODO: boolean in config for linking - * @param string $filepath - * @param $one_time_download is the file a one time download ? + * @param string $filepath + * @param $one_time_download is the file a one time download? * @param $key if not empty, protect the file with this key * @param $time the time of validity of the file * @param $ip uploader's ip @@ -1956,21 +1950,20 @@ function jirafeau_get_expiration_time_options() { * 'link' => the link name of the uploaded file * 'delete_link' => the link code to delete file */ -function jirafeau_copy_local_file($local_file_path, $one_time_download, $key, $time, $ip, $crypt, $link_name_length, $file_hash_method) { - +function jirafeau_copy_local_file($local_file_path, $one_time_download, $key, $time, $ip, $crypt, $link_name_length, $file_hash_method) +{ if (!file_exists($local_file_path)) { return (array( 'error' => array('has_error' => true, 'why' => t('INTERNAL_ERROR_FILE_NOT_EXIST')), - 'link' =>'', + 'link' => '', 'delete_link' => '')); } - if( + if ( // sanity check if file can be opened - $file = fopen($local_file_path, "r") - ) - { + $file = fopen($local_file_path, 'r') + ) { // close file pointer - it's not needed here fclose($file); $time_in_int = jirafeau_datestr_to_int($time); @@ -1985,25 +1978,23 @@ function jirafeau_copy_local_file($local_file_path, $one_time_download, $key, $t $file_hash_method, false ); - } - else { + } else { return (array( 'error' => array('has_error' => true, 'why' => t('INTERNAL_ERROR_FP_OPEN_LOCAL')), - 'link' =>'', + 'link' => '', 'delete_link' => '')); } - } -function jirafeau_create_file_array($file_path) { - return - [ - 'type' => mime_content_type($file_path), - 'tmp_name' => $file_path, - 'name' => basename($file_path), - 'size' => filesize($file_path), +function jirafeau_create_file_array($file_path) +{ + return [ + 'type' => mime_content_type($file_path), + 'tmp_name' => $file_path, + 'name' => basename($file_path), + 'size' => filesize($file_path), ]; } diff --git a/lib/template/header.php b/lib/template/header.php index 8be36c7..93f7e18 100644 --- a/lib/template/header.php +++ b/lib/template/header.php @@ -6,7 +6,7 @@ header('x-ua-compatible: ie=edge'); - <?php echo (true === empty($cfg['title']))? t('JI_WEB_RE') : $cfg['title']; ?> + <?php echo (true === empty($cfg['title'])) ? t('JI_WEB_RE') : $cfg['title']; ?> @@ -17,6 +17,6 @@ header('x-ua-compatible: ie=edge');

- +

diff --git a/script.php b/script.php index c0cee68..5f3bc6f 100644 --- a/script.php +++ b/script.php @@ -175,7 +175,7 @@ if (isset($_FILES['file']) && is_writable(VAR_FILES) } if (strlen($d) > 0 && $d == $link['link_code']) { jirafeau_delete_link($link_name); - echo "Ok"; + echo 'Ok'; exit; } if ($link['time'] != JIRAFEAU_INFINITY && time() > $link['time']) { @@ -217,8 +217,8 @@ if (isset($_FILES['file']) && is_writable(VAR_FILES) } elseif (isset($_GET['get_version'])) { echo JIRAFEAU_VERSION; } elseif (isset($_GET['lang'])) { - $l=$_GET['lang']; - if ($l == "bash") { + $l = $_GET['lang']; + if ($l == 'bash') { ?> #!/bin/bash -- 2.34.1 From c7a40125d620f159bef2f1979f3d43063961f73f Mon Sep 17 00:00:00 2001 From: Patrick Canterino Date: Mon, 14 Oct 2024 19:23:13 +0200 Subject: [PATCH 14/16] Skip single_space_around_construct check in CI --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e7a6227..a3e6a0d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -22,7 +22,7 @@ job_lint_app_81: - php composer.phar install script: &linter_script - ./vendor/bin/parallel-lint --exclude vendor . - - ./vendor/bin/php-cs-fixer -vvv check . --using-cache=no --rules=@PSR12 + - ./vendor/bin/php-cs-fixer -vvv check . --using-cache=no --rules=@PSR12,-single_space_around_construct # Run tests for php:7.4 job_lint_app_74: -- 2.34.1 From 9d1f580b9e6168927debdf0a072377532cf5463f Mon Sep 17 00:00:00 2001 From: Patrick Canterino Date: Mon, 14 Oct 2024 19:28:35 +0200 Subject: [PATCH 15/16] Added pipeline for PHP 8.2 --- .gitlab-ci.yml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a3e6a0d..fe75178 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,9 +3,9 @@ cache: paths: - vendor/ -# Run tests for php:8.1 -job_lint_app_81: - image: php:8.1 +# Run tests for php:8.2 +job_lint_app_82: + image: php:8.2 before_script: &before_linter_script # Install git, the docker php image doesn't have it installed by default - apt-get update -yqq @@ -24,6 +24,12 @@ job_lint_app_81: - ./vendor/bin/parallel-lint --exclude vendor . - ./vendor/bin/php-cs-fixer -vvv check . --using-cache=no --rules=@PSR12,-single_space_around_construct +# Run tests for php:8.1 +job_lint_app_81: + image: php:8.1 + before_script: *before_linter_script + script: *linter_script + # Run tests for php:7.4 job_lint_app_74: image: php:7.4 -- 2.34.1 From ca3530a0f3710ccd12247f008b3257d0c1ccd251 Mon Sep 17 00:00:00 2001 From: Patrick Canterino Date: Sat, 19 Oct 2024 15:24:08 +0200 Subject: [PATCH 16/16] Build Docker images for linux/arm/v7, linux/arm64/v8 and linux/amd64 --- .gitlab-ci.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fe75178..65d241e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -43,9 +43,7 @@ publish: - docker:dind script: - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY" - - docker build -t $CI_REGISTRY/$CI_REGISTRY_IMAGE:$CI_COMMIT_TAG . - # If we're on the default branch, also tag the image as latest - - docker build -t $CI_REGISTRY/$CI_REGISTRY_IMAGE:$CI_COMMIT_TAG -t $CI_REGISTRY/$CI_REGISTRY_IMAGE:latest . - - docker push $CI_REGISTRY/$CI_REGISTRY_IMAGE --all-tags + - docker buildx create --use + - docker buildx build --push --platform linux/arm/v7,linux/arm64/v8,linux/amd64 --tag $CI_REGISTRY/$CI_REGISTRY_IMAGE:$CI_COMMIT_TAG --tag $CI_REGISTRY/$CI_REGISTRY_IMAGE:latest . only: - tags -- 2.34.1