From 6f7a02244f3ed1f12e397400958943b1a286c595 Mon Sep 17 00:00:00 2001 From: Pontoporeia Date: Tue, 12 May 2026 15:19:32 +0200 Subject: [PATCH] maintenance: allow /partage through gate, fix fragment routing, add visibility table in admin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Extract shared filepond logic into src/FilepondHandler.php class. Admin filepond endpoints delegate to the handler after AdminAuth check. New partage filepond endpoints at /partage/actions/filepond/ verify share_active session flag + CSRF token, no admin auth required. JS reads filepond-base meta tag to determine endpoint path: - Admin pages: /admin/actions/filepond (via head.php isAdmin check) - Partage form: /partage/actions/filepond (explicit meta) partage/index.php sets share_active = true on form render, cleans up on successful submit. Partage process endpoint rate-limited to 30/5min per session. No nginx changes needed — /partage/ location already handles PHP without auth_basic. --- TODO.md | 13 + app/bootstrap.php | 7 +- app/public/admin/actions/filepond/load.php | 77 +- app/public/admin/actions/filepond/process.php | 255 +- app/public/admin/actions/filepond/remove.php | 63 +- app/public/admin/actions/filepond/revert.php | 58 +- app/public/assets/css/admin.css | 63 + .../assets/js/app/file-upload-filepond.js | 292 +- app/public/maintenance.php | 1 + app/public/partage/actions/filepond/load.php | 35 + .../partage/actions/filepond/process.php | 56 + .../partage/actions/filepond/remove.php | 42 + .../partage/actions/filepond/revert.php | 42 + app/public/partage/index.php | 13 +- app/src/Controllers/SystemController.php | 2 +- app/src/FilepondHandler.php | 436 + .../f528764d624db129b32c21fbca0cb8d6.json | 2 +- .../2026-05-06-105104_hyprshot.png | Bin 0 -> 170350 bytes .../manifest.json | 1 + app/templates/admin/acces.php | 14050 ++++++++++++++++ app/templates/admin/parametres.php | 31 + app/templates/head.php | 3 + 22 files changed, 15010 insertions(+), 532 deletions(-) create mode 100644 app/public/partage/actions/filepond/load.php create mode 100644 app/public/partage/actions/filepond/process.php create mode 100644 app/public/partage/actions/filepond/remove.php create mode 100644 app/public/partage/actions/filepond/revert.php create mode 100644 app/src/FilepondHandler.php create mode 100644 app/storage/tmp/filepond/af9a22fc91fece874a0349e2597b136f/2026-05-06-105104_hyprshot.png create mode 100644 app/storage/tmp/filepond/af9a22fc91fece874a0349e2597b136f/manifest.json diff --git a/TODO.md b/TODO.md index d00e62b..7fa3005 100644 --- a/TODO.md +++ b/TODO.md @@ -1,5 +1,10 @@ # Current tasks +- [x] Fix: partage FilePond asks admin password — shared handler + separate partage endpoints with share_active session gate +- [ ] Deploy: just deploy (includes new partage/actions/filepond/ + FilepondHandler.php) + +# Current tasks + - [x] Mandatory auto-generated passwords on share links (no custom passwords, regenerate-only in edit, rate limit on password gate) - [x] .gitignore / .ignore: exclude *.db-wal and *.db-shm - [x] CSS: FilePond pool file block border yellow → green on upload complete @@ -31,6 +36,14 @@ - [x] Update `partage/index.php` routing for new fragments - [x] Keep old fragment files as thin delegates to new `fragments/` for backward compat - [x] Update nginx config for partage fragment PHP handling + +# Maintenance mode + partage fragment fix + +- [x] `bootstrap.php`: add `/partage` as allowed path prefix in maintenance gate +- [x] `SystemController.php`: update maintenance detail message +- [x] `admin/parametres.php`: always-visible accessibility table (Normal vs Maintenance) +- [x] `admin.css`: `.param-access-table` styles (border-radius via overflow:hidden, green/secondary colours) +- [x] `partage/index.php`: fix fragment routing — `$slug` was `'fragments'` but check used `str_starts_with($slug, 'fragments/')`, causing HTMX fragments to redirect to / (main page) - [ ] Deploy: `just deploy` + `just deploy-nginx` ## Previous items diff --git a/app/bootstrap.php b/app/bootstrap.php index ba25c7c..a458ecd 100644 --- a/app/bootstrap.php +++ b/app/bootstrap.php @@ -39,11 +39,12 @@ require_once APP_ROOT . '/src/App.php'; // The flag file lives in storage/ (outside webroot) to avoid web exposure. define('MAINTENANCE_FLAG', APP_ROOT . '/storage/maintenance.flag'); if (file_exists(MAINTENANCE_FLAG)) { - // Allow admin panel through (by path prefix) and the maintenance page itself + // Allow admin panel, partage pages (path prefix), and the maintenance page itself $requestPath = $_SERVER['REQUEST_URI'] ?? ''; - $isAdmin = str_starts_with($requestPath, '/admin'); + $isAdmin = str_starts_with($requestPath, '/admin'); + $isPartage = str_starts_with($requestPath, '/partage'); $isMaintenance = str_contains($requestPath, 'maintenance.php'); - if (!$isAdmin && !$isMaintenance) { + if (!$isAdmin && !$isPartage && !$isMaintenance) { require APP_ROOT . '/public/maintenance.php'; exit(); } diff --git a/app/public/admin/actions/filepond/load.php b/app/public/admin/actions/filepond/load.php index e9eddcb..42e6c31 100644 --- a/app/public/admin/actions/filepond/load.php +++ b/app/public/admin/actions/filepond/load.php @@ -1,6 +1,6 @@ getConnection(); -$stmt = $pdo->prepare('SELECT * FROM thesis_files WHERE id = ?'); -$stmt->execute([$dbId]); -$fileRow = $stmt->fetch(); - -if (!$fileRow) { - http_response_code(404); - die('Fichier introuvable.'); -} - -$filePath = $fileRow['file_path'] ?? ''; -$fileName = $fileRow['file_name'] ?? basename($filePath); -$mimeType = $fileRow['mime_type'] ?? 'application/octet-stream'; - -// ── PeerTube entries: return a placeholder SVG blob so FilePond can display them ─┐ -if (str_starts_with($filePath, 'peertube_ids:')) { - $uuid = substr($filePath, strlen('peertube_ids:')); - $isVideo = ($fileRow['file_type'] ?? '') === 'video'; - $svg = $isVideo - ? 'PeerTube ' . htmlspecialchars($uuid) . '' - : 'PeerTube ' . htmlspecialchars($uuid) . ''; - header('Content-Type: image/svg+xml'); - header('Content-Length: ' . strlen($svg)); - header('Content-Disposition: inline; filename="peertube.svg"'); - header('Cache-Control: no-cache'); - echo $svg; - exit; -} -if (str_starts_with($filePath, 'http://') || str_starts_with($filePath, 'https://')) { - http_response_code(404); - die('URL — pas de flux direct.'); -} - -// ── Resolve absolute path ──────────────────────────────────────────────── -$absPath = STORAGE_ROOT . '/' . $filePath; - -if (!file_exists($absPath) || !is_readable($absPath)) { - http_response_code(404); - die('Fichier absent du disque.'); -} - -// ── Stream the file ────────────────────────────────────────────────────── -$fileSize = filesize($absPath); - -// Content-Disposition: inline so FilePond receives it as a valid file -header('Content-Type: ' . $mimeType); -header('Content-Length: ' . $fileSize); -header('Content-Disposition: inline; filename="' . addslashes($fileName) . '"'); -header('Cache-Control: no-cache'); - -readfile($absPath); -exit; +$handler = new FilepondHandler('[filepond:admin]'); +$handler->handleLoad(); diff --git a/app/public/admin/actions/filepond/process.php b/app/public/admin/actions/filepond/process.php index 8dd065c..6e7b93e 100644 --- a/app/public/admin/actions/filepond/process.php +++ b/app/public/admin/actions/filepond/process.php @@ -1,6 +1,6 @@ ['name' => 'img.png', 'tmp_name' => '/tmp/...', ...]] -// -// Multi-file queue inputs (queue_file[tfe][], queue_file[annexe][], etc.) arrive nested: -// $_FILES = ['queue_file' => ['name' => ['tfe' => ['file1.pdf']], 'tmp_name' => ['tfe' => ['/tmp/...']], ...]] -// -// We extract the first available file entry regardless of nesting depth. - -$upload = null; - -// Try flat structure first (single-file inputs) -foreach ($_FILES as $key => $info) { - if (is_array($info) && isset($info['tmp_name']) && is_string($info['tmp_name'])) { - $upload = $info; - break; - } -} - -// Try nested queue structure: $_FILES['queue_file']['tmp_name'][][0] -if ($upload === null && isset($_FILES['queue_file']['tmp_name'])) { - foreach ($_FILES['queue_file']['tmp_name'] as $subKey => $subValue) { - if (is_array($subValue) && isset($subValue[0]) && is_string($subValue[0])) { - $upload = [ - 'name' => $_FILES['queue_file']['name'][$subKey][0] ?? '', - 'tmp_name' => $_FILES['queue_file']['tmp_name'][$subKey][0] ?? '', - 'error' => $_FILES['queue_file']['error'][$subKey][0] ?? UPLOAD_ERR_NO_FILE, - 'size' => $_FILES['queue_file']['size'][$subKey][0] ?? 0, - ]; - break; - } - } -} - -if ($upload === null) { - error_log('[filepond:process] No usable file found. _FILES: ' . substr(json_encode($_FILES, JSON_PARTIAL_OUTPUT_ON_ERROR), 0, 500)); - http_response_code(400); - die('Aucun fichier reçu.'); -} - -$err = $upload['error'] ?? -1; -if ($err !== UPLOAD_ERR_OK) { - error_log('[filepond:process] Upload error ' . $err . ' for ' . ($upload['name'] ?? '?')); - http_response_code(400); - die('Erreur de téléversement (code ' . $err . ').'); -} -$queueType = trim($_POST['queue_type'] ?? ''); -error_log('[filepond:process] Received file | name=' . $upload['name'] . ' | size=' . $upload['size'] . ' | queue_type=' . $queueType); - -// ── MIME / extension whitelist (mirrored from ThesisFileHandler) ───────── -const ALLOWED_MIME_TYPES = [ - 'image/jpeg', 'image/png', 'image/gif', 'image/webp', - 'application/pdf', - 'video/mp4', 'video/webm', 'video/ogg', 'video/quicktime', - 'audio/mpeg', 'audio/mp3', 'audio/ogg', 'audio/wav', - 'audio/flac', 'audio/aac', 'audio/x-m4a', 'audio/mp4', - 'text/vtt', - 'application/zip', 'application/x-zip-compressed', - 'application/x-tar', 'application/gzip', - 'application/octet-stream', -]; - -const ALLOWED_EXTENSIONS = [ - 'jpg', 'jpeg', 'png', 'gif', 'webp', - 'pdf', - 'mp4', 'webm', 'ogv', 'mov', - 'mp3', 'ogg', 'oga', 'wav', 'flac', 'aac', 'm4a', - 'vtt', - 'zip', 'tar', 'gz', 'tgz', -]; - -// Per-queue-type constraints -const QUEUE_MIME_MAP = [ - 'cover' => ['image/jpeg', 'image/png', 'image/webp'], - 'note_intention' => ['application/pdf'], - 'tfe' => null, // full whitelist - 'video' => ['video/mp4', 'video/webm', 'video/ogg', 'video/quicktime'], - 'audio' => ['audio/mpeg', 'audio/mp3', 'audio/ogg', 'audio/flac', 'audio/x-wav', 'audio/aac', 'audio/mp4'], - 'annexe' => ['application/pdf', 'application/zip', 'application/x-zip-compressed', 'application/x-tar', 'application/gzip', 'application/octet-stream'], - 'peertube_video' => ['video/mp4', 'video/webm', 'video/ogg', 'video/quicktime'], - 'peertube_audio' => ['audio/mpeg', 'audio/mp3', 'audio/ogg', 'audio/flac', 'audio/x-wav', 'audio/aac', 'audio/mp4'], -]; - -const QUEUE_SIZE_LIMITS = [ - 'cover' => 20 * 1024 * 1024, // 20 MB - 'note_intention' => 100 * 1024 * 1024, // 100 MB - 'tfe' => 500 * 1024 * 1024, // 500 MB (per-file, but per-extension overrides below) - 'video' => 500 * 1024 * 1024, // 500 MB - 'audio' => 500 * 1024 * 1024, // 500 MB - 'annexe' => 500 * 1024 * 1024, // 500 MB - 'peertube_video' => 500 * 1024 * 1024, // 500 MB - 'peertube_audio' => 500 * 1024 * 1024, // 500 MB -]; - -// Per-extension overrides for TFE (from ThesisFileHandler constants) -const AV_EXTENSIONS = ['mp4', 'webm', 'ogv', 'mov', 'mp3', 'ogg', 'oga', 'wav', 'flac', 'aac', 'm4a']; -const MAX_PDF_SIZE = 100 * 1024 * 1024; // 100 MB -const MAX_AV_SIZE = 2 * 1024 * 1024 * 1024; // 2 GB - -// ── MIME detection ─────────────────────────────────────────────────────── -$finfo = new finfo(FILEINFO_MIME_TYPE); -$mimeType = $finfo->file($upload['tmp_name']); -$ext = strtolower(pathinfo($upload['name'], PATHINFO_EXTENSION)); -error_log('[filepond:process] MIME detected | mime=' . $mimeType . ' | ext=' . $ext); - -// Fix common mismatches -if ($mimeType === 'text/plain' && $ext === 'vtt') { - $mimeType = 'text/vtt'; -} -if ($mimeType === 'audio/mpeg' && $ext === 'mp3') { - $mimeType = 'audio/mp3'; -} - -// ── Validate MIME / extension ──────────────────────────────────────────── -$allowedMimes = QUEUE_MIME_MAP[$queueType] ?? null; -if ($allowedMimes !== null) { - if (!in_array($mimeType, $allowedMimes, true)) { - http_response_code(415); - die("Type de fichier non accepté ($mimeType)."); - } -} else { - // Full whitelist - if (!in_array($mimeType, ALLOWED_MIME_TYPES, true) - && !in_array($ext, ALLOWED_EXTENSIONS, true)) { - http_response_code(415); - die("Type de fichier non accepté ($mimeType / .$ext)."); - } -} - -// ── Validate size ──────────────────────────────────────────────────────── -$sizeLimit = QUEUE_SIZE_LIMITS[$queueType] ?? MAX_PDF_SIZE; - -// Per-extension overrides for TFE queue (PDF=100MB, AV=2GB) -if ($queueType === 'tfe') { - if ($ext === 'pdf' || $mimeType === 'application/pdf') { - $sizeLimit = MAX_PDF_SIZE; - } elseif (in_array($ext, AV_EXTENSIONS, true) - || str_starts_with($mimeType, 'video/') - || str_starts_with($mimeType, 'audio/')) { - $sizeLimit = MAX_AV_SIZE; - } -} - -if ($upload['size'] > $sizeLimit) { - $limitMb = round($sizeLimit / 1024 / 1024); - $sizeMb = round($upload['size'] / 1024 / 1024); - http_response_code(413); - die("Fichier trop volumineux ($sizeMb MB, max $limitMb MB)."); -} - -// ── Generate unique file_id ────────────────────────────────────────────── -$fileId = bin2hex(random_bytes(16)); // 32-char hex - -// ── Save to tmp/filepond/{file_id}/ ────────────────────────────────────── -$tmpDir = STORAGE_ROOT . '/tmp/filepond/' . $fileId; -if (!mkdir($tmpDir, 0755, true)) { - error_log('[filepond:process] Failed to create tmp dir: ' . $tmpDir); - http_response_code(500); - die('Erreur serveur — impossible de stocker le fichier.'); -} - -$originalName = basename($upload['name']); -$targetPath = $tmpDir . '/' . $originalName; - -if (!move_uploaded_file($upload['tmp_name'], $targetPath)) { - error_log('[filepond:process] move_uploaded_file FAILED | from=' . $upload['tmp_name'] . ' | to=' . $targetPath); - rmdir($tmpDir); // clean up empty dir - http_response_code(500); - die('Erreur serveur — échec du déplacement du fichier.'); -} -chmod($targetPath, 0644); -error_log('[filepond:process] File saved to tmp | file_id=' . $fileId . ' | path=' . $targetPath); - -// ── PeerTube: upload immediately (don't wait for form submit) ──────────── -// Handles both dedicated peertube_* queues (legacy) and video/audio in the TFE pool -$isPeerTubeQueue = str_starts_with($queueType, 'peertube_'); -$isTfeAv = ($queueType === 'tfe' && preg_match('/^(video|audio)\//', $mimeType)); -$shouldPeerTube = $isPeerTubeQueue || $isTfeAv; -if ($shouldPeerTube) { - require_once APP_ROOT . '/src/PeerTubeService.php'; - if (PeerTubeService::isEnabled(new Database())) { - $ptFileType = preg_match('/^video\//', $mimeType) ? 'video' : 'audio'; - try { - $result = PeerTubeService::upload( - new Database(), - $targetPath, - $originalName, - $originalName, // title — will be overridden by form submit metadata - '' - ); - // Return a special ID prefix so the controller knows not to look in tmp/ - // Format: peertube:video:UUID or peertube:audio:UUID - $fileId = 'peertube:' . $ptFileType . ':' . $result['uuid']; - // Clean up temp file — PeerTube has its own copy now - @unlink($targetPath); - @rmdir($tmpDir); - error_log('[filepond:process] PeerTube upload OK | uuid=' . $result['uuid'] . ' | url=' . $result['watchUrl']); - header('Content-Type: text/plain; charset=utf-8'); - echo $fileId; - exit; - } catch (\Throwable $e) { - @unlink($targetPath); - @rmdir($tmpDir); - error_log('[filepond:process] PeerTube upload FAILED: ' . $e->getMessage()); - http_response_code(500); - die('Erreur lors du téléversement vers PeerTube.'); - } - } else { - // PeerTube not enabled — save to disk normally (only for tfe pool, not dedicated peertube queues) - if ($isPeerTubeQueue) { - @unlink($targetPath); - @rmdir($tmpDir); - http_response_code(503); - die('PeerTube n\'est pas activé.'); - } - // For TFE pool, fall through to normal disk save below - } -} - -// ── Write manifest ─────────────────────────────────────────────────────── -$manifest = [ - 'queue_type' => $queueType, - 'original_name' => $originalName, - 'mime' => $mimeType, - 'ext' => $ext, - 'size' => $upload['size'], - 'session_id' => session_id(), - 'uploaded_at' => date('c'), -]; -file_put_contents($tmpDir . '/manifest.json', json_encode($manifest, JSON_UNESCAPED_SLASHES)); - -// ── Return file_id as plain text ───────────────────────────────────────── -error_log('[filepond:process] SUCCESS | file_id=' . $fileId . ' | queue_type=' . $queueType . ' | name=' . $originalName); -header('Content-Type: text/plain; charset=utf-8'); -echo $fileId; +$handler = new FilepondHandler('[filepond:admin]'); +$handler->handleProcess(); diff --git a/app/public/admin/actions/filepond/remove.php b/app/public/admin/actions/filepond/remove.php index 7242e3e..c3aa02f 100644 --- a/app/public/admin/actions/filepond/remove.php +++ b/app/public/admin/actions/filepond/remove.php @@ -1,6 +1,6 @@ getConnection(); -$stmt = $pdo->prepare('SELECT * FROM thesis_files WHERE id = ?'); -$stmt->execute([$dbId]); -$fileRow = $stmt->fetch(); - -if (!$fileRow) { - http_response_code(404); - die('Fichier introuvable.'); -} - -// ── Move physical file to _trash/ for recovery ─────────────────────────── -$filePath = $fileRow['file_path'] ?? ''; -if ($filePath !== '' - && !str_starts_with($filePath, 'peertube_ids:') - && !str_starts_with($filePath, 'http://') - && !str_starts_with($filePath, 'https://')) { - - $absPath = STORAGE_ROOT . '/' . $filePath; - if (file_exists($absPath)) { - $trashDir = STORAGE_ROOT . '/tmp/_trash'; - if (!is_dir($trashDir)) { - mkdir($trashDir, 0755, true); - } - $trashPath = $trashDir . '/' . basename($filePath); - // Append db_id to avoid name collisions - $trashPath = $trashDir . '/' . $dbId . '_' . basename($filePath); - rename($absPath, $trashPath); - } -} - -// ── Soft-delete the row (set deleted_at timestamp) ─────────────────────── -// thesis_files may not have a deleted_at column; delete outright for now. -$delStmt = $pdo->prepare('DELETE FROM thesis_files WHERE id = ?'); -$delStmt->execute([$dbId]); - -http_response_code(200); -exit; +$handler = new FilepondHandler('[filepond:admin]'); +$handler->handleRemove(); diff --git a/app/public/admin/actions/filepond/revert.php b/app/public/admin/actions/filepond/revert.php index 94a1f07..d80289c 100644 --- a/app/public/admin/actions/filepond/revert.php +++ b/app/public/admin/actions/filepond/revert.php @@ -1,6 +1,6 @@ isDir()) { - rmdir($file->getRealPath()); - } else { - unlink($file->getRealPath()); - } -} -rmdir($tmpDir); - -http_response_code(200); -exit; +$handler = new FilepondHandler('[filepond:admin]'); +$handler->handleRevert(); diff --git a/app/public/assets/css/admin.css b/app/public/assets/css/admin.css index 4f322e3..55e294b 100644 --- a/app/public/assets/css/admin.css +++ b/app/public/assets/css/admin.css @@ -1135,6 +1135,69 @@ th.admin-ap-col { .admin-import-log__item--error::before { content: '✗'; color: var(--error); } /* ── Paramètres page (flat, semantic) ──────────────────────────────────── */ +.param-access-table { + width: 100%; + border-collapse: separate; + border-spacing: 0; + margin-bottom: var(--space-m); + font-size: var(--step--1); + border: 1px solid var(--border-primary); + border-radius: var(--radius); + overflow: hidden; +} + +.param-access-table caption { + caption-side: top; + font-weight: 600; + margin-bottom: var(--space-2xs); + text-align: left; +} + +.param-access-table th, +.param-access-table td { + padding: var(--space-2xs) var(--space-s); + text-align: left; + border-bottom: 1px solid var(--border-primary); +} + +.param-access-table th:not(:last-child), +.param-access-table td:not(:last-child) { + border-right: 1px solid var(--border-primary); +} + +.param-access-table thead th { + background: var(--bg-secondary); + font-weight: 600; +} + +.param-access-table thead tr:first-child th:first-child { + border-top-left-radius: var(--radius); +} + +.param-access-table thead tr:first-child th:last-child { + border-top-right-radius: var(--radius); +} + +.param-access-table tbody tr:last-child td:first-child { + border-bottom-left-radius: var(--radius); +} + +.param-access-table tbody tr:last-child td:last-child { + border-bottom-right-radius: var(--radius); +} + +.param-access-table tbody tr:last-child td { + border-bottom: none; +} + +.param-access-yes { + color: var(--accent-green); +} + +.param-access-no { + color: var(--text-secondary); +} + .param-maintenance-row { display: flex; align-items: center; diff --git a/app/public/assets/js/app/file-upload-filepond.js b/app/public/assets/js/app/file-upload-filepond.js index bb59ecf..f146fb7 100644 --- a/app/public/assets/js/app/file-upload-filepond.js +++ b/app/public/assets/js/app/file-upload-filepond.js @@ -16,9 +16,7 @@ * 8. Edit mode: loads existing files via data-existing-files JSON + server.load. */ -(function () { - "use strict"; - +(() => { // ── Per-queue-type configuration ──────────────────────────────────── // Single source of truth for validation. These specificatons are also // reflected in the PHP-synthesised accept attributes on inputs. @@ -26,15 +24,29 @@ var QUEUE_CONFIG = { tfe: { acceptedFileTypes: [ - "image/jpeg", "image/png", "image/gif", "image/webp", + "image/jpeg", + "image/png", + "image/gif", + "image/webp", "application/pdf", - "video/mp4", "video/webm", "video/ogg", "video/quicktime", - "audio/mpeg", "audio/ogg", "audio/flac", "audio/x-wav", "audio/aac", "audio/mp4", + "video/mp4", + "video/webm", + "video/ogg", + "video/quicktime", + "audio/mpeg", + "audio/ogg", + "audio/flac", + "audio/x-wav", + "audio/aac", + "audio/mp4", "text/vtt", - "application/zip", "application/x-tar", "application/gzip" + "application/zip", + "application/x-tar", + "application/gzip", ], labelFileTypeNotAllowed: "Format non accepté", - fileValidateTypeLabelExpectedTypes: "PDF, Images, Vidéos, Audio, VTT, Archives", + fileValidateTypeLabelExpectedTypes: + "PDF, Images, Vidéos, Audio, VTT, Archives", maxFileSize: "500MB", labelMaxFileSizeExceeded: "Fichier trop volumineux", labelMaxFileSize: "Taille max: {filesize}", @@ -42,18 +54,32 @@ // Per-extension size limits: certain types get higher caps. perExtensionMaxSize: { pdf: "100MB", - mp4: "2GB", webm: "2GB", ogv: "2GB", mov: "2GB", - mp3: "2GB", ogg: "2GB", oga: "2GB", wav: "2GB", flac: "2GB", aac: "2GB", m4a: "2GB" - } + mp4: "2GB", + webm: "2GB", + ogv: "2GB", + mov: "2GB", + mp3: "2GB", + ogg: "2GB", + oga: "2GB", + wav: "2GB", + flac: "2GB", + aac: "2GB", + m4a: "2GB", + }, }, annexe: { - acceptedFileTypes: ["application/pdf", "application/zip", "application/x-tar", "application/gzip"], + acceptedFileTypes: [ + "application/pdf", + "application/zip", + "application/x-tar", + "application/gzip", + ], labelFileTypeNotAllowed: "Format non accepté", fileValidateTypeLabelExpectedTypes: "PDF, ZIP, TAR, GZ", maxFileSize: "500MB", labelMaxFileSizeExceeded: "Fichier trop volumineux", labelMaxFileSize: "Taille max: {filesize}", - allowMultiple: true + allowMultiple: true, }, cover: { acceptedFileTypes: ["image/jpeg", "image/png", "image/webp"], @@ -62,7 +88,7 @@ maxFileSize: "20MB", labelMaxFileSizeExceeded: "Fichier trop volumineux", labelMaxFileSize: "Taille max: {filesize}", - allowMultiple: false + allowMultiple: false, }, note_intention: { acceptedFileTypes: ["application/pdf"], @@ -71,7 +97,7 @@ maxFileSize: "100MB", labelMaxFileSizeExceeded: "Fichier trop volumineux", labelMaxFileSize: "Taille max: {filesize}", - allowMultiple: false + allowMultiple: false, }, }; @@ -85,7 +111,13 @@ if (!m) return 0; var val = parseFloat(m[1]); var unit = m[2].toUpperCase(); - var mult = {B: 1, KB: 1024, MB: 1024*1024, GB: 1024*1024*1024, TB: 1024*1024*1024*1024}; + var mult = { + B: 1, + KB: 1024, + MB: 1024 * 1024, + GB: 1024 * 1024 * 1024, + TB: 1024 * 1024 * 1024 * 1024, + }; return Math.round(val * (mult[unit] || 1)); } @@ -102,7 +134,16 @@ */ function getCsrfToken() { var meta = document.querySelector('meta[name="csrf-token"]'); - return meta ? meta.getAttribute('content') : ''; + return meta ? meta.getAttribute("content") : ""; + } + + /** + * Get the FilePond endpoint base URL from meta tag. + * Defaults to /admin/actions/filepond/ for backward compat. + */ + function getFilepondBase() { + var meta = document.querySelector('meta[name="filepond-base"]'); + return meta ? meta.getAttribute("content") : "/admin/actions/filepond"; } // ── Order serialization ─────────────────────────────────────────────── @@ -120,10 +161,14 @@ var files = pond.getFiles(); // Remove old order input and all queue_file hidden inputs for this queueType - var oldOrder = form.querySelector("input[name='queue_order[" + queueType + "]']"); + var oldOrder = form.querySelector( + `input[name='queue_order[${queueType}]']`, + ); if (oldOrder) oldOrder.remove(); - var oldHidden = form.querySelectorAll("input[name='queue_file[" + queueType + "][]'][data-filepond-id]"); + var oldHidden = form.querySelectorAll( + `input[name='queue_file[${queueType}][]'][data-filepond-id]`, + ); for (var h = 0; h < oldHidden.length; h++) { oldHidden[h].remove(); } @@ -140,7 +185,7 @@ ids.push(id); var hidden = document.createElement("input"); hidden.type = "hidden"; - hidden.name = "queue_file[" + queueType + "][]"; + hidden.name = `queue_file[${queueType}][]`; hidden.value = id; hidden.setAttribute("data-filepond-id", "1"); form.appendChild(hidden); @@ -151,7 +196,7 @@ if (ids.length > 0) { var orderInput = document.createElement("input"); orderInput.type = "hidden"; - orderInput.name = "queue_order[" + queueType + "]"; + orderInput.name = `queue_order[${queueType}]`; orderInput.value = ids.join("|"); form.appendChild(orderInput); } @@ -161,65 +206,94 @@ function buildServerConfig(queueType) { var csrfToken = getCsrfToken(); - console.log('[filepond] buildServerConfig | queueType=' + queueType + ' | csrfToken=' + (csrfToken ? csrfToken.substring(0, 8) + '...' : 'MISSING')); + console.log( + "[filepond] buildServerConfig | queueType=" + + queueType + + " | csrfToken=" + + (csrfToken ? `${csrfToken.substring(0, 8)}...` : "MISSING"), + ); + + var base = getFilepondBase(); + console.log( + "[filepond] buildServerConfig | queueType=" + + queueType + + " | csrfToken=" + + (csrfToken ? `${csrfToken.substring(0, 8)}...` : "MISSING") + + " | base=" + + base, + ); return { process: { - url: '/admin/actions/filepond/process.php', - method: 'POST', - headers: { 'X-CSRF-Token': csrfToken }, - ondata: function (formData) { - formData.append('queue_type', queueType); - console.log('[filepond] process ondata | queueType=' + queueType); + url: `${base}/process.php`, + method: "POST", + headers: { "X-CSRF-Token": csrfToken }, + ondata: (formData) => { + formData.append("queue_type", queueType); + console.log(`[filepond] process ondata | queueType=${queueType}`); return formData; }, - onload: function (response) { + onload: (response) => { var id = response.trim(); - console.log('[filepond] process onload | serverId=' + id); + console.log(`[filepond] process onload | serverId=${id}`); return id; // file_id stored as serverId }, - onerror: function (response) { - console.error('[filepond] process onerror | status=' + response.status + ' | body=' + response); + onerror: (response) => { + console.error( + "[filepond] process onerror | status=" + + response.status + + " | body=" + + response, + ); return response; }, }, revert: { - url: '/admin/actions/filepond/revert.php', - method: 'DELETE', - headers: { 'X-CSRF-Token': csrfToken }, - onload: function () { console.log('[filepond] revert OK'); }, - onerror: function (r) { console.error('[filepond] revert ERROR | body=' + r); }, + url: `${base}/revert.php`, + method: "DELETE", + headers: { "X-CSRF-Token": csrfToken }, + onload: () => { + console.log("[filepond] revert OK"); + }, + onerror: (r) => { + console.error(`[filepond] revert ERROR | body=${r}`); + }, }, - load: '/admin/actions/filepond/load.php?id=', + load: `${base}/load.php?id=`, // FilePond appends the source value (db_id) automatically - remove: function (source, load, error) { - console.log('[filepond] remove called | db_id=' + source); - fetch('/admin/actions/filepond/remove.php', { - method: 'DELETE', + remove: (source, load, error) => { + console.log(`[filepond] remove called | db_id=${source}`); + fetch(`${base}/remove.php`, { + method: "DELETE", headers: { - 'Content-Type': 'application/json', - 'X-CSRF-Token': csrfToken, + "Content-Type": "application/json", + "X-CSRF-Token": csrfToken, }, body: JSON.stringify({ db_id: source }), }) - .then(function (r) { - console.log('[filepond] remove response | ok=' + r.ok + ' | status=' + r.status); - r.ok ? load() : error('Erreur suppression'); - }) - .catch(function (e) { - console.error('[filepond] remove fetch error', e); - error('Erreur réseau'); - }); + .then((r) => { + console.log( + "[filepond] remove response | ok=" + + r.ok + + " | status=" + + r.status, + ); + r.ok ? load() : error("Erreur suppression"); + }) + .catch((e) => { + console.error("[filepond] remove fetch error", e); + error("Erreur réseau"); + }); }, }; } // ── FilePond configuration per queue type ───────────────────────────── - function buildFilePondOptions(queueType, input) { + function buildFilePondOptions(queueType, _input) { var cfg = QUEUE_CONFIG[queueType]; if (!cfg) return null; @@ -236,13 +310,15 @@ // ── Native FilePond validation ── acceptedFileTypes: cfg.acceptedFileTypes, labelFileTypeNotAllowed: cfg.labelFileTypeNotAllowed, - fileValidateTypeLabelExpectedTypes: cfg.fileValidateTypeLabelExpectedTypes, + fileValidateTypeLabelExpectedTypes: + cfg.fileValidateTypeLabelExpectedTypes, maxFileSize: cfg.maxFileSize, labelMaxFileSizeExceeded: cfg.labelMaxFileSizeExceeded, labelMaxFileSize: cfg.labelMaxFileSize, // ── French labels ── - labelIdle: "Glissez-déposez vos fichiers ou Parcourir", + labelIdle: + "Glissez-déposez vos fichiers ou Parcourir", labelFileProcessing: "Chargement en cours", labelFileProcessingComplete: "Chargement terminé", labelFileProcessingAborted: "Chargement annulé", @@ -258,20 +334,20 @@ // ── Per-extension size validation ────────────────────────────── // Uses fileValidateSizeFilterItem if the FileValidateSize plugin supports it. // Falls back to beforeAddFile for silent rejection (the plugin shows the error). - fileValidateSizeFilterItem: function (item) { + fileValidateSizeFilterItem: (item) => { var ext = getExt(item.filename); if (ext && perExtMax[ext]) { return parseSize(perExtMax[ext]); // per-extension cap for this item } - return parseSize(cfg.maxFileSize); // queue default + return parseSize(cfg.maxFileSize); // queue default }, // Fallback: if fileValidateSizeFilterItem is not available, // beforeAddFile enforces per-extension limits (silent rejection). - beforeAddFile: function (item) { + beforeAddFile: (item) => { // This check is redundant if fileValidateSizeFilterItem works, // but serves as a fallback. - if (typeof item.file === 'undefined') return true; + if (typeof item.file === "undefined") return true; var f = item.file; var ext = getExt(f.name); if (ext && perExtMax[ext]) { @@ -284,13 +360,21 @@ }, // ── Order serialization on add/remove/reorder ── - onaddfile: function () { syncOrderInput(queueType, this); }, - onremovefile: function () { syncOrderInput(queueType, this); }, - onreorderfiles: function () { syncOrderInput(queueType, this); }, - onupdatefiles: function () { syncOrderInput(queueType, this); }, + onaddfile: function () { + syncOrderInput(queueType, this); + }, + onremovefile: function () { + syncOrderInput(queueType, this); + }, + onreorderfiles: function () { + syncOrderInput(queueType, this); + }, + onupdatefiles: function () { + syncOrderInput(queueType, this); + }, // Re-sync after async upload completes (serverId is now set) - onprocessfile: function (error, item) { + onprocessfile: function (error, _item) { if (!error) syncOrderInput(queueType, this); }, }; @@ -302,8 +386,8 @@ * Upgrade .tfe-file-picker inputs to FilePond instances. * Called on page load and after HTMX swaps. */ - window.XamxamInitFilePonds = function () { - document.querySelectorAll(".tfe-file-picker").forEach(function (input) { + window.XamxamInitFilePonds = () => { + document.querySelectorAll(".tfe-file-picker").forEach((input) => { // Canonical duplicate check: FilePond.find() is the authoritative source if (FilePond.find(input)) return; @@ -315,7 +399,14 @@ if (!options) return; var pond = FilePond.create(input, options); - console.log('[filepond] Created instance | queueType=' + queueType + ' | inputId=' + (input.id || 'none') + ' | inputName=' + (input.getAttribute('name') || input.name || '?')); + console.log( + "[filepond] Created instance | queueType=" + + queueType + + " | inputId=" + + (input.id || "none") + + " | inputName=" + + (input.getAttribute("name") || input.name || "?"), + ); // Initial order serialization syncOrderInput(queueType, pond); @@ -323,13 +414,13 @@ // ── Edit mode: load existing files ── var existingFiles = []; try { - existingFiles = JSON.parse(input.dataset.existingFiles || '[]'); + existingFiles = JSON.parse(input.dataset.existingFiles || "[]"); } catch (_) {} if (existingFiles.length) { - pond.addFiles(existingFiles.map(function (f) { - return { source: f.source, options: f.options }; - })); + pond.addFiles( + existingFiles.map((f) => ({ source: f.source, options: f.options })), + ); } }); }; @@ -340,7 +431,7 @@ */ function destroyFilePondsIn(el) { if (!el) return; - el.querySelectorAll(".tfe-file-picker").forEach(function (input) { + el.querySelectorAll(".tfe-file-picker").forEach((input) => { var pond = FilePond.find(input); if (pond) { try { @@ -349,9 +440,15 @@ if (form) { var queueType = input.dataset.queueType || null; if (queueType) { - var orderInput = form.querySelector("input[name='queue_order[" + queueType + "]']"); + var orderInput = form.querySelector( + `input[name='queue_order[${queueType}]']`, + ); if (orderInput) orderInput.remove(); - var hiddenInputs = form.querySelectorAll("input[name='queue_file[" + queueType + "][]'][data-filepond-id]"); + var hiddenInputs = form.querySelectorAll( + "input[name='queue_file[" + + queueType + + "][]'][data-filepond-id]", + ); for (var h = 0; h < hiddenInputs.length; h++) { hiddenInputs[h].remove(); } @@ -379,26 +476,38 @@ // ── Bootstrap ───────────────────────────────────────────────────────── // Global FilePond event listeners for debugging - document.addEventListener('FilePond:processfile', function (e) { - console.log('[filepond:event] processfile | id=' + (e.detail.file ? e.detail.file.serverId : '') + ' | error=' + (e.detail.error || 'none')); + document.addEventListener("FilePond:processfile", (e) => { + console.log( + "[filepond:event] processfile | id=" + + (e.detail.file ? e.detail.file.serverId : "") + + " | error=" + + (e.detail.error || "none"), + ); }); - document.addEventListener('FilePond:processfilestart', function (e) { - console.log('[filepond:event] processfilestart | filename=' + (e.detail.file ? e.detail.file.filename : '?')); + document.addEventListener("FilePond:processfilestart", (e) => { + console.log( + "[filepond:event] processfilestart | filename=" + + (e.detail.file ? e.detail.file.filename : "?"), + ); }); - document.addEventListener('FilePond:processfileprogress', function (e) { + document.addEventListener("FilePond:processfileprogress", (e) => { var pct = e.detail.progress; if (pct && (pct === 0 || pct === 1 || Math.floor(pct * 100) % 25 === 0)) { - console.log('[filepond:event] processfileprogress | pct=' + Math.floor(pct * 100) + '%'); + console.log( + "[filepond:event] processfileprogress | pct=" + + Math.floor(pct * 100) + + "%", + ); } }); - document.addEventListener('FilePond:processfileabort', function (e) { - console.log('[filepond:event] processfileabort'); + document.addEventListener("FilePond:processfileabort", (_e) => { + console.log("[filepond:event] processfileabort"); }); - document.addEventListener('FilePond:processfilerevert', function (e) { - console.log('[filepond:event] processfilerevert'); + document.addEventListener("FilePond:processfilerevert", (_e) => { + console.log("[filepond:event] processfilerevert"); }); - document.addEventListener('FilePond:error', function (e) { - console.error('[filepond:event] error', e.detail); + document.addEventListener("FilePond:error", (e) => { + console.error("[filepond:event] error", e.detail); }); // Register FilePond plugins (idempotent) @@ -417,13 +526,13 @@ if (window.htmx) { window.htmx.on("htmx:beforeSwap", onHtmxBeforeSwap); - window.htmx.on("htmx:afterSwap", function () { + window.htmx.on("htmx:afterSwap", () => { window.XamxamInitFilePonds(); }); } if (document.readyState === "loading") { - document.addEventListener("DOMContentLoaded", function () { + document.addEventListener("DOMContentLoaded", () => { window.XamxamInitFilePonds(); }); } else { @@ -431,15 +540,14 @@ } // ── Mark form dirty on FilePond changes (beforeunload guard) ───────── - document.addEventListener("FilePond:addfile", function () { + document.addEventListener("FilePond:addfile", () => { window.__xamxamDirty = true; }); - document.addEventListener("submit", function (e) { + document.addEventListener("submit", (e) => { var form = e.target; - if (form && form.hasAttribute && form.hasAttribute("data-beforeunload-guard")) { + if (form?.hasAttribute?.("data-beforeunload-guard")) { window.__xamxamDirty = false; } }); - })(); diff --git a/app/public/maintenance.php b/app/public/maintenance.php index a22032b..77bfaeb 100644 --- a/app/public/maintenance.php +++ b/app/public/maintenance.php @@ -1,6 +1,7 @@ diff --git a/app/public/partage/actions/filepond/load.php b/app/public/partage/actions/filepond/load.php new file mode 100644 index 0000000..55b5dca --- /dev/null +++ b/app/public/partage/actions/filepond/load.php @@ -0,0 +1,35 @@ + 0, + 'path' => '/', + 'secure' => $isSecure, + 'httponly' => true, + 'samesite' => 'Lax', + ]); + session_start(); +} + +// ── Auth: must have an active partage session ──────────────────────────── +if (empty($_SESSION['share_active'])) { + http_response_code(403); + die('Accès refusé.'); +} + +$handler = new FilepondHandler('[filepond:partage]'); +$handler->handleLoad(); diff --git a/app/public/partage/actions/filepond/process.php b/app/public/partage/actions/filepond/process.php new file mode 100644 index 0000000..f198c15 --- /dev/null +++ b/app/public/partage/actions/filepond/process.php @@ -0,0 +1,56 @@ + 0, + 'path' => '/', + 'secure' => $isSecure, + 'httponly' => true, + 'samesite' => 'Lax', + ]); + session_start(); +} + +// ── Auth: must have an active partage session ──────────────────────────── +if (empty($_SESSION['share_active'])) { + http_response_code(403); + die('Accès refusé.'); +} + +// ── Rate limit: 30 uploads per 5 min per session ──────────────────────── +require_once APP_ROOT . '/src/RateLimit.php'; +$rateLimit = new RateLimit(30, 300, STORAGE_ROOT . '/cache/rate_limit'); +$rateLimitId = 'fp_share_process_' . session_id(); +if (!$rateLimit->checkKey($rateLimitId)) { + error_log('[filepond:partage:process] Rate limit hit'); + http_response_code(429); + die('Trop de requêtes. Veuillez patienter.'); +} + +// ── CSRF via header ────────────────────────────────────────────────────── +$csrfHeader = $_SERVER['HTTP_X_CSRF_TOKEN'] ?? ''; +if (!isset($_SESSION['csrf_token']) + || !hash_equals($_SESSION['csrf_token'], $csrfHeader)) { + error_log('[filepond:partage:process] CSRF FAIL'); + http_response_code(403); + die('Token CSRF invalide.'); +} + +$handler = new FilepondHandler('[filepond:partage]'); +$handler->handleProcess(); diff --git a/app/public/partage/actions/filepond/remove.php b/app/public/partage/actions/filepond/remove.php new file mode 100644 index 0000000..c398088 --- /dev/null +++ b/app/public/partage/actions/filepond/remove.php @@ -0,0 +1,42 @@ + 0, + 'path' => '/', + 'secure' => $isSecure, + 'httponly' => true, + 'samesite' => 'Lax', + ]); + session_start(); +} + +// ── Auth: must have an active partage session ──────────────────────────── +if (empty($_SESSION['share_active'])) { + http_response_code(403); + die('Accès refusé.'); +} + +// ── CSRF via header ────────────────────────────────────────────────────── +$csrfHeader = $_SERVER['HTTP_X_CSRF_TOKEN'] ?? ''; +if (!isset($_SESSION['csrf_token']) + || !hash_equals($_SESSION['csrf_token'], $csrfHeader)) { + http_response_code(403); + die('Token CSRF invalide.'); +} + +$handler = new FilepondHandler('[filepond:partage]'); +$handler->handleRemove(); diff --git a/app/public/partage/actions/filepond/revert.php b/app/public/partage/actions/filepond/revert.php new file mode 100644 index 0000000..b76ad13 --- /dev/null +++ b/app/public/partage/actions/filepond/revert.php @@ -0,0 +1,42 @@ + 0, + 'path' => '/', + 'secure' => $isSecure, + 'httponly' => true, + 'samesite' => 'Lax', + ]); + session_start(); +} + +// ── Auth: must have an active partage session ──────────────────────────── +if (empty($_SESSION['share_active'])) { + http_response_code(403); + die('Accès refusé.'); +} + +// ── CSRF via header ────────────────────────────────────────────────────── +$csrfHeader = $_SERVER['HTTP_X_CSRF_TOKEN'] ?? ''; +if (!isset($_SESSION['csrf_token']) + || !hash_equals($_SESSION['csrf_token'], $csrfHeader)) { + http_response_code(403); + die('Token CSRF invalide.'); +} + +$handler = new FilepondHandler('[filepond:partage]'); +$handler->handleRevert(); diff --git a/app/public/partage/index.php b/app/public/partage/index.php index 970d2f1..8dbd143 100644 --- a/app/public/partage/index.php +++ b/app/public/partage/index.php @@ -23,10 +23,11 @@ $slug = $parts[0] ?? ''; $action = $parts[1] ?? ''; // Special route: /partage/fragments/* (HTMX fragments under fragments/ subdirectory) -if (str_starts_with($slug, 'fragments/') && $_SERVER['REQUEST_METHOD'] === 'POST') { +if ($slug === 'fragments' && $_SERVER['REQUEST_METHOD'] === 'POST') { App::boot(); - $fragmentFile = __DIR__ . '/' . basename($slug); - if (file_exists($fragmentFile)) { + $fragmentBase = $action; + $fragmentFile = __DIR__ . '/fragments/' . $fragmentBase; + if ($fragmentBase !== '' && file_exists($fragmentFile)) { require_once $fragmentFile; } else { http_response_code(404); @@ -133,6 +134,7 @@ if (!$validationResult['valid']) { // If already verified in session, skip the gate and render the form directly if (!empty($_SESSION['share_verified_' . $slug])) { error_log('[ShareLink] Session already verified for slug=' . $slug . ', rendering form'); + $_SESSION['share_active'] = true; $link = $validationResult['link']; renderShareLinkForm($slug, $link); exit; @@ -151,6 +153,7 @@ if (!$validationResult['valid']) { } // Link is valid - render the form +$_SESSION['share_active'] = true; $link = $validationResult['link']; renderShareLinkForm($slug, $link); @@ -217,6 +220,7 @@ function requirePasswordGate(array $link, string $slug): void if ($shareLinkModel->verifyPassword($link, $_POST['share_password'])) { // Store verified status in session $_SESSION['share_verified_' . $slug] = true; + $_SESSION['share_active'] = true; error_log('[ShareLink] Password verified OK for slug=' . $slug . ', redirecting to form'); // Redirect to clear POST data header('Location: /partage/' . $slug); @@ -417,6 +421,7 @@ function renderShareLinkForm(string $slug, array $link): void + @@ -511,6 +516,7 @@ function handleShareLinkSubmission(string $slug): void if (isset($_POST['share_password_submit'])) { if ($shareLinkModel->verifyPassword($link, $_POST['share_password_submit'])) { $_SESSION['share_verified_' . $slug] = true; + $_SESSION['share_active'] = true; } else { $_SESSION['_flash_error'] = 'Mot de passe incorrect.'; header('Location: /partage/' . urlencode($slug)); @@ -565,6 +571,7 @@ function handleShareLinkSubmission(string $slug): void // Clean up share-specific session data unset($_SESSION[$shareCsrfKey]); unset($_SESSION['share_verified_' . $slug]); + unset($_SESSION['share_active']); // Send confirmation e-mail - on delivery failure, redirect to retry page $emailError = null; diff --git a/app/src/Controllers/SystemController.php b/app/src/Controllers/SystemController.php index 728f9cf..a0a8128 100644 --- a/app/src/Controllers/SystemController.php +++ b/app/src/Controllers/SystemController.php @@ -391,7 +391,7 @@ class SystemController $checks['maintenance'] = [ 'label' => 'Mode maintenance', 'status' => $maintenanceOn ? 'warn' : 'active', - 'detail' => $maintenanceOn ? 'Activé — site public inaccessible' : 'Désactivé', + 'detail' => $maintenanceOn ? 'Activé — site public inaccessible (sauf /admin et /partage)' : 'Désactivé', ]; return $checks; diff --git a/app/src/FilepondHandler.php b/app/src/FilepondHandler.php new file mode 100644 index 0000000..4bfe772 --- /dev/null +++ b/app/src/FilepondHandler.php @@ -0,0 +1,436 @@ + ['image/jpeg', 'image/png', 'image/webp'], + 'note_intention' => ['application/pdf'], + 'tfe' => null, // full whitelist + 'video' => ['video/mp4', 'video/webm', 'video/ogg', 'video/quicktime'], + 'audio' => ['audio/mpeg', 'audio/mp3', 'audio/ogg', 'audio/flac', 'audio/x-wav', 'audio/aac', 'audio/mp4'], + 'annexe' => ['application/pdf', 'application/zip', 'application/x-zip-compressed', 'application/x-tar', 'application/gzip', 'application/octet-stream'], + 'peertube_video' => ['video/mp4', 'video/webm', 'video/ogg', 'video/quicktime'], + 'peertube_audio' => ['audio/mpeg', 'audio/mp3', 'audio/ogg', 'audio/flac', 'audio/x-wav', 'audio/aac', 'audio/mp4'], + ]; + + public const QUEUE_SIZE_LIMITS = [ + 'cover' => 20 * 1024 * 1024, // 20 MB + 'note_intention' => 100 * 1024 * 1024, // 100 MB + 'tfe' => 500 * 1024 * 1024, // 500 MB + 'video' => 500 * 1024 * 1024, // 500 MB + 'audio' => 500 * 1024 * 1024, // 500 MB + 'annexe' => 500 * 1024 * 1024, // 500 MB + 'peertube_video' => 500 * 1024 * 1024, // 500 MB + 'peertube_audio' => 500 * 1024 * 1024, // 500 MB + ]; + + public const AV_EXTENSIONS = ['mp4', 'webm', 'ogv', 'mov', 'mp3', 'ogg', 'oga', 'wav', 'flac', 'aac', 'm4a']; + public const MAX_PDF_SIZE = 100 * 1024 * 1024; // 100 MB + public const MAX_AV_SIZE = 2 * 1024 * 1024 * 1024; // 2 GB + + // ── Log prefix for distinguishing admin vs partage ─────────────────────── + + private string $logPrefix; + + public function __construct(string $logPrefix = '[filepond]') + { + $this->logPrefix = $logPrefix; + } + + // ═══════════════════════════════════════════════════════════════════════════ + // PROCESS — receive one file, validate, store to tmp, return file_id + // ═══════════════════════════════════════════════════════════════════════════ + + public function handleProcess(): never + { + error_log($this->logPrefix . ':process ENTRY | method=' . $_SERVER['REQUEST_METHOD'] . ' | files_keys=' . implode(',', array_keys($_FILES)) . ' | post_keys=' . implode(',', array_keys($_POST))); + + if ($_SERVER['REQUEST_METHOD'] !== 'POST') { + http_response_code(405); + die('Méthode non autorisée.'); + } + + $upload = $this->extractUpload(); + if ($upload === null) { + error_log($this->logPrefix . ':process No usable file found. _FILES: ' . substr(json_encode($_FILES, JSON_PARTIAL_OUTPUT_ON_ERROR), 0, 500)); + http_response_code(400); + die('Aucun fichier reçu.'); + } + + $err = $upload['error'] ?? -1; + if ($err !== UPLOAD_ERR_OK) { + error_log($this->logPrefix . ':process Upload error ' . $err . ' for ' . ($upload['name'] ?? '?')); + http_response_code(400); + die('Erreur de téléversement (code ' . $err . ').'); + } + + $queueType = trim($_POST['queue_type'] ?? ''); + error_log($this->logPrefix . ':process Received file | name=' . $upload['name'] . ' | size=' . $upload['size'] . ' | queue_type=' . $queueType); + + $finfo = new finfo(FILEINFO_MIME_TYPE); + $mimeType = $finfo->file($upload['tmp_name']); + $ext = strtolower(pathinfo($upload['name'], PATHINFO_EXTENSION)); + error_log($this->logPrefix . ':process MIME detected | mime=' . $mimeType . ' | ext=' . $ext); + + if ($mimeType === 'text/plain' && $ext === 'vtt') { + $mimeType = 'text/vtt'; + } + if ($mimeType === 'audio/mpeg' && $ext === 'mp3') { + $mimeType = 'audio/mp3'; + } + + $this->validateMimeExt($queueType, $mimeType, $ext); + $this->validateSize($queueType, $mimeType, $ext, $upload['size']); + + $fileId = bin2hex(random_bytes(16)); + $tmpDir = STORAGE_ROOT . '/tmp/filepond/' . $fileId; + if (!mkdir($tmpDir, 0755, true)) { + error_log($this->logPrefix . ':process Failed to create tmp dir: ' . $tmpDir); + http_response_code(500); + die('Erreur serveur — impossible de stocker le fichier.'); + } + + $originalName = basename($upload['name']); + $targetPath = $tmpDir . '/' . $originalName; + + if (!move_uploaded_file($upload['tmp_name'], $targetPath)) { + error_log($this->logPrefix . ':process move_uploaded_file FAILED | from=' . $upload['tmp_name'] . ' | to=' . $targetPath); + rmdir($tmpDir); + http_response_code(500); + die('Erreur serveur — échec du déplacement du fichier.'); + } + chmod($targetPath, 0644); + error_log($this->logPrefix . ':process File saved to tmp | file_id=' . $fileId . ' | path=' . $targetPath); + + $isPeerTubeQueue = str_starts_with($queueType, 'peertube_'); + $isTfeAv = ($queueType === 'tfe' && preg_match('/^(video|audio)\//', $mimeType)); + $shouldPeerTube = $isPeerTubeQueue || $isTfeAv; + if ($shouldPeerTube) { + require_once APP_ROOT . '/src/PeerTubeService.php'; + if (PeerTubeService::isEnabled(new Database())) { + $ptFileType = preg_match('/^video\//', $mimeType) ? 'video' : 'audio'; + try { + $result = PeerTubeService::upload( + new Database(), + $targetPath, + $originalName, + $originalName, + '' + ); + $fileId = 'peertube:' . $ptFileType . ':' . $result['uuid']; + @unlink($targetPath); + @rmdir($tmpDir); + error_log($this->logPrefix . ':process PeerTube upload OK | uuid=' . $result['uuid'] . ' | url=' . $result['watchUrl']); + header('Content-Type: text/plain; charset=utf-8'); + echo $fileId; + exit; + } catch (\Throwable $e) { + @unlink($targetPath); + @rmdir($tmpDir); + error_log($this->logPrefix . ':process PeerTube upload FAILED: ' . $e->getMessage()); + http_response_code(500); + die('Erreur lors du téléversement vers PeerTube.'); + } + } else { + if ($isPeerTubeQueue) { + @unlink($targetPath); + @rmdir($tmpDir); + http_response_code(503); + die('PeerTube n\'est pas activé.'); + } + } + } + + $manifest = [ + 'queue_type' => $queueType, + 'original_name' => $originalName, + 'mime' => $mimeType, + 'ext' => $ext, + 'size' => $upload['size'], + 'session_id' => session_id(), + 'uploaded_at' => date('c'), + ]; + file_put_contents($tmpDir . '/manifest.json', json_encode($manifest, JSON_UNESCAPED_SLASHES)); + + error_log($this->logPrefix . ':process SUCCESS | file_id=' . $fileId . ' | queue_type=' . $queueType . ' | name=' . $originalName); + header('Content-Type: text/plain; charset=utf-8'); + echo $fileId; + exit; + } + + // ═══════════════════════════════════════════════════════════════════════════ + // LOAD — stream an existing thesis file back to FilePond + // ═══════════════════════════════════════════════════════════════════════════ + + public function handleLoad(): never + { + if ($_SERVER['REQUEST_METHOD'] !== 'GET') { + http_response_code(405); + die('Méthode non autorisée.'); + } + + $dbId = filter_var($_GET['id'] ?? '', FILTER_VALIDATE_INT); + if ($dbId === false || $dbId <= 0) { + http_response_code(400); + die('ID invalide.'); + } + + $pdo = Database::getInstance()->getConnection(); + $stmt = $pdo->prepare('SELECT * FROM thesis_files WHERE id = ?'); + $stmt->execute([$dbId]); + $fileRow = $stmt->fetch(); + + if (!$fileRow) { + http_response_code(404); + die('Fichier introuvable.'); + } + + $filePath = $fileRow['file_path'] ?? ''; + $fileName = $fileRow['file_name'] ?? basename($filePath); + $mimeType = $fileRow['mime_type'] ?? 'application/octet-stream'; + + if (str_starts_with($filePath, 'peertube_ids:')) { + $uuid = substr($filePath, strlen('peertube_ids:')); + $isVideo = ($fileRow['file_type'] ?? '') === 'video'; + $svg = $isVideo + ? 'PeerTube ' . htmlspecialchars($uuid) . '' + : 'PeerTube ' . htmlspecialchars($uuid) . ''; + header('Content-Type: image/svg+xml'); + header('Content-Length: ' . strlen($svg)); + header('Content-Disposition: inline; filename="peertube.svg"'); + header('Cache-Control: no-cache'); + echo $svg; + exit; + } + if (str_starts_with($filePath, 'http://') || str_starts_with($filePath, 'https://')) { + http_response_code(404); + die('URL — pas de flux direct.'); + } + + $absPath = STORAGE_ROOT . '/' . $filePath; + if (!file_exists($absPath) || !is_readable($absPath)) { + http_response_code(404); + die('Fichier absent du disque.'); + } + + $fileSize = filesize($absPath); + header('Content-Type: ' . $mimeType); + header('Content-Length: ' . $fileSize); + header('Content-Disposition: inline; filename="' . addslashes($fileName) . '"'); + header('Cache-Control: no-cache'); + readfile($absPath); + exit; + } + + // ═══════════════════════════════════════════════════════════════════════════ + // REMOVE — soft-delete a thesis_files row (edit mode) + // ═══════════════════════════════════════════════════════════════════════════ + + public function handleRemove(): never + { + if ($_SERVER['REQUEST_METHOD'] !== 'DELETE') { + http_response_code(405); + die('Méthode non autorisée.'); + } + + $body = json_decode(file_get_contents('php://input'), true); + $dbId = filter_var($body['db_id'] ?? '', FILTER_VALIDATE_INT); + + if ($dbId === false || $dbId <= 0) { + http_response_code(400); + die('ID de fichier invalide.'); + } + + $pdo = Database::getInstance()->getConnection(); + $stmt = $pdo->prepare('SELECT * FROM thesis_files WHERE id = ?'); + $stmt->execute([$dbId]); + $fileRow = $stmt->fetch(); + + if (!$fileRow) { + http_response_code(404); + die('Fichier introuvable.'); + } + + $filePath = $fileRow['file_path'] ?? ''; + if ($filePath !== '' + && !str_starts_with($filePath, 'peertube_ids:') + && !str_starts_with($filePath, 'http://') + && !str_starts_with($filePath, 'https://')) { + + $absPath = STORAGE_ROOT . '/' . $filePath; + if (file_exists($absPath)) { + $trashDir = STORAGE_ROOT . '/tmp/_trash'; + if (!is_dir($trashDir)) { + mkdir($trashDir, 0755, true); + } + $trashPath = $trashDir . '/' . $dbId . '_' . basename($filePath); + rename($absPath, $trashPath); + } + } + + $delStmt = $pdo->prepare('DELETE FROM thesis_files WHERE id = ?'); + $delStmt->execute([$dbId]); + + http_response_code(200); + exit; + } + + // ═══════════════════════════════════════════════════════════════════════════ + // REVERT — delete a tmp file (user removes before form submit) + // ═══════════════════════════════════════════════════════════════════════════ + + public function handleRevert(): never + { + if ($_SERVER['REQUEST_METHOD'] !== 'DELETE') { + http_response_code(405); + die('Méthode non autorisée.'); + } + + $fileId = trim(file_get_contents('php://input')); + + if (str_starts_with($fileId, 'peertube:')) { + http_response_code(200); + exit; + } + + if ($fileId === '' || !preg_match('/^[a-f0-9]{32}$/', $fileId)) { + http_response_code(400); + die('ID de fichier invalide.'); + } + + $tmpDir = STORAGE_ROOT . '/tmp/filepond/' . $fileId; + $manifestPath = $tmpDir . '/manifest.json'; + + if (!is_dir($tmpDir) || !file_exists($manifestPath)) { + http_response_code(404); + exit; + } + + $manifest = json_decode(file_get_contents($manifestPath), true); + if (!is_array($manifest) || ($manifest['session_id'] ?? '') !== session_id()) { + http_response_code(403); + die('Session invalide.'); + } + + $it = new RecursiveDirectoryIterator($tmpDir, RecursiveDirectoryIterator::SKIP_DOTS); + $files_it = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::CHILD_FIRST); + foreach ($files_it as $file) { + if ($file->isDir()) { + rmdir($file->getRealPath()); + } else { + unlink($file->getRealPath()); + } + } + rmdir($tmpDir); + + http_response_code(200); + exit; + } + + // ── Internal helpers ────────────────────────────────────────────────────── + + /** + * Extract the first available file from $_FILES regardless of nesting depth. + */ + private function extractUpload(): ?array + { + foreach ($_FILES as $info) { + if (is_array($info) && isset($info['tmp_name']) && is_string($info['tmp_name'])) { + return $info; + } + } + + if (isset($_FILES['queue_file']['tmp_name'])) { + foreach ($_FILES['queue_file']['tmp_name'] as $subValue) { + if (is_array($subValue) && isset($subValue[0]) && is_string($subValue[0])) { + $subKey = array_key_first($_FILES['queue_file']['tmp_name']); + return [ + 'name' => $_FILES['queue_file']['name'][$subKey][0] ?? '', + 'tmp_name' => $_FILES['queue_file']['tmp_name'][$subKey][0] ?? '', + 'error' => $_FILES['queue_file']['error'][$subKey][0] ?? UPLOAD_ERR_NO_FILE, + 'size' => $_FILES['queue_file']['size'][$subKey][0] ?? 0, + ]; + } + } + } + + return null; + } + + private function validateMimeExt(string $queueType, string $mimeType, string $ext): void + { + $allowedMimes = self::QUEUE_MIME_MAP[$queueType] ?? null; + if ($allowedMimes !== null) { + if (!in_array($mimeType, $allowedMimes, true)) { + http_response_code(415); + die("Type de fichier non accepté ($mimeType)."); + } + } else { + if (!in_array($mimeType, self::ALLOWED_MIME_TYPES, true) + && !in_array($ext, self::ALLOWED_EXTENSIONS, true)) { + http_response_code(415); + die("Type de fichier non accepté ($mimeType / .$ext)."); + } + } + } + + private function validateSize(string $queueType, string $mimeType, string $ext, int $size): void + { + $sizeLimit = self::QUEUE_SIZE_LIMITS[$queueType] ?? self::MAX_PDF_SIZE; + + if ($queueType === 'tfe') { + if ($ext === 'pdf' || $mimeType === 'application/pdf') { + $sizeLimit = self::MAX_PDF_SIZE; + } elseif (in_array($ext, self::AV_EXTENSIONS, true) + || str_starts_with($mimeType, 'video/') + || str_starts_with($mimeType, 'audio/')) { + $sizeLimit = self::MAX_AV_SIZE; + } + } + + if ($size > $sizeLimit) { + $limitMb = round($sizeLimit / 1024 / 1024); + $sizeMb = round($size / 1024 / 1024); + http_response_code(413); + die("Fichier trop volumineux ($sizeMb MB, max $limitMb MB)."); + } + } +} diff --git a/app/storage/cache/rate_limit/f528764d624db129b32c21fbca0cb8d6.json b/app/storage/cache/rate_limit/f528764d624db129b32c21fbca0cb8d6.json index 3d8429b..4bae48e 100644 --- a/app/storage/cache/rate_limit/f528764d624db129b32c21fbca0cb8d6.json +++ b/app/storage/cache/rate_limit/f528764d624db129b32c21fbca0cb8d6.json @@ -1 +1 @@ -[1778581157] \ No newline at end of file +[1778596263,1778596264] \ No newline at end of file diff --git a/app/storage/tmp/filepond/af9a22fc91fece874a0349e2597b136f/2026-05-06-105104_hyprshot.png b/app/storage/tmp/filepond/af9a22fc91fece874a0349e2597b136f/2026-05-06-105104_hyprshot.png new file mode 100644 index 0000000000000000000000000000000000000000..a0824bd809d7cf9d8da8e95c136b1811652f1241 GIT binary patch literal 170350 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

