From 29a41715655e9f29c5e4eca6063f070285d4b56a Mon Sep 17 00:00:00 2001 From: Lily Wang Date: Mon, 2 Sep 2024 16:20:57 +1000 Subject: [PATCH 01/15] initial cleanup --- openff/nagl/training/metrics.py | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/openff/nagl/training/metrics.py b/openff/nagl/training/metrics.py index 3ac3094..67d4032 100644 --- a/openff/nagl/training/metrics.py +++ b/openff/nagl/training/metrics.py @@ -1,26 +1,22 @@ +""" +Metrics for evaluating loss +""" import abc import typing import torch -from openff.nagl._base.metaregistry import create_registry_metaclass from openff.nagl._base.base import ImmutableModel -try: - from pydantic.v1.main import ModelMetaclass -except ImportError: - from pydantic.main import ModelMetaclass if typing.TYPE_CHECKING: import torch - from openff.nagl.molecule._dgl.batch import DGLMoleculeBatch - from openff.nagl.molecule._dgl.molecule import DGLMolecule - -# class MetricMeta(ModelMetaclass, abc.ABCMeta, create_registry_metaclass("name")): -# pass class BaseMetric(ImmutableModel, abc.ABC): + """ + Base class for metrics to evaluate loss between predicted and expected values. + """ name: typing.Literal[""] def __call__( self, @@ -44,7 +40,6 @@ class RMSEMetric(BaseMetric): def compute(self, predicted_values, expected_values): loss = torch.nn.MSELoss() return torch.sqrt(loss(predicted_values, expected_values)) - # return torch.sqrt(torch.mean((predicted_values - expected_values) ** 2)) class MSEMetric(BaseMetric): @@ -53,7 +48,6 @@ class MSEMetric(BaseMetric): def compute(self, predicted_values, expected_values): loss = torch.nn.MSELoss() return loss(predicted_values, expected_values) - # return torch.mean((predicted_values - expected_values) ** 2) class MAEMetric(BaseMetric): @@ -62,7 +56,6 @@ class MAEMetric(BaseMetric): def compute(self, predicted_values, expected_values): loss = torch.nn.L1Loss() return loss(predicted_values, expected_values) - # return torch.mean(torch.abs(predicted_values - expected_values)) MetricType = typing.Union[RMSEMetric, MSEMetric, MAEMetric] @@ -77,9 +70,14 @@ def compute(self, predicted_values, expected_values): """ -def get_metric_type(metric): +def get_metric_type(metric: typing.Union[MetricType, str]) -> MetricType: + """ + Get the metric class instance from a string or class. + """ if isinstance(metric, BaseMetric): return metric elif isinstance(metric, str): metric = metric.lower() - return METRICS[metric]() \ No newline at end of file + return METRICS[metric]() + else: + raise ValueError(f"Unknown metric type: {metric}") From c0bf491d02413bdccc94d7e4d2c44cf826605c67 Mon Sep 17 00:00:00 2001 From: Lily Wang Date: Mon, 2 Sep 2024 16:22:37 +1000 Subject: [PATCH 02/15] remove reporting --- openff/nagl/tests/training/test_reporting.py | 103 ------- openff/nagl/training/loss.py | 173 ----------- openff/nagl/training/reporting.py | 301 ------------------- 3 files changed, 577 deletions(-) delete mode 100644 openff/nagl/tests/training/test_reporting.py delete mode 100644 openff/nagl/training/reporting.py diff --git a/openff/nagl/tests/training/test_reporting.py b/openff/nagl/tests/training/test_reporting.py deleted file mode 100644 index fcbb82e..0000000 --- a/openff/nagl/tests/training/test_reporting.py +++ /dev/null @@ -1,103 +0,0 @@ -import pathlib -import pytest - -import torch - -from openff.nagl.molecule._dgl.molecule import DGLMolecule -from openff.nagl.training.reporting import ( - _draw_molecule, - _draw_molecule_with_atom_labels, - _generate_jinja_dicts_per_atom, - _generate_jinja_dicts_per_molecule, - create_atom_label_report, - create_molecule_label_report, -) - -pytest.importorskip("dgl") -pytest.importorskip("rdkit") - -@pytest.fixture() -def hbr(): - from openff.toolkit import Molecule - return Molecule.from_smiles("Br") - -@pytest.fixture() -def dgl_hbr(hbr): - return DGLMolecule.from_openff( - hbr, - atom_features=[], - bond_features=[], - ) - -def test_draw_molecule_with_atom_labels(): - from openff.toolkit import Molecule - - mol = Molecule.from_smiles("[Cl-]") - svg = _draw_molecule_with_atom_labels( - mol, torch.tensor([1.0]), torch.tensor([0.0]) - ) - - assert "svg" in svg - - -def test_generate_jinja_dicts_per_atom(hbr, dgl_hbr): - tensor = torch.tensor([1.0, 0.0]) - - jinja_dicts = _generate_jinja_dicts_per_atom( - molecules=[hbr, dgl_hbr], - predicted_labels=[tensor, tensor], - reference_labels=[tensor, tensor], - metrics=["rmse"], - highlight_outliers=True, - outlier_threshold=0.5, - ) - - assert len(jinja_dicts) == 2 - for item in jinja_dicts: - assert "img" in item - assert "metrics" in item - assert "RMSE" in item["metrics"] - - -def test_create_atom_label_report(tmpdir, hbr, dgl_hbr): - tensor = torch.tensor([1.0, 0.0]) - - with tmpdir.as_cwd(): - create_atom_label_report( - molecules=[hbr, dgl_hbr], - predicted_labels=[tensor, tensor], - reference_labels=[tensor, tensor], - metrics=["rmse"], - rank_by="rmse", - output_path="report.html", - highlight_outliers=True, - outlier_threshold=0.5, - top_n_entries=2, - bottom_n_entries=1, - ) - - output = pathlib.Path("report.html") - assert output.exists() - - contents = output.read_text() - assert "Top 2 Structures" in contents - assert "Bottom 1 Structures" in contents - - -def test_create_molecule_label_report(tmpdir, hbr, dgl_hbr): - with tmpdir.as_cwd(): - create_molecule_label_report( - molecules=[hbr, dgl_hbr], - losses=[torch.tensor([1.0]), torch.tensor([0.0])], - metric_name="rmse", - output_path="report.html", - top_n_entries=1, - bottom_n_entries=2, - ) - - output = pathlib.Path("report.html") - assert output.exists() - - contents = output.read_text() - assert "Top 1 Structures" in contents - assert "Bottom 2 Structures" in contents \ No newline at end of file diff --git a/openff/nagl/training/loss.py b/openff/nagl/training/loss.py index ecaccc7..00aebc3 100644 --- a/openff/nagl/training/loss.py +++ b/openff/nagl/training/loss.py @@ -226,46 +226,6 @@ def evaluate_target( ) -> "torch.Tensor": return predictions[self.prediction_label] - - def report_artifact( - self, - molecules: DGLMoleculeOrBatch, - labels: typing.Dict[str, torch.Tensor], - predictions: typing.Dict[str, torch.Tensor], - output_directory: pathlib.Path, - top_n_entries: int = 100, - bottom_n_entries: int = 100, - ) -> pathlib.Path: - from openff.nagl.molecule._dgl.batch import DGLMoleculeBatch - from openff.nagl.training.reporting import create_atom_label_report - - n_atoms = tuple(map(int, molecules.n_atoms_per_molecule)) - - if isinstance(molecules, DGLMoleculeBatch): - molecules = molecules.unbatch() - else: - molecules = [molecules] - - predictions = predictions[self.prediction_label].squeeze() - predictions = torch.split(predictions, n_atoms) - labels = labels[self.target_label].squeeze() - labels = torch.split(labels, n_atoms) - - report_path = output_directory / f"{self.target_label}.html" - create_atom_label_report( - molecules=molecules, - predicted_labels=predictions, - reference_labels=labels, - metrics=[self.metric], - rank_by=self.metric, - output_path=report_path, - top_n_entries=top_n_entries, - bottom_n_entries=bottom_n_entries, - highlight_outliers=True, - outlier_threshold=0.5, - ) - return report_path - @@ -375,73 +335,7 @@ def evaluate_target( return torch.cat(dipoles) - def report_artifact( - self, - molecules: DGLMoleculeOrBatch, - labels: typing.Dict[str, torch.Tensor], - predictions: typing.Dict[str, torch.Tensor], - output_directory: pathlib.Path, - top_n_entries: int = 100, - bottom_n_entries: int = 100, - ) -> pathlib.Path: - from openff.nagl.molecule._dgl.batch import DGLMoleculeBatch - from openff.nagl.training.reporting import create_molecule_label_report - - if isinstance(molecules, DGLMoleculeBatch): - molecules = molecules.unbatch() - else: - molecules = [molecules] - - conformations, n_conformations, all_n_atoms, all_charges = self._prepare_inputs( - molecules, labels, predictions - ) - ref = labels[self.target_label] - - losses = [] - counter = 0 - dipole_counter = 0 - for i, n_conf in enumerate(n_conformations): - mol_charge = all_charges[i] - n_atoms = all_n_atoms[i] - - atom_increment = n_conf * n_atoms - mol_conformation = conformations[counter:counter+atom_increment] - - mol_predictions = { - self.charge_label: mol_charge, - } - - dipole_increment = n_conf * 3 - mol_ref = ref[dipole_counter:dipole_counter+dipole_increment] - mol_labels = { - self.conformation_column: mol_conformation, - self.n_conformation_column: torch.tensor([n_conf]), - self.target_label: mol_ref - } - loss = self._evaluate_loss( - molecules[i], - mol_labels, - mol_predictions, - {} - ) - losses.append(loss) - - counter += atom_increment - dipole_counter += dipole_increment - - - report_path = output_directory / f"{self.target_label}.html" - create_molecule_label_report( - molecules=molecules, - losses=torch.tensor(losses), - metric_name=self.metric.name, - output_path=report_path, - top_n_entries=top_n_entries, - bottom_n_entries=bottom_n_entries, - ) - return report_path - class MultipleESPTarget(_BaseTarget): """A target that is evaluated on the electrostatic potential of a molecule.""" name: typing.Literal["multiple_esps"] = "multiple_esps" @@ -512,73 +406,6 @@ def evaluate_target( esp_counter += n_grid return torch.cat(esps) - - def report_artifact( - self, - molecules: DGLMoleculeOrBatch, - labels: typing.Dict[str, torch.Tensor], - predictions: typing.Dict[str, torch.Tensor], - output_directory: pathlib.Path, - top_n_entries: int = 100, - bottom_n_entries: int = 100, - ) -> pathlib.Path: - from openff.nagl.molecule._dgl.batch import DGLMoleculeBatch - from openff.nagl.training.reporting import create_molecule_label_report - - if isinstance(molecules, DGLMoleculeBatch): - molecules = molecules.unbatch() - else: - molecules = [molecules] - - all_n_atoms, all_n_esps, all_charges, n_grid_points, inverse_distance_matrix = self._prepare_inputs( - molecules, labels, predictions - ) - ref = labels[self.target_label].flatten().squeeze() - - losses = [] - for molecule, n_atoms, n_esps, mol_charge in zip( - molecules, all_n_atoms, all_n_esps, all_charges - ): - mol_n_grid_points = n_grid_points[:n_esps] - n_grid_total = sum(mol_n_grid_points) - inv_increment = n_grid_total * n_atoms - mol_inv_dist = inverse_distance_matrix[:inv_increment] - - mol_labels = { - self.inverse_distance_matrix_column: mol_inv_dist, - self.esp_length_column: mol_n_grid_points, - self.n_esp_column: torch.tensor([n_esps]), - self.target_label: ref[:n_grid_total] - - } - - mol_predictions = { - self.charge_label: mol_charge, - } - - loss = self._evaluate_loss( - molecule, - mol_labels, - mol_predictions, - {} - ) - - losses.append(loss) - - ref = ref[n_grid_total:] - n_grid_points = n_grid_points[n_esps:] - inverse_distance_matrix = inverse_distance_matrix[inv_increment:] - - report_path = output_directory / f"{self.target_label}.html" - create_molecule_label_report( - molecules=molecules, - losses=torch.tensor(losses), - metric_name=self.metric.name, - output_path=report_path, - top_n_entries=top_n_entries, - bottom_n_entries=bottom_n_entries, - ) - return report_path diff --git a/openff/nagl/training/reporting.py b/openff/nagl/training/reporting.py deleted file mode 100644 index 22ec45e..0000000 --- a/openff/nagl/training/reporting.py +++ /dev/null @@ -1,301 +0,0 @@ -import base64 -import pathlib -import typing - -import jinja2 -import torch -import numpy as np - -from openff.utilities import requires_package -import openff.nagl.training - -if typing.TYPE_CHECKING: - from openff.nagl.molecule._dgl import DGLMolecule - from openff.nagl.training.metrics import MetricType - from openff.toolkit import Molecule - - -def _encode_image(image): - image_encoded = base64.b64encode(image.encode()).decode() - image_src = f"data:image/svg+xml;base64,{image_encoded}" - return image_src - -@requires_package("rdkit") -def _draw_molecule_with_atom_labels( - molecule: "Molecule", - predicted_labels: torch.Tensor, - reference_labels: torch.Tensor, - highlight_outliers: bool = False, - outlier_threshold: float = 1.0, -) -> str: - """ - Draw a molecule with predicted and reference atom labels. - - Parameters - ---------- - molecule : Molecule - The OpenFF molecule to draw. - predicted_labels : torch.Tensor - The predicted atom labels. - reference_labels : torch.Tensor - The reference atom labels. - highlight_outliers : bool, optional - Whether to highlight atoms with predicted labels that are more than - ``outlier_threshold`` away from the reference labels. - outlier_threshold : float, optional - The threshold for highlighting outliers. - - Returns - ------- - str - The SVG image of the molecule, as text - """ - from openff.nagl.molecule._dgl import DGLMolecule - from rdkit.Chem import Draw - - if isinstance(molecule, DGLMolecule): - molecule = molecule.to_openff() - - predicted_labels = predicted_labels.detach().numpy().flatten() - reference_labels = reference_labels.detach().numpy().flatten() - highlight_atoms = None - if highlight_outliers: - diff = np.abs(predicted_labels - reference_labels) - highlight_atoms = list(np.where(diff > outlier_threshold)[0]) - - predicted_molecule = molecule.to_rdkit() - for atom, label in zip(predicted_molecule.GetAtoms(), predicted_labels): - atom.SetProp("atomNote", f"{float(label):.3f}") - - reference_molecule = molecule.to_rdkit() - for atom, label in zip(reference_molecule.GetAtoms(), reference_labels): - atom.SetProp("atomNote", f"{float(label):.3f}") - - Draw.PrepareMolForDrawing(predicted_molecule) - Draw.PrepareMolForDrawing(reference_molecule) - - draw_options = Draw.MolDrawOptions() - draw_options.legendFontSize = 25 - - image = Draw.MolsToGridImage( - [predicted_molecule, reference_molecule], - legends=["prediction", "reference"], - molsPerRow=2, - subImgSize=(400, 400), - useSVG=True, - drawOptions=draw_options, - highlightAtomLists=[highlight_atoms, highlight_atoms], - ) - return image - - -@requires_package("rdkit") -def _draw_molecule( - molecule: typing.Union["Molecule", "DGLMolecule"], -) -> str: - """ - Draw a molecule without labels. - - Parameters - ---------- - molecule : typing.Union[Molecule, "DGLMolecule"] - The molecule to draw. - - Returns - ------- - str - The SVG image of the molecule, as text - """ - from rdkit.Chem import Draw - - from openff.nagl.molecule._dgl import DGLMolecule - - if isinstance(molecule, DGLMolecule): - molecule = molecule.to_openff() - - rdmol = molecule.to_rdkit() - drawer = Draw.rdMolDraw2D.MolDraw2DSVG(400, 400) - Draw.PrepareAndDrawMolecule(drawer, rdmol) - drawer.FinishDrawing() - return drawer.GetDrawingText() - - -def _generate_jinja_dicts_per_atom( - molecules: typing.List["Molecule"], - predicted_labels: typing.List[torch.Tensor], - reference_labels: typing.List[torch.Tensor], - metrics: typing.List["MetricType"], - highlight_outliers: bool = False, - outlier_threshold: float = 1.0, -) -> typing.List[typing.Dict[str, str]]: - from openff.nagl.training.metrics import get_metric_type - - metrics = [get_metric_type(metric) for metric in metrics] - jinja_dicts = [] - - n_molecules = len(molecules) - if n_molecules != len(predicted_labels): - raise ValueError( - "The number of molecules and predicted labels must match." - ) - if n_molecules != len(reference_labels): - raise ValueError( - "The number of molecules and reference labels must match." - ) - - for molecule, predicted, reference in zip( - molecules, predicted_labels, reference_labels - ): - entry_metrics = { - metric.name.upper(): f"{metric.compute(predicted, reference):.4f}" - for metric in metrics - } - image = _draw_molecule_with_atom_labels( - molecule, - predicted, - reference, - highlight_outliers=highlight_outliers, - outlier_threshold=outlier_threshold, - ) - jinja_dicts.append( - { - "img": _encode_image(image), - "metrics": entry_metrics, - } - ) - return jinja_dicts - - -def _generate_jinja_dicts_per_molecule( - molecules: typing.List["Molecule"], - metrics: typing.List[torch.Tensor], - metric_name: str -) -> typing.List[typing.Dict[str, str]]: - assert len(metrics) == len(molecules) - - jinja_dicts = [] - for molecule, metric in zip(molecules, metrics): - image = _draw_molecule(molecule) - data = { - "img": _encode_image(image), - "metrics": { - metric_name.upper(): f"{float(metric):.4f}" - } - } - jinja_dicts.append(data) - return jinja_dicts - - -def _write_jinja_report( - output_path: pathlib.Path, - top_n_structures: typing.List[typing.Dict[str, str]], - bottom_n_structures: typing.List[typing.Dict[str, str]], -): - output_path = pathlib.Path(output_path) - env = jinja2.Environment( - loader=jinja2.PackageLoader("openff.nagl.training"), - ) - template = env.get_template("jinja_report.html") - rendered = template.render( - top_n_structures=top_n_structures, - bottom_n_structures=bottom_n_structures, - ) - output_path = pathlib.Path(output_path) - output_path.write_text(rendered) - - - -def create_atom_label_report( - molecules: typing.List["Molecule"], - predicted_labels: typing.List[torch.Tensor], - reference_labels: typing.List[torch.Tensor], - metrics: typing.List["MetricType"], - rank_by: "MetricType", - output_path: pathlib.Path, - top_n_entries: int = 100, - bottom_n_entries: int = 100, - highlight_outliers: bool = False, - outlier_threshold: float = 1.0, -): - from openff.nagl.training.metrics import get_metric_type - - ranker = get_metric_type(rank_by) - metrics = [get_metric_type(metric) for metric in metrics] - - n_molecules = len(molecules) - if n_molecules != len(predicted_labels): - raise ValueError( - "The number of molecules and predicted labels must match." - ) - if n_molecules != len(reference_labels): - raise ValueError( - "The number of molecules and reference labels must match." - ) - - entries_and_ranks = [] - for molecule, predicted, reference in zip( - molecules, predicted_labels, reference_labels - ): - diff = ranker.compute(predicted, reference) - entries_and_ranks.append((molecule, predicted, reference, diff)) - - entries_and_ranks.sort(key=lambda x: x[-1], reverse=True) - top_molecules, top_predicted, top_reference, _ = zip( - *entries_and_ranks - ) - - - top_jinja_dicts = _generate_jinja_dicts_per_atom( - top_molecules[:top_n_entries], - top_predicted[:top_n_entries], - top_reference[:top_n_entries], - metrics, - highlight_outliers=highlight_outliers, - outlier_threshold=outlier_threshold, - ) - - bottom_jinja_dicts = _generate_jinja_dicts_per_atom( - top_molecules[-bottom_n_entries:], - top_predicted[-bottom_n_entries:], - top_reference[-bottom_n_entries:], - metrics, - highlight_outliers=highlight_outliers, - outlier_threshold=outlier_threshold, - ) - - _write_jinja_report( - output_path, - top_jinja_dicts, - bottom_jinja_dicts, - ) - - - - -def create_molecule_label_report( - molecules: typing.List["Molecule"], - losses: typing.List[torch.Tensor], - metric_name: str, - output_path: pathlib.Path, - top_n_entries: int = 100, - bottom_n_entries: int = 100, -): - assert len(molecules) == len(losses) - - entries = sorted(zip(molecules, losses), key=lambda x: x[-1]) - molecules_, losses_ = zip(*entries) - top_n_entries = _generate_jinja_dicts_per_molecule( - molecules_[:top_n_entries], - losses_[:top_n_entries], - metric_name, - ) - bottom_n_entries = _generate_jinja_dicts_per_molecule( - molecules_[-bottom_n_entries:], - losses_[-bottom_n_entries:], - metric_name, - ) - _write_jinja_report( - output_path, - top_n_entries, - bottom_n_entries, - ) \ No newline at end of file From b986a6cc7275a7684eb81d1aa1a0d1068865dd27 Mon Sep 17 00:00:00 2001 From: Lily Wang Date: Tue, 3 Sep 2024 11:28:19 +1000 Subject: [PATCH 03/15] add example --- .../train-gnn-to-electric-field/.gitignore | 3 + .../input-env.yaml | 16 + .../train-gnn-to-electric-field.ipynb | 2163 +++++++++++++++++ .../training_dataset_table.parquet | Bin 0 -> 1080445 bytes .../validation_dataset_table.parquet | Bin 0 -> 189777 bytes 5 files changed, 2182 insertions(+) create mode 100644 examples/train-gnn-to-electric-field/.gitignore create mode 100644 examples/train-gnn-to-electric-field/input-env.yaml create mode 100644 examples/train-gnn-to-electric-field/train-gnn-to-electric-field.ipynb create mode 100644 examples/train-gnn-to-electric-field/training_dataset_table.parquet create mode 100644 examples/train-gnn-to-electric-field/validation_dataset_table.parquet diff --git a/examples/train-gnn-to-electric-field/.gitignore b/examples/train-gnn-to-electric-field/.gitignore new file mode 100644 index 0000000..b8f2783 --- /dev/null +++ b/examples/train-gnn-to-electric-field/.gitignore @@ -0,0 +1,3 @@ +lightning_logs +tmp.pkl +api.qcarchive.molssi.org_443 \ No newline at end of file diff --git a/examples/train-gnn-to-electric-field/input-env.yaml b/examples/train-gnn-to-electric-field/input-env.yaml new file mode 100644 index 0000000..550cbef --- /dev/null +++ b/examples/train-gnn-to-electric-field/input-env.yaml @@ -0,0 +1,16 @@ +name: train-gnn-to-electric-field + +channels: + - conda-forge + +dependencies: + - openff-qcsubmit + - openff-recharge ==0.5.2 + - psi4 + + - jupyter + - tqdm + - pip + + - pip: + - git+https://github.com/openforcefield/openff-nagl.git@main \ No newline at end of file diff --git a/examples/train-gnn-to-electric-field/train-gnn-to-electric-field.ipynb b/examples/train-gnn-to-electric-field/train-gnn-to-electric-field.ipynb new file mode 100644 index 0000000..c6ecfce --- /dev/null +++ b/examples/train-gnn-to-electric-field/train-gnn-to-electric-field.ipynb @@ -0,0 +1,2163 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "94ff1817-f641-4a11-ae4a-91c7a6c73a7e", + "metadata": {}, + "source": [ + "# Train a GNN directly to an electric field\n", + "\n", + "To execute this example fully, the following packages are required.\n", + "\n", + "* openff-nagl\n", + "* openff-recharge\n", + "* openff-qcsubmit\n", + "* psi4\n", + "\n", + "However, if you wish to just follow along the training part without first creating the training datasets yourself, you can get away with just `openff-nagl` installed and simply load the training/validation data from the provided `.parquet` files. The commands are provided at the end of the \"Generate and format training data\" section, but commented out." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "522bc606-c1aa-4cc7-89da-87440c61f8ba", + "metadata": {}, + "outputs": [], + "source": [ + "import tqdm\n", + "\n", + "from qcportal import PortalClient\n", + "from openff.units import unit\n", + "\n", + "from openff.toolkit import Molecule\n", + "from openff.qcsubmit.results import BasicResultCollection\n", + "from openff.recharge.esp.storage import MoleculeESPRecord\n", + "from openff.recharge.esp.qcresults import from_qcportal_results\n", + "from openff.recharge.grids import MSKGridSettings\n", + "from openff.recharge.utilities.geometry import compute_vector_field\n", + "\n", + "import pyarrow as pa\n", + "import pyarrow.parquet as pq\n", + "import numpy as np\n", + "\n", + "import torch" + ] + }, + { + "cell_type": "markdown", + "id": "097895ad-685b-4825-8c22-1a0f79467e9d", + "metadata": {}, + "source": [ + "## Generate and format training data\n", + "\n", + "\n", + "### Downloading from QCArchive\n", + "First, we will create training data. We'll download a smaller training set for the purposes of this example." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "964318ce-9e08-4551-9af4-dc49ea89d027", + "metadata": {}, + "outputs": [], + "source": [ + "qc_client = PortalClient(\"https://api.qcarchive.molssi.org:443\", cache_dir=\".\")\n", + "\n", + "# download dataset from QCPortal\n", + "br_esps_collection = BasicResultCollection.from_server(\n", + " client=qc_client,\n", + " datasets=\"OpenFF multi-Br ESP Fragment Conformers v1.1\",\n", + " spec_name=\"HF/6-31G*\",\n", + ")\n", + "\n", + "records_and_molecules = br_esps_collection.to_records()" + ] + }, + { + "cell_type": "markdown", + "id": "54235869-1a60-4945-967d-602ef1f49185", + "metadata": {}, + "source": [ + "### Converting to MoleculeESPRecords\n", + "\n", + "Now we convert to OpenFF Recharge records and compute the ESPs and electric fields of each molecule." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "25f9db71-4738-4431-9e65-7c0b015b40b4", + "metadata": {}, + "outputs": [], + "source": [ + "# Create OpenFF Recharge MoleculeESPRecords\n", + "grid_settings = MSKGridSettings()\n", + "\n", + "# this can take a while; set records_and_molecules[:10]\n", + "# to only use the first 10\n", + "molecule_esp_records = [\n", + " from_qcportal_results(\n", + " qc_result=qcrecord,\n", + " qc_molecule=qcrecord.molecule,\n", + " qc_keyword_set=qcrecord.specification.keywords,\n", + " grid_settings=grid_settings,\n", + " compute_field=True\n", + " )\n", + " for qcrecord, _ in tqdm.tqdm(records_and_molecules)\n", + "]" + ] + }, + { + "cell_type": "markdown", + "id": "9dc86d0a-c59e-4f8f-93c7-3b74adb6636e", + "metadata": {}, + "source": [ + "### Convert to PyArrow dataset\n", + "\n", + "NAGL reads in and trains to data from [PyArrow tables](https://arrow.apache.org/docs/python/getstarted.html#creating-arrays-and-tables). Below we do some conversion of each electric field to fit a basic GeneralLinearFit target, which fits the equation Ax = b. To avoid carrying too many data points around, we can do some postprocessing by first flattening the electric field matrix from 3 dimensions to 2, then multiplying by the transpose of A.\n", + "\n", + "$$\\mathbf{A}\\vec{x} = \\vec{b}$$\n", + "$$\\mathbf{A^{T}}\\mathbf{A}\\vec{x} = \\mathbf{A^{T}}\\vec{b}$$" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "70634680-8249-49f6-ad24-bc5178851360", + "metadata": {}, + "outputs": [], + "source": [ + "pyarrow_entries = []\n", + "for molecule_esp_record in tqdm.tqdm(molecule_esp_records):\n", + " electric_field = molecule_esp_record.electric_field # in atomic units\n", + " grid = molecule_esp_record.grid_coordinates * unit.angstrom\n", + " conformer = molecule_esp_record.conformer * unit.angstrom\n", + "\n", + " vector_field = compute_vector_field(\n", + " conformer.m_as(unit.bohr), # shape: M x 3\n", + " grid.m_as(unit.bohr), # shape: N x 3\n", + " ) # N x 3 x M\n", + "\n", + " # postprocess so we're not carrying around millions of floats\n", + " # firstly flatten out N x 3 -> 3N x M\n", + " vector_field_2d = np.concatenate(vector_field, axis=0)\n", + " electric_field_1d = np.concatenate(electric_field, axis=0)\n", + "\n", + " # now multiply by vector_field_2d's transpose\n", + " new_precursor_matrix = vector_field_2d.T @ vector_field_2d\n", + " new_field_vector = vector_field_2d.T @ electric_field_1d\n", + "\n", + " n_atoms = conformer.shape[0]\n", + " assert new_precursor_matrix.shape == (n_atoms, n_atoms)\n", + " assert new_field_vector.shape == (n_atoms,)\n", + "\n", + " # create entry. These columns are essential\n", + " # mapped_smiles is essential for every target\n", + " entry = {\n", + " \"mapped_smiles\": molecule_esp_record.tagged_smiles,\n", + " \"precursor_matrix\": new_precursor_matrix.flatten().tolist(),\n", + " \"prediction_vector\": new_field_vector.tolist()\n", + " }\n", + " pyarrow_entries.append(entry)\n", + "\n", + "\n", + "# arbitrarily split into training and validation datasets\n", + "training_pyarrow_entries = pyarrow_entries[:-100]\n", + "validation_pyarrow_entries = pyarrow_entries[-100:]\n", + "\n", + "training_table = pa.Table.from_pylist(training_pyarrow_entries)\n", + "validation_table = pa.Table.from_pylist(validation_pyarrow_entries)\n", + "training_table" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "72a9cdce-5411-4fe3-b2ea-46fb63e09d2c", + "metadata": {}, + "outputs": [], + "source": [ + "pq.write_table(training_table, \"training_dataset_table.parquet\")\n", + "pq.write_table(validation_table, \"validation_dataset_table.parquet\")\n", + "\n", + "# # to read back in:\n", + "# training_table = pq.read_table(\"training_dataset_table.parquet\")\n", + "# validation_table = pq.read_table(\"validation_dataset_table.parquet\")" + ] + }, + { + "cell_type": "markdown", + "id": "4682e8cb-fba8-4cec-97b0-4d996e24ecf9", + "metadata": {}, + "source": [ + "## Set up for training a GNN" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "3d3c909f-c1b9-44e0-86e0-d4ccf6ceb996", + "metadata": {}, + "outputs": [], + "source": [ + "from openff.nagl.config import (\n", + " TrainingConfig,\n", + " OptimizerConfig,\n", + " ModelConfig,\n", + " DataConfig\n", + ")\n", + "from openff.nagl.config.model import (\n", + " ConvolutionModule, ReadoutModule,\n", + " ConvolutionLayer, ForwardLayer,\n", + ")\n", + "from openff.nagl.config.data import DatasetConfig\n", + "from openff.nagl.training.training import TrainingGNNModel\n", + "from openff.nagl.features.atoms import (\n", + " AtomicElement,\n", + " AtomConnectivity,\n", + " AtomInRingOfSize,\n", + " AtomAverageFormalCharge,\n", + ")\n", + "\n", + "from openff.nagl.training.loss import GeneralLinearFitTarget" + ] + }, + { + "cell_type": "markdown", + "id": "88be032d-0101-479e-a468-2c5db34600fc", + "metadata": {}, + "source": [ + "### Defining the training config\n", + "\n", + "#### Defining a ModelConfig\n", + "\n", + "First we define a ModelConfig.\n", + "This can be done in Python, but in practice it is probably easier to define the model in a YAML file and load it with `ModelConfig.from_yaml`." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "f7ddfbde-1349-42ec-a2aa-0f9ead097e99", + "metadata": {}, + "outputs": [], + "source": [ + "atom_features = [\n", + " AtomicElement(categories=[\"H\", \"C\", \"N\", \"O\", \"F\", \"Br\", \"S\", \"P\", \"I\"]),\n", + " AtomConnectivity(categories=[1, 2, 3, 4, 5, 6]),\n", + " AtomInRingOfSize(ring_size=3),\n", + " AtomInRingOfSize(ring_size=4),\n", + " AtomInRingOfSize(ring_size=5),\n", + " AtomInRingOfSize(ring_size=6),\n", + " AtomAverageFormalCharge(),\n", + "]\n", + "\n", + "# define our convolution module\n", + "convolution_module = ConvolutionModule(\n", + " architecture=\"SAGEConv\",\n", + " # construct 6 layers with dropout 0 (default),\n", + " # hidden feature size 512, and ReLU activation function\n", + " # these layers can also be individually specified,\n", + " # but we just duplicate the layer 6 times for identical layers\n", + " layers=[\n", + " ConvolutionLayer(\n", + " hidden_feature_size=512,\n", + " activation_function=\"ReLU\",\n", + " aggregator_type=\"mean\"\n", + " )\n", + " ] * 6,\n", + ")\n", + "\n", + "# define our readout module/s\n", + "# multiple are allowed but let's focus on charges\n", + "readout_modules = {\n", + " # key is the name of output property, any naming is allowed\n", + " \"charges\": ReadoutModule(\n", + " pooling=\"atoms\",\n", + " postprocess=\"compute_partial_charges\",\n", + " # 2 layers\n", + " layers=[\n", + " ForwardLayer(\n", + " hidden_feature_size=512,\n", + " activation_function=\"ReLU\",\n", + " )\n", + " ] * 2,\n", + " )\n", + "}\n", + "\n", + "# bring it all together\n", + "model_config = ModelConfig(\n", + " version=\"0.1\",\n", + " atom_features=atom_features,\n", + " convolution=convolution_module,\n", + " readouts=readout_modules,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "a68f7b57-a1f7-43f4-ba2d-9579dd9562db", + "metadata": {}, + "source": [ + "#### Defining a DataConfig\n", + "\n", + "We can then define our dataset configs. Here we also have to specify our training targets." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "bf524fad-42e5-4020-a9d9-90a56343b7a1", + "metadata": {}, + "outputs": [], + "source": [ + "target = GeneralLinearFitTarget(\n", + " # what we're using to evaluate loss\n", + " target_label=\"prediction_vector\",\n", + " # the output of the GNN we use to evaluate loss\n", + " prediction_label=\"charges\",\n", + " # the column in the table that contains the precursor matrix\n", + " design_matrix_column=\"precursor_matrix\",\n", + " # how we want to evaluate loss, e.g. RMSE, MSE, ...\n", + " metric=\"rmse\",\n", + " # how much to weight this target\n", + " # helps with scaling in multi-target optimizations\n", + " weight=1,\n", + " denominator=1,\n", + ")\n", + "\n", + "training_to_electric_field = DatasetConfig(\n", + " sources=[\"training_dataset_table.parquet\"],\n", + " targets=[target],\n", + " batch_size=100,\n", + ")\n", + "validating_to_electric_field = DatasetConfig(\n", + " sources=[\"validation_dataset_table.parquet\"],\n", + " targets=[target],\n", + " batch_size=100,\n", + ")\n", + "\n", + "# bringing it together\n", + "data_config = DataConfig(\n", + " training=training_to_electric_field,\n", + " validation=validating_to_electric_field\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "cfd8bba9-241c-4c67-8f88-a89ae608ec89", + "metadata": {}, + "source": [ + "#### Defining an OptimizerConfig\n", + "\n", + "The optimizer config is relatively simple; the only moving part here currently is the learning rate." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "1759ed0f-2e89-4d22-80ae-2c0ba04f37a0", + "metadata": {}, + "outputs": [], + "source": [ + "optimizer_config = OptimizerConfig(optimizer=\"Adam\", learning_rate=0.001)" + ] + }, + { + "cell_type": "markdown", + "id": "7c784871-e834-470e-a346-bde893326fee", + "metadata": {}, + "source": [ + "#### Creating a TrainingConfig" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "f5958818-03ef-4580-9cbf-c588cbb3141f", + "metadata": {}, + "outputs": [], + "source": [ + "training_config = TrainingConfig(\n", + " model=model_config,\n", + " data=data_config,\n", + " optimizer=optimizer_config\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "17d61258-fe16-4993-9c19-57118c9d0a1a", + "metadata": {}, + "source": [ + "### Creating a TrainingGNNModel\n", + "\n", + "Now we can create a `TrainingGNNModel`, which allows easy training of a `GNNModel`. The `GNNModel` can be accessed through `TrainingGNNModel.model`." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "3eefcea4-2e9a-4e4a-b3fc-939f3f733fb8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "TrainingGNNModel(\n", + " (model): GNNModel(\n", + " (convolution_module): ConvolutionModule(\n", + " (gcn_layers): SAGEConvStack(\n", + " (0): SAGEConv(\n", + " (feat_drop): Dropout(p=0.0, inplace=False)\n", + " (activation): ReLU()\n", + " (fc_neigh): Linear(in_features=20, out_features=512, bias=False)\n", + " (fc_self): Linear(in_features=20, out_features=512, bias=True)\n", + " )\n", + " (1-5): 5 x SAGEConv(\n", + " (feat_drop): Dropout(p=0.0, inplace=False)\n", + " (activation): ReLU()\n", + " (fc_neigh): Linear(in_features=512, out_features=512, bias=False)\n", + " (fc_self): Linear(in_features=512, out_features=512, bias=True)\n", + " )\n", + " )\n", + " )\n", + " (readout_modules): ModuleDict(\n", + " (charges): ReadoutModule(\n", + " (pooling_layer): PoolAtomFeatures()\n", + " (readout_layers): SequentialLayers(\n", + " (0): Linear(in_features=512, out_features=512, bias=True)\n", + " (1): ReLU()\n", + " (2): Dropout(p=0.0, inplace=False)\n", + " (3): Linear(in_features=512, out_features=512, bias=True)\n", + " (4): ReLU()\n", + " (5): Dropout(p=0.0, inplace=False)\n", + " (6): Linear(in_features=512, out_features=2, bias=True)\n", + " (7): Identity()\n", + " (8): Dropout(p=0.0, inplace=False)\n", + " )\n", + " (postprocess_layer): ComputePartialCharges()\n", + " )\n", + " )\n", + " )\n", + ")" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "training_model = TrainingGNNModel(training_config)\n", + "training_model" + ] + }, + { + "cell_type": "markdown", + "id": "d696dae6-93ce-4f0a-ab0f-ebb7e72fa176", + "metadata": {}, + "source": [ + "We can look at the initial capabilities of the model by comparing its charges to AM1-BCC charges. They're pretty bad." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "adb99158-fa97-412d-972b-89f6f563b84a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([-0.91995488, 0.17183565, -1.15693703, -0.25618486, 0.1270349 ,\n", + " 0.1270349 , 0.1270349 , 0.76822965, 0.76822965, 0.12183815,\n", + " 0.12183815])" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "test_molecule = Molecule.from_smiles(\"CCCBr\")\n", + "test_molecule.assign_partial_charges(\"am1bcc\")\n", + "reference_charges = test_molecule.partial_charges.m\n", + "\n", + "# switch to eval mode\n", + "training_model.model.eval()\n", + "\n", + "with torch.no_grad():\n", + " nagl_charges_1 = training_model.model.compute_properties(\n", + " test_molecule,\n", + " as_numpy=True\n", + " )[\"charges\"]\n", + "\n", + "# switch back to training mode\n", + "training_model.model.train()\n", + "\n", + "# compare charges\n", + "differences = reference_charges - nagl_charges_1\n", + "differences" + ] + }, + { + "cell_type": "markdown", + "id": "79cb1d56-3d70-4307-93f0-0d5956fdb32e", + "metadata": {}, + "source": [ + "### Training the model\n", + "\n", + "We use Pytorch Lightning to train." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "5bfcbce1-8323-4403-a607-89292681375b", + "metadata": {}, + "outputs": [], + "source": [ + "import pytorch_lightning as pl\n", + "from pytorch_lightning.callbacks import TQDMProgressBar" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "4e0174d7-a57b-49d9-89a3-5c756adc0d8c", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "GPU available: True (mps), used: False\n", + "TPU available: False, using: 0 TPU cores\n", + "HPU available: False, using: 0 HPUs\n", + "/Users/lily/micromamba/envs/train-gnn-to-electric-field/lib/python3.12/site-packages/pytorch_lightning/trainer/setup.py:177: GPU available but not used. You can set it by doing `Trainer(accelerator='gpu')`.\n", + "Featurizing dataset: 0it [00:00, ?it/s]\n", + "Featurizing batch: 0%| | 0/550 [00:00!f+z;{h|bo=W~G>n*;(nP$ZSJWc_ILjjM3jn9!fDqWy66Wn(+oPl(*av zmTiDv(}wKcB}%5^xRlhGtruH4MH2 zA#j1jz%w2oT;bs#L7Gy8 z6ocN(Xqwz+5$3=xWJAhOH}_-jC3OkVJg6M%H(S-PKz=N#}|aBtF6+7Qx(k(Rl@ zXswHxEGHciW63sYM5GPYTsk~EW79y=0eoma2SEyx4tjF|4uA7RZM4H(9+hpFpd9Q> zl4SLESUf{Ww?@DtAhKYP1Av5po$3~c2*j5Tr45E`7|Xq+Xlg3x!cC_uxDULeZZ14OF3fNVcA-)lDve|z6p@w+XO!X0~e#-t-S?*C&!!NNWj;$P@Bnc{6td^fsq4fsVcvu@Y?-SMEq5{hP!DatpM*;R^F=^2)G|@-X*! z+6&enpccZ<1zFTi*VCFwq_4J6N=ua27W2OpyR;Xqd=WO!Hij!ab!>>2j_kX>c#cUCsiAX`h1L{1eFaB~9BD`LrO6bWa6{!*KZleF_D-Is*vutRTOdR3q(Q_DlQ{IPsR0yphwd=f)E}lU1YL@^ z5!2A7!IkEF#6;4Z4{Nu8e^-fc2U^`jA3_y8Y`s;dg)3a=6i|c131l#Ldajy|FJb&iTrDp{hnp7yZ2RXbJO zMw-+f!iA_w28PvraEi~ihh$>m8FWKW@{L?HSxNA(9;Wvq(s={r@UvrD1GVkp zdeTUf-2Ab;yPR4G3`adAcokzjC$}$`w0THsJPxI~Rql|~rn#BZjzm`=u&yPI-|E4> zQ-B1`NvYXou9c*8(R;{E7E#H4H#p6aXa7kG5*mMj&bsat?ONqpe4+;xdLDGKJZtCy zQ_)BnoZ8ld%I`thTOfal)=%(cwiMKI0qg{+?yaZeKQuvVpCGdLhUyl370_O12QvIT zamr{n<3IR*j)dZpk_n;#Wg z+(2pRSbZNUc?|T^Br2)da8})a)^jjhHOUj1MGhS;(Uwv^&@F$5Uk@mRn6ms!taprEW@4Pic~Xcyw20U5b%58%q9`&qQ52Hy%407 z%E-BC7e!mWC}TatDeFEKR?}c)#?7W)XqXap@YLV-)duS*-?VIzb}t-dz5&Zo6^-5H zcs3&^o4{aYQ9%M-Yzjw%e9JbZjiy= z=&&~&h@3uPn4^w#1a+=Tr~XgZ-J?QBR=}MI$U=XsKea-O-}<6CO4P{@KK(L7C~x*i zJC^dMp2BSNkb;*CBhn8}BEwK4gnzDFfV9jf#?XBHJNKy?vU*v#kmwRRPe&QDjbc ze57d9Lz=u{dq=d60fzXAFo(>ANpNa7FcfFIS7%C87wFYlY>kR5bS%(MgjA6$tAM6% zmChe*E}J0cn*mwgW3piiQqw8p#i?e{&$VCDFBD}3Rvq9wL)$Wj9O=GSxH6P^WKZL3 z{h@xbhzBTbIj)yF=j*?s@H20a507EL4rrM#`lQk(IS#@juGQ=+MROO|<@|3TGrYMI zP7VP5&EDbErMYLu_@{uB8X0X}pjQYox2&HvbE$UurYuC&P>=IfJS zGQ?!_P>pZ;;_D1p+O`1XEdcg4f%feR{2nnYk%7jO*|sh)uM4y%A!DpRDevwAGs#^& zRHXd63k>aIKSj23vz=^mhY7;zyTdN37q_OHpPScMo;Af=KLEaM0*xlnwNYZ{2G@O^ zdjPB=XZQ(pW)-k^6C0N(QYO$K+%yX6D7mVG3>2eY9zi~|IvvEUexFw*QKiuAPYfO; zQ?GX|#Vs5ekycvQk9PC}krpH|7&DJT{U!xJ3h-;(cMSHn<+#B;>SMT%ys{f2b3sv6 zSnLLg<*>Ija^8^L$8;33GDhDXf~1@SEI-)||04su?f|2|0rmYrek;hQ87dn@WG^5@&Nc-%e+NiKU@P5*d zbl`Oc_rlznBuxjdi=1GAvdEiB!BX2Q4>VJOqNJP-zG!_`59(3SN)HMJrP1WW>FvBJ zH$-PoSC*@0c#;KAw@%8oDQpKk>L$aPxU(G2YW+sFPNAyu$FDk5rKq#qwqM1}0x?J5 zh|M7ccE+ggbbz1uEC~$2K{DfG+PIy9dz%vh|_<`51x85-mjlyQ~p6IEC^q0K3+mTaNU-+Z_2DG=)csN}!p1Vn4 zz)dqV?T~a*8<{%g3y8t#7XoUfBfRjCboWY7`^vXsDJ*v_p=eH*a!6|LBil`8&S7X= zDBeU0WpeTuTwq@*wxk$3QM6;_rarRQD}iFA{h8?g|E}gQ0GrC>nrM%l(X_3=4UO;t zo#03 zdnZcTX%2a9{RZOiyz~ELv@$pkt1-1Y(oee>L|2cNUVReKIHq>AlpBeMO4&U+ZY$eI zSr{&FPKCFOBVb99l)a~%wnu^cgi!`JU2({|8gY&nQ=8zke;b%&qmUP>u9rbNhjP!z)RZ<$%+}Ok23o^<(EEx zeMJ`fvF5kJB2Z8|b%gq3+Z7qQB2#^(NV_b956oYwuE?MVdMw9}{M7{@rtO{N=sQVu zjaaj;UCuj6&SZ(P7Q)xr1EELlWQnd`hVrH8p)YGzKy%}5`wMZKp2^WOmKbX^h$7=r zQSRDk77-Mgh{N;GZ1 zbl>>=+Y&X|BGsJw1y>g|+K;-M{ZT(jgy#gJ`5rh1qw~IB3~ua_%lNx?c!7bP!+;Rg ze}1^gd)g~dBO#`K0|5h`qgGuAgf+}}Tm<}%j>;aboM8P`_rROI=z-1$aK+pn-B${@ z!ZNpJ5=_bXl?rHefAR~ABc@;Qn%o|lKMv?qeV8YTabzQl(GQA2?>&)Nh5Xthg9-h? zfJk;mObHtU1}Z13j(D0TnD9mfo4J#(o)HLSfJ2ZcZN?nkWJ6Op^Fchv1V$;d;A##q ziCnq5H}vMpY~wnBbj}LL0t34wjPdYM|ePXY*spcWh7fd zz&LGh^-DM&Ck22M$m4Ln9l!z*&Tx_4nC{%LW<503NnlrMeezeyzr7m5 z76n37<8OJP`pChTguYa-oD2%yLw8PMZ}B#b^fAt$R3jNxd&ErDF0OckhA@PBm{V#2 zEOo@HCvjq~$r@eYslH>L4DBE+_HI&?gi2)JwI@|1TaIXdSD2Yp^E1ke=CfVOW$_n9 zbzg%>!<~9Rhq7@44wONsdY#ILHg$rbb*ey_>WT+EjVFdfhASpWJtlT5Q&I1Me~%oj zVK4X>`a}4_^4zM0-|2d_qjos##_bUMF-!oLU%vsY$oGchTC0Mruhm(K^DwdTy`~cf z!$+6#wE%BmsQ{ZX5|?|y0JITPbP&d%Qn}jkvn3*ax}@$5nx%9dxAr=eDrT1}taDQu z-PN7#M>}cyd8*sN#D)ias5~tUZKtg<@PmFQbl#!TEzv5Q2T08!D=cHUe^EY&Mf5qQuS*Gl3MTE+r#bM&>aqh@HKt~o2%ZL$UZRK zv!sV8R8>_Cvi=k-AA8CWA8Rp#=R;Ij?fJuCRN#H~o8pT-d;vz<^f8eCdO3hDu!BF!F-0lPn)IzmPyA<|`VJH+o zf&z<_|LU=b_ZKt&T==hGlldE}zh3IoT*5s=zDyw&kwxSzlh?B+!GhJxzzdmeAhoqY zRJ}PCUpF=pio<6v1KO=sS8s&E)ZJK+Yg^2_>)%xCAsA8I1j|0@OodeFDQi!ZrT`I0 z6zb?jZ6vlfPC1ILr**610)1)i3bc{79K?TE93ds6K+Qgm8C{Iy70{C`4du$xCvTWi z=@)=q z!YE9^%~XwL&~qNY!}+JYDmsJgoLpdz;+DXk%+Uoi^xX(@LQi`&x#v8Dnq9rBp6cFv zD2^h%)H$i{KI+*KoeF@{Yg5QF=?sdi6bCrX8_g3OEe<~@2hnVa3>g{4aMdFP`~%Hk zY>yS=D#4gY19Lg)j645|Y1{$F!=jQ(v1)NgI1|mH@hKm5BZ$fz4|uIx!9NWPkB$eb zAcdj?x^l(?eKDn9>Qk5_Ry8Q09XV;m(;MW@!7%wbyH9GoB(uBI#t8r~WBcbn7ZiUV)p!@BA%iubKPh|RuU{7yc9Qi!{KO$7fPjZPxjS9{FVIG0%J$RrUTG#l-81& zN0B#!qpCZJ_#F~`XLq9;txuGoLX`Klmwh~74F9{YJP7q?_;C@&XP~VV@Z>KG7QAF$)-DyL$;9?-$j=ay zvy~O}%(vpW@1(YDsLyh*ECC>i{Z(G$%~8~^YIqC6GyOV%r0f?tdx7zp$ZHS2E@QF@ z6o@zN0sKpd_j~9*`ya`#@Bm@h&7XKU<9kXEB>`7p<066p?Y6VfzEU&Vt+D}7S@>vb zO$*wLkcv?sWXjPPdDB1kIUN;6Y^F5tWHh6USfzuDT8!nzVJ^F9WW7n?+LXa9Gz$% zG=w%UXvJt7LZvj4`Q<-@O?UER5TR+|3^P%4jLUl@8O&f!M{^y&1|n-9K{M)1;^4WZ zQeQ$Xa=`oL;M0oMZ1y5T5rdKrLVkouuM#tt9lt8do$ae%y7?VOGuv^I>g`+#waMrV z9X+w>E2@*@5s%%fd(qRr%tbC#Eu*d=w^*%@t{Y=41z_S2+r=rl?yh5~US5zx-Gim- zUQ{uHOvMEXX>2|qRXL^2Q%rX9VPL2+10e4ZwO8O=#@xy-Q=vJ`wCfUU0KB9=h(CFO z$lAm1`mGQpAnI#04s(mk7fFCsdD0dwZW_w2_124hER*$-XjiPJf1KK>+UA3TeVl5? zS7jcsE-`bX0`TU?=$Cl){X+}H`UTRG`Ckl?uqUy81H+d~`8Q(w?^4?xcS~K+w&2_C zBfFdLfuhb%#*lwO4M7a zsgBwBQ~Q?B@#1z<0=(_oq8;FqqY@^V4iehJJWyL@&<4|Tg% zUwDesZ(oO3_}JG{yT^mFwNy$e_);zfW@hGE3Ql3g^x$^(_42$ap!lf-=5qP^Jok%J zrIiy!_NmgmeSq&QF&FGxwX3JSC~j#g(BG7J^?#|MxFqGej6q4_@p|Z}$*p-IW88y`N_%P1CmeDVTwp|`*MtiCs ze5OAnH$8Qyf~S6l^K+*7lz$m~;{hoMg`cPo=%o}63d*AG#KwUn*reX-Nl;=<9<}tdFuzdGr1t*=nionAb`Gtj8sy8F&o}BX>2m;p-|hc z+fY}PzD=yYe?$b&5i*kQR+;W*9NHe1f~Ylb-194u-Xzveti1{OHB50=x0IW(Es{DI z$w^{oS4?WVDY+p4t7dc48>6jeP}2BE&1zs zs`>$Fi>LD9DNFbI^XLJBpIi18upoNPC~mQ_9S7?>)a00w#M16mKqS7w?vMDLNfg#SM@|`K|rXx)3T1XNGJ~#7?Q^k0NMALJTDMta+7h6k{Sy) zL6#eX#Uq^UV1v0mTkTOdn7EB9Lh%Z{F-Bvr0ZE73!MRj#{Ekyc;lXOaE7pg4Q6r2m zHF1rd@n}zpVNRPj)Q^%->C_rdrUHSSijcOwoz-=~P?l3LSe*2c%0DaOM4AUQ<>J=! zKl*d8h>I`45%*rCeW*VVnMNwc+=t&Ts~TP4W2RIwUivO$paVT=2f}eHOK=$D%Z@5S zm%Q{nfiq~*01(41;*7}KSG81z$8}W=_v2`MP)lfXI!YRg#O>&;lu)$TIH|?_i0TZ& zVP_Cw*~V?RwiYB%<*jc=ClX!YQ6>@4`oWWM3L3(qI`6auKH3&ad&T{HWIDs8kFg$J&fI1 z*awDNk8@XSf*6i4|6QK|c{r7#{ifo!h}Dl^1&A?K02pq7P_8;rRM*kr1{2ZSj(ELU z)lTUwXJ-rLGlA+?lj1^MzGWsMa0X*zn7XrHrD>HLaSea#kk<{PmY_GmR5i!pjvkh8 zv=Z0Dx?ddW>`5Qkld4izdChh;6OLwBaa+G!Y#Jb@{)FdJlp?BH@rF}!YjJ%vei|h) z6qk;xH=#&>bk|eW!-w0=Zt&ILWr~kr{sVM940s72N}{qamVla(s?+p^W2!41z5s&) zE~TySXqQP<{sBno1&q3nJyZ+D#|2SvV+E(qhLZ!UVz~3kf@305g=mMua3@YSt6tE|S5$y&6g9Ep zR~*c+?;~L#IuiYbukZv_GL0yH3>Cn={vxkMW=~b_aSqiDlLg9zf}t0#HtTqYnAyS2 zVTQ-7U|-6)mG#%)B$t&qJN}}!uW^B;tzv3OhN_K}Tx7CB^Rypa0E~~E<@ik4XL#Mv zz^pP$1mK~2X&Zd@1)GhK*C#?Ba~P>&rp2&5ldFI$@iPP7ZUY8Qqpx{;;8muow7EAm zDRp~YR}>J}*ozvb-zuw^7?%pHecAg=2J*j3d zgAGzRu=N9RDxUJe(^RNbk-Zl7X?p2QUVi|z_JiHy;|*{Ec8?> zw$Y0D1~iR*TSS3cJ`cd7xk@E2sHjcZ7nI%~g}sCC!e! z95FQm*22{&jn*&h-DYq%8Qe#AvjS>0cR}ThO1mh90WLlM(US_FW^k_#GCA(SY4CMH z+05-s-E_;2v)jR%gC_nwMBmCC>C7jW0`68{sK20AIWRj-Nd-85)FyFF%{5P&Re7=4 zGz99@iEEYtd`O|HWZISjW+_>NmcrS%8`j=6KST{Z&`P1Ue|PPvycZH~i|s$LHk9*3 zJr%|V%nAzV&rN`{8`tvBx`QG6Ts2GTuHl4WZW~Njhr+vqhtywnt>BuxmODn{H5kWA z8(Klc&%9!2!^4^x%@I~j>rM~_C%a5k9z0(7)?JZG?P})PMB0=@ajkXHoY<5ov3v!- zi4--?f*-73>tw-damq?qAA|)4HHY9cKG0lvTBKSjaH06mnfTuXb?6t>ajj_%u$A<9 zdO>E@sxut+Ctei7zVhTQWEF1YGFheEVTZxkIu`Us=Vf5NasxLV`s+BR@sw-e)pb1z zPq}eZaFLvgA~@GVV6i9kBx0qG9!@PbuV}r5I(ef;WNxw!V=rMgRi2+GavIDMSX_5e zbphFVh|}cNPIv7=+>YUlY>mA2w(5ij9Nl;epY%WryHm5Y`-r<~uj(OUzv%)JwBE!6 zmhSu+-yZ_di^@XZ)($GFIH{b}X8Burv+T$Sa0##n@Pab#TVD&TbLq6Gn%sjk>W=d0} zQp>HnY|abB=oGt^~rj z3Z|g}QYO19QDyN;IU#N=nRQ z(cb<^KY}$|107>wd}ENUNv0hF`1oVufHj2Web283{KWQpHN|9raNXQadAs1sVdBw^ z`~jn;rYn;Zum}I%5q)t}_)h>p|<%=&G}M;}zP$B|9LB zWLzEC-5$s(tIDp-6@%D)qnS;a{ULFp)a=0}?SY{rMcg7ry~0qr0xqL2qaSGeuN3Zg zd?3O=GX777T?~$4@W~G7R>2p^CrgCB3xjcW?e%ZmQc|J0uLdg2Zgoc-XY_Z1^2Abo zF5t`EsB?}Ic#epb87v&Ai=?0Q*NiRZoq(Mpx150IxHD!JO_rj>j`?R`@l(c9j8@6u zg4TWbIirE$sQm!TGB~33PxhmHbV7c;oAHBKyAvu2055z;2)DJL+KLse(oNRx<;9m$w z)O<8Bv(lo)L~8$#QY}&)kk&k=e$no%>VS_GvTK7ie+}f5;mdFlTZmz4=m+YJN+rkB zy)|qEx`Gh$Ko{iY$DzJ+Ja^#Jc|{2h2#6etmw4H)g(M|N`I(Zbo>Qhjj*>}FbD zqFqdVGYja}O5D;8y9GD(z%v4=HrNaIWi+ZV`y(*{873F72NYmkyUNiL{trx;wyQt- zMppk7b&Gp^;d;sfnhIuDNh^xD3J{(7D~_o^7g(;MsUJ+>;*9@5XoXYo5(Vs(G*omW zTC5A9seu7bI3eRS6;PNfN=lUAZ8GBkc>9?nRp;F)so+p^`SMDAOup=QD5;s%7BPc&n)G5uEmjAd}d~__-8xZ|SUW6stUG zER*I8NWz=t_Ge1{N0DZ>+(Dz+a_fIq;F<}SWv++#kRC)9yGfU3N%>)bA`3^no40PK zluc_-9WpOBFLQ-advNFRu)qFCfd3BT?jf~Y|B@)~WM#^S0Y$13X-PhetA~_O?Zr~l zKv=xdlM>K5Id#Q~fw6uYb(}D{vkda<)~MouikRug_Q*qlUgqQ7jApXY8vil}gbwt| zb@c~bGuGt~bXOJ0o*V@ojbQ*P@sRe(SJlOu)vJHkE6P!;{j1Z33l8bq>(TtodD`r3H6TQj4*-nu>+W`aN6)o**NB z&WAFh0)=Ngje{ZjL)I8)dqATpN_d?blA>3t-f+wytv?<^L*j1Ho$0dlG%#zhRZD<% z0)8DxiJv86u*OmZ$Sb=MY1dKE9!PrANwxDl~99tPSMoqln z!I3sR1G8E=-fmSda?H0FHMJuwQqUjG^yI$613C~9iqf*zY0JM%92!CsCbbgkv@+DQ zD<=c}9L;bcX|XzG7AWXs{2IixNA6x+l;J&|tiEur@vQm-EG3TPMqj+bn-z7Srd#f7 zwOkda4H_;rwAXaw;TUws6NIx;C8P5j!;M9Qaq?$4mPsUhWq|S?Ow{iI)LJf=Gg8L` z63h+IPVFJ0S~yPks!t-nY~MNv;A9!JaC&2|RNqg6>WHbuUDfJ$15Aa%-I^SYaTtWd zle|LwwwbR;3?b$=Zo-r0a41Z#l9I^7DAXnc(b@onWcaMo;>L;9-smk43rReIr-%qc z0$V}B6>t!j4TodQ#jZoE^0^!{!wso&gGRLmAL>Z`?py)K0OOIZu$c-a12R^9-0a1i zA;FDjV0YCo9WikS5`3SX32jvD)MNNT5WI-C$O=*@CshJl(2Y0({=e$2Of>36xK$*cG5iI;{F17^Kjk54P<1^38TZPzbPB~ ziotCMCyy86|6~puz%&LP89#oLu z0&1=P$?()`^=+0uoF}|Z&F4BJPZ_p)P(N#?27!6T&Cs0UXl&S^%A(^f{!pWD5fS>j zG_XZ7j-YjqB8hl(Rb)J(%7ZX#WD zWJN7{DZibi?ogKr6V1n9t0vADZh=J{0uhR8ZUyn-np{6n>ogx0!yYmcL?{!k4Msn+{4y>S!LkeIFj6x$01F!OO#SDb^GpB-VA zCz`0PoB*@c!<&{Rx7aQM+eb0%ZcR{K_Hd43{#bCrSp=6fRXIOVQMgfo!*PYA!JIcT zT+|(6S~=4QKu+VR#JiZluUgX9+dE5I!G($KyCd* z&04v-Q~rEW#R@8zYl0rGpG_+yBszCV>1{R}v4wtCgL#jm5Pz6t-3t;dpKS(F!?vG8 zQ$_>JxzPvUzver2{gXraw_U(&<%&AQiM1`I%aN@<=<5RYVyJc`+kHiLIi;r5K>^E2 zL~0+lwkuemoSQdLoXq8GV46EyZWmWHyT)2M_~3T8%GfehKFxm1<{g62&K;y^?eLTs zan%@ZH(XEi^D82K+dvic+B6oa-UZm$M7}sobS!B<8=rh<%%*v5qe2g||fF zU>TKB_r2<^w_W3w-0Jj3W9i0B_Ad{`&Q^KQqxXL!OmE6f5=w(Ylkq^-?SRxgqGD*rFuU+H0>orjl&1bdF7NQ((iQ1mxx;%m%)uIXi;ZydrEGI zseh}>iE<<+8q0^@ASqiPHb3OAi#NRkDiO^$OI{P6F;b*{jt5A8j#1AsYsiMVqWs}r zx2iMn3QClhw21llKvQhCO$KY z6gPt#PGB71+cdAbT1{5GBfp|EM)TDMoqim}?L6|50JDgzCjqjua2Sl zFguHD>kPThuYPDC0l}pDqn#oDodo{SveMGeaZokMqrUFXT=3*qwZYL%(e!F8oD3p# zgAL``Zn(f&y+cHTsKUzzg4L;Pq+J#9Zy#<3E;Rcty$)r`^n?KkZd$nI>sAPv;Duiv}19OgZ9Z!3rD za`IShIV>@{YwzTvbnZy$zs?Ouf@~Gq>d`=d0pNEY+|jyPZc0EAE^kkbcU`E+Z(O3o zLkmOPSLV8rh}spm%g>8#kC?J-DgLQjTz8IaNw|?_Q&8L%`Jp3jhiYMd4v`O#%S+v$ zu3-*us)czE#l;^aDXFyPWl{VO^wr_yI=sx>;>N*SL#D!xGT5hSGUL5r31(zeLc@Kuvz;-HF?qSkNwx#88JvQCRiY)H zsGsb0vL~DDS<`~~Zqx&`(3AKwG!GP(V6F$`Oio|RA+%C~R?+Ae5B57&pG29*XUv2N zB)(99HS~c_qCEY+to=Vq+Kq!>0FO#h^SB zO-R-sWV{f-}9mAdqY8HD) zf%kc+_VwcOKummW_vSIUJlMI|%vrtAYRpUI`U`Fa-AN?a3n?GqJ}o%1M3Cv0%2vim zFi9Z^FS7&Je6No>f2q+W*v+LN`4?_AsT^F;&#W1ETi{@Qd_Ip3Yi{8I)i@Ze6( zL5}$q!*$)w)+Ke>_$anFwLe<~V84~MB!onN)IUX7U|#|BPrY~vEcmCXp2|hvO9}J; zy{>@YPg82njl?@LYBOD5=opW4{E z<+wkIXLNOGf|f`^*0YQ2Cz=^J2z6!i7SL)5>}4B+c`>vEk{y1+1Y)52L(Jf-C^qEh zOT<~~?5B~_%uhtD?kgj5M0{8$d%3S8HZq)jHk_!6tW=)^)+Z@ULjjqj%M!Rh$f8@^ zyeRKmO8rQA6!5O0=vyvmX}hXa?lB}i;Yv$-F5(Wk(p`(JYh7EpYGtmL7<}d+H+=x) zbAjGomomsrbD`719Y8-*M*Tp25BKl;p4uN2CuR2M)Q{Eg2l%m)V;n#5gA()yfOSDU z3tvMShO)xNE#`rHbuVBE$_TRtf$+Hf65DK9LuFnhZ9EAH8gi967d!qTV@Yyf3JjS!QvG>R+zDyZJV&c4f@Zd9u~dQbPmI z79>T^VmwOsQp;QW;Lp)ez!y6{v8}0OP^Yez3bgSHfn7V4x@0@)rf$$2OGJMu(BCY= z8LhKa^W?5Tln{;YTt@yhTJF=hkL${psR@JOb)mdI6|lGiYL&yjXu1sBx>2cW3h&gw z__|6+CHy34CwJCeJNC#;7U+;A41Q;}Qt7B^;+KU)b3)0_0s2CZ3)Z}G;?R!f z&YFFCO@F~Q2;>Avn9WEL8JPdIS*-6T!^b_0)?5&R#w_Oq{VZq>;pXAlA+~&PoFG*X zca$>>OoZpj22d5RIFclj@(y6Gq7qZ0i9M+`OFiIH=Y8A*X^M2_WatkoEeyWofkJ3& zzp9$zLJ)IK-xqK!_Ybu3`#|%G(DC*K5)Mhivj_iytx|pVHm||Sovd%E!SI~xB}^cS zq9#(m3Q*738mVK-;8p6rE?%+5SnBHxJxmt9SCXpA>rL)v-w&iZxoPum>qVhz{Q*v{MbhJH$c&H*Y$Jv?v@mv)>6<7+UWyVb&Ze;t4omX)G!7P{R3%=~3GGl|o5DQae8jl{ zPT@LfkCqG;4^HQOMTPr->n!q@5rlh+&hG(I-zolNyM!}BK@ZXsf6J2UAa&1jqj@;$ z60F*!aok8PtGEEY93%K;KFki(ImuKWUU$QG+nwuPzstD>?rgnNum<{D^4aZyu1Pql zPg%Dvn(b`)F96n4JK;#z0i5Jdzl#B&)<+oTfm>~)l)u)ejfaNenqK9Nzu^#gE)6!P3H0=*})6-%(z7ks^s1T%=x z?F36U)r|!~HcvPEYe3X^eA0_)u=tvtqq8K27+wFEfKLTIs0cXQDbid>)vm4o(czAU z%k=9Y_ogv`-OE%xfg$S7IETUi67Qcq4ZtW|(^sDkEQ7fuc%a^>Ow~@LJcvTmD>8%G zi2O6*JlAm6OX{q06@n=32$;&I%3uf%@cEL2rRyry_W{VAR;+B=0whUOB8u&OGlAemzbd>5hfvFL&j^u6di;U`cn940; zn8tFr7N5w%JA#2BCfU56#C7+fNK&I&mAoFUlk@GwoHRCBGd>LVq2d~UrusB+Wd3aV z;WrVr1mDrZ!*Bt?9_@TMSMp5rOR9!jjvYE+$p|Lubv(RjeVc!8J->*;B`C8aoMr_n zw>rnqA8on8`EU!2Q-C&7A1GFzFjp3oyvPIw+n78(@W7I}ie&U`qxJG1QyV8hMct`p zlh-1y05=m_MTigW+~pW8F-%U%f$BN<4dQay&s`h~lFEQRlY$QO+Pd>OQ110!GplFl z&v1$2X%#dpP(J;~MLZ@4-C#89WK?(927l3TQRa7pHyDb#e#!eZ{NKFKY$Z_sEmh8x zbyc3Hm7YpBrJKJIg!CqfqW=r}{gO4B)i3n_n>8Bwf3rrvB!#AvoJo>L8vTFI#C%B~ zB`Fw0+5KPjhU|7R|112z{L?RGl7ITYoYOCPn+ac%O#ffP>6i4;xUWxPLsOSw2=I)o$4-l6Bqt;DjvfRL7I@i0ea7Dxx2+JBfO{dvMaDr-VD@ zndsv<<<&d5?iB7D(R#|ee$dH@THWRQ<9JTjJ(ttw zgzkT^aE|`R->=T;b_{sW4Lj+XKG*P5$3=7bb79x!hF|LGT@!Jwe|k;i&7q5GjCaRg ztBLw$hIeiBqxtEzG0)a5sx|$(^IC29H^;r__4xBlxJT@}>%%U^{{48vrMQpp9$gXu z6@0m;L^=GjnO1MS950W2d^y3>5_~1mCu8^(OFQSrD@p#PkFWIVSmBe_JE$fx&8k`b zb(&4L{Zv{X{SireU;aX3db087uhUaZuTG`+i~A%Q&_7;b8IYP3P%$9Q7TPo*JtdaP z7?751$;hy0S7g{TM>k~*%$Z8r2j$gR?1S@HSJ*QPw>R0dijTZ!hm32E^vy24UFw@N z>BT&l9d^jQF|qmUHvZW%o*-{ruH~iq7{ZDjqKxaevbD`px&t zf7|!${^Z}AI{z}|-IalBr~cKtZ0)rF{`jfG^iTi%)nNvdMt5{k?8pZ$TC;rJOc~Mg zf#!z~&|fL{iv(_-e(e;a9b?Bjhv$wTT~Op4uN1N8Y4+>_cXr1IsQLFf)X@LGF+IPo zB%vHAMSy&Gk}m+r@y_}Elz-0e*H>BjC-c7y^W|qczx(|8dd=m)({~>TPO;bV4<$E+ z9zx_GSH?BrlX79x@ZT>9->gi(e*8nT@auppg`=h%6UO*-jNg9sh;Zb@UQ&oQ=CIj2k;QF2r$0;M99~X;7a3=yE}zC}q~*Pr!{5T9cLd;0XFsF({v*j3rh z^+Qh!8Sg_MY!~M)3H({}hk0 zM}!4;8`oZXbX^E3`u=I?j?2OUaJ=Hb%V&hZ>!G1=W3$k4Z}GvC-H!|RGY1V1_P8Px z6$Rk5S+3k z?)c+N!eaVO%8$Fw3kA=z$`+?w7p~>MdwG6htH5w3|48R8;f>!ouaIA^3F>Oi(_7Ck z3m0E%DovG5!tSem8;^WAENn>KvZmqDF=3h3a^U3DM#0$2AbxdymyqAM$KXy~5C*9H zPus6u5*|u7jUSzHLpXYGXnE$87U9wDzcf7uT@k)&GKF8<(=4=YoBQ(4&XdBhQ8Ug< zKb#O=tv#F~@i-|=ZuajObZ3vS=I-KSWGRM_1%V_C1>hlS%a#!gyUyG>}AxCFe2I3>&r zn3*uU>j`1$q|#~Ui>?Z(PovGRMVE!q`6p64&HYIbJ=?ov>Cfi`(I02W3O|wWAz{;T z-fEiC9o9q?g)y=8H)@#lS z#}}49674%KeEg-Yp?=1B!8TviE3E$+!E+u}q&d+dXe0yoC|;Zq7Q_Y}y5!v`Bvovr z`%c*Y5mBU!KHf_PySBO9DerkgX*}@ zu6J49_56dvutPoHjHJ#8$EVlt@|xBpY)*W&eCU9y!q*+Y9n&}Bis1kFj;LqUd0}%7 zs-L;$xX^o(xjt(Ad11Qv<(+#y&Iny)@=iy*E(_q%!zY6ae-b9G{lhY%e~WOmef81i zT~~xIZg~;za-Io4E zez!i_Ik3ZJ!DmYCU1r1;;nJ~_t1ka@S-8{^eqej!IpO>0^zoD0;P9r?2`^9Zy z>floL{lAdKHAobSar+`tfx}KorKfjQV0+cAhLoNXO#R@REcYyc>aNU$r=8_shdi^3 z)hxvRzn8aF);8eC=}B{)lMR?k65gb}nT;1t{}c_EFtOC(zR&U3?#;uurTu}a0(|nPRmsMV^T6bu8k)f8FLEhV+X4cX*;Vg`7xi77_^ z#iEVDda011@4dfWq7e=BxA&H9sKsHy@yp_5zpHlLT(YUD2v7BLi01ee{CK$#SfzJoe@f zsgE0@7>d&c99*d?sFeG!0iXJE&l|1-6?yP;f!6vXA`xtV{ejd4azo+Tr zY4bu)xsh)Y~M;!pS1tz^xp_$;%`}z zo9TKcH1bjl74H?}#KRWF@Th9|W?9ps%xLi5y<%g}-v%sbERxjsV#8E2dN%ST6UC-W z_tV0Q@M!&!mD^{T7OlAzig08}C(gdUxtpL#UQk%Xp`(qEX=wevdA1HJ zu@at#<5@5{zH7_$1}1dF-z=>tXJVnO{(MVOG3IxrS?o{F#+bd&oQ-rU)ZSU1a}Lje z@kf2rO>;R&Idc7ljYvH7$7jq8tqY(O6L39`oeVYC{*8`XX}DC!Rp$JO2DyP#gI$+6 zc%v50{o^(VBAS2rUp!(%Q65&^EzLo_w#yKCcEtq)_0)1L*86=dy>Er()+<_j^MBA7fXZR=?P+PQ9LQ<>>O21a$ zve{mTZFizH2JC84Q5Qb?QHO>9&g`!kCFeul{ee`aLOs$tdH@&DdbMWIi0RQ%I@)Y3PZ84jOor zsT=J-(_khM^e)Pdf*TiHHMSlh@7ZI^49?ynNWD#6@0Xj3K4S-Uws9WLEq3_8LrcKc zf@8mbs8ewItosM*mVC_dE!qE_)aRv>7Y6-xYOy8v(*?R38(rI+?e&$|5D4tPU%Y^Y zH&KGk(_82eY+uZ3NMoR_LGH>K#bQ`gUsFF}O$U9ew@&*0GDtU78t=+##IL9QDUEJT zIQmaAThpltKhGT~sE(tVdVThII^(bhf#`oiM-YM*RtU1m=Gq#ra-{wy`eOJ z9{94-(>Z%O!1wjTDj_=#O3u1E7_6(r^S9T_@wN)e4UUBmC?#mq>-XrF%Yx_B6cf)u>dv&buI zDZooK4(<9Z^o@zb+nWtI zXK0uzKT*1)wE+{{)KVcwI_|UIe%|L*jt!qw+a1j)u$Q^>CZ;|Q>s?JsD_v^wCiQ&z z=Y=)kj{Z+U(T$ChBZp@x7Hk}hNcG{$=iu6sQKu1CCN?x}Rm;$+#MX-ef}iT@A^hOZ zb(PJH@HY^0yBpsDv-hbYiL1J>VsDpH@{1-IE}!Z18mLEy#$ck$4mPNFd^SXI)6tOQ zkisijgt-};$&>d|U@>IM)>O`e>zO~Byl*5Rb?nocH#rpaUY69d@XNup%ffwv{<(;E z+P1lVK^g)b{iC#Kq~5PM#~86zDBV1iUL@DTc%;I8IUZSir{JWH$PxFV zcue#!K5WWWj&RXBdwc03=&B!Kx}B|q-t9AW4;Iv7I(x}GeTNFD@SFJ-`BM-c{btdW zG#x44yF4_GH``{47Jl=#787-L?3!2d~B@lE(vl-qhYnQy< zU5Siy(Sb4K`^kvxw;UMifTP(Z^WnvfxEZO%xBFcs{O@Y_@c*lVNEnkb)Yu8B(;db- ziZl$zeenvMrC{#fjRV&MNq<)TBY=^_0wr)HUpS5f)iRwkiW;3T>s`sJ&}sz7a#1!z zwjNveZ`iKO z++PApVD>`TYQ`}aoo{XRFL>sHF|;PJ=|ei?GdW=jemR9r^hC zu}S4gdKx%Mr)3C4NgS?b&A}%C0NH4lwj`_xu8?u&{ATKn{Fqynp_8~0`(ydt# zc(zK_%7hMu<<8XYkYGF z)Mg)R@ZK-NjSt}~F3_tX*8TZy$pJcwwRHm7k+pc1dFqk=APe8>g$zgP*|2@lB4qlg z0z4j7S*{l;SmV8iXK)!gcLz_-Ei$JdPKx_LP-FoHYz)Hm*ab)t*tOSvi~)~cHbt$u z7(Fvp!z&3daGR8q>7 zFW9iCms!;D1%GWrH9y@h#;L)CeTQ<>5SRBWY~HK^N?(Q95(2eQ34XmXHiwCHU#h=@ zVFkFiXPVj)9`h~hreC%g1>YO@Tjeh-gOTC&BCOA4ca-4#gfsQMbu}(sU03CKt{8`$l-0%8k@b!9 z4pRP83&*#9VY}AWVSn6GIp^KA2-91Xd*)y*>MkeTamZ$o{-(kxJb_N0llz4Jsu`32 zD!K32l0H#>n40O{0{`T)$M;n$kvaHt&8!w3t5{+4ni*Xf`#Ci#>DmM#i@pQCghzNX zucsMKRiR|r^ z$~`ySc;1VoSp)tTTfQP;qvmXjP6I|h6@NK#tR6;R9!J^D)InRERhY%Y#As0aimoq& zTYcmb6~B~@#y*CCjdB(WWg*|Z2H2Uu6ysjD zA-HK|U&#OaX&Y1PFE8uifB4dQj(hq%pte%trNR z%}}_j^DyImEn2w81@*EkP|trzYrA|o1ee3C>q6LiP4H=S3jMfaxDYhJi8@ul8Co#k8x!8EQK zyB8%m8r8Ua05`Uh0`ghc$4(ol<2#4Bd1n>>!jnNnyAFKYcwoe z@}7S+>9e|`d38g7v*Fouz|80a1DV#}TD&e)!@^YcinV?9kyLXHJ=epc;x}xf>!Mk2v}B~TYH(* zy-8zc@D~OykQ+%HT8M6H<`)(G%f!6t);__PCD35?pFL%nitF6

