From 42d98407de9df90f5b2b6bfa1fe9edfa2319a19a Mon Sep 17 00:00:00 2001 From: Karlcarlo Date: Wed, 1 Apr 2026 00:43:51 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=9B=86=E6=88=90=E9=9A=90=E7=A7=81?= =?UTF-8?q?=E5=B0=8F=E5=8F=B7=E5=8A=9F=E8=83=BD=E4=BF=9D=E6=8A=A4=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E6=89=8B=E6=9C=BA=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增隐私小号服务类,在订单创建时自动绑定隐私手机号,收货时自动解绑 在快递发货和收货流程中使用隐私小号替代真实手机号,保护用户隐私 添加数据库字段存储绑定关系,提供系统配置开关和测试脚本 --- AGENTS.md | 384 +++++++++++++++ app/controller/api/v1/Login.php | 16 +- .../order/StoreOrderCreateServices.php | 28 +- .../order/StoreOrderDeliveryServices.php | 6 +- app/services/order/StoreOrderTakeServices.php | 12 + app/services/other/PrivacyPhoneServices.php | 329 +++++++++++++ docs/mixcom_php_sdk_v2.0/index.php | 14 + .../mixcom_php_sdk_v2.0/lib/PrivateNumber.php | 457 ++++++++++++++++++ docs/mixcom_php_sdk_v2.0/readme.txt | 1 + docs/privacy_phone_update.sql | 20 + docs/米糠云接口文档V2.0.docx | Bin 0 -> 181082 bytes run.sh | 3 + tests/Other/PrivacyPhone/MikangyunApiTest.php | 228 +++++++++ tests/Other/PrivacyPhone/test_api.php | 230 +++++++++ 14 files changed, 1722 insertions(+), 6 deletions(-) create mode 100644 AGENTS.md create mode 100644 app/services/other/PrivacyPhoneServices.php create mode 100644 docs/mixcom_php_sdk_v2.0/index.php create mode 100644 docs/mixcom_php_sdk_v2.0/lib/PrivateNumber.php create mode 100644 docs/mixcom_php_sdk_v2.0/readme.txt create mode 100644 docs/privacy_phone_update.sql create mode 100644 docs/米糠云接口文档V2.0.docx create mode 100755 run.sh create mode 100644 tests/Other/PrivacyPhone/MikangyunApiTest.php create mode 100644 tests/Other/PrivacyPhone/test_api.php diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..e4ea31c --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,384 @@ +# AGENTS.md - CRMEB PRO Development Guide + +## Project Overview +CRMEB PRO is an e-commerce system based on ThinkPHP 8.0 + Swoole 4. PHP 8.0+ required. This document provides guidelines for agentic coding assistants working in this codebase. + +--- + +## 1. Build/Lint/Test Commands + +### Application Commands +```bash +# Start Swoole server (main application command) +php think swoole + +# Clear runtime files +php think clear + +# Build route cache +php think optimize:route + +# Build database schema cache +php think optimize:schema +``` + +### Code Generation +```bash +# Generate controller +php think make:controller api@user/User + +# Generate model +php think make:model api@user/User + +# Generate service (app/services/) +php think make:service api@user/User + +# Generate dao (app/dao/) +php think make:dao api@user/User + +# Generate validate class +php think make:validate api@user/User + +# Generate event +php think make:event UserLogin + +# Generate listener +php think make:listener UserLoginListener + +# Generate middleware +php think make:middleware Auth +``` + +### Queue Commands +```bash +# Process queue jobs +php think queue:work + +# Listen to queue +php think queue:listen + +# Retry failed jobs +php think queue:retry + +# List failed jobs +php think queue:failed +``` + +### Dependency Management +```bash +# Install dependencies +composer install + +# Update dependencies +composer update + +# Dump autoload +composer dump-autoload +``` + +--- + +## 2. Code Style Guidelines + +### PSR Standards +- Follows **PSR-2** (Coding Style) and **PSR-4** (Autoloading) + +### Naming Conventions + +| Element | Convention | Example | +|---------|------------|---------| +| Directory | lowercase + underscore | `app/controller/admin` | +| File (.php) | CamelCase or lowercase_underscore | `UserController.php`, `common.php` | +| Class/Interface/Trait | PascalCase | `BaseServices`, `UserDao` | +| Method | camelCase | `getUserInfo()`, `createToken()` | +| Property | camelCase | `$adminInfo`, `$page` | +| Variable | camelCase | `$userId`, `$orderData` | +| Constant | UPPER_SNAKE_CASE | `PASSWORD_BCRYPT`, `MAX_RETRY` | +| Config param | lowercase + underscore | `url_route_on`, `cache.is_gzde` | +| Table/Column | lowercase + underscore | `eb_user`, `user_name` | + +### File Header Template +```php + +// +---------------------------------------------------------------------- + +namespace app\controller\admin; +``` + +### PHP Syntax Rules +1. **Namespace/use blocks** - Insert blank line after use statements +2. **Braces** - Class/method braces on separate lines +3. **Access modifiers** - Required for all methods and properties (`private`, `protected`, `public`) +4. **Parameters** - Comma after each param, not before +5. **Control structures** - Space after keyword (`if (` not `if(`) +6. **Assignment** - Spaces around `=` (`$arr = []`) +7. **Closing tag** - Omit `?>` for pure PHP files +8. **PHP 8.0+ features** - Use nullsafe operator (`$obj?->method()`), named arguments, union types + +--- + +## 3. Architecture Patterns + +### Directory Structure +``` +app/ +├── controller/ # Controllers (extend BaseController) +│ ├── admin/ # Admin panel controllers +│ ├── api/ # API controllers +│ └── supplier/ # Supplier controllers +├── services/ # Business logic layer +├── dao/ # Data access layer +├── model/ # Database models +├── validate/ # Form validation classes +├── http/ +│ └── middleware/ # Middleware classes +└── jobs/ # Queue jobs + +crmeb/ +├── basic/ # Base classes (BaseController, BaseModel, BaseServices) +├── traits/ # Reusable traits +├── services/ # Core services +├── utils/ # Utility classes +└── exceptions/ # Custom exception classes +``` + +### Layer Pattern +``` +Controller -> Service -> Dao -> Model +``` +- **Controller**: Request handling, response formatting, auth checks +- **Service**: Business logic, transaction management +- **Dao**: Data query operations, search conditions +- **Model**: Database operations via ORM + +### Class Naming +- Controllers: `{Name}Controller` (e.g., `StoreProductController`) +- Services: `{Name}Services` (e.g., `StoreProductServices`) +- DAOs: `{Name}Dao` (e.g., `StoreProductDao`) +- Models: `{Name}` (e.g., `StoreProduct`) +- Validates: `{Name}Validate` (e.g., `StoreProductValidate`) + +--- + +## 4. Controller Guidelines + +### Base Controller +```php +use app\controller\admin\AuthController; // extends BaseController + +class ProductController extends AuthController +{ + // Access $this->request via dependency injection + public function index(Request $request): Response + { + // Use $this->success() / $this->fail() for JSON responses + return $this->success(['list' => []]); + } +} +``` + +### Request Data Retrieval +```php +// Single parameter +$id = $this->request->param('id'); + +// Multiple parameters with defaults +[$page, $limit] = $this->request->more(['page/d', 'limit/d']); + +// With default values +[$name, $status] = $this->request->more([ + ['name', ''], + ['status', 0] +], true); +``` + +--- + +## 5. Service Guidelines + +### BaseServices Pattern +```php +namespace app\services\product; + +use app\services\BaseServices; + +class StoreProductServices extends BaseServices +{ + // Inject dao via constructor or magic method __call + public function getInfo(int $id) + { + return $this->dao->get($id); + } +} +``` + +### Dao Injection +Services access Dao via `$this->dao` property (injected via `ServicesTrait`). + +--- + +## 6. Dao Guidelines + +### BaseDao Pattern +```php +namespace app\dao\product; + +use app\dao\BaseDao; + +class StoreProductDao extends BaseDao +{ + protected string $alias = 'product'; // Table alias + protected string $filterateField = []; // Fields to filter from search + + protected function setModel(): string + { + return StoreProduct::class; + } + + // Custom search conditions + public function search(array $where = []) + { + return parent::search($where); + } +} +``` + +--- + +## 7. Model Guidelines + +### BaseModel Pattern +```php +namespace app\model\product; + +use crmeb\basic\BaseModel; +use crmeb\traits\ModelTrait; + +class StoreProduct extends BaseModel +{ + use ModelTrait; + + // Define searchers for field-based queries + protected string $name = 'store_product'; + protected string $pk = 'id'; +} +``` + +--- + +## 8. Validation Guidelines + +### Validate Class Pattern +```php +namespace app\validate\admin\product; + +use think\Validate; + +class StoreProductValidate extends Validate +{ + protected $rule = [ + 'name' => 'require|max:200', + 'price' => 'require|float|egt:0', + ]; + + protected $message = [ + 'name.require' => '请填写商品名称', + 'price.require' => '请填写价格', + ]; +} +``` + +### Validation in Controller +```php +use app\validate\admin\product\StoreProductValidate; + +public function save(StoreProductValidate $validate) +{ + // Validates automatically, throws ValidateException on failure +} +``` + +--- + +## 9. Error Handling + +### Custom Exceptions +```php +// In crmeb/exceptions/ +throw new AuthException('无权限访问', 400); +throw new ApiException('参数错误', 400); +throw new AdminException('操作失败', 400); +``` + +### ExceptionHandle +The app extends ThinkPHP's exception handling to return JSON responses: +```php +// Returns: {"status": 400, "msg": "错误信息", "data": {...}} +``` + +--- + +## 10. Middleware Guidelines + +### Middleware Interface Pattern +```php +namespace app\http\middleware; + +use app\http\middleware\BaseMiddleware; +use app\interfaces\MiddlewareInterface; + +class AuthMiddleware implements MiddlewareInterface +{ + public function handle(Request $request, \Closure $next) + { + // Before logic + $response = $next($request); + // After logic + return $response; + } +} +``` + +--- + +## 11. Important Patterns + +### Transactions +```php +// In services +$this->transaction(function () use ($data) { + $this->save($data); + $this->dao->incUpdate($id, 'views', 1); +}); +``` + +### JSON Response Helper +```php +// Available in controllers via BaseController +return $this->success($data); +return $this->fail('Error message'); +return app('json')->code(500)->make(400, 'msg', $data); +``` + +### Magic Methods in Request +```php +// These are available via __call in Request class +$uid = $this->request->uid(); +$adminInfo = $this->request->adminInfo(); +$tokenData = $this->request->tokenData(); +``` + +--- + +## 12. Type Hints +- Use strict type hints: `public function get(int $id): ?array` +- Return types required for public methods +- Nullable types using `?` prefix diff --git a/app/controller/api/v1/Login.php b/app/controller/api/v1/Login.php index 77f9844..8ef5500 100644 --- a/app/controller/api/v1/Login.php +++ b/app/controller/api/v1/Login.php @@ -211,6 +211,7 @@ class Login */ public function verify(Request $request) { + // 1. 获取请求参数:手机号、验证码类型、防刷校验key、图形验证码类型及校验值 [$phone, $type, $key, $captchaType, $captchaVerification] = $request->postMore([ ['phone', 0], ['type', ''], @@ -219,13 +220,16 @@ class Login ['captchaVerification', ''], ], true); + // 2. 构造缓存Key:防刷校验Key与当前分钟级别的频率限制Key $keyName = 'sms.key.' . $key; $nowKey = 'sms.' . date('YmdHi'); + // 3. 校验请求合法性:检查前端传递的防刷校验Key是否存在于缓存中,防止非法/机器请求 if (!CacheService::has($keyName)) return app('json')->make(401, '发送验证码失败,请刷新页面重新获取'); + // 4. 发送频率限制(分钟级防刷):检查当前一分钟内该接口的调用总次数是否超过配置上限(默认20次) $total = 1; if (CacheService::has($nowKey)) { $total = CacheService::get($nowKey); @@ -233,23 +237,33 @@ class Login return app('json')->success('已发送'); } - //二次验证 + // 二次验证(图形验证码校验,当前代码中被注释) // try { // aj_captcha_check_two($captchaType, $captchaVerification); // } catch (\Throwable $e) { // return app('json')->fail($e->getError()); // } + // 5. 数据验证:使用 RegisterValidates 验证器专门校验手机号格式是否合法 try { validate(RegisterValidates::class)->scene('code')->check(['phone' => $phone]); } catch (ValidateException $e) { return app('json')->fail($e->getError()); } + + // 6. 获取配置:从系统配置中获取验证码的有效时长(单位:分钟),默认1分钟 $time = sys_config('verify_expire_time', 1); + + // 7. 核心业务处理:调用 LoginServices 的 verify 方法,执行如检查是否注册、生成验证码、异步派发短信发送任务等逻辑 $smsCode = $this->services->verify($phone, $type, $time, app()->request->ip()); + + // 8. 结果处理:如果短信验证码生成及派发成功 if ($smsCode) { + // 将验证码写入缓存,设置过期时间(转换为秒) CacheService::set('code_' . $phone, $smsCode, $time * 60); + // 记录/更新当前分钟的接口请求频次(有效期61秒) CacheService::set($nowKey, $total, 61); + // 触发短信发送后的事件(可用于后续扩展业务逻辑) event('sms.sendAfter', [$smsCode, $phone]); return app('json')->success('发送成功'); } else { diff --git a/app/services/order/StoreOrderCreateServices.php b/app/services/order/StoreOrderCreateServices.php index 61c8df1..e2f91c9 100644 --- a/app/services/order/StoreOrderCreateServices.php +++ b/app/services/order/StoreOrderCreateServices.php @@ -21,6 +21,7 @@ use app\services\agent\AgentLevelServices; use app\services\activity\coupon\StoreCouponUserServices; use app\services\agent\DivisionServices; use app\services\other\CityAreaServices; +use app\services\other\PrivacyPhoneServices; use app\services\pay\PayServices; use app\services\product\brand\StoreBrandServices; use app\services\product\category\StoreProductCategoryServices; @@ -196,12 +197,33 @@ class StoreOrderCreateServices extends BaseServices $userAddress = $addressInfo['province'] . ' ' . $addressInfo['city'] . ' ' . $addressInfo['district'] . ' ' . $addressInfo['street'] . ' ' . $addressInfo['detail']; $userLocation = $addressInfo['longitude'] . ' ' . $addressInfo['latitude']; $type = $is_channel == 1 ? 20 : $type; + + $realPhone = $addressInfo['phone']; + $orderUserPhone = $realPhone; + $bindId = ''; + $privatePhoneStatus = 0; + + /** @var PrivacyPhoneServices $privacyPhoneServices */ + $privacyPhoneServices = app()->make(PrivacyPhoneServices::class); + if ($privacyPhoneServices->isEnabled() && $realPhone) { + try { + $privateData = $privacyPhoneServices->bindForOrder($realPhone); + if ($privateData['user_phone']) { + $orderUserPhone = $privateData['user_phone']; + $bindId = $privateData['bind_id']; + $privatePhoneStatus = $privateData['status']; + } + } catch (\Exception $e) { + Log::error('隐私小号绑定失败', ['error' => $e->getMessage()]); + } + } + $orderInfo = [ 'uid' => $uid, 'type' => $type, 'order_id' => $this->getNewOrderId(), 'real_name' => $addressInfo['real_name'], - 'user_phone' => $addressInfo['phone'], + 'user_phone' => $orderUserPhone, 'user_address' => $userAddress, 'user_location' => $userLocation, 'cart_id' => $cartIds, @@ -247,6 +269,8 @@ class StoreOrderCreateServices extends BaseServices 'send_gift_price' => $priceData['sendGiftPrice'], 'send_gift_mark' => $sendGiftMark, 'channel' => $is_channel, + 'private_bind_id' => $bindId, + 'private_phone_status' => $privatePhoneStatus, ]; if ($userInfo['user_type'] == 'wechat' || $userInfo['user_type'] == 'routine') { /** @var WechatUserServices $wechatServices */ @@ -264,7 +288,7 @@ class StoreOrderCreateServices extends BaseServices } $priceData['coupon_id'] = $couponId; - $order = $this->transaction(function () use ($cartIds, $couponId, $orderInfo, $cartInfo, $key, $userInfo, $useIntegral, $priceData, $type, $activity_id, $uid, $addressId, $promotions_give) { + $order = $this->transaction(function () use ($cartIds, $couponId, $orderInfo, $cartInfo, $key, $userInfo, $useIntegral, $priceData, $type, $activity_id, $uid, $addressId, $promotions_give, $realPhone) { //创建订单 $order = $this->dao->save($orderInfo); if ($couponId) { diff --git a/app/services/order/StoreOrderDeliveryServices.php b/app/services/order/StoreOrderDeliveryServices.php index 8f1ceb2..f6104da 100644 --- a/app/services/order/StoreOrderDeliveryServices.php +++ b/app/services/order/StoreOrderDeliveryServices.php @@ -294,7 +294,7 @@ class StoreOrderDeliveryServices extends BaseServices } $expData['com'] = $data['delivery_code']; $expData['to_name'] = $orderInfo['real_name']; - $expData['to_tel'] = $orderInfo['user_phone']; + $expData['to_tel'] = $orderInfo['private_phone'] ?: $orderInfo['user_phone']; $expData['to_addr'] = $orderInfo['user_address']; $expData['from_name'] = $data['to_name']; $expData['from_tel'] = $data['to_tel']; @@ -346,7 +346,7 @@ class StoreOrderDeliveryServices extends BaseServices $expressService = app()->make(ServeServices::class); $expData['kuaidicom'] = $data['delivery_code']; $expData['man_name'] = $orderInfo->real_name; - $expData['phone'] = $orderInfo->user_phone; + $expData['phone'] = $orderInfo->private_phone ?: $orderInfo->user_phone; $expData['address'] = $orderInfo->user_address; $expData['send_real_name'] = $data['to_name']; $expData['send_phone'] = $data['to_tel']; @@ -626,7 +626,7 @@ class StoreOrderDeliveryServices extends BaseServices $expressService = app()->make(ServeServices::class); $expData['com'] = $dumpInfo['com']; $expData['to_name'] = $orderInfo->real_name; - $expData['to_tel'] = $orderInfo->user_phone; + $expData['to_tel'] = $orderInfo->private_phone ?: $orderInfo->user_phone; $expData['to_addr'] = $orderInfo->user_address; $expData['from_name'] = $dumpInfo['from_name']; $expData['from_tel'] = $dumpInfo['from_tel']; diff --git a/app/services/order/StoreOrderTakeServices.php b/app/services/order/StoreOrderTakeServices.php index 1faf0ca..ac54e7b 100644 --- a/app/services/order/StoreOrderTakeServices.php +++ b/app/services/order/StoreOrderTakeServices.php @@ -25,6 +25,7 @@ use app\services\user\member\MemberCardServices; use app\services\user\UserBillServices; use app\services\user\UserBrokerageServices; use app\services\user\UserServices; +use app\services\other\PrivacyPhoneServices; use think\annotation\Inject; use think\exception\ValidateException; use think\facade\Log; @@ -148,6 +149,17 @@ class StoreOrderTakeServices extends BaseServices if (!($res1 && $res2 && $res3)) { throw new ValidateException('收货失败!'); } + // 解绑隐私手机号 (AX模式) + // user_phone存储隐私号, private_bind_id存储真实手机号 + if ($order['private_bind_id'] && $order['private_phone_status'] == 1) { + /** @var PrivacyPhoneServices $privacyPhoneServices */ + $privacyPhoneServices = app()->make(PrivacyPhoneServices::class); + $unbindResult = $privacyPhoneServices->unbindForOrder($order['user_phone'], $order['private_bind_id']); + if ($unbindResult) { + $order->private_phone_status = 0; + $order->save(); + } + } return true; }, $isTran); } diff --git a/app/services/other/PrivacyPhoneServices.php b/app/services/other/PrivacyPhoneServices.php new file mode 100644 index 0000000..d72dd5a --- /dev/null +++ b/app/services/other/PrivacyPhoneServices.php @@ -0,0 +1,329 @@ + +// +---------------------------------------------------------------------- + +declare(strict_types=1); + +namespace app\services\other; + +use app\services\BaseServices; +use think\facade\Log; + +/** + * 隐私小号服务类 (AX模式) + * Class PrivacyPhoneServices + * @package app\services\other + */ +class PrivacyPhoneServices extends BaseServices +{ + /** + * API地址 + */ + private string $apiUrl = 'https://api.mixcom.cn'; + + /** + * 获取AppKey + * @return string + */ + public function getAppKey(): string + { + return sys_config('privacy_phone_appkey', ''); + } + + /** + * 获取AppSecret + * @return string + */ + public function getAppSecret(): string + { + return sys_config('privacy_phone_appsecret', ''); + } + + /** + * 检查功能是否开启 + * @return bool + */ + public function isEnabled(): bool + { + return (bool)sys_config('privacy_phone_status', 0); + } + + /** + * 生成签名 + * @param array $params + * @return string + */ + private function generateSign(array $params): string + { + $secret = $this->getAppSecret(); + if (empty($secret)) { + throw new \Exception('隐私小号AppSecret未配置'); + } + + $params = array_change_key_case($params, CASE_LOWER); + + foreach ($params as $key => $val) { + if ($key == 'c' || $key == 'a' || $key == 'sign') { + unset($params[$key]); + } + if ($val === '') { + unset($params[$key]); + } + } + + ksort($params); + + $data = ''; + foreach ($params as $key => $val) { + $data .= $val; + } + $data .= $secret; + + return strtolower(sha1($data . sha1($secret))); + } + + /** + * 发送POST请求 + * @param string $url + * @param array $params + * @return array + */ + private function post(string $url, array $params): array + { + $params['time'] = time(); + $params['appkey'] = $this->getAppKey(); + $params['sign'] = $this->generateSign($params); + + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_POST, true); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_POSTFIELDS, $params); + curl_setopt($ch, CURLOPT_TIMEOUT, 30); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); + + $response = curl_exec($ch); + $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + $error = curl_error($ch); + curl_close($ch); + + $result = [ + 'http_code' => $httpCode, + 'response' => $response, + 'error' => $error, + 'decoded' => json_decode($response, true) ?? [] + ]; + + Log::info('隐私小号API请求', [ + 'url' => $url, + 'params' => $params, + 'result' => $result + ]); + + return $result; + } + + /** + * 获取可用AX小号 + * @param string $regionCode 区号(可选) + * @return array + */ + public function getAxNumber(string $regionCode = ''): array + { + if (!$this->isEnabled()) { + return []; + } + + $params = []; + if ($regionCode) { + $params['region_code'] = $regionCode; + } + + $url = $this->apiUrl . '/virtual/getaxnumber'; + $result = $this->post($url, $params); + + if ($result['http_code'] !== 200) { + throw new \Exception('获取隐私小号失败:HTTP ' . $result['http_code']); + } + + $data = $result['decoded']; + if (empty($data['success']) || $data['code'] != 200 || empty($data['data'])) { + throw new \Exception('获取隐私小号失败:' . ($data['msg'] ?? '未知错误')); + } + + return $data['data']; + } + + /** + * 获取第一个可用小号 + * @return string|null + */ + public function getFirstAxNumber(): ?string + { + $numbers = $this->getAxNumber(); + return $numbers[0]['number'] ?? null; + } + + /** + * AX绑定 + * @param string $number 隐私小号 + * @param string $aParty A号码(用户手机号) + * @param array $options 可选参数 + * @return array + */ + public function axBind(string $number, string $aParty, array $options = []): array + { + if (!$this->isEnabled()) { + throw new \Exception('隐私小号功能未开启'); + } + + $params = array_merge([ + 'number' => $number, + 'aparty' => $aParty, + 'recording' => 0, + 'recordhinttone' => '', + 'display_call' => 0, + 'callerhinttone' => '', + 'calleehinttone' => '', + 'enddate' => 0, + ], $options); + + $url = $this->apiUrl . '/virtual/axBind'; + $result = $this->post($url, $params); + + if ($result['http_code'] !== 200) { + throw new \Exception('AX绑定失败:HTTP ' . $result['http_code']); + } + + $data = $result['decoded']; + if (empty($data['success']) || $data['code'] != 200) { + throw new \Exception('AX绑定失败:' . ($data['msg'] ?? '未知错误')); + } + + return $data; + } + + /** + * AX解绑 + * @param string $number 隐私小号 + * @param string $aParty A号码(用户手机号) + * @return array + */ + public function unAxBind(string $number, string $aParty): array + { + if (!$this->isEnabled()) { + throw new \Exception('隐私小号功能未开启'); + } + + $params = [ + 'number' => $number, + 'aparty' => $aParty, + ]; + + $url = $this->apiUrl . '/virtual/unAxBind'; + $result = $this->post($url, $params); + + if ($result['http_code'] !== 200) { + throw new \Exception('AX解绑失败:HTTP ' . $result['http_code']); + } + + $data = $result['decoded']; + if (empty($data['success']) || $data['code'] != 200) { + throw new \Exception('AX解绑失败:' . ($data['msg'] ?? '未知错误')); + } + + return $data; + } + + /** + * 订单创建时绑定隐私手机号 + * @param string $realPhone 用户真实手机号 + * @return array ['user_phone' => 隐私号, 'bind_id' => 真实手机号, 'status' => 0] + */ + public function bindForOrder(string $realPhone): array + { + if (!$this->isEnabled()) { + return []; + } + + $result = [ + 'user_phone' => '', + 'bind_id' => '', + 'status' => 0 + ]; + + try { + $number = $this->getFirstAxNumber(); + if (!$number) { + Log::error('获取隐私小号失败:无可用号码'); + return $result; + } + + $bindResult = $this->axBind($number, $realPhone); + + if (!empty($bindResult['success']) && $bindResult['code'] == 200) { + $result = [ + 'user_phone' => $number, + 'bind_id' => $realPhone, + 'status' => 1 + ]; + Log::info('隐私小号绑定成功', [ + 'privacy_phone' => $number, + 'real_phone' => $realPhone + ]); + } + } catch (\Exception $e) { + Log::error('隐私小号绑定异常', [ + 'real_phone' => $realPhone, + 'error' => $e->getMessage() + ]); + } + + return $result; + } + + /** + * 订单完成时解绑隐私手机号 + * @param string $privacyPhone 隐私手机号(user_phone) + * @param string $realPhone 真实手机号(private_bind_id) + * @return bool + */ + public function unbindForOrder(string $privacyPhone, string $realPhone): bool + { + if (!$this->isEnabled()) { + return false; + } + + if (empty($privacyPhone)) { + return false; + } + + try { + $result = $this->unAxBind($privacyPhone, $realPhone); + + if (!empty($result['success']) && $result['code'] == 200) { + Log::info('隐私小号解绑成功', [ + 'privacy_phone' => $privacyPhone, + 'real_phone' => $realPhone + ]); + return true; + } + } catch (\Exception $e) { + Log::error('隐私小号解绑异常', [ + 'privacy_phone' => $privacyPhone, + 'real_phone' => $realPhone, + 'error' => $e->getMessage() + ]); + } + + return false; + } +} diff --git a/docs/mixcom_php_sdk_v2.0/index.php b/docs/mixcom_php_sdk_v2.0/index.php new file mode 100644 index 0000000..5541f34 --- /dev/null +++ b/docs/mixcom_php_sdk_v2.0/index.php @@ -0,0 +1,14 @@ +setAppkey(''); +// 这里设置秘钥 +$pn->setSecret(''); +$result = $pn->countNumber(); +print_r($result); \ No newline at end of file diff --git a/docs/mixcom_php_sdk_v2.0/lib/PrivateNumber.php b/docs/mixcom_php_sdk_v2.0/lib/PrivateNumber.php new file mode 100644 index 0000000..24eb1f0 --- /dev/null +++ b/docs/mixcom_php_sdk_v2.0/lib/PrivateNumber.php @@ -0,0 +1,457 @@ +appkey = $appkey; + } + + /** + * 设置秘钥 + * @param secret + */ + public function setSecret($secret) + { + $this->secret = $secret; + } + + /** + * 获取服务器的时间 + * @return + */ + public function getServerTime() + { + $url = $this->apiurl . "/virtual/getServerTime"; + $json = $this->get($url); + return $json; + } + + /** + * 获取可用的axb号码 + * region_code 区号,如深圳区号为 0755, 通过这个参数查询指定地区的axb号码, 可选 + * 获取号码的优先级: 绑定数量少优先 > 绑定总数少优先 + * @return + */ + public function getAxbNumber($arr = array()) + { + $url = $this->apiurl . "/virtual/getaxbnumber"; + $params = array( + 'region_code' => '', + ); + $params = array_merge($params, $arr); + $json = $this->post($url, $params); + return $json; + } + + /** + * axb号码绑定 + * number 虚拟小号,必选 + * aparty 呼叫方的号码,必选 + * bparty 被叫方的号码,必选 + * recording 是否开启录音,1开启, 0 不开启。使用前请先确定使用了通话录音功能 + * recordhinttone 录音的提示音,可选 + * maxduration 最大通话时长,单位为分钟,到了时间会自动挂断,可选 + * lastminvoice 通话最后一分钟的提示音, 当最大通话时长不为0时有效,可选 + * callerhinttone A拨打X通话前等待音,可选 + * calleeHintTone B拨打X通话前等待音,可选 + * direction 呼叫方向, 可选值0, 1, 2. 0代表可双向呼叫,可选 + * enddate 解绑时间,时间戳格式,可选,0代表不设置解绑时间 + * @return + */ + public function axbBind($arr = array()) + { + $url = $this->apiurl . "/virtual/axbBind"; + $params = array( + 'number' => '', + 'aparty' => '', + 'bparty' => '', + 'recording' => 0, + 'recordhinttone' => '', + 'maxduration' => 0, + 'lastminvoice' => '', + 'callerhinttone' => '', + 'calleeHintTone' => '', + 'direction' => 0, + 'enddate' => 0, + ); + $params = array_merge($params, $arr); + $json = $this->post($url, $params); + return $json; + } + + /** + * axb号码解绑 + * number 虚拟小号,必选 + * aparty 呼叫方的号码,必选 + * bparty 被叫方的号码,必选 + * @return + */ + public function unAxbBind($arr = array()) + { + $url = $this->apiurl . "/virtual/unAxbBind"; + $params = array( + 'number' => '', + 'aparty' => '', + 'bparty' => '', + ); + $params = array_merge($params, $arr); + $json = $this->post($url, $params); + return $json; + } + + /** + * axb号码自动绑定 + * aparty 呼叫方的号码,必选 + * bparty 被叫方的号码,必选 + * recording 是否开启录音,1开启, 0 不开启。使用前请先确定使用了通话录音功能 + * recordhinttone 录音的提示音,可选 + * maxduration 最大通话时长,单位为分钟,到了时间会自动挂断,可选 + * lastminvoice 通话最后一分钟的提示音, 当最大通话时长不为0时有效,可选 + * callerhinttone A拨打X通话前等待音,可选 + * calleeHintTone B拨打X通话前等待音,可选 + * direction 呼叫方向, 可选值0, 1, 2. 0代表可双向呼叫,可选 + * enddate 解绑时间,时间戳格式,可选,0代表不设置解绑时间 + * @return + */ + public function axbAutoBind($arr = array()) + { + $url = $this->apiurl . "/virtual/axbAutoBind"; + $params = array( + 'aparty' => '', + 'bparty' => '', + 'region_code' => '', + 'defregioncode' => '', + 'recording' => 0, + 'recordhinttone' => '', + 'maxduration' => 0, + 'lastminvoice' => '', + 'callerhinttone' => '', + 'calleeHintTone' => '', + 'direction' => 0, + 'enddate' => 0, + ); + $params = array_merge($params, $arr); + $json = $this->post($url, $params); + return $json; + } + + /** + * 获取可用的ax号码 + * region_code 区号,如深圳区号为 0755, 通过这个参数查询指定地区的ax号码, 可选 + * @return + */ + public function getAxNumber($arr = array()) + { + $url = $this->apiurl . "/virtual/getAxNumber"; + $params = array( + 'region_code' => '', + ); + $params = array_merge($params, $arr); + $json = $this->post($url, $params); + return $json; + } + + /** + * ax号码绑定 + * number 虚拟小号,必选 + * aparty 呼叫方的号码,必选 + * recording 是否开启录音,1开启, 0 不开启。使用前请先确定使用了通话录音功能,可选 + * recordhinttone 录音前播放的提示音,可选 + * display_call 是否开启号码透传。默认为0,不开启。1为开启,开启后可能会导致部分通话无法接通,可选 + * callerhinttone A拨打X通话前等待音,可选 + * calleeHintTone B拨打X通话前等待音,可选 + * enddate 解绑时间,时间戳格式,可选,0代表不设置解绑时间 + * @return + */ + public function axBind($arr = array()) + { + $url = $this->apiurl . "/virtual/axBind"; + $params = array( + 'number' => '', + 'aparty' => '', + 'recording' => 0, + 'recordhinttone' => '', + 'display_call' => 0, + 'callerhinttone' => '', + 'calleehinttone' => '', + 'enddate' => 0, + ); + $params = array_merge($params, $arr); + $json = $this->post($url, $params); + return $json; + } + + /** + * ax号码解绑 + * number 虚拟小号,必选 + * aparty 呼叫方的号码,必选 + * @return + */ + public function unAxBind($arr = array()) + { + $url = $this->apiurl . "/virtual/unAxBind"; + $params = array( + 'number' => '', + 'aparty' => '', + ); + $params = array_merge($params, $arr); + $json = $this->post($url, $params); + return $json; + } + + /** + * AX绑定呼出 + * number 虚拟小号,必选 + * aparty 呼叫方的号码,必选 + * bparty 被叫方的号码,必选 + * @return + */ + public function axDialNumber($arr = array()) + { + $url = $this->apiurl . "/virtual/axdialnumber"; + $params = array( + 'number' => '', + 'aparty' => '', + 'bparty' => '', + ); + $params = array_merge($params, $arr); + $json = $this->post($url, $params); + return $json; + } + + /** + * ax号码自动绑定 + * aparty 呼叫方的号码,必选 + * region_code 需要的虚拟小号的区号, 可选 + * display_call 是否开启号码透传。默认为0,不开启。1为开启,开启后可能会导致部分通话无法接通,可选 + * recording 是否开启录音,1开启, 0 不开启。使用前请先确定使用了通话录音功能,可选 + * recordhinttone 录音前播放的提示音,可选 + * callerhinttone A拨打X通话前等待音,可选 + * calleeHintTone B拨打X通话前等待音,可选 + * enddate 解绑时间,时间戳格式,可选,0代表不设置解绑时间 + * @return + */ + public function axAutoBind($arr = array()) + { + $url = $this->apiurl . "/virtual/axAutoBind"; + $params = array( + 'aparty' => '', + 'region_code' => '', + 'defregioncode' => '', + 'display_call' => 0, + 'recording' => 0, + 'recordhinttone' => '', + 'callerhinttone' => '', + 'calleehinttone' => '', + 'enddate' => 0, + ); + $params = array_merge($params, $arr); + $json = $this->post($url, $params); + return $json; + } + + /** + * 挂断指定通话 + * subscriptionid 该通话的绑定关系id + * @return + */ + public function callStop($arr) + { + $url = $this->apiurl . "/virtual/callStop"; + $params = [ + 'subscriptionid' => '', + ]; + $params = array_merge($params, $arr); + $json = $this->post($url, $params); + return $json; + } + + /** + * 获取小号的个数 + * @return + */ + public function countNumber() + { + $url = $this->apiurl . "/virtual/countNumber"; + $params = array(); + $json = $this->post($url, $params); + return $json; + } + + /** + * 查询所有的号码 + * page 需要查询的页数,每页100条数据 + * @return + */ + public function queryAllNumber($arr = array()) + { + $url = $this->apiurl . "/virtual/queryAllNumber"; + $params = array( + 'page' => 1, + ); + $params = array_merge($params, $arr); + $json = $this->post($url, $params); + return $json; + } + + /** + * 查询号码的绑定关系 + * number 虚拟小号,可选 + * aparty 呼叫方的号码,可选 + * bparty 被叫方的号码,可选 + * @return + */ + public function queryBindRelation($arr = array()) + { + $url = $this->apiurl . "/virtual/querybindrelation"; + $params = array( + 'number' => '', + 'aparty' => '', + 'bparty' => '', + ); + $params = array_merge($params, $arr); + $json = $this->post($url, $params); + return $json; + } + + /** + * 查询号码的绑定关系日志 + * number 虚拟小号,可选 + * aparty 呼叫方的号码,可选 + * bparty 被叫方的号码,可选 + * timestart 开始时间,可选 + * timeend 结束时间,可选 + * page 页数,可选 + * @return + */ + public function queryRelationLog($arr = array()) + { + $url = $this->apiurl . "/virtual/queryrelationlog"; + $params = array( + 'number' => '', + 'aparty' => '', + 'bparty' => '', + 'timestart' => 0, + 'timeend' => 0, + 'page' => 1, + ); + $params = array_merge($params, $arr); + $json = $this->post($url, $params); + return $json; + } + + /** + * 查询通话记录 + * number 虚拟小号,可选 + * aparty 呼叫方的号码,可选 + * bparty 被叫方的号码,可选 + * timestart 开始时间,可选 + * timeend 结束时间,可选 + * page 页数,可选 + * @return + */ + public function queryCallRecord($arr = array()) + { + $url = $this->apiurl . "/virtual/querycallrecord"; + $params = array( + 'number' => '', + 'aparty' => '', + 'bparty' => '', + 'timestart' => 0, + 'timeend' => 0, + 'page' => 1, + ); + $params = array_merge($params, $arr); + $json = $this->post($url, $params); + return $json; + } + + /** + * 返回录音的下载链接(在录音未删除之前有效) + * number 虚拟小号,必选 + * callIdentifier 通话录音id,必选 + */ + public function getRecordUrl($arr = array()) + { + $url = $this->apiurl . "/virtual/getrecordurl"; + $params = array( + 'number' => '', + 'callIdentifier' => '', + ); + $params = array_merge($params, $arr); + $json = $this->post($url, $params); + return $json; + } + + private function get($url) + { + $ch = curl_init(); + //设置选项,包括URL + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_HEADER, 0); + + //执行并获取HTML文档内容 + $data = curl_exec($ch); + //释放curl句柄 + curl_close($ch); + return $data; + } + + private function post($url, $params = array()) + { + $params['time'] = time(); + $params['appkey'] = $this->appkey; + $params['sign'] = $this->getSign($params); + + $ch = curl_init(); //初始化curl + curl_setopt($ch, CURLOPT_URL, $url); //抓取指定网页 + curl_setopt($ch, CURLOPT_HEADER, 0); //设置header + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //要求结果为字符串且输出到屏幕上 + curl_setopt($ch, CURLOPT_POST, 1); //post提交方式 + curl_setopt($ch, CURLOPT_POSTFIELDS, $params); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); + $data = curl_exec($ch); //运行curl + curl_close($ch); + return $data; + } + + private function getSign($params) + { + // key转换为小写 + $params = array_change_key_case($params, CASE_LOWER); + // 排除不需要加密的参数 + foreach ($params as $key => $val) { + if ($key == 'c' || $key == 'a' || $key == 'sign') { + // 从数组中移除 + unset($params[$key]); + } + if ($val === '') { + // 空值从数组中移除 + unset($params[$key]); + } + } + // 对key进行排序, 按名称升序 + ksort($params); + // 将数据连接,进行加密 + $data = ''; + foreach ($params as $key => $val) { + $data .= $val; + } + $data .= $this->secret; + $sign = strtolower(sha1($data . sha1($this->secret))); + return $sign; + } +} diff --git a/docs/mixcom_php_sdk_v2.0/readme.txt b/docs/mixcom_php_sdk_v2.0/readme.txt new file mode 100644 index 0000000..9b652a7 --- /dev/null +++ b/docs/mixcom_php_sdk_v2.0/readme.txt @@ -0,0 +1 @@ +隐私保护小号php sdk,不使用composer自动加载的方式执行 \ No newline at end of file diff --git a/docs/privacy_phone_update.sql b/docs/privacy_phone_update.sql new file mode 100644 index 0000000..54a25e0 --- /dev/null +++ b/docs/privacy_phone_update.sql @@ -0,0 +1,20 @@ +-- 隐私手机号功能 - 数据库改动 (AX模式) +-- 执行时间: 2026-04-01 +-- 说明: AX模式下 user_phone 直接存储隐私手机号 +-- private_bind_id 存储真实手机号(用于解绑) +-- private_phone_status 存储绑定状态 + +-- 1. 订单表添加字段 +ALTER TABLE `eb_store_order` +ADD COLUMN `private_bind_id` VARCHAR(18) NOT NULL DEFAULT '' COMMENT '隐私绑定真实手机号(用于解绑)' AFTER `user_address`, +ADD COLUMN `private_phone_status` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '隐私手机绑定状态:0未绑定,1已绑定' AFTER `private_bind_id`; + +-- 2. 系统配置表添加隐私手机号配置 +INSERT INTO `eb_system_config` (`id`, `is_store`, `menu_name`, `type`, `input_type`, `config_tab_id`, `parameter`, `upload_type`, `required`, `width`, `high`, `value`, `info`, `desc`, `sort`, `status`) VALUES +(NULL, 0, 'privacy_phone_status', 'radio', 'input', 1, '0=>关闭\n1=>开启', 0, '', 0, 0, '0', '隐私手机号功能', '开启后订单发货使用隐私手机号', 0, 1), +(NULL, 0, 'privacy_phone_appkey', 'text', 'input', 1, '', 0, 'required:true', 100, 0, '', '米糠云AppKey', '米糠云小号平台AppKey', 0, 1), +(NULL, 0, 'privacy_phone_appsecret', 'text', 'input', 1, '', 0, 'required:true', 100, 0, '', '米糠云AppSecret', '米糠云小号平台AppSecret', 0, 1); + +-- 查询验证 +-- SELECT id, order_id, user_phone, private_bind_id, private_phone_status FROM eb_store_order LIMIT 10; +-- SELECT * FROM eb_system_config WHERE menu_name LIKE 'privacy_phone%'; diff --git a/docs/米糠云接口文档V2.0.docx b/docs/米糠云接口文档V2.0.docx new file mode 100644 index 0000000000000000000000000000000000000000..80635bf4c699f5f9b3d7152adef7ec1c61bb789b GIT binary patch literal 181082 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 z z_(o$AIyem9Y}LXz)_ZFG*&|4#VL8y%_s22&lO?+99zvtX$LdV8U@!KH)I%30EZl5~8w;T;wxZ{R8#lQmM3OEgfAPq8`^ zuI~4)x{G9gYHv4O z9QxhQtla@9jr???++~zb^$x7P{)rvhqHjvyf_O6)>0ByOFGM_-%wmOX!Vcx#m&z5$ zeEJ-!;K0KPRdnjoobvqhj{h2!|JtF>tvY>`PHo&>fLm4Hm{PK16*x_GSE!6G(-`tU)}e?On>mLqO^V-zD|!T%Gr2y(!CP5G)SSBR;y$AX{h;9JMmD4DCuuJ5-Y;} zQAy&ji1npIuE`#byX0~F`J9T;GWlJ!tiBGtdckbedjkxS#hjjLPTQexlaF+TxpBIY zU8nmPSj@L!Wed*Gb6bb+K!rou`%)!JTA2?DOeeIp`vh; zvhb`h-w0Jxa75-vY@+7#;5+d3uhC0TA)IoWz8}|^NGcdcW}xw$Lg5sIu_#6UEL42l z%`cSB!g2en2dPkPzRa0h&?y7Iv_4kA7~)_MIHj+AV6Kh|EXxn(Eg4Hd56yFe5{f;z z3uYw!vK0oz$}GDZTfMd7bD>IR9%>!pZ{GBjq@k6wyDL%w0&s`{{@xyz|3+Lpd87OG zHIu;lyp;Ei_O-MQwEK&Aja+CwZ9H*LNVcq7>uf|GFIg7yqtD7A1$GB+Dq8P+>qpoG zp#TZ`h&VH6RAC9Y_L!i;B?@y|An!xo7^*UY;GzNW_L+sTc=((Tk8aJM(gFCDc9{r6 z0vT4}{$#Ke@m;r^RDTVk7HDx+`>s<5RX4JXXh;4o_==ZW0?KgZ%u~jD#KJuC=19J^ zdDCW@AlJ7NHfHuKR$>qDgUJ)HZ<~IK=`~cN=7+nwR4P_K=>+r}cn zaIHe_?y;1(U=h&mR&KEgs6q+Y&}3}U@|MNFp`~$o1jJXk4iiTsdu7;ZJ^le0A0HFG zN@X!o$b*1A82c!OCCKVx zgDYX3vj*Ad4CFiSsiNN2vj%c01rpz28sc3Wbx-#z3~GzjoZBamJK5b?sntB2Jot&z zvQ0xHkcut_6+SvHeGyHvMzmL{;m~}5YE5)i>Xw|8F@s{{ZahVgt|(`qECRx0L1BzE zQFyu1>b02mfrM+6OtzL{_Jzo;Y*VOU9F00@I7|Lk|4^J`?5K#Qt{TrI#mKa;oIcIC zxn**_`e1dys-IZ*nuZ7ZYS#+}mZwDa2x=ZHhOH9*U6X8fkJRFU#7sagoT@L)wlD0F zAHtL5n-Wkfj}i|JDM)*a6Il9y{DZ|}A_imvJkcuPd7AL`f@s}I>bT|Cv{u&egY42Bbj#T3&w@sgKlsgy`eyUDZn?cG zxE!2H72SPj7b$zyXE$`f_%Og&@@n^2?;Bqq#-jjW{IR~^FEq@Oye;4QA5X>1U-3!I zR^HyZ>~^Q&9ynus__4+OuiG;M0e5kqJNmp1Ye; z$CJyMKFp=bV;Oc-rJwn3f1;tI@w=Ey8>0Q(QnR9{uH{IO*&usD{-@LcmjwPInyvE6 z+Hh0`=wMd)gFO#t^#+KFpYum4F_lt_#3tb2Q;G~zbN1J?h@RKn1~S_l`jHWvM1tTX zKHJ-5+fM0f3muC2uh+Yl3^RQzkV)*u3Pb|icjry+u6Yx0Yij7j~LnY zk-G*wQoF0D*wN2m-}<%R7MS%Mv@6t9KmZ!)v!V=0JLHy`Zmcx;p7x~+9Rn1+s1=<7 zhmlCgbTmjM@+oR0cVNETilui2l#kC5U!e&Jn)sZu9)2O8VxY%Bsv{pyzO_mi!^q%3 zM-%^jwy*{}0hhicd9YWuHzQH42p+w1SJ>HQhN!EC&4%qMhpp+(Bs%1cAnDffFlk~5 zqjECL(SeAl5JVAmz_BsPCbDfb>po+7Dcy32;*+auSX7+%KzVQuc>szeAu7xk`_frgx^TvA>kZy0@_x%&f+75j)-w-6aKCU12nw)Qg-jzuhd?oY>Qn(5dXjIdnQ{7n%YDC9iVwS(W{DWgk{X{3ZPgwTOT zCW%s%32WIqWuv4xy7!7x@bk}7*%WA4sV}SS`iV@JYbvuPJ?`vY0VC&VPKymA5kf%L zmr&GAIx=O0gn}WFxONMbVhj=Mdg#VTz4is0M&bucQ=z{J{WKb>;XrB~HB!{j8MHJg zvp3KcFu|UIY@q{zFu@rA^d5Zz;ipJrf}Ip!;?9_i-8*}bLK$Er4G{tz6(;ms4{y=v zDXX{{BK6Xu6KNmSt0~J+V0Zb#?c$+nGd59WUP&40Bmo(~PUhZdPx-9rYD#0E%Lr~bJfZ|<9l|7qxmP!^B zs>NfJtSsW9-tsQG?+VD*Xb5OzZw9_h`js(m*m^$@{A&tS)c1yj_{9B2gfD93%|`6! zu)0x`$Y-v8ZW&K(iPCY47#|0!-MjsBmW9(iGZ%8*$I!fd{mZiD0~Zt=R{+|C1H6k% z#7AIO6I*&0hDl2EEP_-eAxUTG zP|0|LlRQBMlLYAwg}`9#*mUwrsuBzPfC)WV$D@)ZVE0q7eabL(inf$lW-HldHALQN z@w>^A1_8A&Q>&Q9Wg&@+LaPr4_nTB*kfeD-B`}L5;#`x|1J$Wsg1wf#^Cfj481sx< zT3z|6( zxTauUwFzYWr+af7*`(%Q+`o20M$}xPL=a2`o_JirFZ2@t{2v7DN-|=@fwSH%K4O;_ z;?(T6Dl(!+TaZ+h@mG%9B;b`=FOo4RkeFQW`qfakQ!});>$;eS<)l(B5I+c5grR4Z za+k&8-Er7*RV%X4&hi%&@11Oqt*`LkN9LTFelpJ&pJz&!jQO0=%$}rzEFR%R#naqe z!YeQw=)vnLD6>t5_r}e4P^;QHphdP4oh>4;}-Vmtym1(*0 zN0?;DddAC5dUDUexusX5WYOOrtLZ$(#hZTR%!siCK%1Q7jSo$tr%G-&wWJ*3=LBB&ZA$pPn* z8R3bir*RzsB$WX&F==guxW$+Glwux|)bv&@E;l_?U|R27BI|JXp96 zAtRvxJQjA`*U0X!F^^9Hoo>tIiZ5W5X;}D?_G?KdTjWjFx`Ax0Sb_nFcS1_NuXhfQ z>{4ZTWXpyfT>82pS9deOM>g4M^ZWN4c-Xl@Lin(J8~J?J0y#WoUyWrG?RZ$P;)opi zd*Pm#Go+d>Z>Y7d&hKtDYr10THeOsc*?{p(MWHaHbD`&&<0L& z?>Cbnc1VY#5;kvP-ItsM@btk?b}sQX?QsY0S>&C8N*}n++=5eDu75V1Vlw>Rl6k(Y zPr;W}k8WvBX}+RlNl4x37itp%yg3_2{b1rWuF*2+7iuE?*j2=0ucXrG;o<_^k_>_- zTm;8FKeG^^`UFLRBJBxxrsD*n{EmI>-puhr({i`gG++^n5J@1GA4|H6 z%j*iC1#W*g0e@$R1JeM7=oo26Lb}1UZY=zL6(qxRJOfp2b3ff96x!`Lh2DTNjI1G* zT@m@9g?K?iNfG)%f_9{mX_NETq z&azAoj}T*pnwiX_vlc>x7GedfkI|}^5w29;Z{DJ##x=555tZ6gO~W1m6Mt-NDVlbh z_Vc{n-(g=rctu3aP<;=n(1VD+=mjppuh_zMHIf$6g7b`#n7_}FGv>boe>ar5rVOp_ z-*I1ax0_{{S|=jV~UPwuJ!2l$|tRw&E@)X#aw>s$O~0O_)15sYx1 zq1^_qhw7HT^J4ThC7)fj=j{IbmA$pjb9r6b66NQYtduJTRA+D6#W7aSN>LvM^9b0E9H!neGpMG7Q5 z=CfA^ugl56IgK$6n!=~`DqpmeKM68$1RTjn;R2Z&)%+%WaHB1aX?c#Oh5++^rU6La z&)$3Lcgzx~HlhVzW8nBIX{6x-kZKZ`HeyvY7MsMe=s9rJuSqT%{0BDAa2$?b_)J!{ ze9z@eTwqm@7VBkl%`T<6)Gz&Ih^<@f!yaWyA{fSU5pp3t-31S9I768v0f&p@a?(qI zMJIr>MuKX(OEyUa3yzCLyhYGH+-k8ux#-NY@W?P5SBQloytUeZDf4UAjl1n8RIO~c zED~%GQfTmbt@!NTLcwW9)>1nlnV=rdQ)0_SCt`xvV@tuHWyao%q8RXFN$#d2eBbl* zdL}{^F{kxCJr%lqgg(wRT#@7->uzMMYcSZawp5Swv8O|7R!NfDT1ZK#F@Ix1BuXw@ z_vfMos7rP*=XU08+hdWCg6>O@&#g)^Wuaov=+~L#&jzF&QSxKHuh93!__ew57*fKg zczLRNZ$kGWvWjZ!hOXdtmt#T4E;-)~t(|k3xyNdU4Q8CjXt3jV0*(KLkmn?rneUGJ zUt^BUM#+go5H&e%c}~7fLb4L9new+z^II{4-=DI8UE9)RCI^wiS=m+|pu+>Rf}N}| zRTX~@tZ&FE9!_*N z#jQ=VF(0n*UIZb$hqJ7`hG8T&zY!3gBiYu{H{%!3WPzVm@4zUj_w5g7m${*4{TJZ% z*7d1_CqgvqwrmoMzfXY05o?`=o%j|PKdZU!TUDwcFcN=y)?~nPkO#z+JtoI**zC)v2mmJ+f@yPAXi=b?zW@*drLS&~1yK2W>21N7!uaAiRu*Z0 zl1UrT$&tNiJLAA_SeG%?Lkz`3i6nw~Y2IY@05K5Fs!r3$7P(O&J&hMnr9%z{)_I&$ z1M7Ut>?SfHhOcDBmrca!wKwd}CD<@9nqV91!SU4Wz*DZxTUiA1wG!u}!&%ZjW{FvG z#QqvvcK@)78TBAec}cS1EB?3yiY89x!(rBIhlv^LI1BmIq zWx~sl1l(SLK|9Y4F%z<2CUNk5Y;qc4gHuNc45Va!ZYuoCCQ04KcpQ%FwZSC>u@AFn@l~CCN7)oILmh|P61n7^6Y>E?fpS$dlJR|#MfFDDs}j|Z90*s(ZH(b;P;}OM`oDU3IN1>s2C8H(b4X$ zdDI{UtSBO_flCoWs3$7rFmVp{b~l;CZL|AVzPL4z4ttJZM+;-88xYBHA-)Nj;3c7i zoXxY_7Q_K?6&#*o3g%7iU!ng8#JIV;TNMdOeACU3XjDjxHnHj+8UQD)W->iYZbD)+ zQ(o3ALLt1WLceN{GJoHCAr(#q46YzlEZ%E|Qpmhmuyb0unO@PE)bY;m!~m1XL+Lgn zy?vkyq*BkG6F7W0CF+AZI5qW+XV$?Us2xISIWp*DMHa>opW zQMbuGruCHfCdn@8cB`MF zX0d>BbQ4#y!2SPy*-S=}OUTCaTgz6}-h2D?vOnG$-yT+zn;`a>y&qA@UF5}N8` zNJl~H9fcDI??~ziljL)A#^hX&L zMQ~JI=ofcHCejC#l-jKBcfp>$P0zC?$gw*y(;GDFu!%(B6W?6gPgTIO^)SUeT-Bwc zSfi_wk}J1Xp&c&<9Wxi?5H_3V0r`q0EuWYv*t9P1$eyF*t}UPbyD$*W{u7;TP7=MS ziHT?Je9S0wRKFtk)2yh~tEcrne8E|lg88*)mEmxx++!aGj%us*3op^@`Exj^gxm#z z-yqCM!93RDyEZ*ddS@*Lf)5_6drR2px>s3H0FG|#6g{++HP4;t^V-&UV1OqL^pzg! zh8Ji-urt%VqA|+78j9)AUdX%~s`uhfJN;X}VL@|h4K_FjXIa>WNw(LXt&J_MKhzZ= zjGcPx_vmGthHE&ScOf3oX{s3C4Ztu}%#MZe^Nr6E78lOQct?4nzAh2mIjlei_cufP z?>@;OZ-XwXa`F1Gd!h06a#K8E;I2t<=XX^G8iJQrk-O-cEa}63EkdhJ0)9Qw! z%HtG4b>EFVpASXvAD)++Zx1>a(j1DYQ7)63%aK~EjVT8 zxTvhouxyJoVG4#XYd1G$VJ8+5VEN%96~7ct2!op^c>KXYJ~SD=AGP^M6zxF(YhtiI zh6Kq;*?(c(o-ZRi(t#0tSK`xEvfCMm?(>`#>$Oi0SMag_Y6+^7{!hLGP_H5M{Zv)K zoKoB`<&Xl%AqO8NK^IU^F$m&c+wAGO97NR%zubG$AQ`mZ&y5rX`b-_@PMehkY|N?{ zU!-cElb5r}xdU9|mX=^fx5$=+u~|;$W0bGRk)p{_W)p>Xo|-*!g0k)uAB#~amFJ`( zvHw@r3L4A!TTkU;s@*wN=3IU;T|DM2>)-x@ldJwJ$MW-M)JA$0oVu0GWC~@2X_uD1 z<&oB9=ejW3Yrq+VE=sbbMaZI@KMqc@;;L{xw4#*iszt>!i@jl$MnVfHsp%uHh}tkQ z)Aw$xthn#WgwC28hQo4xmDQZ7Zq+8^Kfzx#^#Y+Uan(0o=?Z_}EaDs%^95RiXeIW} zzot|n>RSnGW`&OOSAX4(ubtDJY1mWywd2>TtJ`UC*FSG$0o1K8 zfVw5@E)NLs{y*qjm(1OygOQX;oDDJW^Oqt;&Z(M74tTfG7q zR@Ht*b|QKD5xQbOR(>^?dwEuUTQF=4Emau^&j}Ql}|s}CrXIonku&$PqDh! zWJx}--uj`Z_0rc!*&kJ*(3d+#RNql{l|@6FwDzNy3ne4V~a$ofrpSGX;T{U}4b4p=y zE2=Afhh^50PFr=`HAVy}e*@8s85`VW(SefF@^_Tr5AKON>*&5%0W1S6|VcP z_>UqNc}+=LmXeHppWePpmbZp0Zk<{E`~%X7Q&52}TF0|RaEMI5t(d;bpo^iD79QMq z7D-S1N77G7x_#u@>)c3$i5sza&^wR=|;0bo$`=Mn9Eb|aHz zuJ$b0FMECer3erNRn%F*uph@-W7xsMEub2=JC<-qhSK5{uutgeYpVGDpW~EXe(hV^ z<0p12cWe27V?S^CRMYKNpl9;h_y_FMYkO5}lZS)6rTY+RtFQg>#gmE#OVQiHZ@wG( z1KeiXdSsQZXn?!0%TPBjIg*)`g1eo@w+gtdN=<(yzCEzPq$Xool zW`{h_0M)80fl5a?e)tEa$wNGb^@sPcSEuYF;blW{f{!mT|uYN0D1kaMA;;24D@ zY<4f9q7_&UP6jP1`$%*F*|3gjiYqrZ9@-zTheOLf6?Y81sD2?PXCD-d`+8}#LB|LS*~u=0`U28}=k;6r*5^b0x0jXR+E;9m3`^ai&| zG}emg1*W;>e?GgL#TF5tvmSn3R-DLutp$^6|L_N^fnS!Jiw@$WdCt5=edi@YSi7b7)tMgO<6lD(V4{9p zC+TqfSORtVB&U2Nee->Zf4!a^QdnLl$aYIkO%GA1T}YTi8mN+fIRH zqz`HOYW7F7<X>4m*39s-mi!?gO#LAllIT|VG z>e?2S;S|=Lyj-V)JYN=V$e;0tlhVu*RMQr}6aXAh1p$BqJ#)TJE^D#{jK^S09u4Dl z7y81kV#DoKCcy{o^s}EkwnN}$3wP@0)~1vLE&v8JL>!5Dz+3_t82MBcTlwhzv0d9X zzw?|$VUG-s$&W3jun6G)9hX8p&_9RP(dG9LVj%vBX0p0N9r|2u3!waB`yb$7w^oFM zj?`{pU=wZFU;Cgd=@;lAyBhIt(72!aIgm_$fdeqne}IGfzraBN&^Bv%6(0Au zvFs~lgF-pk`Tcqds$wuy-eM{w@&DPqc@+yDt2Pdw(o}4fu5veoXuK1gfKlhyyb$nH zcu-!HPcI6ZI@*5@Nyu`r=g5j6%O^C4Rl>fD0qc___)`K_VWIm#=qb9KIdw!f zBu1QH3q|91rtsj<9$Znqz-LMMvZz zqeY4}GA=pVIiYe645Oe94rP^?+x1i=d5W3<)e17APQ0@Mc9eeV_8u+&GQ`0{jUp_> zuPV8pt###Ft^G&5g5N^__{#na&)1y@HK>`v>g-jXg%T&hjM^c$Mi-TLUxQ+=8)*)^ z^|Qnxm!FhnxSeNa#u0l_M?TaRa78^_osATX6k9{eFK1n{m24aY_AC$eg5dVyo1kBy}O3Q5%nc&X@pOC|&u=mnTOwz9r~=po>p zHH&D?xvfaet9yDLy zy+~-v1|_qC3GuWj<_rhnrKlvcp7o+$4uMJDvxzb#Gke%H_-=bh5*_ykg@>`2L5bz0 zmtQz;1Qq)9m0dc-C;_w2Lldml-%8axex+Fs`5S6lZl;Hu$ud){Mn~6a=1cxojJ5xo zXncTF(2RN-#w&_#PA*i>Se0|0I*I}*-xx28!|ret5q#_Z_Hgec9lG}n#t?-#-YGgZ zGhdcH#VCQP2`Kc_!~DAsDG6Xa4CX7XNyD&Pt1!Gejxk{sgK}8ttXDYh90zjvKYCHy zgJ2-My?2M|+m9J``~bci8VvB)WJHFxXb_gIlV!*UH%vQf$CYtcJQUO5nBd2C8buah z`r*QnG7=&)3Gz697IDTYnrtlZ>*~Z+i=g2;(Ou^?=ue(Rw25CW#*V|;*^;Z@`JUkT zK*d5XM>CIAG)4J(xO3a!r(m;@+nedt~w)6|}7*K+wO3%N`ws;hA4*iJX)${m> zFEY@yh_klL%I9l*6<+_G#KffUepmneiF0kIDyaFShw?Lz%n34Xnotu6w(-NiTWq{$ zVVgd6W{Oy9O`<1}v)iL!<9(x%KdY|^Pajj@WPF*fi_XMCOg$noa29D)^-vBMG8(dM$d;t$hU2FBQ)Q^(r~g3-rzO1ENmf|tJQX^#EzViEY^S;0e2 z3Lw5bcqPAtwkTXwe0s$HI(>!}(p-iuIksqgk@|z+i^W{rb2>Mv8vLpdp*<2FSh<41 zE`!ljLbwQ>TXMmV9OAxYGdSwR_u%@PX~Pn>BACy``j5-?g4sCJyMP@?Xvx9#4FCL^ z&FEZ0mV8?5Qr;{?w)Q+oWa58Lt4@aiV)3ydqDt%>ejNK^Z2ShDPXA>Eej6$ZGr*}= zBB(clJ`k0Qx0pA1QxJjRouBOj+pxX>5<0fP1uqf17%UDuhzY}@IiqmHefPn~36i^h zr1H2Z#ikYoFx{%0lAz@o(IEAsH#Uxu&R6lf&W_|>sf#iG9j>fdWD=vB3VoYiN+0v5 z+48=EB=pbfe+&o^8d%I6ce3P8z1eoaE({c05#I8X;_|sBRV`vR90@#BDm>^U77#I;{SeYZvi_>WT3myn8i7J5mNHhYD zx!2^{@F+qK`A~BBDx#+lk*@)PDE)^qUf6WA(d|BqhLS=>^UjN+f|ZO7NBE0slqb4a%yWYDu0t9j8xAM5E~ZzyKMk>%yLr2ldgBW1DTP& zNxztZW4lyszhcOi5T{`B*Jp0dbyD8~+A-r3-Tra^E7LK%AGn-A8z~qWtwWbMC>X7? z`NAH9$coiq$nyArCz$*ngWi-&!grj${4Eq_Uh1#xZFC639z|ukc&?1$i6j~+*8UV( zBbYQ1{j^X}&GOWkvoC{5hIGS_pEN%GPI78VG`O)GJE$qm1v*4@l(`S9cOn<`D5~a} zPuJ&9oi44jBzlkw$jl91lt?j=alVP|h(>D1)<#7LRUAPHL~75BY_TgUPV&h^y;-oH zjulkfWnAn&wt1zCMA=aYxTD77!)UWYMgywbb1Qy%d;ltcL70Le5e=wI>PCMxoPhNY zqLO8Hmtg=U%hJm#1yG|g7L_({m7gWXds#-bU#g)Hl0`Do07dz!zx_@psh)unB{OOHIfNGiqxOW>dLE#qS9hE-+3_d=u=Z-=El9uT}dT?$vRRE3f$V zBKf`Di1ph-jebAbL_8(EfMH1^ST5ZXA~d_~^?X^t?{TCb4v(pvVsgz?GP}zs(~quyn|Z&Li0i{cRLKf69PI7guFph;bwgOF|lD=mbd6CyY!Tf7;L?6 z{BYBJ_1^ap%{=_R8S)ZnCsZsmlli&W+IPN#p=(W2$aaI=Uyp*i_8blZ~=H&|g zY_uN%d>nf7q(wAaSjfmDqbMs0aQfV4XWgSmv=+XBRcQprGC_?E?@!=l&P& z4A^slbjT8*0hVDAayI-GU%*w~;#$|CHG zJLBzHH`tIm?P%aDfmlpe3n&{55g<_HDw~{TTq{wYTrpQanJieWPC}TOU6tdWJ^rg5 z%>_Ysw+yPcLrM^y`yY_wp#i19qUbA3=5Kf|zBW}sRY|Asg|Na3@Awt~?-i&hRoVJ%PXZ4So7}WS*nZwv?Lft zg62-eoC-G@Gc^lPFT)@?E$bw_C>~>IiPU&_JR>co9I#*s31<<|l0ESSKMGd_RRG>W z5ET@B9X$Ro9D#`1MJ9VK2R=t%dh~cPAB=;-j`jb6N7!4khEw-c>!+Ceu+(s0$X+IN zb}5#~s`&t``KZ3|a8;^5s^`)C2c=j)njx@>E|sD7Whj3?;u`ZH!LyMoG`}oJ@s;`c zviXz=03@WVwPOmAzYPb+$`$>@ns;jU&-bf-z1%B5roKl5&Tq;A6e)&untB;}Al!%S z!a9QHnRwou#&30Zzj9&8Is7wg0%T$P4Kiv|5qgt^j9~p~#e5KmUm()SH>i`siq!1f#8@9E4>PBRcR{NjG2?#n-kIr_WP6#;f z28Im9=dsC8S8rD`;GO)Xn}3mraNjb)e~^e7P*m-wUU%yXKrzby3leelUnGL~FA@P7 z#3h&tdhmk#UnIh=RO;(V)QJEQQi7Ctoch3d48ZGKgm(r)P7g)#u!w+ZTn^^PkxC|0Z*|hFAgu7D*$q ztfU3aBIWvqxCpF1BZUos{4eJTNjBfDVQH*C=->N6T3gSnq+TK@gzQc1)R&G)qx`g7 zLOoG2n;7wEv=U=C}kT4KLAwM(U&-coF7zfGH}&{=TZ^Bc8H-$(o&_I_R~(+d)$T%$ub3AEeW6WZS8oA;JvLzW?+o&bC-Cr`+|p}o)jG(Z z07OvAn@(ZGhw(i;aS%1tn0{bZiIgY+v>2g9$j)}X=-b#jqX+wpj<_ude_D6?Yz@SSW??&{Ba0X-sb>bFalPQT)7i~2tEqB zcbC$3ubsU+d-hkeL$vX215!gQDXg8QH;TRM&gIn2+SV!WOKU~9JIT_*o|@UCP`Pij zW5t58Metg3x+Rw-ebGTa5AxI&YppIVt(|a5=7WdZi#!}Qc|~ZMeGKXgK)$K2>(h0c zA^Q}Dh$Vp7BT-Mz2!hNeWoB*6l7BB1D`)M?e-e*{@Z(1Eza;U)*O@`u3W{{81+3R+ ztOUmk|}7$x-Sn2`WgZhs$YUxmZ!M{4?e<>04MRk!2J4)uE5Mv#^IY{7=PmF0}P z*|GF6B7M@{*lEqPiCN=XZak}wSGj;CBALjlWmu6kLTjdjeOYUA&&idlkbp!ED@{@g zHZi|jRZ-C@OjX2IO{7`5-{FD&P;0mucq55CC#aQP4a&OR`no=1Yw)_iw1{gyGd`5< zD$6;lDK*g9uY4iT+W+`w8p@`E(V2^dm8NJ}UBrg5CWdk$fstv=r>=z{$JHvy$u3xR zf%w`6qzW6Z1<8Tqw@1LJpyas3eyO$BvO->%1V>GHib&Z@w8M_dM!zkg^_7YxgtaYcnAe2hC+M(i@GZt2PRZ(~E!> zteY4dr>EXj!1|3XoNtXt?|3 znCGpVJ!cxZ6Hm~tYrK*9e9BXbM!YuixGn%qYN%hI@-KVsW=l1`ciL_4n^?)UuJ=Rh zM?Sft5@FHE-)lJOCF+?P;kWuH<9`0}+!vWr1`6`?27&U}hu>nuV3r9jZ-4y!e7)?L z>J^NO6lsM6zCJo&%U|CRT(K}Ih=WJls9OHf4|qzfUTfGYCyvfUWyVyR(8uXI$@hat z%GdLKe{C%40cSd?sAP&zR46(C7u=o3sYfZcfDk|*#Bj<0qaNseJ2;zD`1e{<;>+>a z9y3nZWc_w#-!Ea@U{07HsC(KmEHcFO2l6dsi_y>Dm=55h#5N{k!npxY?`416+nz4_ zYKK6^RbFDJXP}J1=*8FY?GP-V*ZXLA{;Y3*UBQZ`oK#9LV3n|pp37XSV%7V3_2J+) zp#_u6`V`J;zSQ#L0swkj|Di8)OI~IA_ukD|Q3s&mYixfzyhq?i2=$n2;w9y}QgeZg zn^1GcO69WSJlCCrioyGe@Q~-B+2A1s0GVJMz0vqm_2~j-a$;QK30?i1{Bzdt)~W8t z|E2ch$_V7+W=G|BzGK%SCcCP&rwAKdx&3->drJ{7d-y!5kjpy>b?g%E6n)Jia+4#A z1&GkYU!m+5Ckl63Bl9FXMGrDoy|9Y!h;o`71ULVqb4XQIM)2P&BZ><9RT*@iiYf=y zyzr{y@I^ctc5^2sQF@b2Wfz#8RF~aiuKqwF?{?Fk8Zip(PsuZFDyYL0KP|m9kI0l| zbL7AMjF+yb6#%aN_#2%un$69*d*Kuaq`HJCeWGS@30itPPZm}5^pni5Izqrek0`y( z*8v8u|E(Z6>(mvOF%E3=>W~>swl;$ekWCHqIv2%4 zz&2NYRK>c(?k;KxV7xWh)lPPA^*6%UD*l!M>MRp$Ou#;?;K-(o*dD z378(D7cQy)6PMYmCpW8MAqoKcNA|jdQ7AWFMQHEsVesw?qVin&zsO!i{RJ`%rwF#G zRx#f9Ia>sJDbbA7V)OHGqH-}F)+Sq--s6EN$s_JkWO`axIz2 zy;k<2e6bS_b=@?U%?AQlsU$`6DZi?$ndwHs`RCcFM{Z6@@n_fX0Dv>Gs` zfr~f-+aF|DM-o!*&R$GY+bv-+Ccj{MFm?O|WVdK~%uEJ;81UALk%Dj#hM^1xSz=*t zi=MLLuT{7MFaqR%FapL>iIDj)lVHS#S0)Fz=;DS0%CAuQ+CODP2V4TjgZds!>wuLT|fFlkB9&qz{_6_0B~RH z5QKX!Lmt7AQzY8qTY7HfPdg)@DhsH@gN9oN`h?^%vC|__E@5U-pj0dmpGsC7`oG73 zGKJ-~m|-FdS!RA#wdA}@{9z=Qg#x`d_#atoPj(wF=7uVi>j8mrpmnOwg*nIIPUHow zGK4!fjFwbkB#beI9tkRBG)gFCLBV!}MJqc8@(dhhtO(MImPCo&s*!~48I;o-ricnj zD+5L)fkqrOuAA#o5BiSUpu&|Z0%Ku)Iw=E|{S|t3T-s>|$~yR%=#li{`?lr(z)U6UYNC7g zr1c|H=Otzc2&(!TPvP2@!UvY(`C~RFFqHzD4F6-=_Xj%=T2rvegn}TV2Ns(Y;0%fz zTTMh6U2&{i-8r6X{#CNX!~RjSnkz=PtSfCYB;hzjqzKj1S^vl)i_aT9&KIU4XRfNR zDlg!!zE(PT;(SvQ92c(k1G(DAogMvUN|l9Y3l`gqjssHv-Ot8^G&T@AP|yYgX_K9d z7e?x=tSBT+Pcyf~vwiyD0=xniIm1DLPVMp4^l+8$Z#+J(>j`mKR4acx@C#MVBQmnN z6%C^No>kc7SjF@+ubcPd5=7^JQTCQWb#{xgF7EE`5InfMySux)1qcw_f(LhZcL^Tc zT@#$(Bse6H`vRY=z4ke$>i(iACNh~tF?w|O)3x6@DaU%Zv%uIpWjJImF}wh=hUY^U z&2<}sZ}Y<|T0qApniDz>kzHZsg4QR00HKw;Ru$;#utU|VW87j1PeHcHX#qBlcY1V$ zGSH6Cz%LC}J_p7G-m3x@wai20d3T850mcpBP*cD00x1zDB>0tqU^2vf!WBvwh(h!B zx<~l>n{?;f!>?xzk5vT+mu>5y}hI z!q#*{9%@N_qEJLz>_3uSdntGHAPs3pHGd#T6!K5ltg zMwD6K?P^}?Y#og#sFVGnXM*}ULAYd~eD4DKkXY8J9*S5=qMq(?Y(7%|+J<)(r(hOs zsoZzj3*fqsEpl>1vzkGXu6e^B8wQ8#ba#0{a=6kr$(VA;T~crTf69`F2`_VOBzE*I z`$$`T@%D6Glqr3C0zWrvIqNSnMD%P~E1%~Lfh^e42;cOqMZv3Rd?2oZDon->wl8h+ z`x=gdE5Hk-Ex-ujTwr$S^Nt7|DGN9 zpdJwK<3#Q9eKUF%X0@ols}g8_9rK z^sBlW$(W%kK6G9Ym4QD)mM?$_5#qcV_6Zu zsUx$p$UXA6zWIOKoeRR^$~OrrZG}H2+82~~TUXRpG_`hmWNzWyWofy0SpI!ezcO|A-bY6?!)_Ye)%r?*$(9`e^pYx z(`-g_f$cZa_yE+dyfR{!Kqzid8R}cUD+E~Ic%@+|Lgwu@Zq!N(Lx%k@RP>Nywd92D z^f=<1mOn$EgdZ3Zp!RWF7>wC5z3ZDtX4z+JEt@0F#GmXd$U84i@W%I9DGrm7=ds{e z1B;VS)c8vpImGB{B*sV?iAz6tW%m(qRMwl?U;hGD0tY&7=WUUftt`J#i;A>Z3N_Eo zxRIQmg;T9Q6Xc>a0Hj%iXlTP3#g&A7lZ55{c zBVCoqc|I^9G9yYlh0`E0FIe(rK>Kk(OHZg;tP|+UF!`|lscJ|Pe}!^UlrFNS=p~zb zJnw;(LhgzfU+~?;1JcyoARNxcPYlb5rP>4R(d;1`#yhphKIvgEjd?NjEK@ z?B`OK#a`@Qem98h@i_j+r-M4YDkM%keVnM=@-b2>vuUbFrBkfN7WN>;;+4tX>E zI2EiL=i&iW%2Ww&ItB5fD6G0mSwd|0BNKbha1W*I99>Pi7!RY8hilQ)8BkwSTY?J^ z>e(+M7s&NsAV_;+EbpPVOGG0lNKA$*5rX3b4I;i^d}rA()2m@%&NU1|%?=C{hi{-HDqSx!9mG2AFVB&0RF4cm}zf%HK z@5Ac&iuspT5*0o@HX0a^o9tuFz^wm>mKYk$Mt7*=kTtLUl-%M<$Wckx;c_hu>|NQB z9uld+IN*rzKW~Fl?cx&EC9!!SnpelB8mk~o=s+7614cgpRh0WtJDhuCPx|lC>u`OD zKhqusFdb(sh>{Q+k5tA*$lD|H&l^M5`b{^%PAR;W{z7#BGFinyw7OtCxC8fY`ugsg zU&8BBMBB&V9r2r=H|Mg3wOZ&MS5qxax5mP44_1%g_XIc6q2GT1iA=N5ic6I3lo$a4 z>2{zARHXgIKs=%(mVNcc508_X zC73)cEY{0)%7c*#h;i^y#MdZi`BE!2qJh-mOx=VesQpV-InbOXQ-O^5 zCCPbK`#+PMq>HH3g1WIOVf`lvuJf>rL!R6#+)*hl>;^!f}uwp%#gTJ&-L+ zqUAC|$h(lJVHoho_hvDtj27TQJXLpfwaC-XY&kS!AEP9_1&!@w~{|;>CC4U2j3gYSi4IJ>y2Hv49m-AT;EqyR*U?uLQbuj6{e+pq`bP!t2R;mrH0VN*gyDE*!LQVP4#zNI}1iI_LXx)>~2;Y*yLn zE($!pRD|@wk2gh#=gW~ddyCAEGAyBHwnP6Il$HT0qJ7!J3GT*8ViBf){-cx0bK8U4&>t6X8vgw#|6p$>0PVoVAuYkK83fsn? zXa>!y(YuXXNK7{O@u_KFh-0$xH$d?XE1g+ALJudwZTi5~b+a#gNVk`PS?UX%j%v0q zd|e{8b_QqleuiC|kv+JZaK||w5|1W@ME}|l4&coM*+_p=h#I37Y1;=KMc*?Hogbdd zA8-Q^C;BU4bUGX4Jz3J^cb4DdCDH<)tc5;04-1M`fK|a6{bU1eSLe<@CI7x(%79~F zWnSCD&E&=_KT_b+^tc6?vVB6|Cf9j6^ss};;4gIjJ0^O87vP|Be&_|M9Phk#FTFIx z{Lbh?XoTfd*}%Z->w6e*ak7?xxXtRP=?$e;Oy~GLF=H&FCO}dMKDMdlHqr2$T2`@l z+&|FzpsbGh9r88~Fuk*OcZS60YU<#8%Fwv%4au(~?E{`p{aGKPAIhNY?(5Vs(DnZC zh!pb)`q2sKdAAsy2Qq_Wix4&gRgd@Wz5#r7IwY`!(b$!5kF7m?)7loyE5;o7Mh)p8 zMavTx1F{!z68h{b@ol1qK91s!I?ly5qeSvst~p2o>TT9+Sy7 zgN@iuu{bI^HUtN12&HaOKXfzPt#g<~G4;8F?9!OdjM{ zA_S(cHbw8EgOHDe&e258nn73Cwa4Km*JIiQho@G{&s%aa54(OfL`EDufk%Xkf*W_> zz<_=LzY50!(}5|}j@-|%Ns{}9@#G{du+pH2?I6bhTK-dXHQ`~P=BP?gs@3QxRWM%< zf>SZi{Jrvb$t+@bKZdG;fB;d0>3iwyPe3cVMqE!vM+qn-+va}P(ENOw{4<#64+qIm z79OV4zt!Z#Jk=i`O6@?tet2A>8zsh8-g7LKeaj(IUq(3~AvJLlpqp@Wu)m}_R?*@~ z_6@200{*$VyfI>oPU+|suKe6n_H1m+>z3Rp(Vd*w_(UxxA4)O(Uc34@8>vZL_36J~lQ$czoSE&ZWOYW5Dp zj%`W%k!&{GEqH>w`&LbjA5vAsYoVqOB`CThR(gMO=`Cm16Jh-=K&qD>I6qDj;ozT$ zDZfme0^gZFB76#)^mRLHY4ws0l-E5Po7<58NSVx)BWVI7)}1nkUb|746a|Dd@{;pp=8zkev*P|ZT+zc(L|lTmNfk+0c1?wGnc z)kmVl>=jKH$Qg@<=js4)_np7iww-Ucv0DF5Acolsk@@Vusvp0F<-WBph*Wd`6A+B^ zj4pX?38O)V$y4;VneAf$GOXadYoP1bjWa3o;m!S()#3^^=*g%6CCGPZAkd2LPs6iD zDGts4e*Prj++kw=;bvrh-|FVLg{btBQ@G*HT>szFije1;_oJNr!1ImT>iqEZN@*Sv zSjG{yOokq1OUfSAf%rRtWbW*PG2NJ5%WLrGW-s;HGP5TkPXL}@$Ewh0SlQs{jUt~m z5RSA57X$uoJ8)W_)vCXUWN$3YrN^hQcZXCSVklU_-l9%qO2m2d+y~Mp#F8H(P*5X& z8Tqi9y>~~^NEdd_a#%S%cNiNw9I^W{8|>+&w0X(G`^yfki!OF0FSaS>ZZWsxKU2kr zb3@xJKJ6uQ`}h~Zo&pnVe$rB3yb*otY4~1PX2yi5SLQCHk5afFmh148`@tPq8Ktxz zec5cNce*a&`-VH7gT<EkaP|+GT}+8Z7#Vz_0HsWC6!N32YC%NA)nHR$W3R?sR_I1j;_t=zGPMbM zh|kLlj%Zs*KRKGeQN>nNShsBo#>``oT}@-T7Bf(l3d<98f`!Au9#h!U>cx?Do3V8k zP|sQ+))6Jk9fpQ-j&3Usba$(s)4Q&(c0fL}T&yAOighmbBM_$NQRn4wG>ok)qsNyJ z(ZZ1K#8RZpWNgrYWm{_fF`)?vc650GNkN%3jQd$s9r*?PPH#A&uvN zo>@aKzadx~OiPCvRQi6kRlb&MJ_Pr%#yM!Lp7c3QNg}U+7SYEb0v(sxZF0sV7 z)wT-gKSF$7ZJjEm+k?re8#k4Af=5K9?`xM)p=?fUEBP_Rm#YKPo7+SKCq=;Ak@2K0 zzABBz&n-gBtc4QTo}brjbR9>LmP+K}&CF?!CQ?%daPNLJQiHtY=ea&2>C;^sTvm$q z{BEEE>TDdG83Iv`N~BEAS2$=p*Fh@MCy|gK1srylG#n~7Jge#X-6g2zxs-NRFU7K#GL2U`Fd0wiDV{$T6wD#4J?;9_qfAyXz$DLr#8pj8CanHqZ}r%4 z0a`I~Y=Z{CzKkhGahFUkhtR^5lavPL!UfU}D`*On0nb7mMNPPp7RCxk?ozA!K_!b9 znNVT=J$B-yY;Fi(d;MLVeUEd!AEi+qC$gU^3D&zgaAN1o?@ekizmY*zLAFThiO{u)~D$UolW=(f?; zJeB?Sh7M$&Kdh@`8|rc!q*3Ej`YAL3j)|? zM4G@CkkojUPKBCGODYJL+Y=81?A1Xc?5dfVzlhp|CGXa~P3-B0okZ^!3RR)^tkD*(We%Fbvpn+gY0}%U0m{%rK_dyqfoXm zoZ2@J@ZbpY6*$82S5LM!tvHKKv>nd{_q?QXyfxGFM#1RHBYxg$_i?4_D;6(dra1RHIp%ci`c`( zy=B;_yb?~<722y*RGvR+9Y#9r!qqk&@GQ#~ELypI2c&g?yM>gM8kduvAh9b5fUTEf zHmu;6Ad9yb7mt6J5nXS$!V)0`=JUf7tXk@1FqEuEn(o+Qa6^r#G+>W|`e7wjSc6Km z6aKfyH35NlX?m=z(f$|dI>gSWoij^5?aUVbLgjP#_{iy@*w(Vz*4^`|456&D*=dGv z?8nE$A%J%sw!4%_!G(m!R$CIqMD|*i)j2!d&F@m+lDe$rAcPeA^vt`azIGdR;^9UY z7(W{7f#pe`OeokrE7^1qIGUx%Q2^J07@ZP;ebeg{V#Re(@_lL-#8KuFdo$2?9(srA z18CRz^UcZLh{Tu)(%GU?ZN_IGpidJj#&%`KKUbCaky*kqi0vU}krSBxRw8SVlqng` zd0{~^o$R)1#o?kP_oJleA#^nNlXf%&3B*LAY?k;>JnS@aw+DOvDrqVrErx%OU!*KS z4G^(20|x)*VZ)3WMO3^5be%wRmtR zh!DF-R$o@W!4e^-DmkWEjLaY?~`cqW~m0fK@~SK^sSEtMElwi=JOj!%hX0@snw-kmU4gc{O7_2#1& zX03Wh;sCr7c`k4fGowUJO>Nmg3_a#de`YW2B}N>&#S7}Y_(4~_t24Bf>Kn<@p9z&aG@dc=Z)`nzW(qECsGVbIryJdPl_$jt+TbVWwQ0g0kb;vvW>vkElm zYMJqsP8avwg)K>jlak;1k)UOdn1|p%_)xU1@%zM?@clIeezSDp7t_u>_NB;M&De6LmZpQ6$%1Fgp1ux zNZP)D3dsOF}wM(Kg4t{H9^-X^*Dh>jV^h~y#cKY3)0G!y|Ao=x;YIH0|1lb&qv27@}vnJ=PaLan*`eLnreKM9!#gEH@R z%CC}!P7K&Z($f|s0!VYTS_Jbr+V6kWVi(}FS0Miy71dr;s7(DyozoCuLSco2C8Kq4 zPM9=EQSv4@l&`2+olzHhmy&nRS6D?nvF(o#8(wqLj8d;UY@CM-?fQ27M~#NfeWfjh zXw61IKTBEk(ZyQM&E?iO`aE{<`~d@l$~~;O&3V<)W{+?mpAAVVnOT6d#c>7w9;77c ziHb&6!2D@;5F0sD{EZZ7rPje=VbOfy0Zw^loe8KNSy+O1rIwXNllQO2&WWy1&Ehb3 zdJcL$Y(@5Q>w(rXYn1Xd)5B`az++nd5f=OwnTzu{m?lxdZd;ld6fhR|aps?F^3jss z%i;DVlGYR$zQ<654@0i@ z@Lazse|+U;DV<6e^;}S1Zxux6RM!adozt_j6XyK3`Bp1Rkfd&mM1Jy{ac>N=c2sSZ zWgSYRQCz>wdiY<^Rpqr@mAo$W_O4)+%*-mH03I1bsFdwpo(R-74$x#BoULm(#tClz zPpK>JGFRuxk#ly~cwfwSH@PpHf2f1(IH?bN9pYK3}&$G!6fv~F-4bnX6&A9<)0l>3dF_+LMA zkcuy)?vHyl$>@g(>;!4j97|$3u9N8)4A>2^yPKVXcDfkMrr}>2m(!jkXy?b5Bod=4 zy_uom)Wf-I;x|5a`MPAS(zY%IrqzG-X9tBdQvV5j!m+S}Ew95Az^bGjDgSWOAnH|q z1$G}c|7%GWoBeM~Qb2tr2&+|t=jD6{GE*#0PE)tz;Vp0~b)|kfnXv1)T$dIx!zlP$_tqp18 z1S`RqaMRJ{#&u~PAz}Mtm%5Er`ke>T6X;tI|KKrBhp!BbZ$%A6Ul&((&ufz>LAnX3 z>|DnoLEapwR*U*&x_q6B$dX%K91+8(tcp$Jn5v3_I4RZ(BUdI+LJT^)KKyd8T{)Pw zk85i?Fb%>fse+CGZTx7gop(>4!%KyRRzLh$@1_7lK7CSN@(Dg<+MtqOuo4 z5RAM`_RX|n@p%N?+}vTy5$m3{(W3DibusSBKrW)B7Y5gezov#vE3&+Kxvt%ZO_%WS zGfvpO$cHb`*O*n70HU}@8LNs0Yc@vS)~psC69j~*5RZ)iSQuJAsU|$Ly(5AtavzPk zS7GOXO(^K+PXHX5*SxNHm!LOu)(gp=Ru+op`u& zw4WV{R=*y^pHG6pFYsEQ|Bm*qk7mOE+e>@l!px5JK z?8`}tv#GPHW_Y#I2*SSo+4uaD@pf){wIth8G>j0h4m5LV#7q-qKp@ZCwlkG#33kkg z0c;eyS({Hz{{a^2tQ0#tVV~e*4aqxk?R%Hg>zbpWHv@a;KvoZky-A#Rvv%dG5_eoQ zwbBvm+**Ata97N-FV6m)@x^C2%^rAM8J-1dRnFg5(>MspfyveGewE4SZtHISS~9$d$9# zHP@;tJr$x2@U$tUz_>RYkH^G|28PkLc|PVp1HFHF{e0vE8m-DV$9YCkGp145wQ^K@ zQJp+>B8su_1)65)2q`;yZH5ZpC!Vl% zz<>7Qo=7NJN3Zfe*S=;>JmJ-?x1G5o?uJH12CvUWJ$#882CP&w@&OoK(?=?;``7j@ z^+A(lO{egasUxAOVrSNxZpl5P^;^rO4E#kdHWlk9tTg-wl<25yfdDMvp&PIUzwT(D z*Ytrh?tZG~KC#2PZ>3*b?TrJhythiEapjtbB|p#cj5cy$KRFfup~_HN2%Sum#=Bi| zUW49-xuZQ0-?Kp4`sa+HA^;h^igK~|x@gtYr|V@t%W7-%HDw8o&h1ZqhkPp?+hOH= zzu$9I`XTaavcvt$@l{uVf;_+N2WcxM+Q=RB&ujwpmuNIi3P2pXpE-ZY{2ul|^x=@1 z8JIvKuhXJ9T1pRD)kpuCRrII-=AJ9R*pJt!{THm>Z+wHl^ldqUb`wml zGBW|tt};4bg+pg5xvjSZPE=f$5$0tn4?0VNNh zy93B7q;4%{HZ&a*GjcK(OB$4>R1B(Y?9iK|PUKHH)aBu)?;(1VUo(l~z;ZP#iA8W( zm@741i@)qE!}}ule=@vFRiD>}E;2Ew8Z000Jq+}9l&S@E{&?L_wP@1vwO=Ki#o^fB zshd0rTukv?fI$76CS=oCYcPF5c#q@Q!6M(g!QZnf5n=SCDOtY(8zAIiCKb%mFc*7z zcEV5ZqMM!cjc6V0J129>e_4;}j5?$9jjIfq6X|5TDzAZs-J~sA$R--FAg#9Qn>nVJ z=0}aVRCiPyHy8`2V-%7qCr$)mOjxOg&2KEQrzP)#BX9@w7I32V@XAUNeYGGNE(4 zTP}A@6~y4smsUKoF$or+k2@q$VTeraqhpI!H7ryh>yTFCp zU((FlBQ$kR+rCrSiUG1CFQ&HWstU;AFSog`tG%Dyq5-31xw%Ap^qwDNlVFBp6Oo6X zQ=WuAlg{Wjo;-6R*|N(InS&z0MGmjs)IpV519VqT=Vsmx8aS3=R8c0|60bC$9gKQ+(xoXO%fPI%QKaW4l`` zc>OMbqiLD_m_oY(RC@;Ow%#oPvDxePCH&0}G#Mh17 z|3xd!YhU$n>p)WKrdJ|UxYaJA08no;(Iye3n|}#H0MnbIEGPMai9M`5rO?KetID~4 z37~rK{7v=l5n_6|2_9g+)cRDhi`@XatoZD03(5KqlIsvdT%b+aWKi~e&n0m#28Bdp z2+;0tRIp0}_{+Nxs#WW+UyiE1E6C|SV^GiPM>x201S-$77#s!zY3xfmamp4o_kG~tM z+qHd$j~0F+kX;~_R)nWX&M{Hj+OpNj{BDGdViKgwl?q-Ml-Rt1v{b-9GftM2z;9ee z2pZl*sRy!eTm*sLJi4lz(`$<|p?(Z45j4VR&RGP9_O@ie4%|U4%EptfyzVU>Cy2P5 z!$m49!KVzJ44YMg6#q4GG$MAYEcv*Jz~#s2YRyqV<0;|2!_D}Za8mpN9Adu#iAsER z<4Lb+PIUkLgy-s!=}T;DnQ@v9>xHAvuWmt<;K@)d3GU2AWj9-{9a99157!6$H7^Pl zD?Op~>};lq@}g@+ogIwHuJLaL1QS$R@kW>jI^R98G0xNPlE2xc&+9c0gpz)iS5SmO zq)xKJ^BiOA0U2n9RZ>&J^EV=d(>jrDi3k7Gt0ZQ@F36h0G?$gWKTmdl2y_UQc(Uac z`)mDQhnxIIkqF}f;PNZ9yu9(z=jUU~k1+9tw`Gro)4e6*hO2km0S&tp=@fLfMuLcK z3y z*n(1nz1l9o&heCNl56I;$^GWg4q__>2MfEMHo!6U`0(& z>b-oywrDJ<%=~PPxG2Q&rS3h)PM}(PMczW+{6%0bV$JJn&><`8_=AW#DO@h^Vn=!O>5%+nY$R z325_PeS!GX=yDC3Zy9vZ25(QguPQOc3`56EE<@5-I<&UKLi4YHT-o3|geV)BI18cH zO%gK7_>DcdoK!;b&fRPcL$Gl$bZqX5c5Aqn?-QyU7L@3Twa?U%#w^;%CL2S7)i}NE zf#&h)_9!?W2joPve2?c}H547rLO+~^-@ejBga3l4eU$Jjn1<^v_VRvY@D z&8=Wxw#ofz6r?UrkA&RL?|3%WdG5uw2dgSe?V;6+s+#!iIG+OS<0Lke!#IL^VnOXW z+zFR{xczH_f+kY5L>&C?b>kw4kbos?;62i`VK38)E`K*8M&XVqJyG@3+`1-?h>)Ct zo#uH@XII*kUUW20Togquwwy547MN{yb6GH8oA;hK|eaY;)VA;mAA#*tA(>2Z6#&zgBSHY z)DMif)$`(1`JEqxmW6qIDJF;>B}~AEpKp)E zEJtx;zCe#lpE5CZ2NBntozy&ZYDJ!bei4;;(Y=i{`B!))I%b~3BT&AXhtx>RwV6r> z$9j10GLGL<<#E8c_0D7DSdC2o?G15cgHEZ5*0IH!$` zOO5CxX@IxeDwv&M#BApUMA||aZxngyZB`og>8L^HSf=e~*9mWP1M}t4MIkA9(^12X z6;(~kW3c8|ZDJQ3rM<;V~L9`-QPqsKoOUJt=|TP_JSR za2F2<^PI_$b+k&O?X>MFqE=x>X4c!pXzKorVk176y5*k{-)v{N4-5D z>WxR_&!W*crcoc@PCPpVt$iqOWZJ?+H-PP*#LqZ3>8pT`2qlvCjOK#Jaf?Oyp5KP_ z2o8EKYzlUTSR7Vq=vy|K6((JK)CoU&PdP0uaHiDlR|@oo0O5>~=q`aVFQ$YpEDs^; z+@$sdilY_xCX+QQ$=C@(4y#89(V|&HovdII42nITuqZ;P9A^G$P_ayrSXlkX5Mklj z{(VtGem?!T0EwX7(gRCsPDkn#tjMW93WMMNJftFiem6*^rm3Va><+nrsit`aE0aOM zQ(CR2u4w{%$%Q1s{A!ee-EH6>*t253w_d!)VME=2OGB9JRXYufJ8PKb43&hYCZj|n zTm+GnfUF^tuImii=bKVgh4=Hw^pYi&a;4DE+3W*dBdoQ+=cR8OhTXo{A)L)OJ&Qz% zaKPW0t0-xo=-hzzp9UKmvL;~6TZ=Q`$OmUeFrbht*b>`bcF1zCv@Co`W}`rO|2{VV@ThV76nE)b8bfZayk^#;f|e*yJB={Co$5y?G83h zl*UHbav+}_8VFd5Ukal-+P<{Ygq);u&mQl)=#g4zRpP*L8WL1)&R5p`p2@n3cpgJRqO)}OT zk|%VF4!(ELKcTdK%3lPNK3b=Sik{X_redr07MZ-S{#|GQExxSl0P!R+pH!;n)7PN7 zb+Eej{^SGzObzPHN4L?9Zfg$Gs_jk4ChsW)prDk|iS?uly@NQ5^Ur_s=>3vHe^KV^ z6HuuLXjPX>*SQC`uC}0=A}X`#H1L)G>elr$CMM}F1~OhwWM0j;YgT{u%A*%}XSsr; zGYM4c^7srPo(8h7zpr_@TmKX3HYodXFe|&5&!x6zFc$7W{5VwD*~>Dw+g+EAwO`v; zjhFYB!_6vAKHwHe;tnkZr8TXbzh8^lkQrTTgn&hjJW3*8+KB#Ku^Vmpv}|Ou6Z+h- zvm0`B`?{|w?~}IKULCJ-i<-3Xafiy23kI&msh|rI>6EojdOpWd~!m&8jO$tpJ%qiWrj~VFF+y+JLCD`TSHw0L8B-c z7s=hKD>{MEREB`4uWJK3KfT}`lpD%82qb5!EL>3JshiAZ-!*n6%VGqe;rf1lq?Wrq zLuW(F{y=H+S6BH~#zoWEB09&g@Vs=g>k`yL$_0^F~N}!Q+F)}bnh4}P$vu}TEf0IXq zr3jIB#^PTO(j<+7En(8ko9F$nkq=i$rhUOoLdaBiyLY7&SoJhi^jD6dLw6WX{x7+2 z=ucxlff2|8c{S1gp?th=_TTe>2N-FUD4(ja9CBw7hOlbMwNr_|p)oTTHjynvvI>to zLZ0^&&9^JCmOR)`oUC_ubeb<*bZ>c3OHId^OwXj>S4Ux$_$LHDqX?s{j>oO2MfbT$ zoKWawh5PS*AE29u4aKs`&Rmx3v!Y6131WU={Ux4x$BP|C!tK8FImB(*ulv=!bp5sl z7i{NCUBbDJF*EI<&xF1c0s~n<kJGSD%b?W`eg({A>EirqVzz}XN)5{RxaMXCEZAAj?c{tV~lun$d53Vh7-+HDJECGtnR}TFE_xvmhj=(d-ar9Uvni zcp&*f_kl`w*ceH-*!t`*`S7A5BDsmIqZb5kh5SSiy$KWMl17gIN~ys!emAk<;|3qK zZ;?+!K3_-6zp6Glz4FBiTuS&is}1hW1=__PE6e1?I-S|GXdPN=O9OX?aw_7QpB7Mv z_TBa)qoMeByRr0e9a`7|Yvy0p04M{ol-f@B9_irsJ=If+QzqD3u!CeK4#*X#gabj4?UCfO3Q6#JA<7T=m1{(^#Tb zBN>!@(=yYeEWt(M8mk9>_k(w@=&8^5@D}Yfu8zKhN53@(+CJ(*-~DNO#W&T@Eu{dn zn_Uc$m_CE&GC)nrYwtAE#ntPQ{Rd2H2UwQEYl?hDNcZ4lJ&++EkBP3yvG;igo!!RV zBGq0%-=*`xGdq=hx@G%xdo=_4hs?mapTVE4&kx7%oHF?i!r<|5yF+@g*wg~xM_^KI z&sXM7;cp{mz-EcZ@7+N7?a5sL_6XW3Cy*xkQ3NM9YZZ%ud3u-&J<8OGpn!1JeeDZ#Di|^(%n^2XdCL>YPyc}olsOP_;wEnbbV+z$ znEHls^3I~%wp)A+QnwabKbxHm#aa&)U$2KXNNgd@!*fFYYzi`1w4;kkwa-P@Cuhf* zrDNX%hS~uza_I^Xj}|(U)9+fy1S+R%W#1m2%ch|6)b!N`@8P`oOE&)~St30AdZ^J% z6lBa_jbX?t@mgGfTDYlimfKd6#>#RG>&X3#Qss@{cQ{wR{(W0rtZN9v6BP5#zTh^G zwQFzw8^+N)v76%N*qPEsI?2aY1xbA9wcGXmjCoIu_G zA8SSeLJ-+abDkN^GsA0#5(9;|yoRdEV^Wn;V``?l0ia?ZqBhSmZ>ZXy zC!}^SQ%0orqkpwiX{P^bry|c+zqV8Bi2vVKu%c^<_lVp2Kpcv4ov_+^hzIf|aX|_W z#HUnL%CGn*&i9}GK`H;JugMa-P0jGN<^9G_PCZkxF{d3yGj=D_%oLA8vCE8jk;-tO z`?ECx|F4p2iMco4&wAm{SB--o6Q=eW!4iECrMe)3vu0^_nGjuY5`E6ZG5;ElrUoL| zKMsypbh?Q8#T<4a5M979WE|ir4Jk0{g(c+(S2LCMU8m<#^IEUxGyu8}t|5tZ<5R|) zPhXp*c$zFp4&~Rd;)z0i`!N_dy$Yv`N?di-I!R{nN26)6VZ1CVU`i~7qmVcvR5N<- zeNZhd^C70`hHPYqE+}+GVU<$eeY$7oH8Nme3pX?bMoc93M~hW;gRxLn-G$dS*^N#V z+qzWXcN#RROvG7|-of%S4=3eYlVxzcdfA7be|g!o^R$CoDIDo6@wmyBEP-7(fysw>tmjFm0N;t%mEf}Juw*3C(d~Ow?Kqhi z1D^fY`l@p7~M=l_G0Kz9>A&>DR z!$}Yo!D0hYrv)V*TIgcqw~{ofN(!{e0E2EkBi;iiZnqS;91TC3Xl)3+O2pUY?NMe# zs;Dc)3V&e1MKlril`*=`mm|RNRKfweFG(#QgcDtf#XDOOQ((X%hzub?6<$zHvzPu^@_ogRkK zn#VgL=?QIwBFzYNVGbCFdd1|U%WwURwWZ@+bmY@a&dyiycNL*A$fI;%H5pb-=Awnn ztzi-mS*A@V(_Y17+lGC+v~a9XqznfJ2(cJyIj&)Os z6=bzRKD_r16jocuB(M}W*Fp&Ffr4?AN;9!@mKd*N@UAyGn)vzt#0JWK4k1<3pE9cd zg#7PG9u-GHP3&x%*gtiCmkF=pJTous2(%nJ^a|9CK#8zBn%nn)i=-Iy8aH>xsDcZr z@A*a{sJRRp$P(z7?`_llz@YB_7ElPbw>{RhP?I{D`#Q$>8)j39`st3J+w(Hi#TxW8 z!jb0G3io83_yVXpv>G9w8j^oGcsY^})R9cHiiOD+?VjADX^sWZ1e8T$KI0Gs;&)#Z ztslT9L`r9hgyw@LOp~t1NmT194ZO8Xj4YPOCjw*--fwB`+nzY0&PU=#8*_3nr`5tF zXd-r7Z-)M+3JrC>xlGnFYuk)U`pB+>WPppNbH@V=(~et|IH{6?7rFks-hhfv$A@1F*qI?!k;14?ccr%o`ean`ik>*R4y=edXPhqPnMhUAHcT)d7~1I@ap; zu_eZQ$pF<-TE5yo1XFdMuf6J~3L@bBH9lbx$3=0J^C3m-Lhy@{k z|0rm3=(0hZS{09(d$DD23n)&hgDNbvn+E0kB8i6@%ZOmUd3=DRc;1_(|2#kKlm^(@ zk?S@pqqM%`{-xJ8^^$UAmvey+SE%y@8l$Le@SI{MvStm^QsW71atF4d9@1;p=<&YS z5^eWw*1jI?)5&rTj$l&9rdjL^LY7d8nIG=W0SxVR1t*n%Drzy&O>X6S;P@6CC!KMQ zIDGkEY2&{*I%vP20n%2kTsM`18NQcx2--vd-QI9mr<3sMAHgvu|yr%2<2 zx7gP=5y$ddP{khdIB zcDYq`;xttI6m>&q<6V{E>TfQ$8$ctJWbHCp*TMfPr5Hbw*#*&6RkFA}1-#HLX!jd2XUQ zCfFhzg30yDr)mf9Urio2DFnjb`({XzvMx^Ex%fqt2WNRhk5z_uei8gW$ZUZ{l(+Ok2L>9I! zX4jl1W}L%6|BeAidV-X52JVG>{H?!B-z6sjm>ttJz`@=v{MW%Q#W+}Q^;t-JL@D~% zL~0@!;Ry2`0%eT&R2KhmE|t8f^Ts@@IEOQVnwIt+(>#8Jhd!2+`n$WjBKMo^A`$8Y zYejDra&~NePwJV?0=V86S+QWDEin*-yS7;WgO)LsfjGB1S+DUFaffN3UMH!I& zh{x+^$mrn27jgws|7VsVO+O_cx?TU06 z%*J3LC=cv{BEGdaUn>;Q$qmdi|Y|o}A^v z+5kiu{JZ~;u6GQMw0+lplbP7g#J25ZV%xTD+qP{x>DV?W)`Sz=+L`BB|FzbB-@WUq z>JN9NE9ozt1HbD$zkdHhT^d8bFgQ^Kvz&;54m_^kL9y_pSs;R`GS~xrG#zvI>=Wg| zZl5WL3FD$>rI40~KU6zNoGh%>Jxkca1;wTll|nf`or_f)Bs( zb&i9>n?uVT#935y#?KXY^!wA$*%mm=Lz~IX@0w0ojoBpOYlQcD7(eFJ^_ai(~ zhet>2!y#~|!gWXP@)y7T@q&{ji+eZl_inv_5#VXSy%k|CfMR*8v2?wKf;a`GjL1yx z_fslbtnalO^8^=C$2kC2KB+>*v)MaYNIUhPxz3fyYpjQi)%DR zS_+p(jjGU7DlWP#K>XP%d>%c^##NMcNWek|HDCoaA0U9%Xe}9f`|Z#QdFs0%J+t1i zjopL}8HKS}dn~7rD&$jkGW^pPFZGE`H|BgHmAI{ObR)1BXH({_8M(FM)eva#X3mLL zD?>2!ucu@x=zkLhKR>^AH{<{uJuvp~(9S+iZ-sl?>;d!83H|dv0Bv#UhqH?x=*Bc!x!f4<#ka~f#-Lnf@kQ&2a3Z2x6?18*#5Q!g^Neq4zkko5ahqJO` z2ugkn1jp}XI;Mt!xdT5Y2L5+QuyIEob$pA~RUUz4!P5o0@drocPKe$2MuDtgQiyMp zbp3CHlXR2^=+^!z>a=c@CkyYJ)Z57m$kr1;0xJQdO)Jhe{eY$MD@X$?YAybUoDj$dG(36# zWhcPL02=Mzt`VJ&fwNRzuson0|AWy#V_=G;1qF+%4HHwN^i84m{lzAB;?QWwO_BN5 z=S}D`M1Em@vo*g0)JJ`Lc5r;Y0kB3>28l{=46XOut+X8`G&n$06Vr!OQ2a2v$r}qK zh0oyD(4`1v7_}LOzB!(&YJ?u1D?XDDK(COVQqG*+;SVGmQwz`HhHMpSNDw5*C?m>T zNI0!x6&bgtJt*i)lr34{$=3ATeV=A=Te9VmJF-pKZ}~sAP^&M@QsaGXpUi9R zRIvcRuPM%YD;0D{ziua3{a6C+D6^4DUk0nF!!g=(-qa+vhBO|G$VcxUuK~iCZp`}KoF<1Gfp}E7UB{`oB=P^ZF{-N2(YZW=aMLFR^5ak@6+E? zP@aE>iKQa&Z$r>Fxqq#`^4|XKT3phINvM_!|F}%Qafp@rpXJm-@*>nn=vgN=5Cn|e z#?awTP^0MopL?n2_mA^**C_^9(B^dGUO(4f9}Y=tthQ?lZt#w_G}(wf)NTx+R58Fw zIZ`K!=+hGwOJ$^+ivZP;RS#n4dI=endZc=|!^EB67#N7->~4FFM*SE}o@kja0B@?@ z{o0n7n+lgMEsGW{MJb)6ilY`?E|<*@FV&BjGo3vBvYJKg58EHiwZ}c>lSd8~#r?Tr z+%O3KfBs~7{RG$Le5wy#-8BR4{RV}2IBp?K<68t56+KMYnY>q?e;pnU;ZUTLliC;@ z4$6_7p*Mqt)JR~*^=r-Mk5CX#;dEI>q|Bm9Sd*M6LSoQ8Q<4)ornyCcUi_KQiC5=fT^_%j$&xZ>UZb3}gVEHwsvs+joA zf%g%DSLJthd75QY=B`1+k=)J#DyNgcoR>MZB=7STHxLaezs#-{oXdD%i3EBFy@qg# zi36xRnTZPH1O{MZDfkx^!kT?JQzXIgcsD3+8ffUjRN!aEc}zM2-8k+-gKE%#C@+MC^W_w?nT*dD*AGq7!z_!Ba5KgGzZz=iMRoc zl8}>#vEtAAgS6*aT>&JF`jGS3C}n9-G~Z)Sq2-2B?CMkJSo5L|wIR(v9O}=GT)Tfyc_t~4=Lw_eehi2Ys4By&fAb7XIbvR7Lcvl zai$9`IouHkvUN^y8vk5pY{@acdLgLJQk_6GLekD`T&erTzxcxm;$?M>+tlT21>k{$ zz6a@*EP9@)ypA{7pYi9BPlU5QJ7%2qTpCh4mz8T!H` zaCuM~PHw(T206gfx&uM1ugt(+kV=qdpEHa)qkMZ71|}c~?JVeCoM8;n{qri|NyR|H zK%s5D!1;`)H4Cq1E&R8vB@Bt4CS6bATCpf6)8LM}ly3E7Uw^D-?ifSL#xG6PtUUVVdXEv)06!3lG?pV_EFT}Vegts+J;oQUAp~%BJ7){DCw*!*%fG7F z8E-jv6?rBnJNa#og-vqieJ))R;Z??ad zkET-LJKI9&WB)xvy#>c>Ql64@{hi(s?o`{VwcKnew%^V$CM>;nSY2H`n4tM_{yEw~ z`Lug9T@WV^WQ)qnxHlDWdkdxOvbq7{rf+wktqj{?=`9!MRau909=EXhxc?lTAbHzS zO%KGAbJ@i`0QLxL8m*0%mNyaL{v^wNFTCw;#qDbOyz(dtoKMx){m&F9h}XXd5v*JP z>ofJX@cGYZJ^Ogx6VQpd5wU*!*4KZlSCYw%3mr|RG0;GuD@TKz*yX33Z63$*EC%6b z8m$Oqkj+BxDTkJjIpT1L)}Rr7C?Sy6S&*5eJU~utR~U|16ZqKaMW~#kqG*hR{T$iT zu%S=H#EvNq75Wv-jMjZ!4LSy1>Dua2n{27G3kSoV;-Og6F24PStIv#2Vd&wl0fjLS?f|~gn~-F61@X-zHGAL&uZy?4FQ5{JO+R^x#! zH?I~Wa@Q-CWGxRi;>&e55;(VUpM%=-w}WGuTni!DJ!YxpW=`n=?x=i8Rjt`i2vdlN z%UF%l`U#XGeJ%shlRM1w&19?X{inLzl;~rA1Ok!_Pj)>c3Nms_&jb_^f@Dy_$}#~` z2O0PZLC14{>j^C^k!NRCMuBRxH`ac_Yj`!yX#UBQh93z`9OgRTM{BcBU*~fH@IVtG zZdCMXT-xl;gn(w-^=^6nTTvffbDb4D=w9v-?-9?#lkIzZn^_Gt2KuG#XWhf;VK5k< zcE^}q9&0ITvjc2gzIHu}>RL#jxDC7*PTC3!SM#UyOI4GF5pC(1kVAW-1Ex&Q^PNa7 zl5v57J&CP{@ipd+a$v-7JDK3Yld7YX``d3|m0!W*`w4^F{PySj{!#5Hju`MZ78=GIU42ci7ycZP0@QfDYjN{$z(qp5{QSEh*w_B*ph*WBDl(>a zUbdGd&0ML9gV@Cz2I++ZpCiWgCcj5RTW=-u(_4w_>gV~V01t=~Hr7&i_GpZbQm@A( zFZx`X4AZ5&@1<1QL8a)pLayMZ&?3K?g4lrI{Jr{XJVnRX&g|1xzX@v%Oy-Ykq@1-w zWtGIHIxu10oz4C}|9)lfc2n;RyOFXGjHEMU`-#v^!)wL!D*IH3jWyvQ)832j_vw)YNIHY(zhH=_bu*3n`N^CwI^TUG%zG;=u7sQ}U)zbqiKL*5IL5>$pO8 z2I}MMGG`y%fUA&4UjNW(6sQF4phew)wRBpApfbLl~3>gKWZX*T#c?{0JG zQ|s(%b|2|{{3e;8PWFECd>I`XD`ZOf0J^mz%8Civ!S%J?;rNGMWPit_6|*FSi||dz zeIfaC5=R*i_W@1Ss8FNBFQYr?NH7|H8#TU&ATnrJt7DZ7MsLS`WPVc9Gu7|awq-V* zAIyt&ijfH0u&qP`l=LL!i_koY`(v-)lc5~EH z2Zs?{+B};`*2~k+7Z>)WM~Tizg!>op8f;;Ta!Aj+8v-6=r7A*p-i_|PYt+6%qzM-pgwx-Q>oA=v1U^ZQMXiHv0#dYHq^LVZl5b!2n9kA zF+_}h#Oo9He>l_?lBx{AaFaVak|{;7hZCbRMhlG}b&J29n!j@-->Hy{GM|{wKQx;w zJu)@4+lH7<7x6Ntk|ryVJmjd%d(hY;;?#5=6aM%@vS1k9NB0R5L#1-2)47xTohZKM z4sQ_@4h=@)j#i(UH-~>UUpUZ&fn?yk&MLACwlz>+y<3|=Uu6kI*%lv*B#WpC-%u!^ zwpKvXbkeuOZAOjDbgQH1_Wj`8)3lQXR{wct;DSPaI>eM8oK~IINMGi%^9=?wZB1h5 z1f9A98yjIcOuxjha+LjJ1UWA&Dh}HuTJtoq1?8PQA*QDTbY^_rxH_&@Rdmg* z{~(#uv9&X-IBt5P!w}^-T#8%K5CnP{$=p5@ZyBrQ*3ypltu92*>ge)oI>-bS!S)nn zvsS}}C^oXDCeRF4(CtnOM`1QWgoHV!4~^#NcMbBYuKZ@@(Slr|1iJi8mMZrOxtc$s z`X<=S%hD0qgfRy)-GJPlzCpLcb3~st!lC-lhf;UxPibS`R7EP(520QCSXM`;D|N!I ztIX4jTLTe8#I5n`#o4DpArKA)x|xa9{=tAO3F*2c*zi@LbGA?8r1RDfY z-l>kjvKe%_f`j&^07mILWI2@w{C~_@l{yPzQ*Sux_l8}y+7+J8Bkw6_Hip6^`;Ca9 z#Qg{&RqXcNn~0h?dI(Aw5yRY3B7(wQ@Z({Tv$_1NXWw*toWRZiQI=DbNY<4f8xC8BBBSb!Q>C% zi3$n|P$dFBxy<8ApRpO#hNC#)rxviu)hc9Ek$u`yX=xcJBCq{A^tKyO>8oxe+xwlb z`YN<(-3yN0OA|m|kr}cuM%<8MsDj(+Uy{4qJ$tv{{}#{>@9Y`kq9+Eja^7+vfcu#w zl0+IpoldSj4FjtwF!3Osp(T+hNq|xGJ<+&7OF06&Tl3?=h_D@d z%xc5CW#k0ao(I|6x}6Z!cObPKLCbu_g~(D7DK@tTm~7@L&&=UNMpftH0pe@W25{I! zEWKX-fqjUZw%6YAmf+)i`dz3ZLzV3L@i@HD0zRek=tBbEN0dra2anhc8L%OhGCX#1V9kmNtmg7qpW7L zx`t=O0E4w5)b4WUCn&L+ym0x!C=sErRL46*D0-Txh?onbv*_mAdXVSjJP?KD_1KDj zh$p{@8^VQho=^D&=`mAn*z=V6?PY4z5E(oE@3(|&J;>SVw`b~r?b{w@-CQT=0B`H7-D0j1-dnrv+do>wkZAi_p%|PE11zl#AGTjwu zn4Mj)V&{DR!I7!nMGQCfH>%yiB`?Q--H(vnKJRAC@mEemmzK=Iubn@DfPZwdHY-X=2$c`RlUV-~Q4I5W@C~K&sfT6Z$%m z;F-2Dz)d4*V@_IXA-ttD?FOyPn2g$Fzm^Gs#xDid$%4Dh!0X-qes{3+l5o9%uE+89 zZ_jpfU7cgq7a1)#nqPSeu(?3jt8&jzd}1>9-`G~0w$%+bC(z~r_M8niSCQ*+r7@h zgH&R~X_9kDP?j~Jh}CBhIAn%u`?49+RmqH0{@b94Y|!q*!@<;>Gm#jhNf3UzX-yO} z3Xbhx>2c~ii`qX!P<2-M5(DG?z@7YgO;QEx3;V3{%}?W+l&%Yg^R(>xf))O-$(t^e zzD#L5&B%*BN1P1IGO8D@No>K)i;4e6^ufpTkC=291*DE>M0~FDt1P!gdaAuYWE&Jq z@3-pc8}x5YTR3kZ{S})XtDK>(YT$SDnI%LqWb4FZGZ&!{OBGyhv4+2>W}*)=!7knH z_Qs~4jl+|v=XM-Y4XlzTs06j(SdhqIDci7|t!`ImgROm+8XSbe1pvI0v!TfRhXM3f%3X3ofWB7Osl;P-NCh1ZmOtEtgM(U8S0=zWKX&)!vFw zt=aPLzh3Aiy@^-SN8${r*ico`iL1xBmF?qJ*L!Xf32Bt(zrBzEVb~=7l-uHmx0VL; zQ^T4HXK&s?G8SD9=7cQfn*#L2gPg&K`-LOz!T+BjdJ@L8!ZrQe8xNFbC9bA&1`1Wl zud8%9c{{yRH~%%NHD!gFuyCHVV0SZF%I1+w&Z=W*(mZ52stOyV!d}|HWf|u>-t42( zt9O6R2himSSslLo^to}XwW;^LvTZnqbBF%l9!PLFGp@K)T8!11;`g`ME~;wS7U$F` z;)B88{*9R!EH4~tHO67NbN6j?En6=}3SR+cO00PXZHqwDtj$o+$h)z`D=M_ws?W?LdoznmwOkuwaI@gzdgX8cG2yu z`U-q@C0%9pRu)*licyYr&c%S0U4dDw$GnPJ_pfb|!XUz|Om$g%a?^rIi&?KDU$_2f zr_l{L-B^mFD|JsBoI~=VPpq#(Sf5e6bUhK6P2alYC@zwnMup}asGvW^yPm}d$;t=> zGPM39U|gcYH|GX8$sc&adkw*GR^d_TU2Rq;aW!a%p%niw>+@Un%ld%V4h^riCsfzn z)*9*eQI|r_A^7Uc3@})f^P`mjNiTa?=B+YtG=sdGKO+e%NSuT73_$aGVL@7Y2z5Bg z%mL=tuwCIJJE2x87!04OpSq(fC229CE{qGOd8AsAUbC>P!5bd1Uadag=ATX!5VrV1 zNVmeFE}Qs=^PLz}Ww7A86ITQQu8&40;3)3@?Rq}qOK#wP3GS|zU0JcYjl3C5wZ2r> zcLE$WVzQt1@J+-Kz|T$L0ysZbrk^9XcEO7gZiN#3#lcK`G1F+)e3He4C^0FY6F|!r zO%j#{Sf{v_@B^5`*xH8(1fG-^=kNNfPH19JMDnf_G@~_nCiw_yZ)HZ$!`ekR#JgYu zX#(PwHwB1pL?SxF-4N#6u^5Hc#NwCS-p$KYL?ZW_H_EOc&?HxIRex(%ui6pD?tNLF zq5mjl1LV&SUxUvN-n9)vv(xAHWO-k^-dmcLjg5EVLsfWSDb2(iJ5_J{D8A^m*m*E>ljqj`ut2n}7MzUv(cB)Cy%=`3~#IiDYkhy)k`M zxpfmoO$5cb-mjFMHZgZRs~O3dK}{4CA^_Q-PYtw_-+>Us5y4_?a}ne*u1OegjnXgD z5|W{>&ytX8MKoG=tlJ|ZQ6ntOYgh~t9k^zM1!>JUPFvXxh&~}pC~l<>7kxm|@b@;P zyGCNF3&}A5VRRceCCDm!7h!SAxJGhNS(>~nq2Dfq7CYxiOb$nSY`4CR@pWu>wYwWi`E14UXqU(EJj?y^WBM^wAG4~Zf1Hrzl=}c4{tva|z9kT8|z_8a!N>_U< zAqqCdi##!ouPb!G;duj?qmf0u8J28or-CV5Dmuf}S!d^Zbau|@AQOuS5YmlNP*dwv z?5Q^;(ivtJG`OW2>{=0Af>nWc*J=JQegzcC_LNR&x=6>dI^sSd+S;H_V6sJrv9)jZ z4OVSVIiBB?TYW5-&$yM8Bo?kLR|UF(-uf$gsy2t{`^e&r4!&6mvMZCT-WB$q(f?Sh zK)rOOZI8|uk4?W`z!m8Sq69|FirkT@;CbGnX)^Q8#muXBy|m> z$Ng6wqi9fJIO?O!C!;iRA3kgn7+}=kNo+dzgYVQ`SoO~$IM01yJ^AYz1MAf0*<=aP zh$jufG70|TlAQctvfNT!deP6H6hF6OuR8H&2mG-|i^R+~j))FO)^A}6jXB5OuM3fG z{>0~b7?ER0pXQ6E;ja6%MY-Vg=?Uz|{h(XA}n1nkvs3>S461C5kA|kmMvZe7H zyGcN3qAKiLWG$hPj}2TDW>eXLbS|Y`Ule6sWKCBe<6Tr;?^fyY881X3$=te8EVj1x z4uwrY8c`I%l##v=f2NOVKH)yY(evX;Ey-6<^h*W(YOb}swQ{}ivDRUSwN9e1&w*`x z&mBIHjjrVTG4ly{cUbLoTw-qwsHNcx)q4Fr@Zb*nMR2+-sjAHEx|{|)4@|qr#9VGAOia7=C#R;J*08g1a~s7MPDTHbr#U~(yq`aD>U3I~JbP(i zn}@uUUzeTJm(9y)RQbgS%JH;Jkk?TY;9#2H7dka~S#+r9wKThsI0)us9j!x|%84;? zV+g{SmsNr;&1F8z9FERklOT$EsnmMmFFh2#Y+hF1ogx{hPtpky%cY;Q`V48*JBsLa` zXq?bo!kWnt-S(o?K=L%5TFIWI*4ZEBxtPThxDztF4LcV?@cL(^bElew590PWeNtRK zv&|!2Kb3yK|^TJl)2%hd_!Ce_C;0?G%aJXiYpI|BLg!zf64qR_H|AP zl^~-$lW(};WN1Z`5xE^yKT9){g@MygE^D8nSa3k5Wai9>4YFs0^bFl4ILqm9M(al> zQV(Dwab;@_W5o8NmV$Drif8OAnP|^M=@Lwa6CaI}iLLKMvy-ao*u|ybgw(aSl^^W% z(tlmJoNPYGe)SFgCUtx9esW4z`AE0twea2_|ex0vSlho{cwLR{V6Wo=CuUk$^u z3lMuklFXCvOg_Cn`7E855Y?WgWfJRW^4AOMauGXYa_(AmrmAgGpeoiD4=*a`doVToG7{o-be(v;i8XH-+>(z42bclK@oHkBs z|9U-YADA>*-QK5eB{-WJ@THn^N2IWS`)Yg59Pz8BveY_z7MV@!V+O$ri6|$ zP&Ax~IionbI;bnBb;Nv?nSe<*JOdDqu0<)41a1OT*gfA12 z-G*@C0b8AUoXN^ehudWValUy08|%8Bg_%x=%3?M=iGrb*gc-05F9u{cxv$@%rebSm z=xMIwl{YrW%qCyh7GC$g!?`ES5Pm9>Y)3w#`AY85FZ6K8P_IJySEya69k^@Wk=@sW zODfN=S5>I-KD)17(l>2$oo)@D9*DkXI&ZjVISd)-my{Ey3oP2)8)@qMot>K2jo_+p zKMZ*n^hd9CX0ZF^5b=;?Z+FMeZEQ;3nCJ{&x`gu10&E2>Q)!`B8F<)!RkG$fCec1S=aZX4B`r5t`Xom;aY?D7^lEpoW=NVq#8K8F882q<}lMdK56!;Gf#fq%ae=WxE>o6L@8|CYsQ;y+kX8IOGR`cN__9RcW$NV= zVyDpaAL|S7hJfJts__l3gvY0&^E??967FU`rH>D2yDgxSA5_XvLTfw13?=9u6Ll_X zFoZa(o&J$2i2PHF)&UMmi@@WPmj))?U56|hn0`i*!ovR5@Y0rR!z-ZOTxb?CFeLFd z8yjH?4}1(flg0kMMf8hsaKu;|);#@pUAel5>fKqhhmszXYChfGmr?F7#qN8M;zy4{ zkB#punuHBeFI*~P;CmsJEthGjD$!&Uy-kCagO!L)V_Sj!xI0Q;;mubiE<3TM;ak`I z(Pi&}oI?pcd~_w7(wf@J7O>%2r2~qv?(r;r|3S2O0|vRSKq7L6$?uYF)Yf-64%!ih z`kWr%onE8&aTi_Rt>f+8?D2WC^dgHNO4ZJ4>Kl6fW_y_3IGm1(G&y)Yx9=2h^JDL% zw%&d1=_0}XbalE~H_SBLlxVauRMI^KpNie(^?>E}g3{i~N`b(eFlS6C&JbRG)j{C- zD|SPn1-DD+dYg3f0v9QE3|)Pg=m{9GI(lP-+}`O=CB$Uauj6WAZh&ihB>3Ln0I#df zL`$8nTV?(ERA~RPHT~Yh#)B|@)&O&PpfW?Nh@O-+N@IyqoVF;7svPE07gAWxPb-_{ zZ5lO_I*9LpSX!xDcC;C0$*q53cuJKx@J4mMNBqoU%3rF9-}rffqyc8J7Or0G_3f;t z0d8Gs6c77{jGl#_czSSCFCXr*LwLLtArCWm8e&^#O|JNOt~g1^E|FkhIsw1nq(xK0 zF{WbMfqqThQr7|wS8)k3uPgBvnrm-ayK9ebx}J?HrIyFn_{jPNo$D!G#Lk=fNd#al&YHWmbA7IlieRKL>7(SGD>fzMEv9g26_)o#iKwG2oc{83Iha@jCzG442;hsTW>+I^)n%!XK4r4)rmyiKt)4+jM(Pkc4sy1i(AeYDWp3ODc7RSp(>z7@BSqpj z3NaTJ_<^2ta~CG2QC*6QZ_ z8rrPOM)%Y%*OKqTMKL56foCYKCg`h4xlhAxEUcSr? zO>RHL5JPj>pV=zK7hu&jWC<4}l7G7B-qkY+bRJEiR3L6U+8{pS8AK@-11a!je_4JR zeTwn;23AikZNGBSaD9{Lzq+QQ_S?wuUhxLZH15Lx6w+FN|D%wm-%`Ba{(yH|5Vt!i zA>a+YOcL%ACQYg)t3qXvRYMgx@I*i+lT}A@>`%>VYKq{?0nA`;=vvP=%@DUgK4B_vf>)I z4RPs$l0N^`GC4;+TI3}~RRDNG{*E-R5Nea3Dh(h$y#TO{o7>{DxCi~zZW;MS51E2= zsg6o6T(Re)K2suxBO;#1)5iKCM`RNmTYMw!YtxR2ZT*tga2jBcXC?QioZBSa9iixh z41h~!1`o@T%v@vxCoDloHgg$@<3z`yfa$)xx0nc|?F0z(u(-Z$rj87|opQwOyrUn1 zhl7aYkm1wQFkVXp_1-Pu98Nzz4b$igrz=FEhIae>s}i^vv_lvRxS_wDEKwygN#F)O z=M%l{cr)uzOQlw2j+T?yQS4E*TGY#Qs7k9gVDlwa-D9YvLdqU8+ewuw1X8<$@X>Bz zl7GnQLYSF)by)C`8x7dR@(j>fs$bZ|fJ9;qoU9eQy*L0yEB&f5nNns1#v|;V$AtOy zi*};+#(Bv#f7gV2I-s3DVmk_5D*4vtMq_8f)CChT!iLlCrZw^Lqalz#S;^Dg`P`@kfCf3yKtrCMD8E6{dNeq zZN!%BU<_w*CIdQqAV%@os$;s4Aijj_?3d(V((>T%o-78=9>Y_c)G}vcO&GoIi2GRS zvBi1^^E*n&MM*AK_L9{MWPdY>G&qQGv*wu_foT!){$4oQiH8%xdkJfJU0 zs=T$9+}f@B`nnKk?uqo~%QwTus2jR%x@?LTy$*7c&p;7S#fx$huqIlOQ9hNYK-?NS z1v16G_t{vvXCb^|QG^`?yDox>tCB`+bw6Mr93|??T|J39@|SeWpvAUFTn4g=0z|iM z{LDq?Bj#`|w*-Ttz!)({%^*5zFqwjpjhN%+fTHjp38Kwtw`v$y0l=ORx>2PQYTV$8 zZ+aqtHUNz8&sU|}3vV-QGg_Vp5q>C+xZ|G$p=C}C=XO}Z5Xw^qE^#eMyT9e%mgjI% zot)=?iK~)n^EC0!#*knELS_;l|@Wacl$d&u5-317S) z6MzVdj;a1~04K46(o~*<@U8F`4vONop#2MXC4_!usK956)jghNYow>q(rsYXJs1iJ zHnQzJ#}7s8=o0j1O3IWkZpC?eh_1^}(3JGFw0@NQI$k%siRe8zI$rZPie8|re`lLMD;juIq;zeJ*#?sERS3}5-^3kR1jg3s% z!J3tkJ?2U0rFWnmuF1_3?|wvuf(T|E4>HZr&M^wsf|Y4lfkH+IdP6XG92D<&EDLMY zhCgKS`x63?mrnmc0Q{6VUtT66yCPMGEm?H4s2(ps!^m$$ByOH021hE&bPM-)DUAa5 ztF7H<9XJ#A+;m`1Atx=83?TGL{uy+0rqv6h} zg3AyYp%tc+#WSwxBE*rLtQ1v9w>m5tpy)(DQ+(zF9*k7zueB5quA>s$2UqHVIdp}GC42Jxw*hO66AMp}X)t+p>R(bsK58IQ~nM38g z=a+pqqaN>exhrvGa$epkM)`yt*k>Q!wW9yOs z$6%wTUvex0SX&8|-3|pBB?!L?_(F;zuZZC%s<*UL+EI}_6oh#}M`B7V3i;HG$uGw8 zf>%-0=vGlD_QW3n7w&Jq{{r3@@-<%;E~sf zbU7rbpyFT+@M?0MW$JziwYtN{eadZZ)nSuEw_JfjLms3Oh^GDkn!bXZ4zU!W)R#}> zF_kSZep`=_;qA#&@I#=m5+WoDk0Oo`Xs+!r9mMf^7BH?U%X%@Cp+FNy0YL!`lF%}A!g8|Ud zZk+Ni*S%WS{w0%fbz62?iD+nkg07*fV+4m0WA==5>WEPJA7UMAV#ZV3Z^<0_TYXrn z)opGD@oKE$v8ole+Nifz8cU!*^n*>5t{HGhc%;zwtPFfK=V0p}1bf8OHHlU!+B1O&7%K8s{UeQalC)jrjCfi`&VT``$gxF2!#7mB=sbMkF)M^kl%1 zBf9#dAr-ROLnpLLS#;9f>OVfPu=<{4?^ks8uhJeHos=M%y~8HYt&~y5(6daNTUwzk z4t7&9tGU3M8J^pUYzd>b*Om?8m?}9dfUXYHWz9qA_{Q;ZfD4=xX#9)Wu~7iqFF4Pe z2EJ|gGSjJhnLf!$sTDXbgbk*FEda@8yiIV9?tHZ!daI4G&vooMI95Mo_gfY-HFjcU zY<$RpQT%zb^4_&7uXiFlux3QcHDK=tCl{-3&=tmnojxc_H16>0pm5X#4n~*P9-^}?=OM3yggV8TvJyfE`4QOA{U^~r*c4>F-)kj-bX^X z>Qb{^Q&Y`PT+sdy`8BzlWc3>}4Zr*6@AD7|zjjJ?j>b4gScdB8qse18+QTgH*A~LESwGIr^(t?(Uu$}qI zr3hgDTSNc9<4NC4-#7R^Ubr`?{d!wpfSVFW@zma?9j6Q`+M-u<0%?(wXH-c0?`yVeN$@qS*d;HsRm(i>rZ>W`?C= z)Gh0C#qaJ`8U$MVz&W$@ULgQrVal(!a_kaqFaD8Eio_IL5q>s~p6}2S@?(ZI8AbL`x&| zcnr2etAI5%NlY|C-1A;(L)Qk2fz}QxCZ)@cpsa-Owx#{S>-5*@`Dttj)9|7BULRdv znjMd^rT6z5?ar2FpZH4RvIegA9T>sNyVhE1<%C z&zdpw3;bzzoWYZT1jDVX#6oLm=z+fGjT9YR<4=D*Vg|>Wb)GYC*Hnb>vrWj263>H0 zG0rw*qR{SP;H3z*664fCP#<6X3CVo;otTA@8T-`xbxp3mz4p3kh-kvK6e%(~q<(?` z-B4lmA03((JfW#=uHW)$6AFvJJ8V1u9EQlVOL{3H-RaZLA$pnnDA|o59RsS#lJ;OM zoo2Ev)99Ad7B}}~9q;v>&n<0CZZPTpy;6|Tg6pAtu4Z~qKe3Ncnn^YrmT2oKy#Jdy z;Y_^L=rQ%uQHbgoFpc}o&418=gGu*?mI>yH&-fX`f8q^+DnU*KA3yRR@(t1t7(Q+M zalbB0aKgY5v&|x1=t+<)aTv7W64>00rpMRve{u1j z)bS!FnP_spXVtM##@;#<-S?&L&0Z&I8cKH52lCb$FFvaCT-bhnXEn49ZkEia4Qc-c z$p`0rLGtLBxE2TB6V^#7l1SXX*HLUhsjy;GST>IQ0xdfbhiUXOO?hZOrKHc|)fu1C zJCA^~6?F#A@v_qX9(wGQAEbJ{&KG2h+>CT}#+M(cSMjl~5-v?DOu`Bdu2BtBfC4mZ z#B$=INr(X7v8x7esZs*;=hLj9o zz7kz-q71Db7~Kj{&cm8gZa~A|(_S{&_fJm(K zKxva5W$RRf4#Bmt&NWO&QKG(f#H}q4rEP*RC|a213ooR2!xNH_IWaafMGZ@+5&81x zacxvdQXt2S33hCn9-$GdaL~UWvij?yL&D}`-HkE&s2|Nu%g_VtMAXeMcXw$R#6?RZ zOf@sd9-L5!alCbwTMw1#S{>~ZLhNob{o06dzr$sbn)_bCnaZ{zsD$5$_c3Udc9I~Q z9|RZ+Fn=wVh5yQ>rp549RAZn7P)MgdKkqwLwro{ye16Rc0+G5teHnGc>rU|00yMa1 z$fuuhjx9C&N%03rH6)?#T#3a3>~|OQMPO`*3d4;>QK7Y1Yy`efd|~*4f{)*%vLeQnI$W6GvbDYDzTBW>gtMVLhL<%}Q;jYK-kd}> z;12`Nh;5Zf^waWcp$6Y8m#HEPk`em_pDh9=Gz<%Fovt?BRdvj+&Z}{88~V`R5E0xe zOjMd8W@FabI;Cfzn&jKT%AHG$^fJmdhd6j__wPKZ%J~TIcD8bXhdqx0LmlQ#W$nay z-xt#N&?>M7%wDe~E=&>Tx0Xs3fHm+dLU&rQKibUs#wQmXoQ`G)AJTQJ`y=liJaa0p z=K%gNE;(QB%`K|Vgg8KuEf6mIq8Onbgus>pR6yd6v)F~Tdj!0&P4L_bjPqA`YqU77 zcK-f{)3vJxNDCRa;on;axM^Jl1+HNp1Qcg~js8Z9EiEr-7mmnAx+~trMz;ku@7^tE zWo=IYAAaDdR-4|IABTNq*_NiSZM7}&E|}SSZmowP8O2l5t?Z`VS))!hB8c|r^JPv9 z0)et_dL~!CLTVQ86-a_c~J}4Z)>kdkIV6ka6^UH=fS+6hJG&Yhp#a)RvRp3 z?^AgRNuCN9;%#IH-Esl(g%t{OBUGTE6B`{VL`oD=sR3n3Nlt>|Z0rI`Levk%(ObC1 zaZ0Z~KalHnd0yU2)@*fkS1?;T_M+1TMn*!d;={!>jQ1pO3 z?v;9#8}}IhFXw+7e@)wD5RGi{$GIVHSw_Z;q^k;b)x!(^oQE;y)82!_JQG`{(Bl80 z>@1_|3bSmB1b26LcX!v|!Ciy9ySoz{f;++8-66QUy9E#ME=g5)Rd+w*`;kCy1{?-* z?%H$BtyWx_M7Aqh|=70gd@cQP@IF?tI{2C%xWw#GJ?i?SSPb+~v_U|=9t3KI{XYC&))FuVM zt1Q#%u-S4o{u3@Cl+=ahZbSg~zjTYGdUipTDAEU6s*^V9O0F1sKf(vKV5Y~vr(mfR zeNU0Y{46vF9c!ybarAQvrwb!fw!3H0_s0Jb0qQT1S^bJ(qzD+7^;+4Z_JF`IYHL)M z0Qz43HPh-rO@EOfB%zqOv0H};#2Uh4C6qIF5kq#=KtO>Uha1UY>g$BhNy5)4&ilRk zcIocG{7jIqA1F{R)#XUDHjYHINVACQGyNfmB$Y3JXxQ$gl}Wn3*?ae--GKr%{TjX^ zGu{v<3Nj72@c>h;XY+e%dw;Jl4A6i_y%?@9fcyVhir{e~VWfE9VB{3rwmfnT&(sWk z2ErwIr3lLWc|7OPVzCd zjdzK4K>OAmuA(v(rRj5phD$2XOqc_EB*Yw|kAbbsJ4rTp=|nsbBqb1Jc5g^AZBjWh z54f>JZ@$h9=8f)1)}q!$`>0oA0u4sD-Hh~Q0wZKPhS(A+JNy4R5l~~> z=VFJa-Q%B{!G`V+cIP+%ZUE}*7t4!pct{<*mu2Gp8w*&H$N^#j=IN!&Lqkk+to1*^ zfSgrlfA*KI7jXK12Np(2WfL{S!5fT&l&-5Lq?-n31Q_CmPL9#^m%l7MM^lQ{>6~t@@gk*xcn+7c`)HX9Ld<`{Mn%#$wAfbU? zNwV?oCgbE)LhDp!upEb{T;6xRofax<@U5B8R>n9@Bqp%l9fNohHvM#?dja%0o+9#T=ch?jWC~ge2c4HNn5$5(hNnZ7N#4a zGmNW$xz^x~$?l06zqbOK8ElOFVz=KKfPDP4uf73W4p=F5k^M3Lh1_FeFtUh4z;&1` zyXG!BTdi9t7OT{A0l7t5dN?n8lYze_DDl$vMd<>+3Ah8dBIYoKCQCIpYp4?>k&JRW z-9nDn=UKE>TU;RQ{AbMuy}&FIvn2!q|JYBUU|o*<(X{*S-4BP$-A>C)WsO11GF4RQwk%WqLR8jD8o(r>W_jD)%p^ng)Y zP;Y;K&i4t6)*ln#uTCwDd?=5_Fon`YRh=lmn*LV$yQ>5R{$t#>0av{Huj4k_EFrTb zkk&S&FF!$aKlg{~gz2u@#!hMRoLqx>tv3u@6|?cbTDQbW=%$AZK~+LF1?aIDk3bwd zn0`&ovUo#Vpm6pH9e(+kuT@_nGnrdTB&H^P{$bp!!kBbKR-Uq{cs@gth1I*uOroG5 z5b@Q22mx#ESvID|SdP(4Zdh+{yTMT_v5O!Y17?=2c{0dCj_%lE`C0fH&GFHj_)Dph z(m{-+8)8MQI;VQz*`G=D1^En?HjS?bYEGMj9pOZQKQowsk|(Gqc?UhRZM)EB{_GD7 zxn63NUKt5|2t4n(>!Q+}fWJ=FRi)Q|Kwc@0wyqJQo|7aY= z-*?rct7IWApr_zz3+m`w@pA06H)msm16}RHR|d;{20;Iw;HmDmvrF0sW%O=-(fgO> zzV0SIHSC#Bo8kQnAekvdu>*O8tVpVWOO$pKpV*_O01Su_Q zLxidQ3;TdoSj3Vq5gvi8CR5iv(enc7OB})rWTdH4sL0RfmF<07tos>P&1LG(f?f~<#7;vfCqw3skBaU?9O*OD(@n-$%MY`k42xX=sdz|bI|9P z?M#Rl6#J3dIm0Am3wuDf(EqxY7CMfK^wY*D`Sz zrl9y!grMevZw^A@$N%{V9HPXy`-!O_@eNAvH6M=Tv67O7-jePw+&t`p4L4iM z3)~yISs46wP9q=nO=6=$h#&bTehGPYB{5L61~+0~KTl}4`O}l6$AScLaaY_$&82fJ z#HRlRuyWcg#17P>z%c>f3Et;*@=b^*{^19qPJ|n8Ry9194ImLFY}EW8aJSEt;zm{M zfPcrwjA-MWU2IeK75noj2*w-lUlo@|VNM7k95Lt{!Yxaotq`}~OMy%qu*7)`kKHn3 zg=Kx|cSACuER)WV|-Ko&!CYg%wUzo#C zX{dALBl$S{{d{bK3>g<$RXDG+;&!8IR?9z$LC zue82K+Sa>n@ncoyc@3#e>@!H@yf$y4Tm;Qzq(RqRFv1&|XjXmDzBDR;t`5sqX z&A-=P{9b*tUozz*x4Z665As@SjkVjmUi((6GBB`zJDrpFAu&{ReSrhpeH1Wjp{ZXm zMy;K|95VOhg@zx(z7m1kH8Q=vaK10A30 zP+i(dB%npvT$*ZaVyor4P&3{v=ee80iBq)Bh`B{-T=Hsz{U&NLP7qcLIPES3dcb_) zRa!8OErTuu{)4gj>{J(I_70Uu0)Q+U z({tbpH7u1Rc$gkJ*@OnX3&`Q_CY#Tx1QE^pEljALc|MaO=SkH%xs%eTKS`^hToX-$ zPEPIj{0f^_MoN8c$^)ZeQ*vgdDw0(r|GbYrt@mUT>E(D-G5 zB@mLZs)bqEGA^B_Od4x*=SZ3F3ne-NJT7E|0EVL{}KyQ9VL<-Hg<@z%`xYhT}O023ebvbHcdpF#(J$^ zS3ADy-Nzjd@x7s--BYHy-x=3Pwt zfZo{MV4eO8DkuPRxU_34L};Hv8R%sw2mlfgVL$?s%8m{o6rSl7k+(h)5Z15VTkg1? z*?<6KZ0jQcu?`8#7XAPe>N1P7a&;klu}liRhhv)hNzt+lv+!&h7mg7XLhZY#oyvguw2`K2sJ|uQ0|vsR`;AFDczk`8FHuK z{u;Za6szecl&zCZ*QtkYQnbAD$5GVYt&~x>7E&40iUdtGE2;TvRjJSWv$&G>NRXhY z-2sClxgozprD=^PrU{YuhCJrx$A0t}b#s?Pmrc=}-+oT=4KOO2bZKr9wv{CD30Eto z3rU-QE^56Ku+Ywt_)nhHpSCKbA524__fj&)n_>VQ*^)xQM5k2sar!zVMR?B9D%@y2 zbtUF`%|UqA2fiREF0$l2pPChyqc1|Bq8vAk_&L7^pbv0-zXS}r*cX$x5is3MH#!ia zK_?1_HYg>FK-1ujxkdY(j+_7hgUN}}2f&cmPbduw^0Tt|Cy~{@TVhdI=DLp~+@-uu z$1HO5=VQSt0l0=I6H!oBzK!97KqZ5o_B*S?1qOi8Kw;IOI_p0=PyFBOo}XzRL1#k8 zzrh^9rNTEwtaRKxEIf-7$4I{eI#0t=&wR%Z1)GCf#D1Ee~=B=QJeyOHtJ=WpXH5ru-NZ0 zuzCywMK#xoqS+qVzE=>r%|E?lwP&DMv>2~XT~Kvqb3m?cxw_N=WCqZ?Ayz~P1p)3; z|C(pmN#CjDYEQ>9v*QCG1`8p4=fuH|shYs>>+w~R-}Pb0{}o2Y<((Pd-f zHzPo@f%%`wMmDS7|CDU}(`taZ%(vz%t817G0wP$GH2JS2LzLIK(}e+q%TOz^&xPZP zmsD{e!PQn`9|>=$gzyb!Vq4%E-rmKLma7CH!I(3s+X;9KkpNH&Cf+D@Bk=J0nhGt5j!D+5ma~-z1*~SMeuk4 zWzF$I`TGg`byM-a^O*^^9Vd}~BqYY%E$*FE#RW|c($uX=3pL>!BmRC4epgghUebdo zeGogxpy9H#@tD!Y;>slbS->rc3K0qxi}1g+!RMIJq+O^_m>wl);%Ol%VIWI;#mhK0 zy%L+52sx0M&lAQFw}@U!o6d@HgR(a!%E>wyzvTQ51C9`cbLuEWlpqZ#;zMAYdn zl2}sn8Q2o}dsck}y&+HWrOM(3ve$0f3NK(O&PWZK#%CU;@+A3cyuciFB40Z~B>5a? zH6>F6mq`NOay%sm3V;~wbUk$Wk@~cQcC{t`e6uN)-E_mF(eV_+T;B6%G#a(Hq})@A zveJsT)gQ{d%-&@F@dm#JRpVE?qjn^T@}8H5zwh8(L*?CUFt0tD{TIR?9$E#hP(H#- zZP%?-99)N2Qe{6ukK@D;8a1LMkmup5~`j(o^D&-^BwynG`E`C_; zbYe}mIlj6$Tf_0P&o}6eGyG^)l7W>Efw*Y%{~HR}^Z`NvKHk5f05J?86cFSAzyl2c zsb7+?8;qrU%gddJCRbH5&3O0h0d0gzPL+z{fUOg3WSJN2Im>k`<_;xf@N$cgK*s!s z0P6YpACf=)1iKH(pY3hzJJHgR5DD1xa+81-Z&~Kd!LCiQ--Pg^(rm$V6zn~KDv!N2Ze=?MEj{-5~ zkAKMn`iiGl$&*R`x8MM~GY`a_QW+bx7KUC=XzWc@c~TNU_kjQDkvgOt9e!c3+-#nz z5|)@hesW9mNf}oaE^%;1wx34%ill*~+HB_ZCo>}dCeW{etQFcp)D$7KmtT%9aO@!+ zIQTeZIOC|&Kb@D$uKS!LLt=DKfZIXydv{EVXzOcn2^W_PpfvabM7#{#ou$(lPO>!A zsI!M3^)$^MXfKj0LdF?VH@@Aap+W?3slXU|FSN|{Jo~FJXDjP(tg^DFv>-p79+((C zy`1Rj0tyFkW^b;=m`eNK(xe`z*dtVIOuY=y-PCo!s5uN%UdC3h+IG#RY+m zEj)v3x4GF`z7qS=7>=jlAXWrUbvy4e8%ApLIUC>UZydGhn zdSTqvoO)3SGDZY~eq&%1qb~naJz_`{38s^kGoX2~QPVeWh()R|bf`yDy=7zBcmqc$ zC+dMKeGa3F1mh*(Ki9?BX*|7y*rmY$GE(imGKS2tw3 z($rrm3b3IRb@%I1sEIt4^*9>aUgcnd^R(P)FBJNC>(+ioHdyFabwSm@YKAK!Em4W| zq&p2BW?n7Q-HIUv04|AHfZa~m7as)-MPA8hi5!Qp z0_wDY9YZ^68rO;}D~XQ|Vxh)$IYPz@;M9h#H>!=Ch<73g$8)@Novogo$X>wvic_wZ zjWfp4lDewdrQ&@zs_t&M#z%*=ip)+={27-ZMNPaJ)2hISwFK6@z+1ifCJ;~(+-xhZJV&2ZhGi0;*WT{*P z_pYlY9AMgH8te1`2P*uy_WP-#-veKw=+-P1FD`>2s{A`3lrUcV2qk8Qxrdvh|5L@W zB9%5X@woZsJvit*jA{$$dn6vl)zek2xn0kx`^;>mXsS0tOuhpOAMG48@0EHS7!%*f zc6VOS2^M_T+kb8qTXJAcF6)1}OJ>Ig2swte5!{7^x)ktFiio>RizflC4~lfTaUd&8 zPSM)w-T|w_X8mHY|3X`^ADHPdoZ-B^T~fqezC^o7uG9bbbmC4yycB4YVP!iSG8WCF zD!r|;8%sG5KZZ#zrSLUw;^=wpNXyonxincoX>5q~bBgEw7^}^G#wK#*>}I;^osk7R z_OzD*J$td@gveTb^Gs|9cJS^jz~<)FJ7E@ikj9qEwk1u4w5h+&9*47yFyfnlD(BD) zFALKYux=5P)UdpJ0`e0g|L+@^9E(r##7uOg4^)9>Kf zuN3v|lJmZ83+z-A?Yl7^W{;c=pL@LvGzUExD({VvB3TUC1QMP}$dt?tK!;OyNj$qU zv89;x2*dEVTuu*59}@DbuuSS1?WtYA)j0%dS|XAkjvXc?@N=or9*qye)uEt#U>EKa z-_kVY3$+!4OZ~6VB`n)YLD=tjKbjSrf0`9b1GK+1vp*sU-qW56tt#0`O84O`Zl|Df zMY{X;>2FrSS-xa2h^`}d*qfxCF z@Ce;HQn$W^cZ6@I{kov8yUIl;A^6)Kv5pjyNj^qg|jZ9F>PvOEf0i#NIFXDk^2Ch#h|Gssh>cw$7y@DEhSPC4{>d6t)QJ#wY&@Kuge%Zi-T zNFfg2e)Xyt_^v3kC2|sLmhotcTYn47ds&=}z-IFZHB%BQQvB6E74kUXSh75#C?AV5 zidj1!Bv4tNooTaT0l4q$7DT0Vv}WwaqHFNj#c=EG(_@{Vv0xQX`v#hm&NDOa!Bm$3 z+sHRa<*}|m3sYCtG!`)?^t)-ZSGPbI>`U&jtWo?a3sg!XrvAyE38u@H&ofY3MgtPBH4#f`trzi&AJ5qMAr_Ri!ac#WX$)idYlV95tswFl-Y~YWQ=8o z#%J+06wv`TJGe_#_MQ03KE%dn)_-Ax^n?Eb8&s}BmLm|Xa1=2}JDR7LVA5IE@@r|& z<4Ca*{0LC5`FoQpsrFY92Lo)03fdda%VM@`u)vqyF=g?_!z?-Biva&KP7kmjho3#n z%F~I}T5TvjWWqNz$DNHwUg>r-*Er(&UijTs^>cU&BmqG|!6&f-Am^M)rPM5s_&(Re z?xs|E{E~t1O)?#?ab|Z?4yRfD+-n#;?;xwa&%kEiA|j07&$hqlDaRem=VCyPEcW&Ax+iMPVRMS3@HY(<*HHd{@Ee)nikAg|-$k+LpbIgKFi?SfJ zga`kf*QDbZuVRgD_N|G0WlNK^>d<6n&}LR+kJ>-U}jLu!wnj7p&f zbKmj2rF9ZW03n2fXbu9gW#a-9{P}4U@Liq6h_4rr#@4g9Vlc8}wRFBLa1l~X->>j4 zb9$CNvX71Lx!^McMs+~}mk%;N@=G4(Vb#tdZR1$NW{C~fao^KuKi>Twsr4@PS>H-~ zRr7sB+gn}dWkuafNyl?ZiH7d+#{1xOSCd`2!IBR-OI*b?E_z#dY!{H5kY|>BlH4m}cBqR*S?8cKpZ~7vGuV;6jlv4BZJ_h@viPg@MUM9}7Fl$}>rixqgG6ACiw! z;~1xjb&>nNZ6XR^(!joJ2PFXm<+CeWX-=V!xem2Tvv8)AtrQp|P|jC+q;!IW?sw^! z&=YN+1<~B2O-MoKmGuP%A>d*1&bNZkDLC0ZBry+#Mxt?>)=*m;j77~b$y@q|T+O#C zs^!6QOLes7$2Il0isy&JL9>j(8-#A&eBu6HsDBrrt1m>HHuK8!SNOo4Da-+KY0K)K-IF~T2&(q!c& zFhGrfwYlF0Km7{nH++%Vh7*!&e}5U-eQ|@ZRF+gtV*48}Q3?>Z(?k6r}g+qzD!cy+dY+I!Yv29KH+?=C) z`YSL;T9xwwv#s^os#tZ^NiAN)%*os4S7j4F*7uAIl`%v_?5V>s-wWzR=RMgrc|3Xc z^}5cT{+P4+)u5<@m#Fq9DcPOTrSC-3C8m2&xuXS?5Bn{nN&>19V-8G9ol?nnx=&MZ zmvq;3!EH)`!i`$Fka|0zt9zbdI|dGH2q}`eZKS<&d}T?)un5tlENS(eu1e~q8BP9Y zDLyPnyKmdzV9*OXD*?hgx@RT}nSDinaH71bxV3SSng$va7HO;*jRgDcqB_ZC=xNe7 zXqOY=I2)ph0CTwp(!Q;iBYS@AJ0#gHN%B=wi!eY2$?}F`e+l zJ+-t8+F>mB1$a0AbEqz?A_M zqs4JIL?UIxiT{198NBRo_+yjl5TdxL*DdZl!cAx|;>o&pHoLP|tK>chnNr<-?)w!CNtu!~{obdun=GepnY${a%(Kqd&8>DSNEK(8nkKv^wZ0H8SQFKT z!g(cj3s+38iIkIDsi`jd$yD4uVubF*;CN9`A2Kd4sJBkzRLpOwYHnsH8-l|5U~$xR zFeP-fzFN-I^yoObzVnB-Dny=4x`RTvIxfiCE}wE0MhHf3=8WQZp!7@^sB!SaQ2uUv z(r{nx>G=+jv(CS!*S}^neFG1&{fd8s$FK(tZ|11#zy4hst}HFy$$~nCK$>FC%jPR( zJT5jiZZ@_T3tN)h01L_W-f+f75;CMWmv@Wt0R4QQEkEM)QPeP;9*M0A)E=4>HZufeytfmLBx3)(Po1R zk{}i*#&73;3RlF$u=Qf0xBkeIK@pu9K&8gS{HTO>@`jXtm>x||xa}s)qKitw%r&3( zpavuoNq)l>%r{Dv2j_P?6osSTc`VaM6xt7O&E!gtLU1Wbabsg5TgGYEa|9y9fd8rq zGM--V&&jeqoy<>$W`l2g@W$XTI7Vb0vshat8lFl)ldZ1<6lWyY$Vurzb5CBzA3Qnn z<>M;M%PXkLxhgXSlvIi=Y31SrJ#JOGw3=#YvGRY(Z(J|Th652XDOy47KPSC~&yocc zz+cF{2OXhIy;@P-%bKeIc1u0rMx-i})-v;?m|+pN3?xKV-quwyx?fd2IE5PUj^)wt zO6MF3ko3y~tdJ)yj#%`4&7F-6KG;eLZl~I}e;Qckip`3&5DBj$;c>7g=@*r_NT=*s z53a<cK~CE}foh?h2LlCPobnCGXnMN_-rDak{j!1kH*ECI2WSkM9pAfpR3ft zY20CVy&JDA)u^!R#=h>JpxxfAOg3~Oe$gr_YwH7+(t$a5Ik}4A`Z_8T5nenVBnPIqpnOP2CLs)po6ESiol? zqhr(1JT!kv4_Y{xaQ};B!yKKx1$}Ro55mT5-|23Z_%#>`HIFp}jE(6$}aGU{@$^J_2&E>;dEmUR&T zV87RTD9&xm!uT#g{Gf)bJ4&cfZ~J^+ZB@yg3&?yNMLuV+H&fY# zXSz7#9IQZeox-C}%d+920Y6~jaDDWJ7OW~?PVRmG6E5cZ39;RwBXqyby5a84SOM_i z&~0a~^nO)OA)x_}ZEH8QZatN9MFBbsDXatpV%#qti?UC=1_5B&3u`rP;Zcmj^wzq~ z>u{ZGmCu3+K)Xmg>H?TJy-zrQ%f1=-R5APEfhE6w-~L)x{OOSnqQb%1Eb++7oMfGc z=`3X>agWG4^;%zFizrSPRHnNCWj&!5S0q`Wpj9Iuk0}dRtV|*z8$UF~?U*3kE)UMA z|HbaS{9wxF2Qx=YvCvaCbDA473V}4tDyd;0Q^H!4+Xh3}*^3HNY0%K~uN)di=NJdx+LV@SevA zaEBSf=78M#+N>_n+JhT*H(#HLhS>qjdG0+|G6#myN}j089;4y4e%vsz;t!sdi1*1u z6@sq5LA+Y2&N^GO9~F-UAE$K-=m4Sc{tMe@N9xCWe?EmCOI=*=-i{+zT-qCueh3ZT z?kr4)zNx%q@bmvO%m0)moHiauFT(IhWKXzt|34K0sT}EnL+3F^9YT{o=sr+vjBWcg zE_S_7Bc_g^gn!rg{0~LI1GTXpAjEkGm*X88PHmXj6t|MeS@o~Zny^>k>imm~rEW&ry1^h%}dPD<=b4;EvnBB;( zNt;82+ehmNl2~|a7$^!|Z?M8+tFf0EYMr-5bp8-~M6KyppYT87mt5w8&B1|Hn~lQ) z#TGRA5nYuO;<&Tk#h|-%<7S=8O;zsMHAdMB3lieG2O6MYgHXB$j!dh{x9wu3@_Vay z1o=@3cdKR=;PO_8$HWT@QYM7nXr}b8+>^mIPWVeE=Y-X1$T1|RtXeRp&dr~%%aDMT7xBX`ezQc(Qz z^r0z4VNZh!71};5GdvE6m<=Dxg09tjHMwR$O{4a~o$px%Kba^|WDwd-f|xM66b>!2 zG|efFD3W?FwwOqh#1WL#mJs0d$N~FH;B*H%)I1~e0&!J)KaGNKL;O9qQcAY&II5ha z=XCm%xI16wu_m-Pc84hJTSsOV!5wwoQIbK3P$6>#A*T{*sI&6p6A&osI96hW2>EvD z^dY%CV7S~e``X=oPWM?dIc{b#1|!x8fUxQo6k@Ibjds8x(I4rO?8heleU$MWo6;n< z7YH^!@|N=~gu}0}lu1lr9p7PK&-VkF~X{{5qzN;?W>)HZrCquY*$|yZ0i%|Q|Zu*)hmPZB||Crf)aG{ z^95XBP#}pG;r0LqKv%1)J|3r?>^k3=D2kw1eC?G32A0BsMWU9u#38IPB#i9}IaWH@ zzXfbqqeO~~Legpvl!k#4S@9!MN#EeWtZncaYIY;oJ#l@nb$p@LATaihyAxWF$XKBw zFQM$PjWfat$rI=_@_Kf9IhL`AVB^bA+!soQ*uQDyNJ$x;27D~d`vz9oYztIJillXc z8Qp<@PQK2Tkhjb;3hzbcz|&z|-OH~K_kE)JT{1$VKgS#+PT?Ve9~61_X_L?q zW9Kjk_wP9uhCk7o2_3dK4UP-sCRZ8~MNMBaNRJp7VPKY58gKu}G2BCekdAn(t~Ufv z#^IYV9+Q}FVil_D!Wy1ImE_dj*?819IQVB^11r$(l&VfGJQrdQ$B!r!TK zI;^s~96oMXzN$DQry%37lcb66;>xas>|lQ4X!iv2U+f4OukDjHf`QOoD%(DP>f3?* z_-HG@ZGFyQY@!$lM6XejPsW9_x@8q57XaELv$S^?gaHWDW+~e3oU!cL=4#L-V*0mz z-<-+S!EX~Z)nj9IBhx>S{xMETxElgrHtkB&1cgp(Sjb_3>K9SiN1-o;hxbcnBH4kzO~Mv`dLREBC>#{sYISLPeuNs&W!Cj=b$mDZFSpu& z>V}n<=fZD`f#0j%hj#<3S{bhYcC+nUOjCCcva8`46Dt?aNs*O6O2Nh~l*Xb;R zeBE$Ocv$E6a*&b!Lndot^V-zlN@pNc+znncMH_p> z%?#Hj$G3L(%cuKqw{Dhw6r_XSmL#llXi4*B*c{KF?}ITGyiH&{HrLXwjomGGrD?Bq zXL-tuF!E+Lh|0ppgB?NhV&2;*jJjhBEZ~6wn-xd9?9C$|a*Dw=(Xe^|=N&rE18`7aTM%Edkw6&$NvkRMQ5nz< zr?B+Nj_m4Lc@vPiYq&IU{zhGQi8t#}S2Ko#<`DvHk3_eMUhT#R>0<4xR2CD6fM$T! zH&!@h;UcdVI}@COs)_RI(mGN#wHS5#=pTB)G|REtRa7G~@Mck?5)rdy556yPjF;4% zAh|I8bMaZWZ`0lA9_*vV7E5o&-LzW`qfS7Tp|tNTq{sS9@&>l{3kQ30E>uoXSGAsg z20*;F?y$~6j&^@qRB4skv^c)Me{xD8)Cf;@$iL3r#?Zt0P*HYG3bCmngCyM-Qz2Sd7c6NyX=V(gj<*qs!%l#-)zxbmIgHgTDb=r^_B zaB2n%6=CaH-+JI1`8|>{o7sMs+;`{r%-X~s1kFQk&T!>@-u){6oyEH`!GqiP5k3@cYjkHgL>~gqG#PiZLjZkcK$pRk(C1wF>eK+ zVSaR2$$mjwm3FrU@$f*`u3A5NsksH?-m>t~5BO2Donf`Tzv@1Q;x+$W=J?8FYH#!GBd@ALQg(a`)ZR?UW#eu!f+KgdM-mR`je7)Afb<+m@%F zvsa&4Mh(I?$k5YL?g|*=k4iIV8q6PdbpBr5aipk9gkNLH8L7c|cPDkjg`{#kho!{k zX{n`h5`50%BTufT`~-44xZ0Wpl0YNA7!n^T%=Ux0ThShh0*XFu6s)cYW2GbLm6@NZ zDradRoPP2_IE6U~T0i+2*Td~S)J-2GXH(tSZf%FD&eU8j_#5(yv8gA(ABhr=h!Cub zP*dRAsHfx~<%ls@yIy)%VWklcd3Zul)+m)w78r9PIDBV=ahO`LRn)u_vCyvWA7wQ5 z7C6HvQ@wXGG{N*+$FP!hCo5?gDJ3cZjf3B6!?T9mIKK#93LsNWfbZ7UH{xZR$z~h5 zr6PJFxcRI(TxJzF2ISJ=&yNy<35;r;Tuv@l4vu{+-E1%pf$jdM6Ya0q~lAHUv>IvPEZ z9|+S5gvRK*kR}<{m7F~uAqXCkFSXH`11_Xij?FP?1;?FjmhYq2U$a?CVKh{)Q5ZDL z&H@j1+CU#;*JB~B);1_jw`ckp(1xyL8qE2+W;wD=q=9;aOj7LnfIj6_w)a3FJB`>#7ZH%>KPuv zQ9YS=x9EN)vq#ZN#|<2vTlfWGFi~WrXRrEePA`0#-Ch#TZ86CO_$GC&#C8|cNIkJjH}d%{K8O$nc+7(M$z*Z z&KHOD!`strW|l8IHe4jXYTfxmT9*o$@1OcV8-)Us?D`LyurP_#$Det)345!RfK*8& za!IW;YF=Z=u5i<0x6y5!V1PpzCv4epq~)r5p3YmAuw~9txBeNUfolgqVJZ;Y()yB2 zf4>s3ftMWs;?sf^e4MuF>1}Y9@)_>zQoSaTM2x@6UpHPLLa%S=1a@3*WWO{Ba(Jq6 z&lj4qV&*Bi9uf+OW`|h!SRX+lw)$kQC|o^lv$VAU7#5voX~hBr1ie1mu5Zw66qyeCDPKxQ@|@S6wt5HkAR+eRwJC$bdegz*|kgTmjz-w~vVaAaTHpKP_2*TG`{SJsYnfvegi61iykR z$5^@rO4pAAe%*?WwsrkuwCVtE_zZ+!x(Dbm?iOpU3iz}&ym8pBAjKg5In5&sb5bH4 zd?6hsNZXPr_WkWm=2rBMxYy(;Lg0Un_z7Rcu@WbbHXIaC?2pI%M7&s~bFUoR@*xRR+|6(?LAx4!>^*lIIMO8P zA6m6d4c-6bSZ<)%-g8P(AXDebWaBR+;jw(e;&J2~pRmr!9pRXx4t-fJGub99Bw179 zvIqkS1KS1mUd@kQpz|LVqm^H7~>Ul2BRa}4oZPFJM!Yv={;!Hf}p2Rr)|_US3|^@!{- z4GWk~3Tj^wCVMJEUi_nafOJVdRZh)m_5}12SC{dIm!YoKiicQDIKW3Moy)4DQiH^r zap-F2cSjRaJQouCOm(L$P^h}L!DglyaFUTvIp3t`4cN31e7Zc|B%C*5H0U|QQ@a=Mt3%xW%$K3?gxCO>M)wTlFpXa#8Ypr z42lXOu2`v$>;wk2c7kKe#vIdRNBNTK2)^}m7ncld-lyuK=iHZQo<;LGs?CUsWPyQu z(yILfv-t%6`*&ak8PHGAKp!umayx<_fBy63ef~aACE%?yan>l6PQ-M|M7Yif9e zZMTlFPEM|K_j=DYzN%}~P=^rW9El3&-m!ijLFKeBDYf=IRNK1`l$dr;r*lry^{KGC zM|W*4zmdH@&T5ZEeSFS&cbsq1b=`JO)=QwTs39B3wS~1hWSvZ|WAz0g^GQZPrm0zm zB|ay+Mb3R+(9Qz-_scdC@f6z!T&@J*vN8YLWh*$?+ByEYc9U2|%Rold;7y1Z1cyyF z@zXg&+IqR8(Iru$6{4ooNS)=balO|GUDoq0rUyV{wr;H(iuf^@PJ zci}y&mN@8$>O;-|IZJ#GgyzzGEW#JFCOp?QZkFxoT%pPJ(@ZZce-fPg?4fPjzzpBh(N2V({sXKOv?9HMT^3sN`z!Qp0GFEVgNaJ)-yC-M6zlbEZJJc z7S~?wy;A1(RU+5zHOXfC>u>_#TMZ4S)9H8aAuMHVKl=fK%;Ce!-TXLKNz@gc)Td&Z z!+7e$^Sg3_4O|RfGaTyNT_7*J2F{}CnPoGLRy!TEb1D*x;T=h6GM8mWGZq$$$GP%^#tl|kBNx?=p5BuUJ}jj zfMf=*zYRV0&(Oj+seU$4M$$rq zdhG!%4|hBW)4WwH)aiH4p_Oqex#lM`@7&QhV~J^AA?tiisrtx5vG+=|Jlwk=48AAL zYi568NQ$`eDYG}yP`B)?2!wElAx1=^r2D32PYR% zesZuEVo}A1Bp*`x@6G?-I{>Zrt2*Q#gd8hOf=z*wZGWI^18h1D8H7fjUA@BIwC=ex z4EZ!KBn165=UjCeEDKIA2-U_CiODIMNVR+I|AL-aDkUjGeO*+G-}4-%>ZQ$36T&TB zFGgEGu(>YFkrSqC;9^-R`;pdHDXrYH`)&n`8blWu#BZ#a?o}|m!Ucd8f(h;;*0ee# zm^XjL>M&={;w6joh#4~w9mH3(ZheqHi@s&8#U$i}pwDlbC#Sye+?dIihRAmPVHW&c zc4aYv11A+;I`uRFSpzRTm;5V=g&>GFt6>%T-RU^taT zDjj1GRhaLKtke^YZdU}qvVSCK??)0%0{O{v%6T*FQ_=UHD^vd%n6ZvDn;gP4FGtRl z;|0UkixqfgW7YI(X->>eEN*J`f587I(8Mu3gv9&;4bLwC|NlT^X7|Tg#n8yc^glpz ztkM5xlMSN>evKQVgS^ya)ghWo6i0Lriv}b04>w%2%;*-0BEj)r4}aXyoJgR~D-N4B z*U;F#u!h(NwhNSEG_rROX$t6EaYbK%VWp>KSj>7jUv!li*X zcuMk;S6q@yU$0cAIQk?0+e6mv;-L03#aRa+fpHc>!A^2yGv+k?6;|>4$&d$vS=Kl& zI!A+LF_~w0R{eSK^0aM)%%a3opyOq*32^WZLWkJM$5eGzdGkD28LzA-DsVC{h>uV` z7*WzoPKHu*{SK#n%ZPQSt^`DNL&1Rl@aKnjj$pF^7GO$O$C(A z!DE-FyS<)oDu4lppEwGEH&Eg77<-BPxB=bA-r=%F<;PWHppJaf; z3`&6s6ftCok)n-zm&LvfBN%BxfQ8A2<-t!{NJE{X15gTJCLlG2(>L+;w)j5Im!tIk zx%7RO_?sL~vyZ3R39{jGlETbq2IZsL^{80i8r!AWbtqc6kK@%36cjB*i@Cx8COU8y z>bt)VA(J<`17&B4QNFWs0aD$Q8e!3#0KEb~J5&enG`LEy}S^FT#PB-bVaOjBt_ixc+J;r@`XNsV!#syP(h5k}@J83U|@HFx)%0cthN)b?2 zwz5X}@^d>Em0hmS%gIZx%~pjeFhacrHnsvf4KpQkJsJ^ef1sXHjkS`6np`3q^e9M_ zIF*`1;!saRiae2&a~%Y z(dTSIeGW;**n=76a*mWvSza^kR1SpT^OtfYj9((iiVw-`bI{Vr)rEM|UJfKE!{ zLIAZhIOo3=NP7uQCjbC6(*G1dNhOlo-*()RB7!RJde=GTb~@^rr}X1SGn~p1$s(qT zjV98KIHMKUIdgyH-GHO|^8-bz!*@EC!3PXnJ@ z%iN2~R?M4<%BsFMk9`@)z)#mfpAx3DN*>G>TMIcrb?0}#g$2s3UQHaE`TBZtybW! z)nr-mN{EuF7dCWZ4(>8;9|hw^@FK>NzMs+!lr5K?+R$1xgqUp7jA_X*(iV71R#ndx z3^%1WeR3h&OiH>8s81tlHgH)UCR_G?16EG7!v~VSsRMVMIUgH7-D1`-v{=T1VJP~^ zhFbpHrGdtmV4D^7QJ%&5WP2-TFsT`!quDE__3vpyj17ntCKHEoXS6+0_0e2pkYlrGK_F1`crMjV9*?W@~r)xveYRG187IlC#yH+_-VnmW6 zX{x9IwZ8Hp$(BFmPPR24DmxLrM5C}tRTyZsQCPHaqkD5hxdK2|%+Q9ks3kq$2!E|r z58h}A6-$#e8HfLCD6@#(p>}&rT6`dU$wpx-04iftuir;CXnTh-GJK;$N}KSFp`M`H!&9; zs$RaJ+g;cLgr*suQ%#BgxOY?)m!9scEgb}|5eL)K&Zan1#G>h`dVzTvW#Mas z+zmx}8Ly2B3~nP1XhSv#6G2Z>lD1sSI6-&T*U!Pua;VOCN;$5qZQTg+(w4)q;b&Z% z-%;u|;t$w%Yik~aXN{8UhUqlHa;;eQc#P#q>%AAf23XtI3g=P+jF~RP&tsgmynFoE ziXs$^p`fEvs)*Fas*=OK@&5O@(>8O%=hf9&*VI$pTwMGbv4apvf|DD+a^x{a@DS>6 z4TvBOiI}Hu!EFuh3UFoLD|Su!Q$3#F%^gcUW$Hxt7Sv#Jk?;(4H6ay6XqSIYZui*x zu#vkO`*L+rNl#4==r-YcPz4K8gU-c&8cX@O3{+ycGT6z(?k~#Qgdn*6@?6QoCxR?7! z5yWqMQ*S(-VDP}NNWi1WUR~wJW({Y)hBG8tr86M>_Sz>gD4|r?J?8Bm*3{5F=?-d6&$xhB_cWuS5Oe*!Rjw zD3!p7yoaWwo%!~-Fz%O+tgWmntE%a6oTVO1YG0BW13eNE16zsHCals@B3zVEn?%_U z$_Ct806I7~hYi$A74gMloa{6*8&CJ%z+y2X zn6}eX0I%$aCpIAIoQehB2ud(dmGSvV`T0eTN0p_ZYZ@T;t4$?9C$9hBMCR5^g$<{?vlu?U6<-udP+q)~9imM9R0T)!QupV$~n+oa;er}6z z1v@@IF)64e7A^5SwO}4SC1+hb%oVMOwWsykLVQtIZSKh~t;((6rh22$fw*Wb^^7-J zZtXN$McT&pK}d1*U4?kk;?hsntC|qeCDtlLbxhHx5A^Hnw+saasC@9kBXTrHD zSl`cF>T(5b|6`Ld%#nG3vNgZzdmf~tEGew`OOM$Y00v|8LO!);%!mL;J(0V#oNSyC zl#Y90x4yispqoO9j~L&=rjEa{+UO_GyoJ^aI)+Sa@Bl4(0Qa)+TK%xPW+CreUVqcIwgx--P+S? zBri{#YU2B_I|V0ziM?~2^-!!M5)>;EY{8?04yu106}Ho=%&qC=BKBogwq3}&R(fi? zh?O?^LE?@9%@AoNFHS2V6k}mqJwTg!9y7MZ{H>r^8c3JRxdCfARIilTZ#9?@Jb#k6 z!f}FD&Ba>_ABBSkdJi@4PLJij3ExRdX+yv+Uc<>ylzoiXr>Dy`uvQHJk&D ziuzCV{gg5UozzWUe(;-D_7{;nH!kyICrBSjcB8L;Ck0t|Kf?XRp&%(oiGsXilt9aS z{U&5*JW9)i7;@gEjSFvj>rP%X7mo-K|FWwa``#5l(;S_)3=;=gDQdV83Du7QvK)ze zU};;^_qDoP9^b-vNCxo&{_N=OU(K49&3QW?SIL<(u}qp`o$A;)+KUF>VTy$eScyl( zpxG7!CM$fIi@L3q10GTm-7O3;@^p7CCOW>zl2Zk9WPMTjEo zSrRN03g9Q8a@#^T7P@thNljUmFqb{0ijC6U2``O03)*Pwr9;D6BEX*z|7{&TZk1eK z{PIt`sp|dJ1e*~~?B9&>`CN*jJ3tc&6ge~?HOPfe!#dx&;im_Y)mZdfc3`Iu<=u@7 z3`vKFQ2{DYj5ML%NN(wHK)ng2N+`kuZv=6-qxNr}CxE+CD(|^eJ(5&(s8H{kViHGO z^Zvo**l8P}yX=wNt}Q`BLlYy1YQxJMdG^1?zbsy%PN4$kugX39-g^G@^G*k^L1|{Jj+!|PUCZAx>fc4jra0l0&`*L5<6y-T9XiD@==q}n)*CBPW>jwYn zQG%YyGbXdkACo3k7{hJm4S1BR39L*}>sro**PrgfSUez%MW~qVu*9 z?1)m-F@Vz2QFpU={A+RodfL*k&B_rYL5B-JJHak;)=pfwf_b!6&d)-P+Y2JDq3k9RR- zJo1{60CFw_6v3Huy6_Y-@9>leu4XNZjzm$v0eka~MYqdkm6p7SP?Wp05UAK|f1QiQ z3G;w0)QvO}@w}m+FPY7tge!RQ_h+@HPO63Q?A!SXn?!EtfZ`{w)H(?!5=RO zEihQTq8$A2!MBVI^a=rNs0tj)R@>De${_P*p#C&}~rrzAvL)7C}l8AY z&TIf~MI!{(PVH*v;-hi|-ati6v!$w_Qr9+@Up%GNxdOO>Ag>K;<_rU~HfK6f*qtcU z0B5L{syga4;Cm)VN+x>nx+fP@gZH(5S0R;fB#nleU{T%nqE6-xgEovp>DFY5xG>?8 zxmI^@He6SX3yG;asjfj18>|1%j!r{0V_ zR6+$4Dsk0486W+seduXmV%pHqzO`I1caebmIYu-N{%5uEmGW!F}uC@h5kz}6BD@(%Itn%P)Y282_x z8_EpHJC`=H{BmI1C;-t{=3h`6!xKop&yi);IvfCAQX$w;4t=FC1k$IsYI@JDN+w zw(93U*sz!5zJolcjcky6G|svLC#0ZK?Q#EY!+Z(}CIBsRJUeUD=>^I<2$D=%w<#eL z0|IW;Noi1M5{C*K#ETmZm@#eHu)$c%@$Jo%If*%Rd@$kWY#vX6!Xg6f92EvC4C3M< z!>*{4U-k>BIsiX>Wh_H92(u&^K3kTVD78SR*Uf z$wCSMnwOa1G8n>mv@$nab`w8^RLWG~W|*S7QYBG2Eb}{@sx1QF$iyx%T!+PVR1$rLP6zoVc|nW9p*YfOe++=lFn(^yw7|^FY}JxEOO-;C9=XfX zxjpkT^fX5xy;Y(EOuc=t&rA~24pN_QHAEF@o}&3`=IZKdWo6~;oD5eT{O|JevZ~4{ zLhMbZo3dV-n}i_~gw^--^QEnHUeCORZmU9pE2KYBb8T5I$O~`HkX=xBj4(c;r0k_3 ze1PI;k7J8afF{vrO$$M0yUdB)a~9{a6h;$nic&b@N=%J(6m5*2E-G@2x&#;yeB7k4 zs->{5TZ_s%c~`wthXmE`G79_j^we(aFW?M^BL|js(5TPP*URAG;GRD*JuPibbv250 zZfKF+soFVxR#YXM~klq|x)oBr$Dyj&-G)DD%6_`n|HtvUe6DG(n|33S*z3AQMkC%VD z-Ck+TV735(aNgtV!n13U?mTcIhe+QbDL}SvH(UGi@kIU$%gdm+h43iQ;Q%6F1^noN z1*bJQN~6&)H`_rIOibz478d#Z1ZGxvz&&9ncV9g|A7Ef$uK#vq!(eX)OZ(^q;EdcA zgZ{aA%K14BNwio41))AurApL3?e=v4q!@3f^Dxz5RP6vb$f~U-x-rU7KuID!hE?3$ zSQh8gh(?3EvL6Q-gp^mPh}Og`mm_vf2ST8S;5BI_`s|g9T=m;lQPsbpN)M~vPg=E= z2EgyJa&nF*=(jr_?+=C<8ym;drDG}BcWyK2Sm4>9aDn*uVea|^&;|TBa^{GOiA|X` zO&$l%TyL~M+tbj}-l=2hJJRL@3g_hfX5D)MH>T0+hgt#Yn_1e}*x1>DJJrrFr~Upw0JKi+BX256n`J=6MXXDzg3hl_EQch9 zQlm^ktK_1cZo^8KU9WQXtmr$^N#ow(R25T^MiFWeqogXG5~X~o4KSTPSr)2Uh&q(3 zL_Tj|FHl$j=y_Nxa48tDAO(iEI=Ql-d%%3@G`cU+?NGT97c?E0u;7ign`e zgDz=)<`=l65C`B@kii)*hca`{DZ#vtiu=PqxXPjQ^;NXgm9z%mq=)ysl3bwSGzegL z1gnBYhW*}<^dcaZH#ech51IP{iSzjVz7K|@?3K=7%O)j-#|5xIlYj29GeJs%O(NMC z83F%=j^pvT-=?VRd7#1OXS5p>#dC!UQP@~oa(X^ee4S7E8+jL4^=V{aagpaD2r7sg zdl-cXl^JHM%9{|^4}M8OYDils+A+?=$y@gHRuQ|W!(fGUBN>fj4(jc4bw)knREp)3 z*LIYmVxz>B8AYJrxQbnpYuF++5n|8+ zGX2Y0V_j7*pP;g?qAo_#o73$+*Q(KZV)IcMJ2#+4fbhpIhX5ZRcbGCjd_$5bC~;i% zdcF#{b2tJ3!kNn$Jn4ma^?JDpVFuDsfSw`X@jmf-cUsP1HiyIIdZf9+K%;}n5_1jC z2*fC@s!1tw@y80pr2_4JLk7OLxmBr`7(w?#g)M}(7bIsNXsO1rsP!be49)o*pPR%F#_#x6!4HSUZ|!KVgRKD?X3H^a ztpJf{qbNPcsV@@Dm^0)wRsh95{xs;pX{w*Q*Jps@K1?SR3hWkg=QvLym+$%c{+Mg} z`gmc+5+Y0^4)eL~2mggsx?XsEJ{|Qm(h=~vzL1P$#{K$ecxljy@WenpAnv|te{cE2 z1OUBiWUk6N6+Q^s^a{dR9)53)<-jJrbvo1(BNS+-&@Z*lWgb4`fw{OCW6=zV=s}B2 z5r>2H0fjK4b~FDmPisg*nb!|%s>yl=;}6s9jmk!|qii0kVv`(1Kdb~m33nAa!6o7) zQRhQLAlohntDU{}kGWz^2D%Q}1b}|Z+~!>)X8k$`x|H+4Q?;^C!0oLVT3hQvad*<~z-{w(dHm3Zyz z7Wv&C_Pa3pk+G;d@S+ScUdLwZGkb6nE7(JGXH@!iLg8n>FT+>)HLp zO1z552klc`6J5Lo)aL6fyB@($anX?D0!N`{0Az5=SOlRlKSG;1j4`CGBs+srgAn+9 zwe;|F0F#2)J;>~@3-#Xjv!b|HYMwFpfBhhlQ=Y*-5IktYuH-7_h z@ceNjl)-`p%sxUyI5@b%M*)9z&|R){ngUr72PH|7(?;5<3iQxXXLfuH5B~JRZXga5 zj-{z6^Y@+JdU#-LzE|&RYt30Q+Hy4IYB`lp5QOA$KDWv=iNKb0xyCrzOwhQ<^&9du z>}M*NF`h_}vivor;nrF$RZY#E6%i}jl;TQxbwmyND0fdt2G&<}2!Zu3&nGGx7*DV( zgr$5}dulj%_q!~5Ld!rR$6APQ2wMYaBvJNPViaf-0h$oeG(f5=K_|(E49#_(uk^F<}`V``@$@_B%|GMm#h1Yzj_@el7#_ zG;1R<8VQ$+w|2X_*)1Ga0!KnZ-hN+6#{QHeMjea`(m7aqwA5cc^{K5Rs5|@`WWu;U z`K>pV)RM?PE()C!Qi~Q1Cx7&)v`NTd{EQ-e#=z#dVEz_1HJC@W)YR4D$Kc1-|6g4 zS+6h&#tAZMvx0SB{V~YH=VWNBm#r61C*X@_k)jC1wO3RJ02|bRWae=$ioe=lxD#!N zjU-ahgbRk|WEBa{TE562^@TmpTm<1p0ZF#%>cB0J?m>91eN%hP^>9%M) z(00l800IbO3ORV9f|vp&+5Ens+jDfHw2W@o4tM zG`2!VNTqxV!y#j~_O=MXr>ba!dkP%!BKR5%7y~Z=HGyGFG)HVrkUCUG7duF~ z1G%I1f#HQ|M{p{d+%1RKM1(cd#ko0)25Q~hhK!oPiaQ30t_zbJ8I^x)OJPPY$?a~+ z>ZyzW5T_eYIU_>qU7;YifY{fpsH7O3lYSy+HvQSD$p%4UrUK1ngxPkVLNSKI6=2&! zvq&YROG{;45safcLI^mx+MlZuqHO}EKomkPgWEK^B%sa4*AO`xeVp(kwDaC8euH`S zFG9$DjmCz(iM|dR3>^Uw*>5O;H;-$j#_3cLWQ;N51fYH8sq0JQ<-Pkq5Kqn9=)U z5MZ^cjD?QII;;SGqQD7h<@wUWi?4ST=35M1UU$xs>x`x@KT)X)sPh>su#EJ@lHA@c~fCSkdpQ{lpQ3-m+bH*dRU1OS(!a7+3D@uBN z9>{yy-SD`V%?=Jp9c)gh8vs8euki*tkF=xu4PDs>E)sPZEaFgLpGkNP2;{66PFjfi zm8)PGha(n6b{dPLANd^WYS;$`$kUIrdfSMkZ*nlS((e!*oB?1~B zHVt~)?}P~0q-Bc-$zVNaf{aIb0qa#ZSUWzsI?C6}a%aCG6@qP0KmbaOD|JaN&gDV4 zy;*l7IIJYqQ48z|@nQ0*d;rOs(T1Wd2!kHz4MRE{Y+I;ts{|Dts6b3Z!zpy*C{L?C zAWb)WzMW=gSy9f!WI5=W=mA-Z=GgVK*cs;c-antqJ6f4JZ`Ena8As%SZ6T1Md~^ls z*X4S>0nh&lUY zpC{%F+zE5vx%+j~*84?^8$3?z_7{qnLKYHn%rgQ<0xj;rCVaQ|b(r4w>r&tN(PQWN zXx1dDD=GGMR21Ap?MRZw+Y7lW6+Np5pw^%+olOD(#2zDTGm8=XPdJ{!!H~%dGTr+> z^^@A2j1E>jg5_=kZ>RWATsYi-oS5&U~FsDe<16rVdxC75cumFgwP0d&<7Bb z4v`8<0l?@uU9T`|6L12kJT|TuLb8CA7Z#Sj=Eu1QlUBo8)We=!-4q(&ot}U1oM<)A zmtpLZ9r65C^CzRYPDFDbS1!1D3xl=%cm1@dK=*#ATc0P<*g3)B?{C=xmXLKiedt^w^chulLh9aQB9 zm|@Ap|3wYm-kU$_!BNG!b{~{c^Ho=-*zeA}hw*dp_>}j{=z|BVK&FvrS;P59B1rnV z9u|~bv6Hy~z!ES4LWx+}Y$UVBPX8HP{r$Cz^BVR7#t8ezTj|e*{tuJSc_tV$ ziEq;sprVn)`PbQWQ19!J#!tU;WvO~`r5+@qyp}l*#o5~-{!e&uh(d@zJRzW=k(gnS z!YANtXI=9%ahr^fG6TK>MWMRDk-XpgqCEc>3J@gy49iiZbqL!JXuu!-V;b>W2;gmAf^& z2Pz5v*Ky{_MLnTY2uA8<<>Zcs?XEdK9-r%#h4pMgWvP#nXj!q9#*HH}u0aOJ#wKJ>f&4 zA;hu>Bj$;dc)V)rwDYZ7DKag7QO>7MO|6o^MXDL{cZQ~>Y{vJ&#MMtHPnKo5v=?F| zMA=7KFaOz3-?JjsIRAMIEXVyf`Lap+dLCe8` z?0pQp18ghlRJ~H=%X5;Dz~x$tI;KI)ANCSJJ`(6cUZcJaXd`|Ecd{YN3(<;h404C{ zhwuR%Q+Mz}3kF~!S`9l7NipKaz*lt)4_UOULLoUpXuOaDZPcSjMZ9lbHYGjCMGf{6 zMIs~LoD=H?2k$+R%bNMn{g~UuA-IwyMp1K_E{;dSrJK2jJ!cf@hJ9$?X`4)!OrKWx zRLX003j{jThDHn;`-$>2EkL9hNj6@0R5bR~cKq$?f!G#e+pp%F5OiPRG#-O7inrGw zbcrA{l7GF|>=Y}F36ee|2+WB;^#`&5tDwN)&5lF%`xVUN+blYn4R1~ zRvRmkG(CVr9%C8Q#`zZ1H5*LSNL^wu^PNJhTmQtn4f`sTywGGFsx<JFYPX=E$&jJd#C$FEgYggNWryWApj;0(JPbeLI4DaJ!kbb zJ9P|8&=ZlB5CCu%cz40JSbYB2<7h)bXSFE@aeEI6(xjaZ7ieQ_gknaZY%caIcZ~Ye zh+Fv;$dhzLwJ2G0W&`nC`z4H*S?d-jB zbY~tm=^TTO?GuL7hE+d%JHN^t;FbVRey^`*noc9~kM?rtrycbQf%JysNN6MubL3KE zihG0z{+p9k1_3`0siUWANo8n0<$|{gwRJ`f>K6n<@sU4pc>Jx~u}82GQ2~xUVO{{% zANVQi_EiEDy?mKIoJS+aqQx{RW&gc)BRAOey!_NR^$g zI~n|$Tpc{Z;vm9()G4PBwC-PvaSpxwDrI8nx4->f;d~;#nUvBg#v%$cInKb+b@*82AM-9HiMz z{XcOD9J*m`WUU=3-?<7frzxbL_a&{+Ywd-!kLdbJC)p`=LW&>Pg6cyAifPL;)e3^*VL6VGkfLvd} zp2W&FkE36wm6m9R*+ICyk;=0Pz}5(pAQdTp#QaQX=*$uLOk!?yMhELf(@dE25$f?? zq@)+4S}XSFE4+vocej?5!0DVo2khf?p5}+Yi9a?aBvlRu+AIn-`Dxy1C_C`U`5rTa+Z+Gw9cdiRIW-b8#`a9M1Ok3@c9ZRkrhDfpy~mF{yuLv3w)^;|lwbyVN2{ zWyt^jevob4EJPitDZ^_qo*3~eobmhXpI@8?WVeU~G3{Xt`_7mTp%hFj9$o)ypqk(r zkEZRX7~RyOeb3ZCCG$jv?tPU=njJsOwy(hmDRG+f_}u>8cY)j;*s(l6&-=-nvC<%A#dA6ia!YM} zIepLT!K~jm^9r|&MYybW%5`uZ&`op&{KxI@-UrqBBuH+YmUs=sdq^uMJGjVj2-nf% zAhJ%$`Ul={kQ}(dv#ZCoULR(s^AVt#2~;!Ygdu?*0{Ur9>)6N2)9xZJ0OoFw1O=YA z?zTq4e~{h8OqfS^uE07@c6smZoXYB@y~emn5&cNSesUl*<0&N@0tveZ!)ID5Yvo>oi_@^8rCWBsuEpDs_LSxZ^T z`{LzaH&9m%rCV)-NdWJ+IO51yLuA1`4e+acSBzT4V8+hAQm5G}ktajfev>B2`mB$C zDDB_7KaS`x)c?Shcb1cX(7IH3B~yqRo~$x(HZvex*v{dBi}GiGcla zAH|aGCj4-&%n^9b5U4=!*R?8esermrtNlLjM*np^$lZ7ZaD1~231am`y7bXyIZe5& z-#~3)Gs|0Vy^{XQ0^IM0q?M5y(G~bEkzsQ!`KHfhP4HD%t#bX*N3jZV_veIh;ZP;y z@u!~!D;Tf{6rm7WV?^iAO6fLIB}xPc!w`YyPL?blbIAQn zM1L~QUvo~aniRQDj}`3aZFABl{S-7%c1>GPE$vkZAJT&6^Tgo0QdV}w*zs$SCz5e_F&)1g?=>}f9#5;k)EjSpp_ zCVCSg@Xck{W0b_8w652YeEq4@KsJA)_fspujVu9dnXq4HU3*{dXyt>Q{i=_2le zuGOW%Lj>LK(i1AF8-=@mrn)T6$PS9V-IV*6H=Al}Yq)p%PXN#r)Va(5mz;Y8YU61* z0dxh0;STtp2GDDd1Ia)5n#k&cuC6pszuaN~Nl`hGS|NkL|CzI~HN$c}iVpxV@LT>j zHZ$vgv6%<(dH4PoHuLQ7X|?`~%^WY0^7>o(zp|O}&HtOtynS3}Bbo+w+ddZ6+1UyA zCx{ycScfE@0g{9Sf$x_7Rv&>c5g`y3VQYK)czAm|wEraSLB{HN+xElx<@{#y{A>SY z>!#aUz2<4DsaQ>w{`Io1_uJG{mXrYrk|tfF`Ft(!_kZ>zeXsY+wj2M?C$l9@`%xlw zUDv%7bxre$Y7zuj`fx zsw)3&hG7Oq$Ndl# z8ZBBxWHAj!7DyVVro@o_aamoT_i0Hvj`w*@9N*`0ml^%D`+kD@Wy@(++pe3n0j{rp z__oc;4rzWw*H{d3lX;fs;c-#^--M)U57_1|=!`T^27!vx^}Jzi*Yifk9JxTW z$p8I%xM|n>^?NsrzdhhRt)kp0wYby=x_$f|%7I1VIG%xMqsEoit--_{kJB7)4jKr1 zW&B#dh`8tR@dLIwMA-V=IKFp^=Zj#rDYxHFNJSY4o@E!>Hm9He*d~Rv7W2HCQ8&lA{;qVIulog1-eO)-F>tGns>xbZqKNh`I; z^3E;^OA2HQf4iTgpGS3rjTVUUv9Tt4XuteD#Qk^JL6Lv4FxI?80u8-jcGFi5YNPM+ zVU|CvDX=w{iqgXC_gDYo71frHi1`X7rSCW^Y;Y3-uU`s+=NpTjC`m~Un@!VoU2j>@ zvi|xV*WZ-J6-{&8ykxs3n}1-TPxwEtqaByE+`2qDAgZqCgT?mPYMs}un?vBN92MVmB()8UdMw>n_ z+i@HR;lJ0{cp4SMwr!qbnk?s_lD?NpOjqPYlo*a;vR5vVs|Fc~V{6v|L)ic+{xwD) z!A&G-nts08?&pn~8wBw04djYxrZYlP7Kxh#VfqrssG&y5C$!kFHW zj5#H=jboQ8XyEMnn$``gQCzoR1~8OyhwV?d-!QZKACM?TJlDtMbdRpqc-r zS=Js_7h=+DklWo+12PuQdZY>F{WU8a3Lzud29*v7jjFmHE~!nIRb96Y%QDs#4dA5q zHHB(0KW&=^Q0S`UwxuX**u7$*YBxg8?_HH$WQu?WQ-R?4Kn0ifK0sR={qf_#%nKdS z{R!v)%o0>J4Z=WRj>nNoC}^I*J_8mp=I3PCn1{CgP;8(}kVvmwH%pi;F#Kp-d1mF@}Xuez4|#5DJP&6ikVx z27lIqu|+6;w@q7il2t1D6{jrQR?eHhhwd)xeyT)Z4q(63kxbK4Lc4__-q{akt7b+I z0RqP7qa^uAv1Js)d?VrE0t{&is+`S`O%B`N`NcbB+w*o}q-xo2k-#{djO4CFh(tsb zS{aagnwcBCABSR_PsW>iP3yMpf{s)f;UAGafC_%wp{DDi`qtXYB;^eii`4tuiHsjL zyClcO?`^l;7;aJc#rGY_zV#oEouVtKZSsG02uiwGURpad1W=qFFJ4y-;5%AQ)2xQ& z>0?^tn2SSYMiA==(cwFl&yT+rIM=fU<;ANzk5v-c*=t?AMHXx#{EL=G%RMg<2??6BVPU9ux4l1@3kM_Mf-{opuj4jcWe>Pn=Z3*kv7EOeMyZ_4a#dV)x z$z7k50QiVl2(vB4nIU9Bu_YMW-r75j5r&N&JC0QvnuSL~&MbG34Cmr`o)ySY-KuUn zGbdf^GMu`YX6=zc`0P9zimdChEnReq^yYvpwC5v4X!{RH{-S=D&P{?iUPO7i=uql| znMgH|j0i;O_ueTaX97{^VY$ajN|A*(9y+b4omQwcz7}SZJYrkpQtCiy7-uy48L<#H zg$9hz>wZ{`vMRET1x(jp>mN3!h61Ek#?EyQ)6;-^*0f$y+2D+LasmXgSM;S%=sN!r zO@L`kIMLF*V=xVHR<;i1HAX$$sl2vX&W%P(`C#|odFT&agvJ5_P7zs0CQqG1jg?aK zRDfNt75nMWCLZ8E=O>DRF{7>~vCm{!jRv677cip3pe}uJpvZ|nU;ByU+))a{PUro5 zK8wt}8xHs*72aOp%0AFPLn*%x6c!2q1-13V9f#YJ=~umUN>*Hj0lvUw{yyquJ4jKV zLdr3-I#Nw~HIm?gtix5tO3(o*Li$xtOs-uW z7s_}J{B?{aM~j0vBcOjdMX<{q3KS6QpxaWieSst$%AbBg!^sBc78TL{S$RlNXcfzu zg<4_RKr(!Y&UgaFV5F*Q<)v|^gHX)SJOl-_^f2+`)B7JzA#7EH8xO-tT$U;d40yDz ztCHr~<7mCeEP2woDo-Fi>tqr&?I{EJvr2uSMcH|q;kdWj^%Uer;$vlDOpxjvS!8lt zy%*GmyH-usbE3rLGFQ5HY@3!{UqZT4mbc*bhaH~06loY|IT!J1sia5d#wn zLZ1v?Pe%sB1@2Xo_lWWB$mts^H)iX7T3)H`8&)&CsZBJ|o@p0}nd_zk87k?6JyT!K z9|L1^{4&iEAFslVcrz-Kp+Q>Dstc$a_SicYOhSJ!n_VhV;5VA*Ky9&B!-*V!he74E z7j&0%N)Qb0;eG`AAYSIZR@0dhJ%A+a!tqm4bbxgS1WMV~@O6K1i+RQNe9 z7g?gF!SDo)lR)zcZ&^gy-*S*%~{bET?Q+(!S3jo`y}EYUDB2q^BNpauzV64PYIzZ6B-voF^oM zoI$`g4_AnUJ?6jbE9Sw8NHIp+Fehd4999Za(*Y$JvVgfl2hVjz z0BD((qoS%Ud2>=be-geZW7J=|Vz1{rUe_VrlY{~h&c~DD^Cn_>pyt7T{Qod^PC=4{ z-?ndS+O}<*)3%Li+qN;?J#E{zZQHhO`_}(NoR=Ht#Jvw08Tn8dQBhxIetWOAe%qNJ ziNtN39f5LRE{0`?J3-UZ-xO)Dk*;Tf&v7?r({X|hu%k#z;&2q(`2Ep}qWimA(}iDm zJRB=xa5RTyfc6wec+Sc8#d{^!To@sDcv#@J7c_!aX;ODe-(jiEivBS{5u+UQ08t&NMSk|aa+t45(u@P2S8 zj9phK)@|a*+=n^`Q*Iox!_7#ckqJ1yh@7%CPU~XLBEKIOKPbVpNJ5d0X282usS1oW zmz)K*by*lEpKi4XK|?-IJMbuXiop32Vj-nd%v8Qiy!^B{!rt$N$vhV%rHv98uVS5@Ho+Lh zVJJukq+j|ufel$bix3=Pq>3uZkZ!_A%2Z1ljFfXJ7yskrBb%H;P+Q_bJXNV?l2SSA z#tsGB)hv(^_DTEY+eDy`<#JG4r5oG?y9)?#B1%eL8jxqm>Lg{>Sl&{d`D&MrNWf3& z<|cZ45Vj$TbXxEGpDwPZ`!f4#S-Xk>Z~mL5$`unF9IlR>U>Arq6C)f=1J8#9K}tER zR=N}MHUZH$tx-M1POJOKVb6NWAM?nRsZizzQ<-}x)jbfNgpttxuCm);)JHg5o$pyb zVe*Z0aI#Gx`97?r_mzWQgKvMuHWXYoD0JsPJk29n-A_p+u(K^%66DNIILi$u1Hd%v z6mZ^s#sdWBOEerEz!UBDb{LOIXy*te-tcWv)3*XrC}al5hQdb8&eB*_oT&V_h`E!= zbb@Op&%3UH)`bIdwpOWw|mo^21jyIecWPZp)1RO2TsE;L`4Zj<2~aO z>UAq2i3*^#k2Md=k=z2)Au3LYTJXGnHbZ{`Xa!J>Cy!Y3 zDzVQJc!vOmUyb&XFlmO>FL<5VVLHae+^J<+4<43ysB{k1YgV`Lncu%1tsVUD>8h0T zBn=5O^Nv$v7lX9VN~R|v?&4VhQ@R1_6+zh+FJvhJ z^NCPU5>zbXBSL<02r;uYISR647}dvsf1L8G85KgU1|V?1al#)-ubS;1QAvex`i3~D zpIN_N7@$leD}J6cE5D*5r$-UF=A4z*!fCJ^(%CJYr?LADfA{O;Ds0kzt*9#8w$4oO zc?7!*eAWJfJj)|WIl!W#iB3V-lVJwe6PkjfstJ=gG-E$r(ch!>H{E~Agl%iKWmI$m z17T{vzW|locSfEFG;E`|5T~Q#wAc}bFz;PwMGx< zy#n_4cu=XK|0%TrGh%qh@K1C>{-AuHw-h@R-mg_iGNpGf=TAZx#E!MA1 zMkr?s)BWbl?&y*ur!i@if2ZZX9082vhRmKJpwTc8mbwmdwz!w01TTfsgk<^7YlKQ) zc+s9weO+q2~nTK z*G$Ek+WT204)I+U6*b`rf>(L1`0FsXOHB^?Y)Cl?L5P|Ai`13i7Z4TdiR=aSC=qQY z!PjMohT+Gl@NE+Gh%sS=CGOU~Qo5N?nvGr^^R(w@Pr$fmhZXxmjzS%^)zS>|KT%OM z4k(ChlpvQBIG}S2eVqwoP>081n785nq(^;+D!vvZ&POZ8=5d@mx$sE9xqjK>7{*dc zEe|kCMZN0}4CCCG6@F9aD? zfs#FjXHB&Xj&h$^R(U{o>jJHqyhQ^gJ&3mR$n234`AZ`$V(Dpt(#-S+fH52GEr0vSvxh>=NhA<#K}2WrPpoEZ%5 zS`1yw<&V=Kq`J^g#AUcO#@yO$8EvIj!u>zE2|W`>p@n)+QR5C7mO+CbO*B{$mcE=^ zLttbQi7Z(X6G@+pe`6Wf_9^^Yx*D;tpCvrTt^3T#|7E}8l(+)MC*!S;it?}5LrC>n znmp-Jn2RE;DtHS@e#Qs^A$5pd+?{s)t&B?MoWJ)^#Ok!1wH88S{uP4koy16~>M$(& z2$vF??$6N1_hYI~i(7j}b${nhUAEqQfHXXa#xXG{hq!!Lbaz-kE+Y#Oxo56mE!VFV zX~KHvT*mgG#4pLc-XKYsfM0r43d$IAKv=JwlAcc&f(eB+y_%b8q@}h~fE>@f@u?Qs z19`WPLQvQkDxwh;TZ+JzAxgnwEjVcsZK*aXIxd9CWa0vRq8Q`W7DlpTF(Qj1+p=At z$qB)n{@ngq+{Qr+!45nk0`i`~g7!4k(+*?F`;{yE9f-w57LPIw$8{8LYU?A)hblB8I_7Rwq{(Ath4q*2bET6gT*eX~s^bLgQ#w@#@c}w5%`D$hyB_ygC*~ zk$zs>2hEm=&EpU4XwGQzK~ln7Bm;r%OwJ-Z;v6J+n)-q)eLj%NSoKDYQ3M6fi-u5{ zAc$<5KBk#NHde@MsOP1}jZjvpLrOA3jI%i#%_f?G;I-nQ95|GzT%G zxM71bPrNkb4lVs$x$q7YeGE%U-bt8^s=S3U@`(>bawLDwG>nV%mJ!W= zP%YU?z~<l6RcT)Z{0TPs`fca0>A^g)NTA2cU^~=ZpH4XQhFm7j#ZjnSGN^hZ zpcD0nnX#xnOq4|J2w2Z$JZCdb#_@35+2n{&M|9#%m?VX&?Zz4P*Q=H>WPhui=h@*1Fw0?(yb`b`#S2oRlH*3g0|9T^yCiiKAUtn}2@fAt=Gg_wf9MYzGJ+T9f;S{M z5sK5NfV}jI$v%GB3yW#@JANmO65dH`7BVBB?~%g%cECwDfC}9gvEl;gh@Exqr5JY} zzbriMEIUK{Ssn5ib^eucEqgZS(GPhA`4g=x?>8A{Fz0>Bk<$&Umblk|=GLaDV66nU z$s|Tx$v6tisG%F~|0a7{GI=XKZZYYiSPF*wV&BTm;-6h+LP}{&z?a}2^}H<_@9rPP zUWZMs37yZlEIgOAID)8h03+g@sAO5v`SBCN!COrcEFS20yT2@hDYQ$Uz>JI>?h(2| zj?yVQkFGxsI(MevfJ!m?Wlmzh^_Ok}Q(3$~x-}}Z;erW}Ea0K|I~VBX=%m)`=}KEL zL9Iz0t@SH&-8UY2=lfV&yb+7*hbn9sMTCu6qDsW~2#yTd)0auA+0}gD_tq}fj=2@Q&`#AMv0wQ48n+Qm`7iec-Jk)vgRj#Y&l1_x(Z=Vrj6=g( zg>r*dR!6%?cQ>&WvV7)Z=iPbMA(a^sA2~J}@{#qE$_uFH20NrCg=~;w1sA9oA%3GO z8C5*m46{`pE5sBd6W=fNhyK4dU zc88Z7+}=Pt<^#fjCr1_lmItYPeF32%5~ZnpO&Y}>Dkxl>Rolrnljd{6#59~B=%5y; zM{7HM4}FGHP|@t1yyTEmqS6$DMCO!1(uEwsEc`f_{Z5TTUhl8gf`I8Ia3SO*$9x%wXiU+2Sg!I|~jWE^S}JCV%sS`s#*Y0AsyyQRX!vuXIB zP=+W>@Ko+Nl#JqFaZ=+Ca6T=9hSa{a1zJO%i^>Ki7?U$t$|pK-FvMcJ_kS~(%3wJ* zC~K|=O`o_XOPDJ=O@uA5#z>7=L?uh{lrd8x$zkY{B9P13gafhBVMSvgbI8_t?CRt0`Uv?t>}R@) zqTPO$354jqU;evMNA~EfVnK{x@(>}b&b>pn!~GzJ@P$I{w$Dm!P+W&9%_e7LZHy>0 z6kK_gRgq0lEkt9|^lgX3ICe5F=1$Pl13YaaDxw7dkJEEmN%p!92st%iI{;0NQOW4t z9}Un=kr3N%Rd70%JEzXG$o<)Y<>m$drPUas-$DHr^|c>{Iavf&!!gozSyFwpRVWjd zv}lA3*iM2$`jM4V5)2wv@)^6CKcT%ct7>cZFhknV$m*bNpUSYr6oQNRz`5e}h%hW2 z|KvZ(bmA1863=R9H6@k9RF>d-3sGzD73`k!Ae-8#+{T(;;@hK!pHSCKMK<~k(X&7* z^jlKD$Q2DH>CM@%pxP6?JTuTg{0q)|?GS_g>P&~O-^TttwN>K|wO+194q2aJm5O~x zB*o`aTY;S2X8||#f=7MxWkdXPm)JbWAsm4V%^YuBY45whN2QxgoKKOX;hQBC-yk@8_7AQ_Fh{>u=Z+=QiFwN~+fG#&F*`?Ar-PC*GT5RVa+ERSJ zs8XY3lQx;jpEX|Uf$BmU!i5cM_UlOzR;Hf58}`s3eDcz2wMN&+W>@P93;Z(MH5ygQ z!t(WaIi2oR&#GRtfGbl_rSSxq3`71Vt*UlsBS*vGaZgq@%9-rVxBKv|Dn2jm_GhW4 zEG3&TTGt7qg&M)77{AYhDW3!^i)98fI;5Iq(`9~4WgmNo_kOso#%Zg1NSq65p7e4{ zG`6a#hzLv8PSY~vRaNV2d6n*tscU*U61}2KwG)T*n}6qa{EZq}c_P$PG`Ny{N?!c$ zDkV!;$NT71XL0pRYrC=aN01$3>iSMR3e1ug?5W{i`$8R4rXIJWpZeo_k78zK4W0RS znpI;jXP^yYX3*}F0D@D-GV4Q|jr6qaB z6F7>Pw!YX6en#_}O{lX3nRW*jR1Git6O6T1^Mu5FB`eP8@IT)ap`s=^i%ic3g7QcT zM>!r&Iv$K@@~i98@zehVUDEzF5M?FWOJIpy9T>4ctpn6u+lGGngxL6Q=gp)D&q?%= zC$D#}n9FX3&o_#sDbpsg9dQol7}H6j9vZZVaVb4=+Ja_Y_6rzmwbh~mrTMhKtswj@ zeTS_a20n!jkON~O`W$BUVT^3Wi>@ULXwckdM(}H|Q@qJT87@aXvoB5124U{9(o{95 zEUR?y+6YetEOKEKfxvOowEFq+h2uXI@mNt~erL%BhDvA;(-P1XiQ&iAk@cz_Sa)4- z`e9nhlEw+wGK&C_#Wn_;LWMpBA<34#0rAp!gE&EU%JdQaXQ`uDe4)KoJtIofq-6p( zSRJr%T_}aDLQ=^LG4>qX`4BA=u8`r5@%qX4c(wwwsyr+2X^4d*F{9Lw|o&{>p;X>X}G1>hP~T9LtNmUlpOL_0UgAs)wdR z8z0s^`>R>OqSsoDrQT)~Zic8_Qh9b`vE5Vgu*$E$vaztnX-78|J$s}*+)<#Fvym8{ zKp7&5lW@$aJZ^+i)mt2Z7o6y5+|Od#@co=>qjgf(LF^v%UHItfkC=&;;1n2(q6^HQBb{mHZ zd)O?=`UbC~gNesvo*l64;9ZmWuHbsFw^rPI-X^12!ag8Bv=W;DQG9teUM$x+RHjDU z%ST{fo;Y+Z{0viYcHm3nY~h@SsbRjk+CNopdR_MBdLl_H~e-z!Oym-n!3L&pG-8#W~Ku_$-FMeT54nF5u~f- zOYpd@s0t)sSt%WWH=n75pJ52jj_azqHWKGd0TLQcwY5`YS>miW`Sb*K@YTS^I)tZoGb_!*?u7BN#ApN800+KC^|l(yRqVbg zmtklf?D&LHfx13RFFkpYPI#_?x02U4%2eWVf=toEnRPdZv`-dDA9sD1Zm;bG%IaR% zg{9qUSAmVY{zR`Dmh0=?pl3c({^6R=-o?w5x}DV}dX@-&slRTs^^z^?DLdy*w7cJ? zRCD}{4U5($b&!?T&E0FkLprcQS2lO!(`k2hG~JUbXXLL%PJ?Y?e*@C5vJg!~Au zU3gJu(YB%$6Ok+ZB@l=&ur8f$wkvsjy0TFbxR>}D7>AIpok;bMi=HXlr%;|zN;(XH z35(W`FxIG-^Ge+5vTtLh5AC!sBabO|SdaBsLhqXk!)CfRaH&XPu5NHP8}n;we=0Ou zsVnQci#xiI6usQtUIgu&s`8~Osgq75v@6#?5}u_w*dT(qu#q7 z#B{&IbL-faX&~OUqOUISu&nJY2dQ9t(W^xce-z)EpICGF>s@xHr=OQSV^dlz7t-47 zNiAMPikqq-V`Shn^dc;dMr%a0RN9IThrOZMBd&;*Hc_9=Rj?0E8wU=d0{$7FmqnE+ zsIYNR5^{mm@IbC(C$de@Bh;<4h&SV5o{6w>Ebi%ge9pzLkJ>UPlsIS06Qt9USD`A# zwbQO>CrZ;N>n=ZW?S>4%Gw6;dL~|P%lnm@)X4G$b9ol>5QyPTG`oDLi|KTQ8#^55K z#di&QeZ>v213!VP(d4>$paST8vT!iLmuUrGhcK)h)b}*QNn^-M>7Q=Hv|2%1Ck}(c z@Kk%=@d2Iu(%RkU`!u)x2I9dmC6a^4a2_`BH$jp(;hFRd(5Ey1`o5Q)N+1!UotxOH z6wmIFo#;Nm4$%N|v9+$q~eJ?>}8C$<+aQ$M6`G|u=Ti_uQtp2uDB=|Q-uW{ z-i@dW?5u~M?8hDa=9%(b6N(HSg15RcnZn=O&tb{}Nfdw1t*nUe5(iMo)MK=?R+-F} zq&f}qO&15H%BriIJ7g6#7YLUcrIgT0Y#UjHNY)5v+h**E=p z0NfG09Mn=x9n&sTfL1ty92iE_#U?8AJGcXLb&n|-t2!U#D8}(xP~ti1&_(bs3%dN1 z>+*{$B~8Ue(zxd?wJMbppV#;ScvbJOU_4%oh1N^UBrP|$O&O)EZEQgSlw`2|y5eHw zj9uvxh@Xp$4!6gaW`5`^9GkukqvebOHRFmo?7w7pR1+ok_;cDaDwqGZ)46 z2Lc5YE#{WB!j4OrKJc!gAPNjz2zzyVlHyI46 zy&D?(tmiYL=LJVVjw$2)!xSDK*nv?+#ZZcAfS31dv~RoiB2Zo+Y9)FOLa-^+Cyt$) za4(NrLHx+doOF(e8|Z&Z-nqFfz%Q@Y=H!AweXhr-kf%`%n{=**g*~5B3xuS}uM?HJ zGgYoa*=<%`pTie)(9i$9Zyjrow z)whv=6wlPa>ud7>8b82#M43#wiP)H+dafRMB0!%?xj9W>Ptx z=Ifk2a0TdA)92h*1+QH&Pn%CJU_);8*)JY31;2&M&Teb9n3aAl?&)|0SC;Y>8F0el z!P6M@-CGaZP?J&Alh{9G3m~-+y7)Ju>W6J$`AG>?s+lT8_^5ckoEEN`vyy=fXM(1k z4?Aw|ixS#(g;-Bp{7$&|yKKFv*Inepc~qFo7Q**NIui_%c`SCcd|li%fJXuU2w2O> zeVS?l#;7Pt&a-6mTpCD1iQHZhK!99pI^6Fz@2ViXJHJ?O6#o%8+8-QX2!>g_!pb zi|OWO7AF*31@dIigIt%PCvy_PE#CKEgQt{@3%7Ngf0i>Q6&fW)NhQze@=76L498W8 zJy64!tL1MYLB<3`{3is+?6_?f0iYu%kfuA;qi9H!$zT35jNMK+P9dqQ9iNID=Yft+^ zrxksiGZ2r8Wa&Hb+|@8s3{G&f#bW;r|0>z=RvCAvqinv5znw0Dy48%3N%Uuv!*rbI z(|^>W0Ikw7Gnt{{P_0WfOGGz>rWZGkyNf^qR6D3}Hx36_}Gave}(2UOV&#KIgmQy=9-O1=H*(Zf5A1MEHrS_6egcHT^7oaX8|y zKX;b9B`g)rYWcr3q6b^E^+U2UsI@YzUal?)wX>+L3XQktGhYnKa6z5SO@HD0$J$tw ziu%W&an)EW>OijjJ6@U7>Tzp*C<@Ysd_R0V=obUo*2g8!R@iWXsF<*b46}A**K0GI zX*Y=eRfBM8?_acuDtYSMPU9w%_`2|eh9I%+iB`nXx=>3hcX>0^*F0zzd>A_voAy_5 z5~ntc)_4O49i@KX-BS(L#>S)?Pg}dr-T~zpO(@?f&OE{ga#&@Ws)_29NrEXMk!r=U zhU8ibzC%W?6QT~rNC=xFjS_1y)q74OVt%FbZC#2$V8nEI zp#RHPL@DxvJEL8a$+uZzKfJTr+@_rDOLzGy`wC9Movjt_5P;zc_H|*ht97QJAubmij8m8WO; zAkn=#GLk1w0t^H=W<(g@oe`6?qFDu#)&N3EZTmQhdNGygaBj1c<7@5->-YC+cre)g z*vTO|Fj6{kx3A+z_8xpJ*k$q;qhM6^T7nkB8qla^|66^Pf@(nW@RA-Ew;&EBYfsVM z1eN~3W@DLgm(6Z-Za#4>L4)wZ+c{$vr>m-n>}SuiV$Jft3<;Pskb9rC4f;3WJ^RMJpi-@7%cTbdt-4?gtxA70hqaBsa&ay6?^LNkhG_{rG*Ano`laTt=hR( z7*0x@8QP3F*FlR7LqJuxwYY)vcb`Q4ZH0v4=yhIn0;CsoPrSb#>@gwft;l}II_B-G z;hk}Mio(jM@b!&FUTK_E4lx7x05A{k5b3$Wkvj+z@cxLA9PyY5ea6{M`OQUnO{GP3 zxlNo?42QTDYNFG_@svFO8yGIH=i^_m>WT_0Tiff)%gSnclWxLBnB27e=c|o{g#~40 zWq+@UWI8ssN8Q+=1ue#rHY>iLvquZ5&#JN9?5#c(&y?vy7M`HK(@$#i#5Sjr<{+-% z;|N>4Hwi9zc{5NY)l8^1MP6w>_UZ(*5QjTz63ZTM)4#klja@n_SCS+FD(Tg?+>w4# z7pcn{opN+-vyKFfQ%n+#(L;t%YK7Tj#t|aKO^(`QCFQ>*ZBYz^)NI%{wmRH?-dB3` zI^B^f|8#r5+4+5Jba}n_f3KTSL0=vpx(m4e>7QmF;12SzUYG0e1=BS6&9%*(=@g`` zEsuXmLR;7P^!^DMRKzG^E)#%r!*p4Gh>P+MdUJ?IN&?b&b#4=4D_{T5z3_vtX(pAi z@t$GkVyjq*j9dp1&fG+8g6w)!j5bgQfT%|9&7U)Iw9lu60HH;z)y3_dOI55y#R%6L zS39Z+g#Z=U!{c@hSXViu7U79INL)u-z$dbuNDJVcJqWj|z5I}EN zgMXl1Ix^Lip>u%=1p3-Ht{}`NN98YJPZ7tqS2=qeobPg)QLV)*E;Jdm>A`(mBZuDY z=l?APyN14HAX1Tv6qT-1uuE~E^h3PepAp}nH5Xi`>rs#v2q4v?EhgDqSZGl>IJTd1 zGp?>kl`oCzh5$(Ut5EJZl4lGZ*wne4qd*%r9F_m@mS?2Bs zY;NhaJsq?O$_V>RosoR~IJ;6n+uP7R{epN(`3B;286)cLV9#?3_sbES@jXjj}8pa?-|0}XTKRx@|GJLD8V#Bd03P;R+rU5T_WqEmd zeqPD(whl@MMeTrs5-jpG@vlpww3-xsaZbiSZr@)$@cZRq*HY(8R+)q1)TN8X7$|@+suLD#wwdJnu zlg8}PgBl_-t?CA18}RV(NJvNkn#Mf95asiFYj7L2Iqw32O?zXJnk++)-=l-3}{)o{gP-xIi@7 zfDg5xXJTov4Apgba1iV}S`~Ev&E@j^oZEi4x6WupE}M5O!=|myY$jW`!?mxzLi?qu zH<~z{Q7*x~H*l{Hjd|9%G@tw}4F(4yNItu(P`5?Rd+{Gb4=fFjRA#XEiNociHYIIS1 zkX}hkO;JiN4Y-Z5y2Vy+^Yq>;silnQa_fMYm$|buY603*SIYBaR#s+hu&sFI<#-Z} zdX1jw4uyGgiX_}b{Cr3fl>b} zeIaKaAaO=eE6`5E=LnA!AL5EoT^%*&{bFYgzHjs6pvZ+p`GygLJexzsED`HP^*fpvm2Zx1I1JcDEi$i-`bl`vl$v}b?fNNnbSI`_W4mJas1qB7&;*J7F5I{I>;_RTzmZ??L zmEmAx_u|?m>n1Jr%U$OhIj^P4IhifmJ57$`J2|$wOe1^8Un@pVKTcZ>knnKd`cxu0 z<;&t(c8?I45hES+>xN-X{IlxhRNoyQW6_6suE1Ck^Tolz@RH((~}$Xt5LUd^{~vF3C+RGJrI6KSadT0XMpDE@ncFd7AwdIlK{WpgJoXPY z(tk_2zr6JPeElckzVms^fqV1h8Gu*fPjpBQCAMF1SO?V~0Q-tbOy5t7$wvSPO$&VA zA(Y+$Vo$piw)q@5hA4@3fOl=$28O12iNm^NPjNf*5sc9%x+uSd--6qe}$a|Dc<^q56Xg^Y(| zhs6%5!#3J#U@KCf%rD{xR=V3%7aqCH*;O(!>+A+QPuLeIm2=`#kBuENie zC%zPYx#j{xfKXzB)#A*3?$1H@Xn^#ny&NFlR<=vyHNH-VJ! z8>cz~^~E7BPo25h-bW?nDG9# zcRP4O0t2NM)Y=GJ_rm)Croi0!P0N42|7`yZyoJ9oOy9mwgq->POsxKV$9Q4b zovpoz(D&$qo`v&z)x*i*o*JQaowUFm)gjg>*7_Q;BC^^}=Zg zwdZv{(57U8w&uQ)B)(j2gb_nY0nrB{PXK*c_brHa{;KSi7i?~7LVFt(#1pYQKqVY< zL3a`fvam$}_dnyr9}F^@Bm_Px0>z{W#3S;{9N?!iV8u2+tHH}~eT%Jfj2blJ`%4iv zME%lQ9)1ZGwg1uJ_Gn50S8y^Hj8!UL)aZB0VAe9K>{B z;8;Yvh#5yvroc>p+Ir*zpm`8iD3LB(kN$_ulgY4m&V`CCwR`+P*>^t>_eof;Z27RMq*Hgd!t5799nf+?SWN+hvFg`iq+5&I&?1C zieK8MtOGf#T;wh`**Vg1W=L%jA$b^yQ+DkxZ1nPd1|xvt9&*QVGH6Rne>eE+U88Hy z@_UJ{__?0)NM&3SRjpMpaoVUk5tk<9Tj#ed$N$1d2!t*` zzCd0ZX&B@P-N?r@%D;sNrbNbqh1L#!ahJ5`(6>X6(2A1_Lq+EzC(O9(d{&!ecI1vm zJ6`Yd;<(S^Iguo^sbd_C?{7u}-tO8N*!r*Cp54i+(LqU0tx-=J z7xu;eXfJ@h^zm(AwETC_pk8sQVN|p9_r8h=VuE1H0R9YHo@cr-k+PlZ^fk;5b`x(Z zV|%7^mRo&fl8$;uIW4d|{4%hOVXrVTCXkap0WFe|hV_v9d2ZA$)jaxZzZu~_C!HhuBoQZmvOltU-J1Az8;8U!#wO@$)G(jYFv{sjK1@W^g+yDYRx(tA zbMz11OEv{!NgT5zhcdNMZ&gx@q@F4Xus+4UqCQCezG4=aQz#HBe}gK9BoIjKNCPBT zFNO!)1F#7_Wq$SPM=CbvbSfSpDAkxonQhoBdXY&i>uBgw>Rr={-bWvT?`@QwHz)(4 z68;e~)n_MY4b&RYsO}JJtXA zJOPL|f>0o|#h^R6U?VUZklYo^SA?dIih~>hMy2V}0b3k9-Vfpe?{jY54|v;u8D;{D z@TJA50RI7f^6S5EY_=88!#-O>@-EyBI&2!Jsbtjh_34!Hg7|34HSPH$0|Ud9$rtTb z6$W^PTRKP))=Q-nKH#UHSElE zN0P

