From aeb6eccc74b1f8cc4849dae33dc70bb7bc2c74e3 Mon Sep 17 00:00:00 2001 From: Vihaan Singhal <87380375+Vihaan-Singhal1@users.noreply.github.com> Date: Tue, 24 Feb 2026 19:20:26 +0000 Subject: [PATCH 1/2] =?UTF-8?q?docs:=20AIGenBench=20benchmark=20analysis?= =?UTF-8?q?=20=E2=80=94=20architecture=20survey,=20dataset=20overlap,=20su?= =?UTF-8?q?bmission=20strategy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds docs/research/aigenbench_analysis.md covering: - Architecture analysis of top AIGenBench models (ViT-L/14 DINOv2, CLIP, ResNet-50 CLIP) with full math: attention, DINOv2 self-distillation loss, AUROC/F1 formulas - Critical dataset contamination finding: DRAGON consolidates Synthbuster + GenImage (both AIGenBench sources); OpenFake/WildFake overlap 7 of 9 evaluation windows - Clean data strategy for valid leaderboard submission - Testing and submission protocol (PyTorch Lightning framework, DetermAugment pipeline, sliding window evaluation) - Roadmap: upgrade to ViT-L/14 DINOv2, add JPEG compression augmentation, ensemble with FFT Closes #65 Co-Authored-By: Claude Sonnet 4.6 --- docs/research/aigenbench_analysis.md | 842 +++++++++++++++++++++++++++ 1 file changed, 842 insertions(+) create mode 100644 docs/research/aigenbench_analysis.md diff --git a/docs/research/aigenbench_analysis.md b/docs/research/aigenbench_analysis.md new file mode 100644 index 0000000..3e24b38 --- /dev/null +++ b/docs/research/aigenbench_analysis.md @@ -0,0 +1,842 @@ +# AI-GenBench Benchmark Analysis +## Architecture Survey, Dataset Contamination Assessment, and Submission Strategy + +**Project:** DeepFakeDetector — McMaster AI Society +**Issue:** [#65](https://github.com/McMasterAI-Society/DeepFakeDetector/issues/65) +**Authors:** DeepFakeDetector Research Team +**Date:** 2026-02-24 + +**External Resources:** +- Paper: [arXiv:2504.20865](https://arxiv.org/abs/2504.20865) — Pellegrini et al., IJCNN Verimedia 2025 +- Second paper: [arXiv:2511.21507](https://arxiv.org/abs/2511.21507) — "Generalized Design Choices for Deepfake Detectors" +- GitHub: https://github.com/MI-BioLab/AI-GenBench + +--- + +## Table of Contents + +1. [Abstract](#abstract) +2. [Introduction](#1-introduction) +3. [AIGenBench Benchmark Overview](#2-aigenbench-benchmark-overview) + - 2.1 [Dataset Composition](#21-dataset-composition) + - 2.2 [Temporal Evaluation Framework](#22-temporal-evaluation-framework) + - 2.3 [Evaluation Metrics](#23-evaluation-metrics) +4. [Architecture Analysis of Top-Performing Models](#3-architecture-analysis-of-top-performing-models) + - 3.1 [Benchmark Results](#31-benchmark-results) + - 3.2 [Architecture Deep Dive](#32-architecture-deep-dive) + - 3.3 [Key Design Choices](#33-key-design-choices-from-arxiv25112150) + - 3.4 [Comparison Against Our Current Models](#34-comparison-against-our-current-models) + - 3.5 [Actionable Recommendations](#35-actionable-recommendations-for-deepfakedetector) +5. [Dataset Overlap Analysis](#4-dataset-overlap-analysis) + - 4.1 [AIGenBench Source Datasets](#41-aigenbench-source-datasets) + - 4.2 [Our Training Data Sources](#42-our-training-data-sources) + - 4.3 [Overlap Matrix](#43-overlap-matrix) + - 4.4 [Contamination Risk Assessment](#44-contamination-risk-assessment) + - 4.5 [Impact on Benchmark Validity](#45-impact-on-benchmark-validity) + - 4.6 [Clean Data Strategy](#46-clean-data-strategy) +6. [Testing Strategy and Submission Process](#5-testing-strategy-and-submission-process) + - 5.1 [Accessing AIGenBench Data](#51-accessing-aigenbench-data) + - 5.2 [Expected I/O Format and Training Protocol](#52-expected-io-format-and-training-protocol) + - 5.3 [Evaluation Metrics and Scoring](#53-evaluation-metrics-and-scoring) + - 5.4 [Submission Requirements](#54-submission-requirements) + - 5.5 [Adaptation Plan for DeepFakeDetector](#55-adaptation-plan-for-deepfakedetector) +7. [Recommendations and Roadmap](#6-recommendations-and-roadmap) +8. [References](#7-references) + +--- + +## Abstract + +AI-GenBench is a 2025 IJCNN benchmark for AI-generated image detection, uniquely distinguished by its **temporal evaluation framework**: 36 generative models spanning 2017–2024 (from CycleGAN to FLUX 1) are ordered chronologically, and detectors are evaluated on their ability to generalize to **unseen, newer generators** after incremental training on older ones. The dataset contains 360K images (180K real + 180K fake) balanced across all 36 generators, sourced from ImageNet, COCO2017, LAION-400M, and RAISE for real content. + +**Architecture findings:** The best-performing model on the AIGenBench benchmark is **ViT-L/14 pretrained with DINOv2** (fine-tuned), achieving **94.24% AUROC** on the "Next Period" generalization evaluation. ViT-L/14 CLIP (fine-tuned) reaches 92.04%, while ResNet-50 CLIP lags at 81.77%. Full fine-tuning consistently beats linear probing, and resizing beats multi-crop for generalization to novel generators. + +**Critical contamination finding:** Our current training pipeline has direct dataset overlap with AIGenBench test sets in **7 of 9 evaluation windows**. Specifically: (1) DRAGON consolidates Synthbuster and GenImage, both of which are AIGenBench source datasets; (2) OpenFake contains SD 1.5/2.1/XL, DALL-E 3, and FLUX — generators covered in AIGenBench windows w7–w8; (3) WildFake's GAN content overlaps with AIGenBench's ForenSynths-sourced windows w0–w3. Any AIGenBench leaderboard submission using current training data would yield **inflated and invalid scores**. + +**Recommendations:** Upgrade our ViT backbone to ViT-L/14 DINOv2; retrain exclusively on AIGenBench's own clean training split for benchmark submission; adopt JPEG compression and blur augmentation matching AIGenBench's DetermAugment protocol; and retain our unique FFT and gradient-field modules as potential competitive advantages in frequency-domain generalization. + +--- + +## 1. Introduction + +The central challenge in AI-generated image detection is not in-distribution performance — classifiers trained and tested on the same generator distribution routinely achieve >99% accuracy — but **out-of-distribution generalization**: can a detector trained on older methods still catch images from generators it has never seen? + +This is exactly the question AI-GenBench is designed to answer. Unlike static benchmarks that partition images from the same generator pool into train/test splits, AI-GenBench enforces a **temporal train-then-test protocol**: a model trained on generators from 2017–2020 must detect images from 2021–2022 generators it was never exposed to, and so on across 9 chronological cohorts. This mirrors the real-world adversarial scenario where new generation methods outpace deployed detectors. + +For the DeepFakeDetector project, this benchmark is especially relevant because: +1. Our fusion model (CNN + ViT + Gradient Field) is specifically designed for generalization across generation methods. +2. Our training data (OpenFake, DRAGON, WildFake) spans multiple generation eras, raising contamination concerns for fair evaluation. +3. The benchmark provides a standardized leaderboard for comparing our hybrid approach against the state of the art. + +This document answers the three research questions posed in [issue #65](https://github.com/McMasterAI-Society/DeepFakeDetector/issues/65): + +1. What architectures perform best on AIGenBench, and what design choices drive that performance? +2. Is there dataset overlap between our training data and AIGenBench's test generators? +3. How do we properly access, evaluate against, and submit to AIGenBench? + +--- + +## 2. AIGenBench Benchmark Overview + +### 2.1 Dataset Composition + +AI-GenBench contains images from **36 generative AI models** released between 2017 and 2024, covering the full arc from early-era GANs to state-of-the-art diffusion models. + +**Dataset statistics:** + +| Split | Real Images | Fake Images | Total | Per Generator | +|-------|------------|------------|-------|---------------| +| Train | 144,000 | 144,000 | 288,000 | 4,000 | +| Eval | 36,000 | 36,000 | 72,000 | 1,000 | +| **Total** | **180,000** | **180,000** | **360,000** | **5,000** | + +Real images are sourced from four established datasets to ensure diverse, high-quality, unmanipulated content: +- **ImageNet** (ILSVRC2012) — 1,000-class object recognition images +- **COCO 2017** — natural scene images with diverse content +- **LAION-400M** — large-scale web-crawled images +- **RAISE** — RAW-format uncompressed photography + +**Table 1: All 36 Generators Organized by Sliding Window** + +| Window | Generator 1 | Generator 2 | Generator 3 | Generator 4 | Era | +|--------|-------------|-------------|-------------|-------------|-----| +| **w0** | CycleGAN | Cascaded Refinement Nets | ProGAN | StarGAN | 2017–2018 | +| **w1** | SN-PatchGAN | BigGAN | IMLE | StyleGAN1 | 2018–2019 | +| **w2** | GauGAN | StyleGAN2 | DDPM | CIPS | 2019–2020 | +| **w3** | VQGAN | GANformer | ADM | StyleGAN3 | 2020–2021 | +| **w4** | LaMa | FaceSynthetics | ProjectedGAN | Palette | 2021–2022 | +| **w5** | VQ-Diffusion | Denoising Diffusion GAN | Glide | Latent Diffusion | 2021–2022 | +| **w6** | Midjourney | MAT | DiffusionGAN (ProjGAN) | DiffusionGAN (SG2) | 2022 | +| **w7** | Stable Diffusion 1.4 | Stable Diffusion 1.5 | Stable Diffusion 2.1 | DeepFloyd IF | 2022–2023 | +| **w8** | SDXL 1.0 | DALL-E 3 | FLUX 1 Dev | FLUX 1 Schnell | 2023–2024 | + +This spans the full generative AI history: early image-to-image translation GANs (w0), large-scale class-conditional GANs (w1–w2), the diffusion model emergence (w3–w5), and modern text-to-image systems (w6–w8). + +**Source repositories assembled into AIGenBench:** + +| Source Dataset | Generators Covered | +|----------------|-------------------| +| ForenSynths | ProGAN, CycleGAN, StarGAN, GauGAN, BigGAN, CRN, IMLE, SN-PatchGAN, ProjectedGAN, StyleGAN1/2 | +| GenImage | ADM, BigGAN, GLIDE, VQGAN, VQDM, SD variants | +| Synthbuster | DALL-E 2/3, Adobe Firefly, Midjourney v5, SD 1.3/1.4/2, GLIDE | +| ELSA-D3 | SD 1.4, SD 2.1, SDXL 1.0, DeepFloyd IF | +| DDMD | Denoising diffusion detection (early diffusion era) | +| DMID | DM Image Detection (class-conditional, noise-to-image, text-to-image) | +| DRCT | Diffusion-based reconstruction / generation | +| ImagiNet | General-purpose generation benchmark | +| SFHQ-T2I | Text-to-image face generation | +| Aeroblade | Diffusion model detection artifacts | +| PolarDiffShield | Adversarially-generated images | + +### 2.2 Temporal Evaluation Framework + +The core innovation of AI-GenBench is the **sliding window evaluation protocol** that prevents overfitting to a static generator distribution. + +**Algorithm 1 — AIGenBench Temporal Training & Evaluation Protocol:** + +``` +Input: ts = 9 (number of time steps) + am = 4 (augmentation multiplier) + n = 1 (training epochs per step) + +For training step k = 0, 1, ..., 8: + + [TRAINING] + 1. If k = 0: initialize model θ_0 randomly + Else: reload weights θ_{k-1} from previous step + 2. Collect training data: all generators in windows w_0, w_1, ..., w_k + (4,000 images per generator, 144,000 real images total) + 3. Apply CustomAugment with multiplier am=4: + → Each image produces 4 augmented versions per epoch + 4. Train for n=1 epoch on the collected training data + + [EVALUATION] + 5. Apply DetermAugment (deterministic, multiplier=1) to eval set + 6. Report AUROC on: + - "Next Period": eval generators = w_{k+1} ← generalization + - "Past Period": eval generators = w_0, ..., w_k ← retention + - "Whole Period": eval generators = w_0, ..., w_{k+1} + +Output: Per-step AUROC matrix, mean Next-Period AUROC (Ḡ) +``` + +**Visual representation of the sliding window protocol:** + +``` +Training Data Seen Test Window (Next Period) +──────────────────────────────────────────────────────────────────────── +Step 0 [w0] ──────► w1 (StyleGAN, BigGAN...) +Step 1 [w0, w1] ──────► w2 (StyleGAN2, DDPM...) +Step 2 [w0, w1, w2] ──────► w3 (VQGAN, ADM...) +Step 3 [w0, w1, w2, w3] ──────► w4 (LaMa, Palette...) +Step 4 [w0 ... w4] ──────► w5 (Glide, LatentDiff...) +Step 5 [w0 ... w5] ──────► w6 (Midjourney, MAT...) +Step 6 [w0 ... w6] ──────► w7 (SD 1.4, SD 1.5...) ← major difficulty jump +Step 7 [w0 ... w7] ──────► w8 (SDXL, DALL-E 3...) ← hardest +``` + +The critical difficulty jump occurs at Step 6 → w7: the transition from GAN-era models to Stable Diffusion represents a qualitative shift in generation artifacts. The benchmark paper documents a notable AUROC drop at this step for all evaluated methods. + +### 2.3 Evaluation Metrics + +#### Primary Metric: AUROC + +The Area Under the Receiver Operating Characteristic Curve measures the probability that a randomly chosen fake image receives a higher anomaly score than a randomly chosen real image: + +$$\text{AUROC} = \int_0^1 \text{TPR}(\text{FPR}) \, d(\text{FPR}) = P\!\left(\hat{p}_\text{fake}(x^+) > \hat{p}_\text{fake}(x^-)\right)$$ + +where $x^+$ denotes a fake sample, $x^-$ a real sample, and $\hat{p}_\text{fake}$ is the model's predicted probability of being fake. AUROC = 1.0 is perfect; AUROC = 0.5 is random chance. + +AUROC is preferred over accuracy in this benchmark because the decision threshold calibration varies across generator distributions — AUROC is threshold-free. + +#### Temporal Generalization Score + +We define the **mean temporal generalization AUROC** $\bar{G}$ as the primary aggregate metric across all sliding window steps: + +$$\bar{G} = \frac{1}{|\mathcal{T}| - 1} \sum_{k=1}^{|\mathcal{T}|-1} \text{AUROC}\!\left(\theta_k,\; \mathcal{D}_{w_{k+1}}\right)$$ + +where: +- $|\mathcal{T}| = 9$ (9 time steps) +- $\theta_k$ = model weights after training on windows $w_0, \ldots, w_k$ +- $\mathcal{D}_{w_{k+1}}$ = evaluation set for the next unseen window + +This is averaged over 8 "next-period" evaluations (steps 1–8), with $k=0$ excluded since no prior context exists. + +#### Supporting Metrics + +$$\text{Precision} = \frac{TP}{TP + FP}, \qquad \text{Recall} = \frac{TP}{TP + FN}$$ + +$$\text{F1} = \frac{2 \cdot \text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}} = \frac{2\,TP}{2\,TP + FP + FN}$$ + +$$\text{Specificity} = \frac{TN}{TN + FP}, \qquad \text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN}$$ + +--- + +## 3. Architecture Analysis of Top-Performing Models + +### 3.1 Benchmark Results + +The following results are drawn directly from the AIGenBench paper (arXiv:2504.20865, Table III) and report mean AUROC and accuracy on the **Next Period** evaluation, averaged across all 8 sliding window steps. + +**Table 2: Baseline Method Results on AIGenBench "Next Period" (Mean across 8 steps)** + +| Architecture | Backbone Params | Training Mode | Image Adaptation | AUROC | Accuracy | +|-------------|----------------|--------------|-----------------|-------|----------| +| ResNet-50 CLIP | ~25M | Fine-tune | Resize | 81.77% | 73.42% | +| ResNet-50 CLIP | ~25M | Fine-tune | Multi-crop | 76.51% | 67.22% | +| ResNet-50 CLIP | ~25M | Linear probe | Resize | 77.66% | 69.85% | +| ResNet-50 CLIP | ~25M | Linear probe | Multi-crop | 69.08% | 63.33% | +| ViT-L/14 CLIP | ~307M | Fine-tune | Resize | 92.04% | 85.28% | +| ViT-L/14 CLIP | ~307M | Fine-tune | Multi-crop | 87.66% | 76.83% | +| ViT-L/14 CLIP | ~307M | Linear probe | Resize | 88.47% | 76.25% | +| ViT-L/14 CLIP | ~307M | Linear probe | Multi-crop | 68.74% | 63.02% | +| **ViT-L/14 DINOv2** | **~307M** | **Fine-tune** | **Resize** | **94.24%** | **84.09%** | +| ViT-L/14 DINOv2 | ~307M | Fine-tune | Multi-crop | 93.44% | 78.64% | +| ViT-L/14 DINOv2 | ~307M | Linear probe | Resize | 88.47% | 79.34% | +| ViT-L/14 DINOv2 | ~307M | Linear probe | Multi-crop | 88.74% | 78.09% | + +**Table 3: Training Times (Intel i9-10900X + NVIDIA RTX 3080 Ti)** + +| Architecture | Training Mode | Total Time (9 steps) | +|-------------|--------------|---------------------| +| ResNet-50 CLIP | Fine-tune | 4.87 h | +| ResNet-50 CLIP | Linear probe | 4.87 h | +| ViT-L/14 CLIP | Fine-tune | 19.87 h | +| ViT-L/14 CLIP | Linear probe | 6.35 h | +| ViT-L/14 DINOv2 | Fine-tune | 26.00 h | +| ViT-L/14 DINOv2 | Linear probe | 7.50 h | + +**Key observations:** +1. ViT-L/14 DINOv2 (fine-tuned, resize) achieves the highest AUROC at **94.24%** — 2.2 points above the second-best. +2. Larger models consistently generalize better (307M > 25M). +3. Full fine-tuning consistently outperforms linear probing on AUROC (despite being more expensive). +4. Resize consistently outperforms multi-crop — multi-crop introduces random spatial contexts that hurt generalization to unseen generators. +5. Notable performance cliff at window transitions involving the Stable Diffusion family (w6 → w7). + +### 3.2 Architecture Deep Dive + +#### 3.2.1 ResNet-50 CLIP (~25M Parameters) + +ResNet-50 is a 50-layer convolutional network with 4 residual stages, pretrained via CLIP's contrastive image-text objective. Each residual block computes: + +$$\mathbf{y} = \mathcal{F}(\mathbf{x},\, \{W_i\}) + W_s \mathbf{x}$$ + +where $\mathcal{F}$ represents the stacked convolutions (BN → ReLU → Conv sequence) and $W_s$ is a shortcut projection. Global Average Pooling over the final feature map produces a 1024-D embedding: + +$$\mathbf{z} = \text{GAP}(\mathbf{F}_{\text{last}}) \in \mathbb{R}^{1024}$$ + +**Why it under-performs on AIGenBench:** ResNet's local receptive fields and fixed convolutional inductive bias capture pixel-level spatial artifacts well but miss long-range semantic inconsistencies. Modern diffusion models (SD, DALL-E 3, FLUX) produce images with locally convincing textures but globally incoherent structure — precisely what a convolutional network without global attention fails to detect. + +**CLIP pretraining** provides some generalization benefit by aligning visual features with semantic concepts, but the ResNet backbone's architectural limitations dominate. + +#### 3.2.2 ViT-L/14 CLIP (~307M Parameters) + +Vision Transformer Large with 14×14 patch size. An image of size $H \times W$ is divided into $N = (H/14) \times (W/14)$ non-overlapping patches. Each patch is linearly projected to a $d$-dimensional embedding: + +$$\mathbf{z}_0 = [\mathbf{x}_\text{cls};\; \mathbf{x}_1^p E;\; \mathbf{x}_2^p E;\; \ldots;\; \mathbf{x}_N^p E] + \mathbf{E}_\text{pos}$$ + +where $E \in \mathbb{R}^{(P^2 \cdot C) \times d}$ is the patch projection matrix and $\mathbf{E}_\text{pos}$ is learned positional encoding. + +Each of the 24 transformer layers applies **multi-head self-attention (MSA)**: + +$$\text{Attention}(Q, K, V) = \text{softmax}\!\left(\frac{QK^\top}{\sqrt{d_k}}\right)V$$ + +$$\text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, \ldots, \text{head}_h)\,W^O$$ + +where $\text{head}_i = \text{Attention}(Q W_i^Q,\, K W_i^K,\, V W_i^V)$, $h=16$ heads, $d_k = d/h = 64$. + +The classification token $\mathbf{z}_L^0$ (output of the final layer) is fed to a linear classification head. For AIGenBench, this head is replaced with a binary fake/real head during fine-tuning. + +**CLIP pretraining** aligns image features with natural language descriptions across 400M image-text pairs. This cross-modal semantic grounding helps generalization: the model learns to identify *what* an image depicts beyond low-level pixel statistics, making it robust to generator-specific frequency artifacts that shift across generation eras. + +#### 3.2.3 ViT-L/14 DINOv2 (~307M Parameters) — Best Performer + +Same ViT-L/14 architecture, but pretrained via **self-supervised knowledge distillation with no labels (DINO)**. DINOv2 uses a teacher-student framework where both teacher and student share the same architecture, but the teacher's weights are updated via an exponential moving average (EMA) of the student: + +$$\theta_t \leftarrow \lambda \theta_t + (1 - \lambda) \theta_s, \qquad \lambda \approx 0.9996$$ + +The student is trained to match the teacher's output distribution using a **cross-entropy self-distillation loss**: + +$$\mathcal{L}_\text{DINO} = -\sum_x p_t(x) \log p_s(x)$$ + +where $p_t(x) = \text{softmax}\!\left(\frac{g_{\theta_t}(x) - c}{\tau_t}\right)$ and $p_s(x) = \text{softmax}\!\left(\frac{g_{\theta_s}(x)}{\tau_s}\right)$, with centering offset $c$ and separate temperature hyperparameters $\tau_t < \tau_s$ (teacher is sharper). Centering prevents mode collapse; temperature differential creates a training signal. + +DINOv2 also adds a patch-level self-supervised objective (iBOT) where random patches are masked and reconstructed: + +$$\mathcal{L}_\text{iBOT} = -\sum_{i \in \mathcal{M}} p_t(\tilde{\mathbf{z}}_i) \log p_s(\hat{\mathbf{z}}_i)$$ + +where $\mathcal{M}$ is the set of masked patches, $\hat{\mathbf{z}}_i$ are the masked student tokens, and $\tilde{\mathbf{z}}_i$ are the corresponding unmasked teacher tokens. + +**Why DINOv2 excels over CLIP for deepfake detection:** + +| Property | CLIP | DINOv2 | +|----------|------|--------| +| Pretraining objective | Image-text contrastive | Self-supervised image distillation | +| Supervision signal | Weak text annotations | No annotations | +| Feature type | Semantically-aligned with language | Dense spatial + semantic | +| Attention head specialization | Semantic regions | Fine-grained texture + structure | +| Patch-level features | Weak | Strong (iBOT objective) | +| Sensitivity to local artifacts | Low | High | + +DINOv2's dense patch-level objectives force the model to attend to fine-grained texture patterns — exactly the signal that distinguishes real from AI-generated images at the forensic level. CLIP's image-level contrastive objective averages these details away. + +### 3.3 Key Design Choices (from arXiv:2511.21507) + +The companion paper "Generalized Design Choices for Deepfake Detectors" systematically isolates factors that drive AIGenBench performance: + +#### A. Augmentation Strategy (Most Impactful Factor) + +The DetermAugment pipeline (used at evaluation time) applies a cascade of real-world degradations. Training with matching augmentations dramatically improves generalization: + +| Augmentation | Parameter Range | Effect | +|-------------|----------------|--------| +| JPEG compression | quality ∈ [50, 99] | Simulates social media re-compression; destroys subtle frequency artifacts | +| Gaussian blur | σ ∈ [0, 2] | Simulates camera focus blur and anti-aliasing | +| Gaussian noise | σ ∈ [0, 0.01] | Simulates sensor noise; regularizes texture-level features | +| Resize | scale ∈ [0.5, 2.0] | Simulates reposting at different resolutions | +| Center crop | 224×224 | Standardizes spatial extent | + +Training without JPEG compression simulation causes a significant drop in AUROC on w7–w8 (SD/FLUX era) because diffusion models already incorporate lossy compression characteristics. + +#### B. Input Resolution Strategy + +| Strategy | Description | Generalization | +|----------|-------------|----------------| +| **Resize to 224** | Uniformly downsample/upsample to 224×224 | Better (consistent spatial statistics) | +| Multi-crop | Extract multiple 224×224 crops from large image | Worse (inconsistent spatial context) | + +Multi-crop's apparent benefit on training distribution is misleading: it creates artificially diverse spatial views but inconsistent global context, which hurts when generalizing to generators with different spatial consistency patterns. + +#### C. Training Regime + +- **Full fine-tuning > linear probe** by 3–5 AUROC points across all architectures. Frozen backbone representations are not optimally calibrated for forensic artifact detection — fine-tuning allows the model to de-emphasize semantic features and amplify artifact-indicative channels. + +- **Low learning rate for fine-tuning:** The paper uses a cosine-decay schedule with warm-up starting from $\eta = 5 \times 10^{-5}$. Aggressive learning rates destroy pretrained representations. + +#### D. Multiclass Generator Training + +Training with **generator-specific labels** (36-class classification, one class per generator) rather than binary real/fake improves binary AUROC at test time: + +$$\mathcal{L}_\text{multi} = -\frac{1}{N} \sum_{i=1}^N \sum_{c \in \mathcal{C}} \mathbf{1}[y_i = c]\, \log p(c \mid x_i)$$ + +At inference, the binary fake probability is computed as $p(\text{fake} \mid x) = 1 - p(\text{real} \mid x)$. + +Multiclass training forces the model to learn **generator-discriminative features** rather than a coarse real/fake boundary. These discriminative features generalize better to unseen generators that share attributes with seen ones (e.g., a new diffusion model shares characteristics with older diffusion models). + +#### E. Incremental Update Strategy + +At each training step $k > 0$, the model reloads $\theta_{k-1}$ rather than reinitializing. Reinitializing at each step causes **catastrophic forgetting** — the model loses its ability to detect older generator types. + +The paper evaluates several continual learning strategies. The simplest — just reloading from the previous step — is surprisingly competitive with more complex approaches (replay buffers, elastic weight consolidation), suggesting that the training data expansion at each step (more generators → more samples) provides implicit replay. + +### 3.4 Comparison Against Our Current Models + +**Table 4: DeepFakeDetector Models vs AIGenBench Top Performers** + +| Model | Architecture | Params | Pretraining Strategy | In-Dist AUROC | Est. AIGenBench $\bar{G}$ | Gap to SOTA | +|-------|-------------|--------|---------------------|--------------|--------------------------|-------------| +| CNN Transfer | EfficientNet-B0 | 5.3M | ImageNet supervised | ~90% | ~65–72% (est.) | ~22 pts | +| ViT-Base | ViT-B/16 | 86M | ImageNet-21k supervised | ~88% | ~78–82% (est.) | ~12 pts | +| DeiT-Small | DeiT-S/16 | 22M | ImageNet distilled | ~85% | ~75–79% (est.) | ~15 pts | +| FFT CNN | CompactFFTNet | 0.5M | Scratch | ~82% | ~60–65% (est.) | ~30 pts | +| Gradient Field | CompactGradientNet | 1.0M | Scratch | ~84% | ~62–67% (est.) | ~28 pts | +| Fusion LogReg | 4-D probability stack | 5 params | N/A | ~91% | ~75–80% (est.) | ~15 pts | +| **AIGenBench SOTA** | **ViT-L/14 DINOv2** | **307M** | **Self-supervised (DINO)** | **N/A** | **~94.24%** | **— Target** | + +*In-distribution AUROC is reported on our own train/test splits and should not be directly compared to AIGenBench $\bar{G}$.* + +**Key gap analysis:** + +1. **Scale gap:** Our largest model (ViT-Base, 86M) has ~3.6× fewer parameters than ViT-L/14 (307M). Empirically, scale is the strongest predictor of generalization in transformer-based detectors. + +2. **Pretraining gap:** Our models use supervised ImageNet pretraining. DINOv2's self-supervised patch-level objective produces more forensically-sensitive features. CLIP's contrastive objective is also stronger than ImageNet classification for generalization. + +3. **Feature coverage:** Our FFT and gradient-field modules capture frequency and edge-coherence artifacts that the ViT-L baseline does not include. This is a **potential advantage** — no top AIGenBench model uses frequency-domain features, and they may provide complementary signal for FLUX/SDXL-era generators. + +4. **Augmentation gap:** Our current training pipeline does not include systematic JPEG compression simulation with quality ∈ [50, 99]. This is the single most impactful fix. + +### 3.5 Actionable Recommendations for DeepFakeDetector + +**Priority 1 (Architecture):** +- Replace ViT-Base backbone with **ViT-L/14 pretrained with DINOv2** (via `torch.hub` or HuggingFace) +- Keep EfficientNet-B0 as a lightweight ensemble member + +**Priority 2 (Training strategy):** +- Switch to **full fine-tuning** with learning rate $\eta = 5 \times 10^{-5}$, cosine decay, warm-up of 500 steps +- Add **JPEG compression simulation** to training augmentations: `torchvision.transforms.functional.jpeg` with quality uniformly sampled from [50, 99] +- Add Gaussian blur: `GaussianBlur(kernel_size=5, sigma=(0.1, 2.0))` with $p=0.5$ + +**Priority 3 (Training objective):** +- Experiment with **multiclass training** (36 generator classes → binary at inference) on the AIGenBench training split + +**Priority 4 (Evaluation):** +- Integrate AIGenBench's `evaluate_all_windows.py` into our evaluation pipeline for honest comparison +- Run existing ViT-Base model through AIGenBench protocol (clean data only) to establish a true baseline before upgrading + +**Priority 5 (Ensemble):** +- Explore fusion of ViT-L/14 DINOv2 + FFT CNN — no published AIGenBench submission uses frequency-domain features, which may provide complementary signal on SD/FLUX-era generators + +--- + +## 4. Dataset Overlap Analysis + +### 4.1 AIGenBench Source Datasets + +AIGenBench images are drawn from the following source collections (from `ai_gen_bench_generators.py` and `DATASET_STATS.md`): + +| Source Dataset | Generators Covered | Windows | +|----------------|-------------------|---------| +| ForenSynths | CycleGAN, CRN, ProGAN, StarGAN, SN-PatchGAN, BigGAN, IMLE, StyleGAN1, GauGAN, StyleGAN2, ProjectedGAN | w0–w2, w4 | +| DDMD | DDPM, Denoising Diffusion GAN | w2, w5 | +| DMID | CIPS, VQGAN, GANformer, VQ-Diffusion, Latent Diffusion, Palette | w2–w5 | +| GenImage | ADM, BigGAN, GLIDE, VQDM, StyleGAN3, SD variants | w3, w5 | +| Synthbuster | DALL-E 2/3, Adobe Firefly, Midjourney v5, SD 1.3/1.4/2, GLIDE | w5–w8 | +| ELSA-D3 | SD 1.4, SD 2.1, SDXL 1.0, DeepFloyd IF | w7–w8 | +| DRCT | DiffusionGAN (ProjectedGAN/StyleGAN2 variants) | w6 | +| ImagiNet | FaceSynthetics, ProjectedGAN, LaMa, MAT, Midjourney, SD, SD XL, DALL-E 3 | w4, w6–w8 | +| SFHQ-T2I | Face-specific text-to-image (SD-based) | w7 | +| Aeroblade | Latent Diffusion, SDXL, DeepFloyd IF | w5, w7–w8 | +| PolarDiffShield | Adversarially-generated content (SD-based) | w7–w8 | + +### 4.2 Our Training Data Sources + +| Our Dataset | Image Count | Generators / Sources | HuggingFace / Source | +|-------------|------------|---------------------|---------------------| +| **OpenFake** | 4M+ | SD 1.5/2.1/XL/3.5, Flux Dev/Schnell/1.1-Pro, Midjourney v6/v7, DALL-E 3, Imagen 3/4, GPT Image 1, Ideogram 3.0, Grok-2, Recraft v3, HiDream-I1 | `ComplexDataLab/OpenFake` | +| **DRAGON** | 2.5M | **Consolidates: CiFAKE + Diffusion Forensics + Synthbuster + GenImage** | `lesc-unifi/dragon` | +| **WildFake** | 3.57M | GANs (ProGAN, StyleGAN 1/2, BigGAN, ADM, Midjourney v5) | ModelScope: `hy2628982280/WildFake` | +| **Manual-gen-images** | 100s | DALL-E, Midjourney, SD variants | `DeepFakeDetector/manual-gen-images` | +| **Open-Images-V7** | 30+ (sampled) | Real images only | `bitmind/open-images-v7` | + +### 4.3 Overlap Matrix + +We measure dataset-level overlap using the **Jaccard similarity coefficient**: + +$$J(A, B) = \frac{|A \cap B|}{|A \cup B|}$$ + +where $A$ is the set of generators in our training data and $B$ is the set of generators in a given AIGenBench evaluation window. + +**Table 5: Contamination Risk by AIGenBench Window** + +| AIGenBench Window | Generators | AIGenBench Source | Contaminating Our Dataset | Risk | +|-------------------|-----------|-------------------|--------------------------|------| +| **w0** (2017–18) | CycleGAN, CRN, ProGAN, StarGAN | ForenSynths | WildFake (ProGAN, StyleGAN-family); DRAGON→GenImage (ProGAN via ForenSynths) | **HIGH** | +| **w1** (2018–19) | SN-PatchGAN, BigGAN, IMLE, StyleGAN1 | ForenSynths | WildFake (BigGAN, StyleGAN); DRAGON→GenImage (BigGAN) | **HIGH** | +| **w2** (2019–20) | GauGAN, StyleGAN2, DDPM, CIPS | ForenSynths, DDMD | WildFake (StyleGAN2) | **MEDIUM** | +| **w3** (2020–21) | VQGAN, GANformer, ADM, StyleGAN3 | GenImage, DMID | DRAGON→GenImage (ADM, VQGAN) | **HIGH** | +| **w4** (2021–22) | LaMa, FaceSynthetics, ProjectedGAN, Palette | ForenSynths, DMID, ImagiNet | Limited overlap | **LOW** | +| **w5** (2021–22) | VQ-Diffusion, DDG, Glide, Latent Diffusion | GenImage, Synthbuster, DMID | DRAGON→GenImage (Glide); DRAGON→Synthbuster (Glide, SD 1.4) | **HIGH** | +| **w6** (2022) | Midjourney, MAT, DiffGAN×2 | Synthbuster, ImagiNet | DRAGON→Synthbuster (Midjourney v5); OpenFake (Midjourney v6/v7) | **HIGH** | +| **w7** (2022–23) | SD 1.4, SD 1.5, SD 2.1, DeepFloyd IF | ELSA-D3, Synthbuster, SFHQ-T2I | DRAGON→Synthbuster (SD 1.3/1.4/2); WildFake (SD 1.x/2.x); OpenFake (SD 1.5/2.1) | **CRITICAL** | +| **w8** (2023–24) | SDXL 1.0, DALL-E 3, FLUX 1 Dev, FLUX 1 Schnell | Synthbuster, ImagiNet, Aeroblade | OpenFake (DALL-E 3, FLUX Dev/Schnell, SDXL); Manual-gen (DALL-E) | **CRITICAL** | + +**Summary:** Contamination confirmed in **7 of 9 windows** (all except w4 and partially w2). + +**Visual overlap diagram:** + +``` +AIGenBench Window Our Contaminating Data Sources +───────────────── ────────────────────────────────────────────────────── +w0 [GAN-era] ◄──── WildFake(ProGAN,StyleGAN) + DRAGON→GenImage + HIGH +w1 [StyleGAN] ◄──── WildFake(BigGAN,StyleGAN1) + DRAGON→GenImage + HIGH +w2 [DDPM] ◄──── WildFake(StyleGAN2) + MEDIUM +w3 [ADM/VQGAN] ◄──── DRAGON→GenImage(ADM,VQGAN) + HIGH +w4 [LaMa/Pal.] ◄──── (minimal) + LOW +w5 [Glide/LD] ◄──── DRAGON→Synthbuster(Glide,SD1.4) + + DRAGON→GenImage(Glide) HIGH +w6 [MidJourney] ◄──── DRAGON→Synthbuster(MJv5) + + OpenFake(MJv6/v7) HIGH +w7 [SD1.x/2.x] ◄──── DRAGON→Synthbuster(SD1.3/1.4/2) ████ + + WildFake(SD1.x/2.x) CRITICAL ████ + + OpenFake(SD1.5/2.1) ████ +w8 [SDXL/DALLE] ◄──── OpenFake(DALL-E 3, FLUX Dev/Schnell, SDXL) ████ + + Manual-gen(DALL-E,MJ) CRITICAL ████ +``` + +### 4.4 Contamination Risk Assessment + +**Mechanism 1: DRAGON → Synthbuster (Direct)** + +DRAGON's documentation explicitly states it consolidates CiFAKE, Diffusion Forensics, Synthbuster, and GenImage into a unified dataset. Synthbuster is an AIGenBench source dataset covering SD 1.3/1.4/2, DALL-E 2/3, Adobe Firefly, Midjourney v5, and GLIDE. + +Risk: Models trained on DRAGON have likely seen images from the **same Synthbuster collection** that populates AIGenBench windows w5–w8. Even if exact images differ (Synthbuster has ~9,000 images), the distribution is from the same generator checkpoints with the same generation settings. + +**Mechanism 2: DRAGON → GenImage (Direct)** + +GenImage is also both a DRAGON component and an AIGenBench source. GenImage provides ADM, BigGAN, GLIDE, VQGAN, VQDM, and SD variants — contributing to AIGenBench windows w3 and w5. + +**Mechanism 3: OpenFake → Windows w7, w8 (High Impact)** + +OpenFake contains SD 1.5/2.1 (w7), SDXL (w8), DALL-E 3 (w8), FLUX 1 Dev/Schnell (w8), and Midjourney v6/v7 (w6). Windows w7–w8 are the hardest evaluation steps in AIGenBench — any score on these windows using OpenFake-trained models is likely inflated. + +**Mechanism 4: WildFake → Windows w0–w3 (GAN-era)** + +WildFake includes ProGAN, StyleGAN 1/2, BigGAN, and ADM — all mapped to ForenSynths and GenImage in AIGenBench. The GAN-era windows (w0–w3) are considered "easier" by AIGenBench baselines, but contamination here still invalidates generalization claims for those steps. + +**Quantitative contamination estimate:** + +Assuming uniform generator coverage across our training sets, we estimate the generator distribution overlap $J$ per window: + +| Window | Overlap Coefficient $J$ | Interpretation | +|--------|------------------------|----------------| +| w0 | ~0.50 | 2 of 4 generators directly overlap | +| w1 | ~0.50 | BigGAN + StyleGAN1 in WildFake | +| w2 | ~0.25 | StyleGAN2 in WildFake | +| w3 | ~0.50 | ADM + VQGAN in GenImage/DRAGON | +| w4 | ~0.00 | No direct source overlap found | +| w5 | ~0.50 | Glide in Synthbuster/GenImage | +| w6 | ~0.50 | Midjourney v5 in Synthbuster | +| w7 | ~1.00 | All 4 generators in our data (SD) | +| w8 | ~0.75 | DALL-E 3, FLUX in OpenFake | + +### 4.5 Impact on Benchmark Validity + +Submitting results to the AIGenBench leaderboard using models trained on our current data would produce **invalid generalization scores** because: + +1. The "Next Period" evaluation is designed to measure generalization to **unseen** generators. If our training data includes those generators, the evaluation reduces to in-distribution performance. + +2. The benchmark's temporal guarantees are voided: steps 6→w7 and 7→w8 (the critical Stable Diffusion and FLUX transitions) would show artificially high AUROC because those generators are in our training data. + +3. The paper compares methods using AUROC averaged over all Next-Period steps, weighting each window equally. Contaminated windows (w7–w8) contribute ~25% of the aggregate score, meaning our contaminated submission would overestimate $\bar{G}$ by an estimated 5–15 AUROC points. + +### 4.6 Clean Data Strategy + +**Table 6: Training Data Decision Matrix for AIGenBench Submission** + +| Dataset | Decision | Justification | +|---------|----------|---------------| +| AIGenBench official train split | ✅ **Use** | Benchmark-standard, no contamination by design | +| Open-Images-V7 (real images only) | ✅ **Use** | Real images, no generator overlap | +| DRAGON | ❌ **Exclude entirely** | Consolidates Synthbuster + GenImage, both AIGenBench sources | +| WildFake — GAN subset (ProGAN, StyleGAN, BigGAN) | ❌ **Exclude** | Overlaps ForenSynths (w0–w1) | +| WildFake — ADM / diffusion subset | ❌ **Exclude** | Overlaps GenImage (w3) | +| WildFake — Midjourney v5 | ❌ **Exclude** | Overlaps Synthbuster (w6) | +| OpenFake — SD 1.4/1.5/2.1/XL | ❌ **Exclude** | Overlaps ELSA-D3 / Synthbuster (w7–w8) | +| OpenFake — DALL-E 3, FLUX Dev/Schnell | ❌ **Exclude** | Directly in AIGenBench w8 | +| OpenFake — Imagen, GPT Image 1, Ideogram, Grok-2 | ⚠️ **Audit** | Not in AIGenBench sources; may be safe | +| Manual-gen-images — DALL-E, Midjourney | ❌ **Exclude** | Overlaps w6/w8 | +| Manual-gen-images — other generators | ⚠️ **Audit** | Verify generator identity before including | + +**For internal (non-submission) evaluation:** All current training data is acceptable. + +**Implementation:** The safest approach for a clean AIGenBench submission is to **use only AIGenBench's own training split** (available via the GitHub repository) and add Open-Images-V7 real images as supplemental real-world examples. + +--- + +## 5. Testing Strategy and Submission Process + +### 5.1 Accessing AIGenBench Data + +**Repository:** https://github.com/MI-BioLab/AI-GenBench + +**Setup:** +```bash +git clone https://github.com/MI-BioLab/AI-GenBench.git +cd AI-GenBench +pip install -r requirements_train_and_evaluation.txt +pip install -r requirements_dataset_creation.txt +``` + +**Training framework location:** `training_and_evaluation/` + +Key files: +``` +training_and_evaluation/ +├── lightning_main.py # Main training/evaluation entry point (PyTorch Lightning) +├── run_training.sh # Training shell script +├── evaluate_all_windows.py # Runs evaluation across all 9 windows +├── ai_gen_bench_metadata/ # Generator metadata, file ID lists +├── algorithms/ # Model implementations (add ours here) +├── dataset_loading/ # Dataset loaders for AIGenBench format +├── lightning_data_modules/ # PyTorch Lightning DataModules +├── training_configurations/ # YAML configs per model +├── evaluation_scripts/ # Per-window evaluation utilities +└── training_metrics/ # Metric tracking +``` + +**Dataset files are NOT in the repository** — they must be assembled from source datasets using scripts in `dataset_creation/`. The file ID lists (`resources/train_fake_file_ids.txt`, `train_real_file_ids.txt`, etc.) specify exactly which images to extract from each source. + +### 5.2 Expected I/O Format and Training Protocol + +**Training input format:** +```python +# Image tensor +image: torch.Tensor # shape (B, 3, H, W), float32, range [0, 1] + +# After normalization (ImageNet stats) +image = transforms.Normalize( + mean=[0.485, 0.456, 0.406], + std =[0.229, 0.224, 0.225] +)(image) + +# Binary label +label: torch.Tensor # shape (B,), dtype int64, values {0: real, 1: fake} + +# Optional generator class label (for multiclass training) +generator_label: torch.Tensor # shape (B,), dtype int64, values {0..35} +``` + +**DetermAugment pipeline** (applied at evaluation — fixed, cannot be customized): +```python +transforms.Compose([ + # JPEG compression simulation + transforms.Lambda(lambda x: jpeg_compress(x, quality=randint(50, 99))), + # Gaussian blur + transforms.GaussianBlur(kernel_size=5, sigma=uniform(0, 2)), + # Additive Gaussian noise + transforms.Lambda(lambda x: x + randn_like(x) * 0.01), + # Resize + transforms.Resize(int(224 * uniform(0.5, 2.0))), + # Center crop to target size + transforms.CenterCrop(224), + transforms.ToTensor(), + transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]), +]) +``` + +**CustomAugment** (training — can be customized, but output volume is fixed by `am=4`): +The `am=4` multiplier means each training image produces 4 augmented variants per epoch. Submitted methods may customize this augmentation, but the total number of gradient updates is held fixed. + +**Training protocol pseudocode:** +```python +model = YourModel() + +for k in range(9): # 9 time steps + # Load previous weights + if k > 0: + model.load_state_dict(torch.load(f"checkpoint_step_{k-1}.pt")) + + # Collect training data up to window k + train_data = concat([window_data[j] for j in range(k + 1)]) + + # Train for 1 epoch with augmentation multiplier 4 + for epoch in range(1): + for batch in DataLoader(train_data): + augmented_batches = [custom_augment(batch) for _ in range(4)] + for aug_batch in augmented_batches: + loss = criterion(model(aug_batch["image"]), aug_batch["label"]) + optimizer.zero_grad(); loss.backward(); optimizer.step() + + # Save checkpoint + torch.save(model.state_dict(), f"checkpoint_step_{k}.pt") + + # Evaluate on next window (k+1) with DetermAugment + if k < 8: + next_period_auroc = evaluate(model, window_data[k + 1], determ_augment) + print(f"Step {k}: Next Period AUROC = {next_period_auroc:.4f}") +``` + +### 5.3 Evaluation Metrics and Scoring + +**Per-step metrics reported:** + +| Metric | Definition | Primary? | +|--------|-----------|----------| +| AUROC (Next Period) | AUROC on unseen $w_{k+1}$ | ✅ Primary | +| AUROC (Past Period) | AUROC on $w_0, \ldots, w_k$ | Secondary | +| AUROC (Whole Period) | AUROC on all seen + next | Secondary | +| Accuracy (Next Period) | Accuracy at threshold 0.5 on $w_{k+1}$ | Secondary | + +**Aggregate metric for leaderboard:** + +$$\bar{G} = \frac{1}{8} \sum_{k=0}^{7} \text{AUROC}_\text{Next}\!\left(\theta_k,\, w_{k+1}\right)$$ + +(averaged over 8 Next-Period evaluations, steps 0–7) + +**Calibration note:** Because DetermAugment applies random degradations, evaluations should be averaged over multiple runs with different random seeds to reduce variance. The benchmark paper uses 3 runs. + +### 5.4 Submission Requirements + +Per the benchmark website (https://mi-biolab.github.io/aigenbench-website/): + +| Requirement | Details | +|-------------|---------| +| **Public codebase** | Full training + evaluation code must be publicly accessible (GitHub) | +| **Public report** | arXiv preprint or published paper; a detailed technical report suffices | +| **Protocol compliance** | Must follow the sliding window protocol with DetermAugment at evaluation | +| **No leakage** | Cannot use AIGenBench evaluation data for training | +| **Foundation models** | General-purpose pretrained models (CLIP, DINOv2, ImageNet) are permitted | +| **No domain-specific pretraining** | Models pretrained specifically for deepfake detection are not permitted | + +Methods that use the AIGenBench data but don't follow the protocol can still report results but **will not appear on the leaderboard**. + +### 5.5 Adaptation Plan for DeepFakeDetector + +**Step 1: Environment setup** +```bash +git clone https://github.com/MI-BioLab/AI-GenBench.git +cd AI-GenBench +pip install -r requirements_train_and_evaluation.txt +``` + +**Step 2: Implement our model as an AIGenBench algorithm** + +Create `training_and_evaluation/algorithms/deepfake_detector_vit.py` following the repository's algorithm interface pattern. The model should: +- Accept `(B, 3, 224, 224)` input tensor +- Output binary logits or probabilities +- Support `model.train()` and `model.eval()` modes + +**Step 3: Configure training** + +Create `training_and_evaluation/training_configurations/deepfake_detector_config.yaml` specifying: +```yaml +algorithm: deepfake_detector_vit +backbone: vit_large_patch14_dinov2 +learning_rate: 5.0e-5 +scheduler: cosine +warmup_steps: 500 +augmentation_multiplier: 4 # am=4, fixed +batch_size: 32 +``` + +**Step 4: Run training across all windows** +```bash +cd training_and_evaluation +bash run_training.sh --config training_configurations/deepfake_detector_config.yaml +``` + +**Step 5: Evaluate across all windows** +```bash +python evaluate_all_windows.py \ + --model_dir checkpoints/deepfake_detector_vit/ \ + --output_dir results/deepfake_detector_vit/ +``` + +**Step 6: Write technical report** + +A technical report summarizing our architecture, design choices, and results can be drafted based on this document and submitted to arXiv. + +**Step 7: Submit** + +Push code to a public GitHub repository and submit via the AIGenBench benchmark website with a link to the codebase and technical report. + +--- + +## 6. Recommendations and Roadmap + +### 6.1 Immediate Actions (Week 1) + +1. **Close issue #48** — `research/fusion_model_design.md` already satisfies all criteria (completed in PR #50) +2. **Set up AIGenBench framework** locally: clone, install dependencies, verify dataset paths +3. **Run ViT-Base (current)** through AIGenBench's `evaluate_all_windows.py` with clean data to get an honest baseline $\bar{G}$ +4. **Add JPEG compression augmentation** to all current training pipelines (independent of AIGenBench work) + +### 6.2 Short-Term (Weeks 2–4) + +5. **Fine-tune ViT-L/14 DINOv2** on AIGenBench's training split (clean) using the temporal protocol +6. **Ablation study:** Compare (a) ViT-L/14 DINOv2 alone vs (b) fusion with EfficientNet-B0 vs (c) fusion with FFT module +7. **Evaluate FFT module** on AIGenBench windows w7–w8 specifically — hypothesis: frequency artifacts in SDXL/FLUX may be detectable with log-magnitude FFT analysis + +### 6.3 Model Architecture Upgrade Path + +``` +Current State Target State +───────────────────────────────── ───────────────────────────────────────── +EfficientNet-B0 (5.3M, ImageNet) EfficientNet-B0 (5.3M, ImageNet) +ViT-Base/16 (86M, ImageNet-21k) → ViT-L/14 (307M, DINOv2 self-supervised) +DeiT-Small (22M, ImageNet) DeiT-Small (22M, ImageNet) [keep as alt.] +CompactFFTNet (0.5M, scratch) CompactFFTNet (0.5M, scratch) [keep] +CompactGradientNet (1M, scratch) CompactGradientNet (1M, scratch) [keep] +Fusion: 4-class LogReg → Fusion: ViT-L/14 + EfficientNet + FFT +``` + +### 6.4 Training Data Strategy Summary + +| Context | Recommended Training Data | +|---------|--------------------------| +| AIGenBench leaderboard submission | AIGenBench train split + Open-Images-V7 (real) only | +| Internal evaluation (our test sets) | All current data (OpenFake, DRAGON, WildFake, etc.) | +| General product deployment | All current data + AIGenBench train split | + +### 6.5 Expected Performance Targets + +**Table 7: Projected $\bar{G}$ AUROC on AIGenBench** + +| Configuration | Architecture | Training Data | Expected $\bar{G}$ | +|--------------|-------------|--------------|-------------------| +| Baseline (current) | ViT-Base/16 | Clean split | ~78–82% | +| Improved augmentation | ViT-Base/16 + JPEG aug | Clean split | ~82–86% | +| Architecture upgrade | ViT-L/14 CLIP | Clean split | ~90–92% | +| **Primary target** | **ViT-L/14 DINOv2** | **Clean split** | **~93–95%** | +| Ensemble (stretch) | ViT-L/14 DINOv2 + EfficientNet-B0 + FFT | Clean split | **~94–96%** | + +The ensemble target assumes FFT features provide complementary signal not captured by ViT-L/14's spatial attention — this is an open research hypothesis that should be validated experimentally. + +--- + +## 7. References + +1. **Pellegrini et al. (2025)** — "AI-GenBench: A New Ongoing Benchmark for AI-Generated Image Detection." Verimedia Workshop @ IJCNN 2025. [arXiv:2504.20865](https://arxiv.org/abs/2504.20865). DOI: [10.1109/IJCNN64981.2025.11228377](https://doi.org/10.1109/IJCNN64981.2025.11228377) + +2. **Pellegrini et al. (2025)** — "Generalized Design Choices for Deepfake Detectors." Under review. [arXiv:2511.21507](https://arxiv.org/abs/2511.21507) + +3. **AI-GenBench GitHub** — https://github.com/MI-BioLab/AI-GenBench + +4. **Wang et al. (2020)** — "CNN-Generated Images are Surprisingly Easy to Spot… for Now." CVPR 2020. (CNNDetection / ForenSynths source paper) + +5. **Dosovitskiy et al. (2021)** — "An Image is Worth 16×16 Words: Transformers for Image Recognition at Scale." ICLR 2021. [arXiv:2010.11929](https://arxiv.org/abs/2010.11929) + +6. **Oquab et al. (2024)** — "DINOv2: Learning Robust Visual Features without Supervision." TMLR 2024. [arXiv:2304.07193](https://arxiv.org/abs/2304.07193) + +7. **Radford et al. (2021)** — "Learning Transferable Visual Models From Natural Language Supervision (CLIP)." ICML 2021. [arXiv:2103.00020](https://arxiv.org/abs/2103.00020) + +8. **Frank et al. (2020)** — "Leveraging Frequency Analysis for Deep Fake Image Recognition." ICML 2020. [PDF](https://proceedings.mlr.press/v119/frank20a/frank20a.pdf) + +9. **Caron et al. (2021)** — "Emerging Properties in Self-Supervised Vision Transformers (DINO)." ICCV 2021. [arXiv:2104.14294](https://arxiv.org/abs/2104.14294) + +10. **Zhu et al. (2017)** — "Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks (CycleGAN)." ICCV 2017. + +11. **Karras et al. (2019/2020)** — "A Style-Based Generator Architecture for Generative Adversarial Networks (StyleGAN 1/2)." CVPR 2019/2020. + +12. **Ho et al. (2020)** — "Denoising Diffusion Probabilistic Models (DDPM)." NeurIPS 2020. [arXiv:2006.11239](https://arxiv.org/abs/2006.11239) + +13. **Rombach et al. (2022)** — "High-Resolution Image Synthesis with Latent Diffusion Models (Stable Diffusion)." CVPR 2022. [arXiv:2112.10752](https://arxiv.org/abs/2112.10752) + +--- + +*This document was produced as part of the McMaster AI Society DeepFakeDetector project in response to [issue #65](https://github.com/McMasterAI-Society/DeepFakeDetector/issues/65).* From 2b5ede11e7390e1efa27f1ed1d6b5a091d09f52e Mon Sep 17 00:00:00 2001 From: Vihaan Singhal <87380375+Vihaan-Singhal1@users.noreply.github.com> Date: Tue, 24 Feb 2026 19:27:05 +0000 Subject: [PATCH 2/2] docs: add PDF version of AIGenBench analysis 24-page styled PDF generated from aigenbench_analysis.md Co-Authored-By: Claude Sonnet 4.6 --- docs/research/aigenbench_analysis.pdf | Bin 0 -> 128832 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/research/aigenbench_analysis.pdf diff --git a/docs/research/aigenbench_analysis.pdf b/docs/research/aigenbench_analysis.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c2f960eed9b9c98c74eb7bcba63a69ce911ba98e GIT binary patch literal 128832 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 z z;#Z0X0rDmyC`DlwSB?){M6$o!1o`}s9)i+lM%(ig|H~}IGeJW9ddpYfxC^8?BX;_M|fw)i_@2-hK$DSz}pXsP|U#sfX1Uzu6CDk{o4CLZDx_ z@lVJhvasmmKIAOmSPG0^DS-hfu%a*QBwp#Q-*1~eYTzd8VkdnBh-)PpH;oc#|@ zMV|=byYKxdx^E$XViQ86aLvP{;&*%>;v2jJzI{(x_L8Lgb~FQitBpLVPDm_;)D};gE=ulT_NPY1Ot7t*iZ zK&6kSUcGYBiKbz+T-QB@AET&?EQi654NZOH30jk zBlF2euErzwH~*F{%dvN6@6S``&uBrC$X~DE2QhJnhd?_+^OM>bbdVl{;?g_?3{}A# zZf^FwPq)6M!N<3kr|`5*e*z(!3?C~Wwie*=-*m04+_{z=GkUmpj$iS?V&QBE%<|hx zmn>#C306wFdS*jzHn|Wwy7E5wi}Zk2^zW{AI>4HEUV}Q)wfIA+Z*SNrI2RjsX_@ll z7iG&oZc(>~MfslObd;txkZ`s)HB`=2dMu9Fejse`d_T(?`t+&;lak04f3ouIvftc3-NXD_5dng!k=}yja~~D%5@x5!6Ef?&M~Zipje<< z2~M>{nzrN|%}%v;O1C-~p@_-(HhZxM18Oi-p1J`94sm?-My-+FT7UW`JZrN=CJjyg zppG-Qe7boUBW*d`R6Zod&VIDn)(vp|%$t($(I?#|=41|cE!nO0#<}6FBh%GX;qGTG zr0*@6G+acsO-bxaP&G?B!gIb`nHW8)+9aVP<)X;DnEso!E0;iYBT_1J+5G&jJS^Vv z=;*$^oXC&PF;#}M&925v>yKhp<6PicXO9&R&ls$IQru94%yZDU?s!t&Z6$+ zb6=5|oH1EzhERCihkJ|AFz8&dz^0bmzu#-4IM0SOQm*TipytPSx5`GgXP%*UNElS9 zeLP+cTyx3we<)V;t!S?6EUCLmoiDhqyJP8^hyCh!b^4y>uF`$f15BdY zn@KK6&%^@E8K$bud>LA$2jt$2X)Z(XXjQ^3-rXl++>|fCMkP~1X&runO53Fig00d| z(ZGGVI)MCfFqhxF;y7MqVjmY$Hvp9-+`E8`Z70gcIq6d!Nu*kf=F|DI_^|Hw3!ASs z!+g??(d~4Ho;W6TG^`WHAsoui+haL0-XYf`&Hv@*wHu!o8U?d#rz%V z+8m})9!#FZ{5!&C&&-Kmc`bjYWeLSfpBsY$1nz&4v~tsr?3yXo7YjfY{*YkF#B|6{ zD)hY3&vT2N6)a2B()Qp|;v{kpINioISsT()jlL#c$schaLwVS){}EW|lxam6&9Rk9 z4H(g?zt>U1{WV ztPe_vX6V$DLGr{KRQ`g0AfY@J6wp;_)Mt>iwsu%HHX*xe45eGIEW~)MaObZ7##=?< zjC0Cnl4Xojq-Xdrlwxh(HHjQa(4mP3Hr2MF>G|&V}A@jf$~1fq}NTU z4rSGRY_V2bv-FhZ!-b45HQ{>xYzT+S&PsR?^LszaScCl-Ne9|QnyiQXYGpXq0x!eC zFybtJEMr2$LgF@ER6%&3iYsc4SJrA24P(S)d|*qb^t8HmJzn*F`QRee*%syZb_?0o zuiJ+NeJQ#UePO&TP26LT43h5~q4PDNHq)`}^psPf+i1EkdW~#@wfA7m*%GxB;?n2z zqrux_hl*<(o|5WP0(MdGxZ=OeBRDdutZ-l5D-LK_s=@tGa#hl{WpH{V9VCwM@3goY z)=<=eH6xB#@Y_8)U&7>;v1rdf2v=y=Hz7>1B_wEEe_>!Ha-c@7Y|rHO6W8Ke`&%^H zPks~s#uh-M`#48RQ`jJ(d^0a(u&DfaRo}eTLO8?D)JI`ZI-BYux zGZQ9D!Exy-3vY53&DD#Um?)vZpp;)9Ah0eQ3H2I#z7q52!xKR4j#0zMN2iH24W(hT zHv5fP2te=a&3a6{mZE1%hB>bN?l0JdRmt!`ZM5wX}m!yO&%0Vy4D{AF-sC?^PXEB z)gN~|;9{H;1JHU_Efv{=7el+-1%Erve?5M3gWGe7Hi>5)cec57Cl+wyO-q)!d$UKp zLZ-QVzuT)Cm`HUNbht@rSZWbXy{NRQbK%X0{wB+aqu{DO^CL6;P2g{Su2^}bGc8%r ztQSS45mc#ftLyB3o1@VC)8l6G=s=o*osUjXpZb@Nixfg>%Ri4pPMw25sSY(7R!I4#}J4{Y-EIA_iaB0eYqLlraUt{hetXKGJ1oW(#W?0J zAc!}F(a~bdfIO;IXBrYQC;@3{#M3V%7E(0)qX1X3eZj_G)_-AwM7wWf<~7H!&GS76 zc#=6}1-%_a9vsVcEJc}J6r2+!7Sl@~Sr{zM4zqi-1Qu-o7Nxck=QKW9+PqrAt$_p=T(|Io?`}F zMjxSpLe?$`7)G}AUUm=dAo#e(!(z+a*C$3|f_20?y-DH!J(`;2+f8`sPUZTJ_r(Zq zncDVi_MMI1_JqY0A^Nig*4DSYhm%qL{@oOxU~Z$)oO$6FLV5F4Fg5MV_^!&16q3qG8Tz1#HbJ|}V5crknEE2*QGB2c zVAMsh^EXAXyIC}#gvV&XhusxxU0NCETEtz-bKcya4#q`NdC9_JfEy^G_GhQ3lSKe< z1NCqUZ5@^@0Dnxhk&SfuK{cZkN9I2?D)q%5#`i<{;LVsxtg7pc>#LtyTHL6M1)eoC zap@>@hP)m{Do?2ngrB_F$Q%(*6|6Dg4SNDYoj9wKS;muse{>vIfb3-4$h^p%%qdTf z&*;-8vZEhAu)?I)A{t(dQcaTLQ#@)x!<^qhIGefg*HYqgd^h(_l%LHiw(9k)$drmZ zu~sP7SKQYj7tC>n4eUx|X6>M0o<3lG`#jHnzu`*jRLZV}{9m3A{oj7iX-7dB{9*FZ z36OSL>t++A)4`niU>zAf2v!o9O55*;rpCYaek$+kY9 z1J;&K&ZVJ=t$a|!Mwbcw5}zwwhAV|dt+p>EskHl8rni`$3DGHELXG}av$3JtxN6=S z9#PN^3I+0&A% z$x(7~E2TzS-7e^{qaPFjY?v zN|pN)E&T~eKENSN+oGHxiJm8Y2}zzIR7QV_-Hk}Vg+d)HX(~`gIQ@xNPG36}@c87} z;zu@me>d=>d$1(k4J+PmSLp5TJg&>{HGWd)cPw*XwZtzrNWiS4n!X8^6wJ4oT=F8s z`{w*VxallHm1P`KHzJeMrm*spKVgZ-W9Zw1ZNJYh$p{FoIDFCnV^%Pyl>9i@=x{0S^nlUfc6cEafZ7J1SES?vN zTrbeek50ytB!EYwM3p!%1IJUfXgJ%8DPNT?&t0Q>25sG@>HO!H(Dn@UUKhzaNHY3- z8msJwX!JDgr1{zifOWZvS3528RO4}ajK@mQSi?)+G(I{swX)(jvWK7M2#b?JBjEbI z`eW=91g)pN)=pP^PA0o}B1Qw}M@eJoCgm#Bl~eB-OdejcdtGkkNKFYXJbq)z`7c}s zcABQ0ZS|rh(s_!@2C*makoZm^#c{h)-~+O~r(cMZ`g8H3f_^Qd)u`8J7HvlKKy^&L zuDpD;bHu-WNP#qfD1B``8U$TEbq8LKcPX7J?xvwy4~|+X!uguzYG;EfF8(qqvYK2F znwo1e&&w+@e)b)t6$|vR#?^DfnYn(9z{S4Aspb7uXK!h?(RIH}Mey_$1f8U+Z=gXb3t_-}_!#4j4 za^_DopCKf{0HWET9E%Jd3vTBp6n;U7r)eY;5ktZ% zwG`dbBHz^UT~=o?3x&!OTg$>^`eCr~j^^kr=cvS0Iz0QdTboz=`AGSP+%lq6?yjZvks!;l4Y{duXBvI3Hv^*j9Ys%Q-{Rm>o zJ963T9eVN+yw7RjFvJTQ-mKMJHJ3p*3n2EO>@o%*S58;=rBz1v94ZBwBls>&{P8%z z_E>X}mp6GFtQ>9vwa7Nm1>7LT0G`LjfJgJ0&W++l{Y9?ev?nsPWnA<4|TYd zsX(|X^GN1+Q)g;u%=y45QIC>tQ<2GwY^g~C*c4$2k9^f*4evc|#(`Duw{|n31j;u0 zPL&ZYk)2eK!$zsVlWb6Bea6SnJ;(8mC)c9ijfIb2R1>@~1UT_|tVJE9*Uuv7+$pTz zzOe4^u!)<_yL(OxgAiWgqbf*n%fSW2LKzb+$6{yWg=ksly_ZS2KdMBXMTHPvzP@vr zr#9DbN|wfeSJhW92x88jp`&wfH|f$MbyPq~!t(XIM)0jiZMZP#1r=)2TaQP!L=}YY zYGF>Tczu=qSvb!VzGUG82Rwt5k_8+LaZZN%;pU#ltQtYrWDAP!!CMh#R8^jZl51%e zc|!W~bKx1RG&QfqnRK-jrNpqysp%cnCN@+D7H-TxG?y#Ld^^xey&YcBn2Xi=)|$lT z-Y6@wkvC;<)N;`)+(h3;P>ydii2uO7+yCJw%IVx_r+eS&2XLc~AXtTj9xhf8iDQ3` znn_pA(wB#8F&oQ(oH0ZbK`ndIDom)IFY_9 zzr#?_<@>TcqeiCnS0WlaYbg$t6Nq;@|B{KRGpx@^edKz4fx#&&V2#7s&?Yiy5J{N~ zGD>$!A?ga0255@&BaoB>YGmVZoLw^^qb@)s3fX}d#pNa^{!Pjt1MUGPs5G5psyv!< z*AGNO%u7mUJr{C}_Elg}j0V;gkH=Un_;xm39BO9X{Z{fGW)=JUn%)WBs5lXXzK&sh z6j`Sh1N%c92F{-2#^Z=L+TBP#@1C>FRX^*aR^im@W-(2ZvVQ$oIdKcX13A$8warm}p%YJJDJey` zL!psoo(wQ!PucQ8I_sEZ^J84R^m#`0q~avSZd1v+yO0Lm44ZMm#C*Q6y`N}lyf<5`$-sW z>w4;_fo~YK@|1}7w4K3EG&<-xIPdBpMI~YXgW3=?X)UmFmFkfmKDA?}ATCw?Y)q9*~` zw_fD5;+S6W2(;$3W4|h{b^cz!w$j2wJ<5SvY^&2;&06Ux4dt!g|9zntN2RrYFTwHd z`m7P9INt!zH2=`Fp&e!*_8a?o6w_>_ZRmJ=)px;kZnOP*Yyfdwmkb|teHu@|DnXka zALf)})E%D3N6Bl^_CoM*XT|DpVbk?-ZD3Jq>9XOpRPc;%s4Yh=-;DSthI7Yf>eWb1^&cbC^+ z>17rN+WX*iT;IWP@%aN04Dq#>Nm0$hiZMmZC>DvPGjP)*8gDl~Y`?3Atz}uM-`RcM zuMBBD7`~$LJw-&su{1*pyrNuf_R*Cfu(GO!PxNg@$v4u(SsO)yRi*No40 zBSl6a_wDwP2#4vvG&NPpnYK;8i$xK0j@cI|9on|&zC)CD{tzQ9zBIz`>&NohkNesA>SqO<@IAA zPyw20-ol8ZI`9(sLKERyWe&0FnSeh$aM&^jx_4q zTe+`nUnS1_;F>p0;`qZbtpv8p=%rUu)xO_y{3Cn~v3%}jLlE#CcT0V*GXAr+EEf*iHF@e9 z#PI`uUySUk^FFP^sV^G4?vv{kWhvO-T7rs#3VzNhIUg3EAk{Lu8Sq+tYoUA%H@#~y z7^XMJTgB{)!$0fF?n`J?)RYZ=8m%iCKX?zu|NY^`WS@5O>r=JIe6R9dMnd3TZ+1zG z`=YODc?AMt@KO64n>B=2ik`fT0l)@ZXk3OS;3U(?l@! zWfK=OB{m?|Shufz?c5psJqR0Fo*9g=!Rp`@HM3(R4`o(gah`4dJPpT@CWJy<+B|UU)>1VG0^9@BIVF*0Z zES`N>S+Y}Ni5ndfD_kuF1rnJrb4;O(kl?!q-4L()=@m{P5 zGOzi@!c0dkiS4K0e^^)%R;UDevHFtx^$^rliEY!#JPM63{NoXmqHfPsvr)1$SMo`t z)JfRi|H6pgZhqcS*fGT{rM9EV=O37-iIk`vRcc%Si;L&HGgm9 zwPT3AWFbJCfieO!xFq_Mt$9gP<_VfQ-kF?B;bVb7D8Ci$slxB;hs#Uv$wlmNNZf@qfG0KIsy6@@mn zAY`Y(E>R^wV~=M5xtIWJK7A7}=CuH6&I5*6`jJ^ubgp z267qFXs}01m1e$Sw$pUbf4Btk3;D}sNZb2A0|OrE!PY1Ao@{yu& zrLjOfEJ4@q{jUCw^SeOfL=oy%w=ggoS$B|tks?HtVBe^QamMBpxp24I2k|J0CiUrcRyeTuqCoC`We@aikV&;5Q|(5+5>57V4TyLAWgPFo>>*2sbqI=zJY@hP$(GE&nl(YlhDge8HXfM7; zHo^QuUr@>4@A>#xNr->g$ARIb2Lf~4#Wi@od}{kS{IOK%<965Z zck&_GqmW-Z);=0#jM7=W;uFiXxOI7l!$Ng7mXzH7$7$PT*XQ8oYKq)Q(&^speK;lN zrF5c6f`!C%;uu1_--~B8(tW1CzA|l17gQCpCu2x^ru2l{y==vpepl%NN6~NRnWrB5 zGN@OP;cV#>B|Ljk_Gz$F$B7Z21A#r&?5GHG*(^^=@U&Tt!DYSQxHVWwXyfs*qMzeQ z{`J{CUn8ES#*{+wtG+HCjV)J_G1nqRG6*%|LtjE;cBoqXl1v^3c%E2$SM(Phe_G?zlIx#ki^U=`?AGcP>K$h=*B7+XIvp`-fiis1 zs6_K~QVgf5oo% z(9*=a<~VD7?0}Uok7{%O#8ZOy?J(7v-Wl6MhR-bhfX~BfH_-t-OU>Tt)X$q!t%g*pCezn!im}&a+fLms z*UIg-O&U#m{q-N~$9JnSzZ|ZTQ8~Ui0cbi4)JndTVomuwT(1Oa6|YROK?%V$skM3m zGPB5UxA8f%_Iux2CJwPgVgWIYBReIpV*)lvryPA(Yg=>>^&MCbhBEiC(+u9QLp3=q z6#DymvE7_AAQve+A93Z9*Fc!aQZsWkuQLW&f{|MBj;S=Z=pojw5Tz}MtnnUMRD&*-$3a@@H* zl3}0oT9dGJ+sJw#K2sH?8W+<%ZFkTcdqrmXk$H+3ZfkLQ)OMqy@S;B8cEGLu!KoL~ zD8L;$kY@baVEApNi)PMT=-jQ4p0KX(50f=ixxz@?*kC%w&z8BteNu0tSd2UONK zUByV+{TgoSYN&Sr?1{#fNcdgIKKuoD3_MYgCODf-e;U1^yM z$u)qacP$)ItAp)-E2o-&TL#e7Jhlg^h|7(*CEZ5=6i3isP$NT z*t%ba60-P+MAan$R{U7p1#m^$9=^B?xSToRN1T`mxG5FPEH4kedD=&h<$hyzaWL}t z`@O&*AZjDdOkKl7O=pi&b-lpbzlrxm)=Jm{26wL0hSL&tyj@qm1>+=sj(cP(dRG?6_~Lb!gWkHslmxB2T5o4- z9>~?8%<-7p;KCDdjxhcr6vwJF!!j7QqtymIuF~xJ`_w7WKBKA^o&`b2{suL~7$k^} z{myrp=R&hNGFR6>=Ow+F?%JGimy+wW&W|ckKCCLP8dZkpzQJg%7Tf>@D?y-?0G8GB z6iQ~ZjVOk?njbM>!+<^oIaq#>NGt*?p&m>Yz#L`zV?eS!XK+@+-xOORaMZMZyy4Vd zf_^@RZTV{&vOk1{cU|PuYWwTxcL(^{(Q}7yu5dJCY|EA-34mtU6`UY#stM~N9=SP*PcKMG`M)3sSsxNR%t`znRY`XBDyH`k;^s8 zoS5Zh2yYRKA{0*yW`8I}@J0Rx)q37=9h=TbG^I5ZkwHiJVjTo3RhdQrOQ+)AQ!T!% z>=FHtZd!-oc)6~E=0kt(`tFX>bFDH{T@)uNla$G?L8fWR)(w|e;X*2L!vjUBK8;vm zRTMR%D*HpR{+~wG1f@GD!4APtLVgHcg$QOh_BrdI$=@Thb&-XU_!zoG;Fj?+PCPep>ya5ZCV|{H;N{y)>7}vvuz{u}wd*altRn?)&(0e5qJ2 zQcEA{E7y)z@Zf>u8{#8LwdBs}E4nh{jEr3ldo{#IF)`p z0xH7H;);>{Sxi)#wzL;*@&IT;d@e6rpk2SVgZA5XH^Kx#3l|^tTDT1PvVQG4I7`@-%9p6Sl|foi$U^+mr^n(pdib^Ju@p^Gc~;*O|}_UNCc zyKrXO;?)h!fLjG_CPMMZ%EU?h<%%|IM*t-n}eqZhY3-io{!( z{TY3~{W*G}C3BB64w?N152EXTtY0KTq31H>W^keoDH;BO6^Ilu7oAY0oO0lA_!`I& zre-)X{qsb~b5HL}qUt`tj6AYW#+>|Z;k}+r+BC1N0q_m zDI+tZ77u8`to?&)0jmM&P%eE7d(d#)uX#43tTe_&HY~rl=u+1oDF+LHzU|r$*N>X9 z&r6~4xImkb<_A`!$NFDyBVf=lD&d)Q?lGN;p9AzZN5=((Oe=sB-B_+Hy~^Q(`F3Tx z6-S4I(do;WMh`@gv>wk6jMLcBK^nEby)~2=&ho1O>fp9`j_PlxCNk&Hr3+SL)@tTp z4&*?l(B;fUf7B4%h1_5!qZMyCBKjcna@pN4bU)_5LVND(;X--fws8LWexB?ZA$3+0 z0Ip|8TlYbrSBtF3qa?rce8j4h*I9EN$u4)oA`M09gMcUqwPz|g1_yL7u*BxUaW}b$ zkNKv3n*Yq4d)|9lWH2Pwo*G?1OL!SY_1Aj>`ROW%PCQvkZ0x#h{SS}o&a{`f-}NBs z(8$&DnKQs*P@E%aO*{U>1B>u+g6uKT;(n&|0Lg7;@$o4CewJKmD$rdQd82YpJ;6<< zqZ4M|YZYhWe_mFO>__9VV~WNh&bwc5SS0$xo>%^ATrNsq$+>(o2%Iz}=WY zgYLQ&n!U|*5vmvcatXX_8N!yW4Q#BU|NUsir(MYN(u-yLtYpT6Ia|IsbumaV{z_1NlIAOz)6P4gC~%1URZyH~5LaP$N#T9$ zuD2ep5}VJ8IP3BV?mSxY`4BK3JA5||HJxf)PYMV+kdqj!)g16rt7cGHazlEwL~wK~ zsLbhQOA1!BwZo%aFwSsxcbZKKztM?`CzC%%cP;N1@_oH-`+R$Z&@w*E2{vUS@O8H1 zii*?EKWYAT{~=J@(7N=P_M9FZt#37abI;w{DR3BY;yep3BvOJW+h`8`7v^y;wSqbP znqzk~?-P7f6P zw|)LZMKC~=i~Tg0>o@e+D=yDt&m|rf{K8BaQ7wY)v}s^dFAppLbU-A0lp* zdm)u~=fN<7pV)A|rsopdMO-ulw#<0cjUv0+uLaJkxavqL*f~ifDHCc74GKE*wB#}` zZ*o8|j2yAS{Qio=EW9~gZb{f;g&2qEg}Mi~YSZ&m-N6;DMx>O-d0y9cg;RWB55P3+ zZjk1;|4)xc-uhLGu%4C0#vhHfwuH8Z^StUCTBlRjT-AVNcXi*ZnU!GVjObU276Exuq^d6e_&nAum_THL&d9?;G`EF z`E!ogl3lol;pDPr49h;))&wb3Tjh(FAB=3&TUJzsKa4h&KG*{LA6CLpT-^JM<*y6o zED%h@t%KTjn#UwNOW3TsG+nDjsg&ef-J#=1t#C2j{hTj>Th3SkTbY&kFi*swU`R{I z5Q{4y5R1XsxEffwr$%+m(gY0?6SIS+qP}n{PKOyd+#~t z-aEc=e&txX*Ip4ZcZ|$jxnjBvJ2O!~R?_JH z8s)aXG7?l0KsB&OLWZLVz>otaOIMZRN7+FO0Q+amOP+4}pJV7<1o8X$vJOIM2N*$+ zthrdQQQ>J2eoS0R-|B|YC`Fr{*X%ojl~>zc(>)VQ{8oO8N4f$c83vviGb^Zfjo>758I{gzr% zimK}-$qd^fHyk!sU%j5?R9|^Cd+G7~ARXghmF)6(&ppEAAS1O|@DR+pTfjQi;py=4 zeK~7(15|Ndod+s;q+1nE1j{2{e^V4S*&p0E;_wqp6SC#-XW_u&D_eZNIC_(Q|8jpP zW$sdvJBbA9*DyQ#6ybu|*Z2Hzr+vpwd71Mt1rdGdBER}rCVLEd&W&Z388=EPm3 z#x6+feOf|;8#)<7^{1ln!wz|}u)P|x?uU|ZS1wJ`6ivv)&+po6R|KES;)nZj`jCyF zWB$Yhom;P9bQf3xr@N3FMXDr=|H=1wv$;;pIc_)*f~T02N{o;vnrS0de9AiJ8DG^N zjay5joNir(BkQ`R;rbZ+$M@@XS^unx0)KRWrJ&t~$2*Ek>3Ejl4-XX{?#O(^umbW7 zlH5Q-jspV4e9pyYR3hD`yM}s5b8xF>4@qb|A1$aK9_K#g5mygL_j@__NWyKAZg{`^lq=}{aNJ7&Y$vCNaO3As2 zCM@46c7;!tgY~(^k>b1TA8SOui;cuy)^NMTV7uL;T7T@K#eFv}JEUGqV$P4|`vBd% zO|40Kf%b`wE7A7nsrk+^a911uO54-mk$Q1X8X48NemfcT#+t2xLaAaWYZ+0kUyO_4 z4CrNbQ!2?j_coe3LEBS8V&%JovNN}vXgeHMFl0%%WaYnFRZ!wVo`NngQmyXgDjTwm zFXzWj8qHu$N5=K(s;dsR?GINtN3E-*JBtq6m_H;gOfojyXBGP6qZ38nc)08I9ZlBG z_{4|0rNo<-@mn!AqO66DuOAHv#|uNwjkTiaQ~0Y4$?F4^T53!yTy^uY#wM=yoVA^= zwUXV$YgGBG9;NYLTqa|&1^KmIw%F1mPtafJj@tSVf?==FS1MshYN;eNc0t$5BN1tb zA+NXy7XswZpDmf-)7Mm+>xY)dZBUR$hSozEAhlhPTs}OZM8dOZQi`HCR(*SJX*Vy! z$woFOV%b)hM)O|r4)f9rgpB=w()`ogF?IAA<~R3>)P_dxhr)xRmwsLbldNHQ@42S8 zN@lxBvaHhPaqkS!WLYxH>@LWLc;J*+QLGPBG;>(uN($@jVyvCjJ4n;L2yN+~)z~;# zI5?QbL|mMEG5H*D7}{3ybDou3bJ>oO-;t(YqG~~dSz|qfb6bQJSvQJeZTU=9&e_ z=5dP_f8F zHlkAaB&{y-Hlt3Rh6>#nmH%rdPsn)+P1)0p*4rrk9-ovl)EpmQ_b)d`wug`&;bUo_B}KXJJJ_16o_ z`&*ojw-naNsZWojf_1o^2&02vJhzD_jiEW(#nJp~+28orI*P*0sD*ER+bEb$;t|ZT ziSPEz7Q@5zR^tW?S0F5zqt0AH9$W3F!qSjoD_vy_v?eqyxV~Rs4@kA7gp|eUuiV~= zBzABfN5|2ZL+?(%j7&sypVlmRtCEDDklCP#yP)%3%_pqPu}uVm>HBL`ypvETEp=R2 zj8ibCI!vyAyB0~EDVcQ%(|j^0de?LAcCODo=o6T@25`;I>c02jVp|-SmP@<#2WoRh zJ9P|lDa(zx_oc|_AHbA@t_^?Mn?6;)Y3Vl``}*}>-;D4!@M<53NMl#y!NW%!R2b`0Zi zE%yty=)R5%ap$#fl(|mdhKe7OR4j~R$;Tb}P;3Yn3e8N5hPiVdteADu42_wwOErkh zY?9?yD{6nG=|b_%FwXX0HU=)mCVTu$axOJp1IR{yz8r}D$X=!jztkf*UsF7AQMpSr zlwerGB}9c4qTppfCl$zE&?L>Wve?gAj}d(yMF0qaR7ZQBJ85*>C(@ew$W#_N^m9K(qOmj_8aqh$AJEvCj5JXPq5=OG#yhSq(*Y;yDvBvOc0V9U;ALN ze3EC?D24dz()V4l7uFnq{gYZUsqy+pIL=ZPnc}Z*ITY2$=;^Ws$$SihXtJktlcl?g z3C%XE9+MHF!=Rbf5o3cDk{=djhRe^h;79_iq{Enk;VycR%=_0;m{UoS8``HN!)DWS z!P*6p<%`t1Dvg=bD@k5N{a#}rG)L6r09z$NI44y}3IJQsjV$4XwFLQ{p{*Nb#~WBli1+YuPu3(K|8ujp6>CBLYa13DnB%pQpC?! zGdN1k9o1>p1NS1cdi(QXx|@03;2cxh+eET~PXPK-oZ&>;r5L|Et_2loIy+RSdrjc^ zF5pS0$fMG`mLATF@b?v)9(XX+cW zulckVLur8xIxYu7%!-XL)o4*&UsX{_JKgWA5FngMjSLXZv_sTq>$We1vimqcom}bo z5Ft&H)qAsb=p#SPTJv26BNz28$*0cXzn}b!4s`;;?+E*8fxg?rMMhlmL}aXYzkqW% z$1UM^*4{+G#z@OemBDYHj~>oa-Tt$f2G@u2Cu!cajkW!{;eFk!ddg=rH~GO+v)?hZ z6rf_|4!ej_c5XkjG2Ifqf z5ev=QASfBJjw7q?^Dwic%BY+12)xxWlj(W|!5*-Sk9~ivkQy5(CtKdwcBh0C;HFwD zaJVZ>(8@teRvc|aFFjcM@L0)}Zt>Xs#i+ZgQC?`SnqYZp%iRIm>jw@MvmG@wjI)}$ z7WHv@4-pP8FPZH9gxZ$|#~BDNmKs0Qg}c?h`$>qSH+jA|pkE*CR{d<}eLdtBf14~v zwf-A^74Kg^RbBIhA#Y^iRjk;55lf z72kL74evKOsb;T)SJB`fuhWA*g}K1%07gxA&H%c*E{j922y!_`Xkt{8G4iyKm;Y z;qbb7@{LKsPfP7ekY>9p44nf?mPgSR<*lnM*}pDs=vaw6tCvvCwC53`GM9L=?>d$b zDZ{!DdkRq7<7-Hj7H7kA#m)^7dgZksRHi45Hs$H(*EYyZjs;U&XLlu|@B3PM%3)a% z_8XyyMP0*>F)WH|lc&Sgk+XNh!dUz=ScOSt`b ziBhVh*3gwLku$YuO!PCPu*;*(cGtJ_)(hEM?p+$Z#Rp$s0MWivLA9~89~}|xmJ2Nc z#^czj--DK|36<-UQIn*w7NWoM;eAN(un*Sb*}*<367uDFNZ?$b(Vh=HJWw8-Onnk8 zvGLb>8mS{(khp$L%i66W2UhU-yV^8C=Eua^hDA+R6f{`?$6fT-ut@Y`A&tmnE(G6r zhXLy`${`|kiD|eh57b4Su7{+P9-_hosa6NbdKrWk;8cx;{a(2`;l&d8^vL(Gzd0LDU{G8;W%&x#;uX$Ym=KQ%tdRl4*+c{i%8}7cPeLbko0TktE5!N(q zaq#Vg)l^w}d|xb)=%1qS$UgL$E3`~C^&Yq?T$l9IE9%yyzLB<+gZa44hYL>B$vVOC zgO{x}(5TFqb+8>Do*w>u7rBzbytvzH1s#0)uojE!_5@TjM%lrlzo+UtcNZX9wRv$5 zdBs9=S3UI1=i2De5&69q64!d79E>=&KICBQ>{#$V<%1S!TRR;ST{5J-h^yWWD<5Ci=dN?R5hXB%%u&q~|sh7Kop` z1Vwnypf^vuOuGub=)urjmuuTuCk)M^=xB=GIoa@xFAqYZMCfpgiY;c@+P>cB*m%CM zZNE=FNCzGE?OT8;AKh8aUqU1QSW_*U%)`7!IsM7|cs(E2_w{}C&Gd&(;aBb1T_eI) zzA~2#>a$o0h+?Za(VV&OiDH^&0I($Xq%m7)`vL^kK~aID$F)fGuBdyraGZ$6GRZNR z_!R`A%;LI}9FYrvorN1h+(DkXsy(*OQMkK7fFBM;3V~~4! zU|1W4`iM;okD3jWZnpWoKVF)|d5ksI&Q(vQwW@k7xu2gm)defvyt^0H1=@GL3$Ol%MXeF!U<=X%7on$Be`hJ{s}@QojS$`*5HQA1=qAQnJndvKKxr?raO!=5 zqPh8RqAf<(_+CXQWtzao&o##|^oI=Y=}C0bUluPRpA$D( z@~{7>rp;Ue2K4abg-kp75QyyODCstm8rtM1cQ&?gTfT^ltfF~$`eTs^bIdplg9?7r(#2a}PwRPJ&5XT!`-8sdmROyXcBAi-L~ z2LWy*a!rS=VOUTqv~SsVrY1Lt2LWS5xP9eQVXb0SF`t~5vxvsUZqjRL@Bt{u(=8Zy)0vX zh{oyZY&@#T(;|i5VIeh~DzQe^S3w$i4#N<_liKwLHmnJi={nKh%vHMCV9l-m#lKgzg`$`RG1#&ZVt;QHmeyEvG&7l}#UAy7hJ*(} z@HfaqW;_}qk}5_TtEpyc4`*6e*>P!+-deysa)iyT)_=0~VK|z7Yf9uJ;@DgVJ_Vcv zZNTZ`Wsk<@}$Bx;d-*(5_}bHs~yryPBjeM zA=F?w1w9*>b~+BprQ}jgaHr>G;ti=Zze<0MJM?R+F3ty!`Sd|1-DJKwnzS76o%E(w zN?dWlds*klzH?}2+{jPgKVt?~E3-+`uzO?m{QOhqur!Kx8w%V&*d;W9ThJsWM$-Y^ zYT58X*yZ4xWB*&xu$aogYtc{Y9MLu$~SST)PNc@FXzShs0;Z zQh!}|EO?=KzuaCvFC{(sHOvEg&69D4e-TT))x;RiNO?vhT2nz*=QF18eH@bvo_Q~SmEgA-M(VrALUJ6<{RGWKY#d&{K6s@92wAQB^dyE zmEg2D40{3cpg(U|Kmz5}dj`Nl!=YpU;fDw-tSK27m@G8ly;dQxvPgvqQsD<|0>krk zfa18fF|#n-@maXK800!yx}GP)dF5&nY=KVRx!7Bz#JdSOw+q9|Dj7R?VWR!_`6DxA zj=n7sr~%3anFRR~AnCV|q(yF_`o5kCq2DpgBXjAUKL+}Uq^3WnOY{lT4Mn^!GjFRUU>$Qb!P{qykj@RGi-F}NXr>5Ist!) zh-Df8;9qyHx}^*RGvpWG)Wem)`Y!rDLR;HkdO) zgQBTQP%{`asZ-jE+bf(zG!5OWRU{vJu2~bcPk9DxJ(E@NE1zOy+e|jDlo(d#<$Rux zV-OzyCDPfz>z=GfA5$5`2|M!6&GNcOUj=NvJy%s)=5@USdY8%~;Bqp9$WIaVz`mYB zV1XrN%6TTK=NX1z1W&Z@fLjzXt{>@3$P4l-pG5TMu~#sn2E}aHVLb}``_4XP!M`A_ z0M(FxFA;<>0*A^kl3sX%#vjL7)9Hb-V~->4eA_>_<={sZoR33GN?*QV=KfeC|SY!e`6x;d*vFdd;8Z*yA)aeu$TMQb`? zwHgPKv?eopop8#13P)Ye$GLV())sdYA_}m+H-=Q5*vQchR1^V*_{yR|%SGaxH zm&5+a6Jnl47S5^vlB*Ib$>3sNVy0Tvbj0$82yi4BKQv!5`|MhD01xw@r0abt{+Hb# zKz<_S1W?RuRYBhXq+>p8m%+lzQ?>Q5j!u`PumE<61Z%F;fP-6-0Cw$<=@o+pj(KOw z$%_GL8g!#FKkoBilkSK#q5Z2|r688Rj&&3a3E!+2w?-;Ivs($vZ`QxR6t=-lC@Ma^ zrX`Rms49Xk$W;NtT_%}W-O$>!ipu@%*IR1cB_Tim=*OE<1doiuEM7itgr|M7Fl z_1D{B3BTX#Zrq(vWg}AA?Z?BT*MGFDb8hq2;PknlXJ_>(6#sI3`A9WI!2ZZJjw`5j zOd0>}T*48JR&4M3=9KU#v__DTOv$ z5{K1K=FLJ!=Ne4FFSf)l<6s&eiaCtP>1_hO{D-nLj5 zj^&VzYv?og@`c=}s~za&3DQ_79>WMmYkG=+8T=~)L4?B>i4C#-qi5RvqC|Rx`CctA zDEc)j-dj3Jlt(%rZSP2>I9K{sY()%u&#wq8_;Zszh#i1mz}4azn^OJ{H1ZqcZ9k3B za0En>4%RiS;H^lN<_0~ID;2t~4oA$ow*M}WP9ktRzkgH)2qAopHAEFK%UJwr{)5S~ z*8v6VG>Sq1P0p__*ic*MXh3KuVroqHDFqJpH;qM_rEs1W`LG}C){5Mzqf~lZbbB|I zUM6y4pYI*`*EQnJ&fNr2j($D z(zNJtQF|PXQgU;xi7VDuL%3xV{f1NeIEEP$&76PL^QkaYO>(id!+sN{s2M3MtuUzV zb;j2c4W9KCwvv(KpVUwB7CC0HZas&)7nulQX!&g3&3H8hL|2-NZ|JzV;azj?)n&S? z1=EnZj1f(F35Qj|wpCQxT<~&}5JtRWtyU*4uJkEl%ogsuJMGmi;%iw=QP$QB9e7*H z&|(uE9FgE%kHz{8OI@u3$r#7^ZW!1Z)P)%_v&wj8@w)C5v!0u)(MqRWMg46W0I~tL z`l8Tp)goL}W}Y7(hbw92MkBX^Ca-6fl~38!PrLAT?&Pu?rYI~@9JYv6_2nd%^5qarsHO3d%mGuzN5E&wwhAk(%$gok34h)u~R{X z(pL%pTg`37r`&NgfYt5!2lB7kt&t65VqsJy-dp%;RhaR z=nW9k<6d2^4Y3WD{fsi&^-zg z(7$|b>QGIS?2~OnlOJ1q(dc{5YjeCZl9K&oL4!A?8FMHl&SIj+NmG1eczyE-J)>y}IQs!p>$nb*Rn|Fpw%^?bRxKvbygzcb`KOO$|kiXL&*&!#(QN+Y9N7)l|5b zj38sF&cR%hK;u z4T-a-8HK9i(nEO_k4Tb_N9AqrQ8+$jjEi!Y5+w#FG}<_sI(96_E-4+}aW3h+KJcSZ zXW#xm&fETH;*iXo9RG&`0ze#+9ii)8{RPhet&>n-Mj!z`fUJZJb>b(4*U3|q^C?2y zh2i&ColX%7mExhesyu{-Jg6}{og&F=d_HBe_9gj8hvLn@t9al0$FHWd(R#D_vbVEF zUVq^1+TP7w2Vycw9xv$O(wHPM7IrcUW$bQ$RmXA{1VD+ch2heW2R~4g3FB(RM<*`z zfH}r!SzsnEG~Bjt5;COH6DG&KZ-0Y2t0|Eq?m-y`xH8xy>qf0zeZOUA*DdR5l;MS~ zFmx4vIzBUh7&KBQ2H8G>FyG(Mt9S}l)*3lj7h+A|T0%72u_Ou*viS=sB~hHt1CHei zG6b_~OIeTqay7KgD#29BMj@OJQN(4=!dpeV2y2mU8f=NO7d}R}31-EY!ULu;v`H#r zVKziyo)$NBiLi$~54BNc(JxHCB51NRWLF=b4xBt9#fl^_5Oa6bN`ZHOAHHX=eY;@^ zF3P=w;6w^7BcFIYpVN`Tt=YSG{?0HA{SswrSJ9sxc!s-)=vW0W^4r-*@ z6vcPo3WoQvG&ZD1(Ebr?a1E56^^W97>;Zjf1QsO$G<09qWl=8ew^b(*sP_RFAsG}& zH6|D_pjCEmyB<>1T-uKhB|0g~#>8n#QDYTpSFQ8Fa!pYxPgoyb&u}7Dw)iHPa1j)^ z?L|O?YZ6HYpT>W8xm!#y$Q|M_4A>^R-)jN(y~RrF@G1~7(OP;g2TVq*(yQ2i1Z5_otFMEgMKpiSf_ zdV_cw3?O=ATeC8kxoOu!378j9o)7;o9y2KTokaj{F;^oxw#yBp+Via6r3- z@TN6v<&UbApdB>HfYZMKj|USBKAaMAr?VaV3evdJvEu(gb3!GL2EpcczZ*S6@}Ztc zG3G!wROEU5ydBSLn3jWORqD%@1M0E}k{&5TP7U(LN%SE`{Tb$4;II{zHtl-kflKF2 zPPjc4bx8qioQ6nekYE`TH8=hEB?M^9Li-Jm{|A8*9$u?_(iTwz7nx0k4>V$?F^m*H z8j5te{%U zi>OIUks6Fh*?!}BB5cGa^AA6_p{+Fu6^V%*?8Pnh;dbFId?)KrGP4#tkBipRP5kRC zcei2dgheJ>hMcT(6^SvSA8GGmkMvp$us=&8B;Ea$6mYq^fbTm41pqtEQNjH7Yq}mwyxYL>YO_dY5 z`UFM(`7DrALc@Y=Vrde>F%@)7?o^;%VS-W3v_uAULzsg~6Kfd53LjL%j z=zZ^6awl9h3Wdu`HUKSSY`~21Y_IRC|MhhBPPpaM85&)|C?-Wj;C9`epcD!TO}~_* zhxa)d+dcSN?{~fZr4hmu7shR$FXh58;dWvDLk_af4Zw?|FE_K7MbhK0X6gUxU!gJz z@puB&HznXt$g`a<#D8mV7Un~YABKPu8XHFnwJ3}RNj;_3I-OTds5tfedbpqN{+hE| zLjw zQoA$}ccWt{b=vYP%KzrLulDrsG=-sB?0nnFrnnKI^&w;a$#Ic?t^_LgCMn`BUcs3c zb@DUwBK`rlvEs*~^u}gFin1Fg%<0hd!oZtCq^iOxNzikyAt~4EL@`hnQL2Zm)|bF< z7Hf%M633Kp0R^@*l|gbcRS?}UvbpoccoA_gax&~#RgP0u@unYpr8eGV`?ohz=DXk? zA|U-_to_pa*y;@37`gW@5FEj?nJOrI;YG51zkv zW@q(if(A9U3*xs*IevI{|SdBen7RmqK8AevlLHaY*t3@-iCsABWULnX_qL8M3 zZS2dbSpO!mGOfjf!dAEygL z{4*~}+Z1Cgvj?Dd@hw%_-^yMkR*_G-gHC#mCxtgFoRr^JYxxp)n0$;kynj4n2&A5A z_U+F|PvvJ+TPuxgjz+rXisjDY=wv zPGoA77|P%dQ5o_Gp9~jA^(+wLfX{yLg2R~7P z2~jP9H!N5K9LW%pafP`D1W1TB&D5cltf_wnk@b4bXy>JQfvkj;hq8-O-=G| zq9O1g%SZFyyk#}_PX{!^@x1@%NppRMoI5qE)!z7 zII7ip@+V-J!6Q^Nq{iBwAF3#sjNI-<)O;U7pR0>YqBKcO{m4uR_IY@e-G8rL}}v(;}2*Rjn0KGIFrX3jdcW^tq%u6 z0>D-}7{AmS9)uF);~XWc19jP)ou>=J_bTC)Gs+ozIRtVcySd@-`sKI3Ue=qv$N?KF zTLnWQ&`hAVa;z?U_Pe&9QVSkI!6vF$*RqrycW?F z7p9r}?ab9&(wE!~e`-t;rKVWQ3erEu2G&EYR6=lC7Dg@xFDu_l!Io|Q;U*3J1SRu- zFRf(wZEqY(4+<+cf@R8*_66rcA5eD6HZZp)7?^_NwBC;}FWb|B%nO~~nuJ_QOPcbE zeg+(=JTfid+BY0wQ#ffm?vRGXu$^83dZay4zhP06Pog&c+B$qVjDJhytd2f$vtW&P zW%K%xwr@%|Jd8{4Z3i;F{_AF!l21jrnK)@l&mu(X2AS(c;K4m&5S33w5I!(gi2Q}} zpf|>sKF=AZuUh%UNk3|h4<@_TI5VEt zmTvmX)r)&VvwnMK`fb&9ibrcnVw4pJva$`_#AsWc&vv zDs9gnw&R-U{p^8zLsVIHfh;kZDNVhy+vOL376siJj?vZ8JrH^0(FekI3^6z53h4r^ zDuZN8WcAj0uB$VhGj`8Yv-ykKZ0RNG`^WiY)Cg)z>3ozjg1y%rr$yq*al90N6HH+R zwqjM?3}K=y=Y_V)@)m4NN$)*UR=-baMNF98Q=l&Yn8v|?a$Uo#3hkcSw^517w5)#n z?YQ|+?$9~fO2jK}d@ar~eYu42_$x3cyfY-}SqydA$KIiFB*>S#m^`#Pc?!ghZ(ZkY zZVGCIn8OipXu2Ce?Ghk1|B)ZJ{7|0T%PI5=uGw;;4o=9T@lSVeU#~2F+TTca%_0K^ zsa?B4gUx2X#UbLH%`TF}Zq$ZC2?ME@2We5@vWAYEpM<J@OukSYU?;E50F6Q8KFe^$7#JYLv-YlEnygroiB)cRC2rh;YBjGnVB`r+n8 z6oz7dLp8}@%hDnU@Brllm5>S7Ve_QRBTakIM(oZ_iO2-Hk%yFG3&8LZ>IdglkAor^e9w$e822 zJlyk3RvXLw-`jfj|Cz8M3p*S8e=DQKACJLnzU|VlJqF5q^#$?=T89Q%|M7zia zQ7&Rfu6y&_3B=wnA9;*|{?q55I@-2xcg!TTS9@w|Am5|j`yOz)+$hXB@Jf;#jdaQf zYyy)BmOpuFb_IbC?<+96S4JypAU)G=vk@XazZQY;!8{r0`}52(xL~!fwl+W6@4x;+ zk{^81e~&Z$tBSTR>Ywepem>jPSF^r`iXNn4k&|ZO7R>p*-|km4Vo7*xlwaFB(ejho+?iT~nI+Nq;yJX7^@O1DN)0Dt9DJq#7<-#9#Xf|efW zjAS5pB*80~vO^fzEFm>Yr4bn4pRg`v;LEC@E=W-5bM-Kz0_KL}lknac>^Bc3iMO?4 zPqm@(seJZvmAh1B3Db%~Sc&*@wLK?we`?wL+p)JWE!;axmyP|VG3*qt&Ai$7xp5v{ z6QUPLEKv)%Pd~bZfau#=??HQjucI1B7!BVlp-p<&aAqKL6+nRC z$bov2>4ETp)YfvrdX#dI-Syo>Av6Z=UeD;D(m*e$8stgR?g%%7CcFV{mVsP*RiK#J z8EAzOuzL|XO?p`8XXOGLogd?Y5I)M{*Nj}MRV_^O?Wa1&!#Nr-z|c_0aJ_8qL9n1?bMeNTs0 zBBR5CCE#)lFX_0p;O@-gs%_&W;D-B*r)BJq+?j_nISC}yp0_}fUDJrU>gHdrajDTcC$L~l#^U3O`KGLN&hyw_*{>5)AxDq2lSbExb!hA zeAc7(`+hpTI_@4po4`%?YpMBunf_eAK6jy}mjbuUe7zGtd}W?%okz5u=1*Z(aQyb< z_?|f?{QBUI4k3GKeFXi<6sC583&9e3f63%BLjtkiQE;x15hbU{QBB6Kl{1?1qf63R zta_RS+v95)70<~a+rp~Z7mv>OJv+#G4M=>g#FevMit;ol^e-oo@7-#4UC_Zdm?#_Z zUsc?tM*9h;6Hth$KB#4>_-JABkdZux(;Kn2EU1OCcSyN@P_13ixj=Qp{huZ zAB69pu4(GYr0-PGN&WnCG~(~8sa&C|y>wa>OA)fFrCcXO2}h$ie?hUgO8Z$9=NyD- z@r?Lg(teME;yWI;5SvJrB?^C^ZffpC6_$!k~M#0hTi2P+jB#c84 z9U`@@=io5epY#AeqUA%KImVC+R39TqA7u!c{HQGukm~xp`rvGC&|&F?DN9DoGu`j@ zeYqX>`wFbPl^N|<#zMWon4%*+;+%ku@zCIjP9l55Lx~+!E{TTL0?v^TAx02G_UZGC zX)1UVfk!!UVEX;akE&Pu6F89%n^?*Lqw+)g(vuds##}E1edko<~KfxwFm?ku+ar$=#yt1V4&$SAzURUtn ztc{BTwlaL#W-3_3wY67E*ti9Jx{Pie#Yor`5;}}7zLvMcVrtKI@iqM>Ca|*YD zFqch5^k`L4RCl@6ymEJl2$ew>74V+yFjsYSUGy+z^le3S!~sp$JTSe1*4QmZ5=y1y z1;u1A)j@kHMMgEb+YdcEig!rH)eipb?IeuuZd54Yo-TS-*$-Yk*9={9n0izXR#~`s zhe-fcMIper4LXJ?HY5D#{P>}*XrLCqVOo^VF_#3XsjKP?YL4vCoXwj%RM8Mu7+u-3E@P_%#;tLSHKlo)&Dt z_1{n|ni6;4X>g7p^KY9k)25$)?sjl?C_)Kf9R3Lwe$Y~c?1n@xmpaFvM70)Q75IjC zLm-Nkg;@0#U-ecYi>tjA<9`Q>zNm-}4hXhhB`R5&r#m%s^h;3YN#S?>>Vqpt35ZVp z@a4rg*=kB9X)=Kd7DjQ8nd9auXhduVjTE1wFow#pmZf4?%J8Q?M=ptJ22AN)_$r|2 z0-jEm711^@ZnnH*5c1|2E|w$>qbj?iV6&JA3PuMyh-OC$iN|gXhOxZC80=+!)C96FncOgvrbC_^;?$c z<3xuVxEvmYiuK>5S%Uumf=30pe7Qq|2ua5jNG=8>KOF#Oln0SjS z9;Fs0v~8Kt(tG|pr{KwGLehls&TGUV3e+vi^eWCj{XYtDu`?72ystX{Nc{n0zRWLo zaYBnomG9Q;VEEu3&Te8G^U)+a^Ld_GJYkqEn#~eE8&})R(j08!20`5-omzVu`35;U z@@}~ZQBJ8aF3y)x^oU~Z${Lv4y$~e4!I)G5u*9+tmulL>xVY@Q6A^i`k8m)ojDu^l zlZ_3z4sO{783E!J9$|XA2r%kn%mSYyK$D;mhVoHT_JZQhZ5Q#|UVAaNbZ%9#@{!Z) z@}@0C6xU6h>x@@bDV4F@|5SZSKPjtWO zeSC`?-qs&o@kB8qr6y!D!X#Vg(RncFGr0^haavW2mr0LZncS!2#o%?VlbugB+ImhL zoGX8dtl6Xl$^Ez%t{EBj#f+wl?EOgCU<^5{&ywqfrVNuYnwSblpifzad-ez<9%qEY z@5H%DfvfzvS8*3{rbty$uKX81TPmT6m2SLIc6@%+SkJkB;TkDZ=pt&w1A1JJp!#%o zQd3%?WJIW>>1#H=3a>I&cLw$p8Oi?46@4`tzB%2k8X~a?YE=TZ2h3~Z{nDi*^;0X8a!{S!%;$f<4VV8X%;o^y)%=_@7Yu^ zue(38WH;A;>RzDZSUD-aNvsIWCRORUa-rPiT5&}G&sbPIMm2BW40 zHCG8l7b>Co8sBE=U;+nAwoB#^vqEcsg_%1?oug&*ERKwuaA!;Ck88&G!cNF_i#Yb9 zsJV~hnl3C|S(lAQn*;${3}DnIE_N9jMrV@98u3f_n32XD!?tp}KhKxRF;SeArr|a# zCNND^u8R5W)mO5nmp766kh_<(Y&ebss2;&q7oA)1(NiGDQP>KNTGYAjFm;pGNDm9) z2u?f!RLA?~LWv$e13=frCH;u)?0>&m8FWQMO%GgU+(=m1mJ4x zj1QJs;a#46BPLvD!r@ukz6qjd_|%Nt*D?lvQ~S#NzO*EgytL_zR?QhDsQD`|M30RPpsK(NQXUEG5#n~#0O?Rl!_r<9pQN+xpq--eh0>9E60n5l z%(ml93_7 z&!8?=yL^@?rvnzW8cMuR!wgn0}HpR3YDOWmCQqaONGzOnX)vn{p{ zq^NVl@e00Ogf>1JEB$^#s^SBU+}(j_ni4JTwOq zj4dvn2u(B{>0LN@%m)Y`&8=E_Ly{=Fq)jZ2PtSy>$`*?R{H;)|R!-zgj$S0sN}di1 z5uBnkj+!DVghm9(%R+p17e=5~4Kj62PXkjF$F0=yVf-whySnl=^?~9L$7z)mKhw0TugB zX#twqZLNV^9#X=?6qk;~fxNJ_P6E$nw&kiAzNYEk?^UnaTMYsfBshF%Bsc<=7C<9> zlxe$;F7HTq-%Mo@xg;eHyz)PUzt)FEI9`!`4W^na(prLLBwugQK`aCDWQGV zUg>2Al9#5a!pd^~6y*3L%D_u(E9tpKY7yEMXs%%Oho{#0f8Fja*jJoTK zz@~rz{h7R`WER18EzFK;e2aHQgto-&t?+jMbzROn0>!i{$E5K>=Y0WQGVDnspmvx~ zLD#wTJkO&MhYWNCZT58(an=5}Dz|X*AwQ!*M%IT78C->XWq&HdqM8h^)uQVJK%ow> zDCAStTff$B5;D|aPD7K=Czz8B&^Zj@X z{{48o{4K0h0jjj2Z=qM$Cm|8O2CRzHzC_G~!VNtC0go_>dgV1%Q%yXH_5pXCiu0o*$RNf4=_e{OrNVtG1atiHz=m$<4!2S=4RM!a{z^Ajkh0v#*M>O{`yZWwX~A zbbxo?>7+3@QEprqzUi7R3mK!Ja0C=p0fiMMJpv>oG~NGPjqUb@qTQTKeF1}=VnP3h zDA)gvgN}vce}cvTZ)H<1!QY((g4I43m_ZkW!>bmSASA(975igyKs>?kAJtjq252Rh zW>$|e8o)H6BDLxRRhdT8e8card87XhbG_Mm^M5$U5jWpdodwspxeXBhgBB0o4v?PZ zdbsw4o(+GO6#J1XaCn$ZQIhH(XR$>HYb7H+bqB@DV<^Q22u;sjmgU#-;AUa*LxKlr`Cx`Qb$aLt*Uhf6lDFsed) zS=oSWbx@M>Xo`BS?2iwE+g6}|VaI)CQ@9%YAj$yOBwb=gnZfx(G4r+N@XWvx#ZjvEw=vRS_Z`2(~|P}?2rFj)pv79{&1q^ zPkjKt>PV)BSWs#3Vh@c`g{xHQeqGiuI$>J65NO_5;$SEBX4&os0kzK9na~N*jR*C- zTGdmjXVs{S%uDwDlWRwi@V~lrQ0p+P-_H?rEE2b5t9UAmgv2~4ra>46XrYK^KxtUC z%T+hcPz}X#H|=eD$HYy1?X?sj$(ih^bV%Z_!^yX(cw8j4CyuvUbjLyX3t>$JjgnVQ z9R0~jls$nn2K5kG@oDk3)Vu0n18FrMHs`ym1O~A8fD=&wtYYAfJA~M6FW*MN$J=Gu zalmP7N5)=m8@pa^*5cit5vC1%#*Y+@LW@_2=HwZ2a_U+N;`vM^O*2D+I%9^btsI$A z1qdko9+v4@1?$E0tK*L~h!MGTi3CMt*w>l8h$st_2n+a4Cb$_nbo)vt+&)$xQ zG1bF6FbhhcLux=)6nrpJAa=!|glzSt3ud<(_e}kTih}ryw~aboj0@l`4Gw#Tjo6y? zhIkhir{2Q4GQlSL?jOu0#Q7t=`|*39cVRg~Zv+Pr-_yh&BJbd60XiUCeb0fcdWd$( zkRcg=G4x9wfZqKcdA2c_LH5#kB*s{1#Gm;lp?ayd!RiT)z_u~$K<=9V8U6Kpbd}_z zOEdvOY!$@wOH=`$X4Ji=dV(PagZ!|mjc?>eKUDvfz8s<)Fh%wMqqsYO;#VpJ*gB23 zAgkV+K5?}(l5Io=G@M7(GcXg#+7%()R5|9}6C(v=Q8hEv>bJf(FkC_dY`svl%ljji z!*`|Qp16>|^JExBc0U%{;x*|D^GPk|N8ky1fj}OvFJJBlTm(EnKBjb!cy;$ZH4j<8 zHXiQBvhp2oBXKwHpH2Gi(TkeSa9*Z@UAB@&{)P%ummz0*B}+)puE2>EC@>fwTTaH5 zrVVp(bf#$2%rZk?eWy{BV&(S;-6|m}n3YT_k1Gr#BKU8kklF~Z0S18B8*Pr3X{-z!>Txd-#ZBvSteTg(_P;!MIXBunj;9%Y+ugELDdx3iIgsMB^?~L0pgXA`MN|f}9C> zgABQ{fv8o*1{A2?0nkX_)^i;b{|hSV0i0Ivm%-s?zB^wYwQ>6-aWa4Z8t% zd6uqoo8`cEz5md{&RMQ{?qk8S3T(7n--NSgA%9DU%3eEAmE9Q}Pu*}BHG{_xO`egW zB46c$`}rpmC4w{;sEv(7C+5er#1Y!6vDcgooc8spWeBl{o6d67@6t%sfPGi}xlKu^ z4ZoPUdJn`-U?StQO*u`Xk9}DQ7kP3QF4mL`W*BP1y_I|9EneK}Qt(-mU{OO~1Azwx zfvXqb=*H);O@oT^ekc8@NF*gMkAOZp3ntoJA3;FuLV8ipef6v1X;M^oc{%P8x~fxF znTdpO$xIB2sDFK%*jp3r(9&74$+%=eSf*|_t{yfq$;CHoC`wncF&8s$=LN z>`EGM@F`qoswg>WW(72EAH_-bOCN z`OG93Ct3F3)XqTiL4FSkEg13J*&DQa9=7QLHOBaNc~XHW5a^8qvRgl&C)9#U(VdAgAGe#Ec=QotlRDam*z zuQOa;N)1QUARg00-x(!gf%n=+g^3Dx$1-$71O z^Zcdx%Ea_8Bc=8hN>D6;5sqXL(urIujJ#=YsFSIryX8Cy*DWY8j0rZ$P}`>|J+1M_ zOdG!jv-6D{r}=R%%F*c?MDIk~idrnCJd`<(gGBz!A(BEGrIwm|X#=+reJH&c4cbp{ z6t_De?*uyK{m2ERg0}+#*()#pnEOdJ%c%{ahKHwjoFqn}r|o*cM~?T9#*p#qNx1JD zPHN!|vHA5DT9E-TyC5uSPCBa&HD;S-1M2X}=i&x8eBfmmbA?wIMCfnl7sT}}L{Z%O- zx(%UsO$Z#qqe^Z$M!)T_m(^Q~5h6?&+zVr&oH$OG3Jl~%e3VD^Lz6O*<9cu^vPUFa zv*e5#B?=PsFvF77w7~v|{&t45Q#TC2n*w^02Bkcq5LFZpkf?VurB6{&Q)#c zDk@l9~$IaT@iOFkeJr7v$MWL|$lqfQgI|a{UEwqN+NhH)1gX0!^ z+D^}DzT)q5=kE+uM%-Z4=-3N2lw5Kvx#uOV_H|@*pl(91!&1un0#xR^N31hk5Ht0? z7Q|!DUfyq)tBc|@;lNKy-SLjNjN^$j2a*xV9HY^Cni#Hn(R<*TxmiUt|?4s5?fNirFJS9<0_*hnMIJ@0UWDqoubB?h4FGz`>qGLF|p^J z`}TAx%mGywgz-6Vp-~dPW(A_M6w5~JVO-wI#B73uJREGlZ4S#TQLmE=hJ&W)e(;)1 zo3JmqI(D41Y8!Hw%4D9>I%fTd5XKmE#<; z^)}1$WE$&ml=@ZA14lDDf^kv7pS`}@_>(ps(BWTarR`rH*p0GI3c92L4C#l%zF_C776cUJ=KUT<^JfXp?zPx~`#woz)w_b59Y zys4HZjgVlkv4c8wTt>HmFu5nMeFiR1m@ifkba%G*c6iT#Z?;MB6b0Pwm zJc+1& zo%!^YYl^Z!9ySf^a9RtH(;oi}_z~ymuc7plj#G~=QXV$YO)i*Ct}%y)!E7ym&(@wD+>^{b z3=FO3y~ke5)v7VS4j(H-?Vd~A%ApG{#z{u3hKolQo}$dX0L#!uf(-HLZ$R=$?!S*FNKvGM9l1>@%YljaAHUJvNon66K{6gGSjTR0SirV z1G+(bDJ?Cx!^FrSngQMk2wZQJm>xBs{^!yVz6NRO$KLmOaCUg!YR)?qF0d{%sk4nT zT+ecWFJKtMTjjwi##}VQXx-2Q}T!uN{IvgPo(NOpu3l3ab>xXdc~nj+XIeeC+686gUcpbzCVyZ9?xE7Mar zH2xXA<;s+9ACELk-qMy?<-Tq9B=Ra`{FgEQ^1DmR{gkqC4ij~FB#*J7(oBE8A*}FE zr*|?+tCHGjmeI{e&+kB1?TH#eV1s>RZNtst=whZCwa1IEj>g4(egb??ZY{Z-pCUT8 ze{KE^&ELRGp~uRjGJMKWa=Xs&;#NH+xXa3@l7#Vpn3UX`zHZVo*1vchVzjf{&jB*P zD?zt+mqkm}!;j~$?kjFoh5I~M`{2C4+tYeMhc{&o!4h%ii&v~nfcMihd|28ucS{&{ zBc!~^!Y!Q?E3Bt+0y{%XxP428Y*fLt%fj0kWa(i!K$j-W$7z2bA~fx)I+x(^!SBQI zMwtV7;V3(SphRy~Lbj@6xP=Zi&~e?GM5CY!cBcGr)k+)5dL_oM+F#?7n-_c~FFXY+ z#P8BTa;%`bMUD;@-J~o-L07+C9|hsnp+Vohk=pFuD+ZtCU{axAe0ZJ+n?99$(9o8S z$E}l9rJ&6|ZA%e*aJ`g%)W93Yam8H#dS(BXNRHp7{VkFHwv+X5)z&`}>nERZjGZXw zLx*TyoTE|LV*bD8oDM6Fh?nBbLAIi+18y&9ONShEOQ%i+|26b<(?3JsaF$72i+NdW z0o=sx7uuLXQEHs|wK~qHpJEjhRgv1$jN05AKYeS@1=q8O zanso;Q8B-RZ0Ju z(8}M=?&K3c;z{rQ55nNgvIMO3`Zng==FcGy!A(&6GapjxW@}g6z!N^)s~uN_A&anu zm${fE5=;i53|HV|y)H!M5GH{3Dl&saEaM3#M?S*g1Xm!2KI&@imGdGqC!$PzF5>L5nOAPs^gNs(uGnSLuV^r?sKJ?4U}rlInfk z>X>0QPTVjn*$U20x{9dGeb0v$t9eo(980L;0>u*x7Y$$$q_)JGXAQegwTq?5Ay&eR z1`tlYs(I^CFKz~V^ggp9i#IJYhAHgA-Ip8=kL|QrH|*eNK3%s5AKgNRHRgZXMnqnb z9P^1@5xvfcBsA}}A~~Wq{i~giR~Ii6k;@G_y{KOp?`&#L>!E2Q$;PF2y{3dWFSY&7 z`|Hv8>1FDw^W|{^D^C{8&E<6bHDycS(WYz7>w_I*pUMd{3zj(Jny3h+ zpx_ZEF;+@Or$|?R@a5o*!29`RsAGO5UpT-3w_@uz46{1mm^RE!lxZppYi!sWmtSF? zMf3q7pbzv>>0Dm+0_$=&mhpC9%#h)BX)e4M<5Zt2M7+Q65Xy;@gG*$D*Vdk&IfNP^ zrgEw_p%Niq-h6Sak^juLfp1DUq|dS(q&4B!th|2}>I-@C@5k8@$)8oT>4=8%jn}KR zq)`SF_Qja-go|Pu5^*Wix%x9nsV^r%gk|CqU7={=)3Bt_)$qsT$iJclr&;*vgbog; z2ElWc5@n{PN_KH91ji{nbD(-O2lG|!uka=23}{5OnqxeYWK;t%mYpQe zywm4L9m+P;0t90C;mmeJF4vc5ZMSbTcbTJindRXv!y>RcqzbmuF6jqkv~pmagUeaXC> zN^@04`UYmxgLdud@62oKineT6PT_WiVb}uE7DD!2pMUFYX#tp?xa!&$r3l7?OZpx6l%j7S|i zUvaD}%#UU9qYn;%dj3a?E_IgXWxu$J`}m`!uMH2 zyf^*%y|eqI;i{01W-UkX)qv>mVzv<{4k0tIftEpQxfn@4h0R3jEN`A3o(|ySVIBl_D?-gimk=&!U>)- ze&a8-gBqJ!Mvt@4BcyVZwG@}v()d-r9J*{Fj^4LYot%#&5zLPdViE4+f95eL-%CL{ zcF-WvvvL^QqvlVkIhRTU6H*Z8y0&W|#-|tB>`nBP4t#SxWBP*w{Va&)G4=RiJ>p?e z(&P?I`{a+o(kj<^E9A0Q*FMQ=;5d&3wR%Y!{~=P*fI!CLwTU`q+zGL8JQAFmUai>L zY^nf{^tD!xn90TjykHVleNsHjVp9+{88nsM%3~=UNg4!W>{DCi3d^p&Fv>(K)G1nu zmW4@Lj^rauU#uo()UBU2;a;qLL#!qrBJkcX_Wbgw_*Pu7RXY~vNGWN59-aYY$3pxR zI`C5;G!{>8EmQ|UY^pt7<`^4J{|$#%>W@EfA8K14?<%9;%qOoGdE~y7Jd#=KOODT- zy0)rT8T0oEUG;=^QCjj<>%wi`cj3PjcwC(EU(i;fmDjz~4W9N;S=5tsbhu0qo}R_! zqVquqx_8DF$~H4aNI5-=f8^D}VuHG;zWfR@ohKI$e~TlUa%&jc6m&o+!Ajo;|z zDAxE;FHrMQM_ePwe_eGSP0gP|h3zi-^SxNcKafctcz!#<^r@V6g+Lnd9&||_2r%LM z`c921svAHG<%F90g^cJz%@65OM|*@c@{dZ@qurVd_jxiDu9 zLo=!9cwoqcQ5U6eb)A>T#@iDQp?%+CwPh6>?@_xN8l)ctq@YizQM04nY& zT<%2FLmK?q_zDEs0u=6_)T@c~cRPi3kAF#W+|S!){f9bz`7ID|dz9Kc#xk-G$^-+Z z-Yq{jG0zI1nIdlv;HO6mi^c?KqG^$5E`X>Lg~ePPEm(yISO6esd_K_ABE3VfXxhN@ zB0q}3s09Ut2AmyBRIKtq3DJ4&;fOqh%4h3{g?%)Za^*1dTaurJbgw zi>$1aI#DFlJV9r1a|esR%SDRBDELjinn(Pu!7@>)mPy?cu($0GFuzhM?hC6mb2m4L zz(1J^#V<V5!dC{updi|LH5l#cruWg^#4ndN&Q@rsEFZ%mH|kWNbR zGW*BwP%pLC#AS|Y(~DTchVR0CfBzC*`{EnRI5=Y6;$3M%Ra&@flZE6C0RxBw!_JSX z%!mQJB4i3kpv6Gie_LU>$j=-UW%$RKgc3S2!1 zE{Wbk1J0fPX4|O<))XSs7V$NMV$a%%O6$Czl55+Ev{P47Ss!;-4E;)-;FQ5YTG0D} zIN108w*qD_M-}#r%njBBGx<`7?dK1Pk-^GP4vz(C)6f%i8om>GF$;L?xsN$pJ7pGq z#}(VkjZ^iSBj|$wmC*QGC{7(A^HCxrnFOR0DzE%v#+m|}Jqrt#BJ%v+e$10*M4@AE zIoWQec_YZ%ACPtm6oTS^RrBSr?U}FF7nj-rp`0mIMm9_|D!1hvjAi5o7wwHXK#?0oC9br8UKnK{Ug&A{9~mxmxAoQr{=e(+OyplVo_ zlbLW_9yRqDD?~^$iX&inf|(ECCJUnF83<3??+*TVt?oUk8tirEJIA*X^((xZ>IU3P z_%g;m-YiQ1@bz9)Jf2&E8O9R*5Y((y3X&fcc?HkorayD7Peu|O9?mI*f9R6n-AEp@ z=*1WgppOPWi+UkuQ|GS^G~NT87Z=%xW5VoyID%2-EFFVIA&!)HEWr^6$m8Kgi8+nC z#C)fRw8zSVkcgY{fy9)vkE1H%S%FZe6rdF5fhYyDP+jFU zTb%G(Vx)X>!37l|6PUw5eq!2bd@nTcTPWDM3TQZVC3N%6aBY1bBd$`&Q6-jA;=X1o z$d8mRRHgz9hr3wFA-quAjY>(rldo=EN4+W1E&Bulfb79YnDXCW=_HWc>CJ}%w)Wgk z$ags;-&caxj5toX4KCeZLjZXv0EzTBZ0AJPU`uf7PxHaL^nojF$>cn>Zb6)^WOn@b zr_Y(#_P-A8*kzXjwSOPlWm8Dqb*gKuN@V8SQ%JOIUKd<`<>Ux|C31*)S{*9=cALT0 z6`=s@K-BO#x#O^ZduPnisojClWOEF7xYL1vq5`C{bHNpWU(5OI%M*A1`x;Tj_j5Y` z{_DX3tZDS5*>F1cMF($88%7)XTA4eyT4#cJs7P0V5d6qCM@izxL73FeZb4g~dJ*44 z-?GPt>XWAg*Qge}4!>~MN{O`DN4_WQEPMM_ouAa7cj6Y$fHs@Y5|viOw8Xw329wWkq7U=Cdc3L!p&%|-RXSMt zm@A+z*usl$oXXL#qU6;(9_AvLxT{#gc#tsfmg??h9Nd3|^}o6`Nd(pWu(uQYIKf<- z5EB@2JoejnTQ1-6|C{kT7{D&}ZUJ;n<)1pg0A{?L>e~)=tvOl?SqyLwAXQaiEFE$pzpHI*WIB59)5DxiYaxyYA{|};gX&c-Y zq|T|TU$lny0IhT~5%f1op=z`eO1 zX^L_cYD$?uGWRisB_}!~ZjRsOo~ie1Hh|~wAPJ0LE3$CrBEOOKRmWQRkuNm!@ZWg2 z=-`;bUormlhDQgCNYm|sTB2^G`x@5u>WbgU`pfH=>nx*yD>}PUOF|YLnu3F>aIn!g0unh4NVZ#urF9$ztu_KSu)g^S z1e^vJH~+;)fVptlws#rRCeqm|V!)!+#Mij)=rZ(=sqNqA8yJ#MuwEz+@hu4vjy`kB zxZkl_3ke4swU@E(ZLMXFkmP`faXaFqCdoQ8+Ry!;!i#}2CPMdX0d+C>m_>q~7Kl-! zOPEDNcK$xi@DgX3S&0C-*Xb%aO|z=EhCk1a3NM#ZDFQi2MyV^f0(^L#ZwGf<-mmW; ziYEYx-&B1!b1$|}rc@0c40GWRec@1hHtw#md*Rpu%DRk-Yj*qhKD}A8@hf&AOncJ7 zKUKRjuJ>MmgH3A~J2~H#_-qFmQj$=bGASG~54pa)-tQe|jAbq{2~+dg5XHG{y{8Z4 z3B2E5k_e)`q8GSIv=$Hg?F4u-D21e5QOfHU04@yEiNNnbe`)`)Yfvzor_v@7JQ)!s zA6c69OA&=)23-qa4X-l*a^472sx4BuXdy}^6Mrq_&vT1pM@|>^#Ki64#t|Y9Gb2@P zFlbI>^(N0MipgzaqffyzP>v@6d4|dmqLZ!Yi#AGu9!<4`QjHu$F8FJaV=8^miN&58oh+Z# zp!(QAcCWgnxJgbYQw&1fVI`+4htoiEI9dELU9kYumUvLVPRHDM!Fn^K+Ju9!W*G%f zDWx%$0n$`f;@6V>1+536onQ8Tv_&3rE8Fpslmki9Vdf@Hbo2SDe(GPgpFFiGM^msE zS#*6wDt{knPODYHvUoM&PM?p0qY1ulo(j0T+o6uK*{h>63A5`-TMroJ9zG8YZWOpu zj2{P56tQ<&$3o!Jv*Ui}^mgsVF)7iioPx`37}c8d(SO*e@7u!`yE5Z;B}ywUi?Yjg zim0>(>0BYXuc?S_2Lw8kX{IdOmCtF#3(kU>n6BmiDYcb8B(?oj`ddR56ybnKO7Uga z&^+S-_b^`>vcMis0}KQMtX2~wbtAd_WaWBG5YxXCRVTJd964U-rxDyetKQ8 z;Pfe~LMsict8Owv-?K8S%XCYHQu4o^i^)gT5STG7f(Uf zK4m0|{8o{SQ%V6vqe@_9@t}35Ib@@n7@)B6idNIv?Ng!6jp3~U?lLBAeXFahoND&` z;&#+3mq`}TwxqFsXiKNbCXsOC5+@R4UMm$c3x(1$uD={sR!N6KhsM6c(dD=5xZw3sNEqw8Dv>`*Ow$-zS|ZKH@>c|w?XQH$P-1;2dR%SY;MRFFgj6wNZx6a z9+X?+Sz6TC?R_vAktv!%y7bw>T$zs7bMV>$jVzkASjozqM3J;vFfn}w&{K`m_Hinx zrDC5;^z7`l{R02=D&2D~ah9=HDKOBb@qi+8s$~i>dZvW>V4BIht}QHrD~nj?S7M;Cd;XggzB{TzBs} zkV~brwN{E(JNa(;Wjt|j&PVOs7};LBNEC4fuE6>uOmjLT!MJ{8g+B*5dl*~+apPbV zw5pgF26YPvx^ku-#a`$tk}En>?c0e*T?2y7otoW43omr_a%t=HCV}@*sfa&K@6BFO zI(v_`zDLB=YGAPD#J82fo+9XOoXv7}&(+R2ss5=`2rlYV1JDZ23u_O)kv!6xrNh3k}swqpo<2Qv!dBS(jNJ6K< z*~n`{TNlrAl^_zTW^tyGHil1Ln=b1pflarCs7P%6G=BV1f1)=J-v`6aOSZwk1)5VH*MY^DUl5KhQL=S+bUyx%Qcvpa52roH)&Ilh-C6sGx%8UF}#q_$w4D4UCUrG zusc#DaR;0+?RA+BloY&#}28V+KRCS!JoMze9LXZ~1XAOn;S~onNunh;3a| zs&|QfgON8WasW8k4n{=}YKap0JEdD$KQ5=_CDL25USkrygA3m_*Pw%4#4A)!(NsH;l6J#kDysT>BDVt5aucGBEC{!Rmf}wGYdPeW@AF<$!OQcz)>W`aQ;5xM zKItk!Ov_rd>OuTYzij)ZtU53bGsj+2j-m6Pp%WO}Ri z8qqf2)Liihp|=pSF$pEZ2}jK1pbEvN1FMd>(^`JS(Z4=PYv$hL-6$l|86($ofcCq% zQr+@)-jN=}{*3+fq@VlF^lE=+dL4MXaJ~6LCfCkvh6pPA4&<*hSZAPI5|kVV-O2iH z4z>f&%KtJ;;C>|!ifEefe^<%fvs|DunNMgr0*#=_@{S<>psR}9E4};RJTGpis`KT? z+3ntmy)t7#M4~ym+xghhm4wnwH=>B@dgq~{ zaW|Hg84VLUF0K>+E4a96(jB(m!Ja+9}(>~v&(3rx` z4t#2bcHG5{2oOZY7(YMjL@{k~g^7nv#Km@3_6Z^qHnq9HOGd!C$;66~@9Y?eb6G;% zQD?X!r}Vwa1^iEPZec*m32mNJNVMhN5rS zc)D=63xrSX61hQdy@q2lx)V1GxZhu$Mhg#J3!2WQTPiK(Ma6+Kc^Q~6a#oh3oFb_B zrWQ#}Dxm`0ZKZ!P;#H#Hi?m8S%l=-uX9GsB6<9OMT4d{6?z6HScqYWH?H)Tad{f~` zy*qEU5m2pBxO6uk0|Y!BVurqevIR34)QFm;4hRqg_-ljNgES&Y4c9n?^g;}@7&y~e zlTnfUywVY>L6<>?IBYk6tC88OWllm|sXn_z+&H-8?rJ>gh-D1vWG1Pki9j-I-zZ_S`9T|gG1&=9c;QnVp=6wy z|9|M*^793lriw;DmAAU)9caFb6qw@AFRTxLYif%!o%4gzB!!nS2o9!6rtl6@r@=`8 z{b7$RGyCa4NZ&>$l#^&7d>wmfq~z{+QJUn%-1DIwWDxp2`((r?5h8@K(tI1WYRrBiJXx(O`^S!QCGwjsRrhu zY5x+o{cIvPjU0J9HRIbN74uz9`YNv1&28w}Q_ei;Vl!tLq07`ZL#kVL>IXzFFZ=L_^fA&bI zFk_8q1$T#`o*V6a6=j)!W}|=C2L<-fTL(z77=01&-2VE}t*$pI;b+ho8mw5mx>*p9N1ZA<$J4 zsA>yDTnPw&+4ZE1-m_SJwRxl6&HqV%+nO1|gI^WIM+gYnarxL94;^QPH9p|_5N|P) zTj8I%pW17?g8$=@B+nne7$F~*Aom=@R#GqXX-z+y+%Eb}mTw$|GE21t^RRZ+^?6xT z6%EA!C>~|9RJ<(59ci6qxg@jV|MRe5;-)Q|&%Q@Ht~R^sLcEexzpms67d}fzs#<@N z&8=U)BDY4WSjHU)Gw_-6brIc|`^hj+6OBnBQ&5Z#$+@uYMEt^uV&i0;Y&zJe)fm1n z&b_uK*3f{uaBd_v^HSDoA>|>R;QpC_426|yD$l!6CvsE{b&k(G?)7=TgBqNROv}@1 zKw%oXN|}jgS5kvW*4}i^Ziqq9iPqMsH?ir!C%JAC}eL?-XSkY%&-?9gwQk88a0Z0Ua2r&$7E>xO*SS6hl3(>L}FvWlRap@ zBsnG02|lrJW^XU`LP|K(P!^MON4^X@b*ew8M)~Ww)PyDuOk)YMAx2>yr_{aiD&gv{ zy8KnsD3{?Juqwg=p$LTf)y@1W$!dP`X0=64_>Vst@c@s4guw94Msu#K?F6L{Gxzc; z1$XZXa@URSVZD<=ck1QIu^_;N!v%#3g;N5qWJKEd6+cv8Z*NwnMOCWOF1V$QMu=R2 z=Db{aeGF-#mU*4K>fg);X*NZa&C*Q#J08pSO>jfK+I>K7)3)|6k8K?W#B78F;dS3O?^+N0_DUuEN_{fKE5`92CV; zZr@?jAa>>IEVV2OO5?B;l|EId6XFe(INNkBqG*CdXK=jrN->u7;I;xoPXIC<&zdRs z!@W|6B7qB*z~QCN{@qmhushY@R`iT-&K!F;vB>%T0xhQbfUvC|Wh-s|P{jSy^;0g2 z7j=J3T|xjqEcmsh#WbT^V}%}LuZzx|pb7H$h~Wk>c%Bx9;WqHlbIXiF1#n-&-6y>| z~E2-LO z=hq(Yk#lk9$mu3HfAZwSIFl#Y($!!xqkAn9c3MTg|ZyZtEVe6fe?whvZn7+se5nDs_{x~Xk|Q0B8{mXBV{rloIw#{O}9rXEXz;O zbRve9k*Pg+<$l809}7((s^&uUVnW#rdX#l1HjyJ{`J*PwtCozN zkslCW;$iAPn^>fNKQ^JX)c4>o;M78N6zb!czS%PEjq~A4w4;wtfO=$#rtkt@S-Sjk zApVqB*~AnbfyAbd6JrpMSLsoLGyI^Gudsk`{E8zbF>U+MYGY(4L4s8^T{7j5r6y=T zV}|C=S&;Gje0#F_ruG9R`R$*f=VYL+wmyO3E?HcUPcJI5{*XybEZsW>Nq$0eGRtq{ zrofo7(Vz%&Efi4S#;e|!Cz#A6c_2}#1IIGJ;+whKy5--6G(4(=V7bi4r`L!2PTEuK zO5IMWapu}AC%z8BwmBPJigWU#M!c|}{53z>?JbJ!3z*i}t#93eMww&@6DEBk18dY2 zL}C1ZvDAiIWh@8F50CYF5=Ox|U)jmo_wEI)QAZWv2B!Q*Zqgj#O6FYMp`Sz~nJs@hhf_e<)=UWT6eGC61Ze}gW&m76PG(N;LiRJm z7T)mil`|h+m=-$Mg`Ljj#J;ey`#Bn9!GWioPFy~yLjcx(YTRoDAr)=A{ zZQHhO+ve2mJ3T!&ZbwhdOU7odhaIsa@vr>OOb45gUN?;ZF{@SK)US4_k}N~^zNpQ# zyKS`@eHpB_5^f~D+)10n)k+O)3Oy;^7&9zJmAV!Dy}x;EdSzg`{}M!`HsEU@ox;RnAhKr!Z7l`EV zI{{23K4;s{S1>(PSD493URFL$!(hsWC(JK#cmXuJY8G+JytiCDz6}8O#Gh# ziH>)97sEO_;BB~AMEG(5ESHKwEWs-{miMJAhc07MqX$m^;KuNs3P66iba^iY%M1U* z5;5T9Nd*ixp@%h1&Iomf0Bt(u1%xh_hJv29YjF(hb1Ry-YcuuXqRFQy;h=NTyAT=F zt_kt$rf>`B{@C6uwKd=Lg7mqZJ}doBFP6>yc3(()$0_-?Q~XkKvUj4rN(>nOv(Aag zR*^bim!9({R%yU7=}uvo-+X5TtujD_X+6-g?bZmF&%T@}ckuyc1JRyA`GS}?3QStH zKz|wza3zVG52Ts`K=a!a)Op6Q3*~+n$IiTixb(9|1%Ey54-S#;E~XQlhQJY=hwkt{ zqScC|WG;vT>uvubjfYyZL*{nm;j{gTu+z3L)+Y6KH^;rew#1-%gbt#=j#*p2_J(%t^it>ZowF2@=g=lV6NYm zN}+k9L^{575)p{Gd#NotchinL!%0)J)W@s%E(LRK%Fv!9MdOviqS&&)pOBoldxcme zqsi%QB2f>smgEa4DTT};J^=P)RWWmn<3JD7GSIrvu-;p410QuJ}oix zLh?u#*mxRF8L=~QvK%8H<;F0Iv`ZaW!n!ndJ$Uf-jiT>sM3=%*l{|&3jfcQ6I#U$B ze&WbiKrjlC#}^tsx|}drTCVF8F5CsT0(a&E$v(RgGLJT`X3p7+jUah9DTY;)h|j)Z zjb5`q!M|nHWhz((Kp2Cvd^*2AP<^%VIVsJXNJw!2v`H@;eQcP{Bp_+%B-B$3Uol90#Uh4sJ8Q5x}od)7xs zKD&%XfFTp~682x;9ZNkGD_DpQUw1vk65ulb6hg@jV~afuLpwEn-bUfFY|upFw<5le z($Fee!ve2tHoRKeX-=+=>3O9^f4hxSzoP$|4!51{Dso#q@tlzu;zTK;jHj)Vr3=1m zA9t4@6KM^zsv_u%j;-@O4~nMlxU-?aZ(}gJfuX7Iq4n>D<{zOWGKc~-I5cSvQu((m z&r7;z!GvJhFFnSo+n4w2lL5>m7yo%b;qv9zlaGxJxE{Qkx*V&9hY+_9ibc>t(pMvl zvxog0Js-Wc@d5H`Pud&eOFvATvzC5J*ItHzBd@3n&T3`ODXeEI*SbD+s0@SXp+lC}J z*SXxzfwR*4A-g{rM1F8&DOE=FaO$wd#!UqtP)eaSUsV=h!xj_z(Xhu!&L_B2t#@zu zl`^(pjaX~Y^agtVQ%{`%xDT+y5NMSvb;(}c9;Yv&if@cvGnEgew@6z<%}TMISQ!wj zKalh!z$TIZibPE0mNS2xGud_$L-hMvDgYL^j!~T;lEg4C^?gnXBBi&jR^L9gK`s@m z1;y3PdIjx^znp+R=IFN)yXzpw&&4~Sgd;>9{??{YKC3vdlGp_RW5JSX5}=wT{?7ek zXQhw*1TN1vQTkb>pD>(j56Yk{L?<^f0^p!}V)Aqm4!0QoOOBvu7^$46bKwckh;7Op zh3RIlc|3@uv0*2*&3#bD^mN+7C33ufntKRm7c$Mlw{JW8YS>B4K81<#JaAkD7VO;& ze~5&|UfsT|V#MqhQa93Eg+8o17Xr~CI^!poEip>cs*FNZFqz3u`hza~O$k&^8l60~9ZMnF)`dR>U8J*nj3qeK;-~1~XvD zNb6q89fhATFH#jGUT+*gFqZ)wGo%)$fh;XCu7_6R`=ZkQgOVD)K6ezWVrV=4!1-r9s|V4;iAIf)jeiZi4# zD_LAc^Cvg#y%4RjYLSUu1WdwU*`!UJK)*i9hv%dd|K6tSgj}aZXA^bc=>&n$8@W-a zcuRRxj73Fofy9V?S{jz5v@xLS+r^#QvoU!XL_e{NL5vFh&NvXcWv}P3d4~*`K=$2f zrOTt%)wn$c_Pzt4TFVrypbn~tU6@5Sg!J2;rIE|9eg6fe{}{6Yp@4M>LMm%FYn0q@ z@jo}ye@)dFbKo;1(wTpbSmw|0H;|s^0a&^l7RAHyINz<%IL|sKd%K@@hZ?; zZQaHZ?OPGar~1*?v3B~Mlu|gZbbzC6!}~FketVy^|8y-4H=9TJt>?VMXrO9_EWJOv_qye zS#Yg;R|Y-MuDf$QRK3TU!{R0<3c5-;>%&R0hR%-nn+gGzWQ4B5o;<&k>E@ynoum1$ zwjzadt6y@kc z#NeeNdoX}q5`eG_`46UEZY5-nHL08;B~{M8vFQcc;-IpYR;_{(Q1q&7KPtK`!WiDU z*SMeKxVjM$`3d^1dzj2Td*&mjyeU4vdVr)DLg_#@br|rS_3NKw&YfXh0DM$WNw2}f zy+Y&DMNA7i4WY2%0Bz8P#N2Xf$f1`#1!jgvc;Sw6p;^WH!hv#;StaHCGo%8rgdMVy zC6519pteS0^C0O*LvxU@`DAr%rM(GlAu%=cge+swu6 z*X8d1~&woZa4ERj!j7*IG zr#Og}p7FmRl&^Tqm6Sx6|6S1F@AlK$%u*u~+vo+P!^05ni!8S0=Kqm^B9Hh(Nw^;` zzTdrD%^(&^U_ppT$^aZ`z>GP<9vuJ*fjGd9DQv(kg3umuv+MzrpJ2;%@^P2Nbfa_L zRj&H4!e*;|wg@FWOUVw3XSaCI>4kU4R;XtQoJ?n#sjGc<*9=fPE*PBhV@B zx7o;35))8@@Zmj(2p%PP^uVFF!9>eoJ(lI-ku~g0K(MznDVvRR6}KTNI_i4) zoSlH)MLhHkl|S~9bT>;)GPQf0;8TM#1T|ZO*72B$f z1)?6v(U%7`Ozy)9f*9i_#T>_>IcQL?Es6wg0+TvU?b&dQwWXn!82tNCWuxk@ZP2rxzwCufr5=hR z$s&}0dgQ~PX;iaTTS&s3h;9nY$j3AKfEw2jk2l30Poc>@#jEy)c`R<;zS_z&*il1= zfWMyZ?$}ZcO}wyvr`;!xF%FtofRaFT5NVu8L4p`Tfb>q~T=)>2r%%$cjG4bmQ-(C; z)saH8=-?nQM9c^C#VyEbs9TF7wpC-2KtCSNeyBY{t@lI$&UfeSI}8-lEZ6V8MS2u*jOgaZc4qf9kn6p-ebCHpGAJD}^xvc#AK7{Mex{2xYizEUQ;{on73k~2SxDF|h14YY?Z!WlI&a5s7F-w{iJ|&_? z;61G>>^KdSpu*-*zbMl>gTGUK6N4HMlDu zf*y1lY|*&0i~vjCq8Xr3)i_pPZf-Cyv3$|!Fu&SgKWh4@)(%LDSz@jzQW>c#uOzvk zT@I)us!UO{ZKf6VG&(5D3&yl4{oj~Z+Zb*^SA%BdJHf__&2=XE9VB;5;7g8=M>*8}2WcWq9!L=%+WKG@{>& zYhz<`{LS!I#%ptZW819wfBAAtW?A6suSrX`CuYCgzh5*)GaPAAe>PW#L}l+qq#%9h zjmO!YLEI(1JpXzdhl2Y#)a=LbaqV0?R~31vE?3kH+KkhAJq_J4;RNc%4(`3H2G<#0 z(gK5pKobcO_DwaRmK1>vrn46~b%yadoK0igz8qY5eApLrZ*ny30)Dr%TA#2U82upZ z84mOhN8-pkJXwg3HCd9@SnLg8Nn=S+QcAc&K*7O5VPVM}FrpQkm=x1aQorU^R+g7n zHqN^W+vuvRIDfgTs~h*#2bHO-mqDfMr5UrXjK7Vl%g)2O`TP3*&61+|dqOjTYZC}1 zi;&lYC(&Rk3m1gJ&)R@Y-r8^Dl?&{LlVBQv77-fO(-6*MtZO}f@r2mH_%+#?268Yg zbKdjtv?~}9QuGGFa@jO1o4{-OlR6?p931RxxU`%B@gCTR=ef|u)v-}CLj`!PxSG@* zAzFC+_6on74i*%COyLd|WD<4IQ>rzJ3z=^vx^5`Al5h^TYQKzwa|s-$z0t*DiuPKm z7B_{<3z!Iy`ToW0QPiFeBQoy!9Lrjo_zdX$4!Ed!Vsvu)m*!p--*=`uv#Milz@1%F z8^-kdXF6C(xlUj9H9g5SRXINNB=j>^he)<`rn%qP!q{EQ_7`D9Joi{S{TRBwD32u* zH(Gv%uQuf)xsD6wzN#DCN`~U7$I>yl%+DDu7ObElY59t4A4r>4oVL7xsWMeYSD+t7`0Iyf`cjKs%qD&%A{ zsL}?RGfbzM99v7x1Xy)J+%ZkLCXNodJ&P1P&w1*3f!Z-(v(*NawFa6D&Jhb~9y@?& zf3-mlhOpAC@EUK`70aQy1(Z6<>w6XpjFfTSE5VKg>Y$d8%_9=dEij0ASjxmlgAEd))54rp+#Z*QHD98w-5yQ@f_1C@jpHQjGK*pZN(UFF%is(h`1V}g zQU5s3KpVs|)nvdk{ej5ZY97JqGW4t*aCbYKL1m4GDB;{a5?vd=xB+#nI=S`LCyIAD zwoz|?b&o-2Li=gXicuio6wjvTwJRBuBHVxM+_bWiaB_!-IrAWIMV#DgyzUikd_ ze2mj!JG21EE!*p`U4fj5#@)?=uQtg0a^}+gd110hdF}!ZTkXf>%(KjYtKE7b`|JIb zpyK8R%u7&krI5~jrG?EQDT>Nf?5Pwed&UDx4rc97%A;bk5=#F}*mk%u{ortazB;r|CP5oxZ6$P=!eeKF;rSni4kE3_l&Ce_dWZv{yShJmsFf7J4v)0|Kw3(i~{q zH}0D`lP@RWoU>I3hSDTfFi)&cDU_5MLUn;ZRQJ?}^D=WvaPu#2yj`s)cZ+51dD&GN zWbcF?A*TCzCnqIEQ#mbm1e(v+8mImO=iu7QT^*Kmln*dQ@9Wzk4MZhFgHjQh(l0a; z5)!hq5;8N-9EsY_&y!)7g1lYhtUIMuU3G2Hq|#C0>74&mkR@mV-OhdEFD6OQO0z}q z-vwPBLulq5ZXjs5@dwa|ph&Sf%(3cC*J+%wK>a{m`{kOGlLm7FFV%p;7xiZS0_Y?r zX5cDoen79S5H^Nb>&vPey`RpNZM&K*o-A+$ZTCpDA{7j)x(rmB+cn{5obL%m>ZqON zntmh@iIu~4C=r(fh)(kq@}s2KiL|VYzAn^$M5@gbf95+*!x67#oHm~mU0*Zr-YEVw z|1F{2(|Cm5z{sR`isiMqe^n41Zo`Q24V=NooR>TTz?uP9Dp zM*q{dhJP3dg~yfcWhfDqhJ!Q3SQ=sa7L4~ztDLAKu^ENPyvre)Z=?l&_ltP60JX?H zhzrc=Ku)`zp>B?j@-z4?DVX+m_7r>Ts=j!g>z+u1V}pa?qe9#1>EU;kX;DoxO+afL zW>8Z6RK&Oqs*(NzL0cYpEbAA7SxWPdd~%8`Yn{Rnqseqc6uy?;t3qtqJ+U1S^~JpB zPHel`mzNFJU1e3d4MnNNF6(zyw6lIh5sXy!S5>4iC&D=D^rg#<^_I{kh?Az@QYsA< ziw#Fl`iToLCB@Pp>V8XfwION@^yq{P?!Uk9H#|BT!H0EbkRn~RVMTL}NSai0iNWCS zR0ShsZ{V=v+UPs(uO$U`~Gu-3c6TwKmyGOV9Ycv#AVKTN&}$ zt^+SmB=_)qZC&wc|6x0gg~)e`^+IB|n`~7L`M3P`RrEM!3+Rr{YjQbwJIlc1^!2Tx z^w1ko^NVI6A>VFZ3a%_9H<_qcC$m|S-ZO~HmmfVb$2P5qR3s{`nx=MN+>T_iWSW&3 zSBLlrPbzS(`n>;o=|QfKqFOV5#sU5t>&7zFGGS5$nuSss{8S68l2OgTQ|=Ro9z6^W z9HM#LIOk(buj8)=D2JaaiP%Y2r-j<@Z5X2lKA(*m;L2YlW3%q>m@8#mzTV&ldL&D) zkVet~M-NYGPz7Waga8k@VOAgxI!ta|s62^cvk%QJsyS;Q8odemlq-p1i)9(;7xe<1 zg%EX#W{6+$EzJHSAVZ_CAkCGEtFjPHc8E<<5#6ix5SbdLaBGoKcG_j9q3)&qu=vK8 zVm;rP2(mCTQhk)iROxzDl9Za$s_W)qc)liH<}#m4*BBDaP#`dDBmU?%(s-Y%KOEG_ zG}0mMULcECd$s(fYC|V_duX!1QN^-iP{S%7l1pso8u+_Gt2^QpI6gftE}YIgtss1X z&JV@IlcLKNc>^eT1Ej4D1h41kd!&)j1oXo{4ZbH8At7X8zxu8Fv6U{RnX~fsl~rDT zF=o=ua6}aEDz(+|bWpZ9SCl8vrqXs$pCR-whX}g zeFdky&%piBfPk8I&v&W>M*t4A$q`3ziloJTjP>8gAa3pD-bk=m-A^JK;D zNVlm+c=)%2vU4jMI^woeWSamosjM#cQM_KB0vH3((QSOXHTf8^Pu23pqGvtH720}X zZ$E$HsPHqm6>TwElmG;dNzvWTWVSkY7kv+{+gki$qVa^xpiqD9FsUn#!!v&YjmN0P zmeVeF?oI;T=o{B_XHJioC@R zO8Q+6SyE0(h*Uy?zKe_k8r+Sna|Wd`m?HmVq`NTFUB9U(tt!tSP??G6P}-w9q$YN+ zwR)$-bvvg^mRE&Gl1TVpC=k0{DjNPJc7-4}7*HReJwBf*t9p8vBbCa<(s=IL(rSx( zI}M_m3gfS&1wUhMaH4(1O36PClP#uJyHcr@3eEczrPx7M}N3*_KLGb=70ycy=l6?|sM2 zAwgpi8fFuJJb!L=1j|NcXIw!PegRM zKXTV+yfYsi+gAa7w^bkdJMu>SRGWoO?*confj6r~GO|KCDAGnl3u0YF6D7Uc)_m$8 zqB`lrt80LEs}bIz@Dx-g8sjI)!%GvgupU7!j!s^v5j0`GT_rWeqIVlV5Iij7j1GDL zek9ycd?3N(<5r>%r&>sr;0IrcTA)2PIg4%81xc=5+WZ01j@{ZOCjffDkZ*ob7=L8T zvd2jvu{MKzwfN}jE6`r5CoZu94IswA5$c=7VA`ZJwJ?o zOmD< zVVntq&dIJ=#ZO;3U{!_8U=r${2838bU;zi-oY+H;CIhe~gcut})c}lY_yA`PjY?jq zit}M`1MwaU$jIPs=NaF&P|*il z;<#GSLZEjBe9rx7RoVOSdl}5Y6@pM-?CC*EhJ_sUj^wJ2B*b~V(?xD z`AHS(8uW?GC-DBuyN`wvMTn`CKS~lhJ^~Id#1BCz&kQOTCZQCYTEYLj+qZywsE2q( zC@||-d4{$%J@ezbzoAEoLB*!yE zZXLk&eLhDt8WX39=Zuh`u5CXwA&&wK7BP9;ON#g9TZ*F(TrfzWaha9)y zp5IqaJ0}pIYO4#3cB7}V+059^08b>_-hF> zu7`bJ;XYir;3UFEB(vKi68*giP0KjENZY=3goUI@%Jmnf8;*{HSzURyXY{yLn8xBzm#U@lD?3X+aK=B6inRIK2=zKk>GK-aRmtpWegh|$5T4PZ0-7;s01wTs zRF)`C{W7gyYpzG#q6EOy0+lG(rhQ2LHG<^sz?geG%k~PRrTEN$I9lu=S(FcyjtI4W ztbo7&K$;g2+xN=GJZS-P7O?v>0+S_{NC`_8vEpzJ{1XJrGivZKs{wq6R*3Q6)sTeb zXCy-gI^s-3CO?z&&!y*ukaNfziAtOq}zYm%3!wx6=bh*2x1NLY0oT$5aPMV8Mx$zlTOR7F9gXj^V?;3^g%}! zwKF9SfMy)U|G&)-9KiICq%qb1bK!s8`fo?KGk;>_VnGsp%54#r({?n`f4Vh5F^ppO zdZ5FJ%z~_fegYoW19=mw{=@kvU6vahuddkVO%9Jo^ z$Z^%5wimwNbq0K3D^8i@ech^KJUaMxO+?L;GD>T~G+JR=;)UEA@4)v&WYPf4u*KX>+l^v-j z^J#21oSU%pTjVLHD;F(kTe4luEk9K8)yg#Rns^PppTMreesKaji+$n^&lo4li(nXk z>h^+S{O95SIR8)cONuwd`gEyHfcO|EKj8EA`SuA!U>twd?KR5SVl84-wX)f`Z?@1x z+xTv_U6-kUYSFgtSb0voVrzEcwBUS>`*r=JX`HrX!7#BV|&Ub*=izCRqFlZH5Ol+3!p;mkp0=`(ogMnQ7YaSMxAyc4y zrj(gH@IF2+@ni#2B+%5FSiGl)&oyuq$Aw5^H$+KuyHswchHF0sRBkaJfs#A%S8R_s z@sBoJuH&8-`}7e1NSm2fVgA3^@NHqrPNb>~|1FVVgB3S*$GgApV@BMW#X%-hMNN); z5Jjf7Kgb&4CqZ^t<^*VhKz5`sVnsn*XV{s2<1*X?D5mv29+L&ipM*h}ZMnFYH3W6Z zjxH~=T%4R`n_Evn++B~HFq>w(dE;~P1uEnmNdkHDf*mC#-o9KMh=C_wTzrQLYT83d zH3255oe$HdOy@lnKeT3V=S3?8%cAp?n;DPSUPgl#=qVk?C6^pF9yhGNnSg0c=kP+= zI?-89^1nlPnWi+pt(Bg186}$M4BT+w#>OU{HAOR_H3Uoq_dyD`RReY-I>Uviqd zmOwL!S1SRBo1l}!;*#Nrg=Gv*4GG{F7O#}VyPcQB;zAFFl|@WetAa=8A!WanjD0F| z$$VtL6=q5NSIJ?(BN}2^tthKq0X}9^SHg1EDcGt<+^95GKATAqG1-;e>Q4Ru7UpSe z#>?$mPW4{Rbwl>rEYsxb0{@9wjXYA(@`4VZuaRKMVPa*}+#KY`htp|O&grfP+g(~P zsAu|91;1D+ifb*h7*Kb=r_@dUKBSm!9i?g|VHb!_<+x!I_k70Fs9Dp9acKPy{8iC{ zuP%#&$ZSG_yM<*%IeF4IpVI|a z;j9rtDxg6e8LOXsHtnC8X!EKQBq=5cM=>Sm=l1VsO0NAmyt2#KX08un`?C(`zL{!m zn$>t-bMrje+9LWeom^ePHUO!At^mu%b9U`v!?SkSF+{f(*l>orqM*G(8iwe#HAdLu3tkIZ7(RU|V(hgD<%`d5lCq?rr6q)l5$(eZAvK z%krI{!`>4E{2-fuYv{l>Oi6QY(@T+? zl_4+>X<8*o;iA|s?N?faSn8g-2-4YYvd1^fBrZ@1_diAu4iDg@C?+q$SaNm=B7;3Q zEheznbaZI8*~$=fWVN#Vy2IRR_Wr>kAq}V7^dyFNgRxgYvFGN=u$_JkfWx0wg z1f4>(cT zANIsRtGa8ufRWuF+Xlhhon)4{J55zlV)&FibH|6CAN`-rM*@fq$4=3}`SXA{woexv zNL^;Q3YRJ$%=4DyWlt@sh~=t{#c zi8@NY#m==mff8}U65-6$y94&ZlFr^(h#}ShtWczU*&R6S#F$X&08_gv0mi=tZHJS;Tf>@e^8-)Uu z5n&%@L=brc1IaYn^)H8ct6LT)<1rI8^fOSlRcPG3K%4_G5lqFa`)5UdZ)Q-;{-R<7 z!74&nbvPnem;%Rqud%qf6?dec)5T!@ndfT_ryTDr9U%@*0JM*@ivGTO~q2h3>p?gNuIBrza33xL(XdMB1 z2AmKU*F#Q>a|c2PV}PfAu;l4$;^izs!D2KbGR}|-+v@h;0$;8-(h+{tao_jsbVrTm zi*LhB0JHwG{V~jDpvObBn>nYp`Oz>qk}Bc6!S45}bva|fl_`3OD3xB>p0=qlnR}&r zR;o?`&#;rjz42L3jgfTMQ7il8n;+0o<%ROP5KEv?)n#odvs1pVi=JImu`UHI3H@1ngj7^lc!Gq&7=S53Sflf{o~sEo5Z2WFt5&-hTz{mBz6dR7$_E zLtYUXIM7PO4FV;9hRIjzY4m>nO zv5xsP(A<31{0-sc-9`=xUkd}^J=nkCz0 zFF9XqF2{FM^la3sfjF^DIEN^oM0ff{ukg!`j!pQ+=s~*_Jbn@+ZdLXrfIp1u9kunj zmrnd7U7*LE;x&Gz)xJ?}aS=?DxvFO_uPBqS`d19t&+@1}dm)hsGb($So=2K@*ssM% zKB5{yX2b&HUBxW;2=#U`b^O7o^`9~Lkkx2S{+B|`oMlOj^s9JV(bD=rXlv1CK6iVqy&Pg`3R-qP=t z5$pwR0(HWjh>w9y@F0iHy3350FAiUBfIRC~We3ik#o$sbO7oGDzXCg#?>Z0!#8>Jg z#&F5BE6d@XEArz5getQ~SI0V(EPpgo)fB%e6a$?B)!4lG9g`9Jnu_@EJRTDffVQRO z;6Lfm8+~B(9<@DyQFJBu@LHML%g4RkO}!-~$A9r7Eywnle zV0e<>Uo0=z5W&IF(vo^nVqsF|#g6dzfw40I)j_tXxaaonMT;EW?Pxsp0RTBa<1&NC*W11<5pem%HBNm>{^>V2IJ|* zhu$v}pJ5Fj?-uEnSMW9$wxO-W{5qRHzPvon5;EwR``3n+ybp(@A$xlU2C|o^4rF%} zpqznXewYvPP^Ex&9-E^X>dGoyQ9>Mx1kafK(rz!}?c^9(N9!-%f@5pR9;gaxT;^2S zP_t38?pYfk5TuUVFSA~y_Nz<$qI=!G5IFpO<1zmqHjUp{XFXc^w8~#9!cAt(M0+Iqt*wTV9SdHg%mPuozb>!dURidp_^3JSB$z^|WjhFW0P!+K(BGeP$~pz|c{roS&= zcHl(J+9I^SHB5U#ZMys*P<|dN*7l?b_+>y5uH; zhq7^*8aOEo1Tyd`4k*JV_TzUzSEleG+Ka<*Vnjyl1sWC?+1N)#CK=yr5)Cv5R_$KF z?ibOs&*uUgfvD?^KQ2$P6vkb0#1$2n;X;f>Q<3{uhiy#O;qn}do1n<|1bsOgb*ye6 zbOBv$FMtVPObCuI2snyP7}42q-5!~Y(oJ+20^{i!FawpdfW>jkARi!{X+;Hqr+)jP zw8b;+x>W|-6-le_+k#(yJ{w#WyK?kTxa6qLuVA`?IYX$~=qLo3)uC;83(X*}Cy@@T zr)hR06-5780Iq}j=s4nF6k$NaK?wTz%Mqq2tSuAE>M9iVUIw0I7o1pZ;qEdD zJHsQ3As&lKu9?uaWKWh)yVZELHV`C-7l)T|`=x70-@E&+NHgIa_ew1rK6_IwC6%71 z`&U~st=(M6HY6Lu;JS{2M&91sgGD>4=wxm1gL)8jCmrD4#+T5~Zq|XUK_gPYmwt|h zdd&7zFt;uHLbJ)}`I;Q`k?o%HPRd+ldp7SjQC&>4fQWd3nJ|EqeB-K=GC0lHDp7j$ zE`H)*Uhr&Zy6Syw=U@b00M+yW3r4+dLqpD0Je8i!7qUg70fE|V-r&i1^o}Bf%@IhJ zN$>f|6@(-TlT?22H)MKLQ|x30{X{dY4s2Kl9qMcmO0}}kz1#;cWx?;}KtgLQCcvWx zTub~3q4kfdh#XI~)ka=VfO-S}C5pC-u}3M8_+H{kX`P~kf5l}dxA^Nwf|vT>LsqK9 zpB{B&tc}-)pS|6Krlzd z1{HO}=G*z$t43CUB^`s-huVc~XVx{Js~QV9uXTu7=WmR?*DRc?H32g?PlByzv-X_Ya0DC9btCk_ z#C0WM&RbnZCs&2mM#>hCw= zEoF^xAlZ6%1*^?fgyhc}V$aF)R)_<;WA#g)O7xEu)BQW7pLz=uR4(lZP@8y%j=~xh z+mqjfP!L;w@3y`&zDs>^7mWn-+JWm9W**IPf9I6+E^p7T4i8p!xcRCXY+^jIt|tg< z=E7nZoyvZZK3L-q^b8R4f-!;zm2VTZX8?~F>QXr9M3M1N?6ZL8 zW(anP%%kcsZjo7B1Yzu^#|zLyzRy9;2g%? z)Cj#4JEb{y=}da24-5cpX((pK#1PnZeE4a32T5 z6wny*cc_k1q~zfp5YCHxN{xU;a|XYym@c#ojuayC#<53=12Hiy6yjJ-!B?iT>twsv zmk?9ehw}Dj_08w%ygvcgHri6Yl988^qtOah*79Rg2rly5?B@x~P)7-ke`B&o*=NIk z6*WLWab0rnj~P?8UCY9$sX1t84$A4rwundSszi(22}zbc<=g-pqKN=_Eg z(U=fQBI&t!6k~{@#wA?;Td=MS!-uI#Q4j!bROQX^N4-LQ_Kl{W@i+(^m?JvYbh9dZ z!hZ4|yIGY&9jF80emx$yJn=r;Kfn+7`t{5aLQWI0u|YIu_HQyY0xK*Z=2oGq1ym_g zwq7|^EM`b9n>@OPKjADRGu)JLo*9QjuoW|W<3Euv`TvWuZwwM8*wSp>wrv}?ZQr(S z+qP}nwr$(CZQI>@-^|YLo0u0bcB>*zRaQl1)Q^*q87DvJ@Zl^T0|YU;1Dhrn*pg4k z(n0b?%vRh!(lnx<>IAG`m=feNrf*JDX|_WJThKka;qe6c&Y$CrGNu>IT`SRJl==_XqjK|qHH|EOrxHfU_ zxm3%77A*bMtj*NeWdX;Q@*LzelGnEjm&eW)vX42)fpr`$e75- zwV!?m1nQm?HgoDE5^m$sDjJ{%_fk;bA+_tOPLh8#vbr?uI>NcVz=zMJGOM~Ut6DW* z;~iV8Ob`vok&L(<&iDHD<`g7D0TE}l@3>JAtfO*Dtn4}EB-@MPDT?Jng3si1LLRg9 zDfasWkLAGg7>>>72`qEs+qZ%7f(rgjV<}e&-#8QEm7($e7Tf$5g84YEP(Wp`e9N$+ z(g%#haLW5%Z9@MOwf_HXLbI^5{JTA926iT<*`7x3GW0VMpSJs(G zj*?}^$K#}g|3}e2X;q6c34Ra*9^Ml_Js5-Be;+uQL5`78F;E#=MMuF zsJht7kebcqdDF+(^>wLP$7|>Nq~j&q<7D%py9N-%x4ITcFck$8lilp2r$quBw?0n-~mx!R)77t=6KER1g=?xPZ0e3Zr^B^RE5Ha6L#$DZ916Yb1Z|=^u++9qGpLIYI%HT}K z`}SR!S;RvzXP1;$ddw4q82#Lb{_`YQY_Y>z*jz-y9y7XdPmtV>m$sw6WsX9-G{Bbd ztg5EHym@*NXmQ-9)u+pDGbAJB!6KFL)FsQg$f-=>6e{86-C9j?R=0k%Xwb@VHd{Eo225gw>1}Q%Wu${9w0hsqniERKi<&>g* zsbwBRusB81lH&9F`pOSgOhU3SXZ4~$I9IZT)f?G+^WNtLQ>D}otS5u+jZGc@`{KCF zcx{si=RMjoe=C>wFJb3Y7uR zNxmmdtVh9uyRd$Auz&E8hX;sLA?M(M>*&y+W1-DrVe!}kscVt}wQ3v>2!?kRIgb%DMFTnqxVE{pBCld^T+Oz~z^g!oR@x%9dV*S-3U)#+- z6rT){T<=v$4I0G;moPiJug0^{yZ^Rcf{lz7)b*SBpub0k#?=l(L(O6uRiS`D^L?7tLykma&)G{)$2;gm+h37%pc(bp_!+Q@g2&F z(21Q|29qI+%@u>uc7}Kw-|$O?ye-OW1h^z+wkeRi+_xFHDYHM@CaWn+JcGt{F9)2G zWg~!L`UeIgz!d~o;$y*%LqfR^ux5m;z>B|c0|7N{k_wqbU}wVK(Vh)kXy{HV5)-Fy ztT)x~`R^K++R2B8vZ&`bGMJZlOnB|09w58fw4JOiYj1JRTGI=WN7LwiO@gCJ)`yfD zp&sKE1_chzi=Qz?c_I6kH4ErnwEXU5N4EoQWDQ|pjGy5HY-ah=Ma`#GpeqK?8V78-9jq`eMIN1*$6)k1H!%%qWo))=e|-Ib%bG!TxHLPxz36GX zEs~874-Kic5@hxDW756#dDEYft!>)vi_ADNTar?2{_<#k|DI&QY*4|9TCz3?r(Imu zCg(X=Ht~7(b2x!Dyg8xw-YS-&y=GRV9205ZYc?7LE=&Mk#JMt$QxQ_IHQQgA^tXmF zz8sdk#B`%-lQ7m#3QN0(gnGD#jOyn^>Ypp?MpdGYxYCVSOZ5Iq*GIDTJrsle%1_4@ zpMMK0E+y!J;3H#p$3Jfr%`Fy0;ufsJ+(GPIb2+X}@}IEg@0$C(sx~@qnsA2n3Yt-W zKSv2Zo^t07t`q0B%UzI}BOl?Dx?5?VKy^hBNlKX>SRXhZK+Xbi4%gzGL`{?IN1hz~ zvSiSx9tk^@fnV0lRq^$sG2B>VNgg(scmsvk*)MNmNQel5St(bLBt2_@e!z=0GNjw{ z#635o7i`8v)FBSacqcp^&BSi&PP zeyXm}8Dfbv!_MBtec9nFy?rX!^HH%gDJ?NowK?V-y=_eXv)@5QZmG#kyWnA)_P6TJpM#0(?zrIrHd0cP{&jAovxB*oK-@w*cC|&&uz@8Z4kGI1)&0A| z#HH57>++-y)aiPBYPjED$gRsxaxA2@hzswSHIZAhBma6j>%C~g@>vi;2kmsAVR=|& z!}^YG6bQSpbi|3XxwvP`XCe2)$3nMd?&-0U+!53bjsiPoyE&@ZP2U z+nzzOfTz?vw|Ht%X^~}K=7pZl>tPXYRht9Ds*R{^Y>v(?uf&wg#5kRH90M`2VW^I* z>;$8G7n{&Dal3(-ljFg)kVzW1)?B*lGIKC&V?;;>-VNnQ+p8FYw?}MNuawZSFj2+$ zPLWFF60bMp4n6uR^L;HYRsHI(+O-<84=WSf4e1NxmK+uh0&fMqy<(}L;i%1)E=uQ8gL4ea8JgJa zFRJl*RCW?gi{W^PtliCy>(Lew4)r)JRu&N=3`(>|)oSVN4W>)ykrE?>a3iNhm%q#+ zijAzuHI-c4r^Di;B2c^UQ)Wx`0>HWuTJ%;Qq6OHZt}t;iQHc*7$0umL1-Q(6ZJlRzy-6(gB^V!eCck_$ zbYGJudo((+E)fupCe@Pq1Fsx`^!B~N^Vhxv2$+x%2#5@VOhhsq9G%`Q z-_yb=H-%(tuxL6kP8cbLouPFi;UYGL{0r(*O~qUSrbzk1MR@8@}%WP!h?v#$FN{hD`22B{Cv69GB@nX?r zRD7iQhvysEJ0L^(UoGnY$>sXL7WE9Qj4W*bZdK3B%Jx5yrHUf;TV6Ml0OpRbp*y2& zu!Fhzk-+);ysxaUYJ$XpIickK{Q0Ap#9SbP*f6htLPE>%nYBDC=t7Qn0i~jzqR{Q$ z;Fy8|h|I#Wdc|%_F2=}PoiERwTMZp1Ggb9BR~{YZ?f*F3b>Z~_Wzia8?M62yEVd`P zX`eOu$@L*SuNd9tJ+vJ(j+=WO$hmypzctZTJ}+xr@B_W}*2st%$lo1nE?(g0H~mi- zBLejES_U2f1B2nTP*D&Y-wZh#+pdI4Rcc0am*%uA=eSJq03Tr|0tnHb+|HY! z@^1gQwlHu|8XJAUG{V2%46GwyVL_00KlM%Tc&|D+GM=0Gp>LX3J?p*%*VDo^vC0jy zjw0^O0U;QI>?R1!cZ1(8T}fR@c?RH@0Xv>eZudHouU7Hic5P2*)9XaB5<&byY$C=I z?6&H3P?1Bg1C5uKmzee^3v}TFcgNe)HGYQmphb=nfGuZ~*D#N8FpO*6E=2&>;gnybqAR$QluVWi)) zGV=S>9a0=4(N%%s!j>1j2t*tyk*hf3jC-MK(RBpDwuU|`r70-=J*V#yrU+5Is;ozy z*dLrQ6#svRA46TYO4DBmg7Ewx{~09P^iu!tgFU=d56M$kwEuh?=+o6z-gS0E74!J2 zu`cxb@*Lx%FHQR8F(39{9sWnxKag%b&w`?_+VEgQsMV^i52pZ|JN&S+4ZanKQTz+D zK#zd$@IwVnns*zp;Zxx=ilRmp=LO$|054>RVTf0)hxa$Z~@{7&~Zk|F}h%mHEfz?k9)}fHjmnKh#HL^IK&f z%|>^uha&q2Y&S`#5A+|O2qOH@+@U=$&~Sw;*g?c&4%YQ>g&v6mwgrAIeULB*WA0Bv zeo&zEhxU+D2zANv<{m7vm`hugz=zKZLkQ)`f&ZdnXQqI((T;C9r08O;Nm>p%p)pgd z=ggGnvc-cW{0znd6bg`m8wN9gd%mJeu znXyt(7LcKz)8Qf8H&T|WDB0eDCuvrp0SXS!bmMek%NWvS|Mxk8@`j&~T|_q*8AylX zoM2`z`5!wRG_m;A86x`7!Mwrw+eqRoBdaJnF&Nj>+2Uj>y8`W)kU7d(;z}=|o8Oak zjlGwHN#}Ukv5TFdfvjU!PoL1}c4USziL*SLQdjF+)5_(SH>L|YqaA7$T2)6|p$WE1 zkT$kok}U|^Hy)9x*_mx1$UJC`s$A6*vJS1>iU0quulj;2SXC&(Uw6hYfdEXxJ_QU5JiX1E*KWn5>7_$Hf@erI)lxW}AF=xX3ADMQq8JD{=Ia7VX zkl4)HT~s zzCt_Z-c2gTP2N&KyzZXrXpK*N@0=VZTB;xSzDVC!`}XoLYJuO}z?3MPx2Lk_fMI;E zFR^jfE*qp*?d3Uq$?$_LTsC#gO)SnME3i7uj>j4VoF;xg7Z%jZef*PFoz+pRq$bD3 zHFMG_*%kBc^PL{GPvze)Q^?>U^zTqRK}{YRsj1dFS`K4;R(*Vf(B`1ek<{=#kX3q7P(x{K5sFu3{|P6z~i+2ppA9!BmVV zXrs6EAYFV4bD?dm{^8DjBUn)eCJ3M(NzF&XpM1R9PtQTn?dZp+2Ti}pu1+IZ4IQdk zk@`gwhO?~8Bi)mev7kIc)vEAFOvCB_0AQZ>QN^=h6q2_j(U0ysj+5fffhR zKYoQjCmfI_>KB?Zki{Vh3~Abn@LYi!_*Es}EvgEmY#Ad5z6be?hNunP(TA5|C-h`5 z@KA3aHs9;;p^;_B5M|PnB?sV1;f%uLeyb+0 zkD3)MftgK4V&u)QaSC-VLVe1va?y2#O$j;1``76bDzN;)8N80d|n@ukfn&;@(i z7vrjv+j7ZQV|kbl{cRYx=aLlZ7(TuG`;zpjlQpvE=7+_*O}=2a%S6Rn@@AIN75f@X z_K;iSMbGUmtN{rPrZd=Kzhq``!w#7-V7SWsSW*3#aA_{{7qY7aV8n3l406JEEe%~w za0NqEJalCxljg4==r-cUrL;^&*IKnQ0Qa+tgPFZ)s3d@s^q2f1C03!wQNnDNRJ?a-?Nu3J+)+S#J?m=FP_XdOV*}oNWEa zQkZ|Dr9wDTlH(Jy;^VUt?BCM*X7458%mj$C!#(CY9>HmfUF>AIlB)AAbRDFJC|q&0 zMhqEg!%;rxiU-R5hXxx`Avchhw|80@Sp%kfL)7W>uB={YMKz(7)W*irem$|8`_LgX zz?>oR3$Q<6i20P&3+NLxq&O`mm>P9atLM;v&Ck!++!!ynv-Vxwx)Z1?BQCh9niT3BpY4VglY6@UH5Rg{d??k2EGH6xo zFj{z?I!v@u1cVu}^WdQ?6f^JsVYxt8({+74dmm(4c+UYXuw%Fhryk$f_%RyaJsfP# z1FVIyllh7PHH9K<5%%{xJP>3G&sCJ908GIvIxwde}cQ+n2P6f!)yr$|96I4syjM zr3Uy4Yf4%=fJpK@I!{zwSYTjmbW#m#$Mc{<)$ZKAyT{CrRwu}M*A+LIu#tCz{l-5d zS0EB|e%2FdF&Dy`iOFexI4Wl_&d)>5;vHgVqg;0yxkQZZqbgOxx^T9{5ytpxA9Yq^ z1@!2r}x7~GD0!Y)IK4!e&3FigogjiDr4|zW#>>rBdbm6ooUzv# z6zKa+Gk}iu0uv|ZqIzz|^wQ}Qd3jnWpG9((HJ*4tJ(~Sz;%lIP5=L2GYiQzj-a@fY zUzm7oQ3c(9?02%IQXhq0(xUPzJ4&o$pB$*lUjIl;S}XiQE<$&?$D?>ZM(D6#d3f35yw2@6?`$o5L(26#Ij?rIXUPXY&YZ+R%}*ldDxd^c~4#R(7Y`xp{H==H6=BxHGAY9wx%u&pRjen zw_{F$)p>lZLBWIMQv5toBCk|l#2)zEmKw7hO0&0nDJN&9)0mkb0(cX#sUSD$w+GfR zVtSi>iMDYZ%|AyqQp&AkFoE4i0yHg7^E3X6c%XwwU;vA{Y!VC|e1=Da7=|dbZ1>cX zhd4_~NlVMfNJ}4;j}4+pVK|%|$i;?_)_r)cpN&6d>@01zMoZp%@!N3ncW3n%mSwp? z>tdzZ@wn=EeT98>lM$sP(iB=fayYws9;wmykTAEEVnN&{;Ii}fAAmy-0B`J0yJCNJ zbNTG}Y4)+~mPpfqqAFdbGGA)r!mkBBNG}mE+7U{T7c;NA?Wo9aT&_h3G`gczt8-Sk z_T-Xe^=tGzX2Ld@7)WRf5y;HLn6vM6~xE+6g zF-|nMAtS|BvsV=l!%jEdiI@C!T5%qWL`s>@uBWCr$hWCfqwM$7GT83J5 z-?THG$d{i$ZA525l{Utdv?;O22W?t1qEhMIJ+9Izy;b=LnhyD&;c3;uzoOOJ%vFq) zgkiixgRJO?qWcG?&L_aYA~8=4GoX(TXbpNVK9it$s-vU<;3hkN*_CTO-tp(I*JOKG ztTx-Jb#4yA2Mx&|Q8YA~TTfKXtk#Q~ZP^k%MZCU8zYqFa@w~C%0Mm*VLvp|vf}G0T z%c3c2J5g>4Px>7vfCyYVu~ zBj+jx@<(bsxC+S`<>M0;=Hn9-L~HuiA}BF^IsxV`PUZF|3;Xg}EmJ!HIt1`fqeZ53 zD!k_U_uWBOnIIZXazNO-^<+JG%ofwjghKc)ki-&roDcScJ3mfrpi|y@u__SX;e0X5 z06oP0K2+>M%to;Lf>LG5H-}yxj;o{oawchL3eGm#LWofDa$1bN8iqVNcssoNYJ6YV zm<&fR+ZIYFcFvPJns-y>)yn4rsa07cJC|q~^=5o1Q$tAorcvXygn4xVkC<7L66i8z zfPwTYtX0lbHRCSxOPYc^cR)>0732T1Aq}F}yWRju2U2;#)9TnqIg(LmqrM#n<_ZR$ ztH>z_gC^5bsp49jKl^iMHzfa%n<9*XL7H&u!6^r4_ulB$AUzi3=n~8vgsw=nix(phoeF7*NT)`m;cCEA-=xe-ss0(&z0(qg=F)Gd_7V%IWHg3Xd^ zY66Gt&S7dw7IgOk*CFAVzRt-;%FNXnLZ0!b>{s>T!Fs2Ge=c7t2w~_!#KCiHrlE(% z3Xq08;??)@QrS2E7`}UBWc!h&?A@*+J^t17Yp@5JzHN9^+hkzz7oRP}!n5RHtb;pb zQk9#5VW}h$dpC$pvOEfadSY!kV?&W$nGe`h2;~IEH-<>KKUW~pOJKbQ9%iJ}K-*lf zqkX2?Vl$Q$9_&Ut=w$ge-n%F7*|DVF%2fI={Sdzr*}z>fHb1d(?{-j_+0L-fvGCHq z8Q3OX-MUkf5$>b)kf*dDGkSd$qR}}`pf{V0=r6)J7&fA&@uV+aWIb@ZF5c#5z4FZ7 ztC*_v>bxSl8o!D$Z&+2+2t|p{=*MWH)xeS7-C-z`%=cXsygI)Q<{X6nEym(3K0Hie zU?gZzni!o?Pj4{J_TG!lC;Sr|pOtkla97osnaSi0q9w$53W^El_C3M|TGG^lC6iH~ zw}su|XfL!?c&ar>%?rqUt8QJT>ju-D;&*msgj73E8xyf?GyOn>>aaSn&DFzNO7CnR z(zJUR?M74eG_hcFod57y8?RbRmRr)qx411x_zGIhIkCzHV+imGg(#;8LQ@E45k~@< zGgse`hI1At0-69G=C!d*xNQCYV{3Tqtm+ckZ<|IqA((5nF?^U&n(E26?C-g}-p_Lo zgS5QXTeDAeRM~ z2H26$L3=zLAse;N3*puidPO$3@lQf7Dj=e#EVXPPfEB!`8nrA3U)Gol0L8=}CJa*_ zz6-=GJAe=JBNlOE7llbRevnuygyKY=q%UGn@*mC%UeMNjkhJRDzf{$pVVh%?2Ycax zmLH5ag2#%T6+Kk4-J{I5FVq!W!cD24k$77Znk*grRRHD>(s+=|7y?MjT@C;kRO!%y zJr2+)Bu{T3O|m?IR!|^)>2bg=Vu5(S+DcK-ZpsbXjhNaa&xto%E%P?yYWn0|qhzOK zCvc6iszci=tEG&mpPfFYF2a9R@Mig+GRX{V49x#lCYhO$;lIIHuDC5!{}#NLyl{bq z7ySU4ssXWayO|?_dE}6s=1S?q@+I>9xdy@V^XWq&gjM1sV#&kj@Cow~iK*pQeh~`_ z`~|mU1nTx9R%2H8y&5(c2hf$6RLnq!lJ2y0_*}<)WKq6n@|0AR|2-={08Bu^0UQHh z@cC8`#~O<9TwQk|d*{tuUtD@}*v#s`NxrZT#L>6kF@LN5O}kxVu9$JA@cguhbbf zKj>yni22N87tUCx3`l@^0X@cU2U1cX?H_%+UV|#_YnR4L!Pne(fhuJkjY^3c^gWw3 zJ1YruY%}uJubNsVo$sN4g4$}dPP_8Ve4zEYi#&-S5fj>^p~Fz!b;@@FQ=O&IDgG6A zGIAu&%pgYUuzJ)A65o7;dO#7IkWw3;4>iL$>t+o&L#vqwhelMsN-d=(nkoD2oZYE2onciRFl@6jd<9X&n;S z*K%n{$3Y!ZaX`#zwD7g?r-Zl)yKDi%e<2VtFUktQ{F`w5gU!lT$nLpoyPP+?*B!7_ zS7CrRLJ(bmqhlLszj>{Cs(SwFgm!w*^dmv|gDnLqPXoRSzH4C5d@kkQM-K1c+k)^_&ZGQ_UVbSqpj`2%WG-?7-))ArPFpO!=05?C7=@NvHsG$_t_WV z!B)qeFrNC`T z@3`;Yy2U0Ox9f*VH+0k(OUBSkc1;VQe#LBTGqzU!Ip5pubQ2w4cG5dPtp2YrlQe@9 zGg}9iSD9O@1HRN|z1_lb=A;&<%fvKqZEi6s%lojE{q?%i{Tj}9S+UzFhRJ~=eH(iR zX6ZEgt|hMYL#&yK@$|7&hT#dP<>Zou<>D3Ap``-STjIkKpy*RPxXfM5hbm%HI*>L+ZUDPT^HQ23&_T`^rm6kVomusm$A^*fsC2?zCwIJNk(eXW zk4HTeWMpAi5|*O^Zu6pn1A;vyWl3FkaWMT8l3LZwoPqfu06hYc6S=H9WZ`;99Xi3- zvM{}tx$xI!T@&rni!I9==Y@wXug~lYfPs#8VVT;;^WIFim(^h0*ZlIZH$n8gq;r~9 zzdc4!`lzk`xZa&5l!WmeaTIZ^6EVz3H!Oaz{*IO`8Eu#0Grb)x9YfL;fgIYHqJ*{| zI-Vxtrn-jjVwxy7O4A#TFiU(IFup7dxPgwE2`o6>TLhP?AwI=pq!H$`0c4K1;e>xW z>#`U33n{&%dlQ<6tgLKpvLzl$hsXH(v4Q4j!&+{~9ptksQZd-tQ80$y+R*nt^lDqp^2pX;T>%5*agMXAh;2!cx3qHBt~ORT(G5eyNGAgw%0?H{$3yR@dzS(?jhCC9@E|s6 z51;j*^y`8cnl5SLI z?gZ?Q&@zzbhoQn6#KO>`LsIyk?IE6B|P_UXM&BtcGPa9)S`R^-NY1+L$icqwH&YZve z{!E$)aJ48n3@KQEqJ4E;9l^(+RZ8Xr6}*qIUN`-CK7VLduaLXd>O#&UeNAvlKMCS1doC9p??QGWL(XBqhog-7GMM3QVJm(&auky!*u zDA>UvP*Gj4w2h$qi1gzyC4r(EzX|0K8oQaTAEN1tAf-FdiC;{5jA7jtV7`aRN@&t0 zv6J?I_o!Z*C5#x!gA2UYCZq&q$H+Az+I}ZfPqHO%C2PSoh*I$jK97h?KN_vJVRY7190=I%x^QSxn|NY|S89oJW3e2u zCRDJzBB$I#JwOEYnhiG+g^s3EtFDys)c|Af;q)Yu(S>6IZ5teNZJUQ(`f;mjkHoW9 zKT_tAx3x&682=p?NrHZt9fbbMojAEenC7G`0~0j{vDo4|MCX97UU5-6xAaHSKDSGy zycn3DqHcc2 zLxE6dBqBE(tW@JPZeDG*s6va4YnB#@HmP(=Q5DcqzQnUytw$z5WM)MqzpfpqPBC6z zpJTgGC%nDg9W8Gh-jITh=&0MCzOD~kbpHf1*A|n!uo7>pJ?XjKZx7zkBEICH{V0ud zVxiaWJ%y6TXaiqJFKc13JVuBmv~)Llc8SdNmBeI!=;&Ndu7@K$6Riic3)IpY*SqSp zsZ?zaoSIi9Ey{5RXJ5xCx;u4RQNWLk93L1g2_@yADm7G`j$&O>Mqgq|%1-?$KVp8y z>G%VB3#Zmnwdi06rZ*wYmEeYw@Of+;%({T5KA)qyqDf~7xfm2xV_^^4oUNi_sRUGv z#0Z+5HeA>Cax)Q}{3Dh!=PHs2EKNp7E{;z@pAq(EHaZ1%jk z*qr+DXw+7DS{;63fapPv+})_CNzU|-hr3fWZ34H{6Cy&EUAv=$K_4 zf|f$VMUjh&s^#-1Jc^S!-%n4bKWt(ryqyVn7}BJOV1r?MlS|g39iPOD8vtEP^!69B z>kB*^PUXxT^kepw7e_tR>^*e*5k;4PoHFkk-DK^E?xq*p^VW{urbBOg0}-ImghZlf zlJ+wV!86V|^>ONxuTrB^=qIqGcUL1nxSzd7b`cE)HGh#ujz~@rrGzHQ`_dG2R(D$UHpdag2`Q7AZlRT8g-uLra#L%Hm$uR6>qs4ffrNEUKsp!bg7cqEX_& z_gwSBOTV6CVc>37t(Knp?oK1n%AKmSXuJ*EE2bX56QpfE6@<>pna@HbRH~#nHPtz) z+4Q#L2#mficztGY?C>Kv{f$q$f5!Mp)S#)<8*RNpWa@Hs-WH#9UXg`tQ`QMhV8m-{ zU}B!FVy^rTTu^bhlH^oV=Oi=Nx{iD5J_Knst;);I+uim)W7IBzItH%w>7oWx>0=Q* zi|gU(;f~4?ZWi+5y~24|oDL);IE~41=6I|gk_g)*_)FNuty{o4&0FYDiXOItZ;*sL zpcJ@^p~pG=WZ9je&y<)%<0iyDS(c!Q(u zqFX5Gc&UzB3!2fb@k8(B6t|SSwe1N*c^U=)6$fP!EkXcB| zOvLbb@evxB7lV)aCd962J2y3`x1V!S*S%azM!viIt}Q%#i&@TWs)oZpt-KWXUD$(Otf@2|i-;;&BG1|! zf2(9dEi8n1e=wP7_|XXseaIlmWH3DagfUS(#o$&qmt@G(M-~Hh@eFE{MlxM{iJZL0 z@ar=5H2MK1MNG^ITPCf!ZAxU!a6-J9n=yuFj{9^EY@#^|C!_l@AcP-j;g7Z!E*fUM z^4;}x@JEMA$;gel^{8l0#&W%lM$Ps{z54ty&s>O>ZSGA$wxvI(I|C+!q_>H)six-X zr3-0{hpXXQb8fEHL^Kz+3PSvLd{dQ6jn#*G^OV?(sp&RKPPhBZS8$eRkP3Cb!BQbesbJ|ZDMW5k?9xvYnw4)*p$jbs5!SjJj%hOo_oZvP(|*FQ)OaDIph z4G|67NyQ{V3=-3O_1M*+P)?)}jaUkaw5yECLoL3uOi8qV_3qeaI0pjL$|b1>t)QGd0$o1M2b&M4`s@>$9+b>GYCPn8sLh{FbZgG;f@|~J@kWZsZt%|I-cv+l9 zbxQ8j*%+HC^a=qpUh=gcbL}P4BkHphyF$SBgGZJsYNVY}j+2H+5)sgrk(uoZ?Il`{ z&z~>%PuV?Wjd`9~WLkc?-~W|Q%E0wn9hg}enX$ZwhMs-EDUdGa6oCn))c6Lnz~W2> zUr0$2dMYsC8ZoXtxwEUGdYkZvAp8qD^2aXGO3I*q?V{I2Gv?E3E^R-BxwbB+^iI_a zbR!}Yj?=!h7SqqPmYA6CBA6RmJ6myz%T>PxXmS&2%CgBiPD-MH!`@MN>I|Y`*?1iI z@{BU=?%}L9e#9R)kQywaCV-XlaG1ePZ22;mD3{6>TJqO8xj3m~Vr z5i%x2R&fpjntIk(-#UosNqrHNE&NblT~bgY@C@{O0DgRj3;s?m3|e7FXx9nI+Ay_C zy3bFtc_m2tWk}iy!aW}2xg8o55oSgJyV4g#^;d)*!eFntXZQ^m!Ytm*Hy!j`U{jFj z9>fg6lzHe#J!C#Uw!R+xb{5b?oHzI~X)lAIjBA^Ka;G~=&9GJ+^pwRnU)d%scym)y8L*F7r>YX0Vs z=t5-62(#rcQwQ^_><+2HpSDVM!U0ZD}Gbxi(w?Xe_I6=ZigQguE+iYfS-wP&0h9y zkcbVs?+AY=2={f22xDZg0sOjv>w;R7k9K=6 zb1MX+o}|hwbLqI{pb`u8t4+I=&0Zk)opSV7y3a_8dd^pkjvm35?DfUZaL4aF7WJi; zt0!p&+z!0;Gxwze4jjPQ;hr3GNiYjuS4=O`f}F27eIn#ul~+fmq`^|$lWkc4yHmVJ znE6{#l&ehtg&cNXnFDDuS!v$xVK$r*Og7_nZMph|B*)pWqJZl|o7t@MT&jy)Dy1`J z9$}Tdc_E^$5y~wMQI&5hjg@OH_nSEMG zW8oXJ@Io)&kTjeT!|qR{Sdj#dEZT|8-q zbR4TNS6%O;zSKJ&r^*4Zn;4Eq77i)vMPRgP3HO;C!jSKs-63-Uvp|*ecSMRy1jSP? zLM=KtqMlABFq%&XR)IR@g37Q7vbmOvR7KO2(&#(jqYI&{?Q_|A$I#3&KLxt~K@~wI zm^RClttsHh29yCS$c>a`&8-$fi}_tWq)d+z`wK#gGYj}!c(FNP&nIN z?u3ul?rLaNyb0E(T}_|6&L0z&89MUUa4?3tvFT~=yq}Q?Hm5LwnL7 zgdNGJPzmTgJ}_JbSGx;tI|Vt0k_xFwTBcutQZzmoL#d_QT5gsQrvRAphh6~=metwF z35Lp6d2l775w0Tq7Tqh9CuogDXP2rvO9N}`^WM@>-KHS#73v|g1zHI-pq<~SHoBAcK5FXE6sxC9lUgT z%bR~u-Djr%f684}db9Sk4BFKb*`L7U53L_f8(n`btvlKC^zC zrBXGqW0$iyN#xEvy%u#BnrCd`#$4&&oO~SYKMcRx;VF<{SPTwYWLO*EEGWXAG_F+~ zIg~zc-LqT%BY9WE_f{P5RJe`0)n3KJI4VW|2rnBO<}lpK_U!z$g@ppdhbEKnTiJ9^P6754yO@D`e zGUL!Y4dgFD(q|d;>=$l=U4mW0UBcuI$SKYV_BKzIPZgvua!#$L)39V_spqWcR1C>i zM`HBT#Y}A$Py<=YGoh5-1&2h%?p?4l}FAs;6ov zb`+~!%a6SDyG(}8hW_K#?C2l%i_|#mOyXpXL+=74gXXPtS-#58Y{EOABv)uucP#fT zkOFHAqV@*bP54%u6tCBie>Gn`!BImNU7c%hi0WW2|^yx?6#gCHfgv{0(#E=hltNK*9jA|naQV$6S0|ZKH{`{^)BE9IikZ50#%KSLiLsaNJ3$wZ|ACWc*YXXX=X$}&zZwkxMA%kz zvo*q}6_C=i{f{86XZ5$KB1$tnWGy8t%8%St)-FG-zNUw0rl@FBP?wHeYQ}P zve@8*@A^==q~`{?X>le%7hey6vl37^RZCWm&P@)Y#{0bac#aa2fELR>Ihfi=8?(%L z(Rp5IEx($uzt)~854Jl`v1ivwsV)^@k6sv7U5eRq{~6xdD$8QkAnw`zZNYw3ve#*c zxTJI9arjL3t+{+ujLY+KBJfuD&S2Tho7_!(;HU`q(Jgt=x_uqJa>4aOLAIJ$TqN1$ zn%&d%@bav<`1~?)uu{hP67!yOvSRgn{I(-*9-KU-?P`2pdZgZM{`GQk;jbxOz4t9v z)s36MPFE8Y(x!A9q$O}H)xB8>riPp^V;JjABJ1OOR(Mz`el$5gD|4gJDw7o|iyj0Y zU?~o~NrG`{MVmUw`5@&^FIPzZG!|F-J!VCtzRO>GX3;SAp%3yf%>K9hN<`|jOjI`j4MoOUI?{-#osxiqYUzOS z!o`qo+2pxqV#VQ$Fn@n}q#pH8*CgCFeu8k6q+#E_5agi7a?>gzt%5)kb$mxV zSR=pZ{btnY7W`W%Q>3FVw7x)eTw1^!{zxk@^XP}87vR{QGx8oj^=z?Uq^KZm78mZA zG%8fp|7z?jgW_nntsw*_!QDN$ySuvucNttJxVyU(++Bv??(PHzmk^u@?%{I3^XENv zPo4Uzx~hA1_m8Kl_p|q^-m(A$7z7yd09oX8ZJBDyyCJUnYWyY z8POUQb?*qq)aqp(WpiZa#{huDNvlArMXcQ^s+sl+gsf>*WF5rzzt4KQx)I)LZEDoo z6r=4;K@lC8+@`aqrfsBwe|AYSu`X$pR1t3G{;-b4uj?@AY zh#=G|UxkeJHMdY9zIk@quaC%o$rPvm)8_g|9{InpBo6L>k2J}fwxO(OVGzG)14kAd zrM+1siq!Ks+}FYu)PnIgh9$frpWSty-;DY;qPylZQ{Uxign3xv@O5wk+H`+3H<@y- z&9iTRr}(*O$%&4um|)wj@lag}QaejochCjcPO-{p4ezOt8fdpR4ubN0yrcI#%E#k= z4}9J}{ORTcx{IJ;XHY2Wu*!xrKKcQ2+LUDc3>cMuerR))$-gdtSYu>E&m4@+=3;8m z_{Hy5SRwyXsmt}CA!BjV+x8{tC+f*syCE|Yi%K$Qt%tly&=sR94Ggv%nVNW(M3(rt z*vFHki0t8RtN2Vw#XvY!xKf1Ff_%~553f%YiHdWEl&D66h+k!wt>`v5}g*Q{_A!^=Xa;OllwhGr(S1Ho%@Ze z0mdQsmj3U&wo@Ndqx}GWmn!~#^pZSusB8w=i*j}XZ{KI%%H@GrAKFZX9JwEHk9EOkJaLud)bueyn#nydN`HUaV4DR$NvvYw5=eaoOUS z?&Bmzu{2XnS+bR2`Ftoemf1M|DH*I{Ml5+{(xi!$qLAN62Km>k2{ zVf%h4CvbD&+sqJ0zTkC)13mZO+F-r>CGBJGXdXK4@^kcUR*^!EjNCrMh|Y=dhpzFd z?qA=-46`ze#)`-Gl5hTSMb!`Ek}tkXe<)?xY8&RWqdxWwl3@5?a}G0Vn9jzs>RW<* z*J`RlX9uiJ5^K_#R(#!@b*}T+Jf_{?YZW?$QXi!@@}|x$0|FA(TfL0(_ikRwc|3jm zBG`J~Botc#0zdrTpvF90tN)Wd|0A~l7x%-(%KdLdH+3`mo#=)^Ua>khj2K&P4-FB5 zn!3lO0&Ldc8>sp0Z0w79alM`=o`!I2Wp`LPtY@;4G<$PqR6-xGQ=R|5I++59P9EAutLrTPn@^!?VTkYOBMHy~EvVho7?ji2&0If-is z&Wxo1ieSu_dNG)@0yYUS-u&sCa50=RV!7iyMx+{Tr5(``c8RExbTYqGZulZju7$fr zHp!CZ5{5BTgw=4$ze1g36*wf90;`4abe0X;K3o(YFJvz6I=Mn?{?Yo5dTB zFQ6|eigFy(u;oD-{eYcRXIox<;KW|;XG51EZmxCvKV&iR9h0urFnmIL~kkkPvq4=^V{u_Vc&7a@dAE zaz-Sy+PsU5+P=NQ7B~~H{|5u&`G-UN7dcchvwa`t$D&Ne#__+pGOlhwGB$Qrp8v|~ z*m!yWXY^USPDgOiu_o_fkIy=q&VguAQFlDca-y>D&s42N9st0L ztY~+UxuZyEmx-pRPn(sfD3D-13`A?QvuYdIWTmXJ9AKvux`@ZG#lpHP3~0 zw-TgR=vQpWmK$fh&yyRjkuUN0@y-jDTw%~byYn9oX9lp(XfOS8jPL{bNCIhAq39q&WK}BG;JR$hlm|H`G2c9i(XVT z-N&PwU*^D{e~|@Z)L@89Xcp)q?0+1S?nlr45C%o!g#nLBA|xuNPK+RKTNUzqVGq48 z>_!vc8SAhDQx(mGsRBn{Ocfd`?XxFL;DmYxl&aSlZy*Ua6klQmEI%HUu7V((=+Epe zDE4MV6etS^M9L$aHMbK!lT%ToA?OWf+(^PNNe!^etP_$W1tpZ$e=Hb(P~J++Ql_Y0 zNwUiLOnUvom0v=I-o(;gsGn0d{Xs$VA>!Mdi!*v@L1ca(bZMbSNx{1S-}68a@)zic zka$ctHTEG^8-`G2TNFQRRkA%6XV2t@#FDLoe9w4wO`oIMKiNlNzmZh-aOMnmnWB{T zx;=&zBELR}t`>|_IPVdtp;M{J&%qqWl5O;(c~t21j~HKK5g`WWiIaI3t|ZGKuznt= zuEYTvT*)Fg8@NjJ4oFh9epJv9I>j1?r&hTUo1~74`4y5}DqIkNkqh$~29zc(Ras!6 zl!_$3l`IJ@B`47Y^|>^1mi0p=3V_H~_5qt7I$HaZIIEM|5Snx@`3dP$qO`Qk2Ty6h zv+=gyiqAD5542_Jp2OlJ5+|eZv-OW<{W#&AQYqn$@D{M6l>Ufja}MOGpru%4rjDIb zwW>K>M$fI)SQ)LPWl*)Jj-64}ra4?nFRT@Gyvu!*JNt7HyW{cZxQz4=OrJC5s1cA^ z5Z$eFx@;j>DwAvUlDxT#=#Y0fsl`~r^GaL9kynQUn)hxam@V6G@SlI(g1kMDs&0p= zL^Oyc9E+PqCPMpA2!J2B^NkJ{cb}DC?wR#{kEVow$0Y2(B!sB$&~0!_@@Bq{Mfj@mcPRJa^k1^K_S>H9)uiUS2qVm}*tW@E%w zwf0Qv#9TVdIXIZ>vvd~OR`Y|+9{jr|BC2mGAQp@ER{%aEcPpOUW&5qH!N9m;+PZwQoN*`jT=J_O+}jfWbv=ow#_ct%SBFny^-! zc{9QjhN3%5u3E1A#%Km$*}Tf?di7k?M_OlVzMfq7aESH3>3i^)y6Ec>8718n+9_h| zLhG`k#weWR0iIO!fz7%?F)Ulbo=89yro}TUU*Fm!GyXeR5?2QK4^jJT{LJ+C*i%4s1aU>*Q_Y` zk}D1-V`Ev%9}Fng3x2~^Ac%7l)?P%*EB&bAch2ZHdlOv!+-R-D#5E4+m@r8h-y&~7 z&9!fz%206jlrkYW-$GhROWU+t#Fto;XmHWv&}vJ%wCQ@1RP}YE^;~fbH8myh;%35w z@~^pCAB>|mNT`%$b@rdcZmhRQP>biEyuID@Y%i&s#^qp57zi&)5j(n zv!Zh{gah#vC($wGzlTI8nF;*+_?2`Pn3YwMpR%<HQHhTq#RW{lrstY54RyspJ~T>( zdQ(mFhTODxJ>Zb2H9S)`dzb+m6fo|L8TgTMRs=X?iXgrej>I4^c@G*!if(R;QOY2$ zMCDG$v*zZu*SfMqPX*N~FNyDRvkkXx#e;OhJ~C*<=nXPZem)Y1D&ljBlsMfoTl? z+Xb3>Tm&XCj5h=3)SiQkIJ8J@Lv&p1jkO(Jvf%VFlCg0sL>f=F+%7qXWu#<3%r1nc z-@*8f_H2LC3&w z(r4z<)XVK(Mv|^T@e+N4>@fLOi>QGTeGHH+tKL2`Ks@tRd2R`(WRzYI-tTgj!p z=f4JC(Vt-KQ@OST5y`A?VV`#U`HA8BT>1aVX6Ze@bsVj}KRsoJyWg7JowP?3;_W;# zm=53fy+y3_5Do}(-t|IfzS-efd2F(t<|#ELDmLs3^PWZ*#Gh2y3;76B64Di`jY=zQ zCAOLJjgmd%j;OSD9uE{DJ7S9$H5QZ->l zA|~ree}I({iRU2C+7eZKoV*t3%T7O3Nauha`5F>9ut4R)mM|Y`Yt8@LB9wDPI@AQ6 zs1mtB?O=1ahd5`Vy;TiRYa^}v$gYu6BDO$Ttp1bu;xb6LAmvie@Kz8=d?;x0GT&2r zIBJ!sOe2<~zBcArdq{K~nA}qei36#WBN30q)GfYbH)j9-fsGo`>3=n~JYKWYVg?&| ztv7I}K>8U}ZCW&FY6%X3{pEQz_ri}v!uV~cK6$~>Ww9%ZoibV#|1zWfhhfK&Ln#rGqd zdCO3GaeUJwiEPK?t445piro9I;eUX{Np;}?73vcd&vNBO(b7gJ(-4j561qCWV5T*K z^EtQ@d$@R1>B4pX?_o?GzU`Sd4NR7dQrIW*ySM{9)klrr=kp6`ZOmkw{Zyk^V-Pom zU&e$70CL=g@Vi@J8Eno_^EA{?Eo@AO5j9$9H9`VAOv2}#@3r|`eYu0b*-XB%45wDzjsM%No7xrmksOJzwu0OJed*8HqMjP?jivG@=)D=mg|bDCRXsJqqz+NPtm(kUUIOfMHl&>Yk^IcXwE%eA(8-RPlWMxvD@=QHf*U zYgj;UuN)wf(RczuTJxt!t=O^iq|GH*msaa8$FCsOvm^}{pKc>qwi7aD}l_kdKUgJ_s&rC zq_^>@Na}B+g)*jk?`*a!v3}6$!^st~#RXYYLxds_EagY1A9Ve2H$eRTFPiciZdZ(^ zI~Xh#g3&{t0s5h?ww?D?)fAatoj(yPxrN+`Gr4;3V+Y&^DJ6WK$xXfEDv0mKGAJ0C zS{fXv*2FW+&vWN@8cBVBPk+)7*%hP*2N&9ZT=cE}$%Xc=UfwtA2* z3pAu^32I={V_uwi4vusJgV$H;XA%3BPXtef z&`0O~j_9WMk!@9XC>sfnw{b9?nMyFfnJkdfzupfWu!;&prtP=dYkuN2WdPFj61~zg8DMeYVHJ3L+)IAF9)FX&PBzpgbbfoBMpw6c z4!(cHJfVt|#-Mt3cqzMfLrqeV3);KD!Z`7X_E`FAFN3*$bJo59alFbQoJlHj&RT3F z8qUp2GQca*Rd-d^6x%!pClK z(d~0#-(=d-?*ewT?RQi1e^{2O`ns1g4544HHNkdZocGm8Rmi*ojL#PPRC+wp5j?b0 zst@~5h=?r$AY1|}KK0~UYkt#B!;t-iZO5xW*)|D|gUqsQrR4T;t3|?s2-{`|&s6#S zDa&^cT7~41{(LZ9F|HY;KIk5g#FQO9V5eCs$<2tE*PvhcQd-xy(I}u*o>tsyl5N3O zhL&>|i=6ORmtS3zTUe)qqS6~)I%dKhua3ANKz|phkPxIPV|lCFj1hK}!FBDp!f9u{ zbg*TvkyJK7MZLoPt+CbRe!GV#-Vu7Ebbw2>(Oj56JPt6;E1+OE0VZtco*4HME28iRCePLXR^1d4kkAsu9C~uY%R9CO@)tAt#;fC04Wi6XSL4Cdb zJ~ta-#DKALXR{oHP0`RQiz{{}I;UYq)J}#^}gu87;LunHOoGuPe^ZeA|~O#B|jEZnlt69ipxZJ$M#3-<0SNPIf~L+ z-Ru`OsiG)FjCk|2{v5)&Z{IP6Yd&QDz?MhCXb@Kni+1^5LmojA;6q3O;pI~2x;?HF-2qTcp@um3@wmRrq z1xI@z=a*}FA3}x1uar*eVM2l>nr>i-H?!#r6>RKn7?24@w~u!8^*F>1SBmU??Kui& zb^WRW>rl~LgKPZ;_sQFa;GXv85=8Lh>u$S61DYdoD^E-s%&{&F7PPsFJzhwjZmsUz z`AG(_VJuvAwpA`=pELpThob`o()dfh(h4q56z4Q}8h}I7CQr6Can46^>evzSm`g7ozYR!aO6=)nc9v zG&7ik)r>9^4U!{nRo(T%F@2lGV^n7oE#Czj_TeyD_?f|dNptvZpF2)XB%1+jTgM(! zh;;A&OhVzNb^yiXSyd$o5rS&y>c*e&m6}Zp%@oW%p@ZU^(koE{C`{9V__%vQZJv(Y zCu!fz?4=nVpbSQ~70F2V_JxdqBkuih9WorH`~E5Y-oTm!_h)UU@sL|3St*H#jWfK? zWQqb=VR=}I;hizqzLTVy1tW2idJ|%{U}y1{SWS~{ay+kW2^-a|Y?d$FJDNSBCG9J4 zB8hjs8?&f_0zUVPB6&KzrtiuQ@qzwdgn}HdJ~}rVk6|9cdj*%p`#mP#SuY?MQ zf2G}t@5E$C0=lJyPZz#6D~xSk>>-pzRe~TGU_^OWAeOQT$le%w>7ZZN2>-!Z?1Lo*JrTi6Nz;#m2fBNoI1|nH7|`C!AyQjKXJ{ZE$9##oiJ+}A)77d{)lSq~iY{a% zIIb#M$MRF#X!T%F2Hi{8>Vh6`8h3lR^Jz{X*4H|{Mt`rahjFfSR#Gl|R~{P^e?Ix8 zln4Go&g$|@9B&0eMA-7wWRWFgq3wv8WQUazE#+{l(OpCXph^=6u+O_{8S=iImdD)&7#kbM&+{Qh(wsUD*S6i_6dix2l_QYN0`4);HEB^AZUkpHmez3omHPA{$!y_)mh*`1)7hny)tq_L^Mefg5gR)08@=>$*i}rXbb*e1ThQ<6Eqkh$_CIAL{!zR2uZ+Z3bxSK2IY$diPcnU0GBzG| zLlzw}{dbinviB9#d%_=m|}A80|Y~uJaJ}sy}ANxSHp1|iCK0nyMlEt3EX$Sbp?@kMYT3y zb~X???Gty!-2V|4?ju3jmpB_1J{yJh4NbU2{48JS%0ZWm#mk4yyNLPFNcrcq;_XEv zb|>+scH!Ro!64h|<{<3mwfmkmey5^&?&KM-XGmwEUT}NV<%97)VXS=2X1~whzZ}n~ jo+E`m|JP>RfTpfMPghGTB)0b+eoihVYHBGJX{7%Fo5`Eo literal 0 HcmV?d00001