WKje=(uRv_W=IPUT5_R&-HEDcs@6qJ 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


_%69n>FtkVhxf zMVig~YYL#c8i2vpDuO1+kMmlRb(Rm$ima%rVaB0Y52NoC*>-#@E3z)3t0t$JZ3&aR zU)R1=Xm?*3aAWsctM>sAJ&1j?(p?+PStyQUMUiH1iSA61*_kMUJ|_xu&MTuUvn~n8 z&CjbFqzqk=t1?L*HVO1f0yTu+!*cywJO|qGML_kNdFyXe3A_PxUMI|tF(QKIO=L!Q zZ^H>hGgo%jm5rvfkFRE^#)_KqKmgsDO*ItzqZMp|uvIC;ig4L(Jw<1+Tmxif zp^+O?26yd{T*J0IfQ`;QuG)FI$4R$%n%R0Ui~D!1YoU9NqcS9B0dPSLW@dDeTAP{E zRkdnwsGHef(j``JrEgbnV-MN86qqZ;PNbU20-A2S$eRF^&(u!$kY#07!C-R$%nENi z+@iL^p;neO4BVg&cSc8BB|wfVAxcfwLdUtTYh5<{j1}nHyZ3+kr+<2_5Usj0;-=fs zOSwnHdaM^8kGIF+e)w^W$L;0lte5+X&&-U6klH74Qf*78P}P|G*(mg`8*?gxZUR*w>d;el_hFj*H7Mk zo!HgWV&=k6{@7o!J4o0qw>eMl>%A?W@Fy(*LC?4WpjAO zW7@C=<+tM|qxn4F-iGmZJKn#%yUtU?qtbwG44aYX>SV+AG*bXN^4hA>%5e9LLd4Ln zdS@ZA(b|&GGF742W}{gvme5Ws6kUnb4q$D#f2}Q8TE&*0QjThZy^&j_^SOPNc~!1j zAk0UR(ddFp(>-Ft2YO`!4*G7%Rz`Kuo+-`FVt0cmy4e*c1-RYruP^hZD_53}k&%#h zpFmfWRpyqJAXlVO4l`F()fvX&8mq3X)%yoWbdBuP@apX}mc$)TB#S5lJIULGC?uPjA1);Um!_FhJ({afFJ`^>l)5R z#gpaq+w0-q?l}Pe&5HYb_ps4Hie?mc&xC-9q<14TyD-hCz^W^+iZC}Bs>3-tbNaEi z3&@qC0n+CGvdXgy(Ot2Nt+c1iNPwMZJ#wINd7-C*b05@=s)-~>H82d%S)o1@gsXh~VQwBVkVkTAf?E0WKqe^Kmx z69)i2hDU$89d*>>)=k+$+8GfIKT5pfXTj!M(*(wg3Lo*||YPuE6$FM;&n2k>#-y$my zduRSw`RD)FUw;4VAMWqo(O8C+r@80aKl#`ZsII=*t$~bi8`rh=Xt=vkDN~VM>9Vc{ z9W*d$8|n;=!9-;Gn1#+bIY!kMUzfyYNG2jO(K6}zr9pGg2#_*W@v*KkJXVQgZ;D*D zD}#|`l+bdm*v)oSmYbq;4v*MMFiK#cA+n`W4&)Ag?VIkit0}~CdS+_)S_>u?s&bEOBU0v$it8HgRc$t#-8)}Us48G5IAx%q zetughT1K?!qWdh=mvLW%`pw=kGssOGCuzN|27Qj_J(t+%6_>o1*iVQbe`~G$FM0Ie zO1a{1@CX1#w@`;Xc7YUqt#iUwtT}JHXYzJkbKa_Ix(~NTzQtqC*`Q*x;^nT0>MvT> z&IVmJMFV0-U=z_rYnmAAG#_WglN(#9f$ngQO|OWEwMt@V(yTHiM6W>=va_mspZm}f z6xX$2-MHOuUx1{QkuKZgZB?F`J6|9T*~|`uM5~=U=!|@facmrNMQn)4CVF%!uQlw+ zK!CI=*<~nWv$k%pD&hOm4YW-~ZYY~f7uic_8FzL#k=7_AXwl*BaV;O(a=5An;Zthl zxnv-D9AEwL!(aURSKl4uFw@)hsrtk^EB)o0pMqvO1a$I{A7j3}znSohpa1-;uRh%0 zzgrzY|H)5&{p(-fKO8T|?c?{~#kFqt51lpV@#Bx5?(^=`zWd?3pMCQoE7z5qk#M_B zln(#;$8Ud(TH|&U>-PHc_WAnp?Rn9jc6j}@IHX)iBdzkPmd!!gFkAHUmTq5E-Mk;pbN z3(^R#>~)(13~6@j?QsD(?mq6ie|3BPaF4#;&d;y!Uce_ir>cgJbzO6gE0>$E&Q)pL zTg&9w%}{0}OjlhR+%i{|8c0@mn=?@nAxh@lHaR!Kx*@9AknK%wbY1H*^I_b3JvU0K zN_4r7%*d)StWiFnns@HWaK}s}HnbQ?3cGhI=Olv`!tAl$|Y`)np+R3fX4+B~W2FGxM=!&)Ia@WcL^;nmv+nf;>lvl29 zX4IIrnfbe>b!F!Ns}~&r03ZNKL_t)pU1#RH#u)3m%oIC_AnrSl?#^0cIHiMQMaV{> zVx3tz&4vRll#wc{)kPQ4TVorMa-wSGV^EdLhQrP1kGBWNVP8>yAJAPc9`k({zWepJ=$6KDfA{rQ?|<==pWKh*CqMi7r|Y`kUjFb8 zZrAxKug^dG={L33ilBR}{^qAY?S-s$KknUakRP{|*VjM!CNn$W7<-sE=k4R$=K;54 zeE#8KMLWziFCD~;D-XWdXmqoB+C2P-ypH33J4W_ub#>l19*lLHURko4IRaJPb9z>z z+hG;UD~5Z6kE@O`h8Zod`|HQI2c#9tG=N4X$_fb=q%(`xYN#3Wb_jaC-+uPv_MP0`3E09eC58A0u(J0Bu!M;Hh`IVR9zWvR*^0xRoI)>aG!yQ2!|WG zSOEaYwNEm%;oYb#QjHqM>^9p6UuJa+E0+6+=*VW*u0M4ankKs<*)@GOV%Nm0vaxTh zWM*4-(T(aJ$59z_Gq<wBR;PxdtJxr{>RNHQAFjMk>}U_QgV^pfuLJ<)&X6R~Rkor2m07j3hr;u0 z7Ky4IrtOYJvwd0t8e;D9Dc~CCx#YW_SKaI?_i1La?-_DU_Z4Ms6n2IIhNxau(33Gd z<|HuY=qhs4mU;}YtR^Zuvxcdw46Mj8Y{i;3JL-&*+D+2TdJyfhh|Am(Ij3rqr~w&3 z?N)(F_c7vHZ76I9ZM=VZ`R1FiUti+inhm?%k9VKn)~ClCx{><%PkvEd-+lYTxE-(e zc|VSCzJCAByO-nOPk;X5{rme@e0RUUklYjJ$KzAQ| z^X-gUnPmWZP|95B8g6FB>dLfv?5{=e^N%0jzkImf&UIb4+axGhM5>us)qO>eIjXBG zoaER+4g+B1nPn6>E7r6dm}B^LUCqMw`Xmel^SZ9FBdHDTU42()6q+=5kGjTi0Fy(l z&VYJT_^@kJZdF}GCWI*{u5(T=w7U1fQR0e_+Zk6?xp9jHyE$Yg)h2|jFtg~&On1+Q za}M1EO6YDis>{cSwE(aI=8D*-@2E8C+9DHU6V~SD=rVR@B2}QzS((k=Lj;Itu1#Ga z7*S@V6A7ACBi9Gv8@XZ;)?)LwJ%s!(dv5RFfB5TJ*T1$O{vZC)KdMe>yC=LGl6B_vAy&sS zjSUeTWW+Vx2}nkOqOl3o?z?pCQG8QH%PJqP$T0>WcOx){XB1k%9#^Tdjb5uwHqEMv zpzpUNdc~rR6=^cCC3J7;ib*t<3S!UU!wjqy7x>IeR4%GOHcO7~l&H2bXJ%AIRaKR{ zRff5;v(Ta%Mc2L~Rs#()Qi^W#S&hitMAyn7(WuUP(z0sn8ox|Vqa?e{o5`wbt!r0f z#b-gXI-(+xWcw~hfVEv_m7U?kyU~EmqU!NE2>)0A$G?92^!D%m?SD|~`(J(Qt@p3* z#yB#zKB7hL_}Jh1<D@?KE@c+ zk7IBD(b+@p61wENzdNdeVz#628%M)H`5ajZ z1kuB7hwX`Su{+$jc|-2gz|Q?=q5x3)ZP{4_W#j$3uUuBee$wJfrnl>}nFtvSZKRsd zo4D?z+3p@bWjRrYTd$=83)UvIsk>IQiyZKZ=wcNcFk)Scl#j82r)5~3XDpMmeb~sT zY2N$a?z=Vm4&$3~H(YbGW=!BS4^-8X8I;wH&dj}BOtV@ci0pG+D;M3&MdMZHzx-$a z+uxX%{?;RYcbfV;ufuRrtiaYOD+=f%vyQD2-dc? zxO{t6=N{YVDpM;Zvm&KhK?;>aLL`A~xDAu7wag%>QQf@~l2@-vm~TdvBFgO8Tk_3v z;jY0{4Fk|_R@GH)W~L!3s|hqHQ(Px0l(ttc*=!g@q56__b-G)1ik-RhjjTWcKpU;P zHgL~?^LiL%E_Cm$(4a+jWUq>O9H=e!?8=g1s6DN3n!zn|m_-#f z9@u@=I;IxYnQi$Nw0y(0zMNcT@NvVrHbpiYK5v?lsMnNtjzAZO`raJOAe>8=WT8d+g?O6(%7nYR}-=6 zrRJ7cs&PAV6{i)kRKgHij>r0(#2EJe{_gFH@$!0hcysv81fhnFmzQ_dQGNN0;WR_6 z&wuhK|KTU!eDmF}zx_LZ_m^E-7mnc(s{jKcmbqbg)MGDwuBYT!ChDotkSJn#HD&M} zI3@8UO836ZvGpYN*0pNNljT04&h2H~?Ow3iGM#T14SO#}z-UF+-YVr&)zw`TjJ^lP zDm2P=U@;}qT>DEl37c#8&GI4&G_bd%@&0mfh&~5-Jx-U@ij4a_s%tmGA$8X#9}_a4 zu@)OBm|G>--HZFM4l*|tmYo107CSI?B(`5*n_!$ovxQCCXrMRt5EVshH07CVgIOak z$<37+sP2f6wn!9YG;K2&skIjUkb8C#UEP(rEjnE#myIEe>L^r2j9n)AvJd^8NBrK` z$=`k*e{=TwHy+>eZH$?jCb6=!Yol;Ay6bUOVHL;@+NMT(8^CZ^MR33Ks+_h%2R>xG z(*|VW8TgMf(WP8h1A9unR&WDNRPH+=RuO_!9VqLrv7x`6S>P5@b#}{bp!SS3WL4Qs zu4~a4m8QWa+ZCGTtE!5L;?`Z%G6F(nQlql3s?A6?S7&pV3A?*%bC*p`^bxVr4%nY4w%8V(G&JC-9Y^{(Pnv!BI0&%St1(A~M zJkRd7#)o&W|L4E@->>U4EQ;~rXYbj_s5*mHXxv`!mFxAGufy{5`G^1YAKZ?Y*Y~e- zbHIiT_TzC@oo2{xNyl-I73Mom)-Qf^TO*p716bX?4^uhk1bt=9sf4~B_s98`*SBL# znT(sp=vF5Rqi)Kn<*<~h%4qiY zva*<=F(0>^pvP5L6{YTU(-7-iESQ_AiqXXF-8(5utK)n;e*D=_fA;>a*z8j_8eNRa>@pi0(01I8XLUs-b+H>!)gm_iXYBSBSm?t>c0|TF zEHfu9tGg1wFp~+*s35EwHb-@!d%6?csCZNvQQf_jh}esh6@m?)b9cPEdlz1=Ye{Od zqZ?(eMA7%nM&kb_?d^7COOouowam|9wQ(FVs> zn$FJdzdAANPt~ozzYl+QLqJu+4W%(g=29mkZs9R5Rz`TTc4e^M7Un|4^Bu0%pz*{) z_pcNFI4e_jTFVu5Ho~WwmyU}+O50=fJGK}iEw^;`{AT3NgqhLA)Be)*wQFJHd=^2<+)=5vP4pZ@Nr$MfsYzx?jY$CvSVe*U~4&*vQeSAY4J z;r@I+uIFQ~6_0C<%lL@EH+C*&w?DAAID)?Ko1M8cA!RGf)i&ZIGaLN!-Lnd%7tX<; zMA~%!?Qegmygz?g&*zBiy7#M5XM4*oc0PjgS#Y-)bCgc+sOhe@%+2sNIvu;5tZwfb zQk&;oJ$9+HHqj1VbORqgme;19k7=)D^{PD>yyo7^r^~eSRS9rBzs#@C@%j0)d;F_^ z{onnofA!zfyLv-*Qr+<@pFq3a&8)jYg-O{3dX=g(Vl?0p4z1MiDYCQJ-G=A&*lSnT zCeWN?N+4WRw`B>#rG!9g=cZ0_9s#Y~?o`Sd#Fiyiy%w#NjH;t{{ z6le&>p+&&alvobzY?`-3Q;ZoNb6#qo55H>l)+W zypl^^n{sFFJ#7f5i)!}}8}y?`sBVWHOJ%o43>+C4TS9l27(R%0XLql)vU;<}*XR8= zwW0a(#Sh47-;XENHHPonyYlhnV^{w0XMg1}E!>Cg{cYHUU5w!z?m2CPh#70Wnkk4~ zk2yPrt=GNo=VR^#!&AikqSt-_Y<0ND<&_)NschkL(|A1Q$7`*JU(X${&rfPzBY;wE zx>eKTx@?{rYRpIOI-7dBnfaivonx4>pBK85W@Tx#l{aa_aWHG52I9-Se)`?F0l%|9 z=GAu*6Yi3DB1J%3MVWMO*5{}n|Kcyd`}lfY^S8hK&3E5_51I{kk5WQS9-SCFWfnZD zI=+V(BF7k2B^8M(KwP_FFu)^>wlmvfce)U;+=u9aEX`ptCaF97R}W|$3Za9Udyq!2 zVSDHF>&`Mi<9Rqk-RKtUr23QZc&fHdi^E=o*itG@4S-Np`nW1V43oy?benTr*JTaE zkj1X;?y0QaJedk0#1SWD@vh8jIbmehYHIL(&{k)-9XD!Aa7#%lA9k`@vN0k|{p-Ba z1S5n-R6=65YeHar} zRLvQ$tkrPyu#syAJn#CiuU_p>sk(lDjd`^oTGf_zvE*zR;Jt<2fgB-2XWr}nRMX8b zPNcLqN~ic65!1uPRqIw3wDVZKY40;qdyI&%dDv#yWLIwUNN|oX-3U5?BMN}T zLz##YSW>Wb{9}vUi zx-Oni$C-lwW+o-AXeyJ3=u{`~oGgK1cg2d{^H-hby&U%p;D zUq0%(!ieFIz>{f{&fa}MEQ<5|5Cyi6VG*f>!^3y=$|W!7WKAzuy`TCnVA2EhG{R%gZG0>W00)R1MPzsO7oF-H@Fj|x~ z{Q`WB=jE3*M+|eH*F{6AuE&@&=5xM!Gba4G?>6`q(?qNc&aaOzm&L`hGT4DOv{Qz5V2(N6?d0Ia2@{VKZFEwx zL=YN&BL9uUd|air0Y=etuUB|{{rC-W(Sz2~rgb81n1@C18V+>VYIL&^UXVpFW)qMu zch7X}U7zyC6rz*+u6rZjDKGORefbJfLE^&6~T`)P5>)!HqcfzVM!!(AF`<}Ft;*3&Nv=FUCkD*M-KvtFy&ssK+b%CnY*(ahhvDIb2d(pR+*9QQbBdH>vm*3-g~dti&TEDnh%Iye)xVoujj`z;+lR{ z=el3&gw*Kq@LgS*W=-?g=MAbVyLRtdYsYxJ?oClEvr{ligH~(=$@!i!l4A_e^0nM; zjB&OWG3HqqjxpdVQ**~44w$#f!q`p1q~3V~#Nh$+;FP#>dq?IfWT~^;eX9A|S=|=a zSy{5MmY6-RsIH)b#XvYb?EB{r=c$>$te}k;TPf34JA%f{G~+?8bmg40x-5L}lQX>u zdb3->c?^0ooY?%}+*NB=3_D9{#<3#-)h8B8t7UAphojoetCGj;99CV%%0i~X-Q25o z+v&1|ZufWiEO^}C08lF8oIBC#0;`HL3$LmOSGAdu-ra1)9Ak{{zkW5RR=FQus<~P9 z-Yd<_&F*jCNX|L;k)e2)dv3XVt7x5-FooOjsH_wF)h)NlrgoDDFvDR1^7HfMfzlrH ziZgnKXfmc;Ist6PRY^1qafQ)e>vfHASc=Em- z?O|u{S9yX^%VF~^rtI~rcJszn=4 zMn(O z$wu_T!7u@8wYuBjVGf1kP-NOb^DDbgkEaIuaF3X|W4J&V#yo!fa==b%E$y{-_&Ifp z&Z^UX2HR?FlB?l!m~_B}x%U`8!zvq$F6^psx3Ih3rVKYCfo^t^L@BE|Ne>Sfklhin zav6Ws(9!*xugcGyzUEccD!2zt$E-KTD9BO}+}mj>mCCPCYfFWLZ+hpGV((rn z4dD!SdxT7m(B4#^M`uiDIfM~2Tb)~|>P>T%s&r9Ol8w1_3hwtCpGOHTK$JhQgrVwRfk* zkrl$tdN%Ju(l@zN*WNb+0i-?PYWxQLb5bodj)l zhlikUo)pi_GK(2QI;o8?zKdg;>LkMpRXcptPTO^o=KP(O$+bFVXq_+5&0^UlE>c7Tq`1~ z;qI;5t%~U}93vAVJVthR_3&AFw;|PC6~r5aqi(C+xdon}SO&XZ_qPbLlD!F=nWe;{oR{d&98#`X#sO>5EAuv(y|teQyJ9f|fXOr4e5fJy93S1~=&`Gki%x)Zj+RKx={uJj3Pg;SoGK*gwYGUQv@>Z=V+^-e-JkS1W=NTJ z6L$P;9}RMM$(u& ztznWg_Rj3PiIXPm5l6a?#NT)Je=?8dPk#45^1jADHg!EU?5pqDVW%*00x}ZW%DS#8 zflQ-yi(si?o>^V1Dn)~%cKUUZMx${wI!36KRqZ$dDn}eF$%nuBukdN6YF8gj6KH^g zVOFs2N*|8y6P26lF|XAbkLb1C-w%`Sn`WnfcZn(k2ZGyo)_YMD84I%AG$Rc^RmQF|O z5o56gRb!q|pS?ZcgjDXA@HVEAX5r{|^WHsU?q2`*zx%g;@n=8&AOHLR_IO;G9N&NU zx<6C=+~p8bk73tfK;M7=HNx)K{d_)8npX>R#B1GqZ-T#k`!>huhT3$Plv$t??CRqt zAdF@mq;aiZc$s@B%iY60AH(RoONbGcStKox$~YDh_#D{URj;hOvL<<#=Cpg=HiMG8M5i%( z3l=ukoj=>>|MS=X{>Q)ki{E_z9YI21W~ce=`h9&u^PtsEA5pzYnSmx%zN385belk_ z>YXw|b3c+dvqzsznR0)~S`(z1*+vemp+Z zla8dRqNI*(5{ScN#P~BOTZWfn| zq*=qoLJWJ?D?YzK5M3z+kCRIOyZN8XY|1MSRqgE5W6U0oo=cC)=!xC3mQ zs#;woHSN52qAJaZcW)>_+54!(?!87#Ge28La5Mx1!*wRK1mX0N)#l7fi^$IEV zWC)$T%u&0-CqTe{^V=W)&Hwpt?)&xm?X`Bddv^ba-~F8kRgLh+a}>J`-~HzMkB^T( z|Nh61uit<9@@L8pk zA032A-Uw(|n>yUGy4pThey)4xJ`W_Hqlvbz?pk%l73S5uunfHhap?4iP{Auh#X4RO{T^5dm3IrP{i5{KmI!_`v?TtGLqqBOG zobIKT!QGsQH`>6CEzW>3qfw`}ogNNDH@j!V5kFV1@NAP3=Q4pddwra?+T2cq7UJGU9Z!_V~sj^(jhZed_`!K0v- zXfz_+44}|wwxcqmyBp9|;{aNAIbeqFcBh2_5*q3&#;Nm144x)i0-EMs?Pjk`k*dBd z27S0!CfzGH4JQw@RqBlJ%(DYN!TG4J%w4(H{rSKA&;RS6+)Mq_YO6oI#y?iK9&MM= zU`kc0LsCnq%N#8;2ib_KGN3Dmo0HY0bo%UOs}qUr5tFbnt+U4%*+t?gjg1ZK)nyD5 zyL8xqhktpU&~*sF+7;KV5@=4(6WhnAroF2w!D(h;Y@iBanv-l0@AxIqFpiS+nqHlT zX4oo?1K}V#MNXl!wpp)SMzJtyUJZ#fHN<#(=Bq}`lPUnIC6AGns(c^)!to03-RD(0 z8bvxAZDN=UkhHtqO_`7D%-mB#FxWB<4|a9ct}dT$3=`V0dzpEoe){Ee?S7@~@$Ay{ znZJBK?cr!y{`li>e*W9P?QS1ra9$rvT9u#c1;_!icW$S*w$ucStai3{-4Y#*t~uu~ z`Ev7CQzRU;5hJ@m(nJR_dneqgZdSWH#9F_S%)E1d^WkU!LC7YHFD1gm5UQ@MR+&`2 z?v-MU`G9(@d)PSk9AOh87(Tw`HuDoRzH+(wG+W|p-Sq2szkF^p5s&AyS0b#!P&r}< zP4lX}p;y2D-@pC$&#&|QKl|EVTLaQ_&J&g5G4c>JNDPOn)E;iM%tZ5E#kgqJT}IHT z4MRA+y^n*4^p$DmRol>FyBisIi56%bykPD;<=;76o7&w{N(kr99X{#^U4c3Pv92=^ zsNDxQILOq2cfgHeoBR#sA|-^Ihd&=rpzEB9a5t;k#wIWVk9Un3wLfVFH?)g>_cjZ*8{jNy(HunfGIIwPk-12l zWZk>eVKN%JJZOi!(v{U?jNw+9hp+{(vUj$f%Bl|b^D#~+@X?vrj;w~> zKKw=_6(jDQMs{z?4g=19C23~&h}mH44Tf@aRi)Zy^jgjU*pmA&x3!HYC0LNqDswMD zMjykZs>)o4Ta>#Ll=LqB480Xj7`iv;5Wjr=I>u0)goX+;nSJ}^)7wa ztwgQ7OG#_cjh-v%sQn2)@l~d(svJHbH3}z~uGTyw^}{wLDO~1x;I*QSS)~RW0989l zcv#lGcM_N}NwlgmBjz={t0cHZL+Zbm0LjSODf%h2C763>Q9Q(Rv&hE0p51kH7h_IS z=PC)0$=dl(?xp?Ed|A+IOR3j6Uf%W=0Js6_O%m-W#$i7X)l?g765i z&Cspt&b2VEd++ISI=vAc?v#$bb?;5H>Z19*^Uiuc=4-u%+k1K&e&6ew^Z1=X5i*oe zV-BNrSA=J8I)nyJAQ#T|Y0ihb40c`D=WAIQfIP`#=&qI$6f6Xsq?j2|i3q?{HVWY3 zM5~XZ8#E{HwZly6d>d)r^H(`<(B5miIXa2+%k<%WxQ}-W>HfK1 zapnl)X!p*JL=IH0pm*lw^QZfFWL2)rZ5EaLC>%eo4?}dxGBbF~GsjMMj8;bydm!S~8Cw_ak)m(ZOp znDKB;&{#C6*abJbd)KxEB}_A?J^b_A@64NKdrQWy?PONpS_7S(VG~Z36K*tEmGYv0 zR?5sr=-%3}4yVY?E_QX}r5BE2zwqUHWOeT45j2kQ``a)7&A<4UGoI52swu@aQxy>u zf>F?_!kT3P-iu)G?9oPVk*dAuX2H(%Fz{4rM=~cHUbRS=(+KnV<@*l_Yi%0b zquFGSE8MKADGvAAc|25j^W0XrK{3p#THV*b3RMzm>)w|ShoAH~MW(L^qw(ynv@pzmz1~?%@p1DcyPK%&j?&lMHu;#2TLFR0l!G8Jqb%s|E zvNjR!CLqijo$tR>bth!rsU*iR3qKn?^qJorPhNG6FB9TN7@myih^EU6$LCtXbUuC)k8Q3~PFT86U6 z^Mf8g{qAqNx{*J8ecpG?*)ad*_3g(Wf1CI2>Z~+3ly)W2;YSpyam7v#<6ge9}<6^26+}iG;T2+}Pv(e%RVpk)bcs@qfJx70A%eb9#y+4|wxevFv*FM{!lX&o2 zIj-^XF)Q!a=g%J>U+4AgZX(t#GYuz>r=yx;b)T@3%(4RuqD(S|yH`n7!%TeuRR+3* zVmqa7RSmxgv3pv8RFlS2BGkeCfP@*XN~IRsj~d}u*J8^~oS{3^`|IOUWjB&%Y68+* zR2N9RC0uVl>+>45K5brOT9p8<4YJ=JC&GuXmBTG)-CDUws!^rPeQ>tjo%v}IEg7n1 z5pjn2)w{a0>xxOUT=#rFI?IagvmvrA*lN(}K4{hHZfn0RK$fd(5LL3PCyJ1curM=@Yonse07F-G0H$r0m^&clE9 z{U4stZ>{Se*09A95oS1lN48dO$VXgk^EMlnx$SHZ+@BvNl@Dg-moFC)J|C;AS`Uve z&kyPZK;$V$-JhlQ*{d?bDeF2>I5NIp(?e_*=n;og79Q(fkL$|4LC}KaV_t%2*WM?d zr6LA+ej1Hxs=B&hKF*Y*YfJjLMpXwa21MjE-W1UAf3HrU( zFehxxS=}b9oiT=v_*YHZ+Brvbrkm^d*nt?abCXoFg~tf3TiPDB*0SM2S8K%F`#wf4 zpxxXotZnT*hO4VG3CF=MN7`Yj=3KkKL=Y=mK?+ zqiR++-NrCG3=SM2TLCho7~LC0o;ZEt*kD92HO=yD1ulcCv$L_fVq6jdnfcz^j_Tl) zUgB}$aTtJVC;d>jR0(#AZ>}-DI=fWRnB(4Uq(c#dbO?`+4=3k%R7o_|mhlnu-mkX> z5vb~uq;Whl^YK_~!A&e$A27lgR~t!A>$FXI##9`mo=QSTb4ArWd5xX{_ zaK82px=0Aa!#uvdK7}zoDwn(IjdCuXL7y;3d|R7FhyZLv5SdkgS@f>QxM0XCN(An; z-P~k_ss@_svZ^Y0xVvXdg<5TdscDSI<9@yV=sf&q-~T6OuY;qr=`eFN!sr88b>2-j zExX}HLbO%wlV}9ZExH;8s?JW45VUQK?8P{puhU_2(mf=a)Q{(^-q)C)_Z@R!9dUwX zSH#HbD}3Gefp^N?Nh9SdvI|GDURA?SBzDuPkS)1Ia5PihK!JX|uetV&(OJU-X8R0Q zOC)AI9ca`wEKzIicr%Vbcgd!Ohi4@s2q>#+A1fKdx;v}p7+IS_49~t}czCS)hBzOy z&*WZ$q1Ezks~NKzW4g(@I}Ai~M0di2WM(y*Xd5PQt8Ey_YmC$Nz3wfH2=0~NUf}_s8g&l-R&9vd{0wCsFUq}xR#6&qD}ya#{`&}54T;l_Zp656%$^B zsVop?(OrgNZe1+|8G zj_GOm?nR3N)=CP)O==@OP%E>GupmJgqpN|gotMuMsLHH#AF6T>6)0;cD>wCrC*gnD z^*=FtjT5KrkjjY8znmTkpcnt5RFfGDD8+l;GXX@Na8sXkFG%^M2 zD+o|vx0#=JPhSUYewi77zBn41m`~k)#>K2$CElXcAbvS~PQ7>@#R@bOPXv3FR2x1kKnA^DYI)3G(2u?lJ>8 z%xq`74*)@q;hCFeKIY!r=LI0u2DmZIyVJ$JzRB)`SVYYkMCyi-nS2%Umh^1<<1$=d(DWI zFSoJwikL>uIZ5Agvlw1kQYpa767rhYFRxE^`{jEr66Eg88IRAE?A~jKTS7{a#~|KL z9&z#B8^krelqA{^KGxpu7HE?O<>93Yzn1*9e#!K(UM6zOO+yNVcj_& ze!8wPN4E|t0=pU|BD0SKo;U_VZ}^=}3t?wwKrZau=61!UR%cT^f0&Q;hu1&+`XAr_{Wbo0-ue%&7H=J#&5}-7?`gKXG-6bi z$Jn{&utUex5gfR~1t*&7GiAs5e@Zpr#*T2a$lOlsN(*y4`v13Vp;bnQK=+bFbLI6M zl)4IS?h#{_3h+517}cfbJNtO(QC;a&B^45U-4(;D%58*) zY6Gg?G!pg^Un@&M3L+Y2G0_sLX(RkC{yQg>`ZP!$QPrx>?!Wl)&;G?<{MCQ>+rN2z z``pQUuj_dk^tdimD|g?@)UY260#do-dUTb;#(1P&+3nuXk7qZ!Dq{TqoW0wxW!ZJ! z_kClGxz^g}R`+H%$>yE3Y{h|{zzJgH@(>__orf3+68PWCliva)NP-|#EJ!jVS+pcl zv$hk2T0td=6V9yWIEQx{a7z2_QhjBosYv3q5SDm5cB z$|Ky}S(!2X_EbVtn>I{UY~>8biU^`qw#=Hh zy(oe+O*tn!h!{X2%RnLb(QVyOL78`@ttt_0^PZBKEDCDg?VFzVebRlcDXJoTrpG1G zsJrhbf(VGJX`;G^nz0O70-anc5m^t1^UF(xMuq@VWyX^aGec&&CkZj1&0m#ZlIZSp zx~MSa%8aQ@7a}rRlkO>%geY4DO&63G5Tlqiv7Zc1ki3c!V3MRLJjy6)dhB}@B1%P6 zS|nyfM3o?7Qt_Y)bPt=DZJA}a3s|UWKj_C(W|&FeZ?lM+|I~FRBwMq}+DESpQl=qs z7XBt8Vp65r{^k|yukr^_g)gjW)w zAiyXuDrdWhAgeM2gagU|N*bXk3JnM#Y(@C6b!M=2NqB@(w{=x9PZvRDs7M61v%~Pd zEKT-fTNX1dPgcd4_cd}jJNNED6i|YZ16k|R5W$361L=EL)yX!}Mo`8nT3ZA2h$(XA;Bzdy>echP$>l#wd&mL^{Hp&YTFq5A}wl~RMaDssK~7~ociU(#lw5| zE-p7piD*)04C~{R9gvXeXRjhED$TS!=KeQl+B#Dy;VGgh1qG-m7iFo0hjEJCM9r#? zNys#nVnivjz{;x3qG@FXh^ojTCZvGn;X))rvjj48^2X_El62Q)jVx7Vv7*G_=~Yyy zHQSaoGb0nKC~z`E?lg6PwjARw`$)mvb~#lvb2L*Hvx;J(l@W=U*UHIo2~tc)44JiR zK~*aNDHT>gfN&2`O)>*2o~b36BjwVmxgqIU1@(%^RMSe#$D;gmT}r*=G zv*FQ}Hg6_WkrYl;9YSQCz&B*%@R}4gMM+IkQO#`B~h3tqnvko0*}#jChuA%dLPzQrzxxMRFT#;pqduRRH4--OJ=Dk zT0_;kogIoIavHI%M3x#ey--mR?iJB&Nq2y4-LlG>Muv~xmW7CQSv|+-eKEtGUCtbVrETO)ukX5@jf;z?k+s2h=;dz!Gtn-AW>1iM-3Px2{~K+*kxUs7^?Q@ zl{t<_(&+G!X6@wrwl?N~dSw*uP$u&(F#&6unPLkZM#JR&Ci_U!6$Nsqz&#?0D(lib zy?Tg2r24)$A+&l$3&j|BS&{~COOZ)M)?wWqzVYbo zFMMWM7i0+qs`I0vs+cAomS;kVL{z8<=32baJ++yqOOuE@J{CeEOMpEx36e??YAFCr ze|RB9Q@6QGu+KqSoESkEZ1Tat3%sIV!Ts6Wa59-MYuRE}k*Q&O1MJ zwYDP4M^KR-)lWb8{=fPC-~H{N_sZ7JpMUuDd*8)_M^BzEFFyD7XPX+rDFV<|%Q(Gw z`O$a2^SxjHyZ_;nCvRki`|$2J$D2>8N&iv`!6!c2U+lO3Y7I-OssxaT@V>2wDv**M zN}`<7M2dIu!djL?M5;8?Wy(HtHsQ+&veLmoC5qr;he`D7F%!I4lq#6Jz)6&f6Q*;0 zE=4W8GQ&ihu2F?TMHUoPhy~S}4j)n=(7iWpcW}Q5AcYd+)|Mt@4;K-kjqs|h7=X65 zWqL)Z3Pr2v?h$iPo~E*>_1?{z5Ts<$S{r?!APQ9}lAJr&6Oz583P2X2tu?KhKdbOq zt}ao9BCBS`Kng1CdlykafGtoh+88m%dOm#iCBYCf#&CDjHD^?(iolz1zD4qIxVXMK zM&f5b`}tv0?PA^Y`{{P(v@-`1QngUV?d`f)dKJW|Cb}5*v5QceMp2iwyg*C~x~N2kv85LP zNAsj-pYw`BrPpCOKaMdReK*xJ9r!qXS79Myx3_|L8|P7g(h=t9gJY_ z%i%1WK!vN__VM{Ie$8y7fC8EVg~;@wB2$!=!mOlHiXJYarpk!6v_dtttcYIjS*uD2R5da%cMy>gDWr+!RJ*A)TdJ!3j+jvqr|PXWa!$gS z5o$VrmQht+QKCXNaK`PF%5)bouTm9@$?TfHeKeIsE{%7+SQEsoWI4~(d8K6{A{WsS zNwvzfrVTR+mMm13f~cHh33qSH+L1DAM~~@~Ne_w?$_1RF#Vix5R3S~7BerEpV9!C5 zJ;v~1rV)cE5y|WkfZ*gOt^Q{}{=v8Z@SDe*TWO}uzF$|5u@3^v*}1>*_;7xf5eX|) zffaoB-KQ^K-(26k+AhwfS1n>(o^790lh)tpQLnCk!5sKyO$*F(8vo?K`^S?k22iCT zB^)u+m%^q3)+l#)@ouTpbCebYB7$^5nNn592(t~GO$Ii#JAI2FP$FzX6OQ4u1~Cd1 zB0?bN6*8j~vaYMCRE5XKZ+aNlt%N8>bRnhB+4U&+SJ?! z09EUwQz6DeAhEO+pqfl6?y7BDma}c$*2CfKaM)H>9kwl_w!^u#<>Kld!EIf)wye4w zuV24<{i>f%=l8Bg#7#d2GQ%(0qKQXW4<24UI6rKMwrp#=yt>@B<*=?*Wv#I(R1$f6 zy6x^+%&Lma2vWi;vjT{@6P$PLm+56C0G0@|2FevRqMB_HLb34C7J*7p1@st92(%nh zx=b>NBm`bD()Zpy!-K<%GSo6Fszh}gG0%fClZYofUdl=PCKGL0iahP7 zsS;>v5w0eMm|UB?a~~WYl*$MdsVotK%yLm7L@FvyKmXY~U;q05@xcf0XU@QIR?bsc zuWxPxN?De(i$q0HmZkfE+M`c>>Puhw^1bu(Mj5B>9uzf^Z~XSZ__$*In?25sz+c^a zori+oLB4FMs0yg+gjn?06`YX~6U_pPW|D=fm^TXZN=53}_hmU`Bo#(1W*I3{{jN%> zs?xa#-DIML=US+mDl{`$wNO-u8F3>gYpO|`l#8siX|G1|E{7MMRT6Jer#b^_2tA8YW-{APk;!@Js6ptNf{ZMpw(XFS%OYwDGq2hXhm33@ z(c$kM7rjr6@EhkNvqfw}fjlZlyGlS)&BnC_>&Ql=IKGk6s-0Lef$zua}HL20^a z$sWgbxtNNh2rw!Dq*CcUDpW8HD^*!-YaWA5EP>ESBtsV&enhgWqUc!^^>7h-xQeXn zVJ_IMlt=64@4bI}-4Ey6^|2?RI`>eOs0d%sRJg4hiJU1VWkv$@%q)0hkyFi7C_*Oj zLO3&x1#-eus49>#0#p%AAR|DOBq~g8x@JWsvLcdd9u-BV%mF|m%p@{tR`_^1Kq!=c z8b;A%MJ>8I!lX@d(6%=BYRlro!5Oa8%utz@aXG&@)0RR(=IEYxCpd}~=_0I3X=}uw z5I%}f5Ky6THh0Nr+GEU}bgzV`3B$v)=6d12pR6gA+B6eYtSM*$Q=|x8<+SgsweUez zN9{h;%v8gJ3Z+b~s7Fj(*4PI`C_1JnWwr_fk(K1|XvI98e)zrbe)|u9|Mul;AES@g z_dfGP!6VCSu-{l?98W)f=N&BV>i+rJ*+EhjtO(LrDIjB5WrE$um~*tdI+TB-=kq=B zi{!vx+IyAWAf)MOA7|^C>0Ez8)le0$Y7!pd^YpE$kp@DRJ7zqU+v|6s<}t%bKx6$pX_978!tqX9a!l z)|yv97zU+Oxlm8XQ&H!~exh!N%hEPNaHrATRo19ZVG-6^QJUbipTy9#Rl=H8q$*PK z!IQ_w>aVYRN~9R78f9&VLeg>%mmJn)@26#1DLT9Z328p<&?4S@WT~~u2M|`|JUT*D z>Tc>1V@QFd3Ya5=Vxpd2L{-gxLM5ZSsF)avbF??>-^^5%L}6}wiA3xasi>^Gd_5>? zdfShxD%2da-=t=l;VN`5Hl#$RONp?p>oOOXJR^f<2LMY8QSo%4P%uWO4_&PHArzr7 zU`io9MjySHwrC-QWt8+F6j?^oHru#q+Y-4~B{NVE$b^ciT2&4AsiN8aBqBf(sagW^ z4xb+YGD6hgWhqjmB2C8JO&sA~I_GXOkv0Y7&wldGw|@8cKltEXkNvRl{OYP9OLUR- z=G3J*^15#F!JBWrdj9Us3$@lh_vNpMEp6QdB~-8B`%YEQntHTfYy*5E%k|$P41D72 zzqBEKVs496W|qflnxiLaYF=|Cze7-tC~wPB!X~Y!>ttEa01h&uyt3I6=@e=b#8jwxv}inIsc1N;BEV5Gkt6c4Jd(i$)ABL`;Mh+BQF$ z0Tp+L(A}F^Q}f}-igG1YOhlCJv>!#=L#COH@I>qt zdlIO*JdUi@8oVMSBCNH=>~y-V9M>;D8s3o(=f$=yi@f>PlgrEVM~@$ETSGz2RIG}_ zGeIA5eSLGhJ%Z)#-Ul+9(7n5dhbGz>`>12nX4N8!QlmT7(nFFSnK@^nI!0z?F=<@Z z&D5esAG;EnKD<+9WaOMsLwZM~_TGC$GS*cyYwX@^^%2KoS5<;D7M7B#>m9M9WOASv zU1%G?Q}5|i$f2#~-GRp!_qQef{OPliB~s0#>R3Wh%oa*JoSnV()~8X46hhUE$-EO6 zLD_T?z5to)n@uBKja516>}6Jn#Vp-PikXrXb+-jmT2+Bk;hfg0Xl68FMr6T(rjnI0 z6KsO2RMV+wG!?I!pn4BCRn>X17f|-_rgI34W)@KZAOev@XQZf^Bl))_27(>-i z^pmTa=g^$d2mnw{qLp|#o2s_(`3uCSS2lu`ED$Y+%hD=`ee6sK6hzdtK(9(v6UnTK@294R7(V&%Lc%miA8xHBCKfZ!+EU#MAxez&ek$L8`ja1i<2Qff`G?O0 zb!c|B$l7dO%&8d^!SEguQuXZFpMUM~8;8Rs6F>Uy_ulyIXYRf6#wfPJxY>`lx21A+ zeirUy?7vcn@{^w9S5MMUeEqMeURhNxpxYhX1X`3nwgN9k(jH;clZnn zv)lvZU1VeLxh#@ZZ3Yw~*QO*KplIJmGea>es;Z|Wbd1nu5s<7BrU=>K0TG$|;6Oxx zv&~<3!3$kc5#g%h-T{mZ73&^M)}0o`d_;B^GE3b_S>1gy>%3CUB#M<8rK�+7_Qo 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
$v8f@SIQ)eD4{5I4~uhtf&(kas<-ifdg8`@HA z2pIWKLNbh*S6KC$6T}}viI|uQ8~n5F6zJ zctoiy=A0#5Tzoyf1Q;e1m!1Qhi#9hG!c7RT#T-?@VZRANA`GU0RWFv8QrcXA!}mJHEWES|950DWxfxYFJ!& zuxq)%Y4%L?t=Vz23GJ;g8exMCbK^Rfz2wimb2a%9)Uh+IsxpiuHXN`-RgDF;4|cG8v`if1M5yDRAx&++5pJe_>H456JZGu5D~%Xy#b zk*dm2DDj*echme#w#v6LFq{+est1>x|1kZndfNGT?nM(BC;Fzv-|;2gDhqR$bn>o6 zu5Anrjlnhf>U0RhlNm`BC(@G0AjUpGirx0%&(S#PPeSsgnMnw{ z`*To`LQr7a#gfm3pIcKVmV_@o^bh>Ee|nPrc=ggRbg!E!8OB~*Ab2ZsK$JBqj|R%a zEYMqrv@1pH-e8L)c<=f8K2Bf4_{&jus~c_yD&l|+=lCo6<(n5$OuIzo;|*OxCF8Fv-?LKKu-rp3mftCtt%6mgC3#G@NU@r|62 z?77;ESx=Lbjxt9u&w)2t!aVXZ6h9N|vnbKsj&h0ruElf@!X(P7V?qB$a-;CT&+C3M z*TokLwH6Gxiyr}Wc6N60xHAykv!uYg)LwuQ<682H{Ouo)KWt2#38=O0|_yD1KHc9ivec~a_J2=FyI4V<)c!nOza ze)qruCo_B!MH`pc*x2r?3V(9N0zno$8Lu*Tw(Xh0TU};$3hqD44Xtuf)p<19$dBOn zG_f@@F{eoAc${u;TJSOQp+-4>EDSvE_xeQ^gQ`*S)^7zPBjqF%60<@nEr6bXyIW{% z54WgVM{%|jYXZILmxB*OI&$_p&o`H=4SsC~wS-o zw3H0xzdRhtAKY$C44wx!y9Mse@5E)#-)l;w&&+*|qgPS+EZRuts(bl&bpQV4zaX1^ z^R*kDnAr> zL|N?P*#&B?5hx+7(u%JRX1nZ-+oPy!2y|`t<))n4AdzjDp(svz`n{72O&N*xz>$5_ zcH;=sYLK6|Z>?FKqmJ{Sy_|!&x}81y@73YW-njb!o%erd+O1AXqf3u)i>CG^dFOdfM6}p&a{mfVDMVSmszJ_ec!Ooyz6GS>ykGH^%d-GXz?!~V*QuMuQtL3G3 zeOQ>Oj1$Lc&|EuE3fMd6Z3`|0jvcnRjFs`JtM%>Mn_f!-cC8flv&BS^on`tgDhT@| zVVk{WrI*$1IQ@-_xxjnLiYGODnWgxqy^xc&xZI5ni=}o2C3*OHcGEHh%Dt-~skv2t zPa=C@6It9d{MX&<=>z(kQ(hgvQ2i(HBb^0kkyu7S(1a3H|=6c09Dk;*%9 z7giwt;vIeUwQ}h?#%G*XxK9DxQ+~~k(ev-n3_-_Rt4=!yEAR46G;uVJ27=uG&UZKW zZyg_52~~wyB0{z4N!eM~N0ip_N+D4c#MT%A3P_dYpOg?r#!fh;Wf6xZwp-Rd8`*s-lTWo3yDN`Up2B;%K ze{2OEL!EwWV2z{*NQh2@DpE{sI69s1Wji9xXjFkoS*s7i4Y6~tefgv=UaCs3p?!QV z!Ntd^(fnegF6ggCC&`klQ((uH`*`2`6B*nYBwR|h9CU_Q{*LW%(X;KeLn3z+EAkUV zo_wP7^2v@XYkNnN7z>{a>!v{!fhH9+*ttl%^HXgkpFN1;QfFX5fZtOk%aMCPP{0|D zugtCAY=OMdd#1E0ALrEU-piy$gmIa!;1OKhON$>9B=%f0)M|weRxYpWCtDf}P^cG` zZ`Fz-D~G@IL1gZCDU5|zCM6}yd3OF@VowadXFmRWl=S2E!w=UBT6c^y=hT+p8qb{t z`49;lqeO6WqtQxu*=3RfuS>B|ex%x0-^5*zXwMRUf9rXNKhe7-p@8ah;tQs*h@<^= zVm{WU`z8fSG2jK(=Ku2wuhHP7w1 z!6)*2*36^?v!a?8Ap{Te@~#BRZc@f@>=w}=bSq5@V%>=YkCX?0x5k=9n8w3Yp9?!C z`&?a;3nIkjpu^#}ivfEVp6!Z3)-RXIs{_v~OHxwsM-i$qIw1clyqe$+~rA?Dq@c^|g}YLe};zLSNL8Tek@ULPi4zF`NmLW-LO? zscD>Y6=n$J>LFW%0BEJVzNY9SJlw7e`cSW#-|Og=Q?mF3xXL*dtdcH!jtU7YsJKX z2C(3G#ssa#k|E8z(d~W8nb&jAR~MS1w;PP#?vJ&l?lilG#QYg5__Sdf{Ck5>0nwnI zSN6^n)Cl*?pyw90i8^>~FQqnuiPfE&Y;q>*#H5j;hl+`m3bx$s(Q%GOQLpnCq8X;r zB89$*W-!2ge4Rmq6=XkO9g-GHi_3VsZV(>De5( zd{fI-M~a;f7mLpNY$~-#vP4kUO~q=ez&`*=TCp$u@9L{6iyB<6xm~@mRyti=W|~?Y z9`2yW!C9ixX_Y4-X+M-(ZYnE(WoD$7@uC1S<2KUx&o!9D!U_}$@ifA?G#WTxU0An= z!V+g2{+`mse>Hdx#ax?y0;A58jJfV7USA`ti`{0+^ zX?DUrd=VRi*Q!d#?U(1r67avaGbK7MHk;6o24zo3hre1Yh;GYWhKxYeAkUiX*|2G7 zL(ZiWJxTAFeEVLt1YR_phbx`GGnRP|5J2nXJ8`IS$Vk-=vX(3wcB(pTbmF}CX0A$z;%Nta6|ErbBez_|eV^e(u zf@@CL`NcX>7L2zO--tZJvIw)r}OwD`|7+QJj|8;g$`z zTfWcxW68G|`&ouJi5AwdYQ6LOTYuPVd#<~WCH5?XP6nC?8%vqcs(HD(sqO$1x2nuK zyb=4(k2f%Ya(B79kMBs%N=(VXt6R?+U5-fj=wxUE1>NSPqiH;#JyOaeWLbjgouchM z`93zjLYrnrnU@eg?Ma}d8m-I&f)0^C7NI=CfnIO#3=N=T)a5JZ`KWz=6bFlv^SHMn zZuto<;1}eNq-O$TDGJtjHL}?c8PQz~GRJ-94_A!#|}!qr2aEshu!(wb-{bKN9fV|2EWXMWsbljQCX% z7-_^Xl|JRsuC)py4XhmVR|N|)`ana|lcghjh%M1p%X4VN){Bl1y5t*&_VY_pdUcSE z$gDTF@{>w1nh{#|$!P?QW-(SpDpfX~bOsqj%C%44nR2YTrtV#IM!(;lY!||34=@r+ zd)rN4?(#?_@xgz0{~B-eCFU%7O;19=0oDAx=mxjx(Ix^LASXTyQ{OOLwdwc8zNTSn z>N%}X4VBq52XsS&zJjksnSomT=2zG}z7Kc!%XXO!f0=lWzXOA$=Qr@N)N|d$XK)`QE&vjK%FaWRPi%{!C-ln6jA^laYU-in|}r7%|7R zu_EseDWv_)ysSw)%`29mQ`tTiiqVst!1ow6$ccEHi1}*JVN2t?ScY$$6@LJHB9bCb zo_b#oP(ty4<()<*@Y`NzO}GmG4)8E z>$C&Pk;LGkea#OTtv6Cb@yL>r9MQ;WeT}`%?=dQW`@tn;oeL7f4Ba0*+bwO>*sx`0 zaEI)W1tY+J)Fbi9D+LvQxRwYuc50$=!G~+ZdZFj5ofp2LTQxA4;ot*toL8mF_$afG10yIzz8S!7IH@w&97x3%pq~qvpFdVQBSlwt&V8rf z?GC*7GgM6sA8NQ43#~i$_L|RV6g}OTj4P~ctamc|(8@uxRadPf;&p_Zi+)E~bi0ek zZoyza?K$ZVAY{btybPaD+=k~2E4yu`d<6LGef7QeX3?Q*0xbV6;*ZaJmHz#{I#;^- zHPUfI6=Po`n?UwV?eJ43oN_RY*;Qd@3+5Ec2@)><2gHRjUYoY(k}A3^p{6_CjXI*)#V$O z=#Nyc@FbZ)m%N2{z~ryqKmC$^3=VZar?@qH$@l-V06wQwkI7MIubT{tvfSJ`;+doK zEBX{!Zc8D-CiLlcj((>bGM)|Z_6lQJ8bqB+_-SPv;W~|$0f5X z^;{hO@)f400Bc9XN92w*8#{aOd{tuRj>;3zPus}n<*RH$?Cj%3R@TILI;mTFs=C=2 zejvN4!ox2NKUT9QT@#w%{$~gFutwMN2Vvd znmew&4pQZzvy2jbTaCiqURn4a8NTujZtFaTX=Hwn3+z=ca{;&Bq(iq@1glmkh=4B6 znyTsb5~p_`s9JdTwX%$jdk?5u-`$B5D0&fB@5qFjHJ~7$4gy`b3iMeS6#EAr36IB| z8L0HK6)Dr`55M=VRvFmn_N}(I>(h`bS%-(|Tc3OsQ|E|f_cFr=yeIU1RINZ7So4Rg zif}7s<^aZZpF?NlF9AWKTD<(^#^WB$Fzj_D4>4lOwR; z=*U3Kz6MAx1TPjw0%g_son?Iu@2d!sSL-{|SNN-wd!eMcBy_(4bydR5TVOXdP~dOaib!*G(gUQdCv)O%2mqzG3Xo*D-A0mjjP-*oQel z-{9Xak9Z1G8Hcn#Dz+m7131#h)N@9R83LEj70KDPy}-o%ObII{j6vO^sz5(m&PuuC zUUn9;WYFoY?-&2xsi|>DpIC{D%S|JU$3d({Yc#foUtQEGc#p;Z>T-D1vy(L2uI~58 zJRm~~NRSpdVar2ywWo|r1N zSvjUeM(`VhS-|0-eLKM4ar>7Iq=FZ&;3*lRZdXra?f9w&Fi7rDl$nW%sBB&96 zicn9FV%o+U$y)JV1PB!|rNCHoJS2Of5!1!C2~fB=Z*`W^M}gC%e2vs6Z+ zKn>_?PzD%6AP-Fg3olWNRn`%e*Z7rY1cu7>eO;)?N}8q|V-Rk}u}nbdZ?YK0 z%z3`qPF77+4EnR=1IDS{R#7{*X_SuXAaV*wCfJD?-rm;KXdgMB#}R^^z9x1)!&gzaxc;RWzVHk!f8ocLRzVsj1UM zPDm0V2i)WlqxtH5XXDr3mCe6@9Xn5Swn=I|9u}GQErI?MtP+;u5|&(g(S=1_P^=Vh zy`)0z%;MvGM^ibGFpzWHO^u!IvM3HN(rUnxjg{5MfCT5gq1F^o<#Bup(#67lb6xDA z=*KkXEwisAqFd*`*?VqFLEX4}rQM5;?QPE<(3jJueI7J7FHeM;h;Mshfl%R{A@vKN z0NhpR>ai8N{XhCnuP`d$=dL5_C{l(L60a9(@2WPLeZHC?4?&S0{%9WrI1=4FeNqdPZuj80)jAXDuxssQ9hS z5r?B+?@kA|zJdP!cjSGwd$}5C?4*T2yz58xbH-`*aLF*jT@WUEkE7@BKO>`a@gYmq zd;xpY8lm!?BByOcB7!Bk1jAl|Wg`;ZH23DaXNVnV9rUa$v4g^q%?XNLtXQ7e_HCOk zMi!!C8ByC19$RY_m`?DTT3j6Z^*3V>@@D?m&Q5_W=>lRiAIS5)3`THcL#q*a!#I5I-XH+<83mKe zZb->Dqju0%4B^ZB{&*V1VSBa%fBDbN#>Q}+RH|Bc6MEZt#lG6c>W;JXiwhEYge2F< z`Y>kCuZw(%j0NK41CX$+C<61A_b7uy$%;6w5p5V94_azm`?ZpJGM0U2H1xpu>Wuqx z%Z*z}{-h>X!g!?l&2;}!O?c4RXnC94gT%+JoZhD9&L60m?><&19FN*1uQKFo#DxXY zl!Sx~npdbR!`QgY4gG@xie`p)?m#dOCnj%rdtrP9v6W)_NFON*P{0@0K%)gEdHGMd zFYx1wJ39}ntt4V6sbWezO|q}u02VR~Yq4;ddfA^Y^&{I+Zb?@LC>7$p3bnD{RtoGpN$ney~TddT{-Grpko-w|F zCR%a>1PmJcgMLU68z^5W0H5&Y>W=fO|Gn8pICf$!15|0fPRLT0h1ODn?nLeHgZm9Y zQCQ|twtl`TmdL>5KIx?*^7A}xp z;Q1sc0iWGHe8>2thW6EzS)I+B%s3fDa!XM4B8hE#<;md$aWU#fBh@4!!R=H@&pAoZ+uE^V^o)#NJA;mJ;7=n=W!8`&m%9k45PnZT??3qF>klyyN1 zkC{lb$m98IYAM3fH~WKL{6*Ql`qbo}o_Lzw`H$R}Z$FMF>g|owm^US(3uS^Y{(Eat zZ~9>Rc=x2L0XYnr!MvTIanphmpEN-=YZ`AS@(?H@8Kh~29SUs9b z#~oRqF^<`@LaGs_?&;*!c*Z1~h0tyBVamVfySu%cWS_zq6xH2IRJ8hclJhl-fMuq+& zx75GlP1<}t0o7V7$Sa%RCoxm=8^9_U3M6Y|^U8QPcM%%C2#bm`Mw;ZJG-08PWG=Zc zbDsQ9nBGV4Ny-QwzR88sJW{BXx!y{rG8l9t&cV*Cu0`$nq^Ai_URo_P>vhBa+Irdh zPAG5gbbaM>qxo^1e!u6TQ}y_`5kSuQDMRF&`Q7CCvy|PKjSJ657W5)KbF5NV?wmbgQ_xU5 z-|ui~n^P6v)f~%Ed-Wt?dw38L3*17e45vu`?OzFLKRItHHJx91x&XVr8m4a1rfwr& zt#Yrrz!8umOeX{Q)}tMr*#C+ton5Z%UJ;~dkP7NyG5wk%y$EC1f?}-22uf~D&}j-u zY5U9uqGV9^wVR_qGLY#OaG>uPuYDShf}aVZ^>z@Oaa+%jDV@-4DWRxl z51V9iQAiMNKnMjNVZJ;y)pwc#{mQQH>#XOpZ&}8r934rGD}8gyKp3kBLyhfnjoaCRy3RP74-v}y17)y=`DqJM^~<|2C2m- zTD2=r?sMtBG92S7Pw5BIOk}Y1?^_f>tjnv^5vye~e7BNmEHJo?{Vj6|Jy^YfT8u+) zef9ou@x_1WORK*(|Gi&3o^3deGph_8ZNJ>y3;K^`(oEuM^M?)ebsbDY1MY5|-2Pu* z#m?Zf{bNXm@YyVglFL$eyRy#+oz4IbeMVEP z>}|#&G7d-c=vYI%Bw&H!f~JTrAY99xJp#UThP27hec!n!L zObYnaBdNDQ(bMn?5@d- zPYVZ_&{HCu)byoH+kteN@$4Qdv+vdO>jn6~mTt46+iybE;s>}*r@H0)?h=(X#<8)t z!wH7klIC?4%uW=B=2i$YvW&8TAww%1h5}q?#=K~ENrvTD9*@SQ2+%e(Mn-G$*_+Z2 zWNjs<6|p%+o`4V7??&tf_Vsg?fQp2naxjnWfUMj1v|Q#VD+Bp>-r-0>u^knv>@(#5RT%+4+8* zuY%?|m^FmbXdQmKXC6%^F9o8(RJ z9hiSz{Q0Cq7j};>2MjbZF&6VqwJAx-d63eGQ_m{PlXSAENW$GoHuzB_F4nLl->^K` zbKWq0b#!j-U9I$Q$pYmUy9MGGX&UlLU(G8m+oVN3a8*3pUElr-#|ABdWz&-SfMFF` zXRN~nDf4FxhE3j|R3ee(*lXju{H8DeP&_)w^~%tv%`ndR9E%*vS{qdbuTQ~z`UJHC z=*qOx**lYwQ{G_As7?dUMqKn8xbG-GoaIck_;1;L3f^J^j=)gA`N3_|KmUO4Qu3R0 z4v+*uH=hX6<#5G}k<<^!4LK=mU;!r5>!Hiwnh8q^YTVCiZQ?szNFBj{SCw2z-EEJR zWR8%^HJh*Av?+g|cKNds9v>p7baD}(Xl3Ka{haZlb(Ll{DEGa?&V{NZ1P=VqTak>B;{JG zX!oKNRzQungm~L>Z}|%vSQb1_RIF-Kk5xyu;>Z~mar|@0U2anp4*bgj)lLK?N3|!; zzE33VF4@NKSwwmo%A>}CiuUC-QHuHG5`-*Gk&T!ltH{+jEkIplM{fDa8jS zm-yFu@kl`tsi(=3J0R+ONw6ArcE9}r{9bVe$Lk8GYqSrz(v>3^_~9;Emyjem$7OeJ zrq}kvvHMGzK0EEx6;1_)PwUA0TxV#FbOFt`Nb3(=fI?q5Zf4$XxAWgY_TJV0O()rs z+vQ2r$%6KIl#i0nZeu?6*H&n$gr`Rss6I4_O4;Qpt$75R$nq|r!iv@vgXr;SYBrMxQOJd+^}(+DltxZS|Tv=NfdP*5G-Uy6e{QkNpK@|KWm6ZhTkgk zA?GwS4d`woDq+!$*dIDcg<@K-GKg#+#_Sv$r9o;yryF7A-{-?iWP@{nW~Miy9`c&f z)WHy_CcT||&cCXs269K}Le9=}EkpfJ&b4Ju5BEaLUyJH))-W{eX%DExC#8S}7;`K; z$fc5CrSLLp-aFEOon7#DF%1M$|Hm{Br>{jdVD=`4RzJ4iTZ@j41re?zCH6X;PgTeI z5r9~OePpPQlr4+kdS2AG0raA^47&SJl!Y&gk437e-wQ)s4tWHvR*>IX7crK!eY9~faVN+hr)6Z%JsRlGMPSwHB)2WTG&Y{I5&o=8!RC** zY~$IS%^8|4t5(SvBTMS}kd=i}weO#-)mj6&H%{MG9|Np?6LmlX2MY}` z4YVbU!fKwbAFAgC*kcH>&dXK7as66I2*kc94JjZ@S}M(cq-9W_2SXdcw(2d z)<&RkLIv}xSLZuSfAQ;LOI9Af^1y&%QolD7)NXH{Q-YVVA6XD7EPSL>tncjiI8{r~ zVWj7<>&Qpf8Tq_SK4J8<~6m}vOPlY+swp6&uOOfFs4OMkMzbLPPS&4#O28pFcObqYhOvMB%)K9VYTLid)Z3&Cm^| z=4N(9(ImM}z7lce$$l-j`(;qDk6|T+eiuQ9g(V!Vfw<}K-?fmOZ!`1avHZ+p;?iQZ&;L(>5nLM?9vyE@F1*N{NXQQ5X5&_-Q3P1 zf$xg_hKRZT95aiw>_fYrNX`5LEqI$xl9?ouJnai%l8z?;lvsc5{5eME z^DI-1l(lmUqc4bbQzkHr`EW6~o1m)$$rpkw->x7$g1Jq3_g;To#iE%NU>DmllTh)g zz~o2NEo{-ot?x9D7jGBqBQ?A%V(JFQ$iV!xiVe5Nn|UhrU(qXTP4j<;tU~`9hn{6> zQ}g=O;LAHWg%DKsxKD4OD-p=DLW(>$E>1`Wk0e4DqEB68_S92F%H=#_4krrO{!fWS z>deL$YLxkmz86))41!(t;r7lhYDo(c)9XVCDLcEacEB=r-(9)7pUCWNA==9Sn4?tI zv-Dpklo}IDT|xZpi+4noX^A0Pa9}06h1%2eg`My_mRrV;Go_e7%&E5T8<~dHp|vkB z>|Ckeh5BD82(or~eY;#b?(7e|xR-T3^zX&A8Kq79+2w`TTHJrQf(edSZ!Snmmo>S2 z#h;LXsp&0VL+G4VK>}?!n>9}uoxoZa-z}hBY-GFW5aW|uVG&^tw8rnPjeUTYX`{E+ z;G#yNl%g83TXFAiF!MM&Qt+n^RrUmg4@2H(!v(aO{oYg{1$%AKPj59I(6fD%ax)&N zF#X{&qkhqy`y$lkt)kkExZfdd1)hJ5HP>Lir6gqmC+@%dYrK-x)9bb`cP74<8WIl| z)|-}t05jZfd*}g9mYZyRcfCZfs}ahQ7mSs#eITtgO6@jx{8Shl+3Aph!QG87w2iq;woOE;!*&cuen$U3@dmQM#tLmzy*f zbRUmGufO$;w^c(oL@c=CcWRAk9TO8r)^ZM;7ps8%{BTNXU!iy7Z7tf)mI%Z+fuan@ z{tE?0rqR&pJfagAh;U>aGQ#10&9u+kWbLYFu?q_@JfLP`+T zZ#G^AugZdk57JG#Li)^wj{{ZId0Bb~<5dLs;k_<~8a0sw|BoXN1a~|7&9~Y$vQYjv zH03RGBuK~Vp$88aEi`zodaj>PMt>(v{$q)ak#VEU=P_v+(<;C1YH||kqiRAy9w&RL z7b&Jk`6#b7Vr(56q~nMAzb65i`K=P#68eWc8K^BIQ(9K&Oac|w6D&`3S6baxx>*~u#S zP>g6fu0&tv5W;1#BYR4h zzxmw6))xp5n7?M{j`;2^b&h;2Z`S@!aovLxpH&yO9m4Om=CSAoPMu)?0u5+0Jhsss zpKn&dweUG^<@HtoZiewsiV2!x&_mi2O)krcwl6#+G}K%#>MIT@rJDFt<8cB0%SO;S z-*kEC>&dw+trMIqGzIOhs$Vp0d z!P<;EA|idp?$%`&7RR#UqW@u%s$Y6^@;eu4$N1{#&|_hZEiU@8O@-j%q5X0rleJaI z*(CV=eapp9jpIg8k6U({3BQD}^@p&}Q{`hq*5FiSgG87Y0jwtF?-S})0RQ8q+-o+Z zVN2-!}Jw ze ze^NOQR9C{rrwS+BDG;h;Zj$|PAKH^g?)%qzw=A-x_srCEx@nEpeYsRw2v!T8skVi` z(7J&S(cpdE2NqGiv*Y@1>nv#Rzw|F{ZJnWhk36VDj<>Bku1@A9LN3a)NFjmWIgeAG z0U#eff(<8;zf-iJ)Zr+78m+ka0lBexK^-3G>Wr_Y%i3@af6$MYlrUVjKJIH@hqYMcLGM5h*fW1P{n;X9Iaqec zTIeN6Wv-1}dv^T&HVa@jGWdhHaPQz!fSNM1#Hp^fY?oQ25~2X^yi)xp$ndMP zDS;iuW}L#mYeqotMn^jK+G1QQ%QZwTScUUwzY1et{`jZ*__2YM?QLZmQQFN-Z`NtE zqCw?^ie!)YUu^f<@xGDad!VW1Kl!2LVc~UEs1@-%Q07nW#i1OxeD3mn+f0 zHLz=FB_)kz0!mA)^Q+h8(_X21ehbrr^aCjo*ot^p5qjnDC<;Oaztn+yvdag-85TSL$Cw)zi48if(4$_OAz|T=SyGBi2s|?5-sPckqF42nb;R{Uz?n*I!S*JcCHiAPTj9BE@X8VjFbp zAD9-jM!dzAAf3#9dp@B^mYMYFtE!UlN9jvheFKR+j3F2&mD3ZCed0SZs1eXvu4UY;otNVpNYU!=*8I#(2!nf+ zovlTQW9BDpF+_qzrz=rhqjz_d_Ep8ptD;+%h zG99{hZbe=dZv=AR)0uS3d}y1~nmyK*9iSO_vGUMO>Eia5O-719x*Rm=@S zpH)LFuc!32wA?=ZzzPru{_!P!d4X|s2;Nj{!x4)5bO-T0>7t0p9s)HWkKc*1oZs2$ z4lvHJ^XJnl1H@90TvXOpr3w=xq7DQq#o4_8urd|oK_lt-r6e-_34f}|Vvv!9lM{x} z*2Svnp(hE(zVz0ZvPU9o@%}xLF|G=6=?etn{P8%wQir^fl46M0!N0X3D{^3;6JO}w zC+~TKiKJK{83)!DMrxH23T?zJ?Cf7Ls^nw3_zNa5%23)8igZVJz_2v|r^6KcwFoyh z$#bIy7mEqk_-d0vm}e%&9T3kTc}x!lGR@)H-=ed`Lr(&+qabR*-bX5qHHP!)94uUPDS# zCW}eF%j&bPYYII804?|^=rz-t9q&@|KZyyd_n)Dur|;O>li4a+32r()Z!YBsuoI8& z)xwa~ayN*%TP1?Q2anP+W;c2Pm=^ts*;75+EjceLaz^LdL54wMiRRuj)*b3;M_mFB ze{iq$6z?ho72S5#GlyDvFD=RmXDvMroFu$}tp;S&N1wKuS4fw1N6k$?l~#E!n2PkQ zBHjA>_|#7XudwHf`_k!#!xttZZ%rF;jAg+RqU`JPR_`MnlgwwSRSu+Me`tNo;i=ig zS%!CC@96W>jkF~{yvudjC*3dIUfWjM5!KH}N_rxwjS(nLyQAX7o{n3SI#8(xda@rf z^clDwA_}TIBcPA^1`0ab>$#KIpq%Cb@jub=eDgM7eR!g{;q)|K*j~=9z_%hp4lJIp zY|duQVcL2(W6heaayn%z3`F*rQ6K_KgB6pNaYmOdLgR4~F0S9tvII6h-&y88-dpw6 z_&!JDE!&nlQQwb_l*@tf^iz793D;J&+LwPZPAb1~g#0!Lpl11Kff^#$*}ov-z8E;mzF~3r1hHER>C;WX)U0 z98BAiChSpe4KAYsa#<&07n<*aMAzi7Kz_rE5m#T6XDa5pWRwb7khf@>z`IG+R}0(V z($%9vo4ScWQ+l4EzWi=QXya0=?{fI0s=I<`Mn@ZD#!$WPsjmA*J}ax=+e#M=tACqg z^=I1?=Qtg}OoeuygJxw74Oeqa)bg%ENw|tKg&mBF$O=#Uj*ys`O$r~}6t%io<*ZDW ziQd<6Tg?9qscjXRJ|P_~b{qew1=`lFR>`b9J^Z#;Na<;Mh^Y-ze2}OEl52)3h6I^^ zDb7f=tmh|3M@22SUFQ@5X;0f-q)2Zn&mZe$fV5r(*(ZHA3gX9Qm-h+1t)x-1I}uSu z^6W>OcyG23OIFWU4)>q!$&2@*Z?z3;UnUi^lx+}Gb5dAMFN6iy4BE)bGLqQ;d zI|%LJ%zo?M&~&C)Q%8YUs(3n!yu@Qu+7{&Hl>?Z$tszecU3h;!o#WV()hcM?kBrt9 zC7s6pl+wa-3oh)HpH+SVQ)mbQ5u{9(BNvs;06r1uYrYnEmNUWZ+Zmt3ViU}=xm}h| z|2dr>YIKdAot-YGb=mn3`Ti&RG$KeIYq#&BVPE2KrE&~D16hkEsvrM+U*B`4Wh~Ge z{w6{3px!~F>(3H};!txqWA8o*fy|RIZN9`u&{D6ZLf@+#cIef11fcn{4jJU<%0FZ} zlEje#0$6xAWTHg{Mn`SSc_#~!Gs|m3z@lTKg_3z%Ua}x~NE(lyo#AG65Z1em zUO~6|>+^^7ebmrR-{+_M+MoPRK;=wx2Z8-v{IfbFZi(+ig`g$BJY`nVtxD`fcnYm2 z?YY>6lQr&_j2#dW6ca|b0Gu^5I7%@10lFxuR|!qr=nU@^@cDf>Tz?3p-u!*OnK^m({Kbn#7UqIsG<)w7223alak2sa+1} zZ7z>rE+=al6D!^TlvYu2;a10eYl&f8!q=O+4Gg1!%&c5yg`bRZg#}4$$c4dYi68~` zuoBjp$PHfMDhwH)rcYI9g6#eN^EWvBc;w01^lAJ_7R<}ck%?Vtx!c+U4x=#N%?@O! zhE9)c3d_XGUG^B^Z9dS;miOLN9@;y_*2kPmLb>E_dVDc@0k100iN)2nB2R@%7s&nbs;wj@Pv1Fjdd&+k9Yf5c9)C~d^M}zDV&cnY&=#`i;Y>`+ugH| z>3w~=aYLXW96FGX^jf%9_~rff+2|-wPKpWtsO{tPV<5!spgsvAYH)Q%XlL@ zM+gQ6a?v;E9)6mUQf5ZGL?GbtkjRa6ah8>8lQ33YA+V5@D+Nu*@rc#pZ6&LaQ(KLJ z`A9grrb)W!`nC9YZ)^OwkPAS^8J!2&nn4DlVgcu;0`>th%KsvGl;dDQgR3V)L$pJX zzkUD73&Zg)npSt?;1TzIm!9`W9vmK$Y0{3a#EL62Cm}k#;H-kg^>tn68+4E4gII0$ zX)nNUU87#LiW-G&z|PI1V7W&4hZ%IqG@i!7RaGVbv323E%LR?ZiyE?zAyPz8as*ZK zJ$cg_AXUX1|NPBD=>7NK(g$+hf%*BD^24U&ViTcBA*>IU#~~_!R2Nk>b=Cqi;q|~p zBmi;J#W_{0M%o`!7dJzmq-4OnynK1h38}*jj%JY$+O54=VB7if7D)ylt#?`QIgzX; zbAZ1OueVy{=x|+?nLEw>TLJUeow@p$S2AL#8=-Zr7NG@cxtvA$ZlF!GekaAb)>H?8 z8Xd2LS<|6pNhdSi?5w)iYe#*lTayO`S!Lq7HkVeI zp9J$JO&7uxpGdD=$fLx$>g3ndkPX@`&0*%5b#cS@8fO%sr{BjMdZSME-)J0m0bTgZ zQK04)M+PD9os;1lOKq;wO*F6}eW2n86N(*aVk_mGpkHfQdK}$N>-acZ2EHtc`+8TB zo0-L;X_Iiu$K&->y<6)WffNN%?}`qIiRn@Ay?F(M%g(R+o^H0vjrnd0^I-cJ@*_Xi zb$2ItlQs$o0xT*Kf-K4x5%S&sqEQ^>S|o9!!Qs`X*c6xjnThqRB)Nug7cw`yC}#b% z{2-?2&ad5S`*V-oJ&ouy`j=wrX*xB9?xMJP;(E;S`nsZk>@~O{*_VTj_Cwa8{bFu` zZtfR+N8C4mIH;990Wyq`zBOh5P*5HW@HebjAO-VWOUPf@bYlw|{m#uUnW*WcC3-cf z+Ow*oX|)ublo-DzT&bwY{&KpgeDdbzLu7frq$^)_C3CHaj$TslnGz;VTD#<3sTlu!Iw^&?dXn_}%NqexH@W?A76O5>p^A3S^zr%S2!D{vcx0z-77iEHtNR0cuq*-) zeMwKyXX50bA7qxU3!DLDB`HgQKXt!Fe4{P7u*ii!)hzQkfH{;D$!eiHK#=nk0~WwY zisXnRdDA;~HOC zT2DMlJK=r7KV(}lnjhX_d$9GkF9C-D=Kjbpt0G?mnnadlw#ITu27~ms6(t?ZhXze%5W(*=vkFdI;@Z^_oDRdn zpI%ip0gXH#GqqfaH>Buk;d8AT_V8UDp&&kGr;cn#-A;vZIjanqM^BBHTYjB{Ig9nx z`$hj5n%qLv4J*4jF>$rpa3ne2g_X5QNxo;R2HkjCkeozD&rFzxq)12`*TNC4bbpkV zqE2>(1Y-Uk?_DtMh7njKz>2>^?g}ccbHpZUOnGH35RC9w?+febJQ93_JU0C4 z`Xxu>d|uq{U;UOG-m$%s-T>l1R&> zA2Zgvw|XNL^j#@m)z{d#OL@T} z;`j$uz($3Ap|w_@IbVv+EtZTlunZySn92)!Rw1{1-tHcB2ya`KD8QKR$NYIzuQ{H*m|iM)@LA(5QacGN+G6n@d=M0XbFnh&IrSQ z1#dwT`5EO>llu8jw|?qWe2y@AEwr1G=Nx@J@6K|CrFv%?KVbW0Jvt`l z0DltZ{4SmtEt&X@cPNA()2JbUx$`9{g z?`MT^)O%GFUeQHM{dljl#>8lMfvHZSZGWMfa&5 z7a2`G-D)d_?>yXg?Ote`tEWL3zY~7{{TIwTTi<)uS@J};7=}N=hAp?lcvGqkQkDHN zYL^KLQ-DXWZs}T}lW{l~Ua{(7gL_*dD29IC4zeH5XWRbg510%t8y&Dpl>0#&If@er z3Y=OGAdDt(DR`#}s!8m{lFHBIWiL3=F}@Vy(ME^1KA+CxOuR4-3G=nVr z7%0Ac@}diuu8lWr-e~_Gtr1QB}68UEz<$g|r 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
P7b?> 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