7aB+n_6kYmwqGnXNq+EX2Jlj{{H?3M+uFbp+DXh5%~rFYZ=(@w)C&6em9Ua z`Op{$E7HgRpUEo2G1auwqbwD5RzmqmZ@t9JRLG=-Ru|b+JXuAeV3vF73I?~Hp z()j4LTBcp*-O>(wU8nDebbq04qIP#%-jAA0Jl~^NAU#9NfzeO8s{@P%m3pg?-`l+? zi3eIFIWUKLGh=VV<0Uv7Nr-N3xY;mj(TuxK#@awG)-`75%Kertw5NOrc=T@o6!SC{TzYN zDW|ao8E!7)KCI$u2c$yI?dKF#Lj5!pX#GK5CqgNYZU*~fV9E;y1(@-iWn-dcw|y9& zUMkjqaX5!SPNW?rp~d3%U+>y#cIJmA-S*jqO79^aWSvLan~Y z-x_{bR)4$zECL0xImBh4jMGhgo6bBXeTlEDe_ zk27sbC%Lo4cQpPu7v4+_sPWAb1lkpXR14jt@g}|L8Sw{7=8jSM?{{rTJ)gJOMMoJ+ zZc3+ZDG{4EHv~cnw6}$vZ;?~H*-8*sk6C{l!coLDkB~V=;Eq3^`xwL{XI-2A7|{I@ z1DwAiF^xc0I9kAr}B;P6aru~A3t_}zF)du_!gPxV?op^=6HM?K%<`==-rnmmKR9uDH|j#JQx&icKz{!2s7*X2sjH`}TqVy+R?hv01LEzko+Fq>PT z6y&4d>i~i8OUI7rG6u;tMp)LjA2!`~j~}z^nKBxkKD2bAA)G+V3ZU4Qw?7|kZuuj+ zh@Yq>CqXwNeQ%+->Ie9wZo4zIk6hu+y-pvn!hn2V!Z7jJgMy@K@E-uaLjZZJe~DO0 zolq-u)MWg`3&vMeFvzQu1%UIu22d!-ttFjd=(J} z(&EVkOiu(KzV}?qn$^p3D94m;FXO5{jdMkX=yqWbR1Vt>f(?0-JK1rp^CpRyn5f)I zsC(1WIX)x6h0B2zf)4Gc_b`la1%?j6BiJ-EuS~xoy&!(}1+F{&6wxAz6^f+m|K_Yj z#!g9@r_v4(d_KhaeVr?oU9pvYHN|^th~PV--_X-*-n$dAt9We^ygv8hMyQW5K~^v+ z`u-gky;Dw9?rjnz$UXoK6zvpvHEgZhAFz_{i#`tkY~D}bXtdZFj4yWLY4=Z_hzqH9 zTTNLuf1alSi^e-Qxc0!~;8<`qTuVie+*%&uvR`A_TIVeNR~MYN>Zxo0@llCH_Jj?_ zSK|xJjZlXErlAyCiV@G(Pd(>nO0_)lt*aNw_v}4dKh2kWPRYU1bnBMv0BDxkpLL)6 zRlT(+CE_i3ZKXr_D)E%8C{M7+hOCRKfpxayM5;nh8}h72%T85FBfia2NJPwG=j4fTs&Ue>tyS9V&< z70U_Yu|r8sQVLJsE;m0TyBCHGUh;1Wd3P|(!KDZ|K0)a8-U_N+0S-UytMQ~6?E#oi zKT*mJsl5eAt^eH-`3m+-&P4|V#0oh6Cr2dne>oyq=_cm?2S?-*;J*6*<%k3)%SHbG zaYWLt{kJ3X1mK8lyXL@wdftwtR4nvtp&g62UULkOyd=#IpSerpN;@=;{~+6WIFtMS zo00KBl)&u}?_fwl(R_J8Ja(Q$JOrN)Dgp@=dkWV3v7vzs7KaF~h$<~=B*FhjP*Z3L*U2Yjlw+g{hV;l;WU-azm63|1!oCG`W?9aB5cz40@CQ}sxU zt4o2CwE+?#*S!h;J*$nV%~FabtQT>nB?Q^4I@Kuc!hMLcR=woWw!6Zs-t}aiQ||`l zyI2xdqZTc4hNrXdkHm6_uH ztQbj4-TvdHctLM+x+)0&)@E(I73f(%QM&k->`f8fy{|S( zkx#r{qBMWWe>tuYe(%S#(oA`x2n{3(*UZaAmtS!&pdMntP-OYl>KNLRBi3<)QU`s! z#{x9&Nja;cTGaR8$vfp{}LMj``l?0BSGDQJKxpLz^k2Y#HiyH1x82scsvsGh#2Yue| zg}^Rck4Z-Q{Jz0dS$j&@PMnIgY9kb=sb%bu_@)}2>A5g_b{D4Z!uj)WeYbwiCeES& zwGVw-zn=HX&FjkNrzt>ytHn|*-9_4{ab2a&MEL8PZpy2f zooyv$YD1>LNdcr9v{Tre(Ek7NOxw}%j4 zsUyU|i(rX}=Hj+aTUCj{joR(X{H6lGow{uE8H+mX3M4Cj2@^i?pI^e9lv4%^hr{bz z0c`#Pl+>1yGygJV+ACUUjkHph_C~rg>$wn{BJu-^-{*rm*0;HrAMTxS;IC}8SG06> zbpGPX+0ccK$}k$%zE{I(+D4u7xuUHb&*P=ySh+ziLwx@q!p<=`vNl}Tv2CMcb7I@J zZ6_1kb|&V;wrwX9+qR99@BH4oc2})`U0v1HZ>{crp6k9Zq2^ZmNt*>->@>Xj_A0sW zMt&6e4SE^LJ%*mPYPgTCSD~4SuqDE^#jQoHB3gP%%GL_-@fTPT=y|f+l6#ns2=B!W zjSBAC@|UD^#OxVnTqkg|Vse)!=Vf@U`2`+(eOuMB>8UBNmZnD5WSS`0*RpcTt)`;a zDNIlHs+x&ZXT2+gI0n{ACxlpSI<@1;MwU=<9PMDRstt{#|6X-qo##9vY_cwoW#_s4 zvAJP6#-wq_PHwv*V?0qeGxKTer2^@tqEg{%YXb~({6(52_{UxRAw#?)4a;bwq-n;Nf6ifq18L5Q>H>nq1n{@d8OFsMdFb3sRcYhJa%T>8E_2EIvE zsxCwn{8je1sW#ifZ?^^4W|c)1YGumkk>mbpDLJ`?9*)L1Zv6)?F=rY}(BJ zm2J!Xbpsh0BWf*z+{j@@|BybdtExSvMPlQDLDjj@|GW427%J2t zLe2&Z%v>@)Z_Z`66)cajL7sZMaR;z2{V{aD*jQ-I|682j+^CVz)?C%uSXx$%N7ZSq ztZXiAT2~-o!yx(yWn{D4jeLGOVb!&TcB{Q_*pih&L=)Inr{-!fbW6d`0)>RScR&RiR9`SxU z_~-ohbeEDx@iQC8g>4k7CK)xTJ@K`~s?L5J36j=q|6RnM8gN57AG?v>gl%lUQxY|| zUfimp>(c#=e(0VqsC87%#wSj9VNuP~+F^S>9NK=SM3hz^QkIZ;D_%+eoi^;~ykgOC zQkW+e%PehTe%MZ51^rUP^Zi;B?>JnfRt67h%=Xt7CtRe!jZQhFAg^8q_!9YGb463T znAUTL4;hoMvBTKQ9#pBL66|>Lk|9JuyfTTKxBR#68GA+y&R7kgO{*GtEG2@+L0kR6 zAAOK;tGkp2qZZQqf-UoMsq}TYcIpZyue9h{z{@awt0}R4cEtx95=jVe?%2Uv+maxTVN$M_VlGE)lT{@{ENTp-7P3nK*=A5IcA8Cu) z@PkxC@&oI;X?vLpuxuGR>gF^e9$45VSO3cSx2X5I*H?|-6|;ygwa}f+m@Uoq)SrOG ze{Y$+_VoYhx&kqI!Ex4p^w3z%c@aqPEpQZ9xlA1F4eQ8he=ZDiPG_3@OQI z?2FWQQR9ULR%`qYXJ^~NCGOxff&AnBhh{iQtn&&L!`&S0uK6>ixep1|iEADQHrB@A zw~c>iT<+!-l(ke;{H4jcG6g(y+N@soIw7QAC!)AOtd}8faXkApBkF6b%1{yq#fYhJ zJY>5ck{R&eMn-osQacbyb(Q;y*9z#)lS9U>+DsJ*#>tQ-n=Uk(C=5hz#CM2|?!8#$ zCI)-MpE4^vmB4-o^#iKy%uGbjT5Y!{HX&aTZbq+HieRxMPymq16taTnH@yT#z_wk56bX`3a=7Vb!jR2V5y*d3u$3X=`QA;T9qA`^N;5TA>6@1{;;iN-HKAlxAB?#l~kI5p;fi@S0shnqOBkAUlqLxF9ow^1*N$ zklO?%0|Q$oXoU1hGq!a6g&-uL=dB|oigpq3Rd_t0-YMiu9o)uaxlyl|g;Ygg{#5d# zrb|#Z1G+tW{5>c)`+AiH*o`8lpR~bzx70C#d6~S8*NyZ{Y<8H&(8P!0v-?0ka~KSY zmFTr))&4(X!rmu~LyH`gOps;UQh;>l`WtcmcNI6gss%E=(n0E01Vghp>U zCYGYWt4tk|nwx9U1nItj5}?(4b{S)wiOFPVwiB71sDvOu8*`E0uMaYAB!yrMwl@4w z$0kb|+rO4L2t8&>HZ(h)DqBPtHURoD}D)gdr-# zg7EP88UZD^mw~t#ZgM($T4(AMDe7!zgFzEUtN}gYITG1AGkQQh43f9^N9se{EYn5} z6E>@PwZ)tGCEA%-ozS&On*y(jX0?rV`O2K`_vF)`rQy57dXaPtnd{Z1xsGmx2AmF# zrlwXK1>Q2uuaC~=>!p`yZ8}kl4RR3&gg_ejzL8*lZ#%(W%p6DeO^hnTyS2P@Z3J~g zfx^T}qMqvJ^6bnEh4+lJiFrjpGw?hZmkjxrscS+WH=w4D^XL=5e*h-n!$44HwGgrR zDdl{im{el_lOQ{-ah=w;CdCAg>TIfLxRUjaK>Z6ieYlQle8!s~YHY9Ai!@tDVd1FE z5y(#5e*XS_*|5v(pLv92H{{&p?T5p3kAlzoUsbtSY0tO?N< zP(k2pRoOKnC1DG6#p}(~3l*x}N}~XP3gx)nGyyB!S;p^z=hbaGpe(d8EZ&pMQ;PT^ z;J_TAh}J71fX&8nPX{@6ifK?o2%L!RF;PXf(jUx$N_Tw8=J|_**AfPJ#!5ps9n$DX zRCsQ$+48fD355EZ7YWE09BTeh1YfJ_ z>Eaj36r4qN6eyYLePlcFhEp2;&lhf=V#{c1$P?21Y-YIaB<@Wvt>5|h6@}l>?N3+l ztlCu5Qj4lF=DwW_RTLP|XTV9J&)c7IJ}$$Dwg;tI$|2{WGaATV(?NY6Di5EPL_tE^ z%4ijV@|YX}Mkz`A@e?{4#a<2GbF0G_5pI7C+NThZWd-#g#g5ceFn`3wNpomq`Q79P zg`A)p*dgxnqTNOLVf*7E8I>`%aGH_fnom45H;0weT1*45v=BY&ZU|e&_F$^kLV7xO z?hIy3^_S6#`Q6b1EA(bli;omc((;?V)5+cExqa=2 zfpiPAzZ;HUWwm^M&r;;Sq_He$e~XC%%Ked^P8kb0cwE1sn33!!ju`xDsiCC-OQre- z4}+!O7&URx5}yEW5)-FLb!L|-EG@Lrs|}?r4A{OE#?9GWU0b8=2)RC9LB%D7wH5{b z0OPC8dlh*>AZ8>|RnvOtZ#a)7)X~?IqNwyL54s-8<%!Gso06-przSH@vx?YCtc(bu zgte}tn6|y75xHEep{Sy!M2ns*6_V1K5^$k}og&aq_u*yc`@*NcjT= z2MW~JV{Cpauc@GZrBY0OJT`Iei%*h|WzyvgGuBhhmbv_idh&8w{X4%s0`n!J3G?R?s5ZBBL}SQJr8MP2kRbisa|}&o0IBShv)*2ll7%ai zWP6t}MO86Huc9g7L!HX>ejyDFKiDv=(eql9bt=7XyZ39oRMDL~PoF_88)q>lJ{|-M znW%`FS)dv)yM-%P_Fn2kUkH}aMr!hgZyo#jZc-E`!`G#~Ux(9Sq+X3VG!NY3;^Ie3 zfl;^pcRo=o-nBlN6FM_QmsX~uiHps_K+*ukOnGbS{aoA_ozHubUaxrhVrOIWkh-_^ z##da8DwK8UZ$8azIp+l{$ z*V})ehr;7x3_TAzoh`u%<%)4-dXn?C@_-H)8r?PBG&myE7^NBp3Nvn@VBu0^nFri?(<(jEc3 z8d2+nG+B<$eUpfwd~M6KF3g{n&HgFe@bQMy<6e0SDMEvk{~kJL{NJpIuv)&Cw%>ES`4R&t_Ac=|#6>UeF#1Wpux%*J8J;$M^H? zIM>gYn6nj0$@ho8%44zHZ2!f|ItWs!c0L?~`;)HM%+Ge_{IM@H_L4D1ywo-}HYPeK zd3XprL5Vt8B5no!svSBa(?Y)|E2x%;fBwnjJ)OJb{@L2gc7wsDY(y?dhXAy~H8E6K zTCzovcTPmGdec+2>B7n=3CXHL3uSGThrJy+jcO2wMVHkNyvuHZCY96#7###KjjUF1 zWpAN8br`)Eoy1eM)aaP?4D>U^3V?z2?lsKt2_M6PfovF~@ukIi!R4Suc4+eKxfIfw zYtmxGk2Bn0k6PH<>$li#ehvaG%+~7bnc;9qX<4B)o12@3>MWc>LPBI^WxKk%K3JNB z!Uh8FAYU|4=7oG?Vq$oph1hr6X-P8Q({9tm2MJH7?6y1)?=_~5#=ekI`7q!3imORc zG@!iy<@$5bX6qnjm%ZK4V#aKV8FKpQjb>t&7$hs;FaOi2Ykg2~F zq#=5m-873$4tIqclw{Slcv%m5@T{GL|I&Ix@mv-$(pF=k8)z2a8TcxI!noGy!D58T zw&zw$`4S4ur_kg6L?nvTD#{i z>6w;07J?o7$imDFGS2i{bKnPk<|K$gst@MwBl9E`zZ0$R%s&m|jr@@9rlHBZUm*__ zBd=MqMk~VtbJ*}MIj-*or5pKPquMlB#k5( zYiuo!z-I_}2M_$r*WBPjn}`6Bt%Lg-K~0o__)A@0+E%SVts)iDG$u7gCY2touTUK$ zU;d<#{DVdEx?SNNguxvO13eo#Lq#IVKNzVDajIUW#4#<0PEGsk`ipplOo`eFznY#(Gv`1k%ONJIi2 z*9#4CamX{0T4UhJ;l>-liA*}}DyU=GOHz^!Wm)5(8Tn-Bt+dbC1St8I*lBx97*38M z-t@6mSRo+}v4i|~ShFCD-A@z;2_Fzgx> zc7BY~F@fJdg?{-v_G^vMf20VB;1EDrTOs=BBT3kElz+%vyKp|V{X-AoXwttwzSB4F^5)i(dDH32!W>7#{fL9ic z(6CV6L=12u!Wr#np!5)7%p`zKEA>sM9XVxp!E`Eym}Wox%|#3kaFho63Ba%L;uPxMc@vdcnA|AO|^C+`A+elJY`v90Ow<5H!#VyD-@KI0 zQJ#$R)KaW23`Et&@`kNOM+=X0;6loWly%mPP}0;t+)H`~yLSv? z;xr`Lg$EYfK_tCZN9sMk?;YVsj)Jn*>H9!W!p?=2*h2$?hnnjf>DvhcMQSoqg}sH8 zCHm|mR2DS;;hItM4rpDvf7A(~72(oE#eIaVaOM7(dEx+Px|cXk&NLwC@gG)c>k#Wi z`3T})+TPdx?rqpgiaxTeWQ|;fYIYa1oa%b(bhh3i#LMVeZx*t z>?P?dz5t}wuC{!TT-Yp_%7)JQXWr=WKLtSgtWzisSc)SqhYHeR6mgJ5O?swQR{;j zp^v@{4$VBS*=TIwQAS!uH%2~pMu&L=Jw^&M7?4!NKGX;DKYby=1khZX{^78&T){b< za76VyIgvx4q|&|m5>Mj6(H6cz1N*sIIDh%F*cFN&D7qMUgZ+T zlZ9FsgA+rWBsmM#vuDyuY96Qp*^a!qaHvslsD_(mV zh`{W3l?0-qsB=i~KYU={7m;y}Jd{eFW@2mHhtJ?xdJG@4hTQSHjNi9arTqd%k1=dR zg9~cm&~-#ATef>yi`)Hlbqse@1)Ib;LK$O_wVS0s7;k?-Am51Yakta`O}>Hr!tyeM z?es%KEi@3JTF6U$ErAw3Xz0M#%MTIM8`kr)xvw>@&D-S%wm6^yeKHy)t9yN&O>>wn zB*)Alu|V7rDgwk(T;L{;{+CVpad-=+_Nr*9eN075%zu)Q{8hJ)&FL!O`z^}g4KV6; zuJ5R>e(?KTXW@U{((~2N@X5$P3W-Jn2h3ePRlqB=vK-3Gtj}u-ubX#{bf(@QYbyNd zOjrrYEdG8z#`Vs2NHagJZb=_QyuS3dlYjpgv>r>ap|{wnT)skOh`{jt^5YcwZv!u6 zEc4M1%V3ah^cuN=$|q@`(7JMoRu}$$Ey4BW@Ynlig>TyY!i_!grJ!K8~0|)K?YHi_V7?#(brw7@|6Acx(E*#%~CZrk~)w5*)6-}-D z<121W3G6n9jt(t-KSVH^UULxEm#o$ME)!a>m$lqgu{_l`j@?DYt!c6Ib#JLfe|2@O zNm;XluBT9xx-=f<4-2jp@s|K-EaC}R#_p3jsCy%;4A=_PYO3OGJK@*t_YVI9aI#!= z_=XA8NB$zQh9O@XEiXh+vp&3#HO zoP@9Mca`mRPg_?}9SFnzU!ZJGCOZoz_tWC^1+W5+(~5qv0LN`FpLN8o&Be`*u5!zY z0;evO4Qgb3z3w_BKSszUraFd%->FkYB4)imp@V-b%rM>WyNI}WxZrJw3#}M(_7E?| zP*rF-`_C>jY#4|Qz&a{op&S~t%1B_R+$SPGmJ(Na4BIhGZ`-kF}VYUo!{($OWrP!|aq=^$RechAu81Pg-?9*03d zgatq({1%S{+CyB%VOOOzzYm@LG^Bz9Il$-2x&b$f7Mr~9K{7&~HenoTq;yumL`L|U zIHm>Ss2}*4?$?MO6+*(?b3RG;V}{a*>Qo^|u8XI={{3g?YP^%CqFtmf18Scx3r2@L^_yL{wx>~ZO zJJnT}lmmfei$rJw!3wl?Rr#JMJ73RRrjztSD|h^OmI(5yQ^$u&a3-4O;EVXZ7u!u2 z@5eSCLx4SUEP&KOx*xG4A1<-LfM7--H%X2ID+WxX5cDe{B?}4(8q)9keR~8v90_u1 zh3qD)cY7>};y*y<^N_)>k7_ib|Erff=Jn%T|2yMCU(fWuENEYq7rEhN$NB6?l zJ%b&0PTbS?`)s7qMgko7X`2P!#V?tTXYzT1Q^Q;GMf?Uhzn9ps4^@DoP5=&sg;dx; z>BdKp*dcfq2oScr4(i8)!o%ndwHshixvAnpI^i=4;&<>%L>Ibe?UL~}QjbeK=3J-I zH7kr?F9Yb3*cWS`_0XA0>_vTckL|D=g@bq7Xh7EMap0KA83 zuS`bOfEx2d5EGMfg#j)ReTy&6%uq7sS$BmAN=r>NRc*&lGN_ppI&q(uR3R@ zbV2lChBv&ZzBHhR0tmEtU|Eb_W(DZ@w!CVP<>-$#9IF#y;vgv-mFDXDuiP(RFfnPt1v%jPkO-h^=XL^^JQGQL!= z=;7fm$h}@zfaK6#{VP34cQma}@cq$XqCnSx3G&Op(l7>uITdrzlZYLd1i1E&{0dDi z(F!MA9%)-*;k0HY2_zAM0NNtcKWfI6aEy@Ka=M@^Dr&yOPmnaiYl5fzNJa z4p0D?H09{a&QD_G^#D~71B|#YBnttWDP?vJV-;hT+y+6$1_FlwGKfF`0t0#EBh@bw zP33E%JT0q7$XBB~tG}KT{CJ|-b{&XNz?<@h7s@X@CH(gid-bw)O#+I|odORz`+RFs zIhCG=z_Zy6BzPixyABc3{mxx)ON+hseMgPmYaHr&89_;SaPENDTEz9|$j=`+0-YJ{ z*|AtX`Y+UFaEC&U3;E`YyfzTii85O zU(AEdQl?M+09jRWeRr|R_7jGZ;z?oXXF{Fy!~i|zr#t6;dAtoj**)qdZ)eH=Oa9}> zELCol-KAZgDRs{71G_x`_~Dh3fiHnlYj<<6@GH6_W$;OmcG>4_XYE!X664BlUV!(Ti!5x~sCm*JzeT*OKy zA{@mg5bo!+T>S~+DPTN$36n`4dPHwV?s_3_p^@u`4hB61KoZ#_iKDj>Uc+6!e(vd# z0_j%d7ZK6=nvEL01CU=1O}&0Qh|(ZP#@+(I0p-AVST7cgy<^lbr}BQ0=+lN-(|Za3 zbQCL1pq~NCLTy>Q;wCXLCZC|?2)e7ht(MZ5?%qDj4&Fp$wSSVXkF}I3KbFE zfFpHel!3VW@ivM;Ei$oKfbJ1R&uFs5MLI+~)A3=}@ztiaBO%5y{vmXaVmTz7Of=t# zFSgTw|MdHIdTFp99(J(ykMbrkkY_`KU}N%f7t5~4;BX80qqXzBgTf4+^(>IK;DIV&l|et z6cE%lfh7HZjyet|-Y@CWAm{*Y0=`+qm;ln9@K*o_VyLkshzyq4hx$P~GqfiKwhjmW zt}Z!bF&-_Jq5w8LF|N1)`G+iG=%-vuo4wJ;lDK~K=ZptD2I0Tv2Yj>$Hw^$a0_81C70Ol6^@MgfbGpNQEl>pGGQyt@ z{g9|8pNT7TM@b8A2<8LwZm@(;g7#ZN+@znGy}4=n`o}PBX}J#xxiL>owi+Py6pn!& zukn3?owvGCrOE@5MA$Ns-QL;(E14kauHpy#=s`-okL54oxwL;xH0%AhU~zyM z;v9x{vnp%4q%rx`4Db)qLJBkx^?V6rQU5T1kTf8ZK+gC=Qa<8qEGV@b(*7EQgc%kD zg8*E4Rv~|pI;>t`6gF^hIDBMz;V|Jf7-eCLfXXoEy21Qj(X&tyQZbE@0`LTPf|o3G z7~^!BNR)2KD`D~v&K^c>o!o4EZfDW!ESQA1+g{C_D^T}Mv%rh2nCz7G_VdC$jIsk) zoQ=Kpzz=W_cU}>8>fSI6@G(PesC~>?*db}K_Ym1ycTsFVbb0~9I;9F&^dc|ko93O% z0TR#!q+|rWxtqGv*D(H!+kA0-cG?BGbHDIB5cZpyB07 zePJ;1vq;az8q(8o872)2iT&mHL(s~8a-X>c7K!``9sVxEcR(A1LP&iD&6mD+&jIS@ zw`ByZtBt~=(fl|XpI7?yRc|njteq`u`eGo)zg)gYY%;lg41*~<<}Y(Irpxbk%0h_xjFbpExN&27IxN4p z=;|?xt+q2Z;alNJK()Yc!z~Ak3^qhX}AX#ZKHiPVg=2U7Ul z9qd;VvFfic=&pAvUa4!&HJSA!-z0`#@N%FWKo3uaRuGJ&jtBGG=ZchR3y}0+B@R!= z^*nCwzZlVQnAeND2)3!T3sV2(YE@Jk-AdXRHG?E5{$kF2bs9Nv-7$0}T9-H+m`vwp zYXM!o54XlH? zaGq^y^zgs4*4nf_dJITFKqEib|HN9e{l{7_YCLn}Nnz?$R4rDC){dVMTRmVDP$-%n0@O?ymxP0JMI#By<_ zA;SRyjsE(j0_U(#S$!Jd->N4SX$Q)_^NLeS1DY|M?&gS!Vh``E59A+v-V<74+3NuZ zq~KvuPKgb!MMw``*sEe09?NePxBe!8L;cYQo4#SVk zwAUH$=1L7IX+dX-iNa^##{!9wx}4-+Ne|)k{6xp_Z|B6;Md)~PG52Bb(N@NBU177n z+!WVPK44KwD8};iV)LrQ^Cg_Yd2&-Zxj+57c;8f?t%xESdPHNYIpQmzvK`wa@zC6> zZb&SUKp}$&jOX7b<#vFaZsMTa%8^?Q-fs3#+PmLVOU=A|lcm)+y32-TU6&fTrr$22 zaUt}^GKKDWeJ*`&kJx`0TFB?FH)Ra^q(bK0-^V5yXn>!Nc`~pE0L-?T5?a7{`bdneGYiyvbW%}5+oXl%8tq25?o9Yf@f*1L_^wK5;nymXxJKQjn6BB2y0VYsmk997 z&W^XmCG4@iSC(cMx|Y3SK7)g-{8h~1dGS%-37j^>C;#cGE6@3?{B?JZCe*li7H(jD z@c#1N&7Juhm+9#6y{fjb(1_?IdL0sJ^=n~wLc-a zXf9)GuxB^F*YM|4-@g|13iRLgl3{9QveSq@n=>t?$W-kh zBY(O0eTRV$1$NJ!2G`9WVK=7fCyow^W~$>6`!N&v1k(y;8C`W!SiMhO`D={_Y+f6E zEOogWZwyjY!NhV_l4tXa{nI$}Vh7ie-6;&b@iBI@5sn9h*ENUj4f(fe5t5sr^S?8@ zkaYTPD$~R$Pig)!;se_wZ|KNeKO|At4Zn==WumcViRp)m$-?Ug^1%kKZTbVub}f4+qT zmPF+jccKR%g6IscK_o!R`0Cormz;3{Vz=Ox_e?}u(8w<`(pe6*{R}i8RxhR~Rgo>| zA?jUYWTm1W8LLG$O|x51KIMS)7!1vVchR6Z3c71!lFp|q1(63sR=WJ0<*VAkC(qrU z%g{!Wwj&yq=LFSbFN2yTPiJ3JNrc(_9tBj@+(UOYqRtSnt%HvXhj^EYdVN7_p7vf7 zRFL&9uuhkB3B){MkXD5{`L*0ha=93Xwk#S{BvHH5`)J%s4(vIj8L%F`L}Y^3d5#`_PxYSdIT2W%?$C7l63?}gRf<>XGEqJNHa8yJLQ!2;HsteV zu!_+SU?;TD`A8~*oLv@V(XLE(7FA}3{%OgX7+tmlt|k^pay*hE*qc5@g1zqED%I;< z9y`7C{)S||Jj7GTYLLKau@N?Ihhx{=Nke3&_Yd*>6hoxqpt;4m4E(09cK&FdN0D+W z-C9e9&B2%cYEV($2&Sh z%pNhwVTQO{77e3lFd8`1cB1e?bN$g{N57Jge7 zG=c>97zxoyEd&5X5SftN*czq;zoZVFcb8?YN*29r|2`u)5l!O#OZ4d=omG$IROg5Z z;8o*sJssFV-vV=Q%UBA96lN`K+~M=jB%=H8*uYj>e9H471^8mYRIt1s%F8VS#94}D z>+huIhaITaaN#D?--A_frX~ux4E}thV<^9Whut78v7Q9Jbg4_!D8F5@sGib);~B1z zxHp`uko3j`(lzg0f=gT^R~ywSRFB#Su@L#?C$O(}+d9>k@x4zx&;%H^ir0P1TiP6Z z=5ZA*zyO`7u5=Y5A~sIIj$&ZFn2a3%v9KN`F?q9VlG2VpaGNuiTmxT|i(nrNof!AH z<6_T?$H6N}Y@@u*>>cTmY~zm~m>6gERI|~ue<-P%jfjkS16(@P!xW9RBs}FB5G+8U z?H(TVq}D22X`G&qxX!3!5Wl!YXIYH;65K`r&N~I3{fP;M*%MT=?0!|_2z|hYbtvbY_7Ia&xIVvXKNg*d3aol9WD==|l9hU&3aRSbU5D)1!kMsn>YcqWwY z(g}3;p%DZ&g4Lj>ioMp7Rp}^?dXj6w|8uOhBl6991EXk;)UihQ9*pS&&q%pej((J0`#7B^{A4Y6>S zunp(H%7lQw@|%#{`*mHtxg;7Y5RK#rceOX~o0E0JpJh6$71k#~{EbM!F*0~&Gk=2p z9GG?CwE!;Fdks~@5BOzJJ}!b; zct6}U-%EM9?8%G&pWL0&=lqb^l@z<^fEX?hH&wSfq<*iZdn3GHow2cZw)|x2oeWti z#3yRY@np2dSyxCS(GEa|lanVYs~NZ_AM!P^yn0@-z~}OAA|l;n5(JppeXjqovd-I^ zL0XU{z99ez1EedWvhM^$cp`Fz4Wzh;}viD=gq=fWP{t~q0fbsp8rq$#20>nq; zexT@8!G|e<>XTeK)8PbQ0j2v?o4*b|=@Quk%Aon9FMIW7{TGS?_TjxcGCxb^JK(O& z+hc!0h#6}(3}6ak`TK5?Y?Q;Kx_M2$d$uz5rW{=>=fy(XX8JfT^h@`dnxq#uF~t4q z-^Q*yv|n@OD#J2$maqz$=-ts zcDj?``Me;==hCRSl4$Ar!ZU(r@q3{b9$q;;NOVyyyP?@%g|9n3sM5D!Ls-yu9QWTOkL-Ud)5#Gmww5KHp5TEs|a5Kl}!@Dob0&M zrS|=O(LW|NPl_~y%py$JJ5kKKpzq(yqdUI>o}rKUJ3TM@X@@) z{#FfbA3;~Dc1au8Qvm@JY;yyTSoH*jCw=yE%RHh4T_L*d>c6s5-`al~A|!Z&ZX`Lu zw!{SLortIQnj^V7=WA4PtnVZ6GTXfGFxOkx0BwzN}! z$gd}EKY-MOAm-e-UM=}@$-iZ5O<4tgi|G;N8aRa_B!ekPNVg=yqu%k9+F7cSGwLKw zD@?6w{}|SkhoEcYQef6iLXMDzHo@n(d}?;YZk&z9ly4s?>krbDRak>pIYTb_QByat ztc4X@Qs5BtE!@LW=A(f=r3#Y6$6z~d%AH=|V^rTdusj|}5Xk^eQ5jNkOB_{u1^Dew zu7SI_IMpL6v7c-tP*O~4YC6#RkHtAYf*5;%gQSq5uF*~&zJGUmz|14NH2-X^IA3{N zQKAS0lhl6SHzFtX!Qyc`n7{o3!E~5@QwlA~NdE^6Z6ziGBmB!h*%gnCU7?&SJGK+Q zYom)oMhx(`$v$JG7`mH}siQ3}N?`Qg8vySgQ_X4)k%mA1}q<(Z`vE4jLu?;pX@u&H75G@7ve#>wq5`BAND*gx~{41u4O z*94W~b}emVl=OkmSHy|>FuAuLI_$H6JxG$kbt`g^(<(v=yP+&A-jDrU-d*#3_m<9s zxdDw9QYAQrK)X^CS-cxTR$fl9&YHPw^G;rl))+fL;~o8e%|hkLXayJRoA0I@f@{V&4H=)e zFzzcBki4?;zjK8)xR3k_(x6~yKO+YypfI^Tfqjkv&l+4Hpq-!Vf0{5b{WoD~N>^1! zLqHuqML4zlBS&Rvsew~gqzry~_1~i!T+%ZB%I=SrR=oG8U-V|2Vha< zfbpNiKLY~;M)ZTCUth0Nejo+CpAGQB1Ge9Il?|a;q%xamuVXzxi-H6PaG=6aFY>i8 zI1lQKj3)Uob0`@EVwjwx882KSBt^Y0)_{+Eq6TTj%Z!w2Lj>z)O(Pz@25AA(yi$p! zjmqt5GqPqcMuZhCgS3zr;C%D<;iB{b=FODzR|jTs#*w?3Ynyq?Y&#`Ne8^-ul8{oIC z(6K4EQ;oMU14T@=-BiF#k=>kNIZ}k2v`j=pQ1(v)^==PA1kSxr92unq3Yk6w)Ofbmj&Yz!~v9PewPx<}F z+EGF7o{q>@yVHw%@M2Nd_{TT2ts}PZ5dbTZN(U$wIkloYE|bjPTVJW;|t<{8KGM#l{}o{%M)3u1ShZsB>1oj>A3fSwuuY zd}pV^H|TmTKrugq?dHeicLG05X1Y-=O1y13kr%dRF8~{pkVq4sVw!SzfA_ci&yEcuWos{DvSI!FBUOk6ND}k%r9^Lh(XUG8)5(0JlDnJG$_OV%Ysx z?CiB^cZCo_Mi3bp1N;D2SU9MeK4JsCcO}eTR069S-$hCtkjz?K1|#9Q+#!)UR9+cy zX0?iq5=p7?Z-w}-CR^+J)PxKl2N|-dFYVnF<7N>@2#&4l3w$aDO!1TK zwwrFVc|m>qK8)jev}rv=ixi zG-YSp8#%&WPcxTeJ@W?5ZPu#ZRzu#i-1mG}g()!#t&VgyVc7@_1Qm-{-+X;(pR2V0 zLG~aE#kiKfzNfJ@K`3{)&=*q(3DnHQC?T@h?78z3!&jiH`IE`eQ{1hE|DZDDH#WnY1!Kw z6k$ANXRQDiI9LANxVW8x0IL=0d^~XKZRpo?2Y)lv!^M%p*aZjH4YMh@6evLpdC}b0 zf8;m(EY5-L**U?KZZc}LC4>&njKK;7F+M(?lq7WmmbAqXB>WeB5VOC5x5$9;q)8bz zZ5)FPldiDg*Z7;HL(0rjo+clY1($qrUoR`uOr!GPnDx6bohUX;+y7cx>bGFgC% z5x|Qn*VYAy$)H{yzol}{3}HGY!9R(F;B?;Y`;mq)${S*devear@ZPh>V*UD6H3bAX zi5Mo=IIP64Ycx3umOEWW6G)}a zOp%PCvn*~*4(iLF^?DZr$ z1A5Juf|6QnoiF&NyMG7?eMV~56ctZB?7owzRHX^3~jcz}&cNwok*r+%)88P?0M^Una zD}xy=T5q>OlCzp7J&BeV5=_78<()Vg3)Vh++B0dblX-p*eJ!2NHnb?;O|ge1BR6-g ziktAdJuI26H{oON;w#V8t5$ymx2S+3rajmxpr%I4C$KVKNfuF$yZSE8q6_2Ch=Leq zOhFB(zVOa1`Kn+&i*HLs<|S4K%5# zmgWU#GL1ojOPoHGdy>=eEv}F#-TBV@(KYcEelHDC*W7y0nSckD$*RqQ91!f8@J~2iH9g75 zQ!A4db*>f?DhlDm&iV^Cx3;+;xbVBr%F!ur%TQDKqpL?wUpQmea=)l;{bADUcTmsq!14Qj-~IRA&2NTb zSkJTGT@QUxl03GRR3 z<_I~s7#Va>?P*^#P3=O5L}E!rmXRuSk@lb?BNu2NZ#YaCL(8R5h|ztf2ZgjgDaok9 zK1)xR#8IVM+}y9`Xza92$VN7kdq&;ssXm2Oh4c6&>XUpDviYNw!0pB5D6|J{t;9y% zY0?^=271LpspSLT*MhsYt+=E2d)(6|qrdyIo9|no92CCJu`${F0**Qf%hOSaf@1=C z-KS7gU%$W{_2e1d6&{a`ZA4YU3#Ll+=niXEXlQN`HL!u3Q4rm+nsOgydc8(HD92`; zp*hbY>Br4IVHD@Iq^kHK*#~nEN<~C{$gR#(Dlo`G84gp}TIj{Qo~^fK3mLEyp7~NIp1uS+kiGAl9r404zpTG7Gc|ww z;^R;8>@*;l!?Rx054N~wq%AU?gIN(8AGFex1gM^efHg908AE-Gx9vAciC?alh>K2i z#=}#O+CIqxk5m!Vvk_q*?c*v(5M$AZkb1;#UF6YZ_evkwJ0{U@qDIxkyaJx(S_Xr? zC`ripP*|HBa!RGBsE=l>XkWeCcpE@^0hjZ#a(=m!--@>($<2L2-Q9 z(W!%B#*A1bUW_8goY0tAJES^tb;W4>*a5kYGNI$5A=WEM|8#|XXNK;jOz@YWNdqxz z9Fz8tXH{b>92cc6Zqd8s8eD8A#939Gz>JK#mRLvR81=B#M<3YMN%t0eb;~o+wBQ}p z_8%6fxqYd8Uy+!2nzQTEqmz@9xU)-WC}k7E={xals7wV{6@gp5C+3Kui~;v~n`dzpe+me{7( zXE@nXUugD-;Cn~MV#-idhNEm6c7+MZGrIT`y=2<#G}((GGj|`1ZFe!ix4liYF-%5j z&_3McgpC~~`-p_tr|DQcvnd0vzdH5U)_#OT%#2@+b)&u>>C;Kzr~pG^=s!Ih%7#;8a;leyTHVuBB+D>k}*U@|1@ArRB2HCctr7PI)Zv znQXARUsV{?EF;?P5*7y+8bwqc;+v*Z0!PmIsmu!drr4+FCe=GqP=X#Z){Py@5+_sc z-@i$UCjd54@v55N;AKC|Z=pf!c~h4$!7Qw^oQBdrcLg2`>$ozU>?Nspi;b_BK$}Sx z7Itwe^KX0w&$a(ws5OhF0G2X05>dOO>V z99Iz$Y|AH}F>BU|zKixb>hhf&7$YKlx$~k>jghghA>Ufvi@c<@0?#8VhhRZl3rRiwsOk}HTdL_K)x9CQn4W%GH*aa(ED{YDn- zFC;efB2zF_u`cop`q&;_B{g-XE4|z%^f)*PcH^LNNL)e3B+WT=18LidL^pJUF`r)Z zFXNt3Hx=01>Y0OfJVp6%W&$hdXOj?MZRG}xgos70aq$MtpOXi{CGsiiCVe2Iq+9hQ zH3?C~4e+W^z6|3B=d_<&zC_R9U1r9K8kv{v)`wCd-ZLC=s21|Ush%4TD(H1rX!bVG z(|}VNvIxmW9i9dzM;i0tGCu}U* zxam8bzKlqK?zG73No|6H-lh?%Llf4HvhmzT}1HmksKd zcRib%Rx}Ygj$t`A*?uq*4%re?YX>}D8dI(?N?)jxp4?v};QFP^TC^cNat^YU_&t%v z#%}K3zQkcLvMZDfw1IwZjLBw9J{veDy_JrQ|9kY=L!{cMY35|}#H<(^9Oly#{nGf5 z`3ocW00!pwlN=2R1~PGl+>dh3(5R>$QS_sK6w}ht`#`@QvXfsg@-bE^TiSWf=!jH4 zQU#mClB_fMbxB{R^`Oa8Mg%hL}p)cssA6BP(k0(bBk80RJ0Ax~n z2&eTJ>)8V(kPO!Lz7%xR-@PNnnEk*E@9Nen2yKnbGN>CPfyO~zS>wJHvUuy5RI{{ z^F3*}jIdlsVE8QJ^AL)%L9Le~y?{g3IhI9uwBrTH#w=VG%%p1F-$GNbk}_=ad9oiR zvOV$M+soHAsmApICV{5mc_i`%W?ZSb zFw_+8MFKU1p0eyQiGJkTskS6x0~lK|QC|&ab+VCqBx69eRLLzT)0ADSTS+i#VLn=H z-p&)~l%QP8A*fL)873nmkYKEZlDzg<&h9HERVS=cg*UVJdnB-`nK)Q^va}Rraf%)n z2z2nP;f*-mJE|7wDc5X!_m1sBMnd!1h<_&CwyeZgK-~94nIV!lP1yy`?HYJ;9OG#P ziTZUhidoyAa%fY0G3m~p+vT3^Z|RoJi&l5NgPdw`L6V_(As+64bZ8&FmY3$eJrlxN zbB*b%Y6(9gg|mSo)uE=^75Tt`u(c@yr{kU`B&H!cns}fyGziM z^u96_%bOfNyq+|w>RlDH2DO7QEN}5Qskh6Klr?gX4azHQzP6vJbY8ZDEs9??0)Uw7 z{eo|kR|771DhSEZ<4G?9R7hy`GO#iHf-A0TV{1{0biOKR$GUAeo9Fwyy-u5*XQgzR zBv!8;VHNnuuf;boh20Sjy-KV_Jo_n-XoyBkbrUob5g1fkBBk>hZZBwBZa_%6<=(lj zM!mnhVVUYCe_i@0%Js0vS;xxi=qzNvu9(LkNS22t&J+qNU(Aduw%}LmWF=oUu_`vI zs*PXBP$7$Ox(8I;w_qoxw%V8$_#$+z{T&~OogjiAl{x{$rWWH8czHmODOZxXXh+bv z*rJ@)wirYx_+SnVJ`)?V)9zcvsWo#29DEuhc%|C+qz7Hm{vvolYO#nybSSNMa_ z%6Jps8X4Ym<-)yU7u1;D%cJf{y7)7}9u_fin{WTdHHx09VJaD1n$i12+w?jp_KR)d-1{!v z8p|0Q zXBfAscd2zn+x8A%KjESdlzM)h39d!UdjBC4`5eV5^>XCh5+j32VW|3`cUuSl0%?}b zF>=pxL$sym-l&TvOs>X~$~aZ%GOT?MBP><-MZx4z?Lul2;`;>3mxmzj=t9N8)C}rz zb?{-kLk4!WG4i#3>xMY<_FljdnxnE#cXAqnQ-Dbfnw&|p_Yg68o8Dqh&9S|%)nvf6 z(6YZx&DVgG5GCd}Rt&4=`edK|a=qLHD|pRYd6MIm(e4SpRz`1eIUanRJ=L0wwH_^* zBvWqNW5&^7{gINsy&)BY@3l4EfWwQR7f$kVEhzeksB0Wj;kYfxy3pC5cPpFkH{cEx@M=Gxh|s(y%$v$h*;H-PYp!C(a%aywl_=w;x0WGg=o3F_{!$nm z!l0eI*P^k^UYIbj@j<_Ky^&Uw0-E!$PImaGn4=WVJ9{ zUU4TSOD6LrI5{q5XC>*o^}H3C{jiB3Ua3&af+WZi#z`K zbJ6$uI5fCC1(7}_eY)Q+8-%+Bz6vt2ryfGtqLBNWwGU*rB@0?9X;`4ahhey2b=>_aX#z5GR@Hp+Ze9kv@ z)=}+OlhX~UN2F8MwgdYN1}|}pGlyVt^5T#Bzgy7>%F`SeX+9B|D z+n$KGsEi~6JxvysB`UFW=xPQ%k}HpGdN-GHJAo%UsQ>)5ASNk{jaxPm);`=Zj# zSL)3Z9Uo3!ssmcCDId*}lSq~O`XWO<7=K}{vY}{h%YkaQI?UY9@GP5?;lt|VtC1s~ zNEkPIf$fy#n$$1tDCj*O9FhUARc}@NaXW$0o zsWcJW2m*H{yf1)6eYI7kQkd!jo$x{^+xe5}l#Og)Q(j;!+s0>CS;h?M*D;yiGd}6v z-x>LJ>|zo?Nz|GrQ}yBgm_x)s=)(GKhS01{<}Me_1;J9ih6Ctx{Uj=w=ayvs$&q0@ zB!n5T?con8=Mfa05vY+*)RP%rOLOW*1 znAs7b;V{Z|)nHsV*JO_HN(hJQ-xniXf6lBj)SN1gfX2FlQ`B}?MQa_P1LA9q11hq^ z)D8fb5?&q*p*{~=vg7{5e|d#Y5gy@G>w7Z0>M()1+meJ0Jd6mIJ3hr5HS}QQDY6JQ zK2@ASyRWq`et-hf997M?*c%wZKeDGr(~vkvT6;J2rm$k__|Y=m90?13oEm$?zOnX| z&)m7?tXB9iw(+QnfisYqku_;Ku2pOX4d(qLq4Yu#=Je3A&NH$&6dU3pS^XF^zomH# zhd!5kL(cmXv)L7=xj;OZT~Ia>6Xq5X&5KaD^rq@rT7C5co%%y&1l0S5^RL*{;m({= zzsa8^c=+nmjX3xT`j8q%(}_&zJr#)@zIP>mfjkkdV#IEY zY1Fwicc;u1e`As&u6;CqX}Ptq1zH)_+>BG1C9EGW@9@3Q=yvV$c+X=^Xp*aO@~>`B z7&42W0u0ShP8LNYqP%Kq@mPnH#y;lEsSD}8;MS9QfDC?-XBM3mtv zA1WVK5W$9cPIPmI59wx6@sBfnKVJNLf`k0lvILq~G2T842t`UtbP4(2JTw4+{C69M zo0j?EGm`h1(Y<$I=SaGpIj3ky2Tj1wRui8)yOG4r+@JX#DqZgEkDO%~i$0yX*^A`;V+d3A=q^ypfBD?8dpFQO0`POpo54Xe;>GY_S zih-YYHEuC6Qtf1kNrfbwF_DAZSEF;d!_P5QI6f@MxIk$0MX|}% z)YG#35o@BuhOiZXY|A{V-dG-8*g}$rAb$8<4;0II0~`LHoft{+Ah?GasQx(2QSULP z!Z$hPbR6jV&NP|f%Xo>5-hNl)wbtMF>E^{~l zBxFH0K+nd?8f>a+YQp#@n_3HSJAQ(+qJjbd9{-^=$Qo$M%wTV7^25yDeGLK7%qVbQ zYrj5?oKEbuM-N-GSHt<_U-h-znuWCm^fI36{1``;mTr?7@$4#nMxZfoJ9gqFTfZVZ zRnR*}BJq0yD?1}NSb@QHiPWj?PgpivnwZCx6uS!UzrM?=;VliiHXkPhR@<8_pdqbd)l3fZsRa@5%8o9>!sLgc-`9E9fCYJ2Lmim7*5VOHzwJXFpDu@68!R?0n zU_BdCpqcgG=BbO80edo``0PX+6Ul9pdAn?iWYkGVI41Id#!yh6ks(S>gDy`>J0;Z- zOQdSjf_E>*I}-G(uaspDVMis>SfiUUaol@lNNl2tE4R94?gbJcY5KJqwU0k0P%ktC zM;G=Zq$g?6tK-UJZ?PzoRmi@t{RBs$Ve+c~FoR7QF}+{;6ZTnVmRn{-hsV?bzKM-I z>m=60(u9RD(J5!CPS-IGAhne}$Jq<_Rw%@G&9I7c<48<;zC}`$%9OuIy~NIyyUpuR+h9;r*;@ zxN^>noAg>MVZ)OjQw6u?pBnY{dhmbCKv;*Vdr71X!pW3Bq-GSA6IgocD^@qOHpcjz z;DEo2!ef8?9eEaCdg{i!S88&o2T^!nRfc>p!GMHZNRUW(9lB633o7%0FgaVDHs>-| z^Dwf|j^DN0^Ez~rhXmV?94`(ZuPvm>oV8dP9o@SA9X-Gd`jO{m~X#JEgl|%z?l) z-$$bB?=&vdKwMR!u`*&m8>V;p9vk1Bt`SLb^*xQX6^i72EXJJ=4PO-x%fHs>PF3Kd zRh9JDQZT3sZJYLbu93h^9+L5)qtox)CweKxG=znZRoh-Cpo8jp#G0T+g=)`rX%p{L znapHYUJHk`&|VcgSltpuEPEDIBAu~k6~w-;Kl5@-L;YW>%kp=adjJ2RF6;kO>PF9^ zrFBR@w-`AFxc z)>}k{p{_SqhU3!l8Ms=%!jmzOg;{~zTuB-rm^q^>HYN|f4 zLncGjS@esk?w-C{><7}5;ok!tt=<^(ru7v^rkgCJd!w$c7=9E`G#Ew-5Pz^&Srqxc z3n&au%Adz?;1?qrbf|XnB2?8Hd*!ij3CjLd!rtS8F5lFPl5YIvJsfB3eTP)6Ecw;8 zXntYW(~moO+cG9OJAIpU7lNl+MA+aJ&?>JXXO5b%WEpinwYni~*;M&vJOTSwN}N5j z)~a)^=e0-KD7@D$g2ie4j$ddn+L9K^Yq+M!OCSKT0f zcDnmF=EwB^-#Ys#!VUDMv+5D3e-s}74R_P}=W+82rv&;RxW5XP+v46WS#Hoj#eMb% z^z8!XuD#v$zCUb*;0qwRb(2>&$4{>LTN?b$a+g3)#7XoU1SAe2!21FJi(q{8pC-5= zkh27vTm6`I{+mG{8UE||%QTQW;|CN{4&Sx}Ws!7s1f=5+kb?NH#y_Qh0-^XDrekh? zGeF!$FMR&GJq|%5-U9$0{Oa;2dKL2S-)KFsCGb!1ps2pWD+uhSIJ#}R9SGrX_>c1Q zH^HAn74}#EKlOMF`SV9X_TTJuQ?>m(ZdB(jh5qLZe^=MLRoo5mr>?-;K#1J8Yr4Bk zcgu?3OpnWNiEy{b_}_`{SNwtK_w@b06Mg>^(eH`zE>ZE}<;IB`6hIJwb0;7ooPIgv zpXRv>4`Dj+4u*la0+I(eH_iEN8I5VEpUyFW%vy>%x+Z@Ns3Vr6E(J&=`@-LiW^T~0 z?hU|T>tBW2-QKNbIz=!c=rPEr$J@D3ZF~#;!;p8;?Z9T*Xb4&ol6|+)mX^2BKdg5b z-Fr#caRdqaK1guiM(=6=LjNNg?xJUgD@sow==Oi1v4FSGf0R6I4Z%qgV)ZCUKHTp6 z-1HXuACmt$2X80T!}(u6GX?5{bpAE;++C6T+u7@pzoPdi5M-)j2>h`=_paV|Z_)Id zfbr`pDcMVLLjnPs z@oxGZjQw(@nT@F~&=O>3__G6p+~0|10iq3&eA=)+%uWCgUghM=wf1V4mw z9vOqo1Ml7g0BAow@oR(?`fD_|vUV^5{sa8KgdvB`ufDB~fTqBIh2iG*5ib-Z#r(EtDd literal 0 HcmV?d00001 diff --git a/run.sh b/run.sh new file mode 100755 index 0000000..f336405 --- /dev/null +++ b/run.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +php think swoole \ No newline at end of file diff --git a/tests/Other/PrivacyPhone/MikangyunApiTest.php b/tests/Other/PrivacyPhone/MikangyunApiTest.php new file mode 100644 index 0000000..0c2f19a --- /dev/null +++ b/tests/Other/PrivacyPhone/MikangyunApiTest.php @@ -0,0 +1,228 @@ + +// +---------------------------------------------------------------------- + +namespace Tests\Other\PrivacyPhone; + +use PHPUnit\Framework\TestCase; + +/** + * 米糠云隐私小号接口测试 + */ +class MikangyunApiTest extends TestCase +{ + private string $appkey = '0f2494a0e258c85575d1e2aa68e07687'; + private string $appsecret = ''; // TODO: 请填写完整的AppSecret + private string $serverRoot = 'http://api.mixcom.cn'; + + /** + * 生成签名 + * @param array $params + * @return string + */ + private function generateSign(array $params): string + { + $params = array_filter($params, function ($v, $k) { + return $v !== '' && $k !== 'sign'; + }, ARRAY_FILTER_USE_BOTH); + + ksort($params); + + $string = ''; + foreach ($params as $v) { + $string .= $v; + } + + return strtolower(sha1($string . sha1($this->appsecret))); + } + + /** + * 发送POST请求 + * @param string $url + * @param array $params + * @return array + */ + private function post(string $url, array $params): array + { + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_POST, true); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params)); + curl_setopt($ch, CURLOPT_TIMEOUT, 30); + curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/x-www-form-urlencoded']); + + $response = curl_exec($ch); + $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + $error = curl_error($ch); + curl_close($ch); + + return [ + 'http_code' => $httpCode, + 'response' => $response, + 'error' => $error, + 'decoded' => json_decode($response, true) ?? [] + ]; + } + + /** + * 测试获取AXB可用小号 + */ + public function testGetAxbNumber() + { + echo "\n========== 测试获取AXB可用小号 ==========\n"; + + if (empty($this->appsecret)) { + $this->markTestSkipped('请先填写完整的AppSecret'); + } + + $time = time(); + $params = [ + 'appkey' => $this->appkey, + 'time' => $time, + ]; + $params['sign'] = $this->generateSign($params); + + $url = $this->serverRoot . '/virtual/getAxbNumber'; + + echo "请求URL: $url\n"; + echo "请求参数: " . json_encode($params, JSON_UNESCAPED_UNICODE) . "\n"; + + $result = $this->post($url, $params); + + echo "HTTP状态码: {$result['http_code']}\n"; + echo "响应内容: {$result['response']}\n"; + + if ($result['error']) { + echo "curl错误: {$result['error']}\n"; + } + + $this->assertEquals(200, $result['http_code'], 'HTTP状态码应为200'); + + $data = $result['decoded']; + $this->assertArrayHasKey('success', $data, '响应应包含success字段'); + $this->assertArrayHasKey('code', $data, '响应应包含code字段'); + $this->assertArrayHasKey('data', $data, '响应应包含data字段'); + + if ($data['success'] && !empty($data['data'])) { + echo "\n获取成功!可用小号列表:\n"; + foreach ($data['data'] as $item) { + echo " - 号码: {$item['number']}, 区号: {$item['region_code']}, 绑定数: {$item['bindcount']}\n"; + } + } + + return $data; + } + + /** + * 测试AXB绑定 + * @depends testGetAxbNumber + */ + public function testAxbBind($axbData) + { + echo "\n========== 测试AXB绑定 ==========\n"; + + if (empty($this->appsecret)) { + $this->markTestSkipped('请先填写完整的AppSecret'); + } + + if (empty($axbData['data']) || empty($axbData['data'][0]['number'])) { + $this->markTestSkipped('无可用小号,无法测试绑定'); + } + + // TODO: 请填写测试用的A号码(用户手机号)和B号码(商家/快递手机号) + $aParty = ''; // TODO: 填写A号码 + $bParty = ''; // TODO: 填写B号码 + + if (empty($aParty) || empty($bParty)) { + $this->markTestSkipped('请先填写A号码和B号码进行测试'); + } + + $number = $axbData['data'][0]['number']; + $time = time(); + + $params = [ + 'appkey' => $this->appkey, + 'time' => $time, + 'number' => $number, + 'aparty' => $aParty, + 'bparty' => $bParty, + ]; + $params['sign'] = $this->generateSign($params); + + $url = $this->serverRoot . '/virtual/axbBind'; + + echo "请求URL: $url\n"; + echo "请求参数: " . json_encode($params, JSON_UNESCAPED_UNICODE) . "\n"; + + $result = $this->post($url, $params); + + echo "HTTP状态码: {$result['http_code']}\n"; + echo "响应内容: {$result['response']}\n"; + + $this->assertEquals(200, $result['http_code'], 'HTTP状态码应为200'); + + $data = $result['decoded']; + $this->assertTrue($data['success'] ?? false, '绑定应成功'); + $this->assertEquals(200, $data['code'] ?? 0, '响应码应为200'); + + echo "\n绑定成功!\n"; + echo "隐私小号: $number\n"; + echo "A号码: $aParty\n"; + echo "B号码: $bParty\n"; + + return [ + 'number' => $number, + 'aparty' => $aParty, + 'bparty' => $bParty, + ]; + } + + /** + * 测试AXB解绑 + * @depends testAxbBind + */ + public function testUnAxbBind($bindData) + { + echo "\n========== 测试AXB解绑 ==========\n"; + + if (empty($this->appsecret)) { + $this->markTestSkipped('请先填写完整的AppSecret'); + } + + $time = time(); + + $params = [ + 'appkey' => $this->appkey, + 'time' => $time, + 'number' => $bindData['number'], + 'aparty' => $bindData['aparty'], + 'bparty' => $bindData['bparty'], + ]; + $params['sign'] = $this->generateSign($params); + + $url = $this->serverRoot . '/virtual/unAxbBind'; + + echo "请求URL: $url\n"; + echo "请求参数: " . json_encode($params, JSON_UNESCAPED_UNICODE) . "\n"; + + $result = $this->post($url, $params); + + echo "HTTP状态码: {$result['http_code']}\n"; + echo "响应内容: {$result['response']}\n"; + + $this->assertEquals(200, $result['http_code'], 'HTTP状态码应为200'); + + $data = $result['decoded']; + $this->assertTrue($data['success'] ?? false, '解绑应成功'); + + echo "\n解绑成功!\n"; + } +} diff --git a/tests/Other/PrivacyPhone/test_api.php b/tests/Other/PrivacyPhone/test_api.php new file mode 100644 index 0000000..71027ae --- /dev/null +++ b/tests/Other/PrivacyPhone/test_api.php @@ -0,0 +1,230 @@ + +// +---------------------------------------------------------------------- + +/** + * 米糠云隐私小号接口测试脚本 + * + * 使用方法: + * 1. 填写下方配置信息 + * 2. 命令行执行: php tests/Other/PrivacyPhone/test_api.php + */ + +// 配置信息 +$appkey = '0f2494a0e258c85575d1e2aa68e07687'; +$appsecret = 'SZWgOa'; // 完整AppSecret +$aParty = '13693687880'; // A号码 - 用户手机号 + +$serverRoot = 'https://api.mixcom.cn'; // 注意:SDK中使用的是https + +/** + * 生成签名 - 参照SDK实现 + */ +function generateSign(array $params, string $secret): string +{ + // key转换为小写 + $params = array_change_key_case($params, CASE_LOWER); + + // 排除不需要加密的参数 (key为c、a或sign) + foreach ($params as $key => $val) { + if ($key == 'c' || $key == 'a' || $key == 'sign') { + unset($params[$key]); + } + if ($val === '') { + unset($params[$key]); + } + } + + // 对key进行排序, 按名称升序 + ksort($params); + + // 将数据连接,进行加密 + $data = ''; + foreach ($params as $key => $val) { + $data .= $val; + } + $data .= $secret; + + $sign = strtolower(sha1($data . sha1($secret))); + + echo "\n[签名调试]\n"; + echo "key小写转换后: " . json_encode(array_keys($params)) . "\n"; + echo "排除后参数: " . json_encode($params) . "\n"; + echo "参与签名数据拼接: $data\n"; + echo "sha1(secret): " . sha1($secret) . "\n"; + echo "最终签名: $sign\n"; + + return $sign; +} + +/** + * 发送POST请求 + */ +function post(string $url, array $params): array +{ + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_POST, true); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_POSTFIELDS, $params); + curl_setopt($ch, CURLOPT_TIMEOUT, 30); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); + + $response = curl_exec($ch); + $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + $error = curl_error($ch); + curl_close($ch); + + return [ + 'http_code' => $httpCode, + 'response' => $response, + 'error' => $error, + 'decoded' => json_decode($response, true) ?? [] + ]; +} + +/** + * 打印结果 + */ +function printResult(string $title, array $result): void +{ + echo "\n========== $title ==========\n"; + echo "HTTP状态码: {$result['http_code']}\n"; + echo "响应内容: {$result['response']}\n"; + if ($result['error']) { + echo "curl错误: {$result['error']}\n"; + } + echo "\n"; +} + +// ========== 开始测试 ========== + +echo "米糠云隐私小号接口测试\n"; +echo "========================\n"; +echo "时间: " . date('Y-m-d H:i:s') . "\n"; +echo "AppKey: $appkey\n"; +echo "AppSecret: " . substr($appsecret, 0, 6) . "***\n"; +echo "A号码: $aParty\n"; +echo "API地址: $serverRoot\n"; + +// 检查配置 +if (empty($appsecret) || empty($aParty)) { + echo "\n❌ 错误: 请填写完整的AppSecret和A号码\n"; + exit(1); +} + +// 测试1: 获取AXB可用小号 +echo "\n[测试1] 获取AXB可用小号\n"; + +$params = [ + 'appkey' => $appkey, + 'time' => time(), +]; +$params['sign'] = generateSign($params, $appsecret); + +$url = $serverRoot . '/virtual/getaxbnumber'; + +echo "请求URL: $url\n"; +echo "请求参数: " . json_encode($params, JSON_UNESCAPED_UNICODE) . "\n"; + +$result = post($url, $params); +printResult('获取AXB可用小号响应', $result); + +if ($result['http_code'] !== 200) { + echo "❌ HTTP请求失败\n"; + exit(1); +} + +$data = $result['decoded']; + +if (empty($data['success'])) { + echo "❌ 接口返回失败\n"; + echo "错误码: " . ($data['code'] ?? 'N/A') . "\n"; + echo "错误信息: " . ($data['msg'] ?? 'N/A') . "\n"; + exit(1); +} + +if (empty($data['data'])) { + echo "❌ 没有可用的隐私小号\n"; + exit(1); +} + +echo "✅ 获取成功!可用小号列表:\n"; +foreach ($data['data'] as $index => $item) { + echo " [" . ($index + 1) . "] 号码: {$item['number']}, 区号: {$item['region_code']}, 绑定数: {$item['bindcount']}\n"; +} + +$availableNumber = $data['data'][0]['number']; +$bParty = $availableNumber; // 使用获取到的第一个可用号作为B号码进行测试 + +// 测试2: AXB绑定 +echo "\n[测试2] AXB绑定\n"; +echo "隐私小号(X): $availableNumber\n"; +echo "A号码(用户): $aParty\n"; +echo "B号码(商家): $bParty\n"; + +$params = [ + 'appkey' => $appkey, + 'time' => time(), + 'number' => $availableNumber, + 'aparty' => $aParty, + 'bparty' => $bParty, +]; +$params['sign'] = generateSign($params, $appsecret); + +$url = $serverRoot . '/virtual/axbBind'; + +echo "请求URL: $url\n"; +echo "请求参数: " . json_encode($params, JSON_UNESCAPED_UNICODE) . "\n"; + +$result = post($url, $params); +printResult('AXB绑定响应', $result); + +$data = $result['decoded']; + +if (!empty($data['success']) && $data['code'] == 200) { + echo "✅ 绑定成功!\n"; + + // 测试3: AXB解绑 + echo "\n[测试3] AXB解绑\n"; + + $params = [ + 'appkey' => $appkey, + 'time' => time(), + 'number' => $availableNumber, + 'aparty' => $aParty, + 'bparty' => $bParty, + ]; + $params['sign'] = generateSign($params, $appsecret); + + $url = $serverRoot . '/virtual/unAxbBind'; + + echo "请求URL: $url\n"; + echo "请求参数: " . json_encode($params, JSON_UNESCAPED_UNICODE) . "\n"; + + $result = post($url, $params); + printResult('AXB解绑响应', $result); + + $data = $result['decoded']; + + if (!empty($data['success']) && $data['code'] == 200) { + echo "✅ 解绑成功!\n"; + } else { + echo "❌ 解绑失败\n"; + echo "错误信息: " . ($data['msg'] ?? 'N/A') . "\n"; + } +} else { + echo "❌ 绑定失败\n"; + echo "错误码: " . ($data['code'] ?? 'N/A') . "\n"; + echo "错误信息: " . ($data['msg'] ?? 'N/A') . "\n"; +} + +echo "\n========== 测试完成 ==========\n";