lR5csU`On%9~K z)j!W$2X;20|HUW|Utt|Itj-*hBHZQo3w!Dm(WA$D91F~}nJDzWm^czwkNc~>%~nUT zVeF^6>1A{+_FkH;+Wwu56-5%i?)EjJLWv%FBaR7+2#rS1w~M!eIkUY?^hQ0VZs{1Qzplex3zhf%JL@ofF;nl`l`8ZMG=DDsN=2&4 ztL$^ni_qNTGy91*86|mqOR`3a@GE>5s>-v`Ve|4@{4**>w2t?GCc0?(y30`k?G5(OBm--X~ev$xK^< z!rr5a@8j2&Vz|~n&AB}d(lugdFXmD3Eykwq;-y@y@6i;!PI&#on&em3X@r+%mHAuB zcB0f#_H=Ag4c>cxpXS?4L*a$qp*&p*v=$ma@x7IT_jK0Ffz}eF?CH&HRV=``#Lp)c zYbwz3D&uK$1Pv+4Cv4MK*CI+>@lcB#;S`Ri)e}j-^s?Z~XH``8akV1_>fT6a0uu4YzYuu?y+ z!-WCq=&1Iom6f=`E7vLKPQf+9EJy3-giA-18}4haL9)QE*eau1#LvVkL=nEpf5!O^ zA)+?u{vxErlMMMYnwu`wK=5%Y4E0d?P1 z!D`f6h+Saif7PnNi_;UlV)Gn)Ej+$PJG_JV7>}cpGC8p88`q^*H^4#YviE8M7F4a{ zeraB3qOVp!MA5Sv2E6>GU)hBie;#=E*WE0*_XmW{PGw@##t^6LMCZILbeS!hVdMOp ziM5pGN?0oQ>=8J{#u9O>rSS^Y2yEovy`YGS0XMI=iwO5s{Bd_`<-SUEb_>Le65g~& zF7-ce4hQK6+#~1a2v0g2+Rwe6fxD;oUoszMV#m|JwRK z?phLGKBeQ$?@_x+0HuhG1D55>7MqTGw6E`XUp5w%oGVD4tHcp?b$aZHYP3f-q|NkG zVWIDCSahfoTUNHTtR>u+yG_Q~C9)28_N<}?1XiJ5T;}LXRl-4@|III`qoP!9hqHHO zIj$G}S+QzqDHN3Yc*96v&bz(EYs-5k^b>hlW<j@v^>#G0{V;WR zK1s*Z(5SGbEE9c113etsGyT)ampXKuMmIq3Mk(CPsl3zT$j z_!FIWKW43&Ol&^vZqEf;`Q~HY?v+b+n38?PO?z4MC<(s1)UKcFNQd6GN9hYk(-C*8 zZ-xANqB|-D{u?r^gk(MUx4865tZt3j<@>1;Ia`v~DQc%<@Kn;r?etV6{Ybr5trAAa}!6NU3{&t)j`Hh_oM%Wp4-iZGV;df_T6 zD$bf}$08Yw^jDwusD457x6Q|WpC#hQ2{FF3$w*vH+V?mxF$gaOot)R1et@s{W?I#$ z2;2x!9oC9%0GCqztYAGAs@DZvf<7cdENkG5!SguKG$KWn&%~p2SDIu|NCX-glGKb} zfr#L)y#6ikJ#@A@o>pXq!XsX^#hUm9H0Ihh|CYo+_RmhGuD?;R&Y7O--xCG*-2#I% zg(0Nhk+41F;*W8?O`fBzff$WjzW8PPJG|ug^L68H#E&-9UpWa)$Z$I(U(Ia7*vEg2 zB2GO{2)ve-AiC^d(^N-JU>%P9)_%UjzYd;W2{Ol0yTFXPG9J6H5yGF2DqZ+ihlLv* z7cS5t|MJ#)H;{8e{oZS%`r%si#2(x}+1iD#R@}T*Kk6{YTNHBOU>!P=#bwpL*J8sT z1>p`sQm2*PdbOW!h5MUVJ624zA@$Jdo_V!4xZ1Szn#;A}qe5G9_Q_t9aD^IJ#Q`eomgsK5=wM>12H z^*#f;v7<{^5a+vUe=PlVc3W;C6(P)|4G1A{8YG+0?jMYI}y71AD1#Fz7`oyao zu0uxSn}5oF)fl=5pZb0V#Bcc7P?H%rvDAB1J+cH}URGPp61~|a@7CvXvlvsnwG(%h z89vq|b_9#A~pm1P%6cG&jpUd|MPQr}#7v#hPYoy!H{^d8=r&uaxvv>k2hI z{-)q|9G`!Fd?Sq2JbPcftHA}IJxLHtj#OUy*5MMdyke?NsQ`-ZfBgDI1%9 z=8L6>G(zL3aA;sn2MYA7jp%(GjO#x0rTnQu=kSg%wp0cprKtWXBrl+ln0Y_)Qz_Q^ z5B`^YB^?@}=ZzNVQX!zNayHVd2=-^G7xL+Blq)_=8z8zd(@5R-aC1FIG*_7zhmrc~ zdLnU)Hv`%2`VSLQKf@?9^<_|?_in7cQ;Ux_ zJbHyvM2~Jg5>1z>L!7?!v&Q>1sPj%&jU|1R);)nHXW7OPI7VT4cg)!4R1tZCs0H~(f}p1UpIjEjQkZzTtvHBw>G zdvYS`LoUpkqN`ZSshGLFd*DrHG5*nG-%VEMK;;KLq))#AT6Z*6PgWCNa3t;3N+~9` z`A`~v^)pcs-O*I1R*n#zhWA==4AiTfm=+r>1D}`L?rNu6%wp87r}+*>DnE5CFTT3vGG*M~Gh zQdVI~|1;rlCq;km<*&r;akjR02ov%TsNyF!GZ6k~CDnoC46Lr4UC0ulp!2rl;`Wma zJQIzJNph${pm6k%TYeedH|}H_5uZ=%5xdODxCEug0!~ei5h0j0~qMOr1AAc& zME)awpo@o?v_&DdSe!KuNX~(TbLWrY_c?g>#AC^}gghvmEO;EYz>Q~4D?xN z+oj2u!upzp&VO1ZsL;s$R>>*BXFh&DMd@zjNPhgPc%6*_<3B93J++V$y?)&H8y&`7 z(R~&Rn0WMDB74OU(FZdp11xll;Hhg!*ApQ7W3tOpXBQohua}E4)=+UYpzA{Bg(^JK znB6k?w-hVZZ}z5i=b(tS;Cr1&Hf)O@ul!5&M^+>?b+cnSxOBuTPHJaDihuc&m;LF; z+wR|Qpp=4y#TuN&Pm6H)uwVP~o&qRHOXlb#6@pysT(#JZg>z}51Cj!DFmN96JxFx; z+}@`?QnG~0J<02C%cr6&@a|zA;-8dfn)9rUs6clT&v-N8o~|p*M@tPDSoC1opV!n1 z{9GVT@7hCri;MF-=SZKo_Rb~26p|mB)VX^2vqnBH>+-lc-!DY!9%UUt4+@TO^VdaE zi?K|$O6QeuK5Rc0+W5%Rki~6xSxt}*8-2bE%@;IG>+!Z9TCk4!Ldrnj?zj^ zxoa@;d^Ss`hk_G#10~I!iqLyvVSnZ7d@SNi$)s*8#I_N~yB5nSXy)ub_25MzIu(7Mpf18=yEzr`+_uEBAIw`MAfHff(j{hv*rb+mBh~t{p}H6fjg(Bmg=Db9t(q~ z?gv)D%D~I_B;h$O4zF}W*i<;DXg1vtAoXHk&{+}`@Fo71xUxe@E zoB9mU7ry!HzbX|aYRb8?{F!LJd}@`KS{^)QyN_NF&c(Te5!Yk6nP|WBUWaj{4CcI) zcTb6rdhy3(GxtUEJqE0kk|VwmCQf}SxM zOP$=93F%YvXR^0t;n4m7r+s7T5Xy6&w~vm8(u6t>mtia#<=z%nxO~FL6$ju9s#P>b+h(2Nt^j)=Y%zf{*@VSJSYiH^Q^jGY5y#ibGA$Bt!bTqHsvi7}H zDV*PYemX8sf#WHwRi4DB?7cFnbh4HBWHG)uOv_T-cUX)CXjfPFUxFTYDngA|3a`*dRtG6wcl z+_BDraBbwlJo!wFx|sy$uP?_RyLl=86?C-C`R%x7%fQ})4^;VfuwdlLu8|O{1@r4G z-KyAX)Shw>TAR$mVwK>)H#b>OuCt3?HNk*uTJu4r%S`ZauljjLkBSA#dCT66(9pAV z)y9ex2Id&ynS6qEK+_=ovp<8)rqCg%A4SM z?$aCPscPbXN41{#$wH1Rr@6_r0$JZ87tgG#K%1ecmj_=pv?u~{BYEY>I>(-$?I!ii zl``Zx&qT{X^|X(w)sQntCRxh;;^R*QyEVPBhsN;uy=sinAr zfz#2%dm)0MUWC z29$p<`7oNw#y46(cbG97iyafYznQVYs4q6xAzc2CYfdsxa~VQzd%0xwm4c=C?BNn} z4*v;Rp?|A`3bTm9O_|%Nuqz5Z{)nd(&u&+*w+-q*+1970+lbFUFR=XUvb~jfo7*nt zAI!$?qRp$Zq6)trDJf2F{9aa05u|zmfd~<6{Lrx=Xk3DL4rZnO0;NNBIFV}$;Zd_eyT7}^S+|PQJRim}5 ztN42r9WH4nkLlZx^X`e0sGJ9l8kCGrI18r{rkgCHuDVu4T*R}Xy=A16Jxeg6-(MQ&0Rp7oyc8*>F$x(UjG%|~) z;s)o7-6D?$xbK-4UwpQaoQ$pKelBQ&TL1ZMrZCB`buSX$%vXbE>hkI);v;@-)V#Ot zcPBQl*9=l2JV)>FvV9@68uVR1;eBy)1w@b5U&{4m!9)MWclEbjsE^aSzVH$o(T0s2 zw}2X)>An&WO8(z{ZriWB2Wru`)Z}P+UmadN6jIr*O>#KutL2lfwPMw!JqL$MYH`u# z>7lNj&FBb}qw02bZI=Q^y$xCqg;S6cD9&W$#DK4}^;PEN7kDH!+E>@5Ky`*!Y!g|} zw8z`^CyH`${#m1kR0rYh)lW{CtgFRIf0^1?!as$iiUq3b>cA=U`}BB09ZZ~$Zr|rz ziKizvtv*;v!K!uf8>e+h|MS|{F5_%SncKAI$7nB9BN5yUu zce3z&ZKQVtZz^=gj;8Eco{8U8Wu4;NvSI!G5XDv+;`Yr4$Ng0!5;neCj|IyL(jrRxMuK-J$V7lLP8FgR!)*36^(* ziaGzW;XmEu7DoDv6!jZUyupOGB%OV-@&g46G_^G{eib5kP42UWfh4zlT-6hfoVdyE>90!1hE9*nX3{_0 z)9p`NY?p(yt8Ll7gnO>)xN4h`kPqr_#X@=FcU9e!?BZEOhqmM~+BkPNv$cvuusT?R>0yntX5vCl@MNj`sWu3$W&P)&twM%>b9(F_qi? zX&Ao8sQPfX45PertNIRPAc1mc_JtK4o-XX~>3$`+uNH94*N5=X{sG}UWftbPiR}(g zsfJVTn_>TtG?-T|&M8?%gZ7WhY-%hW)(%@Ig5T27vBKrA8_7{`6_k~-$}EI=Ek{S5 zuME4Gzs&nzP;f>jLQDJzId>L_*qhP{(U!`Iq8%$kwC!u(;bsZ~Ywp$Duw)|X`JrT+ zL&Zp=+1Jv}Gobm=!uc%m8+YcVde?5_pnOD0-$#yy&lc(Xzy2zP`H9$Lm6~+estp_6 zdR&PI#xdP~cPinPbyQ!3_>v144H7{|vhlmlZl*W35DI5!E*1G@Vc~!KIEB0gxE>qm zNzu;6>ba-iWjTfDdckWIwK^MZn~o}Qc#8?w=lhRdNqkgSrSed#d?=3C|8XEZ)#<~+ zY>>Xx&qUBk?t2CD=?l3Y8#8cVY8dlh37#0u??5@1!(frG5 zbn|R&*X*gn{nksO^`zdos7*#F+$%w|(f1=KIeEAiULgOaCEkdC7s{Elsk zU$I3gY0r9+bBi$O==k}I^mivyR986BpqzZJ_p3jtcW1lCx(FZMeWv^bU8f2z67k9Oh+?o@k!1VTEDu$Y;`qpS5H@h|;Sr)_nub5_V-;FDb}fTBb2h$wtaTle5Vo+1MYHc>F?aD(3ec{aUktaQ?O1 z$+bX@;7(x#acyZL`p59xGs5ro)hWIVgJ#n(dAPCq*``dP0!E92k*P{HTy}HgC2Z`<4m8 ziXU5Vm88PO!)Wbp;&UZ)#j;uk8n9SHXOG+|8a{BP-m7zNnNuX)zs0Q40K3&b_#&T!0Z-4ZD)m z1{6ewlw5IYghJ<*io;(Tv6=oQc2=3_%kTTo{+Eua??BFlM)vAl;DrLLjQP59=u&G+~W_B{Nb0= zoT8#Oavrp#+?OCZQ<)K#_n&|u}E|J7bHI)z!n7_9=r2%##JXPavjgXEy z5YVgAi9*?r!anbMF#c-V@Y0SJ*nHDdJyBT;{=}@Y@5^f8vmtk+NR)==+CTS;Z{cD!GE2a0;y2VpbIzR@F&lM_r}i@JQ8w}oB5W4 z;V11?+xE~%U%Z2ICN&p4CC-*R8c04@ELOLa)c5o9FKmXtau6QmtEN3$i-4A5;|(PL z5fT2Uvzw;^F82B27xqzb`-(-J&TXQ%Q{^If{ zDqZz(VcI(6%Qk{1vF-<~QdGX`pdGrBs zbFXR2#Oss%l~Z1Xf7*??RT`1L^VqlG;_U@ERho0%e*0d2P@j#kWUtjoV_!X$q9^3BQB4#IRuE8XUPNAjmStM2w+B6*mg zaAo~n`^ooa*SNvkwi9lBn|=EC)?ipczV*8pnZsIfS93#hIff?!r^eFq5h8PF=+JOB zQY$XnRtlxT?qibq+{OYdk`Lnvyq1YIe)|R3W7!b#P}C|ANdwKCHud~PCQKITa@*}7 z`}_E8@{{A~*qhaxY2}nm`h=f7ZAinicmt#s%kZ znw>30_^$Uh(zJRkfBpNW+6pS-Wn+KrxkPkO*z67i(*N%lJKXI}a-5G=#M8xUDxll) zj&I@w$>S_NFBM1n&_$!6W&UIiLCB`?@-MLx_=YovLQj)Xk!s8*)BGLX{CxHwICyw7VpCEeF_1avS(CPvEfS3TbAd@jk?tx)i%|5Bs#HV%R!P)XtULlC-WA3raxl#Fe)*&Lv;VE)@mH) zlG%{6wFWor2ITX|T;ycQZ{4U!qC4tVrlXrRG zd31K;k+;I~rk`b4uZ5RRfAfv@_R?Hp0I3_@<7xOuX0J9(g>u0)n;+TrJC} zco`gX?d}Z*2CYvIh&Yiv!*J=YWT$HUc{lWI{y52BBry8l&lCM~$x8d}1HyMVic<0= z^Koe7IN`F{@8WHt(B z-37R^XlY7QLlz=@pB;F6FC9#u?;>snNyr?CZ+T%!%WEhoA_=2iHeBvF`?crDt6opR&^uuKEKprrnx_qqtJbj z?;^?h%@0hZCy8Vs=Rt`7;z!vy^+erssy-E?Uky_?_;jJ0E4zlPnF{NoVvP(rDo%Av zJsc#t(&hifD!Db5VIoGO^+9kIj;&i1yJTw>{<_;(f9a%Ry;I_5O`_)#BTIT-sg^=? zn3Cmnn#}LM*4fV{^Dc2WV=fo!r{k`Z->Qp-4KOL+(@{Wt1GByp1)tA1;)r?D%a-RP z=ej>X%w36`d*^eLQVodj_)d^()zwPy{L-n^44@&#XtHhYQ3;qGyPXwX@{#+nKww{e z4s_P^=R3Yj$MD^&S_fphz*prReDE{}7bi9tMIULvBBw6<3nVv~Zeqn4B01v)osx>C zM=LS&oc=_`ga$9?=eriq5*{))ePD|;;fd|%?B9E(!&*mg^@K|j_%A4pK3>yB`p|%h zCYc6Yvdvw6p71)#nXjmmtio~rb9X|C&nG$WWbl*dO{UL@@igM!wePi&*jZkPRpuI} zes0f2uN~#I^Vf9LZXVTQxV9qXl;QT3WRCaV;I;O8!h2Qg7if-=_gz^%{E&KL38d?{ zIZ>*LF|_k*+Uo;kZsL#ZhS%4!p^%rxsaJA1b~F2~#!Bl02u-x^+X33n5lG%|dW4_NiQWowvRVU4t)n&OhbA zyP%`7XCe8V>Cr>lWPba+T7PxO&k`(SiTz9u%|c6ggp_Yh8kU48Zk%pu!`IPui@%fo z`A9iB9!tTZ0s+2?b+HJ1@?2!mTryT)jXipAEEye+VmFFPl3{d8^QTHdG9ufI zOiad;vE#4OV7b{RaPM>eR}&fu{-s$PME6G$KlaU;I5OvY#n^U}@aG)tb@&l|c?FrD z>-f0bJDv?yzhzl=eI)PqaCV^(nKS0w&E0&I>GwM7uWI4TZSY_t(WwXGRrOC!)T3e_`Sa*rjj)^865+L)jfW-en|vl2Fjru1 zlpwmQc<+sVc0C0p3ruDly-L8Hy;t7FITyaC8+KEFr=xm8*K+7~HcbEAo|^B@CG&I_ zytuV;5p;NXY|Jkk7W|xY4dU}P8fyIBmX(4Soz0eooMdR$ncJ={{enix!|m3K={V>- zEH|f^4;|6BodMGos9sY4!^MgQo2x<>#rBZ?%P@WY5aE0@*I0o@z9^Ozdpe1>nfwuRe!;t$Rn){iM> zpiz)qP<(;hOCZt`7p+I;bM^AKzHcP+lkw)#rt&OIe@shJu_QcLadNW;FC7V+&CTp= znYf*r(;TE*3a+xZYXV8`>`3BY&I>~dM56sMaG(qqsth{aq)YLkQ7HfUed1pa>V24{ zmEp;MR|OVT<>Eil^*qna2xl8EQ{B9V^jR0X;+GMQPd)OvBK=@7+)8SXM-r~6vNgdW zvbz)(cIzMUGdP$HZsdJM`f4MunAtr(qg1F5!%ZKK9%T``y0N* z2M#RH!JR7|2Fo}_`1FkS!dR^chkDNzb*GW}A)(QQtwt26P5$8=Jeq|t1rwLW#CP7K zJ^bpvSvvNt9U2?iQVg%(1^c-PZzyDK9jqn%=l9rMHv4i0>MS>Z-7;8>TXU^O;=d}e z?!cMRc(Y2ljrfbb)n$R6FE zl_j3lt^*H=-ufJQ;?0K=j1{l{!%zIs|Gq0kj#v=RSu3*q`{zo8O}BQe9HzovefhIh zAbz@r>cZ4zRKyM&-{y|2!D{W)uRS+v;q+W%p!Zr0j-}k0S0PupsD8VoKTYON9a>}t zGQw++aLT4VZ!HT;N0@;ZWUAr)WPEPy9t(T9=cnw*K4mVyx_*H&$&CrA4=UAGV9(`) zw=E3`$FDFs=}dABxuXJ~-HIqs4_)FX#$NzmIm-UPJ57-N@avw&I171fAHU~QgsYo+ z-^(QP=oJTLccoXb!1H8v^TNN?5DeUZ<)i`=mX`aS_{3N^6`)aJltp;*Y$&tQj(qNr zL&%LWCYp4$KR+Y&zN5f%!t+`&#BX2nQ#K>q&}(@buYNXsm1LqLJqgF3qDHOvZo=$= z&<%rh4lXG;$*7W_z3xibW|6$>3VqW9=ck#tTbG>Sxq$|?^R8cbUeTd1b}dj(j0PED zEq?~30<-&d!+$vv-?iOiPrgJs&W>n%{!}kOr3dA>V`eras(*Z|i0;DeC&P#03GaFv zHZ~0hqW?Br)?M(e0-r_uV;A%?;Mn&rDPTPnfos0~8+=xYs-m@eyQw5Uy_|C=<^j1! zAo)O8D4Fx)O_&r*CiBQk_7_(yy_<>0VeUd}@2A2`&be?yNIN#Ua|A=>IT(u!bf1ns2a*_z3pB0(glGWKKyXDn!|OTOHm%5y<|eQisH|%I_t5%fMB4 zoE2_YhF>eB_pb2B2Z^a%SU!@4&5tk0jF9>+&+4mrySD-H$xhC5KgnEv-|xv7GCy_9 zuWElVxi{pnyhfg@AenDnBQJAC)@92r=$BI`*j=I!S{LpAM8`b|wFQ<$E+UDMXlIeJkK+Eq4qKr@An@xYm!ccc7&qR zgCjj~3_A0?b5RRQ-1)y65x<#}P$kuwlL=?UG1EPg(RqKd^2dQ#oV~p}W1%d+{T=?DkMgA7C(Ma1BYB8 zp|ANhnD&UXxk!A?os|ZZ*?SDw8Xm})>8-%skIOP%)z@P|5&enR<3{BDyw11wP#3&@ z)E12Bbm6LkO{rf{Bk0HK6n@9D@oCN4%;NiO>{vsYx~oWqzUv8XiDmgnmV7wvY@7wQ z_kCT1>?{PBJ!&iYl8odp(*O2K|;c<-mjS+LsH8ShNbfKwvtet%0Q_I7EvMmA^Q za{cR*N$zndSDN9-b$oqS0 zJN{xugaI3)xhsNu+KG=N^QYm+SUtETMb9pqB6;SG+2-e7kR0OAxAE~SnCMM6QdIg) zA-O1+=Wi;+*v?Y%(7XbCzPESaZXWSRu3p{r-<2Y4UHWB4hgyK0PcoQ02lB8i!>5!DkTv`iq}eV$jFwJC{k%BTPj&aq>!1FP4?b3Tu7djrb(R)=7fByDed4u_q65^iM(~;Fc+&z|0 zIyD9bci)*jG;4=Xlbu}@KfZv$e^H!=a~r^NXWXJ9qXh`V-N#6B4PZ61*PAUL`8@^( z;i(oakXSOU?ibUD{$W9G&nEnP6KZUXKH>MAc}k*y5AP+}^?BzCi{MCL@6C&Pr4W+6 zH;)x{uSYKe%oj?_V5wy(lJZPFba_@uxW1}{;-a~+&Dur?v>Ez7gx?<>E~d|Yp&dZ} zDutStx)tO{zCX}8*$SM2Z>?)5nt|$B8*%Mp1L_l_N2N-dfpsVRnQQA8xFnS_Uih&Y zzD;w^Ri4HCK=7d`E6m}wyBpq%I*$GTH@p zp2m=HUkM5Io%O!9InPG8droh98huZm$JDL9-YbQs+i|@#k|fA=xzEco-U*wO>#=tx zI)HGRH7!V_13uFJGiODfK`2jMl;%(etR1lU!~PoiA))`6P21ZcTJ7JFjUd!(JU$6O zkZFOI-#co`tpqS4$|usGfAXids<=((<;Ln?)-iVwlKb z?NkA=EoOf1x zP2@m3be!{>Jda!vt{9^ifBBIgmHsIuue1ej{H}L;nA!;6@>`GjN#mc3X=qp?N3O;Z zX}yg9&|ka7QS7r`1LOg0w-Yxi;LO1(4xyuE@GGOMj4vk*UcW5Je4f|~Oyf;EyM=ua zo(Kvqm3`nZbx>F`uvG{?f9G5A8#aS)X21^vcPB=)jiaPTAiwJacl5tFGOYta{&v1`&WTy6jxliMFs z^3b0$EET}8*$C~j2l(19`Q>B7x%0{BCsGl&sbb26868@l z9o)xuCfED&q(8xv5}&B*f^kUl*B7C#MBPTRQHL#`2p6;_h~_vCeP7LZ>jIuU*FK;IxygH zI?KUc0bGwh*o;S^pYq%}i#O=YJgwOGW9cf+%_`IH^=FH5&m6hYW0eOBGqNcwE`{I{ zO;u=z5ai8K$FQ~e&l@^uu!k(=N=fKG>*mF!y%C5c(ioTdt@}BL2 zz-KRiY^K!%|C=GTp^vrDSZi-?%UBMr4@9@m?kxhz?wwO1YDIAFtesr#MiPwEf4TGU z>^LN{pO|wb%Tv?we7{$=wcPz`_V%<^12irvGu5=Fr(j7Jk3tlBL&>5 z(>gsJ2f?CajO(iFFqka}J_+W3HSsJCh{oD3*MeUfnTYf3J#=dsxpNoGKF zFNO3~+;6ASjZYXZhQk;3uWk|?(=gD^oY>?w2&EeyMhTvU;FfE1GuAa9?iLsN_NJwQ zyy(W9HU2wWoXrlo_$LuowMs7fvj>81V@dIM(J9!^qJ4n}`9_xMrv~_O|6ZPK(B8X- zI!xtFqeQWED2o!Ok>E&!te+c&DN$i?`SD}w|L^m;L;AENJ@hA^cQ1UwNP>dLw&Nu{ zB+wr4|1TLo_X+bRe@aeNgO*P7Vqiiq&|K$K{oLIQGnVBnQpkB2Ph%^CscIN=(9v&= z&4pi{@}CqQbpy@HW}zc;i(2x$+AgAxX56a8f;tIvnLeXMKNiPfmYLX~h41sfO!pfk z(SK9GeAC~1sT1}^L}X=|cEH=Z>7|b+`rtPb{){^Mpi7u}%$mFlrmgOrI(o1Tn%zr9 z*YW;bfB4Blye;ahfz0VS21TjHf=33Nyc z6^E^$uIJy^HF~-T4y)IWM_LrYzth4=nf_m3psAZ<81?a=-ydD8)kPlKB*$Z^Tmn4& z*f_WMawlABpK+y)X$Q0J=~gD>h`k8y<_yK04*hd->Q&?ve71>td7%!uVe-q1T^I4W zW5KO*{9p}~=V&#zqK}V~iFm{Wkh0A+FAX`&FBLf`h2vg3(?JiCc~LMmCIfKrNiZw1IOaV(jg=G zfp1)T6p9wtC;v9f2 zk^*-P`frOzO8T_$j(n}1+QIgE6GVB4MX%v=ku#1rrFyCvXeX{mSfKAN&WAK?n2x#k zlwUJ2%QRLY|Fl>p!Of*@bJla*eY`|9J!VZCuI7^=S5P$ zgMLV4&$|+^&{p3L?8}9tXM@aybIV~%`UZWAPZ5L$8p#{som*8|?xpUHJ^+1n)p#Au zle}aFX?h*Ex1YX5E(F3Idvf?D5axk5X6-z_j-a{^(_v!G};8qxQ zWf?qNN~OK+i8-()+RY@R3a~k`>6ym4G|4^$??kDAK4bmU@6JhroN z32Xx$uQMxkKDF@k!J$X0*N|iKis{ke+B#t1HcaZ+tOMJ0Z%Hq|LYVNbd(O>({7_9rgd3-z!!ro?OwKhdV7r)WF+Bg+C`{3X}G<0{8SLVQaAk*dx?O8k%Y# zYjjio(k_cA*$^4ryhxoC4@8H)LIM2< z_#xEzm&r30P7c&5WMJN`r-no+qEHAqR9fRTm$D$>MJMlJuY-Hnf^gJP#kuaPh-LN>5r_;UD^^@KNHA!0CRUvrNrxR z711y4DP^*?`5BtuD;IO^iH0WH?}g0og5mW9M@~?4IB0Rxu)e$V5i-5a$=;(*uD+4O zQG7cE#_i7RdBjx+{Y<*QA3Vu^&NXaHs#HyM<)niL-sz(fF1SU-Laywm-!I9 zOe*}EoewuD?x=mDPX`rUO(V_CRJam;VBnZ%UKP3g;5q>NP*~fz86tk@mdls;A`{b#VCIWF`vR(L94|I6bua-(y zzyk2}H{U3M`#;>J_x>$~_Q>*l>d69tOQbdbt$eum{_NGTx-=-pyrED|3~+YE=%^eH z1sl2tQa8LJ;Y|;1$P>*dxNdV~ZmhEa*e_ku5Mj&&+4>1BO)1nbr}%S4eDi=dv22d> zW;f8Y(Yg!e^}?plFR$&@q1SLsDbYSJ{Q#A$t$0aX#x8?-AALWEv_zT0-AQoVw!8Nm3vv%Dg=b&+)B}fRthQ};6%d@w z&KjOX&IiW@t0~hu(7JIVpB{4?CNCY;6LaezK~_qg27Sc(Y$qE7e>Z}{?G1_z{V`yF z&s`ZJN&;^ai%WMuV~(MMy~e+;4J_>At(V#BV6QRHe*$h5AhoAxp%Zfv(G(7E#mH)a z-jzwmjJ*}eLz}zSQX1hRe~8n+CwQ;_M6ug(t^*?0xyc@`bipG*dmFu5yp*#xJ$P%;Rz!pS^83|29ke6n27n&m&t&e4o9qrn%AI zOM;v$%S&_`olu`>{`437IHdd(W4Ky|+$tJB=7nDL-D*$PPC7I}Wr)e4%V%0)nZS5Y z0QqV>ssGVf-{=H;1)W;LED2_&6TXb&{@x$Te{&sm7hkp;8viK!VJqKY=jM-YxXHci z!Qs{onlcZ!*HyaUK(%sLKl+}F_Mh@z{ekmfvg7o1{54xAv3gRd8GI*aj+A2_&e+TK zwT$inaQjavIMNQm7TH1KzlZ^t^|JWvST+D62l+U~UN=Ll#phpTsK@?3!&mKluMR96 z3=X`|CcujtFWM2)DL6Z%P0k?E50NxMb5`g2A+I&!`k+r8s8QW6zwo#L-nmmTeyJ{l zlV+iRNd7et``PTnOuz)VT{F$UW`ulBq1pmoy%tc~os>{&>V)L{X%p(0dN>yxkQ!Xr z44d2Lh8J5Vz(jYIt6{4VCTg5du_ZS{WZToF5l74;gpA#tBH-PATG(2`yB~frbUb0g zoagIA(%)pO0l2d5GrpH)5Z-8-mP)xz!sMd|3)(vUa7Z2(#9#{b%8Clew*g0HrQ8IMOlt|n#b1M+Antka37-X z%oMJN@jH^?#Uah`jD@u4yKDa^i zJ+zfF&Hs`F_7A-GUS&m&-q|6C7R(oJ9JWnQQ$x<{=$|h;&s*RaS5$s{Gv+t`IxVmi zH^DuX2aAK#1Xx}z@%#G|^A*wB!?|BvfjVLoM>`;|pKYTDT*+ z9wjS?`hBW&$^4NfF!#>Wr@!z8%CAeGx6*9^LvyX^ByrShbaFl$M^=Ho<44|M&I*vu zJ|yEvQv`X>7r6s;Q-LDGxBPT+9H{y=bGwY=7JVf&>7wYCm)TEbVCqQB*BIYal{c?6*Iy@_Bgr!l1FZGrcp#Jx#9YqD^ zKV|+1*M-!=AV2N6qHjB7QSv8i;~v=hgemCNN6c%VY3M76t_4wU_TYDt)ev#=@y*d< zyiZ+{_PBW<3vAQ$&V~yl!DDu_=Z6x~V1ecIU7uHJpdKUh@F;&d9Ll)6B!GGRlJ1@P z(FYaq`o+h}!HiO{t)R9HzB>-hYi~_AFb5~V5yn5@RRgp9e|hQ08!-=P!B=g9-Re}aYAm4b7<;w1#6GgC^d9n47Q33c=RmjzgXF+3{;XZ%E@H@oi=~{3BInW|+N4R8Bd`GKxWi17Zsx!~ zU)h_?$VFYgt-W?1{enKMIq>tHtLswN$iddZBibn*|?8yOZ7mU#$AVZ!UXtO9^4v> z-&+a&V`k|Tm5?o*Rea@5DM%a~Yp(uT3Q+?8j%sKX!6Sy!CK37~&}uvQsgWfE63mlr zSmR>hlZa|otXC+6Q3ep$mZM>ATh7OtEgI;b-gps&{6`Pk9Jep1_>H zKTm1%VVA^JXEE3Vw~QHQf0^A>gRqz2f$w1N|!wk*uCLxYSRr)wCW2Utg(Jn3(#2#{M^#i_1Ph@B88F zDLEg&<%-2kdHv7OS{B)J3{+W0A>Y9c58vnppye|a((_oOG?Sa;i1%(!T50`u( z<(-+H7}!&%ss|cH`JsBeWv_mH`xB~%MKH$_%#7HWvTW3F7*N* zmD34=0nR1<`VGgC$DElFwx9>dP4&%8y28`|9LI=5`z)(rzH#3UZDS2sNIVYKL_M1G zvbE;7h9(d=KCqVwb?Cg;;?pts`LU|pXx@W7Ckn=$3t6S3a3msODawolt^01C{=3!! zkKd?eB(1l>#qo!^%{=(L{;GS@bF&<#f2PL@bKqPhL*(?v9Ogc1*Bop7UW{s;-gW6g z-d@Gfy94?}V7I;HN{7Db&d-adY@NDcaeex>D4Kor? z2PsguyBfQ(b(F6i65Xxm$ZxbGm$%q?Y7^%fg#skBw?M2f^*jHfQL}Al_-# z_U}*+0pIeX@-oX1?7w?n+&2+90LC#QCC6J~{B4|$>)AS}(Q%$sF(rWWOFxVInUla~ zF?{o8MnA;)iGL*}^yA*gMs^SXT)?jrk9@Z3VV@bT%35bBqz}~4YRTeVlvpD;cxnow ztmky7^(W8KFOXu|cUTz;=Bpj3o z(EQB%VRR+({F?aA6JH@Gok{Z>>ni#g)`$Afp6-YAQqQU|xj`@z=RMryfxOf>8ULBu z0XV@JX%)XS2^%Nrf|Qr~pgH`0X)tnYxA)JEW{{0TNzV(aQ>uOF7a22155=6%lfCAh z@qHj~(Dn8z@(jig9qPK@*$M&)0Re9YP*=~{eZg`R^&TZp6X%&a|tZNc!uN!=UUni|g z{==WM|6Vh_eQO=y=@s&O7N2+P`Pa#O-8-RCM`OM~3+H(^mr-(`7UViIxThmmmwP_4 z@aYx-lyt;fo;_{?skfy*gpo#|`7b-Y4gD2ZZaw#%2mK(^`Yi{|kgv4;BqZk-e%^Bf ze47F>ui}}aPxMC4~g+Xr}d2s<5+cU2*|MB4m z4R=H{=E7aP=>3pevc)o9cXMwYydLLPVn7|?{iU4WfcfQ>hxOeGIKS02MTxEkkwEy& zLCF#Y5?nA*MLfs?OM?5RTqpW+Ec8^5V!wwpq1)y;=6)xIFH_LtytHrkLq&*IIq2)pJ?uKz z2lh7s7Sj3EF#w09C{ZUEg_^5tNG zW*A)P5UN%A0!32}7hZ=D;o||yTend6cgf%A>kzJh!+s+cS$MyqvRSNLx|$99)gw>$ zzDx$5`Q|`)o(4_N2D#e9azN{+DRD-;1V&tK*3~<5VQIx#K%}S)l&Grzp78jzuqb zlaz3-jgU?l((eQjc}+zL^IFXD)o``GsD{C|+l_1A%D{1@&1=LsAFiwSh@~FRfd7_0 z{aNMB0g)30cDW4&KyGF%vsqOJAEk9kZ}alu{(%m@vEFj{a$?JhX|Mz`?|-m2(;kBi z3HQAhxQL+Tq*D7Gd1fQ|PT~^<=(o&#y1(FMBWMg~w+hMD!BeZSBd&&+PmOoB(lx0E z_1wAtRwoPL`5JY~e^CWs6RdhfF)$0V-YuClyC*@^dW(^Y=qKPV(Y01IjE90`8BaH- zWH|r%pSVF%F8Ed*P&pf&3dj9!W+v`005PM68&k~LkoW9HMF?FR_?vfJ6N^Lrl;Gw@ z^|S?qKSj_RMWSxHyeOY~755MsC{HJmofyI{ǩcQrh1q+_`=Qj z?0HQV$WDAQjD{q5Enez$bSWD61h(c!8sh+LT8z5)B}0Ky|M7AcoUdYBfSJI4#UQ0ZxOC>neyYASSQ<=!>M|AwRl@rIw-m$Sy{on3eak3t zJl@!H=5{%&1>31X+*9>1p?TI3~Ky_~%&xoRj%yKA4ye1dX>sW*^glkm%{a%McGk2Khz7 zGhqoOlB+4r{1i|*5N6uMmVPHO)qMSrbf$PR|H*CgY;gIVl#Vmg&@Of|^ zD=tPp)O*UDc)VY!>}0nq9x8>a%*SVVSkc#T_`Z6dNC~{$CT_nr%mo{<n5dMZ7 zRk})6YGr)RlHAU(0N(c`e~`9ZYvEUgMY&5rJsca0ax$Z7hC^)+LLb>;Kh2yZYfl3K z>Kv#ezGx%=d^_)lObzBDM?R5_Hx9$M8Ii38*KYVJLzyCi^U9Av+H3r}c(+=p{KLqF zcd~HbkI~2-p^V(aHR*zThl5~WXEt+v;m{rTMi9zX7$*Fz53dAe(ti~U=H@$O|~0!0I4B&0Gw zRIP^dC+o{sduzb0vzP28eELky4@MQ%g88?`vJ9nIYBt?(>3 z|5E(DK444u%UexEj+9s5BW@Awy%Jq`r$y5ZPnhogypDXURqaR%d#iTXGT*vwh5EnB zvxvP)nEMpvG3txXZ3p=oOKOA40SMr{+SRsa2)NyKdv=Y6pd!URM&raFod5Tq?L2Y~ zT6QO>6OgN={^4PmtX&N}UR*Av!ThaF06pId-xT^YOc{0d4M6n+lXXe$emJLmWB0BW z<~T0~I6L00hIo}+zbGf%tCNg#{hw4qw?5^#VEq)Z4wVGF_}C9;&Ysw7gTC<3{)wNN z@x4QP%8$fFR}DoL5qT8ICGCCOCnBRT375Z{@is))!LahFJCB61e`{(vjeHfkm0nW^ z$uI|OY_vmW)Q^0%eQ)i}qXvPXr+m9|U;yM<2U`cO4ub4~^=j|KQ=rr*f3+|exx3fA zj4hk`;o$frgfmaV^F;RYG=02(omv-ho0){5jhzYOmR_K3*hAI%wG-Ajdpw5UAb;py z!8zw)0_Yp?QJ>HtfR z{~!GcqljGSzRLV?XSE2{l+--!>e2rUm+r42e=y9L;!S~713Uz(3*Pp4pYB^RqAN!q ztJH_PGdQOcMo(T&RBngdwiRUt?3r?!?bm z5gK;}?;dxnfg|>Ex*WLY{3hA4YH?wIiJGJi_>*8$w^2GTr~^{%+`3O;KEwXhT=$Cw zBGA3ub$zQ>58mOTRHr#h;e7rB$uYw`ICc8(!+Uu5@f7-&E`fKHNb-MMG=@zuK|}qH z3-9ApE;U}yk>e?-$Hb$F`S0P6rt3*7s7K1Os&S=bFM(%-#riuEd<_{nl|PPq$#Iis z!l*}1E1rKn@Rk63pGEbrA%B7|Sy^Nc^1L&r^ZrHL`T`pYl4894L0rTbOxWw=G!LeMalrIkkfc95A8!z_J z8FoLf^%eR8SAQ3W{#C^JiXvq*s|x*F-(#MX|3e<*k#E%@*yr|v{#epdGZAX_gYei# zgzP_2-7i(D;Im50Yu}u5NXfGtW2P*E0)cVBdl5 ziNPA&@88KkKR_&Mgy9PHb)I~9v1Lr?zH(IjBfX#U4y#@X}*eB(9l;?69 zOukoEcEp@;b1${+@5CI4HC&!_Lp}ZeT=4f@%ws&+N;$muO$!XEnx(o9BA1^bx8yP2 z{iJ`+-=9L>Ljhynq7FIwn4gJy)EgH=^X%0WYRp0XGC1uPj`JGFKc=a{=kdT6_4R~> zayYCJPSI91#3HvjTp+?c7G_rJ?mO)%go5-yQOANTSg+EBkkwL%Fu#0fmL?xASO}io zgSj8e2Z3k!*a$FxAnu|75AyA`kDe8JQ~`mfdbG9p&>xcj@X#eF1^fG<0V%HwA#CeU z-@c!PAkix>OJ;(4t)=vOhH5Ni+&DCILOc{Wa*lRy2SU5(5F zVYl_=xi=XBkXCeB^{&llFnDn!1@6b;eY99ki7N{>E(zle`^HU23rVigzWO z3wLYkuT=vnEM+|~Uvcoy{7({aZu0(mkbpjyoPHXkUmYOvug= z8V)V3f62|mJSXY+<7U*;-zzomrweHU{^QZ2Ykc)k^N%r!Q;Prsp|2LSEeQ}=Yjkv! zdKARo|FFHskKDNLdm7&cwV?k&&7lT$m94-v6_QdNWGPubokkz)2${(ehf)nh8ff?w zN!Gxpo1F1vGOchoBlC419ddmRMot{9C&CFh)$sIV2VC8f&8guBv>5_^k&?AADHVBT^QtTd8~vHwhHlRhUL`HdE) zHad$W2xbkx{Zt8mpI@~;~2Mv^a(C6de=Tr6sskeqzdAtJTZD1z+ z*KlO26TY1`ygg!pe(!5EZ+oSX3wiO}0810@^GN{#=HFW(tH|0ULbe~OE}qtHztaPM zD^>QCI(NhLJ$8l)wr?cfxl8PSe z{7_Z~yGb4~d`bA+-nMZOxj6+vOe-6*bN%qKWY*ti1N}5&zwUKucOiFVMu+0 zg(fW6kHNdR{zq&Io^^A|7UG>EjKjxvoZ<`QoeRm_qN@dV=RB^x$Lb-xdW`v;Wk2|h zuHU%!Y!IS8_whY>H~?P%80B6x4gjHLM4^Fm3c4>u?0JCxOQL0JsbOS4$X~ifT*rLF zu{M5=uE{W1}fq5*_x(w`$PZ};F@8Y)eVoln3Ex4JBi7TOxMn>GpKaZ>uC^fRKJb&8bkP+aIZMN!9ZwG_yoyB-60;CbSXQkpB!PIfOM~}Ax`^&2YHi0*8P^^ryT52v-6Ue<gc`^}hl? zgL9C3ky%{&Is-I_-ugVqL;9orT*dJZ=GXyl3{od}h1Lq1Q%r@D_mPw+0;{_c5!LMa$sy7#nRCm*Cn%7w=QOW>ew z?;5iq`ht}uC-W6;b9v@Wb(0x$*#nL}&xSFN;TI8Kc#HsUu@4_`%~U}< zuosn#Vy<7ZL!mma9;zrmTWHi`UPQ&6_Xuknu+vk<4%N0H4@7RZe6R`BkN4+rp-InQa?D9a^tH{n*Ml=ZX~MLx6m?^YtLEqN9#y)?*)vuR z614_TRUJrRlzi=41y?tmisLD~_7U}j39mCv=nwh%uT6|cx(#^9yZO^;uqP$XJGbOu zJ-C=ygoX~`|EFWREJa8i%p47M=IN?|)&=K+$86Z68Szk1mc0?|Pg7qdM{ePO*~o#{ zn5&&VNy@)~_wbe~k%Z^InD-)oN-E*N9vZtOlG#)pl)E2mXWcUb*{mF?`^h788M(6`P6>Xfsenwo>9X&ZH6W|+aE0Cs@9G9B ze?q@wFY7d~-k41TbXkf>z24IXi)kxYxACsR=NNSG!{u7g4Hs{%;4OfDSDAi?@@hE4 zeb$S-3_(pby5GmQ26bgSObJV)gUt>pf3F`VetaK_g7cAtmtunFJZlODG@)% z0^me;Lu!Jets6Es4e(BFp6ewh)(NK!w`M10y8)pD3@kX;+#>Ne*`g2P zCC!JZgXlwOTxC2_nbeB?qVw{!&X`ja@_G_&OoFx_U+<2|lfW(EvM;AX2Mp%kU*37$ z0pD_uMGN1?eAB~=oi$b2;C=N^{^i6faIKOcJy0!yu=8yVB^JXVlp%TL8uAkRx(1r` zlF=VHdWF?E6W@zHMPtLiN$|*kj-pW?^U<7K6x8JSIrD##ap-0TScf_NQ$08#xQdqMsLh#XIM~ zP|IKGLNI8|Xs=VnyWqc&*Wt?e{7mH^DBG70tHq*{qILt&PnjXp`F9WmvUCr<@Ee4& zA5)eLvjZ^c>|6Nlb`#LE+cj8mwV=<`ATK{0?_;U17E#T$VD;#(M*d_vh*9RO@Q_7A z&C6*PnyehC(RJ8&?@tOiR(3B|s7%2bb5HKvTJ+~^zPW6!+7GmoN;zfd!~JIE(W8d< zF*jaICkpg2J{R9QzVBoic-(&AoPhp&f9CI2FKdJ04cCLTor=$3?7^8%CKU%~YJW4f zv`j+%3EG4sEd5|MGk3i4C_Z;Sf7McRZUUtSH_jWMYGIa+Eci4l=C&mhYtuzCfXtqU zuRkLSmS-2}>oaqqimJX}j`uU1^^6*PH8%k(GlL$1nD_ptbuoxMx)UC4#2hF#Ltpbd z2i;NZ5C0u*d$Qwr3XIV;Q~gN^gX<47+!VG@PsrX?i8`1FBBN6u{@-t1^4m?(JER{T zbGXp{#`p1oA1-#^w)=qYpWyMQ$fr}(E*iUvcT$n0x{N!a1+YoJU*?=Pa!P8rBU~aT zVE6Jl?ptBKK(&|T-~OJnA5YH$-Jw=%`=D4jeevp^LF^N)(@GUi=Su_1bpJB1 zoiWI&W|5HJK|aAadjq!i#%s<9sxD1hM{-Jcn5xp3;1TG*LX>}z(Cx5>>Wf_;$>-O4>8kg1A0 zs=pxOJ}KyS5Oa2am36Le_#-d<&}WV_K8<*%?ds0(>V~}B{rRJ`$VpClabsUP-UA7> zhYw6mfFok5u_+H2*&`o6|{%Gk)jbjuTp#B;#mmCwFH*pZ$Mqmqt?{h_KvHtJ{?lZv&>X^DfO=i)RcPh$Q` zImLLSI+Zj%29X1%$`RvmkRLi zb!#AY?l}6w8oQ1tFc83rNG2zb_n1nZ2$~^f^hFE2dw$lb2qNY5?E(aHA+ml(l|Qiv zhNnWADd!5o#6ZTs5`F8$#E%bn!;64>-&-RhsSslS<`B29W`MNqQ8K=#X<*Nl)O_M{ z5@_Vpp81`Y3ez+`PjzUJqt~S2B;=3100JvfkvOk{*|{(`P7=f&Sxv|r?}mGP^d^DL zeIQjA(%SL81OBFGgc@UhfKpWMl8H<+v>kFJuSKrV#_mB1$<$ildTM`8Jreoe)Y|XQ za~FW!jkkArk>fQ~%Mkud7P*1!bOVfT*i&hHh0NBi3~Z%sCvPKH%B24D`-7u7AQdL` zQqUp?l=#&5j+r3u>aW(bx9VAN^|`2WOf&%^vWbNOqh-KJTlyFjh>-W->p>B>Mo1OV z77@d{(7nH7dACmCov*^%y40WrKG%It(7+tu|wy1S}8zwvRnRK z58fl$8eiGQV*fK`?-zH5c4*iXr#;4ieTPclc(Z;GAb-)Vc>FQ;vIw@<)##)Crbcy= z@&)!@8xcazRAFwx(PPBrYz@#7LLvwMtAp>K*~E3DQHSum^Miz39@nIMB^v9cFi}2S zhNTD4_kgp{in0J$nZ7$s-!6s#u_pfv<)<4k+*ZZG0Bq^@6w03 z9lxjbLItw{DIEO=O+IprGL;Q*j4n`34S7+oy7h{)um^2rr-mXbrWBk8EeEPkU{CxT z)v8tGRM!^$+L3X`zR71c#s`u6)FK%{Z!22@ETvt83wS>&y=3EYyS)T7hdt^3!~BhQ z0h9CBjeIy67)U-kSOs((jJD1129v^ou;U?WA7o!JfARMP-`UZ{zaOf>~J@c}(fudzq0Z&>n8juz+02 z1g{m{yIsiXd~169YGN%|#}%wU5U+)chtJa#1z}zvUhm$=`G@0gk&_R33*4&aei-b!^qterH+8^KPve^Tp4&xsC@%*pxbN$3E1;wq(I z0&>7~2H4MFPj!f_{^UX{_84jBQCl>kPk{W_B|Zi0ff`RJ%vvYHNo)F9nRdLFaNA}2 z1QCF0a-UP=CnD;gR%gaBXXh}XIiwa>4|PAypH@GtfiXkU_xne2{+J6?`%dTs%`OiQ z!-95Dn5KJOj5%k`+}2?7Jslt-TGc*<`>`$mT;YdO>|e}Hxur~W_oU-WMvmg2)^@y`Z7wX@`vXq}#kuUJtf$NQ!3Hl&t zMyRP?e*q6S&$<6jH^Z%`WObR$nA@CW!%!#sONOLHGtghBddy07ANr-ZEDcpdk&99D zz5eq=Y&oca@wM*mBFOEw$m#k$0Y{daE)CcBfsR}xHLD@=ZPQccqR=PttZz{Iz6I)~ zadh80KR3fbSsA@odMo%%SYH&hY=KnI-ro&(Fh|sw^?dS07yRw`&b=jG18)iz-`8MX zq%3W&r|wiCL|^#tB;y|B-+lYxkKiT{IDKcfP@)%_?PrILF;8&MNuWQV9DVBqa?g1D zo`^W|Q%{%H0j0U;6O-y%*suBLKf+)+9HV-e*@ya*7wxM`D4IVz8*oRWGZnwUUbIjWf9ZvL*-~0MElpFam9G9~a zrzY#6pgQwsWkx;R8z0x&b}a|e>z~eL)kWBol$QHg9{E(UA8#%(_CQA24Oad~U9k1o zG=w;WcdCpokC$d$z>+o*&qUS+Un{%VBSacN*woP2Zx`=~)8#w`_;aA_8F4Xh!Joqi zf#Z47Ly+noo+gNQ`vuV)(|w7pz;7lF2cQ##L(QfJ(JxWaZJ?@Y(+J~we<>T0?|I~R zi=O7+3h4IZcM>Kmg^Krl7cRUUgpZb1&f)upA&@)fnC$p4ble}Ain=)no-%KHNr%fJ zt#kPOH`y{UJKADw_c|9ibGoW5XVby-Yvl9%^eKqh-^3e7F$ArOlpmYb24JRc+jky) zwkKPNjq@JpJG8HwclePF+ch^5RQ`Sjfn_z?9{*|dBWFfZObx)xw*AhVcvm)xDy&^Y zE@aQA4Z}y2>3H{hWRcu})^AmedzFRAdyEFlL(y!4M z*RdCQ5S+6TyMVX$jaLQos6x{$<(|MOJa=fiU7I=q-0gR6bddLhxkp$RiK7#AuZtSk z;9ar*%~hT58`z)0GU8V&Tn=@YmlfyZE1*Z^<@^RmKKx*eVlv;G0Ws;J!Yb9s&8ill z%D9*do|gn=QyB9h*{o9N5EJV93Oo@pS-G&Sor5} zyLF~L5mHWPELAIeUBt0@L@fuF0c=GmYx z!(i^*kq#QWzi5g1m~$QZZ`{8$13dhUwa#Hawj{`Sz}TZ4J{84yO=m5WSj9iT<}ew7P(1V1b6F6@2Y z28X2+(~4x!rVR!3*d^D=ph2 z(2KnN4oNme-Fg_HWBzJ%i3q_@Sji=6Yj7T8Ev3Qd?e#^WNFqJ*FHABIr=nk|+Wl4f z^S50<8{@PVi+zsa^Q{GH6xC4Cci_GEhX%~=PqVLotp@e&>%npI_3(ay`pEvn4WQ5a z^6CMcS46{zmrvN20_$m2=Cc#UFdLWALC%*C?7YKFY+sRs*Y(TsF6u(GjXG1?J7sX^ zQx3x~KivP1e7c-fT?u9V2{FQW@9kkea!rc86i(jWFWKnb0b3Q)O`^%jOFpKSKwjMr z*TW-j>h&OhF?{^?YaZm`1x;S06T|l|b_x|0;86IV1+19xVBWxz=kd3YTXw z-_C#Kc>V$8G+g=ETiDnSpN=g!gfsQQOj8f-4eZYu*!jkto<@LYGj6+*)n8zrqsucs z{C8$e_I~Rh-vqIaPoBTw!n>ig zeS!hMC+9NekNzrz#!6RLCI-w^# zKe{soRq#IbrHb>{0ubWOzEHT611EJX{5PNEfLO6N-DqJ9TnW1HbQt&FFRDI04(Km0 zDADU(MsD=;a1AQ~+%p8PJ6?Q+b1%z8hkicJAx>EkU2dN5@r|$ z_lQ%!2hS0~#74{6Ri+VE6P)j_qQ9GSdhAoz4&IGz1$6zdH^2gYo_~8}Ew0=CwuQ)T z%+ifH_FrowjIajv#oYV?lEKdoWNcQzjD?nq8Xfl0tdjQqXIBVgm7lKgrYE7#N%7$J zfgX6M;ce40+6RBFEmSI-z9y)$vtUZkd&WYnT5Rum94*$ z?Qb_gca*W>=x{y!x??xhvRDqQ=0~~Yu-{X3qbF=XT@mbr{j{XmP6FBf6E3AC6Y!vj zh9(rbhUjAd0`!Z)p>`$ohM|_N8`#v-N%BKkjW{B;@OAex?Cjh1O%g71zQ; zbMJhQwKCY-{rv-5bs-pPI;<*(7sBiMtW=@8M6hx-`LdXbI+-?wUA%WEIEjs2a7R6k z%t$!T4*y%l?N8*Zc)TlKX~N@Mq#6(5a<67G4{M<>cfWGgKpB{3CyKqjeBDkw*TMI6qy|DIbZy zUj}kxfBD~9ENZB3V&VPn7q3|MGeMcuM^4-*sN+aU9>n%&8Q)=d2bdW}h0Bz&>@pvWAH) zkP~z%%RwD$iR_ibx_Ao6ct0x5P7j9tuZ-)S6wiV=KLMtjaqg*^arVaf$4=#j(Odp} zcz&BngOw!<{IoxJB$wh`wPVx1QSctP0?DWxvwPvo1i!EY_Mfg)#!l2~<9j}IY5D9+ z?4R}W3tn+=gQK5*g!*OHf`H8#mmt(ZHQvadQToyfuRpr#0{VW+$KQ;<#T@kGLtP=J zGX-#2Q0|n}lYR(nv6?RE9E8-=i96rXZ z|MG4-{H+cg@~^@@`?(<(YGvHt{@2z1TVNQ3rnGQP5x=mS5- zTMd-hALIV`wzL86!3>Xl=x)SZFvHCpN1L7oNG4X$7v+~g`<9>AbCV)qqP5jx$DZ?e z!LSEx9(nLwyGJEym{5Y=~j8@xAVx z3=L0zA7aVP1lB)eE@sFLUnhUz|F*svj;-5%=R<$idp}xAFJt8LaFe_XL*Jjzx_+qB z-64paASKsEK5oae2j#`shfDcq$daX^9ZH5`6=|^dQpx8fiJW-X9*;{LI{4;XUv%~6+eklbgqFu`PmIEXgLOPsivM@Io#d~Nc3v+WD zN9|*afQRE-&%u?(2Y7T8SsoWc4tn;r#UEOdsfp z22<-R_JOO(wdlgm0i0jgZn5hPL$YUdpept~G$u(^pV~%FVzIa3!QZXW-60}!v=4ic z|Elz^A=m2OzLDSdxyYrie;aIxbD-%w6~9wn4e%tMs<8cze)ajDqR6N`NWB#LCH^6D z%xl$sSkV8RsrHF$^V_lJx+FS(W48?mGGQ<>iN$- z^p)vGiMwgHK>ry!TACBHAbVKYhg+=|;t#Df-9}y)`L6W7``8b~={q$Ud88Wt$sET*L2i8gJz_@O8ksEu+ zE?2lLgrP6plR*D!GOGcsL^fP}-(#=*d{D~$l3LIcAw5|16aChAPrGPGqt2C)tQn;- z2(IV&ULVHXwr%|OPbq~a*raxTEshXzH`qTh5CsGe=;Qz0DElh~# zUKMbb4N(1;Pzpu=4v{pzMcun3Z|JXo1<)t|C`u_R27$Jl?wd{6r+9JFDLXP zR;tmz79uAUw^#^ois`J&_gBICL;~|NeKF8@o&6vy-VIu}W_+AyI$-4Dt6VP3qmZ&k zE>`1Q7HBSP*tQ?{Ooq#^S-SA&<{c-?e!Kzq7_ed@fX~~aH__`Y&W}G$PSrhY0$ZhYypq{|ID{{68 z)(vmh7@)6?J?!E`da7!8P2FX8c5f6s1IS-lg%#{>hw7X+^ zAK$l0ONR`HkWWefULkWC?;!!M?)n?m*vrR!ue4$e?o0|Bh=k)_(s*P?1oxA#blp0p z`8(miT%)267gNag8qLi9o_f z_l~2l2f|PDh#H4rPUmN#&OjFKiDq5}>)Uh#!Ll*Y4t)dn$zGIk;NHFIDuLXttsG)w z)|rjOi$IS`QXz&N{hb?;c9R-o@Wi{Kv*qF#&gG|lQkT0xY_rMr>v}hwI=CP>`?3od z{usS|)6)WmBr=HuFK~ZU#o?0nxD>2~U&q@WD*%71VWX?*=+|d?@n~0b4rKp*+)F9I z+}v^=qu>bkpVPcONP&8){n&{IX};)ZfmI?TXre~8o5JKe*2&PF#~hOb;^}9gTQS4 z>%?UXAU7(UvJ-J+w+RS89QrYR^Q;wI-NZ z*!USISBL%K42){-6|ku1H~B`F2!5=eQueNPLqe}X@*FwtLz>Fi4cM{g_MyP={Lew) z(+Rk`=h_BEPX$@jGdh5V;i+^HzCUAzr)9XAM!@hwT{qwyyifj;(DoX7$Lq5f>~Q|e zdrJ$uiRk0Et$K2W9s5E8Nolq=F}GkgWxNzo4!=v!`ehn@!}6B=|$aF+d~jsLe~_^@;B=P{-hU~CtD+fh;uk=i}x zu^;+iMmopv-cjV6J{8?Rk}(9yS>6x4kMx7$eZBw zkL|8+fh*TB$DdULv?H{;vA91Ub+ls~z`0rC-mQ=d9 zm99TTpJ~z~`_~Bt5ZgH?;%|?0asJhhApsxZnQf>p?_&-VGjh$Z?T zd2dYh1B!Lads z1@zLJt5|(50}6@vN8N81K%Kd{VXQvp&R_px7f-JNWnTN)ItlbCN!g1|t!07oJ-_q6 zQ;%1(#}2k)APV3ao*TSEMEMlK;=GCYkz%dNJ1$ z#Q?P9UMI7XcyFx;u3Wjyb96f!O#c|lQDaYB{Dh_J{pi2W zy23yem;o&C=s`2`fbQnzI#{+K*G|sb(3h$hnvZZQ5!_mUiHFhX-{}V6+?XJB#vG%e z)3G|qt}gJH(xrAp{?SccZ2<|~k1RgFN}G>75vn0k^X;Z4&={h=@B=vx3`+`rdE)4Y z-_+>re$W6)KINj3w-DX-*Vt6a6?>hi%NjkTkT3nqXZ)s11ss*<9@>3X4BJD#o3i+G z52NcTyF6J2lW*KtsMoOFQhQ1ta&$>9#m2 z`t4HlC0-st-(<9BJ&)1pW+*ObD|v#SM|xF)>Lj566y6UjlCUCY%Jfr2j#&}<7HDjX z`fC9lf{yyDIL}Nvol!&`RoQ)A`U3XlvC?l6@=6xc;*ggMUa)^=hY`ec?LJVU=j+Qw(wape|hoZ3D^ z^0onlY(%_pk<)_{$bCF25@YgpRLXj`1fQ$2 zDtW{zEodBecVfNtn^W0pHE+)K2`p4?YljVf?xQW@|%Z|8e4T#MDLeW2+HP=cg(h z!g@8(F^`A9cI|Q-ojYQ+#ENe2?JdLjbEdFz% zDX6Z759dQ@X2*yy=`2yj`5^9RTbw@snrw96YV_T<|df=_>eU6kT*xPnsRzz?IfA8$)N1EM; z5b8JIpnir3U)Al7WR-LRS4EI*bOjN#!f0%5NO13XV2b|sTq}%w`o$%S)Pnhi%y;6+ z6>v66RVo_$zrybbebe|e3@26twUuUufN{ijOZMClY&Nv{#%W@Io$gsULeUL^N;#I% zkGfDtZTPT;d|~vf7)PeiZgxTEg>}~v+^;I=8Rf06c0dM6%G-KH?58`$nmr$kJ)T;m z>pfh>z^hqD@d5eQVQgQ9jj=B}fG6b(hru)mBzGBwE@NJf$Z+8MLMJpC?I|sT zypWjl-vp6EqL-2zmvqA#=B{aAza{1{Apc@yOFbThtGtp?u0`M9`MgC(C^CImS?z!a6 zStxI0;haC4a-ZL-8{8#Zi#zZ+`}Nsm`8*}=#lyW>8TOEGMi(+=i@w*q8&(&Uc{@O% zckZk4{Xy^!$q{lN8-|36^I|0?vtZ$wZ8rX421NdlNLO$TLpA6TNRiVar_j<*i}(JQ zMzMAqa;W#SE1sGsB|vbH?)SV#0^FTDHcUcU262K%4Z>ZD!K0c~ZJHbXC<>9+E0)kV z5l`T_aJ~SDgK9BaX&<3RvB!3<3iY!hKR?FCEZDfCe4(VX5dM7qrc8c51(H5V8Zk%3 zL5k*H!`InF*z8CrJpY*p57LeVY%8=tRKqE|SBD6osdoPoCEh2gu0D_>Mg8YVX=&b* zi~+b$_jbJ12J`7L=T_?4+u-ZY=(Pj57hVgkQCkznKFW`x!UuUU_c6~=+o@R#bAng4 zOi&*_|4`$q4sR7CAIfIDky?s+$TL#Ci)CPITt+DWTLcZu-%tNl!M%m;GIgCmAsowz znehd@mlIY91;yC_S!cR7E~kQHlch*pZU%5rcdk~CWB|?AD5)^X4&WKi>FJSZfw1=p z$8Pu%k+=BowH5LJpkGbUTzIIp* z7kIB>+5l@8#U_7t;q&>2#66+89*&%-GhWEReycdbDMNYGnKW&0>ij`p#q6hiTwTukHNb^GcO;m_Bw|K2d9JM3(0+7 zH51_c38S3ei4>5RmQrc&}E?4~&1B)P}=e?dP)Ox?x!Eabc15V`r?0sFL_*~m*82chjAC$0T|J-|ie zN>#UL2ccg(bl;J0aS_^9;zp4#V9pRHg}K7{Zxv0T z_xN0l#%MPzw_c76szg4`mj9NMN+GIECE>XS6M|?9`jXk2&(PUfE z;mCpAy)`@<&OtRY)F<5z`&@Vrjyo*le8Z_QY=t?{|I$4?|L|7BSki;n z?%MV6f#Gb$BjmNU?-*(m7JI;tSa>=U&xIGQ`;{e_(GTMMRq6c;%=d{m?iz6pfO?*H z`G4q}p%6dO@~&(Mj#jgABXv7C+2VC)qY zc)F{M`f0!?k7uhJognsRc@mHlvg`ZfKf_;`&rN=z$x;?OOuJ70i8*(>j$lN6F#c=URFh*vuw@Achr2a#`JH<*@m zZh8<1P3lg+aPR)rEsEy{=7ha#uGNL%SLUx_X{m>a(2}e@UYUg)yjkFdwHx;j!%J(hDL>&0RV=?u81%6C8FgFFIK73#jfqR8WM|CDX!h5bp-l;W+Cms=OF zL?syA2voanngtoiOEtgL{1kl`Ohpr)EMsS3gSJ{_3H24LKfG6tr47NUq#{yj5zJZL zA<;<-BZ37<;WO57%(vcs@#q$ELoMD3igLWfJ#fiL+2{5u;Q5f2*kxA$)nCoG4wacDpXF$dJloSzIJ*t>ULCbX<|+xhlEL9rr^NOUKqCWvPr@}ukO2CSfV%q zyhq>0aBFPzNd_H-Z1LAU; zp*z@CV*&Y&BRO`CV1xbxSJId{DctL7>FKHcu7i{_Z%S^xF9e?UgvqBk7iH2jO!F9y zVSYh9{aoZ2Wb$=Ot(1+SULZ3j9a;eg??p16yM=vmbKM%Cx#x45n+p6HYG{!FfNe?aQp05F7ORj7%W%brTAv zs%z$;IYjD^|M^h}zZZPOHx+wOgPs&d$(O-UGQC>R!H>X6&UbqB+XqnY(v2rcorC)c z?eZRrrSQwNFYBWO@+qw^CbMVdKxS)m=s8*B8S5X?T(ZFDeo{*^vuzM~&BJ5!j}zf` z8avNp-!}B2-??K^Hw9tmh9^m@d!gKlp-QE-9XU3pY1dg%r@b7ka(uoQdP;O!WSww+ zZxFap!iB%L$;r#(UBkd0{O!LdB*+t&V!X&_Muh9_)+D8F&CouxUF?cEhCurA;BW!l zUoo0(er-jc^b;Y|OFqR=w>6uXq?iw62V}Lc_vHb}d9F4cwtR3?xpCrPMjpTiY3`<_ zG>8lMVteUu9{l)^85lW0~l^q1an7T+MbE_v%q_E#d9NH$!4xP$_Nn9!Xi~jRJ*8E6Mg`^J75j)hM$mw?;dDC`4Y#Q}4EB2p8eWl6}*sFr5 z@F#cd{mLNv^p)FdF=Zf@)^zr8aw#b1r_bszRl-MIUlXe5r6B!$f03e2K2XU@+-?3` z4)spXDNH5BU`|CTWP*MW7rIx{3c1xFSR6Q3in_{cfok#ray-wy){c;N5`j#tdA0@C=t1ve6Fe<#`{~rKJn2m z_m>I~t2CwfY%~ZqweghHuh7>b+Qe{24Ew+bSJ^0WKag_tR@HoY6Fhwu{m4eE5#CU0 zRR$pcC6bz%zJLrl7cM?0c~g-8WxH_LTeA(!*2KAJ%IiVI@$ol-nL6kci9B5VsRI7{ z>-%V+a0())nDQu+5Y zEg}eY2J)w)z9M*wtF54m2!WF^&5zJOP1(;&yYLSAf2S>FKP4i+j=9&*S)mis?Bq6^ zXc{2N=S_V+>K!XX6w>Op(=hv|T0RN=9S7o%-86pJ2Zs~8^PeC$h$&E`>(qYa0pdM& zWSR)PB$0ef1syU=cHflOM$zuxWL)b7O@_xvWn_hL;a9JYYCVP7hLHVcFjZYvL+p2xnyKmRP$(3dI3Y&r9<6~Z(V zJ@rtBUC#8&C_iRr7IVB6z=I57!*E>|Aha-l-r;Qp*n^Gdh}ja4c*id?<0 z&9mRcua|+mZa^IER62|sM7<0;JPe<;O)0G@Mj^4#e7yb35NsKEhkn9yURNaJo3MQ& zqzDp2hHwrk=Gy+I{kt4CL)5bPq;Ws4U~7MfZw_*gzq!n&fj+9d5GLz4!=R<_Kpup7 zgwH?I4-Q4t!i)av$E^zrq3-c!630Xm`1U^Msb zyI2R8{=C&!Laxll-0w*v|8$W4_====d=~iaG>Lb8o1pj&%lUDgCRii)B1t#IyzqYQ3^1ZWsj6QIF6WVt)51jMOK2tM;gU?U_gQ8|(e z@#X4yRbgp3B7}YpQvV1R*Uqf=o8$r^^{O$0emNx=ODL%52kk0tiyX`j_RH;(zx<*V3!p}oxWLTDwA^JVK6=qbMus3;|)}ooJ07_@XY0A2h1M3yI;x~sJ++4#+ z0``eW8ol(t6wm^C){ozu4I#pM&Bz_VpZiodP$XN(I^X!lDFnoOW=c(2?A~^c( zrvE|x`0SGWO0R4?O!KAbP~rW|^cuyLMCMxXBl{A3MF4w;KT7z~TO$`uOgVJoZ3Sdd zyf6QQKKMiarvHM;YG7qQeV_nxZAs-~O($HdA&0otYvxu5TryuiKRkiGDF4(LY4G{o z*vq-JYK8qPDcaP$=y$oZt~eXXGz+V5WYfN3kE71{EcRZG4rm*+@6o{X;OWt)pXZNP zLmor@_Q^ZgtKjgs&k=o8Z%p>ns4C~fmFdk$!6U^`btoMcQp({Aodws}S{d}ce^p_O z_iF>{&@#@lQn7AWP6WUtu7y!Y`NtyS5Bz{Oiw@t-4}TW%NfE@A)Ko1L=wIOclH zU4Iw3MBj)!W`46ecH{>W3HW@@^9O_a95dz8pz=AI9%? z-4G*L<+PU81K;=9>4=yIS8ZVF99U@reKm)tEBO3>94SZQ6U^xk&$*xvqA4k~EZVsjjvVrr{N#wep)AX8r||wgYrB4h_@ovrI$vXV z0DgX4q||g|2cb27bgcyEza9r~(k??H#PJyIuFGLh%mdkhd!{{*Aw5!Z;4=}Pu@y)J zY!YGVw$6zJ8uZ)C*(q~>?}2L^K8rEl?ZCd@zk2x^@>);a3@9XPfNpoKMO^{xhxi_F z!-#(hxdRn{N9~C~_;EK|*ctm~R=A3~juC-K9kAdog50jk#;WI{_Rr|@kPf>2jR$*D4Zl@AdzjM-hYlWj*zg5= z*KPcqrATn!zwPro5p&9-9JO6j#GhXF*r4;lU$X>!wjLRF^{6aqk`6VC5I^+@y?q)r5n#R1MSJl2x^tEv7cOdC!ry2-WAOD_< z`{auc728%~l3+Oedm}mai<>O5A2;b6gcH9!qK^N@=k%rBX*d9nlm9AuY;}!Yu)?fu>bdwZH&PA4DgjTPt(vGfD223 zOMX*$UvB()?YJ$Tn-{OP2}QKQzXo6R+E+7RE3hJV^bQf|E4B>Mxv+1R?ZCSN>^Ge@ zU#?NX`H;)Vv-khJln3E|f7S@j0K=@l(sn7%6Yg(+B;)_5pR48WEKUUW9Xal2pPNAV zwY*9f_DHNAc%^eWxDs5i=7ujGD*}(r)1s+6g{W7ICEq_-2o+qToYHYc&|>gz)=eY_ zn9h*9j=2}YH3nBwZRF0gXj1O#72&zN%9Uz}ej-lsODxJb*MC(E#{pC+6=!WbEl>zd-PP>wy5 zE9wWoe3Ha`M*#2jh=VO4M1Ans{<8!K%_4~#jUd3!^FmdL5y+uUDN%idb5)c51=)7| zIopZFS8}7@sPLvq#!vvx?*gpVC(3)^q(wv{5&K@qnrZn7=+|RKO173}2XG(f>bcm| z4)*0LMB1QcU{inBLXN(*@>?QXk-{C2ylwJxTdo_q!*OjM>D{pJ!lNmEThtdt>Ghi8 zYGEZyKO!6tMh6E&ioz(Nj*2VG`4;qh>)`L`u9PpykAAH zc^{mloV4OT+XoMP9$gm2ecolZO*DEEp;Gy#$E_zs7@!){e~-LNo{w*SY*TfB#sl78 zBj{J1tNi%)GU`EY8p7{BTUWz;ZK<+oLN0XZnCu87OvB+irvOppJv8`f?{Ns?-eH39 z)m5V#URsPFipKpRi=(9k=>qOu9CRmbe6ZK$??aiyn|S}PQkpTqKFh1r{5ld;$f;8y zAybj5fv>{{oe4?#Kus0duOM3qj`#KNM@VLa%s#H${)fk){_jN3JG}pROgW#a|1t)w z3JIw^rZcw#gD>26&w>zd3o?6FRAuenoaOz|yxc(Q|b1JMF z=p0U}E*~fWn^|Jml~<*3v0ANkL@^zb7QYBkjNto^{Z!x+-BH+dYW-X*+y;EiS4xkR zw7_Pb2irnM3#?xgN#Vx#C#gtLjS=!7srn1PT#Q8>g0fff1M1pBODV+j4d^?n>-K%- zhJ7TduPYaSrvY`Z$xf&p@-m6sCh<)@|9g)LV?<8c zp>NS(h+0SPa37FG|1>gqSc^U>$#5ydLP!&hvv2S#1s>a!>x=s7kgI!`)DHJj(*^l4`tr6Ua8kHciK_B zS{i?cvQ%6N!k1o3*_bbQ1!KYn&k?9AKDg6zbn&#v^Xr|=S%D($jpvnL@v+q z3(w#5S~NoMQ&mn?hYC3EpS0>%lmpaB7eYgWO5oZ?#vj_7sUY_II@_*l9~^Slan$Y_ z0Bd&e?7@9QeDlBMcj*63WPfzd?lA6&UPt^@q^X0#+YV9pwI(sY=hd-z8ujhuyt;k< z?Qn$k{(*e-zjh=lO-JQcz@f={_hx$J$=!JCx%a3W8Y%UTyJ7xIW%hFw!M_Fd-rJi` zIfvlO^|cWPd|qtN-r9bM`QniAx>_SaBFr7IG7!6iytcH}$voUgC^-!V_4m!fZ^oh# zKhqJ=)1yx2_vnLw_nkJa+USR$UOPm4z6E=qF0S&=RzczF!Wj|YD$t6ZWo4Qu0(+kf z{W#d#+G5UJPkgnX7+-uovTi zyUO(CA{cN_?YTjZ_t|nO;hq%q181u}RY2bw*|J&A+qM?q@Z7K(IE4GQoT4KJb;uQU zRR3pk06E!t7a#a{p`Ng7`SRq^e$Z^8n@+CjgSqFX0c@5Xpc-fR+6Mb?4pLg0{zAVa z&7J3_+uoHx88H}i>}N6bN)_E##l7uZzHPR$0P?4EJVe}>iXh0cbVRkoko{YH!FZwq*8MVt3vSmyRGaP+#Y60uaymYI-K7yq1717pV_)F!U;VyU z3Q=$0dl1VyOoYOqP2SKO$ZbF2C3vr75U6YwHV@`uPeG4n(9MTLpr)e@J zSu7Z(T@C!SrowWw9T4x4DskTsdxYB-rJgCz!El?v*_U{qXEQR&IgEM_SVXA4IMWBW zpSSzC*b(4Zp*|r&rWV90K7M)iqZZ7_Uo`&PErFGebC28)Vb8Y3Ss6CE28ft?zI^p& zGibO}n~GA`1G!h!Ig{VW32Xmm7SfNsKrN^4m9e+NeUjmZOXznKA2`|Sm4n~EC;0(` zt0i!li$sQ4iuzK)k?3DuxX*ZXp^|`H2^zCADF$bIz=e=$O@cbNl+Rm=$nWU09_YH) zfw=@4X@5>fLJI`F$bb8O9(gyb)k-d?Yq>r6^=#pDJ2-`3vQ8}T0M7KAb_dXRNn7lw zz5Bic&i^-N*Z%=|?C1XKQbzYc<a}Dd!fFVPvH`-*#}ylVsE8? z65&GQ1o!@*osgrf8~6Xd7uOrj4Bj?)KD_YK3GQu%n`as`m(l~N4wiV*jt`am*KU1OC8J=E2-=--H zD>>AHprE&>Ok^Q2ikQ4`FDe5!_K#<}?qooYUO+;a%PjQ#dBSg*-VfG~DBnDN+7A&| z)dVK|41be@*yka6;C%Cy z?Gf;-P8VBW9EKn^jw2t}YavOZY$eR78dhk7{eqDP`jq8};9fQMf3!4Eis8IXL7-(? zb4FiG@O|rcJ?y32sweNcmj+Ik%L&q`f7t|M`e7mlUKyMegs6G=?vOit`|mIaNIt!L z1i5BfVLyO;tsZg)eBaD()B)x1ka6-a$S2_7wq(Q{1;@p2Nya1uNR)g+_lBVa4D46A z6FoDq_hf0v%Pb!b6gyN-JdFnv(}=;ts8h?wOY140LI11mOZHPSbuiQ{I_XS;JzT%l z;#?__6T>4!*38@nl0&`=+l!dHw2<2G(vSDi%EL2On}sm;TmA3h+vQ-HGB7!OA_Mm5 zE+1)qJ_6|>`#7@BjlrAoZ`d)7Iki=i+cunIz}P4CpvS!#T9!qh1ii#O4xNSNm1Xoz zlhSi2lIDX0pUKH=+`Eb}53+g>r{TRr^Pn@%X^$$8)Ty`Q+;fFz>zVHe2)3k>g!R^g zuyFkfWncreaKC=nRa^`b^P5|>$J4?2QqfKu&KXz3=6KC165y7A<>)obSvX(!apghv zFq|eIdeZETIRN(K^B-o~;kbgLX9D^p(QPSR){W2A{Oz^5PKb>zq#7v{|C-8u971=3(YolSZ4 z!G0)v)1Y*Ba{$U81=s}^Ajf-6SbO+g8!+3K31!5!!=pG|4KBR5{F~tv2_j5@`11Un z*S~t;4TB4uD8zHE*Z13O3UaAPwm$T=RDcN54oFH84&pq!2Bh!ylg%+JeB zg)OaMKJiXmy$^fWnZ(bVZQ{T4@$oxv$C{vIgLHQT&+qOg>4}wty>Pq2lis@sbJ1fT zRts}ypw~4@BLsC&@=zTc7R;l(OXZe(h-*l&|e>B6^q=bhC`moGa79!j+m$h~% zRF@Xt2W35slWcQYz(etq~s@Mf=v-Pd*3^>B2)@; zj(P4>l4aE4+n~deK#NroG zLxy>bJ|@*oXXHxV71jE7uNE3z6GpV3#zI}iy~EgVT>5kHxfA-pw2a<`;U2H_`4I8gY#V5v>Tlyp8-&`T zVY0oV5$L;<=jG^(d_T_n{Q-u^kDLmnWjWOi_v>ps`Y9XXOz^vv&ej?TeLTTyVB3hf z6r&Tg=zmF<6@GOw75TOHJ5|N_{v`XM&+|H?6(ToP$>f_WKs_y@?d4PvuPll7ts}2Yk{`LK2MBaq?|f1r*b64> zAD<}2UPY>N(Gw-`PqSOG0rk-Lo-O|_A=k2#XYoL_bt6bd`^EGLmq4J$Jmp(2{i1!UmPwANr;+OpL7?{__8vQ#(cg-*I&AO;tnX{Nr=`i1lD< z?V9$>w;nXquSFPRzlZlCm7Hfl4_r?9kQR)(xNmd|%c<2mILs{QFWKAzV(;Wks-r7` zu@SbgucQxcT>V{2;E5C6b zlSowgckezC1k55de&O7(I6Ca8|F#phvO{bsELz}4y^DiC@{Uvt*q<_I;$C9KH0{VW ze7_vdVcf5ad`v}4cMH7F*$3@^zuAs`&(|;5DcIG(ri7F14f;GNCWw;OeMVo8&GG9^ zoXG7NY-}jR{jy`PlJcnz)4BCmCD(05A%w$Kgw@L8ROn9u*mG2IerdJm;#QWKiSCcsf)Z}Gw9B5RVe;Me}b~X zPfon2tJbMMu)`dIO57Id`t@w!q&VSHRDivb=}pgG501d3+oS>a7V3mTsN#o=0K+EV zQV#m|t6A;Ni??^7?jQ4d=3*Os`t^v1-l`4gX$ls&T(Q^jH{15FGsy8IQ@Zmi8|Of~ zwFBM*IJXK`++=)(dqh3r{JDG8Kq>GpIAJ#*CYt`6r#*?!U)yo78nZMgWi+pTrZfvG zGU=S%`;qs2a#PIdFZ$frsddaLx}dyZGQYVDb!{1jWyNDp#FQZ;Lax!%mXAh*-_wp zzh~#cu78{mt)S{VxsrTTU^vlh0sp(7l_FN`~R(o=XnDYCo{N|LH?9)dv!tE&C2n z$!^P@RK&9pLIaIh&}+O_fj_rpua{H_&(w>905Gg)PzG)!5N zu!%f_Usb9G0ke>19I8l%Igf9$A4A(Z`hjhqNK!<5ALtl{^clo=gZTh`hzLF}EuuH7 z>lT~gP0T~R1L`%PDV18HS%7)B1VVjEemPX1mbfpjnE_PeO~2lCj)JTfzr(YtaoAHA zESFnAA6Nb3Qx(`-leXB`zUy5DFK*>j-uhDw$Hl*VaKgDy?sgq_h-eao$GxX}dMXP7 zRl;1UtRg{q^3Sp7WS>AG%lCl%In3P}@?4>E9)Yug`&OInN+9kv_oISqrI74(&P*dA z18n(dvol1aVSRaGz(G41#GU0!x7mXs_XM5U1KxQsnK8VuZ((eQ+B`0`^PaX|`WagNe=JaHZTZkWg0U*?Be#Y(2)wF;*2oC<^jd zF+z@(QER4U@JFCxZqDi=Nr0LjXF{xAIur>8{V8qGP<rpp0`5inF?2Bx?3D~(qOSDs!Ts4U%Y2(5cCNM$GSg!C;U30MPum5iszN z2xpGe>XzX?=vv``+^BjxY^9`P1hWC&-k}LK#jpR_WKKX_Igp;(FFAV!^NrgILdAUL zK=p~w++>YET-j5g= zX5W!FG(h0j%#l1k{BNb5q0ck~kV$q*6hXadV)(|VZrx(IV#moy>e&pT9Jds8-OGWA zAXy$^gSm^385$Q1FegsMYQt~b3lTT|MjXU_r_b&U7M^pM_rD=+q>gzl1KV+~dgS{V zvkph*86i5+?9_TySqt#*j+`m6!rV2z7UiEWoxoGATTY9AUcA|zv-LtfK$0QwrR{bb zIOI1tIPcZMB?-e;R^-2D{Q9hD+fxB?XWyru{68m-aY%>Yi2Kr?GS(WB*snU}bgguQ z2+LIZ6SYOCXYV=D9o9sSwpnyw*Ea5PmX23#A+wg{T6nVcg?g#bp?+d=-FX$cC3F#Dv^cV4-mhG#}LhIQFlJ5>DEF|^8*1{9P zERSyV#htEO+--&c|VZLzX zr3WeMOCPqC;J*hgU_!zhn#t9_so@b@x0g^iCXN})~IIN}{!iq(Ve&AkdL9|ZL`&J8#dP_T=L!Y+c zQSNOz%;~Wce+P-#Gy5ch|7m=0L&5OB}kLw^)=w26{0##GVwF%npGW?r%l zN)39Nu8mZ}2VrT~5|KPmTncSXrY?aW4lb{%1XJ5I}0ZcJ=#ZL>W2Bwqwfgl z$9K6T`gQ$93;enN@$KG5FSP7x2r;6cwEN6OcH>3#`Mf4MMo_N>R;vn~IcvPn5oOH1 zE|da;(Ce9hjcH)m_PSn}Zw!vhO#Wfr8VB85XU+IK#=+=rY`nDOI0&5z8EePS8@GCc zPv>Xk+2-WLjEh&pkN;70-ho*6Q52UMDMctm8AU0IvR$i42ub!RdsjwDc8OAvUCGGa zd-K?P?>!nu8um!M_x
kZHI8{d2GIiKUz5_yp!8=Ct<4IeZXg66PNE)jk%F2>#a zmx5;C@?g=C3Cm9B!Tf481_~G+qrtYiq>l%2xxu8dmJg&oi)AULV17+avVbN=cC!QA+&AwHF z7Yz?%V|NaC%T2!%!rmp*4@E*D7E_cZtOlU?i+^N@44(m?+X>9`9^ zGIC_N+g+>oa6aiwqOL|R>^l!eeT(1iVCCSbK#9*!r5F9dBQN`b;r8@DqtlJ>)qK;z z4D-r!iae_y@cOKJr8%y()ea48=aa?G_d}%z2c6rONoad-7P^7wv}=NjPvUWX0$aI~Wtw%l(n}_iag2B z2RRI(&kp2r9o{rXc8-zzwU4l()#m zm!BvMP&$py|!9Jmirc!6LI>>=oDwtmucvJCdm{oB2TTr{~&x!HZ_7eAS;s&0K3C}7C+PbP&fZ(4DjR_5hhlfc6uaQVmBRh$L@hAoz7U;Sjy)2YwFi_@ zr_k9-x9}mWgAsnlbaQ+^X5X{CaefkY1iScYL6<7{Rm^sc9pCrY7^*tRgzJIcLBY#fhz038FxL2l#xbw%P7FNSz`p)yW!ZiW$bUySgFOGBN`k;^IZ7@&X z5pLvFHwXHQe!-rC(a87y4n4q{EPFSJzZNJI{KnMo)yf0LB^3UGRP%dd;5m#YANO}ndUzE)PfDe=ahfw%Nw)f zdNbyYyu|+U-1F#NPQu~bHOyx` zdC8<5*#u0fjgCfx%}_DnCbCshkNmN=ngBu*#N?&~Qc>aDEyk3)H;T{k3k7e##y7yl zJ41hc@ww#M9uLRR#~kk?Tt`3C0G-!&o%4VG+BZ7UHrgqp!EXo=dMbm^W-%` zQo^WPfpi@-iOU}(W~&AZQy%lU0lYrs84Y)Tm4iR=Cn}qR8DQewaBy*b9CT$ZJiPF| zX1TAr^~<$x(ED{aTa?pBbl9<;!r6NZ%;- zj~E7>ej?eRt^u(Aamnq$A$-3Dmp1;w=R((3MDrN#L;mvW!1`JvEX@V(?Ni3@wY_XA zJfjZU54CqU7$Tp?*^0jLP7$cmbH*v|VQvy;dWFs=0NW8&)9W46pkBF^LT57oW*3gj z3mt5NBX0M5TyPJkQ8M#S7rDw6$)_I9qAr&A^bDB{^4)vqx7NR)KTAAafLZQa8Em{r z*Um631VeGnBVuUMR8Z%l-hW=H7+QgyDRX4;LpzkH zn$WbK!1qQpk9AO31IT>wwz+~iwxu((m&LF*d%NYs7)MA6w04s9ZH5$pw9&VF!pNa$ z*!W#}xDP2IpZ^s-1?WuF+B}5pK=a;|Je_vG3)QCEe0XrQ!x=6 z`XaghlCk9IR>B#T^TjSX`S5S~_<<)b*$^ja*Whp>8`cYQ&oKBn z=`C;nG*D&#{d^bu-R>szeWUEe`#*Yw`{?OXX!~k&r_>4i9oVmK9b+nhN93_8BUj^L zn6;ePaveFadRf`ys_pRi`87H=2J8_ZwU)4x>jXPbVp&32GZ36NEr{@(89Z3mbGFJI-PQk16W2ZXvF_*m>s&s{{8=?+y=YKtl=TvV<>hh_FnMHPGW2G{%RXJT{(ZLQo~x zu;0pq>r@Af-Y4gSn)K1Ge_wEK^yBI|DZP9sEK`0b>4Q32SiF(WQREnlzuXQm>;eU$ zpLa}FF=rEBGTVvV>}%rN3*)%&WEl0UK8#$uYlFNg)#$r*Pl++~Mg58KOr+P6Qw1E^ z7(LoYUjf%eGUrZY=R@1NynTB;=9HE0G2b$*gc4g?4SAw6IFVSawV08QoLVU*_g&nR zg&f$W!JH27!6@+-)ke&_MVNdyE(3cNwj0?ln3sI35SD?QI=#)sxtPaYaQpWB-~@8j zmPm{&%+arLZcsetQS|_bnSU*D((MEywmRw1v)D`8LfE^VQxAy@7ukQ}{(@Ug_G%mY z3n(v*epAP}tKp(t+y?Su=ngM)wExfRtg=+yb0dI*&oA#k7S)!{}hqy)>`cx$u(!{_X9>Z1f8);p~8C}IjilY3Z2 zun#)pn@HLp)a^)!zsNVCK9EXpITd}i16pYgk;~z8g`$g=pi+j4`>77+pf#^Ha>>b%B(ExEe#3bi2-(K>ILH6KADM;1C&6D}#`;Knq za%pe{+!shv-o-pdJVad5#=cnlW)b_cE#&o15u0`)e`Cyi#q#lZ8)(XYjWv6Ud~%9% z(Maq!d6!GP#lhABVO8GZ9GC~HO*G}c%ZNU+j)*iv1I(R17_XPby?v;{!JHn}R-im1 zEm~OH23d*K>F%ieXZ~q6u>OR+ly?rq(x>Yo{my|ymKxZPQ5O>QvlhA42Cp)^jk>{B zS@CD=!CtU8$TYV={rNG~ZC&+nJnyZ__X;+l9_=aCQR#v_jdxGOr0_j!u5)6J1M_JC zdn#_d3Z0N|n|<$aEY78xK?(d3jj&AG{dwY79UP?OZja%qhU@R`zcgYlT2Xi@bDFFI zgn2KQ?{Z`U9n&72zV!%PW{Rs^kVD-><7mj*ZJZzdCuCoibV9_q(hB=#3rKvat9*v{ z!SAWGH{_mOAb6uRrM47%meSseU%@$|45_d^$Yp-==V$jOe={Tq?g}SiK3^(^b?+PI zo-;`9M7%$T{BAqi0PXlxAR+&D!DQbcl!!^5rZX7=?xb{$Z`DKaZ|e6KUCSY$DrUH; zN7fEsSiU#>Q}2MZYQ=JQ%xCHbNo56oYlHI_B~x3BFxSdbX3)2Y{dtxL92c~ULFVht z+x_w&98(O_$MXi>%YGogdFIoo;xE)>%pzKOwU}nxGlK*>~T6+ z)Suv%uE~Nm-ScgxsULx7H0DTB`ZRbt(RUv~PWy41PkQ1}jS&7Z&~CJ|0UUFc>z4lC zv+&IyCAy98PvM&ngYa{@yTsC7%U=v8gGS5Rw#X-Bv6@c;``nXZU z&p;%}AymjW4NU&)6hh?faLPd2Ya+M}b{zfesx0eaqCfQuTUsaN>8=l*QpNK`(T^%> z%-^Zrbq!WzE&`!TWK@NoIJX$nw^fE=f9;xL-olH|AR-B}bJqru?=`VnjpvG%Y9b8} zWt^wKHK*&KZ}3fZv1g|v&LdRf<`k*e_i*xPRfTv3EEW+>OB16Hdt>B~(DfoLlD8HYC&Xy`zbXe%hV|XXyi*WUN$QP^a+T>`>hGOsNeF9?^c3x&Vw7*YWg6C{re;f@=JT4t6e;RdQgg(P+86O zD!6^?==j6uIiPh4M?pdlc*SrtGMw&*sx|ut8!CLi6e#$9FmD2?Rk>9K_6d0N_i!_3 zB64dd_lI%3Z3gn6+htelxDA|jdm;I%(D4%N^_oer5dJXK0gcIdYL!i>M+U83$>C`N zV-BaK%Su&Xu=KR$(q=s*f1YyJMj!7(YyBxHiZal+Ih!rnTL6F7G&|;%Jsr4CqpoH{piT>}i{Pjn~QJ@9(C*-pW;(j9kiHI7r z;Ux6ZSfqZQ>;UEHnAro!O^{KfRIY5r9O-!8?e|%j2kmA1B#~APtMjUB*KZVHe_Kcc zR}}VfrZMS`Y-fSxaLuA>cP7|5j=!B`&qkk5yotbg7EH>AldxbPvFee8YcizSI4Azh ze{c}_D37ZmKE~HWsZ9G<^C|+YSjM;+upw7Ry-3d+{d`6owikMs+TbO5Le&5K;KAH; z&hwam4*Bgg!c2yK88@3ahvafN`EZ!3DGNC)cEbh_r%OQVeD6l~<8layN%tt(!+vB( z-< z_|PWA?~?_|2WRC3UnYWWeD~|Lxg6Z*x_NeVr9*j`+{$KLDR5j)mU)2wTRqmw`H7ki zsCf4}*tx0|l)Oj7lF&z|PO{N^(F4y}w+|+mXd%beyy%yk4?#5O$^jrqxS1ffVE#p1~7fs~<@H<6addAWTiDVf~vGQFYzwKu^Mb!+H zqP&sw4_e{&ALAu)y>YPJ*6driMqkZXWqrhE7bpkb^b}7)-SVe+%iB2IdnTQH6Z@_U zgiH^RnV^5%{!5JfKMnNxt@EZFn{5L*zMAr3-5zjSjNi2)N59nlSq;b1VW7QT=6|Pc z5HwcTZQ43<&+dP`bIrCLH}`S_Xw8jMIbl9m;4$fu2+RxTOZ*IG3af=ppds#I zuf^x5;h?nc1UT8nv8k{lzl@^&2;C0)xT~&r$)K(myXX}mK2#4evb5U;JLp?_@&NiU z51ya!nJdq5n;Tqt1tO4iAc15YG(hiJa$V(-hBQ(r=Iz&A!f<{WK0`uCfP&*1-er{$~36U=kG z`*rt@$!YXgXht3qF6)Os+Fh$ZF#mBUqh4g*8GTt+i=UEI(8o~fXKG-9eJk9I{ZZ)C zOMCg3;zV2-Bt^wYa5iCXPQ^lq9(BtU#-SZcHtfR+Ex&rjx&-*2_IY32%Z1P3-R2p* z=qJ1PRj$9N2$%-L5)NS>t)f%hO{crX@Jep~+Kc!+pfOAfT`DL6cV(L>3LV_%SYIa+ z%eAdjPR1-COwSmd?ZzDP&g8ptN8GO*WaJP#-UFOUkA8VcBfr^iV!!jHPIygQ5I0!e z2<1=4$xLzXHKy#29{fiD3(n7eTvipJLvpu82K_K}ADC^Eck>{;sw+~a7x@#XeujFU zsDMo^fz2wVa@eu^6QO<{dvch_nO%4|De1WO=OFkg*b8&-w}ZBx)*i zMDdAm)jea9{&^bIn2SD`lgownqyx4O_vb+3v$5nQ%tt@h;Ui&e)dDSLQ++P_cD&Yq7SI=>AD>#Bh!^#~zzpBQ_;b}T zJT$W%hg?OEJ@5y8x%(kl3>>3du zs%NPoyS)}NB})i*vMYg3hXF4*5^`LrD<<>}>4hTqWu4cP{`7!^-v(?t=4m4Tyal3_>63>`n?Z7LRJ#(-GgX1QR1C-; z3Yg#^_rhFz#^ae5e)}%4yc)mbgxA&irL$!3Jo>=acURX9_2R_a9p%=&U2va4ll{R& z7f>%>sS-mS>luZ7;6KdoM)B+Fv5s{D_urR2XED!ZEnC%mS`hu{qaI7_&gh5Wri$(| zZG-BYta*~CkMXy;nO+`5F8Rjlzv!AS__(((O~(g+et9;t03+_XFN>Zj*60SJ=HuEC z!8m7c{1x7hxtxO^8z~!jy5adk)ha}`1O3Om_ty=PyYpzz{3iNDj?mFgF@+;PNVfLm z5wjue&tz17eSZ)vYV$rC;d^m;;JHXdZ7VpF^O%puw8Ira;l(M`gD&rw-DE7QMLzA( zq_M_YC_ACOWO8pB+?4g^#(pD@yEQ}TqB{Df>1Fb+DYnD65v%SeOfBHD-nh+y=YIXi zPk*lBdFdq|uTBU}6}+IcjmeV4ydf8*bQTxp!g!3m4v7!IfDW{MM4zyc$%&9!0-p0c zbMAVYG(c(k_1puvuTU}+uB}2oi-oWuor61`x9*FL{qmax^ZLRla@?1TWxCPt4r4!^ z4iV#9uNL67dC;~afce8)B7w`;E32X_A20C;=U?8FL7uIH5CH)c_q+$8mHz30xT;|= zGZBwqTNws9ZQ`>RYA{c%z+R2p0}NY(0WL z*IzcwKZi6hzjdQTTKU^FBzt&yKSZvGci7QjQq)H~D7hWm^{T*ghlBH&`V25P4PT&9 zse?f_(+CIb|Ezv399=trJU;dhvTc}G>Yxjo{=YZKRXp>yXVetxCo~kQ@`IRf)ZLD72YTZPml9uwLHb}wWf&uc0?H%9O^XJNXtW>lYv&& zcm@cOnwb0I`S%@srLGA_ZdAO~sMt^{EEs>hhZI3z(Q;iswG)ZoKZpF>9QKiP{+f80 z`vKNDvd{g)UIXXo5p7Ga%Smo-&&)~MQ1~tRjvmPjR(_yd{G)ylLHLbM3Ow+xJwq^oIe_#6kW(R$e zS7ofPC^rKWkxv+pe;)`bWF?DH48lV`E#D=am!qeBj2op|;Y07~?fkH2cs512Nx0Y! zOIl5dn~!V3(MZyrr?Co-eu(qr79l|VPWHv~LA9_yHiRo+968^o;yZIZF%PyDHGWJm z0}9t(IFXj%{5&a2@&LJ1wKqxGOVnCnZklCNXaK6y z@A8lD6=Pq|U+unuZusf&I3yU)0c;AQ=cz7qgW#$YlOg7G&bozfQB$Me#Y}^A5%sSg zie%Aq#^|FxIcQINtpy$^=~pesVz1=l>?1|d3SjR}&^m7#cLFH(oWo6m`n5zfmFVglv_GIL{g@_)YBRazJ@HO(XCsjF}w%S0uH=~WI zwGC{ECtoPx_kB6D(bt@*66Q+2(H}9Z0ec$lD7t&qK%dUhl-1e-r*p1Z-`mDsTTA{i zE8G(pQ}EBfG%A4eYJTZs=)>fH#_&EPGz+}j{_!#oOoO1*2MKcYtu$!F{@(A?11EII z6UWeRr6$>&`BbY3{%VWmO=va3ZfNi8)E^B%x)HEXh36H|eR z*DPO@Y6>E#=?z`+{ycE^Xm0rd+(+vD^L(M+4(WAN$L})ep(B1$DoTK`eLrprAxC`u%fTNeOASCIw-G|d)&M$5EAiW{*a!2`gHKu_ z2Ttpr{qxop{dO;telG{7LC>rCqfx>AknGx!5mhq;e-(amG79!UPs{}tDTi)|p12j% zRgAu%ty|S*799{G=enVS9HqLR>&*9zJHSotV|3g9@44Gf#s`oqW8O7;{N7X>{N9`0 zy;WEV1j`etVVIZ5KK^l!756^bwe403l*tf3`}7aH^O+a!5=a`eSYpvdKa9Xh?2lUeMJ?&6e_3G`n$K7zz zN~&H(p8)gMW7AK+tA;NE7fy3r$DRz|9D^0iRX@u0u;tv#f?s52%rOt5K`nAvk@pVj z%L*qeZrhH4BK2kNV*w*j*5GB#XEy?r;aWC#=}UoxB9h*5uoA|Df>XOjGJ#t+gb?v2 z78ZkV601%p!oyc086{MqU{B&lwyHA&4LWvqnzwNd?phd)5FLUHCBNs}v3YRY=Vor% zd?AG95BDdfBm$4qf&6Rbk?^BHT3o;f^D(FF^UFG4fy<`KZ}NZ{I3+DZ9CUXG?9^j9 z0%A*{zO^Q729MZSsPxgYB z9S=|KLFAiTE1MDSBmZykacLgr3#1IVz`~#fgyC=hQ#AsF^JzJ2oEnGGM}3tlN4nth z{)<+;u`NJ*T%Gtd@~Llr&L+Kc4SVknO6xw@z`bd)M;>iLCmbfLYEYQPUKh3SuYs7` z&YU+$p%oYalOIGAZ&aHgsi-671s&>8oK-Kvn0jC>eP7`-edLUONc(hauphkE+?B5p zrr?|9RQo@|Adn?e%zi2AhJo*1*;jBbeP_qbk}`+fmT1mg2CWM4`>Rdp?J9vvdeyUC zxF2XX=X1XI1UX2w#6eNKxp03cCB>RF4+>6ns=o3l0&iPVVq3*5D3+3Xa(5*Wrj)Zb zUiZd;hqHH!KI-xKH$QThj0546^FMZl>R_uZ*54g-#P96Y2KjLApicio%!D^b&D#54V$&@R_M8QVE^_U>f!sA zx%$wr*Uo*1UhFUd@?FTNIPn~J#rdWeHEA)d?(HqAGyD;2!xas6ih*rZC5Q$7d&8EB z(YU=&f(-?kP_?oikoYtaUM0FxD&5S48<*Y<{)|nAJb{HD-H1YN74cCtMCq_48QdVe z73k;A5UpUv*#eP9QrlBR6maoZEaW3Phd^1S`2*4AUvr-r3=V*H%+-YWi&&Y&OoHddfC^%i;=c0JbDb=20~(8i zS#@j}1yA3%V2KudbETBumOB`MT?#C)GHV100oYrtuZI+aca0}#aHVRj@P6B^8Y{Kt z_Vgqxp*hE#a2SyfVVYSaf;Cl8?0?)v{8lmC9gPqd!bjM)Pu+?v<%T}1>J!G7;&|AvCFdS~iMQ-&aw8L20vu$@^EgP| z1e6y%3E{+L@c5e+r!Q8Mo_C!q*wl3m zM>Pk5InPda@n;Y8YTmpcIoJyhGiL|4v5I9`;iS7`VIvr-2qdhbG@44QC&5mr0wU+g zAP4^%@N;x#oVTHBRVv zb=F4ddbare4z-?gtj8m7LY!Xap$;HXl&HQ^-UzH(cKn3ecIXZ;tK`Ni0=4I*)<-jH z;l>h&qhnePoO;L^Y1LN(AunF=&)NNtUQQw8SrtK9Y4>-HwM499uuLp(n1)@(yPDkr zJrHg4yy4!94mcnBrbxQ48>alWf;P=NVFAR)dNE@3svwmuc)bnsk2j{U@pZ%KB+<~w zJ_2MM9_uSWpm-o-U_gWfQTJ&-H;E&>t06y8JT+-YfXDB-}!T*RQkh zuDlq4`Fh3)H_t)noY9=nIMWOMqBAVh94M(}&OUj=h!OV__6)-KIlSa}-18k*4EoO= zaDJSw1i@jsxW=J;Xb#noC)Q4YjSBC&MO?i+atlq@a*hSLI3Y8Nr3uKkm$!~48i2jz z-mD{ty6Abya+DNDTRxkmGe!8hQhj!8OWMS0=2>zlIvmA!6;{`NT)~RmafVIzrzId$ zMYToCp9=2wvXNgAxwkv=>5vDm^bKp2R;(wdz`3)P#znga%w{^2ue)Of{i(F1Oho83 zJ@x%bYlRhXSL(&JZBTj&;qIV1RRKFU75eX4gGpNwl@&ceuVQq^(R<8;F^B4-X9S$1qo$c)6n{w zh~mV+ATVB{R=0VS3qS8}2-1dRL!gVe_umUiz&`)y)JM}W@clD$t&SxDDq}BcX{H5X zwWab47rhw>+4)Kw*q82Ix!PpxOuU4M{uo{Vwj9Ko2kuy6Dj5f`{EV%lahYKZh-Hi*s{1FlLbCh*? zcM?`eRa0~SmkP+H<{jB_Rj(rztiG=iRD?@y3kOPpxlX0d>Q)bUct!L*3P)7*@MrBY zb(F%KJU$lS5kImyLoywaH-1{~Yj3e4XsEMcymG4!SU%V1)S)G4a^n)0dtWEq?*CqK z9Z{#_7bA4OzMF!z-&76%JO;tA_|7%W8{JSleQM|-uAB$|zM|s7)l4eS{EsmEV)!}P zHj$@@5uWo&TT)9Xg};#c%Tb#LlxIC}`Nw2|jaz`KoLweNUSbUL!$PJ4s`GcW=i&f! zYlkm=jsmV9ES0|*kj+tm3%`Jei0&Oe*QIwAR$t&6~d`4tYgTDA& zG9*mBctkCj0#n9=d1Y8(Q!d^n)qEZ+2b-N%nW%d}F1n>vMezSsov?=@S{JVW-d}1y zgUAIeEzU+sQsV6TrXG1Sm^x3X9T;kcN{~H1dAA1sRPtBP2M|E5%aE81(Ka>aMrzt9 zF|bpVbXL48hTT+O!4qsbKuzG-cmXNE@S}?SYFQQt&g2pq;)?bWXJd-dA+$V39g;eu zTLw&RgJY|WxN=*{4KN650L3%CMysq-IBHZdtQjK$Uq$w4=3D&zD;X3>FsfhPK)6HN zTLEH3dDgKQb-MYKbSA(Tt)-R;36-KnFfcLfqKTC%MY54AG})m50#+Hi6DZ4Ipy#(RF=96N?Pd_l6+qIKpC! zVf=Ro2+GvfFsF7vg4bWeX0&AdsEj{BSJ?!zeiDLJEOjtdfAn1{bpsd`kq0ZxZgi%nmwhY*Ix3IR82;91+sAX;-O<~v5hn6@{%h1<&^WbYSo5Uvbft>w77s#Zg%XZfz#Q>?g13@g6n z*9cd_c6#mqkHqEhR(m8OO7t1r8!qetlaEchrb;L=yWgVy6o%34wDFZ`-Y(z~)3G>6 zjVShYiUn6(VLzek>8WLJ1Un6`gS{9@(^lx{nETiUmWFQ{X3&C3(RR=B8Afr2k1zR{ z=wmc3IfwHKN^}XYCHjAQ{cU;N;e{`t3tV`1JNqpDj(q*(G6w< z`PwpyIuN!sT^dzKlnUic9>-cK{3RSC}ZoaR8KiqeW9;O$rYvWZ*} zKVk8pe{~FsPYKT?>2*WuW5rjLcpet?EM=uR(gvh6v|YnR7)_UsHlRUt=7}r)0h%a1 zKe!U~Qkk_Jj>T`7SO3Ne`k+q|D|)!%y?ZplwPP5og6Yx~Oot)MiJZ`8gUFbZFHTAb zl)>Hj0^#ot7{Lf47*KKMfF_H(OD|g4_uad9q4&%T9N*{qy&+~0j+oytmromnspa2G z$u;?irhNN0)+7(QygV+Li==>L4oAgn&3O1S_VFo4+%#+$1+JT04MKMA3+vF4BH%Hq zIZ{Sl0Gd{3OhPv@pybfH{?YYBD3kUpCoe=K)I^Nm=9N+qQBvM)7%KseX3u0nnrv`% zCjUfxECq_`!Xz@2yWw9gsX;4NrgfYcJaYp-2j^=$v!@UZ5aC+I&=}ee$HbIV?Z=vc z=jIh{ev~p#YPLz7`_PBch>~Y93%H`MXd3D>nu6^^Zx($1PQbZqreqFF1JIG)_~@8N zKaBqr$a@9@h>&zKcuUs>jb^OYs)t)4-f4cpTDucOoCO8?Qkp?Y@OM#SOg-r6E*6M) z*TI9FA9vPU(Bj+h>gB#4IHKmq^lksGgd*Chf`i(4?$=P1o>(pgzuNsdH<+`b@5tyQ zrhsNdX#E4;g<6=AUTmDYhE|J1#jfkb4KP*oSjNtw2DTg7Ccge^0maZEHbI6Gpti4m z;ExeEN5Se3j}bW&T5cSq7BB>dSBQR5ad*RvwXgDNJbyoEmP)MD#Op-#x@bW+T9qmk zUM`}=QT*i5gC4j7Dvf?B%KHY<2v4~xjvqwC!wTH1`dkBjQh6mh>J4D|i8*gvngG@F zEYn$KXhq|>66SsfR~&pHtlnp8;Mkz<_VSNrm^NB!^G>J%%O`1n@}3ePj{W}Q`UOO` z#8a;>yXV6N;%9!vY*WxqYdQ5HVF3PRZWW6o3Pgtb`X^WXdl?+Hx9mm{4NXBy(M;8X zm1sMqG5z&WWR&+R5z!QVQ-aN+V_h(OO}MePuNL2vZ>wk78-Ppd&DB?xtzeQOYL$!k zW!mE@`LsE#>ik9*!nBUkb%oCbQjCT)mOPT+L=?8^^36x0?r3Fuu2ee_QU(*BxaV5X z>S(?kpmk{g?;u^U zKxC!|z5Dt7Wr(W1&h_#Jc^#tao)SGhT!sjpwP&{x^{CIL!*08T5hwo&CpW1@4{1D4J?J;;C+r!&^xn={L)G|FJ>QH@Q6q0XunqJSL+EF zKItbKd9M#zPOd7f#^b7A;X{8w30B_(k_*vLv_cV|R2d^3A}4lIK0m{MU)tdet0f}K z%Kr3*_(yfaFEmkrf%8(>YyV{8r=A7NuAsGEG-;TeG=XL(n zUwmm6Es#yD`)#|b64rEvG{?m|ApS?fHnkF3C-w`=D%7=uPkh${U!i8$J8{M50-}Db zmtzmU%WMMS34-Itv`X;VP@G6q9s}>}*#M`NPPjK)$W(~>P^blMP=s6;7{2G3)x?VL zqD`JqufvG45B}7aTipRNYJ~D=L|~O}_wN47!m6HEWe4k3(8?|!LX|V#0=IX`hUxnd z`C$>REP)l111Gk6k34CD)A#?fXy;+|+kWknI~aZbqTQA(c9+Xd>sx^Fed=uH_ZA4U=&hY|?0|K~*p{AKh$i{* zYUiFeJ||W_b&sOOsHvB3tX3``hL&E11vphBBjNec-*ZsV*y4>@{>XWSLciJY8UP%Y6dmq+h$cWmX9( z_6fRA{PW?>Agwo-7oz=KglsnsV}+ekrQKzGF9leirlg6)e}BJ%%;UIfShrnOZ;Gu3 zd&g=Al4V2_F-VRbvMYkHSn{S-wA8DyRJR5Q7s7+59r{j(Qo!%1Y3YbRzUT4`YdJmp z;W+ok))|*hxFZ*=_%j;k8Hes@Ra!*yv-?DF;Og}51&dq<*FxyBjmj~|&4<@pdc_C+ z6+rgut&d)zNf7S+;(%q&6r`Eh!}e+?9Jy1Y`?v%nCK@ubi}>$Z)TZ}(XH`OYGk^rZ3^XRg!-2iWx6y*bbdp240ri*=2~FZO^9Z04{=LS3st0tYKBUIu=XQvR zQ+)AmFNE;FvN?y(LB66|wR1S1T+3Vg!4cm9*=wF*>m5x%9z4Soqdg98PS;iZjC;XG z=J|zJr?BE^x7NJ`zekz4l*@w?YutMPyL3pVH!bXFX-_E0c zSm^!v%MMqMWerS~&_SsVq2y*qrr5i!tLnXzMgtPy)G9r0LzQz@9%RA0uN)tmDFmykL3$4&AmZ{rb~#&N1-lgvf1jO$NNTeZh=OW z9jk#nO?jIxwgAuM$CmbQST&q#mtct!yHHS@_*wUQP#k7_K7;3zDM1?hS=$!Sc|*^p zXIc!uPdY_&jUl?L$z?rVq5|jNvXg>{3jMAAo3UA-7>xM-)Kj+=z}%)N#gQwBp0bG5 zTVYE^E0&8@X6YcLuiA+0G7LjRbupz_IqEblm1h?5`)ZbSPRX>v>KLzdS(DW+kfeF^ z=maya_C1=Wl2JFiN6&Af>(~ev9exKnJVgDlF|Efv4t3T?p7q~SYrw^@h01xj3Rvj) zHcXCT<)_MtA64)3LEreaz#Wqs@b6MnjKXu*?k0toJ4+3$}Wj~yx)rGpr+MdqFvBq@+r0QY6INRAv`BARl|%gZ}>$DTv=Zvnm@Cz&%TuyiRq@~g!RQ0uzsPH%O?pSz`YE?&6uD|+~>*$pGk1uRZt zI3K?&@QzeO1c85*oqiv64P4suU9x8_gRn6dWmDdI(AcUa+4L%h#O5}#ZLD~GaXpHl z%7W47u{%p?SdEf9L8}_$TLB$LaeuVhilCHQ`i{n4IneYpIsXVMgsL-|VrSU%;mTy) zcsD6VJn0=fTDcQ|OuZ*vy#y;@ElxO?&r_+} z?g`+zj)Pl^yYgBCv`{d1hDl;HE2Z&^Ge)+Ge&t-Rzfccyi!V$D(Sj!R=v&uTeK8EB z^Kbl+YyqL*=)Z{=0X#~w(p0(I3S?&c16EMiS$8r>e6Cst4=cVAyOK4-(rzDXC!#uC zpQwlZqMiWFQfHwr_V}DQG^9|AtGP0vlf+?pILCI6{_&A)fMPk#Q$v*)HQcmz;l=X_ zS011EAZZQsrqU2?A+n@zapGRpL@kUm`>XJlA&Rrtp5zO68@zaSJ^1u>j6SXLXn#Sg zLXRo)=vnbrpcpc8B|}R&z59u%snEH%fbAONyD7Bz&Bq8x=pd>*W&a4Nh$340Tv7$MFEvA$+U9$fenf^$g~MM& z1%1p;&>Z>H0^(`8sg2SN(EY1>qPDgZCI|(qm-cGGyrqJr@>wbHf59lhok}LD zB8)yfN;rNPBiIl3zrTGiqz_R%R%GOe#2IqZyurbV=g928qGr>bP(>YQ(}+rn>VZA}e|$Z8OyZE3XXaiq;V2_gLYY zr}_;3mo}G-RJ{eZ*-{QP?5hH4T}S_?#p6)VvBW%+jn{A9(RSLcE|}2hDUsXlf^&Y7X{zodZZE$={ z{pv5=$Ea@7TmN4nHyZSl`5k_~m$`Y9$mc6TMO?zBcYiO8Nrek~EBC|iKM(iDDf*#S zxy<^$K^M5D>_*?*>IB0R(fqu}yKuf@4O&sbip&Se`zH_J_mRi$?Ad@7)L+s|zarvm z46@k?d({vrb3EwmDMZ~wtcB4Bqt0qkkhXx&C0XAruL6S!kjvt!pNsB8^hshh9nL+8 zu0G3Ky`9h++eGZ`)C%Ejw9)^g>7$h<)T-iJflu!K3nHm*up6&T>Q88bGscY$9XO}C zXoo((C4k83Y%^^tw7$9~G+y`=nh#$qN|vJDjze{FM(4AOczqP*3|n8qJ>-3+mr68< zK$+PTzt)TuU*BE_-sVDdK-Rf^Sp_WI5jnEsR|YHr-=xk> zqyA^D;&GKO8-xv`CIf%;fV2Co*c)+Wv$DkdyKL&F(VKDD{awuX zp0f{V*}YjAl2AXAn%!&1XlKGcR!@Lo0iTmE`iuS|1WL0*D@IpV5TQ3YqquCMlRlta>EkuH+n643FEPO`-7k-z-3?p41c z=*gSk2pCBQ-P)>i^0bI*dfhAk@Kr0kJl;Q(V_FRYnq}WNo2p>mSd^YA1S6rtgx-2E2)_J{2QKUkLU{Pnbi=1%sK|`A_&ePVi&x~`voQ)$xY@kS zhWh^vr}7Ujkyve%ky_1gwheTmYOi0%xpAT2>1)(%HGFTeceX7>E6klg4<8>a2ibzl zH}&6ELdHq$;}$_BSW$7-wRSfRJkM5b9X#F$j)zCtq*f6@G#T)z;SuhA5Axonwygo# zaO1s47_~krZh(i5R=Q`ORe;N-R9n{da=83!{7UI?5hR&;^tA*O!qLL| z8tzjiFus30eEa~;4R2UA;vOWxjK_g*{aEpSC>LXo8+D+Wb6l{=rVMVKYQF6iggywL zOI!Ciu|h_|v#)Zk2wHjW1`qy6(Rs&H`M+U2gi=<^E+ivlW^0T7a|`A zL3>R(Dc}muCz8V6ij=(|@RZ)~*uVdyfnORf&Y|uk;jhb3&D2z zvBSB3-mmTdR>E8Uf^8W(sDH1vE{*?d0Un{4Xs234hHLXO@0GW}mfHxOk5U78F*?Ux zyHWz>e54?0D`xDB{2nj(fl#YaHzF@Xz(NRGT3B*@Tu5Tf)8i@l@6CMm{+GRwWl{W23U&U#u?9t*KCC!a+!{GF-378Ug`fB1K7~(y zb||6`=Yfhm=1ZuX_rgYB%@iVgE|es2=~jcMajOmWBFbhh0z8ruA>8vMK7y(V~ z=->Yft9$B4LobX=^#WIS*@_zh(G~k&*(TPaenlS0tE|!ilO~^`L+Ervw>u5Q#giPOptR&Ur<#{l_taVw}FPRbS)RX_+Ade<2Pr_mJxBkblcZn9Y0SEbo-0yj$nj1_V-`vc#Jq`PWIoT zZil-M_%rxkAQ~abt0Dy7=ZjXC#p`emHBr9jeSQMbGLeR|@`iZbu^Wyypsr_7xv=%h zy&R+}Ing3J1saMJ7xX3uF#0mw&M1f$Q!P$@ve&(k5v5PN{HPPUqbp@k;=VE8DvFm4 zzpkyHkng*Vx+j@N;#1uJPS9;9I2VBvDWxqZK~d`=Y$xP4hu z*YwcmWRhXbZY7@$8<)y5zido{soHU`h54WU_#81wGX~4^aoBh4O zH=_BfsIeZ-lWj&GlCOenLiL(oNj-SFBPAM9Ge#~yMjvD%+5j@b%rO%C&1voXQe8Ue za`9!{LF@D^@kx{%wo0|7a#e4q>VP=g*L}{;hfQQTRgyQbPyI}1sjgGV^!ai7uTj}aQIc@Jtz3HH1zXAR6GYrZmzzBg$H@1Z%XH}L zUxNV0_{eg84}uW6R4X;=m;PJHPolJ@p!Q4R`YYN&a6T$R+IFu8K3!W=mo}b)qbJ-b zHZgKEo$9CAixC*tofiiqhh`yhbW-mC&j@VAtTQ%S_QSO8p%yk1M4U!YTBuzkfNL6| z(u+#ci@8;Zo zIKo)nsr&)`3eS80eYWm^ua@)|*Yz4fTb}Fk&R{J(rMt<%jXF->gt*qN3PdNIFO7{- zt%WXm_l0`&Cj{1xEK%9#!7k6~xsc&(xHijr*u^Uw?8`o~+9oFfMNM8fZW&1NN z?uZtu<$wAx%VH2bRmA3)+tYAH<}9pKEFE?||F;UX z3e2lG5QWaVtroSdP!ApA6IWCM=3t95@>CM;dmi5QNiPiV0{*ruF4M;d(30%rwT^SO ztJ7W<6YiZ#L_MwVVI*7E=?c+qr3s=Bo@#hxT?ui@@KGYD4E9F7dSS90Y7dXkXDR2y zPw9nZ2htDJRKbN|%cY!v)4ueic1Ehp~Ctn@G%2Khax15>vP;_wFiY^_k*RzEz zZ0E3o!iItW(0|2{b^ghx3*p7^{_2~Vh|yjUG?(}J#fYegU=d4=y*AYK6O3uP>L9V@ z+iz&ceNsNvl1FPL$jed1``Dp=J)@9r9WxA9No1lTs)rHPCv;%>6-JI`dPBm|Z&Nl+ z-p%LQ5B}djF-q*~f*q;8>EXgISkES$ig)aSm(`|^wh^7raoKfj?g9EU!WTk!F{+qw zNwLZG9quE|BYW+_Iv{)X%a2|}A2`gNa_Gy(>W+`i$(e{~D)^-%dK9mFqq9q4jpX?l zIp8)qCNc{(-*s2s5QadB$*?{>5Ycllty<@OyFq{?qiZgxANMj>9U>;WU`~nUiU#Tt z9?CTOgGQY&oB4#Z>{6hB0fo{O;xttYVf7Fev2Eyu{ki<}VEL$H@$qhXTil{?1S(@_r;(pN2^Fs3o z&MAWq+>`f?)`IgfH|4|>0z?@9HRJ7TfjrO5pN5q+V7*6dkax?6dXumoazyYCUpdF0 zcsL7aHXhv0QW%0vcaJu^?O`yPv!RQ&8UgB(+s*DSL>Sa#ezb(hK43^}+vMt~jNmV|F5pmCLPQ6n6xr2Q? z&K8g6KqgW2uykB0SW7J!7iFcQuCp)I=q4gACClr1%ZB0iK$_J6p1;n#h!^JDL$pxa zfZThGrl*B&Dcmajpfw_7spC&C{7I@5^n8kydsdNLT8P5B%WQh)`imwY zGd6#d>Q@Ou>fN@q-Pw@Gbb`x74|UF}A)%)e7@hchI`ozLEKr@OZ>GkduS<+LX^TFh z=0;wAbrD321l^q8=IjAyNS-dFB*2X*;h29yo$&DVOX^VECy3dH)djn>!G6i^GpcwW z$TdEx?D_{QRAat52!!Ut%h$9SZA<94&HVRQ^*bU*oo;z+1);z4ifxOj{wSi;?H9H2 z>$mZcyzbZm2>z!f?1TQ3sQg#1*|bF1Q%{>}e?kN*vTt;*{S_eBY%y%2PzeejsxI0G zApmum2N5SVl`m$)+`C)pznEh{bZ#=e zT>~Q`k8RV`lHNh3IC;Psy*cQ4l5xP#f(TnVD&iN+v1)$3%61u}W%gB>rDp$igADcd z83FAwxUhU!>yc&|R3BrJbIHttyw`)Kht9@=0*mX>6aA?m<$Wzyh8PBP95RPJRuL_A zXrM}Rbqr423pmo{G=`CMKfwo@<6ty-*ScaL50Zb9+@gA#2On?T_!qH~2vM<;33h^S zK*-=|%(Qqc*gRO;Um4(sXcLb{ORNmw;ygy+vKxVv_ja_x|3;vRi$3U@SSm!QM}!{^ zPXX)E^h@Q55pbmE8&o9wz@^QG$Rv_5hz`B;BsBaP7@a(#+iErk{+;F7-ANDM^3zLk5v>Us%eRLf;GMzdhJa>?K0Z z{Nl16A`tp+#we3U_X0=8ak^igh^Qswh<8J@+kwP2wZphK*zuI88Sb8eR>Hoe|L72% z(7-7__@a{Ku%OOw|`LME( zFbl=67#C#~v3g65gvtu{_>67Ae9JheywkmOGYQd<2ga2ZGz+R>G`nJ6mcpxn-}1e>l1Q zN;JXip74!3^TRuMpHFpR{dEFN|2!o7Rw4r8jH8sZ2QU)-JJQk7tQJ21KGoWAp8$sP zl;;!MDk1c8b*C7fclTM5XGAo0zyd+gD=u*m>eEgf&u7H@oJ&oCDismVTTC+l+v$L- z72js0oY8-(+GnDTdi9#jTMY&s)H|A~be(XXs?KCpKTTN+Q54-azkRF0CAN%B$}tZJ zUn8%C{!IgtW$mvUVmY9%oTaH$jq{?S=dpRscrgAIC)i1YKF8$3eWz)XA$Pyj!3xxO zPl|84D==VmCVpR?w{Qmp{;SSxc~K8T$30UP1N#tFG*?!I^YlZd77Blyi{(QT#2mFo zVQyQ1l>9U5cji$N)wrK(G*%#rD`DkF;H<8ZZ5K=yMT{#KwSd%XrP?_}SnaQ`dy;_X z@Rs9D+KN(@@ajjbh;L{y9QmPhG*P@9s0`2jYNjuSx_ldNR@{#TM60vi@I zPysN|I``GyJLRKD+hFvjwd{Nv3vTNxli@r%e?zDsX?}^2+Y2SqYRMIc%Ceg}xRRolD-`70@Kq z#^N`N)l$j-E=l;H-oY~v#A1)=FIn*qFL=?%x0Y#}Yt{*Sz)ULd-USmBvJO#ayCFbV z^{3821LQF??(TL~!}9uXac`CexO+78sQBF~Fg?J1tiY!TIG>Kz{`;>6ltzW^k9U`Y z-`jveQ}sT0)#h?A*8u%RX<>Xf(YJGYHZJQvSv{O9PQUy04CXitSu;MNZ)`?5kS2>fcR+mM6kl!#Pi5}dO-p9|i&nt?vBe{TKhpAbn<;p0iz z#5uC0SG)z$e3$>l6<=0pgEb2KE#WS>* z6mY*~M!pb34P()Td`S?+Xq=$P@ne zB>4Z^Q}YQ^ZFU3g?LvYv`u@2iR#l%bb%Bk|=WGAr-gH(ZvT|Yp=j{s=e%=_36R}Kq zB^^)?v!pk3S4i5yu=}Q7@pdB&`(|X{7U=@D+3~>i8>kyRAOu`rMStuk;Ukxy76H?C z|GwqvN-(Wk9*5j4IC5k=vrk|e&gu>91c;)K^VuJnzlh$aaG;~^de;r^H^yzr1aZzI z>fL%j+X7;fsmJ`iI^mFc;2Jy5dkLxb^zT-i;CU8x#sbc(<)-Vtk{NBV@uf_K#R-v- zffl=o5iP(g88{cGR0IC+Th6+3=0k}K;(z5Tp*CqvM)+YS42Un5r2QNMf`3NG%asu@ z%RKD!4$(kVDyM#CwG)A)SbF195D|I??dIa_h#(dGN#OYVZbX*RGljMzD&__G6{d$> zU_N7W`iWRK#J;FlHwkV5`(up^yXvTm3|293aAD=iAHz9Uqg)WJ%HFguD1|FAx4XFC zrGhn^{u!poS-ig%=?bGBpKW7)eo%=BYfa*ggB_T&;(Jd&$ zg8-g>Y3@$AkE&^;o3STiMQ3Tu#l5g*C>*D~;eyBsvq}xR!-%5m`mQk{v6l_+Pf1XJ zM08;c&*r5t3#>NdrVd;!n}tWNa)dV?M95>g610eUsXqR5kA@d;&hp|py>$s+PmaHA zqeG1l*F0EODoudqp!2~2X_)WIw_}~e&%ppiKxZ0OJdJ5ev&WsSg9DG9WNKOpK;LwU z-6p0SCKp-mzQk&lR3QqY#@sNJEL}W1L(krRiDWjr9Scp^UUzw=@DPI0iR>n#gRbM4rH_U~l1ZReZtMTCcXkBKLDg*xg zC=Kj58xD8r{F_?x=O8}0==gvO<~wY!-+CHNgaip$cUr8Zp31v+@&GMXmd&K^WIw@b z+i^Ocz~|_HJRB_ensU=O9D-EH4oLS5Qy#!9b2iJ zgGrxARv(O@AM+|?l&a~6BB!|0Hq{d0Er&D4SI;Fg zXG1GVZD92CXn1=j^Eo}vZDl=4V?R9K0VC7a=GALAi@IRf-8UV@CP{_P4nL|5$}8{bAhi$GULYyct}9CR|%v>4HED(os89F__v zxW#|h)xL)yvdS;{SxKj0!Cht{Wl#>l%$_N>ctFCxsC+-9P% z0(I^A$US`i>@%8t`k!1q=snowtVa~TBS&VBz!}`rg>*d=!AS4(__5V_Ljojx72dhk zQ3>NZ#@_=G@nf4AnseuJ53p>y{Lsc|d_Cpb+g(e{RdNLPwcQ>9jX~OKmItk{%x|a^ z=-Uj7UH7dYY4yWds=?bqFMBXjY~pzR&JcKQhLRScZ%eg@)Z43W2&_d1hT75REUdi~ z`L+`E3-bdeinzy>{_>L4_gEbW{K@;E@VyM6M#qq+zZMaW{!SyNP0(FBkddK_J~^%1 zJ!BXGzGxTtD@PrzrW~uUe=}pSw8Xo+`y{H|RhU0Q60VZX1Z-`ZQ zfl^nIP`qIWFdMw6;-IdFmVK5bl;&;lY=EUeBovWwcMGbI^J1kzje9=vJ60iFT?naG z#%dbk-4o|G(eGFv+G~ZVs`W2(n~W4#ZCXGc<9G`FpIu**7|<7`8S)FfCDFGvWLV9o zg}%`cAGLG(81-l7Xqca`hte@>HiJvuuyv?$z!Z^akdh! zQYr8VESA8%|1x~rlXC&GEeJaaC9rp`>Pp?~5~!dWGFYGG)nfOGRn6^xm3og^O5hrV&4 zdU2jCFo>}^wCnZ6VY1*j_#HeFA$NLUt1IgP1)dC z&7(x7o&`2eug9S`6_VZ_s1t9A19wG>MNT(FE8L@z-Ka`|!s4EW-pfRo-_|pJ9@GoI zOGE*{=e3Ada<)=rA4nCLZ0|dT6`VKS{8UF8faYv)0)YjqV!YJ!l_)W1D|Je-Dxng7 zPIapXPZq+;hspD@^cCQgwx6{py9$;939&c$has%7>c3mK?@748DyBHl0d9kFPJiR; zz<=ZA?AA;Xe8TtAtSk>siDjrn^c6ySP+#zMwQSIO{LH}SWHOxd^%G2@&V*-cGW7RU za^Q}4+r-ST0jU4)k5!D#Fj(BHJuO4{e?{I0*Uht?a6q>EG|m6@rK%qf|2;!g_lbj~ z2XRk!{PHRDw%|H|s(|E}yI9>}{7X$?5_47G-QSiUz;kGQ!rm{O+wR!&_qUyc||8p+4G!{?M%X67i@`5RE>_p}U^|8NyOz+xJl)6!@3D;)JO5 z$kx3qvmw|Ysb3%)IRZ0R3OgxGM!;l&<+eZ@5q>!2$o#|e1wrJ?dRt;YM29nQY-Qnm zy1u#5PCW z70mN&s^u@#zr%_mH;?nK`13szSFsIO=!Z#0({(q;KDg9%V)96P3(OEdq_irQ!{TCu zmF;Q+OmuSzUczdL^M8ph7g>rRhFZH<^Fk41B|ne+QkD;yNvE0gY%}5VdS*XiA`=Q; zQML!qVa2tV*+!mGIy9z-hb1xQK{l2BEpDtjWbOZuF!7)q1mpc38a1&3aYAa(6ZfK6 z95t7K{$?6)Hd0U2^}b2ieiJ!>bHC{^RsAB=i*-alY~cM>$s;;m7(bWQd_r2jeKjze zYdWetUI`M0bjiwy(26%v8{fvf{0Fm70~@~zp!?}8`uVRV?Iosg6)_mU^G@lWTL#fwn*362B7qRSR1HY1J0ih8yK%v zLn+&H?MnV~kd0?4=%FtK4fcHd4R@@>N|*>v)+hq=6GcD5@V-LdHzfU_3{g3TcWA$( zPtMw5&ULV;6Yd6ZO|jv9JU)ShtM2Fw%yTl@ZX@b{D_wCzRIUTWRqn{`9d3cx3E`Qk z`?wGL8~*NKU^O_;wG{|Olmd_18i##k8QfxJt1pWz0)tH^8Ha-f@TOAYjE;N;jQ;DX zvt>vBsH6SEzaE94Aa`TxCsvSJ47pNkV&(Tmo7vaJ=ugZHa@69-J;Yk;AZ-XY&OLf_ z2adnS=U*qchvjWN=kOf=%zPXXx1Kk>OP;jDI(@rQ`-f&|$&^3rN8SR0-FtT`lN&Lo zomKLJyB@ZG3jQj(RRNK&{vPsXs|JH!3VD~n2DtoV;DHrZ4YwGEoW4R=2W-N5euNT4 z7QIXpV+}+94q@DqEq4$qx`>q4j|f2ddycJLvIPb=uJ2EdXorZ2;(C?ih|ba6t@=vR zj1>T)n|p|w4I)e7JaQ8&{IY^6J!wmTv{@z1JiY|ynImnxDpoNC zn{Cj%&~kw_9;?tOST$c_Wv?+4!{6s88sO@6Z}76dDf$m*d$$*72VjU{Hf9g~lOlJy zuKYocgSMHK#1)NB=o9|x&Y47jbA~f?Cy--8{&X>n39Diwh}?8syRASMp>t~;k=K%W z-aVc-aG!oPD%JcPRtU)1UW_?lP>i;0W}H_YAJOT$E%n1Qj>9sQ*#xk= z)%E>4LnAca%;$c(ANK?UGER~t=nq+aJClR^gH_U(?H=a!aO$1QAY)z)93SORygYz#qnqRK?|7Zba$+z1mOTDx>?l?oux{<9EO$cIPukP-S6aZrQutuH7XH5V+_G9S z`h_2mN72W(w%80Y@_lA1*h+sz9VT>D785N{raKb5=pW&5cwF z%Mu`(Rx{Bl&cX2^qk^ILs4J?CW`9B*o@n*YE_b^R2+VFY%adI|$vfW0iPx{_KB-z< z)WBis{;R*MO0W|A&h_4cd0AD|i5ceRf4s3=PQ|=5Wyo*-{U3pR_x_P%7e}CcXoE#XdKjMh z`GuGYAfoK#qYcB z6MZEc(N!S{m?Jdf2|7;JM1aLUO?~$#jbPF;o!LCo2xWuGQ7YM`&}NnMx9fZnATTMC z@@O%bYx_T6mo5M*2K9HIP8m@2qf(PKJ`1S%Pi8h9`T*UG(SL{UrNSqPTOAdF`C!jx zOZr5S0IQL|XJu0xz?5X@csw6oAI`PwQJd{>|6g+H@4f-_x8+{7W59|sy(itOCg{(3 zqTCSmp%dIg#-qdRT7hRZ?!(rfRyfEt&%=zBm?zyHb+Du(_vcIBCU zj7$x~Ig{n{{}8F~;7(yzsDvD&Z_*vcn{|-nP2Kq=tO(q!LfVu0^T98jwpvQO2(GTJ zRX>o=1m;5w7ddpXl9x(`aKGsTbWT(?$)1eG%91iVv7rQL&u{q>8kG*W+Xs(7)U1N& z|IX5!_*MiR54z~9aR1+L5?^L9TL6uwuA);DgK*GQBj6@^`k*~mKa43^w^6#_ z`xUBbcyhfB7D$xx^lMS~y_gZ`ZrudeW)80xFyi?nH>kZzryj&#CbOPwEQ9pFk8bec z{l)M8p>~BStYr1mp5?#Z3HMGnf7HeMdS32{6Nbnq5LcG?`h2zuK5h#=uRb&firOFQ zu8{P@W7e4Dl^2+MiLN7`PDG?$=5ul)?#;`lQ{xP!8ljmsq%aOE*?Ya42#$Yi;4%NC zy1je}9CJFuDtM?0TtwydE=<=$qmc>MA?a3_P`@0xXp1Ps+QYBc(6>0hWk;?sSqur> zdNK>=iJ<&e_C-?xp8tBbNwh1GFOl#o$ZWU|wvviPFQ4v&5W~Rj<@2q$*K$1levAO! zhMQLdD;nTjSLb3-Xfq5pA3l8>t9BAiqA87yv5LkZzWcKyKIis+Jhqna0G>w0TJxzo znAs7xjM*B5sz-;0l<@xMEP6~qL1hHaK0UU+gF0HR(l^z0HPj8Os>WVQAy3Id&ATiU zD_UY||75jwf%Or$?-j4QFwf%rxA+~RWjTvUKI(SDrhuO41R3TxI903MUgG(fO>OsJ z1Xe45aCL7m9EL7IHNWZ~{lIF_&vF4Psar+3@}HwmJ^PAVUN`27+Bs?qN|*`YQGcst z8b8Z>2rory!ts8T2H2sZc+fPJm zQg>Rn#1g@goy>R89+9Bju`0$h-B87`G+{5<1Ys^>p1SCFU9Ip_`ERone5M+G9=y*0 z*4juGOXT9*r9A#+CTjR2&-rUj(IjB zXC-F!tfx^&77WQ)B;Du#h?VMbhaOxSL5|c@*8^XMVfX7_&C$485T$zT;EUB<1xKPa zKARUp_4Au+Y=$2o%~axoHq3zlYj#BU1N8L`2xOI$qF*jHVWa zUV9DR;M;k}3?eyX--r;e2>{H~?aZ_%fzy4USlfIi)n zB-;H#xiboO5R^1G3ywT|@MjRcA2Gh0tIn30Li-C{C@G_F$f_rt2r`8#cx6K@F;d>&5G2o(JFJ~bN+ zP?n)cy1Y>fZ8Q5+)li4hI>VsC+E)T$**4xu5}3!DqiTCbQvk0SLyms>S_8qzPDJGk+D%&#OR>D7#TA8!#IE#zYH&#D-uNw&lM=+Osv z7zbhS8N;>fro%Ab5+q+M)CY=vmi_j(@%iuFpl;RE1^0VHBU^#&;5U*M^wr;S|D=XKfIdin+u6X1NXqh(=#7)S;DYfN7!SF9b^bwakBVFWhTj(M#ySDt|jx z7^nOyLF9SJQ|i%Ambh;;K0b1Jt`c)!Z?yQlu`-nR*kFfX4OSw&y&qsr0DAqDf8vN@ zBp3C#9{Ux~i3%x99heiBoZx$O8hrq4f`QYYMtZ^1x3MV49A6)HKc6Y&wmh#^b#U=S zUtMkcpXTQcpxdnTL(d)kx`ipdS;(i*s&Jr<3+w^QSZTrvBJke`jGr7S#N79(4>e`U zsHc9i{_20a6&iET|0wuW0sBb|WpCCFz|KXqD;J-=c3R{Biq# zZvPR%@6ViRNl_OtM?@>qd$ht)pN`QpN4h|K-($g-K3(8!aeE=05jhc}O5C-WtGiGf zed)zK>H==|DFI|Pz-wxtXL_y{q~DmfKT6Mqs>8dt1^cF<>FE|{+qEI|Ew8gC{J}ia z*oDEobgWQa(8~A_fcf_$8j9}7k*P8D4-3aU#YbDlG}`;f>!{_KdeP7Ve?I$rzYawn zMZwV1&BwK%IU$ zibsa%ugUyj`aL}rJ_jZJX*~52hTd52e9=dAailphglYixZTu9EbMAriuB3M-%dz6y z;q9N-hD$cJ#-JW}m*=}^mdpXNe(Cfqq!)F9*$jvPei>}d8`5PL;xeIRxigzw8O z-n@W32XVLKU(t`)x)Q_S$W;LgSI5P~QQutLr|-dKTMFvc5>`DrA3#;g^zDu6Ik455 zmg|(Rh64^x*=$ZFV1{hy)87jrPgFH4HZU7zR_-6ud4-is&vlCf2V=p~@a|;8bL9Gw zb)Klq=>Y@g>j&;x_rYBE@}$sCFI+2l6sJqy0sEv5J9PNh!Tq3f1fj?wU`?lP;akEA zJ}EZUsVj)6j@xh)=d1@>_IssQI|`s_=5qS8+yU?`?&@pL9fGqJAND`SxqYAizKq5# zM3F1gy}lti4eY*+S=q>M_?n{h-!#r!6^y+PL$isXaX*m#)4@KF4boxuvmOS=$^Ngd z3sdNiaWnLF$GuYow09Tug7QfC&;QTa=S90hO8#qsMQv(rnlrV)cjs<)7oimP>Hemw zzKF=-_-Xr4WXEy(WNYxVAit{Wid{0R;YjR^M*$o1)VN*lOCCnwW#&SW7tXm`8o66*<*mSC z!w?{cyp@k$ny%k4KkVRhDBs!-^P#cnM98rk zPR!1OJ-#0Th9&h9-Fo0dvbyv0daPW!7--g_ja4Z({R7TkZGk=)W1VSp>mi{pGX+BK5TbEwa0Pfj8_cdJ|0?)SYW5&o!O};cxQGw5sC%*3Z)M^4JD*1$w zPjx^Uv<`ykmnUg_g)$~8P`MWQhGb!ZaCHF6Ma44@xI(@H?b8Qhwa4FCvg55_UzrkJdYk1 z#qDv1R`~YONN(#!9jKTVQ#073hStSOxXsOAeyDH|M#u55Pr z2lAet^(CLjJtpi*Y6U6doUlSP^4zY5wcMoF!V1WxI=bs}xw{OQ4hh^oww4WnQwnK= zkPhdVCpvFmOouL?<>$AKeFRTOcJG`g$X6_HJ<%sH4Ec^P`L{4{s36%HMp9k}Wjl}N zO0+Py7D)rqZ?GE2Jm=F*N<@z{!5>=P6j-o!{%!Uw5qv7jPch;dJuh8rlAs&SOt~i&CFnNx&ktKXoD!Y%YcMx_`=1QENBal zy(OBH20AT%AESt=V04)>S>Ph>i>oxgU-{DrNk6J(btY=yugCJy8`PCxZqXm zrZXyGUO`lgLcp=R4um8A%k*DFUxcUI;1#@&G=0#1$lZ|#<`NYw&rDGN*;$r}#oVoA zlRXDN<^~n>2P1gekguzG*qj>kTX&avXn&ESo^ZtD@MEr7_?5%Ha%#2@N{p6g7IwSg z;4y=2ChdNZ2yIa?ME~x@<5B%Rh_fF`fnU;MBI* z6un+UoM!%g*fs{L+ljgof!j6XK z`sSNApyjgabxYzMD3|Vq|0fgyYAp@E5z$RB!WvfJi2G=EBO)ow1A3v;eP>a$ZD-9p?n7KW`dE1-T{#sW*uvmBY2>sU&CcjO@?BY70Lqj{0oxTxX z$avU0y{(1!54fGp1R8)fxVItw6z=PDGsZ69{doBM%>rf2yLKG<7!`oL(icu&KkVnq z0c5(X$`s^)#mA1>grFoy==~&rsVEY}t~}W~K%M|nH2KUa6p3(Iuj^cAa2s%*JC&G> zRrl&Y-9>A0&rZ-Tq4vFxK7YTkQY#m{Ka_S#7Z5OC*08kEhgv{nUi_ z(S7iHn{}5^kN54LN;bdo{1ZO&>_jYi7sPYQAAYxvRov>#Ou1f7@N(m(Q+6)_(uzI# zBG02g+@^;v8u=G1*Qo^Ebt~YlhN218k33+Oa3+ofBRc*~&rm$>WA8GPt=u%tftuAG zxoeD_F!|S2)#(&ggk(1#kOi>2i1{l^*#8_Hdcj5c=rbca9vDZ@a}(0JNvS*YLmmimOcm0 zTQg1jtq_33&$(X~d2aQQO0hC0n&2R7#<{@2Vt9Ph;(pcv0`x5X5}+cK!?8e~nXL-+ zxoOOsjj8oP-wov(FELNje%kHee&#;lxt05!(xU?emmI!uA}>jVB=K!eCssE($XdJ~ zZUFK!dM?|8r~^42Jw1G?0S>XPB&ohdA0~Mdk*J*yKGNrcwJVh(%V&vvRO7Re6ai)E%Ml7L7sanN4&n}07rWr=UcPSdVdOn;emyjg zTx#v(&U0I+ms?8nr@8i5!G5i($22pzXV}#=I$Ko_%-UtUviSK>zM8)Gbh;D18i&cq zxnN}i!`h2%dCXx8+nc4;;(4X<&8=weJh0erocVHW23`qgRencqY$Dx4M*VspFgSb^ zUc%?AJJ+9=k619@vO-@*6NX%vx(%Axr+6LoH8f^hcfyOiEv8?|a4+9@%02*nXk+x( zxH~v%LDFk||MF5Tq(zdm2_g?|V|hzHR1~>BDYMa1!~7qu&KbC6ogFkX!bq z>aBz(-WS{>tC&u#)kB=uqpI~7tOhMqJbO~Q4%|OeIE>|DMS5@JvKHo$MEiJ6%!06T zJ9H}2OR@&;zTHZWI*<=_+~ShM=%2GO*7j<-k_q>v&It?F55fV)dfLTk%ylegu^1){ zW1KII&E6Dq4eGQ_`to7M4iOgbN*F&=OZZ7s)eKmnZz8Jn;+z;=PQNCs?q&w{Hc)Jb9hRQ z6#0%0_GBYiX);imWmCA+54*pe1E(U9$K^WqRhk-kc~k$+FjjZNrS$A6wl6JU)BRrl zOKvByfYYMj3*@#H+&|$$jy|pLDaBvX+u+lnx<)+S?-ULxbA0j3;x2P*U>=e)`bdV}w;&2^!pMJ33g zW}+RZPXXF3IMB6+`{V}QT$aOQ5UR2Jt@-yTR1E6&=WY+cpJu_r1FJ+3;?)+-{z?RC z_1J6s($N1|rA%02tAxy!aHR_mk+(^5GBf3GE*v>)9ryNH0&*nto1=U);EcqZ_OHLg z;f%S|=`Z)^V4tn~KQjJNsJ?C;-v9$pU==Rh8HMN8^p9N6mwR9*sJ(d%_hr2kSMyGN zDo1{+oH4Cc1?-Lgw-J<;4Pj9x>sk9_Vb=s&wO^#cOARagW8dFF!iwDYAQL=?A&Wy+ zegI?yI@^0ah@cquN-o!&2pzrYie{MK=BI7V`~I^G>aNhGQB0RX?$FP^43}(R4=miR zMITPC`%t2PKpHp(v~!QOzC#@Xce55Q+=+!e1_^p;QhyL)by~`j{D`@n zN)4?Y(@>NNg=&m_Y0A5*f{fcxSk(mzM7dmA`}MV zI`8@(EIos+%LXr&oIip=)5O=%%n`7=$?UiDItMDrxZUy=a^PEyT0g6A0%(q>>fYP` z26&BPdM(~X0)=SSg1&+m)jdof2+F6v2r)Nu$7(dY>*<9zGEd^-GK09M8k zGT8c5`#~)tu^Jc_`umk|zaG?nw)#(3DR`Z)c$Z;Q43=Uyf@C&};jQ*#0b9Nz zAS{(;+!#!Sv;J9O7AYTqJ$yqgfF%Xme`nm<=!%3Iu={i?@ePbRF0EzNhQpD)tEmqz zzk{ItuhzJhn&6TDqR{|yiqGAj4F#MdF5FIOt*ovDCh8*xo+3Ymo{vy0{G$V`I)}JV za|{7z&$WfexW{017oKab>_ye<>w?;LSB~M*Z=>DAbm9;v-yD)vMl_Rydz~` z0p3DQ4_k5&>BT`{haA#v)GzT`n>na5`WP{#rkRl-wxhSpm5q+$!z$@KXe%7iD zRLn2h^Zu%WX8pItJve_AD=|=|>(zs_-RZL2-C1~`+r+n3huoWHRiXzzFN3ds31w(liY zdEJuybMM*tJjmUcc_TZKg8NQit&!bqkmV(n8jQ+f*#m4!do$$l>Vk`2W^n&bb@vFcIr-wS|Q}}iH&ox8&K4?C^@y2i&&+SH@ zKeW;R^ln-{)7PaHNDI6fS28N$al7RQkG%o-6t%mXabOs(s57-NE({@${Mf!o2PqNAjrolL6& ziVAnyy)4Xgs7lLS#@ueYy*gC_-al5UUX}>tb;9FsRx}TgXPFQ%Z?=j1i?0#4I)c8} zKx{w&-xx6$)F`HGQZXMIWw<)xFMz!txA&7%H1|Q$#r`oC)S39N^UQVacEa~nLTw4^ z%|-Wr8>aFj=k?c@eM*?`y1w&%o4pOMb7yXo|%*RVB007FJ_9@hohy{J-JLsS6B&C!}&@($lm&L zG5QsI1}CJkiu{4mi&v#MU*-Mw{IPWsE7{qfe!oP8-`A0Y^$sVIPcE>WO|o1MyyJW3 zuP|q{96uLG%Zc2ypPI2o`2EmiOI|&<(+NjZlOXAtN^NWmW&FpWApit`R zL64V}aI@xc=t^rQ?6_S@qVyRAHKwOUWauX|Az9%L4;Ti96#0D`2Z+Fa?RL9z9p*b# zx70N-kGCjNN&X1usMPVUm|e^V$JkbJzQz0!_i-VEJIH5$)Zo={oTdft)`VYg@WwsG z*Ya7BXO%#0CUNwJZVviVj||6Bl)~ij0UHr7?Da?*9;|koLH^Z!vL@#tAZZwHVM0C4 zlR7Rf0DZ)*Id65O?sbET_yZR)+~0orYa~kh9II^~zZK;y_mxWBYW}|g^F}eh_6Q`S7Uw(kgf%Nyiuy*7#y+U^$ET*(v1jSj{GWdL6!gzUzR+vdWcLm_7)MoAKDE(ag_*^g8!rFJj1c> z-!N{qB_t#yqhV!6$fb;IDJpv;64@DfBH4)|$*6?vy*IbL_ueBad!&;2zy7Zr&x@yn z`~LmD-)o%b=TtY{y)-@W$z zFt95#pH=vWd?!CbQ@{QI(6)&a@%45CmDJ_8`gRqEI2Kkv!E>3l?c3Ce5FF5<`zHf{*Z5R=!9->~1``;G6qd#137sF<~e_#g}o(pq1p?XZ|7|m;% zwm|$D6ek7<(N7X#i-@<;`rdo!Rj$vvl{5(N?w?N)C>#QwYZki!fkPm{Z|f|oKLmXL ziDs7`&4S+?53L2Z@jT67l&9T|fzHoo6gg6Y;gPNJ*1z(mCI*H-b%-75pI_is4hOJ4$97?XXn6O;h;>Ho}!nIeG4@9UUmn=cSFhQ~g3 zyn{~j9g)M8&tdpM&t<{tDG+-Tb9L(60A!fn7n~kTgV>T@&n{ z7%wt$X@=dsd#7hnCvuPZvQ7BW)8X4uCZXo%+)8OiaBn}+pJtb61JK@;bw z^xyZEaNqB%B^Z@Zyo2dy0~G2q7P~cKUQkuQ3ei6Lco%Xigql&0 zk+mdXe4rc3XkQD|b9KPou^=H{)Jd)9ImXyJO@fr^orWf{0hra(-A_2u1*NpXH`S9c zN8$WS5m(#?&hNV%Q}GtfLJ!TpBXl@Xoqy^v-ev(ScnvAbS-(lkfAAdhuX zp~ODFmLlE=*p&R;y8z9*aEh9iavD5ouZrl(5Q8@RqrUY|3_>_YRiox}gpEiqI zIqDAnePZv(f;^4*PUC+`!1CnMyNs<&P^3{I{kM`1PWM7zeUoYc8S?RM z#(W>bQA_D}HuVtaWm!{eH3`=`+64`0I)VEAcNk7qdxHI{m0)i|Le%Oj^Vo}aX{(e zGLL|45)76v{S5B~;L7<;|U|a0lnu%vtnz$}l%YkdpO)K_L{?5v)42P&a&sE9(_` zB}^)b&eEXIW+KtnB)zN}Oc&%h>n3_Z=w8IEjV*G22m=3gVEw9pls0O+xe0!sv0Pt8 z-6_ee=;xQb)u^XCUGL{q0dF5Yybf6JW>CLA*Dh5IMhud+o2I!C63EZQajOI@LTE}o z=>+<#R>5U-VGi=6%4O4tAg^E%= zClxyaXl<$-eCb30r|pA;7o=_Qb>F$^!>4+9f5x%Ae7h0k^_~v1IMhLr%OkNa%rBJT zwJhPR?S`F?$C6xqdN7|Pxbd(+2lPo-|5@H@2ha4P=B|9?UJ!o$$!c$gFv|K{9d&hJ zpVw*h4!JUf=F6|m7+T;q{25Zk{oAqEvYmSuaev57^KMkW3Z!}dJ(>AX240`3`UTDo z!Hhy;ziBf17|c$`oeyY-y&r6M1@xPtI=a!v{cAhqc|7-{J=p?G9wE{>O|>`|O^j$0!@lqPp6 z+pq)NO`gy3+H}CRno1ibJV)7u0VSs|~Wt^ud{HH@N(c_aO(% z<~H+%ZlI_O5V?z-17f=CI|S}7xHFk`xZbi0CcYU3Q@p8xQ^GEz$Iey5`V?ck(?kip zCiAke8OVpD0u7hs8b_gUb-&jy5_zZIDb!$sk-uiYWa9CBn+res(_FX}G6t;d$A6+e z`yva!-0gZeaVv}M0zQXtV_s3O6l1sQL8w!0D#CtJY1LJH6awDPji17E>6_-!|AeNI z-$p@kyfdW}7SH}N3^l@B9yNB3n{KFMIR8u7;AREp7)6?n;kmO(-M7(mHV5(L7uPlypvwgPmFM{n4XW zr?OKZypqc#CuRzI1QHax(ow%w{;G5o_itZlch5bQ#(zIPSa*y&7phlT=`$&kA#2iRWO;<55WB5Y z4U@t_9+Jd0(5kDz*l-GU8d6E01p9KqlK4Hn;kR7q3NlHNO3i}DCm!=1+D4s2P!R(3 z(BEv+&OMhL3&lQ%4&B<01RG+%1OED7VB@9U_VULs@b>pL6D!Mlm`fFGl|O`hbE)zY zeY|%{bUQf``>2)^N{)MfB0HfY zey1;M829kmw?_`UqaVsNm?_{e=0tvxlH5g}waC3;KK=Ag$fgWAb?eSn^$S=YNm; z!F7?LD~Y)Y=DsHuHY2B2&b+1V4Br3f&hF^M{j=pW3f|Gy9AM4A=5r%B6HdE-?3eqL z2EBTL4UQVAaI9iE;6+p>u$uZ)OO@D5WASH=3Ued)32MzM{f9iz zggpB{5|a?;E=L-U`#32IzpX{gZJ|p37Z-*5o5k*yyx-1sKt*#WVET3)R8lJacX<|l z{R~~oDahBfed2tIFT5D0Xg6;k#fa=k=CKz|K84_27Pwgdpa8huZ#XLT;yjN^_$;G( zH8krvS4*Id^q`i;(65L*K{zmMkQ7Gzs$8~BCI-ssYNb#M|szoonT>tt+HnblU3zfZjpY#Kx)O`!` zXUI=@&ALcTg#IpqLGXF(d#{t58yQ-*!T|F}M^~)h>5Vv^-d0E6hDvAK5OT?*?s5eB zmo>v!_W2hD71-~)_ZGLzRzZ1`)fFnSJa~LXHgf9ZBvgiu-!4JUr16Ny^s%R1K(%ig zxpKMT1L@f^E4RUNFm-MG5;C3%YAy98iVG7Ed@PX94|#IovyZJF)1VKl^x;u@%vozC zJ6U>{t_`lm7Y9{(*1^O5&lbuQ=$p2tb@x~31kKP>r?h`#zR6Le+>EoxJJUSWAo>5f z)JZRAACX+R6zF`^1@$e&rNeQt_5JWe)u5tRZvbkK=|VVi80@{K%>{_if4stKlXavU zeSANsQ%Sl3%F-s4kUw%`hDBsJx(=8JviBr6O28}B=f%#&bSV5!&5&qt9Jbu}Z_8`< zgMWh7bjKm&N>~Ve3DN6ia`9;zH`hR=xrb0|W!(R`{K@i;>%rm+=1guX39X@al!Q!KD z2go^w@I8`=PQO?JVl9)+$~adMZF~|yi}OY8_wl1!mChF$MHjIiF78efdJr z-l_jbKYov|cGyR9!NI`UWpy?ed|7CFGuHl}UoB=D;28#U8FmTYMpM93&ycl-|DWC1 znF&sOpBapVg|bj@;IJvvbwEEAW(sM<$aA6~;MD6s9JW(%dFui7zgw8s+;X{nsG|r@ zj7w74UQC0#^5F~Akx?+G{E+$?&NtTWT@WkO2UfE`D?+|vKIhCG?R>mPNF8W&d8jAg z1cQI77~Z3d+QdVRw3s8tpFief(T$v?dp=~O|M!&)nGiqiha_fCBFU?huj>zA9w>_?#wTby{b`*L;t978s_Qmy{L@6Y{3A3hh%?CH$bCv@JC6LB{Y>kmR z7r9&yQ!3|jAtL?^PrqFbluo}63PZhjiK=kZF5MTXKVbYuq&p52cpsEFeZoDC57qcp z)JGFXYtvoY$c39HaG)s#q;HgC<{{#&SSIv|C`d5!2KtS-?ZiJDmWM;UfwoU48=AT zhjch`o@Aj>HKbjPxyMIbTq^B-4bXG43OJ>-Kt#R1^)XfC6p1~%WxO;Ai9b&3dc-5A(3Mf`$kA4KXd@+Y z2KTjvgx-vY+9eMkG{w zu->i!ESA+-2c8vzBOPP1TV_3Mu4%knz&(!><&xGOa<8{ek8SfotUis7o&!!{%Oka0E2=5+Pyzr}yEHTw#edm+z=L~UQT z4~j-OXVX7*!sq@mRX5bX?NX;7xHjGah1wLABgriw&6`7)=vxoF9R$kn_&K|&Iga$; zz8*Z^PW?O81X@Y`F)lO6OYL^^;zaJ0<8tKEiHtHRG(S(1gns6v>K||8Thk%bBZ4~0 zdIW-hv79-Nb;L%ez3cWxEli(tD~3iGwv*(q3m3&?L2 zc}k%Vc!K6XJ=<{zp^J!%slXgUB8`XAQ&{J&OY4=H1R=}0Ah z@?az8{(0qm_~?SXVMB!}qsTh=mY=S80`(b^ZjtW#qvf!2<+X`4`rF82!ySE|mVmYj ziUzRGAC1*!sY1oxf98!h#ux_RC%-h=dFMXZ?iw8_F6@S{>aV5CG`qo|P+;;b>Yx3U zXOfE@yCC7cdeYac=s!(vxDjDg3(4$V1Iogfi{pPiqBf%dO1hPlJ5g6)bDVp^mo^?m z^3N=>t0On^hDFLo9_l@s#KeC~cf*C89}`@tFR0pLk??kF1ErvRIzIFXwDvD)pRKKh zsk;o87OhoKMjpd3!h@XY`!mya=o?;7PVhKVQK-LHg2mhW^q zEqGt5?&)co7lIStmwPV~6X0i2S5Pg(AY{xmeOdX7K2k#~p^TY980F)4k$f_UTt%g0 z_KKyT%%2%^CBFntrJA}N9M6J#rAZALPg3Bq=HpYDEm-f9TwL^g83wWRM1h27)9|B8 z?^c%C0I+f06DHlpx+w6e%t_CDcqu%>$E%VL8>CtFBTvycB*Y)K9UTXEFJ*mM*og(Y zjzV+w+#qO|nTly*ox(nC{eFaMKj@SCl>9ne0tw3$@t4p?oj*yz$b$Up*AAmYY>7$m zx7Pj}UuGgqq&r;m)(nMbAM2S?(BJj^g4nu(d?C1M#mD+P<%8nU+rwYpq=BaL#y}Tk z0&IThkv)7i0fJi|--vt}0<{L`x4gf10XLt>?(S4OgeE8%%;EmTH#LkATXB5VAYTLS6a8J%O`=!{>*XvxBHJkmB>IH#&h;5T`pbJ8~3GW(o>gW&LeSYqiZI3C%^fVOq2ruxw|a+sir`H zK5wuvPb$1~J>jX4SO#X@(Tu4cnXs6>xFkMa3*pI5&qk5gbIksc!QZAn_+gY`OpW`u z@chNDP2B$__{Z?d6|`V}98m)g>b%4HJzc~@s^M|YxxVB46)+s)$2H2C1Jcun%vdur z;FI2?!-1@*SG&(|zlb`MuC4%OJ%ad_WWya2)AP#B=&Sz}_Iv4711PIX zuVsd#zF;^c{519#m7g64qwioY>4C}fk3M5gVBvwKYxC&itBH9i&Q<~4X}v)=Xs|8` z5T|57-}c!{wM&#fsH3?=qN(_}5iV;LW@gq@0BfqbjRR#ns538AKN&>5!128$Pvk&6 zQ@Qd?d9xqF7CF>=b-RI@nEO+O26E>LozMJSLVf)^V{gguO30H>aoQ`u_gbGkTNHhp zljieWpOAk~K_Nzy5L=2|zyI=IBsGCm+VI(=zDkHYzWJso0H2rCmm@vXU65fG-qc-L z55uHUxk}9Cu$8oNHeRm~o(znw&ETG!A&K$lGov#2y>C{CUu{d^P4Q z=8%xl-&JfkD2BcY0W0V3K4?G3+qr%p`O}tc4adK=Li(KWUWfyHQtBHiJ(C#CUVL z-wZ&V=Z1)_b~w%nirHf|M$qR&_dN8DNjv5yHLp4wH$XO#*Ao+mMwpc9pz0s10ERX` zM<4XrtrI!0?FtV2Ab)@(2(|U-2zY&A61oTo5ZX zjyR+beL zLtJ*4vKQ`G^ZKT8OvA0cO_ti4LG)F5T>ke0Klc{uk?%4M;7LZpl&@J1>mg5XnIor{ z-@zlZ*{l#Wui2)2i!OtkUPVuj$kspr`LV~9RLBF*Rd-6j`BrFY5sg%E5u{37`uqP} zvzX4?VqWZB5T{6F-qqg+2@hk)ERpxOmRsO?y$yLetEUy!=Bq)Kxe=Y7=;yv(nt9N* z5~3{Wta$EK!x_pdcTJT>xPHbjd>*;=-8R}$_xM}jXa=bm2|x0^g{N4?gCJ1Ul3-~<;oJ>p9sDwl|U`~OLg3}7}{8A zSdaCh9%1Nh+*!=g8Cs$jxYdE&4eCoTERdu7!hx-M;S=Vd3h}k=BOk_kXC!Dts2QwA zG=(qp_d>z;0rz010hmtaT0Vg1Lp7~wSH#LVxU_p7Ydzf$Rf!p1USh~m{{1HGLT@v8 zbt(m$qMq}9jK(!{<8mmOdFN9?RRlNlhl|oi3&Flbs-+6+SHnevyFt6iof#yX1s?@t*?ArRVjk%-)}w2t;&FG(w#X)2J6Fv8lF|jov=5fyUR(1 ze89fR5Oc+DFnW0S(Uv>%$rVDA4;}A?Fj^C@xtLCHr<*mrav1ZU_`fTJ{c3{xrm$y* zmoO*7j=`1fUj+~aR#d!ht$?H-T2Ax1Rj{YU@bJhG@}3=scF#DJg303_?@6vVgZ%MR z=LR{d!RB2H&Hb;HP{gtqE`!R?)qhG6q5-(43^}wgj9k@Ie2$GrJllYtBCxX00&_an zs(nvUHo_5m4Vktn_26bpk!ks_9P9O)w!0n0&^{X{=4@U9 zJl_-5W|3no7RuLj=o;oGKQ$j=M&80jsgKqtF&BJaTHz;0U_bkpT7* zA9XIEZh7-EjVCwe6V&pP#1jRf-<6jxgs@lwN0_Z$neqHQB+jdS)OY|YT-x3Xd>8=3 ztCX+R(Z}ALU&nK)8$bV0*JD5a;M_paBg)#R3Uoy(9v=@a#QlW&8ijBk)Qmd30MQ&k zbtpq|VIc(G3P|nOssKZ6w;QMEa^W=ukkUWQf;Dae**D=V&<>a(^$(nck5){z11I{? zKTGS>p^UyKEr~Hd)SWg75|fZUZUT4h|9XjB2tai7g&v1h0Ti;kEgFyKz)$HSb(v$? z(EFqMxh)ie5RJTtWi9F>_Sd94U9zCyXubx&YAR5=g|AT7r-E7H&=t?rNl^N0Xz|pe z4<<%pYMIVAgKMQC?T3~oaAV;LiVq~feBs1wrhNg<@mQYw<6gI4`*+Tpuq+sfxa+wr zSBN_LeI|9($tkE$d88U5r?0a@v^x+v?v1E(C`bc_`-&giszyQP041XaHTtNjzj`d8 zA9hSyUqxK646JA4&Si{b!+&)CKU*(kfaY83>bCEx@bT;$W)Ix=G_7804?!L6HJi^T zR~~0U&E8eUF~)QtIefSK{>ho@O{gjOB(fVqTdDuy$g}=V=57AJlX^b@3uC#4QrsYOf+;OwG9r$CO+e2 znuO_~J8$CT``}=F%exR}eDAq$O}e4ZAaaC6_xNAb9n2HkzU8U{ZKgRdN*2_YA6bt5 zus;r0znuT8!q5i~=Gu=_k>Vb<>BeO_rw)k9xR(@iya68gipYI7?FOdFD^{=i#^Cyu zV2Q5jI(Rj-`G=1a=VNX&3Vbo85IpgEJQ;JnuAJnJQ&;K%#XUCa?#*tPh<)D{@7fJR zanwt5$YF2@;z;B590IYf3mq@GMxgR?q(I@-VGv0^akRy68m!~(NSlzep;~vlZ5TNo zTk&Ci0YPKnQDdTA@^lbx(wV7W-Njsr53PTrI-?9`%yWAr{->8`Kz{3EZseydNIiP3{C0Q^v^Pb_%MIZ9T|0g*<_FHL&I~*b#5vM(dlSfqXp?vI@%*f8$_xUtJSyXAq|MT&P2W+)>cnQFG z+{s>bwG@i&-5y0rBX@PRP}Lj#W0NJy%D?6?U*%Z}VH>#_toTRKYIc42{LR&*KJO=!>Pw!kDRHS zpxVRJ;|J~)=@Ls#jsB~}J%5I4^r0p2?V%Cz zA)E)ZWEmWlKt5&)xkO+8lYGowj5&MwMHc7>#hUATAUA(MPIl~DC(LIgkTakT?cdYz z#xDmk_g8<7MH78BZ;1XqX1Uw}A5V^GsbK$B6)MB;@eA{sb?$uZ62ST4n=tletP|sx z3VQ#jVSie@6TM_w0rkh;m|R9ZjkfguCLMBRrOyy0tfyk08x6UV{og*g+3pxvCC~>{ zimErBvGs$~OAlcZk|yvza;!V`OdXVdUYb%tAG+ct3u`H^G7z85^W9`AhpG|&muK{I zz$>9Z_SKIJXx|$h{Ld#7K6n^2Ge(ZXaHw+ZYoT5sT{GXgk=_g1D=mGp_&!rfISqU4 z5y0_c&d{m%+c5T+^)mi}}qH$-%})tI!`h6T28z4h^gi zx01gVK3@ftBSF)n05SLK ztlJ#t?*x^3s>-|%9bn|Q7q{h#If}gGX@bbZz4G&~sTVIgee8}%=mwTUDpAn@n`R&I zcx9UY#a!#_JLgIlv2NzNqD9kr80#dy#`{0q^5Eew9j1J3dY8i&UuaYVeT zsN?4&t&T-~RF1#aoVz{FL5)+FS~1Ue|JleeiiKg0MWfRx9Jx`6F(1Uak(=%+#vvt- zd1=x7FXc&wAWJ0J<74kI_>C9`<(?mc`)BE=okFK!RLflH+E3*42(Nj7>?A}6Kl^%y zVhVE4Q;9w;8-V!}-ia+(XU`aJ8}(pcxKSJ{ejPcSBowi(SDM>lH1BHg}l$4COL^M@GBsPmUz7$^~^0?s>o%v#jGnlKygfy^DZ`<5pib&#elF1h%B@5{KKc^C zeWEgu1of-u?;VhM-&g~FX0fBfbuDmKtV^a|jR5`cw(p1_UoxIdwV&u}7oJz2qFiqw zFE=i)?*#VA(T(&a?@IC9q>g#QTi5}5M-BF4a~ojpZ+sV)0Kg=W`?=&uJqYWJb1e6u z?|tRQb1T&nFz+^3)643I-(s)V1K$q7vdw6LPuBn>m>*)J+8lrtr*H9em~Tp*A9IYC zydF$MI3%7jRD;XX(=!1G zAL$ih^;D035cIzEt?(9d>>isj>5UHniOh8ZE$R!#y(fuUkXN)Oa~c|ubdlKjSp#KGVe;=4BWC_NyL6{?C>UKT;X(P}d|L>;cqf+?fc%Y01=jh7XicPyqm#k*AANn(P ziWrgGEl_auS0Bz#=SrA)W;*gfs6$B#B(RUNdRcn^MiwLwe2I!|&I6tsTI&4!C1CT( zvr`QFPt!a@x{DG7Fup|M*I-)&W{m-^c~pH+IBetOiTXr3ts;uH{#IZkXj=Y3F5^7o zIJ>K1BScScq!3myU!8jD($n)TAX{?dIhid1I(GcmDI`!Q88sWF)q?eHLyNWT=WdWI zmK~^l)dj3X!XEwv)WMk|wxoeUXQ{cTy(jAU*zH-_#Mxx$j}^wKxRQ?X(LA^WGvJW{e}^s zY{>W=eOqPioO*iY@K$$7gp~$!g;vh9U()FZ^&3vf*DU&>Sj0U0?jPj$hSPqiC2oY@ zFR(zseWk$q>A0z{IH&&=98xhj373~KS=_iE&J=mAC*VG~ukTFZ4@Ttk`|dlFE)YP? zfs`z~e@`mYMH9e;(n>xrLD$`}XWT^3!TD}Of>n3gHL@@#;1t0Kz_c>7Gl>DN>#A;PrRWWvOQPCmOn*Qqc=`0*sw;yXd>6{WpILpA(tA*80VU25{Wv z@pr=fhk^!*cx7AU-AZQt9_ea=3X%QNN63vc7PloO;2u)EX5oky`sN+dgFgp_BEPqP z_^891P9XknSH76ih@5sVm1>&-(3)^MEODv_63qyuDws7s zFzJA6?R+l~e+~9jMgORNb6w)sT--nR7xd9AAP>5**J)wC3E0iT|C2)fK) zwu4P3b0*6nU*qK0eNp7;ddHkj$9r-4yKb_&V<}MG4C?Z|HU+y`#IIyNbVBkse(O`8 zFz37J<9(Zdb&#kW8XtF|9E4{>nW!*FIO<1gSK*HWm{-kBSj2hyU&0r8Z-W{Tx9c0c z`Y#v0YzdE;r+0zkly;3~c{^w%vI-WLw!^(te!UgsA&GvPCC^)K0M4(&1yjhGn>%<| zhXeUU^={417c`n6iGniShoce{{yKzj)bzm+g9?rAr3To2TH`huf;r{7&Tb>9x3F?~ zX6;v73DSX*=JT1&upTugMvi$QqgCap{;#rOhF_L60DXR;*Egq)q*32TrhR0Cyc1ZD z^1r2)?EqIx(m5qToJW}sGQM_c$Ns$Hk~2dCq@9=NVMSkWe~y^R`bIyLYPU{%TK2>J z{(U`H)Mw@CC~R#wH-SvYHvKQW=dAu6p*t-%iTS3@SJBIaV6r zBkB3X5c*n}m(o^x{&*ay(mOtLF7?9SRPtU$2jqLO9AJy;YKFxUgT@-FaS%&wet1}< z4*olSaL{Z7_5LK|sju<;cTv>UvV4rWb{-7`7xe%86P$Nle~rPfD>*qn(S7heNk&%% zb&HqpzS++iXo8S+?)_=xe`oA$StvGFf%UWeV<9b=Pwt$h_5r`Yf^l7$TIpQO+rF!j z6qpOiy#eFXt+~)`5!_(&x(-fw5OceQltDP%l6KER0Sx}S7a?)59NZ3RofFN=hesLy zA3DghAYpyRC{3XdQnDj9rS?1ER?i-%v_vzQW)mHXXz7803DU6{JTG{N4m_wof_~gf z%9cNFwm=qWke1+G8d6CQV$!m6WWQS(wBEY-z|O5z^q z@|?|mx%bFpzFA880R02}8P=EHeaCZPyWUgi6mq?s6a&^z;JiYC&f~LYC!D2qdR2&f z71yLk#N!u{8@W;8Wb&v2T#QdD_tureA$Ah0Q|VQ(MKeQYpoUz)zMs<{j#fZK?bSEi zzp%e+BY8T4dxVO1yRx|Jg+QKTQR^#_4T&NLrIKn2K=Ja6jdt5+SRglIymXNOiielz z614h3<53`s$xb6UUHKv_j(hmb%2%#`Y%9S|pR<~3Cl|aL`I565GvP#J?&MZe1`zTo zFM423#ahLDee*~$`aBO@cp;qujb4?*@!l!Wn_%QK6`lgW4?NM}Vo898U&B6c?4qHY z%PWdWA|3{3{o4o9E8z;;5$%A~Y#7+=bo)+=xzuq(?KM3(Uy9B)M94HSSbSo|(#k^(yJX(3eZ72dOvwAoZyV+Aqm+iVlbnkDo13Z>aCTb(QZA?wxrma)eNKmzL$F zP-lR=4&AHk3Ad5Ult;37D6kWT{*LQ@LcYxkpDq_C`W4jUkI9dlb^zJC%K`@@aUb^5 zw#9U>8K%S+o?Jtp?ft(*{0zv2lNPHZtHJ%2^+l&$Zf)cN%!g$d_BX+;_80kWxX=Ef zZFWOvq94efR{gYG9KbnejJ#sf0NDR_ZCu8=*O#qtF3a-Gpu)moM?!~w7v=MYKIE7` zN^a;7qFN2FoZdAKm(<}rDdHh7-badp604dmRZzvI=o)ms8oo-dAA6vd57~^SpXie( z;S)u^rO@|2Q2zeq_S;~rgM)e7{ye}u`a`Fejd5;xJh$@nZPeksW$F58Csz&DX8i|F zDb#{LS;2#R9Rl(Om2SjbA;23}$~QrnSKL|o_GvS1E-110rI4LP|G@L8vMH=LzSnA; zPe$I^ZoK&J9ljQbm!|$U&Vu~&_N%W|XKKL8Ta`##qZQPGC!dpu;<>2Pav+SV9tPx| z2usjZp>H{XC$$~>Y%L-u?(>-UszlLjwNwWSs@G*0*s5XHcUU6{=PUM-PSXaclj?a| z>T}4v5|otw&9Jf+!MCGNRj>Tt$8@J?matL|F?V}!W?#+%Z}&rV707Y;BG!4P5q&hK zMWJ4|4tL;uA%$xqx*a)T6sIF`zBpOnWOo+*XYtKD{F`R2Q2oS>j*F!O78j&rZXj25 ziQbQi$mavvzEY`)=GM_r7DyE|uIH?Z42UaCSK{!!YrbBmnakk28mJ|Ktw zw0@ckR`qqz%*d)E&oc&}f7eIRLN9#F@XP$!iF#gH(Vw=pU6A?Ev*T=38%%Z5vXK{~ zUM-y{-71a%_d|Xe%d3yVOR}M88zuB1-)bm6N!|rKmG&<>kvBJN*h%`$9iPJ^tUOob zT42D(N9aZB5PaZhJvuBq0*pg7E9RTSpm-wqRLE)M#kI;^SzE1w5Vg{ma{1G6YQgc{ zhW8Kz87zr1rx3t7;bgOkYZ=foy9?dan1-;IEOSRMH^AbG_`U<)zasQR#My&gu<_rj zP*gYGn{UR8i#}q%DQ>kWur~&2wYx_{aUaEeeBsK4$JUEvv>Di09T|%3C zQF`R%aI#TS!21g35a-6mcw>JvN-n7OPNNW_(v%|3q+{Q}&>*{q&&U4T6jBPqY>0YB zlUdl+0sp-U(KW1Ug8XJ4KQq)DQ5`wgY%qp%{2SaXG&sMEWoe(Az~|Ox?VfVqhkBT$ zVH++$9|@tYxYH5)&M&?TR7%mPk0~g7XO8(oTNZ7KG4D&^^W|UeQaMd8 z9QZ_tFIPaFy5kJ_;VPKRd_wPnI-R##`W&@5k7SZrP0+oMeX;lAgKv|VBeg)K{J^vm z=Np;&KTvO?-tv`{A33eDrN)X8;^>Rmdq19t{!wuLNhA}3KFm&0{^19x>nu>2QC6yk zr3#z;4yy{78!Nv{jCt96zWRK_YgG`e@|a%ZRs-BS8EB_uTmcjT-R5&vrSOp9r8()F z64+Tt@_#s80FJjlW(~LHgEn&#lTcFuOkCD>`*0!~9`1Qe-4Snwvk8u$SXL_GQM?BK zL-Y$UJaie=5yd^4Y3~{Z>WlCF_E$NZS_$I|(~o9FF!xsF{&AL>Ot|`&k9-h$LPz3- ztthVM0j*;GnFoTn*Lr_|_SC^l*gTh)HEEFwn`b>Oy6sZnvyNy6>B$5bmv$2E75xfm ztPrFnNr1ZFuS#WOqhavF_pYb?Snn+<%C1CbLkn+(qoD-m&up1*PG0YawIX7=z(1G= z&|B_ddA=3yBz*mO7CGpruTSOthjW>8FM{tAU2O+L+EtayIN#gQ^sEuaypDrgeM2tC zsv(0wA(Jv+j=3oA+xG@bfcM9#N>#2>xbyhOxJnfIMV(yP@{yNClgB6WilPyWeT7z( zkb_HVys$pPF#(F#?(N$;cEXWsZBIHdH#~lqL@U<10jR!B?~C@-!&#eWrw(jjzwNtf zU;V8PE}b>tNu0zvshY7#3HB3z*uOg6?8Wbc>vFxKYaVDBv9kZk$9bD<#K#fb(=yoE zT|ad_1I&&m+Hg>#UhK-((;l>WU_TYV`rZlanZLZY$6q6_Z*pRPHnkHBtj)P;deO&H zN_1kG3Axl;1`bhAJD{5)Ei0?D2|OAFb-oX_z}n$2w||#n?x)KKy*=q#$a3nBH%+XA zlY)C!%Su zLDVOtpEl?kgqVkOaW}D!GXJrgtG?F&eZLB+pN6+X$con;18el5#;u2`;yEC*dLnCi zsRkB5EqSP6KXJ(9<|HkB8PISXO%1{Riz7bZL!ER!Tr^P6pX{3i{Uq_dZ@&EyDHQ*} z0_O_JB|CXZp6G9Brae4RhPo}XpT3Q{=sVnDivHJ84Ra@TzvWF5Fo%ig_Bft<3jQZY zqKis^g5zP-NlWxQJbGuwje2jv4sK5(^zm6+`U#~Tnu3Fs{IxH*22d|c2T@m=LD_q8 zWgY7rKN^1GL&z1pOF3UIkGcott2vI8`?X;B!aW zZ;-0%QVe;AKIgx}x;CDTtusM450bfWiGP;L1-;6>F`n6S)G3-bxyxk18C$Qec-+(U z9aacme}jJd4bcW&^yO~^U-cp7M}*Q!>)Q9S)ktfDcXLrFq`I*xwu(#Xi zJjHnx*>u(NTbef5HxSa4z&UI|wny(O>XKPKFEGB3YXYtov-~T)P4J_8LX>%75dPSu z&BYcEgT#kk-eMi}dy3Ub9;6+C_agMF(L0#CrFx0?B`5mF^VB4~0;lmFCAD168UUpe z`W6HS%n_Zx9`Yx?7VNE_aamPXK|)PMp4*#oh?QSxTg16-FH6{WKCwo46=3Uc%wt1#nSNjB+uhN(n59KJ7feuTOYj?&a$z$p_1 zWo;J|J`TXSLS~Z@wl2^}pZ@7y)r@_b+St#U1_=9<*rugg3!!7b?;GHJOx>wxogBGS zhRYfmG00a`oa_FZfOQU0aogoM={6YrLrEsQ)dXJN2QZ$z4uay&ZpL|bLd=|>#gW2Z z%w?Z=+lu=HIw8`Kc@8EuurctMn6LaxS`n^vfD+43yG`{gaEs*5iBY%af z0a_lrP;Fp8xGdZ_+n1JkGlHrC!=;> zTcEDRX~pUac^Np}fJ-I5m`daecN~6q1=n>4} z4tiM$-vmu4)8b1YbA{jX{gF}-4}brCais*Rs|Kc=y1L<>ZG!10_M1;7PIO5!BPW>Y zxy?vTCtSHRu%k}Yf^#B{uS2)0!JpG##Tn0!g715_EtqF`{`S*rjp&O$btK2f<7Gcg zI{7$If7A7fI?kQ##O1#nBmjRHSw4L!)=dg8ADm;xJQ?ba!yET=AV?u!y@NFa ze2Cn5{~}+<`$8DuG5G*&h0OO=nsmW~c<(YwF`S2KIC@m!{M*;xnCd}SE7(;B2PXBS zPDXmC_tnQq$nOxHk;VOJxZ20lY6&=hHY8);;YQzvSLtpu_RUgvnoI7oV(zq?4cmlu z4_y9h9IZ)yy)wEg(|)rGe8bOU$PtE@{i?U<|jY9I;o^3+?%1DQ~t@h{gj zclLJ`e14nE+lTXoX~TaN&#)c|vwah>j`?)chd6ffL<^vD_IJ7?=6U(e_1+>^L0(8x zx@OTp6%2mLzkYkL2=e^i(_TfL)f}&9YxHT<)4%>HEr@eZJH0V$Fh+eyFsXq1OcNA* zQy)IKR|f`RUcreks$qI&YkZTZ5>E2brOGGz}$J)=*N^kd5B!(gg;b0em?6%MS<`7)uO zY3HEH{fAgrJX4MtD3mLOmky$_*FB4X_7y4B^syv35h|`4m|O|BbgeI}RTsmz+h!7z z#f|Xcu%@Io>eb}Gkeem*cR*?Y59!*Y8lX{=(icHa%a^p9BG1jbfKAoTEhf+8pn_a-!#B2*|>@@?DKv2tZ%>m+XQ4OGsjP2e!<~Cy82(GIw1bn zHjD??|7>FH;mgwQJI;^C?r`SqdPK_BoW!75VGn)TBwW&NeT^nXYai?$0l1OD=Q=G zcmMu;9(p;ibH3*@uKT*)R~R$iyY(_XNd%u)z|nEK-zqYwhyOXLr(stO$Br{EnB%|S zvk_$XZLNef&I;CHRqUf}{72LHr4-sM*<4z0<9siU(;~dK2fBaDD}?{TbB))hr@_S) za9J_gnd2q;NLm(RRH^!ScQ~L%!69J5I^^|63!RSzN0=-1|O2X zq}W;XLh5EdyBq5Cf9X3~=8rW&$#QLzvKRW7H|#weHn4ZsGyJERCHC&-oS=&t%7*zx z?n9@1zr)SIDz}5!`(+|Y-1r4K;Qt;ak8xoUVs5xGIhE^8& z4&MXSB%Au+twG7NEw4Tp3p-|GJ30!UB>ZweP|xDGHei)5?18eU!aUwj#y~m#p}GoX zFGLfJ0$L5Q-{#|^&davQ8E3zr-ub&9_Drhv(viPKos;@Eh`kk(`Sb6_TyBGJPxM?u z^Q%BKSNNJ{UOwbp=(}H{QVL|(yLA_z|K@*n<J!`u~lspn^Zn(MX$7k}h#X;D2;xl5YdSk<0Sm?sdak ztL2a~5t+4(ym#Ls&E|Vs`Jn$m=B`v?5rlAfCz*|#S&VnWM4AC(6#9wJ=rLE39_Rp@ zl=17+$PYhrsDv*fvk@|%*bV3-Cq{*)UUdK60C1oD=$F4 zx8#X)2dk>Ve7IadC_NumEfP*WMvgQ8&)2gvWAzYy%PH~hBlKCw2izJ&pBPE&qyEgD zOmH1jopw$jz_qL(kskD^H;HWf?Hjbi7tJ8?XO;C}Z((j7tJ?!tdh0`Pw%5b!m4U(* zHta(r$5{k<~3l80X90bL%uIY(DDls$gxv~GudaBB%? zC(OUU^-)!?K|k5c_UF5${9RD0eL?RS`Y~Kb>ro$9v;|#71Dupj;ux4C0RP?2 z4sP6UzW-i*M-(%5#QltD8;72r8%8Nb)f$YC^PsZ!v;~lYk9an4NV~_YGRa805W%%(m+vdY~ zPKon3%!hk3xmj6^VsFnA2Fl}NxIcx@nvr17sz9~Mg(>t?@-%0zTH^ieZH~QVFuv{+ z*FWT%^0mU{ZL{%c%-fkJ=iF1lzpIcWT6!d{9t5Ay*&U=WhN0qb#No&@6tK$c%xY+W z6|=uFeT|q)Q~o{r1Al+xcP{>?bAcvTam1|fK{k)rne9V}u zcb!~s<|(cQ!LZlo=5ZdPN@*sLhtK;5xY-yRO>d`n^$ z=!gC}ejd#~UEtGG`?F^N`~H4~sY_&HUz1ptMCpHc{>~jIP2R!hK`ii?9BDSxmLB(> zpDYBH{UUvL0rWu^pTGY#Bn4_kjz4@#mkds`4H;W!u?MX98t1%GI{eCZy8pU=aMsAXau;>>JNc)n_>z%3|1&gPr>GfLIHXxd=v%gSe4Mvw$lyhM7 z+HPD+dNW9+0$I6R3+~%yQu#YSpo_DR==zN|Fy?wHz#&-!pJ+RMwR5W=&iRdx4oMMU zJCgqF=Vahm3pH$#%SY~;`t_GHsW?}ozWI(g0nhy^J8Bb&peJF}XgOF0?4QNeIbAYg z{6>bHWlJLzkh$d^dC>+eTYvfompXxZazkHl6LtN@APr00mn(jMY-`a)zR-&Ymm)&T z;oQ}$fmW~Uq3#mHGw%z?pEn!RZ9|`aWh~E@9QJ5NYN{#J3^aTU&V|O9m!p}k z{&0B&xc47-oj8a6AKyGa*swQ2e?)@}tRSBw+#@M+zYKds5z{P(_f6`u=k<^Cq0F{| zy=SWmssl1*ZeUOJoW%3J(3^EoSu->1_OTMg@6q_VUB@066>E_c-gZKMhw zNng#UK_1i0js3X-%qzK?Pf$d=)x#KX`vwiJ`_s0p-=x+nz~|$H)@kgIuLRcc_=rqA zZ)Yn!ocH<(>`_`ylqpNJ?Zg~2MXC=20gT~RcqsOJ7-gxP;ZyGb z-n~3q#vG51o$%EC>;2FnCi*r#vmY#kUL=pM^@9xa9H%{U zdIWi1P9KiL+|sdm$jJomVF>lI@#5$m!P1oI+ zM}F=QQR@rLlj_|f<(0+$m({xYv&-nmVk2;dtA9X#oY>iPJ;zpv-w3ulZCnLp^tR8= z9xDTRc85BiAB&Iv`Nhk>n{VDPE6HuN!anz~03G6*b&%RLrW{ zqA>U2LseHh*VzU92ga8Q0`cd$pS@;^hv6?}+t~@fN%%wmG|)V12nMIs7jD*dV_)6H z*y!vocs+LabrilYW%ijCXHQgvMcJ>j8TxfVNt=G~{ZcL{@SMGw^&z?8{?O`Su@cIiw4^JPNDE zey#b&Z4KH2Xsce$A@k1!nu-gu+>CQ{gtql_~iTc z%R&ee2vZKY(hFM`lULT>_rav6^Xh>o1o(7eXk`R_m&;+gasl2g5bW_rE$vbj1f}%S zc7ChxF!$wEbi zjOcm|oC?~h>ysRV*2vLL>?f?gOVxaGpH7C8djsfT}*|qR`qccq{TRXUF9BqKprw%FwC?K!MOxf5jrw()<-kA0`Z-DJlzhaGt#gG~h7OIat zb=T1+ZechdPAQ2H<^Ej(iq%B-zg!!JA53pASJ0x*)a$EDGjjZtD~e<5wd%m1XK^Z; zPzfzmZ`|_^V(*K!n$%clHndGU{uDch{NwrEqXVdKi7#rpQobmJ6JZh+LYbYQBK_pC zDH-+%wMcrrL0)Cp6JyI!C+q_qO-&9*zKW@@y|xklyEUro!iGmsKj#iuU`8MIC5{81 z4@Z`Po9jA@rFb_FfQu}u6btcR?i*K3Y+~kl3 z9SgBuCa{^*H|})6zQ}*ajnwg;AHGPvxr2T< z=}FaV{53$kF*%S|EQ|7Miq z{9vq@#(x*T*T4PMx6v=?{+3OSs0Yuz{9oP|i*>;d$vCrL|8>E#--M1zJ+7PI(?f{@ z2BD6+^hmJH4+t`T*T$VX4o3^#Q+qpLzDD%!kL5#n?<}hJ_C;Q!y~2K+Kf$xdjAgRmTqh&Db6OKb8%Wc>>uQEDw*4Xv4*U(c<&GS(yH)NK@y~J~bYlIRmlE#3nn!rZH}b$k z@1A-QE$UC4f+lf?3*o=O^ORbh1)%;WZ8SzE8xHo65r@0u+)Tsk#5VdI1S(|ONGgWV zFX@}^_6qZS@wvqN_*|2=9apl}>Hw?r|6NpKt^k`b0eXYySzs{nnuN8X0A7CORvwwk z1d=jWQjMGz;ndZXqBh|xPP6dJFbiK^S2ic z-s332{(9X74$LopdG(F%j7bw*`>PclFjfvB3YpRRJi}0X{A9fKR67KDv2JqlH$riL zdUg|69rBVKk4%ME0>^Sez#ww?+pAXD90u}XnRn4Q^F|JsSK0Qi<2r1pms2cSf;^cm zBJ~Fxg?O*&DqeB#g!QF@<+Z4G7`Z1F*oyBH^@nnWUl%Z!X5C|->3}^)cJZ}WvG=ds z>Z1x-RvEYx(^wo+s)BQOX;K(t>w$^aA?y)y+0)&J|3zV*QGOwJCI$J13%f*2hvplB zh%U#vF{~W4jz5PmQRIGdUH)QK^Bovzb<-nN~-J%Y?BIq1E^KXeM8FUJ0T4)x# z;1>0S;^&?o7*Ax`=w-z@4!JIyuTv}bO@6okg@5;-&3ZU5-UsMJz6ityH^JAUR{NBL z6`<}cx%<^^1oYV5M;maydQ|a4qth|W3s*zk9wVOT7~^{qvyfM6PRGx%j5%%1$KyvS z3*qTO?udBk0uD3Ek(R|yi0mghFOrG;nlHZW>lZsgbf!Sb1obn9v;IqW?lr)-44b(? zjRBzK+F+629snn%OH5bd2jP_8;w@!7ztIY@TNf49!}N`boOk5ou*y-s{}KJYN0mt~ zxuSk>SDfKc@55F&d&2DgF4+W}=jUD$u|%II(}G*)>q_YTru&tcxDzU0S!>I6w}HsF zGurdddmxCGDCQC7LXKFD+ubA@06L;(p0}a|*nDx@-UjvD#cd%UOU#j^YDPZe`iY!V zg*;OK7v;cTH5IjV4f}QVs~e&Q(!eozD^>e=1<=-=2+w|B08WPo-TW`s1N-j#$$wJS z5Uq38nC46!zMkaers68d;%a$FK;Ol|zzP0b8|-&*w0Ohil?j3>p05QkPXaZ3jq2KX z-oG+$+>HHRdZmH^y0_{f-C8*+mo+yVzfsBBihzjHruH62KJ~tHy^;bWN zs)6s+MwNX=Icy!4sJ$B40-i$o(Q@~(Ct->`;Q;1xuH9u9(k#b*SsJydMCATT-Aa%) z^(}=9n$LsfM36rcO_XLbiyVdzjIrjz?a&z9o;mfs9*BOG*T=-7o+@TdOo={4#;g6t z3#iX{%a$em)kNP%SXp6ARU;f+>&l9Lgg@7vc@c4^9SnuPHurKj!Sju%zrZb_4s0!&@ZP?6Idh!TK}zG1Qfvk_Jj_?65bFg{qhmUd$+vf1&7H3AQYu#(N^U_;eONgOYgGa=((YH3$!lFs#r7(m6My#dFYq-5tLEgr^=jm>hIEPnQ9!%IS1! z)Gv(n^12TfVyzS?GQ>l zTQ-Pu&ZFIVp{j2yp>VveNrR&d3>AVsCrZm;gw;)$HMb1Lg$maF21?*ivcFEKRvz$& zg`5>cf7^ArYbSXe8(=QeR@41tBba>tCs2ld$9 z%qh?V|2?YWCZp;Dk)I|ePJ6vT8W5V!W7P%4rXjM@X~>a|_FW=6hJ6yh&Rxzi9fLX! z!8qpa9w-rNmLfsESWKURqy%3ld`MsjCB8*~I>o{CQ$}NuMig$y9oz{O4Vo^f@_?kB zv`#zb$Y?$Um=T2!pe`Q$-hOQm?zb_NM|}JN9uN3RjDjb?$Mo3^jjRFKdQfy!lXnts zsBZcAc#XlXVVTa!xB(~(cK1yAK)^YB;86ahR&X($3^!S6g+sUedKq}opI9?|v#hxs zTxni2#I<05iSyARx3F{=*)G*D&#ZveGim37kvCgaVWi@N-^=aj)N8-K)j)ddapnf= zGC1ehG^1ox3)ZYdA+*R{J2@ET)h33|vrY3GujUp|pRTI@g!fmG3u1PEBm0pbk-JAg zzXVIyZ`#T<%%!vkZCR?-!=(pyd>ePFA=&uG3EK1JaI<8d$1)Dj^%vbj_RKQD=8Lbf z$FUla*o*$UZ;9*3C+>S`(U^NX?B&eJ)(n%4pKpcE)Ib=urUI=@E8MjlI7g2By`qiv zlO}WZ@U=`-KrJ0}-V$&2^D?lffW>kkrVaHtp{&R^+_BR0gE?|}&WL{0?GI(i zTQ_IbLi#87HCy3&_^e3DRq?zCX0rCe?%;ZACG9ackN1<+|5i&FUE0A}sFH>_rU`P@ zO81Au>!97>yvJS_`oWvqDD@WV!Jvbxcn$mD1tbQeFZDOWZ~)t=XaM#(%AOYQ!sp{UGv4eooXR(3gSVg{~Ju=p$KLR=nW1R0?-;Qw=5~iosB8I!Ep* zaxsD!t&IQXg6sC0&@lSw$rV{0DbSaETK&1&Fmmc&`QKqQ!u{4%*I{Y-c_z$j&>t_; zDTaD0B|Y*NIWV;zc<~?lq2i`Iqy8G@0*C$EP_Yjgm}`vqPre1`Gs2hYW&dP?B7enC znW*m|N%z}@!xHnhg;nRY*^+>t+H)$8s0%7RR^zJZdVtQ)!uK=guue~K2PS(p0HeYg zw++k-o$K7Tm`y^xskH3R3!KyZ3t?L|J6aC8#(h_Y&_7Lgk3nSfS~2j)o39MuT*}d6 zQu{T|i3UiA9?)WLqvWacPg~(k=-Q!ttNLXa$Wq>1DJ^e@cYD`P@jh(Cek%157BQUn zANF3XL_b_c#kZFZIp`}V}u=w93TtatCBWB-}q9*K~LTc z*k8VqtW}l;He4<~8M%pYKi&KWJ?7SJRP#7v@$bygKa#PC!`zgAsHJ=m=0(q>g&jbB zaZuKI<=K2CWSAUSe004M7}QQJ+ZdKX+2HVD5n7xJu{j8@qF#|$w2&&DPzc`=9+#IM z&jugT3m@FC_X5G+T}A~tYYGW<4<+TApyoV(+`s!ccZ+d%QXyo6MPdQlD+b&jt(`mw@Vi>FCmEDaIFV>pCqeV-x&sj@?u(Nw6Kv(tcuq)n#vB(~rpEqd%QG3g;-sf;W%u^wi;Z+Bg9DYmhki)x4 zh+vL&#yr~EQL5ey%wuJQHf9Ky!kK#uOf9IJdv40k{`nE^9K-!WHawZj;M z|KDb-%|b=J6Zm}2bQSTnLBL0MvE47|_fVP*->ew}X{+f2iuhdDP#rE##2)fE?}^np zGR)H|7^fzE!1doUt2O5HAZXfO^u4x=_vz%o&_YY>E2a)obxj?DwoZYe0@+DW&IvlN z@uwdYlXPUe9}NPrw^M%QzcG+-ydqO>HvqAlC&>o>OhQEn$9Lto4eD#@(x2&v(oj!s8>FFZ}+kV=p{Gp7A7j8TxG&u9QnO0 zmpa1Uh?fDM?*Z+(&2(UW9P;2O@`;#R4_Hfv6@bN9plVxhKHN**ad=^z1+9F$*Dg&o z!^<2kVukG%_$jg49oB{Y&MS<{oak>2bSrYI!a0B_gFZ=KLlq<%TzcXcUkGmuZW5*f zli~P4k=7bhK1{QS1n_6aBcFR{Tt5SQ+=ar=_HO5ZgP(t&>v9ex)Ei~l6QzTiWMR=X z`p6)VqI_05`&2c<#N%c~n5!)EN%!d%Nx^+lqbdL&Jh< z4!BN{z5HH&JF*Cl=BTjGzCiAL*4c_?%=HnmrZjC`tAb-Kf>uRW%ixJ?bxH{t&Owh~ z>d(C20g>@BLhgsUL7Vz=+&2}>7Z~#T8zN6H`|n9J8JyQi@*XxEplSjZAJ$f7>IxA4 zNcyG<)&}nO28^6`RG<#G2GRwoP95ey&M_3H{zex!Pl<#m7dg5 zP!dpo^`CeL3|$=Je`?(XofUdb$LDH6hNykTDk2>~LL8h6ykTB{HF5VC5Ohd6Z@m9vGCq3Ag&a8L#JW<>0q>JN^h!9whhM-97O$1Ds1Xng1o`La+H* zwz*y8BKfNvJOH#cog_C<7e8^*?J?cm0k~9=#BKJZ73QV#C@m{m z;UN7}Cd0M~_%L!ePagYQt8JPUUoT?b@Uq?dZ*SBW*vPB8uaCjXQ2W&n8hGvy*RfiE zSPQ1P58|YFurFsKvRs6w7ltVYV@~CcAirl--|y!rFtfx5oW&l|nl}M!MOU%MnxoU> zIx*%8)tc%2F|S=tQRiPNT?ItGL58U{RnVm;E?|T`a49#u5J=tue`5~0((0gpO73x- z|2*=~n$H?PMINGa;xVC}ZS?iNiCvkt$cFf}jyaN-nQ-8r+JlY$OfU$gn(;_O&hYIl zi~95o=;xz-8!C!9hwhp)WVbLc9)6z9mKFWry8C2QMqTihL`Ia}rUTlFANkxx-(Ba}AAy^#$t+)3|p67QuG zzUwI`&*OR&ak6^IxdQUTjy%rTDF6koN%2?2`5@N(Eyw9;KJZ-dzQL=K31t!fLxgkK z)2Q@iFx9vWjyiY;MM@XLpFVMh8JxF~Q5`4u=S9Ec$*dk@D-Qkb9P$YJL`nh@muva~}EW(ln-&v0Zw0zA23IXDk@~4$>ujmB) zn5cl~MXXafR286f{OAj@$GyNKYuD!;(*Ws}(`@$mxrQ9~v$1F`1B3nguU)x?Flu5t z7@=McrREa1>+$oUH*lNanMj9=g{P=uWl|uw@uS!JIOggUliPPR6Ci+D`AG6YEZnKBDDD%Ntb>22A=~@xo){)-?}da*Nkg6YH%LDeE8to3Ctn%?M}O556RA)v6D3J$1;{hPpuJs-4^h8 z-0lVTT^a8wikV^V`l_Zv5$X_moCDX}QAdBvbCcUHrVh%?Jr7a(;yt#Gn%lpgyfC%M+@L^TLU1TcP$p`O>J9_0ZYN`Pkqg@@+}Zc?eUr!|Q;q6IcB(H)7v2_%Edq)T`}`gr7D7 zZ}DXbGrSM=rytt)OQ`~WMK>1>74&VzC9Z9kH2`P~&8~IU!sZfjJ>N6rf@mZ=eaHPR zMfUW=SJ&G>_F*@@E9S;cr)6bgX`4_#Hu%FG-T*Z}8NNJEsf79Y%PEJ$F>g0?psk>! z4CvYUhX;-z-}VZJXMJ}m?7R#$Q$&AxQD6>97JC_-nfpz)g}I{Er;be}-+I7P``B+Q z%#ppPki5%_yvYF@f91xlIv|AYEbVz*1F=VcD^r4Pc+AlJ|ECI}hYfugoH-NK zLbU{7*^}ZeiNZWvjk%q9${etz7%R|f}Yj+q-{?%>fc&)gGN>fy#+I=33kv6#L$ zwmgQPmwz3BlP_u%1b=9TcKqlDg_@{Ezc1K_c}P+uiKY{XPhO6z*{FjN!;|}O*{k5V z=>;O*@0eT3-m)e(u7;%_qPG}&@%iTn{L^NQdaKs$=0v>_(01D*r#g?^{C1rV!O<3| z(PB6+k%HXR`!^rCchvyn#j3nQ<~I11c_471vj*5``INolaUNFvk>l=kCDe>Rm`#7) z3!a7tlY~6`p}U;(U!oSCW9!Z`9!7oC<$`t?oeu$+_16+@vhY6ZnK0RrUkA=l=sCC@ z(AVwuz=Df!9E$F`TiRo9p^?zBl>HwBm@hTeMv^3)y;U;U>Cgg7mn9!_VBgFQxHDv+ z)`s(0HvfF59^igB;u@&e51}TPw>C<8f%bHC)2ut5X9xLhAEOWBq;cSLO58`e{2l%+ z{u+lSs$8#hYdkM~7cEsq{gOhGSZGnD1HKLmS6$V|ewRDZw)5Mgkf3m@<0H;DMfdcJ zgz-K$s&!e0v<>@Do?BYIe%B4gM=ltZMfAc6uX>`5^T>4_`b6@Xc??`XJt)aN+6yi% zLuwUl<8ZqCR&xsaEN$;ROXS19`##BbT;&^bkOBri9K75F7qr~;Wk@hT$Z^v(0rP4s z3ZwoEC#zu~^le%nbsaoUJCI`U*#S2m&|Po99OK-&a!(*nDLka;R$#n`a|pH9uKrL0 ztu(cVLU^-bcf2=8$uduR20k6G7#NDb3Zt zc@RRCR&S2Fp@Gk>i_Li6ev?9Y`H-O-1WEXJH>e13@6LY@pQ$!tuBAMK(FeJ{H-74v zVefO)RWTp`ZS3_vXA!J*x(R!~WGc%BF&CWv`4TrXuA6gFO7+-t^PX|k)Y_;5{(OJE z)=XUq4%gu!334e4vm?D^?6ZMSU|8l`GWG(6(ca6th1m`zBROuf%g)kpu!9IKnKer40 z3vB^6#CGk|FoT)wrzsul`EdFqtTzqFZ=S1 zP7!?W7om4Qg#Awxoa7?!Gr^S2W>_LH9g0<4**M3Nz`LHkyrajQS*{x{f{O}WGREgP8fZdAvzWrEt# z{e&~6Sx|Y0<_C>YH^lHA$^P}I7o_L;yk|!`fak}V)FRYZZ%v8o*Xbf}d+_S%+_%MG zd*xwt{$eHYjD|8KUoQuG7lHYA2g+d8@IbS`9P-Mw&nh^G6@cvxuAg<;M`w@4XTJnk7@VVEN@~=Wp(}b>Y1POBNG!Ml7 zex`&u=mwUzpIU06P9TVzYOfy7C*71uajJ&5LysyQ>Kh;`zrth`dFX+syqSp!|3AM; z%5(PAf;o4R>oDrc>6_N&@0~kfnw~EH0Q$sVdVPK*U318Kfw)z^kLD3G6YK8u{+}DUdaOYW#KVv2D{{X2;|S@55&F^dA$Iow{o5E;viq%XTx^z zXQmvf4{n6OhOmEu#K_5@5gB{R+XR_@1VyXCO7PGgsXVS)3g(Nd*`D})4wjo}Pbn^g zl#jzqheD3RZ^lD@Kzc`%lhWHIBv=#P0SGD}j?1X91915SyyfTPSpU)1e7c(g1L ze_0fL`ZiJ>#-g=wc=Y#ZmuNL4buxvC%8$bIlp6gt%Wl}Dp%3|sz74|<0s#+V2@saJ zDJ`7d0uOk2Z7ww8y`P79wv7Vy+M#(T2F%Ow2Pw&Ai~ow} zEw{;C-rEG^GKhNa;_Ig33?)tf)Qt0ezEK9JW;nAnM{+>`c{BkVs^8y@0U?MsD&|iw zG<@PJzV3%TCE9^PKiLUTcH2Z_DV+e$&wzA;0sW2D>&guGYGGZS@0yNv6@+$Kv=BLt z!EceNYoTTYxF}7$aDk^4zEq^pWui{P@tbL=;&dzQ+zu|OFKCCZ+bl#;A$7ofF<~_Y z@Au}f_VqiM`mkrM*F2%V4-TF<{Gtf+axNd9y`8|%F~;tzO%J}F#pNd%@;+nGHX-&o z72I16Veh$CejyjW-mB;TCAo`@Ln3Y1zYRI$BZ^3nTc9t5Ha_6= zA=C>$4{#6l;r!_+VP8~l0sATGY`RZFANYyLUws*md?wzXBW}vQU=gYfmXl+!T^$s8 zeid_%EX3z%Eph&n{=0%9xE=nJvPt=j^QpMKmG5JlwGh&-bFmfk=O5gJM zZB}D7P?Omk5X;vNKg_}sZL+afK&JGtxnc>d{$Wvlar{nhCI`r}HgoQ-J**_U^D zn9mvQ+WwjaIqPq&t&t<$kt7r6xta-El|^0Dm?yt_m*vZ8ycfUaey!7u`GGsbUOR*K z$W#3}?>0Ev2J;JOr9&SG`%}-Y*ODN_m0*R$^uHB>~xSRE8r>7NrA+) zQkJuClYzGU_HKh=0@U*<2h`t*1Aj98;l!-3a5IPJzJx;({G=8l-y4qxM_smKv-;WC zds*~ZA|eZ-oTzLw