From 721a01a4753c43dabb451b5e6e54b419d291991a Mon Sep 17 00:00:00 2001 From: Romain Hugonnet Date: Wed, 6 Nov 2024 19:26:39 -0800 Subject: [PATCH] Update documentation and warnings before `0.1` release (#502) --- .github/workflows/python-tests.yml | 2 +- .pre-commit-config.yaml | 2 +- README.md | 6 +- doc/source/_static/css/custom.css | 8 + doc/source/about_xdem.md | 78 +-- doc/source/accuracy_precision.md | 116 ++++ doc/source/api.md | 212 +++++-- doc/source/background.md | 65 ++ doc/source/biascorr.md | 395 ++++++++++--- doc/source/cheatsheet.md | 266 +++++++++ doc/source/citation.md | 114 ++++ .../comparison_plot_spatial_interpolation.py | 2 +- .../code/coregistration_plot_nuth_kaab.py | 39 -- doc/source/code/intricacies_datatypes.py | 58 ++ doc/source/code/robust_mean_std.py | 94 +++ doc/source/code/robust_vario.py | 63 ++ .../code/spatialstats_heterosc_slope.py | 2 +- .../spatialstats_stationarity_assumption.py | 6 +- doc/source/comparison.md | 127 ---- doc/source/conf.py | 27 +- doc/source/config.md | 66 +++ doc/source/coregistration.md | 519 +++++++++++----- doc/source/dem_class.md | 30 +- doc/source/ecosystem.md | 37 ++ doc/source/elevation_intricacies.md | 91 +++ doc/source/elevation_point_cloud.md | 5 +- doc/source/gapfill.md | 271 +++++++++ doc/source/guides.md | 15 + doc/source/how_to_install.md | 16 +- doc/source/imgs/accuracy_precision_dem.png | Bin 0 -> 706024 bytes doc/source/imgs/stable_terrain_diagram.png | Bin 0 -> 392280 bytes doc/source/index.md | 54 +- doc/source/intro_accuracy_precision.md | 112 ---- doc/source/logging.md | 29 - doc/source/publis.md | 48 ++ doc/source/quick_start.md | 17 +- doc/source/release_notes.md | 72 +++ ...ro_robuststats.md => robust_estimators.md} | 68 ++- doc/source/spatial_stats.md | 206 +++++++ doc/source/sphinxext.py | 13 + doc/source/static_surfaces.md | 101 ++++ doc/source/terrain.md | 370 +++++++++--- doc/source/uncertainty.md | 558 +++++++++--------- doc/source/vertical_ref.md | 70 ++- examples/advanced/plot_blockwise_coreg.py | 19 +- examples/advanced/plot_demcollection.py | 5 +- examples/advanced/plot_deramp.py | 24 +- .../plot_heterosc_estimation_modelling.py | 34 +- examples/advanced/plot_norm_regional_hypso.py | 10 +- examples/advanced/plot_slope_methods.py | 19 +- examples/advanced/plot_standardization.py | 20 +- .../plot_variogram_estimation_modelling.py | 42 +- examples/basic/logging_configuration.py | 47 -- examples/basic/plot_dem_subtraction.py | 14 +- examples/basic/plot_icp_coregistration.py | 24 +- examples/basic/plot_infer_heterosc.py | 5 +- .../basic/plot_infer_spatial_correlation.py | 6 +- examples/basic/plot_logging_configuration.py | 51 ++ examples/basic/plot_nuth_kaab.py | 36 +- .../basic/plot_spatial_error_propagation.py | 13 +- examples/basic/plot_terrain_attributes.py | 127 +--- setup.cfg | 2 +- tests/test_coreg/test_affine.py | 8 +- tests/test_coreg/test_base.py | 3 +- tests/test_ddem.py | 2 +- tests/test_demcollection.py | 2 +- tests/test_spatialstats.py | 4 +- xdem/coreg/affine.py | 145 +++-- xdem/coreg/base.py | 185 +++++- xdem/coreg/biascorr.py | 19 +- xdem/coreg/workflows.py | 26 +- xdem/ddem.py | 10 +- xdem/dem.py | 103 +++- xdem/demcollection.py | 8 +- xdem/examples.py | 2 +- xdem/filters.py | 8 +- xdem/fit.py | 20 +- xdem/misc.py | 4 +- xdem/spatialstats.py | 8 +- xdem/terrain.py | 14 +- xdem/volume.py | 12 +- 81 files changed, 3912 insertions(+), 1619 deletions(-) create mode 100644 doc/source/_static/css/custom.css create mode 100644 doc/source/accuracy_precision.md create mode 100644 doc/source/background.md create mode 100644 doc/source/cheatsheet.md create mode 100644 doc/source/citation.md delete mode 100644 doc/source/code/coregistration_plot_nuth_kaab.py create mode 100644 doc/source/code/intricacies_datatypes.py create mode 100644 doc/source/code/robust_mean_std.py create mode 100644 doc/source/code/robust_vario.py delete mode 100644 doc/source/comparison.md create mode 100644 doc/source/config.md create mode 100644 doc/source/ecosystem.md create mode 100644 doc/source/elevation_intricacies.md create mode 100644 doc/source/gapfill.md create mode 100644 doc/source/guides.md create mode 100644 doc/source/imgs/accuracy_precision_dem.png create mode 100644 doc/source/imgs/stable_terrain_diagram.png delete mode 100644 doc/source/intro_accuracy_precision.md delete mode 100644 doc/source/logging.md create mode 100644 doc/source/publis.md create mode 100644 doc/source/release_notes.md rename doc/source/{intro_robuststats.md => robust_estimators.md} (60%) create mode 100644 doc/source/spatial_stats.md create mode 100644 doc/source/sphinxext.py create mode 100644 doc/source/static_surfaces.md delete mode 100644 examples/basic/logging_configuration.py create mode 100644 examples/basic/plot_logging_configuration.py diff --git a/.github/workflows/python-tests.yml b/.github/workflows/python-tests.yml index 29799e34..8940c235 100644 --- a/.github/workflows/python-tests.yml +++ b/.github/workflows/python-tests.yml @@ -16,7 +16,7 @@ jobs: strategy: matrix: - os: ["ubuntu-latest", "macos-latest", "windows-latest"] + os: ["ubuntu-latest", "macos-latest"] python-version: ["3.10", "3.11", "3.12"] # Run all shells using bash (including Windows) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index b716f6a8..e6336c9f 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -17,7 +17,7 @@ repos: hooks: - id: codespell args: [ - '--ignore-words-list', 'nd,alos,inout', + '--ignore-words-list', 'nd,alos,inout,theses', '--ignore-regex', '\bhist\b', '--' ] diff --git a/README.md b/README.md index 2c8ea9dc..c8c79866 100644 --- a/README.md +++ b/README.md @@ -18,9 +18,9 @@ It aims at **providing modular and robust tools for the most common analyses needed with DEMs**, including both geospatial operations specific to DEMs and a wide range of 3D alignment and correction methods from published, peer-reviewed studies. -The core manipulation of DEMs (e.g., vertical alignment, terrain analysis) are **conveniently centered around `DEM` and `dDEM` classes** (that, notably, re-implements all tools +The core manipulation of DEMs (e.g., vertical alignment, terrain analysis) are **conveniently centered around a `DEM` class** (that, notably, re-implements all tools of [gdalDEM](https://gdal.org/programs/gdaldem.html)). More complex pipelines (e.g., 3D rigid coregistration, bias corrections, filtering) are **built around -modular `Coreg`, `BiasCorr` and `Filter` classes that easily interface between themselves**. Finally, xDEM includes advanced +modular `Coreg`, `BiasCorr` classes that easily interface between themselves**. Finally, xDEM includes advanced uncertainty analysis tools based on spatial statistics of [SciKit-GStat](https://scikit-gstat.readthedocs.io/en/latest/). Additionally, xDEM inherits many convenient functionalities from [GeoUtils](https://github.com/GlacioHack/geoutils) such as @@ -49,7 +49,7 @@ See [mamba's documentation](https://mamba.readthedocs.io/en/latest/) to install When using a method implemented in xDEM, please **cite both the package and the related study**: -Citing xDEM: [![Zenodo](https://zenodo.org/badge/doi/10.5281/zenodo.4809697.svg)](https://zenodo.org/record/4809698) +Citing xDEM: [![Zenodo](https://zenodo.org/badge/doi/10.5281/zenodo.4809697.svg)](https://zenodo.org/doi/10.5281/zenodo.4809697) Citing the related study: diff --git a/doc/source/_static/css/custom.css b/doc/source/_static/css/custom.css new file mode 100644 index 00000000..43a5b3e2 --- /dev/null +++ b/doc/source/_static/css/custom.css @@ -0,0 +1,8 @@ +/* Work around to wrong dark-mode for toggle button: https://github.com/executablebooks/MyST-NB/issues/523 */ +div.cell details.hide > summary { + background-color: var(--pst-color-surface); +} + +div.cell details[open].above-input div.cell_input { + border-top: None; +} diff --git a/doc/source/about_xdem.md b/doc/source/about_xdem.md index c5cb1d8d..78b92163 100644 --- a/doc/source/about_xdem.md +++ b/doc/source/about_xdem.md @@ -2,72 +2,32 @@ # About xDEM +## What is xDEM? -xDEM is a [Python](https://www.python.org/) package for the analysis of DEMs, with name standing for _cross-DEM analysis_[^sn1] -and echoing its dependency on [xarray](https://docs.xarray.dev/en/stable/). It is designed for all Earth and planetary -observation science, although our group currently has a strong focus on glaciological applications. +xDEM is a Python package for the analysis of elevation data, and in particular that of digital elevation models (DEMs), +with name standing for _cross-DEM analysis_[^sn1] and echoing its dependency on [Xarray](https://docs.xarray.dev/en/stable/). -[^sn1]: The core features of xDEM rely on cross-analysis of surface elevation, for example for DEM alignment or error analysis. +[^sn1]: Several core features of xDEM, in particular coregistration and uncertainty analysis, rely specifically on cross-analysis of elevation data over static surfaces. +## Why use xDEM? -```{epigraph} -The core mission of xDEM is to be **easy-of-use**, **modular**, **robust**, **reproducible** and **fully open**. +xDEM implements a wide range of high-level operations required for analyzing elevation data in a consistent framework +tested to ensure the accuracy of these operations. -Additionally, xDEM aims to be **efficient**, **scalable** and **state-of-the-art**. -``` +It has three main focus points: -```{important} -:class: margin -xDEM is in early stages of development and its features might evolve rapidly. Note the version you are working on for -**reproducibility**! -We are working on making features fully consistent for the first long-term release ``v0.1`` (planned early 2024). -``` +1. Having an **easy and intuitive interface** based on the principle of least knowledge, +2. Providing **statistically robust methods** for reliable quantitative analysis, +3. Allowing **modular user input** to adapt to most applications. -In details, those mean: +Although modularity can sometimes hamper performance, we also aim to **preserve scalibility** as much as possible[^sn2]. -- **Ease-of-use:** all DEM basic operations or methods from published works should only require a few lines of code to be performed; +[^sn2]: Out-of-memory, parallelizable computations relying on Dask are planned for late 2024! -- **Modularity:** all DEM methods should be fully customizable, to allow both flexibility and inter-comparison; +We particularly take to heart to verify the accuracy of our methods. For instance, our terrain attributes +which have their own modular Python-based implementation, are tested to match exactly +[gdaldem](https://gdal.org/programs/gdaldem.html) (slope, aspect, hillshade, roughness) and +[RichDEM](https://richdem.readthedocs.io/en/latest/) (curvatures). -- **Robustness:** all DEM methods should be tested within our continuous integration test-suite, to enforce that they always perform as expected; - -- **Reproducibility:** all code should be version-controlled and release-based, to ensure consistency of dependent - packages and works; - -- **Open-source:** all code should be accessible and re-usable to anyone in the community, for transparency and open governance. - -```{note} -:class: margin -Additional mission points, in particular **scalability**, are partly developed but not a priority until our first long-term release ``v0.1`` is reached. Those will be further developed specifically in a subsequent version ``v0.2``. -``` - -And, additionally: - -- **Efficiency**: all methods should be optimized at the lower-level, to function with the highest performance offered by Python packages; - -- **Scalability**: all methods should support both lazy processing and distributed parallelized processing, to work with high-resolution data on local machines as well as on HPCs; - -- **State-of-the-art**: all methods should be at the cutting edge of remote sensing science, to provide users with the most reliable and up-to-date tools. - - -# The people behind xDEM - -```{margin} -2More on our GlacioHack founder at [adehecq.github.io](https://adehecq.github.io/)! -``` - -xDEM was created during the [GlacioHack](https://github.com/GlacioHack) hackaton event, that was initiated by -Amaury Dehecq2 and took place online on November 8, 2020. - -```{margin} -3Check-out [glaciology.ch](https://glaciology.ch) on our founding group of VAW glaciology! -``` - -The initial core development of xDEM was performed by members of the Glaciology group of the Laboratory of Hydraulics, Hydrology and -Glaciology (VAW) at ETH Zürich3, with contributions by members of the University of Oslo, the University of Washington, and University -Grenobles Alpes. - -We are not software developers but geoscientists, and we try our best to offer tools that can be useful to a larger group, -documented, reliable and maintained. All development and maintenance is made on a voluntary basis and we welcome -any new contributors. See some information on how to contribute in the dedicated page of our -[GitHub repository](https://github.com/GlacioHack/xdem/blob/main/CONTRIBUTING.md). +More details about the people behind xDEM and the package's objectives can be found on the **{ref}`background` reference +page**. diff --git a/doc/source/accuracy_precision.md b/doc/source/accuracy_precision.md new file mode 100644 index 00000000..fbd41763 --- /dev/null +++ b/doc/source/accuracy_precision.md @@ -0,0 +1,116 @@ +(accuracy-precision)= + +# Grasping accuracy and precision + +Below, a small guide explaining what accuracy and precision are, and their relation to elevation data (or any spatial data!). + +## Why do we need to understand accuracy and precision? + +Elevation data comes from a wide range of instruments (optical, radar, lidar) acquiring in different conditions (ground, +airborne, spaceborne) and relying on specific post-processing techniques (e.g., photogrammetry, interferometry). + +While some complexities are specific to certain instruments and methods, all elevation data generally possesses: + +- a [ground sampling distance](https://en.wikipedia.org/wiki/Ground_sample_distance), or footprint, **that does not necessarily represent the underlying spatial resolution of the observations**, +- a [georeferencing](https://en.wikipedia.org/wiki/Georeferencing) **that can be subject to shifts, tilts or other deformations** due to inherent instrument errors, noise, or associated processing schemes, +- a large number of [outliers](https://en.wikipedia.org/wiki/Outlier) **that remain difficult to filter** as they can originate from various sources (e.g., blunders, clouds). + +All of these factors lead to difficulties in assessing the reliability of elevation data, required to +perform additional quantitative analysis, which calls for defining the concepts relating to accuracy and precision for elevation data. + +## Accuracy and precision of elevation data + +### What are accuracy and precision? + +[Accuracy and precision](https://en.wikipedia.org/wiki/Accuracy_and_precision) describe systematic and random errors, respectively. +A more accurate measurement is on average closer to the true value (less systematic error), while a more precise measurement has +less spread in measurement error (less random error), as shown in the simple schematic below. + +*Note: sometimes "accuracy" is also used to describe both types of errors, while "trueness" refers to systematic errors, as defined +in* [ISO 5725-1](https://www.iso.org/obp/ui/#iso:std:iso:5725:-1:ed-1:v1:en) *. Here, we use accuracy for systematic +errors as, to our knowledge, it is a more commonly used terminology for remote sensing applications.* + +:::{figure} imgs/precision_accuracy.png +:width: 80% + +Source: [antarcticglaciers.org](http://www.antarcticglaciers.org/glacial-geology/dating-glacial-sediments2/precision-and-accuracy-glacial-geology/), accessed 29.06.21. +::: + +### Translating these concepts for elevation data + +However, elevation data rarely consists of a single independent measurement but of a **series of measurements** (image grid, +ground track) **related to a spatial support** (horizontal georeferencing, independent of height), which complexifies +the notion of accuracy and precision. + +Due to this, spatially consistent systematic errors can arise in elevation data independently of the error in elevation itself, +such as **affine biases** (systematic georeferencing shifts), in addition to **specific biases** known to exist locally +(e.g., signal penetration in land cover type). + +For random errors, a variability in error magnitude or **heteroscedasticity** is common in elevation data (e.g., +large errors on steep slopes). Finally, spatially structured yet random patterns of errors (e.g., along-track undulations) +also exist and force us to consider the **spatial correlation of random errors (sometimes called structured errors)**. + +Translating the accuracy and precision concepts to elevation data, we can thus define: + +- **Elevation accuracy** (systematic error) describes how close an elevation data is to the true elevation on the Earth's surface, both for errors **common to the entire spatial support** +(DEM grid, altimetric track) and errors **specific to a location** (pixel, footprint), +- **Elevation precision** (random error) describes the random spread of elevation error in measurement, independently of a possible bias from the true positioning, both for errors **structured over the spatial support** and **specific to a location**. + +These categories are depicted in the figure below. + +:::{figure} imgs/accuracy_precision_dem.png +:width: 100% + +Source: [Hugonnet et al. (2022)](https://doi.org/10.1109/jstars.2022.3188922). +::: + +### Absolute or relative elevation accuracy + +Accuracy is generally considered from two focus points: + +- **Absolute elevation accuracy** describes systematic errors to the true positioning, usually important when analysis focuses on the exact location of topographic features at a specific epoch. +- **Relative elevation accuracy** describes systematic errors with reference to other elevation data that does not necessarily match the true positioning, important for analyses interested in topographic change over time. + +## How to get the best out of your elevation data? + +### Quantifying and improving accuracy + +Misalignments due to poor absolute or relative accuracy are common in elevation datasets, and are usually assessed and +corrected by performing **three-dimensional elevation coregistration and bias corrections to an independent source +of elevation data**. + +In the case of absolute accuracy, this independent source must be precise and accurate, such as altimetric data from +[ICESat](https://icesat.gsfc.nasa.gov/icesat/) and [ICESat-2](https://icesat-2.gsfc.nasa.gov/) elevations, or coarser yet +quality-controlled DEMs themselves aligned on altimetric data such as the +[Copernicus DEM](https://portal.opentopography.org/raster?opentopoID=OTSDEM.032021.4326.3). + +To use coregistration and bias correction pipelines in xDEM, see the **feature pages on {ref}`coregistration` and {ref}`biascorr`**. + +### Quantifying and improving precision + +While assessing accuracy is fairly straightforward as it consists of computing the mean differences (biases) between +two or multiple datasets, assessing precision of elevation data can be much more complex. The spread in measurement +errors cannot be quantified by a difference at single data point, and require statistical inference. + +Assessing precision usually means applying **spatial statistics combined to uncertainty quantification**, +to account for the spatial variability and the spatial correlation in errors. For this it is usually necessary, as +for coregistration, to **rely on an independent source of elevation data on static surfaces similarly**. + +To use spatial statistics for quantifying precision in xDEM, see **the feature page on {ref}`uncertainty`**. + +Additionally, improving the precision of elevation data is sometimes possible by correcting random structured +errors, such as pseudo-periodic errors (undulations). For this, one can **also use {ref}`biascorr`**. + +---------------- + +:::{admonition} References and more reading +:class: tip + +More background on structured random errors is available on the **{ref}`spatial-stats` guide page**. + +**References:** + +- [ISO 5725-1 (1994)](https://www.iso.org/obp/ui/#iso:std:iso:5725:-1:ed-1:v1:en), Accuracy (trueness and precision) of measurement methods and results — Part 1: General principles and definitions, +- [Mittaz et al. (2019)](http://dx.doi.org/10.1088/1681-7575/ab1705), Applying principles of metrology to historical Earth observations from satellites, +- [Hugonnet et al. (2022)](https://doi.org/10.1109/jstars.2022.3188922), Uncertainty analysis of digital elevation models by spatial inference from stable terrain. +::: diff --git a/doc/source/api.md b/doc/source/api.md index 6f7465cb..e46532cc 100644 --- a/doc/source/api.md +++ b/doc/source/api.md @@ -20,28 +20,27 @@ documentation. ```{important} A {class}`~xdem.DEM` inherits all raster methods and attributes from the {class}`~geoutils.Raster` object of GeoUtils. -Below, we only repeat the core attributes and methods of GeoUtils, see +Below, we only repeat some core attributes and methods of GeoUtils, see [the Raster API in GeoUtils](https://geoutils.readthedocs.io/en/latest/api.html#raster) for the full list. ``` -### Opening or saving a DEM +### Opening or saving ```{eval-rst} .. autosummary:: :toctree: gen_modules/ DEM - DEM.info DEM.save ``` -### Plotting a DEM +### Plotting or summarize info ```{eval-rst} .. autosummary:: :toctree: gen_modules/ - DEM + DEM.info DEM.plot ``` @@ -68,6 +67,7 @@ Below, we only repeat the core attributes and methods of GeoUtils, see DEM.crs DEM.transform DEM.nodata + DEM.area_or_point ``` #### Specific to {class}`~xdem.DEM` @@ -79,6 +79,23 @@ Below, we only repeat the core attributes and methods of GeoUtils, see DEM.vcrs ``` +### Other attributes + +#### Inherited from {class}`~geoutils.Raster` + +See the full list in [the Raster API of GeoUtils](https://geoutils.readthedocs.io/en/latest/api.html#raster). + +```{eval-rst} +.. autosummary:: + :toctree: gen_modules/ + + DEM.res + DEM.bounds + DEM.width + DEM.height + DEM.shape +``` + ### Georeferencing #### Inherited from {class}`~geoutils.Raster` @@ -87,6 +104,9 @@ Below, we only repeat the core attributes and methods of GeoUtils, see .. autosummary:: :toctree: gen_modules/ + DEM.set_nodata + DEM.set_area_or_point + DEM.info DEM.reproject DEM.crop ``` @@ -113,19 +133,8 @@ See the full list of vector methods in [GeoUtils' documentation](https://geoutil DEM.polygonize DEM.proximity -``` - -### Coregistration - -```{tip} -To build and pass your coregistration pipeline to {func}`~xdem.DEM.coregister_3d`, see the API of {ref}`api-geo-handle`. -``` - -```{eval-rst} -.. autosummary:: - :toctree: gen_modules/ - - DEM.coregister_3d + DEM.to_pointcloud + DEM.interp_points ``` ### Terrain attributes @@ -148,24 +157,35 @@ To build and pass your coregistration pipeline to {func}`~xdem.DEM.coregister_3d DEM.fractal_roughness ``` -## dDEM +Or to get multiple related terrain attributes at once (for performance): ```{eval-rst} .. autosummary:: :toctree: gen_modules/ - dDEM + DEM.get_terrain_attribute ``` -## DEMCollection +### Coregistration and bias corrections -## dDEM +```{tip} +To build and pass your coregistration pipeline to {func}`~xdem.DEM.coregister_3d`, see the API of {ref}`api-geo-handle`. +``` ```{eval-rst} .. autosummary:: :toctree: gen_modules/ - DEMCollection + DEM.coregister_3d +``` + +### Uncertainty analysis + +```{eval-rst} +.. autosummary:: + :toctree: gen_modules/ + + DEM.estimate_uncertainty ``` (api-geo-handle)= @@ -175,8 +195,8 @@ To build and pass your coregistration pipeline to {func}`~xdem.DEM.coregister_3d **Overview of co-registration class structure**: ```{eval-rst} -.. inheritance-diagram:: xdem.coreg.base xdem.coreg.affine xdem.coreg.biascorr - :top-classes: xdem.Coreg +.. inheritance-diagram:: xdem.coreg.base.Coreg xdem.coreg.affine xdem.coreg.biascorr + :top-classes: xdem.coreg.Coreg ``` ### Coregistration, pipeline and blockwise @@ -185,9 +205,9 @@ To build and pass your coregistration pipeline to {func}`~xdem.DEM.coregister_3d .. autosummary:: :toctree: gen_modules/ - xdem.coreg.Coreg - xdem.coreg.CoregPipeline - xdem.coreg.BlockwiseCoreg + coreg.Coreg + coreg.CoregPipeline + coreg.BlockwiseCoreg ``` #### Fitting and applying transforms @@ -196,105 +216,185 @@ To build and pass your coregistration pipeline to {func}`~xdem.DEM.coregister_3d .. autosummary:: :toctree: gen_modules/ - xdem.coreg.Coreg.fit - xdem.coreg.Coreg.apply + coreg.Coreg.fit_and_apply + coreg.Coreg.fit + coreg.Coreg.apply ``` -#### Other functionalities +#### Extracting metadata ```{eval-rst} .. autosummary:: :toctree: gen_modules/ - xdem.coreg.Coreg.residuals + coreg.Coreg.info + coreg.Coreg.meta ``` -### Affine coregistration methods +### Affine coregistration +#### Parent object (to define custom methods) -**Generic parent class:** +```{eval-rst} +.. autosummary:: + :toctree: gen_modules/ + + coreg.AffineCoreg +``` + +#### Coregistration methods + +```{eval-rst} +.. autosummary:: + :toctree: gen_modules/ + + coreg.VerticalShift + coreg.NuthKaab + coreg.DhMinimize + coreg.ICP +``` + +#### Manipulating affine transforms + +```{eval-rst} +.. autosummary:: + :toctree: gen_modules/ + + coreg.AffineCoreg.from_matrix + coreg.AffineCoreg.to_matrix + coreg.AffineCoreg.from_translations + coreg.AffineCoreg.to_translations + coreg.AffineCoreg.from_rotations + coreg.AffineCoreg.to_rotations + + coreg.apply_matrix + coreg.invert_matrix +``` + +### Bias-correction + +#### Parent object (to define custom methods) + +```{eval-rst} +.. autosummary:: + :toctree: gen_modules/ + + coreg.BiasCorr +``` + +#### Bias-correction methods ```{eval-rst} .. autosummary:: :toctree: gen_modules/ - xdem.coreg.AffineCoreg + coreg.Deramp + coreg.DirectionalBias + coreg.TerrainBias ``` -**Convenience classes for specific coregistrations:** +## Uncertainty analysis + +```{important} +Several uncertainty functionalities of xDEM are being implemented directly in SciKit-GStat for spatial statistics +(e.g., fitting a sum of variogram models, pairwise subsampling for grid data). This will allow to simplify several +function inputs and outputs, by relying on a single {func}`~skgstat.Variogram` object. + +This will trigger API changes in future package versions. +``` + +### Core routines for heteroscedasticity, spatial correlations, error propagation ```{eval-rst} .. autosummary:: :toctree: gen_modules/ - xdem.coreg.VerticalShift - xdem.coreg.NuthKaab - xdem.coreg.ICP + spatialstats.infer_heteroscedasticity_from_stable + spatialstats.infer_spatial_correlation_from_stable + spatialstats.spatial_error_propagation ``` -### Bias-correction (including non-affine coregistration) methods +### Sub-routines for heteroscedasticity -**Generic parent class:** +```{eval-rst} +.. autosummary:: + :toctree: gen_modules/ + + spatialstats.nd_binning + spatialstats.interp_nd_binning + spatialstats.two_step_standardization +``` + +### Sub-routines for spatial correlations ```{eval-rst} .. autosummary:: :toctree: gen_modules/ - xdem.coreg.BiasCorr + spatialstats.sample_empirical_variogram + spatialstats.fit_sum_model_variogram + spatialstats.correlation_from_variogram ``` -**Convenience classes for specific corrections:** +### Sub-routines for error propagation ```{eval-rst} .. autosummary:: :toctree: gen_modules/ - xdem.coreg.Deramp - xdem.coreg.DirectionalBias - xdem.coreg.TerrainBias + spatialstats.number_effective_samples ``` -## Terrain attributes +### Empirical validation ```{eval-rst} .. autosummary:: :toctree: gen_modules/ - xdem.terrain + spatialstats.patches_method ``` -## Volume integration methods +### Plotting for uncertainty analysis ```{eval-rst} .. autosummary:: :toctree: gen_modules/ - xdem.volume + spatialstats.plot_variogram + spatialstats.plot_1d_binning + spatialstats.plot_2d_binning ``` -## Fitting methods +## Stand-alone functions (moved) ```{eval-rst} .. autosummary:: :toctree: gen_modules/ - xdem.fit + spatialstats.nmad +``` + + +## Development classes (removal or re-factoring) + +```{caution} +The {class}`xdem.dDEM` and {class}`xdem.DEMCollection` classes will be removed or re-factored in the near future. ``` -## Filtering methods +### dDEM ```{eval-rst} .. autosummary:: :toctree: gen_modules/ - xdem.filters + dDEM ``` -## Spatial statistics methods +### DEMCollection ```{eval-rst} .. autosummary:: :toctree: gen_modules/ - xdem.spatialstats + DEMCollection ``` diff --git a/doc/source/background.md b/doc/source/background.md new file mode 100644 index 00000000..ba7e3081 --- /dev/null +++ b/doc/source/background.md @@ -0,0 +1,65 @@ +(background)= + +# Background + +Below, some more information on the people behind the package, and its mission. + +## The people behind xDEM + +```{margin} +2More on our GlacioHack founder at [adehecq.github.io](https://adehecq.github.io/)! +``` + +xDEM was created during the **[GlacioHack](https://github.com/GlacioHack) hackathon**, that was initiated by +Amaury Dehecq2 and took place online on November 8, 2020. + +```{margin} +3Check-out [glaciology.ch](https://glaciology.ch) on our founding group of VAW glaciology! +``` + +The initial core development of xDEM was performed by members of the Glaciology group of the Laboratory of Hydraulics, Hydrology and +Glaciology (VAW) at ETH Zürich3, with contributions by members of the University of Oslo, the University of Washington, and University +Grenoble Alpes. + +We are not software developers but geoscientists, and we try our best to offer tools that can be useful to a larger group, +documented, reliable and maintained. All development and maintenance is made on a voluntary basis and we welcome +any new contributors! See some information on how to contribute in the dedicated page of our +[GitHub repository](https://github.com/GlacioHack/xdem/blob/main/CONTRIBUTING.md). + +## Mission + +```{epigraph} +The core mission of xDEM is to be **easy-of-use**, **modular** and **robust**. + +It also attempts to be as **efficient**, **scalable** and **state-of-the-art** as possible. + +Finally, as an open source package, it aspires to foster **reproducibility** and **open science**. +``` + +In details, those mean: + +- **Ease-of-use:** all basic operations or methods from published works should only require a few lines of code to be performed; + +- **Modularity:** all methods should be fully customizable, to allow both flexibility and inter-comparison; + +- **Robustness:** all methods should be tested within our continuous integration test-suite, to enforce that they always perform as expected; + +```{note} +:class: margin +**Scalability** is currently being improved towards a first major release ``v1.0``. +``` + +And, additionally: + +- **Efficiency**: all methods should be optimized at the lower-level, to function with the highest performance offered by Python packages; + +- **Scalability**: all methods should support both lazy processing and distributed parallelized processing, to work with high-resolution data on local machines as well as on HPCs; + +- **State-of-the-art**: all methods should be at the cutting edge of remote sensing science, to provide users with the most reliable and up-to-date tools. + +And finally: + +- **Reproducibility:** all code should be version-controlled and release-based, to ensure consistency of dependent + packages and works; + +- **Open-source:** all code should be accessible and re-usable to anyone in the community, for transparency and open governance. diff --git a/doc/source/biascorr.md b/doc/source/biascorr.md index 44e3ac3a..d2c6380b 100644 --- a/doc/source/biascorr.md +++ b/doc/source/biascorr.md @@ -1,5 +1,7 @@ --- file_format: mystnb +mystnb: + execution_timeout: 90 jupytext: formats: md:myst text_representation: @@ -15,146 +17,375 @@ kernelspec: # Bias correction -In xDEM, bias-correction methods correspond to non-rigid transformations that cannot be described as a 3-dimensional -affine function (see {ref}`coregistration`). +In xDEM, bias-correction methods correspond to **transformations that cannot be described as a 3-dimensional +affine function** (see {ref}`coregistration`), and aim at correcting both systematic elevation errors and +spatially-structured random errors. -Contrary to rigid coregistration methods, bias corrections are not limited to the information in the DEMs. They can be -passed any external variables (e.g., land cover type, processing metric) to attempt to identify and correct biases in -the DEM. Still, many methods rely either on coordinates (e.g., deramping, along-track corrections) or terrain -(e.g., curvature- or elevation-dependant corrections), derived solely from the DEM. +Contrary to affine coregistration methods, bias corrections are **not limited to the information in the elevation data**. They can be +passed any external variables (e.g., land cover type, processing metric) to attempt to identify and correct biases. +Still, many methods rely either on coordinates (e.g., deramping, along-track corrections) or terrain +(e.g., curvature- or elevation-dependant corrections), derived solely from the elevation data. -## The {class}`~xdem.BiasCorr` object +## Quick use -Each bias-correction method in xDEM inherits their interface from the {class}`~xdem.Coreg` class (see {ref}`coreg_object`). -This implies that bias-correction methods can be combined in a {class}`~xdem.CoregPipeline` with any other methods, or -applied in a block-wise manner through {class}`~xdem.BlockwiseCoreg`. +Bias-correction methods are **used the same way as coregistrations**: + +```{code-cell} ipython3 +:tags: [remove-cell] + +# To get a good resolution for displayed figures +from matplotlib import pyplot +pyplot.rcParams['figure.dpi'] = 600 +pyplot.rcParams['savefig.dpi'] = 600 +``` + +```{code-cell} ipython3 +import xdem +import numpy as np + +# Create a bias-correction +biascorr = xdem.coreg.DirectionalBias(angle=45, fit_or_bin="bin", bin_sizes=200, bin_apply_method="per_bin", bin_statistic=np.mean) +``` + +Bias correction can estimate and correct the bias **by a parametric fit** using `fit_or_bin="fit"` linked to `fit_` parameters, **by applying +a binned statistic** using `fit_or_bin="bin"` linked to `bin_` parameters, or **by a parametric fit on the binned data** using `fit_or_bin="bin_and_fit"` +linked to all parameters. + +Predefined bias corrections usually take additional arguments such as `angle` for {class}`~xdem.coreg.DirectionalBias`, +`poly_order` for {class}`~xdem.coreg.Deramp` and `attribute` for {class}`~xdem.coreg.TerrainBias`. + +```{code-cell} ipython3 +:tags: [hide-cell] +:mystnb: +: code_prompt_show: "Show the code for opening example files" +: code_prompt_hide: "Hide the code for opening example files" + +import geoutils as gu +import numpy as np +import matplotlib.pyplot as plt + +# Open a reference and to-be-aligned DEM +ref_dem = xdem.DEM(xdem.examples.get_path("longyearbyen_ref_dem")) +tba_dem = xdem.DEM(xdem.examples.get_path("longyearbyen_tba_dem")) +``` + +Once defined, they can be applied the same two ways as for coregistration (using {func}`~xdem.coreg.Coreg.fit` and +{func}`~xdem.coreg.Coreg.apply` separately allows to re-apply the same correction to different elevation data). + +```{code-cell} ipython3 +# Coregister with bias correction by calling the DEM method +corrected_dem = tba_dem.coregister_3d(ref_dem, biascorr) +# (Equivalent) Or by calling the fit and apply steps +corrected_dem = biascorr.fit_and_apply(ref_dem, tba_dem) +``` + +Additionally, **bias corrections can be customized to use any number of variables to correct simultaneously**, +by defining `bias_var_names` in {class}`~xdem.coreg.BiasCorr` and passing a `bias_vars` dictionary arrays or rasters +to {func}`~xdem.coreg.Coreg.fit` and {func}`~xdem.coreg.Coreg.apply`. See {ref}`custom-biascorr` for more details. + + +## The modular {class}`~xdem.coreg.BiasCorr` object + +### Inherited from {class}`~xdem.coreg.Coreg` + +Each bias-correction method in xDEM inherits their interface from the {class}`~xdem.coreg.Coreg` class (see {ref}`coreg_object`). +This implies that bias-correction methods can be combined in a {class}`~xdem.coreg.CoregPipeline` with any other methods, or +applied in a block-wise manner through {class}`~xdem.coreg.BlockwiseCoreg`. **Inheritance diagram of co-registration and bias corrections:** ```{eval-rst} -.. inheritance-diagram:: xdem.coreg.base xdem.coreg.affine xdem.coreg.biascorr - :top-classes: xdem.Coreg +.. inheritance-diagram:: xdem.coreg.base.Coreg xdem.coreg.affine xdem.coreg.biascorr + :top-classes: xdem.coreg.Coreg ``` -As a result, each bias-correction approach has the following methods: - -- {func}`~xdem.BiasCorr.fit` for estimating the bias. -- {func}`~xdem.BiasCorr.apply` for correcting the bias on a DEM. +The main difference with {class}`~xdem.coreg.Coreg` is that a {class}`~xdem.coreg.BiasCorr` has a new `bias_var_names` +argument which allows to declare the names of N bias-correction variables that will be passed, which **corresponds to the +number of simultaneous dimensions in which the bias correction is performed**. +This step is implicit for predefined methods such as {class}`~xdem.coreg.DirectionalBias`. -## Modular estimators +### Modular estimation -Bias-correction methods have 3 main ways of estimating and correcting a bias, both relying on one or several variables: +Bias-correction methods have three ways of estimating and correcting a bias in N-dimensions: -- **Performing a binning of the data** along variables with a statistic (e.g., median), and applying the statistics in each bin, -- **Fitting a parametric function** to the variables, and applying that function, -- **(Recommended1) Fitting a parametric function on a data binning** of the variable, and applying that function. +- **Performing a binning of the data** along variables with a statistic (e.g., median), then applying the statistics in each bin, +- **Fitting a parametric function** to the variables, then applying that function, +- **(Recommended1) Fitting a parametric function on a data binning** of the variable, then applying that function. ```{margin} -1DEM alignment is a big data problem often plagued by outliers, greatly **simplified** and **accelerated** by binning with robust estimators. +1DEM correction is a big data problem plagued by outliers, more robust and computationally efficient when binning with robust estimators. + +See the **{ref}`robust-estimators` guide page** for more details. ``` -To define the parameters related to fitting and/or binning, every {func}`~xdem.BiasCorr` is instantiated with the same arguments: +The parameters related to fitting or binning are the same for every {func}`~xdem.coreg.BiasCorr` method: -- `fit_or_bin` to either fit a parametric model to the bias by passing "fit", perform an empirical binning of the bias by passing "bin", or to fit a parametric model to the binning with "bin_and_fit" **(recommended)**, +- `fit_or_bin` to either fit a parametric model to the bias by passing **"fit"**, perform an empirical binning of the bias by passing **"bin"**, or to fit a parametric model to the binning with **"bin_and_fit" (recommended)**, - `fit_func` to pass any parametric function to fit to the bias, - `fit_optimizer` to pass any optimizer function to perform the fit minimization, - `bin_sizes` to pass the size or edges of the bins for each variable, - `bin_statistic` to pass the statistic to compute in each bin, - `bin_apply_method` to pass the method to apply the binning for correction. -```{code-cell} ipython3 -:tags: [hide-input, hide-output] +For predefined methods, the default values of these parameters differ. For instance, a {class}`~xdem.coreg.Deramp` generally performs well +with a **"fit"** estimation on a subsample, and thus has a fixed `fit_func` (2D polynomial) solved by the classic optimizer {func}`scipy.optimize.curve_fit`. +In contrast, a {class}`~xdem.coreg.TerrainBias` is generally hard to model parametrically, and thus defaults to a **"bin"** estimation. -import geoutils as gu -import numpy as np +Finally, each bias-correction approach has the following methods: -import xdem +- {func}`~xdem.coreg.Coreg.fit` for estimating the bias, which expects a new `bias_vars` dictionary **except for predefined methods** such as {class}`~xdem.coreg.DirectionalBias`, +- {func}`~xdem.coreg.Coreg.apply` for correcting the bias on a DEM, which also expects a `bias_vars` dictionary **except for predefined methods**. -# Open a reference DEM from 2009 -ref_dem = xdem.DEM(xdem.examples.get_path("longyearbyen_ref_dem")) -# Open a to-be-aligned DEM from 1990 -tba_dem = xdem.DEM(xdem.examples.get_path("longyearbyen_tba_dem")).reproject(ref_dem, silent=True) +### Good practices -# Open glacier polygons from 1990, corresponding to unstable ground -glacier_outlines = gu.Vector(xdem.examples.get_path("longyearbyen_glacier_outlines")) -# Create an inlier mask of terrain outside the glacier polygons -inlier_mask = glacier_outlines.create_mask(ref_dem) -``` +Several good practices help performing a successful bias correction: -(biascorr-deramp)= +- **Avoid using "fit" with a subsample size larger than 1,000,000:** Otherwise the optimizer will be extremely slow and might fail with a memory error; consider using "bin_and_fit" instead to reduce the data size before the optimization which still allows to utilize all the data, +- **Avoid using "fit" or "bin_and_fit" for more than 2 dimensions (input variables):** Fitting a parametric form in more than 2 dimensions is quite delicate, consider using "bin" or sequential 1D corrections instead, +- **Use at least 1000 bins for all dimensions, being mindful about dimension number:** Using a small bin size is generally too rough, but a large bin size will grow exponentially with the number of bias variables, +- **Use customized bin edges for data with large extreme values:** Passing simply a bin size will set the min/max of the data as the full binning range, which can be impractical (e.g., most curvatures lie between -2/2 but can take values of 10000+). -## Deramping +## Bias-correction methods -{class}`xdem.coreg.Deramp` +```{important} +Below we **create biased elevation data to examplify the different methods** in relation to their type of correction. -- **Performs:** Correct biases with a 2D polynomial of degree N. -- **Supports weights** Yes. -- **Recommended for:** Residuals from camera model. +See bias correction on real data in the **{ref}`examples-basic` and {ref}`examples-advanced` gallery examples**! +``` -Deramping works by estimating and correcting for an N-degree polynomial over the entire dDEM between a reference and the DEM to be aligned. -This may be useful for correcting small rotations in the dataset, or nonlinear errors that for example often occur in structure-from-motion derived optical DEMs (e.g. Rosnell and Honkavaara [2012](https://doi.org/10.3390/s120100453); Javernick et al. [2014](https://doi.org/10.1016/j.geomorph.2014.01.006); Girod et al. [2017](https://doi.org/10.5194/tc-11-827-2017)). +(deramp)= +### Deramping -### Limitations +{class}`xdem.coreg.Deramp` -Deramping does not account for horizontal (X/Y) shifts, and should most often be used in conjunction with other methods. +- **Performs:** Correction with a 2D polynomial of degree N. +- **Supports weights:** Yes. +- **Pros:** Can help correct a large category of biases (lens deformations, camera positioning), and runs fast. +- **Cons:** Overfits with limited static surfaces. -1st order deramping is not perfectly equivalent to a rotational correction: values are simply corrected in the vertical direction, and therefore includes a horizontal scaling factor, if it would be expressed as a transformation matrix. -For large rotational corrections, [ICP] is recommended. +Deramping works by estimating and correcting for an N-degree polynomial over the entire elevation difference. -### Example ```{code-cell} ipython3 -from xdem import coreg +:tags: [hide-cell] +:mystnb: +: code_prompt_show: "Show the code for adding a ramp bias" +: code_prompt_hide: "Hide the code for adding a ramp bias" + +# Get grid coordinates +xx, yy = np.meshgrid(np.arange(0, ref_dem.shape[1]), np.arange(0, ref_dem.shape[0])) + +# Create a ramp bias and add to the DEM +cx = ref_dem.shape[1] / 2 +cy = ref_dem.shape[0] / 2 +synthetic_bias = 20 * ((xx - cx)**2 + (yy - cy)**2) / (cx * cy) +synthetic_bias -= np.median(synthetic_bias) +tbc_dem_ramp = ref_dem + synthetic_bias +``` -# Instantiate a 1st order deramping -deramp = coreg.Deramp(poly_order=1) -# Fit the data to a suitable polynomial solution -deramp.fit(ref_dem, tba_dem, inlier_mask=inlier_mask) +```{code-cell} ipython3 +# Instantiate a 2nd order 2D deramping +deramp = xdem.coreg.Deramp(poly_order=2) +# Fit and apply +corrected_dem = deramp.fit_and_apply(ref_dem, tbc_dem_ramp) +``` -# Apply the transformation -corrected_dem = deramp.apply(tba_dem) +```{code-cell} ipython3 +:tags: [hide-input] +:mystnb: +: code_prompt_show: "Show plotting code" +: code_prompt_hide: "Hide plotting code" + +# Plot before and after +f, ax = plt.subplots(1, 2) +ax[0].set_title("Before deramp") +(tbc_dem_ramp - ref_dem).plot(cmap='RdYlBu', ax=ax[0]) +ax[1].set_title("After deramp") +(corrected_dem - ref_dem).plot(cmap='RdYlBu', vmin=-30, vmax=30, ax=ax[1], cbar_title="Elevation differences (m)") +_ = ax[1].set_yticklabels([]) ``` -## Directional biases +### Directional biases {class}`xdem.coreg.DirectionalBias` -- **Performs:** Correct biases along a direction of the DEM. -- **Supports weights** Yes. -- **Recommended for:** Undulations or jitter, common in both stereo and radar DEMs. +- **Performs:** Correct biases along a direction. +- **Supports weights:** Yes. +- **Pros:** Correcting undulations or jitter, common in both stereo and radar DEMs, or strips common in scanned imagery. +- **Cons:** Long optimization when fitting a sum of sinusoids. -The default optimizer for directional biases optimizes a sum of sinusoids using 1 to 3 different frequencies, and keeping the best performing fit. +For strip-like errors, performing an empirical correction using only a binning with `fit_or_bin="bin"` allows more +flexibility than a parametric form, but requires a large amount of static surfaces. -### Example +```{code-cell} ipython3 +:tags: [hide-cell] +:mystnb: +: code_prompt_show: "Show the code for adding a strip bias" +: code_prompt_hide: "Hide the code for adding a strip bias" + +# Get rotated coordinates along an angle +angle = 60 +xx = gu.raster.get_xy_rotated(ref_dem, along_track_angle=angle)[0] + +# Create a strip bias and add to the DEM +synthetic_bias = np.zeros(np.shape(ref_dem.data)) +xmin = np.min(xx) +synthetic_bias[np.logical_and((xx - xmin)<1200, (xx - xmin)>800)] = 20 +synthetic_bias[np.logical_and((xx - xmin)<2800, (xx - xmin)>2500)] = -10 +synthetic_bias[np.logical_and((xx - xmin)<5300, (xx - xmin)>5000)] = 10 +synthetic_bias[np.logical_and((xx - xmin)<15000, (xx - xmin)>14500)] = 5 +synthetic_bias[np.logical_and((xx - xmin)<21000, (xx - xmin)>20000)] = -15 +tbc_dem_strip = ref_dem + synthetic_bias +``` ```{code-cell} ipython3 -# Instantiate a directional bias correction -dirbias = coreg.DirectionalBias(angle=65) -# Fit the data -dirbias.fit(ref_dem, tba_dem, inlier_mask=inlier_mask) +# Define a directional bias correction at a certain angle (degrees), for a binning of 1000 bins +dirbias = xdem.coreg.DirectionalBias(angle=60, fit_or_bin="bin", bin_sizes=1000) +# Fit and apply +corrected_dem = dirbias.fit_and_apply(ref_dem, tbc_dem_strip) +``` -# Apply the transformation -corrected_dem = dirbias.apply(tba_dem) +```{code-cell} ipython3 +:tags: [hide-input] +:mystnb: +: code_prompt_show: "Show plotting code" +: code_prompt_hide: "Hide plotting code" + +# Plot before and after +f, ax = plt.subplots(1, 2) +ax[0].set_title("Before directional\nde-biasing") +(tbc_dem_strip - ref_dem).plot(cmap='RdYlBu', vmin=-30, vmax=30, ax=ax[0]) +ax[1].set_title("After directional\nde-biasing") +(corrected_dem - ref_dem).plot(cmap='RdYlBu', vmin=-30, vmax=30, ax=ax[1], cbar_title="Elevation differences (m)") +_ = ax[1].set_yticklabels([]) ``` -## Terrain biases +### Terrain biases {class}`xdem.coreg.TerrainBias` -- **Performs:** Correct biases along a terrain attribute of the DEM. -- **Supports weights** Yes. -- **Recommended for:** Different native resolution between DEMs. +- **Performs:** Correct biases along a terrain attribute. +- **Supports weights:** Yes. +- **Pros:** Useful to correct for instance curvature-related bias due to different native resolution between elevation data. +- **Cons:** For curvature-related biases, only works for elevation data with relatively close native resolution. -The default optimizer for terrain biases optimizes a 1D polynomial with an order from 1 to 6, and keeping the best performing fit. +The default optimizer for terrain biases optimizes a 1D polynomial with an order from 1 to 6, +and keeps the best performing fit. -### Example +```{code-cell} ipython3 +:tags: [hide-cell] +:mystnb: +: code_prompt_show: "Show the code for adding a curvature bias" +: code_prompt_hide: "Hide the code for adding a curvature bias" + +# Get maximum curvature +maxc = ref_dem.maximum_curvature() + +# Create a bias depending on bins +synthetic_bias = np.zeros(np.shape(ref_dem.data)) + +# For each bin, add the curvature bias +bin_edges = np.array((-1, -0.5, -0.1, 0.1, 0.5, 2, 5)) +bias_per_bin = np.array((-10, -5, 0, 5, 10, 20)) +for i in range(len(bin_edges) - 1): + synthetic_bias[np.logical_and(maxc.data >= bin_edges[i], maxc.data < bin_edges[i + 1])] = bias_per_bin[i] +tbc_dem_curv = ref_dem + synthetic_bias +``` + +```{code-cell} ipython3 +# Instantiate a 1st order terrain bias correction for curvature +terbias = xdem.coreg.TerrainBias(terrain_attribute="maximum_curvature", + bin_sizes={"maximum_curvature": np.linspace(-5, 5, 1000)}, + bin_apply_method="per_bin") + +# We have to pass the original curvature here +corrected_dem = terbias.fit_and_apply(ref_dem, tbc_dem_curv, bias_vars={"maximum_curvature": maxc}) +``` ```{code-cell} ipython3 -# Instantiate a 1st order terrain bias correction -terbias = coreg.TerrainBias(terrain_attribute="maximum_curvature") -# Fit the data -terbias.fit(ref_dem, tba_dem, inlier_mask=inlier_mask) +:tags: [hide-input] +:mystnb: +: code_prompt_show: "Show plotting code" +: code_prompt_hide: "Hide plotting code" + +# Plot before and after +f, ax = plt.subplots(1, 2) +ax[0].set_title("Before terrain\nde-biasing") +(tbc_dem_curv - ref_dem).plot(cmap='RdYlBu', vmin=-10, vmax=10, ax=ax[0]) +ax[1].set_title("After terrain\nde-biasing") +(corrected_dem - ref_dem).plot(cmap='RdYlBu', vmin=-10, vmax=10, ax=ax[1], cbar_title="Elevation differences (m)") +_ = ax[1].set_yticklabels([]) +``` + + +(custom-biascorr)= +### Using custom variables + +All bias-corrections methods are inherited from generic classes that perform corrections in 1-, 2- or N-D. Having these +separate helps the user navigating the dimensionality of the functions, optimizer, binning or variables used. -# Apply the transformation -corrected_dem = terbias.apply(tba_dem) +{class}`xdem.coreg.BiasCorr` + +- **Performs:** Correct biases with any function and optimizer, or any binning, in 1-, 2- or N-D. +- **Supports weights:** Yes. +- **Pros:** Versatile. +- **Cons:** Needs more setting up! + + +```{code-cell} ipython3 +:tags: [hide-input] +:mystnb: +: code_prompt_show: "Show code for creating inlier mask and coregistration" +: code_prompt_hide: "Hide code for creating inlier mask and coregistration" + +import geoutils as gu + +# Open glacier outlines as vector +glacier_outlines = gu.Vector(xdem.examples.get_path("longyearbyen_glacier_outlines")) + +# Create a stable ground mask (not glacierized) to mark "inlier data" +inlier_mask = ~glacier_outlines.create_mask(ref_dem) + +# We align the two DEMs before doing any bias correction +tba_dem_nk = tba_dem.coregister_3d(ref_dem, xdem.coreg.NuthKaab()) +``` + +```{code-cell} ipython3 +# Create a bias correction defining three custom variable names that will be passed later +# We force a binning method, more simple in 3D +biascorr = xdem.coreg.BiasCorr(bias_var_names=["aspect", "slope", "elevation"], fit_or_bin="bin", bin_sizes=5) + +# Derive curvature and slope +aspect, slope = ref_dem.get_terrain_attribute(["aspect", "slope"]) + +# Pass the variables to the fit_and_apply function matching the names declared above +corrected_dem = biascorr.fit_and_apply( + ref_dem, + tba_dem_nk, + inlier_mask=inlier_mask, + bias_vars={"aspect": aspect, "slope": slope, "elevation": ref_dem} +) +``` + +```{warning} +Using any custom variables, and especially in many dimensions, **can lead to over-correction and introduce new errors**. +For instance, elevation-dependent corrections (as shown below) typically introduce new errors (due to more high curvatures +at high elevation such as peaks, and low curvatures at low elevation with flat terrain). + +For this reason, it is important to check the sanity of elevation differences after correction! +``` + +```{code-cell} ipython3 +:tags: [hide-input] +:mystnb: +: code_prompt_show: "Show plotting code" +: code_prompt_hide: "Hide plotting code" + +# Plot before and after +f, ax = plt.subplots(1, 2) +ax[0].set_title("Before 3D\nde-biasing") +(tba_dem_nk - ref_dem).plot(cmap='RdYlBu', vmin=-10, vmax=10, ax=ax[0]) +ax[1].set_title("After 3D\nde-biasing") +(corrected_dem - ref_dem).plot(cmap='RdYlBu', vmin=-10, vmax=10, ax=ax[1], cbar_title="Elevation differences (m)") +_ = ax[1].set_yticklabels([]) ``` diff --git a/doc/source/cheatsheet.md b/doc/source/cheatsheet.md new file mode 100644 index 00000000..bf47f725 --- /dev/null +++ b/doc/source/cheatsheet.md @@ -0,0 +1,266 @@ +--- +file_format: mystnb +mystnb: + execution_timeout: 60 +jupytext: + formats: md:myst + text_representation: + extension: .md + format_name: myst +kernelspec: + display_name: xdem-env + language: python + name: xdem +--- +(cheatsheet)= + +# Cheatsheet: How to correct... ? + +In elevation data analysis, the problem generally starts with identifying what correction method to apply when +observing a specific pattern of error in your own data. + +Below, we summarize a cheatsheet that links what method is likely to correct a pattern of error you can visually +identify on **a map of elevation differences with another elevation dataset (looking at static surfaces)**! + +## Cheatsheet + +The patterns of errors categories listed in this spreadsheet **are linked to visual examples further below** that +you use to compare to your own elevation differences. + +```{list-table} + :widths: 1 2 2 2 + :header-rows: 1 + :stub-columns: 1 + + * - Pattern + - Description + - Cause and correction + - Notes + * - {ref}`sharp-landforms` + - Positive and negative errors that are larger near high slopes and symmetric with opposite slope orientation, making landforms appear visually. + - Likely horizontal shift due to geopositioning errors, use a {ref}`coregistration` such as {class}`~xdem.coreg.NuthKaab`. + - Even a tiny horizontal misalignment can be visually identified! To not confuse with {ref}`peak-cavity`. + * - {ref}`smooth-large-field` + - Smooth offsets varying at scale of 10 km+, often same sign (either positive or negative). + - Likely wrong {ref}`vertical-ref`, can set and transform with {func}`~xdem.DEM.set_vcrs` and {func}`~xdem.DEM.to_vcrs`. + - Vertical references often only exists in a user guide, they are not coded in the raster CRS and need to be set manually. + * - {ref}`ramp-or-dome` + - Ramping errors, often near the edge of the data extent, sometimes with a center dome. + - Likely ramp/rotations due to camera errors, use either a {ref}`coregistration` such as {class}`~xdem.coreg.ICP` or a {ref}`biascorr` such as {class}`~xdem.coreg.Deramp`. + - Can sometimes be more rigorously fixed ahead of DEM generation with bundle adjustment. + * - {ref}`undulations` + - Positive and negative errors undulating patterns at one or several frequencies well larger than pixel size. + - Likely jitter-type errors, use a {ref}`biascorr` such as {class}`~xdem.coreg.DirectionalBias`. + - Can sometimes be more rigorously fixed ahead of DEM generation with jitter correction. + * - {ref}`peak-cavity` + - Positive and negative errors, with one sign located exclusively near peaks and the other exclusively near cavities. + - Likely resolution-type errors, use a {ref}`biascorr` such as {class}`~xdem.coreg.TerrainBias`. + - Can be over-corrected, sometimes better to simply ignore during analysis. Or avoid by downsampling all elevation data to the lowest resolution, rather than upsampling to the highest. + * - {ref}`point-alternating` + - Point data errors that alternate between negative and positive, higher on steeper slopes. + - Likely wrong point-raster comparison, use [point interpolation or reduction on the raster instead](https://geoutils.readthedocs.io/en/stable/raster_vector_point.html#rasterpoint-operations) such as {func}`~xdem.DEM.interp_points`. + - Rasterizing point data introduces spatially correlated random errors, instead it is recommended to interpolate raster data at the point coordinates. +``` + +## Visual patterns of errors + +```{important} +The patterns of errors below are **created synthetically to examplify the effect of a single source of error**. +In your own elevation differences, those will be mixed together and with random errors inherent to the data. + +For examples on real data, see the **{ref}`examples-basic` and {ref}`examples-advanced` gallery examples**! +``` + +```{code-cell} ipython3 +:tags: [remove-cell] + +# To get a good resolution for displayed figures +from matplotlib import pyplot +pyplot.rcParams['figure.dpi'] = 600 +pyplot.rcParams['savefig.dpi'] = 600 +pyplot.rcParams['font.size'] = 9 # Default 10 is a bit too big for coregistration plots +``` + +It is often crucial to relate the location of your errors on static surfaces to the terrain distribution +(in particular, its slope and curvature), which can usually be inferred visually from a hillshade. + + +```{code-cell} ipython3 +:tags: [hide-cell] +:mystnb: +: code_prompt_show: "Show the code for opening example file" +: code_prompt_hide: "Hide the code for opening example file" + +import xdem +import geoutils as gu +import geopandas as gpd +import numpy as np +import matplotlib.pyplot as plt + +# Open an example DEM +dem = xdem.DEM(xdem.examples.get_path("longyearbyen_ref_dem")) +``` + +```{code-cell} ipython3 +hs = dem.hillshade() +hs.plot(cmap="Greys_r", cbar_title="Hillshade") +``` + +(sharp-landforms)= +### Sharp landforms + +Example of sharp landforms appearing with a horizontal shift due to geolocation errors. We here translate the DEM +horizontally by 1/10th of a pixel, for a pixel resolution of 20 m. + +```{code-cell} ipython3 +:tags: [hide-input] +:mystnb: +: code_prompt_show: "Show code to simulate horizontal shift errors" +: code_prompt_hide: "Hide code to simulate horizontal shift errors" + +# Simulate a translation of 1/10th of a pixel +x_shift = 0.1 +y_shift = 0.1 +dem_shift = dem.translate(x_shift, y_shift, distance_unit="pixel") + +# Resample and plot the elevation differences of the horizontal shift +dh = dem - dem_shift.reproject(dem) +dh.plot(cmap='RdYlBu', vmin=-3, vmax=3, cbar_title="Elevation differences of\nhorizontal shift (m)") +``` + +(smooth-large-field)= +### Smooth-field offset + +Example of smooth large offset field created by a wrong vertical CRS. We here show the difference due to the EGM96 +geoid added on top of the ellipsoid. + +```{code-cell} ipython3 +:tags: [hide-input] +:mystnb: +: code_prompt_show: "Show code to simulate vertical referencing errors" +: code_prompt_hide: "Hide code to simulate vertical referencing errors" + +# Set current vertical CRS as ellipsoid +dem.set_vcrs("Ellipsoid") +# Transform vertical reference to geoid +trans_dem = dem.to_vcrs("EGM96") + +# Plot the elevation differences of the vertical transformation +dh = dem - trans_dem +dh.plot(cmap='RdYlBu', cbar_title="Elevation differences of\nvertical transform (m)") +``` + +(ramp-or-dome)= +### Ramp or dome + +Example of ramp created by a rotation due to camera errors. We here show just a slight rotation of 0.02 degrees. + +```{code-cell} ipython3 +:tags: [hide-input] +:mystnb: +: code_prompt_show: "Show code to simulate rotation errors" +: code_prompt_hide: "Hide code to simulate rotation errors" + +# Apply a rotation of 0.02 degrees +rotation = np.deg2rad(0.02) +# Affine matrix for 3D transformation +matrix = np.array( + [ + [1, 0, 0, 0], + [0, np.cos(rotation), -np.sin(rotation), 0], + [0, np.sin(rotation), np.cos(rotation), 0], + [0, 0, 0, 1], + ] +) +# Select a centroid +centroid = [dem.bounds.left + 5000, dem.bounds.top - 2000, np.median(dem) + 100] +# We rotate the elevation data +dem_rotated = xdem.coreg.apply_matrix(dem, matrix, centroid=centroid) + +# Plot the elevation differences of the rotation +dh = dem - dem_rotated +dh.plot(cmap='RdYlBu', cbar_title="Elevation differences of\nrotation (m)") +``` + + +(undulations)= +### Undulations + +Example of undulations resembling jitter errors. We here artificially create a sinusoidal signal at a certain angle. + +```{code-cell} ipython3 +:tags: [hide-input] +:mystnb: +: code_prompt_show: "Show code to simulate undulation errors" +: code_prompt_hide: "Hide code to simulate undulation errors" + +# Get rotated coordinates along an angle +angle = -20 +xx = gu.raster.get_xy_rotated(dem, along_track_angle=angle)[0] + +# One sinusoid: amplitude, phases and frequencies +params = np.array([(2, 3000, np.pi)]).flatten() + +# Create a sinusoidal bias and add to the DEM +from xdem.fit import sumsin_1d +synthetic_bias_arr = sumsin_1d(xx.flatten(), *params).reshape(np.shape(dem.data)) + +# Plot the elevation differences of the undulations +synthetic_bias = dem.copy(new_array=synthetic_bias_arr) +synthetic_bias.plot(cmap='RdYlBu', vmin=-3, vmax=3, cbar_title="Elevation differences of\nundulations (m)") +``` + +(peak-cavity)= +### Peak cuts and cavity fills + +Example of peak cutting and cavity filling errors. We here downsampled our DEM from 20 m to 100 m to simulate a lower +native resolution, then upsample it again to 20 m, to show the errors affect areas near high curvatures such as +peaks and cavities. + +```{code-cell} ipython3 +:tags: [hide-input] +:mystnb: +: code_prompt_show: "Show code to simulate resolution errors" +: code_prompt_hide: "Hide code to simulate resolution errors" + +# Downsample DEM (bilinear) +dem_100m = dem.reproject(res=100) + +# Upsample (bilinear again) and compare +dh = dem - dem_100m.reproject(dem) +dh.plot(cmap='RdYlBu', vmin=-40, vmax=40, cbar_title="Elevation differences of\nresolution change (m)") +``` + +(point-alternating)= +### Point alternating + +An example of alternating point errors created by wrong point-raster comparison by rasterization of the points, +which are especially large around steep slopes. + +```{code-cell} ipython3 +:tags: [hide-input] +:mystnb: +: code_prompt_show: "Show code to simulate point-raster comparison errors" +: code_prompt_hide: "Hide code to simulate point-raster comparison errors" + +# Simulate swath coordinates of an elevation point cloud +x = np.linspace(dem.bounds.left, dem.bounds.right, 100) +y = np.linspace(dem.bounds.top - 5000, dem.bounds.bottom + 5000, 100) + +# Interpolate DEM at these coordinates to build the point cloud +# (to approximate the real elevation at these coordinates, +# which has negligible impact compared to rasterization) +z = dem.interp_points((x,y)) +epc = gu.Vector(gpd.GeoDataFrame(geometry=gpd.points_from_xy(x=x, y=y, crs=dem.crs), data={"z": z})) + +# Rasterize point cloud back on the DEM grid +epc_rast = epc.rasterize(dem, in_value=z, out_value=np.nan) + +# For easier plotting, convert the valid dh values to points +dh = dem - epc_rast +dh_pc = dh.to_pointcloud(data_column_name="dh") + +# Plot the elevation differences of the rasterization on top of a hillshade +hs.plot(cmap="Greys_r", add_cbar=False) +dh_pc.plot(column="dh", cmap='RdYlBu', vmin=-10, vmax=10, legend=True, cbar_title="Elevation differences of\npoint-raster differencing (m)") +``` diff --git a/doc/source/citation.md b/doc/source/citation.md new file mode 100644 index 00000000..7966b760 --- /dev/null +++ b/doc/source/citation.md @@ -0,0 +1,114 @@ +(citation)= + +# Citing and method overview + +When using a method implemented in xDEM, one should cite both the package and the original study behind the method (if there is any)! + +## Citing xDEM + +To cite the package, use the Zenodo DOI: [![Zenodo](https://zenodo.org/badge/doi/10.5281/zenodo.4809697.svg)](https://zenodo.org/doi/10.5281/zenodo.4809697). + +## Method overview + +For citation and other purposes, here's an overview of all methods implemented in the package and their reference, if it exists. +More details are available on each feature page! + +### Terrain attributes + +```{list-table} + :widths: 1 1 + :header-rows: 1 + :stub-columns: 1 + + * - Method + - Reference + * - Slope, aspect and hillshade + - [Horn (1981)](http://dx.doi.org/10.1109/PROC.1981.11918) or [Zevenbergen and Thorne (1987)](http://dx.doi.org/10.1002/esp.3290120107) + * - Curvatures + - [Zevenbergen and Thorne (1987)](http://dx.doi.org/10.1002/esp.3290120107) + * - Topographic position index + - [Weiss (2001)](http://www.jennessent.com/downloads/TPI-poster-TNC_18x22.pdf) + * - Terrain ruggedness index + - [Riley et al. (1999)](http://download.osgeo.org/qgis/doc/reference-docs/Terrain_Ruggedness_Index.pdf) or [Wilson et al. (2007)](http://dx.doi.org/10.1080/01490410701295962) + * - Roughness + - [Dartnell (2000)](https://environment.sfsu.edu/node/11292) + * - Rugosity + - [Jenness (2004)]() + * - Fractal roughness + - [Taud and Parrot (2005)](https://doi.org/10.4000/geomorphologie.622) +``` + +### Coregistration + +```{list-table} + :widths: 1 1 + :header-rows: 1 + :stub-columns: 1 + + * - Method + - Reference + * - Nuth and Kääb + - [Nuth and Kääb (2011)](https://doi.org/10.5194/tc-5-271-2011) + * - Dh minimization + - N/A + * - Iterative closest point + - [Besl and McKay (1992)](https://doi.org/10.1117/12.57955) + * - Vertical shift + - N/A +``` + +### Bias-correction + +```{list-table} + :widths: 1 1 + :header-rows: 1 + :stub-columns: 1 + + * - Method + - Reference + * - Deramp + - N/A + * - Directional bias (sum of sinuoids) + - [Girod et al. (2017)](https://doi.org/10.3390/rs9070704) + * - Directional bias (other) + - N/A + * - Terrain bias (maximum curvature) + - [Gardelle et al. (2012)](https://doi.org/10.3189/2012JoG11J175) + * - Terrain bias (elevation) + - [Nuth and Kääb (2011)](https://doi.org/10.5194/tc-5-271-2011) + * - Terrain bias (other) + - N/A + * - Vertical shift + - N/A +``` + +### Gap-filling + +```{list-table} + :widths: 1 1 + :header-rows: 1 + :stub-columns: 1 + + * - Method + - Reference + * - Bilinear + - N/A + * - Local and regional hypsometric + - [Arendt et al. (2002)](https://doi.org/10.1126/science.1072497), [McNabb et al. (2019)](https://tc.copernicus.org/articles/13/895/2019/) +``` + + +### Uncertainty analysis + +```{list-table} + :widths: 2 1 + :header-rows: 1 + :stub-columns: 1 + + * - Method + - Reference + * - R2009 (multiple correlation ranges, circular approximation) + - [Rolstad et al. (2009)](http://dx.doi.org/10.3189/002214309789470950) + * - H2022 (heteroscedasticity, multiple correlation ranges, spatial propagation approximation) + - [Hugonnet et al. (2022)](http://dx.doi.org/10.1109/JSTARS.2022.3188922) +``` diff --git a/doc/source/code/comparison_plot_spatial_interpolation.py b/doc/source/code/comparison_plot_spatial_interpolation.py index c80e83e7..62ee7a2a 100644 --- a/doc/source/code/comparison_plot_spatial_interpolation.py +++ b/doc/source/code/comparison_plot_spatial_interpolation.py @@ -15,7 +15,7 @@ # Introduce 50000 nans randomly throughout the dDEM. ddem.data.mask.ravel()[np.random.default_rng(42).choice(ddem.data.size, 50000, replace=False)] = True -ddem.interpolate(method="linear") +ddem.interpolate(method="idw") ylim = (300, 100) xlim = (800, 1050) diff --git a/doc/source/code/coregistration_plot_nuth_kaab.py b/doc/source/code/coregistration_plot_nuth_kaab.py deleted file mode 100644 index dae51c53..00000000 --- a/doc/source/code/coregistration_plot_nuth_kaab.py +++ /dev/null @@ -1,39 +0,0 @@ -"""Plot the comparison between a dDEM before and after Nuth and Kääb (2011) coregistration.""" -import geoutils as gu -import matplotlib.pyplot as plt -import numpy as np - -import xdem - -dem_2009 = xdem.DEM(xdem.examples.get_path("longyearbyen_ref_dem")) -dem_1990 = xdem.DEM(xdem.examples.get_path("longyearbyen_tba_dem")) -outlines_1990 = gu.Vector(xdem.examples.get_path("longyearbyen_glacier_outlines")) -inlier_mask = ~outlines_1990.create_mask(dem_2009) - -nuth_kaab = xdem.coreg.NuthKaab() -nuth_kaab.fit(dem_2009, dem_1990, inlier_mask=inlier_mask) -dem_coreg = nuth_kaab.apply(dem_1990) - -ddem_pre = dem_2009 - dem_1990 -ddem_post = dem_2009 - dem_coreg - -nmad_pre = xdem.spatialstats.nmad(ddem_pre[inlier_mask]) -nmad_post = xdem.spatialstats.nmad(ddem_post[inlier_mask]) - -vlim = 20 -plt.figure(figsize=(8, 5)) -plt.subplot2grid((1, 15), (0, 0), colspan=7) -plt.title(f"Before coregistration. NMAD={nmad_pre:.1f} m") -plt.imshow(ddem_pre.data, cmap="coolwarm_r", vmin=-vlim, vmax=vlim) -plt.axis("off") -plt.subplot2grid((1, 15), (0, 7), colspan=7) -plt.title(f"After coregistration. NMAD={nmad_post:.1f} m") -img = plt.imshow(ddem_post.data, cmap="coolwarm_r", vmin=-vlim, vmax=vlim) -plt.axis("off") -plt.subplot2grid((1, 15), (0, 14), colspan=1) -cbar = plt.colorbar(img, fraction=0.4, ax=plt.gca()) -cbar.set_label("Elevation change (m)") -plt.axis("off") - -plt.tight_layout() -plt.show() diff --git a/doc/source/code/intricacies_datatypes.py b/doc/source/code/intricacies_datatypes.py new file mode 100644 index 00000000..35b5fb9f --- /dev/null +++ b/doc/source/code/intricacies_datatypes.py @@ -0,0 +1,58 @@ +"""Plot example of elevation data types for guide page.""" +import matplotlib +import matplotlib.pyplot as plt +import numpy as np + +import xdem + +# Open reference DEM and crop to small area +ref_dem = xdem.DEM(xdem.examples.get_path("longyearbyen_ref_dem")) +ref_dem = ref_dem.crop( + (ref_dem.bounds.left, ref_dem.bounds.bottom, ref_dem.bounds.left + 1000, ref_dem.bounds.bottom + 1000) +) + +# Get point cloud with 100 points +ref_epc = ref_dem.to_pointcloud(subsample=100, random_state=42) + +f, ax = plt.subplots(2, 2, squeeze=False, sharex=True, sharey=True) +# Plot 1: DEM +ax[0, 0].set_title("DEM") +ref_dem.plot(cmap="terrain", ax=ax[0, 0], vmin=280, vmax=420, cbar_title="Elevation (m)") +plt.gca().set_xticklabels([]) +plt.gca().set_yticklabels([]) +plt.gca().set_aspect("equal") + +# Plot 2: EPC +ax[0, 1].set_title("Elevation\npoint cloud") +point = ref_epc.plot(column="b1", cmap="terrain", ax=ax[0, 1], vmin=280, vmax=420, cbar_title="Elevation (m)") +plt.gca().set_xticklabels([]) +plt.gca().set_yticklabels([]) +plt.gca().set_aspect("equal") + +# Plot 3: TIN +ax[1, 1].set_title("Elevation TIN") +triang = matplotlib.tri.Triangulation(ref_epc.geometry.x.values, ref_epc.geometry.y.values) +ax[1, 1].triplot(triang, color="gray", marker=".") +scat = ax[1, 1].scatter( + ref_epc.geometry.x.values, ref_epc.geometry.y.values, c=ref_epc["b1"].values, cmap="terrain", vmin=280, vmax=420 +) +plt.colorbar(mappable=scat, ax=ax[1, 1], label="Elevation (m)", pad=0.02) +ax[1, 1].set_xticklabels([]) +ax[1, 1].set_yticklabels([]) +ax[1, 1].set_aspect("equal") + +# Plot 4: Contour +ax[1, 0].set_title("Elevation contour") +coords = ref_dem.coords(grid=False) +cont = ax[1, 0].contour( + np.flip(coords[0]), coords[1], np.flip(ref_dem.get_nanarray()), levels=15, cmap="terrain", vmin=280, vmax=420 +) +plt.colorbar(mappable=cont, ax=ax[1, 0], label="Elevation (m)", pad=0.02) +ax[1, 0].set_xticklabels([]) +ax[1, 0].set_yticklabels([]) +ax[1, 0].set_aspect("equal") + +plt.suptitle("Types of elevation data") + +plt.tight_layout() +plt.show() diff --git a/doc/source/code/robust_mean_std.py b/doc/source/code/robust_mean_std.py new file mode 100644 index 00000000..29fa0257 --- /dev/null +++ b/doc/source/code/robust_mean_std.py @@ -0,0 +1,94 @@ +"""Plot example of NMAD/median as robust estimators for guide page.""" +import matplotlib.pyplot as plt +import numpy as np + +import xdem + +# Create example distribution +dh_inliers = np.random.default_rng(42).normal(loc=-5, scale=3, size=10**6) + +# Add outliers +dh_outliers = np.concatenate( + ( + np.repeat(-34, 600), + np.repeat(-33, 1800), + np.repeat(-32, 3600), + np.repeat(-31, 8500), + np.repeat(-30, 15000), + np.repeat(-29, 9000), + np.repeat(-28, 3800), + np.repeat(-27, 1900), + np.repeat(-26, 700), + ) +) +dh_all = np.concatenate((dh_inliers, dh_outliers)) + +# Get traditional and robust statistics on all data +mean_dh = np.nanmean(dh_all) +median_dh = np.nanmedian(dh_all) + +std_dh = np.nanstd(dh_all) +nmad_dh = xdem.spatialstats.nmad(dh_all) + +# Get traditional and robust statistics on inlier data +mean_dh_in = np.nanmean(dh_inliers) +median_dh_in = np.nanmedian(dh_inliers) + +std_dh_in = np.nanstd(dh_inliers) +nmad_dh_in = xdem.spatialstats.nmad(dh_inliers) + +# Plot +fig, ax = plt.subplots() +h1 = ax.hist(dh_inliers, bins=np.arange(-40, 25), density=False, color="gray", label="Inlier data") +h2 = ax.hist(dh_outliers, bins=np.arange(-40, 25), density=False, color="red", label="Outlier data") + +max_count = max(h1[0]) +ax.vlines(x=[mean_dh_in, median_dh_in], ymin=0, ymax=max_count, colors=["tab:gray", "black"]) +ax.vlines( + x=[mean_dh_in - std_dh_in, mean_dh_in + std_dh_in, median_dh_in - nmad_dh_in, median_dh_in + nmad_dh_in], + ymin=0, + ymax=max_count, + colors=["gray", "gray", "black", "black"], + linestyles="dashed", +) + +ax.vlines(x=[mean_dh, median_dh], ymin=0, ymax=max_count, colors=["red", "darkred"]) +ax.vlines( + x=[mean_dh - std_dh, mean_dh + std_dh, median_dh - nmad_dh, median_dh + nmad_dh], + ymin=0, + ymax=max_count, + colors=["red", "red", "darkred", "darkred"], + linestyles="dashed", +) + +ax.set_xlim((-40, 25)) +ax.set_xlabel("Elevation differences (m)") +ax.set_ylabel("Count") + +from matplotlib.patches import Rectangle + +handles = [ + Rectangle((0, 0), 1, 1, color=h1[-1][0].get_facecolor(), alpha=1), + Rectangle((0, 0), 1, 1, color=h2[-1][0].get_facecolor(), alpha=1), +] +labels = ["Inlier data", "Outlier data"] + +data_legend = ax.legend(handles=handles, labels=labels, loc="upper right") +ax.add_artist(data_legend) + +# Legends +p1 = plt.plot([], [], color="red", label=f"Mean: {np.round(mean_dh, 2)} m") +p2 = plt.plot([], [], color="red", linestyle="dashed", label=f"±STD: {np.round(std_dh, 2)} m") +p3 = plt.plot([], [], color="darkred", label=f"Median: {np.round(median_dh, 2)} m") +p4 = plt.plot([], [], color="darkred", linestyle="dashed", label=f"±NMAD: {np.round(nmad_dh, 2)} m") +first_legend = ax.legend(handles=[p[0] for p in [p1, p2, p3, p4]], loc="center right", title="All data") +ax.add_artist(first_legend) + +p1 = plt.plot([], [], color="gray", label=f"Mean: {np.round(mean_dh_in, 2)} m") +p2 = plt.plot([], [], color="gray", linestyle="dashed", label=f"±STD: {np.round(std_dh_in, 2)} m") +p3 = plt.plot([], [], color="black", label=f"Median: {np.round(median_dh_in, 2)} m") +p4 = plt.plot([], [], color="black", linestyle="dashed", label=f"±NMAD: {np.round(nmad_dh_in, 2)} m") +second_legend = ax.legend(handles=[p[0] for p in [p1, p2, p3, p4]], loc="center left", title="Inlier data") +ax.add_artist(second_legend) + +ax.set_title("Effect of outliers on estimating\ncentral tendency and dispersion") diff --git a/doc/source/code/robust_vario.py b/doc/source/code/robust_vario.py new file mode 100644 index 00000000..d0d82aa2 --- /dev/null +++ b/doc/source/code/robust_vario.py @@ -0,0 +1,63 @@ +"""Plot example of Dowd variogram as robust estimator for guide page.""" +import matplotlib.pyplot as plt +import numpy as np +from skgstat import OrdinaryKriging, Variogram + +import xdem + +# Inspired by test_variogram in skgstat +# Generate some random but spatially correlated data with a range of ~20 +np.random.seed(42) +c = np.random.default_rng(41).random((50, 2)) * 60 +np.random.seed(42) +v = np.random.default_rng(42).normal(10, 4, 50) + +V = Variogram(c, v).describe() +V["effective_range"] = 20 +OK = OrdinaryKriging(V, coordinates=c, values=v) + +c = np.array(np.meshgrid(np.arange(60), np.arange(60).T)).reshape(2, 60 * 60).T +dh = OK.transform(c) +dh = dh.reshape((60, 60)) + +# Add outliers +dh_outliers = dh.copy() +dh_outliers[0:6, 0:6] = -20 + +# Derive empirical variogram for Dowd and Matheron +df_inl_matheron = xdem.spatialstats.sample_empirical_variogram( + dh, estimator="matheron", gsd=1, random_state=42, subsample=2000 +) +df_inl_dowd = xdem.spatialstats.sample_empirical_variogram(dh, estimator="dowd", gsd=1, random_state=42, subsample=2000) + +df_all_matheron = xdem.spatialstats.sample_empirical_variogram( + dh_outliers, estimator="matheron", gsd=1, random_state=42, subsample=2000 +) +df_all_dowd = xdem.spatialstats.sample_empirical_variogram( + dh_outliers, estimator="dowd", gsd=1, random_state=42, subsample=2000 +) + +fig, ax = plt.subplots() + +ax.plot(df_inl_matheron.lags, df_inl_matheron.exp, color="black", marker="x") +ax.plot(df_inl_dowd.lags, df_inl_dowd.exp, color="black", linestyle="dashed", marker="x") +ax.plot(df_all_matheron.lags, df_all_matheron.exp, color="red", marker="x") +ax.plot(df_all_dowd.lags, df_all_dowd.exp, color="red", linestyle="dashed", marker="x") + + +p1 = plt.plot([], [], color="darkgrey", label="Matheron", marker="x") +p2 = plt.plot([], [], color="darkgrey", linestyle="dashed", label="Dowd", marker="x") +first_legend = ax.legend(handles=[p[0] for p in [p1, p2]], loc="lower right") +ax.add_artist(first_legend) + +p1 = plt.plot([], [], color="black", label="Inlier data") +p2 = plt.plot([], [], color="red", label="Inlier data + outlier data \n(1% of data replaced by 10 NMAD)") +second_legend = ax.legend(handles=[p[0] for p in [p1, p2]], loc="upper left") +ax.add_artist(second_legend) + +ax.set_xlabel("Spatial lag (m)") +ax.set_ylabel("Variance of elevation changes (m²)") +ax.set_ylim((0, 15)) +ax.set_xlim((0, 40)) + +ax.set_title("Effect of outliers on estimating\nspatial correlation") diff --git a/doc/source/code/spatialstats_heterosc_slope.py b/doc/source/code/spatialstats_heterosc_slope.py index d2d554cf..1854d4fb 100644 --- a/doc/source/code/spatialstats_heterosc_slope.py +++ b/doc/source/code/spatialstats_heterosc_slope.py @@ -26,4 +26,4 @@ list_var_bins=30, ) -xdem.spatialstats.plot_1d_binning(df_ns, "slope", "nmad", "Slope (degrees)", "Elevation error ($1\\sigma$, m)") +xdem.spatialstats.plot_1d_binning(df_ns, "slope", "nmad", "Slope (degrees)", "Random elevation error\n($1\\sigma$, m)") diff --git a/doc/source/code/spatialstats_stationarity_assumption.py b/doc/source/code/spatialstats_stationarity_assumption.py index 35d3d963..02e81900 100644 --- a/doc/source/code/spatialstats_stationarity_assumption.py +++ b/doc/source/code/spatialstats_stationarity_assumption.py @@ -23,7 +23,7 @@ # Stationary mean and variance ax1.plot(x, y_rand1, color="tab:blue", linewidth=0.5) -ax1.hlines(0, xmin=0, xmax=1, color="black", label="Mean", linestyle="dashed") +ax1.hlines(0, xmin=0, xmax=1, color="black", label="Mean") ax1.hlines( [-2 * sig, 2 * sig], xmin=0, @@ -45,7 +45,7 @@ # Non-stationary mean and stationary variance ax2.plot(x, y_rand2 + y_mean, color="tab:olive", linewidth=0.5) -ax2.plot(x, y_mean, color="black", label="Mean", linestyle="dashed") +ax2.plot(x, y_mean, color="black", label="Mean") ax2.plot(x, y_mean + 2 * sig, color="tab:gray", label="Dispersion (2$\\sigma$)", linestyle="dashed") ax2.plot(x, y_mean - 2 * sig, color="tab:gray", linestyle="dashed") ax2.set_xlim((0, 1)) @@ -61,7 +61,7 @@ # Stationary mean and non-stationary variance ax3.plot(x, y_rand3 * fac_y_std, color="tab:orange", linewidth=0.5) -ax3.hlines(0, xmin=0, xmax=1, color="black", label="Mean", linestyle="dashed") +ax3.hlines(0, xmin=0, xmax=1, color="black", label="Mean") ax3.plot(x, 2 * sig * fac_y_std, color="tab:gray", linestyle="dashed") ax3.plot(x, -2 * sig * fac_y_std, color="tab:gray", linestyle="dashed") ax3.set_xlim((0, 1)) diff --git a/doc/source/comparison.md b/doc/source/comparison.md deleted file mode 100644 index 39a69d55..00000000 --- a/doc/source/comparison.md +++ /dev/null @@ -1,127 +0,0 @@ ---- -file_format: mystnb -jupytext: - formats: md:myst - text_representation: - extension: .md - format_name: myst -kernelspec: - display_name: xdem-env - language: python - name: xdem ---- -# Differencing and volume change - -**Example data** - -Example data in this chapter are loaded as follows: - -```{code-cell} ipython3 -from datetime import datetime - -import geoutils as gu -import numpy as np - -import xdem - -# Load a reference DEM from 2009 -dem_2009 = xdem.DEM(xdem.examples.get_path("longyearbyen_ref_dem"), datetime=datetime(2009, 8, 1)) -# Load a DEM from 1990 -dem_1990 = xdem.DEM(xdem.examples.get_path("longyearbyen_tba_dem"), datetime=datetime(1990, 8, 1)) -# Load glacier outlines from 1990. -glaciers_1990 = gu.Vector(xdem.examples.get_path("longyearbyen_glacier_outlines")) -glaciers_2010 = gu.Vector(xdem.examples.get_path("longyearbyen_glacier_outlines_2010")) - -# Make a dictionary of glacier outlines where the key represents the associated date. -outlines = { - datetime(1990, 8, 1): glaciers_1990, - datetime(2009, 8, 1): glaciers_2010, -} -``` - -## dDEM interpolation - -There are many approaches to interpolate a dDEM. -A good comparison study for glaciers is McNabb et al., ([2019](https://doi.org/10.5194/tc-13-895-2019)). -So far, xDEM has three types of interpolation: - -- Linear spatial interpolation -- Local hypsometric interpolation -- Regional hypsometric interpolation - -Let's first create a {class}`xdem.ddem.dDEM` object to experiment on: - -```{code-cell} ipython3 -ddem = xdem.dDEM(raster=dem_2009 - dem_1990, start_time=dem_1990.datetime, end_time=dem_2009.datetime) - -# The example DEMs are void-free, so let's make some random voids. -# Introduce 50000 nans randomly throughout the dDEM. -mask = np.zeros_like(ddem.data, dtype=bool) -mask.ravel()[(np.random.choice(ddem.data.size, 50000, replace=False))] = True -ddem.set_mask(mask) -``` - -### Linear spatial interpolation - -Linear spatial interpolation (also often called bilinear interpolation) of dDEMs is arguably the simplest approach: voids are filled by a an average of the surrounding pixels values, weighted by their distance to the void pixel. - -```{code-cell} ipython3 -ddem.interpolate(method="linear") -``` - -```{eval-rst} -.. plot:: code/comparison_plot_spatial_interpolation.py - -``` - -### Local hypsometric interpolation - -This approach assumes that there is a relationship between the elevation and the elevation change in the dDEM, which is often the case for glaciers. -Elevation change gradients in late 1900s and 2000s on glaciers often have the signature of large melt in the lower parts, while the upper parts might be less negative, or even positive. -This relationship is strongly correlated for a specific glacier, and weakly correlated on regional scales (see [Regional hypsometric interpolation]). -With the local (glacier specific) hypsometric approach, elevation change gradients are estimated for each glacier separately. -This is simply a linear or polynomial model estimated with the dDEM and a reference DEM. -Then, voids are interpolated by replacing them with what "should be there" at that elevation, according to the model. - -```{code-cell} ipython3 -ddem.interpolate(method="local_hypsometric", reference_elevation=dem_2009, mask=glaciers_1990) -``` - -```{eval-rst} -.. plot:: code/comparison_plot_local_hypsometric_interpolation.py - -``` - -*Caption: The elevation dependent elevation change of Scott Turnerbreen on Svalbard from 1990--2009. The width of the bars indicate the standard deviation of the bin. The light blue background bars show the area distribution with elevation.* - -### Regional hypsometric interpolation - -Similarly to [Local hypsometric interpolation], the elevation change is assumed to be largely elevation-dependent. -With the regional approach (often also called "global"), elevation change gradients are estimated for all glaciers in an entire region, instead of estimating one by one. -This is advantageous in respect to areas where voids are frequent, as not even a single dDEM value has to exist on a glacier in order to reconstruct it. -Of course, the accuracy of such an averaging is much lower than if the local hypsometric approach is used (assuming it is possible). - -```{code-cell} ipython3 -ddem.interpolate(method="regional_hypsometric", reference_elevation=dem_2009, mask=glaciers_1990) -``` - -```{eval-rst} -.. plot:: code/comparison_plot_regional_hypsometric_interpolation.py - -``` - -*Caption: The regional elevation dependent elevation change in central Svalbard from 1990--2009. The width of the bars indicate the standard deviation of the bin. The light blue background bars show the area distribution with elevation.* - -## The DEMCollection object - -Keeping track of multiple DEMs can be difficult when many different extents, resolutions and CRSs are involved, and {class}`xdem.demcollection.DEMCollection` is xDEM's answer to make this simple. -We need metadata on the timing of these products. -The DEMs can be provided with the `datetime=` argument upon instantiation, or the attribute could be set later. -Multiple outlines are provided as a dictionary in the shape of `{datetime: outline}`. - -```{eval-rst} -.. minigallery:: xdem.DEMCollection - :add-heading: -``` - -[See here for the outline filtering syntax](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.query.html). diff --git a/doc/source/conf.py b/doc/source/conf.py index 12578468..af0066c4 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -17,6 +17,7 @@ sys.path.append(os.path.abspath("../..")) sys.path.append(os.path.abspath("../../xdem/")) sys.path.append(os.path.abspath("..")) +sys.path.insert(0, os.path.dirname(__file__)) from sphinx_gallery.sorting import ExplicitOrder @@ -25,8 +26,8 @@ # -- Project information ----------------------------------------------------- project = "xDEM" -copyright = "2021, Erik Mannerfelt, Romain Hugonnet, Amaury Dehecq and others" -author = "Erik Mannerfelt, Romain Hugonnet, Amaury Dehecq and others" +copyright = "2020, GlacioHack" +author = "xDEM contributors" # The full version, including alpha/beta/rc tags release = xdem.__version__ @@ -64,13 +65,14 @@ nb_kernel_rgx_aliases = {".*xdem.*": "python3"} nb_execution_raise_on_error = True # To fail documentation build on notebook execution error nb_execution_show_tb = True # To show full traceback on notebook execution error +nb_output_stderr = "warn" # To warn if an error is raised in a notebook cell (if intended, override to "show" in cell) # autosummary_generate = True intersphinx_mapping = { "python": ("https://docs.python.org/", None), - "geoutils": ("https://geoutils.readthedocs.io/en/latest", None), - "rasterio": ("https://rasterio.readthedocs.io/en/latest", None), + "geoutils": ("https://geoutils.readthedocs.io/en/stable", None), + "rasterio": ("https://rasterio.readthedocs.io/en/stable", None), "numpy": ("https://numpy.org/doc/stable", None), "matplotlib": ("https://matplotlib.org/stable", None), "pyproj": ("https://pyproj4.github.io/pyproj/stable", None), @@ -97,6 +99,11 @@ # os.path.join(os.path.dirname(__file__), "../", "../", "examples", "advanced")]) "remove_config_comments": True, # To remove comments such as sphinx-gallery-thumbnail-number (only works in code, not in text) + "reset_modules": ( + "matplotlib", + "sphinxext.reset_mpl", + ), + # To reset matplotlib for each gallery (and run custom function that fixes the default DPI) } extlinks = { @@ -105,7 +112,7 @@ } # For matplotlib figures generate with sphinx plot: (suffix, dpi) -plot_formats = [(".png", 400)] +plot_formats = [(".png", 600)] # To avoid long path names in inheritance diagrams inheritance_alias = { @@ -166,10 +173,14 @@ def setup(app): "notebook_interface": "jupyterlab", # For launching Binder in Jupyterlab to open MD files as notebook (downloads them otherwise) }, - "show_toc_level": 2, # To show more levels on the right sidebar TOC + "show_toc_level": 3, # To show more levels on the right sidebar TOC "logo": { "image_dark": "_static/xdem_logo_dark.svg", }, + "announcement": ( + "⚠️ Our 0.1 release refactored several early-development functions for long-term stability, " + 'to update your code see here. ⚠️' + ), } # For dark mode @@ -183,3 +194,7 @@ def setup(app): # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ["imgs", "_static"] # Commented out as we have no custom static data + +html_css_files = [ + "css/custom.css", +] diff --git a/doc/source/config.md b/doc/source/config.md new file mode 100644 index 00000000..7bb42533 --- /dev/null +++ b/doc/source/config.md @@ -0,0 +1,66 @@ +--- +file_format: mystnb +jupytext: + formats: md:myst + text_representation: + extension: .md + format_name: myst +kernelspec: + display_name: xdem-env + language: python + name: xdem +--- +# Configuration + +xDEM allows to configure the **verbosity level** and the **default behaviour of certain operations on elevation data** (such as +resampling method for reprojection, or pixel interpretation) directly at the package level. + +(verbosity)= +## Verbosity level + +To configure the verbosity level (or logging) for xDEM, you can utilize Python's built-in `logging` module. This module +has five levels of verbosity that are, in ascending order of severity: `DEBUG`, `INFO`, `WARNING`, `ERROR` and `CRITICAL`. +Setting a level prints output from that level and all other of higher severity. Logging also allows you to specify other aspects, +such as the destination of the output (console, file). + +```{important} +**The default verbosity level is `WARNING`, implying that `INFO` and `DEBUG` do not get printed**. Use the basic configuration +as below to setup an `INFO` level. +``` + +To specify the verbosity level, set up a logging configuration at the start of your script: + +```{code-cell} ipython3 +import logging + +# Basic configuration to simply print info +logging.basicConfig(level=logging.INFO) +``` + +Optionally, you can specify the logging date, format, and handlers (destinations). + +```{code-cell} ipython3 + +# More advanced configuration +logging.basicConfig( + level=logging.INFO, + format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', + datefmt='%Y-%m-%d %H:%M:%S', + handlers=[ + logging.FileHandler('app.log'), # Log messages will be saved to this file + logging.StreamHandler() # Log messages will also be printed to the console + ]) +``` + +The above configuration will log messages with a severity level of `INFO` and above, including timestamps, logger names, and +log levels in the output. You can change the logging level as needed. + + +## Raster–vector–point operations + +To change the configuration at the package level regarding operations for rasters, vectors and points, see +[GeoUtils' configuration](https://geoutils.readthedocs.io/en/stable/config.html). + +For instance, this allows to define a preferred resampling algorithm used when interpolating and reprojecting +(e.g., bilinear, cubic), or the default behaviour linked to pixel interpretation during point–raster comparison. +These changes will then apply to all your operations in xDEM, such as coregistration. diff --git a/doc/source/coregistration.md b/doc/source/coregistration.md index 687f2594..efc4e930 100644 --- a/doc/source/coregistration.md +++ b/doc/source/coregistration.md @@ -1,7 +1,7 @@ --- file_format: mystnb mystnb: - execution_timeout: 90 + execution_timeout: 150 jupytext: formats: md:myst text_representation: @@ -16,250 +16,473 @@ kernelspec: # Coregistration -Coregistration between DEMs correspond to aligning the digital elevation models in three dimensions. +xDEM implements a wide range of **coregistration algorithms and pipelines for 3-dimensional alignment** from the +peer-reviewed literature often tailored specifically to elevation data, aiming at correcting systematic elevation errors. -Transformations that can be described by a 3-dimensional [affine](https://en.wikipedia.org/wiki/Affine_transformation) function are included in coregistration methods. -Those transformations include for instance: +Two categories of alignment are generally differentiated: 3D [affine transformations](https://en.wikipedia.org/wiki/Affine_transformation) +described below, and other alignments that possibly rely on external variables, described in {ref}`biascorr`. -- vertical and horizontal translations, -- rotations, reflections, -- scalings. +Affine transformations can include vertical and horizontal translations, rotations and reflections, and scalings. -## Quick use +:::{admonition} More reading +:class: tip -Coregistrations are defined using either a single method or pipeline of {class}`~xdem.coreg.Coreg` methods, that are listed below. +Coregistration heavily relies on the use of static surfaces, which you can read more about on the **{ref}`static-surfaces` guide page**. -Performing the coregistration on a pair of DEM is done either by using {func}`xdem.DEM.coregister_3d` from the DEM that will be aligned, or -by specifying the {func}`xdem.coreg.Coreg.fit` and {func}`xdem.coreg.Coreg.apply` steps, which allows array inputs and -to apply the same fitted transformation to several objects (e.g., horizontal shift of both a stereo DEM and its ortho-image). +::: -## Introduction +## Quick use -Coregistration of a DEM is performed when it needs to be compared to a reference, but the DEM does not align with the reference perfectly. -There are many reasons for why this might be, for example: poor georeferencing, unknown coordinate system transforms or vertical datums, and instrument- or processing-induced distortion. +Coregistration pipelines are defined by combining {class}`~xdem.coreg.Coreg` objects: -A main principle of all coregistration approaches is the assumption that all or parts of the portrayed terrain are unchanged between the reference and the DEM to be aligned. -This *stable ground* can be extracted by masking out features that are assumed to be unstable. -Then, the DEM to be aligned is translated, rotated and/or bent to fit the stable surfaces of the reference DEM as well as possible. -In mountainous environments, unstable areas could be: glaciers, landslides, vegetation, dead-ice terrain and human structures. -Unless the entire terrain is assumed to be stable, a mask layer is required. +```{code-cell} ipython3 +:tags: [remove-cell] -There are multiple approaches for coregistration, and each have their own strengths and weaknesses. -Below is a summary of how each method works, and when it should (and should not) be used. +# To get a good resolution for displayed figures +from matplotlib import pyplot +pyplot.rcParams['figure.dpi'] = 600 +pyplot.rcParams['savefig.dpi'] = 600 +pyplot.rcParams['font.size'] = 9 # Default 10 is a bit too big for coregistration plots +``` -**Example data** +```{code-cell} ipython3 +import xdem -Examples are given using data close to Longyearbyen on Svalbard. These can be loaded as: +# Create a coregistration pipeline +my_coreg_pipeline = xdem.coreg.ICP() + xdem.coreg.NuthKaab() + +# Or use a single method +my_coreg_pipeline = xdem.coreg.NuthKaab() +``` + +Then, coregistering a pair of elevation data can be done by calling {func}`xdem.DEM.coregister_3d` from the DEM that should be aligned. ```{code-cell} ipython3 +:tags: [hide-cell] +:mystnb: +: code_prompt_show: "Show the code for opening example files" +: code_prompt_hide: "Hide the code for opening example files" + import geoutils as gu import numpy as np +import matplotlib.pyplot as plt -import xdem - -# Open a reference DEM from 2009 +# Open a reference and to-be-aligned DEM ref_dem = xdem.DEM(xdem.examples.get_path("longyearbyen_ref_dem")) -# Open a to-be-aligned DEM from 1990 -tba_dem = xdem.DEM(xdem.examples.get_path("longyearbyen_tba_dem")).reproject(ref_dem, silent=True) +tba_dem = xdem.DEM(xdem.examples.get_path("longyearbyen_tba_dem")) +``` -# Open glacier polygons from 1990, corresponding to unstable ground -glacier_outlines = gu.Vector(xdem.examples.get_path("longyearbyen_glacier_outlines")) -# Create an inlier mask of terrain outside the glacier polygons -inlier_mask = glacier_outlines.create_mask(ref_dem) +```{code-cell} ipython3 +# Coregister by calling the DEM method +aligned_dem = tba_dem.coregister_3d(ref_dem, my_coreg_pipeline) ``` -(coreg_object)= -## The {class}`~xdem.Coreg` object +Alternatively, the coregistration can be applied by calling {func}`~xdem.coreg.Coreg.fit_and_apply`, or sequentially +calling the {func}`~xdem.coreg.Coreg.fit` and {func}`~xdem.coreg.Coreg.apply` steps, +which allows a broader variety of arguments at each step, and re-using the same transformation to several objects +(e.g., horizontal shift of both a stereo DEM and its ortho-image). + +```{code-cell} ipython3 +# (Equivalent) Or use fit and apply +aligned_dem = my_coreg_pipeline.fit_and_apply(ref_dem, tba_dem) +``` -Each coregistration approach in xDEM inherits their interface from the {class}`~xdem.Coreg` class1. +Information about the coregistration inputs and outputs is summarized in {func}`~xdem.coreg.Coreg.info`. -```{margin} -1In a style resembling [scikit-learn's pipelines](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html#sklearn-linear-model-linearregression). +```{tip} +Often, an `inlier_mask` has to be passed to {func}`~xdem.coreg.Coreg.fit` to isolate static surfaces to utilize during coregistration (for instance removing vegetation, snow, glaciers). This mask can be easily derived using {func}`~geoutils.Vector.create_mask`. ``` -Each coregistration approach has the following methods: +## Summary of supported methods + +```{list-table} + :widths: 1 1 1 + :header-rows: 1 + :stub-columns: 1 + + * - Affine method + - Description + - Reference + * - {ref}`nuthkaab` + - Horizontal and vertical translations + - [Nuth and Kääb (2011)](https://doi.org/10.5194/tc-5-271-2011) + * - {ref}`dh-minimize` + - Horizontal and vertical translations + - N/A + * - {ref}`icp` + - Translation and rotations + - [Besl and McKay (1992)](https://doi.org/10.1117/12.57955) + * - {ref}`vshift` + - Vertical translation + - N/A +``` -- {func}`~xdem.Coreg.fit` for estimating the transform. -- {func}`~xdem.Coreg.apply` for applying the transform to a DEM. -- {func}`~xdem.Coreg.apply_pts` for applying the transform to a set of 3D points. -- {func}`~xdem.Coreg.to_matrix()` to convert the transform to a 4x4 transformation matrix, if possible. +## Using a coregistration -First, {func}`~xdem.Coreg.fit()` is called to estimate the transform, and then this transform can be used or exported using the subsequent methods. +(coreg_object)= +### The {class}`~xdem.coreg.Coreg` object + +Each coregistration method implemented in xDEM inherits their interface from the {class}`~xdem.coreg.Coreg` class1, and has the following methods: +- {func}`~xdem.coreg.Coreg.fit_and_apply` for estimating the transformation and applying it in one step, +- {func}`~xdem.coreg.Coreg.info` for plotting the metadata, including inputs and outputs of the coregistration. + +For more details on the input and output metadata stored by coregistration methods, see the **{ref}`coreg-meta` section**. + +The two above methods cover most uses. More specific methods are also available: +- {func}`~xdem.coreg.Coreg.fit` for estimating the transformation without applying it, +- {func}`~xdem.coreg.Coreg.apply` for applying an estimated transformation, +- {func}`~xdem.coreg.AffineCoreg.to_matrix` to convert the transform to a 4x4 transformation matrix, if possible, +- {func}`~xdem.coreg.AffineCoreg.from_matrix` to create a coregistration from a 4x4 transformation matrix. + +```{margin} +1In a style inspired by [scikit-learn's pipelines](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html#sklearn-linear-model-linearregression). +``` **Inheritance diagram of implemented coregistrations:** ```{eval-rst} -.. inheritance-diagram:: xdem.coreg.base xdem.coreg.affine xdem.coreg.biascorr +.. inheritance-diagram:: xdem.coreg.base.Coreg xdem.coreg.affine xdem.coreg.biascorr :top-classes: xdem.coreg.Coreg ``` -See {ref}`biascorr` for more information on non-rigid transformations ("bias corrections"). +**See {ref}`biascorr`** for more information on non-rigid transformations. + +## Coregistration methods -(coregistration-nuthkaab)= +```{important} +Below we **create misaligned elevation data to examplify the different methods** in relation to their type of affine transformation. -## Nuth and Kääb (2011) +See coregistration on real data in the **{ref}`examples-basic` and {ref}`examples-advanced` gallery examples**! +``` + +(nuthkaab)= +### Nuth and Kääb (2011) {class}`xdem.coreg.NuthKaab` -- **Performs:** translation and vertical shift. -- **Supports weights** (soon) -- **Recommended for:** Noisy data with low rotational differences. +- **Performs:** Horizontal and vertical shifts. +- **Supports weights:** Planned. +- **Pros:** Refines sub-pixel horizontal shifts accurately, with fast convergence. +- **Cons:** Diverges on flat terrain, as landforms are required to constrain the fit with aspect and slope. -The Nuth and Kääb ([2011](https://doi.org/10.5194/tc-5-271-2011)) coregistration approach is named after the paper that first implemented it. -It estimates translation iteratively by solving a cosine equation to model the direction at which the DEM is most likely offset. -First, the DEMs are compared to get a dDEM, and slope/aspect maps are created from the reference DEM. -Together, these three products contain the information about in which direction the offset is. -A cosine function is solved using these products to find the most probable offset direction, and an appropriate horizontal shift is applied to fix it. -This is an iterative process, and cosine functions with suggested shifts are applied in a loop, continuously refining the total offset. -The loop stops either when the maximum iteration limit is reached, or when the NMAD between the two products stops improving significantly. +The [Nuth and Kääb (2011)](https://doi.org/10.5194/tc-5-271-2011) coregistration approach estimates a horizontal +translation iteratively by solving a cosine equation between the terrain slope, aspect and the elevation differences. +The iteration stops if it reaches the maximum number of iteration limit, or if the iterative shift amplitude falls +below a specified tolerance. -```{eval-rst} -.. plot:: code/coregistration_plot_nuth_kaab.py +```{code-cell} ipython3 +:tags: [hide-cell] +:mystnb: +: code_prompt_show: "Show the code for adding a horizontal and vertical shift" +: code_prompt_hide: "Hide the code for adding a horizontal and vertical shift" + +x_shift = 30 +y_shift = 30 +z_shift = 10 +# Affine matrix for 3D transformation +matrix = np.array( + [ + [1, 0, 0, x_shift], + [0, 1, 0, y_shift], + [0, 0, 1, z_shift], + [0, 0, 0, 1], + ] +) +# We create misaligned elevation data +tba_dem_shifted = xdem.coreg.apply_matrix(ref_dem, matrix) ``` -*Caption: Demonstration of the Nuth and Kääb (2011) approach from Svalbard. Note that large improvements are seen, but nonlinear offsets still exist. The NMAD is calculated from the off-glacier surfaces.* +```{code-cell} ipython3 +# Define a coregistration based on the Nuth and Kääb (2011) method +nuth_kaab = xdem.coreg.NuthKaab() +# Fit to data and apply +aligned_dem = nuth_kaab.fit_and_apply(ref_dem, tba_dem_shifted) +``` + +```{code-cell} ipython3 +:tags: [hide-input] +:mystnb: +: code_prompt_show: "Show plotting code" +: code_prompt_hide: "Hide plotting code" + +# Plot before and after +f, ax = plt.subplots(1, 2) +ax[0].set_title("Before NK") +(tba_dem_shifted - ref_dem).plot(cmap='RdYlBu', vmin=-30, vmax=30, ax=ax[0]) +ax[1].set_title("After NK") +(aligned_dem - ref_dem).plot(cmap='RdYlBu', vmin=-30, vmax=30, ax=ax[1], cbar_title="Elevation differences (m)") +_ = ax[1].set_yticklabels([]) +plt.tight_layout() +``` -### Limitations +(dh-minimize)= +### Minimization of dh -The Nuth and Kääb (2011) coregistration approach does not take rotation into account. -Rotational corrections are often needed on for example satellite derived DEMs, so a complementary tool is required for a perfect fit. -1st or higher degree [Deramping] can be used for small rotational corrections. -For large rotations, the Nuth and Kääb (2011) approach will not work properly, and [ICP] is recommended instead. +{class}`xdem.coreg.DhMinimize` -### Example +- **Performs:** Horizontal and vertical shifts. +- **Supports weights:** Planned. +- **Pros:** Can be used to perform both local and global registration by tuning the minimizer. +- **Cons:** Sensitive to noise. -```{code-cell} ipython3 -from xdem import coreg +The minimization of elevation differences (or dh) coregistration approach estimates a horizontal +translation by minimizing any statistic on the elevation differences, typically their spread (defaults to the NMAD). -nuth_kaab = coreg.NuthKaab() -# Fit the data to a suitable x/y/z offset. -nuth_kaab.fit(ref_dem, tba_dem, inlier_mask=inlier_mask) -# Apply the transformation to the data (or any other data) -aligned_dem = nuth_kaab.apply(tba_dem) +```{code-cell} ipython3 +# Define a coregistration based on the dh minimization approach +dh_minimize = xdem.coreg.DhMinimize() +# Fit to data and apply +aligned_dem = dh_minimize.fit_and_apply(ref_dem, tba_dem_shifted) ``` -```{eval-rst} -.. minigallery:: xdem.coreg.NuthKaab - :add-heading: +```{code-cell} ipython3 +:tags: [hide-input] +:mystnb: +: code_prompt_show: "Show plotting code" +: code_prompt_hide: "Hide plotting code" + +# Plot before and after +f, ax = plt.subplots(1, 2) +ax[0].set_title("Before dh\nminimize") +(tba_dem_shifted - ref_dem).plot(cmap='RdYlBu', vmin=-30, vmax=30, ax=ax[0]) +ax[1].set_title("After dh\nminimize") +(aligned_dem - ref_dem).plot(cmap='RdYlBu', vmin=-30, vmax=30, ax=ax[1], cbar_title="Elevation differences (m)") +_ = ax[1].set_yticklabels([]) +plt.tight_layout() ``` -## Vertical shift +(vshift)= +### Vertical shift {class}`xdem.coreg.VerticalShift` -- **Performs:** (Weighted) Vertical shift using the mean, median or anything else -- **Supports weights** (soon) -- **Recommended for:** A precursor step to e.g. ICP. +- **Performs:** Vertical shifting using any custom function (mean, median, percentile). +- **Supports weights:** Planned. +- **Pros:** Useful to have as independent step to refine vertical alignment precisely as it is the most sensitive to outliers, by refining inliers and the central estimate function. +- **Cons**: Always needs to be combined with another approach. -``VerticalShift`` has very similar functionality to the z-component of `Nuth and Kääb (2011)`_. -This function is more customizable, for example allowing changing of the vertical shift algorithm (from weighted average to e.g. median). -It should also be faster, since it is a single function call. +The vertical shift coregistration is simply a shift based on an estimate of the mean elevation differences with customizable arguments. -### Limitations -Only performs vertical corrections, so it should be combined with another approach. +```{code-cell} ipython3 +:tags: [hide-cell] +:mystnb: +: code_prompt_show: "Show the code for adding a vertical shift" +: code_prompt_hide: "Hide the code for adding a vertical shift" -### Example +# Apply a vertical shift of 10 meters +tba_dem_vshifted = ref_dem + 10 +``` ```{code-cell} ipython3 -vshift = coreg.VerticalShift() -# Note that the transform argument is not needed, since it is a simple vertical correction. -vshift.fit(ref_dem, tba_dem, inlier_mask=inlier_mask) - -# Apply the vertical shift to a DEM -shifted_dem = vshift.apply(tba_dem) +# Define a coregistration object based on a vertical shift correction +vshift = xdem.coreg.VerticalShift(vshift_reduc_func=np.median) +# Fit and apply +aligned_dem = vshift.fit_and_apply(ref_dem, tba_dem_vshifted) +``` -# Use median shift instead -vshift_median = coreg.VerticalShift(vshift_reduc_func=np.median) +```{code-cell} ipython3 +:tags: [hide-input] +:mystnb: +: code_prompt_show: "Show plotting code" +: code_prompt_hide: "Hide plotting code" + +# Plot before and after +f, ax = plt.subplots(1, 2) +ax[0].set_title("Before vertical\nshift") +(tba_dem_vshifted - ref_dem).plot(cmap='RdYlBu', vmin=-30, vmax=30, ax=ax[0]) +ax[1].set_title("After vertical\nshift") +(aligned_dem - ref_dem).plot(cmap='RdYlBu', vmin=-30, vmax=30, ax=ax[1], cbar_title="Elevation differences (m)") +_ = ax[1].set_yticklabels([]) +plt.tight_layout() ``` -## ICP +(icp)= +### Iterative closest point {class}`xdem.coreg.ICP` -- **Performs:** Rigid transform correction (translation + rotation). -- **Does not support weights** -- **Recommended for:** Data with low noise and a high relative rotation. - -Iterative Closest Point (ICP) coregistration, which is based on [Besl and McKay (1992)](https://doi.org/10.1117/12.57955), works by iteratively moving the data until it fits the reference as well as possible. -The DEMs are read as point clouds; collections of points with X/Y/Z coordinates, and a nearest neighbour analysis is made between the reference and the data to be aligned. -After the distances are calculated, a rigid transform is estimated to minimise them. -The transform is attempted, and then distances calculated again. -If the distance is lowered, another rigid transform is estimated, and this is continued in a loop. -The loop stops if it reaches the max iteration limit or if the distances do not improve significantly between iterations. -The opencv implementation of ICP includes outlier removal, since extreme outliers will heavily interfere with the nearest neighbour distances. -This may improve results on noisy data significantly, but care should still be taken, as the risk of landing in [local minima](https://en.wikipedia.org/wiki/Maxima_and_minima) increases. +- **Performs:** Rigid transform transformation (3D translation + 3D rotation). +- **Does not support weights.** +- **Pros:** Efficient at estimating rotation and shifts simultaneously. +- **Cons:** Poor sub-pixel accuracy for horizontal shifts, sensitive to outliers, and runs slowly with large samples. -### Limitations +Iterative Closest Point (ICP) coregistration is an iterative point cloud registration method from [Besl and McKay (1992)](https://doi.org/10.1117/12.57955). It aims at iteratively minimizing the distance between closest neighbours by applying sequential rigid transformations. If DEMs are used as inputs, they are converted to point clouds. +As for Nuth and Kääb (2011), the iteration stops if it reaches the maximum number of iteration limit or if the iterative transformation amplitude falls below a specified tolerance. -ICP often works poorly on noisy data. -The outlier removal functionality of the opencv implementation is a step in the right direction, but it still does not compete with other coregistration approaches when the relative rotation is small. -In cases of high rotation, ICP is the only approach that can account for this properly, but results may need refinement, for example with the [Nuth and Kääb (2011)] approach. - -Due to the repeated nearest neighbour calculations, ICP is often the slowest coregistration approach out of the alternatives. - -### Example +ICP is currently based on [OpenCV's implementation](https://docs.opencv.org/4.x/dc/d9b/classcv_1_1ppf__match__3d_1_1ICP.html) (an optional dependency), which includes outlier removal arguments. This may improve results significantly on outlier-prone data, but care should still be taken, as the risk of landing in [local minima](https://en.wikipedia.org/wiki/Maxima_and_minima) increases. ```{code-cell} ipython3 -# Instantiate the object with default parameters -icp = coreg.ICP() -# Fit the data to a suitable transformation. -icp.fit(ref_dem, tba_dem, inlier_mask=inlier_mask) +:tags: [hide-cell] +:mystnb: +: code_prompt_show: "Show the code for adding a shift and rotation" +: code_prompt_hide: "Hide the code for adding a shift and rotation" + +# Apply a rotation of 0.2 degrees in X, 0.1 in Y and 0 in Z +e = np.deg2rad([0.2, 0.1, 0]) +# Add X/Y/Z shifts in meters +shifts = np.array([10, 20, 5]) +# Affine matrix for 3D transformation +import pytransform3d +matrix_rot = pytransform3d.rotations.matrix_from_euler(e, i=0, j=1, k=2, extrinsic=True) +matrix = np.diag(np.ones(4, dtype=float)) +matrix[:3, :3] = matrix_rot +matrix[:3, 3] = shifts + +centroid = [ref_dem.bounds.left + 5000, ref_dem.bounds.top - 2000, np.median(ref_dem)] +# We create misaligned elevation data +tba_dem_shifted_rotated = xdem.coreg.apply_matrix(ref_dem, matrix, centroid=centroid) +``` -# Apply the transformation matrix to the data (or any other data) -aligned_dem = icp.apply(tba_dem) +```{code-cell} ipython3 +# Define a coregistration based on ICP +icp = xdem.coreg.ICP() +# Fit to data and apply +aligned_dem = icp.fit_and_apply(ref_dem, tba_dem_shifted_rotated) ``` -```{eval-rst} -.. minigallery:: xdem.coreg.ICP - :add-heading: +```{code-cell} ipython3 +:tags: [hide-input] +:mystnb: +: code_prompt_show: "Show plotting code" +: code_prompt_hide: "Hide plotting code" + +# Plot before and after +f, ax = plt.subplots(1, 2) +ax[0].set_title("Before ICP") +(tba_dem_shifted_rotated - ref_dem).plot(cmap='RdYlBu', vmin=-30, vmax=30, ax=ax[0]) +ax[1].set_title("After ICP") +(aligned_dem - ref_dem).plot(cmap='RdYlBu', vmin=-30, vmax=30, ax=ax[1], cbar_title="Elevation differences (m)") +_ = ax[1].set_yticklabels([]) +plt.tight_layout() ``` -## The CoregPipeline object +## Building coregistration pipelines -{class}`xdem.coreg.CoregPipeline` +### The {class}`~xdem.coreg.CoregPipeline` object -Often, more than one coregistration approach is necessary to obtain the best results. -For example, ICP works poorly with large initial biases, so a `CoregPipeline` can be constructed to perform both sequentially: +Often, more than one coregistration approach is necessary to obtain the best results, and several need to be combined +sequentially. A {class}`~xdem.coreg.CoregPipeline` can be constructed for this: ```{code-cell} ipython3 -pipeline = coreg.CoregPipeline([coreg.BiasCorr(), coreg.ICP()]) - -# pipeline.fit(... # etc. +# We can list sequential coregistration methods to apply +pipeline = xdem.coreg.CoregPipeline([xdem.coreg.ICP(), xdem.coreg.NuthKaab()]) -# This works identically to the syntax above -pipeline2 = coreg.BiasCorr() + coreg.ICP() +# Or sum them, which works identically as the syntax above +pipeline = xdem.coreg.ICP() + xdem.coreg.NuthKaab() ``` -The `CoregPipeline` object exposes the same interface as the `Coreg` object. -The results of a pipeline can be used in other programs by exporting the combined transformation matrix using {func}`xdem.coreg.CoregPipeline.to_matrix`. +The {class}`~xdem.coreg.CoregPipeline` object exposes the same interface as the {class}`~xdem.coreg.Coreg` object. +The results of a pipeline can be used in other programs by exporting the combined transformation matrix using {func}`~xdem.coreg.Coreg.to_matrix`. -This class is heavily inspired by the [Pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.Pipeline.html#sklearn-pipeline-pipeline) and [make_pipeline()](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html#sklearn.pipeline.make_pipeline) functionalities in `scikit-learn`. +```{margin} +2Here again, this class is heavily inspired by SciKit-Learn's [Pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.Pipeline.html#sklearn-pipeline-pipeline) and [make_pipeline()](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html#sklearn.pipeline.make_pipeline) functionalities. +``` -```{eval-rst} -.. minigallery:: xdem.coreg.CoregPipeline - :add-heading: +```{code-cell} ipython3 +# Fit to data and apply the pipeline of ICP + Nuth and Kääb +aligned_dem = pipeline.fit_and_apply(ref_dem, tba_dem_shifted_rotated) ``` -### Suggested pipelines +```{code-cell} ipython3 +:tags: [hide-input] +:mystnb: +: code_prompt_show: "Show plotting code" +: code_prompt_hide: "Hide plotting code" + +# Plot before and after +f, ax = plt.subplots(1, 2) +ax[0].set_title("Before ICP + NK") +(tba_dem_shifted_rotated - ref_dem).plot(cmap='RdYlBu', vmin=-30, vmax=30, ax=ax[0]) +ax[1].set_title("After ICP + NK") +(aligned_dem - ref_dem).plot(cmap='RdYlBu', vmin=-30, vmax=30, ax=ax[1], cbar_title="Elevation differences (m)") +_ = ax[1].set_yticklabels([]) +plt.tight_layout() +``` -For sub-pixel accuracy, the [Nuth and Kääb (2011)] approach should almost always be used. +### Recommended pipelines + +To ensure sub-pixel accuracy, the [Nuth and Kääb (2011)](https://doi.org/10.5194/tc-5-271-2011) coregistration should almost always be used as a final step. The approach does not account for rotations in the dataset, however, so a combination is often necessary. -For small rotations, a 1st degree deramp could be used: +For small rotations, a 1st degree deramp can be used in combination: ```{code-cell} ipython3 -coreg.NuthKaab() + coreg.Deramp(poly_order=1) +pipeline = xdem.coreg.NuthKaab() + xdem.coreg.Deramp(poly_order=1) ``` -For larger rotations, ICP is the only reliable approach (but does not outperform in sub-pixel accuracy): +For larger rotations, ICP can be used instead: ```{code-cell} ipython3 -coreg.ICP() + coreg.NuthKaab() +pipeline = xdem.coreg.ICP() + xdem.coreg.NuthKaab() ``` -For large shifts, rotations and high amounts of noise: +Additionally, ICP tends to fail with large initial vertical differences, so a preliminary vertical shifting can be used: ```{code-cell} ipython3 -coreg.BiasCorr() + coreg.ICP() + coreg.NuthKaab() +pipeline = xdem.coreg.VerticalShift() + xdem.coreg.ICP() + xdem.coreg.NuthKaab() ``` + +(coreg-meta)= +## Coregistration metadata + +The metadata surrounding a coregistration method, which can be displayed by {func}`~xdem.coreg.Coreg.info`, is stored in +the {attr}`~xdem.coreg.Coreg.meta` nested dictionary. +This metadata is divided into **inputs** and **outputs**. Input metadata corresponds to what arguments are +used when initializing a {class}`~xdem.coreg.Coreg` object, while output metadata are created during the call to +{func}`~xdem.coreg.Coreg.fit`. Together, they allow to apply the transformation during the +{func}`~xdem.coreg.Coreg.apply` step of the coregistration. + +```{code-cell} ipython3 +# Example of metadata info after fitting +my_coreg_pipeline.info() +``` + +For both **inputs** and **outputs**, four consistent categories of metadata are defined. + +**Note:** Some metadata, such as the parameters `fit_or_bin` and `fit_func` described below, are pre-defined for affine coregistration methods and cannot be modified. They only take user-specified value for {ref}`biascorr`. + +**1. Randomization metadata (common to all)**: + +- An input `subsample` to define the subsample size of valid data to use in all methods (recommended for performance), +- An input `random_state` to define the random seed for reproducibility of the subsampling (and potentially other random aspects such as optimizers), +- An output `subsample_final` that stores the final subsample size used, which can be smaller than requested depending on the amount of valid data intersecting the two elevation datasets. + +**2. Fitting and binning metadata (common to nearly all methods)**: + +- An input `fit_or_bin` to either fit a parametric model by passing **"fit"**, perform an empirical binning by passing **"bin"**, or to fit a parametric model to the binning with **"bin_and_fit" (only "fit" or "bin_and_fit" possible for affine methods)**, +- An input `fit_func` to pass any parametric function to fit to the bias **(pre-defined for affine methods)**, +- An input `fit_optimizer` to pass any optimizer function to perform the fit minimization, +- An input `bin_sizes` to pass the size or edges of the bins for each variable, +- An input `bin_statistic` to pass the statistic to compute in each bin, +- An input `bin_apply_method` to pass the method to apply the binning for correction, +- An output `fit_params` that stores the optimized parameters for `fit_func`, +- An output `fit_perr` that stores the error of optimized parameters (only for default `fit_optimizer`), +- An output `bin_dataframe` that stores the dataframe of binned statistics. + +**3. Iteration metadata (common to all iterative methods)**: + +- An input `max_iterations` to define the maximum number of iterations at which to stop the method, +- An input `tolerance` to define the tolerance at which to stop iterations (tolerance unit defined in method description), +- An output `last_iteration` that stores the last iteration of the method, +- An output `all_tolerances` that stores the tolerances computed at each iteration. + +**4. Affine metadata (common to all affine methods)**: + +- An output `matrix` that stores the estimated affine matrix, +- An output `centroid` that stores the centroid coordinates with which to apply the affine transformation, +- Outputs `shift_x`, `shift_y` and `shift_z` that store the easting, northing and vertical offsets, respectively. + +```{tip} +In xDEM, you can extract the translations and rotations of an affine matrix using {class}`xdem.coreg.AffineCoreg.to_translations` and +{class}`xdem.coreg.AffineCoreg.to_rotations`. + +To further manipulate affine matrices, see the [documentation of pytransform3d](https://dfki-ric.github.io/pytransform3d/rotations.html). +``` + +**5. Specific metadata (only for certain methods)**: + +These metadata are only inputs specific to a given method, outlined in the method description. + +For instance, for {class}`xdem.coreg.Deramp`, an input `poly_order` to define the polynomial order used for the fit, and +for {class}`xdem.coreg.DirectionalBias`, an input `angle` to define the angle at which to do the directional correction. diff --git a/doc/source/dem_class.md b/doc/source/dem_class.md index 6d2bf07b..3abb1c77 100644 --- a/doc/source/dem_class.md +++ b/doc/source/dem_class.md @@ -36,6 +36,14 @@ The complete list of {class}`~geoutils.Raster` attributes and methods can be fou A {class}`~xdem.DEM` is opened by instantiating with either a {class}`str`, a {class}`pathlib.Path`, a {class}`rasterio.io.DatasetReader` or a {class}`rasterio.io.MemoryFile`, as for a {class}`~geoutils.Raster`. +```{code-cell} ipython3 +:tags: [remove-cell] + +# To get a good resolution for displayed figures +from matplotlib import pyplot +pyplot.rcParams['figure.dpi'] = 400 +pyplot.rcParams['savefig.dpi'] = 400 +``` ```{code-cell} ipython3 import xdem @@ -81,9 +89,12 @@ import geoutils as gu fn_glacier_outlines = xdem.examples.get_path("longyearbyen_glacier_outlines") vect_gla = gu.Vector(fn_glacier_outlines) +# Crop outlines to those intersecting the DEM +vect_gla = vect_gla.crop(dem) + # Plot the DEM and the vector file dem.plot(cmap="terrain", cbar_title="Elevation (m)") -vect_gla.plot(dem) # We pass the DEM as reference for the plot CRS/extent +vect_gla.plot(dem, ec="k", fc="none") # We pass the DEM as reference for the plot CRS ``` ## Vertical referencing @@ -118,7 +129,7 @@ by calling the function corresponding to the attribute name such as {func}`~xdem ```{code-cell} ipython3 # Derive slope using the Zevenberg and Thorne (1987) method slope = dem.slope(method="ZevenbergThorne") -slope.plot(cmap="Reds", cbar_title="Slope (degrees)") +slope.plot(cmap="Reds", cbar_title="Slope (°)") ``` ```{note} @@ -140,7 +151,7 @@ dem_tba = xdem.DEM(filename_tba) dem_tba_coreg = dem_tba.coregister_3d(dem) # Plot the elevation change of the DEM due to coregistration -dh_tba = dem_tba - dem_tba_coreg.reproject(dem_tba) +dh_tba = dem_tba - dem_tba_coreg.reproject(dem_tba, silent=True) dh_tba.plot(cmap="Spectral", cbar_title="Elevation change due to coreg (m)") ``` @@ -157,10 +168,17 @@ stable terrain as a proxy. ```{code-cell} ipython3 # Estimate elevation uncertainty assuming both DEMs have similar precision -sig_dem, rho_sig = dem.estimate_uncertainty(dem_tba_coreg, precision_of_other="same") +sig_dem, rho_sig = dem.estimate_uncertainty(dem_tba_coreg, precision_of_other="same", random_state=42) # The error map variability is estimated from slope and curvature by default -sig_dem.plot(cmap="Purples", cbar_title=r"Error in elevation (1$\sigma$, m)") +sig_dem.plot(cmap="Purples", cbar_title=r"Random error in elevation (1$\sigma$, m)") # The spatial correlation function represents how much errors are correlated at a certain distance -rho_sig(1000) # Correlation at 1 km +print("Elevation errors at a distance of 1 km are correlated at {:.2f} %.".format(rho_sig(1000) * 100)) +``` + +```{note} +We use `random_state` to ensure a fixed randomized output. It is **only necessary if you need your results to be exactly reproductible**. + +For more details on quantifying random and structured errors, see the {ref}`uncertainty` page. +``` diff --git a/doc/source/ecosystem.md b/doc/source/ecosystem.md new file mode 100644 index 00000000..44a3391e --- /dev/null +++ b/doc/source/ecosystem.md @@ -0,0 +1,37 @@ +(ecosystem)= + +# Ecosystem + +xDEM is but a single tool among a large landscape of open tools for geospatial elevation analysis! Below is a list of +other **tools that you might find useful to combine with xDEM**, in particular for retrieving elevation data or to perform complementary analysis. + +```{seealso} +Tools listed below only relate to elevation data. To analyze georeferenced rasters, vectors and point cloud data, +check out **xDEM's sister-package [GeoUtils](https://geoutils.readthedocs.io/)**. +``` +## Python + +Great Python tools for **pre-processing and retrieving elevation data**: +- [SlideRule](https://slideruleearth.io/) to pre-process and retrieve high-resolution elevation data in the cloud, including in particular [ICESat-2](https://icesat-2.gsfc.nasa.gov/) and [GEDI](https://gedi.umd.edu/), +- [pDEMtools](https://pdemtools.readthedocs.io/en/latest/) to pre-process and retrieve [ArcticDEM](https://www.pgc.umn.edu/data/arcticdem/) and [REMA](https://www.pgc.umn.edu/data/rema/) high-resolution DEMs available in polar regions, +- [icepyx](https://icepyx.readthedocs.io/en/latest/) to retrieve ICESat-2 data. + +Complementary Python tools to **analyze elevation data** are for instance: +- [PDAL](https://pdal.io/en/latest/) for working with dense elevation point clouds, +- [demcompare](https://demcompare.readthedocs.io/en/stable/) to compare two DEMs together, +- [RichDEM](https://richdem.readthedocs.io/en/latest/) for in-depth terrain analysis, with a large range of method including many relevant to hydrology. + +## Julia + +If you are working in Julia, the [Geomorphometry](https://github.com/Deltares/Geomorphometry.jl) package provides a +wide range of terrain analysis for elevation data. + +## R + +If you are working in R, the [MultiscaleDTM](https://ailich.github.io/MultiscaleDTM/) package provides modular tools +for terrain analysis at multiple scales! + +## Other community resources + +Whether to retrieve data among their wide range of open datasets, or to dive into their other resources, be sure to check out the +amazing [OpenTopography](https://opentopography.org/) and [OpenAltimetry](https://openaltimetry.earthdatacloud.nasa.gov/data/) efforts! diff --git a/doc/source/elevation_intricacies.md b/doc/source/elevation_intricacies.md new file mode 100644 index 00000000..511972f8 --- /dev/null +++ b/doc/source/elevation_intricacies.md @@ -0,0 +1,91 @@ +(elevation-intricacies)= +# Georeferencing intricacies + +Georeferenced elevation data comes in different types and relies on different attributes than typical georeferenced +data, which **can make quantitative analysis more delicate**. + +Below, we summarize these aspects to help grasp a general understanding of the intricacies of elevation data. + +## Types of elevation data + +There are a number of types of elevation data: + +1. **Digital elevation models (DEMs)** are a type of raster, i.e. defined on a regular grid with each grid cell representing an elevation. Additionally, DEMs are rasters than are almost always chosen to be single-band, and floating-type to accurately represent elevation in meters, +2. **Elevation point clouds** are simple point clouds with XYZ coordinates, often with a list of attributes attached to each point, +3. **Contour or breaklines** are 2D or 3D vector lines representing elevation. **They are usually not used for analysis**, instead for visualisation, +4. **Elevation triangle irregular networks (TINs)** are a triangle mesh representing the continuous elevation surface. **They are usually not used for analysis**, instead in-memory for visualization or for conversion from an elevation point cloud to a DEM. + +```{note} +xDEM supports the two elevation data types primarily used for quantitative analysis: the {class}`~xdem.DEM` and the elevation point cloud (currently as a {class}`~geopandas.GeoDataFrame` for some operations, more soon!). + +See the **{ref}`elevation-objects` features pages** for more details. +``` + +```{eval-rst} +.. plot:: code/intricacies_datatypes.py + :width: 90% +``` + + +Additionally, there are a critical differences for elevation point clouds depending on point density: +- **Sparse elevation point clouds** (e.g., altimetry) are generally stored as small vector-type datasets (e.g., SHP). Due to their sparsity, for subsequent analysis, they are rarely gridded into a DEM, and instead compared with DEMs at the point cloud coordinates by interpolation of the DEM, +- **Dense elevation point clouds** (e.g., lidar) are large datasets generally stored in specific formats (LAS). Due to their high density, they are often gridded into DEMs by triangular interpolation of the point cloud. + +```{note} +For point–DEM interfacing, xDEM inherit functionalities from [GeoUtils's point–raster interfacing](https://geoutils.readthedocs.io/en/stable/raster_vector_point.html#rasterpoint-operations). +See for instance {class}`xdem.DEM.interp_points`. +``` + +## A third georeferenced dimension + +Elevation data is unique among georeferenced data, in the sense that it **adds a third vertical dimension that also requires georeferencing**. + +For this purpose, elevation data is related to a vertical [coordinate reference system (CRS)](https://en.wikipedia.org/wiki/Spatial_reference_system). A vertical CRS is a **1D, often gravity-related, coordinate reference system of surface elevation** (or height), used to expand a 2D horizontal CRS to a 3D CRS. + +There are two types of models of surface elevation: +- **Ellipsoids** model the surface of the Earth as a three-dimensional shape created from a two-dimensional ellipse, which are already used by 2D CRS, +- **Geoids** model the surface of the Earth based on its gravity field (approximately mean sea-level). Since Earth's mass is not uniform, and the direction of gravity slightly changes, the shape of a geoid is irregular, + +which are directly associated with two types of 3D CRSs: +- **Ellipsoidal heights** CRSs, that are simply 2D CRS promoted to 3D by explicitly adding an elevation axis to the ellipsoid used by the 2D CRS, +- **Geoid heights** CRSs, that are a compound of a 2D CRS and a vertical CRS (2D + 1D), where the vertical CRS of the geoid is added relative to the ellipsoid. + + +Problematically, until the early 2020s, **most elevation data was distributed without a 3D CRS in its metadata**. The vertical reference was generally provided separately, in a user guide or website of the data provider. +Therefore, it is important to either define your vertical CRSs manually before any analysis, or double-check that all your datasets are on the same vertical reference. + +```{note} +For this reason, xDEM includes {ref}`tools to easily set a vertical CRS`. See for instance {class}`xdem.DEM.set_vcrs`. +``` + +## The interpretation of pixel value for DEMs + +Among the elevation data types listed above, DEMs are the only gridded dataset. While gridded datasets have become +ubiquitous for quantitative anaysis, they also suffer from a problem of pixel interpretation. + +Pixel interpretation describes how a grid cell value should be interpreted, and has two definitions: +- **“Area” (the most common)** where the value represents a sampling over the region of the pixel (and typically refers to the upper-left corner coordinate), or +- **“Point”** where the value relates to a point sample (and typically refers to the center of the pixel). + +**This interpretation difference disproportionally affects DEMs** as they are the primary type of gridded data associated with the least-common "Point" interpretation, and often rely on auxiliary point data such as ground-control points (GCPs). + +**In different software packages, gridded data are interpreted differently**, resulting in (undesirable) half-pixel shifts during analysis. Additionally, different storage formats have different standards for grid coordinate interpretation, also sometimes resulting in a half-pixel shift (e.g., GeoTIFF versus netCDF). + +```{note} +To perform consistent pixel interpretation of DEMs, xDEM relies on [the raster pixel interpretation of GeoUtils, which mirrors GDAL's GCP behaviour](https://geoutils.readthedocs.io/en/stable/georeferencing.html#pixel-interpretation-only-for-rasters). + +This means that, by default, pixel interpretation induces a half-pixel shift during DEM–point interfacing for a “Point” interpretation, but only raises a warning for DEM–DEM operations if interpretations differ. +This default behaviour can be modified at the package-level by using [GeoUtils’ configuration](https://geoutils.readthedocs.io/en/stable/config.html). + +See {class}`xdem.DEM.set_area_or_point` to re-set the pixel interpretation of your DEM. +``` + +---------------- + +:::{admonition} References and more reading +:class: tip + +For more information about **vertical referencing**, see [educational material from the National Geodetic Survey](https://geodesy.noaa.gov/datums/index.shtml) and [NOAA's VDatum tutorials](https://vdatum.noaa.gov/docs/datums.html). + +For more information about **pixel interpretation**, see [GIS StackExchange discussions](https://gis.stackexchange.com/questions/122670/is-there-a-standard-for-the-coordinates-of-pixels-in-georeferenced-rasters) and [GeoTIFF standard from the Open Geospatial Consortium](https://docs.ogc.org/is/19-008r4/19-008r4.html#_requirements_class_gtrastertypegeokey). +::: diff --git a/doc/source/elevation_point_cloud.md b/doc/source/elevation_point_cloud.md index 21b73504..636f6232 100644 --- a/doc/source/elevation_point_cloud.md +++ b/doc/source/elevation_point_cloud.md @@ -14,4 +14,7 @@ kernelspec: # The elevation point cloud ({class}`~xdem.EPC`) -In construction, planned for 2024. +In construction, planned for 2025. + +However, **elevation point clouds are already supported for coregistration and bias correction** by passing a {class}`geopandas.GeoDataFrame` +associated to an elevation column name argument `z_name` to {func}`~xdem.coreg.Coreg.fit_and_apply`. diff --git a/doc/source/gapfill.md b/doc/source/gapfill.md new file mode 100644 index 00000000..46bfba04 --- /dev/null +++ b/doc/source/gapfill.md @@ -0,0 +1,271 @@ +--- +file_format: mystnb +jupytext: + formats: md:myst + text_representation: + extension: .md + format_name: myst +kernelspec: + display_name: xdem-env + language: python + name: xdem +--- +(interpolation)= +# Gap-filling + +xDEM contains routines to gap-fill elevation data or elevation differences depending on the type of terrain. + +```{important} +Most of the approaches below are application-specific (e.g., glaciers) and might be moved to a separate package +in future releases. +``` + +So far, xDEM has three types of gap-filling methods: + +- Inverse-distance weighting interpolation, +- Local hypsometric interpolation (only relevant for elevation differences and glacier applications), +- Regional hypsometric interpolation (also for glaciers). + +The last two methods are described in [McNabb et al. (2019)](https://doi.org/10.5194/tc-13-895-2019). + +```{code-cell} ipython3 +:tags: [remove-cell] + +# To get a good resolution for displayed figures +from matplotlib import pyplot +pyplot.rcParams['figure.dpi'] = 600 +pyplot.rcParams['savefig.dpi'] = 600 +pyplot.rcParams['font.size'] = 9 # Default 10 is a bit too big for coregistration plots +``` + +```{code-cell} ipython3 +:tags: [hide-cell] +:mystnb: +: code_prompt_show: "Show the code for opening example data" +: code_prompt_hide: "Hide the code for opening example data" + +from datetime import datetime + +import geoutils as gu +import numpy as np +import matplotlib.pyplot as plt + +import xdem + +# Load a reference DEM from 2009 +dem_2009 = xdem.DEM(xdem.examples.get_path("longyearbyen_ref_dem"), datetime=datetime(2009, 8, 1)) +# Load a DEM from 1990 +dem_1990 = xdem.DEM(xdem.examples.get_path("longyearbyen_tba_dem"), datetime=datetime(1990, 8, 1)) +# Load glacier outlines from 1990. +glaciers_1990 = gu.Vector(xdem.examples.get_path("longyearbyen_glacier_outlines")) +glaciers_2010 = gu.Vector(xdem.examples.get_path("longyearbyen_glacier_outlines_2010")) + +# Make a dictionary of glacier outlines where the key represents the associated date. +outlines = { + datetime(1990, 8, 1): glaciers_1990, + datetime(2009, 8, 1): glaciers_2010, +} + +# Cropping DEMs to a smaller extent to visualize the gap-filling better +bounds = (dem_2009.bounds.left, dem_2009.bounds.bottom, + dem_2009.bounds.left + 200 * dem_2009.res[0], dem_2009.bounds.bottom + 150 * dem_2009.res[1]) +dem_2009 = dem_2009.crop(bounds) +dem_1990 = dem_1990.crop(bounds) +``` + +We create a difference of DEMs object {class}`xdem.ddem.dDEM` to experiment on: + +```{code-cell} ipython3 +ddem = xdem.dDEM(raster=dem_2009 - dem_1990, start_time=dem_1990.datetime, end_time=dem_2009.datetime) + +# The example DEMs are void-free, so let's make some random voids. +# Introduce a fifth of nans randomly throughout the dDEM. +mask = np.zeros_like(ddem.data, dtype=bool) +mask.ravel()[(np.random.choice(ddem.data.size, int(ddem.data.size/5), replace=False))] = True +ddem.set_mask(mask) +``` + +## Inverse-distance weighting interpolation + +Inverse-distance weighting (IDW) interpolation of elevation differences is arguably the simplest approach: voids are filled by a weighted-mean of the surrounding pixels values, with weight inversely proportional to their distance to the void pixel. + +```{code-cell} ipython3 +ddem_idw = ddem.interpolate(method="idw") +``` + +```{code-cell} ipython3 +:tags: [hide-input] +:mystnb: +: code_prompt_show: "Show plotting code" +: code_prompt_hide: "Hide plotting code" + +ddem_idw = ddem.copy(new_array=ddem_idw) + +# Plot before and after +f, ax = plt.subplots(1, 2) +ax[0].set_title("Before IDW\ngap-filling") +ddem.plot(cmap='RdYlBu', vmin=-20, vmax=20, ax=ax[0]) +ax[1].set_title("After IDW\ngap-filling") +ddem_idw.plot(cmap='RdYlBu', vmin=-20, vmax=20, ax=ax[1], cbar_title="Elevation differences (m)") +_ = ax[1].set_yticklabels([]) +``` + +## Local hypsometric interpolation + +This approach assumes that there is a relationship between the elevation and the elevation change in the dDEM, which is often the case for glaciers. +Elevation change gradients in late 1900s and 2000s on glaciers often have the signature of large thinning in the lower parts, while the upper parts might be less negative, or even positive. +This relationship is strongly correlated for a specific glacier, and weakly correlated on regional scales. +With the local (glacier specific) hypsometric approach, elevation change gradients are estimated for each glacier separately. +This is simply a linear or polynomial model estimated with the dDEM and a reference DEM. +Then, voids are interpolated by replacing them with what "should be there" at that elevation, according to the model. + +```{code-cell} ipython3 +ddem_localhyps = ddem.interpolate(method="local_hypsometric", reference_elevation=dem_2009, mask=glaciers_1990) +``` + +```{code-cell} ipython3 +:tags: [hide-input] +:mystnb: +: code_prompt_show: "Show plotting code" +: code_prompt_hide: "Hide plotting code" + +ddem_localhyps = ddem.copy(new_array=ddem_localhyps) + +# Plot before and after +f, ax = plt.subplots(1, 2) +ax[0].set_title("Before local\nhypsometric\ngap-filling") +ddem.plot(cmap='RdYlBu', vmin=-20, vmax=20, ax=ax[0]) +ax[1].set_title("After local\nhypsometric\ngap-filling") +ddem_localhyps.plot(cmap='RdYlBu', vmin=-20, vmax=20, ax=ax[1], cbar_title="Elevation differences (m)") +_ = ax[1].set_yticklabels([]) +``` + +Where the binning can be visualized as such: + +```{code-cell} ipython3 +:tags: [hide-input] +:mystnb: +: code_prompt_show: "Show code for hypsometric binning" +: code_prompt_hide: "Hide code for hypsometric binning" + +dem_2009 = xdem.DEM(xdem.examples.get_path("longyearbyen_ref_dem")) +dem_1990 = xdem.DEM(xdem.examples.get_path("longyearbyen_tba_dem")) +outlines_1990 = gu.Vector(xdem.examples.get_path("longyearbyen_glacier_outlines")) + +ddem = xdem.dDEM(dem_2009 - dem_1990, start_time=np.datetime64("1990-08-01"), end_time=np.datetime64("2009-08-01")) + +ddem.data /= 2009 - 1990 + +scott_1990 = outlines_1990.query("NAME == 'Scott Turnerbreen'") +mask = scott_1990.create_mask(ddem) + +ddem_bins = xdem.volume.hypsometric_binning(ddem[mask], dem_2009[mask]) +stds = xdem.volume.hypsometric_binning(ddem[mask], dem_2009[mask], aggregation_function=np.std) + +plt.figure(figsize=(8, 8)) +plt.grid(zorder=0) +plt.plot(ddem_bins["value"], ddem_bins.index.mid, linestyle="--", zorder=1) + +plt.barh( + y=ddem_bins.index.mid, + width=stds["value"], + left=ddem_bins["value"] - stds["value"] / 2, + height=(ddem_bins.index.left - ddem_bins.index.right) * 1, + zorder=2, + edgecolor="black", +) +for bin in ddem_bins.index: + plt.vlines(ddem_bins.loc[bin, "value"], bin.left, bin.right, color="black", zorder=3) + +plt.xlabel("Elevation change (m / a)") +plt.twiny() +plt.barh( + y=ddem_bins.index.mid, + width=ddem_bins["count"] / ddem_bins["count"].sum(), + left=0, + height=(ddem_bins.index.left - ddem_bins.index.right) * 1, + zorder=2, + alpha=0.2, +) +plt.xlabel("Normalized area distribution (hypsometry)") + +plt.ylabel("Elevation (m a.s.l.)") + +plt.tight_layout() +plt.show() +``` + +*Caption: Hypsometric elevation change of Scott Turnerbreen on Svalbard from 1990--2009. The width of the bars indicate the standard deviation of the bin. The light blue background bars show the area distribution with elevation.* + +## Regional hypsometric interpolation + +Similarly to local hypsometric interpolation, the elevation change is assumed to be largely elevation-dependent. +With the regional approach (often also called "global"), elevation change gradients are estimated for all glaciers in an entire region, instead of estimating one by one. + +```{code-cell} ipython3 +ddem.set_mask(mask) +ddem_reghyps = ddem.interpolate(method="regional_hypsometric", reference_elevation=dem_2009, mask=glaciers_1990) +``` + +```{code-cell} ipython3 +:tags: [hide-input] +:mystnb: +: code_prompt_show: "Show plotting code" +: code_prompt_hide: "Hide plotting code" + +ddem_reghyps = ddem.copy(new_array=ddem_reghyps) + +# Plot before and after +f, ax = plt.subplots(1, 2) +ax[0].set_title("Before regional\nhypsometric\ngap-filling") +ddem.plot(cmap='RdYlBu', vmin=-10, vmax=10, ax=ax[0]) +ax[1].set_title("After regional\nhypsometric\ngap-filling") +ddem_reghyps.plot(cmap='RdYlBu', vmin=-10, vmax=10, ax=ax[1], cbar_title="Elevation differences (m)") +_ = ax[1].set_yticklabels([]) +``` + +```{code-cell} ipython3 +:tags: [hide-input] +:mystnb: +: code_prompt_show: "Show code for hypsometric binning" +: code_prompt_hide: "Hide code for hypsometric binning" + +mask = outlines_1990.create_mask(ddem) + +ddem_bins = xdem.volume.hypsometric_binning(ddem[mask], dem_2009[mask]) +stds = xdem.volume.hypsometric_binning(ddem[mask], dem_2009[mask], aggregation_function=np.std) + +plt.figure(figsize=(8, 8)) +plt.grid(zorder=0) + + +plt.plot(ddem_bins["value"], ddem_bins.index.mid, linestyle="--", zorder=1) + +plt.barh( + y=ddem_bins.index.mid, + width=stds["value"], + left=ddem_bins["value"] - stds["value"] / 2, + height=(ddem_bins.index.left - ddem_bins.index.right) * 1, + zorder=2, + edgecolor="black", +) +for bin in ddem_bins.index: + plt.vlines(ddem_bins.loc[bin, "value"], bin.left, bin.right, color="black", zorder=3) + +plt.xlabel("Elevation change (m / a)") +plt.twiny() +plt.barh( + y=ddem_bins.index.mid, + width=ddem_bins["count"] / ddem_bins["count"].sum(), + left=0, + height=(ddem_bins.index.left - ddem_bins.index.right) * 1, + zorder=2, + alpha=0.2, +) +plt.xlabel("Normalized area distribution (hypsometry)") +plt.ylabel("Elevation (m a.s.l.)") + +plt.tight_layout() +plt.show() +``` +*Caption: Regional hypsometric elevation change in central Svalbard from 1990--2009. The width of the bars indicate the standard deviation of the bin. The light blue background bars show the area distribution with elevation.* diff --git a/doc/source/guides.md b/doc/source/guides.md new file mode 100644 index 00000000..98f3c03a --- /dev/null +++ b/doc/source/guides.md @@ -0,0 +1,15 @@ +(guides)= +# Guides to elevated analysis + +This section is a collection of guides gathering background knowledge related to elevation data to help grasp how to best +elevate your analysis! + +```{toctree} +:maxdepth: 2 + +elevation_intricacies +static_surfaces +accuracy_precision +robust_estimators +spatial_stats +``` diff --git a/doc/source/how_to_install.md b/doc/source/how_to_install.md index f55c16f3..d30b344f 100644 --- a/doc/source/how_to_install.md +++ b/doc/source/how_to_install.md @@ -8,7 +8,7 @@ mamba install -c conda-forge xdem ``` -```{important} +```{tip} Solving dependencies can take a long time with `conda`, `mamba` significantly speeds up the process. Install it with: conda install mamba -n base -c conda-forge @@ -16,18 +16,6 @@ Solving dependencies can take a long time with `conda`, `mamba` significantly sp Once installed, the same commands can be run by simply replacing `conda` by `mamba`. More details available in the [mamba documentation](https://mamba.readthedocs.io/en/latest/). ``` -If running into the `sklearn` error `ImportError: dlopen: cannot load any more object with static TLS`, your system -needs to update its `glibc` (see details [here](https://github.com/scikit-learn/scikit-learn/issues/14485#issuecomment-822678559)). -If you have no administrator right on the system, you might be able to circumvent this issue by installing a working -environment with specific downgraded versions of `scikit-learn` and `numpy`: - -```bash -mamba create -n xdem-env -c conda-forge xdem scikit-learn==0.20.3 numpy==1.19.* -``` - -On very old systems, if the above install results in segmentation faults, try setting more specifically -`numpy==1.19.2=py37h54aff64_0` (works with Debian 8.11, GLIBC 2.19). - ## Installing with ``pip`` ```bash @@ -45,4 +33,4 @@ git clone https://github.com/GlacioHack/xdem.git mamba env create -f xdem/dev-environment.yml ``` -After installing, you can check that everything is working by running the tests: `pytest -rA`. +After installing, you can check that everything is working by running the tests: `pytest`. diff --git a/doc/source/imgs/accuracy_precision_dem.png b/doc/source/imgs/accuracy_precision_dem.png new file mode 100644 index 0000000000000000000000000000000000000000..657fc94661d3e0f062914f2a8dfb6811b452da5f GIT binary patch literal 706024 zcmeEu^aisVJzVbcdAWq+u{n5vI}`FzJ#Q14ie7 z?>X<=&;7ja=O6g~@a$!b4aaqz*ZVx)$NM;r%ePO}7052rUM3+SAyZO(qD4YN`kjR2 z?DEC);FaEo=Jw#PORkEB9wa39-HE?X-Qh@H1uxP-aw~MiB3CV2|r6-Sdd@`2DeFJp15hv@rmVCq1*XyLIb{L-AED5<-b+JLG zR2NsfYhP>c?}XU#HeNy0*6Ej0*3@m6=o+th7Gut>vp1YN%^iFD&Lx%GSBI`D{;Fc- zk5B!ve{}6SpJfkoylT=H%;vgccLshppx34+BUMHiAHW%AaqBcV%Kv)E=on~F|JQ58 zFQMm8(fse1Up+d__rG7gXm{4~f4_PabrG!Fe?M;LUyD8U-!GC#E8e?(=6}5!5-TrF zT=f5X+=&Vy{jZn6mol{fcffyE<^NXrZ*lzpQ4&-W=yQLMC?qQ}Ik{*Xhp82D87eb` zuYD~Zf7;);60aet_xSPS^iAi6Y59V}LN8glzyE|JH|9U(KIvLe!1D9wPkWDvH`ne# zr(cgh?Gvf^b=bw(gy?_m^!n0g>MjOmiUAh2lmAMiNEODZeowcH2ybVy83=V%(A$n}hi zi+l9^+eNhuVWk_a>N-Y7MzI`n{$L3;FeV=56^-*oN1d$%50B56Od-EMS@1H-2cyNtNk6VHtQhs_*di)mu}8JAao9ap6BJ z*0eI#s10j5ct_4C{tH|Cv$HcXGqZeo*-;4AYp&g6IWi(CY}*Yb@tyMo-w+oB>eB^IcnU=DzMgLxa85+jn+*qEiLHr zzIH-ZR-t6z!Gk+@G{M`owF066d!H^}zFgz6px!vXs&_bqX@ZvokO;FHlY=;;+^WN;bP+Uu6CYJ^$XZZ8dj)kkXtZD<>ECS|eF|N94rI7|P7r&Gyj z>_8k#jKe}tW}ycPjrQ#1n#BD65wGU*IZJTGI4=L^PvyX!VcK$&MlDZI&+b{q7}kc@ zXFiL}w;ZlI9CJE>3-e)p7Kw{fvBpk^pLF6pYJY^0(LM57HsCUF_4Q69c2MF&y8a3d z`%mjZBqL}0Q3Wc5Fo<<`S^<*r5YZ!bLh$lrRa8|S@WhzHShESCJz{uq7~~X5K(zs9 z+Cz&E*uB17S{u6qQCC+VO4K(SCN$)}2q7IoJ|sONESyx}1M!9PFa|NNEvTV%GOh4KIbL4gpoOk1 z2?f2cySL1-;4m`jX70$kW`xbt<%2ZqG5Se;>bm37j ze*F>DhasTaaim76y}ez+RKCb_9uex2HQg3oE5gdnt&YWF3upgR_zQgh^wkhO(zZSh z7$JtV?O~=zw*aPYxI2gI=y2DC{8HcJ^D7p&!jgD`>x()szFTvh%#R;bnAwMn^z{~rslVP;kV%Gp+QqDUi-iqoJEJNwH~kcEY%xU5XoS?Cl^ z4VRdI^}BcP{NRx}Z{ECF#9r^~G%UBEefTVg*>2!t|H=qB^d4v#94`96^Pe@L`%go! zsj}|22|^aBrQc8Qrb>X2-Fhf(Wn~48eVh(XstKP(Hx6Mw&1Y*YBl96E=l~nCv%Wj* zSU)OeeEshsBdGq_gdxcQq@2dn7QA~B*tB1IH3uIQ854^==;+{FGyX?BYeIIbc9D9f zmYQ1am~+ha>(>)fQgSr&b7oCZr*AZPC;Fo`z3GG`S1nUGh&F< zw>Ma8yjF}D#C@cl>y0tyC#C?JhM+;Zx&<4X-X$MCG&gEL2?%IDPkQU)r5pDju(Ow- z1#0y{NklVpXUiQoQ5VmuVZXb2T31i6q@+Yy&!J&vb~Z6h)Bu8vzG6hulf1NKUv7Gs zy0grt6Nu2Rw(0F>Nj5=YJsHTuhhXMK1VW~}@G^Yr<&_$rb;`m`3C5VqSFU)jO`X!! z)h&g?jjmn0rmU*^v^D5Rz-{IU3o|nmUQq`Cy{k)gZhrpbhYvDm&XW!R)Eu7Pwzs!e zMLvK2T(p_{pG(H@KQ0-8K$yQB$}>GZ4YsXJU$l_l)?&y!U05zpD?y7XV6Ej{M8r{# z8rYD8{VUMzLH+cJwG*)07dv@c9XA`Qt-DcVLSs|415U|1Es8r>VJaaB$FWxXQ{1;g@K_t-ramzqxQ|0_jZR^1~zMM(SO% zN!!*$SjELnh;Z4mi%1u{DR18iE>%J%!VuIxI~P}C+qA6*Q$+g*UPy=S`V0pYV8?z2 zq<*y4X;g3S_wNT{Vx!PqH zcI}Eux=u;U$;*3b3rw(caBP3Op;GIOpYZDD;ov}zy0jL6?u=WII%(wN<1^|muBaFS zePYA}_wDVhSqufE_(#?(gA%ZD_cP3mjYlgyRa6fBB_x9g4N2UlDC<21d(s&3qb>B$ z?ruAeiqVxJee=Kq(0Y$Hl24}VZ>TB!o||Li=jYD}ByD^8`0)$SBp(GHkRJVJm3lvD z@5DIS64;c)={x4~tW-%(&bQR5@7_34ThabpQ&u+g>({T$O55Ap2c70w4!gCCe;9Fi2r)@rT?c9`H1+eUg_s&zIw9wb`R;U{ zwuf88HV!&ZpH2w`5%zeGR=r!%vJ}3P%REXagx-^~RDK(K{Dh3tSc4|uW}ChNO-HJ~ z?g|Mh1Rrl^A9-DDJXk6futPCZQc>A&&UY7nAqk)DiaL1x`nBK8+X4Vee5Sjq5?&I= zd-z)a-BmpZK&+uHEI)MW^Qm&9?P3hs9(lNIjMTCJ(eZAKH`alMfuY>6+S(44ue5}L zwJzasM0yn?dC+H*a+}{HZ)WDXCz3(Ral*QObd)mM4hE`)NHSEA(Y55yi4A(TBTC!Z zxkAwC=LRhYhgiYn(dspc^>6X-qN8^jcRHfzw!8RGR;uIQ4B8K7h$IVy$JskLKo|S& zP~N=xF+ZRAVsBULyLXo*Homusy612E+st>RisG9$YXT3w0s$)Og&g0Og;_EIv&1)}vUAsPN=50-dwmP@i1$IQz`2Bt#Zv5J^ zq=bFDNa{#aC5dwz{$<>{8uTe%T7K(DQrW^&sfFpI-YX*oMOl8z+{v8_&G+?6b??bX z_JLCeUH2Jntli~_o77B0voR-TwY9ZD7^e+@ID4eXNG2&W3h^}+ur_u*86q1#V*sSmTTJT5+*L}CVi+YpEMz$_G{@4yV2Ait^Z5Ij82e>FHvOhv z9I9n&e`;R)dgcCfipmx``&dT{BK@(jP~O+q*USST?$*wz3ocr0HFjX{ps=WjLqfu| zEsRWv?7J{MIZasZ(h|GG!D60d@8R%yGTMBwL+yShuz|Jgs9mWtDmSXKe2YEYb}T3; z@H^gL2yBs;+WWEs+KAcatWtarI+WtLL^qa$gG1$>LNrQO-*m1Pp^?q3mcGM9{OvT+ zJpAZ3dduu&bn842+bkYKQs<+Ysb`-5Y)ox$ARG8kf;Nk4%Rw=pvdzO6gS^cQ4 zNq~WdFh(QKFmu6AP^yIo{~xN%w*`Zv5l`R~-&o z-!SML>moau_y8oXa(L6MX@`GsVBjp&r0pTtiv=tyNi`hwH{PVB869CYf*rku<>SnP z_F1y=qrZQ*z?b>(yWc-qv_aR~(Sa44t4*CcnwpFTUy6oTyts_(RB=P8;lZMiak!^Z zYY+mvw~Yzbr-~?0i6;B^dP}?fXUu~4*Ex*>qG=;x8dkhBwl`kIq2Rp_I75JQy-|6Z zu-o&}6+q*3O-wR+1NACQ*xDYRuK1$=hJ~G78DQQZm|6TjpcILw}J%>{AYqH_w+n2j)5>l~EhYB_s!N)gSXTffj z4I|}c;NcvjTaIH^VhY;J?OkDG3kAC@80KURD?np))O)C4PUp^@8>wvb_P(9oU04b` z_PS6)##p_OnUIiQQ}YPsbWeUSXo4|DAzdh#VXg86bV!5@r-g+Dt(aFC6}L%#1UFoG zYCDav;t~uF0!-Uc^deeUs5osYz24J?x&gwm**KK16d%wc1+;}FkCt&~%+g>>o1K$k zy>odImp{_MSXucUfa5$+hU(#M9AJMCTPQk$r{&qfu%N})v!H7>$>RPBhF96Yj%NLx zFE1vQm2m>n_T9O@e)w7*>%idfXvPi7LBy$4ARpN7u8vD0!NeVK-iwneB8-A*b+d2} z$QUbQsd#>$84W{2!_8grjRRj_M}Vn(q0_orDbC&9y#|Vn3mHnFm8F)GlZ(rLe^0@_ z|3iD4s3({dJ}@g?pkN%}3Er39Bpe+0S=qSkH0qrkpSgMM+H@@!;GS-7ZlFop3j`yh zSK!lObf+tZv)Qx>7cBETDj2K*?uHshGZ*LQKRMjR?}{WPC5_k{XG;dEVnzU!Db&dB zC-}65!BiL2Q~Bg7D=Saw(3)6T6%hx}Y=})bgqe-E|75dexvKFLLvU}FL|p!t&fx1ZF z7ZO5l&Eu=Zf@>1u;+~HPJO^Ck)CEi8?5PP~sbjMJ_U2l7N1OljAip1Z)EyvwExzczc)}^lUU>_6JCr{kaxn^hZg>&<| ze0RE#InWavx`3pAOz<_Tb2Qwnt8O~38E9?A_r?Om|)pQ%P0E*h`*#z7*n%KL-B7A zTD%T+ny#s7CNmocM|F7VdU~8~}*a=yoJBHF_HxZz<}vHuWV0_i5PC zZ*N*5APfSkQUL7Oi$11GM7Fy@6K&_dKX)a)b=O<+?!CMKX9|k?gE2FptO2pWOOFOl z&cM#c;IK4+)-o_i!FmS${{DU*uaO~K0VY#)Z8#YnqjcgI%s}dQYV%%W`(@$ZDoRRk zC%IW#2!QC=&v&V)iY3=HSDbMhb&~3vOXhI|ln=!xJPX*kS#@>lIR!waL9eidn=44l z&i9(<;Db-H)y_O$$P_XJ5H?b)XK#-qm*xUVuAO;TMsA+g}Us;y>oXc)nH9 z+p#edfaP)u3cJtb%2UVbC*xqN*G+#+svUz#xDfLG{X8U`f+@-3R-w>px}C!@rM^jV zqsKyO7=|U7g=NI=`Fl#SPknjb&F0 z#@34ck#%alxO`BwXZ37j_k$-|V3gH;U^m2}v80P5&Nw(DP%X{;uvV@3+32!#0JW{h z+b)12h`RrN(~GH8Qjn4*1aha^l{y2S^rwG)Oi4=vC?O;BlE{cmq5bV?;=b;mvt9n4 z^()bTB&9wwV#{|Np4k>=wTZCqY0ke;YR|>~)7v12CA_VlEHT4v=G!GSZ?I6k!jlv! zqU=KKmx$_@gZ7{wJ3hrE(7I%}80~^BSGZ|X;kPo`I*Ig3#!7+KtvZE8da3{up3@~Ru!#VO9Bgp5w~D*Gh3CuXf;XE(uM2}J5G!X^*YKb+_9>G|FG zAE!s0pMfX^a{};<;JzK7kT5o%u}c1Z?~3al{&?y{-lGY@y?82hbqXIq93FXicyhME z&>?0Vmkg9O2V^t@JG&@R@dS!UF&r-M7E$}R0Qm$hEGQGsr$-np7W&>x{tXz4Cg z1#lAyM!mJ&W=y$p5pk>6n0b50Tn?+NXp9aD+xk{JhMM{kYE@~Fc1G>!U>moN`%4W% zvi{>}!5{1CS(iEiE?G6Y0>+lr7w-ZhqNDWy{hg#c>HMkgX)HlTMiz92KJ&_Vs7oKK z0e$pT*iF*BI}dP8xsjWt%CROl5TAvM9j zTUuIv%*pu-ZEk327`1n6GzoI~NkJiW!s~5(>h&{kbu9PslDeWI5RYDrKVYI9+z%N- zG6m-YYCpJD3sfZl-FXQqzZ5Dfc}FTC;XC-rN$hN$f-%ekjOmF0g8S0+9A-TictW1n z8l5rX|25`ZKe?-}r3K{WxYI_}MY2*1)9#IgXdy&W%P+@y2x5Bko`68P$Zd41)IYit z$v;-3G_}Lh%~=(&w6H7RNtq-+M1^#{cP?eQdsha)`j&ifa;FpA#aQT5{h&o*Jy<^- z-9&t4v3AiCK-$$IKQP6ogh2o|a7Jtkng;F90jbPk;`k>A3~DT0SdQ5T&jtV>4CmG! zos%DP-gKxI11hRvxt^~$WA-e7%|4)EPj>5iN(GxfV?Ke!x4Npi>=6`IRKUC%&3ukN z@-J_hGPyalbMxO9LE6UB$|^P5X&kN#Ygg!btyZXE0CgwxY8NRp^hXVdyv4kfI>DgzBXS45oS!^CKYzwEr5Y3ur zpQV8jwG9>dTP0h7K+1_5TmcD=geh0Ly=?ovxLHl2v zxuA+%=xQvZE9IpIGC^7zZ8pTol+~%+p~Jbpb9Q}?Yyn!kxM+*sb+gIxe(*M0Ft}Bb zf#UnOZ(D=~4XB=48-p6bGX;A|FkLO#gs&5y(VgB( zKC&LoBsD}pz#cvZ>=WC_XW$#S9T8=n8bZtg>+}K zTOB^~XX?bo$EzV}X=!x~4g05SLvw{pIV7y6KEDV;9$m2PLXH^yJM$HYM?mgNN1{6lSp)wUp#-85ezZElSLP($| z3Aw7NxiY|H-kms#?wb~vf!wX}8S0y&{9}r)b-g)raa~z|QU=ih=KaTvetf( z{b(WhSb2SYT|$ozocCJPjGKy{bL-|;5kSkNDgNbrNgtN|;9SxHbEf3D&jZE5KMOQ+ zPe@1~G*DBI>MFjbhP2Otcz>b8m7w>jsl}OM-d+d7Tw;a><>kSSfnUy1Kj7@zjj7hi z61Re{Rzi@fNH9FnO20;Q{;Gtixr7Ljw$(rs^?_^ih=KnKBb2g!)JfE9`n9%N=xs16 zK(`kA$r<=XMU8+iD9A8bnRjS*#T+o{8Gh(}B_P*`0!3Fye}JDzCeW2uFNvKx8q z(3kUAS!Hul;v)wryb%t1^zY9v&iGBgUTA8)4bEaJede1aHcz3Th*~8kgGYkT(1_2} zZ$+KW#tJAK}^rDjG5l})8ck&W?DPcplEgqJ|=P_X2A?EY~>U)%-EO!|#MyzT&2 zz-xs^TT^LwBID02H);9el^L=A)6&wo%kH~^xd*;G;ZMo9dMFf38mXm4GC?svar~VHMmLcN_my(s28DaoU9q{fo3+=nYql5ox^cpfC|I@0{=eLkNk9EY-|oN zozkPd=Y7NDfM%K&%^>>wkoxEHXnijt#=YBl^FGBQxM7{^_mA$LMRW6VnLIC-O%ccyCVK5d}~Gxm1L#Wu30?2 z#Y6LvBiRdBc zCF_B_m~ATR1%y5#j31h~wNn<3Kapt%;R4lAl?&wbeP9az#dRkYh!Teklb@zba~L=z zB_9i>cSD=YcSi^H&7DMdz@K*Q?me!h}{WXAN-5^pss$p8Gd+p z*r;wf)4Af~VL?7A>KwJnl!xQt4uhmvdrBZ9ap+tf^L<>-bCo9E$3kOeS~2CZYTytMv{JTNRC^Vh1{U8I`@1f}0FQ>xzt(iC2I~ z53ZipbJ{ve=M;PHY5iWDY<$z$k~ld{rE~J|Xpo2B%L%Nis)Bz^>q!;aygu%aZ)LlC z_v^wQFbcOy&5w#Ef)2~QJUfK}SY!q6&`7L(J}Q4HVEs7b3U|Zjt@FFP6UN;2qvM2M zv+IlH^%GknLig^;g6`{F-7(?3Hl<_g(Op|O3jlM_CHRmIC|<=iH9ElQ2T}?pC8a3% z*cQUZ6~w_3hu>!R$%+mGfHh5bcXRZ*RcDf2Z&pY8GvJ{DnB4|$*#mwL$Y*5Lup_O6 zUk%pBYsVTm(X5~;^O4Ge?cO{Qu3c!71EiQ=(34=oER)|-vD5=_nyeaGvB=r?opV}- zhN+;ei+UvwRe2CwLVr~HAOK?rz#DLYud-$blmTX2JJJH;2Z*B`V<(9fbvmh_W^M$u z4!c)n)d>`l>p*8&{Py;Sd($}h#m>Wn0or4&^SBX$u%U9W)|O~$=AaJ-_tAj!Wq`ie zt&H?G*AZujtzg!lC3*T^)H;mDLSreol z8kuEF^~zDJ<4wjZlfY#^UYT6o^o;~Y!^(J*{%F06kVFfJKm1JO5U^AXL!tQxiZqze zjcUME)iE&mxa@c`{sN>zw27J-hzJ00#5^6RjH<<$m4cZ)tpee{>zuuiTks>k*X6hc z6p)zL-fCe#vy_xMczXtv4)CV}%mxQ_ zfujS1PWUbWh2)FF@;itgn7>+03<}q zn}&vlR@n7fdS*HpWWigoOtGU$+gjgE3}ENl^73Ke>!aF>V;T}Wl;_K+;SoaCCfL8cryKbfeyd(`F&2J>Dw_qH1W)fEQ6hj@u|DFAb@ekJQ#YFvMg%`)ST7cUiaYEQ!NyDxC zY)PGLN&)A_^E2{oWaL1%&`CTMmr*{(JlGWY+P1qbfKCH6DFZ1Ct6O1NKF{saPet4Z zMN9;MtzVFseX>~tPO77Mq1HjbSrB!tTPPJ^+v_$tfSA$3Ks`Q{Tga=)^yFw#qrPb( z349K8cibEI^-574tw*DY-+b!HP@!7-2*M1wuON`6Yix}3o|yVl48X1EbVWT2=zI%V z{_5$1=NKm=B%es8c|wq#2a>?S28R_b^*d1WaU z71wQzCT?hpwy;`EA`0%)rcaL`~5lo|KKl}m;ydyl#Kr^BX)!6HKsSG;YH z3HweOk`b-FWp`x57T1x!L0#;d7#pmxS-2wOwQS_Axej(^`Y-DJdUgI=66yhuh zoQ9v@zxM%4O~84~0GKH)x5nss@eSZ+rU~G*z&9Lb*i;X1Rc9YbISp6I0cW?4n0E0|5x-b*-a&)1*85tEd7!yo@y@G%%y67fWkhdRYu6F&r@;w`+_=KJzCUj-&+GF!SQ>b4AsFs!CY6TE6d>0w1Wp7^+M$Rz8B}9G#c7~R< zwRQMTtx-8}B&k6vl<9W~Jlf(GJ2&?b0Buj;odRX>BS<_@Mclk`qjYic0T{L(fU5bI zlO%=yq@1IyqC&JLK+?4oU^kUY3Nfyfkx>SE06PmyLAL-kLfr(Pw&>&n;NItYSO|+VS*|$b#gr=mV=;4b1 zNd*}k6=1(S_4JG?8+ypXx;qH!{87N3D-45>K!VoGhtLCE1LRgPKxqg5A6MJMgxIUF ztu4|hS^;Gxr53TojP7YyTM&d4b(?7bO;T51zX+%+fF5%I4hI}vTp!L2oci3t0&bvK z8+0TsgA_Tif7rm=V2;#(^5n_prY%mi(ts0WT`x794+f`r`LY+0;tdW8fRB_oYMuoN zPtf@k_5y%?R@C-|+#I9&aA?~*a}Vg;x=)|xw1r22!z%}_F_`y3Up8Z7V*~Z{a&p%v zUb+eS=wzE!D~Kdj*X;(oa3ej5i7bQWKOi?RhgR}jIe9^|3F^~g5XxoPDB zQGQNlm;@~fkR!+Hh;S*Q63^Y_=zO*G&p;QDcZ&?wGl(h9B+H=DPvjo zX!ZiCYqVhPdsfBy1yP0Ct-bb4W61mp>SZv6x&-3Ok25HKeNX48*Sjic7czATa1bFB z(-Nk{qwRi3THeFCA(E7EwP2$p`bfU}{)K2AJN)$JC{;YV*pqm~Ii;Xx7b}sB+apAW zXxtMsF1c{LQ{SoyT7Pe?va)iG<&W8e9~wa=H2l_3B}8LmW9DU~qL!ZCzr%>qNW-uB zm#!GQz_{YoSEU#-M3|jUo|cFXt;~78sn#>vjjY)|gH2P&zoYFBznjr{cQ$|R;*asl zo=wyrTuZB$tdK~6jyXhC5}*I1(mh(`HJw(-VowNsn_ zd>A>8Byw@4j%@= z+uE)j4sP(X=iH@yZZ3bueDWiV3R4VQ;euJfaE9f`-XNZuF)-)%kX<@cfIYc;^t-L& znTn6)!cb>`oYAhTtNocC!R`BO73RpD%%gj3U9@9v0P51uX;%=IWw))hwz4|sR8AlS=<4W! zR6DP&!_IlCeRAP#Yo{>UtB-R1D#o4bX=#m4IFZjQzuS{(`xqEN8hRg!dbI}IW+hcz zdxue63|u}Jl*N_APeUC+dxEsJT@Nf}P>;!$6bX}?xN?hYhyVAw4|9ZN?S@7=2}uV3 z*D}71cGkY7soe)GC zmL=g21E{Xnb0SWaIb|$LKnE}n&MXH$<9VmcE<6T(ICQYJ((EeW7WKy(8=FJsb5V%;Nh)(%0dm@Xbr7NkS?Ff6HJ;koon;<+Ba| zqfd^Cpm?N~rOBH88D_h^cGR}UBQprM!sw<#S8RnjyWv-OOI;S9#d}LwoMe#BM#E^9 zlv^cq4%XB{Oc_ZNqi2hr;nL0)!&{HAD8 zzW=K}0Tk!i$%weqVi+~kXHd9`mdCUCvP%Al?3Ow%n=o4FeR>Z+1`XLzz)w6xs3PXJ zHsmAzjC>Yj0d|Dbb_+|iW}n$IRPk5o^n@0C*lss2}k~32}TM2YsBJ$_1Urei4L0 zQV66UHkt|tX$f?cK*M_3GGCFoUs6`46A&QNhgqe8#;l_fgDEHmJy3Ely`yebVFrJi z>95od(oz*lx>df57H5dGTZ0}y&E4}ziw)%W%Jn!(c;p#qhaw>Q$Ii`nc|{ELxmriN z4bi_AaPjsRFY#_P;&jmT@p<*Nt*x<=oFv3!us~|bL|Q&h5W#J_AE^Db)C5UR$9&r7j8bs@Q!D=@1N6nL?@rmS)_TsFJ$u}|j%ITbB zsqBVW5-{_ItjhgqmEX|MY*z}~B$0(`^dIwI4M{ys_tx|S7FIjbUdJ^@bvBIE+n#~A zN{g34vrJ|thU!6z$5G&TI-CO`T5sYrtuyR+e6o%xD_h5F_V<5jbo&B22{3{mIMfdG z_2mGo%3&v?@v(VRlcCI3*gW@&y?e!^FjLON#N&?H^^YZ0s@p|PMoLjMNs{Zl%I{*F znmfcsc?%0B0!88GJgt%em%C#SpL=WX{J1`}7eE%V>t)#U>Y34bh>^34q$XM19TA+V zyZ;!Ux_4aVtJgqVl$o9$LL+lR0o_{2PpCxYtZV(~iH1$PD~{?bqn*jkOg|6D@zb`t zc7(i-G6&}-%|pzUg_v2Q>$DQ}MFOI^QY61E?1-RITVKUS=iI$l&qrzqF%l(p0ABha zxmhN8uy`+UZ(3O`<>8l7u`bYgwvG?+{@ujc`=~(i>DlZPxk^X!f5s41xWi>xeL^DR>@>(Wx<5`slrbN&*_eI&YiUV&@T3m4< z?KrzBO1PiB?D0bg3%%8W#noYFY85SP&OL9Qe{>FF6vQ()%;4T60q)BvN=F;qWT5da z+)UTc0qrcqqr+sVF(i`N>ECyOPFnuK5IH?3@!uZ)GLEmfMS0p63<4Zq5ep#7mnBnl zXCXaedzP+O+wxVdHV#@Z8g3jOtykRqldY+(0DR$9WL&rQP)`0;C#|)nV~yI|^=rzJ z5jt8j`7@AvesFLfSMlZWXnL5YT&=cOxUnaBy@_+ohr4Z*&ScuJxKu0q1-IYE=w!cA zWNBAmW9O?eV^Tz_53<3gUU@Nb>iZ_jdM%`;7az}tqZ4jn1TcARSj{MeS*<7cU=!^b z=(cmrk}27{h&ncQRLRHhu5t=t9D*ZM*IRuCSM2(xQM8#4O0~zayQ*rLDqxbL8{eaw znf>7OE~=7Ed08456@by9ATbgpxw7H*Ag&_{?y~aeEBFEA z53^IW=HNCDR?teooCHRP^93DcWnDRCvnr3jaD)5vK=ZA1lT8jYfZI>^5%>*V@V4&U z*zSc9GyS|9$Y`IzUpyj8#XsD>;AzqMyIIj${ShzCtyzS=WM76O;!DK(3|uftfqtjw~c8?c}~dv}1CH0O%qM zm_H=+6+O|k*t$NatL`-6*0t~}!_Kbib^1vszBz(Vlp(g*qhVXO=UR7DgLi$Xq@jiW z(2$nZ0u%apMj5bV>NVPHf~8sq?GHSqGtN`I(OwEMAk$D8_%!g1n=EHp!X&q=`MT4n zhZbP}#qc`GDS?^ijmQS0({AB-q%14cU zSmPf5!IqD0$MhCarT#gh_u;E7rKpL~jWrw{m9^$czAbFGyKmrZlp;Pa|CJ)F(R4j) zodspB>;7D)XxMmwZ{|y3Fl?KGM2Vkg?B*&LpQFONjbJy{64W$bchWxrx78 z?O2?N!otBDM05Qf-Se_(#p5r40X&Rtwt94BU}z}rJ+IYQr}Xr6?8@K-@|D7qhgLto zIgu!<^nS9$y04^P&0t;ad>lU0>^m(b-y5?tB%hWpk8cDM^;3gbm4FocpurT2+=ByC z?v4mkrEpmWx*(c^LsyHG_Yb>VDQUQU88b?hZS;lIi$rxqu*QWI@S6y##_T;WN z&r{nN^={6RW@ZDO>tFvbK=8>?P}?CrZgaP5A&>5g#K;cJC2`~HP<7#ozje^{RszzY zV|;#8YFte>5YsT~xIntndn3Z8XpW|#Yjn>QmQ!2mXQ!Z()KjYss)X+{n zYYD1^SSmA@Sx(V_zwatK4r@D1<~0^4!I%1#b=la8IWvUlO3T}JS_Ceg-s{C3bnyyup{8D-MhNMDFX5At7K%)NMHYverZn04ps<)EW6-UIPpf&-+Y8IBXaFAxg2 z{i5FToQ8*kTY*q0#oFjX^m8Nq-9!pvBAnK`XEnig6*t_pY6-gBLSGDjztSq~bK0HZNjPB@d zyfwDTd+=gE)=+o47^C9jwMj#NM^Lk@3DXlS=@t^mx^zb3Cdo$ib%Sc*2uMNqsY^J{ zl++IFhMsay{lSV&Beo=fJn@lxMb&ssum@h4(h^j2(DpL#giq_(ir|aubPVb;CTA=A zr=eaHeIpi-zUhH+bK{~Ym!n9KM}&8?ZKo7881oUOlQojtKYQQV^laT! z{%I753bt%W{P5Cph^u?2p?kwu+YYz90QF7BEI_pam^tP(zS!6Li0Oa|n0fcq(C`Nq zT{K){r~SDjr$k>_xEn{czeaT#2=A`Q3k;mGTgfmgeU2GRQ z$)$b1Ucj*u`|)y)JsWix2a;4b<}pqAtm49~SsODLZ#;$CG@Ejoq2V7wR; zw)kX)LsFtI?*?&iJnW`iitg@Nw%YKG4SEr5NTjDYlX&%teJlw>#Zak}{>i#RQ)M8pNa89k;rw%rmTX z0a}TLjpe|V*k@$77xS!*A+4{n@Fg#$Qf1+|7yVI@Ln6@2@rb-+sY%$lzbEUSXN~8G z_-gfSju-f#AeNF6_ZE0)o=w{Rlq~~5FVCocW6)Kt=3W+q%_w4m`u;^b%5l{AN67ee zb>M_Yo9b$##r>Sj&IR^S5#!;W_3G{n;n5GJy^KPqQY*4f9dFkk3i}l*?fP^lq*8T` zuo!l6s9NpRSjOGpJ|4HgdAsgG@AbC$hN0)2;5!yf(2dZ^)!Bu~mb8~;XWJkX@S>O5 zlAZ?MA?)7v;&l4+e8JYVN|)Y~Yz?2c!_{c&jsN)J!9_1TIJKUS{yN4SbU;D((QX;6 zQ>l-qe`;=yE>!0hXm#2qDL=<(io3d0?s9fDQKSs95iPW;4f2u?^D z$cCps?eE52Zg6utCAY71>WbK9BA7h`aaVc?KjxfMG@myyGItJJx3AJSsP62hKPzQK zkD|MOJ?#pT^uTWV?UX3<3rfp{aHPx{CMy>L@`3W2pNm8IZo1N3 z`bm0HJf)Lci--?8yv=@@tK3OdNu$laHoBNuDE^hycRK3z2C> z^!hNhpp4F4$PUeeN!O?MR?Iu|QN`N9UQ|)!?3^9Qe7R%9#XJ=)KzhCKYr@^{X&3m1 zr1jSO9AG5HQe*{UIW1>tm2=De9!WoXpTf+w7MpQ}Z9g`yDA4Mr%-5Tf(WCkYqEpN2 zA0)?~Gc{PwY38pIQ z&t0Cm{uPmfTBmF#!_y#7J)az!PN|#F{^kj_<9IfqcGZbc{S2Ik%p2+V|AN71P2?DO zW=QbSk~r*Oq=CKHRr>t1(X7j@7c7@U)mwH;DTH0C9_t@2M+&zb_g#NyQwR?T>VZ0a z*l+Xh$;&TGlxhw@)#NCuL4;1$;!PjbVw;9r{4DO9!(HxRfAn)_^Kh%q71pk``%{0~ zd`hO#3`La&vb~eBaK8S!QR(I!>v|N^%7B16;`xWKL@*VIsQwjP^`e97q-;chMIel= zn77O@qrG^uoG=a%gKnc8nh5jm4&eYPq4lfM35Ivu%1!D;W9TsR+6md>t96?1_4IhU zEC*kzW(CYK_qG_8IAnvZ$#~dyDri3j^Q?05z2xaB0xiikujys^VDop+&|jy#)^XwweT~VzrGN9B zd*QeDfX|gCFMQg37S*|O{rSDUuZSyeF4ogd6oEFwI}Boof_<{ma_v~`l@C`lSy!u< zc<=a&zmi%Mkvf0jg0P=0b)DpjgoBY0Eik0MqQ*&&f{X%1Z!R2mw)->^(bv|+NVn70 zK%Rjvp`Vmo)Xsk8^Qvpk11gZEJ-kFWzCpecVMiAok7Xk|KyA_CkRkB02k z*-8`l7{XleE7VHIAp=M0Ek*)jVbpt|tw|~z0wa6)veIFWO+w96P7!*X5Mpk5XY_E_O_dO@cv z4r*{at*z8X+dR%#6sF$c#m#Ect*`I(r@nVS^}lTD@^e{`>&@WP5>tf-v8JRE_*bv% zY3T6N$rd=s!Kk_Y(SpS`>$ue9FbV4;;X4Fb|F&CuQ5-Q6|7!0;WspZEI*^JC7LYhSz9UYlgX?Nq?bxnk;QL#u3) zL;Vz~=pjYr<%`GQ=l?vuJ`h~jdI$q~Ng=U`+oamiPkvLP*Y;b!O?%JUov2DSKYKbE zX0_v9u7{_Kd8#|}=eU?MEyLTGfNF>EoEPAFso}SRx?bCq&7O$b5>LGSqpI^oy`xF0 zh&uOiIqD|+G#LEl(mtfxAdR7 z{d$R`#`53}mt$3@uY}hZROjaAyGHOPCLOq_-el|5{Ui{X6c*mYF{~Vdi~zvGO>4ZG zvI@Hwt+~3}cW%AgYl#xAxb7NA{k%2pXdJ~f@yYhI!gy)Lo)Qp80EtYkX+YEZ#t?!4 zw-TC9Z4W3oRyS}h5-t?dgnNPRP+mz%4iu{8ECw_t2m#~(AG;1=q+~=a+uFDxmhNgSNAp06`u)(+&ZSZEF`{5+}gFr{#7Wd|{ zHnM$D>_Ra#gEUX#{i>YvvVA*iiDok7{L_m{%lFae?)t68BpAl%9=2&ao{fvD#Q}s0 z%|=HqY?+p=#npCgAMZt4?d8}^YFg76431+p#RpUhR0DFhYKgyT!SaY-*K>PpV|9Di zb&u#Em7KC1AW&0g4m2DyPG_v=j*DZ8ZI6em_P#!9*|V1){tK~@Ci!6BFT(bj==bAI z_meg}77K*ikrNTf7(#dxw&(RIlJ_oqoz`Zv^)kzST;qQUt`YI7?o?Y!gx5WjD{8+j+*WkU9P4p(bOWTVex6^JnM_KL8OMpD1k`4SBGZKPO25nb#~nj@ z&us_PE1t$^eEHe6l;ucW^C>udWiGC+p>E%I8cuQ5cf~o5%6a4)_XCBmG~INs>Cs>4 zk4;W?4nq)J5j1?n-|^`S3f3@f#k*>h!?NAvday?Yc9zoU7$Q8xJyWZ_#f^<$^DVg$ zjQ)DRV}7xWMe?ItldY>?CnV?t8Xx~-@te%ByH>;2SKzk zEymfjwX+PQM)$48Nb4Nx%{VDIPbMeceDc_B3aFn$8Ay(nRZj?bpSp^^nwlmmgN%>>U&c)sf&5V+_|c^~QI9#V*8*O53XkG#NLoB$4Zh$FZ25SaN*3NGf}J2T z2)7+53#b@teAz{11 z3YY*WcqG5)t;6piLnbtOJG8`+q_QfTeQ@3!uZxI`)^5TgWU4s#uw1_CYOwZBBuKe zoqdm7BoB8WASVYjwbz``fUx?r+N@`EY(m%B0=!TOG5+i=LRnfN43= zdvK2e;+5JPsHxqrxA!cm@fkwEN!zY{!`_cKabMU1Vw!x5iJG%{-%M^BZLQyhhh>12 z8*I2l7^2anEGU^Bbq@OpN^Rb)Q>1GaK=0L$z0@~(k={-k0l!GjR3?Hl&0&>vB&SSn z$vf;Ap_9Q6UdkodmOOR2j^f*vG14KD!9S$N+W$7^fI9xYBI8DwAKjB%f}~_Zzth-0 zn>u2(fTP7cSSlmCBJ|hQQFK{YCZpWoM>`MV=7P?WA@InC8Aw^GoOCe(a)R%e>fR8eeij z+x~Kp-?01i5IH)wjbB6OvsfHfB2Aj5Cn|yzD~kB-X6ZpYPmZs|rV?Q*0T0+t$xT=b{yRd19z8pvHYF#}?PaI#l&A=Kz)Q;aT66 zr4PLbI>t)A%x@1dFL$~*T_EGxWZXWz`*Fa;PA-PG9U*d z!|U-@UENw03dM!3H$BKIq)t1pGq4II&6lPcxZs4EX75|V=1C&Pr%Sb z6&|W%n`M6%?@~l;s?m%sh#F8ZYrR4$yfAkbwRgmz?Rte*>whxcSyiCwx=R|5*F_AN1zZ58*D&S#Z-O?N1 z0mxQfBlAG{IqxvV{-oAF`5e9)-NJC6^#Ll$BjOVOZY7Ss8OTd{3UnVBz^t0 z@(R9;Etc=OWc&!c%511y_2+0*Sf)3cWwPe(!4YaGuf~KWE}gq9ImhUz`Fj!uO(fI2 z)V>i&AVZXQxZ zq?X+*>pxTo!Y^8?Xe@Tq$)ZAoL9>0RxBo`Dm=^N(40-vf?`bIqrCT zS+%tNUHhco6caHPV9q3-2>kE1{WWn8=7M7Bj{=vaGLCqk(ub$0`dP2=nQfUQ|Y_@CZo)6d} z*W1h9njcQ=3%}P{DiJ?si8XcS^<;NP0R%Z=CYyKpAN;lCcbR#5FI_}7 z<#)Dktj%_5MrtG`*96E0(tZ^ISNI3YdFa@TW8PGuQz3~-O!Ny$qe2qqkKsTWxXg7L z?FiaCQw1scn|ii~7eBmM%bU(#Sd_^OxR^6b8)_X9Cje&Zu`RR=P=xe-N#`;f`tx_p z@p>Yi68UM*wQ%!V7S>UQAXxW0D0f>13??~lxI}3b(cEeNtxwLkWb0SmSHj2KowO;7 zt18EmIYF<=2nxIT_UK3SE`eMA_F>%1 zL&^$HcShZJkJ00awq!n5Dr1z$vcH$`$g&7|l%3#89K<)P^wtKFTiuq%&}e0Z>xTi^ z7UU)*#&Q-x7i;c?GQE8RZcjX9-zPur`tFpAu$42WT(~DFChz`07)q?2P=|*noEz}V zLus&^rJBvC5%q( z^7)mKP|c6Bk1F)4=aaZJ@CT+h(6VvIgEqDPHFv6?|8$l111Nvld?E(dVXe9pRJC{c z5a1SRvrm2zEAen?@ToWTES&HU(x|lomAqZYtk7gkOY8$u7wQ_<%SO({bMYV8<2{Kl za!XI&0Dh7F)k2^5qPWJljL#n5o&c8c`}!P8j)`J};mzQF&gnpMw!@{1THO;`;Q?9g zfgPqVKuGSs7$n3o+O>ptap~@KbUBAUyOnbm!eFDBTnatRCLWT73DO!>F)q{_kV9N< z{v6#mm1m{6+c0tx@-NhPUvgBc6WZu%{f6p2{z}5IVqUw4dl&^?w>R%g(Gg@a5SrO< z`b4-xO$ML404Y^JKj2j%=SLl{ z+t-8)j%gbAo#!K~p8Z%`UDJ^_Ia%Yo3@|EM)$B~#)m4Qnv6S7d+wP#{F`s%hBmQnf zGHR^X4omI}5JZY={8z)2w}^dp%l{_?x4;$fCHN^NgEm$ETFfpXNr_p zOFVa9{VL5o%Ab<982nh;6iwa+C3XD>d1^G-CZ}VqqruIrqXvDTihvU6zotw4Cc%HXCB$%pT^knqmjIUX*Xg z6g$a&KjmzC14LO5uHW5o<}hZ?_QtuVtUw0qYilkWt1`j6CBC}TljNRkgbX+TYCgA7 zj2D;q&xoFf7%GW7dKW~+M*A9;8?HDRBO?KR_d@nNh=Uxqw4sPc_0zZ7v%Y)o_5`dL!r{Lal_5wef z@GDBvT(p9y(%@pZByVOeN#BaUV51fko;&n(z`xKxiOTw(|^&G#!^C)qgI zd<)e!$~whQP9_gc>QOn}Bd11pb5KT$_j7ltV;^6e2_QOf*-oudA`Cb=ISHX~p{1t} zOh^!iBoxZEdCTp{YyR5fKxCn_OR<~RRBTq|<`pxc(!P2XGc0<`xErz65@59Q6kk>Q z70_6H3{>{Yk9KymGMf^CwCHc{A0L7;^)k&ONg};2l`thxW$aQ2@lQL;I71Z%b(SoU zDQO9LR>TcFq5L!2V;9x%yQQ$1La@OR{ko@1K{Gb*0|lk~Vh!AaEr_nvWtq($?~h9v zrqh?d75Sm?xX~0(8rZ5_;#3|8OB$Akg~TRN7>UnChc7~aTJj`=0gM0u5eWXidQHf} z2iAUcXU{}w|FwAAhS?^ZzPhzKhHPB+{|$-Y-i8eSK$$M;S)JwkjC;w&zq7IEIqBiB zjspnTHt)~q$o5I7>3$*7s)B*;3!3Kq;8jD?RfD6?J~T|DGzYz@K0s^lT>p3pDyYTdHLcBIlmgJ>wdF2 zQFwG^(&yX5GD?IhAb@r@2%zu~$L}R%Vv6`g5_LM-%s_}AE4Or&9CE|~=(fxHCPRL{ zFt+z3d6!z#1><;MgQ*7duxk`&4BiCt58mPvC+ z0bN_FhFPyZ$;u(+DhoBUnm>?HcpL0+n0x~zWQYO%3SY+oSV2K!qFSnEHW^y}zfy#p zs_7Hbv-q}&*)I6$1hm<^UYP)FhU-^k*rS1DG5(SRJ9BNd3KEEpFWSEd@8&4YZiuRx zs5orPqJ2X{KI}IAa3i7#O2~78%{xrA!<$b_mdklP2?$~7i*BzW`NX=m=&P@sNUmI~ z7sVq5;GYvvlug~7meBkfA!9Im;NRWxMl0o7RXy>XMsx-1(SngDP{+u&rrg$}MG0RL z3t@(T*FoZm$bVs_SG8kG@8oppl|CBHJD|Mz&&E3{2IM0r`sH2($&JNiCdODEF%1)k zw&flt@U1!lZLpq}nNVzH#~McfpD2vKEO0s_WqUny8E_z^B*y95Wy#?pDfWbt&4RO% z=~kFVn=iSfZ+g;3+UC`{S&rS^w~8ar<}+Qghi!t;M$7RzgY}hObRZOVW#}`tAv_b{9EKifK3dTXqc(&jb!fEl}L0TGL|@Y40+5&a%hUlPzZ}i zE9YG=1D2H>S1FNH3*+8-9aRh{Qu?PMsYW0R$aFpZyCQ$wLi_HJb=5ZD(3@z;DM-JsA3{wh9qmUit4?^J%^R$r* z4&*Q(bG&v3bW1{xsfuAWFXHLjc+K;&Q_%(vU4Hsk;@* z0wMYhxheh?@N$@|$p4cuH_##l5CClH{c@q%wd{iv_nRhNTwG!y6+~UClB|VCE7~9- zp!bs#w!gDWzi544(WT+j(+yaR(WS{!s3&bVo3Es_C5|G3)|P-Bb+w1=ej3`D870J1 zs~XgNKero*!U>cvI_aE=2}lTz?2>E5^1j#o^+=d(3%9xm@O%{MmrAdDbU=i8#l>&9 zxW;WE02h@Zz^#ak+mlzY_W&f94EFG?smCj~9-9@7=&|JrZcz+VcXHoQXa9|IX=sIH)R`mnQT)`sP-V}vZhg`wQmKd$6>;?I&~a5C@ttRov&#)ao=G3 zI2^WaW#%l=Jk%$UFDNQjpxL=N47`>5cKTJLiYhxw= z^XF64X?ask767nCAY-%u3jO<0F(M~le)+f@sETVj>8+IPi|7Fa(Yn)d-Kwl9va*Ih zOY9!cBIA)28UWJR1G8M^4!d95?}0(MWOgP$LTwCV4}sljv)DRGaL!-10J$rCbRYhy zV%Bishlycx@T3GB(8p$Y8(qDvtneIZP5hx*?=Hh&E-fR)Zly`D^!&MGoc_;HR1P5EhOKU=C>$z+8XGdh z1S^XTs8lEi_$47;0qme`e)TSI0ijIEe6!ZXw z4X27Pvq03Lo9)AI6^dFL-_xXWO+uSR_SA>_`A>_Uch>G?G>huNot&p(X+TMtXwiekIp;sr0r+}e7QwsT3{x%Iv zK~xH+k>BoaP=$5?Ci4=D-JZ%{Y6lF-Z+N4Ri`xC$)ibG;T=bN;{ebs+yxn#iLSFdG zxV)`_;-UtI0SY+7zpR<2xc$U)GCO}GlJPuhlp>H~3+L~DmZ1&pe-a&=vM_oG0lb&V zpAOsV%*CIw?@Ekwy2LnVCGc&@#M_d-yA4=v7!U#D3r#{9S*+kzQ6uey!;-3 z%>jz)20ysC6e2AX+NrYOV{*Se$Se3UE^zCtw|7(pEl%1D`E%W(bG%+>p@Xd0Y?p)# zl~jXw{nEWkHP@f?%_p#dT7$FuyDPZX)VYNurxC#I5B@SSGt+_(xo(d>9!?hn%QpMq z_2kv&(-M5YmF7o;K6A=i_wjYhnc5$;v z@5*o95HU91Ul912B+HQE7=1h%s=y^1@rUU(pYuzb;aRRKYf9nemNARn42q!<*CHXe zTgJDArXw6~xY=(yxe9410K{$yE1GSAK8S58vH(XUNcFumD2Qng2Nb0g#MEO>5s5Xb z-WBF5H<=JxO#&#(hmT6BBeukSV%~nkk`lQQ8H!j`V z8RB(gkDIM;-xxgQ51^F>LWeaPuq?xPMsh(Y^_80PYOz=6Q-%5gi0YCL9W8wr8Cgyj z9E};YTv7~fHI2pCh%+hHmA|W@QA#_>c4(UYXgfBe%c5*LdeGOX_Ad(}%#XuaRPQ~n zC5^Rz%RK56=BoYwtnWrDe!+sOodwW6UiPXP9;Q26suqb0MCA-G7VJ02$1?8uQ!e!| zL)Tv1@uBzgJA;VoAuj-nn$u7pdzOS(Kv56i8M20nwVAKD$r_eoeYsVBk&?7d_S?_Y z=Sn!!l-h`i8HndBAL)1dSORfTLrKe~;kQRag30={l^|-jMkwE6L}0fo{DhsEI8;JT zh4hqT)!$VkdSX)eh>PejrDyg3NBg1PPX=HQNG8HZZw!GHW+euVVO1R#E=t(pw388Is(7 zOWT5>=OnR`Ue+jm*O0D_J z0C5G_;m*wM3!$mvOCdTFZigJk-#BPm zlm$Q!h|m@Zz>FM!IzJC=OU^smYGzQ7^qYV+M_ z$jK;;#3=g1;dnfd*37dJD|3G}>7M_=E=@lOt5@&I{8oxUJf=2k5croET}(6Qy>CSk zy6$!s><`2VP^|C7VXDSBAZcbfsa+guSFO?Qui@LiV*fHJOgl8pB{DNWS{<*yew~sv zNv&f(MfV-gKfA(+TW~juJ`(+Q-=+Eu7axCNP?!!m(e|C1EU}@wVtT4rqh?z&lx;-p z*=uHM_a1XvwuI7T00Q>|TUo$PLC@706ri@uy#AR+Z^tRw+6IN+D&9Dn)NHK4;n4yG zCyGIk$8+SlvVkQ!OI+DBk}5prOg;Q5OsMNm6bD9@78Tu{#Y}jpkc@LW%RH6{&p360 z0(GboZ*$V@P&si28*v0tNdixH9d1_mLB4?n67E`D$$GbXcwW~-Qp29chlWkCM4{k_ zFwC?*j%W2!?|d0M);`1gyGp6Kib@(I58qU2^O@Zh{En59Gv?>|JI1dyDQ@?kIRDcr zNzjl=<;f2zvVzy^NZYm_(GMG%^9;i{34i%SKjql_5-bg>`oT@iz^GbmpX>H10bK%S z_=vdiw|h#s{0D?mS83R5JfWS_TwH@pMn`1qrv1d2{PQI&o>$}ol{&3Y$5=sZaj*;) zIj81!TzX>(?WM68OMrZ#}CjxyNT_%w_fJ-^z|WG5)$n z=L$4!%@237>KfCl@hEUvMYyZNA2cU=c9{3-^YZo$hc1i(G)~YY=jnd)`yfFZ@vfsU z3@QCIF_T6TKT9JV)nu6Gmt1~{95)6oin5=%NPOddK-@scJo<)CBzWnob+N*Nc@z(3`O$AIc2#Gw>T7ip4BAM=7l{%7IH?1`~Z zu3tuF*e`b_mavqIc90<{UOf(V zn)jAXuJDtp2*G>nEbVt4YtOTYj5Q0xsvcdb|FfL`O1Y~>0NT!pG7sy5T~2v%WDr2^ z0ly+&8>@A>HcOvaKiskEHbPAbG`x(rqpln5Dn6pY;zUgd`<{dq0@ zoXp@2=YoVwZCtP|^TVAOy6l2t%g)n{R#7{-!}IQ{ z7EN=zyr{L#d{w;QxY${0rowP>F`sX>v-v>-yU}y~-A~&CIc%LpCsDUWho2b*NJn^| zCBE@j$)lE}KLKD_w*0;6|=WeuhX6mRluS&?e2F~J6C(l~>YdUFcTJ}Cq{ zKvSbn!WmxS=pI)iR+?;zhy%3vND%|~*h>I^+1t?GBl|b}(CyeZGCLPfN$OJwWY5wfp(jft+ zg?MfFwhM*$9SRcP*pGED+8_qFEy>*%M4R!sB2)^b7OVFgJg?YLJXkJu*- zM~rNu!+4PzV+HgZFONu853udXkWlhN->>Pk%w;FL&8~sU*G(?l(nnA)p63R!xxPUs z&2*DgGeJy>#Yt(h?=5kVoLPHULl!sJ+1Ql6E_X)n;Sq1XzBMUo8XFrOEUzHqrzB~v z0f8JBmV5u599>Sa|2KSzeFG)UXFyZEhd)?8Fo7^wF{nfC&@Q9g@i`|5#&-XuaQVKC zm^!4sZE2pQBw#`6i(>~2{x#LsgX^a!QVoJ@pl%2TznIb&!?!eDd%zz4{Coc(5Y^F>Za$5YD7e)CuC-es$8 zL!F$)6}LM}hD;gv=>H`YM$y&pd&MISzmE#N7bC^FAh!bJ4o*+iza_3cgr6is?_l=F z76Hv(xFt87->!WjSG)P|VR6DDhTP_6uW7kv!2e$!tsM4`mHmW2)knp)T4-x?aRLY` zoZpO3r%QS^0ql1me6BwCD?kP;z|lA2WqpsX8p^>a@bX8Wpl9|#szMw9aK-dPe#udn z$_6$%9<2}Ib65uoDj4$o=#^Go!3ZB9iC(I`Pa*?KmGB6@FVhQ>Kpm{w3*(rk$gXa2 za39;@-#}8rH>ZP{R)7ukqmhwc|2D8!1?VuOrBMT9N3(VI48TS#!a_B@PCtAv313cR zb`gfwti!#eF8m&E;usBHK0gzCld~&hZhrIaaFTTWd5Yo8f-Hh7uJM?gz3!6rv~Xsu z$Fm=eX)vx%DcFt((D2uIS0Y|r%^v!yOx06djn%V-Y zb02hKVVmX3xah`nP?VZIS2waV40*fsZ)bKqN`TLZ(2?Zsni)v zxb=nuEM0JPRZws?cg2b1L|tH~@jfq)HZk+gcoF_D?ZSpG4h?%CO^XLf8eUooWp9$BOye`&Ewf$IpmyN2r-?(aj$u)04;Nu5=> zgZ1I>5Iz_-wX$s-Z4Uj|F?C=mYK>2$@gliM&MbZOmcD3;dxGB@)C9e<6ZO|rKnf|P z^^BB8Rhk+qDzvMlkLM7qpCO1Mf^vV5aeAXL0;HVUFlWT_al~><$RJ|5R7k;ZyJ^%r z%uru2d$jz24*1FN+1R7nzP8_RAPBcnjo0R94zJwk7ju9G{Wm=MwsFKXj|LO~%*mdO z$ZWYxvWaxgG(+n%=D)bpg&_tCD4@LnCdPu>kaNzlR@Hev4x6(aefDb=0OkRDrFA$S zE}8YBw$soWn`S3LhT)nWn`RS5H2g*0_+ob^ZBYmSK(2=q11~|34FcUP9(#2!HM-+m zjsxTmko#$)yZ&a6^af#j;%Cp&LPDN)Pl+Ku_;^9(Ue|t26>yB|hFnp(xyvkL6zSG` z(?E`#z8kkSoxGG%Vw8)thkF=0@Y85S^`2uCb|0Ee&zk1sb}BvFfO#GG;YFkt|1P$_ z&H7dQ=02JclWR^_1}ecYv0Og@1S+8BU9#7(Y5L1uo0IjG5Ep0_u&I-&3!23 zijO*LJF?xTsBv6eylZFXzs&8e@10Ez@GZ}i>fH|y1io&c)d5kx6|vck>jx63n=4zh z`|1-vKLyEq?&^z2oFgzO=DtAxlGpcQ!#v4B;Z-S?K3XDKT^9RV5#M^v3K5JkG-}U^3GdxVU$xamw}Z>wT?koWa?~o-R<`2dTaf zN`N-1@q$3Er=27+P4AeP)&TND6M!a}8bf<-etx#Wl?&W>Nso$(`ZGS>erM!8Kzq4W zXb}2&MkEg}_8G->$P*_hDzqJo5df)SRV48-Yk@MLU~kcRTD)9YU@9{Ylll4csVL0A zWO)!s7jlZV1#V!@ra}=(XJU7{!?ESKcx$cEf$0yG&oiMg2tn7 zzrp}w=r)$DW~;BUFB0?;oTU(me~})hn?ZEf97W;=_~&T({H14vaK7AI-(gVomw|jkjYx98mfO060D{pg0DQNm%W*P90rAgt_HrrxA-K?M2%iF~X@y2NZ#`XX>b8h)Q4o&^jZls03UP(SmkKn>s zNmo|^fJqlg8(?u326nosvnEJD?R1H1s=kl!;urBZu5d z3;;`r7fSyuoNEPq^9LmB*>yzML>2S*d;S+NpbB9oD{czQ&~!VhAfPyO-7(wMzF(yb zQr_&SGyOG~oLSiTTs5?lPFyb?SyUNdadK{sZifX=vob% z5#MUOpQL0twV4FLf5+BuQST+W^Q(+~aFS*LI{FMe9F}d>I*q6euXj^{bfW?1=_2OyABh0FsTWXi;6>;1AnOm%=2 zYeT$|&_#;w{hm)DFW%QZNMGVA7)E~ePY5gSC8?Y%!N+{2`Fr&9P9*o1cub2QLf0UU^3J~|2~x~Tmm z#YYNaGj>Y){}k|feFYaFxnNqyjOy4iY-_gk&`>P1PLBr+A#Du-2oqL$ml)=8jgSi% zQl(}c7N~WVZq7cjgh^)ve8~U3zPDraS`VCFw6@Re$!o-?-QMnZp6v-tg598_P{Skn zYKx0rgaK~6KL7sH<-eFiSy>si1z~PC zH#1e}<{8$+DaZ2<{_v(Bd6|qI9|GiSOOv{&5qGy1mdS2iizUDuvsjbncMX1NCBheL zuO5e_`Lh9PNso|iUQ-N8|1O^kjEKNIX~$ZYvtPrqE&#+lx& zYJ)`J3aPn``)kW;qFCJ@5mJuZ5+9w;62C&lk=VPr|8A zTEP0Jsn4tpFZ=o=HHqTHxxNPU*!)I`Uivb`PB&fjPeSbSwnLf!ZsE+-;t_bJSR;jq zJ67*;4zE$T`)5=2;bnq`**Vz+|UCtD-fGQ_i@Wy|6qU zVx4+VAO1nRZ|6AB$A`97-^dDV*QnR4fp)de}hq9 zrWcDn`9#MS1w0 zqVZK5D+{CSdYXKI$Dxmu$LSK9$0Z`bW9`?h+$YE8cYp>oH)?HFGbxl>N0BUv1{Fgt zT+sq9KUdt$p@v=`=yZDAUe$SQBG49`m7m+^=4wChBtpkH6h@pMf4^8!5XZ*$gh7`# z=bcMsqKSMv`2p|}WaJvYgm}*Y9j-YUXp+?xRvFCb<85I5Wu>$-BsKd%;mga~>c+^_ z?XHK#ZDs|~=5?Jc+XQc>U}_4#UVx|V9h2^(A$#@;Gn;q^JWtUAQ-978m5|@u_{5mr z6gMbwf8`1i0B*pic|aSeCuaei*-ZU!A@*YS=HkJYH45p%vp=MykFfwSfFJ%J zH3$K&U`oTeLEQXy>0=}|DtAyn>6&w){I3e{%$H=NUHGu|1(<1s;Xk1_kBK4e{BZ-o zftFp%0;lkjL+H*FzB$xpT$xP%t*P((#Hin(y8XjLo?^w-x$-enrY_fEQX;Z0Yl@t3 ziXAn=p59=(w`^mTc7us&ZNOARg@q%vYa*7vhKyc?f_&(z(e&_Z`o4SjJl*8fdj=gf z{zcC}5l2g*dRgz7hxDaRe}-OV{f89p}NLSM<>|%QIlo0=StI_xrf{nXC1!wi$3-=bq(RTogVg@VHue~j%G&31<@f@ZBYy3 zmZO!8x?la&>8B5~(BtdsJ@<$8cdVbQHyh2qb=##hewsm+@DXp%@k7kb{~8lHVud*^ z&VOapsR_Wdd0Xi)Dq-<9`#=W;*Zm3ub_gan)*s&JH8S{gl zrBs=j*^x;R$V+*Gr)JEQ2wLF_Ro2B4f>I0aOBWXp_^MrG9iv#tO~VfN~E2oaO#>7~`>@fcZz z+!~_qLT@Uh(_ix>G3XT=PP4~m=lF6Bb$!qc)YbF8RN7mzFZld9ZN|Sv(s6vn@RCuq z!A7B@8THAd`WOV14$F zCMJ^{MxTw*F;MR=Z+;lrK-?_FUSpm{AsIyNZp(KyJlw7*jUlaWA_)S z9Dj1ds4S@qt0Qb+Sc{Z}6mF+CiXO*Fq|%H{wA&LNA~x6C1j4XunxLa)r}@LX`Koxy z_7X)Swtui=#hZ^8XZab7Ft&yJcjaj0iG0enUF~VJjuTxQV z(`F}K+MH_MwNyZpubUy%#@nkQkeuTq3jOmXS@Z=N;^SU9dBfR-#EuzhJk%e+8TW9j zmiY&x;2r-k?fK&}*%47X`%R8&d{GO(HPkuK=AnMM*3Kwaf3aqDj>db|aG_Q?Tc0C= zp1pXK$U;1a?#y0roHm>GZ2h0u*#8sTpNj55EohRA$6XuOS#DXm2r3$@znM8H%nX#d?AT}Lg!Q8rPs-_@mHO!he0z3bK zh5qePbUad0Tu3fAoAFpr=&6$yfeeg_>hLu^ee_RmH#K~+)M1+6IpwefEh8T)CxFR0!#1w?_UjN=_3hSP~(&6gl z3XmX1_OemHKwBB(%JGhQUXw*6&b# zAM%BLOApo_>iixYTE70SmU0NbaUD@E?`P9r{wa!s>ulXU>6K845sFT{DT|o|GwAVB z1RD@W0gBAgV@{>=)cyq{t6bXJkG9z87yWCqyMbYs3;R6lbIS%bCp0t~7MPRxMbIIOJ$Eb?n|9)`Yya6thq?9wJ3$Hne1d?2JGZetBbVVzj(5`#&o`AX%AD_X z#5XRUmz7oenL!NX*j zPi{KXolh>)ZC3ObPY4*g`uDNR3Nt+i*xu4KTH4GM;^F54QjUjQFu{Zy{7URZ!F0Qa zG{)1dS4yx%WzKRSYsUspoHgo!@%G`1GgHHQX@x5};6`z)?Q1n7kyMt%SdNVKW5l_W zV10YC@fQA**;-Fa=+Nt~?vu?(miBKE9==0`V45xEn&yt%!OK90SS<96oQ$9@-gO~C z9mn^dK6LB2U4;cRm;(I!DFxr{&l#DSQCEO9DI35xUL#<+&9%oWh8e(c_%CVP;(G`x zDH$;f0yftvO4sEQRm^?>941!H#ZUDYYlhM(DTmY-KySGnn_|EAI9jKnw%kV6moqWn z?k7=p)J7PV6-1d7+#dna5*+im2%Pdl+ps z2k6|68qV1U4nZR#jY9ge7oh6P@g=@9o}fXV)C2GlwtGV&S(YMtMFK4ZMJGZn-Xtdd z1>c^iO=)@%@8s8I#|`I}zBLumh5}48QiF!ogF?{(pCokOV}D=;CN}nG?6*C#q2>*- zzJiLtukYD4MPx_Q%-50#?uQqeH2l(~xG6^#`-TX$t4d*E(&h1zE2NTD4fuateFa!l zYZoq{fJiEx14>GFgMxxcgVH^8cb9Y{Ai|K+Al=-WTf zuwWgEONd_E3fL5<;pD3Hau|JLWLN-0cJBN8A5aZ}wvobbrN-JExj1V~7WxFrM#XQX z$dM6JY6pZJ3jH%HV1WuOfYq(Nx1$lH>mqzI)R>Nb z@7e5e+Qj8?BfZ{yFD6y1W1YJ_i6MBTUth!RhAEL>zES6-q#ELS?;U)#1*#O`6Oo^R zS-2ZhoqgCeXW&coY+u9gjf;?Q-R;DDfmrWea|1NDvK<;67L^1umWS5w=Is8iooI~_ zDDz3MS$SJv#HII%rk6%c&qD7qF|}78GbT}0*N_;vH(5czaFXx5`}DqilwxF@_ zH?-R(!(7qA0*i~Q@&ei}JG}+ub@Due;g}x96WXo%A_xAJ)Fpb$PNR3v!_4NN7FIBK zI3k3mxhGo#!iZ)vs`Caf5L`aYx#+89n6d006Z7F2#crGC-i7it@HYKZT1iV!7@k+NkYOZ{r_PlpXXcx7#ycZ?#H&99C=0%qqDR-Skia zZhkx;b;Ow|yQ0Lhbfxu}OqN2nXf9~i0`t21UOp<{_2QiHg~w?cNM7j&`ppBr3cQjo z)*J&PVvCX~SZi=#p^{`>m=;-7O?TDsKt0x*5kuDkJTS zF{W>2MpP4qlC!J%tmoxtj^E;6t;`YB>+h=gz3GzFKPI#aEHP6_z~Vl-Q!qrLXuI|B zlsJO8aqX3oJ+W>Kp{gR61f|lQvg7Kn&M?rX7q0vB9dp)-g00>;WINRqL*HV6E4n+a zS~WU(BIVQdoYum}z=P=?Y*Oh{AQ(cmD_@H5>b)X}>*Fr+7+32~%e)r>o)XT#*_G&7 zAgi926;+lzOZGVZMs}mFvG3#v9dz@b6LMFerjw72|Lp!N%8QQblT)Df9kbx;X40>m zr!pgh!edM3f6y;v<_3jrZakMfO3h7oHV_-9P~OX$zX4>nD4j0~uu))paP`?pF5vqT zZ|^dM{YGD-2&u;O{3sTQN?u#d(p2xuZ=B>R2s}(Xx`KPHYnmfH;KMjf;?GccBh6C*qF6}w+P~;{?q0Q3_Xyf*>vNP=| zHA{*Cs1p_s#r_)_g(*x_K*NaVFH40VfIzoNo6{aUBV2<$98jR4A^zfhhB4HXhDkVnjh`V4Bv!B#CaTM)k4I9$3FlEtSLmw|#uqTB4Bj>3 z-k)n879)~!bX`t&upG!u9>xzEw0t(bB3$kFUORXc)4XN&m1it_Z#9FtMXo+|Bsrx1 zQX_QUtL?brlyU#I=JA;(g#q^mY_~~vJQ@Op8&vg z2o%|Kc(__Gq)*8IjPLZH=v&HbuYOE3*vdYRivV`x&$T(w4Abef-CL=bQXyHk$-~Wd zYEZ!8))>=b&y*vbaCpeI0S0ixqa5cXrE|JoA){Oj{4NNb8s@#-s$%_k4OS=ku6I;~ zhj@c)hHQW^Uv);?Ty-Zt5U}oY5_ynzHvEwS)bluI15K+uR=M<#r^kb(W3G5&J$a1F zF~c&{!!ceRdv8UcF+xWK=}^*V%y>QMBo$5@ z#B$T>A9ac(Zu)v_`-o}rXvz8pMfqcsb|p(L6U1#SQ5&=Z1ljUa&A?#ze&xs>;EP8x zZ+0E)4@Z-8CTmeWZ*SomuKFzeD6Ky6;D3>#y?_6M-cGatLcx=F8Zz|iw4GlPE2}*M zTc2trfgF)rY-x`$P<+Fnw6OXjc7e)17h)G|4T+D!JE|g{bKB)o5_i{smjOQ|JOeh( zT52@fmIKm{H(7-7&ls-X@ZINkhFS1GM|Xu2IQ01OL)+90%nVuVo>@{nKyM80I!d}m zbDXnW7Y)fbtC@aa$-9@>yfJ^SD4osQtt5A>-BD6}5&z}fk?Ub3!Y*R!PVEvFzmU+L zpa0%Q%S-&8)@ub2$d9@#iGGTGfGO3jQLSc*zxgt82;8T`OF>#xbl#8*!2NhU9Lhx| ztf+n%HDO046JYJ zErvNUmO#iNkB%O5f?n(F*cI>>Othi-H!4(o1%O*^aB>~^WUdc%+di(YI}{;C7bp+! zkfr=0gcXz-{re1yIqa!O|9+ixmnuM}4{>geD)D%tdIb#$6Dr{%N;(PM@ z^C;ExG3LR;bfjf~J!2OBWX&&L971_b#265bYhQ%0S^@&3{BW*44NN6=Ru~e)jm*iP z9+3B_1;La~^{PAEJvYcBKCkw(PxM%BKMFp#3c(= zG@BDA3Z=ALNcRr<;bes$xP^I246Q&jPB2A^J=835H-|@p3FCKWPUz2%R7PS_Z@(lZ zd41sOa(@8KcYs6<#Y9sD^tZi|66Q&gL@*d`v^yDhmXc*V7%EGpTk=;H%4UOu)ECh-G+&Jf4ww zKNlgW)|q6YfM%^rG1qY^RE0p5%3;~n$?Bz|22&Jre<$dr?Z;HW$30xFetEP=I&Rp7 zb>E~LdoF*p*5)a&=Hlqvv{LBxGJHY0;fm^d3LrtZ$FdRz+3q+!B zBTwiN%($-Hc3RhD-{qO)$T`^vGbUthWl7pS*44F~za5tH(5R!07Klcx$k4x%bmqTFsP`dc zTmYSM*J!!qYUl=H<#NY&sX%N;EUIyUd=gcq^8u~G%9chzV{HlN-A;Vi6vt*_-HwF3 z5G>x~T{~ihEX9FZ3g>aRhw%gN(HvI=weR?g4(nwq2w3#JoI=`ZT)k5m*yyoSR8QOu z3q0p>s?Pn37LSVu+{U55^9d>h2$c6=unSwfslQJC%LPb5O{u}n^G#)KK^BCma!IKt zP(c&gX_gtx*2Y!ypz4MAO+*`4`oT%!x*_3cvY%fVlGi5taz3z~yHAyBca=vZf=iV1 zEa$=(Cl1hk<677^y$l*b&Y@wM<*zmBEpF{Ha9gJf!ymXF-8#hfWhWqbA@Wkrx9K4! zkTz@v$;_@?UNtmPUEICM*SoWhPTU|h)&70qJ=6KI-WeBFF1+S1bZTcZ$pc#YqP#g6p6X} zDir+JS96(Ip*7ymFq|toh_FckaVL;|R4<0W9hZt|G~0@pr=}FPpRR&cgALN#!lp97 zEFZ6L!zp}bEiTLfbl&hA8Sskq;__t93eLx1n3s0i(&ZNOPmeB3MDm*M)U1R8L$ChP zZV1iZxb>PZt0-z`LOGZJ&$iBFUSP%W8-Wq)6&4E}(TW<_dva2|Ib!w_u`gJzU1rwL zVO!x?Lh0}L&Wy*h$#(T@N|gi{y?v_Qs*^Y)B2-@#uAq0q(8VQ6{UBwu_!GW)vJ=l6 zPs1q1O*2o0;QitLa_3-Z7SDNr*J9ok82cfZVorFs(ha3YDI=&tb^;!O>Au2SJ<*Ka5fzB}062-*C$zE(^B? zDW0x{9)GBrXu%jT^AzVNPGk~apF)*D(o;fAp`sKH*YyzO^Xqzk zP>;>$RT21Bo=o6h%Q9wFSFVpNt|jW_vaeF5X0 z%H|HAM&Ha~XN+(m*5Y;H_OsM`cXHdVrlRadhH;O=?|s<%t}^fv43}s`L^oy z=C1w7_*&+|T80N{Sx~0Spr~tJXq6ISKk$!>aB9oyCl>i*M}RuIjdX-4k>RnOls^se z-L3q9A0C`v%S@Z;^PCBuS%HFHyngXKFue2?$fO;gP}nsg6rURjz>H+&etZ=9vYS3? z|2s3P(w?KVG&Phzn%EJ+zfmg=LI6#O{JQ=#y{L%J8-h@`Ul~TfPq{ay;l7lH|G}}$w&t>R z#YJ?EiebFlz+8!Izxcr2kaz!;fJL2&l@o%A0uE8>UU3X9x6%arGP6yPeAR8;GPnZX z`>-kM#&8SIso0Bk-N0(Tqz<#fAC9F~B>&_t=2vKq%zFUo0u&;R%&Q=~XIx)m#$Dt6aHe`VXwb}hKLGJVuJrD$ z^@4RgDv;R(^EfU@OYf47Xgn)d{e8YCqc}Q0-U($?BHFfqBkt*)qjxHI{>5Ff=a2*UsTp%F`Hwqh9zMmVH zp-TQ9QP>xfql=BjfI4@K`$0nO5^C=BoTL%EL&XQ~^DWLM$ZX#1mf@U6Y zJ8MP5bOT4N0^3e2Ove7Gs7C9nNi0HIFc5i>atIH33wr=ev{kd2Zu4^>pg$YD7vgiasR zmm3LdUE&1W8d_wn-CqO?xuv5D)~6)`atD?%0z$$x^%kQ(Q+$_VxWQ}q??7?JwN(AldXm)_Y{&^H5d8~)0uzI%2~0Q z2X_5kL5f*F7h-TvkmV#;gj?=0F~Pgh@DucKHy*%8@!=6WXM3jVzpzm!-QuemTNB42 zh{Bun!WR)i9ee;{P~;?10@V=rL2zF7VI{(DcuZHF)aM$)yY7Y`cG9OT3VjVdajWb? z!S&$A3US;%m+_A=biS}@{f$g=qeA^$N7pgWTy+y6rI5cA3r7>)z+LwijB4956YgVv zP{J#$ZKF8Q2@P!{c&6xKv1%!yNyv9ZpFKz5oKKix4F=w)B|2`(weqZJHLf^Z-I=(J zvK735r#TTbj{_D`R@Sp@RsW%YbXr;MoL(1<6Slily`Qkn*+1g~hu z^EKed2=Omo=Dlfx*Tes*kG2rerQ?;0yTPK+u&-qTiZ^+y*;i%L)Khr>t?T=`3>QMv z8fsBPYG|WHzM%HQPcA|e+*QjfFCud#4W<-JiR7NXOm%Fi4;UcaDhX76U3!c=10|Yp z_g?yKTuAL*y<2!8dCbW|#2VLNpFREDMKiX}MmM^-&jSgbK6OZ)k%q9~5~sJ8ykun~ z@B6^*Tda^Gk)`^A_LmzTFZB~aH3v4WNw}1SrLTQjzw{%NAyg?dfloeN~pd zM+h}S#6}`=Prq1B=azqdM8zd|w;!v9z`@eRv2U1OQGDUEcaDdAz+KAp^3exLfJnmq z1#g!wOs7hG6B3BbYqltXT3pyvR(^i8%R&9b;EBT5uQE#69{y>~8|aH?VZ=!R!R-28 z(k>gFbCfW0n8bbwRBA|8%s@Wi{|&h`Cwpr-x)Ob4gp+Hxp_vq=s*X!1b3q8+jvf2< zxW91e%+I*-uqF6%dqdz=+$JVd=1q8ld&l;5Wb~$1Ujkjy%n0AM`@n%wCKJUkfbrCj z4EUF(7tLkrsQh%@2fSo$rA&-Qvm4wRE)F2xcgBan+j$vTqmNVTknCE4+XT>9V*6lY zZgKM*1@j&#cHMDYle&15+Y#DnwY$b-8Yrx(l-z}>Nx#ocwB50DrQXC%-5 zeklM*InH% zi!QXwU0sh#Y(|Vs12stis?0ImBD4Ylwe^JxlJ#|)pkkGlgU#hLM6OYu<0_b1f*R3X zYt~oicsnwjl%A2dreBU(Pz9ej3khCw$V=M?Effz(Gs&KJjD)yVmgMiZs%6~CdU z5M|jvpD9(vp_7<=5|o{+hHy0tg3g?nm>u@|+1Xn2sjhYs+s z*e9lUme%g_>kP~nc*}#f9T-cbGQ6O z!F~Sxx3ENkDG!;e!sDi$@4R=9Ww^Bd@DQk&G8sq$*1v#M^5*vyOc{w+1IMP3SA+c_ zs1nbw@2Gzw0tN|^GF__ge;=>GVqY0QxtepMj9>6;@?-2x(jY1+o@a%zVXn_P!DhB^ zn8W?f7UBR?v%84|brV)R)^<^(1{}QjZ%Z-58OMwmi6tAB@8%qoti2kr% zoHUOrRGF~CL6E!^6iUzQZfK03+n3aO>by$-)xvOr=p?Z4#Muz z&CMp(mTQp(98Lf`HJ(nXvWS~&6Th=RmFI>_}5|>XM^?mWH zY&ssxcb6ha;}is=cJDAyShzOZwFOzY%SdTMN822i!J_*D6pzZ!fJ4|OrL}yO^M(>9 zAk-dPz9#~Pb>QWk-^!Nvds3|4*n;68p-QJ1w1=t*)Q0B43x_wb$S>egGDmE*S%gKz zHaT89SWwfQm@{>3E<&bQ>XV`@mG)#x-r4fT4Ls98cT`Vl=ifz2DI6dXglBJ;aHBpn z~~~_~W&RN6-0@@`F)k z)EcYYq}mAgw)?~6d{fo{Etx>bVB(mL{s)cMswSc&HXrWWgcCH9lZmm}9o+=_V+D~< zWOMJ{5!w9AQOQvQu4mO&mowAE|1c@v~Xn<{o#{`d-Z>>`u42)CERyR zDqsU@N3pT26xKT+;DERvpPW?h6x3$t09a$Nfq}&4t;l5A61=<9 z#Dsqf^VJnR-|@)|#At7L)jp6Xx4m~v{1|%cTHaV4UMafu(xwbRQ$T{XvA{U5wz`pK z8jAjoHDqfgUO^Y3Gy4nF!|^0x;Uzqn@CnhwuX`=&3$OmYZa}}?U4;1dG4jg#U_< z@7bTLMIk)+3Y1Ev8~y#5yokNMVM#PKeaB2&jM>2)kbq(cvv!Ly>k2@9G2Y24w(}%S zlZF`>u(uxDer>7%p0In@DMilS^+B}KrOj=AcIcx)WqeD*^J_$)rJQ57z--@dPNo!_ zT7Cf%_X;mywu2IY+WBzJAlx&V(T^`R_X*?b zGzDry5F75CN_Gpf$0)4pc0cms{sg)+H~a!jlDPvbtK15ZP(z7W=grstv^%Ml<00IA zPx;;Z5g;8F-N+ETKST@!Ize)N;;w14(1`utwR@xU99|dDCg2b$a&ln3V_-ZgrjpVn zk~GN*&eF&yI4`E{XCz}5aK6$nABa;y6#5TNa2XyA1XkGVCZ*yYt|K@jUYw8cKZ(U;HW^;(ys>0?YM}j zrmLP~kvkQts2TPqkjLG#3iIoY!3v6CoWt5ecOR@;Mq|6ckk!0lTeR|XS@tiuGKGRo zX{zWaN2Sucn_K8De%@x6aIg#siB7#>5g)K|{B(A<$s0Vb5;O z9LfD_cb@~q<%vpm>m!Ko3eSF$zr*5LB3I6+cBLgy1qgX34VbdBp+U=7Rr6|J2&;iL zlz1WW&=FW?TRXcFrxX44{zQ}azEq9wmEpvQ)0w9U0RFz-CjtJT%wrW6!T8N$ZlOD= zJFKV!1tA5{LGdi)m>JRj>XZWEcBeqKqEt_hhHrwSsCsl)5Ge*;1B7p={EvjVwmXD+ zcYv-TYggrem9a%7Q3v`HO6srrNG1|oR-(iNK+@*zHK$lnJcAN;&T-2H>3jc7zwHz= z+{F4wP1k!BoxNY#qvR|&n3iY5uKP}Fqy@5Y?m(&gzPizu-KNB^;#(#9;b_0e^fh0s z=dvwTyOEXOC^iZLx6I6E^^u5$Lj6*R6UCKo1_hxt+P@12JaY@d;y?WwA)B|LCJ0bc zXf4J{wM|-!!quIcB>?PNB>K^}z4{_439of?Zr0?VrrOJ<%^d&PI&5yOAM|4R1VqSm z5n_IB!nf-?~yT)Mv8u>AensJRuGVY~&%i^JUbx|tm%+N#g& zB;8s`z%3u$?fDFP2QsNSUq#W3_E999sOG0IU>eZ(XQYz`{>3m2jUATGu0{FB^-Gy@ zNdq%%Sh}P*^>ywY;k`d_)E$$D3pjF;TtrCmgBq{-T~|89iwFik3G1>@Oy=jQ{)D#1 zi=vgm*12aVLhz-A6PfF(3Vn&s=7hu7$hkk`8z2rvT;9Rje;Xf~w$gQtAL~vn!6&C` z`~Mc|7aYr9RZat}eRR_Ohu166BrN5b$({kwEXOXGCeVJ~!3Z+62Ka@~&vkT!9tt?w z*cR<;t+r?31%*3h5(!;zii(PkoX2r1XUNd{^FsM#pTr3rNhkt_&m z0*|0A;UUZB8L*Z=Hbck+M*>%>7y!oDiiK;D9%T?y4@B!_@ZS8GuZ%>ep-J6JNQ+JMX;%8+S=wVgT4~r26Qp^ghJ2-1Bj8sEK z1avs8&5IHJDq{UyIMLXz!142qgpUCEKZlfk&Fe=D1@LNqS(>@)vwBWkD}Lxzrn5tB z;qDh40KvV92k>pcRGl_eAiv$xnkZ1eU1LN?pL3|4lg$$$cdn=}PZ9;y_@9sarI-P! zA>o1z<-%p9T^sMNY@QUkHAgVSBxc>_!SCJe_r>fReJbuMcO!uuZCey#^wO?2uVEpM zJ%NwLI(#SM$jqXpl0Toq@27`OqyJQsnJ9Z}HSOV!@3Gd?oM#)EU=P$+fG&h9Ym#R~ zd3yv$lc%dn_jj%0Lu%B(i5`}fms`)6Rf0B>xf}h(|@$)qJIgUsqSC*XD+^PG!~Z zMFiX_GGMeVLSQ)vX}XPjmyVW^l1yOy$C0#2^N_dHzajxVAN*^Q$x-<4ydQ~CkN>qn z;PB$ZKIua8E~8!JHsEzxEV*MrJ?!r-EDn&uo$57IRN_#16^)JGadUI~g;KF3o?Vxd z*V9uxA2Gat4hhVcoqvDCqwB(N%}?fzs%Di>QwMORPO+{f%OdkRo=0knhV#}Z5|3M? zni?Kd{25aYc@>pz_6fC~<@R7ye0klP($|%U{ zs;((V{P%A`64E4 z!BpepjE`>bpx0VFx}L0P44QYJ0IV4oqImZsE{wwa1d#l*bRpsYT4_-+TM-UOP9C){ zAtR%~Sc|DQ?PJK0H6jM=dhzMo>Ykx(7PYti7fyLw5j zK*>@)eS_$v1x5upkuYM#90i)cq&2Mbv^O?ws;4R%2`UXN4ONZh;E)aanv7)};zs0{ zUZky^cQ`+$O#dAJMSNjLE2{lzK&eX-j1J^40Bve;Y$au34cxSsv9Q(-dJ&0%3pA!7 zD%B@1)zQEK;QS#5bs${%Sz$WG!eKh8HRCUt0J7_0nRddDt=#X zimUBzHXQi>Ia%G8)c=5%)ez3&{cJ#Q6-~G37)|%U z8Hc@wR#un+&`0stE~PCIX0`a?N^1}T>WzL^T)c3Bgd>8XJ=o@P=ZhJ%YQo2E_xl zJJ#5Q$m432CleHq7k` zpa>WtFD#}(nFx?-XGxyQb|AvN$p8HUV9wV+S^(UxGDSs2Xnv)8@csS0Vaywr{85Fy zjRW*Ke%ps!%{zjf@dU&h%`lyBRN=p;P(CohKO18Bl=%wC_(I0Kx^&@$noHp`d|@Wd zu1Dhj`_O<++l<`H|BO7#-ki$;BX-y;?y#A$fjb8ec6i_hZ7kY33SLJnZ|kX9GIL+$;=#adV2Z_YHVQv)h{gu z5S8wp4GH79H&J^7jW^6@^r$dE4+MWzi#v`{GgxWOpS1A}u2x+rSaff+NmQ7ye$!|13AT#LLeAR;IHIU`S}d^y;%7 zcsw9hT`mU)hKBO%gBlkGLOI=k==JXLRhZY!R5J&|-jj;ihK=}AjZ*OlABfk;?1 zoYPs<-@k#8GJtEmU325A;~!LbmPw7vDTzwC!SaI>S7QCu1(J#m9<|bEQc5&YlQk>_ zsv(7m+5Yd-B3=i!nlBOHPHXvJc1mzw-#rHF{~T#}SA~z@!#~H!dtu?XFgxSwT{U() zQZJzIvvWhbbagBTdAF5%e$l@rBm3^MUyT?JWu-X_lBj5yHz#qqOiHANpl)V1ZPpV~u;$eDj+Uw0=TAwek zP$+>~I52P?L{Q^=?N`yxvrESi|G{KO- zU&mTGMk%q=#D2E_me}WYq7@wj?VFBF!Nf-htdnLn-+!@O)3@;f0`e1YU~xM8=fqfS z%8;K*Gf!uYFX`$^1k=|inYO=S%VT6}+O}sOUX$E|?L2#M;g6mD3c{e_c67kTJ_={K zr5Ysb_b$lrt&iMqO1~c zVLNqzhyrYzYVw?c0#p}+L3Gb{(>LSV?La{lfS7S$4%2KMM|$siy188 z0POz&81hma2j-L*FMypDq45QY1G}j|4P&0LV3jXYX!YnW057?EGnM`AeoS0k_xESO zP@2$*>P0VP(bJS3u&r>`;`lrNmCAhPpnFY=Q(XQL~lxP z*q){H^0KJPS;~=4i+7(Vq$`A~)MwJK9%@=qQ&W7##vJRKE*_m${#x{;Su9666^K%o z1m6Lj))S?awb3$HYLFjqRD$g_@9$bG>y9u~l;>FKgDXeJ{;0yzQ^Mh?8zjK1i zje!(<@zd?U*b0RFWhd~q5S^wy@SW-zfMfic^PfgS5M5XRy#V&$WB|d8{7h5PO*%Ob zHSHIGLWWYHEYE}VEx7aJBmA8KsuOZpSRAYXkd&%5(ZVBd4?+LOKvpRc_}I=Z8bLvj zC%?;i5g3YwL#M<9Ouall<~E(Jia-Rp{zynr>+b21o-|nL2(3GxHW9ucMx)murSi|Z zKPSAtafZFz6crQ^6GJNd>Uq;9)4A2&_Ws^g0#*W(oMMS z4{L)yp4VYW2mvOuq7tHa>EGywfN7XLy|;8gNr;BNH-(xCyzBjF3#1SLdLc0I=Jq6( z{zn4x7DbAxJ$Ek;Csu0279%sQ?To_jf3zMHexM%YXJzz{piqs|Na_YHv0?kO{=Hp=I<#1>~Zd3{)3LrYlDPh zuXyw8Hs+hYWI^;7cD~hT;})`CzkZaJeI=C@)!)xxY+{m~n@c#oU|b#<9nEg18SvRB zj^K}z+nqcNITh7O^?)0RD~aJO=2~~^z=i~cmW>wApSPVuz4O`yJF&eeShpVM`@B*G zHS-UbCfEC>j8hHqb3Y{y$jHC@%=1!vz44l`ug(^v%f`j}nY;O^?%lh0sicx0GTx?; zzyDmAZqA_x^yhNsZWNR%G3$pULQIjb_(0)qa6qA(G{}_oRtH%kT(GTptejvn-bDJ&c0*1ATE(lRolD;NC!{o_+GPN_)@51g@{ z9z}F?bj^->i7paHyjj}}ZQEy;rNYKH7>Cae_be79f$a6GDZGba)r0MdSRdkhW&&9W z1(fg2H*KrK1x1)_GnP2L@ZPWAKc)$$kI%cGbto=-XCA%ssrho|J3(Xs_7 z|8^^M-R-THxU;eoR;4KW_I~Hc1HF#FW(EymaZ>+mqkf^ucfk{W!c*i-5oibVv^Y9! zf5$%J{Vs29=k&OT4bAWW;gr#CXIlhZkE5)?hr0FF-v$a zCKP}~mhF>VNZm^JH1>c@q&?i@HY(uP&8~q(O5QFhLk#V%byruH>pE*?$j1>Myl<+U zb)Tm0iD4v?HM;vaJqVmte&@fGI%&`kn(|_#$UU$c#0l@><{|}enYCgZrpD%x4O~#^ zpWZEO+5y*%nZ|h<_k+^=1N{d&N;<$5?jL`taTxH=mmfC3XAiHrbV0BZ^%P&yP&M;tt- z2q;g3m0s7KJByvICs!~<&k?{3OVbhH&Ww0SxFnckeG0t3 zPQs&l{r*vFI;7-q(y>2YBmfPEr3U*>`nVZ0;nnFH>!eM#ue#o_l~6$7?)i>>X>J}wBgwn_r^vG6$R&)Hd)wWT>5mV zxRwzxA&+f@jK#aYf7A52QfwA%L>=QTkKwH&nfJizueC9qq54M{mdk*Sc7R~P8SYsg zb-O@?GI7_*k07)LVUzayztY9uuale3Onm&Ljw@zQ8n+Jyr?%O5b`dz+BV7zuOo!CZja%@jR4u0C8&XY1Ss~jI6clGp4By5~H zZ|&_x7lp(YjpsXkSD%?jBxPp@cs_RmY($(ht+!F7-+&BM5}m15U#_vOs(-zr=6o5P7<$Sl}>GH1h&Ywhdn7UGo{?y8{6)= z_Z@ZuvJDFjeRs6wEi*mLm$tNZ=4f z;YP`n%X5;ih{yS)X_4TC;CaEC=0`I(;xHfoAylO)+%6>2Wg>vc{uKXEfnxvn9R8RF zTCTYrUK*5bAi5TvDOauT7n{ZWwUt5vBax@4k6Pr}=R(MyH4raQ!Z`>u?W5FxxG#z< zAQ^Dv6qc|&FwIFRZ)MlnVZ}#%9rmm_uY|~kA|Ms5r!ExvC>2jKXx13n~ z3U^?A(ug*i)RYwWOJ5&6uqtQX(i9ZbvLP=_B#y(lKCjB)TT{O>TXK}45C(aM@XXIM z`SSXiQf)la3pPqiPus4 zw8jCGy~w|Ha?k6M^Z`OlZzQu>jqIUt8jw+3%VKwXXN9KM{H$6bc#f8_-&TggR4wxUW@m)IbQAPlx>Vy}I84$iY{PF(2B98kR@ ziQ#=i+%k$q@$OxZu-tf`?YUDNMg(tn{~|z{Cydb{=GJ!L!WpVGO=%2-rj?yW_ZY)) zu(lDi701pc`RH3Kd^UJv@m=7k{t+hWVpLqWt5n2L2#L@zfpHYI~h#2eX^(zZ{y|ko<`R#e=RYYkRox}Ew(ai1*R=P z?QVo%h`3K*dAKZV6ByIpWYWie>t?-}|58H1<&GLp3S7rcZYA~0Ur7}|^p@k%yoUm) zz$NQEw@CPIu=p^gX^Cy!iCjVJX|Zq6P$-nM(VBlTBe*0)DLHYJ13%l6vL00bd zUT?AheyNy9OA-?~%%dnKXs~4YBriBQ`#(?-{gqDOvMysIAH%kQk)*yqf;|1A{whk< zOb#fjZ~d+<75U30A1|lU%>z@^mn|D)6PUZRCH8}-I|IB?$*x;G zyH*ue##3#t%BGJpbT6ct@Ls4aGdT;>o^){j!VHk^u#g^6l6LK611=#wP1OpEffOT| z%~aLYY^;s*m-m~LjHC6lt74UF3k!-iXtALPGf=`qK@bB!t$qlh312MTZ(QmNo{kFs zH+)fgb*g`(A|H%2p(j5o<&qP~fr4Q7zBOgsGYVj0^owz1=x)emHt)OJyT0Na5=@kL0LyI{*#3|6& z?(03UM+z6l*X-=Q)bbHY)hy)TsgK4b(Jcw&)~uL1Dp`UU>6yhbztE`m)JXuv?h4%I z2|kI$4{ab<=O+OuC8u0!D=+BR?y(U+B+n^A!64ik4Qmt^-C|(-aV5jAf^|7gyl$7=liiI%+BW}}sd;!ZS3G`h`)7rk#91*Ui8z=>8@>h@|6CrR3rV{^yH)?NS5Xh`OJHSW zW=6#eNBn#CpvLSGY>OA~?fu-;1Vo?utx`s6kv84)$4?dQv!CzH`>>FjzA`91PGeMq zO5!qrpg2-=4e7lK=l`HX&#=#R11Rvr-Woq9NYkqp`+2z)Xfc-mHCi-w>B1ql=q z#8Wo!F|;EZtw6#%vv(ghjbw$t2;eF$lQH0%B54t^80xxqZ&p&_$;@D$dQar+Ba8Eq z>xbM|qz%m=B$3!98=}-;U@CHQO?RAMhCg=*pEmbK+RfQ^aeiZIm$M{(p}OZAl=<8-6`EAEX~pl@73r1e_}tua_=wBnVBAx!OpI9&tAn`C9YDJG4|C8bn2RbS-$E%d!?(9V{gde``8oSee_|BDEvMcYTE7(EY;qk?8l))%nYfCSW~f z=%(>jHp>+oOj+k?!M~8n;j$tmkZ;#Ep!9~;P{ z#9@{W0Qa%?G-HxL5^{XI9h$#8m1vK2bbCv?UA zjK zd59A&wo(4Z$pPzJo=5*ETp)a6djidz8)baZZ@KJ&r=hL&k&bT}bB^h&Dbk;@KnpXW z;WT}`y)$t)^w~4QPU1$NfsAjDl{{hTn)q8qA9^-PR5Xqh;$BucBdR z+-U!#8<8-8MbN$$)iL zmxo(72~~}f4tTUqpe@QhCv#?lCLpFPKWDNaz#0qv?Ud`Tap%J!zsAp2&z2cw_;q+L zXJZZ4OE>u0>gPe6r#Hh3PI;`Ik*8#MtXUV_`8adtM&WQ{jzN@P~)4`;th z;#g_&QvUT>%*+2Jgh5f>4+BeWF4OH-VWJo5(olz=N+MVt?DQw!$h2W0d=69|w5Y*vI%g+igl5KT; z&hT!152W{GNqK)ud8K5ytXO)ODX|Uq98U&txAO5`9}2B6DUZj3I=_@2;vvK|IxW0* zlAd3{ur+a6*gDnPYSB}|(Rd#<_Dj>vc5Z4bEQ}B6Tw6aC=bmZ*-gbQKB?+xJCj8rq zOIUGJ@atYmu^6EZHSnTl)9>s_gMc`B8DVv+SOidl?Kl-wXro`c*ev5 z_p;y9Apg8=1vwtkCnPs*iKYzTs8w$(2mufa?-Q1{E_5yBYl^*{6uk(yDDXh(LcB)u z@?y$m#jb1_GJKQNbm-fO&dS9|^N~zxVRe+HigY{Zq(Q-FK7d>BdYOI>nC`_#t%&!T z$OOhg_p-+4+Ur` zvt@0V5fE$WAY@QzzI?x7-~gaF*W?m|?BSMS@*JJNWv;-+(_Yh8DZ<=ou6#%rj6ly( za?F{bGciwlikhx_R4;;?)kKa$QZI*XXXfaSBj;-FH4A4$CFxHtgc6>2`F z705g*FuOa0rA9VYOW~%iNRMzvo24c9#563v z>D;wYe^vKGxY=^|oXa`=#My|?{sO0Xxf$4|zrOo0X~hTc_uKORHIrCDY36wBIBM$^g(i0p(LwT(Guvv9cW3K=w5*$9Dk=z+A(b_w+cEH;%D`3iVL z5IE~)FTFGoK?nrsB?3IU@-P%q0&r%}gAi<~M&63f)2*b>L6gq~uMS$2$4^BB5r}HL z)SE#O^oNsepzo2LNK$qvIuqa!5v#3ywYj)pRg8UD%Hq@fhv(`8$>y6urpv%By=&*o5Xtt+0Z_%~e;U)VC;_5rklg+eA;w3Mn%}Y6v>AdclCz8c`#>MmY z8?VC#QnALi77~NL#=G{Mo!lL< zd7i0oy*smcnEVg!75Ojy!=Ghu@B4{h$CsC4HJ zM(E{w;+<=917xSF@*{-{1g;z?yM6EU=%@uqin)}Ra=nPOc(m`lg|gl6p}f!~+#USF zVrYzG?ZKhs%)C#my-#d{P`wh5W)uQn4d=q0yJy;iY zm^FhMh_FGk96XCk>jaqarNt-PM*==MulI-FaK=%HP4?C$*ncl?aUZZ}+27>x0(BTs z#latS84d|69*WY7chNo)%XdpV05Y)9$()o%FbVwH--$LKKdC#kdOKfxmXw|q0yRI` zzz!$o4YBP`fPi&w-QfE#lZNbH>^whd9Gv$pjn%uh-tEipgXe3O89J{ouU8#ryerjp zFl)1UY&E;qdnUVou^dm9nxmcu9)%%B%f;A{NqbuhccIV53FM+~u;~^qE##YAxY5HO<==@rVRdN-z#RMR>96uUia&f> z8^@c2u{I_r^V*#*E0}AyJ0@nhiHT`HefN}|?aLeA`jK6IQdYBjb+|$ZY;UMZH`8OB zS!2{hBeDSlPiNa6^`)I1Z}yuOCEV~wO7(M3;B4?^8&lhe78r>GIDoL3pm9?Qw(F1L zaePQEEiFLwdGu&w|6tDG$@YDbZ~q?pI%1j`JHAGT{ih~fR~#^XHnu{4*G#fPk&_M? zKfc+E^|8w%{=;tf{%vtqY>eA1GtV-!5Hruds%RBLI3~bNvY-` zZ)^UHNBd@Fxoj<1g$MOXH`GR!Nuds)pqe|+_X>b2Lhvd*1lyGSzEu)T6|YsmLtk+x z<*56abr2vfU5-GqhC?q}wxVAZ%0$W^6rCsGIIl?BJvW#hSD?ZHgbtoxo6lUenN!1; zvHjU;@gdWfX@CGdJaKjepO1byfJCi{;QR75WAlY?sz>Jwdr_5YtjkF@ggo?g=hpo2 zw$}>;L}Q0}lDd0tHIN3D)xD~_%=Ux`^mcN5K&L|ea~c3X3zXwUsbh?Ixu+_#Wo(DY zJo}hMhyEeDZa=V4jXf7!lR3P1(~o{22nmrNQ&soK(1b2901;qL?+`Fy7j#6Qh0$7t>Q4V9|jb4>R!-gE4F5pxzQDo;=@@#g5%BBaR= zdL<|Hh(wtV`#{5;esN}Y2b*DPmq@YTZeLve_N(z$`ukG1Qt+>NvxueAkUVS2%~RD4 zubN|#zhz_?^QZs7;AVRdaygJEhFoeXF(9fveO)s(m5~JRjhfm6HG0%Q{8?WDuvb*T zvRkE2ML;~+?UN@351M)G)N6~Csnewii*p%_)$mAlVzL1^v*39KxL7YvLKklNIyc9J zfmNCi2d0hafdOq`V#Y|yh3`yc-~yA{m8OFvK!O`u17sD1UZX{!?$jej_i5++Mo-k% z+`$~)0iY&S8KJ5Xo0w7eC9>4ut`-JAK;$wb_f=$_OksmU#!MFm%73WebgIW&^P%YE@lUB!cTUF4xt;@Onv%u_@!U~a z@zLHR2nluYb52fgiU3y*P)m)2uep87*ED-)s*`Kgl@8%hai;WKY!%D zo*h9<5#ht_sAo3(yTc4w^$|sx(o6B27-Cb_c9S_XpM%stF7K$bIw7-1uCD(hwo>hT zT!v)F{GFe@*cH;+VfVC=l~e@>{&WZ6O0;Q~Z1oNbi!cCP#frlghwwsL5}ewL;4^5U z#P!tg;$~|14gVe3ZF5s=8o?+;^OlfW7e4qch2O*g)#gcPLoYQ=OZC2Isu%t*?9zZF zpgI9sC>RoAHcRXu156t!Av>o5W}R=?2(XouF1MmG^d~3}UlAN#g_n3N@eKF5W>(<+ z9tpG|Y|jw+1Fl2#;=#5jKKJ{_+))>f?hOzc!p82eULh;efY~>k7v#r2^tBO0Td**Y z)b2OoiFOHk0A@gVWKF!{>Mv7ma7^p{#<&iUW-HJ3jL{JiM7D z=mRm!{lk;cxl0Bdo#?}(*=6y0XP2Du&abG4sIzOZ2pFfOyDIgD!0h&a0W z9cu+SihhEqe{8&DQB6@@J{Zp`yk*?rY0i`SczDyp0=RNY7MsVnRz;?ikf-II2(-Ry ze3e0^{Re?d3pyeQ0f3Jns=N1Lt>VkWNVh=>pL=;0>67bwjRRK(E~_tKM!MM(4DVVL zco?;87BLR8zk8kE=RPWNeZp(S5`nMNTBT;s(TZKQ&SqniO!!+~vfgS(`l|G^k3LgZ zPg2i1pd`s#Q+AsU4sJVuSfoBFPR^XL)f4y&lJ;kF34Sk!B_i04PzT zA(K8iI{IzX%q?r&2edLa-w_?OH^+W`FGs|2nD z@R3Q(vY;BarR19arWlCbG$`j28FccP;qE3CZHpa3!3H#c2cTvS8v5*nKrH0C_rt@| zWIVmHj(N%7-QNOT$ABur$_>Z)>0WvqEd$lxj>k`%BQ)vb$y7W^P0^saF7?n5(|*XUK<}vV2yCR=7Bxz&`V#@ ze!4n8DPPgde_VCXz)z8QElkn?FOrlUZJ+9S7i-CknX~FM6P~+Y+j#>0;me~MA@JOr zbXYPn80b(}pgAdr2V8Kacgn>)cp;$`Nor`PDC#O3;~k*&A;!)+f()_8%R|@>r^Vfy zzon-8-u0I?jJS1vWvsionKofspRBri|1+PhsA{ld-dfKbSk_=}o7Wa}ds00JunT<$ z6apasw+zkttBnF)H$>i@(-rzOvI4{>^iPM~RWr-0uWL^I_>uPm4Q38|$22>Owc#}8 z4LeO`D!;~J(4soKVZNpkpQNtx!EV=s1l(udA`Vbu>iIz>w&D5-bI0_&SiPkxL^ovG zl$q$y(C`;vz()~};zys4(cIRglk3b+#Cx}fhTAquckcNpP{g8`m?ltR-q%_8FQhT- zooa`Y-})+@tnaf0oPDo|Jd>VZ+IMHp*D^~yaDkUF*v|V6&e~6St1Doj*E{6p$;Zxr z8Wz7ljs@nEOwgatVRFHDSl9QbBn_7@>kD(ppEQB~$sNKKEqkWf$cJFZ_lwVNtHB;P zFRsz~#1mW5XOR7OvlY+{dw@Vt$!50-_%4WGccGKys+|C>1|`FZ}wc z8EjtMC(ZUfUKL6*k?i#DT%cwmpOCGGdXS69V5QD}U9A^15U&W*tHAtH&o}She4fH| zay$i2t*{)jSYCoORSEb1m~!d7fVunAyS&1hPS(cC`q4#LjpFH%s(M!=4~;pkB2GZg zXVSug3!ao8&E!nHX+0n_3j#QcuS`L^qEsJ7+Mg01dX!Rf5&rN~MUCiqE!HHr(66T7 zRD+=hYy&!Yy?GQb$;^Jp67tMqOk@Zs_4-Uhyf#TUkb(QHm87y&kIz^0H?sag^r6>t zmR@mA**{L_ebm3ap|Bm>_FqZ2jdO}?7#fm`d#+S+9iDMTx_m>xu9(nL9paL@l$44g zoOaFP5(piuch}?*E{jT1bCp+EkdgGQ9blo@xrTH1^YYXGyRW#EL?lX);IXs4?*)gh zv??>P*@;-_1ynf5SkhfdtoI5UB!mmWCY1J*DL)QEjAWSzP`$yIQZ3KxO%Jq8 znbp2##BFHob>^z7vnQ=LPbI6qCq&!UTTKEL)XBgYZOeIrB2bV-1ML@UN(K*okXB`S ze|=9<+z5$?488Ogu=7^!w^;vbOwyNy8Po5dgyzr6!6Q!JKKLngjV06@^fFVakBQrM zc;ei?+ByxjyKyYo4;Jki5r0BqdZz;PfR|Llz06R0FMoI|xj7yt9L(rPc3xjvmFft_ zzbaw{=kRx;rtq-#LFVKbXHf@H>fKdwa+=M#C#z^kS=Wx#3DHtwC)X}jMdwW5mun?ZLHH<4TpVdFGb})ZJn*O880ax2 z>$L!@?yXS)PdE8}v!5F;Hch5tKguSvdd3yLFrkEgyMz zjXAHwQyni?_eiD%{#bT;cT%8ngku6=r9EiQ3fTZHV_;6K);7fl4Z^25#5SefS7qRe zY7c(~;PE-BON}}q@gpF;9-75$!gy~i4WMVYw+$mABLRALduMRR6*46Es;9^K35c>r z@U>^;n2=PEz{l~yO2jr>{|rb(f(o^G2*d2Cdztk8mX6S;lpF^(6>cD$=moaEd`9MyfxT07X#E!2EU7E4__(Qy}{*~TvRo8z;lbM{kL^Jrufp>DGY=Ugvu7JM+wf^l;2hO$owNXuq=z?U!y&MOaPz@#b7-HLi6E1&qg#EODW z)y|Ienx=oLW&wXDu~1m^T^}U?fXx~G6jRvjKePO9B;U)7>&;i|n)=!PWuYtmXNV-c z4Mnl4z({)KOW*dQDQ9i&tAk_X0~ePCt+A|vh%q!NubbJvKbcmxYFRf*k}jg!dJ$<1 z{*ZZ~)2aW-qy*{2KLG%q$$tP*OkHX;u;RXTo=-j2yR?S-^+1_m6DO%SLqc(HYMou# zQ>qyD#yq(2qN)6tM~zwSmzMf@uS;EBGS~=d??7vY6ALNG!%|S8n0sKb`%;2)c z89}=q3OuJ-$wU|k~#>l5DS!zcy!d>60Wh?d6*?s?k z?CSxT@W1&|GTaDkWEgB?s*A2Hy89~9Du9C`o|^~a0H^~YJ%YhplBHpl?WRVjtL|oAl+kaOF;C%h??#e!r>Y^Rtvb zY8XtTp_hG&L=y!BW2ibc)7H9Ty|IP%8q3z{3{~yl82*J@uro*R z0Lc9FPr==J2y~i1y6%0arh{SeHp^y@o#_0Jc*O?dMi2%!9~*k*i^7#btVfE-v+m;6 zLibD%G}|Bh!O{4$vs|1tjLy;tK>(kfp|CU|>TohXr_z5Y9cs#9MY4UNf4XOpFLKx@ zZA0Qdic!197bAV4VMT;yx>ZcYH*hiYO7~;{RVdJ#_U_cc8Ka1&dQ=jW)9MxybJA-6 zg4d{DCXJz#MP(iD&_-p`ILRF~mR5z~U!My2w)99qq)W=(p&y`GK&xr?8tR!%>h1+` z&LPz8Amx8`wiYVU7qppqDw}muI@3<~OC}&7+NX$?-^nBF!V+^+)C$xz`O0Yi@h=g_ zEc*+s`?>!^%=Bdq{f zAAF9$jVvJykF(a8ID@wCua?#9i}^TtZh>O&GI6TCAME=}S;29MV&XC?J+RIQGb-{1A7sVP_jI z^w6b2Zm;S5a@bfGXSAFyuMP*1Q;%6ydhim_1KZ)S z8k%_sq_R!latu3ePj+;QcReD|*8B_R-{Ksgat$PO8L~15mLlQ(_)qz<9=v`sQPqA^ zfEiCqf9Jya?JsLDq<{rjQlg$V?+D!QkiK?3TpyKGQ~)XTX7U9ATf7%TRUUU+IkARP z{RgIN>9~sxD#Rx2!03}%wnvPI1w7IqN-mxZpg)>N8O+3}Up}DM4KzGNH(XgR1rPv2 z*JnWX&}XzF(!&g>(mbgckqKkC$o1vAv-oTlcl-7MbAF#Ky!`2*Od2@M7%prSw;KIl zFie_yU4JDP%)T+U-(5h{*(q`SU!Y^|l7`9#Gvli2ytS~K2W`m&peF7keBs_#Z1xHA z==#qiN8`gcUwOr=c;ZRg2}pl!!1c#&3gCKp9Dpi+NO1Mf&Bt-&C0*e*GGOh-7MR*7 z0>}rDY$85Gvy`82Z@~TnKB^l!0Qwn)KuDt?sJ+TUpvjaY zse^EZn?-8#?PO1FMlV9eL)pB?!2iQcx8{EX_Y7Ar1o@74)k4490ZUcVy z4B*9ze7>5H0||VM?IoPy#yx^H{-C1=^tpe_PkWDdGZ7&)G?nBOVr@anZg$pHX1vcQ zGAI7ShXrtd%*05k@yxfPrcdzdZ|&(CWID)aY*gP%<(H$tR_luw?p<926?A+QR>oXk z5hJOo^8ucT*~+-CeKz+xIq$ZOU0mxgmIYpB zZ|`zLeJ7sqm3~r&Opud0on|TqdJ-$aBQ9gwV~vx}I`qw}${6mVNt1-$BqotbN;K)a zqE?0+0A*R7zO6E`IxoH$tkKCLrR>O6o;DygQy(+Mnfy#nMe%U-_TQT_jG`85*m>Rn z6{<4hjbI{hyo!T%ygrUOVC0mmwuG@GCJ>m$@k)3d+e8G@E1VQp6%OQ}c1$*vO>k=~NXcx!hEti#l>$a?Vy3e3&D7CVJb{P_X~$+r?{4J&J#ZkeUKW@r z*xi1=<2(_N$+C@3IDfwguwkv;!77oLvYyX%MTJHUsgQ>cq~v@Aq^Gl;WUW7)F&pt{ zbH}J<7c$p>Z{_8$$Y?sE;A&FX?{ZOUd&mw$-VSWWWb8Q&$~;p{Rsc9ii?)HR;%rW= z2z@3q5WEwnm#?@8z*a5Shlyohv1AQoF<*VJG@*Fc{Y@KcOY!J+NX?3Dfr(LYe%!uizYr`z+J>U%ftEWiuviqo6$s4cZ4q>{3C zHz1@oz1b=P11W#Gmp8~bnX8QqcdZZa-&(a3lujd`H5-9$3F|V`s{NwHwR%uOR9a*z z^72f0OWD1zN^h=u;A&jTNzDg5s&@~j4zjN0TZq3If)MZ<+PUN#D4bi%=o+u_QQ~w; zJ0_+pP3vD}P7Z3|`66&c*4C#E*qD_U!jrm-Lr%CY$)5kf7ruR$gVMx@6w~;Eu}+e8 z+5Ts2tIQ0|Y`{alk=@zz+Sa^E0Y)=_x1DFsU-rTHc|=Ty83oajsf*GrM|tL-9!DII z-Tq}%m{dOxncP1Sv7g#*Mqei%b52F&nI}cX_yaQXbH5YtW{qp7&!gfow*eHNl&M)f z4^2SGkEwV?HxldImT^hd0Z4u|+SU9(Y3D20^i#Ecp|45A$LNtS5qYX+_hZTVN+kv# zlhj-+T|XmGPb{FPeNRj*>Bt!^8(<(yG;Z3Txa`Nv{2I2vPxTy7b1-YdyYx2VeP4*q zGW7e%rJ-$&WfjjngND?*!y??@OFO2Hw$@;K&d1nB3t7gA*oxm0uBnp+y((FsGjO%! zZ9Xj3su^L?=&w7U9CA&E#j>z?eQPxhPOo?*kYFQYi5s{4jbeJjIVG)>!E)??18iFH zz`>oZeq6m{FYCG`^=f_Sf`S5L6BDDRm2>x1-m58*cNL8EGN|W(16F8;U8jfg@@H9e z;4xY2R=KhRvjRIn@~|DGWlomR5JS#XK@S@@aWG(drzZ zXWF8-p{pe1Bv1TVeX&wJXFoX{`0of!I`&11v7OBZyWG4w&kHNvL*~@JNNp;C0wtHR ze-9>2mlMZLr?W2~TP)A`7?l1YahLLHo&M!IPb&2dV`P0UTaEY4R&rjyW$|!Xjljq{ z@rr+xju(Vuyitr+7R*z)@&1uJbjQU)?FpI<7Aul93rb?AyYp->|3ih~Gd}84!80&V zQ5=+Qjvs#MeW=0h0)p@OpB8`xi?d#}qVJ35c7py0^7U&4w@Slpl>*((KdEl!_J3L< zlwN%%`}sWH3C$!4K-LGGfiFVZy!&6Q-fQk}JcOswgfY(0Z6S5H0#G58k2 zh0YXvuMa0qQm*DeRj|ZzpKBN9uNKFWph4o6c5M1A3OCw9tRx*eEuT$?bM2)VCZ*<^ zRO9sQ9ue#K8T!R$PUHFJD^H|*hIa=RP?CAxoUTc^H9feEl&X|9U(Zhh8Lf9`iFX;i}As2yT7DM~5!8kMflKpd5+@nO~nM;}WR5z5X3{4!J4~6gUo&)rV5{ zd-VE0rkui8))Tl^if}y1>63!w=}j8dn|4f>Bu!0jt>Z-Cs*k{4io8 zIUt#=kF0YG!(m+FTFsbgn_5$F3TN-kit=Kl z$kYrWe6aC4*hsdzK^5K88gb-i8I1Y^wWSr5uNQ$@31GF*L7PxClI#<@zkF&+TgHbg zYk!2z?_45iG*vX7o!5GB8UG47d*ZkA3_1M*n8!)Hc80EiUfEwg!H8%JeFs;S3m&`^ zI3Cy8x#b45ubfmAur&l^x%f;vK%Ez6Wv3?c8L(7Y z3RC94dVJ*RrIFj`f$5Q-{g&xKaCiJ<}y1wqfN#Tziu&#)JM4uj6t#Z zp^1Y+n+to>M}gs?{^bH@&qIfZ;lO-z@(4+=S2%gCfFS+a_($dAE(}OWWe=F-YH>e# zhm!!9ms;{G|Dn$mHVuUnnTFqgj|G+`I4k_eEM|5l)R9+^J;^msMe?EI=)T<&KKbBD zZvc-ub)+wl-qS!eU)?Y7Sw)BEKR*(`G;r{%M%t^jAASJuEIGsG;d0f;ZPIdfKMU+2 zNukz2BSVEaKf~+#IAs}nP}Tsx?|@v~ZZS3qFSRM4e*5qbL{R8kAC>ugoI@>s{-nw{ zZU*?=0VF)og$Jt56X&nITV66OrqW%W1Z2&N`NhIc{alnmJ@hagfXW&m9#Pw3=)DLI z@TWRQCm2X>xPaX?smm3q$KN64mKK78;OB0@DA(!eUx%{?1TqNYOio15aJq zw*K;)(C9kir!3SPeiGsrv14wpD~YP~BocuT`f!;hk=G|w_~g_L7Mw&^hSwd4@4@Mu zz}|2;1XT{ant!EXEYM4h0H2yWUU+4S`#@64-KSDPEgT+wXJkesS02n-XcUG6N;3 zNbhHOm``fxAwPYKBJP%9U@MUBc9dAb2-ZlPZ})&{xVLyu9jh29c_=eYgFqYQy+eNW zdsXOY^UV53_7FVzyLbRr6H&PaCMwiUfIy?MEX|=`^?w|!(>M!;%u)V!8T-xmO>sPQ zPhYfvSRLPTzB7pD;=P>uMR>g3%0aovqc0QGLE>N~G1V2Tm0VL_w6;AN<(Ny(I*vXO zEjV+;Q>&p!OU}@rLn`$#D?3(5Q2dNnj-XqJxF-wDM^AC)yutZz~(Zn*16#Un(*J^3k<9E4cwSybq8XDs;(iV>ir~y!{y{46%0{|;e-oGB3P{30EXnml1w1p3P z9bkgnv@E~M)B@8bZy0nn`s(v$!x~u9aV{GWHhK@{{nnta$I-HVE24_@=<@41qc2mi z9k(uo6GHBv{~~GoHA}P8G;6lEOj6>7g@poraY-KyWZ&`SZyW8vvys(#-y?rvVVT3v zGT>&)f^Vm30ak!NIqSzWsgXXulJCtwkjKFUNn|&rYge*bvhrr4ntF<#Dl-+?_P_YI zG@;sQcG|W91EmI56~D94Hwl@xYnJAMhp(CU7g>a0-w551loU49fh1)fE8xKI(!W+fwR|Zn%N(S?)kV&y=sRLpXZK%sif36f^;fKZgeL@Luzac%7y`z@~2WDO&hyR%KhrhOSte6pyB}8(eh={ zA%9c;O7D%2j8811uEuxf9%M#%81L87(Ys-z72w_w5uH3ZK8IYi=C`+>QUha6PUH7V zTy7Tp@V)zL$-vFLx~_EBb4xRHa8qY0LU{&=jO0xQEf%VTstn(KN9U5p>J26lEw=Aw zC=+XQl&$Z{;xQurOgAREooiRQovmkwqQz|S6OccS(DB@jMn3*U?KiIwIfnI|Y-1y78r(=F)q1fIz4*G7AL0~|0+XnNe zz)7YpZp7a?6YJyXh>(uKv8D9np)i>>Q#+xx1ST;E`R?jXQ!6x zFD=||(syRjzx2u1+?;cZws}#!I8eITX^4 zs(e2%_0zKVkBvTlS5^xkZ`(Unzl@Qqe*k7|!762{@d*i-m#x|E+en(4novXIS*i?vc^t)nk!wBrWrWyAPe9>MTH1GV0CG)A&m0OoNUTZSZR;9LfYtxEa+)NS4CZjR zIyNjOs}|pA<*4vT$0l`D^)BlT;zZQ+5m%WzM7%^}R^~r_RkaD9O;rX~3`56e;FKEy z`u01Pj@z}bs&PnO*|81<9~0qh@AQV!(Mb8>I}yv=5WEk;m+K1#BgoC$k4*ZT@BWpG z=j`WR2Y(BjqGkYR?Ys?UX}*n@p(fx6$A+UlY|Tdo)IRi?UgFSJ?B8SjH5FFGJX8=0 z5*wtfKpiEmXRncFG9P$)NzPs60J(s+%PH1hF0AZ~bf+R(WtKz2H{e9x1i|h3>~Zxr zXH1D;R>&wUu5Aun(6>J9)*h~Rma~Q= zMe@3)n!Iiso!^fpaz=njky=2#U@K<~b|))_Q~~R^xisD;-?Qqj}{sP&i4A@w(e16x17o4B;H!G&ANGL1Kd0f$kP$n zbi+eKP$2LXe!qIqH271lCzUt|H-9jI&JG7~a~L9)_X(9$oI8T?D|5;` z80I=1vz`doN%{O$8CF5ww-~V)PvL5t5)n}s=CDJz-(E~qSvk;HTbAx00O2#ubUGd|BYSE65KXTrfWPB1(;3j&b z+m6e5SL^8Ii6rmJ5Z8uh{|6ceL0>YSZVj)(e@~h0aZBX_+>l0%VWQBYu4;o%r=V;R zw)N;G^xUTN)p9|uboR}$g;9WyTry>{qjkdT_sHAE55w%>1=c&;GASmgck>R(MJTaMb_EBr1Q3SXnE91 zo1JmWGG#jMdQe6Lz(U=DA5kNq(-LK#i>*lT9=zJ;j3!L$_8oS1FCBVKE*GMR+Z-yo2H3mb@Y$gC%C;l#!qG>an>~Z3;7ZWGvlgC#K zSnqui(r>dedHB|kTCakfpFtqd`2gW=bcMt$mBQFN?pu2{T&ESJ@6oE?%S$3suu)B$ z-=_4cg4A3R5=-jf4HAjFe@XYdN}7GIvxb2Z#1ISnL|DJRm8>cv4t3J=^#}vDPx~}+L}y~IV(sK zSXDc}SfEIK5$~Q~m3$dVub>&%VZ8T-x8g=b+nqsM@Jie4#<}#DkPpNdt;SdJFC}#!*J&!(?PEaQwZwEk0K)r5AGfg$ztB=V7J@G z%@dt*$ip0!>*JGw_v@?c7RRj~uSsJ5_$OlR?4d^vyg%Pl)Xk3^cMcY0MXfpZ8{8pM zgoU4UX(CW7~+S2W-OL-1`A7fm$@9C+|YotbZSQS5fNFTOsKTqUz-p5$A<@hMs zGo3HtaAj^>5SlL$yFITZz+vf!t8GsXBvBL@7PCfPJ2!0Y;=Uk5eU+Q+3gvgk-z0`@ zwUStJiisChC#2iTY$C}MYH_p~N`E7FDy*&964nXii=D=JT90p z7v(JRhU$K5tOp7OcqvzE)o;|jV5*N8M^2(215V`LkT#nbK9j!U%HJFQan&M#vIllJzw)gvn zA6MqoI4!N6O5sBdyYm#^^`2zC7zC$n_BUB#(_LkPKG{tK8~N`Wz=82-=_obp{ZVpQ zM#SF^^$FMi%rya6gNY<-j_nJl$nzb$>`1+JCvpbu4AKU`1eHUrn*)aS^SgHn+a@L^ zTUr|r>`?>Mbj2~#fpBl_N9o^Z7K=Fj_!#bfQ<6iD5x23j;V?)%WyL1AhUOuBOGJJ+ z4lzmUN(8}XKT#rbI+7#BgK@vxW6XyRiSnIpdsN#9g+Eidj0@#`-1;i>{)V(F*m>Ym z2m?06$ov=Al_#*%S<7^uT*$bzI-V=^pmf;YA3d&ZP}_kvN1dpMU_{Y}V0q682Q4hI zwG9b~QVWyWOlgBgn6bVJc3Bq6^Gs~xz-E{xCnVJRUvog`_+Z{$jCQ5VL3t)V0584k z5fr&`_xIH)Gm(jiiaP0nW@3*{z2O$t?vYf;35Cfp~`FC2YRj% z$$g8TG|b~=%vpjw6N*D`1|C}5`!co+juMTuU$8VX1}iv^01K%|qZIZKCe0I}k` zU47f(`v50n;pw&8vaz!X*opb~^a!tdUls*~@cFxubyGy5OIrC;*)hY@v3IAa#Q0O- zLQ634-b-!LuJ~8?7}Hd2ph{hmN1>EO{TXMF82VATT#59cUm*Y$MjDBp4DFw#O@(uz3Nybph+pE}N@ui(=6*BDF73R*f0GRNUJS#-eQ`E?k3XRNQ z1W-M+X7t5tP%>4XH@={#sPm8GV{2YWSCIRD?%7seB!jT6t!nhZz}; ztrUxI+{dIT9qsZw9|XzXx% z!;v(`VJ!z+$~atws`-<5R*iG;Rcil_tha#5@_F8eAG*7{yQRB9qy*^>r5mKXI|Zam zkq+tZmhSHEZusBm=lh=DIqx3u2s}LOy*oR5&CE43z$s1hM);OhymaCS&J?o2|5p1m zw~Cf!T^5jd>1hsy<)ZR<%JTSf%CG2HpfZ7SNR~DtH*}SF-{HlB^La~bdtXbW-z!N9$~ReRZ!7 zSL@Vk!Vu%Z94F?YA^VoFRql=yBB#Wzcz8pdd3W)g&168c*IrkfQE-;VMg;&o{N zY>?z$btTL1nbRuefY1t;rzFmfPr_grY>Nr)ra~)&|oU)iDk-_kIS8GZ71$x zG1#2$-x`jtBU{Z2HNy``9>N=>i$F!J3OK?77x-Z42M!FS)L(?}+0yd!i=-r#;IHU0 z`d3%Exv4qiu}TN+2|gAGy-T*zDr_cyM;bDd-_-M^Fnp2ULm<2Z51gwEFpv%nRB?Xn zMQFto{aOuqz}`L(BuMUa`BHw^c2959;)5VzzrkH3vHc2~q!i-@R1`N*EZPXLqA0x6 z6>uVZ!_+q^`G$}2C9W$W=4!sO>v`X}+_hz`M!Y^r`)0v^Pf`922RwFUCZbvebmF zTJZmm3oweWBoy$+q9G!&j-TIehT@zkVg&YEX5P|Fh3Un!iwYQXV$Z_hXolyjqmn}z zVYRZu)9N|VklcDd)Vra?Mf@9u*4GDJ2fL3lnuIZzJ0I5SNMLG(c^kap)#zrGSGxqP$!nfadnQwkVKoM4$g&HF{JxBZM;XfT8WR4=vpapV`uTK7T_-clI;Q z9Yc^Rq^L;zFwc%qFZ=qE)r8@;zg$o4Ack)GnJ}DM)x`&WL#0mNPlne8JPFika^JH7 zeI2e!k8v!x5T+Fb|6y{V7wZ5l%XFn6dh@+WG{VddgBtN6!Bt+4wS($sXCe!A&*8~K z4j$X#yJA0iHJ3IV09z@z`edl(@feO6l03eGz3nI#4i3t5W=cv})9DNHNz8THv;>!ct(`AqFM*E4&x)ZWb^o%*@-Njdu z?pM#}Ph*GqCiWrw)K&_?G>XW5W-S2~vq!$(*$`T%q<@ZS42oA_L{+k~vEL5_2$!-N zHK8K6FSwE(w7yh}-TfY1W7Y}l_>B~+Q2LIDNkjbn)8a&!am_F+v^Xl2NZz=?c{BL8 z9l9)!x88cWyck28IKI{|sOd1`dMljY4`wZ-)!EywK$_5{7LRLKms<*S1C zsFMS?iFE{j+Mf_;W^Z+mtqR0!0cll{n>lW-!`XS)esBoNd9r0x94mtUPIv9~UpZf2f*Xjbhw9QJv`e&VRFUWQdDyl^b*x z(WXK!5M}}Em_i}rCH5G`10AChgHb+sz;AzcK17dM7m*v7^=vQfpR?aIF+Xv^vGs-C z2kd%fB}pcT!ld{Lv&uqad)noYda0cDgR9MuOiyjZEDj~3%Da^8&ux?CxOxnK*0)T6 zr#MM>!?1U3qu$aig=*I^ z2z9rs*cN2F>a?9+7)gfz#}2DJ@W(hP9@cVF6xOuVrUS=BE#=ZC@l>PtAW!&oT&~E);KlkjB_{1P{?uwb6FT zBQy)I^K;I2?(4q2En-C6|NcaX3(O#Qz~JvS%vj!{A5#i%m=tz#-*q?t=@F9#(&uEM zCtMYVdSmc1Tw2i7;hwU%4mVp4Pgx9@Xo7QVmT3kl+Ws~98(pmo`dQxUsi9Ms5fMCEzoq9;~ zZKgUnUjEwN=0n^P^T%QP7~oNQgQ$~h)&~!t1=Acvc+A;GJu80=J9RYyx1_JQkqUx_o4e`meq28PMi|eV z#zds?d>(eoubIfA;JI3x7q=+qOlmvd{Yd$C=E44*d35-&yA@mKjk;0dV3&A|IjC|%xQ_t48SpwBZRdnZnx1fzw z6^+7z+reZ-Rc|1v?7g|!?U7Caq8+?A6v5C?FNL`GNv|2YEgH!hVZC9X&E8nEF&;=UEp@Iq< znUKdfSueF4r=5d>2j=l?E^oCnq0Jle*{iEBTA{cnxM#cmHOcbqBIcw!?3Yhyi=sd% zj?W$E(^+)PWtHHR8e|WE@E0I>X zNqGe^m__jQL~riES(JU@U;>j{s}x#x5I$$zEcSDi!EvrzMXIXWZ|d-%2Bm7C4~&`f zxS3xu2{`7;E6V&i=2(S#i=a#8QcOIPFa)K&l`-6d@AE6DTk~vr^lg$v1!vMe@LvT~YsjiEt78j;4agh!#ZXE$HCUb3gt{@`gUcA^yr0 z=6m$BrL^h0BQM*H)3jphYUP*nMj_ArI3MHLoPL>CtRA|%8B?`BqXG&YH@!-W#e2&O z1FoJOiSB`3@1^He?eXPPqD!G^r02WqRTL?!HZ!jri=R>Hhzx|zc}9zq&OC+Qk*YOgXc=O zDN)Sx9}DVr<9%U#YA}3Ob%Hvo#FRi|GsnGcE?n!GS+-rjPTe4Ya%MSN z8|3(SJJLQXYYtm z8<#(IW@b(m`R9INLnXfO!^ts^a)YB;+WhCv-SP(5CSo6ukH;PIlKb_&hMpd5o@m3n zZJj)lBYd=QwCkOMWRwMV)Zg?h>8w*B9pEk<4kDpXe4P^xuv({Uq1M5EYI6s-qM^Hx zEXtTdhgEujt9Ki#N24Vh6Izg_X^d71p*~U#-s7DYU`#1(d>)12k}A9-3u}+K1%V}= z;tmf0sCUr1X3=l=1>#JCS&rw&Gtb#VSGyuJNUzz&S?)n`1e*D!5%81Aw%eA&;NQlS zw)t^2z)LMdQr|;3`0g7EgGJW%*Cvz1it`&!uYx~qNBGkGo?zIq{(SvigH9Mn!#?US zyy_E%OZW6SBI6M8_Wn9M02VRdYX(u~!SQa7EZEQVT503NF#i#r0EjcYgyN+ZdZmzfM7H)$Z7f|;~fP9|aT}q!#4fRzz z%V3XaCItXag?cR1w%KvMHhZ4#^dDVEhdQUY^hd z&O4QU@c*g!?sRsy^*DY=!aGjKJsB>`jk%7(B9&xFJmlqc{s3%P4F=j`7k~~08c;@? zm7?x@=s=)knowY(!2EfZ!354*WaH9!9aJ+l1od!AhC?U^j6Wi590{**szgx%ZyAY+ zaHJ-9qy_;AVzx!?$bS1(!Dk_-TMy~T%>?x#5|;#}_~gLHwhCgD7YiEjj((O{O1L?_ z`QYP3YgWKP(O*fyKMY>18S_yiaFWP(k|=PJ;?=_$WOo0A_-%)VL9cG1!9^yXR3;%! zoT5lTxL12!GK>_qe)s09>zRt(o}BHeO>gCb-jZvNrP z*%(sm^)x7JciYEBw%l>>6+{Y$?|PBk$vOu8ymt1e?kElPO288JfPOL$8Y`5Gg{3s@ z0-^<|9AgjZvDNOO^u_ogR_13W>g`Kh4&Y&=;bRZFuxZ!SLE&v9t)hhG zwjBphR21|*Kd2bw{3*ig27F2Y_fx92RNB?iNgRz=v8oMT`DGi3&WqO(yEZ2FY$)Z>mb`+zCij43vr#rCoZq|QC&j?2UDo23ScTOy*p<)X+w@{qQ* zsB|Ci;3185_L$~71)lxnNlJxMkw2hcaJSrU05i4-TTK}M3Un(XUrUGq^LcsdulPg@ zdfLBi=Y2()b7C-%S6vZaODrC?x=(S~4)@1u@AJWKGLH9UI8A_%xo%2a)J7hP$zUR) z6@=+$OePTyz=CxLJ8eIUDJIx6kImX#Ck27IuGtCL%6np#L6$wEoh{V?{>J8j_EQ_k zkv0eompliJqpR(kCoI=p^$W*MD+FffvPK_^ULifsMc+OlaH}W8iib^Kx(}+`faW?F zTc0IgWPXB=EoyG325f&N0k{c`B&jdh#^RZ)W8f?M6~16LRFlP-4Qnwc!NA zwsw`by05<6S1`NrNu8j+++ z2Rro^NHv>iT z)8m}JX|Iu?IX&^iMKD^7b%`qH)%s)Ga#XF&?H&$so*UFa{psalTmqTT`SjdQ_j-aL zkJ4-e2GX;c8Ig*YH$IZqmg#(~Pp|RE^yI(|oo$)uzQYHgP#=yek{9sGkQrv2DIqY; zVfQW50k1(}u0ITR1;OOgfs$}B!ak6rw!DS7PUGgB{X@UWnC2l9lphFYZi6qmx&>KC<^tcQS9Hobn6gy(YApN&c0C(<i}Oq5mnzFU_j?@u z(1*s91Vc%wa6IQ?FdzaX>H_-86cCupPjF~?wK!*Q*4rCZfgYn|shyyvs95Ap0_7Q#a6;n^n4 zsqZRHTZp`jOoz|vE0c}}VGI7C&gO`Ia5e>jKW(R4ouvd7j!bbtv6G-g3!F^fsy}J8 zTqR6G)!K+YeTZ>0LoIuvZNT)!_YY{PJj78B4v+*;UkfnsV5dI1 z3p!?@9sgo3p9Whf6bmO~(#tTos|gy<2yUT1RI=ILyI?jzYA*f$;0 zNB&j!y84)8jjT6Ar*?<0x3*BhxH1UhR0%m)|LNj~83;`*hb;dcm5N-wGL>94NwfP9zv5PgRTc}K zWrys%ZPc-Pb-^n(TZ-5g)P8!HcMQIf$_<@8^UVPweQ>;HQ<_jy$KL{UOxfrC+(=?= zKbbTpau)!q5t%^y@ONuHs$hGvi{OfwL^b0Cqy{^8&lC zZL8o@9d43-fEMzAu{Z*gP7R*BQz;i7zv_dmgNc%{V7A=g< zgzUD^r0g~*Wnxn}HPyPk%4J|ZyJ|o3!ahj}evW-x6_lZS;n-rbSO^-QhvW^t=-|&2 zp79zM84|s(ojHk(p{hAlWJwIL#JdC#M@jSh_0YwuDeFONt>-h#JSJVC6A0q=c{<_K z)Efr%UB27ez3H;I=*31T7!Wke{gk?p;p(H$;7n{G4V)!0`f1|cA&Z&KiKw8vIjZgV ziYX5RJQ*#-o)4MaQgTKw8#GDlsS!K!MXTI(+#93i#M0WcThs%KjP6Tz_ntbB9q-Kg za4{ELN-zM}0ps~nnJCJQS5yD+r0n@X5s^JhmsKG+KNTa~Y=`L)?Np$UL?YkV6?r+c zwZ4FoM79~(SKH7PG`jq{)6Ey8^JNdl#Ri|)(pb3ls$U!91O+7I^Q;W~k#!bUKxgB( zdDv_)+YM@+1 zyn9q6mz5_eJL!0CTSBgLu`;9&(2M9Ko9Kz%D3 z_m01t_y3aHuD z0MEju+U|OOF%G#f!vp=WVv8rDkNX$G?Io~|a)y$u`0%?oYJq`(JVnsfv?W&D7d$#gpFpmR7sGVJ>8Il1|xoRlOniwMfGAVXAj1Z7W9AGF%ocv_z zsb_#=FtEuk=mATX-0IpR=MtHGt>3Tr)bE!8-JeqF9FoWqp7-ZeGC&+^acoLRz+MLM z{toB5z5o5rKuYN^mx06UX^pTQr>mzCULCAXfV0v|-y1ad_~-7X;hM$aJ>^~k&5tbH z-CJX7e!C7L2Q2(3Y@Tzjv#VsO)$-4RV-?bF6SroB4ehg|4|=S75Z=u)f{^G@Bd|-? z(e6+ogE)S}!o=EVbh)+=6$i!_lsB!^YqPUat%~k&XWQyii_gq!rTYDb1V8EVj1!gM zbsTU$+IwFOwVcyd9EXMJhNuD5(piyxyw%6%8`g@${jh78e%08M72bE0ml4IjHrGKk zc@t^AuXEHSFrT*1EFGXwe;Q1>Qkp{SE+LlOciREO*j}ENIRn?Hd zyqsb6{+89+;G?w9$y?LLp196e=XVY&V1c9;97+P(z#r;##yq}g z)UaZ-HSdx?o&PijdQLOt()*Lb0?u+HZ+rMR=}zs@tkBFYe^FLjYwyyZ4^2|QSy`P8 zf9~T`TAm}RQH~nUO=c*-{AqB#A;(B3`>ABdpl6P%uBF|_Tmg_zf2_6A#A)|ajWNllF=N`zvZFH$O> z9)QCy;Zf%>oiiyXwY_O7pr7>*{^*27Cmqp)TtHnyQR~ZW3r3k(2kX=isw zO7wf4SGjIyg(}K;5&lQCRNc}_0Qx)iIfek>@Wyfr6X5&9m_|BC)CG}J4TOeoV3ug6 zbC&hF+iNcT(5JE5*(*=G_3{?)y4@(g@&i4?>F7FEGrjRObsszI{=D~_dP4JwaK~8cVK69O-cZ#bK<~hY?7}4-y zaw-mc0BLpA$nPBxAxrFkM>Xu|ZNqd@j5%tZ?pxDf^E$!R{YllG zz89Dk=P|v)R-B=8rL*&l(2>tKIh^a%!7ugHNiIo_`Q?ul*H=W^uPR3^&P13$4z77gGwV`)z%f2I z;T!XUWA}pN=QRr6R|^tEGG3g`Bny#F(nZ3Isw8)IxY>#x`f;>(9K_&f+rpwAZ@xsM z-e4gtbn`Jw4F$7Y@Y?;VBW$%CIN=hX0n zh!t8_71~#52``(+X)&!4UDFPn!3eWhYbT>o=MqDZQ2vHaH}31#K~hUJ*j2>l1JvK; zD~GnA#mQ3_GjQ#ovVn+B)j?dMiQhbK+Tq!q7_Ji(>)u7zF;b_&Sf>qJyUjEORTzzP zuSGkSh)Whu0JCr;G!daQg>rlpn@74727H(q-`8}r8gMIYh~JZpY=YRvlJS&R$amwr zR~`Gv;PH?xdI-fbG{PZ-)O*#&cVeVqfUGLGfPjyH6Ofo8oO3a;a|9TjOmBTKgekmC z{22S1xNVzl!9twEFTZ6Ak;X0oi+bBee7lG3R}u)ryC*WU8hnjEe3Y7q?-ki-o?ayZ zBl2EDG`M%;{Wh||&0ZZCNJd7+^}HvUO>vg{Tvgk&(k}={bVABo=-pLa=R}FJwaQq# zW+SoT<(Wj{4~$b0jL4FA`#`+Iz(H+_&FskrAbpBs3=Md2kog(F!W12_?csYfGE!5h zG1L0Z_tO(`K$pCc@+3aV#J^$a2IaC1)GN@=XWn|lp;#JsMfynAF1H8YnLOVn0=wG* zpF>1nDyRz6K{9A6+Ln|n5hty?>6nAmiR5L)Gk+z>xnp>EbOU4$zx z@D;H3NtV~*@qtlJNAy@_&=w;&qK=4RXfc5qKlD`{=tPgysmLOFgi`pGut5ZXs;6?K zVSk+i9G+?5#3G1;bpvJzS#6qFB2p<&4R2kN%~Ch`u>izpKX%B`{~>LKMk8$@gU8{w z>E0>B2vg?8A;(@#|ERJCkvaU{SA3vStD@#Bb^m0N^6z-U zs6tpI9K8&4i55C?LW+09Y3Bdq z0)&!NMnMBqz-l3y$mO`=Y-mDWfK1?^j}4Guer}`cK(lx5Q1-Cx2|QPD5&EJc%WWim zWUOxyA}p}*o#lSwpL38R<3H4`1gLuOAH`P*$yKf_+uoS%s?`X?JtE~PPI$vPWg5s6MAjAfz>ognO(JQ-+!=^ zY>?5=BHqRF1HK82{Qm7^{pg;EjnbHtc0AS8%A3$Ht@hNWpogYy*U2ao8xtR!G7)49cf{$uZ6w zNh=%)G=SD>mt^bfq?QQtY(T>}3=`5T9yWREl=r&`tmC7ZnYM|=yQFVeVqL1~Z~Fef zVFqpV7A7^rh6|E-vXtH&Tb&9qR5V z!2=EI%|k zs!aN3`_b5<0n{{*Z?P+t)z>C6^J;M%wmMZ&Sf~&eG)c2(o9!1B>Ov1kY_UTZ@k1g3 z%STUU3iAzisJG$9@$nr`Aiv9L2aM7lT2-gfszzdF8)95Xd3pIrH8wrNEbLVqCg1Xr0 z2^0v>WZQ!*^wr)pVvQ<2hYncf!9VX=fvZ|%tUXON*g%<@G;EB&i8ON4omOZEXV-A- zIH(V&ed4#+5B{StV)S9PzYN*`mRO09?M>-%$Xb@}`3fV7@&4$Nvz9WSI#jBwJ!9+8EJrKA=i_D5?1(6sJ z$H}5dB@S}Lm<6Y}k0m6S><*R)Ce>W&4rKJ-Zt(vtI;}HDo_-+k#YXAR$)JN^@4%i) zd6hUyI3M@zxv^E8QU(#{#xF&|(tp<QL*1p?W%rY=- ztgNhTcR8E|4ZX1Abp5?z0D89B5wnZ!7qIXEgYBv=rr5Sigup5Dr63uIALZB~Qlj;a zG}`OJ$Rqi%1`76Bj7^QR8#PT^{X;_klL`~8zX8SkoW2)#RQ;D1?Kz(kN4aF5him#N z4kQo=(Va=?IWFiEuK-}y0h+u1tphP&(}A*qYH{CWW1=SaCFJGhF%*VWigf1%P-mnd z(&j;$QMqY*(6Y3}+9eDKluMhN2QbI;$d%iHEDI&EDO+#wa-V$gCT~~A+z`Om^><*h zBlZJaZ+T;I`>ft3t>h!H3O-%_xT1xhXR9 zX#Z4!Xqfj^XEyKhsza^rQzc&{^7sscTN?(FcBa@E`}e(dVBUX659D7JIQe~%pxZW!H?URoHS`#;)Sk8m zT3q*L`PWhUF^B*!>B(a!-yGwE1Y+V}DKq;3=kJ?l`@#XZJmV-5P{gWhYI+P*zQGbP zao)`ml!HJHj*jQ^qbuOmSs?IC$QY{!HfQekvDw@OX7jJW@eKSywAuh!It%A<&80zr z(muBg`lL=&BA@uaXa)Y+VD@u}e1Zx<_sXjoj#W^7K;yt?WE_?@*E8{#ma4*rU7?XN(LT3(S%$p_fHfXt=!iYh@qenW(czz;VySe8D#l_+uK75FjdVfwH+;w+| z5hEtRdH!0~)C!fb2eA-M?fQ8#`R6sRL;xO{Wsy;nSw*{UJ$UUyi|-G;9@_5LxT~qNmjCJ{lIL^_|U5ta#j^#EdO_Og%g`1TG6i_|y#Xq(TW#|LjY>u= z11yu~Z_HWmt2~kE#S%T#D9X+SSJV-=LsERka2zLwtPzhN#T&iuZG;p3n_I;n6@*sjNqE3$Ox(-) zPm<&d^B?G&FP=z1AomvH7@-FYGrnku%+@`A^guh%OfQ68VoAUc)fcVyEG^imQ6yvA zPwCRq3ES5&cG*S5HZitlX~RaHgHS(N5AHeN-jfcat0QNX(_I`~`u{s{{7)u;<~74_ zJa|Ii`m*qGl`pi`hFf5TREPLJB7EvI#vnWqkBcfXvraNfi$cQM_?ue;81hUpi($e~ z2cm&p7lSkUj|;Pv1*Av?-YgvyX}r}!IE+jo0DqV{IZt(MI0XgB2gzvS9?8oaIJ*M} zKE!=~@yAzGm!N7fjp70C7RSftBqbtMtho06Z8P46QOIAfr@2|z1)-HjX2PD~zh#kU zz{0|!rKOFO(dTzL2?YS^b+;X^&)u}RnQbCN8l!F_qRWy4yWNGZNIbegV~XUPA*>D< z!e0h)P&w>ym;+i&a5%seJz=CVl9H^%m7MtwwE5%GQo@6J+)!1-KE5fUUtu}xzDx{n zy6A0;TXp!pF=79WVc1zc4+7B$EUA3)lm$^F zY$kwjA6UT)m$@X#dc)B^w#rq=rgRh<4>^oS_TB9saMQ^3D>zcxsQ|O&NO*6m5{p)y z&iB9VtO}qWhj?Sa{2TZY6BF^cH=HacUgJ|hPp;KV^8ZFY zXOkct(1~6!K0e-fW;d0y*sxN=XojRm4WPw-YI|lmns5DLwkYWG3d2k{1+n4>8Es_| z#7KvFO$|aPH3P{I&c4K}At=5$KpyXlFABIt=5JeHs9jYg*t(w((3Etb1RV^tY-?#;Dc^+P zZB%yspN*Hd92gj=KWU8VsUCfL0^i!j>8@4`N6MNFSbaWy=5aQg9joQHX~U}X%Koet zVhkdUjdwZV2FqQ6ly7I>@si9yJK30qO|zmPfJE}Yxk3ZFIgbTCIlRyROa#=^3tx|i zl^sIEeOTKFe^ppdVp>k-sA@J3vvs3&-=+VZj(Vd1)QLeevasaZ} z+sK^{csnisjnp^`OH2E^GsAQN&8X;Tc z4a(5+B-4G!Yx^|bkoSgnCwy z5W8~q0Smx41`atuKO`Qf4mAXB9Fg4vyiKO;!i{T~idR=60ioBi+RtfFLk!_~(K-7; zeH3Wpk?&MQd-0n-Wc*uQ35l@Y|Fgcsv_OfCzN%57fYem{>7lFJTOg$vN;-xZ3Zzl0 zrsKLE^tSjNR$P6S1sqbxrPr>{LBd9(H%#J-PJBefFAJvU1M(3dy7cz(9%)iuQwgeM z06PQ9DA11dz?;mH9$-aLkvkvwe+3Ec<*rZI=yJzLp(q9rB%tPTm+RfS zbZlZGR$kn=#+7s3`dp46k6SJ}jUu6htxMC!wottZTdT|C*Z!gRVVAI*ELOE$8EuHU z<3)4K<{ZE}lUY@FEqKDl1_z)6Pv=@SNO3a`>E&>Z)8-*(jCw5v#5^ECPGxTy3}oqA z^6BWmDq9Gq<&R?(f{Y=fps|8@Y5PCOp7n=L$>1~j-ylLBkjl>k@rC#|=`-UqflTEuP))V1ejmRLjGGT| z>C{`0*)(qvmgs8W_n}cI3D=;mEJ2C;Agsp<6zZU=+`{oV zAy#|g0ZSANY3RCrRL`6$3>l_xWt};AU7!&YCN{vWBz#yj7&DfXWQ#8WEW+^jnyhpX zt&z%s!vo>RhIvr#<)12}LPODqTuh)+u9_jE|95%N*8a87|C3nr(!xTx>+5TfZ;j>b zda?d9{gwN3{R1r{V>eFgnPj@-2=vpDsc_KhY2Tu4TaT|?i0mowtKCjmdN=K_n`VB`Dk{&3{ZnpXnw#v^*V(`wAP=gCMz&KLn4 zy(h$1!~yvUuLrmV;)dg4TTDUjE+kh%!NvdrWjIX%OPNal|37D{AHc?X3*!EMtLM=- zt2^^d;*%j*WtzZ|XFiFvoG3>35miD`^z;7k@UcXXeSm-V%T+HFJ*}*$gc2$q_y$PA zneM04X&lG!3cqRj>1m8@0*4?4|1Rad07;Bcs-y0z{WjofNk45^nce-fhw-cX%DJRA zO@y`kX`|W|Me?mKm{I5PY8#0!kZ5XCzaEShVysYWHUAEaWWd4 z3;53*c4pMEZoGt#gbGvDwS@y_7)_xAL8`CI1`G?e+o+opp;4p5J_7rNC8Vo*@8TA@l3GJqj99iIZ!}O@cXMJtQ zh)r%(GW5hIn3V_4l1B7*vKxZb1wo}T9lZK}w5n`>``LF-QT}a0C>Ba*a=WfZ z>}f)RG>i<_|HlBRLgsxprZ!XFzk8X?LdL(0e@gbZK%dorA`=WpQ@9?&((*jpEgLnE7;rsWdllfC9nVLch_ zD3biFnmVUuD2u&7-!UzwlcjsK7_^FCw=kbUaD8(2M9av?s?$|QqHx#=m2HAF6r9m{ z=tdQ>D}gk1i24?;L15yx4EeS6SHyiHv{L-NA0yvN{1|m!PZ2|lWE zAw6}oD;{P8s!FpS6q))+>%tR4^`}>R<=*Wn35S{qt=9z0%q-(KXPp{7+3X!%9W&^Pn{P;jX=YR%}r~R|Sc!2jaVzQ$kE=g3)V*xM>EFyuxjL z>+z8ISE4uaU*RiQHYk8g84dIDJ4EkSd7Jh4Qshhd>D@Aye@xmqxmA;|+_&n4- z?dto8^0JL<7EfO^3<>qiCui{&pa*}vKgKh(Ub&jrI7E?HT3K)k)$_n7d!|!O5X%X} z&HVm3@tR3xhVy#$-jIjrYhE`(ySws(>d| zx+6qMlS0wJ+k=bA8UE`+6Zqc1M$xzFwK}2BW$LzWo)KE;HH=EfNzLA8F<%!668t=c zGBLyE%k+ko8qSlX3AQZbB8CCQ zopqA*(E!EM&FNbU(479tNV1Jj28;ezJ`x>u++8&Iw<$!D6i>tZ_HE+T88_-!?Dbl4 z#VoR!!ndvV<+U|rEHAE{*fR8wZYJwD_}3srZ1DW<#(t*>;GV)NR_B>Kmmo!}3CO4K zS}~iMH3lD>gv5IA*uK(+cdi$?A87MEyun%7UF;7$Qj~~3%GhO3lC(5XR~(`wNxgZv zO$1aRpx)Rg9rd2Fm-0`OeLOPyp@k#k(270~7SP@-??;r1-~YJ>IdKs3lCh#_1cEkhoJ0^ zYHngv@Wb1)!m`2tZ@oVvF)4VTrQJR-6o4?d=I-0d(?vz2y~b)+8*QjKU!3ATvtN|HY7WG^;Vr!;3qpdEEv|n7wx0AK&4iFpG7y*(oJ>!C)h$~SwiWgJ51}qp>uqu zGJh&cRVz^p_~5SuP55@ZNq$m`tNEwa8U2RgaF~d}bJ|Mc9<%L_o(bdazkeIWTU|U- zpa;+tLn@9mi(2=VK{G~$j6>4wY9#Moy5* zat%STD?vY?QP4vB+WGDn>)^7ZMDm;{>#a6lATHbA-an{fl-bK6+V|_?+V=I(YIa&W zsU64M=|J2TcJU>BdY!6sk#AYx>BxI!Ne$6&5)^%H^A2E#n^8N4K^8JI!sG7cd>-9`py4TIT8HX_f*y&_#_QO2uzStmR@QaH1-uqr+^u#*tMz9by>}ETXij?4-8Zr0;Z=5cwFkOp z3Ysz+7>L<$bhI?s&C~n~6l!T`VWWpA6_5S)?immX(?@FTLxbULX_5AXDX27N)%B*s zeQ82=Owt&L2If3J)S^#DxEP@EoHcawzbK(FlI zIQCI2njbqk_5^+D5|So~;Jq1AIYfPCAD?hbS@Q0}^SoVgc_iU)LauXI6imAxm>vBV z8~G+N`PD#36l8a{Ci-$7)8;rpMM7|0xv-!G^txHi$$}4{AQ+kp5MJW~5HEK! z@7$x)pNqVe5Ga3-OwxBqpaDrCNEJ4@gOxKo;20Y!ELq&6S?%x3)Y2w@deEuWgj2f8 zE=rRK0_NBqfQ~q3|Cs=!mH<{YE!0gcCMO=E7u2=_Nu%D!parMCj6)n9mj9XQb7E2A zXY%=5mio0cgUs%t8X@kZ`^UA~X?6LP`%N+`ZfBnh)Mv4DIom*n)1bb#0<~B$pjYC) zZ97(5;Qel|i|4;xncGUhc~d)~kmz)T2`MJ)()!vsx4r>V5cB(LTxA)S~bPjOJm;oGd6% zO!VdKaIuij85IPy2l(NAwm}ZOwUnM-B;_6Qm-zTVhw-Oeb2-2;B!qa!uFW>MyW!_9!W{U>BN* ztb{ef`VRX@R03q(=Jy%1^cmN2<50`D_=@gL8Lw6s#yE~ta_wW1sUx@mG51f6?o@>ooYi7{rVr4&-`h=70GxZPblKIJAH9X+Rop#^1;79<;WreMX%8 zUt+`3^w55V1C*b>a$nj#1ZX1$898a8*Za6|(z_UuNa1TL1Sg(&8KBo>3Ad{-lSef~ z<+j5r9vk%JT74*3YrAY-jTHTJY>9$8n-a-q^E||mDvsNAk9VizFhcVDZ1Nohi7i&} zd4$~DjjPY*Ob;Mty@o@I2L};)vfi^aAQrrZvYM|BV$%KtkOvBynuMB~^Tx)%j93U* z(udsybVYOC2?`3<{`sS#(F|)vv_Vv*Mns0~xYR-dC zfA8YEK!34AUiLsV8l5{?q&ao~aAjs{99-vJH9bH|(L;7Ko8C~%Y~{YDJTnQ6rn+aS z-tyj0)}P|h)z{ekX&^scfcGX@SL7YNO6KaZW7M@a&c@HiyaKU2j*#Gh!6v;8@xEhKznByk@P_LSK36B+^~{+M^9Quxo@J zO3mz~73PWQ)Qs1N_6fg#+>)L1sZ0${@|(_gC9ztI-N87$Q~VIN(f9hJDI{&L_NR56 z#wD5`&j+8ZNl8hYZGvvC$Ne%o$wB@s(eIY3mm*c)6$IHZGLROkVUuD#QwRaVuh84NVeo;hc$?bfnvAD<v$?T8v=EqNzd_VRQ0F#IYLCMJ{P;gG3)5QA zX1q|AA0|c8XOR_s@Pu9x?)ho{JtFL+4=qgp&I#)Hek1ym0fH}Z|IB*1`D93Pu<11j zxa=BEM#n0a1Ny#~u^6&&o4Fu{*Nu+N{RyxJfsiKe6F9k?hpF_bq9P$gb?g7`e85xF z#{2Sk0d|UfB@(XZfVLCSU!JEmWEJBvjbp{Pk#Uf;BIH^3N&*jez19SAbNWhnVrqrM}0LPRxNz zZNlD(A1aleOAg_8={u7jpeIZ|3&i^QiM7Rw=%WV9@=sA26809V$zcxr?n&SHYG5dT z-`Q=OuK5!i+@U=z_jL2_4BE-m>GN5v>eYiy1^(|A`M+4lGCeu8S_S3-7#z)dTVdf( zPSM?R7rqO6wDO#K?gI1E+H=6@4^QYMG54WZf>!$ld6ud@YX4o$G-YaoJ3=?^Hm!H~ zGBUw>IhgGhbq;4e$Hb{QTL-9QQEt)N1U19Ua$P&AnA144^#qP>8|Rl!tC`P zOIhAqw{^v&GWQK;JIW#L6ne&$2*O`pIENtm=BLups1_7)6Xc;gk;`YX7r*7Cs!Sug zEZsT}8DaF&zlMgR^xbm$3d-5E3Ux2kJm=fLFr;1+y(rqsREj-4@KZLg;8_X3*HKY) zPpvsU++C@7b}rPgmu55-yn91M)Ixp1R%B~0e(2~43oPaSVB&tqn_Avn6!|Sg8?mm= z)!l8g5!UNSWpJH?fkK?p;qTMjhhR4hF(is$>z;7DQjIEqV7wNv%tg%I9X={5szFB~ zLxGki9=T*%(!v78aXUd-O|2K8Qdv`T)$cI_o_0<^x$C>1pw7?F8y>(fAq76#8B&Qn z0MWHv`)FWG&H=H<%Lp!WaeetEp4s&F;p`|74c~vpc+70f;~S66%ulnrTV+Sqx)Q(l zK>E(CC(zrcV<0!@xK%bau;Jx8_wK1|Y!PxHFYDYpA3L&(HLm+%Ow1=j-EDk93oH{# zodrP_9ppM$feeoDDVrE7lfL8Sm=T4u;)xKdOj7I@Vl!8$^CMU}d>TUaRS3)88?V zOgJlZR>nF2;@Fvv_Dtvq6@5E!%{y|z;0W~pIlbPWCEKSjnHPAPzu7DBhi12H!Hu9L z4+jK{)8x)W+Q2zM=zZ1voEQ+j_7 z7|kPm9**!L^CblZ)d*oMAZzTZDCs{;20+yG*q?W>3=7z_rdXEv+lUvJr++>lXWCnP z^-}-K!iH&DH6Md8DZ}OY5AOE5AZ91$b^v|xWqJ(fm3!>|kzpgu+>9lJ{HbErVR@mG zC(_KSRO~AmFw-ZV1KYkDqZ}3VAxIPj*i&alB1skaSsc9o*X_w$lNA_kAIN}#NJcz3boePUZg4lpRCJ))|H%<}7U%jN-crAlZM^x5Ip+`>1jAZo~DL)|XR zPH{wLRmps=>N`p&C)8aZ`7B2O^ zS|?FH?0tQLI>)CcTgLR#1=2)eJoCY-@K_~SEq6XlQDq}Mk)M%b&4AtI`Bl@>D(Q^N zVgRLBhkXK_erPe;TwlKVXn z&EiV0Y&5FO1cOdRpB3j$6I>_52I^qp0!1 zWd9Hy>wE8J#CO2!VQ;}xps4qGdxUs2mxq~GArD71bQc$1*Q1cZa7B|bSVNxY(-lvi zqFk*uIx^nz~G_~K%B7ltrN)hiw(h@$c=OO223YC35hq)zsV z%+1X`BUrB;o1bZ~Q51yn)vegs5q{yl2TZjnZ>n}K@oV32(CPZ+s*s!7$g(Z?VmQjW zcOOM%UIj*~320KsVz?RR{%u(otcA99dtsq11qi3g8S==67MfL62_UOxjiy#vQja4_U;pPQ0H}rzW!C@jRrR*A5dCDu*)#?xMaDv!m;>_>n+8Wz z&i<3$I->El@V#IHP6grHx8K3;9HMf$OQTXY%n+96o$7*)IE;?tHi={5>yJ)TqW6bq z{HC_3BtG7&f0mI3nTeNMzoCz5L0f}6=HDEXonHDENZxe{W~ zLY9udC4p!mgSo`6TpKj9W1e)a*{n zZ=@1(&BlwU?t)>1s<18F_#49%mlze4(&6>|4v}GMryw(g`W=vyb)ur=pY#fU{i<}@ zn|KEG_m4B$i?f@KkN_fEXA+b4`*)81xpV?IJ56UE)3XD5_Y=vQah4(bUG`*}UU%`; zcEduX68t>PKc$?pKc!v@PO{ z`bJ_am$c~EP2OhOg7pxY&8lv5ch_LmX`5YQh;GdU3lNATEoMY-+w1J^smJTjJXgVt zA+F7%f;kAb3e!#mE<&ge&-n-{3NuQu7;o6&;7*q^s~8_LN_~W_ywS86rXJ{a$)DXt z&@B?m18OQl<_B|aclLt#gU@&i)eu*fI2$Oxc;X%UKwm$Lq4$VSOqMQ(H0k+H2{i0N zD)l!)TN7EJE3{(GA@TcFd4wbDBuU0RFEkqNcc&xXmrQOu21WCD-s!C}N~#cjh~CtL z)f&9rF}ekvslX5~?6L<-bBj+K5eIR_#lK4?)Sdzm54#gMzVZ~r1Ogj4!}hPr>aZXY zCe-m+hFP2Ak(m(URWnufsb}<(^StY;qZRcIeL9zeK8C-|fAfQdpQt*+g}Q#y+5IYx zr&7%nxUqm=X||z8-9ZC=&nw`1+vetk_%I+PM94&-{K~e^9_qW4d&@zmZlPAYCj=NA z0doqj$*ean?_z0>kSPk2$HZ}u6&b{G zduT`w3c$Qws_Nf3x6kAe5nUcbG9fF7Q&8ixtxkd@o>U`w;mmp-(B+z_2=MavaHYRr z>C*|!t(M?i1yR=_P1!LLcWlG4xJX72{T~$?Yr?&C-e{CEUr^B zxt-%A6t<0Sa-{0Q=CtxGKRdr3E5o}-!_sX7g}>N_*mugNYyGdFcESl)%+``b3fRRo zsW`R+ja}m(iH%ly;8)?7`x6>i4;ps!BQQnaK^Km4h?+&~9cZsRgWa}@=(Z>VduaZu zna=>!;1{JK`f2WNw!^x_NN2^)r8C;J*JY$v?DVm$@`V~;CM<$}sF>G&u}dS$MM6`m z8gm}l2_KeP8%A6mvlM@v?+D9Y!RG8x^jCz_6V|bdT@G9I;JZ8 z_epW;P53d@ehZwTIdrYeH zy`X%)qaJkiM!3md@FHR|Sm62Wp3J7z5=U^PgB%KA%x0JdjeP8h2PfEau@-J7>pItS0*Sz~@(>gF9s+zBbN4ti!NXypEy0Nt{p1Y) zm72qthXzoThY5-zjm;Ti8e0fjZ9*)+@X++we4l^BM!SzyC&n|(g}2&kIDdPy!sWuL zZ&4Dx5eo1G_sH;GbhO3XW>I1Fr_&w6FQLa94^S!b>5`JlftaJGLN<7Y`@g-o9Xzj_ zJMegWA!#Lfh{igZcB?B@jFo7!vD^s7CQw6KxQ#@zazuT4XcwbF&G|osh(FNpKa7@p zIG3IX=cr-uYTiLkFS%FKR(y{W%uPM0ypEYIPV?@NrcQ#66ie2URj%NT0f~A=SOpe+ z05dyAb8_`U@wbsxg?|Cnmpaw50(LAXgp>>DlqTJ>pYd#{kz7b_Q$I#VOs60AHfdF; z;nICdjy*?`yJE~)N>&0^V51PH!GjPCiSqrL2Y8-)nyC}wr<jlkqQ`^`D1qPnos7M{wFT7y#7Ouo(dg& zxrf^Scu9PaqVf*sIS}(qb#hMDQ+-o4O6FXJ#+}1x=L*q%y@v|x0ia^_UM|@H$2T(% z&3xnsy&pa2@D>_Iqp@l>tq+;@q>Sx=-l1c^CZP6VK(Zo&1FQPS%l)qCE2}&2E~82u z!`*k(Ha~Cza)PE2yTtgy=P9swUovd4mQq)^!Hqv`%ju6Kzm7+io>q586MeLhjUGp2bvnr-#4F} zJ?e55mJK<(v02|uA|vYgfu8l;I8$@XoGmmcN^l)^VgRb5B*1yLgK+lujYNv^=Yik} zXA6C0J$Vwmig&y`3L(e zzUUJ6^G4B6ZfD@rpu&*bUd4syM(rt!PleU*OAO-k$)lTXmGO;-mD+ADS__^JSA0&z zf0z+?q^&7tlafHeUbPGZcA%?l42(wV9g#B&jWguiLG{j?rR(><@Y?^r5H1ts_J70V zeK%HVJl-12&weEeEr4S=i4xCfdpApjKyr zZTIKX`T(bEv^SraQqwzLntZH>?9fECs#7a;Ya%a%zYsV!#WK)`lC<)@R!5H88t;AsoP$Q$>S*%3-?#i5gKARr zGDek=!J%+?9JIi~vglkD+NeE&H&%6?!Mag^u+tq1-vW!%>)eYpt-0O}SsL&ZZX}{6 z5P>aa8U$k=c{Bjd_erJUH%RwXH{VAy=Nu2BD$nD`A1qyC%5!`Bf%0N5$q$l*tKo2V zdc&QvHo>2Z$gRNTNm%+~xY=4yP6V+Wa(#hPd^wR`BZwk0q=P`2>Y(m;tD^6A0|CbK z(o46NqEgyOv|WZ_t1fzaZ42g#o@Dm3^g(}lU|6h%2bA28O*leM=|uRv8*K(%R~8WN z=e%H#Tyq|lM;VTaM@nFaP!_bF8;u7KOmol{fLD!a%*Y+k2MaH1l(7l^aiB>sqLL;{Qf;vU}#}i;<)7g$pzd!QTxXnS{NZFVqNIQjh#un2t$^eM54zLPz(Rh&+nSl>5 zdd&g16ILcTFE~a;1zb3gIJvj`vT$$}J;+)}DP{XM=H)s0sUCEhM;^Q2Nb(rVs5|nW zuL7q`&)X_RJI3hHBJyupE_<=6w$nK3A7cIk);e`5;b66h8aH^rr6nqfN-?=Qd-4g= zZnP4wO7aKPo+fjWfq_|D+~Jm4LacqIz(J9UDU8o4Z+*zice_(CZI+T5?+@X$g=(k5282{S7 z_P1X|UABM8aX|VCFacH@Jy6FDHN#s_=Uj}1HtLxq50Cy7dvKo)&x?WU_gdI^T9Yn1 zTK*7`hjt#k&@B_E4({+ccZd)mgs!y+2h|@$*=@C0gqr`lluT*y+C6d+K<8}ggvibm zB^m`&f#@@yt4^%3=I9$tJ-WWSvXdE0H^R8^)K$6kGuEVQq zSMW_9KzGf_(bS=2uaJL-pTn}SAkqk%FqFwF6ph|Ynv5hG`LL!>}#DA@$M8gjx%?MJFxULVfuWJJk6kVE%3~&o-@@!}48(wp z!ANeXCTfXMdWJ4tqqMv0ujJD@la$&ja7l@=8BCp=6OUUC-lYucA8TBcWvX z_lfoyzQ}riOT(JGMM1Coh<);d*WseFP<0Mm3GbP%$;d!0E5EC8i5%WG4KUxg6NWkG zhp22wdYqTooRCy>h&s}MTn)=aPY@?j!|4zunfq~jpGzdAnn*#hu4taP1{DV2EE-P`_+Ki@TQ58N$>Y|uD@Bs%8LIC?m=04xz4In`-$*{Y776>m4I%|7LfET1N7dMo*Ci{0J2=a=fG z#w=lzbrb%s-Q10-NRtGrR@O<5KYZpEjuM9u_sYakU9NsufJve-HZAFB8BXVRe60kX zO0%+T{@AV{6eXG~D^r$!;TxWwCD|ASH8j0k$AB)4CYoZ3OPohA0T&Us5!Z6${L?i4 zR5T`n6o0`Vi_4LYHCNy~%UrktTAgm8uV=m`Rbp45g`kOu^4b!{=Wx1dH?sy`g4@nr z_vEl$t%l#BQbK9$=Fhrf7%LVPZug>ASYw$CO>B(cEV=$o?8YVE(vvk;N$S@39_(l= z-(f0Iv9NzekAm{D%eo08Zo(F~3)5<=g=Wll^;R@aX zFBDhx&FeGc+IFxH(ln$)$WOH@$qQ*aBPaNiWLE|*?>lzFoAKW$3Na)<&ct=QvA%#@ z|2$DUtUO-y`mF3Qsh#AR8O_~P(CrABI_)s(mLZHQsJ3`t0=uOW-9@~Yl|(I6Y5!qX zEZ6g5Ii%PhTt^we#^LM{GUk=PmN=^DY^)kcth`$MOG*z`Nxzf7so~B!HzdB?wBwhz zT&*lVuc|$_G^UMYb*E}@*Rv!7%Mfb35~eYS3i^cK#&Dm959#W;5ftQ1OV?95{G`DL zoB*YA#L`?FW5gI8_*BM|Gkb&=XF-@MgClg)Mo`hy&f}yMhk&ehR_k_#4Fv?i$RBH? z5{L6SqnM4W;!($o?P0OP^k#D_!F?0B_Ns^sdd9pUa_^fJY zw`y5Lp!JSJ3&_Rwe>nU2c$0S#?5o#SIyieu=SwZPQdD_MZKw?V-T#h&XOZj=X%PW#w6vnM;Z<&9io6j>k)~VxRryNuUYJ4x z_g%ze8WNqm6j$V2(XjvJQTxIBIF(7_u?~is8 z?Qa$HXD+KM7#1eHeetJQGXXefPXwF7?XKplE{J+zNG*(W_BhW~i(__wu`b_<6@Wv- z%Aky^OK!%^0^R}J2uzUgrGyK{!>~@ zn<+RRfTVWuUN->|@TI$y81#W8yH07){x~I$bQ;+Th3?55sHU-@h6Vz@sop(SRnD@LQ6iEOi17*`CAoSSK!C1q$%F zdAc3dsVhm|!T`fPFTldjvGVDFcUt?8)m=k0`#61gr%KFoMsF}56#fT|b`0Bl6yT&T z`eS|1E)@N(CL6P%Gc)vK9TUP@Z%{>`7XrCot&iZ*hrZ&LLEM~IAPZix6? zDT%4Q)ptF+A%cxxL#2OBuMKDi@|)^{;zu^xeGXf0gN!yi{V@#@&Yd`*^{WcIt*L>E7x8t$QQJD_Zi}pX~qZS!qb~7)(F~z4~` zQvvee?cewU|DB=lbC}oo-5w}eB`&*@w*-~OUA$N$rb2{8JZ4fV+}q?aGB9ONlp;t_ z%Fycz+9BW6K(OkWdn=IXKVNzXChMFlk%1oVVf>&lgdbU$+aB47xiY%Ww+8!%hodx* zX>d`-=jQsZk03x?%$l1M7R4FX%+EF0Zy5U!+u!U9zYJa9EW^E{rwC8=wqT=*%W*RL*~uoOOZ$ zLBvd<(JdbtVGQmmB|XMqzlikumNVyF!5_Mk#&9J|v!m57s;~pn!iDpVsYA@+Y^jo= zJg8|_0D{G?MbiP#0DA27VYFtL3{b4zI&yr4(w8Owc6DC0a52Wsdq3L*^|?A_uJRYs zU?^bCkP`#M5>}c&ig0;&N!}#Oo*x`ua$bD%NDm3c$Ok6@frHad+twd1Ick(A2&!lS zzfq8vxOBW^GdiL-AQn>hcU)aiCj6|vvHttzN_;;;i_$%b^$$U2nZo}n133q0aimxl zNup@hbSK=Me7jpWsi7l|v^6GOS_(jpFy4*Eq}em#lAmBu%$rhIqT!w#DDJU9c9c-! z`8wavUO}=2Sdy@AJWWkuLm2rRk5EfAb@(D99#s~B%U|HZLPEon?w1|lDxOnc?yV#L z_E{!Sh8;(`V%BiX@(huZR<_Br1*lF8gNusxa%cA<8i%6^@Js-ErtZgv)qv)wYY4EF z4(f}x_TWa0a4+yDShs?fkr6eb$G^w0XTyHOrODjZ7JLx(Nc0%aSl(_}CAVFVsSc@c z9$0y~=Z6BQKH;_t(*(E!irp9>1B3|kHVKpDp}SS79*OMOzj|oc!tG3l!~UL^=T2^X z(DG|>AlAx05YO|k^C5rJMdY8<7hme1WUK>UXizf01R{}V@trw%-{{4j);`p5f}{D} z8#U2c{;8f*iwQOSqHk0tW}_%DbR;<`#&bp#_ekVB6|gvC=5K(QT5cLX?)Tn6KHvfq zvt3exikonxx#XCnAISg+DUj5?WthFOR zjHlW>lhEr|sYv%=9tIv`gv{jKbFxr7v+c5oiPmO>zx6kpR>zYjlHY01ZxIx;vn8|~ zHY3WzVP3orc(Pl8>;4K%nxGz&6L>?n>oorI&ZD_{pcIq6$F7r^>FDFWcJC<#U<{Ij zitq0p=3bGru(*Z$A@WWH=rK)9OeEo{%r*i?kB^OEa*{Y6H|{vB1-+HO{DIRO8^Hf+ z_rvB>qS%PgyQO?PstE1s3ZQUa+!kop<<4iw_O{Wk!2Sv^V5Izg#dE#EZ-}5K>VXrT zyA@D8Z07%;B%aG0xC%HdRV(4Z8Jw31nG$_Pt)_8ya*ubgpZ2vE9&8V;Jd%>}WPxUy zUx1GXoG}eB`xt>n37Fg44yAPug^D~TJdEFvDa3QX;Qoy{fqlnoIrA&abrx3d00aC> zYZ%Dm0t0rDn3G>3Z%oZLPCet4&>UwaPFBv)0KYD|>4QpuZAGhxTo<+>rlReorFcBn zk3EafMKZ=nwgim_kK9CG!e9c`P~>ji6uEyVCr8#OLm3#_G#+e}G%~o_ILi>S_QRNiJtFZ}c^L3z`6lzcPM)zWQii75O$j@MNl zns|1IhQEui;0!|o-9X~`XV2UG>PSH2n0GF6o`YB|+jpG0V1J$Jo#^3`s*T{03b$+XSfwYIH zhB5=!MJuwiv|S zE630dn0sQg(!_2(_@VkT1YI2zJSa(2&N`oXQe5M`Geh~ zQPzsUz$JBjVBvc%&+?M7`=D+ck`(R-0j5c;)}9e(ufPh*uR0gMB)n@-{6M$wT9Rm! ztNJ#Teo=4?l8aC&Ac%>E_Vx1Yy12rz(BbNb25ON8jloFdEMeo)P9W$}-w7Ov=g-?n zH2Jy5gDebh4Ch~MA20LD>NOC_@|e5_C^$?J(bxZ8fPsso_?T7IIA612tES}kp41jA z{B&{o;PR|#=h|`5RISIr$$~oFd+R7c-BoF2Q5GoK0mv={!YuTBRI?K@b%y50s5?Cw zo))vw2D)wXK>U5=dOUsW6KEd=YC_RVP+16jUjm4}MKVZKk);C~T-O1r!>Pu@7%|N2 zH^!n<;|Nd!O+$^Fo47#F0T%$od)uC`n4?K}{n@(Hz0-$#@2^Z9$0gpzrl<2uQ$@8U z74VTYKS10BY@m{u^+sUpy$QW%$0}3`<6C`YvVE!1#T4E2zXAjfKq5}Fx*An11kubGGqJAWN_=uu{=HZGo)|UaqVKbO@B5PS z2smuElrsQ(%MW6pt`Ig6RdJAs;>fkjRKB)!4!tXTSVm|snvG51oFi)Jq;VBrd~-6PAc_ipc&V29cfiPSc_Em!3%hGUzkij|MWK#< zSkISN#d=tAYfCEm$dG3im!&O65%lWwdmsi9=M3xSX8+lF+e;k@z~f$2kP^>ahr>KD zF3jtVk92{SMnh)azBc&Gl?B@qtCTWG_<%MCfJoZ=uICP^gthmKuEj>7H!E}tVyEc7 z{55W-(c*z#qF&LlW@mS~t3*V!Z_ks#llexDhMg-tacYV~Mpl-djxL3(qCTXgCNJm# zhyuNqDH_hUzj0hH*yG0JMEUGqPTJUcNNRo|L;l>T{$u!COSrGiW>lY!>`FA z2U(M%%1$65ND2Gh*)&k z53--DYH|{x&+6F|9VBg?0qws4s3N*<6;vPxri>@3FPE(qyy$l9Q}a>@f!K2ygwY3Pe+szFVtjU<0TzVED~=O&7Bka%z#cEM0nSgVW20T0-dtgS z&l&$d@KpM#3BHj{Il+{TxqxV&SxFdk?$ z{uEz^4GRPskO1+1RX&^aIwK$Xo~51y40O4N!yN%I5vxJ_;GVH>XhhB=SMNae@kr>+ z(-!S(Aw8n?l@6H0kUQR!f`AvkA!;zl9KcNu)kfQ_h};ofxb{fg_244J&vRMxsLYZg z<#K#&;dW0v=EdOva(IKAfuQNwk@RNf>sWfb89ax+g1;+y&=Yg?VY7<#9gW-b4BfO7 z$B%C)?hzC%n5BCbU;6a{aE&fUPJ4MDNII&l4=LaNBp3mlGfbhe|;ddNw7_EH(3Klr% zn`igg%I)0b5d~^0=fJnAz=uZ(5V|j(?m|abfS27i(XS`6YoOE{Tl~`&rU-g}Zd`Mw ztOV&PYg?3yVfU)ba+mn6WH)id8p_sJP)Ins{&D3ih?;k~;aD*}OWWL!pL)QWPJhkZN}~gNGX)hUR1WRQQZaoc1Gvke6cy;hZBDO{t=l7hm!TL*m3{pQ6pnC?o2hy~;b7lu z%NrLe99o7KtCM}7t!R7WJ8i7rH9;7)hGau>JIaG+EIqp#hU%NDj?*z zXIQ(?ug#>9H(qHX{n0XMbK>aqZ04Ge>!`>SB*C9U;jh&3qjL$gC=GPLQ9FXKp~c@3 zJn0~`JeK{#A1V9A(WINRZ4HEld5FHXwH#y*cQ+bl_TBErU3q48X1KleqW;*T2RE2( zT8Q|Zq zwn+OPwzOor#kiSk%-lcOWAj&2(~=Rn9M3v$b$UcQjYNewIbC{XJ)A(vjmi@@SU$3F z+T2A(#ps~>2qTmQ<4s<$97wr2-?L85>motb!ahdb2DcI{glf1+@A^hQK^@*>nq)%w z)v9HX8%WsB+&+_a8(R3ZO-#Sn;4xWtU0sAcFwxi#0sIOd7!Fm?>q3|3*uQTU7rnP( z45EXD)Cbpi4C7n)veT@@{bfu6$Puq40P6+;s1QK;1!5GbhnK6iE?s!hyqkwxcaMh? zycBQ6Vu5;tk|a9u4I7lSeee&+0$)?t{ma8XIDd-!24ig~Gi?NKB@JubPEHS5O>ie$ zqc4D)X(u0XWc~hRn1Y4IkFS-OeHvXhha z;H!Ats~?gHTL#vL-qs>m!K2!n;78rIVqjE}j8u#pjb@_nug>~>)n!id*8UQd^0>-M zjj%Yw!$0mcU#VuDWG9z!_vrH{`4|-myj!caEl2;3o!Z`43I&Vs_|}OpJP9Gt=&LS9 zL9ikAb!qq5R|+7H2Zny~X^TMz{e`I*{G{eU!b^Wd$%O^)?$ErIl~kKXulf zYP?>CDTP}?Y77PVm~ZEE>TQA9R*)Cu=9bmC4$=xIyhF$$NI(d72ue*DHTuu< z#-swjOD8K-Ftku%q&Q;g7g8&M@>6opN(7Vzb1@Lt$A5P_rR?$%K!!0e^>+twUt{zK z@{>4zF8UGq+6}g5$QEd`x^os;7KWiEzpEnOwh|*O$2fWSbUHE+{uA<%&u9Xxsas0f zFvHJLk#6-j1TgX)B!5YX$2@Q4jN)q5&=V}(a7WyIXT&DsDE$u{j_;R@F0WUB{t~Ju z64T2Nk>^+qQ(de3KDPK9LF{A^Ym6Sa_VPdi;rlRO{_#%F$AmodN+R21tv^YfOF%Fb1Noj-#Uc!sED6s4Mn(z#iKzPTNr)?L1PO?}! zXlX?A>M-Da$cXJXs?X@_kLV3)UYXSnZbhjBRw3vkrvCqNZguY7^0?C|b=zi2*1e;u z)|ts+08_E-$#f^3xA8b)q|mL_fSJ7<_!r`rZ-L5Ejf2MdjmwENilV+r*}*=4GkCGw zw(JwJmBhS$XDy~L51)cM_knBD#EiiKVMKkJCW|!;emrY*D zH}IaYsGo?CMwC!V$)YjYPzGW`3B{z#gPzF;mVICXbiv_!?gY*u%sd>`JH7{G4H?%1 zq)>8X$)cZvo!W8Mi!>2ajK-!38~H?2UGCdC%Z2A8Og0$(NNuUV7l;2n zd>Rsze%$T%;v6K7eK|jdItfz&WlJuZihWMu(7oP5Y?4xb;NiF=9&<{8I}dDP2(w&MUduiA&08Z>A60b)H~V5l>dMY*(wqboDyvB-PSJwa+g> zL_3Yrtnzl3M52J1vl!I4J5Ztbd_cx7rBO&tRLr3F%6!YP3<^%GNN{|-ghOS&5R=ou z7lkvGM{Z%lhhZZk9ePmMJ%X$tNHJPH+n%J%KsmN@Hf-=f#9UWCGm$K|_7-oSuWp2G zh`6GCto%Wi+hpS@$iv_1c^H{H1|fRTiwR>$X1e4Wgc=q8m)j|GUpqZR34cq|JbOU; zu`s|S4%g>i$A4|YUNekAVgjZI-cA+n5A%9wl@$^XiR|XX)4CKJa||JAre!|9g`SdW zhVn);lQHX~%yJ6m&w^to>bXua|N3VMRId*g+sQ$m@LSaU9=#t0F2r^3k1#$*qv{cO zzi(8&sN5Oa*My!`uETRCP={A-IwT+-L}&;>ksA3Ru>I?&c3rgE)Y3>h>%$oAq2Z<~ zckS5H(nBjPH+!Ncj^lXXZ_nSDQiGP^U0n98x+-3yDOFV@mRpij$E-xPD$+1OTgAPz zE1CX|W7|$wNx@{ZBVK%UJg>V68NS#pK2h~-V$GHGFTQ8O@2>bpPXe*{pc``*Ou^mM7 ze1;NzBceWZdZf!nrgCpu%3RdlVgw0WcOnv{RPc258dIF^|4JO_oiT-f!F$+%D} zrs1Ki;u}HD;cWtb=v3<-`CG)#4kYRc_zn;|XJ^D0JF$w0ph1+VoNzto#n56?JGtV)$0-C4NeQsfEW*|$&0}Z*t)*G1%q6_sJ@+_eq6L6CyKJ@ z1J&pGNtUfIXETvb85I*-J#OWf85GkAd~NSB#j{`BJZ+f)>=CsMOH0jn=PF*;9WPy= zO5$*}k}d9Jz4qyyj}Z>eQquXIsl0^hGB)j%{H!=-d7PyoTwLnwoV07vsI5E^dS$&? zt|T+z=w^TKE0Bs^_|Ntdj|D7ZP`?$z85{N|JlX><3(sF2xuIc7Vc8LQ@k@94v$^w~ zwONu3xuY9{Vo1bV`|~b7;ESUC1!SAAtuJU>CqhABb6S4h=sow1&m1B3>Aou`Mn_M{ zYxZ=r-P;O%-6Xv%(U?X_TCidBnEPIX^FnsXsh>kfed!C^M=<R7RJlCiLgnLDn zG{xXUqd9Y0rS^@S7?!#>*5aiCY$5jua>7(zV1@LbfxZ6lb20#^S`p#lf%su&gJ_L| z-n9Okn-&@x&(8iYJ0Z!)a~N=0*gIXdwY&Z-Lu~_D1zrg~TIlsz6V-)(cdY4hu@Vba z&{s(2wgL+*GLk1$dRPL*lokC&p(&cX@Ww>h6AYVH8Bv~(S>Y*@^*4(8t?%HFMH=z< z&T~zT4`Fpyj5g6O^hR-N{I@@U<_!*S13lP9G|hh!IUF}IwjBm?&&EFjvtJ~Ko{O=w zKVH2!3fCsuiWN?>3e9)^qR08n zLN0N0MB(xzwAdP>_v`!4EL5ao6fHNW!7aZa1J##i%qkjd(Oq9TDep^IHYn7#w|ws$ z8xHqaY_?Z#$kzp#p}uA6OOrhcfz!UMcXxNUbc51JcXxMpcQe4yFbrKo zybr(sdcTOUT+7AWdr$1M_dX2_85~jD0jFj4ChQ1ke^_f5{iA|Mf^~vXkw_wSNnA0( z$U>;HY;{4VcPQJ&eJEB1f)SZvhtB0~H!J`(6l3%3*7Y=l$n{{Y?Z1-=8iSndUik=g z!8hoTphu~>uPUy4o$lpO6X#6nF(i=zDJ=x3f6^IcrsdpPs+28-AxMwwBNcOcv`I25 z{hvJ%K4|;D^*AAZAmn@1e2s8v<)l}pfIND1RaKW8cArrH`^+_5tec5~%9UdPw=(`A_0aG@DJ>sXNYW@ z-CHco*vzM6Br&+WErP?#t#=lIM>+c$>k!{+Z?0kf5`Dt0%aqOk*=O2}%`i{>K9Wa^ zbeUU=uK~p!W$5g$n>WeerV~&^9}~5ha&Bw@U5ZFf)L2Fl`am@rziS3V`z?j;af}4L z-tMTHTrth{@p^ldj{uBuEV7Qzz`ZR>N5>siCB1>dSf}Ft{6GpgoGrFXA1S0vd7w%8 zsky{GyOssN-jnCdQ>AF#na+WhLEoDz8vn1n_I300``1Br^|*9wJl)DEoYmG1!QcAg z9T$O*p#j5&NsnE`_`Dchw8ubNo_nA$p6xKscGP|LWD+_8v`hifZCNqbVUXIBweJ^E zO2msTsL?Y~TKto-e~r1FQu#uP>(A^*WI+G9<&3YChKY{^}} zYt^PlMFtTXSN%vbn8tEBIsbQ*R}^WJa|LFz^1v<0PmrHVoNho?=9?}MMRf`U_Ln>G zLKS|gvN71b1mBZ+D&aV4c*XjMf`du@Lh}3JQBU0Uzd1=|@ziO0ZAw;8M=^e}PNLdD zcz(Kj^j=p}>oVGt;yd)Zd)&A{DT}ghNMvAFbQljq$6G|4T-?fR&Z+_30>z>bEkdCM z>XXBi`5g8RC5l^zAo7AmM%>vp?FxJ|RiDP?s`Hp&R7xuDHCScd`82kLAJX&)wvpcB zDUf*&vkN|S@lhLVh71QYik*q1x7}P;l2+(ydQKYLKH5UsGUV%Z?kb1pAUpjdd(0&? zY^7Jkp(|jp%!JiejT6kHe_caKOsEDh+%}XOq&EOG#f#NOA9i-cMX>>MFu(!hmlVp= zDrj-BGbfsVxY3SF(*siXmyYEt;omU;WtDrczzH3!#scTjwA(&`cj-DSvNj%C`YdPDAKK5j#F*+LABmD9e+L-RPC9m zxBXX;t0Z%0)x|Q$ui8%z)_baX__9>#}uHog-gVss1fD$thwYikgx?*0sj>Z+Ooo6v4ZeSDJ|O z+3U?Kf9a99)O~FY41LML6f$=W38UU&&g|s9ufD&_pE3~P822Q;@@9nkA ziJTxs!2_}4;a`F4^OB98U_Z;t9v`2#php%-P4?;ml86MjW(JhY*8gfQatdkVAiy*O zGN}oe+L#srV(PW;SnVSg%WCW#JbrV?88bVZj|?TQCu3TiErK$-uxqne&YOU);GYPz zlvBT~m5E`8_c|focm9~hGGYe1xxNC1$CWM@Q-@xy4aG6@QRU$$Y%+SjfuO@fg!HNG8%2 z=*d~G_IYxU2QF+*PLTFKt6rsI`R)~M+IqNCZy!2-dVrh#Sg2@wcQOJx>poyNW$$xt{)z^ZRYTU( z@Nnt9;R_kzlF;>wXW7P>0q_jrBqtB!0z?FCI*`nVqjG-xC;E)AjMLs&f2kqRo4Q|U zo2}1aMCbSLij?NTLSZZEtTon#Ml4t-#}Prfhu>7JN!2-i}G^J@vfWg zxr?2r&5Xt&eK`JrtM+1S(Hy_(! zd%i-3c^W=r5Ld8wu+P}_sA>Q=>%{EPo2od4eBq55igKj8h0=mn*Chb4#t8*sBX~uXx}+biVP4X!-DTB~ZDI zSb6-F5lyd4OceOVt4wu;>`u?N&;BsFXofX3@?y!#^)Cye@gCrb>;wr&877S{KJ2U*MeNwL&;?a!gD zvsrmq*L3+=kL75}Kcx_LY!0;UPFhT) z`VB)M4MWy0P(!mc_GT<9+_7OpWx1~_VeuK@@oL<8s|u6N(JYr1LZq)an$GKr^0AT+ z(2n{IzFR*PxtXpBD9o>=LPt<;Cpa?~ zIzJEGcEUM5UrG!&ly6qYbQS$BsyFFp$wk;Z#*wDB(jnvuMOAxa{RIl$i$K?8u|tJ4 z5D>1pji)bp;lZ~^R9rci@b%eTyb1#HFEeJi2B=}Jq>5j0aKi&R{S)5!2c^E@vs1h4 zO}WH(tn#uds5p1Yc>Vn?wqeBh$+=)}u3sSeYv#V;CgIZ7XjNOJQa3py4Pxu9v*BFW zW|AAK=OtsKbP_wM6KY^g`c8Fi@|X^lM0%Rv567?pg%y&ukh9!E+I=q za5H3x7wTAON-Wi+M8eEYp|Sc&_y zwvstptV7KpL0%RU6FV16_$jHTm&VS8e$jHoGK9A~rx#-gkwP#+jX#=5)F2+yyXae= zvVvb(bJF;uhb=1vdXR5guUbWTrCR4bE$LqRQ>~ZaN>$2zmdO^P*QhSRKCNDj^t&{d zb2Mm>ju7j6x<#KV8^m$()c*ObT-vDHQ(bS{;yo3Y3Q|v8>3d=w+o97NtIBROj;<9K z1kj0Pu+uZgDZipQ=b3tvH^Rft>eI@Rb5{b#N0Wr*&9gvulzf~s~=*P-oJtnUJ$^m|c9wjwPl%L&Ms)Mb4%TVUdE*Zndyns*O4BKtO zE-+B)xb4zRAWrNXM(Lsk^W6)2cGx>;Iq{9?{|{e%fGO)lUE*<-$t|#g8<_Y@)4fVK>s}e^IX1R zrZwlj^%O#({>B-Gc0{53bcsxQ+sEwvd~2@G6F1jlh04+Ja7SzX(4{G@#yYBmABf%) zlbkGOWJC!pRL92oS-!GC&c@b*rWFxzU7zsVR?=LaqN8!2m7dGWPR7)WPTp-zwV2(2 zRx>~c>z=vplgHOXYeaRAkRb|xUDNXJ_*8fR0V*}?U0TU)5kkIzJsua8X62uKpGXqP z(cA6Sl*a;Rt0trSHe)dZV+7LHoq<*xT0)c4p8~>U=UKt%1}UKE95aEmxxPhn@%>Wz zd3|0Y&yRHNz)2wN13P7@f*YMNIk@)f5e7;#YRMpK^OFj&Dy0tW~b3oqd_$` z{@GY@7wiV9n2g+-LQJjRCFgZa(n!9yt>U)%P%l{V3JP>}#$!cSPLR%_BgfJCV8r{C zcAMG(@~rZJ9N&%ilPh$=Jo5ZGPW~0%a|PyWILwN)MhG;n$CvxJ=Bg<hHsh?EEHMEk| z^lOsyKg?^w;`6z#0q}H|?HTZbgaek2Xe;NgGYX~?=S|6tmSf&2eiljTAIrF;`_A>J zw_6P#bLNvQz*c=j4Vbiu`0DOqms{I(Za4m#F`I+Kde^4?{D_44ctqu1xVpy3s`^PD0445 zrA8W`4^R|2-k6b*1@z^DSFzqV?nh*&M{&oVV+pN;_AY=NB>mHg2gs^-Gc24QKl#-o z|4FqFRq^wXcsdflN@)1mFQcIE2Hdpm(L%f8%r+*%}8E*oO7;P>`}T8%LZ zu(0kOp4O!n;O;4AZ@QtngE&4pN$n=9vjYtI^KeX z`}}JDNdoD8;9)IR-23W+u1l79pU@@$lBSC43cu(HZW$yjBqs4=*tQOKha&^7#r_>J z(B#gZnWdf`pZeMDKzaKbjX>Rh(C;REfBMw_!(1M&kEz+>=~cR8D#w#>+2Shqw1-Pkj0z)$4h!59yQ~g?z4`*aYL2b>?vIkCtPj-7nxzx0H=8xV2 z9K5GoluDwmVBXibQrou zca#}X?Wz z-i`q;!n24lvOaJX_?=wX_5;1|+{71Ozn=Iq z}J=idrw5rTd^GAWy(=T1kAPcm4IaGb811E`rh` zM(_IRv_aj24w*1X(vVnhv3&H3!6X*XD0D0(2&+Z1J%Mf>gTBHQFQ-j5qY*)mJ_zfxMR-5CTyIz4ds$KPeU`^)ZuBZ29YX5r@RLiT_(>;UxMOr!lKqT~*NZ%t}&H zi6co8$G5a4h3Um=lRqWS5tTsJX*$S?U-eqUl*jT=S$Ww^FlD!U=Jv4HrvGo{^@@qj z^4c#64LpF5NcKmS-6g4HU0AO5=R}wrxVzp5NP%C%9k_NXt-nOk%Y0Y0{Rl8dGI(z9 zfu0`7*1(|24jA=4*1I&d7AgjK$v+iX+#p)ndCZ@C#%#gpnJ9Y)%^RE?7O*T9<$$fW z?Ybfe4Vq1_!oP5nJ#?JTpZq>yGGT~L`#A7YpML8XM%Nic5WwY zwHQDC@R6M5{OTPB`1%RPFRtAl9c!|qusS(9Oq3|`iz*Cw=blgDU;?rNDg#Z_60&;? z?~KG&1%_~Ez&8a$**;J_1b@zjv}9p#ui|-q*x-4Yc+OVRPif+($z}Qe66E@PRYS=1 znY;ggBdOQ@-j|UFOc;Vih1Prdh$__;md%>2oR z^LI@0`g*Txr!tXXy>=aB{OW7ZE@A~rh>vSn`k$2)8ywci_>b_S?)rzY8ez?pavuib zPAm){*Z1iwco|CA3gl6r>^$66ET<3j_r5(gI$C^JDNd-TU%%(Qrm8%uHTQPtd)@AH z68HP;^$mfP2{U3*$hi$1&8p&QIs)52Unz%5>a z1{avo)8r1^|0?4{!~@X1-g>l89_lSA{jK;Jg5Pihx~bah<56Q`OED}74Gc6>ZT_d~ z2DaCPj7`x)lV-4@s){-3IpRl!X(hs$mo87^6}=t=YexW^*vc5%Z-TvCiNb4Jn-_SG`N?m5~QAWblBBs01g2561DOs+q^xDP7*T=9L9!x|n^Sy$IFSh>Yv06=8IS7i| z`O^gVts^Fuey&$jQ35PojcgJkocB6MyT|0{`T{_%#hARdow zOhnPr@EU|6_a-X^tSozc6SffeU1WWk z`XNH8P72Y~tbxfv-)2vyPW1&L-Q)$?b$hE)rZ_5x*DSo}h&!#`U*CGz8z-m6K{HTN9*IqDYsXH2!Z| zvc3upu$>kmuuR{Htj(fL~-R1_1H+n3i@~hX_P24^C`zDD{JQv!cqyfer~b z<%LUT&=+hkTUGAZ<7sT|;XuWVuYsXMm(Zeq4jk>P1hoVp0RC$njz?X3>Tkqkl~OOQ zT9k6h?j9(khk;BT=X7;)8Q2h8a$`6CUTsJfc})U(0^vxA)!T`wp%Tp^w4*zPZN{U8 zyY1F#J&wCPc-uC&a%xqvEG%2+$;^> zq+hbva^CjA>)67cFVSK?kayc`^@d8O7CIu@wX6ZVK&I#B0tdiZSy{e7=$8W)kKP{0 zRFM1yuet4!e5xj6vY#cz14x9GICRI!uA~vbraDb8Eiqt6A%Ufa54(U{71bm)+Vky5_6r zq=hS&e+?Dcb{EvF)(^kWW3+BtwP(#y&Xhl#A>f=D!z<^I0u4QKu8_Xf#X>Z?&o(PQsyUrF*xm1=3nxmtNY$O@NP=9(sq;_GbXfEb~8!n#X^7+ zcQ788Twl1dwHJ7#t2dYKmQjmIwJv=P#&0BxJ`sK-5QP%It#tEYj@o7(KjCj zc+z9>c29?v_sjlyb4Cvgz(22km&!?lX7EtzrT|u|A*lpd3Y^e@*Xs|hyt)s84cE5a z55%R$S|I@Ac-iErWJzO*kTGAm-yGpJ8;ai+E}Mn0z+T*<#qr7 zk++-M^T#H13VUGH+QC6v+Nbl23#MdAd}M_8A3lg~<6}`tc0!^eE$Fio`6HYZ*ndF_>7 z&hE_SO*EAHaXkEwm6>T|7f&RGpAD%4I1$VuahdT_#diHzd=bywR$tJd!eud!9ck{b z4K*G1i1lG!t}QLECXY~5#}Me;*_7LGYkmax74`rNMcMZ!3q>!Eo;N1GC>^eM$~xlB z$6n~!Ay4ja5Z!dMB>L`E-u#I_(i>=D1Rw9uQ3Zr(t$+fHQG5-8(`9P!_h&x~BQIZd zr^U6~3s6grP)!lHvbf6p$}jyJ&r!A!5Ui3Fo%qwfyX$}Do>8k32|%s+C6XOa8Oy8& zywt*3LVKAf?KdUZKw63gD7{P{7uhCURFuwdB{WX&^}*TOv)zVK8L?{)E#*t&JSAVV zRj2mPCKg-(7#yM4pX~T~g)+gqUZ_S*WN28pK6LF#X`kH8fY-qv)O zk{q^JUXq)hW|;>bEC8Ksn@R`aYqJU(C9+<5IY))ZbVoXe3T_?6RMmC><6X@xQGrlVqQ#SuZiCNe)7@NO0O=L1%I>3G3Pbu6I z0q4}jdt7D-QA_OvpV>XL5EWWi+AX;$>^U8999-pqvof$J3onF#Q!_FmE^S>y1g`3Ot-GBhu>d0l5;cq zOGn=Ox2TSL>mnZ`gCjB(2M@vWh+8(etR7jziU63@TGr*U&c*546y}zckv@0*4gwsV z^x1Xi{dQ!3_h$m=l^)Z+!PfosFJ>yEOHYWs#G-si|akr zeCg&10L)9HLUYi`=QaW!qQwV>mKPgNjYp+1kewB@&Ss4h-USdo2L)Yh`|ME?dJu6`Usdtc>Jz6w(yzvQe-=b=ATMjM(2?$9ues8J`~PQl}NqA;CTS{Msf^a^la{G zy}RfjO8W<>JUpJg$S4^=17Ss3JOjkzoAx#KHhgXc+Wp(%Hc{UL2lDSY9{np;h;H?7 zxRoWxgewScFHT24ztn?w_gQ3{H*P~bSJm&7z5=QY$_#cSjGsWUKyqz;;%5JCB`n2X z;G=lL1j)c9Qd`Lww8(U)WUNlE)b!HrBr=UIBQ{dGL{qV4yL8C2wmFPm#j@;Oot_Ci zhrm6h%abFL*jZa_z)O@d%>7Jw*E5k|fAL9Y+FC(*?-KUNdpd!_>pT()Fh4|^1epk1 z&-IW>*yr9vjAf*ENhMB1%Ky}-)2J&7LVRw*P;r5BMN0p#xG z>M*gh9V;D{c%8ccoOyrt0(!v$x(z$cv!uJ@@;gmaIlu6!RobV@~4sdPZ ztidD-^o`qL0QQreiK996@LHb_|IbS_cxW@3)`Lcge-oXagLFZrvStvxJ1A*B3E$#u ze?FaLP&qvc?#QhZQj=QPwY^9Y?bymnNr?T6xl#fR-&b$S3i4@hXVJ9;=2OM@}#i94co=~?#C zTc}ZF6-xtw1u_&IwDdsy`Bk8FkwT062Pjqh8g4ElY!;U~E6DC*TFO!WyFMePtop2^ zcRlP(&V`=*bTD>+G@26Zt5d z!Z-e@^DN5MlT|cuT=LNKC4adC>*pV3qCXZYa`sC>QC99efw@@DwXhupVCx{xkW0&V z8*tgaibSwj=T4_YMEPP`K~tw3Oj&|1p?s>_GB6cdR{mdxT4n|^6mj9|52HEyW{9|J zzacZ02|Id)%3nja7-AEOal;Vz9s&bj2S6uzcU^ThXS@c`1a znV5nz;MKvIzCxxW+2JoZ^yzS4n3o>{Es}8d#=kRcA2K4+E=Y@|cwk@JiVb+X^34oBc zTW^6Y(h~PczG$QRB43~F$n88H!be`YHLPsi_zak(cz*%281U?W>aFTEuBmc?l8Q@= z6joFWY*rdHtT5q6B#jwwfx*d)datplr9X3UI5($+<`i5z8mu?G)p%;1#KKVgO3YPL znNabzGhF~JL%HcG$Ie-|Y&pUlS<;wn?0Swvp}K?gSr6;zg9Gyy;zZKE;s8!&lX+|) z%(z>pm^)|MISW^1|J{@xJw_TRT+>QAyx9_sq-{g5Aiv$iCY8X9N(EOQgWf+)!PbS} zG1Z%n*?pEylG+MbdaQSYu_cnvyc`@_7vL-yWRtc}oJMz!OEMYH}_;#f)6)6VxSK?2-rk?=wqizPEvv_X1 z`uub{%gqjzQ~ptIRqFtdP3>0LK5$vvtH;q|S7kTE4veQepv1qY=QDW^5^yQz)d|O# zo1X6j626d~kwxcicXINo{m$#r{zZ@QyKapZk9KJZX1o3~H@Q+{*JeH;w6Fm`29AZw zg6#M&Z^fqQcM4xXPoSP@f*xEoHpfG~ylVW3PM-aEyqh_9xhawCN{fn$HX}K-O@Q4q zjcX@xP}mSP8T_Bb#DQd!^r2Ad^v`QwMF`4rP#hrE#9SjM?@x)UjYB&4rGZd?p_ z&PgQ=;tl>Z7p`6}i@O27x;fj-2ZzC5Vi5rK6nXSTS8{%vzLI~he+jt)(xc%mn>%rG ztcP{V;dSPb>6`BhOTPg&E2)L}U$KQ}-x-i;QugN}M~D&RPVg6*j6$y_ zwX4$dt#o7??!U3y=nVB&bIW6uV&@L9@Uy{1a@#|3n0GUN3|R~duO23h@4qqJzOb+> zl`q=dJ|cHuZuO>hWXsl7`UWr+|W+)7P&mc zr056m;r|x5Y^maU)FcMr=iCPwc=8L>Njam|y8JB2%=wdSPR`eKlP%*=61z<0fld3m zL`}kacajI<$h~@8VnNguh9H_F$3!VW5Gm5scye*Kq_7k=fYpMe-R+?5G5ffSVAEn5$SplNpWGf15~6Xs_bYyFJiVmwei$=j;+k@Gxr1XrF+Xnd z8d}O}@IVeI@E>LHW=te%7bw`f&bpYj1yF`N4wtjw3^KBMgNWL^ni|)Qet_I^Yrf1K zKMv0xobtjNOaWTqSln&lCPDHjDKhU{a)2xUdTnjZ-(6El2}g$i?z4{f9p!?y2g%UT zkY2HDfPZ@#E`SfKnD1AX$e18Eb~G6$I&y`;0hRMXAb3e$GgP_ESXqu#%q}M(*AAnJ?;iuU$E5)IwjFH22*IzB3B92Xzfw7a#X!w)4LSaY4BA-_kdCT$*H0S7|B~YV{+epUcKmm$ zBQ%`qgOD)#`uGY*k*%JIg@L5ac>~EpFa(1g;`r;^ZxtW-E04G;5~$!9JLPAEN}A>? zB=YVOd%o5?9?r@R7dnfto)^)7_`kS2Az>H*uigDBz|dMCBfe$fWsR5J=%1HoKgmHn zqX*qhr(UQo&Gh;sc!k~Yd>Sv^{`~p%$ z^uj>64ODMz-kr1qlKTlN93cjf$sP_jl^mPgdBjVT1fq^QI8t20`NQHvt4w$L2}#|Z z4P@|8UZp9Ip(KuN&h|CQm0IdfbS$+L+qqXKvm`_TM3`46i~+@L<~YK(Mza7Ayi{Ef zx}+c?LtP6*7vB36tVT#xMUizS-0;NKQ^A6Q7HG-Anjs)0B3j@n$t2y)T@|+2VW0~^5Vb^mz*Y(l0@mdMK)fwgYSrX=@!`IMGL>$vC3nXN)l#>nd=i9=WGt50n6r6 zlYchKUwBv(sbA}v(?kK+Vl?d!j_XQ{U;os)!wWa8Y*lzKAn^8bw;gR@QWGcLHbT=B zS5Vk@oLHtyO-0sr9tRLhq-#yAjhA0R<3@T>SQ6`>3(w)uC zQRq4dl^@=)GUv&M2myEDzQ_q7Vf`-uCHD_tyIo;WL_9n_EeO5Pg_g(!!VhebJEPl~ zNc`Jxg!l7qu0{BWS(IDv?Y@+ew1GxyRJLQ|31L|F>#*t=k918UMkd@K&oP~MOuuTv znY%^kF`yB^R2 zVk-P+YJ9i-L|T1r;+m4ThJV?P>}|NlXFJ;g4T8%0pBoiQ*sfY z_pOr3>u2&7`OYZxq3x@br9 z*?>;HcX;i}(W6b&a}ZH`vGf~gdHEWZVdMjX2aSJvct=6mgGC&4mM0t02w@IfF!5BXgo@dUI zhK0Aea2eF2q|LB@ErX9~r? zAj)IqaHKdXyt|(*122HlU|4w$lWvMmSs;I`!UG|R)&Um0|M#zKS_gr*bHiRr{A9a_ zR*%Iy1VEp_`%0t~^Y7r8lXd`Erc0<@+dm_%yN2IB1 zq|PcFEG!IsbOV@z#DT{LwtXGC(7n@jvTQA&(qG-0-kc@Uoxfu~_!+_M*1`6Rfz zeu;)O(3|;pA80Yqa{@=Ru_%!J0u8jEYa^(2mZE&H>Eb=-06fXl_7OlBuZ{>Qg7(T7 zzBX>;h8pI7#gdRwV@(GpK6$Ope8cf1OY6hR-e;YAz<61{-=zO4g6w`S!2&@r0CYRb z`BHKp)h~#)U}O9QX2lQSafKoA@JD(>{Yx{mqphfpvaH5xHeJu9RZH*3oI576*NbZN z-Mf5Jd<`8O2+aeXr#yqMZQkjwZY!Cj4z7DWe=m=ZT7bcn!>m-&93Uuh-w|Y1a6Uap zq~rqw>bkQLfwHY~3wZx+!H~Z*larl*^C?^sP|tVV&sB&?O7b2KXwcy%(5ZFDP)fK$ z+g#iL_r%jXPtVIKQB9{grOmGz0inwf;T5-6F8aG&EA&7oCghTUfiX2X-9LVA?#WN~ z6=(5S8r5-8OsrC*g_Rs(d*QHhZ@k|?`jCL7_Lyh!3*~ji-pyQE97^FS!MzTH>>Y2R zXM6g_2sywUuDyoe=O#R}UF+8hah^CF4WUm9Q?mA;?4iSBOn^LP6x&-pbU z0v%|Pv9dQp>_A?CYwxKxL%y~>trA(s@0_f#t$(=ZGgzT4VgP@FUmjH;tgc%gG_Fcj&(a z(KO$aFyzq9bLz|#eR8m1 zKN=P3c(}enpmrykQz!SZzY?D^J&+>=KIYK8xAA7=;}%lpxIEpA;-=STa$g8O5Xtjf zDOdY$FK9XW`JHGn&)qnf$n`R%WQR{ZM9lUyQ-Bx?4{xCDW?fWJu$zGF2=oMDaddLJ zXy_=*X>GO47ROc?j87tYH(;8oEIHRA*Fr*G{Tilh5PddqMd4-=wA z6*n;}#5LH(W-!g~eV^+cuk~?Sny2Q;)`Oc{PLLsU>;rl7HykGg#VjD-L<2r>N#Egn znAULd1Rmy`ugT0lNc|`fD^s>RV!QC4f4pZvq`c!1TL&rk)FqA^i6lH5gPSC3zI^$$ zE2|_LLQ9mQT@nuEZ%A&j)*gRrg6PxuvXc^EDWtPQiuZ~@$Eb&-g$ri4e;P%j`#VO-$^KaR5^{khQ z^x^P5?zj|+U7(zmo zYEqqtaqjr%&Q(BT@qQl7`(PPX*@ab7)dIjMkdY_4Hun}?nW}ex_3U8L9yiledhM%1 zh*e?dBt|=yNE4VvZuTiEgMV$Z=HpRw%4z>7L9O=Ge&wh(hU)yH2jGG7W5-EKx(fI` zspQ3#?bmaT?rxt(7B%LCBcvs?4}V{zA~h!dYuUXpENk`aw>mOAskYB8Ps?82{0Qgac~UdwfU2`Oy&)1x|!cK&9>J-2YjHk}4gw`U1|@tu+V1u#+rCO)E8A9pUYJ z^6uX+XZ1=*>w;Gs)FaffDDL2KJ6h_z)O0sGdeV~F0@lUyK&=a?%pTmm`0{WKv2VZ8 z@!}w{xjXhe@!AEWD?7QrQ0Y2qW1EdX=rm_@?lS>12S66LDI~WM=|j4i$1&nJZWW8A z@49b6`{iFUcJr3>4DHb{yiP#@e$!`3KRyGdbyVgVDTkKG4x94b;ScWxwT20JT+G;` zL2jgIPx?e_ZPFWte;$@(8et>;FJYf$VZ{PYcPjfQmVN8uqU!q(;WV^7zhq>9i`N~( z()MbW@KP%hpJ=!XPYrI`cI)b%)3!9IzC68?yG?r_raQSeC5SYMp|=)LLd#@CvREmD zxHIq+9)CEljb)Wsyl#wfc&+1cCG<>s*pgzKJ3)H3RaV}BV*ue-Y_IY{keek0tZVSO z4`nKVJyq|p%);lZw=E{BU`;DaPNlwYVtsE_g+K^cjzY(&9zH!C);eKjc|q`O-*Tz& z#X?h#FTN(z$o(e=x)fv2SiduAo%-H7#dse?L19QGHegFG?D`TS!N4|5ZV8`nAM}1sZN^R`e2sFE=N%E)ca+onDiJhW45z^`o@OX-bxn1}h6m~xVj+m4BbxmikkMQr-fOBta3}4RI zwr;Kd+&hPaL14*F`$|j<3vXFcObp@0k9v`*Z#%qu!{r?<5q11~6@64v0}x0o zqf2;V)gjbOz_&doT>(CGj-KfLL_{-msfSeB07~ir+<0L3h>IYCc{EX4p4TM_z;8sx z(LBRZzqZM|&Jm~t|ANP3NS|BqFnY~B_-Y>a|Uj3@|SM2>d&hw6LHXtZvdk?=HFj^vKTny{j#T&gR|PSA?I-(gTX#x*+D54jB& zo5YJAn=~R-myx-PCD>w6XmbL;(Y%+cm_%?S%$kqLza1*r_R?_yo}(pYBjY_Ci{pQ> z()>vQdIW1-AQ0=b9IrX|;}n+7#*P#UZK{HrBgC?3-dB`Ybm}`?#7`h10&J6l3Ek6) z?|aTNnyQmK_Hdaq2UN#N`sYP_(tu7csqaJ=x@k@&`v0bC~idyV_LJ=5hoH12O&ifm5I zJPune^aTt}f802{Gpa%S0dt%BBU$S6bc3SbI9C3PRR8_aZ@5nj5)6?;L1t*=<4=DY zv-Z9#c+|s-5{qE5h2%NFk4QHpf;tp1y2G+ZPR?rhIOm0(F2@!O=8ARR#7-falob-qT-3K57;F!&OhcQ2D%ScAnB6 zrt(~3x*8P}f~bQDtN&x_E2FaPf_70PB}70PB%~YZ1_4Dvq>&P&J0H4BQb4-9ySuwZ zy1TpcIUC>aJLml2hq`2~d-k3^SImq|S9}Zos{px%q)v`d7xdO>Hgt%~Y``3sy#8|U z@zS@^*@jV`Y;C{ib<^}dh@_%AJZBb8h#uZlYR{8?$lC41Q=c`TyXvdEz`_*qbJ!CW zrELE|xWf%{AVFEs)>UGR}x} zfdWh=bZawrjEJ^sbsH6DGu0&+B~16l_9VrJ>!CfIr@frYkqO_?3I#8m$uZTR=E$Vg zSSb_9wv;2}G+4AYOJI%Ve7+nh zEAYK5FltR;@h2u#ZeCuSHuJC8Sgyl0Bn;`m(~6zls#VMS-T|pBYC%3KCyels98R4P z`c9%0;!4efYTZI62@@l9IX%pdZ~+7fr?%LdD_qPn18ndY2trG${&T;Bd0A|>i4=?r z9fN+F2?VAcbf)&~@7P#o51lj7A(stFj4Ugn2m?<~fRXtnc8&are-CH{ux_jis+;M< zgi_FA8!X(I6iW9PG0lmXnV_GP6%7s$aMx1*ze5U)_nk&~yUl|q_2$GbZUhVm)p<;Y z&)4<3t-wp^xlyc1DZ3bZ$Zb#<_y}1gUEiNl5~FrnTo(7 z!CdX998MrnIBh3Dcupjat_(R%>ft!uuJL+$M9Wl5wV%Q8+V6uQ0|$jFWvjtqdNp$Z zENMOe^7X5iIA-!umWWTFOu_fIeLhn(su`n5=C=v~R$u?(Cj$NRtG-7))Va|sttmQo zlN`XG?^oyuq31K6U>V~YMfL?3Z5RQ>h3C*G`1_U3yN&cCV-b@B7+^aOeb?>7sUK@@ zOv`>bNT!Yy2VPP+M-2y5N|4B}QLSs@zo;w%gSusVSN)A{~z_?L;rsH)!d;h>zI;ZMmCH za@45f%B+5BceP=}Tz{>&UO23;3efzobauHDp9l@!l45kUp26YI%XN25h;x81E7+rZ zu4RyuP-`friC7TFSL{aQ?oleB{GPy0-KHUCYQxH-UwAm744w7YNkG-IBXUem<=S(vCR! z2Z}QqWWA`WO54j9MY6$cPg(18v5%?K%aM+74mxVWj4}wOa$VANcVH=cPc6_YGDqNr zHmty(!HPPgg11wu>W+Eh5LWMcYWrgX_O;r^g|`L--!gA~JGp#};_!z~B=!f7pTvFi8BRom~|npTn=v(9l*EHa0fU z5_YRe{)+4`FqGegO@Nt>q9)2rRxdYSnT-0^)06sT8lF#EZ$4RN)Jp7me;O5iSW+dy zXhRjtXp81&DlObI6F;a%Fw598@6M!FIeX)2Y?-^LDd;)mNXl62*ngTW#py}CF2`H3D7QrkGVeDbh$go3o?~II}fBMDW z8)LJLV^VD*ku4u({JU+jTut^kb736i`kKT%L)(!T>~?C`ndxX+v9cdu7oqSlnBc5O zYQG1|Er)jWJK8V{;{?eKy@bHP^3bOQOYPS{85@tqYuM^u%eKuvNEf?YJ&!rKb+&Sr zJOQBt#EZFjY zSXy0b8K1JF;9cnS-I7`=y>hrf2hFi7bNrjXRlKA31T{LDpp_&rK#M4_P_`Ul7!XyT z>7)fHbjEq=v?;|rt-0&@bxVxk35eexTfgixIkTKrS1lD6Qo==m+raUtv<-dqI5b-N<5Si;s%XR0H#tl-iZN1q#?OTE0TsVKl z#(2MqrAX7AaSuTszdj)-WauMy=E_dTDCl5^n?M2^e4cE_7`;B+B2ohXfxbwCj$xkU zo1x@Xjvl8Zu&_c6A452TAGW^7WhXEq;D8u*c^B&X*Uw!De!0J@Lgi|O1;B9_m(r%_ z5e*)HuX&$W${c0oN1_hXpz;IL&(#AOxV9x0rvQhP-&KLu>dRzxmweiE+iMZIYuwbYA*+K64k^!z8xBZo~I2>pNhX_pUy1z^3Pz%beiEc#n_Gy|dX0 z!<`}v4!G9{4&F}&Z%t8S9n;Z~l>eZ~&#Zs=v9Z3H%+OU*2L;{L?49pTr0am2@%>{` z^HfZv`KDI|xwH6LDjMr-@3uqgM1I}MsSYULiD9tBRwgd6U7(lPq{XJIT?yy+*K=DZ zYg$LzbC21rw{|2-fBt-5dz>5YP7Mn_DtHx1LrLj(DXpers=y@^@*moVYn14ZaQ_%)-8JsZJM z9j?i^)g_Td_s(g#WwuN6zlk`nFeQp6tPata^afy+%gc0lO#)fR!mKS=+4=_a+oh@n zZuGEHV(x=l-iu8Hj>}yp9Le8o<;d_7MmFE7MK7Gtft8P>?N4hIaJ6$S2RHdq`7RPP zxDv+&g;?LDK>wx@4P3GsHz!5yo1=uVGf?J^>h+(vV#%Mw@VKA zBBtc1PH!!ZPu3z*0kjD!4Flh}94aleCu54KL$?oEnBTt52nq)CwPOks+X$e1lG3_N zFe$$|EOYa{BfQqZ)jiQc!3V^eWHNNkZE^Mswn__d5?=|Nv7o!VV*j+t&dA(Rh2YXCE)nW(yXwU z9c*C9QDVkh&PXppJWHBv5{YhgLZgc31Nh%Kvu9l~X4p5e#EJ+`SM&IF8Pz`X;`c0% z=FYBtm>Lh{O)EJIo;8y=z;}F20~DX;0t{E>wSYOWzo_yvBM-s1GbEmb9L7YW{=_ag zS=Y{PXQsA4mcfCy9ADbn@7eebf`XB5|CKSFonK8Z3fQs@qjiu0pttyBZ?K%~QLsAfQ15pIh9YAp(FVfk(@Y={G1&G^L@0t8(e! z0thux0HJiY5l~+33py|pHl2)+yKLUac@}d)-NsD8Hx&Dp!`~St9o(%%2N5U>M`)>z zxT)~|*7BM2X^qP2V3pmh<1x-0m(nl#uXS_{XiMwo0m*T<7xv~xo&i01=Sm`dEOSY~$gH67N3mMiqTPGp+T zrp1XLlq`R#BeL){X^zZR;gs4Rz`2f4|k{x-= z!U6_riUfPg%5kZv5@3an8CB6UB)?n1WnrjW`%}8{`$e=JKSON()dv?Yc%iIozx~&+ z%j~hGgX(_iczjIBBihI=MfNiw5z45A05;j|wLT+E>z}c}5jL(&t~ed}^19==5Q;%H z#MW>>`%485Nl`Fk9ux#DX)?Y)bT$jM$5$xTA1KcWhVy<6Cg)hJbt06=2uJBqJdM5n zK<>Ep+N;g`gtwmP3GTa;@|T-q>1E^B>6i&?&j6At=PLAxJwI0>|4+nQ2W+d6o-wo>XI464AvB0CEyXe7j zYO21rTA0z)SeoLe>=h4v-;Ch6{iY4Z5~zKa18o>rC1T z*FGfZ6#NQKE+{Sy%`}?cR{^hst}aR1sf$XT{26~q zB&bQ7s{%Ft!ZITZ6&}y7-@-TnL0FbH+~V|gD^D0VoPkcYyYR{P{DrW7&g-Rtr$UY& z{d3!l%2~{+RGepeXyKP;z_G&1XSZa;rBhGG%Szpx5xgE(y<111cta1LTAmllub4v+ z@$)!{31nYzq~<9oFq>&Lp=D2VuH`;0HhoZ#|J~+&OlQ*Yq&IP^FL0mBeBYlezRguZXQ0lV&feJhmAhdaMUw;i&Txkf|J1q(Qh?yG*b8GSzY=XQ8 zJT9QE;CDWqc*?Mx=#v|aB!tj#Pw_IzsJVGXJn1@k{DD&*7nm(D48R39J%Jk7)G%nalpS^)Bq{ugz8@fzeK>w5xDr zp`rfkEv5k^dd{jDl@^xwIL1^RtmiGZO-R8_@28w9*h7bFP7cTJnXRxEpXMpA zy-ix%wF~D?I4e>f0UeL$;PG~F4R;rbO)_7NbDsPXn}VeR$o*9<^wWEie_SwNI2HKV z{PE)Q=$ROWO2+-_2}$9>__iUH;Pi{7US-}QkSWk+klqnG>R@gsH6SZno2Qxtr7NvT z_GUwdY5B6(n?qbRgD()i+=%1)q<;nF&@xMohoo=+UY9}zx`ynrwh>@*qP?OVf+%A@RT5 zf)NK!y1>&&&j9;VM#}U*tz}|?&)uDl5Cv~rlDIThmK=XjLyu;C+hB(#iGpKaA$iCU z@Ch-0)lBHwTf2IIZvqvec_Zs-eQ)CFCnMM^=nuAqrs32JR^q2>8gX*gXzP$lP=Bwv zJM{u5F=+rGbcwGnKZb9cfQE(LbH~H)wiBqMkiWeRP>B6i(wevq0^TvgoibxTGW`_$ zw`)shGeo+0o=+z%e2!B$g(|=CD%}?RqxeqSmqFW`2%;6G8jmxzpe9bGOokkwphLtl z=>X8p=Ov+up{+B;i&p&?DzkPB7iFimMP^AyIdR{Wt#29EXglr2dZ!r$( zwS}e=G3=h6gLM;xAi^i`mw4?5ush1Xy3);3!vP^l0|{jQ*H}6 zFK4P-XhzvLqH6lNP29vg{k-7o?>0B?Z%gzVuRhsnF94Zp{_b4g?f4>!qBF#e^cx5@ zuB5a)frLrI7Z-tuRjD6YXbbE>Oz8yKI9!0P)U=RJ^dRsT+A%GA^}HB$e7MB~5Yi{_ zvpN;c(HrfHnqJymFq+oAJi+&CrcB>6YEx+-iTVRQOG9>6!T?Z0mvP*Hc}1#^D*NI( z_9~9qnn48-1Ku|K#r^@RLm__}Bb@vu{jjqwKfz%=Ov!lnWS|8@6~@v#Rr$J zN@*nDAKD#_z__*6;jAK`_|yD%AA}Wis4zaEFFMCutY|D8(sm)QU}j4LUFaZuSkqN! zX4h2>fp^I?bw8IDIpzz(RkH|la$ieyA1vn4IvP*cAa>`c(?B zDfjF6M>F|v+6&>BA(>R~K2G7X6w%-lRX6%3N`Atf%}1~kK{6Q5RBvR_SJ%ZJ@ zuth$=6tNJ))G(Ys!}C~Aui)NVRGz-v#<6sEHRV(QRFo zhhAP&$7N&yz&qm8gXKh7`O!FylZfRv3o&Xi4H(@vpEnASDEXU!m2^+?#Ylt^-q{#)i#_1s=IUu7CIBeE9!~25YGq$GitFe&vRA3xD zr?G^ZC1DRe#$N3#JVnu6zBix<8&BphKuno*C)d*5qpZGB380GyMzdkJB&#ptEy)L< z7TjPUqgG769))mzFXRolxn`7NcOJW_gjxP6-5C`dlFklNymnlbPA8!2_qs=wLeh%x zqnK)mQv}|mFkV(_rbAO%OF`{;15Q57{N&*)XZGZ;hrVq* z)zI6vZ59TMSI1QIE4v$Zdcp%*k5@Ms?&iC;j*jcT2aQ!}#{W}OVleEZp$lGbT;}eg zk^A6khD~%m2;TTeH|&XO1Og4#Xn5nYv>`okGPJoZzKjKaI9V{ElS>|v4pYaLSe~`G z(-cNQfC=DBUF2||mk{-Q!TXHs05h%+Iye3lgtJ0YpEm+Z#(@r)tjcxTcBjErwZWL$ z;J^?aH*nJ3joJ{@y(m3j#?Z+@L|VOrn2qTSuis*HD&v}NZoyC)h zgMt|D@VCoqVW2)RPyB1WQ=+=vcj177ryYBwPHL@x;NdYTHawkNINzC}Q8}Y4>)LR^ z?!6uqe*>nBmPF1y*Kv~nYYY^O=L0N55>MtUfU|+fL>MR5$?+T1KF?dHEfHOFptr^S zdt}*JuS1#;_JX^Z2bW(M7z=>+`L@`Pltej6|JTQEg(te&P1w)&UOg$o4#|e%Zl07X&#fB%{ zjIF~zPRQip>WqRA6W{aKU|4f6@>{AdL94*03^OKj=<_pxof&4$+WDsMNb<%|!psmk zUMKHo8L%y-@pJPgd+IfNMfNpHvHHv#P~{VI5F3pwFQ9vDcGGpWaz zq0;U+P%f$>XLzonA^a>(@12p$O~o02Y^=Dtm0;@F<5A1pnrO+m*>g_h|{&Am6!?muR3n(+829k@xo_oZ9WL4D8)&Q)ygvlP^{j!ld9f$4T*K=RmzU<(HWN=cy&9I;8c2Ng- zgfc&}O}~rt;ZVAJ16$7J!S#2`E$luc`UZOueR34WZaJv7ZY%8Cq30nrD-pcQrwAg- zVSt|XOcP>N%*3-d#2OvISw+D*!9H0^Z zNE;XL>ABfsq@x(lM5l)ybV$zf9FP`L+eWPFI_ws+|Gygcwt$F>{G9C<_yzA%(CzO9 zxCmjj_q@zXysFkJ(P!otyADMag;!!52Nm8(a*6vOrA&IT>198m-9o09cR}ulJ}C5T zF&Tz-9#Ho5$yeh_{QCm+hx$5dwElv*YToSbECL#Xss0N2WvHW}Mgo$i9i)CHs2RC; zo73Z5^tt@u&hEm9q}^h6v~St?1!HjBPa1I9PM>j2PJ0gRpglb$81Psrf)qBpg4{T7 zL;_gk0MX`jZGnqCy!rrJ^_%_jBNt_-^>BlqP4gZ899_aqX<=yaS;^|)1NzQ~OB9g~OUKx;Nz>TGB(JzQJ12)As0&$0U!M|3!&WY!;H4;)z3@=- z2~o!S*N;hdPIn4NKC^$y%nCT$0tsYVig)r?U~DH*A7Xouut{1^N5XC_iA%x)ci~;A z449PjCa{Kj$vDaN$nvpuB)M2$%E=6OS{Rmyt(E%Jrk_}4Z|aUv6P~tb@mIXExiE(= zH;@8%%PM=U6%`8qcuV@2?vNI!!g%xDG+rtk%E2Ge2n1hjY&YPG&kth8;9sjP@t;74li%QlDUD571i3->zfP*H|9L*|9M5;JB*?iGy&y2%-UdY1YD76QN zQJu?JXtQd{O;$~fCq~n0=SLKt8zDb)zxIw?-Nwx9X(@)@97iSy#IFAB2g;@e-a+!b79oj01^P?v8Tc4-d@O{dwQkfhFSZL&m0*!K-si{L$69i5G2XkDam+zCznqX3kB z4`cAf>Smv;?4vfs`5BigYfqd?#;rPG)6rY z+Nk(;lOvs}@fu(flpx?y;oDR2X9dH~z+wuNdI5~4E3oP&{GDr`SSC~W;oj;XL*s=+ z8sk$g{_vcYY#;SrefNZxkZV@lrh(x-obNAWl`5_v2b-lr%Z7e6!@a=!YC9VP3RYew z($f33%UNM>L~`lA!XKvijaOM>FM z3D_QC_J6H_|Ib?h_Cp5yfXzqdy_+_s8r`zGXWM1<*M~LZPeop1*0~ufXhQWjx_wMK<0!HL7gJ3og8F56m8h-pzZZwpj@} zn=#oN{1`Egd1bI1B_SYY8VoJsqgoiea;x_(cJnsL=$pV9*=#A+z6!Lt2@3Spf>*?*WYnzVwQ)6LrHre zPH^95*7{9)zxC5nn(6wV1+&BsgSwKd3PL?ZDdMJQa_$BRZjIe93IY4H69TjCG{-y{ z6SA=pn({&$-0VM~A5&k`i4EJ`g|KEyLc^Kq#%PTHB;a2je)>TsZyS<}fuWo0{0>m{ z*PCG+AI!MAQ^$|9=x+6Km9cz5Ap)FbdF+<(2cB%E66uGURC@yXDD*wuhIN;J>d5yo zW)=Y~AbD6C7G83$s{!6D9iG!0tS5WLNV6I~R%o9j`^o%+Nd^xgxTSXxuZEsNb*v^R zaSjSf?{?MLmDS@awjzlnh2VfbO zThCPa;1M5>k4DUg=rLxve!Ew)l_U6o2i#Chj@xPeb$i7PwHwjjx?LJ;x!7QOLWz=o zJ9Q+hp*nsRUn*`w-si`>YLv!)lwr+TXGpHqm6c$N7BO9AM$f+&&LXXZe4AEP`q{Aq ztufx)O)DyZ{EHlj&vDXzbmpFsut`Xx4WH=TPYm8NYBi$h`z-4Cm946A$fT|zFUvj4 zUt=)t+BgPPzQq#l6=GB3?QFCn3N6$CSuCR`Tp(dl)c~P-Ty2(R@(^z6g@!@QnH+cy z-<%5C*(~p2GK@LOYCI`8|8842)2;a5fKtxCuD?SXc59(j2|N2%Qm(?|om-4aqH14F zwQsb(nQ$o)@Z)gYjieS)BWr5e&RgD{35NYKIUwM&p74be7DO1^T;soZvXa#^6sKNT zLluEQZ>s}waM->vyWeRd7v9?%ky)9!n~F#wB1!Mh_8-c+5C)AejrkP24Lz;PFbc1uxh`#_4;a!Ha4L1nKmanJa1%%R zWE1mj^p9TG#!0_({wom_y=CW&`ONgCK094!i9f$XRW#jDgf9Iv&)*(|i@w79RZsQ%U@(}5!>PY7^WNn^RUbMoSc z&vzaPt=6ufaiH`4=(O?1w=gs9yT|O*ixdIQ6skkMuud*f;He<}kF%1DT5NQN55NmDe>M0dM69fL zB0+<1rqpdvK_~N?K(b~Dx(mazxbLy!Z)q&f4~#FR2K~)*;MDGTHX?X1bu!*^naX%q zX?bT&wa&9ML&q&wIKOwF3MVK{)O^uY^tZMit(Ppy&U_og?P%Rh(H;qey7(IAQo?a- zlqy~q%C@hSJo~C*=U5sZdYjgOIWNOX6djpAJC2oyKUzN1DV*V4H93!!2h}Os9Tzq3 z-ercB8Ula%o>`ZR3j%GJ&8RN^)bas#2(g8!%UfJnWR{^G&_u=G^dwq<$)!!Zv@lqy zW#eSt&Hv#A5FrdJQ0}*Px8CjB=lDywS0yP=kp$j)9&u{Qd9jESs66hqgpSP`p#wRg z1PasU>5V|Xuq05JS+sO@H@>wAeAhr}NK+o49;hK%>K(&uV`HTae4z(!tIu#-#(~S- zNyy*#m++H$6STlmBLJDNL@81dNOo<^NnU#ZRj6&2Z5X$nr4Xf)yC(PtZlkAwK3gX& zAp!o08grHQgDD2&+Xrrii8cuFl91@Ya$C5F4{T7^^Va*Dmz3)c8XB%CIH0#1FPMKr zpB~SZ;2VzZ-(YARJ{r8c;RsQOjRbNCnl+B_iP)FY*TFx9(eD6i>Q@6VrpP3Ih~GP3 zw!TlFi5=dPwtJ;3=_Zunimjp38y{%k&QdNn{Rngzq&Xi{4PkpnB1S~0d9|YpJe(a- z%v_^+ms}F4si4gRR>RIO{nUwh@&)AR59IIn{29)DE4u{-!-Eb45q7kfR*Jj zIA3y1G{E=PFIUpUyRJ`bQeM>h|Duo%`4ECgAc|^eu~%tx#71)V$w<^NFkal6ZP4Ym z@xIj>QWDAe=t$v%?dvBqb!ESK`9YbJ6x$1%?FdbOfeKRQW3b)1jRtSu)SaG=Jg zk*uq=fVk&f9rjGjUquetUR@5Y6A)xE4ss+1ck>J)NCWy)5KkhebxWC6N{0CeYpo zEtM9#dfrjgK4J`X@lBH8o^YGayz_KVNpo2J3UI-Dl8)&wX#F2CC1_&vAsI)7=st!D z0wndxO2B;`P%t0Z{bn`P*m_I}ku>|mpTsQO*AG*QY7Kg?QGwPq>tQ1w*9TV7gR>h@ z`nrkS_=5`Wu3K+fK3en5S{S^YUw~4LMg>e!_L1@pWDotjjf2P&cb6hOw-H(lyjsv{ z7q9Ng=Adbu#HfM9#ubZH@t6MN105~%-M1k<2>g^+-$1~n;8J8)x>}-7<_oeM8eO-j zRr4s58!Q;;a6ZAT|CVmZavuB$5BW8QQlV#Cd$H>%EJ#vPNY}F$iP`AMsLJh4;%391 zJ>4uMY!C+0;iE$@NL1sh>gs%;(*~1GwSTcG%d=!i9|;fTbB2E*i&XpA7qmkw+to6A zA&BmhwGz^{IIaWnyL}m)1~kP#GrCBHYy`So25suAQe~utQUPo^hIWsZ!8<>$$i>=J zoMA2;7Dcmvv9SY;iqO`*((`nV72f-OBgD{(8Z#l!2c?Bhg;r}G$o=war`t7{F8Q7B% z(8Zs|oIFYV(TcRSJG47wu#cX7g3hi?OpRqEdaVRO^O2w*nk9~&gA@AD@(oajZ3_=? z20#6OPdtg3oP(>-Rcr;$M~B>&wr6qMk6c>++Mi}TH-IE}WKo3lU2J?RV)eb7^%4G` z$UAs_o@maoX^B04*o~!;H`Z}8|Ljw(n84qwk>wb(Ql>cOoXtV z97?Gbl_8~5=PMr*eEBO7VXEeYrOsH+lP<{Z&E+b2+-vZLmY3#YH+3H^`z`N`&s7ZQ z#l`?*ny`ze4Z4(@_XfQ(Xf4jA%isCDN|)VjKZDh(VV51Gc=7)*%((CTC(Q9bt-^c2 zxZ<8eMh)}o0L%-z*u4?n)4bnnOO5Nx_ym3CWnRPS6Xi4P&%1j)pJhYSD-E-p=o?2* zE2RewKdx=#`&aZ{G9p0S9UZ@tl zlTIck;Xk)*@T1$o_A`?lC{!~By40};U(y4$Nayt8MqT}rQ~WtB3w1XC0ScLub<@c3Tu5)i3ioJiw1&9-@IrzwXOjJomY@d?-Ro&H*H>`Ra095~$tHw6J`)pcw% zEqz5a`V0+xE9ih9`W9U0g#OCqtV6{eCP?7T5wl>zA}(8XqHpJWlCHRju;vCNAi-3P z2hJK1S(AX2sPn$BYwJbxp{bd^5~9g}9^9w%6Ke?Ar}5!d%ix8bmA)8AnVy9%kWsQH zlcPR=5?+#W2KZ^ZTF?m^Vq5R_ERK5rE$n05lsjkzdLrCg>l2FOdlqEPkiRRA4`hR} zD&N%kj-#++L+V?d{u$k4KZ2&{;|{F@(36SquZpE#&c>&i;W<)KpIqAK{rI{`U5|wMRdm!3SVMD?_chI-GTq$s6MLt z()p1!yJJrmGgc6Kc0Rp7I4DU_zgX}3cpOo+0Cf*DF|8_4_$4q!V%(3rLU?g3@wkOM zaKd=)C&=~uaa2;8=I{O`R2^kw^zK(8!pjn$>+`aSg_NR~p>8N4dXHZQRkn2>gyRz7 zn00S@=PoOSCa4~NMGgqu+Z(e}jCiC6J(NhiIQds@u7t3FkKd@NLohG~@$I=V1!k~s z!+bFB(OzcP13l*NC*v9-n+X}vuDLwkh2n~0gM3*?rb9sIHCf;y00i-eJG8UK^-$R! z*HcI*IDi5IlG;z5*|=h>g<`o1##mhv%F52U0~o+xVzAu$?gz8yfAHanUD27vJ->Nv zxL0{LdiG?$Wd~xlu3Az2lRHC23G2G0g%J02iCJyC$`!Uw{cszl7shm9>Z79`!kPYE zhdk&2w7m2JeJqw^=1VI|hfcMVkSI-2{KVZ!3%YDG#J%5%ywZuQDw>8{}OCH1P z_u6Fi^mt17IZboJqFUd?yi`frk$rKKl?pcM_lnnWTCTZaHa0eX z$HZie@AM81QgCx~k0NC^Hz#kUxDzJ~1x^@efl2Je#cfm3f51+yqsFuBb331+#xBeC zjMQf@#cRUSkHRJ zG?{Z9qy0T3aw91**dIyz8lI?4$=$|xzNUft=+PVZ1q+wQk+;^JHA{sJVC5aJ3wnYy%ZQeFV7G8f-{vyKd5 zIebsR{7eK%@Ra=3xX3BFZv+Vvg$Jga&lgx0v>{vqiQMI8S6Prkc)gnYaM9DbAV%Le)uWTgefs<}4Pu=zz^_&fJBMeDjm zcAUwjV#PABZ)4GZl=BAafphsNdk*Ff+y9&#@!IW;vfk{E&*1m-(oAQhp_r`DJLBtMz; zw9*@G<;RTlyvr7`i7s7rFkKf ztLaK)8l68sZD1>}q|lP*8|!0ZmVRNLu2fz~xuYKN+LMa$e-a!hux3s`y?&TI>d_J$ z|0tY{?LYK;H94!MoD6}N<98XP-z2ZeAW;^&_u1uQu|P$RsHfGE^y{)H$?Yr3$e%gM zPOt5vmAQHc2DTzo?q8syqJBDDAX9FFyB!v@Sc8ZjsZwhZG%dVyl~xlA`<&0wy+mSy zR#=Nq%jr48;kvk+psnTe3PorXT_VLpgCvFcD~oFCq2vL)<@Wagj_HR#LKmqdmk;PD zJ!K@iR;~RSvqdL*Tz4+}daH_!&v#3_RyPI_JI^`W9<{{Km{BW5=Gyvt+&;NQ+0Vh; zuV|$!9~;f^-neI|zQlvOU;erF{G)Eu=oF$}0eKA)oc7X4RX$tzUvqzUPLsJ7ie=xk z5;3$UDZ4|l?Vpx~RXPl&b>Cjjzi3q3NGNNLJ5akcQgm!rq)`jDb-H)lxJJ%L5<~oo zry)A+G_3QHf-8#B6lZv)Z~>Wz|CWnZCC`aG^)<`y?D4hy8L7(~*X;G-b?03)nefJ*Ceq{&u2mV0zy2kkgXtFzXt zHg;3FB}Q25KxRDYhs~SMHH-9*-c z&>Bj_>u}mf#pQ7PHtmZGjtUJmwf0o;UL9yP>+45Weh~hkSS|Sy(wTohYQ^>FAvIOj z2i?0+n}~FXEwo%~(hhj#_g?k;0Po5TREQv#xZ5G+4L*$q-V#R#(rqOyqQ4t~7S|@L z=a*lZUEDE8K6W+Y$y$xijZ1tsr^su#TMYDt^z&5^BuyQ^RAAF`c#ykW-&*>=;jr#O z?6*w{ApXVupuTT8=*Mdy!>RiHA|%x>b!Vb?AnZya*`mDFuSP~GgGDuM#mQkUjX6Y- z>w#YVuB>-XjlwJRIUlwOqADSqK|U?z7EJV`Qt;u5@6kMct~lmnBQia#8Rj^nuk+JC zTF1(WEyVC)P%Bg;#N@`zD^U6`h4VMEq*Go0fLgEe1;d!8so3a*Zg+rdPi7O za5gd?P0!iqTz-4N2|*o?gN1!0Ut>Pk+%`*W)KbY&^!+I@cG|lV`Z^BeZFXmRvF!s1^p$97 zizNv1Nc5NgTE-}8P#Q#!=+%$!9KT`e`PS&t-Nx3m6yjJ*aP|?Rj;;L1H=lF4a6zUw z9+jDaLKkmWsEq3vo3TUdOGp(&pPj+NifHj`5o?@LA-eO`r$qKSGNlP5)e1{x^VTsd z+u6R?7JbMH-p`WKwU7AxXw;+9yJXOML362>t15rP&xZAWwdBhu4|Ly|HIT*Kt92sEu+6hJeoCppRT5qtAG%)bvWZy@ z>q+|Gc4+Iw)|R6>3*zSn$FU;o_Q&R4p-3y6i6nCl_~zkA{6^GX-*RholVvk_3(N}* zbO1f6mz0Dn0>Pv^5RE8Cz{5AL{K+R~qUE>MinslHae<9gdMbef`QVLLWPf<22ll1FWntkE#-J|T7@j>g_Hmt<>b#Qre z!JMx!zFxK>t9~JZ(H41v3hG#KaqO)EEUu7gaZO$#&UFl4w&jVPPkUtRBjd<|&BEb3 z47&kGwblRw*H;k(5xEeKJAa~9znCoLLVEoyz}LPixy{3ShGIeUUsNwXq!ZKj-`Nfc z6AaY;Fhsm#=q8n(&1N%LP(p>txBJrkM3c`(q2n<&Gg0m>QEK!gG7O-2G~3_xg+6HXq6M$}$QEdRpd(o{};2xD6E zyFP^oH6Bj`d6&f5|(+ z#}Bt70W)NVN1%1f(FXIV05mh_Y&t1qDZ@TVy=M=gUaYcNV?>bYxZF49L<*KhvzPjV z2IudlQygYo)w>FQM_9GJ_EuZKVU=qxrgT>U%_~ue#>#bWKVm+n*pp7nCbTQWUx=Xi zQ$ZV&^E$IYs!S8AR@EuNtn^XP*A^p@~Nn+6FOw%=H?1L-57J$15EghCvA3T!*;&tkv-o_LKANl)JrYpWTJ{F zmkSJ*ZPvSBb^92e?FIujwg(`a65$-gz9E=yV#`?MT^w9Towl_V9w6447>*wbgw+;? z-(>?uh@)TW4TL}VX3>B@H!E&aAcNoEIeMzz>{nvp+zLn1Qs*9A0!g0I1LiQDa3laD z=7#4=%5lB)#a{XKB~UBaU5*S0%HNkp8`a?Sv;E{{UF(SE`-)HH8&{~nu&A_tbeOkv zZli~rL;Ta)#>gfTuzMn~Jc|X&REHUQrMZrDk-pjCtVGt0@9-HJOLa?13foQ6r8G_6 zI%08^E~xNpal<2r+tDEze~U|J>s{sClW!6I+OMw`WK;*A4Q;G&$&z!3-4QG3Q*A?= zl*N{YqQFGV^Kvfkk$2BH5vmaYPWdU&GRjboPFx0-Tcr6CNr>RkzJ@BZQ5V$nZbg)i z+8FXaww7J`2mOl{W)idcB8PZq;zK2Y(~H7z|JNMT<^pslL+H1qjNdfT{$*2qIl7Az zh@Btui;zY9I=x?g7BRaw;OPH=EiB1Fypid3oXQE#%kx-x#P++P({UQ+!Gp@n%g*oP@M1Xcaq#pc8k)rU5NtQ(laj-oeyKH?AB8WAL(XUWS39nM?;Oe7-Z;u@? zi`wRZ;$F){O(Tl%xbQH3JYV`AHAFfCBSzrspUe_lqj!5+8ltfTwLv2GSpK7VAU4#7 z+FeOh@iikAy0r{2WE2^ya>T3JiCK*sW-PY1k`-J|ycIDH9vhOQO_kc9Oiagy-il26b37QS}JhLlS#Xr(5c%x*$hmSZYrhW56>Q5Mc z|Jz;-m1xsH#&>mBo-I9BdxIR1bK_2ujS*kCR*5UY;8ZY-}=6}Qva63rx z{!uAJTn0iOY}jN2P5^l0Ux^IM`wcX!0Ggfi1*`JcHA}{^!hZ=gbUMzr2MZLbC^Io! z_M8Rl>{fkmf6YN$MWBtNXY-@JNoQvcF;t=>fFznjVF>9mu!`#1=XZ1K$&M$AdbSev z(z7Li6z{gtG*0(>dkAPx1T~}2Ae+ag3t1SxE8TWq;uC%qMEx(?#g3h^2ty5}f952| zit>;pb80UYbIULIAP?Kcuw9pTo`$Z6BV*J9YHgjCYC*0{16)%99lL-Wn#pi}v7ff4 zF&Tsv<4FO&qANCimYnMmnhFrfY{!?h*?p@Ytpwu0cKeD4Y~BEoeNrG)F!s?zTI9rb z`=y%LD9rdGgfVQOxKDwwQz|$a;vuoXIcajK$o!+KVNtX){NH4ql6}qP^Zpqx`RB(h zAim|xq_424)5RLq9v6fFpH%Uib_coIY;b#HiOMbm^T;o(#hL4 zsI8F|oU(s;gI-hvtU1=a2RvcUJgOEs;HiJH0%Fz8@%`#7Eo8$2N-~K>mTkB`5&=(e6PpKXS%7x>L_)}sI!u;p$2CzY&&`Ekq{(hI9(xeHbCx6%4^39F^YIew0 zwa%l2vIYijKA2IORnmeIBAuKMO8bSnZ~;h}I8RFFh{n)DyFsoKjt})yMWPa@;+kjk ztv-e6;w=K?77vOkLX=X)5<`4liKiC*CxG((PZbFfU+8E4tAD`he$m!`4^zMD zE7NU1^qMy%j0|#ZZEf|!aRdP~kWXM>U<_H_O4-dP&B2m@$vj6T zKEhw7|4i3wfh%#qXjhe}{6GOBGu+f(KZiZ-(yg4$Ldc2htju>sl6h0SsX6q9x4h)_ zqG4p!7Rwcn_$G7wE}23FWLc%jaYx7}Bmf{b7cj+dZp~2 z2m+^IQsB^q#nQBR-RLU#k090uJ354xgh`;FSRXw?$FV}?(Z-6++bV3jj;K%F-!Zvc z5Nup^q+X_}Eh-AEbmwjkV1)0}&><2bPY93VgySkglY0mVIbG!Fv&BOju^~&9wWE#$ z!TAH-g0>a(oosX!%>S$ zI5u2=pkbBR+!6@fZ5WF4$3J@ilJI@g^KGt(>hk0{k@LhSq2m@g>=Z1ELZXXG!R|%PH@Z%XAv6G(-@taUUkp|Twn)5~ z--Pr~(ZSBF&ow7Ly;pe7b2JCq>`+4?L4+n{eZs66A_`{8vDuUGtpX}17~s7?k*WnO zLrRE}MJw|L;anfq46Uqc{)S(g4}&|rM-+tYNz)W(R0;U;C5kUVE_Z9+=ow0@zC!~o<= zb5%uzxrUV3&DgavS$2c4RwEBKemMf?#`URIAS^GvBi@`mK7)60+Ja|(s#7ZJq^du@ zf{Zcr7_Q4UKOr|aGOOb` zrMFv240Q_A`8Nw5eMTC`VGK(g%875`(GH9MYHDi)D;1=zMmL4#j@IWL-=+}7NO1JH zV>gHF)M0vwAGIgV3e?+}5KkM>$EhOucW}pa@bxhXf9-xZ6Iu%vaD>mGoUKx1H1jfI zRwo#uTQ;d}6Ia@#tQtA#T9}Pu!%x=^O%`l)tOqo#{B2gX;EsnVP(A#QdKm=(#`u5V z0rxTkkaoiWRar3|2ne*@9`FdWwXKMafe;jqsZL2oCRH$LSgDEo#rC6C9nVwUwGg8Y zq5fhvyDOQGWstmQYo^Q9^b{zGWe6!~W$!|9CwRY4Vtn5Sxgul%c$!v9N27mE_NIxKRcoaLibXx|<))}VzNvP}=w73Y<`*?_SSwoy!}yj) z_d<^<`9-xrJ#Kt(>=l4}puevK^gyYLQTV@D0N}qj;c9#U4Bvl_e?p!556AI2_s%&U z3Zv!_(vdoydSpC{mt`>$3Ju{%zG50j+OWG2WgCFfc6hv+t+rX@{W~}~00a{_DE|p2 z*jq1YqXA^spzrOV{>Js<$y(i_ZEit9Xng#7xCdoyD7X1Yh3C~l#o{tpzgR+5k1{u~ z=d*d0#4YKb5Mi^;RsPMaRaCBJ>?*WzL^mLq9nVTQNfB0GxPp8WT4uaFr% zdb4-mC6;G&@$z=w&eDyZ2p0rbZeRwQa_E1eh!{Zg_oyM#75b6R6{iFO;`xq7BL=x| zP!M%9it;|1b?Yu+gWHR#fJ-GbNmTjszY`!t{{I{uZN8Ywy22n%5S<>289XMB2mbc_ z_qL2SalUf$gN?C$UsCN*5+|uPT;IB`p$JotcPxY3xo)M{i)PMCee*MhODoikT4pmW z?A?~}Ou$)_hIVz-&gu;lnw)^CoPwPlJGSV9Hq1;(YFGPx-Y-x2BYy?o*Cqr#V5La-OC%ME z_(gu?97gHj_@3^cWIk=?&S!`M}QCZSVP%=Mo7@I;RLgY+|IEtcKm2HVPXY^1vfWP7Z zsr2ZpS+xR@ZSyn|@6$^%N`4{P4_T?kITcg7?Kzks5yY4|3E5O0_Pw3>u>dW?G5YSb zwt<*zR_Mu{_>R6@R6gJcFY;Ytju+B@CH9*pN=IC0kTT!-;_k@$H4;Pqp|kyV2$zV% z=$pS0M@}nBR#0N7sAoiLA6s_Ot1=wFREOlOu7Z1h*E&CGF*AeiE^I2n5oSAQW$mmU zlQjq*+b&RCjvOHNrT&dWEBrW+)e`$56ic}n25-2^bns@2;rV+~5@Fj}v|rD@^M<2h zdD+>%vR?=?rMo{eTK_uAB)EfA=mvz_QAIu5~cHt5#75lX#NR zh32Kh+plR^6ME#a5a#e{5~eD9=GVD>8bYsWlvxWe zAM(8|7NvzHp<&~j7cFo<09e|yvSs$Zm17MTkd$h7}sW({xQX`a?a z^>zaol$6o?{9R-0S1ZxI4-VPKmIMS3Z5Si|!pCOqu(#a_l~X~&-;?7hdX4f!eIZhM zB6B>(K5b%Qt3pmO?A~73B7TVx2ohm62|#%wx$ROaA|k@L4k$@)qwC*jE4;yD)+pOz z*1ttVL`0li(D8e`I$CN>81>%aCXSYtmXQIduy=1Ec2pa|M0&uAbC?R3Lv^5yw7bp8 z$|m?{0oS8W51Zf+SKns-=iWuA;M(Q!+aL`!;=^FoQHjBo?s~UR&!@y6a!0h-MeQ7! zjr70XZc!On)<&wpG${l9;Xpo2DpjGX2m{FQ_##GKN91!MqE`CjByu5Q%fdiY2X86v zP=J1i%KhawGoOT^BCu@ei@(`3`+BFAjZbnQVGfLYufZQhuVso`iu9+=5=u)ZMl-UJ zCJ3W6It)@dp4Dn2{-tDSfe}x@(!}pF&@`F-jCF^06`XR)D9wch_RLcfF%)cps1LWltDD1sHo_+&+h^34Y7J2T3e$Aa-#Pqp0mxcnvIUHvz{OH zFYKOOseGR=#oxbv{o4D;*sqNP+m`ds%5PoRpBxOoA~lANL=3iIb5@q>sy9Aj{ZgKvt=V4R&@CRZJk2y!a-2AgGSvL#)^)rA@Kii$Ad$o6Aa z*w%vD-jw=DSMw?s1T|&YAEfpV-Y!?{f~kvD$ijA_&-n96_h&Lc^d*XEF=ivmvxyG4 z0HdI+^hSfI7n&^`Q>0$^@VhzQ6e%U#yVH=d8NVl>*?g~Kf9(N5TJVGu>1=zGtgG%J zTOP{l)@3C+{Zto!$!p06~YN6zJVu_TsHFnl5*LB%-ZRrHYy zf5{JuoeIlGa?7}oBj<6v4CBx4LY9Oc<*b%$vfL|Ep-WX<$5+Kn-kV_TUV<1-lB*?` zNwgV0d@lYCQ|KWi-2zS29@03wxPR=_Gab6@wdesI#+*{?A9zQ@72adCUerV)?WaTE6lD46HUBji>d4DgZa*u?wq~{VnjN~eT7}a>wBNw~V$YBy>*v)9 zTcX8Xu;^IR=W{x{uojszb-GRr<0XEx|5c2K7}bnmW3-q)PWK(BZUG~|V9YP&4g(Az z+ysgVrGB2mWu|EZf?#Z)F+SEUT(0;1mclq1{tQ4wUNj$JRHvAB%v#tdv=F(%XPWg1 zROv?E)##0!V_zN}=`4pLbN?!81QG31Sn%{^1h1?cP0PMs!_#K`E;KWk3hZWhS9Ldh zx^luYR0nWpIc{6kkXdLD`d*%_9Ywx{0L_G?$1!qqsnHm^1-p=GyUbOQ*Mq6MwW}Y` zEEaM>f`3|#eDCQA#X=AoCgy{=?axUdzld6+&mQw*dov3VfnJ)#yd^}v$Mr2&}gRdf(Bbz|m8^ z8r0H3;6exhu9TMoK^p%5RgX+KK*7nYdt0;0d=pElOXoFony)bS1`TZkywTWW6wY5>1#BKYY2_nX{<4r{lS&fDsZ}eE zR_#)V+c(}v7y9bWUUm)a%yK@+g~T!_b8?&r_4bo)(7W22@imH{x>P|T#0OzMJyuZJ z4UIrG2@c-vd&Tll=2dJN%HT}Z%4EJpV0pHRU$m>salS@4DKA`Ugu)o|@%l|CC!QMd z3D{b<>rCSc7-J?rj27~n=Vi3@cVhpl0i$4{60L;pPznY$pIh@^3pHFDFZj1zl)t%# zPLS2$Ohg=JXA1`S4r2qEw#hJ1D1KuyAi=5ii3KZ>gTT|7Mil6#aW*8}r_t&mJzoZ} z0bS!}Gw!-F)rKUSOq9kw6>)QzU*OrmYatyTZ57P?eQq^Guib(D^^|{vY|*e+<4BBW z2%~8~NQAsJl*7Fb&&&QLmJW+$C8~-rs>jZMix7oy?1qHcM8d~|6rr`>GqdasVoB@U%>FbnWE=&WEa!KmIGU(ei;2gvN z9XbUBeTA7wjn6h?MNpk0OXJ}X%=$he&q@>Vc_y1|BU&~;ET)+cN?JyT4J8|W70RpUJp(@PV4K$`-$$uQ<6hu9A<3O>RNy@ z;CWX^bv=4Ir_TYSRa73sV?Ki?@tjEeMU8JaPqwac(5d@Q=rhEUo=3J|8EfA zFIG;mzpn4+2~*B~J>B3`%{m3zQBk+(Gvqep*h5A55Y-5W5#!FkC>Yg8rsJ;{sbKW3 zn^Hkw@fz&g^eRiVjd@_z+eLA1Uwan+BEkNVV?-Yuj1xH+0DmvweN%y8@?Fu+U(pVE z*91}Uulj5AWwZAsOL@y;WbGwPUx?|yKUhKtd-g9VbWpH@D8E3M2ZpPvJwOz1a%lt} zGnwjjnqSL{Uzy|qnho$D3s6Unm45pSW+_C#bD`NH!1$X=g z(KFekhzRdZB9$K!T2A>|7b(Spvq|+GC?Xupt`btw8HshfUK%*MdRGjHm#|cxVDn#} zhrUIQR=%JUpjt*C(Q|_7wYRzgn|8S%KM(kzS(0jY=~<4QN|A>~Q#>dIh0GWtUZFZY z?sqo3ypY4S6D&)3E##lyu^R5|G zfEJ&`&@t-7^b^$gnO{j)*FAO$LRL4n6P{zQgo17G-uoNM5 z4&|aNzCdc3m7kxl=4N=tq}|G~_;F(3IK*@tBPI$D1?lbEe$&SY(>-p7(?}(Tpmg@s z6Fgh#!G|(Y@s1LSr5}eXv=5J0u-HH<1mNdZ${$zPC_WI$mB+P=3rC4cAX0ALP=D&; z6r{+U_;C|q7E+9<#}G5aH-@}QLh~$18=*lz z)8?EBcXa`r^*hMNlGc8)@t|AUh$NrW$XJ>3zZUPhW||GVGQLbNT7Zev5bx5~r?~C+ z*1MU*!-fhbzY^K)3s5|By~eCu1T-|Ib%VhE_{YtnzAr2j4dKfU$A2${HmJrm_N-h~ zn3#vW+C>o+$aHwoE;h)h3uh1il#k@K2_|E=+Pr`+x1aiy)}03lz9&~P&;0lf;ov@w zaHO@0Aaj!h3qHRF5JP>sm5h9g65_Tuvz1B(o5%I<#->C9^+Y}3Aid1RH^%9(DcQ$c!WT7z5Y*hmWWwn>4s zpEZd$gHrjH$r~{l68e@#VMJWPxD|l7j|FoXgICrlrvqUO8;W`3rdzOsMhRSf`+o+N z+s{YsOV8o}8HYn?fLaEn+qCD{eg#I2;i1h`5qJ3Bma*zf6+yKWjH&l9%KxEPaL&H3 z#qI4^-X+-b$EXH4d{6iiu+K^}z2pKhBmh~ILYQ2&_SNyzn=Or=dZi3K^q)UU0MK{n zrgEnfRIyx#g%FJC)=L%lwj|&$=EWi~aHe_i@?OiaK=9)XfM5S>?r@6Gpv!(Je$?mT zJ-o_ErwWW0E4-OS9DK5V&_d!o}<@8`>JwiwME zIagcCRd$tW9r4@^`kEtr@Ze>uD`32E?UHx2q}jV-Ok`B{4DVL+7Xef0TI?7w2btq*uL=m|CESPZ#8V#WGSo6-^?fX0 zN(mJl4-N#Z8?G13zlyI46rX%?^zKjQZ0c7qx2<--$^)O<25@C58 z;pP5rLgx<$!>1itLv44ZD==v*SjDzef&8rZX7!Zu9%b(Ah`YYTy5)TI4=1m zo7rhD{)6pZ<;)oO^&?R2?L$|VJ_&UCTA3av&Oy`MZEoY)`x5Qx?A{BQN)RjLQi_VwZ4UFR-EgYsyGO1tQxqM;bWA9x4SKceqvKq- zrc9kN4NnAvS5A}+N6pxQz@N1!dO@0V(P7&9P4TwD+*o8D_($A)fG8Mu(15HCy}J0x z2=YGbluIHEk#_=-;fceksRKpB$71~+=qyBv4~pywayof_VlDA?+Bj_9uU?}Jq>GiZ zt-h0Pcs#+?cPm^q=5d|wH0yF26Msw-=$0`rCA zcMma7ul;`d@S8DN@mhPPA(%`o2k3ujV5%s#_20Pbo-wWJyl+DW-|%1Zh1%uvwcGe1 zV>aU+1MC-++Y#hj{@!neW#kd>m@+>|a2T#SW_)5LOscvtYq+iR3WVFXqoxAkJ)g+{VS_+F9! zYH4WyP4SB5;8>Y1Y zZ&7%2+&wf=sHi2kK&GvgSDGZxc_0A=ZKS?>N?$hs{^Az7o4KIVJ9zucPs9gf`M@lZ zAJ5SpzgkI}PZqG+nbQf|>i&M6snw>{%M~^?c#eV42mW}9m#h%f+85MI+;&kia z1rK0k$a(RA;|8X1?hb^`omi?@dK(6n3~;*Ww6VPbK?v#p-C^^gZCYNWlj!?)F%>`yGre7 z&7tt*KTt%8n}?i+#YJ;1aikiKAqs#C$5?~nNem^KLAI_dF%eB3s4KedjpclWqNAfX z0-Nm$i;6mJ-G(ePpsUZT1A9OFVcNvv=*+c=-8|mp3mmDdtNqBY(2y94Y4+w3*Uog6 z0oglKj`nke8P#o;EQeTfSTQJlpouD@0YY5>Hk>}_mVMB5Vt0pDG=8rGSgo!S{>1pv zP#juV3Yj&v#Nq^?u_wD!EQ(1L^D(5>Zrt{zjN1Mav3EX}M3zjD!n#GZ8S!z!;Dc2i zuZn${gg8(WAN3KIV8MTlV6Gpwl5Z>HSf8qo*l5b(Nz-^p;8gGpSpK*35`yYHJ3w}z z7O=`PzGfk;z%|jdUIv}6r!@W?^)aH^kp)1dVOmy}RO_j;3v*saa6UoD4M}hNYtMw{dgW=Vd&~Q1^iwOm zq5eZ^W(hPoOneeymy@%6x4LTD+Ji5UQu3I2L}NCsMn{5-3<@X6Pgy6W*ks@$&h8%Y zCeNL!=4z_cB@$>i5vn3icl8C!iZ=H6L%yVKlF#U zUJ#cZ48JPp*n6uT-m%-suMaN}jI)2(Xb0;Ea-$(+Z)`dZBs&S3J;{285G%xi_@5U) zBIXJ-#zNMDIOdXCu24BwJ(U3G->RtY$bO1s0WygZPJOtFXcV~PzvLZxb{*n{0Ni%8 zO*z+dKUTie%-?rQ48_0bFRIl(=_W8zuzR}St=xtc?MXs@)@?m2dbG}fowe2zr27Xo zshq;?w$Wb8fPq-;X53EsbW48t8ylJCU4o3#`AC}j>9||jhw|j0e@0zomCr(g6KuNv z(gJww-wsWWm1K&BagR=Qwwh~*C))2%q% z{hZ(a+>I8PHRHy86oqAPxmi|&0v;70gnZU5-eK&1k%l)dCBy@pX1{N#JB&`yeo%_PEd! z3xHm}m0&$IuCLY?b$qj$H>>&y%|S=(s(VH9W~QeKw)8s`<>s6P5jgsDz@`!7Q z)2kRVzR3rAVTIQZ#J}Z?NaG$yzC{I7MRE@t$e-71R}0@B;yYDCVTq$Ruc%*u*UpsF zY`nDHxb#3!_j!+R^xgS6nXW^<-$jh&%Iyxp#a!;5?|DC}FHl$ZSni!HuQ`AAb)a7_ z;v5&c>&p*YPbt(B8XMRF^(?vS+Dz23zQp74ER=Rfu==AXhg%eUWwMrQZXg>G!UR}- z>co~GFQVL5S@#5AbVsLCmY%4dI76#8yNYGAv+w;%kCbaYfjt1>TB6e`q6T@gES;9T%a9t(_t4gIU`Ky)ChEK zfeF7}qL@Yp86GN+zAxuhtm!Aj+YGVkTQ`lVqMjfE%9Uk&4KOUFcmAh;q4~1%XXJGj z)?_=_USATLM2)!)JRX|uy=;EiF3#M zdkF>^`!PkS^}`g_SoK6cIrJ>dzWZeO+G#K4F7k~@2CkAC2mtAfA^W(?Yv9!Et^*a_ z87Fn^&!CEWiWi7M#5k@iB%p*=$dtJffMy$K8r8k3;^&AS^e;rDfhFeD_hxgyMJ_yk z@c=21!sCvKaZi|$*7O&7%zVZ|*q{=nB~(G{-7`sa_eI8V>ns)x(0zX2xcKxSKcJhH z(wf|cEn;5e1xU!o_sQm*M-|{}$-ggXM*Mld2MGxPKL)@PfE2CTRB=G)im62&Hqjjr zJXWe!tL5&;QY*QehtPV*lUco}rlr%A{j2M`e-bRcc_#kpH%+6|sgw?a@0U&KH( zAU{vHBFiZ>{>E8AmCWGZSD^b*aM3oOdRET#D`Bzag%k%# z4fZBmsj_EljCE+Lb#tn9Xt?S2d`TH|wsR)*?LE?Rx-H4CJf|pN^mFqVhD{j;1RBrj zGUPMlA?qKki_0?3VO*7#sth{cV39+!-n(-A%$|xbwQYUKF`SY6&Mjs_^r&MKQ>n#F zQCgU=I-We#W5e#Vx=BF`e`EwMvOvt1S~reSCD8Bt1q=)J_Dc8m^?k>U+uz^MDcmQY z)vaen6~^EH#V;DV5vX$)DqWePXsxFuU)Pm%V2jFWMPo(yw8RB-DNeQ1ag7gUzyQ!6Yhz;R@+Bgh@G*6#b^MlhS!m4 zagJl_O!+O&rPbq}P!Y(N^bipmb}d9QO!Uk~WG9fP(j?cso%D5dSi%vjQ9B0({+-G~~p>LCm%C+Hih)(dkwTolk1ssTaLaMAdy55k?hesQvqP6&%X6D$dMoJy$IBleX~+aoKCt7iq+2?Do+J! zeS+eZh!2|^l-Fjiv4xBmoQl4&9j|Wt&*y;NF?}6tQ{FjWH0L}O$a$=|UY_xz)PY}s zIxuDr^DWlSX0*bP-!42E=>52EV$no;#TNHHE?e0v)-}t&!5Jmz(F zU!rHvKwrp3&F=5IRbJoy$DQVz_iWG&yGAZX?cB#`uJy;fZ#8{fONEbSF4$ICWFiIE zbAcj|XS2{cY`ZE;@MOec?Pxs8j~YB&v`#9pF!btoLbl(zkMLAJMONxv+YDLl=$8D+ zVT6lHp|HcFCBa1+IX-47ELi7_ui!5GUEKIrL| zlX;!hJ<5zVMBnRat1t82jdVL&9or=~Svi>cq z#k-z6ZM+wwzwzFfI4S&vsk;@N(B}YZf zdOg+1;h*VQtGP;|V86y-ptSn+fH?Ka6TqYaFPYNVJ$s&ie{$LoabY8>U0Vz~X(f_R zYG!RDvTo-Up1ULsdy7gFj4yW+?;Rk9f`ChnfYM4zroheCV5nX9+U;t^%dS}0=KhIz z@O#~eb-en-(rj&V>9T;688n^S+-&5&W%PCGc)u)GclMXa)mHntW5MK+=yp~zRmGJP zGUCqE4c>G%>z=|+^?X6>ttmS2k|WNPa(NnR#)v<(jm^aNghQKmxbrBHy1Aac^tjVa zRDFH!*6ebQ^O?AJRVL&&u|B=@z0qXe!0ApP30B`XP_cSWO%1-Hq9O{qlMagKxe1%2 zqho`Z8QOPBs$jTQ*srLcPUB8r+mCEX6MT2()UGV4g@X%%xO{OF-_2RL}U&V%Q&n z_TIkIy=DK2MoTQYu~+Be1;wZ7+t)i;E+T>i{iH4h%kT5I>_a|bQQc9)y5BU}F0ZKh-J`j6oV z=6ZM9j>FN&45D;UIWH1QQC@=hO8cjgcmsRVZc4FpG~5=-=JqF7=P8&g^MOa}8<80o z@pi)#eq}~l*amKPWV14JymO1`?$qpaVwHwu1mj8jwbk}BD63!FgC19zU~^C#Ywyyf z9WJ#^WK%U=;NP;lSK}pBgV%LQrz$XSiw90pt1KN6F5bhp#zc)@w7oV)X4S>WMwNKg z_#9FYFVG!0e7Q)9vE?n)iplt1i1tga)DbK_8{&=~+-LO(^aCdm*b%NUiKx^@O3iE4 zL(_v1IIm~%9n+*e8(0ya{wLS4ymn>L8a-)%b>)|mj|i=t!S;qj6Gy0_fRZB>HRLl_ zD5_$m-Sdd#ykfUp?)_GoC+*VMc%MKD4sX!qV09VH1MPl2_g?tgpAF*F=6a2B8;zDM zYxD4%9MgI)doMWd)%&Pvu7IjM`k2%aufU_r!9!f`l`lHV&ooLuxza77bMUcof6 z=I{aMC0@qguHvmH@{D+kFZ`^-(!4;w?;B}l-SQM}%_ym!4;o5)`Kt&?QMovysHY5Y z_lhoc`!WTE3dpwQkQ(jujewYH&A1hy-8ZV@HCu zHMPDIUD#m#v1Blqt29F{ae9tnE>2GJkKKNspXlfZCB150mp@a2czCaEC<)S;cqC!XGDIKcD^c#ODmVK^+i`_kJy0&OdbXR zH|*TaviqQ`OR+PYc4F@X0wrQ2^V=$(v{MT<-Q!RRd{>dCB{a0PT%ZL!@(9F~UMRiPavhGKfD!&s!O=NxcmQ5@*ci-P0-y8w|Z7VVD& zix3VzN;cZZcegrAtFV<5PiM5|>FaRB(BJ3$6^C}+;ysj!%k&j%m#zlunC*G7DWht- zE^v$jFlr_V3SA|{mv!)MHl}UFpTGNO;Ze<#oElRfV`JX7$MXd+KgS|yr5abHiHI$e z&n$^Lldi25w~yEF!i9|M~l8G9eS>?gqVVurvvQi`gY3P_D4SFa@sO?b^aE0f=FHg%cI|o*BO0m zws-{R>j`8C>*pjE)*vk_jhrg25`QY4@% z<4zx`Q#{)%Pk0URO_rC%0ymhd!d2shVY@S2uIobyv>yYDVjrOnk}16o$`2&>ZGayA zYL!H(G^jpI-wD~bayk;UEvNrg^PpRC*j5gLmlBQBIIvucVA$^_>rJ1>BEO}&cbyqK zl^4s8uw>Q7aZl?gSI=eAl)E-F?5 zm~Zs3WLX^Sg1q_V)0G!I^z-NDMIz^|z{#dPj#e~>ETigT^~wrf5?hEw4&AZBSrTIIJzD@(;^2B*Q_KlYR*Llp>oldzxB(6Y_r;x z=S_XygJo$I9ClJtkYsjSU>e!vu;VpUgeulK2d&=aI+z@(cv+T+<)8CANSF1S758N` zT%@0Owb%N=Pq62$s+YqndCTs|UB59PHgj*G!avaz#)Bd1x97)ef5NL(i(%POv2x~j zuAY2z4o=PSS#0qQv9g{k-XxNH%F=OQ>IZ) zs9tfeuPFNY_A~mAFbUwlqKcCXiH=66XJlNv+MiNqrp*75o|e|L8hD`>;u;j67m&kQ z22(8!NiW6he%}1#{i&CXNvk`G?u6U^-B#foJ#>>I8us-)BiTKs6fLsZZa0`vvS3PT zp`Ut=$+jX$bq6aBCwHV3S_-ocq3edDEbT?&O2Nn_p1bsf5IZCLPz_h=`yw|#scd9% zXNkRlvW`4a-7`ucCWloy1anA4d?G$8_B`Us&b8hkKc(yjC{uJe<#me&?4vKXEO)nCpW$T$oZ z$qPJ;O`S-0veouR)fjgNXw+v$R|sfct@rQ1;wcW>!@H?X2F)wW0!foH zVxI;M|Nc3QeCUGdP~zOxhAF^D{QYQ-ehZR#oDz1ALxE5{)hqOP9U*P`WxAcgmA`{n z)!xE|h;^-y3_bbJ$eG-{g95{=M^D(QV+BXgS5>Y~m>Zde6)4Xf{tDu4v=AWVb_uHC z?Z&CRaJ~FUr34R-P3sZ_t1;@mf!&_M&4^=`&+$xFIEzzFcg?DaFqU`{wqwt|@HlPR z3mqF_C2rxKuBhY~&WPJBqYY)*GGnDta+6;SJ=OzTSw5@FoYZ*S>LBwB@_F2nYbKuu zbUTP1A_=QXJQ55Akf;i)B8xc_eiK7jIwxLJX;Ky1pZE}TbW) zI592ct89nW9zXho)49HMFY8Nm*8MB8c+oOJx3khd4pzaPV^9LgM%5y}II6+`yB_}v zlpepnV_V#wezI8pA~IX^qzcElSsv1xd37}I!B#ezca-IfH$;lrwJ-G-spU>#q&s3{ zM;7X|Zt9@dGlxQ5N_vAwVk$gAE5?nBvnqfC!X;4EsxwQ%P3Mg1y=k}9x;C!ic{URj z{@)FAT8fIqMUsLSn_TF&LBZM(uQd-u@;Iu3dR4=hk;s`&7cuwAi*QC>JyTe%XYr#k zf8B!yc%!J2G!}&wRtywjs%4VmbsL@CB*P;kWQl&VaiFQr+;h(WFvRoOZ;i*zCRUDk ztPfwyPrGT1UI(wh9nOEDH>2ekj+WDmrD^ri5^^cQYf$mmZo0SAVcFv0c34S#vz&+1 z$v%LxI$p7SY`a=R>B)`P=_58@xn1DlMXK|nerU=iI~gQ%S7$?(erv)qlC&%RRNB;BoCV(-7+D)=S)05u0RQVve9p5u1phU)0Dy1L_S0d^nujaZwco z9*g{|$@wM?l!Nh4?uXh^MrG7WSubbkyySq5!wEjr275E$lFIWOzWSlCbN-!Ri?UK2Eds$? z%b$Me^A5eCcTz?@ixu2jA$ax=6h(L?b@14g`S)QECk+ExusvQL@~DAY!0O-E1x`)w z8fx-bXlsx2)+Lh8X+qE9)rY4A&-U%XLGwDvoAhbPt8UdKd$w@o7_b@5T_kYb8o`_R zcYi38iF8hsf+t13M@`AE8>#yb(lVS)KGA!zTjgEXj`epv-0F2`ztv6>r-LA<-=&z( zE=o1BN=OB78LT&&bDHu7t8bGjbe^Mh9z2@Bp54?+vgIi zd*I`lPCJj7^_p%F!*xC+UH#&3`K(5!hC<@oyn&Xi@^l1@j*qa{?^FPLz~PD|L=puP zl&7odVm{JlBR)^(qmYlMVD1c@VAWs@J@I-o>|-oZEui3029HuiDllRDlw-0eCSHEC z4{{`J@f=$M$yfZ%yYmJi24M1u-6YBA^Sim#X|g`=T7x5p0j@!Iv0Z9s{O z&>wn&xDfk`meUf#IcGwTq+HnAq(M{>>G=j`)kwGT}(AMOB1ew1R2cIMp+!q zC(2ja>d%gy-@@|bOfF;6st&hraR<|WZj#IpVNWuJ*>E7QwDh)YNQO|~Z6tJYcF@{_ z)6}n%=rON%M+2#o5iM5U3}A>C0$l2ZWS=zAyandkSMw^0ZX_PcaiO=G%VAk^gUHAI z?+m}%ADE+G)kTEQ1i0N!;?zI-v$GaGwTV?b%jOI}07d4F?HJU&j7StcgY`o;;jqa}hALely$W|g5Tq{1M#6WfUNYTZ#n!c8Ds)S2$5;u)eT9#YYUrtHml9`Fra8?}-P~`7!8Yoh{ z^B42~__%#d;I&=DpXfd3(fr|*yswy(s(~f`{NmG^W2avDCyh#RL3@S%s+Ry%BKH|X z>y?*QR9DU5q&yqn^MeMpUz=qJL;@plK~fyuRSx+PsTh#4fXXR~v(0bFZ4K-+$IEFX zjuzAqHU*sS;49p6eSBcQz>-o!pzGsCS_>mKE6^AE)uxDt950b|>o#!x+}Q0M1b69# z^T!lbTWJtB9<%gjFCKg0T8C5`@l)RqCVX|QNgN)I%#4EFEiYr>I&>G-{!ohp8pRsm zk!mPr1Q4PVYARO6*K(TS9412aByy7Oe(oHWew(DI@&*^p=0VKx5-1fV3JCY(^o0I! z!MBwAE-=2di9BvOv?`+LFW+ARp2GB>W9gIoYx9XH&VeYdPn6iZ@Wx`QO!4pCC8~D{ zH5`{@YyD1q=l^<)_4je_L^H{)=zHgXz@1zdRG6T}f}mBOJ0DtxS`A=SYA-s<*Rr7t^N~aM2Fn*03Rq5aWbdSmDeN-tt zu1gn_Np||PX#z43r54LrD_F9pMKYM@NP><$`2 zH6t<#g+O-)l;QH%6CYZ{sL|KHmkxB4QiE>hnor~i@>GMx*|~FS^iL2*n?u{))CQ>q zsCMG$)qli4lg-8w=E81%KK;ze72y+f`aO+BCawc<1om}vg z6)LJ1u3q3x}(#1XmT&C`gP-^(mXoq{?vN5jy&; z+WeyjVM2Wq1=L{s<`;~vse}sl;`0RfS_e9KEj8Y#Ab9gA8{SLe-<(s?J8y8{b~_md z-T9njluudtnP8Wzzni?DuV=y}xi5!1;kdW>UwnA1UjGOQpozy7BhmE}O{`sbY-SLG zQ_zKHYfFlZ`LHa8{YU{c<@#PiWB|!0qos9;4cF3C{@k+dY+?>amR;RS1)QP1ll)0n z*y0K)Ye9x5RieA-*@|IMMMLppu8c|Db3)n(GrYn}VtvjdFl}pX?xArJIRo87S9Y%$ zPf0P5h&zRz$A%rj=to+>!=(L(D#)%-Me{iR>T{+lW!;s-#sPQM<|)FDyt)oUeWbG| z-mV6<#Z@_L$R+ZQBg8-b%Y#mz^2L2edJvuCJe7@@|D{e8PH&}4Fij_FXcw*rKTp)KJ6GOEt#&gk2ES-PvThQ?z~|= z5$(M#3=>Qg`S8H}F8`a*04r|d1KxRnBX4`N6Q6&@mQjX#_BPL|g!y~QlmN0!3bJ2s z{d+_0EFw6+v@gs3P^9v&Y(W=-B@T8E=rWl6g8=m&XqFD`b zTKjtKv6weCvsIjghtt~DianftiaI~4O53b*%z>JQ-6Qq4?%$V7hfj-0#djX{@HM+oX%vaYqxa@3dXqJXQ!9#Q#8-_y4^B zuRlYUn!JevUN-Q`77wnGA9w36?`Dh3Di~K5YC41UC^st-H)s;ds}CBP@zMX4QsR<` zwUX693661w!}R{FHXWnIG5W-)gez{=U>Zk&aC^S^>-^DK*-DNy&ksCu(6F_83}er> zrUhOU9r2oK^?rck%i-R`LMGJuQ~0I$VZ#@{hP3Xj+4|{mIN62}rRd}<_=0P6L=bAk zr<4IPxvv_MLZ3t1S_n6uJ+21XgU6@Z4x3eXkSzbOF@GHI$wPUTsvtLd*P<>r7Oc(f zVaGwe7ur^X3elhM5~hr|RCQn=v$e|PXh$7a&ac$tsGq8JpxARzAW zDxO>33Et_L7kcpu0x`qOJ8;f@UXb(kwWV5_Z8&ZDghp7s{ zVgu=YR}auJk=G8H_7SF}-bMzgIt08%4?_IO(HVg_*Dj&@{z>|++=*}RSClzKo+za# z*KBq~DSX1thtn(fT|Z2=w&8%;$hK4Ex^pJ>-HnX>uC{ywC%pnfjJcw^c+@XAooIdI zC_9E~p>YK3;tH-b7^)zk-#(kp-wUH`XYb1EOyQ0ev#_f_`N&QFjj4JcX>GbJGBGZk z=2=ljviJ~3mA-0{^vVuCvsoFk=PWPq`lHyH7az=7=JEE#&~4kD+~j4XD^36(tyz@) zi^YjF>(9;&G@izKxjyB!anB%}69xw?zMO|FA)N)O1I0=e*AqxL+E#0UaQL7Ec=sPK zzAza4@lV|#jj=U>fKaw6Y_$5YjGtBjYqtZkX{Ik@mDuHH&f~~%Qe3e;(xH0-ouISwT5wsP1B2tXrVgilxNiDbz+!=0D&CppHIq0}nY^)<$lr!1l)?f^bD_)8Go<06c zkttg14f4kf7n0B_Bnr>9=jJcv~P^h6zy!;IFjxceR%1gO{W382Du1n zra=x5Z`RLuV^o)!hYOx<0VS>&qO3|-G&j)tB1rFhc7UnngfpNU%azGV=@Xsg{bH~41 zSxR%%uya(_`bt8*SR1Kl)5t~lC#l3)Xe$2CAFXo3ALA^Xj*hb;mo7Oma%H{y8{fG% zNLxk`Fs2Bag~E9oa8bEQ^L)brs0yDjL70lc?4UfW3B`aAdJ7;_;?dD1<^o2Qh@qu=>iI0ZzC3RZ9Q z_uK&ve12iqu6Fech61W0L=t{SL0^fa{Jl>k;wNE@kUUfcbPrK^%3>;bk7pvSqKM2x zm42yWG~koje2-_r+g)YB%V`Mq3_L(@yeuA`>D^+5y*|`_uNsx|E zfGS0!nY>0up0@NsTwNOs9;f5e9Wk@x!gY@2Z;G3g8Aa5VP|)#ci_DVcj3;9}^jPec zDQ2l(`&mv^OMR8CW!qO&cT1VRmh631|xFM<`vH=lig}X z1^(BfqsviKRZg-PNldh!d?IRLA zEuI!i-^8r{3B|);gllC9!60TaDrm<@-ngR*>#OLaERd!^bdI4AqTjTS4iM5Sit!CaH(kEbz zCv#8&V8e5Je2lr4f8Tj%_!rL<@js-6k)vYvW?;xz6yuYoi1R2HJluPo!T}KB`wVMk zk3UacmDc+|$A83+hOpuBqbL*_umVHQ{qqNU9B&YGo-!j3Vt47K@Dl4Wn|JBnPJUxw zc*SO%J-8auf1MNh#csDm*QcA^$0Y&Q5(2#c@swiAHp$1n*G0^us%TQcp>!881MMBW zqZRB#im{Fm{*g&yiWPnJsqV**tD2KuY?Mq>V5x=nXhL7~eUis)_kV&H@1#M42%H3E znY1^RWjK>utIxF8X_=JYUw^d9_bEZy0-vQ!2Zes6GH>B8IlGJeYsubu$7v@x;=Efg zoz27vn%Kv>JJZK_PaLPqBZ>(ryblAxKp83cp$IL+Jka5edJ=*F$1^>H0k(gs5m&GPWqPjb_*p zAu8Dd<}>B*Rlg~H(<*BB&!PG1dSs?97RuZIPW`(a{IP%AYi>aXY)v%djU8ont?u&) z!=V5s@*~*iQp;fdz9DAr1a(nF*<-S+LF*ncA1AdoO25?SlZg7V?i0gklpnOzZex#; zy_sp0z6pqw^HQ&v$d1_Y(vc_&QPo+NR1Bb_md|ed2La#*s@7WG(dI==x*IUeneV-^ znj=%@w_Mro+b++*2KM-*pKzz@1;q<4nRTK;<9e-6C6zUXRx@&IZDB`Wiph=`2G@VD zW(8P{X-J-o5EF_hU%V-Rad4w8yc*`093cuc6HRZ2SKK)epy23XYD#9iY{W&aux^MS z`E09muTfBnc7`SRRKAB&kmjI*4FdFyhxim$Q=&pp-!&6Y$n%fcE&PaAH5$qJ(ML&O z1y@~+wR)M0H;G*gvy8Jj>VHKQX8iSLo@RU|a=0OA0OdoO|1BI)@csFR6IGPP2d}z& zia&6`WuXst>{6&wS};<*z4LKlAfp)e>UlT&+l15klkg3-^QZSu1^!PZtawVp89Q|m z`#&kJx}tDkWiLIAG?{{l)fw&niX;1jogj7RPm!plfY;!v=jS9nJIcYYsnqGOL0Ks& z^*~YCQd#6E?7fo(9R`eP2l^2kwh++#juF&kp)|I#M|_nq&oMhCgZM+~v}jR~{UE?4 z|9PEZ(b95d>vhAH+#WMPlL@N9{p2{@?$hjIB_-XfW+N{WQw8A2e03Wi&wce3jTsCVyiwo6*+fz&%V^&B#km zFzoB+(y{_|%N=Bz@+io*GJEZ#eq#D=qsP*nfz<+_7`F9Vg9X}$jS zRJ@PK)Bljens~qSYbSR=Dp>(}=kvBq8*dKF)$t-5${kH$en2N*x2-Tue5WgXt!2$0R;6cafgjMt+8P}Ys?^s zK7E+I#e|**T#nPTWoGtH4V`W{Ob8id(g{Twfs3c$pN@m_H8uuBSaCcUS0HJ0}B7$d5?nSU#o zSEHt>`k}IQEVtYW#6{DKadoI+gj&R=H|I2~gqEhPYL&tnb>yf*fBk$8%+5FViAWTn z=RhzcfnOm>7JNQayF5t|!NObmjhkb#d>rqAT|A4IH2QeB|5KDAU%mBmjI`#HP(p(S zqwUcLv(<sA|@E?AR7b-RAbIesz(;L^w}=@~nlu(Y822L+&ur+MF# z=gkPs`NUKM4VRGIavF%5!Dbjwt55LeWL%=)-B1i#UMRQOxnGF79NXJ>HB|pxvlypx zl;Kz#?X+a`X5{}~C(}?Q?~Qq5PWiZ*9u?us~CL%3=z5A~3x8C#w` zW6T#M5nnClN*)>~PjH0zh^j$o!t}2v|2<+~lxaOJ!Pv1OTP~3CNnH}R8==x}I30c0 zl!qkUZvq5x>RCiGA7HDXttwyk=*BScMceHCf-$OS=?b^uR6+-XNqTK1$rq?kpy7SU z5cTBHF0ZBwisN%BYs_33{i@ij&~?T6huwcfQxgZ>{L8j zobDqMn;OM6ehwm?lizd z#_MO8IY@mg*y_@}gwRC?i2tx42-htM2l1a%VCYGM(!UQ(lJunKE zMny(s`F>tou@X(M*1_Bn1GZ?;Q6QJxHG<+ zf)`WWx}Ue%@82HO)r`A6>(?p_MT>2e5BETsoZ@@pK4!=YE|S#0IjrU*LsPYI&6+rz zqqGJ=&_^CTj(j0CzBdRrYpNROMhLZ2^bF@eJa z+9BCSemgX>f;ZRLWO#maMWs>AAmQxEOObqalj*0f-XB5v{>TOwxVXH5GEVf#pqNvq z0E*Z}+BA4FiXhPy_<%Z`=AEjo)5*^1jm0r0wy&>M19R-g8xWvW+&>{aP68hek7zin zuf`ClZpKKKGQSgCop1*vxowE51$L$X_A01~8<+k0uDUh)+i3aX_2S*rtJ?j*%}M$S zlhuK^H8nip9A`664=hYM!BVC4K7+?VfWi5IW~Z&KmrMQN%3OhQ43)qZd`o4?X!YN- zK{>9w0r5LKAh11hDXWfnVmdgRQ<9&T{lh^|mq|N^43+eb81_A&rBWrHKq*1|t8eUd zep&KMPw%~iz}h)LlYb;+OVEO}GXL4t-OUd9H17kt^HHoZv5GW&SpR1b z5^!mu#2{vK`BCto@PaN0FrC4R@69~I3@?>px5fUzR5Jc-4(bg1-IldS56?hB7ZGP}K8PQ%V)vo=s z69E6Q2?+;jc*_CD8G{quVob9wzk`E@V)q*q8d#Yns)pe))r4e%G33dBPj;pS=e^uC z_UvQRFWYOQRdUK=kBB~#i-g?)z?vXLMThw}Ml5A>O`g`Oj-@z5M5r)KQL15xRXh=) zD*vdk)cegVkIUU^hBr7_$UP;Mg*ZYUf+c!u`(B#_Z-QHo+XZVieNeq_RWEz`q9AF` zR8v{DD_n;Gye<-TI-|5{!7TjTN)lXTE&m*p;@){GYZBzzg1y6c*}(hp7SsG|z0!PO zx~W~%;QJkRILu!f2%CEx@kN2E+BtM|RvbbMj_IGG}N@mAed9^Dk|_+-^r4r{Xy zK`JjG{50LXDla5B*D8Mh{B0rcMO}Sd#l0|_G1;pJcVxv8xxd?33G>D{BiBV!@IDn! z4=(b$J8jB`c;{D^F$QjiQ(Xr#Rvbx@?A9J}=yw~pN4EugEp(To{5UoChsbA4Sb%P1 z!UcMWPavvAMT9TsMz_(=CPL8mp!(+g)&4(GUMOccCcg(7;*h{K$x zU2m(XBD9rEWks<^Bh3lCwFEMv)zDc*3r+9D8xgtK1`CTE%Aq@ZnQ{mA{XmX!tXeG= z4iv*9wZ6>)OD{$I?JVTUNaxcIH*dXf|9y8H6*i|T7-AAAj9=`}NllQHh!Wr`v?(cz z)NV^+y%C9u4Yg1JS(WzD(*Az-1;X~@m`E~`{^y15aCulrxO>ayqhh0pjzWL&)1jLL zX517-GgCDFXz$g-7_-y3N&hJ-lLg!59U?6_pOWfw=IzEU!eeNe!Vf6_*4AS~`078! z27*7jb7b`4Gj0O+Pe=wb{e?nzE&3jJ3;>Ivn{@r6Q6=<%+%t4r z4^yeZIFT0M90%8JHRx-qs683H8T6s+CJEo@V)@5UxcnX0l=kuQ&L>*5aB5#eV>Pz#D_5jk6!z2x z(`t`sgmlaR6XMS^GLo0HhIf+XM|oYunMLS|p|9wZDyyNOcTTU}sL{P<@@eR<@b=u) z|Kv#;n-OCY2RHL~6smv22iq2VUTi9Bmh}Gi>{AB6UcSG^cB{2C|MI0Yv-$f3q}VIS zk#f%w?H$d%(T$aTW5nOOE6WeTM7r?bM8EHkEI>SH4Z(djJOc3YFDO?H$xym>Y#R%w zDO0o+buM~A4G)ClcTlIEp#Vgwt{E@mWgNd3%zM=s2V^UI3ydsod0VoHSvg~Iha~fd zx-AP{zM-8&y5ga7WnaSscc_jSt_yAUaboiEYc#c8GkMnuBMDgvT>1FSLs-jfl4~rZ zuFLnrBls**9@wCW7rR5iWX+lWKqC*0gqygqzbIK?%LkL2b^17ahyLKXzK4|aZM9{x+F((0|Lrm?l+;I+IiEG zANWkabk|WZpiiA61v&FcdIIZQf%w z=Mlrt2+q2?WI%~@lAj+F*!|)hQJCv!I}KHv`i!}i-}v<}D9zoZ6nk5vJL1H8@lCM|U)X4Idqx9(U{lXdZt*Nh?37f3MdL`P25AfmG{5 z;nX4t;VWDa`u&__YBvZIlgA>LJWQQAsC3jtr;PgdKYHkX`%K5sBvMV1<>t5(K!92({b_+8QZTj^DU>;7EO$k*t{P9(fDz7)H2)&LRcB zr4W7I+jFH(-+y<`Z~s56vJ?vr6b=ZygEbRq(b$S%6L zYs~mHxE)5+dna$-rdHXWglLyV=)UH$s<1Ee6M}%4X?u zW6Xr6Kot-W!epJ|87D~5k=25In_%gC&DRh!&S-N)J*>~m7RP#Y8yiq^9x)W$m1vB}w?eD_C%2A@e$1KX?k{(u z4_fs>!0zl~;x0K%S+tldju9%`cgC!@EZ6~0mIlHs4V*g@Bo<|Gi-Z%(D30WV6>a2mE9RI4( zH(&ST56r0+k&hMMD}vd-&TAz7)?)ayZZP=)&|#C)b#U=UEbKrj>L5*gVC-6WO=m&qBekhWXq*+XnX`( zMl0ATY{}=*?k)0X{D-;$V423J*_$;jQ&v@?#)9hFl;L4ykb|E^Y5yo2Q#Fwft3~9kJ;| z;@Ow1ZgDSVe;&WTkH{&vztS5w0V)%i=!_QfaYX8Kz!zk1%i|&7$ruz>sy35E3~-*J zyz>$D;Qi>JV>bAVekAH3=G18XO%ibVmo&nC()L^*+LvqlQH+~JYt-yu4-qJjtYePe z_@DI3%PkY;V>+_)zWH#$jZ%C$(op_;lFrP!mJV46oR_&iwUM`7+|)sRI&i-lpmJr? zfd4)pd(72Rvke{vrqD4|I3c&6ByDWQK z9i*6ak~#3X#4GQFag9(9(i+lCxgb>10eHksvpz^>U>=0%@HXzo1T#y)*A(c5u|KPu zD|lRpx8P~R;fo7XA0!KAC7CXRZK`J#SL1uvGbTP{9gV$G#W5qZo>Z`A_n-epT|L#G z7)Dkwa^_pZW*&^QsoXnxxrf9<0*o}U9=5%8h58W>+q^cX8n#hJI1~@rAYD{I8}UY; z$c?zkD=R;7&>ldY%K9pNV?Vo!opYDi_E;SBUMKldgn6aq*i~?Wtg63@<=Iy#dI=@N zpUBCD^+`aOW|4R(=icRL)eOhvq~Yk;l{M$~br>&tC+b?VF?<;{y(&U!6I|+G&grYV zTO^Z#g(%OJ3p9rA#`>$qf6vDg7wKFm3(T3r7X5NAW8m72RBZtIH~t`sWT=_7d~kRl zjb+KMW2`3rM}<5+o9W_!A!;n$6KNT5yBreX5rh+?=!o3DiHkqPULJ$e_K8{$+!Bv+uNrJu1Y5a^s#yC>}q#U79dcPamYi8d3SDs@aB8#*=$7G z!Zu^^%--3$VE>(&v2Y#eBOg}9lh<~N>)nky5%p^FzMD10f9+>HU1}u2OOo5x6-};) zMM^VKIB}Iyf8jsc#C82N?e@=yweuNS^ozLf`K>7dHpLJ6S|KECto^f#2VS?VwWCnkG zl74Owc;ayVeLl{5BL4S8`WSbc$DRW6gNSl>JFc+$A9w(6{{t&gJp`HH0*5sV>7R>A z{ZG#N1}XO7bhVK=lLXQmoQ1D-5gi@p#6uHSm&ghxe+AXvb54z|Iqf;XiL!Mffg&xh zEWhO0xl`oxk{v3ZmACJ?LuCcLyUAg6^QjGzs{&6 zf>vX5@6aWPTewh-S^qvtt{5`gYLzJT>Kn)7%>kSXHQ5!^9Jcv@rpDB*RK7cB(|Q1- zF=ndj`_lFEq0}MB3Z>X<>fP*y76iz{ZS58i2N6C&gKyXkr{a)G;DIb3NG&iTYdCWw zvJd+A%NG9x8sQQ0g(r~vTO)MV)Dcs!PZx4jp)Ws)l*W#az(O`DKmal}=egP{Mk4Iq zIN)1hY%!7JAxDwN-?ngLVXMTTtQ;mrz>k<7Z4Scs8p8M6L*?Cg(wLgFohA!Is!@oH-GUP8xX&}Z z`u5?dA9zAe{S8CE`wTjMW~X}dcrP({{&Uk7d|PljpfB?2ZX{5(pl#ec%mj?Qf0O{l|DD29cuAz|F| zgYLlBk8#+dI6Az?zdrg))4?T{OSy#QsO=i6*fKqZKr$mpr3$;kDgas&n9yzG;LvgB zsjkk|)7y)SiwmmBKn3;&Q30!;f`*0^Ml+JEYAP=-c$ib)EV=$_S5Q`V^IjBA`>?+! zCuu2m^*8A{ZLb>qxi3^2y!Q0U`oI)du`pI4WWbZYS^4t;-~gmY)Y~n$6v3z{m2j)Y zo0SR)LouzLdD8{@D#adSq1BCsd+RA>_o-WTMGL#yOnAK|&b!G@z)Ypj# z^2hjqgf55^FY%m)d!aKGX}m=@e3P@RxbT{9tjV=?`?cN)Z*8;58K;-~Bibgedlk;& zc@}1+K$Xy(F%IlaJF$;s!64#g#3P>>;cG06E=_GX9Wf-Y2%%CVPuR8|B8bd$xlvJp z2R9#0E4P5PY8DQNXjanf2t9n+_r-9m?({!FH!gOfiUxr%tu78eK%_F;PJ?#v2M@*; zh0o#1h&8yoJgSZzQGOj7GI3oGsmRUXYD?S8Z72Zv}W;xK# zlB~qM9~@vCj{?rUCxK}*LHXb}$YRSwJ~Qpw1X$fYXOv%WL?Qq8>`z9n?0C{DxVfIx zL%fr;(a=;`!DQzj-Or!zN%p@Yd%Q-b3_xhU`2hB*+;mq3y)FU{I4uwmU{s|A(13zk zbsoc7^8c{Sevx*)Cl+LARfU9NFv+*-SC^PXX4FBr5#anEL|G-|7QP^*!^1f5p<^x7 zJWMoRiKmI5-heuYUEjQ%UK6Mi9Ads*{hff*!O;T%XEZ4Uvec&k=$e7tAzaQSpKZ*4KZM$D zX0wwYk0dlu;;5w7a@wpG!wfLXpmHDRBQ>y9mwJOIl@11asPvh)mMZ$DzmmqINl;V9 zAF{BsBY}ptT^=8IJG*+qFjRi-xygW2a<-Eq5h81QxsWPN}^RQBhF=+`0?Lfhy9+ z>_rVd-sE;YFd>AWky4{DcAj52M=?l}z9-R`P>c2)=#q0lvOlT4rgLD>U84)sznsEB_jFR>9`AO0$qpv4fund&mD zsilZs;Kj8WWID%>;62XVgMxa6kn_Hwa2+Eo%k`2k^(TvcV(>x&{gHzp!9a6oq-Wj4 zLdO|cSoqFT!*FW@>2R53yFIkwGK|#dvq-9HZfnbXhsna`g68VgW&8GUK&Y&C{S}kY z=50}SB(J7z%jE%^7-E|TyVKJu?DO_`nP-t{JM!yh0v4k8O}{ZLKoERGZwat~3;!%O z9$t@)R5C2%KEBDhi0qd$nl<98lgYf;*0dHP5ar8RHqCEt=E=6$w#JHgXJmVS0=MX& z*9{^(MTids{mJuC1s%D`7emZLauRashVr7TV`Jbh&26o_$rXOlCz|Fo0UD7H4^Qq4 zF$khH8j#+6^1(2>AmGi0=6ZI>Azn&cq6I|j*V7+wcMmOu(2Hi0m_sQRHWQU|;qgjL}c}G?| zSuxj(Af!O8>V+7G)Z*`$X+jabq-fI%nvCOmeyaWvs981Xl+cV@ta=k-VAam5^UdAs zBGp`=pBo+qQhV~_-YJcH{iqswA!`%Fl;?MyF>U{lO8&UH{MPHaiFL0N^q(+`#w5lK z+K+;3zC3XAYb+yNrT!kOs@7@qXR<=dIsqN7gW$GH|5Z)m{uKOojY@Wass9)^{$~H& zTzzZ?n`6j{9l%=OY5(;sOHqxD+Mq6A8pkN`JVEL4C7B7OifcNM6O)o)iHW#=ck3ua zqobisf;a_aYM96f(Pb196C$-c^!QO+tSrcq0gt*)CD_P?xFRhyd>w_P7g!P9d$64P zA7~c?@O0gg4+ZJ5z~%$os6y=Mkn(;%aH+L4Ev6X@-^vaZ<263nA6QLdLmZY6-d;Vx z3CSA!F=B2cai;>&+`MaV+_NAWZ0pC2J#gB&MUgDZ39>5`y_Yg$UUFdcvbOIFea1sy zgq{0*(E;Mwvsl+LFe@#;Ccg#|zLf`cBDYd$rm-3s=|?gF4cx=?zW9j>1PyQ$0&GSN zO0J%HHOk!;?OJ$xWbvq05CcN9I--I%kH#xaZG?a%s3(HqJxsM=&DUg{-+YyGUTyrx zq_XTS>3AP*9&)GzT=}yw+H3J=aXiaO9zF#`oI(~3+ai@%Syfl!)}?5wpv|zyRa1f7L!T53<8hX;^Jcq zi{q+D{qMXf+<-|6rZZI2dW5$-EsFimM7s&87ZJOms-n8g1DgBR{z-u*BGky3QTbIO z-eXrs4|WH={GU0WhxBQ~ntI&Kc4#d}2B?U)&}t&tp_5bL&Ak}_&D;}WVDa_@68yL| zR}H~tC6R$JElo^#)ll71$+V1B1(k#FC((9f+s(ta%~{++_tex@nl{Shf( z5_%70wvq@VA1|=W7V|mn2Z3MIG&@>(M$ph;CbyeWmj$tjG}+>#OEh8k1z$S zxr|!i-Yi6``mcJwz{v2CCL+9avGx(#hZJNOwq#U(h<3dW*mNSfu>B?cR%Q*hh+Z;N zr$og5(LAxikHS$hW^ciCz&ZxU6+d7<6vhva;~pRso;#x&@9ridHl99PRP1X}zD}EJ zqWXr?kMMP36mJVRYUl*ZW8w8x$W2e@4zfMa6ke2=Dg2-q`?DcV+E;Se_`OS4p*0)K z^RV_C^s5!1P=1Au3k}`D9~5|bxy@uYPXK}u?l+&pYY4U`^)Y{9)2EB_G0JhTVrykE zUOvE4i#om#BYJRjcikC^Jq6vd?H;c(0X0Y%VaEIyABt5D*CAW%_Uua%;?Mk*aqWC| zAR6qLM;{EI<&n{w8pBsU$mmn)`it}BYtl;{vV7~$cM(WH2Il5h*EjpC#Yp-s&)7T+ zFC+vb7(MEUG#uc^Y|D`Z9GYpfK?x^J-R|R3qKJ0Bh+bi%J~`> z{9_&8!baz*%wN)e!sc~^SH!Wc`SPB-T8$Ad1K|Dc0@rPYqPvOm6hJ8!O44-WnrD)y^q$dlh%bl!Uh3nB| zn)b@aun?joNy=Ugu3V{U{NSn?f{VZQ!8E33jxO)!~zHaw2aKIZ`9R#2DZDS;UQ~z5J9I zr=9_xeV%&ld&E-jz14RJJ{m3V#Gu7@QmP=}Vu)^Fz!szmub(v;Q%p^|JO;jfWyWXz zl%3s+#Ivd3?A}Z291CQXUEgkiFHJ_j4zD+3Na69VNRnQlh0L&`A}6JWN+XMXHjGPb z(1w0>?;*{ytTsdGDU_V*@+?IC`E~y6yNKz`yK2`eQM(S^6H8zvaln=mhckPfEP7!-{g>Z9I zDS>Hit7E<>AHu^qP3J2L+>5<9RTdODae99-7P-h%c=IBbyALwMJali_QUwBQv-PrX zZet%HZ10~9`wM4*5KCPZL~<@oMy{bWcdGJVrcb{SelZY-udW|S*HQt^?=p~{>tk(i z^7Z>tT38+1{6;D7Wfcl`$D7rBfh_`4sXulXo{kvmNn(x414NbX(^=|E&?~`Zv{NeH z2H=uxE@bcMtz9f!n)N=;wyVzLB&eb0o4}Dc4!T2iRwGd@`v3g>J z@$vDo_K3HyFR;gb%F5r!h#s}NvNHaSdapBflty8q0j?<0osYSx4?fAD6C(q1A?iVa z?o~;77xaqK#!s3(+Fa&)z)-f*n*Jl*YYL29NIZ9B-(Es)0&OR1#9?iy!nE~`f9?`R z$odE3CIW1h_4!1{^Gn**n)q1cB-HN{7F`7qMJJTNmn*NUN^PQ)+4Q9rfpj+4kxHPm zg_7y~{p==K3Z}zLqgk+bN2d3@Fp#bruhWYM*gV8_84}+iyNYdYK!!NvXV`jXU`eFe za^YE6_=WK9-2Lwbh9hFY#nGMUYb2)RwJ#$9D9rFVI*!}U8;N}LrY*#kz*hleC6fF|m-Cc@%(c)U%-J!TcafjmW9^}jY zeDltPUnG#3>zuvUT3gomFKGrAAuSy+!Z{4GDI^*NRC~Vw)7}@G&g;Uok(j!WJw4HD z|9#y_-b0zXa8wq?My#+LNfB>T|2gq}c?|yy?uC__gkAk#elgjsY4oKMb#BKLKzbwqL?E{0kWOr+iSX4{ro!Vn{Ri=Otr<^!^2}V7jm$1$ zKq2sJ29~C7B2GMuF#SUjAy7}mk!0E=reRzHC)c>2gZypr&g}Hnh4_Y15$=AA(*Cfn zTBzfP6vVT7#cn7rhRM-&nDI$Spdg3m4g9FXtfkGDIGHFo(i#`mtbBJD-(?Z{1f~!c zvF?*@CPDiQk$&!ISVI}9G2yOD*^9){A=9D|760FNSB%a5l`C7Okj9Qt27C6xzoVTq zxs3$vMn5CPB7%PL&nO%XGsFEPDBt$HqcbgFwPJuPFqgEUy;3dJkmQ&#s>}Iv#dWlo zs!zAiY=%*$1lHAO+JL^d>( zCYdi-j)S>@TVycyzJy=CA8HRRWvEkqJfh`qP34tLpG_g1);aCBjjhVwefRiqWhfWP zJCl96u{vF+deUHoueXQ3Sc4F2Xl-|N&|dej)H%bN**a;e4JN?b^OG#CgnHnU;>(Qy z>L`J}2cBgO5qRaBbNoL(87*Np(AvfdWuF>knMw0F`$URh z*lb=KE+XISLHE7AJw4y)xj6`^%h~+K(^ybiPv*7XG-KIzOK5RpjDZB1dx;8Kex6Z~ zy~p<^EfS8sVi1L^IZ;n=Ul5$686we@2E6QYM)sPzf(OV5BGTc1j6AGnD_=x+7yX9x z-AJAu!)H$*6ZNp&4YP)Dd?Lk&A^kkAJH})_z>5${5RnbvHPGj|nit+#wtNOwoPs8S zklZU&i_fCz!P*mlZv5!L9!;>Pby_+eHYEKNyDurZX5k#s5x=Fj9e2l{KF&5gd`b4R zMX#nO9`vicFDIRoY*$)|Yf+0I?V<9i#n2?;6eO_Xw)DMOWU&&F5h=we!~!v_CD@k< zY#lG_Y1XVYFZDm$vEG7r>t0gRnRTn~{CW()^-Y3;V9O@X+ljN5?G8i0(mTwEKL38} zfx5;0@&~qak#GyI)Yjxw(Yc!S{gopvBNr(&3D$wx%3-KI)4O~QyxtAzwx|f~g%={< zrFpM{bNzSyCff_#(IWe3KO8#Bm2$x%=72q=RBFx~U345n+)nmMsc(Cd8O>2MJu;eQ zmu5xo`A9qrh>feuWxG|P^zYA3gh4bK5Cn%jqs!v|oJGhdiV$8ZWfeJ)pMeiOdpNX+ zk<&6@CjZ@^C0*{2?GLS456Z;EZA`k%%{>C**04f189RLQX(95smiR77iG+pdTS*RDS!AS<2`f0w`bTp_M51*f! ziwjMH(c`Od$aZiz)wehvGJ%nvUb!1Vf#7-kJMHRboYmxSf%Mbm$NRsK{itY#UMCWW zy?IW+JAdcP$yP#A5_F0@EF_f1#i9M0Jovl6V9h-{OKlKHXV3-%EIHMk`8$UWsMWSB zwYTlx39e*|kHI+3I-w_MP@tn7LSQNN&d9s4La>sU@NE9Y^@{`F2j$Mq`i{*kS!~I- z&qN|x5*ym&0x3R{tNBS0!I{Q&l1>(y!R&yN9)1-R?LuC8mRP}-)j{&o-fzE!{OriO zR}AE9tSfvRwLM@M$J|Mx0JygC-z6dyF+0RweFDnCij5;WjSEyVEsG>vP;=@?uq?~a z)=RVvZu_KTszIw2`J>UzNkNZ0n74G(f-aFEO9=;PEHYk(-*Y((S5F^!zMS?^q|QG| z%GV}*Lu{K(MK`;5G;FsnVkSR2WJ%`Bq4C|XhN<=>p$F5|9wWk84Zu)uKIO)!$cKz?vwiSsjr~J)ZDihE=!V~sQK0&M>6H!VL zn3NmaWj|0T#Sf}|#t*nx{PB~u8>ls$0XY<^_~~DG+REERbp^txHF%fG{SFnz%yvWu zcsj75;Ubw&{`2(tq~m7Na~TR{%H`wmwL)_=A%md1=qz>02!RX=u%V;J*EGA|X={au znty_Yh5b8uzOJY|pIjN=PYz$+Sb#p(qqv$?ii$D>!1NQc8Muj_fk9kO4lyb^I$u)- zwfl>_d|xQOJ;B?GEl**6JrbRkC;qEAt#|4l?)4-J{~A@G5I#Wl}}jvvH3 z<+B1qel0Y`jBlRIpP=D>&ko6-mSc}iTRG=9Rtu5Z3ydnI$=#yoa?K(w!4x%kpSdtM zRpjWwR<@#g9{J_n2{=vHMPGIcQ<<^+d}zbYeEKqU#R1yKi&V+r^7!s#GZQ9h9(jC3 zv0K3jGu&XJ)k**^n*2fQL0C)l`@Fy8RvWL({N@!@oW#M4rzbW(Iuk?1qp!Q;P%2<( zZA^dtC-dl=6=~f{N9 zgyac>Eyn!S1gX!_>QbzNrj7r;RgvTKMp)ju>|#`58EIAMDdQ-X560DBfi!{LIM-T65?TUhdCon9wAS%i@pr@7LzAO4f|k7`)9}nrxP@ zH*MxDnfSrb;K_6>=_o#D5Lp^lXpkfgG1@x&F(HItcgi5OKz>d1#Y&DPP?*Q<ep))K7W1l==PRsSmM|NOGf>&mZl{2k&(CFXKRIUqUoXI5 z&G3fzrSFsnJjG-ysAJDdtnulTt8|4~ctxCvA$LL5UwOgXDy7~hlh%DdU0LnWCco72 zV)Wv0SY&B(`0abR8noUcGTy+R0<{NZ$kvV|;VYB>b6Ee+t$$1;sat0s?g?GK)`!t6 zBU@3eE*dsoM~3}Jg&+;%oW{LNP*MhUa*z4Wv|7AbLv^$|!m{}l3wr;PMNUR8RhO#$Tr~K|emBR^K8eN&zLk%=$4V z+k(t{vd7Jl&oj$1|8dyyYu(2qXt@q0$ zpTP?0%xU7t!U7$$g1X`oQD_JZVG_gu`#)a?L_PJ6#yBT6#Nfbk?@L4D8XXSqCwl=6 z?ud^>VP0V({^P&u7x8~9RFkRRVcw6*l>d&)yZv!S#1#jgeJg-#k@A0|bfd*3NrIlQ8}ov7z&kQD=$rrQVqdIH3?dv)BvmNCTm zopwORWUxS@6sNmm5sSmbQAjbJrZ%pkV0uk)CRZ3i!$Dm;_|>Ze_N4(n|I8tDeHq?v zjj(1sb2j?le9WYezB6v+wN9eJT$V13?7a4)boz=Ti`>xdw-i;GjKQ7!( zZ_r<9N$0A0q?ARLx&Y?aO5qjM^|<>YKoav+_?udOV|kCoW0*Y?=N}=&0Ps8B)_BZO z75WrGyY+9HHO16qbf)$RFvo5MiA&by{xIjmbMD!8bn^M^%&}n$Y2A&cg0?n*C_c=V z-e44GHq}E>#iEzN+8z9%7YEJaI|JsBKR-i&4EL8knPt1@y^KQ+bMx!~fJO`axW2L~ z9CpwW#Qq?MEPo$f6Zch`SQ7lw-6;Ph;V+$%(zi5UrdxxnI11+jc+Rg=@>ZnchM6e~eyNr43n>^v>I-YiM1qHyFA3a=hb?dA-|quPGd+M2nz-X zR%whjc%OC4Nt)uVoWRMpRo7gJjU&TW!*1%vPqlP1g5ppwn3-j$9{V@!L*zLATlz~x zHmsrRw5nECZgji{Z-l{nQ#|AKZusJpK>`Mrb6s7X=XQ|8HpKW@MoSC-<>iGUX*3}r zArLYxe6`e54c>_8o3m$?Mn(jB1#46c}bSFQFSYF|vo_E3cLRggD&)s|n`e zsP423Ns_m*YJWS6^H4X&akQu1@i+*J2B>|2sJXgou-GrzCv?bBxf z7M}@^1hFDUA#zpe$kR@?<*7{@!$0D|fV(eW5_Eh+ABSx`8mx=o$Mm4GUVCqMosy=I zQ@3D9Jf&Y>dOYD;PhmfX4wU}NXyO{!CLY&$1dRt^ygC7T`zCw;XbrL&zEk>4xhAz| zXT1ETnSfQ8OzS;x0Drv37z0QE=s~Ye=@*x2y4OPMz&?c zd$UCi6LeK^35e@rKIdQMvqDrfwYOr1H!NN(w zZQOG3!0l`VPxi`+VvEKLJ)k*WQ{|JYvwc~K{{^RApv~8gDm~`!HSij}d=JZh`_^sl zwB(nCmRBRUe(KWM2t~-L4<^){k;&cLx-~iN4|_ z-TC9Edba1k4Rzp#f$wGV9t0yTe_s^&U5J`a9Aj=}xcZ2yJF{tW=k3Bb7yx(vfYJ1m z4iYp+V0_|2tAC7awPx;!$0I&$`ZQWP@BqptymbD znv$`yVvv`YPsqtZ%dtq4+VVOi6}p|^G$J!HwK+NZGrC%gILiK4Zq2m=IjSu*l!7=MoJSw{C2>sRRRDg+aW_aq}rRFlG?KXs|XhM zEP#;U1Zl$)UQbd6UBbxzItrBKfoQl$TiN z;U_NjZvm9=oEVB~6)R!&r*XX5+?A*CJ$#!!AnkYE$H$6$P$c&!SdJmk%pin_;Pv=w zRozL&J0=k!kVm1}Gf0bF$XiV_bmfqWA~+pRSmd7$G=RM>;}5H#W`*!Q5ZZFQ^9t1< zhV=Xjs+rC`JL~VdMN_>;M*dW>sIc9Gq+{mb*(8Z%Qm6-g0^XyDcKBllmi z>y(|;CN$^`3qRH+=ioQg0c}T2jO8wyVEghFc#WdN#%E2FuxCjg^CMBi$Q3?!UXh{e&{jqHfycC))EMg;mCj9AS zl$CI;c#KR(JzOeilV?>CGHks**ITVZbl%O80kcc5xjJ)v3! z`ICPn(pX9(l?64UhD&h9Y1jwf3GW2n+9OW#nNu@DebO1!-0mlb??Kk+H_AH`o{o1B za&!W0v;`YIy6mLs*A2R;+82lHu7Ct*FpDpv%*R9~(gu7N*}qn%SZ$l@nm;bzUliuK;7a^nAR+W=3qQ_N z{~)dcpMq1mPkN7H&8HJp7INfF6VtImGg%n!+SW<6n8hS2pT=aTyEWntHyOjZN3w4{ zbNV40kAR_iug5Rr9|EykJ>Dd6CJ8;3p8$bg{B^D8H=q8Fqi3FZo_YAx`WdQ^AnjpF zK+z#UWn`EiG-ZAHiGdyZM1Yr9lrUarD^8|{W!x{sC{ffvz5fRWH?S!{A_I8?^p zU76@zG}92_S<>Bz7=vU`N9IjBh2*fRw=W+03TTB0NdiC3n^s1FAcJ8>7aHx z!q52AdYTZ_y_!={YQ5gbZsFnoB2YYz);T1tV-$s7m2$O0lkU6BIee>m3AkgPjvusW zm{QF7veMF?1=$`w$V!g%LcJX|Jji<4*dSFW%qk`0=pqyOBxV>$qZw)pHh@H?BwG8G zS8g#0<*Q*flbO(sJiZs6t2Ab@-M`zFHEk$Q;Qq~NcC9T+;XwXh8F4^55sa2fkrl8I zm8`K=Nw&)K#VU5x?Jb1xV?`08HT3Me?wW}`a9odP!UaOtJQ>)t=-)11Ih^@^tsJ82 zRd|H?_?6O4K;NajUN5_O)vf;vF3{vM>id#cOMRS;RMvnH=pKS#wse7=Pa2n@sC~>9 zp^f{GT?13neuxkLA-lhEQEStKe$>Eups3MIW9Rz%-6>sOrkf$~-4wUFF?Rq*=I4?IE7O8)3J?Q&nRsX{!R3(DcMyNsp^?(*96$x-d#_KFp3t>ivs zDAHC1k20rCNqRe91?#zR9^J}7Zh~S7r<>o?BCChdWa77VM<-w^4o&cG(Ih-vc%|p_ z8|QL+$L6V9-~IS(-M%v-zUYt2&SLnUmx@Q2983ty|F{g&P-XPhBK}*x|McGV`ReKN zG3sQ53ZYj}(7Nu{5xKgR0>45*?Pn$?>O#?ya~ljn43Fz$`qwRih%im)lj)5d@bzHC zqEgjFMjB@9Yk7`_ATWV6W`Qt)&ArzoUf>|8~(?` z5aP$3-RpSa91nC0Rz!n*5a|b)waGIaw|!`rVCp;fOM8+IwhKiAia7ra507p*X-2a= zB>xyK(e;jK^RA|>A;J*oKKo)x-<9%;omGUb>kZ}VfC{46m;)E6^prt)DP8tM ziFLzwqrKdsaGURBQn3Ay`*f%R9NsdEgt}z`Bq9~V!3vNDdIf4IUsS@im#^4(ECJ)E zwyWWY$xKsZ{4^-Y&j8&|*pAl$tpUEn4!|D~JG6fpdNo9GM7vEK8Xj-PK8%B$AmFLD z=N~&9`-(KQr>IX=d2*db{5vUXbXZ>ZRq@8f0k z9Pro6Q1jr!98>9I>Xxz!MI}!h>|OLmx4v?-{>Bqbf*?cS=JGI6$)A*FwaS%jO}%18a9iOPlicA_jau>*ww~44yNAwbpTAF+sq`&T zej+hN+HNih#J_|IYabLYX(I7_=W);B`}mXxVivq;GvThc|I&qeroE^()ciBkU)XI$ zp$C1Q-1yLQ)AbuL+`uKEo1s-3s{2c9os3)s=w~~P4+@>u7hcA+F)9P z4f0p}_A%YqvsDR|jR6~Eg_Il{EC$zOVjL2_%UaJ&Ttcec;Y`FElr)j4ZjKT!D zCE?6{9-YqdRkyX79aJX4Mmy~in|M+o~0%4w(T4RT9)l_ev~pF$>tBG zMHZ$0fX$ZK^T+3)mvKSdWxqz;XB~F>kr;8`7$SjKD9DQhzR?wJw*gw|$u%IU6b7#? zW_b6pM#|qj=7>F+(%g-Z9cR*Z`^rCLOwJ$lr=Wn zn;MCK#Tq)btNNZN3%dpWkR)o>*-(ggc?QD&>q-Q>Q=s7}uyQ-836CN}tY^P?C?x7J z=GO&13pE_B$fJEe#ULkvy~I$J^3t1tDk(#JXO9)R?$i#0g62~lc%i(N2OCV`sl=Fc zP4a&Gp7NA?i1x2{6z%V6wf&i_n~7+SPX&q4G$pM(Y_<$qiFzOa7-mGQn5v`g_A7yK z0z@#-Ff9^YC@YDv%r&0Qq^%UC1@V-2 zOof>-1uG(&Xd;r>cVD?#ni!2~BiOlwt{slW`pvk0>(6TLeH-IPD~`dET0xUAclrqJ znXnCP-lvXP$$>snB#iD|n^4CxIe2pb;_PW2(y&a>?z-#{<-sLKlu(Q}WU zHvdzu2Dw?Lf7eEa=6v;D1a!xPSaXb0Hf4tj=e-RK%3$q3s7_Hh>2F9z_F+oGpz$jVpqZiC!U*AQiOp zS=;gPFaYC&=#9D8;$zsp6J-V>GUBq(`7o=9Yi^u5R@GNi0e57H_dzFfeu-=M>A8CdRXAg!xXefycfyDmDU26!#4Q4R-j@Fq^PVV38*Gg3C-HvtuDP)e>YiJWccFGas z$xo|3;5&V5p5l~(k@*^aYycj7POz3O7R`-wHB`h~Zh5^79Hx-AXJvy_axi$&I$%BD zC>NcK-=!h5j0$K(7v_lQZt%YFyxtu1=OSVj8(mE761FWR`7EiWiOmV;9+myJf|m}V zTR{W;T|21_>4EY7Q;DjJoBfFy1?uapHYf0Cok(YI(T9E($8JoeGnv1a>Or^SPJ|)jGTuvJ~LW=BU=La8fh}z{&RPFjCmH@ z6rhRu5-nPHzKHFIwU&CAsOrnWv6QtjY~Swr@I0yyEW&T_8{3mINlSv=bKlKH_;Nco=SeJ3Ed;WzpB=We% zFbq80g6{-FU!PjDK%za%Tz{%! zE7t%C_;R_q=l#@Vv>3Vy@~!VTh229~ za_p8iu{30tCuZXdA^#Ybah?5M?)&2i|F2&myZsITI#H0^RWz%`VaElZ?U^6=jyFd% zGt%pylGFqAe+h%4a3!v5xWpgW>hwD^(milC$xS-}Kc3TV);%hh)Ut2MUYm=CK5@c8 zAhr>)VMQQZ*B=W~9CHzy4kY{!z`}Q&0BX12>9etPQ%KxPkZBwA)l@~MU0UD9o?CCr zVYi=Wd@<*FEeVyb5R)~That%Vt3qDQk5ykH~^qLw?E_0W{$WW?W!gzR!zO=}zu_4{AB*x@@~ zOo0csw-gU4P5-{xu};lD%Ds08-|G@Wgi0JdTxyV$IMkG3PTWLt*#@o#5~2UyHc{uz zJK?Lz_og)|DhEB5hv%cTCt);7my`u-X)iDS)zwutK0bsty||DNPaNDyS$q3x!&4#O zC$|4u6bMinDdoBOZ2KZJWFXbyBQ9&|0hk(OW=f+!PHbj){g53rn&xD|#Y(0${S+?N z1x6Drq2mgm24-4Pj$4dx!WR{XW!{j*E(40bsz-Jx zOD$%yysWIuoRsvpOJrC_j{p621F{sW4Y** zBo6peIB+YB-N^dlIX*`Bo}$#8LGH7J>hrSATGl|6%NwZB~(akwMSmRBJ1*+Ru=4DIHv5q21EI1E<2XeXmTzS&I ztc(re`+-WPpbS=<3**cFxUI;`t8X5G8^Oo>J}cnFCP=vxj;TBNjU*RV@0~zF=x4zj zN=I8#LVs{=%%`4;fJ2|&2SZ?6MPR1})ACa0J09qCdWG3d1S4$_D%=d|p?#yt)^_vZ zD>93*_!6X_p%Qye^j%+%E)P?)5Nr}Wj(Fx3q(N`bf~{5O)#(=i8`lXmO|G?Ll%b4 z7#iB9ER2@w2hQG)Y9sJr=K>Rub3rL6E(@3G&(vCXe|A30`_kW*pqnaNw2Y3Zjf}WD z6U#Yvt6_Qoq$@>%8nVm8f6EKMwnvtpW*Yh;;0F!jJbB`~Z-=z^PMDw-a!`i>NPnTz ztr1hN7eBy!)V_`|aFX8NASVIYci-xvhEDk2Hq%CQ(!L9I_CO18b3e-z!w%3Ydf9|Vt4=va?Z8$!{LwynWqesky>iRWTtC)X zt6@5#<5a;~SdiTNk^PJOQwvI)D7mxt3K;8z-|0rES-wcf9G<5PEo z1|(~xh}KQF(siL$c38cMyH6y0qi&BX*^+Ct=D0N|W_+`(-ltZ5r&R42_886@jq92e z37{IrG;~3#z+Aq?caN4cL(KgeX}jsbQ+rBVwZGYt)CyT%ZZSxMGfC0#8WWl@v*y+c ztGPBHr(|G`a>G#|dE=c{IhmS8!O3Pi_%BMiQvZa?C3%8KHxiKp@3Te~ErbV{w|{44 z?%S;A$+Am*+W$1=wm?vC?D$3384AF}AV0us&n#}FnZP(0vRn}C>3dk+=>xL=zg~d- z5&8R%J>R)<5{2o6}Q&fISSr_eq+x`NAH-@~xj%5G}=HTh$Bx42`baI~IJxAT<3i=M>*a--;;5 zuY&}a8wl6jn*VLY5u9?HpAcR8A~C{b+OTqU(Q#>fx)={?XhVmYoSGU+Wo|KfzS%EW zwBpIU9{XGaI-HvR!9UMm*x&&uInmvAt}~e_Yd5d_&XJ2$mk?ntH%5NG*vEf1!<`c3 z0vnLCA1%y-I}~G#mj?`N`JQ)T6TCiyn!W*LqX#!pCJh+whZNE`t%Lje@%=I$82K~= z_*}2;$vqh6+02>6zx98O7q2|2Zg4Cw0L42Q*6AfM7)=;NmA3!b)??x0s!PbE(Hx*2 zAU3=wkkD`K=z%Ro`R8j?^jRqY8F}_5mBQo|6H7)%o z)Wr?6HS9{Hn&i5afB}0o0ejbPatg}dN`sWp8wP0DQ$m0bI^7Q?yzI zJJ4xux=w=K8)fRU*IbP-YlkzkDrBO2^qYTN;CuIlqfqS*Pb$v+zDsXf0Gh3z=C1Z* z%s+$e@(<^pb<~gkVE2k1gtL37rW3Sj@e4?0;PT*@6g~ZUaeedvxe7O-Q#j6bD{0jZ z2$CaCdkciclZ6U6Ah#AiJ$rhQwA~_zs8mZeEmbiN>M+LE(^pP?UOlLs$Uy2 zVOxCUEwRRpgwsr2P%JAzfA;f>Rp2hXf0D9xKdCz=amx-AH$12D9!IZujl+xH_`SOF z4?4(_peGxk>%Bv#!t75*KI)|9i?wAPMwxO!X$Y?P@xBq!x2dh)hPMYjlA-&O^lD2u z^&367yz6dP_dNA6j>~FnH#)gFirmjvH+* z9&ymsU_#J+Vhp{eE0RKpo-hB^1nLgqv%9--&wA16Fo|y9@>ZA~73MuB zDjU0m1<-xXBRF08Isq2YSKbO0mT~HxwF&%8_LzP2^_u;(c$e3R$to@lnAy#J{qILj zy^B;ptZ3X((x9kAt)zGG&g|)Ow<lzGE0%FA+eiXNJEXKCBkiIAyj7Q71;pE0I9x62!E5Gc7%`m{790NMKvOBq=1 zMASqAX%ut(=S8S(n88wpt&*%66yD7AhdFJsf06a{`uLsJ^${NLHBW7<)?1FTnokse z9KSxAmK*5b!jXovKlE=@mUSSq+}^jd1L!lpN|Rftl$w|~7=}yO>aGq<+~E=@Vxasv zXx+4f-}A&@UeOhRI5R&VV)%A~sOSH@-wM9)>AZNXsHnKUn+uS#C;_t`&Cbn16W!V_ z&Hw$8ae#(!hy~A=BWvKzK{K2Xaq#UJBsWIBK&t}g0gF?NxEHbRP3#;59;|tc$V8?2iKCx6{D2>VdS=g5N5eYg@&NLRIvsRQ(oZ7fSk2Sudd(B-O z&IR=W@Ni?So$q<=jlvChT07^8!uNs)u7n}l#!VUv=F!^t!`SfBH?CbjbweBkT>}LX zq!-Sie>O+hrTt!NxQ@_h1bRM6f<6==R2|HV2EmwZaIH_6cM;xiWyDCeiv!^<+ z|Iq#S45b|m;Pz^OTy;UPp3hVw$jdi46^@V!4Bi0V$TcEpxF|HO)=$dW$Z?1vR1vuT z&UIRRyK?yk_M7)k^=-c}_!#~vkn2WnDa3JK*LOSI3@;&5*%rMK)~*xiy=&C0a%_hp zMB%~lJM27KYn|3#8Pon+r}qWCysl-7wd)z_)yumHCGt+=cmsVb7pwD|3Dfr)*Tm&- z4A!;2>A;RzFLMv<*rtg-+MArWnl$kDQeB`c!v@9gj27?Z(}Kyy`BcvlNR zwKguB*Xw9i(8h^GAw$m_)o};<4*6b(7jP2WT_&Y>QJcSVSn^_1d=DuqD@S zDaiHHzS-HE{)gKlt|d=K3$XRhN9>-ZnLKsX%Z?+?;?V2#!fdz|K^l=G1SYR;GH~oA z691Vmj;1a|9&)J{Xv&uTCKMDLc_DBlZwn-@*C-%GMa3!Sov1u}GcO(ni7}BRqu086 z9qi;w_NI2);Y#lFTn~lKUKrV3w5|`oX8zhpS;Ql1VgkVs&5=et`ix6B%6X@@l?@1? zxvC>2yjS;iU`^u@OG*84iYXq{g8a#C?tfxciTP}w@dj_PYP-2er77k2bTks9AoZyu zh^(qAO~+{Mt-2-@u{dQEzq`vv!7U#C%CxBCY~(MLI;Dd2B&-xQw|#Mn_pjOpKfl@x z!z@L=)S5ud@03EoThU;PwM#j&uaaQTVhAMeFQl1PB=I}zNm|jpoXoI?-4owuw_ssp zItKAXKz3j_CVQ#UFg1=V^48D+!lWY%+>c+WnX+?Xq8B1>GRU$jFNRhQ#JQSL^F3yE z*vq1JwdwMMC$u4`5wy~0Ix!s^UCPHGA@Oez-|#A(gmaTF*B2@$?H{BwE#v0b-0^_m zWoK-_`)zJvw#v|)C0Fb1RLxF7H1)TuY)Ke#F%1)9T}WeE?Uo(*Ha z<0c~lS+KvI6Jdf*SpG@2?h_(_FAe#>A{nC|wD^Gtf>99|&4E*rY)l!A`bO%-m&c0? z(l$DGtIL1r6(A(w_A->1KxN+sLFQ2(rlTCOvf6zTYYceX=gbra*ptCE>IV%2!F{)H z=z4!4{ywjXZnFIEWEIJ)UynujgLZXlJx_cW>nt`ycLKEHEO7Pk4be~C@)^#BuW zgN!0R1&a-S24lVycEHmC%rCti^25#Jx0ldU7Z&3D%yinIijqh1GP9sbFB|QIGc7R>TQ>DziWH;3%G2Ka~aL)R}qbK9_n$MaBd_vWmp6Cuh6}VS`QUkCyMhQ_qvs z4jbIG!+xb{)3txN@eOrL+&7$zOJ1-APl0_PZe!>T~V_|FZMepqGy+48cJd1ca$81bpM1?RH?`EbLo zx-l6z#)8$t10|#DfwuXQ=X`e$m{q~DtEz;fa zrul7Lv--v1ALspLu!b)U@wh3zsB`shyp-{S(YU?oZOh!+iht!fP9||%VXWD%!gsD_ z^dtuDPpWJ+OVrbu-i8urj?)UZzGfe$!+)xY9*0Gna&dY+k@WBJsfIQ+uYuM9epDjrB$eP{Jh}WjG#ifaA*%<17-U8JC+m5(#<0YUBWOz!-YIpoQv}Y?1%gPsyea}HH zxXV`tJ4%ccKxIexMwa_xY-3f{)o?=DD0?!XurzTJv)l--vV!zVt_`Q?lKmO9^}o?8!JqzlsMLJ}NT z{VH)q10H6MrdeO_uuO|Xj)I{nG3}R4!v{|SCoh8k+J-M2geVS)SENdod=;yJywH?3 zLLe;=S75DpNDuM~xqi&L+^tZ<0#^+qihBI4h~nY2vjZ%l##w?FV38!0ri4H zS55*~`nn^Q{`**MPo!@~(hNfSF%dEG^|Fa*!g^KoE}zi*(=I&&VF%mR;$m1y?mN{~ zjvM)xZdWS?GS6)wHFbna1adL>vIl*wxz6RGsX_~4ROm;;w0kvh?3&-%j3^9kBCaF< z8|t@oTg2km@XuH)m62_bOaKIUb`ZW~bZxIw{|!x~PzPCV3bgLoid5K@1v=+3m)1bq zA^!YQM~WBM3r7ALJKROv!q@0TFm+F&N5@H=XCs8>U#%falXK1CzUvv71}%i{NF_Q> zD=c#Hkrl%%_|A__=JDwJd>d3lD{yNs+I22A?_%U^cSq)Ig(@Hq{e&9ye~^Ed{w z^4vh}cDQQSgCi^QQ)3SJLXOn$;xQIY=!rdXnVHFI$lRFMVCel}Ra-1~Cm5Tr(9WOwmBpWWs!Ij7A8%bw z{6YCF4+hK302r}+BjEhY-Z9}1x>QOYmgt}^(N#V?6vFE1iM_gX_>~?WD&z^Z(-jLy zUr%+Scb+Zn!*d6CN322$#q9&*d-c(VfSO8z6BwlyU+&t(mdJ+~pz z1ds?qh8Bk6GV>kH;jiLl2Ur6h4R!i1J>8LsTUOYb^~X}qo_O^2QS_AYC~VnlGu4J4 z5WgbMaV{kow?3|moUPx>xN)t8%PC1AaEITo`*>dvR7M)<&lX@EEDDJ(%S_?h(Kb)s z*1N2EatVfK#4V9qntkYouUs1zgAQZ9M!M{_;xUkD@*LI?O=tIKbu{P2!zWuae_*tt2c|OOB_U5_x>A|GoZiqiUra1J6E~Bet z+^e}bE@ua(I;Sl$R6|fG{hixkeEn;^#@-`3$mXLa7*a&DKLOdFi#t%-4(yY{XM6CYH9*#mn1D229Wl=?qeYY2a*bk3|7>1BUQLr_ckk+^k;kc<7V>MWi)Snp4C1_ z%PO@GH1e#BD$%TxIDXZ$T)@QPlZqf_`Hh#lS7%eWnyNmRLjny*9q9bKM-ZAXcr?lm z$RjujD{g>0NdEMQ>?jnIu8>zFh_ETSV9-`ZzWN~li=)^b`Wwo<*qSp`)||(%yu=7e zzAAJb;Xf}s1D>}U(v)6%mu!hi#`bV*Rzds-qD>>kKjTxd!^-M`m4eP1PoKMQI5a5* z5-zy%IT9(@u_r_77@EXhxoFfvv4-Vp@PyT4VXl?aicPSSAVw_DlQ_0tf-R^KX|a|! z1~%yD&+w)~R3N;?Xs{^E0mWE)>{X{aV|gJCMwV|HU)DghjKa4@Wgw}d53GY2cAV4j z{5dhM|AKygwp}^#>N2`N5X%(ddM^JajscO;nLqwEE&N@gFy^q<$&7XrT&X#G3mLpE zwLg;mY9CP^kwEynh#pfAT}f%jxupEBzK`gCPdDM%#3_kF5`ogx9s>plNoT}wUT-h= ztsn33d73Ip9N+7VVgDahUjY}@)_y%AV4>JFh#)8kDjiaybV=8M2-4jRDuP!;TBJid zrC~@#I;DmV>6UKzp2Lmz|DE5xGB7hI_I~ygYpuPvdHJdcIkz>gtiYk@msb65EOugN zb)v7*jqDSZ!)S$Rf8G>)e*X%UKu!A9wp$|kc=Z{iFLDP&R(${JOt5vQyl#EolRB_H zr1COOd%9ctUIaDghlMe6sW+OZG@fkDwx?Gn2UL7cFFPfpblsE^M;EUYr-r*3>8rLm z%d(F!D+8I}VWq2lsX%DZne=k9Kq)dA7?dR}(p!gizuT?vNCr^rG3QA#YDpn~e)7ZL zx$4UA6f+mHl%Zm4tMdtVT?#_Z>*~imJ*J~nmUt3$7%Guc&g?jhyo#W29MXB^B5{udoHymfH6Kx4m( z^Pq0A629BmEHE>;#d*=ubttLx`lEe3%T5d!0`_BjE z(LND6`3iQ+r7!Hn848S7{eB#6?)G2)gcOR@KY1BpK805RcScs0*~W44ko5(wK%p~? zD%nqjgifJ)-|6SAxA79n^6%1enD$+cdfoPtg~Y#nWAayQzWlXZE`e*0@jL_61OY^r zVI)0N>$0!Ytq+m2F{HQOvcGr0STqT;6bNIK!8k5b=K-?u!He$Th(@g>4P?w zUF=^v$)I{I5A_|-OcJkq*v{QA?C-9qGqyK8r0VjoY?^Uax zqB7T>h`70bJ9la3=LH;qzf3;AU+KF-02D->jfIMsbKAGZPj0W4`bw<#f}F%0Q$tuZ zE2s%A%&)0ju^Frs(JbOWb74I#ff?!durPOoOdfD^yFQ19AkzR!9-?V%Vtr6^8 zF7_|K`=qAc9dg^|D;axp;SEP!=`F@Pr%nrt{G79EkP5F+(rL`pm5C%2s=NC9x;OJ( z0<;d9@2$w4(2q>a*CMtguCz}=8&p#UpZDRo#GItxbhW${cS?{Ot8Qu-eJ!WIl=|e)B6J ze73H2J+ABSQ>F#$b32W!XMPPmy8iq573BO<&o=wOq?TF2rBI$9KN2+Pb!KNxPEX71 zIKe32>B(`IZhXXFf_us?3vDSqU#=kk1^%F?oVyVG!uQoPKdzM15nHS}6oj1jQtL=# z&-t|3xp!%|%Y4XN9 zOG91ihRJWWuTbRsdt$?OpM!K8S|*Zh$dSiCOOld9V#tfP(JkpR@>&Ju11*uUe0HSd z_6@tf=!w~bw}|!7cFLV0c|x0>xgx3?snc{AsVwaw`gw<#{qqBfI^d?n+j;Gi$%YU0 zX=_W5SwdSVt$r~Kxg6exHR9=?GL2e%8yoc~y+Amm`9`w$l`wPgXVLyH3;cR3vG+>* zteSs!1jrNudW=t_XzA%C-Oa77n`V!zc3Ulezq!CnFi@h;n9_wPXlE%NR_hn*3Ym+P z_&gO8JIithZ~;+|UR&k2#TpflX*Tqx#j&B>z^YHl*k`Q+#Jb{#+L#C&bVR~+vqnl$23n;sk0ofE5}O+aQ0TrFLw zyh@byBkx`3Tdp@c>k+1n=UCp{dQpEwH{?EbaM|xe3$2PpLw#cerK?k-Qui92@9E?1 zd8_ih=XZLUq-zp>;3m?~U8YF#`Z)6}D4CAHeBvih4NY0c`ofvXd58UUL(vM9oZ%EZN5N%* zq3NRf64&#(HX0;)XzmDIh#}Oh;7UPOd;qkCZT#du*Ee=>0{FgjUOvtT>!W`6B!)=jrmm@ab^?V};b z^5BZvz2{;du+B?*gPev!&&(cpf8_YJ08`WYoJ#Nj%TwT4Jd4xOXI}lQtMh6QaGvo+ zPAI(aT&;SOd|sG(M`P(l;D;&u)ga*Zal@s%5d(Y>x6<1kl-bUL%5Xr=)rAC<1%I~c0`VofI zbFG+XVtRS?$)D(6Tgsd%$V&O~__ntVcl^AW*PYT^lQ~lm9oke0&=a}mwoNpeA7yq| zr&+}krw}iC6(x~Jjh){mZoDsY?%|1*vWnK$S6@I3lJ+X7}f;GmufZ!N1qr_p6Yjm^*>NTZc!1>#yqsSa8M1fz{y0D)R0xrn|sY^AuITvu*=8*p|K6>^Qou1obxK~aYg+esO(|7KgNF3E z_30CjOr0;j$=pjKl4f_jBggrtZ5xG6RDCB&iRY-+;6p?*J8(_xjBj zRY5mC1b`m&77DgtSJb7;SB*|JBdu<$VM;Zjlzh1d;$Q8?N5OWR;osKfSYaS6J|6n5 zV%_3+h|gHb)ycAXB*b`0$yQ9}Q+Q^Y+u8l50Y3ihfc2f}CCOC*|4dPH%>Mbn*C0;w zp%N&-$C@?}?qUA9Z?AwC3-b|V=UB3a-R@?Xe+eKDjt&3t%qcvCTv(q198HV*d7(Pv zxA(j;^t3)LXPN0?>6U74oU-1t-+ziu|Nh$LCt`+BVa3Ey>KPdL zxZI^y!VbK{eE#$+)+wg`M>#>_ow|2cie6ryxZQpk8r&SwiT;Ai^7fB1O#U$||(vI?TBg-*xv5%O^iZ*4&a?)OQ!GMdQb)&%y$Z=l3wI3JD^| z$5}Zc-ig;_tZ_`vv{+SBQH@?7va2_FQzX+SJ(|79=GM`hBmcp~s%4!VAy@~JjJ~Nx z-_4m5GV4M?0Wdqq`L+GU>;B)KHFIwy?!5(=NGs#%lPFSHK&YYpy^xSH!PN;iArelc ztMmzdy550JhF~|uoJVrI(C>RP0)n$eU*2zh1Y?gmJv;lyLQWO)9QQ<7LiuK|MnH2d zdfAq1@tgYTm63-E|1B3J;2isexjra?95P8AauVuzU07Fxi6i>(R!N*0&nf=1X!R%0 z^hvxc?FFPrYAv5SRV_D{YRVDw#FHDo9qOB@Z1!zFr(|&rf?jgV?{kFQwyW1b+j;(m z>7#pNQTDT>{=(*@XPZ`@zNZaAon+1|Zi_cxtoSZY`vHfyrg4ksm2=&Vd#R^a7RRh{ zqLl=P-HqB!c<^Z_aT?b>0~aoxn9tu8hHFFf$8+14Q7BN(zuZi>B&2yU5&Y`OD=nEn zyy0FiqiGZ+)WonWzUp^sK>MG0KiO9k`S$84to7vRAj*_Zx~Eepz9LgRA$ZN6+z1Maf^rn~%q7qcSj?XF^*ADoK|0TYAd6avtm z&TotTXh%QCxmr3;h~sjEQxJtZ;6B5T$h!rz&IFxT&1;$RKXo3{i_9gv%yJFMq5d9i z0iL1Qjo*5O1=){c2uRGp%D#v1@k>CVb@|CbK=5a;Hhx%@>`cPfg1byj@8pHT-ZU;w z${Xvn+{1J1Ra1M^2YssWMf8r}&|_37x8pg!^yR&C=UB#4iVC3u##`F_$ID+~PD7Q< zVFl+8Ed9L##!RwMZOa$hF!zN8ZAi+{Yv{kP2#q?c@%-Ox3%SGaX9dPLZcZnE%`zA} z&Ucs@e;(>^Tra>Hte3Y!8{l{O7H)sdO=YzqB1KK(tU~ibxB1S_l!5fZC56F(nYo0e z9Ay(mhP#CydT(S&+`xHrU+2u}Q&+EE%?t993KG}fJq%>A{IWQR>sXcT+dQ;g+Ri;1 zEOq-@+l(u_`_m8iZ>~g6yta8gcr^~wEmg{NDu`B6H~NkL@|KlS)EIzYXgxnu`f)8(x4ON$s!B3Q+Ka&=h z=6VX<=KLe+WGy~&6lx|jZ=&!#!5b>RemeQpM}hpA=Vvv{ePie4S*OmQ{Y)Dk zC4HVd4^0==RUdj0WnMgKFJ^r1(rypcwiztDi9+pR%U22xjLbut2qiXqf)1ZbZeIvb z>>$3!kNzOFVV7iZ?kM+nCdVr2J*JFp|NYoeQTWn}F=|-w7>?Q8zSLW_B6xP?mrnr=%Cx#ubFK2EMic}P?7%Ddb8es`)i<7nn!Q)r8` z6c1{gk{3JT2#=h1)9kMvTO-`C?Fk%Ys=78+$#fPj;c2mRM&g{VE4sG7erd}NZ&o@! zm&pU(upGJd_f4Qs)iWaglv%U0v+lgwnwpwb(HRd)hRv4*oD_ayIZjF1KA{;cBG)6Nxg_WBa{DB{kJgX2*aR^Hs<_@~5!iGJ6AA-l@ zR&V}!?b>8q$iTpmuH7CU64JezaH?s}*2rMwiY%8%(81wB2r<^<6iqeJ&}UT7#pwH@ z4Ipzje|LQ;$OHYXY(H8yN=V1}qjV^3xTXwV=+th}t$$97@^pVHi1aobp0c&|^}xPv zE^zx?BulQYj&tWTurM^XH(UtwQPi?a*AS75Q&OlWP|;I;Psn(B?{o8LIz~rflHikJ zxMkT5SKFKe6A3pBRVw34WQlt}A6ZB8Y|CSYOFR zUTu7g&AEWQfWz`ALcpU^zvauXm6?ihZ?gTvC_bf8L+sX&YY*oDpUsu{?-2np=_n8P z9$%X<##>@`X~AG>N9`XqzKd?(jl=Y%*lpek)AlrNoVb(!EW26`kH|EvU&q3xf`(Ro zvvFc-?Lq)8-e(F$K|67e&)6Y*nnT91*)_rTcaXGV2D9sqG8}}Se^CgCFi*XN{@XPHss_q^U{nH7k z*=M+Vf8PS?1&T2%vo}WgnRTgVOzGtJTnSl{+t1?gFrUbohZ zJeX&2(^NbDrc4>g`cO*x`Crz%YD!@|O1(|4;pEcR`)X5XKZVe6ttt9kES40yQ<|rI zW3R{(xe!;_pE4r&IhOh4UrRvYr=~~nEH&}|CW&m(_mdz=NZcW&QpVe04C{F4IGaTqV=s!I7j1i_0xCmR*t z@0@b0yK*(_8jXI#6=w$AX%&^UZ*R$76~SN&xA@mjrF1>CFye~usL?<=lg=RDKmD|8 zN@}W{MaAZ428Jd#^!a}-@xt@Zx*g&{k;C)mmc9=|hDqqdy92BSo7-I*xiqg>!d+EK zI(%AgvJ*%I^KmHgEZLc7-IwdgJsmVSRW^Ws_HWM|#N_nm{uYl~^M&hj8n;V_E156; z3BN`^5Bez&Y(~xz+Q`T#g4N)YerrV5pFft`VPGVlHs`Bg#Vr)7jqd*#N~(!rHw=^h zNQ(0WXXR|4rW%leon%A_ji<|!Ga8H;gLCMnFX@Cx6J>B_S8Uw^Rt}cKLVF1gRL|fU#@39> z$;f=Nwzl5*?fbxRZSr1IQ&Z>9zplN?Rdq#E!bOlH&i_ilzYR>qz?{=rdGN9n&D^f3 zX^RWbl^;Q1xctA%aN8D0`F!}~R7aPuMv`_;g8ceYO}c00 zIKd~mnz83#+oaP>es<^iF&dw})v1*5t7kA*Jm)^7r!%<0b|ZU#Y6wF@LK5LJt>LUH ztE;PS&RTGZsCRoiE6MNzwRiIr3Gx$;Kc_U@D!{yRRoUDp)i#EP#*^$2qK-G@(wYru+IMRhICJg9ox9jH$FLU;|W2 zXW~>Y#-XHC$a!qV5M%gogOSaAi0jp>){c$2u2+TXZfMezTZg_OJKONjOF;oEo@gzb z`0uYHzQm*pns^d2;OvRmJS{gBpD2Ix=yM$pUa0Fm0gX_9hSMmE*4Eah#>VH+`&zE6 zc+xSCpQ)*-MQ~Xq+`s9Y(+m&cDI4yJMo#U?{9k}Y9ac|Sr(rMy4~edkWUtc5>*anK z?7P6l8y-nYFivb^^A+)=V~)9r`T1SAp7vj)n9zDsL6hdYeM=#lK~m<8dPd=#YP9)k z*4*muB41j9`a9RO>l^*0nT|u}x;gSoUuhTTzgmp#HVBi~*3Ma6ENp7i%9x!sl#b*; z!wohyG|cAPKvZ~v;+8C@6 z*;z6=gBwc>5L7b>T_|p1cv6~?&zJAg6!-t+I$aeuf_r9^CQ;%LR=Z1 zijm(vyJ?4;(_Ot~cer`@-Bn_$&591_HEp~bj49gM;Z&c~7_r!AN=izI#choHP{A^n z;z&dCI%NO;{d<2g>YvW>T>fvcjzw)At~~hFo2B837RlJ6YUr98g}Sa8wb$Y$9&5O= zJZx-kzGZh0)%IK=SxP}rkVsf$SW!_iF_ckd-j8!c&e<80mzT%pvPBN8&1UoNzhjf) zze}J{&cmO~23^rOs12Ut!K|Sn&8g{WV<2`&InAT;^7IY&HsV359shK45f=g-`|e;;w||9ti6 z?Y{xQ)24UD<2Z4C!K{+GW@5FT3Of^<6Gkij<)K#9(dO}P$!&0*GCqV|-ERM-hn8X(P@K6?fskfeXKJJ)otdGp_qc0s$ub_r!!78tDdn^5VZ^ zbI0lbq6_>vDnB71fz8eNGgv`LVBq+IHT?19aP#^m{!ph2S(55LJ#r6EA zZ|(p3Xpi_m_XJ-x;LGpNe56}v*cMe9!S9C2RL;negl@0yZ_``*yU8&Bx5+&7mDSZF zpb@^Ry=df+CetS$-Nr|I&*uP$q z81?@(Lk7?cjNIJ)*jLEuq72slj_m*U+B2w>t~7L+{aiyJPESw&bz(y$DXEVlexym? z-}>xe%JZKH3%}K5R>>G_(a(SL=FMJd!ibW#_JiWV;du^7YpScO-Lp@UAp9>JBd|ao zv_9|uI&SQKu~8Qt6MC;aJtL!{C@CdnVMf4X=!{adoBLLNYKQCfLK1pHUU!ie5u{7jfQ8R2fEGIAEpPt^{*Ny`J4;t{1|y>a99EZ13!HH z*!|^^F5AnWXK?_%neZ3r?M!NKUb2T0XfATJT=c@t`+w}zklVu~1QVV?y6xe^|GLd{ zeF*M!vs3axlYYL_G?eKf5fSMf9S_4>^*&Ns$)qgWm%)~kai`B*GK9x6 z!`JK0RGTomMun z+QH!YX-kLAE4BtqPCD50RQrE!^1pG#7#yb(}}` zWy24#eSKqdbpH+?lyhu9_QazhE#s=&9y9E`*`vZY(acB zpJ`zIm)ZkE*@cgej$*9jVM;_Rr7BP>Wx=az)D|yL^p-Ni8o?pc&^@ zqaKS9G?I5Ix6SlrU^KyDa~x10xgl3ZhtR);Qkz0^*n@4{`}h}06E!R<3cENhe0)R= z`@ZQ66kBMQEnK~JZ8JFbKrur(E2#EmFWip2>0%ru_R>88fzgM{QZE`+lrvT1A=0Dm z`(ITuzqJ7N2RSc?)O#g4Mja+rs1L76ON1EHWF|HrSYkanq zxo5pG7@qceFuiJg$`Pj-w02kr6SQz8bG&Ty0`?5@HRNa$u>Cj1^<0-TGxO8YM7xzY z*MEV$i_&eQUP4@aE-SAC&(F^u&Ja%{`pIynjiQqIs|LQYXv~Opwl)=VnvGAdcORbA zKUrVj{(F;AK5dJXfx-FGGAa3z^=BcXl~_$+dffDH!M3gjo4e6%M>$ocrKOS!qi);i z(&1(P^yF=>Xc@5bnxWF`w_sxqEp49>Oy$uY|NMM=%JQ-ehh?dzLG3nDCtBM7UKxO& z)%_nY{p%zwDbEvfdaFY^grsDJF*%!IfN7C)4|cG;jpE9c_zMp6q%!d=ciu&6-#st!I zu{&=V)(k;0WV@&;9=Wfl_fZ*?I6n2}?IRT~g%E?5`tvoAljY=ubz8f|$H#*QQUq8l z%ztobDDxs2hau>gcr3>}jg8Y^6%X=_ibD28D&YPGf^5?4>=$MKT&H#Y(2(mct)im! zhFgpMLF!uVybjA9pP4iYOt9ukiUsAc4nP8%&X1>PyB;M8DJiza6-zF7PiCnvSJ-8H zSqXeQxJ(G6A%Tz7eQz?Y?WsqlB`1rVA*AdMq!Cq=lZ$I=IuCJJQALG5r7OOpL+&C8 z%TwL@Pd!7WL=2A~4=oTE7P9Xx=C`Z!x$EhLOt(dwd>QZEx`^$|)xA@Q z>jn#RB}YYN4OF=JGcYnv+VVgKn9|ZBg?3pggy>+rjhNrb!A13d{C-D6AWen&(eaGH zXh_Yk%pBLLX-c1`U`vJeOQfM;VJ>E5kSVGNPJ@<9J@@6a;&y{vRol%TU-jW>ORkNz z=H^XEOI>&*zDUtMd-^mrK3)j+{}?ED3g)mFNh}_9mmEDl@^Be;9Yx#O*{N5$mV)8x z?r8dWc{P}FEI_TyaPQu8aq+*74p%%(W;^0B>uqIh#@%;wbSpqqv^VxviO2n*1j`ZD z+%rF80UsDX-vE2yRQ&mILA_${T6+}uBR#!DXk{=PB{Vv##)r_Q=z)63UC46;j#dc= zD&5N9-SIEAwY6I8pU611AYOvIW{7Mh4icA^He^Ei6Lk+Zr~JldJAluIQR98F3v|vYJsBz)$;ovY*`H00<;XbQ<6{pd z9|?>7iwAqIU-@64CwwL%V!Sc?YoN>_#~?fDLL=`$-Yegm4=S~w7F=6j7|98=0CnN8 z_ysv#b}`o%#LW8=-E{S}gFNV1xgd2`q}ITyC8 zj-z34(21|DuXkPK9E$UOQ2CUan%cT-c%aBE@@Nk`V|%b;MZxE+D6rozySX#rZ}Ml1 zdbngw0W4}WL;Fx(^b>g?EqJ4a|ojdAr%vW)+)*KUnh2qh6*bZy-^Zk_=b|)t%=j~yK z%~~R|p6>1wAA*OstDZNxpQkSCMyTyD{1OfSLqpB`2pq)AL~&7zGdy_E6?A8m71t66 z2S+bgm0&n1@$+S6Zvg23)&i_7z>TSy4P%rRdSAJ`v5;@xE~$OFdOigh4#bxrx%Nw4 zzf%>gc=-793BJsoA4yn4zkErpt`>w$74hdDdtJv0Xmm7?j~m?zvh#n@yJvZM;kH-4 z#lP6u?r~J2$sBfx@^NZC<-S$f3}$ya(hfRtVeI=`=Z#;YkJrl_Ryt1;4n2r$rStIc zsI9AGfU3^CSOfeLf>>l`W%FmJ#JZ~^E9mns3L~l^>uag-el&6c1um6jC_#aVzx*2*>vj&+WYia?y<5e5DFZ;hy5aSxXCX?b6GuU z=ikqC-|LFC+t;@NEF>kyx%1kmbLY=@PWT`H$Y7PWwEQ;Rt{o>H%(4lyA(SCGh=`2b ztQR;El6}1D6%-W2X99D;U)EGYwCAHnL7{Bnz8*Q8zA5FhwYch~3wgvw1C2ie|43gC zEf0?fM9HA4s#q=OxjXIU&_&(P6&3Z)HY6q{7N~t~)LY{b6@|(apOA7Wtq@SSz0u>t zLTYlGm5Oa6h|yXmOgDYu&D;5g`w@k z&8rSC<=D}PeC!CiBUxZQC6T4Mi=j1w%*c5ziO8;<5BA5SqM*<{I|eP-8p9_F9U>tu zjbOL*dWuR)X^@$#AP(E0qE){OvK8CaS|SL2ib#RT&#wikN{~86K1(fMB&TAFP&Oq7 zhMU{ooB?LFj%=`ETEpTH!;G1|T?3&H0h>4dEL??U1%}sH8_bIrz?b|guG}=s(S_}Y zm@AUo7t>$m?#yisT3|ck(@0tL-j5qRhZ0}QefO2HPYOgR22M^D5)zVVetNJjPvxjp z-mCBeWkB?Qn2nt}sC8`@vWkmJD~gIlpbY8sci#}^+ZiJS+df{KpX?ZfW;5j^&v#hS zf>N1m8fhkBpAW$weEsL4x@9Nd->__%lb4q#7_2;4lXTmi3PUrEPC!+~v3MMs<66r| zZi8uP5F2(`af`9CvB{5d+v+!ut)lPE;@#Y(c=YmV8RsrUn6lvrBu}J-)xO^h}U7}b;(kh%>;+cj)YoTqoadezI5H%4=T{|b0pesn+eJ_kI+4R zeW_K4OF1!Crly&dN1KBK!!vseIoQEG7Hc7b9Bz+pf6P+OfKl8r?hck9AuGH6 zaeZyAz~lJHyr<(D9v)tdzwXPI186cz%It;gGMT^rI_HK~E`|)|a6$Wc?IVmim>7%E z;)T|}Kyb?Y!-w-rBg0m5<4^-M&)G7tut;2^E1+nY6*Du-g3_I}z0bIC9!k>rtyP&~ z_d{oJ=1z4GoSyrr;6=9&5+q5E? zO+v!$liUBqyKHE42!QOit0_x3n|@25y@{BlBwmespbb&-H`M>o`5{RXka{< zJv==4;sm=1|AO*GzF&QPv%4j%r@Y9_OMWqGvIW4VctqZ9qF+V)sCsVsh26pRXjd`f^=Esj87`O7S=-oXsUVF`yEiz8?a%$UR zw|#pEoEs%E)WY7x?jrrBMVGco*zUGrgi~W--!B(E0=M4hF5tsaj5THUJ7*ZXK3GwYtDqx`Rc+0<6LM92};iGc4YlTW1 z)wOG1VODg0tEbGfXQd;K6BlcSHnF1}`YAr?=@P;-zI}bF5M1q5YvyJiFf()D67rag zR#tege$z2B%iQ=J7^p++fp`Ue583FW!uIxdK)XFgR@gU^hszvD>Y^_?+19?nt6P2w z^L>mt*`8~pTE}nmDjCGepF7&!0c1h^cv* zOZ-vr`5Q1RWj@>>rbne}PwAOR5haUSrK?)3Hy2W9 zXK55W)P*< z(}HRccHxKqf^%OBkts(cq&Qz;G(cW21-JlG&y{~}>y?o}T7#!~c=aT7pZ*^^J4-)$ zv{h`kREU)bdinCDo2E1t-1!`MYkAF~TNP_fjNWFDnC;WvTAz-zNKZ%@V!Z@)6;rWm zR?Q(PnIGpiRO*nGR5s777~hSX8mc3kJv=-tE2x5v4ZW`IS280E%#)_5tXwYF*XZhaK~P}3Y3Hg>VL)jS2S^*zh%infy;sHq0xmxj z6=h^*mI2F0M!31TdDR&#G)J5BLYRaLzp0ChoY%%?)t2^&Qp?lk>VJjjEPXJ&?5f?l zir@1YL`JZ-I#LiCWJ9WnZAXx^?GYF3Lx*N2Z3R_TRiFL6T@sJOXaI5`Nqmvhiv>dH zC2^T%8;5eya?2-r11(99aBiDqpo|J3q(R131pvxSVIAQ7{RXkmrKJnAOQ+ST6#FZC z`M2qUOWWIuUwp@r6%+~T&2H@lYLYg%kyadPf!;blGTJniC(oF}noX7`OP%LiuxOJR zWB)EA&6NzSl>rPRaKpg^7&~7Bb1*6dAppXDa+BK)YC$_dNsgGW0ou4N6CxgpC$CV^ zJ#=^Xj6|>8y@#21#;%UE37;BE7?FoUxG_Njxvn}uP*xGk>`OBUnRZdOm z?fiVC-e&P#t_JP2bK@BEam#0-xLXo_h>1t4>;Gc+$SC5C9SHZ(=a| zQiSndzpmT1JM6Ex&Bdh((>`OY6clX2wk(W|*LY%baPjet$A7$2FR_gOM8WvW`yyF^ z^JdjWv>WYQkBW8=9?{2N0A#r-8ZBfhuWYy3msKcGXDl~>^dn5mS$uPoDW~|u2Wx-? zMFCn1r3H9Wnj=!$%E}4@leL^(E32z}b8=FmjcD)PZP>x^uG{qozTV(jZh(#;82`eU zT_RsRY##}_1Bi)&mprJK95r|XnEKNPv`sDszVs2dqDcyoGV1)TFqk}iTe?C`{V=3p zdABl)WcJ+ultKtSG*&MEd^k>HfYe!Ri@p1BKWr70gwvwwN^+VR0~k7X4(?YRk=L(I=5*Zhc!#@dWNG@| zo6d{zmDm^WOXn0+#XM(-h4J6b{!h5yrjLqpV`|qFLJoI+nR1+>p1;Mse6IQ zqd&3gXz}*$exdtBAC=ZfvQq!9H@9zpV&*wvMWwD(Hy<8HmXknZ+X+ly;mg|dNr?nK zkmQ$@ABPX$f|}bUgALF<1ljN|Wy~p;2hM6~x!8V59g-hoAUTm5Oh*Gi{vmUR9IvZ9 zP$DOkmzQ_7p?}S}H8(d;@-G<`zJC20_WE4t*>eUueKxO|Spn2BM?3Wbj?>%A!xJ^> z>N8NFe)&QS5Tf%m>>yQ+qg4R_6P~wcOR}`~Y#Z-NNY`9tP%J>2B9Eg40UbrM#6iJ+k1U{J9=)(IXMP!A0W*)WbaBLP%f$8}NF zC}o?8fybCQB{_LZGBt%)zbz^aiZM~ho<7qe@W&+|VR!e_3$c_)<$5X{$^b-X;AUT` zQ{#P)iAnk-1BF7!42T=}Ec`c7=eH1w^6l1dNtGN>s6F072 z{XK`P0PrC!)+^&P{)v)_<)eavPhoCnaYRG}!LT{x^(V^NYSe0*Zk=Vz7{MIb12Lhj z1N1|l(ka>Li=9Ot5*EiL$Md**wbib&NO==ymnDEmBwl#-VTz@;58CO~!xR?J)qCOZ zFZ{SCzBfPh)pn)zn(e3x{p@E(5u?soF141^6GR~?0!!OcZOTvhFZoC|j}FeTTRe)i zZET5;Sq*t~dLivQ(xYweySsS90~W_er@dE!7jynfJ~cHp2etd7mSL;?XUR zB&Z=~bo2Y~18cRk9z&9umYr>+`wIJ!G*pM!Vi=P&yuDPRb98{`y$V#A5rEs`oj^;u zY-$>4jRG9)JXHdzDg<+mmZ@p?{xr9YbcPdn03lHURIHF!v9RHZ_O^0!d+W~t2_x~X zHBLz%4$>LsU7>~XFRaq#%IE#&A~BxsUBxRzNJhEAgt+S$)jXPtUt{?zg#5M?I2klq zY*If9ScOyWPAd+(FX5@P2}rB7OLlQ)mkL%LjofE)`7Mv;cKFgBo6XD5r`(HLiG1_& z>zk0z}@f`-&?pvt4_$&)8+ zcJtj@0@%4VzzQ5zMzpxM!gXTWye*(0G9YdTq_^7cCeOWx4?E-rS0|LT;=w6+u1hRe zRm=p@+nH+zi<1tl?sFmrhT1!S;xb+w?o#pgELs8>K;YlIZPBb~`C^b$@uvv>-0K|a z?(RpchtFR|{!VyXI9Vixr!ML*-sbkDw#CK_(@n12=dZn21Ntrx7dn3Y zt^4NU`ljEdimjZ(7=hYXMOq~%#P7`8prETvXiR}51$%Giu2h-*(#FS}lHU^Vd|U(w z;xhR6X0@Bz+fQ(j<&ud{GD|KjmoMM6XSiiE{%#$yZW1g=JknBPLWa#(tg#P9j?b7FIvVD@~bAz&l|VzfT%)2Pfstlr!NK)USK4P%IcQv$uJX9{mr6_|G(D_vv^WdEDzS&|&>Dy^iXr7C7)6O#>~ zM_lRvVuTW&(M3~In|s~PL0@i33W`fVzY#)iuzfBA#e%iVcq&9VKmU>6@So`F3B+D0 zZ4TJQ{dibx>HL9bkXT<6vocuR9vhKJL|OF|NoNH1Wj@Co@79uXvJ~|c)=p)eQGbJT z$ZMC46f(2ji_U+rY%}m9_y(@sz z3+y)Pg2hT^==e=f>jOVwa=2&5W51~C@IVxVD46L8lgAT_i>3&JVdn0R&C#|fIRaM3 zZHiHQZfn=22{5tJnHU8#GwDbZ{++SYvIgXUS~KRbdEdHCLvvBv{~EoFA&3F3OJ(>7 zzLu7%0kavi3Zf!!-SVTo1wetr3SetJgrER<5jaXCs4<oj17zhPJWJ>1k;_ zpx-V45m$}hD!`=OeA`14b0O9|fGMo4vD~;pp#*Xxok3vrAmsy+W^yhd&$OR~osG@0 z7kKC;sNrS#HWRVAkr5H#6yt!%gw7x-0=*|`-3218#E1xW&>p3I69($ieSdJY0Y)AR zi#!m+AQ!-bN&?8e6}9cJRD78*bHZV|3!6@6Q4VCWv@`GwwBkACYahU7(?Qd7_fc+= zZY{#@>eS!^O*EXZ4Z+NP<0};j4n>N#3$P4Z%flwAJyX^QNdu{uJOD&M;N2i6Uo7-c zSsba*7(HBe0F@!R9|@~6;6>1T@=i|SK%gTQ(LMm%bECz@8@&%9Z3c0I?kvvw_cKg7 z$$+N;*PaI88iMEnwRu+@v(YJu0P;bty=%Ar3P$UxFVN}&IB7F2wY$69IBp5kmc~to zG0%X$P<;9`En5U3uOJF1!Zf4fb=;STt9|28OTfX0!Iu6L>a+$V6@qWMvDmVuIY$ zr(WR03M@wXfg3Q0X=8`-W^}K&7>QIl&Kc?HAz@(#vp;`BX=y&pgYYSj9{u`bQwyqV zaIye=7#s6!@`eDPk_A3d*eBVrApp0AUnWHXq8u=|552s|FZm!sHh|;qa@YsZ&Vl>x z0mglDcc{CkXU?H&KN=L?z*!Mcr-M8m^oR411+BK24Q#xFyl`RHNhiPGc4PKA1&?iq zy> zP@_f^N98TXFQsK`=3&L%U(1UXggkyO(QM4kkN=6;why5pAO86=w8VD_W_4DJD!bbX zdbsHp>ns;#h%T6@ys|a+@aalg2rEw!DN|_nuuJ>>@?%v?F(-H7?2&`|@OJ%ZL^5|c zg^#*(*Y=Tv-xfvsT11ug@iSfIGy_WcK}N&Qn2ilv(BAZb&Otq6uo#9Uee6NS zjL6{@R0R;8kK%xAT$YKg;(Jha@F709P8`O?Y+r83pr(z1#LPS3%nqnpbQp*Jy&XgUUJ$+{oZGJA&Q;J&g?a zII82F=Q*Ard+mgbI?3Np=q~(m50L{$xdwQgkPZ5$-O>bzPuo0Mth#iKwlzk)*zUvU%lh2I%Wn z2ew*RJ$m7R2Zl%6+hsvvqYJYNIw1Gh{8J;qf~%`O0qFAaZfqC z%%9lyofBNcb7P=tYhjmjn|S)k+r!OzpP74)vTbzU?}_+mG8aF2bD+mFLDaN_r|0gz zLLe7yFEolBafd z^hf{>2#^B;0FiezH4rEL`Saf1{}&pujkaiB5QQW|q6{Jn2+#K*0FaP;4ULHzF)o>* z1tsC({UQ+1VCzzg^;VLrj}M$hY#E@A{C^jevZ&*5R|Yk%dG5B z^8l>?cNPoMU{ES1PfpVMk%q=!p%E#-Q~~q8x494+<{-$SQ2~;7fCW;2eSOgJO{az+ z`Uw;?1j9c6kE!o~=JNgDCp#;nkQIewg(CBkUBAqCvQ)NhTI%FCk#1O+(3BgI;E{Eg%^8W+s!ozg{vHvo3 z`)hkU&@U6eLF{1xZkgOfa#d<7Opi-06-?rLkmIh^`cG(32)%WwdDYO+a2?;&p(cnH zQQPB^7PaLW7dI?=KOITTgDXdlvVo6n{kL*(U;sLkl+T|(+loG8@&??Vjje~<%)sCm z+^P+5EFq&Z1G>t|$q96q>=!|u+saKGf&lCmVi2L0_iK%(?M~RT2q& zzRM#xfc!v8G3Lz_kB0I~47jGJZ3vB_ze8E7_-Vksd4r@$XH7A3)&m4ovlnqVaxeG` zqXtV*MKy!cz)f}h_R+P}k*H#88$NY~aO(yJIh~whr5?ny~qHWsmV;I+9U+xylhz28uP#zqazug|W*g*E-fVV`0{N zB6gYx#pqtD@$WwOOUOb`W*CYdbLxa<8r?2=AfRbnO1diHxAVdq#Vvq6DJ;cY1EKiz zQ@WYP_@!=z#zp=`{1=)^ox+s6*KDeXa}!*2$1Bqn*2>7T`Zq83hd{^8KuE9`NHYIy z|7xsiYx{myamf6Pq~3tjryJM2P{K6CL~cB9_UKf}-^zVIa-eR)a#%9^AgW}frLuGU zrU@wq^MI2%4qedxG!ysUC1?1apXHo3swehuUf^TXt&`+@MdYb=Q&+ zo8Qtl+>dfm*Eo-=87B!ywyaGAiiw1ev(`o#r*vhrcL=jgrKU|}Z8JWG{dR8cIn)W( zD{90VdAiGa#CMj6|E}63k2oS4&s-X#i?c&_q#9?3M6Hc6M}PU5{XzBk$jeYbHi?K< zUr(BgF+nRh@cDfeW`zj{d(NM<5Z;{=kD3H0N7jfoYbL?wbmcyECAp5QWHaslOwpLE z9QHPaShn->^E+n|xW`9`Rvj)!6s@8$32C;}{PKZ~^Dla5(R*cx60h@=N;}e?4h|-! zI$NfZKLa;t>t$CCYMwmCOVtTsr*#o(T^nw2Sir9KvlzHZE5S z1~YDmWax(m>fEjreP!Z;G=B;eeCWqL2q}rt?#nwAf2~h$M}n6;oc}!b^Jq~sA0MXH z?_}c$oqCP_A6I<&^ZIQTELUh~=^`Jf@VT~~+ZM>(H=AY?&a^HOiEVkOC^A);*93-2 zO^+MlN7v_r*DuM2sVnilQxDpj1;lZH@S~?#4c<6wvW`F+acIFuCli*Xvj>lKxP$(Zi*^o!KhBy^w=BnKp`gAzZQs zg?u=VBpHG5)}@rYifOAsybAoDopRedj3WFXIlA49E6am>~6U=Pjj%~<&)tan<*NnI4jjHi(VYAD5KGB ziiE3QJ1v~{4_IA^Is+1xXD;t12-lRFUR))F96fs4eWR`P7x^-J>_X4$7}SP0ZDe`> z_CUL&^#4|t0uM7cb|89W$t=SvVaP~lK9`kev$JtzqMhPyrRAc-PO~+^&%N?WwI_7J zS-l}l^vz{IHqviOR_}J`MbEpbCd)|}o2SGLt>5qoE_OrM-rgTH=p zhe21b42LVCZC`6&tBs>Ci%oI*!l+6#L7b`0y(X@ERJ%Wc=f3|Mt@6U_nit5oA3nDM zhuA`KIv{TfOH2WR_jCR`MPuDyz}g8pCE*n27BM`gx22*lTj!cq?HwH6K%+gF91+oj zMO)oBb7`w@{F$|_OUqp<$$OSPf7hjccv~lcYp#yB0VAYgyDN@H)R2ZsZLN|cyUI%S z1IIE?KGR9Uk(TK})Q^XbPeZ~EU-Gq$*QM}0WwfIGK>d-1WE4kQIM`GpH@wy4qkTH@ zhjB{vK0o9_THmKJrFKVtB_QAHyZ9S5agFxaXSdVnRt|r24{#N&Xie_1lx0gUQ&Z8- zMb2_91}b5;iI-C)hsycp5FKHRcjkHt?gl(C)^KvPpIzJF*Bt+_KU@3>|7t7%`D=ZB z6Qp4#qg-i?!^5kIO(kd_3Mzsd(13!}?fXrF5{LpWhseeHRm~ zdKvD{KSTjKN81N3zCff`D%90RU+mK;9PAs%j_TQxMJElu5=mZ*GCH2ak;rhmTg{)g zg&sdtF|~rP!OoM3`_Y9qq|mut*3gkk{CVP^N+B!FjlJTH+&23&fii~*1GIKYBL$@a zV*dIdBzv5Q2>kPq@9lt@gFU(ZLe${xFZa+6Gr8(=C6{{L*mNgq6Z8V~yF=O8Cwhhy zA7p06ZwRt6?8SI}GYa^kIZ|0i_s~$mt~F%krF&lV1n0j1Ku^!~9RN&_=TH+9C$Lm0 zDk|=_Qsx0_e>|AX-a1lt`Jf2-jT>*^7(!WuPyn@n?UREba!wEBq9jKCN)}j<$9_$K zH!K11%knk?01qJ6sR-&BqV}WB=4~|uVtibpzHxgne?I%x@g`kdb=PFSACtI1DRCDO zJ4@j?osR6_`zLYczH5ht&i6SA5q*V@Y7ox2R5i~Y6`efr<;UAR|jG_*yKx3{$wWf zD9eizevv=fGv7YKczB^hZfiIt$&6CrbH~tSu=kzDY~_@?M_@*9^Zr2fkCu;*X6_uh zd}%qnimLGAGZpBjnLk##EL|&jd&)boSzg)k;NPR#h$_fIy8+uEBcwrVwy?wHiIX&; ztFnu4OI8G5%y9lxL?)YJQfyIh8Ev9hUf+((KId%#TQiGjiDkKsp&`Xujp}3vDUv58 zZcM#Y6iqR7{m1rBrBA*7w-2bhpiz4+Cr1nuLQ+!Fe491JZawbW+FFR4H8Ijb6YHYL zCm@us#99qZ&-KZQ!Hg|<4YW`9DIZdmXaR}L$s@4iLyBsd895#%vdP`7yP^dG!|y;T zDXDoNIzoSqwY~q_#g_nL2hH8}5UVYpoIR}}pV#)I2gfy1-{YqoZN4_|O> zKk`VcoU?lTSyml~E6pak%_t*>OFsFB;$+y;cLW;pjR+%n_1`O@jgDn+F}5JA##2Fv zC3pQ;*M>`KI89DTO?laZf=~CnRQStYpRZ}6$VA35%{TbwitJnR>ZZCqrFg?8UG)%+ zW7Atc4mqU%bVL?U5+sYa6hhxA&6UpdjYy2hpyrT=`T7<|g2cAKcqBJ&gpTeTIQm>z z1I~s2ofxjf@HS)~pd|N#cq!o&_=oRvEB^vj%?sVhLpp>;=;7^+uGcUEEWbFMZ~%%@ zK6S~cGk~4W$8$cDAc0`pCrEvJg5LNO(ex`|u1z_A!)ck*d-YZPgr3cmhW=whUYE@! zBlaY>d#zPc*}nW3z2zm^R^B$oNiqLzWf{4D6;l{NhF#eWM?2iPA6=M*wyKyjS5fUz zHDhLVc9*)QyOPOwpceWFD^-1!vlnbG&XSkCw0u*NRXL)OEt>F8BaVGNAb!rr}UZG3!|JEc`<9}8Lux~WGXjY-q$vl6RtDQbt}t#S>z4L8ufMfzl|USl^c-P|4dqK1W->dmuFgqtZ=J9I2A--th<7%3V*uM6Qt%yviJJVCH<^Zno*pB> zxt0c+`Lp^k!mHRQoiNVqg?l|aJM?GqVC-R*Fuf8vJc)HIgaWlT4RWic*kt%K8gy{=Q0gRR}Y*ewx zZQu4*L!%cUr+S#fj`Nek-N7e}aje|p?iEP6634}ZZugj$O>GtqbX7adaJso}lx$;= zsjXOU!ro7M>WRr$lBZS?4(IB4{Qey|@2jRFJs#XjOENrF(SxWqTn<^^sGL%pEBd?}v{~U|5VttcVsj$?7S4{c^;pWNO z!@#6oS}RsXmsp(HIqliZz4?=sRjcxy0n~lpT&Iz2czlbL11ik_GIwxVd3g+o8^R%{ z&%VzIh2Q$`7e_}%Hbc4NG4!|GP`S?a0uK5S*xCMAz5KpJ#o_AW=mdKGck)85U0ne% zH>gaQ861p&veF00Ap!>gCWgR>ZWo4bR)9q5If@Uk4wUj<#`wQqF3t6fx4mTVb<;$7 z_|BtceNrQ8%dxrxi~q5xhqSH7+F=Y`N#A#@avJ&2P2qZiKAjEY8nI&>^YtCotL>a#w{>Vp+!HCGwhYv*cLfdr|f#g^8{r@x`8 zp}`JBA6b|}Bnqr`^eA!#{dc>?SRh8J26$CLkzX-9Bsh2pTEV6dmeuB3Jn;^oj8-Z( zpwp6dMfD8|%5m8APfn(V_WuUJF1CM*lvr6+ibG?$xAa>B>-OLWAqNtqdr=$euD+58 zl^k=H_C$3IF&;k=P5CB;Afx8F|FNJz)hv9?;ZGkr;gK6JWwW05!mHe~&(b+AG(spI zRpoIg1m~{Koc~>%gy;RI$YmHWaq+pGdHq@nX(mLY6r`1%)$P%_Tp|ltFvN3kVyUT7jl~g%YvGEIYL`Sx! zaCI3$uYHqLpRcS9?{luFk*1S(uz^JiK>Zdw`53JFs#$jnrV#J;qOw2lV`laS0-koyGI%zh{%>P9nrafH6RfCR%_6dAVkO@gzU?vgL}d(F zohF_uVUFl`0a(={ZKC!-fScUS=v~>xi|<&RiD>OC**^`}C`cxY?;x8UnTG&_p08=j z%D#29F_*{w~yAP^vRB!nAT&Jw_>X{MgzOf>7>sh6TTY1fU={K0E zCZB}rMBX}VSbR#H9WSFh{(0|y76!rA=VI#KWz@4BSTeJwdPMj1(i~2-5EktWwl_tI zP6Y2*gxzQL>t7i1ajw@u*Cd#JW;Fh9M;%e`?^+oQ@o8WBl0I^*V=IsZhKL~WO2 zg=$OCrvoe3oQ5J!zJ%I_8|8OC|j)4J!?AdPs_4{Uxvz6%^XDm1QFm6E}Ws&doKj zl}&a6w|y+t0ZK}Hn0MQs?=WreSX@xN`rpf6fh^cT7|UNG8)wZE!3aNC>T0^!~Q;RQY$) z<2V2J6y9kl_i$Sc@11zKNb}u|3Pbzu>%VP99`WT}>n^^bbFEgg=s}G9d(qgPi*3g$#I#CZF!+Qj?!bMJAd<4w>m*5mrKROk%L{m`6D_Di?1`uSX5 zO{FEvs_e-*9tU3*Sz_aPLN6V>nU-8YnbQS3jMVgWzG5dwN6Qg)J8sL=`4ntb7ZMs9 z%_+U2Fi5x{Lv01kSOD1my!?cGrQy?NJe2vCluSTz!Z##D9}JiXOr@gPwR;ozlvr;e zi^7B9337z1^Q)_{=TW1hqw}>ext0E)gs%mp4Y*>8R_17T5Qt=?KL!@9 z^LBaf&}&RWSrijRsjP&&sV8df@oF|8%{< zjeRO}Z3|^&?@)k}o>IxMeJdtt%Y(n^vH5sb-}=eTaNhB(qDV52eq3iyx@>{wBuunk zn{2f~@(4YVCE<3N{62MMBU!Z_!lHLktK2j)u?Bf2^2zSlF^AWrt4R(oF@1PMp5BhU zDPn_hj6OEM{=1FFZp-4ZlWXA6_+<0cr8ru6x_Q8c8I1e2 z_`OfwD9N=L11`Fk#9G!ix!atF$Hx#p=wpinO4nbuTM5{`@Fd)az5B$YOPNTsiyL_wnXqTkJOubX%O&wTRtHIcLLX@RFwdrTQ# zZH=oV6SV(b%fO$=JIMUHF>o;`y9l7CQr+DM7s-=#0R<5aZLwEw4!VysVi{!G#6F*L z*(yC+4%&Fy7o(L9Fv=Ir;d=rlv^m)+ac@-#tWNlLtgr8VFE94L89(q>kTEacBW+FY zAq9T+OqlZWXk+*TMRTFvG)^hwK?FM0FgR{UnwF6ztdM2vXa*fX&-?;I!U2yZ-0^50AzQhl2np$h*M zPoTT6hJF-!`KE7ES`UGU#mi;!rSY2nn2h^FdCtcbT|6*hl<7R-o1Oj1reor6?nA52@_^j zL7*M#`F2rvbrAzRTOv}@-}K8ujf$qS-8&ECRQ3f2f@8Ygwjfh9v^Adc|Hc@_QkZDX zN7xLt;v4v}yZ%O8mR;?gY~Ke=z7=-|`uL!_X_7oe)!1JlmiYM9E^!a@I9BPnmm$cX z;fIyT_uz`7N+Nukvvj|N8tip-RlC8vKrbLw*rE`qHw(b?g?QsPubn! zW%k9gvbrh5-Lk;qZsM1nnLi(??i@WPzP%utXV!3h_E#?i767{*%mIKX)|EI8^yJ%& zvbj1~Z{yE$PeEmr46!E^)PJAA0*BXy{$Kk<6sE(fQ9YWm0W+R#hf7d4?7|<^8&p)? zP!K!=;&)=Oq_oKioTm=8bpcRZKs%#4s3<4b2wA87?K}0U_sbahitkWghVo^^bWQMI zGYkoyUj46m7#I34`1{PQ>7?q9+;Oxu9iwjG&qP6xG@aQP{Zjhg?-|pJ3a_!j+)w1f z^5=qO-fj=Cra%cYT1qGK4`ocj+0Juw{VRKTwi1V+Xml(0SFq#!S7`cd6sE{s%~zkgp@k-);)ui@P~ zG7`qo>BczPy%RRX>3+O3z zSpQx*YUTN@(f>iU0M^a|H_0B11oEki9=?as^Z7yE2wxCye9w9brRD!|0g#{ye$v&7 z3sWD$&A-cw5)K%%-Ts@E_i;XmcY7g1HXkH9*RStVI@A2`5#0rLt2kJ7h)w{14|Imk z`~5zTJ2;{F72IhiF^kXvNk+#~Pdw_%WCh9RTe-P6h>05`ndPa*fuo>QZT}`9sjSo^ z@L%};x60SwhKA`uLJn#f$e$v0t`_9H{Ux0Nc}D|s04by`4&l?#&gvUA7{DX>{O8Ym zq}~@?(5S}e|NJ>Vo6&#r)(?22P>>`sad71Q=o$7+WW>ir8&R`jg8~(4eFo=orE}g2 z@cs{!Vi&&HC+S7F!Fk!1H~`xPIothPzqSsePn`p&ZK(EVo<90rt#|41ODz|#`-~(d zB_SgtK)S8}j|{StL&D58D}H+4B_=YQ$yNlV z#V*&_*cibE0B+~=v`6zB8yo*xn4&&mQAbC9n0n(2hh$BGK>tYaGaf~!(^gFzOgATK zjCtZ?5pFafdjUI?O*#;}H7wsmK5afTWvtl^DN3HhVUBN7S5ZOY&u^!Gy^{=Wy+ASe z^mxHr7kQH<3hfs_!N^t!#_{UC7BFcC7A}PkJ_D#6OVxgf<6vXYW*0FIDO8}g_x0(6 z@((08AV0+q6)*1B%{uAm==T#Q{H*?ih=AuQcVizQg9; z0iq5!^umEue8eCIuQDYgUDyK}A3xhiB!Wp~_y(2eg+Cb$WY2q`PDJpf4YPo zQ9*dC1_g1|brHj{^=a!0#~4xYPUHqrSSzK&qSO z?FBD8yG_OuhqA3sPsn$;9R94CHqVSaU&clVe)-U^eSAt@anU(WO$xJ=fufi8ixF(= z((R^A?c=o2te?*iE7v?mvnuhXOMi}>;@QVfa>$T{kx03^3L`F$zssK;jL6z4r!laz z2Sb=0SyXE~a~TFA3OSDnIlQz$Zp;U+E_52tm6cO9r_@SPQq&V=CQT}@eZ_rkdx#BX zxvaVjR{M?t2IvpFwB90a50$6qbCDpUe-?kW^t~7lruj7ePrcAr^%@H<50Ve4YW$jm zFDkMpk{YCrWa~dDpelw%Gyu!cqvgGYLHr{_VnDu2MdMrEXA~9UKAI8ImX(!l4W{mb zmyk2Q=lpz6)*0+`fc-Qa$jrg93_JQy2UBumljv0)F;SReR3%1jby?2$k9jj=9~W6n zslD6%*nSqd%%%7it7c>{-(z6lD^|`qT$=%;(dz1g8(f+#9M(UfVZ}f+h9`-f%K~E4 z3mEM6QQlyKjTQyq`PoT?W1vN_?ry>(JWN98#*{c0Gefj=bzDz&ljGyB zy=-Iw)(=(66w^7jFyc!tEnewvyN4S1`g#I)AhPJI{8p4e@*@sHS?o1TI`s+u@I(DY zs^i79@sW%Pt>tIs2P_u^#9{Nut{gmEmCAZAPQPioU3dfA5hfmg6a%GGZOAA1QNkix z)~w2g@3m0@Z`OXkC?}AbCPzI(ELA;ove>(O&AiRFn|%mHDOxHlhP7Uijr@Jlv8t`IEa3^`So_z%i(7|w=}0q@$fsZWfqm*j<6(K^6l)(C_3j`w z_rqm3XnsbBjF^y2n6s4%1~S;VxWa*_W(D?5vmg!FEeH34o!u@D9iDj5ki^Hr#sPs1 zjMY$X0OTk(Z>zh%!ilU>2q@Kxl{}=)ZVRJ6B^R{jxbm7M`RV^~K%~b>bHj_*mVe>i z)6J*tQm6qH4$EcAbcmtL(K;$u7mP-y`jxuIZNu4&#gGBin>3%(^7zW4mm2<%%@r=I zAQ*}GwATTr20Saax_Z*F&GlrF4DwSuAeeAkjNhZ+|gli*yA_x+cTUkMc{zfRBEZs`kJeh1fot-_Tr0?XE zbuIXO+WqR)Om(lmU5j=BIs!r3O(NQ?!fyJ3T7`64#p9TRpKSkI0kMFlvZ64+;xy&YlYts3C?c7*)@NyzHxpj0`H#VkJwEc^p_@KwOZISmt7~R=3wAVWTpuvpfgIT3DN==o|BZDOWm$(kzH`j$C z`--fFd5_QOsXz4(0-4#T~FgGdm3$8q7=E zgBzPp+I*$+lWM!4r7&+$jplPCW8vR!R@Q%I`O{HeS-InA#;p&chnw>!X!#z!wI?h; z#mC+lE?0L(oK>x%$GT&epU>bYr$6euRJtHCx%@HL285M_dXTTYFw31^dI-u;t9U9T zkpf(rP9PS5$mHTYUl!BIkY64TXk1S^2B)cp!k5?v<}>Q<~NK&LP1d9A{}Z99yi@Id;{m!ljA*1 zaZ7)}(DsOl)?7A4;Dp=pqe6UwW-0@4mwL(jhjcZ!%;>B)7G^q${Cs~m=-stj(oxtL zpZ~qcZ5G(H=0CJnpYq@%JyU?poGTK65akV7xPaoLvq%4Ez>+(prXX(pd{;5}b?Pbv zZI6x>N1qOy^vX+C4tl0wV4r|%(c&*2q{}fH8nX8~-w}u23xuCb!2*{{`Jo0{TOWG` zA1{@^UjblaudRjWZw!EmQK2{5{EGoD{Py$bO8I+;#)gIM8aMijEIK%QIuLmL2cI{a z#+S~a#n|`-R_Y1kts%*?mf2$_OFg_Z3&6!o2d+YQ+(EIZCEjnvP#iqGdt6+FCunBw zb4`hEBS?v=a^IVTLNfPy>>TYd$4IiLu0~UYtD}E^mNKxlBk&v(3CIMm+p&4P8M(%O z$(nsD=8F8Dp{Uua$otPCuk}Y<(0Yxhl%6kmZG(Z=?zEFtLbwi)tI8LnR2|?j;r8|? zcmP#VK_^Bq4-S0YQEWXiJynIyHQ(2?E&R7~6wsdyZx=q(P&1E!gcUf$VQ$}h z=YPHMb_3Qq$cIqWtos$C1;37}(f$CR+%K)~Vk-oPH8M zkL@@)i*??AB5Uh_9Y=)H=78l>VevMLJ|H-p_fw;}c47w6PwE}>&q3EZanl?09 z5^~)fag#Nr@!~#fuF2ZN=TzOQarJF`b|h4@J!i77%=ULKYZ;U3?5Ni4K7>bVNGo{J ze#aD>+Za0ZGo+^%kK|C6X^=86U*DqUiccFk|&!Cu8$$^fs!QYJW_|c5Fp26Dg)2n9f$K7?`sW5kYqL zOHiS{ALBZcsX|se;I7lULG|sau$oXB$CgXc_x@$X@;=Re0Iu=Ag;t&cxB0XkDNG8B zFCd<&fhV<06#}AOarrM>IhTT(W|#&Hv?}JPz~K*HL?^s(dWUofsQH`s`Vg{kmCK2C z!Y~;~?CPNdikMMm)ZyQoBV12;U&8=ix!}D+&l*rVVI&PMUp-uI(;80i-xyej=*7y) zXt^*w6~kHA#H{cc=f53BGBHYd$B=qmb8a#^`MQ9s7oD5YMft+Q{!Bcb3l?4#Y43^n ze8`qC)n*J9mf|x>_UDA|qhUR?>AnfSYES=4E%haD{hrQ{*GIxs{5FN}viRk2Nbj)c zGNmW+ha(YUx2wyzL-1eH>vN5AyWF#=u6euijK6doJr=vJG_dI@G>K4^l-ZEeKL*lO zt%|if@Gf4+hMW?9Y=Spw{OkP<5jOgb@DmYwK05@8Vpi9syA;Q@JKKK^NqbJnfsMKN zw(2O{wU+^1%^5XG{d>XEqK=GoishhUro37t9xpj|_2%tHno7dp`Kt{20pXZH8fk%a zUMPQibg#lom?!O5-4%mh%DjO24gKA=q@TJxRhR0+H{KAr!sw?oHibAW_zp9(Ut}by zPbr*XunoCAAIyJIkVf_FHTzs;R-mebp06t{!m+?$h)#~ne=1lg3hAIQa z8k`EcetUSFvg9ZET!tSE@n?b8VQI8AoI^<{wEqw^(T`32{IHCZ+FA}8fyIGTMCyRf z3+|rwF?(3qv||JX_oiiqApjn4iXJ?EkRtRp)DThNivoq|y5&1-U_yD9T9tv z+l*}y5eHuV1|Dt`O-0|gneZ^lxrwcaqZQWc8jhX=4v0#bVATAv`vcnv$1eah#lh}T-}!YeJ#GBZI-OO=!4(qNJ2GL}+NtaAV^SsQ^u zoC6uG|NqQMoc}Ji0vatDt8C?>&v|vWGSx(@62UKFIU$CF3`lD2Wyw8D3|=T^Wll;2mo=7&O>r!VvXU_^`Dr3m#5JJ8=(dAkfZQF2q!)dCNKwP>;xTY5qyV~iSc=tGXH1}C;pN3bp{1pT zWD);(y7lis8ZIb&2u!gE?mg<7q@cWY?H6-1t!_I6OVKHx3Nzk!A{L5JdBYo4rG3>| z8vN|J%=@*GJe}TzD=h)W3|@eZV!3JS`}!R4FB?1$uXD92UQ2waeN8@H#^&}FRHj8* z4IX-dDycRUw6%+mP%sb8CO9~Pd5k`i5}r-W@4oh9G}K|?O^b+A9vIe!|2F1)StG^y zl)5MncyfML_=eLAb^qlCjF0)<&z)6HQRW&Eh-Aq zCxu@~YcJWOOwM{ppm1lfs=IgGtE#f#;wQ1@@4r3&F?f%DGQ98sM8d!%8unmfK37Pc z9Je;J+`jty;!c#AXGxmyHJao$LN_*HTE-2>HkGxps}%bZ3ft3~o11S|ENejN2SqCA zyv^z?A5z-s%DpkPaH?)VajSB~PNM1An;N0e57dVh7q21YRxLHrTUR>T0v2zoaxK%ly(S6Q=2Ht>QgC9slWJ2#KU_5J$vIf zHdfX^AgqCvcQ=yp27DNx@!khtB{D$I@#A>;PHvz;DFcCm_qaSt>mm8dP!<`O6lNL< zSl`c3UJ?$!Lvr&^$e5aUhO*vGqA)#@@g5gVLyfcX>ZdY-EXydFj~M7p?{ad6K^sAx zHDsX^11C9vlQe4dhyg(RK%PVmjf?y9+wEXzBs4Lx>F-d<8kQ*!CAi3kd5 zbZdRElc=NPy*Kf=*uoR4Dy4Rl`cyQ zM3}KsQx-B!XPmHawQ3eJg0yaR6B|?!FKqNbIzKO}i3Ut$2g=@jC8G#S9&<(HM6cLm z_Ws%T8b1mXw|2iiIebXpy5^$OVGqVIv4?6}Z5x_KhlzX>B1_F@WX#NRMJM37GqJG+ zEhojlvb9ArI(k4Q>zocs*FFW(E0S&X^l5`k8{jzLz0@~SO~bupoz98r`3X7P?C!>c z1))B@#d?fv=YR()BO)TQSH~Q7%d*k!t}>7_qJ+k%B-p=Jr^KnU(<*FnLO_I}?sX|} z%jcGtQxvm^rHJqOoLA-tW63|2nElMv2e!|O#!TRc7DOyjfmRb4^^RmkpT05zA$n#@ z|ES%8(^BWHg374f{baNb47X}?ZsF-9^y66U?LGP@^#LmqZk1vf?;n+hP}g^{WOcMN ze^1T!hgzj2?GV9X&LMm59O&h9JdmaO@Ur&R#Gvj)ur$FvvfqgOM2W5kz{v4EPkHJ8 zGVA_>jK&qiJ5PSa-*MxhZ*unAB6{hrxwdJcQ}k3$h3<^tW@w_OjAU#qj2#o3F35*D z!hJ(auXYs{J}8u!GF1>FR)3pq?=~vF)pgt4c(t7~xR%((oud6^B~U#DJN^KBtZd3O zM0?pR8w11M%j*%nC6QqW;8ruw4@`di<%Do@(SdOE!<7e!ver7X%T$cafR-+UoUcgUefCE3CU7buqvB!AOSG~j_S&6nD&?AQ0FI(q(s$?Duk-hcqu(hMAu8Ov zC%KU8z@Cv(T{wQZytXAK@s+ng-E-yE&0l{7@*^W-$7&HifeCT|Idf77VdL!oiA>T) zR?el@$>=vEK|TTD-OgZbs)`rj@1O}Cm;wS(MHrY2^nf1v&^X4ht5>3g0#^*WjxO+H zg0#NizxU_F#`LXolYVtvc zcT?5ZC%B!sUmww$+}g%Rt-FD}j{e4lu3T!ZSw0SnIUY!No!9HtG$_Rlc%249c8<4j zDilHqD4f3DYr8DE&yvr9xsO|dxF+y)A7z`+ICjtTqL0oLi!}9_7>>d%&jylf^y{4H z;!hP2+xUe{ttRn=T{8t&)kfsADQUKr(m57PiEG1t#2ZAXvylK7QY%wx>0-l>E;Mp#}H{O-y z?Mn7oE`+9lAP+(+_yVLrP5&y1+h#0!ly%5@jTja4jQ$ZryM*V;(J;>QFLdKImAQU` z@fNQX%!pIXirk_&y3njzXh-}TZuECuR+RAN_L(TQ%Xt0Hc^z(Ar-yQ86VgW;0^s>N zMs06Ea(uJVr-bM2{3yC7het{p26=dEWbfUQzo~DG;A~{5n5dpzxSaLn-p!BM7&)$x zbUQz}HJVrCa?Pl24|@yeP5Ps)y7;wt;LeL_dY8R5-`S7qqKrhTbj%L{u8P+b`TN^2aFm-%L#-s)B= z(Zf17p-H&CHcr~flDS50{t#4}h)O%0h3bNWKuVgapL<|mIBeGUVQx#(WHMGv7cE!R zxh4py4P@4D<|;P-@V(bguvRs^KF*ZlAlPa9M;JO*dG3Amd_B;Ruu1;3qe0v5R@YHK zM5dd3?ubRoK{du=x4kvgC{t-Ghjn)i?eoPHR}`dl^pJ5V`NmbcpG6?WKyk}Q0Q#jy z(stLzKa_5CH5lbwwW`3}Vg9q2Rlir#eqhGc3vt7W*z{@TcU$F5mptQhj`z#HdT5UP z$TyPWcZ%4ZYQ1%9z3H*M%v>Xm#rS<$nfqW>pRya%*MyvX3Dl;fctD92gw*ZP()Izx zQ2gV^jk z(frT~;0$X6U5xxyW2d38z#4o3#%e6QC$uj#3}s0(WE&rxHO5vp%ewcw6)?4!ob+C{ z=Po;TbP-}EV9lF(ZI6C#(THwr%Ad0u-Pz-mWVBfspv6>2Y2rXjuAdM2cBkiZxxl7Y zDCsly>h;leNuf6WD^zle3LVuYVWnfWi#?5<@I9wOWjYIdlSHg4w*n4-G^b|)S?IBm zY#$9gFA~PE)^Vp;mrnbre^X#;V&BcnMbH_~nY2%89>p*dPLOB}*w(jltXEOdDjO`z z*s~@$G9);93n{1ZQC0nV;KF2bhDxkB?#8o;F5ciJuq3KrWO~h1#C;pKm1c+kl56A9>J=%{n(mupKeoc7~+PJ8d5UmTNF8 z(<`c&GHJd+NxAmhcIEYe1w;G2^KBj!A^MGx^ESmlL>67C-X74h7LK~i>@bFsre5vv zS>Y_C{T3QtKob&gD3AYkmfwm*w}*SYUuizIux$#)!S-pN{D&O-$&}Hj z)Puu164hmaqb>F86+UWxtF)NW7Zz-lCzPX?@)s8SG+61HGx;$gxnY0b|es!;}u{K+@<+4FkL9W>3X>Jg&v#51R;d14-J@=@oZ-EPZa~s=-)0bKK~Y@ zyN`>!es>eU*x&k{iNgi7ANMp=+)j}HH-PvG%1b!K`WoT1VEFVDC|HCqv zh{^cqkZZd_M7=t*;Lo16s0UJY%DQYxvu#e8eBR2F(F6JV51I9rouhWltn zYqOTq?uc`#F@|dtlX8N5b5rqt@$adLd#~bVX!X-xZPu8|eb-&y6Lc6)aN4S1vfT(d%0tZKI^&{Pw($cUYJN4*#_Bu;@~4OV5}kd^pqs}(*)AU^0%Ng4`LN@B9b zzS0Xm)?+3=wzEQY;&oEec>60bW`Ffywt@2VOJ0f&N$7vGsFHv_&ZQSv`7jR{SwI&J z0^cAmy>4=|ibci17vh{+L5ucAMjKRvE1x(6S7^airQ}+Z*J!=ta%f!RY=h`A@Q0{6 zVW7l}!A0!%oIdRLYg5kyO@A@H0H+JCKxJS>05`;)F6Z2}!4cV!bHQijsu(UfU>6N&^3i>}LtW-L-0EdhJ|S z*5{Lhz?lnWA=Pg%m-P>vS{BCO|Dtv7|7>nW$NUNES2Wje2ek5WXdUrtXBw6CF%c3f zu|V>?PyB3QX=xVt(crcwou^SVnQ0Do+v`(RSnkKi=;7f6WtC?Ix4<9o`1ts>va*w= ztjsX>Ynx9A)Lr+5E92YmAg;NzxYSmT_ZSDJZoJPTb`kk5JIK8_vd{eYx^cXe+Ji8O z+b^U>zYS*LQmK6#XKa0vg|K)vOOTQrUoI!;m_$HUyWmLt2~A3SZty+c9|GNzKW|KJ zWbeqwV7gV`@nYK4D)L9aA-U%D^)jJNo$Spc?+4te8wU34!n>KLW$#p5M%%v}jj3%O zSF;jcx>6J5WFy8zBuh){Yt44itQ?y5(0kj;MNiF?_Or?Jsyx$(4= z|A|3p62C8J(Z?y!qXwtGZeSCF9XuU?ap&jG*~1SiVQ0-|fK@({31`2YST(Fa$QB!p(l_v4y-k^nWS5UdWU$gpnwg@A8 zXR?ENlIRN=J}mj`V-9zsTa3eRp52W0^Gg)+**jTjo4WVo(N}4kFteS8K&l(Bj*hip zkhi_JlUh94INgMCUcC@1I$JmPe*R+1Hf3b(iGD)m!SQ~;nZ?j=jeCq_g&hBnrn8Ky zvTL_62-4C>r-XEgbhmU!hje#$cL~zn9nuZbDM**Jba%s9yx%x~mDudDpSA9o^O_~T zZ>3OZ3H0Jvzua0r6M1XeLH}6rqV334WE~${89bz-`t-5o=VGbb^QMfY<1oZ>y#cC8 zW}HAwAgVu9+fU_%j}^saob7@19<>W~+#^_bkSPWv?Mh?YfjHErY@C7sPLf$@LNS*bNe#4@VWClOC+2>uSfptjsE(fL?E;x$G$W`+!R zR6jKze=zIgVY7hZly!2$eHTfD(*vGrk>GoDAWX4KN%7am(7ZOT1@$L|lZZ(W1*OiN zC*l&yKiiv`fHS6Ill$h!Ln1AXYT6LR@OhVfU)>}M>c8fbHBu?Hw)}{Rlx#SM#bWBB zSmVD}2F2xM$jIeOg(%_@^Vh<5m~C7fn*H|B(?boIdH@NyLwLy07%(Q2Y9 zG)bz~m%=M+EF>o8Un)JKQ*%#_{L5kt7Ue)pSzZZA*emk^BL2eR%Iv#A0>Yvy`AkCm0sh8T_K8L)1O$!qjr!c%eP3BBAYN31% zZF1<$P5k^bO*e@as+h|K&hYUkhr2T}>8C+_LV0=pZBq^AvW7y3HPf!Mlj>z;+RsJR zw9GM7Hn@@}4Evo_KDu(=u3iW!&0B~3iob%j)yx0pjy|?oD$#JG{Hxiq-K^1JSdIUp z70<6K=foH)L}nIYXk=u6nr+Z<3)}%=@J3W%oaVL}H3w#;dVsJlo#q^-p9Lh+o834& zLt9G>_`jl|>bpCZ7>R8?AGMq9-^~;l?Ls|HJUrx~yzBbF@IJ$2)Bh8ft7HyTZ0-MPI0S$Gh-x;KQ26i0AM)Q_$)wr}hNU^7A@q?=-w zyV#YXg%ga0_hsi>=b16eXUN{L#m#nOomjvQ-0%<*Es*?WQEZGDZ7h%-YIJ_7%=DVY zDz*B#0oWaZ5xUswUfKmr?>btwq06TG)~IVxZ&IOi2!ld@X)!E%Ipz&sYTU3Te-ZWl zI;k-M(Z3zu#*(Wq*6coRZ4efOT8 zgCGcU0~7)s#MbvTH)S6&E6Kz^KORhOR(}3}9jC>?xsJE{Fr;yN9>$yd5NO#=7pkQG z_G}*-SeLd1MX+(aGVGW3T*61YhtdKOCp$W44tDvFx!wiru8;{x(MOnRSKf&{&R#^r z*(r~as=Xw9gxdW>EZdB>0TVi|L}q3{2O?t>woiz`{FwDCq3ZqzHnxN;?|U@gp&#QU z{JL6Ij^?@b7{0PaA4o|-LuNjg3Nl6TRa2J7j>n1KW{Zc+N}=Cp<$NTJw!(P&-u>yU zja(DDd8steb#4m34XV$HU$3bNCAgOw2pb{iy&HjFt zeLNhy0$1W%WPxpOQUWvNhDW#vUE4N(Kilm?k3?HYgiy?z#q&3V{0I+8-LX#50|ZMj zSz5?DytL^C^~ui}I0J=8=$ngIy3{wEEs)5MP!EYsSx=H^<*Kkiy)Af4i^qE=B&pyzYG|0jD=v9L;mvZysI9?Tlyg(v%hpl?#ue zq6=|)cK+?#I2_D%-?%b&*T?vP>1Tv3cRY3(abIeDdpt)US+dFfBT>8mg4jyA?HZ#i zLCM{IJ>MGo9v5qABli(^p4Fc@K>zhtKvu7e7@=!>IYQRyP~B5G-4@;?Seaw*T>F^%p!XQKM>2b&57Pal{|xE;TP5Ol0< zjy-gIYJU$|T!N8Ev!^@P73*iMABQ9zj~>g+(#H5Pzi}#4js`|dvvqHn?wwE!z>N?j zux;u-bao=@`V%E%6a3W|6n|d-YBU>0lrJOnWW{zai2=4H!5b`yx-ShetyR{+k%pj5 zPMBoeQT%+OD%#BV31=$tNIB^#4Xr1e>a^cNqnxmRrTx#{{kN*(-WoXsL-M$5S$p@e zLIG#T59#b*hUt0EXEi1r2(+JCdfzf%6rv&II26qbyuR%ISaqJ4GfG&K*r?W;+tUH< zze;j18&&nx2zH~?0S0cjK0V4oZ0)Uq_S@9(qfJf3Ro)#zR##1krDq4{zB&1>W|Ji>rsA>n1+^D zm$`qo2G2W z&5$z0;5Og|{szAP7{1F<4zAEbOTHG)a3!NPfM11*JO0kq&3207iSuDvHoU$rP>uP0 zyQw1k=aZrBBhDql`z7$nCGs$#ulnmj!^;(9n#oSt9g_^l-!1H^{FcQ5JIteUVoE^B z5(1vt5Bd%t{*)bk*QD3D_D729SiiP<_^R%^)hD~}wQ@%yYClJVKLQ7gM*Wxdeh`{v z7XAcWVIzkN#QI>(4U#{B7Ng1B3#5?DTW&mKIDLxx%T4slWW)85ktYfKN`}nosFU}^ z|1Qx8!6)>MZ+K^7oX3*a@Gz1)kG{ca=t*d`E-{cCby@6^T>4eg9|8_-+Dw^60165r zSK#YDA@8>w)E9De$uh;SMowz;4g&?6lgQP|-R$htwP`Q|-FJ)vJ7~iOxgO!!_fs|@ zGOOMEHk>g0Mu$OF&#>&C+W5YEkzE*E$mlV`WeIOm%+uiR582STkb_Uh$dtK9AkPAo^)GR+Ax? zq)N#T2nzk#KqeA9(~dl*cr&Nsqu6ToSg}!?AhAdSWWN;jzwLAemzL6i^B^%9=Vsd+ z5V2iP+Fbx5oQ#Vr_0|!1kfx1h#!RqTSS*8)#WE60&|Ckkt^Lm zZARwtKH^!~OF5-C?~^#3hRScC8r!tC!~AIZT=`6L7N|$|@TW9}#Hwf**_jkm=RCOS zMe8E0L82d&4Mf*;VzoB%sY|Y;#ralb10h!UnhCoDr4ttZ4_9B8)&^P=HgH~;lCOhn z7zrjsFRMdz5FBjm9Fd1O$4j^PTl`f2w!wQ`-=}>E!@Lr< zPYN9$g*G_7hK-;t78VlHXz?bcIMen56L4okupifQahZu7}D6 zoMFQwL_}uKI$yz54>kKQGnbD8d+QmbdLNNeC`E)jM;#qAN?5uc#e3`JY0aQQvu|`T zdeg&G1&o)*H>y@3*0n8uVBJE8G3Urqbr^ug6-O)zYDC08!n&yGQbmHCiq-4>60LKj zWdjHGNsW=&8_?yqfDWbCx{=lXpTsNn9|#EASDf}He+Edu{W~o9;l&KS~pWK#r+UI23le9*>etnQ2k@}@o7uN?&P6lc}d${lJWui(8 zS(2PhKtjKDjZIY_c8Oq9-lX~KDe1#CP$FG9OZsbkP+Rrg_KGSYw{{{8K4^=WH#fYG zJ5fodFlYsjDv1XL{$C)qD zIyj@gN0rvpkyC zd))nx3<`*$(+5tyfwZi{4KN9mwBw#lf~3)VbG(sB$9$q_(tD9rjj%Ubyvg4o7(1SN z&RnX^Ex0ncpzUWkqeftkP7a1J*kkf721wp0i%2;QjneL#}YpdE965t^F&^w%g!bt&6 zw0l&u2%6YB)n|>QTn!?k!=7R>aN6J6myvPsvrH#ppAZRyNtXOGxHC+dgIzDo|#CH#0cN+ZpEiE$Az zT?-9!hcBm=<+UFE0l_X(uxj%xO`NIRrbpc<jY(AAhuG%C>W`;O_ z=XUBJyT&|(RUoDue7Ka=1LP&W~ zeNXw56clvA%x1Ve`y;zivAVF7+-tl|D5n_T!^<2}vIa3yKWszHmsS@R8py~D)Hy>@ z5PKoJ^Y*Xso^kIWc@||xiNhW}Sb({dT6@d&6(B1|6L1OvKFVMBEYPBfka3o%T}CPr zY+}>Y;J~o2^_NWb43-6D>mSoccYkloV>*Fsx>l;rY7KM_Y<-?yImRa=s`kT+HCmu`*df7>1ycy z0Ajt+!7|MtMV8TjJiU*3Y}e6t@rW$c*y#@d;VJt=Ih@vO1w2G5-133B(X<=^M6{6u8Izm_3n75Jzo+?#g&Yalh(hqV6 zK`@PVX(!?)w|ZgKWmb|43x^_53SAO^3mB3V;+NeIDy$<6AYOq#z(dZ2gY?&KAOomk zl(gyn-Rk2QGU3qCxj1=jg}$D};#zrX98}>yfwb#%H15iiKRbDBUXkz2(>OOqoA%gu z+-ev`PiEDo-hYcW>rF_R|Uk6F_*pD8kH3k;iSDj1x!Ch2veqpq-vDlo>}rJhr&H z_h8iqV&uP9;9Z++478A5K9F8yP`fBWy)8MLqm6#R=UK0Dsb7{nXxJMK(L2eipKA*K zIEFdKJhqYSx6>2E_}SA_fL!a$&$j6AMaX8uOcorZWM{3mg_K8c&+e{a;dMI{bE1j^ zkHtICE{;`>k&Q{-bW^`r+};)wopy4b_SHwHf3VZRY_-*r3UDTeEYKa(15Mm!hRf;}uDeNSVloG|U$gBCG#;(NSus>kts(3mqajIA-JZvoT|KA+ zuEW3lM#e43Q19TBSzoa`Hq+M1#2{K>EM584JNwPG(=_QOgNIA7-gAWShQ+J#?KT~k zfJVb6bWCHC-+&F?LN-Ss1Nf~WIbQKlWi~$iyNcV^Y;BP+FjwKG@&r)bQF}q$1I5P{ zEKBoA@vFt3CCJgOO5>vAT;>A4Iiy2eAI=8-N_!EXptUjJ{O;PuV|sr@zd~t{wb*BU zfgELt3dU`}f2gXJ>|es!F5k5uyz5pqcp8)b%)v?c=CAV|MACh>Qol3Takgr}GV&_j zVpYov02?BcLHpLqN`hCQBn*a0Uai5+byWq!{b{;3N*ub;1dXw1H~+5%Ks}1%D1;$q zM9J*%ir1(6R#|hloqoh}aRpD__%lv!hqg9RhC8oSY9kpBh@9LkgITg^tH6KwSU>XC zg6n6);0@lR_Wl(Y18*%Xwv6Hk!MmlK5zElH>)*gIKQ!Vn+QDc2*A)rIPMa-7y6vq0 z;Po6O;&nd-gsF*U2a`h;+5}paA1}L8`B5p-{qbg)9gpu5MpRS{yH_d&K9XDWxP>3$ZNqHS$V?jxJTaG9H%^pJNWqW#8|A-QVWWA zO@#)Z7e3Jxu=0=~f5AnrP;^1yJXr`1LUh{Wf}#9dLC4=x{h7A3byo}DGX zs^a>jx!)Bw?{8J=Uj`}6g+ku4~2qF z*(_D&pFEB(y0FbnppqnHnJ6gwELRS1wNL)!Kmn7SeQPBMAU>Vb73y`H`Kmfmk(S(9 zp0YH}CWf;pR1B}DsI=@5w!-sQ`ALfq>yHLvm;ot1ogt)rQfau)G>aVs|#H|cCa>eS+}ZxI$OMXlvv-44F*V`l4phw1NNGV7JY zQ20?gAig5nXnCNSq4JbT=*69YH~ntYtst3_9C^%Z@ruilt7*+`oh!Ha|@EIum+_FR$ZhSFB*OMC4qz z$2z2s(KOrukP}i;a9_Ei0EAbj928~~KDaR~`QV?BruTPK{9?}xY%bafaBu_-EKms09Y$+6}3 z`w3N%3sm?oamSvqy7Ka&Ko5IR#>R?e-DD`0B6w@dB`5di zfcoK1wKPI1I?3Z5ZlImO>U*0cJAtFXIJ2kz_xxERWM1t*hZ z@8$W>I{8!$9(1vHwpK!#Aerhq7KMPGocim+zhVS))JRHE(>2$NT86Z7G&tvhXZftYY0z>Ma8OrZJL$!=Z&G{KPIg*TcIOnvcW5q4=7UKU6%ECLI4+K z1L42rD^y$)ZIL^FQDmXptJva~CdFNjhHnjP>~dX@%F+&dC2xp|pqt;VZV@(v zD5!ai?#{Q=Dx&9pl_-rnwPu!=OB?^bhiF{}Fp6}*WZ5BDHGW~|P^hxu&Y=W~UEN>;{d(;;efe*V&iY1O&Wicy1f@*aH0^y=h5rfVe z%~#V96?1a`RMWZD<_XlmoItF*Q*sW)Vys!AgR0@Y39inG@}pRjeACF{c)S58BR`mr zA2<~^&nACKh^EaxX2Ckz=E^C1nlM;eTSG9q+da_6pquXNk+DESz8rQ4#Klz%sW zU3-5bC}pcb3>nMxh+yQl?Y;he7VnZ@d~}Y(fFa;9e%35NWK!ksf@1zs`^X_npy_^d zQ+AYyhzNN7p+OX&h>*X*%#^rFl~PwOW4_DsMj0_vvz-mo8lQHV~+6-v&` zg_4K5e8p374M7cR42Vx+8C2K?FnyD?N}=6udBHjv!ao;EQ3eD&_wKt@F!0R4&2Yxb3+wIN7vH!=d__n7goyc$4u_u zkXGrqvOhA?O*}t?sng9*&5D03&iu3S2E$RAnK)$KB@A@EaaygsYr|3+1y=pf^+N68 z1+?&Pm(Rhqa9=>@*AorZ+{Ws{jm!C^OB}2mV^%+PA7we}e<2N{4hlc77UpjHI`=Dc zf3}>qF`qhcy_v?#K#o2A4x;~ERF8S>6!m9$2jW)3_jJ7FA7f(Rvt6(YPFJuPQs)!y zUI-N7u--rZ=$$9EHWW;u{IBsCQm3OTWXTx7r;u?ZuIZpu zFsgKl@X;%1WN(`{8uD#|F)d{+7V*hTZ@m9Ma)2AGcB?f|xv*YtLBqx#04xkwfQ|SF zct0B#W1Dmtv41bBvS}3Do+_mZLi{j&){zWm4}R`mxh_2u0);&$-wgtDrzgtGSUV=q z1A?=|#i*n*1tGT|-j~u3 z^8h;_R3-WIMsDDIn(%uA;s#7Hv5Q&{ny3uHBvv$FRA!)HoF`Wp&9#% zIwbyN`1Tbz?jJZwvXH9~B>bk`#_PjsDrO@pKy7;t+^d%R0VgKbgfoV2c$JVlJv3?MQI}b_~iFamv*EZJ+M~Y0LLi` z=YXrV-ttxhPEIp`sHkLoGk&M66-Sc%Gyi@}oCYv2_qH zVW#ghkXO7eKm9%ekLU1PjFuMds>Y=IB~`r|^nIPlJuwXIij@WWvhqou!g8TzdH~z_ z$PSIRPRa+i(nDKMX%XT@C^pk}d^A~Kn@iwvdo^%d2@`E(mEvLFx=xe`Z+2StJcv_6 zvpBbAU};V^T}oq#Ilajcn%>Y{`0JdSc`SlXVOiJa9)9LQY3!(#?Vf)}O^6!KK zAEqllz@Iv>UZDQ8_9!&Jvt|Da1=&Ic4H7epE1i|2$th|3*tck&w*OtC2VXforLX7& z!#wmq#9)3;P|f*BJk8p@b-{r_v>{xCEJz^Z;Ml+5LY{T_h|qX{6IWR4>;dzY#{as| zvmeSmaC6J-m)2GjNt?R`SEDxHuOkuIs2l@FUm+4G{ZXJOin|^J0U1mw1V31SggO%l zPD2lyW@faomt*-DJEQ~)EQavklZz-^*?jw6Re`5#L(J3a)SoA1!qe*5{echJ0?-E( zV(01KcdvTFdwn}{ZEC5D+^=Cd+`>|unyfC&S4{9k0wunh^HHD9%qh--JxOeNL>1|7 z!yfd?=ZwHWS!AGPIkcpqp*g)uxPf^UI6V%?kKDied3hwo3p+tj)KnqK zWB+w@)pV84)oyo%$98YNT{DX@xa&v;b$v2U4bFpt*B>odJ1u|`zHV01SiiQr%V__>iD=@|S%N$+m^n#sOmFZnRp27Erb0Ur ztXS99iJ+m&&A6Rw#qI~LDXVf2eBwotOKV8zNH;!D`=(=mg>^;?*I{4oPyQESGHj)i z780h0EZaddBzGuB-aZ8ZWHPj#oSE(nZ3}nOd>1*w`zJ%-mECMi_1As@?X3?C(Z$AS^jn09sKS>pO zf`>>IPN)|Vk=dIu{Qf#m9i^;z6S#yYy!Q}3myl$wIVOz^$V*@dxvlL{tkn=6zWUOg zn!`Z(_NVGsh0C#!1r`bAqcNX>8JavT}Q6hJwk47ykuZ$ zSzo%mCdQzMxVXdGFTc(4+M0cr@66ac)%UTiC4-U$nvNfr4GtXctTn5?PC{!P-TWgj zh5Zc$Y*iiC5{oEShpBVNcRTcISF!h>rGi{dpI{CqO<1Je-aO(r&n7kqx3@9tr>!A> z@sl=U#w-*xCDiMz8g3c$E09lz7i2!pQjM5C+VAeZr6iYtaPmV6WzNPNtYZ*oFHK^n zfQJ!Cn)m|#u{n4ab~1?HG+7=elgo2#vW8=(3RO5 zX1k5#um8G45-UM6E-A5r+_6FgBvJzuCeB5|`DwFTPCu7OLEE<8ZU(o&jBF-93XX@fs*9_zgNA6GsEqo1GhCO29Z{fn?E zR;wW>oe458WIH%xq=6tFShWG6#F&E;T4Zcxm_O7hJ}h+J-npXVFVsDxft#ZabQ|*J zalCw=I*3U95qIB_aod(EF?~&tG<=S-F328&e&;8>?VV8LwU3LJhW8g8mHJH^O?v-D zv*foDWo%Bh;RGX?D?{6N8##7b%Sfl_H}H|@f}U>&2u8}Rz$t!&JYD|Dj*jaRUG3p* z_*K!U*9JTK)Ka~>^P|SY3n(>Tv=byWP(jHIK!YKD8#vHQ;6dbap0-_7)H_*ee?0BE zfzWc_D*)UoHK)!}pSgGd+pJzXvNAp%R3BARRFpO{qTu5j_K0ofNJ>DF$^AF)jZWr| zGtJiGx45O@9HCExCHN1bFs>o?YYQKH$Trfqq&jU4X6AFBxbrto>ut0+JV8IUlJQA& zo^-ZYQicP&eH#Kqy-c<75u!N}4BsSdD3wZ|K4sY6J)lni;T;m4yeUo!VY5RjPOu~s z-t>%1{2=`LF*g;O+MhuWEjU55&ZC!I+SLRtOjxfda;0ylZkbP3ie`a;*d!Oy3HEQG z1QER(mqNB%lYng0X7;rv)a3i~WrIrtGC@I4X7CWk)eR30@tm}3klD4aX;er>=k3J0 zOqniOY&uRUGBN4NinstpZR=`~5`4#n@v!$@#^0smyq4lwr(Z7Jt~?vsx^!m9!#;P* z>uxLBC}_Mk$eGKn4d&cnk-vF*{^|5=>PM(NT1u0Yig$DO7Anav-M!Nd1U|eL*V|x z&LomSjGsgAqoTyNA8Qh$n*`%WJwRqB4mz;0_U4OCFfODjL^rH9CoZ2_XR~DT-pPzQ zS@;3!LDq+6lafzq6MK%m{rv#z>fb@}BYM}-^&PQL?xjDy=?7-q;}vqtCy+!;2mo3gJP52TU|a(=dZVn#h@M!BE39? z|CWj8lDE|=l0a=ZSYi1|W57pYBa2HO#4k0Bha{)Gn~QZAWHz-w75zQO7nYBEx06M2 zxLD9OCYSnYVT;f(a2wvT1Nj`qG0bG z-<+@;Rr;*{$JJ7CUvB667UOfUOYmu>P$(YWYR7RA81>HmG+`!C_sP}V6j(~G_+Cd-^zP(W zdeB3)GBvBec zR^?Ywk#i`0r*AsGO;JnTXpR;!y7Xy#qrpOb$mJ0B8k;LbKVLgjMOnS}yQcM06)TG~ z4`PM;E0;jNE4U!W_ONCBoR;$RLs}d1!{14#xU^7};F8&h-RlV}8yGU|sg&+ecN9>t z2IKy{aSvC=`%}tBQd(7t0J^p1!H!}T;)b?Kg+NvyY|ar}!NjDkSe&XEas78xPu>e- zzhb7112njh-p7c}!!)JJ2RAHuaF!xoP80i81;z;_iBcND$`#Ma@&O6DA*|r*G;~H2I1$VMO)E%dNwFO$}kg!J)H0tu*<=oK6T(LuwXSQE@NaVIA@$55(5# z1IRjcS$Vf{S^v_mUse^BHy=?Tv^xedp};^g1ee&|=7dPKp@qYdTl+#2ZA60R)By6D-F&--X@jX3oyu;?jlE+D?eP)9L*KTk@Iklut|{ zx}BAMe{Jjm7ZKhD=Z`53S@}$@(7h6SES8CvZiBi5$}|hL>HT~-keby( zz48SLy}p&y#HyN-RTZPx_K6iNgfHml4Qt3a)n_0mVYQ-AYpX3nyui92q;xV zul~SlKjOBNc4R&0LN3EAQ8;<%N+gHE>!QsTT4ZANr<@jyFK#-PyF&Pn^<7s#QbryQ z0;z_pTgxo=)bR+L7sqzdL{b^k*Alr*35~!Sj8oh)P6jXpvjPxWIrWrHeZ%5{@HCYC zjjt8y$)7}mF*r8e-!NnakImUBTmp{HXx0lWgq@uoKwWLMopxUc9KaizpK^N9Rd>FK z93R~nEdE^3)0A$`6QE>c!vg4rE)tBKPr-z+_OBKM;9RXPEB|ew_vfJL-{>*usa6v$ zv{+g5UC4#q#TDiC^=A?1YQ3#3TIOQZtIp#-cQ z(l4{3jOe1G`*cNZfKPo*!s4+12M0LPJm-UXU~#@m1tj$2sciLr(vXl*gO#iPBBIoy zSqls5120vhQYKpg7$0S%$VtgU*Lk@HZEt3~RoZ@3BErE>rnGn{O*;5|bUL zQK7f@w-_2|pO7D+xKR3#A7c<8R$q;R6vUu^Q9qqB?KPdr%G2LsoS13gPxs4^RH`Fp zId^s(2JCN{S0*VLcOOOs6^leo5~w{B(fJUg2MfHE{JD`nozNNin$1aM9nJjB7hK>K z+(ge+d7S+>CGAA-%g{24~>r(C{!BWxwR;E8rbES!fHDR|AkH+HgGuVO&%>vcm6cshuIn+`BR12e@t@mMi&pMX(jJ7v7joWy zqt|bL?wb9a36nX8_aFNpx>5K`!j6}I*w;XlbWYOO^oJeE?;y;<#|W^S25tyo6(8#Q zCp76WEW3X;RyVW^;&ctpQvbQ%lzmcHZ&}BYVkh`OH=jmrz|Cr8NhK5@n{H*PqelTO z7qw2h$RW{K3R>>xCNI<}={2xJ~w?y$$ZNg;pl_6Jym8C?jCjAc; zQNPdPUG|*PpjIAnvTCK9bGp9+a z>PN*2dkIoH>pUdm*)Zxy3;QRMJ$KM_liKz7Yy+YEvk~f<$LevuZlkTx8~m({+%`pR z60pA?A};%ZuU$p^>gNG=q_c%b-m7TH@>%oQlTkyk&wupf;WUuu0d)Z>!G`Tw(eYw;|2dGC;IgS5i$jny-6QTqZe*hY0_xm55jOU(SXi{XKDu*a_qg+*h?t}ShZ^qS z|JMR2bB!f|tf1J;Oj%D)PYb~EFlby#xq4#o)?DWhB>ZQSFJ6Qy6wn5Lev@0?-3>fC z$duTMMioyw3#CW#@g=KN{|(c-IZXB|ayVIN-CL3gnZF3UB|h=F^AbOaTiRKZ|eRujRbi?HB+n02g&saK^2 z?$r{RdjM)f`J;TZ)x-D|q9Jls$-Dat_&`3BI%#~0IODY#es34o%BelD-0_zh@CHK? z%Y~Y^06_H$tncpW`Fc~UQQ>*NM>T+PK7VwL!SY;z!q3nD`1C{=XK;IW2Pq$$HarYV zDW7PUe0xd~>=Ki(kvwa7z~f{mZA&NZk!RIXWBL|$sSJPTwcPw`at`&qNfB-|L;ZpC zG9AJW3QxCFrE}IixPqUpL+33GVvJtKS{(a&(L# zKKNhOjkVv*(C7HBu^Bzv!V2(}Bu6TBfpz;Jth0)$W93LyHy?cVANITcI!gNdj_e)# zhn`G|$wNi=gops;B>n^CDuyJIJQs!IdTxdW^LSDee+2lrR0_f(#j z&rH4lYTGCOt-pe0$SJWJWM;aUKDW4Ah|2F1uU;=7vBNmsv(8JQKL21ch6ri}RxF!6BQsowhlhvH2C!xq#A zuL{wp5{kCxty%Yn0u3+DJd>%1Vy+D2ybw(JbkjO$oyr!ZnUEv}ufHW*8XsaM;t9B& zBYS&ALTXk-jYOuKZ+6?-;99Q4xahPcez7H$g&VvY$-F+LMIx=wyB^ig5n`uJ8-C+b zfE41&i#=u6?Y%i18W_>1jgKe;!sUvE@*n;&-it>h(Pu1pO*^Swo-d1-nVk+uH`?5R zU??=Q3`9^-umfkyWhM@rqF!fa0~f)d_p_h;HVcO{p%Li_E8{0kYdm^&2~%;Zv-69* zLV#jC5h;4o^~FO*p5OR}_}FNluStlv*lO*ra&7`$dFk74lhbSR+dILt7CiKUTj=nR zB;A9$39P#G#6`_NOW)1NPhuL27X5iE!Je zS)SD8Lm=!+29oj{gymBJGzK|6y|zQ^7(Y_w3p!cL?0d=z3^Lrbw*fjaAOiCB^-YKq zZ_Za^3N%?YG;#D>V;?gw?ey5lQTH)lQBZTL|I}EE!QKxw@a@8en`^z_PIxtX&G1Wm z5KHFW%2iFLj(*O}X!omlu*dw*Dg(^nnHfT%QI{Y7tVWRd40PSyL}1))U?&_ZA3@@f!2>E-uxiqAwM3m?Gmc~g; z3op@TV1MY&^dQ*u?f6z!Xum-7r86r8Xju=x)_3`K-K_eJZy~;qeHm18jlmV1 zw;1=+kptg8=yNL>+3t>dw}b-L((q0Ccoe#$1(ydlB@7j;KO2{rE0%rDj$j@cv&80W zWBhXV{06`*$f+`Y^2dzkl;nttY)i!wz~Q_bNaiSYtDVf^B2VH-~94;}~roV}aIwFZr&9gm~iI94;a@bs)gIHUK2d84(6bkoDVrbToG2@G@PNVsqc3k zIq)Ulo#@_ym6J$nd?f{_6{IkQj5}$P^jrQr2L#p>A*upG=GQ^OzIeI2Q!BPmmz?Cr{b3w<;fZgyF*g zuLCGHrSxcmPOPzUGc&>tk-f$P=e=_?ymQtt{xywHHtJnbRZPtW7pri=L47kdks1-4 z_~Vs6xTcQn!FH$yQM6jZQ&@w8t~$*}%u*qm_A&NTkZ8nvn&C0dqV+&ii`nvZkU%9? zG-U_iqf?zeKEJ&j>}%9PR1E|O`2*|{up3^=7ohy~3E=!OTO9YgL4ue>eM#ikm~=_A zeMoe&0G!2&*fD0S)A|P5a8OM7gD`8tW7L97Iwapo0=TL7@shHN|D4u(fppIGP_-rC zhYMz6JCq6E-?kkjDc`+Sc3rP43W`vCIQA#`)G~Den)PZ!Q+q+^$j!z*GF+=4#A)QqgV?yYXnuS0qd)LWexR@}r|WkiUalE&T1s+JiNf@v|0^T{ULs3-ex)OpfE&4YZa!n(ORyM^wA}8v9n{ zdmEFzxz*U4war^;uBgzM70A{M{~aBQn}&zeEN4iCRZo9XG6D!M38t=_W!aD!A2iRC zBLs0=-*xaw1M*VY%TY|$E(B>tBeotRAG|xSPJ{Vl`Z3xmRB3V$1;1QQmw~4--L;Jk9Y-xq&s&~Wsah4$#K6%sVD?tC$n$6g@2H06ZN0U@ zglWj^0}9hR11Y+l@kH&#6Ph666F)6+G}_D+K%Mx;A!tAW^i8f+KzYA~lGFy@ z`1EGeCg|9J6ih@3re^=#N6+0fH@wb#bUHS%uSOSJUy7fs9CuILRcylY6NW}cjHU`@ zkc~ie$>rWuQSG(wK#w1*kwKRq3!KaOm{giS3=IXrRU;4JRD>l=8sg2a?Op8@)I*B2w zYntA$^by}~unmck)aE{$xmG}_bUkv+?=#cE31J&>J$3!QSWC>(n`T2rU9f$i#{x6` z?;V;?^?RR=r)2Dw&5EP1IaExmOry@qQmKi)Safu0;@n-sH9Y_*85ki49-x1BU|gNBRQ|^L$u_VFB{-wG0pg#E)mC0 zJ@ST3i=R)=^`c(%&11-07JO%;YG;q&+{f7w7$!Hz3*&ZcMpxHeP9s}7xz*3%#JXAC zc~c>*_5zOWU4&p;G^*~JExL3C+9(7QeBi1FrO+q%>X)eKB$ZRmgs&e0lJLRo;oT|i){U=%7H8kWz&S$i8x-c z7BnY8%>Q=eIY4C8J7SR0SdTM4uswGcjdTrIKY1cV_Ec9DPY-FKwY-_pPCA0wC=$vM zt8#$^QKapHhLn|9-pPLg_7=l&K*mw6IeD$sMs(+h!%ey48!495C(8xUWk*bOdT;>U zw#u>!KpiYOG_cbMey<9yl~NZ?Fn5#616TN8TK^DhoMDtIx%FmlF;+We9wMSe;bH)c zSh+I}$<-=jG%-W2uI($l_dal3JSoY)Gust;D-VmDc$K#XMS{hPqZr~5UZJyD3jG{OKK zR^WO>lQD0!LeVXn+z(v~AHKqm){u?>ayKwp50(Jg_lp76QwHq`?%e8$k zPR#cRXkP{dW!xxa3~q>RMU0N`+Drl+q&+qb5kmK!!&^woIHaCfm+qvFUM6|PCWF=6 zZsjaL54hz4xnqUPsQu-xf{w=#8<6+{K6lr2iP8b@K#kGJe7j~SB#5;XczK3el=g>X zBO~knKbp=uD5}2;=*qX-csZJX!N7JsH}xbD!Bd30ig@} zSxz0?Y!9qjhy#fz7@rZ7E;PVqHK7J(NOj>I77@2{CFe^Ex?&H2nh*dX8QnP zXKXhaILmd`aYk#+M0|=uQJEwiBXW}y?uKKdZZr?4GblRBtauoc13-^89@r-4a|wS> zN6)ha7MVG@;61%ySD0{Wd7^neK#1JTk$=o$Mt@%4O`d!W7)P%DYuAL{@RO7|8C?Ow@}}2`JiwQlKDk@> zJk%4DpkserFqyWchZYfTkw*v$U`g8b{YK9xx%)8!|4BR+IkN2omYPNfG42A$+rybl z`rq2Yc|KOQ>O%Myt@*eq{-Mpl&xBF3J0}iv^oi5@80P@jzm;`=HLcj&7$1#XrdP=V@ZF)IP=Zi(bKnRuwq) z;BU@_hK^*}5_Y={WaY{e$m)FWsQ!5y;%DAsvqq69p`xtZbG;vn*dG`qipy>meZUIz zl$|fvvOu)70?)qM+XLu*!8^9FP^A0S?fj}801VRQpT+o}usQ9~w7Z@R29W5J?&tBq zJ$kXWyXyv3?<8VV)pvM375u1LLv_b<>&9=1-qH#PMIXo7VR#8XB5TxYx7Ry_%S1Q{Y8TU> zP4xlzJy+J$Gzgp$ps^@eL*3G@pv{+N!Jzp;6Vh#LXlcw#`B#))tWa0Ac16s8Yn*g= zoiRF8reQ-7TroCM+IuP%$ATF>M5WlOinNQD zR@{V5EDUmeBp-yg$(5*aaF$%0n*OKilsA10$g^#Hu5%|D>7!Hi0Ja~+Do85GF^IOu z&dF!VQeSpb(R7`V_i&X(VtT3Hr0?ED z6FbIf%RL^S(Yv?UU4r11d>?5%-M{~G+*S9fX_u?-3XAgz@U~V~)s{Fk6$}iE>|7(s zx7v`nO;e=aD=}B*xLVEydcXTCojqM=sp>PNuj%!%Hxa>5M@80%Nl}bK0o9u3} zS8ra5FfT5NYW;LcAxJ@ZU~Gy2?*GQbLuh^5?kRY6-|mXuZihtxJ&lpe)uGI z5@nUW+S`B&*+k&cDE99B+fs_T{oh`A(@KDav{(QlH)f}yOd4t8?CcE8NPp`U&o**o z{+8;bjwapv{hD4-IT%^j_^IZX^Yl|k4j@@4^3={oTKVZa2hvl!xm%MoFiHPh-=cx> z$?A5{)Yp<1Pr*Y=LF#I07JvQlIZzh(H?tnZpR*zwJ9LG4J}57 z`1{sAdfNx>^a`jF;waG3ybJ({6PTbLze$VhJ!y+?*ZU+uCir*`gsr5c1Yi*d0x4EPxjR+5Yfo#wwv&A7f_Gy|-h7x#a#+YJd_)uT8kpgzwN{4Y z7KuP+pv43H>DB1c-(Y-vLVRFGC&fiPz!P;!YJq8j7F{NAA2^i>SCxaedAp<%k2w&# zyG1{?6F8eRseL9!N1!w>UQ6BQC8qBPTKTxohWcbxg=y}F6Q96h+ZD;J25ZAr zI~Z=w(Lz)48~THLOdXz~lC!IE`iD!dJ%5u@ zV51NAOKY~({f>N=5z3aUqiX5vTlxfkVCb3f72G;$Tei?O*WVG_8@A{+jR#@>9k;;Q-n zeejGU=m@}zHd+0dxDU$d-J$z4v52Z6w?fVoZhnqCs(K-nvlE-kkl0As4_AMpR9(#9 zGX1MY@n(qB{CZ!{2Ym;|bPa1Y6rih%z;@Bn)LrP{q~h0US`kvAwu!oRce1;p?enWE zIfV1@CozLP<939~m7E*Pa%nTZx z^w=zcRLa%Ff}i7Y3Hl#Nm80=LulzST^?~vSgI?a?Ik{(XE?rYr7|QM33^Qx;i17~Y zx@_iPaejXO^dD|?1#WbgZy`nqI|0AD8Nu$dQ^Mz-d_IizYX{%eh(E84-5FP5KfY~y zu@0Upe(glS%npu(QBGI4{VYw)Yf$$QKXdH$5z>k&PAlcbA z09al;GAas)W8nt+)_hsjFkmmS*7*<>N+OOJfYRSpzcx33-06M{;X*iz+Y8f)YQVuU z_@R^%yN6Y++3p{or-Jteu8n4^3?g(G@rmHXN02#M{28AeU(H1p{StO|Xs&D?jAr6+ zotkKtn^(kE*JcEX@(xLAgnBiVP4w56(r+o$uzR}6%ynGrCqVPIY{xE`#CIiv(%anFEP`I$T%Ap*>`1W97}uNhfw2_;xkHfZMPgA z@L(Vk(jgR(1x3lFF`o#;)lejH5L)obTPbR#Jr-YT_1M`?z#*B2KR_q)o==y5F{A89!(>3ty} z_4_R~eeCKumgqcsV>ogXU%z?RY}&Sy+N?(xzjDu!ooWSriTb%PWwmV*pMEb7vxNwG zYu5Z{ZBX$+sgp_5QQwb|6F4Xusi2tmpgoeUb~N$P+^iSI4{Vfd$m3Amn~cszFMKSv zJ{s6Haw#9#WyaR1Bu2Kq7etoEonwH9)DD;AhlKOQ6dgm73Aa=rtrQh6sw#gg(jMpS z??KfXl=hMG^-$VWx#(N@xYnBL(64_U9%sI4|X=`li1=_B87s8;*WgFz4Y zt8fT8JyiL5tR?ziVbw^amEqWsko>2D6FDj+jC69eA8 znj*RHX~nPe&1aE9gYp2hP$rlTNTepwD64lnw4{oOHJ$yfN!F)r_Sa!Yjn>}3D{B`I z70G*2Mc1sjb$ocU=qXu4eGSn>hF-4o$+UjV7>Gx&zo8$QtTB15o}(Cqzk2EFLqxG@ z3rYtvd>I7?fnP&fY^o_aIcqsSdmwa=Ver#`<4G;3#||PEA3lWKg#VIK#xzj20PFj- zn?jma`g?VazvW&ZGun#Z8$R7n`kJhI!O~HL$PJ((8LST|k*!-2V4$D0vrL!;fpaUE zS0n#Zy?8t&n61CDvftB(g{pC$PoGjl6vvx&^Sx|4L*n1VFBgLUIi)D_)!7I+IZr+v zNfC1d8VQLgp2PaBxUzD-+IFWu>gp!x?fhVG@88P#Kei2koc6fv3Db=$I zWNo%Bu2ZP=F&Wo@D-8zW!cq3VJU@Rc8HJ!&B+PO5bfP*c63G)#9;Fl&&F6nBulqjm zdyuYkhX3CSz{v(%Szg(n+?i%fz-3&g3H9;WlD3V+|LnePIhv|c0%P$7Mr!PDqj$~5 zD{%ny5j@&o>*dcrRElC48!N|eiHTnIUar0|c?(wi05TCEoI%$#Fj6|gFl5o&7Y3os zx`nURrxh$w8fByNY2u=^$tqL%xMqDj8xut_whMz!3vkbuLJ_P-YWAZ&c*-uAiKtut zOJCs3%(}@&Af9+Ix^&jkl>T!B`SW_ozHuh3?Dk>V8HRD^OaCMNALi3HX!Wii0BQoR zyNlrb^~cAsjV*iH_ypNFXr&6iO$r4amWwh`xMxqN{Q-IRY8CI_xXbL(SXpP(gN*7= zON}LJW1SjwDco@&3_Y@!kGFHuaH3(VL<|6SYu9K}+sj>W2s;lG^B3bEqp& zt6XkqsId&2QP5**q_|)~?8g?2;q*A7vfIA*FOQd9wocsxHJu^vRb1$gk3n{AE*(L3 z;l6wM`zBr$ry9b-1;_uorlHF2&esLI70BVMOE_s)-v%}UML(PjV5{dt-D}JcIye+m z9bx8lI;=d92b``%OvkEPrq6?~=%QM+a=eEAG)?g{usMqO+{RNg-&gMMkET4iX`s0H zaP4z0Ze>52o(Pmft_$W1&5%tP7V%LDnUfp6PrfmttJBhCPhkph;W*3Cg@%9S1DsL= zNz_FVPI}YsK#Q^I2eAd_aRBk_A50Q;cPNe7K*Gz*YXeL~TRz(dj+@l$fWhv#KTSf# zZpEYkjNm;57_(r*Uxg~d-uHN0- ztpVrNJJ_&p-hm1fXt0>Qb&0s-EWD|YPxUFr>?Pj9i2U_($=m6BLogclDfwNpuK{3< zOE=%#=#`w(pDyfY|Mh@#YI+P03A_SqcjusL!CY;$O@rFF?+7?H1Zi8mS$=&v2_57GT*V(ueRxDH6 zF47m0(Pw1X&{iGdbO_Z;w1H*48RQFEeCNNPJjfB1{7c7y3Vn(^KS??39_f-d2rNTB zs9OFo3JbsRH4f0(blgr~xxC^2os!Lhg{h5Ku`oJYB73&lsLiNaCL{kD3F$h6@4*xh zxNv!0Z~>}ctt{~RcY5Y2t5XFd{A=Id-tMU|I5>=A{uHH)&L?JdMyj4*Z(kG@8Dx78 zu$>oCNH^jFi_-^sR|MJ3@|YG`bmHD+a7VoLn`fI`nCCB>SKTjt;v`Z}w;$KqCsT56vSP5?)#e^+%>>%phEHH#GbZ+ToDwP~3vl@jNF?1fj_I z_2AW3+4|?REX#%06ZjXupy*T-sblA@01uh>XbTA#O0>rI&69U`*h*>x4ub^Ren~E)<(#%wP zpk#idUx5bmant?LOwnPP5Y<*p1fPipULJ+6Snq) zesbrJt{T+@|5o|(a&cH&Y_4)SowUq=4MW^X@V<7Ke|=m0e5pJt072@T#X1T_B|G)M z*yV8f+}2<})at9TVK@2);qhBCh-p`~sK{+-mL!|eQEz$nTOjTEEgD#d9Vr6mTq-x- z4z%qZtd?pF*3EfFVAk@>MK#;~31+vOL1W_$CrrXs>g@fjS;{l|788fpWMW39)nwzL z09`kd5#yJ58n1p1y?sTwh-UmL3gO{1_lZ{&HSb5d)o!88Emo zm|X1)K>c2@0*Z$)`p-ysyto_ZRq6QsIXIYD0Zs7pRsMSX;PmfQu@@S}+&S!xD_dJv zBB;d7dqv_9U<4RA#&jx?2e)LjkW?mXI>4&W%V96bliNCZ7qy327Z6Q?J|U>DbD>62 zr0jhOsLG_n;BLX$25XinFnhMnTbqoLOOj)0^j(L7^Gx`GUJcaZ1ux^5A*k=ZYoCp# z1mX~?FQ#DM_08SiSBc8f**IhUBC7c8)RdHzeiuEIs04fxTD?C&Hc_xiw7+04@q}2T znxo1jIa*B#AO8Hl=v}Y&)tI%X-1oC!rRSkz;T4Q!kTH+(p-5f4wk+^qaWuS{EFj-H z;^5+SY`z#KOyf<1VL2MT=Z{;IC_#^1^Y5hVvOmGOJ0HW(akx@bI{Hf1ZhUthnOhr06RVWf?B$-V zrE-A}4XKSp6X3EsLWPT@<}g=VaKG+{5YQJsH=D9Qqx$`9h9a-_{~b(ZJ?gGJhb3*5|nOuvz~3rUY%S3jg~3gx^I?V z&QAx2kA{YZdxuL)7$wEU!)IqNTRTHv$yZ+cn-ke3HfNTWfWMjCe9xGd&tFS_ey>miCSE|>WK{h=Yc4h$ zgUmZwDbBYerJ0cG8mpkj1shco>dKd;p~Rq(k43yQH>;XBFcolO=G~>?6vDWlvY=_b z3Nq$17SYgReQD2`hysm|R{VVUQZ8gBq@vk@sYXZBh+R@*+W9h?g&T8C)Q&t9S7HF( zbcv|W>l_}NIs_Em-%%KqC8dLd5lNOW-98^ke0k$=^!-AXzveml*_cFy|>4_{%(U zz4uwCJGfkC@JiReU)Nx_x-x-k6nFbB?yq+LQ{%kg=^L3VQNuG`hl5U$*!XWJUHhBk zU5HL<<0qQ~P}uMf;R5nPm7YGXPhyApn(xyQB7V9#|1EZh-Xabel-A@L=ng3Q=f-=A zozywWhMvTj#M7szoDfv-tH}{j>pk*0wg-=&UYikluY|fp;KGW5>i8YzH3Tyk{V--? zu{&hxRvik5pn=WfX#B78rOVBNYuin;SfH9TMNf;G2TkE^-QHI64B+H~-}+fANEsvM zgCp0uY}zghAol=uhvc8CW%2FbJ=NdOjr|GeEDv#GME;)dlHYG6AO%Bxhul;BHSw>a zySwjAq_$5l_^J4-hWbHwZmNLC&={C3a-L7_%y4mD?yY4JmQFzd3tXFTUU6cCunuec zzNh`HD0u1fBgZ^I{g@JNY;}yev&)iV|M2B0+0Y%B#QNONkxF}ege&H7!+#~El3M&^ zzA|`gMxrAOup}w@nLbx<#_+UOdO|AdM6Qi2JJRyzEo&H8-eP<@*rEHjD)y3$P?=Ji z+ky(j^nEb#(exy_{nmlma%aMr!3)cf-QPo)O;mIN0_4QW51%M&{UaK?RAF53rr!?d zR&POa-P2psNTj&1N3M=H>z!DbtGGaUl}HI%X)0f^0?2uWOX@(Ah|Jt61UzW~BJ(!j z`4g>h&2dQ0%bNl~g&)GnN(t<<$vgDqV?GbJ8i&v8n^ZnW&Njk|!9%_fFJlk#%M^45 z0_RuQP9Va67=`$%xoBgD?JaqKX`c2l0QVPY7mSwb(7TzTl?3NyFm^=U{ z`EIjWr^+>k^KzfJt=T!7>A`bUWPWB3F<#oSShspa7UQKudnzvKoIi*YcV|vjG{^sM z)khBK1w1Pa?Cn(w)hmEFt8YNpZ{PhC`T+JP@%Q)F_jtxjRAC>^_2V$7(o;D0&Kr(2 zhGO&WI(f^hvCjJplhq^il!iRqZh=pE;bWpPlm<}rT5KgGygIVy3<3pk?H-xoxMt#k z3g<*1*t20D!$=ORwolmh@RES=f{Q|d!eKPQ<%_NZ=w=UJGOj6e9|EjDN5+xcIi4Jc zW}_%=gS>bRvhA6!X0D@<2$C9B2eed}8!YUr>Jkjp#KkPu!UGAvU>pwx7wBnr^yx3( zuB~E>w{t@?>&+1sgLK^FRFuk9dSd1X#lq=mT!esDA%8c#DxvN9A{+U5>PdM`+3DI+xifzli_kDUiB`ft8}}r zE7$R`%JoMLSG`8GWbO;w1CLKlTi~B20@|*3RyptcT@E9fZSX`5#=yLqy2{fW`Y1?W zO1=boBR(MA?W}xFZ{R@?<1r4R*DhthmNzjO)RyRGK*E?{=tU-aCl>tQ)EhV~oP|Fp z&{un-N|pd8idL(Ws`)>w@uAq=l`@SAVn9mj@#S@&b?&>RI2gf{fbqFo`x5#P<3QWH zV7VYiL^1`;WkybSS){LoZ5I)ATW-F&8*HH2VyIfFu$ep$cI`n1(+uWwC{Gkrw3SKj zY#Vye=v6&#OG^h-H1HT-8lPK>`Pt;A`oHL9Hr5=VpX58ZKb3wm)19tD$;L0?mO+>p zsj;~+9&_xQrvSiM%^336DKvG!3=hDV649Gy0if}q=vTdM@Bl9+nlMP zq@|@Xv9VS3H|v1sl1tDt1|hzTzUeDPNu9mow}dbL+gdp~a)e(*r86R?{CFv{wEqk5 zlDt`Qul&Ws?&Y*m!cSpc#)r0_NX9;Na8hJCd!!i#IRld?+nXN5@Hbh(-=Fp;J31;% z(K9R~#3Q*!%IpvIp2z!e$90MX6?a|T$&{cEiib+{&g_ZKvX=h)P*)Tz{(bb`YB@Yz zV^7?k-z>#>A$cTYRH4h_BmG$to}KU(V{a2(*7$C`Xq_p5B%`;%BgEfgI7 zc^|F;P+*mTh-*rtZ?Er}Ka*`h3rLE46%w^;3qN56x=~iLfB|5t)YLs$$iwiNPTff3Y7wu;@}E0Wu_Ju?n^V#`@S#K z^I)_51aOhSWg_&=5tQW?#mW}EGb_FCi#(EzmS$uD2XfhU=7BQ4bjPJ+sJsnzPcK-QKHP+sci)gQ&4 z9K?#mS|8HBGv!s!ty;L`FGlumg|=p4POpCIAa?UvqcL2h+T5i#No3Da)}zc}hWdDV z%AFwuJn6&%O0?7CrC~=i0K_Pq^SoNrv9EVNR4^hVZ<8g7e*RB~=8uCOtmEudn4E8y z5LJD^b}JPdjJ({p{}c>8;1CK>QAJ7~dipy2P^(Kv!>bAtGe>0@%M8f*PRuFI$FLSq3gJao|;C9wrJ)gYOIqSC(RZuzx3g?k1>&};A z=ij-gaII}a`4Ee=uxA}4lW+KF=*B@5OtJr@A5E`l9`WJ()IuDp^^{F5#W^mRm&bNnS`E~m4x8oF z?UR^x-9!5=&^zLZi^{EY&XKt5=B6N|YGvB0+r$6NNYpFFPk&Su!D z<8zTh62jZe2cuCKnjrS5dDU5PfK@}vlAz*2PT61wro1jcZGs@DsgkalL9u1?{N*}= zj;G1w*FhA^SE(DMpbUBMNrxUKgjiKJ%oO~U`lZb-;fpF$4}+&dW8e|)uD6i3B%s)A zZP0XwX$&vH+L`A)Fv`Kfsh`m@SFQN55bC981@_V<9@vrtXuH1@Dh5rONgmCzY5x_L zj_#$Q0QHtrPWK|CF(H<`jdYCF4r9*HDf1J8m_N<0rGUB`wTggZ#m;@fWbj+>e*Mcv`dQX#4r*B) zR#0$3$^te&u>Add%O?g*%t_M4DjkiqX|1uXo*+*^rsDRzrhx6d({1x1$8Y%HuI}(> zo|xf3tGwck;}o1LIT>S?v+8jR7YH8JJe*vw9pxvwNZ^x5+> zl9V~goSS2xGyno~z=wFuJ>fh%tG*6+YVB)q`hapR z%f@rpREssbENIFmq%*_M81PWw{fZzrrU3r3Pa`h*JwA+u+)=o;q>gzrUWFy*cg*N!-V|wAtz>1ZW(dC5Hbv&t52-(2oM{$>)cU#uv&Ew8jCI zz9f75ozjdhTtSM=Uk%9Ti}(cQ*K|_S%w`+a3~ofDKx?{qdULWM@0Z{B^O%)PLd4zERbtOe{c&t$ofe*>Z%|e-nbTW8 z=dC!NLPF9jPLSQI7V*2^uW)jGuV+#Pp}APjRur#5`bmuy-}wj5OCcP&a;cr{6Djgy6QEJJ7{{0Xbg7 z;F)Vya+u(#@iI`%d0UHL%cU#o!N`mKMgz*(-XP!U;bI<-N5~342_Of8hyei=AOZ}F z)>JmgPW`3?#_=Izajf1}iF2=y9+n|QrP8FiCZeGwtAB8M@& z>%r8S%I>ccf?4iN_5OLsD?m-zIXsb0nGp%;kpsRgLn0dIOp8r0odFef;ozW6_Nc3= zU*b8zuXMb+t9878Ebn|PLI)mW%N)dF$D$3u2nuDz)>`?%fMfySKUeZpe!7qQ`_-nr zcUa>_)CnsPqqK#<1BZm_b@un~YTw=Fe)76og{6Ca2yqVINz-qVl~~6lB^px9U|ZPU z1<>t)?rS`R$|})%J4-8M|EV{AbNl6DAfj?Tv1gPKk5E3T6vVxg#zB1qCLcfN1wDkn>{V5q1ed8#fJmGe zgDn+R*h^q6KfksQa--K^)4<>XZ)3CAK6HbA*i?1UEWB~~3&!QftHZwa)}awYN*jTn zkFK`Z?irc}h+NlXEi)2E^Cev^xZwI%2D4}_fn^~tzwRrik0X0J{`f+PU1(k&_JC?N zpslHYbW}D@P;kI$)s+yMPw&wXeO6dnYl|uuS(j-bHRZ2-{hY}3Id-<&Hc5nD_8qVG z8pRSa$~Dl2lEv6B+?2d8a&O4ptxSQDK^Fk3WzMMA#}wo6GY~ZzI6UzoYZnxwKm>R~ zpV~!efBiU$uhgsy>=l8mhO!z13*8IXf%8e!iuDfLB2fP}pqiF=-A7w;TtPov<6SDp z7r;={9KBDPf5cl!sQ%>VJ9JM6V;Y8l;-wXZ{*!nLoEs(6yoS+*Hz zGy~FRe9aqTLQOg(-6SR#rdA-`_C;-2koJwpx5D{qIF%WSK=<;OHMB?!mY=_J@#MGS z3(Rn*>|g~GX2a6jJx|De6G^z^=`hbEvUL@<<~ys+W6f!g})DIeH<6kssRjCG*V&V zoNPPi?Bd~R&HmQ@0)qUMgGc<-y#Aeax*tblD^oYQ-k79tsckislq^_*V;$I$TWdPL z^XfKejo+D78QjNa-=Akyv%8o6=E%x$j4dv$^}3oOQ_}k|nxR0vFObQkY|$=O0P?|K zwn=xpC~_KcqVs>s$#g>4{-91zSp$-t=9tC&6CLdWkK&{ca@L|YlY{Mi zWR)3IHPiJsnhMzj@Rd0sq3mI*CF)oJ!$i+8pEzaJ=0w&<$ZfKuV%ivg_SNxg%kM~} zpcTt6+bDC1%kGszJ4kwlEH~TkkjKjoUk`6fV18C#bFwU~EEf7CrJF6kfE_6l1Bbv( zZ1U-hNCBv?5}lItyqi`=>GRI^Zt~D(+LD+hl0ru5*m*v{1Eae)&n1V!PxbC)6ZCAu zeyNol9RI{1vU!A<)jP4BE&UvigV=&jUe~=l@Be!N?9*~|9+<5aY9Ug@bJQ-T^S`7- zU{3@k0Tt!+dwd^B7W*mEoz?LIW4ix_;Apw1WuGs{8{x0djQiO5AJH5QEHiTqXgv)G zh(#~XC<2-W}qzDVi57SRJ7g z$%8lfkLN0IHrfXZX2QV=N#&V8tQXndE9}cT5hY{J_>yR87|6aA+wN*reF)hDKhSVC zygp1cXrPJc`{Ugt7-zTL%G9PKdR-g7*yW-K4Jd+?1um?|sb{CB(nSuzAjviI9y^j! zeh4k()>#hWboXXl^30!_KvmPq#tpiGovvaWaNi}!=K$jgGGD6suy7?`-|KNLQu%n$ z4t#0;Ry18v$auEXZ2jnR^Hg0>pS`tWJT8vQJzps`!}3~{pR_T$5p0{0k-MKJ?YnpV z&lOgNRQ&cKxY;IIs4t{mE15yU{CroB6G5IgV;l8$2awqPh6_yrphFK=A_)YxcW>2H zO~0w?TbA}J$!nFYROc0_l2xWy2kfxJ zqZKB`PS_xOsU$*;lE4+!B;Ck3{6r0t{LXsqS-Yw_j&ggii9In+3Uk9|DR3D^nT+R! z4jxyz1aNPLBi@m->+s^`Wds5i>+;qMRrd) zLYz-grRF{kIUnbZsz}dV@J`%w%#K69eUgaU5NN_jBkr<{H;E>dl#hw&BzwBj@N>kX zYFIdP^h{BX&e$7fWZ`~6rKf4cNdYmHysTZEyfMvtI?+t)zhIM)C{E?ZCIy1tp6S(V zu#p7;%C_NTHjhG_=g~AN0GdMMc?MZ?IL^3fbqw`jqG z#Z?zb@ECBWE6ZM3W7Fz7OWs>u$IU|Ne%yD+5h`sRm&zD-#m$!u&Z334Q?hMV0p8Jd zrI;06(WU_z!-$s)FWLAkgAc>ps+09G$8NSx&c?q^b&~=Edp#9A1(Ho7KGY>L3_G(h zo6>~3k_am$(=Z@KqZ?tnCn;E6oxnLC^l-Val$8PY<2W;JSw!4Kxlpe`W5zc3BhV zZGbKZ4S}fz%r*1GxNiKnow$McxWO58Tm90yrO-EVpIhhM#LoJ6ADN=8%@1(wTrk)oxt+ zZ~ENa@3+af-8&4IDAw%`ySIMa&FVhQfrTaF?${V6=K=hJy#f1Dbbm#6wj{W~8V$-m zHTyJ^ftSSR{`T@%O0*n2aQ%=2jCrRoWAWBv0fwUU_(#n0yGlxr6|A_QUY;v_|4Y!W zGFz;y(C)NP8tDg|mvI9|!a!KYW#4;zWfe!M+vGyd-qHP6d$6_|9ae&H6<2EFG;8jk zf1|LWAu9oTR37LIwg`qMLTyqNOlwHF@XQ1|(IsN=h$1pOEKlqkZ7^w_Xb3lHV}(!N zHyZ6|^X@iT%n(kh_u%EJ#KRsz-SzKxKUo)X64g_XSfxebJKELPf~CyB_AIyBM*{G? z4|Re=*FJ!cghG{*NhL-qkoNs>2lwxm*3ardteOZ`s&IdeZYFezFkKYH-LoMf(>9~^ z)R!PBNlUpJ+2EDnj@Ro^vJ8ru2F%hZ)($>eN?7KwDudzZj?baE6=1h6v?kzZgtD`t z-cxFkl?<*dm%M*^+ADlXGV&uOL+pGR@Bk|@Opd9;GJoUEU0}%VAPgnDB7E)B6D0Xe z%cjnL`p1B|U==Eg7@d|4mMN&3TpS54{Dzj7Qbo?4v5^Y{TIj>>Ipz+dJB=GlcQph0 zt^qTbJaUy8jjIy3UM6|B@qZv&;$OXXXtOn; zfGTxC9%lxlR+-eBCPi#;NJv6nUR;Ep?HiQVylAGd z0?l!aQrj?ggtNJWRrDlSM_EsSO24r#U(F3ZjTHH6-mWjQT*Y-hs=RF<;KQO?&e8WS z#DTV^p^S>PF>W`?L(7x{{GQNTcWV@Do~pF)Tj)2dpO<1`pKnCOExEubxT?3Y2q1aC zPEtuXLvI4*D z@d`(0iO7CQjM4Wz4?h^!q={od)VU+Y$&p(sa0MJQ4 zytgqXEeW`@IV5dg>A)vxsEHqBuqo`TJMgyXs&~$Pj#&)~SITRs2_nIebRh-I-hF4P z?6MxaV;jXesi0a9s|6taMMYmLrd<1N89xR=Lw7zW%j`B;-r~0@xXwr2Ze-6w`%9T~ zPQ}H`T`ury{5vQbn9l8}_34?|ujc;SC7hz!_Ara+EByFbyi$+MM>-PC>^fc3%bhQd zd;v34%ukr~-D3w&hS22?)NQwb&)W#XW8+u+T2dYNQS@@aP*?UWl+DS{T=-s<+saH^g;Zd%xW~VuLe`%25k<$-yyA;NA zftKafbG`rbmxOyfZUrh#4Ta>`FS&l^4XQJsRnZXOHnD0#zzVfm5y+AGpgK6{e8KUW zeP51$19|>-@ai&cn5TbHHK0>g&^k_&H40nE?EQWRi#sz_XR%>Xe?6C1Zeo_^%-fPZ z$AhJoksTL+{~*tdKNG@@;5!FiD!b}&_s)9JLcV@5dJgt5)1Qt34#X#qgic5hXfuiU zN|<8s!$0w8WT#`qW`EPa%5g=}RtktQ=9)Sk0GJioqqK)Eb|0PwszJ=q-MKEnY+E*% z1n{`X5#d}o=tMPz*7))D##N}8hUkA4$Rei0qTH7V8#-U4{N=ySEv0)%2pq5Vz{~|T zkAaM`Yxx*bajyi3g^~~H|0X*ow?f`C6YV)=D}G}(yz4-B~ zUG}-=FJQL*G1=ABjosSI;Lk zYfW7**ShWQ?)>hhTlj!FlUww}un|895X(?&R-j0}J3|9k{qJ6X^RG$SILM(MnrpDW z>6cykkW#sx-P1EK5^J8^+PTS9Y+yuFBgng0Z3_%eY7Ns|9GyKtAAu6eWCNVW-`Kyu zUPYe^GKVXIZ&hejSF(^-uht!TdAf@=xjC4StkIZ#UQHf|6P^4*8d;aFYk%>v2_A+l zMDrliJ*)Y%1r4_NRhY&I_@V%t3@b|dKjQUxVsi|cm)>>3`?QwG50V;3J|W>EMHo?e zv4kIBi?-_9K6A~#I$KC7Q@vbAf0i09Sd3ii)r4O_UG!8VW;v4CUO!z4Zd=B$aQH3% zR&ac{feAyly=frsq~O_2Q#{K1l@OPRzf9XFFxY~!k>2H;5)P|cY7H9s{EN|-7G>cJ z+2CpEUBq`hD#l7!WhKl7oWf^B(wI_VXzwda5BJ0qQP1B4*4xMA*j@YC&DO{K(msP- zu!QzWu1ew7^{C+{MT2DZp%y?EAVWRQr*v8sUHtkB4ZwtGjw)&huds{X3ERJG3=hm$ z3GEL*sZw^j2KXkb)I^DsB?HRXE)dRqSeED4Xx*`wD824wJw~)9_*qpMQ>Ls9(@8Si2P=|%PRygV`8trYsSR5NE)e-mQ z`0FIPEq+qFR=AH0Q97Mfmzcqt(rK%d`XPPp(j`ImlBvx*wo@FUqq1;j=jAXe7Mxq? zG&d`}Y&MjhBS=9;fUfq~roaQX0%LgH-PZq~v*|4vM$6o=p=7Wit2j+zB0WG^*V~dzk8E$Di=NXQ zNOKfzBc$A?`uBYmX}5+)$RdQy?i(orVLQ{`Z%EU~7@2c2WhDlkHj;^5k692|WBJ6M z27c_}m?s$6#A6NXej^J7_Gu4ZeLhA-v%4_@eQy7V5(-le3DTznMu<|1A9Xpogo= z1>wECYT-(yN;F&k5mfMp;;QXs{39hgp7nrm7E zyF&QGjNg7XFK+2~7YH4e9~2P4U*Ga&=|-Y_l0ZgKMJ_J~jz)f`3p-Mu=NIwH<;0#u zS8C}oCzb5^k3cB~j2Bq#qyRXNm!5d8-4^PKoMa490ee&#T{|>`51uI)eUi!5ljdCYOt0Q zQnxX#Kt8>S1ggg+UwCHQ-I)MqtXMKBPG4>aBwS9cfsbx9QIOy2%#}0JW@bxfj(b^1 z_6;CHEV}(DL`0?~rne2L`eG0jL;-zEu^AQI?Ws5bL1ZxslF-pYN)J&}e&L+ViTyB1 z{=-qM{qYPTTqA#QT-W1-9oT|mpgan;mU4AfV{1-=)b7JN%Q|gvzv*X%fv0oe0zw_+ z(aIj~RqF3K(sade#jxCr!cWLgFkw*lHyOG9bS?nrAsspAfcUFl73)i6@{G6gZ@y&O z&J_w7QY99PpN?lu2ca4XZ$GB>zHXeEJtxXygY=SWO67jieI$>T`j#;?i9`^=bo8 zC1$M@tnMRHjz<>FRW2f0STHT>7mZkK=*8Y|;u`kZ0m(m^y*Y0(Pxn1I0QE+rT^KWM zj8g>{K4G{baBl)}sCp?^2=p5{iyL=Wt~x^@WelS#a_P`r9)kr9aMQ-3mT zpV>dxQT|=a1E`d)TJfoie^mw(6Vttrs=-E6>gKJBZ`oSscm~!lqLd!}ko8X7MPNBt zR+^LG>H$K_IA1n5v5gWy2(gt8=z)`WjY~dVm)2Rs;STEOu`9>kZ+MbD(wS{_` z-Ur@SLj!;#EC4t*0zsIIjmi<%%T8nO*LPwx^}EfM3$O(5=;xuHcs2)R<1&OPxwvox zyCzF-GyHh^9UXiwubd`Uzwbf%6bYXi+;3A}@-4;uy8fFf=s()poF+r-nt$e>l^Js< zQm02sSeYYybuS4J>igT~f_(gt=ikWv^w}J&`donO!k9&kDY6a)<(*OW4VZo}`&KE% zySX~^KIos?>O#4{9U(1x(P!<7H5u>6t7<4mYFCg>ewC{3z-?=WWdn9%i|CtnW}8#8 z99RD&iQRefTnK(46~{wU5bV;|{hO~Jt>#a*tE#f7i8)CAj>p#2t@d7yV*I_L<&M*o zvCViVD$iGToysNXc8E~yj~2Q6 zQ6o)H*4a+wXh=GWe>;kCyaGNJFU~=*UTn-Im_E%R(&;UM&o16PZWx?YwVK*gwi}xA zr{l$t8CtbFSW=2O%G$P~Ww)LBOa%EYE+4Xi?q1||d&CNWU!ShOhnIm6LUUVy!QFnS z_!DqN6QC4@wKZr8u;&0@b5-ph-2-xRfMEBvJyZPGG0-*?nl)@T8;ZL%`dXp_mDYJ7 zV^a8O!Va9=Y1+ovzP?N;B)RqcZV+%DLLBG0ov+&>S(al5(mP$G;f?atCpJ|~n?4@M zV!55>{W)5L1rGW>mIE+5!-5T(c29aPJSJ~10mnuIAG|MYZ;})WPOt5TT3&qBEID2q zRzu$yYA+E=-A4Z5eT-*%j=g%=P*T;4+8C?7?65&0dcED2Oj~L{)Gly(ZHZG|yo6yT zd5quslG|g=YajZT2^Z}--729vp!;D|wE?+{JPvA+Ak~SG2)J*n`IfmmE7JBwJ8~z$ zII=&mWM?~tmofA7Sr)jZw!3?zGE6HUudbmA;0((>&_Zp84gD^6R4k04LCL}mi1JV5 zL6cM>^1GiSa8%gjxD!;zQ=VlVkv^)WW0w>I?nw;5JIm!gIwHc9&N~0{*C?nEZ5PyM zqj|HRIO6GWU%n{>-0sa=Nm0RE!`6`q1Ra` zV7BPNoRl6Q3;2itFbI%hfKH4p9NkFrXFKq?mvW3SZ*JSxkC%5f$!`>|*Jt6@%uf~) z(9RCgvCrNvSy}&U26GSUOD!<|ypcn2q5W(bk+oi{1*%CZy5YO(WeEI!1{M>^VW`%k zf2U0nRqvpJkkP+fXLqdD4e<1dW?$DQQP3O_vNGO2I=Xk-9!>8< z-(VCNZjg(XUFLI}zV2lZ0|>Ipv~a(ZvbFNXRnMtgT5NYqe&Z@auJOYm^(6AT^QWo{$kKJDVIZ{?N&r%&bBEvx&*Bm%I|J;v9LyuVu_sKuO#f)CU> zayBrJXsmuw;L-M}#lm5;u<+V8CPtp+;up;WfoMFtkX)?%jOC5y5THeb*ibv`bsil+?2;X#Rt+{FtFAFeCRu%Cbj3dqQHEo6~0C$4vMc)+VpUq^=94q8D- zJzTO~>|9a8r#45g(^GhAKUG9S5f$>EG_CL*1Ol(z{E}y~u&FdZF>5XxdwWEy(NHmH zHETM7<1mO}=Hky^SSvxQD5ZN$Bs@~{=LJN2`(!Tx);F{_Gyq! zKU=gv?KFRdy87@~Ocs(J%kXlW%LrFNXL^7NEY>rD2=$lup!+U^S8$PpTI<~Ar;w|? z3vV+7+cqy!r|MSFQk?~65~IwJN{bsv@oc%C$6mO!RD(d~MMt|nd-gFwyp08Ft)jfX zm?ZMyZ3;;CtgdD*)ok$TkPNHMj=lk%@!{vcHC&I7p*8z_6hh^&n|Mv9FY&=nXZa`bG^wDrO`Oy50``B~J0nR(7>OiBv_56>gw>!JCt8a_pSxpyJk z6O!mraJN8ZJ0V)Z;o&R^w;-;&QV92J!k_+nC<`6BNn0aRm@q6@O*8mqE+(m`{lo;l zE0y6Y`>9_A&pI9j-|M|^)dx+Y&nE1Ck@z)us|VHuhor@6#UxY^5btaN*i7vfm>~s{ zcByT-g9)G0X59NtG}^YYX-TNLQG1RS1`ZAl4^Kke7z>CuYHV3?6XAckQa7af%3>AA z!;`aKjhCc&hVXc-I{V%2D*NRc@G|3H_f|mk9Kyk~m6s;5ShD=1`SM$)Xkh0S(!KTe z^OY2?oIK?;Q>tCI%KcvE5m_#bMhxV|tz*{^OId*Y)o*>J`=>3Q=P|>~6cVhg2wKlR zn$CgOHyqr(1Hu?VtNDs!skKs0es3o7CLPJM;dawG+Os_eA5L{%8uJzM#{#4yK! z8NCO^wuhQ?>o5I(T2-W+zV=3zLAypj+GBKd3CiIH^RX|y&|$WOI?J5beTcX;nTnTW zJh9=eGUSv0pB5nSe9N>{yU*$6lpiW*{d&5rI3=Rm4~0MnAvqu9*SXrtC9;?QKtfY( zHn)u6OzQfqDWLar15msm+5&0*NgLC3v#)G2I5e(_-52*7);UO=e zgllILzxf4ZPq_}e0Hpw(CP#|eZaFvr>WC&1K;ozbj8OsTO)76HTZ#G;hb5M+?ZX>* z;f5L0Uq|oR&ukjAp!`r)3Y~-uAwa2Ir!8O8;qSr0;YV9R72!q(k*$ZV?06{d;l<3L zW+kYyWes$8A)u*QF^0JIma4$TY?lbWdA1G1!XMk=~`sZj{19u$o&M* zxDCqfS$E{$YCh$z&QOa=ctE5{S$ZZUj)=efrBFQ@j0jo~e>%5IYC_qc4Xajj3HcIq_MmGh6BO%r_mtYrPpY20G$+0X zA`OD%qt8>P+EH_k6Q}s-MsKL3cQHO<)vuZHGWxWVeF4y^$nLbaY7JD!sN6 zou)^ZcX#6rQ^(?Z447m8lOA;6&a&xKv)`;$QU z+RA1&j)sY8G(S&Iiyjj3V&lkDx}cvk+Rjj{ca~&iFE1*}FZ6sN02c_!#l;2KAICNA zYhj!(?XK&=(5FUr>mwT6&K=jb4}_4CW=1oUv_nd6hgTh~2*ug>(<_onTykARpHqe9_RA)~+Ln z=F;n{DShY{Gzn~OQmox!+jDQXK~S(t%C)A!jzXc>F%rK+{P9>_{&7quToZ%M6Ql6v zW;;3Ye@`&LK*}N{8UwsXAMP3{IzB~med=#(YwLWvI8}ajf9bc_=l~57`I*CTwej)+ zh${qC$WLIolyq8+a%o^mmEX~QKuvSXQ%Nx^l#`Vm&MCT}2DAY6e3!6-6IvEc=IHm; z-I=v2B7FuYT9>wKOp71|=k$KdmZ~JVpZzouw0q@d2$4~5(YB8`Fe22UZ-x*(uS@oh zy7N!Jd`L*Zy#fy!Z2|^+*UA5kHToGH-{wGkLX795j}Nnl-}teuVZPu3#eMjr;gC{| zp#-nb_qGOds)HR?=8F{>5A++XrVMWkRrC`=SyuUmH zKfm(FrPH>L=0pq?B0~adF!U+m6I7V7UY@($zq$-Ify0qXP>?7^zJD+_4*_A&voh9Y zLZj6x5yd3n;^mmlf)Pj^)6Q7B91PV7;K(#awMGC?Wtg`4RtEC#5=pWX--MWWcn^Lv z&zn1H1v=XgKO_qzR8pw7`NoT&ZY7<1(kNSL00$6t4WKK%e;%olQBSigjU6(+Ihnx^ z79HQ3G=iWez~bM?J1hl~1=Y%99&RJkxXw6jyH8=w?}&%Js}ODmytbc;-xd{5d%rrA zYo~N(;cl&xma&(yu!Q9Yk4S4@B2g-QW;|Qj6tIn#m<&IkC;XFCNoq2KlWwUoV75Ha zD7XN(Hnwsocu!xOC1288pnhI()%>sA;BMVGU{M?yeX2yfxAa4_1}0IQtZ_u@#V3xM z4|kErV=^VD*v3T3e(oA}E5Tm`fBM4;kvREyigHzlx~O2&ETa$_3DLVu_*<6 zH2pWXvt?{t-0KNn^-{G0vx$QbC@6(4C-V=U)amKzqq!1DkoL~byYCENtXN?oa9j<3 z2C9{{we|i}eEhCq`dHina8w;ZnL;%yQAP%Whz-r{5@dN{qLDjr+@c)+m^le zsr?s|ul77Wt$go}S#2n&$WeB{GY&YCG$~@w z=FRU2d%u>E4NIhW&~L})qkWAmKFN-P=E{1`a{3YS;8n2FBQA^zs}UTtZ+~69*97ku z0O@q?MwpZiT_ye7oBxAx{JBysTl!1S)#8-8Qf1B>BL$T4d-=l{GGM-#ivTsgNp}Xy z?u|RyXgh4r(p2hBAgWl*TxmVOc!xVHVh<-tY-M+5b6tS;%3SeOYe6JoPJeNNO&G@; z|Jli{Qq3^qeRTI@#);;FGfk9dx0sgJZcojZ7-6BL%(4DP3<}Fr=Hz55NOC=ek&)BP zS@J_zaIN^D(*$ACQ;ymjcAb=Z>t?Y5mtxgb3K}%tJlG4!Nc zjENp6>mGq6j)|ToD_-|Ga$XQ0BH*uj%;keI>C_v3xJ(>&dYtR-r&uvbv}$7%M=mZa zvHvP30!926*3{xJWXzP>rgh3*UKb6+c+Oh*Z#p_UhpSED68cO`OmHZpZ~a`rAr=68 zEh8NR^-0fT4?7@mWPh3Xw_Bi+?dsav*m_8aR7`5>Z!1U;s2Sh9@z-uBe+}djW>ABZ z`Sd90GS^U*$M?%0%6bV&S75Ddyqk>M>an}fDE2=#oVvf1W~}_ zvieDtuzR0(*Y(keYE4EGb2ZX5{Vf+N2?0yIdJp+}?Xhw#Hkq$q2bPvnYK#W7$P)*v z{wRsK^!>&LUQ3WR$LHQM2Fy_^McQI;kb+;yTb7C}1v+Piz2+zld$&SBU=g5Ck*{~ZrOR6kj0 zQUbG~3sL$-x`jnYP>W54AIOTj3F?#j(&VybeKPIM_74@UWy_w>=@R{b> zPcRQpWE0C3-C*hRd|K*5H(QYn!$ViD;ZqY zU7(M8xwy7y_XcT|frEh+)9n{Ags||&X?H!u1F=Mjp2V=i4<+FrVQ^k$t;Hd6`za@A zsn!ftDmv9H$i>Mi&+iSAGunbRC7I2PGd4DM(3ll~!X)jhZQdADiU+wvqV^h_!0GAE28Tf#Mp|8D!w0NecJc@41tHq>^hu$V2t3~rHFC5hA`<5geXiuZ)VHyJ`-jG zlbBIr3G|v!z*yD~MG7_OQev2BYyPpdz3IHc@`;xsc{_HW7Uf1R>)H0TISa5Qhim)>12rb6V zP^?Bw?Y%#6@ZD(6$Y=q7tK;M5R-$D_i|ZOpsXbs@5fi0Vs+TPoU~RBWpmPEiJwz12 zONd}wW`hNRYHH#kx)D9w54zoZ#ivhTUnUvUO(24SKq{ixuehw{yutYsij89@v*eU8=uAP<1_d6 zZ}+ImH6#Rx7wF-T>;S~~?13$J5$VAs#z|=Pc=W8t^$8%+n7Z(@C02k#U$j|v% zPJ^>hs;T8W993^$-{tLs{!FWf)4KOHLkkR!z!>Lw(|A`L_-Lkvbz+uDA-l@tHX}4y zjq|K+d|xU+@7G<4SR~qr%5jfgWe?CNytd()&1dE-n%&$$*V$mm?`Z#oxo-^ks50YR z%;9;?FTK5-0n?9cD;=l(vyq$co0=Wuz2l{WH=I-D%FM7GRSdX&eV^m7Ff(wR zqcyl|uc2O+gy>g}+YC0W5GW>=#x}PJ~^<1Y$bbVNP6$`U7MPGo;ZPMJEKm2NFW^gzz5hwUj^f6K!X3(fCqci>4E1X zorY-jq)%ES{jxWJ!&Z!fqpP%k^%+ZVUD3^!nMtK*Y=|^UG0WD6nnq^sI_iUmxpT^wWncEykHNd<*E^EX1otwYCdHF5ACF>E{evl> za|~6f7tk1AKDbTndY?VC9a+;&d>7|-|ppYtuasnuS)3+}erel;Z8+3!|3GPwuNYQS;NZh6Mudfmb5t`C*`Z2qSv6hKicLQk99HUaSzTu`H+Nn)%q4c%{xw+haP~A> z&$t#jD()PZab)Rc$%iVKuOPij_;P5wHe~%(`;l!}650N2b)9hm_rK2i^x!U#T=01d z0ZGUzIxU>+{6(MC;S#ZS*dL-)^QmSzIZDrt2yGHbx(9k2L=N~2#ery{S7}dAUe=U| zt)7jpkrBFyYgQ;@>n1LDf@asV;j@*7M%OXc%|pP2O{d*E7*GI(_ebL6_MB!Cuv~uL zuM(Jeu0Qy2<m)D%(cxo+493+p%HovwEdnd zf7XOhKih4f^vq}OTRW_xx5&SqXHJ@i$yYPV$7+{(ZXv_|Y9co$;O|!t&qg>2qBC`H zuEb3}=VWf>$Wjl}|LpDnOad*FM3Hf`JfLp3{9hxViV2<<3|>ga-%;Pg@&MCZ(Lq(v zM2gDATw~y7@<_jn0;%;Y_leKb)HEEd2sI?oy#oq9v9h_;dM?}5`b0UiAX`Jz{2t?8ee{V}UAxDtW%EXo zyY@qF<#)Jbz%q#>pNIV%evbG&;RYe7VZQUO#Qrw>#`;d#qThsiax6K?KEef7|d0omR6WUQ_0~cR`@(ns_#3(zrTMjo0iBxyh4!1X&Vao#;7>5 zx`EaYCO2~GEMBaC_Desw2+-jF73AjDppPDLs<`~jhmoQZcGqjMZT9RB`~|>&UO9Yv zJCfTsKi3-j@F3Ml!b-xQ7;eXT2>!HvAnasl81qr^reauX;DFk%0M$dxWGQ@JN4T546Vxn!c zwCLaYZGx1Kz>sZb06qqG=h%o*Lu?^O$1l#c&aD|#ceDgi??3a$+<5HT0#f5a*Au~m zqY!uy0GClUP-nbR<5m84{n?F(e2*JWSh||30zV-~D$Se!;{Eu_L@_z(sTb1%sTyt# z>np9@jcq^#=?AzN(c=d4eT`vdL;NaKq5W8^UYmEj)6D)&2nB;IA8c|W7D@1kD9UpG zaFEsH`x3iry1xDq|1N6GXuZiP#N&G3kTnGX5plZ>EQ!loOyLEaGT`!N#hUW||Cj#R z&;d|CAS4X|YN#2Jo4sqEVNye5voB5(s86ZLTR3)%f|oaysUuzT>Fx}V{g5MG)+AO} z4lU?Up|Rlg`;h{Zvpb#1t?-;wYrai#U_f(iyugvZR?NQj!au;AB2TZ=NK#8X>JJHR zK40E6*UrMiV!hhPa^2SAHME3F<>o|IY^s1o$+48RF3{*wwzzNX7B#MdCM!wudkR7Z zJ?28VbpB7}uNyUcd#D0LowjT>mz7Li+O_NllA{8JpP_Uy7|<3nDxKjfuT?&-(#!>3um$p3-OSKRBI|Gdo;quQDXMZ_a1f{U^Ujm?v^&|2%Ci7bU) z+|_Hf?l&;0>b>DBi|s)T&oGY2t8EjJ8#R6eh${>8c7AYFW%1YHCye%tz=@)`Q^Efx zCzvkIr`M*DrZN_Y=Nb@PhIV|OVKo)NAV_Py@f{s7Za-T)d7H_btlw0Pa_&Lg99^?U zMLp0JrN>Q9k^vcc@cuC|XpgriNmbW>CnOS8Z(LcV6%{F2S^r$^jqDsAhUzdD0lxF> zHp@Ywp;k0`Nh@zC30Av;xAw$8+ znb3>HV4)2S+<-AFfYLORg7VfWRv8b6&>#7G=TV}&l(d}SGld_agDOW(&mXp{Mo4q) zOhAb3-pHd243vA0dX2o_1*gxRtv!}GkoN%s3g}NsSttk#@&bf~G=Zu}#=MfAD1Q_> zZqQa*lqVWBW!`-;xWQ5;L`Ih;Mu6oA90pN}6Y*r6Un1qWjKbvP$+Q??ahqCrRVX_% zWK9GrG@!BHH>Ts59tUa+#je1MI}(actFRkhu}y3X{qT07Ce^?wuU?pNs>mIA_* z=Zx0rBnoW{Ku9r6F6YG0^+6@SW=it5Qsl{O?YxuGEKTxs z-C%lF_b#*}tb0PNo`lR1${zlbYb7m&rE@jN+nORyMA+oWgo+d(FMxT>70}FCY>bk! z(k^d*%UG`e^la%T8ck^Sx^0r5Z)|dyK(~8yy1wV2m=ISq;dpU@j)lkr7Z`hZ_^HrW zAe>1sBf^O&B{$;32k|#M`ofT<)IB|blgNx5oeS=53YSiAKu}G^3HjUQ{*@roYN5Q3 z9{^~3zov!lSBW+9FQiU?U)cJ_@kWebD3l)XdhS!pIq`^gnSxqv=>8~lJp-55aXB1E+EILH|TB0oSIy_ zPtP_`FG-oSb3G)!-SHUZ|FGe3VQy}knEw$lpAJUZM?gh2+Y&8V&P_|h2QGE?cYX1T z9wP$7%%@8KR;q-?12S&oD7)wp$VSmBYbfBF?L&t9t#*TXP%pf)?9}!roY~iiQ)Vp!%H3C z>+;sIP`!uL_k!sitJ0!v2r`An1wP@i%vS5z7fZ-NOf_{L#38i()T=TBa5w^i&$0lCax`Co zU$6I+u3EdXHydfMy})RQ(!8u-zfC=mpPFx8sh8xl~+MQc1znfM0wZm4Yno#{sF;my%_UFY<;u_bh-0p z4_Ju{YaghU%~6<+u?DKPExVsBo8pkf9Tt-SlMFTfEJJ_Fhp%-1<9tc5T6nH;9ga5W zOl^Pyy3TYX41C_pJQ_7>{ip@FJF~4n*oVX#A{NWVUkaeYE7czJDs|fWHQCw=ypj~} zAKh!M_n07_y&e#aD18T?-tZL@h7-!Otl2THUyX0T1+d>!0-;}>%nX6w-*VC1dBK*% z$)VqAme0MN4Q8pw0AIEASFgl~Olk*~#E}XNeMY!kS|V(!+tn~fzU_+5{JvTnEs+>J z?kT(y1YBO&UWdNnS!J1oE3&_e@59LGDTgQbu}w?oh5eUV1M;nbtcy1XN%V2W{~q38 zwEA}@%(NKOdDksZdU(avJexR!c;sXBMoUNwNiwVXXG@3IY>`031X!7}Iac5;vwubg z<|nsxJiY8lC5noG(E_<7)<7fe23wo@*=BjlJh`Mw;9-XbBjMU_b;E`W0#Ukq-NDy@ z^Ala2oxbQ__;=Q+JC6FCF-SkC7d~--JncTkA7s=Fd~a;$}(v(T~v^mFsn8HT!ozeL!wIt+ta%aCx$ZQKFkqhODtM)9DUM4 zqvy#WuJiM|R0VN|lghBl(RaPa6khDs;Wf;ISJ)$yNO=^(0pSeWXg5XCFjs)U0B$aI zjiqsoEpu5fz9%~#&Q~11wx$bs{Q|W=;RJRW%?V*17SHfK@p6X>4K1dgsL}J*^7Yw?OHi=A&YGqo zCHUr3e}+I==p&d~^Sn<Cs5D2$mO5Gp6pxFwu3H}8RF|p`s&)W$IwMv~7@H&3R4i6B@ zN3Y*b009pVFPp?TR&TW+s{@Nyw9Iiiowo5-7*88)RPeixoovg3>OU65u-R`su1PbBsvBzJ#=S< znPw|hTXgPhkA!_(SbSufO!6gJp&GKD(YnNKf7#$wN*{0F-7emC(HOg(8udlStJcqf z;i^M-c;pPpt6&1Hr5x2e1QFEnOb2tA@DM9=} z!Bp1+?f4qeWBOj1g)XvN$EW`CCB{3)bL8Z`X}1|o7_M|5KOHX zPztH+G?NcY(8jwOe}@GX!JrMZ`SO&*ThCIBis2PI)UkR$VPObj-+OeRYu$Y*~EsN5uGs4ay4)1{SFKR-~zg zuI!1Xjrzc8y1-$5#CW{APgrj?6ov(SH;=N9PE-i~0DIf8;S2N^45nabyy=-4ttLlU z6cj{Y`nCq2fYw@)fZh8IW&j2T<~_3Q>VL(VBI_~QhP+A#+Fyi{jJh)Vk(g>e+T{yjf^1OUmp&d93^B`^j57BqgC!7(fALs6>Zl3EG1?ulc_f0 z?vw`=E%}`u6#+j-=}*wBQ+h%f1Dh~@q$FU{FyPX{>B|DMTh5J8UV|ksJDAiIelUsq1x#rRb{Kpfh|6(i`JE}K{kaG?Oc$-l z$}I1V5oOy0X~_Yf-L_hhxv%S+PN+fubR2ofj18|oW#GTaz$L$Dz4pfgE@8ON>$L`% zrE0tgR5sPmk>un0zc<|Umsr*RN36i)_yct^^#$IcROds;?>)$G)#v=4fm4=m_xbGe z)*Yj1ZC22mCssu1Tc@X^WmPD&v+01UW~?i4y09yi!|Lj4#0QE0*Hkjc+cv#sW^(f2 zg8o;j3Juj#HJbj&k&Qyy6nS89Bm~eQA|zbK&F6<}93RCj!LgtZn1FNr0x%!AD9h`= zmz_*O2e*8EU4BGYy>1`ru$nh-+0^XRNwY#MG$%GJ+c#*I1`@`Pe@H8`b`C%46?C{_XhFo| z&Y#fFuTPW^0PsGMEfUh^$L80Ms7z!fM^HEFTH;OD-7;A0@#Ik zgYDWFZM~$VB&*xG4zLt~DWJ&H<@)yz+XC8Y^Bd79#gmEH5wN*_15~B#NGdtmgZ>x%mi8Eca1@J?7n6`Jt&>t6^orV7@| zx;x`brhsst1?aF84l7FD3=~vUAP{X6nxCKF>D2FRnFDxh$ihd{1xIsbT>3t@6#h$X zYBF0pW_m|62Fx+>@j*pq;~RM-i?T3-K>LW$w>^KhGWzHnwPgDDBSR{e$zjaGB{+_= zQ$k#_#{39zdZspj5e}L9zMtc}xP-*@RJ_HY31T6@q;qj;0^LBZpSJj6%}&IpJ4)?} zM19{CgG3Hm;PDFmJKqFH`YBzye)5Tsq=g!$M3&+6MHDk;7u5F-D&3H~sE*H-DIz;6 zq9A{*gOSJ-#3?)hnKxCdVLgiMt@xIh~b0RvyH;9;*nIQN>r)tKpO)YeAA{g>up}& zVaBj}fx7vv-jV`BPY-ZMza>HpCXKG8H|Z#%sdU^sIyxFn<%laTrUqU?GPi?DCF*F! zB^Z3rgDSKQK*>N3WN3UmR_zX;IUP;oO6mzgWph596n!~;=YzI{eoW?WXLiMP%^_L3 zCFm_#s0wGHG_#jHhIHp_LVo#5*YTT~g&pMkhD|tN>|?_&?dR%jvAO-Qfs~1H760c? zcb$c5lgmkBA4`h-FWEg26%|9%G@!elD^2je=rT^L!XqZ0m@Ct4vfttlK_Mh%U>M7d zmMz!@Mv`3TBUVn`o$Wp(pje^#19Lu`=Z$&Vxt-HrH;|sFSb-mqr&lTtH0WoXoWkPb zFz-VPus48manL<1(==mpl-yarpgAwAs-MjY*4TbHe?l@bqQ^zgf&Z!*gQp%O~AT8z*V_0Sly1P zj4e$yQ4_LyTi*pPrL=5N!RJpFz z^Vdmd|6AXql8en;tkH6r7{O={7+I0w?KjQ;PC&N)Uh>?K=&t`izb~{+`oWHV0(8Fk4K+$J1iR8~Fj80ib~ZLO0$?S`@-xd3i?r%_d7a~*NWc8oI1Ml|3T94pq>E^$&X>2T89<0_5XjH;BeQ&p3?h08A#Ay`2e118 zbUfSBT#0TRW#ng-+4G>ay`6~;7)3du^@mbr^m_)t_K}c}WD0$#r)l1l2-sNdp5KfN3$kp2fhx z0Gtl&rjDGcu@Kk2Kmx6;t=6CEy!_oA_^rnm$(?VH)pc}rQ`nE70|Fd<4KkB}*b3D) zPYxU=z0ojCD*C7_pf|tV8DO#B6wdUj^a=Cs1eB4$WT7g2gfhIH8FbMbOPAmI3Ad(3 zv^qXBb36iX;~R2R$+sF(yH=JUR+C|7k1Kd_NmB|ZZm&CfF1vMd;LpYaYl=KDlnw)w ze4`r^ILH7J^1ZL<+Nb3J5-+@;&KiK$&)eHOnfXVqZXgFK8QH_bfx5rikjw61tSeGG zunC_Z4s125^b`Q5>1@T#U@}{To9}yNbcIe+KpL0b_Q}Zz&@VZ*;Z|Jtv#XrzAFOw| z5VU(oYjBL@07|EI^=8mSF=;KpU#3U_f;hmhJY+5Kmvm&vB)0v&n{?E8TNNz?F!C2x zbq;@N0uyo*2b`F+bvVGxM~^jibbsh49P||G;3EHZu)5Jg|4}#XcHP{6a?jp9=F9MVa*cXXjuz#F_rwD zWM3h8*$BSKfzaRbH3q2^~Pe2OM-X_f4vPes;%H+A< zFZWl9_ctht5+P~WuP90E%2j*xyNGYAav#j0kjB|FF|l!shK`Qz4YYN=0|R+#w0J_k zqM6`qe9rQT){WEY0xQ$tu?UxuZQ0`_d@D%S%S#90S5O1&mkx3N2%yEg_*PJKlFaK< zsMU!iyvAF9?|dab?Q-QrSzcSdnh^CYZmC9QK4Y0~IY&LaI>V$(>9B4X?h3G{ zn`&$A6d)#@=)E$DfiRiL-8CL~-R~L(;&08|JhDi%=q$(H8Jfcr6`c!?XNxFJ4Y>XH zL8JfTH#j$W9H|`}0-~wjpJD*Xw;}b4pB90%l3X= zAD+~XuL9X7J=1DcdKrlf-!E64CbrCtHX9U+i~zC)&=^3zTRU6MR==>h-$CGcunG13)4r=qgij5 zA*jUTwRV8C+XK`#RjgLZ|D=tHi#q~1`YV^srF_6V)j9(j8)mP&Xmj@I&y#6(?I~7p zI{^rQGI1(5Sf|A`(%&BfP)R5NmCLT)&fJ{Z4_H7wFt`u*9z(|L8P!lW-sDpUsE)f= zx|tQqI89?8i2ja`6qDx7nNmQm{P)4@1I( zNTd@J03B#4^AnGEL{>t0o(E6uRRufs>3|{nC)USU-C$Gu6Ke5|>UDke*jpDzcI!{5 z4bf@f*r9@^{xu3ISuUEGfwAGN1OMU8@93njW2G=;n$lfFc#waVv5pSRIScs!Jj5(P zErE)H@+6t^gQ8s!(n`)ow9{x|$vF|8h>q!BKR@)OA7@W!xQW-d$exSOEa_|3>y^&XxJ)#Q2>DqL zeY*B%Xg5!gv;uKipz|T4zgKMUz&MOZHR;xq2Ozg)wOY|%zH+h#pRZM95@TWl`PQmo z;o)K>YOFuH#Vvv1_=E$r+SCIqD2NLn<66JNH)TN96&BAf{9nYawn#PCf3O-qCxD}X z4n}v5>+wy`Oh(|?p3k_xy{z!Mp0CSgXmi|~Z*!Mwl=O~$Z&-5MG%(!&1Z~Pi8t24N zNGJVc-@W-wKAXtGUtZ>44(_tHCkqAwQ`Zc*02goZZI2+YTvt~YZxT%5S!X_eymWo< zbIlpyZ}i}}x!D;&F=DY=49Pe?Ufgg>;=3##K||yI^;6_PjAl-?R>Ma)L!o3Sxa*LL zs06VKf=i99{_%d}fJm>ZTIU^!8@N0LBkByS2=4+x!te2HR?(r1%@BAgahT^!cfkFi zi4>dueB;>@UnvfEgP#NcW6ea+h<-5txt}q_@J+Y7OPQ^4L?~UzkBCRjowZ(cY7_1m z*Y}D7EO#9HoSZK z!f^rEtyHbVaKQ@bToOHRk86#GFrtXx2Da}3y%`>#>qn-x8w>$2L48uYHP8_S;;Gj~?qUE%NccKK4_do6_39Z>&yjzPPE_}0_+(Siuj`~8oQ5*sVEPuxXh&CJvT8rs_3z_75eK5hW} zqx`=X)^uzcnc$gkwp@WR34QZmq_~DysaBGs(C_ubmoM0jE>saEGiHvb_cFDp67`lE zOw&B;ZEjg#ixdxniPjERig3*)bT?aw4{{bx9^9whQ#mb?4?gwJs>RF5eDts(Q7=>5 zU%5@|)bgy(iisKAs^BYbaluU$%i(UY{t5d3Xu1lZD!Xn?C|%OhO1E@}fOIO--6`D- zBGTO@-QC^YAl(gubm!fC{&&W4Mn&ShXYaMvQ|ouQH5GnJU;b_M!=mUUqXx58%+TrM z*%t#@*%>(+5}BklE9JC}wSjx~a0Nixg$J#RE!|%+BSt_1 z#WmjauP1+0`AQ$APcnaMHM6xFL!|e=tB;j(P7gd9{i6;t$R=0a1c4jHL@uS4bLV^> zwx1xoPhQ~BG0a|*zsi^&ldx=kHdPt-L1;wib>HDqgCEenK+4ycebw^vC?C-`?DuRt ztA`SqoSaNx+Qer7gI-e;4+e$w@HIt-FNg=y1BVD4xSz4K$`N3PxuZtW^w|(&oAuQp zmuPq`-+9G<_|{9$qwq5%!~hKK*nh!+wR%GUUG8?x5X=rV%s}2|x=?LeI=fJzFBaDE zGO~bkH&OW2e4)l%Ip0kkTnM1IeG$iP*>YuxhGx1t+?S?nwz_k%z=1X?9w2~=-}K`F z8r|UsJ5{cmr9ry_fVJ+Cp+uhHf znDJ*C5nRJ~1D;$<6g7>e7iawRnae2sj91EuNTTDAcI!T7#oMKK?ITZ?A&8kQjkyvl zTj74_vu(9~UF}6YYB_>HHtCqhG#ZiJ_}`()6THiz?GAbF&pcadB^h!{ zS!tp7+t=6AyLmVt3k(bE1#)SC)XNts{pBrd@_gj}w%Up;9td&pyTIJBnM^rCfeN#} zu`yH0_%E`wtSoi!TX;E^|5Y(;*k}IEq#As>g-}rprV1N(RvWrdyqVpjmV0-;1K2PE zKGB1?vB_3V^Q%Lih%nLrfYrYqE&5^P!svk-BWcRU7+Z6-EOs`xa4|Sy|^S(fQN28R%haLJdI&U zdSJMZ_-Cg@q*cW_1Xke|QLiEw^mZX0EpJLkX9RwTbZ76F6R6YlLvSjUgj9aitj-%V ztld9e5o>Xv{KmM&k`;$#`kX>$_*e9zu1o&rc73uH`P(uNsa;JgZl)KS>}2P5w#8fs zHQRxkEI43os@fYfRYfCq|HeV*C01Be3>GseQCd`{7iU+4e{~?$g#{--EX()t4ji?! zgwJhX!8R`1KLPdxpea}+mPddZr$a&U_hO9$&zFJmE?@*~n0J4?v@g|e3o9#Q1i1P; z@b(HqbC~`9 zd9>^%U+_7HpeP&jH^>zQ+zkzazoKD{MD!B06M|%k5+Ha8LPSYlc(7Fu94Dv6qn;9Y zc=&fN}8VK8KJs;F&=mN4juPg?M zh|+-5EU-kq&Y+f@lClb%`WH_@a-ZS7;s+H~SWCVoUQUW8gb_MugP_H;4q$aLK+_N_ zT>4zdy(EAdfNgkLG>7DCCUiqS#3ZCF*v0?(B#2X)qqNNW
E9v+ie*dA#@SWH)vt!=jX_|LF|-1(ygxaVr&+#`MU zbJ4J{{Ijx1kJ|)(EYzH%gf)N{F_}Zk4GkI!s-$!v7E~b!n%F;)5Q*7(DWNB<82`kn zkxh<|Fsoya0~VXO-gR|2ep>rd0gje|KSMSaiFZ$DGulj5+K5)iQe=D1wpE(eovQ4@ z(m6kYQCrrr@W)v`n9jcCE*V|i3@m}d6t8tS@XP1%JYHtdAj((&VzSHJKb_dtiqW-g zE*h-a&T93<2NPMH9~4!K3$(2qYSSp6>8%+69#P4GpT{|LAS2ru@-H7=FDk%;Wf)az zkC6}>LOK{{wzg%z+PVM8pZFsoKBFdZ^OMAD5y}8U(eEz#bw30dgUXM^^JRnw??04i^_eV0S++u5=0tG;yR;Z&uU{+GSkbb^T)#TRmtywo z9Zdp;d*;vT|9dZY>PG;S&j;Ge=4gp4Dk_RfvypX-Z+68@^*Ba*7UO;(UZ?yag$j_y z<{S4ACJr#z#Wfy&K3Y}=D`m#FXD!Bv?neNUz6ELo5L-+YD+x@XKt&QiVmB~q5I0|A zf-?l9`d{ zS^_js4&1UmfF@=R2T%@ni&naRrau;KTy&g~R?d2&ahmQ{zk=h~(jqwGe`d?Vi;9Xg zp_Q5GR4Wres{^6sUJ*ZS4Ef1&y6|fXw*!Kg*Rv31y|w*y=B0Ae&HZMYNIFk@MzE8~ z*CO`}Ujx^x!+~_KBle>ARSpMA+)hWnRaMC5JWjIWkYw1=PCxD%UMIeFvCBXR7L7ch*H;UeG6*{uABAGWDf7r`J4D$tb6>*pOH0W3dK#?5Mu_XlveMF+5F zD3K2_N0I2jq5r=YVE&WHZX2@*vy4~DRaUL7I5YdoR_-sP{AgO@b+q8c#u`eHpc6cG# z0i!=sdA-!=5KJl-Hl86Y_58uUCt@My_pMaL7&)By|L-jGC)rcKHM9y#|E|LHEOlr zmd)5Os{X&Qb#A_({y>;MvH%pQ)o03;}GW_2Y3PrAD z*OAD)kr#o)+Nb#oO*i)mZU1vNHHl=b?B1s&G}mMDmg^Ctp<7Ra$^jz|WOO*rYX_T1 zk1;@+HBlRnHjmwtkuzB?gp-kzPc*wA-d!Kd>FE3l6cjB{vI77u=vGEX9d<_vqif!H z10mFL%e7}D896m30zgO+JT$yPI<4*D9Fw4wNXYZakf9e^>@q7USt%$cp^KY+4VhD9B?JOD$eL_AmB3cSM za#CA9u>_W2{PrR}ZlKZ9nZ@u&=U*Ui!j5_hlu$2huc#iDxzN1lWf z4ek|`kDv~u#Cyj{ThCu;IVL!3L^yxL6|;87^t?=P@7|w1(a>ZZnLPN)>B|A z!QNsEkAkqkyT5Y-1budYuJJ~p4RqZMENIN3tuP09y>8E;7?rO(W+;wf-2p!drl~hX z43ug}xF5V>kk9go)F6EQh%1do@E~3UzVm0XLijw;Em~vXAr>g=x7XLkBd``uQMZz3=9k*xJ*$BS)x&3!V5WGAruFE@Gz0}b39y__|C$z zir&VQxa{=Cp-E`8A2MUCLyjbuQ*dsqt6z7ho6VAEf}l_(OzNn2ODfh15sD)1@skKj z(!Zbh6;y{;WR3YVvuY7UwfSsVytd~&S?+|%&3@iK$ky3BJ{|*C78p)m@-9H>Os+;o zK&YgOP_6rxS|Mo#0}a#cm$iBBKurAhZATCmEkt=ujUlM2a)us>v0$<13t)ta@EY8F zonvEVIZ#NB!7TH&+YnXVCQ{REP!Wp&D8~! z$W1UuATM!&eGke+NcOgrD3_dfkS#--IIYfvl*2QbHfkP+V zD#LGk+&cGAP@tj<)?nV_QGfC}-;E1bNAH^3IpLvao3YgZj~bl3wb!JcJB(yjOM0hs zN4XA>=rZTspop7NC{lkdd_j-t#$CozdHPmbDxq~6Y`6Eo{Sao!GLtK5IDvKPhMtll zJ&X8k3Y!SN0TcSAN1UiCtX)S&=;byagiz^CS3->?n0Uv2y=!}i9i~_;XJua>+V-Qi zCb?uEwEmZG;Fov=Ss+&%-A1p>m)Xc%89W6bT>KGAB&^{MRpxlqt?uCls&M=AJ?dPw z3x2>8mt;;n%~@Lou|k^`;rsWbZ%ZY5p$F+8f++b=l*+fyHNzvl_J_6@`5dA3NXG(&la zWHaTqxTSBg9fSs^fP^EbpZV+h5%%2r!|#5PYO#2I2r^Gu+56bpX_yUjBzC=)u_T_+ zo~woxLv*APPaAyo@k0_u9)!3?HNmm=F79jQq$-@Wy}Os25j-XYArlk0Rj+5hiHW$> z)5=Q2AtRd7)u7{sp*Z|}MQ3+zlwBtl@H4`<;;nQS@1M1mS@YpAIWG1Z?$7<^eJh$Z zy-OVtNf!7T(Q~~QSv6rQLl_ncs&QulJhB?Ko#8}b(AYy9w>?8@X=(Yh^9x#7AOQ+` z6P(Q#nifQ0KRlWzSHI*1;B$Nv$&mkGG54Xlr3KLer9s!qN)8CK%x6p4dI3H&2Vi`w zR@G_-_MXU>*U)n4>k$m))|^qFZ(4q3F^+>Pbn?}*(ehC;8JQ{FRl%3(WK(@L%scnj z|2vAlII%z<52}$dx}Cj!ww3mj@w017TDsR$A~;E33OHEa+oD=Rm*x2J0z z(E9f*#=f|m*1raD!JV+N)KEoH0bZm@&}s`cXJ(3(&9VUT(r+`a2BWq1k1;e~X~MPq zr9cWEi_x$kfQqgbq4NQJo{=tWYA8H4Hfy`l!~uV6Oe$8&`>V!_tC)z?Wq4#H6tL>R z-j1SA$Ha81u>KROzF!=@d#TEOxTmiD-1R7b6(5BjLZG6`w22`XMwM z_YPkx#oNwOA+u(UNYzw`M%Hmtl7~MSa?cHv)RVTn4|v7+`gpT%lOE>tlfqx~h?PY*?2aq((M<-!zHLd0Rf}jf5Q(FF0cDGZD^f5?CgD zsE0&0kEN1tJK1~S>c*d0oeW0ta2>EAQ(U4ldL><6pk4J(Ag{rsTGrQ)`({z|Vmkx5uglCcbT zsz_3bH5)zt^hl1QI7LrGi8)~{<881xwyaW7a_1w=S6-&{!ifrHGoP^rO&SD9P8ezT z@gp)%Nl|HWjb&0O1lS<3dsL72#*qbr39Y;w02;02@Eg2*I5@ec=U3KeQC zR4HUrzNe<94%nER<3}?A8Xg|SQ#_H`Fth^nVTlcWfE~=6qafYx21I_yYYIGe3z1}Y z%d|hY(`IZ_xsT$uwtyMA+L~6@rmwW4F0n8<+fOG*o%B2La9yX> zY%m>2V$FYDz&|2O>IQn!>uv@HTc&pZ?!KXoWMJLmkc%JL9r*~e_To@&b`As@Uk$3v zOuf*Ls9s3X%lefYYcQ5#Lw%_9-Z2&oq42up7nb59O3syvGA4JWbVdTT8pR%!B>y@p zDtq72H2rO2uf!gG{mq|p;=i2Aj+!5hh)b922eKJkcQ$fp6$>8FwLRG~Q5l z?aVw^*4?w|t^GcQ-y*Kji2gU#tv7+6`$zZc>>9UyxvJaWP<0W{4+x;2tgM=xeqGiu zCBIcZ0lq|FH+fqmUOi3`v!S);xx=9vJL%&f8@kbxo`vzYvM9D{EPd$Jk;nLf0x{Rs zoDk*zPSXQO(dxQheb!MRm;&JXONzwd;o%EHT<>(8b~?vL>2}05|An7xs&>AxnV7$A zw5L(eC3rWAED#W5WCPy8QWHVm*N5{XarBi#nd#}o#9j~ZG>Af1ecM0``3h!G0*YKR zMyK7|3BmFZsKtPir5mt#;7(jGsawfZuRAgt_zFsjYLyW>SR4i-r)+D!FiL_R7Y+_i z2goOT6Tr49U}gZ;-&O0#dE1k)Pd39pJstK|a^H8n89;h;C00xAaF&i*%ftF;w1KOR zk0l`I>@R7!Jm<1SRHc+U!e9JSw*RZ%{r;exvjH@Jw8}sf`Tp;MDhUgqgC`L1M6$B7 zqL6#Sq@a35+>jn1T+xue~ z2yi0+y+A}BKdeL)sCsC?>INJ#k}r|fRD zz?sD}s!VV|aBw&QN@Hv^RaMgfeXh!wqpWp--pg-q(vIKA&}H@1KkF2Nvq2KO*5FfF z^d@27K-ri@#I<3G#jlUVL;5-79aett4ufu);?d=6iEb33%y}C0>`weUTjF*@Q(B*S zhd$nl-r{E&jC3Z4|9c%iGLbqQLuU3#L$!1qCJYWmugU$ewd-Myc8;a_YBIhy5WHZy z+!$MBynSie^&@l-blYhjNHD4-Uo?W*0qyoyT^(>Jp%T1IOg@P$#*^6+7%-?r8e47y zVJzKc;O``{E>cNxFi(yVoa6-ib21aJ?SB5R<&=jH z|7mbH>>}FKT6}YN_rd5l91ua>obGZF2%Iuv4c?#LW}mW}oiKy3Bw}2?_V3b2D|7($ z`sSzfS=TekU?UY()yRm1?%uXKygnYsGsO%<12R9zPyCp_qm*caaqYR~smf_I5psk_ zGm(KMU};Gs6e=C4k}wD{g5&eV!aUBT?%2*n=oS~)6dEy$3xE6LPq;rHP;a2y<$sPv zg;I+%7HQ*FQRPcR;Nx9|N~Cm(fE3K>d^~@C!_{B?VhyMs;R0saNd0ge0X%4g0=r7(e+=j=c8RBBd3{ zK`&y?fh;do`t-B{1^xr#zoGb*?|WfjsyZKI`579@6j-E4^8@KN0&oFu^*t7AHv4j< zWEN7-9N7>IEbxDK8BZJ%EFS|EcmlTr4Jr}uFWs&mA%r}o5oHw70Mx87|dr=_d}7EnggJ zrnL^t?LZLo)dC}uE;1=;5afltV8ECNV876*^o$J(3d-+dYRdVdX)|EC_B}bV2A>1C zce%pC{HqybUem%FCwVo+K4#(B@sS~+Qo0Q~H()vw06Yd&%`z7exMbA#$20VwGz=^V zAz$lsR0tI@g}3~yzY`i6wbo6(tzbFGn3gZE^sB<(Rw-dvOXwmxSdgO&);DwXo%MVb z>tICp(1_MQw{9o^#6o zE{QR6JQ?m)nft^o13TIsS;7V8%>XMd7n+~z#NnHFm&xwTW}H=CNs^mCF1fr;(Z95& z4wg@B!lA$$Zq$b-vTTYi)Oz;Ro33kDH4Y@adzV3`mT#}AW6yo@M!}?PRm5!@uMs5p zeq4+8$)5PtWQR(`x2F_)@o7Kl8v0z4@hhvRc5rSkl%kL2)A zD_+TgEYB_$HX$t~SkWt1{bE+LZs1R3A4R0iS{LHz=zNfLo+Vibxa&9q-)>-t-xvm- z)*R`=y?I;}CVpc&Il6yIln900LiD$Uhpa?P$|O%q1mzJor-hI~7$(Es@xALXnOa14T165U3 znZ7MKW7vc+fYfM~oy5zwy(3?xg7#8XeM!1!axt3_u*@oe*c0q_hxK=Z#C{>!s*J}v zbv~>C`$2bLw6&cbZS^U+gx*A^H0?RZinE_&EDhG+T#-`A24J+iMn}T{r*N{Lm%dFE z#$~sI1e|^!b3UJ*_7NwO+wobxKtq!~igP7OMe~3`K;hFOxFYcKR?}}~+R&a4F6Oc+ z!H>(Z<>Jui?uqkrq6<^b3yMEA=TXP91WtWvc*mH#cw$r2$qjV)N0ILbTC`aDk`|3TirY#6Ch=qwwKG& zYKaHEGviV)jUEt3Nh-!1TFjTIbC^vRUWORI0wnx9UX7J|*ZaSapWcTJw0AVo$>dpx zWK?bpr&_bBonLBd)i(_>Fsn+4i|ZV(@ZI7I7Pyi{RS2rRJM`mcWc8S}<)xQ!3~TTd zEX_t5&u`nVMIG%--Q2OsL1=V0qX~P{zje_PpVr2=h=YUZ%l5DDd8Uq?22fpc*&4JWzBRxMk*5hR zYp)XtLg9H2Ib#STWJASY*XIwJ6Vu%Q91&6v)QPu+ej5qj&cyo0{NagP>lt|z1D z`6qj-z0)3XeYB~6Z-qDOwmoYZ9Zx$S-V+!EC2T3u*Ae%A$t%3BN(%yK5R>a1`)Lrw zB1!8V9es0W-4F(s6t2K6VrHiP-gF7Ahud}M!a@?54|S*F{w{glL?|b5=wHbR$Y;27 zMT7TY^T=Hrhu!|<*TX{#38|stIQ!=g;Ro{>!O8vc05Lsr=~og$`+tJIQfv2*Ad5zg z_jPB6hcLhC#zjY;Fmq5*rh=U>beAYFtG*`o)vtFsF2?1k~Jx5|6lS6L9-@S)N? zsX@V5T%63M%P3{_NIid+7L9i-f6883-E$!us;NC?aC_<2LYy>(p!-LK2eza&XsEN>@U1`)1ViEh$mT4iqu zHN%Mb27%L|ys}acEZkGfm+#27ba&?kJpqV-Uib`cf~mZ*s?}gl_nUGXSrFct1GtV)p0Z zJ-btov1g`6M9K+^qg3~KZA+E&+5lRTO|zfANbb1hl@lutSz>~nLlEE*|n;7p(bj5 zw$pOp%5i=(*Qk#JCPt>f8jF<}r@L$Y<=&CQc_(jIhlj+o{by?j2i?WdWsBvC;O=fR zP(1wyFnZ-D>%Lc%kx8U*Ir$(b*IFNpYPvciu5G>%zP%W-YH*>gn*8Q21ocCat&uJh z3qshP*EJUXtAsY)JJXsyqF1B^({bTN(|cKZ^4vTbDt3vh>kmWS{!HfB*f%i6XOcXhJ7+mg1CN*FXgAo4AZ1crf4Xk8~ z^5v(&+x2<0@hsvfq+4Bt_-sa##FEHS#?DswwyoB)017}+Dff=k+55Z$AlqZx9PD)6?^?Y<-f~c*n4I$#= zp4CH^^Xu=2iv!z6yo-uxyM7>hnMr7}!Aie7>}D4_)*|ENj%3zS4eC^t3>x~8oXi8@ zFY*u8@l0`Gif#39gNNHox_&h{Q$-g6-;j{Lzf0`VL1>#sGXkTA-QOKB_$*i&l!6hs zbMFGdiPhy>>q@V($akQ+MaLdgd+1J!*8G7$4Z@g%|3DSfN^-_~MF9Sq-be5xy%UXC z?jk`>ftZ;w2*O)3a8_=0W4wVc7@Ph*^}z4b3Lv#G^2bFO1o$(T%jZ_g(yv9>Ev_v} zzn-GVj<;wq{p$j5>wz=H^T`DUxOO|i;{a;+#G2EyGo!Pufy33dbP$S~IT|;V2)N_2 zwx_}UsgExO8_evyCHpx1198Dey2)Z09ohW^cYJ*f-*@ZUa|jd5mJ#aq$iZ=rjC>c? zU?Zo*;n8%X{VwVa+$%;p4dS)nx3{T=kRd0tQ;_iL3WVTOB$P(Z@Pv9v0J1N=|`7&cmn?h7a`YTG;5g z!>M9O1Jo)}mf~3%S9Jfc1t=&mITm1j^PB4MP@bDBGd#@Yx401T+dzKivq;3y_vZu% zua$BnGwm7YL<4|w$WpzfGtC1wq@v{>RiUp9+fuEDZd@fd!3sqjFVx>L@sQ`#d%kEi zV`68lf}CeYNpi)j1)FcN^+M&5{tZ#AfKNzOmP{n)drnl>BS zr`_%ioE90wa?tvLKc$3tlvkTeeColPX^@nEP=6%+G(DT%(QrKH#PzZI76~b2MDMc zgGUzwMD4~V(vnLPQ5P9Bntv)4^(-trJV{590ll0aMK|!df6~bqo`2#Le zzM}tuS_U{&999fTV%PJ2ux$bHvr{sq;|G^7&c>6I4}fQ30mxOJ>(c`o8e02k>b$0b z<3!Ct5hpi)AF8R{J8JS}y`>fQT{bCMk1fx!-OUBo(6m_fGX4Y8|3BPMU0{+%1gbpr zgZU~P$($(Av4fC)xjlPsAi5CR?3Ee5V^psV0dNEeM#JT{$My6~EJXmK0-|UN8CI#^ zkPRyBdlSU#$H&??IA2A?qq;%wATAMkZ3u(p9Pl|uQecY9v_{QnEDdbx5(Rz)v)?8F zK1pA=jh(4w#chi50AuW}E@n=P2D8)Z8TBOaEArf59}6cNJ{u3kl~h};LW2E=!4UE_ z$SEqOM5rxLHXUnP6ka$`zXlC86QjMe>*Wi`o!ee1)X@_=QA1AKQDbMyR1w4@#clfg zkPST3d8BXMsfu`~+Ku+5V{ha8d^T*IO+!bVaOyZ1K1k9zU?jH2JV?*DV z|K@8y8^+P8z655DEWAWpfPCP|HZQM*T1#aM0$T(THIyFjbM&lSa@DZi+7+r%lc}}# zrS}3Oc6UdZRshJ59(^AMIlhl1L z2t9N4FtA>452>c5_y>&q_%34K@s46TEvB?IUo!qxD#I5N{YmN};V-o2#gBu(tjos^ zN-D(LI9yN1DljOLsqC=ndVzU>`-w|&Zvfgq)Zd_6acGniuO#i(d=$g^;*@^AW%=)| zy*O#1GM&aJM-_Xsl~C^}|3ji^pUwrm@G=4N%;)>tLKvgT*%|CUB1q1*Wt`-sX%^Hy zWRp=%5{KiDzwc2p%WHcpoKR!tTgysllMzBw?ykvoPpxn_HX+5I%t_gw*lawjt~WJP z1W!`z))YSoJUjll5X)=@m`?(8G1C#lSZm|L)~nVyJx2RTsSn&48(iT_*W}r6#M}qWdCMMK%)Nyya55Pb3572 z`uayu&R!_1-vt5@adD#0PmiGUEKz+1)Qa_5yC=kob5{6-0|m6Uwzli_(a2zIrFTbf zZyb4eP#uoM2;<^B?+w_Z(;Hyq zYHSe)xpcBxI{}Bbw?tr1k~__|`-AEFXQ;wzU-SEsa6&bRGC8+9I~o*B>oS#-ln8Xh z;QRI(v9Z3`!X+=+bUgIzK^I7sd2bmeD%O}Zs78BLGL{zdkOhSg6}d0tFZNrn=wOp$ zvd2M(mmqG#DRz5QKRb&&>+(LgBl|=3I*}+ckjZ}gP&Ib@=b#K86&3oI*K?hXwYBqM z0~rOy2fLjyaLIx=iYzg&3l;N`kWT;CSTmUHfHYq_S?_`X*U3-tTJFsEjf|v%OTliV z8~&wO?2H3r_uxynFc3}omU&CKxtVUs562iOoO&sqs0_ljV*3W6K}YZn=__V`=^vas zcYJnO8E6A=uY7TkfrjRHy3w2Dk~@176;3d?OFti(k7_q}_sdcIl9kGm%DcMwyNswD zKOBGr)P@$zZ~AvEdBmqo_9ipeFr&z9t{y)53LD;A2%FI~Hld!_+fh=+ zgynLi-pz5^XXsLR(n>lx6-y4aMU!`B;foj>gWe%``a33qVj59?bITe$`h?`o%?Gm^ zSm|V@KHRBX^V^*OQ+IY7UI%lW2cNdsvT#*tV%={gI0TWy9EftZjI6M1w)`er$3x#g zUfMVgXH8D)qY(iFr^4Hvi0g@=O$z$`gX|4U8AiL+*mzE%QHY?yL>if=x zY7~d%rZDoZb0-_9~)7E9Mwmg)=^{ z|IVAm(8>`!c_5J}H(UIwWI0saJONPQ-sXGe+L<0wYL%j)2X$S`%R_pzkB$pTcQ%N* zjHnyq`#O`XuB{r@zUv<5QzZ^P#(aFBpA5Nuyj~qYkRi^z+@I=Gp;nqS3&eYZSGHQw zafoH!^TD$jxM;->g34d5ruGV0VcI9g#5ACIkzyd@&m?yPO_1;p_nTqje(V^KodFLj0PB9+03{2d_+U>CW_*>jZY}$(q6Uq_Wl4FguHbJ$vjR+xWRZ}0ARM5 zJ27VXy$V+6z@qd+<$?d8`jC=_&9-_QR35$9aP}dH`7HzUYn84`5IG7Bi;_^^Z?V#x z2*eY+f8S%AP#5FExt5qd41SyAe$5>=ruv{aK2!>)RI79F>RXPXg195YU+;zGwH%{F zCI_hRIHY3Z3(Gps1ma=rq3ZKOkGw%vF-(kWP=cRhQqZ(pJdC8H1kD@PetqJ#qnd-W z)}>{wI%)3DWBvs}=Z;FKi4d!v#9iGTAT+#*!{u(F7XDrRxqsk9wV|GnfbZ8|F`a1P z)BX#^@>(1eTHg)1E&7C2Yx?w6Oda|;Xdt?n)jU4g6b{!C~U zUQ3M|2(H*o9whR)p#Yc<;zdsf^p5;9mv4!-1^9;?R)9BOrA=#v@@T$_l90!dPW~B; zb1&YhIJ(=|U%yDIHgOmns|1R(uawJxh)jJ_<5Dh{p50LPbxU{|6{xfvI zBqff%XG_JJH|xtS#h)h>*>E+Lv)fEDZ6~;H!Zv@vCIxi<_ zQ&w)?;Bj;b2B(X!7}v=Ov@x+f)px<%4+Am;(LVn!wLqYxwB7#W5S@^kN`H(@;7ums ze%S@&u@qCeUx7T<4Vu`>O26rQw+Qg`49ukZm`qNZtk$wwUH%Qt3n-usR4UqDi_EfE zY4rQqPxaf3?Q?$wn`4Q$@*&Q;O=few(Eua!cwTtq zJpP^uMbPAsv2<}v#o_WEM0kxcADO}+Gs{46+HS#hbmYdy0f)hu6k{UyE|wDrT>zNb zyMII=mo4ViRroH&ZM_E2!~m@uVXS0NAF)?d)}ymc2e<@*9j@Fox*&KMTz>n@O*dTc zwVL0KoZ9JXG-3%$3*k{0s99Jj)^pFxm-zCG{E5qy_#0(ZcbE}L{Yo>i|1|NUExt2Q zYS?{Tb6_mA@oP(ijX+x0N9?E=qKeBkLV`n<*|d>^*v#ti+pY^(T?qni!ePM40y9@s zLR6S!L3_`@kNCm*iC;?a3v3L@jF4rr#%tE{aD9y5ZO%P;Cv40>tg~Y+4Z+_Mo9epU z>TnEC@>FW&L4P9$Nj)oL{}mFO$8Q8cD;tqy)H=gUfZ3V4_G;6-EsBA4V8bLHB$l5j z!ab)TukSoMqerpglEI6)nWqq1oLrUX#nh4JxToyhNxlZyF`oE~vcR{K%wbQfg zhF_5o390itfbF)oYf>-)rW}y_eO7HH?bFk-z>yz}LX?q_F`UK+Mnb{cv+cJ`df7d@ zM(^IeTLK%myaB+(SGR#1D%!QwUqsVgT(OiN3v{ zKciyI-o7oEKPQ6S20Ac`x2)8azus?fUnG(vGC-I)#=XX!pE%IjMw@TwuE|bO#PsNU zaDOWvm11uYZE3~ew((i%v%X#1Xmfd`kEqqa`^4fKr`G`~h?Gz#pY6ChXh(%Ek3*mR zU_9Cf)MYmsU2xGm>BF;RqCbhLE}OX*4IQg*(Vt(rdH(o`zqWx0uUpA!x`tqF9W7AB zgMCF1ou&H`q#aUFI*@<=c)>>(WC~%A$7RD{?wd$90Ph+XK{ij{HPLl;T70AAABLgR z=d`mcP=P-BEeb=&c2c{zLOvBCrmF@_!ApGpsou=c2 zUcNHnkjqFWuBO(*@w`7sjy%DcV8pVBo{_oiWBPyP`9u zi5NiZD}GB|=W-BFi9H~$Mn6zAi!N}0gCsF<`$vB^pI@sgFXL?BJ<-nwM#RN~HXpZx zb?Ms;L_Ixy7Q|O8oGC8P$^|a1ub7LJ%XZGTr62$?n=+b8{OnY6vB&q7Dov)NlUBL( z1bAghB+voto(a(GaJDeuuHEdD>z|MT1_U5pE(7A6Hz1cs?czQ!l0)}dquxedi&mv` z5a!Rd4?8K#YlhjYp--qs1kpY3;_5w+JS~!L7gk=YAxCds%MKi1NF64VKM%FH6*WK` zd?q8%LNewUG)D-g`Xvgx_krE2uYSnK+ThK1?Xea@??FlI#o0roc&7mY9Mn;j)-*)* zZLi+enUmXw;n}+Ik87;AcKyLKT^W~f?;@z_&Pc-s1b+hcVn=YhkFeNWu7vBK@5u?Vlk*nXC9^+irA4 zww{UF@fSVjNA_7}nnf(-&dZ-_37Vt7T=UvERTxg*BNu$B*;_&Nen$S*4w~b@Ksi!6 zZvXOp#m=lRaN)8{tzlBqU9&|d9BG&{GdFbi{@HEpnJaE+Ku6iD56G%D=0iS$Ci@TE z@HyIzLK{H>;>$!oW75Jxy=0nkhPyL7%$=)mCd5Ren;l69yuL-i4t}m#Zj>CA$V{7R z6(z=zTbRJ;RoSSF&417d?;QZgNoZt8;?L!*4>Bw$zge00eD6RuQL4LH z=E*a!df>&ufK5cgL;&@LTNZ_#PR;3!MAVJjvn5dG0~M!d1^NZJxiZC~$e!*Fmw68pbdVOEfO2X)#@T`+j_y!^5i!P3;EVq!wV5kFYe zlk@0fDF<#sAO>bJ&620uTjmL;N$-i!_R^G=4tXfAR4$v%|C}@Uh0hB>+$=^9-@%*t zxRobDttKt}z71T6j(;l;-=C9Ro%u_c7$C4Hr>%E}npEkVg@%16Lq_e4n)5h>{5sUc zVyJ?_yL|XlN_sPz7!@Nf0D5PA>Ky@pD)sl%Q)|JJiO86!G$}@vs;LVf+eGwH3aCWP znm8BpQM@?tf z$mzIyZf;o%{?h)>w}FWc(-L+Oz`WHh&Uwo%=9xP?x9;x%&ycTtJg?;Ab#w9# zESnH1n*|G4I_D}jZ6A=*D6pDP-W_f^5{Xi792|X*SMH$MH>&U7vrjz80UqHgz$|XE zBoGuV3d^D_JtS&Ga?mCj)HlxB3h)>=NPdH%UkMoEF%&~*A>%5bI?GM5SFFQ{DIiT} z;c=yxwtUZ1g`@`WCHG@d%uegLfyRetj;WD?3NFFPBxG}b-D=Ldv+)tSQ3``u+Z z!`EexaI^vu{(PzvxgDpgEZR*m-f_Zf{d(s%L@AMFO^zJSmxx@s@`7W>>vbJx#*tV9 z5W95-!F*~}PDv0_E7d8la%Trekx0CLlmraP3I^aL)*-i1P>$TT(S+ajS#!l@3HCxv zsq+^aX};lpM3uZ(|AsieCu40NPupOOBWN16oy{+GqZGS(jT4G9{CF)e64_&G>+pj| zc{}c89mbkrVJQGAVDH;^;pk+>{q{QV1%tqPyOAIu zYJec~g!^>!{;kA&!y%LnucTlGRyu7>%qz!w6gSk_jAK6<7F3a-hH$+eK~;NeYkr8M zl7P*l$bbkQoG=2e&M?A7$Oe=4h%`a(qDU*V#_8)ntW!UM6+DwGGe1V?n`UUM#Yr$@}1A zmYHvj_M8m}N9n#!aRa`$q`?NW(Y_IB2u+^uXD$I6FH^bh}>F+w?yqRB^-XM7A3sB3+YPq#DDi&!t|a)&AM|3kuVV$<~zlhs67?<`R1UBe=;=~~0t?J#yu zO{JcuhwQ{+%Y;HlZLB%-6$ zYER^;Fp(a0(3F&vELP(7$w(#8i)M<+$;tgYj$2d9lG&3BV?X9}x4K|7dp<$tG~q); zG8MR2-DrQqTs!{aX!iBW;Osv1#NLe?RS$pxT1QvT4U3yr`&v>(9N4H-pJOC}-r(K- zH5$+)VxWWD2)1;G?q%dEkLS2&Nv%jrcw;9CJBJWZ~3HLaimPnzYZ_ zxrT**Xeaujk2^}qh$3%6vBo+hTz+n0qskgvAzfOe<@y&>X^Tzp$qKaf(KYwCP0=j- z8XamXG~PUo2Erj_L|L?SvS)@X+q&JNb(#FF-K!8|qr_qq<{lZ6=#OQNj0&AoJ_S;8 z84|O0Thee$@Mf)e6PP%C56S|Vn0!%W@J_@ZBW><3sEK%;bm#TFL&%wAzjN6phgF+$`E$1fF)*sF^DJV?-!5W1o6NF z)!1ILKzPAODcdi!4FVIv&Y>~@K!Qz*fQryBmUZ9ie**>WqyYAsfM!L>!pj)QVy6ne z7(YF^MKi?#LJqX0&X1SI$M5YZIejFm!tjnc1Y1XrrwR~iXxu8FyM<9w28-F5`-;lg zWwFA#=uZr)sY3rp(^*G#xi()PQ9zJTDM3m>I;25LQt6ZqB?Rg25Gf_4yIWF_?rsn% zk?!v9cR0`Q{pWbrVyW=;zOQR$&z{fT)Ox>5`}dk%Q@}fx?yC!dn$ci!5q-XRu%`mM zO;Y%FXpTZ6SNnb|2lqsM1yM{o8a=CGf5L^-=aeNQ)#f?BN*3-}K#o3f&%=#^ z>dRBx;&tJ#)pzUM9}3)nmT%O_7<}igf7lc@@q=R*1yW++UT-Ej((a{eS~`grn2G=9 z_&?DrXZ9Ub<8}>Zom7U1u>2y?PH{4@1TRe#eW=Y#*w_Fr)h0GRM(4v$-YvdX@W;Uj z5FN zoYBomy)bTC^rbVEni^*og%FYJHmMJ1rIz=0H;PSYYdLTc`Fn8wl4?`T>=eP1*t$~w}!Y~qkhd!AIthLTMQ2;4-C%aE1JW5Tg zQ0(XjNJHVPF;A-P*E(yiE+eG8d&<2DQ3uce?*(982`{!JctY}G;VC-B)z9Ez zK9t={ceG@EB3vBdHrm5a>^Jp?H<6J?KT#5;wc8&`W}B_$=>r78g$mTb@Q3 z?Dw%4TwBeDv)$e+f7krZ%#~POc>~_O@bC--z0V&}JnYsvCN7mKw>zp~y(E3)N$%}> zb+;!k;#vPFVYDsrj*iFIQe{88NQqPW#E|BuBv_>_Ht502&(8;I3OP6Tf#*NieE9Sp`SJkYfu zLj;oRJ++HEx__MV|J(RiM(62SBc-W-n~D+5I4~*-E0hOQ^B$lUBHUr1ds!KMX?eV~ z&aYXIEvYZH+_GGpgQIL#(~eR!raQgJ(eAjC8c&ahOAL(=ah$r061NL`*tgPPb>8Et zoR8di)G=l2`LRzj)sY;oPqc+`(2SINqIsU7Ce%JO=PevvjXCMy&T{|LoH5gFro!N_ zXRNX}KQY)RHL9(p9+7Qu^~d#0GOKjSyUDuAzfuI_s(t6>Q3s|W9~chYQjXi#ZP-nTXz@>WiTUPQR~04AsY7DAgg^_fa;dkZZbI=TZCk^ z6n4MK$bL4&y;dD-0EgLdAPMRH?(9j9cAayuSqQ0sn1uhP>uGIu2S6)|9e-}Vy0mk#p#_2%1qO!JbrqOm=tXwi?Y=j9~my|p5- z)AP3)vmaL)To738M~J>~+8bqZs-U4)5BY4owOBL-PehRllB1q)Z4r@;tV~!*dAN_@ zabcDjN+I>%zuN|jBAhJ_v3hy=O(IUXeZVs= zp39{>Po{`|A`(ffrn;y|Fd7sZE_c_%yVdf^uE`!Y5i0a#PZQfUi59NHTnD1A>S?fG z=K`D63hg}RFYko9%8##l0Kq@r1b^&-<~DS1`T0s<6eK-o@*ZhnL3$8E6L#xJK0o{f zR586dWYXlvP7b|yTheP;eCF419r>WP2Wz)b-pHR{pIF6$iPR`Aen8!n3L_fGrU+c< z2#F_duv$Qdl0O4<9{5*Y>N;Tj^{IHtrWXxU$@p1-`s-^RwHpjYPxM9~v;7khW&Dnm zqo{#}SxnscW!{j4q&cUko~oHqCRnfO=a<_#>K((FVZ-hGOut=Kj%94$9f)*oq(-E8 z@otr?pDjzNtL=WjxwqfSVvNRGFMEy_rf8#}JvATz8hn}`vQLULZ-$1oOXcV$Z$Wza}b`Z)a=DUokLXM@9fVH9jhrtP%^L%Rob zdMx!ac?SK9G~Y!l|5RF$ON+k2-7~!CpQ@~?-v5|9X0yhyaM>UKIl=Uo`3XjpS+(x- zN}Bta_R4`yCkE>E2^YwJ0s@_91bG{hb)N?g`uJcA*iq6<+!YKfF1&nfuJ>mCx3+nD zh(9G1`>-Pr&^>f_Y;I@acR@hciTrul(^a7o)pMH2zr#6kC*BbfYTiS&sLTue!uV0K zyIJtt_Pyk}j$DXCXt3pZTcjC0XRVl@P(g6AGesL2nz@wr>h;pu6$`Ukv+Jwen~fkLPX@$v`{klz{JUP$r_4DcR0^TC=qI~oswsoh-NlD960fbb{aLE>C@ z>0tOfrKwGw=&p5UUNA8aoar;|s{hBSEF0U`UckYPKbfKAYM!jiZ0m^~$;eldSXVju zup)3G_3!ptY9wJ#>YBM^RUzlL@1G>OyxB~2aKu@{^P6E<%fKgleZTI6(3wdggZit# zDkB*&PO+woU>up&zju#lXullNYE_d-OCVCbzQ1M`Zd%@ZrPoO*X)k zI+K85@^Sg1f9LWa#~!E2@ZS=5ZdQ12&P?PdgWjeoaH}AEX_;4RICvGZFt6WnL9U@% zdtFgGB+XN5;n1 zdjLR;CwgxtXlzWYrU4n!f-U|(C@3szKfx(nw)a>y#URl7n;yDj*0Kj6yMa*r&MnWe3Gquinp8 z-oeD!h>auBc+StC1gF8MNrTTRsyQ%N2c zBo-_SRlMVz&6Ezd4eop8y*QnV_+9r?L%6qj8PB^Uf{umA6rbSua#7v|ZhJJ{f2Ui7 ztNZvNPxe3pYXBg9&X3mGOj>l-^FO-ieBe+^3P?&*rs> zO7@uQP5fPByYuhcCkyG;v5qfpbrgFWVM~*>)+0CyKa^@&>{!qYslJw`+>a!o`zxO( zuaf_{ByiG+!0V3IU%r=w@+uerb4bCe3(#ll#?D0MTRoBsL^9OkacFFr3MyLer($5R zLDat*h|iHvC+v%7bDw{*C$9dn@Kp;u=4bus>MtDliKhJb>lx2T7Cto|T+y$8^z!sx znh7noeW74X2&VxrWl)pd>4Ox7RF8*(^Ccq`Hzi1R?-8_<>q8`ylPEcp^Nq?)IbAGN z(h2=}Z3pa4r@rjha6A$);TM0(5nA@nZr@jWRd{FqVv93&#?CVZ=lhQlR+A$&nM($I zS6ZB1h2($eJBD>8dg9MbLUR(ey6`#?B2KJ6T=Nj0*{+E*qI5ir|K9$qC}jV-6YrNP z8D5nHBKYd4(MTLZ?f_5dp|4-4NMKScp$F4;gjI7t_1=0=O@wUdj?<+wli<72+vFJ_ zWOym(Wm?SC!=32^oa_=Li$y-m!6TrL`9CmukONh2m1C6Wmb>i@(9kxu7F3Bp1mOx*G)#f({iaUatKN0 zQ8kUP{^sT=jsyg7rX75@v)}fPpO`io!k9!4s-PXkFjh*UYhtFB{9c;--@;ucak`+n zNTyPN%)pmFx6sEo!9>gfXQ!vXGsG41I$%2J1s-(-;OYx&JFjID4LribYlrNvJ4O@b z1zmHcY{lfzk|_F5?-BO_yXM1_?EH=5=)jYcAWwX?{|5QmnXSv>dk zb9p6E7XDo7$Yhw6fO+A>@vBE<4*L1NHQhrPdc5M5G`+Xmp2qmO2_6Ahu6^! zT=Q4tGG7pBh1R$hgvL>i?R{M8tSIpc$+U?sdLX@&BuxVf|+fOnXCO zHhCW%95^XMJi_t%7TbL3REqXm{vB!7*~7fNi6QSbn&p(Z;FPh6?-b% zegY|P#`rD?V}Iw<(~0-6qQF3aOOWcelb~)$~8E3 zpVIlCUxrRSn#2o(Bp1ApwQv}zefaA5w)ys?s3oXbf46(~F>8}cPt=oX&DMy+j6Hz6 zY`|rOF4Kgdw*K_tihJERrxo%;hn@KH%tWrf7W|o%&GQjz$vL6K*_jS6BMed|Zt>N0 zA#o}c_MO_ngcPyN6?fI_9@mGzRHB0$lFb>9UD>M`Z0ZF%LQ7A?N7m0A*TmbgOhl3~ zm0yY6_fNQd)qr|Wb{>Z6S-MH+gltByk3J(j_pR#}!)G6x>Pd;9(8jEnja*d1F=nq1 zSbh%&8RT_V*{nQ#`c(K9L&vcxiqIX!APJ=o>`w+}4k6AiFZaXhr9|zJxH9-E+mE;Q zGg70YIpJn5u@bX9T$P9ADYVZG4Fcq1wZ;?P`>%ZidPfTy;%`Z4oBz&vynOK*EZ5CN z9?ylwnOaey;L2bw&nQy8>6w|(a99Y?BGY4&NT@d*7j4^M77Qq>72fV9{x$!2h|6v* zwau;iSGUun8oTs;k+v+nPC=@?3vJ|NCV@7MBDTz*J~Jje_MV64_%S;NsQ)7v$Ygm1 zQupIUn8SA^Bq8CimJj)~$~BAaZEegR*Sxl`h=D*LmB95Vl6K{+w$9}wP8*g}Q)k8T zS>e}ZxN7e#GS=v|2bQVn;epXWMW>Gp4oM#&04Wyz0f1Yfc3n4oV6ck1G;Ubn;J|3E zgxO#D?uYbzBHijA#jXJzDN<6>SGKE-fO`1g-`3h{x%ykM+F`&i;6IF8zKyMqrs~yO zbeY8Mm&WOvWQu=i7%*7~lrX+H$TX%+KO{h(i~jJ@W=T$y62nGl5F*Yy1-rlReDJF=H2 z;Br0T=X`Hy*wGo9zWV#wLF^gWCtMHuIDr+%f4Q6fyr<=V1Ga}a!@jT*@)$o_Z74Y+ zqBV)n<;hF3{Ze0K|UJSn~O=gg7OkcRtQM;ZBW(O!6` zJ^Vl6D<$JGE^c4K*#l|fk6M}uYcneZ&L^Ax(b-fLJKp;(vQN1nBpIPEj%_~ZQ48w* z&e}$;T3er;u|o32QL}2hwN@(9+JF#;ezcumD34r^2D2%D-v6wJf)C(A*}=2V8{9} zQ%s^w+TbU=fV{fngMBfFPjPe3W6%C$uEq#cMvI4kP@M;yZ@55+sJ*$EF@|;DTdoi63Vm!7 z28TDPkdP2y7W(Xi!PUp&w2uRnL;uZETn@q@Ux1c;U?T*r9w3g>%Tu1h!oq5|;aK+e z_VBi$qWCEkzm4-j$0sP@ut{~e$eLLlr2Wd`85zJH9sgkuZ=pYUTr!aazgPd^qi|hj z?Fi^go=eATsUnUeF^}%MKOukMb$w3Nokl$*Q;?x9dO~#YWU}CuSIxTt>2Bpc>w)^0 zhc7989F|Gbwb?DIfBg`-$hxl7uxftvzoCNVVXinrPU4hl!nfCQFK>xm$J4Ma4%9le zNlre##M>hfUK@b;!OmyLNb@TNWf&W9Ilff<``)qErY(3}}rH*^gBP3n`4DhG4bq{LMKL+tio7htnhc1hFZ$U3) zE13MS;>R**l>g2Rw+w}E@QYAWj$d+iV^dq~&*Sv>e|6;|!x~C6y96okHmtwgq6TM9 z>IxY@(X#z#c>&?NW*b3pRoy%%Vfu|ysaGei^R4}lp;If^vCjZWcxU&dsBt)V2(4f+ zg+iQOtGboqd#-Z9I(Bd;>Cd0c^s2?5!H%%7w$?RaA)D!Z)LWLmx=IbZ=fF}zCq736 zdIe(`Zwc_oSm9r}8&dFkN68^`LIx7QENy!`j@Y+JGG3@nAH#7F=OtwRg1|qejJ5Xk-+ptVHEw7tJzo?hJ@Am$w^h0&-+X_47 zi&EolPH%7hANlXJlhBE;klo$YvQkU!5KGBSLto#JA?lgZOEAd}FLkHEu|V?zspf|# zbqQWfESit0O2j{o9Nao*TZ5D7yIFtd(mU1$3s^BW3>&I)NM;4&+n2blx82LlWYfOr z5I}p~+Ds2F)|C(D(>XO3)|AiDo|V4p#L0-SW{{)B4RlL=w&bRzdfoGaLR`0p^ch9= zY79#)>bkJ;PId%k z^v)XI`CDyA2l{6#_!=vwoq6I_Z__yb=Wyf=)kqZ*1y+GL$aF^2wW7J$&IQ_a{;R7- z2v9t~1uThKoGh?#50>4`;yT@qM#k==qyPFObJhfiIubtT5;KjgcwK*mCJV)^{r$Kd zx#}pIa?Ncq)!0tu#xsxSeL`4z3=cjiCvOd~10Y@RpO8wni9Jf7xxN zeyPjRqk*N(daFori3LU`?w2QX`y8ui5*XQhrRSi>|FL4yo&|XKry0 z@M74Ee!uL{lOVk9yCK&X0fdJPwbCyIZ*aVUwu$}t@fU?$eaQW~1)hEVdLNprZ}4If zuy_LkVw_&U#BtQPX>00+oP(Eb1`%TTbpBOX3^aMgYB@mm0BnxGgb$4_K?Dg=aFCpm zN`f*@RdtV7(}lw5-H#8QysNxTonJ5{p-w_Vslz87vmf*Zrt95(?fSchwm1Hnc z%x@>15fu)t#c*1XK;_2v=}!dAz;T^1M|WXE2DnhBGxbwAk`fZSFt`JIw&^s=aI5M} zxx4GOccpreW`KIaN!YpVMsw2L2eYdZ2dcW>OKxRd--*nwcnw_lqjj`%#~uW`ni!?Wr9-xf*ElPGruo*Sw7H}@Lx;x%WDeFy zF~cSA$q>h^Z%JadLxFlVb@2onTmI}k<#1obfd>Z%ZTQ_?dHr`Ep1yEgY)+FKFQ+~& zn`5%t90;eN>S>dP?(5vI%$3!}w@s*}LX2%m#_{y#afv`HCVIyHh zCN6?b?3uwi%eSDXiF_z1G4z;o!6eN6oZ#JAiQ~W(Vl+P=!`IUM@WTU(Rr9zB%IbPv z9G^NjPetXNk<;Guz}>vD-!omB4+E1c?nO^emDbRs-s5OBia0gzdFMWD(}J@x$?}<| z<*A-Uc1fg@is##b=ilY?BvuTc{LUn-Pm<}qo>2o^?}e=IBjV)lHx}j1ZQ`2brk;|c_BXE8QSuhcMan3Oj-S6|FpuO^%VFAchp2cG_~RA>o8)2d+|95zw7KGa%(U8_B4Y+qqHv( zV;6CHobI~TE{YVkcXslyaE#2`kLfxy9$MO^2$!M}@!AZm^CPFXuJt@hs3#IULcq$Z z8x4HzF*tYotb@N;C_5CX6r9D>zzis*(twgb3GZa8)`_(vr03*&Fz8_O>LC zr=gq%%MKGzr3ewBP@$__-<@V;G99o)f9l@|<6?5zg-jH^`bMCPKv@ z@#Ho{^-3;>KaPfW!B)O*0`H~G6r$K$r}0a`EU+|Gxqu?|p;E&19aQ1JIoJqdeM zHSWTEP4a6remnJB+4lVduCPac9v4_R^o~bX{5CqE)%<(8I8&wlAbYH-?C$Qq^={rX zcym*^;Of2~3cU?ADiN2Xx0VYF!#c|0hOn2jo#RgWK&9&vsgg17z_FVzz8}9|K!9me z79;_=UC3};mJm?Ad6OkYB)o#TW#iUDzJ}qQ#M@Gf^guds7`MOwFN%_GbLF6H`BM+m z!tULdXnMMjjc@j;6NmlWu8~NDRav~X7Yq3@5=u}K`4y0U;uL8ZYTk?tCRmbpdd@oR>W@FS0(CywN zcV&KdUx10uzW9rfaAn7R|1ZPCO2Ftc!aIOfHp{h>O~wu1XyrEtIrpmhzwZW5w^&j>yP?F1gi8=?*%jeUe{ zIEohr9ON6nQ}4>i$oPDB+Jj2G!ymWj&i|1d{^ARj7JiYdu{Q%6shRW5LWoJF+XV+d zKfhEQTW%|dzZH!N(&q?KXu&|9HrSl7zezj`s^?;e56|?!gH2V6= zCJC$4m)WnZs=UZc(R^jZ|ICRqyY}g!XGzuNc2%TL&ijpt$TkWAE89pUCV@IsROLzY zlCaZJUKeQ zk4S4^AI5(%=A@i|?dc~kf4DOg|6u^Dd7K;Kyuw7RE$_3|$9$talTQuwx@#YKcXgt| zp^(@}3UZpB%+JfAC?lqOZ`)IMvlz&!{4m;^7VehAqKj-BZQ`OjKUr(rnQ#b;iK%*6 zYQ8`T=c2jQPqN=LL0v8JEH)#trV}i?dzSN8@(ejDeKl{b-3f~ypd*kuEm*X=o^l`C zZOECoNDW8c-RF;?cyusL^<-hbuX%exEOnoDa-Pu-Puj|85N9j4LF%WsK^_fjjz`j@ zIheL*1%LU5;3ap4_e3@xd;3zcd|Lj%Pf99sgdoqR7@_*O^FBU-pddHYS~N7vZ7YKE zR@Ax+Pq0n+J5moVJ1p7|BMdZuLrQoOAB4UOLw@<{Pw+gfV`w4oqWb8nf`@*sTTF$FI+n$k4dUP#(mz+;iv{#&uep6z5?OGcDad0vtjjV z1ObmJl*s+Av4B8H|FWOxAyv}2FOtlIUHQuRN|lqBtSvF|jzZpw4;_rGv*urB#7nz_ zH4ENKUb76b8I;DsiJA7;`}fXZx7qEZ3=tVm1aCjEht#TVQNt+YVfzl|@39M&Kn9rK zC|U`Nit?4nY=8efKmslnZO1NrW~hQ(&nhTA2Z}$m+!pX=3L&>$EDZYs5)+952E<`* z{$h;bPZNBbUf8+c_GG8eP;VEA)8B-|xjArJTnE8e6b+xiGewDPd0i6yjY?xR^LOUx zrA5XY*P9>GL$nXo0{A=<(RlbPv>1`vDhNe@HJU(pQbSz?CYrTZA&F z!n_eUWv$v}j~q_HRe66~t2dCl$}9Y7>oofWJGYws5!hz9U`U3>eoHZah)2npxiwwK z1H%BO2rG6%43n{IqsQkb(5y#mJA*K>soVecD@v9a22iWAfurCPChWdC(;xumKXN|4 zDVzz|9))$GUokcBh&1ypOonyvR-;6Sx>aYC>loO&y}V3h#w@gG|KcmMK58J`UH-`R z>t6qr?smQ5w^lz(-(lnr%BXEi+?!w_BnU&=E&tD zl4}!wJWJ_7lgOm!>_#g?yZFb>Oi2YwaY|PUMb4JsiKyN#g~_TG{3kgGBeGm z21>i)CLF^FHP9f%v-M97zJHBxk6%OUX=^SY8Zegr*XdBEe2;MSaPBIUVb_+GTgm#QOsL4FY`YOFMUlaVaDOUq)WDWqNm z=ep2Y7u41l8INEZHeB__$wTRZ`Y4m(#_;t!2*XGr1Ih=4u*2VqhSXQ&t3RWb*$Ngm zI4E8c2HhsB!@uWnzFIisFR1aoadjoaXG}mzfgTl%pUZSAR45bLSR7{OkuU&5_+4Tk z`O0oxf5xL>Bwn^ZE(5?J4*5xcq2V}`m$rM>S6-qNfj zs|n>W`u#i2vNLM3)+zjUKDL{DbD6DlX`Wb1_kDktBTQc;wX@-U0~D?hC6NR#K&pRNZD8grqiM8pkAyPVs|1O zZcT)MF+efr)9pexoJV)$3N^W5dbcD*Z~_d`-dNUn;F|#A;R!5UvKy=7dEW*A^u@mc zmjDzLS%w2J3KMqU+ucop;U?&sLpYLBQu+XJfIph)`z_A3c|pr>Qh z+E?so?%PdVfP>~(|3+H-sT{rm^HODUW5MGNx;jMk(t?f4j^r)*2D zug>ktO~(;GgBP3pjXM54TokyNAkfC(ZJ0L@?T50YJ7xrSf>0!A(NIu)`xCp8hq6MG z3`+LjIx&4AX@7JuGw?c$`k;CCc~8?+H{V-h^*w*#egCrBJAZzi^P=kW7EI=ewBz0A z*9+a*iaQ@F%oPY_rn$5_C-F$Amo#!rYrA4X>G)bD|3Bm5SN-4VK_U0NUyA`@3fL)o zd&?UqFo|V%ac6&m-kU6t3@Q(pHE)r^+S*Y89Ppq3LdhI7XRCR6YZWb1Xvl*`blaGfbraPvMf)1(O2 zMlvA-(TOaWnAIWlY^!1hh|^yG(~T2;w>Ivt%$*CK)d@Xwu&bcUDqIqkc1AN=QpZi; z6FkDv#12G$D~afZxvldhw%|iEX3pQv(O7Wzg-H#q==&9KCEt1cdl^jn@~G^cuf|gQ3){hm3;4JC?P9C9kE&Um-UGcpzX*X(@Ri(f;px zyJ&V;Hr9&D!O?&{qDaqb5TT8!|P6IzK;|0D#mgr}p zJN)m+Shz0AYnQh)h;h252Gx~yg`38ZrI`{YQ_kehsIK`Ft_WlbkhJ2?+?i8_$n?G~ z;t=mJaP6~O&A?HgN=bYB4_`M+aFOtM~9Fze?SMH1$PCX zQF~cN^@-=5I|vz@lL6bK#JV##ILSVxKNacDjBM%J-DqSVN_*6CGpt9KiC<^p`hAqP zB;M1lZ)2{W)ew<&MnPZZ{0j4?05>mZpU^Z>n1NUF4tZtRHN@!VcF2UeZy_I-nHlQP zoSuAOlW?tAq7~Sw`rvUw;wDK8mlxd2_tOWz0DZCedq&)NU(PI3P1*XF1o@yfaGXX|vf zQjz`@0XxSt23f?ZSMTU=8ipL{f-uCHCe1lJuWx8CFt@VR`=HKbUuY)| zRHUYgr%YA?e_Ye}8TU}5*8UeUk@S^vo+E4!xPp!2OpT*!_wPA___@Q*^b1;Af6!+a|E9Eza$R&z zZ7Zhl;Hr`-Lbe6)xO!kKQtBrRYi>u|EB!Fd1NDo3e;1j4jp_z}QD!OK-SeO9;7s3) zz~@Ar?xJiGUo;HUc-ar3yRWY+9`I4&7x#Z+x|tZ+__WarHHUcC*+aF6;w|hd>X{Tj zo#`*0tf@_`)K5njyo;y^gOHJy4Ze6(7>R@swK4;+4{(EF5fS=$C;R(ZE+^)<1r`j5 z<`(s(KgT``j{U?K++`X36JTI~3U^8^ypRlQEisr0`%cCwNAl_rDQ}?uEEU*J5FT>) z?cx@C3eCa%_I5vrTh>hcG`hUJypVNF2OJreHb{#BMT-I{^;hLKknDix>NJ-tu)#SJOSE0;^r8n$2$cFP%iu&!?OeqR1gwY2BQftDX1 zQoi*~QWDU_=GAkEg#TD*cyK@!Oz^kt)ig<9DC$!|6`ZZyw_dwH|A5jeP`k)*fvJJ{x?oL2L}b4UW#{Ep!M8KK zj<;)T88cNq&6z#ove6g!^XN{~E$!PIT)DN~=gtyPUas0q=I%Iy6u=o6|PT#4?wDW)CvR`bj)G+BkLlZ;(@fT~9( zu9aCL^9v{Ph+a3Hw4~|aC&AxqtUi|Z>tS|R)YR}Ls}{n&G=}Xhw!$Yj!rV|EBt6$_xOZ-Gtr0b^NcGlf{@FoI% zQj3^+XG7OYLwl-dL-|0+EcMZ6il(Z((6eqPCL%7o=qAN-nRhgNYUH7{>D6OR6B|n?>!ul2x!kL(EHet_=BNj;yplb}c&Jb)jMuVV~ zo#0BBf^1;e-T=cL6bkDv?Kio~EoRywktPOmPFDt!EA0Ha=V#YYK65;)mTP~?W@K5u z-4oAo<*UuKjD+;%agdR|!PCM`&m#4YcsA!FpB=7Ut6Q1hPw#17;Y_91MEg}>33|Qh z`~D~F{U?vAo|;?R$TJ28j5ti+deS=~g$-g}niQlSq$|~Sj(bOAyT8|S!(w#pHs{Dw}1ny@2|1_FQNvU zYJ^zayX^Uk#P-|Y%F4%c#(JzTyOU}|BC*9D=n)+4JM~{D9Q;heH3*eb)~xk;O-UE0 zM7+bq)n7Jo_NYTi@9+Ra?t6`2+WH-m-h@exo#zBzp#*dT|5KoCNyNmM9jweeXz@C`wejPbIRr6E7i71ZKENsU{0-5~0*agDa!#Bn(5Z|xpkig3b z8v34|n65?g!Hl@LiMw8&+u`mMyPoArKFU!p*G*Z#9lq5( zx~m|ujNvgEZ8JDigY~*4j{nq&8{eex#-5@sDQ8b{(9buvEz!lcX(Qbs;01~wWl(XR zavObAi5u2=%}GAdvxhh&SZQoh2~J-X@yQV^t(6Y;Vn)%|&JOJw2gveXw@+`cxz-Z? zEh8iiH2y@ZFy-((5DV}68|6F0h2A9o;G_psuNX%T`STpb$T}GyBB*-|rCbG{XTrXJ z>7#+B!s2pF4-R9Xa)N&O=f^ubcx3wxlij*u1Ys7XAwLKBzG(BQK3&2xe?Z3L(tWyL$*q^WBkt{g{1`;RZSiURfj;F`x3Ok_v*yk zn7SYs+JGpxpT;8+2vAG5g3ikjYy<5BIQ03T67dpBovm6)x}D?xotP-Kn9&|`2c4B+ zQC5!a^6CWXcq=@42q=ghJxo{?R$|NfnpIz*B2oCME1D&f*zWUS1u_$f!zczpB2fQj z^kD>uPOZgy>bF<1l+(oRdmY8lMB@bJcTBAieSf2v|9xSv6F&%&Og^&Whxn?Aw=uA5< zV5|?*OwS0K?;b{I>6e84FP6tf;O)@L>ko4dE(g?;uhbgR1HS*$N)1G6QkWO!I?|hN zH{L`1tMM?nZN_gQZ$ByCE3&NK8)Y;EmG6PNbpOIX0S@!m*w4OqrI5|X@Du-dd4A^W zWd7v8<;IkZl##51w)`S-nJCfc;Hp?U6C8*ur!ryd)%g{1B5+Q`Q$}oK=-S^orqk5L z>`XsD)|{7Y{rk&^wcezP z&n_oz?5JeNUIXGh9||8kfUKN+#(Hov)r*COw2dtm?*ni0Us*%Efit8Vb?|Aw{51NZ znWWSH*OHs2>aNTib{mzj!5>9)$XidX-vTM>#It7K@+3Xzb?Csl!N*7UkZJtw7`oiQE69J-oD5YXPs~41uGu}p< z^e2pGWM`-UZ_)s>Aw9Tw^R+I>0kCAdbsk|S?Als7z#m^g(41-=qN)FVM<<<1hRW_H zRY>5Zv2cXGe{PG*dV*q~;oG4(>DP25lt^$?m`)~gN*<=x83QNEDW6^ArfW#Gu-_h! z_!EM;Z@UKH_G0E&s?j(R0sG{^v?R+nxVMjXN=oY#FUn`Xkjg?d34EvufHONvuMEO7 z40JF$MHzKG`0(qrZ=)H*sbqhulGy_JlmB8<5z0VIYinItjpRK^xTH^jS{n#*(s~f6 zTlQ7pU6Z(!6zl@u3Ik9;0P~v*Pk*cM`*`sOzFWfzjDO&R(E%TqYONz^*z#4@25@p& zSQj$p<`9vf>i?pV{mXiSPLePs`te|S2DUAH>@lJ1r!HF^`q1~Z*xvRd)gBnKnlUYp zi_OeMMU_1RwYsW;@d+hxYk#5px{`BNL{j{{&b{0*eb{#jKPk72OmJl-FRiV`G4J7p zh<*4ces5T2aXnhgM(47Lwa!&vUk@5jq5`H&LYo!1s)EJzwBOG_X;jO1LPPS+4te0q zvas3n;K4Opdi7tOixCI6irwEt4aj)E-F}Bg3a(XzR}PF-Cb3bP`Va#hmp=5JAPM)G zk@u3>)Akl0hW)yL7mrDW5`yB?@`iugR4z02~dKF6}y+$SH7RBq( zYzTL->ix_(0=_~#D=Eem3l_B0A1IEyORXHW4YOQbG*u02JrBET1xk?2;!jtYP2dxK zX}DKG2Ye&UTl=PNZw{x_M1SHSnep`LHWaD7*%)Rk zk#Gj*lF-sZVji;vvfpmc@(j1f-1D_p#P4WTvP@PmZ8s(d(+u=oT@mBmXWF;xF2tq# zHY4n)*a8ncbUx0FvF`OPRV9l(uD>GfYA|IE7#}MNnCTWR372P{|C3Git*3$fDtRMI zb-gJ)WAp0n3dxI;CJ{O3al1pzfU%pPX|fyXLY2PwkoI5AEk`sP*7~04D6!cie3W!{ zKb-gacoI){(iXhm7*}E^b!No+ow~X{{qe5bKn2(H9R=!jJxP#6CYufFcM8a?M7uA6 z3H$D3%*;*nqpw&d>0h=mJbcR+@btfUgGw?9GsH0X(!a zHFwc(etsw*a2cFzYh}fV70mxi=Gh`&JmVHGqB3q~bH(dxuhLi%;&Dh7R(tVk=4-o-X*Y z>rTftlms0O1)FGA6ZEkX|B!<*!U@ZW!gwI!r|TJ z%d#9(Ju@ELfH+SQw){C^_?Et|;-u*=rIk#aJU+D@7jLfzmHc4M;=-%XyHYTyTQM`O za^_Z+zdgCMd5}Iw>o`3%eEx7T2%-%POb$n~Wl4ujAmzvTXx+!liyRzVJ(Q2dWn~TF z|FR4p3N(~R#d8EnM6#^BhpB>?@efxl=qW1F&Z&KT!IP!VUvLnRAeBp7exW^yHV%7$YD2yz@_aKr3?IX7b5lhb4FN~^c-MM^EdEmDTK;&Nr4fHpImtA}z9t z1Zj40u{A}|>maFA=+5I3qYgqh{(A+J8AN`~TC(R5)N~&M11ZI3h4CIznN#y4p8y!7 zLY>O%diouXY7IMc1{y~vr@<;4d>A(B`L}g+lzQB_Cpj(05(W1PMSpv^Cu`pkbEx!p zU*|9D1J^vyfC^V>*&vEzuIB&m1@Qa(@~yNtN0DGiZitL4X;^7d=AG|E3<1KfKR&xf zv9qS%d2XSOA0ajq<-tqWl@^oFwtDx3u{pPF*{bWlUsU7IcXEYM2^IPgKFoV_-*Hgi zsW*MSF(4Uo{JgnqZHc;ngOJrUJFug#61Q)c8p!k(d3@^yyI?;CD*q)HBJ3RYY^ruxG=N}g*UM??lZoFF-}8| ziL3)=ziV9X4k1_Dn#wNtVp!VSi=_`*9v2-D@!KcZ7A$QjDJVRKK+vVWn_A^vEDbdA z@v7+4ss}K(8_82RzA&KH3TSY|%zPa33HzJtlxxY$mFV3ebs+{IyrwAguw(D;u`Xg+1CvCC$? z_*N#FUl>X&n7!R*ThXgMclZOY6H+)`D?Yi4_I@W#r^&Z?s+nTh%{PecEzj0cirFUK|y%l~fX)FCx_6`A>-;M!4o3)RD@9-lS zJiIM8v=Jk_s}xF0P)6?ZIzG&tYn{R3iuF?LYfkQmgNx_Rl4h<>%Y+o~zSPC*Fh$!- zi-Sm0Mtws@fyLe>KjjXFoee}a!q_8I4T3U>re-_*w?lEVLOQjN`r3$y`d(G!>p$*9 zK;O~vljPKs(p^JWD08k?HQz2K7^XfLzq$R(T$Y~ot)I&`_+l9(Y~7x@bLu!AIs=*% z_o;WfBj%*@mtjo~4o@-%BkZ)d?qv8uj%WUcj)H4~@OWT)C%Du0NL5SaZ^fl`z%#Pe{?(MQ-=`Y3ujveqv$XYsE1L{v zXb+Var?6=KDX2t=f!?zbe=@0j)mopD+2o>B&B`K_NYn1`E5QnZ8e-7Lo*r-_H+l1x#EB9UaQ-6_lgAiXj%L@WwFSVk=o1lgiI;BzNKUx(|cDD9QV>RW9 zt4~8Y#&mqEKC}>0`uj-!ECvd5H=O1>^NzyZ0s7HyYXc0dVPXq zX9oxh%L#~d>=TLx**|Shw{%Zk&|9cvD$#^Jtm1!}sgd*0J^m+Z{M&fmhE*<&s}cM1 z5%pS0Krq`r5TxfSef?`1k$hMb_oyjTmrw2dNUV^d5Y=N&n}TJ>&3C8tz&s*yc8we` zTYqIkZdXahT}bG!;{44h{CT*@+Mr3gLc>j~@FEh~1A%{vDEi=&vq3g*SEk?NTNbwH z6cJm)OlIf!YsuR@IF>PLKZqiu#8y2;?q2B^G_3Jt=OM$M} z6P`t<=ifKC>E5GY_)&Aq#G6?_3eA{hvF=VnV)lg7%a(<=8ve{EMjFI&k=oU!(dMN6 zg%6JYIPVP{o5of?Jxd9a8uHx+r=UdX?=NN(6(tzIHS9?_w`$vJ1R5lU)*1YN`c%jH zmb|%ia@A5VbgVX+b~!YlTfRBPv-bHwCobIdSKmm!mL6(2z@glt71p~JV35E=hjC2% zxg@94^xpd1=4oDh^Zzo;e#<$Yj=24#n2aU1vMUf&B>hU3usKo6^^rxfC;p}UN|N?C zP&v0I{tr305FHKAI0F9Dax+^75bUx(Q7*QenJ#+wPNCdkhY`FwNdKCeyn%6zj54$X zJ(|_-8>q&S0vN~o(Av$PXXR zgJdyHRYU}_C5SW~I_bPW=cW?~$2@R$ApMw5?)bD|__3%QyV@8!o#s!zfO}y%C<`S* zWBs<(G>;50Sj%Y!8MX$u?+ygkB^fSaT%0hrKZ{1;OLU2&CS`hrEcFtWQkf`bk^rj0 z?H)*Xa5`9?TUhX8VT^B;4;{@Ju=?DL2cq(E&8oMBtB7(h_Rh|wi9T|yK+7jc>I5cE z-LLGsDSo10*7nr6E+1JkGBO$jrlfvtY!rdQ39u#o#~sUU_T+$g3P=Ms`*rphc4MK> zpLs#knIuDSTWt0&yL|CJ6O-j_GYMezZwgLNxiN@FWp}2_?Skbq^{JzNKep0l^NROI zx@k?qUXvfVhlIDAgYjftxa;j-RKI+b*k$<^zF#NK?; z%d5&w58Im%`kJ;!kr`Wc>3=qd6_PzKbuE`Fm8*%BOzHT_C%Ms1nA(%Vi&8pWiPZk( zJwRml{#;G}aL(wQ=#=XV_DqK^rM~sBH51bHQKFc$QLjpkK$Y#&?bz@*7abw}J~^># z+G3ZQf4KW)??pIn#>1ODxLXc))WQpd3E$)1UH)saw#OKR0JnY=O9A@MQlDhAQCQT$ z6wl_M)ZA_Pj!jowKC?lOrdJ=$9Q38O+{6WzMn)Pt_gKWOO;n2K;^N!*g{3uFoxGC3 zx|OSpCXC*H5QU;x;jrcJDZEW`UWlR>Mhm%}PVH?`v1nq?X=Qu(i49Soa+$q8GEpvf z+h^}jX6%ssXW`wrF+i=WLTPyavz`(TsoOc_Ndp^dkc(?oH2e0OyL3oav%QZ&-t99u z$nMud7cMnkik_t0VbB>@8wI6u8YH}4?$_mlYA*bJECrL5q;FGwpFG@Ri?mA#!%3o& z5pLh-Q#^B2{M2Qmq<>`=741Jly%X|jp8eY@z9PN;3@Js<&65%Bh{`n-;H3B!8d{`f zA05ATYqbXCe4CKLXo`8|?nZhr8WMqXWk>;nx*9ic#;Kl+X@o^pYl(0vGd?BmrCt2$ zsnWL-?9h?&xjn=BgBuY8Ct`ijh9Z{VZoXqW=FdpGoHD|0rEcK~m=F-pRUYP#zefwS zNRRa-1U(vbMhS{E-h+$z!u@!g@0G6!>g=hdL#Ww9;}jt*yB&pR`c@qBlmw{v^D8ae__;H8dR%;aaA9(amyoSg^ONy@DkZpv&|FuJ?D{R!C8 zdX@aP1~Z>izrEa3z>7{&!u08N2)^?=NbPav;e)S%`po(=TNzJ>s~?a5_rGokqR!L#gG#IHgnGWERup zi|v@R`XOKa*eJFN4DDc)$%-3~7TIKJgoQYHDx*uOg%OWS5$ zyCgeo86B0Am_HV~Yb!9U3-;P5(yoboKgf?a#7iy37Ro4P?#1&7bQ#w*33!$rSR&2^ zqZk!oVU$Qo;g%)~MJI(F4_-|dXKMO-QE=SwKWw=%X76d3|KX#U*k@FrL~B)4m|`Z0 z^rvdUH$ZuNd+)yBBSgX05BUiefkO?-c{JJR6u}Fq)@_A5EP~=1L zVK=1Ce*pt17~8v9Sr%G@ivqKGh$lwjLhOiS8krGCC*po&XgDDGD8HaUyYWZxm+i9= zV8F|q4jv%D0+0-7KryntJ9?5gWIhZWKPqwJadpQ3_%QU6P*}$HH|~&4<%(h z$Z+IZBI^Tt255h%nBBQo>QTJ+P`<`GGkmp+-VRj<)pP#IT!&wN5(A=|C*F1b@4#Fg zxAF(gfo~sqxqMn|)%IM({{o}l!sez&Sd>WX@8H;gpk)V3habL4ZH0J)=z$2)Xz9_4 z`4&U|US5bb7Z&7z?ttGrB&6ThA&$rP8&G#3ym((?7A?5)=nHrcv~(5o;{&qa7k+D% zn5wdbyq*^yOEw9Epl<0KNJSAU>fLXfiy>nPf&Tqp_7)HS=D|c^afqr3mc)xTi2Ajn zL()Ece;s}JDw3A`L!?|%>oWJ2;o>W!RCK$KVHa1dy4vVNpVzOY!*SB3XWPtAc%#wU z2jQ!wLhK}2d9H~1ZJ99Rme*_EQLg8H?_{WxF)oWMPi3rIskT$MRV~@%8l}TO?y;^|dr`m(~$__Ru?) zsU;{;NwQ(lx2l^pLWy=T=-y8S60^ygn=f*y_y5{qIxgApn1A4OPF*lwn15}4x|7mL zd$MIv+}GDiPp@IBse77YYFIPw+^e-2Rn0(JY7uD8c_Atywm&o&jd(wup~l|&)BHp^ zoAsxDN-_Jj(ZFW(4eQlbmg{oopmf=UJlF}vlF)`BK zb(x%7u$^oR&?}*^KDMn9KHAm1GL2U7={S*Qrkm4m%;;|=CZgfpFctdl&w(Elb;S@d z^hax3aaD8DhV@=ZNc2Hxndf5`bu~2X${(9M#1LE?A&nopE{AfPo3NOZajsRdxI^NPGuaPZ@rYk&sia@E*^ z?krLxA&J9xZ0t)m_UqH>>?+&b7MU{CCMXH|Q1hT`UaT-3zH-?gOv^gLERj{e?5scKC&_cjW*pB1>1*fy)*+y#jj%qKZIO7x+wK$I?@zl^ zrm)1}7U)5S>><}{G}M-XZI9}>wA>!+&>D%a#9vv4`DI=db%l*6QH$4l9`o7r=jhEa zU zDGNftQ;wu}IpaK=+C=cugSdCyy#yB7mhSHOoR98_CPOA5OvdM_R|(sfVJy6xaT5** zEQpEb>%9-o3&4Zcogg4v{rPDB@@iUa-HRLNy)qZBR~1Ek&&o@CRx^^jD_ki7LxgD6 z?>wr0<~S>+Qnli*Xw(^P`qiB(?g~4cZjd#K|Lb4wHN2;^qrbTdk3?!PeiHE;m2G$R z_lIzrk9)k69*truU%vVAQr~Wh*~Ck%|1vYT(rcly4`*$f;MNoCLh$wL*DzY;hY)Y! z$;i@^Ag}_R>kG?Wgr^r5gjJF7=!Eq4&Y93o-CH(!U0DDD#1m`1iOIpwJ%D#z3)KZH zkk_wYzk;8)$HP~{(msDOGf>eADjF;3{P|FF8I*vOb@#)mQuKF89o8}T3!bQt%Z&0X zPfD4J=pxQPIe!21#P&pbtVX-Ljm61YIxL1lvGII}Z2&$6Y_=i{!9>rIg#v*pi7uYy z6B4q=3u+J`ln8I%S=w-xdWvpxgOCzNuNJLVSKQ02hx;u~r#GYtDMM@eq&6Ptw zfhe@SukNeHR3)qJx=QCSj&Oqj!o9;aw(Ii?&RctJwuW-8`HLN_!Hi?_coO5Oj@+rL zXe7h;%oOU?f}JJm4|Lz6)(D;nUSGdjim)$i9(C)V(vp#qpfKBvJbx?VvHJ%jes9IE z$?&L+W#^o`;Lz`ZHz&^nJ0Em}WdrZyVc)lJ+L@iKIOsd=C56O$kamyuQ5&iM1Q10V zOABPWUC1L!wmrSt_=s75*rwvKOY0`^88Li(*CF?v6(Z}uzhcTnVlLkx#{fEY5s{D< zHa0r`ef9kNav6dE0EOWNFE9-E!6_*sMIWYC{u(O|l(=kje1O&hh$@^>l&+$vN<*N5p#S>Qk#z zl|k^?i=~i+Ua(}hJ$YEStgNl|;Wxhpku=?}hFTvld!$^LEvoFrfC65R`xve}zyjZI zlBcA)YmwEOu}l6&i7a#t6>Q0kjriR=?3TH79*q!$}7O`gF69~7o z2qKIgZ~IKmx*^>5kO4e3_n(c=XzZ`@H`8?h7Oi18^<;^bX$CKj94%`1(E=n^j8&Z( zB4p>}fGH5srrdfY4FX=i&$tcbL>5Bi^=SUw{iIPt;0aiqGf$@hYde~H?_DaJsNMum zNUi4lm_f&#p>f{g+?B3;5*~-ZwycjSHq(Kfq$+qH3H^vliwjr{k283~PN4YC0S|G` zJQajK2V2iTWP$WgT%EVS%6Q?@RWavXBvI&iyBw9Ue7z^%i=mwUEQPZx72cGvY$3uY z=G-))OT2xeQc`yVs7`!1#GX-7B?b7V?NC=A;#C@uGzCXT?_KO+KR{uIINT>}D~yXX z?pNr|NQY-QmOCK?B}io_v*ZW0AKQOxC-b--^KVU*7>qd_WGWUu7_pcfWLmYCZM$aF zpx?4w8#3kUGn%=+U+rVa^oaA?RKg)w^s`-ET8{BM0;|h)TY8rc0)NVx8tKJ)eKB7N z8l$2QK1Y?;25UVd@}_nP7w?X$q6I*tQgVM~PS8!_jZQu@Q&H(Vgu$%&y2}Fl0_k%1 z@@rY-1>D$Y?9b|2gQL?T>E3GGwCq|s>V$mbyZL5VUQL#g{w|B>uX8C(n#rkBsyH@C zNU@QfNZzqGS3B+?K$+p@t7NvAEJMRY7~r#8B}2t?^UKL01~>8|tPKl`ZJ`JdrKgw~ zVoZr>NXdVBADl}FtGM!To$xxC|2=qbWyK7Li%6=%-d;<>Z510xNN!^TkIef~@7-Rc z9430qxKBuX1fD-2V+uK&?`lMiL|N~{w4W{HdYtsX16c2#^tRvr6T5-8^Ud>$rtg$$ zTlP)Yjjm~O2(f$)fwQw(o(1Pe8;0Y3?996;FvMy@su(Qfpkj^YvBibwdWT(NH-Ozy z9Hvxtb%N&wAa4Us(z{9^m>&yjP+&s-Nr3_cV{7p9g1@ZQ-2||ET1@cXs+kF~(AY2a{ovPt>#KR- zBXj!G$$=*v_01^FMBd*T{0Spjo(yBKW-c1+?w#~H#c%KAP}E%$><+x{_0@6l*yWVZ zR3h*tQ&m;%O?&fk-fg01X2MNh_r2^OD}jE}!rIX+felLb)8XXR5$rqMw#)3GkZPEm zjD<&wTu}x#2?>c(h8#=F$qr~#pU~C(Vp@qH{ckmR{zAWN>C2saR@P3%^$TZ|jEsRG z(fK`O68yg<4N<(sqrgIaL^Lh2PE}725f(G;*e_l#Dj6!)(a~+u=kEiELiIij9T*I@ zkXG#lM!(X)=p_6|JwZW0NCz2Qxt^Ap9(zIlWXMj^$wM}fLUQezNvxGNVZu(Y_SYk8 z1WZh2+Am*i4ZZwcef?Zgi1^Wuu%9K|!=1_8`_Dv?JN3v1oOhO83LgGOLFr=tN?lqi z9MScxw$o?<`!$uY!Fy&}Ya|9qiX5$5Lcf|E1C{hFoopZhNg^-4jjygP^|1RlJzK5moQdMLhcNh}*%|57W` zT5FUbL>JFd2p$Frgj$_f1t(!W^c{74qRGJ5bNswwQL0?6`Ahc`0swrYUOYV7Li`y) zrfZSLY(vqkk|-lz^Gl9Yh1wM1+VyGIsuQ)-DMdS+&YBGeAvXW1GHe4c2``V;&S7(r zR67$H<(KRaQ{VXwaD~d3@!s~Ey4_sSL_|c~#)I+kUC0EbDr5pm#{oXE6u?7owW_kR zOb~)5IAtY5tQfR;Z!gN0}uu$KoorZM&m^< zU`Sp9PD!o8F8GVxNQ}4OcMM`S3Z|`EH}sZ(8Bhwh+mQ}UUGVRWhBivOSw0iF-CZAf zjigETza&*r{Xn>MwIF=g@v|EyLh6*lGB)aKec42-Pzs-y&S-vutxGmQF-K}w0=&m+ z+)n|43_oP3lJz^@!7a?xfe{DLpJAQHeIS*6ar(LnU={p)ycsP(9V!m~@MNa6-c)H7 zfHF)Mf3PZK4bemAHe?yy>8)`^g74cCLMeUdS8;y41r@nLEDfD;VP_K2^f&R|cH6N9 zex2}|9L5EBWgCZJ%i%N!qI$^5UD+eoH$`L$k>L`S1tKD0h1yvd8nn_m%6pmUi$F?*>fWeK4L}@)WrIg(c)tao7tK za0&2OddfipgDk+Vi7!l%pivz7qIVo7GUY?i9fKxH;c$J(Ci&u^t$w2EP=$T5aF8N8 z<~>DQ(VvyBRW*v1#iNDAK?;IO8F0)x;gRrPb8PiyizG=iz6Lx4w6ptmjVUH%_?{@(v{v<5yGZPb;3H+kJw(knfZGW4ri%&_> z(_t;or&->PSYRo(-ZRpyP!*#Ro;!a^&@b868rFW7g@C51iSUyC;`kc>dnA>>+gRR? z2JwpTk|xD5PNn+d~kBtlX=)=YL--@MfjR3{iyq`9W;Mht@NzG4K)-J);*s8}0ZP~)W zHk@5w4DmZ3<9q>hsxL)yfGAM!gV|*Diy;$)z@>f5xk#|t4P}imGs!%{FQ;{tl@?ukgul0wQK*kV~81db#uxFa?q+g+B z=R+sk!}^I?(BMAEd-Cvpj>*t+-Rj<@+#hc1<%h9Y%7>LVi14hf?|L#q8u6^Kgo>5b z!yC1h5~?mBlw=?ySldS52a9rbB+vcZ!o~SH#LJC_Z{vX{NdK=IBxQ92|#L^4FiB2;(Z zFDUY!t)^7S<2Du#xn1ZyI=HGpcj2|7(UeVS`a=GE?69MR=!6f3N?|d#?h@iklpu+Z zgEi(Y7RMy~vDz1{tu$1!3Ene98wgc5)0HwrTn|NGskjdFI|p*=>)d%gx0#Z6nWd1$ zYR06}YTcg1njinpZ`ruHo9!VrwceQCS3^;StcPz;qL>?K_XG8%`qC5Tywl!g>5u*4 zfGi1C%Q-AYwW`=T?rn?QPR+6~l4_*hox;a1Yz}t>ZvMut^mtl*qHVuI3gUK~rvMDe zg=5c_Ggn>oW|~y7z9Y2O;zroU=I^ztzEott`;|s&(YAnlEWfDU;zS?AYx|u$iOE!t z2CFfbrz!Witr315=ky|`zWh>dNstjGXirf3*Xr@K6cEKivD`U0zl!wPa-2R^PLsSRJxm81gg2VEm6C zQLR#01$ot%GZ`{f^NCnMY#yLVIem-WkwVxKct0C2!g-_t==lNVT-Bl9YPvDQd z4Fdzwxg2z~%LHLRdh`!)*)r!7Mu0qYAXuFSr=nXG+!P=&LcQ%1#{I!L7DVz=rzKGH ze-R<8z1ma%s;ZhYfdnb5a zBY-m>p4esTu@VsTrcinl3An+8C;%s$56;|&Qi}#q)H$uhIk3JofZQ|b2zmopyBt4% zW;N)0t8c2({Grh+97f3?&oXN7SmNN57^#r^^ z;SeJsfJVXP`s`E&RS^df+Mq@D`m0BR@dUjX)J#%-cwOpzmVN8LxI{sqC>baj{z_7e zq6Jx~4v&zqBPEk<)O{D(B>ZVFC70R75!d#Vd(_%1+HhY=x*Ef}Bz=*pNkPh{Jie1% zIOl4|mF)v7g0U~%gITbtV1IT+_@kUtKPZWPaCKJ{n@FcOSjfWCve)`~;rH_4ckg(p zwlWfs$Wx_z5q`c1rXjh3B7j_|$54tBY~NEB|_uM(C8Rl6h6Owd9~k7Sjj zcRq?DT8TYAN27#%O?(m?weIr!NiF)hpn*oSad_Df743HY1r#GRdzrf3OS7@1YmHv} z=#+>Bb{1s}eYhg>DUW`35r9e{o$5i*VA7vf!x*iQGrYg`K!9`W0s>+QW;#X$N4CB6 zD&pSJ?X6Vj%hXaMBdk+@B`SAeX>gpHMUGv5D{Nu;JsyEUwE+Ugd6f|-2i8d0L1D(nFY`PXJW39$1(I7>*q zc)+an4?#^$rf}d51QDHW7WROs90lUkZ$VnKiL_r1x2zCQ@$awQDOPDUAg6muYjaJp zPn3%KsWPjLpNBk}{G*4dqs*$~ce`(7PsTg%o?jwQMS7@pX02sn+27Fdwx+zeW^}Q> zQ}wF18sh?QdF0zgdH`W08FC&&F`?9F`*_4cp5^=G@1)F>O&(0UdI*O+)nkoa>H1f% zGNNzR6|>{CJ9`I${S4vR5six`AtSSRd1m`1xANAiin{4CQDJZDv^RerA&%ERNsVXW z(??V^v_b04sOV@GFr>xC+R%7d)MvkqTWI)+>{&pAY8$w784#uU3I7Exxj@wQpINTf zPMPk-x*>?XWHBcUbIVzbQpu4x=WTl6Qblx21U}872+>7MMDX+X*J~8( z-YR6I{%b25wOBz$;Xr?K&kMHeju+>mey<}?l-_6VzI7TeF%jH~8A7M!1bgZgI1=o} zf5Td#T6*)zQ-S!G z1NL!deM$F8-He`&BmjNqO~XWK)Dz*=fFS1Nt0g)q&lEe zl<_DALd2w=DMMP?&w1sLEj><&JB!mxwe+1G=klD*7Z8O%y)OUO?BCArgTWeYOM`*^ zwgHp0PV+n2tGf~G-)jhee^{P+jws0d268{tDnAWrWrtPYV|2#otCy18nw6-U$I2gE zU3T3RM{BNlV~YTqo-XKI0FF(2zR_oNbX1S~)j#+PNr~PkG{)nHN6X)3>c9wdB)PBO z9+s$>-YphD4f8ZCFKg~4Kt(rB2py9uo3 z%ltw@1GuuEot&6W*Y#p!edisvs92-vJ8&l=q$m^6H>C@y&ThVcJa|U*M&d&(E1h(w zl%u|c7Vz?HjoI(A0Dy~DS?f2F6L5{!R-N1S?c5ho>gzQD-1js=DBywlxfh-{!M@#- z{EoA*MDq>Y%_(;pmG2yY{L6cOE;60+P?)AXS^z>~^7Md-QGIX0cg8+8mdJQKgFIOr zO}n+#`g}_&f=1hlAK>wpmlZ6Abo+B=!nC3(=`H7kl?Qiw61Tjf@&=p<9_*zUquZ=B$${za|r&@;YnsJJUnWnJVn| zNa=0@mZt*-y85|05_XG|y3dkAPfg@FvcssZ9k@wTYOkG0o{GzEPV6o}J`l*0ym5JgjRlw$q96i0h#)NU>s?)Tb#oa>(EcH%`X%DTS$f|E z#?O63rTvX^o`x$p{?VF!aqW|g`ZiI~)T$hVA&eJ(vNe!TgBwC5xeqvw2MDmmLw7$3B)~T2j~{L9i;05pZ+xhuH5l14eI(;EeahJeS@sr+PhZ7I(~S3=b6t6u z^#ZGMCb6D~hm2VJvx=VX2yH8a9L8v)tCmN0c;j!lKH0%JNrDIi1Jx1Li)CVjN$e0S zS&+(`PZd4JNdAUkb+C*MJxAZv7!4O&<+s>oO)6*)m>x2nu(70p;!^`eZ0T^o=n}OjkB3*rbQOUfb?~W&={Cek`XAt(h(IORj zY_L3-mtR^qK+MI6OGih?TVmP;%WiLqo+4c*4!eb1kgW5kbfdn@9p2Oce~|-z^$urS z+fJ#7*AbHTj<&Y8o15l7zW$u}m=7`PItHFM9LMxB_hz6sFP4ML@T|&zN9y%RZhUcQ^MvG0~rCV&pzy$yJOW7!QO+3r5%uuS?kJDva zB!yU|CuG5X?|!?T6a9MEMdN0LWRNO_RSF3#SKr7BmFBtKC^)x1dI|{+wig@o(c!3; z8f#b0-aKzXNtWcc$2eL*xQbfec72AI*SObVJ+}FxDgabb%;rm?@!uMs`cqRGmtD*L z2u`9^)excFe@5Fks*QsmX?dSzu9B^jNFG(ZvVMZ~`ZER!^Vhlp#M&P%U2RVv5$k!e z?`e>z**n~Q^C2nT^{?-@hVRdMl57XpX`{O;GWJhledkW~*Kci3x{vfg#I zK90FfvbSCj)5eQ_>HO)o;>K0*epd65^~@PtqHy!?^Aqc4PYJBP4X$9vYu0YR6`gB^ z$l+|W(JQXUeLiZ{ajo9JdNPmPhC>-(sILDwU-!Q3nvkMNs7to4#g6U(^?syScnsNr z0dK33vSe&RpZDS@vQ#;bT)(o?Fy6y&Al3Y|Gi}anU|=8yc}F((L{O6nk+ij!`+ha; zR!zPYhyegh?{AJNB7pMW8)S)$*+Jk*Uuu7HZYU`H4Xvqtz3WrrXJYV_cmCpvEaO&Z z@dQX$E?Ml&b8+ST+ZYLfS~`M?R>&Puc}MX-5)eoe+i2CqK0$t5u)O4 zzeA=XHG1>r(1&SszxMo`a#`cpnqTNPJb<6+LnaAe=3qe;hJdv~mmmP%_HMyLzy+)C zTJIdPLP-d$2#0YW&QC~xnhVLfDFS>BA#^Q4_O@2`>w`-JvH~0*_?^14qxfFdTtBQ8 zMMbY@y_D~a{!>bVHF?1{>89Z)+T`GmpSr8*gGd0FKNlH14PMN2E&%~rIK}va#|H_M zRK6mN3r>o`QN`s=lV%P5jLSRIG{p*XcB45KXbLJ}>nBQ;yMe5zD(5>JHDICv!U?NX^%6W7NUM;=YR zM4Wq5e#0Hockq_QRL@)r$C+(}zWLZjKh`ww=a)|l7WfP%k*(HziB@B^?gHy}z~VEg zPZn(SQgygO@*cR0QExTII!z7)JT{0J7zEgB5Q-fn5NLaON(vOjqc0#0(uTp+Zyk7` zp+Dibjc&b#hO$x-^wA9(&5v;oV=Zf<6L&fXvQ(JbBaY@yW`Y#b{4rCde_5z3a5asM zMFYROQF-T1mE)cVEWEeP3s+I_8Ju*usrQo{@DXriAJC<|v5j0IcAh_NQZ*CU3Qnvv z{(Rk&#ACItd9|VZ@g@a?Z!`>zh*`I%cVm`*l#juDZa6hTyHlR#dBqPDC+X0XkCSBX z_lWfYM?KD81wVOO0T9MnTGpq_Lp61W-C-x)s?DhIQQ0Ilhn~gM=c&k zekgw3UsXOijSwRNP0Tq_QyC7!CcgFWG^VhMn`gU+l&q4t2GHF!$d| z&=CeRdAY{0$`+=y3+n!wnn3N1g^R=mpmzkJw^5h}Zo6dUqSo6Fyl;f4xaR!0a=gM6^if|M=zG)q(T+Av zPO1LY!dPL{04Md9S4t7r;UWFoliaur%~A~CFumX6L6>9IH)Mw0>aSB3Wxnd>vJt-NO;@2dEF47T3JKtx*Xowb2e|Uy!aa zs_8WT6m{EZBU z_d`x&!imOW+0>D{5E_==tu~R7@$C#1e|TKnOY;b(Hk-X07{*i~Mh?YctXe3z9s(QE2>`l@PC4Mfh*y0sqpEJJ;CwDtubp(=TRYl z9U5GMC4NeR`P2|Re&)TR1}EDyMo>v^u=bFp)o*n6@8w6GKg#4f-3}6e{84HZbg<^w zmV;rr5M7aJ%8qhwHm6WM>v+RHUgX^KbJx-B<>v(1@$==qF%-CDskCp|CiPa8ToO z8YK1MqSmSRld9T?%lc(8@>lIXAo6E_4NG0!X5R3yQZcC zY7$PMv}05&LwFs{s&8||#vG9krh%>)Nx7f7jvpW*WNmt?D1kESFC5SLl@&udGebx~ zgEJz`k0(QYJa*44JIuJP+v8_KLH*q!PyFK(R+& zGAXhecjP3nh8oaDM4m-1R2g9a|IlkvoDHxah#KKJ0A2H-G;ZkYiU8UwA`se zy9u}zvqOr_{oh9N)DO_xArDB=#HJI3?{{cEme7OMSvXjHgZ<5$k)8*(7M(`0+g4xG zY>N!#(;x?torVgQnZFMz4~nW~_#xr}vI(JAKxlWyl>UU+qS}2xiD`vxIxC;hF<)&k z<;zI&q6GcWny#lTt0GlG)ZjFB7eU8ilgg#pC7W<0{nY0kjjw^5#qC8Zu)&Ion*9r}^Upmd zTYRn%uTVqzmoixqIiDA07n7E_-8iOy1j8q_%C%qCWCrsG1r;Mti>t*X$`eTzkFU?g zF*YVl(@mx-p5R7PD44Q81+z^LPq0gEuwjCRkwf@qIFr3Tc=?+}MFo zN-j_1B}mN^Nu{@*4S+`%ZDIn1a!nWE$b>x8`IW}JDCs?WRr-cR)B(v7CyWnJ39rj8 zy##i=^+yda=A79x*F;%XE;T!80X41?#N*PJ36wlK{j*)GR2uZUHep&qwSIz*{18Pd z>)Dyc+;xw=rqxYpDh)%Yv0MSgaQkL_tuF?vhw<53dO(JTlp~O|F9XLqMN=G({*cnC zuq%Bjz^C$JeDpm3v+*mr>0UuBRu<=w}iHK zVrMK*C~SiWG2nRx3DKMV>8jtm$H!?>;h5#0hhznCfenKXekMd2b2{TPYP-ibwtXPS z!t=T$_c2XXlcyFAT51jyqUjuzYz}-4hYr$3BgKQzM()0Q7*zKzl@s6gQiuK>`o^6K z=LXQR%&xAsjutF1bM?5Hj{&4~c#!rcMlV)?)!y3L8V=@N2xEiA;&gWor>(<2xcoO* z1S;%asN}AO=z^xR3s2L<=R?ji+?UYny*}tv$!l3zUM`>Kb`KViOj5rh=9NE%FNcJm z_f;WNpANuLJbQegKpB9SvHRiw4r4HdPb%Gr)k04#TJuLv%XVl~`a4ROOiNnTv*?qM zthA0>HC649z%#>`_NHSQ(mKAP|0+RPt+cOt0jI6~hQ)}Z;!ZT$0hUIqZ`F7`Ig@M< znl6(=Sf7}P4zoOUWHQb2aRs>{MQF60hkw{lqumejZ#W8nv`VD8u_Z{aefj@dfJnV? zUxr)WlmRM>_z2DQD)2VcbZbnJG9eZC#p`LF=eM8s$9`|<)a_))@ZSS|_n#>h4| z&F*kpt!C6Yhrd{g)7@lb?52-m^Heq+K4@thIJYjA>N<|A+Yj3q`kA_v1PhdH_q#>fqdYwA{#PN)+;zBjPhWKj0>33|tfct_@~lgS7!n z|En#q{JnwDTi9z-6l!i5n~ra!P6x*txA?;5E)d2?xiw_sCF^|(x%193qJ;#7l43w? z*=~115&n&1!ji>RwX2Hf1>iVIc{{{rZWuLbG2-d}Ex=+0YR;8&2Pa+V7dj6WDJ(7V6ivY0> z2Ztf?LiSd=)z9dKDH?#VMO-z?V(N8EU|fc3L6ZD@FJ%k;9Nd*(7kOzXx(>h~2X0KgOGo-}<&u{DcSmDh-H}}{H z&jo`b;6brFLWUx1g>5v^JrD{-YXevaWncJLrsfrScNQ^@TWwm=dN{B(yr?KsvuwyC zpBMh^w3%33)O)o)9y}zCx6W7J*x3Bn;OYjS$KsjFW$xVkd}mo-gKG6A-&3v(Ss61B zo^Ac!nFTkkITP`CiO$tY$Le%(=qsKFv;9v5JWuvt9GIBjV+faO4tUy(w;---Xc{H6 zf4F8#<-*~u?tEO`U$74`r6K_K@SBd4mH zZFs>|(f7IE;CyI&L4Z{Z@0i!f^J;c^=d124%2oum8?ZRuOSIy(nnhq?`8Lwp6~oce zOtrGuw_IW3!FAx@U$S_f7t@(kyYPCE?sQ}{*q8%3Qt<` z5MY4Ej~*ec(hd%18-JEW11uBVyYJzhd=}Y3z->iF%xk9y>2=_yNQQ0^4iolIpT->g z=>65yr!t^Wy$&W=8YmHI*TMWbF*aYNN5a@q+f{NeU4JU3Rl$uK%*+jbt=V}_Op`9% zOCJTx{WaiI$Smp8mtVq{(SKE`S&fG_ik6JwDUIu`MiT4FwufSwnvx;M-iD$&F}~6R zr)oqcV0k)Fl%}i8NVNbFgY&(BI4+_h_{1PnOZeNKtU%Y98#{#5!p%_#FTrhI20U5V zC|VF8emxXIw-9bK+<}+br#j__w7^%cvB1Bift(67R?gSg*YFroP9Pcp9aHF=SF}F> zmp+@l*MK+$`{3neF8+&W16Ym*)HdZr4&n<+Be?LMz<+=72ngCh(g$F13$;8er^d~A zwin*p!t^^8XYF7LAP;TBXVs(8Z(mfiIs-O}-}M~l3rzPwgK%N?klg^?83N+2dlg<` zFxBESM1YJQ+$i8qff<+<uo8xbH8VgJBD$a&pafSn%2Y5c6FX6bY$jUl$$D!8K9WPf+A){;?B zEK78Y^k+mBd8qdCl20e6116cedMrFL$au!`S#@U%4VCigf>IQoQ>JOAPzcY3l`0Ir*nFN>=_9=88rA^?Y1T(f_NQ7GKbPM zTlSJAP8Y)JnySVHzO*ixTE%jY|2JL6O*3qWI9aL>{i-FYnoSU&doWX4z?!b`o*E3K z+hYEX2U3*2c@TZTZT+tN?xHTvy^qGL_n z>FkJXDpBD=xEtS+zY_GFr@6pnB0=dG=5YRv6CC&mKm3v);Q15DI8WLQxq4(RzC7F# zalle|^`3;U_gV1(ui?doz8k-w&Hnp(dn8rz&f)gA!BSk_dv(70oY#SKS|_(uxzvKx8XiTS z^?ZPmqyvrOeLnU(Wys2M!bOUAB9VDc=tuoT+U|At?Iv5l!41Sw4VmVjadP8>IoK-H z-nsZqmLP*>i(ah^s2S0fZuJbX3Iw*)e%g8pHiqBsQ@5FSsMqMoC@9PBHy5P8f9(*n z=;)=L6j@3|v%bP%+7`@INWJa62a*J03-7_h1Bc;5*j$5n)zAqU{AP3Dad~hM+~Qj< zM@j!wwEZgTe9YFP;;7kt;Up@O$uwKeTa9^2xek89`(ZQ18`&Bc$#tp$CZw!py9l>t z89ACoBlZthC$({G_ikEb9kEVv089O&Oc1zN{w+1c4qhev4H z=GpJ7v@k|;Z%|&#WNTBdT_(AmqrFJ2=3^x=h$m^?GAo>Ufo)SB`;3#*t2T@b`zh9g znx)`*bZnnRQL~?^cKvO1tbSE5HR1=-T*WksZQqLMQDhBguhdhjzjFYSJ^o-GCZIPz zd;<+SN{ETLT@djM4aLw1M6N1|3*X3`T?K_24YgviowAh~D8K0QgYg$RpR7uC} zcz5;M%q;ub+4+Q2C{=;&vhYs%tL+WugZ+Qj`==_?ul6gSP~6ymycu`f%r^@Se@Gi$ z`~)7NSd)f71o_URjs&y^YM$Vh%lO}Ncxcs=g3ALX#!t*Rx6i1BJ!C*cBtsZ;rSk}o z(n<#=l+2O27q?J;wd)7Ub@=otmhU6^KjnDp;BZ0@y@6Oz$)OKTk&w+86od&oyZ*I{ zx>rc$4#aA@XMZb=JYpr(*IVy zKQ+=s`)}Z5Mc)6T>8rx3?7DVQDM4Bq1W6^NOB$u~MM}C;x|I|WkuCvArKP(=kdhK< zq`SLwkM-^AKkz`23w_oz=N$7+dn*3~l@eD^=Y0(Ousy-}I}R?VzyIBnha)odVK;|_ zKWwGHLH7QjW68<0N>2vBUnm{{dn+MCae!~Ge2d`%0(H#?QUmGMi_QUh@DF$)LYKen z53eqM8YkPyp!77>^Y*V_ffp&W8e#yW8?YzP*`5Fi@Fao-)vECR=jxu{D>7)#rg{f7 zClr?>*q%>Oq+{25^1(Qs3g^GGLMcD*@y5IyG(nt{9(r(ZUhKSOCn^7H=_x8?Yn!pS zw6CS+6$B#~5$i=bgvWz`QVPacC!rhI(#}8~d|~<#5Z?Li?UbC=$TYycm^BLi48VQ; zUp#n;$a%8CMnv-P2R{UQgNH!+n+m)2u;m+D=VsmtYDahX9JlS~KuKwf66J9(*2Pe& zw|ze{0b20=+mlY$Ym8W`2K!K0iMaPU;i-GB$vS3;x(K_>r|_o zW?SePC@Fj!_xuToZCy>D(C5e1)jj4BTd%dvlS|}P*Pjo`1k0i>)^4jDYRIHfn?yOk z@9h)4HU7C^20v+W{dKaxw`i7i9F7Oxqy9-M--W$WlbYH(PU~@t;X*ww=;r`=eFocf ziCV#2NY=qIqqfahLAY|FszQ=L1f#!IiX1j2;*d16`kQ-WLnSEsi%L-Z=pyZ?nAK*i zrB3$6B1-H4%jR&VOm+A#yIVz3hP;svzQP2j+vMVE3$V;QSlJjm8x)GV^cJ$#s9&AE zl#+5dTEh$Au(8>EP*`A)rEOzuOau7BpX%-+P`(0DhKOlK=+gf{!-ib!lPKxIRaS(n z;o{x*?=CpBh!+hk8c`X)zsAJGh(ys+Q~QA=3`RJ3oiN}`<8pFAc>((|GD)WY-4cafnWs&nEK3* z);MZvYt8Bk!C=m1;q$^tE{fOv)VKm_N9~nqA|L}3+`}A5pNUV?eY}UhGRkIwMYP5- zcB8+L^eTpcgc%^bV5N+oi- zGr=A1e?zAN{0lVEaeR%~HCVavLt-l-$o;F)rR-^}K=TL?Kj;u*_7RIbb&+QWE_Cqo zXf-r6E@j)B1}#fgU?07QX@ zt625G2Tld!Kml#$KP7TPMVYj3H3hHVgXqLwL}flMSRLV3_eAjfiO$XRBF_pBgX81T zhMK8knZ0BL(@da!i=G*3n~ByD-P`JLJc%F`@m98}~qShx?Sp_H}rsZq~9KSH3}bZ&c#z zM6S~r0oCC$rzL&AcXXcs6pt=?yex|o_$dRGNdArJ3*CAv)JBt<^GPG-c>$Dn9?;{YA zt5L}$+Ls)jl;op%II_vNF3>}gRA9sR>C!k_DVNUG>6hnD0mk~H7~;<2&d08UyPtkE zc!kB<)`!MMK|sEmS0>?=eaPIzMB_U?xvVC?tHSD;j*e^(nu8A?Jj{E~zQC=4HcAEn zxfO^?md@*i<{Gp=L^Vg-m!{vsO8FfOn~R*SfnW02EUXSq9vs30aWal*FAX$uv9Ym< z++Ja3O6o3RIsv%$4c6Y<(wdsfWN;$ot+Jmwbeb(<{OC=_@Z*$kw@&j7i3{S?Y5$=& z7Q%xl_CRLvV$X>-fO028)m+u`TF!9(-JHIRpjkCF)VoP*6Ca z%LvY|jwJi0Zui+f7BvclvBtdbBDF&3(iO2DIVWPsqeufltsa$M6^HG$=iIcfCjy3;;%2?y)(jh!G z-d|)*@W|1TmHQSIZ|TG~FN2X1#tOvasG3nKTI~&H%f}}tIYIji5O^Sn>_PLvNY4AF zrLT{Yk#YNZ2!!A$CRJq}JeLcAyW+{t2rsJ}L_>q%N2*^Y4cb$o7%T)5T_AJ?nu(^z zpT?0wfm(%a{%!q3d#j&>7METF>N#0>mxGL%+t>L8e+godAnp%x3h$+>=AAkA-~ImG z#HEx;DZDq~d7fB^K(|S~vUO$CWzWrvpv2oAPO{CHOJw}+#**ue6bi7Bt)<_U z(7_9_>r_fz*xM%vB^5|MX8y9LT^&EMULHT6A-WoxMwKD$^{Y(saBcWz{R0P5_tU3a zjF>kB6Ncp1059GkP`uN4t)Dv_b7-a_*a!uQNfJ_Wdep}yc2kM z^YABF2qQyB=y`>11C^?(>e+e@6$Er6+TvwnnmWojXJ&=&?KT`LHQjDPpW>RU<69d1 z`}nnl>8=66VamR(epks&57k-5ND;+b2}r&^Xy1sPBBu5IPKks(lT$FgE*SZRSBxVQ z@5;}9JVN`}_e$mQec^_{IrsAghAo-<`d@ko$U%jtA#@>W50t-%zkePsG`Xjx zv8CJI-Cqb{BNNDI4UQPw!Qr;Qq2aP1dZvO;lIlL|&1S&34M(WRU}fF+$T*6DK+iUQ z!9~i{{O{>m@%gxKF@F2~-oL>|#9_Al`4AWg2v9n4ep2jbXLBNaXXoVATff9YEa?Ae zgPkQ$?KiQ(RdLs42&fu03bguReOmrWzXL2E0}ahxKL8Kol7y>|j$FR5ybjeal%k0O z$Ek^ewXz0yz(-lv4&}%D@ylj0 z$?4;X-#ZrEG@^KpT0 zxqnfL;KBUmy)(z1yU@g*!1vDF|4>rsVNs1*{+C^j7wO$<(F8bRkkzuaj?BsCzVoXmMeq(TrE>(8PpY(~2Xf=g+Zg}r zhA5ragqOq2V+D*nJc?|imxX*-8*0Pp`g;1iHyFNDXVS!%*Twga-sYo027dh=6-Igj z!8Z?nTu$~q;*v(w9c63#?)V~OS#7k-U_G?2zEO6%R+IQuPG&T_Gp{=F0Ee+TwEL)V za1czdB1@Kd9)eHD>Btxqh8;gh#yl=hZ~MSOs*lshg7p1n6DKwW$u}6B&O^i&_o0<3Yqh!DVXkw^#2J&M z3dJOxn&bltcWzn#xE9Pi6RD9naSqkg9=}`qLL{`hU>PaU z7Gb;k`{4F*oOL@#IB&bbDIt1j7^Hi&e_l2g|+ZgLe_fzovJqg@KZ<0kgyx3mkvFRCgp0PrKcxFLu>QOzMq;3 zXUb5f?5iUE#_u74Fo?lYLR4k^>XnOM`h)Zyr(kiX$xKUzzM^>7zy6i@WzhFCINV~L zWAh@NsFKsT+!*ef;87yoo^N#0;aiFh^Pj6Bw?2C@PJf*cNTHp0!s9MES4=5*&_3C2 zP2R_^^eD*ekm19}k7cIa_y~&L=L`>voJc<+E;_pPJ<8#Ibo6wav3OG6Hza^B{1v|W z%{=|!mPRfZ*1ywjQx)C?7$g+|Gzm?P5<$>mKxBcfkOLYtT3cIXWMmL%Kf|VrwdK_G zwAH^VN{jyF(RO1lt{UN7HY}gxZc(v}$5w+FYNy7I7j_u<_eRw*QYlMg5G9@iU9)Jn z^TpReE}fj1q(cm0tF_vdsc*3rA8~XA_Gqr%?g$&4GH zS4E_m3nFW7wi%&O^|`|Jy*~A8RNg^8tmy3Y1t-^K{=X(|o~2bi;IOb@p7F+Y2|jcV zdN1`to=r1(`{74fHR>lOfGegICzU{xFBnE2yY=?y{EaEa-W; zomx{zW^T~)2NcDDzPH!Ji1@WvfJD$*sBx?2seLjD{Zw7;-lQez5+#e#)E}le>$I0q zM?oq|}XWtuA{iqzs;SJU~SFszfH*&L1V z*|a_8l1pY4;r1D?5`!Dxp%`X4(M~y~g8;PTMh|f|4SKGmx3cS6mG%MKb9XW`GuiED zgkt6Bi<>T(AXkdbr3o}049YiO0fXUim=hDZIWvJT1AYJjCYljsJP!=mUXz`jp94v) z;WEFz-u-U(n9E7(Vr#lS9^eQg8=Ia?S%dl2)t=a=F^Pii*tb`Q12K%bVhxu??oHQS z_qzA_y)JnkmPMr2nedech)P{km$Iln6r#_5eT*3LmOtc=*_SwNqfVD5CXyP2Uw`Pp zGI-*Y%=s$MyPonN#MX*Wl}=vkBN;{7=D44m>q^yz@(Ai zeIG06&30Je%V*LWZ5c9*F$)g!f8)GLiOGgvT&zh*pqr*nild4ZY8^^egv7RX$gktSMH@TqN(*QshnVA!4{le>kx(Ff~AHd9;C4tjKci^@TURt6b`` zOHqpYiJxB|SIy8;i8wosD@m!jWt<-0q|~jS{}c6$6f=B}(DlI`#cLk{ z##v~V&2A#rHDsN^du}zH%K=FH>Ue1e62E}JAZ)G{ziTU?BpuNn@drcs;&j)3DHIuc zlb*Xm*hQW`3lyCJDoFk`!$Laa_q_NY$@eE$t+iBW`RgtmG$DwboK!J8d7x&^gGtoO$b0hWcyo-+sd*Pv zx(aDGSTHY#lJlje629r1{XZ>$aOJ5RP-`#qhDY_j5T7Oh)19&z211D51ZDXw)Z$EN ztocGISY={l^z*}g0$CZ4mXBDIs38Dd!qtaVu${AgWF(B&_K4EX1X3YZ)|E!g4kNoT z?KD!?ef`&}FQbm_#rz{Me?J=Xj7OaE0<_Op9*OqpePUufMKw8-rutLr{g0+IZ^T-4 z=n?ZX-#62C?O%^g&CL&nde>{})R(t^9FcIrKd&mN+9Y#%SYN%@+>Too}(;k zC_4B`mlw++t~-%A<4<>uv)f}Zk(lW`DNN~c%6r;4b z{dvbv`0c8QMXTwE#;q+VvcbCXS@!2z>4jtihp!wHpP*YdTio;wQ!~|d1V!A}em2iN zsWCl@X;!JS|>p3Q1VChiGmjRV7z?i%DF)`b~M-JrB z{E}MxxRp9Okc$G)U}o)V7ZW^Pk7(OyBiNqiA>-emQcBUre!CyqOF^@fMf6;W=1%cf z?DGZbt2WX-DdFuYCcZY(MqYj|FXCXXw^JHN=~Z#RH+8>!@{qpf8{xLoA^J;Q zl!$D}2s|~WvR4GP4IU4SI;#f9%gK)OR~>O!thS4!+5&4|bbku@HQoK?Bad9w2{SH9 z5-ch}VkI@Zjy{FMVDnd=EzYtZm{WH59SZnwi0VTcvdEbsJ3N!Y6j1n|mXkX=SMNtnHB-{QyG4d$ukg`Yzn%PD zH(I}a5ROIw&F!RPBJNu}A4-(hIGgY6D29F9JO{i_j&WWsM)6CXmyAAJi>>02Yc^1Pc0fu6GrLWWMkjYruOCw!JLCNI-$Gwm9 zLKY04$9jVN@@Z(1IT5#pyNDV8e24opct>ibsy>uHz04bI(Z|E?s5Dn`T8*`R^NZdj^ps>bcU`*E!u zJWjScs}sn0*qj&GoXY7RrCrVY60|eZe>{PG3^ocGwF)1;<(0m#dp@_Pa@?y!f3wx) z;k(w?Yg;MOW^Y+u`70=S&^a#V_-ThtcfN2;-b-9VKEe&U^_E!a<}#hGD-6lHx*-3& zqgT42QbDakox8^J&nIk)Vte)|Fo~_)>4Le7wVm}#`q{&YJO8OXl~qzQ2JymMj^LNA zz{sd&I%tDZ2$~3h-AC+0Ff~JV*?w5@1;7ff}7Sz?% zRPP;)d(J4F8x&ecs9t5nLWj5BPse@*wTyWGIUZUlj!4nEQ>8xN-jo&nHSfEsIj)xj zB_E$pKp;a>f0*@uBT7b*wYyt7Qh=wG#wHH6_F(1 z1rr_JaPYe%6s$q^8r4wcW)Ji@ENpIKiXn131ysJ``}j;UIIXO#9Bu2=ig2YNXdzhd zi2cvHl1y5<)9bQ`Fb=T`);JO%C>~;Ed3i{Oi3D`3u||QRt-T$EkIx+nfLsiAc6P=m zCP;-uU6pvPIDTe+n5Lr_ij4gvhFHD$K1l@?bVvn+qvJh&j&VJ?yUP-UBNY7LJbS;7$J${T%MqwQvJZ>dXwjPdj+n)TdSikXZI|q2)pjj~*Y)?b*Uj>I7 zWOp_VWQc=ZugQX-j0O7Ob-cU>HjE*v_Uz)~@3$9dQ(nBzyBQoyA3iRV=gTUu-sCKn zl8caZ-cKX1SkX`sdU^Z>-kXO6mD(^h5)lv)eG75jo{GW|B{@@DjKPmNY(JR!2h3`z z)4rE!*>|=%kn69q=}R!g>~Anj5^p|4I}UiMcDm>iENi17Z9IqhTkqXX7xCu)+fxZa zaq^3+<&O=`B+6Pyc^kTcKl}o+=hhRx)fDSsbAeGS~B1M;~}?JcmCNc*8XPww5_(vng)q&#IaM(yvtT^ zkWf#>Em_1{du;g>4?ptK&os@%Y9;ng|kQ3#-E@y!E5FiAQ3P#G% zA$EW$EQZjq#Wq*hN^QL@-+p>_ z4^JGdeNCNkFe7+VrIb1kPhsWbjYlw18=08AT6!m)5+kYY!k+h^yG+;v8lD5}JiKa| zuo^{e-G^kA7{Q68qfRJQPEY&4ta#KtEr}O2wy+IU&?YZSk9d7@3H61Z&j?X` zEbw)54hs=9ntkBn`_9PxP7SrAsmyoa>VsX%MaB?gL z^pAFDMGYD!fi#0_;K663q~Lf|=sq9ed09~og5))2g%uGVI=T-N<-QV7Zff3}Q}JdZ z8h%H^&HWG&R1WScHd+fS-HQ`%G*Qu6ugfU#dbBlYC{DTA&)--ObPFxU`<6((IM@h# zGNAX%b6sN2^J@4Br1{tz?&=IWB#cUv?Qz!ImWdMg7H9Vv3IVs~FjW$Jq+ z+k8~eM6A2PhbD^|ALV+DI@Vv zo?Z|>M@Y6Iwml&;lMd9T_t3DH!uV!b_G%$?#b|qSq;3(wanX_MAP#7i%`d{-0%wMt zUd=TNA_No=%XE-kjTKR5Nc$R>-4-pUAU57ATb=&Yk=;obP%%OTnbwch{-b8GNvcas zZ{3Y0u}K3o*~?98RZZf8cgHPmetauDpWTA~R|x7qetU1~_bb0`t$V12>{D0xTqKQX zD=vO$IGBp%Tt*}B_SQu#|4ciqa-!Zhn#8W_#z_*_oyxkt;igF(vYFqz3PK}0+kCej zL8w3%Lq_`2%a84p?e@j+glMEJy~nuD-_mfd@KI%^k4!fmbH_X}Do=;@bB%+NGM=Op z$0`F)rPcUWy~$&D#vAUcR;4R)N=oJckU}(LFuY&vFi;m1RO~jk1>tOBc*5DEZyIp_ zRk|FZZ5vmmb|1j;3Zo+$HR)AveHO%N#4@yRk)&Wo7!@uY0?NvV+p#(*y$ zid7urm=fYP0vn>Skx}=UfpWHN%vE3P(BHrO?)_AL@TM)!|JTOOmL3aHAz+0?kCV%? z!3C3~{Z<81VWbZX=EHfff*uLad{K-dEiTn5ot|CRo@rp{|f-vVUxm8 zoO$WsSXdqsh1i`-I?b**@te|K{LZ#T>HpSn!N%c@y3jBuT`*bwG=CTcCohu_S`Wok zIBx`;LZ{!Iu7@|K7WZY|zh%~lpDb~>PSVXAevpsPpLv#2kJOS>OlH2Q9+RTzriCn| z)+m>+A*qegk88vCMk+4jZ^-fKPJp*QvwbC*lM_R`~(xw{-yP`}O*H4^QRR!&{Z&9K(Y+K4aU;Vhc zN-1G_cK097MMi@|VudKqn(=y2cyyT+c~t-!2?v*d`qqTw9PjDEA)AmjH<{0bQzCs# zy|JBLo#Ygu|M;1UkG^lzK2=rA$m{*3JD%gNPta#=2E9b9D4pboYUsawbr@_;fAb$a zc7rB`Vgjs|ce{<6=>)-$+0_}o4JAZ4VNwAQL1y5!j{@1SKNj>)!-S^6JI$!p;KWg4lj0C@_+MNv$uTE&33ot-#>Do0pX9@bL zdC$)*>v`j{LqcmUSce_=GpU5XHQKY@Rqqv!)-0m+JVsrjoHSgVM)R!hj~jce4s)qo zQj1B+?!PIMU{bG|I}gJ@3MlG=TVr*07)M_!9!Zu%RbPXd z$?0JtH@|7#8UJ%X>wM9?!`Y1snRNd@IurxO_2&Fv2EuYvilTJZg#Fl6YNf+->Yb!P zjGv9=lv)d&KT!VrnD|nHK>0rs#wTfXjEr3FJG!xQS^5nyy?DHP2Yu~;YLywcI{{Qm zD-}8yr&+iDNFLVsYX7XCG#10myOSmPL?(476b|qONKn5*20#^BvAzHhGUAbV zBtf*LpaP^oPfScm_T!R}Xnnm81C_rB4$WNeMJv^S!r*7qnG}OFXJqhWhDV)_-2vo;SA1KCfE;YpKJfiyn@pu z6Sx$q{wKr`#?qTOyBS{nW&*%b?Z-_yIgE>)%D9S1RDS`m0AXjuw)9T6?LW84j&Rkd zN<)lB69pXm1_NTRTCNkAMEu{qkTMeVKnjn!3Hl}Br4&b){U6rWbl*Ir#_mAv5GoUr%LBO<$|_J~t|elvo4aP&&1QwDuIv-av& zO$)W!JRu~npL?;FP=P*W(Dgo=R`a>$WQDcA;#2;K+?eQKDn1mhcY?{px1qmub%})U z=TJ30-ZZD4xJB7C#_>rAGAn1$;^vtCuI}Fw`HLa5d{af`TLhXkL;2#IE$T7u^om@_ zyZv>A1b4Yp@BW%_W!C5k&nKUFL~if0yY9b^!RwX@6p`AC1Yb2S0YL`wAw<3CRKJ(p zM>x2BulCW9K(c{|Lg`vQxSRG4ED69R7YXw6@vUY=h;XW`e3S$S14QGB+0=>{`mKL< zgg)(V7=KGEDog?Jv;s1)^wp1th#*v$WfwM+#v~cY5ILhRYbw^OJnngNBXOAB_amr1 zuZuHxrUDp*GuFhdc}N)tq8$%d@R{Xd)bF_H)BLYt6f5}q+-W{S`0-iRn66-_xcSS; z%EMfPBL=TvM~5KCPD4kW8gE^4`6e{qK9)Mar{f09oR07Auqc*1Rk_w|dH3v00ZCoS z?rMrx#f*51&eZ*^?tx2!#Ig?>gA$_w0% zz{tjaBqRm|A-J5lm6X(vQezSmgL77$b(?*{z{Ws0ZrD2Pu|$0jmzY=@P60~-hE_Frh9~{tt@D5Cpi%V*Ou)&ZD43#|=5=!n%s_YX0G4a_(zAOYL z+;afU4U8P0ASI?N5=T~1ksf5RYipL@zgNsc?|}>mUuCiDWtS3#r<#v&9QnNdGh>cQ zNHoe&F|?p>ZdX_;$TSH3Gz5UN08Fhw%fuU~P85w077+kfB zXA=n4jDIhtYEa_8DSq@Y>=*Zj*zU5$KV*oOmG5GU##seI0fWkj;w&qPNKD+C0RdO#h(3Krq&U17=24NaE?36)g@?po2{mYB-gM%XdcZ z9cuFglMDJM=ic3s<|b3+wUhL`!SBcPdAVXXSyWAkvZ#6Yf8aSa4d-X7RhB;jY5e@- zTqcua{QM6M8XOl_SQ||=#}?du>&Yo3OidqB;oO#tn_$u~GD$JYMQOb@+WBvq`f!C_ zP%w!we{8)SLNd+|%9YuD6%x{wWQSI0;x#wkKUO@+2(!G8@7(65tKhNcw`<zJW`FrN#<=>WdYw}%*CuQ4Nr$Hlw?p5^>pCY^gRsk~xmEcyb0UF34mF)}WM@9j zfB^$M;FGd9{(8P_=91Aw&+YDCxf$QDxh}oO^{$?=7r1cWFSgAeIpx)toU3jqWr9|A zhMkCa@4q0RjPLkRn^SWuc1ij$DY9P^vw|kkT1hg*v}zm2v~31ydcRqGU%_CbQ`w-R zv$wYPDK)9EAUjX`xRm9H16Z<4Ig1x6NoWuoZ;QPyO#*PJmz$ z!a?Zht%&nxJr))99tY+D;nxYc%bm5U+7Q`)nVR`45-=izr!HyjOs4}>i^QU$-o%NZ zcNr|2ZYxsE`s9g)liYNU5i}qbRW=m9yV{+Q^zFkQ0;zL$8yrs>@NsNofS8JxRr=p z9sWLxXLuc%!ynh@+{kCzXv;v`g6P#^pl0PP6~I<-BS_Vxdlk#SLO+DhZ;>TJjkq!+ zF3;#R$2)|oGJ9TM7Xt*AK%q^dMpSG&k zQ_38b{uf~dtaYNlbLY-mM@Tzrx^kij4_7{Y=M7#6NJ&?OL|33kv!DqRg=kGJPc`uA zt89nk4MIrFFpeBk`3jy`rPSVOG>|=U8}nud$z?74`4+G>UK-HbtH8p-vNlo92tt#` z@cx1H-5Hd=pkY8@iX`mm!@GCF!XWo`z7?e|d;+}te+t(jq}_brCKxL7Ab-Q9s5Oji znJqf3)*Akw#*!=SCq8#&THlD?&iHN0nfh)=U}LlpabkaI zJyusCSw0h{VduCJ%y$*@CcC+LB&6f7yT$hfBjP2ej`WMJ^C=JgD1~3@kHb0WKhs9z z#gf*$UoM3lQ=Zb7O{NBhgO%|K=p|a93k=dsl&&vO_^2Aec7oU!9zWJ6-kh$lmaR{s zgDN%a5jnAUh369%X(mSB!yh9KrFW;+fznV<2f_Lf@ipeK{M!s3Sub$RAQW;mxXmQ^`K8wd}RY)QK(QPR~=*WPZIl-Pd=jKkbZAb;=qTU;2nThQ0m`w|O{J zg#6*rnBSan0jGzgrTvK0RGTh$gzG2Dx$E8HboDq^*0%qO_zU-DWks{m~`= z#;=#d5k#|Ds=YRE#h$XzU2aWFBf#}7|LexQ>*Smp0v<9ooQiXqe2s&<<;g)we^yij z^l|fst<48611}wG`EbouxjMW>KAJ0%k#7mn8!i38sRf2@VbOV(F{l6R?{`nGy2hyq z!_{tn$FDHs8&2n=9TW}Ri2P9K+7MEX+s(%3^ZESj3jvbCy|XUCCRNM#7I_3+NWXq%aoH&iDsc+ppsWX*h+R64e5jr^OiPt$sV<68T3?%DOmZ^!|^VPIf_{Da#FRjFam<_6u|l>o!Daa4iGMYK=!f$jpG+>zMqF-IFe@t(#nvEM&HM!B`rT(F_-k78;@ksat@Ta zA3cP1?-VSBwHegnYvE)P{)qhza{_7Ago6J#e;czw%kHbnPEuJ17Y>T#!t3+@wyxZ+ z9rQ_Aq3n5s#eSYb!UC^mU5 z3U4%vE^C&@gpT2+HfG{|w+AZzBv$2y!7T|H?|Sp?97sU)Kj!4b_XD_eQy?c*$n!nC zvq*1`*8W=(GGF1OlZiw!$G@){jO?68YEI(oef0W?l7&sJZg_k=F>qiR`i&PL+88j! zBtnsr(q+CccTb&n>vn!UEzODQCJ{~8B3551juKPgf!19ek&k=KwfhywTDNyhGm#>^ zAE7&jI(pJY46adY?l3Oll>vUq<{-;SSz4my>0ID);B5h zzH~d;nZD;&?yR1zoYvnD7fJ}51+;0m=`uBni^$9z;%shwM)maSUHUD)InAV9n*q2&et zmHm($46(Q7*ci|Nn2d*e52#hcCn_Y1YXp)xh91MVv&OA~?n`bgzotE>2a>3>~k>mk?*+8$ri|4i+CExix7 z1kDl|^VM(Eqi0w7Aa|LI@ljl#7~w9kQ54UlWq$_AuYUUgo~2MgQVVa?4xW7(iU z83M+hv(hKN%T()h!{4>|5l}2qb(`+0-Zx^dY$x3TcN8^G;9qdHdMVN7Nj{A7t=(>#kEuUUiE|11JWXXPELM>XL)eYQ;hfmActqGX)jNGm9_Pd_USIqUu<0kwy*2Wm~Cn0k7e7 zS_`7@zlT)$HF-~FTanOkXXW$jr>w2T+VxQ^W?y!+p2c(RlyjiCxvI9e+q6I5vCE2< z_Y{wb%PP0xiRr=OwV&Ij_Bz=a3TeDlVykPOYByZ<(9mukes9O-zOpw+06i~K49>(X z<~tFy!iRlIe-C(;J_Igud*lCQQX2Sbm({+W6l{t%E$+!t9V53eC8F_DEpQ5&nJr% z3-?b4T%#a>VhM&?XzwJgy|bH@N(7fSM-o1wAhwQ3$AbrXf~S!%_kZ2m%1NbVq>*DT zo5F_qoj176H_nn_9HSHBN>XD$e}vSaI!UrK{V-ywN%8 zl%Zqyz!EB+tt=jP^ugBMXl?v=PL;os#aa>Ely_a!-|hP4etqWlBbK;0+otw!^P7|X z1@Hzxqzhl?Xy02P3Hz8ixA{w7xFdi(M;5zD>35?Fiz(6gu$(~_FI=6(iXl0<=6-F>{miuT*L zZw)7tn@8(IolnLNv$|m=K#49Xyz3y}zr8u7FDiTK3=ap8sm8>t21vuHX?Oa0dkr>$#0r+wqG zThyium=nN!^r}%xSl`2!jIBWwD~>Z@sRSwdg3hf4 z((+03ZISH(2`TA++2cXgg+mJ}uG1Fx)Qm)Wo?@bWPe0Uo(eUi0nu7 zJ?=+^rqh(X8PQfs>tih=70MN5b6?k5IDdarFYh3epkH9EZqZ;(ynF4mb0rC4oW3O9 zXO7R11O`w42&rkwQ&Ms`J9)ulT$E~Iy&5nW4)GS+dNHM|cL4K5!UqOn%Dj9`eC8h2 z?wp47?s6HM+*U?Vl`bsj|0nuT(qAL=;Ae{uYT|69m(Ufh9V#jwDQQ*+%Jg{z>pvfp zuFHFJLiS3QB;EOZH1CRtc<;$KXP8NXk6N};y%~4<^q$irpDHUSr%#t#%u_d4STMHJ zT0Fre2}kQrd^1a>wdI&7M~KO1u#&^}{8L8(YKPQglhJWEugbj#Kk;PiJl;q=Cs;`{ z?vJMw@Z^ZDtXDLkxJONRH&IR=T3bNc*)yis4NL$|#DbvW`>Hu}D1!u$0nrr-RxB>t zNi`T4fmVlt+{CH(TeRROmR5~E5uS$J6A9Z9lt4r*5qz=hx9b1IeBBB)YolTSGQ>Nt z9_g7v5Y7M)NsbN!+$Rj-{qKtCi{`6cR@Tjd*=5`Y|(cGdR zVl3=fNBE{;U<7@y-;$&I5rB5RMs@?{W!T?q#>omY3E>z^J?62SShW!4_kg8;x`0Nq?# zS_0?G+1cWM{QUeRf`wk7kC$c)2XJ>GznJ0MVD9S@!#e^30>eMlLm-!eL_mHh3xeTv zYaDJk5MT!QjsIM#aS7@q6JLie9NYa;P6>XVhvd#F=DChB*mz+wy{SmS7$L1K=h_g5 z1#Uzk0?&4ibUkHa8d7md!$U*>go~E@m0QG^=V^-m0QYKmO8sGbUGv|pam?CkJG8+H z*$fLN7ga`vZ$6M|!DVBUxl=?Bo{u+EWs19JQGzlznZrxJe$o8*BvK>KBZ;bgIm+X{ z7)|xtm2*4P8S}Q4!Ve!-K361DP@a4B=H5;53Jsh3{kgd5Ds}b7eP7M&7;7((;9_&e5yF=EU9vecI{G{DDLne^>UUo(`ynW|%)HMUY&z$& zx7mve3$0LWfe4O7(yMd%+0(O`=*-4?_n!Tobd@J-GuP_07O$GRy1ESiRTVy$KLYBx zwINz}7vAz1NRgS}-A&sqg%E2olE7lL!T zdiz`JtO!iQv#Wz?anYIBbH-YVGb)vsBV>Hjuit+7rLbD}z^|76$N-sA`iov_#L&74 zf2Evgu}||_hzZj3i1)OZk5`RMk_~+mZaG~jF?aj9^!O5q^#jS#<~#haB1Y`6STD(s zT!0Oony97-3?x;wR{Qp&(X}17T_}s1o=bc)-O%hYfosBhr#6^Cv}zn4GsVfV?ZA`! z6>MN+m1wXP7a7?CmqdQIttY_68;=%H0Q&7e&vD`V9)KOrB>VMBfkAWlpFb*M^{Iz7}9Rr5}hc?W!C zhEbOti26Dhp^zH(B-$8fFm1Tg9r6NOvxvBR*p}2+O`{%>OIprDtbnDv%@z z7VdD+ny!yxe#EBCW(>cB{-C$9*zQld|4%1;HKY#-T81*M&wd_X5AX)fG8Fb$97}!d zmW@mU&9{Tn&xof(hHbbc4N99t%(!Y!FfjK7VqO??0(lFed$vMN5Mv1nWJKE$IK-a~ z^PpB>p}-CC1xT~u;Dhn%n`$1vqr@iN`N=Ajdg<+Odj~1A(~Z~8u8)TY|7!pF5QKa_ zaWYl3o8OHrXy2rC`xHCDP|?EkyVF)Ird(iWJ4XaA zY%QLv5zQy%CaaI89fRC#N%jZJU8x#KJp|K2KF7t;+c!)Wjyq3d*S#2cM8B($-u+vG zFl*ZM1w&gyHd@xm=*`r*Jo40UJ*`+MkRaozXjxr(IeU*gVJ!C<@68|WwL8>tG~Fig z`nvC5NK90?q7gsS?;lINI#iZ6vd}!k`cw)aE8`0^9Ahvz)Fr^@b;BnAx@>OM*!`iV z{&jpPEn|uGKMcv!c&uc|;Me#U^P^{lK+rU{h`{Z_zb*64ba0`=I-VL*(RBFYS>Pv& zuO`d(V^;g`F~i-AIez{b|EJA)=}UPKY>I*3>GgMjyPbm?nKLd9bdFA!RX#b6P(?gm znntM80(F^vFkj#*lfbrL7$u74;L4t2>i6`##qS0|M-9>W?s%%gf4`!fM)Z zb(_3`Ve#NY{C<8uGpGa#Tv9#>x^C#Ei)FJz8?b-?JwdYwv-yeJ_|bNt;;g>qU#>3x zP3ex(AyW#`K&F)$u7P4Dg_oZ6rQ?gyEWP(j|HHLrW*nAMs%ZUOJhQDF)8w5hzz8Ub z2U9rf$L%!2Yl?qA_Rb&Ilo3aN7dOu$j3=q*&ywOQ)agy*5{oM&Y^`83#H#qr_+a{h z4XWRBWxVs!_DQAIfU(%uzuOm%Cf@@D>3%&|yqn(1hpJg?H>ZIlHx1vrYDzn`@$q) zQIPW%td6qU9zFn56e`wR(KPl<&N=9t2kQBbgR`>iZLUt1ECnT8Xgg`3g<6PoZR}KZ}$LD5N|S%Fkc}WuX$&*sK3XP0GBy! zg_2Q!h7D2Gj2l||D~8g?x6wpo*koA$!%& znHgHM&jY+Mr?ksKsay?WPO2SGGfR{zQwEz(bh#jT5x6~FcMwO!kl`eK#E1$NLjvOz zs{xjFv(N6jKoB+wJEXs+Zh@=r#CByMO&U^PpvD!{QG@B?_ij#`Z|_XL>(OsaEzI+@ za)Qs|f6fO`(nIzHr;}75B;s;GgeTV=`QJRq$ETdMNzszKuStFL|VF}kw$5dkZzFr#@gro&aZR1xBG&% zo@dT6?zA3*HbLikm6)_vI{*Ghug}AO6*N~f=NnOUGuJY?o61H^lF^d&rzlxuF`zSr75us! zaSH-313!-zAA!wX9x^BBo!YdFWOHv-u9}X275rLn?jonw6r$R1YMb$Xis@0bfkMSs zp6=ceaaA9)p6rhoVqQ zpfD=-d~Dr8SRbqhU%^Gy*4~~h;6f8Y7ElaMwQd~aCPIQgKF5E9s$MQuTd*1Fr?P@q z6d^%kh*6Nt$j@i0c9?Ffa|?jD$#rNo2WE0G;kT_ihzs=?(faHmRJ0FZVi$M!j@DK@ zSy@>Ke=V=68H&kQw03&$wMm>*L(F=>FzX|}B=%AMyF2>vpCVg}n z>@eoQcSv*Vk0knh&ctvQ#{B?kLZ`Qg|0O1W>?lZVXLL%|ip7aP%Q}LRFrOB zoD12d*(>4)B8h(B@(+l&j*gFR=1jl^rtCvaO^vZh5EhZ`6o@BI5RT4K5ocmzs183)pJh}^3g#k_E%UHq5M zGY5+yCa+7kSJuV9oH&j~u|6WFwUM=4wcdEhZig8XviEmQ&6vdphh1VQz0z$+bTIwm z14G0U-3m`pl}Mca%O$c|L9C!u3DkcNcvin#9-RFY@!nFjwM{DB%?SG_=&?lTXkasN zo8f$)0DmyO`+0|H{CLiXf8WK&XX7kykg^g(XJXkjA0Pu2kzJ>{C#O~ zdE;2*ZN;k-KWup|iL{C)>Nj-ppf;gf)tR)H?1=o8d0 zi7h8R1y{G40x_<{wdLMX*yyxvSpDLwk5g+=oqvy1ckvF6L|v$nJ3d^{>ipp3Cn)+^6pr5i2Ze>(0?xI5 z<%Iid4X+vOGZq>6vNFZfvb?&J>!eeH6;>jl6{6hx`1x%5FMBvl&VZbH;o+fjS`SRs zs;p;FAZ$o3E5Yk6Ru&fRM;qKD{m2Sj@Z!TCgCCp^TJDj+jGhY_;E-Gu3)OH)=0w&8 zzhh%C<5N@nAtF#t4mVEl!(B3&&QPM`L9dfX!LtpWfu0}}g1qhUFcinBJysBTLilZ0 zB*n$xDfFOIhVo%6v1Dh;59K}GDON0^s zyYNJOIEH`CmNir-8ErK%FLp(S*eKdgJFIumMBApT33>YxT6-^No4H|CCE#+iZ#rK! zfM*D%H-zy4M0GHrL+oaXQ`QoMxwxCu*p05HoyIWP5iaJi!M9oL=2x?hadEQid$>RB zo61yvW>L%(@1?B7bjc^Mn`XJ*oil264?U3Ai3xQ|WnS&?P&~f<}dj0-=27lWhBS6QBoH6-$c*Vg;;~%TQpB1eXGo zX41B!IhmqKm>&OqR$r$y-{e;S>Y`SR1ZmI){>TV;CY1lb#!w520bd|wm8N@dlt^IggpF3Ux)!_6drEu~9S$WzhAJWdyhSPBSZ`>siT z_&}Y`4cmfN(2?w!?~L#kI2WNc78x0C6f|kKI3)Vjpd{en#hFuPv;sw}^ebwwhyC^gR2a^UA3m zgHof(@ZTrRAUy1Z&;o+)gHC?2bwSRO^Ov-|_FCQ38?*95oCehvTN*^0cFTucWB5_W zD-}6sxA0#rs3OHuiZZxf<0}O4R=%c!+xe!a zDM2=5WMo1w4_1c6?r}q!)18b?Y=Q}A0S6f=Da(`|YkrWL_JDmkK3dOEs;$hB9d zjwZuR)Zg-dQ@nRjB5KzqN#iYc7D|8! z@o|~*O-;WT=ryCJ@5xl*O8%^tV*acGLz`&yRi<1d^uY&H?o(fP1fAiL9K9aSyk%~p z3$G7xB5}S_czLwF8Z(h@5_1L5GxNenwcDDSWVev;<6`Gstes+FMd@7!O#-fZfLA`6 z*hDTaR@m<(F;V+08H5sAy!T>r;xSMPw_X<%Fjrdp$-oqWEl}9@7M$MzUUkjSQzC)X zAA*`xJw4ID%p--1hS2N5zXi}hZ;XYFy5-@jvWV9K8q&RcQ9MhC45y`K?LI6P^wiCtY!Y16WmCW85ZLdy^JE@f5ReJfKbG)kY9jYMX&)>3rS`uo- zO;p{aQ^i8dFpvqS1ZH3h=nQHDZbTuBLOzZmchj1Pn7HeB(>(SQbaVsJH=t3BkN96_ z@MeSb+Iz^Y=bBqsAlgA{oI-+5p;oI6(i=GW_+*O4 z!7p7_?-$bg_5&AXjSfz_PTJpG4+4ENFC1R%CjI$5pwHW0U`J~nFfXwZXk~YDVN6R$hhMpW z&-~R+`$!RcuFO4Y<6f4-*0;Oud5f7G3iIcWs2|Xn+;$5OeSfI#!A#0}8z1B8=jgcE zna2{iy0se^fk@jA6lq99+PbeU?wy;Rh{T#W3P6?8-t5Q9^2c!vL4Rv&J&D=$V)DGT zcOTArHp?87M--@NSUi6o>*x{@9WSLY?1n_h$H%mFP(7j{zMxq;uT-U3tW|;X@GgCo zi#DF|ZOauFqVKdZ`!Qwgzh7-HA2jQn=S%nzvnMHg*+8e%lc9TVs|1uEUpF?U&GAzF zCTe7ntC}m5|AONvc(kT&WMZC`QrG;*taa$-bZ`K#vg>XI`S2}0yo#@nzW%U`PriE0 ze2tv%e0574f{*h>ew%63cp%?mq^4FkoPN1QZU5@#6 z-2;nrl7RvZ6~ZU1Upad8Yd3_tuWx&&9wyF?nzI4a6q)OkzS-xunx`3U_5A@m|&ZA!y*U?3E7%! zG?>&b;?BQ(CJDDNxv)n({0mS&Qebe3`u-keBtV?7)BpkV)p_0+0+1mVkY)YFVGs#B zIP`?Z>-~G<3zCvURGc759Go^d;9UaDBQGy6DJ8|+>RIUDaW_87Aw*Z#&!0b~WWT%= z@52h!kjWRB>z?Vj!yR--vqW6YlI~}Z9;-v#Ls#T20{jBPxR#42^;zT3!``*1NJ?g5 z;*(+YHHb@UJvXUJa3{{%sevaz$u3uR=6VEntd_6&2zpaWMNdr=W0PP*7MvPe@r(;-iZJ|=)+`>0t76py7hyK2qXZpaNOrr z{`rK4j$UEeV-CM0AVMJojCn4|%momQv3Id+P>blQlaY}DstH3;5gWV=#UczTm>gr8d@jZcMxzaaHxYH)%W!GIG>GshZ~xj5y9E!1 zQq6~XF!I~YvBHI=KJp{l355^BCT#45C{g`cJbl%aK&3% z4l%xBt$>MwbB{nFf+BKegl0P=MpfEH>AS8{M#NLIAI@2dKDQ!B>; z{)6O@+a9bW``>*6c&ORMi|BnPY6Kq6u-%Ra{r8>0>gI>#X7i4XqRDsOpL%A*eMI#- z;NhL#k@gg+^cNhOQ5DN`*q8~i#K(6t>Cq`t_S5bS6=(Q@iQ*vi;v*#^k;=tJY@l`# zqItERC9_POi4cOc(8)f%!cGc&`&O^PN@Cd>PtB{)CoH{1F6a#rZp}vFOl-$ zU=b0?$(Wvmbh8TJ2LbJ5epW~ba{5d=O->g+7^)IjbpUi$gqTlKZtF+9&vQ(q8wDV7 zRu^uv{jyaRfK(?cOT~Z{co4CUYyYFrXmIck^hF>BGI*69ILxGG5llsMzq$K5L_=Ph zk*p-v&FF^E$oSE-_sYiKUz74cmILWb4&f<=k-67F~3!{gAn@Pk4T zJ!A(fJv>()9v%?TpaWPxiMUo!7%bNifBF=397yondVg_~l?T1j8<76GoNST8K@2Ai z1eK}Pxe`S_d?IO?lk`oq+20QXhdlW0TMJ~_)Mkh>MM(ar9Fc=3VR9|E|Hvdo!RJsr zM}DRZFbqU@h(gQ>92AfUmRN8`D=3&8giQkU>f5((X@S;KJv?WK6pR9y0>IXxUu!+ilsY?4o(9{+>1nz+(KQ}0xL4$O%7rswnmoJ`=~6ZMO^Zcr1LvJk$JeN_L7Vd+AUPV8V{&(P5@ zl_`F@;)6!^2lJoJHM+qRNXW%$Emd}Z=lhe?ra0u>V=IbMvd=e#ckVnC^UI z5X9|i84+`$!CaVD!taqI6ald4aQsw^fQ$_LwIQ3u>bD-Pvem@R3RIK~*Q0mW3~zed zQb{!#vVL?1X3BgDERa9p>(DTM_c*L<1>uJ&t-Z zxE;GOk};)3b8ls%l51Yv9(wyU-=vHUd+l0oyf;C>=NiS0_z?qi7OQ$6XF`J;NXcUI zwU^y4N_YO{QS!5VHK*4kAjng?-&b7LH0oyktKo*@u2`{i^t{pS_RR8{?5#p+v{SOs z=zNCr7Uz1%XZUrO5dvmdSVA`V3-@%W}nwDH^%fTNrKkmf4u=fB}g_$Ppge8(w>D$cB2>=nnt{TzUl{ z0LYsx8h;MKGDDzKwVfJ%3uu;^)iW0Mr-QE$82Nb7(uHP$20g_4nMX^7W+9You)sqT z3$6sN?MMzYyhUvzBZ#E{kp*Ap#>mXf3<&T82mx18R>l_E@-^#Ad@SO7hWk27^ts$8 zz5=#nh!lbS4p|K{CSmr!<1r6C3+rfdFv*DcoP>jnZSz`Mx{(folWJ=PputnUXdI)V z=5u*f737@V<>%Ky^g_XYlQLfejso~4df{bqu&0GS_7Qt~%SPjO;Rwey zQqo89$*0LmN-fi(dJc??Ev>tmyRny1e|jgrE!|Hh7Yab7v{XAP@U~wUr1Ve?P^7EG z4j=e@b#uTrCn9C{48!1*VXB`0=dqn;Y)Gw7h|SH`pT8T9whuq3Pisp*yU<8V{{H(e zm#_fumJ*ynXzyh9(=B#Vcj)QvgaB8Hdds`QZdAqy0qQ34+7st0l3c&b{LTOe1K5P& zZAB4>WN{$$;COi^06nfmAKAlvK0t;yA}Ro)$z9G5ti%nmfh+HIbv1I41Pd!nMYH}@ zA15<;mOg^g01=9;U6lLuLnJ7mL}n|bPM4-(A-Axz>#@o3I~i;X1BkzMa*_lM~_w8SgBZAkI!6oukQnIbcts&2A03ZK#tqnUovLY3)f~vU} z)>Frtj#A-RlcEn*J4&^*9Cmk~3$-xTjFm>5KrOfL-CJvUgX--E!yI&goTW{I`yUFl z2H&7Aot8mAhtj7LW)F{l=-2RvGD=E!kTQG^JCVJ*}-S z|2V{w4l8!J{6*8{$t~liePk}Du@?{gZIf73$oOvF$Yh&1nzkjy#6SMj@OOYKnLN$` z)AHS!=QlI6Of^%j3K6CQ(VnfuA;+w23-@h?2obJtXNhvRlJDehvR;hW#Kyy)pDlf& zEU#p3hb4%2hu8kaRUZHHmwqakj=fLU71koR)teSaT$U4SRH|^Y#PgUmv+K!>o(Pwp zwwM`Zz!>rKYr-Qv4iW+ayEX$|wTZ%zfnqx;-wSReb=HZ`f5-1iliF#TNJ`S2BEX-j zhMUpNxE|9PR!Ghds^hHu;+rZ%cSs|WPKxcu7%Q)}iEa6duP``<#)pPPF>Gw8xLDxF zm}^xh6WNgK?GWbFrUR|X>zBKZ#8>Q_+D-WHmmx`ctv{LD?jHo&N>^Hw2B-qa4N;UJ zUJcU7MHqq0TwcB$XqUr&566MqS-CBdqoZRxOsti>Ys{r^(H>l#&L1vyVw01T10Ei) zlC%gDdkSyS{^22Xa7S`lbj9b>Ws&ihx~=>$L4rG;+xy72aT%cY33}q=^`EpuOP~R4 z>+SuUMpFYf?$Xjya99{UAK%XSq`5E~+fIaNMOtdAl7Wyq=ZuVu zGc$#YtE&iP7sfCFVPS#?4|;*s+=q%%cqhGs2mxvDK0jPTK3a`KUQpH2?J;<1QDuudCm>#H<1ku!ic4{Ya=TM0Z1S)=hpySK+RV$N@V^X zSP96$4TF%}!2Sa+O;lX;OBgG&rNa{GtJS(dSx|aWcfOwe9$`z|t%YX^&IND*E#x8JT;x4Qko_U@%{BPd5Nhp)z(iwea zFrfIACYJQu!_?=iCQ4orR4t1)aUGoK{UFmFAw=7RhIUxtlZ{CLHHxJVdpXnq!2*`+ z!)A5|n3STvKSBtWxKk1mh`_SVXL|G=g6coPnuWRmN)QPC!V<`O<+jvu8^E;>RG3E_ zhw|w=pAzolTbTCQ`niN3USJw;Mkj|#F ze`H$|8H-C}D@z3{44P!KtT?6H;;=xi+?S`LRo4oMi1_n~(w~9nk>TWInX2lq8s7f) z@wA51I@jZRV-t(0DBF=Aw38NnR<26Ql}V5Ce#VmDM|=^`Af8kGI4#(r4uqRIKN+at(pD9*W#vAFU)K-p~@L_uhWLvx!C2tG-dvxt$fP zbE8`8dW8X%Rinq~Pq3{IDSzMR{I;hms(_z}Dn`9{BnW((EE$>XSQb(Ibu&A*&?6uc zXjH71lGp~0S&dc_?zE%o_}#mS;Vr|V^d+LN^)WFq&_Distuqj ztj)Ix7|fm0|Gg4{@?uD7Ls4t=e))I2uNLz?73TDHV<>#^JF~*I4U@fJ4Wcv(qzbgm zE#mxi-ody5^GHZk6fGOuae%rKZMAfF%4GKvP^%!()+o{EEz~Xv4GFpZf8dV)l@M4< zllitan{KX!L7R_|Bm)xUUDiD`q>?~a#s&0N{!Pkdc4XStJ< zfX~lb6G`%0KO)J2dpVVfs+V0Ww{zfU#M8x2i}fRP-zj$c$)*juw|BhRA5F~bBr8Sw zHC9he+AG2kVt8Xk_on9ZJo78XV6L0V;@DJMN@z)=r>`y1DN4JoR^xZ%EPw0*mU<~R zM1dp@4i1Q9S~FGfq|<>tSa>kvg<-{XfbM$?6pkj|?yZ!r!jc9PkoYEc_Z=qL04q zgEIGFL`=IRxAr=dsctClycJX;?t@Wfh^-p@D?>;1FjQ5z{=ot)7-EO+kaEQ*J{~P4 zqNk_lv>9|TswjsKgQT}Eo(dCgJZa~ELJl!StiYDRG~wxnSNCAi1nI*_wPQmdPSJYY zeQX1nR?XcpQJYtL`eFTAh6Ft8LuH1M>Vk~ny;f{8eYnXYC2|Z5T81|zhG(-;u3>c1 zF+Yg@BjQ0E(Emzo01B_FQaqxZ(nyDEYFc+(7WPcM9l13%WpI3Ia!s|Pds^wjBtOPy z+C-;@$5aw<9i~2$9lBk!J2UPFO`Y;DYw!)PezwH3ul2Y1`|Z{FeF#$2R;&MZSCM3} zb(;AKOAV+|Rvk@ru7L+6_bOuH0r~sRrT=UR)MEm?6j0a~74<-^Qf8GXmHq%PIh@O_ zY1ymW*p`MSWVV9j6T1x+Ye$?E91?8(DxUS^8H{XNF5E?N*LA*ZUg;Wf*Msh-n8-&+J_gIEg2q&J-`IKe0 zv+y8h28XE^Mi+1;{GV)>MZ5UNkC<$QnG0ys(gi69Cuf#L0eF%@GvU34=%55FgeIfM5gcEM2j~GYrvvW- z&3)EqdwBgBVo|}tm!9d}qntpBdVIjpBpD1` z$~V0W$~k-My`iRDEw}1FR|-~cX_9(=Eg#P^W+c_5?zFO7xRh6O$bA>e@%k*qrp83* z{&z)h*o;u9_apnzJ+VtU7>)|vu~HJG5Cc#8lZO2h;g1jPpxj#$a@=L^n_ertsK-a;_D`Ls6o?dt*MA ziue-0`BbTE386m2O@1~Q_a3Hh)PI4lG&ojJGad9UBn^@cv&yMLLg4jBnlzcIRDP3AGyAdozruy3UhJ*H*OU63)J7B^f9;MCdOwct;Pe80WayyZit@ix z%1oW_Tgre#`<(8W!TO6C_&PhA7UrH@^UiNURB^GfXG>v2a9yKknmvt@Y+!WRnGpoD zH?r+`Arah1Ufo3KvJjyGFwoBC5G}l;fW{~$y zqU&Sdik=3gJ*`O=gn_E(@wk%Nznu|gwXM>>L_u-ielR|pgQkQELE0^eCBlMdlX%`Q zciUb!`Kei&KfB%?-;|P)L7~$5VK<$n=O2`^R$JF3t1}e2HJhQ&ED5xh=Q&FvTWVN{ ze9xRNvl7#m19RnqtYo)J=QoK)U$;v5?=q#2c~oYb$nsZTGm8%OSaR&d{n|}cjsL2~ zwL8k-t->XPCD`usJ;TxEj<}?Gp?Ft6oz3X;WTiXc98+%%n? z-n_jhnhA5IcXxJHmVmolDkYD@dQ8FVKOk0!XE%8WWOizAVUkF>Q{wXaRE1`}g_z&J zc$h)(pd$yO@$>a67x-NOb_I_SHH^iO_L%`9+5?!0Hw*dTsrdjx+fAc5kd6f0gqUk3 zCPwywxE_$DAC2Z8O8@~e|t;5)JUf@`*I)cBI@&Y%Cpz@L67JLVb#zrKC zKzRmqiJ$_~1ph_I)lrOG9t?(;AHY+6(0c%~$n!kD-rCYyC-N_9)6!0&bHS47+X~4+ zDt7jiZ@VXhE+#sc7!VI5CL^O!9}h#)J1M+8^C$PqS)S2pR#F_LGM2Iv^7l^Sp-ULZ zycNnL(`=O%&85Xne2LMV<5ft;iP_cO^ zfjd?07FB9g=0vgO(6{0ef8N*9g(-?tXqS+LAp z*JQRw!^_BUXG0&AwEVd2BK#tU&q&|0L@4ZkTYZ1A^cv6-DeN-5nd)grMpJX0pK!RW z^Xf9RKP9v5o5}RRd%e&jlP#(SvB}Li#Rk4fdo*+8Fp}=P)O<>l14|`%R za~CvLF#wJZb>NV5AHIePd|9zxWy;M(^Onv^4Gh+>Dcb#`rKLTGVDjMb@EoulYn7&+ zRBpf|;OR5J)P9d_xZG?`Csqj7NJPaRIF6m0&WYhM0RX+whjMmyb^~PkC_h1M3ZNqr zXx{tFwfEpMrYG5b`@-7m`R}PaGP@|Fslt{-iY&aZ+2-4uhB~V=gG?G1iawd@RhwGG z{lI_rr29413%?!#rSO%p!uW<`uSw(4J+WiqpZ+!b`#uuey%>hOLwTmMu)fl;B1i-{ z$sUUOVg_I2fXW`szHFrR+3{daZcBdR!-rgkg)>p4lL3SI%JY8kvI{D%b#`=c_?$Qx zH~B(?O=I^;kLJkZrLU%~zA)mf&o$n1{1tpL<6P?1^T!qFW{D#0_eA>)5K#o#&MN65 zZvYW8N1lk z5iLlB?~{>18B+8eiVOG(5$?en=bJB^V0t90uJ(BEhljEBBc>T41V(}*N!MV_q~c%; z7Z)G&!9D4?zEIrr(KsE}a*>+KjCmV+-hFV}9Jbo@xrq?pFQ# zYx~zX^Zww^7_a#2Hm)*^8yt&>F-qQPRm$)_pZFnwtT1dVcN_GRtE+0lOsSDjW_?30h8*lrg7sbfj9$m|6=v}?Dm_nifPB$0_zSy)*0PFfsT zYgT`)BpTQhcKg?>i4@qrB=|2%EGg7BA@VS+)rLm|Y|K5!dgf1sveAGVqPnyZw; zLn_-H-Wdyf0;B=r;x0sK*tJ0e`>0luvVwy7+;>Q+L9|`>0K_+1j0$2`J;u}`<3^e4 z`L|o(OH&ZJzXf;lW;;gvGsmbL&*Kb(X+f_^)8`=DoP6*M`4FSh2LWMG~1z zoOdYorAZaJQ~Op7F&X&zT9?DNQmDd78h85<5B<#ijEg-r-AMn_k4xc&AUq=B+i$_2(5Ka9Q zVyBH#P7%i{3_BWN>SK9H-Wf+*TBxlo zM#4%*cRyL_Jsb_dSf~T|<~|e_8M(BU5wHrR5J<^^9feij{jZk5;V(c^r04veCrk%MUs!(UV>!z1Xalco6Z-kBfIu$JVJ-6z$%Tx7~iNba3B;5Z$P zO0E+}P<0PM3)DS9(eQG6;_)X=|D!z-y|emPH*bs^j5d9h7=AvN-^WIhXvx<=S6c~q zwpV-R*;wtTSMc@o=O0Sh8R-o4Vy0lDJL%#9eiEi%$Q_*vG<`QFO&;-ko)cJ5FBD=+%og! zTY9P#-&v!f<^gyjv(@MR1OW^x>YwE}TwVjwPP~GzmPwhJ^^vN{>t#3J6NMfR$@)Xf zv>v=slVv8VZpC06K)j0iTJK%ZS$ZLQI4X{@bFKQT)qhBkoy*Bx6ciNDbZ~4W54$1nmK#_U+@(=9RhG*dh_gm-(OB zt_ZQg7vDkbzsW*c^L$)L)8$SJ1O+fY4+w(0 zY&^t5^n8Utzec6mJcZg5w96o-#k+rB4jQu8f7h@BN(PwnIBVHGDY+~G-=j_Mr_rxsQ-i2%k z-CaY634@l2DH!xEh~2)p_=r`Wk)FN+ZpXGZNgzE_RBC}5?t|7uSh?8}6BB*^ZMeU! zpDrAK4(TrgaEHBcaajah3aWFM2fR*q=WTvwnLxEAz*s3-4o{+QH4x*HehMBC-T|yh zJzbP2?3Ulhd%gzFT`!)GEYhR=Mx^*4(Z^-)q zn3ZS<$nAq~=d0FM?ze(4RzL|c2ddfxK;_wNsuqr?uDq%i@! z?3g!sBp?Ky6ki{qr z@O`*y+o2CQR>8OPjI=yvi&+AB3iOsT=!a`YMdLb=;I$JdxfjN*4(2qT0P3C|^Ml%g zg4?to?y@c9A0&P@zN+)y#`tWuSl`5`dN~!a$MK}zgRSKULMGGmX0)mJ*J6YWtD}Nt zP*_bmw?(U9Q^vxZDyv09C6?ar%+Z|u%$Ge^IMu7)?6qRr1H_Q2Xjo!UZG1Oot1aoK z)_B#`)nO?igDP>JZbVnb%{70K8hhd@3B(w%gU$-IrL8RxT6fH>5)PmL>I{L*H3(hk z1pWpW?G2z5BS3&$UmkK8R0k8O0O_JDU9{;rY!G67gpP5~7ICJJnx za7Cg(wYW^w!?ZJHBM*NWVuXkZ+EJg?_ik&~*6>0jrXm17|4v*X;TEC6wee|TVND26Rc7ZY z^o{7AzU+<+s=-P@tUgQYGg^#X3T7vsB+r1|%V*|vQp=-9rqWi1+Z-_4agkNh{v0B7p|BOH^RZc(w z!|y{2!S;c`wWv@`2M-TV1(x!?qpj4^ z(G9p%Ao~Ip^a6mh!#P)6G$CQNrnJ{LrG(A}S0xPXw~!#Mf-&QWSN9Um8R_^b4&7Po zhpCT~F8Gh|*L?IAJD=*txo~->gZ%pFT>8-pXnEAlJ94P6*9 zoPPH@R4XFb7%$?7yXsaZ6w=?_QL$wLSYE(eYlhMF#fuy(MR@_;B`~n?$nT8_R}G!} z?djjj3mQAt8*Xc2U!1re6IB%cY1em=d0of+VCfzu?e!jKbf5Y}aird;Op-TGOOBJH zWu7$asT_jGxm}0X^Jv}!8*$gIq-3tOUUJwV_sD0dWmfwr=cy(~GeX}+G|6Y%ssbX0 znfbD0#?u~5uVk*Q=aonl+;hITi9MD{D@(1qG#B~f^1i2|gy?|k+ZTtf+G z*#!>I<}wM-_oAJ=@mj2UH>*PS=@$Lx#CK9Lu!CB4@;Musiv>r%ZTy-%6|g;sop{YA zM65!t#wd$J!%|u7yi?y0zgR>0+j?W>cT`()&Ef;3guaBOO-{-`0w#|halOfyG@`z= zqB*^yN#?qEB&PISO3)`P^)6Ek+kQv^n@pWcbdN282s>Z*E%(B%5JlwtxDK=i$AH-{ z?cE9G93NweUBQl(UyAkT6V#=DfRZ|*U!k(+@a3!OHu;hUQb9^Z5|`EU`f+i^2OtcA z#Q`))5`ZmG`tBhE@Usj)8{eC&SFoR(IytFCJ$zz2S?U*}$W;#(or}}3rPz_&J`T`M z@dQxbdnnQZ+Y<*LpY`7{JJQfnD8idAU(^wImmwAP^~^g3o&%oiailRwzX0iEuHYK* z(Oa{u4AT(nFjAP%v|tTaqjRvuzu|1zxnK*>UY^16E8x1qUZ_(x*bx%PWTfw|rwIP< z#kL?QUHZ#cj!;hR2n=P2t-)aYdfoRKls}1t05_S1wirN!;~)1cvBzv(MvZ8@(Cu92 zcw*Qdc`GUQSB)Rnls2)ECmq(4$h$%sdEQSS&fk1|{>QOryEt>FwzC7{3C+qcPPVzb zIr0OcOs-Xv)I?M<(a}F1f};p@qv6drqD8DDkli8!54+uPrbK-k#_hAsGBJc-ERc!{ z5Nbr|uJYAR9*Nu~CY$zPDegn$g?A-xH#M+cP1La%mGSxH(END%l%v{5HFEms|0O5FO6k{&$ZrYBE=sJEVDRC4mN6KH-CyjYiT5X@IPZ8~$ zC(uQ6a=7LBDTS`i5{J`&4y|<4!(LUoNcx{(m9uX$goe~PJbcCdtX5+Vok_hIG~J6A zls22h-+|!k|5%x~W+$m`X!zZ@!CbVy8|eojdh=ef@A4H?;?Ng>qVooegA1me8C-&o9Z~kz zf4UmgkXBqtpEitVstQj!M8w5rSq<&WA|d1!m3CHdyZ`YqDA1BSR`SidetYI}X^zCd z8+5Q@M|eGywV$6>so)z~&64Op5m=UZ)xO-ql>VWU(`rz!iSz<*hb_p*RbLAiO-@PS zubZD^*rxasTrh!<4d%vqgN~J(l^aX6T8{1 zdsjjm6AQ~6471=BA8GQtg~*excwVKCC`gQo((UZ+>kET3!Af8Pq?NOw{lp~3^OjdrUV?k9cYa9;U$8y5n~?2l z>LVj{j8-3=7eDI{LK#ors<+&u2Dty$F>YqCb6k!Oez;vGKlYnYl#{begS;z*4&h}G zJ7_&X~%5RBmyZ>V^uIC^wqz#hmJz1 zp2>sjt=H6N3(h@LQ1wd5$|6dSp^+$lfQ%gKC9@(YF^?(6)|7b7)g%(I5(*Qjx zhs!fTXiu;)T6%uI*=cjMcOazV9?>K^Cz{Z3 z=n^)he0s1y9emGjVJCXK;v~agX*f(5kTzN$qQRW4#aVkUyAx70WWKG2r|tSUf+|Xn zEgX9THGL8c=UJt)8=GZh4=A;tn6&yS`mhGc%K#*qOXR&FTJM1d}L4^4nPyKx~WEG z-u2omV8!4nX#e%=fvT#i{x`X14slp^;bx*|W5WSs8sP3w;p4s5h>C*3!OLsa6`l-V z@rW=Z7gsF2G@w&v)+r?iDsKFl0x{YfNMTwhZUlH)5gcf4m&TS|FlkKJ?(_He_n%!J zvV)p^l48`Br&zx#6y{ds?}aEc%sW(omSu;P*oY_ zQoCPQx3n>j0Kq`mGb2o2O_06V=DprnZn_-%17GE#5r?)O9_|C>!Oh}4^I{h1(dljh z?nc2@|C&1Y8|J&Sy?-R>XaTN{;azbR1Ysw_`U)Ll4vyPcLOGHVps9uP33@gt5Y^gX zM9v3q7_w}lAl%ppc50!;AO0T1F?<116r=G&MFl6s&cF^%J9>U@uV3Sow#Zo&%B#l6 zkQIs3-9b~LxCr~r%OEO@JL~LqB8rw#hM}M6u}B$7+6V2-iC(@=**06@<6uoVf9dSD zV6RSYVTMh6jWjC4=3uEuoD$yq@B9sa>nY85Pt59PQZ^&0OA{!GuZSruAEv*ZrflsH zt7P1RNrXuw6-<2yvE8O76CtqbY_jGXa5!t15uY*x2{bVL`6)ny7C`X6W_kd_$VUnD zA?!%_NV+D@ocX4sFI5-6;DKi5`bGY3zzKVzuU@F(-1qWk}h>uEd zR@dNjl9Tu!AU z%aqmZzpm(N4tw&I^>EB=8Y;ebsb#5@R|VZDm?@Xn%Vev7y}A8;i& zF)^JwwfcI}W2wyL1=FXs(?<^XSv4tx|8zaV__+1(sy5o+oe89FFXz zk58SgQACvO81ah*(x~n!K(G|=sX+- z1Dh31RT5Z6;p!EHW^Gtz|AetOwX}X#`#R(UiBE97p}!tX6I+69LB*{fbcFXyr;oRo z{Z-H5LmmX8+b4mQ>?XymKqHswS+4-a z9CmzssarRiNM^agLFplI>5xBQ_gTNr^-sQu*y+n1JT&TCbOj5O)GwTtiyQ}J<R%TkTfLc-_!q^jK{DCTwtkX-H*T=?>j~}_>gOhohKG0N zvD1$uNGho?>)H<2hQP_>7`ly!D;(us4%_FcUOv=z?N?-vv-GEUL|=gNPDGse z1?u;d;cs@DaN0~p+a5FIYJ>n6)zs9~Q{89D1rW#G9&UEwLBhxS@nBgY3q5H}yOWjP z{x+_RZ<^%2KUqr;?Evkc$e?JFa#<3Bi%7val``$@{o|+0o3i?kc`dQfxybBSPCTd- zuiUVBKQ5PXELXIJC(hPulx=MVp5{cUw50itUJ^QWEe0dy(t9# z3>}p44>u*Q6F!xDlm0s#+#l@uAhD;($hO|TwXRFm7@&9PL?szQs z_x~u8t&+$VB71KlG9yA{XOGC z#&x~dg-4RNy_|NvPc*V!h4nP^$w$8ynsl`G%;6ksl)icP-2c}CbgifHYSiu<|2lfX zTC3B4RKI^M9M5eXPg-1?vy%n`D7*IrkrfiU0`u>&JmluC_@ z42w7H1(1b4>f3YcTkQd7dg9Hl2D;|K9`9^`EJW3KIs3LpTCOxgC{S) z%L)SyBSHJ5e9a6Ysu)|&?5rN(?l0cI$ERe@P7!jE{ich31RW7F9t~out*orzlc4bO z^1cc@R3Jo4{r;0xVzcy|;OdjFzMG{b6A9174QVtU@UhW6@x;=2To*VkYBTr!D~ZsB zwapiZ+SEZiJU6nc@!+IlS9_yAPLuFWkbXja{h{5quCp!iw`-K)YGY5K6=k+v?7~fI z53;yB-?O=~CvT|=JY=;J!mruRyFR`O9%Der^|EHaM2j#~j z$zW+ovCE4Kq-mOx_64uS2-8NRN!I90Gw{6P1V#$zUS3|FS1#O;Z9~AM9*J`E7EA;; zcoi5|%k*w;Fe8U1X{F**x8;s`lYyux=x3`d=-RU-i%0)AP8bzTz6wXl5C);3&<8Ww zUlt|`wuV$g9%^tw0hT{jb&bF_!y;}*QH;QNVv<~%!E_Yq%}+Z_lDplHrEA>7{O*}Z z3)zt$3R83h(2=`_-SYT(OWPhB@rJUa4b#ibBK@z%{ugg%+5OiW5!x5-ou(Lp#}>4T zU(fM!6zJAQ=CIcBC$mHdIuh|0` z2t!`t3OQw;)6#vVf0c_3I_pf&%bx`gb*gMzzdPqTZ1DWFNcaJ+`xhit?i%YXoNrsC zpEZTSeS39rI{C}t9t3`Y%JO8^7mtI?2`oQ2&=MNX)YZm5Q4I!^Fi*XZ0EQ=Tj)~51 zZ%4pBoox_9nwxrU4qb%-qeIIMSr>Nmd^=PL7i=JA)w6D!_p^e(%|7eso;rS>YC{9dUGa5%0}qHJiwF=7y&7xW1~3(*PYpnb-k24N1J#EbQz9 z^XXl21#DK6m4vzk$-2q>2<$D@qHJ~shgW=Kd!b4M}3lTOnT=I)vu0hu_ConsHedB7pRbz1-Kwg;=%{l>Z?FwQb+%sjcG)AAA_z} z63zbR!&tM9dtP33*K=<0nm}6c2zoC75x|e}d+kTODL^?GI5<>XTz)WpgVwEgWF($i zGI$n%Nl+#*=+vaf(im8w^yPp^zQgdx>*K8=teUeLo$V_t;{esPH|oRrXra#^kUg8v zVWdf~_B(519&&R3T`;V1CWM$LSQaWNyJDqk3r1*K{4~4J*}=i<-67o`l_jT|xhuob zR1M0=j8;aq&!ciCj-Wota_mjjUd(f2el;*$_8#bHO?CB}GXpa^feu4PxUrgOMep3b zE9<|f)050YOhTe`N|ue5s2fh+S1B`yot6eqI3%G+?=-WDx8h6UHZE@-8z7GLEF*@_h^yM7}>9kCJ~x|>{9 zXohahn3(Ze{07sMt?;nN{pCHaB)@F8te8LbD;azBBSs8LToGE?cm1?zz`g)Fp1qX} zw~xWmcMYI0mV##vW7~6K!wQ3BzZa?-5T_&T*9PueZx_;5C??0&rA)!aX}C5(3*t}^ z9z2DhmRFnmqq^t(&O4L{%a53CF(P6r7eJzK}tE^1!R$8;Q%s|K2c_PL!kk5ZGz!*{Az_*_;n!fNC)@ntxC zC~xzx59EXZc7T2872*fR=`Jwfuyb~MjH1mfuCL1it3<_2zxp zCpNGl5HK}i^{cHI0c z`bt(yCQJv5omf}?OhJGQ?(E(fgQ!?8wsWAHwPe)_KEWa{bpeR7&r=aJCTJ*uQ#7u?pb z>*}>b=$aJzk`e97kw>VcqHSg*;5K8c=CNX!mp#FoBA#a}W7J}8Ew*lShE{tVGHsLc z3f0fab8)3QByafooLcp{bD8HSA4`!<41U&5A&po#j5kfsky|>ssQPeGCi>KvxP$ru z$G-^CW4qlwRUz4Uz2(=`{L3$Ll`pGT-)(n4V7Me%veqCg=cfy{FC6Dh%kRI5! zd$?zZ>eqq-ou%G*q<{)*Mw#KDg^2zp|JiMCc8{-vh2?JX2HdyoIQcVv%AG$4?3(yI z{5T^L?Y6~*6?S<|$M~HN)PLtv9L7f&btI}3POqbc5_PQUI#d^t6~arNhiK!Yq7>5&fIY3F_x|7ejB@fF3zo#X`kIk#c2{#f2jPA?qHP~1 zuDFg^KKi@-(~V`m?GyRn;_?^;er&@p0aHbqyr9O($ZwYAwXm>A=9a5IH?_+B&ge&{ z^X5x>Vqyn0%JJol1n_Y#YNeI$qBaJFGkr)~$o3;b6!^?4-}<3EshZ>WNpQem)K>2@ zeBM*WywZ)RMpv`cenFA1ZhqKKPBZel!jSVKY~OF{-qR@AWA+W7-*)_o*RKy0iUS{o zd{&QBc`NPbt?5lp5P!X8kbU^EL?8cDW&NR>eg06+%6@NtJJW6PZ;taVHdhyRioshz zdF3kS9NcG%`NwIw0Ll>v9QOf4EpJ>5Eao4#r(bvD-5T*VIeq zAHz)pPBCzuO#gPKq^3@V#yHP)5*($QlU1C(CHFDWMn-sGhf2$Ey)f6GD8HlD@qNU! zB=pr=V&adjA*SM4nLDEv&TlPVh!bL-C2kxNl$Jf>;h}rh=>~f-Nc_>fjm=%G*wPps zJh^hM=JBr7+$zJUEWJ0tqqy%cXuW-#-Nkme?%A;7Az7Ji!l8M6O? z;iLC{$%B{9*^)g z--X#VeuBIyrld)~weG&T2ly{uRz|biDX{H_{8D+caqtfX^{&dAVx&t(Y87FJ@8c-v zIQeTdG%+K>d^bfA0T2nSlwlZTaDYszA7UB!CmcIR~&S7bYOLxO)?H& zl)P{2?~kCBBg`6H16Wod!|RG4f#h5MXNY}S<7|U;y_DKLc{j|-0DBx3Neg@jGKL6b zaD|1@P8EPRBR$W)=-0PC0V@Nv4&Bs)faA^6=HJ6#V6nO64cAga9l9uvCaXrXye52C z7gc}B^dkJ-vRXOUi6cc`o&)7(n~lP>r}$tOd19W!f=02|xdq&dO@eEOuHc#Mf-!6; zY@D16`~B#@GbOR^NyXRGZ<5K#Mh07-o}A#5FcuN7juwm3%Eq!8nTqQ?f+@mQGEe>r z5%pQSmKB}SFWB>H3@OV-?wVujl6OxM#f>-Tb2G%~E8kmAI6G1()uC+h^ql zA^-%;*%qNl*PPXq0CEEHdVv|tpUxEIaMufZOUcl+yU6csjSfkfc7MSCE@en8og2`Di|Gj zYL*uknn6>5Fa>@rc##MJE)F4K;oXA+`Q2pYe2^pgd3z&3j(7XN3N{vuVi1Tk{cy0G zhM01!{|qTpsBu=x6@3i}T+i>N)qUeVB7E9*eO=Vsv-7y4gB%t0xyQ!ydCf2*I`r@u{KCPK9Gm%H_@FzW?CvnLxAqi9o-AO!aa-?Lf z)FTy0@|1)-lzk!Z?n6T3zjfwQu3av1pCxRfOc`$H+Rw&{c30>~6~rjCn5(>>D`=$9 zGl?nTNzNbh+GD@^z}{iV_Qh?9X{zGO>oR%^rVI^U=SaPuvx&2rz-*|6+P<~Z6hE7A8 zu8TDlOJi{QHW~9hl{Y`fCx^9{(`T@vC?DNUT7-Ae=<8(%WQV-~87LRH%!d*I*bhb{ z&WEnj^6w57Kzp~c&7UD>4U72(@IOSBv#Uc4ha?;z9s<2B3AAF6j)c@CfP)2@r3ZR= zjIuW`mb&7=1eE$mz!kXNt1}BxXeYBlzXq~J;o%h7xjB8Hj`4vl1{jCJ^X~^}W^=1K ztRy5*y{?&QM*uAi1)zwS)>8~06;270g>@8fj=!RscMYG)Mw=a6>ZT?R1qTV5@Oz1R z-?}eXQ>*Y(eUSmKOEYk)f;8{_zex=Qbcay>G69RkX=8XAQ57cK1=NMgll(*@=pQ9B zqaz)tlTI%0kfAbGH!NTc*xAXQ*mDnUq#Tx5U*m{KWgquxo0xc#a-#iA!AwCn`gd}d z`;+S}K`W17ISXp1!^qXjxW&e|`kc-o!-Hk#E}FAOt`*1RytoZv2LZNafYR<`^fG z3w{cDoT(&r=>+z(4Z7YcDxYB^Zj-XIv)@UQHmbZ?1Xa|80<^DUw(Po#Uwy=Jyy5x)Tdj6 z?d|(aEceC3h@70Y=t1|Z?t{W(u_BcTv}JS%eh6q+pcbRkES#uJGC}DlK5f;LP1s{| z;H%O>adV@KplHrE`TV}I82*opqxyd=ZV~lgy@%?e(3{=V zUR3`u6M%V$Ck`{hh~yF5JmsW92T2B%hG-Eo#_xdPBni}I<~`ba7~ivFBRuYG1N*c@ zmfMT;Fvo6xfZ&N<&5VX452h#Sl(&D%H`~P~PA(Y%Pc65PkwMO`KX*CCgxmt`SCV-jM z4Km2S!@FPo&H4pU(17Lf8kd;Q&3_v3XUY+pJ zuTsDF1GNruGL4feCJWs0tRk`Cu6qu36F6Y;09i$ll47#E>={C*CQqU+Ld(f1RU8wH zKQ=b@s#wS47EagV4SO;CX@ETSBu#>xsf8=-0zOxNwp=KTC>m`{FV1c+6A4fzuD*)* zG4c5F7xUj$Ov%Ec@o&#JZTBYAWW}=@-&+#51T_B1`F&Lo8Wu$ufv2~}uRcyL{_oir zR>Y={TvzNBkF|$ zH0~IgZFq1K-^-Mh5h)o*Wg20DAx=DXFk4Du__k zim&*4&z<1-0~$F;nhpiL3Y37zK&2TgOS`)(8{6ePzYy2b${-^hSzbR$cgZNMRxq4& zX`3D5?~eus{#eG>xU9vt&Mq$cCMHrUDl{@OGJJxMtzkcyn6)_dFkyzLQ|q}A4;Gt8lSzq#+Z zScRI=-|s6dAD=L5;!T>IJZ{^1X=24QNT ztq;jfFo*VGlKgYzK{}LQ`e#`H;`Qn;ex!q2jl<(?bX%TqeQf_8^b%%&zu)o4G}@dz z2LZZPC8g?6A>>l376fCqL!svrIYm&8hVq-9(@~p>lL?dW&(4GgDVZu>eWWzzxQ23W z5WO+&Z67^sn9_;#r8G3GARxMp(`An!H7)H0sm2v;OeYQo2a+ar)W46qfPXA!n^sV* z|4jF#Oh}?l@r~vq*^g9h@Aa{Ss_7iO)((nn+AKMV-4%TW=BCc;hV&2w3<*`IBB{75 zJWt;;k*1@+2=FPoGpfp;5Flfsza+J@L(qcS?32s(UQlICuf_$Kj9~B(d7jLnXJ*Cd zrhG3c(FYvKjL@SRLK9MW-nBs5Cj@aU|MD?ugV7O?3q#e|D26}=!ziQ)B=LQnq=NDc zn&){yc%Tk|2Sl~=Bdg~PptHyTRVeE|gU0*RJgpOUiu0A0fT-o4%$zxk{Q=Mvg)8JW zPfn)(o4QU|RtJR|uT=O2)>FtLD^;278y^>tL%SL_KlH-jvVom)?Zzbh`bk{zyAaNr zTs4cA1;e1FqTSG1n4NtJ5lK-B(ZUbb%@>&pHHmZA-JRT z5kcRxG<4v&WcHG&yIhC2i*)zn!*Jbb1rfPlW2FnfedQxm%e3?#jxyashUPi z;&_IpR$aj&XLjrpup*`}>v+A9@{cE1M#hzixko8K=C9WUyUnh-Wg!9anb1Iic~#S- zJAQx;o?EyGHJ^CrkQjwtKK}hBXuPI#fih6n)Lhuojsi4lxd5v!34qw92+=Fk%Bq*J zX~1NbYFw5*ISVxg(s>J=k^Z}Py*qP{zNmIrs^VJ=f0cnaCdiC>F?y^7H4G#m2Z#SQERu7)3~F8f?0QOJ5?p&&*tej z1pD`(SVG1`vIEN5>?3Y%ZQT}jeizPHWb4$qXq(^dOG%WrTApCBcKF_z<%0cixZf-1 zh|QEl{XSbCsf_tw-dC=Z&bKRL+50NdLZr2|!I* ze)aWTIOmr*__1F%1bDtTtB(EtbMMiKGXocy@njYJ7(c;6u+z(1dK(WKb#2fqfSS32 zki8nrDM(Wlob5>6F3ejIa$~gw*8m6`(7i#p%n4$@ds4A(z<&L(S)gm)Pnhz9{C%Wn zhTD8d4;T}^<88ec+`PMHwUGD$E2Ui>f1Zva56r zLxZi=v_IMOz71Vf4fAod*7A;*8U9=v;@`wH%4Cie9;A5uwqZ1m-n@U(CX8O?sfynH zr+I^%Ub`HbSve#!6b_b(-ODdtkj8}jUSB{qe5z;0A&(hTF5%t1^)P!NCtncBOz%(p z6GlZ3MqWIwk8pF#^ zv(-*LnLuC7t*oFw1?-REjY?_-{L#0?6*@X`IasSkEW=C!KMRdlL}MM_G}S31*c18{ zBnfbQ^%RtEz~V+nQmS4Qzsh3)gXq)G9d!=m;sUiJV$T6Dr<6e}_|;T&v$$N<6ob23 zhRi5b*Bt}r|Fr;1|EO*s-?WpX-^4KS>by{oFMnASGW7A*Cr_`+k_Sx`_2++&bU(CO zj4EbmC;S>W^z$WAAOG+K_evWTO{;-!Aw+v7U!3tbO~aw6Sf2m8W~v>+g9{8p+lBte zx5a0RVpYZnR}J5P*=FlJDrddw95XJma*meeDOGOyft2_~)merCnxT6_1uesyDC~P1UxC0Y-=0RnoYWUjU76wF%B{8yfLM2O4HVim1Z--<(tQyJ2uq( z&z%R$XB=(7wT1Zlx=8-IE+d%_yek(3jg6lVR3qF` z!7JXnHeBu4Q*~ls?cn0))~)?^-sL5b(p;;~&lk-aeiX6hoR9gcu2CmoHsx}npBrN! z-@0N$leLmMTOD<1<5UKJ5fYwq1KvgscpHMUH#pMo*3coMC1+%of373S>vSnWS6Ws! z6O@7wAGKcl4V#plybYLV6i^VX3Tjp%SFw+tkgZ+5bGkxS-yfF(>}0u}rDqbiPIqTr zP?x6C?Chak_p6x&k1;a#u}BT;DX2EUy=a|YlzLg0FJM@g{|uITo&f^O|dNVbQ6P0MH8= zNs_KePz9cLK}YFh1yEll!tic1Orrcp8suPt?}bKv2dfyvvO;k6x^NR2a$RdWgZ?Jn}lbuNh zhcjA_SK8bJMotVSEdZjT(tdR~+PgVZPXR?JU|_FkI!w79LfAl1h@5_E+F*J=5$rHz zGC0_|vO%{SO2mG{&d#px%=`)9#Nho#UW1gU+~h+{JcHZ~=6h|STsHPTkrk#6u4?}(JL?ua1Kt&_$9+<4$4u-D zbK8GeJj&^D%1@Uo#UggQ& zX|^j;liE0=HC1J``}i~On~2Gc=d$S^0jf~&t2?T_~h_tQ~Z?-Jx1Zl>Pr zA=PkT58+M5%Rif|(WR8wQ>U zV3CKQ4sUrnnEv=#9Z2eP%Kv)k(1m)7U#@99QhD4JOr5!EPvXu`J5BvGym^ zvYDV6&|E!q1+Qu=xX}^$O^$E^nE@L5@zFihMw;pU4e{+-lTm$16X)Hbp(w+?D9M-g z6a);c!pDVpOPb#OQA5WSKLSVYMO#k@Fj;i6=h`|vkU($xF50L-vxz0HfO-4&EX39T z&(AUD2njBLmxIAb|7-hj{;LE52W7gxMM)@hm-8~>vqm@AIXMj=Qw6%w+Vci?iQ-W^ zm<7UPJuLxJBxpC>&&(*`$81~djFFa?Z)s|}5hrW3{?e`oTH)F4Z9Hj76abr2HyuFx zoXjnHb9QU%1;q1A3yefPy0%3!xR9G81^w?}>Nzyz7w5&XM3ZF}yb$Rg`!)jt8B4vc zJrVF!6~Z2NR)0f9N8g9oP-vo`0}hu2*0N+f<6$I@3!}fGIqLj(@A_a+5fxRs^+fdA z{pr_ERyf1C2?`*q$tYlZI2bhv``5~`4;o2vX1^hdC0@mipJucALy5Mfy>J4vMSuBX zO30*xY%j*!lGk3*Wp@y9`4?rOj+61%?HGG<%1Z)Ij&b!#(Qk5tBgde z+A}73xIj7U&HYz_F^^RWUxu?k3gGbCwQUx!1r5>5B3q+3Wv1riv#3-NK}ugw9f#2X zT}5w@XE9i9S6vDq^KT_IGt zcTv(L@pmy@n8kg!V+68#s5@R3r{?736uG{z19sAEzGEN{PHOoKk+e+7srU9hb@f&J zOK^-=**r5Bn+BN=e+<4PvHsa)$zXZ3k@P9 zU(?#9n#$*tsb#aoW~cg`4caAXyr!)%PtwpF#JfB+!*8CCPFF~Y_|oZ0QzSX8P^Lx` zZYYqmej+`kWk*7d<9eOnDmt>8RewBxVwl6w7LPx-75j zD*(bKC8CzdA#)PcfBlhv{}k(9tHj{!mBQUp3Te*iA|7BG(}%$jw;NzlLXywTPte~$ zKqbY4gbSP6HK@@^`Kf6u2|;0sbQ=CO>5kWh1GN$A4kRSYo&N~PBItr|d;(Y$FjU6g zDhN?NIb9h>fDrlv?3moY?GV=l(bkBUc?x8(z~eU$cXrsG*@l*umd;&sRfA(U8j75^ zFf$$kV7|O5dx8K@_yYJ55%2**!PS(*rV0NbUGS4=#iS@B~&? zuRSoCuG(mxzKKrEZb(T^%klb-2y4~#EY+OYwD6r}-|rqgCik9;2_jLDP9rVnH* z-SqMCJ$0B+Xf7Y#@PtthKdR=BLnv$dFK!wn?hf+%H0NLqAC(izQ|zIrb{i>b_MxiY zCAq4>dI~IxN^xZE<7s1C;zzD(1{Xdt`O_4qH6grx8qxtWVe)hfgSbnl#=~fck!zbk z7hN8XbyDjerAj-^tGAf`I>$kI{&~do)Mkn{^R24AdA#VG1x#3jNyz*ZP>}-XgVxa1 z6%2+o$N@cae9B1&3%{mzzbz~h$f0I5M<=IaCmp>9$hF;gVrZLh5u%f@kHLYsf8I0O z;?JB0h`@msow6o>_{p-IaiZY`6^zS_TvPzU5|v)^~a?qTB89v@<$|97CJw?wX(H2c*(6_bM2e6MYSk`I^{p+px@$2&u~`(jY?1(#zq3z4_sFC zyM*o~h~aIJ1qUq($nR?$tU!$qHeOJ<@bU4nnGc!v^hE2<0K;c6*MvqxOFK6=*Z5t( zIfiz{FEEfDgrd)Edq#EpJIY(=;5$K<3&JGpu2_cV)jtOGTIz2&9pQ$7c={XO6;8Aw z$V1!!s-ifUqfIgN3OrT#RH9nc9U zbjsTH0E;!J{`(0@=H2Pn^;^@;Wh51dlbq9)3ozcp~{TH;|YXc=Wi!_4^&Alg% z{}GeF{-*NBFKUtO^|z^605(M|M+5HCPQD;hNZ+?P{`S-KXuXA%U8!|al0oqcxz0up{6Z%L%1)V^PRMys;X2J?b_0J>7%MoHYBo=8DiFIgfMsY z7h>OuhJ6-u;C(iln1a_-wR|t0dA~+MpT%TgrR?OVuf5W)49NHoKALJT>nINgJrik(wGD&_K*T-*&K0bLg2|WF-wX)MAjJ{X8twi1I~S- zv6g1Z)Y2@&$x4;B2GKtS+mgm5KL<|E3VY-CPZ*Pv8JBig;v)A!VFu_=j`}guAOmk(!WR3} z=!QnQB?Axld<&Lz2SlNm4t-$cjBAOx6 z;PmR8Vo%jJ6sl{ z6lBF9tn;v-?v;a#ss)&uhzx2m?oo$a>)6dha5;f@Qx2SJ;3$W2>@Rt#4dTD4z61g`>U^PS3BQkKuwU!)gZqUO=n!k+%?5aOq6v0qcY_}4@aX&;l zQU*Oup?}jM!I>04Eq}p?gJ>e}m%f;$&SPXD{mWy8T+>OKj69j^Yyb5xM;;rA=ueS) z=4!>VGm4_1NUCZ}s~+h0=)Bv?u&g%J@@Em^Dk&h`-(N)7Em0s=NCrBBy$~^#ZwKaL zmkaGzg)=`}{gj~L+lY7+kyv*@+J(CIR*u>Fb-cV)aCL!pc`q?}Qp5K3*^S>-Nsn8# zepr9w#aYuKw&;GHM%BB>@!abTPLq5;#9G{6NX*M`d>b7^3wrv;$w&@ere=*5DSsKTsOi2#i*0u*s4|Ejkc zlqDwj2~bfe&;MQCwgxT2Y1mwo*YRdAbIvz*U{)39JLJ6NQM99nRCAWEe^{rFCTTvc z&M!_M-NuvrVNu z1+d)5yes|j2IL>LODHX|z&O1*5Z5Rw5wcAud11YSA_r22Fl^3fC!iIoKDH8)=t>j)?FD(bw{&HBUUb>$9& zWp+XO0IX|%I8@xoKn^&1QS_j5aCUnwYxfTbb6XHVA;7qhK+P@#2!#8oEwV@fQ$75M zpd2IC!NbE_NU^S?Vq(GuXY6&f!2m!+g-{uD05}279kM+Ibdl5kmkWdg$i*|kI6LKR z={v{~!f~qWRW|^pY#4q025Tf+<`s~&9QPwmIu!y{>!;=~dS~S+uFV25xr$?2)dIIM z0N5saWp9tYPsl8pH~6Y9^?|{2_b7|2%6JCtWQa-p$SZyQ$GmLPYX{%^)?o{YxxsC$ zh}rR8%}}ya$zVr!pIzvd_J^}=2<#Z&{w=?5pt72-Gidq(-nHo1Y=g$Og2J;cI)SvG zO_`tvLP}=^Qz|MD+yUIx)>+CHB^70#OsZ3h=2x^jl65HJIfb?deqb8~3mR^us@A0D z>*#zf+?kc3F)2nj-f%Cr7=3vrT2>w%?bD})WjN3@DA8{Gt@*#@S|J1>pTwMXba1#( zGSeip8_@Ojjg3kwI9Gs-Z!rIr36y=8BeJSUu!3?C&+1U%t(8#-htdl}_ssm}J8;m( zfjT7^_zI}xjK_bjLF90X01Yf`+Q&~~F&KoaaZ5LR>VLjZ@{!bUlKGO-n?`iW+T@Tg z%RjYjWKG?d(#7R%`=YTC=OJG2bd{m)>OpV8ikE!f^r;R}v`My``Q;D;?qHPPg&KB9o9f#P@T-C3$_Nw(5ImOy z)2#wV0li3KH@F3@8BAH=G-wO8lnIxSmevFAtWbUT9`KbA^^@>bRrhilXl|3EO$r!m z2E!8B!L@@)$dtIQE|322F( z3L)fHXtyI|4VQ!W#{`_TY67Ywnox)p(25ezyW=d=@EZD_H?B?(e?Kd>lOH8C;&VS@ zcv2RxC|Kj#Up%;`0qzW+rnu)3VrkjWo*X_g=sW9HVR+3awGkipL@hEaXah~q3Ec?JyVi}N{BD@1-oo$B@)E}PJW-Xc-h&`=Sfr=ENjW%@ zBBqKBooT3ktuH%

^-0_`iSu+|Rcv2$pJZjo;@?mZ4Kb=uZJ{IXvY z2XY>#SQthSK^kH@L`K0Gmnd*pV0r2RW7E2UaDg@tX-NDG_jPod;`zx58w>*k(j8d@ zqzTaW-UxZDm`+1UiSUM+Yi@o%dhIW8fDgY-;uwv^ZzPFK7Z_5t9T&)WRyyuYd`8!R zn%@@R+TMThh>Wizu3)sJtkkIObqu}wckldXcL&~&u81I7CxhpesL@$oF5a}Q(xPc! z{PY$=kRS3UC(T?2Ddar{c(XdCo#p4~ZL<_aG0&7b zY~2;weblhm>6p2=c@y?q+f}7y2lU^at`C`yiq>h!{_x^m+gHmk)A|*6s*uoze?8MKR8 zaOAlo^V+H(@H#ltsAh>7F%Xczty_eoE&26kW~G2bKS6+_tCn(nZEI2hiwK(WA#9|z~PQO z-lp5G*Is#!)!gT_`3Q$5c&?us6iCq6-OC?H^e!3Il2JbYl|aC5pg z1fpS3lzqGau{53f6^2ACk=+RXbX%D*qag=>mjpLRSS;nqBL6$B#J|x-f3)+XyTgOy z9ikayjrZ&3IcFU%v)q9zUkUZfvS2Nt@f4cm6K#VLcWfuzC3#Y%58s_!`+5#}B3K(H zZ?Wwm_~N+UF~M=>0^D(yI(rErH@Fv}UV>N!-If;VR#Q;y_JHJvIy&$QpdC6;a3h`q zyKFWkuunD$%C;a#p@Bm6f1@o#wAEq~fxbsklo<)`K<&V(*WgW%W(OB%>sM7q zsELrO4TtsDd;+=J_Q$Yb!0w3h6nxnw6&3x;sUTFl|HsDMxR6gu%YB)nq^PI|%tqw? zm^GIve8u>k>^>!CTo0F-wE~_O=^yM+sT3%84pCvOy*&1PGj#bWKED~?k7;8d|K_Om z^m5nmhH1>t!kH7s!90032X&vwf(x6)I|WYD95kjwdyYoypT_^bVYD^$jC-*>CQ=99y#3{JpK60m5fiYO}fFhx$xEATuoqN#XW{jrriezGFceB zLAR~J*pEDO0K{A|fRYH`HXKF@U7k50#{)#Z2?jfo58zwLd>sF+1ym|#%n6^rRc?3A zdjdOt>mkLX|D7_43M!O^tJsPxDFSx~gLVRaOFu6ZE>5t%>#kZ%oTOQ0>B&cLJ{Idt z2G1=VSp5*=I-B8zi#*_;nZ!cj@h3|Puco$DKwH{{VhAiaRL=qo&3ZtD0tdqjAX?Zt z-P{IoAOHXkdt^cuWDp=zG#?}^O1eQRJPiHifoUiZn1v)o{KelCJ3xs60iDlbNCKeE z2Ah9v%;*;W3mpM^>kyfo3w&*FGQ%kL_C!SjXjw8xH;`%)D8S^S7WZ>OReAJp3d=ht z<{lv2{kDa$%W=%Z;*%Kr?ht+L8QKNRYw(tr-WU3`gpZ3vRD#g7`9D_7_>(gj2#Wij zp*d)&@WP1MWA7L|h7Zx~FZbH{4za%h)t|oC_#hsPx2kHJD^;T#r?6?|fPR8MZK!)M+?C zLKViM9T`rE`Q+P_!`81OmTzRb6XO%XIMv^33#ZBo$w)AjX$Z^)sGd?rPH)5>M;P3Q z;g4yf;rwuJr(MOf;xx`_r=Z2bf4n_bzhM4;q^aBFX(uj`8zHHUM|)azdMjp*AQj87 zy5q3eIAx`SXM5`PpjT6JM(B1#HCaH}HLADBSJ~P9>QELATK=6A{r6+%?;Cc>bVGtV zbP9j|^ee7AOWv+a5mQyYPZ;74bn^QyhP)p$p2>(Z9R~+)Md3plXroXlK{P~SRjD5# z_#N~^(TRzF7kS7d0uyvSKlb!Mf7_HO;P3=&ce~@c<>m413u(bTzvdq7b9z_UgHfoNm}o}mZuUCnYKt-UpLor zU6X`F2&@LEj4J>A+5l~d_0b7r>QSkxsv=T7j`*3!^Y}44Hrp0HtXVV9Md0|q6KRX( z3}82wHb)d-zQAmkcI(jknaEn7-nbgoT(x>(=c^qaw3&7H9{BmcGFD#e-kble`Ttsg zh#Qd!DS6(ZoBOg|7A~``GwS6$6yD$27)R4MeX{86EmJl!2Of$f>;GgE)>o!*H9_T# zy&5-RESa#>`%q6Ii0_tI*4&piKpSlE_-J`QiG+cnV6HTY!I#jGwe~Jc@2V!Zv2pZw%4XPQ>-bREMEmTW| zy_c6@Npk7bW7ZSNa|j)>tV!xKs08vBC>*3X>z+VjqMoc5sg8_X663qhA75# zC4$iNHuutVlh5^{STVWw?#$HGZb{&4*a7H_!){q|XlO{UL>)pw3G&h$fBCS75j=RX z-|+~q)Mnv10$Q!EcNJ4G1+iV8eIHzV$Y9V-N5R*+9^B}pY&{mW?F(~BCh5r7P(VrT z24C>T#K(tEY%Ld6OfN!iKH6-eLHLpn7R&8bzjCN3mU9wxGRw;Yx>>42J7Xet_&pUA za0l~5`v6ZZQD?e1EPlLqTz_3F>0oGLy|j{Ha)V8;0RiU~e&nxbbd;|&wpx~KU+Jih zZkCrQ&9z93-PCEW)-5t#_9=QdecjT0ya2zhu1#z9hs~$Y+*J#XH=+o;AHBk(V$hi* z+KtnF*>SJG=IL|SC%lTa<X}NQ{fnqU8nqG#KkI*~QXOi+Ya-rO95=z&5 z{rz~?dA8eauHf9UwmwTS5NpPJM>r*}cKAui+(cm5c0?V&^Bj>kb4VC22YYAa@5X-G zY+P^OK3;Kw)(O3lkjAxag9vZAY5%_}iKp0=+BZcieiORfsnx%D!gp?Me=e&QV?Uz^Ul&SFob)FY;du;^aMHvvm|$CYHY-?750LsB z(9CLC@kR)rVp~-NR$sYbff=unMMlDJP(dULezE^G3PK(Bxi9Fvx+MRkAPsTQ7ql>4 zfJ@C>WW|TaeDBfzK-vtV zZbB?l2hP+B*6-?qb?Md=KEXF05pkaW3KzZpxBhjmc_XZknfK!N?uzKHi26?YpFb-b z=yS7jq2C0^dd+=H(*wSF%w^@z+B7RFlIZ8|>jZqCz1CKjpc$&tV&UNAJl*SNg@}J) z1Oy(-C)?9MPCt1a9qsOma|4M=M@f+I!WdmVNvY{6^&5=H_GaI*LvVF;lOrybrbaT=qtuRV}Pl8E!L~xLKjS zqDX7Kd`%&7t%D&}ASWR)-nOv2lW|=$j33T_wrWs0>x1?EjqmZb2lDL>IEJ4XT82w& zajU8<88K2mLVj_pz?nqon)h!_hkChG!)bBT2NU$-^rZfWGa1g-@0%#A?M9w{+r{TR zq7-_a@EeCt8%0zEW9hW*n%v8zeN<^XXoE5zy~g$1o$;h=LIRWK`xMV&ulnez=len2 z;BvN>*U{gPPRYz1wh%5D{tQo8{@yeExdcSQ49iCE!g6Xu*I#$ zxpQ^&^&zgi6U@a?0A-+6*Dm$P@~0`lVL*m}56ZVuSify^S&fxcZyZ4!Eo&&zy(b{J z$2bSVzC)SW^-1FUf7R=hZ!>-NKj}%8sx!$8dlA3@j={{W>b$m{ z9URQ|ATJ8{1BRLF1I~&m`I=^ZmSVS)ooBE%3E#y7WlXfUa?va_T9Aur{eEDi+{?dBnR#ChwED9l)?$6j; z))&!QDsOtPg+)SU;))#a2KCPT^ zLi4Y4Bj~dAeI->JmDezoL0MiwwKf>x0PxZCbmw`Q zaDjDGe}iNY`ReYs+#AdmE%-l5fjz2nCkQlMJ2NrDMxq}6P3qbeWkY_*0z_~(-C56 z*&PKLKjWBsW#DYMF7bJS#v=HpdRLAkPMixorOS?h&r1d1r z#i;HE2lAZ_C~(XKuEl&l=*BMSnHle&5RlD!s&jM{_7tW$kVagdvmaXaL70K@mHqnl;;zpE9MG7D_vQ@m zkyk`qmBr?Bfy;&jde ztR6TIu09wgPoPm|)(@AJbp3c>zxa!mpdy;N>p8*0uldAa1zrb{7o^-K%x2S|;n{ZU zKIc;A8d4uXo%(Ca8FhXH2Tv%}2y8fplgG4$@g>{Vhhd6(C(rTZo{R~&81pAr$ClFM zpx4Z{b3$(vyxu<}xU%#ofH2~b5F~;2=1>o z?T>qcVQ@x+0cd*2?olE}S1b570_iYcw!^W-i4P^s{$b21KW~X@b>EH?f@m>{PbjMa0L^V>F^>fFqPeoFs$rRW?MjTC*1Tsn zjTpmoPAhfdB`1<9$6}M3`R_Vnr-OF&IpE4o?b{n0zN7fvPovFn>#1xBJJ5B+-(t1Ok1^-TG>=g9v&dc1H7hDKUIw<&P z*1I%rZ?Jjm6i(*BPI{?GHHR%ftJXF$6b`+$6MA~4fJF9G#am&A3?K8H#9yngm7u+5 zH0<|a7Y~V!lUOSsYfCag`&uAa==4g)W-pX&>6iYU^O7p<>dF@>bovrFV*==2LK&@P z-4qLKu12mYH38xdd!TVw)VFT{ll0t=jD;gQ7Z5)GXN#hkR3)v%Ydjk6${Wh6W*J#*T%4Ar{yTjh;*5Vd5N20j}o+*``nDgd?XJ54)CG}0V zp*G-ePfEXpNLSd|+b42c5(Djv=D#;MLkEG-NYc*EE{f6o$GBNK0PF(JvW@_bX!M<$ zn$nN2l#-Q`b6pPSfdhbvE5MSqtg#PN7DZZ&iY8*l?C#enFB*qWeB-@x*e?L8$$ABc zbgZy)%R*Y@t+fj_^ewm*PB|k)1}t8NO&CCeG+kN6<cLo&3ScF_qOVY&Keri@8B@ zLBW4dB0wZF;8(zDSE>9>U`*3*rF` zc#8L*Mg4f7*#+SFM#YhK+Tyt*H=sYrFAmP;bAzo1Z^-vU{piLkjz5|DY9oAgX06NY z^}l!x{dC^0SFR`#+Dn!eVB*dGF2?d4kAQ5j6uyT^BNYfa$+7ycJq5f48qe|lvz}GWU0(_IGH%Z( zs~JlW!gL+6zt~1_@3P*F^q&h?{$Y3{=!(l<;+bF5XDEfp1y=mPbb5C8e{}E4?u;dk zVSTHQ{tlH}42MD6ew2)ip};xkSO8Y-(r!Y-wCa+tXxA%)d+vXua%P4z7&1bkQjr(GOMt(pJ+>w_Q^UmLPoYaXNFfoVO2WcY{`FzRXaJjku=;DEU z-W*rbmy=l-bf$hZ$U=@K?`_WBH?dYz_k(eW6kKcY*>XYee#!j(gL-Q0^_}jzzfOUX zeGvDvMfWC#31Ai$9#ccljY83+I1q!#F=2ESp;RWuB(c5D#p*Q#!Z zUN|>v4n%@1E$x}<-tP5%3ErJtyS_Kae?MD7%(v5|KW)R7&tLlsK&*6#nP7T_3CSHx zP(K5CCcunSVJsy~O{rUft}z3RP7NrDqTqRrjU_{CQY(xbHqV97tTdx)W=JMvs*RNk|f!R{8cc6#M%gdVs_VxiAY@c_>%CH4miJBv0dVT$%7QR$n>~yH( zA6Xih0nUMOp0gDI%1Ur|ojfn0-aeI;$BX#1uL;W2JhEw|%Jg7o_?BAh4o9yQ%4x5vhFAhco_-%<=1&f8s$fzCyU_mZ%}SwA>!Q{_y`jXWp z6cB|1&!d6K#*+yxAev;tN6Y!)#sDO}fQT;!8*cIzLGBA+CtWLMC&ub)SHI|K zd{Y@)J4$tK)2EHx9{yiZ`$y)e+2*WxfDJpuz!ozhIH!hG#*!;!Ae|2Q{kUHX0UG!K z8a^FVyW>VAzRD&6vIV&V|1$@F4>Cl0Q4ls)0Z1s&oB2UPJ4&Lkx=97gSK$+@XF%4t zJUYC@p;_~a_p!o1(s6&2-o5C3Hq0vk(1$tz(M0%4`Yn40s8pZe zcM5zHu8hpr7d55jIuU6zG+zPBM>l6>9>4tGg7Ke0ZDWuNCgdquX9A7l04OP911YL4 zCFC_=ar}dFYWm7DsCMVPPhL}l`DRwn{(DUSd>V10l8R8~mDHqOLEwM`ID&G<4s4I9 z(H0ESC9;JVss876|J*omlSAKx((rz~|BH08!&jgF-(ET)kr)>7@!lzXVYclfkKE+{ z7T*8;z3Fl%Ks1G_Xm~+6M*}4q@O-+FmFg)hKz2!ecEu@HMM2vt5^`b{8Qhy+AGFGr z91G~LAOM_hYNFPdi^l6>S7270H`Kew`E zXjBkb!>)y7{%2JGe4KfkgW3&8%E3W3Me~Xgl>5~&In?hzOW+^IKHPK*XDB^324lXZ zX){1`A{t0Kx;%aGC#)!GpFQO6sgg!G7V-4 zNy4trdnx~Sn7FclkqXAmbnQ{_BQX!lBpaAB!3i@~Wir zS6u8i8n6$d1g&g%>2>i--V_!d#z}&A%9`yyx?hYlC6F7a|BDt>w#UZ*dE}{BBBRsc zzBw9wLGI({!n7$s&Z@7wmHu^cq0uUVitVKR(Nt*_B3!|ETOA$xpOj@}KqvqA^Qiyz zyqW15d+rJoC4&MO;6_PE&3uWd9Hn9oBL7@=EFIcvSXL<>Th2pIU-A(M@V=`}xP}WI zZ;9zPK&1_T?Yu55HWE5NjR~?r_nF;YDjHH_FLi!l6qJcn_V+7M`N$PB;5{+v?$|k! z`0~LGyZ6Y9xnfKl=q{Z60Jxr=)mm|*G1y>;v>5}5vT>ZmTYKp=W{XHwuP9_za8*#YeHQx!r z(O|WT@+%}`@>-KeJzt{l&9ld~IX;C~1AhGMDBIpa3*dTK4AL(zZDY|2PYmysi1SBY zUpi3=PrR1N@KG_;M!baW;%4Ua>)tDby#8yUF7r7XuhKBJ+H9d3~L?22WB zll;Z9pPE)Mu-MJ~Fz$$mR(SI-YOv#gS{T}GwTNeZ=Rrw4r{{!qFUwLLEdF4q4~&#v z|GUai2j1I)39g0QWOaq=;&I)tmNVNM{3o*c@EbrO=5_mkI5|)|v1%|zAJx^F`W^U^ zeX!LsK7x|L5OSe@mQ*42PW{8c*4sBeIO+n>j@B^3F|J(40o}&%l*T7;A7Xy-T3En- zPTZ$IUoRer9yn3G#6w}%(ch1@*{6w$T51rk!#XBR2Nvd8jU#GpO7rsg$EYLZ9iHZ8 zbKLt``5frE&6@s?3P>GGH>y86fNg7hTfJNyV@0drTi&=i-cH00=oM46Obrdz(~`C_ zpwSO_a~kB+52QB)FTjR^8T6V< z`ENy%`HfgaaQ@YE1UBE-_(S4hp{6*=WR#}WFX~KD!oY!9yc=p z5;}lgX*EwPvOwv&6QK}nBI^LXUbHJ@W4AEBQSuXV#@--`w18(2mq-EgrJS5}Caefh zhNl^RbdypV0wv2cS!cJ%9890e*R6REhAH#e(|;UFoK0%Ctjn}K`}ws$n1$31v8rQ- ztu^NUI+88S+I8PL3+w=EfY<`edB1KYGf-~H~cp#rdHK(gO#drsm_Ks4Y;WuAqY zz&v3EDvX$*pDq1bc04$*D`xNudTKn>gbvBvVZk{8QsioERO@GBO1rR zIJ2X2qY36B*m&5}E7}}@PtQ<9Nmt@G@>Nrtg$J-F)SXhlg}7)J*YgXV%5BY2-+UbB z-Qlj!0{>>F*}s9{4teD>&nYvE1{v=c5iZ=5?z<=5Uk?_vVD$yTq$ad$rzGd9(&v&3kRt z<*HPn{$5+WOPiiNahs`R%w8t-X8+rPx$Z;9^Rcmdj|rG`=<1nF6Q9=yiZ*8fRUkVU zskE$8txP)X+O zn|!wT`8)AuDo$6dDW*}!&*HbuVSSdwXYJJb9fAt>JVp9X@^|a|4O+`5O}Xqcjo30Qp3wx4)JfcOi#*ENM* z1`z)kk?9%*(u{i?&+~ifl&8-5$&PAre)z@b;NYwvRIc|e{a)crhh}2xSTTniG zaGB#l2Il)!Ofjrc630SOYNDGe=C-eA=VQj}p2kn^xAK_xuofR`nNFO3xH%sqy>Xmx zwS3YuWvQxa&Csz*_fwh8LT!>psy5tGppQh?$Ou$2m{kw%xr6{mZ2uNacqECv7Gb(( zcRP*@;At4(D)6nATjL2{X_%{2jjn5QV>S)+_pg27A>g^%nE((2IoT6$cGH%D?2-#K znaks#PjavJN>mc_6m$D-t#|7()J3|AB4Mo*S!;-9e~}>)YlB6?!++``WD3+WI1Me` zK_he{O}Tnk${6!57KDoL`E-ZjR3}_y`N_#G_g%UP-F8or!Dn{P_MDhwh9dmS*t@G>Rfli-vIhK%ew?|V6yvUtzJPnJpJ9?7=PdG(aw&dt3GSrwXmu6*);hXK|e?fh)1lYZT>Xy*!qA03q@urw}^6C@fKikow& zd2JksX%2kB+$nqsL^$?4lub?GUoV_JJ#O2tn1KTPixN|Zwzk4Kw;n>;2#)%L#`ALu z4_+gk_KU+_{yh&Tax7f|-z9|Ei9o444~9P)<%lI3?)y3q$U6anNflZaLppUK@O=+4 zlH||G&&f|Aa+W%lfm)QNG|Eq3Thatbi77wI#PVfn(sT-|0<~mk`>&I!_U)x`MKzGy zO}=)d=iLt5V~akJgoUqM{}jYBX+rD+A=aQ-I1zd;{Ah}ZAuF}QU$OMrkVtsd>CsSc z_HqH~qpSCX8k(a@gW1ju!JkoBVch(c~KtGe1^nhJ>-*p4BPV@LJUwGXbFrR~QgJA9zO&(b5g^AXd}lgca^) z>CVoL^2*F~@o9a>rfQL)}CRN;8v^$dybSB-{b;m0ps_lYk z_lG)D4DTNS7_YlRJbvcDuJ?_uvKofmEpn&`H@S^N3GW`y*ucHfQ5e%_3u}t$5#(g%xkbm%e{)h%1m?>Y~%{$&uWLd+u54ENXJlRl4#` zr!@iCpM(Km$86VKg7LTV4K9}6Lfr=@v130W=B?c#Puy7Ccpaz0(JA^Tuz>B}@-bb{ z)v^doURY6(qXz4uBJ2GTx>*>Pbm>epx}?sx#_DP}4|J9iDpy{D(PgsKBuUM=pB(@?(+if$%g_$3kM>uR?-C-%0@5Yy1`=?l zP)px5dq&F;JAi8wGdhw2cN?}VNxwkQ_uW&0 z%j#$Q5R&wlvyH`W0;(jwv2G^@0W3{n+tr?d&LLUP(Eu#W%^BvPr>z>#ivo-b@<+*Q zmms=055s_jr0u;51C~b4$1ENQ0A52+FUSlsgh31}71(Gi{@%Q0&g7?;a~2M{>=j;^ z78-_QE+L-HjWS59hQmDR()eR!;*$PQAhD}0=1S>8N-%$S;_=zQza)U z*!HH+ty}B$78}*VE@_=p-zzE!T2Vc(5{Sn`A~TpHsoUv481J=L4}0dK$Ke8ix$RSgLcTn<%xCgFNIY8JJU*8Tz+2+ z$;;z(RY$sutT23W<7bz7YKK8;ev@{}nbtMvkzFV~nKUp9rJ_4HxcCQo1dfl-s&xB6 z#wJQS%a=*Slb_2(jU^HkMNOuYuDHjii0cAX{&v7M zu>%hy5OQ{S+t3MvU#llP%Nd2W#>A8-wLD#T!ntOg7y%pH$H+W};hmlFaV7&$%XSu)XZZhxTCYCS~e-OWGszuh|O zz|6gFzltRspk!jas`s3t3b*;HL5Jq^Os_ovjnXIt=Hf`y=;dpj6Gz!anEKAbX_@l2 zhBer-&$$RvhriH>QhdfbMHN;Cn$x$?QbJ0DSn76l^if*=E?zyG_gnET%vwlMTk6X3 z*iLYGOzIVWfL2(6FWfNi5=ksaf)Xdvpgpr=GvW`1^)>q_TAj={3pZ9+;d|Jm+U~@C zRq(T2Z|nX>=~VNDSk}3%VExRAw@3F0M5MX^A#%Vf;HS1it#|D?UvnB}#HS6BVHEYJ z)|`*Hgvr#|_OiOLINJ#F5W+lnq5&uY&ItQaADX0d^2IjW(u?KoUB)nd1tZ|J#s$b; z`*T+jDwGx0#pOcZ_(8U(pYtzVifbydtnw&nnEQ4f z$;9M8<-}iQ3uMAV_os#5kvA`41E8)`BE>L!o3Vf&{hAxsKgWSmefBJL&=5X(+^=U@ ztacyWF!A7%zRv$yMMF8~qXMUJo`;i_6N$O6&?=H*|LJa^v$nQ^>lIFea1HBaOF zhM1~euayFu9BdPA`uPyv9c5c)eOJ2}gtI79-@t{sdjcWK+sF#`h5#Tp^XFGPtd{nU z1E{ZENt_%_J~5>y4+~||6ray*aFjPdb4b#$InBKeF}nL*rg)+Zt6Ixyhb#`(Xjkm*HH`9Wmq5-Fd(y=ZP6TUl@;k}vD6C>@9bP2;IX+37oU&Tw1Q#L?*EDE- zmL6dVpGQq``P)DQT5ZH&ypFE~4& zNTmy42cQkM(&_G}l9}NX@-Zi`KWj&x4F! zEQk4obw0u;A+^hM7DWo1thVAt=Y1MPY8iHph8D=@WNDQD#r;zsZias($VOhPPG^7V zq!|DTg5(4J2VvyfBP0s7B&tIluYB%(r5Ctx6Z!;qsIrHvLE8%&nc~(SukEnzJa>F% zv2X>U$X+50o(E^;V6KAEBwd9F%B@0OYiW9yNP@nw5h1*sX=kA|Fkrr%vc1MX(wEGX zv7sALEb7eKowcQ*0o=FxJ_RA4bt{oZogv5qw@Lh>Q?khSKP4n#ApKa-_B8P+{(?Yy zhm|=fY4Y4vk!(qIbiK9T%W3QJpNl(bmkvp~jk|R;8nQUI#cjBZAmi^u@k!{JU2M{h zLzWYP&9iuVhkSmTJw*5jm8f}^fU0u5r+d2 z#6{QIc8OX&-U4WX*E*qn!_IDw%%*jl?N4SljLhTvt>gS#GlXTqx@|38y_x3_76DH> z!d4p2Y8$8xI$`Vg_ToeDh^uhs5<1~_9uH-ROjlav>xCskw)%;kh44?#uHjqs3rLKh zllkKHm(bMHOtIQK2m`f*f(44At_+-Eop~$h`Wows4 z*GS-Spr)wsa94ep{P0PEeAhbj0Fd5nGcW8`#0GMqg;;W3K;#i(bB6UB$nQ=4PP{aM049T&Kn~_6>x%JY<@Gu2UhX!%TKL*Hh4<6~L&F2oRAF_H1Wc%C(FDW4t z>u5NssbMfS2bGyt6)l|Re(X=9%&_e1hn;L9DT(|r5pK2*Kd()!H=}xIvwy<&#~M%{ z9acbw1L7G(j!Yz;j7izybOI_i8>;VpBnfAF^a65Vccf6BiNXCy)C4{g4Aam`2#j?q z$+P7JynQQVQJDznDOdQG#>Hb7dH#@W%tIj)7sN5{3nA+Qm?;bn=SJcNp%F^!9IhxdA^GOo z9;c&7Ys~Y57tA!g;)Ts%hGY~%pxSY^`Qd}^G<$2lr%Yg4X%fgBaBK~#H02u}oeRW0 zh{CFCgBU|qtYmzo3PgO6;b_+=W@(PVv%$Ucjm6h_#CfW za|?kZ_RZR?L`Pzz6iq^84fnq7z~o}cDVgGii9nlvNGQ!KJ*4tBVN%=ic^H0i=AfM3b0OFC)ph(+f87q(Mq zse!_FWMU2ZAx~n-wm|x(XV(wQfRPxt>YGNg*3mQPEm|+#dyZ1C{HvOYD+VTulC(24 zPKK2n;PKlA%ua!<g$uBz z;etb{(Ry3*Mrl&>J|*H?D8F2wfj@OC&AW#g@_8ESGf;j3RoJnmO32cDzWvUnlS%4MvV#Z2s8@VW)uQP6R3991A+mU@>D|v9I?zSN{yR%;^wMd*WD`^BK@YqC zJL%9Qo!Ndx1qx6{9xWEB^)EPJeK7~5G&$($_G{WN?b^~k`I~cv-hEJQ7fIv5>eBW& z#2)0W7m1rU*|>)EWAKVUFTq~gzx}CYnc8>km0!fkDmbEOO7yt_MMPw%O5w;RwhN)k zac%oWa_z+3>qmM5rNm~QZ}81*yo@2ugyi%d4Rl=#r9fG~f2iklFr)9AKk?K~I_Hk< zTw8wT#h>A%Jc(X|W;aPhX2KAfo{wmDv!knIg*y^8Vc+nxP0=*{F%*cM8@sONkin~V-7C{kt|6J(w;fD?nQ@@zlnEE}!!n)h3VeXN5Kq7lEI*?V}i$Y#` z!o_FaqC$|MX~y6@K4SjVxOu%{V1lOEh=tCWl}lvJr@g-mfyPQJ!o_L&*O3{3m7 zenz%M(S5EF1FR-j%MV$9t{j^XDb?X*LALvAm}}m$4cO2PT&SK;y6+b8{k8LEq&{KD zO>32I3|l@=<~<a0p~ zEQ~#ZEbf6+Yi0nZ+Ewdn{*`y>1v-eD%J|szMd69O5Lu5N$^iaCnd1XZul`m1>(`B>;qgz(UnfGE>T%W*V$n6_JPYwwmM;;LgopE zyKo4lCm zUQDHDJJNtIYgn@Fk=E{GgoK$7%YFK$r+0$U1xISr=*%nmsEgb{TaPnbT-lw(8)g>^ zm3aA}g2-h4W$~IqIt`Z+{M{3aFE<(-UHD%xkB9;2Zz|f}J zSj-4kMC}5KqTQ(TU)-=ZG;nV4*T^j-6qJU8fFH>2KN;iA*ka~^_5pDuqm z>zS0DfhNru`K#k1;^rnj8eK?g`{{5tUwH@%n1gy0A8gb9ziR8#eJL(3dZR61V7P); zGcQIlpSLce)Yx9UN06TsIyr>`RlW+9E;%`F@2T!(Uss^ltB#)eG4$g?;A(u}v@o=$ zYxw}e(IKH}_kHs$>Ft|r9SP0t{j&KU=>t#b+D-Gk>CQTk{{;ivI1~iRZ^8adJ>o)7ZMQ+F`OC$`P%|V)=pCh|!A;fZ;pN&nz+68#W{kda;(J*=u(`kO*@v&YL3komCfQbcIsI5nbG~)Znb=nOv|;yS?NuHyG;5t_QGj7 z;bzScC?MlfkSJIgJOfZkK(Tm(cKfjn&%uSW^Dz+7YL||iHvX(l(#pOCO5yIyK>Z~} zsduMy_B!Z${~(X81JBLnHGdkv`Ih#apeJ|N+Z~LSK|clneZspv1^-ILX?dBq&GHJs zL)Cq}DA7%IQY~a$T&9??@5S+iM}rK_?i>*_<0sf%u#NhJgD%_WJ4p6!7Y-WaDz0|T zRfBJnt|=hUZFVAIV`U_3ubbc@N2dm%xziO=1wjuH0LL$Y#_+`|T)&b#9D zg;r>jZeLhkGLgWmSO6Hh3{>haL&pmtf979<0Z33bniSq=+|mbIQ`?N(8l&jZC3hvS z{%+$^K)Kykv-jwBXWrRGS>>kd0QOy;wuvq?O4R4KJM!ljQ>8U3J0Fvaw}(`mb!u|A z>$i$MEei~#$_PZWWUbTjq=Ee;nK1rDVUP$5bz*<&Q)$XGPa#F}MEjv8Sbx7|UazjCcy8bTi zDb>}4)^!-kQ|*d~P0ZvZtQog3Hu;mPC3juags(18SM>?fo}0rn&llG+U(wcLrhCF$ z)8oLH;cLH$uGO0BhB!bsqO8eiyaz@hzD&c5T8xHTiDW1yQv-xq7Ybq96h%d?W0iwOyW< zt6K8s=*BsCsxrrCn?>3HTSmxTFa56-nf?{rd;=dj?5O5HUy@n;HBk z$AzxxagVS?61X_GAVYd~8vgPmA1fgi1XC%Ss++66+csa3Cb zxz8?ehEB&64cZ*Bhf8LIssEB-+$fy?i1V+|@i7e`f;2iFhu=->eh1NC{-k?CuQo); z^C}6JCYS~V(9pZ5g5^i%%8bTm8&&9UF->O@)YlYbsCipjhJkZkD}Y0*DiJT-vDPy` z#u=6I?Q?F?mvDbe)tfh~deYF|Q!Gwn6>E$x%un8EDHuN}vlbegxFf@QfMS&LlxVA~ z1Bbmo343TNeVBYUC;ZDQ#5w@pt@D!lMOSd?N>}@L6>b*`MFo^4K%)E8;<|6zKkAAz0g}0bKhBM04Cm!I z@G{2G|9mAF{cEp0`Q;hONf-sbxXn*r$2?bnuCt9MkTu^q7b$DLC3-hpnCzF8dAhZu z&R(j*`5#gSi5zA5A3xDB^her*J8cK9p1u$ZC+|`iD$Xni%l`yLP9CXEB=qp>juS@l zxl}%?7+=^Dew^iKyslQm_ zG6WSwG<~N>E)vk>wtEH(J_AFTtJO!beGl(Z$&}johd5 zGTP(t+JGBMpII)6x>kw4K@CP?cQ<^b)=w4!QjU0-<#`z>S_L!+n&x0#(yj97Wm$XD z%!r!52F*{ey`~@VaQzWL~FCx)UY2>L0$PAov3-+uXur&f>9yV?8& z3&BeK*n1VD^a*5e$-vGq(YS$DT1S*%k^h9N4pu0(K`k=9R$tW(788y8y zp&rG@552C;3~4DW;Ycj0-}-4PF6|q0BicsXn7EN|B!#Y*#pl|nje;eeH>yTHEw&L| z*Dj`b0dI=d(+=)jYnhai(sqD5820_7*cc3BA+_%vqWldB)?y(6Gsk0OWX?&vugfd@ zCI8OHcf-c}LgJ#vElgxVIK6%SdcA2>;dA4HMBusOnP%hdnl0JZ?bN)Iz!<2`o({G; z*W*dgRJ88$p4p@T!9OxWIQr&z7jNYNc901?3Fzw`=P1|b6GZ8*R9RSkNvBAmIkO>MhK-^v0o_{o{|UnGwP2Yv7M;$LWO^)sE@U5 z`na9Q7Wy2fwBaUQxN|NMY{4gf)pprNB6K5H-;QPA?{abzQRp+zY!+*x5EYL#P3~J2 z@>zDs4SrEbyUL|ZrWotK`ZQUi=>w)u7AC3F@2UjMan0wsx~tHDQFs&9%PHdT2i#bs zZyR;%@JGEIpyoAgHQvEhw9aHH*iaA}7->RAHr)?fH5&gZScMzGi7km70F>+sCuAxYi5|h`* zije-x50S90FzkGS&+OK4a4>7l3bgnAi7a*Zl#sL{7&IV5i@!N75+@r1U*SF5e3J;Y zvZZq@lJ}bYMCtlu&f!H!xi=q^yLMB3uM9s0AvZ;_TXx=nLGY?#OEK&BEh5X|O@kRr z*-m_GO6&qu;aao^=;uopkPA^z%Ivw3?bK52<9D`=yUUdy55w7@UM}nSH0t^_l?#wA z6rAhDwqVM<*f*$gBJi^!R?92IgjJ%bHKfx&7ieBSVe!;PJ$_07ubHU%bOhPT1;g;e z&*vDz%_L@8sOFz4Wg&W=*;nUXIkD^l77H+TB>L8zuiC3k7P}`LXN)Dg9ow;8*4h~X z?3#EZ$i-f&sAa~5fh825g_JYKTYo0nTzeyB~Egu$m~Cy`*Dikamz}BIGVIbSi8ac*1JoTX#MML zOYzX`?c8unpUSGNv zl-rHG@qV9gXW@$V1dBfQjlv<8iXYB5e1=JFuws!~aGA#UccOEp)m@GpPnSyRRX+Ir znq63@&JjoLuXM#M7^x8|Q9FtXQh+prj0V!g)x~Bfjr+EBGgSOk@QRfdAUl?_Y&qxd zaEk$O8g6C|5@3m&}fKmF9t zjPH3YQS#!iJK$pqOWt#;yFU*P$gAk*E7SI02EL4CMZd|hZIsQD{W6+PS|If8Lcp9U z)^&gSS{826L3>{+!R~02EQ2e~EteiitNqJlZlwG%)XJ&g!e!pAs2Z$OF9ghn%W8&LS?<&x9=Kop?=&PFgqz^~ zetl0<${H5?)Oa|W{HZea7N+}`VwidTh~xh8x(WSGHzyOA)lk+)qB-NGHm%tBx`LTN zQx3hH=pQqxE{& zTa@8C?P7e4ByyslzvN>~T2%6mYSYTbU;M(?2R1c7I9V8cTCdxtDjP%{FN1W>!{HNe z4qAb?(_ViHd>HG$-Z&`f>Yjd_>#lX&athT;+PqQE2zwD>PBvj~lf_U{u)=(;ZW0NxV%e4|HJN%A&J+-=t;v)p!`QuXL0VcxpL2$(#^p% ze<>KTt1y{+N_jB?8({ApM|IA45)R-GK^GB~1ZjU7&+XmaKAC1ATayf}M0=tVPl#~gyw_aDE#Q2Uk=Fh9^apHI z;Yy0zppQM}sq#ER(cWi6|A8PZIpis?QtC}q=#C*D`*xR|-e##?N5q7(gWjx6{g>n@ zXZv4INx?X!wvg)jntMC1AnU@hpjv*%C&;X}x49P(XI zvlDe!s98^ck(q^nw;S&ITbZ3o`^gEd>C%Fq2L}L6At);6xNrWF@V~iojNSxa>`5+s zf$>V2(b92s{~SSoUrmhl#^C4pYfrwhSo&C_6inDMdLml95Ip$jo;T*-^V%`wb1w`b zN>R4F->5)MY0(31>~t72RTRPV5elrg{Z6#uK`a;%0f-lWGA0cx1W0DZ{5@PZm!^Th zC9AUB7ao-oUG~ZD*pV0DotLPZatYtSC`|qm$iH6$2#)+WHsZY-)jX66s6go$v1g2})_|FH)F%U3 z>bziig_iVBRwN3Yc(Pk#xSZVnm5Jg}GeQxjdbvRjWfQ~A`W+U&>c1cOm#A+T`$pRw z=q+6ZFP`bXoWhEAl~p0KXa01uNbu|GEckUAWfZTfE7RY64Pl|X7y4fa#Qi2W=N(FO zPAi|buNQ9MW{9H7K7KSBVr}_YtxqWY)YHSl6#b+Sk7#T1WF6(`2&LO0s|F;vs9JWv zF8{*@vExT>dK)4#=Qv_1I{*Jw{E05UuhX8jN%m?1AwX-_YL>~3tl3Fw*~mze7Gs-d ziO0Tvt1QLwWQ_Sdrd|=$5jV|b0r=}KCm#buPEB7mH|rbXKme=ax{qMNf@Xz=8LTOFUz zFB!E;ry5z&*?>@rKwgo5b$R{S&coBmm4UWs6!x;VHX|oVHk)cOn?k z_h#NyZ@G{M=j0I7@aOX}KNZrO{V~t2*BOJ=`+q3m1P{PY&Dyc6Rgg;dGHrf=y7n$- zULDfGJmbk$Tve-q6KxNaGsyZS>M_qN;UBz$Nd>_1t{xt*N|F@41>5499w#tkMqWE= zVhk_cbi6^{U$n$SL5uqt`yejA)|DqUWQK}6vQFVqq-FR|Ip)X;pRe z-QOnnho`sED=G1^Lkd9a$>)Pcr}xEKa{n*TU^{Nc|3d+ehh;42XZc_9oe{hOjviIN zzF;`tXiW(8iOU?$ob}vR{y{v}?6nKkDQb?@D5aZR&VDIjX$s&noaa58=sOxwdBk>Vl4A_a+OpbSE?PWL2~(=#aItUUe_%J z4dDR^W(Q$<%rO*pE>I84O6d@rj%b{A9wDmu=KZQlvAxUUfC^40rw?Z4-hZBp@Es%Qc`>jF`-SUK!0teSlP3W zY+5S6ExpVs|6Sr=)$*`@mQ}^YFE<&Hlj8~Fc~J$TiDO(`68U^NDZ22q!VooVLVc_O__r>Q8>m_I5 zrX3G7aYf__y@t4#ru2tOM$rV!%=)TZ9({csmG1quM-K!`!6ly8=#q!fmecGMOEt?l z4!`!ybjJ3R*1&-3ysCzPkqXX)*|q;_Mcvn38;c zwxC29zZg4E6suprw~UYWnjCTd7hT=F0(`^eJWocc47~E<-lBi2>io;Y_-XU5h4(fp z>^`@M6^@TyzO`X{#E6Wx+fzMlyqw5oZT0v>7$c8OC)~HK}R zYWo@SV4T7AgP*tCYLb4wBILldyldxrf&AZg6UmTw;gEN?sMo-w04}PMoe$Cy_UgZf zAhw!zs^(#?0@h16glt4Kp?g`r|L<9h<1#7)h=>D)z40-~+l!ZK%cY}POKg7FIRVW5 z%zqpq_4I$AbUu6V%{M4Tq>1A%<(B;0bueNL?y7lC^Ty=>|U|HSQ8IYbTnlulXtnoo^<~r zO^~%xQTZ;4jD;Sb*nm#@vV1RuGD2o;fA6}a_}~{5;C<=LLF?)7T|L}VlJO+l6R>9z zxz=7gHguo!cw_cptXl_INI$Q4MS@-!&LfqyGpZtF73^ab%tg{s&pCZ=$|7Fc*Z^xb- zd4)+~9*G_af2X5?u2_5(ju|=HS+oeWn5qqUs$HFw+I)Qa+<3cei_z=X9laSCK~Nl7 zJL2>gYk7qdmrhl>T*f}Q5YEid0^i;9KUh9CS)i7d{%{-%y-nTEFrgeA>DmYq=Nbnd zR1eJZY~~(3%)XLI_~H~UAct1jMC*Hwr%GUfrhI+ZkFn^0Z^=u29g&Tb*l@S=p+uj@ zpGa$zA_O`vhRyTY1MgW_zsuyG|JG05R)zrM_tPSV^E1wWe|0fiIw;ojox{j@JyYp3 zHs0RO%Gd1poYzPA7;>3g^*`4SXkrCh2Hem7T|8&P;NggH%*&_b>%&=Rst~kP{{g7u%0bJ49S$!k>w*`+k6@>>)3E29BI^N*R&sGWGl_^UzP|S;DoCAFt5sw&$*6I z@d1^gMUd1ES?kqiUSEIB5Hn7-Nb5O@N@LrTv1)ujy_&N`%rk8J4vU2W>~U@dt?Sx1WDA zit#Z07dnW2eq(LxOLO*CItnJ z1?3>a(Iy2s&2($SMJ1Z*F0f{`tQz zUtr1y&*ToRiHJX> zF=@cl_%D6-q)Pb~nURn!a71n03r1pPFLr!4(V(8MIkma)@WgD;=PwfpXB3{**urO^ zZ~1}WazZhG6YWLa=qj4~u3b!!8z`wW;nr)}N)mEr8k10!nqg)fhndAIomyR=OvMLy zQkc2;_=tqlVm$J<(1Q0)F&kg_^*3Kt3oQYXtnsW!lHd(qBjQi)07347KD(e#*^k9=*+I6lPFq(1SOUUnUm4DE zNbTuT9DMW7ukptOlq!8XY9L@h6%hbB`MCqQr1D6A2^1W+zG~7}R$sdEP>R6j`f?;x z_v@owTVgXNQpO0VBrh@~&7@05->Ia2%d7SRgbQ`JZsjc1@6?3T3o_rYczoPBAnb0e zk2%wxS^1r|#o)13B<088tja${s194lxHQd?&V1qo%@l`beSk9N@^W|%l>NsZzHKF- z%Bojw3AJU90SuDDcHXzg3>44nA#nul!K^55 zCtMrORD>lT`NNyDzt4r-w!lcA2*`Oo?=RL6g$_;nrc@Af(8o80iRJ*myzNRZ`4FE0 zg>SYW_qyp7^FIN??**^!#%W?{FUndn<40?ogQaW#IhkMJ34PCwlP7eG_TMlfcyEDRkSo2Ywn7;tZiSnYOHCWcrgHj~n2)TcAkQe^F&JAXG#t!Xl9UO~6nZehLW~{s6~? z5ZywPg^@masK%Wibd=)26FQsVzfK!*%Q8%e044#R_k`G!X8w~Ww(&J>#rx)sic~cA z#NIkilqch_T}5K9ximK-zY~|A8=S>@z7M-PUMn*3X%dd_QiTN!4Y4(`UNJ{sgQ)vQ zaE=XQ%^E~5trcDXu}IRDVog2@e|2g&tVx5%O)%3g234>{oi+#**NENuiR4mlomNpP z*ZE;W7*nB;?zsrM2*A$rwqyc8 zickG2XK4df{}*K0_APvu6_Y9KWCm1BG&>|F7C$@ogNFOU+BIp{v3ckgR#seF-MM!j zX@0hb5{N-I`x;nN)37UmP&VSuKBBQV6Q`&5bBKP=`xdF^2_A%Im)mvvy!jID`a=5P z?SHGLnz_LtE^>pztUbChB9=S+PoLgp;LJ66eEm1Su8xe;yEEl=-=+%ieczyP60PUc z-UqT`ho{=p7JuW+bzpY^?-s4n?bG{0k^gxC)=0WD%?4576k0_tnSEevAZ2lW_K>&0 z2he@<@8o4xv&Aa~d%LY9jXxId_xBfLDW8foryaOgtuiK>&{CgthadG$FF%Y+%pA?2 zsK~vlYj8+q<1I4`x7r}T*~*+R*?Qg<+$r5J;V%%4f{OG24_qU-Z?sAO=www)o*G{4 zxB>bn%pad3uZpiPtzFI6)&M~`m6tp0tv@;=F_RnRYbKuQn$?<*`76`YF<*c^qlY2} zv*%oPy6^0dzAgm9@h&Mjt8APIyKq3@x2#0LJ$Zg=e_sl3o&~9uDit(&GGaNi=+x*I z+{)|=13|zw0Ep{-ND_k0so}(k-@@f#dK@%;L!(Uq9`nrT{*!OA|Lb)a;a6HZrhz?e zr6mg7qsdZDl~gWq>SQ?`OLG9IJpi;O9+34@;M>dF39Qq?19{2uyRpLJDQP472Z|k!+(mc{jtl{`x>)DKf6t57QTA0AaUmP2+iD>fEhY?MD4@ z_;;_$5H|0}R+Y8>uGW$8&dEsC+1i#46TR$D{=i*y>;!d92m>`L1q77@Nu1nSE$sEa zXz#s6Y-9WP;eT6Ic4O>+Z2bU;;XXC|k@QW8qPPBA8BXw*|EAwDmx^a-WaUf6;nFX? z+JaeV-QAU9|AVu1?>XQmHH;Q9v0A`MF#F=_bEW9qH2#owFH=yQYik;n)dw*#Ji3r= zO%b<))iy$smby!kjFC5N?lv`6d_BOF*@Yx9uO;tA3hLm#fe7|Aue9824nHU0{k@yExfIX*+JIjlxzKMFwdo+kQ81hH8krj%zy-qv<7v)5LLR`#g6ToR`vZS-F)N)7yTgE|PM6oE zdb7SidranobZ#$^b@@l*0vc<7jWZ??yZo}D8r4y(Whzzt{?_wkXPh%sr?vCZaKC2D zEtO!3M(3&-S@dW2{}v6uV*g-3RIW3jZAEBQodYYeY)ywMmM+x=W*`^Q!+cun2k!|( zQaXujX4_Pz_DDCU?!zN;r!+*<`GT4_x!O~ zC4wHH=J4STi*h-qXz3_$$~Mrhk;hy#iDo6ykp;V{aJXN_)>!im4ge*x^3`k_mH<~2^Q3NgHMhW9lcnJ1_o<- zpica@m+P>fFv88hO^$oz7xTa}7Cdw)Iyp}JQx>KP1S1&5T#+XtgZyuAdDT$k4&ccU zNEgF@R;d51Z#Dsa&ot^jziksRu3iuC2D1b{rt6vAojG0;J-rzg)VuL^aWoL~V`K8u zAjME(F%KzILzBc)U`o%|W%h!n-8m3$8e;fp{Z@a~K%k(4La)_jLgc#iy z6h^#3Ig#IXe>+Dm(Q}W)rgM-DDd2`VZCgIFX`r#_O)^Pg%SzmfS=Z!omnFng{U`5a zaETi^_8^XJIp|`5GOW>5ll#!mxl*bhx^*?KFPNXL2dtLCh0BJ--@o<5t`5c3BZdn{ z(1ff;>-Fntj#`V|kgf0RKPP>o|3b>c5Fxg6@Gh+ZDsM8EBKT4=QHEbCzFQ^={{-8V z7f4qN8Xc`AOH%8@0;U3Yp0mySno=Bl?wja;EPnIYo$auh=D@8RPluiW&I2!7iiGDw zzqzVx7dCV*O#xMfO4oL~+utCdU5Ci@u9g84g}c^-axXd8!X5Cr@x_$Z=;AU7dtVY} zGKLYETv!@r(nlD%nYAbFtv)ETL(;dd;;UURK3^_YoD;?>*cQ`dyS?kzUO<7Hu!7X~Oy z|E2+cIGj)P4rXD=*#!CZoManz<^%htQ;}kM!^Br!ZA;2iE!W3q8RujIx2<xeIjySG9@oha{EXh!bbU46dfns06nmnN zHf&n&I?efydelQUVD0R1pv7P#0$sHb3s-Zwo*Gh=vlY zCf5AxhK8b((C2$@5AR%y0JAHELvK9i<;TOV+KdYy%{WYuK7uSpXlKac zPoA{#j1Nb@)p>@y|0B@yua}gQlD>~xy-S}~T2jZ5c@T`W&^+z0^N1N6fLZ$!JcyX_CT^!{Q z1)?3fC_Guh%Q#q)aHeO~-6nG&bH!o35ILjD_sa_6^*9y2xS&Ql$UFZdQ4e|l&;GHR zfZSGf4ZIUi(C|!(MwFwa0*<07#C{uE{NIiHGY6=QELhS<`OE_Wkk zL}41F9FW@*_OC%@>}?$|`LI`i>HeGukSd615JFZ~ZzW$VEed4L{G81Gm9QYtvsaH< z({}6*2i&p*Tk2kCTo>D4AEWT>7(8(z%4Xdb%Dn~`-h694MZVi-0|y^SsD1=WUBI+N z-LKuWLHZ)y+pN!QujX>pHDC0~UPAeO@Q2IA>xDrCYStU1pBV#EuwSz87{%P`@yZ6j{nk|c>*iMncT7ABIKVZCnVC$uaL!QZ=NyzGhf2HIIspmR* z`Bf$mLUX)ev6jwx_4Mm@@tNmY&xJsHp}MQpo7a!;j^eK_)yz99V4dS*j~FKWLh3lY z>y1z^8I)A+M322L*4^XA%YGvRdv?0~T0hYxkBb6ymH+fSdJq%#mR2ptdb;F6_~$_5y{N(3DQfOT=h zV>FfZ?ehSOWpEfVUOP$`XT%&Wno8_ha^u&GHSc+?U*u?TH76? zypeVpMMV^eVY$IArnbRqnEZE_#Yl=K>pyShS*Ct%)u1Z(7vwg0VBOzv45xgpv{8JE zM^hJM$1(@8upCpoV5}AQ16ChQChrWXGgca!!w)y$y;iJHcgoi%fM?ZAQdi%F7O04# z?UpoCU;LA8B?!^{#4ULnLrsUkz(Euyr9%F?PXX=mB~ZGr@kfU#;tGY-tKt`4veibJ zWC5+!IS**yL)0sDyBZ~@a=Smv8~8CnT|vI7f-l3^ym1$=n)GFfHjCuKylOf0vez6J z0H=7OX#Cgs8PiWoYGpraPEixOiJXo-QHq$ zZk1fnswd~GCJGn-WCIS(h|GpK!Rm5q75OMJ{(xMdgq}{>Nipt~tFeGXg3=I+G1U%* z8y)B2L|H8hJ-k(Re0gRX~cOt;uaz;O;Ol_pD-us;gg$3uxuG$CD*@T0k> zt*sf`?+RjZpP&OsH_8t=Cqdyb8izxzA2@nT!DQ}r{`=Am9b>SCZZ1p-PE7Yo;Rrb( zdU%pGI7IoUoXq?_6C<)(mfB>3NkuiazA0NZQO|PUEk5wA=LmB?*!4grCjBV(Aasdp z#_;pOBnL0fXA%^4jh%@o9xhOs@pM=Fd(@-I7M{nTZPcYBDNq4;ui;*rVuZ=!OYNs* z=qpq1i}OF2-a6prUq6j~R}qUx1DZn;fEGvcZC?C;75yt50JvfeAVoj2+^K?=?6 zXPN05-8cwf(jaLkdjT!X{L^#A;z<9ty8KaRv<2r|OG({S%JDQnhoTYKI8w6~myXe> zzw}hk4+PvYDPmO|TS`h@P^y(&-|*p!gJMnDXMl|Lj{4c_lZZX-I=*D8>&U^O(i7qO zDye*69eplf2rY33IOs@N`%M_1gq?%Uq$O`icqsSAuO~kH2c<*8JFN=gQoRDg3Ef2OobQ`38l;raB(^tta_o*h>uES(1IwpU>COw~$h zPZFpQs*B$~^s5=8yBU|rRob6tTqC9;q1=uH#H`-krXa`Nz%S-eky?wO(=17Qea_!| z&|`da5zk%)qvngNZ2*NAIb*T`_7u+f+3!>B9Cv+q--Hprnu&^;`O0TZLVZB%y2O%a zOdpM?03+@?@pMz&JVFsrs?2AvY*+KpQ+P@^07tDxIkPiZy_yXiLk-ciL)ACNjBB+m zZUp6f!hwzr_>9}#8AB{^To&-o0mJrJy$2S{E2{7#NuY9X{w=zxBxh~Qqelt6DU6Pc zZ#dw0Sxd#fu$6%-X85`I6ErYFZ1lk4$HoRZMap)Y*NDs@jzau(^{I91xs9g*c^ii5 zuKX?<1z^b%JQCZ#u0Z$=sxi9IdMU~*RPQLh7pSMnq?W5oSLyu;^^|SQ zYny7tuuS0W-Ig={gU6`;y@6z@Id_&+LSq@aaf+vT+5WTrVT`LJsmZqJ;e4$y_95;i zbM`PZoW;ehBv>Ly#w<6c$1%&Us=I?jyX4{I!kroC{X0&~%qzi<`WOJO=gJ(ZtX|4- zLhCgI9I7k*FZq|9OpQPAJMA|*x1&n&-G|oUM{?6t8*Ly$PlHid`pBAwDK%s@-)v{W zVVtNUOJZOT9IjFK;xFU?h$dA-vvaQz09rhj-PLG7emmQ;2fhfxKD&n;HU|M|LHZPY zxomNL>14)4xF9^X7m>ZEcB)fPmwp>Q>`<$UG~a7~37PLB1T_a%??j{1NNjh2eh%+`k44I1VmwG5iR2OC+DnSDbYq z-~y)rYq!wH7VgD3ahCcDRJ+kIuK;r0U#`Yn;gcoG`H7@U7Tdi0QRgZnH3E?RI)tBX zC3r3oxo*2$pcHaGk6!ih`}(lX<&32ZPGuNEEXJaoFRofPF4rk2~a&p__pPd(r*oBy;zjQh>=&=rq9%ylpYh5=k5vrVg(QArt> znt_ebMvl3~gcaXE6lL$urr&}Oo>6cXP->KvRROuO%UUgnw|9f-;BJfjpz#aFWPfkd zZ5H5WyFj&waOtH<3TS0Z{Df$&XSg!)M;f6CRfA`&)FuvL41?lZLg%Z6e^i*wuxhNw+RHNkingUeDL;j0IqhuSX zaVW^??(+~-i4C0<9x6-wflV}*saj&>I{4%swR!r~CyLW^Ju=~HZ$6{_{emt1Tr%71bBsafYa&RyfIb- zsDTHcjF8eu`?$~oqM)`d!BFYQzJzKY(AH)D?B%XJzu~PZO$nB)$3?|A!_vVKN*Y+f z6W_mbT(Ayt*;3LTmrO-%ULbrvrp803xqr75@wrCCb2BrOp$CI2=g=xC`Gus*CpSd` zSo@Jth9c}6*RxkqYh!s%`{!cz2)MWx9-5z}uP>KkW{BscW&nFBwet_SHT{hFR(03Y z`jBvyy3h1bsvnZG!Tz1VxVwF=$noCy&m4LmItW%#i-ve!vjg*OKF_uf({rwsfs59Y zp|9+Fr!CQ8BO1OU;Kqd>mhAn)pCj*8blR->k~RT**C3!I9G}9UJzG(dFOax*pVaOO zinhPqcY6iQsEtLJ9unF#%R8Gu&i<8~07aTN1p%<3l2eXIRN8>i$Uau_@ zupAx1A4ZHe0rp*hM@UD#W~pWB@z7iV!Y{+A z2Qm6JGqLnkCU(oKS0TS7mWJPFyMfCassT}X`PN0fuIn_lZ~l6t{IRRjDZgQk0daA< zP5GR@_Y1;@mSzUjbY4(C4ynzs`s=!0QoMFF<0CAn@>gnX->}#BaCh37O^ToLv z%CpW}k_y-0j0nXq6``Q}IbJf2{Ln!G=J;?|vF4cN)OW>NO#L6voI%Mp8rb8*jTr>2 z8jKhp`sx>(_@rBJ*vH-F_pTp>bZ6HGocBQ4rZ8WNfS0EAw7Vtb+q&fL0?)Bb`}7Hd zw|;`sJlJGhEZ2@eB)q!s%isJPrDL!S>BNXeN^^ul@rl=) zr%nbKAteo4G=gmaScUHWXI>21b`f*iYO0H%Q2Xe5Q}hjxoK|s`qMPr{?+^rB(?;^>$RzF zcB|mj{n>!GN5DW>9l5Xso~-4ylV=4a{3t)iU7CS@!btO_-|wj}V3^iv<&9Q#LKi3z z5uLLO(K9wC=VWX?1i7jvL1pxrUnlc=#@$*qEbN!d=-V`6htxrkE;@ zD-|Jnv&s}JE6nxe?q(&)(VoSJUjXo70v_S#hyLDQVOrFkv-^5m2rS?z-$DgZ*JYs# zuT0Zi6LndJeASmFd^%zexnHCQTfBHvS_z=QPf@rp#f9U5e%p6}n1EedyNn=aQzJf2 zvrPE&yuJI$?kjK4^UhQ%F9pD`T#;A(qd)sbz`Vwrv~zm8BO2O>nH}_{?2xtS@}7-N zmrXc1GT`p^tLK)+$(G?n<0z-8Lvpn1;FeL<7o_e1M1u+9OF{8rk&uO~-I3+i{h$!` z>M$qLN|R2$xR=wZQB`9zCcR@N=ku*O*w71que~U}HD>iGILklu2rB;D%;Zp!&sDR& zPIYG_9U$p4g2;hA_mgK<^dUEYczofWE@9^!LXp5+Ls<_51lnD`Gu%He%>yIltJ?3P z_1-c8t^$%f-pJ|XeUtgSFZ%2-4o;vZ6td74b!KAx)u2Rl9h=}NSo{=lM*sH*I!$ z@})^Ll&I}*_jB=qNI3M)-MIy91`v-oxA5}TOH|XMYT&qDAwK9sfZiK|vMX=oRqK=%Ococ+4|B% z1#(^=WKkpoJ{d)`iq~BmF2;D`(V;I!>XcU)%f^eTaD&K#)9&=$o@W@o&^$dC32AsB zPqOM*7}gJfoiAG2#}xUQkoWld9k3qA zm|E_|U-+Eq0xnuXpnAO7TFkVc2UhFRYIuw1_Bl?mX#IVQCuKKQ$TJ$Mul0!>6D;6S zK)2MW(}e|&H~}5Tir$GTbnoZOG%4;^KqB4B~pN2XSCaSi=>y?)xK;0pM%2S5jJNyx?- z*A5kfe@I>)N3#HqTEF%ycA<*2nSlq?E#AzDeC9EfrFpGGQMlMRym8M-n_TG6xpzCPmLRO}@4=fuYjJ4}Y2rekC+t1ZAP8=HJJk$n%?usO8MPvE=q z;Jvc)b4W$q5nxcaZz{79zvd%lWE~eCg?` z#mWz9pqEfNYw}Djsa&49&b{lNK7&B8Rq^r|7hq>X-UtLM9)xC8?XvvoK<&=gb0q!s zT4#LNeawx9jSaGJea@$GxzylVJMmG9CDQZCBh|+EXkuxu$}4U5^pxR&tJ%@n?{lhd zYwH#zn+$@1dEBO!gym~_jiJ~kOj~mYZKZq4%tABEpF*JN(AeaFkyIapuVaif=l^!$ zY`c0f(8j0g^-lSQQX|Om7rY)DH6JQ+Xk=nsT!)&>T;V+FR>ZNx$8cZxH9pj&6A@I(P4J9m3zu zH9DG}Hn3un=+iRQ=5w-Z*PqHq7dTkl*nIa}#doeQ$Qsy2{fDVTi%Ml19^bcySXu~P z$i4mem3`Bx$zufy`Qa!yX_7wpyJLEpZR<)UpR~z5zW+QQ&F@CS+ns8$FY(;*hNYfu z{)aqQZw!?~${Hu1dKj)LS{qn6;p*nLj*5T+@ZP(>n4P&1ETVX zG~|Ougc~#T4y}9i-Ws(=q6>RY{r-yf{*Gyf9$K`oFDX; z#HJ+bKMb^GfLSgr&s)J|^)>e1;(PU5&nOEve;5#3h^xHz6M$ zDmC7@%2+$N4x+^l`XwwJ9U-Tvv=)@wrqd#p{lO--(oZ^Yx~V{Tub#w3_3g(y=MY#x zltQ~Q{@b6ioIN9sgVj{!_qx8MYK<{nKdjF>$%|rkV^mB2oZ*OFST3>0y4qM%u^PG; zw8yXgsUCzO(_NBrM{^HQN-~q|l?%I=>9a-SN$qw7J^|63k0D3SLR+!#Xh)&g?@1bSK}7W1 zg#ujLxHGcSSzP~un{;g+)sBtm-uKNcHmuX}YIiN?;C_W2MC(FDEM36P@|nx-BHgz9 zq>c3#lw{P7<(DGe)KJIyV(Q%5%$(DT@u8~rQS0*vacW+a$EAnhbH#lHE5oToS$*Y;2|iej`)|a{lcfUQ8S!OG1xcj!x^bl#yd-YBj0QEVXd+xgQT>HV2XQJ z{0MKFqWVFaq6Jzi?=bu#ls|Q6V%*!KH}OApS}7lBxI72X@T+(HsB)br$nw7AV~U~b z{vAEiQ=)0u@Fa-))w88 zgcR!5@YWg*ummuOcu^Ejz<>q3h~0%FTdKm9=Z{B!)$b9-0l0MH4?X;;(X1Yt>({yj zjvqLv+PJFf*cDgLef$^`DmA-N{Y)KLDK~&=RBoDP<-kA6cs=0U7xa8CR$seCQPYq| z;}p0}t;!r{NX2iIVN7Np{QK)e=Wmv>vxa*y2<9$@Gn2H6Y^yuU+@@m~{i zR{1T@3gVl=nZk6bFu%p%?wu3u`~DADgB(fJ$yO$FQ({aku+{Ow<|+o7SQ)K2qWt7r z+s{_HEaO#A$@9J=urcD)h-OTy*FBa)?ZIHgOImvDz{mV=t#K1a4HRdfl$yR6;Q}5U zutgjieF822hebUELh`xzd8%&1S=F$ha=>pU18hQOZO>y9rT&^QYcC!eUYPuNd&dx3hAlIt3cKJ2lGZ zmAtJFTvzrkQJ2j`(>hAF{VUgjz;6HN2Puqj9@HsEeuLNs&85fxlX!K){ zVy5DHP3(6O8@F30M9z76POI0VSC;oNALiNNFj7WFyZsJl_?ffkMtgXp+bIDr`V|)< z67^H3Hi2gIR?^C<`?_@=VLl&|X**vP5Ax6G7i(CSRCR|9KA5|+!cd}=8+F?0siEJ) zo*LB~$0xiwtf0m2=g^pZU_ieX);G?<*R|!8JUki(oS9?fnUa|9+*W~=s8c3-b7g(d zY%Mt1_f?U>K*cs8b~jv^Cgv$d?i%s)=hdF4o95GiH7rH`Ns7E{E*Ws<-~^N@9w&bA zt07IqpsBT+NRV>m#vz;ZZ(kJOJtBB zE7mQ#CIgP?_aW*gEuv?VyaO3J#HD@fex_Y1JZ!Rn2t$`HaE`Q)w--d2J|_IKP$`%M z8aUR5vXkabf=MN6?G_(L46Va(cX*j4gPQGsw7g? zs@-)&)A|{2s@{NH454(f%ICzLW|u#ogjAUBMT~HR{=6!DJW(W>{ibqL?P5>pP$nhm z;l=95#sj_OL};jqRB`yX>Fx=E)?@`}{%Nc<5InazH_<0938eI$_5_~pi^Rok7sX0G5QdN0sj1xIUz2Z>eW48MF_KU}Mvx^J4M#r^w z>-pDx4;$g=-!e4M_lV=ZpC>L_p{43^*ew=p(55nn@@YyZw+XUY91GLHtaQ~&8&btz zPqEO_BUoD09&!tpN7$>-t-tWX^auOMpAli?BFj#bi-Zzt+Uo073=B(C$-oO1wgaLh%_;>=V?}s>Nl0plv=UskuLW&s2 z3n2r0!y8kc@h5b62a{JYJIQ`Q3u~npWkV-vBf!c8dN}fis%c$b)HH1nK!Az9U0n|! zQ1FSeA)G_d&Q;3)1A(~L64tSt^YZ7PgIqR&t?D8 zRTZ|>mOS@CqG=rBNX1~UL)DC4AA%%B!O86Qe{JH9j*w^X6UUYCrMX}UnS6=R zdRsKsn0t)Tz}1s?rm{V~=>T}_l}m*i;_ILv&ky^ypa;j~9FR&U&UtyrL3x?@LZBj9 z=D^cb=a~6(5;bjA1^I$QPDc~w!k}@fFJ?w06z;^F=9Tx09gp5&$4R1@KoXcHd0WS^VaxX3FM5@wpX;$bEu8rNTD@0ZMeXR(2oJ`}(yb zSGxZKZji$d8>Gg9NVWm{d^z0SUB$*(`EMd@z8t*QjgG)IKi@pzxz4jK%5!z*M*zCl z)29VYd{s!JkJm--a|owALP-EtziY#(;YwR1c)|5_t>jrH5XpwKUP6vj28f^>>ceDd zFQRn|dsfcMjH_KCsCMB9aqTrebN2yt^(Pp)qY-klo~t`sRXSqJ{V=gTyo%4`G9rgr zSXewaLz6vk3%7n*k}tVS7Ad_WqYfK>slZTrXD1#b0(zG@Qyh0hQVI$irX5w$_~4Yrs9`o4b#&_+SA)Nq>t#!CF7+5qsqxvP8}~@tuPymxb{gY zHBLX`e`RE(%ZQ?cJyawJkDP8_7@`-5wyIzIVq&5AgHZAI&Yh`PY5Scl#h4rrVSxxL z^Nbs}H8P{>0GHI=^)%ilbgWppD}|+irWjq_pg}I}9{`^;k~ve#){`nZ&oA_j1}#kR zHSE+-GvmojeV%Heq6_=sK`a^;UGwF#YxSh-9=(KpDP}nSZ{5ocJB^Gt685_pK{e$s zo^M|BZPwJpp@cAUY@qD_gS$kEPUYgbzJIeW-4nSK-?7v( zorb{aWiOJ=Ya+=Afg7V70It68Gb&3Q7kp2B-N&*YEWPd8R*<;{uq2++V5fc+nBO)T+u(1`k zF39Vorta=q4-Jo|jGD{J$(58Ga|v}T0daSA^-Dx#q@KPOWLjWXRBbx6&x7~92?MXX zlDazYyLXwB8t*NQ{#ipaT~H1hCJNK?I$@pq++61($=p9@GGfAri?QtS^hc#N036Hk zIJsUXqyFocv(~g9LN?!8J@fh{(scRun5w5QYXnIHA zH=S?-Sn0d?Kux@?V(yI)bSzJ~qis5B{oEqybDgJRoL+-iHkP5zU|kK?PT!lKsGM1ylhwCW@D4^1AicoVF92c>Z2Lq5bx-fHs5m z`D4;+!iycWL$iAFnPaR1qq&`M#tWGc6JY5oetJZ4|B!YrC;3jZ;lqT(%w0O_A{Wki zY;*^beugnFwjou=_u`N%fcf$ZUJv1!KQxogKH&LBSAjP@t4@-4)SoC9xUP}#acO@_ zjKnpp0W4F%0L(7C(Z7aOyUc}S06SLyru}b0NQA+W>Bl5I^nAoSRvuKZTL?X;PJ;ZH zV*?{|(}j=6z5Wgh15Vp}Njn*MPL%}xwM-4O(yv`&p;c>uaRr;0+0$Wn9rtZG9j}&x zoQ`tbiAxr}Q9m-{yAzWQM&76~sa_!o)e$0ps$!%{*4x%G^nuh8$K*i=fk(&3(*m!}9OTw|%YmuF!CyxiYKNP#uZA^L69p)ehGgOy2c|LyF9x)c{ z`)J2y!E;_gyIfNfVqhfE?s6#$m^9vQXVmNgGwR{E$;y{-_YgzT;!%_gQAj+j3}?{i ze4cuUrOa^HPsi;Oa8AkVP|0_a6x~}vw6%n7hOvf_Vs8{fhT-nACd4kD{IzefxSu0N+M_ zdFY{4V~KbI9Nf3M|E460@>euaU|5$CR6DU;T)})zNq92^nl5U^kyP^5<%+-oK7AV| zP95zd+#ky9r1%h2G%hs1KfHlRlFxSSl7 zr?zPTTM~A$n%G@Qj1~Qh;snaZw#Pt@k>tucCBvTR4#V1@{jG;1_n7r$Ku6N zy9e$K-#0OK)HB5R5+V0zS(SC>dgAv!9%zHdE5L;9xbG&%f}4GmiUJgFFMzLn{!W-U zlo7r^c*GTmHB(s{04(xt^2M$0rWa0;t*~@7U|38w09mcXcb-%oIS4k0|jCj;Zm?F2jfCibz7v!!HlnKQOO(7H89Ys%*WLONBv%>(mNOB zQ8KdEg$Vi~f9R<2YaCY4HTdp%H}Ss-Dr8NeRE;@ynHvBM-E2Mp@H<@O)wzk2sS6|cTdcz6=D_M-A-Z43+E5u$*7_I#L@}M;ae`?UG0-?PPZdipOdzo_etKD*lkW1y+RK(B#G33)D8lSOf&i`mW9l2D>kO2xW2>>z zG`5{IXl&a~V>=BS+qP{xY3#+wgZWmDmJy}1x3%lN-T;S!A4%JD;u6z4+jsV`)Z+DMgEl?L za9XePdU+rI;*Qc-6P_-g$r5@wV^}7}`Ref}VDWFvpYb1dHKmy=F=q35Q-f?WEKTuj zo?o^4xCoND^0#N`N{DW_)fj+HJ7Xbyokbrn?mjCjYTE7`J9emd@@8k9w*%${6DXA! zwH`6ut$oj%y#CsZ73*0-Fl=(PE*n7~vvIvX=-G36b(1%r(;PGvC&ew%B|H+PD+usg z>T_&(9ieZ$+d$Ja?|F2JPGG2xGlO1T_wO(Tou2q2BhFl%WuiT84ePvh@%Ga+m^AWm z#a((6y6^ef0Qhod#~U3Y7qWL7B@^sNNJsMii;n=>zsSgaU#1?TT&oMz&x8^dNBLo5 zBGPOUP-;{lFZRGbWuJ`ZlLfEVK@o)Z#&pN4{(;1q<~2060%25rgFklF)dkb@2VRg$ zPd;}H+qu;1yXi#nv@iLU<6hvAFi<|LUaRQJE$|3{D(or0nUd$oHvlq^pk@N~YIcIZww7 z?Lbq$dLTJKNaF6Ui^qRVASk`Nq!^Ft%SbuPCL_ns}ng!`>c_Tkdq-TDB5} z#~H_Dd69k1IIB5BgR z_fMZQ-L|+O!CF;TDzDGKVbF|*BMg@vjv-pc_7Ch#F}+_spcErrH$^`(XnM$GzB#P^ zL|?aqj-BEU{-~H+ajS+9azut+wP+(2-a0%a3I)Z>l^rtg=Us#Cx<_V+MV46AAY zB9=nEn4DEaSTgTdu7yGdGxrE7Opg4Pt657M7zLmSaEXDl)4?L&XRyxku}36dWR4%K z2URR5O*Q2oV$mh4HfUmOd(e&8ZzG(b4bI;UsA8z3vhla_6SJ_=wGCcann_Dm0*??k6h4O^)P9N6t=7U;08B9->u^QzSd63v5;+JAkW@~BJ;QL6yTtD9l91&F( zNG~9zwc4qU1%={fTb*Y9yg6n60+qSA^gQRu{Kh9Fsdc+7AC&uBz z1mLH#^6GR+Vql2nF(IC)CNdgY2*n?tss&5sHM?zMdhSN#F~IO(W%i7f>JKfF^e$_8T58UnoD z-P&ZAiK1G}AHvy7B)p23=~qrekNzd!hWibtjs_~l=8Vi+zTxx6t8Ep=V<>E=wt2*2 z*+|GRWWjA8ae`Bxs~xH8(3%}@;7lH>`VF^qxA05Eeofy;cdp0>w|~Wjuopx6Cql;S zw-V=BM_mPMbv2S08_yTvs|kXv-Dl6j9OY5-W7lT9q|d3>hg^l(cQjc$YZ}IH|7A7$ zY8M{ne<1@80f#ncO7Vu)W#jmT-St}tp8LK)yh6FAKy9yDjbO2bCuB4+(RMa95olDD zek0dEmC1Sa_8(A@6(pN9rMAt2@!~69adDINhHUc+0<;ZIA7CB6pW3F!a6W32X!-V} zmaXAhiqnU7&2NUTXQcM^-u=U@{;Na1!fWO3I(a^^JCe0-fq;rF;w(8Sl9%L7iPt+k zbknK$%Y|DkqmENm^p(GA{F==^XqO$IOlZT=`$eap5+z*AjIndgRXP<#3xle37TE*q7OdDjk5Lz)yqkz)D_l+KB}|i40D3 zI7rP(%;d44b(`V+n{|?2tV-3f`^C-Q3zlS*e;oT-Me}>jSq)j6czg9u#Fbnc;3LtC zfU@feVKF)?+1a)MF>2Fn#GY)xp4`|{H6J=OUjQHZrIWwmqnng8pI1l_3_zO*r&#?p zJ`=8A2uCtX{0!mwqA9C5QLGpV}V>M8!LdV{ZNFmD;+-v8whqj_3dBwG`sq94LfSg^akq-*MQmy zTkp?w>xdO*euXp!8F~i~L+(ow{qd0D^7Mp@?TvHPr#~ha(>~`Y@MV2FPmNc&`LASY zzW4?`RR+o7mgI3uo+5D@Mc~tuk1175le2l_<*>mnhdi(3imEcTc{A^-`5Bc?BE;jYSVsL|4Qy~FzaO&F+5I0kC?O44Z`&nbc(zB;|*SD7Czxwg^ z+MoQKwDG!vvv%?P#Tzl~>=MxxX?>Wb&pKS4N zk?*FAt`F#3k?anz7D@2={xJaq)AOfreB8K>Cvwdn^dY%grn{<&gX~o35pfB_JJ0HP zf!DehX9BT0D(@rMuh~8Y3kFH|>Fo9w%Vt+o<@B}-=ibN5^&!KT?$0-gZHOE?;ntV@ zWxlUtMjbnI)g>BjU~}NEUzl$bT=>|5hF&_Czl|O&g~m%e!ctVL@AjWohFho@DqGxt z>|_Wq6@6QD3Y6#t#l_9f*g`@=FtD&B{QSAg_tez13CUVf!P=wI!4{)b49Oprr>aKv z&%ROp$z^5KKu!HKIcek4IXx{OAxa7r5DOId?QN*9U!}1T6wPo0di_SeIT!y&{@vy* zuqt|0lX2Gv#Yv2oG9e2ACcQZuMAHh?vnW&y7mo`^B1?Dm2Ov>W&pcP@i&?Mh*_?8_ znsu~53%lAK++ibc-cy#W3d3$wtw_vxl+h(tp<&?S$+Mt>q|l`D6-kPc?`)Of%#GW8 zRnj{tSjJ|8A#|@hsglv^*d@@U9h;<7_N>NdnOZVtuPuZN4rwX1JrKTnibq=+hc$e* zh1N~jbLV^mheQ6}%YWP`Zx!ofNjp2BRw(H)83Bv3D3=C-xB2kBm>5P#O|{7uoUDBj z)G_t<=;z#e{zeX(nc$+lF@NBKcCkCBeB`8OXB?Z?PB4KIL z{^|j8g6Q!V#;jcSh~05I;;xcyqL4Jap3T#lq86ysX2SAsu$L^b`iuLEruq*l^(+6& zcb=bDr$)0~HXj#DYXS~2siRbEbcU7>z3cFV324}&*ao92A^ zmi{|()(B<+wLmF@<9dN*_smsrlRaZ+& znsyypVPO@G5awn`NirG;$vwyjKC2P8_lgut<*5@n@uS#XEsrS;47LMFQ(j0)^xU9T9+NFdlzoR3gj+q5h%KiHfn4T%t>Ou$hsq88s)Q77nI!utUz4 zG`Qs74$mzeyo|OaQ$sUflltV4o4lk)NViVpG}~H0h{qsX zAmaLk3+(|8J`&4C92jQmDT!w}x@twExNmf#B-P%RM7Yp^+(+YQdKx&$h%Wr#iQso% zDPOU0mIC?0F*0X4*h?sh{@g_oDs*bIX&jW*#n0Wx1wN<(yWqyzPwVG;y+mAc9R}y` zTn(ZpmWpvy@0qSk1t1FQtWHw#7gn=Z!8TUj#Q~-5zQb{x>Mv?UBtaYxbRnHm1vOHY zKi~#MzDW_7LS>M@U%2!yN4vYcSkSKB;!+42%pOJr&=f{7LB1Be=EBBhl`r|sniZCy zTeJ!wFzaYRXCb|tiW{s7Tjd=2p`Y2SlPpmNMZ^aSPQjvNQg^Rs?H2A@OUUOV{eCZ! z(h1WO=h8;plFb@|J|Dw&D6o^r*gl!{ObjX$}seA2CR-*1{Ztqn8J{VNrcJnG`& zFi^sr`}>$6NcdMXNqFB&2kv^-&0p^F&O#6ERNS%xt96=VJC>8bc=WcWT(pB1&P>OK z(8KiE1G{JV+*{dn2-wnsLx%?sa51a+`|=t!jQ2;Bp?NKDFNC_Dycq!I-+nl;A9m5o zWbt*AWA)j7=9gbI?AHD(`5c2vSKb+7G~HLy;ho2(gH8{2LGCHozZfd){AtbMK~{Ao zjZhD*9IPV!^{%o7X0Dfy$72_t@qkQ}s^#u+Q5A}Cfrc^dbDE%G3B0Y~ho*B1v(%PO z0LZ*0*`c(=ej7a0v-V*$Mk=jFvW%#U`*$67L26b;Gf`X9D5<2(YI2xi@F1aIqWOZA zsz%ML_S~x<1kdWzmW?7}!zcsHHx-)7F@} zoIOvT5(XJrV8xvrEPuvt#+>`58oh`K8v(damos;qwx0B#QgQyhD$I+(m)oBe)6l=} zXKC46Q+A;Z$%g}XLD=bEIL>#H%l$Oslm}ajzWrFbS>v$-2ta|ZS)VNc31hGaFQC2w z9^MP~!4O>P(nW>Sg0L&t0D~UdDU(KwtHH>a#$`wC(m3vcK<9XJwAHf0lLw5T2_jb` z2~z!088KlI&$m-@wBG>p3L={-jiOl?+twc_8X!tR;OkD9u>X`5vx@Iod6|#%HO6P`#1v3LVH-=ypS9$*rO;hJg5ZO?77?*za7;K)c|AZ$9EM!`KAx_BK9VKr%Z@p|M6ns!Uu^U zAkbq?ld}kMT+BtPc|<&inpk9AUA@G5Oo3AA-4Qf7H{=-gKPLyi76Bp9C0jYbN&O`- z07^l%Nr)qz*UhcX2N%y3+uFPZXjs@*Wb-EA!7cm- z0qrOkx@@FVtU9Jf3RVAE4Y{VP?qAv#JfWu3*EW$3Yv0!Ll_oim4?6UDkHC(bs^dX* zZDHZQnZfr}*y)%QCX2PJ|FXJ!XV(yrPyoJnZ*M;y1?$xDeVXeKmDirPFq;3z{Tn$( z(wYr*_j7DokQCEIC)WFNvFlzgyuTej;8NG&TR_2l+S|I4r+Z}{dwOf;t5{V)kuUBB z1Pji%?hLGp)IgGXo^LFGQsK!gxty#KJQsalwjdd|+b1r;h+=_o)4DN#cOh~{w_|4m zIcWOK7$%fUOhq37)V^wZE?`OZ?WXIZlIDfZ`x1H;sd)L&g_A*P!-x+#ur=ZJt%BD` z8g&&J-SJ4AYk`@7Z?*3{*j) z#`JXK>#~VtA((JU6meykWqH62+!U;thC4>b(+D}RjMM}WBD7R8fHVgOgrI8q;JyPu zXxX=})KXhv0i0K8XebGJ(Y_)=_|2={tTjrq zs;ak{p6M=yOsQX^Tnd;BSktCY@AGIP|3zPeib?HT3pwQ#67wr?+{|__fJrj3q4NNY z3*@vbq3rKt){*xsAgc=?(RjIXoN1hSzh2qcohQ$Be=rX81&ZpF>ByEEjg00K=qTg1 z80C7Y|1k)fvW)@bxkp#@Gur7ckUW-2H0eJeGPoC;aJ>XA#eGRg$MdPK?a?~)FYM`l z{hJZF*=rju@z~5HOe@{?vHv#h7&(nk65N6>XbqT&W6^O zMBP<4S>U?TeHDh-DrjOBjGcYccVp%AB7a;ocTSf_1{>r z>o`s@_59IuV#G#APqlPjGjq}x!_&1jg*suGYio1AF;8QxXw$U zMS*Tc+gd~O7n2C)1w;_z+q#^sO+XX*9LHwr{jpGLxrwjtQIr_Rx@4hd_Wz+)eQ?q*Rw8fZR;I=r{Uc5M zI7|F$9*}Sz)cTQh=p~6fGM>5*a$!zzRr1i#c9uJfbIZ0jX;kg6A?wpSBg?c{XKcH~ z&%+iH_^2yljm~NflEEz*g$9pP=+9%jtl@bB>Q5p^@m)6)STk zBwY3!T-+crBEx~u%S6RnZLBmOwe|eQAP~ac_kP8@B%!ssvZzRbQ;(=(8?fduvvu+m zT?G$M?>ofn$d8oKxxdxj#Y{2E8hvs$3lIls+=Q2>H1Elmw;!>Z0t1vU?}!y^8K;dE zfDBM9Cv5;=|7w3I04$%4vDRB!5z?^lHynFvHBhA-8^vMsaVE`QKsiOWA)8<+-&}X- z&~6@S6uJS8z3z)K+M_N@-NGwIV3km*a^Bpr9Vh>$8?bN{(U5r6$aU@JO*>FHOJ83 zO>Zv4Tsy&;BTJnbUmTwOA_~8ABl&_e%TTG<b-?#g2OMqZw$ zqi!c?6~bK*X%jBhLWW5F%4}NUM)q-ss2=XRq_Vs4#ml1MiljM~d&25)*4=vLAnQZi z44|KXT{@Q5 zgzl*Y&=XY0qJ~8w)!oPCmLU`OFjU+lqjApKPd-B_`87Yd=q#cS8wQ3QPmHnw$x~*K ztdRG;Z;X>5E8a3cFTdse;8dYhdCmJ%`vwk<)A@y!zWYw-PG!M(^RZ<3MP;to?vZX$ z$?Kes(n-^>>*Kd&d~7E&|0n@8vxXV#m5Ct-z9gBLYBj~vB(!{qGWKN~#w~pHg6(i@ ze8_%)9MhT;olbAguXl|abBp)O?hmHy+ev=3%*pn2AtgbyA=J;+W@WEyx`X7+K9h&D z7Nh4arLz#`P@i{q^xm#^s(;oMKsA17rR^OyyFUPSu8A8q%PXQH6nqPgU!p??k~d># z6402*Ca1scQ2#xr+yc;49q7?Mo?{DZdq#ptz!^VK12Wiip#|ubduu@F)|c@eTAMv*dLlgoQm?Svk7PrDj(Ui))qg*1bUEAfL5 zoMsXz|05cTVWY+nCZ`lbt?M@UNYJuotKkwEw7CAP*ArETcAO;@6$Nc=qvbR*I%2qh zwo+H8h#%GDeCWWPnUI*MpnAX~j)spft*D4!Zk!y60)k6j$i8nWu; zDHX^aHpbIKT(DGb@ByVt4A8nr5K=kATAW;oG9LQXrf%6pJN=gYwS#bJlJ4vG1p14> zGqYn|ep;S2WczTe+N|38h*^oE4mzT9wEO)VV!RNsJ3p8t0hw*H7bm#|_P9IfJYDu{ z#bPD02)Xdcc25+EwdL)03U{sovycK=Gf1vCC)s^88S@=I7+Fq7KNw(vF zjdsvV1CT0f2RD1Ck58iAi zeSh+ho#Q_Gj~K^=kCf%{K{jqW^*C;!MB(^6h;?=UD8TI7Yxr`1-tX=Do=!L-QL$PR zS{IU?(>${IF~W5-Sg3NS%><7vJZZtUdMBO%w)=vJaz69LOyzG4Nq|CGLQ96?Fgx(QUi!YI zN-?DEZbB(j_f@rE0|3m(=NOTi|5ekH&rW$_wwtPB+r@Ch8zYF_4}JJ^;g?`yenFU(MT|{gbn(bQ%TG zOipHhP>#Lv1bcO-^V0Q?%QLVSv^Rr~Y~k`8yWdG#Mh=0KIA6Y}wfOE1Cki-q2gOZxu9(d6cD*bVQmFBmDn81Yx^xn7{Gi{^jH zpII_gOACX8$CQFJF)>Ln?lw`jyCm{Y(d;9n+0rY-7diyJ)W8 z7p%TFvyNozPejuV@HAEQqGj&t?QWUS7;aIY&WOg1?L7YYLXep5;7nw9IS8MK%6*sK zDdd3u1FovSkc3gC@yy&;e$tl`AJwa7ajxH?h#fm&{=f_;-k&ZiX=wC@VffY?2F({r zR;tcb>-maC;Y)aUaPJO94jZE`YRX|YjWVkW*ngo9$-HY25egV^{t6Jv@-{PwQvaWUcd%*C?9Sjz)zXujZb=*?%J=!H?7oUEjXJp0YJM8rgOlfie~nW*rDcV)nON zb9;S{UT$~weZQnmjBB^)hKv;L*ZE8hpWEMi(6TX}4XmZrtjj3Q_QlasW&d=YzBMei znYRnG?Iu#QV-$!Y8k~eCJowvT*q33`=KX-g_WFSK@*b_7lqhDY!lreYF?jZRnP79~ zl7BuoMoPR(OI>7o?I2{DHA@vO>?kctiZ&c+u)JA*GTimNO))EmRIDcVNkLD8xGlna zL*!p9TL4rZJ2p77g(`KKYwO1^??bmaa9ca>6!vP1IWVyNe?v%MC^|+hc}`vS#^~{; zS-_Oswi3UoP(M$SIsi=GzYoyuYC%PJ3?T3)xzg_o6^VF{JQlu_wX42|pPgtON zK6%qRmst@22ubVn)dDTfyQDW#*WY2RZ3#H!nbU zS4or%3O%ZnLEXr*Ze22K0$NX;$4zxi$AZa2z41e_)ymgSG2eoxi}}xVT40cTip# zRmU?!v3u=)zO3k%I>vP8d5%V>JHBlO6FY&9jEoc%6vU;bD)?G&Zrjy(zp^*kZVrVI z`S>Z87Pww+MBpY){)x@U=Ht!`g!r7YhaE;PZVXmI&X#iSHSicpJ0e_ouvq{~z%ZnJ zmCXMlgC|q>qzgc?W^xiH8>p9|DuBNkFwOk=JdnL@H@xl9jU|kq1_2yC4)Eo_qb+o< zfPxXkELFMaR{afJQ)XBi!Uh+nG+(t*Tkt_7PnG5vfPyL#FXBFANz{1TFMm~XfyKk< zAFKMw$d%hc{$cJyg2>i=@Mv!ZJrChg9z&JfC3OLuCz zpin*~5IYrRMTbjmd|=^pF!ErVg;YO#a^)E+D2`wFWcI`+&EmXVj?)qW@AEi($JIER z2!#3wo!bqBVfUM#e|gog#?sY>cBej5p&Y;5K>uUoX>D`T>UPh~q?oeT1IDEPS7j!J z6v7s~ca36#Q(?3~w7-|WW-kb48OvccB3A$Gj8E8ntwC9WN8|XHQHe4^!RCOi8V~{8 z)gm&xPwdLUn8!E{=Amr>(tA#nVx;QOrG44^4@<+B3MC_$`_Fot8rg}xFR*W|%spYv z)>j{oJe_a^B?)j64vv8g^%RQfPBVoU3;MPe0?XS)jdI&4+1$YWO6l4 z38=5rK~R57MX{*)u&T%x3(F>c5tb6;D?M&_5~*q1lQlN7ovpRT(`hx~zb{9eAGvBJ zkEv|l-_%bPeCin)8e+4WGaerwN8oeC8T1F|tA^h)4zncpPo4}P$TxU%F+uSOD;Y)K zll-S!`Y&2~a+01D(ebwNRkfYSubF@S3Y=GFyYy<#1gvG_)z&h&vA`z}y42QOvH+Tj z*bZkh3|@MqJ-k_z-bHSvqPhycad>Sr`v;=hF9Mk6ckVwsC;?LE77Zy$@%{!N|UXN!MFo8G}J>$I^G zSN}Sd#htPedGt{CM>4`#4u0VCvl`Cb$l@CYL9cDC0;hsL4DxW3BgYSp&B!KS z+}cea=>=O~cR!xMy#ILtAdD;UI9%`gx0(wIMCf@xwYy#(LSAa~c2EgD?j*82?hFuu zd&)d4UhcjgbS{o`9}%@!;er)l5c&QB-Z9s)gJ^fsSRg^-n&7jyDL*%^puQ$$hll7p z4x#AP9_;Yd5ybXDLafpD?WS?rk^5~nU2xBC?P+r@pwUOe{kn-bt7y@`eTVReC(~x_q6aQ^-ELc-o}VvLJiwPg zWySC@S8;ig*C==(76onPMMT`saGV^}XN*fo7^pFrZDmRx`{Cn5`1*Khw%PTL z&z~V7D|@>zd|1sp9-jTv(th)B>S)5*5vpnI{a^MCL{iZL6_^SVw%SXMZv9$=L}ZPz zlMfU5(@kvX5Bxqjb1GgAEBx0zc=|spv*tXV6oTsdo9Ub_s6`v7OV->{8tnMXJA8zh za9`H7x^=uE?r@>WLIlY^*9kymPzs`~*ZJo)YuKn@wt1hco?$7VI{6ds?q&*#qoIH) zD&UVaI{jPubGa@E09gvU8`D8uH8n9m!ZGX2XZrG+7ykpaB5?JMv_34dg}#=PlU&olsUN1;dB4r@EiQF6CwX?dvul+OfxMgat}W-W8Yds9myP z8q}RM{iD}x?({5+eOvqrKGykkUYY&W)eT=}V9_pc)A`9mqkUF>s6-wH`4{5VX<@|F z@@UhlpYt700z;{W6tWwDb<&wO3GUk<~JJ=3bHBO+&uSl4SGG0OOm(d$V6 zqWjcEF9;AeMww9#hDl{4*c6dGm%IiiwbH{!h z8%?1I_#(h5WXhtf$e30IiEU`hR4%mhWUJ=yMA3xgD!XiW=FW(LOiTuMZpf7Lx$NadtZI8au;x=S&}n-1^e^c*YHP7CV-UG|h_iCi!*) zmcNl&HC5|dER4J3Bl!ozdZo|TY9Pv?u;#(YqC8$OE1|pcF7S4!#x&o^$ZikPZNFeG zw)J87+cq{f(rPxq1oZZ3m}QOC-Gi=FsN&3>*==*RZ&|+%1 zZ=CN&>@Yq|x!Q%Z%5YJUq$mm)T?e$ZNuv zx_sa(rhjl)n9i1^p3^TEqFb%m!))4#Z&o=1t zbsp^;W$KpOvh6#G2Z5~_!Uo)D_&VTGBg3R2?-4o^1Ooqws~vIVhh^u_YRsv0Tt z<&iwY9L?G2622H>B!CO*JH-|N=1k<)xG{fVbu86c>(!n;mHeW^Vl$tl%5P_J5zlC; zq0dM_?-e{6iWE)c_a`n!Q&YissN|`sT=uiR=f?MZ_%+5O54|-$*_)avd_Lt1A_mT4 zB$|uI19zShONkKdBCyd0D=+j44-}-*;w;g81y&^GYRelXJS?L7bsM2po`p+^sg9PnZ=CTqhv){j`M-s))gXxmH*XQ%5!{`05KTp9^Cjw8O>=X)cMvFOh`;)KKA zKr6wSpswr@=V;L1NM{{I#4y&|o38$Wz==atRL>S!x{#4{Dp}xn%YNf*vq>Gg2`#ynSK)= z-txNt$%=J!K_%y5IrP>O0%Jo@!p&Tnt80jaJNb?D*gK^axv}L%`#?x#I+xV}MN^zo zX8qR565=hkE~jlJZXPpa4czi>ML2P{(a4<|YD{+Bt0v%*?Ui(C4{+^TpRhtkw77$4 zi|69*db-b%@(jWDt->cG%z^29zDR%GtmnA@K5^;?;#;KS4(SdF*};5j?bXrQ`k2Lo z&0(rMA;Q?cKDpBUQMB{CcT!PovfDTx5BM{$jeXI7<;k=(s6t zfAg(rLMxP6#Zk1&9Z2S@XQQ1E=m8_PPJ;K7! z(Km7zk@nzFnM9H89a~J~o1n{wr$+$V^V$2Uc)tiW9%5OqrO8r9nf?q%a@pZ=5zw?e z<9$Q+65TyuQ-a8>BHApRIRE8`KFHrQ?J_0gt&*}z!b2`&Vi#}7gLmlK3{Hujcx0uA zaVe0a?kCJ_tExc96k19cES~%k$--Lp(~b$#;<{0x)~d8!4b7;68}PT0W&IIitp zTsX;$Y65@)*-Mmjy_%-$#Fa*$PNPOJt%KL5D1dx%M>#s|@|QEB+N--g>4X!KqNb$G z$rFvS~ztDxXp zTpV|NLPDUXj_VEfzo0O$TLZs3b~bCaHiyRkgmA)M>oBsES*PefY0iC#5V3j@5?_VM z6lLv*?v%3ZmTN8B&Pf{}+1e(Bq{y7K3240R-)3XHQa$2ELO<+n)U+vkeb{RGOAtZ~ zBZG;G+E-)HkHh|x6GSvW)@V4Y&UTZ($!2}@FYNAX!rZ?M|&BU$1G2%v2D3QzQkKAA+BwD1}J!9Ln zK6`k{s?gbU;{V)e%XAlb6EX21XV}B|dm&9ux)+I6i-Do^(07`F&*Fdic(MBs6n>mn zJ@DB|@w@$A6a=%oJ43KgvucWlxL-KyET0VS4c_O@eVyAT2bh=vZQuI=;NEwy)lnkzDV-KC! zSiKH^s`vf6)%0W;`LAjI)5kDlmF8*PpS1W8Hj1fpQ+_o$!5Mn6cM3gF{gH9o32H2c{=*Y0GXZwNmOp&=A4T;WO==F7>zQsbrcDX8b@vmwPnt?59X&c9ydQ)r>Ps6Q-w1`o{a0A*2zh+$PM>pvE! zjJ1@Wy6cY_7I$btukIv*=xL|a_ME!d(2d;}e>uCcsDHa(TJ~B*uv6&R>)@#WjF%JN ztFQYO_-Mq7I;9|g$<-AJcH2GmcEQmSMUF68f53Mkbn=aVeSh|(q-C4sU&%&d`f#&a zGpm4uf7odZ3BI|5PN!V>Yns07UK7)IB-=L-0 z{_w2vj)f80vymgY%EBZl0cLq7117=Vm>%+%t#VQFc!QF<7UL_~-#13%J?i|g`yghs zs>+M$>#aH|9Kic=dex1Wu5bHAV-?i7>EOaDe5hNyP)7ormLd`?W!89GS(+732RsL#pvm}!q?@Qyw|EbwffPi+(V%LR! zjZUs}vBLEIIRczv?J`HadE8rohT>44f$lMNmAA0_*L;a!v3D2r!PIc(bw8Bd|qc}_(DmUB{{v_nQ~~5_9mO+*U?4@Pbx(B}qOcwi`HXC27ywd)IlwA*&SRkK?o4w_i@q%Kc+mBkJFZng=M<9SHh zK@lZ2;N>2F7MBTt1r!w@FXzdFZ7Qd1e?I7yBe?utiTe=7fFa9<@5>Ms#UtA~{J zeTpF8S3HdG{MX9ars1b%1AU65ms6Yl$=!s;<2~5GusI1;*Ll=!YNE}@7o4x;OYlNU z_(kGOVn+Rv&Wv+6@gw~HZ64i@J%E}^MUigyx?lFaLsF;L= zvOYdtbIwc0z*H|67uVk2-n_ITJPb^M_bUXq>xFc&ti(5R@;v1*PkbOug-A1e-tzy3nOUT@(KStnB| z8Ch0)>VKj;F6K08~7oL~!agEV8FV(B-oR``(-otAAVs$Uv5HuRp47Y0*V>u1aL$rTmj zX{Yf3)$DSOmfK^T)aq7TM-a=D|mY^e7X5=%W7z{TQuk`>J359QcpE zfX+}qe{VkBUnW?(m4Dv?t-Isv;OV}RX|_Nld##&FRct%Qk+vQB{vOxye- zA+OWjo)9DF>uNO;Hbeu^aymm=dgnXeH7#U36-r}U1qzuTi#T14GC6*T+_La+;l&BB;; zG{p3y97V=2W-) z30FoHE`jf~i^nZ4D~W4v=d8-q7CURTyA)3c?L~ zWbO5JM=d|e(nAmpN4G%Tx&*LP459n@-HCp*BwV-L7(*>Q@{Z?>!eNRA-I|G`^oJmP zrKLspY)y*$oEY%BVl>d37_9dtlGbYCiIhuR>MBH@;8G}G;C((4_Ii6(t59!kD_Xa# zy*co#cYlmjGsjwfx&=B~o)XP>ii5ebSuJG|Wa4iMcp+;W=E+>f8Y6du8J>#w}WuIn{+h4*@o32>QsS$O_rl9%^@pa?R z+MXCM3cEFF(iNqaVbHb^6I7n8q z=?VNfo%*=c*KAyCJftu=WTeZCq)N(~>g?rgCQh$~cX1cYoLZ2Z<<9$x1um-{GvNYK z^%k?X78@ymPSe2n6C0?&7WX{~lKHQaiD~R_1b-OVV`7VoOUA`pt8fD(B#E!&?#1(g zt9TbVHS^P^M(BYok@${Wk_^5#^(-S}lLf>SX!XGUfbOm>90rE!w4BtI7B@p9qtI3_ z>{{0~=@y|#zI#7(#(E2yrZ=!h@Y-cdFw+PFzDH{3JLLtKaPF_a!TYi}pE z5SG{xE+_d*C`2tlVfE?-;7J-wN+|R4@={nWm_bZT3h{Z}VhDI#?Cy>fWHZD`sms{0 zr?>6wo~}q-&X#&BG;DKJJ*OM3)LtGh<+^>|k5(G-99lanHzpy64Vr7;@3jiHu!#`+ z+lO)$S>K=7$Q1yx#GiP6Oc|6t+(`x`M_ytP#34vIRH@}@5IE*6;6ICSSRJ<0M36k~ zW<-=oJ;(iyz*0DX+V|YAPESUn5N6!(PYhUlOyPl}2uI59g{1&8nXPL;Pi{rdE0F`z zO0&#yAH}^i(yN$YXzcn!o4^@>J#I$91D2CCd-@iJmwh`1s2Fq0RwP{ngI29gm~p5i zNVM6wV?p`S2n&egfu#@khlA10wU_4aM1O#Gm?~4a)j)`%_+bXzXvVGV=_tfI!Mq&z zNKQ1H-e8TLELFCcS<;F(0piIcr_wIdSV`Topl1G05udvaxN(~k%+3hU%fIBh4n>nm z|LuE!ORl{(A9w6(_H#fOH+5x;QSFMv)J$wvK6p-_c`3_xsDkl%TR!d##CAuG2J(r* z(a79U|J>1cW5ghB;Gf)<#!DBMJe-Cac44ecfGm&VIPo^8Dfmc$m z9Q#WEf7S%*EkIi)q#^h21Gx zsR{D`oFraSo-n&+DtLL$k^g@*T?I^>U9-lmMGB?37q{Y8tXOe(cXy{q@#608?(SCH z-QC?;eDB*Y|4o*J5ZLUJJ#%Ir8=A+(h(-OC#<*A<+1!gc-yviEJcQVZro!>n^nv1w znU?-YamSd^eW|Wfei&FdW^nMzSbUHKbXCU_gKftHIw4_1+DB@|5`@fqQdrgX@IH-~ z>=lPQ&H@%)ioJ>?JYI&|?L4#13`L%a-w;1GyebM;!bs_0Hu0)rzO0;?@xNlPuhv}? z@&|1-=?d~6I({5gowu@`l}sU5CP2T+bmIy#riGjufB!sgEF|yhT^Dr<)r4f$xONWmfVGq>`v70+dV-qQu;!$YoYQne_E%UX(*A}+x;iO|Mw9moMY zpywTXH5NNsq)#ssb zUN2nIi8x#ipS``kg@w~!8mbSgLv2k!x@OeGrXJ%SyWzwVyQz3w)vM-;Ah$iPsRR1+M zOyUwibwWFt0da%owI1k7c?2k|^OW@Ax_J<|qii&?2>BH3W-@j4*WnfVlY^G5?d&k| zb)cbb1DROz5iRHoS~COSE12y2OadD&dlPMYwkeh~gHZ!qV@pq774H%9FJpSLh$P~k zVYZHzSeDaBmjYh_`3Nv>n49S(x)=za0M;DTCyX z1N_X_JM*vD(=-$N@A!!vH%lcO5ECbPET4AYQaw+Uc5o;a6;n1xGJr$?h!inrcN`&s z(9t^i*ty%Lr;%Dlf^7Et>F-ZodB@Y#0SS04KqU=e&iKr_e_BzfUCeQA_C3S8|xx*w3L=uDdLoC}%jsXGNmyPrLyc^5#Da;ox zh4XwC=r5ff(y+hKi+~2XUoYA-y1~2%MYTc7o-feGjFY{@aV(Tfky?z@W+t!2F>Z`n zKc>?sue&Z8UcoO}sn*r2OmsRIYm?Q2^v-Ij>&S~b5jCZuB4L)ajrpcVH*bDfPat{@ z4iEklhK%bpZ}?VJJ{Jp)*VfNb8@$&Y$16du22G03kB*#U4Hy}3;1{Aj$ajXa6{IjK z_anqHu_%n21IeXON$U0sm+$cRg8+7<#PBSwF|B}Cz3T&B$5wfTbm2j%OWFBlf_8n& zK}Fh&_r?b+*v$Iz6r+Fe!$TfF*%eRM-|mgP{<~7LC6D{Wu~cBecckUb-ewx5D+M)4 zv@8}OG0UVg^J@wqCkCuF)m}b=c{E?y;SC9TjxtZaq$4<|0>k}ATGL>O#L+Qu6_WU7 z{=4O_m9}$Y^HiwiXn-&l6$jS5cI5$T1Z4RUfdjiO&hzivyN9y5x~}MPZEfY33~q(Q zlwp2rQb@NBHLDqv$LbX-Kv5Z9Pw=yNu;&d4Zc1&atd2@4-)xs7pOpHA zQi&GHL?4w){LbF6xBN(274KT%PXe0-gS70u0mb_ZuIXvX&r zTHpEJ$;in30i{h6z~NMOdf9u3AJt$>$4KGD~lw;`<1{qj>b(r ze(>8zx~6o|f+L@gT*>NBHNd}g`Bh-fS;nbuMZIsk^Jjd zn7~};3*UwUGXC~~;r*oxM>o|=rqqolAWi%83!=}ho(1%}t;Z>*gn59f#UuuJK*DdooAS+Ls% zE{{XL=X%uRaY$;IF(1G4E%k7o2r z1t#NlI2s2B#1{{SOz3Csi1~VF_=WaYpxnr!euuxa%psd)wgE3jq;sZBbk40p~ z>fITW{fRJtmCpVBa#859DkHV(!rhR>3&tHeqGIiXUu^T*pA2InDz8W9PeKc;cWb08*V_t_F`W%nF?4vbOOPe%`&GGf3 z{P|*)EnR0=-)bpglqij5*{iu(9s{+p;LEq&i2HUvL#j_CI>?nijdL_0jvhJ{P+U%$ zqKY?cR99OKg&mj(SC)J?_%BngEh~Y+>nZ-OENxT>1kQH*^xWUFd)P^}F%yX}q@hV( zOxCzKaeW(hppS`(ONqR%NAdx4s^sjd1u6|I`-ZEfq+c+Td+l31kIuU-+OODSM>IgP zTuumHoJZ7(Edu1wUOpTVx+N=arrQoRK1#46us_>!LND#$GcN8(SyiW~o}Qj2YJqw{ zP|zn_+<~p08Phi)dlVR+#3gwqY77TC?RQ`Rf4j^o5TbGWuxk4W1EUX9RZ9P8DrYDS z+l>65bO#82qP$B-((H29ZhXO7gh-(wz<)WN`+#%TS%~wTMe1elD61Tzj?DE^;u?F~ zqpT2g5Ch861Ut+Bl8j?MvqA4oL8b?wwqr?957VrPASi@>v5FXhp_!#*W~JIyOjn@F*P;p?d^Z={@u$JcTT2#WYI0l}NNdU=|2E z7rdMcYA_lG-(ha*0+k2&EA!pMh90J((RI{8j^?TjfG)R#w9rb${EuA|)ToFAB4|<5 zls%S?FAql@W#3Twb#>o0x?(1~GJ{ph`bI~?@T$@V65=ScRU~_?65ycu86E@qldATf z-oz{(s1?f)-5&X9uwFx-rat+ZcKn%~SA?iOrKRcwGfCk!MHArlwY}>oWu>OiZ^-pS zlebW{eZ{DCf(+GLyopKZqOAt^o_a#dygczjF4-95` z^#d%9)obKuhabSwpjX<;J{1LxRhv3_2XI~h_!0BO2o(4E95caeGv$2l!0}wE$ndyY zW4iMm@_DjLgvII`a|9(IhK&NS;(vAGMgYK9b=_xyCdG+3JF~Il=kr(rk5`i_QQvUk6u(Ypa^5`}1-WhI zLC$kHe}Dy&BQEvskO!Uk0WbU zkVy~d+umBLF{IOMjE9Ct;jBo@$QV!OBD!9+m25sKEd%7J)d=zb#m@ZhTgEK6?d%k6wwbx)q(>YkOtGD;FX1Qvkc&jxa7@`(UeLVPSbXZz3N{f1=yinCT$N zoBpYy@+Bn&$H>??CNon;2H2@q_cBs)FHe&|l_0^23mP_a;s$i&nL@!R`Za1Yu(N6w z&o?(STf4iGc6Mn0PFzsXyix(;hqzc|7KYA2n&Z9az0o)SxhSRRs{c+rN2BRxX+D+n5g*t5I4Ere{Yn zYc99QFfc!r%YaywvW0TP4G_OCw25$|P{*O(xc3`TGkjldf?6a#nbU)&n>HU3gry3* zh%4W3^7F4ENyz#t?l|B*%9ir{bn_<>nAaB*D55M#q(!T{#$5DpS{0rK_XxaoD6zu* zz#teF_g>B~@6VdjnkT;gXVSa^5>Yl08&RZm0aMGi@@}KroOBHwDQ5|Ap_d-fe{{Qq zKB1r0X4pJXP6)CgadmR&!vD@23D7^jJnDK!0mx4!0`%gI4y=?WEd8wZD3iNCspI&7 z>Y}K25R&twXp#5c#zuhmD`6nVTTvl@n~dymIAzJJ`6ozJ>A^hROVKV}02$Yr-sS_g zQr8~-tWj)RHZTM@=|ZiA&cgBS-)x$-7CIcJfqhc~$cquDf1P)^<&`Xq?i1;}UrxWS zgjzJ6n(iGxJw@%Vd5AdFMQl55;DXf2%1SjKdU`|eag4Bj(f&dQ zTWfuWxJP0oUuoEViEzR3$WS+;P{rY9LOt4p(G zm6y{c(rb=PWbkA#b06;QU2O*w-OS4J+wUi+IxHKL$v3yWqyN*=N{ar3`g-SocRq1$ zLWciH;2~RPz1r0L@G`rarYXSF{3?%akNSE|ai($98aWQt_N6;HSkvU=M$ZLhTf(8h z)v~g^^;FIM1+?F@)++NGqMuw9pVu=K^TA|R@VV0cBcOcG^nRw!^m%uOf`Yofxyf}r zoRA5@0X}R`PfvhKG4pwZn4h1hLPgTK;pLZ=bPkX}Q=;_yMF6*>6RM-rFHbB=pIx(B zt<)0A+=`u6q97Dd|v6Tbm_n)pfl(7NkunoJ0RMI)EfBNdU)H6}o3hvV^t`T#nj=a9uYm{zJELfzj#;CCG;L9%-(pyE)}-kLOQNwqVta-HK!| zS>$YOFWhIc5}vsLNL<=T7M9^+hQ}j)oW3|u$YMYZOxJge zrxIf7GZz{x20`$>E9YGUYQ?$eAp{PDaxhG<&ub{K;%gu^Nq5#}rPbdL?>&O1gp6-d zD+H8pPu1I(dba@#jLlMj${(E=y4u39Q1SPeZ$0{rWd4b=;CtrBqfgVMyNCd1eK4HS z;-V#%_?9uT7=|iuZ9iV!;C7B^lNueMu>7k2=+&_<8^*{`X7SJ|)8rvpD5+WWC=k2a zrs9eb@WJ<^9B22&jic7d{`p~4lP>BG56I3UX}3F{vFID6zhAl(QZ38S=&*se%9ke` zoPhY_BL>AO)k+GH!qVHI*pB=;EYlH0A*3Y3ulS7)#ePa-K%oiJppTYuPkwzvVEK zl5>eoFiDGnl7 zyx1VMXhjwk!DnU?+9aJiX(%W** z&Nv{^i4X}(ns3ka=>N)YyF77Fv5NQ+LGM``tbaGO&Bih7?7^Gm^+fMuyCkfjAhwZm z&m3~TnwRz>V*L$PkCwhqr_vcIvPA0+&seqt!GVjgig!|RG|8}T8L?WU<xFkR1rRh_v<#>I2zaJ{T`*eIL!e%WNNoeVSi35>UR-`vR zBnpbT^}jjM{zdI|BJyLyQ+(vepicf~iA84K1Y+z3HJ0Z_>Fn!)_Kg zdg^p-Ju5qqszMB7+?#!XA)~k7Qf~4mKsr*-rlbQZ$cB7lbMf#5LV+s23XidUe?$2p z%?HR3je@NcrVu9?fF1yG7?iqn>Khl=+Fc1#^Tz#10|e01?>4Kl2S;m-9KjNK{pat$ zoRG|G_+WF`sP^@2+#1;R#e!BC|0FXA{&gy;s4R-*k{iZXD?6fAqlm7mG&)abhI^E86 z@i>YQfqx&0?V0%RaGriSwR0`Jzp6fCW2`_vFqBwdGT|s?R&aF6gZi%T`gUg8h9nXOEH5k*VYQqxyZNlY6y_ zLmhKhfU8ujxvT`gpTOyKdsm=JYqszxVoGE*0_i0>-fAw04h4!7jYE zGIjruxRb~U8>&rKxvM_wWz$s9%q4}Vz@q$9Mo-!MWS-v?X>M!ZJyCbs5|J@6a=4$PZQf2TySgc*m+rc_ zy!U*c|8C`i2iow0-yMjIWlmB~DSmXwyqzFG0cI>J*ukZ9VBCoSP=z7rSH#p?6c(Q+ z%nTV>tAvoY*}7@!1iF-OK`Ed$`O9QlpLfhQmD9NcFO8{zK#Sge!$ZI3eWkyw+9|yx^V&zcKzjU&w$7?+?4F{J;oClDJEmt_q;3 z)~g`^IJ3vt6>>Sgxa|r$AL>YxTTn*}_>ihVV!9U1>8)lzXS`f0o$_@6POr4F##@zv zxc@DJ2z}FH_jHEj54f$A*3nzaSv@gDcbXKE8FAXXSQ%-|RH<@WIhA@^vXMJXD5#$VI)Sn0ybXP=lXhJc0-OjekH@ODzeK4& zUD&GONC=2!Mvqy<`DVx)6L~Mpt<3-KH@}Hhg_yLf~+yv9Oj^D8J z!DajV#$)MRaVacW11TuvO(ztc#ITJ9T!g}8kUykD-;#{DC?KY;XQ;vr!Gl{jvEdbHp(q7P9_sWX)7;M zDESi^SqO+_oGv%~0f%quX_*%he|VohWr5dM!qNj?pD?6VRJ1ScFP4S3__8D7#)v&RuCJQ*Q!Z*D{gMz(q&NM;zAQZI{g% z*|W7C%I|j{8krB%Xnmvj13(FJc1kH!?sw+lw2Rr{HeyRjj*lj9a6tD+ETYgV_GGBs8?|Y+B`#JbuLYG*TjsvyL)8)e=2EKIoV$|wj0AW}!@$~LxIp~2p5G4@s3ngV zlF7&WOXi_6xXxFY}yvcBr%iRx)JB!;^48>}?W8WXgs zgk9vxmH<)HzXu7sO;-{k_yLqhYl;FT;;<-TuzEFvNTq5ubDUt&$#6DPt5ixs{UJVI zj#Nm~HFxZ032%`e#NErP9i0%bkIx4VH43>q1I`B=XMfrUjKyw^3bk z54((?UtScLiutFTHiVU;D#ugWAIja`-LHqpq8ik}{_v z{@w?Mk{&y^RVp+t7ixg`te(ESzt9G_T0B2&+xVp>SVYsNc2*7iIl1U8m2oD=SO2h1 z$>x*gz_FOoc-w%IPh9^UXurl?-nE7X1_m5}>yXKG0v|{vf+#L7-g-LB+8w6M$^}H> zHcfSzNFFhMy7`y%jVqVdhiZ4iB?=g5=rRI7-8xRyE56V;YtT3=REO(m1_|m423Fz= z1va{<7ZA3Mt6X;C8q}!$l$E9A<;~dieu;Q|bkp&9Lw4YxFXX(p_48u;3%96kd|(yw z@04hL{@ZePR^hqsr7SADshD7>@kpqs`dX_76FdfkFuAoyr|)^5jbKxx`31@em{u96H z1?buqy>X72IAwY5&K>+(m3~}z=V|OU2)*z|yM6aBZgZkI3yb1Z()t@~+~w#lkEptb zb*pNI*46mokiTi|XWP&pk3p>#JH$r6A4Tk0r$vIif^1l^qhe7`NYQ}0n@*?I55917 z{w`y9KcM{@3MKE;ZfS!|7;xZNn_HNf{i0Dfy7OF-Ae4Qqv#kzjm+CeAbUop+@CqUI z#>aB^VoamqVTnPYJ{5-(!ItsJJ`0gT1vXBZDn!HU)Nfz@6I?U&R2$&{=tj}JRX=(B z`=z=RUL)G~QxPLl{{~{MyI#MJf26&239QU{g6M}d&|Zy)LnIEDa zrzT-0ZfsDL-*%qG3bO)8q0tI4RGY^T(P!B@>Ifo~G1|PDvR5du`Zqet()*OsAoNS5F%E>0w{Y zEC_kPfi$BRn2%ND{+KKg|KRh$E0gFKW9;m$PlsZlr8bmrvs(y+iLjuewQJ75YybQgd?$&0DQ(kXJ-Mh6CskXH|eQWV53JGtw=AN97A6k9#Nt~&PN zYJVX+Z^ZN?A;S)(izX~(c2k<5JudlUFTMx91KHvmaVPbW0KB$DON;oj=OtG!ry>PV zL3nY&l+7?h5U=$&*f{PAE)qUOY(gFlj_O4ufDGsr9lFbQXlsFb*sVC#TSmTZnPRFc zg%UQy zlyVmjZEk_g0+WPS0pU1C;kNZ`%bVuQ>(8s_`$r|*^aW+&yr_A>tUhxkBEAWe;6SW+ zIUs$@;nLel`dBh4zVq=Jo;b-@UR~Llj3xH~G_$-Go$?}c+PLTA1D@7>*30o)oh@F})tbA9`|k1lm2*_T zRzzp}XCV>TgjQyndkrMVx*<*%7;W=UD8bM`GEOv!&{T$0!QIpsKTp08k7N_aN>HjYt?@a z1T!{x6vBft+XLuqIV!iC>EJ(MA(iSn=HIUF+b^FC$Fu$li!q%h93H374ZlrTu{&kW znV{UYdVWsb7OKXV%)3f#t4@gD@tQaC)AfN&Q5a_Ar_;M@)V`x%yw-O5s_6$UM}@h@ z|HiO~tmMnYpdG@t__SSRGG+{bU=ue#(|v$75qS)F6S@78mMe57A81u74hm1JxXQdn zlxTh&wo6VEfb>^d^WL2kB%lbrAOMOLHs#}g<{J+vOOr3k{?CS94sat6*GouY)LuJW z0OA!e3I6QtfDW9j7aR;)0+rL{eJaJFYv4ue7>XIF)%w+9=?+%TF49##J3<>*bxKc- z)eTisBlN-+*e==u6`YEOjk}@fa3K=|(0z&&e1DPR2%;$=9UppUlHO>PI>enD@_iTqP-0{kugF7M}Cs1x(iz!I?{`f}%W~W~jsb<&gBmAv>y3czg+tx&Mwo z<>O1Y{(;XMwK)pjr|BA}%C)$Lz$_>u4UiQT*b41BZz~ zQcg9b_>^z@P+j16p3_Be#IjYT`nzoQ*vjlXxk?VURw5=Man3AYIg?7&bH_o$xP>wJ0U3X-A*Ip_j>W3? zvtM7{id}%U0K;HntRFo&?5H7Fs79Z61anl*Y9nCmAYGhZiQ*79g>rF-ci2u%Jw^3z zXnKFSW+wtf!;1f(BhDRer>~^ki9<(f$D74!y`-z#1qz(Xsq!QErdV?H^`Y6>#Q(~9 zp;U`s009VuWg`B&<+s`rqNyy#z_a$fd3 zir8fN@%Vg?2o+rR2Zs3fxN`;>@mpmrGOy=MhkWu8U2$w;uK>!h7S#I({9|UQaQwiP zGn*Cq2fD>7dawjPblYtMBfN@$5(l=M<+|72nZGuFUr$0MrY#^LB#+D3j9YqreRbRN zg@1b7Z80)3g3zl|f4VPQPL@`_!)30uhF==kLxPQ|K@|3oU0*FOjmIQl4QAoWy;8wk@Qm?UK^YXagyWn}3ZX1I8XE-=I@Rq-w0dPsq(o(AS zdz&-N1eos*{D2)PT7?b!XV*6S$|-G18rt|LUFx>nt}dcQY0F2^Z~&MbD}m2g`ApJd zCi>C*?xjmk7*G*_Dz$&|%Ds5sKO?DB>Wt0}W2Ck7*Dd#Q+;*8hmCi3&sd)5@Ojl_| zW%UVqijYG9x)=1D?KCPs|8Mb$_MXpuFc)h=2|p&V5Sf6{_lJ3tqqWW_=#i*upBp!d zj+=5t{=~TB2?E;BLmlm@-VkeYNv$qGLag1g%eCT9%HpZ@gMy zP0AAe(b(tXsqTX;84OjgA@Ps+b(8uXMbM0zJuTw>?dA3`>+~D8McL-EHT#3@X18xf z+R@A}2%$k~a=OyvgaQU96jao5Ae@$f<%_%hrx9SLWq3h;nl@xO9T<&Y%ad~`>J8&X zp)EU`e>G;0bH2e=r_^3lEtwB!3L|Hx08R&IuEDMu7KRw$y}X{5cl%W=H(DUUa(KIY z5k#Y#Nn5uZE(Yy;?b3F-`S)PYjuXhoWxJeTT#T};>PWoa9jvoi*HEd@5K&e>KfD1f zMkyTyZ>K~1_o^rrGkraq+kZ`{#Do8m ze7k|HRzKOS`k@SFORp4=2#;=o9&yy$qMrgiKZ6iw?1z^rm1*c@;wn4BHOx~~e>;t> zI0pv!D&z(oltOq^(u8JHA&1KTG_0KQKb}h(N5bU?6u;Fn3cUfvgwm*~WpshOVOp!> zq9y#U@fLDy%+xvS6w0>TosglCS=D&*z1*fM6dQE}{GDB;y1;=_+ z@P;@_c=O?rcq1r&wp?tP$siKl+d(K}j&$ zt#%CdY(m_cmV)GW!81A!D%YNQ3#2(Oag3DV4g$a8`x_Kw>Awgn{8D6XoT&%~Ex&>3 zzEhC118*}!OvZE6)mxVTI8*v3Q~>#ppTCa53(L$F1-F~S^m6JSgP4!q+}$MK zp2Q?TK`W^3-@tH)ep7V+<5qL=Bf+MZ?R~l23;gfP5|;>n5Rjn0bZ=nN)qrp#m^wHv zr5zM)9A>?bJ5n~<3bCbGA9T7ILJ_`jOI%u?UPk40*S0yy+4D`-p`N94Ihssn^0u+u zdT&<6fcT%o0|I6t!b9+fBf<(Go!s5I7`v`fa8eGRE)7vx43?rr8`L}9c~)jkA)}X< zwm5y*mtDXA$tnLBg_Sj6KkX@iK4`Sz#PNWG^+;7sYl?3HhY)!|833cEQJjWTc8o-=1s{MhMbyR3(YwBC)rs%d01x1*{8 zH^eIM`X3kP?p^;Vxi4Rs>`xh5&UwTfX~Q18 zp&Ey}X>J31OAe+*D&u>3C!hYj)X7Ez!2$Ee1ECTQ;J2@QKCi#a5f4R((X_OixmKBT zbxmCenNiJB){rikh`nU_ZVqH@(l_Fk4gIU@8u)}+u*1vMvW8BqO{GUV*3MhJC4QFO z6_FH*IUjo3;B;Akw{E0w%JysOQ%y(-*6t(7z{H+u#AZ#=!0f5;c^DydnJIRkI>Zb zVJSOsH$?YQ)`?HX1|&1cuzyZqtsWvqtH+>82&Gmm{AMzS{cyfI3V?G|badq#Hmulx zc$%Y{{a+Bya75?A10S6)?Qwp2K7Dh#`B8TS#~NlM;C+EV;%q7Z)&QsOohi->%M3TH z^iiSMO^w_ztG8PhlN_JfqJ($6YToRpET51^?eV2(v@m7nM#lB=4CW?a@?PtYvRQ{Z zBHWVI6HxuGonDDO9j?V-J7arOxO1lE1E&vccNU%P_EY!(#Pn~UH*M}EsOpeW6`RN} z4-bc^*O{<*zd8d^EhzxLr~m{_bad3##@?TT^;a7!!U=dHf#29Zpa@`w@)el6IAV=< z|AE9X%tsHKY?PJwrG(y|0api)fnKT21yXf0%;&9pTvp?oE%J>*zFy22#*Bfxb}fef ztmafp(r4BkLOpjI@v1nT$tTXC`W^OE2ed|?uduI=_tx(QU2#c!LFiq}_3aI7h79tt z$Yo&ov`t?dq3$LQPPgA9GTf@}!wTJkF6&I$9}C~HJY-pIXUzg~rG}(~)*Kb8Rn#-x zJJKDiFGQ|BLQUFiO%rIHh^HGJLUH&Y`|y6Ce6P_eI{J>UNydvCRv-`}9wnp@{&`6; z>6Wq}nC*LOPcG`#&}B6UZ`K;8rurWG2%Ui!pAjw!4_PjmI^#0kQNb>z!SX&Uso*zy zR2Zb_#72Z?4wT>^0FDOzx@bwN>Us~|9gKpWX2`d;EW!wPDW23$aC3_ksu)`Cx;4*^+P}i+lte7S~LV0ztOQ4v(w)2?rp$0o2bY7 zqgQ1KM4yijR}LFjH23<;DB*6A2PSBPs%4+`vsNd_(p*c9h;V(Yr{Q4#FqeFBB%q?O z2b}RsTpYPPB7tH07Zjc6V*OZla2y`_r@~@3`M~!lt1Q^<)#@-a|L;_KtUvtmz zLSOpkicT*jl}nuH3AD_;HuljGR|{H@C>gQ6us){i`oxAmQ!xe{UFM%w=j`gpu(zYY ztIp|~K1$C#g3(j#XBzAcv?IF9*kO;O?SHIv?rSIC5gqZAJ$ccM$4%_V@Ta;kC^t@- z#_lz)s@ZR($;Wb5kzBkeqO-Fn#`{;_dx=xcE4`9#MP{Wn%6ib9J*uHI&P&rMCgqhC zboIo1dw>+rr$j@jqz(`eB?kVt)*~aEs&&?b3=q$E7sItLmnDs=lbk-jnIt{m-vGrK zdvr-Ny9kk&{9D(q-|`;sEqc%nI(G+%`$3TcLXVD-@}==*dVumqKAYc^z@k=)reK$0R&fP@M0c^x4u{w0r~baL*JdX7e9AWyVmacuF;g)QfIs%Hk+;d5jPS9ysz5!_T}JaEQe993=M%boDYKR-9fz6 zACJyOP<<9HRAUdmvDLPv2n_Vdi0pMQjI!p=;yfNq#=SOPvyweOp?}&5i7IlsXwZOu z5=r=4__^BJhZ|?Pfa0Z|7_S4d`8sUnv%CYz)4GDc&{L#{fFQ-=PS)%&lnA#l# z*SGc-SDx!!j2~4g@j7)dgE#a#IioXlCv;aQuNNO2BfdkU-*7{k`9Hg{(De=)bg|Tp zKAtsU+&5xz6@O?Nzv!cvwPjsx8m+YAsr*dUue}t=@G>!J+^I!6xHW_qvan7sLRrM44^=W}J{Lhsg zsYh_GLL)dnRi;QNN3OmlE}T4EluW}KdKq35Qd3hCpCF^0aCCY)=3iB}-}%~Ty*dKO zsHFp#m6estb-}2bjaI;tvrzZjgPjY8+Akkqpak1uyl^`;R_eWILJJ0;+-4mT=)cd0 z_usd+^VH~LMa_I)x>X)`#1nIK3N~+C2;aTBmqs=vqW>9uKFY`!)3Z0Iwt%a!_1k+(2Mqb=rGKfNc_;vcPJQ6FY{Ogunk3|gou+?2M z!~rXWHg7UW7qtNq&|^Lry+u8VAUXus)ZZ(FaEw9IuBo<;xBmU39{OWR{wT&oWxGgEI1n6*Dl}$Cv3rrNprpb;s5FR|Aa7cC z;o0;8(ThdmmoRL$*(0x%(ooR1mw0%cXzawQONqR@L!4Q!s1zHp`f1P;>;eR_=kqb; zzb_z~4&%$02>{7Fnk_<=k)d}z`~p;I_BI9Gr1qGK(}^} z9L?Kgc6V0KHJU$GJ{@~%{HTn6&TCA<*9onYYQoCzYfZ|pc}6BucX8)xMqlWfxq20p z{Ku{64pQi4XMB5)ZNDQf1|c&xXS0QLR1GB|-xvCr1V1B?Pj!P~5URZpPp z-jK$<)OCn0iD*wr_H#ISBqYe6;-ImDnXjVtD7>(L_HsiEtwO` zCsxps*iUz_E#}O0q(7U6_U3O)NvcUXJYSZ()V@B;L*BEJ{E{CmK-_GC28H7*0JL2= zzw!(puagoWoUYHuW@W!y#FEf(QbliN3s|;k<{KR9unv+3W3Gru#T^a*!{@Z#n)W+yaCvV(gxvu`e2$7DV#`zPzXXIG#1E+d(gu$p!gG~L&G)TNJvzu*3fB2>cox$L#Qh(io~d|<&)W(6!- zK~g52oeCP2#=9Gz*)ODP+6@Wd?rsd00oL%Eb@KV~JxYwrjx;RY?*?ws{(U)NjK3|m z?B!rre=@npdyRSZ8MN*f(sTFW{4ZtKfWuC`ag2hYy?yQWz%g&icbaai)jkf?y<-q4 zHhJa|k(t93FH!1r_^w#Mi22H?fvjoD3CgAa8BmYN3X>##+BzK@9TmNqFU7zQnItL7 z-X30Afg*0v3Tg`GT|~Y;1fCRcUACt|LYg@8M~>c5G|5N8@5z8pw-!JYYHOu@eidd& z8}%=9Tz~jzviDaVCK%L3;qML+j>Pp$A~cPP6MDcOmABSHu)oqkg>uHxmQ#9ji?GrX zM=Y>ehxKgEG9{Dhw=f;^0jI>Mu)u+jH}JzT@Ey4$AALf3xDqSw?U{OiAna$XFVS|S ziCsQPwGq_HG=4vRO}ELy=x=Y|A*1G*Ms>S<8aHduuwtOVqM~2C>5&ynKPX4v;2TLtKap*LmMQF(_kNAW&!fk1sS$ay( z3m^&$ch>xb8GQSC)`@NyDQb_MGn^tddyja?u~O@P<&PDoP<}1S3f*}IIiA40LlYYm zes(gZC#$U>3lMH7kFsbBIt_>njAl}hn;MRY{!GucpoSFN9Pop>rSkE?H*=T7EMQ-+ zP|^wSBd8*gIc}h$iLicW5z8YycEa+!n*sce>_hmy%|F9&bW+``N{HBuBuOZH6CEI3 zI5s^$u(LM`i!GKD;4jrccIXVw^*3od?po~kFP2fqLfKg}2=&7M-q|sDxLEJo==cR; z=LiU2=)$|ZF9L!d@&WD5;@U4VpcDM^x1&U`oXZO8QSDQgu6Q~>BLAB8#n#rGI1=9_ z3y#)F_&M|LSF8}|uH?}5I`r*PJiVUP1)oEBlsG~=d0{XU{_}Xfj7ZIAG@aBBKD?B$ zZXCj!>N9<2@oUtJ9aLPsa|f{k2S1?7y-Usgey`x`!k1-!L-ha=5l8U&i!OxYvF*p! z0XVG`^digdRv6yag6;UE?XR63vW%u^rr2t6b=nqNeF`gZ^+3oDx;Rs;fN_kuRz$$` zoNr$4PxOVk{`Jk)Q!6h=L`sgHOE43b`O|&iP+Nhck2qaUML;uh^%Fhyb}xA?`gT~q z-DuO+#{6@QMcuiOxu+Hup4c!ll|gHKv!FU9mxFRjd~-fA@=jBC&HRCNJ!}W11ZtjO zD(Lb4)3L2JvutsfCfc{+>x-|Vd3zt*z?8Svyn~XC9|Xyy2)s)r$l(k9 zX^9&sfSscRXYUH=tMobyz~_2muDlH(UB2KCyb~6VRjAJ>Q>lnCT5w1osy+BIj`z7lhqrFRyg55;hs7o83tj z3gEXfUN3KE7&40YGc3YB_YvxN7=s)(Ol=0i?u8g_OnF;0nrId@d15Gspm`tr2P*|< zb#rqZTCm!i-Hio^_rB2TGhby7jZ!}-AH<8PZ3~UG0-mJe?ZT{J* zIgCDb);c1Pxa&rU-H~N-nssT7kH2>3;5W#~c(hwFa&Wx0ASg1iE0yMqVBnq2Cp!64 zy}*fVLiOfpukAtvTh*?tXvP`~dSof~^OtkxKt20{z<^ab!S3|nWR}o)X06F*1k{Jz z=;740B7+a4$-S{O_~%NTD{OqT`ts&vXMPocl9Pcs>&>IR)#~KPX50p~ds?R-wMxbW zd`%~lKD_HB0eP%m@C7>k)W9-N&rR5rA{;?a&z7<5{sxIwZpir2jrEdyh|z}A(c11e ztt~IE_-l(N`?(}J#e-i8T0gGML?h7Y_a8xaempx5)G+319_g1KKaC1E*avE|HLs*d z!Gr;Cij?Tj-?Vw~F8ZQM*&)Bp<%k#~$<>CtVU?6lrcROfFjaDuhSEU)N7Ge?RoMkw z1VNEfx8?!KGv-pj);I6T04_w1Qjvu3S1Mj=7s zkrV+vSnvZc&rd*_nZO=&7obE1b~R+q6Qda>-Q>3GQ~A_?%hP0TS7Z9PZfz&-8MwG| zGPv-L{_XWu(f!nTK^mAUjw#Gfol;K!A!bj7fA#Jp7l$j}MzL@MgB3=pzz{fnitAiM zj}*S%(2W`*;C4r*#Qcg2H{neW%2e_M|i^ zp%nX#o@&b(ndvfZDS3HmHr5Q8-ZE`&U>k!(EE;aK+|qb^tJTx30t%Sj-G(~}K>=0d zY8|T#7cS`97t6T*ugrdk$tzq(Tn)lq@O$>(rQUESbh8>@;k=_9>mDvY!}8|7v1z{` ziIX5ovf-Vvq1{)N{I?gw?9Jv8<)bjtob>v6|8nb@6XzM!s-G zm9;56B-+iml~nyd7hrGk*3mxS+vaV6hE{|JbfebDdUsf5b@gjLnc50os(PuhSmT@>w3f;uX#f6NE zD82hw0xkJb1T#{0ZT6oP>dwDZz#H)?LMp zl*HkfR%qNNRP2Jx(#hQ#``;k3Arz`#N0tH4?G1w1s@gdW!VcMuchnamXh$8VX{$}4 z(t&rD8~bq8x-g9j4v)Wvi)ig!$}gKNn0GzETi$RL%aKbLmu2Qr6;zX(*v$x_j!p96 z(bfU<`{96}YZHz1T)Nez98$=fOZOR9B$!FF4-v-pUy~S;Z%m$uaB$w8BF5mS{Hmy}tGCxNam4oU4>0s~R;sy&-0;0TBqPOY zIU9ub#cpeQ2y_AVTKnEV98}crH8SAT=XhQwEP+inkW6>GKNH(KoIJN`Rep!4*r;0- zuIzN)_4JYnN!*8*FQ6i<|4F@mIgE}It=yJRU;DSaUwV=%`D4>9+rC@E!_bkV_5F=? z2XzA%P+nbZF=8BTIjxeoTRE6!_UutwTv{BumXMa(xl3C4`Mb&lxqE6j_~m(L4SR+# z7&oOg{*3}bmfwC62BV6K!_P1z{)GhwLEF`WAzakR$dD{3pVt&U(OBPlj#zeHH%GwVlQShMF`o&WLlP|Ax(uuJE^Xdt1@8LN4v0?IKDM z7XA!~A2RqM#Tp-PNkKP7m^4^Xue_#L*ws7fZ=;=V?_%b~X2y*}%09Y3j4X!{%azo%Q$vz$Gye$8iEGA^Rn#qCeY83)gLT|s-7IDFfwANDJQ#uwfV57*~3-l<5yU)-$xVk;9< zkuw!k%oS|3#2CRm^v`_v;TkYlK-FL9YRc2fjlyU4YtH`Mp^C%toWpco zHrkCT@zyYuf|9CaSw~r2aB)1a3y-(29Aoeh4;L2xSYmY9`}E?1n1mr3%zEoNh|5%p zztANS$MrWDyVzdi_FL5mR5F5|17BmJ{N7{AqW0><4qDIBaxe%M1*rZQ?2O>ORv-+4XBUythsgXq5$vL+icB?PuFD|D8X7qF@ z3`d?G(m-F>N2#%copfiyAO)H|$Q+*>x4?QG$i}7)gKJ4hR-A3Ul zpiP|l%RsgBfpWMKH+cn<4%(&JB?hvoSwx^vzEv>kOJD}rGg(}lt)x|j|-`FIDwYnenXMJIIMSRL$_$yh{{v`kH0vBo-Sy_2K=AjWXq5wc)TnYO~{T~-y0MbAP< zDKXXDr$%+P|_t&#+vOMQn|=O$;f=HH@cHE8)Q{=em?YIMKj zxjKA_Nz(PxqT7ivMjER&6)&#Qu6eB9f6+c}pA-rIIXX!GP|!SXoZ0)ZAS*9+xpp~i zZDI`%hM(iTlbI4s)QUHV)&}L}GBB56dSic{ae0&sM~lYI)bAd$79D#_$(*Yl9o)8q zlPGCR`*~>N`fq2vZ&vp$+A1YrRLL9Eqg4xz1Z( zZ}}cozZtoDGzFU=84Qkm@wmg`Eo{i;fz;lBGMV)PB2GYOv!Z1NjN_)mA$g>2^ED`L z(fSL#SpxU%vGDtwYZ~z@`-E#&Y?=}VKV7(t|BCRgN#}4(wQPb^;F1^JNsk~&U;kH z3|}LJi3@v+-%|c~7SZ`Fe$~2xQn8O%?Y=Ago24=7^dOskC3v6d>U4Lf^B&@Xv~2kq z<)p1GBm47RK^a`WKPk5x>AYxS%El3L`7I^!C}Kzs>$@HMOz*_V0|JDjH7}zoHJvgO!?l0h1j*q{sN2%kvr@0F%a` zQ*CH&uGjEQ4Ty+9Kq343x~&Lo3qz-hRTbr=Xq+V|sy%P$UfnPQpy7Zh;Gpqd@oUn0 zi{NlupZfBSzKzQo_bq4@WTl{=lhO{#()=Xzx1;!ddd=d4h)iX0*9y1F?Vos~3=9|8 zF4RTDErK?iN~(Ur_hphjnBbVAkm zCS%D`Bhx{EOZI5Zr}_qmVu*z{j+%r#wFj49@8>190%B^S*b9WPZOvkcAd;mngDYGt zwcZ-H>a%If=TwK*el&(BPVuPVMXpLCnAT0ENyqf7r`m*AhTP*DDRGh@S!*wT0S7*= zR$=7se4DfGkJ0K|y@?c)AW0SS<&P{eA>8=ZjxYBe5Tn^uFQl0#gu^-o$=<@j1J zIPR2&~h&+jd_ z+9Se%!Lk#^5V@mLhcui{b86$mwdOZo{7_NFIB3JC9@?RFHt3a+SUg)B9ljUOXHtiY zbLs00E_cX4m}_=QZmg_7O}a07LqC+=l*~D}ZDH5~-^o30A^lok=fuMOwv;>gZPwQ> z87fvW+EFf|(_GgIoskBc5Y)1svzDCHVWJPvZdkYo2G;kI2F$HQX^NTW2qLyRGKC$Y z^LV3wS-wB+FJwvmhilBu3cq&mPS|ZzM9D0NXEH>LqmWR$w91HiNFtlA8%l(8kGuvo zr#r56DSV@GK4}*|r}$w^>K6)AQ&SMhSR8hQz%BGM5fLO3l5AKn3nqM@5fgx-J_JL8 zb^#!JR*^DWf4+O5=i+=%0@#~uVvko+5J$w;=^8QEkeq=h;CrlsHKGI8z_%aRe}RYL zx9{Kehf}AFOlN2ou_Huta&y6CI@|Zb}IXB=Ll0u)V7&2B(iT6$~2wtcHG z%g12#kAFBmo&@MjV+Omi!vqM;-f{hL)lXAUrI82a{lNkq`@H1rMXwH?{#u~t>SXaBcb%sHb^0MO;4rF`k#;6tDj>b- zGKGZGo+XhlZWx-WQ6knZmo`K302z6z=6*RFWau9T6x3#^96veDs7VWxnl5q4IUE1) z)xlU32m6czEzjSbqrH2CxZ_f9I2-5Xf0NE+JJYAy4$7415;{61H2#6r+q51&klN(k zhQw+`ckxB6*0s?|i^x9aMf_9xU82t;@?Eni2?FnPz452*Z<@n{CF6}rmstH$Y_$B3 zIPmT2UcGQ{@o+y!e*%vKQO4Mq^u=m%Xxy;Z-pNUC`qDh;?K{?nmF3+huj?&#vd+*A zdwZUpZczceKctXG@w$yCu+`67)Q0>yf#Y%V3!o~@`ZzP#GxA3{T)ddof`@xObcjT*&hJ0M9 zLgD1uR6XDyp+v>T#SNmocxHmTBkl`wQMz&s#xw7%1K6Q$=S@-T=trm#Fs#inP&l)t>Yh&swGq zTKQS@*UV(>_gCJvRFPMn3aL&q8gVz7n8KsSHc3af0FSb_T1*R&q4y^EiZzAcsmU0G z{Qm85VWU4Vi}P9ZIIsrl5mm;6=!ke+X6yU%DhgeR{J#1t+qLkKseRFvah0|00T=`e zpK`02=Q%INMp8l#AKjI3W^x}dWHsNfjbXq+s^*V%rj1wE%#O-F=!GnWqCpybKSIS~)UtrjS zL2hC|OpQkAcf#V&1u_|uZf=u!_VdX33jKXC#6XD>b9{XK@oEOUs>%Xg35+B|kqEZI zcP>v>vhFT0K4N03$%g$`wb!5kb^)Xw#QjLqeRUN`2*rt!gwby>84XD4>Rh~lbnq^H zWba5J+1V2JOK)swW>=vur>FDUREkN#;`Z*Y84nK+Cch7lVNZC+Qfow@0yOwj^fG=k z9W4C2KAMRtKyH_Ca4V8JLGNm~%(BGiDVve-pEV>f^J%_fG=j~;4Uj42A?M!qq38z` zm((gn&3q$7XV_9PR6STrqU1^L1u;StMkuepKOZUzj!bR0ZVbNYFTfeeoCH*PU7Szz z+$6qbVni3=9Aohp63cz~IJkwt$%%K{-7?gH_c*+9g8ikwWAzy6uBc#({MlbZmPN*I z0(W2tMLE|pM>u}~{aDi)J_@^%q+-$DL!U?<~#^H=uUvhSExT7l$XJ^y2X?@ZaP zo2PP8FD_44+KG?&m&SN!i}8R)nq=8xvl1`a}XIPtOlao=8sx3#MW0D4K%}Y$MeDCe^Hk5`ppWZdp}NGhMQ5>L(x$Yh0YUG}RX%XY=aq#6;40&8JHX68WP+cR{=$HylkDhh;Rqgq>QDy$eV$M&3n z1d~@Qt{MkrGQl(7R5&v+qlW-SNYH~)z4pVr1w0}m;w2E(U;B~tCRj+HDE{u@q`kpz zP3YH3P0=Q03ES}QB7+w(#C z-%Cu6BZU{kn)DTy+2nRtmu*A5R@{=cqFVnPTHZ+$x&NKX+d59+#8^Hj}8;8y!fqv$MaZFeL~E!epZ!h=AY8 zYPQ{am@1-b?7fgc6WzEutDa<|60m|3Nb3JaVDY{VrSF&3T1b>eyEZ$2Ls8^knRUcL z=TcahlC>$Q=r_)MrYYp9(=v{*m?XTZKL#Y3mZbV==VQB$5(k@+tTnhZmjtupgEVXV z!5p$g?ZAT zHyN$*hBHY12b@<-6m`PlRG${8r3jC{xx4=nh)&~{nGRE}*g7BLcujL$90o40Jp~s9 z>~~YQ>uy!bQk28|DYH2sg66vHQa#6)_?8v_*k*QqK01aH8Yw@oz`nN?X?&_2PSAge zl7?o}tb~OEKr)LigAqe1jHSxDQsd{N#pKyqS#AyYV$RFV^!gOEe@(mDDVo_PswyiT z)zQgXjijGqmfpw}Pc3@)((>G_TY^!u&qH;;wK58feBimiY7Cqwz7JM|IqQ~gK>HzX6*y+71A60Z1^VN`B-WK0*+LcRZplfHOjQrLbWf!xz2)O}{_ z*lK3d>`TYxo^D)eDd-vVy4*&(2*??a|3i@yotiXQ9M?LbRm!y9 z2v}Hrn46mm$6=5B^^38gvGH?UzZwf^{L#A!iBTqu2lk){jSlULzrV9ASyD~f+j@Y? zV1P<-_fqRq*)Rx?PsE~jr>la1FW!B3kwWGiNx(k>IOHJFnXYvLiJZDBHzH72LJDfy z@2XO?C6|zqD16X+t!)NHwBEvfuZaKKnH22UECzvPzpatavF_&k|WIcMkyI5^r}So)-mEU$io zaHlNTYV40~4${W?uDAdv1&RL7^jfT$}D&}QDXJCAw8hphE>~SXf-l@p>0q+Uo{lP75B8};!)t1qgW=*y|d z&ovw(IGB=GGkN<68a6LwW3v3@{~L;+uY37yazucP+jU79hskPyX;F(EF3P0qiJ`1U zFC!XBxcwBx@d-m##LZTwhg|7oXMI0Bth(rEr)7?L?&Xo%Z3=eQ(Q|#J@87=3l`M#M z8hr-LJ9BGk^yj&a06Ifka74s9CQc?3SGTuETHG&y9{^Fa%aOrCo%PfkJ_wD75U7P2 zN4Faj4Fe*Zt%UzF|@8KsqL5Z6lJZN1k|`>0FIwboYQpl(2Oro*zlNLQiMC zyC%b;%&z!7Bc+afM|ilyBFtZ)@49;N4OXTjL{4T!?6X<$DXFLouJ-xWTkmB7q3iah z{be}Abvam)a_70*+x>ircN)OIijmDG^^7ZFe-$9_kH`a@42 zk(GUyVsU5hiZ0u=-fX-~T|a?mAKyqM`M728UJDvg%@>y~ZhZ_Al~FIn8kpA0MFi}#m$KsqfamXEutW?#`5!4PSxA<$)Ulerqm=>m|hvsI}IR@DXC!)Y89JNf4)g~ zZ`7RGhE>Mp1&!9c2ZGR{c)=^!K0xx_(eNWoCS_eQTNHZUgIEyPsEYw9-#%um|}bG^~&qh>eT zyWZU^)*siE^115Qe|Ra-KEPuH<~H5BkP%-Agq=x*mm?bf1iWJ7F=5(2^Q??*itfbX` zS-0Qx#%DW@(l7+6gS>q#kLK?nO8KvtVJ~Ay|5c6kz^q7vT$NO#zWSc|42dbM+lLSr z1A+4Cmq_sZXNas()HZi_yW%Mo{|}r$oUIHzKR@3;^2mtXcyP6U{9^;C4nqGf@7(TL zCj8H^J9m%$UCxke!jcGOxk4Q#$>I;5MKfdc6=YSSqxRFv<-BhY?gazKM^eIk4&B0k zOb?eFu5XW2{DOrKOZ5{hC+E9n;ASr~K1uZL8&1UKlai9UZGZ9f2a9z*5jdlMIyxeV z`<)|!SO_&b!tA=HCJ_l$Hdqm&PR?3R^N?V$4CMBpp`m|G4ZCibNBCSG%tV3ZX1=FO zMbI<$^)qTGON)!Ic4NFmjg85fjHGw}@h?q76?%mpW+1kL74-UJ`1djTFfUJgH{=rO zd83lwEPtLpcqL786UI5yyi1X~eR!z0nqx|&*Oif%{{&%7`o-(!_@(l;t@jk}&`l=x zEW>MYpFL@9Y;3+}@&p4Wr!$8t$!n!|NOAD#vkEI+-Or`U%^=9tiB3J|3OdZjd1xke zST(Jc3iE#^Mq_OUzP2D4r~{p#E^CH!mtDRZ`z(h`#k zpvh20`@b~sZPIk)d?>73PF}~C4AE4~{HGBMHh|DAd~V%?B|=vFQOY;knr(_RNk#^f z(2Y-;p3v82dQco!KXSEZM&k>9ZLy(Q^Y*CkKPcjI2>(IL4PmFn@J=~OL*+Y@dh0qS zge($LbyZCbJPZ=<*lOjLO&LYAlW3AYRmFI^WQj{jwXe&$k_2AB4c=Ce~jX zr6!NF;@d;%k+!A;0t1NNr>F94whJTAP@#J{;|%S(97yd~$V<&r@R>*i5&2bBzwg}z z{O&g8@1ok*l@9Kwi8pZAO?{qEs$VJLZl3BcDBwSa^n2>9?xUnIy`KHEPjibVc?hec?LCxLHde0AYmt2r(AO!;TlI~rNuD^xHj`!g~U`A`Wx_~!pS5yK<&`!+p@JIr!WDn>SoE60GN6{>X%;qKNkS}-IXT8 z7O}ChU-wB!NKSij%29v?Xo-4tu-tzPdg+}@x?fbaxLrBL0V@Q7d6;{R^Y}fy|Jwe` z5SH)+StC5Be*$TApFal&D;SgwoHO~jy%?h}U%dC{G?JqO?iu$CTMc0 zo6e~#P*MJ{b*xb>S7eRJX2bNiN1BX(hbPq4dTZ>s)Qn1cMtsYG^UIenC2D7I{Li;g z`1tr=Q(3;JFq>vu>1D`+IpE)#%4Ubq&bmy(r{5FT2V#m8HL+TKMQ8>HT3$3s7`kTe z3rTSkT7z5DUFZnKkCmHM=B_-Xg=&2IWf=b z8|)(n`!+yDIQ$kM3_k;-`USBtZ*HvPJBt!Yy- zf~l;dGXfB`H+}v6TLq+H4d(qh)4p%eDZDPAAdIfB8|a$r`yVusrSkIBE4*t1nrs_V z1PUBvFIg!8ZZg|WU*2{~ljVIy3p`4cl%^X{Ik`C*jnChj$Yg|vg)u|q8yj0K)+DsQ z%!#|mAkxu|EZRMJk;!64U3|g72UWv!V5oY%53!h`bT!$nD{CzSTYS92Z!-mGp%{*?aJr|b6G1HxK;Qu2Dgb~ml@D;1WPK5$#D%iBYnR`NoldZNlK0@a zj9eB~1nI>14M^@k5y$Kpv|zII z;r$0P!d+dO#vR?fblzdGyLxvNrA(vk00qcOG#TSzvMN1nvm<$*-iQQ=hcN(V5vVcr zY;Cng=Eoa1DJIKx`PbLiU+bcgOkPU`az@4&_GPyWo24d3&ud&TXQJvMcDs_Lt|Izh1X%p_`jVP+)#s zxxT@k?709HbdBeg;yK%7lz?NWK)LIA!fk{%H*^+n)uM%GS82;@D!XC)p33#)U&_HY zo&MutHwkIx=4xaFNe_OH8H@BSaKd>l3%3Rmyg=l-xw|tuZhw81q1IS}!Kwp=Nw2`r z!@np;Q!sn_w`yoP!Zsc7D=lDtV9~&af42oSURND{o@z{4QYcW$dsxb5rA@nYzESpv&30pbtetvc(cOxfpCol}EylsN zbf;O(Gd`Q@rV>tVMxy}C{Pi>UIyy%!0HxIf2lx)aS_5S1`Z80fQ=#{j0vGQ^{abO!4ZHH}2PHr-q-V~Ta zzZC)t3%OmFe3;|PaH1k2YW_s)%KZVRO=|7taL4$^L#ceh0GC*oB~>Ay{fU??{= zI*v=HgpAjrp>vfGem4$?d1I`sfor8SgpJd;?Ol{EL0!|76&IMguq{q!4yJKP{EvS5 zQnoq3c}befM@NUQ{plJ9XvP8p?Vk|W2FceAh}S_7h!Xyn$GF?uII@MfxHxxk9#3y> zOph1cg(zOz!+;+9Ra3A~klymANAN>e5nd1^!@bNd^WOR8Ypb-9mZ#qDFhJ2c34v+2hGB9*;uv(EhuNtntUYMU((9#-mUGeS>CGY|29*z(^45Y#yV)3@nbQowS|Fm=cbK|XWJQwHb9`Q`^T;5X+~ zeyRQ&@Ms;RWPbQxl?%4dF<4PHuznmhKFTzd)&kpTZ_)pk$j~s*PfxMhh@qR`0M;2! z4iAmaTNr6HIFfKMXiI$B=uP+s`JZBeK40*_0M+utDGHrdpGB?DOjw6N2hIu9&(q64 zTVC%-h|G%MFY;GTA zpLg_y0s<*$sW(bp`AhgBwdmMCaqLw)Qa<0mi)(Y^zj!-(4Zoc~vz${=@vG@kM2iQB z@0{bpbX4!G^KPp5b-F13PRHd+zRr1ts*US1G+~0=$ zL9pzLWy>)b^?d{y!9##Spk8l7tFB(qexx``7VB{>&E<-q*OfPSxzE3u`aZ}4-Ga60 zfb3_p4di){;xC^UysdlZKB}+G<&-krxo&r)|4!ONUFPAP!Y~YXCtQeZh@%zr|8&3r z#gRdq!(QR?YkTI$xbvw&K|!aphEbmgd}CQHr|tIR&8xou`=_+*eS_EJe9*&tvnT~j3+HS2 zUlYSF1m>lJi3YO~!?w=1rt+m`lGpZv3yAXb+^!10?ii7flD^R!J5axPD%`EnfCQ)_K-iLze0{*!w`K{GDX79!P#^(Z!SEYCGFC&5bzVi zz>@JV8g_)bxWTQ4rly!I-9F%dJxpER@=8x)Uvh%W;GRLbqy=f2Q^%wEXvsF8R=?GZl5O$B@-__0{!utug`l^+xv!E{``|bxjp>r zdS>TZZu4*&V+cS3l^bm@ZbMb-L6}kMGb^$4M7JeWHmMB0)rM;= zP>cvAMX}W2{gK3!ZWpFtgT<(g4w!L?E zJSGA?H8eQ*;%a7PVye^jxQ+;@FIz9vG5J0RuwnFR<*1e~U+zz(b#;lTlt0JCkq_e; zXS#3uF8Vy+0TtO=sVtCJ1;+eO-~08;3fcAAQ-bq>7idXoAJE#$d$aNak>&f01&p8| zFcDy;0cTb@0S&(0X8tv+#ORn1_I>H_GbT`UqD#EoMCqC{K|x=gTCXebigsxKqxT3I zn8IO8xw9VS==DM;gU9}}3ai0M)^DGWp~5#6;9XdBq)vVrwP)D4yFQX~?3W6$ zwT%;Ds+C_5d~yHChvwy>?pto))4&6XW%&df8N^v$Gt5}3-OE&|^3MoWWtl%$uxY18 z$u6&ceKk+6wq&X2XN|wStH4X6oe>(YHgx0mfxOA?Z@q&D1+XKl*;ZC^%HoJD;7uc79o3>P6{E3^JyY2oGDy|CXTU~(AiAhR| z68dbqeMw2v=<@~<@!E_9`*mSjxp+oFL#Jn`C@$r02o*%u(EM^O`~0T6T~z8#ubhVH zo-DO=UGtNv`jt^$aWUNJ^9>`L^;}QV%9DV)xip!7UY-%Y`?@dB)hw7o<1DW`%B3AX zIxOGbf23dJZ~1bO6H>*riHKM_!w8NNQKyI7>8y3&>9tuVhaxCa%3#2SqOY$Hc(wM| zhw9U%n!S6I-^rZmjKEUmLeyOCwQGoMx?ua7VRSv1x8>?NIf-za;?K`H%Hz&PSxga7 z)LDNiD6jox!SHjIAke@UK14=m*JM<%S?{wbd%eohV6X#JBo*`rtVOEHKPhLyS|A`#bA#y?GC1Jm}b1?ZA=3Bj$o!wPvs&AW1G*;-``%4vB zGT}$`w>Lo|@IPxBqBkCHKH^lz9fq@1H@Uc6?>c#?l->t|n2j09Xs!UG&Yo~A$6;@} zSDaO_389WIT7uhQ3)aYLXafymOr^HP+B$g4A+4CFuB&ID$y~EpsRo@3q2x9R@NB0r z5`7Tym*}MGv4bNL)MD$LNEI~Q+iR6$D};x1S@1QfZ*Zc^q@3ZFH&zjI zZIbZK#n!s`KeqQjUZ^C^wv)X3eKt5$uN`@yL-^5&1N16-qB{DdKole{US7mT5L#J- z_nJ-e(K};rZYd%ff*tp0LC_fFseR)+a$UP!J82gHK=wf0EOxK@LqP!MF(G$hkGjbo z!i?j#7BcMjLV2o}tkwra+u!#a9M3WnPA3ScW^(K(jP{CM~-y&Rf0m38aR ze^jpa2RlTJ{J0nA1-F&8b@J5|3qU>Zj21~OX3mZGcMRQa|6v}JlIKqC$tA4APn@Bc z{*;o042GO3$_o7L)_Z<=$?(1}NK7QPwe{&@)WP<+T%6Or$WvPbyQp|(r)~GdF4p`x^r($qbHxVV9 zY)kFmMOx0a+>z;SJ3-=d|NLW$yNvO6&jY$F&Ha#MPt$c9F|%1#Qlew;>C>-+8QSqS z*Z@7V%ZfxTBsZ_bZ_BXfe9yJ|FJ0q{um zI_-G3*y0`sToXUx;+E9&e5MO2rABvjdJvtzIg}n8;jNSl6MP|~L^WHe6};|BJw6ZJL&Hf%XIPUV!L3Ml7!1vs9JU@)tdh5h+h% z%R3uycr6s0o3u!2KP&c1+4_FXfNGv?^`<^Mvxfi`VWs^B44ciOA0WaWEdXELljXN> zFFTjp9@~d%tEzG|ShF0Cgh5utWZgFu5)!(-7$pU3>*TI;*~0I>e|x{P5hb>9Ovk4Q z6r^~r|4qx4et!faigF!1k%AC#aBw=l-W*a%&tK%^8t=W*plbW`_NSeeV>Zp!HN0xIJ8L`m=C%5a8QZpanZO+N+Dwi&Qj z^_l0%NVb!h2m+8ij7&`p4Xw4STzC14EZL&lyxAeHp&ksUn!Z%tm|GgUF~!7M_~dA9 ztwj#UElI32Df$u&s;qH5PW4vhop<~dyE9%hP*9u%0Jrh2W%P>W8uVZd)dQiY32E)T5l9c;cL?(k~?1pjrhAB5W=O^-kzZpbU@u;5N`Cr zwmhds8E=G;&a(@CysWj_l^6`k+*(2ak5WwGXuh^cyO|B7$iw;CxN6hUeQg}^uip$G zQuA?_+hXdLJjUz92ue!A+}GM-<9K-be2$!}bbZjmpdPkgmd9sAbRTQ09WDo# z`9L|qAP8MJ5#&Mg31g6aR_vTp=^9KB|pb*720RyDA9uG&uUaj3;8eQU4&0lWS{ zXv0Mtlg;BpeE<|^l_A`Ni!C{q2I3XaF|6=?;k!Or2~9{q1J3O^rlXmchgg1TX_}Sy z>hpjvApZ4ho<^<3FUcav*sLsqSDN`;)vM7vL;chCa9TJ4e`E|X|4$&1k?&vy6bxTK zDd1vBcwOE=BuI8w=$Gpo8+U_ws>6aT!J>qU3Ct+Gcd>$!y7W+Ng_1-AyIJVVr8I8l zY?9&(u^c7pZ38#Dc^2AP%DQ$dnXD>7Ph6nRT2FrU+bq7G+6#XpQ!Eu^Ko1ZR5vlOH za{!a1$iP4-aQ_qvherPUtz3-jLH}N;sLymLUN6WL@3h2{$IosD)o2kajR{`Yg4NDA z>hWbh1O6{%9ofACasuo`TzGxb))PHK0nCDGe8>I{8+M)hG<3U*@k&xBld?oE3xQ{C zE$-o%IYLrC`47LZ`g0suNPR~6{??4Y*(GDO@@M}s4#o+^U?jrcV!8|ktR96N?A6#E z(z}_Y`ZO2a;K~b%ehd6fts#y4`>Gpl%;yS znSK~k&zvq0NTqPukvqn|Og)bwC6zH{ZpX!?dfXUfdo zxDSrz)*KOUzE1zCfEM0&2kKd;HPWXw%jE1a%k8Z34RnYhQ+3sBm363&=F)tvoxMw9 z5&@^o^xQ?`;J>SVy`?s3fA6CUCHexdXDk&J_v$oD2bQ6<_67#mIU0?Ou9@}>BFg;L z*uiUh_&?s;@PPy3O?f0ax_E-qjbWtA{Qn&;d^|LLftaW$r1EyYba1N1>#Vs0f3p`+ z_8%@(Me348t?$-38x<5LD9TcQti_fVpl8~ClDtoKHbU}&?e95-BiWjwR`b3ht@F<8 z+%Kk=4_Ty|)+e4MCD}ar%;(k!Z2?Dmf@B_<5ut^~L8Tpf?LWz#FZm_Is zX@DvnOs&T7K{?XSFuRzZd5S9{7#nqhUH#!7Xw)BCmdQZkdHsy~{lkt<6C0?o2#2(Y zMB(#Z&eNy!blsD-|71RI)%=2*QAYe(sM6`rakFr41F){Hx43WGHOnjrhZ* zj*(io2ReyJozqU&)t8X7tr;Zj$S*8cnTAwB6z>D{f_@QRBy;=HM$Y-ZMUIQs$vYAz zR>WlAVc?xt-YLaMT|d;jUymky-;LqH9-gxD@=Ye`rlUf!_qye&=K$t_?=d)7CD%7w zr+A8KXXoya+wNPNEPwx?aHi?~Otpk$Q?IM;=%2sD<=8z>Kd2=Wkc++OAaTa_#nZ2# z`rGLT5xTpgvLv_r1s2<%h+JzysC;vGBvJ6-`W4?Wn(05$Xf$!CQL2x*(=isrS;Af0 zo8!UC;(GN?IlpwpN<}S~NnBcLBh0pKOQjDl^Jpei5b9xLbGNUI_uGD~JN#r)Ti z-N}3VjM*1g#GXTiM(q#y`xy)J~DBdD=nh+#hEtXc9TM00Ri zhmR03CX`&uI0I8tgP#Ar9Nr4LiSS0E867MB#~=IX>FLR4Js-c| zLwSnHsgA|NZ-9!v-|4+`N%7Pn2qka zZ7{BxKurw`u}8Lr`kmar>8(k6N0K1y@*o2Xi09m%Zm}|=xT`TEW3b(4fn7jljhdwD zz2RTppefhe?i8u6u51lCgNRv2j^=1k9wdj->nXBg3n?mSM!3jZypoAb%%4P1a=m3u zq=f33dwEa(UMQcKs*k59GBd*HF`f7eV(%ikM8!^*_VR-P{frGcdW%2d`!BDzQ+T;) zTudgrTDyHNj2D*$iDdp71`0H^5ju@dCzyiXt&An@t=yRNVX=S87wRaXFWe6{gdif? zgnJ`{7zx8Ho|ZR-d~?PT>-#YH)8Om;{csSQm6Y2~;rjzr0g)3yGvFN65RMm7>-+8^ zQa=Qf*#ABIj1bvYf~3_0kMUT#`>mUNv+|mm1B=t%zZgO!h7tSR4=@NTL|f4l5Py@b>LDzSdwg4G|< z7j%BC(O4~4d{(5K1bQ3yt=v(phra~yPj)=cIILgv*F7fzYv|Ro3J|eJ!?Bn->{cPL zu%Ko8K#r5sSDzQSiRnq|UJkg>94Mn7SG{;HXF-mxta)>z5ppE4)>F)wELH5Ed>|TW zYWe7f_FVxw(;0rjS>xM#x`$^}QIj8M*ApKS<5_|sTlTTk2?b~GCb-Lr{5p@~@?D1p z29)$j>GIqjBADcBD>Nq8kLqhE;>Yxp&y0~&Ll~8vch>A8fU^ysh`=@@nj2+EIeLbO zVP2Jxd^frAd4GNAtm}jbw$8^OqDhNdFJ4bXfCw~Nvs&CTm@i@mzOlIB#f=`1x$$WK z==FWc6X|r0oIs)8g|;U=D=4d+UXd)48Qbpt13jT)s|V`^7mY-hH`n)?Qf`N|e^-~X ziTQ_CEHUzCxfhT$k$*$iZ+qmx!7tb~`}@X-_4fm+2R~Z|yfAud9|em(shmkYq@9aP zj_nC~Wo_-&pX^*OE}swo!_-+uRTXw?TUt;+=?+OrMLGrP?oR3M?(UFAy1To(8>G9t zVH0};-{O7G8Rr{A{JYnN^~`6+J+Hgiv{*8oJqmTh{e#G04>J4gkptv%w$i}pSVz~b z-kT3?9ardS-QT5BBWTcC!=us#1lD)x`7j95E~nU`-H`@(BH-JmTwhVjG?6R`Dtou;xe0j0`iAkptN3G zTs)+ooS4|2$~c3tU+Fh6J}2ZYq9p^yec6`Neq)u!u?>$pH6mUh+^X^N@wnaY_G2TQzn;ath!o3~y+U4n3$j&i<~J;kfs0r*~T* zjF=7$cB@*>R>bJNkkgJ8nu0fnbX37E-=X1wNy;PGw1Ei2I|MeHeEiiC@qlrEyk+xz zf21ySr@E1iC)XF0jg~!vuzp>tRNUkIqq9ria(I`qqrhv8GlKA$lm;CJWVPB97)U4L13V1{!;bI{lU~HICzcS< z)w)7_N+<{N+(^8?qJIy1OQdKql$GJn{&G=@D=W(zPwH&85_=b@#R-prw=~onEwuBV z%d|Q}!@HC2mN_34bFbQjMDdW7UetnmCa}iO+6EU&)Z&7j^|3O|luTz^4F5F1UD{M{ zJ(KRQO^!CAvD=c4oO-T+Jkg??f5>q&Yc#Qv{yEIH{$qdQq}Kvm+knF>*+iPpdG5se zy6<{B_?zoBhTHwQ<)^9zGnOqTey*$4kB&1PsJ;gJYUR!laC!e8Jc?$jHM`wlj~T^$&5 zbJ)CZ02wI9*YM?)(l{FWbm ztc_F*Ik_z$0^6sO@Jv6{Y?sVIovwXcv1i&^9hl)T0*u=c?%Z)2L}0O>>*LZ<8Y5vX zG)w(urUz_OgyJZI2`9@KmqA!TJLm7J>^)6*B#O?gJ=XNSvCbBOj-Jz7xQ|QE-CN;< z9-jEx{=qI5mam+B(0BItrwEex0QwcDD$Bu&)fEs3B$>)hgz8L2^#xT_YC1DTAbYIU zX6N|WPd-~0_)X3f@q1E6Jd-=Wo9(r;vwPp_5ja^9C~FP2nqjq|Fr8o&?7W7TPtIX`6nV0(liimgVHyy6s*mG6!d0Uw1WJ#3`zELJxkf#DwT#%vA3b zeq{K$P^p3t?BOR=KwVZIq0Bfv(1)kiY8Oi$s)I#WU|E_d`2zWIdit>xIb~<}h$Qj3 zUA?m0&?b*5%95twYm0Q_MN*G zhS^3#yZhG5tOW+DlK;%Wz~|@V)M%~u5^wFBfUs^r8TobsESDXCj3*#BH*VbyhpreEF5Y<|l~#5L zy3RVl^@KPO#=`zN;&jNrBy>oW_MPaCb9&a%dur=kY&m$J>COA6#qox>H#jKhx)*h0 zwp;@nFtzix*yuox6xN@A`SIh&xc0r=Y?+#UflQ`vW@e@~7--z4Fd1I!qvO0ep1(c! zNRH#ld>i=O9S|Z6>ZXv3t+v?xaqJx5JNQa$Z?eLdw@RDOAD&N5qa|Vy6d6ip%VF}F0g(UT#B}Ou=W$>9rx*}+tfbB zOH<0%PfY_=YyAj#@EBg+(K+gbyBin1ObWUOr!^PR&8KUTjlr3WsXM7|D3qyuS2Qdu zKB<*@?oON*uLYuOG%@mUQcpNKPP)7X#_c+O(;< z2l?qj?kG4P3YzC*V7{Z8-?d$NradB@XV62c;rLxnLwv^cjb4sF1Oy~`4U3D#Cf~V} z6fy`WJypYIGjX}UdGt{9HG^4Nw0AJNdzJay z)O6Q>-@8J)dEm8TJx{&B3x^Usqf{fEIc+{GJc!0;^!vQuIxqqAe8UUsbv!Ts`dTo_ z0kyOsvbe<_hF8RS=W54-4xf$g@&%*+kA6_CyTiqN{t#H9xf!oc>~9zcjH+B;Kh@^p z?ohHE8M2Yc4;2#=oQ;V`4z{K|*eAjM>w$6E)q&^%$8BTsXTY}RkG_q|BV4=XoFgRS zbeh{zqmf4b+c7_xj+Jj}?Vp-LR1SBFL=C-rq1x6D+o1Qu zZ}DG%;B0Cs<&K0exuOG~(A_Kc)aPc_cwoy# zQtpndYWVFk;;#AWKz{2;qhmj%kAxiX(KJe8Y;sVn04%cJeBpX4nE0FFhymzyNlG{f z$ARYko;c);mT05l64E&Ei%A5lw^L^brdOi(k^ZSsN+|~FJq~hMaF8^m$f$qihm%X| z0b2fBh$sr4BD^@J1D=(K+7u@{NM#8$s0p&#JTzSNx_M77l-!xwqv+upli+^^Qk_ND z#+9Ycy1^evO5cDE7C%~cT_Me4y2cX^^>xflTt8`IDw&7ivb}2B+DB z*4G;~Fn;NZS)EXafm6&yati_Fz2Cd7KXM*7X9RW2uYR!NaG6nfVmrdZyb#n;xZUASC`Bj+tBTjw7;6VFlvRIDL@ILdPmnGYg}sA!=_T*_DW*SMT`mmrUXV< zEe_|ZyJt|RmUC@03vCM<1)hPKq-zBdB5f~e(KBM+PBxYf5&u01ewRbFRaIFERNe)W zDI=woDE+guv%2XgDwWqKr;Mr`#(2{zlUZo`Mq|e2|E+ITg$DeDOrYI-|IlQW*dJ68 z@nNkPgY_SGG~>Iwn{^Hg_v6p7!JLRQj^dgp4ZD$(#x-6Swvs9u)_s8kDxJq7Jh!Sos1|2Xt64syzYrKYwWQvPP&F+=0%iq1AAgBUb8%0G+?Eo4|%C5EV z=&Uk<5h9oNQPpPr>d25EtgkkHGJpb>~^|;DljQ*K4d;wiYGuien$u(dQ#$`;uiGv1+yfB`tx8$>5i5As0WJ_Dn%|2jqrVE-FFoh1Q!C60KMo1#- zFmMm2Rj*Yks>BMmk;MDf)iE1+@JLu2EjMm>q)QVnr`CHqIkAe}-^y^7m)-Kg^08%k z`+|p?z2fj%QU7XIxaj_zZ-4BJv)!~=zf!O7x{AzhZjAE=f3VafpiVG2<%?jYL`f(N zl`o*som;*;tb3yR^z6=;&Sh>ZCo0UKT*@te!K+A#7a3G({QA=%o*?#mc*vmd%tkQ^ z^kAh9kBcja;sFjuo7HS;#~bSbrV`a!0l0|3U(Rkq%?QdqWVHf zzi}6p7P{%LqMjv>b?#TJREp(Nt|~e9x-NvDs-mulGW>DyBw9yqfsM($=|7byW)Qg; z^+-;eD~DXMVx9Ry6abpH19UPCmf)nKBI3awVaDysJC?k?YW1L~j23|6F~D{)+G zf#n>YW$8TiZ+$uI2ZXyPZ`r}sg#gd+p|O;WsX`eY;Bph#8IY=KY%~U) zTFcRlI%g0Ax}>BeY+$8W6$g9r&B^gU{L zDqEiB%49iVJ{QZz40J-!jwW2W@1?4N$Hj&Q^G~u`R%1qgllB(p0SQrV>r}HbB5Oya zs=l5-e}-7%PeMX}w?6`h%Oy!gg_XnkYDxx=`}Urp0ldfCz*Q+y`Er7<%J$2u$D#XE zmHp+(Pm^WT<#sw173#8hoTf|0w2hB)DiM`&I&io?=VYWHc+I8Mg~T{SiH!hW^lVd| z*%e?|c)9Re;>>+}UumX~bD6K^oGTz#viW$Sdqq3Yi{op)xy@<-_%#C~@{PQJ+_g3H%tr|Qa!Px^FC_fqrWMCw_0K7prdo5#h7 zlO0EzH;Hzivy2$^&r_UGuB^buuxz`~(d|lnh_31-_w9>j1$5j7hm;+286nL5Z6{;i z8ttas%B>TNI)8NZ$KGfXzN7^Y=!~0eQ(}&v`{xMCAlK0!FYcXU;r>l4u9M&=o~%KH zz>ZNr5=A;BF-f*RjOo%j_pSJn42^*NV=~Rla4|Orv4x=bfkR|WT_sy~D&J8_`%o#V zg(V%CVMu5ozxuvUtAVgZ$|A?Lw)ggAe-ME&>55p7zbLDYlW?{(O>8s8zS+`0lelXt zDLA=3I)*FT9EwG6PvK#L6cM)l!MO24#xpg=Att)W#v!}aT#<0nop&x5 zrr_$~WVO5AyNb+cs08jyddD;P?Lld%pGT*HcRy$K=^ZmNjmuUi5Yq;TPu$h ze5WZv@Jjlu=dHtxw3FB_W!AjslB4iMa23Xq6KAr&wcYWhlD))q^5e)d!o7M*?slHp z?qp@zb?Der+}*EkwI5uTlJukB3aD-mIXSsK-lj;%z2>L#6D;@~K-z#X*?s(p&p9Da|GbK2mugAG;c zJY+m{M+DiZzg(e^0S5l#W+1k9-_p{MMI5H8nHkLotg!zE)k&?;L zMkH2xi@y1VY!DA~CUntxRv&-)Cd695xy1}iNsHjpT5(Nxjb2&n${l=Ab726NKYP^V za!sBU{g$rTBB0DXPENU6$Y{+Kyu6^sO=Z_f2rb;(EOq|J<>rJO}VHEoS`0ji{J52xJxie^gBY#II?}fPBy(#`F z^(L<&8&|N(Uia3y*QPQ$T^UjbV=OrWQ4eF+G+zWlFtqR}__hd+VJ=d|m|FCf#r5ZF zJDQv2B73(gSzNj}r)ZeZ!^(9R==p}^Bzssgy;PuZYxDermDi@h@9nwz%$|Pl@cGUl zD7*KY;0zq@1I~|uPiuR!@d=^dKNKqW%;N@f8MRwoUNZ)rRX6JPw-)F~1m-scA^JX6 z#wETR-T10$NTF}m;LBBryrRK_8kqr`X$044h4c$h9Z4^8JU#=R_Mm#0TgdwoX6VYN zYkfU&<-ZWOu=k0j6g*?CP!F9@bE*FJ^$@V*Jzd$;(6?^}rZ9Iczt$!;6*1{7_ej)# zClll#a*(QQySk*l%FyRDHFB#_-gSwV8a!? zY$rNU*bLD&)uT{p6?>mh`b}$@G`N81-?w+#59@9BS-qXz8O{4D%U?wg*hn{bVwaMD znLFL*n6Ez#5r;gOz$Dn#7-_#jS2f0`_?AT~v-w?)^_-!|?$$L9vxZDH%y1QackL(+ z7TWz~FGxK*r%8d~kIrDAbJXs}+Z}w-u2r;@i$cUPQg-3>&pegQn3csGN4toX!f{W1 zn+oF^_Kc4~Uu5fH{^Xs>c>vm7kGad(D^w}gc*v^<9w2bOME_b^HlATZk*~f}(@3{MRJn4cOJ`IiXI`ug9ZkIb zpF?I17L(pblwR$b6$aPoOmZ)>Nod`rB3>odN(LvL3hh?uXE!^z z#2k17`B{4x!&O$M+B(XH*gNkWEHWJ?x$XIn%S9$RfPy~_zwve%lXbpn@)3T;=Uiyr zS%?an>8)%Q!otNh{YHDZvpth9ak|>MKKzOW{CU7hK;d~D=nqr?0Nba~{eC;W7s)S%50I+8g^3$L7KBk6mh%qa?Et{p zfUK;aH8nL675drA3YDg%A`K-G@=)~zN~$?}lfi^yZBBn1980%PiuqD}-w$DE$!pTN zv%ZX1w{un1DeCL%yUp<7D|P$ilqRofp`?FNCg90 z6Q00i{JJfjWmjP!LDSK7;^RvC#z(GBdbflR8raQWq*Af>!cZOwjTi3irUo>T@(Ex~ zS%z*sm-$eo>EdW9lO+sEgAH1u<4Zd*gx%0ipQKUZFde5_Mg&ku9Nkq=#MYee=`7M2 zR6M3|UQZ2T^UJxL04x=Us)LRZ66Co^UT=7*++l0W(>Qjqx{T08(~`lE$CpZk#0_VY9+g&o&3x@7>4Nu-7~6d`{`A% z2X@2$kx(?EQzcpWXdsWUqaP1xJv_$2yitXglh(`_r6 zwOoVgdaV)3^D|^XsyC%5jeu}`T^k=?WV@_6kaOQtnf@;@jx&EJdUVv+cJn>T8g;Nl z=>wY4m;gEvA`)CmA@npQd5#@DdyEPW0t(^x_k(p7(-GP{;n!yJ!} zF$}zwybS6?MtK9$PhWGeYz>)6?Skz zhkpM1+Y8T6?H;}SE~y3>3XtKknDyPAEGz-KR+Y-*No{OG!tvvT(Q4J!FjmWz=>iEE zO;3E1s|Q}A!2Fw1AyBf+Fwrw&$<2Y>*?M6AIuErza;JsTfS^90pD)w&-93#ch~rxZ z;6zVgvV>nDqq!}_laV;%K3l}L6o=F+^A)#Gqx=7xGzET^*~6>ObvU;H&UN z-?&Cs<0O$lqXg__7HTw70fH^+!u1aV6qGM0i3ACFfBDE>$%DG@ z{B3SRH2-v~QefFHvJcN`ahv(8XkA*pS4zczc4qwdzghsRsXNc{r%@%k3Co}l8oM;# z;Q~<=&5D-PQSg{gGQHu#z|2c_fds){+Kdl&(XpltM)i_%K6VdVcNQ#i_SXK$8h!s> zlT4*4giTvWJ32C#K-X*$9S?R0?3&Dq5RbK~R(Sc`aKl*=*NzM1;j!% z?YcH!^ofmIe(N!qBQ%Rk_`fsxCxPOaGCBkQBpvV1HJH@1r)4KP5)Y2nFFnXs>umcb z@JtjV+jWyyl%0uSYTwl_^71tzIJ$h+XBobPnQqmKdFhd{(K(pEb~kJ2NXf>vQB$de zBuZQM0+EAGrM^1Fb2zp)BZ{(w7PILY#k^c_MZm#t5gB=T_{S&g?`wBHalkZdC z1dULDPU5*+lhenMDGK4PuIKcXtsy`>pE|?I$;#P?2E{ANh+;rPGjhM^iR(W{0gu z?~dp9OON8J8)!U!Kjz8|+TZxbM8w6BjlQayfIzmykrbArAOT_(Q)`ig@zSayIYRQ# z#c1AN;*(wW(=vIGX1{-q_*dHX0U^ATxy|@d;56&1la1D?!S572Jn4-hQIy}mUXYJX ztS7qid4#v7nqPt1^--%YBInKR!FFh%Um1+^UbMCNjaFAn0mTN!!&F`hj2pW@+toj6 zKt5o7cqO^Z9CvxHe>Wj}suRc|kZ_;M`?@aZjTi;-&*S zx&Us#_UZPkq*lf?s6rsPV$F1_0^dv{nCV=PB71gN4}j@aEw+C!bW!an}zx2w7~5;d##O?;ICtO6+eQyQ-R+Tpg0cUh!vYJ+@W zU`P?Pw8mDStB7s&s8zx?Yv-vXa93^4D=e@vI1qNSRu_?0h6kphl)uaYc{kANn97$> zS#GqBR{Gqbj|IEMhpHT7TLNAC7i!Oe;R&8;Iv5F`{u90Q}rosWmh~hco9Da3-#!J z_fuG)IttSg`=}n}0^S}m_pB-DDa6}TDkf9I$?E#1#0-5WJ3Tfw@f|7E?m-LXhqCnD zd)$ks>(2fq>oH`}@Hpc8+gBoYbE?M|mwBj#zZCb25}c1Np?cTmWGvb!1xqa>q$rvD z*C$HfbmW@|9K>bfy=!K>NBCc!ms)(>>1}9!59Ko(l8;_&AZEw>fmM5L_tseUOK2wu zy0VgO`kBb#p#FFzj+E4^j(h*&K6bi$Pk?~>cxOT1p@9)Fm;j_dSvd#>cFdgGxUG@y z#RUq*yxO3#)T!Rnk?#efXk%)4eIT*|g$^t%aV*L6ukh7KJ--C3Huh@~6^4gm6c*-6 z+Tc9Cc+t?>4X05P4In%`2|{^FsN(`!YmYhmpdBhNl$UW+nN3IXS$Kl6d6)j;oBS}`A51r$&N6_npY4?1dvLTw%9UqJv_#Y&?)zpNAC#bojYl*Z-%eAw zZ_25ek&!WB-AUgwIT;OHyOf(=I#Z7(;W+MN&(5O{&b>Ax)I%KM&Z0V9&I z2LGw2xxbJov@kI-v3ovY07j3bUwUreSwz$D)*Y{=zm?Lah6AU!`GQdYoaFVg$9Fff zy$q;?ZX8NE7uAO20xheL{W9MV#fMF4EG%`JViuxY^mcb6;^WUw!T`RSK*lTx-0&t- zT@Qkeek8j)Nyd9iNBsZ&=(nf?EiVNuM7Oys3hPc z?vI@E5buBEpRxQ zM`mMVLqkUw6Pxa=$eKNR-{~IQMFwv6+GmfY{D3`aRz%-#?9&sgsX5hP^=o32)P&0k z+TA_gwwhXA0eN1@z%Zx9i!dBe7{AtH?WJ=8iHgJey6gZyqY5hHvJ>)V3TdU>cp)d^ zv|Qg{KeSyH1vPa{zQpVAjSf$03?#F;l1O!W)Txn)38V8>jx;XkC;(%b`f-??YD52O zdjr@hayV0mgkm8{H%4+DWKbTLH!(nW_PnM1?+yt zxr3LCGyCNsTK_2~VTOl?f9C|t=P8#KtJP8h^0REcUg39reSNzbsH;gCf5*lp4mdn@ zsl={q**RPFE)>IRQxATT`PN2ybYMEVQ2~PxOcht7eRC`pThrM_%_pTLj^?K6wqGjH z@E^Oomr_oW{6iz7dH_r8O>Q>e)W*bUyhRNFECsZ;LmQnj%gRR?H7VX>jua<+@>F{1 zj3m2#%JTpNt7-q4D+pvOh7@Z9g*&?krJsLcZ<7P9Z-iu|+DgFSp?9@)vGR1+WS}&C z$)(`RaTB}pOKgpA((h|6-YR3uYR_pD?4(a*_Uz#zUqSbk& zDV#Lau9>a(=WHhCYcXYQ{nQ)5KDZ1S|-6O&#AXWC|Rp`T0;-mHmS6OY=xTCcST9l`R2sr{;yMm828 zi$oB(2$ve8TjwYG4K_e+dwoeyZsZlfPrqm51&^@gz_*7TY`dzmmg(dSV!VaOY=a|* z77xH`VWO!a5^`Q*E8(Y;#t>VOG zxaNb|$}-pGu07)o@MFJo4F|H)9?dAn7ww=5-thNlWC8@dMiY=AUeBj%08_kkaw6j5 z!Vc(_c2y)-#>dk+?7jL%N<1oYpTJ-s@9Lf8dll47^I)J6LrZ0~+&y1wjUeEVS8RS$ z$^icY#D^9Zuyu5F08oG$G>nY>?V+5136ok1E-c~tuc<8_#o{fI(g_}u<%%C>qcvR7 zViSo&|HS{DzcQ$(OnxD!%n+XAscIj8B50rqc zSr|Etx9NFg&K%PIMBL7bZEU>mwc`zk(i1l`8|rzlpI6sL^Hn--;P*-mE{(H_Jkfi) zLwR{y@NcyF7s4tFRpNf{TI8eH^Uu#CsnmpoHkm)-nw&IU(MbC;+8YV*c z{6}sK;>B=;s!U?9DxOf<_9@;%T9Qr@0^Xl4KNOUyST{aRB%AyWKY$h_<`|4|{VjR?0+e-EH zvKb1sRV+}I69HwrfSoNrE_U#C#uh9!QY5^g2{o`8m8}iJ#u|*ymXr}W(1NoF*U4Yh ztRT{^16@qiR(>p0ZV$@KUnQe~Fp#KdA)=rd0k|##PKWp2-rfLAEGRcuzXM!XUr&GU z^UJD&QYYm2NvZ)T z#5^M@9mq46LamV$xtNHgWCZ^v-<>wv0%O|NKVL2K{=x0jW8ZZBr8KHTa+`*Ffw(^c zW6dy&YNfW0Riw-Hh^$gDBYCLM?Ccz~c~T-7M7K!mbI(nlH#FI#Y}GY2Oz*oyV+AE8 zKMqC{8{eO=0l2j7lM@YILhJyMHGfQlGQ$5>S#L+KNSA2XXRIIp%H!4elLVX2mX#tB zr`GpE7dC-d5^lJS{IanuLk+lI>I37Z?=SY;K?x(~=U}}}$W7^Yj#hf{4`)hh3~EAxp~YrwOU<@6+1M(pS)_U$sdmpd z<@)JOw+q8d%I-$eANxB_V1Oi;Jx`of5E)8wmN}j!yM60*Rni8y5_LQ}F^Gw|`Zr`8 z&-nwJ>kRW=7jevZ+k;a4BV(no+YkHS%DC$2|2(T;*mk1!ud3=d*D47sp)=c+6&O}u!&B7PxxyDSwAfV;d% z@we`uW}tICSGtfTk;K4kwF)cdmz-<@7&WZB0ULy??|DTweYNt)`}8hOgWCV7DZt%u z<0MWyogqn2P{+o~lH+=LDT|_w9GWN&M&)QX6NJwe%I4*fG`suw|4O-4$*;*WI&-@{ zWec%t&+J|vNE~W)9vX}B2Uk~rC*W}lz@$yI-y6XMw7bBTcT~^62o4It+-V!I)BD6k zWg$EVYg1FP!6?G&y1L!#z0u|~K=8UlT2w1Qj*iy7A*< z@^nRVAIe-DZk}-Y_gV{F3PSW3LxZ6+PQs&BP)=P;KXn|DfOtU>U@adrd+_H!!ciJT6Ju>OxC6N_eCVy<6JTZpilGr&BfM*~( z=rI}~ZriVDLS9T8(}b*ICz zE|rZeu@ff)W5drxcz$`a*>h&i0Ez*h%}V!Vo*q~)-#pPkUy(0yvp<@l&~~@P0fxQ6 zxg+0jRFIc%a`=jajg8%|<^^1bfOfYRs9|poCILtu%+LZBGz^TGq+|}TSibEk^eOD; z{}!%azXAe1>Zs@7Z?^7LoRsW_$P}IV3?w&%pD#Nm!X9nxIZx4?&u(U8h?=KNN{au($a1iT>ppGb2tSIF zfpU}_+Jr8AnOa5q@%NZx~8ufCI z#)ktW%bkl37*ywb3A}qvicb1Un^UK=Z;DVgaq?nfUnLS>CMr8$#WY)0wLM)~Q>bMA zR5^FHPtL(qd|_g0+xP!FzB`$2%y-*%qO6I)Zk<$J{VNxji@9aufHnbJ=0T3rRmALF zl2<$8%Nc?+ABcHx#c3I@T={x`qBq_ZsZ&jcD<3-glfZk@<9$dVZ4PL4b@gzikr?Q4 zl2K3u)|;!;I$v~%D;Y9H<;B{PCnWHB{{o+T9F_r}%>QOORYLIb{2v z*uPZP9Q96=yZv$95)T=fl=u+Vub+7z-j!zZ6|A>^zbE!7meH}6(-KP3 zR{0a>8RqTvn!@M(^mi;m|6N{w{uMw7z5%URPnW7#TeaUQ14)iDDaW3CU_ih(F9>Xl z!;#x`$7mAcLFcPyiVW{#yww_wO48Y4HF~YlxX}yberSk2wW!lS7lW9A#(|(2LJv+!dHSxnu_aouvJ8^(oHzy-%iE#3{IqQWb%SN zCAUe7YGD2txES)Z#IG1KusK@Uxs#MXdO8SGaoig}jH*auuBBl;q0zOq8;@jJo=cX( zX?QJ!eV8h35PS2Fj=eTnaw})&dFm6qHdjOpRyW8C36(93SHpm>VRwJ)Zqo(B*eZ{< zUY&bzLu>+lQtvAb<)(k5++oSO<7~1^$PC|0Pri=zY6Y%*VI?k!mos$d%S-Sx`xowr zS8kULir3e=9~wih=M-godmzf!SKesOre^&CYd@q9;SVo`6m2gc_bi`5q8C)QHTJ)L zJp#PoV{-uh4h7h-jd?uTu9{aLmLIP4$3r0a?^-4ZO+XW+)Oc6p5BgN$YW9DSn8rP{ znk&4UX7%OVns#h=?sS>5H=0-0twa}t9~H5z{1N^Y`N=4dVj2K{dS=6#n+pBM$H!@) z-TeeQ3r|hO=iuOoPe@QY)Mrf@;{H1@aYrk*ZZ2_~RKkR^x#gR0$tAg<8GcoeS}hph zKNrSyllS~|tr=Fsr1&Q6sYg3w+sIlbjK1DQEK`Pic=Sbo1v%T_lT=8c3a_zdRJ4P0 zgVUjz+pvNfg#T?47}GxxXn?P zZJJtZAt51IGMT)BB8|euim@pvYKBTFc|2Sp8<(j06#Wk@AG-R-cVZ9N)Vn5yLg&Zh z{uvTyE7O?H-MfwWFDqz2*2prGlurb*o^k#7y_(L98cA+@kJ1IQmseF4m6m1zHUv!; zNdiqI^ZX*-qDH_cDRut}*r5@6LqNrpN66T=TkU{{i5F?<>=52Beng?1v*iB396h1d zdm8MfV`qU(ai=|wOag(V75@2-!(LWQ2C`cQA(ph$;95#b}Mv{NLb0g`oq3=z?^OsacgvEc-eUB zC8(qcM|ABAj*{%VeT4?XqB3}xfxcc7u7Ra}0ymaD4QJU7SN!qy4F8$hC;XE{=#_(x z2C21D=Xa2&l^Uc$AR6z)zIta!WLBX{cy&ChqT@zYj3%gI@iOvdQb;6S9b9)JBAfS* z850%igV|BYDX)6Gb;!K#iRca#Kb$PJN^?)T5ARpvGgx`h^ple zolF`u!y#^l_3COJ-_z^4q7*9FKBJ$HmXj@S9-KjFf`E{g%t4o;p}4uX*MGUS@Xcb; z2Ix1wdAGXXpO-5t?e|SHOMBcPzCx}EEn7hagL4a?7IO??gghUso*s1ZSm0-izEh8g z%UQ05xQ&}B;0q%Uf);Qx@NtZ%h~B2g%v{G=6_FTqwuGx&N|qDT{Z zGUMOGz?1y2_;LREj%(Bl5*FVF(8Uc6uYl0p2cYI84<@vlfOw9}V#ZuiQGpV@=h59w z-vn?_8JA^pr@!g-z`=kT<{~oJuEED7q5|1>1Jpq<>zvrrb z6ZgH!8fv<=$zc%?KSN{1Ng~q$BQ{pnL;#}q<9FYC;41@`RtdZN`-+Du@`_yroryJ% z7aJiVp}C_Wfz&g^{j zYqvaGW~nos{Y&~Qh*eWpfSKkRm-6lAAQe=Y*F|I+7P(1zTsOK#8f9F6+~*2wxl9ZcwMIM9LN|;JvF94x0n5P(+5_|Vaz;FT$0(vv-Gz*H&`!vu zY>U&m>cLfse214pp#D96h4bNqRQDBn3gqPgNx2LXoJg;J*;glWIG2mx3L^ieKQBQb zExpz9x%cQ_HczIyh(UdidFH9^9fwjPO2K}OlL)*uA4|-p&tH`!G=Y%O@yFICq(OOV41mRv z2#CpnFxCaYn1Hh(kuSvmW=i^h*Zo~dx5McialJ4Nf+kIADSknA?>A&Zcww@VbS^nd z)o8aJ;doq;Qr=+$fqFKmxpi3P@Q$A2lVH~=l89fydPmD^Ux%5_Gqg3i&QU4|oe_o+ z?ym>8tyNn+z5=0Fl@4or#~F>dGp^ZQXJ^^Gawm%GJP)9gqD1Fbz@xPNt*WwlqnsVh z7D832($Q(RB?Ii=0!h~dVo!LK}0yR?Y)WAhfP^7D0i`x(G>q~zxIE23W7R187dz0dle zpdWP%XjEOYJE+FlmBtjTtw}mXb$0AE9cU_!uqV8&&W2!iIHwxzzm@lTT;AJu3#mM! zge&LvOs)imB(C3{V~ipD=N_(o$B9($zbgCvQCI@AR?&z_t0_}CcYFS`r5VKWUsBns zyqA_12Pxd<-wr(oi`g>m9YpJ`{>oB?Vl%>+;M5?iGw2f*BGThoKJ)on-K{|o{v^LI zRNM8;jf<zY)FvJgfJ+09ve>8EnPz5!^Yy11t?P>RgHyzdU;rDkC56=`xSHNFB<{zmX zJa?vafq^bO--x0$tQ@vgob-S&%6xNQs+jOqZ^P^9{v^C`a4B;^Nh8{po#z!oN^?kr zEqLEVQrPE4N<(Z708DyZcBuypR*VBk_4ts=v66_iPI!n!xc;j3wWJT84FXs0)*flN z8h+fyLcw)!ST8U&vTAKW?tKdSLQXsAdXt}d)Jx=MHkvw`7y(tLjGtdxEq)XGlVGLq zujZ?BaHz#>;&uO0!MwX+-0GO(|bF7e!Oh83-d$y7UOow6< z5)7>;$Hoj+8p`X;v4ih1?T~2&wes@vs(^YGe3krNAFsdD(l%85X6uYpHWo&2P4BdH za|=~uht!ov5ajz#?e=THr+UCanR=mGDncOpXYTZ;PoI7Q&8MTeQZ^tx1G=kdy{-#- z@SYrl^0A8z`;1Zfd?)h8i*k#;W9};Dz1_LB0#o4 zLld+kB0oIJYihmH;`qTIfYlYwYHdoAR=iv33{)_l|I*~vJ#~bP|DOsCxb~EfdHDAo zv~guR>U~!sf0d%9O_f%^QHQ0(xqYv4mws<#ZP0$ihoL6DS? zZUmJE=?)3$2I+2)M!LH}q+39`rMtU9q`SL2_I)|$+_~TPhw+CqpuGEu^{n8=I0+{G zK6@KEH)-sBe!p;%1(he=m??qTr=+1V+I)k1{uC{>J5>zNl947_p0Q*%vB#)MM|XQ_ z_#hmwFAP7?@-2~IO!a&r6AMxgE0b#WYP%&U+n2ODFgVcu!xL2>^C*R0lC;TW)NdA} z@z3t-W7#X11Jw1WD=exv2w7IYGnF<eeqs@^z_W*fpkA2wjQ6?I^M=PgV$k;VT#9NDO+_q*&?Lbf8!KA*lO0vSPgHo3Z* z@(S1;eSLiaIui&?omP*IB%H3zfiu6#G8@4qk(7kNgT_MkyBg7OZ#_n&+>PQyt;%N4 zitoE2d-E}PC-~8J-8E|S&h7hqq2!-PzesHDkA*CKqJJ_>74LR+>&5TV-3aP8ZrPr*r7$>f& z(VzzbzhIB}5%=8*CSrZv;9rTle|h;QK-xgT$wZG#{?MWW*Z(yLG%1t34CEqOseqM(Y{Oo+#go6+ zT339dfHv=RG>|cJz!QmMhKtZxvw4x3{WJ$+F8jE{DX!}ce!eCi4`_dVZ}OzEXNVm!?|9Y* zhYCe(=%=>lC_9db_0a|Eyy}t&=M~-lBDRD2M#xvXGzg9_G&W{41}2(xnxG>Q_=*EM;ALhInW5A;6zR>yvFCiiGo|^`vr9;|6wBt)3V&P7} zU&%PhN1Y_!!Lh_gSJGJ$+mZC(hol%3!o+&ZWO@}Hh$Z}%8_PtgN4-pvQ_068Xj4o*mcbPQ(VFa8_E+-ZXTK|kW+y1`T?E-qeRYXuga z|2MDf&bmV_-J^B%K_)r4(RbvjDuROakx;t6A2~u%DJdzGKN4Q)(#q$N7J3YZVwwp& zkqucM2I)IRe^-oHe|X)#+Y3f}^-H-B0SPhJ*yv5x1d~X2_uBrk z?|_9=z?mgJ%x4K5b|`|6abF3(va(y$1U+PU#N3$h1@&0My`!g(FK@m7dA32xYWqEL z)S~7`W;1g1kAG&1Mtorfw0B>q{|QG`tr)!0MpL- z^*Hm!Gs$q;Urg1+p#x|;udLQVCskZF=vFpO-V-xE9@f5<{QW@;Lg(~?9kT%2vg*t4 zI$lR85peIJ2ug!YGt*?HrN0G7v_U?TKcIb3F(YL1Kwz@6U~koj2uiA!{2^_M#0!%e zvxcIIL;BuW1SzHQY@uaO8cCXro+h^^oC=k$E8{P@ zs&WL6P2hnd!tZiJf8285gmF#0y4IJmF0w7L-Eu}VmCvtC%>}3TFzWJf(BAGt03mu6 zXS3*cCjaNiv_jQ6*aIaBRM;M2G})5B$Lj{P)R{>M;R7CPrDIq~W`q-r(}trve2&as zpTVh+%+T%g80Rq?4_s!%omyf zbd;S%kv9{z$~4%(!q#xT`vEvH!F2`e`X{Px1!D9B-dWy%qrNcZ>zz4i?ex7Zy?*_^ z^NcPg29G37WN$r_TKf{E_YAWlpt|HwIWs->(c_IRAr~;sM$37=K*KVQ()G&yXST~` zOEuQ|%%AyOo6tld_nwin``HVa9oRIVal^o0?}UHicfNhBnJ84E%T->m zpXyZ^lsr65zT}ufA#OjsU$t^8J-N0UnR#pX+$?#lF3VYQSk`)>@OTwK@W6W=_!-!d zh?%Pxs!`h8*Ov(P;M2pZF}pru=kYRap6}e+H9P9VCd|=!m7XK^UiU5}HvDX%(K^W; zVWe%@1@(A!PzyDh>RDF)JduZJlSVFg_YM!jaw=w;tsY!}WMT0ugs4whqkAy8F*dXL zU_CwXzgvZn7W@8DZTB``GM#3k(}Y(UgN2Su0S5F90chZEK>RAynLRlWcx{1DY|z^dgjMqpGY1YaU7ASu>Q1 zKeU6>=*O==B)GrNK5GEdM49&CYqyz5eVd*SL{@#*sF^uTV83*6bvs|{%RHN;b--uY z*LWG2LMp~-9yIB2{#h+r3beX?7Qm{x{i1ZcRrgDA{o!v;B2iP$)xlKw^Nw3#~9f5?#iR$64V0u z_Ufjl)wR4e02k;!+W%4{B@3uul<V=?6)3qZs)16;7&HgoW4yO`>` zaB<#N2J0R1>xO(ns&!ibj}$mhabi?Y#?;2To{?++7Ao(-`lOmfU%+nDY5Y%mF$ksC zxOb{xrW7W2V2$ZDT;1mAK=j$%AC%_iRjD!pxAd0#q6xFjni(BqU^j`HObbp2adDd( z-X_4ACVjdXlI8gjHd6tvw7d_8Z!j=0h%hoiAD~g8^|*qH+x%Q5j>l2A?`0J%2w{<6 zU6J+e9K=2Wk0OLNRI#voX(|1`HdEd%Tk%}L*&sdDx-k@pjMmoH6pk8HisO~=_bfG^ zCl)q8a_rGp0NxWy0kuX|_x@<9#4y=8RyzOwPcEllRDgFG!rM$F4-)%<)n%AJ02>~^OdGeKCS1G{?g z)$wb{{bZdKazdFz>0d7@KGK$n2-zG9pMn6}wCrqhlNR3Kv_)PhWeaRMfoCevw9D>8 zI`s4wuER15H+myFbHX;`i*`4hm1<2|o@O07wF@-Umts^4m9wY5wiM_p^bl>w)=1g1 znC|%W_;LT<4`@i?Ot53;BBLRHrHb3c)?lIz z%oE$qyy3M>Rtzqq306G)gMW^MNn5_M9PRm!ws^$S2Y4Gi#hCv#~51!Wt!3xTx93hN~e0PE3Q($e%BPU%X` zJ>J-Wwl=X~ zSf6T9)8GqUr^UCGU{7x!MHI|7IPI%&*M>bA@kjVSs9if7YcT@m71}*uAshG+Nm7Od z3=_aqOHNK+p-~EE&_7jjcIzS(Vo|@Vydhrp4h}TwiLtTaLRsBC0!e=srJ8enh1h@JF01*~&$s7G=fYT6gbcG{`Crf0*=*O~|AHzj2M3==@3hz;!itHs>|%PMaqq{ZE`+>Ts6{PFz;tX{F@`KDp? zc)lrG@Mvs>jes#Y-59E>s+Qq%|Lz6TE7!`i#@0#jjW>mg%gV@f{DKX>>eT>_LoP+J zj_#Mf{bacX>$Kt&_<#G&4#pYWO-+Ue{}dcac7&w+SdPjGznur=lxnpE8GApE^uO(D zc%J`u$U~;ur^k4@#j!FM-Squf{Nh)Nw{CdrJt`eeGlfin!|>=fXxuQECu4&r>FRqoYF{^bajNuTk3d8KYxEfrONY$JcEnli(v!MHfd(9w0$*J#JpMC+mM^_Ql0W# zm0#p-CZsy2^%378dEeh3EQQeTl^C5v*oGkkFqFTZT=a?;b6a#2iPj1P4g(obxqy88Pw82 z0>O@m%*E-jv)iM;fIL&Kq|vy z)6&qpqcL=a_30T~J5knbgQzLBDhGvNoKy}?j+FofG$Wg5@#bAF25xLm?itTMGqRMQ zOQCag+Oex_knSx6$C@zetO zgW&VSN@BzF{lOmijxBytGT_17Uo{PqRRUHji~BV)oz^WGpiNcP_4V~#EIN!ad){vZ z1nJ8s-s)gN;?;+=p|0JZo@pvM*^S z!n#&z2OHcs&P+~_EBV!1H?BaW*g?M&v&t3HLs_Xo2L(bFevo?IW`JP2Qs10nzQT9l z>Hnuds#4@uQQo?#le-yig~99)uuz396PHKy^r6U<+TYhbW^-4cmH+XyvEQ;E7GlND z^t@wBt((V?1CyWXM%^+UsnyW>z7I^FDs%0D(qpD368f!&m^mvm^ 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

rVm zIied(*s$Nm~`s3gKDB1?;9rAT~A@$o>RErnriK7Ud?iG&Fm#RqVq6T>0KK z>7Nms5mz;*{fwThtgK?yHB`xya#=pSro2j6xF(bCV);8eDebS+Ss*>B0v{fj3Dwlq zxjpTc|HT3%38r_y^|Aih@wCLmkBUDsU?Is-EZH-Zl)MLQ!2$q4nU$4mzgwYoEZyhi zDG;h4_Tu%t$%;3idHQtycf>RvAQhGK!DLAU5kGYbyHd`1JUqe!g>3f^SqIi&UXE8natDUVNi`YY*Sl3&zE&ifi-f&Grj|GZ5#$VgAN)D!j z%O{)?TzFq#+hx5<`!AW4Xliw0W%iz@;r;v>`*e1SkQU>4@Jq4SM$?qppf4J>T5@r~ zb_t;%ikBp!*GJUwytuu=#K2g9cr(%Fe(vmT%GC$$E(HbIF&*OHl4s7Z08y-3ik9o! zJf;_TQOd{2_>)q)U{jC<)iva#P|>*u&2;VxqvHeY3n`)zSZzZ?LwiTgth^X)E_=sf z`NPo(F74y+p@e?#Ya9*HwXaU|t@HYMIV!s6xl7H}8jQ(i6%ri&YMy*&Y1gUi6?O2O z1H;wTB-If#gpZ9`A{7X_&6gxRpLO`AB_6~>mn4z848aF7Va;wA%L6DAaD7Z-#<%DbD@SP7-c!hT%cV7UNu(+@(N? zZ`uD^D~Q8evo#zWzaocG^4AWx(yzN#&T`$GthIj?!AL}%Pod_+k9Im~C+^d=+tJ@7 zE>XE(ZJkgvhi2Y$5!FWJ`!Gl#^{#8lqydQR1bpw% z@!am14nDnA$ZL30Ru4Us;E!#!i-*LOwmbT=8VN~TtQtCmK&=6U>lwgwIAZ%qGG?ysSsIJ9$kXlrMhnMcPYOF)?$ zK!<=D7>P>862W-|mKNG+=|LNRbB*>@J$G;asHrA{im~ib%lsc58$T0$gqH6$@Hg65MxN(!L;W0_%bQY(93hXB9DVmeC%r*q#YF`PCe= z!mZwu^DLyn;N5lS24!1#(7sY*g?qV;=r61bh2VMj#$eXhw@zbR6?SElj-VF}dN!Gk zU_*CcgVL_^Dqm!@u~EC=ZE=LyC*3VC`r%0%_JCUuawtgD{W?q8wDlPL5LZ zy0)Wr98RM@Nb#$nI!(PT9=6&)-29;UL->tr`U(d2P8WzPN^}a3F~uz%oH+p_0cx<7$$8YbZTCQX=;J!PEseO(FmC z&xrvDS$%YG9&*sa8ye0oy{e&YTff?cfBPC@b;qk+^W~BO0e7F~Ce&wQ&U3d}&aQ0c zCvdYT@w2sk2Jcg2SimfXBK35n&dGLFO5f%lrv1(wHcolVFLHazW+ghyDR8qczvR{|xX%Tm-7-aeI!ab!9^1qQdL3}vEM0mHAhe?>=5YbdPy{aC!+42aqB z>mTdi5>1e9>X~NwFLA%Q85wfI&qiMnoH=@MY`QN!B;08Jnue?=MDrlz`(EGX{<9fF zDFZ?#9&@Mh4-Tz3IIBiFPitaAe@>W|?=Trn^_4g;aLdA?KHD_!P~v%Ph0qJj$|==Z z**XJZ0mgT68yoUz6O;Av4EjfblvTelI!`FH>XYPrn^+3GaK5HI(Hj^cS07H`wQH<( z{8Xy2J&UWqOZoO_N9Hzx0o8zwz()%`?_xN>mI#w5=KiN~c?F-o=IL%Ma2#5MU|Vj| zSMy1*k!rVxaF+bAP>xOudR8ZL*QAWc?~ld)rEZI9Yqh)RNZqA=dKAr2>Q(=HH>rWm zR~}yft^WoJGGgP=mn0p6QqrnS0xvhkWVQE>-!wA9AG{0ORCs~lQ#Azt{{35Zw=WdfqZU=AYpPL0KNPSo+Nmj+ zgYFq3?2^HujfYpRsylgfj?$)6;1;$J5ogZp;WbphF8iP?1^~RX)gkPM+Y9?i5 z?IgGVk_Rjb3RWR*ASl_sK4@oJsrIn}WcDVCT)&?2^CN;YcF$;g;*5y2a~~QlW;`tD zM)jPrH1)YV&h1b9Zchmy?@l@zlE2a5Z@_1rUj(JAGu~rAl#ep1uA^?PifJc8bZx3S>oF+Zt6aBZK&?@ zZ8UrxY5eEDL8+@yV)STgk9~th0)3NQ+-S9j9_#nm;lb0&H;hg)PiZN4m?<}P-q8sN zOwc|a{NfM>B<5`W_0jfV#W$y}{&|vH7KctvBb#)jKOdp~W2C^b@K2#iE(!0>fZLS9)*y*TLA7AnN9;)6vDnQ8t&gzQLj=CW2pN z8*OhTSr}a2Xxi}P`JJN-28W;d@!?+s=poDRPo8RB z(bsvMSdLVc$N%FsH!f2PESe9`%l#LzTb!O@_3qR89df>ezr78t#+&7L1$a3 zb10??&Gy0H)n8B7pvhgK9+^m`y!DeY-k_*(;Ny&0lE{5RLw&U=gC|c))%;~2E4D@6 zT=3S*kJ_WM|hFVdBP~5k=z_pR(t?Cbmbz4ML-khcom8-2mEfWDB z4Bca-xgV?34VJ$3kwP+1CjgA43>gN1YmxEV(Xjr1Je>tlmTMcWQA8S4x(!Msq#Fb_ z-60*)-Q5O)bV*5xAR*li3eqLg-CfcR=l=dP=gi=Yd$u)v@B2J=taYto%eZ!M@u6d4 z(s6JE{Q2{;E+Fs`>BDytIjt$FA8e;^82qj=drnfvRdCZs-bLU=hla2gYKK~mXqzWz z4Sq$(6u~15F>w)F+4$JqO2Ojpu7r=DkNv&wOUNeaa)Zw{ig@Qa3Vl2mjyK1mHKaQS!#ld<-G*roqhBrmvTCItt94$qP9m4p5@!5t8J>iSLLo9sA zdLey*yoN+}Vk{2mr-;d(B>Ja!I!!LNQ^%66GBHd$f4t8AIT1TBVbxJyC|ITXA>Ixy z^HNQZok|U0&D!l{)PMqTu@zVN&4~>zfW`O!{ac>2z7>;_qJN>zXbu4G93d$@-^0GK z|HNH0*7S;1<5K_Y7j7=6c^+gqBgRW691Td`{evDB$3bx-1T`~5oyuQy1}b^agD$#r zQ1#{h_`$c!#niRn@NY;_xYTK74xGY?QBg{WNi=MKkT^Lx8%`$kp>wIwOb_|?((mfb zEXepPGkK-UMhvYjBvxP&F`IyilSzd@>OsHn+AOCOqKM!j(~QtMlAEj67;>l7H{iUG zl4{qIUNwIDE$|Kh=fIgBWcgP)67}6}H2Ctq4{EdQn9cIcmprW`2QqAaTwMv+)osvH z2Ng1tJD=qaSl;N(SMkmd@+}0im-?JLt$p*6#G(}VeLf*>p##Gqn4^zw<6@KaP%0JCx`H7A2mFPrvA5R4~ z(KF7Ncf!mhvVE*CBuK*T7%!|zV5IXbmR5K7AVrWDC1_ha@BS;5JmvFq6?J_D3#m1; zRC{j+d;-caP53KB)hkfdi zYRix!Fk~kv%(^MP!rlg8OKI<*pK_CiPrIM$HSCYpQ&Y*Tq@D^dmTutkh_T@WwZL?P z%Uj>9cs)Y*&x?5%#jOgIv0J7`0qmyL{F=#8tu5cBO;#&+!`qLhWoECe$h5;lnjCL* zSs7w7eBWzVD#CMe=fJ)OZ)^5iN}DMr=wVzA9RrIZG#j}B0-I9;n^a`Vo}N!Vy%yJ& z!kZK5e#}1@M!x^lvQpQ3$94F#hLYav;0dD)D9N4o%Gz=Gi-Vf_ z0{x2)Hy-2_EcGox$~L=>`1lAWrbh9|sTeg%366&g7Oi4~{{>{COd0YnL|&&)%P*A`R@2Iww8d#)g`1voxh<4eMPh+4vA?dnJtW3L2*}@L{;AF}^IxTH>@fxI7kO|YdKA4$Y zIX7NPR0@_3@UL>&XIE4NfYsZ`*jUj#@x8;%qYT#nH71X|-IycT#?GVa(&&mXCK6SM zVjRZ}M=o9E88|IA8Fa?k*`E6?TVfeY%nP}>%q;r@&1m!)?Ng^!X_V*9zJTEo@-vdR0$2|1i)fnlNT zB^$X!&!HXGVpJPZ+dsmKBVwaTV=HA!Y$8+9 zu>AFhrW=~x3?*aNKi6A|lkRWUYI+N7R((zdb*gFp3=Sk*?ly)x66vioK5Vug5Nb+e zkKFu18i+&r-+qSLmA_tC_ge0lT##s?)GP&zW}9y1 z*u7zf?boJiP5U^r1H!I<#eV-M>9`WmbLKl}Kuwba^E75Ek~@F4qk4Z;sL+Oo8~x`W z{hO#?u+oelcR&+_7)xWtqbBA2<5k6P1CT#5CbFjC=m&D`7$EuziM(Quym1?P)0J@M zH{8M08R!`Q;ZcUr3gD+!bKh6Q^_iK8nx6jo1bIHUK$Mv&Cp+tN$ToR_bdZBuMgLY< zT_)AVjqji1-Qa9@Tn<*f!Ap0SiFPYCL$0I}twJbu>jyv0zIo-U#z`UTcju(Sh5Wgt z<|)(SYl+9fwWJtp0nMx{g0S$t}gV#EkEvCgO3v? zCOyOR41ukeG&JAGZPZ~{P{s(h6$fW$v7DiW-Cc!_h#MD-ZK+oSJa^x}|Hn?MOpe1? z>)F}$d^}dAgeC`W%MhmHmmwpQMRTZhm87;NJayw16^^XA#`WKVLw`LWzZdhLttkx& z2?=6hQt8YO$z9+Ts?{An+28+Vag>YMNp4u4(fsDC?5p-N&lfRvUOH*1aER1e_V{RC z+_!Cd?`%nUb;wDNLwxEnb;1Ob=L#MmmxgoCb^>w@5wQvMH2^p9w&F9y!EyI2F7EaA zOnr`CyCzW78$1s`g@=FFspcuF-{nL6fIN-S0xbwWISz|3(A4a#-)rhAAGnEpSbQUW zWo+Ep$@7+48f%lZS4&IgK1eQ}LnVXq7-Zz2!PLHw<W7?(CS#KpxuLs2!L_#@#zd0NzXqK)v7gRLF7P7`_V0@xwn{!N&t8?hxpIPTT+ z>f+qod6=q#76+!4U9inFvu^mbxDVP+k^hC%BdV?;Bf)GhthZcG3%V}HhKHZ_xHU-3 zs*aT`yr|i5M%xP7*zDc;k=hTUs{qd)w*)TNx59qx z`XWR`@@+xss+_kSfkF)V^nUBocm0#b%tBGq65y0!01sBdWXeRA?<61fvliC(4kwO0 z_-6gmkNtEGTUaR?uo})C#CRm)P4zvFE!SXcm;nq4}fq{3pbBeu?~bcv!_} zhiROgvtNcdMo%OnduFuHzCu1xN7B1{>ZiDdIP7rTcc_?8X+i zXbY2cwYD~Dt<8*X!$OD4))K7)X;hoPjoUzRz?ilcUEa7#^Xw)l{rq}>24n}jHOI8H z`mD3H7o*W3Y$zxnVf&uYFfCAJGt)0v`;mBtlUWsyvC_?NV~!}cX_s?&tQgtXn=@0* z408~h^3(2nk@2yP%yrTqot@gbsr5*a{PrTgAy(2F@-;xQa*s}m6H{@*U^n;eT*4Jz z$Lh*edsM! zpuc~d(gVW?bH4}TztWO}1i5j!QYU_=4t)WM2WvCvi2zp6jDmt0t+b`3 z3G>Yd(5J&E4N$*tRaGYedmFG25E7z*8SGOYo1)OY2FLUDUvy(?M>3^ln#oDRV}5IDa0Hg z?|*B|JYP-i`Ua^kvB+Y{=uf+wI04azCk&6`)I)8`qhpi0777^4MhhVNB(|VHuDgc} zwFB|uy?ld2KoEDdF_iqGDDmw@ZZ{v21xF1wncNCdd8&N8FDevMO10enZEWyz`Nv@! z46cH>&eX=bxd|cOBs70Xj6e`V%Dlx<3S&>hVSlgsPBTm(KwwS5Ed|wq0!%9)3J+4d z5>Y8VqB=XJK%Dygd60J2?eE|J30M88ihn*%sLUla5k*LVrtG7 zWgU1-{{H<-&&c@OuG+X%^WVuyJE%NxD11OSN&|mrO^sc^$5bCDJ=kbz7zoxX*F!jF z-FW|Dm|CXVe(C6#rRio5ae z$k^ONUEX>2zR6c1YG<7pt8jB2DTx5%dkfpn)a2!L!Eree>+`1bg_4pF2$#{{>cxAW zA6IwUE&k3;Trbk~pE0TX@4uP~qB$43s_v%{^*r%zbiE@;a4AZ5i}?*DdIx<-OLDP* zVnU}BzW739b9@4ng#{|!wcXm*IW_(s_y4}!t6dSWK zQ;rH}L6M#}39Ap<_2qG^?IggMvF)ExCnM_(=u@Mj@J)dwD^O-cNH*fU>6WW1gUHBr zxaMBjo^@w zrwj}siOOPV^~YWud=#T)P6gg4Pe4a&Iv@l;dzSFIYFUda!Q>CLI{EqcRc{Smn-G8b zrWS)EBtna9_rW;UvpsJ85Fv*{Rfg?I{rfcbMt?j!ztLlSKS!Z9HH~q6!;;ipesVNOM^jXU^k${mqECYnE4 zZjKA9Wn_@F7EVTL7cOK*3T2m-#k_xi7tC3#$$dy5!sT=M2R^s5!R{tRP`!O4XQp_2 ziD{3S(6w3z@PInjtJO_9M_rXff%Op7_j_zzNfcSwT6DB>yE8jwy?HXQ*34&>c zR<7pnxyM4w-Z`X%N7nBQLUu0jt>?Sw(rrfk@kDsGDxKEl5r<5_0TUmp_4%;qmfX8ZFX28x$a8{5gO)6cz5 zX19KCgX}h^td_p)AD@_gG`4I0!OyMBEHi;2YR&s7Ld!L9fmkcvbE(i>O3|LY8x!rH zq%uAR<`(V2nfqqv@oiG?*E`pwwmRqSa*UU!i#$&9s>*+Ugi$M`OPpjgK{@mqv>YxQKh?)Pt?Lc!SCFc)p^ZdaW75KV_||WIJdboH7Tyo z9n;^Wqe$?#xI3U)V|?i248>Sp<&2aWjgazx6>V-DJ=rXmOtj4_CL`^K^Ge(X8X$}2;mS&dw7HZO~AS_>`nudmxciMpuU;GI-chK}SIk-GghfxYz zTU&!eHf7Y*h>Ym;6y}jnALpqhIv+;Ck~z(ZSZCAF#&TmE*L*%V&r-cPCi#xMlz9cr zR-TGNFZDz`ATtqoKLnHy0HXMceZwpg=|*98Q>a(=61Kl~HCSghkHhN$rw}XaT`j#gZ$# zf!!AWjs5DF&@h!ouSG#QbJ_k>Tk!b@M5dduyVa+nV6LiadR*X@_@5a*f!*xUj`yN< zFoQd{%gkcQF8{m@d+}U=;W`R-=qm(g!xbN;sy|5HdCHsGbye|0r-`b{4Sm|*P4*S>-?)vUQLMLW@pk| zGw>> zC9+>%5AmWcEeCtdxW4eeJy6XQdit!MV@nr40E9+4Q$yc0CEBoj>H+tgj z>-<}x)YCg8xtLu7o*hVP40+OVCUvg+rkk9CI<9hx@)VtTdj)jOXTwjDbm-jh7KlYG z#B-=32I~Wi$#GB-jYh`jR^};j_i&@5PD7j7x>Vmw+{IP9H;XF?jvF+_gXDBHwp!&8 zKZ;i$=acDw<_N*5rlVTzX!K6Ct)#^(oB7qKYM*1jmzHI2cF?_LkN1$Wy?4yOEq=5p ziJhvp41XnYla=AfV?;xrS4C7Q$GWjw%lyaY&S`1#iv_7;B$OZI3`RLKLruv1sEw@7 zgr1(~4Ods?M>~3_UK&c8zZIKreszyn6SG-77F;xv9_Tds`L>C8W?Hk9kMe^;B&6`X z@gm$MbQ{iDdadNCJ%JNSDPYixQ921Q(QQtX%nI)>W_3*@W8VS`UDoowGfel#J%kBUuK zyeadAhDKE>N)cic${5ov64&l&#i!oMV$#t~KZM~7v?LJ}*ZcooLYi5GelZxw!7x@r zxTdP7_o2_M)rb{}DH%h4Ru(k~()7A}dIl_dVcxM2MD-8K zg@?q%E?2fTTv#7aYwnwH*^B?R8pyRr9O(+SB#gckC(M?6(Qg%Bsu8@i`OvDf(DVG| z$&+=z191(+5X2cg2;bfJW{-Af$Z|0WeQwUpnMfmejbL<)IKzM^n&wgu(_=(N4Fsa5 zq?>F11xQ87)DEy`{7DY`wMPXxBeq+;;nNLl|HvUoJtQg;4P#sgn@Qq#X9glLP@g`F zd|>7=)oeE_FLhp1SX>$_u^wa2R%o0$*R`|5fqZISX=!ODHVJX%&R&6YA3Om413(0Z zTZK(h;(mTYh)NCd10E)5&G_7LKpUo{ruG~B&ZSd30=HL~zuVjYmYXXkVARq*gFN+k zrtiQ8>Y(&4cs(G7D39P!79MxjMP{2UQ5^^li8N@X^5;+!1mO2Ny4bxs%9(#VgV;!t z^4PExlCfpljPT1v-ulspP=WzFIN=&vcv#chkJiHNXIMS8F_Q0Ieqzn?{rmT;!-4w= zRiVsvpP2Q&5Me#iZih)v*h+5Ob1^Zo+WmI26la&I7^tbYMv!|V0x{$yf3SwbXS%#h zjYDoxz8-)e76~@){`( zy3vo(a`t*#Sf8aX5Q{6Ht(UV*_19_nco)Ui&6neVGGqIBFXy$dYDans_r4=Y{42~ zYpZ10JO(MBe^@chr3CA__TGD5AI8N)4up|cdPbVxWB#NS;yIJ!SS2t@4ssUwEWex> zAFJlB{!g-U>1V%u^^6a)$elYdrCC`a=uP8J=d>OhYSba$YdU9$ky$Ks7k>Oy;PY$i z(Z#JLG0A3}aT}bXnj<6T@qNP4%o`>SKHSeidvu3=N&Qv7KHRV9$g7Q^zFPHBSXj|8 zUdoleVL;chr6FKx3LHpgNk4jE6&F&!R};Rb4~2JQ(IfeT47FLWQ{*(i#fQUIm2gI_ zr50Wuc<#2=St-HXER2j$!hsG~NVf#DzR}fg9eaH?m;x1(Y)&@r%|+jJ$pnSXRDz;u zB?0eSq@Jt#2P=T|!6W$BGNg#YnDJeYwX?ab3JZ6Y9+sycYoJ){af@b`*}&oMENptKs8cn}72T8KOR`n68w1X6Iljv3^#@q#KM z)PZjS3OBf_t^S_C6`bRJN(r7|_)VR?y)O52pwRCDa>#;Dx_>r|PdpYr64h*%^}w7M zOuK-+mxVn(3d%Va`O62_e=z5_Jo|kMf?+H__VwVw2pYVkDXY_WJ_fz|9++$RXN_U} z206>#I`!tN<<}E2Ew`n$yG!#`6D6mL^l~WpxzBA=Axri#ntAw-9}N1w#{>`yrd=2b zX4shZbqh%RS^w)d|ML#0X~Z2JAHw&-LA}h931a&Y@wEUGD<{u3^I4`E-sg{4!4$`_ z0{)fYM1@6Mvl(g=%-3LwBp$yaF=Bad;cCq9^*6+!wV<1o$kZuL!)*JdBvvB|VdoDe zWO5SP9n3@pdUB=wrlKjwx6Qw2v)$lBAe|B00!V6kel9sshQM$H!6;uU4ZO9gY?6Ae zi{|IwFgI50gb9pj5C{_{G30mXbo}9>{=SLZo_Mq=b>$auTm%F9 zujl*49}pwM)W{#EcL6<)%ioNCG+qAsE>A`lzTe%WFxh{PYf<9WmnD|4Omp!6lT z!FBb*r-#Mpoj>!$*lYYb(zD(KGrS+#qHpei&HDXic*tox4Wrc5hEiO?XHcE$9jcfMkwwY+FLyudT;pJC6 zT)Fz><6E1>8C+q*&7Eq8wll|GgEPGAi=%AsYR&F+FUtDL`xQkj)Y@Hd_ayfyM|jtd z=!&xj(+a>GGVk@Iw*AM~=9@`3>Cv<;K2(&uC6-%ULKjD}J{Bx zUJ!>W)PIu$={zP;T|5Cos^C1(D8)cvM}&nG zhY@iV#z&sWZQtg*yu5^J142`#)e&%M(mw$MuCa~Eb02*Vea{(;7YK}*zlu~~+#?&z|+}2b; zz5!r@zW5gO_F{>ODN_F9)q$l!Y*fk2xhCYensy&QU7igL2@Qoq;yLJYZCuhXx?j-! z%~O5FA6^h)_(qsP*xsXH_)7_eoak6NKUfnGLPEsw%5*!F@LB}kVKA7vRK4~SB5PZ& ziwYXZJWW5K%$cl4o;{WSZqv?ap6ohzM{b|Yq26Jc1d?{H^FevL7$v6@WE{bx{J#Nl zhHIq>&+6J7VW}Iayz`l(7j(V4H1$0XZ9&}XKI6y!ED&4JG%9mBK2Ng;gS3Se!(xQ; z?3OM4jG`VwJ7_=VsWCJ(HY9qj71~TT#A#9acDLfnEwv0j)7n3^8oe%$wx-n!2BFQ+ zK^#v6dPnXyMj&hE;K|O4O{^Njk-6im_KJ0uH|OPa9)7sgiEH7qzzu!`3j2VWbD;0h~q zvkUnYo?DDtjbU5O?<|wmUY(z*)iYR+McGa43oV@%)xxhDW)7-SnoHI-s0?< ztZ1Y9Rq{<<;zb$eHuvSD)6w4uP;V#xqJHhRv=h%1+*$6h3c7OTO?csMKPOzwhNrGb5~cX zoZ9J47rw1%WtD`be6v3tpWBf!04=~K_egP|&KfOd@Dno^>DI5n&GJ?Ms(B%^EVNE2 z2*?*^Gj@CIJ`&is{%VeF)_aA8pYv||Zro4xz90Gchf_mQ>FXEMX~Ivuak1(tycF-H zP9>d!NAPiqD?&)UZ;e=xq>e~wPk~+f40@~@Sc9b6!o6yKbG0WWCnwOA#$*qR6@&*T zQt*T))2zVcnmr-f{|(+0&I%h(U3pJqoP>6%sH}6PWaS7PAb^8tfe5Y1hCNkS8AAh+ z>ecEM@+~SoeE`ru>sJMcuyVwg`~p3b^>8*iy3lSFFbn`ZM!sfprI30zk?+{fg>T04 zw3r?P`XI5)5-*VQD85)%(bksPn_X*f`2Afrq2?Z0ATE`Hrlux;#QIz&0LUPK5dn|C zINE3hmp`1Qd#MAcC@8ExXaC&D4Jkm(T7-FaCq6)L-OCO2D-=h%PF*~Jfn4>OH7f_3 zxGtsV@wkOaKXnmuQU>LPp83M(=foacgV6!^I0`v5UQ%pcd@q7r zvl6%k>pH%b()?L3+{4{eddX{&zx3KZW({GqY$=7p*NbJo|9Q~!6-JB+dj(C|HNC@> zjHEVPV{S_0Pp>xcMu!f5Urg~$g0+aN8mZ=;@P6cUEq2`qI_XDV*BhWhwT;J4R;s{` z{b&*!-Z-dNn`xckMm|z&4eiS+lV)dy_pZqm4bkD{qOjJ#B^J1JnCp*>;7rk^XpVsG z)U@{)6!>YcY{uvz`ib+<|J5&?;cMNzKT%{eAAir?I8fd~f2Hup`7%l%%tL7Z<%)g( zD|ISY=l}BCzr=~`?D;PWS++<=W~fL{yIwL0+#ZlIb89Y+U5nYsakK{E+y~h`k3aSI zgi;q@z8Bo4b!slWEj_tQo1yh=?t||Lx10yRaCo^LFCA~RdfM;eV91cREWsLka%ZAo zCQV*5iq2hs=0k?Bf^HmQ9l%rBd|QP1oj9Blt1JzqO(rfmqeemthmr_It(MkcK`@c% zR^3k36!7%qQoSGyJ`cp6Ri{yt;^4eRj0j=lQ7v2lKdCpOu7_k00EzgAs+B9_f9zpt zPT5}~ODFMc<^;*_LU| zIi}_@<@OZ?&t{#1CGFKYTY(R%m;U{wG^9pNc|AnIyXL^d4OjA*CaNq<6{Wj2{u8-ssDGKc0gS?;;hlNw-DfvW) zmFGkw_LvOzEJwaxMiaFi6K1mw*aK5`E<%*tcI2=C*JY?#h2&J2>lQV6u@R*Eh8wvx z+ASV-UdvN`82r@X3RJ7(hCo&u`JeGFXtp*-8!4lCmo{;kX~+=)CU*5dyz2vvBi5I< z`okn8oaT-j#liKWJ)u*Mrwxl)&mJy9#;b|*@v#9Sapmz+XKwdtuV=Vd?pCoatgD<` zxfhFMCV5YO6_m-=M3Mzva%w1pgX!SO80I|Ci`V+x%^Z(^qsujI%AD*7caqsRcN|^r z(lBz|^OhkU9sV3>#c|AmgFQPS5Zv7}^nIph=!10;pXaNug1iR@A~XMDOjXqIk9XbL z?IUgr`A|{!fAx}Jt&b(-qE1h=?k8FjLKo%7o339y|vBYw=IV(%@SJTD5T+p zCM4c}pWw@155#T1q9AQ)5x#MuoSN!@psmZwf#B4D4!!Dc``bu3V}C-#%9QuFL+RDG zo<}|;{hJhwN9zCS%&Xu1^XJceRFPDa{jJqU)}v(8L)g3MqOvOZQvLKxd8b_e{*di6 z&P2`9lV>XD6LXfZ7t2$%8(8C3pDn(%?^Adc5AuSRHeGEh9)5K*eF7HWx+JYbH>$KdOjlQb!m+I`_=^7cawAw+JYJt1%D^fzF#4?4&@X?&pFD z%}PRg?Ou~5#9JrWpoviYe=fjWQ=@nbtK?^jHHimrv(%TkY)WL4nP{*jJ;g(hLBi$G z|AQ$g+KS%7}N=kNG>JILPnd}C%4YURjEyS~I{un3kQ9(u*Ze6>5 zHyqA11#QFoKV}eSngpVUT>xf5;tm1mxrUe*5}!3)Y|6$nITyOj73y$9ug$3sQe1%N z0AxVu*DRCu-mD<-!|HR7Bm$eu&>AC!QOiO*>G9LG`X%z!ujLb%_28-J1~9^E{oZP- zGSBL#vojBP7u+_nQ5JmM2w!&qN(p9>?=mYIl#@3T-^u|p1g3%{X3jG$KJb=#@7AKi z-jRK?zN92d{B~g0H%L<1^$z*Xj*WEjt4E?1((9kza@>h#cubE*s8(|4o6lPr<=+^e z-lu*;Q~52bD)NIP4rZtK&}g1C+NGY~pxKl~rOCU+PM>;u^v?E9^S*IoUrBRTFRC%W z3Z}c5Us_U~KL-b3v?+YGb0<~&BnMg@e#5y)cY_lT!MLO`3#Wwc&aw2 zR0t>CA{}k_k&0}o7?rT}Sp>|>?-M^hPiRB=lKHsX)l*bjWq&%;m7F5*wUW5Imn)jH z3-NoU)e+od^TVe6^QN3=J*VEJ^0h=x_jkwlKs$q0J`pzi=FRk!{X@$5=6>4vPV3*e zB=3U5x`mJ!Vo?&llAbAClfQK)Vt!(-HN3a8B@gqB>$J^QyvXDE>2u7m+imAG&obOX zol2y~`ybE~~HhoTua64sR46P>Wp zBkefpg~e-ZUf70B^y zkaUO0-QOdfy(ocZ&oL=7Xed0NItbqOp^ok_Pn zge5Cww$xZMiPxDHASIsmx}qjptB3;$#z=^iJpj`oMWv+l0&N@O1ykkCFBjd;{uu&# zzcs%YC!;SQ&W2>@-3KCj_{L!?YUl;GDU(8j|M#1?>{fXO!1kODSHq2X)d65DpDgrN zznG4hIUe*}cC!s#0G@-t)3Ez<7d7>CJ$-2jA>&yvCQ-lh?R7Y0@BEsX!ET)WS!o?T zoTpmd8A^xm%!e0G041Bm-b_bBvy_x2k!c9wp7&5S zo=-Y55yB0x5#~-HVK-UvoJkwsj%hh{m#aU`A|@@Zf3`6RodnV-1djfQ;e_RGheSk} z4Q0!d^OU4Rd=g^3P-!)S2sFebx{=V;C4ZeiS)^w*13LR}eQDlnC)7TyBNy5V@@*x1 zkBhW0E^bMAAkD` z5+;7e7X8pd2`q_p!rF)d;H2?1wYJ+^UfUt z3Ic_^)46zCxof~8eG&Zm=U4Ik)>dm@t_2~}^@l#4>Y)m0MwFNG-W=zgnVnKG9y!$@%&0AucF9ipL0|NT=94jA znCBoHQ2q>%PM@MKO6Bv7x8-*mEV8xU(u{N?x%ESlj$zd?5lSwP*&jik=w@qM25{P4t4kgsywh?SVBf!mgDz$L$LNYDCE zYRj9yi(V%0%9R%F{k+S?v3LA$o$9Dq=c2boPNya6PLBeB@ zzU;YL)M`n-Zw$?SAa|tS+jP6@ZZO3fcQ3BxNdYG~tEF-M{V}|W2<;i^Mn$e(dmQ<$ za|>SD{uT%HjA$OnYk)lc5?Zj8-@$khICPS?SBJQCifLK?w>N+g3+qd!7@Jsys16#Q z8VoRgE;qeX<+-{h+ZOZ=#|gLMvq|y*=N3?I!ST_+&HMy*ndE#fQBA&=PDksdMzRri zY8;pDV}p>4Sp+qc;J3D=Q%`7ymtPgQ4eHU6 z^^o*cq+4smuAU)^g2*Ek9q?TH(mH`>a8jeS5q#6~Gt| z2?-H7C6Mv81RfDUa(seqBCP3NO;zER!Y*Q~NxLu}>{I&?oefS^*+?NZQ9{{q7OW~4R68sW@qOO45KETvo!dMQ)ELC8WK@8Q9S62jZ{N`*KvpRjKu!*5gW) zez}|=!N20Mzmq>^JKuD1e0CMPKb#kPjq=H_hwC$c7i)-U$}g$Kon>NxlWu*`XO7=x zmB>U-Rj^K|y)yTcby-VGEOUvz^D}THv^_2Ej=e2xLO&hnFTz}D<`D{xm_IEKiuHeiI9dfIzvGM%K3zVb(onTCb@KP`84iI(4^#&dplVJ%+R2SgfO`y53%;BNikp;booJkiQm*M+U$n``YD>d7kC*>9uYw9r@pijG9nt7Fsy?Ur0~axm8VY zagCnbV-u*L_4@EGIJWt#-W00mO54ro=nPVxZ2XhC5kY9Zf36KhVvy&QD@i|^t{r1~ zL9AQR7V}A2-{)+Xn2`{(N2AEBi^_jtXQd0(SaPVqvY&`5TTC*#PwU4EvfdO7jM65b z)vnoqppTPG5}}Ocdp||EY%U_9Vr9Dx+B=v@ea`)*BA7bk0XUV)MoGvUTCw&XsEG+RuT(PnY2Mz?z2d}R*VV7{2< zyIcMDO1g4pN&ct0D{HTFJ_ReX>@VeHC27{(Fp|0Hug-|{S?X4+1a}}FfYIj+1Wrye z{bV(@PH=SP$VEg`qZ=3)fS`B#FZzG4TP-V*`O*^1Jz*7yZ-isoM8lEHN9 zeohzOpF?A%(93A}pZ)8-N$dssjgy0hpLxp|4`Ni#ZfpM3AQ?#s_v4=eEoV5Jf5OFhFq?B-T+Y2$mmcr$JL)!ija<~J7iz;bo(l5t-lRE@ ze?TBwHW>4CYn?s<6+aMW&O=2rtuC9x=#V6`CB$t%OU=yOe^DnL+v2M6+)jT$Q2uYh zIem6m%c7I$T}x~3`N904KDVZ(rX#DlXqv6j$uN7{2MVorGk*d{7=0cv5bQ>}(O8ZO zY$;vz3u=BdRzk)1p>VUKuJ4CBL#bQfLJ51;qbaygFnl}47`y|!?+tkU>s#{G^9`5( z-70ft$-IlSY;p(=aHKL;H+3tC>cwC_CSBy;m?aCNRb3Tj(a<2ey1vq^G^5btt1|!7 z!vf1NX{k;N5&Dkb-?Fl!Dw}J&Eq+znS`Xj(?xE}$e=EYE)t)=}RXN{zLZq{AC11mH zEA{luc7IP`-$SwK@+4F@))*-!=k{$|l$IgW3>vDHn%H-h{p}&&^%JQz-IM<2#Bm-! zy^7Bo`qxy4L{~D`b*_nr*Btdwi7xPa-nA<15RCKhb>iC>lUTOKDO7K@{-7@rW5W{Y zwmsb%9GkN@(d0cv+A!Gc7(t}y9%Jm~j^D-l-uWdl(^bVHHS(<9z?d+Vi@kDAOcZC$PKk3P3k) zu-$%qNW8O%HHP>O%{3Ps39bZ!1|(mdlMzZx2hM$FtN)$YUGE@_IO^W zbG{l0I$Qtt_JlK+_?J}9Cz%{<#8}fXgAF4&gqbVHoEy!rbhVUQ=euF_grSyl>X^P_1@Fv)~*1F3H@6#POF=fzpL7h z1%w5>+$t$bIvrQU=B1nen-d+wLUhTkV*$ zxvdX*s{9QMYWN-I>(vZyC9u3x=Sb?h3LP^V%|V#Bk1e-|0f0X=XKTG-I3T~M(h)1kAz8M+6>niIF;q*UT zO>|T%P%JMj~UQ=(5 zflnVq??31uIN06E7s#O|i6(!>lR2=uZ9F*1{+o_>fH(J-iQ&eD^Hu$t)hro; z<8Yp>lCSKf#gpOYEMCk#&CV?SC{o}64Z!;qB*i+_%zAYKMq_QnwOTd*xMzLc3*@J) zL^{K}Oco)V2{4kliE^}{MKMjl`47y0MEUB4y<=4|#VlV)M{L@$>QCZd&6vUnOy#i= z)fF4hGwJpuArhAD08R)>`-pgyu>Jl0+rvCB(@+@R`-0Xs0uD92S#KUb7GdV;FuIw< zV-l(T+a@7Mt%uYZ7MC?e?|kLV`%t&6hm3`GER3pZ7-{q zpW|$~>8@UiOM3WAVQNnkEw4M=%aGf=QNmV>2?<;vKtn&OIG-Ke;n#w5Hp)?Szgu=- z=;%h`BcHAj`**8ur+8W-TZ>|Cak5IawPy8^T`A|Xw2vSEyf|(`Mm=}hbQc)D z5V_yTfrND3tfOSYJ{swcLd~tn;c7*|pl|+UW`s#X{arT>UByb@&4-}zGFSdsA+Pj{ zCX@ zv60j_i?Sx@gO+zl_(m==h*9rNZ%Eo1>mHuV8=a;}Q{jCN+z3j3h2JZ^D3^oE)tXgC zoC5+AmuWlo)rEI{4jbTR(uYVzJWTl;e;vKew@8jlS{|Edw5;yK7kBj=88Kk-j*e9= zqtMuJ$>ktTw#oq6h`^B&KU9mal$1>S(}fkGtOSO9h5cL_1_1+`-&KcOI13|V7%G)d z6zm#Jl0EQ9NG!*e&{tahZ?8L6dJ+aLw%xstKu7e9iz|Xi-{Z+?&`UzhBBtc%M~-cL zS#z~SaqFKM&_q3R6a$-uQ6{AMtv03~AJE_9Mw0e1gBOn{7HV^LyJ>H^WUe>}vEk)Q zVH1xxy}7XF6$`qFob;7+y2`=j@fM7~wEnDX^r<}f)2BCovlMgH3rPnDm1(@TL3}~0 zcoSAVOA5;xc|ayVrKS!5n<0^>9TZp)XzIxD8sjUlwm^QnLE6) zEhkm?7s$uVg}iNsa~}=}&&@G+y+DHI*nUnwxpcKpN2yS|lKg}|@o&^)=WDOkFKIGy z3=_73sYo!Egl|Fu6fg)~%b)7K*xDO`=?2eO5PWDER9lU(b=ao9D>C#I@Dh~SG_Wo( zhCcRp1Mf+it>Cf5WGYWbVEeI6yGD_&$PB2^PfuA~$ae+nVt9LZ z(U{%Q*?Mky2XJL0@BI4}ma33WU2fN5+H}400MIQ9L4rPK+Op9Q`QDbLle~Ev1_PJC zb77W>rrqQ5Oo8ES*Njy~oh#If)Ow{|p92OAzBn=h!d?jqUEYrCUahj!7q5HI8bAlJ zcU5adBZi9m&AB6}aE_aj@BO!)D+>)0xf;P+i;P8ATA6rp(U5O%qSd5S_N#4JthG73 z-xBsw(*F_K@GtsV;!hRAb@;T+LS@kSMh+6aD|KwJH^&;y881ee-1cT*sE_(dQEGXG zC_P6jw*7?ntHg)7oTXq-YYsxTdX9|vlK(@~R{&MnMQiiXjevAXBi-Es(kR^^DcxPt z-O?r9CEeX6(%s!4UH|6Z`#a+};CKelyU*HdJ?jaIzSx&X`{m5j_&s)@s+)st8->FZ ztU0);wSJb+taJTwxbQ?^EEnf?a_}f-AFNfHAEc`5fa+e z_ju-`uQW7G45r9VkO)68T|A{;`yCxjl2u1fqW4Z0o8m1KP1Y-GVq)3`=j&?4iuuy@ zOEf<$N_X?OV3ujcDS z&^c3epy(?Vsgz=aFm)_ARKgFem$W7|Fy*S@;o+!iYFxFND1f6_re5s_j`!zat&+F+ zOzO=2Pp)Sh>AJjuAw|%qrNlps3J)jpCjmFW5?dsJ0w~o%qXP25tKYz^Xd&VWKucJt zHOn2VDe;q*l>7yLVs@L=<)}$SQM@lvLPu{{52?`mcmy6wtRGMtDm=J}O{yiJwSL2h zi%!%(9D|${K$O(fD^;cibAW!sy%R5kpx}ZFq8)5l&OF8899SXwPX1&7mk0;~%rBb3 z0PJY#cHS${P>nx02@8M7&K~bT{d4x*z;Y}Uz;o%IxwLAkYF8``zgJ5*veS9~FMp&XE^p4=P&U?265IK@|%qc?8q6f;xk709T>s%v=LMx1Gv~M}m*f5PCX;nV3u!QP( z+_1QH4@_4WKO(8fO9j$*I81ADY4g=HDUXg*SYYX3(Y}|8lprr*$L1P|OzVwyLyI@s z9!E>GtopLiRCtm~7_VZf&A;SwVzLyagZmG5k$*l;4X$0Ru7uQCDDlW}WzzeG(tg_b zz0)q40vi=ZzfYJ})&MEVOrF0#-Ie2-?o<68+EKDNK(=2^1-*SN>v7yxmS%r>7YWVy zi(fNzRU=a&;Z#!nHuj+)aM2;9EI&t^kdB))`gZzzYg8w3vY__sNth>VD+eR*MGJU- z+05IP&A%ZeiSbsN!BQ`Qe@_yC376Xdeed0Cvic^Q!HWf&ixy=utbk2tFnfXkd8lq+v*QyH zMWJXUY5*o2I2x=f#K&VhKHikHqzS{`nE(w!Pcs?!!04(#hJ^w#bJ?IyH#Rk0Y=$%a z1$=yOpjQC>i0-}{_&YgQR|Y_NJ;ntzgts>4OX3hh=r5Xd1Oy|GXWJv!mF8>LgZw1$ zjG(|Kk0)&oG}e?fgWgBQZLO_%tVSU#yER1i0$nEgp+$(a}u6MS_sSB51dC zYZ4f&gP_llYbU_|LCRoOjGOjuhaP>7D#Fq0v1bdeD5AvzIYVDIa$VeJEschMe&iHq zoyg!D02nOjuf($r{>-8RlU2;Az|n5ZgIDW13%>|2chv+)7wUm!J8G%jLA*WlI!_n- zQ6iT(qZ{IugI|Nt*`AUBfE+Pfi%m@ZDpI1mvWV<%CcNS8t3lt(&jXQ5IhNX*!|Jb< z#_5Xc{gI@_bX6G@8NPF1APsNL(_6tF8Ny|SIY}Ac5pBMBD+sFCagkmp0&A2OAx-u} z*Nag~a-m))MPW~dwZLz`@bP#=OrfgB4f#yoo^7TM<9{tA@364OETHrZ9_Ex>k0&eo z;s_mr*J_z2C9UiI!A{Pd^<&NMo<}BQ2Je>+U81z=5jC=V!}}7#TXZn~k(V#orL5YN zZC-q%b8{HRPJDI9o(2;o0Ow^Q_0JRu-qy}+gVp{KX606IVrlfc&Ny9KZv zpfjE}DUiXB4}&;K;0PiSO*{rXO_SLVFhNe@(u0>1j1Rkt72oK-%ZW%nEmwmDK;A3q zsgf75sMv?^&cbeG)a*xBMDcy497*5SM>qrzb#U znkBCQJDAOQ_|1CY7`@>CjvneDLa6rD?YB=`&9ggR8(k`{z={9Q`%fZOA@ED`QRSK| zS}|qxG71d>YPYwQ>%Sz2GeK-ecX#(y0%3eiOefIVluuO1XmQC~xzZ%4F?5x_vPpW! zNvhZXe_sGRqIhL|lttdUb7Jlv>vcX~E=Ht^TKR$1!NiSjAE?WcQbXPuBHoRHMq2A) z9TrUUb_~KzuA9x4N;g9+E=CkX$M&fdDd}M6@lJ}>?@KG7zpahm`D#tFKtRL5FdOWb z1`2+YalJJJK_Ndl$q6)#fB(8d>pmMeyR7T*e5?_UQ=TsS%8-O&{9dD;$ie0F&W3JL zW5&=*R`73VbEl>|tX*a)%tHNEZgX$+1MR|f{(z-{Hd zk}?`l74T`WWuo@@6$L9O!5;q}kcL3ZSmj{k_r7dsZ-5@(mxl zoc?E5P6sclQ8?R8Zum=tt7sOQ|A~m`>!d53Uq6hsP8C=RycODgzzhS3oB`-QL!!pB z$qub<*Vd8&R4^X_0}FczN)`qIfnh_kJzcL0z?0wVEa2LiG;A#>0bk!j`3$lm4K>Hi zcI|K(3DuvXYT;PNhJf(_s1@A6i=)Zy3f6Q2`#DAV4Mg`5>`Qeehu?|gZomPzbbx1z z6Gz+(!)cE_U-1VT#?Yik!9dkghQuv#abw*zsW`Ed#k%kv?(t!RYMrg!Gri%n%0y8> z<^{{x*wj=+Bkd!h>*=X`=`uSib049nf#}@B7Y1d%`ZRM>)OW2nXixo-5?XxACSX;) zgn^H5&X$;(It&gOqL*ibb3FoUVzPRK>G)2SQ&&R8D?wnD<&>MrbEeBRi~nTz=e3jF zyQX=J5L#1<2J!O~Cb+Az5OdZMPgV=2V0o-^NZEDbqhTuxUr?9N>u2$OXa!psgJ^QIU_gjsvJBV#WWwH+2Anx zP@%(X!X@Wh{^B7(E)ltNnIO69Z2=um?Jd^E>-087Ricm#fpHH{&=KBW&ux-%U?lR@ zMK5=9`I=a*n3+IH>S1%qb3&ePX<$ zXGIF@tjtOki_abB6cKrS;$kfI!QvP1YKF62)ArBg2DrC=@=7y?6J0iEhD5Xuzr}C@ z^6Uvw;)kCfZ&&6*?6y{WfH07^08(3Xfoc$7kIbLLZsP&AE8I5z=hk7Li->l%_4bjM z>rZo{r*@#-cOH5-s9k=zxoAFKd~ixh!%4i8hXC6kZOZ{TcDwMpoQ_gw$!-EJZoX3C zc&*h^BH*U8xSs3xM`v{cBNO2C<{T~su)=-!p-|{{&Ft-TBO<=mJrMr57Jq#$tF(3qX z_qD~>QAdJRHt;9=+mg;gKi_~SlYRuKoVE0V0|K_2Gk?=J^Ia4*V#Ed<1DFUj2;B*E zYGsCiOH=?*U(|?_edW`pj_5Zf4gVBcWdF^c6>!T<=TmFU!=A$)`(o_ojMxy4uo(LM zsK%25;p4(?j&P-;;jkdZm5j$_1&0|dF!<~gwg<(_1;7Fm@G!1)LWD~b&K)N_d_gYq zeS_VUkL6nI1t|b;@h%?T0rdpvBnh*GmrHwCN|Bd`K2NXvtwmIRQ9~J;BWy6R{#LCH z@qM+-?35r)_Lri@m1NamQ7J4At+Q$FZ}r9+=_S7~F&8e7wM0m$azHhLNH_N~RvDfM z+zvmj4Uj+yPZER>u)nVv9?VGdiu)QlAp-?4vtjFjv*l_5fo1_e>3p)wMW^=E2O^If zl3xzN!S|M%p8;@Yzi@IGL+kp_BQ8(RM`YX{mD+;zWN+=<-HTZ<|EVt5a=D09pjoK9 zgyX2p(2m9KiFuD&A__Ov!iihN_Ge>&BX3owY$?Xb5^V0dF!37wBcDDeK%hZBjYt?2fi1R_qN0OT%uv4nXd**e z3YSf$4h|xMsK)l@rYN8*+jj76$d>olIhA_UE37p`O%%H4VxX}@i_oCO<$U;s4Gp{^ z!oD;KDp$Z+3s%{nm)-YHqMO*>2JV^oIeJ`F3gQ_d;VKH}LQP1&Q>M=4ivm~eI{RXs zM>2pxW0I5Me*l4-N~vnTZrcO<_dh?HosM#*j0G)R0NG@|Y6AjD)dU}pl|U&y!H=gO z0RU7w0wxvkka6~YvU4tOt`G##&k$Gy^*fhB9T-Vvg>mw40nABEdd{|vJ83{24Nkpt z#ucb~tw50b?@Z_iK=eXQwf`3~^Fs;m>wdFEYtmt#XVaO$Y>8U0P$b3rjq9cxA(89E zKnXyU9Rr>ywiZ58iQJD@W)Si_l^rjecNe1tL}-F{AHc}zqAx~C4Xn{WlbpOoSe6?C zo$uqBjN9W$!64ptR8!BC&IllvD3&(cuzaS1-x(;LGSz7Or*L$H^LU#( zu2bHPNLK&)LH2>-k1@r7Bo!9%^TXzBokRN`x62C|gt-*hV>dO>s73Tgcm^$zkki&g zaI&W%M&!pBaB6jMex!}l(Yd(A%<>6z`bg$?z~-~Pd>`(3@;B6%>3U#{BbU~6Gx?S| zpX%3lHfwu2_j95fT3wqC<2hVyM_&1K{;^ai0&d$o_!W|a-s6L{^`l?C)MvM=R9*{+ z5kX?_KVHFh45dpv6;&(W-4A$9%rx9?X*arp)x)^@Kop_CIQZxL3vH!3TiDPZ`%9FM zw6L(bFf}}9S9@{4pVysq4^>FG=2(3Yz>4xq4j_FJc2GC9_>03jnFO~E4wgOvW*#6~ z)KYX~1}IMGGXvAx0kF`ue`6(~p!ChmBmi#I7Sa13RE?~=M_gq~M<9EkR8J310?_xr z`1u`*Mx*_H%@k}hG8~fAgk0uE7<=U5#dvEBAn>`YM{n0AD0q0bT*4}CUNY%EhIN-| z2-$)~nL(%pU>~Im`DB)=RW8yW)1u_$=1NIR_g2a~Kx|s$tiU57VIr^^D}$UsHdF5j zP?7;Jf*Otg{D+)D%7>pi_hpv7|DQ21+{L%I%#_Qm4E75(l?M!B9mm7 z-U9wV5P%pCHr$7&(0ERXdyS$Oi$JspZuGkL)9GT&x6W6s4|=iTtTPmoy3uyS&*>QK zM&6>#PFF}6K=2a-ag|gI3n4$`Z)C+upNf$_zAbr>@|r~g4d#`o^p7dd)qp$jj*y9z zCHBla-J%VBrD>|C)@H8$&sDzXEqVVG^;c`^0sY^b|NB0<`5*1w z<4$wA0q4?cK`d77^&$4Y>$o%vez{(nF^qroUfYaIAU_bddcRn)*hF|IIksgoQAL{0 zTlkj^vGhX)OX;+r-aFez@QjJ}vE&|S5?*b!!u<0whF9u%^erJ(N#=6EXF_vb{Win` zL92$-Dnt~Gzm)b6CLj6j2vwF^e#e6m&@3O;)y^-j>+xP47Nq5~K5EN|h}Z_e(8*&Y z6}dR#sRQl8Au-U>MGf>Q@I6h3T3HAaxi zzkaA5N%aYNGkh^I^b{ovjwbvRr~L0QHk#8CJN#rQx|AR_bq48z%T{pqlp6xE$ls3; zU%|}r9?Qvi_P=Js!u^)e5qMoiGN4Or1{hmVpcp)d;Gv*|)TZ1H%8tQfkLDA>G_ zUBUi-D9eZCHAx)V$E#{3TItJan|sW|iHkbfIH*@l#H0J69!}i8e4OB@kdW8}q2P^f zGqrb-nWnp_8>O6?Onm$M`E2Xt#Q63OOd@fLkx%U}gd;CJXZv4HtGE6*5tFpX?V>>8 z@m29;o*J;!g6r}tfG2psi0(qoz>(l0^c1tdUxX1+vX0N$8eN#_9!95D5fc{|pKa%hD0^JeTMCxSaOl( zeRw6{hP-O7!c>ih`!ud|O4yx@diCI6io<`870_VkDE4-7WdQjm*xsA#Y*QMYbq8Lt zTQB2grACJEwZVCbvIE*k6simjDOG%EV zN*$X`rkSmU-Oif>Sq9QkP;~)PHeK_1AAOam-plao>Si7`!p_R}(^JtF1f& z9)kUE8@r?=oTUaFn;AWkLFq(e0L5LlwMpl8)t&g?MikmCSUZq|>Xxnj<^B9Q%o8i_ zCOHw2-1xtts&l9LJFL9D^zU!i%}++4y#cHs4T^#7p1yFr1Z}S#0;m{5w;%wbe-5Jf z`3w9h_;mhBR8;zv?YpV1^*#Ie^L=D)&l`OZIvY6qNNO~v7bWR7NJaTZ7|ayY&DpnE zko=upVZ=?37AFIoX#;?o&2mhD^r38%vJ(N;p^m#*u94qX)Z>U)!+LOd5E+aPD_N2; zA9X=d1iZ3PV0Z=qKs*)$u_pPbrd;uG>}3}{asWz!ZO`38E9jnddfYkRjz~Bm$S zJljl)l#Yha%-3^0|8sL4|4XSUQ?J8@P~%ct#lPXr%*+hTWb(fIE*r{1lNxb~87Cg7 zwKv`nrtCA?O_ePcoVTTT(*TgF*dy>`*XIH6b$L|g`nVx8ivxg3K~)7$oEWG@Hy z;3z`FOKOtKzd!bD9h?{v4Y7g>oVl%aT7ET`(zS}S#sV!Wjr%9x-J{hyq;itlazd}o zZ8O!1`<9|?L_eLBG1gK}J)`-;v{1P}e7xzNP1qUTk5ev}yFVE$S8-A*8Q*w6ehhsE zBJ$%+fz8{e63y+7Pr4A?w)#Rg9RfiNTAYA-L1;3T8Yo492S9buk`e+3jI{bx+Jvug zi_Vp^XN$qo%9~iw+5Amzu-K@98A3d~aZj-fRffc}Cx`?c&Zhyy;Bk{G0DRUMkRAwy zyq71lerx#7pSp|)T=## zU)SD2VOIah$dZXA;Ol{fU5)V7K0ZgSn-#Zx* zf0uob!uSN+CMJo_8;{FrL;bww6I<8Nl96oe=AGO{9HOgR4G|@p@kVW9Vaa;T=gb(7#Rq!`txM~RwWETY#C?m&wij5iF|zz z*lJ0DsFP;335zyhB>$fVDdmix`>O1;i&OH)lJF!l*IR#tGL4o@kcD<}n%n?ir2O%W zh^X`SO5snF+Y&`OX)$QP5si zKXUm5HpFbE<3@nt8HFlNQ@A^N9~%%5;AvB-PT$CBVa`^tR--`Q3krZ|VrxEbx%|ib2;A=3w};t8#pupegIF@=G4kICWfb`;sKd*!P6S> zJ-h+YW7Ncf(PPoRsnU1MVk&=R(9BFcs&cuVjWB_NJkAihiw8i;Wjt3>vXYSNp}GQY zzb>8wGZm!d$gTGYl83bU3zV9^e!Ea8a%_eia{~LT*XM>vd7`DsDv`EUm&P$iKoN-* zGiKjfe2#@An$y5TBa+y-F)f&s73-4@Nc0`&rW7xn+T7R>k(Nfxl6{FIYPnh8$aKq9 z>2MY(2*(jF6v;B*6wVrG?D)jjGGMnq$dY+>`yNxsJ$kXO`*O9*SNYWXPVN;ka=6|g zzAUg7tCTr|Tjke1@I$ge^@t2hpfwt&1YI24g!={!Jmr{v?fH%Zoa;-5)2NoWUvdE0 zO)49K#`&r0AMVHtI#S%*r&#W5jFP<|$yc|=c->(PBj~P40|SF({(CkIjLoYC|D5%| zzf;Cy(tk#Pp3xu#eDb@b(ifrG+`A|It*QHeUgiml2W|QE_$9G5kGySqmVw&<3NUCxO7ioLpISb>!mjj$|SrcpB8ON11ykmc*j(X)JTI3ut4R#G9k(-^fC+k+Ulu@rlPf`^0w979Tg?EC3~lft&Otz|J=3E? zY7@L_GFDf2ttJ{+Sdn`F_d7f1iV^gql&q}LP#h)LZLt^)TIA4(p#sL60`S_g><1#8 z{!|W&OM&3i_J?|?-w_AX3uFTYA1{&f=QAi$z^Agua)?jqQa*09_ZynMPllgb8_rwH z!#`WGHaNLO4JNFo|A@~f%O$V+UTr8$yjZ`pTB}Rr2q3WKJ2*7J$%xUB$6nJQ0WWy;{Lg`I^!7~oj)rJ zE^S*l`CmtsW=HKnL$z^o%ZAZ{j9uaGKDFUr-G}jMZ8bU@%tuj#xvJ`N!0HA7(Fg7V z0}APH06}_(D?+5iSR)HL5`VPJK(L+JB&6FMr;*&QKTS=X{4r7`My(Cf`wviSBO~!& zdtL_uhO*)_3*bI5a%Ph3J&zLf=sFw*>xeGoDH^j&m0%x>J8HWZAA>bjX*fPkc`BN& zg_JF&0_|Pm1a>nxEP>f^6hF7O2|JkFT)&XlQu)JmNCSoq@Ubu)NgSiZ`SszaA{eXQ zAf5=^3)t(!9o;+8{K@s3KmXev`4+g(K;o>t^}JZ`VV1o}e_@MdIXJQhQWtmiK^?jT z*86vsD)uLXn|0ms?a^flv@8I(**6@?k-O=yxl;teEipKi0ObUp*HIKwxRDY-3>lEamD+t;_DGRY~@zothq_>&SCo&nKu7EnL`X?1h>9IRxb@y|?>H>s8Dy>wGyxk(2MvId=DvHMB7ZckfRTF=IfC6JJ*`;Un#l?OAa}C36 zIu?}pSHO561=a+>A1VYi1AM#`g|oSz72bSDTrYB*EWtY%5EwWKmUR5LbF*c>!z)CT zGIO|Fp-PSXe;Ot25{{tpXqx_qZwEiV1;mC=O_r1p93^Tyz|)ZaZ>Zl!M|qyjT9oG_ zriyXgWMI%H$0iseuLtx>CFSLepR{_A(pM~&eIUdO|I-jTISB0^YH{37+Ic`}Tsavr ziY=aR&i5y$6#$>Zg|HdW$t8ZPL@O}9g0pPT`ghNjtcW38NJcp(`fvW5BWkh1EjJ+N zp85LIYhS{JB81A`*{17Y8Zqj%4R?L|%x!zlJfM)#-?NfYmC6BMuHkPYm-gOW_w}rU zvSg3YHhUBV>$$KOf6s9c=c(`!t>?Y@hEV(tLO9m-Wr4B>2&)a zJ4DfM`?cn)-aK1u8{IQvQJIk&+kNWwryaZNgO>$~%Iez@4u`XmbXOY|IPe7h7T(q7sTAZC`8{-1-I)Kqo?ZRjX^}o$Uvei;Vg&E3Z_!R(%&U8@U4-=SO5YIk^W@M=YR{w@IGy z47yel^4kB*Xt}XJ|MP8g6SGLK5_OE^`*3H{gHo=$Q;X4njNs~>Y^LPXes!{nhBxXA z>qoY|^$S_OX&70W614_Ye?7d;G9IL|J(zHBJ&BXW4dqgN#qDI6Z07Eghj*$o!BGsQ zn_CBdrSg&C@?(ou=)IJ@15k5ikWVWIOO)y7=IzQA+oYK?ZwOVO=CFXsuCt;8z$t++ zx_hSdc6A#YoG8GR18$GNZ($60SSt)fWqb#sO#H~*QxrS1)t|LaX=R^++ThqUUyA#N z0H$x8tO+G&<1%?u20y3Z=K`TEfNa{p%~^j;gUId!YhDMHHT*WJL3f4r_4l)yPfN;D z#pizd_!Hn0{n4*Ls=*5~t9wC108G52P)BHacwiz+;o>C1KQbUdaB)p8w3KO7Z!!fT ze{>a*Bz>jtcbw+ESbf99pu5`ts=ioVXnU7yjOM~WH2E)vNc`l67=y({20yWrzOe6}q6~(fH)r)1yS#CYA5vM! zjQH#onXawp+S$8yoc;d6v170?!p60>0?a=cua9_n=?h)X&%d^32*z7SJLaq@dBx^= z;3!ji-B3~)(tf8@j6_6fPmf4T^P+tZ;PBOFIE|-A)(YJgi3#iI^U?UTCF7SFpUS;x zW4e&g$Xr!d+%}Kv?d(}J?EAKK%-dA~DUkUwa`A~qbBNbEZYspfnC3qM)%ULBv*nuh zN2>HbFLktrjPaow4!dj{J$68|-qObi53{pXoa=S2ZiyCAc+n^f)d_1Jcs7ZW)H-( zZ-M<5Ab}QXH4ua4WdGEZf7Ky}oz=o9m52n83A;WZH^W{N;x>V+8lhwg{V&G)pmd1f z-u`z>Df1YHUxQUPcKunun$Q1~;$_$>E3P`c^|X}3My!d8+sS-D)&$H@Y#nhISn=7y z!it@&)gumsB{%2K*JC9{4UF#*1JlroAh<;86GA@3P8W@%x5`tu*gqc|DepsDE@3= zbaZ#I1@0SwVJBPB?}#fZ#$8)XUQf2aWiJSMe@-;cblb(FkXpWF2+^!FpDfpM0Y))~ zL@mGo4j`Am6tdczPD{(NOs*CkFBB!XZpog6Y#*TUYBYBL6z{ikIsS0;Pq{5P8Lf^V zU0WhgZazM-h zfYo=m#&3y=>Jz7qC(~WlpC@qUn9O-hKj}9@HZbLLh{`(a5L@%Ts0o=r$#40vot+eELjj(DzI4ztyfi#LaP9! zZWvnJ7pkMDpi;!=u~kgb-v&#vF)=oI^ZRe)griS`&v=#O(ZZwRcV0#kI4Sl18|}n+ zM0Rf_vhdw|( zUl4^_DEk{1rKoPRZ7UtI@sG^gFqIx~G03t_v1ICV8tpjhM3Phxc|pJx)`*}~X81aT z2H1c9{Rl!i%hhT)T{yLfYBaynRO`44^FCQ_g8K1h>#I%8*xTEy-hm2FW_ z>reMrpyvA0s=TbNdJU+ltoac7WVD=(>5dAk(|W-FhAE~|Eki1;51Wmg{i?O3XJHYn zdh)kZqd8e5UzJ&(YL(^_AvsMeAorA*P zHwY}`hlSMAnK+RnIdT&nFDU(W?+bBM1WNghWry*uxD=^>ohZ~0uZ3B$cF!tOWwK&< zfeBW=(XaSNxNPf2`+rFk?Z3H@mOUsefjBDt?o*EHXkGGef3cX)m5b`=YH-bWKlmJNX&%sW`?Cb4zQn#npi%LLMs9)y`b zAo}g)X?_hpxJQ=94bs$0;6+G(CR#}R`^2d_H*D1g#omPwhg+OyYfgg7^wW`>Y_RW& zZLHmz0Fk-zf}|OqI&wsjROgAw{(g{BUIwtX#&TJ9<7&I~uz!qhU;EBYrKu5kCS-%@ zq|Pk5-t>flY-;e5)wHMPV*7~JF(H+!U>R!*tUW2ueC}9oUtXfMJ%RD*>z^zP@5rD= z(@bBBMRxj)N>3fwfM=}Zj{D#-{3+`OyOGGb_}CQGUQr>1*Q0x}pLF)4^w|DN1Gl>q zLXY?^+FVgj*2S$4T~seO(%;e$2Rsv)-tE?*aoLSAt!<5WcuL=UlWcu<+^a=s!-_&j zHw)_L9mKUxqCyI-tr{Jr2Wv0Xf>4XmBHn12M1}$6;CSVf5J|eh6QsRY*a{Ck`DWZ3 zOTPwh6dAn$VRF({qs3}S-4{}RTi!BPlxAWy^6{_S5@LBMBg4Zv3R!|6jOix;seqi1 z9Z;9E=UVKF0KB*lH`RNfj1v(x%r2+veNSoKasmgsOtC9{3<`WybcDMqkH7IcVId(Q zjvstyERHOfqK~3My5OV(YLK42&y@_V!u~`sxjaNC5u)8}uuReY3eGCiX8f5&3G4!ndeg<=hwd1 z6_G)`z;DU(aKyon5mTCNLD*Q4{er==h!yv!&Mj1eb0E)DZ+p{be6u&UC)&O2c9I%C z*u3+bzJse|$9+)1%w*gNUGCR-3!CPI(SPjyQFvoa*01RPa4445M>Et%8$$00xe|m` zG_1H8%^TL!gtFFiD7mR3tR9k6@Rn`I5}t0_gF_^8%d|Rtjpm!MHhb&%n8B}x$TYL$-P+Q|SqnC&oB^Ix9!@?$~-d^!@=SbR) zr#!EjXx<7NGJAdwuDXH^j^{-6^7qQNi`>riMOzAMvuU?E0`yV)4+o-sZz{6CyD3zY z_F~A~B;`+oaP499pN&~8HKA2J;&kk$l#{v!qPw344E55kI{i3a zhUfRbKy(9t1cI1UsD-v)M+nT%v!4d2MXL%<>wDrGtHs55ai`etkMu~4yZr8l81r>X zQ3kn}^;5+}|8t5tfCfgfO|LJHgCiqbKb7Ra9ZoCZYd_=YkEL?_Ogw%2QnPZufq&{6LN5F%!+=3*`n?7z9*1Db%ROXbtum{R zty0Fgx$lHvaHXs>7a?kTFavZV{9Dj8z~;0a#_C-8-Pb_b*MR^IwhjB*ZR2^swH(k4 zfrtf%N23l;Ph*uBU#zAAxGZ~LJ8oG{un8LnU$l;#roJ2={;(H&A7&*xS3&3Ic|P(-{Jgp7?lNF;eW(_q23gYD#k)k@plcE;`S|Yo9xd=Mnqi|3E_V3aK?B>% z0H6%|s;L3$240U01$>4;%9J6<MQdo^kAX!n07HWtf6q0nM zD#Q-+Rbs`(@`zZyyhYOvHI592r?a_G<#}^&m6716_cb`rB%2G%koh{1k-Dv+1gJ<_S5XI&B@? za29d&klK{+fsG2w_UQO4ZcvvFm;83rXKWC~8E5oJN9(#-Y--z_?)h3kfD!lM=J{3! zvQ*7*(eOa4g(EP1FB4Mh=#_WnwkHcCY+AprajhQQY#hl3^#h1U9Iu88l0_7wrX7bo&G&z=fTV1hH;~>%5*^?1d z!qN1yhe&>u&2h11SY^O$`-~^w+70!A3WE3_2`yvz*wyA7cm=F5i}ZtN+Mj8`(#tmi6~7 z6kV&d?G0R6g{#LAh>Y%L@K&Lvw+9=@K4h8xXL=uUDNrx+bQjKcHwkI zpj^C?n(VLgcWv2lI`E=wF+5Q@z?VGj|~dss+c)e^hLP4jfPLwTxZBAjOU99Lyq@P94%*6OnThM z^7&vFrZQKo#CC{B)RvSTS>Ia5FB-^QyNt*B5D4yH&DA^0I%-zGy8YJQ$EzOqjQudL z9kT%S5E*>R;Hl&^Qs~ssLbQ|zhaNi)+UKCh(?_Vlz(8>JdbnNDdid`el#slK)PNoE zIKKlGj<&5YFA_(N`=AO(ckaM|06gjCWM3 zrC4mZIhU0Rvpk%wR(x2|f^NOIiDjb!a7G{>V{m+Y7exKd@|QqyS}h{?Vy6IKi>-KV zxq)+#T($1V+jQQI6t5#4%we@SM?*(vxX~R5p{%BMRq68_&*M;0c~xU|l%TiQdVY#A zYKxnjGKTa%CUk0JBia9b9J*8m*Q$FOh){9ZfZ1a;@2v`mXnGA6qC76`ttG(Ch9Aca zign*|LcnX``Az%+Rm`RB@AU^ks#Ih#NqLa8seY-8IIxCe2zYSdO6iYj}rUWEsxR9Y|s^(J+O10TQt-@3=#AnY718M zNdFR2{l(~!MJk8$TIRvevs(Qug@mgFgO5CX~38aI~Adp583&7U=ZtilR|9JR;9HSDH zB!K$9)$FF5#oP`b{UFiC{>Tc<7?w|@esroE{0CxA(C=bzs3{4kbnqVGT@5qjwGZ?i zg!`;rZ*RZU=O1kGF2^jPg<H@W+b0KNmf4op=Y?*}l^f1udPJfWndPwkvDzkk+28ZK~A% zU}(>u`g_LtVG*y@j2d7g@K6K(?53E4aNn6$K!1T|eOq=95A4WVWj ztt9Q6Rfje73^UZE`!<3qSAIJm6uktXzByhFq+kB0(3^0(2D z!MKnQwuVOP-c+2)So05X_koB$v`#R`s8{L#7f(&%F0`cjh3ms73emjpT=lD;(H>?B z$6f>S^0{3PPp7n=cvWUZPCXr2@*ktT@_$zzh1OSv`H{%t(jzHgU zEJftB#z$dre$1p=pM;gBi9@m_j(3l?m z=CxY^pZz{pDWx1C4HfP_@Y^AeZd6@x6hAlhO1 z{XPrs?lVXAb;{RyX0-O}LiHb}J^b@^h&P@H9FNi7-hbe(hyzt@x_CN*{3b)oD+M+q)Qigyh8X+TJ#?Z${F(HdoE2GCinhgM>E<2S&hSA4l(r0T`4?gI~W#%y7EB znT$(uSetDa5e;ggG^@nK#1=y(?N)w7)Oj@Iz7T;aZ*IQM0*5#{*rKAT;O0L48?Jt8 zp4T1*VNYQ)WuerSgJTTKa3wWN~eQoFy9zymkP zKinN2VUin-XPh!ROW=AJI{Tw9Y^*l^`OjIk5giBZiOiy$gJg@D{O^%{=5!^hIQy=9 z<=00_vf26VJKOn@7cC#z)g^~`?F`8t-A7x@==R32?*hK@%k*5tNs%WlhL{Bz&UEB( zJ1pPCTrPhv=eZL)j@dcP<;tk9Mc9s2t5;Y2e9YABCvxbwd+3FP@bqQQs$A%K#kMlF z3Cwz`DE>D#(P_}xT>dz(b7<^RoOGD_t^nc8r`bOi>MEIccMwM*^nGONsF#mnhL;|} z((k$V=w=mw!NTTwXUl25Jm_)u9NpTgJ>TBawZ-t!TKGS_STT+ECkN{mE0nzq7h=8F zhZJsn_?EZ9nUXSaUybVG9(ej*J#y8n7L$=N6q=*)UlY-+Id2=P68ytOY?%|j>oh>- z@zNi}s}_!6!}{&flSp~KIPpC;G+^UHt1a6o@CLi_|MYn4iBS3im4?&DyY5H;4dz56 zsGn9rZG69e z;kTn$(e*-I3no#zdhkK0c#V_P;Hh7|&(mQKpAH{~>k*zzPONh}Qk4ZbizBP;dMCKr zzR?g)x$_gFsp)xf06_(WU{cUgL?6lQO6=<~Uqubl2;8_4VJqBa7Qf{9hUp+`LRyqi#O!{iI z5Udttzpua^Lq#h%yOCWF%R1Q4PPZS^RO~jcrXU}u1r8XKGt7v*KFK0O4c|UiYof4D zp*rD5h{?@bFOEc?X6X_9GW$3(mtg;_Lt;B#>&<bjPr(@O%-f7w;T}~s?&2T5JsKFi`P9u>Xr5XgJae{gk&H) z(dLFHpYXTJ5|KvTj{cDj$xQ#pi@EWyL58~djflB*S^S8|jB(X|iaJdmrP>1O!}@*N zdap*z63!*8@GFAt;jIA)N@#$=o@QCKJP*T|9*oU%^J#m0rPcirK#0GB^qO@Lo}>Tr zbZ-gR&I>z^uHaind*d0w&X!u~tp<5=ASMmC1yjnVvWJ5H%p`Y3iBDk4sOReTFC7d83DSaK4#~Fs8VqWE=RI_OZ(`ww{Z^B6C+vR-=?+P5d)+El}XQ6oK*9 z5|@`p1!M_;`G1{1xiLy2|4Xma>}Y&*JmLycmzm|_>n!FJ)z!g_@Tt?FYmqYAb~0OB zket#3AFtdlgZIM}{{QxCW<)+uCoAgZvjKHS;fV=KPHUe67`{b>gbK7FX`nrmk{X6f z!s*wCTvc7~Bb zlELR8zmOiba6R6cfq1$PWJ+fL4TqENO$hbKx!g5&V&0a-<#9864yx?YG2gAlvmGDb zwG2JF+2>J7=$ev^&fE<<%zuw8*9G;G-6tzr<7^ZBW8iJ>1R^9rw59-~9~r1V$F=O~ zh6B?GgYQD$sW%hO^;XCH>Jt_dizA~Wk#DEEnS2+_ck`dV#J3@b^R7?timdO_#n^JI zj`Ke)Y1}h=bEdogH?MP@WmxCmf@LGyap_alvH!@Qf!Y5n>?^>c>bidc1yoA9Q$nPr zK|rKMP*4da28M2sjzJm(K^h5BL`J%$bASOU89*9Dq`PBaxEuBV-S@lqeeT`Q!-?yCdQkbO*BvYLcrD@{IgLK2ti4UZE^vt#_mUB8%I_|1ews0r?lIr)5q` zqymlQ*#0bWL*7|hAasAGohx(GwC7FH1KO#0)=Ms(o2jV@-Z(8v^>y$6Cl=s}huoLo zl~e^oN|*A<9x3~~+AE~iZaEQe3yRost`0z}C9P>7)}O?oL^r;RO`2L8laFY`TUA!I zgz-6u!!nC03CNaxPhoPPf-a;b5VsQDxSPR~avRn|iac2mXccvEMW4vrU_%)+-XE>K zOod@|FHm(CEpg;JJv2J{B}8+kag*j!!^6wZe-4-Nxqp$7C!XtJ$9SQ7#vH{P z>nyY2KioLG0z09_aHtEeQx#~@TaOsO_S*s?fP>BcQAe?V^d_*Jqn-p|v-*o-NMt$p zzm9eBYh#_R{o_fr@>=Ha) z`JOMY$le7z8O#&{jspPf0rB_-Af-}?AmpGFcII7FzjLc2O47v{-+J`j{AT%5^5TGK zZ`Y4$uP%NSplC|Hx6;tauvhmUCq+_FuK#>3KAjB`d4e)SpPc){s7S4e(|S8TCHF0W zy-i#U#9E;0D?z7gA^n@H$!pda(Vu)}4c3|x3qZ*F3Sj?TDDl}y55RVX64KyD6h51< z3n!?VF5qKA>`&IS1Lm^xWDl}0N+shNqr^U~oT#J=fsLfM_41e%vpJo$cpaO#VQOqX z$fZr~`VeZXWnNxX1MwmSSgKQtHFAJs0)ffH8bls)a+P0=?@NRDKYdw;sZAL+{%)_~ zdr$#;z%bUJRK$(a2@$i)J~>W~H&jMj(o{NXK1XRoS<@&;M(t?$xk3jcOsb%O*Hi?` zD*;%V%3yzcXnXUPr{J0xA)ElQ-0V~b{lJ(;q;6xg?)ISh=Qc!-?}yX%!aSQ2kw|2a zF3|RLs!R~xglR;JowKEndazq6R|Ol42n$g>Y>Wfrho)2dudbzeH1ZI!v0f3~u89=p zIMC9X+_TkL5731Xb}zPm-hE$oc?YlgDqO^`0J^_zJX=H0dXhM@&MoP*UtU@g6Rye? zo0!-R%+2-?YNNI=W?1vieD^l`O!1=@FdnuTmqJrBG88~D4v^E&bm`j%Q1e&jiRg}$ zo?>+Gbc4?^f*IDIA_P4;sA|#xx_`W(b{bVtZr0Y@%-#9PFz!xuOV@LU6%`;<*&?VT zOixz%S)80qnu2fwus{Vl5lwhdeo-wQTv%-i0K6|j%9Y)9NB=ZXiCx(5Bo|9Ug@~)x zgZX>99dC`~D1o=ANm8*75U^I+oE#wpQlK=uC=2P(DlFO(uCB#_Rg&&AOr}5zF zQ^$b=3&RQK@U4FFkzt4P#W_A-$Ag;yBx^CL60_|&;ng#0yU|~GC#$?Kh1IZTBMm|3 z&Pcj!_8{I$X)SrNrQbeecKgTR{d%^-TQ_b50hlK2(Up;EAvc`cidk#2n`DGl(q6dt zwW~X#IalFT9Cd`TZ97j}(IhV&<<=&~P9cOZhw%VHnpiA;X5dfB;BngyLs9RO=5fXs z31!C5*fFGmQJEb&OoK$-qeKEQlB7mGkESUi@%n4}y-jL2*--C3<>c(Vc1-UTZ*+EF zmmL%Vu6&^J{&Zn{rpQG@829#VF0fp2_zY_kKz=@9fN%GtOU6$(kRP4GFKs2+nXgXx zTh2}5mna6Ni@c}D^`cc_vPxCiAP24->nuba5{o7b*9>#EnanL90MdF%{`&Q+LdP25 z|8$}@6d#pe=S^u!t`chZN!?(DdZfO5@cbH*AseW|6BGvZ6q|$RY%AfA*P~t4XySsY zI*vM^YT%b`)Nze*gb&%OI8!nuXMA13dLDU8f8Sj4B1*za1Vb-?JnS+>eP%k{|Maw1 zs;PsSlR@aMs2|oj%n>@dpO7%J6^~E#=I0k-7YGv-g2g8F)VHsiGsZlXv-|tnY)F;( z5Zc#osQC`eeM(P8fI61AOLhClV|?(83Byi3!76qiH3*G2H;C^*T=Fk^@xW>@$t;0W z&0;-gBOBE>ycU+~SIRG-6jI_L&Fdw0AZbL!lkP|Dy9L=r>K$UIpFj89)$Jwe@*P(3 zf91EwaINOd)OgWa?&UO>m|ww}($>I@t=Su;g8jOZcbulW1tBh{qLILn8*1_FXn+NM`KV(76b@hQdL(+&byS^>XO=iFE9c1 z2>=EyI5z)9VsoQ+?exgp9k$2dBVO1x@9J`|%Jsx!HNfzYbUX&3p#DttDX{sm%iq0> zn&%;KXaJ=~fRdWv=(jpSNaJK+o5aZ$N0GtCGDw9G!slkcf%=m2bU49(QR?28>&m0e zq7J<82>Kto>x0MG`FMgSg!fsE^z0n541d^je%f|`p^%M8F!PVK6g#G>8hr`lGSb(O zV0c|8RxHr=b^lXOie7VwC4=#%(7m;FL#-l_9Fb>F z7yvK%mix&`vRWZIya3x_FhD{7q#kzC3BC6GDKf}!hF)0qV<_S ztceK~|4*m5{;Vi(wHqJ9vx;jk@p6WfUq`0zv*K5wRtzgE3H zaieBeATsy!EB~Jh%;(#Z{+O{5njwL-8QEi6C7*f~8MykFu(27M&gh>uUwKaV`XA!I z&yrGYIwj{8+J^&6q)0_FqDNb9O^L{m~U%*88I?FlwVT zT2e=vFqOE*k6!M)l)z-)KTT(K%dy$~;oa0)^@wnWNF=j=6sXL^306@}`_|xyDB8hB zF4NGw!^fp=qLj~dv`UW&Zi&JAFopS7(Y8)fhQG3FZmPPy5icMaTV|q&04$0XYavV1 zJsq=De=Fl71}ujAF7j+_g>VGE8D^)IS_4Fjoc)rWbm{8UF>Y^}uW(uP;Myt=qb~D? z9t&j%pYO6wpLp_EK3pAX9gc8ivUp8`W5OV5xU@5)D`?OMBo7-KnRtFXWPH@<0sTbe z*;DKSsvuxuH{MM#C?o*;q1amz<{fK9lPRyg*Pxo~UzBji#^1Z~&je%#MZ1sU- z>Z8V)e#0341>Kp9=8tl6iIzsj-8`H2>~!{?+9&{W7U=1I)kuzNTella78A=4S)TLR z&Uk?zpSWQ&U>i|^zhTW4KgA)A3E2$(pa%BRd2cQ&2U!t(AhoQ!+= zMH_S=Z$%Ft;H{Y7a6K13@iJWX_WVHztz6)8)jc|KOcCin?*Dh`usvbUIY-90HzDbfN0<`l`gjXtX?ZeO=Foj&%FR{v*>-R zs`!)l1l=uMEW(Zli1z3BlQ(mZ4Hz^}v(auIz{8yxr?(QaDeyUv8!&vdh!0SI%= zN4y2+?oS_=-X*s_E-sp_IWNKo4p1l5n4IvNHDgz^i|>vp8o#Z#K0TOCeW<_8+ihAK06AY z&hPAY*{yVLkg&aPT>HzDOuR(Z$D$l;ax{yOA(gY!+7iXo!TAWn5SMX?TnBF1pH8Z> zg9;Pwi%2lmz`>R3#{Y8Ux!(gMB_(C4A6knu^p&fiLlu1_2gae7DFz>5g^`%4Ju>Aq z*kwc&A8SrlGEi)zBSP=(7n#u$U5>yD(p%}`R8e5fg2{ziGmSlBCF6WHhY;+&(INU# zE9>cSDKbk%Rv=18XW&s-s8u3$);_*pmJzdsgux~>XC{W$>OERfP_^PipWX+-flyd6 z(~%S%S>b29BcYJDiYsN~P(vM-FWP}7*p8CC7;0XxqU{%k)=nq(f;LnMjv?^k;Jiz$ zt#k0!g@>%CiHqi9$k-{XHU2A%2R=WtBcY5?HdfDVAHj9y6koT3)m|06Ueq zE?2C%OH&*B3R%9BEY}EuJ`jFY?8-H)M4vldDRkhqh?nP4@Uhm6Cl<1HoINqe+H20$ zYx2P-G=6Ub*DOZ@xGNy961@mB2$X=`m3jmFPzuQWd}8J|YR(fihd%K~U6%;xh`Q2+ za$j!tG9~U&FY?0^>m1TOhu-ug2+168Kjkv1tjG{2SCqoJ!AIG@78!3C3LKn~1S(ku z?r7;JBW;`~66@db6!>Invz^){6;i+)ZZ{X5#QeZXDvZ!jbdf5Ube@u!Hm?78aMUO> zSmV^OeR|OKNhNB(L0x5gBWs=4m|oid?7QEcz4*t~=ga;24W;Spb@|ojZ~GHyMn+cB?@i@37xNTcX3E{F}_- z-NkE{v}N42Wr%ARy_W`sGiH&C18|jEDtz)>6)!Kz7&(k*S@(5PHHpmro8x z$ZoNX0KzM1LAx0km%Y<^ET-WL)6FTAV4GTS)tOC012e_bK#1w1F& zH4LMv-zcRVYOz@_jKN1UFRtO5DQ1(eZei0(c&p|V0+>eXnX2+E4UoyC5y`zavmY|k zTk{0EySki&fL0#>3HDO=D04=`9*}#xs+mJ(ctZ(0bNx1~h2B4maZM^5Q!q+O%QTWs zl0Pdu-X-7>A_Te%wzz>vU}akOYD3YmjngI{`7xwR)5zE7k~!Kh7@-9_42t)1abOi_ zLUV9CNW(RjG(>DnY4Er*N8{rkMri<;Jgk%kkKgi?9Cx=aXJ=>%j+BX3wKTIaS0Ih0 zn&0=HBOX)T1>pe*{LZ-3j4Hr z9o}nMQb0F;HKrw)*rO$2mc=pd3-XhOEHHk9-mKsA`+PH$bdh1jHGWK(DnW7`zZ6U3 z8-CGHo9m03)2<`r^;mc4?n3XR*J5#;p>i5(bhqeZ<|+{2*9q~qyc>e=5xJttVs+x< z;#xsTq@KNHc;)zHTB^)M?s#eRS9{yflZ{DV`HUac*z?Id;$mqgM?R^F7paqXOb!}? z8LI6|sJcm(R9Rff5%SIihK3^9hsH%?B3El_(q%#^rMq}^#9bAYPCfEOA!ZaHycXzO zipyghiSG=xZL8MB2!!E#_Iv64l1xDV0q^Hu0nH_etS;iL+!kq4rN1;KL-Z1|)Tt?g zg}!wO#8>6cc{{IE8@VynS$uz#6TQ&|MB81vxY^k|MVh;0%HReR<5(!JiAuGUfu>aC zgE=mLW@Zp8)@>68Ku*1Hi`k#zTCV9uZbYirO)nN6GY)?aM)5fkezbK6@W zLE;Yh6I(V&D}3jW9rjjq6$hlOeO+b7qeNf~?Jqmms6ROa$=wZ z6Y7q>nP<9$oqf}d#mSoDALU}j&r`bR+jJf-4uK?zIU49^^`G2~RDzR4dXbSxPZGdj|wtDLcZ_cLZ#6*!3K z8PP|w`V2E%`N!=Ms`*Rfl{|81%l&koLv5>t5oo#`+D|#07-zQFo3JK<4d>R`D=`1L zCPcJ-x?sTFQ%BXXd-8!Tkjc5rK`p@r74%mwgD7$57!VtLHEhm!;OpigX+)cxriR9A zDNfM6RsN<{WQC;HnaRPN+o9y+59e*Q=oNy_C&}$PeFXxiIHg#9oiE5A!!Pca>*wz9 z53n~~*2oV;snY@+!90ZEXbJt;S&GqB&Fyx*58c~buk5;v(eeA@DHfiK8C7G)D-YoENkEhVF}!cRu!1& zAdT65?-+y8O8vRE^Kwdh6`r?|6}0=fW?7_LNea)BzZa`0O3C1EDk-LN$;dE9wg=K) z4Wey#DF0ca?<8qg&3NF>7>)fN7jwr78zd))?L+?DW+?4{&>ZLo;z*vt2|BT|z1Iv} zJGQ&{=Td4i#2WYa$pH};E>i?L!V6!>m0fB_+Bj>`#o$lB4CI|L`arQWDVo zQ)ml)7L4fKG@^Ov(PSk;ri<)>2&I*pFob~O;uATO>uKA&QXbuuuNojV&>TG@^9 zzoX#b!0&fLXxcgNar@Vf^i^~o*d?C&wJ<+-@=NHeULNkTns=$|N-6kKnYEJ++6Khh zYj{jyuPNY+G2Kk)HCIUG%_9~-0%NcV#JMg4HV*=!9Wl0aq_GE@VC*iMS~cV|hQ3-< zc8Y=W_ZP8L-yh+>y}Qe$9vR+-Sa%;RHf}OYW<@QulM}xZAEG1<+eVgtbw3UGLf2!# zIsTKRBIGJw+Ic0C-by-2aK>k|K?S5=@9gh~gS7F zrH|5%NJtuXP&wF8Hx*@L>-zLE>S8{JGn88mnOU1$1ppzv%tqw?r~QrMolwuM%x>E% zKa60k6|V^SHI;4r8+wGm%Z)$Cwbx-?#aZO}n=Pc)GY6Z2Zp0Nn$H!LMr62>`Q$g<>&e5*tPK#sW!#`uzdLLBIo^ky^>yMS?jLf; z8B0k%cVwam?5HmT#HE%VFVn~W|smR;KPLsilyJ23y_t|X<~jn-GXOFt_D zM7SDxhg<|Tu(2W886wIGoJi&=VcIg$$}t(YIWxJTJ9D+us9}yM`e~xHVF0ZC{wW&@ zdu0W>pMt|F9e6^Hk^XZt$F-2yXN7S{|+ z3`NCXDWe5cAY346?e_1_irKji8UHw1<3#q#j|{+t zR_aKEc8{l`&|{HL;8a^1JAA&4H7SqSQ`gAAx{)0(Q6ChwyvvbGMjHDI;J5$i;?LVy zi?Y$RUzv9zPrDY&cjJ@wG2cAK8eHhfqgR#PQ>Dk|yGn2O)=q@RrUUaxF|||p1zt2M zqGW$5w9-eHmz%qbUrmwS8em<2i2lcs-6&KZli=vm@tD4o&P|G$asy)NWnPvKK)P7s zzUg9;4Q}#Mk|nqkV6pcFrJ$|fH%bcQhI)T@@G!1C;oos!=!8`Th z*}qTxuS1({d#0nwF1`Q4kO?l(DZ-el_x(DTlImOk&>_X5UPkbnga0*d%i+pBHJRzG z@yD*vt6GIn-rx6$$^z2#|7zCQq3vHsGfxSOJI&6Dc0jztpC5ntEr$OP_@5){-lU`q zjq8|zzHUVfgxv*FT-){MhS^gub`1QVjnAriOdR6&sl@uQ(JcATe^Dm?+H+umCW&8v z?K?hmBhi>YcWKRft@FQzr z)BW#q%NYG{160TY)*>3bL}_vM-&<=grk={*CHsF^WkQtMh=ql1ucj#fg$l%a ztVG7l|4`;Cajo;uyMG=l$PguvtiRN&X8r5rx=)C}`TGR3#X0?JFF=kx{yXro!DxTj W>dh?U{JRraps6WoDi+;?1pY7YXm2zC literal 0 HcmV?d00001 diff --git a/doc/source/imgs/stable_terrain_diagram.png b/doc/source/imgs/stable_terrain_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..6014f1b74b93adb068d57112d02f21a737c055e1 GIT binary patch literal 392280 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%0A}1>)R3y5GMWCnGfTm3F-FQ} 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

fQ#^o4HFZS%kadmzwhc-SX7ka{Ji#90!hqm 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 -w5`@a&;sf`;gBL+rBkP(9W(?(VV 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

?(#pC17Yhwm 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 literal 0 HcmV?d00001 diff --git a/doc/source/index.md b/doc/source/index.md index c74caf4f..87b7c4f5 100644 --- a/doc/source/index.md +++ b/doc/source/index.md @@ -30,6 +30,23 @@ xDEM aims at making the analysis of digital elevation models **easy**, **modular :::: +```{important} +:class: margin +xDEM ``v0.1`` is released, with nearly all features planned 4 years ago 🎉! We are now adding an **Xarray accessor**, and re-structuring the "Uncertainty" features for 2025. Note the version you are +working on for reproducibility! +``` + +xDEM is **tailored to perform quantitative analysis that implicitly understands the intricacies of elevation data**, +both from a **georeferencing viewpoint** (vertical referencing, nodata values, projection, pixel interpretation) and +a **statistical viewpoint** (outlier robustness, specificities of 3D alignment and error structure). + +It exposes **an intuitive object-based API to foster accessibility**, and strives **to be computationally scalable** +through Dask. + +Additionally, through its sister-package [GeoUtils](https://geoutils.readthedocs.io/en/stable/), xDEM is built on top +of core geospatial packages (Rasterio, GeoPandas, PyProj) and numerical packages (NumPy, Xarray, SciPy) to provide +**consistent higher-level functionalities at the interface of DEMs and elevation point cloud objects**. + ---------------- # Where to start? @@ -58,24 +75,19 @@ Run a short example of the package functionalities. ::: :::{grid-item-card} {material-regular}`preview;2em` Features -:link: vertical-ref +:link: dem-class :link-type: ref Dive into the full documentation. +++ -[Learn more »](vertical-ref) +[Learn more »](dem-class) ::: :::: ---------------- -:::{important} -xDEM is in early stages of development and its features might evolve rapidly. Note the version you are -working on for reproducibility! -We are working on making features fully consistent for the first long-term release `v0.1` (planned early 2024). -::: ```{toctree} :caption: Getting started @@ -84,14 +96,7 @@ We are working on making features fully consistent for the first long-term relea about_xdem how_to_install quick_start -``` - -```{toctree} -:caption: Background -:maxdepth: 2 - -intro_robuststats -intro_accuracy_precision +citation ``` ```{toctree} @@ -103,10 +108,19 @@ vertical_ref terrain coregistration biascorr -comparison +gapfill uncertainty ``` +```{toctree} +:caption: Resources +:maxdepth: 2 + +guides +cheatsheet +ecosystem +``` + ```{toctree} :caption: Gallery of examples :maxdepth: 2 @@ -116,10 +130,14 @@ advanced_examples/index.rst ``` ```{toctree} -:caption: API Reference +:caption: Reference :maxdepth: 2 -api.rst +api +config +release_notes +publis +background ``` # Indices and tables diff --git a/doc/source/intro_accuracy_precision.md b/doc/source/intro_accuracy_precision.md deleted file mode 100644 index 4bfd6e30..00000000 --- a/doc/source/intro_accuracy_precision.md +++ /dev/null @@ -1,112 +0,0 @@ -(intro)= - -# Analysis of accuracy and precision - -Digital Elevation Models are numerical, gridded representations of elevation. They are generated from different -instruments (e.g., optical sensors, radar, lidar), acquired in different conditions (e.g., ground, airborne, satellite) -, and using different post-processing techniques (e.g., photogrammetry, interferometry). - -While some complexities are specific to certain instruments and methods, all DEMs generally possess: - -- a [ground sampling distance](https://en.wikipedia.org/wiki/Ground_sample_distance) (GSD), or pixel size, **that does not necessarily represent the underlying spatial resolution of the observations**, -- a [georeferencing](https://en.wikipedia.org/wiki/Georeferencing) **that can be subject to shifts, tilts or other deformations** due to inherent instrument errors, noise, or associated processing schemes, -- a large number of [outliers](https://en.wikipedia.org/wiki/Outlier) **that remain difficult to filter** as they can originate from various sources (e.g., photogrammetric blunders, clouds). - -These factors lead to difficulties in assessing the accuracy and precision of DEMs, which are necessary to perform -further analysis. - -In xDEM, we provide a framework with state-of-the-art methods published in the scientific literature to make DEM -calculations consistent, reproducible, and easy. - -## Accuracy and precision - -[Accuracy and precision](https://en.wikipedia.org/wiki/Accuracy_and_precision) describe random and systematic errors, -respectively. - -*Note: sometimes "accuracy" is also used to describe both types of errors, and "trueness" systematic errors, as defined -in* [ISO 5725-1](https://www.iso.org/obp/ui/#iso:std:iso:5725:-1:ed-1:v1:en) *. Here, we used accuracy for systematic -errors as, to our knowledge, it is a more commonly used terminology in remote sensing applications.* - -:::{figure} imgs/precision_accuracy.png -:width: 80% - -Source: [antarcticglaciers.org](http://www.antarcticglaciers.org/glacial-geology/dating-glacial-sediments2/precision-and-accuracy-glacial-geology/), accessed 29.06.21. -::: - -For DEMs, we thus have: - -- **DEM accuracy** (systematic error) describes how close a DEM is to the true location of measured elevations on the Earth's surface, -- **DEM precision** (random error) of a DEM describes the typical spread of its error in measurement, independently of a possible bias from the true positioning. - -The spatial structure of DEMs complexifies the notion of accuracy and precision, however. Spatially structured -systematic errors are often related to the gridded nature of DEMs, creating **affine biases** while other, **specific -biases** exist at the pixel scale. For random errors, a variability in error magnitude or **heteroscedasticity** exists -across the DEM, while spatially structured patterns of errors are linked to **spatial correlations**. - -:::{figure} https://github.com/rhugonnet/dem_error_study/blob/main/figures/fig_2.png?raw=true -:width: 100% - -Source: [Hugonnet et al. (2022)](https://doi.org/10.1109/jstars.2022.3188922). -::: - -## Absolute or relative accuracy - -The measure of accuracy can be further divided into two aspects: - -- the **absolute accuracy** of a DEM describes the average shift to the true positioning. Studies interested in analyzing features of a single DEM in relation to other georeferenced data might give great importance to this potential bias. -- the **relative accuracy** of a DEM is related to the potential shifts, tilts, and deformations with reference to other elevation data that does not necessarily matches the true positioning. Studies interested in comparing DEMs between themselves might be only interested in this accuracy. - -TODO: Add another little schematic! - -## Optimizing DEM absolute accuracy - -Shifts due to poor absolute accuracy are common in elevation datasets, and can be easily corrected by performing a DEM -co-registration to precise and accurate, quality-controlled elevation data such as [ICESat](https://icesat.gsfc.nasa.gov/icesat/) and [ICESat-2](https://icesat-2.gsfc.nasa.gov/). -Quality-controlled DEMs aligned on high-accuracy data also exists, such as TanDEM-X global DEM (see [Rizzoli et al. -(2017)](https://doi.org/10.1016/j.isprsjprs.2017.08.008)). - -Those biases can be corrected using the methods described in {ref}`coregistration`. - -```{eval-rst} -.. minigallery:: xdem.coreg.Coreg - :add-heading: Examples that use coregistration functions -``` - -## Optimizing DEM relative accuracy - -As the **absolute accuracy** can be corrected a posteriori using reference elevation datasets, many analyses only focus -on **relative accuracy**, i.e. the remaining biases between several DEMs co-registered relative one to another. -By harnessing the denser, nearly continuous sampling of raster DEMs (in opposition to the sparser sampling of -higher-accuracy point elevation data), one can identify and correct other types of biases: - -- Terrain-related biases that can originate from the difference of resolution of DEMs, or instrument processing deformations (e.g., curvature-related biases described in [Gardelle et al. (2012)](https://doi.org/10.3189/2012JoG11J175)). -- Directional biases that can be linked to instrument noise, such as along-track oscillations observed in many widepsread DEM products such as SRTM, ASTER, SPOT, Pléiades (e.g., [Girod et al. (2017)](https://doi.org/10.3390/rs9070704)). - -Those biases can be tackled by iteratively combining co-registration and bias-correction methods described -in {ref}`coregistration` and {ref}`biascorr`. - -TODO: add mini-gallery for bias correction methods - -## Quantifying DEM precision - -While dealing with **accuracy** is quite straightforward as it consists of minimizing the differences (biases) between -several datasets, assessing the **precision** of DEMs can be much more complex. -Measurement errors of a DEM cannot be quantified by a simple difference and require statistical inference. - -The **precision** of DEMs has historically been reported by a single metric (e.g., precision of $\pm$ 2 m), but -recent studies (e.g., [Rolstad et al. (2009)](https://doi.org/10.3189/002214309789470950), [Dehecq et al. (2020)](https://doi.org/10.3389/feart.2020.566802) and [Hugonnet et al. (2021)](https://doi.org/10.1038/s41586-021-03436-z)) -have shown the limitations of such simple metrics and provide more statistically-advanced methods to account for -potential variabilities in precision and related correlations in space. -However, the lack of implementations of these methods in a modern programming language makes them hard to reproduce, -validate, and apply consistently. This is why one of the main goals of xDEM is to simplify state-of-the-art -statistical measures, to allow accurate DEM uncertainty estimation for everyone. - -The tools for quantifying DEM precision are described in {ref}`spatialstats`. - -% Functions that are used in several examples create duplicate examples instead of being merged into the list. -% Circumventing manually by selecting functions used only once in each example for now. - -```{eval-rst} -.. minigallery:: xdem.spatialstats.infer_heteroscedasticity_from_stable xdem.spatialstats.get_variogram_model_func xdem.spatialstats.sample_empirical_variogram - :add-heading: Examples that use spatial statistics functions -``` diff --git a/doc/source/logging.md b/doc/source/logging.md deleted file mode 100644 index bbe1f3a4..00000000 --- a/doc/source/logging.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -file_format: mystnb -jupytext: - formats: md:myst - text_representation: - extension: .md - format_name: myst -kernelspec: - display_name: xdem-env - language: python - name: xdem ---- -# Logging configuration - To configure logging for xDEM, you can utilize Python's built-in `logging` module. Begin by setting up the logging - configuration at the start. This involves specifying the logging level, format, and handlers. For example : - ```python -import logging - -# Configuration -logging.basicConfig(level=logging.INFO, - format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', - datefmt='%Y-%m-%d %H:%M:%S', - handlers=[ - logging.FileHandler('app.log'), # Log messages will be saved to this file - logging.StreamHandler() # Log messages will also be printed to the console - ]) -``` -This configuration will log messages with a severity level of `INFO` and above, including timestamps, logger names, and -log levels in the output. You can change the logging level to `DEBUG`, `WARNING`, `ERROR` or `CRITICAL` as needed. diff --git a/doc/source/publis.md b/doc/source/publis.md new file mode 100644 index 00000000..10d5b4cc --- /dev/null +++ b/doc/source/publis.md @@ -0,0 +1,48 @@ +(publis)= + +# Use in publications + +Below, a list of publications making use of the xDEM package (that we are aware of!). + +## Articles + +### Pre-prints + +- Hartl, L., Schmitt, P., Schuster, L., Helfricht, K., Abermann, J., & Maussion, F. (2024). **Recent observations and glacier modeling point towards near complete glacier loss in western Austria (Ötztal and Stubai mountain range) if 1.5 °C is not met**. +- Liu, Z., Filhol, S., & Treichler, D. (2024). **Retrieving snow depth distribution by downscaling ERA5 Reanalysis with ICESat-2 laser altimetry**. In arXiv [physics.geo-ph]. arXiv. +- Mattea, E., Berthier, E., Dehecq, A., Bolch, T., Bhattacharya, A., Ghuffar, S., Barandun, M., & Hoelzle, M. (2024). **Five decades of Abramov glacier dynamics reconstructed with multi-sensor optical remote sensing**. +- Zhu, Y., Liu, S., Wei, J., Wu, K., Bolch, T., Xu, J., Guo, W., Jiang, Z., Xie, F., Yi, Y., Shangguan, D., Yao, X., & Zhang, Z. (2024). **Glacier-level and gridded mass change in the rivers’ sources in the eastern Tibetan Plateau (ETPR) from 1970s to 2000**. +- Walden, J., Jacquemart, M., Higman, B., Hugonnet, R., Manconi, A., & Farinotti, D. (2024). **A regional analysis of paraglacial landslide activation in southern coastal Alaska**. + +### 2024 + +- Dømgaard, M., Schomacker, A., Isaksson, E., Millan, R., Huiban, F., Dehecq, A., Fleischer, A., Moholdt, G., Andersen, J. K., & Bjørk, A. A. (2024). **Early aerial expedition photos reveal 85 years of glacier growth and stability in East Antarctica**. *Nature Communications*, 15(1), 4466. +- Piermattei, L., Zemp, M., Sommer, C., Brun, F., Braun, M. H., Andreassen, L. M., Belart, J. M. C., Berthier, E., Bhattacharya, A., Boehm Vock, L., Bolch, T., Dehecq, A., Dussaillant, I., Falaschi, D., Florentine, C., Floricioiu, D., Ginzler, C., Guillet, G., Hugonnet, R., … Yang, R. (2024). **Observing glacier elevation changes from spaceborne optical and radar sensors – an inter-comparison experiment using ASTER and TanDEM-X data**. *The Cryosphere*, 18(7), 3195–3230. + +### 2023 + +- Bernat, M., Belart, J. M. C., Berthier, E., Jóhannesson, T., Hugonnet, R., Dehecq, A., Magnússon, E., & Gunnarsson, A. (2023). **Geodetic mass balance of Mýrdalsjökull ice cap, 1999--2021**. *Jökull*, 73(1), 35–53. +- Khadka, N., Shrestha, N. ., Basnet, K., Manandhar, R., Sharma, S., & Shrestha, B. (2023). **Glacier Area, Mass and Associated Glacial Lake Change in Kawari basin, Western Nepal**. *Jalawaayu*, 3(1), 63–72. +- Brun, F., King, O., Réveillet, M., Amory, C., Planchot, A., Berthier, E., Dehecq, A., Bolch, T., Fourteau, K., Brondex, J., Dumont, M., Mayer, C., Leinss, S., Hugonnet, R., & Wagnon, P. (2023). **Everest South Col Glacier did not thin during the period 1984–2017**. *The Cryosphere*, 17(8), 3251–3268. +- Knuth, F., Shean, D., Bhushan, S., Schwat, E., Alexandrov, O., McNeil, C., Dehecq, A., Florentine, C., & O’Neel, S. (2023). **Historical Structure from Motion (HSfM): Automated processing of historical aerial photographs for long-term topographic change analysis**. *Remote Sensing of Environment*, 285, 113379. +- Schwat, E., Istanbulluoglu, E., Horner-Devine, A., Anderson, S., Knuth, F., & Shean, D. (2023). **Multi-decadal erosion rates from glacierized watersheds on Mount Baker, Washington, USA, reveal topographic, climatic, and lithologic controls on sediment yields**. *Geomorphology*, 438(108805), 108805. + +### 2022 + +- Farnsworth, W. R., Ingólfsson, Ó., Mannerfelt, E. S., Kalliokoski, M. H., Guðmundsdóttir, E. R., Retelle, M., Allaart, L., Brynjólfsson, S., Furze, M. F. A., Hancock, H. J., Kjær, K. H., Pieńkowski, A. J., & Schomacker, A. (2022). **Vedde Ash constrains Younger Dryas glacier re-advance and rapid glacio-isostatic rebound on Svalbard**. *Quaternary Science Advances*, 5(100041), 100041. +- Mannerfelt, E. S., Dehecq, A., Hugonnet, R., Hodel, E., Huss, M., Bauder, A., & Farinotti, D. (2022). **Halving of Swiss glacier volume since 1931 observed from terrestrial image photogrammetry**. *The Cryosphere*, 16(8), 3249–3268. +- Abad, L., Hölbling, D., Dabiri, Z., & Robson, B. A. (2022). **An open-source-based workflow for DEM generation from Sentinel-1 for landslide volume estimation**. *ISPRS - International Archives of the Photogrammetry Remote Sensing and Spatial Information Sciences*, XLVIII-4/W1-2022, 5–11. +- Hugonnet, R., Brun, F., Berthier, E., Dehecq, A., Mannerfelt, E. S., Eckert, N., & Farinotti, D. (2022). **Uncertainty Analysis of Digital Elevation Models by Spatial Inference From Stable Terrain**. *IEEE Journal of Selected Topics in Applied Earth Observations and Remote Sensing*, 15, 6456–6472. + +## Theses + +### PhD + +- Hugonnet, R. (2022). **Global glacier mass change by spatiotemporal analysis of digital elevation models**, + +### Master + +- Vlieghe, P-L. (2023). **Revealing the Recent Height Changes of the Great Altesch Glacier Using TanDEM-X DEM Series**, +- Saheed, A. (2023). **Investigation of changes in Briksdalsbreen, western Norway from 1966 - 2020**, +- Liu, Z. (2022). **Snow Depth Retrieval and Downscaling using Satellite Laser Altimetry, Machine Learning, and Climate Reanalysis: A Case Study in Mainland Norway**, +- Bernat, M. (2022). **Geodetic mass balance of Mýrdalsjökull ice cap, 1999−2021: DEM processing and climate analysis**, diff --git a/doc/source/quick_start.md b/doc/source/quick_start.md index f7e67751..da3058bb 100644 --- a/doc/source/quick_start.md +++ b/doc/source/quick_start.md @@ -33,6 +33,16 @@ Below, in a few lines, we load two DEMs and a vector of glacier outlines, crop t align the DEMs using coregistration, estimate the elevation change, estimate elevation change error using stable terrain, and finally plot and save the result! + +```{code-cell} ipython3 +:tags: [remove-cell] + +# To get a good resolution for displayed figures +from matplotlib import pyplot +pyplot.rcParams['figure.dpi'] = 600 +pyplot.rcParams['savefig.dpi'] = 600 +``` + ```{code-cell} ipython3 import xdem import geoutils as gu @@ -46,6 +56,11 @@ fn_glacier_outlines = xdem.examples.get_path("longyearbyen_glacier_outlines") print(f"DEM 1: {fn_dem_ref}, \nDEM 2: {fn_dem_tba}, \nOutlines: {fn_glacier_outlines}") ``` +```{tip} +:class: margin +Set up your {ref}`verbosity` to manage outputs to the console (or a file) during execution! +``` + ```{code-cell} ipython3 # Open files by instantiating DEM and Vector # (DEMs are loaded lazily = only metadata but not array unless required) @@ -101,7 +116,7 @@ os.remove("dh_error.tif") ## More examples To dive into more illustrated code, explore our gallery of examples that is composed of: -- An {ref}`examples-basic` section on simpler routines (terrain attributes, pre-defined coregistration and uncertainty pipelines), +- A {ref}`examples-basic` section on simpler routines (terrain attributes, pre-defined coregistration and uncertainty pipelines), - An {ref}`examples-advanced` section using advanced pipelines (for in-depth coregistration and uncertainty analysis). See also the concatenated list of examples below. diff --git a/doc/source/release_notes.md b/doc/source/release_notes.md new file mode 100644 index 00000000..5aab8d04 --- /dev/null +++ b/doc/source/release_notes.md @@ -0,0 +1,72 @@ +# Release notes + +Below, the release notes for all minor versions and our roadmap to a first major version. + +## 0.1.0 + +xDEM 0.1.0 is the **first minor release** since the creation of the project in 2020. It is the result of years of work +to consolidate and re-structure features into a mature and stable API to minimize future breaking changes. + +**All the core features drafted at the start of the project are now supported**, and there is a **clear roadmap +towards a first major release 1.0**. This minor release also adds many tests and improves significantly the documentation +from the early-development state of the package. + +The re-structuring created some breaking changes, though minor. + +See details below, including **a guide to help migrate code from early-development versions**. + +### Features + +xDEM now gathers the following core features: +- **Elevation data objects** core to quantatiative analysis, which are DEMs and elevation point clouds, +- **Vertical referencing** including automatic 3D CRS fetching, +- **Terrain analysis** for many attributes, +- **Coregistration** with the choice of several methods, including modular pipeline building, +- **Bias corrections** for any variable, also modular and supported by pipelines, +- **Uncertainty analysis** based on several robust methods. + +Recent additions include in particular **point-raster support for coregistration**, and the **expansion of +`DEM` class methods** to cover all features of the package, with for instance `DEM.coregister_3d()` or `DEM.slope()`. + +### Guides and other resources + +xDEM integrates **background material on quantitative analysis of elevation data** to help users use the various methods +of the package. This material includes **several illustrated guide pages**, **a cheatsheet** on how to recognize and correct +typical elevation errors, and more. + +### Future deprecations + +We have added warnings throughout the documentation and API related to planned deprecations: +- **Gap-filling features specific to glacier-applications** will be moved to a separate package, +- **Uncertainty analysis tools related to variography** will change API to rely on SciKit-GStat variogram objects, +- The **dDEM** and **DEMCollection** classes will likely be refactored or removed. + +Changes related to **gap-filling** and **uncertainty analysis** will have deprecation warnings, while the function +remain available during a few more releases. + +### Migrate from early versions + +The following changes **might be required to solve breaking changes**, depending on your early-development version: +- Rename `.show()` to `.plot()` for all data objects, +- Rename `.dtypes` to `dtype` for `DEM` objects, +- Operations `.crop()`, `shift()` and `to_vcrs()` are not done in-place by default anymore, replace by `dem = dem.crop()` or `dem.crop(..., inplace=True)` to mirror the old default behaviour, +- Rename `.shift()` to `.translate()` for `DEM` objects, +- Several function arguments are renamed, in particular `dst_xxx` arguments of `.reproject()` are all renamed to `xxx` e.g. `dst_crs` to `crs`, as well as the arguments of `Coreg.fit()` renamed from `xxx_dem` to `xxx_elev` to be generic to any elevation data, +- All `BiasCorr1D`, `BiasCorr2D` and `BiasCorrND` classes are removed in favor of a single `BiasCorr` class that implicitly understands the number of dimensions from the length of input `bias_vars`, +- New user warnings are sometimes raised, in particular if some metadata is not properly defined such as `.nodata`. Those should give an indication as how to silence them. + +Additionally, **some important yet non-breaking changes**: +- The sequential use of `Coreg.fit()` and `Coreg.apply()` to the same `tba_elev` is now discouraged and updated everywhere in the documentation, use `Coreg.fit_and_apply()` or `DEM.coregister_3d()` instead, +- The use of a separate module for terrain attributes such as `xdem.terrain.slope()` is now discouraged, use `DEM.slope()` instead. + +## Roadmap to 1.0 + +Based on recent and ongoing progress, we envision the following roadmap. + +**Releases of 0.2, 0.3, 0.4, etc**, for the following planned (ongoing) additions: +- The **addition of an elevation point cloud `EPC` data object**, inherited from the ongoing `PointCloud` object of GeoUtils alongside many features at the interface of point and raster, +- The **addition of an Xarray accessor `dem`** mirroring the `DEM` object, to work natively with Xarray objects and add support on out-of-memory Dask operations for most of xDEM's features, +- The **addition of an GeoPandas accessor `epc`** mirroring the `EPC` object, to work natively with GeoPandas objects, +- The **re-structuration of uncertainty analysis features** to rely directly on SciKit-GStat's `Variogram` object. + +**Release of 1.0** once all these additions are fully implemented, and after feedback from the community. diff --git a/doc/source/intro_robuststats.md b/doc/source/robust_estimators.md similarity index 60% rename from doc/source/intro_robuststats.md rename to doc/source/robust_estimators.md index e410c5e1..d0c1dc2e 100644 --- a/doc/source/intro_robuststats.md +++ b/doc/source/robust_estimators.md @@ -1,17 +1,21 @@ -(robuststats)= +(robust-estimators)= -# The need for robust statistics +# Need for robust estimators -Digital elevation models often contain outliers that can be traced back to instrument acquisition or processing artefacts, and which hamper further analysis. +Elevation data often contain outliers that can be traced back to instrument acquisition or processing artefacts, and which hamper further analysis. -In order to mitigate their effect, xDEM integrates [robust statistics](https://en.wikipedia.org/wiki/Robust_statistics) at different levels: -- Robust optimizers for the fitting of parametric models during {ref}`coregistration` and {ref}`biascorr`, -- Robust measures for the central tendency (e.g., mean) and dispersion (e.g., standard deviation), to evaluate DEM quality and converge during {ref}`coregistration`, -- Robust measures for estimating spatial autocorrelation for uncertainty analysis in {ref}`spatialstats`. +In order to mitigate their effect, the analysis of elevation data can integrate [robust statistics](https://en.wikipedia.org/wiki/Robust_statistics) at different levels: +- **Robust estimators for the central tendency and statistical dispersion** used during {ref}`coregistration`, {ref}`biascorr` and {ref}`uncertainty`, +- **Robust estimators for estimating spatial autocorrelation** applied to error propagation in {ref}`uncertainty`, +- **Robust optimizers for the fitting of parametric models** during {ref}`coregistration` and {ref}`biascorr`. -Yet, there is a downside to robust statistical measures. Those can yield less precise estimates for small samples sizes and, -in some cases, hide patterns inherent to the data. This is why, when outliers show identifiable patterns, it is better -to first resort to outlier filtering (see {ref}`filters`) and perform analysis using traditional statistical measures. +Yet, there is a downside to robust statistical estimators. Those can yield less precise estimates for small samples sizes and, +in some cases, hide patterns inherent to the data. This is why, when outliers show identifiable patterns, it can be better +to first resort to outlier filtering and perform analysis using traditional statistical measures. + +```{important} +In xDEM, robust estimators are used everywhere by default. +``` (robuststats-meanstd)= @@ -20,7 +24,7 @@ to first resort to outlier filtering (see {ref}`filters`) and perform analysis u ### Central tendency The [central tendency](https://en.wikipedia.org/wiki/Central_tendency) represents the central value of a sample, and is -core to the analysis of sample accuracy (see {ref}`intro`). It is most often measured by the [mean](https://en.wikipedia.org/wiki/Mean). +core to the analysis of sample accuracy (see {ref}`accuracy-precision`). It is most often measured by the [mean](https://en.wikipedia.org/wiki/Mean). However, the mean is a measure sensitive to outliers. Therefore, in many cases (e.g., when working with unfiltered DEMs) using the [median](https://en.wikipedia.org/wiki/Median) as measure of central tendency is preferred. @@ -28,20 +32,23 @@ When working with weighted data, the [weighted median](https://en.wikipedia.org/ to the 50{sup}`th` [weighted percentile](https://en.wikipedia.org/wiki/Percentile#Weighted_percentile) can be used as a robust measure of central tendency. -The median is used by default in the alignment routines of {ref}`coregistration` and {ref}`biascorr`. +The {func}`numpy.median` is used by default in the alignment routines of **{ref}`coregistration` and {ref}`biascorr`**. + +```{eval-rst} +.. plot:: code/robust_mean_std.py + :width: 90% +``` (robuststats-nmad)= ### Dispersion The [statistical dispersion](https://en.wikipedia.org/wiki/Statistical_dispersion) represents the spread of a sample, -and is core to the analysis of sample precision (see {ref}`intro`). It is typically measured by the [standard deviation](https://en.wikipedia.org/wiki/Standard_deviation). +and is core to the analysis of sample precision (see {ref}`accuracy-precision`). It is typically measured by the [standard deviation](https://en.wikipedia.org/wiki/Standard_deviation). However, very much like the mean, the standard deviation is a measure sensitive to outliers. The median equivalent of a standard deviation is the normalized median absolute deviation (NMAD), which corresponds to the [median absolute deviation](https://en.wikipedia.org/wiki/Median_absolute_deviation) scaled by a factor of ~1.4826 to match the dispersion of a -normal distribution. It has been shown to provide more robust measures of dispersion with outliers when working -with DEMs (e.g., [Höhle and Höhle (2009)](https://doi.org/10.1016/j.isprsjprs.2009.02.003)). -It is defined as: +normal distribution. It is a more robust measure of dispersion with outliers, defined as: $$ \textrm{NMAD}(x) = 1.4826 \cdot \textrm{median}_{i} \left ( \mid x_{i} - \textrm{median}(x) \mid \right ) @@ -49,10 +56,6 @@ $$ where $x$ is the sample. -```python -nmad = xdem.spatialstats.nmad -``` - ```{note} The NMAD estimator has a good synergy with {ref}`Dowd's variogram` for spatial autocorrelation, as their median-based measure of dispersion is the same. ``` @@ -61,9 +64,7 @@ The half difference between 84{sup}`th` and 16{sup}`th` percentiles, or the abso can also be used as a robust dispersion measure equivalent to the standard deviation. When working with weighted data, the difference between the 84{sup}`th` and 16{sup}`th` [weighted percentile](https://en.wikipedia.org/wiki/Percentile#Weighted_percentile), or the absolute 68{sup}`th` weighted percentile can be used as a robust measure of dispersion. -```{important} -The NMAD is used by default for estimating elevation measurement errors in {ref}`spatialstats`. -``` +The {func}`xdem.spatialstats.nmad` is used by default in **{ref}`coregistration`, {ref}`biascorr` and {ref}`uncertainty`**. (robuststats-corr)= @@ -72,7 +73,7 @@ The NMAD is used by default for estimating elevation measurement errors in {ref} [Variogram](https://en.wikipedia.org/wiki/Variogram) analysis exploits statistical measures equivalent to the covariance, and is therefore also subject to outliers. Based on [SciKit-GStat](https://mmaelicke.github.io/scikit-gstat/index.html), xDEM allows to specify robust variogram -estimators such as Dowd's variogram based on medians ([Dowd (1984)](https://en.wikipedia.org/wiki/Variogram)) defined as: +estimators such as Dowd's variogram based on medians defined as: $$ 2\gamma (h) = 2.198 \cdot \textrm{median}_{i} \left ( Z_{x_{i}} - Z_{x_{i+h}} \right ) @@ -86,8 +87,11 @@ Dowd's estimator has a good synergy with the {ref}`NMAD` for e Other estimators can be chosen from [SciKit-GStat's list of estimators](https://scikit-gstat.readthedocs.io/en/latest/reference/estimator.html). -```{important} -Dowd's variogram is used by default to estimate spatial auto-correlation of elevation measurement errors in {ref}`spatialstats`. +Dowd's variogram is used by default to estimate spatial auto-correlation of elevation measurement errors in **{ref}`uncertainty`**. + +```{eval-rst} +.. plot:: code/robust_vario.py + :width: 90% ``` (robuststats-regression)= @@ -98,7 +102,7 @@ Dowd's variogram is used by default to estimate spatial auto-correlation of elev When performing least-squares linear regression, the traditional [loss functions](https://en.wikipedia.org/wiki/Loss_function) that are used are not robust to outliers. -A robust soft L1 loss default is used by default when xDEM performs least-squares regression through [scipy.optimize](https://docs.scipy.org/doc/scipy/reference/optimize.html#). +A robust soft L1 loss default is used by default to perform least-squares regression through [scipy.optimize](https://docs.scipy.org/doc/scipy/reference/optimize.html#) in **{ref}`coregistration` and {ref}`biascorr`**. ### Robust estimators @@ -108,3 +112,13 @@ The {ref}`coregistration` and {ref}`biascorr` methods encapsulate some of those - The Random sample consensus estimator [RANSAC](https://en.wikipedia.org/wiki/Random_sample_consensus), - The [Theil-Sen](https://en.wikipedia.org/wiki/Theil%E2%80%93Sen_estimator) estimator, - The [Huber loss](https://en.wikipedia.org/wiki/Huber_loss) estimator. + +---------------- + +:::{admonition} References and more reading +:class: tip + +**References:** +- [Dowd (1984)](https://doi.org/10.1007/978-94-009-3699-7_6), The Variogram and Kriging: Robust and Resistant Estimators, +- [Höhle and Höhle (2009)](https://doi.org/10.1016/j.isprsjprs.2009.02.003), Accuracy assessment of digital elevation models by means of robust statistical methods. +::: diff --git a/doc/source/spatial_stats.md b/doc/source/spatial_stats.md new file mode 100644 index 00000000..8ba85b24 --- /dev/null +++ b/doc/source/spatial_stats.md @@ -0,0 +1,206 @@ +--- +file_format: mystnb +jupytext: + formats: md:myst + text_representation: + extension: .md + format_name: myst +kernelspec: + display_name: xdem-env + language: python + name: xdem +--- +(spatial-stats)= + +# Spatial statistics for error analysis + +Performing error (or uncertainty) analysis of spatial variable, such as elevation data, requires **joint knowledge from +two scientific fields: spatial statistics and uncertainty quantification.** + +Spatial statistics, also referred to as [geostatistics](https://en.wikipedia.org/wiki/Geostatistics) in geoscience, +is a body of theory for the analysis of spatial variables. It primarily relies on modelling the dependency of +variables in space (spatial autocorrelation) to better describe their spatial characteristics, and +utilize this in further quantitative analysis. + +[Uncertainty quantification](https://en.wikipedia.org/wiki/Uncertainty_quantification) is the science of characterizing +uncertainties quantitatively, and includes a wide range of methods including in particular theoretical error propagation. +In measurement science, such as remote sensing, such uncertainty propagation is tightly linked with the field +of [metrology](https://en.wikipedia.org/wiki/Metrology). + +In the following, we describe the basics assumptions and concepts required to perform a spatial uncertainty analysis of +elevation data, described in the **feature page {ref}`uncertainty`**. + +## Assumptions for inference in spatial statistics + +In spatial statistics, the covariance of a variable of interest is generally simplified into a spatial variogram, which +**describes the covariance only as function of the spatial lag** (spatial distance between two variable values). +However, to utilize this simplification of the covariance in subsequent analysis, the variable of interest must +respect [the assumption of second-order stationarity](https://www.aspexit.com/en/fundamental-assumptions-of-the-variogram-second-order-stationarity-intrinsic-stationarity-what-is-this-all-about/). +That is, verify the three following assumptions: + +> 1. The mean of the variable of interest is stationary in space, i.e. constant over sufficiently large areas, +> 2. The variance of the variable of interest is stationary in space, i.e. constant over sufficiently large areas. +> 3. The covariance between two observations only depends on the spatial distance between them, i.e. no other factor than this distance plays a role in the spatial correlation of measurement errors. + +```{eval-rst} +.. plot:: code/spatialstats_stationarity_assumption.py + :width: 90% +``` + +In other words, for a reliable analysis, elevation data should: + +> 1. Not contain elevation biases that do not average out over sufficiently large distances (e.g., shifts, tilts), but can contain pseudo-periodic biases (e.g., along-track undulations), +> 2. Not contain random elevation errors that vary significantly across space. +> 3. Not contain factors that affect the spatial distribution of elevation errors, except for the distance between observations. + +While assumption **1.** is verified after coregistration and bias corrections, other assumptions are generally not +(e.g., larger errors on steep slope). To address this, we must estimate the variability of our random errors +(or heteroscedasticity), to then transform our data to achieve second-order stationarity. + +```{note} +If there is no significant spatial variability in random errors in your elevation data (e.g., lidar), +you can **jump directly to the {ref}`spatialstats-corr` section**. +``` + +## Heteroscedasticity + +Elevation [heteroscedasticity](https://en.wikipedia.org/wiki/Heteroscedasticity) corresponds to a variability in +precision of elevation observations, that are linked to terrain or instrument variables. + +$$ +\sigma_{dh} = \sigma_{dh}(\textrm{var}_{1},\textrm{var}_{2}, \textrm{...}) \neq \textrm{constant} +$$ + +While a single elevation difference (for a pixel or footpring) does not allow to capture random errors, larger samples +do. [Data binning](https://en.wikipedia.org/wiki/Data_binning), for instance, is a method that allows to estimate the +statistical spread of a sample per category, and can easily be used with one or more explanatory variables, +such as slope: + +```{eval-rst} +.. plot:: code/spatialstats_heterosc_slope.py + :width: 90% +``` + +Then, a model (parametric or not) can be fit to infer the variability of random errors at any data location. + +## Standardization + +In order to verify the assumptions of spatial statistics and be able to use stable terrain as a reliable proxy in +further analysis (see **{ref}`static-surfaces` guide page**), [standardization](https://en.wikipedia.org/wiki/Standard_score) +of the elevation differences by their mean $\mu$ and spread $\sigma$ are required to reach a stationary variance. + +```{eval-rst} +.. plot:: code/spatialstats_standardizing.py + :width: 90% +``` + +For elevation differences, the mean is already centered on zero but the variance is non-stationary, +which yields more simply: + +$$ +z_{dh} = \frac{dh(\textrm{var}_{1}, \textrm{var}_{2}, \textrm{...})}{\sigma_{dh}(\textrm{var}_{1}, \textrm{var}_{2}, \textrm{...})} +$$ + +where $z_{dh}$ is the standardized elevation difference sample. + +(spatialstats-corr)= + +## Spatial correlation of errors + +Spatial correlation of elevation errors correspond to a dependency between measurement errors of spatially +close pixels in elevation data. Those can be related to the resolution of the data (short-range correlation), or to +instrument noise and deformations (mid- to long-range correlations). + +[Variograms](https://en.wikipedia.org/wiki/Variogram) are functions that describe the spatial correlation of a sample. +The variogram $2\gamma(h)$ is a function of the distance between two points, referred to as spatial lag $d$. +The output of a variogram is the correlated variance of the sample. + +$$ +2\gamma(d) = \textrm{var}\left(Z(\textrm{s}_{1}) - Z(\textrm{s}_{2})\right) +$$ + +where $Z(\textrm{s}_{i})$ is the value taken by the sample at location $\textrm{s}_{i}$, and sample positions +$\textrm{s}_{1}$ and $\textrm{s}_{2}$ are separated by a distance $d$. + +```{eval-rst} +.. plot:: code/spatialstats_variogram_covariance.py + :width: 90% +``` + +For elevation differences $dh$, this translates into: + +$$ +2\gamma_{dh}(d) = \textrm{var}\left(dh(\textrm{s}_{1}) - dh(\textrm{s}_{2})\right) +$$ + +The variogram essentially describes the spatial covariance $C$ in relation to the variance of the entire sample +$\sigma_{dh}^{2}$: + +$$ +\gamma_{dh}(d) = \sigma_{dh}^{2} - C_{dh}(d) +$$ + + +Variograms are estimated empirically by [data binning](https://en.wikipedia.org/wiki/Data_binning) depending on +the pairwise distance among data points, then modelled by functional forms called variogram models (e.g., spherical, +gaussian). + +As pairwise combinations grow exponentially with data points, variograms are estimated using a random subsample of the +elevation data (whether gridded or point). Additionally, as elevation data usually contains patterns of correlation +at both short-range (close to pixel size) and long-range (close to DEM extent), the default pairwise sampling can be +tuned to perform well at all desired ranges. + +```{note} +In xDEM, variograms use by default a subsample size of 1000 data points (leading to 500,000 pairwise differences estimated), +for computational efficiency. +xDEM also uses by default a random sampling method that selects a uniform amount of data points by pairwise log-distance, +in order to capture potential correlations at all ranges. +``` + +For more details on variography, **we refer to [the documentation of SciKit-GStat](https://scikit-gstat.readthedocs.io/en/latest/userguide/userguide.html).** + +## Error propagation + +Once the heteroscedasticity $\sigma_{dh}(\textrm{var}_{1},\textrm{var}_{2}, \textrm{...})$ and spatial +correlation of errors $\gamma_{dh}(d)$ are both estimated, those can be used to propagate errors to derivatives +of the elevation data. + +**For simple derivatives such as spatial derivatives** (e.g., mean or sum in an area), exact +[theoretical propagation](https://en.wikipedia.org/wiki/Propagation_of_uncertainty) relying on the above components +can be employed. + +For instance, to propagate errors to the mean of elevation differences in an area $A$ containing $N$ data points: + +$$ +\sigma_{\overline{dh}} = \frac{1}{N^2} \sum_{i=1}^{N} \sum_{j=1}^{N} (1 - \gamma_{z_{dh}}(d_{ij})) \sigma_{dh_{i}} \sigma_{dh_{j}} +$$ + + +where $d_{ij}$ is the distance between data point $i$ and $j$. + +```{note} +xDEM implement several methods to approximate the above equation which scales exponentially with data points, to preserve +computational efficiency. +``` + +**For more complex derivatives such as terrain attributes**, the heteroscedasticity and spatial correlation of errors +can be used to constrain simulation methods that numerically generate realizations of the structure of errors. + +For instance, to propagate errors to terrain slope, one can derive many realizations of random fields based on the error structure estimated +for the DEM. Then, for each realization, add the random field to the DEM, and derive its slope. Finally, +the error in slope can be estimated from the spread of all slope realizations. + +---------------- + +:::{admonition} References and more reading +:class: tip + +For random field generation, see for example [GSTools](https://geostat-framework.readthedocs.io/projects/gstools/en/stable/). + +**References:** + +- [Heuvelink et al. (1989)](https://doi.org/10.1080/02693798908941518), Propagation of errors in spatial modelling with GIS, +- [Rolstad et al. (2009)](http://dx.doi.org/10.3189/002214309789470950), Spatially integrated geodetic glacier mass balance and its uncertainty based on geostatistical analysis: Application to the western Svartisen ice cap, Norway, +- [Hugonnet et al. (2022)](https://doi.org/10.1109/jstars.2022.3188922), Uncertainty analysis of digital elevation models by spatial inference from stable terrain. + +::: diff --git a/doc/source/sphinxext.py b/doc/source/sphinxext.py new file mode 100644 index 00000000..8229047e --- /dev/null +++ b/doc/source/sphinxext.py @@ -0,0 +1,13 @@ +"""Functions for documentation configuration only, importable by sphinx""" +# To reset resolution setting for each sphinx-gallery example +def reset_mpl(gallery_conf, fname): + # To get a good resolution for displayed figures + from matplotlib import pyplot + + pyplot.rcParams["figure.dpi"] = 400 + pyplot.rcParams["savefig.dpi"] = 400 + + # Reset logging to default + import logging + + logging.basicConfig(force=True) diff --git a/doc/source/static_surfaces.md b/doc/source/static_surfaces.md new file mode 100644 index 00000000..248280c3 --- /dev/null +++ b/doc/source/static_surfaces.md @@ -0,0 +1,101 @@ +(static-surfaces)= + +# Static surfaces as error proxy + +Below, a short guide explaining the use of static surfaces as an error proxy for quantitative elevation analysis. + +## The great benefactor of elevation analysis + +Elevation data benefits from an uncommon asset, which is that **large proportions of planetary surface elevations +usually remain virtually unchanged through time** (at least, within decadal time scales). Those static surfaces, +sometimes also referred to as "stable terrain", generally refer to bare-rock, grasslands, and are often isolated by +excluding dynamic surfaces such as glaciers, snow, forests and cities. If small proportions of static surfaces are +not masked, they are generally filtered out by robust estimators (see {ref}`robust-estimators`). + +:::{figure} imgs/stable_terrain_diagram.png +:width: 100% + +Source: [Hugonnet et al. (2022)](https://doi.org/10.1109/jstars.2022.3188922). +::: + +## Use for coregistration and further uncertainty analysis + +Elevation data can rarely be compared to simultaneous acquisitions to assess its sources of error. This is +where **static surfaces come to the rescue, and can act as an error proxy**. By assuming no changes happened on these +surfaces, and that they have the same error structure as other surfaces, it becomes possible to perform +coregistration, bias-correction and further uncertainty analysis! + +Below, we summarize the basic principles of how using static surfaces allows to perform coregistration and uncertainty analysis, and the related limitations. + +### For coregistration and bias-correction (systematic errors) + +**Static surfaces $S$ are key to a coregistration or bias correction transformation $C$** for which it is assumed that, +for two sets of elevation data $h_{1}$ and $h_{2}$, we have: + +$$ +(h_{1} - C(h_{2}))_{S} \approx 0 +$$ + +and aim to find the best transformation $C$ to minimize this problem. + +The above relation is not generally true for every pixel or footprint, however, due to random errors that +exist in all data. Consequently, we can only write: + +$$ +\textrm{mean} (h_{1} - C(h_{2}))_{S \gg r^{2}} \approx 0 +$$ + +where $r$ is the correlation range of random errors, and $S \gg r^{2}$ assumes that static surfaces cover a domain much +larger than this correlation range. If static surfaces cover too small an area, coregistration will naturally become +less reliable. + +```{note} +One of the objectives of xDEM is to allow to use knowledge on random errors to refine +coregistration for limited static surface areas, stay tuned! +``` + +### For further uncertainty analysis (random errors) + +**Static surfaces are also essential for uncertainty analysis aiming to infer the random errors of elevation +data** but, in this case, we have to consider the effect of random errors from both sets of elevation data. + +We first assume that elevation $h_{2}$ is now largely free of systematic errors after performing coregistration and +bias corrections $C$. The analysis of elevation differences $dh$ on static surfaces $S$ will represent the mixed random +errors of the two sets of data, that we can assume are statistically independent (if indeed acquired separately), which yields: + +$$ +\sigma_{dh, S} = \sigma_{h_{\textrm{1}} - h_{\textrm{2}}} = \sqrt{\sigma_{h_{\textrm{1}}}^{2} + \sigma_{h_{\textrm{2}}}^{2}} +$$ + +where $\sigma$ is the random error at any data point. + +If one set of elevation data is known to be of much higher-precision, one can assume that the analysis of differences +will represent only the precision of the rougher DEM. For instance, $\sigma_{h_{1}} = 3 \sigma_{h_{2}}$ implies that more than +95% of $\sigma_{dh}$ comes from $\sigma_{h_{1}}$ from the above equation. + +More generally: + +$$ +\sigma_{dh, S} = \sigma_{h_{\textrm{higher precision}} - h_{\textrm{lower precision}}} \approx \sigma_{h_{\textrm{lower precision}}} +$$ + +And the same applies to the spatial correlation of these random errors: + +$$ +\rho_{dh, S}(d) = \rho_{h_{\textrm{higher precision}} - h_{\textrm{lower precision}}}(d) \approx \rho_{h_{\textrm{lower precision}}}(d) +$$ + +where $\rho(d)$ is the spatial correlation, and $d$ is the spatial lag (distance between data points). + +---------------- + +:::{admonition} References and more reading +:class: tip + +Static surfaces can be used as a **proxy for assessing systematic and random errors**, which directly relates to +what is commonly referred to as accuracy and precision of elevation data, detailed in the **next guide page on {ref}`accuracy-precision`**. + +See the **{ref}`spatial-stats` guide page** for more details on spatial statistics applied to uncertainty quantification. + +**References:** [Hugonnet et al. (2022)](https://doi.org/10.1109/jstars.2022.3188922), Uncertainty analysis of digital elevation models by spatial inference from stable terrain. +::: diff --git a/doc/source/terrain.md b/doc/source/terrain.md index 7b2a66db..e4dcfff4 100644 --- a/doc/source/terrain.md +++ b/doc/source/terrain.md @@ -1,3 +1,17 @@ +--- +file_format: mystnb +mystnb: + execution_timeout: 150 +jupytext: + formats: md:myst + text_representation: + extension: .md + format_name: myst +kernelspec: + display_name: xdem-env + language: python + name: xdem +--- (terrain-attributes)= # Terrain attributes @@ -9,9 +23,94 @@ and tested for consistency against [gdaldem](https://gdal.org/programs/gdaldem.h ## Quick use -Terrain attribute methods can either be called directly from a {class}`~xdem.DEM` (e.g., {func}`xdem.DEM.slope`) or -through the {class}`~xdem.terrain` module which allows array input. +Terrain attribute methods can be derived directly from a {class}`~xdem.DEM`, using for instance {func}`xdem.DEM.slope`. +```{code-cell} ipython3 +:tags: [remove-cell] + +# To get a good resolution for displayed figures +from matplotlib import pyplot +pyplot.rcParams['figure.dpi'] = 600 +pyplot.rcParams['savefig.dpi'] = 600 +``` + +```{code-cell} ipython3 +:tags: [hide-cell] +:mystnb: +: code_prompt_show: "Show the opening of example files." +: code_prompt_hide: "Hide the opening of example files." + +import xdem + +# Open a DEM from a filename on disk +filename_dem = xdem.examples.get_path("longyearbyen_ref_dem") +dem = xdem.DEM(filename_dem) +``` + +```{code-cell} ipython3 +# Slope from DEM method +slope = dem.slope() +# Or from terrain module using an array input +slope = xdem.terrain.slope(dem.data, resolution=dem.res) +``` + +:::{admonition} Coming soon +:class: note + +We are working on further optimizing the computational performance of certain terrain attributes using convolution. +::: + + +## Summary of supported methods + +```{list-table} + :widths: 1 1 1 + :header-rows: 1 + :stub-columns: 1 + + * - Attribute + - Unit (if DEM in meters) + - Reference + * - {ref}`slope` + - Degrees (default) or radians + - [Horn (1981)](http://dx.doi.org/10.1109/PROC.1981.11918) or [Zevenbergen and Thorne (1987)](http://dx.doi.org/10.1002/esp.3290120107) + * - {ref}`aspect` + - Degrees (default) or radians + - [Horn (1981)](http://dx.doi.org/10.1109/PROC.1981.11918) or [Zevenbergen and Thorne (1987)](http://dx.doi.org/10.1002/esp.3290120107) + * - {ref}`hillshade` + - Unitless + - [Horn (1981)](http://dx.doi.org/10.1109/PROC.1981.11918) or [Zevenbergen and Thorne (1987)](http://dx.doi.org/10.1002/esp.3290120107) + * - {ref}`curv` + - Meters{sup}`-1` * 100 + - [Zevenbergen and Thorne (1987)](http://dx.doi.org/10.1002/esp.3290120107) + * - {ref}`plancurv` + - Meters{sup}`-1` * 100 + - [Zevenbergen and Thorne (1987)](http://dx.doi.org/10.1002/esp.3290120107) + * - {ref}`profcurv` + - Meters{sup}`-1` * 100 + - [Zevenbergen and Thorne (1987)](http://dx.doi.org/10.1002/esp.3290120107) + * - {ref}`tpi` + - Meters + - [Weiss (2001)](http://www.jennessent.com/downloads/TPI-poster-TNC_18x22.pdf) + * - {ref}`tri` + - Meters + - [Riley et al. (1999)](http://download.osgeo.org/qgis/doc/reference-docs/Terrain_Ruggedness_Index.pdf) or [Wilson et al. (2007)](http://dx.doi.org/10.1080/01490410701295962) + * - {ref}`roughness` + - Meters + - [Dartnell (2000)](https://environment.sfsu.edu/node/11292) + * - {ref}`rugosity` + - Unitless + - [Jenness (2004)]() + * - {ref}`fractrough` + - Fractal dimension number (1 to 3) + - [Taud and Parrot (2005)](https://doi.org/10.4000/geomorphologie.622) +``` + +```{note} +Only grids with **equal pixel size in X and Y** are currently supported. Transform into such a grid with {func}`xdem.DEM.reproject`. +``` + +(slope)= ## Slope {func}`xdem.DEM.slope` @@ -20,20 +119,63 @@ The slope of a DEM describes the tilt, or gradient, of each pixel in relation to It is most often described in degrees, where a flat surface is 0° and a vertical cliff is 90°. No tilt direction is stored in the slope map; a 45° tilt westward is identical to a 45° tilt eastward. -The slope can be computed either by the method of [Horn (1981)](http://dx.doi.org/10.1109/PROC.1981.11918) (default) -based on a refined gradient formulation on a 3x3 pixel window, or by the method of [Zevenbergen and Thorne (1987)](http://dx.doi.org/10.1002/esp.3290120107) based on a plane fit on a 3x3 pixel window. +The slope $\alpha$ can be computed either by the method of [Horn (1981)](http://dx.doi.org/10.1109/PROC.1981.11918) (default) +based on a refined gradient formulation on a 3x3 pixel window, or by the method of +[Zevenbergen and Thorne (1987)](http://dx.doi.org/10.1002/esp.3290120107) based on a plane fit on a 3x3 pixel window. + +For both methods, $\alpha = arctan(\sqrt{p^{2} + q^{2}})$ where $p$ and $q$ are the gradient components west-to-east and south-to-north, respectively, with for [Horn (1981)](http://dx.doi.org/10.1109/PROC.1981.11918): + +$$ +p_{\textrm{Horn}}=\frac{(h_{++} + 2h_{+0} + h_{+-}) - (h_{-+} + 2h_{-0} + h_{--})}{8 \Delta x},\\ +q_{\textrm{Horn}}=\frac{(h_{++} + 2h_{0+} + h_{-+}) - (h_{+-} + 2h_{0-} + h_{--})}{8 \Delta y}, +$$ + +and for [Zevenbergen and Thorne (1987)](http://dx.doi.org/10.1002/esp.3290120107): + +$$ +p_{\textrm{ZevTho}} = \frac{h_{+0} - h_{-0}}{2 \Delta x},\\ +q_{\textrm{ZevTho}} = \frac{h_{0+} - h_{0-}}{2 \Delta y}, +$$ + +where $h_{ij}$ is the elevation at pixel $ij$, where indexes $i$ and $j$ correspond to east-west and north-south directions respectively, +and take values of either the center ($0$), west or south ($-$), or east or north ($+$): + +```{list-table} + :widths: 1 1 1 1 + :header-rows: 1 + :stub-columns: 1 + + * - + - West + - Center + - East + * - North + - $h_{-+}$ + - $h_{0+}$ + - $h_{++}$ + * - Center + - $h_{-0}$ + - $h_{00}$ + - $h_{+0}$ + * - South + - $h_{--}$ + - $h_{0-}$ + - $h_{+-}$ +``` + + +Finally, $\Delta x$ +and $\Delta y$ correspond to the pixel resolution west-east and south-north, respectively. -The differences between methods are illustrated in the {ref}`sphx_glr_basic_examples_plot_terrain_attributes.py` +The differences between methods are illustrated in the {ref}`sphx_glr_advanced_examples_plot_slope_methods.py` example. -```{image} basic_examples/images/sphx_glr_plot_terrain_attributes_001.png -:width: 600 -``` - -```{eval-rst} -.. minigallery:: xdem.terrain.slope +```{code-cell} ipython3 +slope = dem.slope() +slope.plot(cmap="Reds", cbar_title="Slope (°)") ``` +(aspect)= ## Aspect {func}`xdem.DEM.aspect` @@ -42,169 +184,212 @@ The aspect describes the orientation of strongest slope. It is often reported in degrees, where a slope tilting straight north corresponds to an aspect of 0°, and an eastern aspect is 90°, south is 180° and west is 270°. By default, a flat slope is given an arbitrary aspect of 180°. -As the aspect is directly based on the slope, it varies between the method of [Horn (1981)](http://dx.doi.org/10.1109/PROC.1981.11918) (default) and that of [Zevenbergen and Thorne (1987)](http://dx.doi.org/10.1002/esp.3290120107). +The aspect $\theta$ is based on the same variables as the slope, and thus varies similarly between the method of +[Horn (1981)](http://dx.doi.org/10.1109/PROC.1981.11918) (default) and that of +[Zevenbergen and Thorne (1987)](http://dx.doi.org/10.1002/esp.3290120107): + +$$ +\theta = arctan(\frac{p}{q}), +$$ + +with $p$ and $q$ defined in the slope section. -```{image} basic_examples/images/sphx_glr_plot_terrain_attributes_002.png -:width: 600 +```{warning} +A north aspect represents the upper direction of the Y axis in the coordinate reference system of the +input, {attr}`xdem.DEM.crs`, which might not represent the true north. ``` -```{eval-rst} -.. minigallery:: xdem.terrain.aspect - :add-heading: +```{code-cell} ipython3 +aspect = dem.aspect() +aspect.plot(cmap="twilight", cbar_title="Aspect (°)") ``` +(hillshade)= ## Hillshade {func}`xdem.DEM.hillshade` The hillshade is a slope map, shaded by the aspect of the slope. -The slope map is a good tool to visualize terrain, but it does not distinguish between a mountain and a valley. -It may therefore be slightly difficult to interpret in mountainous terrain. -Hillshades are therefore often preferable for visualizing DEMs. With a westerly azimuth (a simulated sun coming from the west), all eastern slopes are slightly darker. -This mode of shading the slopes often generates a map that is much more easily interpreted than the slope map. +This mode of shading the slopes often generates a map that is much more easily interpreted than the slope. + +The hillshade $hs$ is directly based on the slope $\alpha$ and aspect $\theta$, and thus also varies between the method of [Horn (1981)](http://dx.doi.org/10.1109/PROC.1981.11918) (default) and that of [Zevenbergen and Thorne (1987)](http://dx.doi.org/10.1002/esp.3290120107), and +is often scaled between 1 and 255: -As the hillshade is directly based on the slope and aspect, it varies between the method of [Horn (1981)](http://dx.doi.org/10.1109/PROC.1981.11918) (default) and that of [Zevenbergen and Thorne (1987)](http://dx.doi.org/10.1002/esp.3290120107). +$$ +hs = 1 + 254 \left[ sin(alt) cos(\alpha) + cos(alt) sin(\alpha) sin(2\pi - azim - \theta) \right], +$$ + +where $alt$ is the shading altitude (90° = from above) and $azim$ is the shading azimuth (0° = north). Note, however, that the hillshade is not a shadow map; no occlusion is taken into account so it does not represent "true" shading. It therefore has little analytic purpose, but it still constitutes a great visualization tool. -```{image} basic_examples/images/sphx_glr_plot_terrain_attributes_003.png -:width: 600 -``` - -```{eval-rst} -.. minigallery:: xdem.terrain.hillshade - :add-heading: +```{code-cell} ipython3 +hillshade = dem.hillshade() +hillshade.plot(cmap="Greys_r", cbar_title="Hillshade") ``` +(curv)= ## Curvature {func}`xdem.DEM.curvature` -The curvature map is the second derivative of elevation, which highlights the convexity or concavity of the terrain. +The curvature is the second derivative of elevation, which highlights the convexity or concavity of the terrain. If a surface is convex (like a mountain peak), it will have positive curvature. If a surface is concave (like a through or a valley bottom), it will have negative curvature. The curvature values in units of m{sup}`-1` are quite small, so they are by convention multiplied by 100. -The curvature is based on the method of [Zevenbergen and Thorne (1987)](http://dx.doi.org/10.1002/esp.3290120107). +The curvature $c$ is based on the method of [Zevenbergen and Thorne (1987)](http://dx.doi.org/10.1002/esp.3290120107). -```{image} basic_examples/images/sphx_glr_plot_terrain_attributes_004.png -:width: 600 -``` +$$ -```{eval-rst} -.. minigallery:: xdem.terrain.curvature - :add-heading: +c = - 100 \frac{(h_{+0} + h_{-0} + h_{0+} + h_{0-}) - 4 h_{00}}{\Delta x \Delta y}. + +$$ + +```{code-cell} ipython3 +curvature = dem.curvature() +curvature.plot(cmap="RdGy_r", cbar_title="Curvature (100 / m)", vmin=-1, vmax=1, interpolation="antialiased") ``` +(plancurv)= ## Planform curvature {func}`xdem.DEM.planform_curvature` -The planform curvature is the curvature perpendicular to the direction of slope, reported in 100 m{sup}`-1`. +The planform curvature is the curvature perpendicular to the direction of slope, reported in 100 m{sup}`-1`, also based +on [Zevenbergen and Thorne (1987)](http://dx.doi.org/10.1002/esp.3290120107): -It is based on the method of [Zevenbergen and Thorne (1987)](http://dx.doi.org/10.1002/esp.3290120107). +$$ -```{image} basic_examples/images/sphx_glr_plot_terrain_attributes_005.png -:width: 600 -``` +planc = -2\frac{DH² + EG² -FGH}{G²+H²} -```{eval-rst} -.. minigallery:: xdem.terrain.planform_curvature - :add-heading: +$$ + +with: + +$$ + +D &= \frac{h_{0+} + h_{0-} - 2h_{00}} {2\Delta y^{2}}, \\ +E &= \frac{h_{+0} + h_{-0} - 2h_{00}} {2\Delta x^{2}}, \\ +F &= \frac{h_{--} + h_{++} - h_{-+} - h_{+-}} {4 \Delta x \Delta y}, \\ +G &= \frac{h_{0-} - h_{0+}}{2\Delta y}, \\ +H &= \frac{h_{-0} - h_{+0}}{2\Delta x}. + +$$ + +```{code-cell} ipython3 +planform_curvature = dem.planform_curvature() +planform_curvature.plot(cmap="RdGy_r", cbar_title="Planform curvature (100 / m)", vmin=-1, vmax=1, interpolation="antialiased") ``` +(profcurv)= ## Profile curvature {func}`xdem.DEM.profile_curvature` -The profile curvature is the curvature parallel to the direction of slope, reported in 100 m{sup}`-1`.. +The profile curvature is the curvature parallel to the direction of slope, reported in 100 m{sup}`-1`, also based on +[Zevenbergen and Thorne (1987)](http://dx.doi.org/10.1002/esp.3290120107): -It is based on the method of [Zevenbergen and Thorne (1987)](http://dx.doi.org/10.1002/esp.3290120107). +$$ -```{image} basic_examples/images/sphx_glr_plot_terrain_attributes_006.png -:width: 600 -``` +profc = 2\frac{DG² + EH² + FGH}{G²+H²} -```{eval-rst} -.. minigallery:: xdem.terrain.profile_curvature - :add-heading: +$$ + +based on the equations in the planform curvature section for $D$, $E$, $F$, $G$ and $H$. + +```{code-cell} ipython3 +profile_curvature = dem.profile_curvature() +profile_curvature.plot(cmap="RdGy_r", cbar_title="Profile curvature (100 / m)", vmin=-1, vmax=1, interpolation="antialiased") ``` -## Topographic Position Index +(tpi)= +## Topographic position index {func}`xdem.DEM.topographic_position_index` -The Topographic Position Index (TPI) is a metric of slope position, based on the method of [Weiss (2001)](http://www.jennessent.com/downloads/TPI-poster-TNC_18x22.pdf) that corresponds to the difference of the elevation of a central +The topographic position index (TPI) is a metric of slope position, described in [Weiss (2001)](http://www.jennessent.com/downloads/TPI-poster-TNC_18x22.pdf), that corresponds to the difference of the elevation of a central pixel with the average of that of neighbouring pixels. Its unit is that of the DEM (typically meters) and it can be computed for any window size (default 3x3 pixels). -```{image} basic_examples/images/sphx_glr_plot_terrain_attributes_007.png -:width: 600 -``` +$$ +tpi = h_{00} - \textrm{mean}_{i\neq 0, j\neq 0} (h_{ij}) . +$$ -```{eval-rst} -.. minigallery:: xdem.terrain.topographic_position_index - :add-heading: +```{code-cell} ipython3 +tpi = dem.topographic_position_index() +tpi.plot(cmap="Spectral", cbar_title="Topographic position index (m)", vmin=-5, vmax=5) ``` -## Terrain Ruggedness Index +(tri)= +## Terrain ruggedness index {func}`xdem.DEM.terrain_ruggedness_index` -The Terrain Ruggedness Index (TRI) is a metric of terrain ruggedness, based on cumulated differences in elevation between +The terrain ruggedness index (TRI) is a metric of terrain ruggedness, based on cumulated differences in elevation between a central pixel and its surroundings. Its unit is that of the DEM (typically meters) and it can be computed for any window size (default 3x3 pixels). For topography (default), the method of [Riley et al. (1999)](http://download.osgeo.org/qgis/doc/reference-docs/Terrain_Ruggedness_Index.pdf) is generally used, where the TRI is computed by the squareroot of squared differences with -neighbouring pixels. +neighbouring pixels: + +$$ +tri_{\textrm{Riley}} = \sqrt{\sum_{ij}(h_{00} - h_{ij})^{2}}. +$$ For bathymetry, the method of [Wilson et al. (2007)](http://dx.doi.org/10.1080/01490410701295962) is generally used, -where the TRI is defined by the mean absolute difference with neighbouring pixels +where the TRI is defined by the mean absolute difference with neighbouring pixels: -```{image} basic_examples/images/sphx_glr_plot_terrain_attributes_008.png -:width: 600 -``` +$$ +tri_{\textrm{Wilson}} = \textrm{mean}_{ij} (|h_{00} - h{ij}|) . +$$ -```{eval-rst} -.. minigallery:: xdem.terrain.terrain_ruggedness_index - :add-heading: +```{code-cell} ipython3 +tri = dem.terrain_ruggedness_index() +tri.plot(cmap="Purples", cbar_title="Terrain ruggedness index (m)") ``` +(roughness)= ## Roughness {func}`xdem.DEM.roughness` -The roughness is a metric of terrain ruggedness, based on the maximum difference in elevation in the surroundings. -The roughness is based on the method of [Dartnell (2000)](http://dx.doi.org/10.14358/PERS.70.9.1081). Its unit is that of the DEM (typically meters) and it can be computed for any window size (default 3x3 pixels). +The roughness is a metric of terrain ruggedness, based on the maximum difference in elevation in the surroundings, +described in [Dartnell (2000)](https://environment.sfsu.edu/node/11292). Its unit is that of the DEM (typically meters) and it can be computed for any window size (default 3x3 pixels). -```{image} basic_examples/images/sphx_glr_plot_terrain_attributes_009.png -:width: 600 -``` +$$ +r_{\textrm{D}} = \textrm{max}_{ij} (h{ij}) - \textrm{min}_{ij} (h{ij}) . +$$ -```{eval-rst} -.. minigallery:: xdem.terrain.roughness - :add-heading: +```{code-cell} ipython3 +roughness = dem.roughness() +roughness.plot(cmap="Oranges", cbar_title="Roughness (m)") ``` +(rugosity)= ## Rugosity {func}`xdem.DEM.rugosity` -The rugosity is a metric of terrain ruggedness, based on the ratio between planimetric and real surface area. The -rugosity is based on the method of [Jenness (2004)](). +The rugosity is a metric of terrain ruggedness, based on the ratio between planimetric and real surface area, +described in [Jenness (2004)](). It is unitless, and is only supported for a 3x3 window size. -```{image} basic_examples/images/sphx_glr_plot_terrain_attributes_010.png -:width: 600 -``` +$$ +r_{\textrm{J}} = \frac{\sum_{k \in [1,8]} A(T_{00, k})}{\Delta x \Delta y}. +$$ -```{eval-rst} -.. minigallery:: xdem.terrain.rugosity - :add-heading: +where $A(T_{00,k})$ is the area of one of the 8 triangles connected from the center of the center pixel $00$ to the +centers of its 8 neighbouring pixels $k$, cropped to intersect only the center pixel. This surface area is computed in three dimensions, accounting for elevation differences. + +```{code-cell} ipython3 +rugosity = dem.rugosity() +rugosity.plot(cmap="YlOrRd", cbar_title="Rugosity") ``` +(fractrough)= ## Fractal roughness {func}`xdem.DEM.fractal_roughness` @@ -215,13 +400,9 @@ The fractal roughness is computed by estimating the fractal dimension in 3D spac DEM pixels. Its unit is that of a dimension, and is always between 1 (dimension of a line in 3D space) and 3 (dimension of a cube in 3D space). It can only be computed on window sizes larger than 5x5 pixels, and defaults to 13x13. -```{image} basic_examples/images/sphx_glr_plot_terrain_attributes_011.png -:width: 600 -``` - -```{eval-rst} -.. minigallery:: xdem.terrain.fractal_roughness - :add-heading: +```{code-cell} ipython3 +fractal_roughness = dem.fractal_roughness() +fractal_roughness.plot(cmap="Reds", cbar_title="Fractal roughness (dimensions)") ``` ## Generating multiple attributes at once @@ -232,5 +413,4 @@ Multiple terrain attributes can be calculated from the same gradient using the { ```{eval-rst} .. minigallery:: xdem.terrain.get_terrain_attribute - :add-heading: ``` diff --git a/doc/source/uncertainty.md b/doc/source/uncertainty.md index 0830e1ca..095149b6 100644 --- a/doc/source/uncertainty.md +++ b/doc/source/uncertainty.md @@ -1,5 +1,7 @@ --- file_format: mystnb +mystnb: + execution_timeout: 90 jupytext: formats: md:myst text_representation: @@ -12,369 +14,385 @@ kernelspec: --- (uncertainty)= -# Uncertainty analysis - -To analyze DEMs, xDEM integrates spatial uncertainty analysis tools from the recent DEM literature, -in particular in [Hugonnet et al. (2022)](https://doi.org/10.1109/jstars.2022.3188922) and -[Rolstad et al. (2009)](https://doi.org/10.3189/002214309789470950). The implementation of these methods relies -partially on the package [scikit-gstat](https://mmaelicke.github.io/scikit-gstat/index.html) for spatial statistics. - -The uncertainty analysis tools can be used to assess the precision of DEMs (see the definition of precision in {ref}`intro`). -In particular, they help to: - -> - account for elevation heteroscedasticity (e.g., varying precision such as with terrain slope or stereo-correlation), -> - quantify the spatial correlation of errors in DEMs (e.g., native spatial resolution, instrument noise), -> - estimate robust errors for observations analyzed in space (e.g., average or sum of elevation, or of elevation changes), -> - propagate errors between spatial ensembles at different scales (e.g., sum of glacier volume changes). - -(spatialstats-intro)= - -## Spatial statistics for DEM precision estimation - -### Assumptions for statistical inference in spatial statistics - - -Spatial statistics, also referred to as [geostatistics](https://en.wikipedia.org/wiki/Geostatistics), are essential -for the analysis of observations distributed in space. Spatial statistics are valid if the variable of interest -verifies [the assumption of second-order stationarity](https://www.aspexit.com/en/fundamental-assumptions-of-the-variogram-second-order-stationarity-intrinsic-stationarity-what-is-this-all-about/). -That is, if the three following assumptions are verified: - -> 1. The mean of the variable of interest is stationary in space, i.e. constant over sufficiently large areas, -> 2. The variance of the variable of interest is stationary in space, i.e. constant over sufficiently large areas. -> 3. The covariance between two observations only depends on the spatial distance between them, i.e. no other factor than this distance plays a role in the spatial correlation of measurement errors. +```{code-cell} ipython3 +:tags: [remove-cell] -```{eval-rst} -.. plot:: code/spatialstats_stationarity_assumption.py - :width: 90% +# To get a good resolution for displayed figures +from matplotlib import pyplot +pyplot.rcParams['figure.dpi'] = 600 +pyplot.rcParams['savefig.dpi'] = 600 ``` -In other words, for a reliable analysis, the DEM should: - -> 1. Not contain systematic biases that do not average out over sufficiently large distances (e.g., shifts, tilts), but can contain pseudo-periodic biases (e.g., along-track undulations), -> 2. Not contain measurement errors that vary significantly across space. -> 3. Not contain factors that affect the spatial distribution of measurement errors, except for the distance between observations. - -### Quantifying the precision of a single DEM, or of a difference of DEMs - -To statistically infer the precision of a DEM, it is compared against independent elevation observations. - -Significant measurement errors can originate from both sets of elevation observations, and the analysis of differences will represent the mixed precision of the two. -As there is no reason for a dependency between the elevation data sets, the analysis of elevation differences yields: - -$$ -\sigma_{dh} = \sigma_{h_{\textrm{precision1}} - h_{\textrm{precision2}}} = \sqrt{\sigma_{h_{\textrm{precision1}}}^{2} + \sigma_{h_{\textrm{precision2}}}^{2}} -$$ - -If the other elevation data is known to be of higher-precision, one can assume that the analysis of differences will represent only the precision of the rougher DEM. - -$$ -\sigma_{dh} = \sigma_{h_{\textrm{higher precision}} - h_{\textrm{lower precision}}} \approx \sigma_{h_{\textrm{lower precision}}} -$$ - -### Using stable terrain as a proxy - -Stable terrain is the terrain that has supposedly not been subject to any elevation change. It often refers to bare-rock, -and is generally computed by simply excluding glaciers, snow and forests. - -Due to the sparsity of synchronous acquisitions, elevation data cannot be easily compared for simultaneous acquisition -times. Thus, stable terrain is used a proxy to assess the precision of a DEM on all its terrain, -including moving terrain that is generally of greater interest for analysis. +# Uncertainty analysis -As shown in [Hugonnet et al. (2022)](https://doi.org/10.1109/jstars.2022.3188922), accounting for {ref}`spatialstats-heterosc` is needed to reliably -use stable terrain as a proxy for other types of terrain. +xDEM integrates uncertainty analysis tools from the recent literature that **rely on joint methods from two +scientific fields: spatial statistics and uncertainty quantification**. -(spatialstats-metrics)= +While uncertainty analysis technically refers to both systematic and random errors, systematic errors of elevation data +are corrected using {ref}`coregistration` and {ref}`biascorr`, so we here refer to uncertainty analysis for **quantifying and +propagating random errors** (including structured errors). -## Metrics for DEM precision +In detail, xDEM provides tools to: -Historically, the precision of DEMs has been reported as a single value indicating the random error at the scale of a -single pixel, for example $\pm 2$ meters at the 1$\sigma$ [confidence level](https://en.wikipedia.org/wiki/Confidence_interval). +1. Estimate and model elevation **heteroscedasticity, i.e. variable random errors** (e.g., such as with terrain slope or stereo-correlation), +2. Estimate and model the **spatial correlation of random errors** (e.g., from native spatial resolution or instrument noise), +3. Perform **error propagation to elevation derivatives** (e.g., spatial average, or more complex derivatives such as slope and aspect). -However, there is some limitations to this simple metric: +:::{admonition} More reading +:class: tip -> - the variability of the pixel-wise precision is not reported. The pixel-wise precision can vary depending on terrain- or instrument-related factors, such as the terrain slope. In rare occurrences, part of this variability has been accounted in recent DEM products, such as TanDEM-X global DEM that partitions the precision between flat and steep slopes ([Rizzoli et al. (2017)](https://doi.org/10.1016/j.isprsjprs.2017.08.008)), -> - the area-wise precision of a DEM is generally not reported. Depending on the inherent resolution of the DEM, and patterns of noise that might plague the observations, the precision of a DEM over a surface area can vary significantly. +For an introduction on spatial statistics applied to uncertainty quantification for elevation data, we recommend reading +the **{ref}`spatial-stats` guide page** and, for details on variography, the **documentation of [SciKit-GStat](https://scikit-gstat.readthedocs.io/en/latest/)**. -### Pixel-wise elevation measurement error +Additionally, we recommend reading the **{ref}`static-surfaces` guide page** on which uncertainty analysis relies. +::: -The pixel-wise measurement error corresponds directly to the dispersion $\sigma_{dh}$ of the sample $dh$. -To estimate the pixel-wise measurement error for elevation data, two issues arise: +## Quick use -> 1. The dispersion $\sigma_{dh}$ cannot be estimated directly on changing terrain, -> 2. The dispersion $\sigma_{dh}$ can show important non-stationarities. +The estimation of the spatial structure of random errors of elevation data is conveniently +wrapped in a single method {func}`~xdem.DEM.estimate_uncertainty`, which estimates, models and returns **a map of +variable error** matching the DEM, and **a function describing the spatial correlation of these errors**. -The section {ref}`spatialstats-heterosc` describes how to quantify the measurement error as a function of -several explanatory variables by using stable terrain as a proxy. +```{code-cell} ipython3 +:tags: [hide-cell] +:mystnb: +: code_prompt_show: "Show the code for opening example data and coregistering it" +: code_prompt_hide: "Hide the code for opening example data and coregistering it" -### Spatially-integrated elevation measurement error +import xdem +import matplotlib.pyplot as plt +import geoutils as gu +import numpy as np -The [standard error](https://en.wikipedia.org/wiki/Standard_error) of a statistic is the dispersion of the -distribution of this statistic. For spatially distributed samples, the standard error of the mean corresponds to the -error of a mean (or sum) of samples in space. +# Open two DEMs +ref_dem = xdem.DEM(xdem.examples.get_path("longyearbyen_ref_dem")) +tba_dem = xdem.DEM(xdem.examples.get_path("longyearbyen_tba_dem")) -The standard error $\sigma_{\overline{dh}}$ of the mean $\overline{dh}$ of the elevation changes -samples $dh$ can be written as: +# Open glacier outlines as vector +glacier_outlines = gu.Vector(xdem.examples.get_path("longyearbyen_glacier_outlines")) -$$ -\sigma_{\overline{dh}} = \frac{\sigma_{dh}}{\sqrt{N}}, -$$ +# Create a stable ground mask (not glacierized) to mark "inlier data" +inlier_mask = ~glacier_outlines.create_mask(ref_dem) +tba_dem_coreg = tba_dem.coregister_3d(ref_dem, inlier_mask=inlier_mask) +``` -where $\sigma_{dh}$ is the dispersion of the samples, and $N$ is the number of **independent** observations. +```{code-cell} ipython3 +# Estimate elevation uncertainty assuming both DEMs have similar precision +sig_dem, rho_sig = tba_dem_coreg.estimate_uncertainty(ref_dem, stable_terrain=inlier_mask, precision_of_other="same") -To estimate the standard error of the mean for elevation data, two issue arises: +# The error map variability is estimated from slope and curvature by default +sig_dem.plot(cmap="Purples", cbar_title=r"Error in elevation (1$\sigma$, m)") -> 1. The dispersion of elevation differences $\sigma_{dh}$ is not stationary, a necessary assumption for spatial statistics. -> 2. The number of pixels in the DEM $N$ does not equal the number of independent observations in the DEMs, because of spatial correlations. +# The spatial correlation function represents how much errors are correlated at a certain distance +print("Random elevation errors at a distance of 1 km are correlated at {:.2f} %.".format(rho_sig(1000) * 100)) +``` -The sections {ref}`spatialstats-corr` and {ref}`spatialstats-errorpropag` describe how to account for spatial correlations -and use those to integrate and propagate measurement errors in space. +Three methods can be considered for this estimation, which are described right below. +Additionally, the subfunctions used to perform the uncertainty analysis are detailed in **the {ref}`error-struc` section** below. + +## Summary of available methods + +Methods for modelling the structure of error are based on [spatial statistics](https://en.wikipedia.org/wiki/Spatial_statistics), and methods for +propagating errors to spatial derivatives analytically rely on [uncertainty propagation](https://en.wikipedia.org/wiki/Propagation_of_uncertainty). + +To improve the robustness of the uncertainty analysis, we provide refined frameworks for application to elevation data based on +[Rolstad et al. (2009)](http://dx.doi.org/10.3189/002214309789470950) and [Hugonnet et al. (2022)](http://dx.doi.org/10.1109/JSTARS.2022.3188922), +both for modelling the structure of error and to efficiently perform error propagation. +**These frameworks are generic, simply extending an aspect of the uncertainty analysis to better work on elevation data**, +and thus generally encompass methods described in other studies on the topic (e.g., [Anderson et al. (2019)](http://dx.doi.org/10.1002/esp.4551)). + +The tables below summarize the characteristics of these methods. + +### Estimating and modelling the structure of error + +Frequently, in spatial statistics, a single correlation range is considered ("basic" method below). +However, elevation data often contains errors with correlation ranges spanning different orders of magnitude. +For this, [Rolstad et al. (2009)](http://dx.doi.org/10.3189/002214309789470950) and +[Hugonnet et al. (2022)](http://dx.doi.org/10.1109/JSTARS.2022.3188922) consider +potential multiple ranges of spatial correlation (instead of a single one). In addition, [Hugonnet et al. (2022)](http://dx.doi.org/10.1109/JSTARS.2022.3188922) +considers potential heteroscedasticity or variable errors (instead of homoscedasticity, or constant errors), also common in elevation data. + +Because accounting for possible multiple correlation ranges also works if you have a single correlation range in your data, +and accounting for potential heteroscedasticity also works on homoscedastic data, **there is little to lose by using +a more advanced framework! (most often, only a bit of additional computation time)** + +```{list-table} + :widths: 1 1 1 1 + :header-rows: 1 + :stub-columns: 1 + :align: center + + * - Method + - Heteroscedasticity (i.e. variable error) + - Correlations (single-range) + - Correlations (multi-range) + * - Basic + - ❌ + - ✅ + - ❌ + * - R2009 + - ❌ + - ✅ + - ✅ + * - H2022 (default) + - ✅ + - ✅ + - ✅ +``` -## Workflow for DEM precision estimation +For consistency, all methods default to robust estimators: the normalized median absolute deviation (NMAD) for the +spread, and Dowd's estimator for the variogram. See the **{ref}`robust-estimators` guide page** for details. + +### Propagating errors to spatial derivatives + +Exact uncertainty propagation scales exponentially with data (by computing every pairwise combinations, +for potentially millions of elevation data points or pixels). +To remedy this, [Rolstad et al. (2009)](http://dx.doi.org/10.3189/002214309789470950) and [Hugonnet et al. (2022)](http://dx.doi.org/10.1109/JSTARS.2022.3188922) +both provide an approximation of exact uncertainty propagations for spatial derivatives (to avoid long +computing times). **These approximations are valid in different contexts**, described below. + +```{list-table} + :widths: 1 1 1 1 + :header-rows: 1 + :stub-columns: 1 + :align: center + + * - Method + - Accuracy + - Computing time + - Validity + * - Exact discretized + - Exact + - Slow on large samples (exponential complexity) + - Always + * - R2009 + - Conservative + - Instantaneous (numerical integration) + - Only for near-circular contiguous areas + * - H2022 (default) + - Accurate + - Fast (linear complexity) + - As long as variance is nearly stationary +``` (spatialstats-heterosc)= -### Elevation heteroscedasticity +## Core concept for error proxy -Elevation data contains significant variability in measurement errors. +Below, we examplify the different steps of uncertainty analysis of **elevation differences between two datasets on +static surfaces as an error proxy**. -xDEM provides tools to **quantify** this variability using explanatory variables, **model** those numerically to -estimate a function predicting elevation error, and **standardize** data for further analysis. +In case you want to **convert the uncertainties of elevation differences into that of a "target" elevation dataset**, it can be either assumed that: +- **The "other" elevation dataset is much more precise**, in which case the uncertainties in elevation differences directly approximate that of the "target" elevation dataset, +- **The "other" elevation dataset has similar precision**, in which case the uncertainties of elevation differences quadratically combine twice that of the "target" elevation dataset. -#### Quantify and model heteroscedasticity +:::{admonition} More reading (reminder) +:class: tip -Elevation [heteroscedasticity](https://en.wikipedia.org/wiki/Heteroscedasticity) corresponds to a variability in -precision of elevation observations, that are linked to terrain or instrument variables. +To clarify these conversions of error proxy, see the **{ref}`static-surfaces` guide page**. +For more statistical background on the methods below, see the **{ref}`spatial-stats` guide page**. +::: -$$ -\sigma_{dh} = \sigma_{dh}(\textrm{var}_{1},\textrm{var}_{2}, \textrm{...}) \neq \textrm{constant} -$$ +(error-struc)= +## Spatial structure of error -Owing to the large number of samples of elevation data, we can easily estimate this variability by [binning](https://en.wikipedia.org/wiki/Data_binning) the data and estimating the statistical dispersion (see -{ref}`robuststats-meanstd`) across several explanatory variables using {func}`xdem.spatialstats.nd_binning`. +Below we detail the steps used to estimate the two components of uncertainty: heteroscedasticity and spatial +correlation of errors in {func}`~xdem.DEM.estimate_uncertainty`, as these are most easily customized +by calling their subfunctions independently. +```{important} +Some uncertainty functionalities are **being adapted to operate directly in SciKit-GStat** (e.g., fitting a sum of +variogram models, pairwise subsampling for grid data). This will allow to simplify function inputs and outputs of xDEM, +for instance by relying on a single, consistent {func}`~skgstat.Variogram` object. -```{code-cell} ipython3 -:tags: [hide-input, hide-output] -import geoutils as gu -import numpy as np +This will trigger API changes in future package versions. +``` -import xdem +### Heteroscedasticity -# Load data -dh = gu.Raster(xdem.examples.get_path("longyearbyen_ddem")) -ref_dem = xdem.DEM(xdem.examples.get_path("longyearbyen_ref_dem")) -glacier_mask = gu.Vector(xdem.examples.get_path("longyearbyen_glacier_outlines")) -mask = glacier_mask.create_mask(dh) +The first component of uncertainty is the estimation and modelling of elevation +[heteroscedasticity](https://en.wikipedia.org/wiki/Heteroscedasticity) (or variability in +random elevation errors) through {func}`~xdem.spatialstats.infer_heteroscedasticity_from_stable`, which has three steps. -slope = xdem.terrain.get_terrain_attribute(ref_dem, attribute=["slope"]) +**Step 1: Empirical estimation of heteroscedasticity** -# Keep only stable terrain data -dh.load() -dh.set_mask(mask) -dh_arr = gu.raster.get_array_and_mask(dh)[0] -slope_arr = gu.raster.get_array_and_mask(slope)[0] +The variability in errors is empirically estimated by [data binning](https://en.wikipedia.org/wiki/Data_binning) +in N-dimensions of the elevation differences on stable terrain, using the function {func}`~xdem.spatialstats.nd_binning`. +Plotting of 1- and 2D binnings can be facilitated by the functions {func}`~xdem.spatialstats.plot_1d_binning` and +{func}`~xdem.spatialstats.plot_2d_binning`. -# Subsample to run the snipped code faster -indices = gu.raster.subsample_array(dh_arr, subsample=10000, return_indices=True, random_state=42) -dh_arr = dh_arr[indices] -slope_arr = slope_arr[indices] -``` +The most common explanatory variables for elevation heteroscedasticity are the terrain slope and curvature (used as +default, see {ref}`terrain-attributes`), and other quality metrics passed by the user such as the correlation +(for [stereo](https://en.wikipedia.org/wiki/Photogrammetry#Stereophotogrammetry) DEMs) +or the interferometric coherence (for [InSAR](https://en.wikipedia.org/wiki/Interferometric_synthetic-aperture_radar) DEMs). ```{code-cell} ipython3 -# Estimate the measurement error by bin of slope, using the NMAD as robust estimator -df_ns = xdem.spatialstats.nd_binning( - dh_arr, list_var=[slope_arr], list_var_names=["slope"], statistics=["count", xdem.spatialstats.nmad] +# Get elevation differences and stable terrain mask +dh = ref_dem - tba_dem_coreg +glacier_outlines = gu.Vector(xdem.examples.get_path("longyearbyen_glacier_outlines")) +stable_terrain = ~glacier_outlines.create_mask(dh) + +# Derive slope and curvature +slope, curv = ref_dem.get_terrain_attribute(attribute=["slope", "curvature"]) + +# Use only array of stable terrain +dh_arr = dh[stable_terrain] +slope_arr = slope[stable_terrain] +curv_arr = curv[stable_terrain] + +# Estimate the variable error by bin of slope and curvature +df_h = xdem.spatialstats.nd_binning( + dh_arr, list_var=[slope_arr, curv_arr], list_var_names=["slope", "curv"], statistics=["count", xdem.spatialstats.nmad], list_var_bins=[np.linspace(0, 60, 10), np.linspace(-10, 10, 10)] ) -``` -```{eval-rst} -.. plot:: code/spatialstats_heterosc_slope.py - :width: 90% +# Plot 2D binning +xdem.spatialstats.plot_2d_binning(df_h, "slope", "curv", "nmad", "Slope (degrees)", "Curvature (100 m-1)", "NMAD (m)") ``` -The most common explanatory variables are: - -> - the terrain slope and terrain curvature (see {ref}`terrain-attributes`) that can explain a large part of the terrain-related variability in measurement error, -> - the quality of stereo-correlation that can explain a large part of the measurement error of DEMs generated by stereophotogrammetry, -> - the interferometric coherence that can explain a large part of the measurement error of DEMs generated by [InSAR](https://en.wikipedia.org/wiki/Interferometric_synthetic-aperture_radar). +**Step 2: Modelling of the heteroscedasticity** -Once quantified, elevation heteroscedasticity can be modelled numerically by linear interpolation across several -variables using {func}`xdem.spatialstats.interp_nd_binning`. +Once empirically estimated, elevation heteroscedasticity can be modelled either by a function fit, or by +N-D linear interpolation using {func}`~xdem.spatialstats.interp_nd_binning`, in order to yield a value for any slope +and curvature: ```{code-cell} ipython3 # Derive a numerical function of the measurement error -err_dh = xdem.spatialstats.interp_nd_binning(df_ns, list_var_names=["slope"]) +sig_dh_func = xdem.spatialstats.interp_nd_binning(df_h, list_var_names=["slope", "curv"]) ``` -#### Standardize elevation differences for further analysis +**Step 3: Applying the model** + +Using the model, we can estimate the random error on all terrain using their slope +and curvature, and derive a map of random errors in elevation change: -In order to verify the assumptions of spatial statistics and be able to use stable terrain as a reliable proxy in -further analysis (see {ref}`spatialstats-intro`), [standardization](https://en.wikipedia.org/wiki/Standard_score) -of the elevation differences are required to reach a stationary variance. +```{code-cell} ipython3 +# Apply function to the slope and curvature on all terrain +sig_dh_arr = sig_dh_func((slope.data, curv.data)) -```{eval-rst} -.. plot:: code/spatialstats_standardizing.py - :width: 90% +# Convert to raster and plot +sig_dh = dh.copy(new_array=sig_dh_arr) +sig_dh.plot(cmap="Purples", cbar_title=r"Random error in elevation change (1$\sigma$, m)") ``` -For application to DEM precision estimation, the mean is already centered on zero and the variance is non-stationary, -which yields: +### Spatial correlation of errors -$$ -z_{dh} = \frac{dh(\textrm{var}_{1}, \textrm{var}_{2}, \textrm{...})}{\sigma_{dh}(\textrm{var}_{1}, \textrm{var}_{2}, \textrm{...})} -$$ +The second component of uncertainty is the estimation and modelling of spatial correlations of random errors through +{func}`~xdem.spatialstats.infer_spatial_correlation_from_stable`, which has three steps. -where $z_{dh}$ is the standardized elevation difference sample. +**Step 1: Standardization** -Code-wise, standardization is as simple as a division of the elevation differences `dh` using the estimated measurement -error: +If heteroscedasticity was considered, elevation differences can be standardized by the variable error to +reduce its influence on the estimation of spatial correlations. Otherwise, elevation differences are used directly. ```{code-cell} ipython3 # Standardize the data -z_dh = dh_arr / err_dh(slope_arr) +z_dh = dh / sig_dh +# Mask values to keep only stable terrain +z_dh.set_mask(~stable_terrain) +# Plot the standardized data on stable terrain +z_dh.plot(cmap="RdBu", vmin=-3, vmax=3, cbar_title="Standardized elevation changes (unitless)") ``` -To later de-standardize estimations of the dispersion of a given subsample of elevation differences, -possibly after further analysis of {ref}`spatialstats-corr` and {ref}`spatialstats-errorpropag`, -one simply needs to apply the opposite operation. +**Step 2: Empirical estimation of the variogram** -For a single pixel $\textrm{P}$, the dispersion is directly the elevation measurement error evaluated for the -explanatory variable of this pixel as, per construction, $\sigma_{z_{dh}} = 1$: +An empirical variogram can be estimated with {func}`~xdem.spatialstats.sample_empirical_variogram`. -$$ -\sigma_{dh}(\textrm{P}) = 1 \cdot \sigma_{dh}(\textrm{var}_{1}(\textrm{P}), \textrm{var}_{2}(\textrm{P}), \textrm{...}) -$$ - -For a mean of pixels $\overline{dh}\vert_{\mathbb{S}}$ in the subsample $\mathbb{S}$, the standard error of the mean -of the standardized data $\overline{\sigma_{z_{dh}}}\vert_{\mathbb{S}}$ can be de-standardized by multiplying by the -average measurement error of the pixels in the subsample, evaluated through the explanatory variables of each pixel: - -$$ -\sigma_{\overline{dh}}\vert_{\mathbb{S}} = \sigma_{\overline{z_{dh}}}\vert_{\mathbb{S}} \cdot \overline{\sigma_{dh}(\textrm{var}_{1}, \textrm{var}_{2}, \textrm{...})}\vert_{\mathbb{S}} -$$ - -Estimating the standard error of the mean of the standardized data $\sigma_{\overline{z_{dh}}}\vert_{\mathbb{S}}$ -requires an analysis of spatial correlation and a spatial integration of this correlation, described in the next sections. - -```{eval-rst} -.. minigallery:: xdem.spatialstats.infer_heteroscedasticity_from_stable xdem.spatialstats.nd_binning - :add-heading: Examples that deal with elevation heteroscedasticity - :heading-level: " +```{code-cell} ipython3 +# Sample empirical variogram +df_vgm = xdem.spatialstats.sample_empirical_variogram(values=z_dh, subsample=500, n_variograms=5, random_state=42) ``` -(spatialstats-corr)= - -### Spatial correlation of elevation measurement errors - -Spatial correlation of elevation measurement errors correspond to a dependency between measurement errors of spatially -close pixels in elevation data. Those can be related to the resolution of the data (short-range correlation), or to -instrument noise and deformations (mid- to long-range correlations). +**Step 3: Modelling of the variogram** -xDEM provides tools to **quantify** these spatial correlation with pairwise sampling optimized for grid data and to -**model** correlations simultaneously at multiple ranges. +Once empirically estimated, the variogram can be modelled by a functional form with {func}`~xdem.spatialstats.fit_sum_model_variogram`. +Plotting of the empirical and modelled variograms is facilitated by {func}`~xdem.spatialstats.plot_variogram`. -#### Quantify spatial correlations - -[Variograms](https://en.wikipedia.org/wiki/Variogram) are functions that describe the spatial correlation of a sample. -The variogram $2\gamma(h)$ is a function of the distance between two points, referred to as spatial lag $l$ -(usually noted $h$, here avoided to avoid confusion with the elevation and elevation differences). -The output of a variogram is the correlated variance of the sample. +```{code-cell} ipython3 +# Fit the sum of a gaussian and spherical model +func_sum_vgm, params_variogram_model = xdem.spatialstats.fit_sum_model_variogram( + list_models=["Gaussian", "Spherical"], empirical_variogram=df_vgm +) +# Plot empirical and modelled variogram +xdem.spatialstats.plot_variogram(df_vgm, [func_sum_vgm], ["Sum of gaussian and spherical"], xscale="log") +``` -$$ -2\gamma(l) = \textrm{var}\left(Z(\textrm{s}_{1}) - Z(\textrm{s}_{2})\right) -$$ +## Propagation of errors -where $Z(\textrm{s}_{i})$ is the value taken by the sample at location $\textrm{s}_{i}$, and sample positions -$\textrm{s}_{1}$ and $\textrm{s}_{2}$ are separated by a distance $l$. +The two uncertainty components estimated above allow to propagate elevation errors. +xDEM provides methods to theoretically propagate errors to spatial derivatives (mean or sum in an area), with efficient +computing times. +For more complex derivatives (such as terrain attributes), we recommend to combine the structure of error +defined above with random field simulation methods available in packages such as [GSTools](https://geostat-framework.readthedocs.io/projects/gstools/en/stable/). -For elevation differences $dh$, this translates into: +### Spatial derivatives -$$ -2\gamma_{dh}(l) = \textrm{var}\left(dh(\textrm{s}_{1}) - dh(\textrm{s}_{2})\right) -$$ +The propagation of random errors to a spatial derivative is done with +{func}`~xdem.spatialstats.spatial_error_propagation`, which divides into three steps. -The variogram essentially describes the spatial covariance $C$ in relation to the variance of the entire sample -$\sigma_{dh}^{2}$: +Each step derives a part of the standard error in the area. +For example, for the error of the mean elevation difference $\sigma_{\overline{dh}}$: $$ -\gamma_{dh}(l) = \sigma_{dh}^{2} - C_{dh}(l) +\sigma_{\overline{dh}} = \frac{\overline{\sigma_{dh}}}{\sqrt{N_{eff}}} $$ -```{eval-rst} -.. plot:: code/spatialstats_variogram_covariance.py - :width: 90% -``` - -Empirical variograms are variograms estimated directly by [binned](https://en.wikipedia.org/wiki/Data_binning) analysis -of variance of the data. Historically, empirical variograms were estimated for point data by calculating all possible -pairwise differences in the samples. This amounts to $N^2$ pairwise calculations for $N$ samples, which is -not well-suited to grid data that contains many millions of points and would be impossible to comupute. Thus, in order -to estimate a variogram for large grid data, subsampling is necessary. - -Random subsampling of the grid samples used is a solution, but often unsatisfactory as it creates a clustering -of pairwise samples that unevenly represents lag classes (most pairwise differences are found at mid distances, but too -few at short distances and long distances). - -To remedy this issue, xDEM provides {func}`xdem.spatialstats.sample_empirical_variogram`, an empirical variogram estimation tool -that encapsulates a pairwise subsampling method described in `skgstat.MetricSpace.RasterEquidistantMetricSpace`. -This method compares pairwise distances between a center subset and equidistant subsets iteratively across a grid, based on -[sparse matrices](https://en.wikipedia.org/wiki/Sparse_matrix) routines computing pairwise distances of two separate -subsets, as in [scipy.cdist](https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.distance.cdist.html) -(instead of using pairwise distances within the same subset, as implemented in most spatial statistics packages). -The resulting pairwise differences are evenly distributed across the grid and across lag classes (in 2 dimensions, this -means that lag classes separated by a factor of $\sqrt{2}$ have an equal number of pairwise differences computed). - ```{code-cell} ipython3 -# Sample empirical variogram -df_vgm = xdem.spatialstats.sample_empirical_variogram(values=dh, subsample=10, random_state=42) +# Get an area of interest where we want to propagate errors +outline_brom = gu.Vector(glacier_outlines.ds[glacier_outlines.ds["NAME"] == "Brombreen"]) +mask_brom = outline_brom.create_mask(dh) ``` -The variogram is returned as a {class}`~pandas.DataFrame` object. - -With all spatial lags sampled evenly, estimating a variogram requires significantly less samples, increasing the -robustness of the spatial correlation estimation and decreasing computing time! - -#### Model spatial correlations - -Once an empirical variogram is estimated, fitting a function model allows to simplify later analysis by directly -providing a function form (e.g., for kriging equations, or uncertainty analysis - see {ref}`spatialstats-errorpropag`), -which would otherwise have to be numerically modelled. +**Step 1: Account for variable error** -Generally, in spatial statistics, a single model is used to describe the correlation in the data. -In elevation data, however, spatial correlations are observed at different scales, which requires fitting a sum of models at -multiple ranges (introduced in [Rolstad et al. (2009)](https://doi.org/10.3189/002214309789470950) for glaciology -applications). - -This can be performed through the function {func}`xdem.spatialstats.fit_sum_model_variogram`, which expects as input a -`pd.Dataframe` variogram. +We compute the mean of the variable random error in the area $\overline{\sigma_{dh}}$. ```{code-cell} ipython3 -# Fit sum of double-range spherical model -func_sum_vgm, params_variogram_model = xdem.spatialstats.fit_sum_model_variogram( - list_models=["Gaussian", "Spherical"], empirical_variogram=df_vgm -) +# Calculate the mean random error in the area +mean_sig = np.nanmean(sig_dh[mask_brom]) ``` -```{eval-rst} -.. minigallery:: xdem.spatialstats.infer_spatial_correlation_from_stable xdem.spatialstats.sample_empirical_variogram - :add-heading: Examples that deal with spatial correlations - :heading-level: " -``` +**Step 2: Account for spatial correlation** -(spatialstats-errorpropag)= +We estimate the number of effective samples in the area $N_{eff}$ due to the spatial correlations. -### Spatially integrated measurement errors +```{note} +:class: margin -After quantifying and modelling spatial correlations, those an effective sample size, and elevation measurement error: +**We notice a warning below:** The resolution for rasterizing the outline was automatically chosen based on the short correlation range. +``` ```{code-cell} ipython3 +--- +mystnb: + output_stderr: show +--- # Calculate the area-averaged uncertainty with these models -neff = xdem.spatialstats.number_effective_samples(area=1000, params_variogram_model=params_variogram_model) +neff = xdem.spatialstats.number_effective_samples(area=outline_brom, params_variogram_model=params_variogram_model) ``` -TODO: Add this section based on Rolstad et al. (2009), Hugonnet et al. (in prep) +**Step 3: Derive final error** -### Propagation of correlated errors +And we can now compute our final random error for the mean elevation change in this area of interest: -TODO: Add this section based on Krige's relation (Webster & Oliver, 2007), Hugonnet et al. (in prep) +```{code-cell} ipython3 +# Compute the standard error +sig_dh_brom = mean_sig / np.sqrt(neff) + +# Mean elevation difference +dh_brom = np.nanmean(dh[mask_brom]) + +# Plot the result +dh.plot(cmap="RdYlBu", cbar_title="Elevation differences (m)") +outline_brom.plot(dh, fc="none", ec="black", lw=2) +plt.text( + outline_brom.ds.centroid.x.values[0], + outline_brom.ds.centroid.y.values[0] - 1500, + f"{dh_brom:.2f} \n$\\pm$ {sig_dh_brom:.2f} m", + color="black", + fontweight="bold", + va="top", + ha="center", +) +plt.show() +``` diff --git a/doc/source/vertical_ref.md b/doc/source/vertical_ref.md index 76fdba5e..3c49f2de 100644 --- a/doc/source/vertical_ref.md +++ b/doc/source/vertical_ref.md @@ -12,15 +12,64 @@ kernelspec: --- (vertical-ref)= +```{code-cell} ipython3 +:tags: [remove-cell] + +# To get a good resolution for displayed figures +from matplotlib import pyplot +pyplot.rcParams['figure.dpi'] = 600 +pyplot.rcParams['savefig.dpi'] = 600 +``` + # Vertical referencing -xDEM supports the use of **vertical coordinate reference systems (vertical CRSs)** and vertical transformations for DEMs +xDEM supports the use of **vertical coordinate reference systems (vertical CRSs) and vertical transformations for elevation data** by conveniently wrapping PROJ pipelines through [Pyproj](https://pyproj4.github.io/pyproj/stable/) in the {class}`~xdem.DEM` class. -```{important} +```{note} **A {class}`~xdem.DEM` already possesses a {class}`~xdem.DEM.crs` attribute that defines its 2- or 3D CRS**, inherited from {class}`~geoutils.Raster`. Unfortunately, most DEM products do not yet come with a 3D CRS in their raster metadata, and vertical CRSs often have to be set by the user. See {ref}`vref-setting` below. + +For more reading on referencing for elevation data, see the **{ref}`elevation-intricacies` guide page.** +``` + +## Quick use + +The parsing, setting and transformation of vertical CRSs revolves around **three methods**, all described in details further below: +- The **instantiation** of {class}`~xdem.DEM` that implicitly tries to set the vertical CRS from the metadata (or explicitly through the `vcrs` argument), +- The **setting** method {func}`~xdem.DEM.set_vcrs` to explicitly set the vertical CRS of a {class}`~xdem.DEM`, +- The **transformation** method {func}`~xdem.DEM.to_vcrs` to explicitly transform the vertical CRS of a {class}`~xdem.DEM`. + +```{caution} +As of now, **[Rasterio](https://rasterio.readthedocs.io/en/stable/) does not support vertical transformations during CRS reprojection** (even if the CRS +provided contains a vertical axis). +We therefore advise to perform horizontal transformation and vertical transformation independently using {func}`DEM.reproject` and {func}`DEM.to_vcrs`, respectively. +``` + +To pass a vertical CRS argument, xDEM accepts string of the most commonly used (`"EGM96"`, `"EGM08"` and `"Ellipsoid"`), +any {class}`pyproj.crs.CRS` objects and any PROJ grid name (available at [https://cdn.proj.org/](https://cdn.proj.org/)) which is **automatically downloaded**. + +```{code-cell} ipython3 +:tags: [hide-cell] +:mystnb: +: code_prompt_show: "Show the code for opening example data" +: code_prompt_hide: "Hide the code for opening example data" + +import xdem +import matplotlib.pyplot as plt + +ref_dem = xdem.DEM(xdem.examples.get_path("longyearbyen_ref_dem")) +``` + +```{code-cell} ipython3 +# Set current vertical CRS +ref_dem.set_vcrs("EGM96") +# Transform to a local reference system from https://cdn.proj.org/ +trans_dem = ref_dem.to_vcrs("no_kv_arcgp-2006-sk.tif") + +# Plot the elevation differences of the vertical transformation +(trans_dem - ref_dem).plot(cmap='RdYlBu', cbar_title="Elevation differences of\n vertical transform (m)") ``` ## What is a vertical CRS? @@ -37,19 +86,6 @@ In xDEM, we merge these into a single vertical CRS attribute {class}`DEM.vcrs` with only a vertical axis is either a {class}`~pyproj.crs.BoundCRS` (when created from a grid) or a {class}`~pyproj.crs.VerticalCRS` (when created in any other manner). -## Methods to manipulate vertical CRSs - -The parsing, setting and transformation of vertical CRSs revolves around **three methods**, all described in details further below: -- The **instantiation** of {class}`~xdem.DEM` that implicitly tries to set the vertical CRS from the metadata (or explicitly through the `vcrs` argument), -- The **setting** method {func}`~xdem.DEM.set_vcrs` to explicitly set the vertical CRS of a {class}`~xdem.DEM`, -- The **transformation** method {func}`~xdem.DEM.to_vcrs` to explicitly transform the vertical CRS of a {class}`~xdem.DEM`. - -```{caution} -As of now, **[Rasterio](https://rasterio.readthedocs.io/en/stable/) does not support vertical transformations during CRS reprojection** (even if the CRS -provided contains a vertical axis). -We therefore advise to perform horizontal transformation and vertical transformation independently using {func}`DEM.reproject` and {func}`DEM.to_vcrs`, respectively. -``` - (vref-setting)= ## Automated vertical CRS detection @@ -97,7 +133,7 @@ os.remove("mydem_with3dcrs.tif") 2. **From the {attr}`~xdem.DEM.product` name of the DEM**, if parsed from the filename by {class}`geoutils.SatelliteImage`. -```{see-also} +```{seealso} The {class}`~geoutils.SatelliteImage` parent class that parses the product metadata is described in [a dedicated section of GeoUtils' documentation](https://geoutils.readthedocs.io/en/latest/satimg_class.html). ``` @@ -217,7 +253,7 @@ To transform a {class}`~xdem.DEM` to a different vertical CRS, {func}`~xdem.DEM. ```{note} If your transformation requires a grid that is not available locally, it will be **downloaded automatically**. -xDEM uses only the best available (i.e. best accuracy) transformation returned by {class}`pyproj.transformer.TransformerGroup`, considering the area-of-interest as the DEM extent {class}`~xdem.DEM.bounds`. +xDEM uses only the best available (i.e. best accuracy) transformation returned by {class}`pyproj.transformer.TransformerGroup`. ``` ```{code-cell} ipython3 diff --git a/examples/advanced/plot_blockwise_coreg.py b/examples/advanced/plot_blockwise_coreg.py index 873d3716..41e1010a 100644 --- a/examples/advanced/plot_blockwise_coreg.py +++ b/examples/advanced/plot_blockwise_coreg.py @@ -25,7 +25,7 @@ import xdem # %% -# **Example files** +# We open example files. reference_dem = xdem.DEM(xdem.examples.get_path("longyearbyen_ref_dem")) dem_to_be_aligned = xdem.DEM(xdem.examples.get_path("longyearbyen_tba_dem")) @@ -48,7 +48,7 @@ diff_before = reference_dem - dem_to_be_aligned -diff_before.plot(cmap="coolwarm_r", vmin=-10, vmax=10) +diff_before.plot(cmap="RdYlBu", vmin=-10, vmax=10) plt.show() # %% @@ -70,9 +70,7 @@ # Coregistration is performed with the ``.fit()`` method. # This runs in multiple threads by default, so more CPU cores are preferable here. -blockwise.fit(reference_dem, dem_to_be_aligned, inlier_mask=inlier_mask) - -aligned_dem = blockwise.apply(dem_to_be_aligned) +aligned_dem = blockwise.fit_and_apply(reference_dem, dem_to_be_aligned, inlier_mask=inlier_mask) # %% # The estimated shifts can be visualized by applying the coregistration to a completely flat surface. @@ -83,7 +81,7 @@ np.zeros_like(dem_to_be_aligned.data), transform=dem_to_be_aligned.transform, crs=dem_to_be_aligned.crs )[0] plt.title("Vertical correction") -plt.imshow(z_correction, cmap="coolwarm_r", vmin=-10, vmax=10, extent=plt_extent) +plt.imshow(z_correction, cmap="RdYlBu", vmin=-10, vmax=10, extent=plt_extent) for _, row in blockwise.stats().iterrows(): plt.annotate(round(row["z_off"], 1), (row["center_x"], row["center_y"]), ha="center") @@ -92,11 +90,12 @@ diff_after = reference_dem - aligned_dem -diff_after.plot(cmap="coolwarm_r", vmin=-10, vmax=10) +diff_after.plot(cmap="RdYlBu", vmin=-10, vmax=10) plt.show() # %% -# We can compare the NMAD to validate numerically that there was an improvment: +# We can compare the NMAD to validate numerically that there was an improvement: + -print(f"Error before: {xdem.spatialstats.nmad(diff_before):.2f} m") -print(f"Error after: {xdem.spatialstats.nmad(diff_after):.2f} m") +print(f"Error before: {xdem.spatialstats.nmad(diff_before[inlier_mask]):.2f} m") +print(f"Error after: {xdem.spatialstats.nmad(diff_after[inlier_mask]):.2f} m") diff --git a/examples/advanced/plot_demcollection.py b/examples/advanced/plot_demcollection.py index 5d57ca53..c3b3fa94 100644 --- a/examples/advanced/plot_demcollection.py +++ b/examples/advanced/plot_demcollection.py @@ -85,8 +85,6 @@ scott_extent = [518600, 523800, 8666600, 8672300] -plt.figure(figsize=(8, 5)) - for i in range(2): plt.subplot(1, 2, i + 1) @@ -98,8 +96,9 @@ # The 2009 - 2060 DEM is inverted since the reference year is 2009 ddem_2060 = -demcollection.ddems[2].data.squeeze() - plt.imshow(ddem_2060, cmap="coolwarm_r", vmin=-50, vmax=50, extent=extent) + plt.imshow(ddem_2060, cmap="RdYlBu", vmin=-50, vmax=50, extent=extent) plt.xlim(scott_extent[:2]) plt.ylim(scott_extent[2:]) plt.show() +plt.tight_layout() diff --git a/examples/advanced/plot_deramp.py b/examples/advanced/plot_deramp.py index 20c4f205..5047993a 100644 --- a/examples/advanced/plot_deramp.py +++ b/examples/advanced/plot_deramp.py @@ -1,11 +1,11 @@ """ -Bias correction with deramping +Bias-correction with deramping ============================== -(On latest only) Update will follow soon with more consistent bias correction examples. -In ``xdem``, this approach is implemented through the :class:`xdem.biascorr.Deramp` class. +Deramping can help correct rotational or doming errors in elevation data. +In xDEM, this approach is implemented through the :class:`xdem.coreg.Deramp` class. -For more information about the approach, see :ref:`biascorr-deramp`. +See also the :ref:`deramp` section in feature pages. """ import geoutils as gu import numpy as np @@ -13,7 +13,7 @@ import xdem # %% -# **Example files** +# We open example files. reference_dem = xdem.DEM(xdem.examples.get_path("longyearbyen_ref_dem")) dem_to_be_aligned = xdem.DEM(xdem.examples.get_path("longyearbyen_tba_dem")) glacier_outlines = gu.Vector(xdem.examples.get_path("longyearbyen_glacier_outlines")) @@ -22,11 +22,10 @@ inlier_mask = ~glacier_outlines.create_mask(reference_dem) # %% -# The DEM to be aligned (a 1990 photogrammetry-derived DEM) has some vertical and horizontal biases that we want to avoid. -# These can be visualized by plotting a change map: +# We visualize the patterns of error from the elevation differences. diff_before = reference_dem - dem_to_be_aligned -diff_before.plot(cmap="coolwarm_r", vmin=-10, vmax=10, cbar_title="Elevation change (m)") +diff_before.plot(cmap="RdYlBu", vmin=-10, vmax=10, cbar_title="Elevation differences (m)") # %% @@ -34,23 +33,22 @@ deramp = xdem.coreg.Deramp(poly_order=2) -deramp.fit(reference_dem, dem_to_be_aligned, inlier_mask=inlier_mask) -corrected_dem = deramp.apply(dem_to_be_aligned) +corrected_dem = deramp.fit_and_apply(reference_dem, dem_to_be_aligned, inlier_mask=inlier_mask) # %% # Then, the new difference can be plotted. diff_after = reference_dem - corrected_dem -diff_after.plot(cmap="coolwarm_r", vmin=-10, vmax=10, cbar_title="Elevation change (m)") +diff_after.plot(cmap="RdYlBu", vmin=-10, vmax=10, cbar_title="Elevation differences (m)") # %% # We compare the median and NMAD to validate numerically that there was an improvement (see :ref:`robuststats-meanstd`): inliers_before = diff_before[inlier_mask] -med_before, nmad_before = np.median(inliers_before), xdem.spatialstats.nmad(inliers_before) +med_before, nmad_before = np.ma.median(inliers_before), xdem.spatialstats.nmad(inliers_before) inliers_after = diff_after[inlier_mask] -med_after, nmad_after = np.median(inliers_after), xdem.spatialstats.nmad(inliers_after) +med_after, nmad_after = np.ma.median(inliers_after), xdem.spatialstats.nmad(inliers_after) print(f"Error before: median = {med_before:.2f} - NMAD = {nmad_before:.2f} m") print(f"Error after: median = {med_after:.2f} - NMAD = {nmad_after:.2f} m") diff --git a/examples/advanced/plot_heterosc_estimation_modelling.py b/examples/advanced/plot_heterosc_estimation_modelling.py index a979fbae..df392e00 100644 --- a/examples/advanced/plot_heterosc_estimation_modelling.py +++ b/examples/advanced/plot_heterosc_estimation_modelling.py @@ -4,31 +4,30 @@ Digital elevation models have a precision that can vary with terrain and instrument-related variables. This variability in variance is called `heteroscedasticy `_, -and rarely accounted for in DEM studies (see :ref:`intro`). Quantifying elevation heteroscedasticity is essential to +and rarely accounted for in DEM studies (see :ref:`accuracy-precision`). Quantifying elevation heteroscedasticity is essential to use stable terrain as an error proxy for moving terrain, and standardize data towards a stationary variance, necessary -to apply spatial statistics (see :ref:`spatialstats`). +to apply spatial statistics (see :ref:`uncertainty`). Here, we show an advanced example in which we look for terrain-dependent explanatory variables to explain the -heteroscedasticity for a DEM difference at Longyearbyen. We use `data binning `_ -and robust statistics in N-dimension with :func:`xdem.spatialstats.nd_binning`, apply a N-dimensional interpolation with -:func:`xdem.spatialstats.interp_nd_binning`, and scale our interpolant function with a two-step standardization -:func:`xdem.spatialstats.two_step_standardization` to produce the final elevation error function. - -**References**: `Hugonnet et al. (2021) `_, Equation 1, Extended Data Fig. -3a and `Hugonnet et al. (2022) `_, Figs. 4 and S6–S9. Equations 7 or 8 can -be used to convert elevation change errors into elevation errors. +heteroscedasticity for a DEM difference at Longyearbyen. We detail the steps used by +:func:`~xdem.spatialstats.infer_heteroscedasticity_from_stable` exemplified in :ref:`sphx_glr_basic_examples_plot_infer_heterosc.py`. + +We use `data binning `_ and robust statistics in N-dimension with +:func:`~xdem.spatialstats.nd_binning`, apply a N-dimensional interpolation with +:func:`~xdem.spatialstats.interp_nd_binning`, and scale our interpolant function with a two-step standardization +:func:`~xdem.spatialstats.two_step_standardization` to produce the final elevation error function. + +**Reference:** `Hugonnet et al. (2022) `_. """ import geoutils as gu # sphinx_gallery_thumbnail_number = 8 -import matplotlib.pyplot as plt import numpy as np import xdem # %% -# Here, we detail the steps used by ``xdem.spatialstats.infer_heteroscedasticity_from_stable`` exemplified in -# :ref:`sphx_glr_basic_examples_plot_infer_heterosc.py`. First, we load example files and create a glacier mask. +# We load example files and create a glacier mask. ref_dem = xdem.DEM(xdem.examples.get_path("longyearbyen_ref_dem")) dh = xdem.DEM(xdem.examples.get_path("longyearbyen_ddem")) @@ -100,11 +99,10 @@ # %% # The relation with the plan curvature remains ambiguous. # We should better define our bins to avoid sampling bins with too many or too few samples. For this, we can partition -# the data in quantiles in :func:`xdem.spatialstats.nd_binning`. -# *Note: we need a higher number of bins to work with quantiles and still resolve the edges of the distribution. As -# with many dimensions the ND bin size increases exponentially, we avoid binning all variables at the same -# time and instead bin one at a time.* -# We define 1000 quantile bins of size 0.001 (equivalent to 0.1% percentile bins) for the profile curvature: +# the data in quantiles in :func:`xdem.spatialstats.nd_binning`. We define 1000 quantile bins of size +# 0.001 (equivalent to 0.1% percentile bins) for the profile curvature: +# +# .. note:: We need a higher number of bins to work with quantiles and still resolve the edges of the distribution. df = xdem.spatialstats.nd_binning( values=dh_arr, diff --git a/examples/advanced/plot_norm_regional_hypso.py b/examples/advanced/plot_norm_regional_hypso.py index 6a313c67..e9b7c50e 100644 --- a/examples/advanced/plot_norm_regional_hypso.py +++ b/examples/advanced/plot_norm_regional_hypso.py @@ -2,7 +2,9 @@ Normalized regional hypsometric interpolation ============================================= -There are many ways of interpolating gaps in a dDEM. +.. caution:: This functionality is specific to glaciers, and might be removed in future package versions. + +There are many ways of interpolating gaps in elevation differences. In the case of glaciers, one very useful fact is that elevation change generally varies with elevation. This means that if valid pixels exist in a certain elevation bin, their values can be used to fill other pixels in the same approximate elevation. Filling gaps by elevation is the main basis of "hypsometric interpolation approaches", of which there are many variations of. @@ -24,7 +26,6 @@ 2. Re-scales that signal to fit each glacier once determined. The consequence is a much more accurate interpolation approach that can be used in a multitude of glacierized settings. - """ import geoutils as gu @@ -95,8 +96,7 @@ ) -plt.figure(figsize=(8, 5)) -plt.imshow(ddem_filled.data, cmap="coolwarm_r", vmin=-10, vmax=10, extent=plt_extent) +plt.imshow(ddem_filled.data, cmap="RdYlBu", vmin=-10, vmax=10, extent=plt_extent) plt.colorbar() plt.show() @@ -105,7 +105,7 @@ # We can plot the difference between the actual and the interpolated values, to validate the method. difference = (ddem_filled - ddem)[random_nans] -median = np.nanmedian(difference) +median = np.ma.median(difference) nmad = xdem.spatialstats.nmad(difference) plt.title(f"Median: {median:.2f} m, NMAD: {nmad:.2f} m") diff --git a/examples/advanced/plot_slope_methods.py b/examples/advanced/plot_slope_methods.py index 5c005c97..4dc697bb 100644 --- a/examples/advanced/plot_slope_methods.py +++ b/examples/advanced/plot_slope_methods.py @@ -5,8 +5,9 @@ Terrain slope and aspect can be estimated using different methods. Here is an example of how to generate the two with each method, and understand their differences. -For more information, see the :ref:`terrain-attributes` chapter and the -:ref:`sphx_glr_basic_examples_plot_terrain_attributes.py` example. +See also the :ref:`terrain-attributes` feature page. + +**References:** `Horn (1981) `_, `Zevenbergen and Thorne (1987) `_. """ import matplotlib.pyplot as plt import numpy as np @@ -14,13 +15,11 @@ import xdem # %% -# **Example data** - +# We open example data. dem = xdem.DEM(xdem.examples.get_path("longyearbyen_ref_dem")) def plot_attribute(attribute, cmap, label=None, vlim=None): - plt.figure(figsize=(8, 5)) if vlim is not None: if isinstance(vlim, (int, np.integer, float, np.floating)): @@ -30,7 +29,7 @@ def plot_attribute(attribute, cmap, label=None, vlim=None): else: vlims = {} - attribute.plot(cmap=cmap, cbar_title=label) + attribute.plot(cmap=cmap, cbar_title=label, **vlims) plt.xticks([]) plt.yticks([]) @@ -40,15 +39,15 @@ def plot_attribute(attribute, cmap, label=None, vlim=None): # %% -# Slope with method of `Horn (1981) `_ (GDAL default), based on a refined -# approximation of the gradient (page 18, bottom left, and pages 20-21). +# Slope with method of Horn (1981) (GDAL default), based on a refined +# approximation of the gradient (page 18, bottom left, and pages 20-21). slope_horn = xdem.terrain.slope(dem) plot_attribute(slope_horn, "Reds", "Slope of Horn (1981) (°)") # %% -# Slope with method of `Zevenbergen and Thorne (1987) `_, Equation 13. +# Slope with method of Zevenbergen and Thorne (1987), Equation 13. slope_zevenberg = xdem.terrain.slope(dem, method="ZevenbergThorne") @@ -109,4 +108,4 @@ def plot_attribute(attribute, cmap, label=None, vlim=None): # differences for areas with nearly flat slopes, owing to the high sensitivity of orientation estimation # for flat terrain. -# Note: the default aspect for a 0° slope is 180°, as in GDAL. +# .. note:: The default aspect for a 0° slope is 180°, as in GDAL. diff --git a/examples/advanced/plot_standardization.py b/examples/advanced/plot_standardization.py index f7864749..f436e01c 100644 --- a/examples/advanced/plot_standardization.py +++ b/examples/advanced/plot_standardization.py @@ -5,13 +5,13 @@ Digital elevation models have both a precision that can vary with terrain or instrument-related variables, and a spatial correlation of errors that can be due to effects of resolution, processing or instrument noise. Accouting for non-stationarities in elevation errors is essential to use stable terrain as a proxy to infer the -precision on other types of terrain and reliably use spatial statistics (see :ref:`spatialstats`). +precision on other types of terrain and reliably use spatial statistics (see :ref:`uncertainty`). Here, we show an example of standardization of the data based on terrain-dependent explanatory variables (see :ref:`sphx_glr_basic_examples_plot_infer_heterosc.py`) and combine it with an analysis of spatial correlation (see :ref:`sphx_glr_basic_examples_plot_infer_spatial_correlation.py`) . -**Reference**: `Hugonnet et al. (2022) `_, Equation 12. +**Reference**: `Hugonnet et al. (2022) `_. """ import geoutils as gu @@ -105,7 +105,6 @@ z_dh = z_dh / scale_fac_std print(f"NMAD after scale-correction: {nmad(z_dh.data):.1f}") -plt.figure(figsize=(8, 5)) plt_extent = [ ref_dem.bounds.left, ref_dem.bounds.right, @@ -128,8 +127,8 @@ df_vgm = xdem.spatialstats.sample_empirical_variogram( values=z_dh.data.squeeze(), gsd=dh.res[0], - subsample=1000, - n_variograms=10, + subsample=500, + n_variograms=5, estimator="dowd", random_state=42, ) @@ -163,7 +162,6 @@ medals_shp = gu.Vector(glacier_outlines.ds[glacier_outlines.ds["NAME"] == "Medalsbreen"]) medals_mask = medals_shp.create_mask(dh) -plt.figure(figsize=(8, 5)) ax = plt.gca() plt_extent = [ ref_dem.bounds.left, @@ -225,13 +223,9 @@ medals_dh = np.nanmean(dh.data[medals_mask.data]) # Plot the result -plt.figure(figsize=(8, 5)) -ax = plt.gca() -plt.imshow(dh.data, cmap="RdYlBu", vmin=-50, vmax=50, extent=plt_extent) -cbar = plt.colorbar(ax=ax) -cbar.set_label("Elevation differences (m)") -svendsen_shp.ds.plot(ax=ax, fc="none", ec="tab:olive", lw=2) -medals_shp.ds.plot(ax=ax, fc="none", ec="tab:gray", lw=2) +dh.plot(cmap="RdYlBu", vmin=-50, vmax=50, cbar_title="Elevation differences (m)") +svendsen_shp.plot(fc="none", ec="tab:olive", lw=2) +medals_shp.plot(fc="none", ec="tab:gray", lw=2) plt.plot([], [], color="tab:olive", label="Svendsenbreen glacier") plt.plot([], [], color="tab:gray", label="Medalsbreen glacier") ax.text( diff --git a/examples/advanced/plot_variogram_estimation_modelling.py b/examples/advanced/plot_variogram_estimation_modelling.py index 43cff5a6..5b7d5f84 100644 --- a/examples/advanced/plot_variogram_estimation_modelling.py +++ b/examples/advanced/plot_variogram_estimation_modelling.py @@ -3,20 +3,22 @@ ============================================== Digital elevation models have errors that are often `correlated in space `_. -While many DEM studies used solely short-range `variogram `_ to -estimate the correlation of elevation measurement errors (e.g., `Howat et al. (2008) `_ -, `Wang and Kääb (2015) `_), recent studies show that variograms of multiple ranges +While many DEM studies used solely short-range `variograms `_ to +estimate the correlation of elevation measurement errors, recent studies show that variograms of multiple ranges provide larger, more reliable estimates of spatial correlation for DEMs. Here, we show an example in which we estimate the spatial correlation for a DEM difference at Longyearbyen, and its -impact on the standard error with averaging area. We first estimate an empirical variogram with -:func:`xdem.spatialstats.sample_empirical_variogram` based on routines of `scikit-gstat +impact on the standard error of the mean of elevation differences in an area. We detail the steps used +by :func:`~xdem.spatialstats.infer_spatial_correlation_from_stable` exemplified in +# :ref:`sphx_glr_basic_examples_plot_infer_spatial_correlation.py`. + +We first estimate an empirical variogram with :func:`~xdem.spatialstats.sample_empirical_variogram` based on routines of `SciKit-GStat `_. We then fit the empirical variogram with a sum of variogram -models using :func:`xdem.spatialstats.fit_sum_model_variogram`. Finally, we perform spatial propagation for a range of -averaging area using :func:`xdem.spatialstats.number_effective_samples`, and empirically validate the improved -robustness of our results using :func:`xdem.spatialstats.patches_method`, an intensive Monte-Carlo sampling approach. +models using :func:`~xdem.spatialstats.fit_sum_model_variogram`. Finally, we perform spatial propagation for a range of +averaging area using :func:`~xdem.spatialstats.number_effective_samples`, and empirically validate the improved +robustness of our results using :func:`~xdem.spatialstats.patches_method`, an intensive Monte-Carlo sampling approach. -**Reference:** `Hugonnet et al. (2022) `_, Figure 5 and Equations 13–16. +**References:** `Rolstad et al. (2009) `_, `Hugonnet et al. (2022) `_. """ import geoutils as gu @@ -49,7 +51,6 @@ # elevation differences. The per-pixel precision is about :math:`\pm` 2.5 meters. # **Does this mean that every pixel has an independent measurement error of** :math:`\pm` **2.5 meters?** # Let's plot the elevation differences to visually check the quality of the data. -plt.figure(figsize=(8, 5)) dh.plot(ax=plt.gca(), cmap="RdYlBu", vmin=-4, vmax=4, cbar_title="Elevation differences (m)") # %% @@ -65,7 +66,6 @@ # %% # We plot the elevation differences after filtering to check that we successively removed glacier signals. -plt.figure(figsize=(8, 5)) dh.plot(ax=plt.gca(), cmap="RdYlBu", vmin=-4, vmax=4, cbar_title="Elevation differences (m)") # %% @@ -73,18 +73,17 @@ # The empirical variogram describes the variance between the elevation differences of pairs of pixels depending on their # distance. This distance between pairs of pixels if referred to as spatial lag. # -# To perform this procedure effectively, we use improved methods that provide efficient pairwise sampling methods for -# large grid data in `scikit-gstat `_, which are encapsulated -# conveniently by :func:`xdem.spatialstats.sample_empirical_variogram`: -# Dowd's variogram is used for robustness in conjunction with the NMAD (see :ref:`robuststats-corr`). +# To perform this procedure effectively, we use methods that provide efficient pairwise sampling methods for +# large grid data in `SciKit-GStat `_, which are encapsulated +# conveniently by :func:`~xdem.spatialstats.sample_empirical_variogram`. # Dowd's variogram is used for +# robustness in conjunction with the NMAD (see :ref:`robuststats-corr`). df = xdem.spatialstats.sample_empirical_variogram( - values=dh, subsample=1000, n_variograms=10, estimator="dowd", random_state=42 + values=dh, subsample=500, n_variograms=5, estimator="dowd", random_state=42 ) # %% -# *Note: in this example, we add a* ``random_state`` *argument to yield a reproducible random sampling of pixels within -# the grid.* +# .. note:: In this example, we add a ``random_state`` argument to yield a reproducible random sampling of pixels within the grid. # %% # We plot the empirical variogram: @@ -164,7 +163,7 @@ # patches method to run over long processing times, increasing from areas of 5 pixels to areas of 10000 pixels exponentially. areas_emp = [4000 * 2 ** (i) for i in range(10)] -df_patches = xdem.spatialstats.patches_method(dh, gsd=dh.res[0], areas=areas_emp) +df_patches = xdem.spatialstats.patches_method(dh, gsd=dh.res[0], areas=areas_emp, n_patches=200) fig, ax = plt.subplots() @@ -185,8 +184,7 @@ plt.show() # %% -# *Note: in this example, we add a* ``random_state`` *argument to the patches method to yield a reproducible random -# sampling, and set* ``n_patches`` *to reduce computing time.* +# .. note:: In this example, we set ``n_patches`` to a moderate number to reduce computing time. # %% # Using a single-range variogram highly underestimates the measurement error integrated over an area, by over a factor @@ -194,7 +192,7 @@ # # **But, in this case, the error is still too small. Why?** # The small size of the sampling area against the very large range of the noise implies that we might not verify the -# assumption of second-order stationarity (see :ref:`spatialstats`). Longer range correlations might be omitted by +# assumption of second-order stationarity (see :ref:`uncertainty`). Longer range correlations might be omitted by # our analysis, due to the limits of the variogram sampling. In other words, a small part of the variance could be # fully correlated over a large part of the grid: a vertical bias. # diff --git a/examples/basic/logging_configuration.py b/examples/basic/logging_configuration.py deleted file mode 100644 index 73cee9b4..00000000 --- a/examples/basic/logging_configuration.py +++ /dev/null @@ -1,47 +0,0 @@ -""" -Configuring Logging in xDEM -=============================== - -This example demonstrates how to configure logging in xDEM by using the Nuth and Kääb -(`2011 `_) coregistration method. -Logging can be customized to various levels, from `DEBUG` for detailed diagnostic output, to `INFO` for general -updates, `WARNING` for potential issues, and `ERROR` or `CRITICAL` for serious problems. - -We will demonstrate how to set up logging and show logs while running a typical xDEM function. -""" - -import logging - -import xdem - -# Step 1: Configure logging -logging.basicConfig( - level=logging.INFO, # Change this level to DEBUG or WARNING to see different outputs. - format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", - datefmt="%Y-%m-%d %H:%M:%S", - handlers=[ - logging.FileHandler("../xdem_example.log"), # Save logs to a file - logging.StreamHandler(), # Print logs to the console - ], -) - -# Step 2: Load example DEMs (Digital Elevation Models) to work with -reference_dem = xdem.DEM(xdem.examples.get_path("longyearbyen_ref_dem")) -dem_to_be_aligned = xdem.DEM(xdem.examples.get_path("longyearbyen_tba_dem")) - -# Step 3: Perform Nuth & Kaab coregistration (for alignment of DEMs) -coreg = xdem.coreg.NuthKaab() - -# Step 4: Demonstrate logging at various levels -logging.info("Starting Nuth & Kaab coregistration...") -coreg.fit(reference_dem, dem_to_be_aligned) -logging.debug("Coregistration successful. Applying transformation...") - -# Apply the coregistration -aligned_dem = coreg.apply(dem_to_be_aligned) - -# Output some results -logging.info(f"Coregistration completed. Aligned DEM shape: {aligned_dem.shape}") - -# Displaying final logs -logging.debug("Aligned DEM has been computed and saved.") diff --git a/examples/basic/plot_dem_subtraction.py b/examples/basic/plot_dem_subtraction.py index ee158338..c9e0e458 100644 --- a/examples/basic/plot_dem_subtraction.py +++ b/examples/basic/plot_dem_subtraction.py @@ -7,7 +7,7 @@ xDEM allows to use any operator on :class:`xdem.DEM` objects, such as :func:`+` or :func:`-` as well as most NumPy functions while respecting nodata values and checking that georeferencing is consistent. This functionality is inherited from `GeoUtils' Raster class `_. -Before DEMs can be compared, they need to be reprojected to the same grid and have the same 3D CRSs. The :func:`geoutils.Raster.reproject` and :func:`xdem.DEM.to_vcrs` methods are used for this. +Before DEMs can be compared, they need to be reprojected to the same grid and have the same 3D CRSs. The :func:`~xdem.DEM.reproject` and :func:`~xdem.DEM.to_vcrs` methods are used for this. """ import geoutils as gu @@ -28,30 +28,30 @@ # %% # In this particular case, the two DEMs are already on the same grid (they have the same bounds, resolution and coordinate system). -# If they don't, we need to reproject one DEM to fit the other using :func:`geoutils.Raster.reproject`: +# If they don't, we need to reproject one DEM to fit the other using :func:`xdem.DEM.reproject`: dem_1990 = dem_1990.reproject(dem_2009) # %% # Oops! -# GeoUtils just warned us that ``dem_1990`` did not need reprojection. We can hide this output with ``.reproject(..., silent=True)``. -# By default, :func:`xdem.DEM.reproject` uses "bilinear" resampling (assuming resampling is needed). +# GeoUtils just warned us that ``dem_1990`` did not need reprojection. We can hide this output with ``silent``. +# By default, :func:`~xdem.DEM.reproject` uses "bilinear" resampling (assuming resampling is needed). # Other options are detailed at `geoutils.Raster.reproject() `_ and `rasterio.enums.Resampling `_. # -# We now compute the difference by simply substracting, passing `stats=True` to :func:`geoutils.Raster.info` to print statistics. +# We now compute the difference by simply substracting, passing ``stats=True`` to :func:`xdem.DEM.info` to print statistics. ddem = dem_2009 - dem_1990 ddem.info(stats=True) # %% -# It is a new :class:`xdem.DEM` instance, loaded in memory. +# It is a new :class:`~xdem.DEM` instance, loaded in memory. # Let's visualize it, with some glacier outlines. # Load the outlines glacier_outlines = gu.Vector(xdem.examples.get_path("longyearbyen_glacier_outlines")) glacier_outlines = glacier_outlines.crop(ddem, clip=True) -ddem.plot(cmap="coolwarm_r", vmin=-20, vmax=20, cbar_title="Elevation change (m)") +ddem.plot(cmap="RdYlBu", vmin=-20, vmax=20, cbar_title="Elevation differences (m)") glacier_outlines.plot(ref_crs=ddem, fc="none", ec="k") # %% diff --git a/examples/basic/plot_icp_coregistration.py b/examples/basic/plot_icp_coregistration.py index 14acca2b..568452cc 100644 --- a/examples/basic/plot_icp_coregistration.py +++ b/examples/basic/plot_icp_coregistration.py @@ -2,13 +2,13 @@ Iterative closest point coregistration ====================================== -Iterative Closest Point (ICP) is a registration methods accounting for both rotation and translation. +Iterative closest point (ICP) is a registration method accounting for both rotations and translations. -It is used primarily to correct rotations, as it performs worse than :ref:`coregistration-nuthkaab` for sub-pixel shifts. +It is used primarily to correct rotations, as it generally performs worse than :ref:`nuthkaab` for sub-pixel shifts. Fortunately, xDEM provides the best of two worlds by allowing a combination of the two methods in a pipeline, demonstrated below! -**Reference**: `Besl and McKay (1992) `_. +**References**: `Besl and McKay (1992) `_. """ # sphinx_gallery_thumbnail_number = 2 import matplotlib.pyplot as plt @@ -42,15 +42,15 @@ [0, 0, 0, 1], ] ) - +centroid = [dem.bounds.left + dem.width / 2, dem.bounds.bottom + dem.height / 2, np.nanmean(dem)] # This will apply the matrix along the center of the DEM -rotated_dem = xdem.coreg.apply_matrix(dem, matrix=rotation_matrix) +rotated_dem = xdem.coreg.apply_matrix(dem, matrix=rotation_matrix, centroid=centroid) # %% # We can plot the difference between the original and rotated DEM. # It is now artificially tilting from east down to the west. diff_before = dem - rotated_dem -diff_before.plot(cmap="coolwarm_r", vmin=-20, vmax=20) +diff_before.plot(cmap="RdYlBu", vmin=-20, vmax=20, cbar_title="Elevation differences (m)") plt.show() # %% @@ -71,18 +71,16 @@ plt.figure(figsize=(6, 12)) for i, (approach, name) in enumerate(approaches): - approach.fit( + corrected_dem = approach.fit_and_apply( reference_elev=dem, to_be_aligned_elev=rotated_dem, ) - corrected_dem = approach.apply(elev=rotated_dem) - diff = dem - corrected_dem ax = plt.subplot(3, 1, i + 1) plt.title(name) - diff.plot(cmap="coolwarm_r", vmin=-20, vmax=20, ax=ax) + diff.plot(cmap="RdYlBu", vmin=-20, vmax=20, ax=ax, cbar_title="Elevation differences (m)") plt.tight_layout() plt.show() @@ -91,8 +89,8 @@ # %% # The results show what we expected: # -# * ``ICP`` alone handled the rotational offset, but left a horizontal offset as it is not sub-pixel accurate (in this case, the resolution is 20x20m). -# * ``NuthKaab`` barely helped at all, since the offset is purely rotational. -# * ``ICP + NuthKaab`` first handled the rotation, then fit the reference with sub-pixel accuracy. +# - **ICP** alone handled the rotational offset, but left a horizontal offset as it is not sub-pixel accurate (in this case, the resolution is 20x20m). +# - **Nuth and Kääb** barely helped at all, since the offset is purely rotational. +# - **ICP + Nuth and Kääb** first handled the rotation, then fit the reference with sub-pixel accuracy. # # The last result is an almost identical raster that was offset but then corrected back to its original position! diff --git a/examples/basic/plot_infer_heterosc.py b/examples/basic/plot_infer_heterosc.py index 691d49ec..dd6aa179 100644 --- a/examples/basic/plot_infer_heterosc.py +++ b/examples/basic/plot_infer_heterosc.py @@ -7,8 +7,7 @@ using terrain slope and maximum curvature as explanatory variables, with stable terrain as an error proxy for moving terrain. -**Reference**: `Hugonnet et al. (2022) `_, Figs. 4 and S6–S9. Equations 7 -or 8 can be used to convert elevation change errors into elevation errors. +**Reference:** `Hugonnet et al. (2022) `_. """ import geoutils as gu @@ -16,7 +15,7 @@ import xdem # %% -# We load a difference of DEMs at Longyearbyen, already coregistered using :ref:`coregistration-nuthkaab` as shown in +# We load a difference of DEMs at Longyearbyen, already coregistered using :ref:`nuthkaab` as shown in # the :ref:`sphx_glr_basic_examples_plot_nuth_kaab.py` example. We also load the reference DEM to derive terrain # attributes and the glacier outlines here corresponding to moving terrain. dh = xdem.DEM(xdem.examples.get_path("longyearbyen_ddem")) diff --git a/examples/basic/plot_infer_spatial_correlation.py b/examples/basic/plot_infer_spatial_correlation.py index 83fc7785..16d69270 100644 --- a/examples/basic/plot_infer_spatial_correlation.py +++ b/examples/basic/plot_infer_spatial_correlation.py @@ -6,7 +6,7 @@ rely on a non-stationary spatial statistics framework to estimate and model spatial correlations in elevation error. We use a sum of variogram forms to model this correlation, with stable terrain as an error proxy for moving terrain. -**Reference**: `Hugonnet et al. (2022) `_, Figure 5 and Equations 13–16. +**References:** `Rolstad et al. (2009) `_, `Hugonnet et al. (2022) `_. """ import geoutils as gu @@ -14,7 +14,7 @@ import xdem # %% -# We load a difference of DEMs at Longyearbyen, already coregistered using :ref:`coregistration-nuthkaab` as shown in +# We load a difference of DEMs at Longyearbyen, already coregistered using :ref:`nuthkaab` as shown in # the :ref:`sphx_glr_basic_examples_plot_nuth_kaab.py` example. We also load the glacier outlines here corresponding to # moving terrain. dh = xdem.DEM(xdem.examples.get_path("longyearbyen_ddem")) @@ -34,7 +34,7 @@ # %% # The first output corresponds to the dataframe of the empirical variogram, by default estimated using Dowd's estimator -# and the circular sampling scheme of ``skgstat.RasterEquidistantMetricSpace`` (Fig. S13 of Hugonnet et al. (2022)). The +# and a circular sampling scheme in SciKit-GStat (following Fig. S13 of Hugonnet et al. (2022)). The # ``lags`` columns is the upper bound of spatial lag bins (lower bound of first bin being 0), the ``exp`` column is the # "experimental" variance value of the variogram in that bin, the ``count`` the number of pairwise samples, and # ``err_exp`` the 1-sigma error of the "experimental" variance, if more than one variogram is estimated with the diff --git a/examples/basic/plot_logging_configuration.py b/examples/basic/plot_logging_configuration.py new file mode 100644 index 00000000..5f0a347b --- /dev/null +++ b/examples/basic/plot_logging_configuration.py @@ -0,0 +1,51 @@ +""" +Configuring verbosity level +=========================== + +This example demonstrates how to configure verbosity level, or logging, using a coregistration method. +Logging can be customized to various severity levels, from ``DEBUG`` for detailed diagnostic output, to ``INFO`` for +general updates, ``WARNING`` for potential issues, and ``ERROR`` or ``CRITICAL`` for serious problems. + +Setting the verbosity to a certain severity level prints all outputs from that level and those above. For instance, +level ``INFO`` also prints warnings, error and critical messages. + +See also :ref:`config`. + +.. important:: The verbosity level defaults to ``WARNING``, so no ``INFO`` or ``DEBUG`` is printed. +""" + +import logging + +import xdem + +# %% +# We start by configuring the logging level, which can be as simple as specifying we want to print information. +logging.basicConfig(level=logging.INFO) + +# %% +# We can change the configuration even more by specifying the format, date, and multiple destinations for the output. +logging.basicConfig( + level=logging.INFO, # Change this level to DEBUG or WARNING to see different outputs. + format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", + datefmt="%Y-%m-%d %H:%M:%S", + handlers=[ + logging.FileHandler("../xdem_example.log"), # Save logs to a file + logging.StreamHandler(), # Also print logs to the console + ], + force=True, # To re-set from previous logging +) + +# %% +# We can now load example files and demonstrate the logging through a functionality, such as coregistration. +reference_dem = xdem.DEM(xdem.examples.get_path("longyearbyen_ref_dem")) +dem_to_be_aligned = xdem.DEM(xdem.examples.get_path("longyearbyen_tba_dem")) +coreg = xdem.coreg.NuthKaab() + +# %% +# With the ``INFO`` verbosity level defined above, we can follow the iteration with a detailed format, saved to file. +aligned_dem = coreg.fit_and_apply(reference_dem, dem_to_be_aligned) + +# %% +# With a more severe verbosity level, there is no output. +logging.basicConfig(level=logging.ERROR, force=True) +aligned_dem = coreg.fit_and_apply(reference_dem, dem_to_be_aligned) diff --git a/examples/basic/plot_nuth_kaab.py b/examples/basic/plot_nuth_kaab.py index e390f7af..ad4df559 100644 --- a/examples/basic/plot_nuth_kaab.py +++ b/examples/basic/plot_nuth_kaab.py @@ -2,10 +2,13 @@ Nuth and Kääb coregistration ============================ -Nuth and Kääb (`2011 `_) coregistration allows for horizontal and vertical shifts to be estimated and corrected for. -In ``xdem``, this approach is implemented through the :class:`xdem.coreg.NuthKaab` class. +The Nuth and Kääb coregistration corrects horizontal and vertical shifts, and is especially performant for precise +sub-pixel alignment in areas with varying slope. +In xDEM, this approach is implemented through the :class:`xdem.coreg.NuthKaab` class. -For more information about the approach, see :ref:`coregistration-nuthkaab`. +See also the :ref:`nuthkaab` section in feature pages. + +**Reference:** `Nuth and Kääb (2011) `_. """ import geoutils as gu import numpy as np @@ -13,47 +16,46 @@ import xdem # %% -# **Example files** +# We open example files. reference_dem = xdem.DEM(xdem.examples.get_path("longyearbyen_ref_dem")) dem_to_be_aligned = xdem.DEM(xdem.examples.get_path("longyearbyen_tba_dem")) glacier_outlines = gu.Vector(xdem.examples.get_path("longyearbyen_glacier_outlines")) -# Create a stable ground mask (not glacierized) to mark "inlier data" +# We create a stable ground mask (not glacierized) to mark "inlier data". inlier_mask = ~glacier_outlines.create_mask(reference_dem) - # %% -# The DEM to be aligned (a 1990 photogrammetry-derived DEM) has some vertical and horizontal biases that we want to avoid. +# The DEM to be aligned (a 1990 photogrammetry-derived DEM) has some vertical and horizontal biases that we want to reduce. # These can be visualized by plotting a change map: diff_before = reference_dem - dem_to_be_aligned -diff_before.plot(cmap="coolwarm_r", vmin=-10, vmax=10, cbar_title="Elevation change (m)") - +diff_before.plot(cmap="RdYlBu", vmin=-10, vmax=10, cbar_title="Elevation change (m)") # %% -# Horizontal and vertical shifts can be estimated using :class:`xdem.coreg.NuthKaab`. -# First, the shifts are estimated, and then they can be applied to the data: +# Horizontal and vertical shifts can be estimated using :class:`~xdem.coreg.NuthKaab`. +# The shifts are estimated then applied to the to-be-aligned elevation data: nuth_kaab = xdem.coreg.NuthKaab() +aligned_dem = nuth_kaab.fit_and_apply(reference_dem, dem_to_be_aligned, inlier_mask) -nuth_kaab.fit(reference_dem, dem_to_be_aligned, inlier_mask) +# %% +# The shifts are stored in the affine metadata output -aligned_dem = nuth_kaab.apply(dem_to_be_aligned) +print([nuth_kaab.meta["outputs"]["affine"][s] for s in ["shift_x", "shift_y", "shift_z"]]) # %% # Then, the new difference can be plotted to validate that it improved. diff_after = reference_dem - aligned_dem -diff_after.plot(cmap="coolwarm_r", vmin=-10, vmax=10, cbar_title="Elevation change (m)") - +diff_after.plot(cmap="RdYlBu", vmin=-10, vmax=10, cbar_title="Elevation change (m)") # %% # We compare the median and NMAD to validate numerically that there was an improvement (see :ref:`robuststats-meanstd`): inliers_before = diff_before[inlier_mask] -med_before, nmad_before = np.median(inliers_before), xdem.spatialstats.nmad(inliers_before) +med_before, nmad_before = np.ma.median(inliers_before), xdem.spatialstats.nmad(inliers_before) inliers_after = diff_after[inlier_mask] -med_after, nmad_after = np.median(inliers_after), xdem.spatialstats.nmad(inliers_after) +med_after, nmad_after = np.ma.median(inliers_after), xdem.spatialstats.nmad(inliers_after) print(f"Error before: median = {med_before:.2f} - NMAD = {nmad_before:.2f} m") print(f"Error after: median = {med_after:.2f} - NMAD = {nmad_after:.2f} m") diff --git a/examples/basic/plot_spatial_error_propagation.py b/examples/basic/plot_spatial_error_propagation.py index 1b126832..e5f3153c 100644 --- a/examples/basic/plot_spatial_error_propagation.py +++ b/examples/basic/plot_spatial_error_propagation.py @@ -7,8 +7,7 @@ other operation), which is computationally intensive. Here, we rely on published formulations to perform computationally-efficient spatial propagation for the mean of elevation (or elevation differences) in an area. -**References**: `Hugonnet et al. (2022) `_, Figure S16, Equations 17–19 and -`Rolstad et al. (2009) `_, Equation 8. +**References:** `Rolstad et al. (2009) `_, `Hugonnet et al. (2022) `_. """ import geoutils as gu import matplotlib.pyplot as plt @@ -32,8 +31,8 @@ ) # %% -# We use the error map to standardize the elevation differences before variogram estimation, following Equation 12 of -# Hugonnet et al. (2022), which is more robust as it removes the variance variability due to heteroscedasticity. +# We use the error map to standardize the elevation differences before variogram estimation, which is more robust +# as it removes the variance variability due to heteroscedasticity. zscores = dh / errors emp_variogram, params_variogram_model, spatial_corr_function = xdem.spatialstats.infer_spatial_correlation_from_stable( dvalues=zscores, list_models=["Gaussian", "Spherical"], unstable_mask=glacier_outlines, random_state=42 @@ -42,7 +41,7 @@ # %% # With our estimated heteroscedasticity and spatial correlation, we can now perform the spatial propagation of errors. # We select two glaciers intersecting this elevation change map in Svalbard. The best estimation of their standard error -# is done by directly providing the shapefile, which relies on Equation 18 of Hugonnet et al. (2022). +# is done by directly providing the shapefile (Equation 18, Hugonnet et al., 2022). areas = [ glacier_outlines.ds[glacier_outlines.ds["NAME"] == "Brombreen"], glacier_outlines.ds[glacier_outlines.ds["NAME"] == "Medalsbreen"], @@ -55,8 +54,8 @@ print(f"The error (1-sigma) in mean elevation change for {glacier_name} is {stderr_gla:.2f} meters.") # %% -# When passing a numerical area value, we compute an approximation with disk shape from Equation 8 of Rolstad et al. -# (2009). This approximation is practical to visualize changes in elevation error when averaging over different area +# When passing a numerical area value, we compute an approximation with disk shape (Equation 8, Rolstad et al., 2009). +# This approximation is practical to visualize changes in elevation error when averaging over different area # sizes, but is less accurate to estimate the standard error of a certain area shape. areas = 10 ** np.linspace(1, 12) stderrs = xdem.spatialstats.spatial_error_propagation( diff --git a/examples/basic/plot_terrain_attributes.py b/examples/basic/plot_terrain_attributes.py index d0b79d3d..69bf2ea1 100644 --- a/examples/basic/plot_terrain_attributes.py +++ b/examples/basic/plot_terrain_attributes.py @@ -5,134 +5,25 @@ Terrain attributes generated from a DEM have a multitude of uses for analytic and visual purposes. Here is an example of how to generate these products. -For more information, see the :ref:`terrain-attributes` chapter and the -:ref:`sphx_glr_advanced_examples_plot_slope_methods.py` example. +For more information, see the :ref:`terrain-attributes` feature page. + +**References:** `Horn (1981) `_ (slope, aspect, hillshade), +`Zevenbergen and Thorne (1987) `_ (curvature), +`Riley et al. (1999) `_ (terrain +ruggedness index), `Jenness (2004) `_ (rugosity). """ -# sphinx_gallery_thumbnail_number = 12 +# sphinx_gallery_thumbnail_number = 1 import matplotlib.pyplot as plt import xdem # %% -# **Example data** +# We load the example data. dem = xdem.DEM(xdem.examples.get_path("longyearbyen_ref_dem")) - -def plot_attribute(attribute, cmap, label=None, vlim=None): - - add_cbar = True if label is not None else False - - fig = plt.figure(figsize=(8, 5)) - ax = fig.add_subplot(111) - - if vlim is not None: - if isinstance(vlim, (int, float)): - vlims = {"vmin": -vlim, "vmax": vlim} - elif len(vlim) == 2: - vlims = {"vmin": vlim[0], "vmax": vlim[1]} - else: - vlims = {} - - attribute.plot(ax=ax, cmap=cmap, add_cbar=add_cbar, cbar_title=label, **vlims) - - plt.xticks([]) - plt.yticks([]) - plt.tight_layout() - - plt.show() - - -# %% -# Slope -# ----- - -slope = xdem.terrain.slope(dem) - -plot_attribute(slope, "Reds", "Slope (°)") - -# %% -# Note that all functions also work with numpy array as inputs, if resolution is specified - -slope = xdem.terrain.slope(dem.data, resolution=dem.res) - -# %% -# Aspect -# ------ - -aspect = xdem.terrain.aspect(dem) - -plot_attribute(aspect, "twilight", "Aspect (°)") - -# %% -# Hillshade -# --------- - -hillshade = xdem.terrain.hillshade(dem, azimuth=315.0, altitude=45.0) - -plot_attribute(hillshade, "Greys_r") - -# %% -# Curvature -# --------- - -curvature = xdem.terrain.curvature(dem) - -plot_attribute(curvature, "RdGy_r", "Curvature (100 / m)", vlim=1) - -# %% -# Planform curvature -# ------------------ - -planform_curvature = xdem.terrain.planform_curvature(dem) - -plot_attribute(planform_curvature, "RdGy_r", "Planform curvature (100 / m)", vlim=1) - -# %% -# Profile curvature -# ----------------- -profile_curvature = xdem.terrain.profile_curvature(dem) - -plot_attribute(profile_curvature, "RdGy_r", "Profile curvature (100 / m)", vlim=1) - -# %% -# Topographic Position Index -# -------------------------- -tpi = xdem.terrain.topographic_position_index(dem) - -plot_attribute(tpi, "Spectral", "Topographic Position Index", vlim=5) - -# %% -# Terrain Ruggedness Index -# ------------------------ -tri = xdem.terrain.terrain_ruggedness_index(dem) - -plot_attribute(tri, "Purples", "Terrain Ruggedness Index") - -# %% -# Roughness -# --------- -roughness = xdem.terrain.roughness(dem) - -plot_attribute(roughness, "Oranges", "Roughness") - -# %% -# Rugosity -# -------- -rugosity = xdem.terrain.rugosity(dem) - -plot_attribute(rugosity, "YlOrRd", "Rugosity") - -# %% -# Fractal roughness -# ----------------- -fractal_roughness = xdem.terrain.fractal_roughness(dem) - -plot_attribute(fractal_roughness, "Reds", "Fractal roughness") - # %% -# Generating multiple attributes at once -# -------------------------------------- +# We generate multiple terrain attribute at once (more efficient computationally as some depend on each other). attributes = xdem.terrain.get_terrain_attribute( dem.data, diff --git a/setup.cfg b/setup.cfg index 39fd2dc8..a31d36ff 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,5 +1,5 @@ [metadata] -author = The GlacioHack Team +author = xDEM contributors name = xdem version = 0.0.20 description = Analysis of digital elevation models (DEMs) diff --git a/tests/test_coreg/test_affine.py b/tests/test_coreg/test_affine.py index 34eebe2b..9e82d556 100644 --- a/tests/test_coreg/test_affine.py +++ b/tests/test_coreg/test_affine.py @@ -167,13 +167,13 @@ def test_from_classmethods(self) -> None: # Check that the from_translation function works as expected. x_offset = 5 - coreg_obj2 = AffineCoreg.from_translation(x_off=x_offset) + coreg_obj2 = AffineCoreg.from_translations(x_off=x_offset) transformed_points2 = coreg_obj2.apply(self.points) assert np.array_equal(self.points.geometry.x.values + x_offset, transformed_points2.geometry.x.values) # Try to make a Coreg object from a nan translation (should fail). try: - AffineCoreg.from_translation(np.nan) + AffineCoreg.from_translations(np.nan) except ValueError as exception: if "non-finite values" not in str(exception): raise exception @@ -269,7 +269,7 @@ def test_coreg_translations__synthetic(self, fit_args, shifts, coreg_method) -> "coreg_method__shift", [ (coreg.NuthKaab, (9.202739, 2.735573, -1.97733)), - (coreg.DhMinimize, (10.0850892, 2.898166, -1.943001)), + (coreg.DhMinimize, (10.0850892, 2.898172, -1.943001)), (coreg.ICP, (8.73833, 1.584255, -1.943957)), ], ) # type: ignore @@ -481,7 +481,7 @@ def test_coreg_rigid__example( c = coreg_method(subsample=50000) c.fit(ref, tba, inlier_mask=inlier_mask, random_state=42) - # Check the output translations match the exact values + # Check the output translations and rotations match the exact values fit_matrix = c.meta["outputs"]["affine"]["matrix"] fit_shifts = fit_matrix[:3, 3] fit_rotations = pytransform3d.rotations.euler_from_matrix(fit_matrix[0:3, 0:3], i=0, j=1, k=2, extrinsic=True) diff --git a/tests/test_coreg/test_base.py b/tests/test_coreg/test_base.py index 0713407b..1b1401e4 100644 --- a/tests/test_coreg/test_base.py +++ b/tests/test_coreg/test_base.py @@ -126,7 +126,7 @@ def recursive_typeddict_items(typed_dict: Mapping[str, Any]) -> Iterable[str]: # Check that info() contains the mapped string for an example c = coreg.Coreg(meta={"subsample": 10000}) - assert dict_key_to_str["subsample"] in c.info() + assert dict_key_to_str["subsample"] in c.info(as_str=True) @pytest.mark.parametrize("coreg_class", [coreg.VerticalShift, coreg.ICP, coreg.NuthKaab]) # type: ignore def test_copy(self, coreg_class: Callable[[], Coreg]) -> None: @@ -948,7 +948,6 @@ def test_blockwise_coreg_large_gaps(self) -> None: ddem_post = (aligned - self.ref).data.compressed() ddem_pre = (tba - self.ref).data.compressed() assert abs(np.nanmedian(ddem_pre)) > abs(np.nanmedian(ddem_post)) - # TODO: Figure out why STD here is larger since PR #530 # assert np.nanstd(ddem_pre) > np.nanstd(ddem_post) diff --git a/tests/test_ddem.py b/tests/test_ddem.py index a5ae9f4b..e41b078f 100644 --- a/tests/test_ddem.py +++ b/tests/test_ddem.py @@ -44,7 +44,7 @@ def test_filled_data(self) -> None: assert ddem2.filled_data is None - ddem2.interpolate(method="linear") + ddem2.interpolate(method="idw") assert ddem2.fill_method is not None diff --git a/tests/test_demcollection.py b/tests/test_demcollection.py index 99797677..19bf7dd3 100644 --- a/tests/test_demcollection.py +++ b/tests/test_demcollection.py @@ -119,7 +119,7 @@ def test_ddem_interpolation(self) -> None: assert dems.ddems[0].filled_data is None # Interpolate the nans - dems.ddems[0].interpolate(method="linear") + dems.ddems[0].interpolate(method="idw") # Make sure that the filled_data is available again assert dems.ddems[0].filled_data is not None diff --git a/tests/test_spatialstats.py b/tests/test_spatialstats.py index 99ad0357..faf38d38 100644 --- a/tests/test_spatialstats.py +++ b/tests/test_spatialstats.py @@ -442,7 +442,7 @@ def test_estimate_model_heteroscedasticity_and_infer_from_stable(self) -> None: dvalues=self.diff, list_var=[self.slope, self.maximum_curv], unstable_mask=self.outlines ) - df_binning_2, err_fun_2 = xdem.spatialstats.estimate_model_heteroscedasticity( + df_binning_2, err_fun_2 = xdem.spatialstats._estimate_model_heteroscedasticity( dvalues=self.diff[~self.mask], list_var=[self.slope[~self.mask], self.maximum_curv[~self.mask]], list_var_names=["var1", "var2"], @@ -869,7 +869,7 @@ def test_estimate_model_spatial_correlation_and_infer_from_stable(self) -> None: zscores = diff_on_stable / errors # Run wrapper estimate and model function - emp_vgm_1, params_model_vgm_1, _ = xdem.spatialstats.estimate_model_spatial_correlation( + emp_vgm_1, params_model_vgm_1, _ = xdem.spatialstats._estimate_model_spatial_correlation( dvalues=zscores, list_models=["Gau", "Sph"], subsample=10, random_state=42 ) diff --git a/xdem/coreg/affine.py b/xdem/coreg/affine.py index ab8d8812..69090979 100644 --- a/xdem/coreg/affine.py +++ b/xdem/coreg/affine.py @@ -4,7 +4,7 @@ import logging import warnings -from typing import Any, Callable, Iterable, Literal, TypeVar, overload +from typing import Any, Callable, Iterable, Literal, TypeVar import xdem.coreg.base @@ -32,10 +32,12 @@ _bin_or_and_fit_nd, _get_subsample_mask_pts_rst, _preprocess_pts_rst_subsample, + _reproject_horizontal_shift_samecrs, ) from xdem.spatialstats import nmad try: + import pytransform3d.rotations import pytransform3d.transformations _HAS_P3D = True @@ -54,67 +56,6 @@ ###################################### -@overload -def _reproject_horizontal_shift_samecrs( - raster_arr: NDArrayf, - src_transform: rio.transform.Affine, - dst_transform: rio.transform.Affine = None, - *, - return_interpolator: Literal[False] = False, - resampling: Literal["nearest", "linear", "cubic", "quintic", "slinear", "pchip", "splinef2d"] = "linear", -) -> NDArrayf: - ... - - -@overload -def _reproject_horizontal_shift_samecrs( - raster_arr: NDArrayf, - src_transform: rio.transform.Affine, - dst_transform: rio.transform.Affine = None, - *, - return_interpolator: Literal[True], - resampling: Literal["nearest", "linear", "cubic", "quintic", "slinear", "pchip", "splinef2d"] = "linear", -) -> Callable[[tuple[NDArrayf, NDArrayf]], NDArrayf]: - ... - - -def _reproject_horizontal_shift_samecrs( - raster_arr: NDArrayf, - src_transform: rio.transform.Affine, - dst_transform: rio.transform.Affine = None, - return_interpolator: bool = False, - resampling: Literal["nearest", "linear", "cubic", "quintic", "slinear", "pchip", "splinef2d"] = "linear", -) -> NDArrayf | Callable[[tuple[NDArrayf, NDArrayf]], NDArrayf]: - """ - Reproject a raster only for a horizontal shift (transform update) in the same CRS. - - This function exists independently of Raster.reproject() because Rasterio has unexplained reprojection issues - that can create non-negligible sub-pixel shifts that should be crucially avoided for coregistration. - See https://github.com/rasterio/rasterio/issues/2052#issuecomment-2078732477. - - Here we use SciPy interpolation instead, modified for nodata propagation in geoutils.interp_points(). - """ - - # We are reprojecting the raster array relative to itself without changing its pixel interpretation, so we can - # force any pixel interpretation (area_or_point) without it having any influence on the result, here "Area" - if not return_interpolator: - coords_dst = _coords(transform=dst_transform, area_or_point="Area", shape=raster_arr.shape) - # If we just want the interpolator, we don't need to coordinates of destination points - else: - coords_dst = None - - output = _interp_points( - array=raster_arr, - area_or_point="Area", - transform=src_transform, - points=coords_dst, - method=resampling, - return_interpolator=return_interpolator, - ) - - return output - - def _check_inputs_bin_before_fit( bin_before_fit: bool, fit_optimizer: Callable[..., tuple[NDArrayf, Any]], @@ -669,7 +610,6 @@ def fit_func(coords_offsets: tuple[float, float]) -> np.floating[Any]: if params_fit_or_bin["fit_minimizer"] == scipy.optimize.minimize: if "method" not in kwargs.keys(): kwargs.update({"method": "Nelder-Mead"}) - kwargs.update({"options": {"xatol": 10e-6, "maxiter": 500}}) # This method has trouble when initialized with 0,0, so defaulting to 1,1 # (tip from Simon Gascoin: https://github.com/GlacioHack/xdem/pull/595#issuecomment-2387104719) init_offsets = (1, 1) @@ -828,6 +768,34 @@ def to_matrix(self) -> NDArrayf: """Convert the transform to a 4x4 transformation matrix.""" return self._to_matrix_func() + def to_translations(self) -> tuple[float, float, float]: + """ + Extract X/Y/Z translations from the affine transformation matrix. + + :return: Easting, northing and vertical translations (in georeferenced unit). + """ + + matrix = self.to_matrix() + shift_x = matrix[0, 3] + shift_y = matrix[1, 3] + shift_z = matrix[2, 3] + + return shift_x, shift_y, shift_z + + def to_rotations(self) -> tuple[float, float, float]: + """ + Extract X/Y/Z euler rotations (extrinsic convention) from the affine transformation matrix. + + Warning: This function only works for a rigid transformation (rotation and translation). + + :return: Extrinsinc Euler rotations along easting, northing and vertical directions (degrees). + """ + + matrix = self.to_matrix() + rots = pytransform3d.rotations.euler_from_matrix(matrix, i=0, j=1, k=2, extrinsic=True, strict_check=True) + rots = np.rad2deg(np.array(rots)) + return rots[0], rots[1], rots[2] + def centroid(self) -> tuple[float, float, float] | None: """Get the centroid of the coregistration, if defined.""" meta_centroid = self._meta["outputs"]["affine"].get("centroid") @@ -909,7 +877,7 @@ def from_matrix(cls, matrix: NDArrayf) -> AffineCoreg: return cls(matrix=valid_matrix) @classmethod - def from_translation(cls, x_off: float = 0.0, y_off: float = 0.0, z_off: float = 0.0) -> AffineCoreg: + def from_translations(cls, x_off: float = 0.0, y_off: float = 0.0, z_off: float = 0.0) -> AffineCoreg: """ Instantiate a generic Coreg class from a X/Y/Z translation. @@ -921,13 +889,39 @@ def from_translation(cls, x_off: float = 0.0, y_off: float = 0.0, z_off: float = :returns: An instantiated generic Coreg class. """ + # Initialize a diagonal matrix matrix = np.diag(np.ones(4, dtype=float)) + # Add the three translations (which are in the last column) matrix[0, 3] = x_off matrix[1, 3] = y_off matrix[2, 3] = z_off return cls.from_matrix(matrix) + @classmethod + def from_rotations(cls, x_rot: float = 0.0, y_rot: float = 0.0, z_rot: float = 0.0) -> AffineCoreg: + """ + Instantiate a generic Coreg class from a X/Y/Z rotation. + + :param x_rot: The rotation (degrees) to apply around the X (west-east) direction. + :param y_rot: The rotation (degrees) to apply around the Y (south-north) direction. + :param z_rot: The rotation (degrees) to apply around the Z (vertical) direction. + + :raises ValueError: If the given rotation contained invalid values. + + :returns: An instantiated generic Coreg class. + """ + + # Initialize a diagonal matrix + matrix = np.diag(np.ones(4, dtype=float)) + # Convert rotations to radians + e = np.deg2rad(np.array([x_rot, y_rot, z_rot])) + # Derive 3x3 rotation matrix, and insert in 4x4 affine matrix + rot_matrix = pytransform3d.rotations.matrix_from_euler(e, i=0, j=1, k=2, extrinsic=True) + matrix[0:3, 0:3] = rot_matrix + + return cls.from_matrix(matrix) + def _to_matrix_func(self) -> NDArrayf: # FOR DEVELOPERS: This function needs to be implemented if the `self._meta['matrix']` keyword is not None. @@ -947,8 +941,8 @@ class VerticalShift(AffineCoreg): Estimates the mean vertical offset between two elevation datasets based on a reductor function (median, mean, or any custom reductor function). - The estimated vertical shift is stored in the `self.meta` key "shift_z" (in unit of the elevation dataset inputs, - typically meters). + The estimated vertical shift is stored in the `self.meta["outputs"]["affine"]` key "shift_z" (in unit of the + elevation dataset inputs, typically meters). """ def __init__( @@ -1044,9 +1038,10 @@ class ICP(AffineCoreg): Estimates a rigid transform (rotation + translation) between two elevation datasets. - The transform is stored in the `self.meta` key "matrix", with rotation centered on the coordinates in the key - "centroid". The translation parameters are also stored individually in the keys "shift_x", "shift_y" and "shift_z" - (in georeferenced units for horizontal shifts, and unit of the elevation dataset inputs for the vertical shift). + The estimated transform is stored in the `self.meta["outputs"]["affine"]` key "matrix", with rotation centered + on the coordinates in the key "centroid". The translation parameters are also stored individually in the + keys "shift_x", "shift_y" and "shift_z" (in georeferenced units for horizontal shifts, and unit of the + elevation dataset inputs for the vertical shift). Requires 'opencv'. See opencv doc for more info: https://docs.opencv.org/master/dc/d9b/classcv_1_1ppf__match__3d_1_1ICP.html @@ -1260,9 +1255,9 @@ class NuthKaab(AffineCoreg): Estimate horizontal and vertical translations by iterative slope/aspect alignment. - The translation parameters are stored in the `self.meta` keys "shift_x", "shift_y" and "shift_z" (in georeferenced - units for horizontal shifts, and unit of the elevation dataset inputs for the vertical shift), as well as - in the "matrix" transform. + The translation parameters are stored in the `self.meta["outputs"]["affine"]` keys "shift_x", "shift_y" and + "shift_z" (in georeferenced units for horizontal shifts, and unit of the elevation dataset inputs for the + vertical shift), as well as in the "matrix" transform. """ def __init__( @@ -1403,9 +1398,9 @@ class DhMinimize(AffineCoreg): Estimates vertical and horizontal translations. - The translation parameters are stored in the `self.meta` keys "shift_x", "shift_y" and "shift_z" (in georeferenced - units for horizontal shifts, and unit of the elevation dataset inputs for the vertical shift), as well as - in the "matrix" transform. + The translation parameters are stored in the `self.meta["outputs"]["affine"]` keys "shift_x", "shift_y" and + "shift_z" (in georeferenced units for horizontal shifts, and unit of the elevation dataset inputs for the + vertical shift), as well as in the "matrix" transform. """ def __init__( diff --git a/xdem/coreg/base.py b/xdem/coreg/base.py index aa241a33..c30a0fb6 100644 --- a/xdem/coreg/base.py +++ b/xdem/coreg/base.py @@ -40,7 +40,7 @@ raster, subdivide_array, ) -from geoutils.raster.georeferencing import _bounds, _res +from geoutils.raster.georeferencing import _bounds, _coords, _res from geoutils.raster.interpolate import _interp_points from geoutils.raster.raster import _cast_pixel_interpretation, _shift_transform from tqdm import tqdm @@ -73,7 +73,7 @@ # Map each key name to a descriptor string dict_key_to_str = { "subsample": "Subsample size requested", - "random_state": "Random generator for subsampling and (if applic.) optimizer", + "random_state": "Random generator", "subsample_final": "Subsample size drawn from valid values", "fit_or_bin": "Fit, bin or bin+fit", "fit_func": "Function to fit", @@ -92,22 +92,24 @@ "tolerance": "Tolerance to reach (pixel size)", "last_iteration": "Iteration at which algorithm stopped", "all_tolerances": "Tolerances at each iteration", - "terrain_attribute": "Terrain attribute used for TerrainBias", - "angle": "Angle used for DirectionalBias", - "poly_order": "Polynomial order used for Deramp", - "best_poly_order": "Best polynomial order kept for fit", - "best_nb_sin_freq": "Best number of sinusoid frequencies kept for fit", + "terrain_attribute": "Terrain attribute used for correction", + "angle": "Angle of directional correction", + "poly_order": "Polynomial order", + "best_poly_order": "Best polynomial order", + "best_nb_sin_freq": "Best number of sinusoid frequencies", "vshift_reduc_func": "Reduction function used to remove vertical shift", "centroid": "Centroid found for affine rotation", "shift_x": "Eastward shift estimated (georeferenced unit)", "shift_y": "Northward shift estimated (georeferenced unit)", "shift_z": "Vertical shift estimated (elevation unit)", "matrix": "Affine transformation matrix estimated", + "rejection_scale": "Rejection scale", + "num_levels": "Number of levels", } ##################################### # Generic functions for preprocessing -##################################### +########################################### def _calculate_ddem_stats( @@ -1267,12 +1269,74 @@ def _apply_matrix_rst( return new_dem, transform +@overload +def _reproject_horizontal_shift_samecrs( + raster_arr: NDArrayf, + src_transform: rio.transform.Affine, + dst_transform: rio.transform.Affine = None, + *, + return_interpolator: Literal[False] = False, + resampling: Literal["nearest", "linear", "cubic", "quintic", "slinear", "pchip", "splinef2d"] = "linear", +) -> NDArrayf: + ... + + +@overload +def _reproject_horizontal_shift_samecrs( + raster_arr: NDArrayf, + src_transform: rio.transform.Affine, + dst_transform: rio.transform.Affine = None, + *, + return_interpolator: Literal[True], + resampling: Literal["nearest", "linear", "cubic", "quintic", "slinear", "pchip", "splinef2d"] = "linear", +) -> Callable[[tuple[NDArrayf, NDArrayf]], NDArrayf]: + ... + + +def _reproject_horizontal_shift_samecrs( + raster_arr: NDArrayf, + src_transform: rio.transform.Affine, + dst_transform: rio.transform.Affine = None, + return_interpolator: bool = False, + resampling: Literal["nearest", "linear", "cubic", "quintic", "slinear", "pchip", "splinef2d"] = "linear", +) -> NDArrayf | Callable[[tuple[NDArrayf, NDArrayf]], NDArrayf]: + """ + Reproject a raster only for a horizontal shift (transform update) in the same CRS. + + This function exists independently of Raster.reproject() because Rasterio has unexplained reprojection issues + that can create non-negligible sub-pixel shifts that should be crucially avoided for coregistration. + See https://github.com/rasterio/rasterio/issues/2052#issuecomment-2078732477. + + Here we use SciPy interpolation instead, modified for nodata propagation in geoutils.interp_points(). + """ + + # We are reprojecting the raster array relative to itself without changing its pixel interpretation, so we can + # force any pixel interpretation (area_or_point) without it having any influence on the result, here "Area" + if not return_interpolator: + coords_dst = _coords(transform=dst_transform, area_or_point="Area", shape=raster_arr.shape) + # If we just want the interpolator, we don't need to coordinates of destination points + else: + coords_dst = None + + output = _interp_points( + array=raster_arr, + area_or_point="Area", + transform=src_transform, + points=coords_dst, + method=resampling, + return_interpolator=return_interpolator, + ) + + return output + + @overload def apply_matrix( elev: NDArrayf, matrix: NDArrayf, invert: bool = False, centroid: tuple[float, float, float] | None = None, + resample: bool = True, resampling: Literal["nearest", "linear", "cubic", "quintic"] = "linear", transform: rio.transform.Affine = None, z_name: str = "z", @@ -1287,6 +1351,7 @@ def apply_matrix( matrix: NDArrayf, invert: bool = False, centroid: tuple[float, float, float] | None = None, + resample: bool = True, resampling: Literal["nearest", "linear", "cubic", "quintic"] = "linear", transform: rio.transform.Affine = None, z_name: str = "z", @@ -1300,6 +1365,7 @@ def apply_matrix( matrix: NDArrayf, invert: bool = False, centroid: tuple[float, float, float] | None = None, + resample: bool = True, resampling: Literal["nearest", "linear", "cubic", "quintic"] = "linear", transform: rio.transform.Affine = None, z_name: str = "z", @@ -1330,6 +1396,8 @@ def apply_matrix( :param invert: Whether to invert the transformation matrix. :param centroid: The X/Y/Z transformation centroid. Irrelevant for pure translations. Defaults to the midpoint (Z=0). + :param resample: (For translations) If set to True, will resample output on the translated grid to match the input + transform. Otherwise, only the transform will be updated and no resampling is done. :param resampling: Point interpolation method, one of 'nearest', 'linear', 'cubic', or 'quintic'. For more information, see scipy.ndimage.map_coordinates and scipy.interpolate.interpn. Default is linear. :param transform: Geotransform of the DEM, only for DEM passed as 2D array. @@ -1339,15 +1407,18 @@ def apply_matrix( :return: Affine transformed elevation point cloud or DEM. """ + # Apply matrix to elevation point cloud if isinstance(elev, gpd.GeoDataFrame): return _apply_matrix_pts(epc=elev, matrix=matrix, invert=invert, centroid=centroid, z_name=z_name) + # Or apply matrix to raster (often requires re-gridding) else: + + # First, we apply the affine matrix for the array/transform if isinstance(elev, gu.Raster): transform = elev.transform dem = elev.data.filled(np.nan) else: dem = elev - applied_dem, out_transform = _apply_matrix_rst( dem=dem, transform=transform, @@ -1357,6 +1428,15 @@ def apply_matrix( resampling=resampling, **kwargs, ) + + # Then, if resample is True, we reproject the DEM from its out_transform onto the transform + if resample: + applied_dem = _reproject_horizontal_shift_samecrs( + applied_dem, src_transform=out_transform, dst_transform=transform, resampling=resampling + ) + out_transform = transform + + # We return a raster if input was a raster if isinstance(elev, gu.Raster): applied_dem = gu.Raster.from_array(applied_dem, out_transform, elev.crs, elev.nodata) return applied_dem @@ -1635,7 +1715,15 @@ def meta(self) -> CoregDict: return self._meta - def info(self) -> None | str: + @overload + def info(self, as_str: Literal[False] = ...) -> None: + ... + + @overload + def info(self, as_str: Literal[True]) -> str: + ... + + def info(self, as_str: bool = False) -> None | str: """Summarize information about this coregistration.""" # Define max tabulation: longest name + 2 spaces @@ -1652,19 +1740,39 @@ def recursive_items(dictionary: Mapping[str, Any]) -> Iterable[tuple[str, Any]]: existing_deep_keys = [k for k, v in recursive_items(self._meta)] # Formatting function for key values, rounding up digits for numbers and returning function names - def format_coregdict_values(val: Any) -> str: + def format_coregdict_values(val: Any, tab: int) -> str: + """ + Format coregdict values for printing. + + :param val: Input value. + :param tab: Tabulation (if value is printed on multiple lines). + + :return: String representing input value. + """ - # Function to round to a certain number of digits relative to magnitude, for floating numbers - def round_to_n(x: float | np.floating[Any], n: int) -> float | np.floating[Any]: - return round(x, -int(np.floor(np.log10(x))) + (n - 1)) # type: ignore + # Function to get decimal to round to a certain number of digits relative to magnitude, for floating numbers + def dec_round_to_n(x: float | np.floating[Any], n: int) -> int: + return -int(np.floor(np.log10(np.abs(x)))) + (n - 1) - # Different formatting depending on key value type + # Different formatting to string depending on key value type if isinstance(val, (float, np.floating)): - return str(round_to_n(val, 3)) + if np.isfinite(val): + str_val = str(round(val, dec_round_to_n(val, 3))) + else: + str_val = str(val) + elif isinstance(val, np.ndarray): + min_val = np.min(val) + str_val = str(np.round(val, decimals=dec_round_to_n(min_val, 3))) elif callable(val): - return val.__name__ + str_val = val.__name__ else: - return str(val) + str_val = str(val) + + # Add tabulation if string has a return to line + if "\n" in str_val: + str_val = "\n".ljust(tab).join(str_val.split("\n")) + + return str_val # Sublevels of metadata to show sublevels = { @@ -1694,7 +1802,7 @@ def round_to_n(x: float | np.floating[Any], n: int) -> float | np.floating[Any]: if len(existing_level_keys) > 0: inputs_str += [f" {lv}\n"] inputs_str += [ - f" {dict_key_to_str[k]}:".ljust(tab) + f"{format_coregdict_values(v)}\n" + f" {dict_key_to_str[k]}:".ljust(tab) + f"{format_coregdict_values(v, tab)}\n" for k, v in existing_level_keys ] @@ -1710,7 +1818,7 @@ def round_to_n(x: float | np.floating[Any], n: int) -> float | np.floating[Any]: if len(existing_level_keys) > 0: outputs_str += [f" {lv}\n"] outputs_str += [ - f" {dict_key_to_str[k]}:".ljust(tab) + f"{format_coregdict_values(v)}\n" + f" {dict_key_to_str[k]}:".ljust(tab) + f"{format_coregdict_values(v, tab)}\n" for k, v in existing_level_keys ] elif not self._fit_called: @@ -1723,10 +1831,11 @@ def round_to_n(x: float | np.floating[Any], n: int) -> float | np.floating[Any]: final_str = header_str + inputs_str + outputs_str # Return as string or print (default) - logging.info("".join(final_str)) - if logging.getLogger().getEffectiveLevel() > logging.INFO: + if as_str: return "".join(final_str) - return None + else: + print("".join(final_str)) + return None def _get_subsample_on_valid_mask(self, valid_mask: NDArrayb) -> NDArrayb: """ @@ -2410,9 +2519,9 @@ def _apply_func(self, **kwargs: Any) -> tuple[NDArrayf | gpd.GeoDataFrame, affin try: applied_elev = self._apply_pts(**kwargs) - # If it doesn't exist, use opencv's perspectiveTransform + # If it doesn't exist, use apply_matrix() except NotImplementedCoregApply: - if self.is_affine: # This only works on it's rigid, however. + if self.is_affine: applied_elev = _apply_matrix_pts( epc=kwargs["elev"], @@ -2575,6 +2684,32 @@ def __init__(self, pipeline: list[Coreg]) -> None: def __repr__(self) -> str: return f"Pipeline: {self.pipeline}" + @overload + def info(self, as_str: Literal[False] = ...) -> None: + ... + + @overload + def info(self, as_str: Literal[True]) -> str: + ... + + def info(self, as_str: bool = False) -> None | str: + """Summarize information about this coregistration.""" + + # Get the pipeline information for each step as a string + final_str = [] + for i, step in enumerate(self.pipeline): + + final_str.append(f"Pipeline step {i}:\n" f"################\n") + step_str = step.info(as_str=True) + final_str.append(step_str) + + # Return as string or print (default) + if as_str: + return "".join(final_str) + else: + print("".join(final_str)) + return None + def copy(self: CoregType) -> CoregType: """Return an identical copy of the class.""" new_coreg = self.__new__(type(self)) diff --git a/xdem/coreg/biascorr.py b/xdem/coreg/biascorr.py index db203b5d..a51042b5 100644 --- a/xdem/coreg/biascorr.py +++ b/xdem/coreg/biascorr.py @@ -24,6 +24,8 @@ class BiasCorr(Coreg): Variables for bias-correction can include the elevation coordinates (deramping, directional biases), terrain attributes (terrain corrections), or any other user-input variable (quality metrics, land cover). + + The binning and/or fitting correction parameters are stored in the `self.meta["outputs"]["fitorbin"]`. """ def __init__( @@ -42,7 +44,7 @@ def __init__( """ Instantiate an N-dimensional bias correction using binning, fitting or both sequentially. - All "fit_" arguments apply to "fit" and "bin_and_fit", and "bin_" arguments to "bin" and "bin_and_fit". + All fit arguments apply to "fit" and "bin_and_fit", and bin arguments to "bin" and "bin_and_fit". :param fit_or_bin: Whether to fit or bin, or both. Use "fit" to correct by optimizing a function or "bin" to correct with a statistic of central tendency in defined bins, or "bin_and_fit" to perform a fit on @@ -292,6 +294,8 @@ def _apply_rst( # type: ignore class DirectionalBias(BiasCorr): """ Bias correction for directional biases, for example along- or across-track of satellite angle. + + The binning and/or fitting correction parameters are stored in the `self.meta["outputs"]["fitorbin"]`. """ def __init__( @@ -348,12 +352,6 @@ def _fit_rst_rst( # type: ignore along_track_angle=self._meta["inputs"]["specific"]["angle"], ) - # Parameters dependent on resolution cannot be derived from the rotated x coordinates, need to be passed below - if "hop_length" not in kwargs: - # The hop length will condition jump in function values, need to be larger than average resolution - average_res = (transform[0] + abs(transform[4])) / 2 - kwargs.update({"hop_length": average_res}) - super()._fit_rst_rst_and_rst_pts( ref_elev=ref_elev, tba_elev=tba_elev, @@ -435,6 +433,8 @@ class TerrainBias(BiasCorr): With elevation: often useful for nadir image DEM correction, where the focal length is slightly miscalculated. With curvature: often useful for a difference of DEMs with different effective resolution. + The binning and/or fitting correction parameters are stored in the `self.meta["outputs"]["fitorbin"]`. + DISCLAIMER: An elevation correction may introduce error when correcting non-photogrammetric biases, as generally elevation biases are interlinked with curvature biases. See Gardelle et al. (2012) (Figure 2), http://dx.doi.org/10.3189/2012jog11j175, for curvature-related biases. @@ -601,7 +601,10 @@ def _apply_rst( class Deramp(BiasCorr): """ Correct for a 2D polynomial along X/Y coordinates, for example from residual camera model deformations - (dome-like errors). + (dome-like errors) or tilts (rotational errors). + + The correction parameters are stored in the `self.meta["outputs"]["fitorbin"]` key "fit_params", that can be passed + to the associated function in key "fit_func". """ def __init__( diff --git a/xdem/coreg/workflows.py b/xdem/coreg/workflows.py index f63f138c..8c1b0349 100644 --- a/xdem/coreg/workflows.py +++ b/xdem/coreg/workflows.py @@ -57,14 +57,14 @@ def create_inlier_mask( # - Sanity check on inputs - # # Check correct input type of shp_list if not isinstance(shp_list, (list, tuple)): - raise ValueError("`shp_list` must be a list/tuple") + raise ValueError("Argument `shp_list` must be a list/tuple.") for el in shp_list: if not isinstance(el, (str, gu.Vector)): - raise ValueError("`shp_list` must be a list/tuple of strings or geoutils.Vector instance") + raise ValueError("Argument `shp_list` must be a list/tuple of strings or geoutils.Vector instance.") # Check correct input type of inout if not isinstance(inout, (list, tuple)): - raise ValueError("`inout` must be a list/tuple") + raise ValueError("Argument `inout` must be a list/tuple.") if len(shp_list) > 0: if len(inout) == 0: @@ -74,18 +74,18 @@ def create_inlier_mask( # Check that inout contains only 1 and -1 not_valid = [el for el in np.unique(inout) if ((el != 1) & (el != -1))] if len(not_valid) > 0: - raise ValueError("`inout` must contain only 1 and -1") + raise ValueError("Argument `inout` must contain only 1 and -1.") else: - raise ValueError("`inout` must be of same length as shp") + raise ValueError("Argument `inout` must be of same length as shp.") # Check slope_lim type if not isinstance(slope_lim, (list, tuple)): - raise ValueError("`slope_lim` must be a list/tuple") + raise ValueError("Argument `slope_lim` must be a list/tuple.") if len(slope_lim) != 2: - raise ValueError("`slope_lim` must contain 2 elements") + raise ValueError("Argument `slope_lim` must contain 2 elements.") for el in slope_lim: if (not isinstance(el, (int, float, np.integer, np.floating))) or (el < 0) or (el > 90): - raise ValueError("`slope_lim` must be a tuple/list of 2 elements in the range [0-90]") + raise ValueError("Argument `slope_lim` must be a tuple/list of 2 elements in the range [0-90].") # Initialize inlier_mask with no masked pixel inlier_mask = np.ones(src_dem.data.shape, dtype="bool") @@ -176,25 +176,25 @@ def dem_coregistration( """ # Check inputs if not isinstance(coreg_method, Coreg): - raise ValueError("`coreg_method` must be an xdem.coreg instance (e.g. xdem.coreg.NuthKaab())") + raise ValueError("Argument `coreg_method` must be an xdem.coreg instance (e.g. xdem.coreg.NuthKaab()).") if isinstance(ref_dem_path, str): if not isinstance(src_dem_path, str): raise ValueError( - f"`ref_dem_path` is string but `src_dem_path` has type {type(src_dem_path)}." + f"Argument `ref_dem_path` is string but `src_dem_path` has type {type(src_dem_path)}." "Both must have same type." ) elif isinstance(ref_dem_path, gu.Raster): if not isinstance(src_dem_path, gu.Raster): raise ValueError( - f"`ref_dem_path` is of Raster type but `src_dem_path` has type {type(src_dem_path)}." + f"Argument `ref_dem_path` is of Raster type but `src_dem_path` has type {type(src_dem_path)}." "Both must have same type." ) else: - raise ValueError("`ref_dem_path` must be either a string or a Raster") + raise ValueError("Argument `ref_dem_path` must be either a string or a Raster.") if grid not in ["ref", "src"]: - raise ValueError(f"`grid` must be either 'ref' or 'src' - currently set to {grid}") + raise ValueError(f"Argument `grid` must be either 'ref' or 'src' - currently set to {grid}.") # Load both DEMs logging.info("Loading and reprojecting input data") diff --git a/xdem/ddem.py b/xdem/ddem.py index 589eaec2..487fe903 100644 --- a/xdem/ddem.py +++ b/xdem/ddem.py @@ -2,7 +2,7 @@ from __future__ import annotations import warnings -from typing import Any +from typing import Any, Literal import geoutils as gu import numpy as np @@ -163,7 +163,7 @@ def from_array( def interpolate( self, - method: str = "linear", + method: Literal["idw", "local_hypsometric", "regional_hypsometric"] = "idw", reference_elevation: NDArrayf | np.ma.masked_array[Any, np.dtype[np.floating[Any]]] | xdem.DEM = None, mask: NDArrayf | xdem.DEM | gu.Vector = None, ) -> NDArrayf | None: @@ -188,8 +188,8 @@ def interpolate( f" different from 'self' ({self.data.shape})" ) - if method == "linear": - self.filled_data = xdem.volume.linear_interpolation(self.data) + if method == "idw": + self.filled_data = xdem.volume.idw_interpolation(self.data) elif method == "local_hypsometric": assert reference_elevation is not None assert mask is not None @@ -231,7 +231,7 @@ def interpolate( diff = abs(np.nanmean(interpolated_ddem - self.data)) assert diff < 0.01, (diff, self.data.mean()) - self.filled_data = xdem.volume.linear_interpolation(interpolated_ddem) + self.filled_data = xdem.volume.idw_interpolation(interpolated_ddem) elif method == "regional_hypsometric": assert reference_elevation is not None diff --git a/xdem/dem.py b/xdem/dem.py index 819cf418..7d6533d8 100644 --- a/xdem/dem.py +++ b/xdem/dem.py @@ -3,7 +3,7 @@ import pathlib import warnings -from typing import Any, Literal, overload +from typing import Any, Callable, Literal, overload import geopandas as gpd import numpy as np @@ -21,6 +21,7 @@ from xdem.spatialstats import ( infer_heteroscedasticity_from_stable, infer_spatial_correlation_from_stable, + nmad, ) from xdem.vcrs import ( _build_ccrs_from_crs_and_vcrs, @@ -110,7 +111,10 @@ def __init__( # Ensure DEM has only one band: self.bands can be None when data is not loaded through the Raster class if self.bands is not None and len(self.bands) > 1: - raise ValueError("DEM rasters should be composed of one band only") + raise ValueError( + "DEM rasters should be composed of one band only. Either use argument `bands` to specify " + "a single band on opening, or use .split_bands() on an opened raster." + ) # If the CRS in the raster metadata has a 3rd dimension, could set it as a vertical reference vcrs_from_crs = _vcrs_from_crs(CRS(self.crs)) @@ -480,54 +484,109 @@ def coregister_3d( def estimate_uncertainty( self, - other_dem: DEM, + other_elev: DEM | gpd.GeoDataFrame, stable_terrain: Mask | NDArrayb = None, + approach: Literal["H2022", "R2009", "Basic"] = "H2022", precision_of_other: Literal["finer"] | Literal["same"] = "finer", + spread_estimator: Callable[[NDArrayf], np.floating[Any]] = nmad, + variogram_estimator: Literal["matheron", "cressie", "genton", "dowd"] = "dowd", list_vars: tuple[RasterType | str, ...] = ("slope", "maximum_curvature"), - list_vario_models: str | tuple[str, ...] = ("spherical", "spherical"), + list_vario_models: str | tuple[str, ...] = ("gaussian", "spherical"), + z_name: str = "z", + random_state: int | np.random.Generator | None = None, ) -> tuple[RasterType, Variogram]: """ Estimate uncertainty of DEM. - Derives a map of per-pixel errors (based on slope and curvature by default) and a function describing the + Derives either a map of variable errors (based on slope and curvature by default) and a function describing the spatial correlation of error (between 0 and 1) with spatial lag (distance between observations). - Uses stable terrain as an error proxy and assumes a higher or similar-precision DEM is used as reference, - see Hugonnet et al. (2022). + Uses stable terrain as an error proxy and assumes a higher or similar-precision DEM is used as reference. + + See Hugonnet et al. (2022) for methodological details. - :param other_dem: Other DEM to use for estimation, either of finer or similar precision for reliable estimates. + :param other_elev: Other elevation dataset to use for estimation, either of finer or similar precision for + reliable estimates. :param stable_terrain: Mask of stable terrain to use as error proxy. + :param approach: Whether to use Hugonnet et al., 2022 (variable errors, multiple ranges of error correlation), + or Rolstad et al., 2009 (constant error, multiple ranges of error correlation), or a basic approach + (constant error, single range of error correlation). Note that all approaches use robust estimators of + variance (NMAD) and variograms (Dowd) by default, despite not being used in Rolstad et al., 2009. These + estimators can be tuned separately. :param precision_of_other: Whether finer precision (3 times more precise = 95% of estimated error will come from this DEM) or similar precision (for instance another acquisition of the same DEM). + :param spread_estimator: Estimator for statistical dispersion (e.g., standard deviation), defaults to the + normalized median absolute deviation (NMAD) for robustness. + :param variogram_estimator: Estimator for empirical variogram, defaults to Dowd for robustness and consistency + with the NMAD estimator for the spread. + :param z_name: Column name to use as elevation, only for point elevation data passed as geodataframe. :param list_vars: Variables to use to predict error variability (= elevation heteroscedasticity). Either rasters or names of a terrain attributes. Defaults to slope and maximum curvature of the DEM. :param list_vario_models: Variogram forms to model the spatial correlation of error. A list translates into - a sum of models. + a sum of models. Uses three by default for a method allowing multiple correlation range, otherwise one. :return: Uncertainty raster, Variogram of uncertainty correlation. """ - # Elevation change - dh = other_dem.reproject(self, silent=True) - self + # Summarize approach steps + approach_dict = { + "H2022": {"heterosc": True, "multi_range": True}, + "R2009": {"heterosc": False, "multi_range": True}, + "Basic": {"heterosc": False, "multi_range": False}, + } + + # Elevation change with the other DEM or elevation point cloud + if isinstance(other_elev, DEM): + dh = other_elev.reproject(self, silent=True) - self + elif isinstance(other_elev, gpd.GeoDataFrame): + other_elev = other_elev.to_crs(self.crs) + points = (other_elev.geometry.x.values, other_elev.geometry.y.values) + dh = other_elev[z_name].values - self.interp_points(points) + stable_terrain = stable_terrain + else: + raise TypeError("Other elevation should be a DEM or elevation point cloud object.") # If the precision of the other DEM is the same, divide the dh values by sqrt(2) # See Equation 7 and 8 of Hugonnet et al. (2022) if precision_of_other == "same": dh /= np.sqrt(2) - # Derive terrain attributes of DEM if string are passed in the list of variables - list_var_rast = [] - for var in list_vars: - if isinstance(var, str): - list_var_rast.append(getattr(terrain, var)(self)) - else: - list_var_rast.append(var) + # If approach allows heteroscedasticity, derive a map of errors + if approach_dict[approach]["heterosc"]: + # Derive terrain attributes of DEM if string are passed in the list of variables + list_var_rast = [] + for var in list_vars: + if isinstance(var, str): + list_var_rast.append(getattr(terrain, var)(self)) + else: + list_var_rast.append(var) + + # Estimate variable error from these variables + sig_dh = infer_heteroscedasticity_from_stable( + dvalues=dh, list_var=list_var_rast, spread_statistic=spread_estimator, stable_mask=stable_terrain + )[0] + # Otherwise, return a constant error raster + else: + sig_dh = self.copy(new_array=spread_estimator(dh[stable_terrain]) * np.ones(self.shape)) - # Estimate per-pixel uncertainty - sig_dh = infer_heteroscedasticity_from_stable(dvalues=dh, list_var=list_var_rast, stable_mask=stable_terrain)[0] + # If the approach does not allow multiple ranges of spatial correlation + if not approach_dict[approach]["multi_range"]: + if not isinstance(list_vario_models, str) and len(list_vario_models) > 1: + warnings.warn( + "Several variogram models passed but this approach uses a single range," + "keeping only the first model.", + category=UserWarning, + ) + list_vario_models = list_vario_models[0] - # Estimate spatial correlation + # Otherwise keep all ranges corr_sig = infer_spatial_correlation_from_stable( - dvalues=dh, list_models=list(list_vario_models), stable_mask=stable_terrain, errors=sig_dh + dvalues=dh, + list_models=list(list_vario_models), + stable_mask=stable_terrain, + errors=sig_dh, + estimator=variogram_estimator, + random_state=random_state, )[2] + return sig_dh, corr_sig diff --git a/xdem/demcollection.py b/xdem/demcollection.py index 0ec72181..52cd1681 100644 --- a/xdem/demcollection.py +++ b/xdem/demcollection.py @@ -36,7 +36,9 @@ def __init__( if timestamps is None: timestamp_attributes = [dem.datetime for dem in dems] if any(stamp is None for stamp in timestamp_attributes): - raise ValueError("'timestamps' not provided and the given DEMs do not all have datetime attributes") + raise ValueError( + "Argument `timestamps` not provided and the given DEMs do not all have datetime " "attributes" + ) timestamps = timestamp_attributes @@ -183,7 +185,7 @@ def get_dh_series( :returns: A dataframe of dH values and respective areas with an Interval[Timestamp] index. """ if len(self.ddems) == 0: - raise ValueError("dDEMs have not yet been calculated") + raise ValueError("dDEMs have not yet been calculated.") dh_values = pd.DataFrame(columns=["dh", "area"], dtype=float) for _, ddem in enumerate(self.ddems): @@ -249,7 +251,7 @@ def get_cumulative_series( # Get the dV series (where all indices are: "year to reference_year") d_series = self.get_dv_series(mask=mask, outlines_filter=outlines_filter, nans_ok=nans_ok) else: - raise ValueError("Invalid argument: '{dh=}'. Choices: ['dh', 'dv']") + raise ValueError("Invalid argument: '{dh=}'. Choices: ['dh', 'dv'].") # Simplify the index to just "year" (implicitly still the same as above) cumulative_dh = pd.Series(dtype=d_series.dtype) diff --git a/xdem/examples.py b/xdem/examples.py index bb4d58d1..153c19a3 100644 --- a/xdem/examples.py +++ b/xdem/examples.py @@ -63,7 +63,7 @@ def download_longyearbyen_examples(overwrite: bool = False) -> None: with open(tar_path, "wb") as outfile: outfile.write(response.read()) else: - raise ValueError(f"Longyearbyen data fetch gave non-200 response: {response.status_code}") + raise ValueError(f"Longyearbyen data fetch gave non-200 response: {response.status_code}.") # Extract the tarball with tarfile.open(tar_path) as tar: diff --git a/xdem/filters.py b/xdem/filters.py index cdf2a921..9cc8c994 100644 --- a/xdem/filters.py +++ b/xdem/filters.py @@ -29,7 +29,7 @@ def gaussian_filter_scipy(array: NDArrayf, sigma: float) -> NDArrayf: """ # Check that array dimension is 2 or 3 if np.ndim(array) not in [2, 3]: - raise ValueError(f"Invalid array shape given: {array.shape}. Expected 2D or 3D array") + raise ValueError(f"Invalid array shape given: {array.shape}. Expected 2D or 3D array.") # In case array does not contain NaNs, use scipy's gaussian filter directly if np.count_nonzero(np.isnan(array)) == 0: @@ -71,7 +71,7 @@ def gaussian_filter_cv(array: NDArrayf, sigma: float) -> NDArrayf: :returns: the filtered array (same shape as input) """ if not _has_cv2: - raise ValueError("Optional dependency needed. Install 'opencv'") + raise ValueError("Optional dependency needed. Install 'opencv'.") # Check that array dimension is 2, or can be squeezed to 2D orig_shape = array.shape @@ -81,9 +81,9 @@ def gaussian_filter_cv(array: NDArrayf, sigma: float) -> NDArrayf: if orig_shape[0] == 1: array = array.squeeze() else: - raise NotImplementedError("Case of array of dimension 3 not implemented") + raise NotImplementedError("Case of array of dimension 3 not implemented.") else: - raise ValueError(f"Invalid array shape given: {orig_shape}. Expected 2D or 3D array") + raise ValueError(f"Invalid array shape given: {orig_shape}. Expected 2D or 3D array.") # In case array does not contain NaNs, use OpenCV's gaussian filter directly # With kernel size (0, 0), i.e. set to default, and borderType=BORDER_REFLECT, the output is equivalent to scipy diff --git a/xdem/fit.py b/xdem/fit.py index 7162f3a5..c309120c 100644 --- a/xdem/fit.py +++ b/xdem/fit.py @@ -357,9 +357,9 @@ def robust_norder_polynomial_fit( # Raise errors for input string parameters if not isinstance(estimator_name, str) or estimator_name not in ["Linear", "Theil-Sen", "RANSAC", "Huber"]: - raise ValueError('Attribute estimator must be one of "Linear", "Theil-Sen", "RANSAC" or "Huber".') + raise ValueError('Attribute `estimator` must be one of "Linear", "Theil-Sen", "RANSAC" or "Huber".') if not isinstance(linear_pkg, str) or linear_pkg not in ["sklearn", "scipy"]: - raise ValueError('Attribute linear_pkg must be one of "scipy" or "sklearn".') + raise ValueError('Attribute `linear_pkg` must be one of "scipy" or "sklearn".') # Extract xdata from iterable if len(xdata) == 1: @@ -400,7 +400,7 @@ def robust_norder_polynomial_fit( else: # Otherwise, we use sklearn if not _has_sklearn: - raise ValueError("Optional dependency needed. Install 'scikit-learn'") + raise ValueError("Optional dependency needed. Install 'scikit-learn'.") # Define the polynomial model to insert in the pipeline model = PolynomialFeatures(degree=deg) @@ -492,9 +492,13 @@ def wrapper_cost_sumofsin(p: NDArrayf, x: NDArrayf, y: NDArrayf) -> float: return _cost_sumofsin(x, y, cost_func, *p) # If no significant resolution is provided, assume that it is the mean difference between sampled X values + x_res = np.mean(np.diff(np.sort(xdata))) + + # The hop length will condition jump in function values, needs of magnitude slightly lower than the signal if hop_length is None: - x_res = np.mean(np.diff(np.sort(xdata))) - hop_length = x_res + hop = float(np.percentile(ydata, 90) - np.percentile(ydata, 10)) + else: + hop = hop_length # Loop on all frequencies costs = np.empty(max_nb_frequency) @@ -515,7 +519,7 @@ def wrapper_cost_sumofsin(p: NDArrayf, x: NDArrayf, y: NDArrayf) -> float: ub_phase = 2 * np.pi # For the wavelength: from the resolution and coordinate extent # (we don't want the lower bound to be zero, to avoid divisions by zero) - lb_wavelength = hop_length / 5 + lb_wavelength = x_res / 5 ub_wavelength = xdata.max() - xdata.min() b = [] @@ -535,12 +539,12 @@ def wrapper_cost_sumofsin(p: NDArrayf, x: NDArrayf, y: NDArrayf) -> float: logging.debug(ub) # Minimize the globalization with a larger number of points - minimizer_kwargs = dict(args=(xdata, ydata), method="L-BFGS-B", bounds=scipy_bounds) + minimizer_kwargs = dict(args=(xdata, ydata), bounds=scipy_bounds) myresults = scipy.optimize.basinhopping( wrapper_cost_sumofsin, p0, disp=logging.getLogger().getEffectiveLevel() < logging.WARNING, - T=hop_length * 50, + T=hop, minimizer_kwargs=minimizer_kwargs, seed=random_state, **kwargs, diff --git a/xdem/misc.py b/xdem/misc.py index a7f38c0b..5d5c96fc 100644 --- a/xdem/misc.py +++ b/xdem/misc.py @@ -51,7 +51,7 @@ def generate_random_field( rng = np.random.default_rng(random_state) if not _has_cv2: - raise ValueError("Optional dependency needed. Install 'opencv'") + raise ValueError("Optional dependency needed. Install 'opencv'.") field = cv2.resize( cv2.GaussianBlur( @@ -195,7 +195,7 @@ def diff_environment_yml( """ if not _has_yaml: - raise ValueError("Test dependency needed. Install 'pyyaml'") + raise ValueError("Test dependency needed. Install 'pyyaml'.") if not input_dict: # Load the yml as dictionaries diff --git a/xdem/spatialstats.py b/xdem/spatialstats.py index 5cc4d42d..1898fb62 100644 --- a/xdem/spatialstats.py +++ b/xdem/spatialstats.py @@ -543,7 +543,7 @@ def error_fun(*args: tuple[ArrayLike, ...]) -> NDArrayf: return zscores, error_fun -def estimate_model_heteroscedasticity( +def _estimate_model_heteroscedasticity( dvalues: NDArrayf, list_var: list[NDArrayf], list_var_names: list[str], @@ -830,7 +830,7 @@ def infer_heteroscedasticity_from_stable( list_var_stable_arr = list_all_arr[1:] # Estimate and model the heteroscedasticity using only stable terrain - df, fun = estimate_model_heteroscedasticity( + df, fun = _estimate_model_heteroscedasticity( dvalues=dvalues_stable_arr, list_var=list_var_stable_arr, list_var_names=list_var_names, @@ -1772,7 +1772,7 @@ def variogram_sum(h: float, *args: list[float]) -> float: return variogram_sum_fit, df_params -def estimate_model_spatial_correlation( +def _estimate_model_spatial_correlation( dvalues: NDArrayf | RasterType, list_models: list[str | Callable[[NDArrayf, float, float], NDArrayf]], estimator: str = "dowd", @@ -1914,7 +1914,7 @@ def infer_spatial_correlation_from_stable( dvalues_stable_arr /= errors_arr # Estimate and model spatial correlations - empirical_variogram, params_variogram_model, spatial_correlation_func = estimate_model_spatial_correlation( + empirical_variogram, params_variogram_model, spatial_correlation_func = _estimate_model_spatial_correlation( dvalues=dvalues_stable_arr, list_models=list_models, estimator=estimator, diff --git a/xdem/terrain.py b/xdem/terrain.py index 88cb362f..57f5057c 100644 --- a/xdem/terrain.py +++ b/xdem/terrain.py @@ -286,15 +286,15 @@ def get_quadric_coefficients( if len(dem_arr.shape) != 2: raise ValueError( f"Invalid input array shape: {dem.shape}, parsed into {dem_arr.shape}. " - "Expected 2D array or 3D array of shape (1, row, col)" + "Expected 2D array or 3D array of shape (1, row, col)." ) if any(dim < 3 for dim in dem_arr.shape): - raise ValueError(f"DEM (shape: {dem.shape}) is too small. Smallest supported shape is (3, 3)") + raise ValueError(f"DEM (shape: {dem.shape}) is too small. Smallest supported shape is (3, 3).") # Resolution is in other tools accepted as a tuple. Here, it must be just one number, so it's best to sanity check. if isinstance(resolution, Sized): - raise ValueError("Resolution must be the same for X and Y directions") + raise ValueError("Resolution must be the same for X and Y directions.") allowed_fill_methods = ["median", "mean", "none"] allowed_edge_methods = ["nearest", "wrap", "none"] @@ -302,7 +302,7 @@ def get_quadric_coefficients( [fill_method, edge_method], ["fill", "edge"], (allowed_fill_methods, allowed_edge_methods) ): if value.lower() not in allowed: - raise ValueError(f"Invalid {name} method: '{value}'. Choices: {allowed}") + raise ValueError(f"Invalid {name} method: '{value}'. Choices: {allowed}.") # Try to run the numba JIT code. It should never fail at this point, so if it does, it should be reported! try: @@ -505,7 +505,7 @@ def get_windowed_indexes( http://download.osgeo.org/qgis/doc/reference-docs/Terrain_Ruggedness_Index.pdf, for topography and from Wilson et al. (2007), http://dx.doi.org/10.1080/01490410701295962, for bathymetry. - Topographic Position Index from Weiss (2001), http://www.jennessent.com/downloads/TPI-poster-TNC_18x22.pdf. - - Roughness from Dartnell (2000), http://dx.doi.org/10.14358/PERS.70.9.1081. + - Roughness from Dartnell (2000), thesis referenced in Wilson et al. (2007) above. - Fractal roughness from Taud et Parrot (2005), https://doi.org/10.4000/geomorphologie.622. Nearly all are also referenced in Wilson et al. (2007). @@ -687,7 +687,7 @@ def get_terrain_attribute( - Terrain Ruggedness Index (topography) from Riley et al. (1999), http://download.osgeo.org/qgis/doc/reference-docs/Terrain_Ruggedness_Index.pdf. - Terrain Ruggedness Index (bathymetry) from Wilson et al. (2007), http://dx.doi.org/10.1080/01490410701295962. - - Roughness from Dartnell (2000), http://dx.doi.org/10.14358/PERS.70.9.1081. + - Roughness from Dartnell (2000), thesis referenced in Wilson et al. (2007) above. - Rugosity from Jenness (2004), https://doi.org/10.2193/0091-7648(2004)032[0829:CLSAFD]2.0.CO;2. - Fractal roughness from Taud et Parrot (2005), https://doi.org/10.4000/geomorphologie.622. @@ -1443,7 +1443,7 @@ def roughness(dem: NDArrayf | MArrayf | RasterType, window_size: int = 3) -> NDA Calculates the roughness, the maximum difference between neighbouring pixels, for any window size. Output is in the unit of the DEM (typically meters). - Based on: Dartnell (2000), http://dx.doi.org/10.14358/PERS.70.9.1081. + Based on: Dartnell (2000), https://environment.sfsu.edu/node/11292. :param dem: The DEM to calculate the roughness from. :param window_size: The size of the window for deriving the metric. diff --git a/xdem/volume.py b/xdem/volume.py index 82f9429e..65d09447 100644 --- a/xdem/volume.py +++ b/xdem/volume.py @@ -78,7 +78,7 @@ def hypsometric_binning( elif kind == "custom": zbins = bins # type: ignore else: - raise ValueError(f"Invalid bin kind: {kind}. Choices: ['fixed', 'count', 'quantile', 'custom']") + raise ValueError(f"Invalid bin kind: {kind}. Choices: ['fixed', 'count', 'quantile', 'custom'].") # Generate bins and get bin indices from the mean DEM indices = np.digitize(ref_dem, bins=zbins) @@ -249,7 +249,9 @@ def calculate_hypsometry_area( assert not np.any(np.isnan(ref_dem)), "The given reference DEM has NaNs. No NaNs are allowed to calculate area!" if timeframe not in ["reference", "nonreference", "mean"]: - raise ValueError(f"Argument 'timeframe={timeframe}' is invalid. Choices: ['reference', 'nonreference', 'mean']") + raise ValueError( + f"Argument 'timeframe={timeframe}' is invalid. Choices: ['reference', 'nonreference', 'mean']." + ) if isinstance(ddem_bins, pd.DataFrame): ddem_bins = ddem_bins["value"] @@ -284,7 +286,7 @@ def calculate_hypsometry_area( return output -def linear_interpolation( +def idw_interpolation( array: NDArrayf | MArrayf, max_search_distance: int = 10, extrapolate: bool = False, @@ -302,7 +304,7 @@ def linear_interpolation( :returns: A filled array with no NaNs """ if not _has_cv2: - raise ValueError("Optional dependency needed. Install 'opencv'") + raise ValueError("Optional dependency needed. Install 'opencv'.") # Create a mask for where nans exist nan_mask = get_mask_from_array(array) @@ -530,7 +532,7 @@ def local_hypsometric_interpolation( ddem_difference[idealized_ddem == nodata] = np.nan # Spatially interpolate the difference between these two products. - interpolated_ddem_diff = linear_interpolation(np.where(ddem_mask, np.nan, ddem_difference)) + interpolated_ddem_diff = idw_interpolation(np.where(ddem_mask, np.nan, ddem_difference)) interpolated_ddem_diff[np.isnan(interpolated_ddem_diff)] = 0 # Correct the idealized dDEM with the difference to the original dDEM.