From 82a464dca2ee2aa2e425aee5dda453fd869823d4 Mon Sep 17 00:00:00 2001
From: XIGE <710062962@qq.com>
Date: Mon, 23 Feb 2026 19:48:13 +0800
Subject: [PATCH] 1.0
---
Plugin.php | 602 ++++++++
composer.json | 5 +
composer.lock | 142 ++
php-sdk/.github/workflows/test-ci.yml | 71 +
php-sdk/.github/workflows/version-check.yml | 19 +
php-sdk/.gitignore | 12 +
php-sdk/.scrutinizer.yml | 42 +
php-sdk/CHANGELOG.md | 196 +++
php-sdk/CONTRIBUTING.md | 30 +
php-sdk/LICENSE | 22 +
php-sdk/README.md | 76 +
php-sdk/autoload.php | 19 +
php-sdk/codecov.yml | 28 +
php-sdk/composer.json | 40 +
php-sdk/examples/README.md | 10 +
php-sdk/examples/bucket_lifecycleRule.php | 42 +
php-sdk/examples/cdn_get_bandwidth.php | 41 +
php-sdk/examples/cdn_get_flux.php | 35 +
php-sdk/examples/cdn_get_log_list.php | 31 +
php-sdk/examples/cdn_get_prefetch_list.php | 46 +
php-sdk/examples/cdn_get_refresh_list.php | 48 +
php-sdk/examples/cdn_refresh_urls_dirs.php | 59 +
php-sdk/examples/cdn_timestamp_antileech.php | 20 +
php-sdk/examples/censor_image.php | 42 +
php-sdk/examples/censor_video.php | 52 +
php-sdk/examples/delete_bucket.php | 27 +
php-sdk/examples/delete_bucketEvent.php | 28 +
.../examples/delete_bucketLifecycleRule.php | 27 +
php-sdk/examples/get_bucketEvents.php | 26 +
php-sdk/examples/get_bucketLifecycleRules.php | 26 +
php-sdk/examples/get_bucketList.php | 26 +
php-sdk/examples/get_bucketQuota.php | 26 +
php-sdk/examples/get_bucketinfo.php | 25 +
php-sdk/examples/get_bucketinfos.php | 26 +
php-sdk/examples/get_corsRules.php | 26 +
php-sdk/examples/image_url_builder.php | 74 +
php-sdk/examples/persistent_fop_init.php | 18 +
php-sdk/examples/persistent_fop_status.php | 19 +
php-sdk/examples/pfop_mkzip.php | 58 +
php-sdk/examples/pfop_vframe.php | 55 +
php-sdk/examples/pfop_video_avthumb.php | 55 +
php-sdk/examples/pfop_watermark.php | 59 +
php-sdk/examples/php-logo.png | Bin 0 -> 65062 bytes
php-sdk/examples/prefop.php | 27 +
php-sdk/examples/put_bucketAccessMode.php | 27 +
.../examples/put_bucketAccessStyleMode.php | 27 +
php-sdk/examples/put_bucketEvent.php | 32 +
php-sdk/examples/put_bucketMaxAge.php | 27 +
php-sdk/examples/put_bucketQuota.php | 29 +
php-sdk/examples/put_referAntiLeech.php | 30 +
php-sdk/examples/qetag.php | 14 +
php-sdk/examples/rs_asynch_fetch.php | 71 +
php-sdk/examples/rs_batch_change_mime.php | 32 +
php-sdk/examples/rs_batch_change_type.php | 45 +
php-sdk/examples/rs_batch_copy.php | 40 +
php-sdk/examples/rs_batch_delete.php | 32 +
.../examples/rs_batch_delete_after_days.php | 39 +
php-sdk/examples/rs_batch_move.php | 40 +
php-sdk/examples/rs_batch_restore_ar.php | 41 +
php-sdk/examples/rs_batch_stat.php | 32 +
php-sdk/examples/rs_bucket_domains.php | 26 +
php-sdk/examples/rs_buckets.php | 25 +
php-sdk/examples/rs_change_mime.php | 29 +
php-sdk/examples/rs_change_status.php | 29 +
php-sdk/examples/rs_change_type.php | 36 +
php-sdk/examples/rs_copy.php | 33 +
php-sdk/examples/rs_delete.php | 27 +
php-sdk/examples/rs_delete_after_days.php | 26 +
php-sdk/examples/rs_download_urls.php | 19 +
php-sdk/examples/rs_fetch.php | 43 +
php-sdk/examples/rs_move.php | 29 +
php-sdk/examples/rs_prefetch.php | 25 +
php-sdk/examples/rs_restore.php | 28 +
php-sdk/examples/rs_stat.php | 28 +
php-sdk/examples/rsf_list_bucket.php | 47 +
php-sdk/examples/rsf_list_files.php | 39 +
php-sdk/examples/rsf_v2list_bucket.php | 34 +
php-sdk/examples/rtc/README.md | 34 +
php-sdk/examples/rtc/rtc_createApp.php | 32 +
php-sdk/examples/rtc/rtc_create_roomToken.php | 34 +
php-sdk/examples/rtc/rtc_deleteApp.php | 25 +
php-sdk/examples/rtc/rtc_getApp.php | 26 +
php-sdk/examples/rtc/rtc_rooms_kickUser.php | 31 +
.../rtc/rtc_rooms_listActiveRooms.php | 35 +
php-sdk/examples/rtc/rtc_rooms_listUser.php | 29 +
php-sdk/examples/rtc/rtc_rooms_stopMerge.php | 28 +
php-sdk/examples/rtc/rtc_updateApp.php | 40 +
php-sdk/examples/saveas.php | 33 +
php-sdk/examples/sms/README.md | 45 +
php-sdk/examples/sms/sms_create_signature.php | 29 +
php-sdk/examples/sms/sms_create_template.php | 33 +
php-sdk/examples/sms/sms_delete_signature.php | 25 +
php-sdk/examples/sms/sms_delete_template.php | 25 +
php-sdk/examples/sms/sms_edit_signature.php | 30 +
php-sdk/examples/sms/sms_edit_template.php | 31 +
php-sdk/examples/sms/sms_query_send_sms.php | 50 +
php-sdk/examples/sms/sms_query_signature.php | 28 +
.../sms/sms_query_single_signature.php | 26 +
.../sms/sms_query_single_template.php | 26 +
php-sdk/examples/sms/sms_query_template.php | 28 +
php-sdk/examples/sms/sms_send_message.php | 32 +
php-sdk/examples/update_bucketEvent.php | 31 +
.../examples/update_bucketLifecycleRule.php | 36 +
php-sdk/examples/upload_and_callback.php | 31 +
php-sdk/examples/upload_and_pfop.php | 49 +
php-sdk/examples/upload_mgr_init.php | 19 +
php-sdk/examples/upload_multi_demos.php | 89 ++
php-sdk/examples/upload_simple_file.php | 37 +
php-sdk/examples/upload_tokens.php | 82 +
php-sdk/examples/upload_verify_callback.php | 34 +
php-sdk/examples/upload_with_qvmzone.php | 40 +
php-sdk/examples/upload_with_zone.php | 39 +
php-sdk/phpunit.xml.dist | 18 +
php-sdk/src/Qiniu/Auth.php | 285 ++++
php-sdk/src/Qiniu/Cdn/CdnManager.php | 263 ++++
php-sdk/src/Qiniu/Config.php | 398 +++++
php-sdk/src/Qiniu/Enum/QiniuEnum.php | 53 +
php-sdk/src/Qiniu/Enum/SplitUploadVersion.php | 9 +
php-sdk/src/Qiniu/Etag.php | 76 +
php-sdk/src/Qiniu/Http/Client.php | 198 +++
php-sdk/src/Qiniu/Http/Error.php | 38 +
php-sdk/src/Qiniu/Http/Header.php | 291 ++++
.../src/Qiniu/Http/Middleware/Middleware.php | 31 +
.../Middleware/RetryDomainsMiddleware.php | 76 +
php-sdk/src/Qiniu/Http/Proxy.php | 34 +
php-sdk/src/Qiniu/Http/Request.php | 42 +
php-sdk/src/Qiniu/Http/RequestOptions.php | 104 ++
php-sdk/src/Qiniu/Http/Response.php | 220 +++
.../src/Qiniu/Processing/ImageUrlBuilder.php | 292 ++++
php-sdk/src/Qiniu/Processing/Operation.php | 69 +
.../src/Qiniu/Processing/PersistentFop.php | 135 ++
php-sdk/src/Qiniu/Region.php | 229 +++
php-sdk/src/Qiniu/Rtc/AppClient.php | 236 +++
php-sdk/src/Qiniu/Sms/Sms.php | 382 +++++
php-sdk/src/Qiniu/Storage/ArgusManager.php | 129 ++
php-sdk/src/Qiniu/Storage/BucketManager.php | 1324 +++++++++++++++++
php-sdk/src/Qiniu/Storage/FormUploader.php | 165 ++
php-sdk/src/Qiniu/Storage/ResumeUploader.php | 580 ++++++++
php-sdk/src/Qiniu/Storage/UploadManager.php | 176 +++
php-sdk/src/Qiniu/Zone.php | 58 +
php-sdk/src/Qiniu/functions.php | 346 +++++
php-sdk/test-env.sh | 4 +
php-sdk/tests/Qiniu/Tests/AuthTest.php | 296 ++++
php-sdk/tests/Qiniu/Tests/Base64Test.php | 16 +
php-sdk/tests/Qiniu/Tests/BucketTest.php | 733 +++++++++
php-sdk/tests/Qiniu/Tests/CdnManagerTest.php | 151 ++
php-sdk/tests/Qiniu/Tests/ConfigTest.php | 118 ++
php-sdk/tests/Qiniu/Tests/Crc32Test.php | 23 +
php-sdk/tests/Qiniu/Tests/DownloadTest.php | 27 +
php-sdk/tests/Qiniu/Tests/EntryTest.php | 88 ++
php-sdk/tests/Qiniu/Tests/EtagTest.php | 54 +
php-sdk/tests/Qiniu/Tests/FopTest.php | 39 +
php-sdk/tests/Qiniu/Tests/FormUpTest.php | 205 +++
php-sdk/tests/Qiniu/Tests/HeaderTest.php | 184 +++
php-sdk/tests/Qiniu/Tests/HttpTest.php | 163 ++
.../tests/Qiniu/Tests/ImageUrlBuilderTest.php | 263 ++++
php-sdk/tests/Qiniu/Tests/MiddlewareTest.php | 160 ++
php-sdk/tests/Qiniu/Tests/PfopTest.php | 304 ++++
php-sdk/tests/Qiniu/Tests/ResumeUpTest.php | 354 +++++
php-sdk/tests/Qiniu/Tests/ZoneTest.php | 136 ++
php-sdk/tests/bootstrap.php | 61 +
php-sdk/tests/mock-server/ok.php | 3 +
php-sdk/tests/mock-server/redirect.php | 5 +
php-sdk/tests/mock-server/timeout.php | 3 +
php-sdk/tests/socks5-server/go.mod | 7 +
php-sdk/tests/socks5-server/go.sum | 4 +
php-sdk/tests/socks5-server/main.go | 24 +
vendor/autoload.php | 7 +
vendor/composer/ClassLoader.php | 479 ++++++
vendor/composer/InstalledVersions.php | 317 ++++
vendor/composer/LICENSE | 21 +
vendor/composer/autoload_classmap.php | 11 +
vendor/composer/autoload_files.php | 11 +
vendor/composer/autoload_namespaces.php | 9 +
vendor/composer/autoload_psr4.php | 11 +
vendor/composer/autoload_real.php | 75 +
vendor/composer/autoload_static.php | 50 +
vendor/composer/installed.json | 135 ++
vendor/composer/installed.php | 42 +
vendor/composer/platform_check.php | 26 +
vendor/myclabs/php-enum/LICENSE | 18 +
vendor/myclabs/php-enum/README.md | 196 +++
vendor/myclabs/php-enum/SECURITY.md | 11 +
vendor/myclabs/php-enum/composer.json | 36 +
vendor/myclabs/php-enum/src/Enum.php | 319 ++++
.../php-enum/src/PHPUnit/Comparator.php | 54 +
vendor/myclabs/php-enum/stubs/Stringable.php | 11 +
.../php-sdk/.github/workflows/test-ci.yml | 71 +
.../.github/workflows/version-check.yml | 19 +
vendor/qiniu/php-sdk/.gitignore | 12 +
vendor/qiniu/php-sdk/.scrutinizer.yml | 42 +
vendor/qiniu/php-sdk/CHANGELOG.md | 196 +++
vendor/qiniu/php-sdk/CONTRIBUTING.md | 30 +
vendor/qiniu/php-sdk/LICENSE | 22 +
vendor/qiniu/php-sdk/README.md | 76 +
vendor/qiniu/php-sdk/autoload.php | 19 +
vendor/qiniu/php-sdk/codecov.yml | 28 +
vendor/qiniu/php-sdk/composer.json | 40 +
vendor/qiniu/php-sdk/examples/README.md | 10 +
.../php-sdk/examples/bucket_lifecycleRule.php | 42 +
.../php-sdk/examples/cdn_get_bandwidth.php | 41 +
.../qiniu/php-sdk/examples/cdn_get_flux.php | 35 +
.../php-sdk/examples/cdn_get_log_list.php | 31 +
.../examples/cdn_get_prefetch_list.php | 46 +
.../php-sdk/examples/cdn_get_refresh_list.php | 48 +
.../examples/cdn_refresh_urls_dirs.php | 59 +
.../examples/cdn_timestamp_antileech.php | 20 +
.../qiniu/php-sdk/examples/censor_image.php | 42 +
.../qiniu/php-sdk/examples/censor_video.php | 52 +
.../qiniu/php-sdk/examples/delete_bucket.php | 27 +
.../php-sdk/examples/delete_bucketEvent.php | 28 +
.../examples/delete_bucketLifecycleRule.php | 27 +
.../php-sdk/examples/get_bucketEvents.php | 26 +
.../examples/get_bucketLifecycleRules.php | 26 +
.../qiniu/php-sdk/examples/get_bucketList.php | 26 +
.../php-sdk/examples/get_bucketQuota.php | 26 +
.../qiniu/php-sdk/examples/get_bucketinfo.php | 25 +
.../php-sdk/examples/get_bucketinfos.php | 26 +
.../qiniu/php-sdk/examples/get_corsRules.php | 26 +
.../php-sdk/examples/image_url_builder.php | 74 +
.../php-sdk/examples/persistent_fop_init.php | 18 +
.../examples/persistent_fop_status.php | 19 +
vendor/qiniu/php-sdk/examples/pfop_mkzip.php | 58 +
vendor/qiniu/php-sdk/examples/pfop_vframe.php | 55 +
.../php-sdk/examples/pfop_video_avthumb.php | 55 +
.../qiniu/php-sdk/examples/pfop_watermark.php | 59 +
vendor/qiniu/php-sdk/examples/php-logo.png | Bin 0 -> 65062 bytes
vendor/qiniu/php-sdk/examples/prefop.php | 27 +
.../php-sdk/examples/put_bucketAccessMode.php | 27 +
.../examples/put_bucketAccessStyleMode.php | 27 +
.../php-sdk/examples/put_bucketEvent.php | 32 +
.../php-sdk/examples/put_bucketMaxAge.php | 27 +
.../php-sdk/examples/put_bucketQuota.php | 29 +
.../php-sdk/examples/put_referAntiLeech.php | 30 +
vendor/qiniu/php-sdk/examples/qetag.php | 14 +
.../php-sdk/examples/rs_asynch_fetch.php | 71 +
.../php-sdk/examples/rs_batch_change_mime.php | 32 +
.../php-sdk/examples/rs_batch_change_type.php | 45 +
.../qiniu/php-sdk/examples/rs_batch_copy.php | 40 +
.../php-sdk/examples/rs_batch_delete.php | 32 +
.../examples/rs_batch_delete_after_days.php | 39 +
.../qiniu/php-sdk/examples/rs_batch_move.php | 40 +
.../php-sdk/examples/rs_batch_restore_ar.php | 41 +
.../qiniu/php-sdk/examples/rs_batch_stat.php | 32 +
.../php-sdk/examples/rs_bucket_domains.php | 26 +
vendor/qiniu/php-sdk/examples/rs_buckets.php | 25 +
.../qiniu/php-sdk/examples/rs_change_mime.php | 29 +
.../php-sdk/examples/rs_change_status.php | 29 +
.../qiniu/php-sdk/examples/rs_change_type.php | 36 +
vendor/qiniu/php-sdk/examples/rs_copy.php | 33 +
vendor/qiniu/php-sdk/examples/rs_delete.php | 27 +
.../php-sdk/examples/rs_delete_after_days.php | 26 +
.../php-sdk/examples/rs_download_urls.php | 19 +
vendor/qiniu/php-sdk/examples/rs_fetch.php | 43 +
vendor/qiniu/php-sdk/examples/rs_move.php | 29 +
vendor/qiniu/php-sdk/examples/rs_prefetch.php | 25 +
vendor/qiniu/php-sdk/examples/rs_restore.php | 28 +
vendor/qiniu/php-sdk/examples/rs_stat.php | 28 +
.../php-sdk/examples/rsf_list_bucket.php | 47 +
.../qiniu/php-sdk/examples/rsf_list_files.php | 39 +
.../php-sdk/examples/rsf_v2list_bucket.php | 34 +
vendor/qiniu/php-sdk/examples/rtc/README.md | 34 +
.../php-sdk/examples/rtc/rtc_createApp.php | 32 +
.../examples/rtc/rtc_create_roomToken.php | 34 +
.../php-sdk/examples/rtc/rtc_deleteApp.php | 25 +
.../qiniu/php-sdk/examples/rtc/rtc_getApp.php | 26 +
.../examples/rtc/rtc_rooms_kickUser.php | 31 +
.../rtc/rtc_rooms_listActiveRooms.php | 35 +
.../examples/rtc/rtc_rooms_listUser.php | 29 +
.../examples/rtc/rtc_rooms_stopMerge.php | 28 +
.../php-sdk/examples/rtc/rtc_updateApp.php | 40 +
vendor/qiniu/php-sdk/examples/saveas.php | 33 +
vendor/qiniu/php-sdk/examples/sms/README.md | 45 +
.../examples/sms/sms_create_signature.php | 29 +
.../examples/sms/sms_create_template.php | 33 +
.../examples/sms/sms_delete_signature.php | 25 +
.../examples/sms/sms_delete_template.php | 25 +
.../examples/sms/sms_edit_signature.php | 30 +
.../examples/sms/sms_edit_template.php | 31 +
.../examples/sms/sms_query_send_sms.php | 50 +
.../examples/sms/sms_query_signature.php | 28 +
.../sms/sms_query_single_signature.php | 26 +
.../sms/sms_query_single_template.php | 26 +
.../examples/sms/sms_query_template.php | 28 +
.../php-sdk/examples/sms/sms_send_message.php | 32 +
.../php-sdk/examples/update_bucketEvent.php | 31 +
.../examples/update_bucketLifecycleRule.php | 36 +
.../php-sdk/examples/upload_and_callback.php | 31 +
.../php-sdk/examples/upload_and_pfop.php | 49 +
.../php-sdk/examples/upload_mgr_init.php | 19 +
.../php-sdk/examples/upload_multi_demos.php | 89 ++
.../php-sdk/examples/upload_simple_file.php | 37 +
.../qiniu/php-sdk/examples/upload_tokens.php | 82 +
.../examples/upload_verify_callback.php | 34 +
.../php-sdk/examples/upload_with_qvmzone.php | 40 +
.../php-sdk/examples/upload_with_zone.php | 39 +
vendor/qiniu/php-sdk/phpunit.xml.dist | 18 +
vendor/qiniu/php-sdk/src/Qiniu/Auth.php | 285 ++++
.../php-sdk/src/Qiniu/Cdn/CdnManager.php | 263 ++++
vendor/qiniu/php-sdk/src/Qiniu/Config.php | 398 +++++
.../php-sdk/src/Qiniu/Enum/QiniuEnum.php | 53 +
.../src/Qiniu/Enum/SplitUploadVersion.php | 9 +
vendor/qiniu/php-sdk/src/Qiniu/Etag.php | 76 +
.../qiniu/php-sdk/src/Qiniu/Http/Client.php | 198 +++
vendor/qiniu/php-sdk/src/Qiniu/Http/Error.php | 38 +
.../qiniu/php-sdk/src/Qiniu/Http/Header.php | 291 ++++
.../src/Qiniu/Http/Middleware/Middleware.php | 31 +
.../Middleware/RetryDomainsMiddleware.php | 76 +
vendor/qiniu/php-sdk/src/Qiniu/Http/Proxy.php | 34 +
.../qiniu/php-sdk/src/Qiniu/Http/Request.php | 42 +
.../php-sdk/src/Qiniu/Http/RequestOptions.php | 104 ++
.../qiniu/php-sdk/src/Qiniu/Http/Response.php | 220 +++
.../src/Qiniu/Processing/ImageUrlBuilder.php | 292 ++++
.../src/Qiniu/Processing/Operation.php | 69 +
.../src/Qiniu/Processing/PersistentFop.php | 135 ++
vendor/qiniu/php-sdk/src/Qiniu/Region.php | 229 +++
.../qiniu/php-sdk/src/Qiniu/Rtc/AppClient.php | 236 +++
vendor/qiniu/php-sdk/src/Qiniu/Sms/Sms.php | 382 +++++
.../src/Qiniu/Storage/ArgusManager.php | 129 ++
.../src/Qiniu/Storage/BucketManager.php | 1324 +++++++++++++++++
.../src/Qiniu/Storage/FormUploader.php | 165 ++
.../src/Qiniu/Storage/ResumeUploader.php | 580 ++++++++
.../src/Qiniu/Storage/UploadManager.php | 176 +++
vendor/qiniu/php-sdk/src/Qiniu/Zone.php | 58 +
vendor/qiniu/php-sdk/src/Qiniu/functions.php | 346 +++++
vendor/qiniu/php-sdk/test-env.sh | 4 +
.../php-sdk/tests/Qiniu/Tests/AuthTest.php | 296 ++++
.../php-sdk/tests/Qiniu/Tests/Base64Test.php | 16 +
.../php-sdk/tests/Qiniu/Tests/BucketTest.php | 733 +++++++++
.../tests/Qiniu/Tests/CdnManagerTest.php | 151 ++
.../php-sdk/tests/Qiniu/Tests/ConfigTest.php | 118 ++
.../php-sdk/tests/Qiniu/Tests/Crc32Test.php | 23 +
.../tests/Qiniu/Tests/DownloadTest.php | 27 +
.../php-sdk/tests/Qiniu/Tests/EntryTest.php | 88 ++
.../php-sdk/tests/Qiniu/Tests/EtagTest.php | 54 +
.../php-sdk/tests/Qiniu/Tests/FopTest.php | 39 +
.../php-sdk/tests/Qiniu/Tests/FormUpTest.php | 205 +++
.../php-sdk/tests/Qiniu/Tests/HeaderTest.php | 184 +++
.../php-sdk/tests/Qiniu/Tests/HttpTest.php | 163 ++
.../tests/Qiniu/Tests/ImageUrlBuilderTest.php | 263 ++++
.../tests/Qiniu/Tests/MiddlewareTest.php | 160 ++
.../php-sdk/tests/Qiniu/Tests/PfopTest.php | 304 ++++
.../tests/Qiniu/Tests/ResumeUpTest.php | 354 +++++
.../php-sdk/tests/Qiniu/Tests/ZoneTest.php | 136 ++
vendor/qiniu/php-sdk/tests/bootstrap.php | 61 +
vendor/qiniu/php-sdk/tests/mock-server/ok.php | 3 +
.../php-sdk/tests/mock-server/redirect.php | 5 +
.../php-sdk/tests/mock-server/timeout.php | 3 +
.../qiniu/php-sdk/tests/socks5-server/go.mod | 7 +
.../qiniu/php-sdk/tests/socks5-server/go.sum | 4 +
.../qiniu/php-sdk/tests/socks5-server/main.go | 24 +
351 files changed, 29816 insertions(+)
create mode 100644 Plugin.php
create mode 100644 composer.json
create mode 100644 composer.lock
create mode 100644 php-sdk/.github/workflows/test-ci.yml
create mode 100644 php-sdk/.github/workflows/version-check.yml
create mode 100644 php-sdk/.gitignore
create mode 100644 php-sdk/.scrutinizer.yml
create mode 100644 php-sdk/CHANGELOG.md
create mode 100644 php-sdk/CONTRIBUTING.md
create mode 100644 php-sdk/LICENSE
create mode 100644 php-sdk/README.md
create mode 100644 php-sdk/autoload.php
create mode 100644 php-sdk/codecov.yml
create mode 100644 php-sdk/composer.json
create mode 100644 php-sdk/examples/README.md
create mode 100644 php-sdk/examples/bucket_lifecycleRule.php
create mode 100644 php-sdk/examples/cdn_get_bandwidth.php
create mode 100644 php-sdk/examples/cdn_get_flux.php
create mode 100644 php-sdk/examples/cdn_get_log_list.php
create mode 100644 php-sdk/examples/cdn_get_prefetch_list.php
create mode 100644 php-sdk/examples/cdn_get_refresh_list.php
create mode 100644 php-sdk/examples/cdn_refresh_urls_dirs.php
create mode 100644 php-sdk/examples/cdn_timestamp_antileech.php
create mode 100644 php-sdk/examples/censor_image.php
create mode 100644 php-sdk/examples/censor_video.php
create mode 100644 php-sdk/examples/delete_bucket.php
create mode 100644 php-sdk/examples/delete_bucketEvent.php
create mode 100644 php-sdk/examples/delete_bucketLifecycleRule.php
create mode 100644 php-sdk/examples/get_bucketEvents.php
create mode 100644 php-sdk/examples/get_bucketLifecycleRules.php
create mode 100644 php-sdk/examples/get_bucketList.php
create mode 100644 php-sdk/examples/get_bucketQuota.php
create mode 100644 php-sdk/examples/get_bucketinfo.php
create mode 100644 php-sdk/examples/get_bucketinfos.php
create mode 100644 php-sdk/examples/get_corsRules.php
create mode 100644 php-sdk/examples/image_url_builder.php
create mode 100644 php-sdk/examples/persistent_fop_init.php
create mode 100644 php-sdk/examples/persistent_fop_status.php
create mode 100644 php-sdk/examples/pfop_mkzip.php
create mode 100644 php-sdk/examples/pfop_vframe.php
create mode 100644 php-sdk/examples/pfop_video_avthumb.php
create mode 100644 php-sdk/examples/pfop_watermark.php
create mode 100644 php-sdk/examples/php-logo.png
create mode 100644 php-sdk/examples/prefop.php
create mode 100644 php-sdk/examples/put_bucketAccessMode.php
create mode 100644 php-sdk/examples/put_bucketAccessStyleMode.php
create mode 100644 php-sdk/examples/put_bucketEvent.php
create mode 100644 php-sdk/examples/put_bucketMaxAge.php
create mode 100644 php-sdk/examples/put_bucketQuota.php
create mode 100644 php-sdk/examples/put_referAntiLeech.php
create mode 100644 php-sdk/examples/qetag.php
create mode 100644 php-sdk/examples/rs_asynch_fetch.php
create mode 100644 php-sdk/examples/rs_batch_change_mime.php
create mode 100644 php-sdk/examples/rs_batch_change_type.php
create mode 100644 php-sdk/examples/rs_batch_copy.php
create mode 100644 php-sdk/examples/rs_batch_delete.php
create mode 100644 php-sdk/examples/rs_batch_delete_after_days.php
create mode 100644 php-sdk/examples/rs_batch_move.php
create mode 100644 php-sdk/examples/rs_batch_restore_ar.php
create mode 100644 php-sdk/examples/rs_batch_stat.php
create mode 100644 php-sdk/examples/rs_bucket_domains.php
create mode 100644 php-sdk/examples/rs_buckets.php
create mode 100644 php-sdk/examples/rs_change_mime.php
create mode 100644 php-sdk/examples/rs_change_status.php
create mode 100644 php-sdk/examples/rs_change_type.php
create mode 100644 php-sdk/examples/rs_copy.php
create mode 100644 php-sdk/examples/rs_delete.php
create mode 100644 php-sdk/examples/rs_delete_after_days.php
create mode 100644 php-sdk/examples/rs_download_urls.php
create mode 100644 php-sdk/examples/rs_fetch.php
create mode 100644 php-sdk/examples/rs_move.php
create mode 100644 php-sdk/examples/rs_prefetch.php
create mode 100644 php-sdk/examples/rs_restore.php
create mode 100644 php-sdk/examples/rs_stat.php
create mode 100644 php-sdk/examples/rsf_list_bucket.php
create mode 100644 php-sdk/examples/rsf_list_files.php
create mode 100644 php-sdk/examples/rsf_v2list_bucket.php
create mode 100644 php-sdk/examples/rtc/README.md
create mode 100644 php-sdk/examples/rtc/rtc_createApp.php
create mode 100644 php-sdk/examples/rtc/rtc_create_roomToken.php
create mode 100644 php-sdk/examples/rtc/rtc_deleteApp.php
create mode 100644 php-sdk/examples/rtc/rtc_getApp.php
create mode 100644 php-sdk/examples/rtc/rtc_rooms_kickUser.php
create mode 100644 php-sdk/examples/rtc/rtc_rooms_listActiveRooms.php
create mode 100644 php-sdk/examples/rtc/rtc_rooms_listUser.php
create mode 100644 php-sdk/examples/rtc/rtc_rooms_stopMerge.php
create mode 100644 php-sdk/examples/rtc/rtc_updateApp.php
create mode 100644 php-sdk/examples/saveas.php
create mode 100644 php-sdk/examples/sms/README.md
create mode 100644 php-sdk/examples/sms/sms_create_signature.php
create mode 100644 php-sdk/examples/sms/sms_create_template.php
create mode 100644 php-sdk/examples/sms/sms_delete_signature.php
create mode 100644 php-sdk/examples/sms/sms_delete_template.php
create mode 100644 php-sdk/examples/sms/sms_edit_signature.php
create mode 100644 php-sdk/examples/sms/sms_edit_template.php
create mode 100644 php-sdk/examples/sms/sms_query_send_sms.php
create mode 100644 php-sdk/examples/sms/sms_query_signature.php
create mode 100644 php-sdk/examples/sms/sms_query_single_signature.php
create mode 100644 php-sdk/examples/sms/sms_query_single_template.php
create mode 100644 php-sdk/examples/sms/sms_query_template.php
create mode 100644 php-sdk/examples/sms/sms_send_message.php
create mode 100644 php-sdk/examples/update_bucketEvent.php
create mode 100644 php-sdk/examples/update_bucketLifecycleRule.php
create mode 100644 php-sdk/examples/upload_and_callback.php
create mode 100644 php-sdk/examples/upload_and_pfop.php
create mode 100644 php-sdk/examples/upload_mgr_init.php
create mode 100644 php-sdk/examples/upload_multi_demos.php
create mode 100644 php-sdk/examples/upload_simple_file.php
create mode 100644 php-sdk/examples/upload_tokens.php
create mode 100644 php-sdk/examples/upload_verify_callback.php
create mode 100644 php-sdk/examples/upload_with_qvmzone.php
create mode 100644 php-sdk/examples/upload_with_zone.php
create mode 100644 php-sdk/phpunit.xml.dist
create mode 100644 php-sdk/src/Qiniu/Auth.php
create mode 100644 php-sdk/src/Qiniu/Cdn/CdnManager.php
create mode 100644 php-sdk/src/Qiniu/Config.php
create mode 100644 php-sdk/src/Qiniu/Enum/QiniuEnum.php
create mode 100644 php-sdk/src/Qiniu/Enum/SplitUploadVersion.php
create mode 100644 php-sdk/src/Qiniu/Etag.php
create mode 100644 php-sdk/src/Qiniu/Http/Client.php
create mode 100644 php-sdk/src/Qiniu/Http/Error.php
create mode 100644 php-sdk/src/Qiniu/Http/Header.php
create mode 100644 php-sdk/src/Qiniu/Http/Middleware/Middleware.php
create mode 100644 php-sdk/src/Qiniu/Http/Middleware/RetryDomainsMiddleware.php
create mode 100644 php-sdk/src/Qiniu/Http/Proxy.php
create mode 100644 php-sdk/src/Qiniu/Http/Request.php
create mode 100644 php-sdk/src/Qiniu/Http/RequestOptions.php
create mode 100644 php-sdk/src/Qiniu/Http/Response.php
create mode 100644 php-sdk/src/Qiniu/Processing/ImageUrlBuilder.php
create mode 100644 php-sdk/src/Qiniu/Processing/Operation.php
create mode 100644 php-sdk/src/Qiniu/Processing/PersistentFop.php
create mode 100644 php-sdk/src/Qiniu/Region.php
create mode 100644 php-sdk/src/Qiniu/Rtc/AppClient.php
create mode 100644 php-sdk/src/Qiniu/Sms/Sms.php
create mode 100644 php-sdk/src/Qiniu/Storage/ArgusManager.php
create mode 100644 php-sdk/src/Qiniu/Storage/BucketManager.php
create mode 100644 php-sdk/src/Qiniu/Storage/FormUploader.php
create mode 100644 php-sdk/src/Qiniu/Storage/ResumeUploader.php
create mode 100644 php-sdk/src/Qiniu/Storage/UploadManager.php
create mode 100644 php-sdk/src/Qiniu/Zone.php
create mode 100644 php-sdk/src/Qiniu/functions.php
create mode 100644 php-sdk/test-env.sh
create mode 100644 php-sdk/tests/Qiniu/Tests/AuthTest.php
create mode 100644 php-sdk/tests/Qiniu/Tests/Base64Test.php
create mode 100644 php-sdk/tests/Qiniu/Tests/BucketTest.php
create mode 100644 php-sdk/tests/Qiniu/Tests/CdnManagerTest.php
create mode 100644 php-sdk/tests/Qiniu/Tests/ConfigTest.php
create mode 100644 php-sdk/tests/Qiniu/Tests/Crc32Test.php
create mode 100644 php-sdk/tests/Qiniu/Tests/DownloadTest.php
create mode 100644 php-sdk/tests/Qiniu/Tests/EntryTest.php
create mode 100644 php-sdk/tests/Qiniu/Tests/EtagTest.php
create mode 100644 php-sdk/tests/Qiniu/Tests/FopTest.php
create mode 100644 php-sdk/tests/Qiniu/Tests/FormUpTest.php
create mode 100644 php-sdk/tests/Qiniu/Tests/HeaderTest.php
create mode 100644 php-sdk/tests/Qiniu/Tests/HttpTest.php
create mode 100644 php-sdk/tests/Qiniu/Tests/ImageUrlBuilderTest.php
create mode 100644 php-sdk/tests/Qiniu/Tests/MiddlewareTest.php
create mode 100644 php-sdk/tests/Qiniu/Tests/PfopTest.php
create mode 100644 php-sdk/tests/Qiniu/Tests/ResumeUpTest.php
create mode 100644 php-sdk/tests/Qiniu/Tests/ZoneTest.php
create mode 100644 php-sdk/tests/bootstrap.php
create mode 100644 php-sdk/tests/mock-server/ok.php
create mode 100644 php-sdk/tests/mock-server/redirect.php
create mode 100644 php-sdk/tests/mock-server/timeout.php
create mode 100644 php-sdk/tests/socks5-server/go.mod
create mode 100644 php-sdk/tests/socks5-server/go.sum
create mode 100644 php-sdk/tests/socks5-server/main.go
create mode 100644 vendor/autoload.php
create mode 100644 vendor/composer/ClassLoader.php
create mode 100644 vendor/composer/InstalledVersions.php
create mode 100644 vendor/composer/LICENSE
create mode 100644 vendor/composer/autoload_classmap.php
create mode 100644 vendor/composer/autoload_files.php
create mode 100644 vendor/composer/autoload_namespaces.php
create mode 100644 vendor/composer/autoload_psr4.php
create mode 100644 vendor/composer/autoload_real.php
create mode 100644 vendor/composer/autoload_static.php
create mode 100644 vendor/composer/installed.json
create mode 100644 vendor/composer/installed.php
create mode 100644 vendor/composer/platform_check.php
create mode 100644 vendor/myclabs/php-enum/LICENSE
create mode 100644 vendor/myclabs/php-enum/README.md
create mode 100644 vendor/myclabs/php-enum/SECURITY.md
create mode 100644 vendor/myclabs/php-enum/composer.json
create mode 100644 vendor/myclabs/php-enum/src/Enum.php
create mode 100644 vendor/myclabs/php-enum/src/PHPUnit/Comparator.php
create mode 100644 vendor/myclabs/php-enum/stubs/Stringable.php
create mode 100644 vendor/qiniu/php-sdk/.github/workflows/test-ci.yml
create mode 100644 vendor/qiniu/php-sdk/.github/workflows/version-check.yml
create mode 100644 vendor/qiniu/php-sdk/.gitignore
create mode 100644 vendor/qiniu/php-sdk/.scrutinizer.yml
create mode 100644 vendor/qiniu/php-sdk/CHANGELOG.md
create mode 100644 vendor/qiniu/php-sdk/CONTRIBUTING.md
create mode 100644 vendor/qiniu/php-sdk/LICENSE
create mode 100644 vendor/qiniu/php-sdk/README.md
create mode 100644 vendor/qiniu/php-sdk/autoload.php
create mode 100644 vendor/qiniu/php-sdk/codecov.yml
create mode 100644 vendor/qiniu/php-sdk/composer.json
create mode 100644 vendor/qiniu/php-sdk/examples/README.md
create mode 100644 vendor/qiniu/php-sdk/examples/bucket_lifecycleRule.php
create mode 100644 vendor/qiniu/php-sdk/examples/cdn_get_bandwidth.php
create mode 100644 vendor/qiniu/php-sdk/examples/cdn_get_flux.php
create mode 100644 vendor/qiniu/php-sdk/examples/cdn_get_log_list.php
create mode 100644 vendor/qiniu/php-sdk/examples/cdn_get_prefetch_list.php
create mode 100644 vendor/qiniu/php-sdk/examples/cdn_get_refresh_list.php
create mode 100644 vendor/qiniu/php-sdk/examples/cdn_refresh_urls_dirs.php
create mode 100644 vendor/qiniu/php-sdk/examples/cdn_timestamp_antileech.php
create mode 100644 vendor/qiniu/php-sdk/examples/censor_image.php
create mode 100644 vendor/qiniu/php-sdk/examples/censor_video.php
create mode 100644 vendor/qiniu/php-sdk/examples/delete_bucket.php
create mode 100644 vendor/qiniu/php-sdk/examples/delete_bucketEvent.php
create mode 100644 vendor/qiniu/php-sdk/examples/delete_bucketLifecycleRule.php
create mode 100644 vendor/qiniu/php-sdk/examples/get_bucketEvents.php
create mode 100644 vendor/qiniu/php-sdk/examples/get_bucketLifecycleRules.php
create mode 100644 vendor/qiniu/php-sdk/examples/get_bucketList.php
create mode 100644 vendor/qiniu/php-sdk/examples/get_bucketQuota.php
create mode 100644 vendor/qiniu/php-sdk/examples/get_bucketinfo.php
create mode 100644 vendor/qiniu/php-sdk/examples/get_bucketinfos.php
create mode 100644 vendor/qiniu/php-sdk/examples/get_corsRules.php
create mode 100644 vendor/qiniu/php-sdk/examples/image_url_builder.php
create mode 100644 vendor/qiniu/php-sdk/examples/persistent_fop_init.php
create mode 100644 vendor/qiniu/php-sdk/examples/persistent_fop_status.php
create mode 100644 vendor/qiniu/php-sdk/examples/pfop_mkzip.php
create mode 100644 vendor/qiniu/php-sdk/examples/pfop_vframe.php
create mode 100644 vendor/qiniu/php-sdk/examples/pfop_video_avthumb.php
create mode 100644 vendor/qiniu/php-sdk/examples/pfop_watermark.php
create mode 100644 vendor/qiniu/php-sdk/examples/php-logo.png
create mode 100644 vendor/qiniu/php-sdk/examples/prefop.php
create mode 100644 vendor/qiniu/php-sdk/examples/put_bucketAccessMode.php
create mode 100644 vendor/qiniu/php-sdk/examples/put_bucketAccessStyleMode.php
create mode 100644 vendor/qiniu/php-sdk/examples/put_bucketEvent.php
create mode 100644 vendor/qiniu/php-sdk/examples/put_bucketMaxAge.php
create mode 100644 vendor/qiniu/php-sdk/examples/put_bucketQuota.php
create mode 100644 vendor/qiniu/php-sdk/examples/put_referAntiLeech.php
create mode 100644 vendor/qiniu/php-sdk/examples/qetag.php
create mode 100644 vendor/qiniu/php-sdk/examples/rs_asynch_fetch.php
create mode 100644 vendor/qiniu/php-sdk/examples/rs_batch_change_mime.php
create mode 100644 vendor/qiniu/php-sdk/examples/rs_batch_change_type.php
create mode 100644 vendor/qiniu/php-sdk/examples/rs_batch_copy.php
create mode 100644 vendor/qiniu/php-sdk/examples/rs_batch_delete.php
create mode 100644 vendor/qiniu/php-sdk/examples/rs_batch_delete_after_days.php
create mode 100644 vendor/qiniu/php-sdk/examples/rs_batch_move.php
create mode 100644 vendor/qiniu/php-sdk/examples/rs_batch_restore_ar.php
create mode 100644 vendor/qiniu/php-sdk/examples/rs_batch_stat.php
create mode 100644 vendor/qiniu/php-sdk/examples/rs_bucket_domains.php
create mode 100644 vendor/qiniu/php-sdk/examples/rs_buckets.php
create mode 100644 vendor/qiniu/php-sdk/examples/rs_change_mime.php
create mode 100644 vendor/qiniu/php-sdk/examples/rs_change_status.php
create mode 100644 vendor/qiniu/php-sdk/examples/rs_change_type.php
create mode 100644 vendor/qiniu/php-sdk/examples/rs_copy.php
create mode 100644 vendor/qiniu/php-sdk/examples/rs_delete.php
create mode 100644 vendor/qiniu/php-sdk/examples/rs_delete_after_days.php
create mode 100644 vendor/qiniu/php-sdk/examples/rs_download_urls.php
create mode 100644 vendor/qiniu/php-sdk/examples/rs_fetch.php
create mode 100644 vendor/qiniu/php-sdk/examples/rs_move.php
create mode 100644 vendor/qiniu/php-sdk/examples/rs_prefetch.php
create mode 100644 vendor/qiniu/php-sdk/examples/rs_restore.php
create mode 100644 vendor/qiniu/php-sdk/examples/rs_stat.php
create mode 100644 vendor/qiniu/php-sdk/examples/rsf_list_bucket.php
create mode 100644 vendor/qiniu/php-sdk/examples/rsf_list_files.php
create mode 100644 vendor/qiniu/php-sdk/examples/rsf_v2list_bucket.php
create mode 100644 vendor/qiniu/php-sdk/examples/rtc/README.md
create mode 100644 vendor/qiniu/php-sdk/examples/rtc/rtc_createApp.php
create mode 100644 vendor/qiniu/php-sdk/examples/rtc/rtc_create_roomToken.php
create mode 100644 vendor/qiniu/php-sdk/examples/rtc/rtc_deleteApp.php
create mode 100644 vendor/qiniu/php-sdk/examples/rtc/rtc_getApp.php
create mode 100644 vendor/qiniu/php-sdk/examples/rtc/rtc_rooms_kickUser.php
create mode 100644 vendor/qiniu/php-sdk/examples/rtc/rtc_rooms_listActiveRooms.php
create mode 100644 vendor/qiniu/php-sdk/examples/rtc/rtc_rooms_listUser.php
create mode 100644 vendor/qiniu/php-sdk/examples/rtc/rtc_rooms_stopMerge.php
create mode 100644 vendor/qiniu/php-sdk/examples/rtc/rtc_updateApp.php
create mode 100644 vendor/qiniu/php-sdk/examples/saveas.php
create mode 100644 vendor/qiniu/php-sdk/examples/sms/README.md
create mode 100644 vendor/qiniu/php-sdk/examples/sms/sms_create_signature.php
create mode 100644 vendor/qiniu/php-sdk/examples/sms/sms_create_template.php
create mode 100644 vendor/qiniu/php-sdk/examples/sms/sms_delete_signature.php
create mode 100644 vendor/qiniu/php-sdk/examples/sms/sms_delete_template.php
create mode 100644 vendor/qiniu/php-sdk/examples/sms/sms_edit_signature.php
create mode 100644 vendor/qiniu/php-sdk/examples/sms/sms_edit_template.php
create mode 100644 vendor/qiniu/php-sdk/examples/sms/sms_query_send_sms.php
create mode 100644 vendor/qiniu/php-sdk/examples/sms/sms_query_signature.php
create mode 100644 vendor/qiniu/php-sdk/examples/sms/sms_query_single_signature.php
create mode 100644 vendor/qiniu/php-sdk/examples/sms/sms_query_single_template.php
create mode 100644 vendor/qiniu/php-sdk/examples/sms/sms_query_template.php
create mode 100644 vendor/qiniu/php-sdk/examples/sms/sms_send_message.php
create mode 100644 vendor/qiniu/php-sdk/examples/update_bucketEvent.php
create mode 100644 vendor/qiniu/php-sdk/examples/update_bucketLifecycleRule.php
create mode 100644 vendor/qiniu/php-sdk/examples/upload_and_callback.php
create mode 100644 vendor/qiniu/php-sdk/examples/upload_and_pfop.php
create mode 100644 vendor/qiniu/php-sdk/examples/upload_mgr_init.php
create mode 100644 vendor/qiniu/php-sdk/examples/upload_multi_demos.php
create mode 100644 vendor/qiniu/php-sdk/examples/upload_simple_file.php
create mode 100644 vendor/qiniu/php-sdk/examples/upload_tokens.php
create mode 100644 vendor/qiniu/php-sdk/examples/upload_verify_callback.php
create mode 100644 vendor/qiniu/php-sdk/examples/upload_with_qvmzone.php
create mode 100644 vendor/qiniu/php-sdk/examples/upload_with_zone.php
create mode 100644 vendor/qiniu/php-sdk/phpunit.xml.dist
create mode 100644 vendor/qiniu/php-sdk/src/Qiniu/Auth.php
create mode 100644 vendor/qiniu/php-sdk/src/Qiniu/Cdn/CdnManager.php
create mode 100644 vendor/qiniu/php-sdk/src/Qiniu/Config.php
create mode 100644 vendor/qiniu/php-sdk/src/Qiniu/Enum/QiniuEnum.php
create mode 100644 vendor/qiniu/php-sdk/src/Qiniu/Enum/SplitUploadVersion.php
create mode 100644 vendor/qiniu/php-sdk/src/Qiniu/Etag.php
create mode 100644 vendor/qiniu/php-sdk/src/Qiniu/Http/Client.php
create mode 100644 vendor/qiniu/php-sdk/src/Qiniu/Http/Error.php
create mode 100644 vendor/qiniu/php-sdk/src/Qiniu/Http/Header.php
create mode 100644 vendor/qiniu/php-sdk/src/Qiniu/Http/Middleware/Middleware.php
create mode 100644 vendor/qiniu/php-sdk/src/Qiniu/Http/Middleware/RetryDomainsMiddleware.php
create mode 100644 vendor/qiniu/php-sdk/src/Qiniu/Http/Proxy.php
create mode 100644 vendor/qiniu/php-sdk/src/Qiniu/Http/Request.php
create mode 100644 vendor/qiniu/php-sdk/src/Qiniu/Http/RequestOptions.php
create mode 100644 vendor/qiniu/php-sdk/src/Qiniu/Http/Response.php
create mode 100644 vendor/qiniu/php-sdk/src/Qiniu/Processing/ImageUrlBuilder.php
create mode 100644 vendor/qiniu/php-sdk/src/Qiniu/Processing/Operation.php
create mode 100644 vendor/qiniu/php-sdk/src/Qiniu/Processing/PersistentFop.php
create mode 100644 vendor/qiniu/php-sdk/src/Qiniu/Region.php
create mode 100644 vendor/qiniu/php-sdk/src/Qiniu/Rtc/AppClient.php
create mode 100644 vendor/qiniu/php-sdk/src/Qiniu/Sms/Sms.php
create mode 100644 vendor/qiniu/php-sdk/src/Qiniu/Storage/ArgusManager.php
create mode 100644 vendor/qiniu/php-sdk/src/Qiniu/Storage/BucketManager.php
create mode 100644 vendor/qiniu/php-sdk/src/Qiniu/Storage/FormUploader.php
create mode 100644 vendor/qiniu/php-sdk/src/Qiniu/Storage/ResumeUploader.php
create mode 100644 vendor/qiniu/php-sdk/src/Qiniu/Storage/UploadManager.php
create mode 100644 vendor/qiniu/php-sdk/src/Qiniu/Zone.php
create mode 100644 vendor/qiniu/php-sdk/src/Qiniu/functions.php
create mode 100644 vendor/qiniu/php-sdk/test-env.sh
create mode 100644 vendor/qiniu/php-sdk/tests/Qiniu/Tests/AuthTest.php
create mode 100644 vendor/qiniu/php-sdk/tests/Qiniu/Tests/Base64Test.php
create mode 100644 vendor/qiniu/php-sdk/tests/Qiniu/Tests/BucketTest.php
create mode 100644 vendor/qiniu/php-sdk/tests/Qiniu/Tests/CdnManagerTest.php
create mode 100644 vendor/qiniu/php-sdk/tests/Qiniu/Tests/ConfigTest.php
create mode 100644 vendor/qiniu/php-sdk/tests/Qiniu/Tests/Crc32Test.php
create mode 100644 vendor/qiniu/php-sdk/tests/Qiniu/Tests/DownloadTest.php
create mode 100644 vendor/qiniu/php-sdk/tests/Qiniu/Tests/EntryTest.php
create mode 100644 vendor/qiniu/php-sdk/tests/Qiniu/Tests/EtagTest.php
create mode 100644 vendor/qiniu/php-sdk/tests/Qiniu/Tests/FopTest.php
create mode 100644 vendor/qiniu/php-sdk/tests/Qiniu/Tests/FormUpTest.php
create mode 100644 vendor/qiniu/php-sdk/tests/Qiniu/Tests/HeaderTest.php
create mode 100644 vendor/qiniu/php-sdk/tests/Qiniu/Tests/HttpTest.php
create mode 100644 vendor/qiniu/php-sdk/tests/Qiniu/Tests/ImageUrlBuilderTest.php
create mode 100644 vendor/qiniu/php-sdk/tests/Qiniu/Tests/MiddlewareTest.php
create mode 100644 vendor/qiniu/php-sdk/tests/Qiniu/Tests/PfopTest.php
create mode 100644 vendor/qiniu/php-sdk/tests/Qiniu/Tests/ResumeUpTest.php
create mode 100644 vendor/qiniu/php-sdk/tests/Qiniu/Tests/ZoneTest.php
create mode 100644 vendor/qiniu/php-sdk/tests/bootstrap.php
create mode 100644 vendor/qiniu/php-sdk/tests/mock-server/ok.php
create mode 100644 vendor/qiniu/php-sdk/tests/mock-server/redirect.php
create mode 100644 vendor/qiniu/php-sdk/tests/mock-server/timeout.php
create mode 100644 vendor/qiniu/php-sdk/tests/socks5-server/go.mod
create mode 100644 vendor/qiniu/php-sdk/tests/socks5-server/go.sum
create mode 100644 vendor/qiniu/php-sdk/tests/socks5-server/main.go
diff --git a/Plugin.php b/Plugin.php
new file mode 100644
index 0000000..431c73e
--- /dev/null
+++ b/Plugin.php
@@ -0,0 +1,602 @@
+uploadHandle = array('Qiniu_Plugin', 'uploadHandle');
+ Typecho_Plugin::factory('Widget_Upload')->modifyHandle = array('Qiniu_Plugin', 'modifyHandle');
+ Typecho_Plugin::factory('Widget_Upload')->deleteHandle = array('Qiniu_Plugin', 'deleteHandle');
+ Typecho_Plugin::factory('Widget_Upload')->attachmentHandle = array('Qiniu_Plugin', 'attachmentHandle');
+
+ // 添加文章内容输出时的EXIF信息显示
+ Typecho_Plugin::factory('Widget_Abstract_Contents')->contentEx = array('Qiniu_Plugin', 'parseContent');
+ Typecho_Plugin::factory('Widget_Abstract_Contents')->excerptEx = array('Qiniu_Plugin', 'parseContent');
+
+ // 使用安全的CSS加载方式
+ Typecho_Plugin::factory('Widget_Archive')->footer = array('Qiniu_Plugin', 'footer');
+
+ return _t('插件已激活,请先配置七牛云信息!');
+ }
+
+ // 禁用插件
+ public static function deactivate()
+ {
+ return _t('插件已禁用');
+ }
+
+ // 插件配置面板
+ public static function config(Typecho_Widget_Helper_Form $form)
+ {
+ $bucket = new Typecho_Widget_Helper_Form_Element_Text('bucket', null, null, _t('空间名称:'), _t('七牛云存储空间名称'));
+ $bucket->addRule('required', _t('"空间名称"不能为空!'));
+ $form->addInput($bucket);
+
+ $accesskey = new Typecho_Widget_Helper_Form_Element_Text('accesskey', null, null, _t('AccessKey:'), _t('从七牛云控制台获取'));
+ $form->addInput($accesskey->addRule('required', _t('AccessKey不能为空!')));
+
+ $secretkey = new Typecho_Widget_Helper_Form_Element_Text('secretkey', null, null, _t('SecretKey:'), _t('从七牛云控制台获取'));
+ $form->addInput($secretkey->addRule('required', _t('SecretKey不能为空!')));
+
+ $domain = new Typecho_Widget_Helper_Form_Element_Text('domain', null, 'https://', _t('绑定域名:'), _t('空间绑定的域名,如:https://cdn.example.com'));
+ $form->addInput($domain->addRule('required', _t('请填写空间绑定的域名!'))->addRule('url', _t('您输入的域名格式错误!')));
+
+ $savepath = new Typecho_Widget_Helper_Form_Element_Text('savepath', null, 'typecho/{year}/{month}/', _t('保存路径前缀'), _t('可使用变量:{year}, {month}, {day}, {random}'));
+ $form->addInput($savepath);
+
+ // WebP转换开关
+ $webp = new Typecho_Widget_Helper_Form_Element_Radio('webp',
+ array('0' => _t('关闭'), '1' => _t('开启')),
+ '0',
+ _t('WebP自动转换:'),
+ _t('开启后上传的JPEG/PNG图片将自动转换为WebP格式'));
+ $form->addInput($webp);
+
+ // 图片质量设置
+ $quality = new Typecho_Widget_Helper_Form_Element_Text('quality', null, '85', _t('图片质量:'),
+ _t('设置图片压缩质量(1-100),仅对JPEG/PNG/WEBP格式有效。85为推荐值'));
+ $quality->addRule('required', _t('图片质量不能为空!'))
+ ->addRule('isInteger', _t('必须输入数字!'))
+ ->addRule('range', _t('请输入1-100之间的数字!'), array(1, 100));
+ $form->addInput($quality);
+
+ // EXIF信息开关
+ $exif = new Typecho_Widget_Helper_Form_Element_Radio('exif',
+ array('0' => _t('关闭'), '1' => _t('开启')),
+ '0',
+ _t('EXIF信息显示:'),
+ _t('开启后文章图片悬停时会显示拍摄信息(相机型号、光圈、快门等)'));
+ $form->addInput($exif);
+ }
+
+ // 个人用户配置面板
+ public static function personalConfig(Typecho_Widget_Helper_Form $form)
+ {
+ }
+
+ // 获得插件配置信息
+ public static function getConfig()
+ {
+ return Typecho_Widget::widget('Widget_Options')->plugin('Qiniu');
+ }
+
+ // 安全的CSS加载方式
+ public static function footer()
+ {
+ $option = self::getConfig();
+ if ($option->exif && !self::$_cssLoaded) {
+ // 只在文章页面加载CSS
+ $widget = Typecho_Widget::widget('Widget_Archive');
+ if ($widget->is('single')) {
+ echo '';
+ self::$_cssLoaded = true;
+ }
+ }
+ }
+
+ // 输出CSS内容
+ private static function echoCss()
+ {
+ echo '.qiniu-exif-container {
+ display: inline-block;
+ position: relative;
+ max-width: 100%;
+}
+.qiniu-exif-info {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ background: rgba(0, 0, 0, 0.85);
+ color: white;
+ padding: 8px 10px;
+ font-size: 12px;
+ line-height: 1.4;
+ opacity: 0;
+ visibility: hidden;
+ transition: opacity 0.3s ease, visibility 0.3s ease;
+ z-index: 9999;
+ border-radius: 4px;
+ box-shadow: 0 2px 8px rgba(0,0,0,0.2);
+ pointer-events: none;
+}
+.qiniu-exif-container:hover .qiniu-exif-info {
+ opacity: 1;
+ visibility: visible;
+}
+.qiniu-exif-info div {
+ margin: 3px 0;
+}
+.qiniu-exif-info strong {
+ font-weight: 600;
+ color: #fff;
+}';
+ }
+
+ /**
+ * 解析文章内容,为图片添加EXIF容器
+ */
+ public static function parseContent($content, $widget, $lastResult)
+ {
+ $content = $lastResult ? $lastResult : $content;
+ $option = self::getConfig();
+
+ if (!$option->exif || !$widget->is('single')) {
+ return $content;
+ }
+
+ $pattern = '/]*src=["\']([^"\']+)["\'][^>]*>/i';
+ return preg_replace_callback($pattern, function($matches) {
+ $imgTag = $matches[0];
+ $src = $matches[1];
+
+ $option = self::getConfig();
+ $domain = rtrim($option->domain, '/');
+
+ // 检查是否是七牛云的图片
+ if (strpos($src, $domain) === false) {
+ return $imgTag;
+ }
+
+ // 从URL中提取文件路径
+ $path = str_replace($domain, '', $src);
+ $path = ltrim(parse_url($path, PHP_URL_PATH), '/');
+
+ // 去除图片处理参数
+ if (strpos($path, '?') !== false) {
+ $path = substr($path, 0, strpos($path, '?'));
+ }
+
+ // 从数据库获取EXIF信息
+ $db = Typecho_Db::get();
+ $row = $db->fetchRow($db->select()->from('table.contents')
+ ->where('type = ?', 'attachment')
+ ->where('text LIKE ?', '%"path":"' . $path . '"%')
+ ->limit(1));
+
+ if ($row) {
+ $attachment = unserialize($row['text']);
+
+ if (isset($attachment['exif']) && !empty($attachment['exif'])) {
+ $exifData = $attachment['exif'];
+
+ // 生成简化的EXIF信息HTML
+ $exifHtml = '
+)ALBXvJrh2-`8`!Gg+fo1TJ<#Bt1i z=RJIoJ_MrHyg9GK-8c7p$XfJFZw^F+k_uoQHOdr)S)HL5G*W7R5#PaFXl0htcy$|O z&F&r474b{B8u<`nD|{Rbhy(FH41;;#9p7y6Au*=28tQ*(u$(vBmhVq~{|j=Qks3WhuKua&fihM@0A;Q)Ax5$E&<3 z$d3y>20VHD2fjaxnBt^)<`Z2# JV^%#=4Xn?upuCc^|MX$%sB3raIjrm|c`4z3I0n8u;_ z31IUMKxU)w->tf%4^$D-ao$AZMhDWY$ 8^^H8B01u$F0B77pNk1dHH_IHoIi#dC@J3zXie}eIMrAkHir#D&)9K zj58q0d(u5~GBTCy^RYB!S)`qKWLaxE&5-hWm;yL_OB)+ib<-}G#5cW$6AI|k5W0BE zy^vt?{&ll5cLzzI6MP~fF)1mQwp*+y#dthVfI ^b(Vk8M^7#UFqz8iH*c%qqp5D4ZmzJ z%YPL^zIuy9lL 0qOU8r=r3f(M8;DUcwewGeo>%+p z7O}e4Y}|eygI$e&!-16 0I96P1OOWA`3(>)*)=AKEW)C&-*`M`97pX+?$O8)&W138;vsHfDQE zeVbUpf(4agYT%O!2Imhr7al!1<(~49udd-yXewM`{9EFFwFh3}CPR=UbHr&gm VYj{az)WtL^bV@*RH4>K9kN#sH#kf%q^+^o1 zAChy5CSa|gQB&MW_AFs&S;n)qTOI*up45)qOch^C=={K4F~OSwHVV=l%*orSFYk3x zg9@}*dWbEGV?l0)_M`4~z?!vKK6u#H8qf+1$39f9hF2=yx(Q ;OI96w+3w5};kTXN6cg$gc}3z4rt7G+Bv z07S}7WF|4q`V+5=T5CnXxo_BCN$Gcv)<@#AY*GGR;$8mwn2&Vrv=%V~j^ISv 0TS7Ix+%3je#0kR6ys-u7zv!uVT^KI%nUrdv#}>8u2mfLo3Bqx>~hH6sur znq)~z95e mv`hjLU3n^jF%eRJ zsW_WNjFcKGT7R+02s*_BahqP0?MobUg!BW~V&$kqbmiWNvz?+!Lh 3yg |qKMVXu_ Z^1puz@gD*YTad-6e& zQu&jb)Re`U59h1l4IlHy0;@}BPX2h8pBwNl7oHguQ}J`bu8gZyvD+|=Hxdw>7)8Ft zrIj2R=vwerj0k|N9Ju5T+?uXYBtpJBam=Bd1Ac`gANI0j6=wt7_z^wK)+zk+zP6qh zSCo4)tci^JZqlXA2bt8KG*daZ2s)ihKT;E2P!0Y=B^26n$0xOD5*{-oU(j0cH-2Zv zW=GW1V^N&fkoU)-E$pfzoTNljr^+Ep^IV3Dp~lcP*WFPxtwpaa)%!@Y>l++=FuY;b zP>@H_A%)rxNG|KHxC8~IjCDQ4@HXzYmY6yA_;{tt24_(P`eKkoe6W1?9+bkLBV;fy-PhjX zNm*A{c~>92mjPr4+bw2SVrVug{Fwd{K)d%|NIA_7P?;oAl#c T7^2j2rW;= zXtk#0R%>U#t#X)n@L@fziqO>C5GrL;r#(^EEYO=vI#M~N(*^!fFqA9jQr!Hk|9sg> z!HVHLfk&i+F7OjOD6ycDkq<8Y6LCVMPhIrKp$9PMEY%nMoQx=${MPsjiD2BZq9NE} z1HCK_GYQeO1&-I=uAmDoo+WmcFHi{WJU~7u1zL`WxU}}-^UJVc3e%C%+))Ro0*30` z%JkHMG%KfQac}6i=l1*rrs=5Jo6kxYD-Cxhet!O$m6iB
Dv)uJSFVlsSmi_HZ|CNiKXE(zK}jd=AvmqU8dz z6N1zIY=PHcotsv+wdN8UCbp5ft7k)pWe@1x>%BCRfnrZc#{$ZI`rx!o)k%~M< jG^!+KL~L@qHr3+aMt6j z2%$ZMcHc7JgE3pY8l*iP1+sa0N%;O!zNnD8+#VZQGESz^0!Tc8`?cYM3QN5R55;d% zNY_Y~Ldlv)F^9L^2qpJX$g+Ck^&MLr!J~VBWl|*?O=dBf^?qS9Y1j4VcDT @A{ikzA+G vy@eA4=Acu!f!1cyFpx_M|>y^c;yTKam# zRjs+nwj z9kPqX=LA$C=sXaE>5t={Jb>AiPWC4Q@{Y1|PL=%2{?dj<=LCd491SvYVwcqUc7j~H z9V@)~c$(Z{c 1~u1!$^|4pnr2%B;9skJ1)G zxu2OU1-(~dB2&)+%Sy|hb`$GNwj9TqR&b?wpC#pExY;pC$BPWEX9+ohjaq2f(%z}} zfX5#nIo&B_2~YI%L~Pb_A#;8Lsn3do6^B;KVR9Jh53}) l|6cs{r$hsMoGUA08`|I(T2%ktO{3U{qbFy*S=3~7n*HkFI1*W&gr zn)nuvh%TE%7x*k^K8o0(GutF6nu<@xrz4vJE?UXqw;jelSQ^>8DJrfGPq0c7@v^vT z=Kb{vD@g^rW@a!oB30h>)>BS%C2y)XJ<|2ujv 6VCq6GZ?Ee}ODY~R=g zN*d4j7o?7nCn{@)MV?L0jF7i5lrVHirQQ8;sagj=>uKvrF09%gK5G%gQ)~0~pHYZ3 zN&xw?l?1+N%It=dNe8vWp&<5i>%*Pq2zL7*PCF)zGQGC;=+TYx3YVL-tAQlwhHd(` z7rF6{xecF1_#dVdui }I=>R?&Y#zCw-}2*mIqKTFa~Q~?}4 f{LklR;R?kB4f6v91XHmv5ZWc9Lg z2k8xhZbP<}i38;kEW8#J4{}-w*>ArE@nUJsMIoBp7B-cmPW;&j8GfM2Wf4l)gEyYi zTve6rux(B0I r0<^N?gYb^bmA#5>9`Sy_e_ z_3MXzI_fvt4!|+%w#Y8*VBW8o^ =+gAu)1oa@)n ze`kr9C a53#uZwlHc}&4SXVXnShI41#M-uLaEx8D1icsx7 z_ cJ6MW>r z8j|b+Ywaj^>S+OyWMy6?F_r4}ZTkS88(`_76EF(Y&_Ib*Z^`kn=1%VkA(88^NEze( z$70U%IitS3qLGhHZ!|))nVNY(XtlB&ik-!nr~FQl`2$=OOc-aef(}u~oxnfO%dCaC z8Rvq+u1sy-f~7jUJ ^0L*Phgi2;(876HLGCex) zy@T^=0?5ocjbkGpM5DmxNT@{0lz+UR2r~o&JSY=t-2r+jGuziH7-C+ty8){Hx8Rz1 zIx~|uR+C^x)}WTPfVGXY9yTmzwZvj3e &fy#xhxq7gr*GAM3QFA9n;YQdFyw^>LmqN+rh8&)*fVC@okMk z^IM&fP2NlB9d$@Hlp IFj(YUJ}1 z@zVE`jO0o>R>ar7RqsDD*GB1U^$%-`aWs(~Oak=y5v*md)aXTgVK@`Mpw`9m-qp!e zwh%@>@G`Fcm?Lhxy%823y^ * z)Yt-5KJy3Qb|#M()kR?Vh+?>x;@9N9{iykd_S2~gRUxBc__6!7z~^Obq#cOP1|!RL zSh!bKIa1=!JLQ%iAG82VwM0Ly)8YRt@4pjk+)snoFgA&iWDmLx9;Q|Ir 6pTEk+o(PvSI zij-?v4uGJ(^IEymsN(H6aOG-a8}6-=pp^Uh_(VFDUVN>V?m879%SeZ9k#XBodO?On zv$;C;Iu=5C-akTfl{f3x8rw$hZuYY>4O*Ca?TD(!+U-hZkIhhp5<{V=v=)wutwRZ> z_E*QAT196V_M!HjkkW91r6XnD*Gf4wZcB5nN>RnOAms;Vk9{kdQZYtbkS*3E=ArDP zv_e8EA3Zyr4Tv4fr&84;*0(ksvhQf9TuEm);vaz;Pt+i-Cq)wQHgL6joCLkA$3RZD zZyuE3oV|?6uD1d?(eb+w;=~T$^_FjLb2ffD;8KOdL~_!GQhYMX)PXU4r;%EkF1a{O zT(D>wP#ls_^8L0DE|Rx*zbgM$P)drh(h93XQ&enxonDc!djhH5$l_8ceNWLn9o;TN zaLi%D|CY&ofRXvYFAA}BT0iu6gGjKZ1(cAC(a5q3nH^!5+u@W&j-_f>Yi23~P`?n2 z%4Yps5jKXJN@@1y&^>W`3qndJ8v_C0+bG@bCd-tl7WtYD$iVAW)Yb~!q6i8)TlBYg zUXGt?jrr{WE5}!S-Mo2g>eklQr+4@d7=7nXjeVu=+uK;5{m3sn9mYbzjkBh7HSK*c z)6P~bCF5w=;vd =eSQ1n zVC-{*2eofrc_w#1_rf}=*C(@xdCNZxnhI`XWc6MvfRPEQq1P_aNu@CsipEP8f{cgi zcy*nmM$YI0#(oG_=sF{Lt*OiCx|l*T*NMoBy)i?pze^_0uG=@MWm~p zm>Q}CMp{NAfs=ur+f~p!yiz;9zab}$1Iknrz8QZ{B_d97Df^-5di{LBMhYz`yl`V( z(rt;@$wZ|3Rhw?zGil6pcD$^|n=DYIlrc5C334)|kS_-!diSSu1hw`@y1vu!_<_O@ z3xSHddd;kblN*0@v@DW_)wQ^*2~1UpCf=>bF`FxK9`)?x lTOu{_SD zIb6GD$l>g(q|v3)Ch6+nEJsyZo<2${gMm=o7Q%;1G=fv1pBJ{H_vv6xW`6$m7h^7L z*X0haQJf@;KTQIYAOhXK)!=@xyJj^KxasW|m7KdT&7Mb-#-u6Buk~-@&5uHi@q}Hk z!aT}BhloN(B8My;#A%Cl$5$&%x v|9LFD2|B8J*TOy318yKr_Hud@`YMo%|1P zNadJVH*G~nZb(d;wgag@EV}J5SDgpiFuVfAcE~W2YId9>!BM?Y#V5tCR9W|v8%<~{ z7)(?1*MdoMVgTNH^^5$}r z>R)L}QNle%TmQ;0mX=xsMw8gvre{AV_~=fFtHjrb PndrA+ zuERQL61POf_rH$CC*aR(lXEk~%AwBV;S;7_cf ?_4b2A;IA+Lt1Zyk)XDt{;j^pN7b^XcLH6&HX6t=#uDr* zEIl}M122C4tiU@UUs&9Up|z+~Os&G6g 1Viq9G>Qsq%9HY-58cY|)$eoWGUT5FDrgiMGf{o(N(FVB~Y zktNLxEm_;0ExW~ucmh7Hcr;`oXZSoe`!LOR+^l6h=! @dn}7?}DEb zpXj~&_b=!OsV=94xa2rTf1nr|$Fr?cQ?+B*Il&jPGknfmr-Vm0M51^k2DWBg1#|M4 zs ;*yRu72 =6PPXp;znuD5l3OAm$Jop&C%0|=iV)^__sLieyC}ubFZ?jFHVn@z!# tbRtqocU`o9LC#Xzod zFKM)}l{QyGw?Y^=agOZ%D@@=G{@zs}%}ki&Wb4t6w^s1Z7S^9eY5J?tG1|o%%e}hV z7HANfodlmXx94*@5*V2x<2_!@{Zv?Qxnv`Zj|W4pX0}9m)<2|>ZZ>plxhvEfLk>|) zSv8ngeB)7{)V#)x%{l_Y`-D$;pU#-s`UW^Er%|BN(0js ns)TuP+4&ZN(;lEUDSO$UtN3N zl;K15b#{g~Lu62z=&mTZBuX)k+(6xGis}S5SnKP}x}I4!OXu<;#H6!QJ+Ca7L75|b z0$066a>c)~SILHG!w{y^=18&b+P;=<#@itS!H-wKh3cnS`%9~Pdn7l} IHg*dmP_*QYe*)sQ20%f5z60-5vT6%xfnmrR#xn^KUJ?>Rddme z!f~jN%V3Hsq!vFHNU0Sq{Un}VmeAOx1}rspTQ6+9pi*Sjn2{ac#9&r(sYK%SJAX9% zGMxBD?`+mv`rLAjl7GO%kj%8@bD(yf|H}Jw^PQo^lLd<>s>L%DS}Xe!y@vC9*0>Ut zD@7II#DT5tJt?~_XC{e2GCla*EPqm2jzeEMU1X`a`ov1ZRxH$IK%Jc#GTGG-3!juX zq%#7IPr$6UFhhNkp%Mjd*kNX9#Q>|B#l0RPi _eg{73wbn@~c`!_1Ax$+e!p zR}V_mRU9_}pd0b0UW>Qsv!mGvPs;g}VUl%+uBrSdNi18ZktDiu{1-DjH`$=6vAwPz zSNC-7J4*SKRMwgJmR}zkSoL=uysWt)Fm3OD#cUcHZnWE^5lkkAL6G+)7HcwdrP*R! zA|$qR0r ~#_P!f#YM+TQIznpkU7+F zoVn2yt?|9Z_>jj=Wtb(KK>J$ceGLWZfA(O8G4r<+DpdEXzY_Wos^8#OKMlw_t=Kl7 ztj(NI^)`X^48^gV9gqq&PMvAZalKq^l_A!In}FV5^!lb6VVME|T``+KVCl3VwH95g z)ho5)v8FR^uB`*7`r~=Mu3>kEztfHPZKy=so#frI9S$!Ot4aMfpCV+|b!Fk10qx9e zR=B+ND)a|2kuUInEQF)U!boT6;Z5a v-uHTvycRMuUIDkG~` z1 gILX4YPTlt|;l7qOulCgY;QegomtEH(Tv%gPqt z{IsK|8mXzEg^E>KI17dVCTLS>M$4!S;Q%E)N(9(Y)N{(~#4pmyhp=icY2(lG6_;K9 za3al$&CgX{mp?|^;dyJSoR0UAd{{uF{wE}evhzu5#G9{7e@VZQlv#3BRyv7EDRBgH zpQ0n_{38IRU|h<|9U)JQpPwk=_`g+8=p>3v!HJ&kn&){^z;Y~TW>7Ko(v!@H^2spF zDzBfcC+%47EaY(%JWsG HRwZ>r=aPdfNv zv55QczK)8xe!qtWY>A`IrAeQy)wbNO=#+<74mG73Gd7`p#H3Ac;K>*(@ZCjmQ#@F& ze=(C&NlZPnB{Q9D{KS*?tGB9!rJirROGENncySaxMl!8W5~G2JN{Tdi<*%LDt;J&h zi$Krs$j%|jOV355ea4dQ4?KzCto|~(waj$yE4#$~POA-NDHUEEY(vR0u%RD~GVymU z7^r20@G7+;)o~;ejtvcLEomvqfkS)0)XbMfbC5#~O_!=2R7beFt)$Wr>5wADlE=+L zP=}LzaM1%snqJA9g8_*1T{KiT3E}Yi>A6Pbn9t7MoC-$r6S_pSPJS-j%vy+?t9P!g zq^bk B%Z-vIJGjR4L#(He;E@n`!rxMB$ zhTB5G_L!#=0q=3(=nJ`lk>yiTGsaK^wJkes5uUbc_MCXeqJl=pE0Ru?mA2pBXuOq3 z$8_nLIqvO%0|JBwJGU0 ^A*!pu~-Dv< U0o=4rDNhWfh7rH;*2+zM?RCpQF z5WWX0n#h(f26c>VGGE`2dt(}>v=h!r==>^Y-kRWbn%v=voF+bb?5njDo=iQ@f-b2# z!NdYM-WQRoWceJAqCFQO{_!${J=8;#wLq+GVLd-S9^4&L7<{dSpl<$`0wOMvK&q>? z)e&sUU-CA^N%2z6bKnwh{9tx3*zXFTD>TD9z1SCPnqKw>IIDV$S(n>Ljyo{B$T`Js zxB{daHM(RQ1>00j%ljQl21_H&X_a0iJIIla%E 947B8ja~MOAN+E364j#crNc-LciwfU8GbIw*OhtfA$LQ^QMYG& z$ZMYAkl8>EbUM|vGgO`@*U235;J$Sf_9OOJ=|YEyK1^V3V|B2#?OXSCkB1p41x89< zcIr~n82Ah=)=oH)TS< y$hH8X%pJ_-*N(ECX;fOND+|me!HPx?obCZS{F=9JtVC<8moVe=ZobwYqK$= zz>%Nnu}p_jN8z{=5Gp^rp_pH6+k~m$ld5-5Opqzc=NZ3ipYjs53!gm!$Q(}T)5nlw z3Q&s5Bk1ITbenv<^WIiQ-L=OAvE4Kh%aB#%NVT WDQuOM=i)U}m>orl2 z&tFNZ?x~p0%bKFYniIIqVL1t!!)!TVL**$A)XX)Xxx?|*`*sKUn1FGa9>fZ8?X@IU z;I9^w!8(drM@1f?;$!8=xT~#MB^I>+e7= xa*Ph7s?NwRcF*Yq?O6=B%x zG@xHqq*#r5hlHw$^Q?RN-LxSy-4ew$=59yiHrRx7*W ;1-oWEM ~mq|`p2rzoVz$baCLPMl<#b-+3WNtmlgeX>P? z3f~h687da>C86b5=sO* zb^%Y4!vWfo1 =S@#V0hL*X zMal=lK)JaJL5`u- UQ(DycWB Y%|mr_&7MU#yDt*`(R8wqD3=;xhz`Er#=><)JL^bv$dLbl1i zjn$_=9Chb0lbd3SC`64m>)w~&cp937vXc~QS>%TM6f_!A>w|Or#)=qLld4*aQB`9Y zZ%;kK@kjYjw8crTNz7hnzXKx{iJY(wwlo-iZ$p= w* zFh5JX3nQv8^x=AXC;c!KaatBk*y>_HlV4NQQ%mOZEJh2rQidYWw9McdLM=SE-WQx= z8F89FZzy>IT0E#st_8`%$ftQa9%nX_Mn1mF4<)nygun!koQLxdNIaY_6sY&kX*x~t z3#LEX7QK~yooDi71yWcxF^|BeO<9ZDwOkt8>%*rv0E&C1K9VX;M
F)p?6!=#Tz6P4sn%XNNePAL5&sNI>O_?;n5y;PLKkF|HqcF}f)|ez` z$JP%SEmFaViXJ<{SIIoYJryS|w#Q9EOxS0hAOc$QK9_VhCNpcyRAY;8ZYVFes_n5L z`RULBx0rT7kNnzraSEH6587$0cqpu8w!tz&^~`KbwOwsx%_wl73r70$?Q6=UsAW9} zPNsGl#AQ46aLxijO(jz2P6}TNJ$=|Q-;8ot=l{0+)-|YkUeY|H#ADlp55?eyvoJ9F ziIRWdm#|Miq=zD_spuK%xs!X@q1$Q~zjLfeXo7uIDe2TzI(5!C!yj3yI3i7JmkS$e zD)@1o@$@7RhmxOJ^#U#{ugA%72xvQwr92h1bTn?xt1z_#nEmh!!~x}-hlA<0xU63_ zDdb$WJ;~^vyJb787zdVHiSg)~p~{rd60s^46bWlsS5XqzKz XxbDw)vfVEq+mAp&!9jv=>o(qCD=6b%{zQEZu(Rvy5h9-xJ%e>^ z4idh$5Nkh~`=>U9@CkFoXRgwgza$Uu)y_yIw+q%~=(*eVR!W?aaOP+Ue>q37>2JuR zS^ODecm4hy-qN^89#O{%Qhf%dY6U@d1;YiHa*+qPDVl<*Xrf%=gN?kCZiY }@#A zX{R4$X zZ4l*Ulpzgdh`R(V*cPs+0q0Wn7EPhcPXodDO$+?73tvYIhGMQ1jL zVLjk<_{=we_Hcna IIi>oJ4TYaQ!;dwilwu?7S#tfEJ9NtrN+8?|vS((G|yn(@G zvzcr^*}b9uxc)-cJ6j@?`e;a*B+5xRw7iT@`t-gv(AjD~`)749OC4f^r1kilC3aCz zn $n0;_|mCkA&87J}+5V^ifZpeJfJpv6U@Q>^Sw= zn}HQYE-Q3dDdEKHE?Y9Vw+iz?u6|#9Rf}2RA8tpZ`Pn{%jE^(ce(jc|N0kp#qG^UE z%*+IMQD!S;%uaf@a}n+0-X(Ou`@Y>K1!A*&uQJ~IS0kI@)PZMsw^UeLOej~MSvjdV z$2_9EK` }lSCJqbK_!DG z(B1L+s hx(VgUf 9j< zoWshrx^|=8e!&@E)M(BiF2IBlFDu}#QGCAW|0aWLf68sBg%?wrh7W6}YJUKU6*msv z`$EYB<-Beo-N>=B{EQ@f|AW)d?&`Sr_F(u8 gr$YZ4ebe)kYHSDU~r-NnHQ8K5m)RGDF|F|I7+ZLuUV zT8xne*Oh+S(N!5+Znd8e2E~`ypNa*L!$Zmdj)&H#RuwZ&=mI``)Vzc`?$AhtbNR4^ zU`KF%FS^T&o+;5777QaPYOs5TGTHYqr)|XpWxR9B`y#4-zjsvpoeb{?UIBXlSJD=C z&Xh{kL4D@jX-Ut!%^Q 29OVrZ3s4 z2xu?TXrMVE5c;g49e!=|oj@& 1AmIGQ z#%VPMtzM-$A|*fpjvNQMHJ90`FBxBYH!mrYaBv_<9GWmEw@!12lnb_HR|8I~tzV>s zU;P`w8=R0Ku!@Q6j!Yhc6ShkETQzdc?DDi-SItW`V;lKR8#CuudcHg1A@q5bn z!K7^bhjl|mzo$nD=WWYxa#=L*yY`^W ^*IJyz6HT_!k9f93$z zJ*7vz=Ui(LzqP>-B+%@z|GTgVba~tMG8M|u`m@^@*%LNTw>3DpT$o8!U0pr&Q-3ow z$GHoyD4G0Yx49=aPrwL!i|&yG6^iDR%IzS&$5Ink1*~ag4Z5{K_Vm;`h6?wzzk)R7 z6G%5)3}!ezwCq|cH5s!g^K&S^bOX_RQ&wbSUmDGKJo(dHLv(*Wx{)0&v%Z{_?|NmW zU4iWFAfd!JS0z!Q{AFkR<6UZFJC$-~c_!2S6Q~5<)kLBG_MxV+$ll_J#$Yc#dhXIv zh-zwS6317?X*6o%udf#Ue*maJSHJ6kX0&uJ$B9GRW#6Frl!Y*oKhrF!3a*@yc+SIp zs^MdP_JYR7CahSt%y6ZojMn6dlx{@Vr9{!@f&mQ-C>Yk`@p(k%{T|MOMh1-nwuAjg zad6Kw7#le)Lcs5T;Lq{!qr33MfBXmBclTx7S`J`zY*^x!N#OY>9>nPAshqiqe8uc6 zu$9?9)b^~$YIn1OC0|%U%T==jdIu$fSXMq?UTh+Bb`EUab`m9PZHXv+wBrAiXvUa* zRLOW;T8NecX&UOvGHhz+jvbhs952oa^m#FN-n@*$j>eLPf0`9OV`pWqS_4%y8{@!w zjy1{6V`Z9JVJt0lRnNBqaddQEuTKOwD1>r%Hb_`fvkNa51|U%+M_UdcH8o@Yf(03O zop9MvmG5+Q2IlbAQuUT$)QgRxYDzFRd>SW@ypbsfM6c=A#vi`_|KRr@_&qFJ)`X_| z5Wf3^pW!3--Hzi&4@tK;)PD?p$MzV{vk6K}YH}*vG=&s#o>5)6Ag5-tt^Bzo*tl*i z3`kM fL_U3*KPq$!YXv@| z5eS6Qf9en>#`^QVv+3&FanJkThnmW;xIrm^Zr_`4a^(`RDapfdc;5>g)KX?hG0RV~ zD^yP D%%|50a0 z7pkku!3mLIMg&CEa)RcM(#`lZTVIB=Budgr6JtY&MRUtHg-R-L=X-t^t!*s=5WSk= zHvFCc^>OTcV+Vfo;}0MdDv@q}c=#mWya7n+vMO?)zirJrN7|d&`sY|ya;P-#$jXM8 zqIny$I~FZZfyx6CvS}HUSoEyGF+f>cPj}) ?wA8FtK6lmNx-OJzau8O zQq0a(eEuO4%?(r9M|0;=(b`)gG-qUOlasD^;L0opB 3X^xpu62{WS3&q0_OS|h5 zM##6b`J v3Yd-#8wq6LvOIx@DQRW#6%njTEjO}DR-#kOxj-z>MJIOwG6#Sq z1xr2uFqtLNgz5PTG{LQr#`?-kh3+@sJb=@udW*WjsSe|ObN-0tqfVS0;f58>VM*8@ z3LFx%IZi2=QAO-Y>e{hvSDw{Guy3PYOw8PDX(~iVUs_&=hUP`Gk17Ai8W~KJl4WqE zxaZ?M+aC&On47(zsi_Hz7B4mxg27A#LrNOabvi4Mv7kv)FJ=t5EGwS=r3p;ye8Q^r zn^9g-FQWTOxZTs+djb#q&PO;PjR=>^#Dp4 8_dwZrT54SAWR8ewx`#FFPbM#f_kj zmMT%ro8-0EUPUsIDC(M0#3i}x47Z?;o>Rl}b{w`=1IulEWYf%;DLb<|NEvVpFoj%i zOp&%Qi-Zxo4WYJi4*E{KVf~a`a~+aj1>wr92Bb!-_pQ056^oZF%>Yuu1S1-xAV|^c z1zdKjM@+LgsR-P{Wi{{zX54S(RgGwDnIlRACE_|F36Dt3jYeY_9vUckK=T)G6!Q~$ zB3{5{WHmFHttU 9y$0>ICr+|P0Q-~%S>P*7Sq{QlL=_pzWvpr=a1;O!C){4peV3`IZOm)1-ikq zGt;$BZw&eU Mf<+s zDP|V5Wh^UUHOG3_%;hYP)nt}4mOo!*Y5kp7P23V7p_$!Z0S7@{dhVSeK#>E2D5jcy zH+Z}`3ZIOXV9 n>PHE)nx r%}_;iH6n%IC{`Xg6r=;j)B3`h{R~_DuwY#6eZQ|Xl`4K zeS2RM5p*&st*FDbxBUTvp>n>TakU!;lD6B-zNJDwqp*IUWdQ`#P1=}LSLg17B#?o^ z;3=4dCg!Q@so&>;p%*lxVnd$$FCS#`3ZmwaLp^Wb^X8SzSGp!~Zk@zM3;QHz&?%ub zz2tJEMtNSEj%I2jUN9kDw42DjVZ0tcbZw@>IJt@IYD!U4VN|r5n2g}S{(VIQQk+{h zPd)hyvsRjh&X!Vq@pHH0*_V!B&;C;w7@FY6k}wrNEdFK_jLA#D?>m}%qQb7JWK!%O z%}J5#STwuw7}X#QfRnp9?IRm hAn z*E!0MSzPy60#R;A80{i7`1pP3702s&%Rng@Dn)JMTp1wIe9>|~vTF>{%~I;Z% 3IaRO^RVdwXx3C^uBbCsP=kn8xsER4DaRr^nI5$LQEJrlU!5 z-Mm6UThD+2-f_B4S)Yh#Dwch3B+=edk(obw ?vG) z`E97IYQ(->&*9jioq5|N<+5 JCc#$q>}$+X2P0e8o~q|iKKM!6 zsY}br$hSgPDYaa<;qnfwUtVKjqU_gPp;^l)*N|UBsM?E$YHp- pb!%95_0Jox4w9_r4Q2e5_xv3( r7i+BxDH*oAtHY>$p6-E^ zq=KrtF@J>Oo5UA*))D23siLwT*WdLC44gWI-V<+%hws?I*Tl$wNDQ|~W9tH3x%Gam z-E=!V-T+tL(|M6~>WC)=HZVElq#ur%31NB6t-8mNp0`Rp3&8T%Ys}k~l?1T$$_`w# zxGJN_DY)a<@g5vLe3&a*e$0B(S!1dqEMlwB`Sw$*kFrwHiM6@88RcbR;kKbBdjuNk zxtONfAet_1!&Q8YP3idguMXjv7mi>$786bLi15&HP<8L@(C 3;m#pM4HjTz(~1tXzSX<`#s*A=8a0xjpH)0|AtmhEZEvhuXS2R92KD z6bcEDO@mtc*nJ#K7SF2_gVJR79~r^FKlCfSzWX>rL4W30WHU+B_>w-q_s+{RU_|GM znBw8X$8hk_K}9!tYdj8 zE5bd>mGg?l)fq4%#_-Vhet^$@_Osac=I*!k<_VXUp}M99tu5_Xv}hq#ty+bP*RRL2 zWlK=P*@w^P6W6t})Pvivn~#f@G~vI0^g3q@Lju?s2hk|MZrK162$as8D=M&A8bo_* zx!E#-Vdu`*&j~{q=s%5z9{P?LML)d007^MHmGa}Ss;WU}7ajj%EMK+)YuB#9{P}YQ zka~ryPQ!xkYJBqJ*W=p{zl Ym!-k6y ldEG_=eW+4s@tG^Qit_Aa-)mJ&|0*Yhz+vt>XMP-9tq_B(Lzz3=6Ud#+H{6ohi$-Iwy$AineP^WtJs z*`l2F^5-iM3S!x!7IEE49{JHvaR2=uL+{C+xA|%_@vNOXMWdHr@8`2z{4LnB 6N>iRZpz3Y?s z*r&dS2mbVDxSzk?^P7K YL|?poItrB3)0|?1nW|IX@6d%Sq^D5?7wAPXm({ zI|W$rUNf6IXtb{KQa@T63`1{hd>lXg;Unh-7}?3GQz!AQZ+-)tFW-pkZ`g`QfA$17 zGz`B#S;_a_whUKqoX?LV!U1h2GM54x{2Y)nk$n7y>uQ~G*X`SXfEyo?^ZwyJd~hHB z`mg>kR$p`xe((1lz~LiDMHC)QA>Db?8r<`)4dU1mDSbxSf}%|msH+L1zOFpOj=uZQ zch3VbDs;Vj@vU!t12=8E5gRvNh95riWBzPLGS~6L@4XB+UAso)FzWi5xf+>S*1Wu; zPB!O9Qx9E|pAjIrNwTv9km#y*TNk! r$$6H J%*{N5iw7c$?&&E&gsR~M$SDQ5_BvAcb)aX%ddhhPCO|S5IN i8th(MicfN+(ZoL_|a)!9`^<9}tD!+N}X54${6(Vin%s|O# zoE8X`qqHn97nVRrMxE00NUqERKq7ZtPO}lRJjfSL9ufkhRC1 1%FD!DlK`aB zY5_>1As+{xV91B=_UcT8-Oimm-*$K1naGLb$MA_yd;-7vmC@lg==WgL+Bs-zsS|TX zA~w}5H`v-z%~_JckPaO>gyYAL&&uol*rPwil~-;SY$**&ciplUw{5!^v3T+f<8L(h z0wILUt7J^5M)Cu?vD|#5SprCO0dwY$>gpP>WU-Nwl;9|$o9sw5 ;;X~NEbt_)pK2xdtt6%*p7MnE_!=+WCm3=y(g8~}rY66*X z>sMcWbyhK?Y}vp6P5k9w{uRc@4cBFNdjnQ2=@9d?!tkQ`BcF$ZR5b#AEyIWh2M1>D z^&TA=#+`TEfyW-7NfG+M-5arH#T-mepTT`h-V$#R!EmMZ6LKMxOMc;XU3RkvkSeV% zySn;%ESSG2 3HdiWVMKK}=2h{Tz_gn40BDKJj>c zICf||zWP`9;H9U&&6Q|4XTO &n^2{?&;lT&LDc*-d z9xPqd#6dX7k2N6zJj%;TP+J|&7$8TE9-Z~qoBCUQ^rIie@W@!^*|_)aE8zG0M8s~< ziqoSZ6fBo17*!&y8`$7L&W9*F;=MV}*yg6@jJ0aCD~Fj3YrNML8djRl$rLpaimd1; z10(6Lb!TfRNVyaRR5STOoDHRtaXj_YuV8rK1b+F`f5!5)*Q27k5eX{1XXA#;KNU>+ z{d7P>IP626nS6Qr^l4FP;B1A$txHNuL?jfIh@xnyY?c{|#So1~IV+BfIgoffe$H>a zH}~$sAARyq@YS#UGY6y^+ }UAUhdzkXQUafH(N^Qc$w3im zSXWzz#yZ3L9~>G+&pB|{(e T*BIsTkGFdB`E>rIh^bj)=9&$aZNIEMS~ z`vAW8z5nLy&yRVXwYc)~6?pXLuL&0HoFEy&A3=E!w2+Oi)i5hdoxgJci7rsPbzxU` z7pkhtOqYo{f0Qz!f%J4iPvp1bb`ag2rJU{B6WI9e6t(179vHF0MUYv3RRyPaD`kui zjr8Kkn=cry&1eJzr;eejmKyFxb2=%>)~n09tXkM%I;f$dJczm~zp0=Gv3Kv@vr@!O z%`Le4>T7VzEw^CJnl)%>s22(=y~o5#CML$wbMge N7L`|NXg?)m3%;@DBnP$q<; zK3DR+hyEM)-TQuQ+qzYh1^UDv{V_iOg-4+CZP4H3vTSay&Xf##`K6c6iXG8$5*wo^ zu&b`#B3i4owzQ(Yu2$s8L?Y7|9Oy@1Umy1E-;Wnxd{KlppFG)XMhKo8eRlZpA>n$w z?6Qrh =Jj~y zxjkYZD1WIK&82yzAm+ExwS-_1xN_bC63rjwG~}bCvyRS=8F!s- ;}$fwz9 z+ky|Ryx4!iTCB{ Md_52|A2%U}LSTzcsS0TdTsyb+gOF@*z1CxsPE zWoNoLAf+Shs6*_T&L5SRSK?i_-il9u`ZJh6Pk#JVaiX!I7E6~d#+EHt;p6xJ7GjAM zzWLxc`LX{4cJF%QoB;B`zyJpTVm=!Y2>3W#4GQq}@+;odRE5fNL)rH9^q}|DsWUb{ zF4?dVfBjc~gAE(jDZl6Sc=@%i7Gw3Q<#_kI?-I+O G#xXh`!!REse2h)RFd0c88cT_5pB74XeCWI1!4H4< zBiwMqHdItpo|BvK(MNxV{hW=Yna}E#3&km Ngv*YO|Mk~*oDm?El~v$V zpZ+ulmVe8D5wZPfEQ!e}e$3<37#WN3V~>izqtQg>*s1p1M?U;PJn_WOar4c$3U+a} zGB!RT+;QpqhnNu^FO}D6sh^n}p@4?I-rnLB3%`$V;H>C-4}CWSMs&Q9X}Z>&&5umt zWd8(C4^DEXKPir%KBJOFY1z!L_k-W~I-dCXFL2l0?-tcK&Q|Ce@7cYJv!sU&Fyse* z)#c0KId_^+RR_Wgx6tZ&&ycA0Q%;5N%F0T#cXf&PWB}`_8Bn7936X=8x%A8#A+q3% zEVRLKM{d>TJjf||zzTFk&0}a;y &Xpz0~3pHde3Qdir_(Nm%#xo}#Slw;%7 z_rV_sA{mdWk44sgK!c xQxG4D(Sg*{}%@Jn+A`G7X4x6Nx5q z=)@#m+trU_y`vcCia14-m@|=*pa<2JA+$7BpsTG0bK1*L9`^Bl@e9SV;gWTD Kl*?EAam+RN2js>=rG>g--n)4qx{^Cb8wD}T6T5SrD$rXKzC;Y7S3xx zb$I|Ke1B@WLjLz}eUqQZKg7R%{cC46ua=~_xo9-!ex&vt)s>~3Db6IsQpk7e44BD^ zl^5ZQU-*J>$C8XsMzL#eFJ9hp82b;M#K7Q$2)m{le8fT<8>`USQja-Z4Oq0G4UP3- zl$VC!^Lns&@k0E^w;sgTzV>ze#b5k6jvP6BR<28W&c6K5U&h^c-!9yAE0?qjH|5aS zgk^5aUYRKJm^2&X-|s@s`431r7l{f+E?lr6$7M%zM &^Ph=L_P%o@epqj>pl|z65RED^XqBEb<*R&Adz;nCM|j zq>_00r(eUVllw&pl;vx0#L7! `e&kg4q2J-FR#f@nG$@Z3(75MtszOMh=)-{Fi|Kv%ub_^p)+GyP9l6(*OBjb}1 zbaV}g{wHF>m1QM()urok^YvR%S5+dE!N2;|f5hm>h)B*aboqS#%;Z|_v=KWYFiaOT zjEsz-^;GKuw(Y~`Klgd8UAsp7JQGgfoB#d*o__8q7(Yl-jQ3N|m&hM+)-)f($<}`E z>~v}2XD>EwScX5lZW}H*cR6bKKG7xkzz5#T9h)6^``h1+qem8ASVPan3p=03vEwJP z<-E=O-ecIfaXFrN`f$#GM0O}orII2nz6sq0Kr&I-_2xGl8k_h7+^mOmRJow^Fg}(Q z>Qd|=#HJX5Ik+!&(=KHJK+7jm)|=Id9ht_r>dffT-+c$CkE_~TC8bqZyKx8BY~F#D zYqyEsm?G}Y#UeA<_0<31nMZygK3Chg7T4VT*O*JhoEu;5stTDrpeOo&ML~m~d+2Ix zeSCakK?drw%U*$3zEVvU(zX1 |?kdXFlJBnW zF7)*F HA8%HxkcCblOAB`&WM;HW6>V)gWS z+D|GZT7b {k+dX+iuymsw6u~YL*4cVzLbsA>6pn(}?^EnkFSi@wBOYR5` z?8wfr+w~nWIV8zOMJOuJ*3_-y52ngSBC``Xy!Qdz^Rs`zzyH%M_~CcngP(r){rHcs zy-5e7%G%|)^*vufHUDoS9)>x0 Y|IVex2$q zpYEB)p%cTxxOfE^nYbo1GBou!R1scL>gV7Xz`>*a_||{##IySb#XUjm9dCatZoT!* zy3)cz7gcwq!(e5l#bO^ #n*f3U?9O}l=sh#bmo?+nSHEV#$4X`H&C68BFCI@I5{U^#j+*K+lxu>j z-Cf-aQfSz5>7{6DZc vjCsEFixw^6xC)@h)*?;_n zIQCdfE#{z*?MFWRkqpCI;5v5vm<}+t)oPwFSA0t)=Mjxf R zgCz9R3Jpn3p&^+}=a1A7UdqUHn8cJi ?8xc%w7FHu>n0ERrgwf3 zJFb2=>KfM|R8}o!^3XBO&&M&`*NWcGBZ$sUi7;K`vUBj3_kI)WHeZftWC~(Xw{$KN zvqx!`$xLb04eD7+smvtc_2~H{>JuT!oP1YlSvfAe@B-cFboWhTbRsN_J D7AmBqoU8(NZbaZxLd~7uDZPQTA@-lUJ-p<{pFfcM9!f^SJ zne@F(*MRblxBucX?A({pApDCD{sni$>dqi+$I#Q$qXSZ)*e}AzjOB2B`R6GI7Z>XO zmX$03($WMZYIIm>e51Oi2J6;o3JpwCXrQ5BltY?ln#asEp2Osjq1c7*a$r%46H-YG zNXoTPJbOPB>%1d Fs_Q?54O?D~vdVfrtfz+QR^go= z{#R_=dJV!eGRBf!S(i$Ss47-i&Q|2hFi0}I6zfk< 5^S;RI*R2=5Hp1|Q zlW6Up7S}U9_MF)kT`&{V)Q&}y@*$@3yGL6wIHrb8F1&Cn&fBsj$EmCGH8wV`15R>2 z$=OjA(x-j*o_(U!Jg@kS$BT=%Wy+lgh9c-6n2-#LV+K;2l88J(c<(baQS3d~A$|@9 z0%&Y#Sn#nfU$z`8R;cY2lamn)4NnVpM7cAS&CTQ3(fs?({KWw=hbestPjw6+!ol3< zU6`q%>rDk60lyDF;Gi@*uBx(A-`2$!UYuX=kO`1xre_S%870qYpUe)t=3Iggh2^mR zlsP1eGGS#^CDv$((3IAHlu9b1$}VY)(@BlLqTguR7(G}D4{XC$?ztnWo}A?db-*RX zt`{k@|5UO)&pq_2nq`~;Z4^STiFg#JPdtx@?*1k^PQD<3scFTzShi{lW~WDC6?uid zNVsF)k+C>KJ(luPKWeMhu*mqt1dbj%mcQZSMsLj;^_q^1hxuz3UXS+hTR arj5w4S+B-x0H|0*4{|$e0!$tMDPHrI1EP$Ix-QJ?{%mhOeet^*tsg$?(O* z6jR5MzNW#2W?gi0I*K@`kq~HiUs$kbS|m9YDk(Vw^O8BA9`4bvYN-)r$+QkoLu{S~ zjB;9+Tym*yR6Dvx1&}C;>2OmfcEn7~Pz&D?TO*yhv@u=iOs2B(3am=ER`C7m9h^d9 zZXQkb6=={(zPmd+MGh(7wQ>DM)YYlX?R58$#%PMp2#{0|EfQB~|H0EpB-C6|%ZipW z&KsWPMOSLNz>t<6AV~`v)~sG9LOJx K~Ep!V>Dr??@R*B|oCcNbZ{IORmjY(R_H zC>0!}8)8Mgy}Ji2nV&)cRhVtquulJZYBqsrY#u(30&_nuld?J{|8Ke(TA_ZXIpMUZ z0N~LT6&AA8hEw(LOG5#ySXL<{n&|is9N3??M@_2r7hZ6I1|TVP^o+shR}=fra`MI# zqwY_VJ1SI>Sg%R?B;pB-kB=?rIGdW9v1aW$%}I!$zkf^s^N~Q8+@28e)6<`tsiP zIh)QA1rxM-`F6vRxVV?jh88WcqN&-aUfALFo>^NDNj072MLhvaR~G$c3`lgxW)(D) zmsje2DomFPQmgCc88cO5$sggAjXleq4_V8`nXAEI?gT7L;Fa0@&LKv{sM5@f>iQMp zhv@92sPf6|vwS>xO2YT-1CEBj |Zg%*;CXi2g<8dR|LgeA7NZ4CeNr@w7#KUWpCs$)s~^M%p?4QvGGaH z7CQ4PF{a$cj>}$wphhvLBl8#;n^nh!OYch~JF+@0^xd?r=7uWqb2t(fPQpSKX~}Ke zs1|@sPDL; xr`^Wh<5?R8zXR-*?TbgV1 zYcw%FuJ&s!Fl 9Qs(R#aAE)v7g`H>hgY31QWFRpmP^ zs+v={OvZRDp%4R@ fxzezMWY^cgze<4naa@l=oqxN~yH0R`ZS{-0;R!7G*c@ zNT$k=^&ffeDE)mUCDahBjVzy w^NF==An{wT{b-LG0Oe77P$BrK5pd8KH;9Y(7)!O~c(9z9}b9^pS z%wf80DXABgeUi$`f@o?`8B%yQjE;`Z1s&(|mKHQOsbMv$u%oaV4dbh=Qp0s5E7aDS zzg?wJU6WR5k>IR#aA;Z_` Uk(el; zIzy94H{Z#eyx+oFRDfg=AtMdD)vHzGB`WMRuUh1i=F~<_8H12Yu^IY%vhP6?2q;c; zia}bE%v?I3m^4%409LS=W9u<;KvKN$1=9J0ImE(h`F9rAV7c)?TfjDiDyg8My27gi zQrqd%3-H93WBD@G@0gj1^X`A+ zNO<&ut>=p{BdxMfv2I9Do@&jl9N4h@em}0b;tGv%QvPT}V~3E0eN$HAZTLB*8TIPQ z5Wg_GG(b|@Old{_Dw^sjoCLF`W U88BEuxysOv(UhxBy5? z3y{cytTVq^Ra1+WmKOc_6dHDODM6(vex8ILPS5gkvO+oOe`yt5cABYqNZ+}fv3wdU z fSts!cHwf zRF(Q%sE0&^hBzQiPRE3I%S?>Za@=XPahq}ObR&@X=#~wQsHs%Tl-o~tp}VtV!8c`P zRgI9WB11(^P$=lr4e7yyhw{!JEnB_ TIHf#+oV5NBUSlK3ox8`Oy+4!&PC)tQ0~ zDpBw6%O5nT*Keg(?oGQeJ|5-lFM;L;Qdd_)v=j b1;laNXHkmV;u5ly<4 =8=XxqIIpy}C|VspuTKdPm{+`lNG+&G(%7PN8tM*W*D`U8Tm5 zlQ?{2VIsH9%}rRpUd`)Kfk`LdFEaR)n;{UUMUp`Sg9CYQd-J)QQKeN>ss#;+vr^C? zO67}vc-__K^XsBsqemWnTrl^Au2rj6>kZq)w%a;~gl1w+`^p`nxkLo9?8aE3nOgv) zr3XlqNxZ=L2F=N#_ 4)_*Fh5lW={YiMi(2PD;_OJ(gxR?D!>c4c0A`Xec=!mhSj4G)r5+JOTH^1jIR z_4Oi$ly)$N$KoQKmX-E0gzlJSKV@YgY95is6kNW26;?ErXyL$F{GJ2S)a1m1Z^|2Q zyb+;LNDu#|9q;k+DYUhn%qwI^Z02H3oq@pQ )4Js14OqXbR)5}q`qQ80o!2vlEw6js^`Z}pZnrM#XB(M<$Lro?n`X_V zDQP-KR82GJ^03dLuofL4k)_KjXrQ?^t5&ScIP9s6hF#JitSXDYG3H8s@{Xm+MtYkW z6mwAk&mI{r2Se$2avPAOapmFgg#O!TSd|O1Tu|oLfyE@pVDQcPn^d({QyI|0brYJB zc7BUg+Z#1Kv#FUm4oDG^A+wgM!;<{6V~HYkGn>Hj<| -DeuIMt_b>d0 zEGZG &DC)LRcf6r#CID*Kq8 zp2CqMM;3If%Q$PT)$%;l4BJ0AiMrZSkwc=T_M7FOFI>KSh29W58=c4S=&ZP`X97rc z9%J!@Xo`Kq>n;+51ZnL*a0rh-_UMB1g;W7a(~8s1$DV^7B1e_8Ipo(e7PgQfYKV23 zTuJB^M`0~GK%& O{j_{ScB{3DQ3Ckx-f^M$z)Z}Wx#SOZr-A<;jTo=1QIC0QY6d4y zo>&kwShaGM{xb~(9G#d(Q$rQ%>(n|U8XMo&m;XdyVn@V^Y4s0Ia27X{#V8g6MieHc zFz=ghx(w%TY!=`ai^uVW&wt^J!gVY8wYl<&%f-K`g>C<#4#7Zk+f_BU8L 3Tx2;Qpo& Sc~oFHR!T8|N3wLf!(`yp3x2Ywzt1c z57)JIO$x)8-u|v#yYsH(s;sQSn$;_HgV#GSA;enKY?(2eu&U%P5UT5ZXX K9{P6(}`p$W`} zqXGcW1dONx@HMa6inrf-nOYFS*N=YuQ#|z019rpla$4_y-v>mvo6c=_|0LQ@4 cHN (_n+02q1ryG>BS*I6)HiE`OUx2t@M5s{q&o9R^K@(KSMu{S2VE-3WaN}w ztev?vQxr6KP+OH5S$^_Vn@~2+XHh tW!&}DTH P zY~*_62&RD|e^`1uGDe6-mREB?N+suPLC(Ii&T9D6$4gC&L2mrg;jroHnFZx4s%vWX zSv#==L;rA8FDJJZu{DP0G-Y&3u+t12Dix<9hPS?clL#l$I(@nWpZ?S*(cRs3MmOXq zKJnLLG&rrXshD7Lz9RKTYisYo=*V#11~okvf;{Q2?h!<}aSoLf8@w`RX@q5VwRilQ zkWzM&R?sjzJF}qvBLTj(b-K{)#6%c9eWNHZ4{~;t30m~^4TyYYK8t#;mM_nwg{h~9 zK*i_Jm33$qo31x^KIneD>Xql=qwl*Gr6JY%=LR0=CSnNe(t?KDcOieDRprN9?oHGwqRbqxSqtWqM(FLy#Kx39vk)lyL z`kffY$UPA 6$l3LidVcsKdWsW!+QS1uCmVgmSU)^C_z)bCK(ioa3>*u zT|vr2u3NiKuT&cy4P$J41{>Elazm{te0O)FtE)5bZPPh276jDSmWlgxdL}A#?I=_$ zrtY$|(~;6E8ToGzDh+T}UWE;OU#@uNCT!i5VOy #F7k)esJm}rh_e1*eyapB3Gm_>y45i>b36flwoZ79F3hI zP?Ai5V9ZYP#vZ7ou*DqyT!H(za~Hs2&h*PwELL0~4oFA$J;)#Wm>#}cx%MJ3I!WfT zcV-s`l =NcT*KhB45ezv43u^J_iXitAqc8V)XAy!LWc8KAXuoHM4l zC{Up5OU#JEaRClm)Rb6V6~yv}QmksJ#JbgWs4C0!g^&Sz{E4UV_uNz7vuD>C--x%| z@+Q3dws+{I-oJV9D5huQSlv=3Kv4yxU3ml2`VHq`)k?J?I1)>uyMIg_kzlE;b706U z!_LW&H*f=AqUFs-Mn*9@GMM-AQftLJO?jQpeMj$@$dT38Rid(74cU J-4&-i*@aKT0R%-?)k|M}6UkK@qsE|iz$&W^;$d18_gOW2T- zn1@}$bx{=7q64H7m ep%2Il4jvF(dxaB L!OiEg^o?^#P2y-(1Cd$Cl zc`N7mnxiU%q+HArI+V@5G5i@BqeyrHhxa^?F)S4gXkNaV8 Lpjp!MOpr?OQ$Outhg=QL2 zPN+OoEJl+rYpCFc*Sfu Xv2LaG4#r+@w@6#Lb@PJ8z>p5E0a zwA?C6Rl`5c4QW?LM_vlwWUyXw*=71^Z||PKbT}rao!W`rT3ZT?3JobyVYf^R*HKvO z@Zp6iG}PDC=_TJ(?%kt}oFF|wzfZl<`+EDh1G13w%kZ >kJIt|1JMO=FfjBINMUSdXfTQZ&?6poN1`RfY9}Q-1Kbzr6=v|Hd~kJT!2|*PA8@ ze2d>Z `38uh#@i~1*9$)Kq{1cFET(<% _sbN5YPnWKUh@FEJN3q96~ERVlOL?7>%p&eq)+8OY=e z&e{5El$O^b7Mph6n$s{oW<054yhjSf+>>vtQ@!QMsc8;KM;CmtAAkHYeC=!Bz~6oL zZ&9nw$7yLQ5wBd<%xoB^PMyN@&pwZz-*E?C*!k?)q3FR9eC4ZO#|CZ8Hr;E#eefWr zrenBp%L=_zdH? R zIlQ3buCA`e>Q$???a;__8acsPN>%21bar*+T~V1{4?lE2zusTNr#|&btkf#`R;{QO zubiBia70}1z5Dj#?mO?qgAd++R<1XNX8- 5dMs##!2iw}_K&fjc)v$V7f%a$$IJVHarPSdhWnH+u>N6l1HXJhQm%|#}_ zV+ykkv$;nHt>d_5?1;Ib33=PJTl=5;js9M7aS1Ni@dj?F=B@0=Q5p!gazVyX=AjZl zmep$`C#WIz$gu@q>_j||tvPqOtakZ@5Veg(IU_US2LrqA83;VYqlKjz~0u@a!z6 zXQnYRK7s!J0qowpmxJ2lIC}WtS-SyAqUx_c`6=A;#+&qp%_pAkz=>8Wf9A|-MXf$- zXV1R;^y_H({Q+IDlg{f&4oF_T7l%n3vz>C3^#2r6TDw}!vChoQaG+e6A_X~p%QbC5 z8aXjAG$DGM>a~&OQ``YLb?W39o!{?$?>ijSI`OV|zC$!c)AgpN_mWUZl+_dCqj^=4 zNJJdVEWhTHQ <&V3bDti1?xiEwt;zhYBK zC@J~2-Am4xD$6q?CnhJSL=VoHESlN$!yo)Ne*EJfV$-J0SkcmghK5E|R#tH1U5xou z60_VeO-@c=d~BS1?L+A8>BYpv*jc~%0)Zet_32OJ%U}Mo-t++UKnuV6!hr$YdGCH9 z8&h2D!@5;9A^}fp*Unuc_mR(9v2rCgY*3k3ES^Gl?-+buFLIj{$t lALbIxWVm`wTM z%Bm`%mq*1ekw}y~DH9kS84)r?{r&wI85w#}49+J%`DuLZtN*P3eBekQ{`)5ni!%D$ z`;Ls~ku$leVeUL-h3rUR(#>-#^dBu!hP2jvfg2kdkQRVe!APybNr&y+6G6 ;udh)DXc$#i|l!M#RGX%JWu8N8Z{MBFmHNN=8f6(7Md~yUoyL%U+ zamr;Cp)}w_Lv4v#{m0J-RTn1n7}-wO<$?(0!tw{%OttV!A?u+zGHB2SWQm<3^gb zfqZmd_V)I2gPwo0Kg}B3xKW+`L*w3i`X)s|Lvuql>Z;YeN*~{Ldt3WiJLe}(922iU ziBa?V@xc#$C<}~EogTvf`~Cx>KPps`KRco-MY>*7 5^|TB{r$5eJ4c&A *?i_RpW)te zCTw%8Z3N%{ z^{(d({9}LlaeVIcpEZEdApXDqd M+q+yqEU8Ddtiw}?} zUXV2@mJ-a34Jsfd( Pbsi9zOrzg8Eq6>@UySc%}Ex>0VcC< zcv9N-hcG(WiN}8TU9};YPMkl0S6%-B?xlG&$$JITc}J3cWljv!Fp;#xPu{o+NVBtH zbar$s`J0;>R6qLBkK(r5Zqwgu>l(-HckII0#H^UHLyTxHkrWNM>2Te?eftoP$MX6v zI?tDE->(0=Z)hUZ0BSzvE(I~_HA{(vd`Up9LZiG(=K=>1u3Nhv=bo#kZ)xNNfn_;2 z%nh2tH|5IO+LpcpvVHrd`1mJ2fp@+0?HT8zbpYS{{zGW%7(&GvfDtVkIWaP5aSGg2 zUMXBRjlx=VfE0qM# esWU>QTe@}W=$qap>v zOh`>;h|E1FUZ0O2djb#q?^pSapXmp=@UmO5cH=8B7n_BlPSB==TY-F(0kc%r8TX^C z#E<4WHCHh;J%bacPA%D+dgI28c*7gsfOoy?T{!Q&^Yr)kA05E2?mdK&u^EIo7%?St z9!g6xBg>B;JDRsb1F02k-@Z*hr~UmC*%L^a?QQ4irKBGi%4ZD@4d;C>Xtc)Vm%j=j zO 5W&(+`GeV_yX_0uOfBUAyH zEx4|rNHp+{k8~lDoj; qErriMV>p7iMBdKT_ns!F>0Y^>$h=Z7z~u*$p`)m2X|*w2r4QY zarKRVDe^FknR8IgQM1mrvd&P WBu#8TYvanGOn>TO9Ew{cwwT%3jI=aV%f
8YJ8r63EDat_PERw+TAE0Pxh$m4L#hKVsd?xyWK zlZv#Gp(zPf;pE{b@Z|6REo;-SeC?m3s&=_(kX7v15wjoeX80ClPqx+IIi-#_Fcvh7 zj*X+gw|hz4z*W_?!suRl=_Pp8<(K2;n{Uc8+ xW;LbQ*$AV@o!2> zOEH&MKaPTreB>kgPaWM8V)&iU=ao1pcJ-f3S{<6+ud=dIY}~LRKSNqn#0~Y0SgQ%D zlBVF1lf7bcZ9`ops S3>-l-uwr#s`K3;#r4OvXIt9Kj^KY0ZA zKD<|iBF_|z($^pyp2ASCrAUM5(n%K+RA5Jo43OxFqEa5q(?lu_wVG^DnjNKQASIIu z>_^bMRvH+vi^)SIiV3Hf8@SnIYRqNUiUsK;aT;a-qap-DmFR5UgM07z5~imzVVN}> zcVOEUZ$msb3q>C&Avb8uZO?6_j|lkvJ`XogrP_5!qP4YEG|DbI@TsasO>G?->gzch zS|$t=&EdJ|;)}6q v>2@4FIl!HtBKW=DjO>&Ny;F?oIiFi^eG~4! z>n^mnyQ^x4O3U!U4}KVz?bxor_vn*HMURzFv4&}L4Fi)Aq-~5(s`>DeV2~T&>+!Rn z{hYHI_u>ZX^LocS-;MXY=RNv+M~?O3_=z4=l!f^9F4sq@cX#&)b&bWgXs#6XGS$}A zp}BdPa6C3{+<+}x&c}rpoS*esQvTR~s1tYJzZZv&b_vZsV!~$%MnYJIUyHH9HpHS? z=ZKQIZZ}9Ff3!#$61ie4W!_FrRYj)cTW3g2j6z^(R^b$ylZDury()v82H7Q;bF0_0 zhW3~wY-s(w3Pu&289j;nfBhBo_hgi{E32Dv!(0AdRNN)v)5yvl+3mAgCP;$9%oHx7 z7gbs{rbkZ9%;4a`gJ=In^ZIpx&1^4T5%Zp?aWcf2Noi>aL2i7>St0$k`nm=&+MvF^ z4t3lxH8eG1SyMAsu3X7KW0jp59*>~4V+03}4dcMkULjc%3i_Z`?OGPWE=>zbz2Y1WA^~jMelh;_U;mYZ(ockv1m%9B(Wr1L zXe>ABLK0Y0575 c+A@O4;hw$46_8}aNp{c$KjrD3lLo61 GdO%=04Lgp#OP}pr9oPG4Cx8Fl4?zUEodNL8wau9J#rjx`LpvxU))VM-H7Y1 zyA}rz9Y#-2H)f`1_ nASu>o0kNEV z;LJ`9u{AnfBtP`4d-mYnZ`y%iz>6DhxDKy=^_60hEh$>iaKe-}#E(F{xv5E<_v)%j zecLD6NAO=idmOE&`w`&hxuSx9PMfdP-#>U(`j0NYcpGOh=VH~W)k43}UtBDVxg8)C z^WT@2kpogH_Pdk=QzhT$y4rdK0zQ}P9p+BLINCZ#vHwU1jvepC dTQK6>><65Rm8&t2M`EYid=Ut0Yq^>{1k}o2U6GYG0C!)MSmI zaF{VeUGB^jGGR_ez!B7#3&V0l!)!nZmZ p1`!IXMn4>$UC_u0ec!iUi1+^advWDeSKz$!w&-D@v$dvX z=eQTFjzpiDj&ct ueWSbk+XOEQG`}%qpd_7jLUW@m=|9!ab z+UqzFo+kkBY_7@am{66VQ5p2=ADlv0- NgE?%X07i=#kg|G^Xv$<-bW@#+qp5tSr^HGuyaMFMj+i@dGXKhPWCUaOy5G$1 zPgHM>JYHXMkb90HOpOm<*B^d~XCM19rpB^6zezatH8*`+u%uKfCiSwJWoJz}3RiZ- z^r^cv1h2f*r!$Aap%IJ>4=(5;zv_ys@QrVL13NC=F8zIa0 ;`hKe-V67e|^-X%F00u`EXlhSS~sb;Q?Z$XL*R7~^R z2ljJNj$`ZQCN$QUbEf7OxhM00Ju-w84jdkt#wpIONF!}}DkAg%Q!dkt8C+PnlIb7w zafFPsdEEENe$Iwsc;zK)1-qf~4IXXIlJS^mzi9k7jS)Y2dI*m{eH^Ddhfq}+QW+vY zkmiO8G53nr*ci$8^eyOmlf&`P|NIrfCZ+MJId#CM?0kzbeNwx|@r1a}RN5Ym@oUYm zD_!4_@mbD%C%L0Bjq!;Y?u4kLEGTk9*Ezr$BWcp5L)7eStHtqWFd805&*{D9-%tnf zqb`3<2v$(|UZj9T-;)&pCdyu2r4GxQ*9P* $!UYPeG-wlINe$re;f1lIb?Y|ZoB#4HTyjZfAaG|d_h^Tv zF%y{+MFz3xoLWwuRr=0!gEGer6eXvHapHz5ksyOLhj4UGyiZa-V)`oOD7;0Yk(H|E zlp^hjQqZOg%cYrER!>&;6(++;T5kz{4jz2s2zDRr6pf=aO|+Qkk|!PYRj)1S-%WFd zM&r7NM<(GBxg`S_G5J^#2IlT4nR=FrIatndfPU!7!#H@f8%+(B98d!Mp7LaYEd7`E zpUS#vpN2Rn(Q`#1Iyy)3IA@OmpZNRqq6)jo$^6qCG;Q~bU;45RMzjm<9GJU$M}<}% zG1zD{CM}<5LR}t02|dceC=yKwAWFmuoaO}ZhPeYmAyRT+C>KS*Oe4|hdZZQE&u(bW z8g{1eVqfP$#3EUB2_ysbNDk~Lt^rqJEiyo&yT_xw3=FAQR80w2BAM<(Qu9Zm2PrQV z1pBazye`dVU>|G@yUq8f%K~)c#-AKw97WutCUu3PA}>Ft1SZD@(AB;dNB2F9)}v2j zdP2@X&b{b5TzbVjgeWOYW2|K!wext1Yy*&eoEdqVK+ucjO=-pFDeT|3FaHb7jm6D3 z->idCn1jzBcK71>{e762hzM{Y@MHQ+CT3_B&VaxAy9{6vD^VxRD)9S?#25#WmeA-5 zOBu@8ZSsxQb7d9OWjZJ_&W1c SM{}HjNQ?0FH zzw=#Gy?5j5ZxH{c!G`xeau82GcMKz=Q`~`wi)YxWd^LS&DeXGb|B-edU2AeQii 5v^WO_OjMlE>T!q$(`aYbdkg%-LgQy0KuIu~dYVkJsZ9!ly+Zuj=`wxR)26 z!Q}X94EMF8o74TC(+AMkbp$h0_6}2JO*3A5%cuCZf*g=$C1A-Uh2u8tNGeSuFZ&L0 zW4f$CWk@t{=g tSEt^okt^sNGTj7QmCm4p;-f@;n7i?I+?#h1L?(Gd+oK_ zfIDE%fezep_cNH9j&SA{ 123lfxJv>A}cgJI02)F*(|casHYZ?aApRU325d(Xea-;*r^` zy>ToKX6_Lm 6lV@5}8PJcrv$KmIV}5y9>LJ>)Ws6?^Or_WD zJ!1%kd>R;K&a0(tUA(DeIT6-9H#SJymAzZ_`5+0?y6L?;=y+JdruH&Yih~O!V?Oqw zJz4QXK7~ETKcaLc<=v5K=2P);J)Q+r(VW}+& zwfA)G MCH8+2Z z8w C7m0UITpo04djA>%pq3mB&P(2A_oSSzhTUUzh_?=#lcZ>3Q5~vce`0% zRvku#srlJJu@|*fA$@zNPj~QpI6onQV4wsWHmuXbY)4P_V{~i^#eCbT)Y3PI1V+^R zcWnQCX68oT;xBX9#9V `n{n5fOT zfs!)#13`43K7jqt-i1>~p2i>tCB5?PEG`OB(zuC+rVSjB6y2j`5+($Pkd-xB oOQCa!kyEF`H67CfJ$BSB%oqDuidovGa*v;DslDfv&baFKSYC zelCs&{`V`WYgmPP4oZ>8gxqHVng6htF!XQ`&hdE%BqNPE}|K&xUd6Q2r&~t5>hV z^5xCq-!%MfV0cEKl4@`572WBu&8uVqaZaNY-J4)7rSfU#CkHJ+i^PO^H<@D~(COcd z r#O8tW<3l-}jI}y3j zdXHo!-|39JBJpwa5CE4xv{aHz>IoiiG1`tkgJ&N80gmo_h*S5x`!mR`>V#T}GpU6t z*YVdTNXBoZ*T}$W-22Nf;mz;;7nD^ts^6<9_JKL4dT(1V-+0zkBTOSFiv8;MjEzsA zyDLA%XOf3G_q=mOMHQ{li8!WaqX=;3m14$klh>)+HHg}d^*|14gUp5@vg{C+weW*k z{_R#I=e|G8nUUu~{+V4kGW`TF`^m)V=c%Tq3=P^0q=Ehcv@T!*EzOr&woKK>>*^ii z_sukXo}~{)5ULDGoH+Oh<`Pl!Z|PaSKZmVEH9#t?MGQ!k{j4#+NqS&3GCJMI$n?;T z^FykboYZV1&1}O}W_FY|N;HABtfCf)cmz+}^BwGZ@(z(R%5hQFlT;UbHL5 7le970n}0y=iyIynGEMNBVf zpm5HyW5+pLOXPK7o12&8(o5Cqx>zEGuKpP@eKjPN&M}}1V~+a|SJq?)Zqg yN0qzz5LC>NEWpa*2BcaUJD_BKwlAq@ z(HUmr-5Q@^2KxjPb1*=#ggMHp8ZbRRfQRn>CZ2!%=VH`@%cA~*$M}mBNa=}gbMbqJ z3|`Y7{-Vy)zl2)sk+qH;cpUft?^kf!N56w2C4|{ zLDLGVc)qqeQd_ z*F_>YbU1&7?+qK)W5=ax{%CS4&W+r(=#@!V#xXca;Tl6$hDthS&p4QaqPi11%B4g= zcCMTUFfvP{u~U_vbeoDxG*ZeK^Vq)e6Gh<6)vp&L&_KRKBA(avCh=4PByrC~=g`Rk zi4-J)0Y8>9L85-bcr1b=d+!s2Finf9KJLn4GYQQxEv!WjNC8O7zDagI{d}c+9WzWu zv6t$}q#$yS(8=`Olp>T@)}z1s81DP!KjOfydu2DHagq0PH-8=Auj3j$&vy~^e?VhU zpVe4X*4p#zJy_PV1~ 5vnSTu(IzW%%pgr@yo zef4X^;5dQO;TT3nXS4H1X2Z(l0}5sCf~E3}4ViM-pNT^qRj*u^HuIDJ-$8;4^)e zxvDbc1e36KkL45dV}{V3`jAnBY`)i<*7Y~sAm$MXK )N(`J8paTyY!z2Mxq#-j=<+H zGKEKt->NwH_He8sbeaX_SS2T?*pR6=I2AP7PbFctMAVI?F*oIgT<|8hc%gXE($||R z$*L-=^19wzFStmIhNlq^v`(BFz~ImX{C>}p&L4TaKB2~N>WFj_IfdbWl_NXqMqw=p zKq3}UY4%70B>{^gnliTDnB-#=N9&LcS6L;!rd$R+j1`rQXg~fe?)<^u;P`>ZasiIp zH6S{hofZ@$`?kzhMWbQ-&riOF?zZQ#thqrnGI|VpUbX=u#^gp>GA)<3GB>B zZhIFlyX J$qp3iCC`>W{ z(H=n@n_rzY=A^MQW`k191%Q}shmjo^Sqebi=5k4&1^I^*t(Pr1uhmy_V0!bLZ^ex_ z-jvgg`i3{&ihuu)|G>GM&k;Y<=!d6YI4MSBkP`Zm4b@R)U@D1Ydw!32Y(~b8sP8D3 z67DDpgZP$A$S!CO*%3o336|)OQA$&3X2zGB)9d7VLJ}g wJaQ&!(9)a68%S^pf{^XMG`BtsjM^Sh#1@zWZjtwb5&V#G4={ zH6iou{5d zU*`eY2k5!~Z4MhE;2J1E$ @kxs;jHv^JXq3CANS0`{USkuphx fPr8TRaKQ7bTYmqHNyV<&gbxloyYlo;1x +037^~VjReStYduH8MVa&u510;)d5G6v3i`5%Fr7; tR~VE-mMyz@=7> zW%t#{JaX|J)D&1=g~;p#9{BZFaBTm>c5!d2hWkE$J$@GazDbSlN3_G7*8nbI*fs^^ zDU U>1*pOgYG=_nhC9jRu7LvE*|If0*cr2^>&OThp%r^{k z_?*FJGbfE8Nu52D%VOlncifqrBj)Df_SpOpjftn{;K^r?iV)u0Z+Ru^YeG3+?^YV| ze*a!Pz3YV7-(tUS$(At?W27qIlZPHcct(mPBuJTyDnn9ZM}<=FB?L&NFqJsd{2UTj z6^~6S!-|rcq>aK@j!!q!E2HeHsmMqc2TCxPh~bgDzm2`m-ep(7Kylz7ogo;-wHtI= z+g>z>&(rHW{B
^|6s(TNCJ8bT;9^K*cqIXa3q!axIcexYc FwfJ%%@2 zjJRFj4s$c^aycbAgHh>_Il^QcaWXS>X4l_lw?8(c zXK?DUw2)y=3#HHJ_`DZ%>y{WGk>Bml_SU>8DN#w2IxW^T3n^U$rPw`~IpBq62x+cK zNvHzPKKf();i20FFxf1k=ua#VjEMDgX+RW4{>2aU_tcxT8 |)*%D6tAM;|w{5%r; zqA47pe4^OGT+Zw=M9>meN|`JugJXj$lk;V3gik&f$y`d#q^b(;@