^K|rf=lT<4w=n} zIzJBLyJ6}~;dK8|BbL!u=T+eMBIKrSBvuC_Ztdj*e9>{$bsi;X>jP(vmA=o{DfFu@ z=My`|*a_ZNT?2lcuLrkGX84S>?9GMlaoa%s)OB=xSw2VMRHxtKSG0A96v`ia6-q)R zTWhp({xcjSreGh+?vwYQr_)}zb&R^FgR~KZ7wIHulA(=WwJKb?tHhBJf z#ggDpFySN4b$+nM!Yt%%YVr3~6vE`?iICbklfn#CB3E45OtC_XNR2a7d=1R)!q>ZC zc1Nd6#w+B{Z-|F~Q1$2kCeC-?%+^PrKh%H_tns*uMia`$t?jl^jGmyKXv8pY&okBl z`peq7a^#qk`WSiyES%?dLXb4M0Qx2^1IDqDNz2SJ%h8b$suAQ+9)FFPys^`Ru2 z+1*m`<9-fH>;tz!pAFaCA5R-YL)@e_ z6tT7tc#}az8c&9@q{a0p&d|7Y;Cm&j@aw^0ZI6=E%}fC-n|q_e+_A%_Ddo`K!281#C1 z-1|Vp{0o!BKIjhAq4&8>9IZ}JvEHF%C}ez{`V3$Q#5SR@V-T#_mpEkpCGei#r;195 zm;Ciqr>(=5j*uUnHw%vf`9HDMlwU^Am-AAx3FTuVV4}}kQ<nX~pTdxKTy$>fX%9H|B-uZyJo#CzG zgFPg~eNDx8RJe;gOxZDq^$Xbxkds9qNIfgl_4R9eVXqTx*=%(}@{{>{7XikHu}UUY z?_2jkP%zxW{?%_fiJlpITE3RCDWK^hg6o|NK!!S|5)h?YD;}{miR)mqsd(`nnat&n zEWCgDjnu88>frUB-R`fiz5_PZn^M1Dkz!?qTNDLmUi(?JPSf4sbqzGl6`7fi8QVPJ zFUujmtjJb5vhUC2%DZwGJ-BuGDZ474AWe@lkkYv|Y(=bjr+twE>ZQ{wl0D+J=SLIg zfAao!f${H$JLTo}3cQ@InSC??&CIDk_D7}@(I8YDQeY^56IG2pBiBcRg5Z^LL#hO! zR2@VR87Y{4u-h9I5$)H0(zDzhL7l%{XYhG*eVu3&9iiU&gT~E7oow#)kZO2XE(Kq4 z74Gt6>L$K!Ag6pctbem%5eMUGjPQ0vJX(ZQ_^;QB3}>kZ4fZ%JE%tU0Wq`-{<|vwo z|B3BbSbeX`Izxk^|5DOF;h?R~vr~ayHb4BS<+3_HeXXgZc>VZmWF3YD8Bg+_y^5`P!+jOhx@5Wd%FMQ z>Ac_B`rki}(pqf=vFfeFj-61Yb`zUgL5$W+joMU8&C-Ou~+sQ);{dyfaCCaGMd<@j`RC)YgC#c6)b`!Vi% z_B7vN>xb6v!5v{IOLP7_dJ{_r5(DSmwLZ5wpV-s09c}65c~U)gddj z^lEX6wfNlJE(%t?aZB4@cu+WjbPFHj`CEul4FAMy_s(sh>ozsq?_@-Lvx=Ss^iYSu=PAetvMsuWyi?}xYLS@A^QyT| z2a-cjVfz=K5(nEBTTg?Fx=DA$LSreIsKXb_BI}e&t%xEZ9rQJ&xc530yhP-9O`eKd zHob343NUl9x9r1g_;xcd)*MkQu$Up;e){UscUk$AmV%ACq06^VFCRG()$6;%e;+^j zH~)QcC@(Ll;L}&LBN3Ng<_2k)l>usk5PY``EjhB(+Ko%Vz7oUf6KtOqzNM)mCPOz4 zRJ;SEUojDHpA#)~8jo zi=TD#zC65nX}z;MJyiMV@?>mr=lEH8-F~1}1D|L5R0&Pfb6!gM@QZw~?bk|DR)6uY z9~o5mQ?0Z^yxJ{hQ*9i|X@h@~lZOjCB@8M0s6|kiKo5$%A>XGdSaH>GCrfR_Mk8aD zt!tywlh;_M?PyGujccit!O{^9I6>Fh>L~Zv+=l0)GR-{|C_9=y2yq{wdnAi(kmzJ= z!1FBjoDg7+9Sm3R+UYbWzN__L`MGAWP?2qh9N5C=dz8eZ?MM+I@amt-hC^@rY~i_} zWxF@%Fk_S@Vudsj+N6Ig@c!E1iODuNpC2C$h;IrrTX!A$~8@-m`$-T zVjn}CTVt8KrN(GYoJ}&s9b{7;S^V!Gq4Uwj8K+>SH)92*M;ZQeh|6b1b#IP(wEFeU z-3Lc9d%N6K$N=@iqU53N=9=Ay`FjuZTM3!vS|fdu*YXrWRpLGV_9Z2VYJH6N0)iY) z;O$m2x69vtQPXp~ydmGwgCR4L=~Ka^?X|bj_0l^>!HnUZug^(6+pRqpd21hoCmvEv z%=#ytV@pNBqC%_#`s0Ro&A8gr=Uis<+5e$2azZHc9BW`Q#iyNI&EGV5(0IR$)tQ%I zgNNMtET&9m;n)5G7KghE^Roan_ikLJwNOHh_viQO3iq-SzXT(00h|qMc828EP#Q9j z4HbSGugg`P%dLyqYd*JSF4sjP{&S89Ieo>On$F|-DpgoB(?mSTi0}8wfnvQHWh!uM zfby+|spGVVV+gA~9Q^5WQ{A;dA-2kCrl|JjbN9=&?|WX$N}ejJTcNQ4(ewMqIC~-yIxr521a51eqHcn6A2CG zVs4%ot+mxLvdYo}n~NBcG?jMtm78_Q%Mccc1oOInu3NUK#YDN^021%cFwdZIB^ax# z5pB0sdhqo{PJ*qpkrL&lYSNlW6_*u=6Z%eq{cLhsRL5vpbZR!OV ze?%{>1V+qOPhP~0%6vHabF9qdPw_=;ttU*kD2aGd`H|{c4WovhM2S64+hg5H;l#T zv~XW%TDQadnSCX7=3@HxmnR&!1kGvC;$ z*5%U*6OJxL0g7?V#w37wN2|i&pxDBZ5kcvu2}I2ou$JC3X=-<&%S_n)xm+!qtU0w1 z?Z$77-P*NrKm`z(EiuderF1PsdMb~KgmafVVwhzPw}7p>RHpeFyQ5z&)3847Uw9dq zPC!??{RyddOEwGbVmia5tL+${m6xXEj9XNDs)xhHVc&tpWLIEe+Ei!^p_zpa8>FF; z%fRKiiJq9Yw4V!Q(n)c$;AT^#=kFzjsxwuS= z$T|Aq6M?*34$t-h7|9Oar~vR}KMH5ft@*-E=drh}dNJ_fbdGk8T`xOJ18%`qPNVo5 zrvXdFIGIcaUzEk+!tT;40JPgFiU{`>Fj?_uB6Y3Dw%b-Jokk8nRScw(-8S#>X9 zc}4xjpUKz3qF3CA)h;N0x+mR5WBTv4?SLYwa!2b?$@xwUkK1pr2F_V}yC#8$)1(Ps zw&+U}hb5)l^%7nVVY$nfXIkWN=+@U^qSv;At;Qlwjuo4%Ud$~dPN=o57%bb9b?x=^ z8DXwT=%akoW?z4~$1v>*uN$U5#;j@SO50+U?T_Cw5Z#dW)Z+l>@lhOD;nvV+t^ag_ z5g55b=Z9B@r{v580PP()L*aDdqfRAX$)08b(hb?WDvD}EoAPAd|;>I*&-TLV^dF{vIrk@7c*dBJ-Ovt--=}@uBoY#e^Sji z0wb$lABKOHr0LiTgE2}1*!;92%h|GM=J-Ce_T0XDkrK0t;C{R^zAk6(_(z9m^Zp^jANfOMQ9EGMG;!Lg);e}O9h%QaUL_$W>^yi z?Raz!y-C_e3xjxrTrwVmUX2l>(n^*CRpe6lSlnRAna5+v2pwBNm~4zWqThdHc&+~vdq|A8b&4+6F4|eN@RAvw`XR=L~;sKW_J~loFD)M&Go?gEZ(-@t0v@uN@ z+1U36#iU*3>d#IjbZ33EG52vMPY0=|pGxkvwBNJTyU(X{s^ht>P8dBo+}O+MzSvzk zUcPpFcm0t%AGApb;knI$Wc2*pnR_=mwN8NBNm?=nF(5=#^Je9uXga@OC z{iJkQ%zbujBDz#4Jz$Oh6o(d-kU+?T$mui+4}{8zQg@>;7&F0?v`AKu3p1dEQc(PFCOwQ=r)Vol%X6xWD8nV{vj;}-;Ovl zwM-4_wv%nrUe@2m$qi0LwuaBOhL-fUoE}}yrxDI}Z(gjWl(j1QJbWbWRDM&9Hv{& zsH)Cksjnel*D^=Pt(7WHM1QoP5Kxx#f)&QVAe8Zu z*ZDwAyVFw*L>U^_JiW=zJ?7wn0s)^(UVVZxRe){XS&c$7mN{_*;Hd#YY)JMfRsfq< zMe_~)218gjBV&2IVeXyDSFFbE#F<8vnIf)=Q!I4`wuV0YpE3|>MZpdOJe(S-Q<8Tj>zy;#7j zkKp+;T8Hx}-NHRSC)QPRQdw^9VUFuU3?G189qCL}Z3aZizl?w9ut0n-3(oEsvxg2P z{wHZJ^{OLTCH(KF+jkUFx0BFfx|&}>SptX|+O}MGCd;e6JUO6!^~<%(9z4?WcG#cE zr)mjzJPT{a);E72`*)8|lg2oMZ{Dn&cHb^BEAcHr<~;i~o&8zJ93^7!Z6}{vz8g$a z^;yP? zn!U51mu_Ac*P33c%y-tW9f6&TYm$+d3=5@^UNz3PDU{-X^ zJo}B2XspYopM}FAG2++6<#Pq@?;U{pM-gFmj~@=5AFhU|6of3ERO4gZ%qXzS%BR|5 zrFYc1>70PTxo5|}E>S^t1Q{d;OI&@6hMCMmZLN68oP^ zC)G;J$#QUeLw5F$>@L`0F1A%#&DaBeo3yzCGZZTqsiCRR5Qo<=vhte^ z=ss)30sl3-X1+yJEF9+5j6T8$Eohb@tFTr!_Qa2OS3esU<#d&iZfg~Uzl-}@yjIrU z={T|hX>azPn!S}E{IixpBH45CMCHb_;C;Usw98uGTL4)Uku_YCLrzaCMzQF_T@7^! zcyitm)NME&ERNHAYgWn?3)6(35}oW;x-M+QvCRN#?ybSdyeJI@3&SVlcxHw9niTN3 zEMoGo_egzz`cvrMX+=q&b7EL>;z%3M{>6*kjn}#eUs#*M+$-ij4aA;VJU>wQ&hr|y zHRl&1GS{#8+1$9o%_feVP}GWYiYobS>M60bZa{o?>4bMKKoRiS(Oj|FYEeA>x*Veo zo~Kl6ZTF})?=q<=%{V$Q5WJ3-UlX z!#PYTus8`9N$AuPV*Tz7PiYXqdtw>pPF@AkRM;>l+g{(Ony#%L`(JbB$3vh{3xDD0y^Ql=pGoVK({>CkZ zn3sz|8jtt@EO20xbtJa4cC7<@@o(ay=4c!oynoA@81M>5g;7A{R#)+uBBF{vh77wK$TN z%|zqOFtB&6QV=t)2GrxscAh6x-m)ks4TA@b1lL4dP* z9R@0a^M13i+=^UGxm;Br-h}tz0)HwzwwDeizgR9hCAlvuGjFS2hwUG}P^}5-m`Fs+ zIa{ssH1)hVSbZ_~;rS`~H>vaKAFfaeM|Ji|KLAtKy5raxvA15G0^|MqZcnamWBSga zK~lBs;WiuC=%9@cC2bvTW;x4R&LS?t4xyo4guL*?XcDKcge=00x+WqQ<64=vEZKuO0ltLWNIj@jcFs5sXv6xYj?PewNIJgY(($ugUk$3IN~)@A+28E(j+%VFazu=H+2>0 z{sU3D>AVHoE#`Z8Q|Ucbq_#`aQjjFeTP@+2r0cv{y?s;WR~l8MJ--Stf_nMKYHFF^afx0-l+ggmT+T&!r`#&s z`{f2Lq^?_bja0kz+ANV753cWH&3f*`ZHfT7YDXK6utJ+q(L$RoEP4{{lEIaOxv{+M zwoSvodeXA8x`VB*(+FpE-75<9EDAf>9D7rrtBB}luFGi8(R%ZiY397mzbZQtB?Vz} z_`Uv#Lx=(01mve3m>;|wyoXn7~G9l&f zat|1vha8a2 zM_~u+Md!aBAdmMyTyFY>$ycF0XHBFKiO*rX+hCMq9Y2nE2q4!o+TP<{`kELmOLi#7 zCMyNR8jC4D=&!#9=_;t9YaV?+%q?~YQS&$5;~jrvK?}H{ruku(^bha&{*sKi7IMM? z203EZ8diqWS;OtsFG@juDu(5$?;2={rTuz}8y)6O^KP~BO4}lyD2WhY?-$4fDj^AY znqN+}76>fJFrL5olm^a`^wC?=4=CZ^2|z{z69{cFuea`aa~cX3-mXVK-U7i%F<;!Y6nAsF$~8;qdg%lbQLOa<5G7MHxZ|(ry~RDj zF(oELrXNbSJ=vIk+Hrck{V$?5^qephJpM4^R3#eRoxl*pH*e3f>R<5|SAv#w4YHcP zL(gf%$OI6dY1|^^WW3z6TuZ}zZTC^Q0aUh$oZ>+%9pYjP+WXE!@C3zJp7(j<029Vu zr7pJ;YL~ROV~2pmdp_x=-%Ui|4ak|)U;Bq!*NVc!uZs;hcyNqql1`2TmAe#Q;;_Z7 zUVP>siH2Php7{9XE{FEpS%A}Wnt;Qhp*NLpWR}%#oz;jE&c*yP(#@P7AB(P>%3Dyd z)W5Ahv~`{1>{7VO-`8g4{M~u>g55NVBLVNtUk(cOp)&MBxh8flYg_C~(E#1`6{>V| z2*sSU6tjYMkPk4!Uyy|_z`M5T3tq62h5NhrJp^qk0-l}S8T>K1^7-Xzx2|vVj36+Z z(smststV%z28xE+^4=~?_#_-N$4)ncsXTfMjO_Je+xt64Y?Osa@US>8lGh9Np= zXNT9Z_6W~4RH#4-(w3+2LN)H+Vm_FysMqxl_YZP;_Nb&%${)|u82RifJ)M&_MDVa8 zI}&^A32N9$wz1ju#lm@5$VjELE^YVq_-zq*7eo3%}QI!}mv72ft#lWHGzh1rx&O08P&i`C1I@WC< zoKt#3>}(C%x3D!paEkA(={(>Lg>%#fbBYy{v2vXZQ2Rt;il56%bTXH;jfE${#f$R` zWwz#t2g2@afF0W01Bx?RHZum?*{LuXR z{NF&eWW_LgvWrt#PXQ}o1eXVA=&?vsef;Uc??wX@JNnLIJso~eJ>Gk3RNj$OyJm)d z?yOG1OFEhz9P5j=A)j!7P01cHta6{;!;P)9c}N5s;ORch+&5;~6k0!>i84M5zz(SuSy!VC>+* z$%{P640|J1e&(kUmy8y&(53{3WN#aV6mAPfDhQZSAUR!rmR#q}az(%2(%{*3(8p$B zi>qM0$hJ75(RI2sc(9x~;6Mq~WSA5;%!+OwVve=UrYaG)0kByIsyPW9FvH$ULyvG~ z%^0POWgDPt_Zej_r>ku2eko zHR!DqiQ&!>H+9K@k>SYt)vL|X)S9tvtu@YzAv3Ih>K;AS^F?L5$797MWzOMS) zvU}ptQ^IREsc#y!Mr&Z#{hw(m*1H*2IJK6|8f=E};Sn<5uc(M+W<$&(gASW|`7K4Z zZ&BUC$5Ch%v92^z<|rRQM^PsG9oien;xHx&J22h16_@evy4H>zpdAoeC$KXxy^So zu>U}E%%stnqV<1{zXzieaTE}9KhIL>6d@DI?Udv)F8hUdzw1D*@hD?d_2+ug#c{+l zWozP!eVr2@w6tvx8lMGhc0yEmgx!m~H6fOa2zErDhj%;gJN$^ahY3LvI&8GZ-|x>@ zJ233hes}$8fs403U^TFVEvIS#Kw{70ep}*^M5jy0$Mt~$q9ge=KWgW&ga=05&C*VD z=hg+T{HMgha4L;IGs^M5Y$Y8Qd4`=oG(a$^%7fu}%m~gQ3m5OZeM=MVulHkVcq=R* zfOQwL>f3s2v|c}IfRn(y1-h2|F;M9}Ely;0_xjh(K+&zNv9R23sm{dswFPMeM;b`+ zyZ&}kB*wxuILNciYSjM2{V5}Oqer|eQFh=@uPX}iu5Iu)e%=W2`NiUqYQT7Y9nSx| zMq6D&K07BhZ&u6c*3PZtv@UY-f@qn@!!QNoGw)UjkUHa6b%@i8tDdQ%*%5UCe8 z?6r^KMtDeXiEN@|3*>4y6OQ;UDCsg@I!l5Qyus|tkl63*Q*<22+Ge?mla7!=uvm7S zEV)aC0!s|SZ%Pk-3M%N~RF%UM^Tg?wPeQ>u#@h?VwM7eZbqLSC41{Ss)}s6Oj*wf) z?yk2|C6#m?c}N9}ii)fgMzHr{Rv8qVYVf$k$mgEt>z`gmKA783d~kAkW$z&PHQh>X zcVVYivzRk0jy<-U!!v+Abc-U58DVAU)ZpG!#GvzvG%c7qIshk_QFqf6vJ+^aati@5x7 z@cL-Q{s?g=@%+aEk0E?Wu5L)!sljQ#r5*D;9h%YSwHs{sO!K z^wV`s7LUOp{I(aj8Z3=tEh^&D*6V~`C~15YF5$zEm;_mtn6wGp;%~Hh$)uE%g=*A( z;_}4SR<>|-D(Jf{12)GiECEXn(|%%G1YNQx5SC^P^eLynf-O6Sjb7KI?Ph}Iu67o{ z-b=YBmGF~JYd-Hb5Fgyc1dL<)%*vme?pFjR4eM!+=LF!k!bysY_&aaK+;E6?au=9r z<5L?qe0>&|Jy2t_IyF243^G3u_T-PzHXCT|NsF^Ru7&Sz$vOGW@VBZIaSAGRZ*Gx0 zgJ?WN*{+x<%(gjn57@EogCiMeQ`h82zs)#a5>b|C6}GWnU@rrvA?d1-r4_R3@)R`w1dAF zqt-U)01G5W(;g*G_V|MhYfMf4oB>|HZqWM}$}x7l^JvM3|r&~KVgxYmBV80v*W5DJ7sv)R0u^=;+2hVEur_w8h$z3Y7U*Z8`$!r zboJLR9}$TwyAMBjdI4E)K8`Yo?@%zfgJy@|=Ixt|u(Uc?*~i+mp>%kBdgi*glV%yF zq967#sNW)I(VkZr<)mgRO9%U=CC0UHf_ufYHe<{vuD$kTm#GL8OHkFZ&^PH03bxli z7-qBJtSV=^Six-04;{}4EgA}3VNFG~C=}x=O5Xd< z>r~B!tT5D%JS&10F29J)A;lU3;?dHB4DmI<44+yiyhS?0yAo_Ox1xg}y9R@1cChV*KY$*A zWwZ){1^T$eiCea`pk3=K{Xg>i0qaU9|mx2S*tP;|UJ zI<5`fp=jQUaT|0XZ}N_;59SXTKRA5)$Fe5Jwc|$U*g|?56hbmgPd9-^ zJFAyr8+pL`U+(sG*DKSxOoGkfxrz!_=8bl6E30Z6CAusH-8N;tN%C&35;~E!?rtrk zox4b_KBI*z)FKvx&5^Fv`VXZyUJ>Gb{$eZd^zx7Tc?!@xRT^?6h?>zVPctIW*05To zze8K6O4ilTAqL-F7F`ZSB+A9-1Ef(-9X3Jn>CN7)SbpBmvCALDAg=B zeG2RN`ODG?s^o7XyMurJ4#MXux-&R>?6t0B+~GmOT!J~Fukeg z&J9^?6<2?kB9iC<70A1b&O)ED?Y%Lt?z{7HFBzc;^lx(x@VYgUEv2ooEI++oa=8r% z;cmOh!6`!={qfz)bQf9^$g@kTd_s$X1bY zZf`X@@=hx^n+UrCX<>8y!|~Cj#KL*dpWlBnnbUAM_+4<7Z!uL{~u~< zi9M$YGO8fm3 zgX_iQpKMYpte2N3O+^D-N}p&ow0S=|F{Q$1=@8Y(eXiH-2u_0QDDHsGL(=$NZ7QjFjeYHq$B;WzR0;(-GHxI!B@ME z1|z9L*JG_-eS73;&Gd-{mP=;73tj8##CfCopFab%R{M~2R6D9)bL1z$@CBH?eEcZ- z-=DF4e$cjk7O7MJw;}5YbCy7BHXz=m8<4>P;CUp#)b=VMEl$^>44atDBaaq{z`t!*njJ{8T(cES8gbj_3DRCsXR-iLDwm061$vOm)2MkXXP#e$29c^C1UF zlCCrflyWhcX-1pKOrK@Smp~2hu7!Fg;=pEzEf!A(q(yI{5OAmaX4o5X9cQl;HMJV? zCa^#)$A2>q;%VF`=f?00|-k{a2=Kiz#xJn*oj^kf{@UiVxZ^OiwW8)+(jm^-s+bjCseM4oO!N1 z*U_EZUm!g*Uv^G=XT*G>4s_h=hE92zYIZz+#nRP!yt;jG41c6}l>JS#5}2tw{GM?t zVY#>uv^gm~*DhIEeexqvI4;Y$WPNk-!NkVnwB6qMUh?MPXpNnAV{oLNHtjFhM_5J+ z>OU=R0syz!m}(6s&85|JA#EOmiff;t#M(!8c6U0qO1dAhZ5x08^z$J86VYF*B+54c z9>?#9fel~LD|G92g&4RKbj3;#rr)OWY`Ivol<*+Mm1OH6+P}%Lpp=SXaXG(tx&}gN zq86Saa5FRRW^n}VjaLqAZAMYDMaW67-+*H`23Z3J=W@2Y;lDnq+o^`19E4CrEpd|> zh#8~~+ooY=83V7Ec3{CM8S1r1JQX{`jqY*~fo|JDMKY;;US!|Db?}wbq`j-v7*|E@ z3YkZ0r)OuY^Ie4r^i45zZy2-Zf1R&few*WbQ~Kn;j6fejOrK;5+vLUoSpYcQ?*N98>x^s7_z1ES9!(Mj}D*KT=nv4p0FK9Px#-zL?U&I2zm%j{Ni~ zEVEo36omWukK_8)B!7}&AB%vI4k)9Ktwf@>Qn@GJl-+dOpn@%_>ovcYt0U9Z1JkIa zXKap4HyUnP)AjEnM}hoDA(%)iM@>!V2(&CyAi7HUBA$Dsp$$v5aC>SBI| ziQCl55EoeZG&YIidhM@VYpa=IiMb7iWs(coWYn^4M^L0*IztVi*KSEpe-xsLwm|1# zO0e3E!f~0uy>t^`HfA%*9OpKpnbb$jM^yB(dnuNpPso%1Q3;#A3g*w?H(R=*f&xp8 z@fczl{zM+Rd6Pmed-pCr*6M)7K;6w4R>7A{+>Rte(ZO@63nD-%r)0qFK$Pe*;d_#S%yDVun@WOi6!iN_*db*45q( zGnLjKAc&?^VUKCF$7rD%Bxaa%k8MaR*KMcXwTXQZU3R@uI=$}pY~|%(kft)+qaxKf z;^gLKRK{U;nENL2#0eD-Dr5E-bBz%+gfOn-8rZpmprspSqRY`B$R{r)d&FD2?D<-z z=ugf_#l1HZh28t(o!j2!HQ7N$Zw5%?GKI(@QV1$0#mUX zF$?Y&6XGtUxLjFrS^y#uUj-R8iuI@sf-`Gpn#In8Dy#efDDUMsDAe-6;+b#>erW-O z`-Bi-2xcZJ^?hR1G~}M?2xW;YtIQVfbyzRabZ`Z_#<0l6TbvnSe$EhMlXr3I=^*nLi)iYPM`^4ogU+>d9S;`Jgr$T_$;)F}lN2ssa3&IClcz%?+!W*UUW_HFOolE+x!>V> z^mAud>4BFaN6JQfU6;33&Plfw=Jv+V*q5eOF|wtDkKk%b@QwFq=50 z_4e7<*J(L#3^ZHAjWMq5?yuTg4X>nX6<&Si#&FXWNHoNOOXuLpe@aTCbc=PUSVy#+ z!b~d?-~akG4(l^CEHQ+^g@Hy_&;0u1#D730PV8?D>DBk7K76CxJ%t!Op|;^f6*GuHZt-< zbUtDlgdlwuOu{h;Ye942DRcOHc1!VQ>pjP}-xsHTJm=G9v2=BG4GKV^D#%7L(3ir3 z9XjT8Orb?k|L%umYgUF)bfN>_ZI>F+A+bu^K$}*ifh!7nrNm;_i*H_smg6B@_wJyM zVZ4QtNc{UR{ib=J+Bin_Ex5J#d^xe%KsHYMa_%OfVHWn0GG_YJWu4fu6!nYtAfN5^ zk?)GB`MsPQ+hYj_-*r+r6@@74=t^c6w`S0H(xTvf@oHG-zq7OI36e@aqt!pG%S^Xo zbX%H--nhnJ-(Q)UX>D#ht6gD#_aB7VK8UTh{u}F18h*E2FwdW!nh)(FdaV_``E%wQ z?+;QMxrfD0h=DY%`SZS&{U;G&%s7ccj%dNTi}MKa7d>a|SR@y~=uF$dOUft|-CM`}jX zO^-LKr>7g03pNfKd)~Wxg`xhP{K=>NRvHr~+EREZ8gY0e=@;(j=NE3gsr%0&&6CuuX>;NxD`f~vqq?h& z?22g+(L}O{OA4mEXW`6(7?IV~L|si-ZBZs7{O{dwLumHknP~W|s$RnDb_|%wRPi?T zJw4f*`;$f-lIbuGfM!i)dEvXv<$?idH@p49s*>5keCLB^M)Ni~^tbK_!IByWEV$(3QIZR?`i$X<4Oil-Srn$$HP?BX4}urG&_qbq$BNSg9hS7#hcI!o%G^vKeK&rNfwepXigF=w#61QH(55R8I>in#05VOK924K zi6=HG7Zl`o{a#Dj3_M7=741M(TwG}_fn{83@2_Fr%1j? zM-Elkl~f|8N;%>u$<%yj6D{ zRY?YzkSnG61u9OX2?rfA_BsBru~5-rdDZkre=2=R&6vQk;lxCCGERkobC4dm!@#yY zBOs(*QLU?Z3v)^brco!kg$!ZRmE*i&i zJ%vkAUml&FickAhn1%<{EY(J()5^A8L#vouFD1o&wM=l~GB>H9PvN)pybf5->r8R4 z%Hl0_#5<9w$BTbq^Wq=*n@z-cq>Wr1qVDtRqH?j`gR+z!#f;L@Yif(|L2Y3|E~UsE zeOcG^r-GBLXfxrFjILumJ0*lbyDB8&i}L9vZf-y3)PvMF9sMNrQqa8*)K6CvL?0B@ zSZ2jy+;Gz((nTYanucAYwC3UedQ+esGM*r?a`TN_bUb?R*{M(u^&LNkzHX?jYVfVA z!1ecmK<4)4=B+|B3~T|Dpc+zbjpcP|Rt}VInwg%c(YAr9eMhJ=Fcz0yp_IW;E{iF@ zXQ2T2U^nON`Mo#z{QS4|!xWGDYQ-1~owCyq)q_!8uo*qlBi3!7_cosTJGihc2+j_x zgVCsoPpeG$M4Z-MQbKBD>gSIm-q}o^Y|A`RyDZqdBwHAVpJZGTq%6NKcV>)@j8?(S z1kl{+8U5eVh@Vc=Z$#6hGu)gCa$KjM$4e9>#!m*>=&2qzubeG+?uE%9RoyY6ZPn~# z5598C;0IJ3Df+6j5T_9h`Z0N)`a0^XraoR_eweUV^^R{0`AA<)UF0QXfnkTU&ub4x zrYjB4eh=Ng-aIJ@`8KKdO0wVkWXI?7WLj}0sqoQ@W2DRDl3h}1rM5}KXL`UjtQ$g{ z|G{5ksCdu|79P5HG`d>Pp6bZE6F@VPFEgIG|r^H^EKXtI9QtBBU^kHSkCM!(y&!=Nv6B zIlH{U;%q_gI68Jf0fL4B#BnHFJYy4U0gp@2v2Jr4Nu1P5O>~RdWkSYeZ;?yMT%6;+ zGN#cHu$|H$o z>5IYhVLbREffNncU}>KmqS zHJkZl(RRe`2oNz$o1eaptkCMOZO@L&!gGk=$4&y9LoU0I0D6YIy?vvJzNo~Bla{}r zvu_U~a>D`@O*C{Ul$ZxLHS<3ZxIPLFJI-~rudmvyv>8zgT2Q?*rMexcZ5)*S`U|mDZz5934G7BB6%rt*osHjG#=fwY!nWM|=iE&)h1wq05m7QP%sqrb5H?AV_%#Vyj%V!`XH!pu2T}($@ zqTq|IpTUhJQf{+Z@BE4gdY&og|J}Up+g!w-P>~(i8HO`tv}O zjBQabgMSI_mk`-a$|`Vt9?bZ89wT1r##nB)0y$N9y zB(PvFZAtNGGs1PQs8oKlYwu+FN7Dh{(&#O-LA!&@;yf5tJES}9O}|VqjB8!rpf-x1 zMkRKnD^yu7Pbd0KPaCfJM)Ab-g|?QnKW#<3jWup+-2Vzud+nr< z1%k21WD2?d;Y({k;|4mClH23xCuReQxwHPOcS?wgUOG~Cu+Do44r~!Q4l#>pF_v^? zM8K1in;?%W@7_NC92sS0PFSQKEGz?j-BlnfvXbB0Y#7>1v0ey@JufqY>RS7+(MD<` z_&Gd?ns)K=Q(~(48g9H$o^N?1Kc-=~AXcaHc2>I5)Uhhy{{ra|7Ve2ma6&{h2$@}# zdM=qk$mB4OAo6fzA}QfP;pxOtD>YkkWUVBL6b=a2-n{h=ra<=0M`w>qQ7Y_iJ&d$? zK!NbiBkw?U6q78|Wac9tu84-a`x4%|b)tCV@yXk7KV?DhorOHo6Iu#}tW4=)1pDxV zpSt<7cy|yNi%de%(I?F;EG#+MZ59e-a4DtMnB?(Wk58YREVfv5(iG)p<{qpgHMAGi z=pg{yQiR8g7xPqfDs1UaAzCvbAZu$?h$Jh4sGAijKxSC8{`qopeQi9pP99%Bx7h0e z4*T@NL8rL{ihWUyuu3umHmrQ~ETQ+@Y4@BGz&_^Wrm^VZkr zA73udC?jq8=!2hr_Q?mmefjox-ucOgA3i(3nER3h6{YZ%GAJ#=S(&u33Pgx|b^=&P zMa>P69yDhUaw(kY?39KKIeGG}@BQ$Por;v=Oc!&XtrNk+dTVW-2~a61LLz2173FlB zFGR@0BFr=AW$A7C`peJGzxoW(-F#lJ+cJ+FO;R5fXhFHOxwj=+JbwJdfG^L#BFS(o zqRNvyMtRe2RHn!8zxTa#nnc}OZwqfyp@JgU>z>I-MY5J+-FlyEk?<%gLJ%fVWzkWQ ziGbdFW-ur{m{&wP!W9@I$wPos)kJ1^8G)sq=APhims&i-+(s(;h}js0{@h%I%ZM5s zWwzZ?xx!Gc#pjuaM9%*HhW#B`;B#L+5c~U188a3-hREW7-H@ERIby8hF`})&QJ_4mA z!)>afMZmFME`-HeDvxB}XstUS$|sZbTv)+X-gx7UT6w)Jy^qrEqnB_eChJXwR0+rk z^5%)?X;hSx!=ra2=IExGLZP+vZsB1qB$S}ux-#{C`K7(_oUtCrdENefYrM^KbDO;$ zSc8kO%4Ft_kf|hrXe7T{L=aOZCsPqE;FuRiD4~!P$jP*N^Q|XO-#GcJfB)~k``usr z<)@#1`T3VHSMbk%@{>kfF$sGHAnBuk zA%U2QnNn4S$lQcblrqxOiAHH0M31S|NU3r{OhYEEQ;E!Qe|+{RJpdM&GK5)mv^*KI zCV~TGS(UvTk~}gAp1$;@s1~kn(JhkLBUOquPf(->k<`Khrd-b#5v`O82#IEZ2_Rlg zkIjjNA%Y-IDO?eRG*xA)8KY)&ijY|ca%oFsM!+qU#ob2=CQE5yj@%ScbQ6|{&{~_D zmI`7THL!`95dmV7BBh)#YeoW~%u!&Bg?e|ADWO9lP_D`anNuwwYGxh*VMCDcXdEC! zBxLE=6zEk$X~70;;OS>7gtcaA!}^QdwnGNq3m4xb^WG zpFu2BDJvyW=GJETrbTYmLO}?!*1a1M(prR%`1@K$XPRObAev65@lvwBSSGFBY_*y^ z5I)*fWH?G$Md0-0%sh|~5fKKWEtei$xtyP$zyJRGwNB;$OBrtmNJ^AaMqmyh!rL!@ z@kzL?d&h}7xeAk0(Ml{N#gnM0yCqYq@~T=GGZt@a%jxuu)!AcsMC-yVr9}54>b(~c z86U|rg%u)eU#K!_C1Lj<0>YJ(!i%VZ9Zack5@PG^L`O4v`@-J1zBbKl(jp zdiwOqM<4v`7a#w8Dyl_wn$DiS`Ss<}F4vDApXyXT`sf$Fv|1!79G*iXP83x)4@8e< z>8jNuwbYC-cQZekR;yZsCgI5UpQSi)F9j@QjigML>1o74)>l)ZjErz3a}iPkvm?A)cv%%;_2zC}lt36+ z^CFXb5-8k6Rm&-syTJ6=E^(M5D_$1+sUqrACCZ5I{+uk-}O9 z8R5aGf*OV);KuV-k8TD~vScz;T5mel2#iu;0D1M zMHX+FSyW4qfWzIR(*27fQBLM-_hgu7hB13dw z;=&y6Zc7~jku0UGkUZiwBP`N98Yo+zhZYe5R<-PzEwhitnBjg_OO?@Nm!dRIgs8NwZDK`C|Vu0_E@rCMYnol;i?%F}9k)C>HbcdO@rmu*`+&(+J>+IC}%?QV1SF8jnPR+`G}%&fD2FEo=vW{BloQ2l21j+J4Rt+PWIw zVC#_GeOth_Id#qM*7aW5#nzQxvwLhjX57~K1|N2>{m6WO;ngAE4z4Y`=a=yLF5_`6 zhsFob``38;nBIHu*YC^M4(=_7?)ys~2RY{P{p4ZsAK=(pXLrx96aOW+-cbwN>(r6I z^~2y_Uw@B1R}X@J?eF_5wDo%Ij^pSvd@r8(vOe6ypF5%7Ka&4}jtAqse2im`-DYdN z!vS|WEUvN3gB)-lA9ujdL&&#t%ziodF7t17nrwk%md$c_c$yL^6}SW>yCD5f4t?x zP5kjnPrI^yHNJt*?(@Xk{COF!x8u+8b>>cf9y%YmZ}%L(1kc^Q4?E*4?e$Lk%<(;N zb03fM!H31a2j+e7UzKBC$N#&n!|tpdS1ZEbH68Y9yg|CYuUvZ`9?sT*=l@=s?45nM z-R=$7dt@%$*PlCbx_y5hVE(@1wcPi5@B4ST(q3=iurJP6=zIIdX1%|&4vX9HZ`NV) zayseNN_RIM7O#eXUmf;#{O$AW)?sm&!~RNi*u%E=>>lKmSGIs7yz*)cym+c#&eqPJ zv2FKWn(S>{@+P}C@W(?w9Obab{dp*T_TZYctJMO#e%@t#$7{JhrdzM~5J%oVWBZ5eAK}Y4JY%nD<@vw+ zCbZF`b|2b@+wC6xKVOT!d4oSM>F1rS-e0%9?|B?I|IWCs7aZD8#{aWD-r<V9N*gyV!k5& zj!wFH8vg&*VXs-(;g!R}tLd=&_`vf$?+X7IFL-5JyU)+QHu?~Dcjm$d>80)7*@s)_ z;L*9WKkr_@Z!h8J1FR>ndrX79?(xQM5BvDrymHUhu9f@Px?LOHv2~og?Q`ed z>$=X%ZncYJc5ma4$L!uT$8Xl7cjn^_{#^I%290vxw>$ZHhc)ULH^2G1j*SnlMfVu* zv)7m06Aqq_+_i_oe|gN?Y<;6T?CZw=W^~wnUh|6hd$w+P#vanvK9Bo<(C$O<=v#a^ zigLGi=T|uH=;urN{|z6z+Up^Xc8#wcqrVI&bmH7yA$nam?p- zk8-_(_}jDMX3ck>FCXMhceJ&)wjR|+_pj>)ySH)JUAuU}6Sv1WuFv8IANKq?X!n{A z$L9VHx4l`P-5%f9&n<3y?L7QE#BJ|=E%zVe4!>jj{=67(vDcly!Tr|h{d@W#m^a{W zS$P=z>$VOmq^}GA!FAGaQit7Jn;t}iyTR7;Umr~GyTR7s>-xs*9(&%7y_G*SH@vGq zM-lI%)xL)Nd2IY3=Z)7l{JzazfukJu>b$Qt9Ne!CU>?^=?})#v?H*KkA5MoosF1!o zJ{`n=S)FtjAGkOEbJnnJ>#&9EwqC3|*yEV5sKahCk%P8?Ydr2X+S*!M@1n!*+TG`m zxAEBnn(XlX>Z);o!ye$X$Itt^=Uq79VSf(#_WZo>+bvq{asLnKwl`nPF`oNUdhW3^ zZvB13Uh{xXy1yRZ={UYG?cig}k9*@kAJg-d?%LeAFXj#S`#S9F#(xbu?A7?{DZjGy zV0>ps^L?$hwx6F{wb6&Lwf|i0+I=7{cDvo{`yB4>!=3%v_u-EI9Gw^YejfDs?*4y+ zJolBx8}@ogC*5C{_Q&K75>BNu-EWkgATjBj_+u) z2d&&>;p%)yhu!CT2W{ct`Bq!k?PA;36{mZ3TiYwhaqhfpcb`Y!$|Y~GdyEs^S(82B z!yWy35KZ$S*S