From b2ec0c5d77cfa1899264b6fedc753150a6178c49 Mon Sep 17 00:00:00 2001 From: bxdd Date: Tue, 26 Dec 2023 21:42:38 +0800 Subject: [PATCH 01/56] [DOC] polish start docs --- docs/start/exp.rst | 52 +++++++++++++----------- docs/start/install.rst | 39 +++++------------- docs/start/quick.rst | 14 +++---- examples/dataset_text_workflow/README.md | 15 +++---- 4 files changed, 54 insertions(+), 66 deletions(-) diff --git a/docs/start/exp.rst b/docs/start/exp.rst index 50d4574..58e251c 100644 --- a/docs/start/exp.rst +++ b/docs/start/exp.rst @@ -16,8 +16,8 @@ Ubuntu 20.04.4 LTS Nvidia Tesla V100S Intel(R) Xeon(R) Gold 6240R ==================== ==================== =============================== -Table: homo+hetero -==================== +Tabular Data Experiments +=========================== Datasets ------------------ @@ -43,8 +43,8 @@ Based on the specific design of user tasks, our experiments were primarily categ - ``heterogeneous experiments`` aim to evaluate the performance of identifying and reusing helpful heterogeneous learnwares in situations where no available learnwares match the feature space of the user's task. This helps to highlight the potential of learnwares for applications beyond their original purpose. -Homo Experiments ------------------------ +Homogeneous Tabular Dataset +----------------------------- For homogeneous experiments, the 55 stores in the Corporacion dataset act as 55 users, each applying one feature engineering method, and using the test data from their respective store as user data. These users can then search for homogeneous learnwares in the market with the same feature spaces as their tasks. @@ -52,17 +52,20 @@ and using the test data from their respective store as user data. These users ca The Mean Squared Error (MSE) of search and reuse is presented in the table below: +-----------------------------------+---------------------+ -| Mean in Market (Single) | 0.331 ± 0.040 | +| Setting | MSE | ++===================================+=====================+ +| Mean in Market (Single) | 0.331 ± 0.040 | +-----------------------------------+---------------------+ -| Best in Market (Single) | 0.151 ± 0.046 | +| Best in Market (Single) | 0.151 ± 0.046 | +-----------------------------------+---------------------+ -| Top-1 Reuse (Single) | 0.280 ± 0.090 | +| Top-1 Reuse (Single) | 0.280 ± 0.090 | +-----------------------------------+---------------------+ -| Job Selector Reuse (Multiple) | 0.274 ± 0.064 | +| Job Selector Reuse (Multiple) | 0.274 ± 0.064 | +-----------------------------------+---------------------+ -| Average Ensemble Reuse (Multiple) | 0.267 ± 0.051 | +| Average Ensemble Reuse (Multiple) | 0.267 ± 0.051 | +-----------------------------------+---------------------+ + When users have both test data and limited training data derived from their original data, reusing single or multiple searched learnwares from the market can often yield better results than training models from scratch on limited training data. We present the change curves in MSE for the user's self-trained model, as well as for the Feature Augmentation single learnware reuse method and the Ensemble Pruning multiple learnware reuse method. These curves display their performance on the user's test data as the amount of labeled training data increases. @@ -76,8 +79,8 @@ From the figure, it's evident that when users have limited training data, the pe This emphasizes the benefit of learnware reuse in significantly reducing the need for extensive training data and achieving enhanced results when available user training data is limited. -Hetero Experiments -------------------------- +Heterogeneous Tabular Dataset +------------------------------ In heterogeneous experiments, the learnware market would recommend helpful heterogeneous learnwares with different feature spaces with the user tasks. Based on whether there are learnwares in the market that handle tasks similar to the user's task, the experiments can be further subdivided into the following two types: @@ -91,6 +94,8 @@ we tested various heterogeneous learnware reuse methods (without using user's la The average MSE performance across 41 users are as follows: +-----------------------------------+---------------------+ +| Setting | MSE | ++===================================+=====================+ | Mean in Market (Single) | 1.459 ± 1.066 | +-----------------------------------+---------------------+ | Best in Market (Single) | 1.226 ± 1.032 | @@ -122,8 +127,8 @@ The average results across 10 users are depicted in the figure below: We can observe that heterogeneous learnwares are beneficial when there's a limited amount of the user's labeled training data available, aiding in better alignment with the user's specific task. This underscores the potential of learnwares to be applied to tasks beyond their original purpose. -Text Experiment -==================== +Text Data Experiment +========================== Datasets ------------------ @@ -150,6 +155,8 @@ Results The accuracy of search and reuse is presented in the table below: +-----------------------------------+---------------------+ +| Setting | Accuracy | ++===================================+=====================+ | Mean in Market (Single) | 0.507 ± 0.030 | +-----------------------------------+---------------------+ | Best in Market (Single) | 0.859 ± 0.051 | @@ -173,8 +180,8 @@ We present the change curves in classification error rates for both the user's s From the figure above, it is evident that when the user's own training data is limited, the performance of multiple learnware reuse surpasses that of the user's own model. As the user's training data grows, it is expected that the user's model will eventually outperform the learnware reuse. This underscores the value of reusing learnware to significantly conserve training data and achieve superior performance when user training data is limited. -Image Experiment -==================== +Image Data Experiment +========================= For the CIFAR-10 dataset, we sampled the training set unevenly by category and constructed unbalanced training datasets for the 50 learnwares that contained only some of the categories. This makes it unlikely that there exists any learnware in the learnware market that can accurately handle all categories of data; only the learnware whose training data is closest to the data distribution of the target task is likely to perform well on the target task. Specifically, the probability of each category being sampled obeys a random multinomial distribution, with a non-zero probability of sampling on only 4 categories, and the sampling ratio is 0.4: 0.4: 0.1: 0.1. Ultimately, the training set for each learnware contains 12,000 samples covering the data of 4 categories in CIFAR-10. @@ -183,6 +190,8 @@ We constructed 50 target tasks using data from the test set of CIFAR-10. Similar With this experimental setup, we evaluated the performance of RKME Image using 1 - Accuracy as the loss. +-----------------------------------+---------------------+ +| Setting | Accuracy | ++===================================+=====================+ | Mean in Market (Single) | 0.655 ± 0.021 | +-----------------------------------+---------------------+ | Best in Market (Single) | 0.304 ± 0.046 | @@ -201,15 +210,12 @@ In some specific settings, the user will have a small number of labelled samples Get Start Examples ========================= -Examples for `PFS, M5` and `CIFAR10` are available at [xxx]. You can run { main.py } directly to reproduce related experiments. -The test code is mainly composed of three parts, namely data preparation (optional), specification generation and market construction, and search test. -You can load data prepared by as and skip the data preparation step. - +Examples for `Tabular, Text` and `Image` data sets are available at `Learnware Examples `_. You can run { main.py } directly to reproduce related experiments. +We utilize the `fire` module to construct our experiments. -Examples for the `20-newsgroup` dataset are available at [examples/dataset_text_workflow]. -We utilize the `fire` module to construct our experiments. You can execute the experiment with the following commands: +Tabular Examples +------------------ +You can execute the experiment with the following commands: -* `python main.py prepare_market`: Prepares the market. * `python main.py unlabeled_text_example`: Executes the unlabeled_text_example experiment; the results will be printed in the terminal. * `python main.py labeled_text_example`: Executes the labeled_text_example experiment; result curves will be automatically saved in the `figs` directory. -* Additionally, you can use `python main.py unlabeled_text_example True` to combine steps 1 and 2. The same approach applies to running labeled_text_example directly. \ No newline at end of file diff --git a/docs/start/install.rst b/docs/start/install.rst index 50038de..5f9cad8 100644 --- a/docs/start/install.rst +++ b/docs/start/install.rst @@ -4,46 +4,27 @@ Installation Guide ======================== -``Learnware Market`` Installation -================================= +``Learnware`` Package Installation +=================================== .. note:: - ``Learnware Market`` supports `Windows`, `Linux` and `Macos`. It's recommended to use ``Learnware Market`` in `Linux`. ``Learnware Market`` supports Python3, which is up to Python3.8. + ``Learnware`` package supports `Windows`, `Linux`. It's recommended to use ``Learnware`` in `Linux`. ``Learnware`` supports Python3, which is up to Python3.11. -Users can easily install ``Learnware Market`` by pip according to the following command: +Users can easily install ``Learnware`` by pip according to the following command: -- For Windows and Linux users: +.. code-block:: bash - .. code-block:: bash - - pip install learnware - -- For macOS users: - - .. code-block:: bash - - conda install -c pytorch faiss - pip install learnware + pip install learnware -Also, Users can install ``Learnware Market`` by the source code according to the following steps: - -- Enter the root directory of ``Learnware Market``, in which the file ``setup.py`` exists. -- Then, please execute the following command to install the environment dependencies and install ``Learnware Market``: - -- For Windows and Linux users: - - .. code-block:: bash - - $ git clone https://git.nju.edu.cn/learnware/learnware-market.git && cd learnware-market - $ python setup.py install +Also, Users can install ``Learnware`` by the source code according to the following steps: -- For macOS users: +- Enter the root directory of ``Learnware``, in which the file ``setup.py`` exists. +- Then, please execute the following command to install the environment dependencies and install ``Learnware``: .. code-block:: bash - $ conda install -c pytorch faiss - $ git clone https://git.nju.edu.cn/learnware/learnware-market.git && cd learnware-market + $ git clone hhttps://github.com/Learnware-LAMDA/Learnware.git && cd learnware $ python setup.py install .. note:: diff --git a/docs/start/quick.rst b/docs/start/quick.rst index c33bf6b..bd60da6 100644 --- a/docs/start/quick.rst +++ b/docs/start/quick.rst @@ -7,14 +7,14 @@ Quick Start Introduction ==================== -This ``Quick Start`` guide aims to illustrate the straightforward process of establishing a full ``Learnware Market`` workflow -and utilizing ``Learnware Market`` to handle user tasks. +This ``Quick Start`` guide aims to illustrate the straightforward process of establishing a full ``Learnware`` workflow +and utilizing ``Learnware`` to handle user tasks. Installation ==================== -Learnware is currently hosted on `PyPI `__. You can easily intsall ``learnware`` by following these steps: +Learnware is currently hosted on `PyPI `_. You can easily intsall ``learnware`` by following these steps: - For Windows and Linux users: @@ -87,10 +87,10 @@ includes the following four components: We've also detailed the format of the learnware zipfile in :ref:`Learnware Preparation`. -Learnware Market Workflow +Learnware Pacakge Workflow ============================ -Users can start a ``Learnware Market`` workflow according to the following steps: +Users can start a ``Learnware`` workflow according to the following steps: Initialize a Learware Market ------------------------------- @@ -213,6 +213,6 @@ Just substitute ``test_x`` in the code snippet below with your own testing data, Auto Workflow Example ============================ -The ``Learnware Market`` also offers an automated workflow example. +The ``Learnware`` also offers automated workflow examples. This includes preparing learnwares, uploading and deleting learnwares from the market, and searching for learnwares using both semantic and statistical specifications. -To experience the basic workflow of the Learnware Market, users can run [workflow code link]. +To experience the basic workflow of the Learnware Market, please refer to `Learnware Examples `_. diff --git a/examples/dataset_text_workflow/README.md b/examples/dataset_text_workflow/README.md index a3f9103..4ac6b33 100644 --- a/examples/dataset_text_workflow/README.md +++ b/examples/dataset_text_workflow/README.md @@ -39,13 +39,14 @@ python workflow.py labeled_text_example The accuracy of search and reuse is presented in the table below: -| Metric | Value | -|--------------------------------------|---------------------| -| Mean in Market (Single) | 0.507 ± 0.030 | -| Best in Market (Single) | 0.859 ± 0.051 | -| Top-1 Reuse (Single) | 0.846 ± 0.054 | -| Job Selector Reuse (Multiple) | 0.845 ± 0.053 | -| Average Ensemble Reuse (Multiple) | 0.862 ± 0.051 | +| Setting | Accuracy | +|---------------------------------------|---------------------| +| Mean in Market (Single) | 0.507 ± 0.030 | +| Best in Market (Single) | 0.859 ± 0.051 | +| Top-1 Reuse (Single) | 0.846 ± 0.054 | +| Job Selector Reuse (Multiple) | 0.845 ± 0.053 | +| Average Ensemble Reuse (Multiple) | 0.862 ± 0.051 | + ### ``labeled_text_example``: From bb8b40a31c1f902adfe1dea598345d0256123b37 Mon Sep 17 00:00:00 2001 From: bxdd Date: Wed, 27 Dec 2023 00:08:28 +0800 Subject: [PATCH 02/56] [MNT] format all imports --- learnware/__init__.py | 3 ++- learnware/client/container.py | 18 ++++++------- learnware/client/learnware_client.py | 27 +++++++++---------- learnware/client/package_utils.py | 10 +++---- learnware/client/scripts/install_env.py | 2 +- learnware/client/scripts/run_model.py | 5 ++-- learnware/client/utils.py | 7 ++--- learnware/config.py | 2 +- learnware/learnware/__init__.py | 8 +++--- learnware/learnware/base.py | 9 ++++--- learnware/market/__init__.py | 13 ++++----- learnware/market/anchor/__init__.py | 3 +-- learnware/market/anchor/organizer.py | 2 +- learnware/market/anchor/searcher.py | 4 +-- learnware/market/anchor/user_info.py | 3 ++- learnware/market/base.py | 5 ++-- learnware/market/classes.py | 3 ++- learnware/market/easy/__init__.py | 6 ++--- learnware/market/easy/checker.py | 6 ++--- learnware/market/easy/database_ops.py | 9 ++++--- learnware/market/easy/organizer.py | 9 +++---- learnware/market/easy/searcher.py | 11 +++++--- learnware/market/evolve/organizer.py | 2 +- learnware/market/evolve_anchor/organizer.py | 2 +- learnware/market/heterogeneous/__init__.py | 2 +- .../heterogeneous/organizer/__init__.py | 2 -- .../organizer/hetero_map/__init__.py | 7 ++--- .../organizer/hetero_map/trainer.py | 2 +- learnware/market/heterogeneous/searcher.py | 1 - learnware/market/heterogeneous/utils.py | 1 + learnware/market/module.py | 3 ++- learnware/model/base.py | 3 ++- learnware/reuse/__init__.py | 9 +++---- learnware/reuse/averaging.py | 8 +++--- learnware/reuse/base.py | 3 ++- learnware/reuse/ensemble_pruning.py | 7 ++--- learnware/reuse/feature_augment.py | 7 ++--- learnware/reuse/hetero/feature_align.py | 11 ++++---- learnware/reuse/hetero/hetero_map.py | 4 +-- learnware/reuse/job_selector.py | 12 ++++----- learnware/reuse/utils.py | 1 + learnware/specification/__init__.py | 25 +++++------------ learnware/specification/base.py | 3 ++- learnware/specification/module.py | 10 ++++--- learnware/specification/regular/__init__.py | 4 +-- .../specification/regular/image/__init__.py | 3 +-- .../specification/regular/image/cnn_gp.py | 6 ++--- learnware/specification/regular/image/rkme.py | 9 +++---- .../specification/regular/table/__init__.py | 5 ++-- learnware/specification/regular/table/rkme.py | 13 ++++----- .../specification/regular/text/__init__.py | 2 +- learnware/specification/regular/text/rkme.py | 3 ++- learnware/specification/system/__init__.py | 2 +- .../specification/system/hetero_table.py | 9 ++++--- learnware/specification/utils.py | 5 ++-- learnware/tests/benchmarks/__init__.py | 2 +- learnware/tests/benchmarks/config.py | 2 +- learnware/tests/data.py | 1 + learnware/tests/templates/__init__.py | 4 +-- learnware/tests/templates/pickle_model.py | 3 +++ learnware/tests/utils.py | 1 + learnware/utils/__init__.py | 8 +++--- learnware/utils/file.py | 4 ++- learnware/utils/gpu.py | 2 ++ learnware/utils/module.py | 6 ++--- 65 files changed, 202 insertions(+), 182 deletions(-) diff --git a/learnware/__init__.py b/learnware/__init__.py index 80b549a..44b678f 100644 --- a/learnware/__init__.py +++ b/learnware/__init__.py @@ -1,7 +1,8 @@ __version__ = "0.2.0.9" -import os import json +import os + from .logger import get_module_logger from .utils import is_torch_available, setup_seed diff --git a/learnware/client/container.py b/learnware/client/container.py index 6c9bdf1..0983139 100644 --- a/learnware/client/container.py +++ b/learnware/client/container.py @@ -1,21 +1,21 @@ +import atexit import os -import docker import pickle -import atexit import tarfile import tempfile -import shortuuid from concurrent.futures import ThreadPoolExecutor +from typing import List, Optional, Union -from typing import List, Union, Optional -from .utils import system_execute, install_environment, remove_enviroment +import docker +import shortuuid + +from .package_utils import (filter_nonexist_conda_packages_file, + filter_nonexist_pip_packages_file) +from .utils import install_environment, remove_enviroment, system_execute from ..config import C from ..learnware import Learnware -from ..model.base import BaseModel -from .package_utils import filter_nonexist_conda_packages_file, filter_nonexist_pip_packages_file - from ..logger import get_module_logger - +from ..model.base import BaseModel logger = get_module_logger(module_name="client_container") diff --git a/learnware/client/learnware_client.py b/learnware/client/learnware_client.py index 9b6b157..2be5e55 100644 --- a/learnware/client/learnware_client.py +++ b/learnware/client/learnware_client.py @@ -1,24 +1,23 @@ -import os -import uuid -import yaml -import json import atexit -import zipfile import hashlib -import requests +import json +import os import tempfile +import uuid +import zipfile from enum import Enum +from typing import List, Optional, Union + +import requests +import yaml from tqdm import tqdm -from typing import Union, List, Optional -from ..config import C from .container import LearnwaresContainer -from ..market import BaseChecker -from ..specification import generate_semantic_spec -from ..logger import get_module_logger +from ..config import C from ..learnware import get_learnware_from_dirpath -from ..market import BaseUserInfo - +from ..logger import get_module_logger +from ..market import BaseChecker, BaseUserInfo +from ..specification import generate_semantic_spec CHUNK_SIZE = 1024 * 1024 logger = get_module_logger(module_name="LearnwareClient") @@ -413,7 +412,7 @@ class LearnwareClient: @staticmethod def _check_stat_specification(learnware): - from ..market import EasyStatChecker, CondaChecker + from ..market import CondaChecker, EasyStatChecker stat_checker = CondaChecker(inner_checker=EasyStatChecker()) check_status, message = stat_checker(learnware) diff --git a/learnware/client/package_utils.py b/learnware/client/package_utils.py index f53b776..13467ab 100644 --- a/learnware/client/package_utils.py +++ b/learnware/client/package_utils.py @@ -1,14 +1,14 @@ +import json import os import re -import json -import yaml -import tempfile import subprocess -from typing import List, Tuple -from . import utils +import tempfile from concurrent.futures import ThreadPoolExecutor +from typing import List, Tuple +import yaml +from . import utils from ..logger import get_module_logger logger = get_module_logger("package_utils") diff --git a/learnware/client/scripts/install_env.py b/learnware/client/scripts/install_env.py index 528b1e6..af43bf4 100644 --- a/learnware/client/scripts/install_env.py +++ b/learnware/client/scripts/install_env.py @@ -1,6 +1,6 @@ import argparse -from learnware.client.utils import install_environment +from learnware.client.utils import install_environment if __name__ == "__main__": parser = argparse.ArgumentParser() diff --git a/learnware/client/scripts/run_model.py b/learnware/client/scripts/run_model.py index 82c7a22..f6e54ba 100644 --- a/learnware/client/scripts/run_model.py +++ b/learnware/client/scripts/run_model.py @@ -1,6 +1,7 @@ -import sys -import pickle import argparse +import pickle +import sys + from learnware.utils import get_module_by_module_path diff --git a/learnware/client/utils.py b/learnware/client/utils.py index e738331..cfb12c2 100644 --- a/learnware/client/utils.py +++ b/learnware/client/utils.py @@ -1,10 +1,11 @@ import os -import zipfile -import tempfile import subprocess +import tempfile +import zipfile +from .package_utils import (filter_nonexist_conda_packages_file, + filter_nonexist_pip_packages_file) from ..logger import get_module_logger -from .package_utils import filter_nonexist_conda_packages_file, filter_nonexist_pip_packages_file logger = get_module_logger(module_name="client_utils") diff --git a/learnware/config.py b/learnware/config.py index 71eeee7..a94e3b6 100644 --- a/learnware/config.py +++ b/learnware/config.py @@ -1,6 +1,6 @@ -import os import copy import logging +import os from enum import Enum diff --git a/learnware/learnware/__init__.py b/learnware/learnware/__init__.py index a7f04a7..fca213a 100644 --- a/learnware/learnware/__init__.py +++ b/learnware/learnware/__init__.py @@ -1,14 +1,14 @@ -import os import copy -from typing import Optional +import os import traceback +from typing import Optional from .base import Learnware from .utils import get_stat_spec_from_config +from ..config import C +from ..logger import get_module_logger from ..specification import Specification from ..utils import read_yaml_to_dict -from ..logger import get_module_logger -from ..config import C logger = get_module_logger("learnware.learnware") diff --git a/learnware/learnware/base.py b/learnware/learnware/base.py index 4dc3394..93f5a62 100644 --- a/learnware/learnware/base.py +++ b/learnware/learnware/base.py @@ -1,12 +1,13 @@ import os -import numpy as np -from typing import Union, List import sys +from typing import List, Union + +import numpy as np -from ..specification import Specification, BaseStatSpecification +from ..logger import get_module_logger from ..model import BaseModel +from ..specification import BaseStatSpecification, Specification from ..utils import get_module_by_module_path -from ..logger import get_module_logger logger = get_module_logger("Learnware") diff --git a/learnware/market/__init__.py b/learnware/market/__init__.py index a040444..0d2fd4c 100644 --- a/learnware/market/__init__.py +++ b/learnware/market/__init__.py @@ -1,9 +1,10 @@ -from .anchor import AnchoredUserInfo, AnchoredSearcher, AnchoredOrganizer -from .base import BaseUserInfo, LearnwareMarket, BaseChecker, BaseOrganizer, BaseSearcher -from .evolve_anchor import EvolvedAnchoredOrganizer +from .anchor import AnchoredOrganizer, AnchoredSearcher, AnchoredUserInfo +from .base import (BaseChecker, BaseOrganizer, BaseSearcher, BaseUserInfo, + LearnwareMarket) +from .classes import CondaChecker +from .easy import (EasyOrganizer, EasySearcher, EasySemanticChecker, + EasyStatChecker) from .evolve import EvolvedOrganizer -from .easy import EasyOrganizer, EasySearcher, EasySemanticChecker, EasyStatChecker +from .evolve_anchor import EvolvedAnchoredOrganizer from .heterogeneous import HeteroMapTableOrganizer, HeteroSearcher - -from .classes import CondaChecker from .module import instantiate_learnware_market diff --git a/learnware/market/anchor/__init__.py b/learnware/market/anchor/__init__.py index 2e2763c..c453220 100644 --- a/learnware/market/anchor/__init__.py +++ b/learnware/market/anchor/__init__.py @@ -1,8 +1,7 @@ from .organizer import AnchoredOrganizer from .user_info import AnchoredUserInfo - -from ...utils import is_torch_available from ...logger import get_module_logger +from ...utils import is_torch_available logger = get_module_logger("market_anchor") diff --git a/learnware/market/anchor/organizer.py b/learnware/market/anchor/organizer.py index 4c3b668..2e0d215 100644 --- a/learnware/market/anchor/organizer.py +++ b/learnware/market/anchor/organizer.py @@ -1,8 +1,8 @@ from typing import Dict from ..easy.organizer import EasyOrganizer -from ...logger import get_module_logger from ...learnware import Learnware +from ...logger import get_module_logger logger = get_module_logger("anchor_organizer") diff --git a/learnware/market/anchor/searcher.py b/learnware/market/anchor/searcher.py index 60bca9f..c8fe2a2 100644 --- a/learnware/market/anchor/searcher.py +++ b/learnware/market/anchor/searcher.py @@ -1,9 +1,9 @@ -from typing import List, Tuple, Any +from typing import Any, List, Tuple from .user_info import AnchoredUserInfo from ..easy.searcher import EasySearcher -from ...logger import get_module_logger from ...learnware import Learnware +from ...logger import get_module_logger logger = get_module_logger("anchor_searcher") diff --git a/learnware/market/anchor/user_info.py b/learnware/market/anchor/user_info.py index 0e1ddb2..4e074b0 100644 --- a/learnware/market/anchor/user_info.py +++ b/learnware/market/anchor/user_info.py @@ -1,4 +1,5 @@ -from typing import List, Any, Union +from typing import Any, List, Union + from ..base import BaseUserInfo diff --git a/learnware/market/base.py b/learnware/market/base.py index 76e1f71..754ecde 100644 --- a/learnware/market/base.py +++ b/learnware/market/base.py @@ -1,10 +1,11 @@ from __future__ import annotations +import tempfile import traceback import zipfile -import tempfile -from typing import Tuple, Any, List, Union, Optional from dataclasses import dataclass +from typing import Any, List, Optional, Tuple, Union + from ..learnware import Learnware, get_learnware_from_dirpath from ..logger import get_module_logger diff --git a/learnware/market/classes.py b/learnware/market/classes.py index 2368ae6..78c819c 100644 --- a/learnware/market/classes.py +++ b/learnware/market/classes.py @@ -1,8 +1,9 @@ import traceback from typing import Tuple + from .base import BaseChecker -from ..learnware import Learnware from ..client.container import LearnwaresContainer +from ..learnware import Learnware from ..logger import get_module_logger logger = get_module_logger("market_classes") diff --git a/learnware/market/easy/__init__.py b/learnware/market/easy/__init__.py index 2605999..88b574e 100644 --- a/learnware/market/easy/__init__.py +++ b/learnware/market/easy/__init__.py @@ -1,7 +1,6 @@ from .organizer import EasyOrganizer - -from ...utils import is_torch_available from ...logger import get_module_logger +from ...utils import is_torch_available logger = get_module_logger("market_easy") @@ -11,5 +10,6 @@ if not is_torch_available(verbose=False): EasyStatChecker = None logger.error("EasySeacher and EasyChecker are not available because 'torch' is not installed!") else: - from .searcher import EasySearcher, EasyStatSearcher, EasyFuzzSemanticSearcher, EasyExactSemanticSearcher from .checker import EasySemanticChecker, EasyStatChecker + from .searcher import (EasyExactSemanticSearcher, EasyFuzzSemanticSearcher, + EasySearcher, EasyStatSearcher) diff --git a/learnware/market/easy/checker.py b/learnware/market/easy/checker.py index 95c0f1a..57ff554 100644 --- a/learnware/market/easy/checker.py +++ b/learnware/market/easy/checker.py @@ -1,10 +1,10 @@ -import traceback -import numpy as np -import torch import random import string import traceback +import numpy as np +import torch + from ..base import BaseChecker from ..utils import parse_specification_type from ...config import C diff --git a/learnware/market/easy/database_ops.py b/learnware/market/easy/database_ops.py index e27577c..9419e24 100644 --- a/learnware/market/easy/database_ops.py +++ b/learnware/market/easy/database_ops.py @@ -1,9 +1,10 @@ -from sqlalchemy.ext.declarative import declarative_base -from sqlalchemy import create_engine, text -from sqlalchemy import Column, Text, String -import os import json +import os import traceback + +from sqlalchemy import Column, String, Text, create_engine, text +from sqlalchemy.ext.declarative import declarative_base + from ...learnware import get_learnware_from_dirpath from ...logger import get_module_logger diff --git a/learnware/market/easy/organizer.py b/learnware/market/easy/organizer.py index dfcfb42..dac16d9 100644 --- a/learnware/market/easy/organizer.py +++ b/learnware/market/easy/organizer.py @@ -1,14 +1,13 @@ -import os import copy -import zipfile +import os import tempfile +import zipfile from shutil import copyfile, rmtree -from typing import Tuple, List, Union, Dict +from typing import Dict, List, Tuple, Union from .database_ops import DatabaseOperations -from ..base import BaseOrganizer, BaseChecker +from ..base import BaseChecker, BaseOrganizer from ...config import C as conf -from ...logger import get_module_logger from ...learnware import Learnware, get_learnware_from_dirpath from ...logger import get_module_logger diff --git a/learnware/market/easy/searcher.py b/learnware/market/easy/searcher.py index 0283d94..b6f9ede 100644 --- a/learnware/market/easy/searcher.py +++ b/learnware/market/easy/searcher.py @@ -1,15 +1,18 @@ import math -import torch +from typing import List, Optional, Tuple, Union + import numpy as np +import torch from rapidfuzz import fuzz -from typing import Tuple, List, Union, Optional from .organizer import EasyOrganizer +from ..base import (BaseSearcher, BaseUserInfo, MultipleSearchItem, + SearchResults, SingleSearchItem) from ..utils import parse_specification_type -from ..base import BaseUserInfo, BaseSearcher, SearchResults, SingleSearchItem, MultipleSearchItem from ...learnware import Learnware -from ...specification import RKMETableSpecification, RKMEImageSpecification, RKMETextSpecification, rkme_solve_qp from ...logger import get_module_logger +from ...specification import (RKMEImageSpecification, RKMETableSpecification, + RKMETextSpecification, rkme_solve_qp) logger = get_module_logger("easy_seacher") diff --git a/learnware/market/evolve/organizer.py b/learnware/market/evolve/organizer.py index 1078aa4..19540f3 100644 --- a/learnware/market/evolve/organizer.py +++ b/learnware/market/evolve/organizer.py @@ -2,8 +2,8 @@ from typing import List from ..easy.organizer import EasyOrganizer from ...learnware import Learnware -from ...specification import BaseStatSpecification from ...logger import get_module_logger +from ...specification import BaseStatSpecification logger = get_module_logger("evolve_organizer") diff --git a/learnware/market/evolve_anchor/organizer.py b/learnware/market/evolve_anchor/organizer.py index e096ec8..3d0a434 100644 --- a/learnware/market/evolve_anchor/organizer.py +++ b/learnware/market/evolve_anchor/organizer.py @@ -1,7 +1,7 @@ from typing import List -from ..evolve import EvolvedOrganizer from ..anchor import AnchoredOrganizer, AnchoredUserInfo +from ..evolve import EvolvedOrganizer from ...logger import get_module_logger logger = get_module_logger("evolve_anchor_organizer") diff --git a/learnware/market/heterogeneous/__init__.py b/learnware/market/heterogeneous/__init__.py index df0ad39..0252b0a 100644 --- a/learnware/market/heterogeneous/__init__.py +++ b/learnware/market/heterogeneous/__init__.py @@ -1,5 +1,5 @@ -from ...utils import is_torch_available from ...logger import get_module_logger +from ...utils import is_torch_available logger = get_module_logger("market_hetero") diff --git a/learnware/market/heterogeneous/organizer/__init__.py b/learnware/market/heterogeneous/organizer/__init__.py index 0d15b3e..8ff9e1e 100644 --- a/learnware/market/heterogeneous/organizer/__init__.py +++ b/learnware/market/heterogeneous/organizer/__init__.py @@ -1,6 +1,5 @@ import os import traceback -import pandas as pd from collections import defaultdict from typing import List, Tuple, Union @@ -14,7 +13,6 @@ from ....learnware import Learnware from ....logger import get_module_logger from ....specification import HeteroMapTableSpecification - logger = get_module_logger("hetero_map_table_organizer") diff --git a/learnware/market/heterogeneous/organizer/hetero_map/__init__.py b/learnware/market/heterogeneous/organizer/hetero_map/__init__.py index b2f39fe..6defcff 100644 --- a/learnware/market/heterogeneous/organizer/hetero_map/__init__.py +++ b/learnware/market/heterogeneous/organizer/hetero_map/__init__.py @@ -6,10 +6,11 @@ import torch import torch.nn.functional as F from torch import nn -from .....utils import allocate_cuda_idx, choose_device -from .....specification import HeteroMapTableSpecification, RKMETableSpecification from .feature_extractor import CLSToken, FeatureProcessor, FeatureTokenizer -from .trainer import TransTabCollatorForCL, Trainer +from .trainer import Trainer, TransTabCollatorForCL +from .....specification import (HeteroMapTableSpecification, + RKMETableSpecification) +from .....utils import allocate_cuda_idx, choose_device class HeteroMap(nn.Module): diff --git a/learnware/market/heterogeneous/organizer/hetero_map/trainer.py b/learnware/market/heterogeneous/organizer/hetero_map/trainer.py index 052b2ba..ae7f3fd 100644 --- a/learnware/market/heterogeneous/organizer/hetero_map/trainer.py +++ b/learnware/market/heterogeneous/organizer/hetero_map/trainer.py @@ -10,8 +10,8 @@ from torch import nn from torch.utils.data import DataLoader, Dataset from tqdm.autonotebook import trange -from .....logger import get_module_logger from .feature_extractor import FeatureTokenizer +from .....logger import get_module_logger logger = get_module_logger("hetero_mapping_trainer") diff --git a/learnware/market/heterogeneous/searcher.py b/learnware/market/heterogeneous/searcher.py index 7194f9c..8a97dba 100644 --- a/learnware/market/heterogeneous/searcher.py +++ b/learnware/market/heterogeneous/searcher.py @@ -6,7 +6,6 @@ from ..easy import EasySearcher from ..utils import parse_specification_type from ...logger import get_module_logger - logger = get_module_logger("hetero_searcher") diff --git a/learnware/market/heterogeneous/utils.py b/learnware/market/heterogeneous/utils.py index 8f2c5a2..0975ca7 100644 --- a/learnware/market/heterogeneous/utils.py +++ b/learnware/market/heterogeneous/utils.py @@ -1,4 +1,5 @@ import traceback + from ...logger import get_module_logger logger = get_module_logger("hetero_utils") diff --git a/learnware/market/module.py b/learnware/market/module.py index f06a20c..c5c64f1 100644 --- a/learnware/market/module.py +++ b/learnware/market/module.py @@ -1,6 +1,7 @@ from .base import LearnwareMarket from .classes import CondaChecker -from .easy import EasyOrganizer, EasySearcher, EasySemanticChecker, EasyStatChecker +from .easy import (EasyOrganizer, EasySearcher, EasySemanticChecker, + EasyStatChecker) from .heterogeneous import HeteroMapTableOrganizer, HeteroSearcher diff --git a/learnware/model/base.py b/learnware/model/base.py index e54d858..4b21213 100644 --- a/learnware/model/base.py +++ b/learnware/model/base.py @@ -1,6 +1,7 @@ -import numpy as np from typing import Union +import numpy as np + class BaseModel: """Base interface tor model standard when user want to submit learnware to market.""" diff --git a/learnware/reuse/__init__.py b/learnware/reuse/__init__.py index 1e2d289..7296ad1 100644 --- a/learnware/reuse/__init__.py +++ b/learnware/reuse/__init__.py @@ -1,6 +1,5 @@ -from .base import BaseReuser from .align import AlignLearnware - +from .base import BaseReuser from ..logger import get_module_logger from ..utils import is_torch_available @@ -18,7 +17,7 @@ if not is_torch_available(verbose=False): ) else: from .averaging import AveragingReuser + from .ensemble_pruning import EnsemblePruningReuser from .feature_augment import FeatureAugmentReuser - from .hetero import HeteroMapAlignLearnware, FeatureAlignLearnware - from .job_selector import JobSelectorReuser - from .ensemble_pruning import EnsemblePruningReuser \ No newline at end of file + from .hetero import FeatureAlignLearnware, HeteroMapAlignLearnware + from .job_selector import JobSelectorReuser \ No newline at end of file diff --git a/learnware/reuse/averaging.py b/learnware/reuse/averaging.py index abc572b..fa785fd 100644 --- a/learnware/reuse/averaging.py +++ b/learnware/reuse/averaging.py @@ -1,11 +1,11 @@ -import torch -import numpy as np from typing import List, Union -from scipy.special import softmax +import numpy as np +import torch +from scipy.special import softmax -from ..learnware import Learnware from .base import BaseReuser +from ..learnware import Learnware from ..logger import get_module_logger logger = get_module_logger("avaraging_reuser") diff --git a/learnware/reuse/base.py b/learnware/reuse/base.py index 9cb71cd..c077ac9 100644 --- a/learnware/reuse/base.py +++ b/learnware/reuse/base.py @@ -1,6 +1,7 @@ -import numpy as np from typing import List +import numpy as np + from ..learnware import Learnware from ..logger import get_module_logger diff --git a/learnware/reuse/ensemble_pruning.py b/learnware/reuse/ensemble_pruning.py index 49c65b5..bd28ab4 100644 --- a/learnware/reuse/ensemble_pruning.py +++ b/learnware/reuse/ensemble_pruning.py @@ -1,10 +1,11 @@ -import torch import random -import numpy as np from typing import List -from ..learnware import Learnware +import numpy as np +import torch + from .base import BaseReuser +from ..learnware import Learnware from ..logger import get_module_logger logger = get_module_logger("ensemble_pruning") diff --git a/learnware/reuse/feature_augment.py b/learnware/reuse/feature_augment.py index 83484d8..820d681 100644 --- a/learnware/reuse/feature_augment.py +++ b/learnware/reuse/feature_augment.py @@ -1,7 +1,8 @@ -import torch -import numpy as np from typing import List -from sklearn.linear_model import RidgeCV, LogisticRegressionCV + +import numpy as np +import torch +from sklearn.linear_model import LogisticRegressionCV, RidgeCV from .base import BaseReuser from .utils import fill_data_with_mean diff --git a/learnware/reuse/hetero/feature_align.py b/learnware/reuse/hetero/feature_align.py index bf7de16..9752cb0 100644 --- a/learnware/reuse/hetero/feature_align.py +++ b/learnware/reuse/hetero/feature_align.py @@ -1,17 +1,18 @@ import time -import torch +from typing import List + import numpy as np +import torch import torch.nn as nn -from typing import List -from tqdm import trange import torch.nn.functional as F +from tqdm import trange from ..align import AlignLearnware from ..utils import fill_data_with_mean -from ...utils import choose_device, allocate_cuda_idx -from ...logger import get_module_logger from ...learnware import Learnware +from ...logger import get_module_logger from ...specification import RKMETableSpecification +from ...utils import allocate_cuda_idx, choose_device logger = get_module_logger("feature_align") diff --git a/learnware/reuse/hetero/hetero_map.py b/learnware/reuse/hetero/hetero_map.py index c41095a..d627d20 100644 --- a/learnware/reuse/hetero/hetero_map.py +++ b/learnware/reuse/hetero/hetero_map.py @@ -1,10 +1,10 @@ import numpy as np +from .feature_align import FeatureAlignLearnware from ..align import AlignLearnware +from ..feature_augment import FeatureAugmentReuser from ...learnware import Learnware from ...logger import get_module_logger -from .feature_align import FeatureAlignLearnware -from ..feature_augment import FeatureAugmentReuser from ...specification import RKMETableSpecification logger = get_module_logger("hetero_map_align") diff --git a/learnware/reuse/job_selector.py b/learnware/reuse/job_selector.py index 467e063..1825132 100644 --- a/learnware/reuse/job_selector.py +++ b/learnware/reuse/job_selector.py @@ -1,15 +1,15 @@ -import torch -import numpy as np - from typing import List, Union + +import numpy as np +import torch from sklearn.metrics import accuracy_score from .base import BaseReuser -from ..market.utils import parse_specification_type from ..learnware import Learnware -from ..specification import RKMETableSpecification, RKMETextSpecification -from ..specification import generate_rkme_table_spec, rkme_solve_qp from ..logger import get_module_logger +from ..market.utils import parse_specification_type +from ..specification import (RKMETableSpecification, RKMETextSpecification, + generate_rkme_table_spec, rkme_solve_qp) logger = get_module_logger("job_selector_reuse") diff --git a/learnware/reuse/utils.py b/learnware/reuse/utils.py index 17430dc..49bb2f2 100644 --- a/learnware/reuse/utils.py +++ b/learnware/reuse/utils.py @@ -1,4 +1,5 @@ import numpy as np + from ..logger import get_module_logger logger = get_module_logger("reuse_utils") diff --git a/learnware/specification/__init__.py b/learnware/specification/__init__.py index c2ac5f9..4667548 100644 --- a/learnware/specification/__init__.py +++ b/learnware/specification/__init__.py @@ -1,15 +1,8 @@ -from .base import Specification, BaseStatSpecification -from .regular import ( - RegularStatSpecification, - RKMEStatSpecification, - RKMETableSpecification, - RKMEImageSpecification, - RKMETextSpecification, - rkme_solve_qp, -) - +from .base import BaseStatSpecification, Specification +from .regular import (RegularStatSpecification, RKMEImageSpecification, + RKMEStatSpecification, RKMETableSpecification, + RKMETextSpecification, rkme_solve_qp) from .system import HeteroMapTableSpecification - from ..utils import is_torch_available if not is_torch_available(verbose=False): @@ -19,10 +12,6 @@ if not is_torch_available(verbose=False): generate_rkme_text_spec = None generate_semantic_spec = None else: - from .module import ( - generate_stat_spec, - generate_rkme_table_spec, - generate_rkme_image_spec, - generate_rkme_text_spec, - generate_semantic_spec, - ) + from .module import (generate_rkme_image_spec, generate_rkme_table_spec, + generate_rkme_text_spec, generate_semantic_spec, + generate_stat_spec) diff --git a/learnware/specification/base.py b/learnware/specification/base.py index 6b1c5f5..a25e3bb 100644 --- a/learnware/specification/base.py +++ b/learnware/specification/base.py @@ -1,9 +1,10 @@ from __future__ import annotations import copy -import numpy as np from typing import Dict +import numpy as np + class BaseStatSpecification: """The Statistical Specification Interface, which provide save and load method""" diff --git a/learnware/specification/module.py b/learnware/specification/module.py index 2fa81ca..a8c69ca 100644 --- a/learnware/specification/module.py +++ b/learnware/specification/module.py @@ -1,11 +1,13 @@ -import torch +from typing import List, Optional, Union + import numpy as np import pandas as pd -from typing import Union, List, Optional +import torch -from .utils import convert_to_numpy from .base import BaseStatSpecification -from .regular import RKMETableSpecification, RKMEImageSpecification, RKMETextSpecification +from .regular import (RKMEImageSpecification, RKMETableSpecification, + RKMETextSpecification) +from .utils import convert_to_numpy from ..config import C diff --git a/learnware/specification/regular/__init__.py b/learnware/specification/regular/__init__.py index fc95950..6227607 100644 --- a/learnware/specification/regular/__init__.py +++ b/learnware/specification/regular/__init__.py @@ -1,4 +1,4 @@ from .base import RegularStatSpecification -from .text import RKMETextSpecification -from .table import RKMETableSpecification, RKMEStatSpecification, rkme_solve_qp from .image import RKMEImageSpecification +from .table import RKMEStatSpecification, RKMETableSpecification, rkme_solve_qp +from .text import RKMETextSpecification diff --git a/learnware/specification/regular/image/__init__.py b/learnware/specification/regular/image/__init__.py index d76b56b..be9e5f7 100644 --- a/learnware/specification/regular/image/__init__.py +++ b/learnware/specification/regular/image/__init__.py @@ -1,6 +1,5 @@ -from ....utils import is_torch_available from ....logger import get_module_logger - +from ....utils import is_torch_available logger = get_module_logger("regular_image_spec") diff --git a/learnware/specification/regular/image/cnn_gp.py b/learnware/specification/regular/image/cnn_gp.py index 6ceb7f6..84f2b13 100644 --- a/learnware/specification/regular/image/cnn_gp.py +++ b/learnware/specification/regular/image/cnn_gp.py @@ -1,9 +1,9 @@ +import math + +import numpy as np import torch as t import torch.nn as nn import torch.nn.functional as F -import numpy as np -import math - __all__ = ("NNGPKernel", "Conv2d", "ReLU", "Sequential", "ConvKP", "NonlinKP") """ diff --git a/learnware/specification/regular/image/rkme.py b/learnware/specification/regular/image/rkme.py index 3ce9ad5..27a4b84 100644 --- a/learnware/specification/regular/image/rkme.py +++ b/learnware/specification/regular/image/rkme.py @@ -4,23 +4,22 @@ import codecs import functools import json import os - -from typing import Any from contextlib import contextmanager +from typing import Any import numpy as np import torch +from numpy.random import RandomState from torch import nn -from torch.utils.data import TensorDataset, DataLoader +from torch.utils.data import DataLoader, TensorDataset from tqdm import tqdm -from numpy.random import RandomState from . import cnn_gp from ..base import RegularStatSpecification from ..table.rkme import rkme_solve_qp from .... import setup_seed from ....logger import get_module_logger -from ....utils import choose_device, allocate_cuda_idx +from ....utils import allocate_cuda_idx, choose_device logger = get_module_logger("image_rkme") diff --git a/learnware/specification/regular/table/__init__.py b/learnware/specification/regular/table/__init__.py index d816907..681d7ae 100644 --- a/learnware/specification/regular/table/__init__.py +++ b/learnware/specification/regular/table/__init__.py @@ -1,5 +1,5 @@ -from ....utils import is_torch_available from ....logger import get_module_logger +from ....utils import is_torch_available logger = get_module_logger("regular_table_spec") @@ -11,4 +11,5 @@ if not is_torch_available(verbose=False): f"RKMETableSpecification, RKMEStatSpecification and rkme_solve_qp are not available because 'torch' is not installed!" ) else: - from .rkme import RKMETableSpecification, RKMEStatSpecification, rkme_solve_qp + from .rkme import (RKMEStatSpecification, RKMETableSpecification, + rkme_solve_qp) diff --git a/learnware/specification/regular/table/rkme.py b/learnware/specification/regular/table/rkme.py index abecf6f..c00445a 100644 --- a/learnware/specification/regular/table/rkme.py +++ b/learnware/specification/regular/table/rkme.py @@ -1,15 +1,16 @@ from __future__ import annotations -import os -import torch -import json import codecs -import scipy -import numpy as np -from qpsolvers import Problem, solve_problem +import json +import os from collections import Counter from typing import Any, Union +import numpy as np +import scipy +import torch +from qpsolvers import Problem, solve_problem + from ..base import RegularStatSpecification from ....logger import get_module_logger from ....utils import allocate_cuda_idx, choose_device diff --git a/learnware/specification/regular/text/__init__.py b/learnware/specification/regular/text/__init__.py index 23f1a91..264a548 100644 --- a/learnware/specification/regular/text/__init__.py +++ b/learnware/specification/regular/text/__init__.py @@ -1,5 +1,5 @@ -from ....utils import is_torch_available from ....logger import get_module_logger +from ....utils import is_torch_available logger = get_module_logger("regular_text_spec") diff --git a/learnware/specification/regular/text/rkme.py b/learnware/specification/regular/text/rkme.py index 0396d24..ab5e237 100644 --- a/learnware/specification/regular/text/rkme.py +++ b/learnware/specification/regular/text/rkme.py @@ -1,10 +1,11 @@ import os + import langdetect import numpy as np from ..table import RKMETableSpecification -from ....logger import get_module_logger from ....config import C +from ....logger import get_module_logger logger = get_module_logger("RKMETextSpecification", "INFO") diff --git a/learnware/specification/system/__init__.py b/learnware/specification/system/__init__.py index 45be6cc..4c286b9 100644 --- a/learnware/specification/system/__init__.py +++ b/learnware/specification/system/__init__.py @@ -1,6 +1,6 @@ from .base import SystemStatSpecification -from ...utils import is_torch_available from ...logger import get_module_logger +from ...utils import is_torch_available logger = get_module_logger("system_spec") diff --git a/learnware/specification/system/hetero_table.py b/learnware/specification/system/hetero_table.py index 4726f83..52602e6 100644 --- a/learnware/specification/system/hetero_table.py +++ b/learnware/specification/system/hetero_table.py @@ -1,16 +1,17 @@ from __future__ import annotations -import os -import json -import torch import codecs +import json +import os + import numpy as np +import torch from .base import SystemStatSpecification from ..regular import RKMETableSpecification from ..regular.table.rkme import torch_rbf_kernel from ...logger import get_module_logger -from ...utils import choose_device, allocate_cuda_idx +from ...utils import allocate_cuda_idx, choose_device logger = get_module_logger("hetero_map_table_spec") diff --git a/learnware/specification/utils.py b/learnware/specification/utils.py index fdf9fc0..8b1f392 100644 --- a/learnware/specification/utils.py +++ b/learnware/specification/utils.py @@ -1,7 +1,8 @@ -import torch +from typing import Union + import numpy as np import pandas as pd -from typing import Union +import torch def convert_to_numpy(data: Union[np.ndarray, pd.DataFrame, torch.Tensor]): diff --git a/learnware/tests/benchmarks/__init__.py b/learnware/tests/benchmarks/__init__.py index 2133620..523a910 100644 --- a/learnware/tests/benchmarks/__init__.py +++ b/learnware/tests/benchmarks/__init__.py @@ -3,7 +3,7 @@ import pickle import tempfile import zipfile from dataclasses import dataclass -from typing import Tuple, Optional, List, Union +from typing import List, Optional, Tuple, Union from .config import BenchmarkConfig, benchmark_configs from ..data import GetData diff --git a/learnware/tests/benchmarks/config.py b/learnware/tests/benchmarks/config.py index 136e1bc..e595fd3 100644 --- a/learnware/tests/benchmarks/config.py +++ b/learnware/tests/benchmarks/config.py @@ -1,5 +1,5 @@ from dataclasses import dataclass -from typing import Optional, List +from typing import List, Optional @dataclass diff --git a/learnware/tests/data.py b/learnware/tests/data.py index 608a9e2..4302141 100644 --- a/learnware/tests/data.py +++ b/learnware/tests/data.py @@ -1,4 +1,5 @@ import json + import requests from tqdm import tqdm diff --git a/learnware/tests/templates/__init__.py b/learnware/tests/templates/__init__.py index fcad43f..69237f9 100644 --- a/learnware/tests/templates/__init__.py +++ b/learnware/tests/templates/__init__.py @@ -2,10 +2,10 @@ import os import tempfile from dataclasses import dataclass, field from shutil import copyfile -from typing import List, Tuple, Union, Optional +from typing import List, Optional, Tuple, Union -from ...utils import save_dict_to_yaml, convert_folder_to_zipfile from ...config import C +from ...utils import convert_folder_to_zipfile, save_dict_to_yaml @dataclass diff --git a/learnware/tests/templates/pickle_model.py b/learnware/tests/templates/pickle_model.py index f708ad4..8ec7f44 100644 --- a/learnware/tests/templates/pickle_model.py +++ b/learnware/tests/templates/pickle_model.py @@ -1,8 +1,11 @@ import os import pickle + import numpy as np + from learnware.model.base import BaseModel + class PickleLoadedModel(BaseModel): def __init__( diff --git a/learnware/tests/utils.py b/learnware/tests/utils.py index d950bf3..5486bf4 100644 --- a/learnware/tests/utils.py +++ b/learnware/tests/utils.py @@ -1,5 +1,6 @@ import unittest + def parametrize(test_class, **kwargs): test_loader = unittest.TestLoader() test_names = test_loader.getTestCaseNames(test_class) diff --git a/learnware/utils/__init__.py b/learnware/utils/__init__.py index b43d763..d7b666a 100644 --- a/learnware/utils/__init__.py +++ b/learnware/utils/__init__.py @@ -1,11 +1,13 @@ import os import zipfile +from .file import (convert_folder_to_zipfile, read_yaml_to_dict, + save_dict_to_yaml) +from .gpu import allocate_cuda_idx, choose_device, setup_seed from .import_utils import is_torch_available from .module import get_module_by_module_path -from .file import read_yaml_to_dict, save_dict_to_yaml, convert_folder_to_zipfile -from .gpu import setup_seed, choose_device, allocate_cuda_idx -from ..config import get_platform, SystemType +from ..config import SystemType, get_platform + def zip_learnware_folder(path: str, output_name: str): with zipfile.ZipFile(output_name, "w") as zip_ref: diff --git a/learnware/utils/file.py b/learnware/utils/file.py index c0b4f77..4108b49 100644 --- a/learnware/utils/file.py +++ b/learnware/utils/file.py @@ -1,7 +1,9 @@ import os -import yaml import zipfile +import yaml + + def save_dict_to_yaml(dict_value: dict, save_path: str): """save dict object into yaml file""" with open(save_path, "w") as file: diff --git a/learnware/utils/gpu.py b/learnware/utils/gpu.py index 3bf1bd8..23330a5 100644 --- a/learnware/utils/gpu.py +++ b/learnware/utils/gpu.py @@ -1,5 +1,7 @@ import random + import numpy as np + from .import_utils import is_torch_available diff --git a/learnware/utils/module.py b/learnware/utils/module.py index 6f1b414..3aab61e 100644 --- a/learnware/utils/module.py +++ b/learnware/utils/module.py @@ -1,9 +1,9 @@ -import sys -import re import importlib import importlib.util -from typing import Union +import re +import sys from types import ModuleType +from typing import Union def get_module_by_module_path(module_path: Union[str, ModuleType]): From 53fa44104e2eada7401416c1ce82e97ec9ef18d6 Mon Sep 17 00:00:00 2001 From: shihy Date: Wed, 27 Dec 2023 19:29:48 +0800 Subject: [PATCH 03/56] [DOC] Modify readme.md for Image Example --- examples/dataset_image_workflow/README.md | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/examples/dataset_image_workflow/README.md b/examples/dataset_image_workflow/README.md index 35d1f16..6f6161f 100644 --- a/examples/dataset_image_workflow/README.md +++ b/examples/dataset_image_workflow/README.md @@ -2,9 +2,18 @@ ## Introduction -For the CIFAR-10 dataset, we sampled the training set unevenly by category and constructed unbalanced training datasets for the 50 learnwares that contained only some of the categories. This makes it unlikely that there exists any learnware in the learnware market that can accurately handle all categories of data; only the learnware whose training data is closest to the data distribution of the target task is likely to perform well on the target task. Specifically, the probability of each category being sampled obeys a random multinomial distribution, with a non-zero probability of sampling on only 4 categories, and the sampling ratio is 0.4: 0.4: 0.1: 0.1. Ultimately, the training set for each learnware contains 12,000 samples covering the data of 4 categories in CIFAR-10. +We conducted experiments on the widely used image benchmark dataset: [``CIFAR-10``](https://www.cs.toronto.edu/~kriz/cifar.html). +The ``CIFAR-10`` dataset consists of 60000 32x32 color images in 10 classes, with 6000 images per class. There are 50000 training images and 10000 test images. The 10 different classes represent airplanes, cars, birds, cats, deer, dogs, frogs, horses, ships, and trucks. -We constructed 50 target tasks using data from the test set of CIFAR-10. Similar to constructing the training set for the learnwares, in order to allow for some variation between tasks, we sampled the test set unevenly. Specifically, the probability of each category being sampled obeys a random multinomial distribution, with non-zero sampling probability on 6 categories, and the sampling ratio is 0.3: 0.3: 0.1: 0.1: 0.1: 0.1. Ultimately, each target task contains 3000 samples covering the data of 6 categories in CIFAR-10. +In the submitting stage, we sampled the training set non-uniformly by category, and constructed unbalanced training datasets for the 50 learnwares that contained only part of the categories randomly. Specifically, the probability of each category being sampled obeys a random multinomial distribution, with positive sampling probability on only 4 categories, and a sampling ratio of 0.4: 0.4: 0.1: 0.1. The training set for each learnware contains 12,500 samples covering data from the 4 categories in CIFAR-10. + +In the deploying stage, we constructed 100 user tasks using the CIFAR-10 test set data. Similar to constructing the training set, the probability of each category being sampled obeys a random multinomial distribution, with positive sampling probabilities on only 6 categories, with a sampling ratio of 0.3: 0.3: 0.1: 0.1: 0.1: 0.1. Each user task contains 3,000 samples covering the data of 6 categories in CIFAR-10. + +Our example ``image_example`` shows the performance in two different scenarios: + +**Unlabelled Sample Scenario**: This scenario is designed to evaluate performance when users possess only testing data, searching and reusing learnware available in the market. + +**Labelled Sample Scenario**: This scenario aims to assess performance when users have both testing and limited training data, searching and reusing learnware directly from the market instead of training a model from scratch. This helps determine the amount of training data saved for the user. ## Run the code @@ -18,6 +27,8 @@ python workflow.py image_example With the experimental setup above, we evaluated the performance of RKME Image by calculating the mean accuracy across all users. +### Unlabelled Sample Scenario + | Metric | Value | |--------------------------------------|---------------------| | Mean in Market (Single) | 0.346 | @@ -28,6 +39,8 @@ With the experimental setup above, we evaluated the performance of RKME Image by In some specific settings, the user will have a small number of labeled samples. In such settings, learning the weight of selected learnwares on a limited number of labeled samples can result in a better performance than training directly on a limited number of labeled samples. +### Labelled Sample Scenario +
Results on Image Experimental Scenario
\ No newline at end of file From 9636e5807cce3e0f4da26e3837000a2dd7b029a0 Mon Sep 17 00:00:00 2001 From: Peng Tan Date: Wed, 27 Dec 2023 22:14:04 +0800 Subject: [PATCH 04/56] [DOCS] Initial revision for intro --- docs/start/intro.rst | 75 +++++++++++++++++--------------------------- 1 file changed, 29 insertions(+), 46 deletions(-) diff --git a/docs/start/intro.rst b/docs/start/intro.rst index 3463750..02955c4 100644 --- a/docs/start/intro.rst +++ b/docs/start/intro.rst @@ -3,61 +3,37 @@ Introduction ================ -``Learnware`` is a model sharing platform, which give a basic implementation of the learnware paradigm. A learnware is a well-performed trained machine learning model with a specification that enables it to be adequately identified to reuse according to the requirement of future users who may know nothing about the learnware in advance. The learnware paradigm can solve entangled problems in the current machine learning paradigm, like continual learning and catastrophic forgetting. It also reduces resources for training a well-performed model. +The learnware paradigm attempts to help the user reuse existed well-trained models to solve their problems instead of starting from scratch. The ``Learnware`` package provides the basic implementation of the central concepts and procedures for the learnware paradigm. +The ``Learnware`` packag is designed to be easy to use and extend, it elegantly organizes related concepts and core functionalities together and is highly scalable, allowing for the easy integration of various new features and techniques in the future. -Motivation -================= +The ``Learnware`` package serves as the engine for the Beimingwu System, it also can be used for experiements related to the learnware. -.. image:: ../_static/img/learnware_paradigm.jpg - :align: center - -Machine learning, especially the prevailing big model paradigm, has achieved great success in natural language processing and computer vision applications. However, it still faces challenges such as the requirement of a large amount of labeled training data, difficulty in adapting to changing environments, and catastrophic forgetting when refining trained models incrementally. These big models, while useful in their targeted tasks, often fail to address the above issues and struggle to generalize beyond their specific purposes. - -To better address the entangled issues in machine learning, we should consider the following aspects: - -+------------------------------------------------------------------------------------+ -| Aspect | -+====================================================================================+ -| 1. Investigate techniques that address multiple challenges simultaneously, | -| recognizing that these issues are often intertwined in real-world applications. | -+------------------------------------------------------------------------------------+ -| 2. Explore paradigms like learnware, which offers the possibility of | -| systematically reusing small models for tasks beyond their original purposes, | -| reducing the need for users to build models from scratch. | -+------------------------------------------------------------------------------------+ -| 3. Develop solutions that enable ordinary users to create well-performing models | -| without requiring proficient training skills. | -+------------------------------------------------------------------------------------+ -| 4. Address data privacy and proprietary concerns to facilitate experience | -| sharing among different users while respecting confidentiality. | -+------------------------------------------------------------------------------------+ -| 5. Adapt to the constraints of big data applications, where it may be | -| unaffordable or infeasible to hold all data for multiple passes of scanning. | -+------------------------------------------------------------------------------------+ -| 6. Consider the environmental impact of training large models, as their carbon | -| emissions pose a threat to our environment. | -+------------------------------------------------------------------------------------+ +================ +What is Learnware ? +================ -By considering these factors, we can develop a more comprehensive framework for tackling the complex challenges in machine learning, moving beyond the limitations of the big model paradigm, called Learnware. +A learnware consists of high-performance machine learning models and specifications that characterize the models, i.e., "Learnware = Model + Specification." +The learnware specification consists of "semantic specification" and "statistical specification": +- semantic specification describes the type and functionality of the model through text. +- statistical specification characterizes the statistical information contained in the model using various machine learning techniques. -Framework -======================= +Learnware specifications describe the model's capabilities, enabling the model to be identified and reused by future users who may know nothing about the learnware in advance. -.. image:: ../_static/img/learnware_market.jpg +.. image:: ../_static/img/learnware_paradigm.jpg :align: center -The learnware paradigm introduces the concept of a well-performed, trained machine learning model with a specification that allows future users, who have no prior knowledge of the learnware, to reuse it based on their requirements. - -Developers or owners of trained machine learning models can submit their models to a learnware market. If accepted, the market assigns a specification to the model and accommodates it. The learnware market could host thousands or millions of well-performed models from different developers, for various tasks, using diverse data, and optimizing different objectives. - Instead of building a model from scratch, users can submit their requirements to the learnware market, which then identifies and deploys helpful learnware(s) based on the specifications. Users can apply the learnware directly, adapt it using their data, or exploit it in other ways to improve their model. This process is more efficient and less expensive than building a model from scratch. +================ +Why do we need Learnware ? +================ + +Machine learning has achieved great success in many fields but still faces various challenges, such as the need for extensive training data and advanced training techniques, the difficulty of continuous learning, the risk of catastrophic forgetting, and the leakage of data privacy. -Benefits of the Learnware Paradigm -============================================== +Although there are many efforts focusing on one of these issues separately, they are entangled, and solving one problem may exacerbate others. The learnware paradigm aimss to address many of these challenges through a unified framework. +-----------------------+-----------------------------------------------------------------------------------------------+ | Benefit | Description | @@ -83,11 +59,18 @@ Benefits of the Learnware Paradigm | | large models and the carbon footprint. | +-----------------------+-----------------------------------------------------------------------------------------------+ -Challenges and Future Work -============================================== - -Although the learnware proposal shows promise, much work remains to make it a reality. The next sections will present some of the progress made so far. +================ +Procedure of Learnware Paradigm +================ +- **Submitting Stage**: Developers voluntarily submit various learnwares to the learnware dock system, and the system conducts quality checks and further organization of these learnwares. +- **Deploying Stage**: When users submit task requirements, the learnware dock system automatically selects whether to recommend a single learnware or a combination of multiple learnwares and provides efficient deployment methods. Whether it's a single learnware or a combination of multiple learnwares, the system offers convenient learnware reuse interfaces. +.. image:: ../_static/img/learnware_market.jpg + :align: center +================ +Learnware Package Design +================ +TBD by xiaodong. From e22223ccf76e66894ab2844b534d3bb65b601efe Mon Sep 17 00:00:00 2001 From: Peng Tan Date: Wed, 27 Dec 2023 22:16:09 +0800 Subject: [PATCH 05/56] [DOC]: update figure --- docs/_static/img/learnware_market.jpg | Bin 1779276 -> 0 bytes docs/_static/img/learnware_market.svg | 1 + docs/start/intro.rst | 2 +- 3 files changed, 2 insertions(+), 1 deletion(-) delete mode 100644 docs/_static/img/learnware_market.jpg create mode 100644 docs/_static/img/learnware_market.svg diff --git a/docs/_static/img/learnware_market.jpg b/docs/_static/img/learnware_market.jpg deleted file mode 100644 index 1f69769b5b656dad85e805be3528c6bfb74bad22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1779276 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 SPjO$X~)y^wM`&>?47n8lrube06 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
~{AfSL0^qLB? zyiWuo3Se$UK?IG~{lx%bCNuqFP^|~kIi1tk6*RIi?NG8Gd;&`2K!-zj#z6@By%*KM z4m4|jG0f+BJ^~l<<{Dk?Bcx}IjMVuC+Y^I=BM=LFaO5p0k(lCx+B8*$0AG-&nJCgC zwHAbK=jkAE?=m8T$6gC~YJ@uVhBy&I4{dIOP}a16F-!xQ2<89#2LJCF{J+=W|A%f8 zcruRo0!2M;Na&=pLnh|x@$5*UCS_TY%s{wIVub9hsAJyU7wIpU8HHll`5Ka5-fm<- zJuvo8b;wyDnhkfd_T}{=q@`{WreaU+&&|F1^o-x(iO_^

j<8@LD6X6)@`k91o;M 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

C7CdgMzF)@(V#4)r# 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

JoElCE3QosY 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%0Drw6IcS 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 u`2M~+!uAC*Q}*h_rwoC^8hzw+L_u|5 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%0AC1gSUk)Ac0of8H^4B$V2halzs&75HY}MXD#w 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�g85jx6sp45 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®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 VpTqMJXJLpV!UMP-xQ1GA zE3yaLshnzUu`xvYdMrOB-|j^!$JT@BXhW@ymxR9qo&rR;$FWhgE~8<}ac7TN`HGin ztW|5_)m;`4g(K|_Q`tssQb4NJnRx*%+gEU~AFVKne>Cp(K~z-Jl-{>=AX+-_eBQ&U zlMVCa!7MlwBai7U4#LCy-|FsXSdSU9ES(Niw*1_c*BtFxd&jt*`#YxW3;F=N6fH+r zarB0LHwl@X*n6gVQ>sRE==L^9R&BZ5jVO&R$=aJXE_PoYwG7Ne9OMb?bXTU|S?Tu9 z_sU;&-IH_v#B}Xjld_+flv?B{KJnB(IO7O1{H{Xmd4wbi*@oaFn?5<)_kB}4-b*1V zM)4iavWLirA~-Pu=^(Fwi%gbz^D+ph2c=e&H4l3coP#>1wA)@xNj7W~E~9qq>4lly zR2%yFq%5rf&-p{*OyBC>|q zL8i(@u#R3g9rBJ8rIl*5ybH+N?q23_3iw)b>c$mfGiW)-|YrVt}wV4V1ty)#!D~a1yLkpn$wH5 zZnw*QKhrKO{vaq>?D{cR6)8MLR05}Q6k6$%nh9IOWKgLVS@5OR;S1wlhok=V8ch5N z%j7!In|1;5z9)P&yAN|1qzTZCT~LALu*ueUIee7RgQ&c-IIe%&*d@iFL@_B$|e*K z?b>ksz#d;D33e}%-0?ARp*MXuXf_QScV8$m;3s}TT2kiRrhnW=KkGD(&)wc{xaP;0 zq3c~pM2Mkp#5d*7E*ohd$lk@*v-EtriIY4}+KauZ3}x;7#2KR&2J~F8*1GnvoEe?c za6mftPFI`6Re!<(Y!pJ2_Cv#?XJxPZZHg?=>&^@2@WQO&2gce&sYVN{DBHzo^!-uF;qyWo+h)4Dl zq%Ze8@;{t*=1;Xt zNJERzT}BPO2X@v;Q=kj>lYk^vJvC2G7)MpKRP4wI@pDXB47|{F#_Ivmi0sqOy;Fgl zuYJ*1sLIm+4Y8ji%-QQS!4L*uS5)Q$Z|f(bH<#Ehq_Oo3JzDUZG7aC@?Z?D07srp$ zA3nG+%&9q2Q|ro8`eZC&uXG8u4#f+UpqrYn=U) zxGMIHEtIrrllAOU5q;&#-O(iLlEBYOZL%U+hG zz2>YB+R{|f;1@dNLt|G{Qo_?G`I^)~XXe_EUi;=_V9{D91<^WNccWkJd<(pKnQh!+ z#2$Z6VgC*P{XZ@-ayZ;xw2HHp74fF{W{hI+gJeySSRDW?PnD=hBBQv!%~L2&btQNzHkoq~!9?XMF0XRb({f%d*3;4pAdZ_dGRdEQH6 zhFMqjqYA959PCC1vYkpxHef%3Ni*?>_-PirCZvd;KD z^oF%%wPcTUIjDd3y4x^-6Z_8VM--2#$}!~UGLYYNve;;qxAzb9{h`JodwhO--rTz` zkvW3&CrpRT`T9ww!&G|>h0Ke-242m}>`!X(!5n4hW5iM7jnvu8^x21ty(8@Fu@}W; zpncbiof+IKH86%;eB%VKlW`s@6G=xrnj)RuMTbUCdj|Q1Rqi;P6W_G6Di|dQb_!-#D zJ-%>WGIH*lS(zdhioIzTH5`)0NTXWgCM_jevP)^LXZ8u;(R~DMUJy~DC9>qGZJk{g%9gF(H@FFA>+A-B8?Bza!8d=H>eKu zr!M^QA8P>_rWv&=d8fye4EWW1Jj7Q^N&ZH+nnGsx$(khTUc;;A0zLJ&?u zF>CpGn{*b)J=!ddri9$QfpWZf-*yePC1ScNi z^yU?_j?p?9Hcf$hd!o>$TVk`$N~qY|Z54~$zvp9pu#LX<{BZ)G#}Uiy(yvKg%F02d z6HlD6(qb+QyE|nDGjgA0@Ej92Z}r8m*8vkxlc7v=9VEBlg=)`)P+TUhK7HK1N{kV@6WTa6}e; zUn~FBqWmIKdinJ6Ytwoi=XUz2$0aYGR^+E`eI0k-XNP9~_udUn$4>TG@$sJQEd&^U zOyQ%{WOt3v0ZzuZQWC9o#8r><#=gzR5D9OofUWUl?H=KQwp*TU-ok*kSHZ^{t-He( zF9_jZLToB+y0NtLAqJ+-YZe-bM!j|9NPkHC(-aD?TcHI^Q zMNt8x6lp?`W}zun0TUY_AOumQ6BPmJO?n^-0#ZX!_yi%+1Vo7RPUt8_q&FcDL^>qY zK#KSM_S*NJwO849opbNmzjJ=~{sDxUFqxTo%kzw9JYx(e7TK5Dj|?~KnQh#XWA7}g zjeiq%t@E>3Fh}6zU)eMo|C#?<;l?~W&=nXOCz@CZEZhB|H1Tw0vfPf=j!Wv!L;$>O zPoOQP8(&|Qa5>rO;unHK^lIZ*5$NZ0?;&&HjH9anQJ!Ip5f0*AK@)>AS*r=Zf@i0| ziHAc9mv*tFqyb=Tb;g=QCq`_(#FE^3H8t((78t8n`hkMbjr znPd{C4M{S=kGHh@cPH;+%P{Q=cFF59m}uO}nbV1_20HOLt4=llWBX!^;}tcvRUqb^ zMCqHyOx;m+2}`P0_d}08_~gF&OA#CExS8}E*8ZpA*&#apGujS&Vw_-)7gqNo9$6)L zj!`~PmUnig5_B%tZVIxB+nAah4|O}j$iYuz0PfZW2Lh@qGBeo7_{E)lShaY`B209^ zd9+Mf;I$xXC^`X=v_$TF5n-eKn)5a&z;JufFMxC)A$gZGs0GVgXr|4P4O2CJ9F2{) zETg*p42X-s+Hf;d5&tuUWd2t&IzU6qV!HJb(g&;%-#IQx%oF<3b)i;(iZ( zCE`9k_8m99AHjb!OO}tX`7`S#n?~UISqMeUXVrQ-&_NHjyW>h3Q6z6W!<%-;qtD{B zoo9V}^}8KE{@Z%N1w165!cVs3E~1$LX7BY2W?EYrNq=yk9sByyRVMN0 z*Wgd^(_h&fTj`Mvm-Iy7V;jEX;xDJCJ1b7Sz1py>vAz#f%TOTdWBIe*;Wz=_1o+S& zS+dRqIGn2Kef6Ox)toGu<&fjNu5`XxYR~++wSd;?OHvovyN*2OPRm-V`KPSWzvd17 z_dfowGKfh2Qw)rB+w~=!^Z;?3qKly9Lto7%HmRua3RwP%2&zav$rh@SqAUl5w;1M1eRgDpw4}4 zm={~%*;e?etwKXbKhAF(mbSyc)J!AO5)_fP$V*0_b=E9f#60H3wrfB|TMRv&Lm=I8 zjlh$1;p2yA8}TO1MsUdHw4lAX6^C=ngwn=vhkWW5!cw?e+hBf!t4N_ zu5d6~fZZ;QhigZF1SUwSnBsGNE3nxz-iRP9m_=rsv^dl5{c|-Q9;<9KJ&l=l7+)uz zrEx9ql-q@wKxQNy+#W!aK7|A{=>#08K`&+wHvp02|4<+O2mIuJnV}6jnJ-}& zE>Vm*1ii=jFAVNn7yi$lKX-7So(WW@|Cjk{u%=hSr;D+`V3e!N#PTdL zw{`Wb2AS(tscg6%%Xm_5arFaVnZ9v}M+pL!k=LeE_B4(5#6-Q$8}$ z;hEq(5#T&{a2{?Ib7$xb5}e13%z0}-Il|8smYUCPaq0;m3FjEGaQ3<0{SmqE@y|=3 zG{8v;0Y#yQrf^3rMY5+Ow#;0)nrzodjZoJ(p)o05WB&0&7T*?|fQB0)Cqrm?oAV=( zLB&RF>Gr4?mRB|mY#$LGUmAbLso~C*Z>)K*Me4jrNE2W-yk4g$0aAzr@5&>vIdF$J zGDHS}!3#DfUgNz5Kh#NiJhR#vX1ib81#AIwf_<&v1)Ypb=;;a&vFWAhGL9mtL6oSb z9d|3O>3TE7>iQu<0-4tzm^fl~%@!LFnG!@aG% zeV8c1@%JHmWTV=uO(ltm3L!mKuXpDO&kuAKUF8074SsFmKMBnK_2sw<8iOxKv_Qr_ zj8D0~BAl#ao#tB$d+2)7ak$3hod*nYb-+htt5=6y1TM0MP`sUl6N+N=LD|jh zk3H{O%Dk=VZ)=2<@X)TZ)Y{3Q*kwC#ja$-gkz@*oKE<$q@4}g7$JHe8o8EcL4gl*f zO2dGFsEUqKbPUwhZ73Zqqqc5})Reuo4YS!cHZ%&aQe^i2&n7z_j-D<RYJjHmIc67}ffuo+K# zy(9T%Q&PZPMGQ}JRm#+*_AjzcTxUN&UQ&}mn-F*#*nG7>5#ohho!l&jeIZ?%w3Zzz z`;7jeN49W|#ahkc#E}&(u{@EHpM=#Mu<1CVAe0^-ua7iQvhgbzmxHImZNbb|Jg&o)%yab_&FB->NgXl4m}-s(;+-j-$W@&p3v&!5_t_i z%`)c&JI;(H3snF9C@hXaBD2E>6|gU|3K zHo{Lxiwb5XBZgreiVagno$py0ERL-JQ4X;OoUMgyP%;gL6etfw$M|SB{bu?KmWm-t zJV?vE810NBWj_7e>q5TG508&-;n;hQBV1gf#r8&;p%tt&;nGN{3iX&$`JUq4JyWE(&NdFq@D4OUT#QwOud>8JZUT0~8Mr-e zoJ#Ciog{0Zu9KzOg+CW_%_7&xu@6cV``c*%TN1ieF0@IkgGx!(SD6Yg8Wic%Wt9XlN(H%hlT2jtk-L z?k*C`CuX3lR(gWx8cTvc6Axt%EQ0{b3#o?jGkUc1DexV1Wih3A_GwGwKD8FYVejFg zB9_mAYTSGk*?OHt=SLw^P;Af?lyn#V5>L`2gltf{h?SAf&vZ?B+S78iBFeA2*f8xW zS4^+PR~wkW)N8C2-9&a0Xs4tYZ1rSdq1QL-r#SIeRvk)8MO1GpVvd;pI2CJ{y;4>0 zjw!S7f5L*vJSXv%cF%MK{}e)zhOfHwr_oHw0YpsXlQH&l>b<3{f@*ht!-j{ij=??7 zHHptABEMs4CwUnh&q?7cLhd;rSm~oDg2@yW&r)6d`Tk~^>oM&?z81(<6ae4SyE6cH zsK6rc&2t#2+=m3>r$^0kuT=cu?Y-mHEd!<$Z~5eOL6U67N$v7`y9x7mqc`H7Nx6*L zL*$vEU*)!L+S~Jlesa5h+HIma`0{MbjZY4TnV8&|PCtB>|KB2u|KGgepG7%)DvV{WbVGDDe0k;MAB~f6>d{$_Gn4+U5d zq}dU}k1`-@V8ge*G@T-q9~Wjwy0qMsn~Z^CafW2x zU&*)lU`yv$uaen7C3+4Q(I7;rwIIco+lj=>DlR8s+=WzfC*4;XBk4dVH24m>iNNW| z5G^JlR&VOD5${Cl@881Xj9$k%8saf{ifAs4*P00KZ!PgnY;vB}lCUJ@YQ8?NF=?eF znJQ5Hi#PyZ`e~7H{}J+C^d@rHXN3%G-{3n1l&cw(-A1!H>?@QUQOc{jw64-A7;^v7 zkfr|3^Gz%#uL+g^Gfl_;isOFBRWGU&O@0U{z z#H9PLq|dD;p60B$-SNfmEC03*?FE?UL-@HI$Vgi;~rDB?8!*rCVPVsSDZF8xIqR7K(8fIEppIJX+59er?2kl-m1~4*mE3 z75|}8D#!~A#8M>5038YRYg|XQ+R{}i)rF?ZQ{w$~0e%_g7UuTfO+K1wMkYeV8Y1;Xy8}-97pNd>W(sIfI zRqljJaIn=(e`P5M_S_J@sEO8D_)De)0LtLl(?Kn0F8B(Y$Zw{Or23LNEyl6yznLTz z$a0KEfFEY$_?ybnqR*jY;roVHz?QT&1aAhP{Bg9pd{9PEWKP0L zOT_C74zc`)ll~u78(n+TfEv}9m5G)$o|->9wA9aFDZ(cqvnEmN8&?G)_qd3>9le4< zP5x7qMBs@=@TAqH=cXL!eF)DDS2P@-SWl+T&JN3HvaL@ougK1hXcFRvkfs&aS$i$gX74U)| zY%LH~KsTKyv1z}|6Nq`YZeL`j(ODAZtJ85@6Y@>vaYG74h6<&eosP{=&bPCcEhOre z^mr96^$XTggKwYRjoH=IbgOE29L%5D^nJ(`%Umg2k`y(^0>;Y=Pk)j87fBKXt|zrJ z3=hIuWdTfsM4)k%wj&R!n>C11&}7l8x)xRMv;*B|IpnY2upeYnmTAT)G4rz?u4TiG zv(AP$FDU6^PSM0l$r7QTUO2Cz#PTD=-+EkkE$v3Nj7~qpW#)ZyuzMp_J8R#bt6Og8 zYErfD7$Be}6RPB-{_d*K$d5H&7?{t8PEnk_h_}{v9j2?Cw7N^ zGDGHj0(f7dJTqz6`mzQU^~@1NpCrX4+On4wotJ~NBNKuBZ$HY^PN^aP!|2k9UjE2i zRWF_#&wdyZ-(QDp{WIIchpM*Cr41)$F9~zh6~}=lp40e5g!81wjfC8dPk^Z;kJ}tT zpU2V5ajm$WDzx;-H@R(O{1hd5$BN=Qd(=gIu#Rm;?Q7BIuP(`C$R9tq)hgy;dp&*t zGNN%Q%)o=U>KzS8t3~xQf?rpk$ob>|0nJsugYajt{w$#*ZARp?O|DUd17&IxtE{s* zNm;Jqoz~$U%I;+sad5eDqYyjcA0uxm7{;-TJYUyV|36oU8FMJ7-tkn?o;=?RlqI*Y zOK~P)M#t(lzjic8O*B5-)QMtn6(7&`&p9u{Q)yU&mP!wjtT+x|zh8~i&1U?r*`oV-W=)di=npqPX~)4w1HfNOE-XmU zIT_CpBxYIm{)M{XVyWgI^M`cW{e7B#HQ3V=LH3bj3}p{Gj#2{(Q4~Wymk*IozZDYI z2rH{fQ9o`^XTLD_h-u{N5TQFRppVloQ~Ibko*HvHU^^P_na+rNV2Z=S(t-{FBh6G+o?!!W2LB&pzW2~1a2{xz=7Jb0@tO>0j$M)gX} zZ>CoXjE!IDaJeN^7Rc+GjEWeF6WXpMLQ8`{7}Ll#73R0dj#C_MBhie2iaW?id^};GuC5acbV}H5z%T0c}|C4OhMFvV?6l=1%DX`c= zL1rc&>=}rpJ1T7|$A*aU%mb6~JBToQ;;-Q{KXucYfF9!Q_LxFl=hNa$Fpc@AvzJfX z)||I}>#Up;q92`XeCRF#Q8t(RF;YGq!Ykphdf&48o$-(4Ut>QTq`>WSTgI~0Ip_MO zD_2vpJ&(NoqTz3i{@+CWZAQA|&FfG2b)DtnysY-irdN$2iHYbG8c{}E5BG5E}E)eV%6s)LN5!$BCLpvgv9_9iTT z`4p4(IoQbWCyeO3Xo_f|jTzs!<{lVHSsLD4MvG(L^oX_bL2Z9c)GRuqyEb5Jlua_O z5zkt8Mlt>JVA(`~VAYsLT608p!{Y1Pe)bTt=NzcSS-CMahTu)B(mGOd^D2DiczAAC z4WV@)e_-4EIWFz{cuVC|n}z=95nj@9nSk~hJxp|+8W9@2NKE|&cOIsh;QMoc_+MU>PZF3i`h!V&AwXr`{m5d)I`vJil^k z;L??|R}5IoeQK~YF7rl)%*gbRI#3JzlQdO)Axt&*l|;f7H&t%SEaB!_^pT)8!Z8$U zkygGv>;P%9DC20SMc`{~5m;@iWYvSR91gPUwE_gO z=H;3`;Gu7cj6VaWK9ta~x&p_qeC7H~ob2vs%bf03#s!fC+Z7UMd@f;eQL5QQeuU`xYP6TZugr) zL%I57DYQyAp5@7+YRBr;*&gK`sTk-C=J`*XR<160SdRRB)e-L}0pvU7^fwK1zOyX~ zplfC}sql0H{9sFpQGH}+hu)m-{DK2E0u8D~uLy@icZz2avB}>@J5EH7=#vv9=Atc` zIMgma`aZqddv&>c4Tzco-yD_MNvUQl$?r5d@~OSdP1p504%Dtw)ClasWXAK=+SA@e z`KB=rRE*ed7O-2=OVrd*gZ7P<7eyfc0UYJjFrqLE2XLG>lJi9 zSk1OZe?7ftC3bjGQ!#&2PsZsD!+CVyCTD;qmh~v5SMPIi)aA}L_9I!OV~6~B!P-5Y zfj+9vJX+k+FM-vWkh0S3tOizJ&xzip~5Y3Qp2c&B+q6v+cV#1pbebjqt&-E{kX5q(cu+$I$a@U4`xx3 zUh;YgE_FR{{Vl#)c#iDRcdp5A3bFP88KrKE1j^w)ttRD{!D)<faFSjwpel$_^`8Zv|-hh>wD4}2sP zIf=cPxp(i}{XZ`KbQUKz#19*Z*os}np`#vvp68vtf2Os%W z^U-dj{rcT*oOs1+%amDJbiiH@yinT8vp4?sh{vjGoJ|j zbh|Gq=9KW{j^F=RF|>FPDtU8{V* z)WIOR^wT@LiGcm94OHkonlYtk1|19&2sCdq8;Xs2l2K9Knqg+kR555(G|GC6S!vdg z<_YvLwZkhZb~EK9*KmnW43BThfs!v(H*n6jLDq352Sp|s3>ds}Cv9!vC?>Fuo4C5*{QWDIGBs_G`CRBn${0sFOY4m`T8&Xp}A^Zio@I?K>_ z7SR*K;Q-xUJ=h4F1lq>kx_Gr0NWU*Dwjl|r(y8@Ml^3PO%0;UHkO28zU; zDxjiHm240L79OY^6SS69Sg|G^&5-13DrF>r>kiXbbwMK(R93}8+ zb883%ySKG2bCc07{9l+TSqu&nAS-d222O;l_W|BfD&_l7q#D@UrQi>76mPqgD>Kj# zI0@i~&Cb7>j(n;FR7xkbE!vh|u&PozY5ir>cB1mz1mp9(i|;qqzQ6Y-{y*Kx{^sXD z5?x;2!N-6`qlN96oRZEtzk{jC;0L?895|%#_mhnwY^%?r_ciUv(|eb@}u659Zs7Fn<+c zAKC5#1&iOnfJRvfLy-XcaIF>z5p}4DzfVu02et!{QBW>f z(SQK8iOZ&S@T@OENLBN&#_EZ*&Nx>sG4=&8!7rvOkYn@7T+CcphzpY^yV9J zM|@KeiQ43|p+Uk60ihxe-Oz0tK`>H6*&-s~<>g?UOT_4p1M>ln1%7eaaXQgPeXlq8E`l<>=tl!q zU6K!R{uPXw_5g@`)Sb<@0DuLlDC2nUhp8KFW=Dx`OTJ6;7qxC2Wes+uex^u~g`v^t z!!!xv@-vfFno*YN^2u{oj#ZuzZ?sz=;)9pXP32sy!}xxt*#9B!o|$C#*p2C6KI{$s z2cr`XacMZo=)!WK&IjeV)?J#hl+&(a*-Bu$o#~1o-W)YxMgR52`8SVQJMbiP2t`5` z6qycL(=kerBlyv+-%LXri6i!{szkMDCB zfaZe%NZ+KPN^5 zRF0r2qyT&xWGm${YvnU9{N6k68?^x92C1TyCBivhT>n;5vfF9-l8eqo%5~0Z*)}g2 zh4AS&aKL|k36PKn@RwZ$zA6S7O>$D&u?qYQ+j6LCQXK8T(&f$7u9Fo{1of{y#JpyL zn*L2_^KWjE|LU;^$QYD!HcEvQluv}5aCo4q9G+?RH82l3b?5WMSd&07Af1jLqIUow;=KXL`U5xnLKWgG99j8L&w9peIe{**K z9(N6<0B&Ckx@nle3DO`apKnMbzH}|ule9S#EnlDF8#!bqgl@frdEHrpP5E|8aGnFegq~_ixJR40ggQCzf>`<^12>T)Rqi6-5#HLDexBJLR#p}JF*%Bv|e&TuYwuA_1Y2lUuh1v*HA;}EJ zR9xPsA79puPc344dtyFhpdVkS(+XhG*%rbn+L-{b8S*?;g-0j~X{*=PtKBb+-58z= z6u!dz01D)TzF=rv#*E`<>6z&1cl-46OiBV!ym{_(;fJqz8*j;^hQM)npRC}sicg2# zxGp`J%kqq5d;og~7F|hbS*M&=S?SB9=}~<00<-i7S>w^U-CaAAoaAfr;}#;+64~pl zSp`!07djD}rGOx!0tPyJ8K_gRMk^vB2}f64q#L*>#J#fRdhssDk^YimY~sNHe63_O0UcgTbACs@k)`EVM)r=KVQGBnjMRuPOjPzmq~KY?q`n>LY(WhrQ3lp8>X-AOKOX-EpK?J1fE=G!^neVo-MVB~{Z8F}ZMR z{}1R@&kkMh*?|n&GW{d?RLQ;L_hyyq+b}KlyiMpMTZ<)}#Ni35wb8WzzY&q9ftrbY z)^}TttXq?0DPnS15WBDPW~fG|_o zsA@7hQKWFaL58Alx=^3Yk3(gX2adAxt8mJtDnsBkud-gWW{He!wiHruJ1@XJPNiAg zs;i;okn!z?p4@@*OWA^aFw5w;1 zkNd97JMVSXdY0uN5NifXm~1Lk4KN1pqOJ|YRLNdMiuaP&si5Pe z{j2G*(dIvqXS5x|*@GUW<+$lH3rQ^@C=&BD0Svivr>o{O`E1)C>#$=qwM3^{FE%Gi z_`T@OS56a$nKZTDx|c-KtI0$sT zd${MpbJPWLL*#aokdLtAawiiBKFZ5DnnnUPFFB+>;IWYf(Krwvb(LQ!g5Eq04;}Q^afJ~s<2_yr|xN$3#v(6K()SmH4zkPV1 zTjp@G69g2OSTiq72c$c$%TZK;DyUB&)hcL$7s&3z3;YNW7`KkoOE>L5T+7wb*>^@~ zD!AsNw??PR_wE60*L#@}AL8%wyd4cSx|^WAa*nxt2z8DEot2B-C->8MW{@X+OAQU! z%Sh0LEhpU9tfbA zi9-Q#pAd5Zc*sRDgv*Bn89v}AFX}5Y{xU+JQty!L=qzSc{ajn+=7fF zl|X9inAXg%sE!~=MKPJhzG9?RRX!&@*Y)e=DeiDX_qfKN>`x3>$u=5+;Ia+{gEd10 zbq9Rcr)ebU>G0DKqya;$ErwX&>(2i6+nK7n*b9#qf*#DWY(Y7{Gb6L{Bo`mrDVJTw z(E_UO1jV>rAnhlX73JlTRFf@t=4qK)_!+}J-p{ND?synqZ3}V+n zcHa-PNzKxm($3X3noI=;f1J49V}k2|QxuIE$Gif7v`3FBt_jNL(C;98fr8{q)l8b% zMfhabPM>!rZdeAhCwRXBl6fmO|AAie&vK#v8OQ&r=hQ#+qPhl+gOVIEv|Qx09UaW8 zZRp_gKK);@7iaFF$x%9HATj$a)0br5!pyr6W&r`!AVzsMu|VrbkUj61GGW2%|0bahz zG;SZp9W+se9>U6qiLIATW@vK5JD~LQr{9KC3lSvz*YpsQ=vX1_s4wjNVS%fsdQALJ z9y_)yl}5P^Y*(-?@SQ&u-1>AadEAMX%i4SR?kNmub^%adKIt8ZoDNb78W3iq9CYNR ziTige?^bFUj_8Ld5G+fdoQvh@szC4`OyHcP90#uVYOi5SlyRtulM0+ z7wn39^L(D=)Ly9nWmHMw?Ew4n6Ab&O4Z42tbGg4fhT3m%?zq?Gj5#m@d3&-3VJbm` z!bj=pWn0OuDcu(*_2Qj#Cor&`)i9XJ4Du~Tw62T6iHL!hZKXa7fKu);P5@zA%<>l3 za%H3-!?bPp412Cf1yQP=B1IMTRhf>VIwVyjI>IEY_KM0U&F=Z+SzIyT+lxtfKf6|R z$p4M&_9scfJBogDv;i|z#>c&`)IR_0s9&mB4B2i)6h#lhK|6 zO5{UWUy;K`YR?Uiqau5lUH|kG=kggUjITj#l&vnWkM^sNaMvJX<@L%p?eoTqJESf= ztUSo)+%jIz_F!1%nUJz$*K$FCnz`4c_&`%nJIeHX;vfpuBXhF z&0>C`QY}xZ49n6DU!}@YwjnP-^fVFzf2t=_q^?pR zUTF|lsT$b)huo(LY|`!2U-z1}dFBd%1gI`0`NI!rIQ|gox_I0-F69(x9 zs%6g@bcv1H5s|ALWX_4!DS0w7Or6)ufu&-7hK<)!=hQ@*<}RXqOcQZ4a_7Rsg&_o0 zqdEFFQ;Li-0H*X+s3US&m#tsrvobn!F7MdmYV-*)46R}R^isPljhc36v6Rw!;wWvhLVkM7urvZ0<{MzYduYvwWPa2yIn z8cKY7rdGAJe@XQj`rNS{{Rv4cleD+6$$}{u8!Cu$Xl9*FTP}1PbC6;5n)r1< z_Hq1CcJYXvs)yH4N4A^lbH3&=@f@+7d4e0G8Cu0&vW*fl^KeU+QK2taZj8YbZJ!Xz zeSkl&PjXVjVTv5?CN#03*NCjqzv$g>$0sSxd)5B{hX!jiWSo_VN^u^EfQdg1Vy$GN zm+Jr7s($ijoztXox~1X#3_P!jmzUjxqq9SuQ~+mXv5TKz7rcV4p3=$v8AEs|2v zq*vA<$sFtNNx4lBsD<9KOTo?-Ejbfk0-kg>7583KFq4MKr_@VJ+skg6?N4P@{)oqx zWt?3f_T0dLFc`O6G7MkIdrT)5mRDIN~emRf_ytJFaKbI8oI&cDI&{r!&rm|XqW4`4nt!PJFjKnEzJ3Ce+<5$)fy z)ZzY|Y_}6r=6T_uyPV!Mu^Jx(YW*woB;shTZzeP}Ie8#3cU4vHmGIXbF~-}qC+&z` z$G7wd{6oSK+EaRr`cdFd4y03CeUf6lgpzkATa_QY$aYP*{3iHC2P`{fpSKzPxwjd9 z$i%$KZW_Yz#o150$Z449wEflR5N6);j}>QjSy)+yRnFd=Z<~0-*`cq5d9Kqi;T$I= z#YG^dt}@XhT<=DkSMz{^2V&tI^SR&bGqnbH6J}L4vB_{@msLM*AA%ENpu* zot<76bP3%oV=q}uRrf7fqGu7LD?HRMHu$lK-D-8m5S6xrQZvUEcH+&)%_hbtnlr3p z&oy6Q9%b$?G(P0CdFXPEwD=QhB}j=#X2I0;rDylLick8)*w!V~fJE&b{^m5{D7r}( z6-d@<+dZ*IV2AN77Eh+ygtXoJA-FPMBHKv#W4^yWpc%~!llCQ;Rn-g!!L^lBFH2WU z2@E*DKO(5kioW>bOVhGd4D}8rcg81Fo%a_CG^)My&{OfIIG6Jo6154rYndXYl~=jB zkQWxQC2Kk4f%Zg4=uwnZ5smBn+MIAuy=?x~=#k=r=ufAPxP4p>W((bE^RM!+LTRWx zh*1g;8+mPgnU*8x4_Ii1L0Uq$hjL^j1+HJJ{{;3Kr^elQzZF+rWJA2Xr&spa; z%i%w@ATLuwa@7$P_x`1u&31CE=l>pfMM*#ZL+rs;{Hv*WqD$fZn;oi+z-m*p9BmH=_?ZBq^V58&+-G$@ZR@c=~ZX zy9h|OpAK1ZoOif+B}u~QwL^g3Kv_}pn+mHG;deIAV}x(be%+|-?IxjL;Xk+MklLsC zev!1o7z(~;5kDT620R%+X*@b%#B7~@B6GI7i8)ra-ohM zk*Nb7URa(QC0JlzoR@EccA z&&`*%n+TWSYJ3E|IJ^~zl7+N+*CfZ%w5JKjn(R+|m_gYWdnEI1MB|zstQnk^T}dpP zPJgp?pFEl)Y!PUqU9ij#+IkM;2tS!<*oj&jo9p7xsGZ5*Ec&KQ{Qwv;ycSV#KxJSS>$CS~9t}*@;fQiH?f{}n6OKz8x|7?Cc(w2K zZrN2@7@9t#bRL50NH!7)R*ip9ho-VqFf%?ez%ndCMhQ0#X)$vK0;>nyNlxNN<2$Ao#jC z#>nmXkb`?=@Ttzy1Epd^PViOPnJ24sm{ZTu%*l^Ork71hm9}3B^Cu~L zaRlS--_^Jry!w29WWnp+;4|H;w$0{_UAh4U0iox`4cmpDu;z(G3v4`{|Kpf_-i#P; zU#@q95%TQTy@ zV`pE*$E#x3QudLJaP~UrbQEAd&G3J(gMY}r^y+~gZ1~*7Q@$n}et5*MD(opn6M>ax zo&Cei5(Os>)%=K7tnhYpz6i^hWd;seQ3#5p>r2|1nWz|eV}mp$bXw(YYm8(nPQUZ^ zcFbsgPGtL|Vt)kJUD-(O%b**OJ$dFtR(Rn}lm3vvfl`|BuWmVt1R=Dnmp`aWAg7`D z!>Ge&T$GpX$tm;fB}m%H@gqGxFc7E&d!R0mjoP+suJPhR7 z5U48y(#|8z=;I8L?mQH=R_2D@)v*%)?9}`2^dFJi3Oc^8Y>je4+B9W)7QfAm;NQ@N5w_MEY#V`w6HejKjMQkj!ihinvy+*|GCP<2YQ z-~Jit1TBMi^oIJQ(4@CCk#e%N-le;qGaOpz*CD6NWZCQnelbz+)!n4}`xeafY!_l8 z7>8+^VH>yma+9@VWpsx4V!i9`cqpXT4QC@s_wXTcl+3HVhGdSlkdMX3cJ?chJ#D`i zcO185vdYSD^H9AKs^L#D88)9fZ#B7>ue4j6>N)dxRloEDRb^if-slsKpUy$E;mW&u zbTI>8$G z7cH=fh(wp+n}l>5M+l?@--5>RUkUg5KlKdq_Q2JdIg{+Jv;#@!o=QTAD@_rLS@l{E zgF@CCjxP?|bz#~#Eqgv#>PJpPOGjHZRnEAkU#tFPKj*7Mo_}X|UACk&b_$iSCu`>t z-EY#lMUb{|fORf1PIvuU!IT6^(>zGn#vZ06s|zF2&r;E~0-bwF-c4ujvUYd7xiR5R zC(hcnVa9FLvEeWQS0;+foW44O_!Kd28m9osgdV$qtvCy zr#jkTXEg7MPbm*De)L_ib4`@{Movs(<(uVe^XA2t&9`GhPb^i!lqmB1?a7auL~2N} znaLiA&6BlX;$Nn^hYW~StsChwhvssV3_}6i$8Te7HCv*qn{E!a9^a4s-mT~FVG`=; zPjIdYR=Jj>f*o-Z_66z&N&}}IFpKBA-M#*4xp(KSm`w1kOW4WQY6Hz77XJ}fvd=X9 zWstgWU>V`mf@)B?gC@@h3};(NoZ0Rs{-M?Y=RfZvm9ZeE<^z=uelyoY%V<(5O-yi2^>F<~ zJ;Nch>l+i3&)nikr*3|eDxpY#W=^$P;g2=q8&*^<=@H}P+;K@7%2G3)j4BQwb-&TXl17;S_W=!#Z4`1 z*s(LSD4Uc0`WE>a5LB}m0L_3{SL#J5$FTggD^OiKOO~v6sVm(PxkAS<1gM~`^f%K_ z3EaKHQq3vlQgn}8&)bK;nI>mk=a6yWYMP&gdf-npWEb(J>rHZelufhX{benZW_SRO zaPvvzu6&c@!CukUqRyPo_NJTi!R`sHVjur8)rrZB{v7TicNB#ET5uaA&@CasutXWT z7TDQ@H8pc*k0TEoq9-i6oT&Z$HrJCQUbVc-=WqHV+=EPqk{mi{@8@Tr^uT5OzF$4= z`~LsMbddrH1m*H3u_Lm972U)SllRSSf=Q5BLuh(AznLBfMj7`h@t0Al2nCA)Vq#bN zDO0XzE(_lAZ@gJW;*oCuE{E_R4DB|+$h1K>>7niAgu&Hn!|i(5Ea~qVD$8b)7%p~2TM0270Q}nTtgd-v&JN(F2D2>yHVVFu)1cU@55}uK^ z>PSWXQ%#3|h;jeBc^xpO|7-L5<(a&AKw9|K1VOXKN$Z-|LAXtR!qP* z@Bfu{{r|m*KL5`NP52AwX(EAg83I!4U}GR?I#byqB&RV1J4eAHRO@?oK86M89cca1 zr#YolvX^+fudD3Rv0(K#fsF>NOXWN?cgh6gIGkQi^UJ&1HqwDPVY>EOM{MBPB&=Dn zvC-g6B{Eqk)^qUZre#OtIz<(`^Bt&UMFsRAh_cDEtMXTFCE8n^A<+}ByIuYwKheR_ z91WRy&E(f{Rs=dC!Lv!Aac(k>an0Z<=XY1^XRuLLLZ!|U+X(qC<9@40iYdw&N7=4c zyB(gJv*ZhvIUQeYB%Zg=`S;`MZ?*ORM}FVyZ3n6AZR{ADXdI)2Iq4fR4Q;Nswjv)| z8BfYV`^+r+xyTjS#(kCUzhY5ZTYBkig0|8Y5Pa&Q@l&K`pkos=6{*vN0~Aj!QgY}s zw91OAezH@=a8kMxPBB%?;J{jfmS^mzpSwkWqvCK7VC)bKSu^7VJ+;iJ>g}@v4CS`# zlS;L`<+yathud-s9tu1EZ3vU;A@ASx}&d59C z(&C)FaNy=ZITKpaYyT~{U~thP?sb7w6iw?p3Qab@K2#@2Qf`|aWSeSr#;HGiA7&nK z-|2Ft`|jFB?hH}+ZlAMTXQ(RZrc)sOM2|_Cgcy?K8h4jU4q2d{^n; zU+`Cco;W;6^Z&CK{4Zws`KNxlPfC_W6Y(yN}nQ6#~&VMYv{#k(i+b>8jo+5*woj5qtOXCS?F7=H=}}gkRMA91urWGPx>Xnm`pXFL`Az8SiAmGn;lu1AcHFPky)zIBFQ&wq!rCx7x=#0 zRZ-7Tzv@Zkj*=RRs{4A+HsZy2BUcM|{PiE@^qP?r#t^c2w*@}oIioQW9CX1~O^ciy zE*s(Q8o<9P^Q7s3iG-neu))y-x5rElXu92g4{0Y*BvgPMN0x87BCt#tOhNe{&nbTx z)nRtEKq;o{+2Nf&=BFmR2`9dQyJ^fB?6|W$W7mdbqq&o0!XwrBi85SmR;P!!y2}Q) zQb*TiWO?at#U%9AqJIh>m)ZlUPH;N92`H4DgmFwQ!Oqd&DV?Rn&lpW!0>Y|_ZjL)r zBTj}wpC|M9*H5Q$i-#xf1!rPPZFz9CJ9(h3((y95Y^ zk9PZtXD=wc6Pbn#;>XYowneIV(6ILdJPAX4O8O9$Klun+FnfEa_e<4nir~C+L<^3TJjn-%`Dlc@F39{2^Hp@s8ei zF4km(+OPh9aQEi%P{wWFu#$ujWsj*Sl~DG5TCFi66fw!ZlkCfcBL2}UC$*+?NeWI<^+hun7hEy3WRvn4u5GDqOd72mJ{KI;@p(c%=6JZLxpD&Wb%kg8QMGZ^ z(~+B0QGX6A*?r~IE0+C77n{KAKbLk^gt)o0?nBE%~TWc7=_P9R_G))$pn_$*A3Fd?dEixL>{G^eDc3lLVB8&DDf>8 zD0`)8oO#0q`r2SCWif;Rh-+UxWXm0^bv7`z#M4iDDbLw5^xmBL=Rg;F zq6G7`vLM7 z;Pu&L{cK1c4Ebk?L0)-K!`2%QgZ8O&!*8w9$e!8nHM3sk7BgM7kZ(12nS*uw`tq#s zT<%vURVLcb5ZDz-UgP?`H`53Rp+M~wA!U!6^wyetrz`F&JvR#n;0648N?%wu^&m)c z7E`97(G0j%;kGumce4)nHn?^>yWTNTrUFHrJ2wW88z;JgAoX>~gQz zP`L*gO?x2osp;Oe_L}s78mvL|S?^9l8EK3Hi18O15 zP%VKzto1peO*)6ML$(QdSaZe1jG4q=JW%mgH~nDewW;|%bXX`0M8)^xqGps5iDfa2 z6GNdEGw?$fWdOKBNLfd2<5<*V9n(~M@6rVJk3i8a8g&9r_5{Fqe%POo+@3L7?-@nl zG+OkELLDl*H$=N;C(+)L*C&3?XYpC#jHS%J7gUPpKK@%k3Ki%^;Z9Au5VPpY4IvMg41w$TS2!Kl1 z)(ZW-0*Ygv6h@eSlFeJ4!`>g_J!lx>r=FG^^vnI#!K!54vDV@X^Ulm0+eGXi`6=zd zZPRf)z=A20_rECnWNziM89xZGAN;Z)1k=4q-6|7DLh9;UBi2?V82NRebGIL&c_(&fC+1q0T3Cnwo}JSELnw%r;Nd zY&}(zO?`zoa~d7xM$iXOj1zF79S7SEj`~`UU58Jm2_;{n2^zB! zEtaw1fAT~9$ucEg-0iC|j6G09?#`!7YemNaKk2;n7|wI7%x~5%X^y`_PoSYwNE%-y zm`kAXxy_`GHjuIAbus3HN-~u*eP$+{R=U#Lw~6L=2QGZMeItWypZ$3USPaM}yjf`? zQg0Y77#2lXB3Q6~hWD15>lMfaPePT8dbeIC3ajSbN}inx-Ji@O-uWSU??OZPmUW93 z2Y64CjIrR_Wq^lbxd53FMYXmFSp8we;xOiR9`PBOjoxk(k!YWR8qeD|#n9|W6ZSH} ztJ!yC8639Y3}y=8Qxo6XkJUN{A+CMjq`T=4FQ2ok9BF?yGD`3fIs8ja>7pu3Ngiow zF&je@tpv){cPKIR1Yu=Hnlw`&jK+gta5+OI;AhFvKR-Z3i^-BV#s9cWdt{FkW$=Z$BGN13E)l?|@Z~mX*3{@eafEhO0?j>up1mI*b~1gF0Gq z^cC7UiU3;ka)TY~zVIAW%W({TI9o7$3bS7!I}RwQTKkZDTeMC@cy5Sr81VRgaO3|f zmo6D{fHdQM<@oV2>@2Rx?8V;nWw6h&CNYMQoQ(z!l1U2FOf=nr8(_FidUgn2;dSbI z%9FX;6Ds3xSaN(KdQ$pOx&TF5`$v0?Gk_`uaS%{6@!*0-c9bdf{z|Tt_g|9lSa!&* zpnWBKTAmgc;#2*;m_CK`Go(>1&vwJI6GGvBc-ce&i+c9Otv1V{#%u4Ml%guX_Rdua zDE%zHUhauYWG_~do0r-m5^CGa*uuY{Dw`SzCAK-=X#(V>%W1oQ(M(oW>biPsM4P#L zEM`Yjs<_@hR6&jp0VQlQn!#31egp`@y5f!xc*t;cy;~rcWf!`cp5E8t#-yHSo7#Ky zgr~{!!&wY)n{G%*(}`da=NHlokIX(8DmxVZWk($;+m9U+kv-sJAqaa7Z!st1#h|t7}`-DkfMx%@uYnV^?n` z)7w{^NbVD1qUdLcJZly|wst^rP-+Lbq$m$C`kh%zJB;0;k{MBji^&D8znS7{KRSz@ zs7$`H6>>Y@OJ>aZ zB#mzyze?kcVH_}}sw`r7s;yp@9dgs+;d~qDWN=BTusAjC;;l2s?>#!od@lOt{r$78 z*>f;ZZTZb4xk+hb^y~)-eSt{aCJZ_Sh!^DvT{M2g*5hh&K#ZSI?f^~J&NCDHWb?LI z2!hk4NB^2|p{k>b?U4i81i@c?*2B!ptGFu+ZaI2xxHy!AfGo5G$O3I1oB>bnrHyPB zuW>VVE9Bo(!6$x{RsA;8JQFSosJLJ?l2M8W-i;_CVwz;4?I*~t;ljG+*S_@3j?9SX z{5(qQDifqf&|jkPgVSTI_=4z?V-$8F_i(k${SIBgJh5QEQQsFg!O6y|F&Gm`DE4F{+7^}HA(d4Z4p@z?f!egFMi-?r^j z(J}T4^{3UlImi~-Bn<(AYy|vBwHNo2dF_-K#p#ivp1Z6^Z%}}+->=4e(SS2EgI6`8 zhV8{R=}%EWao!`*6zt&OqIW~(p=g3sc1>XA@{lubW5P3Q?VD4?J9ls4o4T{dnDzih z^ZI|N5dAAkTjrf;U{&A`z5>9g1X`z|v$Y+FJ)w#~nF+xfDA`(8;Ig%)c8yYPmf~g80yoV#9YYzOAYWe17IJft zXwLae8FT@vRXxwj<+7E!%8ZP7B43i(CH0H|m}&PLZUVY(x{{l;hidNX5|mHVgxV-# zYd6*=teh>A%EY-)i8sD!nNGjW*54Jum(fJ*sLr9DneuLAD|0d__mJ39d%#wven-}< zYW`subkN<6$_s{9UzUwg83)s$a)LqKDd;sNq&bVX(p}*x6#Q+@vc78@ktzMms^*fn z8f{W)LwxHlcy_?Q+oK;o#x1qiBjOlRu1}xNB6wZ9Nhe@T`H0 zN6Wz07SY53dN!imF`=w8vYe3orP^6dKpJWLvBq@iS9{SX&2AyZk-rKO7L zahss61Znv)JOUWA7e_dEHRLyG`)i$}->00EtYd+^v zPR_Ju^;|m;ke<-?9_TF@FP0tl0%H*53Cw=fd{HPIEK^b~KucT{E4&tjq$$g`WbdBM z<_1TEcmN>B0N9~>$xe*80^rPPV&f>vgFTC>YyC8Sr!A0Q#Q-|%7WJlMp_i+r=yhqB zvEZ|n9(|-v6OgRz*~w`CsREW=h1UmP$!-Utcc5{TUZ|P#+ zJLJi)u08xJd^NoCUt_W@nP{TGH(?ID1!Sh>_?-N;m7_i}(SN+RPrTg8Un@WMR1vTX zKI(0-<5Z$rxCr#zMk^;U-i8<&_1Xvd&!Z2zSnxbHbfj<{T$4H|Xs5|a(Nbrpy#shL zM^4kNZ}j3&uoLLX>G%;vZ8$Y&uTFT_I*Pg1ZRl<*&mhMOmY2vPU{SF)uX51f~0_{@$l746>}@txi8i1FX%VOU`lA|4Tq zaq)UoKNqRtk~_APB}!o_#!XsIXp4F`KkR+#Uq5%Y?Wr3C>@xBjc&2AHu7S<-Exp7m zRQ$oRW>AlnM$u?i1Ef@CPn01XA4C$~A0R956@c=V$wGhT6$kQ1oUDm7o z)%@S4)wiE~V(?na?$@0&qFmyR;;L<@HH)c^lpW- zPDnxAWlL?014yu!o`pgv;tV!7auz}$^eVaLCBZ|$Kv*f4Kfm}2OPijjzo&ygYw9@Z zA}r^*1@HlF_h}#md|L>zLSPa#(==5Gb__*2fX^8etCq0oq^-iwRnJC=!N$S_qU;0fF5#|#NcKb4}zfQSzXCi zrZns*2P+AyHNq0^08sAU9&U4!^_DAji%BNsLb zxF3-Wc2U6XXh)phr6A}qzTn$%DxI4GLN|RK8Ff0Y07CxkzYe+B(O;71F4audjW3K+ zR=VzJzpa((4Go|gL6TcQ<1e?5km!l~7W5&9s`=dMYh#1@&3h^_U%O5KZIEaRaG@F40nC3;~Gvo_l2kLq|ccQ~Ru3Mi)VE>&L-m0Ho*Dx&Bad zsn@DKTNv(YTYI(ID~iFLecX=&8V&Pbk*`iA#;70rLOgd1t-lk{imFAmPDiTIyCEO) zYCGmosFfdYQ26Q5iN1g!rStN2^6%#a4L|XXPA~>h)fS!H{LW8tfs)qbZ|N8IEClJepE$;?Q;Z!KAQL=3 zl5GY^O4GE&7~ec(ss_6JO0FYte)QmzWl+*Nxre$WUQrKe5j#>!(Gpn(XpPN=TQDczq4UKPG=EQ}b6Bj-S|(b*2vE zX7>&5cYC&HB?V z?~rF4hiQ6p&RgU?orHoA(xPv~9gFxzQ_2-oV`Nn9Y$%_KgTk1->!<&X4q_4hbD zYv~{0a;qZ);*FGx0?NsOxt-ZOjn1`iVq$J!-^Cq5NGv~kLsPT3OA0A6zo=P>~0t7SW^ z2pfC-vyQUAnoxF><~r>Q=P##s)vV45VLK4?jn4-z(eh{<70%NeLibAoiW=BwitxwXL#b zq=%L-)<3Tu>RLAAxe2>#sBTTq3|9=jnDvcl4$UY^djGcA)+(n*risTv8cpqv(Nh=8S=psD>ue47|#G6xKap4kynQKbs zwkQHCkFK_gl%Nrp8hbhDE8gh&IKI}ycH=32w&>OenKK|| z=t@TQ@#Su!m-sQQ?e9l(X#!sxG#Mtpnbdc)YVV|XVb>V@pb<>Nn`sy=J-IQ6ArpFs zo`LM8j79+K7ild&4>YgKKrz&gQNZiJ$XsQn|Rd*_)3>H_v~W zJatiV{^l1-9nHh_`Q4qMU#kkFhP8%pJ>{SGyDqfNeB78ZvDrR5RNA|;>96wx&flaC z0qW?)tyMm^8nx@5mphK4>s@~QWYO)s9V>p6xi64Fy9bq1jmy&UoSY0%$Oyj&NO{1X z-0j~b_786}LSofMO3Oz99i z?OTsJ1f?xFK2<+`P@MBoqLF;Hj##x_7pAtWH9H229hHMhv1TJx5Up!y<3%2(E__ex zlhkyLq&y4dJg}`Q(zxH>>V_pMB0*4Wl^2qY~O~cq4&LVLDl}O&w8Wb=8$5Nb`OE78CUAgMEUh)Ui;8o#Mu|Bd8BT=`==ai5t?u{}*n` zoO`)Zl18LN)a%t9df533&s|)hhm#r3dMg+XkSP^@ci_b zjeQJ7pkcb)h3Cdu_K03yn}U;0S9mB+is3JXxR0@(Q3wmV(PkfFaf8B)kBMqJn^#Og zaLlU>8S+HuHJlDa`4dq=^ zkMAv@n;om$Mq0F8^Vw5!WuK={eX_0(mHqnd!v!vlYCGZh6_js1?S`-`ObFw!a0Gb{ zBiJY+a&V%#nDxmy;|Bh7+4qUA#2gbJn^dwX&^dSNS~{f#8_D&!d`N5Po%QkBrpkK_ zHQk48D_HN?hhQ`G@EDxIjCE6vQYxXJg{GI74|A*i>>TrDex~U8Nwd#G~ z=REW0zac+-dpyzYpXs%d`MD`z2j*@9pMdK_UNdEY3*Q)WPwSP9twP6(34IDn`=ztx z73bc0kwZH7;VImkV50INt@}r&kOfU_{+T7M#jY2D0akxN8txtU>+2s2D`k@_H#GBP~W|dZDtex z^&_Q=Y28L7gvk8_R$YS4z)!O-OdTNieF1BfO*wXBes);K&fd0u>U&bV%)tcUJtN3b zTW86rR=SVh(yvAeI{wpisoNmEVm_4Gl_v5tp0yxtztj(@IF%2l1n6TSdcTF*fAfi?tUyBITB2Q6dPm6pj>wB@^p@$<`>MDP` zlqrTTIfr_Hyxrw}c%kuVINx}5|7nx(pOOg7N$vE4bI;4xoiyF+^B8Bek%S~nu-lrJ z<&Z*u>=gf?zuWLoCW15c+&|Dv%C&x=#SdSdsXe4)2D|81g23exrrSjI-cYbD zpD%+k`||2_&+2UUDVZFRr*ituEikcMiMWNPV_>^cYdRQeFf#g^$(Ssb!Z`>~VbtZ| z2L#?+N{6p-0qtbyLkYKgCXPkK^>SuFHo0C}#)1kz(A| z?)&A<3DjM~VG=!G&}fhoR=NwxF^*ffgp8Q+krxY^stw z-G83`6>**S;Z5y;&9L>~j{P?OP%)uMuQh7iBN|%Du{g3;IuR<)I zLh)M$(7*?%mL#0sj@Szkuhl+(>BfB|&`1aqKp%B(K9(hC!AD4kfg~f5%i|iUN!Svy zIb&UVvXLy1kpJ;hwzI_94*4p3vEHg+^XK;`KKJAB6s>Ot$XNBzpM?h3#&qLed@wMevTY{Z^6M@x{90qb1^d_{1ZLE4>fd+8!cGf(2R- z15z3kq) z!LeJ<)5P1CYNKj>_F;2OAN#1hpUM-zQC6#0OhN_A^dK*n(cSp3&G8xoTQH@|?KuknS6<-WiKl7#oe9teG86ThYHc(7qDS~ z!&8{}7YS+#4)OMyf}Kzzy6y5WE!cFe=QgzqcL zwf?!(d6St`o+IfOz9=8NgC)u)!trZJTz`A5iPGzQnmBpm96rxKnB{B75&u(eh4NW* z%;R4AcocpaC1?|v&fq{2m!#4iW7=>^@dda@-wLInnNP=p!`BE`AnfcUQ~0;g{UAXb zY0?1XREJQl9gr7!s8g8jsnC$FK?%&5-J7f1@-~6^e*d|YtYEucHu@7VW|_^xn9i;g zhz^&6_RkW$xS)5FdAg;>I=*&ts!47^&w2TEf0~;{-Xz{nGx>muE@HgE;Cr|Qr(H20 z1v)tS3622uLm?tu6Z@Y#eypBirK-jnso9sWI5Tg#{tNKuKY~I3Kl>Sz42RU2EgFY0 z_!<;X&L@|HYT+qwt#JEQ_lmz8|Kc;R(JevqMUMVLX~D?>*)(2X0(TNa%^9Tl7Hz8s z7qiZO_pG`F1OqPRk1O_#rfW8we@r4?ywggqKYsVX71pm89o}%a2%mPqc?WNcrIzF2 zF}UpxS-!D(EujHLAZ(bK5GiF1zh0TVviPh2nl6#$1(nH}c~=dXfJAj~FZu_XxIdH1 zXmKGvS+U(mYjUqSbnb;%gKfN4W3UCuEEIrQ_JiJ4i%R34e!&=P`)iemd7#~$Wb4Ot}Y}vsMsg#`tCF0 zzL{)hyMR1Ea{#wK#SocSdx(eui8Rw+S2|V`(s0nI(zwgZ^?Oesz+? zs~o}^T<`9*nypCxwY0XTts{B#A?k9K1yQmYAW5w7h{Sz|XqO=uib!*<34Q0mTn+YI zj^-Nm&2w~~1l3|bX8BLA#gU!`$G^$#2I;0w+tl%qR0FL<)fB|Y(>?33iaY0g<&sw7 zx*1q~rd^phsZPNBv^s7Dplt}mm~1DUUjum-@Jd6DeOaSlb$P8VDNR-(pl3UtcDeYK zXs$0TRgVew6hrporU}Rrbe20P<5wXbvQB3}IM=WO{emAta1m#vvo&+FtIxwenNN1l zt%n&I?3El(9$!2tGUo*;jWgKYsOF3z0H%}OA1Gx5eIg=60#B{=8-J!KrZxEc3EEXY z9yCcl^OQff>AT0U9ACFL*QFB}NsMzDI$VNYsHFzg5|ratwI&H(!mcTcxJN|?E}bj2 zy0_Qp$M-`|KD8FTKg!Mk-nSnKouXw|{$^S(ETIKcq!ZE@r=U;qhMcDW7kN(e4lk3p z4$jGhmLQ0ah-forUC#g0hD9Agk$0zYL`IS_k(F_z7EUumxuw$fd}rN04p!0#rKXG` z#bE0rv$lsH8!l5!3~7gP($ouGEu$yiS;a49RQ0-?%+%5N+pr2LbsaQF!MN8Ahrf(_ zodx4wnbL0a?Ehm%?SD3KBn6at!Io!y~+@$!07N0Oz{@t%)h-VL8I>j)?>SsR($1%}V=;dIqL+yc@3_c_9 zUhO2OmRh6h&*rmEKXmmMT8{M<>wbG_aY-G8_=?8qFgTOw6(}bm8Q=$^ZKgB^N$c_8 zRZMpjv6a(%L-Pmv8^zZNn6kyw%n&lh9HLOU+@@{@AO*Cz7oYWLT}v@0(_6pD>A)I1 zCSc*5A(D|OJO);Scqnc6xNGYXh2GjG6l;{PVfpfqQIOm7rhD;HaeW_=U!pcBxHD8{o6P9%QLf0? zY_bUo=hx^&jDHboNa5)4aLF&eeXGr7tLvKXvBZ0^X3B?n0)-^`=svD+@+H)dxtpJp z35c<|nV#b(L^yVOHA2_FJy2h!U?YI^9*mf8HtZgb|kbn0s>^$OR*cfsmuZ*Er-wrDlG&LrmD$<@A9ERDQMF-QtejMe9 z!j}~TzbHaa7HH9u8)50{1Sk@3=Ii1Di_r~e$Z_Y7L{tC=ra^;&p_F>4gK z5jl)~nA_GNdUUubO&m)z^dNGYHgB1XDV2CRkCsnpW952zKe(@4Oj705NZV;_objy+ z>G=2F{{MXgneQb5F0i1*RV^UgR9N8ReO^K@=>F3)O!jN-T&$9V4>g>&{&f7EX#(Ky z8KB|1B_f4T2LCc>-xX+ly(mXp>< z8V7`N3i8xD@7$zRlL<3OPoBKk0*H&4M(b|B-tBP9x1q~i{A}7g5}O1Ecg+}pcVtu zaP}G#nF%1d%=9m3$7XXk9w!#_U4B+toqxrDt9kQ+dST#8dfr)`5+;<;pB5mE&xyDS z^t{{6vDq99aW|ay%YzZK-#y<1`EVo zTAsnf8Qe3}j1g8CH`V<1xRSqOlz362H=Y&sBBED;%b>Gy<=GV#NRq(;l9m10PzcD> zki4Mpk|{AvBGFX6l!`w`RVxC|e zxs#fBpx7Dp&TT|-Sf2|(wUjsUDg6dce=JR>joRS z$rdv#iR)cl<$hs=l6zw?&&`J?KWEs|^ewF_qdM(a-wV<|&|he&F95n@f#pd&EY{Mn zu_n_C-Kc3x;0Ou2rI6O`=b3WgRg&^4dV%OLb{!ZmYmuAjB;ZtTg8itd7$2j_RitVB zW)jgWa(($CBs5N|DC|8mh+?8ZY-ryny9IiWkp;4GioLhI6hPl7^B_Z_Chq1`;(LW> z<5s+C4jKz5O@}p3>xhf*ek{Xx%~(V=1`#s6^2l1L1d_hN-S|KpUv+!uvGE$VgU5*K zRwDHzm3cP+k&C`T*=9tSCBPt=VHA|f#F#saj@3}NBXV;s3L6!=urM-;tn{1$+~hoy zW`&OA=5j6e=!(}V(o}$Xy@#m3nJ!~HL8##hry0V?MOs>b;l7#zenA!-fHoYyD3o0j z(_97tp9~m!(%Yit6tq|O`NRL z5r8$daeX>3etG!Ri0DZdO>!-%Rd!`)LgaKTqoUbYLYn z_$hOZ8nz!vMxY_3Av~OR*lw%32KtOQbR+N=ez>(zYtHYlMknQuRHxiw(a97Stuooa z*4Vz2QJ4C;coi-J5w#%~Jjt|O>-dNQ9T0kX*nb8j`U|5RZl}df`X!Ru&lbIxNcLt4 z2T*@)IDY*}D4bwu&<3wWM7jILhnNS#XU zaSU}WSyW5+bWL`rUV#8oL@|tg^q#*}Aj+^}Fzt}``HCy-eG{*$9z{(@pjog$Q_l;h zzSTW4er-7Xc&Ia!6BM?VsATPBGAe9r+VfBBn9 zv{8WI6)VPE4J6|<1d0~wZ6cJ)_GP9{F5$i$yIOP5VRCl4&7<`d?={r%>;rkuAkDQ+ z&A9F7X7Zu&Q0UJVzKy?7pPir=$%ZorHV_;u$=P?v7Ll~WIg?AfsjG493-V!EQ~Vk2 z{uR%>SIoFBh)odB$w|$^A5E{BX~_R(vb93ekAhmm%D;f@ho@uz1&$vj3#(vlQKIL= zUBS>Bid!InW+8TFNP+(t30JFpqqQ&VhlQkOIdak_I%f>ByIMK)VB9K16po0HF7bGC z>8Ls7MD$g&qi2gAG96`-g8oz=xLt0z0rqnA7(wXMRZ8LqB7MG17Xz)uF$UfreV?^N`XMRLLWvK>Ckxu>CburZ zg8D|{4#DvyZ>?&+NIy`LrKf`ukpC-E?mx%>5KJa^A1oD&L zTbM?g&bX;1VZv0@QU)x$!JGsM5th zQ7X*RkhJMaPXG@3eD#hZ3OXqeC;ijWVX*1sqIr2_@R^~F?z*i>sc_Y@Zt(7z8K!O& z5k`xpB;%#@(k6;=un?5?ZU<5sJ*Bz7ncgLeJ%l6Q|0m22Qgd)f3Pmympi9uT+V=zM zrU9Q>Dg00dwj>|8Sj^!o;Ggv`ah(#`Oef$F)RdFiT1E zrC#rZmX&awALQ8NWwZyScA5Uu%EiBA(g^zt$nYDguN34?z**H<{te&z_kg;8K8gu! zPyZ4J{AUOq@Nz_=BeJ)_njDTYEyMg(#rXdL#Qa~u&i|{w$9$LoZx@xCQEsDqbqN0& z_E%GmS#}(jb@Gika^bi?{Hcm)A4(iXz6FD15giEV47{W7UcUjh8o?fVrm8ORLE`>S z{|L|H=B<6+7A!yS%11S`iWct*1A|CzbPK?vAaTh~mvi~aY}Fi6R)g*6F@&n}gwHijZ;!oqe#3_O+lO4LHjxq1_nRp!^Kl&0 z%YXl5U#UUL5PG%Idvxfp)92h+G$ik~6;uuZ^I;LDNG6nBt_)Qr52u^QbvHb~%1Ezi z9x(UKWaLPZB^d`FL*XLVp$BK=(2s{nWn>}bt}3lnxV>n~bA zZ6&-f6Dg~QKS8(qA1adyz#?bmDvI zaPn2;#rB&IjQ36Blws>rUex6QdM*e{HD`Y_HT7M&#$@<+A7OtxW>~>^e_A|&Zq*k2 z$Raqr@cpgH%PqvrsTtw}+b_oo_X*PhBsn5cWvS%4YubEVm~5p7}kdZg!?`OhQ{n0^{4wwRpbE zDjJ%sOe2OK%!|z~&IYg@;dyiJ+t)xQCL`y)q)-E3W1vYHxlLoCM=0+9?pf`Y{X|UD zt_FTE@Rl@*kiF~NyyHWxbDYqWTCZfVgO|tBKmmJ&Q%7(?YxY>bF$Q$dHTjNGRi0!vIKDF=|K(!42o-+f|Z?a#CHm(QG-VdWMLVNhG4?~Vsw@U9 zLMq}an_c;rJ6`;JMGqN3esIWw{ko;9U1a1NZ>Y3ecG6*c0(#|inCMo(@xEihzCL)x z8zWc%jZs)TeBFdm=&Hb98BquPMAb>xbh~KPc6D>G=wO{@6i~BhM~nr3`-UY1EccQd z2sPRFrkf~SQJyvR&yYyz2wr8({`cPniyidLH~HorU&-nSi6PxgL_aw$Hz5pyq>jGO zAmp=#>-LU;b*v1uxdeYDt*uRY$l6rzlqkMd?E6eA-nzRKiNI#=jx*SR-)A9G zVwPp~w=C}ZRQE<@ieO})XX82V>EMUwl{ar-11xD4v4OH8sf=C5VD`E+ z7D`80qrcxzI@U&n2ax+~Q99UlxbOR-U7JF$l7*V>G~W(C7eC?Ng9GR7Qw1Gv>*6C1 zs21~4oWB2kKMnBb1Ic27i-bdxN{geTiWzg^sfVISNl>D=1jkom_G0j_>O<2Q7btQ| zVlpYes>wC6@qL!yQPkU+f*uel2ie)g0v-$)f(WJ=QhGZrvCWt<%k>_&+rqsa@I%dg zO|SNhODH+z!j0{BBbEU9)+s2D%J(^FR)J&J6*LtOGw+c zP@%*=Oz`I(b2M{boo#KA3h=JcT&T%+yvwnJP5?Z^D zyyrMNA7uQE_V){(UPE1g3ux^Pv>-;ub(JlY_xiC-vTVTX8)|F^k}rMJai8NOO_PoK zp>x=FFX$vP7G&v6H20r)A=Xs;K2Atg(4)x8;PCmTPGv44_eu64H< z@t!+C^bPVg-F7MYxwT5 z*q7of_oNI(kgkP~rFe(KWD`?w_txKcg+uIvQ$}-hFKD}^XDxmvgz;m5Px4DL3JV~n zMNsr*1p-Y8$j)E;Q; zZD-xu8#MLomf}jsuudoqoUqfH(PxK&)QfRM78k5U!X`SepNq!{lIf~5B z*hNq|Q7yel7P!lACZTaizN@Cbwgq|gj)$&?h7rG%$o9(dPpppc>2U}<|2cJ8E%lW$ z|GJKkmm1rNG^K;dXM_$Oz(=ZnSweoD?%;l;B?9&5C}k52PhoF9qIW$*h45@zP}^XZ z%WzvXbf&Ds3lc}f5r?YdOMD4n8Y<}g`tr(2W#NKoIc@vsZwA`xIrxVcYWa4Myxv^0 zGV$%U(^c=;hcB4iEGpGwa1StIHvF#nz$(i~eE3xy20s-;T;1d5 z-*k+Oc~a8Rkw3wi?WiqkHvCgA>k{8Mc5ZGc`X6TII3MsHH{X+5AE}~Xx;3O^QVN7;`lTb}epK3O%4>NW z=!t}2Nub2Q;!1WR$+~EzlO?wdtTZ*dc>>cdJ_$>e*`Dn>q;)TgOXQVB9PKPJ9_OFq z<45STYTbS|VW0o`m7$1L6pe+fY!{JY^Z20-Z)c9VN+;hDTjSt8xYx)Adz$j5V5$2x zee^d(I%p95W>V_!qwLgYz&Z%FFU5I=17KNgaa#$%G4`?4Q;|U-NNH+py+6s z`K8P%q&HdD;7Y4TMhrYAxQ88io0n-VOb?(TFu$4XfL~OT1%$b9;akuZqH^@+Y6Rm{ zsxv2w}#+v|`G{Q-NzI>KK<0qvQn1O)?YgdV1HL}7fGcYG3ORC!5FEFmec znA_V2*@sSQWPVFC`ffj@ap@gyaa1nxo%*B6TKdok>Yypg9t9Q@VUEUA+$C;FJ~>)U z;lNi9MU_HlcYo!l8(kW8Q&RnL)BmVlB$qETgCYFI{B4%F3LqLjKh4)(p-iUCwiUQz?Jw$X-1ri#f>= z*fC(eptI)ygE87cs|6DS=WLR6hLaPZp-XimSyUscU-jx!$>EiPCp$H3dWSueu6m_@ zlaGo#0CTiZCl?d8A2HM*vHlJ*R>0yE>M&DsDbLE<>dJ7=u)F7V&w)C<97k>3Vvo0x zkgm$HxcPrilFEQl;VWU~7I7H-TR7RUEEdKZdiZ@H%7CJr0I$>nGeZ3e{5)YVZ&o&@ zd=0#pcIgFag0sBl)_awG&o)_rbk01Z9Z7aBBb}rwGH|d1;o@#hO3?9uw}H%^^~z5+ z51dm>G%+YFSzgVlOFdyRG+=r8*+=7VMYj?@9!1aB$Nfv?qdz$u^Irsm{~2q9`sab* zUHU&KDu2X^{{z-2l^%{=10mF(&gLNSltOsipd4qIIH4`|(%{r% zL1~k#8in@J@0jor-g{aEVK+m$fDh4Ue4VZgh|L*o6d)_ll*X1=emPY;tR2hQ@vAt& z_HCN+st`V`Rcik4aU1{t{Q9ScDc~04?ow-T6`qa^75{*&!(o+inxEUh${BIgA0AG@ z7Aof8(b3@oki*gL84TyV7R)Lt!@_WgP{o_2>Lslm%+-{Nx%S^Cp~OeK1RTpP%&#+; zs#UuP=qZbXZ>;)Vgbl6!1@d?LGz8jpAmgR$DymT# zO~5ZjfmO%?V}`H5e=`;CFF>OHP4t`Z=z5n2bFcUZpU(W(KW1)n>HXo`o%i#* zpV#m8+^_2oS{&v$j_>mMewO#={a)?HSsg`Jov0~w2$#xrVoHHqY`oNgA*Ux7X@Ba| z&UJSN6yKgAw-KR_S1_&Vr**YWAQN2wnK%xA?nQc*^fb=ixWBYx6PpTPyEoe-C@A_=wjE_%~SEw{e9IcwKdI! z>M1AYcPyb?OxsBB=6g61etFhQ$W}|B`z)Nn-%{5ie*I>giQ$`%tq$^1(fltQHEXB1 zKY6p?JE362+6x;~*(;J!O9o5B>|Tmh1pao4=^mwgE!knyK=a5AHK7M9Frb7Yn7}!6 zofcN>@@#2c?Np>-&j#-_2mC>wgWUDafsbfkCNgAS(ao*+|A<&}5XoR=4SOMQE!&O5h3qfxz%?Ij;SC3H=7>Bfn_ zc9n`g_9DnkDu|Oq_=^gwlj+Th)ZR?!usB7>2$xHG$<=kOu=BY`NDNKss#n~K?kGMW zEpBkVCzJ_N)cz4bT@AxSIB@0sV%-nxBK}%b7UEi59t~1 zu+Tq86P#6H9PnDCAB9`8@Yj{$-bt8acbgMWStwoJj@i(Q4yT! zrLtSI-j{2`7z!!yTT;0!tvq{ER7T=-Y+=!r^n0OJK&Gc>tJapoLR_4!$<$LIic8N0 zk937q;1(hwUL7^hI`4E?qj|r;g%Toj|zHflNp})s!icLBG%rx(Li2 z)82p8U3s*;x|FuW{J^cYvZ+?GRqzxpOpv9tozXCH+9Rw$#)ii^+2NLQEe) zwCmPsP{N-&_f9x&`__e<8&e*m2>S9H8sGSu=%OGY5>L4T{ubCas)V7icNW#&Y$51hlD*F+y3-MqmG&Tc66VK=nrge)a+~O3Vn^0oR1B`@~eC) zAPP)#2VDp(ZqGn@#}yqMdp3UJUZab^$vwAj*-YjCIoeMeIG;AYg7qP)KEhMR(77!U z{7fETA%@R)WHT!~C2<%Wd_XYmDq;>_dCxNF|~l76;kqQ*FmiIl&A#|! z<{{(#8Dewar*@p$q}`j?fS(wvXh5-)Qa)oj@vcGIE-lSk@TOf8 z^RCp>5*uH0Z3C@upeR`c#2tJ4_2Pa3eV?s}w3o$@@QXV#+Y3Uk2poPGUcPeUD9?LC z>9_2i$}-#Tj^lzN96GsU-)!H0)x}cNM*JHN-UAbNJyEVji>Uf<`04O|P+Fb+g{62R zP~52NTNhaL2XMB^jwETgl?uR>n*b%y=YlIUO#LmzPLDJlT<><_loH=v+1@^iH)eG1 zw6GWD$svatbBirlBHZx|Hm_8K$C6>=WlF&YUH=>@eV*c|(rmPQWq(MzoN}LIzb5|u zy;qNA^dk<(ZDC{GfGRh-4H_GP+a4pd9K17R*OyqOy10uLFlO+LN{}(ukGg9Pz(+FE z)W~@w*4uJ!n3mccSw_K?v0Y_fXu9QLw>{}aHeBx-G#!aaF%2GKZzF8=5v?-A2E72_1-61i^$nRH^DjBBx@gXCf>Fc_&@&08F&h0AT%e z96~R5_lr4nrbLa{U)y&{UuoYtfpI^KBB+6*qv8m>tdEEyUZeQgN##hU(xx<9@ec}# zrk~`R*h{?4V?NO%rq?bKDTnE&SsC~%3}K{QTL^wlo(xP5)f9ZEG+TT+qv;vno5BS@ zor6u1hMWC#_RbswTYVhaPzF-+ubQ7Er|RXqFOltkFWAjIXfJnL!Ef!=Ib+>PP{|EzbgQD z?5c5!(a+=MWoJ!erMv~+!uFTD^yUNi3Y$afk8Aibw^l+H;26oc<*a3)@1;y`#*xPT|tn}@*r{*(pg_y6+F*R#3 z_Y>BWZ{(MxT>4AK1`tOJ5QHc5YF*0t+T;pLiz7U;XQ!X2bdcRQ7>DeEszkd zKw!(0Nno*kLV6U*p9>TL^RIGsoWfQa{>fgBw<*Fj}-;- z(a>fu{d$XnjNm0wSi)%u+vImvqLD*NdfZ`^Tk;NWP>H_zTt`!Ep>m1~#TsM1fXENA zd8RXEZ~FRSi0t%WStHYpopG|pL(aM^x};&;YBh1&B9gURyaMHnz2IeDxn}wxKd^nt zMEOkXjLlI?oaD`-z%!^Xr%-Mvw;9D#s+8z&_a$DBB#TZGHc^+yiP?9|B($Go)Y%r7 zm47n!@wq8|Wz0qN;{BM7DEzuNGy(_MQ(F+OMaIcHYDIf+qTK;=`A#}1iq=5I}ra8sMZz2 zVO9o>Cr6CGMD7S3#vHb&@l;(v#hC=^^>ilF+E14|D4#F-e2K4XA?vm2$^3w*Ha`r> zi1{6u>O$xTZ_)t(Knwu**|u6@+sk8!v{@Bzrl*LGt3;EeKzJ4#=Yq;=HrOk7f1w)1 zG_Qj!*CvoaP76DZZi!+F$sreZGPHi7db-7s&=}IkKI8z2`~bc1T)B51sry7)x){q! z0*bt0BkEt_mU2hn53sE&p_+ zrVyf@o$pZ?QLFNKz%wPYqg}#E!dqZ#_j$jNYS}gJU!L zl$rA7!U^t{P2x}40W2F6H z0|Kp2rJ?}fmjgYBS}ZSKa)ej@qMi8G)-`AB<&+;_^S0Jm;`60=5fe6^M)qqr!$%WX zI9QD4Y07$~%?q~2echZin>TQaet!49YaQ2x25UEdRXlRzB3~ueCdXWXGqRI;5h$8N z*9Tn@o;{4aUV;>}FekUJwYk?)3C$gHh)%-IyApF_NdY%?3Mb|@WS6fgGTf;v!81&S zSC=R6JCu6dCnP#ar)3GVdTvCVND;jDO0dcg6D$btHf1Jv*9$UsOROL-92M6Fz{IkH zWh4pNkr<*NHQkzLzOY_4;r=@+O3P&GacK4AZ)xNkS=cpIBNXGe!uMDhB2WR~KYdKF zWIvbzlb+smpM?dBc`x*1tF`ue3*TGNt(>Y)Y!v)&!VXa&`=~yJD)7 zG)xo?i+0w2ijLzoR&PMKQiRh-dwFHXNk$m*3c> zH~2ggVkSOp%uc=j*zhx1^ulrUM_@rrF+D4WtOr0CXg(O?c8l6MN+m=~m;ICg3%Jtl=hT0Q!YG$2wEK4mS#zz>If8b2xxF zQd;lU_@@`4e#0OAb{UWM@1J#^fBmzFK>wl}y{e;M(ZT>We@f?F_wdr6@_Enw_jgSG zeqU=JhAslqF#?#I$-sN7(xJ)KS#Sm{A$>X@Y`oTr{Wk0||$nNH2QHd>O;s6b9m^ zR7BR8m52FBoPuC}Q10D)9Q{3*DTRO%4#ze49kLvS#OhuQ0hGR-`bNn} z1{s59>XmnwDrId^^Ej^~kyWzo(Aa~dZR}VDkPQ<}rATgD#)wXOwD14vxPK&6x8;%@ zD(cJkP41$shqs5R4)Zgv-l=^?!(2xO+m44D7RSe2^ywtRLG5%k@Z37-5cxETc?ktc z=bO`a0zuP0LftQrCpyx?lKOfsC!<&@>^U-m1y@NY;Q#p^VYF|U+R0@WG4I+*Fcf@kppCN4;qV_gns{R>?uOi`evCA zK<7RbQLaV@Yl~9xE8IU?+-+`zxE`BO_jdkFI)>MIOBJI z-lCRq`ePJ+(c-m|bl>hDp&Ksw{d_N|PMp{~GGuI+aMb4Z*vTL>$t$Lxi1UN-_hYYd z$#KXmFLciW4~fH!1;)jGUd)6DmyqWlIubVToV=QvL_ zN3=h;D0A#Ao0U_A^6LH}9$?eKGJC3jHP-U`a%M9Bw8#C37eSIG+->9BoK%BwaZ~c~ zSAz4Nl~P`Z4S;dj4K1-*#4_E$I97f^7w(LBp-N?1b;Rrzw$a_%dhZnq^qsx|uNVV* zg`?IK*OC!--CwAh@0|3Vx{x%9CW4)f1~mWB1)wo-n*=9dM&wETa!4owrogWiq8(vl zg`C6I19W`@sqnEvhm6PJQHALIT=d;NE$Y5x6Ztj;4m#^B^uf<3`{Bf^qt z_!DrVV95R>(l%DX)gShU+>AHhFmCA+7PyZne{ENj{UMh#9^ozqYa*oW5P8{YRX5%b znt4Atymq^5H~S#)i9javD30z9d;~wFgRl({Vi_xk2*H`Pq&p1Wse~h2=>aocPplfs zx+smv9B18@A0O1e>HpOF=S45UrWW`}HT@MFu}+p+d9>7i1QU{^LQ{xbo>mSK>$@wq zHn=!+_2k`R+gRDEoUz9benk6C#@h_7yP^RPAaV*K51O&GrqFpnC0Tcg#P##W(Q-Ll zR~vKXXf?mKsx<1Gl&7W)TT2?DinNIdjZ-r@5gQ)nl6^I&}9r* zUNv;Rp3!HiXEhogyqG<<^PU%bk^%Y!@Gj!3StqN}0zbM-bzS$r9u<_jT3(W4{k1oZA5~+iaI1VS>yg zMzmDS_tmsVlY7RL@Y8$xUxPmqQw3gi{SX!1Q};${S58udR>Iyx&UenWrcR+@H3;Fs z5}CWC^+K3Y-Ck&K^CMe@&nu!TWuea)cQ?pA=%6LWgKGN;!RePZKU}AHs%?*BS(3rSNY~q^tZ076FtI1q*P*$2K`MgD<8xf^TDJo`!qi!?Qf-& zyp&_)US-R3lWE%fX^jW5ALR>RD9TK>BT{8Q*W9rR@MV_kj;}~b(1rM#d}v}(%O!L- z@u}9Uzo2@EUr4Ze2Eqf4M2OXRKzXD}#_$K2RA+|1Lvt+Sd*;A-8Xq7chGm!m!B;cX0W@rLVe1Q*Niaj5?Jzw7AS=i|+A(EL)PrQSuFux<;`jS4=h&4$E z;QmoV`OmcY+6W`7GiI?xDrq^RV-=*C_hi9qij$v=cOac#w$X$JB3R_ndr=a!m{hBTUZe}*5fmYp-dP?`Dk zV&h)pI7@!R47dC7Od){W+?)wj9wXVmRHHl5=3c9;RAC>Pn}BD~&UD>>CfKWHq&WoP zmi)o~QM8_;dp;Hd5lsF{RfzUJ{N7KYRrdQzby5t93nRS6MEVA+JYQev5IHW>$@mQH zfhDUbokfDkNd!*Xw>KcttTJ?v{8_xFzjA)9pX(QDrESJ3Qvz`wjg*Nrk1P{q6erX- z6|cH2+-6~eUG>AOEmBuTQx|7`p>i@hpPtjjUs?LMc0+6;iF(f*q>8Os5d@jr5H~?| z)fEre@uWUnxjM%Wo}cx2^=8TS-fspcyf_X{Z6t(v5o@{#Jk-Lptf|9F<;idQn!H{2 zOiG=5?dephqr$AS#9!-#9OwJlM@(n=M^1d}n`IVbf|Pn!a$csNs1;K9XoESA8=_>z zT}jv8c8NN#(5DD3Sl?ZAy<2&W+LqmYYl^-L=A@ozBHIOMS4*|sktkyZ&6{;h?40Ou zy!vDC*#hCl{Y9(hE#^yz7{9Tg(UILbmus)c6ErOHry6TTHNw2+ zmBxZ@x81fqAEP(AcgkyfXiTWgtE<2;S|bB%QB2_?dj3c1T&A;1%M6WXbHUQ*(b(fy zYAiE&gBvn)Gy0R8VtaJUlD&hg^lZNCiD~)6yWMUb707t3-$iR7GSpq3H=H6K&_L#o-!{s=$l!O;UY!_y4&42{X}14WXN10 zW+v2iu7J5%KcFF1vNe;^`L3hHIKP;9CUfp5A+7poX6<*kDG~u43Kp^+A)r-Pl&aAF zZ+K5U@GdrjNXkDAs1|6@ZHnTnJ)CjqEt5I`Hf(7Oevb2>K@ZL0$Dces})2fmXO+_-SHuvyZPgar9F-H$h zOmN!$)vXsao1{%S1@o7EV*uwQP2F{$+r4Mr=J6(_!>63l8?*(nUfZV1JAlQbX$2h~1a<0?)1z7A z!i_VEtyd12z82?vTR)GUT^V&y9sw1t)KRBLZW>?Qr6sSz7l_!N!BZ~rLJe=O9#g09 z)ge|5Z-e#f>xZ^;fOsKz9gtLzgK3h#B-@}2;0;~Cq4A#$@GDMlTfxfN$ouW2F za+&sgbzyg5P9}a$;5FalU^Dky=HW({xXsRP7!x{(eE^44Kd!v7RZSq9C+bq4C94Ip zOisU--*Pszx3Y96M9>>n%m z+^rDgGs)llwMe;)5-P9m{fuvW)q@u=p3HQveqMgCe&YOzuYVX{l8AllimxChJVW{; zCd9n!US|9~Vb8i};O5E9z>X%fDlp6FcEvRoag6tO;l*jD>u=ORscW}T5H|lG_~&3& z|F6Lh{%3wRb~D(QHXzLWgcX3uQAxb5dL?PYUM=-WdklBAmL9foDQuQM_?YPItfA;F zG^cU$u7?N5-p4tOZ1h@DW*gj&2;PQikf)rNCq=nRYyYNuHYUalJyxfWf9t?;?iG~H z_ilG88WHrQIS@m)M~!$^q6LO;=NX3NXez%q!MWdkfo~G6PssZ)@#B!50D)S+9o@Q7 zbOOqYnl&bq`c3IRKv`uzxHyAOddR$jqbD8>y&H3A+ndLY$(8$D6zitHi3`eKOFs4Y zn5q8`GN5&)DMhh$rYTTc%F7&yVrdMT(^s)TE?G2eT`t)e>b*qMM_$goWnTkM-PZVAOsfi4j!~oRw&&f*Cl6Mp8Ykc&blgp$mJYJb1nytu1HfC*~g)!tV zC8RIk{&hrsG{X2u_!$(+#ZdE_J8_mB;mQOD{ugk@lj8skFqkRk6QomWc==*2e@nK>vI~3#ct*d3L#YeQTuqc#F9h z#WmAows~GX`9)LsMK}H5k+mmbsLm5iktpz9{*g%aT3uOMZx*zrT=cRPjv!SWs?|0n zEbARFfwPIb605DlJiO0thj9>Mpm}h_;bdi!eEV|5u7y$4PPfEo^ZVvrxy1CFNODG= zy8h+XH7>13#Q6^q)toPuMVUvTN~3b2Ui=1dpCF))X&sM~j(kEPN>8gEb1(MoaS)-O z+YohqYa$eY2&;#Si0Hxo~J&$C#@;i zry%6FQ>#fNN8WDf_rFjr>O+#oZJ7BVW5G0H=kM4s#Z?d*Jpve2 zT+|vj9u1tS(1~BDXxv&-ik~KtE(WV*BHxm86)J~=%eUjyx=XpqzGBsVPb>^>7U2?& zxs-k!%thrnMSL*e2$vFwoq7sLVE!Gp`0xJx7lM_)reXOb7YCHKb@YE%+SW-w%L!Jb z4VpP9#%fGvB&_G^{#J>57`*I%^7FHt%Zxv94*Z$3;{W$+u#wDf{aR)?DpOsGnzuo<6#CXunH-6cA(1173q_m9BiB}{ zu^}>>U-aJTGhxc>ddi$sDf_B0mNcXj#2G7Rle$5;f|E|uB@n>tNJC_R#Q*>;>ctkm zNd#S9oJ$p}yG*H_4|LkETK~2(_h!mBH|C>LhLH;0XWG@|D1{p%s%PsKH_DVGMbaKdAch#@}EQY1k*P86wX6;sP)_%lN z@Yv2cRr_b+`?bx@`b9V#^%LGm`F;dea-5Za1cG;CX3VJ|RW=@}M8R&g5840Pj(1MN zfqApu)1gH@(k)s?GcV9F94w7{*~&aH#*8-facko1NsG9TZwG|r3UUj5Lf*&+ZacLx z(vbZ@N0bFZD>b3|R9PPZDY?5|memPGNh5~Zz3J7MXVt0FjV`{;4!75&IRK)GIZPolO zl)PbFuL$LWEBg8Km*p>hSIEX}!;p)>vbZyp48R*LW-yVV)tm}n7}=D)FFs*DXg=+L z{e9+)u~v-;iqPURbLNL!WAvjNH#B;IPIviHqz;WHk&}@_mP9Ep_7R0@E#uRldYv+j zZ)s)8T+?uM@qk-(mB=l>si6u;D(*QQz^z7?aW=^^U=9 z*Y&!-4j+n0<#AzaK;0b2_SzxbX^azup`qOo1S#f0T1J>annL3K+?|;^85?H5#tgL- z3da~WX`kU1A14)ZYj1^Z?fdkpa}V1NJKCuVZ&k=K?C&ai%f1K>Mja4NjeB__+^({C zJsOLiIBFW<=`qWvruw$tgqnYTSFddT5WC@F|Hj3Q3=$mHb7vTzxB%ZFF>Ke^^zm-2Jh3BdN%0-*XS zJV<5w=Mma5AG?F@E}3%TJ>b_VKkvKA4z-wIg|3?1y0z^K_m)G4^(DfSgpYG3%m5Pf z`Th$C&kA%sqZWWH`$rw(`#5{YI-Hz{Za8rPG3Nvi#!gbnR-JBzZ0MFTwWS*8O^<^0 zmk!=Te-&W`DKQpb_V&M+c(L5rGuicD=l|~78zZ6=&X1U<#I+{bWH)E)MU}rlTc6Us9H5p2gX+T;;^tjP2*(i z(){Lnl|ke+1vibeytptX`6haVC-ckLW5u=kKiCYIxnNqTP-T%dIQRV%hOgpJ!*cj` z^BE;=Xh|Ko(O;w5wEzkX@tkbrj_qIfK?6_jefc6zoSh0qA!s1nw>NqAXqK0Kz7Mfa zZZz=Q^Ia$Vn?@r{x^(w$NwvM3cTMo|4}DD++=q2M4H?v3@-vuQoazojRbteY8veB5 z#+@a!Go&qX5~p<^jG6u98v{o<{WMPUjr6tUMZV&C1qU-y#oY^3Bvhmv*QR421R zpjYmmxT%~!8!_|kZ^41!k7Pu^m-QIP16qRTtYseW*4#rSjR2^h<;%l*2JZX{)t>Q% zd3pBV6*tDI_ZpgUNXc-?l1xeD7Ggk>GQ0z{F=cE~|{ zoB4FkqW5g}WqnPTgMo$N0H(>`1rJQWe=VU~iBcvovPK@d`qI2k zW`9R%)3f|%H(lDUw(K|>=Pl_`qf~6JAivx5tiU|N1;&ZvQ5T7vjV;JJX0PI6*A#D4;njS~J;0e#X2*~i=FOJkWbs1d)K;aqE0NVxN2~fb0&BBS=4;t7U2pN8X&#`%WoG= zfw@JaW+hpGux;oL(8kk9`$lV$KYYYfd(SO-?wxWRI(25+t4(%k1hem)z6>2g2UZBw z$yy`_yq=6GhpWtsO^Yd)&8bMH$8)k`8JRHKRsMgFU$U^~i~m9kdZMtRyu+!X*0w9d zUv9C~{>>glu?HO0~3zkhnpHtYus@CHVMfu~w$wia9+B@Rd*4W7%Fepi;aUnP-~I#YTIgwP!9Vxt|4&dF=3|0PnQS00okta9 z#ad~A(UhnqkpAI+qX@@;W2<=y{lQiPT_FBWx2;kS=(eeckx{?|9yR68BK*zBb5gKO zDK?O;-Us8rcS-mt6d>)N3zU3Uj3O|!T7ykBB+3)a|sB=&Dj~C?@cNB0{GE(%43Qx1{`IAm%u0Xu^ zS|hE_7Y|)1YS`)2oSaCDwWXcSXw_eYr~vguY&VVit+?|?6?R9-hp0;*le(@ya~!=b zFY~_Q9gCaz86vln!sBBI&DhNZp{YZTPJ!k7ULNUa8OZ%y^Axn;7VuD{G_!x0CcK!i|{Bq67@5pD5A^cUEO45USugHl9PPZjD z%b_C(F0jw>;3|U5hqhVzqa*!Zvo;lVCw8A>W=?}<#Ec6#;B3%MTd(F8lyoj@#A7MD z)JNFmkd0WSxCV>`>todm&<9v9ml+e)ponBll-gTZcfH&nqP9{(c%Zw*e44W+@UKq8 z4I&SH%-bO<4yrv`z71&wPKsFNo}2w|vYSa^M=pO{!4EcIWX5(d6~~R1Ab3a4>s`;m zXsmT)joJ!LVR?5Y-D=qwGcM%}U=3QhMQAg%HOX9}#jDwJ{N*py&K2~P%Hfgj7LRFJD8~7J%dNUqo9!b^j6lpOZ-ilXF85N*DSNEiED)&zp(q8jD>ML1F%iU zWw@KFQSq302-c#M@$lVkpOHI%yzWZSc*{r~=@f=MCw;>h)6-7Tej#4^(q=?EnWI8R z{Dc9FiNzn16MCP*>R{9V&SySjy@isBv_A4-= z-WP9>K_voWfZp_E@}TUtx}K4|5c8h9qH9Hgmv1+TT9*tRG{g^)qG@>hEANj?x;cKFTXU`r-?mKaqB$N>PiPA5T;>hR~Y=Y zkD+F`1y^F@@Xh1Jwdw9A67@oao(bo1D*s@~p(bsj$`c{yXJcVF!7oXQqh1VtiO)OD zl|R}mTc)k5`V1VtQhm_h%8?`pb1szuw0RnB3A5B4V*y;r8DUQmxO!KPt}vsZZwL zNhZ7!oCf>u|4yF%FB=&E#^0c+moNdtRAa#)Rc(3rUAFZ})sJ$usXvRYJ{5Pm2brXs z?viaRIeTc%TUyw2x6jJ9_)~(hAPROhYRkH=u;R>}UAy>L>q<_f>4kg&KekoqIJ#}V z0W9Gh(LcRKN)@W9bQ zb9%VEC;d|a6&ciC5<`&0SK_W|vmKO*@&#rf5byU%321O%^E2h*3)X36Vx7lgyt5VDC8;4!?d-0ZUy(>84p*2mvK~e;t-zwOvhGo3~pu>0> zdD_mvx9&JoF-BuC-tx=YeY-c5$G_?OX(rs))7RhISNrmD z<+jKp4e}Io)Xf+|de$EWR#6xnNSrxdXMBwj?qO=nnx2v6KF#7$O zUrUY_j()xzR2TzdNVY!7eW1ENNxM^hrT|xFQ)TwutFYEQM!WJ*^S$G9gfIJ#OS|Y> zKV@Tff{=tm6IfajId}MDGo!e!NJc5Zq{)V3FtzVN%e!ZS?})P-NDm+mxamCXKB^^G zBcU_^9P$7kfz<2n=;6X7F%kXkD`sa2DJ0M~st`5%8D!9Rd(H%qheOLnONtVPYqlDx zNM6Kf$G+Xp>uN8%Y!-R?L2_xD)U7LqD0<^xL+6m)5IKKne-yy4Qq4$xht{-8b=#K+s< z+N6r z8h63)DQRl#iU*s#gjTzh?0FH6#kYn-8|;g3*dc3t7{P2pdG|yMQ-a0NvO-!&R6Sx4 z)W<^`hDVHBwi-$bewOa2pBeK}$-jr`Z0RED{BOdHzdlI+qrd-ABKqGYB=g~AAe1I8 z4Gyy1Feq%@6J!}2X+!~vNJElm^c4IeR;~ZnhCNF zfR(}j1RgLc`0FuEi=4#mJq2G$R`dx*xT!|x_t#%2K9uJtF+{e}zM6Pdbf@QT0SM5f zMh#Ov#X`z?_s5gbeXb1sx+KwXr7~hfcIsk5w#t3MLOsmr!hwU&#WwqKYr6_gs%xqYN$ThG&Jb|E0JmV_7P}t5O<_0JnS;B z%6Yxzx|32jrdFv~-tQh~ulyVn0Sb^1imAr9fajulRwr+}k~q%?w;LrJcF3OJsRMr+=sKosQIVcraw_0aI{s9-Rn8K56rEs(Gq;J57xIvs707Me`F zx$3g6AY0P+YxAYeWNvgjL+kdRs`6f#Dgk0?4u3}ouPvw1tXQDLHR zHQbZu_+X*hp}h-VVizz>=~Zy`E^O~G{Zu;vunnHOTxvxNI5fRs&q1ZQKwc(!G?sC? zQI<1RU$n7%QO?d=^`$p|ZE2h3faRx{JvKLplI)Kg^|$*U;sU*9eWA!@3^@Ty^{}f~ z?pbR&LnYN3U??75GTnFgsHVDIr}2lMjEbQKG4zhAe=_%|*llILIF&;%J<2)VS&nDeH19e5()C-T3VB7Lnt`2|(AQ0D|>fa4J2tsIy#}(476=3tf4bTgj=^ z>d@-3p#t&7=(}ZiM;s0Ct23%Esu%Y#8(5zpaw=HrfJbpy2t(Np7mP++sEKf#>5{nZ zBxl_AVAko*vq)!nodHv%THyZb$0%$ z%vNukP(umKrSQ6%(eXMR)S4^81(pbhHVpFf8(ra-^st?usH7^^uAjR|qr7i<^)iBR zK9|%Px(yun1UmS{zcd0{Yd-t|sOKpFN(Syxs+=k8LnT#Hel&vG77eF^hn3q5+#4Ip{pxp2aHD-iDg5MG+f)TkenmJ3d2y8kkF%dvIcmM0+ z|5ru>29y(El|KE?6*QP&t@zs_1Ljz&$$Y!G##=RV#CZ7kCOhEeuo2P%;?}n*kN5By6vHaEJCVeLi--~ig1BFFUz$M;Fl?u?kQg3X)s-T&)e2V6#A<7vSl74Us{| zmnqBjVw+tA-f8p(f~KxHu2Nzy_kaDwPMjNU;QS~`9Bnz*q0l)$QCys09G3W8;!0X{ zk!DU!+znIt7{iuql+Joh-E7H3V6mpSpe*R6y|b^cr)=%UQsL+Fu?-cM&NawKR}g`X zB0o!}8W91qiF$E3;+&UVMe*IZHKiA!?nI%1x~gh}N6{}^!jC+3$&Gr(I!c@Z7%O0K zI1a#K;Cmx=IlDfHi4lB+zxREwHJoe~VOttYTl79Yb^;(_dDh%t2~Nn-^+65}2i*a) z*|<&lI+ZVpyVX__862_KeX#ewXb8!xmoB=z@(@FAz=TOel)B)s+nAi`A8qgl?7P+Y z%1LVMtKCbXo7M?t!KqLql(ZLg$xp7E7ZKn_{?@;J!YdOA%UCxo#$XAFV!to{S1$&h zNu?1)?y`aq?skTZSL#UTO0BP0O&lU|z_FduzB9;>*UtbHguG z%q*G65WEcPUZ>pH80X$Vl`-XeJD0*N)8HSJWy`ncuVHf2M_mF~^Y=f3&iTI^d2@fv zm@#;>=|(hbYr#7}nP_Xa)5<@XuGIPG0Yx5Rssr?vW@}H{W`r*Xo~2|S-t~YcM_CC;>$!YNF6nEWwAdl% zmK@yLO@M_9#q@#nC|4)LkWh_#dld$Ohtne^H>(4iK6T~85%f5}7aJU98wG2kCa}uU z0odX6v~)|H*=CC&%Sun&y|kS{w`-!mWW2qlDLjK)Fh+P-pg=^#A7*80Drb7tlRc6% zm>TeNiNvTG7~`HgeQE<#~_27L!_VR$KosZq#7AI%kXJh`lJ7PP7 z_g47nNck(S6@zKK3nU?c8x4R9Nr@FnsvUApVZ(wB!cH&020hcgTDGZiSw+!@-?3I%iSqekjLP$Km26eUvH{%!)t_Gp zjxqlJcmicqun#st;{f(S#QNK%0lDMvV{6hty_{6~@1=bnvtvuc0>N>7F%r zb2%pEZZ22mQ~NhwKBR%Bnxo-ecGZAncP!z?{ZO6WjX{RQh=WTI%l*L-EMS%GaMy)P}x^WbCGYCzIe26(@&b6{yN- z#Hr7Yo&pDo%;lDrfB3%j%&Sr!t9b4H%+dL`1Fb9_+IMz^Es(ieT121MX z07Ea<^aQ~BoAJK8d*wXGNmz(n2IXZEy4GzxF(hH<%c4G&*-c-)!t^y7?GK5qXR#!U^N9hU&;&z4FHO#aPH$2Rxv>ctGr7?x|NauPj@NVJ82?qb05n zPIg=4ma*^pLFX=mn|l4P!D!ZHU;(XpX`7;u-9 zMzeCYETVo3@qTB0tR9z9v9kG~devKy)Y!{dMEDJ0cI^PhcDQ|XYqlc|oNT4WDjnw! z{6bk}^dobdWNH(zjimiFW2x5<(gH2NnXl?XiP}v8_vS8#bWMsn0m~hPxdi&8nFm(GKfshT?JsHceFFlzWz#JrxBiKo<2^w*eKgTZwh73wh`kmv}Mi3#>P!? zjdOVNz50c+U`>Fv7=$#N4TImDF{T}+bk-IR8je_P8s|MFhnX}AB&*Y7&vq}yGbFr< zorIZux$X0b9=R0zAFV2)7;oDLjW43oF?(4yRi!SGvV|g8`#s8WQHxB$kWozyw|CuE zl30j&aH`{+E}@5T|F3-|(eHp=9KS=MRvA{tR5?4Qo5JQp(jD%&7ksP6`}B4yw6pA{ zuTHv0TzM9FapSY33K!f|GOU6l_rkHX!=pvBY~GHu0+|r{Aydmmze(wh0=`H4TP_cC zqUNic{Vkke*PHl3Y3!)Y6ns)(BHaDHE~ab}v74FQat`a4oc?d?O&F@Ig?Pu|OfYo5 zaIF(hiE32FuDlcBF@@jql3Ps(>db94DZ&BxBqid!s+sYus<;lP+}!Az`O*`b4<+X% z?Fj|@s8k{AM3DrLZJAu^fBWnntw~%Doedp;^1cN?)KIJxeoxo8K_80eqnst5M=gB0 zA%gJ_CLdrkys(iMbC(aa{X)e@w|4=4fhTrf0II5mUm|mc1pI}{-06#8>}Cje|7PsM zs86c+X*h%@ld%W39Xwrh3>%THdH&1Me$f}Sugx%52vgC1%SX0pfUvAo$BVwhUw{)C zSf+E^Tmio}#vj97Fso2~tSqAXq)JfcuEcv*Bhd!8$Bv7~J`K9y&sB$`XzJGM1)1*k zy`v(!GKgS9mR=|ZxgVVJl}%(}F05fv%7xeWf4MTy8Y^N7H&Hx8HJwJHguR+-iUYsp z6tG+L^>t^a@gIl2)rmkKg8?~r&&0{Mb0WesIaOienn~Q@5AlxZ7XkqYm zJ;+69HuHUcm}kXE3W?l|^-CzK24|${qf)E)Ix6{CVZ4p2Z@OX*N0$fn;?Edq}b-<`UVL zNh(E|N`=rQTZx(MA(S=iEK1pDEaPI9es7=8x$ob7-=EI+KHqb`=leM4d_VnRCa$^W zx~}*8{d&Ka=j-{*uC-oDi&H0UYdUuxmc6**1yEK+AXXtR{(GRc|6M*~ zqs~mAW`n8kj*VFu5@S-L=1?1h-A*7JM$_vOgYFiIT*-I3DKU_J$IIo&N)Z#!9N-h9 zL%qQUR?e$6)T;C(z$fufF$z4+ki`ym9!2wGx(jV=F?d^9g>nesK z?1T$)`^ooZhqhLf_lROFLo;%nV-yN!X5m?^_vZuaqb17XoRX|{hxtyQI)6$yd|kjF z5!}D6p1<8p|6T7TI4oWtmJ!rbPwCBK)xkxKVKbnA_wpyg9EOHfooWJubUYze!ac9) z=cUPJ+5@YGnl~!B^D9#M>JZSuQ#Jr?&M+nSdt!mnNC4(h&rpuz%rr^O`Vlgn2o;mM zT%N@lHVX8X?0=`(JEDQ!aVh^w!-!L&(7L4yzvsh=FGj7)r_%hKuKBDVeE8L3CF9uj z;dJd)XQVN!jwp%*Z|+)dYXu0G2s${w1`$n7LzfZb^rbv~t_-c}G3(Js1#P!A&pz59 zBE{RW`SPbSzd|fRw*U<*pg59b5W_K!KnWcd&#Q;F!)|o**#26Q)Ln~+VfQ{Y?+4!- z-<}@URoNQ;Qr8+Y2Evm2z${k5AaYuDntPuZx@!1{WZS6{N&u}*#8||$4LLNt;#AvE z(ksa$aVri@<>!oZZbDUuAkeKYji%m1iz8!jJAz&9&G+X@`#;1r2h`&Wa(K#0?_~-b z}Xl zBxWXi{%GRy`-i#C)+{}%WDx=aoWd^BZ7->QbN?3AU}Ak@UCP+{uq1{$Pgsik8gi>N z9BMlRPtpsH)_?J`)i;(Xt-QmVzJFErHDCQ|SrOfhfX4Z*6}Bl8Om~4O+?P%IYGoTj z)w}K&#*{PqRkj=G=ic<2Lei|@1RioV_f^T8F7KCy((d1kS9E7?+GU%0W3l6i?qs6y z)fNO~EkQ?@0xEMiDj5jQSE2d|Qu<*};M1;&jc(cR?#~-wq&Joo;-~+~aPLf=5D4H>+H1>(_^Qst>Hp2NKg16P+KdgBR)? z)w(JIhy!EgBe^-Ao1P8(ys03)y_OKy-}SK3)$nUNf?dQD1Vgu~m+8il=%*XJOv&yY z2*yySqlofh0tbUukFXrXrOKX}S>MY&m-F=L(TPWeyC!Gx9I;f^7N!74{3NTHfv(01 zFWzjVd(ya%L&dI)28!bMj(vO6(72({^0IW3y0t_tuN7USjwgGP6ZCwplQzLNw#=CL z66;#YO`-e0DA$iFIz`26eNa`nb6ED)D##XM7!l#E$QX!vi_G7DqFb`T0scHJct~Ec z+ev1)WB7w_w%wku2NU^%s2_i9q*-enK)yAU2{mZPiE{Kl>F;>dmmr6%(eoyyX4^-m z_;{~07e9g?JY)r15B`fuz*eC+ssst>Qwtr**|?mru~~SFeJ_WAE~6MnGu{$G4l0dM z3NX8N}<`?RL-%r0kof`IrZTN6;K?_`j9>8hST*8Qu9 z+`stADj*vOWPdEJm~A{NYU!rOodxc%{Eu)$1Q_j&KM^B8$WtJhGtl*yqyAPKi1ZuH z=RZ3t9Q_2rnz6#Tpm)5-fNzPK;m{)YFx){e53 zAw9`Z4Isf(0J)%T?9C7@==o2?%-P@tjwFa_bKwFoXND@{RuJ%@h|;z?)m)`G-~k$Nvb zXj`oWIig#j(iIK%^$2jxCv(;TP-&UA0D1ay4izNixA8z@-Dg`E4U~Gv(3~Vwj*&WZ zffwHZ{8RR{6*%r9f(uUg%QK*9>1b*S=q1{~y@_VL>wp&3$hv6yS_n^`vo=KjL{LKT zKM@MxEF$L1v~f=g84!=%2`z34M}w>Rx61I{6wIjANk9C5u|w(&*TyEGpG#xlDW|G1m{xfT7nv;XNR{pl$E>39C=#{U@= z{TXEbON9ETqx4_OQBr6?7dCJFUggs#MaN8FnP=z8F`3#xHJR?MeNvDT4B5y#(ClyTJvb>* zdx*7d_&lILdWEYeFhY>^$Y`rR4`@^9S{fy;FZ7&Zdg*PTK9ycLA9UKL^d^4l>E%f7 zSj;c-7wbXh{}>0iE|6ml8`{gRSXxfJSPG0wO#rNrz;4_JO39L4AF=ij>_ZoP!2c|G zXv@<(2D{Y~w6dJ%R(LnyZ`%y=P)uP0y=4>SMEi99ys9Bn|ASh=_A`&~hn?=cbAD<) zv>jD~=4{GlV{t8#1y{3!F~)HAbCZm(Zy1ixSh*KKH)p?tqK+_SzEuZ^b!?9uCII06 zaYF2RAE(?{Frn!q7m4NuKi8veL+>SOJid8FXDNCcuaDB=2cihudl0+9EJ3)EmxYtTq-?2_^`6pn0f^e<3c@{L{>P+KSl=+?U(bcB}kC= zdcG##7tUPJ=^Mxi!Ho?_ecAVZ%_AY8C}P2OgQ`BDUt=d6(gM@Sq6HNYUB%Lrr5d;qF)c{uo6dFg9+yhGVQ6b*A@OTMUYwz@8m;rHi?2S-^YL^%9xZ| zEI-G^$L(o$z2LZq|Jktb0jNGJ1yhN{s*L8-xA%#bzbH!&+;e&K+fT%?I~>sSTV+Y6 z-o{Em)D)DACVoB4oMZpc%CpLG$8GuS==zHM@%f?J95AtO`;P%G-hdB*l^O z246`5P`rp3j!Fq^&Qv*(j7%Cr77EJMPD$~^RFuVTvKRAz$Ne)n+BdmiBtEQ)?WbW>)*yWCnH!I#e37 zt1vK7UFoBc%K<|{E`Y#!VI;xlj*-26#DEl;W_NcvAxTR!qPly8xuxiH0iUS7{nghJ z$+~pByT`^Csg++MK6);EXYJue0L}pN3bL!Z0PNO45hc4|V;yx1UzzljfK+enCNDe` z@)M!|4BZ}XdnfLYgV0vBE48VM*Fk-48cb#f9+0LsM!Q-l(Mt(*O&3QE#5-dza*uHDkf|*4nsJdTH)bA{_3rV&xn1em zk<$vDn^W*i8T-3&!&Z};+2ie`tG}ooSdO6>&fh23%N5B0-r3cz8Lyjtb4{|Dl1ZE# zeioVqMj$d4?S$_;xY5QOrqLkbp*O3|F%oO_4H<^V3-SP&AxN!zb98 zvSOk_%^txSm})}tsND^lSG1zy>7;vpk;zx57Uy6Gt<|SO zXOpfz z{Hp$R><0iP=6?dHlR%1&8BLh2(*azTtQ z$?;GFlx*_SnPnWQWI%xn`4g z-%s*)7K_++P}L}Tqv4jCtJxeB96-ZFv;1}>8(?him$V#5n<<M+Jk3j-e_Hp%|I``7oS)-ebbjY((%IAd_@{7EMvXo zKE$nuFP;P3VXjKGa#B{zRn-AiNtY@zLX&6q>k%rYHWHuz(YgCoIm>VkR%fpPr&qwO z4;Jn?447KmSYAwr?y;3i#8{q^$3oA-OTBkxeRs8#*o9k_p2Uy+s{Zw7_3Y1Lj7GSD1DM~4$DBPKxcz2S7$@Pd+z@jK9q%(-*lseoeZGJ*`qUp-2{RGz zW+Br1y+;Jbrr~|#wCo8yW11%parU+}RI%};kPlRi0eop{mEJGB`?(n`O!1^m0dyvXCN$RBZVh7TjNd) z-ae1{SfeYg(1)f1R2Ab;8^AitK{Q8z3h<@33BXxANgY<&7xJs5Mz+ouQsci5iv^xO zN8{Pqi$xK>_oz|dd_Dtl&|MTppw48T&g358NUK*c&L%(J)(}nF(EAcE#77P+Yl~BR z;1o$1e0j}FYw_w?n+EmR1*{ZLBRH?lCe@&>AvVDCq0v{ryFPoZ&o7Cn+ABT27XY4=2kw2hp)f2; z$M*?Xmz>ceN)9wW{&7VgVotjWUT{5et>RIx!s`p+=u>EFCi;~r@N5Axyl8bKqpeE& zg=+Da+Vm*4iDa1L#Ptz}qhYpla^mOKE$sYzx;SJkL>cf|ya}{dTQ~#P0rXn%wdyeo>pqfpeR`R%P*uOpz3ncvc11c*Iy8vN zZi~s(>DF9t6o_>X>acZC(=!vh?bBs}aPBGqNDQ`$T~T@C>OTK8h0<<;rPFrG{OnS0 z3Q2bqU7S79Kt;>_2-WB11`K2~SgAGhXs78VU3@eO*2Xd(A@h}qsbFhgA`~ugWld{*|#R!ptM3Ejrh4t=eRTs6gpbyyio z)U@pN1M)WDNL=WZb{s%mSE-}_yZg+2Qe zN3*@_OvVYOW7#JND+TM9aW5)EN zPD7j5#|x+=ASbM6m|1>2)$?NZmA>i}{xJ|B>}>ga1gyYF5Jz@-ot^3cq>50{d_!^t zD!ayqnfksIqnh|R$GWG$QqprDhPk_HPvKXp1GV>`B*51pcb_-HRCT}#(DD!J^tB1 zqG!zPi?`O=y5%9yvd(r4;__M>2=~7+>dz0Z&Of`2f_ud{(&IGOEJcR({tSz2U9jGdE&?|2%U}A+E+eU7ax#mOg|RdaoIJ4q&DZqPCkBKbux;)K=QTL0z!auo56CQ58ORUU zqr^%^Bo|9$3W|06qcgASDO;K;&he9v&dwg|Sf554Qj$Kd+xD(Q{$(3O!~2g~{zm%>XK4;k;SC1%!>pA8Be zEMkyi+@5=|m}f?p{MUK|1Zc_TIPslZliw>NkVhBsytO;PGN@(ra5k`6P9=x<2#0`Aj^8n{sb+aN`SSS63cO)6Tm)yd^QKBIs<-=~>-b zA@M!_+YUZ&V}wb=xL_qsoBIvdhJC(F(>auty!{>>FjSvzeowQ~?%ZK~oN86A-(mH^ z3-9@R$ht&x7iG_-pdBrY-n()aF1MFodzs6^LG5T%!?}yJo#m(Rk_qXOfOPrT@NcZx zJ03arWN>WY!LV%jWy5D+ean<4i=>u5=k0TWykP0jMG$-<36GhFDLv&l3-?wpSILd(dmo?lK!uMr zZ&d;R!ke0|Y?QyTDFCFp>eQo1dcYo?4)sZ;PS@LB0((5lGa9oRZoHYHdZ7dT&J>rh zdE-iXqm|csLi1mne!13lj0?_9hXy*=Z?@OUZ!|PpcY%+QXc zeWcz=ndV*&$0^tEFXQ4?ckZ57u{inkWp4(s=x_}EcnNJ9Ol&0m7MreAJN{uVZ{rqe zPusJFif!C3!PGYl#C9NK{zZp%fUz*Kg{>T{Lko(2BIrcR5Rbnae|_6zm2`SggLP1& z(kMt#SMign_>i)R$ImFCm*5t!GL)=-faKx)H@-Cc?d;NAZtqbp$Ddt6?HPRrX){-*7f9ZLXfI+TQ0LA+thWkJ$ zK}Q1;VIRTK36eO|Pbr22t*-Agi1Lx+abT`khkf5AtJ8j8^B{>|;Cd8h?x5R6>Kw8Tj~u5v ztO+hUf6G8~Pg}2=417i-IV4f^0rTDYu+@3z*AM1@cIX?}9Q-UPQZYV6#B<3fCO8tA zasJLlwRX1ExD@X!0ef;rwnHT^qF~~CnJI;b^tS-*v81cN_n=DDaW2B+k2q@>GehGV z`e`<%&4nG4_3XSwoAt$qT7gRn>a2TkUH}6u zlbfS@LVGXDYcjo>pZ?esy3RSBPCp?clJ!6cw5M`2xk(T;^(3wt_)#X1M5ti<(+(OO z!<4BiFCdlVP>xjZ2zY2xZyT3>$i`>qzHNecthb157OPq;;;jK?v6WHGEpRycA`+jz z{|j8r(+^gv(E+8rt&T;LX z!WU;3_gb**?Ss=jp7w4kD*f^~x${KBMntB{A~{hvWdv@$2-QTVoMo4d{6wgr@}2h` zegCPLv=2ni&0j-@!6n#oWAx8}SKx?8TnUz<2_$PFg~u|tF+MKcPP5UIoy9n9e%q<0 zcG9Uu{P^WtIs1TeoAgGdu@|%CUVGL{26D29vHu91!e{{T?v0G9klEI|diXDwyeei_ zwyn%+dXv1*#w(?q^FbpqF=Fl9(M7R=znY^(P{Lb>XA40!P3ZGzxljpkhAf^48MZL2 z`iT%DOi(6Kh1@jD(#oF*tC2c#P%jJ0ckmf()h0XwRLHfc-u*lw(9Rr<<>vA>g&qU% zl6eCl(g>ngs)H8aUNR#*ERAhEVdLwtDDT5cUA)FAc*oKn?Ctwf#U=eqGw`n*E8c-$ z$i@D*q$K}!O#kqCFw-iYA)_?`G{OmvHAzk% z>+-f98FIK%0Brq^Z?@-eha0VQEpJlhX9lr=pBlN>P?Td!dfRO%0C(8JHjs)GudefR zNr5a#Zpdg9d^A|}*e-{#!af9DwrJ`n^*%N&^p;Na1P;Y9iwRWV)iO8O9kVHPA=?KC zbPD+7632kt8BnMPxs}!9yuM6v?=mbx-)6^<(@%u)yTS@-IjFOh6Cxi|sD(WQzCVQQ zjTCXv33`lZ~H2e)if%Xc8?7_W_*EA1*uk3ty zg@3@Isb$wwXR3z8*;-{wU&m(P`~RhUYr_!0Qocb5e?Be=ssgG7l31WxaEmAi*jt`- zlfsDv;L4_wXA;zVvw4j+QJ^vBvnTezKi8thBA}|zl$i*8GPHpBiRg?xMkFtjEB#$N z)onh&QN6L@Cqf70Ew5zrM)H0?;w16+hAaH&oduAD{9hh%n-6gQ{mmWy<<9=6yjrW{ zNismsuqPUCeRnpHzEDWtO;NjI_}N0^UzWf;Gik zc41}DP2QC`pIPD7kr}+?M?-R?r5S05+}rSmTA>G-+8t?|t!P$`1JLDhQtw!KbIMqhog->$ncdE05!9e@AdR-3>Lu*ShMp=J*80bk`l z?<1fUMWK2@3)~R0cr@gx^7@g;&_}T^sY-B~qQnQ`#2>*<*bnNH_Uv7u&fpW;y#C08 zUC%p1Rfc_5W4GthC?cbESus{|4)@dx6cxTFy)qKme2y#)!w@qN2}Dh&La@q0Du;r?}sQOUh4k`r^r_+}xF2!Oybi*2BpDbbz2xKa}Q|wzF;)#ct&U*ap{(P?ycsxdu`_KlH;I$9hL$-2%In< zZhk>AVS`#84ZFd;4BIC!%{-o>nPNZYArqPw7$g{3Z}N@y>EX*q4CpGFdV|97>xn^o z8EP+s51LIm>5(ZAIe_-F5T zmKNmM{n&K6Ykt0~@=nrij6q%P%o=)x)~fr18BvyeinkCe$e9qVp8XragP{8HZjvDH zV|iT*DMp*EE&{W9Kb{yT@l~_6;)Tegyd(J)HXKm_-kOuc5Uhf()15b;BQeNTVJjxK zSJE-+o%9E_=ECAd5v zW#yIXDq#JZH8z}i80Y5ddcjOF++R;J%83@Xq3u|Qx2iu^=lFG1Z*T7>qQ>4Eluspz zUY0n00I(_`)|LIeb>?dhW>cXEo=SZqoge^XYvZ;~o_{fF>9~4hf8>Zt;P9xUH&7ke zgLWm0HOr=_P0TWMEN^W-z3Kb=5QjQ}N2+{v*Y1e(&4P_VFNg(v_bd-C*rgal9w-jp zK2sPxsX$&E8L3F2{X|@c1T=L9>;nnZO6|_CiDEMc_bK3?UE3zkM*x2n^2pp!$X2_P zZ997RZCk3xrJD^8_#VDM{6H-6+5HE2Hc-D3?*Wh@9`XSYXgCW58i+u)p#*Gxn?MW# zh(V-(B78yLsOh}kAC4;KTiybfj{|BC|8m?BEj>2xH>Dy62q+ctqo;t|kh?k?3;mrS z+y5B?g}+Zr|KXh2?O-DNlN4JRKm%$Uv+Ycoj~WKlEUO5fd9mL1KM`{Gdb&?DOgXa5 zT7I2i^JMC6JBdV==V4YJG{S3aj`BnArX{&W0kY<9)U+ zIQ@Q5+QOKZ*}HpHs52vAFB{p_gBbojBZf0^3f`9h*V*r?Pf{I}#UQU1AE9e z+d5t%4A0hDaMWT5zA2wR2{397hslAmASePwoaY<`KOH$?l?|9D8E*zEs4Pp|~n0IGV5WgHXW-XpuPDM>@hg`UvH(397lIu!0` zH@ZB{yX0u#8eqd(Ln>JW^KbPuxNZLVwthA}^A2-A-8un4Ya~CpN?9$Ae=iyXD?*4Ae9_V(7kGFo|LgRa$qbuR?KBCkW7`In69Uj?d& z^=Q}tMGZ)chc2k|1&?||bT=ASG{N{vUR#Q<^x4EPop94iT&v9pfg_jw{BRhU8+Od6 z?aF)4jF)Q`J_u{~aWY=o1E|?ZpcadCU0&CmBjvCeJCL)LxjtjBg9mR{2P-9+zcnS3 zJn@z|Wk-(m>1}c?1JnirTOa7-ws!Pl9!u@%S%}F#*0U+BB5C1ik}da$IG@&kU~T`E zi0E(65t;^u_$Ii*+)-eOj$nK7#_*loV71u>OV3Q@GDg!E`-|r1J{6ay1sVDVCLcH; z85Kx%3*I*@Fn*MC9k>f!s|T`&HmYa(MlQAdTcULS86BQbJyZBG9RqLs zj#ujRA!@Ddq2GPHsnJj4Xq8FoQxU!k$M>2wye0PRvHKn$cIO3*gD5mbXaE#YWL=+AzZu*E-9`bd3omcxs>RcHrRo{IHSI# z2!bSF16SKaGxgzyp!OD#30MmZrNA__>~}ZqN@^yU;T5iInxj-ml>7n%%`ccXNAmL=a~W$eoE^`@;e^ z%c}}$tH+4o8hPRs+(-Tdx07{m-}@)*l-b019&lR-Jz-C9#2fL~;o)ypl$83u1f_X)Bbxc5dFUVZb4h6>&O zbtN&UUv+Gv?+MzqUXHo_bod9Guc5C{D*nXh`c_~$r{bFB6}yJU!)y9BRGBTYo08;;)h)`eNBnQLF3o^4OG{EeT`nYe81|2BN((uub&8S%KD4uzUoz2 zgy)(!-1=w3%Gpt*JQj^JKA+871MJ?)Y4{FXrvdCWyrh{!Ld6KVLRFTbhAsTp&n)U#(GRHP-px1mj@DQ45`kZNi0x)<*f~1l=0Rk zFtT`}(}>Xm!-CMqB?M6{-}dYR^UmVe0fO&tMt*bbY=d`vk0pCx*WlWgG%2r%G5T_J z^;iLHgbEuYY9L2yI0RAU36q^R1RX#{xff;48=gMtr4vJTfhm&u)!Wobt(Ia z*yTB!*r8kRsulK9?Gh&2+FF==xeA8guqg& zp+qiyuhzviawEeE2HvO5j7ZeI2?D;FhE~doee7C^%~p)rVpLkD?l*X~oU(>BTjCoqiLuzbN3H z3~9`N7`++%=_~lwM(DHBZyw^_eh>_3@-1->ODsCE4{~h4ABm$BRH&~H<2x)&Bp z*L)M#Q~c%i!MM#Rjhl})G)W(rBX$sBaF2Mh4_TZO)-?$xI(}uSItXDq8Ju>H1xMLT zX*I$rDeY?IFWWjBns>|G!ddFx6(nM5wM88d+2zG^Q`6u#mO#2W>R{8den7gU zwZIO^!wpv6hTdl@(0K>@l?uDJdhR<9O+AE1D)%4nEC@(|^jgP;#uPpTKNZSm63=m; zLeA>2^7LfTc@`8)cwIJ;ML+nqSF_PgmYK>qc&L-#Ipk|k0j?3txJayl63|7aQ2|hL zpG|_He5h^4B%!}gC!)ekJmfG*T}g7t+8S5-WHq|dOG5`!jyA1=b7K>|;~za`*S+C+ z5O%~;n@$8}Sv?ye@=P0bG#Xq4%`^)SZ<=?#j3DlZquBNwJ=j@$%u%`U?(n0s*XWD) zGHWh6&n}ZDuMz?F%Ymm9s>*#_42W!8z^}*vtyJ)+M*A^3sRApNS$_Y`n+=D=T1r12 zlqfwHh`LW1F%WnRRqaDlGq9yW6Gd#3U`fyEUM$Or0rK`EJ^7oN$4dlyiCVVBSyv*a zj`U7{HN5cNS*2v{z-m5yxjl|5*0;T*YjQ|4%U*EWh=sghL{Q%8lCK4e0}OI+2FslL zj7)vLRNl|o!w3VhJ>o;vrBDxgMquO>6us<5c)PRzPGRH;6&9Aa7DNjx-C-y2vzpOT zH*!mf=~jEz{Ze-*_C?Mu-YEW5BB*dEzw>r{)7VISIjOq!Rq2s)$-3tgy$>ZFe1Si( z3U~0At3zwC)jQM4Z)awQl#W`nbEVW=TkiXBZ$cHXx|iQ-00jr&{KP}mdo)jkWe4?)=M z6zVlOrUFIB#H!NQICZLqnr$`pl)vl!^4RMgS0BrtdtlEuD^`*b*?CpTcP>g|ksl<4 zL2C|J9ES)j2oSM0`|xag#)2m1uMVpkQ>Cs?87kO$uuvi|_0i{*;wHV;XqWaqE=?S4 z5EXh~Uvz&3?VdM(YIpelbt=kOk(@H~hkg>=5>$x7Vks zbq_}Rn+2~a`1xBs?0M^6CUyianr-VS=NF6$7wuef8Hx5XaD@i0Pml$)xT z0*t)36epiJb08^OG`d;252H|kv;F1h{ARmCDPYv!Gu0BMlm%7#fR+Oz;@!CMDM zxX-b%>p$GGYkZdA=_H!#aYK#LP_j{PS~|y=`vRiIpo-l%V)rkVV54mIa)RKKu6CG-I2=~Q!xBk5 z4Xp2%M#T1zE31}6qF)T>_!4E5vtEnpJ<_5*i)6^s9|J+ zq_?}jszNPK<%WmN{dZB9R#FtvfnQpi*58x^2B#AP4c)EkV}gz1uA#N#u8^s>I3Is79K?wy3VLppjkWFPX7V<2 zKsGZ14@Vd%Q86`xre+Mz4MBoT@ZG@z&GF#Is^G}$Bcj|-(v^Ah)4a7{M_q{m^z~xR zCsP~b6+2OMw|WaBzW{pJQPt-24SRa)p{|#Hvte{$-FlTDWLT+!Ao-kovtlbnP7^5z zJJIvPir9X~7(Ws{O21S*u)pf)a7$hL$!f2Ci}%a@QTvxe1^qB~7;Ha0mEyxzffZ;_ z98R7bLrb+RXUZ}f{L>%5eY>Il@zi5O+i-i)nUuE~sUJ|8ZnDPskKbDo9`+n6j-SK6 zN-+B~E&y-sDOffWLSsCX5&6K4p^Q|LN1>erW`ntr^9tttIlo?u>J zd0BhQ#|u+O!bumLZH1yP=U)*Jc+5Rc6rWoWzZ}H<(iI$^hPNptlD!C^P*Z*FCt|%f z4IRUiVxw6QXDfk`XdzDU7-SJkulB2LuOG0RY^79iuf7-fBEBqe#W)FE3tsz>1ib30 z1FnfD543y?H^ouS#BYI)EYqrgpZ0V{o%2yo!1aAKRTC7E`N&M}9G*U$bAazMwS6J4?s6)_C`x z{E-81TxAY?ohRNv`(T0W)d>oc*KMd$1X_CJIj9~((Ha(JLT2*P$VxIn`?3sSx7LJr z-RFlk%H*9y$EW;rxOfhg8$klLy2?D%h;0j>Xk&!~sTjx@Hr46-i6|o$o8Ob?37u*6 zu6R}UT1V&LDldi5{6RhZJ787q+oU~yA`lh6zKoF$3>l8{p|KbB_juwCl)UX)RUF;E z&&*|o_5%}{T|mY;xtLF>0eL-h1NSLuCA(*5~c|Lilt2~ z{Qo&WHnT!}W=yQ#8xd~3?Q#M1JlZGw@&rFUmc zN6Znzfw|xbaZVL>Mn59$#y3cIPn<*8C7`!G&6Hd$J3Ce7^X8#$+i-R*0oI9O^}ta< zilyYDW%B5?`FL^@_@20|q9lWG-lt0{bBO}+w&k8_Qf8PILz^YyTZOMoeVK#D=e7@j zo&O0;xyt(ZGxt~IG;WLXSUl~$w^a8%<{nq%is#&O3U9qIH%)a) z;U*k2?EHA+9#iJAZP+g$b?Z+|0=`$oZd^CE2sJ4~ZzkLzzotw~(+Ps3hFdDJYsPUZ z?;_YIGc3&GRy}Q>CLP{TVQ8=IguO?&6Jq12Q0MWcFIrCNy9)8`w#5f?Z`5?S-_Gja zAzKIItCEcA-zP`uwiRf$eyDag=b+l!Gx}C9`n59g7b*unPVaz>Q(M5(I35mq44+ij+?5TT&{asZISY*3lWx#^k;Qyx z-2r)EW6*0jVvKGSvSoXQ(v76@*1kt?N<~eYB|6FPmObwMADEZ)XL~HUb~LISqT?hG@LV3#jdl_E2Z#vMaY1 z$1mbuPAnyocT`h*rksdDd2Fzeu-1VAgLe=)S$?cYkU#RIqq$lGJ>P$21h9{=ugN!X z+jyU#S6ajv^hJy?jO%E~+})vNfvUGNjJtB8YSJxpWM%TcE%)yS^=h7RPP^>pC85Ay zWuP$925UL-Ed3aG9%-J!)gS8l5q6a_QNUJ)1z6i*xu>Bzu+t-8c{3ymr_2jrtfWi6OM3xxIk@Wj5lJlR(#K))VsG#15cl_JQIglafEpJU+o}4eii(s1jH}7zyBz7 zw+xy2F}--4+<<0>Lu2UYpj^3}i~C3F?`3u6{{`~qS7@9+fA_m=!T-(Y@HB&>1@F~!vFHC%lVso^Vd)#vA@@b|4@|q zN2Y8nkkC0W3M6!N2}ls@Y|;6N*w!;=a2Nqra128a+nc~T4um_p!%Pe=Kry5Z?G+l^ zIG68P&*$gUOEp$1-Vt^hEKW@vR+1(j`Zr8om45_!{9obCCHDQZg6{wDzw1Y`2Dni; zX)u?JajPz(kbtK_hHquGPi3~V+y<&Rb5a5bvoZm{0b?$HebZJCM(L1d62~dfWFt2r#?ciV^ zIRXWuq~&>UX;3iua6r(Yvh(;e$9);DS1a^to~8+JOUk zX;VXOTU6;-X?IAhuQr+Xpz-(EH{+TprJ%Cb??*GpP9jOb z4W`Vr7&X#KgWK63OH!rxV8r+oH-sDQX?pQq#5ZC+ZXfsxdx-i;71e-$0gton%gY$7 z!Y!T|c)qcdlN~Sb%^Z%ZLCpmkJh^>u<_mH|cnO@xn5I)E*MiMFn){px75Y?ofMu)} zU%mcdeeki>BfGEU8dQYW`SFK+8zRbFZq8f}2&ctuXww`qG!H4q@TrZR2vujB|JXr2 z>$zeJeQ@27{X_Y$bA!HKI&GI45{q#cH<;C4)aBlTwU}*HgkqcU0{xRzv_vpe?O$nytBb|doTFg~N zb>~G#N$npeZ=Gy4Zu^#_^6|tDV%<9xRG%16P=I~f+h`b_NEWL&XtHp@)iXGV?=E_m z_T3zN-u;@5=xSyDF)-iSII=;^{k(OMb{3Vq-ZX&mo%+ta#9w!N3#CFtqfj_(n@LL>#W{1?lY0x zR?!bj<0Y=ARhEK$t!TuUYDaPcB-qAkq8(WoC zFF1ztb*A33{aOUb#&3lj{U`XzzxI;;?;ZC`j|A)%06o$QwY&s8<2_&#v4i>l=(qgw zCViNIecETEQ=dMAnGAAhal{{7@r{!jZoF&w?@J{g(*?mihkx1r1f ze8jT%1aJ=^mvI@%J)+r!;2p>T8_>XV>T{b?4TU9E3flYgutRQtCmP3*=IjA9<*Br3 z_S$~vM;CEgqY5>%?Z;2V{5K>o!4A>+i~Hhlg1n$F*);OxD8mk97$LEW{hsvo!VJm8 zH~qd&>Wr3^51npazM`x9RkRM$2XQeP*3_Z*yq7!3c7&yZDdHTJii(h98RxqvPwK1b znzcFH>7OHxE+a~X4b^b1hKBH3x_uI=K2w;9iVjdQF0~C1T)Sl_?&&$+${z8iQ&dKn z3VVS0y_zT#da}?SD;6AN%v@h_wO{g?lU%!62vskAh5`hLG|+C4BsMJ13f{taIW}C8 zM9VnPGQV{Xp*|cPW2eFn1x>0acrBirMC+NTji=DFIYG9M^|R;k$jhCe=lvI-DjuAGOFRN0@1 z3mh5P>3LCryS|otK7>+77a*WbP!XCVc5OI&GBS^gr}fkzCE>(GsdSa?@k3hZTIaC5 z#z4dqHbguyCztHXa2!u|eUVzCUEC1^MxZI@u`ykM z8|{zb>KY$FH5vfugj~!76D(n{%qXngw$SLY04^O&j+wP!w!PfJiGl>6q6SVHNMAu; zs?PsJJOeO}xGWIxZtvl}$(|ACyYTNcsw@7r&yhDn)Onx9!)f8r#EVhNl6$wx{L&wP zsmwp~3wsNs0{@M1;(sL{6zm+r$v_}WJk$?tBmy89aaj&V{s7$uKv_ZF+Wi2kX2DGd zPY1^SL>y<8a7i{y0Wg0b{!wG=U)?D9f787Jur)m}w7=oja(LO;o=Ipkmf?x#WMipr z+y-E#QJv#U+&{+ZqNxY@NE2~o+G+ho|H-sweD$W=;z?gSV4!P1*G`@%B#dMsubdgQK-`#aT(fdun)cG zy1$R4U43F{+LikAoto89{Ltu{yJDF~tk-?1SuJZ*^!Wg)g}@Ov=Lz+KHoVufmP`SV zKQ@PAdGaUP8)z+;+$RG11HMj}CHH$i;9H2ho_t_UL+WAzl@JH;EjpYH_~EYVQN5U2 zOay6vp^H@Dl?Lt11?9DU+spnx_TD@Y%D3$spCU_^3E7uXlu8ImMTQnjl6G0AQrSX6 z#x|EIdnSaUEXfjSk~LxM+7%+}EJ#^rEaPI9-c#TEd7tO`*7v@@_jAAZ@Ao|Kd;d`} zoilS?=XIXPc^sePb9|0l{(fr`6S%Tl28^*f>_)3}&PU=i&qj3bbiGp}h;sNTki3iB z9dg%pc*>$gL7-_uw+STdT24k3A#f`>O(a@?QS6r3kY%th%JgeV$^dauj z=Zg5*mi2dMu+lHvS}~v{mGn&-L`@rT&ERIa6N1z_Gt^U!^JQ&5zM6=9`^H-$u*7V~ z&W7%hyh&TI0H5PNqe>8!Rb@2!jHXE$k}?UqWzJRDc=s&}(69@|5pH8YGZ3^f@hre*H=sm{D6&U`j#9q%)D4Ag zNV7F1ojP|oV6KjL{{8_-AGn2RGOQu;xk-sW3it#MT;qD)y$_?hT-r--ow^u$X%Yw9TpPl9Ka3#x;m-7}Ln#@F-7)>2!HGtZZZ)gc5E0<2n~ zvIUl$ICCSXncm+Ahf!N%sPYfmw4&%KZb*s!J%9eGRM z>{i!^2^v5~b8lYGYbS06x&$T+P{1AfG$^1n;#4PY9m|zIKwtmY`2a9@l5 z3+%Oe_vm=S@i+_I6s{R0PA`l$V8T;&1mv}}DY%iuG_reVoO|~>9cVZAGr6U0_qsL~ zzk)G|c?>A2_=z-H8)GkRFYHIbUklPC+oQsiWe!}w`eh`f&i|g!43T+7!g1UX6#~&L zNU*kND@KF>is?l-?GEelbpfb1n`uvOc*%b$xw3mAb=ae#f|rfo75Q=zsl)upT+eAj zuZGT|!jHlx6m+N$hUaUeOU6XJ$8(~ul&IbNrZ@U`UJfW}a$URD98mV}g?ayk^0i-e zF(rbG=wjPq8Ht$+T44z+yMDjxbNagxhA43E{)87SSN8oR;q_CD@P~)k$zbhMWnD$7 zZhD1*mB*|Vox+XQKaSTkSud(Rs~q{dvEbRQ%SPgV>8AJ(c@PgmR{z@x{kNUo;ng5k z5NZoY&m0Td1AtFGPqs`M`wLcyv%dz#sm=n(gBzwkqY<^Z*+2pGJG@`PxoN|h)fWLJ z><;+v2!|t}C0kjh(BD;b^!MH#s}ER*XXugDs5R&b?FZ1e1{t<8;T;jyQ{o)SqH}Q? zcdKyjtpharbZ|GqjSPSp0=_EQlPR?oJ(s(iL*EW9a)YqHdo5=#F^t$V#4!hTGsKBA zProDD?~F5>K7x*IVgN(1JHEIYQT+SV!aw>u2DEt#s9-&KQwMtV`b@L8yNNHcF)3)8 zUv5SrIGr`iEH-`_dvC$jl6rEoscW`WJzmSMZ~oX$jopF@yBKR%!13U40|o=Q|2$AX zSe-}Nhlzw<&JKtif|69GK`e<9vhefA_Wcg#{#2!h{@q%4<8P3P-pEa3jbNyxywmjr5(O*64Y8NwczbreFEfr-DsPMer?blDI=-4TJS z4_Lg~U2M0DCAtx9gz3}y!;SpQppEeBJZkCx_O1WTv|0TsZd-nGzt5x|;RThSf1?cP zU;qE#U=fS6h&U3c%G8|1mBc*>Gc{f&%?w;zmDfHyIz@uE}&^$0Td$ zAUrzc$C7nnO0s;@snl8W6FjBwTS*LF2s7~Y4ga1lz74iersl0Zs#Bnpn_fa~V@V%p z8emiXH`1Ucd~~gtKfi%Re|bPobJ8&p zuhtj9yCxYvby_BV8z)%(6H-G@%upYEK}CJ1D?~d_Xf=H@Y>SS`;Ga@!U8=b2%V%FX z^?-*f!<(&|2K1{RvGaS+iv}6OJjKbfJ-$WOcTKMFGMu@Y=YxUJoX-(npiBb}zJsi* z2{Ss+;penu*(;=KY|4@N&VU=+HmUTjuTcd-l4EkwWu?R>QmIFVQ-urGr;TUNd(MlH z1oM{+M*U~+#JX1W@-@M40PjHX0nAI8kF%5tIsz9_U2a{e3OxPoi0S3sh5Ph|9@SkA zxN_Nh-m;Da@4z!OV6iQBwk-K#`hl5pi`FP06L)&sgrKMyBghxJ(YVsx1)`xv@)u>!$h)k*!6-YV?SmOXZSU(xY{Vy%g&M&4Us6I`-bdSgRLz4PT2(AdKFP16m z0`UO%9#}Ov*xM^GI8Ytas_ev7wOM`D78ztOC&!-Jp)CZ<$f$NfgzK|H?k(RpUN=8Zvr3oWiC!>O!RoF zIbyD+4(fpDBH+AL$Mz$C^rq7RX>aeO{!E*q;Z z?gM)R50O)!foa_hksk!m+qc?~D5R#*l%_!`U(|~VQ3H?1ty!TL6@|Ul-V(iH5xg8m z#6tCFeA+?>H&wCk8mxCEIerYX%@3}q>#jgXy6Z^qOs&7e{&;z>elTyUyuV9w2s+#K z{{yr2Up9q+8rnC?;iu4EfWkqV1E~&@*nZ#q)Q3yHt3Ew$PJZO&sFu@vK-qko<~FOd za_#w|s)YB4`^osr4?@st&^ZjO15rFD#F#i3J!BPzTZesdq9aJbW2BrmRpa7$<=ytK z_P%U(frjcz^!BGb63PXvMrrh;6G#7WkN;8_fkSlrgQU<;frt2Vk`2fT-G}}nD+C=P zj5B^p3jN=%3G{Cf)c^E(lY<`a|S~AvN=Em%MjH!`YYdm5s+q<6Q7%&Ehj#cuowV9OO(y6`e|kU9@`TC z1$pH!njP6hpxFWP{Zrr!d&G0s5CuTDSZLM|FSZx)0Sr`_M5GsS3qM93nNBO%&l6PAHFH7`zI8&FN~9Pu{Rx~da08NCo?Gv_nY>8@@{ ziPL9tPu%l2PPx1`93OyNRY5a%P`yf=R$CIA&+4lmOIiqMLs`-rInCx8Y}M^6*r@+* z+rp|1Rbj#s2i!lFSYqR(FWr_Z9RI-8Qu4lAmTg6!P8y}}O(|Z>T?MZh+JZbKzBmA! z8v*ddUqiH(-A{^W=4748oY7`elSC>~bkW7joucKxgI2gQVbD>wV&$z-?(KI^17R6V zBqUO8ME7o4%805yS>&3&o-SOr>p8KrOf|2ns`~c4zw#Ap{9&`Ns}Q((Tn9u8e7MbZ z)+R_6-qgKAGjU`rU9*$*Xv5sQ`%lQVL^{p;tLg|E)NIxdp~^-ht!rO-($e+~Y@}@s z+NC`yg;t!MI=|@Orcc{7o*~bUK$H7Wy(NsV;B=YPtxv|Spyg&urFPrU@4s=0x62yd zetCbQ`A*%%frl7t=VP$u%c)#iEu+tqXyBR4{GX*UvB1psdcT)#~O6V0F!DRRa#eF?> zs17An%{wFz>8EAuy5##lN_k8>BuD6Vgp!=*YNTxOJKQPGXMpmWG*5r#qRL<~)ah%! zc%Ct<)om^t>Z~8nbMvk$nsQVVtUK@InD87yrURprS5Lg@Ai~b7m2<&q&~&4=LlRg= z>qrZyM=pNmUY@&`c#d6e%--C%nR^Z2`l@KoW{8}EqMd4sCejXC#?oMXT~%yqMEG9>yfkd9 z?yh{6QKUde%s!r48{Fe~ZqMC=RU`JNLjvXhjvfAg%A)-8@CSC|zk@0g<`%%7E^Dyl z1iYA*F$pnJZXEo7VJJwOg-QXk^~ouTh}{bIwM~vbDv*> z3$KMi4P6NZvm{-O2A3!W!9YH1(-Vjz(RKs+dJ*hYj^J59Ak6>Qus<;&kJ$pvsaDZ~ z#GcgjjQmBZS%Wv16aD?)YnR@0;*}l`v-#TzLaRT?T!9o%0KSPwkmg_G$#MiaQr{7; z%xDYj>yyMe*Y1V8Wc;G&9JDkO@f~rX2;pia3A&!$g8i7=op+>GG(ifm28ELXc`?l0 z+C<&1_FB}u?K59AQ=W=$E3+;SJ-jwOq}v4(i>3vduq`w1{Hd z8}!^2QVCc!a(k4(m4U4C&o8RN8L$`aO;d(+kY^t3)S#fyt$&hgVcn~zrfTvud1;BB zWd5vG@ZkI5EhTF*$(#4A3RGFvip%|>6_<&o4FdgV79KcEqpUqKKP2Rme+Yz7zM)w0 z$9kap6ChKo00 zEme6j`eLqQ6%I(ccz;Tj9c{tXFM&}Mx39tKmM*W|BLwH|CITq^3H9TU6hKZt^fvDG zAPO!dTPx!&KZV(nTo#0L$Bk?7E8WaO={08D3S8OQadK9be?F_=aGV|iFn<(NAKSy z3HGic3CO_h3Pom1* z=Q2AEMJyNd@DN|P&Z6aUEdan>t{=sT!$kzFWMfrclP7oc*4-P4I!|?zH?L1p+{XMY z*ryvl^QPD$CrVKc&k|FrM@!c#a2jh7?Hn{Vy1R+AmfX=f)_tU@fEMb#R?IZ-Qb()w ziG-5~y+>$W5)|;Gz>LU+11b0VuekN_9(qShx=0z!n>BW-R=nG@G}2?3exi6!yKTR| zxsqb}I&*IB5L52?J{yPqJZC6>&e*< z>hJ=7HLw42_3uX8Qq%)Lf|mut#}wJW6STij@39Hkh# z6lSai;stZ+RZ-vZF8Iwvymu-SricsWnq~eEI?zHT&0S!*i2->askLDLJ~xNhNc~TLxML%OdJoUUux2y6lpO&q6aB5YWC(t66Y2KiwDf=f@^7y#OFSyF82Tpsji# zrLDQJNCG9?j~zF)KWwo>HStRF`4aW|btlyp0w&k4nCM()d0GL1VtWYQdNBvQ*%!7X zqeWe6xr*t-=~|ygI}`-&pDd-jDqT0L)@t5J^^QGrj;Kxi{i+T@XN{>YQh?t`Wq~3K z<4N!%OZ5vNYaB%X9b?%{c;8S8oIy)#;A}`3xHL?chq?`&v7is*wAxiV2LtcB&&|3z-Z6Q)rE%lL z{Ci_n3i|hJ`;WHYulFg73*HBUzkF;O)vp;6fITdGz9WoE@J%*lxpz7UF&n%Qspn%W zG0$R$u6o7avzi|H4VCANtGh&+W9 z!Sw+wyrMDVdN+o9J4Uz<9=Ed4vN)(AW`2cnHYp7o+qcQ{#fPUrGy1nviqHhXo2*#! z^;C_|VT>;LCM~s_93Deeg;tJD=bAh+r@FYO)3y|PYQ|g?Sg7LB8T#p>3{fBE#aUo| z|FnEjzrX$;Ll-5%>bnfQ_O$snc#Gd;ks~eT2)yqhykl_Iw5IcYjwh90!``AQoPVU0 z&*0MhKx+-I>MsrfZUxH$yt7l^g4RkUM(gXMfbGm2G@%UGOdqoDYfi|zw@+d>!^4qWr_23(6E7IOTuTxnZjRT z4IP(6=WPhMSd%rjBcL{>$fh~?Y_N;gJ5PV^XoX#lzAw*TPz)93TVGl@0}P^206PtG z#Q-%k)6O7GI<-X}S;uT2ueVXpxr}l6*tPea{*@N3r+vlix>U}t-<7x}D}>Ow`Val9 zg{>-C>2X#W42lRxSq@>-X*_Be-6h>2kV27G8}kS`qy$MKJ+R)n)o(giSG+Y3L> z@7W_U(>`>pGF5tSS=|{K-BXPSV}Aqy*eZTh4gD@5K;rPNVCuqs3}f(tCaevxKV8{hwnYumGSDxq-9dM`P*w z?}*@UB-Tw#N#_w>Nv1AK>?tU-bi%I)+S%?gtuaT8;DBOzT_MUPn-bR-u4nh)W`Y% z6lz(00pL4`_d;O}V4LaPI-r?>@c>6H=y?0En_H2tW#!EFBAK&|8$NyM;yIvlC(G*0 z$)vaYkMMr05ocxmVBbH7E?LIN%q7B3O$JEVF>h3)=c|KU`HMyWmPL&&N=!gful5Jw zq>(CJmRuS0va?ls5L!XUDbdBw&ROO_1BlQ{He{;@(*ghebCNi#hto`?1*kM*R*Wrq zq|rO-Y8B{=&>Y9APb@Tw;ZRyQxKG5Mwryncq6i(J{kWNWOFbbCQ(p&UmA}19STppTcMVY^N z;eO)iE9LZ%fbL;W)>=Ryp@9bTYGVr=Nf`a`9X-4GlvY{w0^Lp)h3ws(P!tpTctKeN z$k`^oIr|c%y6y7`Bgi2l5 zf;w%ba9Fc~FdXmtR=~z>P^zr_fCI(W()J>6e{%gqfYrDqOEhhn_G-!W#kQKzkWEF3 zEG0PVv8meQ^QjYd&bv!TZ^Y?^_kK7C{yo`iwp#h(g<~t0Ui^sBa3)ZF6A@&=V^K6y zpvWjtXCMY7;)&r^gZHTfq**HubwpMf!@lHz(|p z?-pWKPZFYkG$n4sl(&WGTMFl>v}~kvZ-V^K7COuLbX9Qe>a9Oxf+^UY5dbuWz7pCX zSa+5qfTn`DLZtyCMZy+R1_;-E@rX7TC%*!hl&wprinordo|77W8?UwX%rnVbE7r>c z<`eI0G|k=<-laN}!V;5YusRLIVcrHJ|2%}W{#q`RVCS}UG0O{k{=W1*iEzf+UOp*V z?J)}kuJ0)3E}G^ELQf*_S7;}IYfO}4SlBqEEBrd6^#Y6vs?*Nb#duucfA%4^hbFh>4^Fm+Zw` zaRJ(8J}7P?d7RL0O9r8o}3c`)=kPqDzKPT-OpD{$gu7ImJIpNNdeOK(@E7 zMnJ~_;B#DCE^b{V4Y-4#8K8_6YYQp5H`{;5srLTGUV|4J&XZ4Mh2-A7Uw2#Z-j?cE zLqex32u49TL?#p9O`|Ou@P>*BAPgCeTJ3{ci4EkG*it5UgVTTJ3n;Zh@V*4 z=DyOjd!jO|$@NPtPoVX_11DJB^_blKWIJ2+c=(h6&wU9B z)nAAAK>RuN6VJ3lc}~Ov2P61K7feq)EJdHO8i)6^@6E#XVCKA zoBV>i`ZX`23qpJ9NB=@($>V%u%J_#UdSnGq1O4YpD|f7X?8<>Uf`AlzJnFvwM22OtAjnobWxvKD~~&6U-x80n%inl)^ODiX75^F z&T4O(8;3uU)=O&2kf=UUWyy&5X)i4_wdi{Ec(>rQ`js<=FL_K)mt~jpmC|&POfvfuchcgebSy62ZW_L{vrI#*eo-wV{K&WJt z&==O+UOs&@(S>$bzd5|Iard4|eC(NRWrHSrr15B@$RNOi;?>3VJ4oFwMavP?lkQu$ z&ok#x)U?5+xZ-KgWjc5gt?#EkkJ6OAbAG2L9a>`dju<%>z zW4A#|bu)#*i>Q7DQ}iI%&RFzWVqYHxVy(3$`{p$vZ{XI)*nPYRtsfgaFymR87NXU) zur0A_Gq1yy#}BoVk4c4qZYWl=%mYDtYhV+m0X*KEdg)Y&tAP}4o>Sx||GH$K@>5&0 zEvh#zoXfejl53^$8ZV^cjr^ zNJQT(uLm1OjcA%i_K?0hh?m^%YxeR|dwlGjUV=TfH0mMZUWw*;L$j@8D;7Zb8W9Be zAYl)Q?i$g9+EtwswVQ3R+LpPa&)=j_*Z0KV9P=~h#&>-d}U0k+)3_r3NKB=Qir637>-IB zC3?^nVA%5s!{!u#3+OQ~1#Rz|R9COv{EeetTy~``cRXFD<6-FNo^;c*(L<=I*Oi1$ z47_oarJzAu7>cWKp+LQ2jhBPAc6kh(3u_9nHS^6p*vhr=vM;Yp7C*T01lNZ9h<6BF z=h2g;Hyt{fWGtR!v+jb=1!b*gw~V+$`E)M+yL$|4aD=6S zcl`*c&;ucwvw?5gkOO?RDnWZ)e9-)e6>htBgn8kNh9u~fN{V4yZ-uT-R+>J@u|Si@ ziG32I3{Y(r`UH+>C|@8t(@6Eqok7};GP+Zo&ZAB>iSik3w;Bc?^aO)$S{SQOQ!JxG zdsmqopPJ|A=LlZj-d^jH-J;}@ovxlU*Va@{FjG#%v|F-dJpr9y>MM%NKo0gBng&oc zvc8bDzk5CYIISft-&nbVR#TFX_1F*&*k)L6;?F#IB10-G{}yaAbM)RTT()T z^on{-f+-mO#dM8s_hJ0oxG%jgvrO$Rh2&B++-1Y+&7=aj*m1w1AP%-nM@|b733;MJ z0@@m(s8pfa8p^w~T3S2$U1me}`|X(VjXtlObaskw%iFw8&~S_@33QKu7rI0TfdY#0 znr_kniCQq=xfa`ZvL{ZnO1pe|p1DsMPM8YDW!`#bvOaY0F#9gJu?N6znoWI2I8OJ? zbW^UD`Kz!LA=!}#V`uBulnakn9=O>sniYSy=(C{5Y_^JlO*GpVY@;~9vQgLo=DG}a zqvRIRx;zD3pf%M>ka~u%Us1oAoBNK$-IDGzCUS8tn}_yBuA%EUdDk!QV;li*-ZBCR z3#E`q&_0+Q>|Wrad(@%PlRO}QE}_f0f49D0%GUmHL~LKI2q_1Fn>%W8bG31S^_~2B z$JmPJt!u~rDmd`Zkn;Nl;6MU?Nzf>(cbfeUV%}J02mcO{_|F3}kwkF7fgwgFe*rCw z9(DiFA^JuCrGMWHzoLM$0Ky-34I-0m@jWp|QyBj2^b09XkbJfAw_FUyB|fc!_Ttdq z4b^;^i>WbFD~@oDcyNb~oIw2-NCrq zUs&=zuDdI8UU@NvP`Ow#JmkGzRG>N&^a`8@3yW>bsZaI6NOQECB_la#_@=_hsV_!X z(?zVWX{~>0Hmia0nss{B@@2oWq(5{rA4C;22;Q7Bq2~tNr1k7bmOIU1p~*@?tc;%W z*>CKrbk2g{Jaa zt_Fd06C4IOV|>t}I?)g8lLi!gt)qcB=VhP>Je0jCj(Ijm(T7H0%UMREX}7@SCX6ox z{OdFS?0nXtU`;&7BZf0#$$n=wJ&!{Gd-CsuLL!v^69V^piuh05`hT)Q7oi0O@5$yI zlBAfhZ?6J+LcSxoHme~dOW`9>9u@!%U0$yQT}rEFLePqUdq!HcAk?9ms|Uer&!&jQ zy_}uIU%dLmDh=a6qc9p~Qi;Z3HsB0sPr`%C*1z(Fj!(50`XF8wg^aF3#G3{QNNmj8yKEyKy0 z?-Zz~wNVo*i5VE!K$e<}_b1@m99D$?RaX!$Wlgrip zls5%@#~pOJK^~3CXrbrT>phaO6lU%Jm|XejO>C52B0qt! z3k81y6Jdkv#Yp(RiMgpum53m#84Ts7QAk48eCHa^yC;wBn&LeK6%AhwxJPE8flbOF zy0@)xJ8G}nV%)9PWjNF0S}WH+weFrEE9XYl%j}HBi({5@A9&~42XKJxTCasB(}}_? zJNn`K6jZNy<8IH8>3QjdK~i%S->t6&6NV_aP%D4;?mZW*;*EA)xM_5j8TinZk*?V8 z?ki+4Hn`NXq+D74yyBL*P?HCjYWC)JNw-7!l-C$#3T!`mwBOFeg*(w={Q<#)_5*#c z58}*}=eW8;lphd9!JHHlX?|@HM5i`6*Fi4!y*V``RiZfOdBqDl?vZM3#M-)B-`v(7 zBKTJ1rF~KMM{PqjKg3`YSFIvP@Kwj*8bBy zHDg?9q{~OD|FD4rZ&7d-I7^1X#U8FzhU!nE&m*PaajK7kbVXMwO6pyft$NgX##33J zXC?O}tP=Lx22H;=ks6AH=5C3e;+mLPZ7=fYNC4WAxhE&CVb;bq|vCbRkb}X<^iT z4Y*Vu=iriKGU(uixED z;NaR#3Hz^!Scit_t~rbl@3R_JVaW!Av-LQ9AN+00zRy{Q&87wuZ%oc>2*7cBw!C#t z*0M1^>vsP3G*bC``4|1rorI570EPIXF$6l14lz#!?S}h?P{?mfP{XOGAAH{o?Ed^F z({6kCCMRr%m*hURGULNMmS-_p7@AERybHyV@1V8SbC5KNj4U{9C?aONfCX50lV>w5 zXrPo9~}JayTaxFI{Ta&@KO>)X}{v`s!?Xr_ZBjAd84>!0eaV5#@yI-RlUvK0LK z1tjL8^-8F= zOrLsugq_sL9WS9a^=chvFjr)SG=i=5;2Fz($R0%@UiZ~lgAF^;F=v4^E>8eCt0T4d z&y<(kSX=T+Id*SBL8zHBLX}1YL;_%>Qa@wSO)0f9?9?Fnv(y8ne&Lpq*n-Wc-e1`{ z;N~RzFt(=4?EWsfCKF|@g@kC10Sh=Yyt_GlgWEsJP-=B7a~f;XRo!(PQ%_bO32%MP zSFT=n#xYP+ZuZra3NnTze~sxBq}X*X?KHhL0=M3U9)d1mnNZ#wh>cBv0xu@dCU}2( zxU+7k3<259S$)B?0P4XJJ_8>I4^)fJlR?%HJB_;W9U(E5D6wQe@FC?;x1FQvh09kH zHxDn0ZmBh(qzIaP^Zk*>{v%<%bl}?hI5ke1Q#Dv3fz;sI6s~@=+_pT|#2eCmt7?Xi znUX>uZC}B<0k|G3KI7U@GZ+>)#2i;eaBjC^1~-C~oMIYgiJI}!ik8OQfVG)zA(g2# z-dC{2q=}Od!sOkf#X3OhdtpwNZfar%e^LdVLZ&T!z_}uocFPeh~%^|-;a1>KuCZHrb zl0hHUg?xZT=%DD_#8%RhDvI|zV!FlzkZlT=96)7LDhdw83{A7e@xbL=7|aGtmQPD! zzBH>;t3HI3E68gikg< zRPMO$!X4xod{hRnzBT2ASyn|Ao#&>1ZsXRTnIZp7?58xu{miE-hoTnr)KaNnsw8JWu!r0;6%69gRXbeM}e>G%1Hs9 z@h@)`R{*vcI3sAL8nVmRFU;CYBi*dFpkT!8v5nRhokckx-hSD6Y^UG_%=??d)WcZr zbHu&QKeB^Juqr~6aBl)yCkafxpu_O-Ojj9?#K+hn`QTR-)i&l##aNGVS@ z61f4Hmmk6t=T0qmohJo=n^Llxt2uyxwxfTVaPS;{x-m@qJg9;G09Xp()I~vG9|xg8 z5`7-UF(&jP;q|;MF=7+A6LZpMpyGR+I_Ygh=P7o1OmemG%f4$-s66$!K)=(tU$aeW zsk^)LMaKhHe+&);(4LJ5bzkf}C~DmIx|M{A`VCg!_Tl^2tPrMLIJ zs6j(L9&&o+!-EBVI1jSS!j|9G&}<(^cnx?CM%X^i>P4C#WjdTCM)h0`UmUMrde@TU ztzPLQ@;1RxX?6M`55JY#FS*1Qfiw3{T27D&YE`v}7p;vvdYz@~w_R7#0rm0mTu)Af zfgN6uUsh|Ft29aZJXiF${NI+)YXZCz&EZp{%Yv(?<0;co`eH*UZunw%{gO^gnzuxy z$Mr=0#3(M6M6sKhm#-MT!v#V=KmTtaqT@J2KTS4R{lC7`*5#BQj}yxmcA>{K;FPNX zfi{`i-MI8FJ!kvT9a&#YZ@o{@dg5N!zxS4w;VZ&dYV>dOO@}xFU?cK$vQB|n&*Tg& zMKpWz!LyXEfsEe=j~Sh`J@*(sXXKdN12PuezSNEm$mn`kt$9u04{V#)Z^ z(-__C7od0DsSgH9L7MG8ker*wBO4o6p zEDV?)5Q5j2p~Z>h6jB8)gKpbAs1FBHg%sM1YddT@OxzlM+IDX#MDAE?pDj0=%Fg^j z-~><7i?bc72jG=FZUgHa-6={9w>fA-MH!u^#Q)L0wMF^<@eezyql;p$=pyRmM731G z(7(f406^d;lMk7LB>adKOO^usWeNBu_&W@4r3*Br@1WyDgDl*Jgk(q-`Jt@Mzz&x>v{loF})d8gKCtmFQeLyB?PlVY#DDizQp(Wz`>b~r?i$CQv*VyUar zC>U@)n{~^eHoD_zWt`&O@!=?!J0%Y)eDLQK3>;PkZ~je;_xHt!|MB;KY4-fhZW%w) z#eag8@&DX7aXK$+{|zQMw?78afJ?jD7tJxwL{@x#j1I?$%mL+pq3S(Uz=IwW85@+P zpStV**u|NoWqTXI5o`bIAFDrE$P%;y*m2GOxe~09 z1jv`67Y`vPL6qQFG|joLI;Y1G4F8Tu%!7d)JC~EfNlInWfg%0|RL;&o&UmK0Cp5PX zlSQJP*Ja&Dw<4M1TZwazKk&{4|L-*^es>5hc^c-bUn;LDIHXouBl_Nr`3eu1AcAo} zA_EwF8m|Q~?N`b)dQgpSOoJe$Zgn3*l!8*JIYDgv)G?_k{atylwdJeTcbVVq{<4+N znOZO9ax`)ABP>o+Z9$juHcuk!YPml6BG+PxP2K2=9dqM`GPY5CTg{YjoIEM`c4BWq zq4t^;N}h}scAoEa-#$hTeYDw9v_#&qRi0h zj~BQuJ)ewl%(ExO%>8aQLEdl$Ri|_5aG3swo4vS1_swzp#6)g6JvZZuueWtB{`73c zTTTOtc7b$l4#jWnN-EWj^KDxLNBdY`_@J+<)#FmWKki(@$j97DCFaX@2>PtBWrxBx zV1-Q~kZ%-oKGxHNJ>HToUwLayMHLkNBpq9+bnWs5e5HQYuy7CWTst_=P65h!2Fu{gH zznl7gW>B`!Jik|(oT{npt+Z0w+EVbLC?62TXzpf#L>dazN`(f1**XLc*J+E%G$*u2mh1Xk(;<>^rrnajPo(FD2)zD&nRl zMl|($UQ4^rH8kFT_T<|I2d(sj!-ZAd6yk&}QwE-8EV8q!^=L%O`{b&WDE)n#SAfd^cj>uB8%CaF z6ub*|^m4fvy}qoX|LLLFkA2N6&nF!-LT{==9|hA@3eom^N<;NqFBxnC%<`J_&{_lf zfwwXSX&ci5G?ZcvM(uy{n!K{sXG&KU0ew6|K7XDooSlp&zx51(gju?dy3L-TfEsUZO?SS;{GzfcIt}Y3^7#zUvbBNacbn)8S zk~H(klcN3zxxF8iwsEVzm^5bT5T<89!)ka-Yh$n;1<6|5Iy4$S7wK5m?vsIX+tyX(rzA@j!}JHdhKdT7=xC!%UbN1}Pt_O5dOg+a9uK^P0zD~QXFJ|p`S+ttc zK|nh|NnZpjJ))k-6wL)Zyl-wZ1V$jcxZ0Yj6{G?eQt=oQZq{nEn|wPtR6QcuPctY%@+F!jxv!Saz3eDTclFFiw8&em#4& zbvJFy80AJmTMY}<*{@FoAEh%nf@SbLIMEtXcH=`hidZhH_{ih4Eh+2YWe*JO;5oK2 zB}lL2mi{Y8Zoy$EarTCwZLmugOB(jdgiRWE`_{%&NP?e@a$U-gsDGYxrx?jO8$@S1 zJt`VQz@VKM7ufiqu?m`ek3>5(%>(N;*?2NAalYR!(p93*Y<)~4*~OPjY%v`Wud;2r zY&sw-(nVYak*86Mhmy;{0q_LG*bmZ)g=3r}KfM}aAP>7SFJY$v?lF-)G#xf5+ev&D zq(Rp^`mB~NTX(SERit<81Jz@7bbc4}sv-5GEA;m9Fqs_w&A`kSu`JoOEaXEV+iEQ0&Q&z|8xfL>(fbfv4lmCwU{zA>wpoq-2GGVjhIf5+Lt=A@s zp;~-|i4+c>024=o>Wx9qcHC-ua*a;~PV0jMMi85Pq%SqF&m!{>Y4V*1V^){zOHy%* z>Y^#I!uME$C4l-%et?$M=g+mxNsp&w$han_UgF#Kw1=J3J7CDTkuB$isUXtM^G189 zgMz^fyp57}aEc{e;%>0aXvl2ep*XK8wT_ugWG5O{)t$%!4P#$`)kB5rY3+KLvN4;5 z2&WV?yj*#vZIUPB=b_M%5R4)#>BH>Gbx|UaODQDruC_3mVyf4Q! zL9%~3@SMf{#)>R|MW@#6xXdujF)OMHOL`B}5^NS*re@G-*u>wvYN$S7PGMa~yYXV} zyI{$r^@^M^3zy0zowgd>zz5zIBJDDAau4te)4;vNz#plyf%uZKs`s%$nz>1rOr1LI z-T5sU3A-*Ne%^2C%F%XP0$6)kKiUPd2afGe=gL+%CeW~oj;ybq_)7i=023e`p z>A1U*eq5;AXxbq(ta2%%e7Y{9H=~)S%dDHi+i0yb&U4f3eCMezdXb%hHAP8Fj*kYK z5djMt^Qn)WS*T}aE1k(luN=M{C4+gPEM>{U#y>+x7$i#V4EP@Pb?`= zg7hLE*G7`pmmYej9AAJ{wSU%qiPq<>^Z46tZ_dnW&Xhjykh>n$^4c6m#Cbu$_u)8W zo9n6L!ih%P-IU$oLN53NPZ_ioqG3%Y?E&Kl;M9R`WLdooT{GB-!VK0K5_-Oh{aG?a zP|xXg;C_Rf{Jink*axtU%~eoHkWztLRoUCC0f%Fp)Yy}a?9Yl(0xw5DZ%Kr$XauG; z3+hC>5_(+dd# zeYRIR)QD3vuPqw-3?{a%RH|1#!?h^Geol19%R}`>pf95c>o9z+z>YN5JMyNisPIsm zXSR*!#qihtsON$QKO+!k{qK@5Ixb_o+(*EIatJyAzEBp%IMR<(@t{gF0ur1zcFgYm z#`wC_7J2S?Szhc*!K*Y0?yYeN+LOwP$DZ_Fg=iNElbV^VQ?$w4M@1~nu4*OULfd@> zq_4f5RO@zifmoTfPmH(wu^xS)Pi$SRN_{G(F@wiNLE+=ptPUT0p4akvmZd-= zyr_DUQk;%_(osW&h7k15pbfwV$8(xFav!tHs%aUqWs9A|gBUpX+eRE>*zg>_9BcH- zpzboM6zn-7Q-gKr!xP?XzMhdN!FjxfM0@=sA)8kiskcx2!<6D+>!GD+wi^JrqtWmd zBIs*C1@g&OjF5=>^j&UyY|Xo}0!c`0c)j(d`4<=59~*i&-sL~4yg%VaXXxvflM@*< zca_PJLQXS8I{|ThgL*AI$)p(Fr|`ZeiCD;2&rZ{PbMZ$9)jT}1NBQ<;xl}e5%;`s* zoC{|?c;Zg5YEwcZiUGOSVh^XkA z9O<`)(=5_Aa>k1~4QN+WW9oBLh{ZTb{SJon)^C`~EhmI5#CHND{tFA3suTrZedTR_%4PN&1P!qD$mx*_hKQ>BQ`iC*(H0tN71PCUyKJ-RA5-O$!%bOtp9@Fa zyVG^xB{_c9$_XsF3NStPxb3*tAnOH13@XBp94R&4l#FW*7_mlzb8kp$7lZLxGO!|1~Ze@t*D%vz@d8d;CPVPT_d4w#i5L4aC~&%HUhQMxv4l zCLXT~9wvU~!n{-g2A(6Zj|zOA=}9Gj;goz=8_#-Z^}u!q@eg-n&AcnFK+gTGEGyB_ zCZ4t=S#G(z(%%tY5P6c=r_N+Jf@kMoL6Mgjo#<_Cv2Z{O9UNnx$6K5p3~Z>)YB<0p zd_&!~mzZLC4NPsBXD=5ZDYFDJO-9|)wYuE5n{(GIws~vqz1zC8f5@P7#k?d-RFA`V zlkUh_{cR|a03YDAQ7{PS#7G^2#NJQ6!58kd+vvu2m)D% zuszUuQaDE{n$(;@%Lv;4DOGcH5Hs$c*G!DP^Pp5@!lBa2pRa9jkK3FQV;eg`e*;s1 z^A?AMt;lIRCrdT>K5xiOd2=G=NQQLkn0>YM#apFuQ1z(X8RU^n3w(yN61! zD5^u6aNo<`QRA)&0kd4Uax(c9cWl9xhavQ*!q;PCwMrn5PjpL`+$tuI3sga5iOEtW z5;w$p!zJ}LL4#Xq&2@*~35`6oP~98Rj=g>>{=?n1^CuO#K$1tu0XzhfE40F3n+v)G zYGPj*o27h5#6EF+_P^MB53r`%HC;Fg2r3w9A|M0-MJZwfq{a#e@&yZ^AVft3MMOoU zvk;`02#6>kktQHQq$@4b5v2E;0HR1uC}Ba8<^S@X*=J_<_wCuU=Ug-MpX-d*Wnr1D ztgQE4Pr0A_xgVPI@KC^s(emGPtIRjLS=hh0mgIJMV&C!evSHY?5M<+0w&{@4v6PP1Bg0{1;f}%MU|4tFxjPj&IHX!O31n6uQ9N*5 z!XpIPJjt=rgz);nBK8kREO+?TgPm$G9Lzc4ezHH?)2V=tWl7%$9`lVL&6d z$Bz%(M&{VtjE~GSKWgL(z1917#NTXc?Xe~GH~yCs4F8(6`2QQi;eVWLsK?rce!x6% zN5C5>9u0N4296g8%MuJLDmtyzaHB2>PYqr9Pb{j4Zq2xaTD5p0^~pp6q>#(NZT%y> z!Q*IHZ5ogii`jlhCo7JyY(td!SrA=JyD|H#@2r+|{>GbUo<)DRsu=&?8Xf*MNdLeB zlC|C^{}25B1EVdA#*Od->lU93<}zIb>b@pS_TN{>TSpWBtA%B~0S;9;i&?lv-h!QZ zqm0Cp6d3O0oe-5lSUrgM$1scmBxcn6d;?4ZZbcp*9>w-oBU@@|j&&pIy>~s2j2dyD zFNrnon&0_;M@Wyzq0Ac_v`RC6c7-5GWMD@yxqvq*R}JI=cmTyLh%`jBPtV9%afTmF^m12jzhXjf5OoTI6)G~B+}_P4wpE0{wdmXHDYBAzi(Hq|M8DG;yD864 zx55ao_Ph=~BTgt0c+6#KO!!fZY+f&l_0xZ_gf$syo!;WEvU;}Sx{ig-_rC9q>OGNb zx?xTh<=gyXOQi4C(tVBLUn@Wy!!7CEp6}fO(LmpQSTFI;3omSyMx5)(s=Z!Kb|s$n zj)#@ss2Mu##g@yM&0txgy|lne3Ky1|s3QaWgLp)O7^1Vs^~IwXXXkE&-29NYai{cZ z#QnW$xIWB5_gg+X$?Pyd)@8Zxd4GWl9R25xmU~b!)fOE0(QA*Nq?}5c;?Lc=?SNv<1%Zz{ zd9S#BKrD*mC+r`*zkjc)NAhxL=W4rziaBS)z8Jj zt9KGPN*dDHa$)F?)-NB5o4OjSE@MRa$w^oKC%zVI9@a`q@R>)cy9aRGKl%H!g z73X)S28cg(vmVcItxl4t<{$CFmQ1k#wD0#BOMMqh)FN;LYNArUyt~YRI;Y>?B9>ZDlYh zyxz!sPWK=T)kM2qXw)8z+WDw;NjbJZQRLY#RH2M}8y60ikz)y5ti{mGa0Aa>^>Ag; z#{p1t-AJ$2ofi5PX)RPPyb*+n$=SR6g~~mYnNy@F_ZpEMO{RvC^RY9wRC@`LDh!XO zxbp*hvG*k{#cxl&o9fLG@{^4{BBN@dXz;d6JjmpHt!FmyKtbNkrqCubHLAoVtm3Pn z8B8Kkrqu)wvd2$29=TkJVfxKwi!dxbUeEU98`1Wp+(E(P2rqD}&p+3%CpzHkC0XU?%+53G7@Szp(bA2oL2oigLBH{1+zYjKf z>JM^WkV!WSkbo*j@e413GM7OIw4@M%Vgr}qCj%%=O~_%WZyJp}tHl>~!zo~S^nl!4 z>^cWDw+F-C9YVIx0P-*F_tp{9HMoAN|b6=gJ!!iH#|`?ly#rj9wOh6S6rNVBwW}A!~am zV8=k03J*#d0@wl@gOU~!yT91ZnSJ^^#kS{7%fgsi4ZWHlyOf%iJ<#^^TD z-@i2Qa%-bLla$!Sfa{O$H)Pb(v?sCytHaTwxZpUYBC&bj_bD9}4OGvxS?R3~hoi$Q zQ+RdnPyRN=wEuT#Q6j*jz9D~rY5)jYKkM+0rACir>f|RExCcaL_2t)Z%Ch@%l@lx*+h^#gZLX~DDGBq8Wdt?Bv`gu=hpQrK*36Yv3v0vlLltfia{I)gA zr-rb@o;6f&@Fjq@zh!0r3X$~^4;bAT5S?MSQbGyzJcSLoXO#B!Ve_8CiPE9Hv#GB$ z_rzOkai}9JSb$ztzM&KdQ8q)=98(=3``{h*V}SvMO2VVVK?5GHbxGopo%b!yUXmo2 zUk9c?>vy^MN}%X8cm}Sg{kTda2ED)DRe<5|Yfi@xG#t*amKSoy8XGx+%2NZ5B}_*6 z7U5bD6->jKS$I1gi5@K{TF#hDtU>S5(pw)r?1J~)_!NG)y(A)?OJB6vQ!U9;iVk{W zpLaf@Y=r}jyJWA0Iyj^oDb^(V-O0qJLGGQOV-J>HNdB@b#H2l7;+m@z!JxXmLdX?g z9Y-1j5DlNJcO6rmd8UHMdjW6=4c;IH8(=4JJA1)*E%jD}<>)v=7)&B>I*U|y6+B-o z+dulH!TzOXi~m4^@Q)-D|F^#u`m<@u|1+5Df0HBrUnBQ` zwrcQX82|%9DMVM};eD<3^V?jZaZ0Tb<^;&#Y9RjGCHIK8$HarOXB?8c=Bz_@wy6s9 z3t!ss8MOt4l_wFF}KL)g5tt08K!HR_Hd98l0oB{Q(dvUXSMvOmQ7&P1C^rXWF z2yVK;nZHn{vA|m+d^wGyK$4w6 zv22pOC=NOVI()Rid;f4AvN}Y~rqC`a0i?T|ss9rzP&m&$S;5z}L_t@Mt`v11ut`*S z9^w)F!u0S%akdm`*YzD_Q}Wm*>{^L3s}8g&ETte)*1u3$0HFHnxb6p0a4Ev4K(84A zKHs;~RT&p@D_9HnX4?GbyKS6}ML6ezweX&Ieaq*6h9LRV3*5+N0L*Mk1GUUTFus?( zkp+ky{veCkoX*+}finiHv36toDR-HsL?;`BJi9P6$Os2tY*15`{cQt3+dB@YRx26B)>l3ZK4I-3mZzHI(kw|+G8>}PD zI@3e8g?u!Y;v~~jhHS@Xa4>X%%RMa5f(H#y>>8{z_xyS z|7}J|eQ=o}X?P}Nt7~d`MOTjOy^wdJ-y&Z!ngl!mfo+kFL(q!s7%jo0&nCq%wItDo z&HT+a$%EztMLgdMYrj53osjjONmQ?M!mD|LfZT6%eBoPQB__W!AL1JMG*-5u_x<)k zr$NL#f*1sEr2@E;19aKKzT7&mb!;dML5&nOq*ozJqe zuaKtmeTxf7%djNB(*Cw^$To7Ybcby3(hufAs4@YckFA_;@|ed=OKQNmZacOPj9Br> zoqMRcYWk5#Q{&_x%z=n#P~)p6ZCh`u_I>W@L?bua< z?b#z4S}a-S@&-LHzn;+Pi-3e~=TQ=SZz9<#YrU-H`6(RXVnI*U=4E;dVr`cA93O6A zJtj7iA7yZ?=7JkMg#EUp!v|;|F=|MxAs##(l_be+p>-JARkR=0F8r3Cp;+CU#_D5s zOQ94c^5!j=3{n=Ex`JNS27PsmJ-~#db@ci`m8q14xOIA1ANf5wTAleMe76?kLS`%{u(W{jgh&ygCPA@a=wc(OIeM8gULLVfRJ5J{O5WM}ZRqFh3V&7F=)Q`h$++c2qSnxXI zqFM{8#A_*~3}1EAFsoIPU#W806aP&hFS|RpekF|2UWY#a19K7IlLm49LT#u}o`Uk{ z>(QIw#WM~iWZ&gd?Z*vs3e4%-9XG#7gi5g#m?3oBtoA685BXvqSa<#5UYaxEX(~Og zHNowL!mWGNwu!mCE7Qj@0ELj?V&b4`L$LNY5E(tk2aIrq(XXZ>yt(SkfcC9dNuzEm zZEG7w$bhTUM(E$x3KYu>FhZ{JS3AdFd8^v@CRHEM=}sHmoqM^})2)h0gIZS;;OOyT zi*dP{S&v$=vT(N?*Q`q)yOk|Z?DdEbHowBNE77tw^E1rruTB^b-UN%_=~j0Z#CS{Z?l)#k(0Qz!P*N?|9oX0-vx>c)e+9`FL2R zu)3N&IjFYrn3S)=S{GOVU@LE9;M)MQ3aru$PG2m9yW$(X2k9G44Rt;zSd|*eeL$ytGfA|sxDj5D`7=%b?2F*Qwp=n@L>!i za`7lB0>g7J2iw(TGtPIIcX@~}ZQOd$CWz(ze8WmHYu6|+%KdnRhfT-K6k}|Ayro}y z3Z^dt^L$r{ku?1aCHY|Z(R>I35+v*Seu^Hbczaq&_^X9nAnP?rHRRY!%*@p{AM5QclB-Wt$#V=X>z@`&MU2H$uVfGJ0;v zuSHjji11R`QRGo4s8Y{)J~*~$!u~NOUVw_SQP;0e{t0XvBRmSx&XWh{E6Fq?<^CfzMBy^KI(y4K zTote0)=NcrIT}Axi?rpJ8coRD^Wm|y{XadPdvoX@n%k}$W5b?vK0Z!i z#@us+8W28cH&N%JqM#}fn)R4f#b-}H^NPFmb;^`qT_T9frn<6xU=kx zM2$BGtVx@%%G!JSp}ktKd)G6+Hb2qA3!hyS!Wi|!-!Z^AQk#J`9l8GJt`X_3iXHGa z86;0h@9K+%30f^7tPxXeeZD@co`lM~WovLnI!B|~?F(=F;d?o@~tl^70sZE36;smA%<Q(bu-Snorh># z%hGGyQq3s7Mx!W2g^}hgXkn$Px5zJaZS`8DklnWSIMzvcvy((@J&vnc!68J#y>_@9 z_3`AoM(r{%zW-jnM=xM)F{zX5-j4G)tX#Aw!pr#1+S8d$T6NK8nlL+CR1(FyG8{iZx~k@?#YQVURR+b7=g{gW?rq|0b~GvW%1Uc1TYaed9$*8G)x zuzLHD%X$1dW!2Pg4|%qgM!2N-UA%Rp%DYU*=SR)`n*_Ks7h|WN{KUs&X@;aecM7uQ z1Q^t#Os%a4vF0c+(odUavv%aOW7(-nBO{F-Z{A`wBnDZ&uNF6LLeNSWZtr^mLiBXgaGy=b=Oyt!r=q8vd=!XwEv7l z-eIY&m|e|dV5l2s+C@A?1ri0UM9fSZNG*z4!sFvsei9%gEE)MYvaj<)sdW_JnKPsP zNTZ=*?ivTbL*^Nx!3BEnT@LgN>T13L%ycm|UG`<%Rg@fsiS{QR$1 zabf<~i!wKX7xjYHqCd zdve2R7fzme<9+HI^j~oH#d^CDN`@NS^t@)V+!u{e=ogFfj$$M=o|7 z4}2N3efr$qFy=n5dx)_7sSQ7_Ej4(Bq5bAMrL6sFnPSY#q+;{t56_f;T4E zHtN_e^ZIelryGOjc=$)&7)vKamTrkS`P9`1Yr2nAPlDBYk!@Q_*~!lKP=6~U>?5)I z7fPIkRk&?_EB#$kVRTLF=6yY}^3V*UyeVaR^WZGG;0iN zScKh3WX6#wQ-AY*{sje5_-g^7g}$YNcAKil zlryRYWr4&d z&xgEruMCjI(6H(Xa?zfKMyh}o@!e9=%wuwd@*fZSY+(Uvy6;b*5IX|Qx$iU2eLY&1 zV0WBsFO#DW8u-t>ciyTW)qxQ@*d%T-`$nO3LE!Ofd&u04R~$=4pr;7!DLPIF!sim} z3%ZuHPt{=2h_ox_LX@E5Hb(4#W!G;P^b_ts%dmS&WySEF(FrmRMRmQ+`^8RC|IP2Z1wv4l`Ue*qgJ+kiLp)l_Ou@$QDu zN6QS+F*fuqbpzOnGCjw4{u~*r*IzEyN5MNIv*>CJdG-g^Z6=p@ClG?oq-xIR!hTgN zC-M8gEU55^PsH`uVBGgxD~4%=ecS$d`v!K`c`Fm9pm#4Kzy>L{4TT$UWsT}zC%G0i zT;;jqXO!Nu`RuGs{aNW4OYvNV$Y&>XvW{b_u`D6n#ZNtC>KnX-va)d0!u;3{^3kc^ zKw&KH{$)W*)NLIxs8W+`hYpwI{y|L>>v5r z*+%nh9YM41-if?gh`hi(fIFQ_sZIBP zL>v$q9WFh0{6yABQTUg-BaGTm36JrmqZ^irD;GT}n>`OW?|bWaLE}tPNyN>YQR<%0 zN8XD+tIXrk^21mEnC*9R^I$r9-i!y&#IvU(>OCXVq_s{+-MfrE)4O6Ie!t;|HXpQu zLbJp?aY9#I(;v0P8p{>#ZelNnPaZ_y7nm?ZIA)JyI#*cY-Hwj-AWpl+ zCcfxpU!hH_uRdnYI%{GPEsJUVEwk^oEHOOubRP>mjJ`UcD3m)?e;}Jyf4R#O>m_oQ z|K>-JzRQHUmvb>ECePi~@Wa1-gfg2Tuq64@Pk;b{(>w0$D^o+P*zF@Hd6+GxqdXXz zi1pGY^2Mz6C)^BPwi(6s;YW$psU^YAkf>`l^KxbB4|`4VE2gIiIE^_<^rRPU!zu+p zXCQBHyk-qU6MAtI2h}Q50K<9j$L%&2Hf8lFL)Ki!AJ~<c`#(-`6+HKxz)0La1MRqB5C8nD zqCPtUsuUtm@Pi)ESaviUT-VtsADuU(mteCOl)P?<1}A#XPDv{?b+Z_q%iW545cI7e zQWoob1mnK;uq>bP4L;<=)b*|}NT4+|_Jbh-Ur5k{Z>CeNm1s~-r$6oBMySILIBfIjtZ!Qd}MQc6FOcc#4mG-}d$C<2UGWGXyBNUWD2UkTwkL zr~)B+DStRZnq2^%Kni38o#a9_wm5Ef18AdIGy?<)_q9cYM*)2G6?SsPCaBV~f(K5o zp=_);;%ZjCW<|QMyliPvY5qDqCgH-Bt2NDv9VatFTxOfLAN~x6oZHHa)a{ht8H<`kBSs1J=#AogVdGloz?Xr|jY3q`Qd$(#R1|$TyHNP0PpZGJ97+JCWr1wF)P1i2 z2TSYKYi4Q2hibl@eUu%2YInrxmi!yrc3z9vEX?u;L4H4&fWlbc>SLDlz<*>GnFkCTBR?YCVw zuF$%1O@$V;QIHTsD_X~cPpJWcNNbR_2^*2MFe{T17Cn>?^yO;Q~+2RH`TBXDh{zfkgt7(jdm zam=3_M7p5G?+}b;ft>FAeyFX952TUc<J$6x>0cbuhVZX!41H&|RE3#M z%-sjzTv;;t7phyKbW9U1$XAD8@QM?8NpS=UIZuwyKCP^)5IFy62 z2Ot~a>r&c&%nirFnGe+=zfV5s0F`LAS3hkO!lwVhA`{E~yq9$Xl99FZOqq zkmN|Xn`m#VpWyM{Up(=!LM3EPgq2%o>X~jVj}Ao4^CAh>|<$y5{3!ob70aP>j zkLC%==Dy>VK2)i-M9K#hx6Ku~@#o6p2EL0r%qa~gzu0e_QZsem1ow2HYwWbd4Y78yXSmy75@@TJcC{zrIKYVP-+`cw)ALT$(qiaCU;y zVYV4#KfA~o7c#KvMHVf8d`HsW6bF?&jDkV;uxC^0Su8+ zpJl2AK9Mtqohe0c4IFiFtadN3zdlCTR$dt*aj#W2OqJ*C*bQ^_gO8&cA4W`l#tg&= zFSgDA7sF))OMpM6XcBL8Y2+daTY1B0THo|nvrUsSTd|0~OUJ>Fi_VbaIj z+tvkAQW8rD41kaOof`9#U8q9zTcMy?XU1>QnhW#qtQAFOekR^5dByp*|Auq*^WbsC zk!#htCpTQMPXX5p>d=)9`1Spf2qqP1ofsu=bPYTMhtf0Z7%wz*UMmm0FEI4wStNbO z4QGTcTr*v~Qk2P)+CXj;sZqvEBK;1KAy(uPu3!)9Vb3UP#wW_^B@Q4R!QSz;i+&AE>h_in5 zS6DmBKqr`~va@(qN1c8vi&VFByUBr^iPySlnGK)o@35bM#R&qNYoZy=cnLd`JUQ6J zxw)J&xpyB5!B~>#1q$y!Z>HGXddkhze8w47q*cos@>W$5B*8!u0u5D05El$U&5+34 zG6}8iT_d|>(c}=`dvtl7Sf+v9>|WUj$8A=+37(Y!ZzJ@)Ro{B2jF7$llrUno0fcbT zP@^3S1V1+rfT5&1Sgi+N+#jJYlb+z|%awOzA9zv5f$)K-IIPuOR3D)Ld z;6ONP!*qf%W8E>uvFWVyAk^)1yt(!DT0nxS>MiYjdzEA#_f@4Z>iEKGPdt4iOB_P6 zOK|WRyg7cmxbmn-G6#43@b^tP*@B{(vJgD!%gt=X^0ql)a<3IUdRVW4xppVo;7qtoBd{Fv#b1)m3Kj`N=U zE!uP1(+i6TUnn~jI|`7g?n1uYFiCRpY-@Nx-H{#tOP@WcVn1$HR?0rzBBVcVf zF~ODZL)2U~cIvceKvn7o^3$cRmJatFrko6&Z0Q-*iO@S~4_DB7gH_O*TnV_Iqw!7Q z*h?Kb)@Avn#ZJ3=@^vdaPG4`#`@qTHAZ5(mfuUU?4HP5dfP~~lj~(L_**I-bPUkIo z94VcU(szX`zsPw;t#+e&y^CDJcXARAK5Dxzx)A^XCSQ{QxREjVrKdu9+Dv0HpI5)g zn3!jt1h(qxg~p0rVb({MBy5@G`2f)HAg;-S?3AnY$E4fIKj~1bVd$%yQfL^ zz3!*yE}T_#NQ#>KDI6%@%qfs@eZ`PtfL!PZ5(vH}wBN|a4lSio2Mi8u&cH|Fm-0Fb zrgxrJW!!&Ll`Ky~vAqjf>mFT`Y(L%FC&w6o9qI0k?S&lF*Omw79E5yU9!F&JeKo*s zNZf2=j63<6L7G`%VA;hLJCG6l=2=f$T2`HgUg%M`NZy|g2bor{WO!HAj4>l8_WhW+ zzqw9VcQb0)eIF?Tn8-8=?JC}fLOVy`nsOL}gl|{up-+?u=hI9>-FB@N*3@gBZcGim zyr3R+?HIS+q|fG>h5_@b!& zZc2l1%P!DUyI=hn*YNAsuiwl3s@%Z?~NFqMm477cmT_d{jxl}qS1$V~CMk!C^0x))FP0I=`6dA;=p z4aAA_D6m>6V*H7TT_@(rAuq0)(bMq#jx6!oU#NXo*Jpdp;G=(`3=iz%m|0tgsCn19 zef>Q~5EWYqg%lMn6tiSBx_<}DEUcB-n`Ee5u~pLk}1xP)bgXNlEQS4_pzA12bfap z$L~a&KdLWGpjMC1T%YguiF}b`j;Tqi4kmPA z+M#>%Xke}hFviPGtqQ((VYdN zz=>2-Ti%)>0u(>IV8IC%zF*|A##@c0#hXQ~G{m;ec3F+Fja^(O16E3a9e30*1mVi1 z3lsbcf6iUY6YGu}7;64@j;23qGHkFKG{s{bmEJ)PMfal_7wCl9Ql_4(*(l_*)UTo} z;F`DWaDBtsh#sB1Ap^bPkbTwqv;D@)$GDmI+0UU{^Jt`=oNw#vEdraWT5^A0J1u6C z^|2;a(%fee%Y3MQTYT3&r{j|Te`)N%2S7A83QKV0M?GbWmI(MH@79)2v}2Mx>Ay8B zfL_hTujVb(#3tddQM&F?j)HG4;y=ZFW!b>k(bj>jqu8J_^ced9#hgYCDOfFN{;l!B z!q5qM;p>U-hQ1xFG)4LHZ1TbSll!N~(}S?Llp`v(!@;8#fc+d=XYy_^_#Wr#iZ4XLF z?4;?7w@21DPT>}S>Ei-ufbV&@6WOfIyl_Wyd++X&E-fGhsnq+_^RzX)CI6GL5qI$Y_!SFXci1WwlSpw^V4Q==eiSahJS-i&amYv+bUC5Lm-yOuC=d&%3$)Labhan2{E zk?WDmK-5m-XG#4NmR#0pMjSC@dE@S$Wu6F=ltTT!(98V~dHv%qWY>sD&%KUc)cSvy`l zGjeuzmagVKnB=zSv6TF~h%3QTD0SK1Wnexx)d7zsm;>70F`V~w)JD)^AeRCHM_QOUW`(^e!jt&AOfI~O>1B|D$SsR-?AN<>PUO6APkK|ffEi2 z=em|Jsph%98r>t-F>#ecGTGnY*=M&tZCOt2jFR`o^|#?^j@hKyl{6eZnmV+7y;Ul3 z?8>(Y?j5;s?7ga#XGxM$=S71_75Zpy1lQHm5M0*eM6( zKzswX1-fy-^i}3mhQm$zktzd~w8oE{w9jmb+3mCV!CjvR>N5vynF<%ME3=UyGd#_R z(kD_+6jSunbR26UZGvoPI?~HjBZs}R&KKsZKbMIaIIxx78TE2p9fdg!rlYpR0AH2D z0tu{4NiO?E_Pml!%a=EFiLS_s&D^|-4acMi8Ce**XlyNRO$EauSpoo7808IsX+Ycg ztHb~EvcGpjF#nq9v_9R%PfAPf9gIiBT$s3XT}S7!2tQtV)^r~IiZGineqXds@3&XN z%;A5g`~9m4<>&wT_@5D=Dt@8<(8XrVy}$*$-liYbnAQC{l7Ke$x)=#JM;5if)ks@` zAj%5liIasSYU?P0^_+-?`hFV(DlXZOTOtp@@0InyN%uiZ=53qO{#<`XflQsj_O*`1 zg0UcCp6YEnLa>}Uy)HKuZo4D$IPQ+ZSw}~P_)AvZkY3ZLE-(Ez=xXdA2~y-(2;Plj z@eeW**a=`r6Mhqz=R@$5JWOl#KPsU+WqIminXig(yLr`j6~$B0O(hYp^+{9GzYkYD z?CDJPk{NUHb%yw0KU`t=l9GF)gXa0%Pe!y6i^c$TY3I53?@veuki!5}sstu#iUS&l zuc`Nt*vb>pdpTvI@1nC{?1krojA2z>O_^KsM-_Q5Jo<7R-ZG6JQ1M*%va{d~CRe}{ ze+jxFVR*VziHZ+SL zK^q`_BbBwkL3%{X544;0E^`6Y@&a5=FCD|poJjhKEl_?^W<;d~BU|f2J)E*?gy0Cy z^WX3a8&5nwC;LhLux{(;$m1y1SFrEuA!=+1F(e6?nOSw}u+*?#O8;B`@ua&?zX-{L z4dBwkZE|6DYq5!>9?jQmVG!W~0X>&PFPRz%6}r-In!1S1Kk+o$a=YR{`|kUBRs#Ww z(Nz{(4(z^l%cy1(pR_>o$tHF*oKm&s7+$85VOP>Zw9UFLR#@=DrN`|4`<|6&`f0Ku zr>~hrK97+5OQO_&oY=x#PtC8y?z*dZkYH5mZ-Bjfko2LX)+#!rdqx z*NDfu#s_7eJwtKNw$8XQ-92U4gmw4;|J!Ut(xsajf1fN^kdhy-X=HIzL^R zv4x#Pw!!W^>MaXjq~j_}3PTFMJbGmK@sjknqmjRb=00mOJi`mNp-hb5y?d8*oV&`$O73;uiqnbkfZ~Lo?>hJdo$_I27Y8KA!3UA_yl39_tK`!aW)ktDK(5?Ku(xzUh#=VHmwD@w{ z&DLd0v!e@d$oX+FJP-^J7MAke%$<#bFc9qo239m#VF{dKy!}|wv%8`j^f-)4gEPcC zEE@6X?iHWBMC&|Jj$HNmDH~cT-^8}_ZYCFEtI31hqcO2z6{2wUDSCRKa-`*frNJk= zgNW3aW3D%MO4UneWpZxkA%Vf6ifERY+?bMbZCq;&y5C00*-LXXw+@zG|dDLF7HPdle}Sku9%0(i=B(qx9dE z#suig>tAnZc!QorGb-4{$PRA+e{abtv!R>Snd6==c|5Y-a@DY8-uV8J35(;OqTJ9c z=g)FP`)tNE;8{D&kS(D(P~~ON+*1zZMY;>?2&0yVH>A3n>Bdy6#;2zo;n+)g-mH*+ zcDHEdHJ_L>8Dv{LEDN4#;HkNI>EEC}ET7J9`-fNaQV}Wou8UVLA5UFqb#p1SxM%2a zvPJiPY61q(@bihZQ#gR$VnD={fZ=si;j_Ysc$(4!!^E^bt~?Rb)U>i=9EfKEM5r;1&45%2>Le(xR;7Zkksq)8jo5h=zkVGj_IkdqJ&8b!sDY`@!MUMYeq2iTY(;8O^z9MYfsIJI`>bS z>i0ii(q>`|R>3qx6|f+6>!=7d-fB}ymELP3(RBclt$P z%ZH5$9QX<}QRy(#kIG$RZ+Xk;fHEgMplxuuu{?Ql#qdbdhM;|d53Zuzt;@Y)nIJ2v zETj~y%vO(;t1P2A?+~|m3LgDz1qap^h2LnaL4UoT7wu3pb6oR&mgupsLEG#&CP;%$ zj66DVc9D4w%={AxEBm6NEPThx`u+8|-g7~j7WT*bmh?x%r2Q5T2IYPkvR?)Qj3Bd& zV$v4@$_|)i2DT)9ur7m8C5JQ4k3#zm=L^VuxA1{hyXoEafh;4pEZ2y&k$vB~RMfu} zTvBsUT8J=sYO+iEUB=Jow)Lh?+HbAllw6TId{{|fEg=Arp(!PjlYjQCd6p#H33ZWm z`r49JNRT=x2RaEq{)rqAl9jdE0rp5DmKsAYz|Mlw1($ks9flVXbS2eUiRuV--VI1f zuL(!L7RQwzz6{LIU^&VIkS0XIJ_mqSG*W*VS_+V7=a3pP@X=m|0-Om5$&D1DNBEEt z?j9E3J9|lm5JuzRg)?TKo?fZ*@4c;ckJIanHwlQz1~M;0UphSjM4Ov+3D6ur*)sw9 z=DQzilmQCe%1pU691^_;I!q}5+BqqVGCF=1J>GoL2<9GdYQ|om??`gC*LqB!joW|V z=FJC-OY$dJ_G^LQ4Cg%$(zz=^Qcn6z;eoRZOWIgxM_ajmmUyS95BcoP{}{n#7XGC>kH0{cGlUo=Q z!OGaHzE!m&?+|V>l+nlz)7b^&7B&>(ftwK0!g2>`slB^#hI7?L!>h_y=2P)=&-Qci z5j&l^V*C^i6Tbt|>h-iL7HNa>T7&N`D?eqBX{B1cbMqWOla!X5gr)>MbgzFeI>vVo z|A6y3VYeN}+Edt;ZdQ#E^OU$frpyh8o}!yR@lMJvRFYm(7`#%6V&&=9;y52^Pe-#s zP<0m{fXP*>RxiWTFV+o+_!jJ3;rZSrS5tg%)4BU6fmJ=!(hw6bkp*YQQtRvS{qYv1 zXSMdzZAX!mU1Xb2+#vMMd~tm90%hVIf=evmaq zyw>ED zCsXbG{7sBe8+}y&BUFd~*WU9d(yhx(e1ix}3`FTb@1Ue46F-3-ys3Nm;Xj@P(`=P-Q!1;WZQitpHoz1)Y0?o@V@KQ;dE;|5gW4tqoVi zV#5{hZpI({I$q$3l*`LqIA|7~o2KCuUm)DTJiyAx3EJ~0HJ?PB+2d?wyL+ACQpfbO;8zgg2{a5;n*(r_}!pv5`zf<=YDQ_2O zvR8WFQW8?%$#S&zd|VKIZzPHr-I`{vJ1xJ-bSS$)CMhT5($ns-xrdk1j%gZQb{0Bs zF6#fcviN`NxbPx+c0GuA#eNCh)XcJnc6nOU!e4jSM4e)IY2505>)$E<;!@!ibD37U zf2&RaSrfoXI9S_a6ceDO?S-kv2k5BKbxR$cCyqO3N_9SB20f8#kPV-Bb`y2{kYDRD z&`L0+uu5K^e#c$Hy45TqxfVM>ze{aAaQ=bUr*I&1H<@2}kZ z+}|Gx51E9SIlno+G2Zcx_mw+=0S`w7nAo_;;HRtQZ0+OVX-N4HqV_QSFf$H9-Ha-Wq;C&78oJiMY;^eonWK{5D5+fBEf(-5U4#lO<1)5 ziSy#}worcVW{_Cm!)HGPl*!FbB{#+xOFwUrScOtcp}la?U2vdT#fjsdesqg>Bv##}F*WQ2}uL%G5!<9dQ(!q1K9MHEBWP>vEE#%3F@4V`@98%nZArt&VHE3n( zNOF+tyIPk14k_;F%%j5A3)d0|FI4_6`2N{!=^7snv>JXV!~q*`jw&#wGsNV6x8v7l zT%#F9Go)$ANUSg|+gpvJOMRu#ceuB7@?pN0y81bb?T6>B_KA1oUfX1&WvSiU^N(ex zCI3);Qc;1Xf0u@`IPjJY|2~hJOZvix0_o!-&o4yLhKI%|1im=|zkD6DvIoED^KXY7 z`i1!8m_qm=1`ihHKRCu1HMHbeEf87(*>j{dowzE6H37?ihP1}k{+AE? zsRtIL18@=}^K+!KX=4Md=;C2l^XGFW`8gjgdMx|=5%2c$X2Io!&%zEO$-yiPLwO;Y zVe1OrWGc2+yDKwtUP)&Ld0rLR(|SKccZ=7TqpfN&rn_aMKbp$+6>HPTt@IHCCG9?I11kl7T)uf97(2oA`{>-Reh6eLDyINY4ayb-##?q zL!C^wOiT|XR2)6+oW6|Wp$CkC>_0^M2(Y~}&4Yr?dn>nUP`C~`kG+Ah34ZYzBKOHx zRhKY1d0(MD09Z=cb0>`dNdYKqa4O(00a0K-TrnFHGIA1HV2FME(1^c@%BCj^H5RXf z5_^oLZqJowLpm^JZb$#0LGHPW{ z=fXWwOwUe4Bq$7U=ba3h(lpIT++MF%Yi2+c7EOPwXSrj@sqbmiU5Wnr^wYP+`gu6| z90P70P6xZAx2ctePC##N)V#3cn^AWjR0hA*)I?k!+5AF>%9G%+F3rj|5mlp^sQx|P zo~cV;iP2q*>XBV>uXnt>t{ETFs(;k>8QY2F=Le!0iJPTXl~&lw*5`;s+j)BGT2c*n zUs4+$4UW;hFgZE>DC{<+=L{}E4HVBv|^yagu4 zsBTTprg&HcX5y0?&7Oz6V?E143q$UPHNw#K86BTb@ZL;xds={-?*PpcJ5r( zHw<)W4i2z3Supn6p%M+3Ww#8>H$^P>wSt1Ih&+a>5RB1=W>T#!@F&}f^S zB+MQL6KAJ^5wRwj-;sMCO)U_n5yZU@u?V!Kc=Caqt()F?>@g90lB&c?-maK1pRp1D z>gxVGspz5?z;1mSP_|AnE|t>*MwF?XEdR73AMsA=n{+aHV9EjQf1jGZp%Dp-8ZpEg zXdtanBi_{r`0nP?F?L<_f{ee~WFn7F;++h{HOxTO-#kE_z7avPaydl!3=_$bl6I;6 zttZHL?i$T+`;lta)nj*K2#R|Ih_j#(3j5)y?`-*ejbyluxINZI-iLAsn{#+nh}V1= z#k#D-r?1uc4MT`Cd;TzbhQOK)Uj}lnQfnDTB=?Di`t_|ov*Q7q-}bzdOejk-sQtNK zLlg(L?dDW>$pM3Xj0V>1ba3A zX}EJ4*H2(ra<4h}&MP%BrCVOP47E$0XckYsdG<|pec}~C^7hBi6-mQGpPasB1Hdr5 z9rIlciU6n5hi7VY7l8!pLkz>aV7@evt%q;kb>OkDeR)==3q&ANpd`9#Ov1Hxp@T2) zY*DyzziQcujK9Uz23H{|M6vG9M2eKfTaWDzhASkYrT6$*Evv|}$I07TQK^lBOyxF=a1~)e zQ)F&+2vCL_a0AaNR-QUqV!9p8^g_Jtij#&?jLs_%l21D77 z4BX?}iX_EA@9pPpm2(=i5U^$=$jbQEgXrw1CAZacBDj6QIj53pM5>EoH0g4d5 zxeTzXE(JgUUTLQYd}Un$syQ=sV7N18ii*<~4lT(n4EItmIj_Xc+Lfhr^7TVh;As1m zc+R^wjO6w}ebo?;wmomJnDpg$p;tcOZ=bT`e~V@uA(AWM&ugMakqWySlU7k1XAT`O z+B!sk6`T7wNLXc1&@BSrZCAV(J@)YSB=Rh`>g;X8=Mj2;V6LT7j>w>-gNa((=MQ0g zw}Jp+6|@yw^1pxB*lsk`sxK4rUg zu2(P%P5WCiCCPB&NTtC7nv6MEXqZY`h?%SbeKS#okvF|q`^|D0GtxW#0#dGAj8SI{3u?C7{%sHo-)~KCl>csQT9@_dAIU%i5 zn{0UFxMJE?JEv|VL5M)dL}f}?(@5gJIjAh!jkl|Qoa)4F-#z3+l1uToe@x~WaPJtc z=bUJ$t!3&qW9~NX$eH21nH(_KUNCO(;nA0bd#RmzdWK(lq3g`xq#xZevV@VK1rLY8 zrG3e0yN1-MGx)~IoYq&N(riI+F+l$Al?+r-(&3AGlH^ z8m2e*`a99>2@*Jf$Kx5MXn-j)ERv%o#!L*{HK9_vFkab>dFtLxO#P_bd`3#@aUE); za_YC2QRfjyk{5mcW*fim_d*-QY*lVK>3nw-sivlRt0`@%T~lNj%51Iae4k+X?Tq(w z*x@s-Z;e7Ooq42{V{%bH{h{qLs9*R%V>!YMcM$#{Te?`oa14Ol6okgRx8}L3W6jQ? z>|PqT?d;gF0g}5WPuR&X$u$GJhxf_cTmD0ZnlxP%!m0wdzLEQoV}6^J zXv(?)N#g@6m9wu=)%Q4&4~bN+pGX5j678Y;*pi^-f%objVLR2t(@0>nV&k~?en|?^ z$L_K2(MVfIU3)+C*LuS;!HUlw#lbC2DEKvL9Zte$qZ{y!BDP>e#$4)BWh#jR-mH^{ zJBwA#h3=le5yq&sdITI3p8UtVM1Xgh16nQGov_^rppy>}vekP&K`Y#UIL!R7P-!%* z{vWVt{w1j%V^r~`W2C}RsMMISDf9Z+-&n_6Jf6_Z0ziqAW;Ex5Z-_$hP5?gQt|8;=4 zw7(hkZ6_%Ie|$m0@h%`C-SSt;I|!eD`n2c(69O6GF2JsWJ5Q6oN4bEWO*;w@PT}J~ zV2PVlfu9knWsZ$Ox7wkV<+eH9d|>fD=cKr z5T-_^oe3dK@V72#OX%PC-P^rmqU@y3C9VqZh!^orBS4Gz55OHpg0-nTp{jtAH&W=y zt@&=pO22z-k^G{t9YoF7=nJnleFHAIF|w&ox>6}-a;`J=#$LQX4##m)(qN=IH{+yr z@e_{2#px+oGw_(AO0DH!xVB z*1##cd)+1ktm2Zdu45C_UE@|&X__3#OqMT1FV~I2X=Bk%%TadLFLpk?obWySA|h1O z>_P~plPsOIZTWzkujQa(#{$bKWmLoP>fOOt|L{TnE78?BSHE z=y}5B`kn)&hkONbeV%-iIM)xMo1?`?xB2yyZP_b>kXSWYL*=)E z*71K7;zn@6LliSWx=2{vxTeP=K7-;^0A)N!F3@o>;XXk#%z-MzN0Ky%ei;;o2|5AA za6&~H?P7Yi;x}Qnd#;0Ad^SFBtds6`m__#9>6KyE6QiztvcXv-gI{mrRj3KrLr%c} z8AapPkWqsHfQ+7A(?ns)*35$){xEV)q$AuApd1-NIv};@e~x=wGt|?r84eqq?wEd< z|EaPuM@S`~I z9tDBdU#+@w6^p2ZSB?BkUK8j!O;sJ=dT2a_t}bk!{IR0HvY~59ZLyEt^G-%(ZV^av zSi_?PhE;MB=-*oVj1SS5TE|>l9fNzflvJJaS~}1$)v-`McKCx7w{c!gUhKtQ-vKl= z9?dwN4APxukf?g;>whk*GQ37}ue(wX6|}TmJ(r_H&R-ncGH+G;n$I) zp&G^#EVz>q-wGdql5<1)TzWZ{CHV6rX0!$?-|U#FZx^z!m8@)3u`b`+b^faP*3Q24 zp8y--55;{%iKD&opEGGWX^e^2?gxO|taAv}ZFCq4I8rxIrv8-8*L#yFFEC$Jmma)v zgR@wk9Y26;n)OK3N#Y$6!=6NTAEIHxu&PWC3#RBe;abto4pP21i*^3s=KbNH#^1A( zj&68=D+TjZa*fW_TuS=Qvr}_;85SbtLh+rH4LG$BR4Wtmb-44x8sBm#D*IBZfseRI z-;qL@^4A}MS@Od|M9EE~?OuCBV5E>y)pN}_jmn?eUe_b86Z}&@>M6!qrHBPT$guP{ z43TB}J(Yww6tMoXL8}wU9{|5}5&|oXY^lBOiV?>iYaqQmH1>l;zR;6fowR|nUY%W? zp3o|~Ey%85^1KP=0|h!DHz6I@WQ1?_fK@^&I>vVlVx8!I9yDC8_F};cw^sunTJgSL zq0vRl*IN+R?SSYB9|CXXFion$FDO5SI|&u|L?e}utRcrHKv}y}Sr_EX4%Jfm(wL>v zar*q}t>W3A_7|=Y4--N5xh7{Hy+l@o+lndN^>+Mk&`3O$2}tzGbf@G>wAg1zdZJNx zd|UsvKEH9G9Oay9ndjVJ=Vo#5$!~8Ek8T*M{>UQTMGvE4n`|19o9Kdp)7vp)U;gDq z_Ww1J5=p0%gX-TO)SR&>pMC=GS`|8(dThS1{mrmcVVTt_DDM4@;nqq#&c^nOb1->f zDi0qTsHnMO(gK^tQHvh*C8hK)J54WNWLc`NAEcinjQ!)KY?K~a0B^y1Bzi?$`*bxb1A-*FFeDk|f-!$#*|?N z2cDkHuI$;l`Go71$cw(?dul#qdUGeCu0&hgq6G&7S2`_!LrwMNQSoJ6&hjtB+>ne? zqH4u{sY`lFkJ8-zRkwEi+`V|~fdT)a>7p9{FJm5U!7hCS9qV#dV#o;?op|C|9P`U= z%kkr^+%4@_+fRc$P)YT4?A-6i8GylJAY8X zIF#-`Q{Ri)d;IOI{%-}07nSx2S;0r%?m5R8=Hgzpr@E z;L4vhbpGsTFUUiMfok5vuSCSx-zqeQLBaimV^gM{b8`5w?C|T+N%DsoPoAHiq(6J38 zKKo7)vnZN|8eR_#-+9c&F*#5-@?&Qt>mc}8KYbhTZRt@sC}9{mK5 zG+Dy5TPA=-x-h)nL(hNMCMziRKj{?jq!pHSp_fAQfFum}BY-!Bs=C*-W}0iV;@@~M z*=;&HA6Cxch1>UGAZhYZ{2nR}V6G`HA5*AAeHy8Qy*0Sa{T8w!B>JeIPT$+aM3T|KZn>;M2*nfG@e7NDpK-yAaH(FJ!p#Ky9w`4Xi zu;aj2cFr3X&fL&dP!5Py5dO_seZ+(*@$iQ0(cyi~SF{-A>k}u94pQl)n%HTmWMptxDJrLWLSgU62AZg4R-O{i6WOS*ylMsQ)TpK|(E2f!Y%XGG+} z%DC2RWXPP}=R=V+lB1J*hx6-DJg1sk>C5+hj6_){M-^) zV#Y`px=pv%ZC8*R+-6CwueiU@x>aAv_LY2uL2lUVADel`{@FV9-;P^Tj8ahkh0p;p z;+iH*_hr2WDpXV^`ezM>{Sdz*;cjyi{({b&O8#V^4oYYOSiS*Z2Dk3tyZDk2fbIAW zgHjRvyyV&f5Q~vd2n{Z+xz>Ib(c$_~CXV$6=+~ z^AEQbZbQ}FccLSc@zl@B$D4aFpa13a-qE`HU-z0F=3fwz^@ zYyG#RE14^)E}V1@H3W|;C^(ui95ZkhTY<(Xkr(Uid>N<5+1ViF^8I|ji&2qZZAXo@ zz-!BlQ>nXC5DsS(*8RM*nfH5m92|(-gKsuP`>HF#V!Y4~28P<5z_F%_deHg4P$ICZ z`M&iFV}sGuXA9ofG>SyCD_Z4TM@G)j?uM9U93^vdS(q9EXQMPL3y3>jvfT`Sl2u+v zVM=$5qZwNtCPHWBZ^XSdp}f7@C?|F(k%GDi<{xW>6c3{D6+lr zKq^I`vKui&kRZ`4L!@cdgssWR*lW*Qcg(u)BcK9auf)TSjzDXM*v2H`UG_FHsHWKNTGWwdR(SF}m_<9CX4`}vyYiP(k zsC=>`@}~y^j_}Qf-caX=F$4ju1C1>gv!Gcurm$pNlXKYNT&kD5_Ejfko(Bp%22RT$ z_VNLAA>0P;15|HHcrWe~Mv&wSlwj@08d#?n7<}^xsY)eK#BlHcq`B1&8uN86AT&7FqV7Z*igHE|o{g-8Qn@`4Xb~P%) zf^NSMsv&S6=En?OldD?(1UWwY=S-W0^xug;KKL&l_+d?W5)k_=msH<;M2C^uNc+Dd zMS-ZAw>|vI0kD68xSGndS02lZKg&S=_y3IZ6g>EE&=>Hl8#re{N9M)|2s=QW{#M*1 zypD6B7wtv5(vm|SP9H~FLN zj|2V#5At^y`mYZ7Uq+Pt&s~vqe{@Iw&)5HaU66p_DjN7Z!Bqs@c|d{7U40C0Jpe^M z;y;xALX3j0T&)XOAOFNr2#|36?YPa@Ki(}*cJ1B%Xh!^}M#I;ChVRAu4S3B7fm|Wf z44JW=GM>xt*Te;`@-SXVLGAB*Sl-8RGx^!S`m{#JgYqX={)yu}nr?r(?Xz^JerbPm; zYVkUudji{r#{Wi`__qw@U;X<3)&@a0ig5xB?UHUGL3@;2$9RESLaBDcE6rAyc%KZb z{8{x&bNi3>Y($Ax_G!$uuz@A_OU1T1#XEL-4s6IzR$&7AmrW-Lf(}rM$EcCSv zMyBmMJaNu$|2Iv;;)PrPd7-b1+ntA|}h?>cbLB4hT(OC4J4@xK3@tmIevVD$_o%Y#|e>|N|r~(8DCn{my z>8bWg8!1*nhS4qhWyJahF-RX_(-wQRJxM?Yaf$RWd87sw%iumI`A+p8Ac@UM0eqUH z98|CUlELz5ywELImUK}xsX-`VXc`@l^(YQmaU+}>(zZ5r?k`K4DO>VapnKc0ZQ9a) z0*P-2_9=YxECy+?`(~gABbip#K<`dlamlZ_a^S0}2OOf}sR*xEU2b4yfJdnG7s3~l ze97WEW|J35bl&x93`hU$vy%nosR4VZN6(YALGRcCN@JhHIzg=^XDA^Ax_M$%adwC1 z?z%zG3+Hdqbp24q2%=u<(TBqiA3jd9R94FJ`%kNsXAnY9OeZxd9MZWnVJrC+=dQzz zaLl3j9}4Z1WMSq(DZ#If8^TnaVU-uO-C$;&13`2zu6mo=@(+8qjvx+$W*j& zyEKK~`!%Z~e(N!DxZeiEHEcPNUiQ4IA){qhkD6-X85z;3blD*#dRw^O`dgp)SLWp7 z4Sc@7ecQU{^`!Xh?g369+=gdd8Co!5BfC9(pNFh2w~xzKrMp;5x4jP%xRBtnVx^d- z=6feOC5rzT_bpf+;JliL(ChHNOb;56XH_HdbNu$6LX-FV_bgI)cj>3K-Sh~1d6odC zN>4s}@s&J405n6*N_O$>5&gVPrUsh?71J%c_OylzX#4!vJM>@e-hcJl+WZ4(QQDCH z)}ln`JN<3^;qMzQwqT8bCdWTz)xH+Hd1JZH@SX&Ic!0!*HDj!FW~mp%7^u?Yk5)8Q z)Ed7o`r;EmEHj z={>8@@8HyVc7Xc{>ITD>tt3GoFd9`j{B?C#yzkB*+#jRQqybIBTKBf8g3cdj}(uRD0z}IWXtT1s}eomA;X+%^;28?q&Sh-q8>I;3mEJB!OhAe zp@L9}B!)Rx+PZ(qWi=ogr_^tt$*cFS)Bl-VZLV^WP|Z0fL&;Ou*O9E}zGcHAbC7l+ z_5iromZNhupDF`6#?0#HrJu{!2UI7i`fkK8{dmMls#>iu=92^?k{n5Ufa)`bU_o8R zdZ?jO!m`M>zUCo+RHL@{HrFxS7sSp}_l{i2|DtvL^<9y@TZhGeAu_=#UV+6#x%nhe zS8j60`-CjpGc@mBQo9#|X>qdm&QKMHWgg3Ys8ddO_&C$x#S2H%PeHH{tB#)Dp7`9`~-~rR78wL$^CX>k>`P z2Hk|l2Dzm;%6hExgH)?ax@5l5FnqT~_PL;W)1s3H!I0a^J~P}VaHWCL%iJ6xK|!wv z-VFEkc{?5|D`7f+%{f#Z<}xyNW}i^G&%QFn*vB#JLRyXr^7I_NKpcAk1Tsjm6f&N* z0?p;Yy%ceEbt7%8OI1}BQ|GzJ-gY|IL@`!s7ECnndJWnRVhEsPSbhSdi*HtFba)Xm z0SkJv(Q~rE8?nTPoO$PZL;Smuk?7jm`t;II6>k(%--E$sr8JDiCmu6N4hW3R&G>43 zhh`Lk;oO}hi;9BPu*Vp1Y{BdeZ{LEMCgoR^Rn`19Rp&RUd=Yw5t{kRi3HU;*z0XLx zc$lRG~dEgX96|>u%?{I*}}~VD7pTVqrZP< zd^__^lzx$DFXyG}%;fyzIEW9bn@rNp`K=&y9u;tjdh=5%$ItTxkOKmV=#Tg9E_!#z!h_JX-;tvCp% z6EuJVH=2>mkz8g4*AG?BNzf=;L#&@vGTp;4?_GE2IqvJ`{c-!|4a?siY26RHydXlk z0Pa{I9?Xr3QYph$)Xo^A?O5ZX5{@Q#o(^zHf(- zo?@oKrF`b}{1|hNB{QT3_y(Ior0GK~hKF|_`#f8-Y6eHKn>!ahFCPCsn{dq-HTp%8 zQxAj=@zi-_JmqC~+;@O--00Uv#$!Y;J}?U`8YAep)gMCr^xoRK(Ldc%DeudpBq_7k z_S}6ODX52rCo9vA-kC^VKj(nU9nUYm>346dJ5wRlH3$90?-D)5$Tj( z>78|%@UqOE)0MDnx=AcKT{4w%@+L*mbSm{$tjUrw%ISm|4u^04K&amJoGp)U-pM(4 zo3?O?4eW*!tAsU$y@m#zL<6n`DD}z|c#TuA083+!N2X_YjLVb{_)D6v7RPS4H^2to&wg*3 zq?I3Lcs@?`+cj8hf!mg+5mk{B|;iOO`1e_wnnNQlx zvb8iTwC}QKk}^)=rlDie^}#Vuvtdi;WJR^skH8@#WUEHyVol z_qRHJviwrX|9(n~Rt-!x=9yUt2(Ve=0XpHt*2jN#Is=S$b+p&EK^c3%<*;V1a8pao ze<5sE4ROA>o+eFbjDA~vCr-nMAgL`J;%=XhlpdwLkD1hbILR%%C&;7gH!XLKTu$;N zZp7L!h7vUjpcA1JAJA>K7nq}#G`%wVD_?u1ixJu9QE!*mABp(3C`bWY0M+RYpiR1= zf10i=fDQG$!x9{>$^aSxtxyE}xG#m_v=pU764&lds>u;g9dTw~Hd1UHxX|aExM#j| zN^SaG*S+m-l=d2VI_WC<|K5;hPP3H(GpY}(y*4~<1>mFFVs;~uN?~0Yns40AHVr|Z z>Mv8Q==)9)_g)FMf3tEfPXEF1D4TCREV-Jy7V5y2Ej8K+L=pB48c47WX33eY0Z}(z zR@FmM-9f|{tnudMJ?|b5UP4-a=QRM1(Ey7Tn3_A6h@o(X@4C8A=D zqYQ8OWbiiJ4x;z1s$a zZ=tDYJ3T(?_;yiy9a``H-Xw>SDaliNE}Z?qPW*TIqknRc3H9fby1swv8#uJ^cMX5Z zzaP~l&ap`MG@(QKusxC44O3C8$uswPxVWDGE|=5d<3?;7vQ&3%xpg1;g=i||`EDn7 zWwqzuKjn76T;+tI1F45Po6c1TAdnu}`*y7N;0rS4WI;-r5n!CJr-bfiK-uEW|guCeFBeM-%tFl`{ zPCCZ@1kGIMZ1CT||5caXs^UahH-^Qjpo<2@p=J)x9$o0G-*w`oV+tkYcKf}#2oKy8 z70e)VMUvF3ift;7<-Bd)A|=nfl)`*e%amK;OwCpXoV9K+UjIF8tc zp;E^Mz8wkN_8M{ZR;r~^m=)U>9tGPzn)(DKUzLo)9vfQJ_H%N0^hWYUgL+0bYWwz@ zcqMaL&9{eA^^{UAxz-?>@4z<~*RL!9j7p%pJ%B7Lmn;Ttm@%Sw&@{8u?N1-(i5Z>5 z=e7)sI6ag(+AE=_Pz)MG6nt|{lier07m6$avJ>>;52Qc{`b6~NcP}E*Tya8e`-*1Ahmr{~U5{J!EiL&f2I&T>ga0meq+K-4LgM;5Hb-hlUc-YjfmG>NxVss_@YT%=A1b_7!z~+>-W}onqzcpY4Lj&T} zAh)+V#=H@s&+qI%@pEBvy||M9-mceSSMxmOCj;Hn0ame_!f?evIt865hRyBJV7gOl zoxecx9kuttn4L0P(=UnBDvgMevFCzH#=4C3{LE*H%gFfW@wQKAT)VfV z?w$Z@TmvsibU7}!80!Nm=Z(5!ch=t@^}V&T{-F{hV&9t- ze#e(@=HA3_lP?@apr6=&=7)uN)}}Q~*#_Qtah&{Ye2~ZWXZl>D^HM8E>pEPMH0vd_8$cv63VeelRZF5!+@nB%%5o8RvBZ zlXm<;e-cLiOV6Y=gPjlpXN1UoPh!XZF@qh^_6spJhF`o0@N4UvdeiLtFeVFa%&38n zVKupcx|BZ!Lfi+VgN%T%CS}vYSxtIu&}Tn? zS-N1AllMu@%G0AF!gmk1?LpNIJ%LMA0bf%{hP|Bw()MuF+C4QeVV}qHGW@2KahsuW z%SDdIGjis=5$%benS(2WTeOsrhf3S*U%WiRcIX%o-o{^uZw0slfU&;PjF5m5Q3E7; zzG(Y`ABmu;iKt4T$qXP1zFkl(lQ`j61DJHq5%f#(MdqdNo?)c2mQL1_svGzJ6!sIb z5boUF!skE=CyG-^O+uO30wQL!9 zsCeTIH5H6p@UCDaC|M&eHU*b5HkaBMr8jPG# z--fOk$Wk9*HZEppOG{u+G{sIXc4gV5oVW@m-j6AH{C8&eY4)5E6jb4zgT*W)djA;st-o!yIf=+$DB@ys=ncJGs{%u z(v08s)Ps5cFOt5BCm(dW9MMJWBteSi9BH&A_!T+MmLZZSo{Xj;+lZobvKn>QUbu7@ zc-xhZ+@$I5Y}4J;TD$I{Wv-{wQDcOIh%rch*T|$50YI(G3H<&QtQB)*L7iFinuQjt zJXoSI*DNctS1l{vs*v2e`KtD-N-u|tsd^h`zUZfIk(Xs>!vf}jvGW?pXSUnQ0Q$s` zGcgfQEy35=F7Sa>KEzGIy5(`iA-M^{dR#Xw@G`p{r_4mgZ`#@0x2#5c`yCF|wTrgR8fx32pIH+Wb$sme zgxFEBE4O43-0?LJEp=N?NdS8%2ucJX8esSZH@wC>kt%>4b-AfPN&q0R{W;$nA5B2Q z9IIszuPE@*boAT+hN}c@(LjcSM*o)`+`qzr|E1T6bUZ9n%G7PkKrv2fl8*`)n3kD} zfI(_o`M^&6o)RBz-zNy3-w^U=!REXW9tWXd(ddCPK*ZWkY8EaYDUN?vgs-XjV34Sk zoQOZkt9I1}!TVKpDefQIMX$jQ|Hsqn|8GJ~|EoUlp9n%xKu+_&MezDRKFx~ZMA8B7dtB%AispS478MS^c zi(m1*A|i=r4g)Hhc67YLE{HNwYT7ogF{F(ahawyw7BrAZkMpxU&s!=Hu6??q54yn^ z#wj##Wtb@7Y*uvYKj0>Dsvh!Xj63cYi_Np~sI5;fSUo-$g=O4GP%+$(dAy>l6noQ;P$F~eMftW-&UH#bMbtB$`SI@lZ=H1S-?RJjp zcU6`H*nJ$(K1*bsK{DH!v6#l7SP_s@A#uwWn-6QroJ-g@{pp?;@3MOwd=C#YVo0lk zRuGw+G)*6BBZ`N-ykzJ8&NT9Rmq&o@zM2XoRz0+U0ho04+$0>5{JNa8y$@?uxIYq%(*=#v@D6t%;!^D>qYo(ZJFP324`iA zYMDg6oNjyfK%|_b&wQUkbaLD9wUBee(WZ#u*&!<{)x;=>RqGGhKa+Npf9e^jv5=!* z(5ld0UUACs)Zr)iJHL_s^q&t4`CzHG{kjcL14ATvhPT%t4PreMv3_hdE1ueO-G(Q2^zRZ$5;k z)?h%BE-Q=s0@7~}b|Kw8X}97oJ@CahQHN&9$0|~4n-mE+F20260ouH2u-Fa=RE>OE zeSX(1m(D@AnR~Y_bM%XC3Nx)=tNZG;ynUW53{u|tp>M*D2R@vfGwa{pP*I!HJ3H2v zVl4uMxzBwn7Bg7^`0MHk%=;ydcqS}X#>||bE14PR;Xcz0Ldu1R9j<0I?NFWasozFL z?uT!;Y}jz{BCno*I#&UUg5J?E$pA>MBuR&8y7ytNX|H_54RfBJ+nXWtDdETb&B=`d zi+qUd{a}3c9}OV>v#2!1K<0YK{U9SV)(8cqbx13y4W&87h3c>b zHm!HP9`7Njr@Y6;d<(IWMAs!m626v3>Bvrwngd$@^M2_Z=LG;!PFvon3;$F%wH%$>az?dKk|IvSIx^KlnLE zml+js489G?k#oUEo`ond@-8F2G=acKgu9z|km>>K9?X4Cf8eKx%z@n+^9toz$^~0} z>A!Ph<+&v!PlABkT-HuvIBqxjbg=~sx4A#x&*JEz-)icjBouEcSu5te&QV>~STf6O zg_Y8*2mO{RhfDmetG;hCcAOeWVRc36l8?lh$hmG&3|uhQ)S6%iyz_GTO#B z4qWQx@G-_cEtMIAVe%SzUCsB#M)kCgONMRV(DiNeeYF>@??4%G9|iEYSQNv7LKf?8 zfhEf8`#6dPXO4`kFpu1u>ONeptp4V8D(yZ>V`K2X$pzz&q(X2HOwrH|5(hvKtnZ9x zP-$BVz0D||=mq(n#l#;$o=n2`(7jnNqh76|`bj5V* z98wUHYdwUzi`9Of|ITf{Wkpgi8Ff+|A(wozGs7U&@&m$@AxBM)#$O_Zk4pkoP&rM& zs}_NDt!jD?eAW_H+xx^!?TW5m$CQ6bTiP4#USF4ig6IRcUzyw0MSbkFja>Bi-*qLW zdDHGoH#}b3JxR4S-ZOwr1efOv)Dy%2_PT5)5Zu!V_%dcmyLrHwa&X_{qt4&CuYVyz zLW{Sp-Z4hKUE)XqR7M$;TFutK5dMTM*dwnR>(g58M&CS#Y~CI|JVQQya_^nPc;PO= z4BJ(2Rn}`%6^Y@;&ynL&Nzo{t#{Fy)Q2dWY$8v5?$Xy?3+?O|7-QsI2=6rCBuQ{^W zygof}PXq54Me`cpMQzR`2VK+a&$;=`jQEjNFOtd7c&??o-}Lf@6RL>1^N0NpB61EA zXP3=DfGonFBZ+yjvO=SitBUpI1Wt~V1sb;(sa@%alRROb_F4$RTdl(T{aIrJtAU$< zlf{kU`2#q@Oske#o^h3OlL2aH0O7cx>*#t`A2LTU+Ve2dY3IU1R)sh~NViRfj&e@Fuzmr7b-3{UmRN3}{!;C$->$2l zyQUa)NhP(#ne*PyNKo;HzI9bS_hXP_TENvgcs*^fCIGwW{9z=b+PT547_ZdKcFLOb_ooH$t<{Q`v zhTp+&;548f_y%L=1fC;?ndZ+U`1vnDhVT~xl=Qt9h=nQ$;zT?w1||{ilQ~%67g3rC zXRE8SxBl6WRd`o!!=j?#Se>sVmi8QKRa#h7}^%nupd_-Mq5q5lC znRNSZ;?#M3y?nWHFR9LUxR~Y1K+i`oTuq@+#!@TGNR~m2UKkX1weo7o+=l4w8oQ9* zHTq5G^ygGdZO##R2>%jTubtN35axn{>VtD+__)cJnKtYAr(rV%=UB{%`bZ=GF{+7hI@8Lq8*UpP6F||=j z>$mUO=^s{wH}41XF7LZJ3cMh0Y4jWEzymCN1tnVB8%+Z;WhriRzcni_{t)$den(@r z3Wq2i;e{?_T)D|BAHb1Q1ka{+51yLaq(5k+iaqr*W0|ITC%~~|ju7K$JY%G#`VcbudZ?!Hr|-3QrCe@g`))0L{>bB*`R21bRKDBsX(nK0 zaydsBRd6(2RMlqafSaRK^{c+6h199R#a*;ii&4oS!{+s}Yh$D_zoE}#R#nEgfehEm z{ug560RHcy7=i=FHX|O9s4=%t0QjUk#xqT6p(Po3L3lgG^1`a)>AqH%{Ep17#BQS_ zJtfJqsmHcl#MEzess(z}-~m7BX4*oK0kHCZDDzZ?pK!ZQpYJ#_DtJ_FiDtiZtn&2N z3S(J6(sk{Mln6zM84San0BO|BgOrL71efrOArrKr2m|k8pQeMiOZDv;99;#urt0K{ zz3xXYyiYwMe(kcqv{I5QgV-4WDWTih#5(})L5JaXRi(XSYbIT9aE*9eS6x?Y<$H$^ za_JuK01vn3k4`BMrw;5;6PTBtoZX-!ppnSj^>OG;FX-^&R3APUjto88rd~qDk08tU zEm~!nH)lrC8Ua3ME!*Edx2Z)4Gob!e31Qx zvyIci*H0;4M~qglIUMX}^;D~>Hr&foPk?Qdc49ag21M0Z7C+Uk@bU+b2>qy~X`}ih zDp_Ns@@HN2mwQB*dVnDuQQgH*v4r+r&D&a^8}XQeZLiBYW7OLa^Qd3!1>r;Yk+*OI zv1dwT45XvP+KQj5LNm5wX{h=*3y(m{+cP;@_0Mzdx2`3g4!P0GdV`O=m1mF(^h8q` zJ6-8!xVGi-M6zltz2w~uj9`;mPRw(m_Uy)h!px&t%B+$th$VDhol@1;^hrEd4?(H{w zTSsSDh)V1k{3HCrc0);18SKU9mLzl=ylXjuwVPRu@`8&(Z@ofr`lbL;T-Qyo-!s`6 z+LPr$w0sl|8?akPKT#D?kisK_@;4Yl}n z*%&`GKMr^aJ%IWzCv^HJ%#{tZIuU{{!B&bbjJVRJSZ`4L5n`W0yv1%Y^xU8J$hvI1 zuJ5Oc)gCr&>OwAg{pkDcyKi7ES>T7%vDP`6c;%w_VUsWDKvxc+A51~=FpN{D5iJ-V2rq0x zrk;;?E!(^2^Ygmxvai`^<8Z|9?Kk>IgJU7$HvjfI~V}gk_ zor{owu7MKExD|K(U!14-BgU=2_mKdyth2a(kY%OL1u`Q*m!h!MfBO0(VjC9W?>#Jl zM_Bjge;^6|vjo5*Hm8TYSMTWe#EXc%Sei1pP*F9#QSmaX^oucbx(7k2xcTXM0A86c zC48_(k)dSq-7d6bd^T;VK1XMycDj30peC+3>_n7M?W9;P^O>Fv!z(Szz5Z@f()-@Q z%5IIZA9HS+`zRha2VcJRgVwZg`XR*^uxSM`;ewcwUiZ&lLD|OZ*=Or&S5n_T@4w(* zeg-Y%9^f&M+9oWpxM$;j<(kIn6K)>79Tw;AhM%yHzR(1^#cTqv;m6;j6iZL&beG5M zFKW~(*AFjtNNX;*kEyL^*_MaG@6@h1`|L>Uk>NHf*sWzR1>Pz(nHK(-e_V^oRgj2x9`J)j*}{?C3E+zRpCy6 zYsaJZsFW+3MCmD#0_gBq19WRut z=^si!8XVgx?<^ap_HyA@J#`l-OJXSJ^?)H#R9(z0zTjEzE!KwF(t}JTU9QbCHb2Ih zNf^LhL+AN6adjxhocr!$IfkZO>0$_OK_uhl5@~TzGYM4_j558(+EzJuE=0F{45gjC zmHS<+7Kh3LS0FcE0k#*sy)2v|RCf-1yj<32ClTnn&*hpA_UJk&7E&UAY*o#f8JicNjr!m$M=>9^%-IZ^q-Iv(L5=M7tzTu8!fgzI@s$F27e7$}Af&Nw!Y6moJ z)m%SOGGBMDVT8R5*8?U|fdPw}(pB0|+NW2YunroGW8e@Y0i0@<_%oqqG= zz4De;M_2b#QXON4zAvJaV3NooCI^F?iDm4hA7mUFU`P@X0-kxIl=t^|>MAP}FJG}d z?=p0M-Axv2zfjD+QNt`C5Z_`FrMElSA;lP0l+}#`)GIxa!CCTUEUJX6C zhS6no04WybFfjTT4 zrgd62GfSV1j%FwgHi=Qi+9c5N)lz3B7AKX84NYNTuH=kmqiJ441#ZRt?9_D@j}Yi~ zL4A(smsYKUP;}!td&kuHc5~L?;wfn7gFG_{-K2z)?r`&r9=-d zq~Zdm1tirjXy~}UouAK?AaX|sS4MEFsci1K7d)b4v}3Os?d+0a@9dtq=}aWRm>Rzf z#PiK(nO+sM*`nIRwDqi@Gz~G)l}_1&;7=l#T@Uj;-NB>3{YnRL>V?4ng9lAH@vE>N z%n0|rgB1wV_Vc3HbY{T!ADz64L=Z08Em{UoUpqVC9FIZ(!{ZN8JJ7(u}i4i zNR6g}#Rzf6=_Zr+kHh_`716~p&g?krA7B0VUON`)xa$Rv0V@M_6*npm@XR{Y!U!1` zGpSoChDT7%AK!ZOCjF!9p2zh`QK%5%TT-Dr>JM{7GtNeg5?%@;>@bn%t~wY3YkvN|m!*|$4K^$>fAkFMJH0=_(B%_IMuhx?=2{@-;dwt-wxNfLy*>mcfzvkY;v@MCbY z_HAJEgMEL(WKLq&=5Va^fA3KGOI5PJP!ass_r+`nmR@z^r0=3K2&!#55Su}bxWylY zJ19s=j8UllYl`q?DLIv?Hvz(RItW4Q{|_=<+EBRBQ(rN#05&Eb(;|=gDvGYMWTxY` zfk67nFg_B81#2gR@FP)mw20Mh6Y~?c+V6!v`ky1Me~r9;{r>wD``=kkK?AVW>AyDs z-}Su52BaRuyMDs7LHzGu#QIhWcu@aSi*P20zW>)p{I{Bj|7z3m|9||SH4J|gvJ=1> z`oBh!`)A8jfA%<$zo1U?Mg;73Nh}}c%Tp+n)p}!UQ`3w7j$+J+zlmao82*Gk874%d zVo^WNgdO<_bJp`^O4KmF1lQ*G`Doo^TnG&j1g*#RJ*tLXg)x?X^Jz=I;z=U_1Q4M*TY+kk1Z zA$Y3N6+mAj>!BQOcAdqa4RG#V3?3keZ0-Q&{Iyrv*2DkR3JTj~vqq+B#Ue4z*jr$%!}OgV-SjF0~wS<%UwBNv2jg@Nc0=^ zuU^%M=fiZYrR+XYg#FDi$^?o%7$;vLgE75O2N2#6^^y%i#fSUSgMyTgJNazJez4!# zH=yw5?8w_)7gsWz%mBu8A6&&qFrCHQMZIC@r#uqJ+Uc=U`JqWGosq!3B{a!TwmoR3 z;Wh5gKbRC6Rb#MQ!%kD%I)6dqn7B1xA+ODhJBwu+^KSKdE(_1MGH&uRC&9Z~0#BTO zOzvZtFWth4i=^UAIsXV{aa;Lw59GRiGs=UVT13+U$AvI1F`JwGM58IMUT=2Y`Q~n& zM|D2*X_TFD-J$awOd59bU{Bl*(+7_O55df(!>r!-=dDL-d$Cg zvJCDKD9(qI`&hhNLHK9~F~Rq#VbCOad%2~~CPH$B zcN|JIJsbG!z50)@gAt2&S`-X)9{#>)HX9I7I5Yzo~0nWjL6dL=wgnG{7RQIAy;8 zVGL&v+!ur(eeUEfFdcl=EL> zTJ%xGrwBd_@fm_$In0~#-8SLN^Cwpt&s88Np1e0Yr7rI>!rvb!^Rf8{Aubh??_&s~ z$i@sIn`vfhDr?tVub1CW!7I8~-cg zuqNaxnI$aIxv6Tg)<^t%06DMT+3RF;-OgPIQBP`8(<|Yyk-Pgp^K29*+acX-V z5TCI`z!oiKy^%n*J8pFz2%PuV0HfJ6m(2T~%qiw~i}xuDMM-O;Ld4zqDoPovn3fM< zsBa%QCp==vg=`!ZK&T4a2UP|t_cmF{?fIa2_JPWQ7dj?W4<7G=;V4NKyc%2>B)7V5m&Gg%iEmhJPxMb18?HI*Fj*PZiIjdZRGmBSXm)bQyP&D+ zRqZ`9{z0|$~_sOZ!!F8k0K z8Ew&G)MS0a9_Rx%H4rHCNH#K`;875Q#7ueY@^mWrJGzp>tXW)IuCg}^x^`DKeUY

Jw01V9^IL8xjO52LH6OF{v(j6|>z_U9+M*A8lAX+B3P6 zly*6pz-5KuWzC>2`;NJ{5o&D~`iR&BY2kW@WO(P;DcyUpgKo7qE|{@Tv+Pgo4*qoG zvNKToK`{(eLCTuY)$$WYUj|F)%M}!PD<+k&dj40}|J2P?5cb=wHiLN*4HT7w&^5KG zgy8-OTW&V~2}>)T2k^+Ab%vw^)rGY+kbdJ6P&ai?1sYkK%J{_a!fyA1=I>*UMb^BS zP+pY}Hu6{tB`{D#e2Jy_tKJ4bq@$}iPDxY>i{S-k61<96xo6ha$DI@sn6WjKwA3lA+mQnq>3 z#LXm2Ra16HNCjF^zf5q~!{mb9hX4O<*o$eauFyMCHv>IqfdWpWT zIQX_ZTVaSxqeX7kcFYDs2AMj?w zEnJzK(^CqO%P}Fvim1w_v{(!CrJE9AdO5$kbO2OeZJxRab~>jB)K7(*J@C=+6$-9p zg{xe={@qUYnUXu`{W+HQFkojsd=?DV{^xS}DvNLs^{+*6d6n(I3~jK9-Y~Oj zR1>9DD9Z^=runl$Sv2*Qd_#`x?bVB4yJR*#wwEIApWe3R9baOMK9L>4;zfXy9zuJ- zCpt>Gtn1!k$-8g3#ARoyIaM@=3}~%KWET^rJ>Oo=`1%I7Q(jL!3MESLLPKhaWU&}0 zfbkJ=9hL%6Yp*|b)=9oLTyewrvK@KFIkS1x8C`^Vj=7A6^rl-8HGPZClzEalwuO1N zbyF-=^Zx2-GQVZ}>89ai2jtb(hS{UfCep(~S%Z;8q5>qi}T-X&E2JSQ0GNz>mP=8~o1#K8Ml!vzs zAdk^EKX4NrqwlQ7i5H9en(z^-;AlNtv*T(=o-^CK-1Va6XGI)!_TKH+y1$yso~p$A zRo>Z+cs)YVCi!kh2b;BT`ji*;D&q^EIi3je)HoiO;PF{kE$zJ_%;<10CM?JL-AImO z^~m;`vX$dFS=psShhUlVcsM|GxIa5I7q+LF6v`$isO3F3=CGNUUl;Gog+RbVp4K~n@dTw)R4ilfdaJJp zL#jTz?PlStx@FPPr|DihkN$+^xp51!Pn17h&4>3Qe(yKKwD0%{Lttjg!oXt0uOV1Q zxY?T^`tZQ~Zn;iV%vgK_&@$!KwD#>Vb3f`?l71~qYPf9e@DA=l{SjMvQnIQI-Ct(>1s5>`N@%q94i4{U&2h;GUd`1lj%i5p$+LI|wAK)np}d+ao0V_xT%tg<^e zF_o5mgXqt*TQEu;-GU1=yE?{ZHIt&c4Rm|w;N+(k3%J{zSELNN`E|XXCl!nb)kHM0(k9aplc|q{;y@M83DIYciEGXiR z$WZ`Dmf{Cp$CBVR%{61#%^B2o_;@O$yu8o@3gLdhNEJd8#82hDouDg&=gZjpT#1Uy zp*>sbK0Mh}Z>~?B`4S*UxTgxqbS)l4T}J%+@F;|t_UM8JL1=t*PHpLR%G+hFpi>cd zE%$WQV6F}vs}t1lSM1&uS*pZW%04KFZUeJMX0)prG(F}knb%8*yZ9G>(B92)%g zUg`0IZ8)5WVo0KXjpDR{6Iz^DlE#7Fv}7^Tc=vR;nbO^;F3(!|`CwWkU1+%30W>&* z)%pY+92B;NnI530w_L4{fRm`c@yGpr&X!#ue>9n57U#SrreKx(@Z1wX>_KcH6WkK) z!W#ALw8dlZ+WAh2YUIw3j$Q9+YdyccpTWG69e9EbMZaTT-$4+^5NW9!2hlMInw8j3 znE6O1{Rlb%*{d=W8oO8tCt0}C4FeF8{>zKS z?3B1aNy-ooa!u~GF+GMfGp~Y6zkcn}6|L_Nt3@wkX5{ea!CN0tDX0UNUks6U)&keP zEl}7XwFy%b5Zm>o=tn+$ju#K|$*5V7ZzBjEsq`H<%&H*T_7B(?fK=!TGXn%avv`T0 zuunsU0NJ}>&78EM#QhPwLjD#|wt*8ZJFq`AuVB_dt{Lk^2mNeOu9&ylDEB_P9DdhN z*nndVW_!eeUt!W&kk>b0R@Kqt-x)$mtkVs2BxY2T@|~5lSj_(Uug;hJ!JNqdE#dGN z4AW`x>f{eCwGO}lPFUg~YqVH!+d@pax5Ij~>|G4^i***dCrw_ismVz%`*RWD`fv;J zaCUWR-Ep%}j8?%lFkWD?_?cE*{G=(gcB#)*HuEm1CG!2%d-A_?d`{2V`hlr~y|S34 zJUGcA$Gu(e4v$0euq*2aqnw3!+c2hNA2?@7a??DxIv3`#>aEnS)%b?_t{_6~biFf# ziE+XmNHL0UQ&M~RgGXm?BN`q|EeMQ-mYkwa4~Ap@7QvT0)k?R8I72x z^)hRal40s~_30g9b`|4x7o3zIH#+RkF~FZcYIIJZVfXbxfVl?&Q=JR!l@69>#*D#` z+=EliftX_0#qr`!xzww*VgcoZ$<=>v6n;yh%H+2GCL4ubh{09Lam{mZMiX zes@=QL*)0jf+{fB)#*VHQ6Q=(GFe!I!3geniGSHk-16t7*zeDDX&o3K zL~G2*O$7)ZU37Jsxi2MB@5(<$7*V<)6q->T-Db)x!VvG_HAYk}*HsNih<1jV7fl=? zJlbPIk*hmf@4aI5+Tr2VT{dI{L*g;r1`8TzdFx0MyesDjRUcS#_NJuKMdc5=Xh(up zlm+ShF$;s~BlDX8sEmre;w1SI<%~_#mR7NKXsd*r=!;KI-&1tH2;9mo5r)@>FgR)_ z<}I4wj;2d3pjLHZtbrLYv-oRwC{eOm@crNbziu)PAa=|GhWfLn>VRa6 zDUHu%hn9EWO@E`)jhlZ?h??3N9Apb|Q&X)5&U;PhU7)0tQ9Dps!z*nEb}-T-BU}$# zJI{7tt^%bX)R+otY=kBPIZ#EFLUXOD#&L^Fd_g-l(tWI4F7bTLP;Lb7;loe2I?_)|5ShirxF(L?8iwo#lI0hJ?s<;o|6!}0eWVwUUU44Mg zUjGR*0%v7O{e*$lUF`cSRtI(5v-~m^c}w#&OziORuvU&|A?3&q;~o2Z)DK~K^S7Al z!<1-bJR9>x7^WQ4Vg(-aq9M%%x?VEj2?CfVC0YNlOH|jy>6`9K`Sx#gRtm?Cx4V1r z73p10rsASYEp*Rk_#UqY7vn%PF3R*1<=$ys;#w_Zp_Jo)<$RKjLxK1MvKcrsm$XO2Gr``h)q zA*C6}exwj2X+r6XT^)B6JNm)frE*}w`|M?{7oD$83*UrsJ6WF1aIh}(9~)jTefyo$ zN2BM+)8;H2xRw>OkC?3gWxg`wSmcy)llKShdSO%=di>MhJ!=>yEEJ&$98Gs1l8HyDy z6)#}9Jy@Q<^wC{1)mLUI-z7%n2&)(sxZKM!xmS)K59$1+d=VmeiX2qAH0WOdCqk zPt75!;ZXtf(!N`S?W!{9L}`hacL+3*f!e{5MHj@Pmb^7Wi+nAJD{8E-vr-WvGyDdFiz24nR|Sl^wO za|dJP`Lp^nC33YM4WNbhRivkqbJ8b!s2G+sK(T&F?iPS0+avI6HKz9e(cYM+y-k>5 z^_Btxn5Q9#|LX3}zj2{(FUHY*F)iniForeMKr!x+kOw%AEM+aTcOpC1r>v}8gYJ!9 zwA6StO09c;uj(@FxsG@@>-PSVENg{Pi?W>N1xE5r@GWC_?*SF`$%lnv(jF^LAJ2y$ zOW2RQ$RPgjgcX0~TqOu#k5QGFw`Vb)zH~)Au+sz0Lm1yo$czq#=N__TfmiWDBp`O= zL)6DJl(1t|pHi~zf-I%FN;4gddHC;9Q8{z50>ouMoQVl07VMH%L>U6`1QqEj^<3L)u(H!N{-X$B4`mO6JC*6~X;e!9}f&Z6N zy1of#Pvw&FrZ=?gstQO*(Pu^PJ+_bL{%N5Vu({zM(w=1*!%{+cZ20uexOKjt$qeGSh6TlnADc0ug-?Y!DUfA#?ECJ>a4Ih!}3Dhpt2}p^MR$lD&(W zsqcmuC%%P5_-pl!3*Gqae(Af82wet90msGSw+CN3BGeio^?{-Kq;*mDhQx{6=d~)U zc2)6^t*uPIJoNWqe}_~B!P_yUD1(<-h6LjPRJocEcPgA5po)rHa2Y7dQF?lI_oV^F z`_n&RAoU7P$s;%0bWLgx;CDh|_Efn_b%$9b;sy3hbEb=$#>1D88BV|2v(K1Z)NIsgKqVh10_sTPvY7N|$xxaM-@$3w@rP zLml^OeLf!hDl2{AdD+3&Ka4fMf{vmthNuG(bnzK>*#rDQHMro+hd^IJTdhJDsoKP# zh?lQr4`nIy9z5G%(z1J`A0@yN5B4H)$IA5U%abPHt(yl_J{mhewLRhDC3&dlV9Gvg zjy%&Yxk{u0>)jMT>+qGVx=Af4oQM&38a;lou6}q`$?=%2jBIVYXIesqsSXF<2ktfm zRg`-HxV#gR?Fh*93Wnj93MI1BK%x({IN%J~8Wc+%jRu)~GajtkexTV6N_akxe!@CE zfPD`QV+RK!C>Y=!CiH&7l0I;$E(n4pu^$3JJf|u}rGadDTX&7t{1m#u3>csF3Ft}W zO1Lh5cfVbl8Go6;(GDjj4j6^Uh;0~WZ}e*|)DF$kUg_^-rxzN^Y!?TLUWwVb7FZ=+ zI{%~7)$+lM!!*qq%(e)gU{#{qgFqJ|mK#F1(1KpZFDb8@EAk^1zQFbe*;*TF!FI~% zl!Sp{?8tMZGO6&T2~HQ(w^!u0@=lJu0;?7`xyA zJ~cP=>-(0E`gY+If_>9)d6Q5XGNx3s^U)D(+Ktls{2kA;#8DysN9MW?}F9d?6n4-Wl_r<76M<~0B?(gz-{8_rhJdn^i7i9 zjsI{U%;vi0vmDx(W5-60Nv31V_5zXC#vj-C!#aM#1TRLk6IM?*0mR~V7T9#1UdyNi zEE@w(9e)3Qs*}Y>!6ucju6rt98qr7$H&A{M$@fOih}Q(RZqR5mG70+! z6^-&QD&BexAf~Q#LC>`wohd4l+il z_xDYW2X659hc+k%I%TyN)}Ps#`CX^j5GR_Oc%4jLDX}^65-CqJ1YpwDY+taIsthrA z8gQFYv0>imIKno4=jZbg3SL`l_IUf{Puj_+30f_FGn1$=TAMzsxr$m;r5i(*wBwKv z*)m>Q7oTfR$-cc9Gg%nOU!ASW=Q_kD*tt#n-F$0QNQDro_7+{8AwiX=bww{ka0Q>W z{gDH&^PqU%&_+7A_=lu%dKa6A#hX4b49UK6y0pY%`RqXF;yKZv z^L0vhZ#4NII=>S}j8fyYtWLdNFb9&pH0HZcOe|6#a;H81g?-;~;%~~eqSPfW$N<^b z2i}tt-)?nUC;6}|AaAo@P)=nCBS=04bU&wv_b=vclBxD>#u5u-&I3i;%O4-V29l2P zuR^saHiF!9W}6hKxg^y{hPG>gM}#62^kio9>alHRlKdy%PmT>A>X%6tS1ewIvDx_r z6Nrw4_6B{A9Bk`tYSJ*6Jq-`^Il%RlLWJ-C?EX$6l567AYw3HTChPF$HZ0?Hbqr|j zEnvvg_X3iB`Sw&PwD~j0to24KU@wauGs})un~S_N&6)cxkYu1g(uVoXgyV;(*pB7f zD8Z&fA&;TB_9=nDMKLQ&mASUlg9nz%eQb6w27kF!rpDI7ahZ3;5;~2pTxM>?R=Kly zHPEcRsh-lLwUc0mp7kwk{*R1MBl7{U+0*b*V_GB72qDC>IH{dACBbza*>VHsHMwm; zv~G=CJKw08Znxez-5|@m2LIQ;QO(#%gpZ<0eenxx1h@wVrXl5JiBSVL$D;D1vQIgd z!^c$6P@zR;cgog+G2{C1GlUvHoRN@0iJjr_nu`*0JK! zCf{l`e-SG11x~1Z>!f$)aW=hdiqFs6y5?oKH&2VxPRi`=TZ7$EJiCX{ZG<~m&WK-u z3%vE__cr*pnHR52rDD^9T>jyL_degMpOIoN{qacKKbBty1a=-L4+O-aXfGfP#j-tT z=qt7z75||L41lFtbXlQ(}79W4NX`>BZ8+aAa|mpS9?x-ukTYRqBZ;^ z%{u8#e+!?tY?6q-ZOoZ#Y;sL2?a~J!F>;^OEK*@85EUbl9bYY?@a)R^^-t!QB8B(I z)hmAmFeHSph`7iGY)-Qb^h z8Vmn@H1l^u6D|Ts>6B(hVu;-buFWC?l$@wsms1yp|o0ZrH` z>SQ9R89^3k_A3pJV)1Kr%26r`B)auK9`Gx1yUodYpD!JT`;fEIbrL#4mzl9IY+g%^ z!ML00^&CDQ8hS^gS>o`;G!xf=i}|Hn*f@4Y0md&XfG03<_LhUB}T zTnce@k&S9X3O+N;hPh($4@d;8Uz%H}z9N`(a?PD6_2AO8&{?u)fL?0NEbjSd zTPH27Hh1ssHx50R%m~+(4deWOK9Rf{^dmfo%c6@2mq54$rCNRTW$l^opYjY+v%jzx zI(z2gOQR0)Eqhv8xYIhq0ra;qg|z&polc_^n?3 zz3MxC7Ms+cIV!!eaJXJ(telaNk>_zHaWq5!h^^9lWmSznP=NSvJD7fue9<88pRnU7 zBIqg>yvYirSj zoCsJIa^lzavQK)F4=-M7HvX?Jq$=W1yYli^|Ep_&K@Kz!vPGv6E)zyWr`_Z6(oj#A z{VPJd0UzM+ExBTq}MmhxHfCs1YM2w8Y_jvOEN5|S>;cl zD$ClarBDY9d~$Mcml}7{Mw-!E|EJdkPK00oGxtlRGwe7sEkcNart0T>Peh7`=~Inr z)DHNg=O%Ym;TzM=IiKr3aJ8N7H3wxsJK6HLhic3?af=Qb8v2c>+^ik;Sg>z#AWwV)L&!a45r!%aA0k7HZFuUny`3_wiNYF}xa}CbqxZ#4H8EUc~3i$7N zbgx@nFLxi>c0qFK-SWBK1=i_NjgA8&uiMUf|i+tVy1x0Iz6{lo2+;r`_1 z97X6wOd%+CzL6-3Ib6ykLK12Qv=0VDO(!mnWhUJiQ=ZuDf!*!2t=`{a@l}Q++6iP3 zzbBDPm;_9fb{i(ezOZ~f8IJ%-iCFDvapfh=X5JC2ES_%VN{P#tO4BXa*fo3pyd5~h zYC%xWq~69*&isUJna`7j41tu#m}Q*rh&ev%`>FaD9z}=Zx5PXUelhm?3*Y$>hTb?4 z!34A6z_39^vr`PWR~SIPt1m`TKh;=Cv5aP@66t!Q$Ja$S?hm=BG)QaAH+C`V3 zz5T}c3y6T@KG>>a?)Y;6FsL5YM3akN zW7rviRaJFVLbSg8v{LwyF*Dnm-n~;+W^NbR)wZTZrNcOqE(7ikuHP;HAH;5$KXT3m zzZvMGyWk6)Acl>E0F1z?MU}s^iUq_zgEjPJUI)XVl6~)!1267LIe+;W-N<%hmja zyqI5=KR9-zV{+HPn%7PVGpRFUdar^M&o%k)50sTQI+p@J`2zt)OMfk&>Y_yiRf&YU z9asuhyJXnD2N$Wz4;uq0#%>D>kq0Us%Wm9bwt9^&ERY7g_te$J>V<{|2zCfx5s|Sv zC~}ktZS#`e(;ub;;#xFShmXz>37s- z3h?Jd2nRb%tHuJZgC=KEIeW)VR8AE$&US!=uU!$-L-%Cb1@S%Hb@}oL_D}C(r&qts ze#;Gv8xXj5?;L_cDOH^k6?NpS7rAFdMariTcM2uxnCeE!APNj<{}z*N7-coos4 zx`kW{jyMvJs?|qO`bdCQTQgN5Uu+B&=Y7B@thV#Z%HCuL&)09>1ED1|x*4mVCB#fa zazGhm;}qPpfv|lfJ?EejM?>#@J#9M!j~@4n>Rr*Lr`9{y_ zFxxM{Ao`6+H)97>Nx?Za59@EGOtll>%RWdc-PuN5T$6UOy$MVF;`>D3BV~N%B@??6 z1cySBJCSE2;YWYXtNwrRi+ux3ctl^o{32RlM=ha#!irf%Xkac{RN71J9vqcZ@?hh9^Y&}J?Z7paIUY@jjqZVI`9hG! zt9VJoq_*_IA$Jlg&h}nSbA7F&`vsY2w2)i17gBEA5wGxTZUht}^CvLd(ZVR=b6{S( zIvtPAO}AqaNYyJ_7An&}2S2B6GpN59QVaFK8yYA^u{NIM9e7Iv)fAP7g)VHgW5UVU4%RKN!Mb~ zmBEQ;y(8W|p}sH-{q|f%XJbp+r|4*O37TSQ2_50}>b==_lv&sWclC0)HZR85m$yCE zfOdKyyf-Ojp=TnG`wjconD`D@#824i3w^CNc7u+%6P&Ci0dt&_X!#Ox!A zir&f9H70$zd~k_J@f@*q3lE2&qvjv*L85Piv3z5OhyyK(8HKruii_9KBH_M;oXq>PR`?Dbfxgc?K-nZ5wA3CR_Z{33S4H33n&hb+pu^83xg%e zaUG5h9h1WK6k1`39M;d-l~<$E=$Y1p@cz#`Ldk?DC;$1J|Iq>RdqI+b#1Oy!gpJY3 z#tSEaiTs$+ImOF38%RP3;}Qbq*@_)n`1-z>REe3tET|9|`o5DKi83h0eUT>;7`x2r z9>KZOVz*bvms7^pI#M2&jgDV99#F2a)g`3g&Qz3`R3eiAG!ntaT}d5F1^i%MbP?dN zg4{Bg7C)p0&_j#R2BpvSRyvyFvu$vdVZ)$rO2ad=pxs%A+r3^q?I+!!?Os9SG#Mao zZ&^nD2mq!4(3+lW2Ap}7M-ia9EkPg>l?}nVxrI~-yT*K0gXMxOji4YhPj!8TMl#YN z@WJJ}+aNhduk~ z%&5Cx>lY(XfV(sB?y%Jb>})D)D*!IJ9!9(;R2jED(wZj^ryvi79n1NwRp?iIp;tQD z^U(X5MQ^KTUtlp)NZO@Wk*PO2U<~9(V0gY-j)$6zJRK~6sAZ;phk9f;r86`M5qFzQ zl5gfE=z*C)X|N8gFfGKf>|~_u44$1?R84@-jztvrc*0Xw@7oV4Ka=I~qF;T<^C?}z zqxL|Uko3fRLO5#}P4SjrNTpja4i9NG>yc8@C?oA+2gz+tl;<@`V*v$AgwdhfJ8*8s zhV?>G<#C9&@{7K7jrpm{u0{3f)EK-x8hR8gX^TCXcQjXY_B0_#mk*n6`_`n1IRaP@ z-xG-WQPtS*kl2l;3RMoB6or)&m`lD@!o$xGVipLTx}f3kaBb0uh@l2SLl z%n%!=6+!Nlyp;}{oN6RDWkL72MDma2DoR$2#}4gBX@1`hzw=5D>XA8K7zx9zI@9-K zTB=Yl5esd^S4v8Ku{TgV0zZ+rg_J`L<5uZZYR@+R6V)ymk!ev}YVVBZV62-AfGu(> zvc{!(MzS_hDY~^!^{3Uxuh<(s3gT#(D|Gt2h;~&<`Gos~fc9!LqzsB!DnRNEP&4y2E+|HnA+YdRx#cjvdP- zapAOEvAmuH9@f6GaZ{DFkf-Wxg_G~px;cj`PF>PEj8@xcWB!^khqq&$$Ca)5#^Tj; zCM|0`b(e14?8kSFYG%GujgCG09_?rLHUa^kC^qqkIcpPk=g!dlcRM6Wrq{6dLx%@Fg<7MsE z*QBFvmx{~UDBQHq;5vIF4goBLpM|BUwniWTrB&Izn!&YP*P)tjV^7{ntx9)XmP;-- z)Q5@25G&D?b68LAH`t zp#3Py97T*KP`spXQE?<>95tJkRWn!w$guf>Skjc^>fP?&?dy7_dKq_)*Qc3Wj@3FQ zT&gG4sR?7yLDh;l4HRA7&kqf6qEqws*xh@@8FzBvV%)d+`{|$LeYifWUbXpvc!_05 z^V83SiH|6ckattEJNev6;orLHkWf+N0L^u*LK^k18+{|v0uHKzxkXHiyB>?9%=7`N>GAU0nM3XEu)Hw`yuStGI6?L^MNcntnd)1T;=uhR;c0TCHD<)buFpe(A`+a3D&d z$Yjb>+nB#5ML+=Vg6=Q+HTNY~NmXZcn4bk4s{3#xvsTtVJOv#eu;^k|@8xJ_+K}+$ zP9X7krxfxVAlW(8xyd>cmThSj>A$;nO|8Utw*oUM979+t~;k~@BXmgGY=u~ z_}=8Hrs|lJFQQPn+z0x<21UsH5~h!S1_n8jBo-$+u;N}hk)rlx))}$7OpCvg8abe(=BnM^JT)U5MjrA+va=uD_GyUM* zZhEV3B!}tFj0ZUDeT)}obQ@rWpK&q4kaQ_Su~i55BOOAX-IBJAqo<3ZA%1^UHE8l0 zpoKCkSu)1tWpEm=zS6Yi4r6!eyvEo9q3Rx=q<3jwZTa(GVIjd^gX6SVXu3RN04=TW zN)>DOazWhDzh3S*-pVwMVAkcwWq&7e&aogm$ADg6lL_<}(yA4csw? z-}F?p6P#+C7&z~3y2fuoQ;-NPkS-0`;j`y8S*QPI0GL>|0MvsB%4tgkFf^8^i}QW) zh#h+ItbC9KPtsGEd*Qd zNj5r2|EA zcx1-nwWf|?I3U$CjWv)uaXc&GEytxq+~>zFP4_T6qTpFYk%#B5qaUpPjhn<~5SRo@ zNH(Yg3n}_`c&wt?J=N@>8}CoBK2i6Pg$GvObbtQ_T87hIbWU`yz5dpm!QugxBn}BG zASZMu^UjZTjq58@LQmAQpBc{CD?2!0A~!s^%jXhuW%Vc!eb{VbJ|eiQajN>0Ok`c-}T&FE4S&PvR=yOB?2FzhoSh-Ui+lBsNjHVf(=M^Nd4@=9Gw>99*L6 z-qU5ld7JyZ7LOf04614R1@EsVzV4G989w)Kv-SUjy*H1Cx^4T%N0cpzEFnfw2uYC= zCb?`$lNLKusgNQSi7_8b$R0vbCLxtH$-a(#t%w*)%ovF*nUThanfdfPyPo@gmg~Bn z=XZa9ujlvOUiUwdna_Hj=W!m#`#6sG+m1-+!<1@;KyKZ)tI`vUlmgO^G1{VTRCIOt z`YGC`R-4QIxT%6t<@?NPXbcoq}00zg(fP0x)-msN!VL%y^SV46hP#oD^nNVqK6@?f9`roOd1jwYumys+@h8 zyshRmecrCk@yGk;g_rDx>+%EGQ`I$(@-r^}0J0k#YZP?oSIo;%=mM>^*Bv?AVbkD( zw(r|;0SU0<`lSuq?i^666I@rP_p5%GpFkMM+FMg0t1-5gQ5#3SrXIW*t7C#xRYS(O z)TQJ6)1aw{aeZn&#jvvjBv<$73|}w0F&IW{tj0uvPyE~F!)evcUhje$R=IU%FsVdm zd*t;d^)*JND=DTZ!V=*f#0c6|>KVM2)RK66-%bCZsLW>pft;6c_x`X$(xJo&8PZ3e z!AwN>D_a{Gz1Z2-gxmOXNlV-{K?k!@ixo`Is^3fa8r{a@Ozgw7##{RMZqH@DTc0TL zVfT$2S6;>);1laf1nx1nzdSDC)S^Hh>GMrQFcdtR#_!e+nw9lWq-&m-rKdLqXiHS> zAYFBw88Aq;F743rF*iCpHCf`jx+jjDBhGvJ@ zjQ(%8gNNL@vF0)-wEF7ie8Pp~_qJ-vQ4372O4dD}{5w6M~YUaED*4eQUwy z8Frg<2!8hjNO(e#OWiV%`z?Jx)}!m1E##paBUbx9wfjGM=WXv+EQG?)+JB-}_5k>X z$kJ~D?DX1p^L}_4FvCDDBhb%A?f+FgL;Ycb zHtyE%+^PI=z%(2ppTi144JM$vh_o56!n}Q{3W~lWP*QtJWM4`kQMdLJG~cFpGA^X6 zQnd4}DDx!yB;lQ_IyV9A;5cc#HnTRmk7Gj{HM2HiX%lxHJ(K$(CH{k@jHOu7ccteG zxY0?18@NmWL>pzJVRiR-kb(f!mnr59>1KIZsooz>BO`hlRL3G250g8HkG{0B`b|rr zlto1pS`TW-CNk`_nR~}M)He%>y4GWgjF;lL0NF2eYzCHb3wN#h|hYpu8kB zU`qEDFzp)kue4Br3m+qUZ#eF{@rHAZvAn$xb`+&}3?~(92ME^hbXa%vw{kGVd;t0k z55v2F-|qE$*K8*N2JHQ?Ug4-*b*-%0?VH28O=k?>rC_?!g!CFeE2Z-3T&c`lZHF@% zZA}34K+hl&%!{#4;n=3YAH_p6`rg@Vy06?4UN3ROTYzhfirXkc*p7^n85c+qoa^+1 zK&dbYjsPLo(VH?puo>QFOZkBIf$6O^hussj`z|NF9qOPChZxadOJK})BQ0d9ntd4| zaL0x5f<%oD&B)rkG5b#=6EY|7$9aEB{NcSaCDYIrhKy1fHz{)q45bD=DPU_dZQyqk zYV;dri*w#LY84t?4|zquQnFM=jhEHOZCPW`-qFq}V5W0qRoE8-F4BK1>cR8Vw_C0e z)LD=)k*#RGnOGu_@S*SSh9I|$IivMpl4PPwRT6ar>{=WtP3SdWD{)2+KRo?}Q%}aN z_!@6g+TCrI#M9=8;!t2VlhQ^kN6)Lhf+t$+r0Z0f3(X?OtyIe+a+AN@5^9sI5!-dF z|9FzQ?3B>6oX4b@YD5Ge7GcLm!DX~C=OTTi9gRg>FwrMXU&2XdGE43K+FtomTeKrw z&G6@M6?gJn5V8V&g{tTr42dq1-;FPjIc%obBT`^%ly~ z7n7Z(cp8gNu7dUgXdA@1PMO2JAhdzQPeXFE#IqhXDonyS$L+}|NzI`6uFr(ZIP*+n7f%ah-hqU1RfwPF9jn^~$0XQ^g##I%@6jJx)Z0Q)J z1fFph2!z&CzP+kj&oKooq)Sps8Nyl{Z)KQ07uvL#ecnOwUT8z`hx3aY-FcfiTfwA= zAPgeg`#+b}^b! z|A(m_KdnvE`^J<@-c+o3D-~C2eb$NYm+9AwFo^JbFQ^Dv5E)izSSNiveJ*%H6Vry4 zDec0u%cfd)qc#7u#wNEaBQxuv{=Op+muOu039M5LK(z)cZRS%tim=jFSLFfK;+6b*X{hM@h*ev5T4@Y zDU2*>+!k3pQdHK{zUhmGk;gA&wih#Ea=ia(S!ScFNKxdzt={>}(>W%p@AqU28wpH( zIqtjA5`2=a2sNaDQ~iiFG?^f^T-jvN=XTFvRWJNZGHYhWV3FumVbLq4R1pc{G9Ivi z)+ox5F-Wg4R_|h?v@4)^=)cwV2oQWp_Q;_?v`$!_kEOaY@_+ zN-EMuEpl(d464&cNg;I-@QJ2If?WCCPnHsEb2C`iUKAR9Kd{GIeeH3V4#l0%8lUm@ z0}@`K{L}}g2vChFv5VA%Jh73(S6ZLbA^xug`2l3hlBl;}H?)p_lv5Xf%G*fCv)7$Z5hLbmlAO=FTD8@R*9o@$-pujsvm&*um1-Z4DWMhbHYe$|&O= zZ02p(DCAb#O@f+!z~g5OYqGrqGEXt{n;sqW2{$t6clRow7CC@IrW2`^H-ik@&n6|> zMf6{Di1TjFK+Qnssj&Wc&@-J~qvEa-Yhd#nzn!UkhwRx~W0K#kqup+Ca&mMer+Hd% zv-{#8X}dI^2yxg7+3*l(;H?QTTb;FpBW^O4T+4Aw!9YFA`eU+-c02m(UUT_3&lJ6P zoT%Rt;hhT4GEXAwzj6x=#0s3vA3NjsGV_unJ=}{ZuDzCrWQ0z9QDqfV_&*lS#L!4&hMlN9)BrYV zkNbERx|0Rx;5bpVX?uF4fv(ThzNVa!>UI9^Tk#{&LfOeK1=Z(JFP=RnJpJ8Cv5%^#7kqmgkG_7-B=KLP>3jw)S zUI$etZ{HMa*~*(z9Cw_bF{>4=E66$EldC(~#w7062v;o_=0HV?vT+d8PYtMxnIbSJc0 z@>VLm^5E@LUjY^_yn}qv2R;p|iQe(kC10-9Fj5b26`V@<=1XU(%q7Pyw^Y0_BJ1^% zpT)o`h%gnbiAyzLWi{g^7`x)L12QcciP1Hpg;qi9vY(Au`U($Yc`V0yjLy7M_J1pS z^tWJR6uRx(%C7aklb=Txw@vNmn?eO!PJE=WCcvq(xGCmy81Ty!Y{GbN<$L9M0Myje zRj@<nRIdcMQ>PD4huN+!S*bOYtJbLjASqL-tSPRJ{se>bcHx~8-YS>=$ z3;7G;KIF*Lh$3*cDI=H?iMP=0@b**pbWb?X)?m!pptlyQ9xyl~i{k7A@9PhACI!qs zL;%?Pb?;%|RQRxc?eX>$zzc{ALNPx zaQZJ9$*q1s<@*I?j*`aiw79)HU^2cC_qK4`qZ;=L`O~q)ZN1aYh$~b?E z4-XvPbo6}M7+OlWQ0qj*Ej6)y46MYv1cUC;HMa&I(@=zHLNk$Zqq`nG(#I-f;2JRk zusOXokrXg+Ykq#gkBh;U7lqPG(`f5Fe0E&Jbq-cwYi1v=Pgi%3gD(8vK&lJO_WUyLoeb6S+x76kYvJ)m6b)|uqprDmu||u?dw7e*ZfT=;2-@d z`dJwHMT2y2mILC13b3o?tUdz4G$#~lc!gPf1cefp(LmH2I!T&kh5Vgw|eMoZxMBRYf{u=NNjc zzlEov7vDnhp0ibNJgP3Ilq+8?;C@*m9jvTMW=(!cD!1I)p*uBER%bMVPcj+%}bZ&fO*2%2s ze7)d`bIMxJ)M8n;4Sn%hx`pKfeeU~ytlH&-w_d}z8sWPqE!liVX793G1Gh|V@gp4sOZydc znYG)omuvRF(I5*gvB`Wh)r0$dG)D-*d9^ROY`Yw_EX`OFHAY}<;Y1Sdg=stjY0rE^t{px7zljX6U zjF(DHV_U_|lJq~-=XmW@!&GbE6KWP|!6k?UKpc4h6!Sf+;MQQ=29d1+M|x+z(^VQR zCTq&xl$L+b>t9+C;yzuA3a?xf9lDaR%@36(`HN$M&m7p!hJX}AP>_Ap`I66>)$S0$ z6I#Udj*m~N@o2lytWv^AW}Dz&%72`=dI5#BKO-IBf?Nwaid=?i9L2QaHW=7E4aofM zqhdnvKySEi8S`$6`Em|Hpoynv!qDr(uM!tV_XriRBQk)dY8T_6EtA~r5;*WdZyF7Uvtzp;VBjDK5Q?Ur8wm2b`n^OEReKk|5KH(4{eOtaEwAUFV}Z-9oU_G21l5J?pM*3)AJ@ zbEM_Xdozdo6PM;~xI3YSDh%TYn+Wf~%^mPU$Lh2c!PyfXp*r}Apo z%6Q;Ka@{YlmUhStAL?ut-M%8TRg9a@(&Q%AsIx@~-NTp=1C=ewPD9=mA9dwIGi$wB zM`adv$rV^BZTLKY{DskJ)KxNIXByP^8PYoj@?i#Eui7R^@n~_MV>$GnD2ZDaZ2h;G zx?e7Q>;L+dq%`mT>BrktdQW#9e)zDq)OvMSS9!tg@(sgJeKKZ`B-3b*zP5~=7#YTr z3HCFOiB=s$9l5|reGK@!Qq)?_AmbvYZPcy28Grw($js-5SmplZ+Ja{*BR&?i0^Iv$ zZkRv=UkuDkBUA^21$T*?uVEw#XRv0Vp(c7{E&z32m3CFinlditt4jxq)6L!woMZ{@Q{z%o9uu03phq;Pqknx0wSz2s5dk_qlK_1FwEaBq()X)`y1 zAi=@Hn;1JO4MYh8n;aPAx0OUXm8;&CqcA1;SuR9_ru{C9KyAKjAw=X_5c(CaD1GDuvx za?qtriUO^KVt>_NGqnHdachXI zd1s^*BT9K}qOJfTSTFx(l2+|xeCvWEy0z``Mmv3PyDKLL zDrb$L)5%OBY&~vO1`j+xC>yjBssbs{69iCX+|xCY$mWWI9u?fPQ+7VAW1>iK&KEL$ ztFH=o9TvR*5P~bXuo{L3n!dnn<04?<+{r<22ucRWxX9h9gvHTHN(@`+uUyJwP*Aay7yfJ+vRQ!U{*W zNsB{0=fR`G{F4iu!zm1DBoem;qE16_%%5MyjHCo~9?agUVNv*wGr-@CQ`i8Z`iCFZ zhMN)&n6*4G{|7&7G6dAl2GOBZ5u^2RakFimGPBsl!_l;#v&Qn=g*~R5^uzWoDGM!N zXanL-h~W5(y?ghfH;pP_*mT&$?#P3|ET=O|J(N@LF`|= zFek|%0)dJarg|H~3w{-it<$>1dx{D84_J>TDXh}=G*6S2>qnSP-#;Do6?(#fTi1kw zgCLGL@U%iF7C>jm68Dvn6ihN_5QyWy=CG>urlw_C>%zBo>31{VnXRE*QC?K48?kur zX3^>ZH=t0#<9{W@^MAqL_!q(Y`(5_P4_OC&f(>=FBIsT*H6?Z&EE-; zKs4C-UwsJ$_VB-*OUUS7&UHfM*SSa`7}_66rT$h}qQsn?@BudCA~h^a0}iEkb-#vv z8Zu6|7Ck?@?u)%*Tzi8#^MG)KO_w(6nyFv^3Rsi;{&?p)_yTYkZVc#jskurrDKRC5 zYbKLoQUpAGj(qmt@y=LY02HeLb#)@+1O~uv34lHrD#hI~QVAHIG4=YoUe@T|oAk1t z8$aAW4i-j?On1gDy%Hc*=SCua3q^fR1D~3#^QMKdwO3Hx*+}!gWDnl&SeiRWrjo6} z(eEo9X_YN+Cfx~)dAdtvpim*xT`4fv_QT6Nh8gZgUut*wz&gvU9m)GngQ9NLp-`Um zma4Q3Q=^L%EDxetG4l)FP=%160wv zMmX53tE(bk3%(yjHay{m=#Ym2l9fqEZ*ly}EKe{JY8_MV^Zv-AWUq#s7xupl6)f^( zqN!!a4r$&MZNtL*f)HV~0zy5e)F_?N*0S21$Z)4$e4J)y;RmY597 zT<_5FD1&AmgrpAh+74gSXX$dwp@wacr*QW$6%kBlVCn1f4ALFz%Ez7TOAkhG_)=M0 zzHZ>lNrcnWPG#&wt?K{L?ILHOVZ$5*J3DU9P5A*x)8Z!~t9}mHaeiTb5Ds8|L=y7Q zN0qk?>=``^D@W5}0qXRs2mq(a_qu!V44!|ug@>}POlR~M)!}u*%zL_U!L7&>_UFaTCiag<8czovUmNo`UeMnm z6?MI4WOpxK?5Xaz(ifh?h8a^gmdn+AHr6XoJ`Anr`!TJ`=#E_?%6=`lm2)YBPG2mgsq_Vj!es1U`&iZDogdFUu15Ne75O$ zt&;`*{%;NM7X`ZC*W4sk0yUY*#Bq?JyTArq{B&}pZqTS)y_b95rGfI4drY09jr+ft zUlyr($lC&)yazA{oTmCHQ zgxFlbsv=83e^t)$zd^&tU-oX`KKy|81E%b5&Ld1cV2qX2f|gz$=LZ!&4G$pR%Y?1q zm!lk;31Rk)N1!u!*Ov+Gxys$HE?AM*SA(FOQs79|bK{}oshnx>&BO^r3($u)B|zio z-b#R*JeXbG1%xG%fE%Sh)wB_Y5MeLo&M)ZNLeGrtb2;)`Jkx;ht7^>gTBVUbcOe^w zz)SuBHz6%tIUpG`5Ml(@OZZkJk-;I39Q>8J_Hq0VO)JMfj-kZcaQyC(`sEETMi2Q{ z#=TycRC(O?t%aZmZsVS64kB2~)O@XnjL2>gd=*G$|S36vdU84RRlZ*~tvdrB_3 z5dY@R{9K(1oF;G&wdTo8`ObCg_z&r?w_6s(HKRd+BXS~>Z3PXTW|||9zCGhz%>p-b z_316JN~6iBp`k~SDFKykS?lurQ5;lTj~&?D_)il)6cf7140BOAhoMm`_h)$Xk8=iF zeKdSZW30DURA8^N%F4x(Mx80(H0#E|E+_trN^S6$I`y%eev8te4)6J=7O>xNVY`bj zsBRVT?UW-!G>eQY)5eLu%EY5VJ^Zv~jyRbW`~idw5Ug6>(9Hu!&!;zKEJV*kr7cZs z6P#4-yM5)v56RJ^DJoCD{ouYF0eYjUc{Nv?=vo_0*B=oR(;7c*x&?*uMv=y~#<2|` zUBwAtwvZz6qT@bda94ABm(qx*zEtMEoZzd^B0lBrE;zW>^x}Sg9!rBYUKGrDAGuVI zD~Fv2Hy`=k4$zVZq5yO^ei^nyB7J}lPisXZI}>52Uotq^nN7cfC$NHINc2QR{vi7# z^q~al0c{7s%QFXE#(((BW6=UKZB8p(U$hBS7iE=_0{pM&dx=K7D)e!z^#*e-w>lBW zhTbh(@(dLkw0=99mpDfH&<*eLVufXbclQR{;$l7^{xN4~h3HWix2m`o9FZ3qN+^K%d zQnDkmahjJ6=3|%@AO+-t^e*iImDfPd%}27L4=>@z9)N#vK=+mfWBJ10Z)XFJM zoC!sat$!G7t;JKJO7XV)Cm5_OAlCL`ZAk#i?gFrE!sK%DZB2p#GK!Yfk=yK6{-%d> z^OYxyX=Y?G5qmsK*Jf@_h&uZTX&j{efrq80#08nW{~r#@ID-J{5nGksnzx28c-?U!J_z+>BRLdaO8lcP(1*P{Y1HDlp|R_)4bnS z|NVBv*#Sm^M5dK0)sHDua5D&-XJffVFU-snvv^E8-(!FjOSYF@cIVKCnn^L~0CfMfke0eY-B#6R{V)C~Qx3yrm%plvD z>#}`c%x3)fR8Cn=Df_zXVp8nEq94i`sJ36hJm~`tR+Q$5@jHPr%f(+wY<5*GuI>X} zQMQxENWsXifMo(3vV6TlOVxJh&?+FGN;q8g@e?ERc{}!4}Z=3U3u}C<+~gIR(q_)%$bmm zg50SQMvBbxSU=SpAa!`L(~5ie+sVZy@%1S`rcvK49*cq$Z5TlO8;oms!SGYK5B;!r z#*Au4u3R!G5Yd-HU+RB_{S>Jflr{Av!5Z2|W}L#pJAs!7?}XY85+wq9SFH@!4VcNQ zL|vKmdHq%FhMe7gPXYG(TPlVHz~|BggKx_O9i`^1qW&72n|`;vXjgW)moUoWdeJ*O z`;YPE1>Sn&b{&oPC*A$K5Fhb2kq>`?`MpIQu(UOT{A#SOKTlmp?qJ8wov#jkI?P*o z&0GZ)NSP+hO#mC3iu6;r=q!|ZRk=qZTSltXTey|a_|p!VLH$j&=_Ip;$D(g#)mgKE zo+Mle(Xf1MLBYuwDYU(~>XvZuU~5RwUI~#Ep+#yuKmgq_^M;HrlZ*vG)ewS*bgU{I zzm_j}X=FVP&UTYoy{pQ*=o+)MFl@rw4HvMtdF5l_R2q5{Y~-eHvZX5ic9PSl-7`w* za>^jiDUQ?^Z!g62LDH58=GD~CyydG0>ISOx_S8;|>x%letmitc=zjesnwB;ih zP%=OX%HT3b%n1>;p^;&Ap9ZrG$#7sfHyIod*SfiUm+42yh8f8j7PBkP?bJmTWyY^EGT2kdGxSiX%GV8CdH zW4OP8@w!W9V90kqi>qGPni^@$U#L&k06;||ytA95Cp||Xi{Kre%Oysmg%lIsn?E22 zz3?Rak3rYM#q_QnSNO3?{MRhg-?L5sH~&PpOLJtw+5=funV%?M;0~Mr&_~E#f5{X; zng6r%`zyoyfeJFb3D7bK<3B=2L57!nSL;7&27_KC!iWEqY562YcWds~lUUA?3Y@=z z&;v`;>w9vfRXP)}ZH^RH!t>A1x&38!Ghm7~)`9IQECS5c-)exn!uJkVdkQbpbqI=? zCjGk4N;XTI7h4r1mRRzAe|7p1$|Y^_{M4)cQ;7i=cQt2O9#9z|gQ5!BLc6#RyhAi% zC|y&!`HErBDteA<0d4b|I>#;b2`Vs3wi-OXtglp10;b?A^7+gHi_a-1nB3~BuyZL* zajtu({VSchf(k#hIHsO#C4hFiwc%iEPz2Lr3%HE;A_5Rw9e)+vC>}4%jEbofonCE= zHn1F*$Jl%%<$m-@`j($8>3;3`{^OR)G}JGNI=VvlAQide4W2CA+WaRfS=}Mn;h-Zf z^dX_7*Rzdjkb`V1`JL=qdxFH-@fjTP3^+4|nDfx;`hZ!$h*gP!U;KdJsA3lIo1e&K zL$p2{;K~7n^N*)iyM8vvim`LBj>*CP0&M?q5)54(JA_8U74*UD_QoPRYjMcdIWDlN z(~;9SSO+Kr0=)H4*E#UIHV^LLaaXw;-ByT^bEk1|9o>$vmvpF%-uLD3^uO};DagKyo;FEs@IHN zKsPTY!ZCd;FqV(o63C3q6yP!cc@PWw|6=Ta4N4Hk4O-n=C5?#aq7jRnOyOZ%h?Ddf zCVCRhl+2$4*D_9&hsO0(fTZi6pTMpFfa`y{HvpTn2(4gPOm1j#WG`VjN#^^cOUS4) ztr}=k=by&?&-YIP!NDKz>`!we;j)$|f#)(V08zR3r(t)WMKkcLL|O3p}MALqe_i{+@GH!MtV zx%&H>y+BRZYh!0Xd_vn#6eu-|a$Is;X6ROa9r~8|=&fpye!A1{Co$?JM@0{l=Lf;=J#%k>xp;8 zZ4~{mpn(6ahae3QOk8uuK>Fja{wvg*&s?_Gs7G8>x_)wUGud`{DU_}Hw4<*si7z2ZnjZNf00tlO@K14 zV!FNy=QrlfJ2hwhbYd=-I9=&-^X^2ur+97@tUdk7XV^LHT5DYjHxcCMvBTx8SIGyf zyZJ`|-2uMq9A!);b8gX^Z)k_d*5i&YF?)>FA9eCfg@}T7&){N@b z;pK2YkJ0n~uPe3*C%>4fyP6@uB1XhRL-xKdp6!kSN> zveu*~pzwOE)6Vw8jpwe58}~NGKFCYVS~*NeWyB{Wg4jYRf^FP7Q>O!yCJF$kH)37{S2XDyDFwn2EYXY+)z^#F`P2kGtjYs>`Z7VF&FB80;M5cyxzn#4Q`C+mp zK%%-~MJUzsap~JoEfU&w-9$iD%hx1YLh+eps!}8w4APdK7IV;)>Gob#DS_` zEe%uP+>rwy2)#?@G1yxe;M1@hCb=?8``^XKzniV-E2-RSpLt{EzWbQ+)>HbMUN2tt znnc4YQ5*$L26e(3NgpRCjLATetNq=nJd~wnuSc>D585@DOS0dR(w zj@-3_3Dt|7kz{Murjb0F>XwuHqoyNE$h20>N|hEn6|=1CfM(!#kgrQ8Lhke0IIj2= zjD4lw55Kg2W6u2nGG{X|0eYrCQP=X3FVA?FSO1tu{XgmdHKb-txp{+@!0htyu|j6- zxNG_g&zs_ot`4K{n?|`<%bat`rrUI~llntXyyW5Ac&H^X584PZY_(R7_{?j9b!XRt zUcFiMSad$69=EYXG^TD-DWyj1l?S5SLt5r$+Vn2C)s$2W&dbfE?K^+v)ysUo@q6Lz z+sf2I9h+_&a@>Zo7nuOC{M}1_%iMn*t^ca*MUulqSzf`_%cCG4BEyopVwyhJ2Rg_L zK-9JBQA&EO4(1`Oyuf+V#qtD(_w+c#)p4ZsNc_&*@i#mFm%sn5n(p7K?bH`m|1NVS zfd`ofAaj)~dja+Ts}>fOEdf^Dz7o;Fl!=8l+#Ol-*qXC+^@T(QMTM;&FZ)GLBvZ`p zI^&#g*@oI2X{%bHthcA{U!hHX6I^Qd> zK4q?MZ`>!U39G=mr`4dg4D1u?7TVX*hQh&H|1oUv7G{0~a4ETgcAA!00I6;KF)Ilm zn{pq{gTxjswv^Vd7<|C5j(__7r*iJMbU0@vXMzmtQV^TRn7NB�!^`x&oHaAB*xT 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

2kF{hD)m9L z?DhTqpv!d@*nCH}%Pziug_^K`Gf4XhGp(2QAz0J2mv6C?Vl0`7#mgc|%OkT!)lnt^ z*YsUR$3+LD?~f<-;MKrNe@bxT;%OHL9TcgC!?Ig@6XP7b1-+HIPKd`;2pO_O`L%#7 zo0x|!acs1=@7Flzmow>$T&xrU8LdoFx*tPoeTTRLls71bb-d@xBQ^|q{U)}wS8Ced zXO3J16MYx7UlFcKnRibf1Qtff;>r55=o0J`JXf5~1EUS8n>jk^UMCB#hihzob(NU0 zOtoGNmAh#4Im5CUQ0M<~n1bT2n&cbU4A%M~xI<_>H z>yh2@dbz`w$5u}F#IC^#>(Pr|3$6LHR|UH-#%QXWKB{A-@-VHOs`jOlq))pkj7kZe zYaT;=8olzV;a69l4QwoHjBxH$zQO#_DuI+r`zu;9YQhpnpE|1TEDQXB*WJ9%phxVo*civ@78`>Z0 z3B(ihxgD;y3rL!y4x?Lr@YpQI}n(C;tskPE;Znq%AXuj7NO9kOt{z z$ZT(1U3;{hYI^`6x|$#+`ZIn91(nO(mU->aW6a-$8ye85Htd14*L=Zb%$HGiP)VHx zWrxUC5pI6-(ofiPo+Rc2LomL*8j2iPegqU4rDV2=*zNteS0oz%0gV!}ce;AnNuM!e zNMBj95Q zQNqf*VYvMO%|t&K6Y!hgeZo4sV}Vt&qsHc%OsmD_C+7i5YYt*<9{B{TJl!>(Bk=)0 z4H>f0vCzTYy(0Yt;v4?yUbpeg1r_hcz{1pKcbQm}4u)fBln1C13EGgqpk#MgExs=f zS5n2Fu!O-&hN;pfVYAa;r-9?95|U!d=MGuP;Mnv6?SQ0U{&DRd^9Hwg-3ZsYNZ0mmI_wiJR*8)7pC9p10 z)o3Kz+}>raoxgB&x&mM~k18Dsqk^E7P;1!oIbpWFnoAT#s`rC#YL3~Pc} zuYl(PW=&8X<0EPfET7w8`8-730+gPk;Iwl_b}nIbfV%{IOIx|AYiAb%3QJ&23^o2S z-@c9eY`ArF3bC*PjUL_p0#vD%VrMRavYVxmK>PseV}}W_+{eg7wHsbwhx7_b&@(f?@P?Al`a_Y5It2ulF_6&Iqi00Ay-Ai$N5>yHI(T>Taj zKrSK!e4)4&TLUD+5@Tc7eW94y!o~Dbb@`t*mMmMl!CMbzWmG_C?k~eKSr8bO0sDUq zyXH#RR0Ok=y#Fyz^RFHg3^JR)zS7@K-3$RQ8o-);m-Yv1_C)`}$~FufuK&OKGYd%p znmn!rxo6zZz1dc%r^e{rB!|9T_Q>gugAXpb73}Abd(g1Q=M>>MILm;ZsiWazv}jY% z6k>SvmiwNCW6rE$rMgz+>u-p+PbEByJ7wU1rwurkuL6F$@K4x1FzFfFyz))HX^3CD zu`7IgHtbWIUE~c5em9M^<69q6wOVYsE-u+}AtxOp)WkFBuSorhV=rvWBj{ zY@Hlm0&=Bx?^oQK+;IaRZax@<-CXjO9?VFiqsb)X(}I0_=fZY3xNvPozi0M{_rsi6 zwnRPX(F%{+Zhh03#&GB<F4urgeF4s&`?O&zWs z(V-DjGSHK79}Yl_8q!4RX_Wlb+t}s_q3XWH8K03)HZP^!MBvML3r7!+o#Ecakn6F+ zU!)iSDcI)ZmT*O;#)9sU7yEF@l2-GKlD?w{`>UB}Ee_^p#_F2(f0?IaU7TYaS0w9S zX@S`GQg1dC)->o1Xuvhn9)vKh_1&^9wGShf_Ex0`H|1{IdSL4b`@tS)!+gs%p_D&D zOQ2ALXJ^ZbsoDu7!-J}i2`-Nha10e?L89{Pehpkxk8gh)TK;iK|JSUbP|aR=lgwkh zIAtN!exPJHpGMA>@YtRrJX?t&aFud}A_UYdNlV7PdIIChrWMho=eJ+_N0+Z1!!2L# zmcxFO+A0JgDhI^&IMiPHRvN>Cf)5u(AERF59(2EXj^K9IC*;SAWEdm<&tUA|{(k|P z2VxqW!EK6gm>gl-A!*d+jElumcduSN8|Tb^m7B<8a*H`OO_4>$Z}cz(>4iZQ_|#?? z%K0Pa%hd*zDCJKq-9?{%!uVm(^tdP5Y$x-%YJc1L(q_h9Y9p2#&q`NrjF&s^JFe%|2Bv`Twbq`D?J@PgcYmJIH@F{Rt7A{t^5Ja}@_c-Vf#~9)h_FRxnm! zk3p6)9%1TwCRbB2F_=wo+Vo?tzvEh<{j>3btOa4A(!rt49%${@!J6{`OWO#Dc&({x zrIYp52-V}`cr?dv_iA@yxzs~=d0PV|@8Z&QY5ctxHE!P<_SIf{tytrGrtCLMzMiC0 zHQTT634iiYm$XbDj5k-Sida9xIQ?-fXu+aoCmpw%vqY4>fUT6E9du2!bhC{XGU`0z zeVyb~FtYO5OvY(}t?0V>jOR3Qh|hy%#GvO(#@#5=qea)Zcww*n&i?s^srOcl)O|gg zJYT*3A0z7jD-u7qxe>{5Z<3U^Uxkpd$mAH9EOgb1%F#;{Q_R(R>7TAkjO7prDlcbW zJJ0NW`}rsAZ~;h_zGwABORP3-RSjgAp;kdyDwX{&W7FTpssCNRh5|8eGIZ4ivioAs z&K=Nt^+;#P)6Fp%3`?OUv(^?(xxahGKI&-6uDA!VDZ+b6=)|uI z_wP*?F2RSy8HZPBBSYY4AUmZP#D-&zs~G`MRk)fAUy>=cbiQL)beZO6u-vKSAJx@n zohw+l^@_~08~^GLoA1lofB1l320q~H|1D4GSL$g_VMR{PU|?Rmn0QQ`IA(?yS!~FR z!-3lC$A>|DFb=@d#CXDLq|9(8)M^g$^z|NBryeUlEO~B=Y(@bvyl`%*Z2-Pw`%^2c=m^lLkqhog@f8lqSBjyVm|2dfU z?>I4l+MD+n}kz{G9-MyR zHRuk)x)lQy&W|RUE(p>JyjX_GOW2Je`u>Dj)ym`>LEf8bQ-n`zGTW@+UV`-)v1wVj zH<&*?GL|0LvIwdxP26WJUFaulFm1sElN$6L@i$M5ai=AKT2>x)oSBQbr_Mr-jmR(k zq2@s<2~*WBC&*ggIlDM6d~rT-XzqpO*s6&p%((|9RpcZ_Ynqxs1apo3X=5P$cpZf&vH+ z`N+K>t1nk!#zrFUxsQb0>|K73?leoby7@w{4Y(t(HG8oPXFl z%YR*i8rC~pU}e4wz|!{+zWjSn)hN~88kz|C^Ap=4;iVn<*sXk9@Hu>5fl9?0>SUTd zfXRl4h75orEEsL%Aim<);otm|m@NI^L8l?@9^e@G=UdeNfBlKqFvJ2v@dfy*RSk&p zze3ADyGf;g=Z*bmPyDw&k$>_;3W0tR3mMrIV7}F50CMi`tLn3J#3eK4n?aE~UHwCoJz5m_bbwK*$rANO5 zuox2j|K5;1FU{=9VadFu< zt5TZohb{9){9?H+Gb#@gQx;$GE^W+~MYC!pn_4kI(Di@OU1^FW}!ge#f7nYsWM@9PL=O zwUkV*Q2Nj}-{+&RzTy0FJB?OPP{R2J~p+sCW)Y9~gltqVe+11rQ7!c%0qa=p#DRtINn zQ$SF|t4A_|H@?PSBg4mIl<(14)c0bp4{TKedx^mg&BDTPm- z#-Ybn*QDR1)Z}evd?0u&y{Ak40~G&L^?~MRZrjxq> zG%$J8fvOx`TD@}EwfxD|;~uM*UaQ^?Q`}{DNw@wT3ow)ug+5~HjuMD3l9TH7?{tw_ zo1~@lyl0}Y2fr(OOt~pP_z8=x>}L*_O^Z6d&Y(r)7o zj`a~`?PRt!pQ4(k{yltu+@_syO(DK$%{@nZ5>bTstcMxK&>Sg-!EPfL5v1e2Q)Lwi z8jG9ab8jy%t|>&v)aA}i($D!WwtDPnqU)>jX-QnEc_>7sut+Gkea7PpX4LL%!%NjtTD<>BWC7Z1L+DvE@Z_y{>8`>H*GG=mt{BVD zq1~!m5mcMZd5jc>T|;!9z^ZZDN#kty+>R2c73tnm7iFIpHIjxzs^ZRTUpXMOux$m@ zid-hypRejJd2+}28IfR@RfE6)_l_NI zXi6qDx`(UWN)B(ZxnlRw+s-L;meN;#mhGT^*Dxaw_fpjSFgrm}1q~zA>W) z`a!j}Y=`5fCOP#qLMraS$dUprVAR`d8Dsd;oE-ZElt{BU0ZXUCmIBmy3O*xCqM^$^ z+tBf7;MTpO7e8S^L(idpB*hjJjVVzMo9R(_tw0E`((hI96~D?w8%+?|tKS%9$;$NH zA29vg!*;{qR9)7DboodNnQpk(FEQWSAWvlfq~%4i{BenKh)Q`?h!heGBJ{O$D|wdMAMFa zt@%I}NT066OUCAmuWpTuh`YaE*a9@B$30NTCbBqb>Bm$n>Lb)l?eCm&Q@K%LwsW=E z;O%Q&M$e<3Yr=ASF;_N#Q4RMmQK0l+l5xAzdpHuS+#^fOT?t(CaoMA8vd5g#Pw=kV z!}c{lxT1965?8n51-^)e)rKi6+$utt(h_;{`5arpNofAVG&W(pA8&{e+s1;@w5|$K z)|^5T(zcOT^P)jBW0gE4_i@+Keok zY)T<;(lhn@)s&~)4thU0AklWYO`kim;ml`yFHzxlL*D=q5SZ&IQbUNF;cg{Z9_K1} zqqX&K!$RY0>ILbay|`5Dku23(w>Hk|`@J^s7F5%~J*%1-hNADIv#0n%OV?0H+E-19 zu95T^f%KH}rsF7S#oTJE`4l|1vJ^B{`GB!aO&`PowZ@}Vi)*6jxl{6@!dH}6q)X`2 zTnZhkQVEBmn8a1PWkFOmRUA5K3k2)^JoS+540SNq;eEgaH+p~NbU!K&q!8L=r^i&H zN5ec4L_#PsF$@ejcBFi2Z9aKmwv=pm+%JZ7$M8jFWz~zABNAzsKhLrA!(hZ+y=5K6 z^EcCf+%6a^sRccneRHor;}6XqyVra?#hVqzR$%%rovPqHL=_0I* zBdhM;s_V=(l&I;4;ZGrnQj6$vPUa&g9rqLGMUUTlB6s-nNRE7%^rpS<^o8TMzh5+= zXW%}3M$~&It{` z_m&{Q@v^F#FJo11$r0F~Yp=xm+Fb(fqcbYmFe-B5F-90e`~>hwoh56U2lZ_sRfYs5 z4q-VrbUO!TQa>CO56gI%xEI`dta0Pg?Rv-CpV_QuR)$$=>-5(K1&5-cNmn*L%#GYRk7t zo;KqvWh{<~yO#6~&*Kf|)>}-yQ}6UOBez`lXZl$mDrykB{^;9C?+aVRvqi~7^G7?#a50weu zU{B#X1<%#G&CGN>R9ePl=wzVqX58V>&0JuY8Do#}eO)Q$AVWpKC*Q*&6Mvoy^?m-a+tPh};|8 zmi?g2cDXkq&VW%ET6q&%bJn1l2c~U}gBz=o2DK8fhnEhj_Dy9LWO&N%;7-Ya6?bxR zJ7UKd;*6y7##A{rb&8*FnPN@SuWmTMCSJOmq+!&bb8&iopUK8?++T9`It|6tz{c|o zPs-a=rT6#BoSmmCPT2I0J`J{TS9+AF|0=qRvcH=--UNmc9e=_`*qbJcHk+go&9(;y zW_n7Ols(gPB2VcFaHx5T>@J8>dCYa^{3Vgc=^2kYQm;kKFKuUj+Yvk`oW%R!xAPYy zBjl%_Af3KqWvWF>bt`DYAL9|(DpITBzx>9?xt7jm6nZg9JuJFj0uLuKXs7;8u$dvbE4s`LOlivg@Z*F`?*Flo~$ zASt}KejdCf2GMO093B~l)zK+YkgbY&ujVKn^_o!*ag8(F?GS~ynY!Hm23PJH73zcZ z{_BC)3e-MTHD2>Bvr1LDC$Z}%)YTOUtXk=kaUG(sbp*xaa~K&MdnS?)_pnsB&)-2z zvPU34JgM4WMc9~)`Ka;ey@jj`=N5_m(=?9?Ry4s5zQ;$cvg*X+A%V(0!!vbXSlL2~ zkrI8e1FuBSA8~$~QDdywWYnbe(Ai#Cd~J8b=RkS#M62|J8{JLXce=~Z=0%mC#Xp}J z94I>9x*`j0wY^omu6{3=gG-R=xmZK!FArSZi842?!&01xP1``fh`Oi=t|sybR;p^4)QFR(Osm_g zmO@mwF*{gRlA!xzSqOEY9=AKCBnknPM|b zLNtnkoV3_u3>Dqt5g~9Yrcc%%tbUyR#!}T1A249&-G}Qo{Pw&6RFIj{APRXyy8tuaahaaOKhJcS2;p`!GnLpltnT6&7(-#Xz`$dFFndb&|z%ncL^(N^MnLbSnQ4R;*x2x}-FN%0uf6tJ;T+i`lYf1QXi8NuYkL7ajGnAbH5-AvHvN!<}i zwt99vamRISpJVT^-S1AU9+!})y8Bb!8Ak<+(|5Dm3m*};b8lyrBU$ukRTkXj{<)tT-jznP`|QeM6p8!f z)ue^`an8xE#<3y+AuA#XRj3d=+Fi97uasOpax!4 zjnBz(K-+IoZEE6n+2go;R6TvtR*L$kcblIb?-M%C1<5<)ayCBkJhKALRLc|CYlq>R z7J~({u{M%M(Oy{Q*6mNR9D%U>d|XkNdZlO_>eAIt=>j^7w&umU~n%Fr~S zd)Jre`jUu&g{^jI_uX@W`c;qc{n9_H+-PnLL++iq&aquKiB*UII=_Ml2mJOy58r|k zFn=Cq)L-0BVD3wV>wbD&r#*gM{;lU`806=FgU}x)TQ4phF!i zE!Se~Btqv5Q~!TZPbcSxK6at<$0i&Nx;QDTTzG8Z@+ZX@3=D+8JdzD zv-F@R5p63~qHXEWQ;L2LB*K9*?9=JtmRW#6a=xR@xF7;(w=GKYUWMxp-1oQ=(Y4Ra z^kk^Rlr47P66fX81X7{Akk$NJRg>0yAfgIe>nnSONDVP;R+1({1$uDR4W; zRi-HU0*n|`?6%zoJOUW>B^QXseFOA-Lq1$IL9L1qsJaWbb3Ug5U|Nq@o{E6teqmi( zrwn$Co&oP53uC4w4v(|$f{!?(1EC$(eg;zp+@iO~fl|{a;HE7p;>Tz;(!rph4%vh2 z!ED67#sM!Bg{6JMebfN8MmMoC>-l~$Nib6&^!N|Z0>|&KWL2r}>^s*g9achMR=b|KpLD_gTeCk>dLc;E4sLwF%t8iKhQxYV;H#(r(!VGhvG zh~(uC3%_Dh`CMVyE=+vPv6Q2atwYxEwus9R9nSNTe(J*UEOjW>6zZAKBu<~SE59jmQ$idhR$nj6l&w_2FrugoOEK)Mh3} zo>fPsYpY!@Z%U+JU9=Od+NY3e4)G|mA|T1ZH_i@ZBAq} zmjfxVM$iG3axJ3aq=Wtuk2@n;AxpBD_n#-;6Rn}mWBUs3KzrRN9V`)bfS=uejAF*1 zsuVA9kXD$dX34lU6<>E?(+&_;Wg_VJ1{x4cx7OyNT^F$nh8RlcDR_W7u-pE7nH<(W zQT7BeHG`~EnR2{hVt&M1OP{aXuWbWe#)NhT44UFc>k3PAc5mo2> z7d|^I9|>k#H6|-FcM8+==?CxdG~c5jYTpl;&&s+w+tPx9L^I=;0SOT-V%;TWtUgPbKClR;-V^Ga2`Ah=(feS32N+?N~x} zXl%YzmtSY>hHK|FMLG4i?tOF`KfkNU$C`8!HY^{d_?2zPjf(TtS4DK>N`+PCo(&xh z_(Tc~ed;`P7jbXE+*HBIIzZq{g547d=hRr+tGC$Lv(;nP?f?)U9LfGyp`)0=p~D}l zG^om2A8U3oC5%ny(5|ZJVh5pjm;Fag2hJ%MP(OHH(%kSlRsR@nioX^PBIX9f{k5ne z(3_fg&*!M8aB<$6k-vlO{$lRKJRAuc4R{XvFch%9UY5b9~%_PnV9_`;XZ~7!n0!;l_c76-T5VBj=E^I0>_NBzp zOzAm`IY*=d)MGGHP>~n$TU$xB@3`t8y4EpAl8CLhknhg9yEa`69Zcyu1r>-VD zc5L?J#3?{u31)bD{Xs(btF-HX$nQATMV{BY1OS!iE!fY%s9$8A|6SzyJ1*oO!bJaI z>#ZwHySM{|=@A^O7O@QPlKo9!`dcC-8xWZO7uJ=poj%YYeIaD_7I&Kva|#g(n?hW) zT#nBPp4j3zG-H}dpw3H& zH}2R%II^)<%hq~34i?AlAQb-gM6atz&Fzm~3XO}?*Dr)WUdG;wAQLw=W$-18-0T%S z1@QtlX=$|v-;BX?A%|G$5TlYQ-GrN{)yP9zOy~mNo;qoC7c%8 z=*6AH71&rK*~Jtj53o>1HKkoH`SL@$m93TWXD^sF2*r7dCT=jiv`ZV*7H)((Y6QCx zq!+l7xnycXQ>?KOp_tg9yUGD%ZHLZwM)2A1EY#{Puy!iU-S|SBJJiMEoaA`Ec}$ju z6*6;-7zOsR*DH+q>|}SNQJkcVgQ?j{G~Jr-`Ka`G>Urc@%>6B&j~wqfqpQL9-t)Iv z{1fr$U+!x@k%`T(V)f3_tB=XkE9DpC63gM z*$;7kENQhZ>GDCR-_{P2h@=fR1T607_TWCXZ=3SR(qx&=EIb^k>2AHS_EIM}+1x%_ z&p!QWn|dx)PjRLT+?`S2)<4k-|4cFbTR$69Ie?YF3Q+0{=mU{vxE^I^dgnkySvqiH z{R-C!igsv*Ow9q%E48|Z4T~gvUpzx+|4nh8*N6Kz#rbrhWZ;v3Z%+PUR{s1Q%jU|0 zj29cgS$x7H7YdgKKhe+W0ik4<4GiGgZb}9>XNqY<&~&O40OB2Dwzjcqo_2;VsxZ^U zkoHlaJE*6L6(SmloOV`%QIN_nvR)sJoXrLOcIgBjp6l0cc8(71P5swa`@fYAO2sjE zYeAgGS(sW>X#@~TlUZzz#YhFxf~ofOg#LO_rF`=<7d^8-ugZ^U?iR7%;Lb*v3TkP) zN3-!+VTgibN*5!F`3x7SQ39zS3w4PID>`RE1k5A8R94Y%NH^Nq6P@U0D)2gS#&*c&h5zXGBW7k4n2dA>~X8OZQsr~;@j2a+ob{j{ckze#&Ov9HYnzH)R>RlcQfwKO2v|b zh=m<9J(Qv8Mzdc3(s;GvQ8P2Gy!I}u_RkXbM+aXV9Z*`^H-Zwf!)|BF`sOP|?6@!xmRZaGR*z8xMa>{k=>;N~7d z?-!ZE1j)?!NgL+Hn(?Ty51~_t}IIm&!$Z2ISg|=ST^iY zJADg%xr^U0Ml+1v_q8(n;*R4Iy;*>O@y)7F=jM_%8GT}s>#ejR9(8^W&84 zl0lU28~g7c{l+)@NNGin5B2+?31SO8S6Ewsd8i$QZ0m{NZO$Lgmln;9AM$OPJN?(Q zwc4c*jxZ@qJE0gitHAOfndf%kx7tSazyDqdJF9IS-0VcrIXxml+WnDWDH~3orkHEe z!H(_Fr?kIviZ-{By80+0q5tBFghAh9QgCyDX`nqNQy4GdM)DX}x&PT&pdx%%Cu5;v z(QJ;u_iW(^uy3!hMY-G&Tc#S}Yhl1-5Wah$YAqUq-j_$;)*Of0g4t)G%#`RC+S6Ie z8ICBMxmOP?U=q-0%#g_@-HHzDQCiu5xC+^*Vqep4(jVrOkd)Wem+$rW7N#95830f? zXGUb}KaUd-<&>ovazJOR&8Z(j_DYB$Og3&1g_8&kzPsx&@bY6`(t)$PnwxhuguP^Y_^VG->T&U-izi>FZ_9%{`Joo5K7h6 zU>BYMK|TcQ@m9jpc>V>B>E(a81O99!&#D1mG;9}0Hi4cpoAs|L{4-i z^^gye1&|{RJs8_j!VIvl(xMbl+}*4P5ComHU&|=ICy!dWnNko2Gb$tWrE2&Xuq|G; z4dB*KiNP3Pq0}j1xS>zR`b3Y8I$D0g+h^D^mlX%OGvQk%#rJC8tKAjI=0>vqGS3Gt zEhci$FLS~*=nqDGj|~RC;rndV8yW^Jq>RMKvlN zMN{_SFg}&0n|POM-h#N-%uY%NQ&@>I);R+8(Zfa@&un%NQT2Av`^^0GxoAW@)55#A zhgh`Uw~L>Ip9#up$flpEE6Z%$QPA^I>7doxsy3-e@qXUf@T0pjG=0xw?xqGGciIy& zmbn>ASQN8sISyItbv9qkJW&0?CwnccPw5Nb#uki>!oI7E|FzZ~wMDB1FbXciS#OLx z5dR9Y9{!22a2z`v_oZX12AsLkSKw>QT0p5G!}l};2}Wpp&1UFB!tBT5?Qz*2aEq!( zZO*Rb$=Iz<7Eg5tDymLB)jp7=eOw}GyrBfB+nU#2nDWNgNO@EYcid9HwC5P5wOk}@ zw#rs*9L-)hjmju7?z;5$R&<g1Eu0N^rwSCy!9izPx?YQPpw6NZ-=RJ9&GS{jBEd&^n!#*2W=}Hdy`i%P99@b`6 z5^Y#=Ys8DAg;UKUikpLuAG-P(sqZjVAuIIB%hg!UB%`WBORoKJpDW7oUarjT`8_?% z(InMG++;5gY-ai~qX02KGBd}-kAIr9)~ z%f`yQrdMh1&-V(?w>z#qH{eJxTE3#eYbcNeo87?p$%CEtoDxBUH^R6kt)#lTqxt(U zL{P--(DVpS9!681tw|7_KP(O0}PY&5$1wSv7;r zoJi(td02a8y0XU)O+Zzx9m0hi4b4%D$Lzllacv&X+&qYCZy5tpuB1MEpqnzKrj!bA zJ`qzqj~8hdM0_ zZXn$|`Xx28&V-iTB3|w7%BOhbvl4&Xc}~RitIkB{GVk~<7w4DRIts4o2Fn+<5$jrk zpMA2a5uoj=KeiZ%z5AHwIJmF52b(cWs$$o^WE4$hm|9d`w!Zf&LNs?$0pP#DxtU3$ z+|i{d+`n2Cc&fACwoEts-Gcw2j-#U;sQ3ZCp^Fwvw_NOWpC;-1emGgx5OmbSb#p-T zRcU?BjK}HydQ#ElQI4B^`WWl(@j+-O1lU5n;#6$d%<^>Dbya~S%15tg^OjM~_SS{F zo~`9dOUZn$SzWneWuBwN5s-`Uh{2StVOi?SJ`bgN# zH03E68x*PVt%~AnVN;Pg0y8KXfA5OdqXVnHh3>PBZjd!V^tek8Y3aSCf|WI_Fu55d zinzn|OuWbPlNc#9m{Alw5`gp%8N1XwzKYWeqKXIQcF_zEN0-N>LiBV%B~-3|y6Zy~ zCwbr`{7lzPMPF%T#M{#1qH=R@Zx?v|!xWi_%bV@M*`sZ03g3P3xbi{OGNt$D^75WN z4&C9k6D5M_Bv5`P-o=&dDRj;;pIF1)b9G4lpsNrlZSEm?r(Lh=Aywgn(l0Dee9?_O z2lAv*#IL4CSEl3estwXH?qkgHldG2asWPl8?uj(S6GcG{@C7z0@cQEHHgAvHvM?Av z`-y!3Jz|whv4(gkbPh^Aq}p~Hv70_Md~CaT&wS&tlyF>Sxk)R`_BzK)@n8_=tUt4V zMMjMmWc%T2)w$uD8VFkhK~+yPh52A4^$1gxR1GJO2h6%Svg>q}SnjV=t8|bRb}28v z=gY^t8C7fCfh|QacUhB&vw>7Iptj$l`%%~`;iIhf^TKYSK3kIozW7teFQ?1<@@d(x zT@9Ye4b0S6i`kzr(-B{5D=@?79$atuSVlEdqTh)zxcZcn0owklK*CV{+E}SCiI2KD z*TZissU~1i-{FbP&cbVs>9BZr6^_nN?s)Ii;G9cWbkrXA#9gzFcz0N3YJPWUV$vY~ zplZ2|4gOgmbvOB=Kh>emEHKbVFa6VWf>{1ezqz*y`y`G^zdTvT=68J4#;tpW=$XR` zOyOb*M{`2bikSs;g7PFlmJu5x$jfnP4Z-T-$K zuzp>qw#%!x8z+d_1srHGb-rnk*w|>Hok|aHn?W0K`eX|on=U2XXY^jwIH6*um@?TF ztUae`-6$A~*ePOlq$E@S*l4s@u4=AZaqs!eMg$cWF*6Q88R8x+i3+^`1cv>`K}Wf? z2kKvRc4F>cO-~I5Z-bsmO~cf;9i3@CG77!N%OsVTA9d<2oyE{lw=UiJIc`VEZJ9SB zcXMTV-hw7xmmV9R{sP~R>BLdaqV6I}jy-qH#?~vlk_N9*Vx#68+&8ufR_j&D)*k;d z8>ao{O@|UmD2^$7kmQLs%!3Yi=ig&8$m{aN)HfK#P}x8er0p4 zaY!cGE>=~)Vh7~Wqth+Vy&v#(h=^`B=+7!}qIJ`9s8V(Y94wr{PG!wEw~wovOC=Z$ zXhvJz13e#34<}_d&-*7R%xI!igk8MwR<2gP`5AKCl(=<`R)^9%UU9q3jxB7MfQZ3?eAagfzcoM#_0bEs=O!&&i zZw%5qewUd>QA*bfJFP!&km(P$@eMzM*zd4Z20$D;&-fa}7Fq;Q9(c$6R0^&&_qp^k z&Y_7+=NJ6E7N7;4NQYuFaZEH#HEmYT~r5f=}ij=jPnRzjSs0K43t zNe74}LJYu1wUY>XkMAPIy}sOP6J3LBxt-qFTX8JH&iZ&zx#qQCUd{enM~-B2um?}x z$j>5Q(H@dcjJJJ~;&qTLI|a*$aSI(D3K` z&Y$03#l~1a5}g66`VC(DJ1gLyGX4|a>0qS(xbxxv(bwT4v80zHkWw|3z5hL^9!FUk zza~&Du&bKmjj**v#OwDQBqCF&;2tm_d2a_tD9c^20*AG`R8)g6$MCUe$%5*%$%^XI zZYzt0d+0Kj)WbIj;CX8_gI_*k8r5ATSGH-5i*1#E1k2o!OS7R*+8$CS z@+?(Lw`=OJ>4#hwocn1zk56X-w(c3CsEUFsERV<^ZNKg6JF-xV?=fgQAOMsHwh$?{ z#9Fw@h(0wg)(cj?AZrc+a)0o3-TU_W%sV5w5vRqni{yzxj?LGMbmeI(%qjk@)4Un#HNSQ z;fkp3eMR|0rQUoczj$pqgs8uZC`8aD2n__f5uj}0?>bhMh0Q5?JNQS2&V>rCnTP}r zBWz(j+9V=)q>5jf&h}f~vv!o~ylc8w1CgaP;2-(-G9UkdJN}!$!+)%RZ2V5x;AfJ*LiOLOJ5H3qZ&|mk6|D74muEh=abQ; zpGq5Zg$}ykxyv@?@Sb@xtsp2v3npeebXyf1Ln;ODcwly_)sao%jov5R%!^onZ+FUv zWT>0Z)y{}_e0F_#z<;%;LdJ$qPDtj6vwO&48_IUvzEvaO{S9KNZN})pJ@=W#pJCYs zEC9z9dYCE9q}hb#)pQ;2qzredbvT2OG6}3b;eztCiDm&$kK3q+_mCVP?ZRki9@KTP z|Hd&lwI)Zd@`BHi^n_O$d?i;?^LeivJg)i%fMA!-{WWCwPvRv%oVS0+-y4siTJZD} z!ess#Aidqu{FJ>Lf-^O%x_x#R5O44s?`gI9f|Sc|sGUp9camz=Ad=QtmLtKrzbJrfMtQ>{f$*`a zs^-!gI!OmAkE=S~ne$LS)LO_}_$2RbV$zK|ZAp2f<+AZ|0DxN%H)AIfm={6Im79pw z{SovK05Y+5qk<7DZGm6eK=;Ey=1(his5SAgY}*Kwm>0k~xrA+i`GBZ06+r>SElzV7 zq+~F2_$%AuGL{5DsQxN&?I|S$1{{FeG1sSvx=-u-LCpiY2>4yUO59`w04#c|XFE7Q~Mw z%YsL5&Y}r?Wm{b%PwX-Mt1Z53z6n~438XJn2o$!30O#K3SdoGGB;6-1D05DEjp44*Zts< z>oI$1W;Ug3B;cb!w~S`6bbU@1+lKdCEKm~sFK;qeg+$FcZ=X{MP4<}wsaQSVdgb}O z>^Ix`WMX^fh7!tCD<`7*;K^VS^DBdOAw}TD&L_g4b7|krG~XHkUAa$!>3Ik=;^&!? zH-XOxr!=fDxd^5_c+CjRSeVh%1~~94jiHUs0Kxp`2N_uq z2-hM2Y(FfI2J1i%1J)+-7@Qf2GQrmU1X^%fZ3FIj7PcNd_f~8`l>wPZKaHuQ5oROV z7+U>MS8?k?I<}H#-0r**Cpa!v_x)&Mkl4Cp+@dpTMGiY>Rvh+=;UT>fhS$@d`^J%lMhTzPC==iyd+3v(O^#EzpvHA1`YG+54I5eo7u*LXY)U= z&fy^oss$A~=)b7J$=E&E>tIq((vY)ZGTY{h=Amxl=xWY@`^{fQ1V6o+kflj~x2ac| zB88uVWs0(5K>1|fCzgBAjawPW_)D#s{@K#o>~oa7n{?615&zCzn49~_`YYQw$XC}Q zw=s?ql7;veX^M7Y>J7M3MjvwsY zD-j?EmJ8~MVY61iPNoRq=*rLr`Xq3xIl#hV`LMHIVs@GJ4bY{B%OCjol4YAdRtXL# zn#^E&$Slnxf+9Peqj$$#-0yOE1LJMFS6m&Ou6n1IM&MFBfZ6ABoEp;-wzt%z)NTn? zlqeh@=YQyD?Te4q*>8%E9=f!LZTC7`^lxl$2aYfUS3W~`LWLU=*b|Q%Wa)cZBYXN; zV>yiUS?`mxrOShr(7$o)&3-rJoGt%yCu)6re8?`H`EHH==ydw8C3NQhEh{J&h|#CQ z3w!Gk+}JtYT~7!+;g*)kRPUX0bjq(%vf-tD$Vj~PX8(z1K~s~B0y|E#1t&bF zQbXcO&9E*L^&>BJs&8C05ekWa&NS{BC*;QQ1PtCA@eMyNyD`;%XnWq z!-o3wl^d&154C1pJ{qbC$kAJ%!eMRC*29f83SYR2H_B~ zwuK3fzIqBE>U+U!Kf@v2G-$621L#C>?6P}35})! za#G5A-!-PR6LwXmngMY-0Ea*m^MO#N%;Xg(Yc;_5O_)a_8Ze5zyU%wEBRi!7Ca)ft z@hNu*;Oe{h#=r`=mw=pR49IDXaQeA3z(I4JM!Wz4F@j74awJt0SW_Y@T&VY9f!ekl z`HX~{HG;u?3S7DJ4SQc*C3t5UoPxh70pSwgx@D`=Cy*vO`i*HIZ{l~~$C!SFEDR6O z_dwTqjZF4?+Y3o7S}LC28Te%S*0aPzo?NnPd+{y!fntaUPMM!2FswWn!)?7SJPr-z zVkdfp4SbI&a5vqKwTUsl{OEHwy0SYf1=f!K{=p-@f2js|Qx8Sefa|HXdl<%)0ItZF z3dAr6a^25tTxS4sZpE(3-&IHaXbxr-=zD?u!9^+q;sWm8=B-^A0iUzQbYED&T!|`6 zV?gVJR9VI1WsPeMC3DBVEF4>$H6>8lGaq0lhS$rO?%zi+<4`(4(~&^xRgYv!yUSnU0V{J$@H1X`%}DxC&jN;ox9NL-5b_o)* zM8-_V3o-55|=Za7!R@3047OLYRUDLpy+jbnqWQFO+d;TM#u3;;N=r4jTv795ACx z4K>tziI$~Zbvb#&T${V-ytU)#ShQ^U3-$ym{@az0FF}w(!2O+)gF{;66+N*!!u!D}o9j#b3GJyguL@1ERO-LN>mj zWb8ZT%oG^VJZna*RwyuH5GzW*U+^bY++RzO{_27s$mVjHp#w`;LQ_-Ts=}(K^SF1f zq6CbNy}TJ6x7Q}zBq?cGz0|D+%?id|>j=gbceD`0Yow_w&0%1A18OAbckQ3{Tj=rD(wE0rX1>fSo(o~H)zQ|`jssdvz0168$+F;YfklEcwZwx zKjxBnDb^(67uB)C-@jn{SOtXZ2e3C#90L}1y@*fH5y}^W z3c>;ebGvj{NeMr@rn z5XVc=0KDRp_Uk?Sl%cI0Ulfb|1{4D(=)J=kd%SUL`R$`>l`PndbFJ{qXZ-Y5K$ zZ;78Nye|cH152sI3|f2Ij(ugja&wVD}ABa7mdqxD|h+0 zf-rce_DigEfbn);t2dfE$HxhE2i`KPsy)3Y*T=mdap*rm(pXIw;sP}`a`ZzkRi0o%AeYwgf&hg23`C#JU)i{r z$#{h$Nj9x-8BpNREi18n1;^Q|BN)prRNH4(37DEsh~qz+8U%nnL4~9N{`U&Wh$+_< z;CaBoS$_=RKzC3O+2OY$%D=kg20QQ*zOS_O+3G-PlC>%fMofd_K?kCAo%aK;73K;bCW8-fY4l9b>gn06e@$2YSM{)s7^^-hU@ zV39ZG6slK=xxgNY`h;ih@uoS1&aWZm9ED#&9qXOxWeRaJWX*hjp+}D3gSxbjSa_%}$erN5xIlRF{1r2d4SVK7ooIGvj?RvsVUvM}=f{5L@l_mrAisAe206EC-1JuioQ* z)ACK+ha43z{EZ@;py#4rLWN`tis{bWSf!@MDDS=7Af>`9{b+W)endld<7CaAnjW^p^=|{|#8K4ZQbDv9g|9Ty_$9hTd$N;*Or#e01uq>S z9c(bpRqOA2U^-D^rO6*sC0~)8`o`&*?fuI#5j8b9vc+lP^RP{>0+UwR7V{xh`)I6Q zqg=)u&$^kSJOg!yg-mdjkgKU(^oq^?01A zhr7+q`i_J~05ts9#s#gQalv#mXk4HN8W*sF4||?~)=o1@5w#~VnXAUy8hlGGb~4VR zL5qgDI_axlfU9xi+PD73f6D*)=!w8uf<$Oc*jF|OBqIs2EM1HrkYVZp%Os0^3l7WD zOjbL5ExNBa`UzGnkWM(Wv>lx7kydtJ*{tHA#}NZEfABt1|1a1B_(mfAXffm@3ytDg zt;Vx47%AXy{ejw6CD}6O;1H1+xyG>_#NUU(U414%Nw%{w|J0=F&-Q4;`mJwq!?rbH zKbL-Gdu7im`tD;qkHZ;{)v<|)Q&e3@$H$ljV!R9z7t zYckT^1v*X=7Qzwz?9dy+L&8$u9g|_i0|l*Bu>b>zrNwk+c2X67fHtAx5EMHkGcBT- zK+{(sEcHG&o>IC!ikNd@!BPOYvU;EpJA#b@eo!_0Nd2E8lm9w=|98FiYdbJthBw21 zx5C+5;!)UM(CG_QFQ=saR=vEp>i|3Oy$(k}P9e}JlGSGX+wcEW-MsF0{l)JOu&=Sc zS;6e%girGjmpNscMxu{W@#J|wGF8HBrB=_y!@IF9+cbU8f<*ljWYs8@) zBUf4^V9$PykQ%|nW`Ol{9x;=X2_-YNQTXmZFX8{dpM8i7QB2($i0Mih+Ds=ZEuZS$ z4Bw&nl`W*AekuVQxNI%`i7DpiosH?RtFX1aZz1E8Ezro>a*FN0O%42;Is12q{r@ZP z_k&J5#~Z11rbmYJUAh)MBfGr&yV&Zx_=`&I9K#E&l#g|MP%+*)b0nuHA7d=- zL<_ckZ051sqMI*)sL_*Ys3N7REeyBd`dCcgHj=E}a3SW!>*H>y9ieg zo~f>LUOpTj$|V!uR~>2wWE=0L}X{QNK6ugM;RM;1<>IK#uOv z7=cy4zUTk)g7+LmV1vOW|J(rZAKbZbIB|ct?|;{!`#?4x{lObida`0SubniXpUq8bM2R7x;jUl zrSdcPF#KlX>ff=jXnJ)htv5aGz|#?gMMX3fE^eO#_IwUy{%1(kCr61izJf_4UH6O997` zTiKTI(;rS(iamXWZ^6<}3_zS+8O-za4W85iz2e9!EfT{cf6nTNX~x|$wt?9e#SP4{ z&U0a}ws?(1PU@c8VB{mi8dE(b`UXD*5d8#J6q%JkASG5vW#7ptOB{xYYO^x40?Fyk zMn|+5>Ai~)!24=tC0}FZ5YVUq^=;9*6+I=%NRx;5AzV@W$~h!I0knepkx+yWz-;V- z_&tR6D09)U$cza}erc6wd$-kQHuN`v(0|~m@=yGt|Hwe?Z|rM8NQ)sTpOWmuaDBpxIeLI|;>1_LyJzkiUFGt@2@G$fp(5vjXn(Ta->tOmv*t_CyC) zdGg{IVASW)Hx73f_m}sJPnS?e)`V)Kq#nGjC@MFoI;KTw26IX-bbg6Uk1^F3XdeI6cTHH=2R}lf%egaoy=m7d zQqQUE!2a)oQ7d6+cBvYDwkq=4t4{ny!+t57+DJiBQ3;S%6XdFk z#H!b<-(W9+(he_EXz6$W$x}W#aZwiv z_~OKc9Tt!frwv180t?O&(#(AS8Oz?ABh?Y)*z942U3RTfT#~EZ`$~e|K7GDx%-Db_ z|FB^b7u)iD5Q1WXrXPr#X(4l}AMm-z3iDCQWQyN^-u8At`_7*1OtYvB%JT9VH@2T! z9WBui?d@6u!u0uIB=*t)c(_@E6`zNZ^g$#{3HU5t$(=O5D>oM8lNBLZ^^*LeAg_QR zo6BDJHo~>nMHR7oA}+z{xdYlab85%Q(w>qDiQr*r{esZU03-d=9DY0)4lrJLPU)Fy z@WxpzJl2*aW``i}>}<|^|MLgI!>q^xxv)wn>3L7%0?sLq4jnc|3$%?BT)aYASub>u zzemB>4RQ9UEBH83FWq`$P0m->JU6??_Hf-;iJe4*Vje7R(+$f2&I5wme2Pa9blDXq zp8~nr9|02npE~MgNdq2Gmt1LCvhSVjh8-4#t|1pZ`2{4RosNa4h2owQ(87pMD2TI^ z;o67khVz$3%z#|?V;-eY@e9>G3JQUJ8o_O1Pct;ajQ9@cC0d8>_&moqf&t6GzZtV_ z+N<&gfeW*Pd4rA{KB&CS!DNZytui;TSAH-Gsm`eejfjVD_h4J|hPK9lXDXx+n0t-x>9MB;Bp$GjUBAEyU(e{I z4;`$e+A{e@XtCY$RjSUUzEa2C7iwNomg-{lc4>ZmW_^PkDWIs@fAq0I%yGjBIp`CS zLlHEtp?Hq_`y9uc4onG|TTHAyF6+v=k#WpyN418{-T-~t^drr!q~#Qt0lf}z4cIZn zAx?^1OH&q5m$yVTU^mZ>D0fJeT4%Lo4fK7vYG-4bdN^Y%`f&cwj;b{iZC;@WiYsUk zaTsb--yBUM)}wYY&$6ERxE`XRC{*v- ze_KKQn&v%Qmp6=QT{r%t?ZJbw#^$#hUX>$t*rw(Yq;X`wH*G(CkUXeBs|1VR2S$eN zK0l;47vbn`>ni%PuX^~Xo|-ap&ysv_C+-RC@gvym{Czd^3_7FU%c?qc=ydjtwVrfi zn)0n<6LTps>@EABPQ87rRfq?YDQe}~rC{;uZQdl=6xS%HM2d`)<8;s+b<8Zg z^vGeBK$nnQ>W^UV%A}!V?S!;p4G7r5>r zPz^ZtPga(u4I_Ad!DZf{xA~)`F_kZak@E`4in}g@>R=sj<2(%J@&xczopG~{42(yb zMIud=6?2oRO{(59(O*_Rj6dOg%lYM&g*my)0YAT#l1wnVa4C9`Yl-;D0NSoeJ(kZv zO|F+X&)QHhBP4WV#11{4f@oiOQiAVb;}^LqB=^8mrI_&Uc$*l(*9PUWcy5+Ifi#Bn z!xl=L8~vZDmL!aS32 zkqrEOzE%?9o}-!|#d^5q0kqcxZmH~6@e%*L@tMo&zDGzWJa;%b!KU<)^Sv)mPpjR< zjAHBT0UN8Lm${2b6RV-)Q#|hIQjMP3=9$|0HC#w0KZtd+Ib^DSGt?OcwB#tawVLPq zyXqlfa5P^-^$npy#N^5;?TOhQy~eNnCYN9^`?zC4hx%R2t#_m01D4ta9#LKO{A+0z*`{G51KBvY8POpp2x+#q2=Ua?Po}T) z6hSLWzChjL@Q>)7lTmd43vriC737@?Bp$u~;yWz9@P2pu>-T^}5{b1&(oamf9 z(a;tT>@a~TV$3*1N9z}sM-M@fSOi_V2$~oA5A*n(%^#t#+S>8%Wy|>m zJj3Qv$-+klMMpzqet!4%R%4cB3LGA>PC{q$?H=Y2d`1ntPq<3tHuX40HX4())PGB} zG%`8AbwIGjPhTg}PcHmUlE~HSacFBHu;koY;E&OG91z|z) zZ3QWEgVwJ?TH}ozydTEj`>AHJ)M8HfT*0^(~DY94{VUl7^+&~ys5Ap5^5oUenkd!UBg3|l_Xqq4Yo`s|e?ng(Ln;phQg<4wr zi8C6*Jo5APy+&pR`0k@^Zv`Qlluy5>hw`%86BVAL3%<7ffVm#pR?~h=ii?1eE&V)x%WKxem;-H$E?L#YpyxR9Amuic*nTFfX-ph z6lARU)K;|2;)&2TcFbtyv`yd{a}^8f9g5OXc%og?s)3T~34y&G`F90_!!0>sK`G8* z@zlGCkIsf>a9b|Pi+1dg{YSj(2}QVoB;D?Bwoa!{JBeEnZzj#nnIV^|X@(2X!s7yb zj>1|6edrRW+eaDiLbog<)kNFsA1^DHSTbI{YcpAT(xw%=>E*bYc&q5{m2H77RZA*s z!%rj+|sG&0*x-Yq3nu_yS8*(HPBq&zeHg@$S8 z{I(xL^BSw^-lE%)2FEQsDN1#r-)l}%XQrFr`_~DFwGKWWBiIp_-rrdjbrk-s#scW? zel+TC%dy)`5eQr`(;O)36acn>;GMX;IyVut;ai%D6pbz%1-*Zz`{sF#qU7Ko6*#yG?OxjwWlhc;zjyUf<01&ByyNE7SVhR$-a&35(7iKc%*}9n#@iC z88RkJkSyzmGM4er5!pY%ZTYQ*l{z4ogO|uns8W)TdUxpFaLIR0iMu0?4h{rUg+r2w z0V9=4^PyWXO-3=@jl@N|hcYBZ^bFPQxsZLY$=n9H!n;Wbz!vHFGbKlxT=|_km#2VW z3BmVVxOeW885HdG@9&l}4%s8^YS*sO2M7v>INu37RYy*MvJ|Wg+xe{RG#AYb?UF^o zvWI76ly+N&Ivcs~mTiU~aYY1HoE(WO|2S$#d6_q3XSN%2zmLf|i!RJqLce47Oo)^B z2KqZVQJ1&Y>^ocyubnSX(o z5^ZX4?(^>cQE$Jxij@&fid7HXF5`EnJKjDp10 zbCr(=b~c?2mC}o3VHU5y68(Ps;^CwZ^Mj6S7i8X@ST7Y%LJq2MWnDo&^z5qZ8g0Ht z4#J!z;eaF6wVxVbrWRKkQQ4u~R86b_5&3hBo%^b9-vq0pgra@VScCN?%}(+i=1q4?{~#Oc_}5QeObFzV6Cpd+R<0H;rFspomrIFge9?`+{v8y0 z9(UdQ6xR$3*~SM{X--u`t{#?2&o;jh-=X#SDx?eJwVp-Bj36e_VajJcSL)=O12#0x z#fvmH&5O#%#h$k6Sv08}l*$izkf>Kw9AEEi zbXD$OMmH$s&5*t}^u(P;x1|er_-0YQBfrd`O-zfH#%R%@jU?8{b&zWGJ(NEvRUSud z)(zI+^IsULF<@Y76sT>@=wd`zk-4Qs1->W8$x74PrfJAeao0L7xsB>^Bs4WN+YOqX z-Ks$FHnywq>98_ZO&_Bj4ON#@S;t|N_nr+(KPVEAL~W!${Kg5Vedu4o{N9)sL;50Z8cEvjbWqB&^6=~j6>yQ zw3zz{iY-F$F^ld#EziM5DD^ztPg%gM*}=w5HUwtn7`E?qpg!N%l>W6cGaUEp!B>xu zzuE8>Kf2}(OOlSgS?k@tX;MqZHgvE~Ehk9NL#^?lfvf^(QLbY2?j=qn%c<1ueb_xTlXhSy@-C zsb#<=JPV)D=`LQ*-mY|0vl!85p7cek)KHPMN1h1cPnO30bcLypE7CU;G<>cJp4lT< z;%w1ow&~}4oa!;Nuc(=v|^7gsmr<9L|A1$p~IY+Cst>y~s z+lt=YWXsHPi1Xrz8M7ES9l3TwtV{HTE^B$VTLayU%9BR7i_y`t*9UX2^8 z-JS<-G<|VF*@DcvR7r%NMA=nP(UTak6*Tm8-Z?o~x<^s(8U2PKu2GYKfwET#y5Q7v zsR;AHhNp!lsu^2Pj`KghiL)Vf)j>Es6&krm1`<+7jOP=vbkx{;<|-mHb(%F;90eoQ zo7L3V4vb86x2?c0OmkAgY_@z5-eB@?ybn8pN7` zJYU(i$FC30lyL7QiGqGuMM*}hmi5~DAJR{O9qL<0-Jg6FP*o5KqSv$uD5C&v2ah0d zNMZMT*4J+beICE>>Z79D|29%V>3;jB?p9oQUVCej;g#Pr4y9y3Z~mL=tN({(EcgB$ z2-Sc8F?T(nz{*o%RG(@MF4dA!dSI8ToKp)T zm31zSt{R-n0{u6<>4HFxdY~B;g*w5h;{qetHCR=*RatZK1@t70j`{t4m9`G`Jhry% zo0YO8kN&l$crW#t(;!9;3fsy1yaQ)mkR{NqGZv2H6MTN)7TZPrm&5e;nao{D8PO~;6>6tDvNj< zf12_>uTq&LLDbWea zRzKUIR%C{#S?opJ_kipDcpplEbYA~+BL4@U{}dGZbv*lDBMLvX(mz=KM6e zxNB*altDQ`QuG2Avy1y4)wfP#k8L`=bsTe24KJfa4xLBa5Jq5i@M7-zFgTYd^j?t3 zSL7=xqXSW8M-o|yrcY#Hl#SHiAQsH2Gks?EbAC}&9 zMRTch_QzbHH5!RyoA8eK$uandiXH<@k|Jr#ozmPz+|Q48E7muO|92bz1T;LJmv zj2O_7#hO|7iAqrI9@s>Xma|#0lIjWieY4&+v{Yy=iXBidvwX)lp&;~o#7VWmdHOH< z9wkfXJa0Nc*mQ8C?@tK;>~hW4p5)t|%T8KO?dS&IHm)r~ZBm28G zPLcA8ksM9QdBbgXXKp3+IqC1V9GYZu_TPFeM;p&NOnYd%7LIBMfCUqj+h!p?@dI?s zgOXc8;-C32QYA|&$*_5Hf3@^R=VKPi970av(e>uHJh(A9RncgA^Z5pplgd4{lo$V@ zb=vzLC^%VmyAdw^#q?Owbu;v#r;WajOpujQM`NHQUF056bE-$0uA?ND1}tqH$v~KO zpk7Kn{JmzkTU{axLk#3!)$qS}T(563X>Jz3+rb|(?tgFYanU{FCu1$Sgp;8RQWz*- zqu@?3{LoeraEdtNWfg=ptz#GpJ2ba&@LiJ2)7&+92Vv%1b&6o^Th@OPIR5KQ`@eU4 zG{pBfZb*$fv)xqEnSiPcQJO2ubz958F(&yRpk=o0MneB`6;X0l>U=z8x5)3|Ypr>xf^bV^6_X6luDsfHVDBIp9bn(tn;J?=YQ zNBVi4cPgz6Nc{Aj!puR0 zoQ~Bl3IH{pZ&I6?2SDZKZ|s5%)W%a+ILDXdz&FOo95`@m7=Ox1baICYD)g+S8v6 z0yZywW_iO#!H(K6570<#nc;Ls1TL`6PI_q8^TV$GneC5j(8go~5nULD*;R7ttAF~uR zBbg4NiK0Y%=toEkb=z=%`i0a?Q*#9^Kh>i#o5`4orzciBzZD8-2q)4(q2F^Lg=%qt zkp>=8xTbZTK8NaGS;BV8A$o9d^S!@Vs4KaW(Evx;J?xOgyU|2{wXeUJo% zQAKAL*Jz@?UA!3$jz+|cXT`b710Bm!3;a;ClA5YPtKFNAP1TQGR#4zH|Ll0xuv=%gId#6~Ow{`Nx0f%}^1u9$lzYmjaMkhiOY}_? z-(-jI6ye4C5^Mdo1@`@qM5PLodqej=mrw>Czh#SR=Jm_UVgY|ZYsN885ojQR3qH9( z2pzx|HzaD>x_d2WAg3yII5i^9JUx9WLf}F}gZek=6n+5CxUQZU?mPog+aLS%WvfEpnj&2t?ec3@KMm~J<2xndBWBBdp_Z^Q$IX22 zGC03k58~FdkXl#(wp5~+rs|2V_X>WZr_=Kzn;RdcYxCTl$ z>|WmJVz19s$ri7!rVmI+oH0JahZ4*6E5P&Ab`^V|_xK*Ng%>v0cCmXx>PiakQEh4~ z3`)Y%O+ICdO3kcDXWtj(omReFM0LdJFvOMXhSs_C3BpVz0 zm=U85L5sr)^Dt>aAUFYo8aU~0F zb>?>ncBbpABESlxv0!dEq36o>`kJC^N1^%Z!DxE|_1p{PbEMp;J~zY*-WIa-QpE+k zv>s-cn345G`PZAOm(jg)50$R6Zk$V!5_LYNekLcXg{|PzmrqL9I2WK;EQp|PAgJQF zTEZxlB1Te<#d)sOTX0g7CmFnhYUF)kx%PU)I*J42{Wbl&UVTiw5(k(4CT1yN@ad{> zJMeKo;Ym-V@rzip5#V01qpg#W`%sUl894ipec4vfWrbZ{uv3RDIsZXieRPz0$SU|-u!<##5{5(8u0ay|8DR@t}2b5}kTx`+wA?n*c& z`dDLHPP)&x3%jf8G7W}0M(V03>>KXLpqkck9hs{zFDivRCVlp2`=EaIHAY_pv@Hd! zi4}UzGz|h^VuC+@L$nMxF~8MC0g0361}IKO4%`94f_g+Q4RYhqBtq-C^JD5ayX^;M z$R>OWP1U922b~0C9xbP$qZPqYn{&Fome`m#~O3tU-CDX~t!ZDzh5&Ix>bvy7upieQ?;aQ~X)6?&T{@yM&A;2N%U@PIJ&wIGulb z3LDOAUi}>tsA!xy@16)9NxjsnlqSGa*_)d#LU3*SCK}7+a<_Po*YyQsT$_Q&$JJqu zH)fkt)f+7?J9uM?R2_(r!l$8lWE63a2=Xlj6UWKrJ7R{w9DYY~cwH{N*K~K0=kVenax8zw*$0^<59ka+X-wNV4@qK9S4+{`2ihm-20bU>yO{Q3n=01UlIc%t%IFb22K-%t8V1Nb}&a6Ug&i{SOL zS7(_V7j}yAsDsQes+-Kj^(=;3o*5{B#J*cUi3XWwE*KrTdJP!Pw0+Ht!?|i zYTraxwtvA%VEIE+0N9z1ZuD3t*d((4JZORL@`vI}>h_M}3)tZQlY@TI0`w{3Gi=my z3b~|87A6Y6P~1ygfFJRUnNt2Bh2|QnM=Byy%@dqXA5pj&nuBUH4fw(ZtyG+R?xSA@ zf3ef~rXKIdlp7W4)2NhvK4M0i5juPfdE+C!r#^5oN#MmwUAYms90|yk%?Fz}Af=D27`9C5QBIw7R9O3Flg*|QwH?Fhz zszIVXch&)*)d~3S1)RZW%-9Cgc`cd>P+Ku^6qPmP6|2)b)isN&$&A$TZM4)^r}f${K*IdWQF6kEMz<*+sM4RkHPTr#MfMg^~0C>uB^I4P#V z8j{Z0%e+~PVW1$hh#RO~1E&UkIjHV4Wa#tm{ zcbs@s;OD(<^qHh4kXBamN`F9Fh!Aa5-XH8R1Xr2Ud4^qmw9U$R21H67rgu0`&%{yc zG&4`^or*xPzzSak@-HM~%BBK*0)Uc+78cyhr}H}sfhe#S?&$*^hXTpXv>x;i>+0Ka zIdk8)#@;ScXfw;Is!#7I6VIpnJMzW9ThGu__0{&+d;G4E$ETsj86By|P4Y$I$9=6M zObdSFu(@79=14LnjF?Vb9k)!pbcU%`b&TjiKbBM{aJD>2m(;$Q0vVX`nVE08p5+r7 z+D&Z(c54?&r*2rNu=iV1!*(4!?orX?!-vY>c3ZgY%O$T+KE%F@JW(S+bwW=xx?ZE* z2$@?*q%8)Cbdq$piMbmlIyvL7;$KO-tbg~oV&9hzb06z!qqjqjF?$F{;SU_G`QeSc zftYD6?lTjFhx4WO@>W4+42K0EY&anaJ&a;cU(jSXjkvWp>5EflO8+-3u*tte_fgN# z=M#IzJaNVe*Al1okkXo7ehy=g9^LPKG+kO6aXOH5B-o!V^{Ww#bLOd`$i+xDXf=Xg zRp4e<54WAyoNuFUz)iZT>y17=Rh049-*=R5qup}RgKx0g2XK-2$!NkVoDTe;JTL(7 zjD~=k>9=GD#Kx>J^SQ$`;O2e;>xf2#G2C?+Z1|f~_^q>rIy+8fx?prE`Q4f_@qK8X zw5cJsm79x++*AY@Ij-}#>Cl3hkti8MWMW7vpGy-d#V-8S)dfdGbvi`d4ftDgamT39 zU3Kyt6X`yZwGK8saq5iZX(AvsoUwgZCQK9P zyw(GsdZJ*7$@O`9ujU+CJA%|)@8I@v%ycf%v1Z61>HCevEVxK-uiFVX@BL1>-;7Ts ztE5JTLsX1shf4${v+^$oiAyino?UJdwar^{TjLk8XOG9}gO&$X$8>kn%D7BUSk?)n9>c*k(A>> zP0&J{kX);KZQ}W^HatV>&U1Is4`Cxlz!~6S9-RvmzdoRJt8UNp`3a5Rs;sW^T-j)R zOd#oDN7PkG8MQRv3=a`h+;9$|rz7|Cd7o0E=B!p>FPW(ygbNx7>dB_|^i(3hjEuQt zLM(mbM9{V8-DnZ&lh*GnMK7y=7~j%+NJ?c*f7-POuomIeY1}p~X=@M!8MRk@kDAkA zjFcrIe8jt|f&CTHGAAC+U%@5gZ3rhu=(`z}RT>UN&EWMPZki#+La%;DHGiL-s9C)n z2;)hqKd^E|{YJ$wZD1v{Eyq&xHDg~4!_-G~3JzjpeFq|Zn-a4+$%%J4-8cn>au)glC`!*5Jt2g=tpq-%%d)+vQ2;S*aPp5Vv ztVx+yhnspww`W2v1oqBWGcs%c0zzQOw;q24Zms3ys5!MX6G1$`oPOEt+DFqfEv#l2 zKph#Sm~)*6cFa<;MLR;k_zt#_M`&8q(HHNcW^lgAX~pF`7RXns2L(uE6j7t5luYZ; zR?2!6_rhPc)Q9`eSuByJr@LO%h}ls#c?HTXpHiY;g>~owv+Fl2T}tfQV<(`{tCfgolKQz*1}N-i(}PzQc79s=24R`h9|mc#q(Kju3(r#RsmQ~ z+B$P~1*U{}2d#;mSfwSb2XL-+Ev`*=g(KJ$(E?#abA9M>PwT7q=Ea%Ckl$SpDn^|% z<*3JQ)yeYt*<5+)+^H6k9dO~y+$(FM#lHhswp|RUO|kF($#M$A0YZ&yJ0@rVu^0a> z$`i?~{fhqaTa5;IJD)AoDS(YIBb;0%1Dbe@57ZP>clxdFuaYf}4WhUzX136t<2AZ) z%uFl7bmsO+S3CwD)z^IweOOu07SE1SkjTX$R5RvCjIFfJetH%p5X+?qC!?=3dq^|s zhcYdbYaSUlp?T@FdAD(B&PQd<(ZtTdC7(Pu7tztouWcfu4V{aehq z7GDaKDTQ#(<9GRTQ4y2eevYnM=ZKBBBo;#G{R9_bcT21Z@I78VF%xsSl|R#&0PH+|M7m@(b*J-r01~?@*3+%tl^l)k+6fQJF0Fg>tK3PPAJqt>soz6LOvpa? zl-GCd18?k5-~xE*$C7xT^$u$u}4_xc$(^UX#U3&ZzM^es=A5)XEGXX>+`EDt79 z0qR*`B3sJQ|PG z3PU6ksLyq_DYMS|1f4_+#HZ5hz#_a&1ww289bn)ue&;7e1F}xN@;(kmF;N_%F(j$_ zeO)(-dWmypLIliUf7Dr0f)$dp87(=x=`Pc2=Cm!D*G2a#jJ>H&w4G0V)?mowyrS7H z+kfwnJPh994ML82gj#Rw2msI7M>(>ofn!Bed`Jv?Y`rKn}KrK1yjPPb0*`D(G zXgcTKL#qU*n5-EKBxoYxn?43XebC{sjx=w{o_KskJ_LN%3aukG1~SE;-L1* zhGc*=N)=rT>nL2m1ERv`fvD48+eAI{ozm_^#FfZO&X!IbSzJ&_*6wOc&TWE)K z_Qz1tZp{~Afr3}i+n+3$l@ks|ifi9YR3XTnR+QLI3}ujUYGx|S0?8zxNf4oaJa8b6 zNgu9bhqDcBpLmr1;0nmK8E(5ay71yaxhawP!PF*XsxV@et@eY-=DIk~eT-$|cIuAd z)TdwW{nR_*nMHdOCB1kH!XO`IcnxZ$fd*?ekhvre>H~*nv-=r+c^Dntg1uL^A7HYH z=~ei{%%K)L`f;!(opAlw{qyLO(nd#wb5b)eak+Urf$I=t=!~G; zrVqrsGjemx99f5upBF|4@S5xRp~5MPmsw{>GJ&Jlpf$l=gV^bFrHg1AWYD$^-J8l+ zONzdD%XVP?=BC1x)OqQYHF`b6zU>`d5kAGqwE33zj=bBVAG2*(o?~uRij`Sa->QD9 zyni{#zROL4-po>2iqG|JyGMnn^j@Yoa%+^1T|{Ny>=h(&W}b97Dw36z70$Ac zt2Q*%A(R!**ZoF zy?r#a+J?r5(yuYRFo`%KF#$<!M{6B>=BvH=)BAlUaL*t+ulh#0Mo@41rjdr6n?UZ48ZALpldOV z5ms}SevXk&mjy{DPb3X~vzOUV3BxS08>6Zzg=%<_TkTKUQ~jK=w-ae2p&zZ*r_Tya zUc{e^$wb=?D`yef!9L;v75Q^F`Hw#TDfRL9BG&)eagX6eUCj~P6mu$s zhzk}tRkkXHWgpV;z9L)@$wI%Gw_O7qEB}}D8zbDH!m^nhU`=y9GdBH6xo8)C{15%s z$2qL<@W=iUwZ* zmFf`c`Qh%x$+F0W&tAzj#c8ciGTM?|YA#h$1LcYMf-E}7QTXqKd@p4Pr7NGyQEpST zU{?a4=e|1c2F3uo=-mx5OSx|)yVyZ{t8E~DeGKd!CknwJ$1+>JY$8$=6qI~rWwz79 zB@R4SZSE-j$kBNjp?^+hy2NXcJO}orByeo1XEyVI9+|RWaC75;6o>X*OoP{XA;qj9 zT1M(2Z#L#9ycK)|R|hRouN~)Z7U1a9U(@OrkM;<9EID#n0#(jxeG*gWrzGn-RCj;HAb>3Q3!b>a;sg%-t>&WwfD||3JUd_tCUqkKd6~BbCmpIGk4$_nzL5|8XAi z&w=_M_W4Ub9~x1-)0!&}zM71FhTVkzWa&fS0j;_G{!$pnyb2`gSGKhA&2X9@dLI74 zXoL1E!Alk<-uA!9NBghx+5V@UFA8wa{kcC`MERHl*iAX~yp9c`#DKo#+kh?s8Eo7T zACtX}rVnBz_guI4KjeWjMF;PJrA6y1>++Ze-S+H)v(_wWM^8pQ^HT^VuU%>4wEd#p zmb4C6n|vhwNNxA!)aw%Zu|m5zJRt`j{fV7s84JDA9>8rk?-uaUyb9jZZs~<>+pJl2~yfUgqlaJyTfghMxZfE{1(&;bT%y1p&tpGLND&P zyByRInx-e(g1j*sS#wSuEs%Nt7&_nBt5hDuy0|hdPq}P2r-IqpA zAhx!k)vVjeDPWlS5%k{>-+bm&QQV-Xl_;|Xzpm_nrrx&yqkB~df}#o>r8N+I)LH8O z(fG^uK6>_>?>cne-5c=i-O!{1=%~%~zw^cYcRjoj5lQD6{>dWC30MGw%-J))aPy>`rS$d^&z%_x*GyQ%lHSCi$;do2;}0Fq zsV&=IU|zq{;hfcBa&+u$b|^vc(-RCH$Rz}1;w*k(Nw3il0AI}qd%LW9t)_$VZq}w% zZ4`i=oB7GjJhix9%r98JL#!ELNp@ZmlIpz)%VkC>gRJ%_=0_(kTo|Bk$ zppZm&fUbF;lhCd{vaw7`;EdfNeQmF} z?dw&zN$#b5QYqy!7A-iJryp+`oZ;_R%3iV;oktUeY}l%trM3j6mPejz zqo*B==3Jney~WAQwP>o~dFcJB)3J56ly zrPuE^_#>XOE{@VpqmYc(bd9GU?JiTTx7;Aq?dQfV#=*;4K6q81$YT+g?maq5I&RxT zaVeGjhL^4^S$1iI@MtEKy2Ma*e5N^6t|nAj-A|j_4vsmJ{-WvTu#$!n2Ws}6ZzEH& z7nDO>sB)CZbee!hI}&%f()?PPCy6y>@2eK^A(!MX490O?3eDx_%5{xlnpP`Q%sw`0 zxVS26QV3L)X-p*a&;t^1+MJ|lwoYjs3uZU(h{*2>B}3Sm9oS;l=ZbKLbUS6KuZ!z6 zq1CAX=NFum@0{bYwv z=aY@XihMLR0>7V&FI=rjD*@{?uHQTCerve-IRNYD?ebK);W_1s0lCLU# zF8M3;BI+jC`b|7#n|RmbE0l9{JPoWL^r&Ri^jRzE=$QcD5S&=@{@(L9DfX&-J_FOZy9nw!hqA@?(ZxY z_dbOz@z6Lu)hUr>rXAO>NHL7}b^APGO^77Kdhg{VT5ZLN?lyn$IOcKUJV+8+N56QO zD>$PQ2qkH*?5A>@n&z4s4^-(LM5PzgGrrsznm$)S0Aizu!btVg3^-jBA)V=5x)*nqUd@< zFQ<2z7Iyi=9kbxH2hCq+Dv?1J>|s-c=ThT`4y2U@Y584^E~}U0?{L(!P`%y7d58Vr z!I^P6nLgJ7q{mqIbrG|+oh~siQejOc6%i{hHuk$FL=)~rbD7$iE~iq?)o7Ga#c4*; z?SXKpZJlJp+v#T`HDBIW)02YjzvsWQ>&Z|?&OT4BhULfJ67eowwP`|=($Nl(ZD($UKS6!Ceo67x85gK6e=6+bRyeR=TGd+iJuUn1`xIM zm!(GvG;@|i;G(kpk3dJLy;6N@B#>wYqf3Xc;=^w2~YKE@Y8K3Bp=*r#%v12@>)!sH}aIHYdz07t7)myv+C zUV>AsNC!Z-zUvFRFG^Nq+}P?@aT@Qd0^V4H_I6*8L!}*U={N$Oh$zI!DitdmQFkzd ziXK2WTn5nwcZw`o$YZdFyZ!2gaOf24mCre7s;dR&CyOe36Lgab{1yYsUe5L7Ro98U zkMB-}*r^J|roK0Yy=a>+!g&ku(ZreciRz1Z9KqhuYbG<-3?VV#@L4i-A;#jnD(6~x zid|T{GlVlD>CJet`&`L@THjm~dz=C&^t5;iXlVb^x&T07BqWypL6FI&1KgJ1V2mpZ z2HOlXf`82+PxYz65VsD8dL}1nA|S^z5n1HGJ>r|dk=vOoG3&T_^h{tv>CIUQjkf&d zC%bz7^zV(1(KLZuQ%1iEXo5)KJN6ihmiz*^yW2-K?tZ~kR5F_JHDz`{SDgtEpdJ3O z7r&k*&+r9U;BYEaTVd)a3nM(ygBh!i!1d2sVRvsR*GIxJn%&I%VEg!hlKbDknuI2BVa-(CG?T>t}N>5M7 z0aKSnS0nF#*dx9UgEaUqs5&{FgBrek1>gLfXKeYgIk(FNQdb^fKJ}$)9M6H6^bH@B z1t6`(F{(Qs&ATD-+{-pPw^4rc>FoJ;sKHJijCR~dZmQ4$y{0zJ*jH=p zx845m%H|15<5L@;JAoJQqOXQ%)Ge4Ha3ma)qS{NTX?Z=$Wfl_m#MJ|37 zu7m=S!Jatsz(<2(N0<7<+m7KmNb&aUg_oR07;AcVH|i4j{`uFXl4OS_lj4=lfY>+g zcwP1)Y>McjiKy+QZC+4}X=tHHl1_X#j0z(w`;fZm$6!~Q9gziN6K*^6g-rc^q3Tyy!;eo?5>nU6mrzZC#+j z^8Maa5Yr#iINr!W2~bW^`HVv$xdfFVfL#^@C*l!-6OGd5%8bGq?fV^F1!WRtDLj0T*o;qCtM> zYmN^V0~I^crs7++=8t##K;+&+as~sA7lm!w+5THS_y1e}{?K-`i%&4C;9{-5bu%JUSrD0r|m7i1E4F;R&u8#+VWOm-U*oU#Oj+_{p8OHfsEVA?JI-}R)2PrzRYQs6JX3W(-BGG3f9qeScBR$o z3hVB~usym0z(&0m=ED$A6#FN=z0LZqmfIrmyQaJBdY_oPCN+Rd*Uo!VZz z3hg#uT9>&f6@N_i;H@i9Pl{j~1{>j}7&^DjBy!PVYTSNgv?&o1TxFLr+H$&Ee0GBP zyRz;#cj2#tYY8+^8RVd>icQXC=VqJK}z? zKnA#eH8~>s_@aEY=K{jgw;4@x%&SgiHrFUpBgjcwF`9j;-6kulJwbGz;g+m>39PqW zcT$e$Jm`FQ5|Vjf3r6W5d*Zp$q}NeHFzmD3l^g%bU=Hg=lcmIV?<=RtdlH*ho+fe- z1BCNVTQbh?-ntI%;h<*-iXY4Y52~qxY+Sy5%yr*4xo8B-{hDf}g&kh;b0>%9&sdWF z%5USaHVXPkh1{^vWHh4aFWm`@RzcpLRUQ4sjR{ySW4nK{=rJVm zxRJl0R=TVkv|o(OuKz#(A3~JAGyg95w&6KZ-g%y>4bc7TKAINfv-Ir`>F(PBtHu58 zt5O9m*E^4MxdVbV&m`OS`_RsGUN@=C;|zn&b^*(kM}_`nI0gp+KkQ!~-v9sG&+fIkm_gf%5@ZCcRRi}HSL?2P7^J7L ziy*~;wJ9%4TJlv-`Zn7UMK0}(U!GRj>N-JT6PXG~W$oB6M327MFk2pXCMh+z;V#IN z+= zftXh*OC_TlNJFq8>IMH|g8pUi`tLgCm*ssh=AkFO=wkF_Af7+l76{NEujP>_mp z5~ioiGTFf1Z)E^qUm@Q5BM6!<^0$0^vuoGtsI4VZ{|1i#(P+Y)?nx0FJPntKb%>&+IRzU2F#05&Y!b@G@Zx`c@?^gB z6{KzM!--b$QHDbG0s0lPN&{f;FYU*ZLg(cJK_<9X_C!TruGP@Q=?Z<{8*(#8!l7nH zy&E0$b5!G0Iu~hQ@>KP{0Ry^xi#=kVLtSg znR!|cV7%fIYF88}KL zD;3-uvrA8KSt3Sise}rltnvrB>iXIXCEP3-wR5MXYDFIYj za$kzp^2Mv4=?wkxrKSG#vlhWVqvSZ01Jia=op$3vP&gw)eCZN*A%SseEEbw1XGaF52P z&v!|CF2&cX~D0- z*T4C=m=(0!<>qxEA+=?53wlj(1$@0u1LHQ?qd^Bk{cW^!(5*vQ9mB)n?f!D#wv!+{ z;3*^$KADDKL!ID%FpyW=n!3Q1V7qGbW2N9SRoeH_j|sj(<vc&pI`K8ZDtiRqKoaf!XTdoia@y{N2_V&^$TEx7rY0kD2#!2zWx5 zDfL@~65|pPG*Th?O76p5br>ygw zae99f`;vjBE5BuGP2FRuGxivQdTd_6!JF~+C)kId1cpC(CI8cXQN4;RSgy{TkV_U0 zU+|E2X47NR8R40BWo4JVx(#PXK=+tGJ-p)X%Qv z)?wS%b(M2YE3X8}@yTp8KzpiKF7WJ8yiI4(wC_dECk0!p?Z~Qh>W{@mP4UhR8@Da! zo-q;~)x5<{&H20wo`uuA>C_&@AxaG+FB4WfeoDT+$5W1TA!kO`{)_$x%JGmj#SxA% zTMxHfzGx^Wd^#@jXY>W4n16zoxLa9geEht}?=<{HNl;bzJ7xZV`u}J!WLs+ZPeZmr z1qRp$p3&kFfU!V?QvrvGJ!ns-0LVfSKrsB@zp9XL31H)YzYZWB{_<(Ynn(Tub+CiL ztk~6<84N(jtL!<&VY*731UOd_K*%v%4Pd*(+>G7@80#A z9o^JrG36bJ9KyIkx20%PA2=ud%RZK}$%hgHo=vD5@NWqo!oOd3(VKgpzG*GhfJz7W z4tTF=)|3qA;($MddtVA71wY0~cGm_myp?nRDrrbqF&_6+V>0;or16K?x%#Uml|`5L zZFyF6a`-{b_)+x0bCa>>pGB;<9F??^U8gs3^7>-^%y3)fCJ^EN&ixzTBKKv0zRX*v zRFm=B{3XtW&@2ack0q|Y_JDUod6wU!#&4i`@~H6t&iefa{>GQTvoSjNbz=>`$O8ky zFvlExg}umnq-*8Y4LH8)h)ntC9S{1gtsC$PAma6ZB}sV!{G`!YWD`IHg&gPZ0RIMY zRa?rB(eXvr6E;P($4u@17Zzylc3U9-5B@Z3Op+N+BG?a)rClQ^zOKu%?Rn09V=d&V z$fWpyeXJ)Q@rN!Xek87a*O}*8e$1_YX6D=O4PE19FsM`nliXm~ehhk9@%G4LffY)4y^~V4~zB1>Q}nBHy-HkI(d%sPQwE;@@KL z`tHmiJeRx_taGNMb?Qn{K}lFw*P1@*{q^#(2Y!m(5P18laKM3P8DrBmvHjJjfy%wB zg+0UGoLjxiA*SELGFIc~BD7}G!dvy{Os--?!%{+q9I5Ly_ZUnWg6<{b`v|5C6^R;l z`t*E}(5LBkjKxl>CPaUUVR}o{Ks`zuPt;Vd32SBu-%s8vXFWC3nRiLylKxQ5rL@~E z0`nZ!m8wd9u<}N#c?+gp$}iw=V#PD(ZANZl%yB&pp>L#yt5-~lO-?xri7p;XMs|Y1 zZSEb&K5kHA!%AD-?o97oqnxu3-*jGy3-873vs}CkmL5QNLs|%Xc@;z%*W%)p;*=q> zxNVJi&QDs2TYlN=d%W+)1MNj%Jhy=s^flJCs^Gs>E&iWYv%f#@pQ>7f`e&L&pdF9= zLj74izCyBawCO*zSBU?HmbVT9Xn8EOg!&CFKLeoU)CX$t5go*w!fHn7=oQlVBR(Fn z)!^@@d;X8bNdH~2*Z=>y|GxdStb>?dhL3uixgxmX1?956&yHal)ocB_+R&|#6349a z8j!Lke=H)3g%xI}WgJU_6l*HnSeBBz(hDAYkqBV+6srK)KkeW(|kGCnx zzK>;$V3BBaCLs&tg`LL>tbp{p>jvzLDpJ$1-+Jvmr*Yp-(2X=`T*IWe1O2y$Yq1YQ z&%kXdwD8CuwMtSe1@jqvJCh9_TT2{f4!g z8eLvL{W$fG7#~lAu(9(pty0imf2BVjAMo57E24M0a9z!UW~XI1RCSPWg}NC-PsN~o zDymX0z&`1A#zrn4NBZA$x63mrUVqn8A`F-bcS=l|vP{^&i3LK4-_z7svv={jIz!Yb z^yYXgX2KM0vvKLy^p2v>zA$ihdrr(wk8f!gYrWoG!`(7_Lqm;fp{u>x{tKbB_!y>ea9T7I`3h|q z>zYlNRU5+>xCY*`YtFVSS-)k|56~ui2cu$G6*TG`5LJbuwTB|$h6HR zariZpaZ3JFgL?-brruU%oYS}X+$1}!xiA~5>->^?oLLlG^updCD9cS`eR{I`2YXYy z&RZ$LerMk2mxt*@*}m$PeD0O-aNDKO#kG}Zm_F09T+xPM0#TyEH48p9tW1UD`%gWV z+SpEpmlO+KD4I>&y|^iA73hiA`?QOc0n*rN>4gZ_63a617;tSxJDfjXbI|U1zG34} z`oXu_{IWNdPEY9W|KGVXZ}3%v0=n|d$yzY)WeB8hVf^tfT~n=I&8TV2nXs-gi$w2Y zPK3ybGkq_-6BS0fm$b)~=gpCIUpd#gX1q*bpK&Exceq}R$>z=emP5GcjCO)@)>k~g zYeruR&q7{G<63Tw)8^<8j&qv=v{5|ezkZuHM#F594+G2!Kh!>TDQ;qgbF8wYB<#S4 z(TCFm7cT_H9TlgYH{a#sc-lvL_sdcpax76ERvcCnc#L#1vm!L;6*j}B$(r2tb|N!} zb1PQY2R7XOF_1aYo0i=3&BHTIlnk#I=Nz*_B%+^P-QZCaT6QzXGyTB}~tTZuNxl-B1l9)1LX4H;UcG82T^m>|mR`(zdCaM@gIv12P_zPj% z+_9+~hK!<~eiKwCgBg2G&6)^)TbUCyd4$Z|$vPoN!F4SC{DK(bGUD!Lh60F`ZNq%QkhZh!QlU7gObVPz5 zdR9PVNqFqY#GaL|-54=wEqVemv4pLnpuSdap7+AMA>2#{Z3xpyGYc0syCf}KFmb~q z&5OG)h-ELPp4p+qDm9KiD0y}S6GPOV#I5DxhVln{^~G7c!df45&L(Nt`Zw!5@*Nwu zVh272UCf>-Q%e$$)%R{M{~)!S|JJwt{+}~Arznwfuu^L0Pa0QkS)C1rTm-dJui<3j zplkUoO62rKue&6RR7IJCWp5#+2@Pr=iBbPR;xnrk(sA>{OeksEhmn^@s)+DgkE115teFM$jwHauq(qI2ViRSt)KmIOW z-j}-Eb#UXLeH>*xvgk=$@Hgulo_g0A2!7F+C-a<&xei7frfEbsu*n->hwH-RrupH4 zg)cFrt|AqX4_Rq6B(~C@9yDxTt9NV|6)Y%4rL@k%(sM()pFQ{ycW!gpD@x>ba46m~ z%gN(t;mjDXF1_p8%`G1>PwjvEwjW*9_KW(xHES3{n?lxiD%jn0>ezBnm>yQ3DGcw^8nnfQBPp`>?(>cJ^+92(I+6AY^gfNc z%1V40)nSZ=mVX&d`_PkcH4HB@y*U)4>CkmrtlH!K-?=FYoj zj@ux1K6%uK)EC95FW=tGs?3vRoZ=jg?aOZF7F_&=n!KRfNIv=PH9>I&3kfkD~;;?6sUnDrdrF!q3TXiL~9lY-aO?DJFe7InZ*@tM3$$}S#wU&wQ+^T?#SLlD>1o)@q*f3@pGI=cB)o*k2i)BfCQrVzy<7|FlBgilh?4R zS?6{+mD?u!gdMl!5VgMse9NY|%W8K#`2O83xo$XhN1Ds~hos_Dnk&$da5n(hg$fqx zZ_ckw2vCC*5`&N&c`@!IFjaRW7$M8_D2adJdc-qf(}DbNopN@;VuJe5EO51n6WEo$ zkY_KqgpZ&b$3`$AR40Hd+I;*_3cbR+DSpPpN1%K7@`S9%Yoqs?lW9WWF|qy}TanMX zZfWS2;p?8*12b7zSnw5=OQfFMlb4ZbZaa|XDId)$XiJVJT0*hpJ99YD(nXJx6=^$N zS-~*%vvT^8nQ!DG$}{@by|Q0_aWYMi7mkR-n{#YnEtArOfO*Z0v=?N%)7D1xHGy>? zX{fnpTFn1_^rVa}oPhh>6WsVI=cVh`WbwGZ?%uwhzJ{eMAqS+?S~dt48Hm3dDgK`O zKi!F|tX^LV1`t)17IB(>?236r+o;H$Uw1Exxb3SeEgt#)d*b*#Kh8#i3u`TKkT^mg zOGlqkeFrKn$ht|*_%cxbdQ62i9Zw$#=SqkUNmpakrw%1g{TSmp+;Z=p2PlSN7NrvJuA^Hkap ztGP}o|3`4k`%$Xjx=&!1WDLCP1=5OHO*l{gdZkMz2fex5PVb`f{ME_o-fq?kB=C~oo`z$+d|<-Ad@f37?u;5UiRXw zL%s*<4B}Ksp}Lom&^M3AZVWfA5IT9z{+6}A#DmPm*u2Y1{nisA`V6uL2%4uP9eD6&NhA7dBrDP zxNTx@S&0^ZP+Qn%4OHRZOhWn3#4KXxkBuMQ=+el|>b4wJ1mHW+hW-K=HB7m(7agkO^YJ$sRHxnIQe`E5PQ zP!?A#e7K?7)a?7D0i4PBX_~XvDvg({)o`@tJq62}dU=`dQz1pt+$$}TfXyBOp88rs2(6I^{UG|(pD7~k;5zHm?NZKpN+y7-j)19r4{sP zxM8;JS^XT&;hf{1hQ}^l=Q;if4DOEWRLNPSYhDI6`E%xINRl{1%q@@ zIYepJ+6+2%v+bmm=3-Z3j&(67s4PJ6l#s7nWVQi{I0aR0f#@SaI#vXECNylsPI@0H z>MjsD@b%?DowvKj zR(=M{6_WB(145LV>5>YrdwmOX@4f8_(RDD zkWu^r@%tN8xGDBephEAz(ii`Q2jlOPl>o26{twsKLH2$<5M(mJh^8<6n;%QZpHg!q z;ae0#4fG0FcN8{pZt{0o9;M0QEdmqYRlC?eP!6FGq-$Mj$@z8D!kb+da`M!r=k4KgKxhb6G(>R zksV$^>Ea#0(+7P{mlDv|_C=cU=_d zcBlO0{NcTnBn&-&kcp>Gg>&{oRR@UsK|M&g8Z(97=5K3clBaeKn4m11QqI1xQ8ASf zQ-4-Ts?>aTWmSJ2f+dbt=ixUx1nc(sdBB9EcDfbUw+O$rN(<1Qw z(Z8W=#knqE&4mUzjyC?02yjlXsiAYd`aeZJXJ8(!l@tDe>$wN5BJTTzdYEGl=#oD` z3+hMF{iLb&!@;%;mnlW2Wo`1}!ph4J3}L>XfsZqS4tz=UQ+H*a+LsHJfBVwVPs^i) z1Fd|JI z)ICDFamGKCly0B8a&%SU)g%vwtAcav;i{`w4_{oJy_@=o1jzFdp@Lj+BSU>nH{3>j z*+~gs+^TYUe-DO9fUjD#D&ywHg+Af}U-*o?LNwnFzHWXLhw>+)b%8j*q*_^$4P)8v z%!;fSH5Kc0{I*Gk@j~8kh=+%SQ^Bj|EygTW%exPa73b90;Bi7&L>jK}d$yN8mDSf^ zV_(h<1{OT)XyFB9EYW4e6SveP+8_V*7MW?J2Jc9$ZHAR8v2Rp0vJ=5M*lgGouj&A7GEA{xhcYS`OZa_hbB+ezSZTvYc50(i--CiTj>j@k;|3xizW?Jux9Z88EiEk{Qzj*P(x35`oKn{^| z(v&z;rLe#e%`UcjQKdv+gep@)O&R z9Et}bV@G|cGOcTyiMJPYIebnv<6+YDO=#qmOH`a~K~ZTe`@8nDIPGUiCmMF{ zclME&3pp$o%b?x|(^v<&qB#sjuBZe%p@S&JJy{SneLkyCBhQSc;{2vZ{b1&o4L5w_ za&xmbMCWF`#7@z@aincrU5hgZxMO3yo{zOI+G z@{Y-ojz|qSjlvNB-7emLGl7sY+{^<04wYSB$P(wCM_L>(R>L12iW}5Ido~4?J0%X#ci+6CRwA=qAoU8BVybhlq;mmQ&AS>o+BKn>EcyJ>XQlm(`46l3Hy@KR zfY$s%iB*cZqt|Ix9I3Gh{hWBQwQ$o0h#(E2MUnz#LF8pJ=SW-3t2^fo-0kXb+5 z=QpfXZ;xR#)RII%)7;V4Taz*RDrXIR3gb?VS~~Y;#EGq5pp4`lF7cR$53f92KnH-XMpJ_6_x^6z;(iGyGs4`?}FG1o&u1|9!~V*b-Wj2;}* z3=>O!r!{TPEHi-3S?aZwYugq{f+j&h9xods6V-)2Z`ScN|JEWfWS_;A0`Vajg3`+I z@{bzsz-_JE=^x(k5O(W3?xEtNEnfF9sfcf{>1+L^1X-wGd~TL2I|Nd%&p^*dZ8mkG z)Mh~#K2U%dQhIHX3SD4no=t$_=08s68q1Zgl5DG=EBXnZOO_?Hg1m~N7k{!NwSTrF zsEc!bhS+Tr?#rM+75Wftcv)}5^fZfX0UI!BcJB+|9YfoT3*X1J*=N-IJ=B*PJx&em zl<^XD%JG;#YqGPRkG;edD?^0km?hPD-sVj5)WA>_M%L|6^d-E+WTlhMVXp`Ey*;N* zZ)6lkvs4X_e|jOhEX)C1u0d4y=3aO6_bK-9_^`*$F1i>;APm68-m07zW_lFNHBs=X z@8q*JpMlVj2-a7DfCc}S5e(j&^2JwEHx=%!J+c%vd+A_buQp$0Gk<`&*NqEd-I5o@ z@A%q(+P-oS^eNDL(LJKlUW^C-({7HecwJiJ4hpYWRCBS%19LMT2h+P&k5R7i`g2g`-SCMd85napJm8wHGGtILT{`lNmbX zN5RDcSA#B{RXFy*VLO`*V)&Emr=Il3q3@*bS1A3UffAeW;x zsmPT&0oEk3Q-yok9as^=PN{j5iZELe%1y$X%Qj0tcq((GwEm~8vEj|==+GUl=T@(5 z`D>BrU+L!?d3GY~3JCEt*npCn&ZuLN&!o;L=y>J(xDkg3Nz%UXIarszrS=_KfJzGP+ z)mc4?B}vCH?3L~nbRZ0|wGxqSCdei&=C?$jC|hV9*ZDoOw)ts}OnL9!(x6iaJ@(4? zN!%M8Gq9wp7z}t{!|bbXsc$o-15UH3y~gN?=~<86{SAFzi|-I~_pF}8!&(9iELQ~$ z@67rbH5yMSB_{Y}yl>vi*5RaF6hQd4ke`V!ts$NS`YQ>Nf`)W~R5|*StJO_PCqEJo zl|}BEUsCbRqrX1^fANHrc)ovM(iY_<0xgmDdx(}JHEM9Ht`8kdcsF4w)_=X^Ua9gv z<$T&Wex{aY9)9v+WUX#fQ)tmD(vwY*2c{F|p(%4#8T&Sz$yyqILt=#vg^}pk)v!tJ zs^+0@6cbsZU;}fIR+WwtLgi$P4!kax04{}rp{_qL< zU}$Mw>{Gwt?vXps(>iy}&um~dZ0jGqMd+rqyKy6c*o8nNAW+Nqf1<#KU;$r~7dA63c}O9M z60d=yghvFkf1!>EuYm?9vB++!{k05^3e?;KUV03vFhOqL7=-siNz0%X@{jjI|KSVK zCiBD~XUZ}M!(E4=WkW5SwgU-Oo5$>=4uRi7UPCP>s&GpyAR3LxKt!mpQWlS27ko67 zhk=uMKF>*0MIhhl0*HqNRusQNlnunvtoP4i1I-nZ zg*!$_e72U*+-yz+z}!$+^f+4+o#g_C!dFVQ+WQb8!Gn;<&X&|{|@81V$?6($Ukl$ z=?{DCzStFs$)|C7UR|0K2z(3~GQvs7MqJUFu|lZ(Ass%H1x3R6=b*%S>d zS!xbTJ#ruEAs!LCd=|{`_0+3Z1@aPw>k-VFV( z(}x@Vr-#oD5M`*{8DyF_M-%xwbhRmV{z{Xk9S;;tn_l`?PGCwy^zfB|J_p+fX zrOIuCo^vl*25D1{pDUxMSMV{VoYBh1&z}utWAbBPjak9dHn<=tX)YKH0o3|9r_LkS zrYS`jFY7jx#0$u?buh!?$oT)Su4Gk};6<*q-sn*JBEPvbjb`$yMB!${$1` zRP&tc0myUJ?oqV?pnbp|2gWo+2*!L@ZK?5F)oUIJ$nXDj3&pw*@f?#Gqw2R%6}reU z;!N7%_O9dlmr5Pq3QUd)|4=po0v@7gc&Lb0yB41~YFub{iE|*81q*VnL_+7E^|7wr zWaNSjQd4s^<_94Zn6IiGuGt)3>8|cE_;y5($YVEKk%ct*B zh<+#kHHdE$WU~?*nHl=L^7GyIQ3oC`;^V9q7Iz>8*j0yj1~xT-`7pR)-~9FKh*Cb#mgMEs zH=)cERcR8=NAPzE>X({Y^A_GadJa^Nz2)Y-4C5~XO(hl@=kHzIh6+|Xt$b0e_;8k) zcb5nC-1Er255)eB;QoK|x;Tr*Zu2pX9|p*$|U!e3MO)DA*6#a36Nz zQZAwrVbu9a88IXc0Wf8mO9 z;W;cmUP3Qxlk2G`F!aw*=*A&RcQa#&%L%DYyK>(vwVjreaEpdd^1J4}r)ti_Q6 z<*CqTFQ-LGUmJfF=Lm{ zh;1fx3nxO@_>y~;c{Xoo;L3n!VTI>6Tjf{XP8v7&TJSbP(io;WuA6MdyGM1$i2K_t zVdJr_xbsO1*RuuLeU)d>nJ5AWcNVIWhwv&`WIc!D?r&6guBc;0W_rOF)HJb$b}w=_ zyOc5yo-GW5-C{?ioim77@6q=B$Zg+_@_T`>cr~ktZ zj?e$TJaIig;JmtQ}2=gsImMZr%8VLh*M=$BJ*#tU>YRAe--ctm0=Z z#0(L=rj-&5WDoZ0hvh|zHnse z&Vu&KSd(>fHxea^e>lArm|5}00exR31ku0CD6%hNg}K)7(_NMChON_0QdD$bP6n;2 zQTnnSehYkgek;bsi`_XN&+SKnewuGk0Wgm4Y>1bXJ7rme*{G{0!+V$50(&H4mM)xoJcgKf#H!Z7v4P}w3u8wL~g1G>=ff$23h1aAY~A0kBD*| z+k8}lhKedPhcFWR0`l8cwyBbLEXa4z052|vqw3$sJ_?t;g4G*rWJaTMtlstJXZI<& z@P*zQrIx51r%j)ydm%KIa3=9OR0RO~rjxkdAoc;4QFNibwr9D|P|n5V-iy%zakW{h z>nA^^3y(BL9@03|S~3_DsnsEk?f@Nt`)+>r(DgpH?*UdQr(vf|?%mCX!VVpe0R4&{ zNP&Q?a+T!_a5SHj3r3p5%a6IZTxO8Mi$PaZnD&0PD^}IY_b>+zpN~8Il^APysQyF4 z>QqZs39w2Jd1cVh0H*j`IBP2%hkcPNoHb}`tIeA-W1jtfmqbk9g%H$O)08?WY(+St zu+#Y+Yt3CPW`sWT)aHX@gKKXeQQG_L(6HFVzkHGVuf>vo?PB+;-v#o@{ovq*LnA`u zLIGYBklbz zY-sLP{|JJ-njDG*!I0$#09-?5stVLj%9h@p-3mKBwF5S765+e5i!voTBP|fqA5ct| zFiTfVFl$|LBE;Qaa*q#mySl#Y-Y>H>Q10zrkMWvpzYV34;XN)~F&rbDD=x&2C}j=S znw~W&i?HhZxuTMde|ychuF}N)+J^>@FE{73_MIAE(c=h!lP4j~X7cS*JNJkrCxM%_T`P?boZP|Sum>aSI zEY0^Rc<+(r?cUQ=@_C1^zel!L{lF9m*V&&ILQ7qvis(yXHJ(Y$aL$s<+K0_#RDV^6d3HRG(2I^tSPjdU!By}vm^f$g(y~2Ps zS-+bN3b8d!!dqeCIw^^0UG>+hlO9;(irAT6J0JU>#v8K2%)`td9M!eFh-(1Fb}CR& z$3fvuw28gUj7{AA&I{B=YZzy9@ab@dNisbz6}sjVrgC)evW1DC(-pc?tpb+84_(qg zSvHYN8n|06*&ufjavlASi)Af7Es1an{}x^oXlMG$eM@$I+a;3z>0+WqQifqwjkMGd zl}?42=C%}g7pQH{Td`cidxc?axutLAc4oU7h`VURopA}xey6SAk z$H`;~A;N&S>!sT?`W{gL9Cn+x8;*Z{J;6?Ps`b^kyFw>!pEMtWxU#KGTZb-{ODw-? zwFv#~MNh7{KRq(hd|~Uz!wem&2Xi<_GU$n2tznnp7ATO(1k+b}5``T6<@x zBer+o{j!C1=G8|&%h6tAdTS5*Q+rd84UbuhVFdA@Y_1Ia*@cmJrC%caIBWLQ`rt~;Qd0%sTmudzh$eVn8&%E)NEsW~kmXj@W zBqTRWsnK{x!hKA4I9J3E5!{RBigA$jydiW%qDYMg<9^f6v^^#FeCsylc#56*gt@oN zGS=DdY0klHh0vpD3rnUVqj_1X2(!Wg(Z>l*9{V4zfJsl4poi)oQ4r;TZ8!l`v-){t z%v3V$4a!-*onrufiHDU-YGz>t@)SogLidzHAT7G+MI2fPc90CQn^b=_(mm%`5}k1H z^fA=tboKmf6bSA^;(&^yNmb|pq>JDx>hozdZDSNG`Dm%dhc}c8ae%Tz-dhJX4lOJJYlShV9EF*PvI8k7xP2S8rYKe7)>w z+)(&I>|WH`$JRo|)1;)Qq`-yKz*+%|CH##HYg3T*b;8piA;UjJ^NEo#N-=|Dn5mfi zTnyXlOrq9))xi=Qr8m~)pTyo9@E1NfDPSf{r*cJ?kabTvH*j2crc13FV18s_@A(L? zpJ11EhGjBB($JBTatTg`*JhHnU&P!;-8Jmb^_Pps(H6z{)~0CI)j!4W>QMIZQgCal z%@2qYeW11H`o?Z;$&bzH*+2imXa2AH-2d74{{j0zt!(_mwc8jhL@x$d)y8oU6`A0> zU52|-+>12P;Wqe?qR$sD6FyDHbVf=0Ts;x^BF$^drW)B{U}-KAyD`jrNGnxTf8B(o z?R73b(}-azBU5=k$cgZwRbc5w$rEjM!Svt^c{9@B$Oi8TJzu_^UKWHaa_@o!Z&5d2 zJ7#%{jDJ^b^5h|=_mLr!r--pZyr}dPa?#V~sRJBet_qyz*|twsn3n#&W2^2=a`l;- zfNc$a#c|HE(}S5P$gAUGu)29kS7BdJlQyHYuq@(g$h9X2Pe=1vm>rf2S*IVCdyWrR zN8xU5U{mAS%Rn)_AY5R*Bzx`7%sBM+7J5@|fKQN+uI*9B)w(8czuxK0!rNIcsssD> zk(ZAd0{S)acXi9%|2p^Bp}1bz+dsP>xk+SAwUk0d5>MKLcX(DPFFyf~2Go@!9`?Y% z%9t8G)wzy-0AAM;s84R``*3pWhPactN5q3(7RB75=Z23Tm1*WmD{{~^oVDG=Mo5To zH~c(vtokt8s*fA^XeD8~ZrJ5L=Vbn!pU;dg{ojOjTakNf&=YT0>JWxjdVWwxp9jl5gX-V(6gAP?)MO$qY-O5DefL#$=M}jKX7Y zjrjxGk0(YM7S(c!YWs3gpFV#^Azz8#$V{iR&tAa}UGofTgHW)VMbgEWZCthI!LOB} zM(#{@3$#yb>5Mc)x&3NkhomNj41Py|Qy_dtw-zC#5Vh0L36K|=S z%XC^(d-U8F=GhwHVM7VOt73QjMaoYwNe!iHQPVqCPy4o%oq)39dl_9v3k-e=rElzh z_?0LE@H9+kQY|)Ic2ikbr4Zpv8zMhoW9Wo@?7F@-Cg=tq=K*%KeA5rd2;BracVG?C zgsTXbu`H4G1DrDkZ~Sj^YSEjByZmLBr$>z<@@71C8P+~t+Wfv|M?EdlK&d8VUApkh z>qwZ2tb@Q&^l1S+L4*0xL^0gf*@$dbD)~S(|xZ|U8y8jo-*YSf~36ZSO zmhs@2ppoXh8drJ=+^!bP&rKt)ZX=3t6+2a?073V}*O^6`^ZS=%CE7PRTJMzEI_kSg zFa^9-h4=h96I=6Cb{;^*JCjX#$LA()zO^uLl!67YoHa`?4#%wA2G`@ zutgwoy{0G}S#QGJ(tM2R)EhijPmu+M{O-r|=}8(UM^AswHbtKZTeH(*+2LqynAKBb zfi`rB3s>Bm4m|cC<1l;_X0yguVY6~mcHpl3B6gmC`OxDoxi%$fkEXQMsNU&mq_dw zKHV}+Fkoph!ec28qYP_j_5K0v(Nkkd-{fNi_RSpMdFK<#aw_XLZP;4FK{w)-;tIHk zm9M94{rwlM_@>EgA^IZqPNfQKO5*5z)nrmTujrabik|%mgB?e8UKc?5fwT#UsQ^v@cL%Q$k%g+UK$HU&qYJy4su{)J zGNWk?hfShfSA7+dmR>L7$M+COvlK!D(ku|AyMsRY)s|jTmxGaXvv^k+k?v12m2#q4 zjX7Dm$~RPeKp8)L>6M6z!zfg4A>d#TZt)j^=(ea(C&qiIp>~#UQ19tJMCJj+A2cg zo~Bflycn? zEqR&9dajP`OAaQSs~N!9tJ1+OoAoTecXjdb+e_*#qP$@o$S74kC!;)&gW#7-w<>Oq zUmSv6hJvxRuihM_D6cDAK%c`$kxs}4Mxu}ujH6nQd^P%Q$<)`O-@#geEnqS`U8iDp z{La8g`fk?{GioU_R`gqo@-mAD9oI6%IdddD6u1-U@z|UX zaoc@MI+DV>dUoM5q_{tTp8Jk*!N27i!f4jj@1S`-?P>6k%JCbAPvCbB*kog-gI@yp z%*TyHP#&x*!-*DxE&*F)oh2Q+Y4XLO(MwkwQVs8_N)NAAML`7U*xP2dJoWKN)SpK3 z$|L$};gBmS2EAeQ(H<5q{5to<^<4k?eX3FtLP)DE(^%$Yz%;IP0FuKnPh!x6;8alQ z6|$>a2&eYG3&zxy3<_)3LJtW|p@&jekIlRu*p?a}eSIvNw#fTC5+Lcpkjew_35Esr z&A7faI7QrJul*f{r;@*>rDWImc)c+F(BAky_K=FuOytF0x^(?8eD=s`F0dA%UYL=+ zRHiwJqm=y%l?83FoLu|^|IR-vl8G;if=%HE9|43!4*+Ap_7FT9*57DyFKLAN80+R4`wp{$2(SR3)d2^N{5I*)B%F?bc_Sf|4 z-~Lo4!$~a58fYy+-izW-u>mdX&wCxeRa87N*nqRpY_S9_0Oo_;0YIRiqw|IDS8jdz zzEZ~Hma1B^@L_{!(C|VmrR6HgdI~g)jnrVkzMc$l|UwLhPrnH<$ki?GBKI38SpAX>NBtaZ%q6b>e3>0A^tD> zd-Sh+Nl}I+Iids=UUH=};V7%&4p-h~2+YzVT&R>vj4WFBM)Bcd)E$Mk2pK2ei#lUZ zhE|bMSsxo-TY|FmJ6Z(Q)x(_~4-dGr$Tf&?8&T3~Qjomi%|en0MRU8b{!fWgA@v7{ zaS`UA;mziTOMDCW{+k&D!KwN?Df}P#Kcqut1~oTyb|9+UjWCYC+e5;b$}*U`TnYLK zUYfYyG~!?!-#2hZsn3;=6A+ya$St+VB^WTzry*H5tjSHyCC`eW*ZK_iq^Ne4jqJq0vo;l$KnE4nTbI* zjxvG4oc0FNJOI1rO|1q8XOU zB5}2zpHX38g}Mnkt?hhg-ZuZ}F1>x^N_+G5O`qK7vB(Az@9DQP&QZcOIL8amp>F(X zktUg+5Z>74@Xd2~AJUfh=xAE{89h@JWO(6UpsxSV)Z>5XTH8l0&V>o5bW##9V@FT{ zho2{hAMR^Uz6sL5|7Ll~@p;lk>iyM`+&rMgGa>p@bEJcsZ%QI@)wAqy{ux94Uk?`* z-j~Ghj1TJ%d{CauGmC#Ly}@tswd`)tn;N5w@yVRn%zIwHqAtcdP`{`LvS5NsTjzT0 zK5t+Zs#n)3#Dssj>$5fmX9rc`f1$3Jkh*b*pvdsX4SVd-wSFqO<9lu=gnd6T_cA!= zM<8km2P-%r#G`)bOlkoBF=Hh-=|?1`|9*?`uRn~XaD$rQaoLNoiIIk z`@@8KZ@7I^V^M+82Vh8Fp8;%9*RDMGBbXzNm47D@QUY-2RLzlA1e0($-{vWY~EyeU@A+4DWTR&DQ*d+IDI;IcqtW-K(LsfnEGM zQ1ys(AnjY6adE55%xl)i@uL#AWY*5t_I9QvzU=)P00kek?W@@`<0^9>#RtE8xh0I)MMy6!mo4Ch&2=(e?!i=Wy|e&T6fKfw})54nTfWX8nz&27|cn25&` zgT135Irmm0s*G^-^0uB^>NG!mCUN?;vhR@LfukF@*6rxtU$adpn$PT2bzAG7R$Zh~ zEAYw(T+G{DU@^8C9emT(s&+ASLv(c%uB`TYtM@ETeHFm zF-6`xw>4mxN+{$2!DGv@;fkAwKU&ewrS6eUbF}a{1^N1@n9cnJIHj*&@{tX|fwPJI z6F^|Q2JyPH`wH;SLa$<6bDDc~koA5;&~yxTdSxtJ)ur9p0;9YC*(y0`18pt^_W{Rr z5t!D=9Jis?s@*G1nDSjo7>ebbzC+RyOiwznkS;u^^gHdjSG;D6-jTLH<5P}q`)}?i z`&%F4KlA(l2TQylf%1P*_vYbHzJL2TQHrEQikOO$kg}w*OsgeHD zb-%9bdR^!1JkOWd%Cwwdr}CtgIR`Oe3LDvVNpz^p&8Ipu*MR>t_2ASNmWX48-d1V; zWVGE^j~f?)6OF%KJ}*MY@FW)z@%?ZrcMq5tC-FjT5k^I%;Wk_i$V)0 zmLBsntMeHyr#$XNc7rL-N2FbVm@dto#B2heItBJv@<0i)uB;Fk&9)HsRa1enH#zMh^U83n8~$n3DTn!hR+jHj@WVW zYWLatM-%ZzM+A_N=?OBds@urd8eh>J7dhhmahw^DV6h=KX={7(INAHjOMCn*6r3f>74 zV>k3rwfxD`Y^xSZl!97uZAF^fh}@Zn0|OSTo@+i)S4%vcreoexv8P+}+-d=QlY`&> zbU*Rt4Gw7|{U*cSmLfZln-qY*EO@J~-M>+@?VjxW=hZ_!ta+=}YR~Pz>cZ@X;-`Cjq3GJD6&f|K9J_lK=bkN=TXMv(qW4I%d zf~IFfZ&3g^&p{V~)W=W~e&bRKdxx22=w1pF>dc}w`yRjl`d*EjqxF5=)?Zb2LlJW_ zAcXNLFF08__wb*V=l-|m-(#5 zp&ptmcsp!VuUUOGahu7Gkafbc0%e$bQVhTydx2%uFARS@b#dSyUg;KD$QTDIREr>p zo=9VznhheTveh0=A^ZF4w!s8ii^hc$)g#!Kz`}^Egmo&!*XFDWQ49znNj_f+@AWU}_@bJB9R`p%qfi1!C zWfrkfP35{hxR|!OU2i`#^^ZJv=`Wx4)+q~1u8bFR!zqfm8cR7wUimib)1h^6669i( z3YjPh{VAZ?PhfMs8Di0c-uyYhnXaWBuG8*sSGuAbQUv#HGY-@081@^ZlZ zr~7JIfWUuHZGE}mF05;6a?Y~~O=#xgTO!70F~^{Whc625-wkZ`9ZIy#LmefffA7DFXA87*#myjsaBQ+eUL0pJjv4xqqb$`5%AnpNf`$ zUC1o$f_J6zUZ6Q3aW95m0{W7s)m#D?;~YK_6!R$bT+|i>H8>bZJP~0XXm#SWT~XXo zmRP>m*}JD)G#;5CdmrD6wORnlwlF|b9~mQ`FdU2DB>tW=JWwMD9iTYmc)@1uY4g(e z7~KZhnGZ(;xizcq0awNPB!J1bJ$ok6-31>S;(+8jycvX&F;AzqrkZQ{j=q)DU{j^6 zR(v(g_P)i%PAASA({Cje_GODYkh-HQXdOn(|#a5D@N8)^+LVC5_h#ZT zQv@! z2to@`=p5n_njD7WSO6g7oNn@0=)YO(RH?0vuqa7mFiwT9-Po=aKV+#Rq?Ghk;3$LB(YvK5q80pb;E3#8jN=ovQA7%GT4`eX;eTJh3f?vh@C3# zVKQP9i`t~t$>wz(7CiO_q`f>8_<;^k3SU0G*aWRddJN@yvdXBX+^=|D#*YW9x!$G0 zVHq9qv)g07rF?(l6zLV~uozOO0zMVZQ*;~0z`MHII&3SmQuG2P#eR?QG;K$RKE)a| z8KL<`fQ$>g(PlXT7gV247@tpsD5 z4&TdMbEx@?NyqkkAs;{9eJyg)90D75QEqg4J*8ZvF~j4~tt4Z1d;-28clBATx0Q;> z5}BFB>10RnRJ*<|0&5CgKjS=F{OK-Na$kvX%+LmkdLr#0*nJtd7b+QFA$FSTcW@NGva6U03uZ7d>4ENT$uoFko zTc%}j9}{iQh`F#rsU2pP#zO-Wj~2<_d?>Zp0dk`cBFN9s7kqBhB>(PB%-Fl5ja!p` zwI|@2bR3ogrJcIh6TGbe|53DJssmwRCMZRB zFPsrTLi6F36rmsax*Wm$3<6mPbX9RnC!x=j_2+hb317rldUdGCjt<>6&~G`ZwITh7 z=P0Gvf|#iRMbK99T*$_XCzcgL1M}3P@1AeLDg}im^kDPI^iRev@=qR@9Bfyb11QdA z49g{gx4FrP|CmD09E4iloivX@HvbWb9h?1DlXAeRN4lrg<1lO0R!j4Fp#xgX7`&bdkc*o<<1!XF;%T%Tl^Fqkz zFK^L-S0B8FuLt^YZ?FMZ}747Dsm68Lj%-=dyn zS{3<4q31f44qg))J|$sLuZIC`7C1gN`~(WU#BdkeDCUQY4^Ymj7vMd!yF@-*uR0R$ zD-MoqWkY5fdGjK9%F7}A81(HS)ZjeF1je%UENK@>He#&Uv~ zM4hpHoVMByyx7ijhsj(|jTxZR|EgxcH$nfM87R@G zyj2j>cP@T*M0pavZ?njg%tu7MSrbi3a3YP9gN)XGxv3j!Dsx}UPFgPZT29Z?P1MZ3 z4^YE(G(8n6CC&tcuV2%PcEt{S_Rw*vmHQt434Qd}*SD)ocw~lUi{98GPriz6OPA-w zJm>kq;(;&1#N;_S(+2OFGs)jIgJDsD6{V#PWENe8lK1)&TYFUV>_6M8*QE33&}JTv2Yz1FIr;)C1NOs3BHQ@cp4`x=df$_x@uGOO*vlx2CU zME2v^!k6iy-S5*Q_XP&lbc;|)>j-GrcU+@BLz%HB$tP}X#P+Q0>oXtGzFRsce2#9^ zO5@qXAUam#06mBPhEg^gStp9LC)&c78vWIn(p@pEQx9K1)ec({^sGnm@9+U%V@$0$I=#6rh-)0UvrL~%j$H{No_UUuC&@4s^JlTxug265(pItm< zyXA}hw28HS(?j*E!v|GEC!Z3e1b;(3d1tN{-jW}OcVVSL5t#;Tk<;|cX=Oy-Mu;<5!O~^QGh)cmqmq4}J)EjCKECOP(FP^gZ&a+NFQ+Z9QMcfL zwKSy1rI0N)MvP_t5peDbzkjyvc!(vAtaDiNM9r8fU-bh-pBuXB1b46?uY)CeueGF? zo|q|UO=7BO#pOh|XM|2e!IGki`2K$NRUNl3yy?5v_<$a03hWe5vU(6v-<9U)G8C-1 z41maYlI`#&tkfut8xh=d-+5mqRYVJg*xe6J6rYoSTA1{X0}lq<_nzPF8cUS91%jwg zl(lF&t8>>VDh^XJGG$yo<$goa&)~92r8L)@B^`s8WIb_GgNogYEufJ?0fH@fV*hLx zLD>b-$09|1sCfz~Df4u`IIuCT7E)5Sdb{dw`MB~_HRH_`8YyQ~m(2OkDDIeT zI6%?|9Z{OaG$PE|p3MsD`kjiu{5BvecWm8xRoD`}e?0y$`7C_t*NQ-?;SidhODjF} zAXBp!?IHmm`=!&s$?lHpjpFQR+9_~lhxaen*_oBZI)(oNO@9KFIY%IC5b7Y7Qyx`t zw%i{ZlK}bo{A#$+@!PR|+hjBe*>!`TPx<*l|M(vPJOb~W9+ zPhDHLx@SSoa_PB4$eUa?xd{#L22fcNr<4DtZo3<54Wa-Db6V_Ag*cn(R{u$wL`30y z$VtIA>196<&KtYHA~R8gBU|)pQ#JvgZ?kFJ@2dCKhsGY(pV&%%0?`2pLGbG&R6Nn# z>3_I)N;ao5N-d0V{q;*h(z(4tU`KN&hM-v&X5rnrODZ}6dj0aaZLuGM9AaROL{oF7tCQz&BkP#c zm>d+#x-t=h_mEpoCm#N8^aZnTy2@eGK~3eF{aPe3`v#=14P{ecj-S?X+Xuf$3r!+f^=)_mz6Q@}Ur) zp1Yg252pZd&9?RM*bQ0*bL16U2p{!ZXtGE1gv=d)}ih+|~9WLqh zc=})wvy%lH-pbUa7RY5i#upz@=VVP@!Mxk3RzPl>%9&^U+6$aIe zx|jUdco#0%5E^z|RKR70XMRi;WR!^;2ZXJz&7kc+5%15ocORF4^>XR6 zk#}~7jzPhAXgtnM?|PZ6L-THj?f|DC{Sss?@oyK{63BJ#f{J ze^G5wTbvnY(txtz0_ph>JFA5T0GD(HZMJTR{_(&u(x$5qxCZ=m_Y}2>!#Y4Deh~TW zPh(yIhp-)Z1NM)1^cZr4fB8FxPG;afN3VyDsFd}B?MN~=5WGVX5Rdla1Ah~jyH`Ui zkXJCff~f%>R(rSp1-4N0U}}v1Y0tdjw%z>s*(VP-m6>wLowI|N5X)8;mj57WNtWAz zh#P@Z&1u*fY4pW(g7y19{#gJCpZ*J`%XHa4+jz{)TZEv-i9Z5qAnT}QP-YY=kVHbw zh11egsI~t}1dwjvsq^y)@<6A*7*nfG2hLeAwmDOgCEi`kR!GmKDJ>pV`u^>>e51;q zLnG_+!y7)j|8%SU?{Q}8MPC1v&&U7cuL;%@`Y! zO)7>IkIHgvJ>PiRf~TOxy+H(U!ns13G4HUiG1hR)8ztRM`D34+T)+6^{=qKYHSK|- zHAII7s38SY^qD0xQ^wvr?v(Aih0EAdkhUd3k^E6j?Y^TIdL;3OYg&A#~0r$Me&22W`z2b1mz4m9f%SWQeQ8>Xq2 zVBhaUR9&f=`znXgxE*Th?%`1NjdJVDP|tn;BuoUFWlM@ZTEUY>A!6AKNCIaLb32bgK%T_L*vT<6_t-RwGN;+^PTWw@X2gK7i~3uC*53J|D8;Ozj|iG&C1pt z<-t4867BM|j>%v7pP)4TU-->U#@nK-1LrTsua*)F{;ydeJFh(jbOn?E)X+d~I_HfFyA>$v0t5mzhtP^C)uGL#b1iW)44v%eZm3b^Ra?MbB4V>+YVEHh zllIQX<-!D@JES5E)BG7>fK-AFuT#X`ciFE^+c>oJbfam8Oc(<4$=9_kp&Lo>C-xG1+NccIz*bW z@KIe(2^=DjTL4Vb2O|z85QKn5YCWz$=;HalLsYc@**Hwcz!^3Q~!78QJj5lD(S} zT9#+4U}HNOwa(&N+5%Y=%hq4 z8I$3jq>qew{7^q`1nE=X@&HB{T8FHKLr<2a+OU3=WnoOvf!IouU4~EEv;~)c7CV+N zK9}g29;E23^lTL|LO$8=O};`V7m7h$rzY)bEI=M|VM#D-atH7(S%XjXu8k<+ct3@v z-`-cz3MJaiVZ{j}Xc3+{_Qy$360D6KD|@_=$ej%HN<%Ssvlg4@iYG^pvI6Ig7sKkv z!eN9;R{`d$mkFdZT|m~8@LG^#XJuYF($i68)b-8nq#h^vh(c@7s<70ws9*SO{%d!p1fN+*CwthC^chEg}l=ev0{d+60{ z_aaYEbM66jUyG~8+up6edCb62PF(p|N&FYI`iat-%i_PFDB?wnLIEE``EE6y>T{dP z!N9_I$#JnKe`4u#a{ne{S9%;&9KL7 zsvh!tFVJ*&I8dQ0Z6$NB6M76a;IIO7t%^vUb^FzyCocvj?jl@m_$?*)V{gqyjb|Ftav4tkRiZjm7U{D`kqoC1Z9@d)Dnq z%C{ZKR|v`iBJAOB7Yo>`uRc_+m&nte8UsGH6ggA2G6%o`@3hnsT?bE>b!f(KExk^? zcWmuO)y>mp{|?msZ*JKtxYCIB4H`6}4JIw3RvOV>`gbQ z|H2sikBoB+XgDq}|F?$Y6QHxW1mF1ghktE?n?+e^f(xquzXbmXa>PT1JZJ`&h2|HLE5~Fj=w0Ym1I|~L! zm$jr@3Wrs-W!C!VXRRv8?G9085s?i{el94t&kl%^ZA$1!_3GxmiL+H0qiw3MrY>lcFVLLP~D#%eScY5AIZg#o6vQ0eEh1HZy zG%`^PP2Q2e`ub(UC#WGE&AK?d85h%x?BPG*U3q2inzo1ZvYmkz(Pq|g_Zn*!j-(~c z`(Yi1h{mOCMwU^x=VCvsM4`?(1WkrG_TcZUPJt|w&KdaLb zdF<$w>~EWfcZa>6|NbIBFJZpg>e|!2r!Z|akb5EPHUVLv1lNifg@}DYx>zJeUvKKc z)55kly1hM9D@*Ff9Fm^A*uLH`PhjIW&|!wgI!j(MnwVJvbYf}~Y1yqjpH@*Zb7>58 zfv}p%X3Rc7v?Gw+ggvDys~JYJf%}+*+xr<^ywd1na`Ia}F3pv!667s{#UYo%x~c&? zY7ik-*Qi0CJ}H8-8Jk=xmi`3o`+OSv;Bq^+$nJ)N!Gjly^)9lM+q#_>G-=gv6zr&mP-z#6e}(A;Eo9xJgWJE>F${<%6SfQ7KY zpT#Du$NHzgQF*z4?=xP}OFUxNbhn#2%AR+YSJc3mjHo*np^X?{ViH7l$2ye=mq!o#%W z-DTAcn#5?_4S@~@=U=!vF1vXA2$_m_g#rD z4o_N4Yh9K<_dzb*?fan|CMo9eD4k7_xRp$kA@$-V4_jTQs6ax4|g7xJ8To zLF#Xk7>qsrU>M`-pYg?JaPZl$Pu~Q8id-}iQVKq%Z~@$vF26_{=!lg$5`ZOhZuy5^ z08#vBiMWdGwyNH21@ouJ6l!vD^9_x^4)2gfj#Hemuqu(M#Z|dxG`bq5u_a6^!YZ=k zT3;`RXUe@oJ66r_P+Hu5gbV;W`ZyWhUkXa(n5cfBoAgv?QW~&ABek5K4~6S9Rq7fn zD)i3^nk1O1?X5q&;a9!Z17aMQPIoEv7veJgk``r( zRW#gkgLzIa8)fW6q*9e6gM-koNMG$28Cza)x8t?y;G#f<=WNA`EM~@H`F#JB<#f8UT4m-IuJ(m7>qAqO zwDLcEf$Ef~0J43hn|Yac+l(I98xLGJgpWsErJGSDK{E6Q$%s zum+h~f#srB8kg+GH5vD2+1a+ry5gLhQa84LtdNa<{GjLnvX}XB{uOGzmGT4)?9(e{Xq1V`AOMdF6<>Nw6h^9Mik)cfQ+0`ILVw=9W%GsOc}6snB|rX812Z&RZY4Ohz? z16#&usr!tQ*SAT3Kiv6O`f*eX-=}v^nfQ&PiXI8_RxsrMqw&Tx5q$9=`WsRQXdP$_ z|L~|4NC?*$0;Oai4A$zKNHVCkXn{h22(yqbM~ntMs)`n}nDtOuA2mvUTY<~@MvA|4 zX6x-_<8!9h^}NYrMij~iWFMGDrO?}vMc(EiMD#dYd5rf^+kbm?s2gE>ddGl#YpPGD znp_~hwsyVI8W;sgt+9j-(q?r-ZR8_u1JA)hIo*NLwce$=S>mCu@jW-G*Y^#cTKQq( zP%IbV4p7kq3~|9h!5q!OvI&La#Ac0%d+#&lY^&xkwdvCMEvlw_x=l&(XZQ2lwZB}W4YeLyHoE0G6JEz8|Cm5F z{00xF_$RtlBfeB)plb{%+)(%e7P;VV)k5u0!d9eTxs1D6Y`I-`pzpip^@Ja1WWuA~ z3ND#(1#yz&j0olc%eKkqbtkAyPoH{wc0E%QQ~zXn{kNq0Rg`jQ(6d3Dt;cbP!^SGd zT}aJ_+j>h|;x3mQN$bB_FW~)Y3b{_9_n^NzU*hLb=sAO!X0w=W=?#?C%y0eV{h5m2 zI`T~AnjAgka-UR<-ZfAsf>w@$LFk}EcDW+tdy|-v)EPJSzMgTAAF?W1`ZfK^3CgVa z zkJ`5V4!NWztYG{|Vn+z%NTGiw!TVAo*d-k63jR~xh1X4PXs@~fS>Xrx|2YxnhkNe1O0LVhZQe& zDaAMMd!470cnom==fNpNq#0hOUI2UrJ=pHnNI=%)(I5G0czn@_xuYb?-ux+Pv8%t7 zLT?4;T@)AW@^2OmiFj@GgUFN7Lqt_2cv9oQ3yd)vDSPr7ppeStw8=#9_9ex=(Vlky z`Y1ks;_Q4^>D-I!xw}0v*)*1eGcOKPTEX|nVSx)+-(I1`ta0PeAqJ{}wgnd`^D)rV zsJ5pMs&xz=Z@a*sy?|-({{FPu`&<9wruG$yL!z!-p`1|2+L_}_4DB80QNhB@e!V}> z0oheZ7T%=W@Y7A!L=5>Q8;Vd8iyUoTwo2;2+;*COw!r@s5ONItZ1$@VvUZv)hkU^R zpJNG>DGOCE8%B-6%V)d#COzJ*wy0@iHUq* z)}Dhr^Mt^7!*~Bi4mDb2t<=^9zXR6W&wu`rx_WX02G;Wh#U|a*S)LwOA27)Y&vW1; z(>kIZJLT02%)8QM&ljX(7v#>_tw;7dB^+PvbG%DUKx7iMW`O7sv|{HbwA@cbshc1S z&N@_mbl`^UT>B>B5HqvKx2$(16QJ5RubYOg`n-AXL0A?;rOwPNTxY1^G#>qI3ME&k z<_4|DZ*tl5juGQ-)ogV%tYqj#B(o4AbP+Y_jfYf3I!q(!I*@s_o@5tRN>W9hU+G#?M;IBS9^^WlGh5Qpq650BJA(k zuN`-0fbzXybL;0y5!iOU$&C*W*M1X4_CoZR=(iRzpk{_Dqea(A!PP2CNyh12U&>Hw z1xNcccJ3MdW%$*5>-BX5yWT(eE-nCJ2QBm6-c0&X`>i&P42+&CY0%%Va3t&cHoL2L zFNdsE3=zLdo|r|%fmS#)0k20#Mfgk1EOAe`z5VG^z1`&oeReC&H0E-J$fmCt6I`Ux zfugftj|C|{`dUDvr2XxyQx;Qn4=twn-Ye*~5DqcPF%rmET_1jN?T*k8ae=EZq8s2; zwr&$;P3^kZxU81yA4y|m@t+Un()kt_tIgbO54TzRZ4bN9ecw-MLr#!Bn9-ZL*IdwV zQ)jG!9I>@X?Oqd|DQlZEgAXmdIXx5+ z#p02+Ab&ZMQ>SmLsd!wJ~C0}P=0bArR@c7lS6d)j~$c)-km@P*RBW>{5LDjd@ z&*#R3S*l}iAU)Si(yeiZ7tap77YKqbL9BC~&J1)E$n{BK{*;!HGX_=+ql&R1yG!;N zcNir@2918B7ovAx?aQ*dI&@p0c=PDH7Z1g=gkrs<{!NbYzY6iPnge)^NC=@#5)YuL zkVG)aHH{CL zgsZ2`i@8=YhSIvcJ^n_$9}|r|Vl{RO-}kjC{V3(^*|M?q*bX6}im3H_1_u2;n8D%8 z?zxfs6*DIo%Awy`ZIRhG-pzPNZfw}yI{L91%Agj+*O(JgVy_n_s&=deRvlwc`aU1(rdljG!51q=ddh9@OJFQnfXGD zpHJq27(|k^zL`14uO3-te~Q91^(Zp^D(HlieIv1asWalrGc<0%BxP%41qo^6x$ye{(pn;B9t0#*Z>I=POkaMgE)4$Fs~w-vBX#${8xj^*`>W{b_jrGTP7)UnB4K|W*k2orYn7!Vnu%hAQ?g;v znpa)(YOrdaR0k-I5SYu`md|qcMr$Eks4Wsjvt0wi33tT!!wYTWX#%iJJ!yl!3~;PH zOlc}Y+DWcSO|m|3Q;!z(EAbQ8h6)~izI`p+sz>cdvHVAd(|m&oYer6f?5}>;{5jTH zO=?pM;RT@{!#ZOTieZ6rs(4`f7%kkra3LVF*|)m6qnfiglFn0|mq8?s9{vIfv~`;3 zv7Jdf7U}0j22d72Wn+KW3tO)?g=|;>K?-VZt)td;K}K-6hVu3 zRXS>$%_uH(j1s9MuCT34l_*i1*K7CCF~c^NP2EQJ1~bnej9xWO5Pe-j%9vpmU^c6O zs~)t_q*_xO+jYp?Xu}KL=S3dz1o=s|;1LT0bS)I86DQJ`;(KV+u=?|!zBfCMbHCoo zIQ}s3#E&{v@aM~jD4`QAQ;Qn!G-H$+%1{aW(tk(}!pT{;;)fH>UUW3v90@!^{^@q1 zM}5Klkel9PhqQjiq429u9qraOTr^mFnEVkvSc8b4VnRnR6N*z7<=iM0)Q}A3-W8xPFQ%4)eQg5{>0I>C2Y&Gm%}zc{p~}AwJbbUcV5{V zb6DV^+uQ`QewIBv3RVGNoOi3Y?56sHou{$&=&l-qr=HgO04K^>%8gn05SbIek6R!! z1E%fF7)~{tJ<99YitEhD+{g`|Z861w3$;;eY;lIj^>c&d!A(j?S!3L&nq7t=TXcFF ztGZGSwx9RgHhB!Sl29{9b64wDK~!)K``pL9!PNw3s%lscskeldcf0)nEv$@ro7?~p z2l`Vxji4y!!ojdKLC&mVE$nru<=!<3jJoLp>r;g|>{ph~w zVur)9XC%U2Az-Z`0S;SY(N+GR?0Wvji;f36;aMQsg18dONQy1!+vJBsFTO^Kc*JUk#nL86%otdL za>1hZU)Ti+{RQRkJ&}l>E0X}DW?u?cGwbPv(b|s{j6y_r36Kk^@DX2rXw&>dtNAc6 zh$t2{l0uIGS%bI?C#3R=hejO=ehu4QyVkI6t}8uZ-$8`6)et8COZbT1a$Kpv0+B$f?$v5rXv*6zL zywmF=O+?&O5A2AgPRQ`2fw*GBMz%y_*PsYMY(*ePaHkS5rEM@7F6~zeKvxV6r0m!$ zcYlLcqVe%*vvCO4BGI8p{p0t%U+_-BQDbgLp1v(AN<0*eFcCjDbc!Z0wx}g43oGKsjn;E@ANeFoWHC{&3i3EMa!zrI28Qljlu4ETf z>bj@&@|GFB6&pt$ z8+Xezi7!B%0K3Te?q;yYcggAGjd)dewm#101Arv5AD62rc47$-VpjhzQZsh7D zvbQL))sIQ(Z+>&&43`=MRsygx(oQSfa--Hdq6-DCRq15L@pfXJ=M zPlT>xBXsRGYa_<2!o1!cSju!FN#~!zZu^ceBL(S?0c#>@1QGn|lA4f&`aAp(?bgw0!enY>%?sDs| zP(aQ-kC)&V7gFv35cp&RwCMrXVT^gQ+Ja!7w2a!vbOEt4_$sbw?T8m(NK&TGK?-- z6T$T%bR11>q->g&eUqL&m0&DYQGP2h>)X~Y{af84?@26IUET|gCNyVrHR6U@gM1;) zmFtE=GfJfQ)ETf$Zw}xHux5FitvJp_u)|oO!xgG_jocFt%jpZEdz|jCLuqVf)H=7( zSSM%#yklUzlP00kmbPe~g+#P=O>&jFrUA*p=ln4dxTyV^MCD((SpE08eSm2qNdg_r z*)p6@;HQI-ubB0<7>V$47OkEly(ez0wPz+%E;VS>^#G|<&!o|4$W3P7Ypt62W2ivt zx4-V@^?&Hu_5UW94_^i1H<|yA4o1lX1h5{m1AitSm&I1{Aq^;Ojbh=MHs7`~BQG_r z{WLic&?W>F#sGmA*-7a0&*e$kB4Tp+INe5jpRybDfEvJdmMaY|*3huLpSs%k#B6|C zLO9CrX3SGTB8?nN*a7xw`U4E>WX$8zfx^x<;0v6SnsYQR|CL)(u&h}rCuP}FOW?4j zXRIhs9|W>Fbe&5c%~(^TIigPL1Jv|=1G^Qln$fqFdSQ01dnpH96kUn95!r48;k z3rLrx+n8El6il&^X=Sz4L5&9fes`aMsN(58xn2sRpRZ;5W-M-2LASW4A+Pf1tq^e= zet0?uB$pw!KM6{GYDg!891HA}Q|wc(nWUV3uC}Xdk?={l-bdF0lYRMr)nW4gW{~z_ zpT_sGXL(yztXBZSy;_BzrY2QV)kG7d3575>+f$Z+~N=KOfuY&p!*I;u)Hr zb|2|Lmp=U?Afs)dHt~JGq$_Bggd}#I`QF3Lp>1EHR8OPm+I1R#?hu zBcl%oh7S(QCjPq^P1p0ZP9?S`bFX0Mm%5eUc>%)jW}Phf|9~MXu%wxEn_6p%yO;Yj z#l6_JWElIiQlV@Ls=zWyW0rCQkt3yt9+pZr!cOHBuKlin(4BF$L z8%fXw-vppH7rDqZ^OMc~b!D&8gI(ngEgwtf%w8Bc*6>Vx7T$~HNsBOmYEySS{+Ux% zKQP#*JdRUrOexlmlL`zz{XKoyGPhm>-dVxi#HKa*RA)zoc#CVcvWO~g#&6xMdwJkJ zP@o{|!0!kjg0Wl?Sg~m^r|KCDHA9kW?ho4wG7~u@|c|{=wmv22P{Bm<}d&jY1l(?qRCGcV_a#gdFulG z4m5S_4jQIK0+qM4j;bGFhE?&o<&3=Ta}hRq8a*zc)61Y{|JC&p5=s%ecrF3#G63=39@84$T@0^xy1N$*h8??ljB9>(X zi!pjC|zE*UD_* zYA_Abp{;$C+p}?q3`-%rxICK?cS2P-@o+53X~VrA2T+ZA{SpsqRbJshL*=`-m(`zE z$G`GwxLFbD;j0|nW`iVv4P^uk?sd(GAf$iZBRu;9ep6F{_f=m1+%S~Uy1%6 zilht2P?x|%mq*i6(tyVljpKn8i^-RFXz`Ez;ck01Tt0jjbtD%Ae~bF^F3R;LVNIDP{S?>UHTaZB6|=4K<5SMO#NL z3%K^zkOy#Xr>lB(?e@w}$#9!lmcd{__Ju&Nf$X1L9U{t*zupZyG9 z+-hD|QTVk8Q&F@kO^yf z;TpGja`vIUDN=)3qAI=rw$EJFotJYnP9Xetxcln0YVW+e5@uEfRR31i8}%|GlLmum znI`Kvx#%BssS57ec`$nM18jzfx3Y(TbZH%i9;Nj7qu0{zl5Ix@H)BzSfkXc_Vf(M@ z*8hXAp#Y^%cKmOYzHNU50HVS-UO4)%oW5(&3a3v9{R_Q9>C44Xng0&>{k`HKy}~E_ zOapwvcxX{zg->|)?|j0edVo*J?n3COW#Z%`K|bO0f0H3;)rw->o#j3E2C zl3OyJ3BO`xHKDiHpRB*x9NUp=rAbGi?2}3 z6fK|p5y0Goe%=J$H%s9X@Gk01ving})XX$1Oero@RYKg>(d39QzU=n`;0tm=(gr|; z21O4FJs(vxQeZD-dj-yBG5pFf>-}cG=e$VV6_cS~wRGvzrsgZeRVEI?uTyR;uRbjR ziC|@#CBDv%e=N_47(V-$TyxDTJz>)-kYouC0b+s!08mf7Pb z3~i~~io4WWGMJl+4e)dOP8-TSV)83X<*3Gy!8dE}-g_vH&p`8JiQG*cxH*j`0}mx< zwOtq)*Yu6fdPdIb!99uR^cJ5H42*7+b?Su=sZ52jik-t3P+SQI-1D~*#F8!hzYXTQS5*crPA zw5Tg$JzbN&e{Fx7{^a=an)^{Es+jK7nNF}3TJRqM&XxF0d9!**h$np`-{ymId9U~0 z?0#~glE}`n%%vYGd*q`vf!^zx1U-M;qOsGAj%`J6!Kq%2Hu1);otE)e|K^cxy{F>I z*xlok^E=5*(EUh@d+I9E2TsM<5W?Z2%J{J|i*;9rMjyF1>J8lvD;tJba*>YqfhwRP zfTlk}l^C~TQLc3=Z0CAP7$8yZsX9{KtD_1?E^g@q=d_gKt<>7KC$*E$!D8Ga@Mg|6 z7K*oPMccjmIZmVL#n`Xb^p`g3g|9!rqhm5bwzoeW{r}i|^LQxxzHfYFOZF|hQMSrf z)%ibTmSVX}uLOZJ$dBI}H09L&=1>%8veJg?5* zec#vfJg?vDzMkLx2WF0!W9B%%$LIT5-=FvA6L$hscMc+D)PmghbbX0A}$blbNp#VV%T?nRz5y-=_PKX3O2x;w^EEkid2)q#dgBMKo3>rSQ@ zu2kKq$UPL|Jz2D;t>BGZg0>*wK>^y_9f0K8X>XbLv7)ZzHHH}(im@}iGRTps+v8qa z%@fBN{M)5SFaQ4Q2_391N%1MP1ZdI4480u}i12qMGm&J}ZD+S(`K%nzbP4;{vV4ht z^U8OYl682RgI5X%@i7}LZnHL2HAm??1nzXRM83P34PGZO(jQbDWlOS;Xd z=H1*N;`n4^r??F*pPqB6^4=ux_mN{?EjV`RKlgBp7uyww;Dqcz@Z1S2nSg+cBY~MR zcA%=NqR&JzsO@YSO2YdJe&l}FmKHCzcPg9N_nsOlu~cMag=u}>$c%d6HzuSAJF$}& z!oZBz5b-P4X%WvFF7hVsd6TAmqND%&<&m`!S)jweMeAAS^rYwHq-oUxFfj&JykW!;rWA}kt#9QyxEgcl- zjxI53RHS=ZPSB>TyVObGqXx>RxGc_s^HKE?#n>IaSDrtA@mK({sq{HJb&Ms@3S{aq z)NqE?=|eXSlCfICDPT2=E*2iZ$h-F~>nVSsm@KE=DGh%UlOv_<>cGN*%X$P=pzlJY zhsd(dJ1q4e6Z7Pm1BCWo-KCuga+m6l@!s8ci}C6a54Y=!y;29zBW6w2fmbZ~x}Lsn zdnP9rsFp_x6Fd>3_Wc}+6bmB1W5p!~vy&9)nk)g%@r`1&o66VFHE`W55oQtOF~-BN zrf5E{B1AA;FQn5>QNLR}jEXen8CJi_9p8^q%NF=NCEmzjXFgzX($!({YAwn{y`f+j z*3i#+iEdy~>gaeldcGrEka&t_pc%*GS?4clXpYzDbQ@Og@wkM&e=)z$zwB40TWbx!rx>01HIm(=b$R@!-L3a!|i zbDp!w;;?UlWQe3u^g#c_w~nUfB8qB#hWnQW37w!@j`6%c$Z;MIrIReqBechYlZ3Ot zxy^@snWv9?Zin-pdCdQ-kCkc7eWO004Spt7!!Ln*Icn%* z;id7ow{Y;K`oPNW;aA(DGwH(DTAo2RC@K$O_B1n}hKEfVC%>*aqX!|fI&rbW!{idS zgZ?&Tu5vEZXN2eh!P^XGuP$nFlFd2lbrc~SbmCU<0N$5zUu7&E0FCD7w78`B0x9K-Hy|>>x7+u%A zCaQ?~TsW&m=fi>wde{xt$0}3(m&k>C!8AE6>nBkvJQDk0gbh+QvU zM3~vi*U0*a?0T^=4qE_``wQwJC5RPofS)==as4W>fgkQzdD+q?2;1lImRURRYj~N>3*XB zI}~t|_*uwl;#SQ?>HNEV^5MH@EyF@ zk;0w^J8$NC>*J6WvEyym_gN}ld1H6_y<+0c$ASkz7T6<1jdq0j8LhSR-yVVL?KG^F0tz4H(1PvO?L^*Ec%d(tsAL-mdhZL7LIE zH7-&rSnUyUPeo$rRW{Fu+$S1tp+>+YUrGzz4A%}x0lXzq-lePBA8ZXVh5kma2*0 zH7)Nzt>`Gt;Jl=WG>)D<(yEkfv%*6qkdU{Do@3moC>$8FRL|1?^c1suz^BU1FrpGG zB&+n|-EIzYD8~&wst2A(>MtC?w+vNRbWj3HgJZsGAJr`s@lJbPq;O@s1edPtbu$p< zg(J)DK~oRi0XM+fTuB**QyPE(>Fz%$%DF7hU6gKTk#tofhmW_8DHNabT3uOkj<3~S0k&>%M0o%^#6fTp& z7*GCJ%)7YFGiuMzGDN!rh8q))yd2j!x^(sqTinjDar@ipd28AGI`>Jk&*3)*8Cbx< zY=dCyKm_G7L{GDLCP;;_3UZe4n4v*& zcu-o@FYx3MxUnz(^Xwx@59Z86l&~a_hC&9jB^36C04x zDGtr2_S-ias{g3|LnjWMK)=t47wBmH+Ng{OnhnCd|~BBES{&?j6#M^&V8H05=6HuGa}^=1$$#d$Z_OCGFFh`p>cI>*M#-^`dJssM5U;KWpFlG;r zKHFQ&eHERan=6k6PZ!1m2MK`cEf#pdH#?&)4KR#?12E(t(rS&oryCX z^5#|`s*#COK{#@_RnAPtWy6T4aXMix zspqb0U-3^ui!&^N1K~n+v5C1=(BI9Fj54pTO!<&h3JH1N*b}&B$5FX>^7yqo2R;RV zWv5ioo`L@^BKqKmPS>Rm2@nc`tjHk=kNK{4lD_CWI)bb&7)m_SsoQNHybzr|nZ+Ip z_tVTlf2$T$XTjPB)$35k8gBK+8(Ti_q{SayYuBquOkxG+x2LbUo@z{Q`yGF`~_+i0% zoGb+sH3xn68q$0u9$zd!>2@@~a&>R(yeIqjF<24B5V5Zxqa0Zn^hRy|QL%M>GTzwq z2Q)q=q;7JqcRqBRVjS|mFPX1hny_G$C~Ypj@=fdn_o6b0>Vfyt=3lD`_2)zYSKMb8 z6O<&wcN4#fnd|^AZfYL%gLtg4)OIhEU`CSL2LBC}?u$UB>Ab>OO%lrmK`B z4D2`U?c34tzRhx2dRN@?7S2FI$--J<=L^%P$N~$L3TO_NK^FO?Ve zmvjVUW|x2)Cc{hwaWH)*xN{4G2aNuUC{a%u^~uw$F}}*@a@c3`LHp&nZ~CO=CIqAd zC{j_d0-*)iIAqN1eCeaDlXWQmRkhKe_VcC5YKl@{?;hUk^Jeo$4oG3|=#NC36(9O0 z9Kde@FMv>zlTPU;XC`01p07i@J2Ut`dDWrX-8Omt`*DLKbPH2)TiY`LTTc7!qGM3n z-p{THyTxtI#Z9OFJ2|?4?^K`sGGqq%D2cYn_APBoIP&#G`}U-;&Bj6&lKZ`n?qG+h zK;4I8MX3gWCXB^v>wl93yOottFwwpYcT)W~5KyRi@g)s!rFTf84L=@YIG@QZV*;pn z-Eq{VF+T7&07XhTeLhI!$cjv-u-Dd61B!A3$@-4-B0uz?hdhJG$3c#TsN({fA+dn(Y`A&&^;`|jWd*Gi_E)f`F zH32BWAUq9CHCqbFKduv$UT3XF`Lu^?z4h9c^LHao@NBnAz5?__8Guv{RV_tUTTd(e7RV9+wlD1R7^@x> zPr4ZwC?VBDP#8|j*`&6*`KB5yCGh~O~(M>VDMjgd9Y)2G1e%E zk>@<9s}qG`E6^R2-GI@764=OoxTmbgoyR@FbGC6B$5mVI%;cG;!U}Vx~zPlpuImQ9ls}UMhm*GWd~3kx?K3n9_R+k=&pO zXM(ng>Yz;tJ^q%OB1@Dh$O?C`U~yTnbfJ1E3()%d90Bv}fS=x+;3nS|LKyMs|3+lU z0_TCF2Ce}v{PrT)3|U{JW!d|n-mo!_NVw~lkKLCT zypsm`7n-^K{dNEO#1G;B(9L$8LsAG+(6V$lilU98X8&o0t|`z?&$1?*W5M#=0sG)5 z;&C5X@7v%9bSeGuwENt}1dmneWjhOo>N=9iRf=cu;TfL4o+kT#|2;aYa>J_&{}twj z1EqnwCh2bp6?7+DyM{-IN02DmboB7dHk;*kze-hcI-Bz)-oFvz&B3X9N$$W!(EvSN zKzacR_pb(yA^&Q69qu6RlYJr}H}7U`1{~!wp01R+EH4#*Y5ejzdZyY+${&|O@7uTT z^Ph>pASs1RN*_F);N<=ju^SNP`TR$Vr}tw?k<8q<*ZwD9a`hiY^3QAZ{lIMQAhWsV zKb7Qv5hcB;|0_ggWlfZR4!BO8fIM+l)Cb@={nS>VKdt+k4*jI}jViDkXDB!yt9+m5 z38~%&4ZGg6E&2t$FVxXZ{u%{OtP!rgJCWQt{s6rs2)s;76dF(-uLy?y+mM9c$2tNq z^|w8MIv=9%5QctqIsl^EwFMd|HiUU$4ViI}Clog(TD{F6Mv1E0Vtp=vAp9!pR*Iw2 zxX=Bl!7kU+((_g6k(VYg#%`e@Jb!P>{@LH7+s7DkpMkEE!wlV}^%udaLf(C3@4toUjl$uE>Ntg+gAp`J0%!mUbQ=dhScKGb!grdPO5oL z@GZV@hdz1pw7xI*Yw5amxhV=^iK&-w<|hgc0}s7$mXHP2i4#fq*VE3Z#bqZ4{#}zT zqsEm1yc(r*h$}OQ!Wxv#u4%`!PX`t2N)G9@*0VBZrP%A;S?KO6i#VJr@VpyI9 zis||{a*<1YoIBY=gGdZWZv}>YxLCN2Th+cI51G3Mxz|Otr(_z;zcYs+rd!8ET_YN z(SmM}X8&{kglU7>rWrDXmxh0X=2+}?_VV<*$F{h@5O1eRbVHcJfd@?{d{rfp6AtCK z3rlyRSx$bv*a8$^EX$O&gQ5Ew$A`7(Ggf`&*y@`O(wozvyvMgdx`ial%VpB z{rkQPK5GDX82)ObVzI<9WIiom?SVaxTznezY8dy%*mCh%J>&7i>+dJ2j|E#^bW=Ry z^}z6Wjh>Y`k!dSAN2^DE8k6P?iaXyIeD-bIJarTJaI`(ZBM4+xyadxlhyz-6CdRfw z3q$NVXr(y5cw>a(dkeZn#(FX_T@cm>tO~~oMXPfm9wbO~TI3LkC?o2%bxok%F=u># z{wF`bGUj1s?k#r{KW)inT{bYB?*SSWOw0Q4S9rXm>Dm8dZC&8XIauJpkY02-{m9EUoMcASXaV~Tu86b8vh;$T$EPVM2TTanS- zd5FOyZ20}nK6O}opjEuFqK+ydTI1Y}l9Qdhy3gC!U5IY=h~c;0pa+J9+vx1z!cN;c zH0D1Js#^cvf_m#UfI&G-fq|`nIoUZ6B;53J3H#v)(>4M4`j zw%|I6udm0d3%ccnRV%e;MANQt$-((VSKk;S8AVT(6-?pcvJpwb%#rpKrP<(@Lo5tnrv|Z@eV;gtX zw_QCgXN|Z90+RD+cyD?Wx{NDtd?6eXczN-YF|SVu&FGP>(#7ZJtCb3(H&3*?{^+&; zTJ>rS7H(C|Gg)REDbX=d|8Vs~h~>QJpPQtT`mZKgfsDWj0>uj-BLTvou#*EVZ?(_C zVKjZ3)Oq_KO*r5X);(hB_bfmcAfX_fQRVQdo|RTVmGaIGk$q%*AJO?g9Ax~vux|+b ze}f2QYD8L^eDyd9d{~{+y z4_QEM0W46Y9bx~8IJq$=qHyT{jT8TWj{iGc^Z(+t*yU3tM~GRr>M%G}R#DrtvRQs; zdg!`{nZIbBz4_?|wVev#bzHLNYZVDc|M|ifScyf+=A>Li_S(^nKVK;89b{F_73)NZc$+3?szog;GAqSb&id0d{ zdm?>Y`_73_*c$Xo?^G(@fHP0LSz?p#2io`rP#lg*%$T1D@13=r@H)#16$ObE_Q@Dj zVKh;KGr7XebA-xt89VMy3!$Q+7hjn+U@P4MXKiz*Cd3HNS%bXB5$$Q|!@>ht)3P$W z*8UfvY3uh-w(jA7-FDLiojjuM2PQa|Je}^VVx{_oxcYN`OP#d@0~s`x5`qS}?CoT= z6Ay4)Igl?7hky%8h3edU0M-5sG#EUt@|;My7j)|LQ;No1BSAku*PPcR({e_m>RYyy z^5eEp4k^rt^zZ%`BMz)t0OQbe9~9+`7QFMiM0$VviL;DTN9HCnE+zT)(;XXKH}llT z?TX{OE}yzSiB3dO{8Smw3|L!$RdTmQEia58W#WESDF2$v{o~(SP*Ds6fpeYQ24g3u z5!L3-imy+z!|I)RV^v?h8Y1nwaO?M*35AslQwL7Q*$;}@**>o?-M33E`%}BlF*~Q| zv(>U|sxpK50d~P(F5|$OHmW&;9<(PbR5cdk5J-vq`MutHotZ!6N&>UysnGWj6yq>X z5##`Je?8`4lm=~VlXR*jdoED>jwH+l4axSMq z%H<;Hr6r^Q!uBowQP5Nk_UKOpQD`Hv@b?FBuTNUgOa#|Z5-f0zFftk>cXk5LZa3(X zvuOq59^unKTz0NihQ^|yX8fPu63_0)rX#r-gu5VS2Y6t7BeX0AtfeHhsQMMO(Htxz zkF9H=MTiTHs0oWdzeN{_on+#}SvE~S5x+r=7UQV(EfCCyS`%G_Slb*Z3rvZ^81(8m z5~NN3^tP~X%MMlxaAs7;e^?4 zXE??FZOM^TVHnQ}Be2*7S%(<}aQ${0kKSx%+@1+XZRA(}e86WVEEZKnfm&hWk{}$- zumE{6@RZr2043gk?QtUqVANLzdM)bjpS2o;7wnTt_)tAk#27VhRT$@N*r!67&*Eh4 z{^C$?o3V4N>6?$H%I5y)7h)%!_G0Cvd0rgtH&&mFE|Kj!k#^CxqyC4Jvd=>C0Wh@1 zay;TMV5&%9gX<0wNny1TK+;25-HVLlwQ$Tho@YAwtmD8<>44JX&tK=AsQc}!Xi5f^ z@XMnvG|91#c=+%eKRRy(K5pFkx^!D)RoFL>(Pg6huOYbFcR`(BsJi&2$FQglu9D|Eh?`?&~;>^PBF4*L^#MAGn%%vzyP0T&B7MTZO1gbq=%M^^u4Gp)*Yx9Xu+KGQM_Gy7 z$LDN6l4>{OuXtR((EOQ%+PD|-mqZ_}p`)l!dCuP2&m?3-MGO6sqsJHdvR9#9Rn*nw zUY*0JANe-D9J*{v$k~e&(H3B#t`HgG^W!s3=@Q3kH9xyiwc-}$>OkIWyNc<>=!dhL zP%3@0lbqQfO;w1m1-aluRsi3^uV&h%?z`L}ai}E9=5@*K8%qYUY@_lqED|aZVq2c4u7*=j@fI znM&Q?N-HvtG{|@uN1k6c4k)~kb96wF{-tJ$9S(q(D2ixiMy;BUGe31}ddRa;&x)%K z&6?Q*J!{M6trb`h*EVfnmduAD_z&%prmD@42(HT>FEEhRb*^f*ZhKjb}3sF86z?ZD>h{uf0NVx)%%w6 zNMPU936t|hkJ<(n!qI*9452{Q7E3J#VC^<8`)quuz^lU94k0V6LT){9TuaC(!~zK2@8MM13$vs-9}6qWAmRW0&$sqgqk;~1HK}atb+x0%Cp^9#2Y|P8 zvBqivKbnq63Znt4r%nU7s&9zAfV^tmFa61&Zl)X@p`4huYVqK=iNuhv@ttEo&=|fK z^X@|-I;Ns0t>dWXM>F@tt$*4S$eMUow;3#xPLKklEnu|#k{B$o4E z#9F{9j~U7o_tofX>-+)FTPhiuz8x!HpX|MWK4tAcR;D_4jzkz3Cfkn183(-3On*8Q zIfPqIc`Y@RKhnPh+%L{#peQEbyR0qf!Y^>JSs1-xbW?GStFQF=*Q~DSD;#+}4?Va- z_h++svp{Ud3C~O{G!eF9)!>ukyw(Qf%UASMZ{EBZ1E%-HCmg%0YP&q~ys)+M$yt}7 zH}&f)x@IDEl4opfokImU|0NatcOgIODvH#O5h@+kff%-I+7%G;F1Mu zrX1fz1TxLWP@|u~ZUqE*3o>52eQ;vbfIAsCo_XvTKRXg|`m@tnE_+FLcRLOten=5j zhMZ*r_#;24vxhwyaGo-ZXbd!wduv#DC!jx$iEmuDDmoHBJLUU?T{naC#dJ2B!d2tEdZ+rHaAap%3>z_MH<- z+mp5rhoBPbknlbu(50zskf=qok0EVcf0R*G`;7GRs`7ic%l=Bo>bfW#MSI^5D=I_# z?0OiWYbM+aEMd;qQplsPRAtv8E@_JdT}x!eYSukfG?6cFa6$nAx$4?SfJ*_vJ?Zfn zxF`}(c_o^7st$RMMmOqQ4zW3Qzke=6eEPZe(DCf-SEK_|Q*ASe^)=n0C_ac3ODwOb zM-2e3h6g}(1K3|g9#sY;AiyV)x5K~;4?@FL5AD#HMLkI9=BV?c!Q~~FFA140>#?W`ro>Y}r=W9f_g z!>N&O#};okAHS(mDF{a{(Ud_ZiJJ_PDl*;>BgGVH!22;Uel4lU_||Q?RXk8ZVy9Rf_jyJ6=1Sr~KZ~b^V#VTF0+<<9#?DT}4;HwMJ8x%+ zLmoG%7 zi7C(>{#sf2=~Z9{GUZCFW&G;!$I8pHjT1$$7OM+M60_C-A?pOEP(_oA9IZyAcQ(WU1C1h)-z8DDH*P0O;M{faCat z!JM|PAoeXJe;oBmw^TZ7I}&>S>8agvSK@-DsYEygGYfW}g$xA(a9c+VYgdg9t%?~_ zyOlMH<}bh^sn_cDaXOUI2YD?8j_1yg*lcRLkz^%uR9eFPeZoz9j)_TQH$LnS5R;DL z8i~uMzYpl~wE_HFp6tZGl9c>vW+p_+g4iJ+8)>JYYh*$bo(*1bE-nr^8q6v3+($sR71;P- zL4u(KyFY`q8Z*-FtKhE%`v%`MvhrMP(rL8wdUVAtOyxa-5&lqQGj}oe65LNl4i1yc zpG|1V1>r3y=@HiY?@C#d?2%c6!_AHBdGrfoI1^`p1~2vG##QeH?b z$e>Z)f);t-xVTBKGsQSi*!_vSfBD&LKS{U3eNx=l$mtCsf~5Wij9}2A21D#En@EOQ zj-%(g?LEJbbo1IVqCWB+O~@v->3A68}%61ixObiQt9Vm`y9BxA#hB@SkJ90 zEuZ`xleDtmWbh7OiPdJK)Xi@y_9;r<-*4vq58m`En|i1SRX@g#>yuZ7zdeP`KX#5+ z#Fh4Ttq_DX8t3#@o@f*oSW8_K2`#_Tuq%``b*=T|OzRJZk8+Kzeb{fWxE8lr0P#Z59-8kBFof3F~~1=P+>m0*zRn3wW?}*+8{{3nD#7mlV#40v=il=C+9*)_{tMEyEkk z8Xix7b>LcH;J3p|mc@E5j+g!4KD>TLwJcaQp5gNpt50z*8b=9v+ubq=C)0P9X&hzE zpA@f&FWqxrIm5zu*LJl%s-bLpOXyjkyg00xX`q=H6Sr>Ah>AjOUWRz#_68P2!{u^i zg{Y^EUKep}k4V08sA{L1^BIzXEj&k7f7KjU{2V2l$VBZ|L{avkM7sHY4GPWyiCz zRJ8_`R}IHjPp)-nyXhSTWn-nSx(V+M0# zMFO?ie6L*P+QYjpokF|9d{8Y)SHwzn)yiY{ebQiPk;VkqfF)RW6KPk!F?xORyj5iC z{f|G~lis+7ja<0EhuVs31g%)uYxJ{0t`li5$udTrv7`JwXp63D(|*x{KK+D>U0v!I z8;@-nJs(#rO7H0eTJiP-B>e-)UoBA(gm08i&BQ;3ac#a#gRQFr7NCT3|W;LP*8{E&UAS2CeTM3kPcD)G$P~%_HGqwTf9HRjoM#6@^7nm&ndV zg+XC7IRoq0rBwdv3Wk!KN&noJ!82^FN?R5?f3;?g5Fe2gI#$eGM~pF%r$Ui9 zo~c_lF~(|n!#>isv$rxIFL(rEc6IP&Igs+ywyRyd%`F?Y_pxA+S~xS4=q(t9E+d3% zR$EY7nrmgKqv7ti)_t2;G1&Ap%E%K7#e*O3gp!rxqi3Q{kJ#UIwx@4rHIDH@7sev{ zM+IREvJ8qV2y?3UYoF%jm#k2N5N1doeTd$2ke^U%sQ&2O*ON-`c?cj3d=j&s(3{eDKSDKPaLgoHLMVVOiD zAquBOUAS|ZVK#1aXZ?Pkv2w6pBegdEhI_?tZFgl}6fJ4^4hu-)X8pqstQT(~Qgh?5`$$AELbOSGwPBc?17|c?*IM0;-!h5qS~J-E^tZ8)>KQOY^th2U zpj{o>V5quJYDWt*j&B%op2wr3IS(+<%Q59g)%}{uM_%W@LA*Kg^nxK-lBS2J@X}OZ zN4h4%5)>nVTN`BF*-)zl7v;sfHdVYHu~D2caB+;e^Qzcr7eRZP{Q9=Vf}kXV{U5ix zh+EIFlYr82LtrWW%^59G*aI5^i!Thq(R>X~y?zS>)_$wO?)R=~QbOgnU7zoTzgLJ| z*RC~!f#b))#Y{BO2A+lBUC=shbLexm<@n3vlV?9;+KE|*`{&M6B@-NIa{?|=nigbq+o2x7u37k_bMGEVg zM}en_LUGio9?YDw$ncn>wPfI(B`wtpY_8t3A+BK`@h4P&wx(y%XiVRMj&4c?M67ID4Z z7kRWeez5Oj_o#BDWcVKSgUzvTTr69ZGRO>7x+v)4Gnl(L4kb9)+_^lgLc?HysNP*ea{YFkIUN61?QuTABF}Hq-rmMaxnVu?W6gD5!jtFb_mv^3^$AlQ9csnQ^>?EKhlOwQr%@rUOswOZN;~T z%jIlDy!h3|lmsx={3|3y{M}s6&QaA)Q7{QCU@j@?v85Yc(eb=j2Yds)zBi^=)aqZb zzkXFQZpEIv1`u%k^62e1oF7sQv3P9m8kKMkj-twtf@p_kmuy=^>}Kks+tGQ`Op+lPvkmk9-j@)D|A9J@OaIUvC99Oa9$eF^6@s zvBvN<;HseOYLOr+C|Q25oOX7u`p4JGbbd9RN8Rm;S6etM-@QW!&w#c&!3N?M2JRC} zeA-!$@&(_B7a7!l_AJQT=c~2NiSm<1x?Km4e>c^5C1BdT4Lamx@sIcvlPq;+3~MVq zNqbFcY0+@3*AFC!SIgwo;wpv~+*FLk$MB)x=R_&P z*3|UdSc`19qQ0u-0SzD--#9+7BJQ$}v`*f+t-MtxtHu1Fkv%v45L9;%%vEp2>6TFd z4aQx0c8W?(uv^BxtMWU`0WwhIGMxkItY~BukYwLHFc-lZ5n@5#kLyJW5PeWwPC9+bku@z1@|(j6<`Iv0*y^ohg!=_@E3?Nt=MGV3NEY$Na^z0wji^hazjhm1&Y(eG zI(5-;#HYfDjBl+lS9njKS2(YE-2K3a9cuP2T@ z5b4==%%0S(2DYx>9fr$gcQXejIKtSbQ|nlrpgFgpaHz8`-B}TK1&R}1I8a;@q7RJI z;aaQqAitA}Nm(8TO|K+3HwHB1&8vaA+03Nh?fh#@gUzTu zWAT^jlZO}6?tdwE4O4!%ca2+0RY3&TjogUe2bQOZlrj?#zi&kMO3n}sO`FdZPakIB zwLUJcCcX7|uyywOl0>h4`mfK z^I?gj8!_A)q;7Wt-?MsI^}XXYbZ)|T(70EBV`1^xaAvLJE$Ov}zi=ihSk1)0U8D^G zwnUMS2XWg_Pz>cUcUC`L;|nN6_|gp?ef9X5L@nujAmjgNa^Jgm++Os9tPR<6>*R8P z@#BF&wn)}ov=!aqV5Z-i`rP+7*OSd6oZfS`nJKdMZ*KWL8Ssz01-G6du0T9QZ)6l& zj^QfWwrslKxYqVLx`2GYhasud)(<$kEDysU7N-q4Id{I4WaJpL*W_}`5Z z7od_(hL{$hv+|m-Dipx#z(pjK+)SUHO`grgC*G9N^M@`MTgV)He<$(ww|L7R=_g0u zcE*iKGZg7YSpD8=_lZK`DV7N375-buTf5Jic0=7g9jV*!*f>+C?jzAUpC1aWfPpB0 z-PVx?=(1~-#)61s)dmf%I-F8(X{&DVgJGZH)*(lWw4IsTOODNiD+%kHa(|U2C5D`) z;eQXv&NHO?09l7Q2*^&7#)NJnhos#W+ruWI_6=&saVFMU&jz;oY~>ye@KI&63ccRB{znef}!^ zAInno3zAU-1Ty9}(MM2}akU$(=;1+iYap2 z^?hHzvKPP|RG>pjDjIyPnw<@)@_4e=mMNC~aGCF^Z@w=zj0aCiuD);N{Gt>czW?02 z1!thof6X7*m*POkP!bph`4GYlI~zKqhd7C`#xmoAiu6OrGS9grOtxkkMHhEzR}QP6 ztl-nOe;60O*upq;lP&@x6n20YWbv1wSeB0kz^h;5mRH%NPKG!yEr9t1r|ebBPf=|y zjAUt0?TWrLqb$2u-fQ~JGoEL9>6;f=`6d`#ONhNgE0p{zM`W1w5lJ~bHi)5_!=2gK zL+~{U$VU<5s!<^J^_afmEz#ZTJ9$94y7HW=o6(arvv0@Q{lmeK;G;ofz;|xIaL&jp zQn{XaWKWqOiyxfoEu8-*>^LxdNGkc<(`)rlwwH(mAwWj}wsbxuU!+r&8Qb}@{AA;lB6ti%U5O1%D2HLr@8w!WMa^Xd}P!z})o zPt~-u)PwkHY6=ju|CL-tVbOnFW&UIJ@xT9TDl|MpTinPuaEvoE%7`&z!ev^;KW=%i z+1Z^G!sz8Ub2NGRMJ*ipilo^dG7`7FgpjuZr4tbCgcS#Quz0lSD$YT#W@a;T@y4b~ zJq)?5BaCT-+vb-N+277mxa^Z6b?%uSI+85#jTc7S50z&F zLJk|22r?SC{a$KtUuyfyxMRDwdcEJ3b!B^uQ>cuvV=A>JuGR$PINJ!6(^f$*=OUWR zUKu1^bSoGeG~wxT#ire8X&1Y=YBX`Z*aV?IoywGTcESpSf|3u4l=|XDRw=~WP_Eb3 zlm|~Z-M^LjChgKen^B<#BvQ%r1a}Jf;0B0d=Y(YO$k8Q#5cpV0NS%25s2|k1yXXIhc+{INE{~53h2S!)}W2K=mfatOx_rXV@_ygE9 zQ{~3f(84}(TKj%2j|?*PouStxhUKihkig)M)sk z*`c9cTKBS;y3e5N!6GyHYf5o%AE+-1&Vkl6T6v&_oNO8mu(vLHLgGkvX>XgV7 zAI`J~7>szMP=iETQvR}J;X&}6uK+=DP>0-*1JHzO{TJttLo!5hhh3f$`ZtEPQ~<8K zkLQx?ob$W>=>>+wB#WO>#eB=SI<~b|>SjDu-sNRMTJzk11$Zk>`xA1psw z8+1Nk1zZ0_gk%8liOrjCt(>yz^2(C86}~BsA0zi&#LO3G9-!&*BaHs-AC1?Dlci&; zgE?KM0!tvZlGy`|UBa7S*5(YDG_TSV>=BLcCOIn3RQ`w}*_o3e z#U4^$w|c|4SOl{h<_6H02NBIML&F_A>db-?eGJ`P`} z1Dhf-J%q~(s@IRT-pQ!^ZJl^5xPP(p$cf!QOp${&4MbS2Wp;szVjUogRvQvlmae=8 z)lug{GJXh8CdT_IMjfF}-U;A&>eMPGU7$I;{~n-64-wkM>`THWnEAk`TQXK}>z%3X z3V3N_RUIvq;y9vR96r2n!4x@CmK%5d!O9n|+}sbjp?2isHk0-)HIWw=+eL59UGag7 z!7Ljw`w9C{<@f><1)q*@yDyZSFVXZFt(AxBnvrFy4Z6dw;~Mfaqw`}Q0G{OR5q_Da zA!53(7E7Rq`Le(@a-U5D{SKb(erZ-s3ogWGU?U&Q9mhCY9J}WwENWGKfosX{iE$?U zSa9mzhfOJ+?Q=&<)a=QEksx$mY7fRjK3L`I)EkTr@qzR9(~}HQG;I#tepno?%>)VO zU3}scgd20d`6Qv+LqykI#;a9~ZCP1tM}617F(dN_4wT;2oZtIp`fYza&I!o21&TC>5)Yc*%Ro_(W>F1& zuRE0jhjMZ_=7N!j_qfjATJN98ZNx-NS2W>~-lHo0ewj=5{hAK*(+3;#ZhR%(5ZkC| zRe%u=72|~rF`aS8ncBTn<>j=Kf||p}DiT}VrNiqM*ZrFJ6%wWZQ}-Vg!XI9vJc*u`bb6Nabsj4*9xoZ={PGqQ5{lfXc%hIe=$*+a< zGl*|S5n^n&&HlZ+^S?2~_%ECAHV{z!{=Xxj_y7V5c=g%qk0A7~Qv~h*st=D?IJ5!4 znpyw=tQHhK6q-imoZw!e|FgI9|IhXR?^AoCcYqy!5%fm0#DNYf!nHa?-Cn^I|ESgM z#&#U4H(Y8-?^>XdxD>YPFOrm=>!c37!yHzep57oWVulla@$qPiUq3?(>Cjbeoi%Ou zdhkn5`a~i3h-JBk%je^#JRRq6#um7R1+*2{YM(OaUYBQom*kw0!^vyvq$2SVuK0U;A!2yn0A_$ZGv_gR@ zPo+#aM4hJ)qc4aYCPid)pWwcaG2DcGlkHmeX?Z^nhv=dpLmY76*;6W5ykqojLBY-P zJpHA*)H}DX5Ge-nzV})&H!&*c*+6CU?-e&x72+wDZ^9-&fZHK}9*hdwBr}Uh8W|h* zaG*55ed4|KM&GIzsD=sVwb`{h+__RAw70Dw!o<@rdqmRJ=+iv~8Dt|@;uCV6ON#};}(t9-eU(Sxskr{O`jVdR!2QKBodH(PG)oTzDpO>)(imC zrEg(8MDa(1?P~T3tCQ_5v9%%{pA#fgM`@+U%lAI4X`EZd*2jFeF}jkqd-LHFD$H8o zwLC!q_nJgr7*;z#NsrQ%JLRkC^F6#Slf6et`;g0KqgQ^&h?~{brRjoYilzetp_8kH zVEQ%KbWt#{SsXix}!iC1?13jBVOH0=HTo@^{)g6N5i zr82g_YU6lmYaiuh`K>)3z2C~?$dgAB-`cj; zWhz@Glt@KJ8+uCGB&4Z?>`6j~8-)W~?{!_D&qsiL6H){eYS;l&wn-X&5Q!kik?A@Z zI%%jg3WbD{X?mD&%=BJ1h?_%hfNCy=v64_rm|ufzUnEq6YRE*JwY>AfAVby>qyV+a zFuD-_-H0Rwj@2Ik;aZaBAc-v&&DNNk1>EYX1UOcEpfo{)Zq;b*K_1S9uB#B~SFCFN zk9oivgO{rjjS>r_8P{4b$umKuAI9`(49t!@u@1qBH1%M-b`E?5BWIFTYp_hR$nn}h1I~hE@{V7GnE8ABXHsa?bDud4-^Z()BI(3d(xWEVKmcg zr>zqoAJylb*w$_Nh+_yAwsZo7hE|$QxApP?R*LAZ4 zntS4w%?%Zc{~-TQ`Zmj3qCDPGjM;)YN!6#P5C#7Uo%KWKcKa9aTvZ79#$06za3lgp>SywBE;XjaYAoOx*rgrn6s z?>vr(+sK*le?HyzlO(2Jt&=o#mB|9h?KJG{DZg_oPw}7$|+)CLzAd~T?{xJD26hoGWoGk!Q zi8=qG-OWwyL!n0aO_R-V^B; zDC3sT{A#T`^;}2glj}j$K&0`P$8>JLLJw;7NOO6$CacD#w(yWt>+NfL&>o_w(K4hN zqPu5|?F-24v+IF9&3lMFS3XSi5|;VBojW!bXR-kufCUh2Lc$*YI1k_4L*(l?x-}Wr zGOZ)QnwSP#?J%uGg5Je&1a!otFFv4htwC7@fQR!al@zgA*nYx$*@- zZ;A9{=r|nxg3P$nLs+|JUa6p8KKaNNM1(G$(15!iYV_fviS&Mgwzn=RV!#~kDf>tU zVJ-CfBqx$9B+3JZ ztGWzJ_lza6S3tF1>|=1YQ^p8Rex}U5sOWXGp^-?@&5d-E!S!7Sg{&Qp9MiJjb*${w zeBuA6nB70idHgNsIV8RpB$|H+!+7KtH${GvY)K8|fIW@Ei2_P+5mykkOPD#n+G*^Y zE@lguGhq90OBOC(K%IT^5Ug5CdPEw2{{UZB=;gf38=Neb6_Cpj z1LbiPoV%Mt9H^QFcYYRs_h|a z+b8dV@%}7^2-7-juY{kvCG|y=7CE= zbRP+Vp|bLQ^!v_1yqrwsN=A723Wq{c+y>f|Uf>Rtuu(4vc^Z4fh3;(97d5*_z+~cz zAhtvr(-J(mDLf{h!6f=WKIJlhy|P7}hPj%vMju*R6*VZg|N8FWwu6=DAf0D>01#pV zfJw1zN#M*uvGrLMwwEZxc5rysw{zL8Lv31K?$4c7sAmHl4Q@MyteJ?7n6oSGdZ)*Z zLOzk{yIXsb5y5;)r-snb*C@*j4F+wOTDnGzd3gESKZy47=uYBi-jqz5dHSnZ(f^g+ z4fjp!SnJSFw{`7$jB5PpA*l&i?(?RZuV zrXdAh=Tr>=*6-R@*vx1H+-~vChPEXTyDx&1cKkyVA|GJM8Jr3}8L~27zckL3;e-f- zegT2oqYu=#hXa#v#E22mC+^qbooNQ=lIC}|`()qzq;T@PlK1LWQxZxyJ-3#yTx-icWm@nK5kxo_ zoJW`K45r5|mtq_`NXljuBZ|n6yib;$uFx{MRi~t4HOJ?>d2f@|TccKf$;tIC8>>m6 zLnYJz%;d*PYH+@PI@_3&d8V9BxPGx%x{^N>r*Yzgz+vV`Fn=EH@q6QfpNbc{7DH^G z><&PL#D2G_6%LZLWAFOld5JhazNRC^il!dp7`2W1`o=3a`Ok$`&1=m=0>7Z!M;2*{O3>Rw+&|3-VNiOx95P;#92ZZ z_Ju|DGb|5#Jv|3BN27a)I)??dy)(^YbZ1v=Ipus%;LT?$DouDvFq#MyX~5InJsF0h z178y^I{y_i0 z5U^HBEuhpkF+BgLNUXF>U+^_-m{8O_r-)v&HfE>|N&I zHWxE`i?~Z;3hM(MCl{mH@)>kj<`_Je#WrE6^xVm*c)rZz0Qx%qf<_aTwp=?HJ1x#xPZcbm+0CKwF2dGKgc0^rX2!^eDD0zrZjnFKxCXiF1F(z8oweI^C`VJ7I}Hd zbxLNyioNn49X;S%r>I`Hsn4a$*Jj6SyWI-$__B`B&2v`66Zg)QIuboy?$^7otPB5W zBJe#`#Q5`Jvoy&cThRWN{K-G)yF80jVL90EDNqP;7PElrfR2(znTtI3dX0d`p1v6Y z3)ehh#D^2~V{&+rrc4od&2?QcKpR{@b4;gSBV^a#aptJ?A36(*S*Iqy&?*F^x}hkFNR{fe#nk{p=52+-Q+h_sY49nBd-)IlAfX zq6SbZj_%eq)(Uc!%I|s`DCl#!uq~~^MZ2&EzFM=q-s{mw@0_(`zR9vCd6mhKN0-$% zOunxK5ld(SRGn0cj^ckvBYY&(5$SQ1Gf#{}8H%+n_UlITI;STRwC)ORy&>U$2Ss{= z3&#~Sju(Ph0tMf%R7|o^!0Qz|_v{|{6x2Ijsqldg`O%+w6yH#a)q4gy4&2TLgGt!a zj0kRG*+bQ;iyA0Gt=Gp2$36GI>uz-(v*zWH^_=2LAf zF{qk`RjTBP*2K`5;g8t%?=%_m{YAPdSM+4%rqYgzmMA`0Hg=^+$2>5DwFIjEiV-zh zZ|d|2d8f3Z0(Q#Ycq}kr&pw|W;>QO!&|^N?#`zsmmle?34z|ZDfyyE#SDP)}Se2-x zllPvDrj=zIdk<>!x-7RDx%pGol;I06m9(3A!wOjnnQMaABMn6QMe^7!miNXz1gMg4C|5?8U*j-M^Lo%+3Y31X+6?(ab+tenmU#;dXcUR8!(6fiNq>i^EI0 zYGttEKUg7?^^sP*u{h|-tLi3_x?V1Z^>eVeRsVSyEfzXbWRssh~zm0qWX$Oo2eKren$J zNb!nG^L)=KpG5F4;w^T@e4cIz+(9KoK9Gm+oney1;H$eCOLI04ITyFtH3(Q#$S?0k zj`6(wk0`eNy$gtE{6=X|Sfwo3Ot><%BMPwMJyfE>QF7FKLvgZhj6gcRg+W9_s#zE| z-)1c`%b2~RB%XhrijCr+>w9JKr^o9Zw<&IlLre0^6iUtUvW%hXA#A>HZ9x)xiJt`x zTj%<@HBtNH>i4>H*zw129Wk@iu4<@YlC2a7j&(516$i+M=-M^C`|^uMPR}Fh=qDdl zm-jL#KDnUU4XBwUV;f0*e!+AyFJ zr8&^lxAw%{vRv=XU87z%P=-Pls?4|U#4;e>KoqXhKle91W+o9swJF+6lF-pSY z*OVUZHde|9hh~DjCD8T;pg;AuiI|v5)%~sv&-$bTCKG{H^~>r#Q-^Jh>{TuwXpt3( znJn=)YZ%CTiGkO7vK0&IR!obc4ns})!A{DcdTjQws>GuAviMCITV?tBv|D`Q1Z};( zyl9%b9mPHk=d;csy%;(U8yW9+yx(FakU5FByy17WhUxA!z}e{Z*}qLN@|Xh6^`-39 z2IRv$NRsfigKN{>aH(}{QW9xL)R1?{k>mj(`iExKQXm%V8?T-t&yGeTC0i^mf&|h{AnA%tOBq1ng{W3O9YmlH96Ec-A=U{1F0M0 z$LN9d@T-+du+?t5=k@98=s<&?3T*w3-Ow46#J}xcniA<~7;mB1eP{_!!D+9!(1d>v zNvMCdEEP}5P--J|uU`2>AYMbN{@q)j8YZ3dPBl<>Q+0o2YzQa*Apkfm9=YT#d z*QWCEDnBR)xlHh=0qSmR2%SHF8p^u7NqWX&@ggbUf;Cmx$HB?O@77UHesa7U4R<_n+Wv2tY^DM^qpGhAXFqJ<( z@@bdThxAaB9dEsf?WB+12wH@b7^J6KK_on9JJW9+xx4hvjH2O4l1uJbe$V7>0`mbM zZ&uY?qb^PkSmWa<`GoNg%*aZ0yfXbk#nY2cLAgs`w$GdmSmEzspOV`p`Xw;VJjf}i zgG_f2sMVH{Po`YMNR?Ys%MzNOq|h|X3X?Z5V;u;u67*(0w^ddI8@=sVK-ojEI-unU zmFWPr197$p9GU4NcrIbGX7-)+$auBN>rS1$7i4|v?nliLK)Ql0=gTsLk$oO`-a!)R z?Ld1xW))5C=g&VQ^Q8OpvE-@y(~8?#zhWAJ_tqU{HgSkK{jAzb44qsT9iX;Cwd=ax zwDlnGoikG1#kWhUXd6E(-Q(5!dSQ{k=nxTBJNF2{EiA@`=*au}&_+*MvTa$m-lqHh z&VdREUo5Z}+_z3fp;)|wPHef&jI>&#a}Q83C8j$82x+1&Rdk zaQzAa)ie@REK{RFDRw4{p6#q`p3>|Op`~nlyvrD~UYGIa%FXW&zXhBo9)#6FZ6`M9 z0~mzkviQRe^j4arMqS>BjdJ%VY>Df>v#}POJmubsKuvltf{rRBG)FgJ@(ar;l+rf# zDf`Cva_;ij+37<9RqI&Wq3Q!csGy+(@4z-OP;QNw4BJe-%OO^BAfn}&&bXn%5Fg?2 z5mT_A{AQ1Zr`{P@jevpQIvB*cewjU%#YxW-n_Z zq#J}ZEf!EQZ2%T=s(J4fM+61Se*=la& zISIlK?~r}Tv<+y$rxv9jfu+ZT=?J%AxC7b79Z0T4a;NqmFPq#olDkH7oekG(bHg8Q z9LbF%|0qi52ISnG4R?#k-D`9A+T5hYALWF&*&l8ijhm0;<|BV8hx?zI*nI_6?=e!r z=ycJr4H~U^?B|zSc$=5^dq>);NBj%jG0pI>a(FaeYoeE*29u!*)>O})gKOu0^lLaqBHr%_Ixbo*16K)Z{0J3-q^rLq8<-VwOYI1LQpZNQuH+IQ{u% zepPqFEm2moRYsQ>aRH}qR=?d!+RCtEE7h|MKc+!v*jjK)rheibna+8KyV|#^Kl*A3 z9P~H()Fkl5HyB9&l6%7krG|P7wZkragIsF$h9V3tG9DAESxxz`^iLa|Q#3toHje|W z^m3aR&*}*Bek|HhEl#LbS*$s&r{C4Pq2ha<=2H&^y24e?$aHHYM8}(Vgqh(LSq8ne zq4=_Fr}_r-+J4z=E6gk?OAuNhSx~40{boI7G{Janv0;h`d#Mm$4p2*ZwBP?y8m6x6 z=ze+cVcGGncw_9YN*<^>ftU|yi|;fKy&4vfVHLD4hL#Z>0R5_N&9&72F$Nk7YCO z(M<*L>vyhtNcsp^D(?Utsm;~Id{S_>p(Yh83`5nG3b_lY!%x0-F8|oOdWY?~(@PrV zHe7t;ukyh4DYw_*Phpp%fUJQh>aT)jrQR3*(_{RG#*_=-=K}QqjrzfE#MTPjpOGv$ zBoKiIU7DfJNGrBrvl*fXtI~_>taQToCq`?J6W!!1nICI}tc)IpuTo020!Y0TSZWub zkWHjnr2w|X$uW^v#n9vP{i{31FFW~uiXP`*9{LeehDc#9xs%A>Qqiw0B%$hixV)gs zvCg11@P~)&v1+%OQ8`K8HYm_xb&r8J@rdhNJu<9gK<%4d-{aZf8JX~6yjHX2PHe68 ztItwe%yt7&Tpw1&UQ`h9qIKdA08%n7axtI=FTdMi7`z$Rp>H(&VjICVEIScb z251Kd&}`%30o?pnB4}Dzjb1>hf`$X`F}dT(wI%L6;;tdw^^@y6xPFrxGjQW2Zmjq# zjgvbQB0;7M3q-b~EXK77K{{nOh&OuuuJrV+ofXp2L z-bHa-05LEYS)@)Qk#qHHl@*BeOmsxfVB@?=Ax-h8$;(?FoSo`i@p_1ZySQD!>OD?? zOid!@w~ir1dbF@KR0|JO&b`(Kz}fkmY!en8*z+6Uo>`XG?fngEyYl5WGncvByCRalO!q? z@WpRg`}$JK{`IDOP-7t~@a10M&4h#2e#6Qma(+<5DXEUMPQ%T#6eBUKpDJS&CBFBZ zli0h;iYM6N^o1%V|0Sir-2&EM#~J$T03!e0?&&!;lDvExdle^EzMBS$BreN`jpXS$ z_q?CG6z3^#|JY+&*KWSfa%segwq#+Ut<)7bC8*8}2e6Sct)Rp}%{U5hl`be&(4WEW z|7+@J-zR%|nQgE=OBlboh>=)Nl(zBHueC~wxpGXuOM2=p!AIqy*-e_{WxmHp6mAj{ zNy#+DC;8PB<8uT2ai}(>`z<4eI*4ZO0fox~b!iJ#4sWkR9_AWT`h@h`$5=vZjkXpbQMa5NVZ>zv>?(R#4cajGUMVSGeNV zNK%+en(zFPyo9^N{N~5RXt7VRxIaCdEm6$89dF)iJK!5>FRR%5)62v2H*s}=vB@Jc zFM1oVs!S-Kyf1ny1lQBZmL^);i6BDCEYkyCkwzF-X?Dz%=CeAi6=@JXz#oP`%y6oi zclqukcIth%C~@$fOmSy0w&Ll(nK@xqA?lQ^{!1_b=CFU4ygQ;i9B&k8RGUefI)jS> z47%=`BPXD0PlR`$+IV(gR>P)|p1t1*9Z{Sn&pfF38p$}OK7IVGI?-m^X z2aE{g?))4A-^cBv;#R(w6t~F%pYu9}kL>OWSQ|+4x13uI4t=rsf z_kqQGr`{-$jz5)`k3YysxrFH33||?qrVdH$KTBr)R1UQ2MHAn(G>#85>;daI(E^q1 zHr1G%*`trVPel*^&ALXv5NmU}v3_p#8n6#oPLg5sauG21SHqx#Di7!`IRbX=rKME& zrB+8ugpJ39sT?uL%aZK`DjhYIOBSW5r6Fc;`)9%{SK@N5O#VIxPtDV10*n<`C&4;# z155o#k|D)_olgYB>nL__L$=QjqrI(bPk$iU^CEMW*j*Zv!t7^YQ8F}ACdHDeH$Z>z znqBYxunna-2~8G#5~>x{s%fkXHqLeC$Zy`K{iehJ|4%1sqz0@bhJC715ZLEBd{DW2 zNwP^%``p&ALx&2BFwY;6ZxOm>YO)8(z4_FfuqeAig3|fR>r)kS6Ay)KYQ)y}ke_(M z2G3|Ze#(eo8%C;5|=xejK!j6^->A zl(#!X*y&U{MyxWn7%;~4=>3~fcVix4fw<*$`8o=H4<`Dk$A@U~!fqR9%lkfc?=6cqw7Ufh3Nh;;1tKbFHB|E$o}?0`CLBO;Z+|NHLmt`B zUq(n9h`_6&Apee|XYP5du~v47--dE<*mhjtA%Dt`^`(Eaq5Mx`8~TK-Mh^WGD9*@(acFR#p#4cO_sUCy9BY3OH}gKR|Jm40n6wrDG`mFV8e??0)4 zwwUw9CU#c3fZ1Oeq^u4gAJp8^CwHIAm171JmCY_-ua)i#AiSny8Y)5R>FO#x|2#A{ z%owa+x=AUQwnKkEnltF?zTt5Y#toB#3i|vH5Dwsq2K<7SIHZB4`$0APj4&WZIB9k2 z`{mj}68~^g>TT`U-}khC+^Ei~c0WpYm?4cMk%b{DU=aTJ$lQ}USq()OUGDSqJyuRH z%2=OsBE8Sm%e{nY>1rE7v<}Zq6$OlIn`UX#zBn|3_2b_c+Hxk-c{`^7WQU$xrQG1AkcKL(blrH4Rk_rUtj=a^*IshMO`el)mhWl;oo3 zWPcUk)mEErRnA0KO%aUEp+i_Yofr&FpELpq+X06Rh%tg<3Trfi7Xw(-0_s}{9^6?? z^Fcs-*8$bm1o14O+AhG@1=RI~6rjIUf00!l;^Xi5K8MkoAD|&bx3FY_fSob-W5`iYae>67jnOl^J8~WrSfz-o$FF-4>E}mi7r9LIo zt#Wu1I_6s8I%SFUC;2py{X(A%HtsujT$v)t(|`CB2wi`SOVfS`NsX1N_xgeO^yh&o z;RnZq3Ro&N2ttyd$I;kdh@g4KB&|Rb>Mz96zZ60r5_rMA-Wl%r{$WeSwTHzmAlDwa z_VC9k0j@o8?SX3#-1ysV z!q|QnU<;E$97}DZTzii<0hO#bey&z0Y)-HR1}g0BZsyjV8AqxB<5v~wcA(i4keTiz z7HeH)0pQ;O8FPBj%M3WY1}nwS2WYxelr=@tc*tOobi4o(_K zD(?+yk=U6IbO398Jy~Uu8_F^1Z>{1F$(Pj&v=8NCucLxk|A0yZ>TftEPZRPEBicS_ zRplw~x5Yxcnc)}`mD(*~0 zkLDvnEsQHz0{I1|8YkDNf4^Uue(+|1fs?9}>(=rw>a6BfK1L(1JsJ!OB4!JoRtjDp z2dlm%f=Uiepw5CHHa!K~XZJf_rn}Aq?ODwaG2i8z94xkVT?v11zT|D2pn|B?FgHie ztw3-KCfsrqw|d5{O>#@A+(I?CuFmaR_}4dCeE3F0SE~7W(z?QxI}J5xV(7Y_J#Q?v z3zEN)-0#Pw?vvMv-?72Zq<{Q;Arqx&TWo_ujzQFNvJ4FdO(RRMaZ-K0IZO?N*B?Fq zO6{VoGo$hJ#z1Ua39~*3fvQt+LZ26*YJC2=ohsKsM*iAV{d`eLjOlzwO#PXgA3N52x%KoUPN zpLBAOE@9c`814tT!^1TS?o{Be6x{WZ>lL_8lN&1hn+HhFe*5d^Nx_CkGhCCz z)1fq1n;ma_6ZDx!3oBagx4k%*uuU?|^f)SvZ`oeRANNCehihqMD><{2hROU`H)1$; zMZpfOF7x(E)$-~C?86p^(0R12@{}9FM1r&k9BCA z4K*9R*`ahrH0T9XeV>xYPh<=s!b@qb5i7qYyJk6Kh4EW#K54C%Xh@1>$*w*tyBuIq zhXdl~sukDrepib^X0ZcDfxgmp;v#KfDF#s^z{mQ5uF^xNS^z@T0>N=)Dw-O{{UCRE zxJJR93fz@~yFPNg0@rDBLxo>mfHdIEyv#{r`?9Rr$KT`8^r4!b;%NNg=WkxvTA$c; zGSq@{v*g6!sr_bO4j+@KLzzR4WcofJ4JvN|vbD}ZHAVvPVOL%K(kHh(x{}7HjjxkC zhKwBETs0gM#TT?1opgTS`b`X7yV5gkP5cghi`@3X+Y>%TA!oz`%?@q0%KW>@x%|Dd z+@v}pY=A=qhiRTYt|spmQ0G0b&x>`EX;{JG#(j*-iT2AACMFM>IIk*?()(%>T>fm; zp%V??yo%IFy)J8cVS$q3`1k&+lk}s`-%U%)=`>MTw)2~5x+#t#olYOEoo^XSv`P|> z_3_@++^l!|qS=t_m#FxFW7r?|8{E7zH`~rN3T};oTVvqX7`QbCZjFIkWB8TU7y<)8 zzsd;^EvNYQzqxmLn-zbEjJ?~uS4iLE#Zx@;Ue%a1ZV8kx>?C9*2% z+NG53y~i216E=?{-K8&g?kId5L%t$7-Xm8u<=9v$D zo{o6$71cS}w`ESn?2(y0-)!&7HJ_)hPvSZg+47bwGz?MEYzg^+l+LUHj@r;EI8vcf zr$hZ^ew^v;Q(N3GoLCX!m{5M{t;H1-viBQl(i@S|zYcw~1`tq0Y-hJJ%!KqxK9{UCRExJJR93fz@~yFPNg0@rDBLxo>ofOHh1_Cc_6A`mL_B=m~Z zAchR}a32wiP{2c2C|DS4akMPB(LKAbrp8Pc7O`)ktU9{xz_o~tXP+~|kbMDgdBjV1mA8|QEjl{{X`96EndCUCeY+ie{&7N63O`oCO zO{?ZNrJ@IcFo`y-Lm1c)q`(O=Quk{a_&!l?Ie0ZAT>0MVyu9Lb*qy2!gQP7@=&KZQcOx`jgtq2t}PZ++p>m9yo+PoQL01B5_?<7ew+i1ZLn zILnGy@A;!6 zNu3!P-{$RdDBHi!4``0l`l_wGUkbl;w3IW97q|k98&*e;?M?^Qzm;r{;b+UW`Lyh= zOLDpz)cbiv|J~!weVnKBG)D1ye46V?DcP|{1aKq&^#xPN9wUdB>nv>9U3 zWy{9L?Y)5s^Zks=&)6B>w%50fH3S==VOQ5}qV7~G~0VRmRY|YeChrnE+97*4LSpUyx$k} zV(>r|z8!K&(#psfU1`@jsrJ2LKuhyWPra?{!}Z+`4qFYEnYyqKFQ6h;S4u-bIwk}d zXtV``)G_(jKBM3rSL=;{orpcOckU^B(LS$bo0XOhhK4bC*=m%3Z_&-15%TjY^z_bJxaMc>m3x1<< z^2_BJ$$R0fL9~R+DKVDktqh!VXWLFM<}>-|EqzVCV$UwT+4N~|P{um}40mdBrzUr5 z{%^}KcWQFICf95JUm_c>*W?DY+<=xF&@OITxL%X%HMw4s>ovK1O>P>9n+B@>Kc@P) zUX$xJxn7g&HMw4s>otGHUbE)c-Y!w;4oXK2etQi)K{4eKC++#U5nLd1Ym>jJFwthG6XV5u^i44Of!DErqIA zW1VdE6wIlCMhmFaQEyBSdUPF$R!J^th1Cv5E}#Uv*ekr5f$ib!61E=w3;E=bW1?FH zB#fHk^sv$Ho@q2Meg1 zq;I>(LW>^@R8@m_uy#-s{1bW_3YRe6s)V)>u*^5m%_e~_5L=!!pvuT#OB1PL$ro35 zIgu5_i#ql7d1s=?c~Qt7GWA2Y49f};iKNHbFQ7K|+Fc$Z<-`VHkPgyl5%-b*oq2Qr z6`Z-GDh#}dfOteBUo1E+R+BS9hd?jF3nJajGloe2i3HmLn%JT-Jl1IeB{alDGp(48 znZ;$uD^B{5XAgg0;L{CGITq=tAkyC;;rF-5|NSGs%R{6QrH6y~-(`Hz%eJs+n=S)Q z7GGv+Yw&<$n^y%sjwwt(sb9Rf$hbO?(y$%hXAo+kN*%O##!&fmF1Y3V=v zc>a`ee^*^I`dmj#UA!$^MC# zyz53R+d`;WM|LV!1KzbQT%eSZ(!91scA&MX2++09? z>#IbAMjSm5B-C}iKczsQAzZ^_?H>Ck8?C8iG(??!c7npRhh;Y5`b}v8)5lwlJ0mQRQ0#h64QU(a(E{om_WA;< zus{0AFj>-&cL0Yuaek_>CARWqMx(#t^XFyO@3tD8Ajv6a^3GiXT}S)f?LpI1XgjQW z&sTS)bip_8S&Qz+Cy@itcBH_ywi57XQC zEW5*b&A5;FQ$f+kp$1X2D}Uf+|4(j_|9jj!VoauXVdf5!t6Ev0Wo-nT)iuMy{c;28 z`5%~rNS{Rz@wf%l?NPS(0;)s+Nt<_oaD_kij{=EW=6|mf8jNs6Y#E1aq!ZLfq`xE5 zi;&fRR~w1+XwWpejdO>Sv4-3o)W&%>M~oXPv4i5JUKCDtiMx zyT6R)?z*3jM4x?_qdg=4xUe`_0@XLMD<&Q_6mL9fEH7y_=*gDUN6@0M1%2hn;7(Zn zVR3!zMG0P)*#pcg3eZUJm#q>lcbw#SQ0FEz7(`|ru-*`?3!(Sm{!zOCnqvlNqC->E zZ};ejLo{1QdvUwn{?O))P4dy_s8{+v+ z)RsUi&;|L5$>-_LUCe2H)J{4-g91T zvG=p)EDl*;geZa8*hS7I)uE+rhRp}HCBCg0F5(m)f9F_S5T2n$EfO#aBd@-s4R3zN z%pt!>+CNGR-;N(fa#m-{mAAsnc1FGOgmnd&bz=2|+KUDlcwabnPCOX<2n&!#^b_ch z;mqp{sfJqv=r|0z&~8`f3NID&ERmCH#!Z{~1md>}81=23m*3OnR&M^-c4Vddmz;-Z z{ACkFlAVvAciP?L;G?q9D3wNzwdfH+1ko(ppq5uOk!(*YB~nilQ|rW0KGqiMBAu^w z%rn9S|4L@VcC{;vU~_+B4X$@LGl~;p==Q?Tw-F-&0Q;Snn>{X#Mn^}Vz9B8Xthc3V z*D*}#j!a%w=p*udsCz$xHehsJosk#A49pVoC6Q z4_%(gpEq3pJHN(*)?xu2KZ|3GM)q=>%^HK9l1^$!ImgsEb zQ<|B*{)Y~7?*G5R4a+}rGsHdif1@wBbLXEhcX$@#nj9>^#e@)N!Lrx^9sNBn<_BG& zcRYI~5Bq# zo$|}UGTk}J$R=>#Cm`1dyxst1+*84iRbQ+fkmZsTTiaCB)LQD={Ib_z&5^ozf7Q^; z4X-oi0VF7N5ynzZ5rU|RJxd?F%<3IpKrJ`Y+>mYH_k{U|=gF6!{4XEgg1^&q@Whwy zTTLhw5Bv$_@jHOaI)LZ}b-r`%SA(-JPz2agK6wtIUsrE=87LyyCwX@=x#``fN?* z#=??IH!`R?^WdSudNPDF#GUlNq z%TQ?1yPxq{HtO3F#^*`<@~z+amjcvI~<{$T7XU`5ds`ejQ}Jttr{Y|lENmvED&d1N@-&CqL!YEH_gvxav`Yh+KH zh_`x+yEWke_b1PL~vD{An9{4A_7#$ z_$T}Z5up*{WfX?J%h!@hUcW2;VTCdxHU^$$ z)Qo4hM*VTDu#t{SQdl7!cf91IQ|6l%FK_C{l$STJVj%>GHZ}m4@va8R;jVwY(O_AOn z5?j(25t;*If+L~^X;B5pf>dt4FFgcX&D%Cuz)Sa z{9YCdiCv^4*_E?`= zz4NS;p#Qd4 zC%P{0SBU@VX_%ws4sEt%7jv2s&X!7M4tE*)dpl=IbxwfG(;oQtHGY(((_$7Ua{l(M zsh6C=Ybf2km#8HuBpISoT45C}BJgH8ocL9Nr{vV&ECzpn?-9nib~km43)j=y2YbwV z#hIeJx6J7)+!2)IeNU#wQ|S9};eb1x^l<_s0v}&H<0<9RbjvTfZfckGs7(oP>gbo= zhZ~e5BqSyFIXc?UI4s8OQnv1%H^K=Mc3J+$3>=oD{A$JApebF{qH50-uu)W zoGOgM$@@`EVfO*e{Wykrmi?n|R}9fU0Z_p9T2E(*nEbL_o@3%)$tq+w3T)^^b*kcA zX6=P>1B7MxW90mJ+shs0)lY^4YS{56Z?jcil~6--Z(Y6Gq&H^(0_MA5P~YGWfuEH~ zyOq*X`i_P|5a?Ivt$qUA*UTTfQB=-is=jH<6w}R9vNWq%heG+TV0N)3MiJ3bU^UUT z^HwpCbBq0<_RlHT2CG*Z)@+m7T=VHumWs6E5e2Eip%Ih-I7yv5qzHYx$yQxJRTiQV z>?s1v5UQTo{@(SXDZ`dpdDDofo4dgqwmqECzyH_WCpo>x>p zR!Y}=P)JX%>x%z>?7ewBl<(UpRI)EqNoZo)?3%G;-&GVb z3L(oRTOreAUrJfC&KQ-Q88Pn6((mg1e4gj~?92E2{I=KY`G?^(_uThf%XuE>aUSP+ z_1qEo^dMmKcu42_<)pFGZDK-S^{*)3O5>e@!9Cev0aGv9L=vbM2;7$CVFzjVnk)Rh zBrQw4M=a^SwpNo#eEEL2I;B3p_DXK0Ax%bTI0lm4f~|323MtVms4Jy+N?g4|9yI|B z)Z(uGx#&*u0>$8Pkj!YU)Y3 zrzvr5Nk!lOsm8!W=HMQCVnxS^I$_miTaJwp|Nqgph`eZ*U#03N?o=ABs z9Tj=gjQ6NK7pF1&6NxDa&>r{uRI*;u4RB&Wg7b?az33)~5(QbFLB%`TA?oWN>zCAy zdBz0uj@Ey-bo|D#&y$^A27wSVvKvc05@rG>Gn-YrVY5A6#|6(fwYx0nq}vmF-9fdl zkw#Z%K1KhOq88uw+aa2Uo5QmO@Zh=%OK?jSR@{IkO{d42rZ;`uc`i>b!>K6G*Pc^C ztRX3d%={Tw+b&qGBAh0usj7_07zm8ayIg{S9q8cHPQ9;Xa9=O zwie5#>{;vjW+!!a$E`!3t5sEUY0o+(W~K;x5EM1RaTGg2FBUA3i~$7n5r%cCaac12 z0pBIeICA}b69R06%qPEL?Vzn`+$)4HeoJ`@1nnQJ&H!Ai&B5~fg6vW!FlFKyH%x9x z)wgQwI#WVSLQfkWRgL(%948IGBKR%@-a>#3a_Fz9j~42x3Ym&DyJm`;hPG;AAhBb| zXV-kLOXNrBrrUyhVeFzgd>i2_i7j{nGNI|B+%#s)!<)>hpV;<}B>VnC_IST}Swpl{ zTrA_DbjK9ol94deol5Ay#fBggo5U#s@@+;E!_#}dE`)gYyNypJ0xDv5FCw`k;e-NzIaB+O*8{0?6F_)qqlMEv|*`kRjjax%2fN zg{tbOja5X0yZBpRRxV-5RajX9`2|vjt?Z2yXP$qtxP^|n%kRQ6()X1de&41#A#%l8 z$qVtbu)9aI;hc(ZTq(3!&AD4Idf0!-(Bz&S(O@v**Vwn;~B+Ti%9TY^Ou^tAhCiOx_2vR z{E^Z5+R7bC0q5O`|GjDonD_q!EY$z7p8vyo{?8itpEdA*vIhR&VX^_B{jclzfQ;{d zH3-81;*o&V|n))sM#{5ee zhShC9q+j-y&We)Jxu3Rsb1q{c?UQW2r-T~(GP)$}ChctIApaGhDMrSWf9+TU#mHBrvRwfVzM71K&{Hx)>o5f;;<|GrH7JkFTR=%+Z zcRvxfEpj1uKO2lzRY;c9th-%EJwCEziq#-cgYj(@9&K>yg+6}BY{g>SoQjL8Sh))g z9q!z`bNZUXW?u&G%sHNBEHM{BwPNwNZu!+R&IY}lQa{148dUt;B+r+1+u0&c;A2lm zQgBp=im-)*N4T*Li_@VENA>$&sEebTlEN`(&bR&W*6d`69HQ&p`JP&8R7=nOOQ8`2 zqP%Ll5S0XYMEY?W_5(@Cbemu>f%$Cv(O-K|Dd)mq#l}xfBgwJQxQr{|Dbah$fqU}>mvj@pH}js|L~=9tDWvpU z9*Do%+k3nB46miqa6|TAk|Icuy-N=OS|54C7Tel~}Orh(qgC4ZlNN=;s zNte8~&}Lzt7C-G8H^BWPW@1k`>Q@(d^B%C0PQCyyys$*`FnP-I>6xWwfsv~Kfuh?Dy?^vDV)~WOtr6^Qm593s+*pinYW&15?WW5520cx;akxal9 zzYZsC`8DBxbbP?B>GbetO9MTI0qwJ8*N~Je;#N5fp^rv zB%{4SKfA0yw4wd9d*;U(B?l5aHzb0y>Ze&op!wJb@nw028q<`OW~4X)At-@S{;OP2 z${<=dq^LBm_lcb49#)r!f{;S;lU=*`@P86f)>z_YBV{a6sabby(OsO-FdQa;y;~1U7 zoLG5sN3MCx$SHw(u{BxqeSt3mItx(Sj-<{6(q~x7VV4;km_dvhWIL0HR&t@%j>h}# zwurh=f4PCb#Bx!(>d~!9*Ykvb_kWzf_Jg~;LVVXH>?SOUKF7|#o@xe! zOw>NYw|Vwa?AKDy->{-<&6oZ&?+Qm0Ec`bs)s0}_#{Y2|g7ANhoF*FMHxICJ1%qfeu?QJd(n?HvEhtd^L*fG`V8&`BWnup32OOLG!FZT^z-N9D# z&KF$eB(E-;Q~T&~^*+sTrYTh^<=L4PtRRY>on3kS8&Q5F82R2FS2E!v{&~`Q!W!l8 zN3kf1@3xfMWnwQKX=sW`!V-bCCeLEW^yyMG*{ouytkr?Ew^?TVQNqkAn&Ox2t-Ws~ z>Ijzx+Pm|)opz>2v=fOi`0%nQQ1MZ1@Q|{33l=(vURo>;vw(a`yZm2F9H}P^tVDK{ zcxPE{E?0Wk`=)5}%02S;^i;IaS@}2g6-Xj(ng2ITakB$XKaBhhn?LiY<1^3ZFVkR< zlLbk*169;McAK@vZWqpAiUAmQ~pc3*NpJz6CzlG9CD&E%Gz3dAx^hvozp9rempg8sKQf zX`7`YR?##(;^zEs*j|I+U2{nLJ#fhE?pwn%ohRK7&wLLrzY5=YA6dh(wP70e3=lyG zRx#6)0sPsaW^u4KB1+B6pq93>(uwQhN5;*4r9_6%`;*0vzPG!WqHWTCGfLs>>a4z zFy#qWKA4$o2uNM61GPC;L>#C*?qE%DbpsJ=I=c@?ztD8-H>}v|I*dK@U#48}eQ-#< zk14%}jD!@1;|$ab#+;$W8QoIU?C9LK+jR{Feu7zdFpED`^2&CkD?~LM6hwYRE`urM zj%O7j(CXLO=s3^_^So|)m<0e2SgXc+dZ*&`~`5@7RE`C0Y`^ zuu;wx!#GM`3Xm-5mpXp4@xaaq81cX9BuDX|R_I(G&;AMI*WifQDrWY$&kQ{dLeirp z4*B~F-R%>`P3FDJ!OH~UDcuP$_K#*kEb$~}8~bzMmr)2lWB!38hP3SOv!aeTR$X5iWSOFb4tH|K%y0@4JD81Zry3t7#*K&Ly*UB{4M8brt z@R$B84sS`l_lytWh*}j@G6C8@%M>q|25F9w5B1K+M*$zVhvs5Z=aTHu;vlZ7;@0t{ zvb=Em#eH49gXd^s=SI2Rn%DofZ+=;^cUXa;%7Fmh;(9~vO{EF8@dZ=5F8{n?pjhy* zVHkhg$o`1mw!M9brYGsUcJ;UVB1Eyooe1(f~r?vm}d%J<&OfH(3;rC@D+1Ao`@xY?~TRHu#mHKXT z`Ko2)DfTA<)#*2E3`chy@?9~Ir}a^UUB(`b7cVpvENtE4&+5O6-?k{8qP`sFRm9^a=4GJV7@eq7c~(oM+B~y| z_n{bmyo?{xLGAUcxEAwc_=irW#Fd-0?j#O-dvMq-*KVQ+ht7WrZ8)qI00}$P6$8FE+dfpkiSl@W9i2iNLvE$V3^|nn9u}Vag7EuO+y;{m4N*X zE9^hVbJ-LN^Z$zJL#`pi1b@RkxMSH5JB;B|p8u&w{Ko)l^o2`Mwxxte%3-G`DWb*; zmUto-QX65)H0ni!*_DOqvN9D0H2kzTQEuiGf!>3G=pVZz?tXPS(kVil?UvXZRV5M7 zX^aRku%j%izHi|ER91OC8E@&NGj^t31^ActHgkf0aMoO3=j2wFqdPL)Fmp$I>pdp?8 zqrz}5Jnu_+lD*FQMHt6>(b+)`R%uWmn?IJZFX&mI3+4-QhX;$C$kK34=$%a&@ck9c zm^}WIh!22HGR&BUto#~!BULcfKw>7;&TUyYqQd3+`RJL9&y728AKS!}rz++`Ha27Y zL+_omZfY1-@LwMCMc4ihNlV=?3)EW491Ezm zM)r;(u*U3|ds%VqMbkFXzFxE}is_pmmnA&}O|D;28e8agDC~#ru(DQed4+3tr3Z8!>m4a>kXx4Y0rdvTtzQ9ShI#pX&8>wfSz+2!Rm-t@Isn7nJ z!h=o4e^wLnU&}H4e_43{fAVZtIV2U8$}C2by;vQ;VH@zl#VyvKVjTgnTS2kTPEf1^ zno<{R1HlN#E+AfjvKPkR zdjMn-g6bW+{EPO04hXuK`#^h8PvdWuH2^pU$==nX~LKfg^Zevz~%@Tk|TAl6eO$ z^h|>VZ2lw0153;y>{v&@!QJdOd_6AKqLNP%jd%$|>%m;*kyAe`E6Q`@xVCTSe><|1 zmpfvC0|p-?oc{ZemmLH!8J#dXh7yb;Y-b;InyY*Dl{7jD1=J^AP-mMI!V-v&etMaWmbVM#{fq)xRB{yFX+i6Qd4h6AZgsxJSbi?4RH z-0bvtUI zSAoX%<1N$3W#G`VN7@nmVJ`(omoSBlo3MON=iwX7V}))DlF>u& zlB4fy+`4n;mRyQdP`Z_VqcpeOIZFjH3rd&`fis`T5ETK$#}r<)g~{XCSIlB!@-qJ}G)KsLE%vsFXzUFIX1f-z`^>Y(+e z-!G?H?&P%BCCH3}oCoy_3yTI4BKgQVqcPdfU|*3!GeR4@DQF)6??mWH|s_Bk+tdPNyMd zzvZfDM7yyZCj|j%D$$cOW-OpdYUWSJ`rTt)9+Z#rr;kLaq6JX*Zc0h0=+4iX9OaJT zIY79l`U|*{sDrbAwju(Gh6g}yVJ+05nsgRwE9f7h*?)~c)HMPaJ-rO1+VO7)>qn6N zflS#iARgwY7O=awfk3%ojgSN9`wiG)n={uJ*#DPmo_+ELOXbGboFb2k1cqc8dp(a zi;##aO?w?}jtxPk$Vv9D8R!?o8kKb%N$kgQF~y3~Wd}`zD@l0k{>kH_u?9kQ3+2Uf zofLvLTM08j5XR^%WI0S7fg)zmqVDcldV8*KO@3Vb_y#tflrq{06AI;+NBUxkVEu-( z0VNz+3pLNQ$?k7zrecZMU6YBvRt_;o=pV1&ib3hikYA7s(T}3kLPx#_=$o%UVQ68A zl7wr5qpBb1A?PUf4oL7*t*PzH>th$4>q_-^Rc`9-`_^?#;ouIwX=4~na7J%>wxdrb zOun)H4HcJc;4&S*eD=}<%b^vuygiM9-5&m`Kksy4Q0rc7z74R;FJb!Oud#8yY8Zv< zNNQu#p0y607j=ufs{GzfNo|~1Vm~LJ=G`l$)j%jfq#~%N(WCYB$JB3I$Ydj4rryxL zH+%Jj=F+~B%-fBu%5FaB=-6}(SjW#svH2N*e4rq)M6LC9sFYf{dXc6_EX#QmdoFT4 zUPqA6T7EhC>P?=U8%uU#7dTZ#&AU7UVeBOAC2&TGR}1hlHt+Q{;t)G^+6L9Gj*Ar( z+teAFpM2ZyJhmWrwnHXPQ97)%w@`9(2m2s_oQ|N{;zY1S73>Xlamx0j5xps?Ce>mH zf6D2IY<02LwgnEdHGHcR2f5wE*!!cG1>ZO8_OlNJ$(z#-M2GGwdIm+d3s{|Piu<8o z7F^)8KOH-I)l>fKXP)U;rc4p7fS$yPH!@@z(l%S*iN9gOP5a1jnfVN#z~ccADs0eR zUN4<>DMZo8;#{t(G#*>7;^Aflm}*JjS^S&zyg^iriwUu5>r0Y7O3Mll^9cz%g7vCg z6rOZ(=?O4sM1?CTUM%X0)fnBG%b~*ntQZd;yA?^D1kF51aa-JvipQF4rlqiu71Ka8 z(86!YZnD5+vZ!89C}Q#OI({bR1N)xJmQbk79GuVt+ZCiYyndF6z>IT`fl zO+0KqG~+Un0irk}f-T0p=;ZO>98EV~XlUq2oWC+(B<<#Lj$0yc$YDh`A)5;@)tNp> zLwvap!Q8XR=8L9DwU3?6A44bBTKQ9FW3DCFeUvQ-emv~hw>ceWee^f1QfABHt3Q(r zK7O85hhr+iYs^~+5y#zrFyPzfmnqh_wb2hrQv#W^H|%x$PFHMo=r0)N&OC?=3FDkj zgT7142yb*!y+hyywZkpqag}+NZgD$aK6~w$0prZD#$LizDSaS`GDTS#Mlz5`N1nn^ zliSQa)suBLLf5x)XWS;-7j`zTSU!qZdv5Q4_U!J9cSV^11rVzcRZ2`<2c~Esu|6ak zHx{Nrt#E12F1_08t5~gEo%EpHdi?#k&6GvqOr-h7w6VmL8qF_@tiit^IrX;Gac)cZ zf!}7}$Vhd$82#q+%wUD|I6KpGmRF2n4rFnrD3UEGI4spF*%3+btT_IuyM5Tc&d6wJ z*`DH3e)DQob$Y=5Z(*-pdDMzo7o;UA1o8?RQvFm!vzk%tSZXBa%&UjVlixmjOM6JQ zYOgI7aq_59@Q?YbS$*)RR-WU494k^+FZ>wpHuy=&hA}1@p1~WYUO-4GH#y@)?o!= zh$O0?_|jX3P|)%AgG|l><~iE+{W*O?PP9`Q!Mm(xx$zP{zv zj(nx@o)DKO>#O7n=}_zK2b{IUM_0mBJ@)TUPt7_K_U@G#@B0oDV|dr>5)v$WATFeUvK}R%Vg@ZR`bszm+b*nIYH*aa%bewjw~{DyJ-TD|4-@>G6J@}>Sg3W2cO`_ww2u^g!#zhU9v*_sbQ1@u6u zIv*PNAXz&b%XFBwf;I$>Z%r&`4hN0Pk*Vffny*y4Pp6s4g=0e=I`jg>XF-6JF}Z)B z0qZ_fo_1kuiexif88x4`f8g1buHx%ym%U8;^rc0fa45vhrYar7zW}Mf|L!aj{u2^9 zX2agmQv&vbCc=Z?MUdmnBREyQ&nZu_{q*pU^Ib5hp zbg=6pSJ^|PI^D7$_5rAa@)2&?q=3BwU7N2l)R9N5b$0k&>@HyEXeR}A9Ti=Bdj5Kz zA?1g;-`?3WaTycFQaCpgGHNNs& zhU4R>8Rch9l=1{ZNK3#;aci*h37+@dRr_FJ9#Hgj%Wj^fFDNZ*&jZJ#mJ8K)hTmy< zCXKU2j-q1;WE_rzsW|;+?f@H zB&UUJ_o8iX&hE}P$-AErgC7s2tI#%?duHirBf$1s40ybv ziA64aaFp)yDH(s$>tMeoq}Q^4jgKQ@XSwLmLk!S8JjYQTWo%opyFuXMiIhR=kYa0F z-!xGbC)UEoJjcpxjBpQr!_+*_tCe<+?|&UWr%9P$@fJdia0?WXDVM+xG zqQawynY-;=#Vi zeZM^MvxE~P_$H0=v4!Kl--mG}P8J7%Cw=rhn@2jv+*S1QppeOSf-wk5BjMB&z9{yN zX__v>ohI{rGlsnrIx+9NQE_2}Kk((m@-8)B{%z0bk9-v5;)X^dolIe25wu47F!YXL z2}Sr{%y zZl7DT+bw=@*e^;b6#fd3<51bben7ZJ8nYrIYDb9HJQSstk0ArCdAn&kgfTUA#hTvE zM_2D&l03FM!rqMI(Zfg%Q6?6cB`+*F-3Y{wk*C-LR@3*)7Ob)F*#|5&nv^J_J;rBXUaH4bg(qcwnQuS%^jFB) z*HB9TyuR|IIuj-1lkKe(IbNO(J5$jXc0Z{`Fc#~nF$$#5NZ~N2o5O4w>e=*LWh70H z-t_$^rd%(jNt(;;KZLpFDKp2}jU@xNj(QOrjiXu#Mq~u_P;_5_x{YRa!4~?NiqgfO zB@!0r((k)QuGQ`4kWhSLM*t9Re1yHLkX1}T;f1GMAdOZ5sx8s?VSPVSOHMLM<66!+ z6(!A`d6(C0i#shQk^8_Pm=e%fNi6X+0tFXlUZfQ+)l1eipMCP8yl8n{pG&E;IN_3u^S;~#hiy3i+64apD_8Rnt36llq-@0vIZ9b*b?=Qt%d0enaqo&QAliY!N}2J zy}^PMDTL5`>3g-5geo_fW6Jwxy zu6^HoZ?5QMOu|J2Z9mR~`n7PNC{&C>0A^Kc;^KRyuclG^ERw(Vq zv1cBAHQ)XMH|cGK`3cADCr9>3oD*DZXj-K=&;&N`V?71q$Lg{IZxt^%Bk$L`G+LEN z7uF4!d#M)2wWM{w7cxJg`b8Ds5?|6UO(0qz(G^jMt&=)1tSpwgMH-u7r|8Y_utn+- zOgqdJmgs>XPXn%oiBcdxjqnh)RD?XPNRc53ZP z`j6DzXA-3!9KI~=>1rNr@CwGdl*cxdGDlUI{TSw5zN|UvdSvZclFIjqOoU3(o-VS# z4wD5w-VIA$y%#dj5kdg?(DQD8#d?LVSskuplU^36z8)2W;`cF$_uwh4R$X1#Z6?v& z0M<+c*4NF0eg!<%4QJ5)s6NmcQ$c&+!2ZziCW2XKt*P8Q;w^}r!u&YE872LCTQHFg zxH|CmQKTEI9(x_Pjj2SP7^XLLr1(3of35Vg_b&hZy(ss?n*GtCiHI&RHlgd zO!2aMSy%8(Um|IDlbu3_1eXI_?rp}D@Y!1;`mMJPVWUNj*YR3k4A2!p*XXERJ;xz! zMq;e6m3r-9xzYIJ7)YBuF*gqDuwt)c$y7li_6}e@sQLQTTbxtm3x3+n|7F z6UXKSOdF30gaz4;nKF1ZPP`^pe0sB$@y&5Pl%XHv25fw8 z$rKnqZm@!)+?%DKSh7Px^C8TqW_T*mU7Px`sR86(PzM9%wuZ{D_Z_Xf|INi!MW8cX zG`>z`t>y4#<~MKW@3S#FjfPg%4R5LjwSV=4yduw$9<<8gtNxd}U%%qo-MK#;L6B6P z#X*XK%h7tv04{N@K(;hzTE(~{%_yO)JecqGk&^MoakpjUwC$~(_cc7_@y=V4f2Uwo z{Q>G40nB*^4ub`UiIRbT7BbSB%a+AatZj*e(W$e!_q5u$JH~2NU34e9euASX9X%Qn z5M;pO|5dxrEd$n4D9{%4fy5U!X2V7T>-}rYKdDa*aQvQwmE|KSL~o$_8*rqnH|P96 zZF2E{*!%X6TrsK`n2n;4;w34@Ho$W8E(p)(89-fkbYne(xtiVDbBfIpMn=Gyrng_4 z!sNLz{jNfts_Q=pPY94*xd$)^Cb zzFo@#N{w{n&M*m$5BTIfO_xyB)VOmC!yyI_nv5r$e3AvT6HR1oauDm|KAr&C~(E_p*|k ze5hrunZxB{-ybxmhpKqiBwLE)xYQg~JZ+gg9(>j7WQ!0s4lN7?{QMv*Kd7B+CRRJB z-S|ZP&@=Qqk*X?l+m*e$jp0|Z#O(-jaRZLIho8PiWxu_1Pm`%nyZ^=8UGw!%-sq)o zVTx1z0lzXoOlOi+F6dP zcPl*Fvwf2{ax`PlD`@tDY3hqNlo{h4}CH7$~goE*3D z%7vSr|JNQtnRD(>FAM{l7tnZ12&VS=g4pr8)G`*|_$0uCeiTh(y91Bm_&G_$o z^f2vxB;R)YIUcGP2_W}>>rd_TrK-_CI zGrOY&!4TCZuoM#BZEN}sqXQ81z!3sS>&gp&;tSIq64*mtUM4VCsjEyGD~90W$kZv4n7@EVfNodd zv^uiqipAb;7v1BtN-&P$<}Ow)7PT6Us~w3Mw}(7v{6w~XRkGa+U-64ED^_lkTwlt> z;|Zhb7a8Yx3cma)F>z`>Ld#60u71eQd`A&*u>M?QC^=>|dGh?=p$o(P?Yx6E89l0L z>FqE1wT{4m$gjzqE!)OW194strVm)Zo9n4;i+sU+WxOI}&Ik+J0kLKr!}Q3AWCUNB zFGV$O%Dd(rPumuzC{#smV(C?j>aiV78QWot?nR{w0b_@94ZnYH70b*l@yre`+}$C} zk(S&^#W<#yWYn;wSS<=MfOO&3VN_?`?C&wo6n;DK>_Oj%37cffhmW&JRDdcv- z6<mjj&YueYSX{Y_mImNYuU3@b4EXN zc-kZPVc@0voJ2WL_xqP7iHGJvK|=fcmVNF}3{O}9fwoOzpLCX{<}2#Zr@dkdyVr)` z(Cw^cuqe&G)1p93Rfc09AXLl~$Yr?KlT8)UxSHbkd%vBqd(^zo2UaR$0{317tMgxO zRb|eJCLPZ4pgT4xrdKocy@wvAT#N<*Tj{Ib`rT^jue+qfL3`yg&d*WqwzNQyQI%pC z1$Eo(3S!J4K47_mVvc46_A^Z=%LwZxiwRHZ7VVeQj(3j|mq8gX4^u`Tm=$H{;|w?t z+@>`(d@ZQ&+yF)-NY{$DqDDZQmC6587l*pN8qo986|Q;hL+5E_yRrOlxUQEBEA}o) zsCXKijHNpEC4;yC9k&h_4?d)i0~^A%n<+a|~j zjkJeEcSJBbW(-|SKQoVA!}Ju5wfKZ;@3#0{yvMp$(=+SN_c(5c9f+5!aB!(PnEupg zSh1B65C zasJ}ZFXLi9)GW8SS*JH_ThUg#Bz)aLP`b+Eep&kh5!gNxE@1&!&@%QGj(P_F%WQV( z7if(;(t_JU)#0ZLpK6^0poR>PO0!vc%OCq`{# zbNn())zC+;rc0a#fJ?{(mH=ZUG{v%a@J|caQUsUw&>BrXuQMuKoJR~e@IG7j9+h9S zTs@>XP@JM%aJ~nS;^D^>BHVc1lg9AV*ky!Rky49IyetP4mwhnVe>=4=PF?5nrK^+Q zp4CeXguD_B^0GBe__o^E#*X^ zcYd{&kjOSm*g3Gb{_1gEi2yCG4`ZiwK)BO70@9C01acapR;gume4L!}t}=`RDl438 zfTym@oILlgfx6Lp(`me|gsAYkv+d@~xboIK7}v-;h%W@Murjf8-wD9(GmnOV*;24u z-HH8ER&k9W6_jQ3(ozm) znJ;+zufm0Y!>3vSV&7J9w1uLSs6ENk0#f&aM43R>VLy-81MAC(j^l1alk01T9VrP4 zPn%MDjsM6BU;?mEe-VdXLM@UhW<$TsO3)eA#>K-Wn&h9O&Sg~lWF{Y~C~*ryK;AD&sxq<5!=IgB8y z#g~Vucj%w{oqtXvTM0Zt^OuvX4J6%*r0W9`&T?dv_Irn7%S{)JWkE#xH@Ri7__7Hj zlqt?i)b6Vdy9niyNu1TDv!*tF$x^HWVzB=F&0^jhSRQ*;4{LY`Js2&oVLV%|j zJabX%aTC0pH_Pz0S^MwhFUhw@nXFc|EI`trBNyrY+s zzh~R?#wEVZO@+aZKbSv1GS9=5%%ye^aUuwERo<@Db}_ocYwv8cXXW0yBj@=%a%>|+ zpI;J`qMX$3zInPy#f+B==EzD%kOxU)1N2hryS&B{ZzE~Qp@5{)!x{96ZRIk0<*0sh z7uW5NQrK$ER!n#l@)Q!-whXvL!56z_j3)C)&bhIo{LKEXqbIRK!n~ue^kt%qA_;|{ z&jJME!bm_C6A7f6dgdOF4?m%t_B_#7H1SAZNA-^QF!g}36r8u^d#&vjv(c7v=uCwZ zjO4zYXb>0ziyfK9w17N|%A;EB1LI4futss!Vz>5cqJ&4!-l)e`vK4%WbDUrodLhOH z+ix0`?TH ziUclBY}kqLtfJLD%*t?H6_%2EbS>e>#4EeMzR3@mlZpQ6y1kf)FeEfdCX50RCj|iy zB79);P}gr43cf^bl}q|&TQK)ayzn&cHGz34)nXLEd`uzhz#=`2;ZJY)4zO#!wTMf?7to59!FD zoQ4jd5_=eothWt~k5ZhzrFVIGOjIe1EY30|OhBVac?huESBGbR!_H>=Vvde1%rYgV z7^YzeRyF}lSe)}nD_RC9;n}I7)GbQ)6r(kJsP2)k!R&>BiBlP8=PLGH3>f1(YIgKJ z=$3KrygR2LQ}hnq<;^3HRQf}RQz7NVOMI)kT&7Y!=duinR02xMW--cP?o=F6knbZt zXrPrXOHGOOW!D2Iv-gJjmDQhCswyb};(a-fD? z{IVfnY1o&ubGzEzxnG9WpFsW{O5~)2p?jW85o9XVBG_8S@Pc)RHUtlrOu>C6%=jg}4n&d;^~;oH0J?gWi{LNGmB;HSOkEfqRM5HsU_+2Gr%es%Hz?nA*bY zyMNWy59=Mg<$D`9WhwON@<^IRzJTOk8oht2X!Yh8bm+u_o-*QPbQ4x)ZCyXpi8k;- zu=L>7P&WZTonQNIJuSptO1Zq}R+5DS?(|PMFP7L(suE1pfxjlSjaMjs4Nt{RyEz}7 zc={VAIj&iGWGEpe^fS+#ooE|Vfb~3#n_(Sv04^M+Ps@sF^3DI4*Y?lD>)$3@(8-a(DJSe$!bl7LrT-^+>%ee6^ELvDxK#KPo5U3O3{0B*Zxv| zZvKOCYgoXb0|-H=bd6Cjc8UufM4c_Mh1fOI5WV+6upTvyTh=QkO)_<$crr51zTr%w zz|xe&NQJ-m(j-ykb!}71?#J7VZwPbb?^^gvm=(ij3mj-im6blLtF22e%64*9xV1mh z=?Soadn-hnox<*e8ZRG$huVeCbA<88&a)R@Y1Pg4+qH)ajCJW`qo7umfC>Uk32 zA?xm1fi_443IKwa@3tKH&}W{{&Vm^{0+jKtz{82;CaGT3Shv#~Y&1kpwMaku*j@8-cu`P#a~n@COb zOE2GEf%OP!T5KyFxy&%ccHN^QSV>~=En6AbJse;T-moWe>nE{mKdHZAzhO%Dm_`uL z^s*=1WsdNtMo8Yz3kYE4v}WrJA4zGpoAF&FNiYSlmumpr)u0u#d4Dp_v-{j--wrX| zsBnsXPT}Y_KlJl2-EUvE6xi-c0CIH*d;qPV|n-@m=RQe_7(EY#?nwl<Kamu^~lEZOt9We#0K0)WY`YEpEpw{@9mGQ(+5ExODj#q`A%argaX2h zD4Vy`kZ|6lO`ukx}^(#IMPB;n;UG z?;iO|@{xy^pGLW&nTCmUr{A!GOcq!})aiLRGu;?&eBO2S13qzT541=QMTi8!+hk>c zwXWTs?(6R>cp>(D)!QSDX440vpGcv~4ib-g%8?^gvsf<(H_*|zs^ZALIHQ9QqeXUm zf9C%w2~MJm`)+-I(E~bm8rdnN9op z_?`WNcTXG-`OMS54wynw<{yd7G;-~+1Y+rQKXzR;fn8Si3owCE9|+$MYl1SULQrk$ zAj0v>1347PlmLKE8I#KHaC7+$GpWaaHzT}Ug|tRM%@mxK(ooNiLL0+N2mk8&V#YkF@Ox>K^tnW0V=h&u-zVtGR-_h2%Y-C1D#Xsy|ymg9?Aa zCDZAOD^}VNzT|oyaw@OqLqk~$&iJEWV{?K0R6RxtOZ*70Qfgf`o9ZUb_+~x`zHPC4 zQBth9xC8z%H9Oe1mH%l}Z|?CK9vD3MylWqz!(|1b#cA)2KCU2q3+C{bYaLl7-q}x& zN0-f}$M3&}9B#M{`aLxD&7hYHsDX5E8uyC_G&lfWHnCeTo}uZDD1>m(^A5{5Z)0!S z=*Z_?yk_0q^Jbf7p}z>n{KJ3Up9W$%2`JKiQqA(zGcbSGgFSiM2-K zg_i}T3Td!Syz;-sTB(jU>Cog`nzg6`_=NR)p{7Gk8uza0Ncmp*L_fIBNW9Y6I)A(> zxj^+Nnyd2IClErs10Qn`GXh`tL+(XTv)}%PQBWli93W&bR#^=q*tX!42tFT=n2rClIzFs&-A|X1C}os@I2uci4J)9$k&)ph*#ekj?D8Q4u3DvhvLE z=c!WWm;>1J)OloXCa?_t$R&hPjjs!(y>utX6U|Sdr1o@2*sb9fXR=tH37z>hti#l$E^4O=a|3*Y8dZOvavuf#Y%hma;yNGr zxYjgcDRg@JB~U8FlYhgujdjLYm{pawp>;m<@N~uDG(DCjtLXTYjXvl&jt>8_AzB|x z`BYR=Y2;JUBwrrvecJ?X`1(PTm)!2i!!{t3cS;%m7+4M)NDaS4VBCNr?xx0o0z{<> z)P=NH^I6w?53s*wnC-7`N|Cr~fZg`=YDg06m@&5~8OXF95T1>}&c_fwHsMD)K{g}o zL_f!c*RhAVc8@uYjs^WZolRNs*{g8NT=J9C zCZe3|ER2x;}^&p@BmhpcxJ<9RElo;1tSFMpL<|K^JVYSq@?-OK)8-v5 z!LrjPh8W~!_l$2?m}&FlCzi+4;a?aZM@I znB{$L@6Y%1xz71~Ki4_GbFTBduHSX8^M@gsnS1X0c|X_3^YPsCJvYb?;e%~@irZr# z>Bba7pQESee2yPCBG9wvq|$%IhZOVimQoMYJdt~SOsSF}v1e3f<0g>`pbp0-_5v5^ zt6mzmu?YuwR2KBHa^#)-DVm|1tPkA10sOOB`6#I zgmW0uyhtm1^)Nvrp{3%6-F!-!7Gqr~Bld#sVbZ%#e4szP4eMLILS%{Q133I^u)iQD zeiJDJ39QBss)2S+c!AqZCu#Q9J{yyaHz1OurM)r8z5gJB@p651E3PM^H6^- zg-Z#CO2-7IschSSCIFVMu4_x_$3$S8x(QNfX*xh1O;GT{0fKG0lJuG=Z*4A`f#9t|Q0CQ~wa?hLVN7;FN`3UjZ^zD-iIz7h@>FA9qUG3i4LqEm zoFf1Q>Q4p`E}ICWlXRZsb;M9EobDA_82DRRxAV8Lno<9kE@y7Vfl$Nie@AC4$YC4C z3Z%)D8_7dofL@WX++C`XvBazWuOpZI414x$lo|G0qthu#kX{sHKW(7=Ko;7zPsc`c z*~W$Jc$M7!(zV8M;$jMLwO*~+&TO&m0&1pK-OTbfl~%TAkM4LZ!j}1b-Gi# z@UK7~2Y4Zxi%rby^B-!lp%~o&KD&PWvjb(%?_)v3+>P?t@)1Ygf=7%i%ArPS{|e0B zW0Y8zL8c79>qbC$yPV=r^r4qSlihvQ38&ShEspg*tf+XsW@v$r!GI#r4`jJ!3%~26 zP4=W=LuDXJGhO~y75{mT+><5y$(kb;_0ESBea#zSM$qeq1JITxk-)SgtKiXI+6mH= zk>LfNnejpj^c@M)F%r%%4&^RMkUBdgl2=a6pTbvFeZEG#(d)IW?hU?{@`PIqgm)=E z=l$YxEBQ*Iv5XX~+%!zi0Y@@ZY0uSO}M?3#8J%so9F-ookS%O_%3G;l=|RJxeW@dcE^% zD;px(FWKeCKTVO4i3C$8)h+=qw#=E*-HziyZ>K#Om#25cvUEvfJHfasS)WUh&HaKm zBoDaUV7e)X>IJEh5Yb55gXKkY+VZuJ@6#r=7Q`P_25Kd!v}EN^86NxO=HR1jI;)j9 ziYt=^@eoHKfF0eS;JMengZ^4pd7fgUA##9OTBx1E}AE4W0%L^36?we=7WD82>uAWm~eMFf=~``DKfZ9zuX}u7`AqY z|FdyG2*g6ONdt^7NNdpROS z!y1QWPye#%k{%&XeN0Nd&^gs9IhlMG2fVr`a2W#+rV-SP*b4#MqC|83yw6A2Q%^Zx zC!!}WUMpt5i&yCh#S{ApF9ip?ID3j|QBhu0Kg}e#h>ner(}rh{d#*^l{ZQM%dlslq z>2I=*UknpFXeZKgzk5!+2>~f&E+#M$bHt1WIJ5(d^wFQOO|Kpi!CUbDIBrOPp6nZN z8j!tDmzaXn%?1XRDt)%9JbconuYCA)vY8ugI?dq6z8yQJf-fy~$W#iqu2?E%QH<0$ z!?+J_fStbeSAfkmx_Fyl>;voFU0^i*Qq;{kxBX@T&lgK4EzXaPe)(e2txPB_5rmX= z7bo%^JMN=sJfzR{wD%8F5j#AJzcfzmJ!2r`)SWkb%}DNjB+;g_y1cr^c;AJQ*76Qv zf!N}gFrJr`Py|jBQmkP~=~MXdk{k16U9lFB}ef~Ys z4;k5@P)+;%yDXc6%F&wE*uV7K-vkx#>qw-z#NFaAS5m^01$pwZYDR`Yl<+{PP6G({ z*4)!NANsMj+=CwnG^=-cA6`omKjp{I<8bwGgG=GqE^jLr>+IIT-GZm9xY)OTAwjm6 zW{!hSjF4?u`#5~a-3wvej{*6bfz z6d#2pP5B6F#sCj77Ar$_@;P8@^Zw)5{O!JXO5F6Jr1l01J`78m5qAfF5j7zrDVbiM zqa-ZoTxu82n&qZXaQ1+j-qQkz$?3e72N;b)=rZaefs_cZQX4xwJJS5X>}1D}9^sGYRk3y5=6T9Vm`}3d5+sh}~o4FCG?r2c@7A5~T5%tV$@q!p{@ibY+f)jgN74oHzOz zNW}$l0?`T-z#E8B@A>mxd2%tREY4q){gf=qig|sH-XI}*!i8u1-uqub!KD+^0mOatED26Izz(kA%0T zqb&wr(xQgXyuYS=kr(=cpEBX>Kh6F?m~99M2dYjF)an(%aSJJI@v9>ZjKMDF90Oh6 zZ@H&5-37%cPlccCYWsIasH0jLdEs(_+}ms>JURum_Ez>}}Yl#BnvITXWK|qRAL;k?LU5FfupO67-yf z>7E-|fw4yv?={UBnqtL}Gza8hJdj9WyGaEIk$P?vih&fce4FFb^2*i|>pG6%?6bKj zHXWKv<+f$yAOS!-2)hV$=B}tFn%NDY&9BAw;}B;@~`z$zC$l~EOOkgMY#(#B^R5@X9n}nHR-^P$8uD$q&WBo zEb9nR5FG#vpcaR(m=&7udK2*Yc{!ZnMLNDNzRCz~R^LdmcJi`Ye09oUjVme|kkfShYxH(3VDK25|Z|lc=AVcR*S8UC~B~ zZlcae!fD<&Cs7WLBN{J3LFIz_#iTo;Y<+A~KjA|mODl;bT-Yin+q=Z+rr5;mdXUvj z&0FK#NnIhz`mbtCcCG1JA-ilr`T&8#R{K!JNlB3nGD(lBClfr0X4U%s>KfXyk=Oo$ z-P)JwJai$qkBfZ>+XQgGpilJ}XwvGq0_7LmKLh4ALF!fQ`-_TnUUg02AVz_gMdpJihfJ&v<^SU9}omXe=gw(j-_ zk$}BKpaH$N=uyDw2Hd%I@aRkSXBt$Y?{B+H#&4uB$h?cZM)pMyZ*M;s_o)CszBcRO6H-obAYA?&evH^}t!pSG&K29JuAD&E*d z2w4bf7b=OY{%M54F!k7`)QPIG_89s)1>7WNNhhL`W%AmXQo`qks7s{uxYWETWZKB~ zo&2*`aEZ8f3)u-MG=eDv$Q*E0A_W%Ly*T4NeswZ#%U->1A3Hdwx-q!SKQ*9P7EDQe z42sv)Py)zSyaTSBb;h4HP^ORsj;x9ey@k_erO8&)Sp})`|AD^)iWF|UVgsbZj?>4# zWf_`o8X(^|jD_TxL&!pV==?Xe>7)BqhP^+|O5C_%C244r`f^Q_eb<)820HH|-I!ju zHL@nMUsuekJH|*MU^Q2f)ANz{;sjY@{1OR66>G1_5LuVG?fpr$< z@X&tUSV4frNI_QS4BZ~L30p!DJtig=o% zYx8kHM><&F?#{>B+LT+7N|GM3(Ys#;rJlksiF0<bJF#IGA^!byzu+cc$C7&VY>G~LN^*=t*9C-Doga!Z{ zNdK4&hXj_?n9+ZSY=Yg((8)XoqIZjm7gF+Xb@-$)=@m>y!)aM_x(BpqA;}^SKP^;K z_mJWz@11@C29HR-nJ4NAyhDY!+}C*b`$ds~$e9r*$$gR6E)Rxr@qAEYzGveNjtM3p z?)(LdmC|W`lk7Pz+<*6tEwi-3{_7LD`kR|l93epTnah5Ra3?^hq`@?@O>4XR@Iw2z z*!zCXZF|)HZMLyrfiTDQ*8aa>ji^;cj-V-UUpNw&=5a2_v2el?rQ4<{^m!mp3Jx*f z_g*~Up3TNp+qkI=2rVPe0U^SVE8{@n#e@*%#lccDd8cDoUt@9H27br1n!YQvZ*&iSzpudboqrxD2sRY}~? za_a{@^|ZIs!-opbWFVpKE;tT1a_Su<)F9)Z>^beNNqqm4b0a(eCzYrU57 zv%S1cYQ6dO23d%u#o_?3}Ly)!CidPfB% z^fkBoPtw0Du`S0Y7LaLElr+Imn7El}K$%g1UD1Klg~h2rs7zN|0qI6BVnZqvQ6vbd z`7dTVGlARJbOMwF^=qrGvcKE3tczzED?am6bI}#^7QD!WfDO6&?4dFtW;Zhs+>uGp z^mzM<>V#Z1%Guxsb}F#_1Jn6Fa@#vzsqg zUUcd7KS^>?Brwn49JdMCSaxdLdh^aq7AO~&tARc5kt|sS;obxt$x=elEU2fuA1yD! z;qw_MI7fg!%IvC$Evg?ROSq*YGlueg=gbY-_8JYjlt~ROu}tgFN%vP; zTkj12u$7Fx;VXSB#cYL(eHPOUA~LYwL*1O+LgWym$wq>(wzSV)C)F7A(b6&VLe!%k zp>J5Xl*gGo3AByq^GDhn-r`9D4NutssYH5DsG3>y{qPesB=t`wXj)fxq~|+w?Lu=%K8TycU&xN($WDCjCp5A( zFV&_Db$Ql;aspiG1@D`WM`5}*Vc{?5Pw8x!GXXjI{Df$|FyjM4qCqmiw&RiNY0Dz_ zV-0a{cPuR?Ot&avD@u5c^4?+UfgqpUVvDFuV(sg?5M@e3#+DfvP6nn0fOeGEj)=?I zvgr6@CienV?rQ1pkaW3t3VsnS0tu4vLv>^-{s{*T*|u=@(7wmjCwpY+#6NmeURUmR zGa5Gf%~GYv5cO`W3qQB69i}Y zPL|{^zwaikfXWCnGBvOJ^UbkQcJU^KUZaZ6L){RSSbQC7*!<6Y+W#Bh2`~hS0ffSn z6Uf=a@~DipubRF6iRNA0gmG|F_ofP9N4^i9oIKc2%>>-bwoDY}i;)n!9_#WKOq_Ly z-d1M~yiaj^Y5$BP2FzVgqavsG8*j6Fb0y_L@>x>YuI=2A?cbd9pjXoj1KeRPj=uTi zazt(GaorvhhP9PVeO!0%pAxU8cyXaS-Zw%`4%uG*S}`>PSS_{!*l$o8c>KtI?ZetN zN!7DdpYqQWl-QnqrRU1Rb$vOl-&ZvH0_TNpXLCbIl5BN$7Le^iTqThjIzR^$ENvwCKIDzb zuHIYy&QX_6&ShJkJ&)KYL!_;m!m!x%juA|^6IaDRLEkGHBAnb;W}l0C^XpxPhkc@5 z<&#lMgBQ8hSV=_11WOFg$Yv)fKgPgWuJjMtg(K9VeB|HvC6?zF>Y-AE?}-CfWSnz% zBJ2=1agd?joX_1g#IQb@S~v1xaHLI6;1VA0wQ6^EO1DJ&QrVG5t-dfA8~VvQS^(WX zq}cnADQk4{{EUOU*xs4G2yUIAkGP>#Mm(UHaG(`h(K}jj`#j{1&0wGIn=<`>(mac43g$6&MF{I&afly64r)1kb~6!{>xMFy|xT}pgG6? zf_)Wk;Q9+TsJae-mHvLL`~Uer9&$0*0K^P$!2$n~bIF`(3`FcK9nQ%)jA~gJMUV;z zE2#hn%lT>xoV~TV2Tt%)@KHCGh#KeOC#Dg0NQXAV$)c8wsJ_Y{|)Z+jJb^700vDUaYL8foVS&;EdV}&r!pw(%_rirki_DT{WG8ax`XQY&P zW|VsQ`Rw~HTYtan`A(&p>e12?sdSHhX)64`3xB7FyaV#Ll}|nhEpYg_=s}yr^PlBJ zAV0Eg5=R&zV#Sj)b!;mCU45XOS4-%5EioPGXDhLQSXKq7TS$AIp+Xan&{$(TkSC%I zyaI(oH*+f~-_J@HCHY?afeJ7S$=k=pN+lv`x|1^r1XrIJJ#4%Y94fp)!^W(A_}-A8 z?^snHXd~r4x1x*PJ!2W$B^*l>458chlchncyhfi{tP7;5(gIB<1)biS6P;O_ZBTMl+A;nkyS*REZTymZ8P4Fm^Qftvb^pxw&>r!-=2 z6G0FW>otcaUJX_^-#A^ukBirse#IR$qo+09l5q2sE&bmh9 z^!K9g=b60SP-Oyam$X}r3iH>wiZc^bGk5MVu+`wqzaGSTXfl;+{{jOrr}32Ygb&@2 zI)e2&ijfLtZ=mpiM6bb#fy)XUyFYUe0g zDN|E+#Ji9L&t7+*xG$cHk;V@tK?*i3sVRiFW`v$iJ0dZwteiX%wK+b56AZwfO}W*l z192hdM819b&~+18Uil_PHh3#g z7@$Se|BAF5R{je7NrP5$hOp7S4nE}f1b=v?&mxtwJWQO#M{uMeaVsykwp`5y2Y$W2 z6Q*wRmHOpm#WU9)IX4#{HP{X7fb!|KtrOBLY;izIyAG4VIp(>KgR+D##e8j1Aa<$qNSO3l*Lw8gJjm zJBRE65&#V04jLU!#TM%>f{v+@>q%GW?b$cI4GvKFG5{yn%_kx{@47^oUC$=D25den zc_^T3#jw-OpD#0Hpdo*zE@lY1n-%PAkg*zI)fVJk@a(uqPc zRDnOTd1zs?jD};y*1EBSKpOAmZWh?Xu=ik-Dx}~nQ3RvD9-!^$!PjVBZPS?^1+vE{ zTIl1iqxZeV9xXIkbt@PLZ3`RLuNy+a)ABfNkH9de<&h2wPg5OY?~Q;0V$ z1=Ra%#CvS0k=8icW57VoZ_>`^K*(W1{tkaxd`j?rPuSB@g}c$*A-}=~XCx7Y2%1?p zq>BWfBxPWz~-@p%~N>8dpWqqAFZMEaE)Aab{cY#U^OSl_f4fnE}!Oc*t z!2}J7-8h#?1>5C(gRrTpx3P^-h#jfq@WW}#R07i}fJymI?BGYW)X3@eOJ5E-uDPep zH^U{}_Ga>EkxyOUTl|a&;|+8YzPP}&Mw>xcepc2SqaAdkLh|gglY)qoM*ipr%B9fc z{QA!$zV~0;`SVghAXaTXj^P0A{&BPp^9<)3P5>isO<%atQ$Qz1tab10ypt;$d$kf( zXHmAt`1==i@oyt_+$VnUoP{kQNbTJlqF4`~O(t!E^SIb{0rb=pw+!T#HPr#uG;0af z1U4`hNjsCH$>HtIXPH&^8Yy_n8Nv7F_vWXRRXyqDv@wi*VbU&XkCv-)Keqqam>mDx z{3dh*^V^BvGQY$Jz*6S~M{Sv3V5@=oJqyfljz-DfrW#n^R0OcTUu}W)o$~^AdW*>% z-Y6Rac5-_*T?|JS+#(KMTrcq?4g@)67NAXjE-h;wp0>ML9ijQkE!F(C=+!I2cFADE z>c&zmjJ>7frvcmqbDUkma>lccLfmB&0SGdGolbgtovR%28r@w|_()n*O_g)=YibJd zIj_KNWXCX@4?IyGNG^e+1Ah86zuutSS8ZRiKb8UTk+) z?X?ZX(G!op+Abx9AxOQ;gW1iw`=tCpD*$0Hl(qU*2t+TQP8xlAbsAv?-#_%42rNC| zlz5-oxSxCqk*YTVxzMdzaXVOk1yEkI6sMew6`Ea%S@bhJykzB2Vhe9gRoFv#JY_o% zrd}M_a*yUfgk?Pe(`?ra-%KnoL2EK^+b;y2FOmoJT779ogD#fo=FdHUT+_s@M^hy< zlvggV$b}+GkkD}=hYtr9wnHCsE<)==X*zGPk_J3(vaL1uBNEV8Z>7LTw%>%MnYD?z zT-f(qs1Nq7Xfp}f?#7Z{r*oJLaH+zY(YyN9r`^ePo)`t%yQ#qDZh`!4jd%0h-x3X_ zbPP+F$6jtDNCI&IJh&%SeFpJ2`Y}6Md>?BvDKCx|2ZXnNOX>C@UznFL-gf+VDy?Wo zTv&40PRULokP8GW3uV`m!Mi-bHW?c2M_)*EcP1|01&Pm-GLId)`@OM#sFfN4q3rK2 z%QBkCHn-UNt3?3|t(zG&r4x>xS?%S12dICjeUX++GbwSMisiqbKTEZoN_F2h(~679 z-4At4CRnwOs}udOA^~xB&qk4+LHQ$Nj$>bfD!)us!i!4vh%~{_KS{ApCw{Sxk;jfN z*n!zV!2&sjcEbf5_`?V8%iNb=`t}XBuEUlBBBDzm{YZ)!-w8d)U%*u*Fy2ijNlu(e z8-skT`kY$Kdn&k&Q?<9-+~2<s@FmsPSy6-Yff4l6M7cC`Rhs_)vUt*lq0^D z=(B+GU64$#G2fJ>uLB*!PUNTt9Hw+MV zeExQ*q4S+e{F3eE-g#d6_%L22_%8sIM{;;|D4=ZK-7afIQ3-um^8GT&Ce}wT*yA0= z13})KW!^pLeZO9G$Uz2adsY$q%^6bG|Kd5z{T5XtsH@a zN-t=-UAK;@hGABbNj zdZf52&H0qcQ?8iBIXnv}nTOjqWzYXmi}QH>u_otCN|#8KuPhv)~5}*~$`n*0q5)|C-lftE! zk9g?S|GfS!cq4h|${ShQe2W2va2~XSX+j2tlh|gyE<@c(+sG<--1Xh>?W@&J^qLWc zg2cXAF+7f(;idCDxSi7*HXe#@35lnCjk#xsVXQ_V z(9}1~nFn zYHl|fe0T^y9<&68ROcd~!?rBx^4H*L@(5Qz*m9~Dqw1Nfm)+{564&zG<-sfSoA1?z zM@Iu+4R~mo4>eO8nH${_^6-qRi%3sw6F-)eRtt#VnT#xOU)Wad#M~WGE#u;ut!lwu z1@D;WJN;2UzxR14HX__L>Qt7TWu{yA?ERp(vaM)R)lc<6(?dd z2A*}PNdK*z%UFAlgoDW^e=mic=X*s*9T92p5pD(vDq;q*u6(2?wfRV*XyZ zIIN-F=bR>5#TQLVdc5*F^nO}e8WJSmnmVx}MrxQ}1lnapw45s4KMWm6ChUY@@-GC}1RFNy*ZFb9T%+ z9b@N@Ac?G76ty#-jYP`(lzK}aTD-Z?xo=s*e(Don0@G1QqT&`K3W0>OIsDhzQ94v9 zlmqgK?xy<6AwGYXNq&#%xG=5Ps3OHLKQMO`<^2FV;D!)B9~^Zyfp!fMPoP;5V#PLR zT5!US*qh()Rm^k5KBwpZs;-hbk|9IB)3NQ&$bQCM;ld&C6cR|RQo!ega}dxYIRAna zE*c}rI`tuU@>G3aePxJ;PM!S6su%6WWnT_N44jIVb!i{XlY(}JB0d3uB~ZVU0ZsJ8 zVkQ|8=fuD2wKgHt*!AGnu}GX{eL}1aN{>U1rFkD7#Zn`$ zCC;>Rls`rN2sex9;_Y`HE%2B+NLJkQX}GnbxKeQT0jRJ_IWi?!+O&sy*k}V03Nkt? zwRoeppqdiLw10E=!IScg@dKBFy_D{EP9+OYb2H4?l|~0R%{Ylg0Byv#Wo15LnYyhQ zWGqVY4OXV{w`x3_j$Svvq{St1la~#YS6DB$$;03nSlUDI4?8qGYhE8N$g-p1;-wIx z?t9CHUJQN}WAq(WAL!W|a3D*0LjspFu?R-4V_A}&B*b2{QNMvD^O$EXA(C~quz9tO ztlN}~>240Z}!k$t_<<5Qu^TXEPGHgHi zAAL4mm8*M5$-6M!<>r;}FY-Tk?B>J~NF5U!@<=#h@n#QUEh~ug5Vd(292*=v^%#u? z7B3ux9X%ei-0OPvIL0u$ip33VIg9ovBi50q47tr*|f1OT3@JzTCd!QZfF)F{aV#fPD+Uc2~VbMF0l zhQ02oH&d$3ZTF{*NP@sk4SSDm3c~1Mn=YZ9i|r;*y5s!NrB%QkQP&jY(rJY}Wb=iX zdhlA^Q_|5@BU7J`F%#rrH3l$-0B5rE6Sl<{t=7|U6#cMY2QPp&B8qp@)}z+i_j+Dm zlX>i?T~_#|=Jw9UVyCMI!p-U=8xc~f11TkA5cWzn80A-{?o*m?PhIkwI@+~8*4WnU zhUm>x^5My*SchBF6Zy zen=Obc{lhdf&n18uxm2sm|d@*6w$WL^Y@a5R+9=Rv#6+);Q#z%0+W&2G!vuV{96)3rh`-gqniTu7DEQ#Wb;y!J zwPKpIf?r)99yyom_HA8H>1*?lK%h@${Uy_s=60{X)lL}uU%<+L0xbXk@Bix|mjB1Q zVi(@Ca|u%o5S-J_C&)gO_;GU);fCMPYybeO@~!;gS!dwCY5iA$L~s%iwq9aCT}0dg znZNbc5q`O0eM7-^FP?byTgDOb6Uxj`o>K&r!was)8(i_X8~C@9eTGrZzXpNkKiwd{ zaCV`ht zgsQTNpF19Epv&0}VznJRA>g!c?`CKHv5CP6;eSV+ufC5eoMSZVFlqw6w(C1QRN6+Z zj!}v*z2+)^NQadT7JQLFs(}Lr^&*ZAK~9ZWR*#^qQ3y(f85BEFL zsBCZCA~slF#A^sjTZZ70KbuF=E&yJ0{}^@cvD;SNfP47xG;KZNU7pWc;GR1N#%7yZ zv{%jAkoA_l)b1H7;9pzfVF`(F_^m40Z#e?91aX9W96Q*Qwj872Fvi`i=N#wIwP41T zS6lZY>{rMBoX&kWPo6GyeDHx_VWa@2^bpEb;#ms!3+4#?I^DeE-#%K~o~1u3(ir>H z^!wU;AlZnZeGc%ZYtjnibdcKuQakJcW0#59fOcmF<;P|_87Q~|m(v5LPD@J2f$mUb zJ&tBP0qKR?^%=P3qxZAl{%Pye_+zP9@zWq!Psw-W?7f(sZ?3?;jB@#!{r34&7cMEX zis$gTfIYURN3n#~DV*oqH&f{TEm(0$!6@{Z_ko8UkKC!MHBOOj-p1RcwjbRUCM!bT zgmFO63;r7t((&i)wkhU}O}yVTE=qrt$IhR`hudD5)z#H9T8LxoP{wZEKV*>E`rx!f zNyxLK2cBiI^#BUloFfQ|3Lqy25*ZaJudSTeS%M4-U5vZngg9F+qy~cY zn6MMgOa9C~Flc-m4-qd-F#{cUNGH(7w>0NtLaa z6K!yj5(NjvvTsrLCoMr^g72ZM+2-w+ih5fSLnF1Gv zDwbfYvkg+U4q&LaEBDdoU$u#Q3ZcH%PhW-`x1B<~xQ;%iQ(vNV_gAOnp3=fSZyw4M z*A|#pu}xXn%86FwcBF1IUMQfK+#Q=DTbi}RWICKp*-%i9HC_EM!|i)^cbKIu$#%7z zd56=1F<^&d-F^0=k3uPLWK~+n;mJD($6Y=zYJ9UjV)=O5WIyZcAkSL`JFQT`ek3Fh zay6ip6aQFFr^jd?r$=soANne7{Yr+KhFV+JlLpKya@1{6({H8zHXhyTzu!dr^2rYq zdeT3)`rk9x)>3-^_0_LmHEKmud(AI|pdcRn{ACWmEI68kan1m?d}k4@vh8|RR#LnX z-*^6;yiv(!9u8jy727qSr0NmvNIEqkhvurDWE4Uj-Mq?)k z2d}051$%Yl0?+RR?9~aH8=m!Q6Ty`A^I`8CC!|aLr-_AEbcsLbGA`d3{Vw|XbFFqo zm)aAH6f>)%1~8aXT2BGK4G!rqaCYNEXwu}JY0MK4{7NuF2yIrWmlWsim9M6gn^6De z(I+S4+7viee&a$#@-_YU$ufR(w}&Y?}NVY-?;9#s5Ui+(Nx{l>U<(>0hT7DFS9DQYbA3d73!k7 zwIM6J+hiYrmj0i9f_or*i@&v7kw@mQjR)7i9JyzHnisSYrn|VfDD6G3{FuVGylY`V zuOKrJ_{KqAt^SWPA5~Nx8~!fMW2p$pDbqt09&g{v3k+a0K@Nmupd2t5#}W5mR3J~p zUw15gUWS(I-|qh-ZuNK?=2wgI{jNZNKF^kllCJ@sI%@=$^aL;zEZfL&d*ahQbbt{+Xceq9IJ!`JC-g3wb6+foT># z=_R#b+Hk?>);_xS-LBcLI^Wz^p^7P>a{F#;fb~1_5Mp zkW3Ly&nA|d!c+t-MEM1Qph5cGw%%(2$y3+6m7ITs6OMLGn*|!Ynj*fvzypdDO=qzv z3B)b@pf07b&HhfJK8`m46SziJKHi0u-#gU)U}))1L@;ek@GM8pPxkbrZJ$bQZI(lJ zNs*LCL3*4)S%>;J8>LiBr9V1sIRI|KRnJ3e0Py8Tv$6R!5;B?NWFzGHC1F(~J#{fc z2K&e=rbaN>WGfD=;+g{#3X8u=Fu)n9b_2dmM6Kqt8qP_g#zUNrxc|`Yl#ZN}@Ud9= z75E)6J^+1+CXhzUV;B#xG+quLNQ@#Acx(V~eCN6s^<{ko9+!hi@1rC;Q z#B8Z9llVlb{8wJO!u zV|dV&vIHOB^&dpZY4>IWOCEh-$|B0Mu@`tLA#%Ngk- zh-W-24%c(}=pQO+lWjqm&t$5@rJvQ`m0dnn^l39Qt7|LMF$*30_kL+9-!8=l)$Q<5 zENMuCham-NVCj`4>*;DgQjQqdjwhKdK~KT1;LKw!#k4F**p?wYH_mQFUNyEyF|Yv#S(m2}+j z+ZAo^W#$fKD}p5)Jjq^PB!Hbb2q{jYq{C6{bPAJKQ$ohO;^R{X$3oWbaSvP04&+E1 zOmxEpm@hzD*!pOz=8+wo^n|b*(^1Uw>MI>UmCU86RMPHhl{u$c{5X?&{)xf;Bg4gA zijkL!R3^6gVTM;Nfz@_~N8`k*lTG)3Y8R6ki`49I*)u z4puex@!2M+lxwDNRn%PlZz2ZNCLG8JDBv~a8u66_emAI+@v?qE2e)rNIlqbaCeoi@LynzG7&#Q8(Rz+c_V_kqgG62qnm{T?(98wl*d}?-iJ@7Hd|guO zI3HcLQ#Z2yqL25@xJ!17jT9@f=@oCq(Ymw;+hpzS!cM_9blZg0$Cdl+?d_fBPnQZ9 zOLy=84EW%v0CoO{hTweN84f&D=^*+hLl9D_Vd042(lZZA336U|0o3k`|6MT6y#XAT z@F9W=lgh)0hpgzSyOs2J?MNOHp!lIu1n?`bfy_y> z!wpoxcV%`8`Z6uMZE@g3?G#EUGH>5)%c|hn#M#4nJVj>YOvRvM1*dMKpb7S8#7$%j zoOWJwSmX-iM^`h=w&_!U<62HgkQhW|3^hAm|9VQ;tVJ%qP_@ZU6ecSUm;gDuljvYT zo&!B&vK`L%$4V#ZT8u{ZJMl|TMm@4dc}LQf<3(?NwH#5pn|gSf>qBJ;hK^|m5*`@U zh>H{Z@CYtZuSQ9Fve^QwoEUB$o=!;VuQ~ntw{PHXd9;A;3xIFd(gxjM2bj9pCUYZh z4DnYJX!0adWUQ>GfW z$rI~oGuRXCM?w#b%aX?{39ZT9VF({PadG|mtCViX@`s|# z1R846<_WF6^N=xTp%@B2BUOxvz1nC<*OIDHO1PU5t_1K0U44~mt)_lnh?BltZxI{@G311aHH(uS{qIygi? znL;IntQ-CH9`|Z>22$8L_sP)WWszr{*rRR_Ix>5GP6AHjw^tz)xcmFTGdi-?7bhok zE`zD7xIfWVU{b4{N*ZNZY-I1Md(V;S=5Hz0-rG{9tvcgBw2jES+7JatY9?)B5NmYon`AJW_Kh#tT9BWQTF;7YJNRQDReDZYSlME<_=|G6SRSemXlZ@_;S|+|a`-t?d3-k?GsOSl7lO>k)+UYp`iQZFU?(UyUIAa=GIw?)yx%Y3eD^Bg? zmLEeiS`o9wFrF8j2?XuZL_Csq2_Jh2!cp*XJ~|H*-9mKD9>?pQkB-Ook2r8wANhD` z=3(MKaeo71*e@g=49EgVg~O|y-Qu*(4$4fsp@SVQsd>zJa5l^Jd4-{EYjNq7?rFV> zkrD45#)I9;5@l^8iZF}`aTG^02OszFOj{Ck0G?R-aKZZYLK~RKyewwz)-0at6LT?p zJG%|pmjWJQVeuDQe?1aO7q#< z2)?&2@|iCMa}XpFVfbLAtQiWJAzXW3DZOm?tZKq*vXf6Ld8I-ttXPt`;lu_lE1x(kFq1N27-HLV8RKo5THsYeG?_V%}j5KOOqCo+)-_sg0{mTN< zS~Gvn)w<$5v#0AnrZ<~QC0%M22#}?pl6Yvl)&}m>61Y?P9DbHIbiZI8SEbWlL|19A z`Kex0YZzH*l>K_nyX)IQ#$u*Og|KnvH`BZKLVZJ|835E7ewyHdjCX>4tcFm9P#g(# zbmT3} zxvAID%xh$>?o4g#XVdY?$7G7X1cxJgyIFhT907@+z(IZ+qy!QT3g#|kLSm40$+_E) z(RFaqCW)?52f+oB0kvFBb2E&%qie~^_BU|3Q+Vxv}*nT}Z3K@$46qMV)0*d~PrEda+MkU=uOd8C}i z24iq>gNPyIP}b}5Wu^)vGl$?VeV_5RJogjGFl>JQujYRqP?w_JM>MgWC*4>=C6fhd zuin);+0Uk+w06A_!VfKKdg1>!_TDq9skVO?3<9Dc1VKbZhzg2IQ)xoG;#7LJKIwC5aNDToIDS?C%HYC~3%{z1cYt8$-v(A~b&U~4f z56{CgE7{q(_kI8RbzL7fV28yA&K#S)r$=2F0AE+gB_xeN+^r_`p%25mi41k9+&wj~3hM(Z0t zlCt|M3RHV4S(=xP&%__QbNlcHeJV@nEzUO=**MO*U$3V|avw7bLbL>fp-k&W|14Xt z<c`LRy9P z)x+-Vv}#p;?QpeFSUlN~zO$G~3ZE-JJGoWXKv$>?WML*+%0i9*7+P;mlRu#-Yz3%UdX*NCzVsx<}Z}xt%9X?^%)cWcEo;uB}PFuDgbko z0H*-6`h=JH@n+b>rf#4=6M z5jdtXrQc#$=A)JfZ3FH`8f`uNwLw!JO0Mm(dh%Q3OKj&?F;D*Y2ac16Xs~u6B9a77 zjo@zhycd%;`XCE9oVs7k^W~pDA6B^x=hUFy%$PJeoD5BI6nIKdn?YAXZnU2iFlcoV z)92m@=9cfc%Q_PkN|XirO06K1BAJtI3E1P(9o3Gg=`Fe z0~dwkWVM10hBnZ>@T(P8kNi^wn`mGiFlX$r((G20n+M{1kvLvQGsm|ZV zoL6k9?mHzF%n>@yJmX|}&b}e&HyauDMcGal)Qu_Si%jD>{fS0UZ5qgU3b-Kh54tx^ zl2F&2zUGaK9NwL3^XTV<`ko(Ycha0LQIDKR*$oFq$B(=S`ponGFU}-%69zWOK+Z|i zO?XcP|Dw9Q$02P)NkBM}3+m+L&y>YOxK5w{9#sh_0T=w2ZR3YV*y;nyX6|Bui%}?R z(62nDf1qi#+l9uO+y1sB`OME*rQcQN)g9ACIk;8vcZny!ZMjALo;Ix9OuAz3S zHdWusXF|l+i|wyFw8cd5!?DHKeNV+DTU}N9925gQNhm|%XWEzFnWBHtjvYlh|_bKQ}rgI6{(4O1uuC)_| z-%!#3VxS(`Smw_nvEO%7oMIldxrbD5jkrG~ntATy>koq`E=5iRsWQe@9)+h%9K8}Z z85DpO!H&S{!o{?jxxT+BoBjurtFz?WHZS-MstU)tNQI=W5(UCbE*!B!&ALRsWNu1WXbnm zKN&pUDee!7sMZt~cqlVx|DsM!07S3F6vTZP2Zw;_>mERS;ss#!%HCMS0Cy3pRj0V! zz#zhhIAXr&(T^!wWJgI!eBUH52xsc(<%8LAM=jo`cUMWBgQaHNhwhfMGyg0)Fh;VvUq`T9MrDefWc|b{R6JAMB_>T6aZI}ACZ`YucYtj z*2e;TZSz{08|ld%oRWw7^a1ONyjRJ0igViRm|mDyU|g*Y4mJ>CKk3x>%5B30S4&Q% z?K?q34j$zb(3bXm{c6Czl(=7%wCCQd|H&89?9Xc0jcjSo`m1N1eV} zX1OcQ_^}uddp5L{_rrMC(#!R1 zS6!s{Qh3Sd&~Ki`!&6f=oJiygXy1}b@I;UlouPzQAE+wFlQ%mhW0+CX-x%e_Ri7Hx zn;7(83(>%=G6ph<;PBV>k@BUvhuZ*;5(g-&WhKx_F%}99@rTtE&L7_phF~8Y-Z0_* zD1T8N6ztYVgAbh6B=z~!Kts;~UY_c_<-|KtWRHmqA2l9*g z2<3<6%FS_HFo20%_>wzw>_X)NIE6N6&L4bJ@@L>m`9_ZiBa2_m3hGQ8O5N+rfzj3Y z*QBZqsl+FWsO?fhbckbSoYmfbrJUKHw_5q=$)e$noWb>S$3I8&Acblzf_1NkIw zGFIQngPr%NNw=!EIJ@;P%0NwRud}_vfY%GLItm#J>)_eIT82pjgL9Ru*WsQ=Y#oKR z*AecJ!_F6oq;;Fb>d2imaw+LJh;5X8I2vF$N(OPk$S5RS3g{K0Fqk|ktIC(cA~Ty7 zORGyhE5(^9Yq2vuutlWWD1fYF`>-bJ8OL&d!ejN+Re_oMT@q8nr$vae3)77#NJxu^ z1(H7CdIQkUW;TfzT8$>0>gMw2-EbM!WV$`gb-CO)nrEzuZ*krIDEh$nVvj@dH*apb z4HAUMG<0!X2u-}0CJYCCJ+EU6=GQzjT`Usq{PVs^XkKpe7`kzdD8&P_U?fs$^-IjfaCsdj9Mc7^N5>pPe2?A zAhQOzF%hY9(qEK3xnp%7KVYBOg#}o}}8}4`PNxI(USZ>2G-dV@$J?$7;qVnPPwmqgLgBv$_@~z(B zfUv5z8dE@u93gb4xCd-a_{wK#Sbyh-o<;0ZT#|! zA9vUCS1DKgBqAmR=K}|GpZCUlP7qF_y9Y1I$<}X|om!2pdTV<n7kmMl_ht%RhhPEP_ua#$9*KpG3@MJD4`E%3k5|K0b1 zK8YcDR0I(&rW-R&xLcOlk30LdBlU0*hCAnA;VxA7vRe#c&`yH_-qYPF7Tr_O~!>?t{UxJE0KsT z7qL&Tk!;$>&p8Bcs%K8v@8G^I&`>_N$js3fL4En{=*ug)B$%11k)qb#^+s&FoJm9khm8&jqEg7bItNgTxIGKXekQa zCJy#PGgTl0XzBq}TiM4k(S{n=_XazXIA3g5<>BRVpiu(7{IZ(}@Ebnh02UJ0lWMTcQ`o?g(z7Lx zrq7#QF`V?uwKW5&F~#la3W(fWn7s)xcmwYW=(cA&kQjq*c9-*UJ*24 zN0#OJG;<~{igvNMEJ%6s?%=mn|8Ko;;$91x)O}5S6AzA(|788sh*{28an!kwda!qZ zQdJEkQDkoAZN@jvwq{hG8{bOLn=mE3Q-H7UH=d4f&VxLlLUMDPD6yNeu2P95UAxSj zvfa)~elGU@mhM6KL?eNWk(UJuZYH)lf4<&3zJ-rT{--_7_zySnhX>RFYX5^h%?3?p zU~6yVR+S8Qf_$p<%3su2&k_YF;IhBALpRYssm-*lgyV|xW+97Zdkabu@_88qT19d3 zb+6}+PF)JKVJi2wBybnFn!vlZQ=HpG{4V)M)lxR-o4b9c?dnp$`;jE;wb1N69vuLU zr&uh?0u#1{7lK_=6&8U;(y$x6)z@(qI@C4QMW^~3${F9Qeq;|V0uYyP5+av-trff znIgq?wp>F%u4h4CrLo{EInuwtM0P7+*EL*APF{5v4fs2nrFYH`%jVi-_wRq5dPvbT zW0TY!eJO>V!L?E=yMS$Eft3j-9sqbK$T?4)P76U~U=8bHs=l6B)vb?sOUuj6dsiGn z-yA$)H!iNGZR_ll49({nBRS9^J zNOQc{8{P0C*-0j1j*11zUQshwMk?2u_hxQnuIans(gngx^(I{#n}Suh%Hm;J?9$BV zOW|>SHM>OV%YgTP{F?X%g?K!N^|>^5cH^#8&19LY85tkP zz4gV9PoXmb6$KNA=_{;*3e31t6=O<)Tv2Docd%^}7=QUu*L_lBQ6`;-eFe{DRaA7XYH*?DdL$4Peh)y@P>bE7k9h-k)k{Y!;#E(m4qpur-xF!H`?NhOUNPorjgo*pb(F*a$7a3x zwJ9pKzinoLwf}x*Lh9*Ct+6eBH{$T7_&bxvr-u;SRacb(WXrL_hT#OyD zxBQYC_R`}m?mXVxT`RAr;@NoQ)%}WhkL-FfzhO~}w@Q76wBzzE>oEP*wRy-Mf(BD3 zRw}90%KPQk;i=Kh(ZpGcD~gUo+cpCh`MMY>o-Q(sVLF=Bw8dDf{?25YSoTzl!>^Q0 z1!Ec;%1c5$;V+g}Rv&i_4!WCKU6g#BhO%5p;anlMBAUGDYC|}MPHIryQ-qWDz5L4t zXX6*OTkcDN$!=XHt3@^=S1e~N>kMic3xmLwE0qDtlctn@m*z%m6_At%X_-pU8i_Is zUrKvbJ^AimevtRgPIbo%anH9;e6H|f2_kS0ozjmTp@wq(M|j7zaGQMV&jnj_sXcLB zxcQv_?Jx(Ce{E4|UN%%KPUJsLKdBm)iD~_lS~VZnj&2GtoB}0se%K2f>r}w6 zaT>r%v7G(3U_H7rzx(<>a_4R-p#$K|NCv4$pyQM8FF0XzuZ7$;xeLF7ZTI{?!_LBc z0oC$j@7%z$Pl4My$CYV!b+w>fW^D}>iqZ<-x7BLSdyCDxg+o0VCb8mB#X7Mb_MUsV zf(C8CSX3xo|Cr(9pNtimj1r>d$^Bs0~NFBZs+ml zUEVjY2u&|+USkEr%Hvm)z?HSDb*>YP!G*6)%S)9zs4|zEe0sNL=!@W=y{^QpY{$nf zq#`!Tt2*GlyVO2n*v{~@h#Nm z0lIAge^Hz6zyqx2+H{e?)T7)RAAkPIFW`;i(?UWvr>{Ij=JX{;hSce8!T00PPRaKs z`_+Q)h`qe!EX;`Q9p19Jd3)^FoL78*l;Jh&egPy;{Uqj9a$gBXKCCRt{qc&!uV*)fU%g145JJ#? zfDt)sO&{lW<{a`g62(1E9x#Is`>;K`xb7TF!gctizoT4ZbHII(^GX+zPqp=Bb>DeX z8Sw`(PkU!#^gNv91*hOTu-t9SS&f)lv;OsymdjoERQ(IXIq^57Fo6#Mv-7e=0pSt- z8o_(S6@T*cwO^&ZDoXiJ?PV;i?Cf_&%O4zE%5wpmod30r^OxzL9iVDP)Rh{W(%tj2 zA&t=bSi-nwY|rr{+^Hc)*bFhcp@CHG22?$QPC&?AX|!!+dogyE1M-xUS|sZ=!j^4w?-eKuX8OhfMy3=^KKc@`3D9g&#$`!`6TBpx z7&Q5@pAxQ%jA8$sNa>h7-4;ABK~SN5;zn$T*yjl*e^Ku$QkR99;I{XZxfx#U;5C54 zD3+%+*e=AJu%&~D>MMAE0@6leU#>g~=EBapFjtoWeA|-yHjWJtcLh)BZ9H8YFa{+9 zJgg8?Xzl-OP?{1*=e;PR^nt;$3MQ^*^+xmqY+tqHr!vab>weT_@w~=gSwpjXo|a9< z>j|%JFCYlo$v+)&-P$WPAX*i&dFP^e%rQ(R{-V%#h-rlmFQEak*(XquMUwaSFBx=p zAtdohz^}I?@p?VA^Yq1u{E1>nVu|+ysy&h7GqaJ^Anyf!mF*W03fy1f9%>gVfNJ&B z?7>qA3gn8U?j2CXiWdnPBS5&OY(1qc64?ffVLELd!tsOkedUB*^(ZCJdIn%OK_kng zSdBj<6u`Lagp$6n_Eu&4MotLvYacWbxVbvPIdKxyM^`NuGH_)yCP8$mfrKIQ4IBn# z+Il+A;@W^h3jP`YChw8mkGy8^%%%YBb--4j-gm_e1`|kvJ6S>vqSifbc|-}=V@^e9 z?|9UuN~rL}guaJR|CiZq%IFGQw>gBxGVM+WbFQ#osQyJ^Y%N2%)n` zD;JdVf+ZqW!b<|?uwMh&xC@B7_&-%-N!Qs7;3S=s1mtfw+&PQ?yzIR>%`g3g?$#jv zMFHYd%Wt5OW%Z1nglyE{oc4dk00im1B_>B!8lPlhSu;Q$Q0MG$pL3vC*~x z@h0?Sb1e2Q4Q${|gf`fes7%meE+=kG;+QqCEz(donhotUFzWj3-=)=}Tpy+xLkch@ zpRUHhlzPJ>V5{`Yce^|k%M#0Q=zOR1Ds`*9N|_9bm5M?xfQX0$YfZE3c+c$1KbOFe zJ4@ZTv_%>bsk&kGRxaPAR;@*W^C@A#K!XW2V8RR);j^Ph??Y0)&~@eyve0U)oOPXz z^0U9F;aDRJ%wzIgP#Gl>u>b91QR-td;I6uASr##2ug|sVhxWRmg^t0`#w~Eb1qD4+ zUhU=O19l^*Plx>)jLz#D&~0cT#66z{-*gl9dv^5af>!agjEK#QT<@NU$H=Z)%#S&) zR5P*xP!&lc8_}$~wtAx4=OUI+7~xc68=Wj^Wqhl&clYC03DwSUJvOB>r0Fq~=C z9rg;%&wByl1lo3D3rXg_`eO{b@;F2%OZh$+ce^|1YJb32;ZXTvq7p{AsU{b+7zHAc zMnH3qV_tPf0|R#rFzw{&jIJlS$|sDv9(JE0NjZJ(+wS(}@rNe;#B&nL8x`!5!VZ|) z--WhntuBG6*M-=*OxZ*kc`Lsg_Sn;<7RA!5mn0Rst=O*CL_M}|&Z%)1;-Ue~U-khm zi0p%bdjfV&6q?DjfhNh9$v>z5)5`#FWlXW70JW(VQw$hF-&=}Zz2AjrHU0BNkXO5b zIEkIlhK9)*`a!b zz8&MPjC#U5%N9lLhWOll2q?qd1u7}c?0jApc}}(R=%_1}jt-mMcx^^s*(LXZy_K46;v(fC7Bk3>Fu z0xH#+)Vg8i!UCpRrZ=H~xNL{^cfSea{AZ&lN|LCS zAm{^K;ZX_-uCJGup{j{~OnX1oe~PW$A04RkG<4it;+Ef@!$LAs%E7PDLsaURlxn0DV2TUaUVkg~yn*B$qr0%lH{Jum}ZE?p!7 zL?XL!*@z|F!hWZcJmDG$4S6?7s#7K2dh|QhJ5a+Xt}R;U6Z$TB|ZRJ#aP@1o)AS<{T{^iHGAJ07F(2WE#?1N~7}f zXh_cL?f_xL94zOYdmq+}N1}{mv*3D@;Y`1q5}$V~Lx`Xnj>r{-WN>VH^0G9x6T0a^;Ay zGj8>~0i>(NlZI;JDD%gv4WXa4nb4%>A|D6Cu^_kwvmJTQh`YH)WzlERfdq|gI51-; zNoS@6NcZtm9kAOGKy~IY-SF`H@N0j~6wA^sgT{s*o?WMBte$ZaP00*?M1-989Rv-q z!W?6>$A&$>m^a4rYnxm5ZPr0_C;p=HdMQ!XCrwp`0U-+A2YU6cEz_@zyR>8jrC{4gbqynaUUc?mxIq}WP&?@qn( z+y&3-WUz&_reo+p69+RxyO-#9Ua7%f?B|Pw1g*tOo13#evGP1nA$R!q@udI%-~S(i zpZ}&HXt&SCyb?pP#?O8cBN0|9pVuQd(SM)=+$&@d^1=GSqjwFDfW1`gysCfL802>X zU7BS*7tWkjT=sdfDk;}}{h?hiW#2x2wjHu5tU&BO?%spK zZn)I#1K4)_pt`CJfVtdm zsI1jf-jeORR}UxU>?Jkm`mW@qKs0u^B=I-))-He(LI7PN&l=pSzM;W)W<4TYuM}cE zbt)eehR&Zn&(WSsv`M>}(owBf(CmIs=v6`$e)SD`>?9&O*=utGtXdn=wqV?;U^=Q) zx<^(Z!qxF{+-tGpOETn{>HzF>FpUENZagLxX~`=^UTT5xgZy*upD(^b4+2PP3j0_W z0ne%*&1%ZC{-GSf-F(NDJ|sB)_(<63!nefV_DZu~;v0AP?U*T#zYk^{jJ@G5@G#6w zK#&&XL%8Uzzz}6^zd5EKvi(ljuwf=b2_?1y(-Z+7>O;#J|14iB+YE+S1wVf5VW9(; z^688d;|l9c7Y7=BjxoAFSZ@AU7UkXD*A?K}+qh1N7xi1M?#tZz zVYouQ4^o46t8D%iku_+8rqbA38W@H7q>BqPf6Ku(v~6-Jmu)(Hg|J!F=z82mmFxUS zpWO8P@9Gh7MR)g)nscyfR?Sh>6o6c?`T6(@Mq#qlX@X?rV3<`3>Kikjl&2V2Um3Z= zuLMZj&5%$JT#q+&0L%2XjDK=c)p0cahl7T{(9+-OOc5OV22 zyco(z%CI;~Gg*7Ai6ozS1k*6MvfPMV!*n4}2%NPPod(U*Cv@4I$5NJpM7l|TLY_>0|v+&SvfIN1CbCQFuS%#&u(iQlBZ z7m`k-(vE!b`gm3=AcW74;m^B4!Yc|sz|7P0JN47- zF46HfymA@z?Nb+T0N^_tV06taSy|u{Od!~x!`&LkhEhAMG9htO{+mFN;;7230w{6q za3IeV1Yn=xV0|yP0*0UBu8tyGRSw=HJ6Uh65wzkFm-US0J$d1`*%GTkrJwM{en ztj3{PQ^h2j)?yZSb3I$leP9j|Hf0vlE7^HouW>G|+0!HFC(g+MgV)2b_0>nd9V3lC zH96Xdf-aJn?wA=+bK0Z>%;{U$_4TkdFQp;rH<9`w_7T3fMIJ{$7<$90UNM-eh&&-@BI^K z0ng(IAV0Gc3`d?cU-y52DWq~!Xu#h7ti1&~cAzw}{QO^)n{duGsHKZ=2Asa!tKb{T z@NLuW*nhxsAqN`s7_P7R9Pc?$Il=HRRvG@#vx$@N^&DtSO$u#D(XmbxDRD+${+if~ z(GQKV{3ONJ@-qYIa`_aFI6<~J^Z~%+yGkg^N0x~5tqL!>pyp`%o%p3h}_3hWc)7gbQ=Dx6gk`t za%%~*`$=j?hc+1Sk*Cj4(y;Jh16K;Yp!#s3Bg3xt-iB5Gwo)Ss?c$%&7fd@>rl08S8BsqozPhXbhSo;tg zU9`LDv;;#&DL+02%q;)0xTaX!1oxTl*b!v(Q0Z}{WhR)?WmuPF-pcG>;7nJ91R3%v z{k|=9%&grq2_8d)k8||78Vf>?tMv$S9rEf`a&yr|f9!t@{S@w6uVNXGQVco>ggN5a zL*S(D|G0IOW64WLlujz1`>tragY`zrsrg0%?O3?az1JghrKkN|xaGWT>_`}{ID95T zwIN*%h?6MCXwy{s-v!^*Y84NLhix?WMVRrle)=ENw`9j{YW0w4kyT0f!mqp^OkQr# zoI)Xdvw8LfWr;Ewi88NmCmK(gCj|qcXXF>wB-g z?_Upnmbu1l5xG7v>sBEBjIUD{g*f9Gaqw;&cdJ<=jcMxMZ`cbDx;&)Tkv3oW1XvR*+d_$ZtC%ygY4^i^7)7!r%wFN& z+u@8t!~!g*%u&!@9P>dN_g!2QhOPdGwrX6w@*0;3f|-AR@&7_k`X*HSnlc|YB#ksx z*@18=lSpdkvm&Z9FGR8Ujr?_NJ2k7kF2s*B+!>dDZ`F@}a?i4iFP6x=xXVS{~4g7_~P5#^mI9tJ+n z*+7uukqq|@`%-Ig!bA+L)My=(Ho0t_9Q@j5vg`V>dBxb6UvI(&Ss6fq;?j3-tQ2tY zXg==x&hN{ym9BJ*VBY~5(WZ(IHj^EKGOcdUyX}I1JhEi5IH0FqO9bNu{iDC>gp;ha z#_eh;_fBuO3?1Jtn!4*RD%sw8#?KNduOJZx3E_G8lxoEuhw5&3HS*lYGy+xna8be6 z;SWHcWDry%D zxEp~mA!=I_?({m$gTx-dw=Pb6N)PVpB>h-nhw zO#>Xg;U>)Cs9fJ*i?Y9{D|g=YwfK0bbMl)+eHdvzj!j8XS zYWXYnm@>>D&w$YURY_tOvcaDzXMf{EuXRR%zwEW@n~?bNSLi$7R}^vYrLh6nB*=k# zpY`-Z+}77`VU0^RGU6kR-kPccz{Bw+Up1_>WJ%$EmU4Hze&hinpW4kt1Jk?PzVtsJ zZ5|+fUd>CSn6a&@@~P2OR@X84P>vEoEDb1kyf@szJsMWzXb9qS#Vg zaIdw(7QkeUe8LreE^kW#Q_h*suiMT2nwdt1Y0w2c=gg~hpNRVjnjJ(^-QOY;j(gw0`{+cCBWFQXD-vgb|rmNV5KFQL(` z3h#QK=DFDifJbcGr)GXhcdie8W7%BtM z$qWALKTDv#yL}gjNU-OXVd<~2bXV>PmQWm)4vct+7e|?M!3g@q%ivi4=qom%&EIb0 z0Pu$6TBfxIfK*<=gDL8h2al>1!J#4Ddtc15)eL_xvMn2=17k*Mk-r<;Lm~F6d?}lG2VsZwK`6RZMP-W4#qv^Th z)k}vpOJ?TcqwakVx_VKl32YT7A?}tln0^uV!R~6I>6Cad{Aa}svq(EsP8ZizdqPURQ61-J5MCx+SkN+oCl8c;C>Tyh=_J z$d>cjKYq<|(+55aK>oBlz|a6JMpCub6b>x=NHj&pTlBEV*@)s+pxJU@aGm*0%IDZl zi|d;gK6vKa)&%0(e7Lf*%&e1ZqXB{;u)Fu@X}T^pBykR>asIyQSaDftsZViyzQU0g zCe0@vvQl}Vp&Oh8-J-+*Y*^gSxa066rj1!qkNP{7zI6F`-j6KNXwSaJP2b9#t<3YW ziTA{O+w5>*0K`IJn_&fG5Di#EE;%UeLX3=bonlIFW1S(vh zDFn&{p~ZCEs!Sz#Q}8wj&iVK2Q=UL@2#x&{GbrC9LLFF8IFd?* z!1&uM^wikD|FZ0VTpYOsey}7oV26N`PZ)*yp$jYv0|0XV$JUNq1L{?n5p<|~<#A@l zm~{B|9}8D|636OOf3ep~MiUx z%mgxqJ0@F!l1A^=|0KA{yGEyrRVz|+EQAjd2<5czv<_AXA^$8S?*kn6(& zrL%cUm7Vep-*KhIFnBQQzd^MainBYsSDm3T_WjCeO8DYSbSP%Zl|roPNA4C^S0~T_*Co zb=T>334Z-ZJu1s=471r6klfjE?hoVgDy>Oz)f&E~%i65`NOZC7AYI||%<$C%*ZImK zo1$9kep7704q;+pJXS$jw`r6Xx8+uQ1w54ltyDGPmRfzJ!f`*2cO@P5qomfi8K zzqf^dWq$fVfi>{RMzT^2q6&wzpRu%}pgX<>ciQ!L;^Oo!CL5HdD2H#-&-Ix%Hcvo$ z_R-&r@GrNrLAtVt>%+3|F|qaTV$Fpn%nLF2w>E{w5sJuFml%~a)D^{OkqW*AjYCHj zQ|JD?`PZz!Fqk^W0yHfG>cJ_5G=KQ6L15iIombUQYMqn^`JG~)orlwD;jLU*F$?nbXhvT$)gY1*-wCO4_G zmBhAaeLFLkX}&({aUZ4I)+L%Uor%bpyGgZ8>njV3`~{@5PlM|L0F0 z#nxcbDaAsJU;ymvh93_r!?|N|;_%pwdc`YKK6^SlHV)ba?E)n3`ZE#cUj0>3$VOAJ zw9zmLEG-VEyMvn)nxt-rf)@usX^Os=b)!LPMt6rmP>p1uYQ5Tn6IovJ7rHl1b53$( z!2N)JkuV}VWwE`qiSpQbxgjd;fkew2r*_EB*%Pxep;(bVdUg7%rfAo@4L}t~kSGZ2 zu7PtJpK3kONU9vTx~Wj!D%L6jFw1H31#@--DanmIU_Bj4 zqJR(cQKniF9TFMv6W^uxt}H&WbMPE2`#YgkuVnq%9VirkXZD+b1Nd?|QpDof?>d)@ zORKw37i`IZ+n$r5q7fd5X7ytzsnVGm; z+ut2kb|?5K{^)fN_T$4+dCj46aoUuJSmN8R~+BTs{cRb*y% z4`0;{I2W2KbFfJy^zyNL!k_3p0XHZeb2Gr72&p5@U<7+2gfX`ler?B`yXJJN6jUU3 zyB@|H&sIO;cU3pgFS|CDD0GIK1MEj2co?bB7DHKlscz}a+~`@%V?^$G-<$U0f$aN3 zF6|GF>)kE>yu*L~rhee3dHjOUs3liIlAQ&c<_z`YNri1q`>N||@01lYGsl;nDURI! zyO;S#(w6612#w>7Uc+)dUdbz~&|v8sj9pht9} zpg?rO3+hN5SK0;YR+iP}RlWt$Td>Ozz^ zNWE~sI5Tr1hj4`+2k*r(Uia_Zr6QMu)NHIbXz6$qr~*ZM2(mx*&{N~KDP}$rwehq`Iv1pM>$e! z^%xP(IoO@4b?uj}dp~S0Zj+cYy3?bTVjDP!Qiw3syM0W`E2%6>&)?u*aUuq!F-&hDvk4r& z6*!EgJ(V}!_3<(qz>%C2id20reLv==$~AhO)SS45UPn1@kx90ogi|jK29hSc7iK-6Jplsb}_8hgR@tmBirGgR{yTln%A} zCMxLPx|X{;-gMixS7-p$00cq#8c;1Dwg8P5WXGU&adY_Z?xx&POv=9UJFgaIrQ+NV zT|9waerJvJWW?Mu0=3*rp%)LL7Ny{2;696?+AYtr^$41HwYKjCj4(WH8;eH& zd4TJG@GvBP^6RN(iIwDn)@>5sc3#X3Mi(R+%b4=Q{&!{P2`nN80+b*vmug}7HSnwi zY?nhdvn^u#KCagtSFsCmzS;REP$*`~LHNxHlUAK?rVB*e7jz##yPCB;v!8S94_4A} z`?T3>IIDhMa!aT{{EdeCyU7bpzKJqh;=lSo225+v{qi3%j-v*hq63O#0h84X(v(cS9y_~!(vysg_! zy;^Mao(eLWuN&W?TN zwWEn5pF2XFE?iI(c;pq+7SlXM0d?eB56E6!$VuUH1@BF@)Ooj)a>=@bK2(gF7w4Hy z%RpR8`k@z*h!q0TlUgC{U3A}c1GaCqZ3e`X(iXQbw8m|kj2TsSw5_OY#T?nEP{>gD zEEG8p#G8~H8G?}aj;$b5u0DKT|A#{C5w7%mjnfSyfB|1IDO#+Ej{{;!K`<^FT%ieV z@#P01J{Ym%df-`eeKI9*KkcX8U5267!RasZ2fNjydiPa{uJ2 zf8KCrj!Vi$cUM;dSIy-sr)w{5Hnw{CEC3~th@ZvvL5OHB?-RwD;r2rczLM=Lbf&yE z=w=71^H<4wyhj1%)w?eO)Dz^%I z!eQGjJH8fl(ABnGY9>RQ*WcMG2XSR8+{AGd?<6^z(y%|tnq{LP#Mvxt zR2<;39J0C4ZA!oIU9EBvm9{1k_CG3Tzh=IL!2JkAE~J5QK+!jbdrT7{ZiVVDjSShC zb&eEuW9fT3RVt}rP21ken>TiQ#sFdAi~P~i(c72fV67BnBWA7FQG2A?kZ`pZ(I8+! z!l-kOr4-J%dw-HrdVk1-A-SjJ!Htp>i2}M`D+*}ZvCFGL$`A~?awADN<`U&+@#0IN zmf%sxfZr+B%qIn(PE|Z<-bSgZVb0A=|I%B^2LHof1<+qUsMGofxoH((E!n_;D2;`^^x^(m3pc$J~%vm%IM1O zSh0b7oa$M4{u*?2JDDr_i2b;ooZibBQE!UU%Vt%}a3$Y2@BU?f$6DM^0F(I;U|YbR z6628}XMf{fRrH8uOi`3g{0^LNau;V^j~%wToY`dM@#W{Xg!b(yrg}e_oy}@yyk~)P zDN(I}zk(lDVQG%ybHgqsH07*o-gNp%?7sE`Ib!Rwr#$iOdPEc?H9?16lB@TX@^Y#b zoex`C)w-)-(Dyl?zqWXG?vHi76d$XwIVD!YtK!iYl!&Yj(A-jnM%uw3CW^H_ZOpx2 z!@A3Gk8jYox9s69T?y1`t@e30Aa{0*TUCHKJ95Y8pu{3AVs>(wH0|T#O z_hnpszdbM@M+k*Fh?+bmLH#Ynl^X}dV6MHC8GHwj+rv{Qc|=gs9>#%^HXf9;F`%Sf zg@X2-sfZP_t?#V{ralO~R_o2Z1y(2&4)uRG`187NJzXhMZL7a~eeS_nyfgDXdqCU$ zspE#%R=W1_`z4QEssquOxyBCcuH_;^sA5>dM$)_1qBan#aOJ z2pXC>n@Z#lfQwJ{JZ>@OTxhth>lQP#@lR7Fl?}cxI0JjftnVaXZ-yP4E)s6CJR8fK zPcieIU%mXYLKqmOI7VnJKX!~4ODH{q+^q(VP!8)77ht=$yc2Nm@sH-TIE`upIW+^1 zoS#RJ)||~XPZaur9`ba8f%O#d=DkM%G%gEv96>kkf9tsUd9mnvSGA69V_~1mH=n3F zzVhOx=e>RWB(QiO5(lykKw#k9UzD?}<)~xB*+0Lk%5epg<*wBhttSgC9AbL~4WxV| zu8qHZ{yajFIz{4c2MZRl>P7R!8d!C0ST6-iQsWdsf%LFs-PrKHadWFVUsd9MtG ze1m2=Bj4Extf)GQX8bX?Tb)yJhygsB5Qf+c6_Uc#$?xF$H@=-n zhiUj(W@Jge7hw#e=#H7?J36hHT}5(@ywUqKjDz1`_8T?pWB-Mc~(uOFVv`VF^UD@hj4(Qf$o zRb;E9`yuf5W8jw_)V~7O)13F|K8|lve8?KMG)pu%+1THyrqHq2KIXUSxI7_XOT-4f z7r$b1#);o}!Pt?uxj35qQmfqAF}dLsrca%%la6+qhkPdadNXzNNfFIMvrRf@_ucto zXfr0Xx|0`*y{R4wg69kBfe%P%L<;u5@4s7VVNUJcEiHuX5wLx9>Mp-xxP0K%Tju7+ z{x|mC1E{I)?H3Kwq!|@y0tTe1AShixf`y_8SV3t~0cm0csS>g&(wm@wf*Mf}5FyeL zkVqF%kuE(n>5wR8Lz4ZT#rxee^L_vKe`d}-_spF;XYM;=^hJ~Gz4ltqde-y&%6Yaq zeKwkW60Q1El}ZEw>wwRmv6n0gJJrC#q{QnV?h??MHPR9vHAf8atZ1~lZU3B@E4(+WkWz$g9SNJXm}B3 z=DjrtKn{o&ETu~Fv@s&>$*RWAL;$S!G&m+8=H%H(WP1Ic6k70x-3%EirN;80EU3SlYQDi?yGun9}9w zeFB}}Iwg2>nXH0$PF)HaFaGtJ!AC?pw+ zUxsznKqD%hz@BHrRO}&5C?r}7C)5v`m#0ha8@RcnABf0a77*1-2@BL3{^IQQ7wQNQ z^VasySbGY0jN>u>Ef*eH(JkUM#C(n$&8F?U-KjY)WX$_I{EEb(U~ZIEH>HHc6mMnR zBz9H}Syq7pqOiYZ&xce-6DR}LV>zp)#bbtVr_?4jFD7^cieyNjnr81hbz~`wqtVtul5CI zD~0{~LJ;8Q!8jYj{n;}>j_jSAAMU5US$2H&kcH-Op!uzVC_YW0Gujd;3pc>_qVUYU z0PhRk&lK!jEzmmOv8sz(9M$RE9A2D`^!=DyykyLlb_nQ2p5Xo%G-miWZF&!w#s52g zNsC9IkIgB<*I6GCVK>Y+;EoYf%hmm+CLPD+Prlf3!~Ln)&pOWT=v|z}zEA3l*Q7(1 zal@RD8jj}Q&J>(D4|?R+X8`xeJ4hEfs1jrOes*=pzSB8Entr;a#`ZyuW)J@vsXPxH( zjuZ_hv9Ak9GgW~PPyxnrMBS8FPd1%$R9gjB06>c z8jqf8$!ipJ`?A%v$U-965G;tF!P@>FeyeIaUb%J;oIvHwI7_#C_OMCZGr1xue{fGL zwfgn0R>MiOUpMegA{EQ0Imk7VN}cO(CG7g}K!>SjVq7e()bewi3;UcKauu8wep~FG z(E*$q^0~53*#t9FLmJmp=Yj_^M~BP4EzG>beq3`c$YAy2%%Rg*>MIh>A6o~7+4Fa+ zlY%wZDMB^wdLBZBc|J~>q?fbgP`#EvDGHT`e(qN{G!|pc(Mi8XCxC#nAn^wfh}Js+ zY-{I5tk;2^Zjk)zywM?tuOHG+rD~%N<<1BhTsgm$E3l`LXHFsf9-U-qTIAwE!dPvc zXTaEJX^2<1-zD1FznlM7?z)Z>q@GAjX_!z zH$W9Qj7$_7`dcZkhhWg19Y0Y)FMRZRKDD|e^280Hj9rVr22A1USp!VQDvJP?N#Wk# zz}o&4KD3QOC>JOgXhT}}4l@q?g{l=(+~6Y5TtfH}uqxidDhBYex5zi5c3&w4?H}51 z^~jQTZ`52W(JE$|D^T56ny~UjiAUm!!+J^Ber_AOf}TYJ1E3~;+iPl zMAuqNghR$nM9-k3^v>kYU3l+Nm+GD;%Y7WaQ`WFWF7+hQ&XG5arWZi4ckF8*ZMv6} z?~*~sDbxx2qJ?#CXUNxrR%e%8SztK8-a(}*0B0uwI2K@g%T~3**hMaaSS7dKf>}F) z`wKODE~VuM_m)};$90(H&M*VV5q);Jcw}Nx^$eA9Sb6i@@4nQ7Yl_dnA_@$^@>_M4 zF-yQbmXT=oi&{YSZXA3ZC^HD(DNLg-$B>D`u6Zqdw%BkVZr((h{Zj+ISFViYiY5Kf z$s3l3axB7eqIwGSt~$$FS(-(3DO$vz2;UmL)IlDvEzJlfUX!_X(a6Zi>i~Nec?yl} zScV6k>3D>XC(qULp5a~neg2nBX+z)kZNGLVot1X{3#*#@N2spVvNKaC1L5t4x6e`^Kef+a+hP&tb(@~D#lU%oX5q(6Rd4tZq$W8Za z9MPfQdbybsU1OKmp6}*&PIIGA(8SRTHD)C{X3Tqp3$=%>t#1XKskp8Y4%g5sn1UHC zBL}LYnlQ0?KC0G^P(j4N_kOLg*+|@yf#(aFy+7JKJ@3x%xo|ps#L592 z(PWbiP(I{EP(Bc1h*1{U!N56j{K)_rgYddd3(lsGJ!NWV4Qpw)F1B*I<4 zR1d5t8Oxl%P&lxI&)h1RVP`D-*Y~^wu$KSwnJ7e$Lj9GvVXoBzZ8CsN_O~0j?N*~C znm1SS0KlcFOoWz?m(<4U92FhHoa$<2CK!+5*uVl115fr#j>vCQ9zQ_@H-XGy{^4Es)?qd?_ zNw+_sKEHNxynfdhn+fqjciO|S615sQf)3515h#x}G^g8V$dd!IXVSB*AEf#gwe3;< ztuB|eJ=s6a{RsYvFpr?I;I}}^Im=AlC7qpP=@gVaTgth3G5FQVj zeJ>_@AMg8KJw9rIO2fcXM$kK(ff3hxKL?F(HM?Zp{T$bE$4W{uKTp!r0OQve2`<45 z0yM}{44`}O0%4@^R~050TTZHn2FQ)b!45=>d6Jfss8X}rBcg&8PE7mpQ#?_(RY1wH z*)%|qUvW3D#Q2Bh|Gj+g^);@JkY*iTYfvu3fQJR5QfnylE|}~P8Jevcr$p!=(^zUI z_V;y)1a^TmKe~CRl023WeEi?wQITmy*a3VK1;rEvOM{B+ z8nTB))*$-ip;5;!{A$p)*`iN@QHwbbh?adATs`H*TjVQ+`jPTJypOpDgv!_nFyu2; z&{|?#ss99BA>t+~AQ?BX8@cEV|9a4lYGqgBf2atzCu@fH16vexF_Sv(A3wMkM3`bp zjB{6+%HVP$fZNpwpve2cug4L|BbZ8;>zo3^O&AN1!o)yi4<~KeaRm;Y_ zLR*fnk$G$DQY%j@%-oUp24_GFbREAt^K-_?_|OS{)$LMAxGo?w9)|4r3bQjznCe~c zi0W<~Obi_FzO99*T<|9Cba&R3jW^|$hR{J9j*WYZhs=L;I(VX3*U8^Wu#UxAVHZ%H zBf+v-38kquJLds{%&~&@;t}ur(F3W5sWVA^*UMt=0=I-2^oUS3<1AG76<0L6FiT|= zoW#VW67_pzj5G(Z4;Hh!l~pA87k7_&Onf(1J^Q*)EmUy>kTgPT!ECc3fDD(@i}kv% zX+);Nj=R2!AMZQ{2{dSB>`1)*l}}Bd`>Cfiuj3eGfiR82WM@a)ua^w<#+!Kw97FzoUU5MGDOySO4)8=t&FtG3>HyJQP|+ zgt~kxAAW8gve=&7Z18$1g3nz{dwR$5Eiz9l3DzYeJoH>*5A^;{8lVpA_zl*W(az3! z7|~^HzbVJ+9H>!D{5Yk4{@lI#7Ks)zFuHan&j=#?c_1;J_mCO4TKJPcatfbo765`- zPULRm27C5BzUv*z_aE=F{=CQWVVCBStiC_%c9Ea3iT28@G~}p1)Pk`0sp#pBkMa!{ zEIrS)*;Okd#vC2S-oxQ3)}{S{+aoET-To2V ze{NIzQo?m9Y6|SAEfvwASQvgj%P`FAtR*R~=m? z_#ei9!hUOK3ZW6+06>D~En=Jkr*F#e%T+PwEv`m@`CxS+;y?R z;@s2c(HZkA#)yDrXW=RuR>ss{D+mkF)V#m2e${qd=CysZ+AO10X1b64Bhk-lnVTtQ z#X!&Pjcmk6V@u@=oYi&AGr*GHj*py7BAQl5+aFt&wf_rMWwO|H96cc6b14`-<3*8x zsH=aWKnB);V;r;`-E{BHU(=!N19|GInOq@-`UCBR z=*TJq0MxiH=p@1iwHmWO4-xm;?Nn>U45Z`X7{Kl7LcU?19GKnI z-&X-PEJ0&WG|VoJdAuuFvY-1hcU0;7Nh9%vxR56k_YN!xprC6hNfV=c!C_l~AW-0+ zX!T@pRv+`8bn)ZkgARLkHg}r*Tn@kJX>UP)jqqAA^pSRb38aUf)|?noCHY#)|G^8X z^5no^1DP-3Vp)%*!hS1ywx5kfcms3X_EMOFxU~mmoz{ju%0N0XM%Uu7>9NPNX>2D$ zzMuIdIxQcJjVBMzuYIL!Edrr68{iIF5mQ+BriO0xTB+Q!#PpYP%1zN&cWnko%;CIG zVp2tIM-|#?q{j}Mwu~rsu1E@h4>G;lTR8r{s5HdyjE`R7ZtZTrTer?1|8}b{h;fJj zjsOvORxVMTd77a+oXF;%bB>OA7%ZHz;OA+38%1^8@SmIjpyW942wqTV&MkGA2QN?^ ztN6rAZli)Vp6UlRkf-?Ewi_>Je?QYo5e?4za~pfm@1f!Z%Q`G<(}u>r#s*^;ira0* z+Us$VwE`c4Z{XFxagB&Kue;W7ybJ1&F07`Cw2*j^u2F71-HBy(cgq)2G;+-C*Oabh zk5RAB32J4Lmy^t|biDuk<;$m?hIs#qrcH}rJ++_$_klOhU(F2I9`+1?Ag|Qk@}vW8 zddbIlV{}uccu`D?tt6|^0oNZ(y)Bpa?NO7+QvT4}fddM(AwV7XbYH1PcH9ObtHK4M zUBV7b7AFu$Vzy5Vsh&R9uAAu%{zpiP}kO6DBm3sGANjI?XjkRQIcp&IsTzyrGxX9C?_%5bGibbZpr&->zZDtvM+8T*5Etn=z(ercx$Ux>|pY}9^q@l zK6oLKXjVH=mwf!}?62N zn{%gR*VA@?2$1vDD^WWt`y%THmmTy!$)4W?!5hGXaDH?W!jnS()1bL)V;~}rdi;im zOv`3}XXhCiTvLzn#0UTZA*`jv{gkp~p4VqGpYnUj#DAGH+Ai}WK@kRvC^Q#o5&`Z2 z(BQhrro|AR9}7GHo*f?}Jeqm2NWQ1GOv(7U z%-f|@jg5}==heK)Y(D{ROd0#0#M(K^tYMx28DKZ`FF)v6XA#B0X4F4QyLMQlj>PK$ zIpe}>kGSf2m-N0^2 zQ#Jy&G>;$ULt|K`cqFiE-2vx}k;VOOsH1DR=o-x1f%*G}(@eRlNpMuJDSs*-fm1f^ zjbHm5GiZ0s{K%Gc$qi%&xRTqDyG4kA2vcUXRHSkF5c?Bqk49wg;jW*C0l!}2JSvxQ zMHrgLC{x&P?E`o|sl+}%do+EdU<|vPfTb120xzAz_P8C!uJ^N$xq$iR{VyIiU$toQ$kW-b4x-P7OpT*@S7CSxrMv?30Hmh1_k)o=m{tOAf?KgJR}Fl%xk zA(`19jE&X#hx>e?ewE4tqD&dhuL;lZww~SFezvCouW+FHiLu1z#gHNDKA;LQ@QQK- zJFcSga}Wu`?Zncar2UP1-v1kLk!LjM>>vk?21sKR3;PZegB4U)2?aUD>avJG>0(6( zQ+MpSe$b^$wa?32T=BeOvcCEumr3`TIdBCCw;4bek-zH}s0QKc|3V4XIOpD$=QL9u zv?#mv=~KWh($@>EVpmC-6K^04v}GjXY0(VItmTgh@@u^m0Yo^OgFF_0Xtq%Nl8?vd zz6zz>t_3L}Lz9Wm{O8|WqA)68p`4(&yMsDZ#aa)XLce!D!QGc$TcNR7P*YH4s;kjx z`S9q>IZJxOK4Wet|6!q3E9Nf1C&?j0br-Q76akp)`^YaW&(AOEIkBse=?AcC_*Ci!oA=?Z+INWw?cNnu>F+llldr2P+^&XA3-`-0&_HOX-uf%aa zv6aCYQK|(;N2!;*@!KLyJPKmhSQ@3B!$kt;V^E0W^^Ru2_ZUE~BCISW^0%>ZcmcQP z`M!UIaiC)SFM&N9gsi>b;oW6&gUdY$b7#(MHh;*Tp-8Bk%9hi)BbVf_-s+x=zuVXA zX7VTVq4L`0*6=6!o<*a}b10boAD{QnZy>i*U|j`-@6?;Q$Oa0EC;$(PmD%xKvU6|R zY>!;s7VWO?GRyU%VwdK*7`v>L%VT0UFZyv`VV1(jz!kNz$od?mSWr6r0qvGe7$T<# zm*hcrPKMk+kg#&D8tQL83e=x+C?QxHUIAbZLD7)5oLD1Bi)08k)$aLdW_%WuPalwN zDj7<%>$tXb`o!(~I`8!(YP-ly%djSB%*}53%vq7b zgRw7x^r84#WXWE9i^_v_t26sDfBp0?F)LU2m9BTZU@!!!69zrsz7w-JiVzdrc%3fx z&L~jf(SqC)d70N}zRD`y|*1V?i`kr!7An$NiFyoqaF*f2td1zLVbth z1ReiTfp=x($bCxhJv=hex$wa4MDfd}<8 zBo`CwNs;t#H^yQEQ-1%VxQd z*qt1~s`k}w`j!;n?h;KXC54A~(gEnbFmrxBhB-~10V*iDtf-}$rz0&GUmS* zzPm}*n4Ry}V3um3xm|c2#`_2Nq$K1vN;6a$aJFC-V5zA%j+$%EK0-a+`l6*BJ_eD$ zVvy#eu6N(*3Gr*!7= z<;*1=ZDC&-^j7E;S#ku2z^vv8jd@DC5i;MOz z1sE5fD|ZY0bz>RV<`HBHzQPBDtStWugtvup)t+h4S1@Y$Luo(qjrKjbRj~L-`X^{-=Kkvxrbn!`|!h{$j`}= z#1~<#{lC$@l!Af3MdJWpiu%kCS3+5MN+#T+YsB@w*bjel2s4cFKCrea%YXJPTOG#r zNl9GjUhS7o+C<19cbjhh)#ZZ82$zX;vBz0SRS{MfkATAN_67GX$Fa~#q^THO2dEKK zU*Y!Xiyp3d=(1^4xPG7Kx~F`a7iZHOaX6-7|La{$&&ml7H0TO&fEYvi`EYKZB<#RA z;i?&!)iqorHZHbHm5`(2=^*3q(u#3W`1n-ReO?p-G1bORm%05DEqYd}^WOO!KJ-hs z&GbovYz2^_OUUWDy6t!qab>H-N4vtn3>YIkA`I!f&|O0F9hNl9K=r$A8}8Mglo`P z&~E8`)t#0eMmL>n?i!!JBbSC(;45{GL9Kt80Gw;whLk-x?iLaMLV-?4R$+Z5V2=D3 zWelMDrdHUnb|17v7*vQMs)Sv6qcbu89?ag!S{Q>g^PyP>6N0fdU$&Yf53mCbhh4&Be`_w|r9L7kjm~`_X@Vxg|`jF`R$o6^0&{oPIOKu!pNt8E+hcfxr-x;Yd zr)(ZmWDJq1iDO#K6bpV(H?{2h3uP<^1wLl`JI5;`$YnI*-cQ$)_MWW0>5ps1ziAI| zJ^isHrQ%V)pY?uFMcBw8FXkh>^9(^ix2wlepOXX;5t|eI18YUu8Y96@*F!W+Zz`0E zw{PEfwO8{_s|@fbI-oJU<4?oh;a?ef)c+_gGP z%}yqkang;C)-tXUcaXF9U9XpErh6e5|7W_QxYh05tx~%}iB`vWUt-?(0P?bg0^`b6 zq?JT78I7~fZtCk_#frFe!q_wM=CUuQFIZOS9`6)>VY|9*x3TuS#6%3u%NeM!%G7na zCDLQh(0w|a_X?;q2zR+zrQJTSZ8-2sR#xKHwOuDR&T#C)eYau?S0H@XCRAXsnKrwN zXXFdh$PIX&n%FV&4y6%yBU{wEmGTkU%DXS`Zfm9-npR$7qe}*IGX)0`i+L)uuHC5Hg7g!Aecmi8b}UOD#P*|e9LCo%{9NhfN%@Pc1UyAMy6KUa(I z09GfYObssp_5(A*1;aj%;j29cH`I?vRn}DX)+oLko~cN-(^Y?CXu3nHy*?yeLUrs1$^K%N!a`2@ke#oy{|+@2&Rl`5BohPOJn$@(qQAeJd9tip6lY6 z$Dly;9ID$6-8qh3TL(|%CR3e$*)Pe~Ke1ucnR3jku?@$4Z!i`Wn%3}+*R>~EdF%tl)7ttjH+9}l z?_t{%GbH2}fN$Hv_M>Mn+1nC3aJ*R&!+xrR?w)pMjXZz1?3;FIH{_yVL8gQO4TT0w zt)yGjDYt~WF3hA)cgejjbF$O;ap3Wr$O3bmX!VD=T@_rc3o;mnC3hsGDu z-G!_1fsG<1ZaVR-?uavFWjU|kXBUT`K1mKT+k#;yfrAJDJsl;skoKyG`~6(fbHei* zKMRO<3};oDykH&AU+b&|^^q_i>`n07PavIqiHb$fmwU}3hv@fA$5~zjSNi2XHc?OQ zG5>g_vsc&gZorN>?HT>am*~khWJf|IS{?M>N)aIp~01-Cdzt1t$0 zf#8PW15Z^F3}~$;Z9N8GIML~2cUD|6cF;6xJV_zM(dp0SBPlj_&h8O^4;Uy$w4B8a zn#DMGizzmOC<*6Lpd-(qr?3zKU}3O_Ysu9Nbge0`@(Ye0e zrO9e%WFM5MNt6h7Kf-lJGWYf0$ZccnB1l!menna%ThNl9*(d*`*WVMiDD2L_#6ud7 z*;ZPZyYC@9kH*{KL(7YvIZQR$@WNiXI8AcC`#?8c%%Nii?%y@FeY>hjyR1ue(uZe` zZzG(L6s!{-)@WP9veMNvPUZS@O^o09aOd^6ZYJ*jdg!e=sN<4TuI&ofeuGa+0Sa^n zL_nQY$&_L21JlWvyn>T()2vdCr(ZgOM_apD$z2q;J8f&IQPn0bnmIniIxVqQ!9Sw!Y*A_Sw}cnTGHyCU z6H9{wCrw-(ZyHSS1}}NN(N+%j@0< zvG4(1tRoh(QVQv)-(O6IBE3>%isjDVD|eGCE*b80Hh8azT%SzOaF!X6p(gj zcgv-)sbgY^S8D-ALq&guZDtfO$RCst?tuAaO8jAuDYH}{P)&L;V zvbF$6)5sUg)5Q-9UQYJd;kskF!u8V8A8|Z&D5ce0+BO`BXcqq?_FKS&bPuOCB z3`;hu9`N=#-t#yVok^w|QSMNvAsCwXj#!2)L8^nuL;Mk&j}5EQquc_Gw|CUQR_{RD zVI)xnJ<>pPR1}umBKG{AM>8?@>^v`d3ZX#Z!D1A^@I+;YVHiMtREj=2Ml)}@0#f68)`|N0f#J;!oy6!QQPnz$>!kgCUP~U0tp^4~ zjWUxyVL{8=9h-28*hMN+XoRBr_|(1p|1=IHP^Q}Af5c`ymA|Y#F=fRU@`;^2=Fb4= z`~MqlkqvM<=dK~BRQG^BH9DkLE#Y{tK89|H#H&F*%N`dmGn>MYlN1vyH3s(^RNndl zG7NbHbZlE~mzg4wYx^r%6f8B3BB&>reXTWUyg>6S*p1#dR%fRpZECUybW1y;uZvBn ztu-5P(_?XONHq7Bg<~`YKw@Fo!GAtM;)MOR$_az@k=Hs74_eiB5kBm%jyM+Oe(jaB zt}`wrT9hNCPGciO)`PDY{0F>dx1Qo{FlOGwL1c?i;*Iq0%R0GHpVRbOJe|n+%)2 zGBd4H9p07JTrRFj6GR4;pD4?si5}=*Ejd z;P;(1z%dIKWv@XahY$o@s<yWNP{vzWCrrKDXSst(7Kmjn|7ijR`W_ zuvn}II&{DG3UIqS(DO3hSG497-n}p&?AX-Oc=9=bzZBiq--LoLVu~<;L%ik(M)971 zyEUD=jszUsBIXdOVms`462tFOw|>XA%7^lU`O#O1*LPfIUrtb*JqzOyffZH}ats;8 zzJCd4)2meY8nYd*VvTkHR$lFr(tgF61c&H-jy#LM}s88pL~M z3`lP7=}Qzhs#*_S$(X!}?d8-G-oV6hK%am-Mh5LxRqX*9@ljshP*ut^Ed%;zZ-GG> zidz@?2rHW4gl@$BY#YNw9iIGCu)54SGZ1%?{o%YuoGSZZ?u~(u`u`zwz+?lHN%Sw& zuNlhH<-brvJ;c9IR*A?L?0ZZdTC=D85#|NVB?y$^~9Pog@tktYO*dK@#J7E+eT4~I4jTsleTd_3Tr>3rm?pXKk&Gcq@3zBCdw zn8_ge`eCULY7c>dw_sj|cDg7Aja!5gWvdlm&7Z5D>U6yQ{(X(q4M&t@^4;RMlQ+T+ z1w(e_eh=p~lWc9;B-Z}COg<)ay>)-m!%qp@rKb01lYfyBfiGb660%uoOWsfjcArL` z0*qHHAV<`g`A(7QznTjVj3vr{eIb;11YoeO5c1~P4xei5uG#aWuIs54Yg%XbiO0HH zUd_f`agyBya17S}PNSOKjs^xtOc8F-RiK&TLaau_e&ApA=xf3afUUx97SfY(+L)6o z`(F3{%+`1lc`I877vF0T^#hJ(4{?GUKZFQbyz;+4VM@1ZF1XKahdFiabdjq}3d3pU zQcC<)$)ZX1xJuFUU$JR89)Hsb3{%Kzt=UFbqqkOuX$dFhKE0K0IrRI(RCZG3)$7sR z3R5N>C{aL{nuE5|#P`dM7ODYP3OYE`8(vCWFv9X zFWpn`RZYIUoXTe$0h*Q0IQ}h|IG9oohM-^AjYBWQz$g}wk%Y6z`v3AJ|DC)mMlODQ3!b<(W$Vf8 z)K{BH-$xoZyHrQ%A2EL(q}IgQGEk;yqdC<2MhbtXkEVwsfsWZzPCyZOLj9_T)#G4D? z>;eivUwHMopdsil)I|aFV12L&$NVqf&OhD@v@bym$$`W{9L1DaMI%DY6Ym3o!a(|v zQ9B>UhxboS{O?>RNEWw9SzbKB&3RR|--GCZiSVdtW++PUO| z<{q`Jg6{!=HO#`I*REvBkssYX+Ey>Q+mU^>|p7uO&Tx zMWF>JStIj$aEGHE_sPocEWDH2@k%kt&)O>*n{o_(ATLHLZeO_Z_Ue3kWF#I@@-J+R zmg&~JvERm(j^?f?Dj9C@O<0Z3pHSoLcIeOsqX}h;E+9J`E5C(qd}`2hO+_ zxUSKjDr+1T8vUv&C8pF{Eb_=@UZP9uG74$FV1NMtGZxUJHUTsum0)azN~{kg3Y#xq zgmoth?9$z%S8V*3fO+)yd+OzfD|WPS#;KkbUAiguq>OkE9MJhw;YFvs<|^(c@`I}9 z8D}|?=h)8|r8u;V+Wbg05*o}|D?2_*Y03M5ha00ym zu&RfjYOct7&$!|H71j*l5XN1mcLz}t_};LlqX?#j=W_FQW8}Xm1+R|`!0Y=E z+nfpaTGyH@h!Fb+(7OhQ3D@C%iOq9?=LYZ()Jr7(yx`fkG%byqgj%Wv>o$P;IDP>X zzBne~T$`Eq%xx7-T(r{CF?&AT05WWTqEBN8TkCca*=LXbe1xu0 zXcv|N#UB{mUKkzJZN`a}kz-yQp^aous1yYZ_#`~{_&X>RRg~DhoAw+kpKCe(vo8v2 z+zGVIXDSJx%~ofa1OMQj^J5AsA{Ra|^r3zY+BA~Bm_MW#&w8Pcwjs7-K=2PCV){oc za{FQNhTeUc&?P56xo+Roj=^_v+-y&bc-Vu@d@r*x#gHEqpr7oyrJoGe%i~r{5RsO{ z*RUYTcZDMD`MTd!m37tN#)GsBtI~gls9&%hHsmW7=D5Q<85gR`&7BRM+|rl`QzDAO z^UVXz6Q!^XV~*r6-m0KPB%sH5z$)VQ~7nU}Jh@#GSo%TIWA@O(prN4VrhTso3t$ z@_eYscnkD%9f33pR32Gx3aSsx^R(1Q6KH-niI3SU0WPw2+pap=p5f1b6fNWA`6yJ? zo$j{=hB8cE-Od>Ysz{+&k-}2lgQkM7;o7#v(0x4O%8P57LsSo!tHEA&QIqT&^T|d} z`}?0h1u90Z3f*1qYkmzlnqyzfe8EkV)x?-l?gekU{BC!x?mNF6>n59fJ5c>C;-4q~ zv|uwq`4kPS=Tk)%g2vr3dkCi}weTo7K9Tu#zCHG>5~z6@Dl05SNjE-cp%i7T%T|ZN z?1btHNVF5*9L7Z&@o1zACsHctOdS@vlS#GPzj{=@!XLdt9r>L~WIC!R$w? zZEEH&dN>qSB#1gBh~5Bd12IAu3_hWDpxEE%9r$~%Q^GP|MXrIwuGpOn>K(Oii0nM$ zBkL`~b`9ylm1s4hBko6J-pl&QG@!B8BbQV>e(3ck4I9u(qYCPrc9?L-#V~`x;Y_+# z80xqShk${LwE)xsV4?g^mWU!9)QdrW9A5Wi4Lw`97a)1hXxxLe;Snt8%uoG(x@ zUbRQMI=R>Tse|vOhwm~jK*slr);j|_E4%%5Anw^mt`8gD^qsI&P_>Qv(JIah znDc&*+OttXDSu0ka~nd&qjV0f`u0s_48X=*a7EPrxuzHWKuPRBdGJ|vDH)}`85~p; zw((DuYN`Ff1)VJdp_vqmopkH|3pKxlWAXO}K_=-WrkEnF;!<~^vdx5FVoIT$>)Cku zE_P1^$)Gt594bEM%o0IIVc-K`qu+~S75-PQ%iB$-sLqwaK&P8+_}z`7>jS9vS<3_L z8(;>6eFFfqZ>Pp6i_>G+Sj%2jsQx%zv7zJYkX=a1-sjOrtBxWP17&%(tVO`i*Jj=& zFIBHqu@V6Yco@f_p%Mx0(bI4phxq2g9bM#ZCD>ehq^l5dS$aIh>+Z~nI;UfnPS_|M zxGJU?CQmEoO%<$0&oD=tD^udEo#VXMO=Ax**!|o@&jmuciC_wSnqz@T9d?>11=WKP z#rgP0>8P4BQ|^UuulhUZ<%RGq0($aO;8;$O2APu?^24fFWo^C5BJ94~vea{ZkF#+2 zU|qvNL+hRG3&&b#aW6@2T&v_>>+%`F|ikL9{@WQqJF0An?WFH8tHsjRc;q)x+Tdo z$Mz%?p_x4FeC_zqe&~a3PAHhDt+<4WW-PFQQzpoF{zgA#J*x^wx~k&>9-bhjJ)?)U z$ozUK07PYF#<|zE69@*()&kn!;BRl-drtyU9XYu>@aQBcO zATueTxIq0tj}nJoR#E7B$GkT-{}&3~?#COE+^bvddU(K)JM@dJEPLJlU~HK6zp-Sr zTJmF_5TKPHv5}2v<{oP(9%%o!FvU7(eQW-pZpcU9);^(-pdsGA4UTAN+-Yr=J@C%& zqP18s6bG7rH%(*ne9*_dn{xQ_LI`8dqKtXMWi(AH`O?VP%k&}1D^8|ugQ zQC5aMaSf8teVnAeunqGbEH|OTF+6PM;65R_WBpY6FF66ZD%(%Al3YFE^OM2;vQ`tg zfB7C1aVPl5eA+IMwB)#%_JJbkcz|5^&@GpLK1Cd%eNf3>}sP zD;c7OjwsU6OhNYvt;M5sXVV@g@J8o{_2)0p%#-fMd-xO%J*i9BG}Lw~Gw_p=3ix^o z%E#2OhJaTvwIA1iYE7X}sqC|!bS}Y|ZuDGr$i}T!y~@sD&?M)sV|lzx8K(^=sEl5G zd&+TlkQ&0*n%e>pWLpv4#Z`XHrf&U60x96jt5uNtL;|5T0EMjDY(TbO+d|r~o^K&& zih*fMJb{FBgz9Q*MIf+e+ye51gC;#sGwCXWCOFf;fE)$dE=+wew&W~mzHez=@`hdP z@>qSYGyeTIu!J|w9T1}eOZa;-+r+L}@MrDbuD9z_hXDqZJD3t+o8g)VS^}K(Uq$p& zV>=@A{3EIMS<3;Q0>x!bEunT#QX_7(mA!0Vnm#t5e`fo2vdWYs1PRtjenm?}0e|Qe z?;9!C{iPDmGRIj}SZZ%#zx!HiZB?&&5Eo+%9aDJq^ZE$dv7+R8YwI5+J8OO~i=_wW z%vD=}pxb0}4C^~w2Cm>F!Jx|r4`&i}{B^C1ZYdxN19IP=s++cBJ_H6&dbYQ{sFYOv zibMF{vhu>7*XqODth71i?^lANL!AeTi0#0Yk#<1TR+aelXY@o7!cEvFv)N|1W)dfo z`{jdPh>~T$c3rb^-^ZXb22izmhApAg37C&wf}f772or90AO3ly^cir-4as z`nuCI8W$({OQIkU8HGZ;L8lkiYN%2PCun80OkD$7m5+UW%iCs(nzzNR>Ujm|^_?={ z+}dim<&f6&$i)C~g^_Sd_Drg(o4z#7zk=?YffpV6Ev_(pcaP64hKz0ah1T0_K;>-n zq!$0ad)>fMmd6mffT3NqfYmQi|3WQ#OqiKA<9L{co;2si&3DCi_OtY>@uyDIJdM8D zivPH;yF`$5`0I6t+ozr}g*?IYvOqdw3ymePg0;M@Z&Gxp1HYL$U;2)Ux+a8eXn&&f zqH>a*UQDUB=*KmmXS%VHYQ^EuF^8H8y59r!Z$=lSc9ax+dwfwM>{+M;>mDu&TQbcQ zbSPy}F z^?$AoSAdLfr>$9@zv7h}Rf_Xmx1;!gokmdoLAE+sMXFMiMawFy7wN+mRW#rR$<%M_ z!Nh~Gl{p<3v7E3PLlsK@a((-?#b19X?vW>V@Nge8!Nvd}stU*{1eQMf1krF4+C^Qz z2z9UFhI6WAl`9O7BJq}&n$(cEBE28nx7y6c+cu<9w4ZTXT`rNfqc&wt_vQ}Pd+UUKMb`D#%`+xH3uC; znMnY&z5N6y+VX>CIrtu}x#x~g&`knRs&fDB#`iH zgnxpSse}jt{Iib*_vl%f#BuxsvihLh;R>Irl9u}<+|VhXA8h#nht=scl^5N#IaBs~GFgm$10Tv0|LH)3Uj7k4O4!2&_KkAfLO7K? zSiN?eZd~6UwKot4yEkc$oO`3$@9BK#A#JFBv_a|Op{f@r6eIYv@{r?LY95w$W;q66 z1t|%AFU07DX+C~qfo)H@BlWKEbGQyL*;5V;Mg8J6e#$5L8LG*)qm-%l6gYNI7Te_e z*2Hs=Q4hr~pxI(pQJX7;?h}5WAWozc+JUc;rnA>?V&Vu#^E?>lTScm#nsD_XmAISxTIqY^p#w^dC=&)B!Uu9? zj)V#jE6@0&shVMVbC`kAoi(nnM(0KpD`PJ9-nCVFujE@kfdn+ZYomxI#cJ_hvD$ph zilR`TjrB?69HLL;0$dbW6K_kBrc5=6kHh(ae1t zxh-0YGBo+GP+?eub=+5N2H8i{9&DOg8#8S1JzR$$Q!LiFK_c15^ z+h=Ja2yfV{dWs-Z4v-Hx)3+}$&0c>l*Xen+BT9kybW+?iW7W^W$tT0U5zjFR;Q34A zp)r|cd^kn&FjVX~@{Lkrkw9^$#93p5i4y+q7wNcIjaEXnjkxyuPVHgYxVuG-FQ>A+ zb{Wft;C=$$0}zeg0#U=Vl!Xu{YV4WCRY=U;OF3_R*iHRYw@M7>?+IBhhMwYYqaA90 zj{|{(I0f~!G8ERLNeyEs|s4p~kKYJuL2mWJ{Ve(?LS0mZ| z^26&@`FBlL^g!;wU@}vIH!BMaQ`T&pQlVKXoMW65ae&JpR?JX;L*|^5z-TvEQ%I((@IlBo;U! z90CXMR0s`TA7e^}(ie+1`j&nS?7;wwkcT=Wb zAKj^sfp4`L{_y^&b-JVU=L2D1Vc}Mf|JL4{$3y-0eZwkCh)K32Mj^6B)-0nGN>UUe zrlQbK-E&KI}crkjlI3QA~uM?cBTFD=d)(J_O=s0bTX=-*p~FDhnh28iZ*2p zJu4PkuGRGw^`Wn8tDbV(B%Hh|cG*m-fGtdsK95ZTZ#^5#$RdUpm^|n`V74McrkCNs zvvY!G8}-wi&qZo4x6BJMxeJVgE{|2IbDbSrwD7!X?R^FeZJP=Ul<(~srK2Z)%0%Nk zZd~h-THN`=ws3}6LnL?!LkOn8oHfO^t;F1D$eGzyM+<(fnc3SHXrXpik|Io(pn-|6 z@WBH#_8x{NG?R11-AcMrYy8kRnaBwdrjUEd*nrW4+IY3iUZ)E%hS+hssaBPYH~K6j zQ+EeB_NAsS`z#@07v?$-my>a3_+SXEePnrI7`CbpMbUlHK0SsK3^nS{$w!RSMTqaw zW?}8SjUK#+Hk>_@d))OlKPaESVon5ifz+*2QXWdACQGzQ8+j`g^?Aec;j(XqtKnc8 zpBz^$UB~dD?X2jQ#v%JEgaF?cAullIk88GMp9&VPc&0k)`R(jTWZ}%WdCx1)Z|EoQ z(CY8x5xQ%%KZ~&^ipgC?#z3-Bvp%oUYE(vN!StEAf`Hh|ix0g@rmZ;kd^WvwiYKW( zPu4kpn{18RhE)tm%7L5mr%=2M1_;Hck7A~Jt+0fBn+gB$&unYmpsNHhBt|1aC&D!^ zAvA`XnFc2DfG86$)-ZO${J|;Jz_%vKe`CxuTrt}%oh zn0%6uINdRz6ts$Cc2%LUVTOnLw9W6j=h-R$3iUbMIj*#3a#im2?vAq1jzrxKuEnVm zDC#^-d8E4l>2yo*&CUVy=jk?=*k5jMed&^t=yS1X6$K9B;fKIsU0$<;(#uppi`Vs< zYpu^8>U))8N=@1`QulIA@+zS*h>s2mFZh&9aq4`9R{{DCR24K~9^hi@A=vDPycT); z>Rj@?$D+C#>0yi(!Ib@{5d!Q_q!f?|BtFWb+Q3I7N1HPRt6rR=mZm9LLD{W~trocv zw^}DNlh2XuOn2-0v1jC$&TJ+yL3XsF8zgOA7D9tXAs>>XiUGVibN9PM%ig)P)SZov zqw$M+BK|&~>MJBqgIcMpR%#T9IuRZlp2~^ z6JpAc{ox`!mF50C8_{B9q|g00uy7wy3@SCP$C$!9lV}hM?C; z@X9v9A3uR+aHecO+BUBg>r=E@e?Cm-5K$*iXyoP9+xu63g&3w__ir{Lt}TGf1^yJ` z21v4_6`)X*Or1*O-T;+X&13Gi?w_^qsL{(!zAv>LcDZ`#8Ql3z2m*}ULx(|!s_O)3 zJE)=T8kYcC?47=3`uk^Y!H3JEUz`~{*g0|mkYv8Zn|AR&o?`Yq^;=KCH73R)cA^z& z6f!f1jMxYHo6>9}S02S_*WD~|OS7rrW%lSuOD)3A8v#jr8Do(WLfd_>Yqj45siN>;4Cy;jFnFvH z%XYoNI*`2j;P?KGQvk}oq1Tt!y?CK=J#*yO_$5V|J=wzduHHX#^|-{N!lx_#4AG+? zkyiw^t9#HUqUGl(xt-?Gaee1uS%^oI>+Ib!?5R#G9R*YSb(0VTfV!k%%upUvT$Rbw zMsmef(M=w{%_fhluk9L5Z3w}M2z zB2v{3!WTW8bsYS)&oTV;E*ICNrk|yqgk1$yYYEKp zzp3qL7LbsTI)R)RiuTB!xx+xwezw*bEQ@vuPHBa@xV^RIG1JA5#;|P`fT2zEM};`5Hoe9YI0>$8EpZqMYU-!<1Cai0o!9qD614*NH3;D47-#szoc7Ey38R55$82TbxLgGrtikoXE{5<`Rj_DE8uc|O_zOjRUx zN%1TxsVQB1wBIG7Te9l?KOXLxr-7MMIqLZ9+)n9JlCM2vD~>ImKlW56=qM6+^53S( z8B_)c)5(9u+`ZrpPETsUuP!iDsf6fzn`aR5O@^r!hQIWln)GWy8eZ=jEtD@sJWOFvAfS7uwPKED~v>Wn79Bcc~}!37o~wrmQZ2B}XG}5FvS$vV2sg0#z}1Z`aaOfDJD@pIt9Y?C_rd`<77wy{A;TN@l&uFU)A zxt5%fZ-`V2RY+`Eoofv;F6pBh{y~^QOv@c#^l5N}6Z(wu}uvbBh|62~S zhTtYpHwv=|@U|4e;4k1@_4cmaL`DZo`b+1Z?0e-e{kzbTYy=slP!V%f7`lOHVY`9PbKQG_;7|1T^wgXasgUekQ>1OUC zKmxP}$oG9r5ook6Yv+&JPG(oK0CwuJwwLnFWW5jr<8xzW07dN!pfGo(K?~RXy+NY1 zikfBpqT&@sh}K|#)&Mt>XEB1I=FS{D70%O-8r(}iFkE!OYCtQ zV;Wp<7G7>xki$ShwzT$7mgyF}cHc(vBRM^=u~A37(x4WI{v)Znc{~qdoqKm6BC0ki z!Ju$gfepi;VBzVLEdV}bO1z_4K17>x4KFOy-}!Z@^OToArgaqWPwv5v0~vmh~vaV{F=v1LcRT zRybsfp*mo~k{ezqueh%m9J-K&o1F5$+m2Y6ien0|z$0;_&hC+Y(<^Cq5TNF6Cw^{j z%xKT?KVWH9;=Y@&H@@}3;3%Lo@Pae|H+z{j!HW}pk(Sqn-5pTTZphnruzyzRo};1i zQ48}&Urv1N3GC^DUzuAxz2UMOR`;i5h2{Bd&yr*qOC8`U& z(rU)<__a^oJ7**#^TibCzlYLn$;d}dTb}&BKzN$w+uwIO zTGj;~o9vX?jRJ#^2?$a?oN8vgEkB^;q z_q@F3Vs+6)`p|?K7wswXECYncu#e1sIJ+U7Kt}R10-&Va-y*BcJtN<$Y-=6lZN;rP z(|k^3vuzW*!q3SiykSoBXYPuH3UY2O!M34M5C&`KaTDCkV+*HWAexI0h#F6SSp717 z=P*MR#6M}K`mOY*g-|a=uEl_}>se6Fvbp)3y;=J?KVbZvIs_Z1;OA2CM2r~IAb{%m09sjq69Oo$wmb(tOt19i_Nl~d_j?t1`O$@x2=;A5Jj<|=a3(jI=CgVfxRnkGp@CP{V_pGn!2`6K`YODyKvruU5yr+52qwUcG1;EA`Sw#X-OTLZqIyv{&vsP1T{m30G+v0@eR1F zWRrYAg(DT)h7<`XI!nuaE)kiXeamLIvFBo&3Z!Ce;vbk4`J8R4+J7O84K#CNzYrlE zMdr@vJPh8>ki!@oa7h`oM8rFBRz426KW{70Ry_Kn-o2uXeCb(g{1@F^MK-|-S2vpa$tO{ali35IIhdN(EMhdz4h(DM+ zYE|u~qD;*HSaV4#tXRGH?Ga#+&#-f#4F@DR!jO!udVcipucPQIkpCMfbMcEHM`p41 z$gNcQbAD~Uyh^W)B}RFLqfpcqRHM{jx>Hv+Tx&~fu8j^F%A&3h}@FTP4}9|N2bl3#~Gd;`RaGn zeLhS%=^{-qc&7zvV4q>d!9D6HW&lTFh5m{9s1qjHI*5GDr3^L zJ3IXcTaODiU-1Km^i*O3X_1Xqtw{9}8QoHmW%U0IC% z!@&HRGjR4`DJXF@0n&SW&+mcN?J z^PA=O)aG?R1s*y`NIos|81_?~yw*zG10J{kJ|O~aTpHkN6Msf_H3g&mwE6Hfds6v3 zF3GAs#??(MQ#tr+-TjdO`b1)@<$n8id@6i*K=P7xyjlCs%Wto>a~h~2vB=$^btN&z zJ~-!2lQ2XiN!WMYY=srM+upyIC<#+4TPHi{>}8MhN$Poz0Tzf)$*R=+F|A3AL2}+3 z`uxoK+T8-DcV~UK%^jFDDCYv2oks^p0G|XFk`_(CkcvTTOo{Tf%DzfO#6IDknwSQw zgQG$MacY&-H^p7*lFYW5koVr1R|_GQ!OMsYF$~pt2AqohfQ$kSqzpmwm}qmR*f+{zab=gnH)Rix!Ge)T zY@NC?D?qbQCY|jCIjY5im(<;o!PRUi+Uv25;SadkEOGQ~S&d_vy+d=D4&?%1I$zOj zJoT?Fx_r^!R&99nv_^cj&c*s_!{0k(`kuB1_b}C>$dj`a+KyIH^tYP`aWIPW3ZW0?%y%NWq)x;&GKwr2Fac7uif8QaGoz!N+f}o2UStH^kM0_h| zQIa~J^SXkBW&%@!Oog}!oq135NNY+DZ02_B7vVEOA!E+bCSD&g{9>=ExAyKfc-8Je9> zyskKRp8+Pw!sWps06L2SuOCC?QOO;<3&w|!mkujxe^##Ac}88HIc;%sHfR@PMVRjT z7cpt{*82b$F|2_B(DqjPr}+jD-%MU>70sfCZbs2<>6Ydw@k6A|wovx%$F}m1w&3z3fM_ujq))=`YZ4NhK%*`SZ46o7 z^`3As+clCG`82^-hK?811w|28L(Z(@H4K6pfv3I?z2Ime2c{Y=ZTdR_~w;g7jL1HO(TTl zMs~`eUbyvMtf{Rf>ARIZo^D9yJ)w{_)L}VE(*E%J(G9+YAu{8h*nl{*+vyihglL zX5p_ByH&XL9x?Z*r8DT8WeCzTCR)-Ua=`*prmmS%HH#yU@)wnwX(}#@n7wDw;>YXE$E@a*Dbt*s=j?t)@o@jJCEGHD z!vU{w%EgL0s@H4{O0%%ZxsFy^;vVJV)^YI5*t*TG@8(j|;k;i^w3!K40xS_pweF7h zi=E(eCBQ}WuN9nmJUonj?$=@W_Kb7{X9s>==<%z2oeRi(4E1a`bhMX{C6e32u%@57 z1^hNNz|SZpYuD753Y7MllehO=)=eNvbrc)A+FWR33q~%QtLzrlUPXkV>la|_+me9B$@Ev`wm67N;op0JtoF!OPw1hDfXqmWcHT!gmBhMsD4 z(*Y<#2*o`7{-M%RzOKkS*!m66JT5m~Kk*lD3OB{+YQZ0o{GbWnGQy^b8*(Na$l;m$ zs*-+*_^Hh;-SA0GHqmtlg{{D79kzRHFysHvf&bc>{~5nGDFZiO3;vJ^{2=TJ*q04f zR3qX1zrJ3h$qu}~mYQ0`)GZ3cP$$vgUPIT6pL<~Qs0-lg^mg+T% z&M?^!ihPh&g}maV_0#f+2P!OE;)(6MfV{RkWN78#6$_Mg?{bjJpjSp<(4Ev(n&;J` z_unI~R4Bw{p5D#S)b}#-gGvv8~ZVC_g%KFq28{@!= z@2|%>|5bhuegMqk8sCwmFFuWr;t zF;3@o=S=%q$F&7|=z9p29bwK$A2DplCBh)31%^Nx0i5}WiE9HjHrgA5&5hpkr}dR5 z9zJRiJn{LA{r6gN=lWCRCnUqMnWr-HTzX(&hPQ-%4Xwnx`J8?deXee}myW!2jDST} zbNj3%B9H%8+XM+%JlNw%SRyBe^!g7rHniRZAB^C%w}N&r{hlfo@?1C{GicT0xqAJ^ z5j`$9#s|8~`3q_6lCLl#7teF8wE^AFCOCx3(F758Wlp?hRX%5gV%3;1AiG0M_U+Xp z>PNfpBEhamy$9qYvdM{UiNoOZxatq7PQ+^yv@_-FYcL|Hx{F~H^NPxv=dKQRDnfJV zmk%ZE=@N4r(7Yj2@fg=#BE)7pqsPc}B0 zl!w9BGR0Je9-J5-W_$xYI5)c`g9mUTmALH;ZE8~qIKK zz7rG_`Hc@&Dh28HW4|Ou5~&y9i9{}T6d4&$6lu`guQSS@H8DyLc(nI}e0ju;byN1; zcN8~3Ei#Ob!5;+oGOUu>p*D3)+-?Yr0O|MK3KnRr^GGtAFH})_iy-a?*gXkDkYRM`B604Sig{a`{|qMwuDQ@`(8ekVYr@R6W;X3 z;ETZ76ac;1eh@zCSVeVW#IN&jnII1yH z9D~0YtUYzVx+>?^i0Fqgk(tkfjFTPL98a1AzAJZTmb)SpkNv!Mr2;)F0P-NJuz=uC z&G$JHp5~6UIOk4P(?;w^TkD-`Vzvew%L_x;mW8%?|1-8Z)@%OngB1V4TEl*sGGR!- z@|45?QL`N7@dsO;#Tndw)T-V;{5v3Pa02jK7K}~dgFzN)*vM;B`|{xIO7Ib2=U{#b z=&@{B?JI5Oi{hEp`+sT3|F_2cfAsScttMV0E0VdZzv0vbpGmjr*GlojRT5{I^T&l7 zpH|Adq`L2==07TK%>)AGis762Ov%JpP@8Qi9kF zE>{up9V&!+HG`SDH~(=j8??scU8Cmy!A3za1X?Jo(Yd3Y{(aO1zrb$}%!DFg8n-NTBjMNl*uWnpel{Zd7?+;eN61-_y_dE|zh zifrt{0rq7bT|8eB9y|XA$A%+KW1$1cXtXALcF>%6C32U4_Y$reeLc^NtPAJ z&D(W``<_~%65izEt2B0v;t+Tek`LV4Qa~lud~M%vL?yh9Zg-uYx)e~jI6Zc3ImTUr z3pu}pd{3l$EHL&T&Sidu^Q~Z`5S3|d9)_?Okqvy-@qWfBt~DtD3&b^<^kj)mNffL!L`ch5uWkPa7IUOAd7q zOBT@_;JY6~deHMl`?we_tJTb7Oe1k8AgZygNf~>(IrLsYjjnOvkI|{%Xhz z`H+X4Jb;RGe`)MZVeQ+2Kke3P=<<6j_89TJO=de(TT5}zxOD0HGxEh<$w3^LlOPGL z%GmAGirdy;%QYuQdtux_U3-)|Vx})h9)-~L^*X;Ey{(IH^;j~Q6R*76K6Di;tsd9z zwquPKZzxa!VMtxl$9tU@D>wIi6z9Fj{Bhyn8yNngO^(p{ZD2C*|C%o($T{JI43%Kv zaH^^52(RtZ!$V8W<-gB(bDn!GA8=yy6u;?r)J)rx zU>Q4Yaym14YhIhVt8+8mmYm2C%x=pPC{<=O8c#&UxY*qwY|QW(7ApiKP~ zyr)WJmDcM&o1mO4kvjvjx_Xq*LCS=dF24bvn%Nqxya+zZV&;L+1y@~Ojm%oaKn_M8 zP}KR)-Y8_Y5UH1D79M57BRv#By;?*<-}%k>X#5-E#rTxDk0pPw8Jy~H2u}!`GML%W z1x{nb{Jw!<2>GnSAPi7WpQTP8`x!O7^2zMk^%m=pXQgilmyl}auk@dd9~}=djNA%M z*pF~X3mlL5XemGm77UExm?C3|QL}%rk@cB)=11n|evviIFru8)lU?Y7|EJ!t>eT{$!9P8r2hX?vGER7;X4xbGYnPr_S=ZTkW0IeyF`92Etd zEuvdDuD;HO{J^y^k5s-!)KmM$9m_keRG1BPKO0UkqqyzA@3V0l>>oOa%0!0PX_{OM zeAJ)F8+{mj$>Aix6S;l({-DjOBT zP@8b|2^V=j@oDEc!e{mQ0c1xyvnn4<4f1Z0=>I!C>!NY6*@fF;JT1IzV#X&)n+b`# zqWFCMDH6i3W4}N0{DJATz&I|0RR01M3=#Hi=Au0&6k{=a1H#D*q010S-84Wo>*7&E zqeVt-p8#G?h7v=sSOqH^euT-3Hi-GMG?5q2xI~#Vo-I_lUCc9;did^Rb7>V97lOE5 z*nPU~>`yR0gs6be8c-8gk5Z?nFuY7j2#K$z1h~GdxKx|s*E5={n-r?>Hmuc!XXVyk z<-`92Z2D)u{QrRehlTv-6hTgGS2MH{{J!iw4en8PjvNhw{U z&KJt{4tM@c=dFAO+J0}!#hd2cTDNY?qB?uL989xv!&K&UHG+P92P7nL6TK9&B)b7S zn*^7P$_d^8JAHRT1i(sKw`wH4R9b#Bx2IV2bUDofSlWCE+8D%`LxC*ABK;Q-)@a&K_oijk= zH-_6#67t9UmA}dPy!zOy3CG(zCu${V20dInj=cvuf<>61=?@emb}%j(w2lLI zDVj9C=d8KRv6mw0{SEAyF@@EO!aL$LB5)&`6LkxWy~Bm0>&W4(%F?XBm+M)#sN$ou zQ*j=+6u-ckxU0V1@UOl?+aN*EV6Rr)bNE_{{bo+7%Icjg;$Qd~%njsl_LZsuw1w-0SL{e*0e=~kJIDDfK`+*9kESn}N%nghROh_1 zJ%+7|n)Xm5i!IC;e{J)EH6!BSR2M`P+I+&C4i1XUulBj&sJlwNr<@C* z6MCC3608tfdbM}5bNvM4?h^E|4{;;{Z*CnQHn_)z)?9j2I4bm0Wf5`m0Z9nd$?b8k zZprUha@bNg4z~fEQN$r)YpUVF0gXoIiOJ~ME9M-8SeFD3!;$0Pl0RzLIY=}tXmcfn zaUxDr;;)~&biNQYsC^Ln#~|q6G1L_U)mO;coHiJ_Q0d`i(Yul%Z5>g9Rq`t7nHZTr zwAbxNJl@ty=RhdCO@z?4^?159*!yy_$}Q)Fi%u7~9kYxz6r4V)mVBISahCV6-NvY+ zOh+v9v*G!UjmaNa5%A#n4ab2znRL;)!})f@bDQ5qnH=Wtk53jyV|EkHMb9i_$EQI- zYXP)AlG^942f8qOHghya%|5L2)r2~c%GUUTpE0@~XyXx(x)%u-QEKG{XV^p06u2r^ zXOD;SJu?@bA4jfv(=FfBB~7DN3uD-*SwleD^)(eJ_fC>4@)$CZ|0~FT!tJE!{a10{ zZ`FlS&C=(sdXJ@wSBnh6P6^NVUHD5Iz<)QV&d>agpn7%#z!-?SpHM%c%7%N$a4gh2 z?K1)6cEsFpvXBm%k~ApsPi;pC@M0pf&sAsAi#(3=l?SuQm47Z|$3O!PayL+=>-m9heCT-Am(iJ@oAsVSHB8Ol z2wq@P-P@;txFH3ZIIcwF0O{;gZvt)+O`oQ{gK4Z8NjA(O&TM{r6Jn^g3G6Qfq)I?v zogn2>^#B@9WlB6~tM=x;N`uF^?5obXO%b=3_;@fh(vYE+?d@$5l<_a#Qv>>Tw|aN~ z-Iwhm1~~J1=HMW*+La-k4qS5_?p~!VM?R?*pna~ohSRcg`Ye5cCx7xY-8j};Z}TYz zKBdj%IZeO)80q?_=Cl3hEb9YyK3$wKmZ1fp&1!+{J%v2PuP$ zeMdn$p4rm-s}6*@lmaTVgFvc)6*_7-<{c$HuY>5 zL8lDYX<*4pD!8kdQFS6kJETNKqdSTytjX0UolHQFa#*V@h=*ZM-M@RP=}5VbZCy~#^}Y+HjEdTwb|kjs zXi+u}<+Z0^-~pUVIUfZRv&0admXMnzd!E;A2tV0b>EVQ3nDqg61fqL-BU;f7T z1ag|fhq#2}T#c?kvE?!vWa!_dQMX$EdBiQ5x<-}CcUp07-ZG!z-DT8RD?d6w{?TM9yFS9BGiRB%MM}G}j(C1v za`n4(Y47!`sEvyMdDm(~&Fa_9$7nHnKya6&0(6-&DiBBpwSQf?{ag(wCW7_~MX2A!0c3h5hk|6vAEF8CM1 zr#lV4knT0BM)yZ+f$DcOgRM7M8hvC?(B_+$Ws0xIA?d~*6(f#0&o`ZFAK!C{9SF6t z`uLGBl)nRHFG<xM>^sC4o6St`2pT0KSK)$Q4zwpx7_H#rJ01 zuhxL((Z=*SSG|OvH8#5Q?G46EsYvMZA8e;uCb*b9%7}KH7bwJmTN-wU*?J5xVa2Yh zQN8dPqF4I#Pv-_`&o!OP4&pI3=pMnAs)~E(eblPLUr6{UzjgKCttSZiud30~@EIuZ z1nt~_PqR*b+0Hx`1~tQ8B@3dra3B3OYppXsqrQWp3E;T+8)=4BP&AQ)G4_2T!67-( zxeO99ZbY@sa&JJ2)t^I3$LQy(V|Wv*?7m;F{$*V2;ShN(VOnv;FosPLEFO=+|5!X8 zJ+OG6C|XrpiznXKaAQ?f?_61LNlqAXwpwcyRrPXSFLlgrvVI>}yb#20%*0Nwh^*x+ zhEf>Pn_dQLMGxEv`tB(VV2&Fi;Bi33)8{ddC#-*M!onPn^H{t$Gk0u6Ud6EA`R>ip z=ltXYzBr48V~-Kgw1Qq{J?epV$64ghsXJ#t~U%|%+Z>voSQYBz1Yebw^z0FOYvD zGqLU83l`%`?p$;(k6Gi9XGH{7L|{b(RzzS$1QteMVFVUNU||H-seyHB_~)M*`WC>^ z@qg*SvUUDo=_;_+fMo+L8~8ud1{$(K61S>pKl1~eZN=*mU>U9YeGkDu#xSzJ6v*f^dQ79C-8ool3{0zm$7g|34F>0U$W>1>Oy8alN7YUI)?^Hi>n zmDMLqpKHV&;WT19s&>)l8Y7EwiiQKDlDdjao+2-ajCz%liTcE{sni?k76|A+5-d(-zTH3%#^(h{oE2{hA1)&Svh;Mle0c+;YQ4&Zk$#~7q*15o)2b<&qQssZqT%$!)JYDw3 zI(WBu+qa(P;peS(43SY_dyqG)NEe1ww?2<*fCJe!R9Qbmw8am9^ZmW;luLED#pWla zi_4qrRxd<5buf}d(0+*apj%_`RX~_)uD`QRHJqF!TXpgH2 zesx(-ECf174+^CoY`v-Vy=oJV!OLJsbwCgUK`NHykL)#TNW_DCI48B|RwiFx>BX_b zJAS2pV_xuOoBVZN!bJOxi!1RDHV@SyS8^0X2u7-!3~5pbaO!ToFWc@?lN6N}nA07{ z8|xm`wJRGD7$B{HfASR31$bfvnS9u-6ghh<&4AE~h^Vn2Y_*KKuS{5t$ZdQb1(>*o zjNeQC+S}y2NXx1`{zRPjNYnv99#Q)S_W}XQCNd;2$W$|5po=Rp|OB7rKCc0c(v}YrwLB|9fpfu@i&Bjuw$c zXW=AHAgYL!{4L4bYo`{fdPvzn*z{6OwNdZ67J6CsZe5-IgCrtD7?2Ke(U5JQ%t8H( z`FX@~EoAv{c*|W1pN)*it*LXz=}Jjv-%Tdv|x4&c=#yNa6ez8o~E*q}0{!>}z;lZDYsp0(y(laF0(~GbGDPUu+ zL9w(wOMn`!Wz737CU7EAATVXdPvWA<~&8*{h^`KY6z;dgy?#d97n4f2G{ojSG6i0csszYjqIEPgNy zDG9ezzn-HStRLU~G27N)rBuFh%MP#dk?<70!gp{Lf3uGgizf<$O8#ad>2D{L{_5Y` z)f2w&kcCdnjRe2j)IAywQFl16y0DhwegSEdy9%E^zNP9 zbA)|xg#c&|6cJ@uhC~b9GWfIg=oDN)`kSG;o1g2)WMyyo?B?|&4IU017jIPb=f&Jy z!}el_vzRc+&1X%@ybq9YcSC*1I{$RyF;qQlE=WrqQ?Fb)HA<^-8i(jFR>7!G*m>p` zTun@;T$}1crZ7z;PYT~p2`$#V_Skk2N1 zU882%)AhTvj+)T?p3y!U?SGmudt~{O{1=@rHjL9n+eJY+#-33o=3ecYOOpv`?r zKhC~G0YMdocY5Aw9GCqSlEO?b3VgkUfqcQhm=E(Ia%2aXtO5gBv<)^UE+6}Yiz#sz z*aDz5eJ#2g0@mj<@TA~G*5g_0!?FjKzp&y1D;~1;3)cR~!UHTkz`_G8Jix*OEIh!% z11vni!UHTkz`_G8Jix*OEIh!%11vni!UHTkz`_G8Jix*OEIh!%11vni!UHTkz`_G8 zJix*OEIh!%11vni!UHTkz`_G8Jix*OEIh!%11vni!UHTkz`_G8Jix*OEIh!%11vni z!UHTkz`_G8Jix*OEIh!%1OMCcKrxUgU~d3?2T9Y3s9WQ_o3F&qub(fjV|?20@a*M{ z((Q%wGAWOBW!7H7W@;|=d)(9GR#_-5nVq}F)~T_$lVWsE*EvL2%EyV9=EdZ}(bXBe z30}|{Lj$y2ucwq%w_DSps@jGfnW;3rGxsH9yaTYmw1MJnI3QQ|N{mS^DOqa{@+~3z zUf&?Z-s_ln^w{XCO#LT+uItH1yX{vOB9PRZh&f}5s)E;^fNZjAc*ziRQMbyWXy&b0 z`w3%DXZ>A&u$4%dHnAbhaPEnazU`_bWV{-S+&;xT29@NSCJ9yV^Ivs(`2%wwRi45Y zWW&k4%ph!5;7ALI5#(x8GUYUca(%@R`#PVP24B618A<?2Q~LFs$*vx*^tqLY?2XEtRw69J7w5~cz( zD@FZ|R)fsRjxgIOao-ouURd>q&fCoYeEVEIP$8kHH#CHeYsr+ZhQae9ZZANJs;$o$ z$cZl1Hv3Bn?`+Jw_c2b_zfU-wJ-tukg>U}{sf-u9+wXf_=n5uc@LCAcAZ&PMb$4A4 zA5)1qTI`8)s`IGNtLLuZG1=1PPcfM(-M28<+rho9MK^hH~+7b zh5S32Task CTask 1Task 2“ab”Spam?0011Model 1Model 2spamemailemailab>0.8ab0.8spamemailour>1.2our1.2Model CspecificationspecificationLearnwareCLearnware2Learnware1specificationLearnware MarketSubmitting StageDeploying StageDevelopersStandard learnware formatRequire-mentReturnSearchSubmitApply returned models directlyAdapt modelson user data(optional) \ No newline at end of file diff --git a/docs/start/intro.rst b/docs/start/intro.rst index 02955c4..dd6ecf5 100644 --- a/docs/start/intro.rst +++ b/docs/start/intro.rst @@ -65,7 +65,7 @@ Procedure of Learnware Paradigm - **Submitting Stage**: Developers voluntarily submit various learnwares to the learnware dock system, and the system conducts quality checks and further organization of these learnwares. - **Deploying Stage**: When users submit task requirements, the learnware dock system automatically selects whether to recommend a single learnware or a combination of multiple learnwares and provides efficient deployment methods. Whether it's a single learnware or a combination of multiple learnwares, the system offers convenient learnware reuse interfaces. -.. image:: ../_static/img/learnware_market.jpg +.. image:: ../_static/img/learnware_market.svg :align: center From ada579eb59ca1eaeee7c708de1fb01f55a3b8c24 Mon Sep 17 00:00:00 2001 From: Peng Tan Date: Wed, 27 Dec 2023 22:20:25 +0800 Subject: [PATCH 06/56] [DOC] modify structure --- docs/start/intro.rst | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/docs/start/intro.rst b/docs/start/intro.rst index dd6ecf5..ac99313 100644 --- a/docs/start/intro.rst +++ b/docs/start/intro.rst @@ -9,7 +9,6 @@ The ``Learnware`` packag is designed to be easy to use and extend, it elegantly The ``Learnware`` package serves as the engine for the Beimingwu System, it also can be used for experiements related to the learnware. -================ What is Learnware ? ================ @@ -22,15 +21,12 @@ The learnware specification consists of "semantic specification" and "statistica Learnware specifications describe the model's capabilities, enabling the model to be identified and reused by future users who may know nothing about the learnware in advance. -.. image:: ../_static/img/learnware_paradigm.jpg - :align: center - -Instead of building a model from scratch, users can submit their requirements to the learnware market, which then identifies and deploys helpful learnware(s) based on the specifications. Users can apply the learnware directly, adapt it using their data, or exploit it in other ways to improve their model. This process is more efficient and less expensive than building a model from scratch. - -================ Why do we need Learnware ? ================ +The Benefits of Learnware Paradigm +----------------- + Machine learning has achieved great success in many fields but still faces various challenges, such as the need for extensive training data and advanced training techniques, the difficulty of continuous learning, the risk of catastrophic forgetting, and the leakage of data privacy. Although there are many efforts focusing on one of these issues separately, they are entangled, and solving one problem may exacerbate others. The learnware paradigm aimss to address many of these challenges through a unified framework. @@ -59,7 +55,14 @@ Although there are many efforts focusing on one of these issues separately, they | | large models and the carbon footprint. | +-----------------------+-----------------------------------------------------------------------------------------------+ -================ +How to Solve Future Tasks with Learnware Paradigm? +-------------- + +.. image:: ../_static/img/learnware_paradigm.jpg + :align: center + +Instead of building a model from scratch, users can submit their requirements to the learnware market, which then identifies and deploys helpful learnware(s) based on the specifications. Users can apply the learnware directly, adapt it using their data, or exploit it in other ways to improve their model. This process is more efficient and less expensive than building a model from scratch. + Procedure of Learnware Paradigm ================ - **Submitting Stage**: Developers voluntarily submit various learnwares to the learnware dock system, and the system conducts quality checks and further organization of these learnwares. @@ -69,7 +72,6 @@ Procedure of Learnware Paradigm :align: center -================ Learnware Package Design ================ From a1ae56733572be5505866fb8d8d255f2e0ca87f7 Mon Sep 17 00:00:00 2001 From: shihy Date: Wed, 27 Dec 2023 22:38:50 +0800 Subject: [PATCH 07/56] [DOC] Modify readme.md for Image Example --- examples/dataset_image_workflow/README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/examples/dataset_image_workflow/README.md b/examples/dataset_image_workflow/README.md index 6f6161f..c1f6ff9 100644 --- a/examples/dataset_image_workflow/README.md +++ b/examples/dataset_image_workflow/README.md @@ -37,10 +37,12 @@ With the experimental setup above, we evaluated the performance of RKME Image by | Job Selector Reuse (Multiple) | 0.534 | | Average Ensemble Reuse (Multiple) | 0.676 | -In some specific settings, the user will have a small number of labeled samples. In such settings, learning the weight of selected learnwares on a limited number of labeled samples can result in a better performance than training directly on a limited number of labeled samples. - ### Labelled Sample Scenario +In some specific settings, the user will have a small number of labeled samples. In such settings, learning the weight of selected learnwares on a limited number of labeled samples can result in a better performance than training directly on a limited number of labeled samples. +

\ No newline at end of file + + +Note that in labelled sample scenario, the labelled samples are repeatedly sampled 3 to 10 times, in order to reduce the estimation error in accuracy due to random sampling. \ No newline at end of file From c8dcca687f688c3a9db77137021166fe85458685 Mon Sep 17 00:00:00 2001 From: Peng Tan Date: Wed, 27 Dec 2023 22:43:55 +0800 Subject: [PATCH 08/56] [DOC] add hyperlink --- docs/start/intro.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/start/intro.rst b/docs/start/intro.rst index ac99313..8f87ae9 100644 --- a/docs/start/intro.rst +++ b/docs/start/intro.rst @@ -3,11 +3,11 @@ Introduction ================ -The learnware paradigm attempts to help the user reuse existed well-trained models to solve their problems instead of starting from scratch. The ``Learnware`` package provides the basic implementation of the central concepts and procedures for the learnware paradigm. +The learnware paradigm attempts to help the user reuse existed well-trained models to solve their problems instead of starting from scratch. The ``Learnware`` package offers a fundamental implementation of the central concepts and procedures for the learnware paradigm. -The ``Learnware`` packag is designed to be easy to use and extend, it elegantly organizes related concepts and core functionalities together and is highly scalable, allowing for the easy integration of various new features and techniques in the future. +The ``Learnware`` packag effectively organizes related concepts and core functionalities of the learnware paradigm while maintaining high scalability. This design enables effortless integration of various new features and techniques in the future. -The ``Learnware`` package serves as the engine for the Beimingwu System, it also can be used for experiements related to the learnware. +The ``Learnware`` package serves as the engine for the `Beimingwu System `_ and can also be utilized for experiments related to learnware. What is Learnware ? ================ From cca0b695155ec99231dde9ffe31c3055d771f9c1 Mon Sep 17 00:00:00 2001 From: zouxiaochuan Date: Wed, 27 Dec 2023 13:29:30 +0800 Subject: [PATCH 09/56] [MNT] add conda full path in installing environment --- learnware/client/utils.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/learnware/client/utils.py b/learnware/client/utils.py index e738331..1db8449 100644 --- a/learnware/client/utils.py +++ b/learnware/client/utils.py @@ -29,7 +29,7 @@ def system_execute(args, timeout=None, env=None, stdout=subprocess.DEVNULL, stde def remove_enviroment(conda_env): system_execute(args=["conda", "env", "remove", "-n", f"{conda_env}"]) -def install_environment(learnware_dirpath, conda_env): +def install_environment(learnware_dirpath, conda_env, conda_prefix=None): """Install environment of a learnware Parameters @@ -38,12 +38,22 @@ def install_environment(learnware_dirpath, conda_env): Path of the learnware folder conda_env : str a new conda environment will be created with the given name; + conda_prefix: str + install env in a specific location, not default env path; Raises ------ Exception Lack of the environment configuration file. """ + + if conda_prefix is not None: + args_location = ['--prefix', conda_prefix] + conda_env = conda_prefix + else: + args_location = ['--name', conda_env] + pass + with tempfile.TemporaryDirectory(prefix="learnware_") as tempdir: logger.info(f"learnware_dir namelist: {os.listdir(learnware_dirpath)}") if "environment.yaml" in os.listdir(learnware_dirpath): @@ -53,7 +63,7 @@ def install_environment(learnware_dirpath, conda_env): filter_nonexist_conda_packages_file(yaml_file=yaml_path, output_yaml_file=yaml_path_filter) # create environment logger.info(f"create conda env [{conda_env}] according to .yaml file") - system_execute(args=["conda", "env", "create", "--name", f"{conda_env}", "--file", f"{yaml_path_filter}"]) + system_execute(args=["conda", "env", "create"] + args_location + ["--file", f"{yaml_path_filter}"]) elif "requirements.txt" in os.listdir(learnware_dirpath): requirements_path: str = os.path.join(learnware_dirpath, "requirements.txt") @@ -61,14 +71,13 @@ def install_environment(learnware_dirpath, conda_env): logger.info(f"checking the available pip packages for {conda_env}") filter_nonexist_pip_packages_file(requirements_file=requirements_path, output_file=requirements_path_filter) logger.info(f"create empty conda env [{conda_env}]") - system_execute(args=["conda", "create", "-y", "--name", f"{conda_env}", "python=3.8"]) + system_execute(args=["conda", "create", "-y"] + args_location + ["python=3.8"]) logger.info(f"install pip requirements for conda env [{conda_env}]") system_execute( args=[ "conda", "run", - "-n", - f"{conda_env}", + ] + args_location + [ "--no-capture-output", "python", "-m", @@ -86,8 +95,7 @@ def install_environment(learnware_dirpath, conda_env): args=[ "conda", "run", - "-n", - f"{conda_env}", + ] + args_location + [ "--no-capture-output", "python", "-m", From 9438dad4bf11b6c347befa90015aad0bc5f9c5a0 Mon Sep 17 00:00:00 2001 From: Gene Date: Thu, 28 Dec 2023 14:35:59 +0800 Subject: [PATCH 10/56] [MNT] format code --- learnware/client/utils.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/learnware/client/utils.py b/learnware/client/utils.py index 1db8449..f518f69 100644 --- a/learnware/client/utils.py +++ b/learnware/client/utils.py @@ -22,13 +22,14 @@ def system_execute(args, timeout=None, env=None, stdout=subprocess.DEVNULL, stde errmsg = err.stderr.decode() logger.warning(f"System Execute Error: {errmsg}") raise err - + return com_process def remove_enviroment(conda_env): system_execute(args=["conda", "env", "remove", "-n", f"{conda_env}"]) + def install_environment(learnware_dirpath, conda_env, conda_prefix=None): """Install environment of a learnware @@ -46,14 +47,13 @@ def install_environment(learnware_dirpath, conda_env, conda_prefix=None): Exception Lack of the environment configuration file. """ - if conda_prefix is not None: - args_location = ['--prefix', conda_prefix] + args_location = ["--prefix", conda_prefix] conda_env = conda_prefix else: - args_location = ['--name', conda_env] + args_location = ["--name", conda_env] pass - + with tempfile.TemporaryDirectory(prefix="learnware_") as tempdir: logger.info(f"learnware_dir namelist: {os.listdir(learnware_dirpath)}") if "environment.yaml" in os.listdir(learnware_dirpath): @@ -63,7 +63,7 @@ def install_environment(learnware_dirpath, conda_env, conda_prefix=None): filter_nonexist_conda_packages_file(yaml_file=yaml_path, output_yaml_file=yaml_path_filter) # create environment logger.info(f"create conda env [{conda_env}] according to .yaml file") - system_execute(args=["conda", "env", "create"] + args_location + ["--file", f"{yaml_path_filter}"]) + system_execute(args=["conda", "env", "create"] + args_location + ["--file", f"{yaml_path_filter}"]) elif "requirements.txt" in os.listdir(learnware_dirpath): requirements_path: str = os.path.join(learnware_dirpath, "requirements.txt") @@ -77,7 +77,9 @@ def install_environment(learnware_dirpath, conda_env, conda_prefix=None): args=[ "conda", "run", - ] + args_location + [ + ] + + args_location + + [ "--no-capture-output", "python", "-m", @@ -95,7 +97,9 @@ def install_environment(learnware_dirpath, conda_env, conda_prefix=None): args=[ "conda", "run", - ] + args_location + [ + ] + + args_location + + [ "--no-capture-output", "python", "-m", From f8be9fb66aef8898c2fa60d4762d0c7bf357c676 Mon Sep 17 00:00:00 2001 From: Gene Date: Thu, 28 Dec 2023 15:33:00 +0800 Subject: [PATCH 11/56] [DOC] modify details in intro --- docs/start/intro.rst | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/docs/start/intro.rst b/docs/start/intro.rst index 8f87ae9..fa153d2 100644 --- a/docs/start/intro.rst +++ b/docs/start/intro.rst @@ -3,29 +3,29 @@ Introduction ================ -The learnware paradigm attempts to help the user reuse existed well-trained models to solve their problems instead of starting from scratch. The ``Learnware`` package offers a fundamental implementation of the central concepts and procedures for the learnware paradigm. +The ``learnware`` package provides a fundamental implementation of the central concepts and procedures for the learnware paradigm, which is a new paradigm aimed at enabling users to reuse existed well-trained models to solve their AI tasks instead of starting from scratch. -The ``Learnware`` packag effectively organizes related concepts and core functionalities of the learnware paradigm while maintaining high scalability. This design enables effortless integration of various new features and techniques in the future. +Moreover, the package's well-structured design ensures high scalability and allows for the effortless integration of various new features and techniques in the future. -The ``Learnware`` package serves as the engine for the `Beimingwu System `_ and can also be utilized for experiments related to learnware. +In addition, the ``learnware`` package serves as the engine for the `Beimingwu System `_ and can be effectively employed for conducting experiments related to learnware. -What is Learnware ? -================ +What is Learnware? +==================== A learnware consists of high-performance machine learning models and specifications that characterize the models, i.e., "Learnware = Model + Specification." The learnware specification consists of "semantic specification" and "statistical specification": -- semantic specification describes the type and functionality of the model through text. -- statistical specification characterizes the statistical information contained in the model using various machine learning techniques. +- ``Semantic Specification``: Describe the type and functionality of the model through text. +- ``Statistical Specification``: Characterize the statistical information contained in the model using various machine learning techniques. Learnware specifications describe the model's capabilities, enabling the model to be identified and reused by future users who may know nothing about the learnware in advance. -Why do we need Learnware ? -================ +Why do we need Learnware? +============================ The Benefits of Learnware Paradigm ------------------ +------------------------------------- Machine learning has achieved great success in many fields but still faces various challenges, such as the need for extensive training data and advanced training techniques, the difficulty of continuous learning, the risk of catastrophic forgetting, and the leakage of data privacy. @@ -56,23 +56,24 @@ Although there are many efforts focusing on one of these issues separately, they +-----------------------+-----------------------------------------------------------------------------------------------+ How to Solve Future Tasks with Learnware Paradigm? --------------- +---------------------------------------------------- .. image:: ../_static/img/learnware_paradigm.jpg :align: center -Instead of building a model from scratch, users can submit their requirements to the learnware market, which then identifies and deploys helpful learnware(s) based on the specifications. Users can apply the learnware directly, adapt it using their data, or exploit it in other ways to improve their model. This process is more efficient and less expensive than building a model from scratch. +Instead of building a model from scratch, users can submit their requirements to the learnware market, which then identifies and deploys helpful learnware(s) based on the specifications. Users can apply the learnware directly, adapt it using their data, or exploit it in other ways to improve their models. This process is more efficient and less expensive than building a model from scratch. + Procedure of Learnware Paradigm -================ -- **Submitting Stage**: Developers voluntarily submit various learnwares to the learnware dock system, and the system conducts quality checks and further organization of these learnwares. -- **Deploying Stage**: When users submit task requirements, the learnware dock system automatically selects whether to recommend a single learnware or a combination of multiple learnwares and provides efficient deployment methods. Whether it's a single learnware or a combination of multiple learnwares, the system offers convenient learnware reuse interfaces. +================================== +- ``Submitting Stage``: Developers voluntarily submit various learnwares to the learnware market, and the system conducts quality checks and further organization of these learnwares. +- ``Deploying Stage``: When users submit task requirements, the learnware market automatically selects whether to recommend a single learnware or a combination of multiple learnwares and provides efficient deployment methods. Whether it's a single learnware or a combination of multiple learnwares, the system offers convenient learnware reuse interfaces. .. image:: ../_static/img/learnware_market.svg :align: center Learnware Package Design -================ +========================== TBD by xiaodong. From 5c307d003c509241566fef64e54f7bf111a47f71 Mon Sep 17 00:00:00 2001 From: nju-xy <1582857295@qq.com> Date: Thu, 28 Dec 2023 16:34:14 +0800 Subject: [PATCH 12/56] [DOC] update image user_num in exp doc --- docs/start/exp.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/start/exp.rst b/docs/start/exp.rst index 942448d..a3c79f1 100644 --- a/docs/start/exp.rst +++ b/docs/start/exp.rst @@ -127,7 +127,7 @@ Image Experiment For the CIFAR-10 dataset, we sampled the training set unevenly by category and constructed unbalanced training datasets for the 50 learnwares that contained only some of the categories. This makes it unlikely that there exists any learnware in the learnware market that can accurately handle all categories of data; only the learnware whose training data is closest to the data distribution of the target task is likely to perform well on the target task. Specifically, the probability of each category being sampled obeys a random multinomial distribution, with a non-zero probability of sampling on only 4 categories, and the sampling ratio is 0.4: 0.4: 0.1: 0.1. Ultimately, the training set for each learnware contains 12,000 samples covering the data of 4 categories in CIFAR-10. -We constructed 50 target tasks using data from the test set of CIFAR-10. Similar to constructing the training set for the learnwares, in order to allow for some variation between tasks, we sampled the test set unevenly. Specifically, the probability of each category being sampled obeys a random multinomial distribution, with non-zero sampling probability on 6 categories, and the sampling ratio is 0.3: 0.3: 0.1: 0.1: 0.1: 0.1. Ultimately, each target task contains 3000 samples covering the data of 6 categories in CIFAR-10. +We constructed 100 target tasks using data from the test set of CIFAR-10. Similar to constructing the training set for the learnwares, in order to allow for some variation between tasks, we sampled the test set unevenly. Specifically, the probability of each category being sampled obeys a random multinomial distribution, with non-zero sampling probability on 6 categories, and the sampling ratio is 0.3: 0.3: 0.1: 0.1: 0.1: 0.1. Ultimately, each target task contains 3000 samples covering the data of 6 categories in CIFAR-10. With this experimental setup, we evaluated the performance of RKME Image by calculating the mean accuracy across all users. From e7c441e0064448f4f93c85fdbe0fe726901f6c6e Mon Sep 17 00:00:00 2001 From: nju-xy <1582857295@qq.com> Date: Thu, 28 Dec 2023 16:47:20 +0800 Subject: [PATCH 13/56] [MNT] add skip_test flag in examples --- examples/dataset_image_workflow/workflow.py | 252 ++++++++++---------- examples/dataset_text_workflow/workflow.py | 16 +- 2 files changed, 135 insertions(+), 133 deletions(-) diff --git a/examples/dataset_image_workflow/workflow.py b/examples/dataset_image_workflow/workflow.py index a2d3f9b..2bfbe4d 100644 --- a/examples/dataset_image_workflow/workflow.py +++ b/examples/dataset_image_workflow/workflow.py @@ -77,10 +77,9 @@ class ImageDatasetWorkflow: logger.info("Total Item: %d" % (len(self.image_market))) - def image_example(self, rebuild=False): + def image_example(self, rebuild=False, skip_test=True): np.random.seed(1) random.seed(1) - self._prepare_market(rebuild) self.n_labeled_list = [100, 200, 500, 1000, 2000, 4000] self.repeated_list = [10, 10, 10, 3, 3, 3] device = choose_device(0) @@ -99,142 +98,145 @@ class ImageDatasetWorkflow: improve_list = [] job_selector_score_list = [] ensemble_score_list = [] - all_learnwares = self.image_market.get_learnwares() - for i in range(self.image_benchmark.user_num): - test_x, test_y = self.image_benchmark.get_test_data(user_ids=i) - train_x, train_y = self.image_benchmark.get_train_data(user_ids=i) + if not skip_test: + self._prepare_market(rebuild) + all_learnwares = self.image_market.get_learnwares() - test_x = torch.from_numpy(test_x) - test_y = torch.from_numpy(test_y) - test_dataset = TensorDataset(test_x, test_y) + for i in range(image_benchmark_config.user_num): + test_x, test_y = self.image_benchmark.get_test_data(user_ids=i) + train_x, train_y = self.image_benchmark.get_train_data(user_ids=i) - user_stat_spec = generate_stat_spec(type="image", X=test_x, whitening=False) - user_info = BaseUserInfo(semantic_spec=self.user_semantic, stat_info={user_stat_spec.type: user_stat_spec}) - logger.info("Searching Market for user: %d" % (i)) + test_x = torch.from_numpy(test_x) + test_y = torch.from_numpy(test_y) + test_dataset = TensorDataset(test_x, test_y) - search_result = self.image_market.search_learnware(user_info) - single_result = search_result.get_single_results() - multiple_result = search_result.get_multiple_results() + user_stat_spec = generate_stat_spec(type="image", X=test_x, whitening=False) + user_info = BaseUserInfo(semantic_spec=self.user_semantic, stat_info={user_stat_spec.type: user_stat_spec}) + logger.info("Searching Market for user: %d" % (i)) - print(f"search result of user{i}:") - print( - f"single model num: {len(single_result)}, max_score: {single_result[0].score}, min_score: {single_result[-1].score}" - ) + search_result = self.image_market.search_learnware(user_info) + single_result = search_result.get_single_results() + multiple_result = search_result.get_multiple_results() - acc_list = [] - for idx in range(len(all_learnwares)): - learnware = all_learnwares[idx] - loss, acc = evaluate(learnware, test_dataset) - acc_list.append(acc) - - learnware = single_result[0].learnware - best_loss, best_acc = evaluate(learnware, test_dataset) - best_list.append(np.max(acc_list)) - select_list.append(best_acc) - avg_list.append(np.mean(acc_list)) - improve_list.append((best_acc - np.mean(acc_list)) / np.mean(acc_list)) - print(f"market mean accuracy: {np.mean(acc_list)}, market best accuracy: {np.max(acc_list)}") - print( - f"Top1-score: {single_result[0].score}, learnware_id: {single_result[0].learnware.id}, acc: {best_acc}" - ) + print(f"search result of user{i}:") + print( + f"single model num: {len(single_result)}, max_score: {single_result[0].score}, min_score: {single_result[-1].score}" + ) - if len(multiple_result) > 0: - mixture_id = " ".join([learnware.id for learnware in multiple_result[0].learnwares]) - print(f"mixture_score: {multiple_result[0].score}, mixture_learnware: {mixture_id}") - mixture_learnware_list = multiple_result[0].learnwares - else: - mixture_learnware_list = [single_result[0].learnware] - - # test reuse (job selector) - reuse_job_selector = JobSelectorReuser(learnware_list=mixture_learnware_list, use_herding=False) - job_loss, job_acc = evaluate(reuse_job_selector, test_dataset) - job_selector_score_list.append(job_acc) - print(f"mixture reuse accuracy (job selector): {job_acc}") - - # test reuse (ensemble) - reuse_ensemble = AveragingReuser(learnware_list=mixture_learnware_list, mode="vote_by_prob") - ensemble_loss, ensemble_acc = evaluate(reuse_ensemble, test_dataset) - ensemble_score_list.append(ensemble_acc) - print(f"mixture reuse accuracy (ensemble): {ensemble_acc}\n") - - user_model_score_mat = [] - pruning_score_mat = [] - single_score_mat = [] - - for n_label, repeated in zip(self.n_labeled_list, self.repeated_list): - user_model_score_list, reuse_pruning_score_list = [], [] - if n_label > len(train_x): - n_label = len(train_x) - for _ in range(repeated): - x_train, y_train = zip(*random.sample(list(zip(train_x, train_y)), k=n_label)) - x_train = np.array(list(x_train)) - y_train = np.array(list(y_train)) - - x_train = torch.from_numpy(x_train) - y_train = torch.from_numpy(y_train) - sampled_dataset = TensorDataset(x_train, y_train) - - mode_save_path = os.path.abspath(os.path.join(self.model_path, "model.pth")) - model = ConvModel( - channel=x_train.shape[1], im_size=(x_train.shape[2], x_train.shape[3]), n_random_features=10 - ).to(device) - train_model( - model, - sampled_dataset, - sampled_dataset, - mode_save_path, - epochs=35, - batch_size=128, - device=device, - verbose=False, - ) - model.load_state_dict(torch.load(mode_save_path)) - _, user_model_acc = evaluate(model, test_dataset, distribution=True) - user_model_score_list.append(user_model_acc) - - reuse_pruning = EnsemblePruningReuser(learnware_list=mixture_learnware_list, mode="classification") - reuse_pruning.fit(x_train, y_train) - _, pruning_acc = evaluate(reuse_pruning, test_dataset, distribution=False) - reuse_pruning_score_list.append(pruning_acc) - - single_score_mat.append([best_acc] * repeated) - user_model_score_mat.append(user_model_score_list) - pruning_score_mat.append(reuse_pruning_score_list) + acc_list = [] + for idx in range(len(all_learnwares)): + learnware = all_learnwares[idx] + loss, acc = evaluate(learnware, test_dataset) + acc_list.append(acc) + + learnware = single_result[0].learnware + best_loss, best_acc = evaluate(learnware, test_dataset) + best_list.append(np.max(acc_list)) + select_list.append(best_acc) + avg_list.append(np.mean(acc_list)) + improve_list.append((best_acc - np.mean(acc_list)) / np.mean(acc_list)) + print(f"market mean accuracy: {np.mean(acc_list)}, market best accuracy: {np.max(acc_list)}") print( - f"user_label_num: {n_label}, user_acc: {np.mean(user_model_score_mat[-1])}, pruning_acc: {np.mean(pruning_score_mat[-1])}" + f"Top1-score: {single_result[0].score}, learnware_id: {single_result[0].learnware.id}, acc: {best_acc}" ) - logger.info(f"Saving Curves for User_{i}") - user_curves_data = (single_score_mat, user_model_score_mat, pruning_score_mat) - with open(os.path.join(self.curve_path, f"curve{str(i)}.pkl"), "wb") as f: - pickle.dump(user_curves_data, f) - - logger.info( - "Accuracy of selected learnware: %.3f +/- %.3f, Average performance: %.3f +/- %.3f, Best performance: %.3f +/- %.3f" - % ( - np.mean(select_list), - np.std(select_list), - np.mean(avg_list), - np.std(avg_list), - np.mean(best_list), - np.std(best_list), + if len(multiple_result) > 0: + mixture_id = " ".join([learnware.id for learnware in multiple_result[0].learnwares]) + print(f"mixture_score: {multiple_result[0].score}, mixture_learnware: {mixture_id}") + mixture_learnware_list = multiple_result[0].learnwares + else: + mixture_learnware_list = [single_result[0].learnware] + + # test reuse (job selector) + reuse_job_selector = JobSelectorReuser(learnware_list=mixture_learnware_list, use_herding=False) + job_loss, job_acc = evaluate(reuse_job_selector, test_dataset) + job_selector_score_list.append(job_acc) + print(f"mixture reuse accuracy (job selector): {job_acc}") + + # test reuse (ensemble) + reuse_ensemble = AveragingReuser(learnware_list=mixture_learnware_list, mode="vote_by_prob") + ensemble_loss, ensemble_acc = evaluate(reuse_ensemble, test_dataset) + ensemble_score_list.append(ensemble_acc) + print(f"mixture reuse accuracy (ensemble): {ensemble_acc}\n") + + user_model_score_mat = [] + pruning_score_mat = [] + single_score_mat = [] + + for n_label, repeated in zip(self.n_labeled_list, self.repeated_list): + user_model_score_list, reuse_pruning_score_list = [], [] + if n_label > len(train_x): + n_label = len(train_x) + for _ in range(repeated): + x_train, y_train = zip(*random.sample(list(zip(train_x, train_y)), k=n_label)) + x_train = np.array(list(x_train)) + y_train = np.array(list(y_train)) + + x_train = torch.from_numpy(x_train) + y_train = torch.from_numpy(y_train) + sampled_dataset = TensorDataset(x_train, y_train) + + mode_save_path = os.path.abspath(os.path.join(self.model_path, "model.pth")) + model = ConvModel( + channel=x_train.shape[1], im_size=(x_train.shape[2], x_train.shape[3]), n_random_features=10 + ).to(device) + train_model( + model, + sampled_dataset, + sampled_dataset, + mode_save_path, + epochs=35, + batch_size=128, + device=device, + verbose=False, + ) + model.load_state_dict(torch.load(mode_save_path)) + _, user_model_acc = evaluate(model, test_dataset, distribution=True) + user_model_score_list.append(user_model_acc) + + reuse_pruning = EnsemblePruningReuser(learnware_list=mixture_learnware_list, mode="classification") + reuse_pruning.fit(x_train, y_train) + _, pruning_acc = evaluate(reuse_pruning, test_dataset, distribution=False) + reuse_pruning_score_list.append(pruning_acc) + + single_score_mat.append([best_acc] * repeated) + user_model_score_mat.append(user_model_score_list) + pruning_score_mat.append(reuse_pruning_score_list) + print( + f"user_label_num: {n_label}, user_acc: {np.mean(user_model_score_mat[-1])}, pruning_acc: {np.mean(pruning_score_mat[-1])}" + ) + + logger.info(f"Saving Curves for User_{i}") + user_curves_data = (single_score_mat, user_model_score_mat, pruning_score_mat) + with open(os.path.join(self.curve_path, f"curve{str(i)}.pkl"), "wb") as f: + pickle.dump(user_curves_data, f) + + logger.info( + "Accuracy of selected learnware: %.3f +/- %.3f, Average performance: %.3f +/- %.3f, Best performance: %.3f +/- %.3f" + % ( + np.mean(select_list), + np.std(select_list), + np.mean(avg_list), + np.std(avg_list), + np.mean(best_list), + np.std(best_list), + ) + ) + logger.info("Average performance improvement: %.3f" % (np.mean(improve_list))) + logger.info( + "Average Job Selector Reuse Performance: %.3f +/- %.3f" + % (np.mean(job_selector_score_list), np.std(job_selector_score_list)) + ) + logger.info( + "Averaging Ensemble Reuse Performance: %.3f +/- %.3f" + % (np.mean(ensemble_score_list), np.std(ensemble_score_list)) ) - ) - logger.info("Average performance improvement: %.3f" % (np.mean(improve_list))) - logger.info( - "Average Job Selector Reuse Performance: %.3f +/- %.3f" - % (np.mean(job_selector_score_list), np.std(job_selector_score_list)) - ) - logger.info( - "Averaging Ensemble Reuse Performance: %.3f +/- %.3f" - % (np.mean(ensemble_score_list), np.std(ensemble_score_list)) - ) pruning_curves_data, user_model_curves_data = [], [] total_user_model_score_mat = [np.zeros(self.repeated_list[i]) for i in range(len(self.n_labeled_list))] total_pruning_score_mat = [np.zeros(self.repeated_list[i]) for i in range(len(self.n_labeled_list))] - for user_idx in range(self.image_benchmark.user_num): + for user_idx in range(image_benchmark_config.user_num): with open(os.path.join(self.curve_path, f"curve{str(user_idx)}.pkl"), "rb") as f: user_curves_data = pickle.load(f) (single_score_mat, user_model_score_mat, pruning_score_mat) = user_curves_data @@ -244,8 +246,8 @@ class ImageDatasetWorkflow: total_pruning_score_mat[i] += 1 - np.array(pruning_score_mat[i]) / 100 for i in range(len(self.n_labeled_list)): - total_user_model_score_mat[i] /= self.image_benchmark.user_num - total_pruning_score_mat[i] /= self.image_benchmark.user_num + total_user_model_score_mat[i] /= image_benchmark_config.user_num + total_pruning_score_mat[i] /= image_benchmark_config.user_num user_model_curves_data.append( (np.mean(total_user_model_score_mat[i]), np.std(total_user_model_score_mat[i])) ) diff --git a/examples/dataset_text_workflow/workflow.py b/examples/dataset_text_workflow/workflow.py index 21ad9b0..5a03a2f 100644 --- a/examples/dataset_text_workflow/workflow.py +++ b/examples/dataset_text_workflow/workflow.py @@ -103,7 +103,7 @@ class TextDatasetWorkflow: ensemble_score_list = [] all_learnwares = self.text_market.get_learnwares() - for i in range(self.text_benchmark.user_num): + for i in range(text_benchmark_config.user_num): user_data, user_label = self.text_benchmark.get_test_data(user_ids=i) user_stat_spec = RKMETextSpecification() @@ -183,19 +183,19 @@ class TextDatasetWorkflow: % (np.mean(ensemble_score_list), np.std(ensemble_score_list)) ) - def labeled_text_example(self, rebuild=False, train_flag=True): + def labeled_text_example(self, rebuild=False, skip_test=False): self.n_labeled_list = [100, 200, 500, 1000, 2000, 4000] self.repeated_list = [10, 10, 10, 3, 3, 3] self.root_path = os.path.dirname(os.path.abspath(__file__)) self.fig_path = os.path.join(self.root_path, "figs") self.curve_path = os.path.join(self.root_path, "curves") - self._prepare_market(rebuild) - if train_flag: + if not skip_test: + self._prepare_market(rebuild) os.makedirs(self.fig_path, exist_ok=True) os.makedirs(self.curve_path, exist_ok=True) - for i in range(self.text_benchmark.user_num): + for i in range(text_benchmark_config.user_num): user_model_score_mat = [] pruning_score_mat = [] single_score_mat = [] @@ -268,7 +268,7 @@ class TextDatasetWorkflow: pruning_curves_data, user_model_curves_data = [], [] total_user_model_score_mat = [np.zeros(self.repeated_list[i]) for i in range(len(self.n_labeled_list))] total_pruning_score_mat = [np.zeros(self.repeated_list[i]) for i in range(len(self.n_labeled_list))] - for user_idx in range(self.text_benchmark.user_num): + for user_idx in range(text_benchmark_config.user_num): with open(os.path.join(self.curve_path, f"curve{str(user_idx)}.pkl"), "rb") as f: user_curves_data = pickle.load(f) (single_score_mat, user_model_score_mat, pruning_score_mat) = user_curves_data @@ -278,8 +278,8 @@ class TextDatasetWorkflow: total_pruning_score_mat[i] += 1 - np.array(pruning_score_mat[i]) for i in range(len(self.n_labeled_list)): - total_user_model_score_mat[i] /= self.text_benchmark.user_num - total_pruning_score_mat[i] /= self.text_benchmark.user_num + total_user_model_score_mat[i] /= text_benchmark_config.user_num + total_pruning_score_mat[i] /= text_benchmark_config.user_num user_model_curves_data.append( (np.mean(total_user_model_score_mat[i]), np.std(total_user_model_score_mat[i])) ) From 0ac4c577f4bf58dafa721de8c30969ca9fcba2d9 Mon Sep 17 00:00:00 2001 From: Gene Date: Thu, 28 Dec 2023 17:20:33 +0800 Subject: [PATCH 14/56] [FIX] fix skip_test default value --- examples/dataset_image_workflow/workflow.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/examples/dataset_image_workflow/workflow.py b/examples/dataset_image_workflow/workflow.py index 2bfbe4d..dbe293a 100644 --- a/examples/dataset_image_workflow/workflow.py +++ b/examples/dataset_image_workflow/workflow.py @@ -77,7 +77,7 @@ class ImageDatasetWorkflow: logger.info("Total Item: %d" % (len(self.image_market))) - def image_example(self, rebuild=False, skip_test=True): + def image_example(self, rebuild=False, skip_test=False): np.random.seed(1) random.seed(1) self.n_labeled_list = [100, 200, 500, 1000, 2000, 4000] @@ -112,7 +112,9 @@ class ImageDatasetWorkflow: test_dataset = TensorDataset(test_x, test_y) user_stat_spec = generate_stat_spec(type="image", X=test_x, whitening=False) - user_info = BaseUserInfo(semantic_spec=self.user_semantic, stat_info={user_stat_spec.type: user_stat_spec}) + user_info = BaseUserInfo( + semantic_spec=self.user_semantic, stat_info={user_stat_spec.type: user_stat_spec} + ) logger.info("Searching Market for user: %d" % (i)) search_result = self.image_market.search_learnware(user_info) @@ -195,7 +197,9 @@ class ImageDatasetWorkflow: _, user_model_acc = evaluate(model, test_dataset, distribution=True) user_model_score_list.append(user_model_acc) - reuse_pruning = EnsemblePruningReuser(learnware_list=mixture_learnware_list, mode="classification") + reuse_pruning = EnsemblePruningReuser( + learnware_list=mixture_learnware_list, mode="classification" + ) reuse_pruning.fit(x_train, y_train) _, pruning_acc = evaluate(reuse_pruning, test_dataset, distribution=False) reuse_pruning_score_list.append(pruning_acc) From a529d65ec85a04535b0dd1ace33334725effa30e Mon Sep 17 00:00:00 2001 From: Gene Date: Thu, 28 Dec 2023 18:01:52 +0800 Subject: [PATCH 15/56] [FIX] fix details --- docs/index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.rst b/docs/index.rst index d1962eb..1137040 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -58,7 +58,7 @@ Document Structure :caption: REFERENCES: API - BeimingWu System + Beimingwu System FAQ .. toctree:: From f6a8567c9b8e2c72a5826f9aee4d460adef2e637 Mon Sep 17 00:00:00 2001 From: Gene Date: Thu, 28 Dec 2023 18:02:14 +0800 Subject: [PATCH 16/56] [DOC] add docs about beimingwu --- docs/references/beiming.rst | 6 ------ docs/references/beimingwu.rst | 30 ++++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 6 deletions(-) delete mode 100644 docs/references/beiming.rst create mode 100644 docs/references/beimingwu.rst diff --git a/docs/references/beiming.rst b/docs/references/beiming.rst deleted file mode 100644 index 3fce4d3..0000000 --- a/docs/references/beiming.rst +++ /dev/null @@ -1,6 +0,0 @@ -.. _beiming: -==================== -BeimingWu System -==================== - -`Clik here for beiming system `_ \ No newline at end of file diff --git a/docs/references/beimingwu.rst b/docs/references/beimingwu.rst new file mode 100644 index 0000000..c616289 --- /dev/null +++ b/docs/references/beimingwu.rst @@ -0,0 +1,30 @@ +.. _beimingwu: +==================== +Beimingwu System +==================== + +`Beimingwu System `_ is based on the learnware paradigm, which systematically implements the entire process of learnware from submission to deployment, helping users effectively search and reuse learnwares without the need to build machine learning models from scratch. + +The ``learnware`` package is the cornerstone of the Beimingwu system, functioning as its core engine. +It offers a comprehensive suite of central APIs that encompass a wide range of functionalities, including the submission, verification, organization, search, and deployment of learnware. +This integration ensures a streamlined and efficient process, facilitating seamless interactions within the system. + +Core Features in the Beimingwu System +======================================= + +Beimingwu systematically implements the core process of the learnware paradigm for the first time: + +- ``Submitting Stage``: The system includes multiple detection mechanisms to ensure the quality of uploaded learnwares. Additionally, the system trains a heterogeneous engine based on existing learnware specifications in the system to merge different specification islands and assign new specifications to learnwares. With more learnwares are submitted, the heterogeneous engine will continue to update, achieving continuous iteration of learnware specifications and building a more precise specification world. +- ``Deploying Stage``: After users upload task requirements, the system automatically selects whether to recommend a single learnware or multiple learnware combinations and provides efficient deployment methods. Whether it's a single learnware or a combination of multiple learnwares, the system offers convenient learnware reuse tools. + +In addition, the Beimingwu system also has the following features: + +- ``Learnware Specification Generation``: The Beimingwu system provides specification generation interfaces in the learnware package, supporting various data types (tables, images, and text) for efficient local generation. +- ``Learnware Quality Inspection``: The Beimingwu system includes multiple detection mechanisms to ensure the quality of each learnware in the system. +- ``Diverse Learnware Search``: The Beimingwu system supports both semantic specifications and statistical specifications searches, covering data types such as tables, images, and text. In addition, for table-based tasks, the system also supports the search for heterogeneous table learnwares. +- ``Local Learnware Deployment``: The Beimingwu system provides interfaces for learnware deployment and learnware reuse in the learnware package, facilitating users' convenient and secure learnware deployment. +- ``Data Privacy Protection``: The Beimingwu system operations, including learnware upload, search, and deployment, do not require users to upload local data. All relevant statistical specifications are generated locally by users, ensuring data privacy. +- ``Fully Open Source``: The Beimingwu system's source code is completely open-source, including the learnware package and frontend/backend code. The learnware package is highly extensible, making it easy to integrate new specification designs, learnware system designs, and learnware reuse methods in the future. + +Beimingwu is the first system-level implementation of the learnware paradigm. +This pioneering venture is just the beginning, with vast opportunities for enhancement and growth in the related technological fields still ahead. \ No newline at end of file From 70a3d0bf9d5d5bd83c059de8494a988fb1946e7b Mon Sep 17 00:00:00 2001 From: bxdd Date: Sun, 31 Dec 2023 03:00:32 +0800 Subject: [PATCH 17/56] [DOC] update upload docs --- docs/components/learnware.rst | 6 +- docs/components/market.rst | 4 +- docs/components/spec.rst | 10 +- docs/references/api.rst | 2 +- docs/start/quick.rst | 24 +-- docs/workflows/search.rst | 2 +- docs/workflows/upload.rst | 249 +++++++++++++++++------------ learnware/market/easy/organizer.py | 8 +- 8 files changed, 176 insertions(+), 129 deletions(-) diff --git a/docs/components/learnware.rst b/docs/components/learnware.rst index ba58947..1b5f000 100644 --- a/docs/components/learnware.rst +++ b/docs/components/learnware.rst @@ -4,7 +4,7 @@ Learnware & Reuser ========================================== -``Learnware`` is the most basic concept in the ``learnware paradigm``. In this section, we will introduce the concept and design of ``learnware`` and its extension for ``Hetero Reuse``. Then we will introduce the ``Reuse Methods``, which applies one or several ``learnware``\ s to solve the user's task. +``Learnware`` is the most basic concept in the ``learnware paradigm``. In this section, we will introduce the concept and design of ``Learnware`` and its extension for ``Hetero Reuse``. Then we will introduce the ``Reuse Methods``, which applies one or several ``Learnware``\ s to solve the user's task. Concepts =================== @@ -55,7 +55,7 @@ All Reuse Methods =========================== In addition to applying ``Learnware``, ``FeatureAlignLearnware`` or ``HeteroMapAlignLearnware`` objects directly by calling their ``predict`` interface, -the ``learnware`` package also provides a set of ``Reuse Methods`` for users to further customize a single or multiple learnwares, with the hope of enabling learnwares to be +the ``Learnware`` package also provides a set of ``Reuse Methods`` for users to further customize a single or multiple learnwares, with the hope of enabling learnwares to be helpful beyond their original purposes, and eliminating the need for users to build models from scratch. There are two main categories of ``Reuse Methods``: (1) direct reuse and (2) reuse based on a small amount of labeled data. @@ -107,7 +107,7 @@ specifies the ensemble method(default is set to ``mean``). Reuse Learnware with Labeled Data ---------------------------------- -When users have a small amount of labeled data available, ``learnware`` package provides two methods: ``EnsemblePruningReuser`` and ``FeatureAugmentReuser`` to help reuse learnwares. +When users have a small amount of labeled data available, ``Learnware`` package provides two methods: ``EnsemblePruningReuser`` and ``FeatureAugmentReuser`` to help reuse learnwares. They are both initialized with a list of ``Learnware`` objects ``learnware_list``, and have different implementations of ``fit`` and ``predict`` methods. EnsemblePruningReuser diff --git a/docs/components/market.rst b/docs/components/market.rst index e08c20f..258732a 100644 --- a/docs/components/market.rst +++ b/docs/components/market.rst @@ -24,7 +24,7 @@ The ``checker`` is used for checking the learnware in some standards. It should Current Checkers ====================================== -The ``learnware`` package provide two different implementation of ``market`` where both of them share the same ``checker`` list. So we first introduce the details of ``checker``\ s. +The ``Learnware`` package provide two different implementation of ``market`` where both of them share the same ``checker`` list. So we first introduce the details of ``checker``\ s. The ``checker``s check a learnware object in different aspects, including environment configuration (``CondaChecker``), semantic specifications (``EasySemanticChecker``), and statistical specifications (``EasyStatChecker``). The ``__call__`` method of each checker is designed to be invoked as a function to conduct the respective checks on the learnware and return the outcomes. It defines three types of learnwares: ``INVALID_LEARNWARE`` denotes the learnware does not pass the check, ``NONUSABLE_LEARNWARE`` denotes the learnware pass the check but cannot make prediction, ``USABLE_LEARWARE`` denotes the leanrware pass the check and can make prediction. Currently, we have three ``checker``\ s, which are described below. @@ -48,7 +48,7 @@ This ``checker`` checks the statistical specification and functionality of a lea Current Markets ====================================== -The ``learnware`` package provide two different implementation of ``market``, i.e. ``Easy Market`` and ``Hetero Market``. They have different implementation of ``organizer`` and ``searcher``. +The ``Learnware`` package provide two different implementation of ``market``, i.e. ``Easy Market`` and ``Hetero Market``. They have different implementation of ``organizer`` and ``searcher``. Easy Market ------------- diff --git a/docs/components/spec.rst b/docs/components/spec.rst index ea801ac..84e235c 100644 --- a/docs/components/spec.rst +++ b/docs/components/spec.rst @@ -5,7 +5,7 @@ Specification Learnware specification is the core component of the learnware paradigm, linking all processes about learnwares, including uploading, organizing, searching, deploying and reusing. -In this section, we will introduce the concept and design of learnware specification in the ``learnware`` package. +In this section, we will introduce the concept and design of learnware specification in the ``Learnware`` package. We will then explore ``regular specification``\ s tailored for different data types such as tables, images and texts. Lastly, we cover a ``system specification`` specifically assigned to table learnwares by the learnware market, aimed at accommodating all available table learnwares into a unified "specification world" despite their heterogeneity. @@ -13,7 +13,7 @@ Concepts & Types ================== The learnware specification describes the model's specialty and utility in a certain format, allowing the model to be identified and reused by future users who may have no prior knowledge of the learnware. -The ``learnware`` package employs a highly extensible specification design, which consists of two parts: +The ``Learnware`` package employs a highly extensible specification design, which consists of two parts: - **Semantic specification** describes the model's type and functionality through a set of descriptions and tags. Learnwares with similar semantic specifications reside in the same specification island - **Statistical specification** characterizes the statistical information contained in the model using various machine learning techniques. It plays a crucial role in locating the appropriate place for the model within the specification island. @@ -28,7 +28,7 @@ We employ the ``Reduced Kernel Mean Embedding (RKME) Specification`` as the foun with adjustments made according to the characteristics of each data type. The RKME specification is a recent development in learnware specification design, which represents the distribution of a model's training data in a privacy-preserving manner. -Within the ``learnware`` package, you'll find two types of statistical specifications: ``regular specification`` and ``system specification``. The former is generated locally +Within the ``Learnware`` package, you'll find two types of statistical specifications: ``regular specification`` and ``system specification``. The former is generated locally by users to express their model's statistical information, while the latter is assigned by the learnware market to accommodate and organize heterogeneous learnwares. Semantic Specification @@ -41,7 +41,7 @@ In the case of table learnwares, users should additionally provide descriptions Regular Specification ====================================== -The ``learnware`` package provides a unified interface, ``generate_stat_spec``, for generating ``regular specification``\ s across different data types. +The ``Learnware`` package provides a unified interface, ``generate_stat_spec``, for generating ``regular specification``\ s across different data types. Users can use the training data ``train_x`` (supported types include numpy.ndarray, pandas.DataFrame, and torch.Tensor) as input to generate the ``regular specification`` of the model, as shown in the following code: @@ -129,7 +129,7 @@ with particular learnware market implementations. - Learnware searchers perform helpful learnware recommendations among all table learnwares in the market, leveraging the ``system specification``\ s generated for users. -``learnware`` package now includes a type of ``system specification``, named ``HeteroMapTableSpecification``, made especially for the ``Hetero Market`` implementation. +``Learnware`` package now includes a type of ``system specification``, named ``HeteroMapTableSpecification``, made especially for the ``Hetero Market`` implementation. This specification is automatically given to all table learnwares when they are added to the ``Hetero Market``. It is also set up to be updated periodically, ensuring it remains accurate as the learnware market evolves and builds more precise specification worlds. Please refer to `COMPONENTS: Hetero Market <../components/market.html#hetero-market>`_ for implementation details. \ No newline at end of file diff --git a/docs/references/api.rst b/docs/references/api.rst index d3a4a63..7ce5e15 100644 --- a/docs/references/api.rst +++ b/docs/references/api.rst @@ -3,7 +3,7 @@ API Reference ================================ -Here you can find all ``learnware`` interfaces. +Here you can find all ``Learnware`` interfaces. Market ==================== diff --git a/docs/start/quick.rst b/docs/start/quick.rst index bd60da6..f1858bb 100644 --- a/docs/start/quick.rst +++ b/docs/start/quick.rst @@ -14,7 +14,7 @@ and utilizing ``Learnware`` to handle user tasks. Installation ==================== -Learnware is currently hosted on `PyPI `_. You can easily intsall ``learnware`` by following these steps: +Learnware is currently hosted on `PyPI `_. You can easily intsall ``Learnware`` by following these steps: - For Windows and Linux users: @@ -60,39 +60,39 @@ includes the following four components: - For Windows users: - .. code-block:: + .. code-block:: - conda env export | findstr /v "^prefix: " > environment.yaml + conda env export | findstr /v "^prefix: " > environment.yaml - For macOS and Linux users - .. code-block:: + .. code-block:: - conda env export | grep -v "^prefix: " > environment.yaml + conda env export | grep -v "^prefix: " > environment.yaml - Recover env from config: - .. code-block:: + .. code-block:: - conda env create -f environment.yaml + conda env create -f environment.yaml - ``requirements.txt`` for pip: A plain text documents that lists all packages necessary for executing the model. These dependencies can be effortlessly installed using pip with the command: - .. code-block:: - - pip install -r requirements.txt. + .. code-block:: + + pip install -r requirements.txt We've also detailed the format of the learnware zipfile in :ref:`Learnware Preparation`. -Learnware Pacakge Workflow +Learnware Package Workflow ============================ Users can start a ``Learnware`` workflow according to the following steps: -Initialize a Learware Market +Initialize a Learnware Market ------------------------------- The ``EasyMarket`` class provides the core functions of a ``Learnware Market``. diff --git a/docs/workflows/search.rst b/docs/workflows/search.rst index 18c9e32..3602e1d 100644 --- a/docs/workflows/search.rst +++ b/docs/workflows/search.rst @@ -51,7 +51,7 @@ Hetero Search For table-based user tasks, homogeneous searchers like ``EasySearcher`` fail to recommend learnwares when no table learnware matches the user task's feature dimension, returning empty results. -To enhance functionality, ``learnware`` package includes the heterogeneous learnware search feature, whose processions is as follows: +To enhance functionality, ``Learnware`` package includes the heterogeneous learnware search feature, whose processions is as follows: - Learnware markets such as ``Hetero Market`` integrate different specification islands into a unified "specification world" by assigning system-level specifications to all learnwares. This allows heterogeneous searchers like ``HeteroSearcher`` to find helpful learnwares from all available table learnwares. - Searchers assign system-level specifications to users based on ``UserInfo``'s statistical specification, using methods provided by corresponding organizers. In ``Hetero Market``, for example, ``HeteroOrganizer.generate_hetero_map_spec`` generates system-level specifications for users. diff --git a/docs/workflows/upload.rst b/docs/workflows/upload.rst index 9e2e71c..32ce8ec 100644 --- a/docs/workflows/upload.rst +++ b/docs/workflows/upload.rst @@ -1,180 +1,227 @@ .. _submit: ========================================== -Learnware Preparation and Submission +Learnware Preparation and Uoloading ========================================== -In this section, we provide a comprehensive guide on submitting your custom learnware to the Learnware Market. +In this section, we provide a comprehensive guide on submitting your custom learnware to the ``Learnware Market``. We will first discuss the necessary components of a valid learnware, followed by a detailed explanation on how to upload and remove learnwares within ``Learnware Market``. -Prepare Learnware -==================== +Prepare Learnware ``Zip`` Package +==================================== -A valid learnware is encapsulated in a zipfile, comprising four essential components. -Below, we illustrate the detailed structure of a learnware zipfile. +In learnware ``Learnware`` package, each learnware is encapsulated in a ``zip`` package, which should contain at least the following four files: -``__init__.py`` ---------------- +- ``learnware.yaml``: learnware configuration file. +- ``__init__.py``: methods for using the model. +- ``stat.json``: the statistical specification of the learnware. Its filename can be customized and recorded in learnware.yaml. +- ``environment.yaml`` or ``requirements.txt``: specifies the environment for the model. -Within ``Learnware Market``, every uploader must provide a unified set of interfaces for their model, -facilitating easy utilization for future users. -The ``__init__.py`` file serves as the Python interface for your model's fitting, prediction, and fine-tuning processes. -For example, the code snippet below is used to train and save a SVM model for a sample dataset on sklearn digits classification: +To facilitate the construction of a learnware, we provide a `Learnware Template `_ that you can use as a basis for building your own learnware. -.. code-block:: python - - import joblib - from sklearn.datasets import load_digits - from sklearn.model_selection import train_test_split - - X, y = load_digits(return_X_y=True) - data_X, _, data_y, _ = train_test_split(X, y, test_size=0.3, shuffle=True) +Next, we will provide detailed explanations for the content of these four files. - # input dimension: (64, ), output dimension: (10, ) - clf = svm.SVC(kernel="linear", probability=True) - clf.fit(data_X, data_y) +Model Invocation File ``__init__.py`` +------------------------------------- - joblib.dump(clf, "svm.pkl") # model is stored as file "svm.pkl" +To ensure that the uploaded learnware can be used by subsequent users, you need to provide interfaces for model fitting ``fit(X, y)``, prediction ``predict(X)``, and fine-tuning ``finetune(X, y)`` in ``__init__.py``. Among these interfaces, only the ```predict(X)``` interface is mandatory, while the others depend on the functionality of your model. - -Then the corresponding ``__init__.py`` for this SVM model should be structured as follows: +Below is a reference template for the ```__init__.py``` file. Please make sure that the input parameter format (the number of parameters and parameter names) for each interface in your model invocation file matches the template below. .. code-block:: python - + import os - import joblib + import pickle import numpy as np from learnware.model import BaseModel - - class SVM(BaseModel): + class MyModel(BaseModel): def __init__(self): - super(SVM, self).__init__(input_shape=(64,), output_shape=(10,)) + super(MyModel, self).__init__(input_shape=(37,), output_shape=(1,)) dir_path = os.path.dirname(os.path.abspath(__file__)) - self.model = joblib.load(os.path.join(dir_path, "svm.pkl")) + model_path = os.path.join(dir_path, "model.pkl") + with open(model_path, "rb") as f: + self.model = pickle.load(f) def fit(self, X: np.ndarray, y: np.ndarray): - pass + self.model = self.model.fit(X) def predict(self, X: np.ndarray) -> np.ndarray: - return self.model.predict_proba(X) + return self.model.predict(X) def finetune(self, X: np.ndarray, y: np.ndarray): pass - -Please remember to specify the ``input_shape`` and ``output_shape`` corresponding to your model. -In our sklearn digits classification example, these would be (64,) and (10,) respectively. -``stat.json`` -------------- +Please ensure that the ``MyModel`` class inherits from ``BaseModel`` in the ``learnware.model`` module, and specify the class name (e.g., ``MyModel``) in the ``learnware.yaml`` file later. + +Input and Output Dimensions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +``input_shape`` and ``output_shape`` represent the input and output dimensions of the model, respectively. You can refer to the following guidelines when filling them out: + - ``input_shape`` specifies a single input sample's dimension, and ``output_shape`` refers to the model's output dimension for a single sample. + - When the data type being processed is text data, there are no specific requirements for the value of ``input_shape``, and it can be filled in as ``None``. + - When the ``output_shape`` corresponds to tasks with variable outputs (such as object detection, text segmentation, etc.), there are no specific requirements for the value of ``output_shape``, and it can be filled in as ``None``. + - For classification tasks, ``output_shape`` should be (1, ) if the model directly outputs predicted labels, and the sample labels need to start from 0. If the model outputs logits, ``output_shape`` should be specified as the number of classes, i.e., (class_num, ). -To accurately and effectively match users with appropriate learnwares for their tasks, we require information about your training dataset. -Specifically, you are required to provide a statistical specification -stored as a json file, such as ``stat.json``, which contains the statistical information of the dataset. -This json file meets all our requirements regarding your training data, so you don't need to upload the local original data. +File Path +^^^^^^^^^^^^^^^^^^ +If you need to load certain files within the zip package in the ``__init__.py`` file (and any other Python files that may be involved), please follow the method shown in the template above about obtaining the ``model_path``: + - First, obtain the root directory path of the entire package by getting ``dir_path``. + - - Then, based on the specific file's relative location within the package, obtain the specific file's path, ``model_path``. -There are various methods to generate a statistical specification. -If you choose to use Reduced Kernel Mean Embedding (RKME) as your statistical specification, -the following code snippet offers guidance on how to construct and store the RKME of a dataset: +Module Imports +^^^^^^^^^^^^^^^^^^ +Please note that module imports between Python files within the zip package should be done using **relative imports**. For instance: .. code-block:: python - - from learnware.specification import generate_rkme_spec - - # generate rkme specification for digits dataset - spec = generate_rkme_spec(X=data_X) + + from .package_name import * + from .package_name import module_name + + +Learnware Statistical Specification ``stat.json`` +--------------------------------------------------- + +A learnware consists of a model and a specification. Therefore, after preparing the model, you need to generate a statistical specification for it. Specifically, using the previously installed ``Learnware`` package, you can use the training data ``train_x`` (supported types include numpy.ndarray, pandas.DataFrame, and torch.Tensor) as input to generate the statistical specification of the model. + +Here is an example of the code: + +.. code-block:: python + + from learnware.specification import generate_stat_spec + + data_type = "table" # Data types: ["table", "image", "text"] + spec = generate_stat_spec(type=data_type, X=train_x) spec.save("stat.json") -Significantly, the RKME generation process is entirely conducted on your local machine, without any involvement of cloud services, -guaranteeing the security and privacy of your local original data. +It's worth noting that the above code only runs on your local computer and does not interact with any cloud servers or leak any local private data. +Additionally, if the model's training data is too large, causing the above code to fail, you can consider sampling the training data to ensure it's of a suitable size before proceeding with reduction generation. -``learnware.yaml`` ------------------- -Additionally, you are asked to prepare a configuration file in YAML format. -The file should detail your model's class name, the type of statistical specification(e.g. Reduced Kernel Mean Embedding, ``RKMETableSpecification``), and -the file name of your statistical specification file. The following ``learnware.yaml`` provides an example of -how your learnware configuration file should be structured, based on our previous discussion: +Learnware Configuration File ``learnware.yaml`` +------------------------------------------------- + +This file is used to specify the class name (``MyModel``) in the model invocation file ``__init__.py``, the module called for generating the statistical specification (``learnware.specification``), the category of the statistical specification (``RKMETableSpecification``), and the specific filename (``stat.json``): .. code-block:: yaml model: - class_name: SVM - kwargs: {} + class_name: MyModel + kwargs: {} stat_specifications: - - module_path: learnware.specification + - module_path: learnware.specification class_name: RKMETableSpecification file_name: stat.json - kwargs: {} + kwargs: {} +Please note that the statistical specification class name for different data types ``['table', 'image', 'text']`` is ``[RKMETableSpecification, RKMEImageSpecification, RKMETextSpecification]``, respectively. -``environment.yaml`` or ``requirements.txt`` +Model Runtime Dependent File -------------------------------------------- -In order to allow others to execute your learnware, it's necessary to specify your model's dependencies. -You can do this by providing either an ``environment.yaml`` file or a ``requirements.txt`` file. +To ensure that your uploaded learnware can be used by other users, the ``zip`` package of the uploaded learnware should specify the model's runtime dependencies. The Beimingwu System supports the following two ways to specify runtime dependencies: + - Provide an ``environment.yaml`` file supported by ``conda``. + - Provide a ``requirements.txt`` file supported by ``pip``. + +You can choose either method, but please try to remove unnecessary dependencies to keep the dependency list as minimal as possible. + +Using ``environment.yaml`` File +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +You can export the `environment.yaml` file directly from the `conda` virtual environment using the following command: -- ``environment.yaml`` for conda: +- For Linux and macOS systems - If you provide an ``environment.yaml``, a new conda environment will be created based on this file - when users install your learnware. You can generate this yaml file using the following command: - - - For Windows users: +.. code-block:: bash + + conda env export | grep -v "^prefix: " > environment.yaml - .. code-block:: +- For Windows systems: - conda env export | findstr /v "^prefix: " > environment.yaml +.. code-block:: bash + + conda env export | findstr /v "^prefix: " > environment.yaml - - For macOS and Linux users: +Note that the ``environment.yaml`` file in the ``zip`` package needs to be encoded in ``UTF-8`` format. Please check the encoding format of the ``environment.yaml`` file after using the above command. Due to the ``conda`` version and system differences, you may not get a ``UTF-8`` encoded file (e.g. get a ``UTF-16LE`` encoded file). You'll need to manually convert the file to ``UTF-8``, which is supported by most text editors. The following ``Python`` code for encoding conversion is also for reference: - .. code-block:: +.. code-block:: python - conda env export | grep -v "^prefix: " > environment.yaml + import codecs -- ``requirements.txt`` for pip: + # Read the output file from the 'conda env export' command + # Assuming the file name is environment.yaml and the export format is UTF-16LE + with codecs.open('environment.yaml', 'r', encoding='utf-16le') as file: + content = file.read() - If you provide a ``requirements.txt``, the dependent packages will be installed using the `-r` option of pip. - You can find more information about ``requirements.txt`` in - `pip documentation `_. + # Convert the content to UTF-8 encoding + output_content = content.encode('utf-8') + + # Write to UTF-8 encoded file + with open('environment.yaml', 'wb') as file: + file.write(output_content) + + +Additionally, due to the complexity of users' local ``conda`` virtual environments, you can execute the following command before uploading to confirm that there are no dependency conflicts in the ``environment.yaml`` file: + +.. code-block:: bash - -We recommend using ``environment.yaml`` as it can help minimize conflicts between different packages. + conda env create --name test_env --file environment.yaml -.. note:: - Whether you choose to use ``environment.yaml`` or ``requirements.txt``, - it's important to keep your dependencies as minimal as possible. - This may involve manually opening the file and removing any unnecessary packages. +The above command will create a virtual environment based on the ``environment.yaml`` file, and if successful, it indicates that there are no dependency conflicts. You can delete the created virtual environment using the following command: +.. code-block:: bash -Check Learnware -==================== + conda env remove --name test_env -Upload Learnware -================== +Using `requirements.txt` File +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The ``requirements.txt`` file should list the packages required for running the ``__init__.py`` file and their specific versions. You can obtain these version details by executing the ``pip show `` or ``conda list `` command. Here is an example file: + +.. code-block:: text + + numpy==1.23.5 + scikit-learn==1.2.2 + +Manually listing these dependencies can be cumbersome, so you can also use the ``pipreqs`` package to automatically scan your entire project and export the packages used along with their specific versions (though some manual verification may be required): + +.. code-block:: bash + + pip install pipreqs + pipreqs ./ # Run this command in the project's root directory + +Please note that if you use the ``requirements.txt`` file to specify runtime dependencies, the system will by default install these dependencies in a ``conda`` virtual environment running ``Python 3.8`` during the learnware deployment. + +Furthermore, for version-sensitive packages like ``torch``, it's essential to specify package versions in the ``requirements.txt`` file to ensure successful deployment of the uploaded learnware on other machines. + +Upload Learnware ``Zip`` Package +================================== After preparing the four required files mentioned above, -you can bundle them into your own learnware zipfile. Along with the generated semantic specification that +you can bundle them into your own learnware ``zip`` package. Along with the generated semantic specification that succinctly describes the features of your task and model (for more details, please refer to :ref:`semantic specification`), -you can effortlessly upload your learnware to the ``Learnware Market`` using a single line of code: +you can effortlessly upload your learnware to the ``Learnware Market`` as follows. .. code-block:: python - import learnware - from learnware.market import EasyMarket + from learnware.market import BaseChecker + from learnware.market import instantiate_learnware_market - learnware.init() - - # EasyMarket: most basic set of functions in a Learnware Market - easy_market = EasyMarket(market_id="demo", rebuild=True) + # instantiate a demo market + demo_market = instantiate_learnware_market(market_id="demo", name="hetero", rebuild=True) + + # upload the learnware into the market + learnware_id, learnware_status = demo_market.add_learnware(zip_path, semantic_spec) - # single line uploading - easy_market.add_learnware(zip_path, semantic_spec) + # assert whether the learnware passed the check and was uploaded successfully. + assert learnware_status != BaseChecker.INVALID_LEARNWARE, "Insert learnware failed!" -Here, ``zip_path`` refers to the directory of your learnware zipfile. +Here, ``zip_path`` refers to the directory of your learnware ``zip`` package. ``learnware_id`` indicates the id assigned by ``Learnware Market``, and the ``learnware_status`` indicates the check status for learnware. +.. note:: + The learnware ``zip`` package uploaded into ``LearnwareMarket`` will be checked semantically and statistically, and ``add_learnware`` will return the concrete check status. The check status ``BaseChecker.INVALID_LEARNWARE`` indicates the learnware did not pass the check. For more details about learnware checker, please refer to `Learnware Market <../components/market.html#easy-checker>` Remove Learnware ================== diff --git a/learnware/market/easy/organizer.py b/learnware/market/easy/organizer.py index dac16d9..c2d054f 100644 --- a/learnware/market/easy/organizer.py +++ b/learnware/market/easy/organizer.py @@ -106,22 +106,22 @@ class EasyOrganizer(BaseOrganizer): if new_learnware is None: return None, BaseChecker.INVALID_LEARNWARE - learnwere_status = check_status if check_status is not None else BaseChecker.NONUSABLE_LEARNWARE + learnware_status = check_status if check_status is not None else BaseChecker.NONUSABLE_LEARNWARE self.dbops.add_learnware( id=learnware_id, semantic_spec=semantic_spec, zip_path=target_zip_dir, folder_path=target_folder_dir, - use_flag=learnwere_status, + use_flag=learnware_status, ) self.learnware_list[learnware_id] = new_learnware self.learnware_zip_list[learnware_id] = target_zip_dir self.learnware_folder_list[learnware_id] = target_folder_dir - self.use_flags[learnware_id] = learnwere_status + self.use_flags[learnware_id] = learnware_status self.count += 1 - return learnware_id, learnwere_status + return learnware_id, learnware_status def delete_learnware(self, id: str) -> bool: """Delete Learnware from market From 6c45da219fa0ce5f606e06e90f520b9b5a6b4cb1 Mon Sep 17 00:00:00 2001 From: bxdd Date: Sun, 31 Dec 2023 03:19:02 +0800 Subject: [PATCH 18/56] [DOC] finish dev and FAQ --- docs/about/dev.rst | 69 +++++++++++++++++++++++++++++++++-------- docs/references/FAQ.rst | 9 +++++- 2 files changed, 64 insertions(+), 14 deletions(-) diff --git a/docs/about/dev.rst b/docs/about/dev.rst index 309d1dc..aa1ac04 100644 --- a/docs/about/dev.rst +++ b/docs/about/dev.rst @@ -3,6 +3,26 @@ For Developer ================ + +Commit Format +============== + +Please submit in the following manner: Submit using the format ``prefix`` + ``space`` + ``suffix``. +There are four choices for the prefix, and they can be combined using commas: + +- [ENH]: Represents enhancement, indicating the addition of new features. +- [DOC]: Indicates modifications to the documentation. +- [FIX]: Represents bug fixes and typo corrections. +- [MNT]: Indicates other minor modifications, such as version updates. + +The suffix specifies the specific nature of the modification, with the initial letter capitalized. + +Examples: The following are all valid: + +- [DOC] Fix the document +- [FIX, ENH] Fix the bug and add some feature" + + Docstring ============ Please use the `Numpydoc Style `_. @@ -15,7 +35,7 @@ Continuous Integration Continuous Integration (CI) tools help you stick to the quality standards by running tests every time you push a new commit and reporting the results to a pull request. ``Learnware Market`` will check the following tests when you pull a request: -1. We will check your code style pylint, you can fix your code style by the following commands: +1. We will check your code length, you can fix your code style by the following commands: .. code-block:: bash @@ -31,21 +51,44 @@ Continuous Integration (CI) tools help you stick to the quality standards by run python -m pytest tests Development Guidance -================================= +======================= As a developer, you often want make changes to ``Learnware Market`` and hope it would reflect directly in your environment without reinstalling it. You can install ``Learnware Market`` in editable mode with following command. -- For Windows and Linux users: +.. code-block:: bash + + $ git clone https://github.com/Learnware-LAMDA/Learnware.git && cd learnware + $ python setup.py install + + +``pre-commit`` Config +======================== + +The ``Learnware`` Package support config ``pre-commit``. Run the following command to install ``pre-commit``: + +.. code-block:: bash + + pip install pre-commit + + +Run the following command in the root directory of ``Learnware`` Project to enable ``pre-commit``: + +.. code-block:: bash + + pre-commit install + +``isort`` Config +=================== - .. code-block:: bash - - $ git clone https://git.nju.edu.cn/learnware/learnware-market.git && cd learnware-market - $ python setup.py install +The codes in the ``Learnware`` Package will be processed by ``isort``(``examples`` and ``tests`` are excluded). Run the following command to install ``isort``: + +.. code-block:: bash + + pip install isort + +Run the following command in the root directory of ``Learnware`` Project to run ``isort``: + +.. code-block:: bash -- For macOS users: + isort learnware --reverse-relative - .. code-block:: bash - - $ conda install -c pytorch faiss - $ git clone https://git.nju.edu.cn/learnware/learnware-market.git && cd learnware-market - $ python setup.py install \ No newline at end of file diff --git a/docs/references/FAQ.rst b/docs/references/FAQ.rst index 0b7fe8c..9a10bca 100644 --- a/docs/references/FAQ.rst +++ b/docs/references/FAQ.rst @@ -1,5 +1,12 @@ .. _faq: ==================== -FAQ +Learnware FAQ ==================== +Learnware Frequently Asked Questions +===================================== +.. contents:: + :depth: 1 + :local: + :backlinks: none + From 69d8d53a6276c5b9da9f91ad534d3c66b00eeb2a Mon Sep 17 00:00:00 2001 From: bxdd Date: Sun, 31 Dec 2023 03:22:58 +0800 Subject: [PATCH 19/56] [DOC] finish about us --- docs/about/about.rst | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/about/about.rst b/docs/about/about.rst index 6269264..33ee039 100644 --- a/docs/about/about.rst +++ b/docs/about/about.rst @@ -2,7 +2,8 @@ About Us ================ +We thank all the contributors for the development of learnware package: -Contributors -================ +.. image:: https://github.com/Learnware-LAMDA/Learnware/graphs/contributors + :align: center From 72c52da05c19019d715064a2844c91673f2967b1 Mon Sep 17 00:00:00 2001 From: bxdd Date: Sun, 31 Dec 2023 03:24:40 +0800 Subject: [PATCH 20/56] [DOC] finish about us --- docs/about/about.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/about/about.rst b/docs/about/about.rst index 33ee039..5777ca5 100644 --- a/docs/about/about.rst +++ b/docs/about/about.rst @@ -7,3 +7,5 @@ We thank all the contributors for the development of learnware package: .. image:: https://github.com/Learnware-LAMDA/Learnware/graphs/contributors :align: center +In LAMDA Group, also many people participate the discussions, learnware package design and development and so on. +For more details about us, please refer to `LAMDA Group `_. \ No newline at end of file From 994ab7e86037c58fb20d3d43e6926dc3c8c5bd12 Mon Sep 17 00:00:00 2001 From: bxdd Date: Sun, 31 Dec 2023 03:27:14 +0800 Subject: [PATCH 21/56] [DOC] modify dev --- docs/about/dev.rst | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/docs/about/dev.rst b/docs/about/dev.rst index aa1ac04..eb4a4af 100644 --- a/docs/about/dev.rst +++ b/docs/about/dev.rst @@ -3,6 +3,15 @@ For Developer ================ +Install with Dev Mode +======================= + +As a developer, you often want make changes to ``Learnware Market`` and hope it would reflect directly in your environment without reinstalling it. You can install ``Learnware Market`` in editable mode with following command. + +.. code-block:: bash + + $ git clone https://github.com/Learnware-LAMDA/Learnware.git && cd learnware + $ python setup.py install Commit Format ============== @@ -50,17 +59,6 @@ Continuous Integration (CI) tools help you stick to the quality standards by run pip install pytest python -m pytest tests -Development Guidance -======================= - -As a developer, you often want make changes to ``Learnware Market`` and hope it would reflect directly in your environment without reinstalling it. You can install ``Learnware Market`` in editable mode with following command. - -.. code-block:: bash - - $ git clone https://github.com/Learnware-LAMDA/Learnware.git && cd learnware - $ python setup.py install - - ``pre-commit`` Config ======================== @@ -80,7 +78,7 @@ Run the following command in the root directory of ``Learnware`` Project to enab ``isort`` Config =================== -The codes in the ``Learnware`` Package will be processed by ``isort``(``examples`` and ``tests`` are excluded). Run the following command to install ``isort``: +The codes in the ``Learnware`` Package will be processed by ``isort`` (``examples`` and ``tests`` are excluded). Run the following command to install ``isort``: .. code-block:: bash From a5530a4bda1492e3a2a7bb3fb264248bc87aa8c1 Mon Sep 17 00:00:00 2001 From: bxdd Date: Sun, 31 Dec 2023 03:47:05 +0800 Subject: [PATCH 22/56] [DOC] finish API rst --- docs/components/market.rst | 8 +-- docs/references/api.rst | 109 ++++++++++++++++++++++++++++++++++++- 2 files changed, 110 insertions(+), 7 deletions(-) diff --git a/docs/components/market.rst b/docs/components/market.rst index 5756263..4e8747a 100644 --- a/docs/components/market.rst +++ b/docs/components/market.rst @@ -4,20 +4,20 @@ Learnware Market ================================ -The ``learnware market`` receives high-performance machine learning models from developers, incorporates them into the system, and provides services to users by identifying and reusing learnware to help users solve current tasks. Developers voluntarily submit various learnwares to the learnware market, and the market conducts quality checks and further organization of these learnwares. When users submit task requirements, the learnware market automatically selects whether to recommend a single learnware or a combination of multiple learnwares. +The ``Learnware Market`` receives high-performance machine learning models from developers, incorporates them into the system, and provides services to users by identifying and reusing learnware to help users solve current tasks. Developers voluntarily submit various learnwares to the learnware market, and the market conducts quality checks and further organization of these learnwares. When users submit task requirements, the learnware market automatically selects whether to recommend a single learnware or a combination of multiple learnwares. -The ``learnware market`` will receive various kinds of learnwares, and learnwares from different feature/label spaces form numerous islands of specifications. All these islands together constitute the ``specification world`` in the learnware market. The market should discover and establish connections between different islands, and then merge them into a unified specification world. This further organization of learnwares support search learnwares among all learnwares, not just among learnwares which has the same feature space and label space with the user's task requirements. +The ``Learnware Market`` will receive various kinds of learnwares, and learnwares from different feature/label spaces form numerous islands of specifications. All these islands together constitute the ``specification world`` in the learnware market. The market should discover and establish connections between different islands, and then merge them into a unified specification world. This further organization of learnwares support search learnwares among all learnwares, not just among learnwares which has the same feature space and label space with the user's task requirements. Framework ====================================== -The ``learnware market`` is combined with a ``organizer``, a ``searcher``, and a list of ``checker``\ s. +The ``Learnware Market`` is combined with a ``organizer``, a ``searcher``, and a list of ``checker``\ s. The ``organizer`` can store and organize learnwares in the market. It supports ``add``, ``delete``, and ``update`` operations for learnwares. It also provides the interface for ``searcher`` to search learnwares based on user requirement. The ``searcher`` can search learnwares based on user requirement. The implementation of ``searcher`` is dependent on the concrete implementation and interface for ``organizer``, where usually an ``organizer`` can be compatible with multiple different ``searcher``\ s. -The ``checker`` is used for checking the learnware in some standards. It should check the utility of a learnware and is supposed to return the status and a message related to the learnware's check result. Only the learnwares who passed the ``checker`` could be able to be stored and added into the ``learnware market``. +The ``checker`` is used for checking the learnware in some standards. It should check the utility of a learnware and is supposed to return the status and a message related to the learnware's check result. Only the learnwares who passed the ``checker`` could be able to be stored and added into the ``Learnware Market``. diff --git a/docs/references/api.rst b/docs/references/api.rst index 7ce5e15..ed23e48 100644 --- a/docs/references/api.rst +++ b/docs/references/api.rst @@ -3,7 +3,7 @@ API Reference ================================ -Here you can find all ``Learnware`` interfaces. +Here you can find high-level ``Learnware`` interfaces. Market ==================== @@ -13,23 +13,96 @@ Market .. autoclass:: learnware.market.BaseUserInfo :members: - -Learnware & Reuser + +Organizer +------------------ +.. autoclass:: learnware.market.BaseOrganizer + :members: + +.. autoclass:: learnware.market.EasyOrganizer + :members: + +.. autoclass:: learnware.market.HeteroOrganizer + :members: + +Searcher +------------------ +.. autoclass:: learnware.market.BaseSearcher + :members: + +.. autoclass:: learnware.market.EasySearcher + :members: + +.. autoclass:: learnware.market.EasyExactSemanticSearcher + :members: + +.. autoclass:: learnware.market.EasyFuzzSemanticSearcher + :members: + +.. autoclass:: learnware.market.EasyStatSearcher + :members: + +.. autoclass:: learnware.market.HeteroSearcher + :members: + +Checker +------------------ + +.. autoclass:: learnware.market.BaseChecker + :members: + +.. autoclass:: learnware.market.EasyChecker + :members: + +.. autoclass:: learnware.market.EasySemanticChecker + :members: + +.. autoclass:: learnware.market.EasyStatChecker + :members: + +Learnware ==================== .. autoclass:: learnware.learnware.Learnware :members: +Reuser +==================== + .. autoclass:: learnware.reuse.BaseReuser :members: +Data Independent Reuser +------------------------- + .. autoclass:: learnware.reuse.JobSelectorReuser :members: .. autoclass:: learnware.reuse.AveragingReuser :members: +Data Dependent Reuser +------------------------- + +.. autoclass:: learnware.reuse.EnsemblePruningReuser + :members: + +.. autoclass:: learnware.reuse.FeatureAugmentReuser + :members: + + +Aligned Learnware +-------------------- +.. autoclass:: learnware.reuse.AlignLearnware + :members: + +.. autoclass:: learnware.reuse.FeatureAlignLearnware + :members: + +.. autoclass:: learnware.reuse.HeteroMapAlignLearnware + :members: + Specification ==================== @@ -39,6 +112,12 @@ Specification .. autoclass:: learnware.specification.BaseStatSpecification :members: +Regular Specification +-------------------------- + +.. autoclass:: learnware.specification.RegularStatSpecification + :members: + .. autoclass:: learnware.specification.RKMETableSpecification :members: @@ -48,8 +127,32 @@ Specification .. autoclass:: learnware.specification.RKMETextSpecification :members: +System Specification +-------------------------- + +.. autoclass:: learnware.specification.HeteroMapTableSpecification + :members: + Model ==================== + +Base Model +-------------- .. autoclass:: learnware.model.BaseModel :members: + +Container +------------- + +.. autoclass:: learnware.client.ModelContainer + :members: + +.. autoclass:: learnware.client.ModelCondaContainer + :members: + +.. autoclass:: learnware.client.ModelDockerContainer + :members: + +.. autoclass:: learnware.client.LearnwaresContainer + :members: \ No newline at end of file From cfab80d69277564e8a3cac3d098cca80cb58644c Mon Sep 17 00:00:00 2001 From: bxdd Date: Sun, 31 Dec 2023 04:00:41 +0800 Subject: [PATCH 23/56] [DOC] finish reuse --- docs/components/learnware.rst | 2 +- docs/workflows/reuse.rst | 26 ++++++++++++++++++++++++-- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/docs/components/learnware.rst b/docs/components/learnware.rst index 1b5f000..7ae7c29 100644 --- a/docs/components/learnware.rst +++ b/docs/components/learnware.rst @@ -16,7 +16,7 @@ In our implementation, the class ``Learnware`` has 3 important member variables: - ``model``: The model in the learnware, can be a ``BaseModel`` or a dict including model name and path. When it is a dict, the function ``Learnware.instantiate_model`` is used to transform it to a ``BaseModel``. The function ``Learnware.predict`` use the model to predict for an input ``X``. See more in `COMPONENTS: Model <./model.html>`_. - ``specification``: The specification including the semantic specification and the statistic specification. -Learnware for Hetero Reuse (Feature Align + Hetero Map Learnware) +Learnware for Hetero Reuse ======================================================================= In the Hetero Market(see `COMPONENTS: Hetero Market <./market.html#hetero-market>`_ for details), ``HeteroSearcher`` identifies and recommends helpful learnwares among all learnwares in the market, diff --git a/docs/workflows/reuse.rst b/docs/workflows/reuse.rst index 86d9e50..d9e6eb1 100644 --- a/docs/workflows/reuse.rst +++ b/docs/workflows/reuse.rst @@ -132,5 +132,27 @@ combine ``HeteroMapAlignLearnware`` with the homogeneous reuse methods ``Averagi reuse_ensemble.fit(val_x, val_y) ensemble_pruning_predict_y = reuse_ensemble.predict(user_data=test_x) -Reuse with Container -===================== +Reuse with ``Model Container`` +================================ + +``Learnware`` package provides ``Model Container`` to build executive environment for learnwares according to their runtime dependent files. The learnware's model will be executed in the containers and its env will be installed and uninstalled automatically. + +Run the following codes to try run a learnware with ``Model Container``: + +.. code-block:: python + + from learnware.learnware import Learnware + + with LearnwaresContainer(learnware, mode="conda") as env_container: # Let learnware be instance of Learnware Class, and its input shape is (20, 204) + learnware = env_container.get_learnwares_with_container()[0] + input_array = np.random.random(size=(20, 204)) + print(learnware.predict(input_array)) + +The ``mode`` parameter has two options, each for a specific learnware environment loading method: + +- ``'conda'``: Install a separate conda virtual environment for each learnware (automatically deleted after execution); run each learnware independently within its virtual environment. +- ``'docker'``: Install a conda virtual environment inside a Docker container (automatically destroyed after execution); run each learnware independently within the container (requires Docker privileges). + +.. note:: + It's important to note that the "conda" modes are not secure if there are any malicious learnwares. If the user cannot guarantee the security of the learnware they want to load, it's recommended to use the "docker" mode to load the learnware. + From e96ec51315128c63b30a492ac6d2c65d54e3b03f Mon Sep 17 00:00:00 2001 From: bxdd Date: Sun, 31 Dec 2023 04:03:51 +0800 Subject: [PATCH 24/56] [DOC, FIX] fix exp docs --- docs/start/exp.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/start/exp.rst b/docs/start/exp.rst index eaa19e2..84e8e41 100644 --- a/docs/start/exp.rst +++ b/docs/start/exp.rst @@ -152,7 +152,7 @@ With this experimental setup, we evaluated the performance of RKME Image using 1 In some specific settings, the user will have a small number of labelled samples. In such settings, learning the weight of selected learnwares on a limited number of labelled samples can result in a better performance than training directly on a limited number of labelled samples. -.. image:: ../_static/img/image_labeled.png +.. image:: ../_static/img/image_labeled.svg :align: center Text Data Experiment From 2b3e646f36897c7df9afd2d084afbc2eab02ce82 Mon Sep 17 00:00:00 2001 From: bxdd Date: Sun, 31 Dec 2023 04:37:52 +0800 Subject: [PATCH 25/56] [DOC] update quick start --- docs/about/dev.rst | 8 +- docs/components/spec.rst | 3 + docs/start/install.rst | 18 ++++- docs/start/quick.rst | 163 +++++++++++++++++--------------------- docs/workflows/upload.rst | 57 +++++++++++-- 5 files changed, 147 insertions(+), 102 deletions(-) diff --git a/docs/about/dev.rst b/docs/about/dev.rst index eb4a4af..a01de4d 100644 --- a/docs/about/dev.rst +++ b/docs/about/dev.rst @@ -10,8 +10,12 @@ As a developer, you often want make changes to ``Learnware Market`` and hope it .. code-block:: bash - $ git clone https://github.com/Learnware-LAMDA/Learnware.git && cd learnware - $ python setup.py install + $ git clone https://github.com/Learnware-LAMDA/Learnware.git && cd Learnware + $ pip install -e .[dev] + +.. note:: + It's recommended to use anaconda/miniconda to setup the environment. Also you can run ``pip install -e .[full, dev]`` to install ``torch`` automatically. + Commit Format ============== diff --git a/docs/components/spec.rst b/docs/components/spec.rst index de85b94..2b119da 100644 --- a/docs/components/spec.rst +++ b/docs/components/spec.rst @@ -37,6 +37,9 @@ Semantic Specification The semantic specification consists of a "dict" structure that includes keywords "Data", "Task", "Library", "Scenario", "License", "Description", and "Name". In the case of table learnwares, users should additionally provide descriptions for each feature dimension and output dimension through the "Input" and "Output" keywords. +- If "data_type" is "Table", you need to specify the semantics of each dimension of the model's input data to make the uploaded learnware suitable for tasks with heterogeneous feature spaces. +- If "task_type" is "Classification", you need to provide the semantics of model output labels (prediction labels start from 0), making the uploaded learnware suitable for classification tasks with heterogeneous output spaces. +- If "task_type" is "Regression", you need to specify the semantics of each dimension of the model output, making the uploaded learnware suitable for regression tasks with heterogeneous output spaces. Regular Specification ====================================== diff --git a/docs/start/install.rst b/docs/start/install.rst index 5f9cad8..aeb0c8a 100644 --- a/docs/start/install.rst +++ b/docs/start/install.rst @@ -16,6 +16,18 @@ Users can easily install ``Learnware`` by pip according to the following command pip install learnware +In the ``Learnware`` package, besides the base classes, many core functionalities such as "learnware specification generation" and "learnware deployment" rely on the ``torch`` library. Users have the option to manually install ``torch``, or they can directly use the following command to install the ``learnware`` package: + +.. code-block:: bash + + pip install learnware[full] + +.. note:: + However, it's crucial to note that due to the potential complexity of the user's local environment, installing ``learnware[full]`` does not guarantee that ``torch`` will successfully invoke ``CUDA`` in the user's local setting. + + +Install ``Learnware`` Package From Source +========================================== Also, Users can install ``Learnware`` by the source code according to the following steps: @@ -24,11 +36,11 @@ Also, Users can install ``Learnware`` by the source code according to the follow .. code-block:: bash - $ git clone hhttps://github.com/Learnware-LAMDA/Learnware.git && cd learnware - $ python setup.py install + $ git clone hhttps://github.com/Learnware-LAMDA/Learnware.git && cd Learnware + $ pip install -e .[dev] .. note:: - It's recommended to use anaconda/miniconda to setup the environment. + It's recommended to use anaconda/miniconda to setup the environment. Also you can run ``pip install -e .[full, dev]`` to install ``torch`` automatically as well. Use the following code to make sure the installation successful: diff --git a/docs/start/quick.rst b/docs/start/quick.rst index f1858bb..3a0304c 100644 --- a/docs/start/quick.rst +++ b/docs/start/quick.rst @@ -16,76 +16,30 @@ Installation Learnware is currently hosted on `PyPI `_. You can easily intsall ``Learnware`` by following these steps: -- For Windows and Linux users: +.. code-block:: bash - .. code-block:: + pip install learnware - pip install learnware +In the ``Learnware`` package, besides the base classes, many core functionalities such as "learnware specification generation" and "learnware deployment" rely on the ``torch`` library. Users have the option to manually install ``torch``, or they can directly use the following command to install the ``learnware`` package: -- For macOS users: +.. code-block:: bash - .. code-block:: - - conda install -c pytorch faiss - pip install learnware + pip install learnware[full] +.. note:: + However, it's crucial to note that due to the potential complexity of the user's local environment, installing ``learnware[full]`` does not guarantee that ``torch`` will successfully invoke ``CUDA`` in the user's local setting. Prepare Learnware ==================== -The Learnware Market encompasses a board variety of learnwares. A valid learnware is a zipfile that -includes the following four components: - -- ``__init__.py`` - - A Python file that provides interfaces for fitting, predicting, and fine-tuning your model. - -- ``rkme.json`` - - A JSON file that contains the statistical specification of your data. - -- ``learnware.yaml`` - - A configuration file that details your model's class name, the type of statistical specification(e.g. ``RKMETableSpecification`` for Reduced Kernel Mean Embedding), and - the file name of your statistical specification file. - -- ``environment.yaml`` or ``requirements.txt`` - - - ``environment.yaml`` for conda: - - A Conda environment configuration file for running the model. If the model environment is incompatible, this file can be used for manual configuration. - Here's how you can generate this file: - - - Create env config for conda: - - - For Windows users: - - .. code-block:: - - conda env export | findstr /v "^prefix: " > environment.yaml - - - For macOS and Linux users - - .. code-block:: - - conda env export | grep -v "^prefix: " > environment.yaml - - - Recover env from config: - - .. code-block:: - - conda env create -f environment.yaml - - - ``requirements.txt`` for pip: - - A plain text documents that lists all packages necessary for executing the model. These dependencies can be effortlessly installed using pip with the command: - - .. code-block:: - - pip install -r requirements.txt +In learnware ``Learnware`` package, each learnware is encapsulated in a ``zip`` package, which should contain at least the following four files: -We've also detailed the format of the learnware zipfile in :ref:`Learnware Preparation`. +- ``learnware.yaml``: learnware configuration file. +- ``__init__.py``: methods for using the model. +- ``stat.json``: the statistical specification of the learnware. Its filename can be customized and recorded in learnware.yaml. +- ``environment.yaml`` or ``requirements.txt``: specifies the environment for the model. +To facilitate the construction of a learnware, we provide a `Learnware Template `_ that the users can use as a basis for building your own learnware. We've also detailed the format of the learnware ``zip`` package in `Learnware Preparation<../workflows/upload:prepare-learnware>`. Learnware Package Workflow ============================ @@ -100,11 +54,10 @@ You can initialize a basic ``Learnware Market`` named "demo" using the code snip .. code-block:: python - import learnware - from learnware.market import EasyMarket + from learnware.market import instantiate_learnware_market - learnware.init() - easy_market = EasyMarket(market_id="demo", rebuild=True) + # instantiate a demo market + demo_market = instantiate_learnware_market(market_id="demo", name="easy", rebuild=True) Upload Leanware @@ -114,28 +67,30 @@ Before uploading your learnware to the ``Learnware Market``, you'll need to create a semantic specification, ``semantic_spec``. This involves selecting or inputting values for predefined semantic tags to describe the features of your task and model. -For instance, the dictionary snippet below illustrates the semantic specification for a Scikit-Learn type model. -This model is tailored for business scenarios and performs classification tasks on tabular data: +For instance, the following codes illustrates the semantic specification for a Scikit-Learn type model. +This model is tailored for education scenarios and performs classification tasks on tabular data: .. code-block:: python - semantic_spec = { - "Data": {"Values": ["Tabular"], "Type": "Class"}, - "Task": {"Values": ["Classification"], "Type": "Class"}, - "Library": {"Values": ["Scikit-learn"], "Type": "Class"}, - "Scenario": {"Values": ["Business"], "Type": "Tag"}, - "Description": {"Values": "", "Type": "String"}, - "Name": {"Values": "demo_learnware", "Type": "String"}, - } + from learnware.specification import generate_semantic_spec + + semantic_spec = generate_semantic_spec( + name="demo_learnware", + data_type="Table", + task_type="Classification", + library_type="Scikit-learn", + scenarios="Education", + license="MIT", + ) After defining the semantic specification, you can upload your learnware using a single line of code: .. code-block:: python - - easy_market.add_learnware(zip_path, semantic_spec) -Here, ``zip_path`` is the directory of your learnware zipfile. + demo_market.add_learnware(zip_path, semantic_spec) + +Here, ``zip_path`` is the directory of your learnware ``zip`` package. Semantic Specification Search @@ -150,10 +105,11 @@ The ``Learnware Market`` will then perform an initial search using ``user_semant user_info = BaseUserInfo(id="user", semantic_spec=semantic_spec) # search_learnware: performs semantic specification search when user_info doesn't include a statistical specification - _, single_learnware_list, _ = easy_market.search_learnware(user_info) + search_result = easy_market.search_learnware(user_info) + single_result = search_results.get_single_results() - # single_learnware_list: the learnware list returned by semantic specification search - print(single_learnware_list) + # single_result: the List of Tuple[Score, Learnware] returned by semantic specification search + print(single_result) Statistical Specification Search @@ -176,31 +132,35 @@ For example, the code below executes learnware search when using Reduced Set Ker user_info = BaseUserInfo( semantic_spec=user_semantic, stat_info={"RKMETableSpecification": user_spec} ) - (sorted_score_list, single_learnware_list, - mixture_score, mixture_learnware_list) = easy_market.search_learnware(user_info) + search_result = easy_market.search_learnware(user_info) - # sorted_score_list: learnware scores(based on MMD distances), sorted in descending order - print(sorted_score_list) + single_result = search_results.get_single_results() + multiple_result = search_results.get_multiple_results() - # single_learnware_list: learnwares, sorted by scores in descending order - print(single_learnware_list) + # search_item.score: based on MMD distances, sorted in descending order + # search_item.learnware.id: id of learnwares, sorted by scores in descending order + for search_item in single_result: + print(f"score: {search_item.score}, learnware_id: {search_item.learnware.id}") - # mixture_learnware_list: collection of learnwares whose combined use is beneficial - print(mixture_learnware_list) - - # mixture_score: score assigned to the combined set of learnwares in `mixture_learnware_list` - print(mixture_score) + # mixture_item.learnwares: collection of learnwares whose combined use is beneficial + # mixture_item.score: score assigned to the combined set of learnwares in `mixture_item.learnwares` + for mixture_item in multiple_result: + print(f"mixture_score: {mixture_item.score}\n") + mixture_id = " ".join([learnware.id for learnware in mixture_item.learnwares]) + print(f"mixture_learnware: {mixture_id}\n") Reuse Learnwares ------------------------------- With the list of learnwares, ``mixture_learnware_list``, returned from the previous step, you can readily apply them to make predictions on your own data, bypassing the need to train a model from scratch. -We offer two baseline methods for reusing a given list of learnwares: ``JobSelectorReuser`` and ``AveragingReuser``. -Just substitute ``test_x`` in the code snippet below with your own testing data, and you're all set to reuse learnwares! +We offer provide two methods for reusing a given list of learnwares: ``JobSelectorReuser`` and ``AveragingReuser``. +Just substitute ``test_x`` in the code snippet below with your own testing data, and you're all set to reuse learnwares: .. code-block:: python + from learnware.reuse import JobSelectorReuser, AveragingReuser + # using jobselector reuser to reuse the searched learnwares to make prediction reuse_job_selector = JobSelectorReuser(learnware_list=mixture_learnware_list) job_selector_predict_y = reuse_job_selector.predict(user_data=test_x) @@ -210,6 +170,25 @@ Just substitute ``test_x`` in the code snippet below with your own testing data, ensemble_predict_y = reuse_ensemble.predict(user_data=test_x) +We also provide two method when the user has labeled data for reusing a given list of learnwares: ``EnsemblePruningReuser`` and ``FeatureAugmentReuser``. +Just substitute ``test_x`` in the code snippet below with your own testing data, and substitute ``train_X, train_y`` with your own training labeled data, and you're all set to reuse learnwares: + +.. code-block:: python + + from learnware.reuse import EnsemblePruningReuser, FeatureAugmentReuser + + # Use ensemble pruning reuser to reuse the searched learnwares to make prediction + reuse_ensemble = EnsemblePruningReuser(learnware_list=mixture_item.learnwares, mode="classification") + reuse_ensemble.fit(train_X, train_y) + ensemble_pruning_predict_y = reuse_ensemble.predict(user_data=data_X) + + # Use feature augment reuser to reuse the searched learnwares to make prediction + reuse_feature_augment = FeatureAugmentReuser(learnware_list=mixture_item.learnwares, mode="classification") + reuse_feature_augment.fit(train_X, train_y) + feature_augment_predict_y = reuse_feature_augment.predict(user_data=data_X) + + + Auto Workflow Example ============================ diff --git a/docs/workflows/upload.rst b/docs/workflows/upload.rst index 32ce8ec..d3797ce 100644 --- a/docs/workflows/upload.rst +++ b/docs/workflows/upload.rst @@ -7,7 +7,7 @@ In this section, we provide a comprehensive guide on submitting your custom lear We will first discuss the necessary components of a valid learnware, followed by a detailed explanation on how to upload and remove learnwares within ``Learnware Market``. -Prepare Learnware ``Zip`` Package +Prepare Learnware ==================================== In learnware ``Learnware`` package, each learnware is encapsulated in a ``zip`` package, which should contain at least the following four files: @@ -196,12 +196,59 @@ Please note that if you use the ``requirements.txt`` file to specify runtime dep Furthermore, for version-sensitive packages like ``torch``, it's essential to specify package versions in the ``requirements.txt`` file to ensure successful deployment of the uploaded learnware on other machines. -Upload Learnware ``Zip`` Package +Upload Learnware ================================== -After preparing the four required files mentioned above, -you can bundle them into your own learnware ``zip`` package. Along with the generated semantic specification that -succinctly describes the features of your task and model (for more details, please refer to :ref:`semantic specification`), +After preparing the four required files mentioned above, you can bundle them into your own learnware ``zip`` package. + +Prepare Sematic Specifcation +----------------------------- + +The semantic specification succinctly describes the features of your task and model. For uploading learnware ``zip`` package, the user need to prepare the semantic specification. Here is an example of a "Table Data" for a "Classification Task": + +.. code-block:: python + + from learnware.specification import generate_semantic_spec + + # Prepare input description when data_type="Table" + input_description = { + "Dimension": 5, + "Description": { + "0": "age", + "1": "weight", + "2": "body length", + "3": "animal type", + "4": "claw length" + }, + } + + # Prepare output description when task_type in ["Classification", "Regression"] + output_description = { + "Dimension": 3, + "Description": { + "0": "cat", + "1": "dog", + "2": "bird", + }, + } + + # Create semantic specification + semantic_spec = generate_semantic_spec( + name="learnware_example", + description="Just an example for uploading learnware", + data_type="Table", + task_type="Classification", + library_type="Scikit-learn", + scenarios=["Business", "Financial"], + input_description=input_description, + output_description=output_description, + ) + +For more details, please refer to :ref:`semantic specification`, + +Uploading +-------------- + you can effortlessly upload your learnware to the ``Learnware Market`` as follows. .. code-block:: python From e025ef82c8f32cd9168d9c38857ac9e8368d183d Mon Sep 17 00:00:00 2001 From: bxdd Date: Sun, 31 Dec 2023 04:57:37 +0800 Subject: [PATCH 26/56] [DOC] update readme --- README.md | 350 ++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 220 insertions(+), 130 deletions(-) diff --git a/README.md b/README.md index 9b02df8..7958781 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ Machine learning, especially the prevailing big model paradigm, has achieved great success in natural language processing and computer vision applications. However, it still faces challenges such as the requirement of a large amount of labeled training data, difficulty in adapting to changing environments, and catastrophic forgetting when refining trained models incrementally. These big models, while useful in their targeted tasks, often fail to address the above issues and struggle to generalize beyond their specific purposes.
- +
The learnware paradigm introduces the concept of a well-performed, trained machine learning model with a specification that allows future users, who have no prior knowledge of the learnware, to reuse it based on their requirements. @@ -46,167 +46,132 @@ Instead of building a model from scratch, users can submit their requirements to | Unplanned tasks | Open to all legal developers, the learnware market can accommodate helpful learnwares for various tasks. | | Carbon emission | Assembling small models may offer good-enough performance, reducing interest in training large models and the carbon footprint. | -# Quick Start - ## Installation -Learnware is currently hosted on [PyPI](https://pypi.org/). You can easily intsall ``Learnware`` according to the following steps: +Learnware is currently hosted on [PyPI](https://pypi.org/). You can easily install `Learnware` by following these steps: -- For Windows and Linux users: +```bash +pip install learnware +``` - ```bash - pip install learnware - ``` +In the `Learnware` package, besides the base classes, many core functionalities such as "learnware specification generation" and "learnware deployment" rely on the `torch` library. Users have the option to manually install `torch`, or they can directly use the following command to install the `learnware` package: -- For macOS users: +```bash +pip install learnware[full] +``` - ```bash - conda install -c pytorch faiss - pip install learnware - ``` +**Note:** However, it's crucial to note that due to the potential complexity of the user's local environment, installing `learnware[full]` does not guarantee that `torch` will successfully invoke `CUDA` in the user's local setting. ## Prepare Learnware -The Learnware Market consists of a wide range of learnwares. A valid learnware is a zipfile which -is composed of the following four parts. - -- ``__init__.py`` - - A python file offering interfaces for your model's fitting, predicting and fine-tuning. - -- ``rkme.json`` - - A json file containing the statistical specification of your data. - -- ``learnware.yaml`` - - A config file describing your model class name, type of statistical specification(e.g. Reduced Kernel Mean Embedding, ``RKMETableSpecification``), and - the file name of your statistical specification file. - -- ``environment.yaml`` - - A Conda environment configuration file for running the model (if the model environment is incompatible, you can rely on this for manual configuration). - You can generate this file according to the following steps: +In Learnware, each learnware is encapsulated in a `zip` package, which should contain at least the following four files: - - Create env config for conda: +- `learnware.yaml`: learnware configuration file. +- `__init__.py`: methods for using the model. +- `stat.json`: the statistical specification of the learnware. Its filename can be customized and recorded in learnware.yaml. +- `environment.yaml` or `requirements.txt`: specifies the environment for the model. - ```bash - conda env export | grep -v "^prefix: " > environment.yaml - ``` - - - Recover env from config: +To facilitate the construction of a learnware, we provide a [Learnware Template](https://www.bmwu.cloud/static/learnware-template.zip) that users can use as a basis for building their own learnware. We've also detailed the format of the learnware `zip` package in [Learnware Preparation](docs/workflows/upload:prepare-learnware). - ```bash - conda env create -f environment.yaml - ``` +## Learnware Package Workflow -We also demonstrate the detail format of learnware zipfile in [DOC link], and also please refer to [Examples](./examples/workflow_by_code/learnware_example) for concrete learnware zipfile example. - -## Learnware Market Workflow - -Users can start an ``Learnware`` workflow according to the following steps: +Users can start a `Learnware` workflow according to the following steps: ### Initialize a Learnware Market -The ``EasyMarket`` class implements the most basic set of functions in a ``Learnware``. -You can use the following code snippet to initialize a basic ``Learnware`` named "demo": +The `EasyMarket` class provides the core functions of a `Learnware Market`. You can initialize a basic `Learnware Market` named "demo" using the code snippet below: ```python -import learnware -from learnware.market import EasyMarket +from learnware.market import instantiate_learnware_market -learnware.init() -easy_market = EasyMarket(market_id="demo", rebuild=True) +# instantiate a demo market +demo_market = instantiate_learnware_market(market_id="demo", name="easy", rebuild=True) ``` -### Upload Leanwares +### Upload Learnware -Before uploading your learnware into the ``Learnware``, -create a semantic specification ``semantic_spec`` by selecting or filling in values for the predefined semantic tags -to describe the features of your task and model. +Before uploading your learnware to the `Learnware Market`, you'll need to create a semantic specification, `semantic_spec`. This involves selecting or inputting values for predefined semantic tags to describe the features of your task and model. -For example, the following code snippet demonstrates the semantic specification -of a Scikit-Learn type model, which is designed for business scenario and performs classification on tabular data: +For instance, the following code illustrates the semantic specification for a Scikit-Learn type model. This model is tailored for education scenarios and performs classification tasks on tabular data: ```python -semantic_spec = { - "Data": {"Values": ["Tabular"], "Type": "Class"}, - "Task": {"Values": ["Classification"], "Type": "Class"}, - "Library": {"Values": ["Scikit-learn"], "Type": "Class"}, - "Scenario": {"Values": ["Business"], "Type": "Tag"}, - "Description": {"Values": "", "Type": "String"}, - "Name": {"Values": "demo_learnware", "Type": "String"}, -} +from learnware.specification import generate_semantic_spec + +semantic_spec = generate_semantic_spec( + name="demo_learnware", + data_type="Table", + task_type="Classification", + library_type="Scikit-learn", + scenarios="Education", + license="MIT", +) ``` -Once the semantic specification is defined, -you can easily upload your learnware with a single line of code: - +After defining the semantic specification, you can upload your learnware using a single line of code: + ```python -easy_market.add_learnware(zip_path, semantic_spec) +demo_market.add_learnware(zip_path, semantic_spec) ``` -Here, ``zip_path`` is the directory of your learnware zipfile. +Here, `zip_path` is the directory of your learnware `zip` package. ### Semantic Specification Search -To search for learnwares that fit your task purpose, -you should also provide a semantic specification ``user_semantic`` that describes the characteristics of your task. -The ``Learnware`` will perform a first-stage search based on ``user_semantic``, -identifying potentially helpful leranwares whose models solve tasks similar to your requirements. +To find learnwares that align with your task's purpose, you'll need to provide a semantic specification, `user_semantic`, that outlines your task's characteristics. The `Learnware Market` will then perform an initial search using `user_semantic`, identifying potentially useful learnwares with models that solve tasks similar to your requirements. ```python -# construct user_info which includes semantic specification for searching learnware +# construct user_info, which includes a semantic specification user_info = BaseUserInfo(id="user", semantic_spec=semantic_spec) -# search_learnware performs semantic specification search if user_info doesn't include a statistical specification -_, single_learnware_list, _ = easy_market.search_learnware(user_info) +# search_learnware: performs semantic specification search when user_info doesn't include a statistical specification +search_result = easy_market.search_learnware(user_info) +single_result = search_results.get_single_results() -# single_learnware_list is the learnware list by semantic specification searching -print(single_learnware_list) +# single_result: the List of Tuple[Score, Learnware] returned by semantic specification search +print(single_result) ``` ### Statistical Specification Search -If you choose to porvide your own statistical specification file ``stat.json``, -the ``Learnware`` can perform a more accurate leanware selection from -the learnwares returned by the previous step. This second-stage search is based on statistical information -and returns one or more learnwares that are most likely to be helpful for your task. +If you decide in favor of providing your own statistical specification file, `stat.json`, the `Learnware Market` can further refine the selection of learnwares from the previous step. This second-stage search leverages statistical information to identify one or more learnwares that are most likely to be beneficial for your task. -For example, the following code is designed to work with Reduced Set Kernel Embedding as a statistical specification: +For example, the code below executes learnware search when using Reduced Set Kernel Embedding as the statistical specification: ```python import learnware.specification as specification user_spec = specification.RKMETableSpecification() + +# unzip_path: directory for unzipped learnware zipfile user_spec.load(os.path.join(unzip_path, "rkme.json")) user_info = BaseUserInfo( semantic_spec=user_semantic, stat_info={"RKMETableSpecification": user_spec} ) -(sorted_score_list, single_learnware_list, - mixture_score, mixture_learnware_list) = easy_market.search_learnware(user_info) - -# sorted_score_list is the learnware scores based on MMD distances, sorted in descending order -print(sorted_score_list) - -# single_learnware_list is the learnwares sorted in descending order based on their scores -print(single_learnware_list) - -# mixture_learnware_list is the learnwares whose mixture is helpful for your task -print(mixture_learnware_list) - -# mixture_score is the score of the mixture of learnwares -print(mixture_score) +search_result = easy_market.search_learnware(user_info) + +single_result = search_results.get_single_results() +multiple_result = search_results.get_multiple_results() + +# search_item.score: based on MMD distances, sorted in descending order +# search_item.learnware.id: id of learnwares, sorted by scores in descending order +for search_item in single_result: + print(f"score: {search_item.score}, learnware_id: {search_item.learnware.id}") + +# mixture_item.learnwares: collection of learnwares whose combined use is beneficial +# mixture_item.score: score assigned to the combined set of learnwares in `mixture_item.learnwares` +for mixture_item in multiple_result: + print(f"mixture_score: {mixture_item.score}\n") + mixture_id = " ".join([learnware.id for learnware in mixture_item.learnwares]) + print(f"mixture_learnware: {mixture_id}\n") ``` ### Reuse Learnwares -Based on the returned list of learnwares ``mixture_learnware_list`` in the previous step, -you can easily reuse them to make predictions your own data, instead of training a model from scratch. -We provide two baseline methods for reusing a given list of learnwares, namely ``JobSelectorReuser`` and ``AveragingReuser``. -Simply replace ``test_x`` in the code snippet below with your own testing data and start reusing learnwares! +With the list of learnwares, `mixture_learnware_list`, returned from the previous step, you can readily apply them to make predictions on your own data, bypassing the need to train a model from scratch. We provide two methods for reusing a given list of learnwares: `JobSelectorReuser` and `AveragingReuser`. Substitute `test_x` in the code snippet below with your testing data, and you're all set to reuse learnwares: ```python +from learnware.reuse import JobSelectorReuser, AveragingReuser + # using jobselector reuser to reuse the searched learnwares to make prediction reuse_job_selector = JobSelectorReuser(learnware_list=mixture_learnware_list) job_selector_predict_y = reuse_job_selector.predict(user_data=test_x) @@ -216,57 +181,182 @@ reuse_ensemble = AveragingReuser(learnware_list=mixture_learnware_list) ensemble_predict_y = reuse_ensemble.predict(user_data=test_x) ``` -## Auto Workflow Example +We also provide two methods when the user has labeled data for reusing a given list of learnwares: `EnsemblePruningReuser` and `FeatureAugmentReuser`. Substitute `test_x` in the code snippet below with your testing data, and substitute `train_X, train_y` with your training labeled data, and you're all set to reuse learnwares: + +```python +from learnware.reuse import EnsemblePruningReuser, FeatureAugmentReuser + +# Use ensemble pruning reuser to reuse the searched learnwares to make prediction +reuse_ensemble = EnsemblePruningReuser(learnware_list=mixture_item.learnwares, mode="classification") +reuse_ensemble.fit(train + +_X, train_y) +ensemble_pruning_predict_y = reuse_ensemble.predict(user_data=data_X) -``Learnware`` also provides an auto workflow example, which includes preparing learnwares, upload and delete learnware from markets, search learnware with semantic specifications and statistical specifications. The users can run ``examples/workflow_by_code.py`` to try the basic workflow of ``Learnware``. +# Use feature augment reuser to reuse the searched learnwares to make prediction +reuse_feature_augment = FeatureAugmentReuser(learnware_list=mixture_item.learnwares, mode="classification") +reuse_feature_augment.fit(train_X, train_y) +feature_augment_predict_y = reuse_feature_augment.predict(user_data=data_X) +``` + +### Auto Workflow Example +The `Learnware` also offers automated workflow examples. This includes preparing learnwares, uploading and deleting learnwares from the market, and searching for learnwares using both semantic and statistical specifications. To experience the basic workflow of the `Learnware` package, the users can run `test/test_workflow/test_workflow.py` to try the basic workflow of `Learnware`. # Experiments and Examples +This chapter will introduce related experiments to illustrate the search and reuse performance of our learnware system. + ## Environment -For all experiments, we used a single linux server. Details on the specifications are listed in the table below. All processors were used for training and evaluating. +For all experiments, we used a single Linux server. Details on the specifications are listed in the table below. All processors were used for training and evaluating. + +| System | GPU | CPU | +|----------------------|--------------------|--------------------------| +| Ubuntu 20.04.4 LTS | Nvidia Tesla V100S | Intel(R) Xeon(R) Gold 6240R | + +## Tabular Data Experiments -| System | GPU | CPU | -| ---- | ---- | ---- | -| Ubuntu 20.04.4 LTS | Nvidia Tesla V100S | Intel(R) Xeon(R) Gold 6240R | +### Datasets +Our study involved three public datasets in the sales forecasting field: [Predict Future Sales (PFS)](https://www.kaggle.com/c/competitive-data-science-predict-future-sales/data), [M5 Forecasting (M5)](https://www.kaggle.com/competitions/m5-forecasting-accuracy/data), and [Corporacion](https://www.kaggle.com/competitions/favorita-grocery-sales-forecasting/data). +We applied various pre-processing methods to these datasets to enhance the richness of the data. After pre-processing, we first divided each dataset by store and then split the data for each store into training and test sets. Specifically: -## Datasets +- For PFS, the test set consisted of the last month's data from each store. +- For M5, we designated the final 28 days' data from each store as the test set. +- For Corporacion, the test set was composed of the last 16 days of data from each store. -We designed experiments on three publicly available datasets, namely Prediction Future Sales (PFS), M5 Forecasting (M5) and CIFAR 10. For the two sales forecasting data sets of PFS and M5, we divide the user data according to different stores, and train the Ridge model and LightGBM model on the corresponding data respectively. For the CIFAR10 image classification task, we first randomly pick 6 to 10 categories, and randomly select 800 to 2000 samples from each category from the categories corresponding to the training set, constituting a total of 50 different uploaders. For test users, we first randomly pick 3 to 6 categories, and randomly select 150 to 350 samples from each category from the corresponding categories from the test set, constituting a total of 20 different users. +In the submitting stage, the Corporacion dataset's 55 stores are regarded as 165 uploaders, each employing one of three different feature engineering methods. For the PFS dataset, 100 uploaders are established, each using one of two feature engineering approaches. These uploaders then utilize their respective stores' training data to develop LightGBM models. As a result, the learnware market comprises 265 learnwares, derived from five types of feature spaces and two types of label spaces. -We tested the efficiency of the specification generation and the accuracy of the search and reuse model respectively. The evaluation index on PFS and M5 data is RMSE, and the evaluation index on CIFAR10 classification task is classification accuracy +Based on the specific design of user tasks, our experiments were primarily categorized into two types: -## Results +- **homogeneous experiments** are designed to evaluate performance when users can reuse learnwares in the learnware market that have the same feature space as their tasks (homogeneous learnwares). This contributes to showing the effectiveness of using learnwares that align closely with the user's specific requirements. + +- **heterogeneous experiments** aim to evaluate the performance of identifying and reusing helpful heterogeneous learnwares in situations where no available learnwares match the feature space of the user's task. This helps to highlight the potential of learnwares for applications beyond their original purpose. + +### Homogeneous Tabular Dataset + +For homogeneous experiments, the 55 stores in the Corporacion dataset act as 55 users, each applying one feature engineering method, and using the test data from their respective store as user data. These users can then search for homogeneous learnwares in the market with the same feature spaces as their tasks. + +The Mean Squared Error (MSE) of search and reuse across all users is presented in the table below: + +| Setting | MSE | +|-----------------------------------|--------| +| Mean in Market (Single) | 0.331 | +| Best in Market (Single) | 0.151 | +| Top-1 Reuse (Single) | 0.280 | +| Job Selector Reuse (Multiple) | 0.274 | +| Average Ensemble Reuse (Multiple) | 0.267 | + +When users have both test data and limited training data derived from their original data, reusing single or multiple searched learnwares from the market can often yield better results than training models from scratch on limited training data. We present the change curves in MSE for the user's self-trained model, as well as for the Feature Augmentation single learnware reuse method and the Ensemble Pruning multiple learnware reuse method. These curves display their performance on the user's test data as the amount of labeled training data increases. The average results across 55 users are depicted in the figure below: + +
+ +
-The time-consuming specification generation is shown in the table below: +From the figure, it's evident that when users have limited training data, the performance of reusing single/multiple table learnwares is superior to that of the user's own model. This emphasizes the benefit of learnware reuse in significantly reducing the need for extensive training data and achieving enhanced results when available user training data is limited. -| Dataset | Data Dimensions | Specification Generation Time (s) | -| ---- | ---- | ---- | -| PFS | 8714274*31 | < 1.5 | -| M5 | 46027957*82 | 9~15 | -| CIFAR 10 | 9000\*3\*32\*32 | 7~10 | +### Heterogeneous Tabular Dataset +In heterogeneous experiments, the learnware market would recommend helpful heterogeneous learnwares with different feature spaces with the user tasks. Based on whether there are learnwares in the market that handle tasks similar to the user's task, the experiments can be further subdivided into the following two types: -The accuracy of search and reuse is shown in the table below: +#### Cross Feature Space Experiments -| Dataset | Top-1 Performance | Job Selector Reuse | Average Ensemble Reuse | -| ---- | ---- | ---- | ---- | -| PFS | 1.955 +/- 2.866 | 2.175 +/- 2.847 | 1.950 +/- 2.888 | -| M5 | 2.066 +/- 0.424 | 2.116 +/- 0.472 | 2.512 +/- 0.573 | -| CIFAR 10 | 0.619 +/- 0.138 | 0.585 +/- 0.056 | .715 +/- 0.075 | +We designate the 41 stores in the PFS dataset as users, creating their user data with an alternative feature engineering approach that varies from the methods employed by learnwares in the market. Consequently, while the market's learnwares from the PFS dataset undertake tasks very similar to our users, the feature spaces do not match exactly. In this experimental configuration, we tested various heterogeneous learnware reuse methods (without using user's labeled data) and compared them to the user's self-trained model based on a small amount of training data. The average MSE performance across 41 users is as follows: + +| Setting | MSE | +|-----------------------------------|--------| +| Mean in Market (Single) | 1.459 | +| Best in Market (Single) | 1.226 | +| Top-1 Reuse (Single) | 1.407 | +| Average Ensemble Reuse (Multiple) | 1.312 | +| User model with 50 labeled data | 1.267 | + +From the results, it is noticeable that the learnware market still performs quite well even when users lack labeled data, provided it includes learnwares addressing tasks that are similar but not identical to the user's. In these instances, the market's effectiveness can match or even rival scenarios where users have access to a limited quantity of labeled data. + +#### Cross Task Experiments + +Here we have chosen the 10 stores from the M5 dataset to act as users. Although the broad task of sales forecasting is similar to the tasks addressed by the learnwares in the market, there are no learnwares available that directly cater to the M5 sales forecasting requirements. All learnwares show variations in both feature and label spaces compared to the tasks of M5 users. We present the change curves in RMSE for the user's self-trained model and several learnware reuse methods. These curves display their performance on the user's test data as the amount of labeled training data increases. The average results across 10 users are depicted in the figure below: + +
+ +
+ +We can observe that heterogeneous learnwares are beneficial when there's a limited amount of the user's labeled training data available, aiding in better alignment with the user's specific task. This underscores the potential of learnwares to be applied to tasks beyond their original purpose. + +## Image Data Experiment + +For the CIFAR-10 dataset, we sampled the training set uneven + +ly by category and constructed unbalanced training datasets for the 50 learnwares that contained only some of the categories. This makes it unlikely that there exists any learnware in the learnware market that can accurately handle all categories of data; only the learnware whose training data is closest to the data distribution of the target task is likely to perform well on the target task. Specifically, the probability of each category being sampled obeys a random multinomial distribution, with a non-zero probability of sampling on only 4 categories, and the sampling ratio is 0.4: 0.4: 0.1: 0.1. Ultimately, the training set for each learnware contains 12,000 samples covering the data of 4 categories in CIFAR-10. + +We constructed 50 target tasks using data from the test set of CIFAR-10. Similar to constructing the training set for the learnwares, to allow for some variation between tasks, we sampled the test set unevenly. Specifically, the probability of each category being sampled obeys a random multinomial distribution, with non-zero sampling probability on 6 categories, and the sampling ratio is 0.3: 0.3: 0.1: 0.1: 0.1: 0.1. Ultimately, each target task contains 3000 samples covering the data of 6 categories in CIFAR-10. + +With this experimental setup, we evaluated the performance of RKME Image using 1 - Accuracy as the loss. + +| Setting | Accuracy | +|-----------------------------------|----------| +| Mean in Market (Single) | 0.655 | +| Best in Market (Single) | 0.304 | +| Top-1 Reuse (Single) | 0.406 | +| Job Selector Reuse (Multiple) | 0.406 | +| Average Ensemble Reuse (Multiple) | 0.310 | + +In some specific settings, the user will have a small number of labelled samples. In such settings, learning the weight of selected learnwares on a limited number of labelled samples can result in better performance than training directly on a limited number of labelled samples. + +
+ +
+ +## Text Data Experiment + +### Datasets + +We conducted experiments on the widely used text benchmark dataset: [20-newsgroup](http://qwone.com/~jason/20Newsgroups/). 20-newsgroup is a renowned text classification benchmark with a hierarchical structure, featuring 5 superclasses {comp, rec, sci, talk, misc}. + +In the submitting stage, we enumerated all combinations of three superclasses from the five available, randomly sampling 50% of each combination from the training set to create datasets for 50 uploaders. + +In the deploying stage, we considered all combinations of two superclasses out of the five, selecting all data for each combination from the testing set as a test dataset for one user. This resulted in 10 users. The user's own training data was generated using the same sampling procedure as the user test data, despite originating from the training dataset. + +Model training comprised two parts: the first part involved training a tfidf feature extractor, and the second part used the extracted text feature vectors to train a naive Bayes classifier. + +Our experiments comprise two components: + +- **unlabeled_text_example** is designed to evaluate performance when users possess only testing data, searching and reusing learnware available in the market. +- **labeled_text_example** aims to assess performance when users have both testing and limited training data, searching and reusing learnware directly from the market instead of training a model from scratch. This helps determine the amount of training data saved for the user. + +### Results + +- **unlabeled_text_example**: + +The table below presents the mean accuracy of search and reuse across all users: + +| Setting | Accuracy | +|-----------------------------------|----------| +| Mean in Market (Single) | 0.507 | +| Best in Market (Single) | 0.859 | +| Top-1 Reuse (Single) | 0.846 | +| Job Selector Reuse (Multiple) | 0.845 | +| Average Ensemble Reuse (Multiple) | 0.862 | + +- **labeled_text_example**: + +We present the change curves in classification error rates for both the user's self-trained model and the multiple learnware reuse (EnsemblePrune), showcasing their performance on the user's test data as the user's training data increases. The average results across 10 users are depicted below: + +
+ +
+ +From the figure above, it is evident that when the user's own training data is limited, the performance of multiple learnware reuse surpasses that of the user's own model. As the user's training data grows, it is expected that the user's model will eventually outperform the learnware reuse. This underscores the value of reusing learnware to significantly conserve training data and achieve superior performance when user training data is limited. # About ## Contributor We appreciate all contributions and thank all the contributors! -TODO: Here paste the github API after publishing: - -[Pic after publish]() +[All Contributor](https://github.com/Learnware-LAMDA/Learnware/graphs/contributors) ## About us -Visit [LAMDA's official website](http://www.lamda.nju.edu.cn/MainPage.ashx). +Visit [LAMDA's official website](http://www.lamda.nju.edu.cn/). From 9a9d16da03424643994a00d25dbf9d99fc58c18f Mon Sep 17 00:00:00 2001 From: bxdd Date: Sun, 31 Dec 2023 04:58:51 +0800 Subject: [PATCH 27/56] [DOC] modify README --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7958781..b0a5f41 100644 --- a/README.md +++ b/README.md @@ -355,7 +355,9 @@ From the figure above, it is evident that when the user's own training data is l ## Contributor We appreciate all contributions and thank all the contributors! -[All Contributor](https://github.com/Learnware-LAMDA/Learnware/graphs/contributors) +
+ +
## About us From 79f25a3430835580d90585b52f00fcd7ec37e57f Mon Sep 17 00:00:00 2001 From: bxdd Date: Sun, 31 Dec 2023 05:01:59 +0800 Subject: [PATCH 28/56] [MNT] Center Table --- README.md | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b0a5f41..0523cf5 100644 --- a/README.md +++ b/README.md @@ -211,10 +211,14 @@ This chapter will introduce related experiments to illustrate the search and reu For all experiments, we used a single Linux server. Details on the specifications are listed in the table below. All processors were used for training and evaluating. +
+ | System | GPU | CPU | |----------------------|--------------------|--------------------------| | Ubuntu 20.04.4 LTS | Nvidia Tesla V100S | Intel(R) Xeon(R) Gold 6240R | +
+ ## Tabular Data Experiments ### Datasets @@ -241,6 +245,8 @@ For homogeneous experiments, the 55 stores in the Corporacion dataset act as 55 The Mean Squared Error (MSE) of search and reuse across all users is presented in the table below: +
+ | Setting | MSE | |-----------------------------------|--------| | Mean in Market (Single) | 0.331 | @@ -249,6 +255,8 @@ The Mean Squared Error (MSE) of search and reuse across all users is presented i | Job Selector Reuse (Multiple) | 0.274 | | Average Ensemble Reuse (Multiple) | 0.267 | +
+ When users have both test data and limited training data derived from their original data, reusing single or multiple searched learnwares from the market can often yield better results than training models from scratch on limited training data. We present the change curves in MSE for the user's self-trained model, as well as for the Feature Augmentation single learnware reuse method and the Ensemble Pruning multiple learnware reuse method. These curves display their performance on the user's test data as the amount of labeled training data increases. The average results across 55 users are depicted in the figure below:
@@ -265,6 +273,8 @@ In heterogeneous experiments, the learnware market would recommend helpful heter We designate the 41 stores in the PFS dataset as users, creating their user data with an alternative feature engineering approach that varies from the methods employed by learnwares in the market. Consequently, while the market's learnwares from the PFS dataset undertake tasks very similar to our users, the feature spaces do not match exactly. In this experimental configuration, we tested various heterogeneous learnware reuse methods (without using user's labeled data) and compared them to the user's self-trained model based on a small amount of training data. The average MSE performance across 41 users is as follows: +
+ | Setting | MSE | |-----------------------------------|--------| | Mean in Market (Single) | 1.459 | @@ -273,6 +283,8 @@ We designate the 41 stores in the PFS dataset as users, creating their user data | Average Ensemble Reuse (Multiple) | 1.312 | | User model with 50 labeled data | 1.267 | +
+ From the results, it is noticeable that the learnware market still performs quite well even when users lack labeled data, provided it includes learnwares addressing tasks that are similar but not identical to the user's. In these instances, the market's effectiveness can match or even rival scenarios where users have access to a limited quantity of labeled data. #### Cross Task Experiments @@ -295,6 +307,8 @@ We constructed 50 target tasks using data from the test set of CIFAR-10. Similar With this experimental setup, we evaluated the performance of RKME Image using 1 - Accuracy as the loss. +
+ | Setting | Accuracy | |-----------------------------------|----------| | Mean in Market (Single) | 0.655 | @@ -303,6 +317,8 @@ With this experimental setup, we evaluated the performance of RKME Image using 1 | Job Selector Reuse (Multiple) | 0.406 | | Average Ensemble Reuse (Multiple) | 0.310 | +
+ In some specific settings, the user will have a small number of labelled samples. In such settings, learning the weight of selected learnwares on a limited number of labelled samples can result in better performance than training directly on a limited number of labelled samples.
@@ -332,6 +348,8 @@ Our experiments comprise two components: The table below presents the mean accuracy of search and reuse across all users: +
+ | Setting | Accuracy | |-----------------------------------|----------| | Mean in Market (Single) | 0.507 | @@ -340,6 +358,8 @@ The table below presents the mean accuracy of search and reuse across all users: | Job Selector Reuse (Multiple) | 0.845 | | Average Ensemble Reuse (Multiple) | 0.862 | +
+ - **labeled_text_example**: We present the change curves in classification error rates for both the user's self-trained model and the multiple learnware reuse (EnsemblePrune), showcasing their performance on the user's test data as the user's training data increases. The average results across 10 users are depicted below: @@ -352,7 +372,7 @@ From the figure above, it is evident that when the user's own training data is l # About -## Contributor +## Contributors We appreciate all contributions and thank all the contributors!
From ec334229c1e86895c77f7d2b4d82e9839d4fef80 Mon Sep 17 00:00:00 2001 From: bxdd Date: Sun, 31 Dec 2023 05:05:43 +0800 Subject: [PATCH 29/56] [MNT] add test CI badge --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 0523cf5..1d45dd6 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ [![Python Versions](https://img.shields.io/pypi/pyversions/learnware.svg?logo=python&logoColor=white)](https://pypi.org/project/learnware/#files) [![Platform](https://img.shields.io/badge/platform-linux%20%7C%20windows%20%7C%20macos-lightgrey)](https://pypi.org/project/learnware/#files) +[![Test](https://github.com/Learnware-LAMDA/Learnware/actions/workflows/install_learnware_with_source.yaml/badge.svg)](https://github.com/Learnware-LAMDA/Learnware/actions) [![PypI Versions](https://img.shields.io/pypi/v/learnware)](https://pypi.org/project/learnware/#history) [![Documentation Status](https://readthedocs.org/projects/learnware/badge/?version=latest)](https://learnware.readthedocs.io/en/latest/?badge=latest) [![License](https://img.shields.io/pypi/l/learnware)](LICENSE) From c9207fd2bf6a3717a3d7f2602cc8c9ded7256f30 Mon Sep 17 00:00:00 2001 From: bxdd Date: Sun, 31 Dec 2023 05:07:04 +0800 Subject: [PATCH 30/56] [FIX, DOC] fix readme format --- README.md | 4 +--- docs/start/quick.rst | 2 -- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/README.md b/README.md index 1d45dd6..67af35f 100644 --- a/README.md +++ b/README.md @@ -189,9 +189,7 @@ from learnware.reuse import EnsemblePruningReuser, FeatureAugmentReuser # Use ensemble pruning reuser to reuse the searched learnwares to make prediction reuse_ensemble = EnsemblePruningReuser(learnware_list=mixture_item.learnwares, mode="classification") -reuse_ensemble.fit(train - -_X, train_y) +reuse_ensemble.fit(train_X, train_y) ensemble_pruning_predict_y = reuse_ensemble.predict(user_data=data_X) # Use feature augment reuser to reuse the searched learnwares to make prediction diff --git a/docs/start/quick.rst b/docs/start/quick.rst index 3a0304c..bd1d3cb 100644 --- a/docs/start/quick.rst +++ b/docs/start/quick.rst @@ -187,8 +187,6 @@ Just substitute ``test_x`` in the code snippet below with your own testing data, reuse_feature_augment.fit(train_X, train_y) feature_augment_predict_y = reuse_feature_augment.predict(user_data=data_X) - - Auto Workflow Example ============================ From dc006f045bac71855bd1b4a250dbeccd7d5ff7ae Mon Sep 17 00:00:00 2001 From: bxdd Date: Sun, 31 Dec 2023 05:13:50 +0800 Subject: [PATCH 31/56] [FIX, DOC] fix readme exp --- README.md | 4 ++-- docs/start/quick.rst | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 67af35f..bed040e 100644 --- a/README.md +++ b/README.md @@ -174,11 +174,11 @@ With the list of learnwares, `mixture_learnware_list`, returned from the previou from learnware.reuse import JobSelectorReuser, AveragingReuser # using jobselector reuser to reuse the searched learnwares to make prediction -reuse_job_selector = JobSelectorReuser(learnware_list=mixture_learnware_list) +reuse_job_selector = JobSelectorReuser(learnware_list=mixture_item.learnwares) job_selector_predict_y = reuse_job_selector.predict(user_data=test_x) # using averaging ensemble reuser to reuse the searched learnwares to make prediction -reuse_ensemble = AveragingReuser(learnware_list=mixture_learnware_list) +reuse_ensemble = AveragingReuser(learnware_list=mixture_item.learnwares) ensemble_predict_y = reuse_ensemble.predict(user_data=test_x) ``` diff --git a/docs/start/quick.rst b/docs/start/quick.rst index bd1d3cb..6f386cd 100644 --- a/docs/start/quick.rst +++ b/docs/start/quick.rst @@ -162,11 +162,11 @@ Just substitute ``test_x`` in the code snippet below with your own testing data, from learnware.reuse import JobSelectorReuser, AveragingReuser # using jobselector reuser to reuse the searched learnwares to make prediction - reuse_job_selector = JobSelectorReuser(learnware_list=mixture_learnware_list) + reuse_job_selector = JobSelectorReuser(learnware_list=mixture_item.learnwares) job_selector_predict_y = reuse_job_selector.predict(user_data=test_x) # using averaging ensemble reuser to reuse the searched learnwares to make prediction - reuse_ensemble = AveragingReuser(learnware_list=mixture_learnware_list) + reuse_ensemble = AveragingReuser(learnware_list=mixture_item.learnwares) ensemble_predict_y = reuse_ensemble.predict(user_data=test_x) From 6801542450320426fb81b88ff79a424cc15069a4 Mon Sep 17 00:00:00 2001 From: bxdd Date: Sun, 31 Dec 2023 05:15:36 +0800 Subject: [PATCH 32/56] [FIX, DOC] fix readme exp --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index bed040e..7e9e211 100644 --- a/README.md +++ b/README.md @@ -204,8 +204,6 @@ The `Learnware` also offers automated workflow examples. This includes preparing # Experiments and Examples -This chapter will introduce related experiments to illustrate the search and reuse performance of our learnware system. - ## Environment For all experiments, we used a single Linux server. Details on the specifications are listed in the table below. All processors were used for training and evaluating. From 4ce626982cae95313d1e98d664c27d68dcf3964e Mon Sep 17 00:00:00 2001 From: bxdd Date: Sun, 31 Dec 2023 15:08:58 +0800 Subject: [PATCH 33/56] [DOC, ENH] add learnware framework svg --- README.md | 9 ++++++++- docs/_static/img/learnware_framework.svg | 4 ++++ docs/start/intro.rst | 6 +++++- 3 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 docs/_static/img/learnware_framework.svg diff --git a/README.md b/README.md index 7e9e211..bb2b97b 100644 --- a/README.md +++ b/README.md @@ -20,9 +20,16 @@ ## Framework
- +
+ +At the workflow level, `Learnware` package consists of `Submitting Stage` and `Deploying Stage`. +At the module level, `Learnware` package is a platform that consists of above components. The components are designed as loose-coupled modules and each component could be used stand-alone. + + +## Learnware Paradigm + Machine learning, especially the prevailing big model paradigm, has achieved great success in natural language processing and computer vision applications. However, it still faces challenges such as the requirement of a large amount of labeled training data, difficulty in adapting to changing environments, and catastrophic forgetting when refining trained models incrementally. These big models, while useful in their targeted tasks, often fail to address the above issues and struggle to generalize beyond their specific purposes.
diff --git a/docs/_static/img/learnware_framework.svg b/docs/_static/img/learnware_framework.svg new file mode 100644 index 0000000..92e0d37 --- /dev/null +++ b/docs/_static/img/learnware_framework.svg @@ -0,0 +1,4 @@ + + + +
Market
Market
Specification
Specification
Interface
Interface
Workflow
Workflow
Learnware Standard
Learnware Standard
Zip Package





Zip Package...
Semantic
Specification

Semantic...
Yaml Config
Yaml Config
Model File
Model File
Env Dependencies
Env Dependencies
Learnware
Learnware
Model



Model...
Classfication
Classficat...
Feature Extraction
Feature Extract...
Regression
Regression
Specification



Specification...
Semantic
Semantic
Others
Others
Statistical
Statistical
create
cre...
Market
Market
Checker







Checker...
Searcher



Searcher...
Semantic
Semantic
Statistical
Statisti...
Conda
Conda
Semantic
Semantic
Statictical
Statictica...
Database
Database
Organizer


Organizer...
Easy
Easy
Hetero
Hetero
submit
sub...
Submitting Workflow
Submitting Workflow
Deploying Workflow
Deploying Workflow
UserInfo






UserInfo...
Semantic
Spec
Semantic...
Statistical
Info
Statisti...
SearchResult






SearchResult...
Scores
Scores
Learnwares



Learnwares...
search
sea...
return
ret...
Executable
Learnwares





Executable...
ModelContainer


ModelContaine...
Docker
Docker
Conda
Conda
Reuser
Reuser
Model
Model
Specification
Specificat...
ContainerManager
ContainerManager

Executable
Learnwares

Executable...
Data Free Reuser


Data Free Reuser...
Averaging
Averaging
JobSelector
JobSelecto...
Data-Dependent Reuser



Data-Dependent Reuser...
Ensemble
Purning
Ensemble...
Feature
Argument
Feature...
Aligner







Aligner...
Feature
Aligner
Featur...
Label
Aligner
Label...
Specification
Specificati...
Learnware Client





Learnware Client...
login
login
BeimingWu Server



BeimingWu Server...
search
search
upload
upload
delete
delete
update
update
load
load
Network
Network
Statistical Specification
Statistical Specification
Semantic Specification










Semantic Specificati...
Data
Data
Feature
Featur...
Task
Task
Label
Label
Library
Librar...
Description
Descripti...
Name
Name
Scenario
Scenario
License
Licens...
Others
Others
System Specification
System Specification
Regular Specification
Regular Specification
RKMEStatSpecification










RKMEStatSpecification...
Data Set


Data Set...
Table
Table
Image
Image
Text
Text
RKME
RKME
Reduced Set


Reduced Set...
Weights
Weight...
Reduced Points
Reduced Point...
HeteroMapSpecification









HeteroMapSpecification...
RKME Reduced Set
RKME Reduced Set
HeteroMapping
HeteroMapping
Hetero Reduced Set



Hetero Reduced Set...
Weights
Weight...
Homo Embeddings
Homo Embeddings
Organizer
Organizer
Searcher
Searcher
EasyOrganizer
EasyOrganizer
HeteroOrganizer
HeteroOrganizer
Database



Database...
SqlLite
SqlLite
PostgresSql
PostgresSq...
HeteroMapping
HeteroMapping
HeteroMap
Specification
HeteroMap...
update
upd...
generate
gen...
save
save
load
load
save
save
load
load
Homo
StatSearcher
Homo...
Semantic Searcher



Semantic Searcher...
Checker











Checker...
Conda Checker








Conda Checker...
Semantic Checker
Semantic Checke...
Executable
Learnwares



Executable...
ModelContainer
ModelContaine...
Statistical Checker
Statistical Che...
check
che...
HeteroMap
Specification
HeteroMap...
RKMEStat
Specification
RKMEStat...
Heterom
StatSearcher
Heterom...
Fuzzy
Semantic Searcher
Fuzzy...
Exact
Semantic Searcher
Exact...
match
mat...
match
mat...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/docs/start/intro.rst b/docs/start/intro.rst index fa153d2..6c8279a 100644 --- a/docs/start/intro.rst +++ b/docs/start/intro.rst @@ -76,4 +76,8 @@ Procedure of Learnware Paradigm Learnware Package Design ========================== -TBD by xiaodong. +.. image:: ../_static/img/learnware_framework.svg + :align: center + +At the workflow level, ``Learnware`` package consists of ``Submitting Stage`` and ``Deploying Stage``. +At the module level, ``Learnware`` package is a platform that consists of above components. The components are designed as loose-coupled modules and each component could be used stand-alone. From fc2228e6c846cda371c082c55a2c5bc7e24cbc47 Mon Sep 17 00:00:00 2001 From: Gene Date: Mon, 1 Jan 2024 21:19:44 +0800 Subject: [PATCH 34/56] [MNT] remove extra import --- learnware/client/container.py | 8 +++----- learnware/client/utils.py | 4 +--- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/learnware/client/container.py b/learnware/client/container.py index 0983139..09c5368 100644 --- a/learnware/client/container.py +++ b/learnware/client/container.py @@ -9,8 +9,6 @@ from typing import List, Optional, Union import docker import shortuuid -from .package_utils import (filter_nonexist_conda_packages_file, - filter_nonexist_pip_packages_file) from .utils import install_environment, remove_enviroment, system_execute from ..config import C from ..learnware import Learnware @@ -224,7 +222,7 @@ class ModelDockerContainer(ModelContainer): } container = client.containers.run(**container_config) logger.info(f"Docker container {container.id[:12]} is generated.") - + try: environment_cmd = [ "pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple", @@ -265,7 +263,7 @@ class ModelDockerContainer(ModelContainer): if isinstance(docker_container, docker.models.containers.Container): client = docker.from_env() container_ids = [container.id for container in client.containers.list()] - + if docker_container.id in container_ids: docker_container.stop() docker_container.remove() @@ -521,7 +519,7 @@ class LearnwaresContainer: except KeyboardInterrupt: logger.warning("The KeyboardInterrupt is ignored when removing the container env!") self._destroy_docker_container() - + def __enter__(self): if self.mode == "conda": self.learnware_containers = [ diff --git a/learnware/client/utils.py b/learnware/client/utils.py index 4cd9e0e..fc96c01 100644 --- a/learnware/client/utils.py +++ b/learnware/client/utils.py @@ -1,10 +1,8 @@ import os import subprocess import tempfile -import zipfile -from .package_utils import (filter_nonexist_conda_packages_file, - filter_nonexist_pip_packages_file) +from .package_utils import filter_nonexist_conda_packages_file, filter_nonexist_pip_packages_file from ..logger import get_module_logger logger = get_module_logger(module_name="client_utils") From 4e47d72012a227c8283d75e603d10ed82320d770 Mon Sep 17 00:00:00 2001 From: Gene Date: Mon, 1 Jan 2024 21:19:58 +0800 Subject: [PATCH 35/56] [DOC] modify details --- README.md | 74 +++++++++++++++++++------------------- docs/components/market.rst | 2 +- docs/index.rst | 4 ++- docs/start/intro.rst | 8 ++--- docs/workflows/upload.rst | 2 +- 5 files changed, 47 insertions(+), 43 deletions(-) diff --git a/README.md b/README.md index bb2b97b..89886ad 100644 --- a/README.md +++ b/README.md @@ -12,57 +12,61 @@
-``Learnware`` is a model sharing platform, which give a basic implementation of the learnware paradigm. A learnware is a well-performed trained machine learning model with a specification that enables it to be adequately identified to reuse according to the requirement of future users who may know nothing about the learnware in advance. The learnware paradigm can solve entangled problems in the current machine learning paradigm, like continual learning and catastrophic forgetting. It also reduces resources for training a well-performed model. +The `learnware` package provides a fundamental implementation of the central concepts and procedures for the learnware paradigm, which is a new paradigm aimed at enabling users to reuse existed well-trained models to solve their AI tasks instead of starting from scratch. +Moreover, the package's well-structured design ensures high scalability and allows for the effortless integration of various new features and techniques in the future. -# Introduction +In addition, the `learnware` package serves as the engine for the [Beimingwu System](https://bmwu.cloud) and can be effectively employed for conducting experiments related to learnware. -## Framework -
- -
+# Introduction +## Learnware Paradigm -At the workflow level, `Learnware` package consists of `Submitting Stage` and `Deploying Stage`. -At the module level, `Learnware` package is a platform that consists of above components. The components are designed as loose-coupled modules and each component could be used stand-alone. +A learnware consists of a high-performance machine learning model and specifications that characterize the model, i.e., "Learnware = Model + Specification". +These specifications, encompassing both semantic and statistical aspects, detail the model's functionality and statistical information, making it easier for future users to identify and reuse these models. +The need for Learnware arises due to challenges in machine learning, such as the need for extensive training data, advanced techniques, continuous learning, catastrophic forgetting, and data privacy issues. Although there are many efforts focusing on one of these issues separately, they are entangled, and solving one problem may exacerbate others. The learnware paradigm aims to address many of these challenges through a unified framework. Its benefits are listed as follows. -## Learnware Paradigm +| Benefit | Description | +| ---- | ---- | +| Lack of training data | Strong models can be built with small data by adapting well-performed learnwares. | +| Lack of training skills | Ordinary users can obtain strong models by leveraging well-performed learnwares instead of building models from scratch. | +| Catastrophic forgetting | Accepted learnwares are always stored in the learnware market, retaining old knowledge. | +| Continual learning | The learnware market continually enriches its knowledge with constant submissions of well-performed learnwares. | +| Data privacy/ proprietary | Developers only submit models, not data, preserving data privacy/proprietary. | +| Unplanned tasks | Open to all legal developers, the learnware market can accommodate helpful learnwares for various tasks. | +| Carbon emission | Assembling small models may offer good-enough performance, reducing interest in training large models and the carbon footprint. | -Machine learning, especially the prevailing big model paradigm, has achieved great success in natural language processing and computer vision applications. However, it still faces challenges such as the requirement of a large amount of labeled training data, difficulty in adapting to changing environments, and catastrophic forgetting when refining trained models incrementally. These big models, while useful in their targeted tasks, often fail to address the above issues and struggle to generalize beyond their specific purposes. +The learnware paradigm consists of two distinct stages: +- `Submitting Stage`: Developers voluntarily submit various learnwares to the learnware market, and the system conducts quality checks and further organization of these learnwares. +- `Deploying Stage`: When users submit task requirements, the learnware market automatically selects whether to recommend a single learnware or a combination of multiple learnwares and provides efficient deployment methods. Whether it’s a single learnware or a combination of multiple learnwares, the system offers convenient learnware reuse interfaces.
-The learnware paradigm introduces the concept of a well-performed, trained machine learning model with a specification that allows future users, who have no prior knowledge of the learnware, to reuse it based on their requirements. +## Learnware Package Design -Developers or owners of trained machine learning models can submit their models to a learnware market. If accepted, the market assigns a specification to the model and accommodates it. The learnware market could host thousands or millions of well-performed models from different developers, for various tasks, using diverse data, and optimizing different objectives. +
+ +
-Instead of building a model from scratch, users can submit their requirements to the learnware market, which then identifies and deploys helpful learnware(s) based on the specifications. Users can apply the learnware directly, adapt it using their data, or exploit it in other ways to improve their model. This process is more efficient and less expensive than building a model from scratch. -## Benefits of the Learnware Paradigm +At the workflow level, the `learnware` package consists of `Submitting Stage` and `Deploying Stage`. +At the module level, the `learnware` package is a platform that consists of above components. The components are designed as loose-coupled modules and each component could be used stand-alone. -| Benefit | Description | -| ---- | ---- | -| Lack of training data | Strong models can be built with small data by adapting well-performed learnwares. | -| Lack of training skills | Ordinary users can obtain strong models by leveraging well-performed learnwares instead of building models from scratch. | -| Catastrophic forgetting | Accepted learnwares are always stored in the learnware market, retaining old knowledge. | -| Continual learning | The learnware market continually enriches its knowledge with constant submissions of well-performed learnwares. | -| Data privacy/ proprietary | Developers only submit models, not data, preserving data privacy/proprietary. | -| Unplanned tasks | Open to all legal developers, the learnware market can accommodate helpful learnwares for various tasks. | -| Carbon emission | Assembling small models may offer good-enough performance, reducing interest in training large models and the carbon footprint. | +# Quick Start ## Installation -Learnware is currently hosted on [PyPI](https://pypi.org/). You can easily install `Learnware` by following these steps: +Learnware is currently hosted on [PyPI](https://pypi.org/project/learnware/). You can easily install `learnware` by following these steps: ```bash pip install learnware ``` -In the `Learnware` package, besides the base classes, many core functionalities such as "learnware specification generation" and "learnware deployment" rely on the `torch` library. Users have the option to manually install `torch`, or they can directly use the following command to install the `learnware` package: +In the `learnware` package, besides the base classes, many core functionalities such as "learnware specification generation" and "learnware deployment" rely on the `torch` library. Users have the option to manually install `torch`, or they can directly use the following command to install the `learnware` package: ```bash pip install learnware[full] @@ -72,7 +76,7 @@ pip install learnware[full] ## Prepare Learnware -In Learnware, each learnware is encapsulated in a `zip` package, which should contain at least the following four files: +In the `learnware` package, each learnware is encapsulated in a `zip` package, which should contain at least the following four files: - `learnware.yaml`: learnware configuration file. - `__init__.py`: methods for using the model. @@ -83,7 +87,7 @@ To facilitate the construction of a learnware, we provide a [Learnware Template] ## Learnware Package Workflow -Users can start a `Learnware` workflow according to the following steps: +Users can start a `learnware` workflow according to the following steps: ### Initialize a Learnware Market @@ -207,7 +211,7 @@ feature_augment_predict_y = reuse_feature_augment.predict(user_data=data_X) ### Auto Workflow Example -The `Learnware` also offers automated workflow examples. This includes preparing learnwares, uploading and deleting learnwares from the market, and searching for learnwares using both semantic and statistical specifications. To experience the basic workflow of the `Learnware` package, the users can run `test/test_workflow/test_workflow.py` to try the basic workflow of `Learnware`. +The `learnware` package also offers automated workflow examples. This includes preparing learnwares, uploading and deleting learnwares from the market, and searching for learnwares using both semantic and statistical specifications. To experience the basic workflow of the `learnware` package, the users can run `test/test_workflow/test_workflow.py` to try the basic workflow of `learnware`. # Experiments and Examples @@ -223,7 +227,7 @@ For all experiments, we used a single Linux server. Details on the specification
-## Tabular Data Experiments +## Tabular Scenario Experiments ### Datasets @@ -243,7 +247,7 @@ Based on the specific design of user tasks, our experiments were primarily categ - **heterogeneous experiments** aim to evaluate the performance of identifying and reusing helpful heterogeneous learnwares in situations where no available learnwares match the feature space of the user's task. This helps to highlight the potential of learnwares for applications beyond their original purpose. -### Homogeneous Tabular Dataset +### Homogeneous Tabular Scenario For homogeneous experiments, the 55 stores in the Corporacion dataset act as 55 users, each applying one feature engineering method, and using the test data from their respective store as user data. These users can then search for homogeneous learnwares in the market with the same feature spaces as their tasks. @@ -269,7 +273,7 @@ When users have both test data and limited training data derived from their orig From the figure, it's evident that when users have limited training data, the performance of reusing single/multiple table learnwares is superior to that of the user's own model. This emphasizes the benefit of learnware reuse in significantly reducing the need for extensive training data and achieving enhanced results when available user training data is limited. -### Heterogeneous Tabular Dataset +### Heterogeneous Tabular Scenario In heterogeneous experiments, the learnware market would recommend helpful heterogeneous learnwares with different feature spaces with the user tasks. Based on whether there are learnwares in the market that handle tasks similar to the user's task, the experiments can be further subdivided into the following two types: @@ -301,11 +305,9 @@ Here we have chosen the 10 stores from the M5 dataset to act as users. Although We can observe that heterogeneous learnwares are beneficial when there's a limited amount of the user's labeled training data available, aiding in better alignment with the user's specific task. This underscores the potential of learnwares to be applied to tasks beyond their original purpose. -## Image Data Experiment - -For the CIFAR-10 dataset, we sampled the training set uneven +## Image Scenario Experiment -ly by category and constructed unbalanced training datasets for the 50 learnwares that contained only some of the categories. This makes it unlikely that there exists any learnware in the learnware market that can accurately handle all categories of data; only the learnware whose training data is closest to the data distribution of the target task is likely to perform well on the target task. Specifically, the probability of each category being sampled obeys a random multinomial distribution, with a non-zero probability of sampling on only 4 categories, and the sampling ratio is 0.4: 0.4: 0.1: 0.1. Ultimately, the training set for each learnware contains 12,000 samples covering the data of 4 categories in CIFAR-10. +For the CIFAR-10 dataset, we sampled the training set unevenly by category and constructed unbalanced training datasets for the 50 learnwares that contained only some of the categories. This makes it unlikely that there exists any learnware in the learnware market that can accurately handle all categories of data; only the learnware whose training data is closest to the data distribution of the target task is likely to perform well on the target task. Specifically, the probability of each category being sampled obeys a random multinomial distribution, with a non-zero probability of sampling on only 4 categories, and the sampling ratio is 0.4: 0.4: 0.1: 0.1. Ultimately, the training set for each learnware contains 12,000 samples covering the data of 4 categories in CIFAR-10. We constructed 50 target tasks using data from the test set of CIFAR-10. Similar to constructing the training set for the learnwares, to allow for some variation between tasks, we sampled the test set unevenly. Specifically, the probability of each category being sampled obeys a random multinomial distribution, with non-zero sampling probability on 6 categories, and the sampling ratio is 0.3: 0.3: 0.1: 0.1: 0.1: 0.1. Ultimately, each target task contains 3000 samples covering the data of 6 categories in CIFAR-10. @@ -329,7 +331,7 @@ In some specific settings, the user will have a small number of labelled samples
-## Text Data Experiment +## Text Scenario Experiment ### Datasets diff --git a/docs/components/market.rst b/docs/components/market.rst index 4e8747a..3fb46aa 100644 --- a/docs/components/market.rst +++ b/docs/components/market.rst @@ -24,7 +24,7 @@ The ``checker`` is used for checking the learnware in some standards. It should Current Checkers ====================================== -The ``Learnware`` package provide two different implementation of ``market`` where both of them share the same ``checker`` list. So we first introduce the details of ``checker``\ s. +The ``learnware`` package provide two different implementation of ``market`` where both of them share the same ``checker`` list. So we first introduce the details of ``checker``\ s. The ``checker``s check a learnware object in different aspects, including environment configuration (``CondaChecker``), semantic specifications (``EasySemanticChecker``), and statistical specifications (``EasyStatChecker``). The ``__call__`` method of each checker is designed to be invoked as a function to conduct the respective checks on the learnware and return the outcomes. It defines three types of learnwares: ``INVALID_LEARNWARE`` denotes the learnware does not pass the check, ``NONUSABLE_LEARNWARE`` denotes the learnware pass the check but cannot make prediction, ``USABLE_LEARNWARE`` denotes the leanrware pass the check and can make prediction. Currently, we have three ``checker``\ s, which are described below. diff --git a/docs/index.rst b/docs/index.rst index 1137040..946a5c5 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -7,7 +7,9 @@ ``Learnware`` Documentation ============================================================ -``Learnware`` is a model sharing platform, which give a basic implementation of the learnware paradigm. A learnware is a well-performed trained machine learning model with a specification that enables it to be adequately identified to reuse according to the requirement of future users who may know nothing about the learnware in advance. The learnware paradigm can solve entangled problems in the current machine learning paradigm, like continual learning and catastrophic forgetting. It also reduces resources for training a well-performed model. +The ``learnware`` package provides a fundamental implementation of the central concepts and procedures for the learnware paradigm. +A learnware is a well-performed trained machine learning model with a specification that enables it to be adequately identified to reuse according to the requirement of future users who may know nothing about the learnware in advance. +The learnware paradigm is a new paradigm aimed at enabling users to reuse existed well-trained models to solve their AI tasks instead of starting from scratch. .. _user_guide: diff --git a/docs/start/intro.rst b/docs/start/intro.rst index 6c8279a..29d7d41 100644 --- a/docs/start/intro.rst +++ b/docs/start/intro.rst @@ -12,7 +12,7 @@ In addition, the ``learnware`` package serves as the engine for the `Beimingwu S What is Learnware? ==================== -A learnware consists of high-performance machine learning models and specifications that characterize the models, i.e., "Learnware = Model + Specification." +A learnware consists of a high-performance machine learning model and specifications that characterize the model, i.e., "Learnware = Model + Specification". The learnware specification consists of "semantic specification" and "statistical specification": @@ -29,7 +29,7 @@ The Benefits of Learnware Paradigm Machine learning has achieved great success in many fields but still faces various challenges, such as the need for extensive training data and advanced training techniques, the difficulty of continuous learning, the risk of catastrophic forgetting, and the leakage of data privacy. -Although there are many efforts focusing on one of these issues separately, they are entangled, and solving one problem may exacerbate others. The learnware paradigm aimss to address many of these challenges through a unified framework. +Although there are many efforts focusing on one of these issues separately, they are entangled, and solving one problem may exacerbate others. The learnware paradigm aims to address many of these challenges through a unified framework. +-----------------------+-----------------------------------------------------------------------------------------------+ | Benefit | Description | @@ -79,5 +79,5 @@ Learnware Package Design .. image:: ../_static/img/learnware_framework.svg :align: center -At the workflow level, ``Learnware`` package consists of ``Submitting Stage`` and ``Deploying Stage``. -At the module level, ``Learnware`` package is a platform that consists of above components. The components are designed as loose-coupled modules and each component could be used stand-alone. +At the workflow level, the ``learnware`` package consists of ``Submitting Stage`` and ``Deploying Stage``. +At the module level, the ``learnware`` package is a platform that consists of above components. The components are designed as loose-coupled modules and each component could be used stand-alone. diff --git a/docs/workflows/upload.rst b/docs/workflows/upload.rst index d3797ce..b8e5d8b 100644 --- a/docs/workflows/upload.rst +++ b/docs/workflows/upload.rst @@ -10,7 +10,7 @@ We will first discuss the necessary components of a valid learnware, followed by Prepare Learnware ==================================== -In learnware ``Learnware`` package, each learnware is encapsulated in a ``zip`` package, which should contain at least the following four files: +In the ``learnware`` package, each learnware is encapsulated in a ``zip`` package, which should contain at least the following four files: - ``learnware.yaml``: learnware configuration file. - ``__init__.py``: methods for using the model. From fc7d28e0ec3277ab625a37e87aca49462914bd11 Mon Sep 17 00:00:00 2001 From: Gene Date: Mon, 1 Jan 2024 21:24:25 +0800 Subject: [PATCH 36/56] [MNT] modify details --- docs/about/dev.rst | 4 ++-- docs/components/learnware.rst | 4 ++-- docs/components/market.rst | 2 +- docs/components/spec.rst | 10 +++++----- docs/start/install.rst | 8 ++++---- docs/start/quick.rst | 4 ++-- docs/workflows/reuse.rst | 2 +- docs/workflows/search.rst | 2 +- docs/workflows/upload.rst | 2 +- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/about/dev.rst b/docs/about/dev.rst index a01de4d..79714f7 100644 --- a/docs/about/dev.rst +++ b/docs/about/dev.rst @@ -66,7 +66,7 @@ Continuous Integration (CI) tools help you stick to the quality standards by run ``pre-commit`` Config ======================== -The ``Learnware`` Package support config ``pre-commit``. Run the following command to install ``pre-commit``: +The ``learnware`` package support config ``pre-commit``. Run the following command to install ``pre-commit``: .. code-block:: bash @@ -82,7 +82,7 @@ Run the following command in the root directory of ``Learnware`` Project to enab ``isort`` Config =================== -The codes in the ``Learnware`` Package will be processed by ``isort`` (``examples`` and ``tests`` are excluded). Run the following command to install ``isort``: +The codes in the ``learnware`` package will be processed by ``isort`` (``examples`` and ``tests`` are excluded). Run the following command to install ``isort``: .. code-block:: bash diff --git a/docs/components/learnware.rst b/docs/components/learnware.rst index 7ae7c29..d969ab8 100644 --- a/docs/components/learnware.rst +++ b/docs/components/learnware.rst @@ -55,7 +55,7 @@ All Reuse Methods =========================== In addition to applying ``Learnware``, ``FeatureAlignLearnware`` or ``HeteroMapAlignLearnware`` objects directly by calling their ``predict`` interface, -the ``Learnware`` package also provides a set of ``Reuse Methods`` for users to further customize a single or multiple learnwares, with the hope of enabling learnwares to be +the ``learnware`` package also provides a set of ``Reuse Methods`` for users to further customize a single or multiple learnwares, with the hope of enabling learnwares to be helpful beyond their original purposes, and eliminating the need for users to build models from scratch. There are two main categories of ``Reuse Methods``: (1) direct reuse and (2) reuse based on a small amount of labeled data. @@ -107,7 +107,7 @@ specifies the ensemble method(default is set to ``mean``). Reuse Learnware with Labeled Data ---------------------------------- -When users have a small amount of labeled data available, ``Learnware`` package provides two methods: ``EnsemblePruningReuser`` and ``FeatureAugmentReuser`` to help reuse learnwares. +When users have a small amount of labeled data available, the ``learnware`` package provides two methods: ``EnsemblePruningReuser`` and ``FeatureAugmentReuser`` to help reuse learnwares. They are both initialized with a list of ``Learnware`` objects ``learnware_list``, and have different implementations of ``fit`` and ``predict`` methods. EnsemblePruningReuser diff --git a/docs/components/market.rst b/docs/components/market.rst index 3fb46aa..1e86d13 100644 --- a/docs/components/market.rst +++ b/docs/components/market.rst @@ -48,7 +48,7 @@ This ``checker`` checks the statistical specification and functionality of a lea Current Markets ====================================== -The ``Learnware`` package provide two different implementation of ``market``, i.e. ``Easy Market`` and ``Hetero Market``. They have different implementation of ``organizer`` and ``searcher``. +The ``learnware`` package provide two different implementation of ``market``, i.e. ``Easy Market`` and ``Hetero Market``. They have different implementation of ``organizer`` and ``searcher``. Easy Market ------------- diff --git a/docs/components/spec.rst b/docs/components/spec.rst index 2b119da..ab1ffd6 100644 --- a/docs/components/spec.rst +++ b/docs/components/spec.rst @@ -5,7 +5,7 @@ Specification Learnware specification is the core component of the learnware paradigm, linking all processes about learnwares, including uploading, organizing, searching, deploying and reusing. -In this section, we will introduce the concept and design of learnware specification in the ``Learnware`` package. +In this section, we will introduce the concept and design of learnware specification in the ``learnware`` package. We will then explore ``regular specification``\ s tailored for different data types such as tables, images and texts. Lastly, we cover a ``system specification`` specifically assigned to table learnwares by the learnware market, aimed at accommodating all available table learnwares into a unified "specification world" despite their heterogeneity. @@ -13,7 +13,7 @@ Concepts & Types ================== The learnware specification describes the model's specialty and utility in a certain format, allowing the model to be identified and reused by future users who may have no prior knowledge of the learnware. -The ``Learnware`` package employs a highly extensible specification design, which consists of two parts: +The ``learnware`` package employs a highly extensible specification design, which consists of two parts: - **Semantic specification** describes the model's type and functionality through a set of descriptions and tags. Learnwares with similar semantic specifications reside in the same specification island - **Statistical specification** characterizes the statistical information contained in the model using various machine learning techniques. It plays a crucial role in locating the appropriate place for the model within the specification island. @@ -28,7 +28,7 @@ We employ the ``Reduced Kernel Mean Embedding (RKME) Specification`` as the foun with adjustments made according to the characteristics of each data type. The RKME specification is a recent development in learnware specification design, which represents the distribution of a model's training data in a privacy-preserving manner. -Within the ``Learnware`` package, you'll find two types of statistical specifications: ``regular specification`` and ``system specification``. The former is generated locally +Within the ``learnware`` package, you'll find two types of statistical specifications: ``regular specification`` and ``system specification``. The former is generated locally by users to express their model's statistical information, while the latter is assigned by the learnware market to accommodate and organize heterogeneous learnwares. Semantic Specification @@ -44,7 +44,7 @@ In the case of table learnwares, users should additionally provide descriptions Regular Specification ====================================== -The ``Learnware`` package provides a unified interface, ``generate_stat_spec``, for generating ``regular specification``\ s across different data types. +The ``learnware`` package provides a unified interface, ``generate_stat_spec``, for generating ``regular specification``\ s across different data types. Users can use the training data ``train_x`` (supported types include numpy.ndarray, pandas.DataFrame, and torch.Tensor) as input to generate the ``regular specification`` of the model, as shown in the following code: @@ -134,7 +134,7 @@ with particular learnware market implementations. - Learnware searchers perform helpful learnware recommendations among all table learnwares in the market, leveraging the ``system specification``\ s generated for users. -``Learnware`` package now includes a type of ``system specification``, named ``HeteroMapTableSpecification``, made especially for the ``Hetero Market`` implementation. +The ``learnware`` package now includes a type of ``system specification``, named ``HeteroMapTableSpecification``, made especially for the ``Hetero Market`` implementation. This specification is automatically given to all table learnwares when they are added to the ``Hetero Market``. It is also set up to be updated periodically, ensuring it remains accurate as the learnware market evolves and builds more precise specification worlds. Please refer to `COMPONENTS: Hetero Market <../components/market.html#hetero-market>`_ for implementation details. \ No newline at end of file diff --git a/docs/start/install.rst b/docs/start/install.rst index aeb0c8a..3b80e37 100644 --- a/docs/start/install.rst +++ b/docs/start/install.rst @@ -4,11 +4,11 @@ Installation Guide ======================== -``Learnware`` Package Installation +``learnware`` Package Installation =================================== .. note:: - ``Learnware`` package supports `Windows`, `Linux`. It's recommended to use ``Learnware`` in `Linux`. ``Learnware`` supports Python3, which is up to Python3.11. + The ``learnware`` package supports `Windows`, `Linux`. It's recommended to use ``Learnware`` in `Linux`. ``Learnware`` supports Python3, which is up to Python3.11. Users can easily install ``Learnware`` by pip according to the following command: @@ -16,7 +16,7 @@ Users can easily install ``Learnware`` by pip according to the following command pip install learnware -In the ``Learnware`` package, besides the base classes, many core functionalities such as "learnware specification generation" and "learnware deployment" rely on the ``torch`` library. Users have the option to manually install ``torch``, or they can directly use the following command to install the ``learnware`` package: +In the ``learnware`` package, besides the base classes, many core functionalities such as "learnware specification generation" and "learnware deployment" rely on the ``torch`` library. Users have the option to manually install ``torch``, or they can directly use the following command to install the ``learnware`` package: .. code-block:: bash @@ -26,7 +26,7 @@ In the ``Learnware`` package, besides the base classes, many core functionalitie However, it's crucial to note that due to the potential complexity of the user's local environment, installing ``learnware[full]`` does not guarantee that ``torch`` will successfully invoke ``CUDA`` in the user's local setting. -Install ``Learnware`` Package From Source +Install ``learnware`` Package From Source ========================================== Also, Users can install ``Learnware`` by the source code according to the following steps: diff --git a/docs/start/quick.rst b/docs/start/quick.rst index 6f386cd..2d714a2 100644 --- a/docs/start/quick.rst +++ b/docs/start/quick.rst @@ -20,7 +20,7 @@ Learnware is currently hosted on `PyPI `_. You can easily int pip install learnware -In the ``Learnware`` package, besides the base classes, many core functionalities such as "learnware specification generation" and "learnware deployment" rely on the ``torch`` library. Users have the option to manually install ``torch``, or they can directly use the following command to install the ``learnware`` package: +In the ``learnware`` package, besides the base classes, many core functionalities such as "learnware specification generation" and "learnware deployment" rely on the ``torch`` library. Users have the option to manually install ``torch``, or they can directly use the following command to install the ``learnware`` package: .. code-block:: bash @@ -32,7 +32,7 @@ In the ``Learnware`` package, besides the base classes, many core functionalitie Prepare Learnware ==================== -In learnware ``Learnware`` package, each learnware is encapsulated in a ``zip`` package, which should contain at least the following four files: +In learnware ``learnware`` package, each learnware is encapsulated in a ``zip`` package, which should contain at least the following four files: - ``learnware.yaml``: learnware configuration file. - ``__init__.py``: methods for using the model. diff --git a/docs/workflows/reuse.rst b/docs/workflows/reuse.rst index d9e6eb1..8f660df 100644 --- a/docs/workflows/reuse.rst +++ b/docs/workflows/reuse.rst @@ -135,7 +135,7 @@ combine ``HeteroMapAlignLearnware`` with the homogeneous reuse methods ``Averagi Reuse with ``Model Container`` ================================ -``Learnware`` package provides ``Model Container`` to build executive environment for learnwares according to their runtime dependent files. The learnware's model will be executed in the containers and its env will be installed and uninstalled automatically. +The ``learnware`` package provides ``Model Container`` to build executive environment for learnwares according to their runtime dependent files. The learnware's model will be executed in the containers and its env will be installed and uninstalled automatically. Run the following codes to try run a learnware with ``Model Container``: diff --git a/docs/workflows/search.rst b/docs/workflows/search.rst index 3602e1d..d4491c5 100644 --- a/docs/workflows/search.rst +++ b/docs/workflows/search.rst @@ -51,7 +51,7 @@ Hetero Search For table-based user tasks, homogeneous searchers like ``EasySearcher`` fail to recommend learnwares when no table learnware matches the user task's feature dimension, returning empty results. -To enhance functionality, ``Learnware`` package includes the heterogeneous learnware search feature, whose processions is as follows: +To enhance functionality, the ``learnware`` package includes the heterogeneous learnware search feature, whose processions is as follows: - Learnware markets such as ``Hetero Market`` integrate different specification islands into a unified "specification world" by assigning system-level specifications to all learnwares. This allows heterogeneous searchers like ``HeteroSearcher`` to find helpful learnwares from all available table learnwares. - Searchers assign system-level specifications to users based on ``UserInfo``'s statistical specification, using methods provided by corresponding organizers. In ``Hetero Market``, for example, ``HeteroOrganizer.generate_hetero_map_spec`` generates system-level specifications for users. diff --git a/docs/workflows/upload.rst b/docs/workflows/upload.rst index b8e5d8b..09d47a2 100644 --- a/docs/workflows/upload.rst +++ b/docs/workflows/upload.rst @@ -83,7 +83,7 @@ Please note that module imports between Python files within the zip package shou Learnware Statistical Specification ``stat.json`` --------------------------------------------------- -A learnware consists of a model and a specification. Therefore, after preparing the model, you need to generate a statistical specification for it. Specifically, using the previously installed ``Learnware`` package, you can use the training data ``train_x`` (supported types include numpy.ndarray, pandas.DataFrame, and torch.Tensor) as input to generate the statistical specification of the model. +A learnware consists of a model and a specification. Therefore, after preparing the model, you need to generate a statistical specification for it. Specifically, using the previously installed ``learnware`` package, you can use the training data ``train_x`` (supported types include numpy.ndarray, pandas.DataFrame, and torch.Tensor) as input to generate the statistical specification of the model. Here is an example of the code: From 3c27fc92e9665de238f5afa5cf806d767bb7a243 Mon Sep 17 00:00:00 2001 From: Gene Date: Tue, 9 Jan 2024 23:07:43 +0800 Subject: [PATCH 37/56] [DOC] modify intro in docs --- docs/start/intro.rst | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/start/intro.rst b/docs/start/intro.rst index 29d7d41..9d0e753 100644 --- a/docs/start/intro.rst +++ b/docs/start/intro.rst @@ -3,12 +3,15 @@ Introduction ================ -The ``learnware`` package provides a fundamental implementation of the central concepts and procedures for the learnware paradigm, which is a new paradigm aimed at enabling users to reuse existed well-trained models to solve their AI tasks instead of starting from scratch. +The *learnware* paradigm, proposed by Professor Zhi-Hua Zhou in 2016 [1, 2], aims to build a vast model platform system, i.e., a *learnware dock system*, which systematically accommodates and organizes models shared by machine learning developers worldwide, and can efficiently identify and assemble existing helpful model(s) to solve future tasks in a unified way. -Moreover, the package's well-structured design ensures high scalability and allows for the effortless integration of various new features and techniques in the future. +The ``learnware`` package provides a fundamental implementation of the central concepts and procedures within the learnware paradigm. Its well-structured design ensures high scalability and facilitates the seamless integration of additional features and techniques in the future. In addition, the ``learnware`` package serves as the engine for the `Beimingwu System `_ and can be effectively employed for conducting experiments related to learnware. +| [1] Zhi-Hua Zhou. Learnware: on the future of machine learning. *Frontiers of Computer Science*, 2016, 10(4): 589–590 +| [2] Zhi-Hua Zhou. Machine Learning: Development and Future. *Communications of CCF*, 2017, vol.13, no.1 (2016 CNCC keynote) + What is Learnware? ==================== From e721dbc7bd805509763adabdaee6d927cc97fc5c Mon Sep 17 00:00:00 2001 From: Gene Date: Tue, 9 Jan 2024 23:08:04 +0800 Subject: [PATCH 38/56] [DOC] update readme --- README.md | 48 +++++++++++++++++++++++++++++++++++------------- README_zh.md | 0 2 files changed, 35 insertions(+), 13 deletions(-) create mode 100644 README_zh.md diff --git a/README.md b/README.md index 89886ad..7254139 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,47 @@ -[![Python Versions](https://img.shields.io/pypi/pyversions/learnware.svg?logo=python&logoColor=white)](https://pypi.org/project/learnware/#files) -[![Platform](https://img.shields.io/badge/platform-linux%20%7C%20windows%20%7C%20macos-lightgrey)](https://pypi.org/project/learnware/#files) -[![Test](https://github.com/Learnware-LAMDA/Learnware/actions/workflows/install_learnware_with_source.yaml/badge.svg)](https://github.com/Learnware-LAMDA/Learnware/actions) -[![PypI Versions](https://img.shields.io/pypi/v/learnware)](https://pypi.org/project/learnware/#history) -[![Documentation Status](https://readthedocs.org/projects/learnware/badge/?version=latest)](https://learnware.readthedocs.io/en/latest/?badge=latest) -[![License](https://img.shields.io/pypi/l/learnware)](LICENSE) - - -
+
+
+

+ + Python Versions + + + Platform + + + Test + + + PypI Versions + + + Documentation Status + + + License + +

+ +

+

+ English | + 中文 +

+

-The `learnware` package provides a fundamental implementation of the central concepts and procedures for the learnware paradigm, which is a new paradigm aimed at enabling users to reuse existed well-trained models to solve their AI tasks instead of starting from scratch. +# Introduction -Moreover, the package's well-structured design ensures high scalability and allows for the effortless integration of various new features and techniques in the future. +The _learnware_ paradigm, proposed by Professor Zhi-Hua Zhou in 2016 [1, 2], aims to build a vast model platform system, i.e., a _learnware dock system_, which systematically accommodates and organizes models shared by machine learning developers worldwide, and can efficiently identify and assemble existing helpful model(s) to solve future tasks in a unified way. -In addition, the `learnware` package serves as the engine for the [Beimingwu System](https://bmwu.cloud) and can be effectively employed for conducting experiments related to learnware. +The `learnware` package provides a fundamental implementation of the central concepts and procedures within the learnware paradigm. Its well-structured design ensures high scalability and facilitates the seamless integration of additional features and techniques in the future. +In addition, the `learnware` package serves as the engine for the [Beimingwu System](https://bmwu.cloud) and can be effectively employed for conducting experiments related to learnware. -# Introduction +[1] Zhi-Hua Zhou. Learnware: on the future of machine learning. _Frontiers of Computer Science_, 2016, 10(4): 589–590
+[2] Zhi-Hua Zhou. Machine Learning: Development and Future. _Communications of CCF_, 2017, vol.13, no.1 (2016 CNCC keynote) ## Learnware Paradigm diff --git a/README_zh.md b/README_zh.md new file mode 100644 index 0000000..e69de29 From f6882293a0884fb04121f2b99981ad7cb4822d71 Mon Sep 17 00:00:00 2001 From: Gene Date: Tue, 9 Jan 2024 23:08:15 +0800 Subject: [PATCH 39/56] [ENH] add license --- LICENSE | 203 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 203 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..8725ce4 --- /dev/null +++ b/LICENSE @@ -0,0 +1,203 @@ +Copyright 2024 LAMDA Beimingwu. All rights reserved. + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2024 LAMDA Beimingwu. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file From bf663a117f8ad885823ad6bfd0e2e1bcf0e466a0 Mon Sep 17 00:00:00 2001 From: bxdd Date: Wed, 10 Jan 2024 17:15:34 +0800 Subject: [PATCH 40/56] [DOC] update README format --- README.md | 12 +++++++----- README_zh.md => docs/README_zh.md | 0 2 files changed, 7 insertions(+), 5 deletions(-) rename README_zh.md => docs/README_zh.md (100%) diff --git a/README.md b/README.md index 7254139..5ad0676 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@

English | - 中文 + 中文

@@ -40,9 +40,6 @@ The `learnware` package provides a fundamental implementation of the central con In addition, the `learnware` package serves as the engine for the [Beimingwu System](https://bmwu.cloud) and can be effectively employed for conducting experiments related to learnware. -[1] Zhi-Hua Zhou. Learnware: on the future of machine learning. _Frontiers of Computer Science_, 2016, 10(4): 589–590
-[2] Zhi-Hua Zhou. Machine Learning: Development and Future. _Communications of CCF_, 2017, vol.13, no.1 (2016 CNCC keynote) - ## Learnware Paradigm A learnware consists of a high-performance machine learning model and specifications that characterize the model, i.e., "Learnware = Model + Specification". @@ -409,4 +406,9 @@ We appreciate all contributions and thank all the contributors! ## About us -Visit [LAMDA's official website](http://www.lamda.nju.edu.cn/). +Please visit [LAMDA's official website](http://www.lamda.nju.edu.cn/). + +----------------- + +[1] Zhi-Hua Zhou. Learnware: on the future of machine learning. _Frontiers of Computer Science_, 2016, 10(4): 589–590
+[2] Zhi-Hua Zhou. Machine Learning: Development and Future. _Communications of CCF_, 2017, vol.13, no.1 (2016 CNCC keynote) \ No newline at end of file diff --git a/README_zh.md b/docs/README_zh.md similarity index 100% rename from README_zh.md rename to docs/README_zh.md From b56640bbcef887b18d4f9a88eafe8944a3490865 Mon Sep 17 00:00:00 2001 From: bxdd <45119470+bxdd@users.noreply.github.com> Date: Wed, 10 Jan 2024 19:44:58 +0800 Subject: [PATCH 41/56] [DOC] update readme (#180) --- README.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 5ad0676..70403e1 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,10 @@ The `learnware` package provides a fundamental implementation of the central con In addition, the `learnware` package serves as the engine for the [Beimingwu System](https://bmwu.cloud) and can be effectively employed for conducting experiments related to learnware. +-------------------------- +[1] Zhi-Hua Zhou. Learnware: on the future of machine learning. _Frontiers of Computer Science_, 2016, 10(4): 589–590
+[2] Zhi-Hua Zhou. Machine Learning: Development and Future. _Communications of CCF_, 2017, vol.13, no.1 (2016 CNCC keynote) + ## Learnware Paradigm A learnware consists of a high-performance machine learning model and specifications that characterize the model, i.e., "Learnware = Model + Specification". @@ -407,8 +411,3 @@ We appreciate all contributions and thank all the contributors! ## About us Please visit [LAMDA's official website](http://www.lamda.nju.edu.cn/). - ------------------ - -[1] Zhi-Hua Zhou. Learnware: on the future of machine learning. _Frontiers of Computer Science_, 2016, 10(4): 589–590
-[2] Zhi-Hua Zhou. Machine Learning: Development and Future. _Communications of CCF_, 2017, vol.13, no.1 (2016 CNCC keynote) \ No newline at end of file From 5aefad83954900d5378105411dfd73b56ffe7010 Mon Sep 17 00:00:00 2001 From: Gene Date: Thu, 11 Jan 2024 18:26:57 +0800 Subject: [PATCH 42/56] [MNT] add citation and modify about us --- README.md | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 70403e1..f05bb41 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,6 @@ The `learnware` package provides a fundamental implementation of the central con In addition, the `learnware` package serves as the engine for the [Beimingwu System](https://bmwu.cloud) and can be effectively employed for conducting experiments related to learnware. --------------------------- [1] Zhi-Hua Zhou. Learnware: on the future of machine learning. _Frontiers of Computer Science_, 2016, 10(4): 589–590
[2] Zhi-Hua Zhou. Machine Learning: Development and Future. _Communications of CCF_, 2017, vol.13, no.1 (2016 CNCC keynote) @@ -399,6 +398,24 @@ We present the change curves in classification error rates for both the user's s From the figure above, it is evident that when the user's own training data is limited, the performance of multiple learnware reuse surpasses that of the user's own model. As the user's training data grows, it is expected that the user's model will eventually outperform the learnware reuse. This underscores the value of reusing learnware to significantly conserve training data and achieve superior performance when user training data is limited. +# Citation + +If you use our project in your research or work, we kindly request that you cite the following papers: + +```bibtex +@article{zhou2022learnware, + author = {Zhou, Zhi-Hua and Tan, Zhi-Hao}, + title = {Learnware: Small Models Do Big}, + journal = {SCIENCE CHINA Information Sciences}, + year = {2024}, + volume = {67}, + number = {1}, + pages = {1--12}, +} +``` + +Please acknowledge the use of our project by citing these papers in your work. Thank you for your support! + # About ## Contributors @@ -408,6 +425,7 @@ We appreciate all contributions and thank all the contributors!
-## About us +## About Us -Please visit [LAMDA's official website](http://www.lamda.nju.edu.cn/). +The Learnware repository is developed and maintained by the LAMDA Beimingwu R&D Team. +To learn more about our team, please visit the [Team Overview](https://docs.bmwu.cloud/en/about-us.html). From dba7513d1242efaacb56b257343a6befe55b40d6 Mon Sep 17 00:00:00 2001 From: Gene Date: Thu, 11 Jan 2024 20:26:52 +0800 Subject: [PATCH 43/56] [ENH] add code of conduct --- CODE_OF_CONDUCT.md | 131 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 CODE_OF_CONDUCT.md diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..d84be54 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,131 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, caste, color, religion, or sexual +identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the overall + community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or advances of + any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email address, + without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official email address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at bmwu-support@lamda.nju.edu.cn. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series of +actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or permanent +ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the +community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.1, available at +[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. + +Community Impact Guidelines were inspired by +[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. + +For answers to common questions about this code of conduct, see the FAQ at +[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at +[https://www.contributor-covenant.org/translations][translations]. + +[homepage]: https://www.contributor-covenant.org +[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html +[Mozilla CoC]: https://github.com/mozilla/diversity +[FAQ]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations \ No newline at end of file From 00f9142f762cd86329777150b9311a6bb901a4c4 Mon Sep 17 00:00:00 2001 From: Gene Date: Thu, 11 Jan 2024 20:58:20 +0800 Subject: [PATCH 44/56] [MNT] solve F401 error in package --- learnware/learnware/base.py | 7 +++---- learnware/learnware/utils.py | 3 +-- learnware/logger.py | 2 +- .../market/heterogeneous/organizer/hetero_map/trainer.py | 1 - learnware/market/heterogeneous/utils.py | 2 -- learnware/market/utils.py | 3 --- learnware/model/base.py | 2 -- learnware/reuse/averaging.py | 2 +- learnware/specification/base.py | 5 +---- learnware/specification/module.py | 4 +--- learnware/specification/regular/image/rkme.py | 1 - setup.py | 4 ++-- 12 files changed, 10 insertions(+), 26 deletions(-) diff --git a/learnware/learnware/base.py b/learnware/learnware/base.py index 93f5a62..0667c7b 100644 --- a/learnware/learnware/base.py +++ b/learnware/learnware/base.py @@ -1,6 +1,6 @@ import os import sys -from typing import List, Union +from typing import Union import numpy as np @@ -13,8 +13,7 @@ logger = get_module_logger("Learnware") class Learnware: - """The learnware class, which is the basic components in learnware market - """ + """The learnware class, which is the basic components in learnware market""" def __init__(self, id: str, model: Union[BaseModel, dict], specification: Specification, learnware_dirpath: str): """The initialization method for learnware. @@ -41,7 +40,7 @@ class Learnware: dirpath: str The path of the learnware directory """ - + self.id = id self.model = model self.specification = specification diff --git a/learnware/learnware/utils.py b/learnware/learnware/utils.py index ebc4243..fc2db5c 100644 --- a/learnware/learnware/utils.py +++ b/learnware/learnware/utils.py @@ -1,4 +1,3 @@ -import copy from typing import Union from ..model import BaseModel @@ -45,5 +44,5 @@ def get_stat_spec_from_config(stat_spec: dict) -> BaseStatSpecification: f"Statistic specification must be type of BaseStatSpecification, not {BaseStatSpecification.__class__.__name__}" ) stat_spec_inst.load(stat_spec["file_name"]) - + return stat_spec_inst diff --git a/learnware/logger.py b/learnware/logger.py index 9604929..8470789 100644 --- a/learnware/logger.py +++ b/learnware/logger.py @@ -1,5 +1,5 @@ import logging -from logging import Logger, handlers +from logging import Logger from .config import C diff --git a/learnware/market/heterogeneous/organizer/hetero_map/trainer.py b/learnware/market/heterogeneous/organizer/hetero_map/trainer.py index ae7f3fd..a2bcd63 100644 --- a/learnware/market/heterogeneous/organizer/hetero_map/trainer.py +++ b/learnware/market/heterogeneous/organizer/hetero_map/trainer.py @@ -1,5 +1,4 @@ import math -import os import time from typing import Any, Callable, Dict, List diff --git a/learnware/market/heterogeneous/utils.py b/learnware/market/heterogeneous/utils.py index 0975ca7..992ca22 100644 --- a/learnware/market/heterogeneous/utils.py +++ b/learnware/market/heterogeneous/utils.py @@ -1,5 +1,3 @@ -import traceback - from ...logger import get_module_logger logger = get_module_logger("hetero_utils") diff --git a/learnware/market/utils.py b/learnware/market/utils.py index 078d473..79411ba 100644 --- a/learnware/market/utils.py +++ b/learnware/market/utils.py @@ -1,6 +1,3 @@ -from ..specification import Specification - - def parse_specification_type( stat_specs: dict, spec_list=[ diff --git a/learnware/model/base.py b/learnware/model/base.py index 4b21213..74e3860 100644 --- a/learnware/model/base.py +++ b/learnware/model/base.py @@ -1,5 +1,3 @@ -from typing import Union - import numpy as np diff --git a/learnware/reuse/averaging.py b/learnware/reuse/averaging.py index fa785fd..23d6bb0 100644 --- a/learnware/reuse/averaging.py +++ b/learnware/reuse/averaging.py @@ -1,4 +1,4 @@ -from typing import List, Union +from typing import List import numpy as np import torch diff --git a/learnware/specification/base.py b/learnware/specification/base.py index a25e3bb..1b38acf 100644 --- a/learnware/specification/base.py +++ b/learnware/specification/base.py @@ -1,10 +1,7 @@ from __future__ import annotations -import copy from typing import Dict -import numpy as np - class BaseStatSpecification: """The Statistical Specification Interface, which provide save and load method""" @@ -27,7 +24,7 @@ class BaseStatSpecification: def dist(self, stat_spec: BaseStatSpecification): raise NotImplementedError("dist is not implemented") - + def save(self, filepath: str): """Save the statistical specification into file in filepath diff --git a/learnware/specification/module.py b/learnware/specification/module.py index a8c69ca..9ad3d8a 100644 --- a/learnware/specification/module.py +++ b/learnware/specification/module.py @@ -4,9 +4,7 @@ import numpy as np import pandas as pd import torch -from .base import BaseStatSpecification -from .regular import (RKMEImageSpecification, RKMETableSpecification, - RKMETextSpecification) +from .regular import RKMEImageSpecification, RKMETableSpecification, RKMETextSpecification from .utils import convert_to_numpy from ..config import C diff --git a/learnware/specification/regular/image/rkme.py b/learnware/specification/regular/image/rkme.py index 024ad84..b517876 100644 --- a/learnware/specification/regular/image/rkme.py +++ b/learnware/specification/regular/image/rkme.py @@ -17,7 +17,6 @@ from tqdm import tqdm from . import cnn_gp from ..base import RegularStatSpecification from ..table.rkme import rkme_solve_qp -from .... import setup_seed from ....logger import get_module_logger from ....utils import allocate_cuda_idx, choose_device diff --git a/setup.py b/setup.py index 0c636b8..ce4fc1e 100644 --- a/setup.py +++ b/setup.py @@ -1,6 +1,6 @@ import os from setuptools import find_packages, setup -from enum import Enum + def read(rel_path: str) -> str: here = os.path.abspath(os.path.dirname(__file__)) @@ -100,7 +100,7 @@ if __name__ == "__main__": install_requires=REQUIRED, extras_require={ "dev": DEV_REQUIRED, - "full": FULL_REQUIRED, + "full": FULL_REQUIRED, }, classifiers=[ "Intended Audience :: Science/Research", From 7b1960659b895eead7552930598473c7d23d8daf Mon Sep 17 00:00:00 2001 From: Gene Date: Thu, 11 Jan 2024 21:02:11 +0800 Subject: [PATCH 45/56] [MNT] solve E266 error of flake8 in package --- learnware/__init__.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/learnware/__init__.py b/learnware/__init__.py index 44b678f..b27c55e 100644 --- a/learnware/__init__.py +++ b/learnware/__init__.py @@ -36,12 +36,12 @@ def init(verbose=True, **kwargs): with open(config_file, "r") as fin_config: C.update(**dict(json.load(fin_config))) - ## random seed + # random seed deterministic = kwargs.get("deterministic", True) if deterministic: setup_seed(C.random_seed) - ## make dirs + # make dirs mkdir = kwargs.get("mkdir", True) if mkdir: os.makedirs(C.root_path, exist_ok=True) @@ -49,7 +49,7 @@ def init(verbose=True, **kwargs): os.makedirs(C.stdout_path, exist_ok=True) os.makedirs(C.cache_path, exist_ok=True) - ## ignore tensorflow warning + # ignore tensorflow warning tf_loglevel = kwargs.get("tf_loglevel", "2") os.environ["TF_CPP_MIN_LOG_LEVEL"] = tf_loglevel From 3297847927e330026aea86369eebb4a5800345d2 Mon Sep 17 00:00:00 2001 From: Gene Date: Thu, 11 Jan 2024 21:14:41 +0800 Subject: [PATCH 46/56] [MNT] format code using black v23.1.0 --- docs/conf.py | 4 +- .../pfs/pfs_cross_transfer.py | 4 +- learnware/client/package_utils.py | 4 +- learnware/learnware/__init__.py | 18 ++++--- learnware/market/__init__.py | 6 +-- learnware/market/easy/__init__.py | 3 +- learnware/market/easy/searcher.py | 6 +-- .../organizer/hetero_map/__init__.py | 5 +- learnware/market/heterogeneous/searcher.py | 6 ++- learnware/market/module.py | 21 +++++--- learnware/reuse/__init__.py | 2 +- learnware/reuse/ensemble_pruning.py | 19 ++++--- learnware/reuse/job_selector.py | 3 +- learnware/reuse/utils.py | 1 + learnware/specification/__init__.py | 21 +++++--- .../specification/regular/table/__init__.py | 3 +- learnware/specification/regular/text/rkme.py | 8 +-- .../specification/system/hetero_table.py | 4 +- learnware/tests/__init__.py | 2 +- learnware/tests/templates/__init__.py | 38 ++++++++------ learnware/tests/templates/pickle_model.py | 5 +- learnware/tests/utils.py | 2 +- learnware/utils/__init__.py | 3 +- learnware/utils/file.py | 1 + learnware/utils/gpu.py | 1 + tests/test_learnware_client/test_container.py | 11 ++-- .../test_load_learnware.py | 11 ++-- tests/test_specification/test_hetero_spec.py | 10 ++-- tests/test_specification/test_image_rkme.py | 3 +- tests/test_specification/test_table_rkme.py | 3 +- tests/test_specification/test_text_rkme.py | 26 +++++----- tests/test_workflow/test_hetero_workflow.py | 50 ++++++++++++------- tests/test_workflow/test_workflow.py | 26 ++++++---- 33 files changed, 194 insertions(+), 136 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index 155d20a..b8507b4 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -100,12 +100,12 @@ html_logo = "_static/img/logo/logo1.png" # These folders are copied to the documentation's HTML output -html_static_path = ['_static'] +html_static_path = ["_static"] # These paths are either relative to html_static_path # or fully qualified paths (eg. https://...) html_css_files = [ - 'css/custom_style.css', + "css/custom_style.css", ] # -- Options for HTMLHelp output ------------------------------------------ diff --git a/examples/dataset_pfs_workflow/pfs/pfs_cross_transfer.py b/examples/dataset_pfs_workflow/pfs/pfs_cross_transfer.py index 5f69127..93a3fa3 100644 --- a/examples/dataset_pfs_workflow/pfs/pfs_cross_transfer.py +++ b/examples/dataset_pfs_workflow/pfs/pfs_cross_transfer.py @@ -85,9 +85,7 @@ def get_split_errs(algo): split = train_xs.shape[0] - proportion_list[tmp] model.fit( - train_xs[ - split:, - ], + train_xs[split:,], train_ys[split:], eval_set=[(val_xs, val_ys)], early_stopping_rounds=50, diff --git a/learnware/client/package_utils.py b/learnware/client/package_utils.py index 13467ab..cc145d2 100644 --- a/learnware/client/package_utils.py +++ b/learnware/client/package_utils.py @@ -86,7 +86,7 @@ def filter_nonexist_pip_packages(packages: list) -> Tuple[List[str], List[str]]: pass except Exception as err: logger.error(err) - + return None exist_packages = [] @@ -101,7 +101,7 @@ def filter_nonexist_pip_packages(packages: list) -> Tuple[List[str], List[str]]: exist_packages.append(result) else: nonexist_packages.append(package) - + if len(nonexist_packages) > 0: logger.info(f"Filtered out {len(nonexist_packages)} non-exist pip packages.") return exist_packages, nonexist_packages diff --git a/learnware/learnware/__init__.py b/learnware/learnware/__init__.py index fca213a..60996a7 100644 --- a/learnware/learnware/__init__.py +++ b/learnware/learnware/__init__.py @@ -13,7 +13,9 @@ from ..utils import read_yaml_to_dict logger = get_module_logger("learnware.learnware") -def get_learnware_from_dirpath(id: str, semantic_spec: dict, learnware_dirpath, ignore_error=True) -> Optional[Learnware]: +def get_learnware_from_dirpath( + id: str, semantic_spec: dict, learnware_dirpath, ignore_error=True +) -> Optional[Learnware]: """Get the learnware object from dirpath, and provide the manage interface tor Learnware class Parameters @@ -46,11 +48,11 @@ def get_learnware_from_dirpath(id: str, semantic_spec: dict, learnware_dirpath, } try: - learnware_yaml_path = os.path.join(learnware_dirpath, C.learnware_folder_config["yaml_file"]) - assert os.path.exists(learnware_yaml_path), f"learnware.yaml is not found for learnware_{id}, please check the learnware folder or zipfile." - - + assert os.path.exists( + learnware_yaml_path + ), f"learnware.yaml is not found for learnware_{id}, please check the learnware folder or zipfile." + yaml_config = read_yaml_to_dict(learnware_yaml_path) if "name" in yaml_config: @@ -67,8 +69,10 @@ def get_learnware_from_dirpath(id: str, semantic_spec: dict, learnware_dirpath, for _stat_spec in learnware_config["stat_specifications"]: stat_spec = _stat_spec.copy() stat_spec_path = os.path.join(learnware_dirpath, stat_spec["file_name"]) - assert os.path.exists(stat_spec_path), f"statistical specification file {stat_spec['file_name']} is not found for learnware_{id}, please check the learnware folder or zipfile." - + assert os.path.exists( + stat_spec_path + ), f"statistical specification file {stat_spec['file_name']} is not found for learnware_{id}, please check the learnware folder or zipfile." + stat_spec["file_name"] = stat_spec_path stat_spec_inst = get_stat_spec_from_config(stat_spec) learnware_spec.update_stat_spec(**{stat_spec_inst.type: stat_spec_inst}) diff --git a/learnware/market/__init__.py b/learnware/market/__init__.py index 0d2fd4c..fba3552 100644 --- a/learnware/market/__init__.py +++ b/learnware/market/__init__.py @@ -1,9 +1,7 @@ from .anchor import AnchoredOrganizer, AnchoredSearcher, AnchoredUserInfo -from .base import (BaseChecker, BaseOrganizer, BaseSearcher, BaseUserInfo, - LearnwareMarket) +from .base import BaseChecker, BaseOrganizer, BaseSearcher, BaseUserInfo, LearnwareMarket from .classes import CondaChecker -from .easy import (EasyOrganizer, EasySearcher, EasySemanticChecker, - EasyStatChecker) +from .easy import EasyOrganizer, EasySearcher, EasySemanticChecker, EasyStatChecker from .evolve import EvolvedOrganizer from .evolve_anchor import EvolvedAnchoredOrganizer from .heterogeneous import HeteroMapTableOrganizer, HeteroSearcher diff --git a/learnware/market/easy/__init__.py b/learnware/market/easy/__init__.py index 88b574e..e2d58e5 100644 --- a/learnware/market/easy/__init__.py +++ b/learnware/market/easy/__init__.py @@ -11,5 +11,4 @@ if not is_torch_available(verbose=False): logger.error("EasySeacher and EasyChecker are not available because 'torch' is not installed!") else: from .checker import EasySemanticChecker, EasyStatChecker - from .searcher import (EasyExactSemanticSearcher, EasyFuzzSemanticSearcher, - EasySearcher, EasyStatSearcher) + from .searcher import EasyExactSemanticSearcher, EasyFuzzSemanticSearcher, EasySearcher, EasyStatSearcher diff --git a/learnware/market/easy/searcher.py b/learnware/market/easy/searcher.py index b6f9ede..4225e7a 100644 --- a/learnware/market/easy/searcher.py +++ b/learnware/market/easy/searcher.py @@ -6,13 +6,11 @@ import torch from rapidfuzz import fuzz from .organizer import EasyOrganizer -from ..base import (BaseSearcher, BaseUserInfo, MultipleSearchItem, - SearchResults, SingleSearchItem) +from ..base import BaseSearcher, BaseUserInfo, MultipleSearchItem, SearchResults, SingleSearchItem from ..utils import parse_specification_type from ...learnware import Learnware from ...logger import get_module_logger -from ...specification import (RKMEImageSpecification, RKMETableSpecification, - RKMETextSpecification, rkme_solve_qp) +from ...specification import RKMEImageSpecification, RKMETableSpecification, RKMETextSpecification, rkme_solve_qp logger = get_module_logger("easy_seacher") diff --git a/learnware/market/heterogeneous/organizer/hetero_map/__init__.py b/learnware/market/heterogeneous/organizer/hetero_map/__init__.py index 273cac9..47978cf 100644 --- a/learnware/market/heterogeneous/organizer/hetero_map/__init__.py +++ b/learnware/market/heterogeneous/organizer/hetero_map/__init__.py @@ -8,8 +8,7 @@ from torch import nn from .feature_extractor import CLSToken, FeatureProcessor, FeatureTokenizer from .trainer import Trainer, TransTabCollatorForCL -from .....specification import (HeteroMapTableSpecification, - RKMETableSpecification) +from .....specification import HeteroMapTableSpecification, RKMETableSpecification from .....utils import allocate_cuda_idx, choose_device @@ -288,7 +287,7 @@ class HeteroMap(nn.Module): # go through transformers, get the first cls embedding encoder_output = self.encoder(**outputs) # bs, seqlen+1, hidden_dim output_features = encoder_output[:, 0, :] - + del inputs, outputs, encoder_output torch.cuda.empty_cache() diff --git a/learnware/market/heterogeneous/searcher.py b/learnware/market/heterogeneous/searcher.py index 8a97dba..5a10ac0 100644 --- a/learnware/market/heterogeneous/searcher.py +++ b/learnware/market/heterogeneous/searcher.py @@ -11,7 +11,11 @@ logger = get_module_logger("hetero_searcher") class HeteroSearcher(EasySearcher): def __call__( - self, user_info: BaseUserInfo, check_status: Optional[int] = None, max_search_num: int = 5, search_method: str = "greedy" + self, + user_info: BaseUserInfo, + check_status: Optional[int] = None, + max_search_num: int = 5, + search_method: str = "greedy", ) -> SearchResults: """Search learnwares based on user_info from learnwares with check_status. Employs heterogeneous learnware search if specific requirements are met, otherwise resorts to homogeneous search methods. diff --git a/learnware/market/module.py b/learnware/market/module.py index c5c64f1..cdc13e7 100644 --- a/learnware/market/module.py +++ b/learnware/market/module.py @@ -1,11 +1,12 @@ from .base import LearnwareMarket from .classes import CondaChecker -from .easy import (EasyOrganizer, EasySearcher, EasySemanticChecker, - EasyStatChecker) +from .easy import EasyOrganizer, EasySearcher, EasySemanticChecker, EasyStatChecker from .heterogeneous import HeteroMapTableOrganizer, HeteroSearcher -def get_market_component(name, market_id, rebuild, organizer_kwargs=None, searcher_kwargs=None, checker_kwargs=None, conda_checker=False): +def get_market_component( + name, market_id, rebuild, organizer_kwargs=None, searcher_kwargs=None, checker_kwargs=None, conda_checker=False +): organizer_kwargs = {} if organizer_kwargs is None else organizer_kwargs searcher_kwargs = {} if searcher_kwargs is None else searcher_kwargs checker_kwargs = {} if checker_kwargs is None else checker_kwargs @@ -13,7 +14,10 @@ def get_market_component(name, market_id, rebuild, organizer_kwargs=None, search if name == "easy": easy_organizer = EasyOrganizer(market_id=market_id, rebuild=rebuild) easy_searcher = EasySearcher(organizer=easy_organizer) - easy_checker_list = [EasySemanticChecker(), EasyStatChecker() if conda_checker is False else CondaChecker(EasyStatChecker())] + easy_checker_list = [ + EasySemanticChecker(), + EasyStatChecker() if conda_checker is False else CondaChecker(EasyStatChecker()), + ] market_component = { "organizer": easy_organizer, "searcher": easy_searcher, @@ -22,7 +26,10 @@ def get_market_component(name, market_id, rebuild, organizer_kwargs=None, search elif name == "hetero": hetero_organizer = HeteroMapTableOrganizer(market_id=market_id, rebuild=rebuild, **organizer_kwargs) hetero_searcher = HeteroSearcher(organizer=hetero_organizer) - hetero_checker_list = [EasySemanticChecker(), EasyStatChecker() if conda_checker is False else CondaChecker(EasyStatChecker())] + hetero_checker_list = [ + EasySemanticChecker(), + EasyStatChecker() if conda_checker is False else CondaChecker(EasyStatChecker()), + ] market_component = { "organizer": hetero_organizer, @@ -45,7 +52,9 @@ def instantiate_learnware_market( conda_checker: bool = False, **kwargs, ): - market_componets = get_market_component(name, market_id, rebuild, organizer_kwargs, searcher_kwargs, checker_kwargs, conda_checker) + market_componets = get_market_component( + name, market_id, rebuild, organizer_kwargs, searcher_kwargs, checker_kwargs, conda_checker + ) return LearnwareMarket( organizer=market_componets["organizer"], searcher=market_componets["searcher"], diff --git a/learnware/reuse/__init__.py b/learnware/reuse/__init__.py index 7296ad1..7a8d185 100644 --- a/learnware/reuse/__init__.py +++ b/learnware/reuse/__init__.py @@ -20,4 +20,4 @@ else: from .ensemble_pruning import EnsemblePruningReuser from .feature_augment import FeatureAugmentReuser from .hetero import FeatureAlignLearnware, HeteroMapAlignLearnware - from .job_selector import JobSelectorReuser \ No newline at end of file + from .job_selector import JobSelectorReuser diff --git a/learnware/reuse/ensemble_pruning.py b/learnware/reuse/ensemble_pruning.py index d182c9f..a8eb607 100644 --- a/learnware/reuse/ensemble_pruning.py +++ b/learnware/reuse/ensemble_pruning.py @@ -54,13 +54,14 @@ class EnsemblePruningReuser(BaseReuser): np.ndarray Binary one-dimensional vector, 1 indicates that the corresponding model is selected. """ - - + try: import geatpy as ea except ModuleNotFoundError: - raise ModuleNotFoundError(f"EnsemblePruningReuser is not available because 'geatpy' is not installed! Please install it manually (only support python_version<3.11).") - + raise ModuleNotFoundError( + f"EnsemblePruningReuser is not available because 'geatpy' is not installed! Please install it manually (only support python_version<3.11)." + ) + model_num = v_predict.shape[1] @ea.Problem.single @@ -148,7 +149,9 @@ class EnsemblePruningReuser(BaseReuser): try: import geatpy as ea except ModuleNotFoundError: - raise ModuleNotFoundError(f"EnsemblePruningReuser is not available because 'geatpy' is not installed! Please install it manually (only support python_version<3.11).") + raise ModuleNotFoundError( + f"EnsemblePruningReuser is not available because 'geatpy' is not installed! Please install it manually (only support python_version<3.11)." + ) if torch.is_tensor(v_true): v_true = v_true.detach().cpu().numpy() @@ -270,8 +273,10 @@ class EnsemblePruningReuser(BaseReuser): try: import geatpy as ea except ModuleNotFoundError: - raise ModuleNotFoundError(f"EnsemblePruningReuser is not available because 'geatpy' is not installed! Please install it manually (only support python_version<3.11).") - + raise ModuleNotFoundError( + f"EnsemblePruningReuser is not available because 'geatpy' is not installed! Please install it manually (only support python_version<3.11)." + ) + model_num = v_predict.shape[1] v_predict[v_predict == 0.0] = -1 v_true[v_true == 0.0] = -1 diff --git a/learnware/reuse/job_selector.py b/learnware/reuse/job_selector.py index 355849e..49689ed 100644 --- a/learnware/reuse/job_selector.py +++ b/learnware/reuse/job_selector.py @@ -8,8 +8,7 @@ from .base import BaseReuser from ..learnware import Learnware from ..logger import get_module_logger from ..market.utils import parse_specification_type -from ..specification import (RKMETableSpecification, RKMETextSpecification, - generate_rkme_table_spec, rkme_solve_qp) +from ..specification import RKMETableSpecification, RKMETextSpecification, generate_rkme_table_spec, rkme_solve_qp logger = get_module_logger("job_selector_reuse") diff --git a/learnware/reuse/utils.py b/learnware/reuse/utils.py index 49bb2f2..075cc20 100644 --- a/learnware/reuse/utils.py +++ b/learnware/reuse/utils.py @@ -4,6 +4,7 @@ from ..logger import get_module_logger logger = get_module_logger("reuse_utils") + def fill_data_with_mean(X: np.ndarray) -> np.ndarray: """ Fill missing data (NaN, Inf) in the input array with the mean of the column. diff --git a/learnware/specification/__init__.py b/learnware/specification/__init__.py index 4667548..6f50627 100644 --- a/learnware/specification/__init__.py +++ b/learnware/specification/__init__.py @@ -1,7 +1,12 @@ from .base import BaseStatSpecification, Specification -from .regular import (RegularStatSpecification, RKMEImageSpecification, - RKMEStatSpecification, RKMETableSpecification, - RKMETextSpecification, rkme_solve_qp) +from .regular import ( + RegularStatSpecification, + RKMEImageSpecification, + RKMEStatSpecification, + RKMETableSpecification, + RKMETextSpecification, + rkme_solve_qp, +) from .system import HeteroMapTableSpecification from ..utils import is_torch_available @@ -12,6 +17,10 @@ if not is_torch_available(verbose=False): generate_rkme_text_spec = None generate_semantic_spec = None else: - from .module import (generate_rkme_image_spec, generate_rkme_table_spec, - generate_rkme_text_spec, generate_semantic_spec, - generate_stat_spec) + from .module import ( + generate_rkme_image_spec, + generate_rkme_table_spec, + generate_rkme_text_spec, + generate_semantic_spec, + generate_stat_spec, + ) diff --git a/learnware/specification/regular/table/__init__.py b/learnware/specification/regular/table/__init__.py index 681d7ae..7f2b04c 100644 --- a/learnware/specification/regular/table/__init__.py +++ b/learnware/specification/regular/table/__init__.py @@ -11,5 +11,4 @@ if not is_torch_available(verbose=False): f"RKMETableSpecification, RKMEStatSpecification and rkme_solve_qp are not available because 'torch' is not installed!" ) else: - from .rkme import (RKMEStatSpecification, RKMETableSpecification, - rkme_solve_qp) + from .rkme import RKMEStatSpecification, RKMETableSpecification, rkme_solve_qp diff --git a/learnware/specification/regular/text/rkme.py b/learnware/specification/regular/text/rkme.py index ab5e237..3427e67 100644 --- a/learnware/specification/regular/text/rkme.py +++ b/learnware/specification/regular/text/rkme.py @@ -87,12 +87,14 @@ class RKMETextSpecification(RKMETableSpecification): return np.array(miniLM_learnware.predict(X)) logger.info("Load the necessary feature extractor for RKMETextSpecification.") - + try: from sentence_transformers import SentenceTransformer except ModuleNotFoundError: - raise ModuleNotFoundError(f"RKMETextSpecification is not available because 'sentence_transformers' is not installed! Please install it manually.") - + raise ModuleNotFoundError( + f"RKMETextSpecification is not available because 'sentence_transformers' is not installed! Please install it manually." + ) + if os.path.exists(zip_path): X = _get_from_client(zip_path, X) else: diff --git a/learnware/specification/system/hetero_table.py b/learnware/specification/system/hetero_table.py index 52602e6..65b6d3f 100644 --- a/learnware/specification/system/hetero_table.py +++ b/learnware/specification/system/hetero_table.py @@ -137,7 +137,9 @@ class HeteroMapTableSpecification(SystemStatSpecification): for d in self.get_states(): if d in embedding_load.keys(): if d == "type" and embedding_load[d] != self.type: - raise TypeError(f"The type of loaded RKME ({embedding_load[d]}) is different from the expected type ({self.type})!") + raise TypeError( + f"The type of loaded RKME ({embedding_load[d]}) is different from the expected type ({self.type})!" + ) setattr(self, d, embedding_load[d]) def save(self, filepath: str) -> bool: diff --git a/learnware/tests/__init__.py b/learnware/tests/__init__.py index e8ee37e..7ba38d5 100644 --- a/learnware/tests/__init__.py +++ b/learnware/tests/__init__.py @@ -1 +1 @@ -from .utils import parametrize \ No newline at end of file +from .utils import parametrize diff --git a/learnware/tests/templates/__init__.py b/learnware/tests/templates/__init__.py index 69237f9..d2f016f 100644 --- a/learnware/tests/templates/__init__.py +++ b/learnware/tests/templates/__init__.py @@ -13,10 +13,13 @@ class ModelTemplate: class_name: str = field(init=False) template_path: str = field(init=False) model_kwargs: dict = field(init=False) + + @dataclass class PickleModelTemplate(ModelTemplate): model_kwargs: dict pickle_filepath: str + def __post_init__(self): self.class_name = "PickleLoadedModel" self.template_path = os.path.join(C.package_path, "tests", "templates", "pickle_model.py") @@ -29,13 +32,14 @@ class PickleModelTemplate(ModelTemplate): default_model_kwargs.update(self.model_kwargs) self.model_kwargs = default_model_kwargs + @dataclass class StatSpecTemplate: filepath: str type: str = field(default="RKMETableSpecification") - -class LearnwareTemplate: + +class LearnwareTemplate: @staticmethod def generate_requirements(filepath, requirements: Optional[List[Union[Tuple[str, str, str], str]]] = None): requirements = [] if requirements is None else requirements @@ -49,14 +53,16 @@ class LearnwareTemplate: line_str = requirement[0].strip() + requirement[1].strip() + requirement[2].strip() + "\n" else: raise TypeError(f"requirement must be type str/tuple, rather than {type(requirement)}") - + requirements_str += line_str - + with open(filepath, "w") as fdout: fdout.write(requirements_str) - + @staticmethod - def generate_learnware_yaml(filepath, model_config: Optional[dict] = None, stat_spec_config: Optional[List[dict]] = None): + def generate_learnware_yaml( + filepath, model_config: Optional[dict] = None, stat_spec_config: Optional[List[dict]] = None + ): learnware_config = {} if model_config is not None: learnware_config["model"] = model_config @@ -64,7 +70,7 @@ class LearnwareTemplate: learnware_config["stat_specifications"] = stat_spec_config save_dict_to_yaml(learnware_config, filepath) - + @staticmethod def generate_learnware_zipfile( learnware_zippath: str, @@ -75,27 +81,29 @@ class LearnwareTemplate: with tempfile.TemporaryDirectory(suffix="learnware_template") as tempdir: requirement_filepath = os.path.join(tempdir, "requirements.txt") LearnwareTemplate.generate_requirements(requirement_filepath, requirements) - - model_filepath = os.path.join(tempdir, "__init__.py") + + model_filepath = os.path.join(tempdir, "__init__.py") copyfile(model_template.template_path, model_filepath) - + learnware_yaml_filepath = os.path.join(tempdir, "learnware.yaml") model_config = { "class_name": model_template.class_name, "kwargs": model_template.model_kwargs, } - + stat_spec_config = { "module_path": "learnware.specification", "class_name": stat_spec_template.type, "file_name": "stat_spec.json", - "kwargs": {} + "kwargs": {}, } copyfile(stat_spec_template.filepath, os.path.join(tempdir, stat_spec_config["file_name"])) - LearnwareTemplate.generate_learnware_yaml(learnware_yaml_filepath, model_config, stat_spec_config=[stat_spec_config]) - + LearnwareTemplate.generate_learnware_yaml( + learnware_yaml_filepath, model_config, stat_spec_config=[stat_spec_config] + ) + if isinstance(model_template, PickleModelTemplate): pickle_filepath = os.path.join(tempdir, model_template.model_kwargs["pickle_filename"]) copyfile(model_template.pickle_filepath, pickle_filepath) - + convert_folder_to_zipfile(tempdir, learnware_zippath) diff --git a/learnware/tests/templates/pickle_model.py b/learnware/tests/templates/pickle_model.py index 8ec7f44..e031d8a 100644 --- a/learnware/tests/templates/pickle_model.py +++ b/learnware/tests/templates/pickle_model.py @@ -7,7 +7,6 @@ from learnware.model.base import BaseModel class PickleLoadedModel(BaseModel): - def __init__( self, input_shape, @@ -25,10 +24,10 @@ class PickleLoadedModel(BaseModel): self.predict_method = predict_method self.fit_method = fit_method self.finetune_method = finetune_method - + def predict(self, X: np.ndarray) -> np.ndarray: return getattr(self.model, self.predict_method)(X) - + def fit(self, X: np.ndarray, y: np.ndarray): getattr(self.model, self.fit_method)(X, y) diff --git a/learnware/tests/utils.py b/learnware/tests/utils.py index 5486bf4..b5738cc 100644 --- a/learnware/tests/utils.py +++ b/learnware/tests/utils.py @@ -7,4 +7,4 @@ def parametrize(test_class, **kwargs): _suite = unittest.TestSuite() for name in test_names: _suite.addTest(test_class(name, **kwargs)) - return _suite \ No newline at end of file + return _suite diff --git a/learnware/utils/__init__.py b/learnware/utils/__init__.py index d7b666a..bde7f09 100644 --- a/learnware/utils/__init__.py +++ b/learnware/utils/__init__.py @@ -1,8 +1,7 @@ import os import zipfile -from .file import (convert_folder_to_zipfile, read_yaml_to_dict, - save_dict_to_yaml) +from .file import convert_folder_to_zipfile, read_yaml_to_dict, save_dict_to_yaml from .gpu import allocate_cuda_idx, choose_device, setup_seed from .import_utils import is_torch_available from .module import get_module_by_module_path diff --git a/learnware/utils/file.py b/learnware/utils/file.py index 4108b49..4366206 100644 --- a/learnware/utils/file.py +++ b/learnware/utils/file.py @@ -16,6 +16,7 @@ def read_yaml_to_dict(yaml_path: str): dict_value = yaml.load(file.read(), Loader=yaml.FullLoader) return dict_value + def convert_folder_to_zipfile(folder_path, zip_path): with zipfile.ZipFile(zip_path, "w") as zip_obj: for foldername, subfolders, filenames in os.walk(folder_path): diff --git a/learnware/utils/gpu.py b/learnware/utils/gpu.py index 23330a5..7423009 100644 --- a/learnware/utils/gpu.py +++ b/learnware/utils/gpu.py @@ -17,6 +17,7 @@ def setup_seed(seed): random.seed(seed) if is_torch_available(verbose=False): import torch + torch.manual_seed(seed) torch.cuda.manual_seed_all(seed) torch.backends.cudnn.deterministic = True diff --git a/tests/test_learnware_client/test_container.py b/tests/test_learnware_client/test_container.py index 861e0eb..4e1f1f4 100644 --- a/tests/test_learnware_client/test_container.py +++ b/tests/test_learnware_client/test_container.py @@ -4,15 +4,16 @@ import numpy as np from learnware.client import LearnwareClient from learnware.client.container import LearnwaresContainer + class TestContainer(unittest.TestCase): - def __init__(self, method_name='runTest', mode="all"): + def __init__(self, method_name="runTest", mode="all"): super(TestContainer, self).__init__(method_name) self.modes = [] if mode in {"all", "conda"}: self.modes.append("conda") if mode in {"all", "docker"}: self.modes.append("docker") - + def setUp(self): self.client = LearnwareClient() @@ -35,17 +36,19 @@ class TestContainer(unittest.TestCase): def test_container_with_pip(self): for mode in self.modes: self._test_container_with_pip(mode=mode) - + def test_container_with_conda(self): for mode in self.modes: self._test_container_with_conda(mode=mode) + def suite(): _suite = unittest.TestSuite() _suite.addTest(TestContainer("test_container_with_pip", mode="all")) _suite.addTest(TestContainer("test_container_with_conda", mode="all")) return _suite + if __name__ == "__main__": runner = unittest.TextTestRunner() - runner.run(suite()) \ No newline at end of file + runner.run(suite()) diff --git a/tests/test_learnware_client/test_load_learnware.py b/tests/test_learnware_client/test_load_learnware.py index 63f9856..1ce2250 100644 --- a/tests/test_learnware_client/test_load_learnware.py +++ b/tests/test_learnware_client/test_load_learnware.py @@ -5,8 +5,9 @@ import numpy as np from learnware.client import LearnwareClient from learnware.reuse import AveragingReuser + class TestLearnwareLoad(unittest.TestCase): - def __init__(self, method_name='runTest', mode="all"): + def __init__(self, method_name="runTest", mode="all"): super(TestLearnwareLoad, self).__init__(method_name) self.runnable_options = [] if mode in {"all", "conda"}: @@ -31,7 +32,6 @@ class TestLearnwareLoad(unittest.TestCase): for learnware in learnware_list: print(learnware.id, learnware.predict(input_array)) - def _test_load_learnware_by_id(self, runnable_option): learnware_list = self.client.load_learnware(learnware_id=self.learnware_ids, runnable_option=runnable_option) reuser = AveragingReuser(learnware_list, mode="vote_by_label") @@ -44,11 +44,11 @@ class TestLearnwareLoad(unittest.TestCase): def test_load_learnware_by_zippath(self): for runnable_option in self.runnable_options: self._test_load_learnware_by_zippath(runnable_option=runnable_option) - + def test_load_learnware_by_id(self): for runnable_option in self.runnable_options: self._test_load_learnware_by_id(runnable_option=runnable_option) - + def suite(): _suite = unittest.TestSuite() @@ -56,6 +56,7 @@ def suite(): _suite.addTest(TestLearnwareLoad("test_load_learnware_by_id", mode="all")) return _suite + if __name__ == "__main__": runner = unittest.TextTestRunner() - runner.run(suite()) \ No newline at end of file + runner.run(suite()) diff --git a/tests/test_specification/test_hetero_spec.py b/tests/test_specification/test_hetero_spec.py index 21563b3..b0f7e87 100644 --- a/tests/test_specification/test_hetero_spec.py +++ b/tests/test_specification/test_hetero_spec.py @@ -11,11 +11,11 @@ from learnware.specification import RKMETableSpecification, HeteroMapTableSpecif from learnware.specification import generate_stat_spec from learnware.market.heterogeneous.organizer import HeteroMap + class TestTableRKME(unittest.TestCase): - def setUp(self): self.hetero_map = HeteroMap() - + def _test_hetero_spec(self, X): rkme: RKMETableSpecification = generate_stat_spec(type="table", X=X) hetero_spec = self.hetero_map.hetero_mapping(rkme_spec=rkme, features=dict()) @@ -30,14 +30,14 @@ class TestTableRKME(unittest.TestCase): rkme2 = HeteroMapTableSpecification() rkme2.load(rkme_path) assert rkme2.type == "HeteroMapTableSpecification" - - + def test_hetero_rkme(self): self._test_hetero_spec(np.random.uniform(-10000, 10000, size=(5000, 200))) self._test_hetero_spec(np.random.uniform(-10000, 10000, size=(10000, 100))) self._test_hetero_spec(np.random.uniform(-10000, 10000, size=(5, 20))) self._test_hetero_spec(np.random.uniform(-10000, 10000, size=(1, 50))) self._test_hetero_spec(np.random.uniform(-10000, 10000, size=(100, 150))) - + + if __name__ == "__main__": unittest.main() diff --git a/tests/test_specification/test_image_rkme.py b/tests/test_specification/test_image_rkme.py index 29312bf..4bd71b5 100644 --- a/tests/test_specification/test_image_rkme.py +++ b/tests/test_specification/test_image_rkme.py @@ -25,7 +25,7 @@ class TestImageRKME(unittest.TestCase): rkme2 = RKMEImageSpecification() rkme2.load(rkme_path) assert rkme2.type == "RKMEImageSpecification" - + def test_image_rkme(self): self._test_image_rkme(np.random.randint(0, 255, size=(2000, 3, 32, 32))) self._test_image_rkme(np.random.randint(0, 255, size=(100, 1, 128, 128))) @@ -34,5 +34,6 @@ class TestImageRKME(unittest.TestCase): self._test_image_rkme(torch.randint(0, 255, (20, 3, 128, 128))) self._test_image_rkme(torch.randint(0, 255, (1, 1, 128, 128)) / 255) + if __name__ == "__main__": unittest.main() diff --git a/tests/test_specification/test_table_rkme.py b/tests/test_specification/test_table_rkme.py index 9c314f1..2be9113 100644 --- a/tests/test_specification/test_table_rkme.py +++ b/tests/test_specification/test_table_rkme.py @@ -24,7 +24,7 @@ class TestTableRKME(unittest.TestCase): rkme2 = RKMETableSpecification() rkme2.load(rkme_path) assert rkme2.type == "RKMETableSpecification" - + def test_table_rkme(self): self._test_table_rkme(np.random.uniform(-10000, 10000, size=(5000, 200))) self._test_table_rkme(np.random.uniform(-10000, 10000, size=(10000, 100))) @@ -32,5 +32,6 @@ class TestTableRKME(unittest.TestCase): self._test_table_rkme(np.random.uniform(-10000, 10000, size=(1, 50))) self._test_table_rkme(np.random.uniform(-10000, 10000, size=(100, 150))) + if __name__ == "__main__": unittest.main() diff --git a/tests/test_specification/test_text_rkme.py b/tests/test_specification/test_text_rkme.py index 0409d98..6675cf4 100644 --- a/tests/test_specification/test_text_rkme.py +++ b/tests/test_specification/test_text_rkme.py @@ -12,19 +12,19 @@ from learnware.specification import generate_stat_spec class TestTextRKME(unittest.TestCase): @staticmethod def generate_random_text_list(num, text_type="en", min_len=10, max_len=1000): - text_list = [] - for i in range(num): - length = random.randint(min_len, max_len) - if text_type == "en": - characters = string.ascii_letters + string.digits + string.punctuation - result_str = "".join(random.choice(characters) for i in range(length)) - text_list.append(result_str) - elif text_type == "zh": - result_str = "".join(chr(random.randint(0x4E00, 0x9FFF)) for i in range(length)) - text_list.append(result_str) - else: - raise ValueError("Type should be en or zh") - return text_list + text_list = [] + for i in range(num): + length = random.randint(min_len, max_len) + if text_type == "en": + characters = string.ascii_letters + string.digits + string.punctuation + result_str = "".join(random.choice(characters) for i in range(length)) + text_list.append(result_str) + elif text_type == "zh": + result_str = "".join(chr(random.randint(0x4E00, 0x9FFF)) for i in range(length)) + text_list.append(result_str) + else: + raise ValueError("Type should be en or zh") + return text_list @staticmethod def _test_text_rkme(X): diff --git a/tests/test_workflow/test_hetero_workflow.py b/tests/test_workflow/test_hetero_workflow.py index 3276bdc..245fc4c 100644 --- a/tests/test_workflow/test_hetero_workflow.py +++ b/tests/test_workflow/test_hetero_workflow.py @@ -11,6 +11,7 @@ from shutil import copyfile, rmtree from sklearn.metrics import mean_squared_error import learnware + learnware.init(logging_level=logging.WARNING) from learnware.market import instantiate_learnware_market, BaseUserInfo @@ -23,6 +24,7 @@ from hetero_config import input_shape_list, input_description_list, output_descr curr_root = os.path.dirname(os.path.abspath(__file__)) + class TestHeteroWorkflow(unittest.TestCase): universal_semantic_config = { "data_type": "Table", @@ -46,10 +48,12 @@ class TestHeteroWorkflow(unittest.TestCase): learnware_pool_dirpath = os.path.join(curr_root, "learnware_pool_hetero") os.makedirs(learnware_pool_dirpath, exist_ok=True) learnware_zippath = os.path.join(learnware_pool_dirpath, "ridge_%d.zip" % (i)) - + print("Preparing Learnware: %d" % (i)) - X, y = make_regression(n_samples=5000, n_informative=15, n_features=input_shape_list[i % 2], noise=0.1, random_state=42) + X, y = make_regression( + n_samples=5000, n_informative=15, n_features=input_shape_list[i % 2], noise=0.1, random_state=42 + ) clf = Ridge(alpha=1.0) clf.fit(X, y) pickle_filepath = os.path.join(learnware_pool_dirpath, "ridge.pkl") @@ -62,14 +66,16 @@ class TestHeteroWorkflow(unittest.TestCase): LearnwareTemplate.generate_learnware_zipfile( learnware_zippath=learnware_zippath, - model_template=PickleModelTemplate(pickle_filepath=pickle_filepath, model_kwargs={"input_shape":(input_shape_list[i % 2],), "output_shape": (1,)}), + model_template=PickleModelTemplate( + pickle_filepath=pickle_filepath, + model_kwargs={"input_shape": (input_shape_list[i % 2],), "output_shape": (1,)}, + ), stat_spec_template=StatSpecTemplate(filepath=spec_filepath, type="RKMETableSpecification"), requirements=["scikit-learn==0.22"], ) - + self.zip_path_list.append(learnware_zippath) - def _upload_delete_learnware(self, hetero_market, learnware_num, delete): self.test_prepare_learnware_randomly(learnware_num) self.learnware_num = learnware_num @@ -83,7 +89,7 @@ class TestHeteroWorkflow(unittest.TestCase): description=f"test_learnware_number_{idx}", input_description=input_description_list[idx % 2], output_description=output_description_list[idx % 2], - **self.universal_semantic_config + **self.universal_semantic_config, ) hetero_market.add_learnware(zip_path, semantic_spec) @@ -106,7 +112,7 @@ class TestHeteroWorkflow(unittest.TestCase): assert len(curr_inds) == 0, f"The market should be empty!" return hetero_market - + def test_upload_delete_learnware(self, learnware_num=5, delete=True): hetero_market = self._init_learnware_market() return self._upload_delete_learnware(hetero_market, learnware_num, delete) @@ -129,7 +135,7 @@ class TestHeteroWorkflow(unittest.TestCase): name=f"learnware_{learnware_num - 1}", **self.universal_semantic_config, ) - + user_info = BaseUserInfo(semantic_spec=semantic_spec) search_result = hetero_market.search_learnware(user_info) single_result = search_result.get_single_results() @@ -154,7 +160,7 @@ class TestHeteroWorkflow(unittest.TestCase): def test_hetero_stat_search(self, learnware_num=5): hetero_market = self.test_train_market_model(learnware_num, delete=False) print("Total Item:", len(hetero_market)) - + user_dim = 15 with tempfile.TemporaryDirectory(prefix="learnware_test_hetero") as test_folder: @@ -174,7 +180,10 @@ class TestHeteroWorkflow(unittest.TestCase): semantic_spec = generate_semantic_spec( input_description={ "Dimension": user_dim, - "Description": {str(key): input_description_list[idx % 2]["Description"][str(key)] for key in range(user_dim)}, + "Description": { + str(key): input_description_list[idx % 2]["Description"][str(key)] + for key in range(user_dim) + }, }, **self.universal_semantic_config, ) @@ -182,7 +191,7 @@ class TestHeteroWorkflow(unittest.TestCase): search_result = hetero_market.search_learnware(user_info) single_result = search_result.get_single_results() multiple_result = search_result.get_multiple_results() - + print(f"search result of user{idx}:") for single_item in single_result: print(f"score: {single_item.score}, learnware_id: {single_item.learnware.id}") @@ -215,7 +224,10 @@ class TestHeteroWorkflow(unittest.TestCase): semantic_spec = generate_semantic_spec( input_description={ "Dimension": user_dim - 2, - "Description": {str(key): input_description_list[idx % 2]["Description"][str(key)] for key in range(user_dim)}, + "Description": { + str(key): input_description_list[idx % 2]["Description"][str(key)] + for key in range(user_dim) + }, }, **self.universal_semantic_config, ) @@ -228,7 +240,7 @@ class TestHeteroWorkflow(unittest.TestCase): def test_homo_stat_search(self, learnware_num=5): hetero_market = self.test_train_market_model(learnware_num, delete=False) print("Total Item:", len(hetero_market)) - + with tempfile.TemporaryDirectory(prefix="learnware_test_hetero") as test_folder: for idx, zip_path in enumerate(self.zip_path_list): with zipfile.ZipFile(zip_path, "r") as zip_obj: @@ -260,7 +272,9 @@ class TestHeteroWorkflow(unittest.TestCase): user_spec = generate_rkme_table_spec(X=X, gamma=0.1, cuda_idx=0) # generate specification - semantic_spec = generate_semantic_spec(input_description=user_description_list[0], **self.universal_semantic_config) + semantic_spec = generate_semantic_spec( + input_description=user_description_list[0], **self.universal_semantic_config + ) user_info = BaseUserInfo(semantic_spec=semantic_spec, stat_info={"RKMETableSpecification": user_spec}) # learnware market search @@ -268,7 +282,7 @@ class TestHeteroWorkflow(unittest.TestCase): search_result = hetero_market.search_learnware(user_info) single_result = search_result.get_single_results() multiple_result = search_result.get_multiple_results() - + # print search results for single_item in single_result: print(f"score: {single_item.score}, learnware_id: {single_item.learnware.id}") @@ -306,9 +320,9 @@ class TestHeteroWorkflow(unittest.TestCase): def suite(): _suite = unittest.TestSuite() - #_suite.addTest(TestHeteroWorkflow("test_prepare_learnware_randomly")) - #_suite.addTest(TestHeteroWorkflow("test_upload_delete_learnware")) - #_suite.addTest(TestHeteroWorkflow("test_train_market_model")) + # _suite.addTest(TestHeteroWorkflow("test_prepare_learnware_randomly")) + # _suite.addTest(TestHeteroWorkflow("test_upload_delete_learnware")) + # _suite.addTest(TestHeteroWorkflow("test_train_market_model")) _suite.addTest(TestHeteroWorkflow("test_search_semantics")) _suite.addTest(TestHeteroWorkflow("test_hetero_stat_search")) _suite.addTest(TestHeteroWorkflow("test_homo_stat_search")) diff --git a/tests/test_workflow/test_workflow.py b/tests/test_workflow/test_workflow.py index c7a5bc5..bbd6038 100644 --- a/tests/test_workflow/test_workflow.py +++ b/tests/test_workflow/test_workflow.py @@ -10,6 +10,7 @@ from sklearn.datasets import load_digits from sklearn.model_selection import train_test_split import learnware + learnware.init(logging_level=logging.WARNING) from learnware.market import instantiate_learnware_market, BaseUserInfo @@ -19,8 +20,8 @@ from learnware.tests.templates import LearnwareTemplate, PickleModelTemplate, St curr_root = os.path.dirname(os.path.abspath(__file__)) + class TestWorkflow(unittest.TestCase): - universal_semantic_config = { "data_type": "Table", "task_type": "Classification", @@ -28,7 +29,7 @@ class TestWorkflow(unittest.TestCase): "scenarios": "Education", "license": "MIT", } - + def _init_learnware_market(self): """initialize learnware market""" easy_market = instantiate_learnware_market(market_id="sklearn_digits_easy", name="easy", rebuild=True) @@ -42,7 +43,7 @@ class TestWorkflow(unittest.TestCase): learnware_pool_dirpath = os.path.join(curr_root, "learnware_pool") os.makedirs(learnware_pool_dirpath, exist_ok=True) learnware_zippath = os.path.join(learnware_pool_dirpath, "svm_%d.zip" % (i)) - + print("Preparing Learnware: %d" % (i)) data_X, _, data_y, _ = train_test_split(X, y, test_size=0.3, shuffle=True) clf = svm.SVC(kernel="linear", probability=True) @@ -54,14 +55,17 @@ class TestWorkflow(unittest.TestCase): spec = generate_rkme_table_spec(X=data_X, gamma=0.1, cuda_idx=0) spec_filepath = os.path.join(learnware_pool_dirpath, "stat_spec.json") spec.save(spec_filepath) - + LearnwareTemplate.generate_learnware_zipfile( learnware_zippath=learnware_zippath, - model_template=PickleModelTemplate(pickle_filepath=pickle_filepath, model_kwargs={"input_shape":(64,), "output_shape": (10,), "predict_method": "predict_proba"}), + model_template=PickleModelTemplate( + pickle_filepath=pickle_filepath, + model_kwargs={"input_shape": (64,), "output_shape": (10,), "predict_method": "predict_proba"}, + ), stat_spec_template=StatSpecTemplate(filepath=spec_filepath, type="RKMETableSpecification"), requirements=["scikit-learn==0.22"], ) - + self.zip_path_list.append(learnware_zippath) def test_upload_delete_learnware(self, learnware_num=5, delete=True): @@ -87,7 +91,7 @@ class TestWorkflow(unittest.TestCase): "Dimension": 10, "Description": {f"{i}": "The probability for each digit for 0 to 9." for i in range(10)}, }, - **self.universal_semantic_config + **self.universal_semantic_config, ) easy_market.add_learnware(zip_path, semantic_spec) @@ -113,7 +117,7 @@ class TestWorkflow(unittest.TestCase): easy_market = self.test_upload_delete_learnware(learnware_num, delete=False) print("Total Item:", len(easy_market)) assert len(easy_market) == self.learnware_num, f"The number of learnwares must be {self.learnware_num}!" - + with tempfile.TemporaryDirectory(prefix="learnware_test_workflow") as test_folder: with zipfile.ZipFile(self.zip_path_list[0], "r") as zip_obj: zip_obj.extractall(path=test_folder) @@ -123,15 +127,15 @@ class TestWorkflow(unittest.TestCase): description=f"test_learnware_number_{learnware_num - 1}", **self.universal_semantic_config, ) - + user_info = BaseUserInfo(semantic_spec=semantic_spec) search_result = easy_market.search_learnware(user_info) single_result = search_result.get_single_results() print(f"Search result:") for search_item in single_result: - print("Choose learnware:",search_item.learnware.id) - + print("Choose learnware:", search_item.learnware.id) + def test_stat_search(self, learnware_num=5): easy_market = self.test_upload_delete_learnware(learnware_num, delete=False) print("Total Item:", len(easy_market)) From a71592dec34dc72f1c24ba475c384151a6206ff9 Mon Sep 17 00:00:00 2001 From: Gene Date: Thu, 11 Jan 2024 21:30:56 +0800 Subject: [PATCH 47/56] [MNT] solve E713,E722,E721 error of flake8 in package --- learnware/market/anchor/organizer.py | 2 +- learnware/market/easy/organizer.py | 12 ++++++------ learnware/market/easy/searcher.py | 4 ++-- learnware/specification/regular/text/rkme.py | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/learnware/market/anchor/organizer.py b/learnware/market/anchor/organizer.py index 2e0d215..2e4deb3 100644 --- a/learnware/market/anchor/organizer.py +++ b/learnware/market/anchor/organizer.py @@ -44,7 +44,7 @@ class AnchoredOrganizer(EasyOrganizer): Exception Raise an excpetion when given anchor_id is NOT found in anchor_learnware_list """ - if not anchor_id in self.anchor_learnware_list: + if anchor_id not in self.anchor_learnware_list: raise Exception("Anchor learnware id:{} NOT Found!".format(anchor_id)) self.anchor_learnware_list.pop(anchor_id) diff --git a/learnware/market/easy/organizer.py b/learnware/market/easy/organizer.py index ffc6428..c259053 100644 --- a/learnware/market/easy/organizer.py +++ b/learnware/market/easy/organizer.py @@ -94,12 +94,12 @@ class EasyOrganizer(BaseOrganizer): new_learnware = get_learnware_from_dirpath( id=learnware_id, semantic_spec=semantic_spec, learnware_dirpath=target_folder_dir ) - except: + except Exception: logger.warning("New learnware is not properly added!") try: os.remove(target_zip_dir) rmtree(target_folder_dir) - except: + except Exception: pass return None, BaseChecker.INVALID_LEARNWARE @@ -137,7 +137,7 @@ class EasyOrganizer(BaseOrganizer): True for successful operation. False for id not found. """ - if not id in self.learnware_list: + if id not in self.learnware_list: logger.warning("Learnware id:'{}' NOT Found!".format(id)) return False @@ -253,7 +253,7 @@ class EasyOrganizer(BaseOrganizer): else: try: return self.learnware_list[ids] - except: + except Exception: logger.warning("Learnware ID '%s' NOT Found!" % (ids)) return None @@ -285,7 +285,7 @@ class EasyOrganizer(BaseOrganizer): else: try: return self.learnware_zip_list[ids] - except: + except Exception: logger.warning("Learnware ID '%s' NOT Found!" % (ids)) return None @@ -317,7 +317,7 @@ class EasyOrganizer(BaseOrganizer): else: try: return self.learnware_folder_list[ids] - except: + except Exception: logger.warning("Learnware ID '%s' NOT Found!" % (ids)) return None diff --git a/learnware/market/easy/searcher.py b/learnware/market/easy/searcher.py index 4225e7a..dcfb7df 100644 --- a/learnware/market/easy/searcher.py +++ b/learnware/market/easy/searcher.py @@ -279,7 +279,7 @@ class EasyStatSearcher(BaseSearcher): learnware_num = len(learnware_list) RKME_list = [learnware.specification.get_stat_spec_by_name(self.stat_spec_type) for learnware in learnware_list] - if type(intermediate_K) == np.ndarray: + if isinstance(intermediate_K, np.ndarray): K = intermediate_K else: K = np.zeros((learnware_num, learnware_num)) @@ -288,7 +288,7 @@ class EasyStatSearcher(BaseSearcher): for j in range(i + 1, K.shape[0]): K[i, j] = K[j, i] = RKME_list[i].inner_prod(RKME_list[j]) - if type(intermediate_C) == np.ndarray: + if isinstance(intermediate_C, np.ndarray): C = intermediate_C else: C = np.zeros((learnware_num, 1)) diff --git a/learnware/specification/regular/text/rkme.py b/learnware/specification/regular/text/rkme.py index 3427e67..1714a32 100644 --- a/learnware/specification/regular/text/rkme.py +++ b/learnware/specification/regular/text/rkme.py @@ -103,7 +103,7 @@ class RKMETextSpecification(RKMETableSpecification): "sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2", cache_folder=cache_dir ) X = np.array(model.encode(X)) - except: + except Exception: X = _get_from_client(zip_path, X) return X From 08308c5eb44b5ad0755d71544294544d36c5ed36 Mon Sep 17 00:00:00 2001 From: Gene Date: Thu, 11 Jan 2024 21:33:52 +0800 Subject: [PATCH 48/56] [MNT] solve F541 error of flake8 in package --- learnware/market/heterogeneous/organizer/__init__.py | 2 +- learnware/market/heterogeneous/utils.py | 2 +- learnware/reuse/averaging.py | 2 +- learnware/reuse/ensemble_pruning.py | 8 ++++---- learnware/reuse/feature_augment.py | 2 +- learnware/reuse/job_selector.py | 4 ++-- learnware/specification/regular/image/__init__.py | 2 +- learnware/specification/regular/image/rkme.py | 4 ++-- learnware/specification/regular/table/__init__.py | 2 +- learnware/specification/regular/table/rkme.py | 2 +- learnware/specification/regular/text/__init__.py | 2 +- learnware/specification/regular/text/rkme.py | 2 +- learnware/tests/templates/__init__.py | 2 +- 13 files changed, 18 insertions(+), 18 deletions(-) diff --git a/learnware/market/heterogeneous/organizer/__init__.py b/learnware/market/heterogeneous/organizer/__init__.py index 50bce60..3dcbc6d 100644 --- a/learnware/market/heterogeneous/organizer/__init__.py +++ b/learnware/market/heterogeneous/organizer/__init__.py @@ -42,7 +42,7 @@ class HeteroMapTableOrganizer(EasyOrganizer): for hetero_id in hetero_ids: self._reload_learnware_hetero_spec(hetero_id) else: - logger.warning(f"No market mapping to reload!") + logger.warning("No market mapping to reload!") self.market_mapping = HeteroMap() def reset(self, market_id, rebuild=False, auto_update=False, auto_update_limit=100, **training_args): diff --git a/learnware/market/heterogeneous/utils.py b/learnware/market/heterogeneous/utils.py index 992ca22..860159e 100644 --- a/learnware/market/heterogeneous/utils.py +++ b/learnware/market/heterogeneous/utils.py @@ -47,5 +47,5 @@ def is_hetero(stat_specs: dict, semantic_spec: dict, verbose=True) -> bool: return True except Exception as err: if verbose: - logger.warning(f"Invalid heterogeneous search information provided.") + logger.warning("Invalid heterogeneous search information provided.") return False diff --git a/learnware/reuse/averaging.py b/learnware/reuse/averaging.py index 23d6bb0..c1fc057 100644 --- a/learnware/reuse/averaging.py +++ b/learnware/reuse/averaging.py @@ -50,7 +50,7 @@ class AveragingReuser(BaseReuser): if isinstance(pred_y, torch.Tensor): pred_y = pred_y.detach().cpu().numpy() if not isinstance(pred_y, np.ndarray): - raise TypeError(f"Model output must be np.ndarray or torch.Tensor") + raise TypeError("Model output must be np.ndarray or torch.Tensor") if len(pred_y.shape) == 1: pred_y = pred_y.reshape(-1, 1) diff --git a/learnware/reuse/ensemble_pruning.py b/learnware/reuse/ensemble_pruning.py index a8eb607..3ad0e95 100644 --- a/learnware/reuse/ensemble_pruning.py +++ b/learnware/reuse/ensemble_pruning.py @@ -59,7 +59,7 @@ class EnsemblePruningReuser(BaseReuser): import geatpy as ea except ModuleNotFoundError: raise ModuleNotFoundError( - f"EnsemblePruningReuser is not available because 'geatpy' is not installed! Please install it manually (only support python_version<3.11)." + "EnsemblePruningReuser is not available because 'geatpy' is not installed! Please install it manually (only support python_version<3.11)." ) model_num = v_predict.shape[1] @@ -150,7 +150,7 @@ class EnsemblePruningReuser(BaseReuser): import geatpy as ea except ModuleNotFoundError: raise ModuleNotFoundError( - f"EnsemblePruningReuser is not available because 'geatpy' is not installed! Please install it manually (only support python_version<3.11)." + "EnsemblePruningReuser is not available because 'geatpy' is not installed! Please install it manually (only support python_version<3.11)." ) if torch.is_tensor(v_true): @@ -274,7 +274,7 @@ class EnsemblePruningReuser(BaseReuser): import geatpy as ea except ModuleNotFoundError: raise ModuleNotFoundError( - f"EnsemblePruningReuser is not available because 'geatpy' is not installed! Please install it manually (only support python_version<3.11)." + "EnsemblePruningReuser is not available because 'geatpy' is not installed! Please install it manually (only support python_version<3.11)." ) model_num = v_predict.shape[1] @@ -377,7 +377,7 @@ class EnsemblePruningReuser(BaseReuser): if isinstance(pred_y, torch.Tensor): pred_y = pred_y.detach().cpu().numpy() if not isinstance(pred_y, np.ndarray): - raise TypeError(f"Model output must be np.ndarray or torch.Tensor") + raise TypeError("Model output must be np.ndarray or torch.Tensor") if len(pred_y.shape) == 1: pred_y = pred_y.reshape(-1, 1) diff --git a/learnware/reuse/feature_augment.py b/learnware/reuse/feature_augment.py index 820d681..d162c83 100644 --- a/learnware/reuse/feature_augment.py +++ b/learnware/reuse/feature_augment.py @@ -103,7 +103,7 @@ class FeatureAugmentReuser(BaseReuser): if isinstance(y_pred, torch.Tensor): y_pred = y_pred.detach().cpu().numpy() if not isinstance(y_pred, np.ndarray): - raise TypeError(f"Model output must be np.ndarray or torch.Tensor") + raise TypeError("Model output must be np.ndarray or torch.Tensor") if len(y_pred.shape) == 1: y_pred = y_pred.reshape(-1, 1) y_preds.append(y_pred) diff --git a/learnware/reuse/job_selector.py b/learnware/reuse/job_selector.py index 49689ed..c23f4d8 100644 --- a/learnware/reuse/job_selector.py +++ b/learnware/reuse/job_selector.py @@ -69,7 +69,7 @@ class JobSelectorReuser(BaseReuser): # pred_y = pred_y.numpy() if not isinstance(pred_y, np.ndarray): - raise TypeError(f"Model output must be np.ndarray or torch.Tensor") + raise TypeError("Model output must be np.ndarray or torch.Tensor") pred_y_list.append(pred_y) data_idxs_list.append(data_idx_list) @@ -229,7 +229,7 @@ class JobSelectorReuser(BaseReuser): from lightgbm import LGBMClassifier, early_stopping except ModuleNotFoundError: raise ModuleNotFoundError( - f"JobSelectorReuser is not available because 'lightgbm' is not installed! Please install it manually." + "JobSelectorReuser is not available because 'lightgbm' is not installed! Please install it manually." ) score_best = -1 diff --git a/learnware/specification/regular/image/__init__.py b/learnware/specification/regular/image/__init__.py index be9e5f7..9d4374f 100644 --- a/learnware/specification/regular/image/__init__.py +++ b/learnware/specification/regular/image/__init__.py @@ -5,6 +5,6 @@ logger = get_module_logger("regular_image_spec") if not is_torch_available(verbose=False): RKMEImageSpecification = None - logger.error(f"RKMEImageSpecification is not available because 'torch' is not installed!") + logger.error("RKMEImageSpecification is not available because 'torch' is not installed!") else: from .rkme import RKMEImageSpecification diff --git a/learnware/specification/regular/image/rkme.py b/learnware/specification/regular/image/rkme.py index b517876..24a0ae7 100644 --- a/learnware/specification/regular/image/rkme.py +++ b/learnware/specification/regular/image/rkme.py @@ -135,7 +135,7 @@ class RKMEImageSpecification(RegularStatSpecification): from torchvision.transforms import Resize except ModuleNotFoundError: raise ModuleNotFoundError( - f"RKMEImageSpecification is not available because 'torchvision' is not installed! Please install it manually." + "RKMEImageSpecification is not available because 'torchvision' is not installed! Please install it manually." ) if X.shape[2] != RKMEImageSpecification.IMAGE_WIDTH or X.shape[3] != RKMEImageSpecification.IMAGE_WIDTH: @@ -167,7 +167,7 @@ class RKMEImageSpecification(RegularStatSpecification): import torch_optimizer except ModuleNotFoundError: raise ModuleNotFoundError( - f"RKMEImageSpecification is not available because 'torch-optimizer' is not installed! Please install it manually." + "RKMEImageSpecification is not available because 'torch-optimizer' is not installed! Please install it manually." ) # Cross-platform by default, unless the spec is specified to be generated specifically for local experiments. diff --git a/learnware/specification/regular/table/__init__.py b/learnware/specification/regular/table/__init__.py index 7f2b04c..47b4aaa 100644 --- a/learnware/specification/regular/table/__init__.py +++ b/learnware/specification/regular/table/__init__.py @@ -8,7 +8,7 @@ if not is_torch_available(verbose=False): RKMEStatSpecification = None rkme_solve_qp = None logger.error( - f"RKMETableSpecification, RKMEStatSpecification and rkme_solve_qp are not available because 'torch' is not installed!" + "RKMETableSpecification, RKMEStatSpecification and rkme_solve_qp are not available because 'torch' is not installed!" ) else: from .rkme import RKMEStatSpecification, RKMETableSpecification, rkme_solve_qp diff --git a/learnware/specification/regular/table/rkme.py b/learnware/specification/regular/table/rkme.py index a7482ab..febe756 100644 --- a/learnware/specification/regular/table/rkme.py +++ b/learnware/specification/regular/table/rkme.py @@ -148,7 +148,7 @@ class RKMETableSpecification(RegularStatSpecification): from fast_pytorch_kmeans import KMeans except ModuleNotFoundError: raise ModuleNotFoundError( - f"RKMETableSpecification is not available because 'fast_pytorch_kmeans' is not installed! Please install it manually." + "RKMETableSpecification is not available because 'fast_pytorch_kmeans' is not installed! Please install it manually." ) kmeans = KMeans(n_clusters=K, mode="euclidean", max_iter=100, verbose=0) diff --git a/learnware/specification/regular/text/__init__.py b/learnware/specification/regular/text/__init__.py index 264a548..e92360e 100644 --- a/learnware/specification/regular/text/__init__.py +++ b/learnware/specification/regular/text/__init__.py @@ -5,6 +5,6 @@ logger = get_module_logger("regular_text_spec") if not is_torch_available(verbose=False): RKMETextSpecification = None - logger.error(f"RKMETextSpecification is not available because 'torch' is not installed!") + logger.error("RKMETextSpecification is not available because 'torch' is not installed!") else: from .rkme import RKMETextSpecification diff --git a/learnware/specification/regular/text/rkme.py b/learnware/specification/regular/text/rkme.py index 1714a32..a374aea 100644 --- a/learnware/specification/regular/text/rkme.py +++ b/learnware/specification/regular/text/rkme.py @@ -92,7 +92,7 @@ class RKMETextSpecification(RKMETableSpecification): from sentence_transformers import SentenceTransformer except ModuleNotFoundError: raise ModuleNotFoundError( - f"RKMETextSpecification is not available because 'sentence_transformers' is not installed! Please install it manually." + "RKMETextSpecification is not available because 'sentence_transformers' is not installed! Please install it manually." ) if os.path.exists(zip_path): diff --git a/learnware/tests/templates/__init__.py b/learnware/tests/templates/__init__.py index d2f016f..af86682 100644 --- a/learnware/tests/templates/__init__.py +++ b/learnware/tests/templates/__init__.py @@ -49,7 +49,7 @@ class LearnwareTemplate: if isinstance(requirement, str): line_str = requirement.strip() + "\n" elif isinstance(requirement, tuple): - assert requirement[1] in operators, f"The operator of requirements is not supported." + assert requirement[1] in operators, "The operator of requirements is not supported." line_str = requirement[0].strip() + requirement[1].strip() + requirement[2].strip() + "\n" else: raise TypeError(f"requirement must be type str/tuple, rather than {type(requirement)}") From 4844ece3d551e8b13b881e2aae832b7c63f4edcc Mon Sep 17 00:00:00 2001 From: Gene Date: Thu, 11 Jan 2024 21:41:33 +0800 Subject: [PATCH 49/56] [MNT] solve W291,C408 error of flake8 in package --- learnware/specification/regular/image/cnn_gp.py | 2 +- learnware/specification/regular/text/rkme.py | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/learnware/specification/regular/image/cnn_gp.py b/learnware/specification/regular/image/cnn_gp.py index 84f2b13..85d8cfd 100644 --- a/learnware/specification/regular/image/cnn_gp.py +++ b/learnware/specification/regular/image/cnn_gp.py @@ -9,7 +9,7 @@ __all__ = ("NNGPKernel", "Conv2d", "ReLU", "Sequential", "ConvKP", "NonlinKP") """ With this package, we are able to accurately and efficiently compute the kernel matrix corresponding to the NNGP during the search phase. -Github Repository: https://github.com/cambridge-mlg/cnn-gp +Github Repository: https://github.com/cambridge-mlg/cnn-gp References: [1] A. Garriga-Alonso, L. Aitchison, and C. E. Rasmussen. Deep Convolutional Networks as shallow Gaussian Processes. In: International Conference on Learning Representations (ICLR'19), 2019. """ diff --git a/learnware/specification/regular/text/rkme.py b/learnware/specification/regular/text/rkme.py index a374aea..5917768 100644 --- a/learnware/specification/regular/text/rkme.py +++ b/learnware/specification/regular/text/rkme.py @@ -63,9 +63,8 @@ class RKMETextSpecification(RKMETableSpecification): def get_language_ids(X): try: text = " ".join(X) - lang = langdetect.detect(text) langs = langdetect.detect_langs(text) - return [l.lang for l in langs] + return [item.lang for item in langs] except Exception as e: logger.warning("Language detection failed.") return [] From aeb24a7d116c72d3717d31c28fccaf80a0ec9aa6 Mon Sep 17 00:00:00 2001 From: Gene Date: Thu, 11 Jan 2024 21:43:28 +0800 Subject: [PATCH 50/56] [MNT] solve F541 error of flake8 in package --- tests/test_learnware_client/test_upload.py | 2 +- tests/test_workflow/test_hetero_workflow.py | 22 ++++++++++----------- tests/test_workflow/test_workflow.py | 8 ++++---- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/tests/test_learnware_client/test_upload.py b/tests/test_learnware_client/test_upload.py index 18e4055..4a8c17a 100644 --- a/tests/test_learnware_client/test_upload.py +++ b/tests/test_learnware_client/test_upload.py @@ -60,7 +60,7 @@ class TestUpload(unittest.TestCase): download_learnware_id = "00000084" with tempfile.TemporaryDirectory(prefix="learnware_") as tempdir: - zip_path = os.path.join(tempdir, f"test.zip") + zip_path = os.path.join(tempdir, "test.zip") self.client.download_learnware(download_learnware_id, zip_path) learnware_id = self.client.upload_learnware( learnware_zip_path=zip_path, semantic_specification=semantic_spec diff --git a/tests/test_workflow/test_hetero_workflow.py b/tests/test_workflow/test_hetero_workflow.py index 245fc4c..efcc14c 100644 --- a/tests/test_workflow/test_hetero_workflow.py +++ b/tests/test_workflow/test_hetero_workflow.py @@ -81,7 +81,7 @@ class TestHeteroWorkflow(unittest.TestCase): self.learnware_num = learnware_num print("Total Item:", len(hetero_market)) - assert len(hetero_market) == 0, f"The market should be empty!" + assert len(hetero_market) == 0, "The market should be empty!" for idx, zip_path in enumerate(self.zip_path_list): semantic_spec = generate_semantic_spec( @@ -109,7 +109,7 @@ class TestHeteroWorkflow(unittest.TestCase): curr_inds = hetero_market.get_learnware_ids() print("Available ids After Deleting Learnwares:", curr_inds) - assert len(curr_inds) == 0, f"The market should be empty!" + assert len(curr_inds) == 0, "The market should be empty!" return hetero_market @@ -140,20 +140,20 @@ class TestHeteroWorkflow(unittest.TestCase): search_result = hetero_market.search_learnware(user_info) single_result = search_result.get_single_results() - print(f"Search result1:") - assert len(single_result) == 1, f"Exact semantic search failed!" + print("Search result1:") + assert len(single_result) == 1, "Exact semantic search failed!" for search_item in single_result: semantic_spec1 = search_item.learnware.get_specification().get_semantic_spec() print("Choose learnware:", search_item.learnware.id) - assert semantic_spec1["Name"]["Values"] == semantic_spec["Name"]["Values"], f"Exact semantic search failed!" + assert semantic_spec1["Name"]["Values"] == semantic_spec["Name"]["Values"], "Exact semantic search failed!" semantic_spec["Name"]["Values"] = "laernwaer" user_info = BaseUserInfo(semantic_spec=semantic_spec) search_result = hetero_market.search_learnware(user_info) single_result = search_result.get_single_results() - print(f"Search result2:") - assert len(single_result) == self.learnware_num, f"Fuzzy semantic search failed!" + print("Search result2:") + assert len(single_result) == self.learnware_num, "Fuzzy semantic search failed!" for search_item in single_result: print("Choose learnware:", search_item.learnware.id) @@ -208,7 +208,7 @@ class TestHeteroWorkflow(unittest.TestCase): search_result = hetero_market.search_learnware(user_info) single_result = search_result.get_single_results() - assert len(single_result) == 0, f"Statistical search failed!" + assert len(single_result) == 0, "Statistical search failed!" # delete key "Task" in semantic_spec, use homo search and print WARNING INFO with "User doesn't provide correct task type" print(">> delele key 'Task' test:") @@ -217,7 +217,7 @@ class TestHeteroWorkflow(unittest.TestCase): search_result = hetero_market.search_learnware(user_info) single_result = search_result.get_single_results() - assert len(single_result) == 0, f"Statistical search failed!" + assert len(single_result) == 0, "Statistical search failed!" # modify semantic info with mismatch dim, use homo search and print "User data feature dimensions mismatch with semantic specification." print(">> mismatch dim test") @@ -235,7 +235,7 @@ class TestHeteroWorkflow(unittest.TestCase): search_result = hetero_market.search_learnware(user_info) single_result = search_result.get_single_results() - assert len(single_result) == 0, f"Statistical search failed!" + assert len(single_result) == 0, "Statistical search failed!" def test_homo_stat_search(self, learnware_num=5): hetero_market = self.test_train_market_model(learnware_num, delete=False) @@ -254,7 +254,7 @@ class TestHeteroWorkflow(unittest.TestCase): single_result = search_result.get_single_results() multiple_result = search_result.get_multiple_results() - assert len(single_result) >= 1, f"Statistical search failed!" + assert len(single_result) >= 1, "Statistical search failed!" print(f"search result of user{idx}:") for single_item in single_result: print(f"score: {single_item.score}, learnware_id: {single_item.learnware.id}") diff --git a/tests/test_workflow/test_workflow.py b/tests/test_workflow/test_workflow.py index bbd6038..0139b16 100644 --- a/tests/test_workflow/test_workflow.py +++ b/tests/test_workflow/test_workflow.py @@ -74,7 +74,7 @@ class TestWorkflow(unittest.TestCase): self.learnware_num = learnware_num print("Total Item:", len(easy_market)) - assert len(easy_market) == 0, f"The market should be empty!" + assert len(easy_market) == 0, "The market should be empty!" for idx, zip_path in enumerate(self.zip_path_list): semantic_spec = generate_semantic_spec( @@ -109,7 +109,7 @@ class TestWorkflow(unittest.TestCase): curr_inds = easy_market.get_learnware_ids() print("Available ids After Deleting Learnwares:", curr_inds) - assert len(curr_inds) == 0, f"The market should be empty!" + assert len(curr_inds) == 0, "The market should be empty!" return easy_market @@ -132,7 +132,7 @@ class TestWorkflow(unittest.TestCase): search_result = easy_market.search_learnware(user_info) single_result = search_result.get_single_results() - print(f"Search result:") + print("Search result:") for search_item in single_result: print("Choose learnware:", search_item.learnware.id) @@ -154,7 +154,7 @@ class TestWorkflow(unittest.TestCase): single_result = search_results.get_single_results() multiple_result = search_results.get_multiple_results() - assert len(single_result) >= 1, f"Statistical search failed!" + assert len(single_result) >= 1, "Statistical search failed!" print(f"search result of user{idx}:") for search_item in single_result: print(f"score: {search_item.score}, learnware_id: {search_item.learnware.id}") From 173919e731e980d3ad0de2dd25947ffeb4ab609e Mon Sep 17 00:00:00 2001 From: Gene Date: Thu, 11 Jan 2024 21:47:38 +0800 Subject: [PATCH 51/56] [MNT] solve E402 error of flake8 in tests --- tests/test_function/test_search.py | 8 +++----- tests/test_workflow/test_hetero_workflow.py | 5 +---- tests/test_workflow/test_workflow.py | 4 +--- 3 files changed, 5 insertions(+), 12 deletions(-) diff --git a/tests/test_function/test_search.py b/tests/test_function/test_search.py index c006b0d..995e3bc 100644 --- a/tests/test_function/test_search.py +++ b/tests/test_function/test_search.py @@ -4,13 +4,11 @@ import tempfile import logging import learnware - -learnware.init(logging_level=logging.WARNING) - from learnware.learnware import Learnware from learnware.client import LearnwareClient -from learnware.market import instantiate_learnware_market, BaseUserInfo, EasySemanticChecker -from learnware.config import C +from learnware.market import instantiate_learnware_market, BaseUserInfo + +learnware.init(logging_level=logging.WARNING) class TestSearch(unittest.TestCase): diff --git a/tests/test_workflow/test_hetero_workflow.py b/tests/test_workflow/test_hetero_workflow.py index efcc14c..117233f 100644 --- a/tests/test_workflow/test_hetero_workflow.py +++ b/tests/test_workflow/test_hetero_workflow.py @@ -11,9 +11,6 @@ from shutil import copyfile, rmtree from sklearn.metrics import mean_squared_error import learnware - -learnware.init(logging_level=logging.WARNING) - from learnware.market import instantiate_learnware_market, BaseUserInfo from learnware.specification import RKMETableSpecification, generate_rkme_table_spec, generate_semantic_spec from learnware.reuse import HeteroMapAlignLearnware, AveragingReuser, EnsemblePruningReuser @@ -21,7 +18,7 @@ from learnware.tests.templates import LearnwareTemplate, PickleModelTemplate, St from hetero_config import input_shape_list, input_description_list, output_description_list, user_description_list - +learnware.init(logging_level=logging.WARNING) curr_root = os.path.dirname(os.path.abspath(__file__)) diff --git a/tests/test_workflow/test_workflow.py b/tests/test_workflow/test_workflow.py index 0139b16..31656fe 100644 --- a/tests/test_workflow/test_workflow.py +++ b/tests/test_workflow/test_workflow.py @@ -10,14 +10,12 @@ from sklearn.datasets import load_digits from sklearn.model_selection import train_test_split import learnware - -learnware.init(logging_level=logging.WARNING) - from learnware.market import instantiate_learnware_market, BaseUserInfo from learnware.specification import RKMETableSpecification, generate_rkme_table_spec, generate_semantic_spec from learnware.reuse import JobSelectorReuser, AveragingReuser, EnsemblePruningReuser, FeatureAugmentReuser from learnware.tests.templates import LearnwareTemplate, PickleModelTemplate, StatSpecTemplate +learnware.init(logging_level=logging.WARNING) curr_root = os.path.dirname(os.path.abspath(__file__)) From e0ef775c27112ba9c3ecf0343f09b02d54a27b09 Mon Sep 17 00:00:00 2001 From: Gene Date: Thu, 11 Jan 2024 21:50:06 +0800 Subject: [PATCH 52/56] [MNT] solve E401 error of flake8 in tests --- tests/test_learnware_client/test_all_learnware.py | 2 -- tests/test_learnware_client/test_check_learnware.py | 2 -- tests/test_specification/test_hetero_spec.py | 3 --- tests/test_specification/test_table_rkme.py | 2 +- tests/test_workflow/test_hetero_workflow.py | 1 - 5 files changed, 1 insertion(+), 9 deletions(-) diff --git a/tests/test_learnware_client/test_all_learnware.py b/tests/test_learnware_client/test_all_learnware.py index c3a6673..9760322 100644 --- a/tests/test_learnware_client/test_all_learnware.py +++ b/tests/test_learnware_client/test_all_learnware.py @@ -1,9 +1,7 @@ import os import json -import zipfile import unittest import tempfile -import argparse from learnware.client import LearnwareClient from learnware.specification import generate_semantic_spec diff --git a/tests/test_learnware_client/test_check_learnware.py b/tests/test_learnware_client/test_check_learnware.py index 6450d2a..b831830 100644 --- a/tests/test_learnware_client/test_check_learnware.py +++ b/tests/test_learnware_client/test_check_learnware.py @@ -1,6 +1,4 @@ import os -import json -import zipfile import unittest import tempfile diff --git a/tests/test_specification/test_hetero_spec.py b/tests/test_specification/test_hetero_spec.py index b0f7e87..b0600d7 100644 --- a/tests/test_specification/test_hetero_spec.py +++ b/tests/test_specification/test_hetero_spec.py @@ -1,8 +1,5 @@ import os import json -import string -import random -import torch import unittest import tempfile import numpy as np diff --git a/tests/test_specification/test_table_rkme.py b/tests/test_specification/test_table_rkme.py index 2be9113..e57e8d0 100644 --- a/tests/test_specification/test_table_rkme.py +++ b/tests/test_specification/test_table_rkme.py @@ -4,7 +4,7 @@ import unittest import tempfile import numpy as np -from learnware.specification import RKMETableSpecification, RKMEImageSpecification, RKMETextSpecification +from learnware.specification import RKMETableSpecification from learnware.specification import generate_stat_spec diff --git a/tests/test_workflow/test_hetero_workflow.py b/tests/test_workflow/test_hetero_workflow.py index 117233f..c31c797 100644 --- a/tests/test_workflow/test_hetero_workflow.py +++ b/tests/test_workflow/test_hetero_workflow.py @@ -7,7 +7,6 @@ import tempfile import zipfile from sklearn.linear_model import Ridge from sklearn.datasets import make_regression -from shutil import copyfile, rmtree from sklearn.metrics import mean_squared_error import learnware From 08ba9320d36b370844102ecebbc5e853dfb448b1 Mon Sep 17 00:00:00 2001 From: Gene Date: Thu, 11 Jan 2024 21:52:59 +0800 Subject: [PATCH 53/56] [MNT] solve E722,F402 error of flake8 in tests --- tests/test_learnware_client/test_all_learnware.py | 2 +- tests/test_workflow/test_hetero_workflow.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/test_learnware_client/test_all_learnware.py b/tests/test_learnware_client/test_all_learnware.py index 9760322..dff378e 100644 --- a/tests/test_learnware_client/test_all_learnware.py +++ b/tests/test_learnware_client/test_all_learnware.py @@ -56,7 +56,7 @@ class TestAllLearnware(unittest.TestCase): semantic_spec = self.client.get_semantic_specification(idx) LearnwareClient.check_learnware(zip_path, semantic_spec) print(f"check learnware {idx} succeed") - except: + except Exception: failed_ids.append(idx) print(f"check learnware {idx} failed!!!") diff --git a/tests/test_workflow/test_hetero_workflow.py b/tests/test_workflow/test_hetero_workflow.py index c31c797..fb44380 100644 --- a/tests/test_workflow/test_hetero_workflow.py +++ b/tests/test_workflow/test_hetero_workflow.py @@ -295,8 +295,8 @@ class TestHeteroWorkflow(unittest.TestCase): # multi model reuse hetero_learnware_list = [] - for learnware in multiple_result[0].learnwares: - hetero_learnware = HeteroMapAlignLearnware(learnware, mode="regression") + for org_learnware in multiple_result[0].learnwares: + hetero_learnware = HeteroMapAlignLearnware(org_learnware, mode="regression") hetero_learnware.align(user_spec, X[:100], y[:100]) hetero_learnware_list.append(hetero_learnware) From c5f9a42e7ac086dfbdf7097714f01448e92cb372 Mon Sep 17 00:00:00 2001 From: Gene Date: Thu, 11 Jan 2024 21:55:04 +0800 Subject: [PATCH 54/56] [MNT] remove pfs and m5 workflow --- examples/dataset_m5_workflow/example.yaml | 8 - examples/dataset_m5_workflow/example_init.py | 21 - examples/dataset_m5_workflow/m5/README.md | 3 - examples/dataset_m5_workflow/m5/__init__.py | 65 --- examples/dataset_m5_workflow/m5/config.py | 139 ------ .../dataset_m5_workflow/m5/generate_data.py | 338 ------------- examples/dataset_m5_workflow/m5/train.py | 452 ------------------ examples/dataset_m5_workflow/m5/utils.py | 177 ------- examples/dataset_m5_workflow/main.py | 211 -------- examples/dataset_m5_workflow/upload.py | 87 ---- examples/dataset_pfs_workflow/example.yaml | 8 - examples/dataset_pfs_workflow/example_init.py | 20 - examples/dataset_pfs_workflow/main.py | 208 -------- examples/dataset_pfs_workflow/pfs/README.md | 48 -- examples/dataset_pfs_workflow/pfs/__init__.py | 77 --- examples/dataset_pfs_workflow/pfs/config.py | 272 ----------- examples/dataset_pfs_workflow/pfs/paths.py | 21 - .../pfs/pfs_cross_transfer.py | 382 --------------- .../dataset_pfs_workflow/pfs/split_data.py | 384 --------------- examples/dataset_pfs_workflow/upload.py | 90 ---- 20 files changed, 3011 deletions(-) delete mode 100644 examples/dataset_m5_workflow/example.yaml delete mode 100644 examples/dataset_m5_workflow/example_init.py delete mode 100644 examples/dataset_m5_workflow/m5/README.md delete mode 100644 examples/dataset_m5_workflow/m5/__init__.py delete mode 100644 examples/dataset_m5_workflow/m5/config.py delete mode 100644 examples/dataset_m5_workflow/m5/generate_data.py delete mode 100644 examples/dataset_m5_workflow/m5/train.py delete mode 100644 examples/dataset_m5_workflow/m5/utils.py delete mode 100644 examples/dataset_m5_workflow/main.py delete mode 100644 examples/dataset_m5_workflow/upload.py delete mode 100644 examples/dataset_pfs_workflow/example.yaml delete mode 100644 examples/dataset_pfs_workflow/example_init.py delete mode 100644 examples/dataset_pfs_workflow/main.py delete mode 100644 examples/dataset_pfs_workflow/pfs/README.md delete mode 100644 examples/dataset_pfs_workflow/pfs/__init__.py delete mode 100644 examples/dataset_pfs_workflow/pfs/config.py delete mode 100644 examples/dataset_pfs_workflow/pfs/paths.py delete mode 100644 examples/dataset_pfs_workflow/pfs/pfs_cross_transfer.py delete mode 100644 examples/dataset_pfs_workflow/pfs/split_data.py delete mode 100644 examples/dataset_pfs_workflow/upload.py diff --git a/examples/dataset_m5_workflow/example.yaml b/examples/dataset_m5_workflow/example.yaml deleted file mode 100644 index cd539c8..0000000 --- a/examples/dataset_m5_workflow/example.yaml +++ /dev/null @@ -1,8 +0,0 @@ -model: - class_name: Model - kwargs: {} -stat_specifications: - - module_path: learnware.specification - class_name: RKMETableSpecification - file_name: rkme.json - kwargs: {} \ No newline at end of file diff --git a/examples/dataset_m5_workflow/example_init.py b/examples/dataset_m5_workflow/example_init.py deleted file mode 100644 index eade812..0000000 --- a/examples/dataset_m5_workflow/example_init.py +++ /dev/null @@ -1,21 +0,0 @@ -import os -import joblib -import numpy as np -import lightgbm as lgb -from learnware.model import BaseModel - - -class Model(BaseModel): - def __init__(self): - super(Model, self).__init__(input_shape=(82,), output_shape=(1,)) - dir_path = os.path.dirname(os.path.abspath(__file__)) - self.model = lgb.Booster(model_file=os.path.join(dir_path, "model.out")) - - def fit(self, X: np.ndarray, y: np.ndarray): - pass - - def predict(self, X: np.ndarray) -> np.ndarray: - return self.model.predict(X) - - def finetune(self, X: np.ndarray, y: np.ndarray): - pass diff --git a/examples/dataset_m5_workflow/m5/README.md b/examples/dataset_m5_workflow/m5/README.md deleted file mode 100644 index 12485ba..0000000 --- a/examples/dataset_m5_workflow/m5/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# M5 Dataset - -Walmart store, involves the unit sales of various products sold in the USA, organized in the form of grouped time series. More specifically, the dataset involves the unit sales of 3049 products, classified in 3 product categories (Hobbies, Foods, and Household). \ No newline at end of file diff --git a/examples/dataset_m5_workflow/m5/__init__.py b/examples/dataset_m5_workflow/m5/__init__.py deleted file mode 100644 index 0e19bfe..0000000 --- a/examples/dataset_m5_workflow/m5/__init__.py +++ /dev/null @@ -1,65 +0,0 @@ -from cgi import test -import os -import joblib -import lightgbm as lgb - - -from .config import store_list, model_dir -from .utils import acquire_data, get_weights, model_predict, score, measure_aux_algo -from .generate_data import regenerate_data -from .train import retrain_models, grid_training_sample, train_adaptation_grid - - -class DataLoader: - def __init__(self): - self.algo = "ridge" - - def set_algo(self, algo): - self.algo = algo - - def get_algo_list(self): - return ["lgb", "ridge"] - - def get_idx_list(self): - return list(range(len(store_list))) - - def get_idx_data(self, idx): - store = store_list[idx] - # fill_flag = self.algo == "ridge" - fill_flag = True - return acquire_data(store, fill_flag) - - def get_weights(self): - return get_weights(self.algo) - - def get_model_path(self, idx): - return os.path.join(model_dir, "{}_{}.out".format(self.algo, store_list[idx])) - - def predict(self, idx, test_x): - store = store_list[idx] - - if os.path.exists(os.path.join(model_dir, f"{self.algo}_{store}.out")): - return model_predict(self.algo, idx, test_x) - else: - self.retrain_models() - return model_predict(self.algo, idx, test_x) - - def score(self, real_y, pred_y, sample_weight=None, multioutput="raw_values"): - return score(real_y, pred_y, sample_weight, multioutput) - - def regenerate_data(self): - regenerate_data() - - def retrain_models(self): - retrain_models(self.algo) - - def grid_training_sample(self, user_list=list(range(10))): - grid_training_sample(self.algo, user_list) - - def train_adaptation_grid( - self, max_sample, test_sample, user_list=list(range(10)), adaptation_model=[], residual=False - ): - train_adaptation_grid(self.algo, max_sample, test_sample, user_list, adaptation_model, residual) - - def measure_aux_algo(self, idx, test_sample, model): - return measure_aux_algo(idx, test_sample, model) diff --git a/examples/dataset_m5_workflow/m5/config.py b/examples/dataset_m5_workflow/m5/config.py deleted file mode 100644 index 0587d8a..0000000 --- a/examples/dataset_m5_workflow/m5/config.py +++ /dev/null @@ -1,139 +0,0 @@ -import os - - -ROOT_PATH = os.path.abspath(os.path.join(__file__, "..", "data")) -raw_data_dir = os.path.join(ROOT_PATH, "raw") -processed_data_dir = os.path.join(ROOT_PATH, "processed") -model_dir = os.path.join(ROOT_PATH, "models") -grid_dir = os.path.join(ROOT_PATH, "grid_sample") - - -TARGET = "sales" -START_TRAIN = 1 -END_TRAIN = 1941 - 28 - - -category_list = ["item_id", "dept_id", "cat_id", "event_name_1", "event_name_2", "event_type_1", "event_type_2"] -features_columns = [ - "item_id", - "dept_id", - "cat_id", - "release", - "sell_price", - "price_max", - "price_min", - "price_std", - "price_mean", - "price_norm", - "price_nunique", - "item_nunique", - "price_momentum", - "price_momentum_m", - "price_momentum_y", - "event_name_1", - "event_type_1", - "event_name_2", - "event_type_2", - "snap", - "tm_d", - "tm_w", - "tm_m", - "tm_y", - "tm_wm", - "tm_dw", - "tm_w_end", - "sales_lag_28", - "sales_lag_29", - "sales_lag_30", - "sales_lag_31", - "sales_lag_32", - "sales_lag_33", - "sales_lag_34", - "sales_lag_35", - "sales_lag_36", - "sales_lag_37", - "sales_lag_38", - "sales_lag_39", - "sales_lag_40", - "sales_lag_41", - "sales_lag_42", - "rolling_mean_7", - "rolling_std_7", - "rolling_mean_14", - "rolling_std_14", - "rolling_mean_30", - "rolling_std_30", - "rolling_mean_60", - "rolling_std_60", - "rolling_mean_180", - "rolling_std_180", - "rolling_mean_tmp_1_7", - "rolling_mean_tmp_1_14", - "rolling_mean_tmp_1_30", - "rolling_mean_tmp_1_60", - "rolling_mean_tmp_7_7", - "rolling_mean_tmp_7_14", - "rolling_mean_tmp_7_30", - "rolling_mean_tmp_7_60", - "rolling_mean_tmp_14_7", - "rolling_mean_tmp_14_14", - "rolling_mean_tmp_14_30", - "rolling_mean_tmp_14_60", - # "enc_state_id_mean", - # "enc_state_id_std", - # "enc_store_id_mean", - # "enc_store_id_std", - "enc_cat_id_mean", - "enc_cat_id_std", - "enc_dept_id_mean", - "enc_dept_id_std", - "enc_state_id_cat_id_mean", - "enc_state_id_cat_id_std", - "enc_state_id_dept_id_mean", - "enc_state_id_dept_id_std", - "enc_store_id_cat_id_mean", - "enc_store_id_cat_id_std", - "enc_store_id_dept_id_mean", - "enc_store_id_dept_id_std", - "enc_item_id_mean", - "enc_item_id_std", - "enc_item_id_state_id_mean", - "enc_item_id_state_id_std", - "enc_item_id_store_id_mean", - "enc_item_id_store_id_std", -] -label_column = ["sales"] - - -lgb_params_list = [ - [0.015, 224, 66], - [0.01, 224, 50], - [0.01, 300, 80], - [0.015, 128, 50], - [0.015, 300, 50], - [0.01, 300, 66], - [0.015, 300, 80], - [0.15, 224, 80], - [0.005, 300, 50], - [0.015, 224, 50], -] - - -store_list = ["CA_1", "CA_2", "CA_3", "CA_4", "TX_1", "TX_2", "TX_3", "WI_1", "WI_2", "WI_3"] -dataset_info = { - "name": "M5", - "range of date": "2011.01.29-2016.06.19", - "description": "Walmart store, involves the unit sales of various products sold in the USA, organized in the form of grouped time series. More specifically, the dataset involves the unit sales of 3049 products, classified in 3 product categories (Hobbies, Foods, and Household).", - "location": [ - "California, United States", - "California, United States", - "California, United States", - "California, United States", - "Texas, United States", - "Texas, United States", - "Texas, United States", - "Wisconsin, United States", - "Wisconsin, United States", - "Wisconsin, United States", - ], -} diff --git a/examples/dataset_m5_workflow/m5/generate_data.py b/examples/dataset_m5_workflow/m5/generate_data.py deleted file mode 100644 index 099f842..0000000 --- a/examples/dataset_m5_workflow/m5/generate_data.py +++ /dev/null @@ -1,338 +0,0 @@ -import numpy as np -import pandas as pd -from math import ceil -from tqdm import tqdm -from copy import deepcopy as dco -import os, sys, gc, time, warnings, pickle, psutil, random -from sklearn.preprocessing import LabelEncoder -from sklearn.preprocessing import MinMaxScaler - - -from .utils import * -from .config import raw_data_dir, processed_data_dir, TARGET - -warnings.filterwarnings("ignore") - - -# ==================== preprocessing ==================== -def melt_raw_data(train_df): - if os.path.exists(os.path.join(processed_data_dir, "melt_raw_data.pkl")): - return pd.read_pickle(os.path.join(processed_data_dir, "melt_raw_data.pkl")) - - index_columns = ["id", "item_id", "dept_id", "cat_id", "store_id", "state_id"] - grid_df = pd.melt(train_df, id_vars=index_columns, var_name="d", value_name=TARGET) - - for col in index_columns: - grid_df[col] = grid_df[col].astype("category") - - grid_df.to_pickle(os.path.join(processed_data_dir, "melt_raw_data.pkl")) - return grid_df - - -def add_release_week(grid_df, prices_df, calendar_df): - if os.path.exists(os.path.join(processed_data_dir, "add_release_week.pkl")): - return pd.read_pickle(os.path.join(processed_data_dir, "add_release_week.pkl")) - - release_df = prices_df.groupby(["store_id", "item_id"])["wm_yr_wk"].agg(["min"]).reset_index() - release_df.columns = ["store_id", "item_id", "release"] - grid_df = merge_by_concat(grid_df, release_df, ["store_id", "item_id"]) - grid_df = merge_by_concat(grid_df, calendar_df[["wm_yr_wk", "d"]], ["d"]) - - # cutoff meaningless rows - grid_df = grid_df[grid_df["wm_yr_wk"] >= grid_df["release"]] - grid_df = grid_df.reset_index(drop=True) - - # scale the release - grid_df["release"] = grid_df["release"] - grid_df["release"].min() - grid_df["release"] = grid_df["release"].astype(np.int16) - - grid_df.to_pickle(os.path.join(processed_data_dir, "add_release_week.pkl")) - return grid_df - - -def add_prices(grid_df, prices_df, calendar_df): - if os.path.exists(os.path.join(processed_data_dir, "add_prices.pkl")): - return pd.read_pickle(os.path.join(processed_data_dir, "add_prices.pkl")) - - prices_df["price_max"] = prices_df.groupby(["store_id", "item_id"])["sell_price"].transform("max") - prices_df["price_min"] = prices_df.groupby(["store_id", "item_id"])["sell_price"].transform("min") - prices_df["price_std"] = prices_df.groupby(["store_id", "item_id"])["sell_price"].transform("std") - prices_df["price_mean"] = prices_df.groupby(["store_id", "item_id"])["sell_price"].transform("mean") - prices_df["price_norm"] = prices_df["sell_price"] / prices_df["price_max"] - - prices_df["price_nunique"] = prices_df.groupby(["store_id", "item_id"])["sell_price"].transform("nunique") - prices_df["item_nunique"] = prices_df.groupby(["store_id", "sell_price"])["item_id"].transform("nunique") - - calendar_prices = calendar_df[["wm_yr_wk", "month", "year"]] - calendar_prices = calendar_prices.drop_duplicates(subset=["wm_yr_wk"]) - prices_df = prices_df.merge(calendar_prices[["wm_yr_wk", "month", "year"]], on=["wm_yr_wk"], how="left") - - prices_df["price_momentum"] = prices_df["sell_price"] / prices_df.groupby(["store_id", "item_id"])[ - "sell_price" - ].transform(lambda x: x.shift(1)) - prices_df["price_momentum_m"] = prices_df["sell_price"] / prices_df.groupby(["store_id", "item_id", "month"])[ - "sell_price" - ].transform("mean") - prices_df["price_momentum_y"] = prices_df["sell_price"] / prices_df.groupby(["store_id", "item_id", "year"])[ - "sell_price" - ].transform("mean") - - grid_df = reduce_mem_usage(grid_df) - prices_df = reduce_mem_usage(prices_df) - - original_columns = list(grid_df) - grid_df = grid_df.merge(prices_df, on=["store_id", "item_id", "wm_yr_wk"], how="left") - grid_df = reduce_mem_usage(grid_df) - - grid_df.to_pickle(os.path.join(processed_data_dir, "add_prices.pkl")) - return grid_df - - -def add_date(grid_df, calendar_df): - if os.path.exists(os.path.join(processed_data_dir, "add_date.pkl")): - return pd.read_pickle(os.path.join(processed_data_dir, "add_date.pkl")) - - # merge calendar partly - icols = [ - "date", - "d", - "event_name_1", - "event_type_1", - "event_name_2", - "event_type_2", - "snap_CA", - "snap_TX", - "snap_WI", - ] - grid_df = grid_df.merge(calendar_df[icols], on=["d"], how="left") - - # convert to category - icols = [ - "event_name_1", - "event_type_1", - "event_name_2", - "event_type_2", - "snap_CA", - "snap_TX", - "snap_WI", - ] - for col in icols: - grid_df[col] = grid_df[col].astype("category") - - # make some features from date - grid_df["date"] = pd.to_datetime(grid_df["date"]) - grid_df["tm_d"] = grid_df["date"].dt.day.astype(np.int8) - grid_df["tm_w"] = grid_df["date"].dt.week.astype(np.int8) - grid_df["tm_m"] = grid_df["date"].dt.month.astype(np.int8) - grid_df["tm_y"] = grid_df["date"].dt.year - grid_df["tm_y"] = (grid_df["tm_y"] - grid_df["tm_y"].min()).astype(np.int8) - grid_df["tm_wm"] = grid_df["tm_d"].apply(lambda x: ceil(x / 7)).astype(np.int8) - - grid_df["tm_dw"] = grid_df["date"].dt.dayofweek.astype(np.int8) - grid_df["tm_w_end"] = (grid_df["tm_dw"] >= 5).astype(np.int8) - - # clear columns - grid_df["d"] = grid_df["d"].apply(lambda x: x[2:]).astype(np.int16) - grid_df = grid_df.drop("wm_yr_wk", 1) - - grid_df.to_pickle(os.path.join(processed_data_dir, "add_date.pkl")) - return grid_df - - -def add_lags_rollings(grid_df): - if os.path.exists(os.path.join(processed_data_dir, "add_lags_rollings.pkl")): - return pd.read_pickle(os.path.join(processed_data_dir, "add_lags_rollings.pkl")) - - # add lags - SHIFT_DAY = 28 - LAG_DAYS = [col for col in range(SHIFT_DAY, SHIFT_DAY + 15)] - - grid_df = grid_df.assign( - **{ - "{}_lag_{}".format(col, l): grid_df.groupby(["id"])[col].transform(lambda x: x.shift(l)) - for l in LAG_DAYS - for col in [TARGET] - } - ) - - for col in list(grid_df): - if "lag" in col: - grid_df[col] = grid_df[col].astype(np.float16) - - # add rollings - for i in [7, 14, 30, 60, 180]: - grid_df["rolling_mean_" + str(i)] = ( - grid_df.groupby(["id"])[TARGET].transform(lambda x: x.shift(SHIFT_DAY).rolling(i).mean()).astype(np.float16) - ) - grid_df["rolling_std_" + str(i)] = ( - grid_df.groupby(["id"])[TARGET].transform(lambda x: x.shift(SHIFT_DAY).rolling(i).std()).astype(np.float16) - ) - - # sliding window - for d_shift in [1, 7, 14]: - for d_window in [7, 14, 30, 60]: - col_name = "rolling_mean_tmp_" + str(d_shift) + "_" + str(d_window) - grid_df[col_name] = ( - grid_df.groupby(["id"])[TARGET] - .transform(lambda x: x.shift(SHIFT_DAY + d_shift).rolling(d_window).mean()) - .astype(np.float16) - ) - - grid_df.to_pickle(os.path.join(processed_data_dir, "add_lags_rollings.pkl")) - return grid_df - - -def add_mean_enc(grid_df): - if os.path.exists(os.path.join(processed_data_dir, "add_mean_enc.pkl")): - return pd.read_pickle(os.path.join(processed_data_dir, "add_mean_enc.pkl")) - - sales_df = dco(grid_df["sales"]) - grid_df["sales"][grid_df["d"] > (1941 - 28)] = np.nan - - icols = [ - ["state_id"], - ["store_id"], - ["cat_id"], - ["dept_id"], - ["state_id", "cat_id"], - ["state_id", "dept_id"], - ["store_id", "cat_id"], - ["store_id", "dept_id"], - ["item_id"], - ["item_id", "state_id"], - ["item_id", "store_id"], - ] - - for col in icols: - col_name = "_" + "_".join(col) + "_" - grid_df["enc" + col_name + "mean"] = grid_df.groupby(col)["sales"].transform("mean").astype(np.float16) - grid_df["enc" + col_name + "std"] = grid_df.groupby(col)["sales"].transform("std").astype(np.float16) - - grid_df["sales"] = sales_df - - grid_df.to_pickle(os.path.join(processed_data_dir, "add_mean_enc.pkl")) - return grid_df - - -def add_snap(grid_df): - if os.path.exists(os.path.join(processed_data_dir, "all_data_df.pkl")): - return pd.read_pickle(os.path.join(processed_data_dir, "all_data_df.pkl")) - - mask_CA = grid_df["state_id"] == "CA" - mask_WI = grid_df["state_id"] == "WI" - mask_TX = grid_df["state_id"] == "TX" - - grid_df["snap"] = grid_df["snap_CA"] - grid_df.loc[mask_WI, "snap"] = grid_df["snap_WI"] - grid_df.loc[mask_TX, "snap"] = grid_df["snap_TX"] - - grid_df.to_pickle(os.path.join(processed_data_dir, "all_data_df.pkl")) - return grid_df - - -def preprocessing_m5(): - train_df = pd.read_csv(os.path.join(raw_data_dir, "sales_train_evaluation.csv")) - prices_df = pd.read_csv(os.path.join(raw_data_dir, "sell_prices.csv")) - calendar_df = pd.read_csv(os.path.join(raw_data_dir, "calendar.csv")) - - grid_df = melt_raw_data(train_df) - print(f"df: ({grid_df.shape[0]}, {grid_df.shape[1]}) Melting raw data down!") - - grid_df = add_release_week(grid_df, prices_df, calendar_df) - print(f"df: ({grid_df.shape[0]}, {grid_df.shape[1]}) Adding release week down!") - - grid_df = add_prices(grid_df, prices_df, calendar_df) - print(f"df: ({grid_df.shape[0]}, {grid_df.shape[1]}) Adding prices down!") - - grid_df = add_date(grid_df, calendar_df) - print(f"df: ({grid_df.shape[0]}, {grid_df.shape[1]}) Adding date down!") - - grid_df = add_lags_rollings(grid_df) - print(f"df: ({grid_df.shape[0]}, {grid_df.shape[1]}) Adding lags and rollings down!") - - grid_df = add_mean_enc(grid_df) - print(f"df: ({grid_df.shape[0]}, {grid_df.shape[1]}) Adding mean encoding down!") - - grid_df = pd.read_pickle(os.path.join(processed_data_dir, "add_mean_enc.pkl")) - - grid_df = add_snap(grid_df) - print("Save the data down!") - - -# ==================== split dataset ==================== -def label_encode(df, columns): - le = LabelEncoder() - data_list = [] - - for column in columns: - data_list += df[column].drop_duplicates().values.tolist() - le.fit(data_list) - - for column in columns: - df[column] = le.transform(df[column].values.tolist()) - - return df - - -def reorganize_data(grid_df): - grid_df["snap"] = grid_df["snap"].astype("int8") - columns_list = [ - ["item_id"], - ["dept_id"], - ["cat_id"], - ["event_name_1", "event_name_2"], - ["event_type_1", "event_type_2"], - ] - - for columns in columns_list: - grid_df[columns] = label_encode(grid_df[columns], columns) - - return reduce_mem_usage(grid_df) - - -def split_data(df, store, fill_flag=False): - for cat in category_list: - df[cat] = df[cat].astype("category") - - if fill_flag: - df = reduce_mem_usage(df, float16_flag=False) - cols = df.isnull().any() - idx = list(cols[cols.values].index) - - df[idx] = df.groupby("item_id", sort=False)[idx].apply(lambda x: x.ffill().bfill()) - df[idx] = df[idx].fillna(df[idx].mean()) - - mms = MinMaxScaler() - df[features_columns] = mms.fit_transform(df[features_columns]) - - df = reduce_mem_usage(df) - - train_df = df[df["d"] <= END_TRAIN] - val_df = df[df["d"] > END_TRAIN] - - train_df = train_df[features_columns + label_column] - val_df = val_df[features_columns + label_column] - print(train_df.shape, val_df.shape) - - suffix = f"_fill" if fill_flag else "" - train_df.to_pickle(os.path.join(processed_data_dir, f"train_{store}{suffix}.pkl")) - val_df.to_pickle(os.path.join(processed_data_dir, f"val_{store}{suffix}.pkl")) - - -def split_m5(): - grid_df = pd.read_pickle(os.path.join(processed_data_dir, "all_data_df.pkl")) - - if os.path.exists(os.path.join(processed_data_dir, "label_encode.pkl")): - grid_df = pd.read_pickle(os.path.join(processed_data_dir, "label_encode.pkl")) - else: - grid_df = reorganize_data(grid_df) - grid_df.to_pickle(os.path.join(processed_data_dir, "label_encode.pkl")) - - for store in store_list: - # split_data(grid_df[grid_df["store_id"] == store], store) - split_data(grid_df[grid_df["store_id"] == store], store, True) - - -def regenerate_data(): - preprocessing_m5() - split_m5() diff --git a/examples/dataset_m5_workflow/m5/train.py b/examples/dataset_m5_workflow/m5/train.py deleted file mode 100644 index f175d38..0000000 --- a/examples/dataset_m5_workflow/m5/train.py +++ /dev/null @@ -1,452 +0,0 @@ -import gc -import joblib -import random -import numpy as np -import pandas as pd -from tqdm import tqdm -import os, warnings -import lightgbm as lgb -from sklearn.svm import SVR -from sklearn.linear_model import Ridge -from sklearn.kernel_ridge import KernelRidge -from sklearn.metrics import mean_squared_error -from sklearn.metrics.pairwise import rbf_kernel - - -from .utils import * -from .config import model_dir, grid_dir, store_list, lgb_params_list - -warnings.filterwarnings("ignore") - - -def train_lgb_model(train_x, train_y, val_x, val_y, store, lr, nl, md, best, save=True, n_estimators=0, train_flag=0): - lgb_params = { - "boosting_type": "gbdt", - "objective": "rmse", - "metric": "rmse", - "learning_rate": lr, - "num_leaves": nl, - "max_depth": md, - "n_estimators": 100000, - "boost_from_average": False, - "verbose": -1, - } - - if train_flag: - idx = int(len(train_y) * 0.1) - train_data = lgb.Dataset(train_x[:-idx], label=train_y[:-idx]) - val_data = lgb.Dataset(train_x[-idx:], label=train_y[-idx:]) - else: - train_data = lgb.Dataset(train_x, label=train_y) - val_data = lgb.Dataset(val_x, label=val_y) - - if n_estimators: - lgb_params["n_estimators"] = n_estimators - gbm = lgb.train(lgb_params, train_data, verbose_eval=100) - else: - gbm = lgb.train(lgb_params, train_data, valid_sets=[val_data], verbose_eval=100, early_stopping_rounds=1000) - - test_y = gbm.predict(val_x, num_iteration=gbm.best_iteration) - res = mean_squared_error(val_y, test_y, squared=False) - - if res < best: - best = res - if save: - gbm.save_model(os.path.join(model_dir, f"lgb_{store}.out")) - - return best - - -def train_ridge_model(train_x, train_y, val_x, val_y, store, a, best, save=True): - model = Ridge(alpha=a) - model.fit(train_x, train_y) - - test_y = model.predict(val_x) - res = mean_squared_error(val_y, test_y, squared=False) - - if res < best: - best = res - if save: - joblib.dump(model, os.path.join(model_dir, f"ridge_{store}.out")) - - return best - - -def train_svm_model( - train_x, train_y, val_x, val_y, store, C, epsilon, best, save=True, gamma=0.1, adaptation_model=[], K1=None, K2=None -): - if K1 is None: - model = SVR(C=C, epsilon=epsilon, max_iter=30000, cache_size=10240, verbose=True, gamma=gamma) - else: - model = AuxiliarySVR( - C=C, - epsilon=epsilon, - gamma=gamma, - adaptation_model=adaptation_model, - max_iter=30000, - cache_size=10240, - verbose=True, - K1=K1, - K2=K2, - ) - - model.fit(train_x, train_y) - test_y = model.predict(val_x) - res = mean_squared_error(val_y, test_y, squared=False) - - if res < best: - best = res - if save: - joblib.dump(model, os.path.join(model_dir, f"svm_{store}.out")) - - return best - - -def train_krr_model(train_x, train_y, val_x, val_y, store, a, best, save=True, gamma=0.1, K1=None, K2=None): - if K1 is None: - model = KernelRidge(kernel="rbf", alpha=a, gamma=gamma) - model.fit(train_x, train_y) - test_y = model.predict(val_x) - res = mean_squared_error(val_y, test_y, squared=False) - else: - len1, len2 = len(train_y), len(val_y) - model = KernelRidge(kernel="precomputed", alpha=a) - model.fit(K1[-len1:, -len1:], train_y) - test_y = model.predict(K2[-len2:, -len1:]) - res = mean_squared_error(val_y, test_y, squared=False) - - if res < best: - best = res - if save: - joblib.dump(model, os.path.join(model_dir, f"krr_{store}.out")) - - return best - - -def grid_search(store_id, algo, search_lgb_flag=False): - store = store_list[store_id] - - if algo == "lgb": - train_x, train_y, val_x, val_y = acquire_data(store, True) - learning_rate = [0.005, 0.01, 0.015] - num_leaves = [128, 224, 300] - max_depth = [50, 66, 80] - best = 10000000 - - if search_lgb_flag: - for lr in learning_rate: - for nl in num_leaves: - for md in max_depth: - best = train_lgb_model(train_x, train_y, val_x, val_y, store, lr, nl, md, best) - print(f"store: {store}, lr: {lr}, nl: {nl}, md: {md}, best: {best}") - else: - lr, nl, md = lgb_params_list[store_id] - best = train_lgb_model(train_x, train_y, val_x, val_y, store, lr, nl, md, best) - print(f"store: {store}, lr: {lr}, nl: {nl}, md: {md}, best: {best}") - elif algo == "ridge": - train_x, train_y, val_x, val_y = acquire_data(store, True) - alpha = [0.01, 0.1, 0.2, 0.5, 1.0, 2.0, 5.0, 10, 20, 30] - best = 10000000 - - for a in alpha: - best = train_ridge_model(train_x, train_y, val_x, val_y, store, a, best) - print(f"store: {store}, alpha: {a}, best: {best}") - - -def grid_training_sample(algo, user_list=list(range(10))): - for i in range(len(user_list)): - store_id = user_list[i] - store = store_list[store_id] - org_train_x, org_train_y, val_x, val_y = acquire_data(store, True) - res = [] - - proportion_list = [ - 100, - 300, - 500, - 700, - 900, - 1000, - 3000, - 5000, - 7000, - 9000, - 10000, - 30000, - 50000, - 70000, - 90000, - 100000, - 300000, - 500000, - 700000, - 900000, - 1000000, - 3000000, - 5000000, - ] - - for proportion in proportion_list: - """ - random - org_idx_list = list(range(len(org_train_y))) - idx_list = random.sample(org_idx_list, min(proportion, len(org_train_y))) - train_x = org_train_x.iloc[idx_list] - train_y = org_train_y.iloc[idx_list] - """ - train_x = org_train_x[-proportion:] - train_y = org_train_y[-proportion:] - best = 10000000 - - if algo == "lgb": - lr, nl, md = lgb_params_list[store_id] - best = train_lgb_model( - train_x, train_y, val_x, val_y, store, lr, nl, md, best, save=False, n_estimators=3000, train_flag=0 - ) - print(f"store: {store}, lr: {lr}, nl: {nl}, md: {md}, best: {best}") - - elif algo == "ridge": - alpha = [0.01, 0.1, 0.2, 0.5, 1.0, 2.0, 5.0, 10, 20, 30] - for a in alpha: - best = train_ridge_model(train_x, train_y, val_x, val_y, store, a, best, save=False) - print(f"store: {store}, alpha: {a}, best: {best}") - - elif algo == "svm": - C = [1, 10, 100] - epsilon = 0.001 - for c in C: - best = train_svm_model(train_x, train_y, val_x, val_y, store, c, epsilon, best, save=False) - print(f"store: {store}, C: {c}, epsilon: {epsilon}, best: {best}") - - res.append([proportion, best]) - np.savetxt(os.path.join(grid_dir, f"grid_sample_{algo}_{store}.out"), np.array(res)) - - if proportion > len(org_train_y): - break - - -def retrain_models(algo): - for store_id in range(10): - grid_search(store_id, algo) - - -def train_adaptation_grid( - algo, max_sample, test_sample, user_list=list(range(10)), adaptation_model=[], residual=False -): - """ - adaptation_model = [ - [("lgb", 1), ("ridge", 2)], - [("lgb", 1), ("ridge", 2)] - ] - """ - - proportion_list = [ - 100, - 300, - 500, - 700, - 900, - 1000, - 3000, - 5000, - 7000, - 9000, - 10000, - 30000, - 50000, - 70000, - 90000, - 100000, - 300000, - 500000, - 700000, - 900000, - 1000000, - 3000000, - 5000000, - ] - sample_idx = proportion_list.index(max_sample) + 1 - - for i in range(len(user_list)): - store_id = user_list[i] - store = store_list[store_id] - org_train_x, org_train_y, val_x, val_y = acquire_data(store, True) - val_x = val_x[-test_sample:] - val_y = val_y[-test_sample:] - - if algo == "lgb" or algo == "ridge": - res = [] - - if adaptation_model != []: - if residual: - aux_algo, model_idx = adaptation_model[i][0] - org_train_y -= model_predict(aux_algo, model_idx, org_train_x) - val_y -= model_predict(aux_algo, model_idx, val_x) - - else: - train_y_list, val_y_list = [], [] - - for aux_algo, model_idx in adaptation_model[i]: - train_y_list.append(model_predict(aux_algo, model_idx, org_train_x)) - val_y_list.append(model_predict(aux_algo, model_idx, val_x)) - - for j in range(len(train_y_list)): - org_train_x[f"model_values_{j}"] = train_y_list[j] - val_x[f"model_values_{j}"] = val_y_list[j] - - for proportion in proportion_list[:sample_idx]: - """ - random - org_idx_list = list(range(len(org_train_y))) - idx_list = random.sample(org_idx_list, min(proportion, len(org_train_y))) - train_x = org_train_x.iloc[idx_list] - train_y = org_train_y.iloc[idx_list] - """ - train_x = org_train_x[-proportion:] - train_y = org_train_y[-proportion:] - best = 10000000 - - if algo == "lgb": - if max_sample < 50000: - learning_rate = [0.005, 0.01, 0.015] - num_leaves = [128, 224, 300] - max_depth = [50, 66, 80] - - for lr in learning_rate: - for nl in num_leaves: - for md in max_depth: - best = train_lgb_model( - train_x, train_y, val_x, val_y, store, lr, nl, md, best, save=False - ) - print(f"store: {store}, lr: {lr}, nl: {nl}, md: {md}, best: {best}") - else: - lr, nl, md = lgb_params_list[store_id] - best = train_lgb_model( - train_x, - train_y, - val_x, - val_y, - store, - lr, - nl, - md, - best, - save=False, - n_estimators=3000, - train_flag=0, - ) - print(f"store: {store}, lr: {lr}, nl: {nl}, md: {md}, best: {best}") - - elif algo == "ridge": - alpha = [0.01, 0.1, 0.2, 0.5, 1.0, 2.0, 5.0, 10, 20, 30] - for a in alpha: - best = train_ridge_model(train_x, train_y, val_x, val_y, store, a, best, save=False) - print(f"store: {store}, alpha: {a}, best: {best}") - - res.append([proportion, best]) - text = str(adaptation_model[i]) if adaptation_model != [] else "null" - text += "_residual_" if residual else "" - np.savetxt(os.path.join(grid_dir, f"{algo}_using_{text}_{store}.out"), np.array(res)) - - if proportion > len(org_train_y): - break - - elif algo == "svm" or algo == "krr": - res = [[proportion, 10000] for proportion in proportion_list[:sample_idx]] - org_train_x = org_train_x.to_numpy() - org_train_y = org_train_y.to_numpy() - val_x = val_x.to_numpy() - val_y = val_y.to_numpy() - - y1_list, y2_list = [], [] - gamma_list = [0.01, 0.1, 0.5, 1] - - if residual: - aux_algo, model_idx = adaptation_model[i][0] - org_train_y = org_train_y.astype(np.float64) - val_y = val_y.astype(np.float64) - org_train_y -= model_predict(aux_algo, model_idx, org_train_x) - val_y -= model_predict(aux_algo, model_idx, val_x) - - elif adaptation_model != []: - for aux_algo, idx in adaptation_model[i]: - y1_list.append(model_predict(aux_algo, idx, org_train_x[-max_sample:]).reshape(-1, 1)) - y2_list.append(model_predict(aux_algo, idx, val_x).reshape(-1, 1)) - - for gamma in gamma_list: - K1 = np.zeros((max_sample, max_sample)) - K2 = np.zeros((len(val_x), max_sample)) - - if (not residual) and adaptation_model != []: - for j in range(len(adaptation_model[i])): - aux_algo, idx = adaptation_model[i][j] - y1 = y1_list[j] - y2 = y2_list[j] - K1 += np.dot(y1, y1.T) - K2 += np.dot(y2, y1.T) - - K1 += rbf_kernel(org_train_x[-max_sample:], org_train_x[-max_sample:], gamma=gamma) - K2 += rbf_kernel(val_x, org_train_x[-max_sample:], gamma=gamma) - - for idx in range(len(proportion_list[:sample_idx])): - proportion = proportion_list[idx] - """ - random - org_idx_list = list(range(len(org_train_y))) - idx_list = random.sample(org_idx_list, min(proportion, len(org_train_y))) - train_x = org_train_x.iloc[idx_list] - train_y = org_train_y.iloc[idx_list] - """ - train_x = org_train_x[-proportion:] - train_y = org_train_y[-proportion:] - best = 10000000 - - if algo == "svm": - C = [1, 10, 50, 100, 200] - epsilon = 0.001 - - for c in C: - adapt_m = [] if adaptation_model == [] else adaptation_model[i] - best = train_svm_model( - train_x, - train_y, - val_x, - val_y, - store, - c, - epsilon, - best, - save=False, - gamma=gamma, - adaptation_model=adapt_m, - K1=K1, - K2=K2, - ) - print(f"store: {store}, gamma: {gamma}, C: {c}, epsilon: {epsilon}, best: {best}") - - elif algo == "krr": - alpha = [0.01, 0.1, 0.5, 1.0, 5.0, 10] - - for a in alpha: - best = train_krr_model( - train_x, train_y, val_x, val_y, store, a, best, save=False, gamma=gamma, K1=K1, K2=K2 - ) - print(f"store: {store}, a: {a}, gamma: {gamma}, best: {best}") - - if best < res[idx][1]: - res[idx][1] = best - text = str(adaptation_model[i]) if adaptation_model != [] else "null" - text += "_residual" if residual else "" - np.savetxt(os.path.join(grid_dir, f"{algo}_using_{text}_{store}.out"), np.array(res)) - - if proportion > len(org_train_y): - break - - del train_x, train_y - gc.collect() - - del K1, K2 - gc.collect() - - del org_train_x, org_train_y - gc.collect() diff --git a/examples/dataset_m5_workflow/m5/utils.py b/examples/dataset_m5_workflow/m5/utils.py deleted file mode 100644 index 721eee2..0000000 --- a/examples/dataset_m5_workflow/m5/utils.py +++ /dev/null @@ -1,177 +0,0 @@ -from math import gamma -from tkinter import Y -import joblib -from tqdm import tqdm -import numpy as np -import pandas as pd -import lightgbm as lgb -from sklearn.svm import SVR -from sklearn.metrics import mean_squared_error -from sklearn.metrics.pairwise import rbf_kernel -import os, sys, gc, time, warnings, pickle, psutil, random -import matplotlib.pyplot as plt -from mpl_toolkits.axes_grid1 import make_axes_locatable - - -from .config import * - - -class AuxiliarySVR: - def __init__( - self, C, epsilon, gamma, adaptation_model=[], max_iter=30000, cache_size=10240, verbose=False, K1=None, K2=None - ): - self.gamma = gamma - self.adaptation_model = adaptation_model - self.model = SVR( - C=C, - epsilon=epsilon, - kernel=self.auxiliary_rbf_kernel, - max_iter=max_iter, - cache_size=cache_size, - verbose=verbose, - ) - self.K1 = K1 - self.K2 = K2 - - def auxiliary_rbf_kernel(self, X1, X2): - if self.K1 is not None: - if X1.shape[0] == X2.shape[0]: - return self.K1[-X1.shape[0] :, -X2.shape[0] :] - else: - return self.K2[-X1.shape[0] :, -X2.shape[0] :] - else: - K = np.zeros((len(X1), len(X2))) - - for algo, idx in self.adaptation_model: - Y1 = model_predict(algo, idx, X1).reshape(-1, 1) - Y2 = model_predict(algo, idx, X2).reshape(-1, 1) - K += Y1 @ Y2.T - - K += rbf_kernel(X1, X2, self.gamma) - return K - - def fit(self, X, Y): - self.gamma = 1 / X.shape[1] - self.model.fit(X, Y) - - def predict(self, X): - return self.model.predict(X) - - -def measure_aux_algo(idx, test_sample, model): - """ - model = ("lgb", 1) - """ - store = store_list[idx] - org_train_x, org_train_y, val_x, val_y = acquire_data(store, True) - pred_y = model_predict(model[0], model[1], val_x[-test_sample:]) - return score(pred_y, val_y[-test_sample:]) - - -# Simple "Memory profilers" to see memory usage -def get_memory_usage(): - return np.round(psutil.Process(os.getpid()).memory_info()[0] / 2.0**30, 2) - - -def sizeof_fmt(num, suffix="B"): - for unit in ["", "Ki", "Mi", "Gi", "Ti", "Pi", "Ei", "Zi"]: - if abs(num) < 1024.0: - return "%3.1f%s%s" % (num, unit, suffix) - num /= 1024.0 - return "%.1f%s%s" % (num, "Yi", suffix) - - -# Memory Reducer -def reduce_mem_usage(df, float16_flag=True, verbose=True): - numerics = ["int16", "int32", "int64", "float16", "float32", "float64"] - start_mem = df.memory_usage().sum() / 1024**2 - for col in df.columns: - col_type = df[col].dtypes - if col_type in numerics: - c_min = df[col].min() - c_max = df[col].max() - if str(col_type)[:3] == "int": - if c_min > np.iinfo(np.int8).min and c_max < np.iinfo(np.int8).max: - df[col] = df[col].astype(np.int8) - elif c_min > np.iinfo(np.int16).min and c_max < np.iinfo(np.int16).max: - df[col] = df[col].astype(np.int16) - elif c_min > np.iinfo(np.int32).min and c_max < np.iinfo(np.int32).max: - df[col] = df[col].astype(np.int32) - elif c_min > np.iinfo(np.int64).min and c_max < np.iinfo(np.int64).max: - df[col] = df[col].astype(np.int64) - else: - if float16_flag and c_min > np.finfo(np.float16).min and c_max < np.finfo(np.float16).max: - df[col] = df[col].astype(np.float16) - elif c_min > np.finfo(np.float32).min and c_max < np.finfo(np.float32).max: - df[col] = df[col].astype(np.float32) - else: - df[col] = df[col].astype(np.float64) - end_mem = df.memory_usage().sum() / 1024**2 - if verbose: - print( - "Mem. usage decreased to {:5.2f} Mb ({:.1f}% reduction)".format( - end_mem, 100 * (start_mem - end_mem) / start_mem - ) - ) - return df - - -# Merging by concat to not lose dtypes -def merge_by_concat(df1, df2, merge_on): - merged_gf = df1[merge_on] - merged_gf = merged_gf.merge(df2, on=merge_on, how="left") - new_columns = [col for col in list(merged_gf) if col not in merge_on] - df1 = pd.concat([df1, merged_gf[new_columns]], axis=1) - return df1 - - -def model_predict(algo, idx, test_x): - store = store_list[idx] - - if algo == "lgb": - model = lgb.Booster(model_file=os.path.join(model_dir, f"lgb_{store}.out")) - return model.predict(test_x, num_iteration=model.best_iteration) - elif algo == "ridge": - model = joblib.load(os.path.join(model_dir, f"ridge_{store}.out")) - return model.predict(test_x) - elif algo == "svm": - model = joblib.load(os.path.join(model_dir, f"svm_{store}.out")) - return model.predict(test_x) - - -def get_weights(algo): - weights = [] - - if algo == "lgb": - for store in store_list: - model = lgb.Booster(model_file=os.path.join(model_dir, f"lgb_{store}.out")) - weights.append(model.feature_importance()) - else: - for store in store_list: - model = joblib.load(os.path.join(model_dir, f"ridge_{store}.out")) - weights.append(model.coef_) - - return np.array(weights) - - -def score(real_y, pred_y, sample_weight, multioutput): - return mean_squared_error(real_y, pred_y, sample_weight=sample_weight, multioutput=multioutput, squared=False) - - -def acquire_data(store, fill_flag=False): - TARGET = "sales" - suffix = f"_fill" if fill_flag else "" - train = pd.read_pickle(os.path.join(processed_data_dir, f"train_{store}{suffix}.pkl")) - val = pd.read_pickle(os.path.join(processed_data_dir, f"val_{store}{suffix}.pkl")) - - train_y = train[TARGET] - train_x = train.drop(columns=TARGET, axis=1) - val_y = val[TARGET] - val_x = val.drop(columns=TARGET, axis=1) - - train_x = train_x.to_numpy() - train_y = train_y.to_numpy() - val_x = val_x.to_numpy() - val_y = val_y.to_numpy() - - return train_x, train_y, val_x, val_y diff --git a/examples/dataset_m5_workflow/main.py b/examples/dataset_m5_workflow/main.py deleted file mode 100644 index c6dea40..0000000 --- a/examples/dataset_m5_workflow/main.py +++ /dev/null @@ -1,211 +0,0 @@ -import os -import fire -import time -import zipfile -import numpy as np -from tqdm import tqdm -from shutil import copyfile, rmtree - -import learnware -from learnware.market import instantiate_learnware_market, BaseUserInfo -from learnware.reuse import JobSelectorReuser, AveragingReuser -from learnware.specification import generate_rkme_table_spec -from m5 import DataLoader -from learnware.logger import get_module_logger - -logger = get_module_logger("m5_test", level="INFO") - - -output_description = { - "Dimension": 1, - "Description": {}, -} - -input_description = { - "Dimension": 82, - "Description": {}, -} - -semantic_specs = [ - { - "Data": {"Values": ["Table"], "Type": "Class"}, - "Task": {"Values": ["Regression"], "Type": "Class"}, - "Library": {"Values": ["Scikit-learn"], "Type": "Class"}, - "Scenario": {"Values": ["Business"], "Type": "Tag"}, - "Description": {"Values": "", "Type": "String"}, - "Name": {"Values": "learnware_1", "Type": "String"}, - "Input": input_description, - "Output": output_description, - "License": {"Values": ["MIT"], "Type": "Class"}, - } -] - -user_semantic = { - "Data": {"Values": ["Table"], "Type": "Class"}, - "Task": {"Values": ["Regression"], "Type": "Class"}, - "Library": {"Values": ["Scikit-learn"], "Type": "Class"}, - "Scenario": {"Values": ["Business"], "Type": "Tag"}, - "Description": {"Values": "", "Type": "String"}, - "Name": {"Values": "", "Type": "String"}, - "Input": input_description, - "Output": output_description, - "License": {"Values": ["MIT"], "Type": "Class"}, -} - - -class M5DatasetWorkflow: - def _init_m5_dataset(self): - m5 = DataLoader() - m5.regenerate_data() - - algo_list = ["ridge", "lgb"] - for algo in algo_list: - m5.set_algo(algo) - m5.retrain_models() - - def _init_learnware_market(self): - """initialize learnware market""" - # database_ops.clear_learnware_table() - learnware.init() - - easy_market = instantiate_learnware_market(name="easy", rebuild=True) - print("Total Item:", len(easy_market)) - - zip_path_list = [] - curr_root = os.path.dirname(os.path.abspath(__file__)) - curr_root = os.path.join(curr_root, "learnware_pool") - for zip_path in os.listdir(curr_root): - zip_path_list.append(os.path.join(curr_root, zip_path)) - - for idx, zip_path in enumerate(zip_path_list): - semantic_spec = semantic_specs[0] - semantic_spec["Name"]["Values"] = "learnware_%d" % (idx) - semantic_spec["Description"]["Values"] = "test_learnware_number_%d" % (idx) - easy_market.add_learnware(zip_path, semantic_spec) - - print("Total Item:", len(easy_market)) - - def prepare_learnware(self, regenerate_flag=False): - if regenerate_flag: - self._init_m5_dataset() - - m5 = DataLoader() - idx_list = m5.get_idx_list() - algo_list = ["lgb"] # algo_list = ["ridge", "lgb"] - - curr_root = os.path.dirname(os.path.abspath(__file__)) - curr_root = os.path.join(curr_root, "learnware_pool") - os.makedirs(curr_root, exist_ok=True) - - for idx in tqdm(idx_list): - train_x, train_y, test_x, test_y = m5.get_idx_data(idx) - st = time.time() - spec = generate_rkme_table_spec(X=train_x, gamma=0.1, cuda_idx=0) - ed = time.time() - logger.info("Stat spec generated in %.3f s" % (ed - st)) - - for algo in algo_list: - m5.set_algo(algo) - dir_path = os.path.join(curr_root, f"{algo}_{idx}") - os.makedirs(dir_path, exist_ok=True) - - spec_path = os.path.join(dir_path, "rkme.json") - spec.save(spec_path) - - model_path = m5.get_model_path(idx) - model_file = os.path.join(dir_path, "model.out") - copyfile(model_path, model_file) - - init_file = os.path.join(dir_path, "__init__.py") - copyfile("example_init.py", init_file) - - yaml_file = os.path.join(dir_path, "learnware.yaml") - copyfile("example.yaml", yaml_file) - - zip_file = dir_path + ".zip" - with zipfile.ZipFile(zip_file, "w") as zip_obj: - for foldername, subfolders, filenames in os.walk(dir_path): - for filename in filenames: - file_path = os.path.join(foldername, filename) - zip_info = zipfile.ZipInfo(filename) - zip_info.compress_type = zipfile.ZIP_STORED - with open(file_path, "rb") as file: - zip_obj.writestr(zip_info, file.read()) - - rmtree(dir_path) - - def test(self, regenerate_flag=False): - self.prepare_learnware(regenerate_flag) - self._init_learnware_market() - - easy_market = instantiate_learnware_market(name="easy") - print("Total Item:", len(easy_market)) - - m5 = DataLoader() - idx_list = m5.get_idx_list() - os.makedirs("./user_spec", exist_ok=True) - single_score_list = [] - random_score_list = [] - job_selector_score_list = [] - ensemble_score_list = [] - improve_list = [] - - for idx in idx_list: - train_x, train_y, test_x, test_y = m5.get_idx_data(idx) - user_spec = generate_rkme_table_spec(X=test_x, gamma=0.1, cuda_idx=0) - user_spec_path = f"./user_spec/user_{idx}.json" - user_spec.save(user_spec_path) - - user_info = BaseUserInfo(semantic_spec=user_semantic, stat_info={"RKMETableSpecification": user_spec}) - search_result = easy_market.search_learnware(user_info) - single_result = search_result.get_single_results() - multiple_result = search_result.get_multiple_results() - - print(f"search result of user{idx}:") - print( - f"single model num: {len(single_result)}, max_score: {single_result[0].score}, min_score: {single_result[-1].score}" - ) - loss_list = [] - for single_item in single_result: - pred_y = single_item.learnware.predict(test_x) - loss_list.append(m5.score(test_y, pred_y)) - print( - f"Top1-score: {single_result[0].score}, learnware_id: {single_result[0].learnware.id}, loss: {loss_list[0]}" - ) - - if len(multiple_result) > 0: - mixture_id = " ".join([learnware.id for learnware in multiple_result[0].learnwares]) - print(f"mixture_score: {multiple_result[0].score}, mixture_learnware: {mixture_id}") - mixture_learnware_list = multiple_result[0].learnwares - else: - mixture_learnware_list = [single_result[0].learnware] - - reuse_job_selector = JobSelectorReuser(learnware_list=mixture_learnware_list, use_herding=False) - job_selector_predict_y = reuse_job_selector.predict(user_data=test_x) - job_selector_score = m5.score(test_y, job_selector_predict_y) - print(f"mixture reuse loss (job selector): {job_selector_score}") - - reuse_ensemble = AveragingReuser(learnware_list=mixture_learnware_list, mode="vote_by_prob") - ensemble_predict_y = reuse_ensemble.predict(user_data=test_x) - ensemble_score = m5.score(test_y, ensemble_predict_y) - print(f"mixture reuse loss (ensemble): {ensemble_score}\n") - - single_score_list.append(loss_list[0]) - random_score_list.append(np.mean(loss_list)) - job_selector_score_list.append(job_selector_score) - ensemble_score_list.append(ensemble_score) - improve_list.append((np.mean(loss_list) - loss_list[0]) / np.mean(loss_list)) - - logger.info("Single search score %.3f +/- %.3f" % (np.mean(single_score_list), np.std(single_score_list))) - logger.info("Random search score: %.3f +/- %.3f" % (np.mean(random_score_list), np.std(random_score_list))) - logger.info("Average score improvement: %.3f" % (np.mean(improve_list))) - logger.info( - "Job selector score: %.3f +/- %.3f" % (np.mean(job_selector_score_list), np.std(job_selector_score_list)) - ) - logger.info( - "Average ensemble score: %.3f +/- %.3f" % (np.mean(ensemble_score_list), np.std(ensemble_score_list)) - ) - - -if __name__ == "__main__": - fire.Fire(M5DatasetWorkflow) diff --git a/examples/dataset_m5_workflow/upload.py b/examples/dataset_m5_workflow/upload.py deleted file mode 100644 index af0a69d..0000000 --- a/examples/dataset_m5_workflow/upload.py +++ /dev/null @@ -1,87 +0,0 @@ -import hashlib -import requests -import os -import random -import json -import time -from tqdm import tqdm - -email = "tanzh@lamda.nju.edu.cn" -password = hashlib.md5(b"Qwerty123").hexdigest() -login_url = "http://210.28.134.201:8089/auth/login" -submit_url = "http://210.28.134.201:8089/user/add_learnware" -all_data_type = ["Table", "Image", "Video", "Text", "Audio"] -all_task_type = [ - "Classification", - "Regression", - "Clustering", - "Feature Extraction", - "Generation", - "Segmentation", - "Object Detection", -] -all_device_type = ["CPU", "GPU"] -all_scenario = [ - "Business", - "Financial", - "Health", - "Politics", - "Computer", - "Internet", - "Traffic", - "Nature", - "Fashion", - "Industry", - "Agriculture", - "Education", - "Entertainment", - "Architecture", -] - -# ############### -# 以上部分无需修改 # -# ############### - - -def main(): - session = requests.Session() - res = session.post(login_url, json={"email": email, "password": password}) - - # /path/to/learnware/folder 修改为学件文件夹地址 - learnware_pool = os.listdir(os.path.join(os.path.abspath("."), "learnware_pool")) - - for learnware in learnware_pool: - # 修改相应的语义规约 - name = "M5_Shop" + "%02d" % int(learnware.split(".")[0].split("_")[1]) - name = name + "_" + time.strftime("%Y%m%d%H%M%S", time.localtime()) - description = f"This is a description of learnware {name}" - data = random.choice(all_data_type) - task = random.choice(all_task_type) - device = list(set(random.choices(all_device_type, k=2))) - scenario = list(set(random.choices(all_scenario, k=5))) - semantic_specification = { - "Data": {"Values": ["Table"], "Type": "Class"}, - "Task": {"Values": ["Regression"], "Type": "Class"}, - "Device": {"Values": ["CPU"], "Type": "Tag"}, - "Scenario": {"Values": ["Business"], "Type": "Tag"}, - "Description": {"Values": "A sales-forecasting model from Walmart store", "Type": "String"}, - "Name": {"Values": name, "Type": "String"}, - "License": {"Values": ["MIT"], "Type": "Class"}, - } - res = session.post( - submit_url, - data={ - "semantic_specification": json.dumps(semantic_specification), - }, - files={ - "learnware_file": open( - os.path.join(os.path.abspath("."), "learnware_pool", learnware), - "rb", - ) - }, - ) - assert json.loads(res.text)["code"] == 0, "Upload error" - - -if __name__ == "__main__": - main() diff --git a/examples/dataset_pfs_workflow/example.yaml b/examples/dataset_pfs_workflow/example.yaml deleted file mode 100644 index cd539c8..0000000 --- a/examples/dataset_pfs_workflow/example.yaml +++ /dev/null @@ -1,8 +0,0 @@ -model: - class_name: Model - kwargs: {} -stat_specifications: - - module_path: learnware.specification - class_name: RKMETableSpecification - file_name: rkme.json - kwargs: {} \ No newline at end of file diff --git a/examples/dataset_pfs_workflow/example_init.py b/examples/dataset_pfs_workflow/example_init.py deleted file mode 100644 index 77bad5e..0000000 --- a/examples/dataset_pfs_workflow/example_init.py +++ /dev/null @@ -1,20 +0,0 @@ -import os -import joblib -import numpy as np -from learnware.model import BaseModel - - -class Model(BaseModel): - def __init__(self): - super(Model, self).__init__(input_shape=(31,), output_shape=(1,)) - dir_path = os.path.dirname(os.path.abspath(__file__)) - self.model = joblib.load(os.path.join(dir_path, "model.out")) - - def fit(self, X: np.ndarray, y: np.ndarray): - pass - - def predict(self, X: np.ndarray) -> np.ndarray: - return self.model.predict(X) - - def finetune(self, X: np.ndarray, y: np.ndarray): - pass diff --git a/examples/dataset_pfs_workflow/main.py b/examples/dataset_pfs_workflow/main.py deleted file mode 100644 index 2c33f04..0000000 --- a/examples/dataset_pfs_workflow/main.py +++ /dev/null @@ -1,208 +0,0 @@ -import os -import fire -import zipfile -import time -import numpy as np -from tqdm import tqdm -from shutil import copyfile, rmtree - -import learnware -from learnware.market import instantiate_learnware_market, BaseUserInfo -from learnware.reuse import JobSelectorReuser, AveragingReuser -from learnware.specification import generate_rkme_table_spec -from pfs import Dataloader -from learnware.logger import get_module_logger - -logger = get_module_logger("pfs_test", level="INFO") - -output_description = { - "Dimension": 1, - "Description": {}, -} - -input_description = { - "Dimension": 31, - "Description": {}, -} - -semantic_specs = [ - { - "Data": {"Values": ["Table"], "Type": "Class"}, - "Task": {"Values": ["Regression"], "Type": "Class"}, - "Library": {"Values": ["Scikit-learn"], "Type": "Class"}, - "Scenario": {"Values": ["Business"], "Type": "Tag"}, - "Description": {"Values": "", "Type": "String"}, - "Name": {"Values": "learnware_1", "Type": "String"}, - "Input": input_description, - "Output": output_description, - "License": {"Values": ["MIT"], "Type": "Class"}, - } -] - -user_semantic = { - "Data": {"Values": ["Table"], "Type": "Class"}, - "Task": {"Values": ["Regression"], "Type": "Class"}, - "Library": {"Values": ["Scikit-learn"], "Type": "Class"}, - "Scenario": {"Values": ["Business"], "Type": "Tag"}, - "Description": {"Values": "", "Type": "String"}, - "Name": {"Values": "", "Type": "String"}, - "Input": input_description, - "Output": output_description, - "License": {"Values": ["MIT"], "Type": "Class"}, -} - - -class PFSDatasetWorkflow: - def _init_pfs_dataset(self): - pfs = Dataloader() - pfs.regenerate_data() - - algo_list = ["ridge"] # "ridge", "lgb" - for algo in algo_list: - pfs.set_algo(algo) - pfs.retrain_models() - - def _init_learnware_market(self): - """initialize learnware market""" - learnware.init() - easy_market = instantiate_learnware_market(market_id="pfs", name="easy", rebuild=True) - print("Total Item:", len(easy_market)) - - zip_path_list = [] - curr_root = os.path.dirname(os.path.abspath(__file__)) - curr_root = os.path.join(curr_root, "learnware_pool") - for zip_path in os.listdir(curr_root): - zip_path_list.append(os.path.join(curr_root, zip_path)) - - for idx, zip_path in enumerate(zip_path_list): - semantic_spec = semantic_specs[0] - semantic_spec["Name"]["Values"] = "learnware_%d" % (idx) - semantic_spec["Description"]["Values"] = "test_learnware_number_%d" % (idx) - easy_market.add_learnware(zip_path, semantic_spec) - - print("Total Item:", len(easy_market)) - - def prepare_learnware(self, regenerate_flag=False): - if regenerate_flag: - self._init_pfs_dataset() - - pfs = Dataloader() - idx_list = pfs.get_idx_list() - algo_list = ["ridge"] # ["ridge", "lgb"] - - curr_root = os.path.dirname(os.path.abspath(__file__)) - curr_root = os.path.join(curr_root, "learnware_pool") - os.makedirs(curr_root, exist_ok=True) - - for idx in tqdm(idx_list): - train_x, train_y, test_x, test_y = pfs.get_idx_data(idx) - st = time.time() - spec = generate_rkme_table_spec(X=train_x, gamma=0.1, cuda_idx=0) - ed = time.time() - logger.info("Stat spec generated in %.3f s" % (ed - st)) - - for algo in algo_list: - pfs.set_algo(algo) - dir_path = os.path.join(curr_root, f"{algo}_{idx}") - os.makedirs(dir_path, exist_ok=True) - - spec_path = os.path.join(dir_path, "rkme.json") - spec.save(spec_path) - - model_path = pfs.get_model_path(idx) - model_file = os.path.join(dir_path, "model.out") - copyfile(model_path, model_file) - - init_file = os.path.join(dir_path, "__init__.py") - copyfile("example_init.py", init_file) - - yaml_file = os.path.join(dir_path, "learnware.yaml") - copyfile("example.yaml", yaml_file) - - zip_file = dir_path + ".zip" - with zipfile.ZipFile(zip_file, "w") as zip_obj: - for foldername, subfolders, filenames in os.walk(dir_path): - for filename in filenames: - file_path = os.path.join(foldername, filename) - zip_info = zipfile.ZipInfo(filename) - zip_info.compress_type = zipfile.ZIP_STORED - with open(file_path, "rb") as file: - zip_obj.writestr(zip_info, file.read()) - - rmtree(dir_path) - - def test(self, regenerate_flag=False): - self.prepare_learnware(regenerate_flag) - self._init_learnware_market() - - easy_market = instantiate_learnware_market(market_id="pfs", name="easy") - print("Total Item:", len(easy_market)) - - pfs = Dataloader() - idx_list = pfs.get_idx_list() - os.makedirs("./user_spec", exist_ok=True) - single_score_list = [] - random_score_list = [] - job_selector_score_list = [] - ensemble_score_list = [] - improve_list = [] - - for idx in idx_list: - train_x, train_y, test_x, test_y = pfs.get_idx_data(idx) - user_spec = generate_rkme_table_spec(X=test_x, gamma=0.1, cuda_idx=0) - user_spec_path = f"./user_spec/user_{idx}.json" - user_spec.save(user_spec_path) - - user_info = BaseUserInfo(semantic_spec=user_semantic, stat_info={"RKMETableSpecification": user_spec}) - search_result = easy_market.search_learnware(user_info) - single_result = search_result.get_single_results() - multiple_result = search_result.get_multiple_results() - - print(f"search result of user{idx}:") - print( - f"single model num: {len(single_result)}, max_score: {single_result[0].score}, min_score: {single_result[-1].score}" - ) - loss_list = [] - for single_item in single_result: - pred_y = single_item.learnware.predict(test_x) - loss_list.append(pfs.score(test_y, pred_y)) - print( - f"Top1-score: {single_result[0].score}, learnware_id: {single_result[0].learnware.id}, loss: {loss_list[0]}, random: {np.mean(loss_list)}" - ) - - if len(multiple_result) > 0: - mixture_id = " ".join([learnware.id for learnware in multiple_result[0].learnwares]) - print(f"mixture_score: {multiple_result[0].score}, mixture_learnware: {mixture_id}") - mixture_learnware_list = multiple_result[0].learnwares - else: - mixture_learnware_list = [single_result[0].learnware] - - reuse_job_selector = JobSelectorReuser(learnware_list=mixture_learnware_list, use_herding=False) - job_selector_predict_y = reuse_job_selector.predict(user_data=test_x) - job_selector_score = pfs.score(test_y, job_selector_predict_y) - print(f"mixture reuse loss (job selector): {job_selector_score}") - - reuse_ensemble = AveragingReuser(learnware_list=mixture_learnware_list) - ensemble_predict_y = reuse_ensemble.predict(user_data=test_x) - ensemble_score = pfs.score(test_y, ensemble_predict_y) - print(f"mixture reuse loss (ensemble): {ensemble_score}\n") - - single_score_list.append(loss_list[0]) - random_score_list.append(np.mean(loss_list)) - job_selector_score_list.append(job_selector_score) - ensemble_score_list.append(ensemble_score) - improve_list.append((np.mean(loss_list) - loss_list[0]) / np.mean(loss_list)) - - logger.info("Single search score %.3f +/- %.3f" % (np.mean(single_score_list), np.std(single_score_list))) - logger.info("Random search score: %.3f +/- %.3f" % (np.mean(random_score_list), np.std(random_score_list))) - logger.info("Average score improvement: %.3f" % (np.mean(improve_list))) - logger.info( - "Job selector score: %.3f +/- %.3f" % (np.mean(job_selector_score_list), np.std(job_selector_score_list)) - ) - logger.info( - "Average ensemble score: %.3f +/- %.3f" % (np.mean(ensemble_score_list), np.std(ensemble_score_list)) - ) - - -if __name__ == "__main__": - fire.Fire(PFSDatasetWorkflow) diff --git a/examples/dataset_pfs_workflow/pfs/README.md b/examples/dataset_pfs_workflow/pfs/README.md deleted file mode 100644 index b35f9d7..0000000 --- a/examples/dataset_pfs_workflow/pfs/README.md +++ /dev/null @@ -1,48 +0,0 @@ -# Learnware based on Prediction Future Sales (PFS) data downloaded from Kaggle ---> Data Page Link: https://www.kaggle.com/c/competitive-data-science-predict-future-sales/data ---> Code Page Link: https://www.kaggle.com/uladzimirkapeika/feature-engineering-lightgbm-top-1 - - -# PFS任务描述 ---> 目标:预测每个商店每个商品在下一个月的销量(注意:粒度为月,而不是每天) ---> 特征信息:商店所在城市信息、商品类别信息、商品价格信息、商品历史价格信息(特征工程中只使用了前三个月的历史信息然后拼接在一起)等 ---> 使用的模型:XgBoost, LightGBM, LinearRegression ---> 评价指标:RMSE - - -* split_pfs_data.py ---> 根据Kaggle上公开的数据预处理方案处理下载的数据 ---> 直接运行即可将数据根据Shop ID划分为每个商店的信息,包括: - ----> 每个商品在每个月下的特征和目标值,存储为pandas.DataFrame格式 - ----> 字段包括: - -- 标识信息: 'shop_id', 'item_id', 'date_block_num' (标识月份), - -- 目标值(本月销量): 'item_cnt_month', - -- 城市信息: 'city_code', 'city_coord_1', 'city_coord_2', 'country_part', - -- 商品种类信息: 'item_category_common', 'item_category_code', - -- 该月的时间信息: 'weeknd_count', 'days_in_month', - -- 商品是否第一次销售: 'item_first_interaction', 'shop_item_sold_before', - -- 商品前三个月的销售量和价格信息: - 'item_cnt_month_lag_1', 'item_cnt_month_lag_2', 'item_cnt_month_lag_3', - 'item_shop_price_avg_lag_1', 'item_shop_price_avg_lag_2', 'item_shop_price_avg_lag_3', - 'item_target_enc_lag_1', 'item_target_enc_lag_2', 'item_target_enc_lag_3', - 'item_loc_target_enc_lag_1', 'item_loc_target_enc_lag_2', 'item_loc_target_enc_lag_3', 'item_shop_target_enc_lag_1', 'item_shop_target_enc_lag_2', 'item_shop_target_enc_lag_3', - 'new_item_cat_avg_lag_1', 'new_item_cat_avg_lag_2', 'new_item_cat_avg_lag_3', - 'new_item_shop_cat_avg_lag_1', 'new_item_shop_cat_avg_lag_2', 'new_item_shop_cat_avg_lag_3', - 'item_cnt_month_lag_1_adv', 'item_cnt_month_lag_2_adv', 'item_cnt_month_lag_3_adv' - ----> 特征: 除了'item_cnt_month'之外的列都当做特征列 - ----> 目标值: 'item_cnt_month' - ----> 时间标识: 'data_block_num'将2013.01到2015.10月的数据标识为0-33,要预测的2015.11月数据为34 ---> 存储结果分为两部分: 按照时间划分的train & val,是pandas.DataFrame格式 - - -* pfs_cross_transfer.py ---> 在各自商店训练集上训练一个模型,然后在所有商店的测试集上测试,保存两两预测的RMSE结果,并进行分析 ---> 分析包括两部分:(1) 对于一个目标商店,其余源域模型的性能均值,方差,最小值(最好的模型),最大值,超过均值的源域数目,选择最好模型能够提升的比例等等;(2) HeatMap ---> 需要扩展的方向:(1) LightGBM, Ridge, Xgboost,以及超参数调参;(2) 特征工程去除标识信息,例如shop_id, item_id等等 - -* data_api.py ---> 后续封装的代码,需继续完善 - - -* packages ---> pip install lightgbm diff --git a/examples/dataset_pfs_workflow/pfs/__init__.py b/examples/dataset_pfs_workflow/pfs/__init__.py deleted file mode 100644 index cbcf22c..0000000 --- a/examples/dataset_pfs_workflow/pfs/__init__.py +++ /dev/null @@ -1,77 +0,0 @@ -import joblib -import os -from sklearn.metrics import mean_squared_error - - -from .pfs_cross_transfer import * -from .split_data import feature_engineering - - -class Dataloader: - def __init__(self): - self.algo = "ridge" - - def regenerate_data(self): - feature_engineering() - - def set_algo(self, algo): - self.algo = algo - - def get_algo_list(self): - return ["lgb", "ridge"] - - def get_idx_list(self): - return [i for i in range(53)] - - def get_idx_data(self, idx): - shop_ids = [i for i in range(60) if i not in [0, 1, 40]] - shop_ids = [i for i in shop_ids if i not in [8, 11, 23, 36]] - - fpath = os.path.join(pfs_split_dir, "Shop{:0>2d}-train.csv".format(shop_ids[idx])) - train_xs, train_ys, _, _ = load_pfs_data(fpath) - fpath = os.path.join(pfs_split_dir, "Shop{:0>2d}-val.csv".format(shop_ids[idx])) - test_xs, test_ys, _, _ = load_pfs_data(fpath) - return train_xs, train_ys, test_xs, test_ys - - def get_model_path(self, idx): - shop_ids = [i for i in range(60) if i not in [0, 1, 40]] - shop_ids = [i for i in shop_ids if i not in [8, 11, 23, 36]] - return os.path.join(model_dir, "{}_Shop{:0>2d}.out".format(self.algo, shop_ids[idx])) - - def retrain_models(self): - algo = self.algo - errs = get_errors(algo=algo) - - fpath = os.path.join(pfs_res_dir, "PFS_{}_errs.txt".format(algo)) - np.savetxt(fpath, errs.T) - - plot_heatmap(errs.T, algo) - weights = np.loadtxt(os.path.join(pfs_res_dir, "PFS_{}_weights.txt".format(algo))) - plot_performance(errs.T, weights, algo) - - def retrain_split_models(self): - fpath = os.path.join(pfs_res_dir, "PFS_{}_split_errs_user.txt".format(self.algo)) - if os.path.exists(fpath): - return np.loadtxt(fpath) - algo = self.algo - errs = get_split_errs(algo=algo) - fpath = os.path.join(pfs_res_dir, "PFS_{}_split_errs_user.txt".format(algo)) - np.savetxt(fpath, errs) - return errs - - def get_errs(self): - return np.loadtxt(os.path.join(pfs_res_dir, "PFS_{}_errs.txt".format(self.algo))) - - def get_weights(self): - return np.loadtxt(os.path.join(pfs_res_dir, "PFS_{}_weights.txt".format(self.algo))) - - def predict(self, idx, test_x): - shop_ids = [i for i in range(60) if i not in [0, 1, 40]] - shop_ids = [i for i in shop_ids if i not in [8, 11, 23, 36]] - - model = joblib.load(os.path.join(model_dir, "{}_Shop{:0>2d}.out".format(self.algo, shop_ids[idx]))) - # test_x = (test_x - test_x.min(0)) / (test_x.max(0) - test_x.min(0) + 0.0001) - return model.predict(test_x) - - def score(self, real_y, pred_y, sample_weight=None): - return mean_squared_error(real_y, pred_y, sample_weight=sample_weight, squared=False) diff --git a/examples/dataset_pfs_workflow/pfs/config.py b/examples/dataset_pfs_workflow/pfs/config.py deleted file mode 100644 index 4e445a2..0000000 --- a/examples/dataset_pfs_workflow/pfs/config.py +++ /dev/null @@ -1,272 +0,0 @@ -market_store_list = [ - 0, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 20, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 30, - 31, - 32, - 33, - 34, - 35, - 37, - 38, - 39, - 40, - 42, - 44, - 45, - 46, - 47, - 48, - 50, - 52, -] -user_store_list = [1, 11, 19, 21, 29, 36, 43, 49] - -dataset_info = { - "name": "PFS", - "range of date": "2014.01-2015.10", - "description": "You are provided with daily historical sales data. The task is to forecast the total amount of products sold in every shop for the test set. Note that the list of shops and products slightly changes every month. More specifically, the dataset involves 53 shops in Russia", - "location_original": [ - "Адыгея, Россия", - "Балашиха, Россия", - "Волжский, Россия", - "Вологда, Россия", - "Воронеж, Россия", - "Воронеж, Россия", - "Воронеж, Россия", - "выезд, Россия", - "Жуковский, Россия", - "интернет-магазин, Россия", - "Казань, Россия", - "Калуга, Россия", - "колонна, Россия", - "Красноярск, Россия", - "Красноярск, Россия", - "курск, Россия", - "Москва, Россия", - "Москва, Россия", - "Москва, Россия", - "Москва, Россия", - "Москва, Россия", - "Москва, Россия", - "Москва, Россия", - "Москва, Россия", - "Москва, Россия", - "Москва, Россия", - "Москва, Россия", - "Москва, Россия", - "Мытищи, Россия", - "Н.Новгород, Россия", - "Н.Новгород, Россия", - "Новосибирск, Россия", - "Новосибирск, Россия", - "Ростовнадон, Россия", - "Ростовнадон, Россия", - "спб, Россия", - "спб, Россия", - "самара, Россия", - "самара, Россия", - "Сергий, Россия", - "Сургут, Россия", - "томск, Россия", - "тюмень, Россия", - "тюмень, Россия", - "тюмень, Россия", - "Уфа, Россия", - "Уфа, Россия", - "Химки, Россия", - "цифровой, Россия", - "Чехи, Россия", - "Якутск, Россия", - "Якутск, Россия", - "Ярославль, Россия", - ], - "location_english": [ - "adygea, Russia", - "Balashikha, Russia", - "Volzhsky, Russia", - "Vologda, Russia", - "Voronezh, Russia", - "Voronezh, Russia", - "Voronezh, Russia", - "outbound, Russia", - "zhukovsky, Russia", - "online stor, Russia", - "Kazan, Russia", - "Kaluga, Russia", - "column, Russia", - "Krasnoyarsk, Russia", - "Krasnoyarsk, Russia", - "kursk, Russia", - "Moscow, Russia", - "Moscow, Russia", - "Moscow, Russia", - "Moscow, Russia", - "Moscow, Russia", - "Moscow, Russia", - "Moscow, Russia", - "Moscow, Russia", - "Moscow, Russia", - "Moscow, Russia", - "Moscow, Russia", - "Moscow, Russia", - "mytishchi, Russia", - "N.Novgorod, Russia", - "N.Novgorod, Russia", - "Novosibirsk, Russia", - "Novosibirsk, Russia", - "rostovnadon, Russia", - "rostovnadon, Russia", - "spb, Russia", - "spb, Russia", - "samara, Russia", - "samara, Russia", - "Sergius, Russia", - "surgut, Russia", - "tomsk, Russia", - "tyumen, Russia", - "tyumen, Russia", - "tyumen, Russia", - "Ufa, Russia", - "Ufa, Russia", - "Khimki, Russia", - "numeric, Russia", - "Czechs, Russia", - "Yakutsk, Russia", - "Yakutsk, Russia", - "Yaroslavl, Russia", - ], - "location_chinese": [ - "阿迪格亚, 俄罗斯", - "巴拉希哈, 俄罗斯", - "沃尔日斯基, 俄罗斯", - "沃洛格达, 俄罗斯", - "沃罗涅日, 俄罗斯", - "沃罗涅日, 俄罗斯", - "沃罗涅日, 俄罗斯", - "对外贸易, 俄罗斯", - "茹科夫斯基, 俄罗斯", - "在线商店, 俄罗斯", - "喀山, 俄罗斯", - "卡卢加, 俄罗斯", - "科洛姆纳, 俄罗斯", - "克拉斯诺亚尔斯克, 俄罗斯", - "克拉斯诺亚尔斯克, 俄罗斯", - "库尔斯克, 俄罗斯", - "莫斯科, 俄罗斯", - "莫斯科, 俄罗斯", - "莫斯科, 俄罗斯", - "莫斯科, 俄罗斯", - "莫斯科, 俄罗斯", - "莫斯科, 俄罗斯", - "莫斯科, 俄罗斯", - "莫斯科, 俄罗斯", - "莫斯科, 俄罗斯", - "莫斯科, 俄罗斯", - "莫斯科, 俄罗斯", - "莫斯科, 俄罗斯", - "梅季希, 俄罗斯", - "北诺夫哥罗德, 俄罗斯", - "北诺夫哥罗德, 俄罗斯", - "新西伯利亚, 俄罗斯", - "新西伯利亚, 俄罗斯", - "罗斯托夫纳东, 俄罗斯", - "罗斯托夫纳东, 俄罗斯", - "圣彼得堡, 俄罗斯", - "圣彼得堡, 俄罗斯", - "萨马拉, 俄罗斯", - "萨马拉, 俄罗斯", - "谢尔盖, 俄罗斯", - "苏尔古特, 俄罗斯", - "托木斯克, 俄罗斯", - "秋明, 俄罗斯", - "秋明, 俄罗斯", - "秋明, 俄罗斯", - "乌法, 俄罗斯", - "乌法, 俄罗斯", - "希姆基, 俄罗斯", - "在线商店, 俄罗斯", - "契诃夫, 俄罗斯", - "雅库茨克, 俄罗斯", - "雅库茨克, 俄罗斯", - "雅罗斯拉夫尔, 俄罗斯", - ], - "memory(KB)": [ - 246, - 302, - 3631, - 379, - 862, - 1020, - 471, - 867, - 588, - 233, - 657, - 1272, - 801, - 469, - 146, - 1309, - 98, - 1003, - 932, - 257, - 1959, - 1361, - 35, - 3265, - 217, - 283, - 4311, - 1155, - 43, - 1388, - 1971, - 971, - 7272, - 2782, - 304, - 6801, - 4942, - 181, - 190, - 3664, - 2061, - 170, - 807, - 593, - 1584, - 257, - 1819, - 50, - 1063, - 692, - 336, - 277, - 743, - ], -} diff --git a/examples/dataset_pfs_workflow/pfs/paths.py b/examples/dataset_pfs_workflow/pfs/paths.py deleted file mode 100644 index ab4bb68..0000000 --- a/examples/dataset_pfs_workflow/pfs/paths.py +++ /dev/null @@ -1,21 +0,0 @@ -import os - -ROOT_PATH = os.path.abspath(os.path.join(__file__, "..", "data")) -raw_data_dir = os.path.join(ROOT_PATH, "raw_data") -split_data_dir = os.path.join(ROOT_PATH, "split_data") -res_dir = os.path.join(ROOT_PATH, "results") -model_dir = os.path.join(ROOT_PATH, "models") -model_dir2 = os.path.join(ROOT_PATH, "models2") - - -for dir_name in [ROOT_PATH, raw_data_dir, split_data_dir, res_dir, model_dir, model_dir2]: - if not os.path.exists(dir_name): - os.mkdir(dir_name) - -pfs_data_dir = os.path.join(raw_data_dir, "PFS") -pfs_split_dir = os.path.join(split_data_dir, "PFS") -pfs_res_dir = os.path.join(res_dir, "PFS") - -for dir_name in [pfs_data_dir, pfs_split_dir, pfs_res_dir]: - if not os.path.exists(dir_name): - os.mkdir(dir_name) diff --git a/examples/dataset_pfs_workflow/pfs/pfs_cross_transfer.py b/examples/dataset_pfs_workflow/pfs/pfs_cross_transfer.py deleted file mode 100644 index 93a3fa3..0000000 --- a/examples/dataset_pfs_workflow/pfs/pfs_cross_transfer.py +++ /dev/null @@ -1,382 +0,0 @@ -import os -import pickle -import joblib -import numpy as np -import pandas as pd -import lightgbm as lgb -from sklearn.linear_model import Ridge -from sklearn.model_selection import GridSearchCV -from matplotlib import pyplot as plt -import matplotlib.ticker as ticker -from mpl_toolkits.axes_grid1 import make_axes_locatable - -np.seterr(divide="ignore", invalid="ignore") -from .paths import pfs_split_dir, pfs_res_dir, model_dir - -np.random.seed(0) - - -def load_pfs_data(fpath): - df = pd.read_csv(fpath) - - features = list(df.columns) - features.remove("item_cnt_month") - features.remove("date_block_num") - - # remove id info - # features.remove('shop_id') - # features.remove('item_id') - - # remove discrete info - # features.remove('city_code') - # features.remove('item_category_code') - # features.remove('item_category_common') - - xs = df[features].values - ys = df["item_cnt_month"].values - - categorical_feature_names = ["country_part", "item_category_common", "item_category_code", "city_code"] - types = None - - return xs, ys, features, types - - -def get_split_errs(algo): - """ - according to proportion_list, generate errs whose shape is [shop, split_data] - """ - shop_ids = [i for i in range(60) if i not in [0, 1, 40]] - shop_ids = [i for i in shop_ids if i not in [8, 11, 23, 36]] - user_list = [i for i in range(53)] - proportion_list = [100, 300, 500, 700, 900, 1000, 3000, 5000, 7000, 9000, 10000, 30000, 50000, 70000] - - # train - errs = np.zeros((len(user_list), len(proportion_list))) - for s, sid in enumerate(user_list): - # load train data - fpath = os.path.join(pfs_split_dir, "Shop{:0>2d}-train.csv".format(shop_ids[sid])) - fpath_val = os.path.join(pfs_split_dir, "Shop{:0>2d}-val.csv".format(shop_ids[sid])) - train_xs, train_ys, _, _ = load_pfs_data(fpath) - val_xs, val_ys, _, _ = load_pfs_data(fpath_val) - print(shop_ids[sid], train_xs.shape, train_ys.shape) - # data regu - # train_xs = (train_xs - train_xs.min(0)) / (train_xs.max(0) - train_xs.min(0) + 0.0001) - # val_xs = (val_xs - val_xs.min(0)) / (val_xs.max(0) - val_xs.min(0) + 0.0001) - - if algo == "lgb": - for tmp in range(len(proportion_list)): - model = lgb.LGBMModel( - boosting_type="gbdt", - num_leaves=2**7 - 1, - learning_rate=0.01, - objective="rmse", - metric="rmse", - feature_fraction=0.75, - bagging_fraction=0.75, - bagging_freq=5, - seed=1, - verbose=1, - n_estimators=100000, - ) - model_ori = joblib.load(os.path.join(model_dir, "{}_Shop{:0>2d}.out".format("lgb", shop_ids[sid]))) - para = model_ori.get_params() - para["n_estimators"] = 1000 - model.set_params(**para) - split = train_xs.shape[0] - proportion_list[tmp] - - model.fit( - train_xs[split:,], - train_ys[split:], - eval_set=[(val_xs, val_ys)], - early_stopping_rounds=50, - verbose=100, - ) - pred_ys = model.predict(val_xs) - rmse = np.sqrt(((val_ys - pred_ys) ** 2).mean()) - errs[s][tmp] = rmse - return errs - - -def get_errors(algo): - shop_ids = [i for i in range(60) if i not in [0, 1, 40]] - shop_ids = [i for i in shop_ids if i not in [8, 11, 23, 36]] - - # train - K = len(shop_ids) - - feature_weight = np.zeros(()) - errs = np.zeros((K, K)) - for s, sid in enumerate(shop_ids): - # load train data - fpath = os.path.join(pfs_split_dir, "Shop{:0>2d}-train.csv".format(sid)) - fpath_val = os.path.join(pfs_split_dir, "Shop{:0>2d}-val.csv".format(sid)) - train_xs, train_ys, features, _ = load_pfs_data(fpath) - val_xs, val_ys, _, _ = load_pfs_data(fpath_val) - print(sid, train_xs.shape, train_ys.shape) - if s == 0: - feature_weight = np.zeros((K, len(features))) - - if algo == "lgb": - model = lgb.LGBMModel( - boosting_type="gbdt", - num_leaves=2**7 - 1, - learning_rate=0.01, - objective="rmse", - metric="rmse", - feature_fraction=0.75, - bagging_fraction=0.75, - bagging_freq=5, - seed=1, - verbose=1, - n_estimators=1000, - ) - # train regu data - # train_xs = (train_xs - train_xs.min(0)) / (train_xs.max(0) - train_xs.min(0) + 0.0001) - # val_xs = (val_xs - val_xs.min(0)) / (val_xs.max(0) - val_xs.min(0) + 0.0001) - model.fit(train_xs, train_ys, eval_set=[(val_xs, val_ys)], early_stopping_rounds=100, verbose=100) - - # grid search - # para = {'learning_rate': [0.005, 0.01, 0.015], 'num_leaves' : [128, 224, 300], 'max_depth' : [50, 66, 80]} - # grid_search = GridSearchCV(model, para, scoring='neg_mean_squared_error') - # grid_result = grid_search.fit(train_xs, train_ys, eval_set=[(val_xs, val_ys)], verbose = 1000, early_stopping_rounds=1000) - # model = grid_result.best_estimator_ - - joblib.dump(model, os.path.join(model_dir, "{}_Shop{:0>2d}.out".format(algo, sid))) - - importances = model.feature_importances_ - elif algo == "ridge": - # train_xs = (train_xs - train_xs.min(0)) / (train_xs.max(0) - train_xs.min(0) + 0.0001) - model = Ridge() - - para = {"alpha": [0.01, 0.1, 0.2, 0.5, 1.0, 2.0, 5.0, 10, 20, 30]} - grid_search = GridSearchCV(model, para) - grid_result = grid_search.fit(train_xs, train_ys) - - model = grid_result.best_estimator_ - importances = model.coef_ - joblib.dump(model, os.path.join(model_dir, "{}_Shop{:0>2d}.out".format(algo, sid))) - - feature_weight[s] = importances - # leave one out test - for t, tid in enumerate(shop_ids): - # load test data - fpath = os.path.join(pfs_split_dir, "Shop{:0>2d}-val.csv".format(tid)) - test_xs, test_ys, _, _ = load_pfs_data(fpath) - # data regu - # test_xs = (test_xs - test_xs.min(0)) / (test_xs.max(0) - test_xs.min(0) + 0.0001) - - pred_ys = model.predict(test_xs) - - rmse = np.sqrt(((test_ys - pred_ys) ** 2).mean()) - - print("Shop{} --> Shop{}: {}".format(s, t, rmse)) - - errs[s][t] = rmse - np.savetxt(os.path.join(pfs_res_dir, "PFS_{}_weights.txt".format(algo)), feature_weight) - return errs - - -def plot_heatmap(mat, algo): - x_labels = [f"Model{i}" for i in range(mat.shape[1])] - y_labels = [f"Task{i}" for i in range(mat.shape[0])] - - fig = plt.figure(figsize=(10, 9)) - plt.subplot(1, 1, 1) - ax = plt.gca() - im = plt.imshow(mat) - - divider = make_axes_locatable(ax) - cax = divider.append_axes("right", size="4%", pad=0.3) - plt.colorbar(im, cax=cax) - - ax.set_xticks(range(len(x_labels))) - ax.set_xticklabels(x_labels) - - ax.set_yticks(range(len(y_labels))) - ax.set_yticklabels(y_labels) - - ax.xaxis.set_major_locator(ticker.MultipleLocator(base=5)) - ax.yaxis.set_major_locator(ticker.MultipleLocator(base=5)) - - ax.set_title(f"RMSE on Test set ({algo})") - plt.tight_layout() - plt.savefig(os.path.join(pfs_res_dir, "PFS_{}_heatmap.jpg".format(algo)), dpi=700) - - -def plot_var(errs, algo): - avg_err = [] - min_err = [] - med_err = [] - max_err = [] - std_err = [] - cnts = [] - improves = [] - - for j in range(len(errs)): - inds = [i for i in range(len(errs)) if i != j] - ys = errs[:, j][inds] - avg_err.append(np.mean(ys)) - min_err.append(np.min(ys)) - med_err.append(np.median(ys)) - max_err.append(np.max(ys)) - std_err.append(np.std(ys)) - cnts.append(np.sum(ys >= np.mean(ys))) - improves.append((np.mean(ys) - np.min(ys)) / np.mean(ys)) - - avg_err = np.array(avg_err) - min_err = np.array(min_err) - med_err = np.array(med_err) - max_err = np.array(max_err) - std_err = np.array(std_err) - cnts = np.array(cnts) - improves = np.array(improves) - - inds = np.argsort(avg_err) - - avg_err = avg_err[inds] - min_err = min_err[inds] - med_err = med_err[inds] - max_err = max_err[inds] - std_err = std_err[inds] - cnts = cnts[inds] - improves = improves[inds] - xs = list(range(len(inds))) - - fig = plt.figure(figsize=(8, 8)) - - ax = plt.subplot(3, 1, 1) - ax.plot(xs, avg_err, color="red", linestyle="solid", linewidth=2.5) - ax.plot(xs, min_err, color="blue", linestyle="dotted", linewidth=1.5) - ax.plot(xs, med_err, color="purple", linestyle="solid", linewidth=1.0) - ax.plot(xs, max_err, color="green", linestyle="dashed", linewidth=1.5) - - ax.legend(["Avg", "Min", "Median", "Max"], fontsize=14) - - ax.fill_between(xs, avg_err - std_err, avg_err + std_err, alpha=0.2) - - gap = np.mean(avg_err - min_err) - - ax.set_ylabel("RMSE", fontsize=14) - ax.set_title("RMSE of Source Models ({}) [Avg-Min:{:.3f}]".format(algo, gap), fontsize=18) - - ax = plt.subplot(3, 1, 2) - ax.bar(xs, cnts) - ax.set_ylabel("Number", fontsize=14) - ax.set_title("Number of sources above average", fontsize=18) - - ax = plt.subplot(3, 1, 3) - ax.plot(xs, improves) - ax.set_xlabel("Sorted Shop ID by Avg.Err", fontsize=14) - ax.set_ylabel("Ratio", fontsize=14) - ax.set_title("Best Improve Ratio: (Avg - Min) / Avg", fontsize=18) - - fig.tight_layout() - fig.savefig(os.path.join(pfs_res_dir, "{}-var.jpg".format(algo))) - plt.show() - - -def plot_performance(errs, weights, algo): - avg_err = [] - min_err = [] - med_err = [] - max_err = [] - std_err = [] - cnts = [] - improves = [] - - for i in range(errs.shape[0]): - inds = [j for j in range(errs.shape[1]) if j != i] - arr = errs[i][inds] - avg_err.append(np.mean(arr)) - min_err.append(np.min(arr)) - med_err.append(np.median(arr)) - max_err.append(np.max(arr)) - std_err.append(np.std(arr)) - cnts.append(np.sum(arr >= np.mean(arr))) - improves.append((np.mean(arr) - np.min(arr)) / np.mean(arr)) - - avg_err = np.array(avg_err) - min_err = np.array(min_err) - med_err = np.array(med_err) - max_err = np.array(max_err) - std_err = np.array(std_err) - cnts = np.array(cnts) - improves = np.array(improves) - - inds = np.argsort(avg_err) - avg_err = avg_err[inds] - min_err = min_err[inds] - med_err = med_err[inds] - max_err = max_err[inds] - std_err = std_err[inds] - cnts = cnts[inds] - improves = improves[inds] - xs = list(range(len(inds))) - - fig = plt.figure(figsize=(12, 9)) - - ax = plt.subplot(2, 2, 1) - ax.plot(xs, avg_err, color="red", linestyle="solid", linewidth=2.5) - ax.plot(xs, min_err, color="blue", linestyle="dotted", linewidth=1.5) - ax.plot(xs, med_err, color="purple", linestyle="solid", linewidth=1.0) - ax.plot(xs, max_err, color="green", linestyle="dashed", linewidth=1.5) - - ax.legend(["Avg", "Min", "Median", "Max"], fontsize=14) - - ax.fill_between(xs, avg_err - std_err, avg_err + std_err, alpha=0.2) - - gap = np.mean(avg_err - min_err) - - ax.set_ylabel("RMSE", fontsize=14) - ax.set_title("RMSE of Source Models ({}) [Avg-Min:{:.3f}]".format(algo, gap), fontsize=18) - - ax = plt.subplot(2, 2, 2) - ax.bar(xs, cnts) - ax.set_ylabel("Number", fontsize=14) - ax.set_title("Number of sources above average", fontsize=18) - - ax = plt.subplot(2, 2, 3) - ax.plot(xs, improves) - ax.set_xlabel("Sorted Shop ID by Avg.Err", fontsize=14) - ax.set_ylabel("Ratio", fontsize=14) - ax.set_title("Best Improve Ratio: (Avg - Min) / Avg", fontsize=18) - - ax = plt.subplot(2, 2, 4) - weights = np.mean(weights, axis=0) / weights.sum() - weights = np.sort(weights) - xs = list(range(len(weights))) - ax.plot(xs, weights) - # ax.set_xlabel("Sorted Feature ID by Avg.Feature_Importance", fontsize=14) - ax.set_ylabel("Proportion", fontsize=14) - ax.set_title("Avg.Feature_Importances", fontsize=18) - - fig.tight_layout() - fig.savefig(os.path.join(pfs_res_dir, "PFS_{}_performance.png".format(algo)), dpi=700) - # fig.savefig(f"{algo}_performance.png", dpi=700) - plt.show() - - -if __name__ == "__main__": - # for algo in ["ridge", "lgb", "xgboost_125"]: - for algo in ["ridge"]: - fpath = os.path.join(pfs_res_dir, "{}_errs.pkl".format(algo)) - if os.path.exists(fpath): - with open(fpath, "rb") as fr: - errs = pickle.load(fr) - else: - errs = get_errors(algo=algo) - with open(fpath, "wb") as fw: - pickle.dump(errs, fw) - - index = ["Source{}".format(k) for k in range(len(errs))] - columns = ["Target{}".format(k) for k in range(len(errs[0]))] - df = pd.DataFrame(errs, index=index, columns=columns) - - fpath = os.path.join(pfs_res_dir, "PFS_{}_errs.txt".format(algo)) - # df.to_csv(fpath, index=True) - np.savetxt(fpath, errs.T) - - # plot_var(errs, algo) - plot_heatmap(errs.T, algo) - weights = np.loadtxt(os.path.join(pfs_res_dir, "PFS_{}_weights.txt".format(algo))) - plot_performance(errs.T, weights, algo) diff --git a/examples/dataset_pfs_workflow/pfs/split_data.py b/examples/dataset_pfs_workflow/pfs/split_data.py deleted file mode 100644 index 2249334..0000000 --- a/examples/dataset_pfs_workflow/pfs/split_data.py +++ /dev/null @@ -1,384 +0,0 @@ -import os -import pickle -import pandas as pd -import numpy as np -from itertools import product -from sklearn.preprocessing import LabelEncoder -from sklearn.preprocessing import MinMaxScaler - -import calendar - -from .paths import pfs_data_dir -from .paths import pfs_split_dir - - -def feature_engineering(): - # read data - sales = pd.read_csv(os.path.join(pfs_data_dir, "sales_train.csv")) - shops = pd.read_csv(os.path.join(pfs_data_dir, "shops.csv")) - items = pd.read_csv(os.path.join(pfs_data_dir, "items.csv")) - item_cats = pd.read_csv(os.path.join(pfs_data_dir, "item_categories.csv")) - test = pd.read_csv(os.path.join(pfs_data_dir, "test.csv")) - - # remove outliers - train = sales[(sales.item_price < 10000) & (sales.item_price > 0)] - train = train[sales.item_cnt_day < 1001] - - print(train.shape, sales.shape) - print(train.tail(5)) - print(sales.tail(5)) - - # combine shops with different id but the same name - train.loc[train.shop_id == 0, "shop_id"] = 57 - test.loc[test.shop_id == 0, "shop_id"] = 57 - - train.loc[train.shop_id == 1, "shop_id"] = 58 - test.loc[test.shop_id == 1, "shop_id"] = 58 - - train.loc[train.shop_id == 40, "shop_id"] = 39 - test.loc[test.shop_id == 40, "shop_id"] = 39 - - # obtain shop_id, item_id, month information - index_cols = ["shop_id", "item_id", "date_block_num"] - - df = [] - for block_num in train["date_block_num"].unique(): - cur_shops = train.loc[sales["date_block_num"] == block_num, "shop_id"].unique() - cur_items = train.loc[sales["date_block_num"] == block_num, "item_id"].unique() - df.append(np.array(list(product(*[cur_shops, cur_items, [block_num]])), dtype="int32")) - - df = pd.DataFrame(np.vstack(df), columns=index_cols, dtype=np.int32) - print("df.shape: ", df.shape) - print(df.head(5)) - - # Add month sales - group = train.groupby(["date_block_num", "shop_id", "item_id"]).agg({"item_cnt_day": ["sum"]}) - group.columns = ["item_cnt_month"] - group.reset_index(inplace=True) - print("group.shape: ", group.shape) - print(group.head(5)) - - df = pd.merge(df, group, on=index_cols, how="left") - df["item_cnt_month"] = ( - df["item_cnt_month"] - .fillna(0) - .astype(np.float32) - # df['item_cnt_month'].fillna(0).clip(0, 20).astype(np.float32) - ) - - # fill test data - test["date_block_num"] = 34 - test["date_block_num"] = test["date_block_num"].astype(np.int8) - test["shop_id"] = test["shop_id"].astype(np.int8) - test["item_id"] = test["item_id"].astype(np.int16) - df = pd.concat([df, test], ignore_index=True, sort=False, keys=index_cols) - df.fillna(0, inplace=True) - - # shop location features - shops["city"] = shops["shop_name"].apply(lambda x: x.split()[0].lower()) - shops.loc[shops.city == "!якутск", "city"] = "якутск" - shops["city_code"] = LabelEncoder().fit_transform(shops["city"]) - - coords = dict() - coords["якутск"] = (62.028098, 129.732555, 4) - coords["адыгея"] = (44.609764, 40.100516, 3) - coords["балашиха"] = (55.8094500, 37.9580600, 1) - coords["волжский"] = (53.4305800, 50.1190000, 3) - coords["вологда"] = (59.2239000, 39.8839800, 2) - coords["воронеж"] = (51.6720400, 39.1843000, 3) - coords["выездная"] = (0, 0, 0) - coords["жуковский"] = (55.5952800, 38.1202800, 1) - coords["интернет-магазин"] = (0, 0, 0) - coords["казань"] = (55.7887400, 49.1221400, 4) - coords["калуга"] = (54.5293000, 36.2754200, 4) - coords["коломна"] = (55.0794400, 38.7783300, 4) - coords["красноярск"] = (56.0183900, 92.8671700, 4) - coords["курск"] = (51.7373300, 36.1873500, 3) - coords["москва"] = (55.7522200, 37.6155600, 1) - coords["мытищи"] = (55.9116300, 37.7307600, 1) - coords["н.новгород"] = (56.3286700, 44.0020500, 4) - coords["новосибирск"] = (55.0415000, 82.9346000, 4) - coords["омск"] = (54.9924400, 73.3685900, 4) - coords["ростовнадону"] = (47.2313500, 39.7232800, 3) - coords["спб"] = (59.9386300, 30.3141300, 2) - coords["самара"] = (53.2000700, 50.1500000, 4) - coords["сергиев"] = (56.3000000, 38.1333300, 4) - coords["сургут"] = (61.2500000, 73.4166700, 4) - coords["томск"] = (56.4977100, 84.9743700, 4) - coords["тюмень"] = (57.1522200, 65.5272200, 4) - coords["уфа"] = (54.7430600, 55.9677900, 4) - coords["химки"] = (55.8970400, 37.4296900, 1) - coords["цифровой"] = (0, 0, 0) - coords["чехов"] = (55.1477000, 37.4772800, 4) - coords["ярославль"] = (57.6298700, 39.8736800, 2) - - shops["city_coord_1"] = shops["city"].apply(lambda x: coords[x][0]) - shops["city_coord_2"] = shops["city"].apply(lambda x: coords[x][1]) - shops["country_part"] = shops["city"].apply(lambda x: coords[x][2]) - - shops = shops[["shop_id", "city_code", "city_coord_1", "city_coord_2", "country_part"]] - - df = pd.merge(df, shops, on=["shop_id"], how="left") - - # process items category name - map_dict = { - "Чистые носители (штучные)": "Чистые носители", - "Чистые носители (шпиль)": "Чистые носители", - "PC ": "Аксессуары", - "Служебные": "Служебные ", - } - - items = pd.merge(items, item_cats, on="item_category_id") - - items["item_category"] = items["item_category_name"].apply(lambda x: x.split("-")[0]) - items["item_category"] = items["item_category"].apply(lambda x: map_dict[x] if x in map_dict.keys() else x) - items["item_category_common"] = LabelEncoder().fit_transform(items["item_category"]) - - items["item_category_code"] = LabelEncoder().fit_transform(items["item_category_name"]) - items = items[["item_id", "item_category_common", "item_category_code"]] - - df = pd.merge(df, items, on=["item_id"], how="left") - - # Weekends count / number of days in a month - def count_days(date_block_num): - year = 2013 + date_block_num // 12 - month = 1 + date_block_num % 12 - weeknd_count = len([1 for i in calendar.monthcalendar(year, month) if i[6] != 0]) - days_in_month = calendar.monthrange(year, month)[1] - return weeknd_count, days_in_month, month - - map_dict = {i: count_days(i) for i in range(35)} - - df["weeknd_count"] = df["date_block_num"].apply(lambda x: map_dict[x][0]) - df["days_in_month"] = df["date_block_num"].apply(lambda x: map_dict[x][1]) - - # Interation features: Item is new / Item was bought in this shop before - first_item_block = df.groupby(["item_id"])["date_block_num"].min().reset_index() - first_item_block["item_first_interaction"] = 1 - - first_shop_item_buy_block = ( - df[df["date_block_num"] > 0].groupby(["shop_id", "item_id"])["date_block_num"].min().reset_index() - ) - first_shop_item_buy_block["first_date_block_num"] = first_shop_item_buy_block["date_block_num"] - - df = pd.merge( - df, - first_item_block[["item_id", "date_block_num", "item_first_interaction"]], - on=["item_id", "date_block_num"], - how="left", - ) - df = pd.merge( - df, - first_shop_item_buy_block[["item_id", "shop_id", "first_date_block_num"]], - on=["item_id", "shop_id"], - how="left", - ) - - df["first_date_block_num"].fillna(100, inplace=True) - df["shop_item_sold_before"] = (df["first_date_block_num"] < df["date_block_num"]).astype("int8") - df.drop(["first_date_block_num"], axis=1, inplace=True) - - df["item_first_interaction"].fillna(0, inplace=True) - df["shop_item_sold_before"].fillna(0, inplace=True) - - df["item_first_interaction"] = df["item_first_interaction"].astype("int8") - df["shop_item_sold_before"] = df["shop_item_sold_before"].astype("int8") - - def lag_feature(df, lags, col): - tmp = df[["date_block_num", "shop_id", "item_id", col]] - for i in lags: - shifted = tmp.copy() - shifted.columns = ["date_block_num", "shop_id", "item_id", col + "_lag_" + str(i)] - shifted["date_block_num"] += i - df = pd.merge(df, shifted, on=["date_block_num", "shop_id", "item_id"], how="left") - lag_name = col + "_lag_" + str(i) - df[lag_name] = df[lag_name].astype("float32") - return df - - df = lag_feature(df, [1, 2, 3], "item_cnt_month") - - index_cols = ["shop_id", "item_id", "date_block_num"] - group = ( - train.groupby(index_cols)["item_price"] - .mean() - .reset_index() - .rename(columns={"item_price": "avg_shop_price"}, errors="raise") - ) - df = pd.merge(df, group, on=index_cols, how="left") - - df["avg_shop_price"] = df["avg_shop_price"].fillna(0).astype(np.float32) - - index_cols = ["item_id", "date_block_num"] - group = ( - train.groupby(["date_block_num", "item_id"])["item_price"] - .mean() - .reset_index() - .rename(columns={"item_price": "avg_item_price"}, errors="raise") - ) - - df = pd.merge(df, group, on=index_cols, how="left") - df["avg_item_price"] = df["avg_item_price"].fillna(0).astype(np.float32) - - df["item_shop_price_avg"] = (df["avg_shop_price"] - df["avg_item_price"]) / df["avg_item_price"] - df["item_shop_price_avg"].fillna(0, inplace=True) - - df = lag_feature(df, [1, 2, 3], "item_shop_price_avg") - df.drop(["avg_shop_price", "avg_item_price", "item_shop_price_avg"], axis=1, inplace=True) - - item_id_target_mean = ( - df.groupby(["date_block_num", "item_id"])["item_cnt_month"] - .mean() - .reset_index() - .rename(columns={"item_cnt_month": "item_target_enc"}, errors="raise") - ) - df = pd.merge(df, item_id_target_mean, on=["date_block_num", "item_id"], how="left") - - df["item_target_enc"] = df["item_target_enc"].fillna(0).astype(np.float32) - - df = lag_feature(df, [1, 2, 3], "item_target_enc") - df.drop(["item_target_enc"], axis=1, inplace=True) - - item_id_target_mean = ( - df.groupby(["date_block_num", "item_id", "city_code"])["item_cnt_month"] - .mean() - .reset_index() - .rename(columns={"item_cnt_month": "item_loc_target_enc"}, errors="raise") - ) - df = pd.merge(df, item_id_target_mean, on=["date_block_num", "item_id", "city_code"], how="left") - - df["item_loc_target_enc"] = df["item_loc_target_enc"].fillna(0).astype(np.float32) - - df = lag_feature(df, [1, 2, 3], "item_loc_target_enc") - df.drop(["item_loc_target_enc"], axis=1, inplace=True) - - item_id_target_mean = ( - df.groupby(["date_block_num", "item_id", "shop_id"])["item_cnt_month"] - .mean() - .reset_index() - .rename(columns={"item_cnt_month": "item_shop_target_enc"}, errors="raise") - ) - - df = pd.merge(df, item_id_target_mean, on=["date_block_num", "item_id", "shop_id"], how="left") - - df["item_shop_target_enc"] = df["item_shop_target_enc"].fillna(0).astype(np.float32) - - df = lag_feature(df, [1, 2, 3], "item_shop_target_enc") - df.drop(["item_shop_target_enc"], axis=1, inplace=True) - - item_id_target_mean = ( - df[df["item_first_interaction"] == 1] - .groupby(["date_block_num", "item_category_code"])["item_cnt_month"] - .mean() - .reset_index() - .rename(columns={"item_cnt_month": "new_item_cat_avg"}, errors="raise") - ) - - df = pd.merge(df, item_id_target_mean, on=["date_block_num", "item_category_code"], how="left") - - df["new_item_cat_avg"] = df["new_item_cat_avg"].fillna(0).astype(np.float32) - - df = lag_feature(df, [1, 2, 3], "new_item_cat_avg") - df.drop(["new_item_cat_avg"], axis=1, inplace=True) - - # For new items add avg category sales in a separate store for last 3 months - item_id_target_mean = ( - df[df["item_first_interaction"] == 1] - .groupby(["date_block_num", "item_category_code", "shop_id"])["item_cnt_month"] - .mean() - .reset_index() - .rename(columns={"item_cnt_month": "new_item_shop_cat_avg"}, errors="raise") - ) - - df = pd.merge(df, item_id_target_mean, on=["date_block_num", "item_category_code", "shop_id"], how="left") - - df["new_item_shop_cat_avg"] = df["new_item_shop_cat_avg"].fillna(0).astype(np.float32) - - df = lag_feature(df, [1, 2, 3], "new_item_shop_cat_avg") - df.drop(["new_item_shop_cat_avg"], axis=1, inplace=True) - - def lag_feature_adv(df, lags, col): - tmp = df[["date_block_num", "shop_id", "item_id", col]] - for i in lags: - shifted = tmp.copy() - shifted.columns = ["date_block_num", "shop_id", "item_id", col + "_lag_" + str(i) + "_adv"] - shifted["date_block_num"] += i - shifted["item_id"] -= 1 - df = pd.merge(df, shifted, on=["date_block_num", "shop_id", "item_id"], how="left") - lag_name = col + "_lag_" + str(i) + "_adv" - df[lag_name] = df[lag_name].astype("float32") - return df - - df = lag_feature_adv(df, [1, 2, 3], "item_cnt_month") - - # df.fillna(0, inplace=True) - df = df[(df["date_block_num"] > 2)] - - df.drop(["ID"], axis=1, inplace=True, errors="ignore") - - print(df.shape) - print(df.columns) - print(df.head(10)) - - fill_dict = {} - for col in df.columns: - fill_dict[col] = df[col].mean() - - group_df = df.groupby(["shop_id"]) - - for shop_id, shop_df in group_df: - # remove data of data_block_num=34, i.e., 2015.11 - # this is test set in competition - shop_df = shop_df[shop_df.date_block_num <= 33] - - # fill the null - cols = shop_df.isnull().any() - idx = list(cols[cols.values].index) - shop_df[idx] = shop_df.groupby("item_id", sort=False)[idx].apply( - lambda x: x.fillna(method="ffill").fillna(method="bfill") - ) - shop_df[idx] = shop_df[idx].fillna(shop_df[idx].mean()) - for col in idx: - shop_df[col] = shop_df[col].fillna(fill_dict[col]) - - # min-max scale - drop_fea_list = [ - "shop_id", - "city_code", - "city_coord_1", - "city_coord_2", - "country_part", - "item_cnt_month", - "date_block_num", - ] - fea_list = [col for col in shop_df.columns if col not in drop_fea_list] - mms = MinMaxScaler() - shop_df[fea_list] = mms.fit_transform(shop_df[fea_list]) - shop_df = shop_df[fea_list + ["item_cnt_month", "date_block_num"]] - - date_split = 29 - split = False - - while split is False: - df1 = shop_df[shop_df["date_block_num"] <= date_split] - - df2 = shop_df[shop_df["date_block_num"] > date_split] - - if df2.shape[0] > 0 and df1.shape[0] > 0: - split = True - else: - date_split -= 1 - - if date_split < 0: - break - - if split is True: - print("ShopID:{}, split block:{}".format(shop_id, date_split)) - print(df1.shape, df2.shape) - - # save train csv - fpath = os.path.join(pfs_split_dir, "Shop{:0>2d}-train.csv".format(shop_id)) - df1.to_csv(fpath, index=False) - - # save val csv - fpath = os.path.join(pfs_split_dir, "Shop{:0>2d}-val.csv".format(shop_id)) - df2.to_csv(fpath, index=False) diff --git a/examples/dataset_pfs_workflow/upload.py b/examples/dataset_pfs_workflow/upload.py deleted file mode 100644 index c9da3db..0000000 --- a/examples/dataset_pfs_workflow/upload.py +++ /dev/null @@ -1,90 +0,0 @@ -import hashlib -import requests -import os -import random -import json -import time -from tqdm import tqdm - -email = "liujd@lamda.nju.edu.cn" -password = hashlib.md5(b"liujdlamda").hexdigest() -login_url = "http://210.28.134.201:8089/auth/login" -submit_url = "http://210.28.134.201:8089/user/add_learnware" -all_data_type = ["Table", "Image", "Video", "Text", "Audio"] -all_task_type = [ - "Classification", - "Regression", - "Clustering", - "Feature Extraction", - "Generation", - "Segmentation", - "Object Detection", -] -all_device_type = ["CPU", "GPU"] -all_scenario = [ - "Business", - "Financial", - "Health", - "Politics", - "Computer", - "Internet", - "Traffic", - "Nature", - "Fashion", - "Industry", - "Agriculture", - "Education", - "Entertainment", - "Architecture", -] - -# ############### -# 以上部分无需修改 # -# ############### - - -def main(): - session = requests.Session() - res = session.post(login_url, json={"email": email, "password": password}) - - # /path/to/learnware/folder 修改为学件文件夹地址 - learnware_pool = os.listdir(os.path.join(os.path.abspath("."), "learnware_pool")) - - for learnware in learnware_pool: - # 修改相应的语义规约 - name = "PFS_Shop" + "%02d" % int(learnware.split(".")[0].split("_")[1]) - name = name + "_" + time.strftime("%Y%m%d%H%M%S", time.localtime()) - description = f"This is a description of learnware {name}" - data = random.choice(all_data_type) - task = random.choice(all_task_type) - device = list(set(random.choices(all_device_type, k=2))) - scenario = list(set(random.choices(all_scenario, k=5))) - semantic_specification = { - "Data": {"Values": ["Table"], "Type": "Class"}, - "Library": {"Values": ["Scikit-learn"], "Type": "Class"}, - "Task": {"Values": ["Regression"], "Type": "Class"}, - "Scenario": {"Values": ["Business"], "Type": "Tag"}, - "Description": { - "Values": "A sales-forecasting model from Predict Future Sales Competition on Kaggle", - "Type": "String", - }, - "Name": {"Values": name, "Type": "String"}, - "License": {"Values": ["MIT"], "Type": "Class"}, - } - res = session.post( - submit_url, - data={ - "semantic_specification": json.dumps(semantic_specification), - }, - files={ - "learnware_file": open( - os.path.join(os.path.abspath("."), "learnware_pool", learnware), - "rb", - ) - }, - ) - assert json.loads(res.text)["code"] == 0, "Upload error" - - -if __name__ == "__main__": - main() From 8a4db13d501310fca6f0fc77a582083ac95f70ba Mon Sep 17 00:00:00 2001 From: Gene Date: Thu, 11 Jan 2024 22:24:05 +0800 Subject: [PATCH 55/56] [MNT] solve flake8 error in examples --- examples/dataset_image_workflow/utils.py | 6 +----- examples/dataset_image_workflow/workflow.py | 6 +++--- examples/dataset_text_workflow/workflow.py | 6 +++--- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/examples/dataset_image_workflow/utils.py b/examples/dataset_image_workflow/utils.py index 1c9625d..1f7f209 100644 --- a/examples/dataset_image_workflow/utils.py +++ b/examples/dataset_image_workflow/utils.py @@ -9,19 +9,15 @@ from learnware.utils import choose_device @torch.no_grad() def evaluate(model, evaluate_set: Dataset, device=None, distribution=True): device = choose_device(0) if device is None else device - if isinstance(model, nn.Module): model.eval() - mapping = lambda m, x: m(x) - else: - mapping = lambda m, x: m.predict(x) criterion = nn.CrossEntropyLoss(reduction="sum") total, correct, loss = 0, 0, torch.as_tensor(0.0, dtype=torch.float32, device=device) dataloader = DataLoader(evaluate_set, batch_size=1024, shuffle=True) for i, (X, y) in enumerate(dataloader): X, y = X.to(device), y.to(device) - out = mapping(model, X) + out = model(X) if isinstance(model, nn.Module) else model.predict(X) if not torch.is_tensor(out): out = torch.from_numpy(out).to(device) diff --git a/examples/dataset_image_workflow/workflow.py b/examples/dataset_image_workflow/workflow.py index dbe293a..b099f0f 100644 --- a/examples/dataset_image_workflow/workflow.py +++ b/examples/dataset_image_workflow/workflow.py @@ -49,7 +49,7 @@ class ImageDatasetWorkflow: plt.xlabel("Amout of Labeled User Data", fontsize=14) plt.ylabel("1 - Accuracy", fontsize=14) - plt.title(f"Results on Image Experimental Scenario", fontsize=16) + plt.title("Results on Image Experimental Scenario", fontsize=16) plt.legend(fontsize=14) plt.tight_layout() plt.savefig(os.path.join(self.fig_path, "image_labeled_curves.svg"), bbox_inches="tight", dpi=700) @@ -61,7 +61,7 @@ class ImageDatasetWorkflow: self.user_semantic = client.get_semantic_specification(self.image_benchmark.learnware_ids[0]) self.user_semantic["Name"]["Values"] = "" - if len(self.image_market) == 0 or rebuild == True: + if len(self.image_market) == 0 or rebuild is True: for learnware_id in self.image_benchmark.learnware_ids: with tempfile.TemporaryDirectory(prefix="image_benchmark_") as tempdir: zip_path = os.path.join(tempdir, f"{learnware_id}.zip") @@ -71,7 +71,7 @@ class ImageDatasetWorkflow: client.download_learnware(learnware_id, zip_path) self.image_market.add_learnware(zip_path, semantic_spec) break - except: + except Exception: time.sleep(1) continue diff --git a/examples/dataset_text_workflow/workflow.py b/examples/dataset_text_workflow/workflow.py index 5a03a2f..f425fdb 100644 --- a/examples/dataset_text_workflow/workflow.py +++ b/examples/dataset_text_workflow/workflow.py @@ -64,7 +64,7 @@ class TextDatasetWorkflow: plt.xlabel("Amout of Labeled User Data", fontsize=14) plt.ylabel("1 - Accuracy", fontsize=14) - plt.title(f"Results on Text Experimental Scenario", fontsize=16) + plt.title("Results on Text Experimental Scenario", fontsize=16) plt.legend(fontsize=14) plt.tight_layout() plt.savefig(os.path.join(self.fig_path, "text_labeled_curves.svg"), bbox_inches="tight", dpi=700) @@ -76,7 +76,7 @@ class TextDatasetWorkflow: self.user_semantic = client.get_semantic_specification(self.text_benchmark.learnware_ids[0]) self.user_semantic["Name"]["Values"] = "" - if len(self.text_market) == 0 or rebuild == True: + if len(self.text_market) == 0 or rebuild is True: for learnware_id in self.text_benchmark.learnware_ids: with tempfile.TemporaryDirectory(prefix="text_benchmark_") as tempdir: zip_path = os.path.join(tempdir, f"{learnware_id}.zip") @@ -86,7 +86,7 @@ class TextDatasetWorkflow: client.download_learnware(learnware_id, zip_path) self.text_market.add_learnware(zip_path, semantic_spec) break - except: + except Exception: time.sleep(1) continue From 355c2cb4c3b4b6898f2b173220fefd81760f2ca4 Mon Sep 17 00:00:00 2001 From: Gene Date: Thu, 11 Jan 2024 22:25:47 +0800 Subject: [PATCH 56/56] [MNT] init flake8 configuration --- .flake8 | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .flake8 diff --git a/.flake8 b/.flake8 new file mode 100644 index 0000000..b91a117 --- /dev/null +++ b/.flake8 @@ -0,0 +1,7 @@ +[flake8] +max-line-length = 120 +ignore = + E203,E501,F841,W503 +per-file-ignores = + __init__.py: F401 + ./learnware/utils/import_utils.py: F401 \ No newline at end of file