From 3cf191fdcbd3abf027ea52676c6790a2aa0ff15d Mon Sep 17 00:00:00 2001 From: augustes Date: Thu, 21 Mar 2024 15:17:23 +0100 Subject: [PATCH 01/53] 1032 merge the first two tutorials and simplify (#1076) * copy previous getting started * merged linear gaussian 0 and 1 * merged added docs and log prob and new pair plot example * work in jans comment, restructure next steps * add tutorial instruction landing page * added separation users / devs and links to all notebooks * replace one line example by multi line code example * fix comma * fix space, fix simulation-based science wording --------- Co-authored-by: augustes --- README.md | 9 +- tutorials/00_getting_started_flexible.ipynb | 436 ++++++++++++++++++++ tutorials/README.md | 167 ++++++++ 3 files changed, 609 insertions(+), 3 deletions(-) create mode 100644 tutorials/00_getting_started_flexible.ipynb create mode 100644 tutorials/README.md diff --git a/README.md b/README.md index 0ce14cb47..3f580aff3 100644 --- a/README.md +++ b/README.md @@ -16,12 +16,15 @@ The package implements a variety of inference algorithms, including _amortized_ Amortized methods return a posterior that can be applied to many different observations without retraining; sequential methods focus the inference on one particular observation to be more simulation-efficient. See below for an overview of implemented methods. -`sbi` offers a simple interface for one-line posterior inference: +`sbi` offers a simple interface for posterior inference in a few lines of code ```python -from sbi.inference import infer +from sbi.inference import SNPE # import your simulator, define your prior over the parameters -parameter_posterior = infer(simulator, prior, method='SNPE', num_simulations=100) +# sample parameters theta and observations x +inference = SNPE(prior=prior) +_ = inference.append_simulations(theta, x).train() +posterior = inference.build_posterior() ``` ## Installation diff --git a/tutorials/00_getting_started_flexible.ipynb b/tutorials/00_getting_started_flexible.ipynb new file mode 100644 index 000000000..562889929 --- /dev/null +++ b/tutorials/00_getting_started_flexible.ipynb @@ -0,0 +1,436 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Getting started with `sbi`" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note, you can find the original version of this notebook at [https://github.com/sbi-dev/sbi/blob/main/tutorials/00_getting_started_flexible.ipynb](https://github.com/sbi-dev/sbi/blob/main/tutorials/00_getting_started_flexible.ipynb) in the `sbi` repository." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`sbi` provides a simple interface to run state-of-the-art algorithms for simulation-based inference.\n", + "\n", + "**The overall goal of simulation-based inference is to algorithmically identify model parameters which are consistent with data.**\n", + "\n", + "In this tutorial we demonstrate how to get started with the `sbi` toolbox and how to perform parameter inference on a simple model. \n", + "\n", + "Each of the implemented inference methods takes three inputs: \n", + "1. A candidate (mechanistic) model - _the simulator_\n", + "2. prior knowledge or constraints on model parameters - _the prior_\n", + "3. observational data (or summary statistics thereof) - _the observations_\n", + "\n", + "\n", + "If you are new to simulation-based inference, please first read the information in the tutorial [README](README.md) or the [website](https://sbi-dev.github.io/sbi/) to familiarise with the motivation and relevant terms." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "import torch\n", + "\n", + "from sbi import analysis as analysis\n", + "from sbi import utils as utils\n", + "from sbi.inference import SNPE, simulate_for_sbi\n", + "from sbi.utils.user_input_checks import (\n", + " check_sbi_inputs,\n", + " process_prior,\n", + " process_simulator,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Parameter inference in a linear Gaussian example\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For this illustrative example, we consider a model _simulator_, that takes in 3 parameters ($\\theta$). For simplicity, the _simulator_ outputs simulations of the same dimensionality and just adds 1.0 and some Gaussian noise to the parameter set. \n", + "\n", + "> Note: This is where you would specify your model _simulator_ and with its parameters. \n", + "\n", + "For the 3-dimensional parameter space we consider a uniform _prior_ between [-2,2].\n", + "\n", + "> Note: This is where you would incorporate prior knowlegde about the parameters you want to infer, e.g., ranges known from literature. \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "num_dim = 3\n", + "prior = utils.BoxUniform(low=-2 * torch.ones(num_dim), high=2 * torch.ones(num_dim))\n", + "\n", + "def simulator(theta):\n", + " return theta + 1.0 + torch.randn_like(theta) * 0.1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We have to ensure that your _simulator_ and _prior_ adhere to the requirements of `sbi` such as returning `torch.Tensor`s in a standardised shape. \n", + "\n", + "You can do so with the `process_simulator()` and `process_prior()` functions, which prepare them appropriately. Finally, you can call `check_sbi_input()` to make sure they are consistent which each other." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "# Check prior, return PyTorch prior.\n", + "prior, num_parameters, prior_returns_numpy = process_prior(prior)\n", + "\n", + "# Check simulator, returns PyTorch simulator able to simulate batches.\n", + "simulator = process_simulator(simulator, prior, prior_returns_numpy)\n", + "\n", + "# Consistency check after making ready for sbi.\n", + "check_sbi_inputs(simulator, prior)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we instantiate the inference object. Here, to neural perform posterior estimation (NPE):" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> Note: Single round sequential NPE which we call via SNPE corresponds to NPE. \n", + "\n", + "> Note: This is where you could specify an alternative inference object such as (S)NRE for ratio estimation or (S)NLE for likelihood estimation. Here, you can see [all implemented methods.](16_implemented_methods.ipynb)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "inference = SNPE(prior=prior)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we need simulations or more specifically pairs of paramters $\\theta$ which we sample from the _prior_ and correpsonding simulations $x = \\mathrm{simulator} (\\theta)$. The `sbi` helper function called `simulate_for_sbi` allows to parallelize your code with `joblib`.\n", + "\n", + " > Note: You might already have your own parameter, simulation pairs which were generated elsewhere (e.g., on a compute cluster), then you would add them here. \n" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "297cd0c1931746e3aa596c0fd1c3e0e4", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Running 2000 simulations.: 0%| | 0/2000 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "samples = posterior.sample((10000,), x=x_obs)\n", + "_ = analysis.pairplot(samples, limits=[[-2, 2], [-2, 2], [-2, 2]], figsize=(6, 6),labels=[r\"$\\theta_1$\", r\"$\\theta_2$\", r\"$\\theta_3$\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Assessing the posterior for a known $\\theta, x$ - pair " + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [], + "source": [ + "# generate a true theta and an observation x pair\n", + "theta_true = prior.sample((1,))\n", + "x_true = simulator(theta_true)\n", + "# randomly samle a different set of parameters theta\n", + "theta_diff = prior.sample((1,))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can assess, if the interred distirbutions over the parameters match the parameters we used to generate our test sample." + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "bab25640d11f44fa889df5a7b4d04c8e", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Drawing 10000 posterior samples: 0%| | 0/10000 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "samples = posterior.sample((10000,), x=x_true)\n", + "_ = analysis.pairplot(samples, points=theta_true, limits=[[-2, 2], [-2, 2], [-2, 2]], figsize=(6, 6), labels=[r\"$\\theta_1$\", r\"$\\theta_2$\", r\"$\\theta_3$\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The log-probability should ideally indicate that the true parameters are more likely given the correspinding observation than the different set of parameters. \n", + "\n", + "We can further assess the range of log probabilities of the samples from the posterior." + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "high for true theta : tensor([3.3860])\n", + "low for different theta : tensor([-82.1151])\n", + "range of posterior samples: min: tensor(-7.3333) max : tensor(3.9999)\n" + ] + } + ], + "source": [ + "log_probability_true_theta = posterior.log_prob(theta_true, x=x_true)\n", + "log_probability_diff_theta = posterior.log_prob(theta_diff, x=x_true)\n", + "log_probability_samples = posterior.log_prob(samples, x=x_true)\n", + "\n", + "print( r'high for true theta :', log_probability_true_theta)\n", + "print( r'low for different theta :', log_probability_diff_theta)\n", + "print( r'range of posterior samples: min:', torch.min(log_probability_samples),' max :', torch.max(log_probability_samples))\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Next steps\n", + "\n", + "For `sbi` _contributers_ we recommend directly heading over to [Inferring parameters for multiple observations ](01_gaussian_amortized.ipynb) which introduces the concept of amortization. \n", + "\n", + "\n", + "For _users_ and `sbi` beginners, we recommend going through [the example for a scientific simulator from neuroscience](../examples/00_HH_simulator.ipynb) to see a scientific use case.\n", + "\n", + "Alternatively, also head over to [Inferring parameters for multiple observations ](01_gaussian_amortized.ipynb) which introduces the concept of amortization. " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.18" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/tutorials/README.md b/tutorials/README.md new file mode 100644 index 000000000..754a1e028 --- /dev/null +++ b/tutorials/README.md @@ -0,0 +1,167 @@ +# Tutorials for using the `sbi` toolbox + +These `sbi` tutorials are aimed at two sepatate groups +1. _users_, e.g., domain scientists that aim to get an introduction to the method to then apply it to their (mechanistic) models +2. _contributers_ who develop methods and/or plan to contribute to the `sbi` toolbox + +Before running the notebooks, follow our instructions to [install sbi](../README.md). +The numbers of the notebooks are not informative of the order, please follow this structure depending on which group you identify with. + +## I want to start applying `sbi` (_user_) +Before going through the tutorial notebooks, make sure to read through the **Overview, Motivation and Approach** below. + +- [Getting started](00_getting_started_flexible.ipynb) introduces the `sbi` package and its core functionality. +- [Inferring parameters for multiple observations](01_gaussian_amortized.ipynb) introduces the concept of amortization, i.e., that we do not need to retrain our inference procedure for different observations. +- [The example for a scientific simulator from neuroscience (Hodgkin-Huxley)](../examples/00_HH_simulator.ipynb), show cases `sbi` applied to a scientific use cases building on the previous two examples. +- [Inferring parameters for a single observation ](03_multiround_inference.ipynb) introduces the concept of multi round inference for a single observation to be more sampling efficient. + +[All implemented methods](16_implemented_methods.ipynb) provides an overview of the implemented inference methods and how to call them. + +Once you have familiarised yourself with the methods and identified how to apply SBI to your use case, ensure you work through the **Diagnostics** tutorials linked below, to identify failure cases and assess the quality of your inference. + + +## I develop methods for `sbi` (_contributer_) + +### Introduction +- [Getting started](00_getting_started_flexible.ipynb) introduces the `sbi` package and its core functionality. +- [Inferring parameters for multiple observations ](01_gaussian_amortized.ipynb)introduces the concept of amortization. +- [All implemented methods](16_implemented_methods.ipynb) provides an overview of the implemented inference methods and how to call them. + +### Advanced: +- [Multi-round inference](03_multiround_inference.ipynb) +- [Sampling algorithms in sbi](11_sampler_interface.ipynb) +- [Custom density estimators](04_density_estimators.ipynb) +- [Learning summary statistics](05_embedding_net.ipynb) +- [SBI with trial-based data](14_iid_data_and_permutation_invariant_embeddings.ipynb) +- [Handling invalid simulations](08_restriction_estimator.ipynb) +- [Crafting summary statistics](10_crafting_summary_statistics.ipynb) + +### Diagnostics: +- [Posterior predictive checks](12_diagnostics_posterior_predictive_check.ipynb) +- [Simulation-based calibration](13_diagnostics_simulation_based_calibration.ipynb) +- [Density plots and MCMC diagnostics with ArviZ](15_mcmc_diagnostics_with_arviz.ipynb) + +### Analysis: +- [Conditional distributions](07_conditional_distributions.ipynb) +- [Posterior sensitivity analysis](09_sensitivity_analysis.ipynb) +### Examples: +- [Hodgkin-Huxley example](../examples/00_HH_simulator.ipynb) +- [Decision making model](../examples/01_decision_making_model.ipynb) + +Please first read our [contributer guide](../CONTRIBUTING.md) and our [code of conduct](../CODE_OF_CONDUCT.md). + + + + +## Overview + + +`sbi` lets you choose from a variety of _amortized_ and _sequential_ SBI methods: + +Amortized methods return a posterior that can be applied to many different observations without retraining, +whereas sequential methods focus the inference on one particular observation to be more simulation-efficient. +For an overview of implemented methods see below, or checkout our [GitHub page](https://github.com/mackelab/sbi). + +- To learn about the general motivation behind simulation-based inference, and the + inference methods included in `sbi`, read on below. + +- For example applications to canonical problems in neuroscience, browse the recent + research article [Training deep neural density estimators to identify mechanistic models of neural dynamics](https://doi.org/10.7554/eLife.56261). + + + +## Motivation and approach + +Many areas of science and engineering make extensive use of complex, stochastic, +numerical simulations to describe the structure and dynamics of the processes being +investigated. + +A key challenge in simulation models for science, is constraining the parameters of these models, which are intepretable quantities, with observational data. Bayesian +inference provides a general and powerful framework to invert the simulators, i.e. +describe the parameters which are consistent both with empirical data and prior +knowledge. + +In the case of simulators, a key quantity required for statistical inference, the +likelihood of observed data given parameters, $\mathcal{L}(\theta) = p(x_o|\theta)$, is +typically intractable, rendering conventional statistical approaches inapplicable. + +`sbi` implements powerful machine-learning methods that address this problem. Roughly, +these algorithms can be categorized as: + +- Neural Posterior Estimation (amortized `NPE` and sequential `SNPE`), +- Neural Likelihood Estimation (`(S)NLE`), and +- Neural Ratio Estimation (`(S)NRE`). + +Depending on the characteristics of the problem, e.g. the dimensionalities of the +parameter space and the observation space, one of the methods will be more suitable. + +![](./static/goal.png) + +**Goal: Algorithmically identify mechanistic models which are consistent with data.** + +Each of the methods above needs three inputs: A candidate mechanistic model, prior +knowledge or constraints on model parameters, and observational data (or summary statistics +thereof). + +The methods then proceed by + +1. sampling parameters from the prior followed by simulating synthetic data from + these parameters, +2. learning the (probabilistic) association between data (or + data features) and underlying parameters, i.e. to learn statistical inference from + simulated data. The way in which this association is learned differs between the + above methods, but all use deep neural networks. +3. This learned neural network is then applied to empirical data to derive the full + space of parameters consistent with the data and the prior, i.e. the posterior + distribution. High posterior probability is assigned to parameters which are + consistent with both the data and the prior, low probability to inconsistent + parameters. While SNPE directly learns the posterior distribution, SNLE and SNRE need + an extra MCMC sampling step to construct a posterior. +4. If needed, an initial estimate of the posterior can be used to adaptively generate + additional informative simulations. + +## Publications + +See [Cranmer, Brehmer, Louppe (2020)](https://doi.org/10.1073/pnas.1912789117) for a recent +review on simulation-based inference. + +The following papers offer additional details on the inference methods implemented in `sbi`. +You can find a tutorial on how to run each of these methods [here](https://sbi-dev.github.io/sbi/tutorial/16_implemented_methods/). + +### Posterior estimation (`(S)NPE`) + +- **Fast ε-free Inference of Simulation Models with Bayesian Conditional Density Estimation**
by Papamakarios & Murray (NeurIPS 2016)
[[Paper]](https://papers.nips.cc/paper/6084-fast-free-inference-of-simulation-models-with-bayesian-conditional-density-estimation.pdf) [[BibTeX]](https://papers.nips.cc/paper/6084-fast-free-inference-of-simulation-models-with-bayesian-conditional-density-estimation/bibtex) + +- **Flexible statistical inference for mechanistic models of neural dynamics**
by Lueckmann, Goncalves, Bassetto, Öcal, Nonnenmacher & Macke (NeurIPS 2017)
[[PDF]](https://papers.nips.cc/paper/6728-flexible-statistical-inference-for-mechanistic-models-of-neural-dynamics.pdf) [[BibTeX]](https://papers.nips.cc/paper/6728-flexible-statistical-inference-for-mechanistic-models-of-neural-dynamics/bibtex) + +- **Automatic posterior transformation for likelihood-free inference**
by Greenberg, Nonnenmacher & Macke (ICML 2019)
[[Paper]](http://proceedings.mlr.press/v97/greenberg19a/greenberg19a.pdf) + +- **Truncated proposals for scalable and hassle-free simulation-based inference**
by Deistler, Goncalves & Macke (NeurIPS 2022)
[[Paper]](https://arxiv.org/abs/2210.04815) + + +### Likelihood-estimation (`(S)NLE`) + +- **Sequential neural likelihood: Fast likelihood-free inference with autoregressive flows**
by Papamakarios, Sterratt & Murray (AISTATS 2019)
[[PDF]](http://proceedings.mlr.press/v89/papamakarios19a/papamakarios19a.pdf) [[BibTeX]](https://gpapamak.github.io/bibtex/snl.bib) + +- **Variational methods for simulation-based inference**
by Glöckler, Deistler, Macke (ICLR 2022)
[[Paper]](https://arxiv.org/abs/2203.04176) + +- **Flexible and efficient simulation-based inference for models of decision-making**
by Boelts, Lueckmann, Gao, Macke (Elife 2022)
[[Paper]](https://elifesciences.org/articles/77220) + + +### Likelihood-ratio-estimation (`(S)NRE`) + +- **Likelihood-free MCMC with Amortized Approximate Likelihood Ratios**
by Hermans, Begy & Louppe (ICML 2020)
[[PDF]](http://proceedings.mlr.press/v119/hermans20a/hermans20a.pdf) + +- **On Contrastive Learning for Likelihood-free Inference**
Durkan, Murray & Papamakarios (ICML 2020)
[[PDF]](http://proceedings.mlr.press/v119/durkan20a/durkan20a.pdf) + +- **Towards Reliable Simulation-Based Inference with Balanced Neural Ratio Estimation**
by Delaunoy, Hermans, Rozet, Wehenkel & Louppe (NeurIPS 2022)
[[PDF]](https://arxiv.org/pdf/2208.13624.pdf) + +- **Contrastive Neural Ratio Estimation**
Benjamin Kurt Miller, Christoph Weniger, Patrick Forré (NeurIPS 2022)
[[PDF]](https://arxiv.org/pdf/2210.06170.pdf) + +### Utilities + +- **Restriction estimator**
by Deistler, Macke & Goncalves (PNAS 2022)
[[Paper]](https://www.pnas.org/doi/10.1073/pnas.2207632119) + +- **Simulation-based calibration**
by Talts, Betancourt, Simpson, Vehtari, Gelman (arxiv 2018)
[[Paper]](https://arxiv.org/abs/1804.06788)) + +- **Expected coverage (sample-based)**
as computed in Deistler, Goncalves, Macke [[Paper]](https://arxiv.org/abs/2210.04815) and in Rozet, Louppe [[Paper]](https://matheo.uliege.be/handle/2268.2/12993) From 8397a6835395d6f118fabca93d180b58fa2b74fb Mon Sep 17 00:00:00 2001 From: zinaStef <49067201+zinaStef@users.noreply.github.com> Date: Fri, 22 Mar 2024 11:39:45 +0100 Subject: [PATCH 02/53] deprecate prepare_for_sbi (#1083) --- sbi/examples/minimal.py | 10 +++- sbi/inference/__init__.py | 1 - sbi/inference/base.py | 10 +++- sbi/utils/user_input_checks.py | 11 ++++- tests/ensemble_test.py | 21 +++++++-- tests/inference_on_device_test.py | 13 ++++-- tests/inference_with_NaN_simulator_test.py | 14 ++++-- tests/linearGaussian_mdn_test.py | 14 ++++-- tests/linearGaussian_snle_test.py | 43 ++++++++++++++---- tests/linearGaussian_snpe_test.py | 53 ++++++++++++++++++---- tests/linearGaussian_snre_test.py | 31 ++++++++++--- tests/mcmc_test.py | 10 +++- tests/plot_test.py | 11 ++++- tests/posterior_nn_test.py | 11 ++++- tests/posterior_sampler_test.py | 10 +++- tests/simulator_utils_test.py | 10 +++- tests/user_input_checks_test.py | 10 ++-- 17 files changed, 226 insertions(+), 57 deletions(-) diff --git a/sbi/examples/minimal.py b/sbi/examples/minimal.py index 408d6d4e6..fa3dd8f02 100644 --- a/sbi/examples/minimal.py +++ b/sbi/examples/minimal.py @@ -1,7 +1,11 @@ import torch -from sbi.inference import SNPE, infer, prepare_for_sbi, simulate_for_sbi +from sbi.inference import SNPE, infer, simulate_for_sbi from sbi.simulators.linear_gaussian import diagonal_linear_gaussian +from sbi.utils.user_input_checks import ( + process_prior, + process_simulator, +) def simple(): @@ -33,7 +37,9 @@ def flexible(): prior = torch.distributions.MultivariateNormal( loc=prior_mean, covariance_matrix=prior_cov ) - simulator, prior = prepare_for_sbi(simulator, prior) + prior, _, prior_returns_numpy = process_prior(prior) + simulator = process_simulator(simulator, prior, prior_returns_numpy) + inference = SNPE(prior) theta, x = simulate_for_sbi(simulator, proposal=prior, num_simulations=500) diff --git a/sbi/inference/__init__.py b/sbi/inference/__init__.py index 68e63b5cf..9000986fd 100644 --- a/sbi/inference/__init__.py +++ b/sbi/inference/__init__.py @@ -25,7 +25,6 @@ from sbi.inference.snpe.snpe_b import SNPE_B from sbi.inference.snpe.snpe_c import SNPE_C # noqa: F401 from sbi.inference.snre import BNRE, SNRE, SNRE_A, SNRE_B, SNRE_C # noqa: F401 -from sbi.utils.user_input_checks import prepare_for_sbi SNL = SNLE = SNLE_A _snle_family = ["SNL"] diff --git a/sbi/inference/base.py b/sbi/inference/base.py index 6283ed9a5..ed05e1d7a 100644 --- a/sbi/inference/base.py +++ b/sbi/inference/base.py @@ -29,7 +29,11 @@ ) from sbi.utils.sbiutils import get_simulations_since_round from sbi.utils.torchutils import check_if_prior_on_device, process_device -from sbi.utils.user_input_checks import prepare_for_sbi +from sbi.utils.user_input_checks import ( + check_sbi_inputs, + process_prior, + process_simulator, +) def infer( @@ -101,7 +105,9 @@ def infer( if init_kwargs is None: init_kwargs = {} - simulator, prior = prepare_for_sbi(simulator, prior) + prior, _, prior_returns_numpy = process_prior(prior) + simulator = process_simulator(simulator, prior, prior_returns_numpy) + check_sbi_inputs(simulator, prior) inference = method_fun(prior=prior, **init_kwargs) theta, x = simulate_for_sbi( diff --git a/sbi/utils/user_input_checks.py b/sbi/utils/user_input_checks.py index ad96292d3..ac04bbc7d 100644 --- a/sbi/utils/user_input_checks.py +++ b/sbi/utils/user_input_checks.py @@ -610,7 +610,9 @@ def process_x( def prepare_for_sbi(simulator: Callable, prior) -> Tuple[Callable, Distribution]: """Prepare simulator and prior for usage in sbi. - NOTE: This is a wrapper around `process_prior` and `process_simulator` which can be + NOTE: This method is deprecated as of sbi version v0.23.0. and will be removed in a future release. + Please use `process_prior` and `process_simulator` in the future. + This is a wrapper around `process_prior` and `process_simulator` which can be used in isolation as well. Attempts to meet the following requirements by reshaping and type-casting: @@ -630,6 +632,13 @@ def prepare_for_sbi(simulator: Callable, prior) -> Tuple[Callable, Distribution] Tuple (simulator, prior) checked and matching the requirements of sbi. """ + warnings.warn( + "This method is deprecated as of sbi version v0.23.0. and will be removed in a future release." + "Please use `process_prior` and `process_simulator` in the future.", + DeprecationWarning, + stacklevel=2, + ) + # Check prior, return PyTorch prior. prior, _, prior_returns_numpy = process_prior(prior) diff --git a/tests/ensemble_test.py b/tests/ensemble_test.py index 0f97b9498..fda68bd47 100644 --- a/tests/ensemble_test.py +++ b/tests/ensemble_test.py @@ -7,12 +7,17 @@ from torch import eye, ones, zeros from torch.distributions import MultivariateNormal -from sbi.inference import SNLE_A, SNPE_C, SNRE_A, prepare_for_sbi +from sbi.inference import SNLE_A, SNPE_C, SNRE_A from sbi.inference.posteriors import EnsemblePosterior from sbi.simulators.linear_gaussian import ( linear_gaussian, true_posterior_linear_gaussian_mvn_prior, ) +from sbi.utils.user_input_checks import ( + check_sbi_inputs, + process_prior, + process_simulator, +) from tests.test_utils import check_c2st, get_dkl_gaussian_prior @@ -28,10 +33,14 @@ def test_import_before_deprecation(): prior_mean = zeros(2) prior_cov = eye(2) prior = MultivariateNormal(loc=prior_mean, covariance_matrix=prior_cov) - simulator, prior = prepare_for_sbi( + + prior, _, prior_returns_numpy = process_prior(prior) + simulator = process_simulator( lambda theta: linear_gaussian(theta, likelihood_shift, likelihood_cov), prior, + prior_returns_numpy, ) + check_sbi_inputs(simulator, prior) theta = prior.sample((num_simulations,)) x = simulator(theta) @@ -78,9 +87,13 @@ def test_c2st_posterior_ensemble_on_linearGaussian(inference_method, num_trials) ) target_samples = gt_posterior.sample((num_samples,)) - simulator, prior = prepare_for_sbi( - lambda theta: linear_gaussian(theta, likelihood_shift, likelihood_cov), prior + prior, _, prior_returns_numpy = process_prior(prior) + simulator = process_simulator( + lambda theta: linear_gaussian(theta, likelihood_shift, likelihood_cov), + prior, + prior_returns_numpy, ) + check_sbi_inputs(simulator, prior) # train ensemble components posteriors = [] diff --git a/tests/inference_on_device_test.py b/tests/inference_on_device_test.py index c7846b4ef..b0f1dcca5 100644 --- a/tests/inference_on_device_test.py +++ b/tests/inference_on_device_test.py @@ -34,7 +34,9 @@ from sbi.utils.torchutils import BoxUniform, gpu_available, process_device from sbi.utils.user_input_checks import ( check_embedding_net_device, - prepare_for_sbi, + check_sbi_inputs, + process_prior, + process_simulator, validate_theta_and_x, ) @@ -283,7 +285,10 @@ def test_train_with_different_data_and_training_device( prior_ = BoxUniform( -torch.ones(num_dim), torch.ones(num_dim), device=training_device ) - simulator, prior = prepare_for_sbi(diagonal_linear_gaussian, prior_) + + prior, _, prior_returns_numpy = process_prior(prior_) + simulator = process_simulator(diagonal_linear_gaussian, prior, prior_returns_numpy) + check_sbi_inputs(simulator, prior) inference = inference_method( prior, @@ -449,7 +454,9 @@ def test_nograd_after_inference_train(inference_method) -> None: """Test that no gradients are present after training.""" num_dim = 2 prior_ = BoxUniform(-torch.ones(num_dim), torch.ones(num_dim)) - simulator, prior = prepare_for_sbi(diagonal_linear_gaussian, prior_) + prior, _, prior_returns_numpy = process_prior(prior_) + simulator = process_simulator(diagonal_linear_gaussian, prior, prior_returns_numpy) + check_sbi_inputs(simulator, prior) inference = inference_method( prior, diff --git a/tests/inference_with_NaN_simulator_test.py b/tests/inference_with_NaN_simulator_test.py index ae5b0bc37..95ebd8121 100644 --- a/tests/inference_with_NaN_simulator_test.py +++ b/tests/inference_with_NaN_simulator_test.py @@ -13,7 +13,6 @@ SNPE_C, SRE, DirectPosterior, - prepare_for_sbi, simulate_for_sbi, ) from sbi.simulators.linear_gaussian import ( @@ -22,6 +21,11 @@ ) from sbi.utils import RestrictionEstimator from sbi.utils.sbiutils import handle_invalid_x +from sbi.utils.user_input_checks import ( + check_sbi_inputs, + process_prior, + process_simulator, +) from .test_utils import check_c2st @@ -96,7 +100,9 @@ def linear_gaussian_nan( prior=prior, ) - simulator, prior = prepare_for_sbi(linear_gaussian_nan, prior) + prior, _, prior_returns_numpy = process_prior(prior) + simulator = process_simulator(linear_gaussian_nan, prior, prior_returns_numpy) + check_sbi_inputs(simulator, prior) inference = method(prior=prior) theta, x = simulate_for_sbi(simulator, prior, num_simulations) @@ -137,7 +143,9 @@ def linear_gaussian_nan( prior=prior, ) - simulator, prior = prepare_for_sbi(linear_gaussian_nan, prior) + prior, _, prior_returns_numpy = process_prior(prior) + simulator = process_simulator(linear_gaussian_nan, prior, prior_returns_numpy) + check_sbi_inputs(simulator, prior) restriction_estimator = RestrictionEstimator(prior=prior) proposal = prior num_rounds = 2 diff --git a/tests/linearGaussian_mdn_test.py b/tests/linearGaussian_mdn_test.py index 3e84e4177..b9cd5539f 100644 --- a/tests/linearGaussian_mdn_test.py +++ b/tests/linearGaussian_mdn_test.py @@ -14,13 +14,17 @@ DirectPosterior, MCMCPosterior, likelihood_estimator_based_potential, - prepare_for_sbi, simulate_for_sbi, ) from sbi.simulators.linear_gaussian import ( linear_gaussian, true_posterior_linear_gaussian_mvn_prior, ) +from sbi.utils.user_input_checks import ( + check_sbi_inputs, + process_prior, + process_simulator, +) from tests.test_utils import check_c2st @@ -54,7 +58,9 @@ def mdn_inference_with_different_methods(method): def simulator(theta: Tensor) -> Tensor: return linear_gaussian(theta, likelihood_shift, likelihood_cov) - simulator, prior = prepare_for_sbi(simulator, prior) + prior, _, prior_returns_numpy = process_prior(prior) + simulator = process_simulator(simulator, prior, prior_returns_numpy) + check_sbi_inputs(simulator, prior) inference = method(density_estimator="mdn") theta, x = simulate_for_sbi(simulator, prior, num_simulations) @@ -102,7 +108,9 @@ def test_mdn_with_1D_uniform_prior(): def simulator(theta: Tensor) -> Tensor: return linear_gaussian(theta, likelihood_shift, likelihood_cov) - simulator, prior = prepare_for_sbi(simulator, prior) + prior, _, prior_returns_numpy = process_prior(prior) + simulator = process_simulator(simulator, prior, prior_returns_numpy) + check_sbi_inputs(simulator, prior) inference = SNPE(density_estimator="mdn") theta, x = simulate_for_sbi(simulator, prior, 100) diff --git a/tests/linearGaussian_snle_test.py b/tests/linearGaussian_snle_test.py index b8798655c..38d0ea6a3 100644 --- a/tests/linearGaussian_snle_test.py +++ b/tests/linearGaussian_snle_test.py @@ -15,7 +15,6 @@ RejectionPosterior, VIPosterior, likelihood_estimator_based_potential, - prepare_for_sbi, simulate_for_sbi, ) from sbi.neural_nets import likelihood_nn @@ -26,7 +25,12 @@ samples_true_posterior_linear_gaussian_uniform_prior, true_posterior_linear_gaussian_mvn_prior, ) -from sbi.utils import BoxUniform, process_prior +from sbi.utils import BoxUniform +from sbi.utils.user_input_checks import ( + check_sbi_inputs, + process_prior, + process_simulator, +) from .test_utils import check_c2st, get_prob_outside_uniform_prior @@ -54,7 +58,9 @@ def test_api_snle_multiple_trials_and_rounds_map(num_dim: int, prior_str: str): else: prior = BoxUniform(-2.0 * ones(num_dim), 2.0 * ones(num_dim)) - simulator, prior = prepare_for_sbi(diagonal_linear_gaussian, prior) + prior, _, prior_returns_numpy = process_prior(prior) + simulator = process_simulator(diagonal_linear_gaussian, prior, prior_returns_numpy) + check_sbi_inputs(simulator, prior) inference = SNLE(prior=prior, density_estimator="mdn", show_progress_bars=False) proposals = [prior] @@ -106,7 +112,8 @@ def test_c2st_snl_on_linear_gaussian_different_dims(model_str="maf"): num_discarded_dims=discard_dims, num_samples=num_samples, ) - simulator, prior = prepare_for_sbi( + prior, _, prior_returns_numpy = process_prior(prior) + simulator = process_simulator( lambda theta: linear_gaussian( theta, likelihood_shift, @@ -114,7 +121,10 @@ def test_c2st_snl_on_linear_gaussian_different_dims(model_str="maf"): num_discarded_dims=discard_dims, ), prior, + prior_returns_numpy, ) + check_sbi_inputs(simulator, prior) + density_estimator = likelihood_nn(model=model_str, num_transforms=3) inference = SNLE(density_estimator=density_estimator, show_progress_bars=False) @@ -167,10 +177,14 @@ def test_c2st_and_map_snl_on_linearGaussian_different( else: prior = BoxUniform(-2.0 * ones(num_dim), 2.0 * ones(num_dim)) - simulator, prior = prepare_for_sbi( + prior, _, prior_returns_numpy = process_prior(prior) + simulator = process_simulator( lambda theta: linear_gaussian(theta, likelihood_shift, likelihood_cov), prior, + prior_returns_numpy, ) + check_sbi_inputs(simulator, prior) + density_estimator = likelihood_nn(model_str, num_transforms=3) inference = SNLE(density_estimator=density_estimator, show_progress_bars=False) @@ -292,10 +306,14 @@ def test_c2st_multi_round_snl_on_linearGaussian(num_trials: int): ) target_samples = gt_posterior.sample((num_samples,)) - simulator, prior = prepare_for_sbi( + prior, _, prior_returns_numpy = process_prior(prior) + simulator = process_simulator( lambda theta: linear_gaussian(theta, likelihood_shift, likelihood_cov), prior, + prior_returns_numpy, ) + check_sbi_inputs(simulator, prior) + inference = SNLE(show_progress_bars=False) theta, x = simulate_for_sbi( @@ -357,10 +375,14 @@ def test_c2st_multi_round_snl_on_linearGaussian_vi(num_trials: int): ) target_samples = gt_posterior.sample((num_samples,)) - simulator, prior = prepare_for_sbi( + prior, _, prior_returns_numpy = process_prior(prior) + simulator = process_simulator( lambda theta: linear_gaussian(theta, likelihood_shift, likelihood_cov), prior, + prior_returns_numpy, ) + check_sbi_inputs(simulator, prior) + inference = SNLE(show_progress_bars=False) theta, x = simulate_for_sbi( @@ -465,7 +487,12 @@ def test_api_snl_sampling_methods( # Thus, we would not like to run, e.g., VI with all init_strategies, but only once # (namely with `init_strategy=proposal`). if sample_with == "mcmc" or init_strategy == "proposal": - simulator, prior = prepare_for_sbi(diagonal_linear_gaussian, prior) + prior, _, prior_returns_numpy = process_prior(prior) + simulator = process_simulator( + diagonal_linear_gaussian, prior, prior_returns_numpy + ) + check_sbi_inputs(simulator, prior) + inference = SNLE(show_progress_bars=False) theta, x = simulate_for_sbi( diff --git a/tests/linearGaussian_snpe_test.py b/tests/linearGaussian_snpe_test.py index d21cb1628..834d18cd5 100644 --- a/tests/linearGaussian_snpe_test.py +++ b/tests/linearGaussian_snpe_test.py @@ -21,7 +21,6 @@ MCMCPosterior, RejectionPosterior, posterior_estimator_based_potential, - prepare_for_sbi, simulate_for_sbi, ) from sbi.neural_nets import posterior_nn @@ -32,6 +31,11 @@ true_posterior_linear_gaussian_mvn_prior, ) from sbi.utils import RestrictedPrior, get_density_thresholder +from sbi.utils.user_input_checks import ( + check_sbi_inputs, + process_prior, + process_simulator, +) from .sbiutils_test import conditional_of_mvn from .test_utils import ( @@ -76,10 +80,13 @@ def test_c2st_snpe_on_linearGaussian(snpe_method, num_dim: int, prior_str: str): num_samples=num_samples, ) - simulator, prior = prepare_for_sbi( + prior, _, prior_returns_numpy = process_prior(prior) + simulator = process_simulator( lambda theta: linear_gaussian(theta, likelihood_shift, likelihood_cov), prior, + prior_returns_numpy, ) + check_sbi_inputs(simulator, prior) inference = snpe_method(prior, show_progress_bars=False) @@ -174,10 +181,13 @@ def test_density_estimators_on_linearGaussian(density_estimator): ) target_samples = gt_posterior.sample((num_samples,)) - simulator, prior = prepare_for_sbi( + prior, _, prior_returns_numpy = process_prior(prior) + simulator = process_simulator( lambda theta: linear_gaussian(theta, likelihood_shift, likelihood_cov), prior, + prior_returns_numpy, ) + check_sbi_inputs(simulator, prior) inference = SNPE_C(prior, density_estimator=density_estimator) @@ -224,7 +234,8 @@ def test_c2st_snpe_on_linearGaussian_different_dims(density_estimator="maf"): num_samples=num_samples, ) - simulator, prior = prepare_for_sbi( + prior, _, prior_returns_numpy = process_prior(prior) + simulator = process_simulator( lambda theta: linear_gaussian( theta, likelihood_shift, @@ -232,7 +243,10 @@ def test_c2st_snpe_on_linearGaussian_different_dims(density_estimator="maf"): num_discarded_dims=discard_dims, ), prior, + prior_returns_numpy, ) + check_sbi_inputs(simulator, prior) + # Test whether prior can be `None`. inference = SNPE_C( prior=None, @@ -312,10 +326,14 @@ def test_c2st_multi_round_snpe_on_linearGaussian(method_str: str): else: density_estimator = "maf" - simulator, prior = prepare_for_sbi( + prior, _, prior_returns_numpy = process_prior(prior) + simulator = process_simulator( lambda theta: linear_gaussian(theta, likelihood_shift, likelihood_cov), prior, + prior_returns_numpy, ) + check_sbi_inputs(simulator, prior) + creation_args = dict( prior=prior, density_estimator=density_estimator, @@ -421,10 +439,14 @@ def test_api_snpe_c_posterior_correction(sample_with, mcmc_method, prior_str): else: prior = utils.BoxUniform(-2.0 * ones(num_dim), 2.0 * ones(num_dim)) - simulator, prior = prepare_for_sbi( + prior, _, prior_returns_numpy = process_prior(prior) + simulator = process_simulator( lambda theta: linear_gaussian(theta, likelihood_shift, likelihood_cov), prior, + prior_returns_numpy, ) + check_sbi_inputs(simulator, prior) + inference = SNPE_C(prior, show_progress_bars=False) theta, x = simulate_for_sbi(simulator, prior, 1000) @@ -482,10 +504,14 @@ def test_api_force_first_round_loss( likelihood_cov = 0.3 * eye(num_dim) prior = utils.BoxUniform(-2.0 * ones(num_dim), 2.0 * ones(num_dim)) - simulator, prior = prepare_for_sbi( + prior, _, prior_returns_numpy = process_prior(prior) + simulator = process_simulator( lambda theta: linear_gaussian(theta, likelihood_shift, likelihood_cov), prior, + prior_returns_numpy, ) + check_sbi_inputs(simulator, prior) + inference = SNPE_C(prior, show_progress_bars=False) proposal = prior @@ -537,7 +563,9 @@ def simulator(theta): # Test whether SNPE works properly with structured z-scoring. net = posterior_nn("maf", z_score_x="structured", hidden_features=20) - simulator, prior = prepare_for_sbi(simulator, prior) + prior, _, prior_returns_numpy = process_prior(prior) + simulator = process_simulator(simulator, prior, prior_returns_numpy) + check_sbi_inputs(simulator, prior) inference = SNPE_C(prior, density_estimator=net, show_progress_bars=False) @@ -665,7 +693,9 @@ def test_mdn_conditional_density(num_dim: int = 3, cond_dim: int = 1): def simulator(theta): return linear_gaussian(theta, likelihood_shift, likelihood_cov) - simulator, prior = prepare_for_sbi(simulator, prior) + prior, _, prior_returns_numpy = process_prior(prior) + simulator = process_simulator(simulator, prior, prior_returns_numpy) + check_sbi_inputs(simulator, prior) inference = SNPE_C(density_estimator="mdn", show_progress_bars=False) theta, x = simulate_for_sbi( @@ -702,10 +732,13 @@ def test_example_posterior(snpe_method: type): extra_kwargs = dict(final_round=True) if snpe_method == SNPE_A else dict() - simulator, prior = prepare_for_sbi( + prior, _, prior_returns_numpy = process_prior(prior) + simulator = process_simulator( lambda theta: linear_gaussian(theta, likelihood_shift, likelihood_cov), prior, + prior_returns_numpy, ) + check_sbi_inputs(simulator, prior) inference = snpe_method(prior, show_progress_bars=False) theta, x = simulate_for_sbi( diff --git a/tests/linearGaussian_snre_test.py b/tests/linearGaussian_snre_test.py index 7973f48e7..3b1d5c94e 100644 --- a/tests/linearGaussian_snre_test.py +++ b/tests/linearGaussian_snre_test.py @@ -18,7 +18,6 @@ MCMCPosterior, RejectionPosterior, VIPosterior, - prepare_for_sbi, ratio_estimator_based_potential, simulate_for_sbi, ) @@ -30,6 +29,11 @@ samples_true_posterior_linear_gaussian_uniform_prior, true_posterior_linear_gaussian_mvn_prior, ) +from sbi.utils.user_input_checks import ( + check_sbi_inputs, + process_prior, + process_simulator, +) from tests.test_utils import ( check_c2st, get_dkl_gaussian_prior, @@ -57,7 +61,9 @@ def test_api_snre_multiple_trials_and_rounds_map( num_simulations = 100 prior = MultivariateNormal(loc=zeros(num_dim), covariance_matrix=eye(num_dim)) - simulator, prior = prepare_for_sbi(diagonal_linear_gaussian, prior) + prior, _, prior_returns_numpy = process_prior(prior) + simulator = process_simulator(diagonal_linear_gaussian, prior, prior_returns_numpy) + check_sbi_inputs(simulator, prior) inference = snre_method(prior=prior, classifier="mlp", show_progress_bars=False) proposals = [prior] @@ -106,12 +112,15 @@ def test_c2st_sre_on_linearGaussian(snre_method: RatioEstimator): prior_cov = eye(theta_dim) prior = MultivariateNormal(loc=prior_mean, covariance_matrix=prior_cov) - simulator, prior = prepare_for_sbi( + prior, _, prior_returns_numpy = process_prior(prior) + simulator = process_simulator( lambda theta: linear_gaussian( theta, likelihood_shift, likelihood_cov, num_discarded_dims=discard_dims ), prior, + prior_returns_numpy, ) + check_sbi_inputs(simulator, prior) inference = snre_method(classifier="resnet", show_progress_bars=False) theta, x = simulate_for_sbi( @@ -182,7 +191,9 @@ def test_c2st_snre_variants_on_linearGaussian_with_multiple_trials( def simulator(theta): return linear_gaussian(theta, likelihood_shift, likelihood_cov) - simulator, prior = prepare_for_sbi(simulator, prior) + prior, _, prior_returns_numpy = process_prior(prior) + simulator = process_simulator(simulator, prior, prior_returns_numpy) + check_sbi_inputs(simulator, prior) kwargs = dict( classifier="resnet", show_progress_bars=False, @@ -280,9 +291,13 @@ def test_c2st_multi_round_snr_on_linearGaussian_vi( ) target_samples = gt_posterior.sample((num_samples,)) - simulator, prior = prepare_for_sbi( - lambda theta: linear_gaussian(theta, likelihood_shift, likelihood_cov), prior + prior, _, prior_returns_numpy = process_prior(prior) + simulator = process_simulator( + lambda theta: linear_gaussian(theta, likelihood_shift, likelihood_cov), + prior, + prior_returns_numpy, ) + check_sbi_inputs(simulator, prior) inference = snre_method(show_progress_bars=False) theta, x = simulate_for_sbi( @@ -378,7 +393,9 @@ def test_api_sre_sampling_methods(sampling_method: str, prior_str: str): else: prior = utils.BoxUniform(-ones(num_dim), ones(num_dim)) - simulator, prior = prepare_for_sbi(diagonal_linear_gaussian, prior) + prior, _, prior_returns_numpy = process_prior(prior) + simulator = process_simulator(diagonal_linear_gaussian, prior, prior_returns_numpy) + check_sbi_inputs(simulator, prior) inference = SNRE_B(classifier="resnet", show_progress_bars=False) theta, x = simulate_for_sbi( diff --git a/tests/mcmc_test.py b/tests/mcmc_test.py index 4bcf242b8..5e24e5aaf 100644 --- a/tests/mcmc_test.py +++ b/tests/mcmc_test.py @@ -14,7 +14,6 @@ SNLE, MCMCPosterior, likelihood_estimator_based_potential, - prepare_for_sbi, simulate_for_sbi, ) from sbi.neural_nets import likelihood_nn @@ -27,6 +26,11 @@ diagonal_linear_gaussian, true_posterior_linear_gaussian_mvn_prior, ) +from sbi.utils.user_input_checks import ( + check_sbi_inputs, + process_prior, + process_simulator, +) from tests.test_utils import check_c2st @@ -148,7 +152,9 @@ def test_getting_inference_diagnostics(method): Uniform(low=-ones(1), high=ones(1)), ] - simulator, prior = prepare_for_sbi(diagonal_linear_gaussian, prior) + prior, _, prior_returns_numpy = process_prior(prior) + simulator = process_simulator(diagonal_linear_gaussian, prior, prior_returns_numpy) + check_sbi_inputs(simulator, prior) density_estimator = likelihood_nn("maf", num_transforms=3) inference = SNLE(density_estimator=density_estimator, show_progress_bars=False) diff --git a/tests/plot_test.py b/tests/plot_test.py index e399560c7..2d7bae3ad 100644 --- a/tests/plot_test.py +++ b/tests/plot_test.py @@ -10,8 +10,13 @@ from torch.utils.tensorboard.writer import SummaryWriter from sbi.analysis import pairplot, plot_summary, sbc_rank_plot -from sbi.inference import SNLE, SNPE, SNRE, prepare_for_sbi, simulate_for_sbi +from sbi.inference import SNLE, SNPE, SNRE, simulate_for_sbi from sbi.utils import BoxUniform +from sbi.utils.user_input_checks import ( + check_sbi_inputs, + process_prior, + process_simulator, +) @pytest.mark.parametrize("samples", (torch.randn(100, 2), [torch.randn(100, 2)] * 2)) @@ -37,7 +42,9 @@ def test_plot_summary(method, tmp_path): def linear_gaussian(theta): return theta + 1.0 + torch.randn_like(theta) * 0.1 - simulator, prior = prepare_for_sbi(linear_gaussian, prior) + prior, _, prior_returns_numpy = process_prior(prior) + simulator = process_simulator(linear_gaussian, prior, prior_returns_numpy) + check_sbi_inputs(simulator, prior) inference = method(prior=prior, summary_writer=summary_writer) theta, x = simulate_for_sbi(simulator, proposal=prior, num_simulations=6) diff --git a/tests/posterior_nn_test.py b/tests/posterior_nn_test.py index 8aa4c4793..f610c98bf 100644 --- a/tests/posterior_nn_test.py +++ b/tests/posterior_nn_test.py @@ -11,10 +11,14 @@ SNPE_A, SNPE_C, DirectPosterior, - prepare_for_sbi, simulate_for_sbi, ) from sbi.simulators.linear_gaussian import diagonal_linear_gaussian +from sbi.utils.user_input_checks import ( + check_sbi_inputs, + process_prior, + process_simulator, +) @pytest.mark.parametrize("snpe_method", [SNPE_A, SNPE_C]) @@ -30,7 +34,10 @@ def test_log_prob_with_different_x(snpe_method: type, x_o_batch_dim: bool): num_dim = 2 prior = MultivariateNormal(loc=zeros(num_dim), covariance_matrix=eye(num_dim)) - simulator, prior = prepare_for_sbi(diagonal_linear_gaussian, prior) + prior, _, prior_returns_numpy = process_prior(prior) + simulator = process_simulator(diagonal_linear_gaussian, prior, prior_returns_numpy) + check_sbi_inputs(simulator, prior) + inference = snpe_method(prior=prior) theta, x = simulate_for_sbi(simulator, prior, 1000) posterior_estimator = inference.append_simulations(theta, x).train(max_num_epochs=3) diff --git a/tests/posterior_sampler_test.py b/tests/posterior_sampler_test.py index b82b9d397..d83283790 100644 --- a/tests/posterior_sampler_test.py +++ b/tests/posterior_sampler_test.py @@ -13,11 +13,15 @@ SNL, MCMCPosterior, likelihood_estimator_based_potential, - prepare_for_sbi, simulate_for_sbi, ) from sbi.samplers.mcmc import SliceSamplerSerial, SliceSamplerVectorized from sbi.simulators.linear_gaussian import diagonal_linear_gaussian +from sbi.utils.user_input_checks import ( + check_sbi_inputs, + process_prior, + process_simulator, +) @pytest.mark.parametrize( @@ -47,7 +51,9 @@ def test_api_posterior_sampler_set(sampling_method: str, set_seed): num_chains = 3 if sampling_method in "slice_np_vectorized" else 1 prior = MultivariateNormal(loc=zeros(num_dim), covariance_matrix=eye(num_dim)) - simulator, prior = prepare_for_sbi(diagonal_linear_gaussian, prior) + prior, _, prior_returns_numpy = process_prior(prior) + simulator = process_simulator(diagonal_linear_gaussian, prior, prior_returns_numpy) + check_sbi_inputs(simulator, prior) inference = SNL(prior, show_progress_bars=False) theta, x = simulate_for_sbi( diff --git a/tests/simulator_utils_test.py b/tests/simulator_utils_test.py index 4486aad52..1f6330927 100644 --- a/tests/simulator_utils_test.py +++ b/tests/simulator_utils_test.py @@ -10,7 +10,11 @@ from sbi.simulators.linear_gaussian import diagonal_linear_gaussian from sbi.simulators.simutils import simulate_in_batches from sbi.utils.torchutils import BoxUniform -from sbi.utils.user_input_checks import prepare_for_sbi +from sbi.utils.user_input_checks import ( + check_sbi_inputs, + process_prior, + process_simulator, +) @pytest.mark.parametrize("num_sims", (0, 10)) @@ -28,7 +32,9 @@ def test_simulate_in_batches( ): """Test combinations of num_sims and simulation_batch_size.""" - simulator, prior = prepare_for_sbi(simulator, prior) + prior, _, prior_returns_numpy = process_prior(prior) + simulator = process_simulator(simulator, prior, prior_returns_numpy) + check_sbi_inputs(simulator, prior) theta = prior.sample((num_sims,)) # run twice to check seeding. x1 = simulate_in_batches(simulator, theta, batch_size, seed=seed) diff --git a/tests/user_input_checks_test.py b/tests/user_input_checks_test.py index a8e0b7aca..ad73bc4f4 100644 --- a/tests/user_input_checks_test.py +++ b/tests/user_input_checks_test.py @@ -17,7 +17,7 @@ from sbi.utils import mcmc_transform, within_support from sbi.utils.torchutils import BoxUniform from sbi.utils.user_input_checks import ( - prepare_for_sbi, + check_sbi_inputs, process_prior, process_simulator, process_x, @@ -269,7 +269,9 @@ def test_prepare_sbi_problem(simulator: Callable, prior): x_shape: shape of data as defined by the user. """ - simulator, prior = prepare_for_sbi(simulator, prior) + prior, _, prior_returns_numpy = process_prior(prior) + simulator = process_simulator(simulator, prior, prior_returns_numpy) + check_sbi_inputs(simulator, prior) # check batch sims and type n_batch = 5 @@ -315,7 +317,9 @@ def test_inference_with_user_sbi_problems( Test inference with combinations of user defined simulators, priors and x_os. """ - simulator, prior = prepare_for_sbi(user_simulator, user_prior) + prior, _, prior_returns_numpy = process_prior(user_prior) + simulator = process_simulator(user_simulator, prior, prior_returns_numpy) + check_sbi_inputs(simulator, prior) inference = snpe_method( prior=prior, density_estimator="mdn_snpe_a" if snpe_method == SNPE_A else "maf", From b81420b096439e936b3c3b38e8ba3c757e0b0b92 Mon Sep 17 00:00:00 2001 From: Cornelius <34339075+coschroeder@users.noreply.github.com> Date: Fri, 22 Mar 2024 13:14:41 +0100 Subject: [PATCH 03/53] 968 adapt mnle to new densityestimator abstraction (#1089) * restructuring mnle/categorical estimators v0.0 * renaming fixes * bug fix * fix circular import error * renaming theta to context, bug fixes * 1032 merge the first two tutorials and simplify (#1076) * copy previous getting started * merged linear gaussian 0 and 1 * merged added docs and log prob and new pair plot example * work in jans comment, restructure next steps * add tutorial instruction landing page * added separation users / devs and links to all notebooks * replace one line example by multi line code example * fix comma * fix space, fix simulation-based science wording --------- Co-authored-by: augustes * restructuring mnle/categorical estimators v0.0 * renaming fixes * bug fix * fix circular import error * renaming theta to context, bug fixes * fixed None defaults * default fixes .2 * default fix .3 --------- Co-authored-by: Guy Moss Co-authored-by: augustes Co-authored-by: augustes --- .../potentials/likelihood_based_potential.py | 2 +- .../density_estimators/__init__.py | 7 + .../density_estimators/categorical_net.py | 144 ++++++++ .../mixed_density_estimator.py | 231 ++++++++++++ sbi/neural_nets/mnle.py | 336 ++---------------- 5 files changed, 413 insertions(+), 307 deletions(-) create mode 100644 sbi/neural_nets/density_estimators/categorical_net.py create mode 100644 sbi/neural_nets/density_estimators/mixed_density_estimator.py diff --git a/sbi/inference/potentials/likelihood_based_potential.py b/sbi/inference/potentials/likelihood_based_potential.py index 2f15d4f39..063bcb906 100644 --- a/sbi/inference/potentials/likelihood_based_potential.py +++ b/sbi/inference/potentials/likelihood_based_potential.py @@ -187,7 +187,7 @@ def __call__(self, theta: Tensor, track_gradients: bool = True) -> Tensor: # TODO: how to fix pyright issues? log_likelihood_trial_batch = self.likelihood_estimator.log_prob_iid( x=self.x_o, - theta=theta.to(self.device), + context=theta.to(self.device), ) # type: ignore # Reshape to (x-trials x parameters), sum over trial-log likelihoods. log_likelihood_trial_sum = log_likelihood_trial_batch.reshape( diff --git a/sbi/neural_nets/density_estimators/__init__.py b/sbi/neural_nets/density_estimators/__init__.py index 0cc2aa068..c94c4c6b4 100644 --- a/sbi/neural_nets/density_estimators/__init__.py +++ b/sbi/neural_nets/density_estimators/__init__.py @@ -1,3 +1,10 @@ from sbi.neural_nets.density_estimators.base import DensityEstimator +from sbi.neural_nets.density_estimators.categorical_net import ( + CategoricalMassEstimator, + CategoricalNet, +) +from sbi.neural_nets.density_estimators.mixed_density_estimator import ( + MixedDensityEstimator, +) from sbi.neural_nets.density_estimators.nflows_flow import NFlowsFlow from sbi.neural_nets.density_estimators.zuko_flow import ZukoFlow diff --git a/sbi/neural_nets/density_estimators/categorical_net.py b/sbi/neural_nets/density_estimators/categorical_net.py new file mode 100644 index 000000000..d8a183761 --- /dev/null +++ b/sbi/neural_nets/density_estimators/categorical_net.py @@ -0,0 +1,144 @@ +from typing import Optional + +import torch +from torch import Tensor, nn +from torch.distributions import Categorical +from torch.nn import Sigmoid, Softmax + +from sbi.neural_nets.density_estimators import DensityEstimator + + +class CategoricalNet(nn.Module): + """Class to perform conditional density (mass) estimation for a categorical RV. + + Takes as input parameters theta and learns the parameters p of a Categorical. + + Defines log prob and sample functions. + """ + + def __init__( + self, + num_input: int = 4, + num_categories: int = 2, + num_hidden: int = 20, + num_layers: int = 2, + embedding: Optional[nn.Module] = None, + ): + """Initialize the neural net. + + Args: + num_input: number of input units, i.e., dimensionality of context. + num_categories: number of output units, i.e., number of categories. + num_hidden: number of hidden units per layer. + num_layers: number of hidden layers. + embedding: emebedding net for parameters, e.g., a z-scoring transform. + """ + super().__init__() + + self.num_hidden = num_hidden + self.num_input = num_input + self.activation = Sigmoid() + self.softmax = Softmax(dim=1) + self.num_categories = num_categories + + # Maybe add z-score embedding for parameters. + if embedding is not None: + self.input_layer = nn.Sequential( + embedding, nn.Linear(num_input, num_hidden) + ) + else: + self.input_layer = nn.Linear(num_input, num_hidden) + + # Repeat hidden units hidden layers times. + self.hidden_layers = nn.ModuleList() + for _ in range(num_layers): + self.hidden_layers.append(nn.Linear(num_hidden, num_hidden)) + + self.output_layer = nn.Linear(num_hidden, num_categories) + + def forward(self, context: Tensor) -> Tensor: + """Return categorical probability predicted from a batch of inputs. + + Args: + context: batch of context parameters for the net. + + Returns: + Tensor: batch of predicted categorical probabilities. + """ + assert context.dim() == 2, "context needs to have a batch dimension." + assert ( + context.shape[1] == self.num_input + ), f"context dimensions must match num_input {self.num_input}" + + # forward path + context = self.activation(self.input_layer(context)) + + # iterate n hidden layers, input context and calculate tanh activation + for layer in self.hidden_layers: + context = self.activation(layer(context)) + + return self.softmax(self.output_layer(context)) + + def log_prob(self, input: Tensor, context: Tensor) -> Tensor: + """Return categorical log probability of categories input, given context. + + Args: + input: categories to evaluate. + context: parameters. + + Returns: + Tensor: log probs with shape (input.shape[0],) + """ + # Predict categorical ps and evaluate. + ps = self.forward(context) + return Categorical(probs=ps).log_prob(input.squeeze()) + + def sample(self, sample_shape: torch.Size, context: Tensor) -> Tensor: + """Returns samples from categorical random variable with probs predicted from + the neural net. + + Args: + sample_shape: number of samples to obtain. + context: batch of parameters for prediction. + + Returns: + Tensor: Samples with shape (num_samples, 1) + """ + + # Predict Categorical ps and sample. + ps = self.forward(context) + return ( + Categorical(probs=ps) + .sample(sample_shape=sample_shape) + .reshape(sample_shape[0], -1) + ) + + +class CategoricalMassEstimator(DensityEstimator): + """Class to perform conditional density (mass) estimation + for a categorical RV. + """ + + def __init__(self, net: CategoricalNet) -> None: + super().__init__(net=net, condition_shape=torch.Size([])) + self.net = net + self.num_categories = net.num_categories + + def log_prob(self, input: Tensor, context: Tensor, **kwargs) -> Tensor: + return self.net.log_prob(input, context, **kwargs) + + def sample(self, sample_shape: torch.Size, context: Tensor, **kwargs) -> Tensor: + return self.net.sample(sample_shape, context, **kwargs) + + def loss(self, input: Tensor, context: Tensor, **kwargs) -> Tensor: + r"""Return the loss for training the density estimator. + + Args: + input: Inputs to evaluate the loss on of shape (batch_size, input_size). + context: Conditions of shape (batch_size, *condition_shape). + + Returns: + Loss of shape (batch_size,) + """ + + return -self.log_prob(input, context) diff --git a/sbi/neural_nets/density_estimators/mixed_density_estimator.py b/sbi/neural_nets/density_estimators/mixed_density_estimator.py new file mode 100644 index 000000000..2bd4e87fd --- /dev/null +++ b/sbi/neural_nets/density_estimators/mixed_density_estimator.py @@ -0,0 +1,231 @@ +# This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed +# under the Affero General Public License v3, see . + +from typing import Tuple + +import torch +from torch import Tensor + +from sbi.neural_nets.density_estimators import ( + CategoricalMassEstimator, + DensityEstimator, +) +from sbi.neural_nets.density_estimators.nflows_flow import NFlowsFlow +from sbi.utils.sbiutils import match_theta_and_x_batch_shapes +from sbi.utils.torchutils import atleast_2d + + +class MixedDensityEstimator(DensityEstimator): + """Class performing Mixed Neural Likelihood Estimation. + + MNLE combines a Categorical net and a neural spline flow to model data with + mixed types, e.g., as they occur in decision-making models. + """ + + def __init__( + self, + discrete_net: CategoricalMassEstimator, + continuous_net: NFlowsFlow, + condition_shape: torch.Size, + log_transform_x: bool = False, + ): + """Initialize class for combining density estimators for MNLE. + + Args: + discrete_net: neural net to model discrete part of the data. + continuous_net: neural net to model the continuous data. + log_transform_x: whether to transform the continous part of the data into + logarithmic domain before training. This is helpful for bounded data, e. + g.,for reaction times. + """ + super(MixedDensityEstimator, self).__init__( + net=continuous_net, condition_shape=condition_shape + ) + + self.discrete_net = discrete_net + self.continuous_net = continuous_net + self.log_transform_x = log_transform_x + + def forward(self, x: Tensor): + raise NotImplementedError( + """The forward method is not implemented for MNLE, use '.sample(...)' to + generate samples though a forward pass.""" + ) + + def sample( + self, context: Tensor, sample_shape: torch.Size, track_gradients: bool = False + ) -> Tensor: + """Return sample from mixed data distribution. + + Args: + context: parameters for which to generate samples. + sample_shape number of samples to generate. + + Returns: + Tensor: samples with shape (num_samples, num_data_dimensions) + """ + assert ( + context.shape[0] == 1 + ), "Samples can be generated for a single context only." + + with torch.set_grad_enabled(track_gradients): + # Sample discrete data given parameters. + discrete_x = self.discrete_net.sample( + sample_shape=sample_shape, + context=context, + ).reshape(sample_shape[0], -1) + + # Sample continuous data condition on parameters and discrete data. + # Pass num_samples=1 because the choices in the context contains + # num_samples elements already. + continuous_x = self.continuous_net.sample( + # repeat the single context to match number of sampled choices. + # sample_shape[0] is the iid dimension. + condition=torch.cat( + (context.repeat(sample_shape[0], 1), discrete_x), dim=1 + ), + sample_shape=sample_shape, + ).reshape(sample_shape[0], -1) + + # In case x was log-transformed, move them to linear space. + if self.log_transform_x: + continuous_x = continuous_x.exp() + + return torch.cat((continuous_x, discrete_x), dim=1) + + def log_prob(self, x: Tensor, context: Tensor) -> Tensor: + """Return log-probability of samples under the learned MNLE. + + For a fixed data point x this returns the value of the likelihood function + evaluated at context, L(context, x=x). + + Alternatively, it can be interpreted as the log-prob of the density + p(x | context). + + It evaluates the separate density estimator for the discrete and continous part + of the data and then combines them into one evaluation. + + Args: + x: data (containing continuous and discrete data). + context: parameters for which to evaluate the likelihod function, or for + which to condition p(x | context). + + Returns: + Tensor: log_prob of p(x | context). + """ + assert ( + x.shape[0] == context.shape[0] + ), "x and context must have same batch size." + + cont_x, disc_x = _separate_x(x) + dim_context = context.shape[0] + + disc_log_prob = self.discrete_net.log_prob( + input=disc_x, context=context + ).reshape(dim_context) + + cont_log_prob = self.continuous_net.log_prob( + # Transform to log-space if needed. + torch.log(cont_x) if self.log_transform_x else cont_x, + # Pass parameters and discrete x as context. + condition=torch.cat((context, disc_x), dim=1), + ) + + # Combine into joint lp. + log_probs_combined = (disc_log_prob + cont_log_prob).reshape(dim_context) + + # Maybe add log abs det jacobian of RTs: log(1/x) = - log(x) + if self.log_transform_x: + log_probs_combined -= torch.log(cont_x).squeeze() + + return log_probs_combined + + def loss(self, x: Tensor, context: Tensor, **kwargs) -> Tensor: + return self.log_prob(x, context) + + def log_prob_iid(self, x: Tensor, context: Tensor) -> Tensor: + """Return log prob given a batch of iid x and a different batch of context. + + This is different from `.log_prob()` to enable speed ups in evaluation during + inference. The speed up is achieved by exploiting the fact that there are only + finite number of possible categories in the discrete part of the dat: one can + just calculate the log probs for each possible category (given the current batch + of context) and then copy those log probs into the entire batch of iid categories. + For example, for the drift-diffusion model, there are only two choices, but + often 100s or 1000 trials. With this method a evaluation over trials then passes + a batch of `2 (one per choice) * num_contexts` into the NN, whereas the normal + `.log_prob()` would pass `1000 * num_contexts`. + + Args: + x: batch of iid data, data observed given the same underlying parameters or + experimental conditions. + context: batch of parameters to be evaluated, i.e., each batch entry will be + evaluated for the entire batch of iid x. + + Returns: + Tensor: log probs with shape (num_trials, num_parameters), i.e., the log + prob for each context for each trial. + """ + + context = atleast_2d(context) + x = atleast_2d(x) + batch_size = context.shape[0] + num_trials = x.shape[0] + context_repeated, x_repeated = match_theta_and_x_batch_shapes(context, x) + net_device = next(self.discrete_net.parameters()).device + assert ( + net_device == x.device and x.device == context.device + ), f"device mismatch: net, x, context: {net_device}, {x.device}, {context.device}." + + x_cont_repeated, x_disc_repeated = _separate_x(x_repeated) + x_cont, x_disc = _separate_x(x) + + # repeat categories for parameters + repeated_categories = torch.repeat_interleave( + torch.arange(self.discrete_net.num_categories - 1), batch_size, dim=0 + ) + # repeat parameters for categories + repeated_context = context.repeat(self.discrete_net.num_categories - 1, 1) + log_prob_per_cat = torch.zeros(self.discrete_net.num_categories, batch_size).to( + net_device + ) + log_prob_per_cat[:-1, :] = self.discrete_net.log_prob( + repeated_categories.to(net_device), + repeated_context.to(net_device), + ).reshape(-1, batch_size) + # infer the last category logprob from sum to one. + log_prob_per_cat[-1, :] = torch.log(1 - log_prob_per_cat[:-1, :].exp().sum(0)) + + # fill in lps for each occurred category + log_probs_discrete = log_prob_per_cat[ + x_disc.type_as(torch.zeros(1, dtype=torch.long)).squeeze() + ].reshape(-1) + + # Get repeat discrete data and context to match in batch shape for flow eval. + log_probs_cont = self.continuous_net.log_prob( + torch.log(x_cont_repeated) if self.log_transform_x else x_cont_repeated, + condition=torch.cat((context_repeated, x_disc_repeated), dim=1), + ) + + # Combine into joint lp with first dim over trials. + log_probs_combined = (log_probs_discrete + log_probs_cont).reshape( + num_trials, batch_size + ) + + # Maybe add log abs det jacobian of RTs: log(1/rt) = - log(rt) + if self.log_transform_x: + log_probs_combined -= torch.log(x_cont) + + # Return batch over trials as required by SBI potentials. + return log_probs_combined + + +def _separate_x(x: Tensor, num_discrete_columns: int = 1) -> Tuple[Tensor, Tensor]: + """Returns the continuous and discrete part of the given x. + + Assumes the discrete data to live in the last columns of x. + """ + + assert x.ndim == 2, f"x must have two dimensions but has {x.ndim}." + + return x[:, :-num_discrete_columns], x[:, -num_discrete_columns:] diff --git a/sbi/neural_nets/mnle.py b/sbi/neural_nets/mnle.py index 56b22eae6..c1d5544d7 100644 --- a/sbi/neural_nets/mnle.py +++ b/sbi/neural_nets/mnle.py @@ -6,16 +6,39 @@ import torch from torch import Tensor, nn, unique -from torch.distributions import Categorical -from torch.nn import Sigmoid, Softmax -from sbi.neural_nets.density_estimators.base import DensityEstimator +from sbi.neural_nets.density_estimators import ( + CategoricalMassEstimator, + CategoricalNet, + MixedDensityEstimator, +) from sbi.neural_nets.flow import build_nsf -from sbi.utils.sbiutils import match_theta_and_x_batch_shapes, standardizing_net -from sbi.utils.torchutils import atleast_2d +from sbi.utils.sbiutils import standardizing_net from sbi.utils.user_input_checks import check_data_device +def build_categoricalmassestimator( + num_input: int = 4, + num_categories: int = 2, + num_hidden: int = 20, + num_layers: int = 2, + embedding: Optional[nn.Module] = None, +): + """Returns a density estimator for a categorical random variable.""" + + categorical_net = CategoricalNet( + num_input=num_input, + num_categories=num_categories, + num_hidden=num_hidden, + num_layers=num_layers, + embedding=embedding, + ) + + categorical_mass_estimator = CategoricalMassEstimator(categorical_net) + + return categorical_mass_estimator + + def build_mnle( batch_x: Tensor, batch_y: Tensor, @@ -69,7 +92,7 @@ def build_mnle( num_categories = unique(disc_x).numel() # Set up a categorical RV neural net for modelling the discrete data. - disc_nle = CategoricalNet( + disc_nle = build_categoricalmassestimator( num_input=dim_parameters, num_categories=num_categories, num_hidden=hidden_features, @@ -95,309 +118,10 @@ def build_mnle( discrete_net=disc_nle, continuous_net=cont_nle, log_transform_x=log_transform_x, + condition_shape=torch.Size([]), ) -class CategoricalNet(nn.Module): - """Class to perform conditional density (mass) estimation for a categorical RV. - - Takes as input parameters theta and learns the parameters p of a Categorical. - - Defines log prob and sample functions. - """ - - def __init__( - self, - num_input: int = 4, - num_categories: int = 2, - num_hidden: int = 20, - num_layers: int = 2, - embedding: Optional[nn.Module] = None, - ): - """Initialize the neural net. - - Args: - num_input: number of input units, i.e., dimensionality of parameters. - num_categories: number of output units, i.e., number of categories. - num_hidden: number of hidden units per layer. - num_layers: number of hidden layers. - embedding: emebedding net for parameters, e.g., a z-scoring transform. - """ - super(CategoricalNet, self).__init__() - - self.num_hidden = num_hidden - self.num_input = num_input - self.activation = Sigmoid() - self.softmax = Softmax(dim=1) - self.num_categories = num_categories - - # Maybe add z-score embedding for parameters. - if embedding is not None: - self.input_layer = nn.Sequential( - embedding, nn.Linear(num_input, num_hidden) - ) - else: - self.input_layer = nn.Linear(num_input, num_hidden) - - # Repeat hidden units hidden layers times. - self.hidden_layers = nn.ModuleList() - for _ in range(num_layers): - self.hidden_layers.append(nn.Linear(num_hidden, num_hidden)) - - self.output_layer = nn.Linear(num_hidden, num_categories) - - def forward(self, theta: Tensor) -> Tensor: - """Return categorical probability predicted from a batch of parameters. - - Args: - theta: batch of input parameters for the net. - - Returns: - Tensor: batch of predicted categorical probabilities. - """ - assert theta.dim() == 2, "input needs to have a batch dimension." - assert ( - theta.shape[1] == self.num_input - ), f"input dimensions must match num_input {self.num_input}" - - # forward path - theta = self.activation(self.input_layer(theta)) - - # iterate n hidden layers, input x and calculate tanh activation - for layer in self.hidden_layers: - theta = self.activation(layer(theta)) - - return self.softmax(self.output_layer(theta)) - - def log_prob(self, x: Tensor, theta: Tensor) -> Tensor: - """Return categorical log probability of categories x, given parameters theta. - - Args: - theta: parameters. - x: categories to evaluate. - - Returns: - Tensor: log probs with shape (x.shape[0],) - """ - # Predict categorical ps and evaluate. - ps = self.forward(theta) - return Categorical(probs=ps).log_prob(x.squeeze()) - - def sample(self, num_samples: int, theta: Tensor) -> Tensor: - """Returns samples from categorical random variable with probs predicted from - the neural net. - - Args: - theta: batch of parameters for prediction. - num_samples: number of samples to obtain. - - Returns: - Tensor: Samples with shape (num_samples, 1) - """ - - # Predict Categorical ps and sample. - ps = self.forward(theta) - return ( - Categorical(probs=ps) - .sample(torch.Size((num_samples,))) - .reshape(num_samples, -1) - ) - - -class MixedDensityEstimator(nn.Module): - """Class performing Mixed Neural Likelihood Estimation. - - MNLE combines a Categorical net and a neural spline flow to model data with - mixed types, e.g., as they occur in decision-making models. - """ - - def __init__( - self, - discrete_net: CategoricalNet, - continuous_net: DensityEstimator, - log_transform_x: bool = False, - ): - """Initialize class for combining density estimators for MNLE. - - Args: - discrete_net: neural net to model discrete part of the data. - continuous_net: neural net to model the continuous data. - log_transform_x: whether to transform the continous part of the data into - logarithmic domain before training. This is helpful for bounded data, e. - g.,for reaction times. - """ - super(MixedDensityEstimator, self).__init__() - - self.discrete_net = discrete_net - self.continuous_net = continuous_net - self.log_transform_x = log_transform_x - - def forward(self, x: Tensor): - raise NotImplementedError( - """The forward method is not implemented for MNLE, use '.sample(...)' to - generate samples though a forward pass.""" - ) - - def sample( - self, theta: Tensor, num_samples: int = 1, track_gradients: bool = False - ) -> Tensor: - """Return sample from mixed data distribution. - - Args: - theta: parameters for which to generate samples. - num_samples: number of samples to generate. - - Returns: - Tensor: samples with shape (num_samples, num_data_dimensions) - """ - assert theta.shape[0] == 1, "Samples can be generated for a single theta only." - - with torch.set_grad_enabled(track_gradients): - # Sample discrete data given parameters. - discrete_x = self.discrete_net.sample( - theta=theta, - num_samples=num_samples, - ).reshape(num_samples, 1) - - # Sample continuous data condition on parameters and discrete data. - # Pass num_samples=1 because the choices in the context contains - # num_samples elements already. - continuous_x = self.continuous_net.sample( - sample_shape=torch.Size((1,)), - # repeat the single theta to match number of sampled choices. - condition=torch.cat((theta.repeat(num_samples, 1), discrete_x), dim=1), - ).reshape(num_samples, 1) - - # In case x was log-transformed, move them to linear space. - if self.log_transform_x: - continuous_x = continuous_x.exp() - - return torch.cat((continuous_x, discrete_x), dim=1) - - def log_prob(self, x: Tensor, context: Tensor) -> Tensor: - """Return log-probability of samples under the learned MNLE. - - For a fixed data point x this returns the value of the likelihood function - evaluated at theta, L(theta, x=x). - - Alternatively, it can be interpreted as the log-prob of the density - p(x | theta). - - It evaluates the separate density estimator for the discrete and continous part - of the data and then combines them into one evaluation. - - Args: - x: data (containing continuous and discrete data). - context: parameters for which to evaluate the likelihod function, or for - which to condition p(x | theta). - - Returns: - Tensor: log_prob of p(x | theta). - """ - assert ( - x.shape[0] == context.shape[0] - ), "x and context must have same batch size." - - cont_x, disc_x = _separate_x(x) - num_parameters = context.shape[0] - - disc_log_prob = self.discrete_net.log_prob(x=disc_x, theta=context).reshape( - num_parameters - ) - - cont_log_prob = self.continuous_net.log_prob( - # Transform to log-space if needed. - torch.log(cont_x) if self.log_transform_x else cont_x, - # Pass parameters and discrete x as context. - condition=torch.cat((context, disc_x), dim=1), - ) - - # Combine into joint lp. - log_probs_combined = (disc_log_prob + cont_log_prob).reshape(num_parameters) - - # Maybe add log abs det jacobian of RTs: log(1/x) = - log(x) - if self.log_transform_x: - log_probs_combined -= torch.log(cont_x).squeeze() - - return log_probs_combined - - def log_prob_iid(self, x: Tensor, theta: Tensor) -> Tensor: - """Return log prob given a batch of iid x and a different batch of theta. - - This is different from `.log_prob()` to enable speed ups in evaluation during - inference. The speed up is achieved by exploiting the fact that there are only - finite number of possible categories in the discrete part of the dat: one can - just calculate the log probs for each possible category (given the current batch - of theta) and then copy those log probs into the entire batch of iid categories. - For example, for the drift-diffusion model, there are only two choices, but - often 100s or 1000 trials. With this method a evaluation over trials then passes - a batch of `2 (one per choice) * num_thetas` into the NN, whereas the normal - `.log_prob()` would pass `1000 * num_thetas`. - - Args: - x: batch of iid data, data observed given the same underlying parameters or - experimental conditions. - theta: batch of parameters to be evaluated, i.e., each batch entry will be - evaluated for the entire batch of iid x. - - Returns: - Tensor: log probs with shape (num_trials, num_parameters), i.e., the log - prob for each theta for each trial. - """ - - theta = atleast_2d(theta) - x = atleast_2d(x) - batch_size = theta.shape[0] - num_trials = x.shape[0] - theta_repeated, x_repeated = match_theta_and_x_batch_shapes(theta, x) - net_device = next(self.discrete_net.parameters()).device - assert ( - net_device == x.device and x.device == theta.device - ), f"device mismatch: net, x, theta: {net_device}, {x.device}, {theta.device}." - - x_cont_repeated, x_disc_repeated = _separate_x(x_repeated) - x_cont, x_disc = _separate_x(x) - - # repeat categories for parameters - repeated_categories = torch.repeat_interleave( - torch.arange(self.discrete_net.num_categories - 1), batch_size, dim=0 - ) - # repeat parameters for categories - repeated_theta = theta.repeat(self.discrete_net.num_categories - 1, 1) - log_prob_per_cat = torch.zeros(self.discrete_net.num_categories, batch_size).to( - net_device - ) - log_prob_per_cat[:-1, :] = self.discrete_net.log_prob( - repeated_categories.to(net_device), - repeated_theta.to(net_device), - ).reshape(-1, batch_size) - # infer the last category logprob from sum to one. - log_prob_per_cat[-1, :] = torch.log(1 - log_prob_per_cat[:-1, :].exp().sum(0)) - - # fill in lps for each occurred category - log_probs_discrete = log_prob_per_cat[ - x_disc.type_as(torch.zeros(1, dtype=torch.long)).squeeze() - ].reshape(-1) - - # Get repeat discrete data and theta to match in batch shape for flow eval. - log_probs_cont = self.continuous_net.log_prob( - torch.log(x_cont_repeated) if self.log_transform_x else x_cont_repeated, - condition=torch.cat((theta_repeated, x_disc_repeated), dim=1), - ) - - # Combine into joint lp with first dim over trials. - log_probs_combined = (log_probs_discrete + log_probs_cont).reshape( - num_trials, batch_size - ) - - # Maybe add log abs det jacobian of RTs: log(1/rt) = - log(rt) - if self.log_transform_x: - log_probs_combined -= torch.log(x_cont) - - # Return batch over trials as required by SBI potentials. - return log_probs_combined - - def _separate_x(x: Tensor, num_discrete_columns: int = 1) -> Tuple[Tensor, Tensor]: """Returns the continuous and discrete part of the given x. From 6ba90d6024f98fbfd0db76e7c376ac9d852d4d27 Mon Sep 17 00:00:00 2001 From: augustes Date: Sun, 24 Mar 2024 17:21:12 +0100 Subject: [PATCH 04/53] 1078 make intro tutorials for users consistent (#1100) * match order style, fix color issue * make HH tutorial more aligned with intro tutorial * clarify SNPE single round = NPE again * remove code snippet multi line instead of single line * add amortization note for new theta,x pair * unify linear gaussian simulator * Fixed flexible to avoid overlap with amortization * consistent with 00, change to sample with gt, more expressive variable names * Update 00_getting_started_flexible.ipynb * replace infer by flexible inference * fixed wording * remove import infer comment * removed HH rshort initial run example * added whitespace to ensure pre-commit runs * adjust specify your simulator here note --------- Co-authored-by: augustes Co-authored-by: lisahaxel <117662813+lisahaxel@users.noreply.github.com> --- examples/00_HH_simulator.ipynb | 123 ++++++++++----- tutorials/00_getting_started_flexible.ipynb | 108 +++++++------ tutorials/01_gaussian_amortized.ipynb | 161 ++++++++++++-------- tutorials/README.md | 5 +- 4 files changed, 250 insertions(+), 147 deletions(-) diff --git a/examples/00_HH_simulator.ipynb b/examples/00_HH_simulator.ipynb index 778bf67bc..269cd3663 100644 --- a/examples/00_HH_simulator.ipynb +++ b/examples/00_HH_simulator.ipynb @@ -8,7 +8,9 @@ "\n", "In this tutorial, we use `sbi` to do inference on a [Hodgkin-Huxley\n", "model](https://en.wikipedia.org/wiki/Hodgkin%E2%80%93Huxley_model) from\n", - "neuroscience (Hodgkin and Huxley, 1952). We will learn two parameters ($\\bar\n", + "neuroscience (Hodgkin and Huxley, 1952). \n", + "\n", + "We want to infer the posterior distribution of two parameters ($\\bar\n", "g_{Na}$,$\\bar g_K$) based on a current-clamp recording, that we generate\n", "synthetically (in practice, this would be an experimental observation).\n" ] @@ -43,7 +45,12 @@ "\n", "# sbi\n", "from sbi import utils as utils\n", - "from sbi.inference.base import infer" + "from sbi.inference import SNPE, simulate_for_sbi\n", + "from sbi.utils.user_input_checks import (\n", + " check_sbi_inputs,\n", + " process_prior,\n", + " process_simulator,\n", + ")" ] }, { @@ -64,10 +71,14 @@ "## Different required components\n", "\n", "Before running inference, let us define the different required components:\n", + "1. observational data - _the observations_ in this case a simulated volatge trace (or summary statistics thereof) \n", + "1. a candidate (mechanistic) model - _the simulator_ in this case the [Hodgkin-Huxley\n", + "model](https://en.wikipedia.org/wiki/Hodgkin%E2%80%93Huxley_model)\n", + "1. the - _prior_ over the model parameters in this case over ($\\bar\n", + "g_{Na}$,$\\bar g_K$)\n", "\n", - "1. observed data\n", - "1. prior over model parameters\n", - "1. simulator\n" + "\n", + "> Note: that you do not need to fully understand the details of the HH-model and model specific jargon to get an intuition for how SBI works in this scientific use case. " ] }, { @@ -95,7 +106,7 @@ "source": [ "## 2. Simulator\n", "\n", - "We would like to infer the posterior over the two parameters ($\\bar g_{Na}$,$\\bar g_K$) of a Hodgkin-Huxley model, given the observed electrophysiological recording above. The model has channel kinetics as in [Pospischil et al. 2008](https://link.springer.com/article/10.1007/s00422-008-0263-8), and is defined by the following set of differential equations (parameters of interest highlighted in orange):\n" + "We would like to infer the posterior over the two parameters ($\\color{orange}\\bar g_{Na}$,$\\color{orange}\\bar g_K$) of a Hodgkin-Huxley model, given the observed electrophysiological recording above. The model has channel kinetics as in [Pospischil et al. 2008](https://link.springer.com/article/10.1007/s00422-008-0263-8), and is defined by the following set of differential equations (parameters of interest highlighted in orange):\n" ] }, { @@ -105,13 +116,15 @@ "$$\n", "\\scriptsize\n", "\\begin{align}\n", - "C_m\\frac{dV}{dt}&=g_1\\left(E_1-V\\right)+\n", - " \\color{orange}{\\bar{g}_{Na}}m^3h\\left(E_{Na}-V\\right)+\n", - " \\color{orange}{\\bar{g}_{K}}n^4\\left(E_K-V\\right)+\n", + "\\color{black}\n", + "C_m\\frac{dV}{dt}& \\color{black} =g_1\\left(E_1-V\\right)+\n", + " \\color{orange}{\\bar{g}_{Na}}\\color{black}m^3h\\left(E_{Na}-V\\right)+\n", + " \\color{orange}{\\bar{g}_{K}}\\color{black}n^4\\left(E_K-V\\right)+\n", " \\bar{g}_Mp\\left(E_K-V\\right)+\n", - " I_{inj}+\n", + " I_{inj}+\\color{black}\n", " \\sigma\\eta\\left(t\\right)\\\\\n", - "\\frac{dq}{dt}&=\\frac{q_\\infty\\left(V\\right)-q}{\\tau_q\\left(V\\right)},\\;q\\in\\{m,h,n,p\\}\n", + "\\color{black}\n", + "\\frac{dq}{dt}&\\color{black}=\\frac{q_\\infty\\left(V\\right)-q}{\\tau_q\\left(V\\right)},\\;q\\in\\{m,h,n,p\\}\n", "\\end{align}\n", "$$\n" ] @@ -138,6 +151,7 @@ "source": [ "from HH_helper_functions import syn_current\n", "\n", + "# current, onset time of stimulation, offset time of stimulation, time step, time, area of some\n", "I_inj, t_on, t_off, dt, t, A_soma = syn_current()" ] }, @@ -145,7 +159,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The Hodgkin-Huxley simulator is given by:\n" + "The Hodgkin-Huxley simulator takes the parameters as input together with other arguments such as the initial voltage state, the integration timestep, time and injected current:\n" ] }, { @@ -179,12 +193,12 @@ "\n", " t = np.arange(0, len(I_inj), 1) * dt\n", "\n", - " # initial voltage\n", - " V0 = -70\n", + " # initial voltage V0\n", + " initial_voltage = -70\n", "\n", - " states = HHsimulator(V0, params.reshape(1, -1), dt, t, I_inj)\n", + " voltage_trace = HHsimulator(initial_voltage, params.reshape(1, -1), dt, t, I_inj)\n", "\n", - " return dict(data=states.reshape(-1), time=t, dt=dt, I_inj=I_inj.reshape(-1))" + " return dict(data=voltage_trace.reshape(-1), time=t, dt=dt, I_inj=I_inj.reshape(-1))" ] }, { @@ -216,7 +230,7 @@ "outputs": [ { "data": { - "image/png": "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8EIAQnLC0qVL8Y9//EPxdyZPnoylS5fin//8p/jckiVLMHnyZABA7969kZeXh6VLl4pCrbGxEevWrcOcOXP8jsVgMMBgMIiP3fkakXKZMgyjChckx3ERdxsTBEEQhBrWRAAwm80Rff/k5OT2tRQfRT7//HPeYDDwH3zwAb97927+pptu4tPS0vjy8nKe53n+mmuu4e+9917x+FWrVvFarZZ/9tln+T179vAPP/wwr9Pp+B07dojHPPXUU3xaWhr/3Xff8du3b+cvuOACvnfv3nxra2vA4youLuYB0D/6R//oH/2jf/SP/nXav4aGhnY1Ski9SsPFZZddhqqqKixYsADl5eUYNWoUFi9eLCYXFBUVyeKrpkyZgk8//RQPPvgg7r//fvTv3x/ffvsthg0bJh5z9913w2w246abbkJ9fT1OPPFELF68GEajMeBx5efno7i4ODDlGyJud2xxcXFMmF4Jgug4dF0TRNeks67t5OTkdo8Juo4bER6oVhxBdD3ouiaIrkksXduULkgQBEEQBKESSLgRBEEQBEGoBBJuUcJgMODhhx+WZbMSBKFu6LomiK5JLF3bFONGEARBEAShEsjiRhAEQRAEoRJIuBEEQRAEQagEEm4EQRAEQRAqgYQbQRAEQRCESiDhFgVee+01FBYWwmg0YuLEiVi/fn20h0QQRBCUlJTg6quvRmZmJkwmE4YPH46NGzeKr/M8jwULFqBbt24wmUyYNm0aDhw4EMUREwThzYoVK3DeeechPz8fDMPg22+/FV+z2+245557MHz4cCQmJiI/Px/XXnstSktLZe9RW1uLq666CikpKUhLS8OsWbPQ3Nwc0XGTcOtkFi1ahPnz5+Phhx/G5s2bMXLkSEyfPh2VlZXRHhpBEAFQV1eHE044ATqdDr/88gt2796N5557Dunp6eIxzzzzDF5++WUsXLgQ69atQ2JiIqZPnw6LxRLFkRMEIcVsNmPkyJF47bXXfF5raWnB5s2b8dBDD2Hz5s34+uuvsW/fPpx//vmy46666irs2rULS5YswY8//ogVK1bgpptuiuzAA+68ToSFCRMm8HPnzhUfO51OPj8/n3/yySejOCqCIALlnnvu4U888US/r3Mcx+fl5fH/93//Jz5XX1/PGwwG/rPPPuuMIRIEESQA+G+++abNY9avX88D4I8dO8bzPM/v3r2bB8Bv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", + "image/png": "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", "text/plain": [ "
" ] @@ -235,12 +249,14 @@ "fig = plt.figure(figsize=(7, 5))\n", "gs = mpl.gridspec.GridSpec(2, 1, height_ratios=[4, 1])\n", "ax = plt.subplot(gs[0])\n", + "# plot the three voltage traces for different parameter sets\n", "for i in range(num_samples):\n", " plt.plot(t, sim_samples[i, :], color=col1[i], lw=2)\n", "plt.ylabel(\"voltage (mV)\")\n", "ax.set_xticks([])\n", "ax.set_yticks([-80, -20, 40])\n", "\n", + "# plot the injected current \n", "ax = plt.subplot(gs[1])\n", "plt.plot(t, I_inj * A_soma * 1e3, \"k\", lw=2)\n", "plt.xlabel(\"time (ms)\")\n", @@ -279,7 +295,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Lastly, we define a function that performs all of the above steps at once. The function `simulation_wrapper` takes in conductance values, runs the Hodgkin Huxley model and then returns the summary statistics.\n" + "> Note: the summary features depend on the simulator and observations under investigation. Check out our tutorials on crafting summary statistics. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Lastly, we define a function that performs all of the above steps at once, to have one object we pass to the inference method as our simulator. The function `simulation_wrapper` takes in the parameters, runs the Hodgkin Huxley model and then returns the summary statistics." ] }, { @@ -303,7 +326,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "`sbi` takes any function as simulator. Thus, `sbi` also has the flexibility to use simulators that utilize external packages, e.g., Brian (http://briansimulator.org/), nest (https://www.nest-simulator.org/), or NEURON (https://neuron.yale.edu/neuron/). External simulators do not even need to be Python-based as long as they store simulation outputs in a format that can be read from Python. All that is necessary is to wrap your external simulator of choice into a Python callable that takes a parameter set and outputs a set of summary statistics we want to fit the parameters to.\n" + "> Note: `sbi` takes any function as simulator. Thus, `sbi` also has the flexibility to use simulators that utilize external packages, e.g., Brian (http://briansimulator.org/), nest (https://www.nest-simulator.org/), or NEURON (https://neuron.yale.edu/neuron/). External simulators do not even need to be Python-based as long as they store simulation outputs in a format that can be read from Python. All that is necessary is to wrap your external simulator of choice into a Python callable that takes a parameter set and outputs a set of summary statistics we want to fit the parameters to.\n" ] }, { @@ -315,6 +338,13 @@ "Now that we have the simulator, we need to define a function with the prior over the model parameters ($\\bar g_{Na}$,$\\bar g_K$), which in this case is chosen to be a Uniform distribution:\n" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> Note: This is where you would incorporate prior knowlegde about the parameters you want to infer, e.g., ranges known from literature. \n" + ] + }, { "cell_type": "code", "execution_count": 10, @@ -325,16 +355,30 @@ "prior_max = [80.0, 15.0]\n", "prior = utils.torchutils.BoxUniform(\n", " low=torch.as_tensor(prior_min), high=torch.as_tensor(prior_max)\n", - ")" + ")\n", + "\n", + "# Check prior, simulator, consistency\n", + "prior, num_parameters, prior_returns_numpy = process_prior(prior)\n", + "simulation_wrapper = process_simulator(simulation_wrapper, prior, prior_returns_numpy)\n", + "check_sbi_inputs(simulation_wrapper, prior)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Inference\n", + "## Running inference\n", "\n", - "Now that we have all the required components, we can run inference with SNPE to identify parameters whose activity matches this trace.\n" + "Now that we have all the required components, we can run inference with `SNPE` to identify parameters whose activity matches this trace." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> Note, that here we perform Neural Posterior Estimation (NPE). Single round sequential NPE which we call via SNPE corresponds to NPE. \n", + "\n", + "> Note that this might take a few minutes." ] }, { @@ -345,7 +389,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "340b3db396c44d1e9852bbcd6edff7f4", + "model_id": "c8e6c327340b4b409dece919757b7625", "version_major": 2, "version_minor": 0 }, @@ -360,21 +404,29 @@ "name": "stdout", "output_type": "stream", "text": [ - " Neural network successfully converged after 197 epochs." + " Neural network successfully converged after 296 epochs." ] } ], "source": [ - "posterior = infer(\n", - " simulation_wrapper, prior, method=\"SNPE\", num_simulations=300, num_workers=4\n", - ")" + "# Create inference object. Here, NPE is used.\n", + "inference = SNPE(prior=prior)\n", + "\n", + "# generate simulations and pass to the inference object\n", + "theta, x = simulate_for_sbi(simulation_wrapper, proposal=prior,\n", + " num_simulations=300, num_workers=4)\n", + "inference = inference.append_simulations(theta, x)\n", + "\n", + "# train the density estimator and build the posterior\n", + "density_estimator = inference.train()\n", + "posterior = inference.build_posterior(density_estimator)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Note `sbi` can parallelize your simulator. If you experience problems with parallelization, try setting `num_workers=1` and please give us an error report as a [GitHub issue](https://github.com/mackelab/sbi/issues).\n" + "> Note: `sbi` can parallelize your simulator. If you experience problems with parallelization, try setting `num_workers=1` and please give us an error report as a [GitHub issue](https://github.com/mackelab/sbi/issues).\n" ] }, { @@ -411,7 +463,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "As we already shown above, the observed voltage traces look as follows:\n" + "As we have already shown above, the observed voltage traces look as follows:\n" ] }, { @@ -421,7 +473,7 @@ "outputs": [ { "data": { - "image/png": "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62/6+6dPn0avXr3QrFkzzJo1C/Xq1YO/vz/++OMPfPzxx3a9BhG5HwM3IpJUdHQ0goODkZKSYvWz48ePQ61Wo169emaPnzx50mw2Z0FBAS5fvox+/fqZPa9Lly7o0qUL3n33XXz//fcYMWIEli1bhsceewyNGjXC2rVr0b179yqDMns0aNAAnTt3xvLly/HUU0/hp59+wsCBAxEQECA+x96/lZCQIL4/02HjK1euWM0+rer3161bh4KCArOsm2XfZmdnY926dXj77bcxbdo08fGTJ09avabpkK2p33//HaWlpfjtt99Qv3598XHLIWYiql4cKiUiSWk0GvTu3Ru//vqrONQJABkZGfj+++9x2223ITQ01Ox35s+fb1a7NmfOHFRUVOCee+4BYAhMBEEw+5127doBgDhcOnToUOh0OkyfPt2qTRUVFQ4tODts2DBs374dCxYsQFZWltkwqSN/Kzk5GVqtFp999plZ+2fPnm1XO/r164eKigqzJTl0Oh0+++wzs+dpNBoAsOojW3+nRo0aAGDVH7ZeIzc3FwsXLrSrrUQkDWbciEhy77zzDtasWYPbbrsNEydOhJ+fH+bNm4fS0lLMnDnT6vllZWXo1asXhg4dipSUFHzxxRe47bbbcN999wEAFi9ejC+++AIPPPAAGjVqhPz8fHz55ZcIDQ0Vs3I9evTA448/jhkzZmD//v3o3bs3tFotTp48iRUrVuCTTz4xW4ftRoYOHYoXXngBL7zwAiIjI5GcnGz2c3v/VnR0NF544QXMmDED9957L/r164d9+/bhzz//FJfiuJEBAwage/fuePnll3Hu3Dm0aNECP/30k1W9WWhoKO644w7MnDkT5eXlqFOnDlavXo2zZ89avWbHjh0BAK+99hoeeughaLVaDBgwAL1794a/vz8GDBiAxx9/HAUFBfjyyy8RExODy5cv29VvRCQBz05qJSJfsXfvXqFPnz5CSEiIEBwcLNx1113C1q1bzZ5jXA5k48aNwoQJE4SIiAghJCREGDFihHD16lWz13r44YeF+vXrCwEBAUJMTIxw7733Crt377b6u/Pnzxc6duwoBAUFCTVr1hRat24tvPTSS8KlS5fE5yQkJAj9+/e/Yfu7d+8uABAee+yxKp9jz9/S6XTC22+/LcTHxwtBQUHCnXfeKRw+fFhISEi46XIggiAIV69eFR59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XYuBAweiZs2aUKvViImJwapVqxAREQEASE9PNwvaAIjfG4dTbZkxYwbefvttq8cZwBEREVF1qVmz5k130PB44Pbyyy/j/fffv+Fzjh07hqZNm2LSpEmIiYnB5s2bERQUhK+++goDBgzArl27EB8f73QbXnnlFUyZMkX8/uLFi2jRogXq1avn9GsSEREROcKeEi2P17hduXIFV69eveFzGjZsiM2bN6N3797Izs42e1NNmjTBuHHj8PLLL2PatGn47bffsH//fvHnZ8+eRcOGDbF37160b9/erjbp9XpcunTJrsiXiIiIyB1kkXGLjo5GdHT0TZ9XVFQEAFCrzcvy1Go19Ho9AKBr16549913kZmZiZiYGADAmjVrEBoaihYtWtjdJrVajbp169r9fCIiIqLqIJvJCV27dkVERARGjRqFAwcO4MSJE3jxxRdx9uxZ9O/fHwDQu3dvtGjRAo8++igOHDiAv/76C6+//jomTZqEgIAAD78DIiIiItfIJnCLiorCqlWrUFBQgJ49e6JTp07YsmULfv31V7Rt2xYAoNFosHLlSmg0GnTt2hWPPPIIRo4ciX/9618ebj0RERGR6zxe40ZERERE9pFNxo2IiIjI1zFwIyIiIpIJBm5EREREMsHAjYiIiEgmGLgRERERyQQDNyIiIiKZYOBGREREJBMM3IiIiIhkgoEbERERkUwwcCMiIiKSCQZuRERERDLBwI2IiIhIJhi4EREREckEAzciIiIimWDgRkRERCQTDNyIiIiIZIKBGxEREZFMMHAjIiIikgkGbkREREQywcCNiIiISCYYuBERERHJBAM3IiIiIplg4EZEREQkEwzciIiIiGSCgRsRERGRTHg8cPv888+RmJiIwMBAJCUlYefOnVU+d9GiRVCpVGZfgYGBZs8ZPXq01XP69u0r9dsgIiIikpyfJ//48uXLMWXKFMydOxdJSUmYPXs2+vTpg5SUFMTExNj8ndDQUKSkpIjfq1Qqq+f07dsXCxcuFL8PCAhwf+OJiIiIqplHM26zZs3C+PHjMWbMGLRo0QJz585FcHAwFixYUOXvqFQqxMXFiV+xsbFWzwkICDB7TkREhJRvg4iIiKhaeCxwKysrw549e5CcnFzZGLUaycnJ2LZtW5W/V1BQgISEBNSrVw/3338/jhw5YvWcDRs2ICYmBk2bNsWTTz6Jq1ev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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmoAAAHTCAYAAACX/zRfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB8kUlEQVR4nO3dd3iT5foH8G9Gd0sLdNCyyt6rbEQEEUEQBBd7o4goiPMoKgfX8afiPigIVBFQBEWG4OCIYtmUXcrepQVK6d7J8/sjJE2aFLLerPf7uS4uaRLSJ69J3vu9n/u5H4UQQoCIiIiIPI7S3QMgIiIiIssYqBERERF5KAZqRERERB6KgRoRERGRh2KgRkREROShGKgREREReSgGakREREQeioEaERERkYdioEZERETkoRioEZHX+frrrxEfH+/uYdhFoVDgr7/+suqxtrxOIQTmz59v/8CIyCMxUCMi8gFbt27F9OnT3T0MInIyBmpERD6A2zYT+SYGakTkkS5duoRHH30UNWrUQGRkJGbMmIGSkhKTx7zyyiuoVq0aateujc8++8xw+4ULF3DvvfciNDQU0dHRePrpp1FWVgZAF9C8+eabiIuLQ0REBAYPHowLFy4Y/q1CocDrr7+OyMhIDBkyBLVr10ZiYqLhfiEE6tSpg2XLlgEA/vnnH3Tq1AlBQUFo06YNfvzxR5MxvvHGG4iOjkZkZCQWL158y9d8+fJl3HfffQgJCUFCQgJOnz5tcv+6devQoUMHBAYGIiIiAiNHjkR+fj7OnTuHPn36GMb/119/obS0FM8++yxq164NPz8/xMfHY+HChdYefiLyFIKIyMOUlJSIJk2aiIEDB4pDhw6J//3vf6Jhw4ZixowZQgghEhMTBQAxaNAgceTIEfH1118Lf39/sWXLFiGEEEOGDBHDhg0TJ0+eFNu2bRO1atUS//3vf4UQQnz66aeiWbNmYsuWLSI1NVVMnjxZNGvWTJSWlgohhAAg2rdvL44dOyZSUlLEzJkzxf33328Y2/bt20VgYKDIzc0V6enpolq1auKzzz4TJ0+eFN9++60IDQ0VW7duFUIIsWDBAlG9enWxfv16sX//ftG9e3cBwDDOyrp37y769esnjhw5Ir7//nsRGhoq6tevL4QQ4tSpU8LPz08sXLhQnD17Vvz2228iMjJSzJs3T5SXl4sff/xRABDp6emipKRE/Pvf/xZNmzYVO3bsEKdPnxavv/668PPzExkZGRL8HyMiqTBQIyKPs3btWhEcHCyysrIMt23atEmo1WqRl5cnEhMTRWBgoMjMzDTcP2HCBDF8+HAhhBBt27YVEyZMMARf+/btE2fPnhVCCFGnTh2xbt06w78rLy8XUVFRhtsAiC+++MJw/44dO0RAQIDIzc0VQgjx7LPPigcffFAIIcSrr75q+Lue8f2dOnUSb7zxhuG+lJSUKgO1I0eOCADi/PnzhtteeOEFQ6B24sQJ8eWXX5r8mxEjRohJkyYJIYTYsmWLML72XrNmjfjnn38MPxcXFwsAhiCSiLwDpz6JyOOkpqaiadOmqF69uuG2Hj16oLy8HKdOnQIANGzYEDVr1jTcn5CQgNTUVADAiy++iOXLlyMqKgojR47E+fPnER8fj/z8fFy6dAnDhw9HaGgoQkNDER4ejuvXr+PEiROG5zJeadmtWzfExsbil19+AQD89NNPGDFihGGc69evNzxXaGgoPv/8c8NzHT16FO3btzc8V8uWLRESEmLxNR89ehQ1atRAvXr1DLd17tzZ8PcmTZrgvvvuw9tvv42RI0eibdu2+OGHH6DRaCw+39ChQ1FUVITnnnsOgwYNMrymqh5PRJ6JgRoReZzAwECz2/QBhv6/KpXK5H6tVgt/f38AwOjRo3HhwgW8++67yMvLw8MPP4xXX30V5eXlAIBVq1bhwIEDhj/Hjx/HxIkTq/z9w4cPx48//ojk5GRcu3YNgwYNAgCUl5djzJgxJs+VkpKCDRs2GP6tqFTk7+fnV+XrrvxY/esBgIMHD6JVq1Y4evQoevXqhcWLFxsCRkteffVVjBkzBn5+fhg3bhx27txZ5WOJyHMxUCMij9OsWTOcOHECWVlZhtt27NgBtVqNRo0aAQBOnz6NwsJCw/27d+9G8+bNAQCzZ8/GlStX8MQTT2DDhg1466238OOPPyIiIgLR0dHIyMhA48aN0bhxY9SrVw8vvvgijh8/XuV4RowYgd9//x2rV6/GkCFDEBwcbBjnyZMnDc/VuHFjrF27FsuXLwcAtG7dGnv27DE8z7lz55CdnW3xd7Ru3Ro3btwwZAwBYP/+/Ya/f/vtt+jVqxeWL1+OadOmoXPnzjh58qQhuFMoFCbP9+WXX+Lzzz/Hu+++i+HDh6OgoAAAV4cSeRsGakTkcfr164eGDRti7NixOHz4MLZs2YKnn34ao0aNQkREBACguLgY48ePR0pKChYsWIBVq1bhmWeeAQAcO3YMTz31FA4dOoSUlBRs3LgRHTp0AAA8++yzmD17NtavX4+TJ09iypQp2LZtmyHIs6R9+/aIi4vD559/juHDhxtuf/LJJ7F37168+uqrOHnyJFasWIFXXnkF9evXBwA8/fTT+OSTT/Djjz/iyJEjmDx5MpRKy1+7LVq0QN++fTFp0iQcOnQIa9euNVnJWrNmTRw6dAi7d+/GiRMn8Nxzz2HPnj2GlbD6KdXk5GQUFxejZs2aWL9+Pc6cOYOkpCSMHTsWAMxWzhKRh3NviRwRkWVnzpwRAwcOFEFBQSI6OlrMmjVLFBUVCSF0qz4TEhLEzJkzRUhIiKhfv75YtmyZ4d9euXJFPPTQQyIiIkKEhoaK4cOHi2vXrgkhdIsHZs+eLWrVqiWCg4NFr169xP79+w3/FlUU+8+ZM0eEh4eL4uJik9v/+OMPkZCQIPz9/UWDBg3EZ599ZnL/hx9+KGJjY0V4eLh49913Rc2aNatc9ZmZmSmGDRsmgoODRYsWLcTcuXMNiwny8/PFI488IsLCwkRUVJR46KGHxOuvvy6aNm0qhNAtFujXr5/w9/cXP/74o0hKShJt2rQRgYGBolGjRuLdd98VXbp0Ee+8844t/xuIyM0UQjAPTkREROSJOPVJRERE5KEYqBERERF5KAZqRERERB6KgRoRERGRh2KgRkREROShGKgREREReSgGagAKCwuxb98+ky7nRERERO7GQA26LuYdO3bEsWPH3D0UIiIiIgMGakREREQeioEaERERkYdioEZERETkoRioEREREXkoBmpEREREHoqBGhEREZGHYqBGRERE5KEYqBERERF5KAZqRERERB6KgRoRERGRh2KgRl7jRkEp8orL3D0MIiIil2GgRl6jw5t/4K73/3L3MFxmxnf70fv9Le4ehkdZeyANz6484O5heKVF/5zB6uRL7h6GLBSVavDhHydQUq5x91DIBzBQI6+SVVDq7iG4zLqDl3HueqG7h+FRXlh9CD/tT0O5RuvuoXidt35JxfOrDrp7GLLw+9EMfPq/k9hwMN3dQyEfwECNiLxGgEr3lZVfUu7mkRBVraRMdyFRVMaMGjmOgRqRh2P2qIJSqQAA5BYxUCPPVa4V7h4C+RAGakQerqCEV+V6Kn2gxkUl5MEEdIFaYSkvKMhxDNTI6wghr6vVYhYkG+gDtcJSHhPyXPqvqHxeZJETMFAjr1Mqs6nAYta5GPjfrFHjajr7lZbL6/PjDvpLyfxiZtTIcQzUyOsUl8nrRCO313srAeqbgRqPiU2M6xxZ4O4CN1NqzIaTMzBQI69TIrMTDTNqFfxvBmo8AdqmTFNRLsCMmvT0awl4rMkZGKiR15FLhslPpavHYgakAjNq9tEa1XXKrXTAHfR1tCUM1MgJGKiR15FLNiVArQLAjJoxtaFGjSdAWxgHanLLSLuD/miXyuS7iqTFQI28jlwCF332SC4ZRGvoMxVyeQ84i/E6aWbUpCc49UlOxECNvI5cAhc/rnA0o6/9YUbNNsLocHHaWHpaTn2SEzFQI68jl6tU9c0aNeNCcLnTHwlm1GwjwBo1d5DLdxVJi4EaeZ0yrTy+/PTNXbmFlBFmKuxivKMRgwfpCWZ+yYkYqJHXKZPJl5/+y76MgZqBPt7gdLBtjHfz4LGTnn7qk0ExOYNXBmqDBg3ChAkTDD/v378fXbt2RXBwMDp37ozk5GT3DY4kJ5epQP10ValMXq819PFGOY+JTZhRcy3Dqk9eZJETeF2g9v3332Pjxo2GnwsKCjBw4EDceeedSE5ORo8ePTBo0CAUFBS4cZQkJblkmJhRM6fPVJTLZPrbWYxr1DgdJz3D1CdrKckJvCpQy8rKwgsvvIDOnTsbblu5ciWCgoLw/vvvo0WLFvj4448RFhaGVatWuXGk5GzGUzdyCVwMgRpPrAYVwSszajYxOlwM1KRXkQ3nsSbHeVWg9vzzz2Ps2LFo2bKl4badO3eiZ8+eUCh0hdcKhQJ33HEHduzY4a5hkgSM4jTZnKT1wWmZVh6v1xr6IyGXYN1ZtAzUXKoio8ZjTY5Tu3sA1vrzzz+xdetWHD58GNOmTTPcnp6ejlatWpk8NiYmBkeOHKnyudLT05Genm74OTU11fkDJqcyDlXkcpJmUGJOH7yyRs02xlOfXEUsvYqLLB5rcpxXBGrFxcWYOnUq/vvf/yIoKMjkvsLCQgQEBJjcFhAQgJKSkiqfb8GCBZg7d64kYyVpyHHqU1+PxalPc5xSso1xRo1BrvS46IWcySsCtblz56JTp07o37+/2X2BgYFmQVlJSQmCg4OrfL6pU6diyJAhhp9TU1MxZswY5w2YnE4ry6lP3X/lEphao+IEyGNiC5MLHWZ5JKf/virXCgghDKU5RPbwikDt+++/R0ZGBkJDQwHAEJitXr0ao0aNQkZGhsnjMzIyEBsbW+XzxcbG3vJ+8jzGUzdyCVwMU5+sUTOoWPXJY2ILwYyaS5lMNWsF/FQM1Mh+XrGY4K+//sLhw4dx4MABHDhwAEOGDMGQIUNw4MABdOvWDdu3bzdcMQohsG3bNnTr1s3NoyZnMj3RyCRQ49SnGUN/Kh4Tm8jx8+NODIzJmbwio1a/fn2Tn8PCwgAAjRs3RnR0NP71r3/hmWeewdSpU7FgwQIUFBTg0UcfdcdQSSLGX3xyaQDLqU9zghk1u2iFaYaHpGWy+EmrRRBUbhsLeT+vyKjdSrVq1bBhwwb8888/6NixI3bu3ImNGzciJCTE3UMjJ5L11KdMAlNrcCWsfYzfQQzUpGdcE8iMGjnKKzJqlX399dcmP3fp0gX79u1zz2DIJeQ4dWPYL1Amr9cqbHhrF60MV027kxy/r0g6Xp9RI3kwPtHIbeqTX/QVDIsJeExswpop1zKZAWAGkxzEQI28giwb3uoXE/DEasCpT/uYTMWxPYfktMyokRMxUCOvYLqFlDy++PSvmVOfFbjXp31ML3R47KQmxy3vSDoM1Mg7yHDqhtkjc/opJR4T2+gDB3+VkhkeFzCe+tRw6pMcxECNvIJpjZo8TjQVU5/yeL3WEAJQKLhy0Vb6z4+/Wslj5woynAEg6TBQI68gxxo1/flUJi/XKkLoskJsAmwb/XWOn0ohm4y0O7FvHTkTAzXyCvrskr9KKZupBP30iYbF3wZCCPirldyv0kamGTUeO6mxPQc5EwM18gr62EytUsgnUBM3MyAyeb3WENDXWfGY2MNPpWRxuwsIwLC/J483OYqBGnkFfXZJrZRP4KIL1BiUGDMcE60waTlBt6Y1ykgzoyY9rRDwU+lOrzze5CgGauQd9KvW1PKa+vST0VSvNQQE1DczFTwu1quoUWNGzRWE0H1XAfJZpU7SYaBGXsEw9amUz6q1iqlPXpHr6RcTACzStoVJjRprplxCn1GTy+Inkg4DNfIK+qlPP7VCNicaXZ0LM2rGtALMqNlBf6RY8+gaQgheUJDTMFAjr2A8dSOXE7RW6Kb5+EVvTECt5AnQVvp6PtY8uobWaOqTGTVyFAM18gr6qRs/uU19KpXQ8MRqoJ8OBphRs4VhZwK253AJXX2p7n3KwJgcxUCNvIL+RCOX9hwmGRAZvF5rCQBqrqazmf4txNYmriEEjDK/fJ+SYxiokVdRy6S9gGGqV83FBMaEEMyo2cE48GezYOkJACqlAiqlgqtsyWEM1MgrVGwqrZDFVKD+Fcpplas1tKJiNR0zQ9bTGgJ/ZtRcQQgBheJm30fWqJGDGKiRV9DXqMklcDHeMksIQCuD12wNIQTUSmbUbKVfNe3PPmouIQSgAEsXyDkYqJFXMGSYZFKjZrxlFsAVjnqmNWo8JlYzLCbgVLorCAEoFAooFbygIMcxUCOvIEy2wPH9Lz7Dllk3gxJ+2d/EVZ92MUx9qriK2BW0+qlPmXxfkbQYqJFXkNum7MY1eQBXjunpmwADPCa2MDSM5mIClxDQTX2qlAqWLZDDGKiRl6jIMMnhBG3c4Bdg9khPKyoa3vKYWM8ko8bjJjn91KdayYbV5DgGauQVKjJM8jjRVJ765Je9jnHDWx4T61WUDjBwcAUBAaVCl1GTw/cVSYuBGnmFik3Z5XGiqciosbu5MQHBvT7tUNEwmquIXUG36pMZNXIOBmrkFYwzTHI40RhvmQWwHkvPpOM7g1erGdeoAWCdmsTEzf4cSqUCGh5rchADNfIK5sX1vn2SNm5HAjB7pKdbTMBjYit9rMBj5xoCgPJmw1v2uyVHMVAjr6AVphkBXz/RVF5M4OuBqdUEV33aQ//u8Vfz/eQK2ptTnyqlkhk1chgDNfIKxjU2gO+fpA3F32p5BKbW0grB3nJ2MN7ZAwB7qUnMZAspvk/JQQzUyKv4y2TqxhCYKrmYwJgA4KeUx/S3M1VenMIaNWkJAAqu+iQnYaBGXsGQEZDJVKD+1cllqtdaghk1uzBD62ICUCoUUDGjRk7AQI28QsXUpzwyahU1edyZwJjxYgKeAK1nWJzCFbMuof/8MqNGzsBAjbyCIcOklElGzawmz7dfr7WEMM4yMni1ltwudNzNeGcCHmtyFAM18gqicobJx9e8V+57xQxIxXtAzSbANtO/n/xlshjH3QSEYa9PBmrkKLW7B0BkDa3MMkyV+8bxy96oIJ57fdqsckbN1z8/7qYVuj5qSoWCQTE5jIEaeQnTjJqvn6Tl1o7EGob/4zdX0zHYsB5r1FxLP/WpVDCjRo7j1Cd5BbMGsD5+oqk89ckv+4qpT04p2a5y6QCPndT0U5/MXpLjGKiRV6g89enrJxqtITDlVJWe/ggoFdzs2l7c1cE1KhYTKH3+u4qkx0CNvIIhI6CUR7sKUbmTPL/sDS0PKhqJ+vZ7wJnMatR8PCPtbtqbOxMw80vOwECNvILcGsCadZL38VWu1tAfE27NYztOpbuWgG6Knu9TcgYGauQVDA1gZbKpdOWaPJ5YKxg2u2ZWyGpmW5Lx/SQp3dQnM2rkHAzUyDsYWjPIoxjarI+aj79eazCj5jjWqLmGVghuIUVOw0CNvIJh6lNmGTWVUgGFwvcDU2uIigYdzFTYSG6rpj0BaynJWRiokVcwbMpuyKj59pefceE8s0c6+mCDmQrb6Y+USiYZaXcTQjdFr9tCyt2jIW/HQI28gtwyAvpXZ+gZxm97s+DV14N1Z9KvIvbnVLpLCOhXfSr5PiWHMVAjryDXVZ9Kpa4XE0+sxsErM2q2MuxMoJJHext302pv9lFT8X1KjmOgRl7BMPUpkwaw7MJvzngxgUqpgJbHxHrso+ZS3JSdnImBGnkHmW3IbcgesUatgj5QA5ipsJFhFbFMPj/uZmjPoVAwKCaHMVAjr6A/0cgno6b7r+Jm4TxPrBXvAd0x4dY8tqicjfT1z4+7CVQsetHPBhDZi4EaeYXKW+D4eoGu1mjqkxk1Ha1RsMFjYpuKDO3NfVK5OEVSQgh+dslpGKiRV9B/18mlNYNJRk3FFY4A6/achcGD9MTNPaR0n10ea3IMAzXyCnI7Seun+ZQKcNXnTWZZIR4Tq+lrpgB5fH7cTT/1yewlOQMDNfIK+tNKxZefb59oDBk1fSsKH3+91qg4Juz4biv9KkQAUKsY+EtNe3PqU6lgUEyOY6BGXkEYNTvVTX369km68r6W/LI3yjIqIYtg3ZmM69l57KSnz2Ay80vOwECNvIJxhkkOX34VKxzlEZhawzTLyFWfthDQTRkD3NXBFXQlagqoVEqu+iSHMVAjr2CoT1Le3JbFxzMC2kqBKYMSo6wQMxW2ExVTnyr2oJOeEBWZXx5rchADNfIKcmtXYTzVq1YpOVUFoywjuJrOVrqMmu7vamYjJac7vLr6UiHAXTTIIQzUyCsYt6tQy+Akbbx4gqv0dEzeA5wOtokQuuwsoLvQKWPgLyn9puxqpTwadJO0GKiRV6gIXGSYUZPB67WG0cwng1cbCV2kBoArZl1BCN13lUqpb9DN9yrZj4EaeYWKPmoKWZxozFtR8Ite/x7Qt2hhVsg2Fe05GPhLTSsqvqsAQMMFBeQABmrkFUzbVfh+Hyjz5q6+HZhaw3S/Sq6ms4VxjRpXzEpPCNOpT19f/ETSYqBGXqFyuwpfP9Hoi4/1QYmvv15rGGcZ2QvMNsY1an7MRrqELhuuO8XyQoscwUCNvIL+e04BhSymbozrsVijpqMP1iGTYN2ZTDNqvl864G66hreKiowa36vkALUzniQ3NxcHDhzA1atXoVQqUatWLbRt2xahoaHOeHoio6nAmycaH88I6LNHSv2m7KW+/XqtYd70mMGGtYQQrFFzIe3NqU8lV32SE9gdqJWXl2PlypWYP38+du/eDbVajerVq0Or1SIrKwsKhQI9evTAY489huHDh0OlUjlz3CQzQs591DjNB8B05S/7qNmPU+nS0+9MwIwaOYNdU5+bN29Gu3btsGLFCowdOxbHjh1DYWEhLl++jIyMDJSUlGD//v0YOXIkFi1ahObNm+OPP/5w9thJRsz7ivl2NqVi6pN91PQMTY8V8thGzJn0U3EAa9RcQQjB9hzkNHZl1L755husW7cOjRo1sni/QqFAy5Yt0bJlSzz++OM4duwY3njjDfTr18+hwZJ8mWaYZLDqs9Km7JzmM1/1yZOf9QSMtpBSKlCm4ftJSsabsgOc+iTH2BWoLVmyBH5+flY/vnnz5lixYoU9v4oIgGlXejlkmLRGgSmDEj15TX87k9DNxQHQ1agVlfHYSUm3eEPBjBo5hV1TnzExMZg6dSr+/vtvZ4+HyCLTvQp9/yRt3kfNt1+vNUwzar4frDuTUZwGlZJ7x0pNv3hDzfYc5AR2BWqfffYZrly5ggEDBqBu3bp4/vnnceDAAScPjaiCVphO3fj6SbqiC788Xq81zIJXTt/ZxLhGje8naekzajfjNB5vcohdgdro0aPx888/4+rVq3jnnXdw4sQJdOvWDS1btsSbb76J06dPO3ucJHPGxdByaC9g3orCt1+vNbRGK38ZvNpGXzMF6I4dMzzS0hp2JtCdYvleJUc41PA2LCwMY8eOxbp163D16lW89NJL2LVrF1q3bo2uXbvi008/ddY4SeYEdNklQF+z5dsnGpOdGNiKAoBpnSKDV9sYLyZQ8/0kOd1OEFz1Sc7htJ0JqlWrhvHjx2PDhg3YuHEjysrKMGvWLGc9PcmcrubjZkZNBn3FuOrTnMlG9SousLCFcUZaxfYckuOqT3ImpwRqQgj8/fffmDFjBurVq4eHHnoIHTp0wG+//eaMpycyWbUmh2kvrdHUp0qp9PmdGKxhnGXUZ9T0tXx0e4aMGlcRS07XR42rPsk5HNqZYPPmzfjpp5+wdu1a5OfnY9CgQfj0008xcOBA+Pv7O3OcJHP6BpKATFZ9Vt6ZwMdfrzWESfCqezNoBaBS3OIfEQCYBLTM0EpPf12pYkaNnMCuQG3s2LH45ZdfkJ+fj3vuuQcffPABhg0bxr09STJaAcPUpxwyauY7Mfj267VG5elgQNf2QKXk9nS3Y7KYgDVqkhM3+wlVbCHFwJjsZ1egdv78ebz99tt45JFHEBkZ6ewxEZmRXR81me1tag2TBRacUrJJxbsJ8FMqWaMmMYHKW0i5eUDk1ewK1LZu3Wp225UrV1BSUmJ2e7169ez5FUQm9DUfgExWfbK5qxnTliX6RqI8Ltao3J6D7ydp6WcAKtpz+Pb3FUnL7ho1vdWrV+OJJ57AjRs3TG4XQkChUECj0Tj6K4gMy90BmfRRu/nfilYU/KKvOCZGmQpmhqxWsZjA9z8/7qYPjFUq1qiR4xwO1GbNmoXhw4fj6aefRlBQkDPGRGRGQMhs1adxHzWu0gPMF1gAPAFaS0BUqlFj4C8tYShbADhFT45xOFDLz8/HzJkz0bRpU2eMh8gik4yanPqogRkQPZMFFiqeAG0hjBbj+HGvT8kJASiVCkO5Bo83OcLhPmrTp0/HvHnzUFpa6ozxEFkkoPviA+SRUau86lMIQOvjr/l2Ki+wALjZtbWMF+OoGPhLTp8RN2TU2O+PHOBwRu3hhx/G3XffjaVLlyImJgZKpWnsd+bMGUd/BZHJpuxyyDBVNc3nr28mJ0OVF1gAzKhZTXALKVfSB8ZKpQIKBd+n5BiHA7UxY8agdevWGDVqFGvUSDKmW+DIaNUn2N1cr+LVc9WnrXSBQ0VGmplIaQkBw7SnHC4sSVoOB2pnz57FunXr0LBhQ2eMh6hKstqZwGS7JH1QogUg3+auzKjZz3jmzU+phPbmVLpSxhlaKRnPAKiUCmjYSI0c4HCN2uDBg7F582ZnjIWoSrr6LKOMgI8X5+oTHgxKKuing5VGHd99/X3gLMIoH8ltjVzAuG+dwvcvLElaDmfU4uPjMXPmTCxduhQNGzaEWm36lEuWLHH0VxCZ7kwggxobQ88wKNiK4qaKjeoZvNrKuOGtmitmJae7rJTP4ieSlsOB2pUrVzBixAjDz4KrW0gCupoP3d/lUGMjTPqo8cQKVJoONjQS9e33gTMZr/oEOJUuJV3Dd93f1Sql7C+yyDEOB2qJiYnOGAfRLelqPir6QPl6jY3+esdkmk/uX/YmW0gxeLWFcYbHUPPIaWPJaI0WP6mZUSMH2VWjdvfdd1vc77MqmzdvRp8+fez5VUQAzPtAAb7dm0gYbaNtyIDIvCDZdAsprvq0hcnUJwN/yQnIq50QScuujNpnn32Gp556CleuXMHQoUPRr18/tGjRApGRkdBoNLh+/ToOHTqEpKQkfP/994iNjcX8+fOdPXaSE6NN2Y1rbPx8dObGeIUjW1HoGMflzKjZxjhw4FS69ExKNVQK2V9kkWPsCtRatWqFLVu2YOvWrfjyyy/xyCOPmG3KXrNmTdx7771YvHgx7rrrLqcMluTL+Jwih1Vrxpuys3BeR9/tXalUGIIOX34POFWlqTiA9X1SEibHm3v1kmMcqlHr1asXevXqBQA4d+4crl27BoVCgZiYGNStW9cpAyQCTDeVNmRTfLjGRivMX6/ca4oqVsIaZ9QYbFijorkNa9RcofL3FS8oyBEOLybQi4+PR3x8vLOejsiEcadvlUkDWN9kvAk9M2o6JithGbzaRBi9oSpWzPLYSaXy51fun11yjMMNb4lcQWuhGNqXv/wEKgJTP5XvB6bWMO0tpzsmvvwecCYG/q5lvGWXWqVAGWvUyAEM1MgrmBRDy6FGzWjqkyfWm4y3kGJWyCbGR4k1atIzLV1gjRo5hoEaeQcLxdC+/OWny4BULv723ddrDdP9T33/PeBMlYvbAU4bS6ny51fun11yjNMCtZSUFKxZswYFBQU4c+YMdyggp7LUR82Xv/yYUTNn2P8UClm8B5zNsJiA2UhJVexJq/tZtzcxs5dkP4cDtRs3buCee+5Bu3bt8Mgjj+DKlSt45pln0Lp1a5w/f94ZYySCVivMTjS+vOLPpCaPJ1YApg1vuerTNsarEBn4S8u4ByKgqzGV+2eXHONwoDZjxgyEhIQgMzMTQUFBAIDFixejbt26mDFjhsMDJAJMi3Pl0JW+8qbOAIMSw6pPVPSX8+X3gDNZnkqX9/tJKsaLXgCu+iTHOdye49dff8Vff/2FiIgIw21RUVH48MMP0aNHD0efngiAaadvOfQVE0IYvV7WFAGmTYABngBtZbxJOMD3k1QMZT9G31dlPNbkAKfUqBUXF5vddu3aNfj5+Tnj6YlMNmWXw9SNcfG3HF6vNSqd/3RF2jwBWsW4ZpgLMaSlP6pKkwsKZi/Jfg4HaqNGjcLMmTORkpIChUKBgoICbNmyBY8//jiGDx/ujDESAZDXptKVN3UGfPv1WqOiSJsZNVuZlg7w/SQlrdEUPcAaNXKcw4Ha+++/j65du6Jjx47Iz89Hu3btcO+996Jv3754//33nTFGopurIOWTYRLCfJWrL79eaximPm9+a7HtgfWMG95yIYa0Ki8m4AUFOcrhGjV/f3/MmzcPb731Fs6cOYPy8nI0atQIoaGhzhgfEYCbqyBv/l0tgy2ktBY30Zb3l33lTIVKqWSwYSWTvSdv1qixbkpaJnt98liTAxwO1JYuXWp228GDB6FQKODv74/Y2Fh069YN/v7+jv4qkjGT9gIq388wWW6nIO+gRJ+pUBoFsHIPXq1lnKFljZq0zN6nKoVPX1SS9BwO1L7++mts3boVgYGBaNasGYQQOHXqFAoKClC/fn3cuHED4eHh+PXXX9G8eXNnjJlkyHhTdjlkmIxfL1tR6BgyapxScghr1KSlrdTsXcUtpMhBDteotWnTBoMGDcKlS5eQnJyMffv24dKlS3jwwQfx8MMPIzMzE4MHD8bMmTOdMV6SKa2lmi0fnk4QomIxAcCgBKgqUyHvY2It4758rFGTVuU2MmzPQY5yOKP2zTffYMeOHSZ91KpVq4Y333wT3bp1w3vvvYeZM2eiQ4cOjv4qkjV5rYI0nqoCWOcCVOz1qcfg1XrG7yd9hpbBgzS0lbaQUqv4PiXHOJxRCw0NRWpqqtntqampCAgIAADk5+cbdi0gsofc+oqZls0zKAEq9vo0qVFjsGElZmhdxXItJbOXZD+HM2rPPfccJk2ahMOHD6NTp04QQiA5ORkff/wxXnjhBVy6dAlPPPEEBg4c6IzxkkxpjTYpl8eqTwGV0WUUC+eNG4nq/stVn9YTukZqhp/5fpKO+abs7KNGjnE4UJs1axaio6Mxf/58fPDBB1Cr1WjVqhW+/PJLDB8+HFu3bkWPHj3w5ptvOmO8JFPGfaDkkFHTGu3NCDAoAYwXE3DVp62MPz+A7tjJ/f0kFf1bUsHMLzmJU7aQGj16NLZt24a8vDzcuHEDSUlJhl0JevXqhQ8//BAhISEO/Y7s7GxMmTIFMTExiIqKwoQJE5CdnW24//r163jooYcQFhaGBg0aYNmyZQ79PvIsAvJa9QmjvT4BBiUADCk1pdGiEl8O1p3JuN0LoOulxho1aVTu98caNXKUwxk1IQTWrl2LlJQUaDQaw20lJSXYv38/Nm3a5PAgAeCJJ57A6dOnsXHjRigUCkybNg2PPfYYVq1aBQCYMGECioqKsGPHDuzatQtTpkxB06ZN0aVLF6f8fnIvrRCGQE2pVEChkEFGTcEaNWPMqNmvckaN7yfpsEaNnM3hQO3pp5/G4sWL0aFDB+zevRs9evTA6dOnkZGRgWnTpjljjCgoKMDq1auxbds2dOzYEQDw8ccf484770RxcTHS0tKwYcMGnD17FvHx8WjdujV27NiB+fPnM1DzERZXQfrwiUYrBJTGNWpsRWHSogVgsGEL44w04PufH3cy1Kjd/PyyRo0c5fDU58qVK7F8+XJs374djRs3xhdffIHz589j5MiRKC0tdcYYoVQqsWHDBrRv397kdo1Gg/z8fOzatQt169ZFfHy84b6ePXtix44dTvn95H7GGTVAd5Iu1/juVapWwOz1yj0oEZVWLjJ4tV7lz49uOs53Pz/uVLlGzU+l8OmejyQ9hzNqubm56NSpEwBd89vdu3ejVatWePnll9G/f3+HBwgAQUFBGDBggMltn3zyCdq2bYvIyEikp6cjLi7O5P6YmBhcunTJ4vOlp6cjPT3d8LOl9iLkWbQCphkmH+/2LSqfWFmQbCF45QILa5lnpJWyfz9JxXxPWl5QkGMcDtQaNmyI/fv3o169emjVqhV2796NiRMnQgiBnJwcq5+nqKgIaWlpFu+LjY01WYzw+eef44cffsCvv/4KACgsLDT0bNMLCAhASUmJxedbsGAB5s6da/XYyP0sZtR8+MtP10m+AoMSAEKwCbCd5Pb5caeKNjKsUSPncEoftVGjRmHJkiUYPnw4OnbsCLVaje3bt+OOO+6w+nl27dqFPn36WLxvzZo1GDp0KABg/vz5mDFjBj766CPce++9AIDAwECzoKykpATBwcEWn2/q1KkYMmSI4efU1FSMGTPG6rGS6+nrPvTUPj4VqNVaCEp8+PVagwss7Geekeaxk4pWq++jpt/qjDVq5BiHAzX96srQ0FC0aNECa9aswaJFi9C5c2ebsla9e/c2OxlX9sEHH+CFF17A+++/b7J3aO3atZGRkWHy2IyMDMTGxlp8ntjY2CrvI8+k1cKsxsaXsymsUTOntdCypLCcmQprWKpRY5ZHGhWrPnX/VSkVEEIXwCmN38BEVnJ4McEbb7yBTp06ISEhAQDQv39/rFq1Cu+99x7ee+89hweo98033+CFF17ARx99hOeff97kvm7duuH8+fMmNWlJSUno1q2b034/uZf5Sdq3pwLNTqzMqN1sMcHg1R5CiErZSNaoSUVfo6Z/q+r7Ppb58PcVScuujNrx48dx5coVAMDcuXPRrl07VK9e3eQxR44cwZdffol58+Y5PMisrCw89dRTGD9+PEaMGGGSPYuKikLDhg3Rv39/jB07Fp988gn27NmDFStW4O+//3b4d5NnqNxewNdrbESleiwGJZYzaswKWUeXka74mYG/dMxq1G7uBSf3zy/Zz65A7fLly+jbt6/h52HDhpk9JiQkBM8884zdAzP2+++/Iz8/H9988w2++eYbk/v0vdOWLl2KKVOmoGvXroiNjcWSJUvYQ82HVM4I+HqNjVnfK7aiAFC5Rs23V/46k1ZwU3ZX0WfUZLWTCknKrkCtT58+0N68km3QoAH27NmDyMhIpw7M2IgRIzBixIhbPiY6Ohrr1q2TbAzkXloBqI0m6n09o6Y1y6j59lSvNSofE2aFrFe55tGPgb9kzDdlvxmocaqZ7OTwYoKzZ886YxxEt6Sb9qqI1Hw9I1D5xMpWFPqN6iuouIei1SzXqMk78JdKRcNb3X8rMmo83mQfuwK1Bg0amHzob+XMmTP2/AoiE5W3D/L1VWuiUj2Wrwem1hACJqvmGLxaTysE/CofO5m/n6RiWEvAGjVyErsCtX//+99OHgbRrVXu1O/r9UlaLcxq8uTeioJ1VvZjuxfXqbJGjRcVZCe7ArXx48eb3VZYWIhTp05Bo9GgUaNGqFatmsODI9KzWJ/kw198AuYZNV/OIFrLvGUJj4k1tEKYNLz1UylQIvPAXyraqmrUGBiTnRzuo1ZWVoZZs2ahevXq6NChAzp27IioqChMmjTJaZuyE1VueOvrGQHWqJnT7dYgn6yqMwmzXR1YoyaVijZqFZuyA5D9YiCyn8OB2vPPP4/169dj3bp1yM7ORlZWFtasWYOtW7di9uzZzhgjURU9tHz3JG151afvvl5rCFTeWNy33wPOxAbKriMqLSZQ3Uxl8niTvRxe9blixQqsWrUKvXv3Ntw2cOBABAUFYdSoUXj//fcd/RVEFhve+nLgUjkDwhOrebDu6+8BZ+Kxcx3WqJGzOZxR02q1iI6ONrs9KioKeXl5jj49EQDLDW99uT7J7MTKVhQ323MweLUH+6i5jiFQu3l2VatYo0aOcThQ69u3L1566SXk5uYabsvOzsbLL7+MPn36OPr0RADM23P4+lSgqHxiZVACMHi1m6UtyVijJg1tpRo1fUaNNWpkL4enPj/66CP06dMHtWvXRtOmTQEAJ06cQMOGDblTADmNpRq1Yh9etVa5pog7E+iDddOMWhmDDauYL07x7Qsd96q86lOXDynj1CfZyeFArXbt2khJScGmTZtw7NgxBAYGolmzZujXrx+USocTdkQALPSBUimgKfXdLz5hscGv775eawhUbtGiZN2PleS2GMedKnYmqJxR4/Em+zgcqD3++OMYOXIkBg8ejCFDhjhjTERmLNao+fBJWmu25Q+n+SpPf/v5+O4UzmTxQkfm7yepaLWmGTXWqJGjHE555efnY+jQoYiLi8PTTz+Nbdu2OWNcRCbktmrNYgbEhwNTa2i0An5GWXo/lRJlGmHYBJuqZulCh9PG0qicUVOxRo0c5HCgtmLFCly7dg0LFy5Efn4+hgwZgnr16uH555/H3r17nTFGIrOGt76+6rPyYgJfD0ytUa4RhpMeULGHIjMVt2d+ocMaNamImzVq+sOtZo0aOcgpRWT+/v4YPHgwEhMTkZ6ejieffBILFy5E165dnfH0RLI70ehaUVRgTZEuI2EcqOk7vss902iNyhc6XEUsHf33kn7KU61ijRo5xuEaNQDQaDTYsmULfvrpJ/z888/QaDQYPXo0RowY4YynJ7LYALbUh0/QGq0W/uqK6yiVUunTGURraESljJo+U6HVIggqdw3LK7Avn+voA2D9+9PQ8JbHm+zkcKA2YcIEbNiwAVqtFg888AASExNxzz33QKXiFyc5T7lWa/jCA3T1Sb7cB6pcKxBsVI+lViqg8eHA1Boaraj0HtD9vcyH27Q4i6ULHdaoSUP/OdVfVBg2ZefxJjs5HKiVlJRg8eLFuO++++Dv7++MMRGZ0WgFVCr5dFbXaIXZNF+ZzDNqlWvU/FijZrXKFzq+XjrgThqhz6jd3JSde32SgxwO1L777jtnjIPolso0lbMpSpT6cCalvFL2SH1zhaOc6TJqRllGfUaNmYrbKpfZhY476QNg5c3Pr1KpgELBGjWyHzvSklewdJL25Zqtyhk1f5UuA6KV8Zd9udZyjRoXE9xeuca0tQlXEUunokatct9H3/2+ImkxUCOvYLlGzXdPNOVaYcgYAUbZIx8OTm9HI0yPib+aGTVrVQ781TcDNfagcz59v7TK0/Ryz4iT/RiokVfQBS7GzU4VKPXhE3TlVhSGnmEy/rLXVO6jxv5UVivXag2LL4CK/Sc5/el8+s9o5YwaLyjIXgzUyCuUV6pR8/V9HnWvt+Lj6c96LN3Up8I8y+jLU+DOops2Nr3QAVg3JQX9MTUpXVArGRST3RiokVco12pNpr381EqfDlqqqseSc/bIvOGt/pj47vvAWTSVLnQMLSMYPDid/rNr2g7Ftxc/kbQYqJFXMOuhdbOzuq/W2Ji9XrV+qkq+X/aV6/YqAjXffA84U1mlCx01e3tJpnI9IAD4qTn1SfZjoEYeTwiBMk3lqRvfPkmXV84eKfXNXX3z9VpDK0zfAxXBhnyPibUqB/6sUZNO5WMN6Hqp8ViTvRiokcfTf79ZWgXpqxmmylNV+oyanFd9Vq5TNATrMj4m1qq8GIf7T0rHYkbNx/s+krQYqJHH008ZGJ+k/X0+oyYMDTOBitcu5+kTjVaYbizOLaSsomvDAbP2HAAzalIo1WgNFxF6vt73kaTFQI08nv6q3zQj4NuF5CXlWgSoK/bL9WN7DpRpTDeqV3MLKavoPyOm7TlYoyYV3WfX9NTqp1LKumyBHMNAjTyexb5EKt+uTyop15h82esDNV/uHXc7lU+AfmxZYpWSMt3xMQ781axRk0ypxUCNe/WS/RiokccrKdcAgMmXn78PZ9SEECgp1yLQz+jE6uOBqTWKyzQI8DNeTODb09/Oov/8BPqxRs0VSso1JplfgDsTkGMYqJHHK76ZETAJXHy4ZqtMo6spshSYynmqynw6mNN31jB8ftTmnx85B/5Sqfw+BfRb3vF9SvZhoEYer6hMnxEwOkmrfTebUqzPIFrIgHDqs+KYKBQK3dY8zArdUsX7qeLzU9HwVr7vJ6lUOfUp488uOYaBGnm84jLzqRs/pe9OfZZYyIBwMQFQUqYxOwGqVQpmKm5D//kxPnasUZNOSbnW5CIL4NQnOYaBGnk8/YkmyELNlk8GahYyar4cmFpLdwKsNKWk9O2txJyhpNxC6QBr1CRTUqYxlCroqVV8n5L9GKiRx7M49enDrRn0J1aTVXr6wNQHX681yjValGuF+ZSSmpmK27GUkWaNmnSKyjQm31WAbuqTx5rsxUCNPJ6lxQS+3JrB4lSvfpWrTJu7FpTqjklogNrkdrWSJ8DbKbbQnoM1atLJLylHWKDp+9RPqZR1fSk5hoEaeTxLU5++vNdnXnE5ACAs0M9wm5+Pb5l1O/klumNSOVDz45TSbeWXlAGASfDAGjXp5BWXIzTAz+Q2PzV3JiD7MVAjj5dbXAZ/ldJiHyhfLCTPLdKdWKsZnVgNKxx9MDC1Rl6xebAB6N4HbCR6a7lF5fBXKy3XqMn0/SSl/GLzjJpayZ0JyH4M1MjjZReWITzYDwqFpb0+fe8knWshowbcDEp88PVaI99wTMwzapz6vLWcojJUq/xe4l6fkskrLjN7n/qrlbygILsxUCOPl11YhoigykGL70595haVIchPZd7dXCnfoCTPMPVpHnD4YlbVmXKLylAtyDRwYI2aNDRagYJSjcVaSrleZJHjGKiRx8suKkVEsOWMgC9++eVauCIHdCsc5VqQnJVfCgBm7wM/lRKlMg1erWUpo6av8WR7DufKuVm2YOl9KteLLHIcAzXyeDmFZQgP8je5zZcbwF7LK0FkaIDZ7XJe4XgtvwTVAtVVtD2QZ/Bqrcz8EtQMMf38qNieQxLX8koAAFFhpp9f7kxAjmCgRh4vq9A8o6ZSKqBU+OaWSldyi1ErPNDsdjmvcLyWV2J28gN0U+Css7q19JxixEaYvp9UCja8lYIhUAs1Pd7cmYAcwUCNPF56djHiqghcfDGbkp5TVaAm3xWOGbnFiA6zfEx8MVh3pozcYsSGB5ncprx5oSPX95NUruQWAzDPqHFnAnIEAzXyaGUaLa7kFSM2IsjsPj8fzaZcyS1GrWpVBaa+93qtcf56AerXDDa7Xa30zWDdWYpKNcguLEOshcBfrVIyo+Zk57MKERUWgCB/0yl6f+5MQA5goEYeLSOnGEIAcRYDNd/LphSWliMzv7TKE6scr8qFEDiXWYj4yBCz++QcvFrj0o1CAJY/P3KueZTK+esFiLd0QaHSLQQSgsebbMdAjTzaiSt5AIAm0aFm96l98CR99HIuAKBlXDWz+3QFyb71eq1xLb8E+SXliK9pKVBTyHb/U2scTde9n5rXCjO7T6VUMKPmZKev5aNBFRcUAGsCyT4M1Mijpabnolqg2mKGyc8HexMdTsuBv1qJpjHmJ1a5LiZIuVx1sKFWKWW7/6k1UtPzEBceiIhgf7P71Er51jxKoaRcg+MZeWhdO9zsvoq9iRmoke0YqJFHS7mcixax1Ux2JdDzU/veSqrDaTloUSvMcAVuTK7NXQ9cyEZ4kJ/FGjU/JfdQvJX9F26glYXAAbhZo+Zjnx932n8hG2UagYR61c3u03+efa1Ug1yDgRp5LCEE9pzLQqd48y8+wDe7fR+4mG3xihy4uQ2NDE+s205lonvDmpaDdbY9qFJ+STn2XbiBno0jLd6vy6jx2DnL3yeuoWaIP1rGmpctGLbs8rHvK3INBmrksY5l5CEzvxTdG1o+0fhae45zmQU4c60AdzaJsni/Lwamt3OjoBT7L2ajZ5Mqgg02Eq3ShoOXUa4VuKdljMX75TqVLgUhBLYcu4peTaOgVFrO/gOc+iT7MFAjj7X+4GVUC1SjcwPLGTVf2z7ol8PpCPRT4s4qghJfbUdyKz/tT4NSAQxoXcvi/Vz1WbXluy7g7mbRqG1hxSegy9CWsr7PKXafzcKxjDwMaRdn8X4/pT5Q4/Em2zFQI49UptHip31pGNwuDgFqlcXH+NL2QRqtwPd7LmBgm1iEBJjv8wnILwOi1Qqs2HUe/VvVsrilFsCC+Krsv3ADh9NyMLpbvSofI7f3k1SEEPjsz1NoGhOK3s0sZ8MrFhPweJPtGKiRR1p/8DIycosxplv9Kh/jS9sHbTh0GRezijCxR4MqHyO3ab5NRzJw+loBJvSIr/Ixfmpm1CoTQuD9346jcXQo7moaXeXjdDWP8nk/SWVV8iUkncrESwOaW6yjBHTfVQB85vuKXIuBGnmc4jINPtp8Anc3j0YLC4W5er7S8Da/pBzv/XocfZtHo00dywsJAHkVzmcVlOKNDSno2zwaneJrVPk4X2zR4qjv91zE9tPX8fJ9zQ2br1vir1KghFOfDjl/vQBvbjiKhxLqoG8Ly7WAAOCvX/XJ4012YKBGHue/W04hPbsYswe1uOXjfGUxwXu/HkNWQSn+PaTVLR/nS1O9t1Km0WL68n0o0wi8Naz1LR+rllHwao2dZ65jzroUjOpa75aBAyDfVcTOkp5ThIlf70FkaABeu/8231Xqm6s+mVEjOzBQI4+SfP4GPt9yCjP6NkGjKPPdCIypld5/okk6mYmlO87jxQHNULeGeZ8wY762eKIqb/+Sij3nsvDlmI5mm4lXpltg4fvBqzWSz9/AY0v3olP96pgzuOVtH++nUqK0XOOCkfmec5kFeOTLHSgp02LJhM4WGwobU3MxATmAgRp5jBsFpZi18gDa1g7H9D6Nb/t4f7V3T3tdzi7CzO/3o2fjSIzrHn/bx8thA/L/bjmFr7efw5zBLdGlQdVTnnp+KgV3JgDwY/IljF60E81rheHLsR2rXIBjzJ/ZSJsJIfDTvkt44L/b4K9W4ocnulvcMqoy/dSnN39fkftYXl5G5GJFpRqMW7IbucVlWD6l6y1ra/R0GTXv/OI7dTUPYxfvRqCfCh8Nb2/V6/VTK3x26qRco8Xc9Ufx7c7zeOaeJhhrReAKsGlrbnEZ3tpwFD/svYSHEurg7WGtEeh3+yAN0C3EKCwsk3iEviM9pwhz1qbg96NX8ED7OPx7cCtUD7l1Jk1PzS2kyAEM1MjthBB49ocDOHU1H6ue6H7bKUA9tUrhlSv+9l+4gYlf70FMWCCWTu6CqDDLrScq81P6Zt+rq7nFeG7VQew4fR3vDGuDUV2rbilRmdpH6hRtJYTAuoOX8fYvqSgoKcd7D7XFo53r2vQcASqlTyzGkVp2YSmW7TyPL/46jSB/Fb4YnYD72sTa9Bz6LaTk+F4lxzFQI7cSQuCdjanYdCQDX4xOqHL7JEv8vbAP1OajVzDj+/1oEVsNS8Z3Rniwn9X/Vq3yrX0tddNIaXh7YypUSgUSJ3aucleGqvirlNAKXR86a7KS3k4IgeTzN/DmL6k4eDEbfZpF4e1hbRBXRVPbW9HVqPnO+8mZcorK8MfRK9hw6DKSTmZCABjXvT5m9WuKaoHWf2b12EeNHMFAjdxGCIH/bDqGr/45izceaGXzVaqur5h3ZNSEEPhm+zm8vTEVdzWNxmcjOyDI37opKj1fas9xPCMPr/58GHvO3cDgdnF4/f6WVmcWjamNToAqpW3H05sIIbDrbBbeWH8UR9Nz0TK2Gr57rBu6N6pp93P6eXmNp7NptAInruTh480nsOXYNZRqtOgcXx2v3d8S97WuhehqgXY/t5+KW0iR/RiokVsIIfDupmNYuPUM5g5pZVUxfWXesuKvuEyDp1bsw+bUq5jQIx6zB7UwfHHbws8HGt5qtQJf/H0an/zvJOrVCMa3k7vYnEUz5uuNRDVagV+PZGDh1tM4eCkHzWuFYfH4TrizSRT81Y6tBfNXqZhRA3A2swALt57BxsPpyCkqQ2x4IF66rzkGtYlFrXD7gzNjambUyAEM1MjlhBD4v1+PY8HWM5gzuCXG36Lz/K14Q4bpwvVCzFy5HymXc7FkQifc3fzWva1uxdu3/Ckq1eDZHw5g05EMTL2rIWbc3aTK7bKs5XdzutPXan/OZhZgzf40rNh1Hpn5pejWsAYSJ3RG72ZRVXa/t5WcM2pXcovx9fZz2HH6Og5dykaNkACM614fXRrUQKf6NWzOdt+Ofq9Pb6ypdSYhBC7nFGP7qUyUarQY3bXqnWeoAgM1cikhBN777Ti+/Ps0Xr+/JSbeUfWWSbfj6RmmrSeuYfqKfYgI9sP3j3dDQj3Lm8tbS+3FG5AfvZyL2T8fxvGMPCwY2xH9W1neZN1W+qySL2SGtFqB9Ycu4/M/T+Hk1XyE+KswpH1tjOxSF23rRDj99wV4wYWOswghsPtsFv537Cp2nbmOQ2k5CPZT4d5WtTC8c10M61Db6tWy9lAqFVApfWMnFVtdyS3Gmv1p2HriGg5dykF+SbnhvkC1Cg91rOPG0XkHBmrkMkIIfPD7cXzx12m8dn9LTOppf5AGeG57Do1W4N1NqViUdBZ3NY3CpyM72FWAXJm/SteeQwjhtKyK1K7kFuOD345j9b5LaFAzBMundEUHBwNWY/p+Yd68FZJWK/BrSgY+/d9JHMvIw93No/FC/2bo0TgSoQ5mHG/FT6X06uNmjcz8EvyWkoE1+9Kw9/wNxIYHomP96hjdrT4GtK7llM+lteSys4hGqwuKd529jn9OZiL5/A0EqJW4s0kkpvVuhBaxYWheqxo+/OMEXllzGC1iq6FlXNVbBRIDNXKh5bsu4L9bTmP2wBaY7GCQBnjmFjhH0nLwzMoDOHMtH6/c1wKTejZw2mrEiu7mAv5qzw7U8orL8NXWM1iw9QyC/VX49+BWGNW1nl21ebcS4Kd7vhIv7LCfV1yG73dfROK2s7icU4w7GtfEj9N6oGN95wWyt+Krm7JrtQJbT17D70evYM2+NJRqtOhQNwJfjeuEvs2joXTT6mA/H9hJ5VZOXc3DT/vSsGZ/GtJzihEe5IfO8dXx5tDWGNI2zmyF+1tDW+Po5VxMW56MdU/1RHiQ64Jmb8NAjVxiy/Gr+Pe6FIzrXh+P9WrolOcMUCtRUuY5J+h1By/jxdUH0TQmDKuecP4J108/zafROlxILhUhBH7cl4b/+/UYcorK8NidDfB4r0aSfQkH3syoFZd5T8CRU1SGTzafxMo9F1Cq0WJIu9oY3a2ew1PjtvK19hwl5RpsOJiOr/45g2MZeagdEYTxPeIx5c4GiAy1fUWxs/mplSjzgsVPtsgpKsPP+9Pw075LOHgpB+FBfhjcLhbDOtRBQr2IW2b+A/1U+HJMR9z/2T947ocDWDi2k9uCaE/HQI0k9+exK3ji233o3Swar91/+z0IrRXgp/KIqRuNtmJKd2j7OPznwbZOL0YGgMCbwVlJmUbSKTF7ncsswGtrj+Cfk5m4v20s/nVfc9Spbl3zYntVZNTc/z64HY1WYNXei/jg9+MoKNFg4h3xGNc93mkrC23lKxm1zPwSLN95Ad/uPI/M/BL0ahqFuUNaoUuDGh5VIqBWKlBW7hsZtdJyLX7en4YPfj+OrIJS9G4WjS9GN8LdLaKt2r5Mr17NYHw0vD0mf7MXX/x92qqtA+XI877tyafsPpuFJ5btQ+9mUfh8VIJTp74C1EqUawXKNVpDmwZXS7mcg+d+OIgTV/Iwe2ALTLmzgWQnB32xc7GHBSUl5Rp8+dcZ/PevU4gOC3B4dastAtSeP/VZXKbBn8euYumOc9h5JgsD29TC6/e3cluApuev0n1+tFrhdZkMIQRSLufi6+3nsO7AZaiUCjyYUBsT74hH4+gwdw/PIm9ftS2EwM4zWVi55wL+OnEN2YVlGNimFl67vyViw21vuKzXt0UMnr67Meb9fhzt60bgjsaRThy1b2CgRpJJyy7CtGXJSKgXgc9HJTh9uk4fuJSUuydQW3/wMl5YfRANIkOxeloPyaeu9EFJsYdM95ZptPh+z0Us3HoaGTnFeLxXQzzVp4kk2cSqePJigjKNFt9sP4fP/jyFnKIytK5dDV9P7IzezaLdPTQAuvYcgG4qPdBLmgWXlmuxOvkSlmw7i1NX8xEXHohn722KEZ3rIiLYun033SXAT+nRFxRVScsuwuajV/DtzvM4dTUfDaNCMKpLPQxpH4fmtZyzCOCZe5riwMVsPP3dfmx4uqddO234MgZqJIkz1/INm47PH91Rkpoq48DF0X5cthBC4P3fjmP+zanOdx9qK+nSfj1DYOoB9VinrubhlZ+OYO/5LAxoXQtLxndGkxjXZzICjKaDPcmhS9l46cfDOJ6Ri5Fd6mFyzwZoGBXq7mGZ8Ffp3k+lGq1L3r/2EkLg0KUcrE6+hLUH0pBfUo57W9bCvwY0R+9mUW7LptsqUK3yqlrKYxm5eP/X49hy/CpUSgW6NqiJt4a2RlcJppRVSgU+GdEBgz9LwpPL92Hl1G42TaH6OgZq5HRbjl3FzO/3I7paIJZO6oIaIdJc6Rpn1FylXKPFK2sO44e9l/DKwOZ47M6GLquDqZj6dF9QUlymwaf/O4mv/jmD6LBAfPdYN3RtaP82Ro5yx3vgVorLNPj3uhSs3HsRLWOrYe30nmhTx/r9a13JsP+khxy7yvJLyvHtjvP4ad8lnLyaj5hqARjdrT6GdaiNpm64KHBUoJ/SY7Lht5J0MhMLtp7GPyczUbdGEN4e1gaD28VJXhdbI8Qf80cn4JEvd+CtDal4c2hrSX+fN2GgRk71z8lreGzpXvRuFoV5j7aXdMm1q6cCswtL8dSK/dh55jo+Gt4Owzq4tlGju6c+j2XkYtbKgzh9LR9P9WmCqXc1dHsmxt+QUXN/sJFyOQezVh7AhaxCzB3SCqO61PPobI+/0SpiT3I9vwQ/H7iM+VtOIa+kHP1b1cLsQS1wZ5Mop7W6cYdAP5XH1ZfqFZSU44e9F/Hzgcs4eDEbbeuE46Ph7XB/2zint9S5lXZ1IzBnSEvMXnMECfUjXP4d66kYqJHTJJ+/genL9+GOxpH4ckxHyU9SrsymnM0swMTE3cgpKsPSyV3Qo5HrC17dNfVZXKbB53+ewpd/n0bdGsFY99QdTqtNcZRKqYCfSuHW2p/iMg2W7TyP9387jkZRofh5uuccn1vx128U7iErEYvLNFj0zxl8vuUUisu0GNwuDi/f19xn6pUC/VQel1HTaAVW7DqPjzafRFZBKe5qGoWvxnXCPS2i3bZidlSXekg+fwMv/3QYzWLYDBdgoEZOcuBiNsYv2Y2WsdXw2agOLskkuCrDdPpaPh75cgeqB/th7fSeqFdT2pYTVQl0Q3PXHaev4+WfDuFydjGeursxnuzd2ON6uAWo3dem5fClHDyxLBkZucUY1aUeZg9q4fYso7U8pVlwabkW6w5exkd/nMCV3GIM71wXj/dqiPo1Q9w6LmcL9FMir7j89g90ASEE/jpxDW//kopTV/PxSMc6mNa7kUfUUSoUCrw9tA2OZ+Rh8jd7sP7pnh7RB8+dGKiRw05dzcP4JbvRrFYYEid2dllhvysyascycjFi4U5EhgZg9RPd3bqyLMCFzV2LyzT45H8nseDv0+hUvwYWje+MxtHu/xK3xB21P0IILNx6BvN+P4HmsWFYPqUr4iO9K7DQf36K3JTlKS3XYu2BNHz0xwlczilGv5Yx+HZyF48IFqQQqFYhs6zU3cPAkbQcvPXLUew8k4WEehH46UnpV6zbKshfhcXjO+P+z5IwZtEufDu5K6LC5BusMVAjh1y6UYgJiXtQq1qgS4M0oCLDJNVJ+sL1QoxbvBtx4UH47rFuZluguJqrMohnruXjiWXJOJdZiGf7NcW03o09ujbI1Rm1tOwiPLvyAHadzcLjvRri2X5NvSaLZizYX/dZLSx1fZD7W0oG3t6YiotZRRjQqhYSJzZFs1ret0DAFgF+KrcuBDp0KRuJ287h5wNpaBQVisQJndG7WZRHNQU2Vis8EN891hWjF+3C8AU7sPyxrg71a/NmDNTIbjlFZRi/ZDcUCmDxhE4u3eAYkLaH1oXrhRi7ZBeC/VX4ZlIXtwdpAKBUKuCvljZ7tPPMdUz5Zi+iqwVg/dM9veLkGaB23ebiGw+n418/HkJogBqJEzujj4f0RLNHkD6j5sJALb+kHLNWHsAfR6/gjsY1sWhcZ694jzmDu1Z9Fpdp8NHmE1i49QxiwgIl23dXCk1iwvDD1O4YvWgXHl2wA8smd/W5KXFrMFAju2i0AjO+249reSX4efodkm8VZIlUGbXL2UUYt2QXFIDHpdylDEr+l3oF05bvQ6f61bFgbEeEuTjwtpe/C/Z8LSwtxxvrj+L7PRcxsE0t/GdYW48I3h2hb0zsioyaEAIbD2fgnY2pyCkqw5djOqJ/qxiPzeZIQbeYwHWZX41WYP3By/h48wlczi7GC/2bYWqvRh6dHbckPjIEPzzRHWMX7cKw+dvxw9TuHluGIRUGamSX/2xMRdKpTHw9sbPbakqkyKidvJKH0Yt2wU+lxPePd0PdGu5ZOFAVKb7stVqBRUln8O6mY7inRQw+G9XBq5pNSr3n68kreXhiWTIuZxfj/x5qg0c71fWJACPYEKhJW+B+6moeXl+bgu2nr+Pu5tGYM7ilLLMiuoa3rsmonbqaj1krD+BwWg76NIvCovGdPHZrLWvUjgjCj9N6YPjCHRi9aCeWTOiMVnGe2Z9QCgzUyGYr91zAoqSzmDO4Je5sEuW2cRhaMzjpy2/32SxM+WYP4iKCPC6Tphfop3RqnYsQAm9sOIqvt5/D1Lsa4sX+zb3uijtQwizj7ykZmPn9AdStEYT1T/f0qSt5P5USfiqFZMGDfsHFB78fR1xEkEdtn+UOrpj61GgFEredxXu/HUediCD8OK07OtavIenvdJXqIf5YNqUrJn29B8MX7MT80Qno1dR95x9XYqBGNkk6mYlX1hzBqK71MKFHvLuHg0C1yimr1v46fhWPf5uMjvWqY8G4ji6vt7OWM6/KjYO0t4e1xuiu9Z3yvK4W5K9CQYnzs0JLd5zDv9elYEDrWvjgkXaG4ntfEuSnkmTqM6+4DP/68TB+OZyOqXc1xKx7vHPBhTNJ3fD2Wl4Jpn67F/svZmNCj3i82L+5S/fddYXosECsfLw7nlqxD5O+3oP/PNgGj3Sq6+5hSc73vnlIMpduFOLp7/ahR6OaeGNIK4+Y/gkNVCO/xLETzdHLuZi+fB/ubByJ+WMSPHraLzhAjUIHX6/eB78fR+K2c3hrqPcGaQAQGqDGjULntT3QagXe++04vvz7NCb3bIDZA1tA6WVZRmsF+6udHqgdupSN6Sv2IbugDF+MTsB9bWKd+vzeKtBPidJyLbRa4fT30+lr+ZiQuBvFZVqsfsJ3smiWhASo8dW4Tnht7RG8sPoQ0rKLMLNvE484H0mFgRpZpaRcg+nL9yHYX41PR7imoa01QgPUyCsus/vfX80txuRv9qBBVIhX1GaFBaiRV2L/6wV0gci/16dg6Y7zeGVgc4zp5r1BGgCEBapxMavQKc9VUq7BS6sPYe3By3h1UAtMubOhU57XUwX5OycjDeim3eb9fhwLtp5Bi9gwLJ/czW3NoT2RvnVRQWm5Uxfq7Dh9HdOWJyMyNADfPdbNLQu7XE2tUuKdYW1Qp3ow3v/tOC5nF+HtYW28YiWrPRiokVX+s/EYUtPz8OO0Hqgu0Sbr9ggLVCPfzm7fRaUaTFm6F0IAi8d39oqprbBAtUPdzYUQmLMuBct2ncc7w9pgVNd6Thyde4QGqJHnhKnPGwWleGzpXhy6lIPPRyZgUFvfzwTppj4dP3blGi1eWH0I6w5exoy7m+DJPo189qRpL31wllfsnECtXKPFf7ecxsf/O4Eu8TWwcGwnr1+JbAuFQoHpfRojNjwQL64+hFNX8/HlmI6Irhbo7qE5neefmcjt/jx2BV9vP4e5Q1qhTR3PWmkTGuhnV+AihMBLPx7CySv5WPVEd8R4yYc7NECN9Jxiu//9h3+cwLc7z+PdB9tgRBfvD9IAIDTAz+5gXe9KbjFGfrUTOYVl+O7xbuhY37M6tUsl2N/xGrWsglI8s/IAtp/KxMfD22Nwuzgnjc63hN7MqDljG6m84jI8uXwftp++jqfvboKZfZt43SIgZ3kwoQ7q1wzBk8uTMeTzbVg6uQuaxnjvCldLeMlDt3Q1rxgvrDqEu5tHY1x3z5siCwtQI9+ObMqCrWew7uBlvP9IW7Su7VnB562EBfrZ9XoBYHXyJXz25yn8677mPhOkATezqg5k1DJyijFi4U4Ul2rw47QesgnSgJtTnw4EajcKSjFm0S4cSctB4sTODNJuoVqgPlBzrHThzLV83P9ZEg5cyMbSSV3wbL+msg3S9DrWr471T/VERLAf7v8sCf/36zHJ2864EgM1qpIQAs+vOgSlUoH3H27rkcWaYYG2T3ttOXYV//frMUzv0wj3t/WuE4tu6tP2L/q957LwyprDeLRTHUzt5Vt1V6GBuoJ4jVbY/G9PXc3DQ19sR0mZBt893s3r9ut0lCNBbk5hGcYu2YX0nCIsn9LVra16vIFh6tOBi4pzmQUYsXAn1EoFNszoiTsaRzpreF4vulogfnqyB6bd1QiL/jmDfh9uRfL5LHcPyykYqFGVvt15HltPXMMHj7RDzVDP6ykG2L6Y4PS1fMz4fj/ubhaN5/o1k3Bk0rCnJu9IWg7GL9mNDnUj8ObQ1h4ZcDsi7OaUkq3H5ejlXDz85Q6EBqixeloPWTZhjQj2R3ah7YF/XnEZxiXuxqUbRVjxWDe0iK0mweh8S2igY1Of5zILMHrRLoQGqvH9491l+X69nWB/NWb1a4r/PdsbUWEBeOTLHZi2LBmHLmW7e2gOYaBGFh3LyMVbG1Ixtlt93OXBTQXDAq2vT8otLsNjS/ciOiwAH41o75UtF8IC1SiwIXt0Na8Yjy3di8bRoVgyobPHr2q1h+EEaMNq2CNpORizeBfqVA/CD1O7Iy5Cnps9RwT52dzaJL+kHBMS9+DMtXwsm9yVQZqVQvxVUCrsm/o8dCkbD3+5HQFqJVZM6eaRzbg9Sb2awVj1RHe8dn9LnLyajwf+uw2vrDmMGwXOa+PjSgzUyExpuRbPfH8ADaNCMHtQC3cP55ZCrVwFKYTAaz8fwbXcEnw1zvUbyDtLxcqx23/Zl5Rr8PjSZGi0AgvGdjK0B/A1thZpX84uwsSv96BO9SB8O6mrrFbKVRYR7IccGzJq5Rotpi/fhxMZeVg6qYtX1Xe6m0KhQGiA7Rnxv45fxYiFO1GnejBWT+uBWuHesfDJ3fxUSky8owF+nXkn5tzfEusPXsbd8/7Cgr9Pu2wrL2dhoEZmPt9yCqeu5mPeo+08vpt49WA/FJVpblsQ/c32c1h74DLeGtbabXuTOkPNm61RMvNvf2X41oZUHE3PxVfjOvn0l3vNEF12wZqrZV02aDf8VUosHt/Zo1rNuENEsD/ySspRprl9x3x9a5dtpzIxf0wCOtSTz6ILZwkP9kN2kfWB8doDaZjyzV50b1gT3z3WDTVk/n61h1qlxIQ7GuDP53pjQOta+M+mY+j81mYsTjpr1fveEzBQc5GCknJo7Sh2drUjaTmYv+UUnrq7sVdsehsdpgtAruZV3bLiwMVsvL0xFRPviMcD7Wu7amiS0PcIutXrBYAfky/h253n8dr9LdGuboQLRuY+kWG6k9e1/JJbPk6rFXjuhwO4nF2MbyZ15vQRdFOfAJBjRfCw6J+zWL7rAt4e1poLB+wUFRqAa3m3fp/q/XH0Cp794SAeaF8bC8Z29LntoFwtKiwA/3mwLX595k70bh6Nt345ii5vb8YPey5CCM8+N/vmXIgHmrs+BesOXkaAWoWuDWogPMgPIQFqXM4uQk5RGZQKBYrLNQhUq6BQ6LpYVw/2Q/2aIQjyUyE0UA0hBDRaoFyrRVZBKW4UlEIrdNN/1QL9UDPUH7HhgWhbO8Km6ZziMg3KNFr4qZR4ftVBNIkJw5O9G0t4NJwnppruZHs1r8RicW1haTlmfr8fLePC8fJ9nj2Naw19cHGrL/vk81l4+SfdCs8xPtDQ9naC/dUI8Vfd9gT4xd+n8VvKFXw1rhMaR/tWnyV7RQTrgtzswlJE3mLB0OrkS3hnUyqe7N0Iwzv7/ntKKlFhAbhqRaD2W0oGZny3H/1axOC9h9vKvv2GMzWvVQ2fjeyAqb0a4qt/zuDFHw9h/8UbeGlAc8PnwdMwUHOR4Z3roXF0KFLT83Dyah6u5BajqEyDyNAA1AoPhEYroFIqoBW6KYbM/BJczCrEpsMZKC7XoExTEfGrlApEhvqjWqAfVEoFMvNLUVymMVlmHx7kh/AgP9SrEYxAPxVKyjUQAlCrFCgt1yLYX7da8tKNIqRlF5mM9ZcZPeGv9o5kqyGjlmv5y2/e7yeQkVOMxAmdveY13UpogBrBtwhKrueX4Mnl+9CubjjeGtrG51Z4ViUq7NaZii3HruKD349jZt8m6NcyxoUj82zRNwP/K7klVQav205l4qUfD2FE57p4/l7vWyntSaLDArHn3K1bRvwv9QqmLUvGgNa18OGj7RmkSaR17XB8MqIDujaoibd+OYr1B9PxUEJtjO0ej8bRnlUew0DNRTrWr253I02tVkAA0H9ey7XC4vYsZRotLmYV4uClbFzOLkZOURnOXy8wdB73Vyvhp1IgUK1CQWk5qgf7o2VcNbSMrQZ/tRJZBaWoUz3YK6Y89aoFqeGvVuJKrvlU4P4LN5C47SxeHNDcq+vSKqvqqlyrFXh+1UGUaQQ+H5XgE4GptW4VqJ3LLDC0ZJnZt4mLR+bZYiN0FzppN4os3n8xqxDTV+xDj0Y18eYDrb1ypbQnib7NBUXy+SxMW74P/VrG4LORCQzSXGBU13ro1zIG32w/h+/3XMA3O87jjsY1cV/rWHRvVBONPODcwUDNC1T+cvRTWf7w+qmUaBgV6lNBye0oFArUrR6EC5U25c4vKceslQfQpk4EpvRs4KbRSaNejWCczSwwu31x0llsOX4NiRM7e82WWM4SGx6EizfMN2YvKCnH49/uRVSo97ZkkVKAWoWYagG4VMWxe2zpXoQH+eGzkR2g5t6dDqsVHojrBaUoKtWY1ZxduF6Ix5cmo33dCHw6sgODNBeKCgvA8/2b4em+jbHpcAaW7zqPOetSEOynwuG5/d09PAZq5P2axoTheEae4WchBGavOYzM/FJ8PbGLz51gGkeH4u/j10xu23/hBv7v12N4vFdD9GkW7aaRuU+jqFBsO5VpcptuZ42DSLtRhJ+n3+G1LVmkVqd6sNmFjhACL6w+iItZhVgz/Q6Prd3xNs1q6aaXT1zJM1nkcz2/BOOW7EJYoBpfjunok/0OvUGAWoWhHWpjaIfauJ5fYvGC2B186wxGstQkJgwnruQZVu6sSr6EtQcu4+1hrX1yS6DG0aE4n1VoaEmSU1SGp7/bj1a1w2VbQ9QoOgTXC0qRZdSiY8m2c9h0JAMfDm+PJj62SbMztYqrhkNpOSa3zf/rNDYe1h07X9vg2p2aRIdBqQBS03MNtxWUlGPi13uQX6LB0kld2YLDQ9QMDUCn+BruHgYABmrkA7rE18D1glKkXM7Fqat5mLM2BcM71fX6VhxV6RxfAxqtwO5zWSjXaPHsygPIKSrD5yM7yKouzVi7OhEAdHuaAjczjJuOYdIdDdC/VS03jszzdagXgTPXCgyNb7/deR7v/3YcM+5uzGPnZEH+KsRHhhgCNa1WYNbKAzh9NR9fT+yMejWD3TxC8kSc+iSv161hDUSG+uOdjalIyy5C7epBmDOkpbuHJZkm0aFoHB2KjzefwOrkYPx14hoWje+EujXk+yVft0YwGkaF4Ie9F1G3RjAmfb0HbeqE46X75JlhtEXXBjUBAL8cTkdIgApz1h7BhB7xmNWvqZtH5pu6xNfA5tSrmDNYYN4fx/H70StYNK4Td3mgKsnz8pt8ilqlxBsPtMa+CzdQUqbFonGdEOzvu9cgCoUCbw9tjRMZefj1SDrmPdJOlnVplT3Xrxk2p17FA59vQ1xEEJaM9829TZ0tLiIID7SPw+yfD2Pm9wcwrEMdvHZ/S9m0dnG1EV3qIS27CN3+8z/8d8tp/Ou+5riHLWPoFhTC01vyusC+ffvQsWNHJCcnIyEhwd3DITtptAIKmK+S9VUFJeXQCmHY/1PuhBBYtfcSMgtKMKpLPRbA26CoVIPlu84jLFCNhzvW5YpDif16JANJp67hrqbR7OtHt8VADQzUiIiIyDNx6pOIiIjIQzFQIyIiIvJQDNSIiIiIPBQDNSIiIiIPxUCNiIiIyEN5TaB248YNjBkzBjVq1EDt2rXx8ssvQ6vVGu4/e/Ys7rnnHoSEhKBly5b4/fff3ThaIiIiIsd5TVfQJ598EleuXME///yDq1evYtSoUYiOjsasWbMghMDQoUPRpk0b7N27Fz///DOGDRuG1NRU1KtXz91DJyIiIrKL12TUNm7ciGeffRatWrVCnz59MGrUKPzvf/8DAGzZsgWnT5/GggUL0KJFC7z88svo3r07lixZ4uZRExEREdnPawK1mjVrYtmyZSgsLMTly5fx66+/okOHDgCAnTt3IiEhASEhIYbH9+zZEzt27HDXcImIiIgc5jVTn/Pnz8fYsWMRFhYGrVaLe+65B3PmzAEApKenIy4uzuTxMTExuHTpksXnSk9PR3p6uuHn1NRU6QZOREREZCePCdSKioqQlpZm8b7Y2FgcP34cnTp1wpw5c5Ceno4nn3wS//d//4fZs2ejsLAQAQEBJv8mICAAJSUlFp9vwYIFmDt3rtntDNiIiIjIlZo3b47g4OAq7/eYQG3Xrl3o06ePxfvee+89vPzyy7h48SJiY2MBAIWFhZg2bRpeeuklBAYG4vr16yb/pqSkpMoXPnXqVAwZMsTw88aNG/Haa69hzJgxTno1RERERLd3u33GPSZQ6927N6raH/6HH35AZGSkIUgDgA4dOiAvLw9ZWVmoXbs2UlJSTP5NRkaGyeONxcbGmtxXr149NGjQAPHx8QgKCnLCqyEiIiK6vebNm9/yfo8J1G4lLi4OmZmZuHr1KqKjowEAx44dQ2hoKKKiotCtWze8++67KCoqMgRaSUlJ6Nmzp1XPHxkZidGjR0s2fiIiIiJ7KERVaSwPUl5ejoSEBMTFxWHevHnIzMzEpEmT8Oijj+I///kPNBoN2rZtizZt2uC1117D+vXr8fbbbyMlJYV91IiIiMhreUV7DrVajY0bNyIkJAR33nknxo4dixEjRuCNN94AAKhUKqxduxbp6eno2LEjli1bhjVr1jBIIyIiIq/mFRk1IiIiIjnyiowaERERkRwxUCMiIiLyUAzUiIiIiDwUAzUiIiIiD8VAjYiIiMhDMVAjIiIi8lAM1IiIiIg8FAM1IiIiIg/FQI2IiIjIQzFQIyIiIvJQDNSIiIiIPBQDNSIiIiIPxUCNiIiIyEMxUCMiIiLyUAzUiIiIiDwUAzUiIiIiD8VAjYiIiMhDMVAjIiIi8lAM1IiIiIg8FAM1IiIiIg/FQI2IiIjIQzFQIyIiIvJQDNSIiIiIPBQDNSIiIiIP5dZArbi4GJMnT0ZERARiY2Mxb968Kh/7wAMPQKFQmPzZsGEDAODGjRtm90VGRrrqZRARERFJQu3OX/7CCy9g7969+PPPP3H+/HmMHz8e9evXx8MPP2z22KNHj2LZsmXo27ev4bbq1asb7qtZsyaOHDliuE+pZLKQiIiIvJvbArWCggIsWrQImzZtQkJCAhISEpCSkoLPP//cLFArKSnB2bNn0blzZ9SqVcvsuVJTU9G0aVOL9xERERF5K7elnQ4ePIiysjL06NHDcFvPnj2xa9cuaLVak8ceP34cCoUCDRs2tPhcR48eRdOmTSUdLxEREZGruS1QS09PR2RkJPz9/Q23xcTEoLi4GNevXzd5bGpqKsLDwzF27FjExsaiS5cu2LRpk8n9ly5dQpcuXVC7dm2MGDEC6enpt/zd+/btM/zZtm0bfvvtNxQWFjr/hRIRERHZyW2BWmFhIQICAkxu0/9cUlJicvuxY8dQWFiI/v3749dff8XAgQMxePBg7N2713B/bm4uPvroI6xcuRKXL1/G/fffD41GY/F3L1iwAB07djT86dmzJwYMGIBjx45J8EqJiIiI7KMQQgh3/OJVq1bh6aefRkZGhuG21NRUtGzZEtevX0eNGjUMt2u1WuTk5BgWDwDA4MGDERsbi4ULF6KwsBAKhQJBQUEAgKtXryI2Nhb//POPydSqXnp6uknGLTU1FWPGjEFycjISEhKkeLlERERENnPbYoLatWsjMzMT5eXlUKt1w8jIyEBQUBAiIiJMHqtUKk2CNABo0aIFUlJSAADBwcEm90VHR6NmzZpIS0uz+LtjY2MRGxvrpFdCREREJA23TX22b98efn5+2Llzp+G2pKQkdO7c2ay1xoQJEzBp0iST2w4cOIDmzZsjNzcX1atXx5YtWwz3paWlITMzE82bN5f2RRARERFJyG0ZteDgYIwfPx5PPPEEEhMTkZaWhg8++ACJiYkAdNm18PBwBAUFYciQIRgxYgR69+6NHj16YMWKFUhKSsLChQtRrVo13HnnnZg1axa++uorqFQqzJw5EwMGDECbNm3c9fK80l9//YU1a9ZUWdtHRETkDC1atMBjjz1msqCQqiDcqKCgQIwbN06EhISIuLg48dFHHxnuAyASExMNP3/11VeiSZMmIiAgQCQkJIi///7bcF9WVpaYOHGiiIyMFGFhYWLMmDEiKyvL6nEkJycLACI5OdkZL8sr5eTkiKCgIAGAf/iHf/iHf/hH8j/ffvutu099XsHmxQQnT57Eb7/9hn379uHq1atQKpWoVasWEhIScN9996F+/fq2PJ1H2LdvHzp27CjrxQQnTpxAs2bN3D0MIiKSiblz5+L111939zA8ntVTn1u3bsUbb7xhqCNr2bIl2rZtC61Wi8zMTCxZsgTPPPMMevXqhZdffhl9+vSRctzkZMbx+qBBgzB37lw3joaIiHzR9u3bMWPGDACm5x2qmlWB2pgxY5CWloZp06ZhzZo1CAsLs/i4goICrF69Gq+++irq16+PFStWOHWw5BqRkZHo2LGju4dBREQ+5tq1a+4egtexKlCbMGEC7rnnnts+LiQkBOPHj8f48ePx+++/Ozw4ch1e2RARkSvxvGMdq9pzWBOkpaen47333jP8fO+999o/KnIrhULh7iEQEZEP4vnFdg71USsuLsZ3332HAQMGoF69evj3v//tpGGRq/HKhoiIXInnHevYFaglJSXhscceQ61atTBmzBicPn0a//nPf3Dx4kVnj4/cgFc8REQkBZ5fbGf1qs9z585h6dKlWLp0Kc6cOYM6depg/PjxmD9/PtauXYuWLVtKOU6SmPGVDT9IREQkBePzCzNq1rEqo3bXXXehcePGWLNmDUaMGIFdu3bhwoUL+OSTT6QeHxEREZFsWRWo7d27Fw0aNEC/fv3QrVs3bs3kg5hRIyIiqTGjZjurpj6vXbuGdevW4bvvvsOnn34KtVqNe++9Fw888AAUCgVP7EREREQSsCqjFhwcjBEjRmDt2rXIyMjAJ598gry8PEyZMgXl5eWYOXMm1qxZg/LycqnHSxJhRo2IiKTGjJrtbF71GRERgcmTJ+OPP/7ApUuX8PHHH6OgoAAPPfQQateuLcUYiYiIiGTJoT5qMTExmDFjBrZt24azZ8/i2Wefdda4yMWYUSMiIqkxo2Y7q9tzGDt16hT27t2LsrIykwMdGxvrtIERERERyZ3Ngdr777+Pl156CTVq1DDbnF2hUGDcuHFOGxy5DjNqREQkNWbUbGdzoPbBBx/gvffew/PPPy/FeIiIiIjoJptr1IqLi/Hggw9KMRZyI2bUiIhIasyo2c7mQG306NGYP38+D7CP4f9PIiJyJZ53rGPz1Gdubi4WL16M7777Dg0aNIC/v7/J/X/++afTBkfuwYwaERFJgecX29kcqDVp0gSvvPKKFGMhN+KVDRERuRLPO9axKlDTaDRQqVQAgDlz5lj1xOXl5VCr7er+QW7GKx4iIpICzy+2s6pGrWvXrli6dCnKyspu+9ji4mIsWrQIXbp0cXhw5Dq8siEiIlfiecc6VqW8Nm3ahBdffBGzZs1C//790a9fP7Ro0QKRkZHQaDS4fv06Dh06hKSkJGzcuBGDBg3Cxo0bpR47SYRXPEREJAWeX2xnVaAWFRWFxMREnDt3DgsXLsRnn32GQ4cOQavVAgBUKhXatWuHAQMGYO/evWjYsKGkgybn45UNERG5Es871rGpiCw+Ph7vvPMO3nnnHWg0GmRlZUGhUKBmzZqMkn0I/18SEZEUeH6xnd3V/iqVClFRUc4cC7kRr2yIiMiVeN6xjs0Nb8n38YqHiIikwPOL7RioEQBe2RARkWvxvGMdBmpkhlc8REQkBZ5fbGdzoNawYUNkZWWZ3X758mVER0c7ZVDketyUnYiIpMZN2W1n1WKC1atXG/qinTt3DtOnT0dQUJDJY86dO8edCIiIiIicyKqM2l133QWgIvoVQpj8AYBWrVrh559/lmaUJDlm1IiISGrMqNnO6oa3S5YsAaDrpfbCCy8gODhY0oERERERyZ3Nc5V9+vTB3r17q7y/V69eDg2I3IMZNSIikhozarazOVDr3bu3xdsDAgIQGxuLM2fOODomIiIiIoIdgZp+f089jUaD06dP46mnnsLo0aOdNjByLWbUiIhIasyo2c7hPmoqlQpNmzbFhx9+iNdee80ZYyIiIiIiOLHh7dWrV5Gdne2spyMXY0aNiIikxoya7Wye+pw0aZLZbXl5efjjjz/wyCOPOGVQRERERGRHoFY5AlYoFKhZsybmzZuHsWPHOm1g5FrMqBERkdSYUbOdzYFaYmKiFOMgIiIiokrsqlFbvHgxunTpgrCwMISHh+POO+/EypUrnT02ciFm1IiISGrMqNnO5ozaO++8g/feew/PPPMMXn/9dWg0GuzZswePP/44srKyMG3aNCnGSRLjB4aIiFyJ5x3r2ByoffbZZ1i6dCmGDBliuO2BBx5Ahw4dMGvWLAZqPoAZNSIikgLPL7azeeqzrKwM9evXN7u9efPmyMvLc8qgyPV4ZUNERK7E8451bA7U5syZg8ceewxHjhwx3HbhwgU8++yzmDNnjlMHR+7BKx4iIpICzy+2s3nq87333sOVK1fQrl07hIaGQq1WIzs7G0IIbN68Gc8995zhsRqNxqmDJenwyoaIiFyJ5x3r2ByoLVu2TIpxkAfhFQ8REUmB5xfb2Ryo3XXXXVKMg9yMVzZERORKPO9Yx+ZA7fz583j11VexZ88elJWVmR3oM2fOOG1w5B684iEiIinw/GI7mwO1sWPHIjMzE9OnT0e1atWkGBO5Aa9siIjIlXjesY7Ngdru3buxb98+tGzZUorxkAfgFQ8REUmB5xfb2dyeo0mTJrh27ZoUYyE34pUNERG5Es871rE5o/avf/0LU6ZMwXPPPYfGjRvD39/f5P5evXo5bXDkHrziISIiKfD8Yju7atQA4MknnzS7T6FQsHeal+Km7EREJDVuym47m6c+tVptlX9sDdKKi4sxefJkREREIDY2FvPmzavysfv370fXrl0RHByMzp07Izk52eT+7777Do0aNUJwcDCGDRuGzMxMW18aERERkUexKlC7cOGCIfK9cOHCLf/Y4oUXXsDevXvx559/Yv78+Zg7dy5Wr15t9riCggIMHDgQd955J5KTk9GjRw8MGjQIBQUFAHQLHCZPnow5c+Zg586duHHjBiZMmGDTWOSOGTUiIpIaM2q2s2rqMz4+HhkZGYiOjkZ8fDwUCoXZiV0IYdPUZ0FBARYtWoRNmzYhISEBCQkJSElJweeff46HH37Y5LErV65EUFAQ3n//fSgUCnz88cfYuHEjVq1ahQkTJuDzzz/Ho48+inHjxgEAvv32W9SvXx9nz55FgwYNrD0WRERERB7FqkDt7NmziIqKMvzdGQ4ePIiysjL06NHDcFvPnj3x9ttvQ6vVQqmsSPbt3LkTPXv2NETiCoUCd9xxB3bs2IEJEyZg586d+Ne//mV4fN26dVGvXj3s3LnTIwK1pKQkvPPOO+4exi0ZTxUzo0ZERFIwPr/8+uuvGDhwoBtHc3t33303nn/+ebeOwapArX79+hb/7oj09HRERkaarBqNiYlBcXExrl+/bggM9Y9t1aqVyb+PiYnBkSNHDPfHxcWZ3X/p0qUqf3d6errh59TUVIdfz61kZGRg06ZNkv4OZ/Lz83P3EIiIyAcZn1/S0tKQlpbmxtHcXmRkpLuHYPuqT2cpLCxEQECAyW36n0tKSqx6rP5xt7u/sgULFmDu3LkOjd9XxcXFmU09ExEROUPjxo0xcOBAbNy40d1D8RpuC9QCAwPNAin9z8HBwVY9Vv+4291f2dSpUzFkyBDDz6mpqRgzZox9L8QKQ4YMQVZWlmTP70xhYWFQq932tiAiIh+mUCjwyy+/ICcnB1qt1t3Dua3KvWLdwW1n5Nq1ayMzMxPl5eWGwCAjIwNBQUGIiIgwe2xGRobJbRkZGYiNjbXq/spiY2NN7isqKgIg/RQoERERkbHmzZtXmVgC3BiotW/fHn5+foaFAoCu6L5z584mCwkAoFu3bnj33XcNK0uFENi2bRtmz55tuD8pKcnQkuPixYu4ePEiunXrZtVYzp07BwCSZtWIiIiIKktOTkZCQkKV9yuEGxuZPPHEE0hKSkJiYiLS0tIwfvx4JCYm4sEHH0RGRgbCw8MRFBSE3NxcNG7cGCNHjsTUqVOxYMEC/PDDDzh16hRCQkKwY8cO9O7dG/Pnz0fnzp0xc+ZMhIWFYd26dVaNIzMzE7/99hvi4+MRFBQkyWvVT68uW7YMLVq0kOR3EJHr8bNN5Htc+bm+XUYNwo0KCgrEuHHjREhIiIiLixMfffSR4T4AIjEx0fDzrl27RIcOHURgYKDo0qWL2Ldvn8lzJSYmirp164qQkBAxbNgwkZmZ6aJXYZ3k5GQBQCQnJ7t7KETkRPxsE/keT/pcu7VqPDg4GN988w2++eYbs/tEpURfly5dsG/fviqfa8KECdyNgIiIiHyKzXt9EhEREZFrMFBzkdjYWMyZM6fKlahE5J342SbyPZ70uXbrYgIiIiIiqhozakREREQeioEaERERkYdioEZERETkoRiouUBxcTEmT56MiIgIxMbGYt68ee4eEhHZqKSkBNOnT0f16tURExODV155xdBGaP/+/ejatSuCg4PRuXNnJCcnu3m0RHQ7JSUlaN26Nf766y/DbTt37kSPHj0QGhqKZs2aYdGiRSb/ZvPmzWjdujWCg4Nx991348yZM5KPk4GaC7zwwgvYu3cv/vzzT8yfPx9z587F6tWr3T0sIrLBzJkz8ccff+C3337DihUr8NVXX2HhwoUoKCjAwIEDceeddyI5ORk9evTAoEGDUFBQ4O4hE1EViouLMXLkSKSkpBhuy8jIwH333YfevXtj//79mDt3Lp5++mn88ssvAIALFy5g6NChmDhxIvbs2YOoqCgMHTrUrO+rs3HVp8QKCgoQGRmJTZs2oXfv3gCAt956C5s3bzaJ4onIc2VlZSEmJgabN2/GXXfdBQB49913ceLECfTs2RNvvfUWTp8+bdiLuGnTppg9ezabcBN5oKNHj2LUqFEQQuDQoUPYsmULevfujS+//BKffPIJUlNTDY+dOnUq8vPzsXz5crz++uvYunWr4dxdWFiIWrVqYd26dYbzuxSYUZPYwYMHUVZWhh49ehhu69mzJ3bt2gWtVuvGkRGRtZKSkhAeHm4I0gDgX//6F5YsWYKdO3eiZ8+eUCgUAACFQoE77rgDO3bscNdwiegW/v77b/Tp08fsMzpgwAAkJiaaPT4nJweAblq0V69ehtuDg4ORkJAg+WedgZrE0tPTERkZCX9/f8NtMTExKC4uxvXr1904MiKy1pkzZxAfH4+lS5eiefPmaNiwId58801otVqkp6cjLi7O5PExMTG4dOmSm0ZLRLcybdo0fPTRR2YbocfHx6Nbt26Gn69evYrvv/8effv2BQC3fdbdutenHBQWFiIgIMDkNv3PJSUl7hgSEdkoPz8fJ0+exIIFC5CYmIj09HRMnToVwcHBVX7G+fkm8l5FRUV46KGHUKtWLUydOhVA1edzqT/rDNQkFhgYaPY/Uf9z5WieiDyTWq1Gbm4uVqxYgfr16wPQFRbPnz8fTZo0sfgZ5+ebyDvl5+fjgQcewIkTJ5CUlGT4LFd1Po+IiJB0PJz6lFjt2rWRmZmJ8vJyw20ZGRkICgqS/H8uETlHbGwsAgMDDUEaADRr1gwXL15E7dq1kZGRYfL4jIwMj9gjkIhsk5ubi/79++PIkSP4888/0aRJE8N97vqsM1CTWPv27eHn54edO3cabktKSkLnzp2hVPLwE3mDbt26obi4GCdOnDDclpqaaqhp2b59u2GJvhAC27ZtM6l1ISLPp9Vq8eCDD+LMmTP4+++/0apVK5P7u3XrhqSkJMPPhYWF2L9/v+SfdUYKEgsODsb48ePxxBNPYM+ePfj555/xwQcfYObMme4eGhFZqVmzZhg0aBAmTJiAgwcP4rfffsO7776LadOm4eGHH0Z2djaeeeYZHD16FM888wwKCgrw6KOPunvYRGSDxYsXY8uWLVi0aBEiIiKQkZGBjIwMZGVlAQAmTZqEbdu24d1330VKSgomTpyIBg0aSNqaAwAgSHIFBQVi3LhxIiQkRMTFxYmPPvrI3UMiIhtlZ2eLsWPHitDQUBEdHS3mzp0rtFqtEEKIXbt2iQ4dOojAwEDRpUsXsW/fPjePloisAUBs2bJFCCFE//79BQCzP3fddZfh8Rs3bhRNmzYVQUFBom/fvuLMmTOSj5ENb4mIiIg8FKc+iYiIiDwUAzUiIiIiD8VAjYiIiMhDMVAjIiIi8lAM1IiIiIg8FAM1IiIiIg/FQI2IiIjIQzFQIyIiIvJQDNSIyOccOHAA27dvBwD89ddfUCgULvvdxcXFSEhIwPXr1536vH369MHRo0ed+pxE5PkYqBGRzxk2bJhhA/UePXogPT3dZb/73XffxeDBg1GzZk2nPu/rr7+OJ5980qnPSUSej4EaEfkc453x/P39UatWLZf83vz8fHzyySeYOnWq05+7T58+uHLlCv755x+nPzcReS4GakTkU3r37o3z589j4sSJmDBhgsnU57lz56BQKPDLL78gPj4eoaGhmDlzJo4cOYJOnTohJCQE999/P/Ly8gzPt2DBAjRo0AChoaHo3bs3Dh8+XOXvXr58OZo1a4a4uDgAwNdff43evXvj7bffRvXq1VGrVi18++23WL16NerXr4+IiAi89NJLhn//559/on379ggMDETDhg2xYMECk+cfMmQIvvjiC2ceLiLydJJv+05E5ELXr18XderUER9//LHIzs4WW7ZsEfqvurNnzwoAomfPnuLgwYNixYoVAoBo3Lix+P3330VSUpKoUaOG+PDDD4UQQqxbt07UqlVLrF+/Xpw4cUK8+uqrombNmiIrK8vi7x46dKh49dVXDT8nJiYKf39/MWnSJHHy5EnxzDPPiODgYMPvX7x4sQAg9u3bJ8rLy0WNGjXEW2+9Jc6ePSuWLVsmlEqlSElJMTzfH3/8IWrUqCG0Wq2ER5CIPAkzakTkU2rUqAGVSoXw8HCEh4dbfMxrr72Gtm3bYuTIkYiOjsbIkSPRr18/3HHHHbjnnntw7NgxAMB7772HV155Bffffz+aNGmCN998E/Xr18eyZcssPu++ffvQokULk9u0Wi0+/fRTNG7cGI8//jgKCwsxd+5ctG3bFpMmTUJ0dDSOHTuGnJwcZGVlISYmBvHx8Rg9ejQ2b96M2NhYw3O1bNkSWVlZOH/+vJOOFhF5OgZqRCQ7DRs2NPw9KCgI8fHxJj+XlJQAAFJTU/Hiiy8iNDTU8OfgwYOGhQqVXbt2DZGRkSa3xcTEICQkxPDcACz+vho1amDatGl47LHHUL9+fTz11FMIDw9H9erVDY/VL1C4evWq/S+eiLyK2t0DICJyNbXa9KtPqbR8zVpeXo6PP/4Yffv2Nbm9WrVqFh+vUCig0Whu+btu9fvmz5+P6dOn4+eff8bPP/+MBQsWYN26dbjvvvsA6LJzt/r3ROR7+GknIp/jrL5pzZo1w6VLl9C4cWPDn7fffhs7d+60+PiYmBi7+6dlZGRg+vTpaNy4MWbPno09e/agb9++WLduneExmZmZAOCyVaxE5H7MqBGRzwkJCcGxY8eQlZXl0PM8++yzmDJlCpo2bYoePXpg4cKF+OGHH/DKK69YfHyHDh1w6NAhu35XjRo18NNPP0EIgeeeew5paWk4cOAAHnzwQcNjDh06hJiYGNSuXduu30FE3oeBGhH5nCeffBIvvvgiTpw4gRkzZtj9PMOHD8eVK1fw2muv4cqVK2jVqhXWr1+PJk2aWHz8gAEDkJiYaNfv8vf3x7p16zBz5ky0bdsWYWFhmDx5MqZMmWJ4TFJSEvr37+/SnRaIyL0UQhh1hiQiIrvl5uaiXr16OHjwIOrXr+/U5xZCoFGjRli6dCl69uzp1OcmIs/FGjUiIiepVq0apk+fjoULFzr9uf/44w/ExcUxSCOSGWbUiIicqLCwEN27d8eff/7p1P0+e/Xqhf/+979o06aN056TiDwfAzUiIiIiD8WpTyIiIiIPxUCNiIiIyEMxUCMiIiLyUAzUiIiIiDwUAzUiIiIiD8VAjYiIiMhDMVAjIiIi8lAM1IiIiIg81P8Dak7SKHlzPUgAAAAASUVORK5CYII=", "text/plain": [ "
" ] @@ -455,7 +507,7 @@ "source": [ "## Analysis of the posterior given the observed data\n", "\n", - "After running the inference algorithm, let us inspect the inferred posterior distribution over the parameters ($\\bar g_{Na}$,$\\bar g_K$), given the observed trace. To do so, we first draw samples (i.e. consistent parameter sets) from the posterior:\n" + "After running the inference algorithm, let us inspect the inferred posterior distribution over the parameters ($\\bar g_{Na}$,$\\bar g_K$), given the observed trace. To do so, we first draw samples (i.e. consistent parameter sets $\\bar g_{Na}^{samples}$,$\\bar g_K^{samples}$) from the posterior:\n" ] }, { @@ -466,7 +518,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "890aa89db1034d5292032bec50b8cc19", + "model_id": "652152b10a5349b6ac4b1858e019415c", "version_major": 2, "version_minor": 0 }, @@ -489,7 +541,7 @@ "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -507,6 +559,7 @@ " points=true_params,\n", " points_offdiag={\"markersize\": 6},\n", " points_colors=\"r\",\n", + " labels=labels_params,\n", ");" ] }, @@ -525,7 +578,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "c2534affd97c40ddbdd7402af33f4c52", + "model_id": "fc1448b4e5a34cfd8b5daa1068e6c584", "version_major": 2, "version_minor": 0 }, @@ -549,7 +602,7 @@ "outputs": [ { "data": { - "image/png": "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WRK5f7t27QDYb7/90DSNgQMHAhVLjHb3/MNlVt999x39+vUjOzubAQMGsGDBgj284slJAgSRMuwpQIXm+i9bpRQ5lMYelFKQiAqj4NLJrbbVqjGnl90RPSCvq8TzZkK9NpEfPZiUSYmRSAE33XQTH374Ia+//jp//PEHHTt2ZOjQoWzdGt1Q8cYbb2TMmDFMnz6dRo0aMXz4cALlKwuOGjWKsrIyfvzxR2bPns3DDz9MnTp1ANi+fTuDBg1iv/324/fff2f8+PFs2LCB0047LaYNr7/+Oj6fjylTpvD8889z9tln8/nnn1NYWBi5zzfffENxcTEnnngiAEVFRVx33XX8/vvvfPfdd+i6zoknnohlhd5306ZNA+Dbb79l3bp1fPTRR3v8/AFuv/12xowZw++//47H4+HCCy/8J5c96UiJkUghKuaWabk8QEAmk1YmHChKgLBnwqV6gZjSNbl2tUKPrjvmlWVO097wZ35m0869v/peo9wMPr/qkGrdt6ioiP/+97+89tprHH300QC8+OKLTJw4kZdffpn+/UP7zdx1110ceeSRQKgz37JlSz7++GNOO+00Vq5cycknn0yPHj0AaN++feTxn332Wfbbbz8eeOCByLFXXnmFVq1asXDhQjp37gxAp06deOSRRyL36dChAzk5OXz88cece+65ALz99tuMGDGC3NxcAE4++eSY5/LKK6/QqFEj5s2bx7777kujRo0AaNCgAU2bNt2j53/jjTdG7vuf//yHww8/HIBbbrmFY489ltLSUjIzM6t1rZOdBAgiZWxtegiX+6+hg7aWQrKoX7oJ6OJ0s2qPkgChMlXupCwBQvWUX8C5qi0Dy8ZwcKdm/Ofwg51tk1sZ0QDBg4klEyHT2qadZazfUbr7OzpoyZIlBAIBDj44+png9XrZf//9mT9/fiRAOOiggyLn69evT5cuXZg/fz4Ao0eP5oorrmDChAkMGTKEk08+mZ49ewLw119/MWnSpEhGIf5vhwOEvn37xpzzeDycdtppjBs3jnPPPZeioiI+/fRT3n333ch9Fi1axJ133snUqVPZvHlzJHOwcuVK9t1334Q8f7vwcwJo1qwZABs3bqR169bV+lvJTgIEkTICGfVooW3mRu//APiooBVQvVGRVFT5hlYSIFTZx5LgqVrCl68MH8tVMzrojSGrrpNNcqdty1HrZvFM8ASmWl2ZanWlv8vLIsWuNcrN2P2dXPB3L774YoYOHcqXX37JhAkTePDBBxkzZgxXXXUVhYWFDB8+nIcffrjC74U72QA5ORXnGJ599tkcfvjhbNy4kYkTJ5KVlcWwYcMi54cPH06bNm148cUXad68OZZlse++++L3186Kh15vdABA00JDVuGgxA1SNkB46KGHuPXWW7n66qt58sknASgtLeX666/n3XffpaysjKFDh/Lcc8/RpEkTZxsrEkIpFVsWkQadZckgVBQOnKTEaM8oBR20NTztfRaFxrxtg4D+TjfLfTYtRPv+XkZ74PGAhyn0cH1ZpNi16pb5OKlDhw6R2v82bUJzaAKBANOnT+eaa66J3O+3336LjJRv27aNhQsX0rVr18j5Vq1acfnll3P55Zdz66238uKLL3LVVVfRp08fPvzwQ9q2bYvHU7Mu6IABA2jVqhXvvfceX3/9Naeeemqkk75lyxYWLFjAiy++yKGHHgrAzz//HPP74ZWQTNP8x88/HaTkJOXp06czduzYmPQOwLXXXsvnn3/O+++/zw8//MDatWs56aSTHGqlqA0BW0yruTxAUFJiVDlV4UaIVfWHvohSKDLx011fwb76cuoFZW+N2hZZsthFo4vCnXJycrjiiiu48cYbGT9+PPPmzeOSSy6huLiYiy66KHK/e++9l++++445c+YwcuRIGjZsGFkJ6JprruGbb75h2bJl/PHHH0yaNCkSPIwaNYqtW7dy5plnMn36dJYsWcI333zDBRdcsMuOe9hZZ53F888/z8SJEzn77LMjx+vVq0eDBg144YUXWLx4Md9//z3XXXddzO82btyYrKysyMTogoKCPX7+6SDlAoTCwkLOPvtsXnzxRerVqxc5XlBQwMsvv8zjjz/OoEGD6Nu3L6+++iq//PILv/32m4MtFomSUbiKo/VpkZ/TI0CI03GQE01JKlXPQXD36yFR4gPPI4u+gIXfONgit6qYLZAKI5EKHnroIU4++WTOPfdc+vTpw+LFi/nmm29i+lwPPfQQV199NX379mX9+vV8/vnnMSP0o0aNomvXrgwbNozOnTvz3HPPAdC8eXOmTJmCaZocddRR9OjRg2uuuYa6deui67vvkp599tnMmzePFi1axMwT0HWdd999lxkzZrDvvvty7bXX8uijj8b8rsfj4emnn2bs2LE0b96c448/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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAwMAAAHACAYAAAD+wbQQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAADD+0lEQVR4nOzdd3wUVdfA8d/MlhQSEiD0XqRKE1RERUBFxResCIooKnYFe+/9sWJDLKjYFQUF7A2wgFjoRaT3XkISkuzOzPvHtplk02CTncye7+fzPO7O7CZnh93sPfeee69iGIaBEEIIIYQQIuGo8Q5ACCGEEEIIER+SDAghhBBCCJGgJBkQQgghhBAiQUkyIIQQQgghRIKSZEAIIYQQQogEJcmAEEIIIYQQCUqSASGEEEIIIRKUJANCCCGEEEIkqIRNBvLy8vjnn3/Iy8uLdyhCCCGEEELERcImA8uXL6dHjx4sX7483qEIIYQQQggRFwmbDAghhBBCCJHoJBkQQgghhBAiQUkyIIQQQgghRIKSZEAIIYQQQogEJcmAEEIIIYQQCUqSASGEEEIIIRKUJANCCCGEEEIkKEkGhBBCCCGESFCSDAghhBBCCJGgJBkQQgghhBAiQUkyIIQQQgghRIKSZEAIIYQQQsTV9u3bmTRp0kE/f+TIkYwcOTJ2AdnAAw88QN++fSv997gr/TcIIYQQQghRittvvx3DMBgyZMhBPf/555+PcUSJQ5IBIYQQQggRV4ZhHNLzMzIyYhRJ4pEyIWFbhmGwJ7cw3mEIIYQQAli7di2KovDBBx/QuHFjMjMzGTNmDH6/P/yY6dOnc8QRR5CSkkLHjh2ZPHly+NyCBQvo3bs3qampNG7cmIceeggIlMNMnDiRiRMn0qJFCwD27t3LiBEjqFmzJo0aNeL666/nwIEDAMyYMYMWLVpw9dVXk5GRwf/+979iZUKlxdG3b1+uv/56WrVqRbNmzdi/f3+x13rXXXfRsGFDUlJS6Nu3L0uWLAmfe+ONN2jfvj1er5esrCyuvfZaNE0DAuVKt99+O0OHDiU1NZWOHTsyb9487rnnHjIzM2nSpEm4HKo819Psl19+oWfPnqSkpNC5c2c+++yzivzzlUiSAWFbd3y2iO4Pf8+z36+IdyhV4qfl2xj04q98OHd9vEOxjU17D3D/F4v5dsnWeIdS7azflcdbv61hW3Z+vENJCKt35LB+V168wxCiSjz44IN8/PHHTJkyhc8++4z7778fgJ9++omzzz6biy66iAULFjBq1CiGDh3K33//DcBFF11E9+7dWbJkCRMmTOB///sfX331FbfccgvnnXce5513Hn/++ScAl112Gfv27eO3337j888/588//+S6664Lx7Bu3Try8/P5+++/Of/88y3xlRUHwFtvvcV7773HlClTSE9Ptzx/ypQpvPbaa0yaNInFixfToEEDLrnkEgBmzpzJ6NGjeeyxx1ixYgXjx49nwoQJfPHFF+Hnjx07lr59+7Jw4ULq1KlD//792bZtG3PmzGHw4MFceeWV6Lpe5vU027p1K//3f//HyJEjWbRoEbfffjsjR47kl19+Oah/QzPFONRxmWrqn3/+oUePHvz9998cccQR8Q5HFGEYBhfc/RRPeV7lR607Fz/yabxDqnSD7nyRXupSPtL6s+Cxc1FVJd4hxd0V7/zFd0u3keHR+H14DWq06AnJMhRcHgOf/4WlW7I5plUdPryiV7zDcbQFG/Zy1rjfUBSFyVf3pmuWAUk1QXXFOzRRHf3+Esx+uezHNewKF3xkPfbBMNiyoOznHnMt9L6u7McVsXbtWlq2bMnnn3/OGWecAQQa1bfffjvbtm3jnHPOITk5mQ8++CD8nGHDhqEoCh9++CEZGRmMGTOGBx54AFVVmT17Ni1btqRBgwbhXv23336bVatW0bZtW3bv3h0u/1m0aBHdunVj9+7dzJs3j379+rFs2TLat28PYHn+2WefXWocffv2pUGDBnz0UZHrF/Tcc8/x1FNPMWfOHJo1a8aOHTv4999/Oe644/j7779ZsWKFJQE55phjGDhwIPfeey8jR45kxYoV/P777wC88sor3HDDDezdu5eUlBSWLVtGx44d2bx5MwUFBaVezwcffJAZM2YwY8YM7r33XpYuXWoZDbj55ptZu3btIY8QyMiAsKW8Qo0x7sk0UXZysft72Lsh3iFVLn8B73of527PBzzoeZv9BdGHCBPNd0u3ATBCn0qNj86G1/uDqTdFRGcYBku3ZAMwe/WuOEfjfB/9uQHdAE03mPHl+/BUGxjXCwplpEAchIL9sH9z2f/L21n8uXk7y/fcguJlMRVx7LHHhm/37NmTHTt2sHPnTpYtW8bRRx9teWzv3r1ZtmwZECi9eeSRR2jYsCGX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", "text/plain": [ "
" ] diff --git a/tutorials/00_getting_started_flexible.ipynb b/tutorials/00_getting_started_flexible.ipynb index 562889929..552bb71fc 100644 --- a/tutorials/00_getting_started_flexible.ipynb +++ b/tutorials/00_getting_started_flexible.ipynb @@ -25,9 +25,10 @@ "In this tutorial we demonstrate how to get started with the `sbi` toolbox and how to perform parameter inference on a simple model. \n", "\n", "Each of the implemented inference methods takes three inputs: \n", - "1. A candidate (mechanistic) model - _the simulator_\n", - "2. prior knowledge or constraints on model parameters - _the prior_\n", - "3. observational data (or summary statistics thereof) - _the observations_\n", + "1. observational data (or summary statistics thereof) - _the observations_\n", + "1. a candidate (mechanistic) model - _the simulator_\n", + "1. prior knowledge or constraints on model parameters - _the prior_\n", + "\n", "\n", "\n", "If you are new to simulation-based inference, please first read the information in the tutorial [README](README.md) or the [website](https://sbi-dev.github.io/sbi/) to familiarise with the motivation and relevant terms." @@ -35,7 +36,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -63,9 +64,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "For this illustrative example, we consider a model _simulator_, that takes in 3 parameters ($\\theta$). For simplicity, the _simulator_ outputs simulations of the same dimensionality and just adds 1.0 and some Gaussian noise to the parameter set. \n", + "For this illustrative example, we consider a model _simulator_, that takes in 3 parameters ($\\theta$). For simplicity, the _simulator_ outputs simulations of the same dimensionality and adds 1.0 and some Gaussian noise to the parameter set. \n", "\n", - "> Note: This is where you would specify your model _simulator_ and with its parameters. \n", + "> Note: This is where you instead would use your specific _simulator_ with its parameters.\n", "\n", "For the 3-dimensional parameter space we consider a uniform _prior_ between [-2,2].\n", "\n", @@ -75,7 +76,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -83,6 +84,7 @@ "prior = utils.BoxUniform(low=-2 * torch.ones(num_dim), high=2 * torch.ones(num_dim))\n", "\n", "def simulator(theta):\n", + " # linear gaussian\n", " return theta + 1.0 + torch.randn_like(theta) * 0.1" ] }, @@ -97,7 +99,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -134,27 +136,27 @@ "metadata": {}, "outputs": [], "source": [ - "inference = SNPE(prior=prior)" + "inference = SNPE(prior=prior) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Next, we need simulations or more specifically pairs of paramters $\\theta$ which we sample from the _prior_ and correpsonding simulations $x = \\mathrm{simulator} (\\theta)$. The `sbi` helper function called `simulate_for_sbi` allows to parallelize your code with `joblib`.\n", + "Next, we need simulations, or more specifically, pairs of parameters $\\theta$ which we sample from the _prior_ and corresponding simulations $x = \\mathrm{simulator} (\\theta)$. The `sbi` helper function called `simulate_for_sbi` allows to parallelize your code with `joblib`.\n", "\n", - " > Note: You might already have your own parameter, simulation pairs which were generated elsewhere (e.g., on a compute cluster), then you would add them here. \n" + " > Note: If you already have your own parameters, simulation pairs which were generated elsewhere (e.g., on a compute cluster), you would add them here. \n" ] }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "297cd0c1931746e3aa596c0fd1c3e0e4", + "model_id": "319fb75107b34108b08df7045da73a18", "version_major": 2, "version_minor": 0 }, @@ -202,7 +204,7 @@ "name": "stdout", "output_type": "stream", "text": [ - " Neural network successfully converged after 52 epochs." + " Neural network successfully converged after 77 epochs." ] } ], @@ -223,7 +225,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -250,31 +252,40 @@ "Let's say we have made some observation $x_{obs}$ for which we now want to infer the posterior:" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> Note: this is where your experimental observation would come in. For real observations, of course, you would not have access to the ground truth $\\theta$. " + ] + }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ - "x_obs = torch.zeros(3)" + "theta_true = prior.sample((1,))\n", + "# generate our observation \n", + "x_obs = simulator(theta_true)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - " Given this observation, we can then sample from the posterior $p(\\theta|x_{obs})$ and visualise the univariate and pairwise marginals for the three parameters via `analysis.pairplot()`." + " Given this observation, we can sample from the posterior $p(\\theta|x_{obs})$ and visualise the univariate and pairwise marginals for the three parameters via `analysis.pairplot()`." ] }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "5848a8d82ade45418ce453a2a0747de3", + "model_id": "2d074bf735e043df8f9154cd787ac4be", "version_major": 2, "version_minor": 0 }, @@ -287,7 +298,7 @@ }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -305,38 +316,25 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Assessing the posterior for a known $\\theta, x$ - pair " - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": {}, - "outputs": [], - "source": [ - "# generate a true theta and an observation x pair\n", - "theta_true = prior.sample((1,))\n", - "x_true = simulator(theta_true)\n", - "# randomly samle a different set of parameters theta\n", - "theta_diff = prior.sample((1,))" + "## Assessing the posterior for the known $\\theta, x$ - pair " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Now we can assess, if the interred distirbutions over the parameters match the parameters we used to generate our test sample." + "For this special case, we have access to the ground-truth parameters that generated the observation. We can thus assess if the inferred distributions over the parameters match the parameters $\\theta_{true}$ we used to generate our test observation $x_{obs}$." ] }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "bab25640d11f44fa889df5a7b4d04c8e", + "model_id": "27c3d6145e8d4f2495984d33daca6f67", "version_major": 2, "version_minor": 0 }, @@ -349,7 +347,7 @@ }, { "data": { - "image/png": "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16e77ror2lZWVqZNmzYpFAopLS31zpZNmzZNhw4digb3oFT7bCB5pN63GEmruLj4kuHxTz/9VO+8844WL15ssKr4a2xsVEFBgTIzM6NthYWFCgaDam1tNViZOR6P55JdxEKhkLZt25Zynw0kD3reSEotLS1aunSpSktL9cADD5guJ666u7s1YcKES9oGb/f09JgoKeE888wzOn78uOrr602XAowKPW9Yq6qqSm63O/qvrq5OktTc3KxFixYpFArptddeS7lh4qysrCtCevB2dna2iZISyrPPPqutW7eqpqZGs2bNMl0OMCr0vGGtyspKLVu2LHrb6/XK7/dr0aJFkqTa2lpNmTLFVHnGeL1etbS0qL+/X+npka94U1OTXC6XPB6P2eIMe/zxx7V9+3bV1NRo6dKlpssBRo3whrXy8/OVn58fvd3V1aUlS5YoLS1N7733nqZNm2awOnNKSkqUkZGho0ePqqysTJL0/vvva968eSk3CjHchg0btGPHDr3yyispe8kckgfhjaRRVVWlL774Ino5VFNTkyTJ5XIpNzfXYGXxlZ2dLZ/Pp8rKSu3atUt+v1+bN2/Wrl27TJdmTENDgzZu3Kj169errKws+tmQlLJ/5MFuXOeNpDFz5kydPn36inafz6fdu3fHvyCDuru7tXr1ar3++uvKzc3V2rVr9eSTT5ouy5gXX3xR69ev/97f8V8gbER4AwBgmdQ9AQYAgKUIbwAALEN4AwBgGcIbAADLEN4AAFiG8AYA4Fp6u6VvT0R+JgjCGwCAa2n5TNp5T+RngiC8AQCwDOENAIBlCG8gSXR2dmrlypVyu90qLCxUVVWV6ZIAjBM2JgGSxNNPP62PP/5YtbW1amxslM/n080336zly5ebLg1AjBHeQBLo7u7Wnj179Oabb2ru3LmSpOeee07bt28nvIFR8LcHJElej8twJd+PYXMgCZw4cUKhUEilpaXRttLSUtXX17NrFnCd/O0B3bvlsO7dcjga4omG8AaSgN/vV15enpxOZ7StoKBAwWBQra2tBisD7NPW1atA34ACfQNq6+o1Xc73YtgcSALBYFDnzp2T2+2Otg32uAOBxOw5ABg9whtIAllZWZo8ebKOHDkSbfvyyy9VXl4ulysxz9kBNvj8bKem5vRoqulCLkN4A0nA6/XqwoULmjFjhhwOhySpubk5GuoARufJ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", + "image/png": "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", "text/plain": [ "
" ] @@ -359,7 +357,7 @@ } ], "source": [ - "samples = posterior.sample((10000,), x=x_true)\n", + "samples = posterior.sample((10000,), x=x_obs)\n", "_ = analysis.pairplot(samples, points=theta_true, limits=[[-2, 2], [-2, 2], [-2, 2]], figsize=(6, 6), labels=[r\"$\\theta_1$\", r\"$\\theta_2$\", r\"$\\theta_3$\"])" ] }, @@ -367,30 +365,40 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The log-probability should ideally indicate that the true parameters are more likely given the correspinding observation than the different set of parameters. \n", + "The log-probability should ideally indicate that the true parameters, given the corresponding observation, are more likely than a different set of randomly chosen parameters from the prior distribution. \n", "\n", - "We can further assess the range of log probabilities of the samples from the posterior." + "Relative to the obtained log-probabilities, we can investigate the range of log-probabilities of the parameters sampled from the posterior." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "# first sample an alternative parameter set from the prior\n", + "theta_diff = prior.sample((1,))" ] }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "high for true theta : tensor([3.3860])\n", - "low for different theta : tensor([-82.1151])\n", - "range of posterior samples: min: tensor(-7.3333) max : tensor(3.9999)\n" + "high for true theta : tensor([2.0030])\n", + "low for different theta : tensor([-142.0334])\n", + "range of posterior samples: min: tensor(-8.5509) max : tensor(4.1429)\n" ] } ], "source": [ - "log_probability_true_theta = posterior.log_prob(theta_true, x=x_true)\n", - "log_probability_diff_theta = posterior.log_prob(theta_diff, x=x_true)\n", - "log_probability_samples = posterior.log_prob(samples, x=x_true)\n", + "log_probability_true_theta = posterior.log_prob(theta_true, x=x_obs)\n", + "log_probability_diff_theta = posterior.log_prob(theta_diff, x=x_obs)\n", + "log_probability_samples = posterior.log_prob(samples, x=x_obs)\n", "\n", "print( r'high for true theta :', log_probability_true_theta)\n", "print( r'low for different theta :', log_probability_diff_theta)\n", @@ -403,7 +411,7 @@ "source": [ "## Next steps\n", "\n", - "For `sbi` _contributers_ we recommend directly heading over to [Inferring parameters for multiple observations ](01_gaussian_amortized.ipynb) which introduces the concept of amortization. \n", + "For `sbi` _contributers_, we recommend directly heading over to [Inferring parameters for multiple observations ](01_gaussian_amortized.ipynb) which introduces the concept of amortization. \n", "\n", "\n", "For _users_ and `sbi` beginners, we recommend going through [the example for a scientific simulator from neuroscience](../examples/00_HH_simulator.ipynb) to see a scientific use case.\n", diff --git a/tutorials/01_gaussian_amortized.ipynb b/tutorials/01_gaussian_amortized.ipynb index f9088879a..67b9e7833 100644 --- a/tutorials/01_gaussian_amortized.ipynb +++ b/tutorials/01_gaussian_amortized.ipynb @@ -18,7 +18,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "In this tutorial, we will demonstrate how `sbi` can infer an amortized posterior for a simple toy model with a uniform prior and Gaussian likelihood." + "In this tutorial, we introduce **amortization** that is the capability to evaluate the posterior for different observations without having to re-run inference.\n", + "\n", + "We will demonstrate how `sbi` can infer an amortized posterior for the illustrative linear Gaussian example introduced in [Getting Started](00_getting_started_flexible.ipynb), that takes in 3 parameters ($\\theta$). " ] }, { @@ -31,15 +33,21 @@ "\n", "from sbi import analysis as analysis\n", "from sbi import utils as utils\n", - "from sbi.inference.base import infer" + "from sbi.inference import SNPE, simulate_for_sbi\n", + "from sbi.utils.user_input_checks import (\n", + " check_sbi_inputs,\n", + " process_prior,\n", + " process_simulator,\n", + ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Defining prior, simulator, and running inference\n", - "Say we have a 3-dimensional parameter space, and the prior is uniformly distributed between `-2` and `2` in each dimension, i.e. $\\theta \\in [-2,2], y\\in [-2,2], z \\in [-2,2]$." + "## Defining simulator, prior, and running inference\n", + "\n", + "Our _simulator_ (model) takes in 3 parameters ($\\theta$) and outputs simulations of the same dimensionality. It adds 1.0 and some Gaussian noise to the parameter set. For each dimension of $\\theta$, we consider a uniform _prior_ between [-2,2]." ] }, { @@ -49,40 +57,56 @@ "outputs": [], "source": [ "num_dim = 3\n", - "prior = utils.BoxUniform(low=-2 * torch.ones(num_dim), high=2 * torch.ones(num_dim))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Our simulator takes the input parameters, adds `1.0` in each dimension, and then adds some Gaussian noise:" + "prior = utils.BoxUniform(low=-2 * torch.ones(num_dim), high=2 * torch.ones(num_dim))\n", + "\n", + "def simulator(theta):\n", + " # linear gaussian\n", + " return theta + 1.0 + torch.randn_like(theta) * 0.1\n", + "\n", + "# Check prior, simulator, consistency\n", + "prior, num_parameters, prior_returns_numpy = process_prior(prior)\n", + "simulator = process_simulator(simulator, prior, prior_returns_numpy)\n", + "check_sbi_inputs(simulator, prior)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, - "outputs": [], - "source": [ - "def linear_gaussian(theta):\n", - " return theta + 1.0 + torch.randn_like(theta) * 0.1" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can then run inference (either with the simple interface or with the flexible interface):" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "ee18eeec11ae4c80bb44fc3549ed86b1", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Running 2000 simulations.: 0%| | 0/2000 [00:00 Note: For real observations, of course, you would not have access to the ground truth $\\theta$." ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ - "x_o_1 = torch.zeros(3,)\n", - "x_o_2 = 2.0 * torch.ones(3,)" + "# generate the first observation\n", + "theta_1 = prior.sample((1,))\n", + "x_obs_1 = simulator(theta_1)\n", + "# now generate a second observation\n", + "theta_2 = prior.sample((1,))\n", + "x_obs_2 = simulator(theta_2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We can draw samples from the posterior given `x_o_1` and then plot them:" + "We can draw samples from the posterior given $x_{obs~1}$ and then plot them:" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "ca7655f9bf1942beb4bb5270b5df9a38", + "model_id": "f1fdcd4738c3432f84cb557457555641", "version_major": 2, "version_minor": 0 }, @@ -138,23 +168,23 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], "source": [ - "posterior_samples_1 = posterior.sample((10000,), x=x_o_1)\n", + "posterior_samples_1 = posterior.sample((10000,), x=x_obs_1)\n", "\n", "# plot posterior samples\n", "_ = analysis.pairplot(\n", - " posterior_samples_1, limits=[[-2, 2], [-2, 2], [-2, 2]], figsize=(5, 5)\n", + " posterior_samples_1, limits=[[-2, 2], [-2, 2], [-2, 2]], figsize=(5, 5),\n", + " labels=[r\"$\\theta_1$\", r\"$\\theta_2$\", r\"$\\theta_3$\"], \n", + " points=theta_1 # add ground truth thetas\n", ")" ] }, @@ -162,26 +192,25 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "As it can be seen, the posterior samples are centered around `[-1,-1,-1]` in each dimension. \n", - "This makes sense because the simulator always adds `1.0` in each dimension and we have observed `x_o_1 = [0,0,0]`." + "The inferred distirbutions over the parameters given the **first** observation $x_{obs~1}$ match the parameters $\\theta_{1}$ (shown in orange), we used to generate our first observation $x_{obs~1}$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Since the learned posterior is amortized, we can also draw samples from the posterior given the second observation without having to re-run inference:" + "Since the learned posterior is **amortized**, we can also draw samples from the posterior given the second observation $x_{obs~2}$ without having to re-run inference:" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "96dc0d5e0eb84a4bb3339f464754fc17", + "model_id": "a804c01289324432b8ec49e17c6661e9", "version_major": 2, "version_minor": 0 }, @@ -194,23 +223,23 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], "source": [ - "posterior_samples_2 = posterior.sample((10000,), x=x_o_2)\n", + "posterior_samples_2 = posterior.sample((10000,), x=x_obs_2)\n", "\n", "# plot posterior samples\n", "_ = analysis.pairplot(\n", - " posterior_samples_2, limits=[[-2, 2], [-2, 2], [-2, 2]], figsize=(5, 5)\n", + " posterior_samples_2, limits=[[-2, 2], [-2, 2], [-2, 2]], figsize=(5, 5),\n", + " labels=[r\"$\\theta_1$\", r\"$\\theta_2$\", r\"$\\theta_3$\"], \n", + " points=theta_2 # add ground truth thetas\n", ")" ] }, @@ -218,7 +247,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "So, if we observed `x_o_2 = [2,2,2]`, the posterior is centered around `[1,1,1]` -- again, this makes sense because the simulator adds `1.0` in each dimension." + "The inferred distirbutions over the parameters given the **second** observation $x_{obs~2}$ also match the ground truth parameters $\\theta_{2}$ we used to generate our second test observation $x_{obs~2}$.\n", + "\n", + "This in a nutshell demonstrates the benefit of amortized methods. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Next steps\n", + "\n", + "Now that you got familiar with amortization, we recommend checking out \n", + "[inferring parameters for a single observation ](03_multiround_inference.ipynb) which introduces the concept of multi round inference for a single observation to be more sampling efficient." ] } ], @@ -238,7 +279,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.5" + "version": "3.8.18" } }, "nbformat": 4, diff --git a/tutorials/README.md b/tutorials/README.md index 754a1e028..88b650551 100644 --- a/tutorials/README.md +++ b/tutorials/README.md @@ -12,7 +12,7 @@ Before going through the tutorial notebooks, make sure to read through the **Ove - [Getting started](00_getting_started_flexible.ipynb) introduces the `sbi` package and its core functionality. - [Inferring parameters for multiple observations](01_gaussian_amortized.ipynb) introduces the concept of amortization, i.e., that we do not need to retrain our inference procedure for different observations. -- [The example for a scientific simulator from neuroscience (Hodgkin-Huxley)](../examples/00_HH_simulator.ipynb), show cases `sbi` applied to a scientific use cases building on the previous two examples. +- [The example for a scientific simulator from neuroscience (Hodgkin-Huxley)](../examples/00_HH_simulator.ipynb), shows how `sbi` can be applied to scientific use cases building on the previous two examples. - [Inferring parameters for a single observation ](03_multiround_inference.ipynb) introduces the concept of multi round inference for a single observation to be more sampling efficient. [All implemented methods](16_implemented_methods.ipynb) provides an overview of the implemented inference methods and how to call them. @@ -43,7 +43,8 @@ Once you have familiarised yourself with the methods and identified how to apply ### Analysis: - [Conditional distributions](07_conditional_distributions.ipynb) -- [Posterior sensitivity analysis](09_sensitivity_analysis.ipynb) +- [Posterior sensitivity analysis](09_sensitivity_analysis.ipynb) shows how to perform a sensitivity analysis of a model. + ### Examples: - [Hodgkin-Huxley example](../examples/00_HH_simulator.ipynb) - [Decision making model](../examples/01_decision_making_model.ipynb) From 2567666f1d66daa4a0ea5d191c49c74d3178be08 Mon Sep 17 00:00:00 2001 From: Guy Moss <91739128+gmoss13@users.noreply.github.com> Date: Sun, 24 Mar 2024 20:33:03 +0100 Subject: [PATCH 05/53] Unconditional LazyTransform workaround (#1099) * Unconditional LazyTransform workaround * refactor UnconditionalLazyTransform * Refactor standardizing_transform for specific backends * change to AffineTransform * add some docstring --------- Co-authored-by: Sebastian Bischoff --- sbi/neural_nets/flow.py | 11 +++--- sbi/utils/sbiutils.py | 80 ++++++++++++++++++++++++++++++++--------- sbi/utils/zukoutils.py | 7 ++++ 3 files changed, 75 insertions(+), 23 deletions(-) create mode 100644 sbi/utils/zukoutils.py diff --git a/sbi/neural_nets/flow.py b/sbi/neural_nets/flow.py index 23c531654..a37e69f63 100644 --- a/sbi/neural_nets/flow.py +++ b/sbi/neural_nets/flow.py @@ -14,12 +14,12 @@ rational_quadratic, # pyright: ignore[reportAttributeAccessIssue] ) from torch import Tensor, nn, relu, tanh, tensor, uint8 -from zuko.flows import LazyTransform from sbi.neural_nets.density_estimators import NFlowsFlow, ZukoFlow from sbi.utils.sbiutils import ( standardizing_net, standardizing_transform, + standardizing_transform_zuko, z_score_parser, ) from sbi.utils.torchutils import create_alternating_binary_mask @@ -501,15 +501,12 @@ def build_zuko_maf( residual=residual, ) - transforms: Union[Sequence[LazyTransform], LazyTransform] - transforms = maf.transform.transforms # pyright: ignore[reportAssignmentType] + transforms = maf.transform z_score_x_bool, structured_x = z_score_parser(z_score_x) if z_score_x_bool: - # transforms = transforms transforms = ( - *transforms, - # Ideally `standardizing_transform` would return a `LazyTransform` instead of ` AffineTransform | Unconditional`, maybe all three are compatible - standardizing_transform(batch_x, structured_x, backend="zuko"), # pyright: ignore[reportAssignmentType] + transforms, + standardizing_transform_zuko(batch_x, structured_x), ) z_score_y_bool, structured_y = z_score_parser(z_score_y) diff --git a/sbi/utils/sbiutils.py b/sbi/utils/sbiutils.py index 9e8555cdc..1e26d58b3 100644 --- a/sbi/utils/sbiutils.py +++ b/sbi/utils/sbiutils.py @@ -15,11 +15,18 @@ from pyro.distributions import Empirical from torch import Tensor, ones, optim, zeros from torch import nn as nn -from torch.distributions import Distribution, Independent, biject_to, constraints +from torch.distributions import ( + AffineTransform, + Distribution, + Independent, + biject_to, + constraints, +) from sbi import utils as utils from sbi.sbi_types import TorchTransform from sbi.utils.torchutils import atleast_2d +from sbi.utils.zukoutils import UnconditionalLazyTransform def warn_if_zscoring_changes_data(x: Tensor, duplicate_tolerance: float = 0.1) -> None: @@ -140,9 +147,8 @@ def standardizing_transform( batch_t: Tensor, structured_dims: bool = False, min_std: float = 1e-14, - backend: str = "nflows", -) -> Union[transforms.AffineTransform, zuko.flows.Unconditional]: - """Builds standardizing transform +) -> transforms.AffineTransform: + """Builds standardizing transform for nflows Args: batch_t: Batched tensor from which mean and std deviation (across @@ -157,7 +163,59 @@ def standardizing_transform( Returns: Affine transform for z-scoring """ + t_mean, t_std = z_standardization(batch_t, structured_dims, min_std) + return transforms.AffineTransform(shift=-t_mean / t_std, scale=1 / t_std) + +def standardizing_transform_zuko( + batch_t: Tensor, + structured_dims: bool = False, + min_std: float = 1e-14, +) -> zuko.flows.LazyTransform: + """Builds standardizing transform for Zuko flows + + Args: + batch_t: Batched tensor from which mean and std deviation (across + first dimension) are computed. + structured_dim: Whether data dimensions are structured (e.g., time-series, + images), which requires computing mean and std per sample first before + aggregating over samples for a single standardization mean and std for the + batch, or independent (default), which z-scores dimensions independently. + min_std: Minimum value of the standard deviation to use when z-scoring to + avoid division by zero. + + Returns: + Affine transform for z-scoring + """ + t_mean, t_std = z_standardization(batch_t, structured_dims, min_std) + return UnconditionalLazyTransform( + AffineTransform, + loc=-t_mean / t_std, + scale=1 / t_std, + buffer=True, + ) + + +def z_standardization( + batch_t: Tensor, + structured_dims: bool = False, + min_std: float = 1e-14, +) -> [Tensor, Tensor]: + """Computes mean and standard deviation for z-scoring + + Args: + batch_t: Batched tensor from which mean and std deviation (across + first dimension) are computed. + structured_dim: Whether data dimensions are structured (e.g., time-series, + images), which requires computing mean and std per sample first before + aggregating over samples for a single standardization mean and std for the + batch, or independent (default), which z-scores dimensions independently. + min_std: Minimum value of the standard deviation to use when z-scoring to + avoid division by zero. + + Returns: + Mean and standard deviation for z-scoring + """ is_valid_t, *_ = handle_invalid_x(batch_t, True) if structured_dims: @@ -175,18 +233,8 @@ def standardizing_transform( t_std = torch.std(batch_t[is_valid_t], dim=0) t_std[t_std < min_std] = min_std - if backend == "nflows": - return transforms.AffineTransform(shift=-t_mean / t_std, scale=1 / t_std) - elif backend == "zuko": - return zuko.flows.Unconditional( - zuko.transforms.MonotonicAffineTransform, - shift=-t_mean / t_std, - scale=1 / t_std, - buffer=True, - ) - - else: - raise ValueError("Invalid backend. Use 'nflows' or 'zuko'.") + # Return mean and std for z-scoring. + return t_mean, t_std class Standardize(nn.Module): diff --git a/sbi/utils/zukoutils.py b/sbi/utils/zukoutils.py new file mode 100644 index 000000000..da116d8d7 --- /dev/null +++ b/sbi/utils/zukoutils.py @@ -0,0 +1,7 @@ +from zuko.flows import LazyTransform, Unconditional + + +# This is a temporary wrapper for the Unconditional class in zuko. +# Avoids pyright error of zuko Flows requiring a LazyTransform as input. +class UnconditionalLazyTransform(Unconditional, LazyTransform): + pass From eeaf891a62f6ca8f92b1dc8f2aae6f6a4bb44d81 Mon Sep 17 00:00:00 2001 From: Sebastian Bischoff Date: Mon, 25 Mar 2024 10:51:52 +0100 Subject: [PATCH 06/53] Fix issues pyright raises on newer Python versions (#1108) --- sbi/samplers/mcmc/slice_numpy.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sbi/samplers/mcmc/slice_numpy.py b/sbi/samplers/mcmc/slice_numpy.py index b9b1de9db..ea7733375 100644 --- a/sbi/samplers/mcmc/slice_numpy.py +++ b/sbi/samplers/mcmc/slice_numpy.py @@ -10,6 +10,8 @@ import torch from joblib import Parallel, delayed from matplotlib import pyplot as plt +from matplotlib.axes import Axes +from matplotlib.figure import FigureBase from tqdm.auto import tqdm, trange from sbi.simulators.simutils import tqdm_joblib @@ -134,8 +136,8 @@ def gen( # show trace plot if show_info: - fig: plt.FigureBase - ax: plt.Axes + fig: FigureBase + ax: Axes fig, ax = plt.subplots(1, 1) # pyright: ignore[reportAssignmentType] ax.plot(L_trace) ax.set_ylabel("log probability") From 32e365d4cc4d71c2baf3bf4a2bb6ba328d84e020 Mon Sep 17 00:00:00 2001 From: Jan Date: Mon, 25 Mar 2024 11:05:53 +0100 Subject: [PATCH 07/53] Remove helpers from tests, skip GPU tests. (#1105) * fix 1098: remove unneccesary helper functions. * fix 1093: add hook to skip GPU tests without device. --- tests/conftest.py | 13 ++++ tests/ensemble_test.py | 23 ++----- tests/inference_on_device_test.py | 22 +++--- tests/inference_with_NaN_simulator_test.py | 7 +- tests/linearGaussian_mdn_test.py | 11 --- tests/linearGaussian_snle_test.py | 51 ++++---------- tests/linearGaussian_snpe_test.py | 78 +++++----------------- tests/linearGaussian_snre_test.py | 39 +++-------- tests/mcmc_test.py | 7 +- tests/plot_test.py | 11 +-- tests/posterior_nn_test.py | 9 +-- tests/posterior_sampler_test.py | 10 +-- tests/simulator_utils_test.py | 8 --- 13 files changed, 71 insertions(+), 218 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 4dea71f19..aef50b3f9 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -16,3 +16,16 @@ def set_seed(): @pytest.fixture(scope="session", autouse=True) def set_default_tensor_type(): torch.set_default_tensor_type("torch.FloatTensor") + + +# Pytest hook to skip GPU tests if no devices are available. +def pytest_collection_modifyitems(config, items): + """Skip GPU tests if no devices are available.""" + gpu_device_available = ( + torch.cuda.is_available() or torch.backends.mps.is_available() + ) + if not gpu_device_available: + skip_gpu = pytest.mark.skip(reason="No devices available") + for item in items: + if "gpu" in item.keywords: + item.add_marker(skip_gpu) diff --git a/tests/ensemble_test.py b/tests/ensemble_test.py index fda68bd47..600b0421f 100644 --- a/tests/ensemble_test.py +++ b/tests/ensemble_test.py @@ -13,11 +13,6 @@ linear_gaussian, true_posterior_linear_gaussian_mvn_prior, ) -from sbi.utils.user_input_checks import ( - check_sbi_inputs, - process_prior, - process_simulator, -) from tests.test_utils import check_c2st, get_dkl_gaussian_prior @@ -34,13 +29,8 @@ def test_import_before_deprecation(): prior_cov = eye(2) prior = MultivariateNormal(loc=prior_mean, covariance_matrix=prior_cov) - prior, _, prior_returns_numpy = process_prior(prior) - simulator = process_simulator( - lambda theta: linear_gaussian(theta, likelihood_shift, likelihood_cov), - prior, - prior_returns_numpy, - ) - check_sbi_inputs(simulator, prior) + def simulator(theta): + return linear_gaussian(theta, likelihood_shift, likelihood_cov) theta = prior.sample((num_simulations,)) x = simulator(theta) @@ -87,13 +77,8 @@ def test_c2st_posterior_ensemble_on_linearGaussian(inference_method, num_trials) ) target_samples = gt_posterior.sample((num_samples,)) - prior, _, prior_returns_numpy = process_prior(prior) - simulator = process_simulator( - lambda theta: linear_gaussian(theta, likelihood_shift, likelihood_cov), - prior, - prior_returns_numpy, - ) - check_sbi_inputs(simulator, prior) + def simulator(theta): + return linear_gaussian(theta, likelihood_shift, likelihood_cov) # train ensemble components posteriors = [] diff --git a/tests/inference_on_device_test.py b/tests/inference_on_device_test.py index b0f1dcca5..31032ebc4 100644 --- a/tests/inference_on_device_test.py +++ b/tests/inference_on_device_test.py @@ -34,9 +34,6 @@ from sbi.utils.torchutils import BoxUniform, gpu_available, process_device from sbi.utils.user_input_checks import ( check_embedding_net_device, - check_sbi_inputs, - process_prior, - process_simulator, validate_theta_and_x, ) @@ -282,13 +279,11 @@ def test_train_with_different_data_and_training_device( training_device = process_device(training_device) num_dim = 2 - prior_ = BoxUniform( + num_simulations = 32 + prior = BoxUniform( -torch.ones(num_dim), torch.ones(num_dim), device=training_device ) - - prior, _, prior_returns_numpy = process_prior(prior_) - simulator = process_simulator(diagonal_linear_gaussian, prior, prior_returns_numpy) - check_sbi_inputs(simulator, prior) + simulator = diagonal_linear_gaussian inference = inference_method( prior, @@ -305,8 +300,9 @@ def test_train_with_different_data_and_training_device( device=training_device, ) - theta, x = simulate_for_sbi(simulator, prior, 32) - theta, x = theta.to(data_device), x.to(data_device) + theta = prior.sample((num_simulations,)) + x = simulator(theta).to(data_device) + theta = theta.to(data_device) x_o = torch.zeros(x.shape[1]) inference = inference.append_simulations(theta, x, data_device=data_device) @@ -453,10 +449,8 @@ def test_embedding_nets_integration_training_device( def test_nograd_after_inference_train(inference_method) -> None: """Test that no gradients are present after training.""" num_dim = 2 - prior_ = BoxUniform(-torch.ones(num_dim), torch.ones(num_dim)) - prior, _, prior_returns_numpy = process_prior(prior_) - simulator = process_simulator(diagonal_linear_gaussian, prior, prior_returns_numpy) - check_sbi_inputs(simulator, prior) + prior = BoxUniform(-torch.ones(num_dim), torch.ones(num_dim)) + simulator = diagonal_linear_gaussian inference = inference_method( prior, diff --git a/tests/inference_with_NaN_simulator_test.py b/tests/inference_with_NaN_simulator_test.py index 95ebd8121..4f3001f3a 100644 --- a/tests/inference_with_NaN_simulator_test.py +++ b/tests/inference_with_NaN_simulator_test.py @@ -23,7 +23,6 @@ from sbi.utils.sbiutils import handle_invalid_x from sbi.utils.user_input_checks import ( check_sbi_inputs, - process_prior, process_simulator, ) @@ -100,8 +99,7 @@ def linear_gaussian_nan( prior=prior, ) - prior, _, prior_returns_numpy = process_prior(prior) - simulator = process_simulator(linear_gaussian_nan, prior, prior_returns_numpy) + simulator = process_simulator(linear_gaussian_nan, prior, False) check_sbi_inputs(simulator, prior) inference = method(prior=prior) @@ -143,8 +141,7 @@ def linear_gaussian_nan( prior=prior, ) - prior, _, prior_returns_numpy = process_prior(prior) - simulator = process_simulator(linear_gaussian_nan, prior, prior_returns_numpy) + simulator = process_simulator(linear_gaussian_nan, prior, False) check_sbi_inputs(simulator, prior) restriction_estimator = RestrictionEstimator(prior=prior) proposal = prior diff --git a/tests/linearGaussian_mdn_test.py b/tests/linearGaussian_mdn_test.py index b9cd5539f..273e75ad6 100644 --- a/tests/linearGaussian_mdn_test.py +++ b/tests/linearGaussian_mdn_test.py @@ -20,11 +20,6 @@ linear_gaussian, true_posterior_linear_gaussian_mvn_prior, ) -from sbi.utils.user_input_checks import ( - check_sbi_inputs, - process_prior, - process_simulator, -) from tests.test_utils import check_c2st @@ -58,9 +53,6 @@ def mdn_inference_with_different_methods(method): def simulator(theta: Tensor) -> Tensor: return linear_gaussian(theta, likelihood_shift, likelihood_cov) - prior, _, prior_returns_numpy = process_prior(prior) - simulator = process_simulator(simulator, prior, prior_returns_numpy) - check_sbi_inputs(simulator, prior) inference = method(density_estimator="mdn") theta, x = simulate_for_sbi(simulator, prior, num_simulations) @@ -108,9 +100,6 @@ def test_mdn_with_1D_uniform_prior(): def simulator(theta: Tensor) -> Tensor: return linear_gaussian(theta, likelihood_shift, likelihood_cov) - prior, _, prior_returns_numpy = process_prior(prior) - simulator = process_simulator(simulator, prior, prior_returns_numpy) - check_sbi_inputs(simulator, prior) inference = SNPE(density_estimator="mdn") theta, x = simulate_for_sbi(simulator, prior, 100) diff --git a/tests/linearGaussian_snle_test.py b/tests/linearGaussian_snle_test.py index 38d0ea6a3..ff57e36d8 100644 --- a/tests/linearGaussian_snle_test.py +++ b/tests/linearGaussian_snle_test.py @@ -27,9 +27,7 @@ ) from sbi.utils import BoxUniform from sbi.utils.user_input_checks import ( - check_sbi_inputs, process_prior, - process_simulator, ) from .test_utils import check_c2st, get_prob_outside_uniform_prior @@ -58,9 +56,7 @@ def test_api_snle_multiple_trials_and_rounds_map(num_dim: int, prior_str: str): else: prior = BoxUniform(-2.0 * ones(num_dim), 2.0 * ones(num_dim)) - prior, _, prior_returns_numpy = process_prior(prior) - simulator = process_simulator(diagonal_linear_gaussian, prior, prior_returns_numpy) - check_sbi_inputs(simulator, prior) + simulator = diagonal_linear_gaussian inference = SNLE(prior=prior, density_estimator="mdn", show_progress_bars=False) proposals = [prior] @@ -112,18 +108,14 @@ def test_c2st_snl_on_linear_gaussian_different_dims(model_str="maf"): num_discarded_dims=discard_dims, num_samples=num_samples, ) - prior, _, prior_returns_numpy = process_prior(prior) - simulator = process_simulator( - lambda theta: linear_gaussian( + + def simulator(theta): + return linear_gaussian( theta, likelihood_shift, likelihood_cov, num_discarded_dims=discard_dims, - ), - prior, - prior_returns_numpy, - ) - check_sbi_inputs(simulator, prior) + ) density_estimator = likelihood_nn(model=model_str, num_transforms=3) inference = SNLE(density_estimator=density_estimator, show_progress_bars=False) @@ -177,13 +169,8 @@ def test_c2st_and_map_snl_on_linearGaussian_different( else: prior = BoxUniform(-2.0 * ones(num_dim), 2.0 * ones(num_dim)) - prior, _, prior_returns_numpy = process_prior(prior) - simulator = process_simulator( - lambda theta: linear_gaussian(theta, likelihood_shift, likelihood_cov), - prior, - prior_returns_numpy, - ) - check_sbi_inputs(simulator, prior) + def simulator(theta): + return linear_gaussian(theta, likelihood_shift, likelihood_cov) density_estimator = likelihood_nn(model_str, num_transforms=3) inference = SNLE(density_estimator=density_estimator, show_progress_bars=False) @@ -306,13 +293,8 @@ def test_c2st_multi_round_snl_on_linearGaussian(num_trials: int): ) target_samples = gt_posterior.sample((num_samples,)) - prior, _, prior_returns_numpy = process_prior(prior) - simulator = process_simulator( - lambda theta: linear_gaussian(theta, likelihood_shift, likelihood_cov), - prior, - prior_returns_numpy, - ) - check_sbi_inputs(simulator, prior) + def simulator(theta): + return linear_gaussian(theta, likelihood_shift, likelihood_cov) inference = SNLE(show_progress_bars=False) @@ -375,13 +357,8 @@ def test_c2st_multi_round_snl_on_linearGaussian_vi(num_trials: int): ) target_samples = gt_posterior.sample((num_samples,)) - prior, _, prior_returns_numpy = process_prior(prior) - simulator = process_simulator( - lambda theta: linear_gaussian(theta, likelihood_shift, likelihood_cov), - prior, - prior_returns_numpy, - ) - check_sbi_inputs(simulator, prior) + def simulator(theta): + return linear_gaussian(theta, likelihood_shift, likelihood_cov) inference = SNLE(show_progress_bars=False) @@ -487,11 +464,7 @@ def test_api_snl_sampling_methods( # Thus, we would not like to run, e.g., VI with all init_strategies, but only once # (namely with `init_strategy=proposal`). if sample_with == "mcmc" or init_strategy == "proposal": - prior, _, prior_returns_numpy = process_prior(prior) - simulator = process_simulator( - diagonal_linear_gaussian, prior, prior_returns_numpy - ) - check_sbi_inputs(simulator, prior) + simulator = diagonal_linear_gaussian inference = SNLE(show_progress_bars=False) diff --git a/tests/linearGaussian_snpe_test.py b/tests/linearGaussian_snpe_test.py index 834d18cd5..34819bb3e 100644 --- a/tests/linearGaussian_snpe_test.py +++ b/tests/linearGaussian_snpe_test.py @@ -31,11 +31,6 @@ true_posterior_linear_gaussian_mvn_prior, ) from sbi.utils import RestrictedPrior, get_density_thresholder -from sbi.utils.user_input_checks import ( - check_sbi_inputs, - process_prior, - process_simulator, -) from .sbiutils_test import conditional_of_mvn from .test_utils import ( @@ -80,13 +75,8 @@ def test_c2st_snpe_on_linearGaussian(snpe_method, num_dim: int, prior_str: str): num_samples=num_samples, ) - prior, _, prior_returns_numpy = process_prior(prior) - simulator = process_simulator( - lambda theta: linear_gaussian(theta, likelihood_shift, likelihood_cov), - prior, - prior_returns_numpy, - ) - check_sbi_inputs(simulator, prior) + def simulator(theta): + return linear_gaussian(theta, likelihood_shift, likelihood_cov) inference = snpe_method(prior, show_progress_bars=False) @@ -181,13 +171,8 @@ def test_density_estimators_on_linearGaussian(density_estimator): ) target_samples = gt_posterior.sample((num_samples,)) - prior, _, prior_returns_numpy = process_prior(prior) - simulator = process_simulator( - lambda theta: linear_gaussian(theta, likelihood_shift, likelihood_cov), - prior, - prior_returns_numpy, - ) - check_sbi_inputs(simulator, prior) + def simulator(theta): + return linear_gaussian(theta, likelihood_shift, likelihood_cov) inference = SNPE_C(prior, density_estimator=density_estimator) @@ -234,18 +219,13 @@ def test_c2st_snpe_on_linearGaussian_different_dims(density_estimator="maf"): num_samples=num_samples, ) - prior, _, prior_returns_numpy = process_prior(prior) - simulator = process_simulator( - lambda theta: linear_gaussian( + def simulator(theta): + return linear_gaussian( theta, likelihood_shift, likelihood_cov, num_discarded_dims=discard_dims, - ), - prior, - prior_returns_numpy, - ) - check_sbi_inputs(simulator, prior) + ) # Test whether prior can be `None`. inference = SNPE_C( @@ -326,13 +306,8 @@ def test_c2st_multi_round_snpe_on_linearGaussian(method_str: str): else: density_estimator = "maf" - prior, _, prior_returns_numpy = process_prior(prior) - simulator = process_simulator( - lambda theta: linear_gaussian(theta, likelihood_shift, likelihood_cov), - prior, - prior_returns_numpy, - ) - check_sbi_inputs(simulator, prior) + def simulator(theta): + return linear_gaussian(theta, likelihood_shift, likelihood_cov) creation_args = dict( prior=prior, @@ -439,13 +414,8 @@ def test_api_snpe_c_posterior_correction(sample_with, mcmc_method, prior_str): else: prior = utils.BoxUniform(-2.0 * ones(num_dim), 2.0 * ones(num_dim)) - prior, _, prior_returns_numpy = process_prior(prior) - simulator = process_simulator( - lambda theta: linear_gaussian(theta, likelihood_shift, likelihood_cov), - prior, - prior_returns_numpy, - ) - check_sbi_inputs(simulator, prior) + def simulator(theta): + return linear_gaussian(theta, likelihood_shift, likelihood_cov) inference = SNPE_C(prior, show_progress_bars=False) @@ -504,13 +474,8 @@ def test_api_force_first_round_loss( likelihood_cov = 0.3 * eye(num_dim) prior = utils.BoxUniform(-2.0 * ones(num_dim), 2.0 * ones(num_dim)) - prior, _, prior_returns_numpy = process_prior(prior) - simulator = process_simulator( - lambda theta: linear_gaussian(theta, likelihood_shift, likelihood_cov), - prior, - prior_returns_numpy, - ) - check_sbi_inputs(simulator, prior) + def simulator(theta): + return linear_gaussian(theta, likelihood_shift, likelihood_cov) inference = SNPE_C(prior, show_progress_bars=False) @@ -563,10 +528,6 @@ def simulator(theta): # Test whether SNPE works properly with structured z-scoring. net = posterior_nn("maf", z_score_x="structured", hidden_features=20) - prior, _, prior_returns_numpy = process_prior(prior) - simulator = process_simulator(simulator, prior, prior_returns_numpy) - check_sbi_inputs(simulator, prior) - inference = SNPE_C(prior, density_estimator=net, show_progress_bars=False) # We need a pretty big dataset to properly model the bimodality. @@ -693,9 +654,6 @@ def test_mdn_conditional_density(num_dim: int = 3, cond_dim: int = 1): def simulator(theta): return linear_gaussian(theta, likelihood_shift, likelihood_cov) - prior, _, prior_returns_numpy = process_prior(prior) - simulator = process_simulator(simulator, prior, prior_returns_numpy) - check_sbi_inputs(simulator, prior) inference = SNPE_C(density_estimator="mdn", show_progress_bars=False) theta, x = simulate_for_sbi( @@ -732,13 +690,9 @@ def test_example_posterior(snpe_method: type): extra_kwargs = dict(final_round=True) if snpe_method == SNPE_A else dict() - prior, _, prior_returns_numpy = process_prior(prior) - simulator = process_simulator( - lambda theta: linear_gaussian(theta, likelihood_shift, likelihood_cov), - prior, - prior_returns_numpy, - ) - check_sbi_inputs(simulator, prior) + def simulator(theta): + return linear_gaussian(theta, likelihood_shift, likelihood_cov) + inference = snpe_method(prior, show_progress_bars=False) theta, x = simulate_for_sbi( diff --git a/tests/linearGaussian_snre_test.py b/tests/linearGaussian_snre_test.py index 3b1d5c94e..10c5e4aca 100644 --- a/tests/linearGaussian_snre_test.py +++ b/tests/linearGaussian_snre_test.py @@ -29,11 +29,6 @@ samples_true_posterior_linear_gaussian_uniform_prior, true_posterior_linear_gaussian_mvn_prior, ) -from sbi.utils.user_input_checks import ( - check_sbi_inputs, - process_prior, - process_simulator, -) from tests.test_utils import ( check_c2st, get_dkl_gaussian_prior, @@ -61,9 +56,7 @@ def test_api_snre_multiple_trials_and_rounds_map( num_simulations = 100 prior = MultivariateNormal(loc=zeros(num_dim), covariance_matrix=eye(num_dim)) - prior, _, prior_returns_numpy = process_prior(prior) - simulator = process_simulator(diagonal_linear_gaussian, prior, prior_returns_numpy) - check_sbi_inputs(simulator, prior) + simulator = diagonal_linear_gaussian inference = snre_method(prior=prior, classifier="mlp", show_progress_bars=False) proposals = [prior] @@ -112,15 +105,11 @@ def test_c2st_sre_on_linearGaussian(snre_method: RatioEstimator): prior_cov = eye(theta_dim) prior = MultivariateNormal(loc=prior_mean, covariance_matrix=prior_cov) - prior, _, prior_returns_numpy = process_prior(prior) - simulator = process_simulator( - lambda theta: linear_gaussian( + def simulator(theta): + return linear_gaussian( theta, likelihood_shift, likelihood_cov, num_discarded_dims=discard_dims - ), - prior, - prior_returns_numpy, - ) - check_sbi_inputs(simulator, prior) + ) + inference = snre_method(classifier="resnet", show_progress_bars=False) theta, x = simulate_for_sbi( @@ -191,9 +180,6 @@ def test_c2st_snre_variants_on_linearGaussian_with_multiple_trials( def simulator(theta): return linear_gaussian(theta, likelihood_shift, likelihood_cov) - prior, _, prior_returns_numpy = process_prior(prior) - simulator = process_simulator(simulator, prior, prior_returns_numpy) - check_sbi_inputs(simulator, prior) kwargs = dict( classifier="resnet", show_progress_bars=False, @@ -291,13 +277,9 @@ def test_c2st_multi_round_snr_on_linearGaussian_vi( ) target_samples = gt_posterior.sample((num_samples,)) - prior, _, prior_returns_numpy = process_prior(prior) - simulator = process_simulator( - lambda theta: linear_gaussian(theta, likelihood_shift, likelihood_cov), - prior, - prior_returns_numpy, - ) - check_sbi_inputs(simulator, prior) + def simulator(theta): + return linear_gaussian(theta, likelihood_shift, likelihood_cov) + inference = snre_method(show_progress_bars=False) theta, x = simulate_for_sbi( @@ -393,9 +375,8 @@ def test_api_sre_sampling_methods(sampling_method: str, prior_str: str): else: prior = utils.BoxUniform(-ones(num_dim), ones(num_dim)) - prior, _, prior_returns_numpy = process_prior(prior) - simulator = process_simulator(diagonal_linear_gaussian, prior, prior_returns_numpy) - check_sbi_inputs(simulator, prior) + simulator = diagonal_linear_gaussian + inference = SNRE_B(classifier="resnet", show_progress_bars=False) theta, x = simulate_for_sbi( diff --git a/tests/mcmc_test.py b/tests/mcmc_test.py index 5e24e5aaf..218d405a6 100644 --- a/tests/mcmc_test.py +++ b/tests/mcmc_test.py @@ -27,9 +27,7 @@ true_posterior_linear_gaussian_mvn_prior, ) from sbi.utils.user_input_checks import ( - check_sbi_inputs, process_prior, - process_simulator, ) from tests.test_utils import check_c2st @@ -152,9 +150,8 @@ def test_getting_inference_diagnostics(method): Uniform(low=-ones(1), high=ones(1)), ] - prior, _, prior_returns_numpy = process_prior(prior) - simulator = process_simulator(diagonal_linear_gaussian, prior, prior_returns_numpy) - check_sbi_inputs(simulator, prior) + prior, _, _ = process_prior(prior) + simulator = diagonal_linear_gaussian density_estimator = likelihood_nn("maf", num_transforms=3) inference = SNLE(density_estimator=density_estimator, show_progress_bars=False) diff --git a/tests/plot_test.py b/tests/plot_test.py index 2d7bae3ad..0ace88e48 100644 --- a/tests/plot_test.py +++ b/tests/plot_test.py @@ -12,11 +12,6 @@ from sbi.analysis import pairplot, plot_summary, sbc_rank_plot from sbi.inference import SNLE, SNPE, SNRE, simulate_for_sbi from sbi.utils import BoxUniform -from sbi.utils.user_input_checks import ( - check_sbi_inputs, - process_prior, - process_simulator, -) @pytest.mark.parametrize("samples", (torch.randn(100, 2), [torch.randn(100, 2)] * 2)) @@ -39,13 +34,9 @@ def test_plot_summary(method, tmp_path): summary_writer = SummaryWriter(tmp_path) - def linear_gaussian(theta): + def simulator(theta): return theta + 1.0 + torch.randn_like(theta) * 0.1 - prior, _, prior_returns_numpy = process_prior(prior) - simulator = process_simulator(linear_gaussian, prior, prior_returns_numpy) - check_sbi_inputs(simulator, prior) - inference = method(prior=prior, summary_writer=summary_writer) theta, x = simulate_for_sbi(simulator, proposal=prior, num_simulations=6) train_kwargs = ( diff --git a/tests/posterior_nn_test.py b/tests/posterior_nn_test.py index f610c98bf..a11b4fb37 100644 --- a/tests/posterior_nn_test.py +++ b/tests/posterior_nn_test.py @@ -14,11 +14,6 @@ simulate_for_sbi, ) from sbi.simulators.linear_gaussian import diagonal_linear_gaussian -from sbi.utils.user_input_checks import ( - check_sbi_inputs, - process_prior, - process_simulator, -) @pytest.mark.parametrize("snpe_method", [SNPE_A, SNPE_C]) @@ -34,9 +29,7 @@ def test_log_prob_with_different_x(snpe_method: type, x_o_batch_dim: bool): num_dim = 2 prior = MultivariateNormal(loc=zeros(num_dim), covariance_matrix=eye(num_dim)) - prior, _, prior_returns_numpy = process_prior(prior) - simulator = process_simulator(diagonal_linear_gaussian, prior, prior_returns_numpy) - check_sbi_inputs(simulator, prior) + simulator = diagonal_linear_gaussian inference = snpe_method(prior=prior) theta, x = simulate_for_sbi(simulator, prior, 1000) diff --git a/tests/posterior_sampler_test.py b/tests/posterior_sampler_test.py index d83283790..6dee39fd8 100644 --- a/tests/posterior_sampler_test.py +++ b/tests/posterior_sampler_test.py @@ -17,11 +17,6 @@ ) from sbi.samplers.mcmc import SliceSamplerSerial, SliceSamplerVectorized from sbi.simulators.linear_gaussian import diagonal_linear_gaussian -from sbi.utils.user_input_checks import ( - check_sbi_inputs, - process_prior, - process_simulator, -) @pytest.mark.parametrize( @@ -51,9 +46,8 @@ def test_api_posterior_sampler_set(sampling_method: str, set_seed): num_chains = 3 if sampling_method in "slice_np_vectorized" else 1 prior = MultivariateNormal(loc=zeros(num_dim), covariance_matrix=eye(num_dim)) - prior, _, prior_returns_numpy = process_prior(prior) - simulator = process_simulator(diagonal_linear_gaussian, prior, prior_returns_numpy) - check_sbi_inputs(simulator, prior) + simulator = diagonal_linear_gaussian + inference = SNL(prior, show_progress_bars=False) theta, x = simulate_for_sbi( diff --git a/tests/simulator_utils_test.py b/tests/simulator_utils_test.py index 1f6330927..a03c26df9 100644 --- a/tests/simulator_utils_test.py +++ b/tests/simulator_utils_test.py @@ -10,11 +10,6 @@ from sbi.simulators.linear_gaussian import diagonal_linear_gaussian from sbi.simulators.simutils import simulate_in_batches from sbi.utils.torchutils import BoxUniform -from sbi.utils.user_input_checks import ( - check_sbi_inputs, - process_prior, - process_simulator, -) @pytest.mark.parametrize("num_sims", (0, 10)) @@ -32,9 +27,6 @@ def test_simulate_in_batches( ): """Test combinations of num_sims and simulation_batch_size.""" - prior, _, prior_returns_numpy = process_prior(prior) - simulator = process_simulator(simulator, prior, prior_returns_numpy) - check_sbi_inputs(simulator, prior) theta = prior.sample((num_sims,)) # run twice to check seeding. x1 = simulate_in_batches(simulator, theta, batch_size, seed=seed) From c383d7f95b29067a885ba250cfac8104c38583ba Mon Sep 17 00:00:00 2001 From: Peter Steinbach Date: Mon, 25 Mar 2024 11:30:57 +0100 Subject: [PATCH 08/53] Review Tutorial 13 on SBC based diagnostic methods (#1051) * fix: import statement for sbc_rank_plot * fix: explanation of c2st in this tutorial * fix: torch UserWarning when calculating std on one value * add: demonstration of nD SBC mapped to 1D finished removed metadata from notebook * reformatted tutorial * fix: formatting of sbc module * fix: formatting issue * fix: trimmed down multi-dimensional SBC discussion * fix: copy and paste error denominating the wrong number of dimensions * fix: reworded hard-to-understand explanation of reduce_fns * fix: avoid confusion about single dimension Co-authored-by: Jan --------- Co-authored-by: Jan --- sbi/diagnostics/sbc.py | 3 +- ...nostics_simulation_based_calibration.ipynb | 844 ++++++++++++++---- 2 files changed, 670 insertions(+), 177 deletions(-) diff --git a/sbi/diagnostics/sbc.py b/sbi/diagnostics/sbc.py index 91bfa587c..740894fae 100644 --- a/sbi/diagnostics/sbc.py +++ b/sbi/diagnostics/sbc.py @@ -361,7 +361,8 @@ def check_uniformity_c2st( ]) # Use variance over repetitions to estimate robustness of c2st. - if (c2st_scores.std(0) > 0.05).any(): + c2st_std = c2st_scores.std(0, correction=0 if num_repetitions == 1 else 1) + if (c2st_std > 0.05).any(): warnings.warn( f"""C2ST score variability is larger than {0.05}: std={c2st_scores.std(0)}, result may be unreliable. Consider increasing the number of samples. diff --git a/tutorials/13_diagnostics_simulation_based_calibration.ipynb b/tutorials/13_diagnostics_simulation_based_calibration.ipynb index b893f1aac..528acdb5e 100644 --- a/tutorials/13_diagnostics_simulation_based_calibration.ipynb +++ b/tutorials/13_diagnostics_simulation_based_calibration.ipynb @@ -2,17 +2,19 @@ "cells": [ { "cell_type": "markdown", + "id": "0b29e299-a762-49ff-be34-94ec82652f0c", "metadata": {}, "source": [ "# Simulation-based Calibration in SBI\n", "\n", - "After a density estimator has been trained with simulated data to obtain a posterior, the estimator should be made subject to several diagnostic tests, before being used for inference given the actual observed data. _Posterior Predictive Checks_ (see [previous tutorial](https://sbi-dev.github.io/sbi/tutorial/12_diagnostics_posterior_predictive_check/)) provide one way to \"critique\" a trained estimator via its predictive performance. Another important approach to such diagnostics is simulation-based calibration as developed by [Cook et al, 2006](https://www.tandfonline.com/doi/abs/10.1198/106186006X136976) and [Talts et al, 2018](https://arxiv.org/abs/1804.06788).\n", + "After a density estimator has been trained with simulated data to obtain a posterior, the estimator should be made subject to several **diagnostic tests**. This needs to be performed before being used for inference given the actual observed data. _Posterior Predictive Checks_ (see [previous tutorial](https://sbi-dev.github.io/sbi/tutorial/12_diagnostics_posterior_predictive_check/)) provide one way to \"critique\" a trained estimator based on its predictive performance. Another important approach to such diagnostics is simulation-based calibration as developed by [Cook et al, 2006](https://www.tandfonline.com/doi/abs/10.1198/106186006X136976) and [Talts et al, 2018](https://arxiv.org/abs/1804.06788). This tutorial will demonstrate and teach you this technique with sbi.\n", "\n", - "**Simulation-based calibration** (SBC) provides a (qualitative) view and a quantitive measure to check, whether the uncertainties of the posterior are balanced, i.e., neither over-confident nor under-confident. As such, SBC can be viewed as a necessary condition (but not sufficient) for a valid inference algorithm: If SBC checks fail, this tells you that your inference is invalid. If SBC checks pass, this is no guarantee that the posterior estimation is working.\n" + "**Simulation-based calibration** (SBC) provides a (qualitative) view and a quantitive measure to check, whether the variances of the posterior are balanced, i.e., neither over-confident nor under-confident. As such, SBC can be viewed as a necessary condition (but not sufficient) for a valid inference algorithm: If SBC checks fail, this tells you that your inference is invalid. If SBC checks pass, this is no guarantee that the posterior estimation is working.\n" ] }, { "cell_type": "markdown", + "id": "7ce235c3-9c70-4d10-845f-70add68576b5", "metadata": {}, "source": [ "## In a nutshell\n", @@ -23,7 +25,7 @@ "2. we simulate \"observations\" from these parameters: `x_o_i = simulator(theta_o_i)`\n", "3. we perform inference given each observation `x_o_i`.\n", "\n", - "This produces a separate posterior $p_i(\\theta | x_{o,i})$ for each of `x_o_i`. The key step for SBC is to generate a set of posterior samples $\\{\\theta\\}_i$ from each posterior (let's call this `theta_i_s`, referring to `s` samples from posterior $p_i(\\theta | x_{o,i})$), and to rank the corresponding `theta_o_i` under this set of samples. A rank is computed by counting how many samples `theta_i_s` fall below their corresponding `theta_o_i` (see section 4.1 in Talts et al.). These ranks are then used to perform the SBC check.\n", + "This produces a separate posterior $p_i(\\theta | x_{o,i})$ for each of `x_o_i`. The key step for SBC is to generate a set of posterior samples $\\{\\theta\\}_i$ from each posterior. We call this `theta_i_s`, referring to `s` samples from posterior $p_i(\\theta | x_{o,i})$). Next, we rank the corresponding `theta_o_i` under this set of samples. A rank is computed by counting how many samples `theta_i_s` fall below their corresponding `theta_o_i` value (see section 4.1 in Talts et al.). These ranks are then used to perform the SBC check itself.\n", "\n", "### Key ideas behind SBC\n", "\n", @@ -36,49 +38,49 @@ "\n", "### What can SBC diagnose?\n", "\n", - "**SBC can inform us whether we are not wrong.** However, it cannot tell us whether we are right, i.e., SBC checks a necessary condition. For example, imagine you run SBC using the prior as a posterior. The ranks would be perfectly uniform. But the inference would be wrong.\n", + "**SBC can inform us whether we are not wrong.** However, it cannot tell us whether we are right, i.e., SBC checks a necessary condition. For example, imagine you run SBC using the prior as a posterior. The ranks would be perfectly uniform. But the inference would be wrong as this scenario would only occur if the posterior is uninformative.\n", "\n", - "**The Posterior Predictive Checks (see tutorial 12) can be seen as the complementary sufficient check** for the posterior (only as a methaphor, no theoretical guarantees here). Using the prior as a posterior and then doing predictive checks would clearly show that inference failed.\n", + "**The Posterior Predictive Checks (see [tutorial 12](https://sbi-dev.github.io/sbi/tutorial/12_diagnostics_posterior_predictive_check/)) can be seen as the complementary sufficient check** for the posterior (only as a methaphor, no theoretical guarantees here). Using the prior as a posterior and then doing predictive checks would clearly show that inference failed.\n", "\n", - "To summarize SBC can:\n", + "To summarize, SBC can:\n", "\n", "- tell us whether the SBI method applied to the problem at hand produces posteriors that have well-calibrated uncertainties,\n", - "- and if not, what kind of systematic bias it has: negative or positive bias (shift in the mean of the predictions) or over- or underdispersion (too large or too small variance)\n" + "- and if the posteriors have uncalibrated uncertainties, SBC surfaces what kind of systematic bias is present: negative or positive bias (shift in the mean of the predictions) or over- or underdispersion (too large or too small variance)\n" ] }, { "cell_type": "markdown", + "id": "53f22ccc-e2bc-4a70-a422-e0cac6944648", "metadata": {}, "source": [ "## A healthy posterior\n", "\n", "Let's take the gaussian linear simulator from the previous tutorials and run inference with NPE on it.\n", "\n", - "**Note:** SBC requires running inference several times. Using SBC with amortized methods like NPE is hence a justified endavour: repeated inference is cheap and SBC can be performed with little runtime penalty. This does not hold for sequential methods or anything relying on MCMC or VI (here, parallelization is your friend, `num_workers>1`).\n" + "**Note:** SBC requires running inference several times. Using SBC with amortized methods like NPE is hence a justified endavour: repeated inference is cheap and SBC can be performed with little runtime penalty. This does not hold for sequential methods or anything relying on MCMC or VI. Should you require methods of MCMC or VI, consider exploiting parallelization and set `num_workers>1` in the sbc functions.\n" ] }, { "cell_type": "code", - "execution_count": 2, - "metadata": { - "tags": [] - }, + "execution_count": null, + "id": "b79cd0b8-8161-47b9-a008-510ea1b857ea", + "metadata": {}, "outputs": [], "source": [ "import torch\n", "from torch import eye, ones\n", "from torch.distributions import MultivariateNormal\n", "\n", - "from sbi.diagnostics import check_sbc, run_sbc, sbc_rank_plot\n", + "from sbi.analysis.plot import sbc_rank_plot\n", + "from sbi.diagnostics import check_sbc, run_sbc\n", "from sbi.inference import SNPE, simulate_for_sbi" ] }, { "cell_type": "code", - "execution_count": 3, - "metadata": { - "tags": [] - }, + "execution_count": null, + "id": "ae48dbd9-084c-4753-8feb-731a7f99075d", + "metadata": {}, "outputs": [], "source": [ "num_dim = 2\n", @@ -93,6 +95,7 @@ }, { "cell_type": "markdown", + "id": "4efea93e-d93b-47ab-a1ef-487ee06ec2e0", "metadata": {}, "source": [ "## An ideal case\n", @@ -102,15 +105,14 @@ }, { "cell_type": "code", - "execution_count": 4, - "metadata": { - "tags": [] - }, + "execution_count": null, + "id": "a8907ec4-8439-41aa-af69-c96c295748ea", + "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "d331e41bad914672aff58cdbe77b9fba", + "model_id": "10491c1b8b0740219c669de52237e413", "version_major": 2, "version_minor": 0 }, @@ -148,10 +150,9 @@ }, { "cell_type": "code", - "execution_count": 5, - "metadata": { - "tags": [] - }, + "execution_count": null, + "id": "73b47ac1-2588-44dd-ba45-9616dee3caab", + "metadata": {}, "outputs": [ { "name": "stdout", @@ -165,7 +166,8 @@ "source": [ "_ = torch.manual_seed(1)\n", "\n", - "# let's obtain an observation\n", + "# let's sample an observation from the parameters we\n", + "# just produced\n", "theta_o = prior.sample((1,))\n", "x_o = simulator(theta_o)\n", "print(\"theta:\", theta_o.numpy())\n", @@ -174,23 +176,472 @@ }, { "cell_type": "code", - "execution_count": 6, - "metadata": { - "tags": [] - }, + "execution_count": null, + "id": "3254e3d4-e5f1-4e1f-bb1c-fa9e9b3adcaf", + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - " Neural network successfully converged after 91 epochs." + "\r", + " Training neural network. Epochs trained: 1" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 2" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 3" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 4" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 5" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 6" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 7" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 8" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 9" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 10" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 11" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 12" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 13" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 14" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 15" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 16" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 17" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 18" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 19" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 20" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 21" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 22" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 23" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 24" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 25" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 26" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 27" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 28" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 29" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 30" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 31" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 32" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 33" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 34" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 35" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 36" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 37" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 38" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 39" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 40" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 41" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 42" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 43" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 44" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 45" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 46" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 47" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 48" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 49" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 50" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 51" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 52" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 53" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 54" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 55" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 56" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + " Training neural network. Epochs trained: 57\r", + " Neural network successfully converged after 57 epochs." ] } ], "source": [ "_ = torch.manual_seed(2)\n", "\n", - "# we use a mdn model to have a fast turnaround with training.\n", + "# we use a mdn model to have a fast turnaround with training the NPE\n", "inferer = SNPE(prior, density_estimator=\"mdn\")\n", "# append simulations and run training.\n", "inferer.append_simulations(theta, x).train();" @@ -198,15 +649,14 @@ }, { "cell_type": "code", - "execution_count": 7, - "metadata": { - "tags": [] - }, + "execution_count": null, + "id": "0d6cf039-1dd8-44f8-bfed-3a3e027a84b4", + "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "f59ae5f08277406eb85aeaa25653c191", + "model_id": "2dfa0f8dfa4e4ff2be08efe5a06e4c46", "version_major": 2, "version_minor": 0 }, @@ -227,14 +677,13 @@ }, { "cell_type": "code", - "execution_count": 8, - "metadata": { - "tags": [] - }, + "execution_count": null, + "id": "f5e79734-08e8-4818-8402-798d5d01cbef", + "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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YRh67rnn9Mgjj7hdypI0ODiozs5Ovfzyy9q9e7fb5SwYIxcA8KCxsTFJUmtrq8uVLA7hAgAek8lk9LnPfU533323brrpJrfLWRSO3AcAj9mzZ48OHz6s/fv3u13KohEuAOAhn/nMZ/T888/rlVde0erVq90uZ9EIFwDwANM09dnPflbPPfec9u3bp/Xr17tdUkkIFwDzNjExoZMnT+a+P3PmjN588021traqp6fHxcqq3549e/TNb35T3/nOdxSJRDQwMCBJampqUm1trcvVLRxLkQHM2759+3Tvvfe+6+ef/OQn9fTTT1e+oCXketek/9rXvqZPfepTlS3GAYQLAMBxLEUGADiOcAEAOI5wAQA4jnABADiOcAEAOI5wAQA4jnABADiOcAEAOI5wAQA4jnABULWeeeYZ1dbWqr+/P/ezT3/607rllltyF9uCOzj+BUDVMk1T27dv1+7du/XEE0/oscce01NPPaUDBw6ou7vb7fKWNU5FBlC1DMPQ448/ro9+9KNauXKlnnjiCf3kJz/JBctHPvIR7du3T/fdd5/+5m/+xuVqlxdGLgCq3o4dO3TkyBG9+OKLuueee3I/37dvn6LRqL7+9a8TLhVGzwVAVXvhhRd07NgxpdNprVixoui297///YpEIi5VtrwRLgCq1sGDB/Xoo4/qySef1H333acvfvGLbpeEGfRcAFSls2fP6kMf+pD27t2rj3/84+rt7dVdd92lgwcPaseOHW6Xt+wxcgFQdUZGRvTBD35QDz/8sL7whS9Iknbt2qWHHnpIe/fudbk6SIxcAFSh1tZWHTt27F0//973vudCNbgWVosBWLLuv/9+vfXWW4rFYmptbdWzzz6ru+66y+2ylgXCBQDgOHouAADHES4AAMcRLgAAxxEuAADHES4AAMcRLgAAxxEuAADHES4AAMcRLgAAxxEuAADHES4AAMf9f2lbgJM4gKb2AAAAAElFTkSuQmCC", "text/plain": [ "
" ] @@ -261,6 +710,7 @@ }, { "cell_type": "markdown", + "id": "ff831073-5d73-4301-8b50-6a853d0a3acd", "metadata": {}, "source": [ "The observation `x_o` falls into the support of the predicted posterior samples, i.e. it is within `simulator(posterior_samples)`. Given the simulator, this is indicative that our posterior estimates the data well.\n" @@ -268,6 +718,7 @@ }, { "cell_type": "markdown", + "id": "20763237-c51c-443f-9063-979c2b3e1a24", "metadata": {}, "source": [ "### Running SBC\n", @@ -277,20 +728,20 @@ }, { "cell_type": "code", - "execution_count": 9, - "metadata": { - "tags": [] - }, + "execution_count": null, + "id": "a81aee59-5cc8-497f-8a2c-5a7a0212df97", + "metadata": {}, "outputs": [], "source": [ - "num_sbc_runs = 1_000 # choose a number of sbc runs, should be ~100s or ideally 1000\n", + "num_simulations = 1_000 # choose a number of sbc runs, should be ~100s or ideally 1000\n", "# generate ground truth parameters and corresponding simulated observations for SBC.\n", - "thetas = prior.sample((num_sbc_runs,))\n", + "thetas = prior.sample((num_simulations,))\n", "xs = simulator(thetas)" ] }, { "cell_type": "markdown", + "id": "0de8cfe9-e7e9-445e-aced-346af8eac3cd", "metadata": {}, "source": [ "SBC is implemented in `sbi` for your use on any `sbi` posterior. To run it, we only need to call `run_sbc` with appropriate parameters.\n", @@ -300,15 +751,14 @@ }, { "cell_type": "code", - "execution_count": 10, - "metadata": { - "tags": [] - }, + "execution_count": null, + "id": "50930e69-f837-4bb6-8637-a1ef70cdef11", + "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "84a1972b87db48d5967775f7840aaeb6", + "model_id": "08c34e6421504274a99671f4808f65f5", "version_major": 2, "version_minor": 0 }, @@ -330,6 +780,7 @@ }, { "cell_type": "markdown", + "id": "95b19252-b39b-45d8-87e2-52d019bc974b", "metadata": {}, "source": [ "`sbi` establishes two methods to do simulation-based calibration:\n", @@ -344,20 +795,10 @@ }, { "cell_type": "code", - "execution_count": 11, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/janteusen/qode/sbi/sbi/analysis/sbc.py:359: UserWarning: std(): degrees of freedom is <= 0. Correction should be strictly less than the reduction factor (input numel divided by output numel). (Triggered internally at /Users/runner/work/pytorch/pytorch/pytorch/aten/src/ATen/native/ReduceOps.cpp:1760.)\n", - " if (c2st_scores.std(0) > 0.05).any():\n" - ] - } - ], + "execution_count": null, + "id": "88b23176-28c5-4925-88f5-6c153d09e674", + "metadata": {}, + "outputs": [], "source": [ "check_stats = check_sbc(\n", " ranks, thetas, dap_samples, num_posterior_samples=num_posterior_samples\n", @@ -366,6 +807,7 @@ }, { "cell_type": "markdown", + "id": "fe168784-354f-48aa-a24d-bd60abe9f863", "metadata": {}, "source": [ "The `check_stats` variable created contains a dictionary with 3 metrics that help to judge our posterior. The \"first\" two compare the ranks to a uniform distribution.\n" @@ -373,6 +815,7 @@ }, { "cell_type": "markdown", + "id": "cac382ac-ecf8-4ca3-b441-a8fcd904a14d", "metadata": {}, "source": [ "### Ranks versus Uniform distribution\n" @@ -380,10 +823,9 @@ }, { "cell_type": "code", - "execution_count": 12, - "metadata": { - "tags": [] - }, + "execution_count": null, + "id": "ca62ad37-5004-43b0-b94c-02ec167e888e", + "metadata": {}, "outputs": [ { "name": "stdout", @@ -391,7 +833,7 @@ "text": [ "kolmogorov-smirnov p-values \n", "\n", - " check_stats['ks_pvals'] = [0.14610633 0.03378298]\n" + " check_stats['ks_pvals'] = [0.0793394 0.12618521]\n" ] } ], @@ -404,26 +846,26 @@ }, { "cell_type": "markdown", + "id": "5eac9e63-3760-4f1f-a89e-c98d15a273fd", "metadata": {}, "source": [ "The Kolmogorov-Smirnov (KS test, see also [here](https://en.wikipedia.org/wiki/Kolmogorov%E2%80%93Smirnov_test#Two-sample_Kolmogorov%E2%80%93Smirnov_test)) as used by `check_sbc` provides p-values `pvals` on the null hypothesis that the samples from `ranks` are drawn from a uniform distribution (in other words `H_0: PDF(ranks) == PDF(uniform)`). We are provided two values as our problem is two-dimensional - one p-value for each dimension.\n", "\n", - "The null hypothesis (of both distributions being equal) is rejected if the p-values fall below a significance threshold (usually `< 0.05`). Therefor, vanishing p-values (`ks_pvals=0`) are interpreted to indicate a vanishing false positive rate to (mistakenly) consider both distrubtions being \"equal\". Both values are above `0.05` and we, therefore, cannot claim that inference clearly went wrong. Nonetheless, we can add additional checks:\n" + "The null hypothesis (of both distributions being equal) is rejected if the p-values fall below a significance threshold (usually `< 0.05`). Therefor, vanishing p-values (`ks_pvals=0`) are interpreted to indicate a vanishing false positive rate to (mistakenly) consider both distrubtions being \"equal\". In this case, both values are above `0.05` (`0.0793394` and `0.12618521`) and we, therefore, cannot claim that inference clearly went wrong. Nonetheless, we can add additional checks:\n" ] }, { "cell_type": "code", - "execution_count": 13, - "metadata": { - "tags": [] - }, + "execution_count": null, + "id": "4967cb17-6728-44b7-bfb0-d71fee30e4d9", + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "c2st accuracies \n", - "check_stats['c2st_ranks'] = [0.568 0.5845]\n" + "check_stats['c2st_ranks'] = [0.5725 0.578 ]\n" ] } ], @@ -435,13 +877,15 @@ }, { "cell_type": "markdown", + "id": "644ae333-f5d6-4118-99c1-f986e6a1a4d9", "metadata": {}, "source": [ - "The second tier of metrics comparing `ranks` with a uniform distributions is a `c2st` test (see [here](http://arxiv.org/abs/1610.06545) for details). This is a nonparametric two sample test based on training a classifier to differented one of the ensembles (`ranks` versus samples from a uniform distribution) by being trained on the other. The values reported are the accuracies from cross-validation. If you see values around `0.5`, the classifier was unable to differentiate both ensembles, i.e. `ranks` are very uniform. If the values are high towards `1`, this matches the case where `ranks` is very unlike a uniform distribution.\n" + "The second tier of metrics comparing `ranks` with a uniform distributions is a `c2st` test (see [here](http://arxiv.org/abs/1610.06545) for details). This is a nonparametric two sample test based on training a classifier to differentiate two ensembles. Here, these two ensembles are the observed `ranks` and samples from a uniform distribution. The values reported are the accuracies from n-fold cross-validation. If you see values around `0.5`, the classifier was unable to differentiate both ensembles, i.e. `ranks` are very uniform. If the values are high towards `1`, this matches the case where `ranks` is very unlike a uniform distribution.\n" ] }, { "cell_type": "markdown", + "id": "bc0ad068-e9d1-4ec1-9667-44fb98ecbea6", "metadata": {}, "source": [ "### Data averaged posterior (DAP) versus prior\n" @@ -449,16 +893,15 @@ }, { "cell_type": "code", - "execution_count": 14, - "metadata": { - "tags": [] - }, + "execution_count": null, + "id": "c4cb8611-763b-4318-a0ad-430266c46ac9", + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "- c2st accuracies check_stats['c2st_dap'] = [0.5125 0.4975]\n" + "- c2st accuracies check_stats['c2st_dap'] = [0.491 0.48 ]\n" ] } ], @@ -468,6 +911,7 @@ }, { "cell_type": "markdown", + "id": "4707dfa8-e8fd-44e1-bb4f-6bc6ed7744c5", "metadata": {}, "source": [ "The last metric reported is again based on `c2st` computed per dimension of `theta`. If you see values around `0.5`, the `c2st` classifier was unable to differentiate both ensembles for each dimension of `theta`, i.e. `dap` are much like (if not identical to) the prior. If the values are very high towards `1`, this represents the case where `dap` is very unlike the prior distribution.\n" @@ -475,6 +919,7 @@ }, { "cell_type": "markdown", + "id": "229d6390-b05f-4b94-b016-6672f5b19069", "metadata": {}, "source": [ "### Visual Inspection\n" @@ -482,14 +927,13 @@ }, { "cell_type": "code", - "execution_count": 15, - "metadata": { - "tags": [] - }, + "execution_count": null, + "id": "0bc29b66-1b11-494e-8b91-7e3a99d0adac", + "metadata": {}, "outputs": [ { "data": { - "image/png": "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WFN1dXWpu9B4AiA0Ny+88ELU1tbGVVddVQxT99xzz0btq3PnznHXXXfFsGHD4qSTToo77rhjvSGwoqIijj/++Dj++OPjmGOOiSOPPDI++uijGDhwYLz33nvRsmXL6N2791q3bd26ddTU1GxUPwFoGryRBzaTHXfcMVatWhU333xzzJ07N373u9/FrbfeutH769KlS0yaNCneeOONOOWUU9b5F+QNN9wQEyZMiNmzZ8ebb74Zf/jDH6Jbt25RWVkZ3/rWt2Lw4MHxD//wD/E///M/MW/evHj22WdjzJgxMX369IiI6NWrV7zzzjvx0ksvxQcffLDO95RVVVXFjBkzYsaMGVFVVRV/+ctfYsaMGTFnzpyNPkcAtgwjgGTj63ffvUWPt+eee8ZVV10V11xzTYwePTr233//uOyyy+L000/f6H1269YtJk2aFMOGDYvTTjstbr/99mjRokWdNh06dIjrrrsu5syZEy1atIhBgwbFvffeWxyFnDhxYowZMyZGjBgRH3zwQXTt2jX233//6NKlS0REHHPMMXHffffFoYceGosXL45bbrklTj755DX6snDhwhg4cGDx8dixY2Ps2LFx4IEHxhNPPLHR5wjA5ldI9XhX95IlS6Jjx47xySefREVFRYN2YMWKFTFz5sxo06aN94rQIFa/B7B3796+n64B1dbWRkop2rZtu9GfAl6xYkXMnTs3+vTps8aHAzZnnWkMNvf5NWQtffXyy9dYtvtPf7pR29Z3O8hFVVVVrFixIvbYY48G/5DUhtQZLwEDAGRGAAQAyIwACACQGQEQACAzAiDNllkrGh/3BKBxEABpllJKjeKb1qnrs88+i4hY75dYA7D5+R5Amp3VU5l98MEH0aJFi43+yhLqWv01MGubJu6rpJTis88+i/fffz8qKyvX+O5CALYsAZBmp1AoRKtWrWLlypWxYMGCUnen2UgpRUopWrduHYUNmFf5iyorK6Nbt24N3DMANpQASLNUVlYW5eXl3nPWgFatWhVVVVXRp0+fjfqC7VatWhn5A2gkBECardUvBdMwVl/L8vLyBv/2egC2LG+OAgDIjAAIAJAZARAAIDMCIABAZgRAAIDMCIAAAJnxNTAAzcScceOiZW1ttKitjYiI3X/60xL3CGisjAACAGRGAAQAyIwACACQGQEQACAzAiAAQGYEQACAzAiAAACZEQABADIjAAIAZEYABADIjKnggIiIePXyy9dYZioxgObJCCAAQGYEQACAzAiAAACZEQABADIjAAIAZEYABADIjAAIAJAZARAAIDMCIABAZgRAAIDMCIAAAJkxFzBsYebcBZq6L9cxNazpMQIIAJAZARAAIDMCIABAZgRAAIDMCIAAAJkRAAEAMiMAAgBkRgAEAMiMAAgAkBkBEAAgM412Krgcp8vK8Zypv4b8+VjbvgCaMr9DN4wRQACAzAiAAACZEQABADIjAAIAZEYABADIjAAIAJAZARAAIDMCIABAZgRAAIDMCIAAAJkRAAEAMtNo5wLe0jb3HILmKAT4nHoIpWcEEAAgMwIgAEBmBEAAgMwIgAAAmREAAQAyIwACAGRGAAQAyIwACACQGQEQACAzAiAAQGaa3VRwphj63Nquw5fleF2A5uXLta651bWG/J3m9yNfZAQQACAzAiAAQGYEQACAzAiAAACZEQABADIjAAIAZEYABADIjAAIAJAZARAAIDMCIABAZgRAAIDMNLu5gBuSeROBpqy+Naw+c4fT8Fx3SskIIABAZgRAAIDMCIAAAJkRAAEAMiMAAgBkRgAEAMiMAAgAkBkBEAAgMwIgAEBmBEAAgMyYCi5j9Z2GyPR3a9cYpgpsDH0A6vK8bHiuacMzAggAkBkBEAAgMwIgAEBmBEAAgMwIgAAAmREAAQAyIwACAGRGAAQAyIwACACQGQEQACAzAiAAQGbMBcwW9eX5HDd2LseGnBdyc+8LaHzMLduwcrieDfX7q7EwAggAkBkBEAAgMwIgAEBmBEAAgMwIgAAAmREAAQAyIwACAGRGAAQAyIwACACQGQEQACAzpoKj0clhSqH6MK0cND4bW588n+vPtdoyjAACAGRGAAQAyIwACACQGQEQACAzAiAAQGYEQACAzAiAAACZEQABADIjAAIAZEYABADIjAAIAJAZcwE3QV+eJ7GxzpNrPsem74v3sKasLHYYObKEvSF39akpmzKXeFOprdAQjAACAGRGAAQAyIwACACQGQEQACAzAiAAQGYEQACAzAiAAACZEQABADIjAAIAZEYABADIjKngGjnTqX3Odai/TZkKC5oj9aM06nPd1abSMQIIAJAZARAAIDMCIABAZgRAAIDMCIAAAJkRAAEAMiMAAgBkRgAEAMiMAAgAkBkBEAAgM41iKrg548ZFy9raaFFbu952prhiU23KlFBNeTqpptx3GpafhYbXnK6p37MN78vXtKasLHYYObJEvfkbI4AAAJkRAAEAMiMAAgBkRgAEAMiMAAgAkBkBEAAgMwIgAEBmBEAAgMwIgAAAmREAAQAyIwACAGSmUcwFvCka4xyMW7pPjfEaAM1LjnWmKZ9zQ/a9uV+HXOc6NgIIAJAZARAAIDMCIABAZgRAAIDMCIAAAJkRAAEAMiMAAgBkRgAEAMiMAAgAkBkBEAAgM01+Krgt7cvTymzKFDJNeXqdL2tO5wI0HLWBnDSln3cjgAAAmREAAQAyIwACAGRGAAQAyIwACACQGQEQACAzAiAAQGYEQACAzAiAAACZEQABADIjAAIAZMZcwGyUxjjf4dr6tClzNW9JjfF6Ak1DU64fm9L3Up93qY+/qYwAAgBkRgAEAMiMAAgAkBkBEAAgMwIgAEBmBEAAgMwIgAAAmREAAQAyIwACAGRGAAQAyEy2U8E19SlcqB/3GZomz90tw3VeuxyuixFAAIDMCIAAAJkRAAEAMiMAAgBkRgAEAMiMAAgAkBkBEAAgMwIgAEBmBEAAgMwIgAAAmREAAQAyk+1cwNRfDnMiflmO5ww0DeoTDcEIIABAZgRAAIDMCIAAAJkRAAEAMiMAAgBkRgAEAMiMAAgAkBkBEAAgMwIgAEBmBEAAgMxkMRXc5pw2x5Q8AJtOLaVUcv3ZMwIIAJAZARAAIDMCIABAZgRAAIDMCIAAAJkRAAEAMiMAAgBkRgAEAMiMAAgAkBkBEAAgMwIgAEBmspgLmMYr1zkYAaCUjAACAGRGAAQAyIwACACQGQEQACAzAiAAQGYEQACAzAiAAACZEQABADIjAAIAZEYABADIjAAIAJAZARAAIDMCIABAZgRAAIDMCIAAAJkRAAEAMiMAAgBkRgAEAMiMAAgAkBkBEAAgMwIgAEBmWpa6A6vVFgoRZfIoNFa1hUKpu0A9qKXQuDWWWlryAFhWVhYtamujpqys0VwUYO3Ky8ujTLholNRSaDoaQy0teQBs3bp1bPvJJ5FK3RHgK+26667RunXrUneDtVBLoeloDLW05AEwIqJFbW2puwDUQ6kLFuunlkLT0BhqqddyAAAyIwACAGRGAAQAyIwACACQGQEQACAzAiAAQGYEQACAzAiAAACZEQABADIjAAIAZEYABADIjAAIAJAZARAAIDMCIABAZgRAAIDMCIAAAJkRAAEAMiMAAgBkRgAEAMiMAAgAkBkBEAAgMwIgAEBmBEAAgMwIgAAAmREAAQAyIwACAGRGAAQAyIwACACQGQEQACAzAiAAQGYEQACAzAiAAACZEQABADIjAAIAZEYABADIjAAIAJAZARAAIDMCIABAZgRAAIDMCIAAAJkRAAEAMiMAAgBkRgAEAMiMAAgAkBkBEAAgMwIgAEBmBEAAgMwIgAAAmREAAQAyIwACAGRGAAQAyIwACACQGQEQACAzAiAAQGYEQACAzAiAAACZEQABADIjAAIAZEYABADIjAAIAJAZARAAIDMCIABAZgRAAIDMCIAAAJkRAAEAMiMAAgBkRgAEAMiMAAgAkBkBEAAgMwIgAEBmBEAAgMwIgAAAmREAAQAyIwACAGRGAAQAyIwACACQGQEQACAzAiAAQGYEQACAzAiAAACZEQABADIjAAIAZEYABADIjAAIAJAZARAAIDMCIABAZgRAAIDMCIAAAJkRAAEAMiMAAgBkRgAEAMiMAAgAkBkBEAAgMwIgAEBmBEAAgMwIgAAAmREAAQAyIwACAGRGAAQAyEzL+jRKKUVExJIlSzZLJz5dtWqz7BdoWJurBnxx36vrTXOzuetohFoKTcXmqgMbUkfrFQCXLl0aERE9e/bchG4BTV7Hjpv9EEuXLo2OW+A4W5o6ChRt5hpXnzpaSPWIibW1tbFw4cLo0KFDFAqFButgxOdptWfPnrFgwYKoqKho0H1TOu5r87O572lKKZYuXRo9evSIsrLm9+6UzVlHIzznmiP3tHnanPd1Q+povUYAy8rKYvvtt2+Qzq1LRUWFH/BmyH1tfjbnPW2OI3+rbYk6GuE51xy5p83T5rqv9a2jze/PbAAA1ksABADITMkDYHl5eYwZMybKy8tL3RUakPva/LinjZv70/y4p81TY7mv9foQCAAAzUfJRwABANiyBEAAgMwIgAAAmREAAQAyU/IAeNNNN8UOO+wQbdq0icGDB8f//d//lbpLrMMll1wShUKhzr9dd921uH7FihUxcuTI6Ny5c2y11VZx7LHHxnvvvVdnH/Pnz4/DDz882rVrF126dIkLL7wwqqurt/SpZOupp56KI444Inr06BGFQiEmTpxYZ31KKUaPHh3du3ePtm3bxtChQ+PNN9+s0+ajjz6Kk046KSoqKqKysjJOP/30WLZsWZ02L7/8chxwwAHRpk2b6NmzZ/zyl7/c3KeWNXW06VBHm4fmUEtLGgAnTJgQ5513XowZMyZeeOGFGDBgQAwbNizef//9UnaL9dh9993j3XffLf57+umni+t++MMfxv333x+///3v48knn4yFCxfGd77zneL6mpqaOPzww6OqqiqeeeaZuP3222P8+PExevToUpxKlj799NMYMGBA3HTTTWtd/8tf/jL+9V//Nf793/89pk6dGu3bt49hw4bFihUrim1OOumkePXVV+PRRx+NBx54IJ566qkYMWJEcf2SJUvikEMOid69e8f06dPj6quvjksuuSRuueWWzX5+OVJHmx51tOlrFrU0ldC+++6bRo4cWXxcU1OTevToka644ooS9op1GTNmTBowYMBa1y1evDi1atUq/f73vy8umzVrVoqI9Oyzz6aUUnrooYdSWVlZWrRoUbHNuHHjUkVFRVq5cuVm7Ttrioh07733Fh/X1tambt26pauvvrq4bPHixam8vDzdeeedKaWUXnvttRQRadq0acU2kyZNSoVCIf3lL39JKaV08803p06dOtW5pz/+8Y/TLrvsspnPKE/qaNOijjY/TbWWlmwEsKqqKqZPnx5Dhw4tLisrK4uhQ4fGs88+W6pu8RXefPPN6NGjR/Tt2zdOOumkmD9/fkRETJ8+PVatWlXnfu66667Rq1ev4v189tlnY4899oiuXbsW2wwbNiyWLFkSr7766pY9EdYwd+7cWLRoUZ172LFjxxg8eHCde1hZWRl77713sc3QoUOjrKwspk6dWmzzd3/3d9G6detim2HDhsXs2bPj448/3kJnkwd1tGlSR5u3plJLSxYAP/jgg6ipqanzQxwR0bVr11i0aFGJesX6DB48OMaPHx+TJ0+OcePGxdy5c+OAAw6IpUuXxqJFi6J169ZRWVlZZ5sv3s9Fixat9X6vXkdprb4H63tOLlq0KLp06VJnfcuWLWPrrbd2n0tAHW161NHmr6nU0pabvAeyMXz48OL/99xzzxg8eHD07t077r777mjbtm0JewbQNKijNBYlGwHcZpttokWLFmt8uum9996Lbt26lahXbIjKysrYeeedY86cOdGtW7eoqqqKxYsX12nzxfvZrVu3td7v1esordX3YH3PyW7duq3x4YLq6ur46KOP3OcSUEebPnW0+WkqtbRkAbB169YxaNCg+NOf/lRcVltbG3/6059iyJAhpeoWG2DZsmXx1ltvRffu3WPQoEHRqlWrOvdz9uzZMX/+/OL9HDJkSMycObPOD/2jjz4aFRUVsdtuu23x/lNXnz59olu3bnXu4ZIlS2Lq1Kl17uHixYtj+vTpxTaPPfZY1NbWxuDBg4ttnnrqqVi1alWxzaOPPhq77LJLdOrUaQudTR7U0aZPHW1+mkwtbZCPkmyku+66K5WXl6fx48en1157LY0YMSJVVlbW+XQTjcf555+fnnjiiTR37tw0ZcqUNHTo0LTNNtuk999/P6WU0plnnpl69eqVHnvssfT888+nIUOGpCFDhhS3r66uTl/72tfSIYcckmbMmJEmT56ctt122/Qv//IvpTql7CxdujS9+OKL6cUXX0wRka699tr04osvpnnz5qWUUrryyitTZWVluu+++9LLL7+cjjrqqNSnT5+0fPny4j4OPfTQNHDgwDR16tT09NNPp379+qUTTzyxuH7x4sWpa9eu6eSTT06vvPJKuuuuu1K7du3Sr371qy1+vjlQR5sWdbR5aA61tKQBMKWUbrzxxtSrV6/UunXrtO+++6bnnnuu1F1iHU444YTUvXv31Lp167TddtulE044Ic2ZM6e4fvny5emss85KnTp1Su3atUvHHHNMevfdd+vs45133knDhw9Pbdu2Tdtss006//zz06pVq7b0qWTr8ccfTxGxxr9TTz01pfT51xdcfPHFqWvXrqm8vDx9+9vfTrNnz66zjw8//DCdeOKJaauttkoVFRXpu9/9blq6dGmdNi+99FLaf//9U3l5edpuu+3SlVdeuaVOMUvqaNOhjjYPzaGWFlJKadPHEQEAaCpKPhUcAABblgAIAJAZARAAIDMCIABAZgRAAIDMCIAAAJkRAAEAMiMAZuiSSy6Jvfbaq9Td2GA77LBDXH/99Zu0j/Hjx0dlZWXxcVO9FkBpNdXaoY6ymgDYBDzxxBNRKBTWmCB8Y11wwQV15ijM2ea6Fk899VQcccQR0aNHjygUCjFx4sQGPwZQf+ro5rO5rsUVV1wR++yzT3To0CG6dOkSRx99dMyePbvBj5MrATAjKaWorq6OrbbaKjp37rxJ+/ri5NQN0a5UGuJarM2nn34aAwYMiJtuuqnB9w2Ujjq6ps1VR5988skYOXJkPPfcc/Hoo4/GqlWr4pBDDolPP/20wY+VIwGwARx00EExatSoGDVqVHTs2DG22WabuPjii+OLs+x9/PHHccopp0SnTp2iXbt2MXz48HjzzTeL6+fNmxdHHHFEdOrUKdq3bx+77757PPTQQ/HOO+/EN7/5zYiI6NSpUxQKhTjttNMiIqK2tjauuOKK6NOnT7Rt2zYGDBgQ//3f/13c5+q/eCdNmhSDBg2K8vLyePrpp9cYrq+trY2f/exnsf3220d5eXnstddeMXny5OL6d955JwqFQkyYMCEOPPDAaNOmTdxxxx1rvRaFQiHGjRsXRx55ZLRv3z4uv/zyqKmpidNPP73Yz1122SVuuOGGOtuddtppcfTRR8fYsWOje/fu0blz5xg5cuR6C99//Md/RGVl5Xr/8hw/fnz06tUr2rVrF8ccc0x8+OGHddZ/+Vqs7scvfvGL6Nq1a1RWVsbPfvazqK6ujgsvvDC23nrr2H777eO2225b5zEjIoYPHx4///nP45hjjllvO+Bz6ujfqKOfmzx5cpx22mmx++67x4ABA2L8+PExf/78mD59+nq3o54abFbhjB144IFpq622Suecc056/fXX029/+9vUrl27dMsttxTbHHnkkal///7pqaeeSjNmzEjDhg1LO+20U6qqqkoppXT44Yengw8+OL388svprbfeSvfff3968sknU3V1dbrnnntSRKTZs2end999Ny1evDillNLPf/7ztOuuu6bJkyent956K912222pvLw8PfHEEymlv01Wveeee6ZHHnkkzZkzJ3344YdpzJgxacCAAcW+XXvttamioiLdeeed6fXXX08/+tGPUqtWrdIbb7yRUkpp7ty5KSLSDjvskO6555709ttvp4ULF671WkRE6tKlS/r1r3+d3nrrrTRv3rxUVVWVRo8enaZNm5befvvt4vWZMGFCcbtTTz01VVRUpDPPPDPNmjUr3X///Wtcw969e6frrrsupZTSVVddlTp37pymTp26zvvy3HPPpbKysnTVVVel2bNnpxtuuCFVVlamjh07Ftt8+VqceuqpqUOHDmnkyJHp9ddfT//5n/+ZIiINGzYsXX755emNN95Il112WWrVqlVasGDBen4q6l6Te++9t15tIVfq6N+oo2v35ptvpohIM2fOrPc2rJsA2AAOPPDA1L9//1RbW1tc9uMf/zj1798/pZTSG2+8kSIiTZkypbj+gw8+SG3btk133313SimlPfbYI11yySVr3f/qAvTxxx8Xl61YsSK1a9cuPfPMM3Xann766enEE0+ss93EiRPrtPnyk7VHjx7p8ssvr9Nmn332SWeddVZK6W+F6/rrr//KaxER6dxzz/3KdiNHjkzHHnts8fGpp56aevfunaqrq4vLjj/++HTCCScUH68uXD/60Y9S9+7d0yuvvLLeY5x44onpsMMOq7PshBNO+MrC1bt371RTU1Nctssuu6QDDjig+Li6ujq1b98+3XnnnV95nikJgFAf6ujfqKNrqqmpSYcffnjab7/96tWer9ZyCw42Nmtf//rXo1AoFB8PGTIkrrnmmqipqYlZs2ZFy5YtY/DgwcX1nTt3jl122SVmzZoVERFnn312/OAHP4hHHnkkhg4dGscee2zsueee6zzenDlz4rPPPouDDz64zvKqqqoYOHBgnWV77733OvezZMmSWLhwYey33351lu+3337x0ksv1Xs/X9Xupptuil//+tcxf/78WL58eVRVVa3xqbHdd989WrRoUXzcvXv3mDlzZp0211xzTXz66afx/PPPR9++fdfbj1mzZq3xEuyQIUPqvCyzNrvvvnuUlf3t3RFdu3aNr33ta8XHLVq0iM6dO8f777+/3v0AG0YdXX+7nOvoyJEj45VXXomnn366Xu35at4D2Eh873vfi7fffjtOPvnkmDlzZuy9995x4403rrP9smXLIiLiwQcfjBkzZhT/vfbaa3XevxIR0b59+wbpY3338+V2d911V1xwwQVx+umnxyOPPBIzZsyI7373u1FVVVWnXatWreo8LhQKUVtbW2fZAQccEDU1NXH33XdvxBnUz9r6UZ++AaWljjbPOjpq1Kh44IEH4vHHH4/tt9++QfuZMwGwgUydOrXO4+eeey769esXLVq0iP79+0d1dXWdNh9++GHMnj07dtttt+Kynj17xplnnhl/+MMf4vzzz49bb701IiJat24dERE1NTXFtrvttluUl5fH/PnzY6eddqrzr2fPnvXud0VFRfTo0SOmTJlSZ/mUKVPq9G1TTJkyJb7xjW/EWWedFQMHDoyddtop3nrrrY3a17777huTJk2KX/ziFzF27Nj1tu3fv/9a7wvQOKmj65ZjHU0pxahRo+Lee++Nxx57LPr06bNFjpsLLwE3kPnz58d5550X3//+9+OFF16IG2+8Ma655pqIiOjXr18cddRRccYZZ8SvfvWr6NChQ/zkJz+J7bbbLo466qiIiDj33HNj+PDhsfPOO8fHH38cjz/+ePTv3z8iInr37h2FQiEeeOCBOOyww6Jt27bRoUOHuOCCC+KHP/xh1NbWxv777x+ffPJJTJkyJSoqKuLUU0+td98vvPDCGDNmTOy4446x1157xW233RYzZsxY5yfUNlS/fv3iv/7rv+Lhhx+OPn36xG9+85uYNm3aRj+Zv/GNb8RDDz0Uw4cPj5YtW8a555671nZnn3127LfffjF27Ng46qij4uGHH/7Kly0ayrJly2LOnDnFx3Pnzo0ZM2bE1ltvHb169doifYCmRh1dtxzr6MiRI+N3v/td3HfffdGhQ4dYtGhRRER07Ngx2rZtu0X60JwZAWwgp5xySixfvjz23XffGDlyZJxzzjkxYsSI4vrbbrstBg0aFH//938fQ4YMiZRSPPTQQ8Uh8Zqamhg5cmT0798/Dj300Nh5553j5ptvjoiI7bbbLi699NL4yU9+El27do1Ro0ZFRMRll10WF198cVxxxRXF7R588MENLghnn312nHfeeXH++efHHnvsEZMnT44//vGP0a9fvwa5Nt///vfjO9/5TpxwwgkxePDg+PDDD+Oss87apH3uv//+8eCDD8ZFF120zpd4vv71r8ett94aN9xwQwwYMCAeeeSRuOiiizbpuPX1/PPPx8CBA4vvIzrvvPNi4MCBMXr06C1yfGiK1NF1y7GOjhs3Lj755JM46KCDonv37sV/EyZM2CLHb+4KKX3hS5bYKAcddFDstddemzy9DkCu1FHYsowAAgBkRgAEAMiMl4ABADJjBBAAIDMCIABAZgRAAIDMCIAAAJkRAAEAMiMAAgBkRgAEAMiMAAgAkBkBEAAgM/8PpdmXczJJxSQAAAAASUVORK5CYII=", + "image/png": "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QACAzAiAAACZEQABADIjAAIAZEYABADIjAAIAJAZARAAIDMCIABAZgRAAIDMCIAAAJkRAAEAMiMAAgBkRgAEAMiMAAgAkBkBEAAgMwIgAEBmBEAAgMwIgAAAmREAAQAyIwACAGRGAAQAyIwACACQGQEQACAzAiAAQGYEQACAzAiAAACZEQABADIjAAIAZEYABADIjAAIAJAZARAAIDMCIABAZgRAAIDMCIAAAJkRAAEAMiMAAgBkRgAEAMiMAAgAkBkBEAAgMwIgAEBmBEAAgMwIgAAAmREAAQAyIwACAGRGAAQAyIwACACQGQEQACAzAiAAQGYEQACAzAiAAACZEQABADIjAAIAZEYABADIjAAIAJAZARAAIDMCIABAZgRAAIDMCIAAAJkRAAEAMiMAAgBkRgAEAMiMAAgAkBkBEAAgMwIgAEBmBEAAgMwIgAAAmREAAQAyIwACAGRGAAQAyIwACACQGQEQACAzAiAAQGYEQACAzAiAAACZEQABADIjAAIAZEYABADIjAAIAJAZARAAIDMCIABAZgRAAIDMCIAAAJlpXZ9GKaWIiFi2bFmjFPHhmjWNsl6gYTVWH/DJdX/c37Q0jd2PRuhLoTloKv1ovQLg8uXLIyKid+/em1AW0Ox16dLoX7F8+fLoshm+Z3PTjwIR0WT60UKqR0ysra2NRYsWRefOnaNQKDRYgRH/TKu9e/eOt956KyoqKhp03ZSO49ryNPYxTSnF8uXLo1evXlFW1vKuTmnMfjTC71xL5Ji2TI15XD9PP1qvEcCysrLYdtttG6S49amoqPAD3gI5ri1PYx7Tljjy97HN0Y9G+J1riRzTlqmxjmt9+9GW92c2AAAbJAACAGSm5AGwvLw8LrjggigvLy91KTQgx7XlcUybNsen5XFMW6amclzrdRMIAAAtR8lHAAEA2LwEQACAzAiAAACZEQABADJT8gB4zTXXxHbbbRft2rWLoUOHxp///OdSl8R6XHjhhVEoFOr822WXXYrvr1q1KsaOHRvdunWLTp06xTHHHBN///vf66xj4cKFceihh0aHDh1i6623jrPPPjuqq6s396Zk64knnojDDz88evXqFYVCIe65554676eU4vzzz4+ePXtG+/btY8SIEfHaa6/VafPee+/FcccdFxUVFVFZWRknnXRSrFixok6bF154Ifbbb79o165d9O7dOy699NLG3rSs6UebD/1oy9AS+tKSBsDbbrstzjjjjLjgggviL3/5SwwePDhGjhwZS5YsKWVZbMDAgQPj7bffLv6bNm1a8b3vfe97ce+998Ydd9wRjz/+eCxatCiOPvro4vs1NTVx6KGHRlVVVTz55JPxm9/8JiZNmhTnn39+KTYlSx9++GEMHjw4rrnmmnW+f+mll8ZVV10V119/fcyYMSM6duwYI0eOjFWrVhXbHHfccfHSSy/Fww8/HPfdd1888cQTcfLJJxffX7ZsWRx00EHRt2/fmDlzZlx22WVx4YUXxi9/+ctG374c6UebH/1o89ci+tJUQnvvvXcaO3Zs8XVNTU3q1atXmjBhQgmrYn0uuOCCNHjw4HW+t3Tp0tSmTZt0xx13FJe98sorKSLSU089lVJKafLkyamsrCwtXry42Oa6665LFRUVafXq1Y1aO2uLiHT33XcXX9fW1qYePXqkyy67rLhs6dKlqby8PN1yyy0ppZRefvnlFBHpmWeeKbZ54IEHUqFQSH/7299SSilde+21qWvXrnWO6fe///208847N/IW5Uk/2rzoR1ue5tqXlmwEsKqqKmbOnBkjRowoLisrK4sRI0bEU089Vaqy+AyvvfZa9OrVK7bffvs47rjjYuHChRERMXPmzFizZk2d47nLLrtEnz59isfzqaeeikGDBkX37t2LbUaOHBnLli2Ll156afNuCGtZsGBBLF68uM4x7NKlSwwdOrTOMaysrIw999yz2GbEiBFRVlYWM2bMKLbZf//9o23btsU2I0eOjLlz58b777+/mbYmD/rR5kk/2rI1l760ZAHwnXfeiZqamjo/xBER3bt3j8WLF5eoKjZk6NChMWnSpJgyZUpcd911sWDBgthvv/1i+fLlsXjx4mjbtm1UVlbW+cwnj+fixYvXebw/fo/S+vgYbOh3cvHixbH11lvXeb9169axxRZbOM4loB9tfvSjLV9z6Utbb/IayMYhhxxS/O/ddtsthg4dGn379o3bb7892rdvX8LKAJoH/ShNRclGALfccsto1arVWnc3/f3vf48ePXqUqCo+j8rKythpp51i3rx50aNHj6iqqoqlS5fWafPJ49mjR491Hu+P36O0Pj4GG/qd7NGjx1o3F1RXV8d7773nOJeAfrT504+2PM2lLy1ZAGzbtm3sscce8ac//am4rLa2Nv70pz/FsGHDSlUWn8OKFSti/vz50bNnz9hjjz2iTZs2dY7n3LlzY+HChcXjOWzYsJg9e3adH/qHH344KioqYtddd93s9VNXv379okePHnWO4bJly2LGjBl1juHSpUtj5syZxTZTp06N2traGDp0aLHNE088EWvWrCm2efjhh2PnnXeOrl27bqatyYN+tPnTj7Y8zaYvbZBbSTbSrbfemsrLy9OkSZPSyy+/nE4++eRUWVlZ5+4mmo4zzzwzPfbYY2nBggVp+vTpacSIEWnLLbdMS5YsSSmldMopp6Q+ffqkqVOnpmeffTYNGzYsDRs2rPj56urq9IUvfCEddNBBadasWWnKlClpq622Sj/84Q9LtUnZWb58eXruuefSc889lyIiXXHFFem5555Lb775ZkoppYsvvjhVVlamP/zhD+mFF15IRxxxROrXr1/66KOPius4+OCD05AhQ9KMGTPStGnTUv/+/dOxxx5bfH/p0qWpe/fu6Vvf+lZ68cUX06233po6dOiQbrjhhs2+vTnQjzYv+tGWoSX0pSUNgCmldPXVV6c+ffqktm3bpr333js9/fTTpS6J9Rg1alTq2bNnatu2bdpmm23SqFGj0rx584rvf/TRR2nMmDGpa9euqUOHDumoo45Kb7/9dp11vPHGG+mQQw5J7du3T1tuuWU688wz05o1azb3pmTr0UcfTRGx1r8TTjghpfTPxxecd955qXv37qm8vDx99atfTXPnzq2zjnfffTcde+yxqVOnTqmioiKdeOKJafny5XXaPP/882nfffdN5eXlaZtttkkXX3zx5trELOlHmw/9aMvQEvrSQkopbfo4IgAAzUXJp4IDAGDzEgABADIjAAIAZEYABADIjAAIAJAZARAAIDMCIABAZgTADF144YWx++67l7qMz2277baLX/ziF5u0jkmTJkVlZWXxdXPdF0BpNde+Qz/KxwTAZuCxxx6LQqGw1gThG+uss86qM0dhzhprXzzxxBNx+OGHR69evaJQKMQ999zT4N8B1J9+tPE01r6YMGFC7LXXXtG5c+fYeuut48gjj4y5c+c2+PfkSgDMSEopqquro1OnTtGtW7dNWtcnJ6duiHal0hD7Yl0+/PDDGDx4cFxzzTUNvm6gdPSja2usfvTxxx+PsWPHxtNPPx0PP/xwrFmzJg466KD48MMPG/y7ciQANoDhw4fHuHHjYty4cdGlS5fYcsst47zzzotPzrL3/vvvx/HHHx9du3aNDh06xCGHHBKvvfZa8f0333wzDj/88OjatWt07NgxBg4cGJMnT4433ngjvvKVr0RERNeuXaNQKMTo0aMjIqK2tjYmTJgQ/fr1i/bt28fgwYPjzjvvLK7z4794H3jggdhjjz2ivLw8pk2bttZwfW1tbfzkJz+JbbfdNsrLy2P33XePKVOmFN9/4403olAoxG233RYHHHBAtGvXLn7729+uc18UCoW47rrr4utf/3p07Ngxxo8fHzU1NXHSSScV69x5553jyiuvrPO50aNHx5FHHhkTJ06Mnj17Rrdu3WLs2LEb7Ph+/etfR2Vl5Qb/8pw0aVL06dMnOnToEEcddVS8++67dd7/9L74uI6f/exn0b1796isrIyf/OQnUV1dHWeffXZsscUWse2228ZNN9203u+MiDjkkEPioosuiqOOOmqD7YB/0o/+i370n6ZMmRKjR4+OgQMHxuDBg2PSpEmxcOHCmDlz5gY/Rz012KzCGTvggANSp06d0ne/+900Z86c9L//+7+pQ4cO6Ze//GWxzde//vU0YMCA9MQTT6RZs2alkSNHph133DFVVVWllFI69NBD04EHHpheeOGFNH/+/HTvvfemxx9/PFVXV6ff//73KSLS3Llz09tvv52WLl2aUkrpoosuSrvsskuaMmVKmj9/frrppptSeXl5euyxx1JK/5qserfddksPPfRQmjdvXnr33XfTBRdckAYPHlys7YorrkgVFRXplltuSXPmzEnnnHNOatOmTXr11VdTSiktWLAgRUTabrvt0u9///v0+uuvp0WLFq1zX0RE2nrrrdONN96Y5s+fn958881UVVWVzj///PTMM8+k119/vbh/brvttuLnTjjhhFRRUZFOOeWU9Morr6R77713rX3Yt2/f9POf/zyllNIll1ySunXrlmbMmLHe4/L000+nsrKydMkll6S5c+emK6+8MlVWVqYuXboU23x6X5xwwgmpc+fOaezYsWnOnDnpv//7v1NEpJEjR6bx48enV199Nf30pz9Nbdq0SW+99dYGfirq7pO77767Xm0hV/rRf9GPrttrr72WIiLNnj273p9h/QTABnDAAQekAQMGpNra2uKy73//+2nAgAEppZReffXVFBFp+vTpxfffeeed1L59+3T77benlFIaNGhQuvDCC9e5/o87oPfff7+4bNWqValDhw7pySefrNP2pJNOSscee2ydz91zzz112nz6l7VXr15p/PjxddrstddeacyYMSmlf3Vcv/jFLz5zX0REOv300z+z3dixY9MxxxxTfH3CCSekvn37purq6uKyb3zjG2nUqFHF1x93XOecc07q2bNnevHFFzf4Hccee2z62te+VmfZqFGjPrPj6tu3b6qpqSku23nnndN+++1XfF1dXZ06duyYbrnlls/czpQEQKgP/ei/6EfXVlNTkw499NC0zz771Ks9n631ZhxsbNG+9KUvRaFQKL4eNmxYXH755VFTUxOvvPJKtG7dOoYOHVp8v1u3brHzzjvHK6+8EhERp512Wpx66qnx0EMPxYgRI+KYY46J3Xbbbb3fN2/evFi5cmUceOCBdZZXVVXFkCFD6izbc88917ueZcuWxaJFi2Kfffaps3yfffaJ559/vt7r+ax211xzTdx4442xcOHC+Oijj6Kqqmqtu8YGDhwYrVq1Kr7u2bNnzJ49u06byy+/PD788MN49tlnY/vtt99gHa+88spap2CHDRtW57TMugwcODDKyv51dUT37t3jC1/4QvF1q1atolu3brFkyZINrgf4fPSjG26Xcz86duzYePHFF2PatGn1as9ncw1gE/Htb387Xn/99fjWt74Vs2fPjj333DOuvvrq9bZfsWJFRETcf//9MWvWrOK/l19+uc71KxERHTt2bJAa67ueT7e79dZb46yzzoqTTjopHnrooZg1a1aceOKJUVVVVaddmzZt6rwuFApRW1tbZ9l+++0XNTU1cfvtt2/EFtTPuuqoT21AaelHW2Y/Om7cuLjvvvvi0UcfjW233bZB68yZANhAZsyYUef1008/Hf37949WrVrFgAEDorq6uk6bd999N+bOnRu77rprcVnv3r3jlFNOibvuuivOPPPM+NWvfhUREW3bto2IiJqammLbXXfdNcrLy2PhwoWx44471vnXu3fvetddUVERvXr1iunTp9dZPn369Dq1bYrp06fHl7/85RgzZkwMGTIkdtxxx5g/f/5GrWvvvfeOBx54IH72s5/FxIkTN9h2wIAB6zwuQNOkH12/HPvRlFKMGzcu7r777pg6dWr069dvs3xvLpwCbiALFy6MM844I77zne/EX/7yl7j66qvj8ssvj4iI/v37xxFHHBH/9V//FTfccEN07tw5fvCDH8Q222wTRxxxREREnH766XHIIYfETjvtFO+//348+uijMWDAgIiI6Nu3bxQKhbjvvvvia1/7WrRv3z46d+4cZ511Vnzve9+L2tra2HfffeODDz6I6dOnR0VFRZxwwgn1rv3ss8+OCy64IHbYYYfYfffd46abbopZs2at9w61z6t///7xP//zP/Hggw9Gv3794uabb45nnnlmo3+Zv/zlL8fkyZPjkEMOidatW8fpp5++znannXZa7LPPPjFx4sQ44ogj4sEHH/zM0xYNZcWKFTFv3rzi6wULFsSsWbNiiy22iD59+myWGqC50Y+uX4796NixY+N3v/td/OEPf4jOnTvH4sWLIyKiS5cu0b59+81SQ0tmBLCBHH/88fHRRx/F3nvvHWPHjo3vfve7cfLJJxffv+mmm2KPPfaIww47LIYNGxYppZg8eXJxSLympibGjh0bAwYMiIMPPjh22mmnuPbaayMiYptttokf//jH8YMf/CC6d+8e48aNi4iIn/70p3HeeefFhAkTip+7//77P3eHcNppp8UZZ5wRZ555ZgwaNCimTJkSf/zjH6N///4Nsm++853vxNFHHx2jRo2KoUOHxrvvvhtjxozZpHXuu+++cf/998ePfvSj9Z7i+dKXvhS/+tWv4sorr4zBgwfHQw89FD/60Y826Xvr69lnn40hQ4YUryM644wzYsiQIXH++edvlu+H5kg/un459qPXXXddfPDBBzF8+PDo2bNn8d9tt922Wb6/pSuk9ImHLLFRhg8fHrvvvvsmT68DkCv9KGxeRgABADIjAAIAZMYpYACAzBgBBADIjAAIAJAZARAAIDMCIABAZgRAAIDMCIAAAJkRAAEAMiMAAgBkRgAEAMjM/wGkaktVpzN7KgAAAABJRU5ErkJggg==", "text/plain": [ "
" ] @@ -499,7 +943,6 @@ } ], "source": [ - "\n", "f, ax = sbc_rank_plot(\n", " ranks=ranks,\n", " num_posterior_samples=num_posterior_samples,\n", @@ -510,23 +953,23 @@ }, { "cell_type": "markdown", + "id": "53592f75-a204-4b5f-abc1-8bbdc8538297", "metadata": {}, "source": [ - "The two plots visualize the distribution of `ranks` (here depicted in red) in each dimension. Highlighted in grey you see the 99% confidence interval of a uniform distribution given the number of samples provided. In plain english: for a uniform distribution, we would expect 1 out of 100 (red) bars to lie outside the grey area.\n", + "The two plots visualize the distribution of `ranks` (here depicted in red) in each dimension. Highlighted in grey, you see the 99% confidence interval of a uniform distribution given the number of samples provided. In plain english: for a uniform distribution, we would expect 1 out of 100 (red) bars to lie outside the grey area.\n", "\n", - "We also observe, that the entries fluctuate to some degree. This can be considered a hint that `sbc` should be conducted with a lot more samples than 1000. A good rule of thumb is that given the number of bins `B` and the number of SBC samples `N` (chosed to be `1_000` here) should amount to `N / B ~ 20`.\n" + "We also observe, that the entries fluctuate to some degree. This can be considered a hint that `sbc` should be conducted with a lot more samples than `1000`. A good rule of thumb is that given the number of bins `B` and the number of SBC samples `N` (chosed to be `1_000` here) should amount to `N / B ~ 20`.\n" ] }, { "cell_type": "code", - "execution_count": 16, - "metadata": { - "tags": [] - }, + "execution_count": null, + "id": "d76b5936-286f-468e-82ad-0a65194f9a43", + "metadata": {}, "outputs": [ { "data": { - "image/png": "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76abbtrja9aMGTP6P5/JZHDJJZegrq4OkUgEp512Gnbs2OH6OSUZTH/729/iyiuvxI033ohly5Zh9uzZOPHEE9HR0THcQyMiKuill17CJZdcgn/84x94/vnnYZom/uVf/gW9vb0D2l1wwQXYtm1b//9uu+22YRoxEVFhBx100ICvWS+//HL/56644go8/fTTeOKJJ/DSSy9h69at+NznPuf6GSVZLmrevHk4/PDD8R//8R8AAMdx0NLSgssuuwzXXXfdMI+OiMidnTt3orGxES+99BKOPfZYALkZ0zlz5uDuu+8e3sEREUm46aab8NRTT2H58uV7fC4Wi6GhoQG//vWv8fnPfx4A8MEHH+CAAw7Aq6++ik984hPSzym5GVPDMPDmm2/ihBNO6H9NVVWccMIJePXVV4dxZEREgxOLxQAAtbW1A17/1a9+hfr6ehx88MH41re+hVQqNRzDIyKSsnr1ajQ3N2PSpEk488wz0d7eDgB48803YZrmgOw2Y8YMtLa2us5uelFHXAS7du2CbdsYM2bMgNfHjBmDDz74YJhGRUQ0OI7jYNGiRTjqqKNw8MEH97/+5S9/GW1tbWhubsY777yDa6+9FitXrsSTTz45jKMlItq7efPm4eGHH8b06dOxbds23HzzzTjmmGOwYsUKbN++HX6/H9XV1QP6jBkzBtu3b3f1nJILpkREI8kll1yCFStWDNiLBQAXXnhh/89nzpyJpqYmHH/88Vi7di0mT5481MMkIvpYJ598cv/PZ82ahXnz5qGtrQ2PP/44QqFQ0Z5Tckv59fX10DRtj5NcO3bswNixY4dpVERE7l166aX44x//iCVLlmD8+PEf23bevHkAgDVr1gzF0IiI9kt1dTWmTZuGNWvWYOzYsTAMAz09PQPaDCa7lVww9fv9mDt3Ll544YX+1xzHwQsvvID58+cP48iIiOQIIXDppZfif/7nf/Diiy9i4sSJBfvkDxQ0NTV5PDoiov2XTCaxdu1aNDU1Ye7cufD5fAOy28qVK9He3u46u5XkUv6VV16Jr371qzjssMNwxBFH4O6770Zvby/OPffc4R4aEVFBl1xyCX7961/j97//PSorK/v3WFVVVSEUCmHt2rX49a9/jU9/+tOoq6vDO++8gyuuuALHHnssZs2aNcyjJyLa09VXX41TTjkFbW1t2Lp1K2688UZomoYzzjgDVVVVOO+883DllVeitrYW0WgUl112GebPn+/qRD5QosH09NNPx86dO3HDDTdg+/btmDNnDv785z/vcSCKiKgU3XvvvQByJaF299BDD+Gcc86B3+/HX//61/5/dLe0tOC0007Dd77znWEYLRFRYZs3b8YZZ5yBzs5ONDQ04Oijj8Y//vEPNDQ0AADuuusuqKqK0047DdlsFieeeCJ+9rOfuX5OSdYxJSIiIqLRp+T2mBIRERHR6MRgSkREREQlgcGUiIiIiEoCgykRERERlQQGUyIiIiIqCQymRERERFQSGEyJiIiIqCQwmBIReeimm27CnDlzhnsYrk2YMAF33333cA+DiEYZBlMiot387W9/g6Io6OnpKcr7XX311QPujyYion1jMCUi8oAQApZlIRKJoK6ubr/eyzTNorYjIipVDKZEVFYWLlyISy+9FJdeeimqqqpQX1+P7373u9j9duXu7m6cffbZqKmpQUVFBU4++WSsXr26//MbN27EKaecgpqaGoTDYRx00EF45plnsGHDBhx33HEAgJqaGiiKgnPOOQcA4DgObr31VkycOBGhUAizZ8/Gf//3f/e/Z36m9dlnn8XcuXMRCATw8ssv77GU7zgOvve972H8+PEIBAKYM2cO/vznP/d/fsOGDVAUBb/97W+xYMECBINB/OpXv9rr74WiKLj33ntx6qmnIhwO45ZbboFt2zjvvPP6xzl9+nT8+Mc/HtDvnHPOwWc/+1nccccdaGpqQl1dHS655JKPDba//OUvUV1dzdlfIvKUPtwDICJy65FHHsF5552H1157DW+88QYuvPBCtLa24oILLgCQC16rV6/GH/7wB0SjUVx77bX49Kc/jffffx8+nw+XXHIJDMPA//7v/yIcDuP9999HJBJBS0sLfve73+G0007DypUrEY1GEQqFAAC33norHnvsMdx3332YOnUq/vd//xdf+cpX0NDQgAULFvSP7brrrsMdd9yBSZMmoaamBn/7298GjP3HP/4xFi9ejJ///Oc45JBD8OCDD+LUU0/Fe++9h6lTpw54n8WLF+OQQw5BMBjc5+/FTTfdhB/96Ee4++67oes6HMfB+PHj8cQTT6Curg5///vfceGFF6KpqQlf/OIX+/stWbIETU1NWLJkCdasWYPTTz8dc+bM6f893N1tt92G2267Dc899xyOOOKIQf03IyKSIoiIysiCBQvEAQccIBzH6X/t2muvFQcccIAQQohVq1YJAOKVV17p//yuXbtEKBQSjz/+uBBCiJkzZ4qbbrppr++/ZMkSAUB0d3f3v5bJZERFRYX4+9//PqDteeedJ84444wB/Z566qkBbW688UYxe/bs/o+bm5vFLbfcMqDN4YcfLi6++GIhhBDr168XAMTdd99d8PcCgFi0aFHBdpdccok47bTT+j/+6le/Ktra2oRlWf2vfeELXxCnn356/8dtbW3irrvuEv/+7/8umpqaxIoVKwo+h4hof3HGlIjKzic+8QkoitL/8fz587F48WLYto1//vOf0HUd8+bN6/98XV0dpk+fjn/+858AgG9+85v4xje+geeeew4nnHACTjvtNMyaNWufz1uzZg1SqRQ+9alPDXjdMAwccsghA1477LDD9vk+8XgcW7duxVFHHTXg9aOOOgpvv/229PsUavfTn/4UDz74INrb25FOp2EYxh6VAQ466CBomtb/cVNTE959990BbRYvXoze3l688cYbmDRpktR4iIj2B/eYEtGoc/7552PdunU466yz8O677+Kwww7DPffcs8/2yWQSAPCnP/0Jy5cv7//f+++/P2CfKQCEw+GijFH2fT7a7je/+Q2uvvpqnHfeeXjuueewfPlynHvuuTAMY0A7n8834GNFUeA4zoDXjjnmGNi2jccff3wQvwIiIvcYTImo7CxdunTAx//4xz8wdepUaJqGAw44AJZlDWjT2dmJlStX4sADD+x/raWlBRdddBGefPJJXHXVVfjFL34BAPD7/QAA27b72x544IEIBAJob2/HlClTBvyvpaVFetzRaBTNzc145ZVXBrz+yiuvDBjb/njllVdw5JFH4uKLL8YhhxyCKVOmYO3atYN6ryOOOALPPvssfvjDH+KOO+4oyviIiD4Ol/KJqOy0t7fjyiuvxNe//nUsW7YM99xzDxYvXgwAmDp1Kv71X/8VF1xwAX7+85+jsrIS1113HcaNG4d//dd/BQAsWrQIJ598MqZNm4bu7m4sWbIEBxxwAACgra0NiqLgj3/8Iz796U8jFAqhsrISV199Na644go4joOjjz4asVgMr7zyCqLRKL761a9Kj/2aa67BjTfeiMmTJ2POnDl46KGHsHz58n2evHdr6tSp+M///E/85S9/wcSJE/Hoo4/i9ddfx8SJEwf1fkceeSSeeeYZnHzyydB1HYsWLSrKOImI9obBlIjKztlnn410Oo0jjjgCmqbh8ssvx4UXXtj/+YceegiXX345PvOZz8AwDBx77LF45pln+pevbdvGJZdcgs2bNyMajeKkk07CXXfdBQAYN24cbr75Zlx33XU499xzcfbZZ+Phhx/G97//fTQ0NODWW2/FunXrUF1djUMPPRTf/va3XY39m9/8JmKxGK666ip0dHTgwAMPxB/+8IcBJ/L3x9e//nW89dZbOP3006EoCs444wxcfPHFePbZZwf9nkcffTT+9Kc/4dOf/jQ0TcNll11WlLESEX2UIsRuxf+IiErcwoULMWfOHF6XSUQ0AnGPKRERERGVBAZTIiIiIioJXMonIiIiopLAGVMiIiIiKgkMpkRERERUEhhMiYiIiKgkMJgSERERUUlgMCUiIiKiksBgSkREREQlgcGUiIiIiEoCgykRERERlQQGUyIiIiIqCf8/asVaIynIoJ4AAAAASUVORK5CYII=", + "image/png": "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xavrUF1X52V5REQlyfWu/M985jNYunQpJk+e7EE5RES7pvps6VCxbBvXZ+9GtZ7EmDfVT1myASAQ8awuIqJS5jqYnnjiibj22mvx7rvvYt68eSgrK9vh8yeffPKgFUdEVCCE8PT9uzM2nvxXN1KW2nVENomFSELTNJjlk6C0+wlAj16NaDVPcSIi2hXXwfSiiy4CANx11107fY678onIK4X2T15Z1prBstaM8vgqmQaQ3zG/5YgfKM/r6OjAvgGeY09EtCuug6nXqxZERLvi9a38XN9B9jPqwjh8UlmR0UAsZ6N2pYFQOIZWl9fy07OyRER+MqCTn4iI9lZvby8yGfUVykQi4WE1gN13s6exIohDJhQPpsHeAMrW6rADQViWpXSNQrhmMCUi2jWlYPrjH/8YF154ISKRCH784x/vcexll102KIUR0cjW1taG1tZWhEIhpfFSSuWxA9Hf/slQC42asCClhOnAVcCOxWLsS0pEtBtKwfTuu+/G6aefjkgkgrvvvnu34zRNYzAlIiVCCESjUVRWVg53KQA+OsnJUOxLqjkmpAS0QAQzZ85UDs2apnkasImISplSMF2/fv0u/0xENFBCCF/d0q5Mt+CW7E8xfo2F6k3FVzQ1KSABSCOIaDSKYJAbmoiI9tZePWPK56WIaKD8FkzHpd9DlexBUBjQHbUjRiWATEUz4j76OoiIStmAgumDDz6Iu+++G2vWrAEATJ8+HQsXLsT5558/qMUR0cjldTDN2QIbu/O325XG53IAgA+rD0XlwacpzcnmcrBC1RjLYEpENChcB9MbbrgBd911Fy699FIcfvjhAIBXX30VV1xxBVpaWvC9731v0IskopHH62D6wBvbsWpbTnn8l6z8BiY7GIcTq1eaYyENTdOg62orrEREtGeug+m9996Ln/3sZzjttI9WFE4++WTMnj0bl156KYMpERVVaJbvZTDdlrIBALWxAEIKO+1rkw7C0NBQWQZT8RpSSui67qtHEoiISpnrYGpZFg4++OCdXp83bx5s2x6UooiotNi2jY0bN8KyLKWQJoSAbdsIBLxrpdzXLx/nH1KLiZXFd8HXroigbJOBNinQ09OjdI10Oo3q6uq9KZOIiD7G9W+FM844A/fee+9OR5I+8MADOP300wetMCIqHaZpoqOjA47juAqb4XDYs5psIWFIG0E4gCj+H82a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nSci8qtEIoFJkyahq6sLVVVVe/1+vlkxDYfDCIfDO71eWVnJH+BENKLE43H+XCOiEUXX9cF5n0F5FyIiIiKivcRgSkRERES+4NtgGg6HceONN+7y9j4RUSnizzUiGmkG++eabzY/EREREdHo5tsVUyIiIiIaXRhMiYiIiMgXGEyJiIiIyBcYTImIiIjIF3wbTH/yk59g8uTJiEQimD9/Pl5//fXhLomISMmtt96KQw45BBUVFWhoaMCXvvQlrFq1aocxRx99NDRN2+Gfb37zm8NUMRHRnt100007/czaZ599+j+fzWZx8cUXo7a2FuXl5TjllFOwdetW19fxZTD9zW9+gyuvvBI33ngjli1bhjlz5uD4449He3v7cJdGRFTU0qVLcfHFF+Mf//gHnn/+eViWhc997nNIpVI7jLvggguwZcuW/n9uu+22YaqYiKi4/fbbb4efWS+99FL/56644gr88Y9/xBNPPIGlS5eitbUV//Zv/+b6Gr5sFzV//nwccsgh+O///m8AgBACEydOxKWXXoprr712mKsjInJn27ZtaGhowNKlS3HUUUcByK+Yzp07F4sXLx7e4oiIFNx00034/e9/j+XLl+/0uUQigfr6evz617/GV77yFQDA+++/j3333RevvvoqDjvsMOXr+G7F1DRNvPnmmzjuuOP6X9N1HccddxxeffXVYayMiGhgEokEAKCmpmaH13/1q1+hrq4O+++/P6677jqk0+nhKI+ISMmaNWswbtw4TJkyBaeffjpaWloAAG+++SYsy9ohu+2zzz6YNGmS6+wWGNSKB8H27dvhOA7GjBmzw+tjxozB+++/P0xVERENjBACCxcuxBFHHIH999+///VvfOMbaGpqwrhx4/DOO+/gmmuuwapVq/Dkk08OY7VERLs2f/58PPLII5g5cya2bNmCm2++GZ/+9KexYsUKtLW1IRQKoaqqaoc5Y8aMQVtbm6vr+C6YEhGNJBdffDFWrFixw7NYAHDhhRf2//mAAw5AY2Mjjj32WKxbtw5Tp04d6jKJiPboxBNP7P/z7NmzMX/+fDQ1NeHxxx9HNBodtOv47lZ+XV0dDMPYaSfX1q1bMXbs2GGqiojIvUsuuQR/+tOfsGTJEkyYMGGPY+fPnw8AWLt27VCURkS0V6qqqjBjxgysXbsWY8eOhWma6O7u3mHMQLKb74JpKBTCvHnz8MILL/S/JoTACy+8gMMPP3wYKyMiUiOlxCWXXILf/e53ePHFF9Hc3Fx0TmFDQWNjo8fVERHtvWQyiXXr1qGxsRHz5s1DMBjcIbutWrUKLS0trrObL2/lX3nllTjrrLNw8MEH49BDD8XixYuRSqVwzjnnDHdpRERFXXzxxfj1r3+Np556ChUVFf3PWFVWViIajWLdunX49a9/jc9//vOora3FO++8gyuuuAJHHXUUZs+ePczVExHtbNGiRTjppJPQ1NSE1tZW3HjjjTAMA6eddhoqKytx3nnn4corr0RNTQ3i8TguvfRSHH744a525AM+Daannnoqtm3bhhtuuAFtbW2YO3cu/vznP++0IYqIyI/uvfdeAPmWUB/38MMP4+yzz0YoFMJf/vKX/v/onjhxIk455RR85zvfGYZqiYiK27RpE0477TR0dHSgvr4eRx55JP7xj3+gvr4eAHD33XdD13WccsopyOVyOP744/HTn/7U9XV82ceUiIiIiEYf3z1jSkRERESjE4MpEREREfkCgykRERER+QKDKRERERH5AoMpEREREfkCgykRERER+QKDKRERERH5AoMpEZGHbrrpJsydO3e4y3Bt8uTJWLx48XCXQUSjDIMpEdHH/PWvf4Wmaeju7h6U91u0aNEO50cTEdHuMZgSEXlASgnbtlFeXo7a2tq9ei/LsgZ1HBGRXzGYElFJOfroo3HJJZfgkksuQWVlJerq6vDd734XHz9duaurC2eeeSaqq6sRi8Vw4oknYs2aNf2f37hxI0466SRUV1ejrKwM++23H5555hls2LABxxxzDACguroamqbh7LPPBgAIIXDrrbeiubkZ0WgUc+bMwf/+7//2v2dhpfXZZ5/FvHnzEA6H8dJLL+10K18Ige9973uYMGECwuEw5s6diz//+c/9n9+wYQM0TcNvfvMbLFiwAJFIBL/61a92+b3QNA333nsvTj75ZJSVleGWW26B4zg477zz+uucOXMmfvSjH+0w7+yzz8aXvvQl3HHHHWhsbERtbS0uvvjiPQbbn//856iqquLqLxF5KjDcBRARufXoo4/ivPPOw+uvv45//vOfuPDCCzFp0iRccMEFAPLBa82aNfjDH/6AeDyOa665Bp///OexcuVKBINBXHzxxTBNE3/7299QVlaGlStXory8HBMnTsRvf/tbnHLKKVi1ahXi8Tii0SgA4NZbb8Vjjz2G++67D9OnT8ff/vY3/Pu//zvq6+uxYMGC/tquvfZa3HHHHZgyZQqqq6vx17/+dYfaf/SjH+HOO+/E/fffjwMPPBAPPfQQTj75ZPzrX//C9OnTd3ifO++8EwceeCAikchuvxc33XQT/uu//guLFy9GIBCAEAITJkzAE088gdraWrzyyiu48MIL0djYiK997Wv985YsWYLGxkYsWbIEa9euxamnnoq5c+f2fw8/7rbbbsNtt92G5557DoceeuiA/p0RESmRREQlZMGCBXLfffeVQoj+16655hq57777SimlXL16tQQgX3755f7Pb9++XUajUfn4449LKaU84IAD5E033bTL91+yZIkEILu6uvpfy2azMhaLyVdeeWWHseedd5487bTTdpj3+9//focxN954o5wzZ07/x+PGjZO33HLLDmMOOeQQedFFF0kppVy/fr0EIBcvXlz0ewFALly4sOi4iy++WJ5yyin9H5911lmyqalJ2rbd/9pXv/pVeeqpp/Z/3NTUJO+++275n//5n7KxsVGuWLGi6HWIiPYWV0yJqOQcdthh0DSt/+PDDz8cd955JxzHwXvvvYdAIID58+f3f762thYzZ87Ee++9BwC47LLL8K1vfQvPPfccjjvuOJxyyimYPXv2bq+3du1apNNpfPazn93hddM0ceCBB+7w2sEHH7zb9+np6UFrayuOOOKIHV4/4ogj8Pbbbyu/T7FxP/nJT/DQQw+hpaUFmUwGpmnu1Blgv/32g2EY/R83Njbi3Xff3WHMnXfeiVQqhX/+85+YMmWKUj1ERHuDz5gS0ahz/vnn44MPPsAZZ5yBd999FwcffDDuueee3Y5PJpMAgKeffhrLly/v/2flypU7PGcKAGVlZYNSo+r7fHLc//zP/2DRokU477zz8Nxzz2H58uU455xzYJrmDuOCweAOH2uaBiHEDq99+tOfhuM4ePzxxwfwFRARucdgSkQl57XXXtvh43/84x+YPn06DMPAvvvuC9u2dxjT0dGBVatWYdasWf2vTZw4Ed/85jfx5JNP4qqrrsLPfvYzAEAoFAIAOI7TP3bWrFkIh8NoaWnBtGnTdvhn4sSJynXH43GMGzcOL7/88g6vv/zyyzvUtjdefvllfOpTn8JFF12EAw88ENOmTcO6desG9F6HHnoonn32Wfzwhz/EHXfcMSj1ERHtCW/lE1HJaWlpwZVXXon/+I//wLJly3DPPffgzjvvBABMnz4dX/ziF3HBBRfg/vvvR0VFBa699lqMHz8eX/ziFwEACxcuxIknnogZM2agq6sLS5Yswb777gsAaGpqgqZp+NOf/oTPf/7ziEajqKiowKJFi3DFFVdACIEjjzwSiUQCL7/8MuLxOM466yzl2q+++mrceOONmDp1KubOnYuHH34Yy5cv3+3Oe7emT5+OX/ziF/i///s/NDc345e//CXeeOMNNDc3D+j9PvWpT+GZZ57BiSeeiEAggIULFw5KnUREu8JgSkQl58wzz0Qmk8Ghhx4KwzBw+eWX48ILL+z//MMPP4zLL78cX/jCF2CaJo466ig888wz/bevHcfBxRdfjE2bNiEej+OEE07A3XffDQAYP348br75Zlx77bU455xzcOaZZ+KRRx7B97//fdTX1+PWW2/FBx98gKqqKhx00EH49re/7ar2yy67DIlEAldddRXa29sxa9Ys/OEPf9hhR/7e+I//+A+89dZbOPXUU6FpGk477TRcdNFFePbZZwf8nkceeSSefvppfP7zn4dhGLj00ksHpVYiok/SpPxY8z8iIp87+uijMXfuXB6XSUQ0AvEZUyIiIiLyBQZTIiIiIvIF3sonIiIiIl/giikRERER+QKDKRERERH5AoMpEREREfkCgykRERER+QKDKRERERH5AoMpEREREfkCgykRERER+QKDKRERERH5AoMpEREREfnC/w86pYUNJ/oqwQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] @@ -541,6 +984,7 @@ }, { "cell_type": "markdown", + "id": "c2b021c4-c1aa-433d-95c4-e09e926f172f", "metadata": {}, "source": [ "The above provides a visual representation of the cumulative density function (CDF) of `ranks` (blue and orange for each dimension of `theta`) with respect to the 95% confidence interval of a uniform distribution (grey).\n" @@ -548,6 +992,70 @@ }, { "cell_type": "markdown", + "id": "b3f1a0cc-d83f-4f0c-b174-ca367aab7699", + "metadata": {}, + "source": [ + "## multi dimensional SBC\n", + "\n", + "So far, we have performed the SBC checks for each dimension of our parameters $\\theta$ separately. SBI offers a way to perform this check for all dimensions at once." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8c4de299-54a2-4ebd-beb0-344e90767c9f", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "c56e48670ecb47309f927ff55fd6df2b", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Running 1000 sbc samples.: 0%| | 0/1000 [00:00 0.05).any():\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "{'ks_pvals': tensor([0., 0.]), 'c2st_ranks': tensor([0.6775, 0.6900]), 'c2st_dap': tensor([0.5160, 0.4925])}\n" + "{'ks_pvals': tensor([0., 0.]), 'c2st_ranks': tensor([0.6550, 0.6655]), 'c2st_dap': tensor([0.5215, 0.4915])}\n" ] } ], @@ -619,19 +1122,21 @@ }, { "cell_type": "markdown", + "id": "8fc2acca-03a0-42b1-a964-b0951b5c8f8d", "metadata": {}, "source": [ - "We can see that the Kolmogorv-Smirnov p-values vanish (`'ks_pvals': tensor([0., 0.])`). Thus, we can reject the hypothesis that the `ranks` PDF is the uniform PDF. The `c2st` accuracies show values higher than `0.5`. This is indicative that the `ranks` distribution is not a uniform PDF as well.\n" + "We can see that the Kolmogorov-Smirnov p-values vanish (`'ks_pvals': tensor([0., 0.])`). Thus, we can reject the hypothesis that the `ranks` PDF is a uniform PDF. The `c2st` accuracies show values higher than `0.5`. This is supports as well that the `ranks` distribution is not a uniform PDF.\n" ] }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, + "id": "4ef7deb0-d73f-4c64-a6bb-71e388427036", "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHACAYAAAAyfdnSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8WgzjOAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAlD0lEQVR4nO3deXRV5bk/8CcBEsYQRGVQxAkRqSJOlDrRWxStWrTeluty1WHZa62wrHVsV+tQq8UBbdXl0OEqXm/rWJWqOLWoLFGpUlEcQEEUW6A4ISBiSPL+/vDnqSmQRElykryfz1pZy3P2Pns/+2zO4/e8ezglKaUUAABko7TYBQAA0LIEQACAzAiAAACZEQABADIjAAIAZEYABADIjAAIAJAZARAAIDMdGzNTbW1tLF68OHr06BElJSXNXROQoZRSrFy5Mvr37x+lpe3vu6k+CjS3z9NHGxUAFy9eHAMGDGiS4gDq89Zbb8WWW25Z7DKanD4KtJTG9NFGBcAePXoUFlhRUbHxlQH8mxUrVsSAAQMK/aa90UeB5vZ5+mijAuCnhysqKio0LqBZtdfDo/oo0FIa00fb34k2AADUSwAEAMiMAAgAkJlGnQMIbVFNTU2sXbu22GXw/3Xo0CE6duzYbs/xA2hLBEDapVWrVsXf//73SCkVuxQ+o2vXrtGvX78oKysrdikAWRMAaXdqamri73//e3Tt2jU222wzI06tQEopqqqq4u23346FCxfGoEGD2uXNngHaCgGQdmft2rWRUorNNtssunTpUuxy+P+6dOkSnTp1ijfffDOqqqqic+fOxS4JIFu+gtNuGflrfYz6AbQOujEAQGYEQACAzAiA0Modd9xxcfjhhxe7DADaEReBkI3pY8c2et79pkxpxkpat/PPPz/uueeemD17dr3zvfTSS3HuuefGrFmz4s0334xf/vKXceqpp7ZIjQBsHCOA0AyqqqqKXUKzW716dWy77bZx8cUXR9++fYtdDgCfgwAITWDUqFExYcKEOPXUU2PTTTeNMWPGRETEFVdcETvvvHN069YtBgwYECeffHKsWrWq8LrJkydHZWVlPPTQQzFkyJDo3r17HHTQQbFkyZINruuZZ56JzTbbLC655JL1Tq+qqooJEyZEv379onPnzjFw4MCYOHFiYfry5cvju9/9bmy22WZRUVER//Ef/xHPP/98oZ6f/exn8fzzz0dJSUmUlJTE5MmT17uePffcMy677LL4r//6rygvL/+8bxkARSQAQhO56aaboqysLGbMmBHXX399RHxy25OrrroqXnrppbjpppti2rRpcdZZZ9V53erVq2PSpElx8803x/Tp02PRokVxxhlnrHcd06ZNiwMOOCAuuuiiOPvss9c7z1VXXRV/+tOf4vbbb4958+bF73//+9h6660L07/1rW/FsmXL4oEHHohZs2bFbrvtFl/72tfivffei3HjxsXpp58eQ4cOjSVLlsSSJUti3LhxTfMGAdBqtIpzABs6Nyvn87FoOwYNGhSXXnppnec+e07c1ltvHRdeeGGcdNJJce211xaeX7t2bVx//fWx3XbbRUTEhAkT4oILLlhn+XfffXccc8wx8bvf/a7eULZo0aIYNGhQ7LPPPlFSUhIDBw4sTHviiSfir3/9ayxbtqwwajdp0qS455574s4774wTTzwxunfvHh07dnRYtw2qr5fqo8BntYoACO3B7rvvvs5zf/7zn2PixIkxd+7cWLFiRVRXV8eaNWti9erV0bVr14j45PdxPw1/ERH9+vWLZcuW1VnOzJkz47777os777yzwSuCjzvuuDjggANi8ODBcdBBB8Whhx4aBx54YEREPP/887Fq1aro3bt3ndd89NFHsWDBgi+y2QC0QQIgNJFu3brVefzGG2/EoYceGt///vfjoosuik022SSeeOKJOOGEE6KqqqoQADt16lTndSUlJZFSqvPcdtttF717944bbrghDjnkkHVe81m77bZbLFy4MB544IH485//HN/+9rdj9OjRceedd8aqVauiX79+8dhjj63zusrKyi+24QC0OQIgNJNZs2ZFbW1tXH755YWfQLv99tu/0LI23XTTuOuuu2LUqFHx7W9/O26//fZ6Q2BFRUWMGzcuxo0bF//5n/8ZBx10ULz33nux2267xdKlS6Njx451zgv8rLKysqipqflCdQLQNrgIBJrJ9ttvH2vXro2rr746Xn/99bj55psLF4d8EZtvvnlMmzYt5s6dG0cddVRUV1evd74rrrgibrnllpg7d268+uqrcccdd0Tfvn2jsrIyRo8eHSNHjozDDz88Hn744XjjjTfiySefjJ/85Cfx7LPPRsQn5youXLgwZs+eHe+88058/PHH611PVVVVzJ49O2bPnh1VVVXxj3/8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5QAAZKZVjADStkwfO7bYJQAAG8EIIABAZowAArQjbqnVdmzMLbXaw62lctVabqklAAK0A26p1fZszC212sutpXLVGm6pJQACtANuqdX2bMwttdrLraVy1RpuqSUAArQTbqnVtmzMLbXcWoqN5UQRAIDMCIAAAJlxCBj+v4bub7jflCmtctlA29Sc91TVc2iIAAgANBnhs20QAMmGXzABgE8IgACQGaN0CIDQCmjGALQkVwEDAGTGCCDtivP8AFo3RzxaByOAAACZMQIIAG2Mox1sLAEQAGg16gu3Dg83HYeAAQAyYwQQAMhebhenCIDQSK31nJvcmhYAG08ABADqaK1feBviC3HjCYDQBrTVZgzQlPTCpuMiEACAzAiAAACZEQABADLjHEBo5zbmnBknTAO0T0YAAQAyIwACAGTGIWAAgAa0t3sMCoAAABuprQVEh4ABADJjBBAAyIJfEvmXRgXAlFJERKxYsaJZivhw7dpmWS6wcZrrM1/fuj7tN+1Nc/fRCL0UWrOW6Kefp482KgCuXLkyIiIGDBiwEWUBbU7Pni2+ypUrV0bPIqy3uemjkLkW7GuN6aMlqRExsba2NhYvXhw9evSIkpKSJisw4pO0OmDAgHjrrbeioqKiSZdN8div7U9z79OUUqxcuTL69+8fpaXt7/Tk5uyjET5z7ZF92j415379PH20USOApaWlseWWWzZJcRtSUVHhH3g7ZL+2P825T9vjyN+nWqKPRvjMtUf2afvUXPu1sX20/X3NBgCgXgIgAEBmih4Ay8vL47zzzovy8vJil0ITsl/bH/u0dbN/2h/7tH1qLfu1UReBAADQfhR9BBAAgJYlAAIAZEYABADIjAAIAJCZogfAa665Jrbeeuvo3LlzjBgxIv76178WuyQ24Pzzz4+SkpI6fzvuuGNh+po1a2L8+PHRu3fv6N69exx55JHxz3/+s84yFi1aFIccckh07do1Nt988zjzzDOjurq6pTclW9OnT4/DDjss+vfvHyUlJXHPPffUmZ5SinPPPTf69esXXbp0idGjR8drr71WZ5733nsvjj766KioqIjKyso44YQTYtWqVXXmeeGFF2LfffeNzp07x4ABA+LSSy9t7k3Lmj7aduij7UN76KVFDYC33XZbnHbaaXHeeefF3/72txg2bFiMGTMmli1bVsyyqMfQoUNjyZIlhb8nnniiMO2HP/xh3HvvvXHHHXfE448/HosXL45vfvObhek1NTVxyCGHRFVVVTz55JNx0003xeTJk+Pcc88txqZk6cMPP4xhw4bFNddcs97pl156aVx11VVx/fXXx8yZM6Nbt24xZsyYWLNmTWGeo48+Ol566aV45JFH4r777ovp06fHiSeeWJi+YsWKOPDAA2PgwIExa9asuOyyy+L888+P3/zmN82+fTnSR9sefbTtaxe9NBXRXnvtlcaPH194XFNTk/r3758mTpxYxKrYkPPOOy8NGzZsvdOWL1+eOnXqlO64447Cc6+88kqKiPTUU0+llFKaOnVqKi0tTUuXLi3Mc91116WKior08ccfN2vtrCsi0t133114XFtbm/r27Zsuu+yywnPLly9P5eXl6ZZbbkkppfTyyy+niEjPPPNMYZ4HHngglZSUpH/84x8ppZSuvfba1KtXrzr79Oyzz06DBw9u5i3Kkz7atuij7U9b7aVFGwGsqqqKWbNmxejRowvPlZaWxujRo+Opp54qVlk04LXXXov+/fvHtttuG0cffXQsWrQoIiJmzZoVa9eurbM/d9xxx9hqq60K+/Opp56KnXfeOfr06VOYZ8yYMbFixYp46aWXWnZDWMfChQtj6dKldfZhz549Y8SIEXX2YWVlZeyxxx6FeUaPHh2lpaUxc+bMwjz77bdflJWVFeYZM2ZMzJs3L95///0W2po86KNtkz7avrWVXlq0APjOO+9ETU1NnX/EERF9+vSJpUuXFqkq6jNixIiYPHlyPPjgg3HdddfFwoULY999942VK1fG0qVLo6ysLCorK+u85rP7c+nSpevd359Oo7g+3Qf1fSaXLl0am2++eZ3pHTt2jE022cR+LgJ9tO3RR9u/ttJLO270EsjGwQcfXPjvXXbZJUaMGBEDBw6M22+/Pbp06VLEygDaBn2U1qJoI4CbbrppdOjQYZ2rm/75z39G3759i1QVn0dlZWXssMMOMX/+/Ojbt29UVVXF8uXL68zz2f3Zt2/f9e7vT6dRXJ/ug/o+k3379l3n4oLq6up477337Oci0EfbPn20/WkrvbRoAbCsrCx23333+Mtf/lJ4rra2Nv7yl7/EyJEji1UWn8OqVatiwYIF0a9fv9h9992jU6dOdfbnvHnzYtGiRYX9OXLkyJgzZ06df/SPPPJIVFRUxE477dTi9VPXNttsE3379q2zD1esWBEzZ86ssw+XL18es2bNKswzbdq0qK2tjREjRhTmmT59eqxdu7YwzyOPPBKDBw+OXr16tdDW5EEfbfv00fanzfTSJrmU5Au69dZbU3l5eZo8eXJ6+eWX04knnpgqKyvrXN1E63H66aenxx57LC1cuDDNmDEjjR49Om266aZp2bJlKaWUTjrppLTVVluladOmpWeffTaNHDkyjRw5svD66urq9KUvfSkdeOCBafbs2enBBx9Mm222Wfrxj39crE3KzsqVK9Nzzz2XnnvuuRQR6YorrkjPPfdcevPNN1NKKV188cWpsrIyTZkyJb3wwgtp7NixaZtttkkfffRRYRkHHXRQGj58eJo5c2Z64okn0qBBg9JRRx1VmL58+fLUp0+f9J3vfCe9+OKL6dZbb01du3ZNv/71r1t8e3Ogj7Yt+mj70B56aVEDYEopXX311WmrrbZKZWVlaa+99kpPP/10sUtiA8aNG5f69euXysrK0hZbbJHGjRuX5s+fX5j+0UcfpZNPPjn16tUrde3aNR1xxBFpyZIldZbxxhtvpIMPPjh16dIlbbrppun0009Pa9eubelNydajjz6aImKdv2OPPTal9MntC84555zUp0+fVF5enr72ta+lefPm1VnGu+++m4466qjUvXv3VFFRkY4//vi0cuXKOvM8//zzaZ999knl5eVpiy22SBdffHFLbWKW9NG2Qx9tH9pDLy1JKaWNH0cEAKCtKPpPwQEA0LIEQACAzAiAAACZEQABADIjAAIAZEYABADIjAAIAJAZATBD559/fuy6667FLuNz23rrreNXv/rVRi1j8uTJUVlZWXjcVt8LoLjaau/QR/mUANgGPPbYY1FSUrLOD4R/UWeccUad3yjMWXO9F9OnT4/DDjss+vfvHyUlJXHPPfc0+TqAxtNHm09zvRcTJ06MPffcM3r06BGbb755HH744TFv3rwmX0+uBMCMpJSiuro6unfvHr17996oZX32x6mbYr5iaYr3Yn0+/PDDGDZsWFxzzTVNvmygePTRdTVXH3388cdj/Pjx8fTTT8cjjzwSa9eujQMPPDA+/PDDJl9XjgTAJjBq1KiYMGFCTJgwIXr27BmbbrppnHPOOfHZX9l7//3345hjjolevXpF165d4+CDD47XXnutMP3NN9+Mww47LHr16hXdunWLoUOHxtSpU+ONN96Ir371qxER0atXrygpKYnjjjsuIiJqa2tj4sSJsc0220SXLl1i2LBhceeddxaW+ek33gceeCB23333KC8vjyeeeGKd4fra2tq44IILYsstt4zy8vLYdddd48EHHyxMf+ONN6KkpCRuu+222H///aNz587x+9//fr3vRUlJSVx33XXxjW98I7p16xYXXXRR1NTUxAknnFCoc/DgwXHllVfWed1xxx0Xhx9+eEyaNCn69esXvXv3jvHjx9fb+H73u99FZWVlvd88J0+eHFtttVV07do1jjjiiHj33XfrTP/39+LTOn7xi19Enz59orKyMi644IKorq6OM888MzbZZJPYcsst48Ybb9zgOiMiDj744LjwwgvjiCOOqHc+4BP66L/oo5948MEH47jjjouhQ4fGsGHDYvLkybFo0aKYNWtWva+jkZrsV4Uztv/++6fu3bunH/zgB2nu3Lnp//7v/1LXrl3Tb37zm8I83/jGN9KQIUPS9OnT0+zZs9OYMWPS9ttvn6qqqlJKKR1yyCHpgAMOSC+88EJasGBBuvfee9Pjjz+eqqur0x//+McUEWnevHlpyZIlafny5SmllC688MK04447pgcffDAtWLAg3Xjjjam8vDw99thjKaV//Vj1Lrvskh5++OE0f/789O6776bzzjsvDRs2rFDbFVdckSoqKtItt9yS5s6dm84666zUqVOn9Oqrr6aUUlq4cGGKiLT11lunP/7xj+n1119PixcvXu97ERFp8803TzfccENasGBBevPNN1NVVVU699xz0zPPPJNef/31wvtz2223FV537LHHpoqKinTSSSelV155Jd17773rvIcDBw5Mv/zlL1NKKV1yySWpd+/eaebMmRvcL08//XQqLS1Nl1xySZo3b1668sorU2VlZerZs2dhnn9/L4499tjUo0ePNH78+DR37tz0P//zPyki0pgxY9JFF12UXn311fTzn/88derUKb311lv1/Kuo+57cfffdjZoXcqWP/os+un6vvfZaiog0Z86cRr+GDRMAm8D++++fhgwZkmprawvPnX322WnIkCEppZReffXVFBFpxowZhenvvPNO6tKlS7r99ttTSintvPPO6fzzz1/v8j9tQO+//37huTVr1qSuXbumJ598ss68J5xwQjrqqKPqvO6ee+6pM8+/f1j79++fLrroojrz7Lnnnunkk09OKf2rcf3qV79q8L2IiHTqqac2ON/48ePTkUceWXh87LHHpoEDB6bq6urCc9/61rfSuHHjCo8/bVxnnXVW6tevX3rxxRfrXcdRRx2Vvv71r9d5bty4cQ02roEDB6aamprCc4MHD0777rtv4XF1dXXq1q1buuWWWxrczpQEQGgMffRf9NF11dTUpEMOOSTtvffejZqfhnVswcHGdu3LX/5ylJSUFB6PHDkyLr/88qipqYlXXnklOnbsGCNGjChM7927dwwePDheeeWViIg45ZRT4vvf/348/PDDMXr06DjyyCNjl1122eD65s+fH6tXr44DDjigzvNVVVUxfPjwOs/tscceG1zOihUrYvHixbH33nvXeX7vvfeO559/vtHLaWi+a665Jm644YZYtGhRfPTRR1FVVbXOVWNDhw6NDh06FB7369cv5syZU2eeyy+/PD788MN49tlnY9ttt623jldeeWWdQ7AjR46sc1hmfYYOHRqlpf86O6JPnz7xpS99qfC4Q4cO0bt371i2bFm9ywE+H320/vly7qPjx4+PF198MZ544olGzU/DnAPYSnz3u9+N119/Pb7zne/EnDlzYo899oirr756g/OvWrUqIiLuv//+mD17duHv5ZdfrnP+SkREt27dmqTGxi7n3+e79dZb44wzzogTTjghHn744Zg9e3Ycf/zxUVVVVWe+Tp061XlcUlIStbW1dZ7bd999o6amJm6//fYvsAWNs746GlMbUFz6aPvsoxMmTIj77rsvHn300dhyyy2btM6cCYBNZObMmXUeP/300zFo0KDo0KFDDBkyJKqrq+vM8+6778a8efNip512Kjw3YMCAOOmkk+Kuu+6K008/PX77299GRERZWVlERNTU1BTm3WmnnaK8vDwWLVoU22+/fZ2/AQMGNLruioqK6N+/f8yYMaPO8zNmzKhT28aYMWNGfOUrX4mTTz45hg8fHttvv30sWLDgCy1rr732igceeCB+8YtfxKRJk+qdd8iQIevdL0DrpI9uWI59NKUUEyZMiLvvvjumTZsW22yzTYusNxcOATeRRYsWxWmnnRbf+9734m9/+1tcffXVcfnll0dExKBBg2Ls2LHx3//93/HrX/86evToET/60Y9iiy22iLFjx0ZExKmnnhoHH3xw7LDDDvH+++/Ho48+GkOGDImIiIEDB0ZJSUncd9998fWvfz26dOkSPXr0iDPOOCN++MMfRm1tbeyzzz7xwQcfxIwZM6KioiKOPfbYRtd+5plnxnnnnRfbbbdd7LrrrnHjjTfG7NmzN3iF2uc1aNCg+N///d946KGHYptttombb745nnnmmS/8Yf7KV74SU6dOjYMPPjg6duwYp5566nrnO+WUU2LvvfeOSZMmxdixY+Ohhx5q8LBFU1m1alXMnz+/8HjhwoUxe/bs2GSTTWKrrbZqkRqgrdFHNyzHPjp+/Pj4wx/+EFOmTIkePXrE0qVLIyKiZ8+e0aVLlxapoT0zAthEjjnmmPjoo49ir732ivHjx8cPfvCDOPHEEwvTb7zxxth9993j0EMPjZEjR0ZKKaZOnVoYEq+pqYnx48fHkCFD4qCDDooddtghrr322oiI2GKLLeJnP/tZ/OhHP4o+ffrEhAkTIiLi5z//eZxzzjkxceLEwuvuv//+z90QTjnllDjttNPi9NNPj5133jkefPDB+NOf/hSDBg1qkvfme9/7Xnzzm9+McePGxYgRI+Ldd9+Nk08+eaOWuc8++8T9998fP/3pTzd4iOfLX/5y/Pa3v40rr7wyhg0bFg8//HD89Kc/3aj1Ntazzz4bw4cPL5xHdNppp8Xw4cPj3HPPbZH1Q1ukj25Yjn30uuuuiw8++CBGjRoV/fr1K/zddtttLbL+9q4kpc/cZIkvZNSoUbHrrrtu9M/rAORKH4WWZQQQACAzAiAAQGYcAgYAyIwRQACAzAiAAACZEQABADIjAAIAZEYABADIjAAIAJAZARAAIDMCIABAZgRAAIDM/D/ZqRSEkZYq6gAAAABJRU5ErkJggg==", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHACAYAAAAyfdnSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAkz0lEQVR4nO3deXRW1bk/8CcBEgYJQVAGRZwQkSriRKljb1GkatF6W67LVcVlr1VhWevYrtahVosD2qrLocNVvN5WRatSFVFbVBaoVKk4g4IotkBxQkDEkGT//ujPt6ZAQEjyJtmfz1pZy/ecfc7Z73vI4zf77HPekpRSCgAAslFa7A4AANC0BEAAgMwIgAAAmREAAQAyIwACAGRGAAQAyIwACACQGQEQACAzbTemUW1tbSxatCg6d+4cJSUljd0nIEMppVixYkX07t07Sktb39+m6ijQ2L5IHd2oALho0aLo06dPg3QOoD7vvPNObLvttsXuRoNTR4GmsjF1dKMCYOfOnQs7rKio2PyeAfyb5cuXR58+fQr1prVRR4HG9kXq6EYFwM8uV1RUVChcQKNqrZdH1VGgqWxMHW19E20AAKiXAAgAkBkBEAAgMxs1BxBaopqamlizZk2xu8H/16ZNm2jbtm2rneMH0JIIgLRKK1eujL/97W+RUip2V/icjh07Rq9evaKsrKzYXQHImgBIq1NTUxN/+9vfomPHjrHVVlsZcWoGUkpRVVUV7777bixYsCD69evXKh/2DNBSCIC0OmvWrImUUmy11VbRoUOHYneH/69Dhw7Rrl27ePvtt6Oqqirat29f7C4BZMuf4LRaRv6aH6N+AM2DagwAkBkBEAAgMwIgNHOjR4+Oo48+utjdAKAVcRMI2Zg2cuRGtz1o0qRG7EnzdvHFF8f9998fs2fPrrfdK6+8EhdeeGHMmjUr3n777fjFL34RZ555ZpP0EYDNYwQQGkFVVVWxu9DoVq1aFTvuuGNcfvnl0bNnz2J3B4AvQACEBnDIIYfE2LFj48wzz4zu3bvH8OHDIyLimmuuid133z06deoUffr0idNPPz1WrlxZ2G7ChAlRWVkZjzzySAwYMCC22GKLOPzww2Px4sXrPdazzz4bW221VVxxxRXrXF9VVRVjx46NXr16Rfv27aNv374xbty4wvply5bFd7/73dhqq62ioqIi/uM//iNeeOGFQn9++tOfxgsvvBAlJSVRUlISEyZMWOdx9t1337jqqqviv/7rv6K8vPyLfmQAFJEACA3ktttui7KyspgxY0bcfPPNEfHPx55cd9118corr8Rtt90WU6dOjfPOO6/OdqtWrYrx48fH7bffHtOmTYuFCxfGOeecs85jTJ06NQ499NC47LLL4vzzz19nm+uuuy7++Mc/xsSJE2Pu3Lnxu9/9LrbffvvC+m9961uxdOnSePjhh2PWrFmx1157xde+9rX44IMPYtSoUXH22WfHwIEDY/HixbF48eIYNWpUw3xAADQbzWIO4IbmZuU8H4uWo1+/fnHllVfWWfb5OXHbb799XHrppXHqqafGjTfeWFi+Zs2auPnmm2OnnXaKiIixY8fGJZdcstb+77vvvjjhhBPit7/9bb2hbOHChdGvX7844IADoqSkJPr27VtYN3369PjLX/4SS5cuLYzajR8/Pu6///6455574pRTToktttgi2rZt67JuC1RfLVVHgc9rFgEQWoO99957rWV/+tOfYty4cTFnzpxYvnx5VFdXx+rVq2PVqlXRsWPHiPjn9+N+Fv4iInr16hVLly6ts5+ZM2fGgw8+GPfcc88G7wgePXp0HHroodG/f/84/PDD48gjj4zDDjssIiJeeOGFWLlyZXTr1q3ONp988knMnz9/U942AC2QAAgNpFOnTnVev/XWW3HkkUfGaaedFpdddllsueWWMX369Dj55JOjqqqqEADbtWtXZ7uSkpJIKdVZttNOO0W3bt3illtuiSOOOGKtbT5vr732igULFsTDDz8cf/rTn+Lb3/52DBs2LO65555YuXJl9OrVK5544om1tqusrNy0Nw5AiyMAQiOZNWtW1NbWxtVXX134CrSJEydu0r66d+8e9957bxxyyCHx7W9/OyZOnFhvCKyoqIhRo0bFqFGj4j//8z/j8MMPjw8++CD22muvWLJkSbRt27bOvMDPKysri5qamk3qJwAtg5tAoJHsvPPOsWbNmrj++uvjzTffjNtvv71wc8im2HrrrWPq1KkxZ86cOO6446K6unqd7a655pq44447Ys6cOfH666/H3XffHT179ozKysoYNmxYDB06NI4++uh49NFH46233oqnnnoqfvzjH8dzzz0XEf+cq7hgwYKYPXt2vPfee/Hpp5+u8zhVVVUxe/bsmD17dlRVVcXf//73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C4vxVrL08ccfx6BBg+KGG25Y5/orr7wyrrvuurj55ptj5syZ0alTpxg+fHisXr260Ob444+PV155JR577LF48MEHY9q0aXHKKacU1i9fvjwOO+yw6Nu3b8yaNSuuuuqquPjii+PXv/51o7+/HKmjLY862vK1ilqaimi//fZLY8aMKbyuqalJvXv3TuPGjStir1ifiy66KA0aNGid65YtW5batWuX7r777sKy1157LUVEevrpp1NKKU2ePDmVlpamJUuWFNrcdNNNqaKiIn366aeN2nfWFhHpvvvuK7yura1NPXv2TFdddVVh2bJly1J5eXm64447Ukopvfrqqyki0rPPPlto8/DDD6eSkpL097//PaWU0o033pi6du1a55yef/75qX///o38jvKkjrYs6mjr01JradFGAKuqqmLWrFkxbNiwwrLS0tIYNmxYPP3008XqFhvwxhtvRO/evWPHHXeM448/PhYuXBgREbNmzYo1a9bUOZ+77rprbLfddoXz+fTTT8fuu+8ePXr0KLQZPnx4LF++PF555ZWmfSOsZcGCBbFkyZI657BLly4xZMiQOuewsrIy9tlnn0KbYcOGRWlpacycObPQ5qCDDoqysrJCm+HDh8fcuXPjww8/bKJ3kwd1tGVSR1u3llJLixYA33vvvaipqanzjzgiokePHrFkyZIi9Yr6DBkyJCZMmBBTpkyJm266KRYsWBAHHnhgrFixIpYsWRJlZWVRWVlZZ5vPn88lS5as83x/to7i+uwc1Pc7uWTJkth6663rrG/btm1sueWWznMRqKMtjzra+rWUWtp2s/dANkaMGFH47z322COGDBkSffv2jYkTJ0aHDh2K2DOAlkEdpbko2ghg9+7do02bNmvd3fSPf/wjevbsWaRe8UVUVlbGLrvsEvPmzYuePXtGVVVVLFu2rE6bz5/Pnj17rvN8f7aO4vrsHNT3O9mzZ8+1bi6orq6ODz74wHkuAnW05VNHW5+WUkuLFgDLyspi7733jj//+c+FZbW1tfHnP/85hg4dWqxu8QWsXLky5s+fH7169Yq999472rVrV+d8zp07NxYuXFg4n0OHDo2XXnqpzj/6xx57LCoqKmK33XZr8v5T1w477BA9e/ascw6XL18eM2fOrHMOly1bFrNmzSq0mTp1atTW1saQIUMKbaZNmxZr1qwptHnssceif//+0bVr1yZ6N3lQR1s+dbT1aTG1tEFuJdlEd955ZyovL08TJkxIr776ajrllFNSZWVlnbubaD7OPvvs9MQTT6QFCxakGTNmpGHDhqXu3bunpUuXppRSOvXUU9N2222Xpk6dmp577rk0dOjQNHTo0ML21dXV6Utf+lI67LDD0uzZs9OUKVPSVlttlX70ox8V6y1lZ8WKFen5559Pzz//fIqIdM0116Tnn38+vf322ymllC6//PJUWVmZJk2alF588cU0cuTItMMOO6RPPvmksI/DDz88DR48OM2cOTNNnz499evXLx133HGF9cuWLUs9evRI3/nOd9LLL7+c7rzzztSxY8f0q1/9qsnfbw7U0ZZFHW0dWkMtLWoATCml66+/Pm233XaprKws7bfffumZZ54pdpdYj1GjRqVevXqlsrKytM0226RRo0alefPmFdZ/8skn6fTTT09du3ZNHTt2TMccc0xavHhxnX289dZbacSIEalDhw6pe/fu6eyzz05r1qxp6reSrccffzxFxFo/J554Ykrpn48vuOCCC1KPHj1SeXl5+trXvpbmzp1bZx/vv/9+Ou6449IWW2yRKioq0kknnZRWrFhRp80LL7yQDjjggFReXp622WabdPnllzfVW8ySOtpyqKOtQ2uopSUppbT544gAALQURf8qOAAAmpYACACQGQEQACAzAiAAQGYEQACAzAiAAACZEQABADIjAGbo4osvjj333LPY3fjCtt9++/jlL3+5WfuYMGFCVFZWFl631M8CKK6WWjvUUT4jALYATzzxRJSUlKz1BeGb6pxzzqnzHYU5a6zPYtq0aXHUUUdF7969o6SkJO6///4GPwaw8dTRxtNYn8W4ceNi3333jc6dO8fWW28dRx99dMydO7fBj5MrATAjKaWorq6OLbbYIrp167ZZ+/r8l1M3RLtiaYjPYl0+/vjjGDRoUNxwww0Nvm+geNTRtTVWHX3yySdjzJgx8cwzz8Rjjz0Wa9asicMOOyw+/vjjBj9WjgTABnDIIYfE2LFjY+zYsdGlS5fo3r17XHDBBfH5b9n78MMP44QTToiuXbtGx44dY8SIEfHGG28U1r/99ttx1FFHRdeuXaNTp04xcODAmDx5crz11lvx1a9+NSIiunbtGiUlJTF69OiIiKitrY1x48bFDjvsEB06dIhBgwbFPffcU9jnZ3/xPvzww7H33ntHeXl5TJ8+fa3h+tra2rjkkkti2223jfLy8thzzz1jypQphfVvvfVWlJSUxF133RUHH3xwtG/fPn73u9+t87MoKSmJm266Kb7xjW9Ep06d4rLLLouampo4+eSTC/3s379/XHvttXW2Gz16dBx99NExfvz46NWrV3Tr1i3GjBlTb+H77W9/G5WVlfX+5TlhwoTYbrvtomPHjnHMMcfE+++/X2f9v38Wn/Xj5z//efTo0SMqKyvjkksuierq6jj33HNjyy23jG233TZuvfXW9R4zImLEiBFx6aWXxjHHHFNvO+Cf1NF/UUf/acqUKTF69OgYOHBgDBo0KCZMmBALFy6MWbNm1bsdG6nBvlU4YwcffHDaYost0ve///00Z86c9H//93+pY8eO6de//nWhzTe+8Y00YMCANG3atDR79uw0fPjwtPPOO6eqqqqUUkpHHHFEOvTQQ9OLL76Y5s+fnx544IH05JNPpurq6vSHP/whRUSaO3duWrx4cVq2bFlKKaVLL7007brrrmnKlClp/vz56dZbb03l5eXpiSeeSCn968uq99hjj/Too4+mefPmpffffz9ddNFFadCgQYW+XXPNNamioiLdcccdac6cOem8885L7dq1S6+//npKKaUFCxakiEjbb799+sMf/pDefPPNtGjRonV+FhGRtt5663TLLbek+fPnp7fffjtVVVWlCy+8MD377LPpzTffLHw+d911V2G7E088MVVUVKRTTz01vfbaa+mBBx5Y6zPs27dv+sUvfpFSSumKK65I3bp1SzNnzlzveXnmmWdSaWlpuuKKK9LcuXPTtddemyorK1OXLl0Kbf79szjxxBNT586d05gxY9KcOXPS//zP/6SISMOHD0+XXXZZev3119PPfvaz1K5du/TOO+/U86+i7mdy3333bVRbyJU6+i/q6Lq98cYbKSLSSy+9tNHbsH4CYAM4+OCD04ABA1JtbW1h2fnnn58GDBiQUkrp9ddfTxGRZsyYUVj/3nvvpQ4dOqSJEyemlFLafffd08UXX7zO/X9WgD788MPCstWrV6eOHTump556qk7bk08+OR133HF1trv//vvrtPn3X9bevXunyy67rE6bfffdN51++ukppX8Vrl/+8pcb/CwiIp155pkbbDdmzJh07LHHFl6feOKJqW/fvqm6urqw7Fvf+lYaNWpU4fVnheu8885LvXr1Si+//HK9xzjuuOPS17/+9TrLRo0atcHC1bdv31RTU1NY1r9//3TggQcWXldXV6dOnTqlO+64Y4PvMyUBEDaGOvov6ujaampq0hFHHJH233//jWrPhrVtwsHGVu3LX/5ylJSUFF4PHTo0rr766qipqYnXXnst2rZtG0OGDCms79atW/Tv3z9ee+21iIg444wz4rTTTotHH300hg0bFscee2zsscce6z3evHnzYtWqVXHooYfWWV5VVRWDBw+us2yfffZZ736WL18eixYtiv3337/O8v333z9eeOGFjd7PhtrdcMMNccstt8TChQvjk08+iaqqqrXuGhs4cGC0adOm8LpXr17x0ksv1Wlz9dVXx8cffxzPPfdc7LjjjvX247XXXlvrEuzQoUPrXJZZl4EDB0Zp6b9mR/To0SO+9KUvFV63adMmunXrFkuXLq13P8AXo47W3y7nOjpmzJh4+eWXY/r06RvVng0zB7CZ+O53vxtvvvlmfOc734mXXnop9tlnn7j++uvX237lypUREfHQQw/F7NmzCz+vvvpqnfkrERGdOnVqkD5u7H7+vd2dd94Z55xzTpx88snx6KOPxuzZs+Okk06KqqqqOu3atWtX53VJSUnU1tbWWXbggQdGTU1NTJw4cRPewcZZVz82pm9AcamjrbOOjh07Nh588MF4/PHHY9ttt23QfuZMAGwgM2fOrPP6mWeeiX79+kWbNm1iwIABUV1dXafN+++/H3Pnzo3ddtutsKxPnz5x6qmnxr333htnn312/OY3v4mIiLKysoiIqKmpKbTdbbfdory8PBYuXBg777xznZ8+ffpsdL8rKiqid+/eMWPGjDrLZ8yYUadvm2PGjBnxla98JU4//fQYPHhw7LzzzjF//vxN2td+++0XDz/8cPz85z+P8ePH19t2wIAB6zwvQPOkjq5fjnU0pRRjx46N++67L6ZOnRo77LBDkxw3Fy4BN5CFCxfGWWedFd/73vfir3/9a1x//fVx9dVXR0REv379YuTIkfHf//3f8atf/So6d+4cP/zhD2ObbbaJkSNHRkTEmWeeGSNGjIhddtklPvzww3j88cdjwIABERHRt2/fKCkpiQcffDC+/vWvR4cOHaJz585xzjnnxA9+8IOora2NAw44ID766KOYMWNGVFRUxIknnrjRfT/33HPjoosuip122in23HPPuPXWW2P27NnrvUPti+rXr1/87//+bzzyyCOxww47xO233x7PPvvsJv8yf+UrX4nJkyfHiBEjom3btnHmmWeus90ZZ5wR+++/f4wfPz5GjhwZjzzyyAYvWzSUlStXxrx58wqvFyxYELNnz44tt9wytttuuybpA7Q06uj65VhHx4wZE7///e9j0qRJ0blz51iyZElERHTp0iU6dOjQJH1ozYwANpATTjghPvnkk9hvv/1izJgx8f3vfz9OOeWUwvpbb7019t577zjyyCNj6NChkVKKyZMnF4bEa2pqYsyYMTFgwIA4/PDDY5dddokbb7wxIiK22Wab+OlPfxo//OEPo0ePHjF27NiIiPjZz34WF1xwQYwbN66w3UMPPfSFC8IZZ5wRZ511Vpx99tmx++67x5QpU+KPf/xj9OvXr0E+m+9973vxzW9+M0aNGhVDhgyJ999/P04//fTN2ucBBxwQDz30UPzkJz9Z7yWeL3/5y/Gb3/wmrr322hg0aFA8+uij8ZOf/GSzjruxnnvuuRg8eHBhHtFZZ50VgwcPjgsvvLBJjg8tkTq6fjnW0Ztuuik++uijOOSQQ6JXr16Fn7vuuqtJjt/alaT0uYcssUkOOeSQ2HPPPTf763UAcqWOQtMyAggAkBkBEAAgMy4BAwBkxgggAEBmBEAAgMwIgAAAmREAAQAyIwACAGRGAAQAyIwACACQGQEQACAzAiAAQGb+H+En/9mR97IjAAAAAElFTkSuQmCC", "text/plain": [ "
" ] @@ -646,6 +1151,7 @@ }, { "cell_type": "markdown", + "id": "23ec9d31-d9fc-4469-9e7d-217d32bf70b9", "metadata": {}, "source": [ "Inspecting the histograms for both dimenions, the rank distribution is clearly tilted to low rank values for both dimensions. Because we have shifted the expected value of the posterior to higher values (by `0.1`), we see more entries at low rank values.\n" @@ -653,6 +1159,7 @@ }, { "cell_type": "markdown", + "id": "34f95fb3-b195-44e1-b1bc-44d2dce1f6e7", "metadata": {}, "source": [ "Let's try to shift all posterior samples in the opposite direction. We shift the expectation value by `-0.1`:\n" @@ -660,7 +1167,8 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, + "id": "43a45b10-aaac-4e66-a502-440d2ac1a948", "metadata": {}, "outputs": [], "source": [ @@ -669,13 +1177,14 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, + "id": "98cbfd58-5bfc-414f-9fa3-ba766dad0638", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "aa27f852ae164295950130e2963967ca", + "model_id": "a6c98007dcf84e7ba0e1c2402498c3df", "version_major": 2, "version_minor": 0 }, @@ -686,24 +1195,16 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/janteusen/qode/sbi/sbi/analysis/sbc.py:359: UserWarning: std(): degrees of freedom is <= 0. Correction should be strictly less than the reduction factor (input numel divided by output numel). (Triggered internally at /Users/runner/work/pytorch/pytorch/pytorch/aten/src/ATen/native/ReduceOps.cpp:1760.)\n", - " if (c2st_scores.std(0) > 0.05).any():\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "{'ks_pvals': tensor([0., 0.]), 'c2st_ranks': tensor([0.6700, 0.6815]), 'c2st_dap': tensor([0.4790, 0.4940])}\n" + "{'ks_pvals': tensor([0., 0.]), 'c2st_ranks': tensor([0.6890, 0.6880]), 'c2st_dap': tensor([0.5100, 0.5065])}\n" ] }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHACAYAAAAyfdnSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8WgzjOAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAk6ElEQVR4nO3deXCV9b0/8E8gJCwSgqAsioiKgFQRN0rduLcoUrVovS3Xceoy9metMNa6tmNd2kpxQVt1XLpcxettVbRVqyJqi8qASpWKOyiIYAsUqyIgQkjy/f3RempkX5KT5Pt6zWTGc57v85zPOQ/5+M73WU5JSikFAADZaFHsAgAAaFgCIABAZgRAAIDMCIAAAJkRAAEAMiMAAgBkRgAEAMiMAAgAkJnSTRlUW1sbCxcujPbt20dJSUl91wRkKKUUy5cvj+7du0eLFs3vb1N9FKhvm9NHNykALly4MHr06LFNigPYkHfffTd23nnnYpexzemjQEPZlD66SQGwffv2hQ1WVFRsfWUAn7Ns2bLo0aNHod80N/ooUN82p49uUgD89HBFRUWFxgXUq+Z6eFQfBRrKpvTR5neiDQAAGyQAAgBkRgAEAMjMJp0DCE1RTU1NrFmzpthl8C8tW7aM0tLSZnuOH0BTIgDSLK1YsSL++te/Rkqp2KXwGW3bto1u3bpFWVlZsUsByJoASLNTU1MTf/3rX6Nt27axww47mHFqBFJKUVVVFe+9917Mmzcvevfu3Sxv9gzQVAiANDtr1qyJlFLssMMO0aZNm2KXw7+0adMmWrVqFfPnz4+qqqpo3bp1sUsCyJY/wWm2zPw1Pmb9ABoH3RgAIDMCIABAZgRAaOROPfXUOO6444pdBgDNiItAyMaUESM2eexhDz5Yj5U0bpdffnk88MADMXPmzA2Oe+211+LSSy+NGTNmxPz58+NnP/tZnHPOOQ1SIwBbxwwg1IOqqqpil1DvVq5cGbvttltceeWV0bVr12KXA8BmEABhGxgyZEiMHj06zjnnnOjcuXMMGzYsIiKuu+662HvvvaNdu3bRo0ePOOuss2LFihWF9caPHx+VlZXx2GOPRb9+/WK77baLo446KhYtWrTe13r++edjhx12iKuuumqdy6uqqmL06NHRrVu3aN26dfTs2TPGjh1bWL506dL41re+FTvssENUVFTEf/7nf8ZLL71UqOdHP/pRvPTSS1FSUhIlJSUxfvz4db7OgQceGNdcc03893//d5SXl2/uRwZAEQmAsI3ccccdUVZWFtOmTYtbb701Iv5525MbbrghXnvttbjjjjti8uTJceGFF9ZZb+XKlTFu3Li48847Y8qUKbFgwYI4//zz1/kakydPjiOOOCLGjBkTF1100TrH3HDDDfGHP/whJkyYELNnz47f/OY3seuuuxaWf/3rX48lS5bEo48+GjNmzIj99tsvvvzlL8cHH3wQI0eOjPPOOy/69+8fixYtikWLFsXIkSO3zQcEQKPhHEDYRnr37h1XX311nec+e07crrvuGldccUWceeaZcfPNNxeeX7NmTdx6662x++67R0TE6NGj48c//vFa27///vvj5JNPjl//+tcbDGULFiyI3r17xyGHHBIlJSXRs2fPwrKpU6fGn//851iyZElh1m7cuHHxwAMPxH333RdnnHFGtKqqihY1NdHuXzOV1StWxPJ/rd9+jz026zMByNHGzjlvDOeZC4Cwjey///5rPffHP/4xxo4dG7NmzYply5ZFdXV1rFq1KlauXBlt27aNiH9+P+6n4S8iolu3brFkyZI625k+fXo8/PDDcd999230iuBTTz01jjjiiOjTp08cddRRccwxx8SRRx4ZEREvvfRSrFixIjp16lRnnU8++STmzp27JW8bgCZIAIRtpF27dnUev/POO3HMMcfEd77znRgzZkxsv/32MXXq1Dj99NOjqqqqEABbtWpVZ72SkpJIKdV5bvfdd49OnTrFbbfdFkcfffRa63zWfvvtF/PmzYtHH300/vjHP8Y3vvGNGDp0aNx3332xYsWK6NatWzz11FNrrVdZWbllbxyAJkcAhHoyY8aMqK2tjWuvvbbwFWgTJkzYom117tw5fv/738eQIUPiG9/4RkyYMGGDIbCioiJGjhwZI0eOjP/6r/+Ko446Kj744IPYb7/9YvHixVFaWlrnvMDPKmvVKmpqa7eoTgCaBheBQD3ZY489Ys2aNXHjjTfG22+/HXfeeWfh4pAtseOOO8bkyZNj1qxZceKJJ0Z1dfU6x1133XVx1113xaxZs+LNN9+Me++9N7p27RqVlZUxdOjQGDx4cBx33HHx+OOPxzvvvBPPPPNMXHzxxfHCCy9ERMQuO+0U8//613j59dfj/Q8+iNWrV6/zdaqqqmLmzJkxc+bM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Rx99dFRVVcUzzzwTd9xxR4wfPz4uvfTSYryVLH388ccxYMCAuOmmm9a5/Oqrr44bbrghbr311pg+fXq0a9cuhg0bFqtWrSqMOemkk+K1116LJ554Ih5++OGYMmVKnHHGGYXly5YtiyOPPDJ69uwZM2bMiGuuuSYuv/zy+OUvf1nv7y9H+mjTo482fc2il6YiOuigg9KoUaMKj2tqalL37t3T2LFji1gV63PZZZelAQMGrHPZ0qVLU6tWrdK9995beO6NN95IEZGeffbZlFJKEydOTC1atEiLFy8ujLnllltSRUVFWr16db3WztoiIt1///2Fx7W1talr167pmmuuKTy3dOnSVF5enu66666UUkqvv/56ioj0/PPPF8Y8+uijqaSkJP3tb39LKaV08803p44dO9bZpxdddFHq06dPPb+jPOmjTYs+2vw01V5atBnAqqqqmDFjRgwdOrTwXIsWLWLo0KHx7LPPFqssNuKtt96K7t27x2677RYnnXRSLFiwICIiZsyYEWvWrKmzP/v27Ru77LJLYX8+++yzsffee0eXLl0KY4YNGxbLli2L1157rWHfCGuZN29eLF68uM4+7NChQwwaNKjOPqysrIwDDjigMGbo0KHRokWLmD59emHMYYcdFmVlZYUxw4YNi9mzZ8eHH37YQO8mD/po06SPNm9NpZcWLQD+4x//iJqamjr/iCMiunTpEosXLy5SVWzIoEGDYvz48TFp0qS45ZZbYt68eXHooYfG8uXLY/HixVFWVhaVlZV11vns/ly8ePE69/enyyiuT/fBhn4nFy9eHDvuuGOd5aWlpbH99tvbz0WgjzY9+mjz11R6aelWb4FsDB8+vPDf++yzTwwaNCh69uwZEyZMiDZt2hSxMoCmQR+lsSjaDGDnzp2jZcuWa13d9Pe//z26du1apKrYHJWVlbHnnnvGnDlzomvXrlFVVRVLly6tM+az+7Nr167r3N+fLqO4Pt0HG/qd7Nq161oXF1RXV8cHH3xgPxeBPtr06aPNT1PppUULgGVlZbH//vvHn/70p8JztbW18ac//SkGDx5crLLYDCtWrIi5c+dGt27dYv/9949WrVrV2Z+zZ8+OBQsWFPbn4MGD45VXXqnzj/6JJ56IioqK2GuvvRq8furq1atXdO3atc4+XLZsWUyfPr3OPly6dGnMmDGjMGby5MlRW1sbgwYNKoyZMmVKrFmzpjDmiSeeiD59+kTHjh0b6N3kQR9t+vTR5qfJ9NJtcinJFrr77rtTeXl5Gj9+fHr99dfTGWeckSorK+tc3UTjcd5556WnnnoqzZs3L02bNi0NHTo0de7cOS1ZsiSllNKZZ56ZdtlllzR58uT0wgsvpMGDB6fBgwcX1q+urk5f+MIX0pFHHplmzpyZJk2alHbYYYf0gx/8oFhvKTvLly9PL774YnrxxRdTRKTrrrsuvfjii2n+/PkppZSuvPLKVFlZmR588MH08ssvpxEjRqRevXqlTz75pLCNo446Kg0cODBNnz49TZ06NfXu3TudeOKJheVLly5NXbp0Sd/85jfTq6++mu6+++7Utm3b9Itf/KLB328O9NGmRR9tHppDLy1qAEwppRtvvDHtsssuqaysLB100EHpueeeK3ZJrMfIkSNTt27dUllZWdppp53SyJEj05w5cwrLP/nkk3TWWWeljh07prZt26bjjz8+LVq0qM423nnnnTR8+PDUpk2b1Llz53TeeeelNWvWNPRbydaTTz6ZImKtn1NOOSWl9M/bF1xyySWpS5cuqby8PH35y19Os2fPrrON999/P5144olpu+22SxUVFem0005Ly5cvrzPmpZdeSoccckgqLy9PO+20U7ryyisb6i1mSR9tOvTR5qE59NKSlFLa+nlEAACaiqJ/FRwAAA1LAAQAyIwACACQGQEQACAzAiAAQGYEQACAzAiAAACZEQAzdPnll8e+++5b7DI226677ho///nPt2ob48ePj8rKysLjpvpZAMXVVHuHPsqnBMAm4KmnnoqSkpK1viB8S51//vl1vqMwZ/X1WUyZMiWOPfbY6N69e5SUlMQDDzywzV8D2HT6aP2pr89i7NixceCBB0b79u1jxx13jOOOOy5mz569zV8nVwJgRlJKUV1dHdttt1106tRpq7b12S+n3hbjimVbfBbr8vHHH8eAAQPipptu2ubbBopHH11bffXRp59+OkaNGhXPPfdcPPHEE7FmzZo48sgj4+OPP97mr5UjAXAbGDJkSIwePTpGjx4dHTp0iM6dO8cll1wSn/2WvQ8//DBOPvnk6NixY7Rt2zaGDx8eb731VmH5/Pnz49hjj42OHTtGu3bton///jFx4sR455134j/+4z8iIqJjx45RUlISp556akRE1NbWxtixY6NXr17Rpk2bGDBgQNx3332FbX76F++jjz4a+++/f5SXl8fUqVPXmq6vra2NH//4x7HzzjtHeXl57LvvvjFp0qTC8nfeeSdKSkrinnvuicMPPzxat24dv/nNb9b5WZSUlMQtt9wSX/3qV6Ndu3YxZsyYqKmpidNPP71QZ58+feL666+vs96pp54axx13XIwbNy66desWnTp1ilGjRm2w8f3617+OysrKDf7lOX78+Nhll12ibdu2cfzxx8f7779fZ/nnP4tP6/jpT38aXbp0icrKyvjxj38c1dXVccEFF8T2228fO++8c9x+++3rfc2IiOHDh8cVV1wRxx9//AbHAf+kj/6bPvpPkyZNilNPPTX69+8fAwYMiPHjx8eCBQtixowZG1yPTbTNvlU4Y4cffnjabrvt0ne/+900a9as9H//93+pbdu26Ze//GVhzFe/+tXUr1+/NGXKlDRz5sw0bNiwtMcee6SqqqqUUkpHH310OuKII9LLL7+c5s6dmx566KH09NNPp+rq6vS73/0uRUSaPXt2WrRoUVq6dGlKKaUrrrgi9e3bN02aNCnNnTs33X777am8vDw99dRTKaV/f1n1Pvvskx5//PE0Z86c9P7776fLLrssDRgwoFDbddddlyoqKtJdd92VZs2alS688MLUqlWr9Oabb6aUUpo3b16KiLTrrrum3/3ud+ntt99OCxcuXOdnERFpxx13TLfddluaO3dumj9/fqqqqkqXXnppev7559Pbb79d+HzuueeewnqnnHJKqqioSGeeeWZ644030kMPPbTWZ9izZ8/0s5/9LKWU0lVXXZU6deqUpk+fvt798txzz6UWLVqkq666Ks2ePTtdf/31qbKyMnXo0KEw5vOfxSmnnJLat2+fRo0alWbNmpX+53/+J0VEGjZsWBozZkx68803009+8pPUqlWr9O67727gX0Xdz+T+++/fpLGQK3303/TRdXvrrbdSRKRXXnllk9dh/QTAbeDwww9P/fr1S7W1tYXnLrrootSvX7+UUkpvvvlmiog0bdq0wvJ//OMfqU2bNmnChAkppZT23nvvdPnll69z+582oA8//LDw3KpVq1Lbtm3TM888U2fs6aefnk488cQ66z3wwAN1xnz+l7V79+5pzJgxdcYceOCB6ayzzkop/btx/fznP9/oZxER6ZxzztnouFGjRqUTTjih8PiUU05JPXv2TNXV1YXnvv71r6eRI0cWHn/auC688MLUrVu39Oqrr27wNU488cT0la98pc5zI0eO3Gjj6tmzZ6qpqSk816dPn3TooYcWHldXV6d27dqlu+66a6PvMyUBEDaFPvpv+ujaampq0tFHH50OPvjgTRrPxpU24GRjs/bFL34xSkpKCo8HDx4c1157bdTU1MQbb7wRpaWlMWjQoMLyTp06RZ8+feKNN96IiIizzz47vvOd78Tjjz8eQ4cOjRNOOCH22Wef9b7enDlzYuXKlXHEEUfUeb6qqioGDhxY57kDDjhgvdtZtmxZLFy4MA4++OA6zx988MHx0ksvbfJ2Njbupptuittuuy0WLFgQn3zySVRVVa111Vj//v2jZcuWhcfdunWLV155pc6Ya6+9Nj7++ON44YUXYrfddttgHW+88cZah2AHDx5c57DMuvTv3z9atPj32RFdunSJL3zhC4XHLVu2jE6dOsWSJUs2uB1g8+ijGx6Xcx8dNWpUvPrqqzF16tRNGs/GOQewkfjWt74Vb7/9dnzzm9+MV155JQ444IC48cYb1zt+xYoVERHxyCOPxMyZMws/r7/+ep3zVyIi2rVrt01q3NTtfH7c3XffHeeff36cfvrp8fjjj8fMmTPjtNNOi6qqqjrjWrVqVedxSUlJ1NbW1nnu0EMPjZqampgwYcIWvINNs646NqU2oLj00ebZR0ePHh0PP/xwPPnkk7Hzzjtv0zpzJgBuI9OnT6/z+LnnnovevXtHy5Yto1+/flFdXV1nzPvvvx+zZ8+Ovfbaq/Bcjx494swzz4zf//73cd5558WvfvWriIgoKyuLiIiamprC2L322ivKy8tjwYIFsccee9T56dGjxybXXVFREd27d49p06bVeX7atGl1atsa06ZNiy996Utx1llnxcCBA2OPPfaIuXPnbtG2DjrooHj00Ufjpz/9aYwbN26DY/v167fO/QI0Tvro+uXYR1NKMXr06Lj//vtj8uTJ0atXrwZ53Vw4BLyNLFiwIM4999z49re/HX/5y1/ixhtvjGuvvTYiInr37h0jRoyI//f//l/84he/iPbt28f3v//92GmnnWLEiBEREXHOOefE8OHDY88994wPP/wwnnzyyejXr19ERPTs2TNKSkri4Ycfjq985SvRpk2baN++fZx//vnxve99L2pra+OQQw6Jjz76KKZNmxYVFRVxyimnbHLtF1xwQVx22WWx++67x7777hu33357zJw5c71XqG2u3r17x//+7//GY489Fr169Yo777wznn/++S3+Zf7Sl74UEydOjOHDh0dpaWmcc8456xx39tlnx8EHHxzjxo2LESNGxGOPPbbRwxbbyooVK2LOnDmFx/PmzYuZM2fG9ttvH7vsskuD1ABNjT66fjn20VGjRsVvf/vbePDBB6N9+/axePHiiIjo0KFDtGnTpkFqaM7MAG4jJ598cnzyySdx0EEHxahRo+K73/1unHHGGYXlt99+e+y///5xzDHHxODBgyOlFBMnTixMidfU1MSoUaOiX79+cdRRR8Wee+4ZN998c0RE7LTTTvGjH/0ovv/970eXLl1i9OjRERHxk5/8JC655JIYO3ZsYb1HHnlksxvC2WefHeeee26cd955sffee8ekSZPiD3/4Q/Tu3XubfDbf/va342tf+1qMHDkyBg0aFO+//36cddZZW7XNQw45JB555JH44Q9/uN5DPF/84hfjV7/6VVx//fUxYMCAePzxx+OHP/zhVr3upnrhhRdi4MCBhfOIzj333Bg4cGBceumlDfL60BTpo+uXYx+95ZZb4qOPPoohQ4ZEt27dCj/33HNPg7x+c1eS0mdussQWGTJkSOy7775b/fU6ALnSR6FhmQEEAMiMAAgAkBmHgAEAMmMGEAAgMwIgAEBmBEAAgMwIgAAAmREAAQAyIwACAGRGAAQAyIwACACQGQEQACAz/x9SXO+MQ2TrkwAAAABJRU5ErkJggg==", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHACAYAAAAyfdnSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAkxUlEQVR4nO3deZCU5Z3A8d/AMMMhwyAohyKioiBRxIsQL3aDolGDxk1Yy4pHmTVGKGM8kzIeMRI80EQtjxyruG6iookaFa8ElRKVKBFv8EIwAYJBERBhmJln/8jaccIpzEzP9PP5VFGV7vft7qf7dZ58+33f7i5LKaUAACAbbYo9AAAAmpcABADIjAAEAMiMAAQAyIwABADIjAAEAMiMAAQAyIwABADITPnGrFRfXx/z58+Pzp07R1lZWVOPCchQSimWLVsWvXv3jjZtSu+9qXkUaGqfZx7dqACcP39+9OnTp1EGB7A+7733Xmy77bbFHkajM48CzWVj5tGNCsDOnTsX7rCqqmrzRwbwL5YuXRp9+vQpzDelxjwKNLXPM49uVAB+eriiqqrKxAU0qVI9PGoeBZrLxsyjpXeiDQAA6yUAAQAyIwABADKzUecAQmtUV1cXq1evLvYw+H9t27aN8vLykj3HD6A1EYCUpOXLl8df/vKXSCkVeyh8RseOHaNXr15RUVFR7KEAZE0AUnLq6uriL3/5S3Ts2DG22more5xagJRS1NTUxPvvvx9z5syJ/v37l+SXPQO0FgKQkrN69epIKcVWW20VHTp0KPZw+H8dOnSIdu3axdy5c6Ompibat29f7CEBZMtbcEqWPX8tj71+AC2D2RgAIDMCEAAgMwIQWrgTTzwxjjrqqGIPA4AS4kMgZGPqqFEbve6B993XhCNp2S6++OK49957Y+bMmetd79VXX40LL7wwZsyYEXPnzo2f/vSnccYZZzTLGAHYPPYAQhOoqakp9hCa3IoVK2KHHXaIyy67LHr27Fns4QDwOQhAaATDhw+PsWPHxhlnnBHdu3ePkSNHRkTE1VdfHbvttlt06tQp+vTpE6eddlosX768cLuJEydGdXV1PPLIIzFw4MDYYost4tBDD40FCxas87Gee+652GqrreLyyy9f6/KampoYO3Zs9OrVK9q3bx99+/aN8ePHF5YvWbIkvvWtb8VWW20VVVVV8e///u/x4osvFsbzox/9KF588cUoKyuLsrKymDhx4lofZ5999okrr7wy/vM//zMqKys/70sGQBEJQGgkt956a1RUVMS0adPipptuioh/fO3JtddeG6+++mrceuutMWXKlDj33HMb3G7FihUxYcKEuO2222Lq1Kkxb968OPvss9f6GFOmTImDDz44xo0bF+edd95a17n22mvj97//fUyaNClmz54dv/71r2P77bcvLP/6178eixYtioceeihmzJgRe+65Z3z5y1+ODz74IEaPHh1nnXVWDBo0KBYsWBALFiyI0aNHN84LBECL4RxAaCT9+/ePK664osF1nz0nbvvtt49LL700Tj311LjhhhsK169evTpuuumm2HHHHSMiYuzYsXHJJZescf/33HNPHH/88fGrX/1qvVE2b9686N+/f+y///5RVlYWffv2LSx76qmn4k9/+lMsWrSosNduwoQJce+998bdd98dp5xySrSrqYk2dXXR6f/3VNYuXx7L/v/2nXfa6XO9JgA52tA55y3hPHMBCI1kr732WuO6P/zhDzF+/PiYNWtWLF26NGpra2PlypWxYsWK6NixY0T84/dxP42/iIhevXrFokWLGtzP9OnT44EHHoi77757g58IPvHEE+Pggw+OXXbZJQ499NA44ogj4pBDDomIiBdffDGWL18e3bp1a3CbTz75JN5+++1NedoAtEICEBpJp06dGlx+991344gjjojvfOc7MW7cuNhyyy3jqaeeipNPPjlqamoKAdiuXbsGtysrK4uUUoPrdtxxx+jWrVvcfPPNcfjhh69xm8/ac889Y86cOfHQQw/FH/7wh/jGN74RI0aMiLvvvjuWL18evXr1iieeeGKN21VXV2/aEweg1RGA0ERmzJgR9fX1cdVVVxV+Am3SpEmbdF/du3eP3/3udzF8+PD4xje+EZMmTVpvBFZVVcXo0aNj9OjR8R//8R9x6KGHxgcffBB77rlnLFy4MMrLyxucF/hZFe3aRV19/SaNE4DWwYdAoInstNNOsXr16rjuuuvinXfeidtuu63w4ZBNsfXWW8eUKVNi1qxZceyxx0Ztbe1a17v66qvj9ttvj1mzZsUbb7wRd911V/Ts2TOqq6tjxIgRMWzYsDjqqKPi0UcfjXfffTeefvrpOP/88+P555+PiIjtttkm5v7lL/HSa6/F4g8+iFWrVq31cWpqamLmzJkx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t902KisrY4899oiHH364sPzdd9+NsrKyuPPOO+Oggw6K9u3bx69//eu1vhZlZWVx4403xle/+tXo1KlTjBs3Lurq6uLkk08ujHOXXXaJa665psHtTjzxxDjqqKNiwoQJ0atXr+jWrVuMGTNmvRPfr371q6iurl7vO8+JEyfGdtttFx07doyjjz46Fi9e3GD5v74Wn47jJz/5SfTo0SOqq6vjkksuidra2jjnnHNiyy23jG233TZuueWWdT5mRMRhhx0Wl156aRx99NHrXQ/4B/PoP5lH/+Hhhx+OE088MQYNGhSDBw+OiRMnxrx582LGjBnrvR0bqdF+VThjBx10UNpiiy3Sd7/73TRr1qz0v//7v6ljx47pF7/4RWGdr371q2ngwIFp6tSpaebMmWnkyJFpp512SjU1NSmllA4//PB08MEHp5deeim9/fbb6f77709PPvlkqq2tTb/97W9TRKTZs2enBQsWpCVLlqSUUrr00kvTgAED0sMPP5zefvvtdMstt6TKysr0xBNPpJT++WPVu+++e3r00UfTW2+9lRYvXpwuuuiiNHjw4MLYrr766lRVVZVuv/32NGvWrHTuueemdu3apTfeeCOllNKcOXNSRKTtt98+/fa3v03vvPNOmj9//lpfi4hIW2+9dbr55pvT22+/nebOnZtqamrShRdemJ577rn0zjvvFF6fO++8s3C7E044IVVVVaVTTz01vf766+n+++9f4zXs27dv+ulPf5pSSunyyy9P3bp1S9OnT1/ndnn22WdTmzZt0uWXX55mz56drrnmmlRdXZ26dOlSWOdfX4sTTjghde7cOY0ZMybNmjUr/fd//3eKiDRy5Mg0bty49MYbb6Qf//jHqV27dum9995bz38VDV+Te+65Z6PWhVyZR//JPLp2b775ZoqI9PLLL2/0bVg3AdgIDjrooDRw4MBUX19fuO68885LAwcOTCml9MYbb6SISNOmTSss//vf/546dOiQJk2alFJKabfddksXX3zxWu//0wnoww8/LFy3cuXK1LFjx/T00083WPfkk09Oxx57bIPb3XvvvQ3W+dc/1t69e6dx48Y1WGefffZJp512WkrpnxPXz372sw2+FhGRzjjjjA2uN2bMmHTMMccULp9wwgmpb9++qba2tnDd17/+9TR69OjC5U8nrnPPPTf16tUrvfLKK+t9jGOPPTZ95StfaXDd6NGjNzhx9e3bN9XV1RWu22WXXdIBBxxQuFxbW5s6deqUbr/99g0+z5QEIGwM8+g/mUfXVFdXlw4//PC03377bdT6bFh5M+5sLGlf/OIXo6ysrHB52LBhcdVVV0VdXV28/vrrUV5eHkOHDi0s79atW+yyyy7x+uuvR0TE6aefHt/5znfi0UcfjREjRsQxxxwTu++++zof76233ooVK1bEwQcf3OD6mpqaGDJkSIPr9t5773Xez9KlS2P+/Pmx3377Nbh+v/32ixdffHGj72dD611//fVx8803x7x58+KTTz6JmpqaNT41NmjQoGjbtm3hcq9eveLll19usM5VV10VH3/8cTz//POxww47rHccr7/++hqHYIcNG9bgsMzaDBo0KNq0+efZET169IgvfOELhctt27aNbt26xaJFi9Z7P8DnYx5d/3o5z6NjxoyJV155JZ566qmNWp8Ncw5gC/Gtb30r3nnnnfjmN78ZL7/8cuy9995x3XXXrXP95cuXR0TEgw8+GDNnziz8e+211xqcvxIR0alTp0YZ48bez7+ud8cdd8TZZ58dJ598cjz66KMxc+bMOOmkk6KmpqbBeu3atWtwuaysLOrr6xtcd8ABB0RdXV1MmjRpE57BxlnbODZmbEBxmUdLcx4dO3ZsPPDAA/H444/Htttu26jjzJkAbCTTp09vcPnZZ5+N/v37R9u2bWPgwIFRW1vbYJ3FixfH7NmzY9dddy1c16dPnzj11FPjd7/7XZx11lnxy1/+MiIiKioqIiKirq6usO6uu+4alZWVMW/evNhpp50a/OvTp89Gj7uqqip69+4d06ZNa3D9tGnTGoxtc0ybNi2+9KUvxWmnnRZDhgyJnXbaKd5+++1Nuq999903HnroofjJT34SEyZMWO+6AwcOXOt2AVom8+i65TiPppRi7Nixcc8998SUKVOiX79+zfK4uXAIuJHMmzcvzjzzzPj2t78df/7zn+O6666Lq666KiIi+vfvH6NGjYr/+q//ip///OfRuXPn+P73vx/bbLNNjBo1KiIizjjjjDjssMNi5513jg8//DAef/zxGDhwYERE9O3bN8rKyuKBBx6Ir3zlK9GhQ4fo3LlznH322fG9730v6uvrY//994+PPvoopk2bFlVVVXHCCSds9NjPOeecuOiii2LHHXeMPfbYI2655ZaYOXPmOj+h9nn1798//ud//iceeeSR6NevX9x2223x3HPPbfIf85e+9KWYPHlyHHbYYVFeXh5nnHHGWtc7/fTTY7/99osJEybEqFGj4pFHHtngYYvGsnz58njrrbcKl+fMmRMzZ86MLbfcMrbbbrtmGQO0NubRdctxHh0zZkz85je/ifvuuy86d+4cCxcujIiILl26RIcOHZplDKXMHsBGcvzxx8cnn3wS++67b4wZMya++93vximnnFJYfsstt8Ree+0VRxxxRAwbNixSSjF58uTCLvG6uroYM2ZMDBw4MA499NDYeeed44YbboiIiG222SZ+9KMfxfe///3o0aNHjB07NiIifvzjH8cFF1wQ48ePL9zuwQcf/NwTwumnnx5nnnlmnHXWWbHbbrvFww8/HL///e+jf//+jfLafPvb346vfe1rMXr06Bg6dGgsXrw4TjvttM26z/333z8efPDB+OEPf7jOQzxf/OIX45e//GVcc801MXjw4Hj00Ufjhz/84WY97sZ6/vnnY8iQIYXziM4888wYMmRIXHjhhc3y+NAamUfXLcd59MYbb4yPPvoohg8fHr169Sr8u/POO5vl8UtdWUqf+ZIlNsnw4cNjjz322Oyf1wHIlXkUmpc9gAAAmRGAAACZcQgYACAz9gACAGRGAAIAZEYAAgBkRgACAGRGAAIAZEYAAgBkRgACAGRGAAIAZEYAAgBk5v8A/Rf4Jy9jO4MAAAAASUVORK5CYII=", "text/plain": [ "
" ] @@ -721,11 +1222,12 @@ }, { "cell_type": "markdown", + "id": "794893d9-ec44-46fc-9234-9975327e62b7", "metadata": {}, "source": [ - "A similar behavior is observed, but this time we see an upshot of ranks to higher values. Because we have shifted the expected value of the posterior to smaller values, we see an upshot in high rank counts.\n", + "A similar behavior is observed, but this time we see an upshot of ranks to higher values of posterior rank. Because we have shifted the expected value of the posterior to smaller values, we see an upshot in high rank counts.\n", "\n", - "It is interesting to see that the historgams obtained provide very convincing evidence that this is not a uniform distribution.\n", + "The historgams above provide convincing evidence that this is not a uniform distribution.\n", "\n", "To conlude at this point, **the rank distribution is capable of identifying pathologies of the estimated posterior**:\n", "\n", @@ -737,16 +1239,18 @@ }, { "cell_type": "markdown", + "id": "88bce62e-63b9-46b8-a3c5-a013e13e9cd0", "metadata": {}, "source": [ "## A dispersed posterior\n", "\n", - "In this scenario we emulate the situation if our posterior estimates incorrectly with a dispersion, i.e. the posterior is too wide or too thin. We reuse our trained NPE posterior from above and wrap it so that all samples return a dispersion by 100% more wide (`2`), i.e. the variance is overestimated by a factor of 2.\n" + "In this scenario we emulate the situation if our posterior estimates incorrectly with a dispersion, i.e. the posterior is too wide or too thin. We reuse our trained NPE posterior from above and wrap it so that all samples return a dispersion by 100% more wide (`dispersion=2.0`), i.e. the variance is overestimated by a factor of 2.\n" ] }, { "cell_type": "code", - "execution_count": 22, + "execution_count": null, + "id": "f12d3bde-920c-4811-997d-49b30202560c", "metadata": {}, "outputs": [], "source": [ @@ -758,13 +1262,14 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, + "id": "20f63dba-afd6-4614-9f77-5b6a2dccf63d", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "8b09d915906348fea7a1f7fb73fe4564", + "model_id": "d2cacb7822124557b78852164d45cb72", "version_major": 2, "version_minor": 0 }, @@ -775,24 +1280,16 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/janteusen/qode/sbi/sbi/analysis/sbc.py:359: UserWarning: std(): degrees of freedom is <= 0. Correction should be strictly less than the reduction factor (input numel divided by output numel). (Triggered internally at /Users/runner/work/pytorch/pytorch/pytorch/aten/src/ATen/native/ReduceOps.cpp:1760.)\n", - " if (c2st_scores.std(0) > 0.05).any():\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "{'ks_pvals': tensor([8.1346e-08, 1.3010e-10]), 'c2st_ranks': tensor([0.6115, 0.6020]), 'c2st_dap': tensor([0.4990, 0.4785])}\n" + "{'ks_pvals': tensor([1.0876e-09, 1.3724e-12]), 'c2st_ranks': tensor([0.6015, 0.6150]), 'c2st_dap': tensor([0.5055, 0.5005])}\n" ] }, { "data": { - "image/png": "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7TU1NXHYYYdFVVVVPPHEE3HjjTfGlClT4rzzzivGXcnSRx99FEOGDImrr756rdsvueSSuPLKK+O6666LWbNmRZcuXWLkyJGxatWqwphjjz02XnrppXjkkUfi3nvvjenTp8dJJ51U2L58+fI45JBDon///jF79uy49NJL44ILLojf/OY3TX7/cqSPtj76aOvXJnppKqJ99903jRs3rnC5pqYm9e3bN02aNKmIVbEu559/fhoyZMhaty1btix16NAh3XbbbYXrXnnllRQR6cknn0wppXT//fendu3apSVLlhTGXHvttamioiJ9+umnTVo7a4qIdOeddxYu19bWpt69e6dLL720cN2yZctSeXl5uvnmm1NKKb388sspItLTTz9dGPPAAw+kkpKS9I9//COllNI111yTunfvXuecnnPOOWngwIFNfI/ypI+2Lvpo29Nae2nRZgCrqqpi9uzZMWLEiMJ17dq1ixEjRsSTTz5ZrLJYj9deey369u0b22+/fRx77LGxaNGiiIiYPXt2rF69us753HnnnWObbbYpnM8nn3wydt111+jVq1dhzMiRI2P58uXx0ksvNe8dYQ0LFy6MJUuW1DmHm222WQwdOrTOOaysrIy99967MGbEiBHRrl27mDVrVmHMgQceGGVlZYUxI0eOjHnz5sUHH3zQTPcmD/po66SPtm2tpZcWLQC+++67UVNTU+dJHBHRq1evWLJkSZGqoj5Dhw6NKVOmxIMPPhjXXnttLFy4MA444IBYsWJFLFmyJMrKyqKysrLObT5/PpcsWbLW8/3ZNorrs3NQ32tyyZIlseWWW9bZXlpaGptvvrnzXAT6aOujj7Z9raWXlm7yHsjGqFGjCv+92267xdChQ6N///4xderU6NSpUxErA2gd9FFaiqLNAPbs2TPat2+/xreb/vnPf0bv3r2LVBUborKyMnbaaaeYP39+9O7dO6qqqmLZsmV1xnz+fPbu3Xut5/uzbRTXZ+egvtdk79691/hyQXV1dbz//vvOcxHoo62fPtr2tJZeWrQAWFZWFnvttVf85S9/KVxXW1sbf/nLX2LYsGHFKosNsHLlyliwYEH06dMn9tprr+jQoUOd8zlv3rxYtGhR4XwOGzYsXnjhhTpP+kceeSQqKipil112afb6qWu77baL3r171zmHy5cvj1mzZtU5h8uWLYvZs2cXxkybNi1qa2tj6NChhTHTp0+P1atXF8Y88sgjMXDgwOjevXsz3Zs86KOtnz7a9rSaXtooXyXZSLfccksqLy9PU6ZMSS+//HI66aSTUmVlZZ1vN9FynHHGGemxxx5LCxcuTDNnzkwjRoxIPXv2TEuXLk0ppXTyySenbbbZJk2bNi0988wzadiwYWnYsGGF21dXV6cvfelL6ZBDDklz5sxJDz74YNpiiy3Sj3/842LdpeysWLEiPfvss+nZZ59NEZEuv/zy9Oyzz6Y333wzpZTSRRddlCorK9Pdd9+dnn/++TR69Oi03XbbpU8++aSwj0MPPTTtscceadasWWnGjBlpwIAB6ZhjjilsX7ZsWerVq1f6zne+k1588cV0yy23pM6dO6df//rXzX5/c6CPti76aNvQFnppUQNgSildddVVaZtttkllZWVp3333TU899VSxS2IdxowZk/r06ZPKysrSVlttlcaMGZPmz59f2P7JJ5+kU045JXXv3j117tw5HXXUUentt9+us4833ngjjRo1KnXq1Cn17NkznXHGGWn16tXNfVey9eijj6aIWOPv+OOPTyn9a/mCc889N/Xq1SuVl5enr33ta2nevHl19vHee++lY445JnXt2jVVVFSkE044Ia1YsaLOmOeeey7tv//+qby8PG211Vbpoosuaq67mCV9tPXQR9uGttBLS1JKadPnEQEAaC2K/lNwAAA0LwEQACAzAiAAQGYEQACAzAiAAACZEQABADIjAAIAZEYAzNAFF1wQu+++e7HL2GDbbrtt/OpXv9qkfUyZMiUqKysLl1vrYwEUV2vtHfoonxEAW4HHHnssSkpK1viB8I115pln1vmNwpw11WMxffr0OOKII6Jv375RUlISd911V6MfA2g4fbTpNNVjMWnSpNhnn32iW7duseWWW8aRRx4Z8+bNa/Tj5EoAzEhKKaqrq6Nr167Ro0ePTdrX53+cujHGFUtjPBZr89FHH8WQIUPi6quvbvR9A8Wjj66pqfro448/HuPGjYunnnoqHnnkkVi9enUccsgh8dFHHzX6sXIkADaC4cOHx/jx42P8+PGx2WabRc+ePePcc8+Nz//K3gcffBDHHXdcdO/ePTp37hyjRo2K1157rbD9zTffjCOOOCK6d+8eXbp0icGDB8f9998fb7zxRnz1q1+NiIju3btHSUlJjB07NiIiamtrY9KkSbHddttFp06dYsiQIXH77bcX9vnZv3gfeOCB2GuvvaK8vDxmzJixxnR9bW1t/OxnP4utt946ysvLY/fdd48HH3ywsP2NN96IkpKSuPXWW+Oggw6Kjh07xu9///u1PhYlJSVx7bXXxje+8Y3o0qVLTJw4MWpqauLEE08s1Dlw4MC44oor6txu7NixceSRR8bkyZOjT58+0aNHjxg3bly9je93v/tdVFZW1vsvzylTpsQ222wTnTt3jqOOOiree++9Otu/+Fh8VscvfvGL6NWrV1RWVsbPfvazqK6ujrPOOis233zz2HrrreOGG25Y5zEjIkaNGhUXXnhhHHXUUfWOA/5FH/03ffRfHnzwwRg7dmwMHjw4hgwZElOmTIlFixbF7Nmz670dDdRovyqcsYMOOih17do1/eAHP0hz585N//d//5c6d+6cfvOb3xTGfOMb30iDBg1K06dPT3PmzEkjR45MO+64Y6qqqkoppXTYYYelgw8+OD3//PNpwYIF6Z577kmPP/54qq6uTn/84x9TRKR58+alt99+Oy1btiyllNKFF16Ydt555/Tggw+mBQsWpBtuuCGVl5enxx57LKX07x+r3m233dLDDz+c5s+fn9577710/vnnpyFDhhRqu/zyy1NFRUW6+eab09y5c9PZZ5+dOnTokF599dWUUkoLFy5MEZG23Xbb9Mc//jG9/vrrafHixWt9LCIibbnllun6669PCxYsSG+++WaqqqpK5513Xnr66afT66+/Xnh8br311sLtjj/++FRRUZFOPvnk9Morr6R77rlnjcewf//+6Ze//GVKKaWLL7449ejRI82aNWud5+Wpp55K7dq1SxdffHGaN29euuKKK1JlZWXabLPNCmO++Fgcf/zxqVu3bmncuHFp7ty56X/+539SRKSRI0emiRMnpldffTX9/Oc/Tx06dEhvvfVWPc+Kuo/JnXfe2aCxkCt99N/00bV77bXXUkSkF154ocG3Yd0EwEZw0EEHpUGDBqXa2trCdeecc04aNGhQSimlV199NUVEmjlzZmH7u+++mzp16pSmTp2aUkpp1113TRdccMFa9/9ZA/rggw8K161atSp17tw5PfHEE3XGnnjiiemYY46pc7u77rqrzpgvvlj79u2bJk6cWGfMPvvsk0455ZSU0r8b169+9av1PhYRkU477bT1jhs3blw6+uijC5ePP/741L9//1RdXV247lvf+lYaM2ZM4fJnjevss89Offr0SS+++GK9xzjmmGPS17/+9TrXjRkzZr2Nq3///qmmpqZw3cCBA9MBBxxQuFxdXZ26dOmSbr755vXez5QEQGgIffTf9NE11dTUpMMOOyztt99+DRrP+pU242Rjm/blL385SkpKCpeHDRsWl112WdTU1MQrr7wSpaWlMXTo0ML2Hj16xMCBA+OVV16JiIhTTz01vv/978fDDz8cI0aMiKOPPjp22223dR5v/vz58fHHH8fBBx9c5/qqqqrYY4896ly39957r3M/y5cvj8WLF8d+++1X5/r99tsvnnvuuQbvZ33jrr766rj++utj0aJF8cknn0RVVdUa3xobPHhwtG/fvnC5T58+8cILL9QZc9lll8VHH30UzzzzTGy//fb11vHKK6+s8RbssGHD6rwtszaDBw+Odu3+/emIXr16xZe+9KXC5fbt20ePHj1i6dKl9e4H2DD6aP3jcu6j48aNixdffDFmzJjRoPGsn88AthDf/e534/XXX4/vfOc78cILL8Tee+8dV1111TrHr1y5MiIi7rvvvpgzZ07h7+WXX67z+ZWIiC5dujRKjQ3dzxfH3XLLLXHmmWfGiSeeGA8//HDMmTMnTjjhhKiqqqozrkOHDnUul5SURG1tbZ3rDjjggKipqYmpU6duxD1omLXV0ZDagOLSR9tmHx0/fnzce++98eijj8bWW2/dqHXmTABsJLNmzapz+amnnooBAwZE+/btY9CgQVFdXV1nzHvvvRfz5s2LXXbZpXBdv3794uSTT4477rgjzjjjjPjtb38bERFlZWUREVFTU1MYu8suu0R5eXksWrQodtxxxzp//fr1a3DdFRUV0bdv35g5c2ad62fOnFmntk0xc+bM+MpXvhKnnHJK7LHHHrHjjjvGggULNmpf++67bzzwwAPxi1/8IiZPnlzv2EGDBq31vAAtkz66bjn20ZRSjB8/Pu68886YNm1abLfdds1y3Fx4C7iRLFq0KE4//fT43ve+F3/729/iqquuissuuywiIgYMGBCjR4+O//7v/45f//rX0a1bt/jRj34UW221VYwePToiIk477bQYNWpU7LTTTvHBBx/Eo48+GoMGDYqIiP79+0dJSUnce++98fWvfz06deoU3bp1izPPPDN++MMfRm1tbey///7x4YcfxsyZM6OioiKOP/74Btd+1llnxfnnnx877LBD7L777nHDDTfEnDlz1vkNtQ01YMCA+N///d946KGHYrvttoubbropnn766Y1+MX/lK1+J+++/P0aNGhWlpaVx2mmnrXXcqaeeGvvtt19Mnjw5Ro8eHQ899NB637ZoLCtXroz58+cXLi9cuDDmzJkTm2++eWyzzTbNUgO0NvrouuXYR8eNGxd/+MMf4u67745u3brFkiVLIiJis802i06dOjVLDW2ZGcBGctxxx8Unn3wS++67b4wbNy5+8IMfxEknnVTYfsMNN8Ree+0Vhx9+eAwbNixSSnH//fcXpsRrampi3LhxMWjQoDj00ENjp512imuuuSYiIrbaaqv46U9/Gj/60Y+iV69eMX78+IiI+PnPfx7nnntuTJo0qXC7++67b4Mbwqmnnhqnn356nHHGGbHrrrvGgw8+GH/6059iwIABjfLYfO9734tvfvObMWbMmBg6dGi89957ccopp2zSPvfff/+477774ic/+ck63+L58pe/HL/97W/jiiuuiCFDhsTDDz8cP/nJTzbpuA31zDPPxB577FH4HNHpp58ee+yxR5x33nnNcnxojfTRdcuxj1577bXx4YcfxvDhw6NPnz6Fv1tvvbVZjt/WlaT0uUWW2CjDhw+P3XfffZN/XgcgV/ooNC8zgAAAmREAAQAy4y1gAIDMmAEEAMiMAAgAkBkBEAAgMwIgAEBmBEAAgMwIgAAAmREAAQAyIwACAGRGAAQAyMz/A3wrCkFFZO6AAAAAAElFTkSuQmCC", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHACAYAAAAyfdnSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAlsklEQVR4nO3deXRV5bk/8CchJAwSg6AMijghIFWcKXWityhatWi9LdflqsOy16qwrHVsF3VoK8UBbdXl0OEqXm+ronWoiqgtKktUqlScQVEUW6Q4IaBCSPL+/ujPU1MgQUhykryfz1pZi3P2u/d+99knD9+8eypJKaUAACAbpcXuAAAALUsABADIjAAIAJAZARAAIDMCIABAZgRAAIDMCIAAAJkRAAEAMlO2Po3q6upi0aJF0a1btygpKWnuPgEZSinF8uXLo2/fvlFa2v7+NlVHgeb2ReroegXARYsWRb9+/ZqkcwANefvtt2OrrbYqdjeanDoKtJT1qaPrFQC7detWWGBlZeXG9wzg3yxbtiz69etXqDftjToKNLcvUkfXKwB+driisrJS4QKaVXs9PKqOAi1lfepo+zvRBgCABgmAAACZEQABADKzXucAQltUW1sbq1evLnY3+P86dOgQZWVl7fYcP4C2RACkXVqxYkX87W9/i5RSsbvC53Tp0iX69OkT5eXlxe4KQNYEQNqd2tra+Nvf/hZdunSJzTff3IhTK5BSiurq6nj33XdjwYIFMWDAgHZ5s2eAtkIApN1ZvXp1pJRi8803j86dOxe7O/x/nTt3jo4dO8Zbb70V1dXV0alTp2J3CSBb/gSn3TLy1/oY9QNoHVRjAIDMCIAAAJkRAKGVO/744+OII44odjcAaEdcBEI2Zowevd5t97/nnmbsSet24YUXxt133x1z5sxpsN1LL70U559/fsyePTveeuut+MUvfhGnn356i/QRgI1jBBCaQXV1dbG70Ow++eST2G677eLiiy+O3r17F7s7AHwBAiA0gREjRsS4cePi9NNPj549e8aoUaMiIuKKK66InXfeObp27Rr9+vWLU089NVasWFGYb/LkyVFVVRUPPvhgDB48ODbZZJM4+OCD45133lnnup5++unYfPPN45JLLlnr9Orq6hg3blz06dMnOnXqFP3794+JEycWpi9dujS++93vxuabbx6VlZXxH//xH/Hcc88V+vOTn/wknnvuuSgpKYmSkpKYPHnyWtez1157xWWXXRb/9V//FRUVFV/0IwOgiARAaCI33XRTlJeXx8yZM+P666+PiH/e9uSqq66Kl156KW666aaYPn16nHPOOfXm++STT2LSpElx8803x4wZM2LhwoVx1llnrXUd06dPjwMPPDAmTJgQ55577lrbXHXVVfHHP/4xpkyZEvPmzYvf/e53sc022xSmf+tb34olS5bEAw88ELNnz47dd989vva1r8UHH3wQY8aMiTPPPDOGDBkS77zzTrzzzjsxZsyYpvmAAGg1nANIs2nsnLv2dp7dgAED4tJLL6333ufPidtmm23ioosuipNPPjmuvfbawvurV6+O66+/PrbffvuIiBg3blz89Kc/XWP5d911Vxx77LHx29/+tsFQtnDhwhgwYEDsu+++UVJSEv379y9Me/zxx+Mvf/lLLFmypDBqN2nSpLj77rvjjjvuiJNOOik22WSTKCsrc1gXNkBDda85a15zrTe3Op4TARCayB577LHGe3/6059i4sSJMXfu3Fi2bFnU1NTEypUr45NPPokuXbpExD+fj/tZ+IuI6NOnTyxZsqTecmbNmhX33Xdf3HHHHY1eEXz88cfHgQceGAMHDoyDDz44DjvssDjooIMiIuK5556LFStWRI8ePerN8+mnn8brr7++IZsNQBskAEIT6dq1a73Xb775Zhx22GFxyimnxIQJE2KzzTaLxx9/PE488cSorq4uBMCOHTvWm6+kpCRSSvXe23777aNHjx5xww03xKGHHrrGPJ+3++67x4IFC+KBBx6IP/3pT/Htb387Ro4cGXfccUesWLEi+vTpE48++uga81VVVW3YhgPQ5giA0Exmz54ddXV1cfnllxcegTZlypQNWlbPnj3jzjvvjBEjRsS3v/3tmDJlSoMhsLKyMsaMGRNjxoyJ//zP/4yDDz44Pvjgg9h9991j8eLFUVZWVu+8wM8rLy+P2traDeonAG2Di0Cgmeywww6xevXquPrqq+ONN96Im2++uXBxyIbYYostYvr06TF37tw4+uijo6amZq3trrjiirjlllti7ty58eqrr8btt98evXv3jqqqqhg5cmQMHz48jjjiiHjooYfizTffjCeeeCLGjx8fzzzzTET881zFBQsWxJw5c+K9996LVatWrXU91dXVMWfOnJgzZ05UV1fH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zz47ampqWnpTsjVjxow4/PDDo2/fvlFSUhJ33313vekppTj//POjT58+0blz5xg5cmS89tpr9dp88MEHccwxx0RlZWVUVVXFiSeeGCtWrKjX5vnnn4/99tsvOnXqFP369YtLL720uTcta+po26GOtg/toZYWNQDedtttccYZZ8QFF1wQf/3rX2Po0KExatSoWLJkSTG7RQOGDBkS77zzTuHn8ccfL0z7wQ9+EPfee2/cfvvt8dhjj8WiRYvim9/8ZmF6bW1tHHrooVFdXR1PPPFE3HTTTTF58uQ4//zzi7EpWfr4449j6NChcc0116x1+qWXXhpXXXVVXH/99TFr1qzo2rVrjBo1KlauXFloc8wxx8RLL70UDz/8cNx3330xY8aMOOmkkwrTly1bFgcddFD0798/Zs+eHZdddllceOGF8etf/7rZty9H6mjbo462fe2ilqYi2nvvvdPYsWMLr2tra1Pfvn3TxIkTi9gr1uWCCy5IQ4cOXeu0pUuXpo4dO6bbb7+98N4rr7ySIiI9+eSTKaWUpk6dmkpLS9PixYsLba677rpUWVmZVq1a1ax9Z00Rke66667C67q6utS7d+902WWXFd5bunRpqqioSLfccktKKaWXX345RUR6+umnC20eeOCBVFJSkv7+97+nlFK69tprU/fu3evt03PPPTcNHDiwmbcoT+po26KOtj9ttZYWbQSwuro6Zs+eHSNHjiy8V1paGiNHjownn3yyWN2iEa+99lr07ds3tttuuzjmmGNi4cKFERExe/bsWL16db39OWjQoNh6660L+/PJJ5+MnXfeOXr16lVoM2rUqFi2bFm89NJLLbshrGHBggWxePHievtw0003jWHDhtXbh1VVVbHnnnsW2owcOTJKS0tj1qxZhTb7779/lJeXF9qMGjUq5s2bFx9++GELbU0e1NG2SR1t39pKLS1aAHzvvfeitra23pc4IqJXr16xePHiIvWKhgwbNiwmT54c06ZNi+uuuy4WLFgQ++23XyxfvjwWL14c5eXlUVVVVW+ez+/PxYsXr3V/fzaN4vpsHzT0O7l48eLYYost6k0vKyuLzTbbzH4uAnW07VFH27+2UkvLNnoJZOOQQw4p/HuXXXaJYcOGRf/+/WPKlCnRuXPnIvYMoG1QR2ktijYC2LNnz+jQocMaVzf94x//iN69exepV3wRVVVVseOOO8b8+fOjd+/eUV1dHUuXLq3X5vP7s3fv3mvd359No7g+2wcN/U727t17jYsLampq4oMPPrCfi0AdbfvU0fanrdTSogXA8vLy2GOPPeLPf/5z4b26urr485//HMOHDy9Wt/gCVqxYEa+//nr06dMn9thjj+jYsWO9/Tlv3rxYuHBhYX8OHz48XnjhhXpf+ocffjgqKytjp512avH+U9+2224bvXv3rrcPly1bFrNmzaq3D5cuXRqzZ88utJk+fXrU1dXFsGHDCm1mzJgRq1evLrR5+OGHY+DAgdG9e/cW2po8qKNtnzra/rSZWtokl5JsoFtvvTVVVFSkyZMnp5dffjmddNJJqaqqqt7VTbQeZ555Znr00UfTggUL0syZM9PIkSNTz54905IlS1JKKZ188slp6623TtOnT0/PPPNMGj58eBo+fHhh/pqamvSlL30pHXTQQWnOnDlp2rRpafPNN08/+tGPirVJ2Vm+fHl69tln07PPPpsiIl1xxRXp2WefTW+99VZKKaWLL744VVVVpXvuuSc9//zzafTo0WnbbbdNn376aWEZBx98cNptt93SrFmz0uOPP54GDBiQjj766ML0pUuXpl69eqXvfOc76cUXX0y33npr6tKlS/rVr37V4tubA3W0bVFH24f2UEuLGgBTSunqq69OW2+9dSovL0977713euqpp4rdJdZhzJgxqU+fPqm8vDxtueWWacyYMWn+/PmF6Z9++mk69dRTU/fu3VOXLl3SkUcemd555516y3jzzTfTIYcckjp37px69uyZzjzzzLR69eqW3pRsPfLIIyki1vg57rjjUkr/vH3Beeedl3r16pUqKirS1772tTRv3rx6y3j//ffT0UcfnTbZZJNUWVmZTjjhhLR8+fJ6bZ577rm07777poqKirTlllumiy++uKU2MUvqaNuhjrYP7aGWlqSU0saPIwIA0FYU/VFwAAC0LAEQACAzAiAAQGYEQACAzAiAAACZEQABADIjAAIAZEYAzNCFF14Yu+66a7G78YVts8028ctf/nKjljF58uSoqqoqvG6rnwVQXG21dqijfEYAbAMeffTRKCkpWeMB4RvqrLPOqveMwpw112cxY8aMOPzww6Nv375RUlISd999d5OvA1h/6mjzaa7PYuLEibHXXntFt27dYosttogjjjgi5s2b1+TryZUAmJGUUtTU1MQmm2wSPXr02Khlff7h1E3Rrlia4rNYm48//jiGDh0a11xzTZMvGygedXRNzVVHH3vssRg7dmw89dRT8fDDD8fq1avjoIMOio8//rjJ15UjAbAJjBgxIsaNGxfjxo2LTTfdNHr27BnnnXdefP4pex9++GEce+yx0b179+jSpUsccsgh8dprrxWmv/XWW3H44YdH9+7do2vXrjFkyJCYOnVqvPnmm/HVr341IiK6d+8eJSUlcfzxx0dERF1dXUycODG23Xbb6Ny5cwwdOjTuuOOOwjI/+4v3gQceiD322CMqKiri8ccfX2O4vq6uLn7605/GVlttFRUVFbHrrrvGtGnTCtPffPPNKCkpidtuuy0OOOCA6NSpU/zud79b62dRUlIS1113XXzjG9+Irl27xoQJE6K2tjZOPPHEQj8HDhwYV155Zb35jj/++DjiiCNi0qRJ0adPn+jRo0eMHTu2wcL329/+Nqqqqhr8y3Py5Mmx9dZbR5cuXeLII4+M999/v970f/8sPuvHz3/+8+jVq1dUVVXFT3/606ipqYmzzz47Nttss9hqq63ixhtvXOc6IyIOOeSQuOiii+LII49ssB3wT+rov6ij/zRt2rQ4/vjjY8iQITF06NCYPHlyLFy4MGbPnt3gfKynJnuqcMYOOOCAtMkmm6Tvf//7ae7cuen//u//UpcuXdKvf/3rQptvfOMbafDgwWnGjBlpzpw5adSoUWmHHXZI1dXVKaWUDj300HTggQem559/Pr3++uvp3nvvTY899liqqalJf/jDH1JEpHnz5qV33nknLV26NKWU0kUXXZQGDRqUpk2bll5//fV04403poqKivToo4+mlP71sOpddtklPfTQQ2n+/Pnp/fffTxdccEEaOnRooW9XXHFFqqysTLfcckuaO3duOuecc1LHjh3Tq6++mlJKacGCBSki0jbbbJP+8Ic/pDfeeCMtWrRorZ9FRKQtttgi3XDDDen1119Pb731Vqqurk7nn39+evrpp9Mbb7xR+Hxuu+22wnzHHXdcqqysTCeffHJ65ZVX0r333rvGZ9i/f//0i1/8IqWU0iWXXJJ69OiRZs2atc798tRTT6XS0tJ0ySWXpHnz5qUrr7wyVVVVpU033bTQ5t8/i+OOOy5169YtjR07Ns2dOzf9z//8T4qINGrUqDRhwoT06quvpp/97GepY8eO6e23327gW1H/M7nrrrvWqy3kSh39F3V07V577bUUEemFF15Y73lYNwGwCRxwwAFp8ODBqa6urvDeueeemwYPHpxSSunVV19NEZFmzpxZmP7ee++lzp07pylTpqSUUtp5553ThRdeuNblf1aAPvzww8J7K1euTF26dElPPPFEvbYnnnhiOvroo+vNd/fdd9dr8++/rH379k0TJkyo12avvfZKp556akrpX4Xrl7/8ZaOfRUSk008/vdF2Y8eOTUcddVTh9XHHHZf69++fampqCu9961vfSmPGjCm8/qxwnXPOOalPnz7pxRdfbHAdRx99dPr6179e770xY8Y0Wrj69++famtrC+8NHDgw7bfffoXXNTU1qWvXrumWW25pdDtTEgBhfaij/6KOrqm2tjYdeuihaZ999lmv9jSurAUHG9u1L3/5y1FSUlJ4PXz48Lj88sujtrY2XnnllSgrK4thw4YVpvfo0SMGDhwYr7zySkREnHbaaXHKKafEQw89FCNHjoyjjjoqdtlll3Wub/78+fHJJ5/EgQceWO/96urq2G233eq9t+eee65zOcuWLYtFixbFPvvsU+/9ffbZJ5577rn1Xk5j7a655pq44YYbYuHChfHpp59GdXX1GleNDRkyJDp06FB43adPn3jhhRfqtbn88svj448/jmeeeSa22267BvvxyiuvrHEIdvjw4fUOy6zNkCFDorT0X2dH9OrVK770pS8VXnfo0CF69OgRS5YsaXA5wBejjjbcLuc6Onbs2HjxxRfj8ccfX6/2NM45gK3Ed7/73XjjjTfiO9/5Trzwwgux5557xtVXX73O9itWrIiIiPvvvz/mzJlT+Hn55Zfrnb8SEdG1a9cm6eP6Luff2916661x1llnxYknnhgPPfRQzJkzJ0444YSorq6u165jx471XpeUlERdXV299/bbb7+ora2NKVOmbMAWrJ+19WN9+gYUlzraPuvouHHj4r777otHHnkkttpqqybtZ84EwCYya9aseq+feuqpGDBgQHTo0CEGDx4cNTU19dq8//77MW/evNhpp50K7/Xr1y9OPvnkuPPOO+PMM8+M3/zmNxERUV5eHhERtbW1hbY77bRTVFRUxMKFC2OHHXao99OvX7/17ndlZWX07ds3Zs6cWe/9mTNn1uvbxpg5c2Z85StfiVNPPTV222232GGHHeL111/foGXtvffe8cADD8TPf/7zmDRpUoNtBw8evNb9ArRO6ui65VhHU0oxbty4uOuuu2L69Omx7bbbtsh6c+EQcBNZuHBhnHHGGfG9730v/vrXv8bVV18dl19+eUREDBgwIEaPHh3//d//Hb/61a+iW7du8cMf/jC23HLLGD16dEREnH766XHIIYfEjjvuGB9++GE88sgjMXjw4IiI6N+/f5SUlMR9990XX//616Nz587RrVu3OOuss+IHP/hB1NXVxb777hsfffRRzJw5MyorK+O4445b776fffbZccEFF8T2228fu+66a9x4440xZ86cdV6h9kUNGDAg/vd//zcefPDB2HbbbePmm2+Op59+eoN/mb/yla/E1KlT45BDDomysrI4/fTT19rutNNOi3322ScmTZoUo0ePjgcffLDRwxZNZcWKFTF//vzC6wULFsScOXNis802i6233rpF+gBtjTq6bjnW0bFjx8bvf//7uOeee6Jbt26xePHiiIjYdNNNo3Pnzi3Sh/bMCGATOfbYY+PTTz+NvffeO8aOHRvf//7346STTipMv/HGG2OPPfaIww47LIYPHx4ppZg6dWphSLy2tjbGjh0bgwcPjoMPPjh23HHHuPbaayMiYsstt4yf/OQn8cMf/jB69eoV48aNi4iIn/3sZ3HeeefFxIkTC/Pdf//9X7ggnHbaaXHGGWfEmWeeGTvvvHNMmzYt/vjHP8aAAQOa5LP53ve+F9/85jdjzJgxMWzYsHj//ffj1FNP3ahl7rvvvnH//ffHj3/843Ue4vnyl78cv/nNb+LKK6+MoUOHxkMPPRQ//vGPN2q96+uZZ56J3XbbrXAe0RlnnBG77bZbnH/++S2yfmiL1NF1y7GOXnfddfHRRx/FiBEjok+fPoWf2267rUXW396VpPS5myyxQUaMGBG77rrrRj9eByBX6ii0LCOAAACZEQABADLjEDAAQGaMAAIAZEYABADIjAAIAJAZARAAIDMCIABAZgRAAIDMCIAAAJkRAAEAMiMAAgBk5v8Brlc+q9k99kAAAAAASUVORK5CYII=", "text/plain": [ "
" ] @@ -810,6 +1307,7 @@ }, { "cell_type": "markdown", + "id": "3d21c7f4-477d-452f-951a-d78ae14912b2", "metadata": {}, "source": [ "The rank histograms now look more like a very wide gaussian distribution centered in the middle. The KS p-values again vanish unsurprisingly (we must reject the hypothesis that both distributions are from the same uniform PDF) and the c2st_ranks indicate that the rank histogram is not uniform too. As our posterior samples are distributed too broad now, we obtain more \"medium\" range ranks and hence produce the peak of ranks in the center of the histogram.\n" @@ -817,14 +1315,16 @@ }, { "cell_type": "markdown", + "id": "6b8127d6-0952-4684-800b-2e4b371c276d", "metadata": {}, "source": [ - "We can repeat this exercise by making our posterior too thin, i.e. the variance of the posterior is too small. Let's cut it by half.\n" + "We can repeat this exercise by making our posterior too thin, i.e. the variance of the posterior is too small. Let's cut it by half (`dispersion=0.5`).\n" ] }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, + "id": "e893993d-b644-4da8-a0fe-5d4399683d1a", "metadata": {}, "outputs": [], "source": [ @@ -833,13 +1333,14 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, + "id": "11201c39-773a-4175-b301-ad5b6404e1c6", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "d17647acd7174190b4930c21b2c8dd5c", + "model_id": "f00b847ef5b245c291a68fb16fb3bbb8", "version_major": 2, "version_minor": 0 }, @@ -850,24 +1351,16 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/janteusen/qode/sbi/sbi/analysis/sbc.py:359: UserWarning: std(): degrees of freedom is <= 0. Correction should be strictly less than the reduction factor (input numel divided by output numel). (Triggered internally at /Users/runner/work/pytorch/pytorch/pytorch/aten/src/ATen/native/ReduceOps.cpp:1760.)\n", - " if (c2st_scores.std(0) > 0.05).any():\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "{'ks_pvals': tensor([3.2357e-13, 7.3539e-14]), 'c2st_ranks': tensor([0.6035, 0.5755]), 'c2st_dap': tensor([0.5070, 0.5155])}\n" + "{'ks_pvals': tensor([8.4049e-11, 3.0791e-10]), 'c2st_ranks': tensor([0.6150, 0.6190]), 'c2st_dap': tensor([0.5125, 0.4925])}\n" ] }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHACAYAAAAyfdnSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8WgzjOAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAlGklEQVR4nO3deZCU9ZkH8GcGmOGQYRAUBkVERUSiiBchXuwGRaIGjZuwlhWPMmuMUMZ4JmU8YjR4oIlaHjlWcd1ERRM1KqImqBSoRIl4g4IIJkgwKAIiDsz89o+sHSfAgDAzPTO/z6dqqux+j376fenHb//eo0tSSikAAMhGabELAACgaQmAAACZEQABADIjAAIAZEYABADIjAAIAJAZARAAIDMCIABAZtpuyky1tbWxaNGi6Ny5c5SUlDR2TUCGUkqxYsWK6NWrV5SWtr7vpvoo0Ng+Tx/dpAC4aNGi6N27d4MUB1Cfd955J7bffvtil9Hg9FGgqWxKH92kANi5c+fCCisqKra8MoB/sXz58ujdu3eh37Q2+ijQ2D5PH92kAPjp4YqKigqNC2hUrfXwqD4KNJVN6aOt70QbAADqJQACAGRGAAQAyMwmnQMILVFNTU2sWbOm2GXw/9q0aRNt27Zttef4AbQkAiCt0sqVK+Mvf/lLpJSKXQqf0bFjx6iqqoqysrJilwKQNQGQVqempib+8pe/RMeOHWObbbYx4tQMpJSiuro63nvvvZg/f37069evVd7sGaClEABpddasWRMppdhmm22iQ4cOxS6H/9ehQ4do165dLFiwIKqrq6N9+/bFLgkgW76C02oZ+Wt+jPoBNA+6MQBAZgRAAIDMCIDQzJ100klx9NFHF7sMAFoRF4GQjamjRm3yvAc/8EAjVtK8XXLJJXH//ffHrFmz6p3v1VdfjYsuuihmzpwZCxYsiJ/+9Kdx5plnNkmNAGwZI4DQCKqrq4tdQqNbtWpV7LTTTnHFFVdEz549i10OAJ+DAAgNYNiwYTF27Ng488wzo3v37jFixIiIiLj22mtjjz32iE6dOkXv3r3j9NNPj5UrVxaWmzBhQlRWVsajjz4aAwYMiK222ioOP/zwePfddzf4Ws8991xss802ceWVV653enV1dYwdOzaqqqqiffv20adPnxg3blxh+rJly+Jb3/pWbLPNNlFRURH//u//Hi+++GKhnh/96Efx4osvRklJSZSUlMSECRPW+zr77bdfXH311fGf//mfUV5e/nk3GQBFJABCA7n99tujrKwspk+fHrfccktE/OO2J9dff328+uqrcfvtt8eUKVPivPPOq7PcqlWrYvz48XHHHXfE1KlTY+HChXHOOees9zWmTJkShx56aFx++eVx/vnnr3ee66+/Pn7/+9/HxIkTY86cOfHrX/86dtxxx8L0r3/967FkyZJ45JFHYubMmbH33nvHl7/85Xj//fdj9OjRcfbZZ8fAgQPj3XffjXfffTdGjx7dMBsIgGbDOYDQQPr16xdXXXVVnec+e07cjjvuGJdddlmcdtppcdNNNxWeX7NmTdxyyy2x8847R0TE2LFj49JLL11n/ffdd1+ccMIJ8atf/areULZw4cLo169fHHjggVFSUhJ9+vQpTJs2bVr86U9/iiVLlhRG7caPHx/3339/3HvvvXHqqadGu+rqKK2piU7/P1K5duXKWPH/y3feZZfPtU1oWvWd55rzea3AugRAaCD77LPPOs/94Q9/iHHjxsXs2bNj+fLlsXbt2li9enWsWrUqOnbsGBH/+H3cT8NfRERVVVUsWbKkznpmzJgRDz30UNx7770bvSL4pJNOikMPPTT69+8fhx9+eBx55JFx2GGHRUTEiy++GCtXroxu3brVWebjjz+OefPmbc7bBqAFEgChgXTq1KnO47fffjuOPPLI+M53vhOXX355bL311jFt2rQ45ZRTorq6uhAA27VrV2e5kpKSSCnVeW7nnXeObt26xa233hpHHHHEOst81t577x3z58+PRx55JP7whz/EN77xjRg+fHjce++9sXLlyqiqqoonn3xyneUqKys3740D0OIIgNBIZs6cGbW1tXHNNdcUfgJt4sSJm7Wu7t27x+9+97sYNmxYfOMb34iJEyfWGwIrKipi9OjRMXr06PiP//iPOPzww+P999+PvffeOxYvXhxt27atc17gZ5W1axc1tbWbVScALYOLQKCR7LLLLrFmzZq44YYb4q233oo77rijcHHI5th2221jypQpMXv27DjuuONi7dq1653v2muvjTvvvDNmz54db7zxRtxzzz3Rs2fPqKysjOHDh8fQoUPj6KOPjsceeyzefvvtePrpp+OCCy6I559/PiIidthuu1jwl7/ES6+9Fkvffz8++eST9b5OdXV1zJo1K2bN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7c25NmgMuZ9OU59XfvrTeqfv8p3v1Du9JZ8ysrH37stCcTSH02kEQIBWIPfTabaEU0Zoas3hdBoBEKCVyPl0mi3hlBGaWrHDX4T7AAIAZEcABADIjAAIAJAZ5wCyQa6kBXKg15EjI4AAAJkRAAEAMiMAAgBkRgAEAMiMAAgAkBkBEAAgMwIgAEBmBEAAgMwIgAAAmREAAQAyIwACAGRGAAQAyIwACACQGQEQACAzAiAAQGYEQACAzAiAAACZEQABADIjAAIAZEYABADIjAAIAJAZARAAIDMCIABAZgRAAIDMCIAAAJkRAAEAMiMAAgBkRgAEAMiMAAgAkBkBEAAgMwIgAEBmBEAAgMwIgAAAmREAAQAyIwACAGRGAAQAyIwACACQGQEQACAzAiAAQGYEQACAzAiAAACZEQABADIjAAIAZEYABADIjAAIAJAZARAAIDMCIABAZgRAAIDMCIAAAJkRAAEAMiMAAgBkpu2mzJRSioiI5cuXN0oRH61Z0yjrBRpWY/WAz677037T2jR2H43QS6GlaKw+8Hn66CYFwBUrVkRERO/evbegLKDF69Kl0V9ixYoV0aUJXqep6aNAQSP3uE3poyVpE2JibW1tLFq0KDp37hwlJSUNVmDEP9Jq796945133omKiooGXTfFY7+2Po29T1NKsWLFiujVq1eUlra+s1Mas49G+My1RvZp69SY+/Xz9NFNGgEsLS2N7bffvkGK25CKigr/wFsh+7X1acx92hpH/j7VFH00wmeuNbJPW6fG2q+b2kdb39dsAADqJQACAGSm6AGwvLw8Lr744igvLy92KTQg+7X1sU+bN/un9bFPW6fmsl836SIQAABaj6KPAAIA0LQEQACAzAiAAACZEQABADJT9AB44403xo477hjt27ePIUOGxJ/+9Kdil8QGXHLJJVFSUlLnb7fdditMX716dYwZMya6desWW221VRx77LHxt7/9rc46Fi5cGEcccUR07Ngxtt122zj33HNj7dq1Tf1WsjV16tQ46qijolevXlFSUhL3339/nekppbjooouiqqoqOnToEMOHD48333yzzjzvv/9+HH/88VFRURGVlZVxyimnxMqVK+vM89JLL8VBBx0U7du3j969e8dVV13V2G8ta/poy6GPtg6toZcWNQDefffdcdZZZ8XFF18cf/7zn2PQoEExYsSIWLJkSTHLoh4DBw6Md999t/A3bdq0wrTvfe978eCDD8Y999wTTz31VCxatCi+9rWvFabX1NTEEUccEdXV1fH000/H7bffHhMmTIiLLrqoGG8lSx999FEMGjQobrzxxvVOv+qqq+L666+PW265JWbMmBGdOnWKESNGxOrVqwvzHH/88fHqq6/G448/Hg899FBMnTo1Tj311ML05cuXx2GHHRZ9+vSJmTNnxtVXXx2XXHJJ/OIXv2j095cjfbTl0UdbvlbRS1MR7b///mnMmDGFxzU1NalXr15p3LhxRayKDbn44ovToEGD1jtt2bJlqV27dumee+4pPPf666+niEjPPPNMSimlSZMmpdLS0rR48eLCPDfffHOqqKhIn3zySaPWzroiIt13332Fx7W1talnz57p6quvLjy3bNmyVF5enu68886UUkqvvfZaioj03HPPFeZ55JFHUklJSfrrX/+aUkrppptuSl27dq2zT88///zUv3//Rn5HedJHWxZ9tPVpqb20aCOA1dXVMXPmzBg+fHjhudLS0hg+fHg888wzxSqLjXjzzTejV69esdNOO8Xxxx8fCxcujIiImTNnxpo1a+rsz9122y122GGHwv585plnYo899ogePXoU5hkxYkQsX748Xn311aZ9I6xj/vz5sXjx4jr7sEuXLjFkyJA6+7CysjL23XffwjzDhw+P0tLSmDFjRmGegw8+OMrKygrzjBgxIubMmRMffPBBE72bPOijLZM+2rq1lF5atAD497//PWpqaur8I46I6NGjRyxevLhIVVGfIUOGxIQJE2Ly5Mlx8803x/z58+Oggw6KFStWxOLFi6OsrCwqKyvrLPPZ/bl48eL17u9Pp1Fcn+6D+j6Tixcvjm233bbO9LZt28bWW29tPxeBPtry6KOtX0vppW23eA1kY+TIkYX/3nPPPWPIkCHRp0+fmDhxYnTo0KGIlQG0DPoozUXRRgC7d+8ebdq0Wefqpr/97W/Rs2fPIlXF51FZWRm77rprzJ07N3r27BnV1dWxbNmyOvN8dn/27Nlzvfv702kU16f7oL7PZM+ePde5uGDt2rXx/vvv289FoI+2fPpo69NSemnRAmBZWVnss88+8cc//rHwXG1tbfzxj3+MoUOHFqssPoeVK1fGvHnzoqqqKvbZZ59o165dnf05Z86cWLhwYWF/Dh06NF5++eU6/+gff/zxqKioiN13373J66euvn37Rs+ePevsw+XLl8eMGTPq7MNly5bFzJkzC/NMmTIlamtrY8iQIYV5pk6dGmvWrCnM8/jjj0f//v2ja9euTfRu8qCPtnz6aOvTYnppg1xKspnuuuuuVF5eniZMmJBee+21dOqpp6bKyso6VzfRfJx99tnpySefTPPnz0/Tp09Pw4cPT927d09LlixJKaV02mmnpR122CFNmTIlPf/882no0KFp6NChheXXrl2bvvCFL6TDDjsszZo1K02ePDlts8026Qc/+EGx3lJ2VqxYkV544YX0wgsvpIhI1157bXrhhRfSggULUkopXXHFFamysjI98MAD6aWXXkqjRo1Kffv2TR9//HFhHYcffngaPHhwmjFjRpo2bVrq169fOu644wrTly1blnr06JG++c1vpldeeSXdddddqWPHjunnP/95k7/fHOijLYs+2jq0hl5a1ACYUko33HBD2mGHHVJZWVnaf//907PPPlvsktiA0aNHp6qqqlRWVpa22267NHr06DR37tzC9I8//jidfvrpqWvXrqljx47pmGOOSe+++26ddbz99ttp5MiRqUOHDql79+7p7LPPTmvWrGnqt5KtJ554IkXEOn8nnnhiSukfty+48MILU48ePVJ5eXn68pe/nObMmVNnHUuXLk3HHXdc2mqrrVJFRUU6+eST04oVK+rM8+KLL6YDDzwwlZeXp+222y5dccUVTfUWs6SPthz6aOvQGnppSUopbfk4IgAALUXRfwoOAICmJQACAGRGAAQAyIwACACQGQEQACAzAiAAQGYEQACAzAiAGbrkkktir732KnYZn9uOO+4YP/vZz7ZoHRMmTIjKysrC45a6LYDiaqm9Qx/lUwJgC/Dkk09GSUnJOj8QvrnOOeecOr9RmLPG2hZTp06No446Knr16hUlJSVx//33N/hrAJtOH208jbUtxo0bF/vtt1907tw5tt122zj66KNjzpw5Df46uRIAM5JSirVr18ZWW20V3bp126J1ffbHqRtivmJpiG2xPh999FEMGjQobrzxxgZfN1A8+ui6GquPPvXUUzFmzJh49tln4/HHH481a9bEYYcdFh999FGDv1aOBMAGMGzYsBg7dmyMHTs2unTpEt27d48LL7wwPvsrex988EGccMIJ0bVr1+jYsWOMHDky3nzzzcL0BQsWxFFHHRVdu3aNTp06xcCBA2PSpEnx9ttvx7/9279FRETXrl2jpKQkTjrppIiIqK2tjXHjxkXfvn2jQ4cOMWjQoLj33nsL6/z0G+8jjzwS++yzT5SXl8e0adPWGa6vra2NSy+9NLbffvsoLy+PvfbaKyZPnlyY/vbbb0dJSUncfffdccghh0T79u3j17/+9Xq3RUlJSdx8883x1a9+NTp16hSXX3551NTUxCmnnFKos3///nHdddfVWe6kk06Ko48+OsaPHx9VVVXRrVu3GDNmTL2N71e/+lVUVlbW+81zwoQJscMOO0THjh3jmGOOiaVLl9aZ/q/b4tM6fvKTn0SPHj2isrIyLr300li7dm2ce+65sfXWW8f2228ft9122wZfMyJi5MiRcdlll8UxxxxT73zAP+ij/6SP/sPkyZPjpJNOioEDB8agQYNiwoQJsXDhwpg5c2a9y7GJGuxXhTN2yCGHpK222ip997vfTbNnz07/+7//mzp27Jh+8YtfFOb56le/mgYMGJCmTp2aZs2alUaMGJF22WWXVF1dnVJK6YgjjkiHHnpoeumll9K8efPSgw8+mJ566qm0du3a9Nvf/jZFRJozZ056991307Jly1JKKV122WVpt912S5MnT07z5s1Lt912WyovL09PPvlkSumfP1a95557psceeyzNnTs3LV26NF188cVp0KBBhdquvfbaVFFRke688840e/bsdN5556V27dqlN954I6WU0vz581NEpB133DH99re/TW+99VZatGjRerdFRKRtt9023XrrrWnevHlpwYIFqbq6Ol100UXpueeeS2+99VZh+9x9992F5U488cRUUVGRTjvttPT666+nBx98cJ1t2KdPn/TTn/40pZTSlVdembp165ZmzJixwf3y7LPPptLS0nTllVemOXPmpOuuuy5VVlamLl26FOb5121x4oknps6dO6cxY8ak2bNnp//+7/9OEZFGjBiRLr/88vTGG2+kH//4x6ldu3bpnXfeqedfRd1tct99923SvJArffSf9NH1e/PNN1NEpJdffnmTl2HDBMAGcMghh6QBAwak2trawnPnn39+GjBgQEoppTfeeCNFRJo+fXph+t///vfUoUOHNHHixJRSSnvssUe65JJL1rv+TxvQBx98UHhu9erVqWPHjunpp5+uM+8pp5ySjjvuuDrL3X///XXm+dcPa69evdLll19eZ5799tsvnX766Smlfzaun/3sZxvdFhGRzjzzzI3ON2bMmHTssccWHp944ompT58+ae3atYXnvv71r6fRo0cXHn/auM4777xUVVWVXnnllXpf47jjjktf+cpX6jw3evTojTauPn36pJqamsJz/fv3TwcddFDh8dq1a1OnTp3SnXfeudH3mZIACJtCH/0nfXRdNTU16YgjjkgHHHDAJs3PxrVtwsHGVu2LX/xilJSUFB4PHTo0rrnmmqipqYnXX3892rZtG0OGDClM79atW/Tv3z9ef/31iIg444wz4jvf+U489thjMXz48Dj22GNjzz333ODrzZ07N1atWhWHHnponeerq6tj8ODBdZ7bd999N7ie5cuXx6JFi+KAAw6o8/wBBxwQL7744iavZ2Pz3XjjjXHrrbfGwoUL4+OPP47q6up1rhobOHBgtGnTpvC4qqoqXn755TrzXHPNNfHRRx/F888/HzvttFO9dbz++uvrHIIdOnRoncMy6zNw4MAoLf3n2RE9evSIL3zhC4XHbdq0iW7dusWSJUvqXQ/w+eij9c+Xcx8dM2ZMvPLKKzFt2rRNmp+Ncw5gM/Gtb30r3nrrrfjmN78ZL7/8cuy7775xww03bHD+lStXRkTEww8/HLNmzSr8vfbaa3XOX4mI6NSpU4PUuKnr+df57rrrrjjnnHPilFNOicceeyxmzZoVJ598clRXV9eZr127dnUel5SURG1tbZ3nDjrooKipqYmJEyduxjvYNOurY1NqA4pLH22dfXTs2LHx0EMPxRNPPBHbb799g9aZMwGwgcyYMaPO42effTb69esXbdq0iQEDBsTatWvrzLN06dKYM2dO7L777oXnevfuHaeddlr87ne/i7PPPjt++ctfRkREWVlZRETU1NQU5t19992jvLw8Fi5cGLvsskudv969e29y3RUVFdGrV6+YPn16neenT59ep7YtMX369PjSl74Up59+egwePDh22WWXmDdv3mata//9949HHnkkfvKTn8T48ePrnXfAgAHr3S9A86SPbliOfTSlFGPHjo377rsvpkyZEn379m2S182FQ8ANZOHChXHWWWfFt7/97fjzn/8cN9xwQ1xzzTUREdGvX78YNWpU/Nd//Vf8/Oc/j86dO8f3v//92G677WLUqFEREXHmmWfGyJEjY9ddd40PPvggnnjiiRgwYEBERPTp0ydKSkrioYceiq985SvRoUOH6Ny5c5xzzjnxve99L2pra+PAAw+MDz/8MKZPnx4VFRVx4oknbnLt5557blx88cWx8847x1577RW33XZbzJo1a4NXqH1e/fr1i//5n/+JRx99NPr27Rt33HFHPPfcc5v9Yf7Sl74UkyZNipEjR0bbtm3jzDPPXO98Z5xxRhxwwAExfvz4GDVqVDz66KMbPWzRUFauXBlz584tPJ4/f37MmjUrtt5669hhhx2apAZoafTRDcuxj44ZMyZ+85vfxAMPPBCdO3eOxYsXR0REly5dokOHDk1SQ2tmBLCBnHDCCfHxxx/H/vvvH2PGjInvfve7ceqppxam33bbbbHPPvvEkUceGUOHDo2UUkyaNKkwJF5TUxNjxoyJAQMGxOGHHx677rpr3HTTTRERsd1228WPfvSj+P73vx89evSIsWPHRkTEj3/847jwwgtj3LhxheUefvjhz90QzjjjjDjrrLPi7LPPjj322CMmT54cv//976Nfv34Nsm2+/e1vx9e+9rUYPXp0DBkyJJYuXRqnn376Fq3zwAMPjIcffjh++MMfbvAQzxe/+MX45S9/Gdddd10MGjQoHnvssfjhD3+4Ra+7qZ5//vkYPHhw4Tyis846KwYPHhwXXXRRk7w+tET66Ibl2Edvvvnm+PDDD2PYsGFRVVVV+Lv77rub5PVbu5KUPnOTJTbLsGHDYq+99trin9cByJU+Ck3LCCAAQGYEQACAzDgEDACQGSOAAACZEQABADIjAAIAZEYABADIjAAIAJAZARAAIDMCIABAZgRAAIDMCIAAAJn5PzzEKUAMuo0OAAAAAElFTkSuQmCC", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHACAYAAAAyfdnSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAlsUlEQVR4nO3deZBV5ZkH4Lcb6GaRphGVRRFREZAg7oS4MRMUiRo0TsJYVlzKjDFCGeOalHFJIsEFTdRyyTKK4yQqmqhRETVBpUAlSsQdFEUwQYJREVCx6e5v/sh4Y8sqdPftvt/zVFHlvee757z3HPvtX3/n3HPLUkopAADIRnmxCwAAoHkJgAAAmREAAQAyIwACAGRGAAQAyIwACACQGQEQACAzAiAAQGbabsyg+vr6WLx4cXTu3DnKysqauiYgQymlWLFiRfTq1SvKy0vvb1N9FGhqn6ePblQAXLx4cfTu3btRigNYnzfffDO22267YpfR6PRRoLlsTB/dqADYuXPnwgqrqqo2vzKAz1i+fHn07t270G9KjT4KNLXP00c3KgB+crqiqqpK4wKaVKmeHtVHgeayMX209C60AQBgvQRAAIDMCIAAAJnZqGsAoTWqq6uL1atXF7sM/l+bNm2ibdu2JXuNH0BrIgBSklauXBl//etfI6VU7FL4lI4dO0bPnj2joqKi2KUAZE0ApOTU1dXFX//61+jYsWNsvfXWZpxagJRS1NTUxNtvvx0LFiyIfv36leTNngFaCwGQkrN69epIKcXWW28dHTp0KHY5/L8OHTpEu3btYuHChVFTUxPt27cvdkkA2fInOCXLzF/LY9YPoGXQjQEAMiMAAgBkRgCEFu6EE06II488sthlAFBCfAiEbEwfPXqjxx54zz1NWEnLdtFFF8Xdd98dc+bMWe+4F198MS644IKYPXt2LFy4MH72s5/F6aef3iw1ArB5zABCE6ipqSl2CU3uww8/jB133DEuueSS6NGjR7HLAeBzEAChEQwfPjzGjRsXp59+emy11VYxcuTIiIi48sorY/DgwdGpU6fo3bt3nHrqqbFy5crC6yZNmhTV1dXx4IMPxsCBA2OLLbaIQw89NN566611buupp56KrbfeOi699NK1Lq+pqYlx48ZFz549o3379tGnT5+YMGFCYfmyZcviW9/6Vmy99dZRVVUV//7v/x7PPvtsoZ4f/ehH8eyzz0ZZWVmUlZXFpEmT1rqdffbZJy6//PL4z//8z6isrPy8uwyAIhIAoZHcfPPNUVFRETNnzowbbrghIv5525Orr746Xnzxxbj55ptj2rRpcc455zR43YcffhgTJ06MW265JaZPnx6LFi2Ks846a63bmDZtWhx88MExfvz4OPfcc9c65uqrr44//OEPMXny5Jg3b1785je/iR122KGw/Otf/3osXbo0HnjggZg9e3bsueee8eUvfznefffdGDNmTJx55pkxaNCgeOutt+Ktt96KMWPGNM4OAqDFcA0gNJJ+/frFZZdd1uC5T18Tt8MOO8TFF18cp5xySlx33XWF51evXh033HBD7LTTThERMW7cuPjxj3+8xvrvuuuuOO644+LXv/71ekPZokWLol+/frH//vtHWVlZ9OnTp7BsxowZ8ec//zmWLl1amLWbOHFi3H333XHnnXfGySefHO1qaqK8ri46/f9MZe3KlbHi/1/feeedP9c+AcjRhq45bwnXmQuA0Ej22muvNZ774x//GBMmTIi5c+fG8uXLo7a2NlatWhUffvhhdOzYMSL++f24n4S/iIiePXvG0qVLG6xn1qxZcd9998Wdd965wU8En3DCCXHwwQdH//7949BDD43DDz88DjnkkIiIePbZZ2PlypXRrVu3Bq/56KOP4rXXXtuUtw1AKyQAQiPp1KlTg8dvvPFGHH744fGd73wnxo8fH1tuuWXMmDEjTjrppKipqSkEwHbt2jV4XVlZWaSUGjy30047Rbdu3eLGG2+Mww47bI3XfNqee+4ZCxYsiAceeCD++Mc/xje+8Y0YMWJE3HnnnbFy5cro2bNnPProo2u8rrq6etPeOACtjgAITWT27NlRX18fV1xxReEr0CZPnrxJ69pqq63i97//fQwfPjy+8Y1vxOTJk9cbAquqqmLMmDExZsyY+I//+I849NBD4913340999wzlixZEm3btm1wXeCnVbRrF3X19ZtUJwCtgw+BQBPZeeedY/Xq1XHNNdfE66+/HrfcckvhwyGbYptttolp06bF3Llz45hjjona2tq1jrvyyivj1ltvjblz58Yrr7wSd9xxR/To0SOqq6tjxIgRMWzYsDjyyCPjoYceijfeeCMef/zxOO+88+Lpp5+OiIjtt902Fv71r/HcSy/FO+++Gx9//PFat1NTUxNz5syJ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ibPPPjtqa2ub+61ka/r06XHEEUdEr169oqysLO6+++4Gy1NKccEFF0TPnj2jQ4cOMWLEiHj11VcbjHn33Xfj2GOPjaqqqqiuro6TTjopVq5c2WDMc889FwcccEC0b98+evfuHZdddllTv7Ws6aOthz5aGkqhlxY1AN5+++1xxhlnxIUXXhh/+ctfYsiQITFy5MhYunRpMctiPQYNGhRvvfVW4d+MGTMKy773ve/FvffeG3fccUc89thjsXjx4vja175WWF5XVxeHHXZY1NTUxOOPPx4333xzTJo0KS644IJivJUsffDBBzFkyJC49tpr17r8sssui6uvvjpuuOGGmDVrVnTq1ClGjhwZq1atKow59thj48UXX4yHH3447rvvvpg+fXqcfPLJheXLly+PQw45JPr06ROzZ8+Oyy+/PC666KL45S9/2eTvL0f6aOujj7Z+JdFLUxHtu+++aezYsYXHdXV1qVevXmnChAlFrIp1ufDCC9OQIUPWumzZsmWpXbt26Y477ig89/LLL6eISE888URKKaUpU6ak8vLytGTJksKY66+/PlVVVaWPP/64SWtnTRGR7rrrrsLj+vr61KNHj3T55ZcXnlu2bFmqrKxMt956a0oppZdeeilFRHrqqacKYx544IFUVlaW/va3v6WUUrruuutS165dGxzTc889N/Xv37+J31Ge9NHWRR8tPa21lxZtBrCmpiZmz54dI0aMKDxXXl4eI0aMiCeeeKJYZbEBr776avTq1St23HHHOPbYY2PRokURETF79uxYvXp1g+M5YMCA2H777QvH84knnojBgwdH9+7dC2NGjhwZy5cvjxdffLF53whrWLBgQSxZsqTBMezSpUsMHTq0wTGsrq6OvffeuzBmxIgRUV5eHrNmzSqMOfDAA6OioqIwZuTIkTFv3rx47733mund5EEfbZ300dLWWnpp0QLgP/7xj6irq2vwP3FERPfu3WPJkiVFqor1GTp0aEyaNCmmTp0a119/fSxYsCAOOOCAWLFiRSxZsiQqKiqiurq6wWs+fTyXLFmy1uP9yTKK65NjsL6fySVLlsQ222zTYHnbtm1jyy23dJyLQB9tffTR0tdaemnbzV4D2Rg1alThv3fbbbcYOnRo9OnTJyZPnhwdOnQoYmUArYM+SktRtBnArbbaKtq0abPGp5v+/ve/R48ePYpUFZ9HdXV17LLLLjF//vzo0aNH1NTUxLJlyxqM+fTx7NGjx1qP9yfLKK5PjsH6fiZ79OixxocLamtr491333Wci0Afbf300dLTWnpp0QJgRUVF7LXXXvGnP/2p8Fx9fX386U9/imHDhhWrLD6HlStXxmuvvRY9e/aMvfbaK9q1a9fgeM6bNy8WLVpUOJ7Dhg2L559/vsH/9A8//HBUVVXFrrvu2uz101Dfvn2jR48eDY7h8uXLY9asWQ2O4bJly2L27NmFMdOmTYv6+voYOnRoYcz06dNj9erVhTEPP/xw9O/fP7p27dpM7yYP+mjrp4+WnlbTSxvloySb6LbbbkuVlZVp0qRJ6aWXXkonn3xyqq6ubvDpJlqOM888Mz366KNpwYIFaebMmWnEiBFpq622SkuXLk0ppXTKKaek7bffPk2bNi09/fTTadiwYWnYsGGF19fW1qYvfOEL6ZBDDklz5sxJU6dOTVtvvXX6wQ9+UKy3lJ0VK1akZ555Jj3zzDMpItKVV16ZnnnmmbRw4cKUUkqXXHJJqq6uTvfcc0967rnn0ujRo1Pfvn3TRx99VFjHoYcemvbYY480a9asNGPGjNSvX790zDHHFJYvW7Ysde/ePX3zm99ML7zwQrrttttSx44d0y9+8Ytmf7850EdbF320NJRCLy1qAEwppWuuuSZtv/32qaKiIu27777pySefLHZJrMOYMWNSz549U0VFRdp2223TmDFj0vz58wvLP/roo3Tqqaemrl27po4dO6ajjjoqvfXWWw3W8cYbb6RRo0alDh06pK222iqdeeaZafXq1c39VrL1yCOPpIhY49/xxx+fUvrn7QvOP//81L1791RZWZm+/OUvp3nz5jVYxzvvvJOOOeaYtMUWW6Sqqqp04oknphUrVjQY8+yzz6b9998/VVZWpm233TZdcsklzfUWs6SPth76aGkohV5allJKmz+PCABAa1H0r4IDAKB5CYAAAJkRAAEAMiMAAgBkRgAEAMiMAAgAkBkBEAAgMwJghi666KLYfffdi13G57bDDjvEz3/+881ax6RJk6K6urrwuLXuC6C4Wmvv0Ef5hADYCjz66KNRVla2xheEb6qzzjqrwXcU5qyp9sX06dPjiCOOiF69ekVZWVncfffdjb4NYOPpo02nqfbFhAkTYp999onOnTvHNttsE0ceeWTMmzev0beTKwEwIymlqK2tjS222CK6deu2Wev69JdTN8a4YmmMfbE2H3zwQQwZMiSuvfbaRl83UDz66Jqaqo8+9thjMXbs2HjyySfj4YcfjtWrV8chhxwSH3zwQaNvK0cCYCMYPnx4jBs3LsaNGxddunSJrbbaKs4///z49Lfsvffee3HcccdF165do2PHjjFq1Kh49dVXC8sXLlwYRxxxRHTt2jU6deoUgwYNiilTpsQbb7wR//Zv/xYREV27do2ysrI44YQTIiKivr4+JkyYEH379o0OHTrEkCFD4s477yys85O/eB944IHYa6+9orKyMmbMmLHGdH19fX38+Mc/ju222y4qKytj9913j6lTpxaWv/HGG1FWVha33357HHTQQdG+ffv4zW9+s9Z9UVZWFtdff3189atfjU6dOsX48eOjrq4uTjrppEKd/fv3j6uuuqrB60444YQ48sgjY+LEidGzZ8/o1q1bjB07dr2N79e//nVUV1ev9y/PSZMmxfbbbx8dO3aMo446Kt55550Gyz+7Lz6p46c//Wl07949qqur48c//nHU1tbG2WefHVtuuWVst912cdNNN61zmxERo0aNiosvvjiOOuqo9Y4D/kkf/Rd99J+mTp0aJ5xwQgwaNCiGDBkSkyZNikWLFsXs2bPX+zo2UqN9q3DGDjrooLTFFluk7373u2nu3Lnpf//3f1PHjh3TL3/5y8KYr371q2ngwIFp+vTpac6cOWnkyJFp5513TjU1NSmllA477LB08MEHp+eeey699tpr6d57702PPfZYqq2tTb/73e9SRKR58+alt956Ky1btiyllNLFF1+cBgwYkKZOnZpee+21dNNNN6XKysr06KOPppT+9WXVu+22W3rooYfS/Pnz0zvvvJMuvPDCNGTIkEJtV155Zaqqqkq33nprmjt3bjrnnHNSu3bt0iuvvJJSSmnBggUpItIOO+yQfve736XXX389LV68eK37IiLSNttsk2688cb02muvpYULF6aampp0wQUXpKeeeiq9/vrrhf1z++23F153/PHHp6qqqnTKKaekl19+Od17771r7MM+ffqkn/3sZymllC699NLUrVu3NGvWrHUelyeffDKVl5enSy+9NM2bNy9dddVVqbq6OnXp0qUw5rP74vjjj0+dO3dOY8eOTXPnzk3//d//nSIijRw5Mo0fPz698sor6Sc/+Ulq165devPNN9fzf0XDfXLXXXdt1FjIlT76L/ro2r366qspItLzzz+/0a9h3QTARnDQQQelgQMHpvr6+sJz5557bho4cGBKKaVXXnklRUSaOXNmYfk//vGP1KFDhzR58uSUUkqDBw9OF1100VrX/0kDeu+99wrPrVq1KnXs2DE9/vjjDcaedNJJ6ZhjjmnwurvvvrvBmM/+sPbq1SuNHz++wZh99tknnXrqqSmlfzWun//85xvcFxGRTj/99A2OGzt2bDr66KMLj48//vjUp0+fVFtbW3ju61//ehozZkzh8SeN65xzzkk9e/ZML7zwwnq3ccwxx6SvfOUrDZ4bM2bMBhtXnz59Ul1dXeG5/v37pwMOOKDwuLa2NnXq1CndeuutG3yfKQmAsDH00X/RR9dUV1eXDjvssLTffvtt1Hg2rG0zTjaWtC9+8YtRVlZWeDxs2LC44ooroq6uLl5++eVo27ZtDB06tLC8W7du0b9//3j55ZcjIuK0006L73znO/HQQw/FiBEj4uijj47ddtttndubP39+fPjhh3HwwQc3eL6mpib22GOPBs/tvffe61zP8uXLY/HixbHffvs1eH6//faLZ599dqPXs6Fx1157bdx4442xaNGi+Oijj6KmpmaNT40NGjQo2rRpU3jcs2fPeP755xuMueKKK+KDDz6Ip59+Onbcccf11vHyyy+vcQp22LBhDU7LrM2gQYOivPxfV0d07949vvCFLxQet2nTJrp16xZLly5d73qAz0cfXf+4nPvo2LFj44UXXogZM2Zs1Hg2zDWALcS3vvWteP311+Ob3/xmPP/887H33nvHNddcs87xK1eujIiI+++/P+bMmVP499JLLzW4fiUiolOnTo1S48au57PjbrvttjjrrLPipJNOioceeijmzJkTJ554YtTU1DQY165duwaPy8rKor6+vsFzBxxwQNTV1cXkyZM34R1snLXVsTG1AcWlj5ZmHx03blzcd9998cgjj8R2223XqHXmTABsJLNmzWrw+Mknn4x+/fpFmzZtYuDAgVFbW9tgzDvvvBPz5s2LXXfdtfBc796945RTTonf//73ceaZZ8avfvWriIioqKiIiIi6urrC2F133TUqKytj0aJFsfPOOzf417t3742uu6qqKnr16hUzZ85s8PzMmTMb1LY5Zs6cGV/60pfi1FNPjT322CN23nnneO211zZpXfvuu2888MAD8dOf/jQmTpy43rEDBw5c63EBWiZ9dN1y7KMppRg3blzcddddMW3atOjbt2+zbDcXTgE3kkWLFsUZZ5wR3/72t+Mvf/lLXHPNNXHFFVdERES/fv1i9OjR8V//9V/xi1/8Ijp37hzf//73Y9ttt43Ro0dHRMTpp58eo0aNil122SXee++9eOSRR2LgwIEREdGnT58oKyuL++67L77yla9Ehw4donPnznHWWWfF9773vaivr4/9998/3n///Zg5c2ZUVVXF8ccfv9G1n3322XHhhRfGTjvtFLvvvnvcdNNNMWfOnHV+Qu3z6tevX/zP//xPPPjgg9G3b9+45ZZb4qmnntrkH+YvfelLMWXKlBg1alS0bds2Tj/99LWOO+2002K//faLiRMnxujRo+PBBx/c4GmLxrJy5cqYP39+4fGCBQtizpw5seWWW8b222/fLDVAa6OPrluOfXTs2LHx29/+Nu65557o3LlzLFmyJCIiunTpEh06dGiWGkqZGcBGctxxx8VHH30U++67b4wdOza++93vxsknn1xYftNNN8Vee+0Vhx9+eAwbNixSSjFlypTClHhdXV2MHTs2Bg4cGIceemjssssucd1110VExLbbbhs/+tGP4vvf/3507949xo0bFxERP/nJT+L888+PCRMmFF53//33f+6GcNppp8UZZ5wRZ555ZgwePDimTp0af/jDH6Jfv36Nsm++/e1vx9e+9rUYM2ZMDB06NN5555049dRTN2ud+++/f9x///3xwx/+cJ2neL74xS/Gr371q7jqqqtiyJAh8dBDD8UPf/jDzdruxnr66adjjz32KFxHdMYZZ8Qee+wRF1xwQbNsH1ojfXTdcuyj119/fbz//vsxfPjw6NmzZ+Hf7bff3izbL3VlKX3qJktskuHDh8fuu+++2V+vA5ArfRSalxlAAIDMCIAAAJlxChgAIDNmAAEAMiMAAgBkRgAEAMiMAAgAkBkBEAAgMwIgAEBmBEAAgMwIgAAAmREAAQAy83+gCyG6mUX1mQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] @@ -885,13 +1378,15 @@ }, { "cell_type": "markdown", + "id": "31fb7dce-be10-4584-8cde-dc7a6ba0c292", "metadata": {}, "source": [ - "The histogram of ranks now shoots above the allowed (greyed) area for a uniform distributed around the extrema. We made the posterior samples too thin, so we received more extreme counts of ranks. The KS p-values vanish again and the `c2st` metric of the ranks is also larger than `.5` which underlines that our rank distribution is not uniformly distributed.\n" + "The histogram of ranks now shoots above the allowed (greyed) area for a uniform distributed around the extrema. We made the posterior samples too thin, so we received more extreme counts of ranks. The KS p-values vanish again and the `c2st` metric of the ranks is also larger than `0.5` which underlines that our rank distribution is not uniformly distributed.\n" ] }, { "cell_type": "markdown", + "id": "66359a36-6a22-4b1b-8c5a-a9ce4d6425af", "metadata": {}, "source": [ "We again see, **the rank distribution is capable of identifying pathologies of the estimated posterior**:\n", @@ -904,6 +1399,7 @@ }, { "cell_type": "markdown", + "id": "ab0fc2e9-fdef-4f45-8c5c-147c0ad3910a", "metadata": {}, "source": [ "Simulation-based calibration offers a direct handle on which pathology an estimated posterior examines. Outside of this tutorial, you may very well encounter situations with mixtures of effects (a shifted mean and over-estimated variance). Moreover, uncovering a malignant posterior is only the first step to fix your analysis.\n" @@ -911,27 +1407,23 @@ } ], "metadata": { - "interpreter": { - "hash": "2193897e41726b46f35b9de052100742a934a9183b8a000ae8eb69e12e860d83" - }, "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "argv": [ + "python", + "-m", + "ipykernel_launcher", + "-f", + "{connection_file}" + ], + "display_name": "python3", + "env": null, + "interrupt_mode": "signal", "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 + "metadata": { + "debugger": true }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.18" - }, - "name": "13_diagnosis_sbc.ipynb" + "name": "python3" + } }, "nbformat": 4, "nbformat_minor": 4 From a2ab10016fed6fc7b96810854c61b7de3ffc51db Mon Sep 17 00:00:00 2001 From: Thomas Moreau Date: Mon, 25 Mar 2024 15:07:31 +0100 Subject: [PATCH 09/53] DOC improve reference API rendering (#1019) * DOC improve reference API rendering * FIX linting * FIX missing loss in * FIX linting * DOC add ref to custom DensityEstimator API * ... * adding a few extra stylish aspects * CLN remove unused options * CLN revert changes to DensityEstimator API * FIX revert changes to snpe_a.py * CLN remove deprecated prepare_for_sbi, add process_{prior/simulator} --------- Co-authored-by: plcrodrigues --- docs/docs/reference.md | 177 -------------------------- docs/docs/reference/analysis.md | 9 ++ docs/docs/reference/inference.md | 59 +++++++++ docs/docs/reference/models.md | 9 ++ docs/docs/reference/posteriors.md | 26 ++++ docs/docs/reference/potentials.md | 16 +++ docs/mkdocs.yml | 15 ++- tutorials/04_density_estimators.ipynb | 10 +- 8 files changed, 140 insertions(+), 181 deletions(-) delete mode 100644 docs/docs/reference.md create mode 100644 docs/docs/reference/analysis.md create mode 100644 docs/docs/reference/inference.md create mode 100644 docs/docs/reference/models.md create mode 100644 docs/docs/reference/posteriors.md create mode 100644 docs/docs/reference/potentials.md diff --git a/docs/docs/reference.md b/docs/docs/reference.md deleted file mode 100644 index 28349605f..000000000 --- a/docs/docs/reference.md +++ /dev/null @@ -1,177 +0,0 @@ -# API Reference - -## Inference - -::: sbi.inference.base.infer - rendering: - show_root_heading: true - -::: sbi.utils.user_input_checks.prepare_for_sbi - rendering: - show_root_heading: true - -::: sbi.inference.base.simulate_for_sbi - rendering: - show_root_heading: true - -::: sbi.inference.snpe.snpe_a.SNPE_A - rendering: - show_root_heading: true - selection: - filters: [ "!^_", "^__", "!^__class__" ] - inherited_members: true - -::: sbi.inference.snpe.snpe_c.SNPE_C - rendering: - show_root_heading: true - selection: - filters: [ "!^_", "^__", "!^__class__" ] - inherited_members: true - -::: sbi.inference.snle.snle_a.SNLE_A - rendering: - show_root_heading: true - selection: - filters: [ "!^_", "^__", "!^__class__" ] - inherited_members: true - -::: sbi.inference.snre.snre_a.SNRE_A - rendering: - show_root_heading: true - selection: - filters: [ "!^_", "^__", "!^__class__" ] - inherited_members: true - -::: sbi.inference.snre.snre_b.SNRE_B - rendering: - show_root_heading: true - selection: - filters: [ "!^_", "^__", "!^__class__" ] - inherited_members: true - -::: sbi.inference.snre.snre_c.SNRE_C - rendering: - show_root_heading: true - selection: - filters: [ "!^_", "^__", "!^__class__" ] - inherited_members: true - -::: sbi.inference.snre.bnre.BNRE - rendering: - show_root_heading: true - selection: - filters: [ "!^_", "^__", "!^__class__" ] - inherited_members: true - -::: sbi.inference.abc.mcabc.MCABC - rendering: - show_root_heading: true - selection: - filters: [ "!^_", "^__", "!^__class__" ] - inherited_members: true - -::: sbi.inference.abc.smcabc.SMCABC - rendering: - show_root_heading: true - selection: - filters: [ "!^_", "^__", "!^__class__" ] - inherited_members: true - -## Posteriors - -::: sbi.inference.posteriors.direct_posterior.DirectPosterior - rendering: - show_root_heading: true - selection: - filters: [ "!^_", "^__", "!^__class__" ] - inherited_members: true - -::: sbi.inference.posteriors.importance_posterior.ImportanceSamplingPosterior - rendering: - show_root_heading: true - selection: - filters: [ "!^_", "^__", "!^__class__" ] - inherited_members: true - -::: sbi.inference.posteriors.mcmc_posterior.MCMCPosterior - rendering: - show_root_heading: true - selection: - filters: [ "!^_", "^__", "!^__class__" ] - inherited_members: true - -::: sbi.inference.posteriors.rejection_posterior.RejectionPosterior - rendering: - show_root_heading: true - selection: - filters: [ "!^_", "^__", "!^__class__" ] - inherited_members: true - -::: sbi.inference.posteriors.vi_posterior.VIPosterior - rendering: - show_root_heading: true - selection: - filters: [ "!^_", "^__", "!^__class__" ] - inherited_members: true - -## Models - -::: sbi.neural_nets.factory.posterior_nn - rendering: - show_root_heading: true - show_object_full_path: true - -::: sbi.neural_nets.factory.likelihood_nn - rendering: - show_root_heading: true - show_object_full_path: true - -::: sbi.neural_nets.factory.classifier_nn - rendering: - show_root_heading: true - show_object_full_path: true - -## Potentials - -::: sbi.inference.potentials.posterior_based_potential.posterior_estimator_based_potential - rendering: - show_root_heading: true - selection: - filters: [ "!^_", "^__", "!^__class__" ] - inherited_members: true - -::: sbi.inference.potentials.likelihood_based_potential.likelihood_estimator_based_potential - rendering: - show_root_heading: true - selection: - filters: [ "!^_", "^__", "!^__class__" ] - inherited_members: true - -::: sbi.inference.potentials.ratio_based_potential.ratio_estimator_based_potential - rendering: - show_root_heading: true - selection: - filters: [ "!^_", "^__", "!^__class__" ] - inherited_members: true - -## Analysis - -::: sbi.analysis.plot.pairplot - rendering: - show_root_heading: true - show_object_full_path: true - -::: sbi.analysis.plot.marginal_plot - rendering: - show_root_heading: true - show_object_full_path: true - -::: sbi.analysis.plot.conditional_pairplot - rendering: - show_root_heading: true - show_object_full_path: true - -::: sbi.analysis.conditional_density.conditional_corrcoeff - rendering: - show_root_heading: true - show_object_full_path: true diff --git a/docs/docs/reference/analysis.md b/docs/docs/reference/analysis.md new file mode 100644 index 000000000..d92114558 --- /dev/null +++ b/docs/docs/reference/analysis.md @@ -0,0 +1,9 @@ +# Analysis + +::: sbi.analysis.plot.pairplot + +::: sbi.analysis.plot.marginal_plot + +::: sbi.analysis.plot.conditional_pairplot + +::: sbi.analysis.conditional_density.conditional_corrcoeff diff --git a/docs/docs/reference/inference.md b/docs/docs/reference/inference.md new file mode 100644 index 000000000..b248facca --- /dev/null +++ b/docs/docs/reference/inference.md @@ -0,0 +1,59 @@ +# Inference + +## Helpers + +::: sbi.inference.base.infer + +::: sbi.inference.base.simulate_for_sbi + +::: sbi.utils.user_input_checks.process_prior + +::: sbi.utils.user_input_checks.process_simulator + + +## Algorithms + +::: sbi.inference.snpe.snpe_a.SNPE_A + selection: + filters: [ "!^_", "^__", "!^__class__" ] + inherited_members: true + +::: sbi.inference.snpe.snpe_c.SNPE_C + selection: + filters: [ "!^_", "^__", "!^__class__" ] + inherited_members: true + +::: sbi.inference.snle.snle_a.SNLE_A + selection: + filters: [ "!^_", "^__", "!^__class__" ] + inherited_members: true + +::: sbi.inference.snre.snre_a.SNRE_A + selection: + filters: [ "!^_", "^__", "!^__class__" ] + inherited_members: true + +::: sbi.inference.snre.snre_b.SNRE_B + selection: + filters: [ "!^_", "^__", "!^__class__" ] + inherited_members: true + +::: sbi.inference.snre.snre_c.SNRE_C + selection: + filters: [ "!^_", "^__", "!^__class__" ] + inherited_members: true + +::: sbi.inference.snre.bnre.BNRE + selection: + filters: [ "!^_", "^__", "!^__class__" ] + inherited_members: true + +::: sbi.inference.abc.mcabc.MCABC + selection: + filters: [ "!^_", "^__", "!^__class__" ] + inherited_members: true + +::: sbi.inference.abc.smcabc.SMCABC + selection: + filters: [ "!^_", "^__", "!^__class__" ] + inherited_members: true diff --git a/docs/docs/reference/models.md b/docs/docs/reference/models.md new file mode 100644 index 000000000..b2fe85ed7 --- /dev/null +++ b/docs/docs/reference/models.md @@ -0,0 +1,9 @@ +# Neural networks + +::: sbi.neural_nets.factory.posterior_nn + +::: sbi.neural_nets.factory.likelihood_nn + +::: sbi.neural_nets.factory.classifier_nn + +::: sbi.neural_nets.density_estimators.DensityEstimator diff --git a/docs/docs/reference/posteriors.md b/docs/docs/reference/posteriors.md new file mode 100644 index 000000000..4c510861a --- /dev/null +++ b/docs/docs/reference/posteriors.md @@ -0,0 +1,26 @@ +# Posteriors + +::: sbi.inference.posteriors.direct_posterior.DirectPosterior + selection: + filters: [ "!^_", "^__", "!^__class__" ] + inherited_members: true + +::: sbi.inference.posteriors.importance_posterior.ImportanceSamplingPosterior + selection: + filters: [ "!^_", "^__", "!^__class__" ] + inherited_members: true + +::: sbi.inference.posteriors.mcmc_posterior.MCMCPosterior + selection: + filters: [ "!^_", "^__", "!^__class__" ] + inherited_members: true + +::: sbi.inference.posteriors.rejection_posterior.RejectionPosterior + selection: + filters: [ "!^_", "^__", "!^__class__" ] + inherited_members: true + +::: sbi.inference.posteriors.vi_posterior.VIPosterior + selection: + filters: [ "!^_", "^__", "!^__class__" ] + inherited_members: true diff --git a/docs/docs/reference/potentials.md b/docs/docs/reference/potentials.md new file mode 100644 index 000000000..58dcaeadf --- /dev/null +++ b/docs/docs/reference/potentials.md @@ -0,0 +1,16 @@ +# Potentials + +::: sbi.inference.potentials.posterior_based_potential.posterior_estimator_based_potential + selection: + filters: [ "!^_", "^__", "!^__class__" ] + inherited_members: true + +::: sbi.inference.potentials.likelihood_based_potential.likelihood_estimator_based_potential + selection: + filters: [ "!^_", "^__", "!^__class__" ] + inherited_members: true + +::: sbi.inference.potentials.ratio_based_potential.ratio_estimator_based_potential + selection: + filters: [ "!^_", "^__", "!^__class__" ] + inherited_members: true diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index 22a8f05f5..6b226a415 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -28,10 +28,15 @@ nav: - Examples: - Hodgkin-Huxley example: examples/00_HH_simulator.md - Decision making model: examples/01_decision_making_model.md + - API Reference: + - Inference: reference/inference.md + - Neural Networks: reference/models.md + - Posteriors: reference/posteriors.md + - Potentials: reference/potentials.md + - Analysis: reference/analysis.md - Contributing: - Guide: contribute.md - Code of Conduct: code_of_conduct.md - - API Reference: reference.md - FAQ: faq.md - Credits: credits.md @@ -86,9 +91,13 @@ plugins: default_handler: python handlers: python: - rendering: + options: show_source: true - heading_level: 3 + heading_level: 2 + show_root_toc_entry: true + show_symbol_type_toc: true + show_root_full_path: false + show_root_heading: true watch: - ../sbi diff --git a/tutorials/04_density_estimators.ipynb b/tutorials/04_density_estimators.ipynb index 8a28a5432..18890f867 100644 --- a/tutorials/04_density_estimators.ipynb +++ b/tutorials/04_density_estimators.ipynb @@ -117,7 +117,15 @@ "source": [ "Finally, it is also possible to implement your own density estimator from scratch, e.g., including embedding nets to preprocess data, or to a density estimator architecture of your choice.\n", "\n", - "For this, the `density_estimator` argument needs to be a function that takes `theta` and `x` batches as arguments to then construct the density estimator after the first set of simulations was generated. Our factory functions in `sbi/neural_nets/factory.py` return such a function.\n" + "For this, the `density_estimator` argument needs to be a function that takes `theta` and `x` batches as arguments to then construct the density estimator after the first set of simulations was generated. Our factory functions in `sbi/neural_nets/factory.py` return such a function.\n", + "\n", + "The returned `density_estimator` object needs to be a subclass of [`DensityEstimator`](https://sbi-dev.github.io/sbi/reference/#sbi.neural_nets.density_estimators.DensityEstimator), which requires to implement three methods:\n", + " \n", + "- `log_prob(input, condition, **kwargs)`: Return the log probabilities of the inputs given a condition or multiple i.e. batched conditions.\n", + "- `loss(input, condition, **kwargs)`: Return the loss for training the density estimator.\n", + "- `sample(sample_shape, condition, **kwargs)`: Return samples from the density estimator.\n", + "\n", + "See more information on the [Reference API page](https://sbi-dev.github.io/sbi/reference/#sbi.neural_nets.density_estimators.DensityEstimator)" ] } ], From d1c50722ecf0b97a58a88c42043bb1a0d78cf010 Mon Sep 17 00:00:00 2001 From: Peter Steinbach Date: Mon, 25 Mar 2024 15:30:53 +0100 Subject: [PATCH 10/53] add: functional slow test of sbc providing consistent results (#1073) * add: functional slow test of sbc providing consistent results * fix: formatting of new code * fix: formatting as ruff something last time * fix: remove unneeded if-else block * fix: use SNPE instead * fix: simplified pytest parameter sweep * fix: formatting to comply with ruff * fix: formatting to comply with ruff * fix: simplied test by restricting to BoxUniform prior * fix: formatting to make ruff happy * fix: prior is not a test parameter anymore * fix: increased sbc num samples to make sbc results more significant --- tests/sbc_test.py | 60 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/tests/sbc_test.py b/tests/sbc_test.py index 57e3c15fd..fb42c722d 100644 --- a/tests/sbc_test.py +++ b/tests/sbc_test.py @@ -76,6 +76,66 @@ def simulator(theta): get_nltp(thetas, xs, posterior) +@pytest.mark.slow +@pytest.mark.parametrize("method", [SNPE]) +def test_consistent_sbc_results(method, model="mdn"): + """Tests running inference and then SBC and obtaining nltp.""" + + num_dim = 2 + prior = BoxUniform(-torch.ones(num_dim), torch.ones(num_dim)) + + num_simulations = 1000 + max_num_epochs = 20 + num_sbc_runs = 100 + + likelihood_shift = -1.0 * ones(num_dim) + likelihood_cov = 0.3 * eye(num_dim) + + def simulator(theta): + return linear_gaussian(theta, likelihood_shift, likelihood_cov) + + inferer = method(prior, show_progress_bars=False, density_estimator=model) + + theta, x = simulate_for_sbi(simulator, prior, num_simulations) + + _ = inferer.append_simulations(theta, x).train( + training_batch_size=100, max_num_epochs=max_num_epochs + ) + + posterior = inferer.build_posterior() + num_posterior_samples = 1000 + thetas = prior.sample((num_sbc_runs,)) + xs = simulator(thetas) + + mranks, mdaps = run_sbc( + thetas, + xs, + posterior, + num_workers=1, + num_posterior_samples=num_posterior_samples, + ) + mstats = check_sbc( + mranks, thetas, mdaps, num_posterior_samples=num_posterior_samples + ) + lranks, ldaps = run_sbc( + thetas, + xs, + posterior, + num_workers=1, + num_posterior_samples=num_posterior_samples, + reduce_fns=posterior.log_prob, + ) + lstats = check_sbc( + lranks, thetas, ldaps, num_posterior_samples=num_posterior_samples + ) + + assert lstats["ks_pvals"] > 0.05 + assert (mstats["ks_pvals"] > 0.05).all() + + assert lstats["c2st_ranks"] < 0.75 + assert (mstats["c2st_ranks"] < 0.75).all() + + def test_sbc_accuracy(): num_dim = 2 # Gaussian toy problem, set posterior = prior From c4160f0d1d815c68d30733aa71f4382c76bc58d6 Mon Sep 17 00:00:00 2001 From: Jan Date: Mon, 25 Mar 2024 18:07:54 +0100 Subject: [PATCH 11/53] fix ruff linting in pre-commit hook. (#1113) --- .pre-commit-config.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 3222c3d6e..a28b91c21 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -3,7 +3,6 @@ repos: rev: v0.3.3 hooks: - id: ruff - args: [--diff] - id: ruff-format args: [--diff] - repo: https://github.com/pre-commit/pre-commit-hooks From 3b63c9fc66a6ffb3328e5051a470ca4828e6cf96 Mon Sep 17 00:00:00 2001 From: Fabio Muratore <37794142+famura@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:28:06 +0100 Subject: [PATCH 12/53] Uniform and better MCMC params for the tests (#1107) --- pyproject.toml | 3 +- .../mixed_density_estimator.py | 6 +- sbi/utils/user_input_checks.py | 7 +- tests/conftest.py | 12 +++ tests/embedding_net_test.py | 7 +- tests/ensemble_test.py | 18 ++-- tests/inference_on_device_test.py | 40 +++++---- tests/linearGaussian_mdn_test.py | 18 ++-- tests/linearGaussian_snle_test.py | 61 +++++++------ tests/linearGaussian_snpe_test.py | 24 +++--- tests/linearGaussian_snre_test.py | 71 ++++++++-------- tests/mcmc_slice_pyro/test_slice.py | 85 +++++++++++++------ tests/mcmc_test.py | 21 +++-- tests/mnle_test.py | 57 +++++++------ tests/posterior_sampler_test.py | 20 ++--- tests/potential_test.py | 11 ++- tests/save_and_load_test.py | 4 +- tests/sbc_test.py | 13 ++- 18 files changed, 272 insertions(+), 206 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 6d4b54d8e..d18bca461 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -118,7 +118,8 @@ testpaths = [ ] markers = [ "slow: marks tests as slow (deselect with '-m \"not slow\"')", - "gpu: marks tests that require a gpu (deselect with '-m \"not gpu\"')" + "gpu: marks tests that require a gpu (deselect with '-m \"not gpu\"')", + "mcmc: marks tests that require MCMC sampling (deselect with '-m \"not mcmc\"')" ] # Pyright configuration diff --git a/sbi/neural_nets/density_estimators/mixed_density_estimator.py b/sbi/neural_nets/density_estimators/mixed_density_estimator.py index 2bd4e87fd..23a8124c4 100644 --- a/sbi/neural_nets/density_estimators/mixed_density_estimator.py +++ b/sbi/neural_nets/density_estimators/mixed_density_estimator.py @@ -150,7 +150,8 @@ def log_prob_iid(self, x: Tensor, context: Tensor) -> Tensor: inference. The speed up is achieved by exploiting the fact that there are only finite number of possible categories in the discrete part of the dat: one can just calculate the log probs for each possible category (given the current batch - of context) and then copy those log probs into the entire batch of iid categories. + of context) and then copy those log probs into the entire batch of iid + categories. For example, for the drift-diffusion model, there are only two choices, but often 100s or 1000 trials. With this method a evaluation over trials then passes a batch of `2 (one per choice) * num_contexts` into the NN, whereas the normal @@ -175,7 +176,8 @@ def log_prob_iid(self, x: Tensor, context: Tensor) -> Tensor: net_device = next(self.discrete_net.parameters()).device assert ( net_device == x.device and x.device == context.device - ), f"device mismatch: net, x, context: {net_device}, {x.device}, {context.device}." + ), f"device mismatch: net, x, context: \ + {net_device}, {x.device}, {context.device}." x_cont_repeated, x_disc_repeated = _separate_x(x_repeated) x_cont, x_disc = _separate_x(x) diff --git a/sbi/utils/user_input_checks.py b/sbi/utils/user_input_checks.py index ac04bbc7d..e02a214a7 100644 --- a/sbi/utils/user_input_checks.py +++ b/sbi/utils/user_input_checks.py @@ -610,8 +610,8 @@ def process_x( def prepare_for_sbi(simulator: Callable, prior) -> Tuple[Callable, Distribution]: """Prepare simulator and prior for usage in sbi. - NOTE: This method is deprecated as of sbi version v0.23.0. and will be removed in a future release. - Please use `process_prior` and `process_simulator` in the future. + NOTE: This method is deprecated as of sbi version v0.23.0. and will be removed in a + future release. Please use `process_prior` and `process_simulator` in the future. This is a wrapper around `process_prior` and `process_simulator` which can be used in isolation as well. @@ -633,7 +633,8 @@ def prepare_for_sbi(simulator: Callable, prior) -> Tuple[Callable, Distribution] """ warnings.warn( - "This method is deprecated as of sbi version v0.23.0. and will be removed in a future release." + "This method is deprecated as of sbi version v0.23.0. and will be removed in a \ + future release." "Please use `process_prior` and `process_simulator` in the future.", DeprecationWarning, stacklevel=2, diff --git a/tests/conftest.py b/tests/conftest.py index aef50b3f9..2c2ea9ff0 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -29,3 +29,15 @@ def pytest_collection_modifyitems(config, items): for item in items: if "gpu" in item.keywords: item.add_marker(skip_gpu) + + +@pytest.fixture(scope="function") +def mcmc_params_accurate() -> dict: + """Fixture for MCMC parameters for functional tests.""" + return dict(num_chains=20, thin=2, warmup_steps=50) + + +@pytest.fixture(scope="function") +def mcmc_params_fast() -> dict: + """Fixture for MCMC parameters for fast tests.""" + return dict(num_chains=1, thin=1, warmup_steps=10) diff --git a/tests/embedding_net_test.py b/tests/embedding_net_test.py index e7a6a82cc..c9fd76822 100644 --- a/tests/embedding_net_test.py +++ b/tests/embedding_net_test.py @@ -21,10 +21,13 @@ from .test_utils import check_c2st +@pytest.mark.mcmc @pytest.mark.parametrize("method", ["SNPE", "SNLE", "SNRE"]) @pytest.mark.parametrize("num_dim", [1, 2]) @pytest.mark.parametrize("embedding_net", ["mlp"]) -def test_embedding_net_api(method, num_dim: int, embedding_net: str): +def test_embedding_net_api( + method, num_dim: int, embedding_net: str, mcmc_params_fast: dict +): """Tests the API when using a preconfigured embedding net.""" x_o = zeros(1, num_dim) @@ -62,7 +65,7 @@ def test_embedding_net_api(method, num_dim: int, embedding_net: str): _ = inference.append_simulations(theta, x).train(max_num_epochs=2) posterior = inference.build_posterior( mcmc_method="slice_np_vectorized", - mcmc_parameters=dict(num_chains=2, warmup_steps=10, thin=5), + mcmc_parameters=mcmc_params_fast, ).set_default_x(x_o) s = posterior.sample((1,)) diff --git a/tests/ensemble_test.py b/tests/ensemble_test.py index 600b0421f..62ac29a61 100644 --- a/tests/ensemble_test.py +++ b/tests/ensemble_test.py @@ -48,13 +48,15 @@ def simulator(theta): ( (SNPE_C, 1), pytest.param(SNPE_C, 5, marks=pytest.mark.xfail), - (SNLE_A, 1), - (SNLE_A, 5), - (SNRE_A, 1), - (SNRE_A, 5), + pytest.param(SNLE_A, 1, marks=pytest.mark.mcmc), + pytest.param(SNLE_A, 5, marks=pytest.mark.mcmc), + pytest.param(SNRE_A, 1, marks=pytest.mark.mcmc), + pytest.param(SNRE_A, 5, marks=pytest.mark.mcmc), ), ) -def test_c2st_posterior_ensemble_on_linearGaussian(inference_method, num_trials): +def test_c2st_posterior_ensemble_on_linearGaussian( + inference_method, num_trials, mcmc_params_accurate: dict +): """Test whether EnsemblePosterior infers well a simple example with available ground truth. """ @@ -63,7 +65,7 @@ def test_c2st_posterior_ensemble_on_linearGaussian(inference_method, num_trials) ensemble_size = 2 x_o = zeros(num_trials, num_dim) num_samples = 500 - num_simulations = 2000 if inference_method == SNRE_A else 1500 + num_simulations = 2000 # likelihood_mean will be likelihood_shift+theta likelihood_shift = -1.0 * ones(num_dim) @@ -100,10 +102,8 @@ def simulator(theta): if isinstance(inferer, (SNLE_A, SNRE_A)): samples = posterior.sample( (num_samples,), - num_chains=20, method="slice_np_vectorized", - thin=5, - warmup_steps=50, + **mcmc_params_accurate, ) else: samples = posterior.sample((num_samples,)) diff --git a/tests/inference_on_device_test.py b/tests/inference_on_device_test.py index 31032ebc4..dd87da969 100644 --- a/tests/inference_on_device_test.py +++ b/tests/inference_on_device_test.py @@ -45,20 +45,20 @@ [ (SNPE_C, "maf", "direct"), (SNPE_C, "mdn", "rejection"), - (SNPE_C, "maf", "slice_np_vectorized"), - (SNPE_C, "mdn", "slice"), - (SNLE, "nsf", "slice_np_vectorized"), - (SNLE, "mdn", "slice"), + pytest.param(SNPE_C, "maf", "slice_np_vectorized", marks=pytest.mark.mcmc), + pytest.param(SNPE_C, "mdn", "slice", marks=pytest.mark.mcmc), + pytest.param(SNLE, "nsf", "slice_np_vectorized", marks=pytest.mark.mcmc), + pytest.param(SNLE, "mdn", "slice", marks=pytest.mark.mcmc), (SNLE, "nsf", "rejection"), (SNLE, "maf", "importance"), - (SNRE_A, "mlp", "slice_np_vectorized"), - (SNRE_A, "mlp", "slice"), + pytest.param(SNRE_A, "mlp", "slice_np_vectorized", marks=pytest.mark.mcmc), + pytest.param(SNRE_A, "mlp", "slice", marks=pytest.mark.mcmc), (SNRE_B, "resnet", "rejection"), (SNRE_B, "resnet", "importance"), - (SNRE_B, "resnet", "slice"), + pytest.param(SNRE_B, "resnet", "slice", marks=pytest.mark.mcmc), (SNRE_C, "resnet", "rejection"), (SNRE_C, "resnet", "importance"), - (SNRE_C, "resnet", "nuts"), + pytest.param(SNRE_C, "resnet", "nuts", marks=pytest.mark.mcmc), ], ) @pytest.mark.parametrize( @@ -71,7 +71,13 @@ ) @pytest.mark.parametrize("prior_type", ["gaussian", "uniform"]) def test_training_and_mcmc_on_device( - method, model, sampling_method, training_device, prior_device, prior_type + method, + model, + sampling_method, + training_device, + prior_device, + prior_type, + mcmc_params_fast: dict, ): """Test training on devices. @@ -85,9 +91,11 @@ def test_training_and_mcmc_on_device( num_dim = 2 num_samples = 10 - num_simulations = 100 - max_num_epochs = 2 + max_num_epochs = 10 num_rounds = 2 # test proposal sampling in round 2. + num_simulations_per_round = [200, num_samples] + # use more warmup steps to avoid Infs during MCMC in round two. + mcmc_params_fast["warmup_steps"] = 20 x_o = zeros(1, num_dim).to(data_device) likelihood_shift = -1.0 * ones(num_dim).to(prior_device) @@ -134,7 +142,7 @@ def simulator(theta): proposals = [prior] for _ in range(num_rounds): - theta = proposals[-1].sample((num_simulations,)) + theta = proposals[-1].sample((num_simulations_per_round[_],)) x = simulator(theta).to(data_device) theta = theta.to(data_device) @@ -147,10 +155,7 @@ def simulator(theta): posterior = inferer.build_posterior( sample_with="mcmc", mcmc_method=sampling_method, - mcmc_parameters=dict( - thin=10 if sampling_method == "slice_np_vectorized" else 1, - num_chains=10 if sampling_method == "slice_np_vectorized" else 1, - ), + mcmc_parameters=mcmc_params_fast, ) elif sampling_method in ["rejection", "direct"]: # all other cases: rejection, direct @@ -331,6 +336,7 @@ def test_embedding_nets_integration_training_device( embedding_net_device: str, data_device: str, training_device: str, + mcmc_params_fast: dict, ) -> None: """Test embedding nets integration with different devices, priors and methods.""" # add other methods @@ -436,7 +442,7 @@ def test_embedding_nets_integration_training_device( if inference_method == SNPE_A else dict( mcmc_method="slice_np_vectorized", - mcmc_parameters=dict(thin=10, num_chains=20, warmup_steps=10), + mcmc_parameters=mcmc_params_fast, ) ), ) diff --git a/tests/linearGaussian_mdn_test.py b/tests/linearGaussian_mdn_test.py index 273e75ad6..cd06787c1 100644 --- a/tests/linearGaussian_mdn_test.py +++ b/tests/linearGaussian_mdn_test.py @@ -23,16 +23,10 @@ from tests.test_utils import check_c2st -def test_mdn_with_snpe(): - mdn_inference_with_different_methods(SNPE) - - -@pytest.mark.slow -def test_mdn_with_snle(): - mdn_inference_with_different_methods(SNLE) - - -def mdn_inference_with_different_methods(method): +@pytest.mark.parametrize( + "method", (SNPE, pytest.param(SNLE, marks=[pytest.mark.slow, pytest.mark.mcmc])) +) +def test_mdn_inference_with_different_methods(method, mcmc_params_accurate: dict): num_dim = 2 x_o = torch.tensor([[1.0, 0.0]]) num_samples = 500 @@ -68,9 +62,7 @@ def simulator(theta: Tensor) -> Tensor: theta_transform=theta_transform, proposal=prior, method="slice_np_vectorized", - num_chains=20, - warmup_steps=50, - thin=5, + **mcmc_params_accurate, ) samples = posterior.sample((num_samples,), x=x_o) diff --git a/tests/linearGaussian_snle_test.py b/tests/linearGaussian_snle_test.py index ff57e36d8..2eedf9404 100644 --- a/tests/linearGaussian_snle_test.py +++ b/tests/linearGaussian_snle_test.py @@ -32,18 +32,12 @@ from .test_utils import check_c2st, get_prob_outside_uniform_prior -# mcmc params for fast testing. -mcmc_parameters = { - "method": "slice_np_vectorized", - "num_chains": 20, - "thin": 5, - "warmup_steps": 50, -} - @pytest.mark.parametrize("num_dim", (1,)) # dim 3 is tested below. @pytest.mark.parametrize("prior_str", ("uniform", "gaussian")) -def test_api_snle_multiple_trials_and_rounds_map(num_dim: int, prior_str: str): +def test_api_snle_multiple_trials_and_rounds_map( + num_dim: int, prior_str: str, mcmc_params_fast: dict +): """Test SNLE API with 2 rounds, different priors num trials and MAP.""" num_rounds = 2 num_samples = 1 @@ -74,14 +68,16 @@ def test_api_snle_multiple_trials_and_rounds_map(num_dim: int, prior_str: str): x_o = zeros((num_trials, num_dim)) posterior = inference.build_posterior( mcmc_method="slice_np_vectorized", - mcmc_parameters=dict(num_chains=10, thin=10, warmup_steps=10), + mcmc_parameters=mcmc_params_fast, ).set_default_x(x_o) posterior.sample(sample_shape=(num_samples,)) proposals.append(posterior) posterior.map(num_iter=1) -def test_c2st_snl_on_linear_gaussian_different_dims(model_str="maf"): +def test_c2st_snl_on_linear_gaussian_different_dims( + mcmc_params_accurate: dict, model_str="maf" +): """Test SNLE on linear Gaussian task with different theta and x dims.""" theta_dim = 3 @@ -131,7 +127,8 @@ def simulator(theta): proposal=prior, potential_fn=potential_fn, theta_transform=theta_transform, - **mcmc_parameters, + method="slice_np_vectorized", + **mcmc_params_accurate, ) samples = posterior.sample((num_samples,)) @@ -144,7 +141,7 @@ def simulator(theta): @pytest.mark.parametrize("prior_str", ("uniform", "gaussian")) @pytest.mark.parametrize("model_str", ("maf", "zuko_maf")) def test_c2st_and_map_snl_on_linearGaussian_different( - num_dim: int, prior_str: str, model_str: str + num_dim: int, prior_str: str, model_str: str, mcmc_params_accurate: dict ): """Test SNL on linear Gaussian, comparing to ground truth posterior via c2st. @@ -206,7 +203,8 @@ def simulator(theta): proposal=prior, potential_fn=potential_fn, theta_transform=theta_transform, - **mcmc_parameters, + method="slice_np_vectorized", + **mcmc_params_accurate, ) samples = posterior.sample(sample_shape=(num_samples,)) @@ -273,7 +271,9 @@ def simulator(theta): @pytest.mark.slow @pytest.mark.parametrize("num_trials", (1, 3)) -def test_c2st_multi_round_snl_on_linearGaussian(num_trials: int): +def test_c2st_multi_round_snl_on_linearGaussian( + num_trials: int, mcmc_params_accurate: dict +): """Test SNL on linear Gaussian, comparing to ground truth posterior via c2st.""" num_dim = 2 @@ -309,7 +309,8 @@ def simulator(theta): proposal=prior, potential_fn=potential_fn, theta_transform=theta_transform, - **mcmc_parameters, + method="slice_np_vectorized", + **mcmc_params_accurate, ) theta, x = simulate_for_sbi( @@ -326,7 +327,8 @@ def simulator(theta): proposal=prior, potential_fn=potential_fn, theta_transform=theta_transform, - **mcmc_parameters, + method="slice_np_vectorized", + **mcmc_params_accurate, ) samples = posterior.sample(sample_shape=(num_samples,)) @@ -400,15 +402,15 @@ def simulator(theta): @pytest.mark.parametrize( "sampling_method, prior_str", ( - ("slice_np", "gaussian"), - ("slice_np", "uniform"), - ("slice_np_vectorized", "gaussian"), - ("slice_np_vectorized", "uniform"), - ("slice", "gaussian"), - ("slice", "uniform"), - ("nuts", "gaussian"), - ("nuts", "uniform"), - ("hmc", "gaussian"), + pytest.param("slice_np", "gaussian", marks=pytest.mark.mcmc), + pytest.param("slice_np", "uniform", marks=pytest.mark.mcmc), + pytest.param("slice_np_vectorized", "gaussian", marks=pytest.mark.mcmc), + pytest.param("slice_np_vectorized", "uniform", marks=pytest.mark.mcmc), + pytest.param("slice", "gaussian", marks=pytest.mark.mcmc), + pytest.param("slice", "uniform", marks=pytest.mark.mcmc), + pytest.param("nuts", "gaussian", marks=pytest.mark.mcmc), + pytest.param("nuts", "uniform", marks=pytest.mark.mcmc), + pytest.param("hmc", "gaussian", marks=pytest.mark.mcmc), ("rejection", "uniform"), ("rejection", "gaussian"), ("rKL", "uniform"), @@ -425,7 +427,7 @@ def simulator(theta): ) @pytest.mark.parametrize("init_strategy", ("proposal", "resample", "sir")) def test_api_snl_sampling_methods( - sampling_method: str, prior_str: str, init_strategy: str + sampling_method: str, prior_str: str, init_strategy: str, mcmc_params_fast: dict ): """Runs SNL on linear Gaussian and tests sampling from posterior via mcmc. @@ -440,8 +442,6 @@ def test_api_snl_sampling_methods( num_trials = 2 num_simulations = 1000 x_o = zeros((num_trials, num_dim)) - # Test for multiple chains is cheap when vectorized. - num_chains = 10 if sampling_method == "slice_np_vectorized" else 1 if sampling_method == "rejection": sample_with = "rejection" elif ( @@ -489,9 +489,8 @@ def test_api_snl_sampling_methods( proposal=prior, theta_transform=theta_transform, method=sampling_method, - thin=5, - num_chains=num_chains, init_strategy=init_strategy, + **mcmc_params_fast, ) elif sample_with == "importance": posterior = ImportanceSamplingPosterior( diff --git a/tests/linearGaussian_snpe_test.py b/tests/linearGaussian_snpe_test.py index 34819bb3e..cbc0d3bdd 100644 --- a/tests/linearGaussian_snpe_test.py +++ b/tests/linearGaussian_snpe_test.py @@ -388,13 +388,15 @@ def simulator(theta): @pytest.mark.parametrize( "sample_with, mcmc_method, prior_str", ( - ("mcmc", "slice_np", "gaussian"), - ("mcmc", "slice", "gaussian"), - ("mcmc", "slice_np_vectorized", "gaussian"), + pytest.param("mcmc", "slice_np", "gaussian", marks=pytest.mark.mcmc), + pytest.param("mcmc", "slice", "gaussian", marks=pytest.mark.mcmc), + pytest.param("mcmc", "slice_np_vectorized", "gaussian", marks=pytest.mark.mcmc), ("rejection", "rejection", "uniform"), ), ) -def test_api_snpe_c_posterior_correction(sample_with, mcmc_method, prior_str): +def test_api_snpe_c_posterior_correction( + sample_with, mcmc_method, prior_str, mcmc_params_fast: dict +): """Test that leakage correction applied to sampling works, with both MCMC and rejection. @@ -430,9 +432,7 @@ def simulator(theta): theta_transform=theta_transform, proposal=prior, method=mcmc_method, - num_chains=10 if mcmc_method == "slice_np_vectorized" else 1, - warmup_steps=10, - thin=1, + **mcmc_params_fast, ) elif sample_with == "rejection": posterior = RejectionPosterior( @@ -491,7 +491,8 @@ def simulator(theta): @pytest.mark.slow -def test_sample_conditional(): +@pytest.mark.mcmc +def test_sample_conditional(mcmc_params_accurate: dict): """ Test whether sampling from the conditional gives the same results as evaluating. @@ -508,10 +509,6 @@ def test_sample_conditional(): num_simulations = 6000 num_conditional_samples = 500 - mcmc_parameters = dict( - method="slice_np_vectorized", num_chains=20, warmup_steps=50, thin=5 - ) - x_o = zeros(1, num_dim) likelihood_shift = -1.0 * ones(num_dim) @@ -563,7 +560,8 @@ def simulator(theta): potential_fn=conditioned_potential_fn, theta_transform=restricted_tf, proposal=restricted_prior, - **mcmc_parameters, + method="slice_np_vectorized", + **mcmc_params_accurate, ) mcmc_posterior.set_default_x(x_o) # TODO: This test has a bug? Needed to add this cond_samples = mcmc_posterior.sample((num_conditional_samples,)) diff --git a/tests/linearGaussian_snre_test.py b/tests/linearGaussian_snre_test.py index 10c5e4aca..086c7ce73 100644 --- a/tests/linearGaussian_snre_test.py +++ b/tests/linearGaussian_snre_test.py @@ -35,25 +35,19 @@ get_prob_outside_uniform_prior, ) -# mcmc params for fast testing. -mcmc_parameters = { - "method": "slice_np_vectorized", - "num_chains": 20, - "thin": 5, - "warmup_steps": 50, -} - +@pytest.mark.mcmc @pytest.mark.parametrize("num_dim", (1,)) # dim 3 is tested below. @pytest.mark.parametrize("snre_method", (SNRE_B, SNRE_C)) def test_api_snre_multiple_trials_and_rounds_map( - num_dim: int, snre_method: RatioEstimator + num_dim: int, + snre_method: RatioEstimator, + mcmc_params_fast: dict, + num_rounds: int = 2, + num_samples: int = 12, + num_simulations: int = 100, ): """Test SNRE API with 2 rounds, different priors num trials and MAP.""" - - num_rounds = 2 - num_samples = 1 - num_simulations = 100 prior = MultivariateNormal(loc=zeros(num_dim), covariance_matrix=eye(num_dim)) simulator = diagonal_linear_gaussian @@ -74,15 +68,18 @@ def test_api_snre_multiple_trials_and_rounds_map( x_o = zeros((num_trials, num_dim)) posterior = inference.build_posterior( mcmc_method="slice_np_vectorized", - mcmc_parameters=dict(num_chains=10, thin=5, warmup_steps=10), + mcmc_parameters=mcmc_params_fast, ).set_default_x(x_o) posterior.sample(sample_shape=(num_samples,)) proposals.append(posterior) posterior.map(num_iter=1) +@pytest.mark.mcmc @pytest.mark.parametrize("snre_method", (SNRE_B, SNRE_C)) -def test_c2st_sre_on_linearGaussian(snre_method: RatioEstimator): +def test_c2st_sre_on_linearGaussian( + snre_method: RatioEstimator, mcmc_params_accurate: dict +): """Test whether SRE infers well a simple example with available ground truth. This example has different number of parameters theta than number of x. This test @@ -134,7 +131,8 @@ def simulator(theta): potential_fn=potential_fn, theta_transform=theta_transform, proposal=prior, - **mcmc_parameters, + method="slice_np_vectorized", + **mcmc_params_accurate, ) samples = posterior.sample((num_samples,)) @@ -142,12 +140,16 @@ def simulator(theta): check_c2st(samples, target_samples, alg=f"{snre_method.__name__}") +@pytest.mark.mcmc @pytest.mark.slow @pytest.mark.parametrize("snre_method", (SNRE_A, SNRE_B, SNRE_C, BNRE)) @pytest.mark.parametrize("prior_str", ("gaussian", "uniform")) @pytest.mark.parametrize("num_trials", (3,)) # num_trials=1 is tested above. def test_c2st_snre_variants_on_linearGaussian_with_multiple_trials( - snre_method: RatioEstimator, prior_str: str, num_trials: int + snre_method: RatioEstimator, + prior_str: str, + num_trials: int, + mcmc_params_accurate: dict, ): """Test C2ST and MAP accuracy of SNRE variants on linear gaussian. @@ -158,7 +160,7 @@ def test_c2st_snre_variants_on_linearGaussian_with_multiple_trials( """ num_dim = 2 - num_simulations = 1500 + num_simulations = 1750 num_samples = 500 x_o = zeros(num_trials, num_dim) @@ -199,7 +201,8 @@ def simulator(theta): potential_fn=potential_fn, theta_transform=theta_transform, proposal=prior, - **mcmc_parameters, + method="slice_np_vectorized", + **mcmc_params_accurate, ) samples = posterior.sample(sample_shape=(num_samples,)) @@ -319,15 +322,15 @@ def simulator(theta): @pytest.mark.parametrize( "sampling_method, prior_str", ( - ("slice_np", "gaussian"), - ("slice_np", "uniform"), - ("slice_np_vectorized", "gaussian"), - ("slice_np_vectorized", "uniform"), - ("slice", "gaussian"), - ("slice", "uniform"), - ("nuts", "gaussian"), - ("nuts", "uniform"), - ("hmc", "gaussian"), + pytest.param("slice_np", "gaussian", marks=pytest.mark.mcmc), + pytest.param("slice_np", "uniform", marks=pytest.mark.mcmc), + pytest.param("slice_np_vectorized", "gaussian", marks=pytest.mark.mcmc), + pytest.param("slice_np_vectorized", "uniform", marks=pytest.mark.mcmc), + pytest.param("slice", "gaussian", marks=pytest.mark.mcmc), + pytest.param("slice", "uniform", marks=pytest.mark.mcmc), + pytest.param("nuts", "gaussian", marks=pytest.mark.mcmc), + pytest.param("nuts", "uniform", marks=pytest.mark.mcmc), + pytest.param("hmc", "gaussian", marks=pytest.mark.mcmc), ("rejection", "uniform"), ("rejection", "gaussian"), ("rKL", "uniform"), @@ -342,7 +345,9 @@ def simulator(theta): ("importance", "gaussian"), ), ) -def test_api_sre_sampling_methods(sampling_method: str, prior_str: str): +def test_api_sre_sampling_methods( + sampling_method: str, prior_str: str, mcmc_params_fast: dict +): """Test leakage correction both for MCMC and rejection sampling. Args: @@ -356,7 +361,7 @@ def test_api_sre_sampling_methods(sampling_method: str, prior_str: str): num_simulations = 100 x_o = zeros((num_trials, num_dim)) # Test for multiple chains is cheap when vectorized. - num_chains = 5 if sampling_method == "slice_np_vectorized" else 1 + if sampling_method == "rejection": sample_with = "rejection" elif ( @@ -393,14 +398,12 @@ def test_api_sre_sampling_methods(sampling_method: str, prior_str: str): or "nuts" in sampling_method or "hmc" in sampling_method ): - mcmc_parameters.update({"num_chains": num_chains}) - mcmc_parameters.update({"method": sampling_method}) - posterior = MCMCPosterior( potential_fn, proposal=prior, theta_transform=theta_transform, - **mcmc_parameters, + method=sampling_method, + **mcmc_params_fast, ) elif sample_with == "importance": posterior = ImportanceSamplingPosterior( diff --git a/tests/mcmc_slice_pyro/test_slice.py b/tests/mcmc_slice_pyro/test_slice.py index 686216ee0..22c1766fc 100644 --- a/tests/mcmc_slice_pyro/test_slice.py +++ b/tests/mcmc_slice_pyro/test_slice.py @@ -137,6 +137,7 @@ def jit_idfn(param): return "JIT={}".format(param) +@pytest.mark.mcmc @pytest.mark.parametrize( T._fields, TEST_CASES, @@ -181,9 +182,10 @@ def test_slice_conjugate_gaussian( assert_equal(rmse(latent_std, expected_std).item(), 0.0, prec=std_tol) +@pytest.mark.mcmc @pytest.mark.parametrize("jit", [False, mark_jit(True)], ids=jit_idfn) @pytest.mark.parametrize("num_chains", [1, 2]) -def test_logistic_regression(jit, num_chains): +def test_logistic_regression(jit, num_chains, mcmc_params_fast: dict): dim = 3 data = torch.randn(2000, dim) true_coefs = torch.arange(1.0, dim + 1.0) @@ -196,20 +198,16 @@ def model(data): return y slice_kernel = Slice(model, jit_compile=jit, ignore_jit_warnings=True) - mcmc = MCMC( - slice_kernel, - num_samples=500, - warmup_steps=100, - num_chains=num_chains, - mp_context="fork", - available_cpu=1, - ) + mcmc_params_fast["num_chains"] = num_chains + mcmc_params_fast.pop("thin") # thinning is not supported + mcmc = MCMC(slice_kernel, num_samples=500, available_cpu=1, **mcmc_params_fast) mcmc.run(data) samples = mcmc.get_samples() assert_equal(rmse(true_coefs, samples["beta"].mean(0)).item(), 0.0, prec=0.1) -def test_beta_bernoulli(): +@pytest.mark.mcmc +def test_beta_bernoulli(mcmc_params_fast: dict): def model(data): alpha = torch.tensor([1.1, 1.1]) beta = torch.tensor([1.1, 1.1]) @@ -220,14 +218,17 @@ def model(data): true_probs = torch.tensor([0.9, 0.1]) data = dist.Bernoulli(true_probs).sample(sample_shape=(torch.Size((1200,)))) slice_kernel = Slice(model) - mcmc = MCMC(slice_kernel, num_samples=400, warmup_steps=200) + mcmc = MCMC( + slice_kernel, num_samples=400, warmup_steps=mcmc_params_fast["warmup_steps"] + ) mcmc.run(data) samples = mcmc.get_samples() assert_equal(samples["p_latent"].mean(0), true_probs, prec=0.02) +@pytest.mark.mcmc @pytest.mark.parametrize("jit", [False, mark_jit(True)], ids=jit_idfn) -def test_gamma_normal(jit): +def test_gamma_normal(jit, mcmc_params_fast: dict): def model(data): rate = torch.tensor([1.0, 1.0]) concentration = torch.tensor([1.0, 1.0]) @@ -238,14 +239,17 @@ def model(data): true_std = torch.tensor([0.5, 2]) data = dist.Normal(3, true_std).sample(sample_shape=(torch.Size((2000,)))) slice_kernel = Slice(model, jit_compile=jit, ignore_jit_warnings=True) - mcmc = MCMC(slice_kernel, num_samples=200, warmup_steps=100) + mcmc = MCMC( + slice_kernel, num_samples=200, warmup_steps=mcmc_params_fast["warmup_steps"] + ) mcmc.run(data) samples = mcmc.get_samples() assert_equal(samples["p_latent"].mean(0), true_std, prec=0.05) +@pytest.mark.mcmc @pytest.mark.parametrize("jit", [False, mark_jit(True)], ids=jit_idfn) -def test_dirichlet_categorical(jit): +def test_dirichlet_categorical(jit, mcmc_params_fast: dict): def model(data): concentration = torch.tensor([1.0, 1.0, 1.0]) p_latent = pyro.sample("p_latent", dist.Dirichlet(concentration)) @@ -255,16 +259,19 @@ def model(data): true_probs = torch.tensor([0.1, 0.6, 0.3]) data = dist.Categorical(true_probs).sample(sample_shape=(torch.Size((2000,)))) slice_kernel = Slice(model, jit_compile=jit, ignore_jit_warnings=True) - mcmc = MCMC(slice_kernel, num_samples=200, warmup_steps=100) + mcmc = MCMC( + slice_kernel, num_samples=200, warmup_steps=mcmc_params_fast["warmup_steps"] + ) mcmc.run(data) samples = mcmc.get_samples() posterior = samples["p_latent"] assert_equal(posterior.mean(0), true_probs, prec=0.02) +@pytest.mark.mcmc @pytest.mark.parametrize("jit", [False, mark_jit(True)], ids=jit_idfn) @pytest.mark.skip(reason="Slice sampling not implemented for multiple sites yet.") -def test_gamma_beta(jit): +def test_gamma_beta(jit, mcmc_params_fast: dict): def model(data): alpha_prior = pyro.sample("alpha", dist.Gamma(concentration=1.0, rate=1.0)) beta_prior = pyro.sample("beta", dist.Gamma(concentration=1.0, rate=1.0)) @@ -280,16 +287,19 @@ def model(data): torch.Size((5000,)) ) slice_kernel = Slice(model, jit_compile=jit, ignore_jit_warnings=True) - mcmc = MCMC(slice_kernel, num_samples=500, warmup_steps=200) + mcmc = MCMC( + slice_kernel, num_samples=500, warmup_steps=mcmc_params_fast["warmup_steps"] + ) mcmc.run(data) samples = mcmc.get_samples() assert_equal(samples["alpha"].mean(0), true_alpha, prec=0.08) assert_equal(samples["beta"].mean(0), true_beta, prec=0.05) +@pytest.mark.mcmc @pytest.mark.parametrize("jit", [False, mark_jit(True)], ids=jit_idfn) @pytest.mark.skip(reason="Slice sampling not implemented for multiple sites yet.") -def test_gaussian_mixture_model(jit): +def test_gaussian_mixture_model(jit, mcmc_params_fast: dict): K, N = 3, 1000 def gmm(data): @@ -312,7 +322,9 @@ def gmm(data): slice_kernel = Slice( gmm, max_plate_nesting=1, jit_compile=jit, ignore_jit_warnings=True ) - mcmc = MCMC(slice_kernel, num_samples=300, warmup_steps=100) + mcmc = MCMC( + slice_kernel, num_samples=300, warmup_steps=mcmc_params_fast["warmup_steps"] + ) mcmc.run(data) samples = mcmc.get_samples() assert_equal(samples["phi"].mean(0).sort()[0], true_mix_proportions, prec=0.05) @@ -321,9 +333,10 @@ def gmm(data): ) +@pytest.mark.mcmc @pytest.mark.parametrize("jit", [False, mark_jit(True)], ids=jit_idfn) @pytest.mark.skip(reason="Slice sampling not implemented for multiple sites yet.") -def test_bernoulli_latent_model(jit): +def test_bernoulli_latent_model(jit, mcmc_params_fast: dict): @poutine.broadcast def model(data): y_prob = pyro.sample("y_prob", dist.Beta(1.0, 1.0)) @@ -340,15 +353,21 @@ def model(data): slice_kernel = Slice( model, max_plate_nesting=1, jit_compile=jit, ignore_jit_warnings=True ) - mcmc = MCMC(slice_kernel, num_samples=600, warmup_steps=200) + mcmc = MCMC( + slice_kernel, + num_samples=600, + warmup_steps=mcmc_params_fast["warmup_steps"], + num_chains=1, + ) mcmc.run(data) samples = mcmc.get_samples() assert_equal(samples["y_prob"].mean(0), y_prob, prec=0.05) +@pytest.mark.mcmc @pytest.mark.parametrize("num_steps", [2, 3, 30]) @pytest.mark.skip(reason="Slice sampling not implemented for multiple sites yet.") -def test_gaussian_hmm(num_steps): +def test_gaussian_hmm(num_steps, mcmc_params_fast: dict): dim = 4 def model(data): @@ -406,13 +425,16 @@ def _generate_data(): ) if num_steps == 30: slice_kernel.initial_trace = _get_initial_trace() - mcmc = MCMC(slice_kernel, num_samples=5, warmup_steps=5) + mcmc = MCMC( + slice_kernel, num_samples=5, warmup_steps=mcmc_params_fast["warmup_steps"] + ) mcmc.run(data) +@pytest.mark.mcmc @pytest.mark.parametrize("hyperpriors", [False, True]) @pytest.mark.skip(reason="Slice sampling not implemented for multiple sites yet.") -def test_beta_binomial(hyperpriors): +def test_beta_binomial(hyperpriors, mcmc_params_fast: dict): def model(data): with pyro.plate("plate_0", data.shape[-1]): alpha = ( @@ -444,16 +466,21 @@ def model(data): hmc_kernel = Slice( collapse_conjugate(model), jit_compile=True, ignore_jit_warnings=True ) - mcmc = MCMC(hmc_kernel, num_samples=num_samples, warmup_steps=50) + mcmc = MCMC( + hmc_kernel, + num_samples=num_samples, + warmup_steps=mcmc_params_fast["warmup_steps"], + ) mcmc.run(data) samples = mcmc.get_samples() posterior = posterior_replay(model, samples, data, num_samples=num_samples) assert_equal(posterior["probs"].mean(0), true_probs, prec=0.05) +@pytest.mark.mcmc @pytest.mark.parametrize("hyperpriors", [False, True]) @pytest.mark.skip(reason="Slice sampling not implemented for multiple sites yet.") -def test_gamma_poisson(hyperpriors): +def test_gamma_poisson(hyperpriors, mcmc_params_fast: dict): def model(data): with pyro.plate("latent_dim", data.shape[1]): alpha = ( @@ -477,7 +504,11 @@ def model(data): slice_kernel = Slice( collapse_conjugate(model), jit_compile=True, ignore_jit_warnings=True ) - mcmc = MCMC(slice_kernel, num_samples=num_samples, warmup_steps=50) + mcmc = MCMC( + slice_kernel, + num_samples=num_samples, + warmup_steps=mcmc_params_fast["warmup_steps"], + ) mcmc.run(data) samples = mcmc.get_samples() posterior = posterior_replay(model, samples, data, num_samples=num_samples) diff --git a/tests/mcmc_test.py b/tests/mcmc_test.py index 218d405a6..d2ebae928 100644 --- a/tests/mcmc_test.py +++ b/tests/mcmc_test.py @@ -32,6 +32,7 @@ from tests.test_utils import check_c2st +@pytest.mark.mcmc @pytest.mark.parametrize("num_dim", (1, 2)) def test_c2st_slice_np_on_Gaussian(num_dim: int): """Test MCMC on Gaussian, comparing to ground truth target via c2st. @@ -72,11 +73,12 @@ def lp_f(x): check_c2st(samples, target_samples, alg="slice_np") +@pytest.mark.mcmc @pytest.mark.parametrize("num_dim", (1, 2)) @pytest.mark.parametrize("slice_sampler", (SliceSamplerVectorized, SliceSamplerSerial)) @pytest.mark.parametrize("num_workers", (1, 2)) def test_c2st_slice_np_vectorized_parallelized_on_Gaussian( - num_dim: int, slice_sampler, num_workers: int + num_dim: int, slice_sampler, num_workers: int, mcmc_params_accurate: dict ): """Test MCMC on Gaussian, comparing to ground truth target via c2st. @@ -85,9 +87,13 @@ def test_c2st_slice_np_vectorized_parallelized_on_Gaussian( """ num_samples = 500 - warmup = 50 - num_chains = 10 if slice_sampler is SliceSamplerVectorized else 1 - thin = 2 + warmup = mcmc_params_accurate["warmup_steps"] + num_chains = ( + mcmc_params_accurate["num_chains"] + if slice_sampler is SliceSamplerVectorized + else 1 + ) + thin = mcmc_params_accurate["thin"] likelihood_shift = -1.0 * ones(num_dim) likelihood_cov = 0.3 * eye(num_dim) @@ -129,6 +135,7 @@ def lp_f(x): check_c2st(samples, target_samples, alg=alg) +@pytest.mark.mcmc @pytest.mark.parametrize( "method", ( @@ -139,7 +146,7 @@ def lp_f(x): "slice_np_vectorized", ), ) -def test_getting_inference_diagnostics(method): +def test_getting_inference_diagnostics(method, mcmc_params_fast: dict): num_simulations = 100 num_samples = 10 num_dim = 2 @@ -170,9 +177,7 @@ def test_getting_inference_diagnostics(method): proposal=prior, potential_fn=potential_fn, theta_transform=theta_transform, - thin=2, - warmup_steps=10, - num_chains=1, + **mcmc_params_fast, ) posterior.sample( sample_shape=(num_samples,), diff --git a/tests/mnle_test.py b/tests/mnle_test.py index e077b8ed8..b2127d069 100644 --- a/tests/mnle_test.py +++ b/tests/mnle_test.py @@ -36,25 +36,20 @@ def mixed_simulator(theta, stimulus_condition=2.0): return torch.cat((rts, choices), dim=1) -# MCMC kwargs for faster testing -mcmc_kwargs = dict( - num_chains=20, - warmup_steps=50, - method="slice_np_vectorized", - init_strategy="proposal", - thin=5, -) - - +@pytest.mark.mcmc @pytest.mark.gpu @pytest.mark.parametrize("device", ("cpu", "gpu")) -def test_mnle_on_device(device): +def test_mnle_on_device( + device, + mcmc_params_fast: dict, + num_simulations: int = 100, + mcmc_method: str = "slice", +): """Test MNLE API on device.""" device = process_device(device) + # Generate mixed data. - num_simulations = 100 - mcmc_method = "slice" theta = torch.rand(num_simulations, 2) x = torch.cat( ( @@ -76,13 +71,14 @@ def test_mnle_on_device(device): x=x[0], show_progress_bars=False, mcmc_method=mcmc_method, - thin=1, - warmup_steps=1, + **mcmc_params_fast, ) -@pytest.mark.parametrize("sampler", ("mcmc", "rejection", "vi")) -def test_mnle_api(sampler): +@pytest.mark.parametrize( + "sampler", (pytest.param("mcmc", marks=pytest.mark.mcmc), "rejection", "vi") +) +def test_mnle_api(sampler, mcmc_params_fast: dict): """Test MNLE API.""" # Generate mixed data. num_simulations = 100 @@ -113,18 +109,20 @@ def test_mnle_api(sampler): else: posterior.sample( (1,), - num_chains=2, - warmup_steps=1, - method="slice_np_vectorized", init_strategy="proposal", - thin=1, + method="slice_np_vectorized", + **mcmc_params_fast, ) @pytest.mark.slow -@pytest.mark.parametrize("sampler", ("mcmc", "rejection", "vi")) +@pytest.mark.parametrize( + "sampler", (pytest.param("mcmc", marks=pytest.mark.mcmc), "rejection", "vi") +) @pytest.mark.parametrize("num_trials", [5, 10]) -def test_mnle_accuracy_with_different_samplers_and_trials(sampler, num_trials: int): +def test_mnle_accuracy_with_different_samplers_and_trials( + sampler, num_trials: int, mcmc_params_accurate: dict +): """Test MNLE c2st accuracy for different samplers and number of trials.""" num_simulations = 2000 @@ -149,6 +147,10 @@ def test_mnle_accuracy_with_different_samplers_and_trials(sampler, num_trials: i theta_o = prior.sample((1,)) x_o = mixed_simulator(theta_o.repeat(num_trials, 1)) + mcmc_kwargs = dict( + method="slice_np_vectorized", init_strategy="proposal", **mcmc_params_accurate + ) + # True posterior samples transform = mcmc_transform(prior) true_posterior_samples = MCMCPosterior( @@ -224,7 +226,8 @@ def iid_likelihood(self, theta: torch.Tensor) -> torch.Tensor: @pytest.mark.slow -def test_mnle_with_experimental_conditions(): +@pytest.mark.mcmc +def test_mnle_with_experimental_conditions(mcmc_params_accurate: dict): """Test MNLE c2st accuracy when conditioned on a subset of the parameters, e.g., experimental conditions. @@ -257,9 +260,13 @@ def sim_wrapper(theta): theta_o[0, 2] = 2.0 # set condition to 2 as in original simulator. x_o = sim_wrapper(theta_o.repeat(num_trials, 1)) + mcmc_kwargs = dict( + method="slice_np_vectorized", init_strategy="proposal", **mcmc_params_accurate + ) + # MNLE trainer = MNLE(proposal) - estimator = trainer.append_simulations(theta, x).train(training_batch_size=100) + estimator = trainer.append_simulations(theta, x).train(training_batch_size=1000) potential_fn = MixedLikelihoodBasedPotential(estimator, proposal, x_o) diff --git a/tests/posterior_sampler_test.py b/tests/posterior_sampler_test.py index 6dee39fd8..b46a5b317 100644 --- a/tests/posterior_sampler_test.py +++ b/tests/posterior_sampler_test.py @@ -19,17 +19,14 @@ from sbi.simulators.linear_gaussian import diagonal_linear_gaussian +@pytest.mark.mcmc @pytest.mark.parametrize( "sampling_method", - ( - "slice_np", - "slice_np_vectorized", - "slice", - "nuts", - "hmc", - ), + ("slice_np", "slice_np_vectorized", "slice", "nuts", "hmc"), ) -def test_api_posterior_sampler_set(sampling_method: str, set_seed): +def test_api_posterior_sampler_set( + sampling_method: str, set_seed, mcmc_params_fast: dict +): """Runs SNL and checks that posterior_sampler is correctly set. Args: @@ -43,7 +40,6 @@ def test_api_posterior_sampler_set(sampling_method: str, set_seed): num_simulations = 10 x_o = zeros((num_trials, num_dim)) # Test for multiple chains is cheap when vectorized. - num_chains = 3 if sampling_method in "slice_np_vectorized" else 1 prior = MultivariateNormal(loc=zeros(num_dim), covariance_matrix=eye(num_dim)) simulator = diagonal_linear_gaussian @@ -63,13 +59,11 @@ def test_api_posterior_sampler_set(sampling_method: str, set_seed): assert posterior.posterior_sampler is None posterior.sample( - sample_shape=(num_samples, num_chains), + sample_shape=(num_samples, mcmc_params_fast["num_chains"]), x=x_o, mcmc_parameters={ - "thin": 2, - "num_chains": num_chains, "init_strategy": "prior", - "warmup_steps": 10, + **mcmc_params_fast, }, ) diff --git a/tests/potential_test.py b/tests/potential_test.py index 9b5c9ae6f..bca87deeb 100644 --- a/tests/potential_test.py +++ b/tests/potential_test.py @@ -18,9 +18,14 @@ @pytest.mark.parametrize( "sampling_method", - [ImportanceSamplingPosterior, MCMCPosterior, RejectionPosterior, VIPosterior], + [ + ImportanceSamplingPosterior, + pytest.param(MCMCPosterior, marks=pytest.mark.mcmc), + RejectionPosterior, + VIPosterior, + ], ) -def test_callable_potential(sampling_method): +def test_callable_potential(sampling_method, mcmc_params_accurate: dict): """Test whether callable potentials can be used to sample from a Gaussian.""" dim = 2 mean = 2.5 @@ -41,7 +46,7 @@ def potential(theta, x_o): elif sampling_method == MCMCPosterior: approx_density = sampling_method(potential_fn=potential, proposal=proposal) approx_samples = approx_density.sample( - (1024,), x=x_o, num_chains=100, method="slice_np_vectorized" + (1024,), x=x_o, method="slice_np_vectorized", **mcmc_params_accurate ) elif sampling_method == VIPosterior: approx_density = sampling_method( diff --git a/tests/save_and_load_test.py b/tests/save_and_load_test.py index 3e2367a3b..f9cc59ada 100644 --- a/tests/save_and_load_test.py +++ b/tests/save_and_load_test.py @@ -11,8 +11,8 @@ "inference_method, sampling_method", ( (SNPE, "direct"), - (SNLE, "mcmc"), - (SNRE, "mcmc"), + pytest.param(SNLE, "mcmc", marks=pytest.mark.mcmc), + pytest.param(SNRE, "mcmc", marks=pytest.mark.mcmc), pytest.param(SNRE, "vi", marks=pytest.mark.xfail), # bug: see #684 (SNRE, "rejection"), ), diff --git a/tests/sbc_test.py b/tests/sbc_test.py index fb42c722d..352454069 100644 --- a/tests/sbc_test.py +++ b/tests/sbc_test.py @@ -18,9 +18,16 @@ @pytest.mark.parametrize("reduce_fn_str", ("marginals", "posterior_log_prob")) @pytest.mark.parametrize("prior", ("boxuniform", "independent")) @pytest.mark.parametrize( - "method, sampler", ((SNPE, None), (SNLE, "mcmc"), (SNLE, "vi")) + "method, sampler", + ( + (SNPE, None), + pytest.param(SNLE, "mcmc", marks=pytest.mark.mcmc), + pytest.param(SNLE, "vi", marks=pytest.mark.mcmc), + ), ) -def test_running_sbc(method, prior, reduce_fn_str, sampler, model="mdn"): +def test_running_sbc( + method, prior, reduce_fn_str, sampler, mcmc_params_accurate: dict, model="mdn" +): """Tests running inference and then SBC and obtaining nltp.""" num_dim = 2 @@ -52,7 +59,7 @@ def simulator(theta): posterior_kwargs = { "sample_with": "mcmc" if sampler == "mcmc" else "vi", "mcmc_method": "slice_np_vectorized", - "mcmc_parameters": {"num_chains": 10, "thin": 5, "warmup_steps": 10}, + "mcmc_parameters": mcmc_params_accurate, } else: posterior_kwargs = {} From 49a9e1ea073d20a562aa4abc87fc80e6742418b8 Mon Sep 17 00:00:00 2001 From: "Pedro L. C. Rodrigues" Date: Tue, 26 Mar 2024 16:55:41 +0100 Subject: [PATCH 13/53] Extending and reorganizing the content for the "how to contribute" guide. (#1069) This includes: - Writing a lot of text in docs/contribute.md - Shortening CONTRIBUTE.md so to point directly to the docs (avoiding redundancy and future inconsistencies) - Adding lost paragraph about dropping slow tests - Including itemize about solving errors in local tests - Correcting long lines from contribute.md - Including Jan's suggestion: sentence about ruff not automatically fixing the problems it detects --- CONTRIBUTING.md | 80 +------------ docs/docs/contribute.md | 226 +++++++++++++++++++++++++++++++++++- docs/docs/install.md | 16 ++- docs/docs/static/global.css | 5 + docs/mkdocs.yml | 9 +- 5 files changed, 250 insertions(+), 86 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c8676bdc6..3bcf3c5e7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,79 +1,5 @@ -# Contribution guidelines +# Contributing to sbi -By participating in the `sbi` community, all members are expected to comply with our [Code -of Conduct](CODE_OF_CONDUCT.md). This ensures a positive and inclusive environment for -everyone involved. +The latest contributing guide is available in the repository at `docs/contribute.md`, or online at: -## User experiences, bugs, and feature requests - -If you are using `sbi` to infer the parameters of a simulator, we would be delighted to -know how it worked for you. If it didn't work according to plan, please open up an -[issue](https://github.com/sbi-dev/sbi/issues) or -[discussion](https://github.com/sbi-dev/sbi/discussions) and tell us more about your use -case: the dimensionality of the input parameters and of the output, as well as the setup -you used to run inference (i.e., number of simulations, number of rounds, etc.). - -To report bugs and suggest features (including better documentation), please equally -head over to [issues on GitHub](https://github.com/sbi-dev/sbi/issues). - -## Code contributions - -Contributions to the `sbi` package are welcome! In general, we use pull requests to make -changes to `sbi`. So, if you are planning to make a contribution, please fork, create a -feature branch, and then make a Pull Request (PR) from your feature branch to the upstream `sbi` -([details](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork)). -To give credit to contributors, we consider adding contributors who repeatedly and -substantially contributed to `sbi` to the list of authors of the package at the end of -every year. Additionally, we mention all contributors in the releases. - -### Development environment - -Clone [the repo](https://github.com/sbi-dev/sbi) and install all the dependencies via -`pyproject.toml` using `pip install -e ".[dev]"` (the `-e` flag installs the package -editable mode, and the `dev` flag installs development and testing dependencies). -This requires at least Python 3.8. - -We use [`pre-commit`](https://pre-commit.com) to ensure proper formatting and perform -linting (see below). Please install `pre-commit` locally using `pre-commit install`. - -### Style conventions and testing - -For docstrings and comments, we use [Google -Style](http://google.github.io/styleguide/pyguide.html#38-comments-and-docstrings). - -For code linting and formating, we use [`ruff`](https://docs.astral.sh/ruff/), which is -installed alongside `sbi`. - -You can exclude slow tests and those which require a GPU with `pytest -m "not slow and not gpu"`. -Additionally, we recommend to run tests with `pytest -n auto -m "not slow and not gpu"` in parallel. -GPU tests should probably not be run this way. -If you see unexpected behavior (tests fail if they shouldn't), try to run them without `-n auto` and see if it persists. -When writing new tests and debugging things, it may make sense to also run them without `-n auto`. - -When you create a PR onto `main`, our Continuous Integration (CI) actions on GitHub will perform the following -checks: - -- **`ruff`** for linting and formatting (including `black`, `isort`, and `flake8`) -- **[`pyright`](https://github.com/Microsoft/pyright)** for static type checking. -- **`pytest`** for running a subset of fast tests from our test suite. - -If any of these fail, try reproducing and solving the error locally: - -- **`ruff`**: Make sure you have `pre-commit` installed locally with the same version as specified in the [requirements](pyproject.toml). Execute it - using `pre-commit run --all-files`. `ruff` tends to give informative error - messages that help you fix the problem. -- **`pyright`**: Run it locally using `pyright sbi/` and ensure you are using the same - `pyright` version as used in the CI (which is the case if you have installed it with `pip install -e ".[dev]"` - but note that you have to rerun it once someone updates the version in the `pyproject.toml`). - - Known issues and fixes: - - If using `**kwargs`, you either have to specify all possible types of `kwargs`, e.g. `**kwargs: Union[int, boolean]` or use `**kwargs: Any` -- **`pytest`**: On GitHub Actions you can see which test failed. Reproduce it locally, e.g., using `pytest -n auto tests/linearGaussian_snpe_test.py`. Note that this will run for a few minutes and should result in passes and expected fails (xfailed). -- commit and push again until CI tests pass. Don't hesitate to ask for help by - commenting on the PR. - -## Online documentation - -Most of [the documentation](http://sbi-dev.github.io/sbi) is written in markdown ([basic markdown guide](https://guides.github.com/features/mastering-markdown/)). - -You can directly fix mistakes and suggest clearer formulations in markdown files simply by initiating a PR on GitHub. Click on [documentation -file](https://github.com/sbi-dev/sbi/tree/master/docs/docs) and look for the little pencil at top right. +[https://sbi-dev.github.io/sbi/contribute/](https://sbi-dev.github.io/sbi/contribute/) diff --git a/docs/docs/contribute.md b/docs/docs/contribute.md index 66e8e2b46..ae7e91089 100644 --- a/docs/docs/contribute.md +++ b/docs/docs/contribute.md @@ -1 +1,225 @@ -{!CONTRIBUTING.md!} +# How to contribute + +!!! important + + By participating in the `sbi` community, all members are expected to comply with + our [Code of Conduct](code_of_conduct.md). This ensures a positive and inclusive + environment for everyone involved. + +## User experiences, bugs, and feature requests + +If you are using `sbi` to infer the parameters of a simulator, we would be +delighted to know how it worked for you. If it didn't work according to plan, +please open up an [issue](https://github.com/sbi-dev/sbi/issues) or +[discussion](https://github.com/sbi-dev/sbi/discussions) and tell us more about +your use case: the dimensionality of the input parameters and of the output, +as well as the setup you used to run inference (i.e., number of simulations, +number of rounds, etc.). + +To report bugs and suggest features -- including better documentation -- +please equally head over to [issues on GitHub](https://github.com/sbi-dev/sbi/issues) +and tell us everything. + +## Contributing code + +Contributions to the `sbi` package are always welcome! The preferred way to do +it is via pull requests onto our [main repository](https://github.com/sbi-dev/sbi). +To give credit to contributors, we consider adding contributors who repeatedly +and substantially contributed to `sbi` to the list of authors of the package at +the end of every year. Additionally, we mention all contributors in the releases. + +!!! note + To avoid doing duplicated work, we strongly suggest that you go take + a look at our current [open issues](https://github.com/sbi-dev/sbi/issues) and + [pull requests](https://github.com/sbi-dev/sbi/pulls) to see if someone else is + already doing it. Also, in case you're planning to work on something that has not + yet been proposed by others (e.g. adding a new feature, adding a new example), + it is preferable to first open a new issue explaining what you intend to + propose and then working on your pull request after getting some feedback from + others. + +### How to contribute + +The following steps describe all parts of the workflow for doing a contribution such as +installing locally `sbi` from source, creating a `conda` environment, setting up +your `git` repository, etc. We've taken strong inspiration from the guides for +contribution of [`scikit-learn`](https://scikit-learn.org/stable/developers/contributing.html) +and [`mne`](https://mne.tools/stable/development/contributing.html): + +**Step 1**: [Create an account](https://github.com/) on GitHub if you do not +already have one. + +**Step 2**: Fork the [project repository](https://github.com/sbi-dev/sbi): click +on the ‘Fork’ button near the top of the page. This will create a copy of the +`sbi` codebase under your GitHub user account. See more details on how to fork +a repository [here](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo). + +**Step 3**: Clone your fork of the `sbi` repo from your GitHub account to your +local disk: +``` +git clone git@github.com:$USERNAME/sbi.git +cd sbi +``` + +**Step 4**: Install a recent version of Python (we currently recommend 3.10) +for instance using [`miniforge`](https://github.com/conda-forge/miniforge). We +strongly recommend you create a specific `conda` environment for doing +development on `sbi` as per: +``` +conda create -n sbi_dev python=3.10 +conda activate sbi_dev +``` + +**Step 5**: Install `sbi` in editable mode with +``` +pip install -e ".[dev]" +``` +This installs the `sbi` package into the current environment by creating a +link to the source code directory (instead of copying the code to pip’s `site_packages` +directory, which is what normally happens). This means that any edits you make +to the `sbi` source code will be reflected the next time you open a Python interpreter +and `import sbi` (the `-e` flag of pip stands for an “editable” installation, +and the `dev` flag installs development and testing dependencies). This requires +at least Python 3.8. + +**Step 6**: Add the upstream remote. This saves a reference to the main `sbi` +repository, which you can use to keep your repository synchronized with the latest +changes: +``` +git remote add upstream git@github.com:sbi-dev/sbi.git +``` +Check that the upstream and origin remote aliases are configured correctly by +running `git remote -v` which should display: +``` +origin git@github.com:$USERNAME/sbi.git (fetch) +origin git@github.com:$USERNAME/sbi.git (push) +upstream git@github.com:sbi-dev/sbi.git (fetch) +upstream git@github.com:sbi-dev/sbi.git (push) +``` + +**Step 7**: Install `pre-commit` to run code style checks before each commit: +``` +pip install pre-commit +pre-commit install +``` + +You should now have a working installation of `sbi` and a git repository +properly configured for making contributions. The following steps describe the +process of modifying code and submitting a pull request: + +**Step 8**: Synchronize your main branch with the upstream/main branch. See more +details on [GitHub Docs](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork): +``` +git checkout main +git fetch upstream +git merge upstream/main +``` + +**Step 9**: Create a feature branch to hold your development changes: +``` +git checkout -b my_feature +``` +and start making changes. Always use a feature branch! It’s good practice +to never work on the main branch, as this allows you to easily get back to a +working state of the code if needed (e.g., if you’re working on multiple +changes at once, or need to pull in recent changes from someone else to get +your new feature to work properly). In most cases you should make PRs into the +upstream’s main branch. + +**Step 10**: Develop your code on your feature branch on the computer, using +Git to do the version control. When you’re done editing, add changed files +using `git add` and then `git commit` to record your changes: +``` +git add modified_files +git commit -m "description of your commit" +``` +Then push the changes to your GitHub account with: +``` +git push -u origin my_feature +``` +The `-u` flag ensures that your local branch will be automatically linked with +the remote branch, so you can later use `git push` and `git pull` without any +extra arguments. + +**Step 11**: Follow [these](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork) +instructions to create a pull request from your fork. +This will send a notification to `sbi` maintainers and trigger reviews and comments +regarding your contribution. + +!!! note + It is often helpful to keep your local feature branch synchronized + with the latest changes of the main `sbi` repository: + ``` + git fetch upstream + git merge upstream/main + ``` + +### Style conventions and testing + +All our docstrings and comments are written following the [Google +Style](http://google.github.io/styleguide/pyguide.html#38-comments-and-docstrings). + +For code linting and formating, we use [`ruff`](https://docs.astral.sh/ruff/), +which is installed alongside `sbi`. + +You can exclude slow tests and those which require a GPU with +``` +pytest -m "not slow and not gpu" +``` +Additionally, we recommend to run tests with +``` +pytest -n auto -m "not slow and not gpu" +``` +in parallel. GPU tests should probably not be run this way. If you see unexpected +behavior (tests fail if they shouldn't), try to run them without `-n auto` and +see if it persists. When writing new tests and debugging things, it may make sense +to also run them without `-n auto`. + +When you create a PR onto `main`, our Continuous Integration (CI) actions on +GitHub will perform the following checks: + +- **`ruff`** for linting and formatting (including `black`, `isort`, and `flake8`) +- **[`pyright`](https://github.com/Microsoft/pyright)** for static type checking. +- **`pytest`** for running a subset of fast tests from our test suite. + +If any of these fail, try reproducing and solving the error locally: + +- **`ruff`**: Make sure you have `pre-commit` installed locally with the same + version as specified in the [requirements](pyproject.toml). Execute it + using `pre-commit run --all-files`. `ruff` tends to give informative error + messages that help you fix the problem. Note that pre-commit only detects + problems with `ruff` linting and formatting, but does not fix them. You can + fix them either by running `ruff check . --fix(linting)`, followed by + `ruff format . --fix(formatting)`, or by hand. +- **`pyright`**: Run it locally using `pyright sbi/` and ensure you are using +the same + `pyright` version as used in the CI (which is the case if you have installed + it with `pip install -e ".[dev]"` but note that you have to rerun it once + someone updates the version in the `pyproject.toml`). + - Known issues and fixes: + - If using `**kwargs`, you either have to specify all possible types of + `kwargs`, e.g. `**kwargs: Union[int, boolean]` or use `**kwargs: Any` +- **`pytest`**: On GitHub Actions you can see which test failed. Reproduce it +locally, e.g., using `pytest -n auto tests/linearGaussian_snpe_test.py`. Note +that this will run for a few minutes and should result in passes and expected +fails (xfailed). +- Commit and push again until CI tests pass. Don't hesitate to ask for help by + commenting on the PR. + +## Contributing to the documentation +Most of the documentation for `sbi` is written in markdown and the website is +generated using `mkdocs` with `mkdocstrings`. To work on improvements of the +documentation, you should first run the command on your terminal +``` +mkdocs serve +``` +and open a browser on the page proposed by `mkdocs`. Now, whenever you +make changes to the markdown files of the documentation, you can see the results +almost immediately in the browser. + +Note that the tutorials and examples are initially written in jupyter notebooks +and then converted to markdown programatically. To do so locally, you should run +``` +jupyter nbconvert --to markdown ../tutorials/*.ipynb --output-dir docs/tutorial/ +jupyter nbconvert --to markdown ../examples/*.ipynb --output-dir docs/examples/ +``` diff --git a/docs/docs/install.md b/docs/docs/install.md index b62e459b5..20ad9eedb 100644 --- a/docs/docs/install.md +++ b/docs/docs/install.md @@ -1,19 +1,23 @@ # Installation -`sbi` requires Python 3.6 or higher. We recommend to use a [`conda`](https://docs.conda.io/en/latest/) virtual -environment ([Miniconda installation instructions](https://docs.conda.io/en/latest/miniconda.html)). If `conda` is installed on the system, an environment for -installing `sbi` can be created as follows: +`sbi` requires Python 3.8 or higher. A GPU is not required, but can lead to +speed-up in some cases. We recommend to use a [`conda`](https://docs.conda.io/en/latest/miniconda.html) virtual +environment ([Miniconda installation instructions](https://docs.conda.io/en/latest/miniconda.html)). +If `conda` is installed on the system, an environment for installing `sbi` can be created as follows: + ```commandline -# Create an environment for sbi (indicate Python 3.6 or higher); activate it -$ conda create -n sbi_env python=3.7 && conda activate sbi_env +# Create an environment for sbi (indicate Python 3.8 or higher); activate it +$ conda create -n sbi_env python=3.10 && conda activate sbi_env ``` Independent of whether you are using `conda` or not, `sbi` can be installed using `pip`: + ```commandline -$ pip install sbi +pip install sbi ``` To test the installation, drop into a python prompt and run + ```python from sbi.examples.minimal import simple posterior = simple() diff --git a/docs/docs/static/global.css b/docs/docs/static/global.css index 6ffb671be..aa39ef7eb 100644 --- a/docs/docs/static/global.css +++ b/docs/docs/static/global.css @@ -19,6 +19,11 @@ a[title="Edit this page"] { margin-left: -0.4em !important; } +.md-typeset .admonition, +.md-typeset details { + font-size: 16px +} + /* Indentation. */ div.doc-contents:not(.first), div.doc-function div.doc-contents { diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index 6b226a415..d165fceec 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -35,7 +35,7 @@ nav: - Potentials: reference/potentials.md - Analysis: reference/analysis.md - Contributing: - - Guide: contribute.md + - How to contribute: contribute.md - Code of Conduct: code_of_conduct.md - FAQ: faq.md - Credits: credits.md @@ -44,12 +44,17 @@ repo_name: 'sbi-dev/sbi' repo_url: http://github.com/sbi-dev/sbi theme: - name: 'material' + name: material + features: + - content.code.copy palette: primary: 'indigo' accent: 'indigo' logo: 'static/logo.svg' collapse_navigation: False + icon: + admonition: + note: octicons/tag-16 extra: social: From dc6919985ccd67964126db78607bb668af11398f Mon Sep 17 00:00:00 2001 From: "Pedro L. C. Rodrigues" Date: Tue, 26 Mar 2024 17:04:14 +0100 Subject: [PATCH 14/53] [MRG] Improve embedding net tutorial (#1110) * Improving the tutorial 5 on embedding net as per request in Issue #903 The changes include: - Little tweak in the docs/static/global.css to augment the fontsize inside mkdocs admonition - Including admonitions for "note" and "main syntax" in the tutorial text - Making sure of saying the word "embedding network" as early as possible in the text * Remove mkdocs macro for main syntax; keeping macros for notes * still fixing ci issues with ruff not related to my PR * Apply suggestions from code review merge line length fixes. --------- Co-authored-by: Jan --- docs/docs/static/global.css | 1 - docs/mkdocs.yml | 2 +- .../mixed_density_estimator.py | 4 +- tutorials/05_embedding_net.ipynb | 194 +++++++++++------- 4 files changed, 122 insertions(+), 79 deletions(-) diff --git a/docs/docs/static/global.css b/docs/docs/static/global.css index aa39ef7eb..9c834cbcb 100644 --- a/docs/docs/static/global.css +++ b/docs/docs/static/global.css @@ -24,7 +24,6 @@ a[title="Edit this page"] { font-size: 16px } - /* Indentation. */ div.doc-contents:not(.first), div.doc-function div.doc-contents { padding-left: 25px; diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index d165fceec..ccc0c873f 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -14,7 +14,7 @@ nav: - Multi-round inference: tutorial/03_multiround_inference.md - Sampling algorithms in sbi: tutorial/11_sampler_interface.md - Custom density estimators: tutorial/04_density_estimators.md - - Learning summary statistics: tutorial/05_embedding_net.md + - Embedding nets for observations: tutorial/05_embedding_net.md - SBI with trial-based data: tutorial/14_iid_data_and_permutation_invariant_embeddings.md - Handling invalid simulations: tutorial/08_restriction_estimator.md - Crafting summary statistics: tutorial/10_crafting_summary_statistics.md diff --git a/sbi/neural_nets/density_estimators/mixed_density_estimator.py b/sbi/neural_nets/density_estimators/mixed_density_estimator.py index 23a8124c4..55664edb7 100644 --- a/sbi/neural_nets/density_estimators/mixed_density_estimator.py +++ b/sbi/neural_nets/density_estimators/mixed_density_estimator.py @@ -164,8 +164,8 @@ def log_prob_iid(self, x: Tensor, context: Tensor) -> Tensor: evaluated for the entire batch of iid x. Returns: - Tensor: log probs with shape (num_trials, num_parameters), i.e., the log - prob for each context for each trial. + log probs with shape (num_trials, num_parameters), i.e., the log prob for + each context for each trial. """ context = atleast_2d(context) diff --git a/tutorials/05_embedding_net.ipynb b/tutorials/05_embedding_net.ipynb index e7adde4ad..78bae6598 100644 --- a/tutorials/05_embedding_net.ipynb +++ b/tutorials/05_embedding_net.ipynb @@ -4,31 +4,63 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Learning summary statistics with a neural net\n", + "# Embedding nets for observations\n", "\n", - "When doing simulation-based inference, it is very important to use well-chosen summary statistics for describing the data generated by the simulator. Usually, these statistics take into account domain knowledge. For instance, in the [example of the Hodgkin-Huxley model](https://sbi-dev.github.io/sbi/examples/00_HH_simulator/), the summary statistics are defined by a [function](https://github.com/sbi-dev/sbi/blob/86d9b07238f5a0176638fecdd5622694d92f2962/examples/HH_helper_functions.py#L159) which takes a 120 ms recording as input (a 12000-dimensional input vector) and outputs a 7-dimensional feature vector containing different statistical descriptors of the recording (e.g., number of spikes, average value, etc.).\n", + "!!! note\n", + " You can find the original version of this notebook at [tutorials/05_embedding_net.ipynb](https://github.com/sbi-dev/sbi/blob/main/tutorials/05_embedding_net.ipynb) in the `sbi` repository.\n", "\n", - "However, in other cases, it might be of interest to actually **learn from the data** which summary statistics to use, e.g., because the raw data is highly complex and domain knowledge is not available or not applicable.\n", + "## Introduction\n", "\n", - "`sbi` offers functionality to learn summary statistics from (potentially high-dimensional) simulation outputs with a neural network. In `sbi`, this neural network is referred to as `embedding_net`. If an `embedding_net` is specified, the simulation outputs are passed through the `embedding_net`, whose outputs are then passed to the neural density estimator. The parameters of the `embedding_net` are learned together with the parameters of the neural density estimator. `sbi` provides pre-configured embedding networks (MLP, CNN, premutation-invariant networks) or allows to pass custom-written embedding networks.\n", + "When engaging in simulation-based inference, the selection of appropriate summary statistics for observations holds significant importance. These statistics serve to succinctly describe the data generated by simulators, often leveraging domain-specific knowledge. However, in certain scenarios, particularly when dealing with highly complex raw data where domain knowledge may be limited or non-existent, it becomes necessary to learn directly from the data the appropriate summary statistics to employ. `sbi` offers functionality to learn summary statistics from simulation outputs with an **embedding neural network**, referred to as `embedding_net`. \n", "\n", - "NB: only `SNPE` and `SNRE` methods can use an `embedding_net` to learn summary statistics from simulation outputs. `SNLE` does not offer this functionality since the simulation outputs $x$ are the outputs of the neural density estimator.\n", + "When an embedding network is used, the posterior approximation for a given observation $x_o$ can be denoted as $q_\\phi\\big(\\theta \\mid f_\\lambda(x_o)\\big)$ where $\\phi$ are the parameters of the conditional density estimator and $\\lambda$ the parameters of the embedding neural network. Note that the simulation outputs pass through the `embedding_net` before reaching the density estimator and that $\\phi$ and $\\lambda$ are **jointly learned** during training. `sbi` provides pre-configured embedding networks (MLP, CNN, and permutation-invariant networks) or allows to pass custom-written embedding networks.\n", "\n", - "In the example that follows, we illustrate a situation where the data points generated by the simulator model are high-dimensional (32 by 32 images) and we use a convolutional neural network as summary statistics extractor.\n" + "It is worth noting that only `SNPE` and `SNRE` methods can use an `embedding_net` to learn summary statistics from simulation outputs. `SNLE` does not offer such functionality because the simulation outputs are also the output of the neural density estimator. \n", + "\n", + "## Main syntax" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Note, you can find the original version of this notebook at [https://github.com/sbi-dev/sbi/blob/main/tutorials/05_embedding_net.ipynb](https://github.com/sbi-dev/sbi/blob/main/tutorials/05_embedding_net.ipynb) in the `sbi` repository.\n" + "```Python\n", + "# import required modules\n", + "from sbi.neural_nets import posterior_nn\n", + "\n", + "# import the different choices of pre-configured embedding networks\n", + "from sbi.neural_nets.embedding_nets import (\n", + " FCEmbedding,\n", + " CNNEmbedding,\n", + " PermutationInvariantEmbedding\n", + ")\n", + "\n", + "# choose which type of pre-configured embedding net to use (e.g. CNN)\n", + "embedding_net = CNNEmbedding(input_shape=(32, 32))\n", + "\n", + "# instantiate the conditional neural density estimator\n", + "neural_posterior = posterior_nn(model=\"maf\", embedding_net=embedding_net)\n", + "\n", + "# setup the inference procedure with the SNPE-C procedure\n", + "inferer = SNPE(prior=prior, density_estimator=neural_posterior)\n", + "\n", + "# train the density estimator\n", + "density_estimator = inference.append_simulations(theta, x).train()\n", + "\n", + "# build the posterior\n", + "posterior = inference.build_posterior(density_estimator)\n", + "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "First of all, we import all the packages required for running the tutorial\n" + "## Inferring parameters from images\n", + "\n", + "In the example that follows, we consider a simple setup where the data points generated by the simulator model are high-dimensional (32x32 grayscale images) and we use a convolutional neural network as summary statistics extractor.\n", + "\n", + "First of all, we import all the packages required for running the tutorial" ] }, { @@ -39,7 +71,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 1, @@ -69,7 +101,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## The simulator model\n", + "### The simulator model\n", "\n", "The simulator model that we consider has two parameters: $r$ and $\\theta$. On each run, it generates 100 two-dimensional points centered around $(r \\cos(\\theta), r \\sin(\\theta))$ and perturbed by a Gaussian noise with variance 0.01. Instead of simply outputting the $(x,y)$ coordinates of each data point, the model generates a grayscale image of the scattered points with dimensions 32 by 32. This image is further perturbed by an uniform noise with values betweeen 0 and 0.2. The code below defines such model.\n" ] @@ -86,8 +118,8 @@ " This simulator serves as a basic example for using a neural net for learning\n", " summary features. It has only two input parameters but generates\n", " high-dimensional output vectors. The data is generated as follows:\n", - " (-) Input: parameter = [r, theta] (1) Generate 100 two-dimensional\n", - " points centered around (r cos(theta),r sin(theta))\n", + " (-) Input: parameter = [r, phi] (1) Generate 100 two-dimensional\n", + " points centered around (r cos(phi),r sin(phi))\n", " and perturbed by a Gaussian noise with variance 0.01\n", " (2) Create a grayscale image I of the scattered points with dimensions\n", " 32 by 32\n", @@ -97,7 +129,7 @@ " Parameters\n", " ----------\n", " parameter : array-like, shape (2)\n", - " The two input parameters of the model, ordered as [r, theta]\n", + " The two input parameters of the model, ordered as [r, phi]\n", " return_points : bool (default: False)\n", " Whether the simulator should return the coordinates of the simulated\n", " data points as well\n", @@ -111,14 +143,14 @@ "\n", " \"\"\"\n", " r = parameter[0]\n", - " theta = parameter[1]\n", + " phi = parameter[1]\n", "\n", " sigma_points = 0.10\n", " npoints = 100\n", " points = []\n", " for _ in range(npoints):\n", - " x = r * torch.cos(theta) + sigma_points * torch.randn(1)\n", - " y = r * torch.sin(theta) + sigma_points * torch.randn(1)\n", + " x = r * torch.cos(phi) + sigma_points * torch.randn(1)\n", + " y = r * torch.sin(phi) + sigma_points * torch.randn(1)\n", " points.append([x, y])\n", " points = torch.as_tensor(points)\n", "\n", @@ -165,7 +197,7 @@ }, { "data": { - "image/png": "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3rGgQlRBHT16FH/88Qf279+Pa9eu4fz582jYsCHef/99hISEoGrVqpp9bWxsZMyUypJ6utBLL72k2ZadnQ0XFxds3rwZkyZNgp+fH65evQorKyvk5eVxVTQiIiIiIh1YUCGqIKKjo7F//34EBQWhR48eWL16NVxdXTF37lx0794dHh4eAIBhw4bJnCmVN/b29li6dCmAp8WVf//9F05OTti7dy+GDBmCkJAQ9O7dG/369UPDhg1lzpaIiIiIqHxgQYXITKmXMP75558xd+5c3L59Gx06dMA777wDAPjll19kzpDMkb29vWYZ5xdeeAERERHYv38/9u/fj+joaKxfvx579uxBbm4uevTooSnUERERERFZGjZMIDIj8fHx+Pbbb9G3b1/NcrpBQUH45JNPkJCQgCNHjmDgwIHyJkkVir+/P958803s2bMH69evB/C0J8/HH38MHx8fhISE4Pjx4zJnSURERERU9jhChaicS0hIgIuLCx4/fozAwEC0bNkSL774Ivr27QsAaN68OZo3by5zlmRJJk2ahEmTJuH+/fvYv38//Pz8kJubiz59+qBXr14YOnQoAgIC5E6TiIiIiKhUcYQKUTmUkJCA7777Dr169YKfnx9OnTqFGjVqICYmBqdOncJ7772H4OBgudMkC1etWjVMmDABtWvXhiAIePnll3H06FHUrVsX7du3R35+Ppe6JyIiIqIKiyNUiMqJhIQEPHnyBMHBwRg3bhyePHmCYcOG4ZtvvkHNmjUBQGtlHqLyxM7ODuPGjcO4ceOQmJiIs2fPwtraGmvXrsWmTZswdOhQDB06FP7+/nKnSlTuxcbGilq63NfXV/QxXVxcRMcCkLTUel5enujY/Px80bH29vaiY588eSI61s3NTXQsIO05JyUliY718vISHSvlNZYqPT1ddKyzs7Po2OTkZNGxUl5jqV9k3LlzR3RspUqVRMdaWYn/nt/aWvyftFJinZycRMcCQEFBgejYwMBA0bG3b98WHWtrays6VqlUio4FnrY+EEvK7yh9OEKFSEZZWVnYvn27ZiTKqlWrAAA7d+7EmTNnMH36dE0xhchceHp6onfv3gCA4cOHY+LEiTh8+DBq166NxYsXA5B2s0hEREREVB6woEJUxgRBwMWLFyEIAs6ePYuPP/4Yzz33HCIiIrB27VoA0qq/ROWJp6cnxo0bh7/+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yREdW61aNdGxSUlJomMDAgJEx0r57AKAW7duiY6V8jki5fqScl1L+fwBpOXt5+dndIxKpUJUVJTe/ThChYiIiCxaenq63CkQERGRGbLIgoqU6hYRERFVLFzlh4iIiMSwyIKKlKFsREREVLHMmTNH7hSIiIjIDFlkQeXRo0dyp0BERETlRPfu3eVOgYiIiMyQRRZUPD095U6BiIiIyoGkpCTUr19f7jSIiIjIDFlkQcXX11fuFIiIiKgcuH//PnuoEBERkSgWWVBZv3693CkQERFROXD//n1Jy0ASERGR5bLIgsqNGzfkToGIiIjKgQcPHqBKlSpyp0FERERmyFruBOTw4MEDuVMgIiKicmDgwIFo2rQpWrVqJXcqREREZGYscoQKV/khIiIiAHByckLt2rXlToOIiIjMkEWOUFm+fLncKRAREVE58OKLL6JHjx5yp0FERERmyCJHqLRp0waCIMidBhEREcnswYMHbEpLREREolhkQaVatWq4c+eO3GkQERGRzNiUloiIiMSyyIKKq6srG9MSERFZuOzsbCQkJLCgQkRERKJYZA+VGjVqICoqCiEhIXKnQkRERDKxs7NDYmIirKzK1/dLbm5uonLy8PAQfczs7GzRsQBQUFAgOlalUomOTUhIEB0r5Tnn5+eLjq1Tp47oWADIysoSHZubmys6NikpSXSsFNbW0v5c8fb2Fh3r5OQkOjYqKkp0rJ2dnehYqVMYU1JSRMfWqlVL0rHFknKNSJm14ODgIDoWABQKhejYvLw80bFSPr/S0tJEx0p9L0v57BOTt6G/m8rXHUQZqVOnDq5fvy53GkRERCSjJ0+eIC0tTdJNLREREVkuixyhMnfuXFSqVEnuNIiIiEhGGzZswLVr17B27Vq5UyEiIiIzZJEjVDw8PPDkyRO50yAiIiIZXb9+HfXr15c7DSIiIjJTFllQefDgAerWrStpHikRERGZNxZUiIiISAqLLKhUr14ddnZ2iIyMlDsVIiIikoEgCMjNzUVwcLDcqRAREZGZssiCipWVFerWrcvGtERERBZKoVDg8uXLHKFCREREollkQQUAGjVqhEePHsmdBhEREckgIiICoaGhcqdBREREZswiV/kBgM2bN3OZRCIiIgv122+/4fjx4+jZs6fcqRAREZGZstgRKsnJyfjjjz/kToOIiIhkwIa0REREJJXFFlQePXqEoUOHQqVSyZ0KERERlTEWVIiIiEgqiy2oBAUFIS8vD3fu3JE7FSIiIipj9erVQ7NmzeROg4iIiMyYxfZQsbW1RYMGDXD+/HkEBATInQ4RERGVoe+++07uFIiIiMjMWewIFQAYPHgw8vPz5U6DiIiIytA///yDdevWyZ0GERERmTmLHaECAHPnzpU7BSIiIipje/fuRVZWltxpEBERkZmz6BEq6enpmD59OkepEBERWZCzZ8+iTZs2cqdBREREZk4hCIIgdxJlJTU1FW5ubkhJSYGrqysKCgrg7u6OsLAwNGnSRO70iIiIqJTl5eXB1dUV58+f16zyU/j+QC7qPIKCgqBUKo2Ov3XrluhjW1lJ+47N2dlZdGxeXp7oWBsbG9GxBQUFomOlkHqupeQt5Xy5uLiIjo2NjRUd6+XlJToWAOzt7UXH5uTkyHLcjIwM0bGZmZmiYwHA09NTdKyYzy01KZ8Dubm5omOlvE4pKSmiYwFp76m4uDjRsTVr1hQdK+X3jJTPH0Da61y5cmWjY1QqFR4/fqz33sCiR6golUq0atUKZ86ckTsVIiIiKgM5OTmYP38+6tatK3cqREREZOYsuqACAG3atGFBhYiIyEI4Oztj1qxZkkcJEBEREVn83cTgwYPx3HPPyZ0GERERlYFp06Zh69atcqdBREREFYDFF1RatWqFUaNGyZ0GERERlYG//voLHh4ecqdBREREFYDFF1QAYNSoUTh+/LjcaRAREVEpSk5Oxs2bN7nCDxEREZkECyp42lU6LCxM7jSIiIioFJ07dw41a9aEr6+v3KkQERFRBcCCCp42pj116pTcaRAREVEpatOmDX799Ve50yAiIqIKggUVAN26dcPRo0clrX9ORERE5VtmZiaaNm0qdxpERERUQbCgAqBp06b4448/uIQiERFRBZWWlobq1avj7t27cqdCREREFQQrCACsrKwQEhKCxMREuVMhIiKiUvDPP//A398fNWrUkDsVIiIiqiBYUPl/27Ztw8CBA+VOg4iIiErBgQMH0KNHD7nTICIiogqEBZX/17VrV5w5cwYpKSlyp0JEREQmdvPmTRZUiIiIyKRYUPl/1atXR1BQEI4ePSp3KkRERGRi+/fvxwsvvCB3GkRERFSBsKDyjF69euHatWtyp0FEREQmdObMGZw4cYLN54mIiMikrOVOoDz54osveLNFRERUwaxcuRJBQUEICQmROxWDJCQkQKFQGB0XGBgo+piRkZGiYwHAzc1NdGxeXp7oWAcHB9Gx9vb2omMfPnwoOtbX11d0LACkpqaKjnV1dRUdK+Ue2cbGRnRsWlqa6FgAePTokejYunXrio7Nzc0VHSvl2pTyfpIaHx8fLzrWzs5OdGxCQoLoWGtr8X8OS4kFgOzsbFlipbwnpDxnb29v0bGAtPeFmPejob+HWT14hpWVFX788UdJFxkRERGVHyqVCgcPHmT/FCIiIjI5FlQK+frrr/HHH3/InQYRERGZwKVLl5CVlYW2bdvKnQoRERFVMCyoFNKjRw8cOHBA7jSIiIjIBFQqFWbNmiVpygERERGRLuyhUkjfvn3x+eefIycnR9JcPiIiIpJf8+bN0bx5c7nTICIiogqII1QKadmyJUaPHo2UlBS5UyEiIiIJHj16hB49ekhu0khERESkC0eoFKJQKLBq1Sq50yAiIiKJfv31V+Tk5HC6DxEREZUKjlDR4eHDh+jcuTO/0SIiIjJju3btwosvvih3GkRERFRBsaCig5+fHyIiIvDPP//InQoRERGJEBcXh2PHjmHw4MFyp0JEREQVFAsqOlhZWWHw4MHYuXOn3KkQERGRCB4eHjhx4gSqV68udypERERUQbGgUowhQ4bg119/RUFBgdypEBERkZGio6PRqlUrudMgIiKiCowFlWJ07NgRoaGhsLLiKSIiIjInSUlJCA4Oxp07d+ROhYiIiCowVguKoVQqERwcjFu3bsmdChERERlh3759aNy4Mfz9/eVOhYiIiCowFlRKcPToUXTr1g0qlUruVIiIiMhAO3fuxJAhQ+ROg4iIiCo4FlRK0KVLF2RlZeH06dNyp0JEREQGUKlUSExM5HLJREREVOqs5U6gPLOxscGgQYOwY8cOtG/fXu50iIiISA8rKyucOHFC7jQkycrKgkKhMDouISFB9DGlroYkZTRvenq66FhXV1fRsZGRkaJjK1WqJDo2Pj5edCwA2Nvbi46Ni4sTHZuSkiI61snJSXSslOcLAL6+vqJjpfRhys7OFh0bEBAgOjY1NVV0LABkZmaKjpXyWjk6OoqOTUxMFB0r5fqQcq4AIC8vT3RstWrVRMempaWJjrWxsREdK9XDhw9Fx+bk5BgdIwiCQftxhIoe48aNk3SDQkRERGVn7ty5uH37ttxpEBERkQVgQUWPDh064IcffpA7DSIiItIjMjISn376qaRRC0RERESGYkHFAJcuXcKMGTPkToOIiIhKsGnTJvTv3x8+Pj5yp0JEREQWgAUVA3h7e2PlypW4e/eu3KkQERGRDvn5+di8eTNeffVVuVMhIiIiC8GCigGqVKmCXr16YfPmzXKnQkRERMVYuXIlevXqJXcaREREZCFYUDHQq6++ik2bNknqYk9ERESlIyEhAUOGDIFSqZQ7FSIiIrIQXDbZQP369YObm5uoZQyJiIio9MTFxaFmzZq4ffs2qlatKnc6REREZCE4QsVANjY26Nq1K5diJCIiKme2bduGtm3bsphCREREZYoFFSPcunULjRo1QlJSktypEBEREQBBELBhwwaMHz9e7lSIiIjIwrCgYoS6deuiadOm2LFjh9ypEBEREYAnT55AqVTixRdflDsVIiIisjAsqBhp/PjxWL9+PQRBkDsVIiIii+fn54eLFy/C0dFR7lSIiIjIwrCgYqRRo0bBy8sL8fHxcqdCRERk0WJjY/Hmm2+ioKBA7lSIiIjIAnGVHyM5Ojri8OHDcqdBRERk8dauXYuYmBgulUxERESy4AgVEQRBwLBhw3Dz5k25UyEiIrJI2dnZWL16NaZNmyZ3KkRERGShOEJFBIVCAQcHB6xcuRJr1qyROx0iIiKLs337dvj6+qJHjx5yp2Jyvr6+sLIy/juvmJgY0ccUc7xnZWZmio5VqVSiY3NyckTH2tnZiY7Nzc0VHevr6ys6FgBu374tOtbGxkZ0rL+/v+hYKa+TlGsLAB4/fiw6tmbNmqJjb9y4ITr27t27omOljthzcnISHevm5iY6Vspzrlq1qujY+/fvi46V+l7OysoSHSvlM1vK+1HKc05MTBQdCwDVq1cXHSvm96MgCMjLy9O7H0eoiPTuu+9i8+bNSEhIkDsVIiIiizNkyBDs2LEDCoVC7lSIiIjIQrGgIlLTpk3Rrl07bNq0Se5UiIiILEpERARycnLQqFEjuVMhIiIiC8YpPxJs2bIFPj4+cqdBRERkUSZPnox27dph3rx5cqdCREREFowjVCSoVq0a7t+/jzNnzsidChERkUW4cuUK/vnnH0ycOFHuVIiIiMjCsaAi0YEDB/DGG29AEAS5UyEiIqrwvvzyS7z88suSmwESERERScWCikSjR4/GvXv3cPToUblTISIiqvB8fHwwdepUudMgIiIiYkFFKkdHR0ycOBGffPKJ3KkQERFVaCqVCkuXLkWDBg3kToWIiIiIBRVTePfdd9G5c2eoVCq5UyEiIqqQ4uPjUbt2bcTGxsqdChEREREAFlRMwsvLC3PmzEFqaqrcqRAREVVIK1asQO3atdk7hYiIiMoNFlRMJC8vDw0aNMCxY8fkToWIiKhCiY2Nxddff40FCxbInQoRERGRBgsqJmJjY4PXXnsN8+bNkzsVIiKiCuXgwYN47rnn0KZNG7lTISIiItJgQcWEpk6digsXLuDIkSNyp0JERFRhjBo1Crt375Y7DSIiIiItLKiYkLu7O+bMmYPr16/LnQoREVGFsHz5chw+fBhKpVLuVIiIiIi0WMudQEUzc+ZMuVMgIiKqEB4+fIh58+bh5MmTcqdCREREVAQLKqXg7NmzWLJkCX799VcoFAq50yEiIjJLS5cuRd++fdG0aVO5UylTiYmJZX7/4OLiIine29tbdOyTJ09Ex9ra2oqOzczMFB3r5uYmOjYpKUl0LADUrFlTdKxKpRIdK+V8eXp6io7NysoSHQsAjo6OomOlvFb+/v6iY+/duyc61sPDQ3Qs8HTEvVg3btwQHVu9enXRscnJyaJjpbxOeXl5omMBwNnZWXTs/fv3RcdK+RywsbERHSvlcwAAoqKiRMd6eXkZHaNSqRAXF6d3PxZUSkH9+vVx4sQJ/P333+jdu7fc6RAREZmduLg4fPfddzh79qzcqRARERHpxB4qpcDFxQUzZ87E3LlzIQiC3OkQERGZHR8fH4SHh6NRo0Zyp0JERESkEwsqpWTSpEl4+PAh/v33X7lTISIiMis3b97E/v37UbduXblTISIiIioWp/yUEicnJ1y/fl3ynGQiIiJL8+677yIwMJDTZomIiKhc4wiVUuTi4oLQ0FCsXbtW7lSIiIjMwl9//YXTp09j/vz5cqdCRERE/9fenYZHVebpH7+rspOQsCQhRBIIW0DZDZuyhUWEZlNAFAT0Co7Y2koHUBhFRBZFZZWlUVBw6YGRGQQVRWUVWVpQbHYhICEkBAIkISukUv8Xjszf0VZyCvJUpb6f6/JFytycuypVlZNfPecc/C4GKjdZcHCwxo8fr/T0dNNVAABwayUlJRo7dqxeeOEFS2fkBwAAKE8MVG6yO++8U3379tXEiRNNVwEAwK35+Pho1qxZeuyxx0xXAQAA+EMMVMrBzJkztXr1ah07dsx0FQAA3NKFCxe0e/du9erVS35+fqbrAAAA/CFOSlsOYmNjdeTIEcXExJiuAgCAW3rhhRd04sQJffLJJ6arAAAAXBcGKuUkJiZGmzdvVmFhoXr37m26DgAAbuPgwYNaunSpvvvuO9NVAAAArhuH/JSjM2fO6NFHH1VBQYHpKgAAuAWn06nk5GQ9+uijatSokek6AAAA142BSjkaOnSooqOj9eqrr5quAgCA2xg6dKief/550zUAAADKhIFKObLb7Zo3b55eeeUVZWRkmK4DAIBRRUVFOnTokEaOHKlq1aqZrgMAAFAmDFTKWbt27bR161ZFRUWZrgIAgFFTp07Vv/3bv8npdJquAgAAUGaclNaAhIQE7d27V+np6erbt6/pOgAAlLvvv/9ec+bM0a5du2Sz2UzXAQAAKDMGKoacPn1aSUlJOnz4sCIjI03XAQCg3JSUlGjUqFFKTk5Ws2bNTNdxO5GRkbLby76IOC8vz/I2K1WqZDkr/XT4llV+fn6Ws+fPn7ecbdCggeXs5cuXLWcvXLhgOStJ586ds5z18fGxnLXynPyZr6/1PzkcDoflrCRlZ2dbzrpyn8PDwy1nXXk95uTkWM5KUmBgoOVsbGys5WxxcbHlrCuvR1eeX8HBwZazklSjRg3L2UuXLlnONmzY0HLWFa68d0lSUFCQ5WxJSUmZM6Wlpdf1fRzyY8iAAQOUmJioMWPGmK4CAEC5S0pK0nPPPWe6BgAAgGWsUDHo9ddfV+PGjbV161Z17tzZdB0AAG66U6dOyel0avTo0aarAAAAuIQVKgbVrFlTO3fuVMeOHU1XAQDgpnM6nRo1apRmzZplugoAAIDLGKgY1rhxY508eVILFy40XQUAgJvqnXfe0aFDhzRt2jTTVQAAAFzGQMUNlJaW6umnn9aOHTtMVwEA4KbIzMxUcnKyFi1apLCwMNN1AAAAXMZAxQ00aNBAzz//vEaNGuXSGa4BAHBXoaGhmj9/vvr372+6CgAAwA3BQMVNjB07VoGBgXrjjTdMVwEA4IbasWOH8vLyNGzYMNNVAAAAbhgGKm7C19dXa9eu1aOPPmq6CgAAN0x6err69eunTZs2ma4CAABwQzFQcSMxMTG6cuWKkpKSlJ2dbboOAAAuKS0t1ciRI9WrVy8NGTLEdB0AAIAbioGKmwkODlZ6eroee+wxOZ1O03UAALBsyZIlSklJ4Up2AACgQmKg4mZsNpuWL1+uTZs26d133zVdBwAAy4YOHaqPP/5YoaGhpqsAAADccAxU3FCNGjX09ttva86cOSotLTVdBwCAMsnPz9ekSZPk7++vW2+91XQdAACAm4KBipvq3bu3du/eLbvdzqE/AACPkpycrC1btsjf3990FQAAgJvG13QB/Gv+/v6aOnWqiouLNW3aNNN1AAD4Q2vWrNGqVav0/fffy8fHx3QdAACAm4aBipu755571LZtW911113q1KmT6ToAAPxLDodDEyZM0JIlS1S7dm3TdTyWn5+fpWGUK495fn6+5az00zngrHLlyobBwcGWs3a79YXagYGBlrN16tSxnJWky5cvW85WrVrVcjYtLc1ytri42HLWlc6SFBYWZjnrynPElRXmrrwmqlWrZjkrSXl5eZazVapUsZwNCgqynHWlsyunV3DleS1JKSkplrNxcXGWs+fPn7ecdeWcaCUlJZazkhQREWE5a+V3VGlpqS5duvSH38dAxc01adJEL7/8sh588EF9//33Lv9SAQDgZvHx8dHu3btd2qkGAADwFJxDxQM88cQT6tq1q44dO2a6CgAAv2nmzJlasGABwxQAAOA1WKHiAX6+lLIknTp1imXUAAC38tlnn2nq1Knatm2b6SoAAADlhhUqHiQrK0vNmjXThg0bTFcBAEDST8eADx06VIsXL1arVq1M1wEAACg3DFQ8SHh4uBYsWKAHHnhAJ06cMF0HAADt379fjzzyiIYPH266CgAAQLnikB8PM3z4cH3zzTe655579I9//EMBAQGmKwEAvJDT6dTJkyc1YMAADRgwwHQdAACAcscKFQ80a9YsTZkyhWEKAMCY2bNn6+6773b5MogAAACeioGKB/Lz89OAAQO0f//+ayerBQCgvGzatEnPP/+83nvvPfn6stgVAAB4JwYqHiw/P1+PP/64Nm/ebLoKAMBLZGRkaMiQIZo/f77atGljug4AAIAxDFQ8WLt27TR37lzdd999Sk1NNV0HAOAFatSooWXLlikpKcl0FQAAAKMYqHi4Rx55RPfee6/mzJljugoAoAJzOp16+eWXlZGRoX79+pmuAwAAYBwHPlcAr7/+unx8fFRcXCw/Pz/Z7czJAAA31syZMzV//nyNGDHCdBUAAAC3wEClAvD395ckJSUlqVq1apo9e7bhRgCAiuT999/XSy+9pK1btyo6Otp0HQAAALfAQKUCmTRpktq3b6/atWvrqaeeMl0HAFABOBwOLV68WB988IFatGhhug4AAIDbYKBSgdSrV08ff/yxunXrptq1a2vAgAGmKwEAPFh6erqioqK0bds2DictRykpKbLZbOW6zaCgIJfykZGRlrNOp9NyNioqynK2tLTUcjYnJ8dytqSkxHJWkkurxLKzsy1nXXms8/PzLWcvXrxoOSu59ni78rxOT0+3nA0ICDCyXel/V75b4etr/U/LoqIiy9lKlSoZyWZkZFjOSq491oWFhZazrjyvXXk9hoeHW85Kcun3YlZWVpkz1/u7ib2jCqZNmzZavXq1mjZtaroKAMCDnTlzRm3bttWaNWsYpgAAAPwG9pAqoJ49e6pevXqaO3eufvjhB9N1AAAeJjc3V71799Zdd92le++913QdAAAAt8RApQI7e/asevXqpXPnzpmuAgDwIMOHD1fNmjX1t7/9rdwPPQEAAPAUnEOlApsxY4ZSU1PVp08fbd68WcHBwaYrAQA8wKRJkxQfHy8/Pz/TVQAAANwWK1QqMLvdrrffflthYWH6+uuvTdcBALi5adOmae3atUpISFDlypVN1wEAAHBrrFCp4AICArRhwwbZ7XYdP35cdevW5eSCAIBfWbBggWbPnq3t27ebrgIAAOAR+MvaC9jtdjmdTt1///3685//7NLlCQEAFc8bb7yhZ599Vp9++qluvfVW03UAAAA8AgMVL2Gz2bRmzRpt2LBBY8aMYagCALgmMzNTn3zyidq2bWu6CgAAgMfgkB8vEhMTo02bNqlTp05q27athg4daroSAMCgDz/8ULfffrsmTZpkugoAAIDHYYWKl4mLi9OuXbs0ZMgQFRcXm64DADDkv/7rvzRs2DD98MMPpqsAAAB4JAYqXuiWW26Rj4+PBg8erOnTp5uuAwAoZ+vWrdOIESO0atUqdevWzXQdAAAAj8QhP15s+vTpSkxMVEBAgMaNG2e6DgCgHDidTs2bN0/vvfee+vTpY7oOAACAx2Kg4sWaNm2qL774Ql27dlXVqlWVlJRkuhIA4Cbav3+/br31Vn3xxRey21mkCgAA4Ar2prxcy5Yt9cUXX6hHjx6mqwAAbqJt27bpjjvu0Pbt2xmmAAAA3ACsUIESEhIkSTNmzFBYWJgef/xxw40AADfSpk2b1L9/f82ZM0edO3c2XQd/ICoqytLQq6SkxPI2z507ZzkrSSkpKZazvr7Wd0dPnjxpOXv16lXLWafTaTkbFhZmOSvJpYsKXLp0yXI2NzfXcrZSpUqWs7Vq1bKclaTU1FTLWVeGzw6Hw3K2atWqlrM+Pj6Ws65u25XXxdmzZy1nXXmO5OfnW866ypX3IFfeN135Obnye8bf399yVpKKioosZ62875aWll7X84OBCq7p2rWrevXqpdzcXE2cONF0HQDADZCfn68HH3xQCxcu1IgRI0zXAQAAqDAYqOCadu3aacuWLerRo4cKCgo0depU05UAAC44ffq0YmJidOjQIVWpUsV0HQAAgAqFg6jxC82bN9dXX32l22+/3XQVAIALli1bpmbNmunChQsMUwAAAG4CBir4lfj4eA0YMEC7du3S6NGjXTq+DwBQ/mbNmqXk5GStXbtW1atXN10HAACgQmKggn+pdu3a2rlzp+69914VFBSYrgMAuA5bt27VzJkztWnTJnXq1Ml0HQAAgAqLgQr+pZo1a2rr1q3KyclRz549lZeXZ7oSAOBfKCkpUXp6ujp16qSDBw9y6CYAAMBNxklp8buqVKmiDRs26I033nDpkncAgJunqKhIDzzwgEpKSvTRRx8pIiLCdCUAAIAKjxUq+ENBQUF66qmnVFhYqIEDB+ro0aOmKwEA/selS5d0991369y5c1qxYoXpOgAAAF6DgQquW6VKlRQfH6927dpp48aNpusAACQ9/fTTCgsL0+eff65q1aqZrgMAAOA1OOQH181ms2nGjBmKj49Xv3799M4772jgwIGmawGAV/rmm2/UvHlzzZ49W5UqVZKPj4/pSgAAAF6FFSoos5EjR2rDhg1q3769SktL5XA4TFcCAK+ybNkydenSRbt371blypUZpgAAABjAQAWWdOjQQdHR0ZozZ4769++vy5cvm64EABWew+HQ+PHjNX78eH3yySfq2LGj6UoAAABei4EKXJKUlKTi4mLdeeedOnXqlOk6AFChpaWl6auvvtLu3bvVpUsX03UAAAC8GgMVuKRKlSpav3697rzzTnXp0kVXrlwxXQkAKpzTp0/r73//u2rXrq2dO3eqQYMGpisBAAB4PU5KC5f5+flp0aJFSklJkb+/v06fPq2Y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ftx0NQBuwOFw6K9//auaNWum8PBwbdy4kSuFAQAA4LowUIHXsNls+uyzzxQeHq6mTZtqzJgx167eAcC7FBUVKSUlRT4+PoqMjNQ333yjJUuWKCoqynQ1AAAAeAgGKvAqUVFRWrJkifbs2aPq1avL19dXBw8eVFZWlulqAMpBUVGRFixYoHr16unf//3fJUkTJ05UkyZNDDcDAACAp2GgAq902223adKkSZKkt956S3FxcZowYYLOnz9vuBmAmyU9PV316tXTm2++qddff13/8R//YboSAAAAPBiXTYbXmzVrlgYPHqwXX3xRcXFx2rt3r+Lj403XAnADFBYWasmSJWrbtq3atWund955R4mJiZxsFm4tODjY0nPU6XRa3mZgYKDlrCSdOnXKctaV16PD4bCcDQoKspw9ceKE5WzdunUtZyUpLy/Pcvby5cuWs670PnPmjOWsq4di5ubmWs66cmi4K9utWrWq5WxkZKTlrCRlZGRYztasWdNyNiUlxXL2lltusZz9+ep+Vly9etVy1lWu9K5SpYrlbHp6uuWsK+/XkmvvQaWlpWXOXO/vVPYoAUnt2rXT+vXrtX37djVs2FC7d+/W+PHjde7cOdPVAFhQUFCgOXPmqG7dunrnnXfkcDhks9nUrVs3hikAAAC4IdirBP4/LVq0kM1mU0hIiA4fPqy4uDiNHTtWZ8+eNV0NwHX4+dOitWvX6r333tOSJUu0d+9edejQwXAzAAAAVDQMVIDfcNttt+njjz/W1q1bdezYMX366aeSxIoVwE1duHBBL730kmJjY/XDDz9oyJAh2rNnj/r168dlkAEAAHBTMFABfkdCQoLWrVunhx56SFlZWapTp47uuecebdu2zaVj1QHcOFOmTFFMTIw+//xzLV26VA0aNJDdbmeQAgAAgJuKgQpwHWw2m8LDw3XkyBE1aNBA/fr1U58+fUzXAryS0+nUl19+qUWLFkmSWrdura+//lqbN2/Wn/70JwYpAAAAKBcMVIAyiI2N1SuvvKK0tDS98MILkqRp06Zp+vTpysrKMlsOqOCKioq0bNkyNWvWTA888IBycnIkSb1791bLli0NtwMAAIC3YaACWBASEqLWrVtL+unT8U2bNik2NlaPPvqoS5ebA/BrZ8+eVXZ2tgoLC/Xmm29qzJgxOn36tCZOnGi6GgAAALwYAxXART179tTG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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAABFQAAAI8CAYAAADfiv9dAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAC44ElEQVR4nOzdd3hTZfsH8G+a7r0pq7S0rLL3KFPZAgKyVYbgAAWRKagsBwpuZKlMQRxsF5YpeyiUPVrasqF77+b8/uCXvKRNmuSctKdpvp/r8npfTs+dc+fkJD298zz3oxAEQQARERERERERERnNRu4EiIiIiIiIiIgsDQsqREREREREREQmYkGFiIiIiIiIiMhELKgQEREREREREZmIBRUiIiIiIiIiIhOxoEJEREREREREZCIWVIiIiIiIiIiITMSCChERERERERGRiVhQISIiIiIiIiIyEQsqREREREREREQmYkGFiIiIiIiIiMhELKiQlvXr10OhUCAuLq5cY+U4RnnkWxGPrc+CBQugUChkOXZFPB+mMuU5qM91YmJi2SdGZiXlfdKyZUsMGjTIzBkRyadr167o2rWr3GmUcOjQISgUCmzdulXuVMqd1NdEoVBgwYIFZsvHXJYsWYL69etDpVLJnYrJKsM9Tlkx5Xrt2rUrGjVqVLYJUQnqz9NDhw6V2THEfO6MGDECw4YNK5uETMSCCpGFOX78OBYsWIDU1FS5U6kQKvL5qMi5mSIvLw+zZ89GtWrV4OTkhLZt22Lv3r0G48aOHQuFQqH3v3v37pnlOJZAEARcu3YNYWFhcqdSgkqlgp+fH5YsWaLz5x9++CEUCgVvZIlIrytXrmDBggVlUjRIT0/HJ598gtmzZ8PGhn+6VGb379/HggULEBkZafbH/uijj9CuXTv4+fnB0dERderUwdSpU5GQkKC137Vr1zBr1iw0a9YMbm5uqFq1Kp555hn8+++/Zs+puPv37+OFF15AvXr14ObmBk9PT7Rp0wYbNmyAIAha+27fvh3Dhw9H7dq14ezsjHr16mH69OkWf89prNmzZ2Pbtm04f/683KmwoELaXnzxReTk5KBWrVrlGisHS8tX7fjx41i4cGGl+sCU8lpUlPOh6zlUlNykGjt2LD7//HM8//zz+Oqrr6BUKtG3b18cPXq01LhXX30VP/zwg9Z/GzduhLOzM8LCwlC9enWzHMcSxMXFITs7u0IWVE6fPo3ExEQ888wzJX529+5dfPTRR3BxcZEhM6roIiIiEBERIXcaVAFcuXIFCxcuLJOCytq1a1FYWIiRI0ea/bHLg6Xeb5aH4p8h9+/fx8KFC8ukoPLff/+hWbNmeOedd7B8+XI8++yzWLduHTp06ICsrCzNft9//z2+++47tGrVCp999hmmTZuG69evo127dti3b5/Z83pSYmIi7t69iyFDhuDTTz/FBx98gKpVq2Ls2LF45513tPZ95ZVXcPXqVbzwwgv4+uuv0bt3b3zzzTdo3749cnJyzJZT586dkZOTg86dO5vtMc2hefPmmtdIbrZyJ0AVQ1ZWFlxcXKBUKqFUKkU9hpRYOVhavpVZZXgtKsJzyM3NhaOjo1kf8/Tp0/jpp5+wdOlSzJgxAwAwevRoNGrUCLNmzcLx48f1xrZv3x7t27fX2nb06FFkZ2fj+eefN9txLMGVK1cAoEIWVP7880/UqlULDRs2LPGzGTNmoF27digqKuIUNSrB3t5e7hQqvOzsbDg7O8udhkVbt24dBgwYYNbfb+r73vJQEe4PKqry/AzZtm1biW3t27fHkCFD8Ntvv2HEiBEAgJEjR2LBggVwdXXV7PfSSy+hQYMGWLBgAbp3715mOTZp0qTE1Jo33ngD/fv3x9dff433339fcy1t3bq1xHSpli1bYsyYMdi8eTMmTJhglpxsbGzMfm9pLsOGDcP8+fOxYsUKrdervHGESiVz7tw59OnTB+7u7nB1dcXTTz+NkydPau2j7gFw5coVjBo1Cl5eXujYsSMA3fM8Dx06hFatWsHR0REhISFYvXq1zj4CxWPV+0RHR2Ps2LHw9PSEh4cHxo0bh+zsbK3YW7duYdKkSahXrx6cnJzg4+ODoUOHiv6mIyMjA1OnTkVQUBAcHBzg7++PHj164OzZswbzvXHjBl544QV4eHjAz88P7733HgRBwJ07d/Dss8/C3d0dAQEBJSqiY8eORVBQUIlcjO25YMw5WLBgAWbOnAkACA4O1kydUO9z7949vPTSS6hSpQocHBzQsGFDrF27tsSxjh49itatW2u9psZSP59r165h2LBhcHd3h4+PD958803k5uaW2N+Ya1LXdWfM9WPofBhzHRR34cIFKBQK7N69W7Ptv//+g0KhQIsWLbT27dOnD9q2bavzORjKDQBSU1MNvjf06dGjBzp06IAjR46gS5cucHJywptvvmlUrCm2bt0KpVKJV155RbPN0dER48ePx4kTJ3Dnzh2THu/HH3+EQqHAqFGjzHocYz9DTPlckvI+UduxY4dW75ROnTrh+eefR1pamsmPZaxJkyaVOtWq+HX4xx9/6BydcvjwYWzduhVffvllmeVK5ceUa7+wsBDvv/8+QkJC4ODggKCgIMydOxd5eXla++nqf7Bs2TI0bNgQzs7O8PLyQqtWrfDjjz8CAA4ePAiFQoEdO3aUyE/92XDixIlSn0dMTAyGDh0Kb29vODs7o127dvjjjz907ltUVIS5c+ciICAALi4uGDBgQInPkqioKDz33HMICAiAo6MjatSogREjRpR4j27atAktW7aEk5MTvL29MWLEiBKPpe7x8N9//6Fz585wdnbG3Llz0a9fP9SuXVtnju3bt0erVq1MPhYAfPvttwgJCYGTkxPatGmDI0eOlHrunpSXl4e33noLfn5+cHNzw4ABA3D37t0S+xnz2bp+/XoMHToUANCtWzfN54z6D8Ndu3bhmWeeQbVq1eDg4ICQkBC8//77KCoqMphnbGwsLly4oPOP2KSkJLz44otwd3eHp6cnxowZg/Pnz0OhUGD9+vWa/caOHQtXV1fcvHkTffv2hZubm6aof+TIEQwdOhSBgYFwcHBAzZo18dZbb2l9w79u3TooFAqcO3euRA4fffQRlEpliSmsT9J1jxMUFIR+/fpp7rGdnJzQuHFjzTnbvn07GjduDEdHR7Rs2bLEsS9cuICxY8eidu3acHR0REBAAF566SUkJSWVOL6x9/GA8dde8VzE3DcB2p8hhw4dQuvWrQEA48aN01xHT76WwOMvKLp16wZnZ2dUr15d73RVY6jv258cSdyyZcsSf5z7+PigU6dOuHr1aqmPl5OTg/r166N+/fpa11BycjKqVq2KDh06GHXd68ozOzsb+fn5mm26es+o7zUM5al+zH79+iEiIgLNmjWDo6MjwsLCsH37dq39ivdQuXr1KpycnDB69Git/Y4ePQqlUonZs2drtqWmpmLq1KmoWbMmHBwcEBoaik8++cRgLyRj79979OiBrKws2aeHc4RKJXL58mV06tQJ7u7umDVrFuzs7LB69Wp07doV//zzj9YHGAAMHToUderUwUcffVRiXp7auXPn0Lt3b1StWhUL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7Ozs0LRpUzRt2lSzbcWKFTh69CiOHTuGBQsWwNPTE926dcPkyZPRokULdOzYEXXq1JG9OScRERERUUXHggpRJXXo0CH88ccf2LNnD65cuYKzZ8+iUaNGePvttxEeHo7q1atr9rWzs5MxUypP6ulCzz//vGZbbm4u3NzcsH79ekyaNAkBAQG4fPkybGxsUFBQwFXRiIiIiIh0YEGFqJKIjY3Fnj17EBoaih49emD58uVwd3fHvHnz0L17d3h5eQEAhg0bJnOmVNE4Ojpi8eLFAB4XV/7991+4uLhg165dGDJkCMLDw9G7d2/069cPjRo1kjlbIiIiIqKKgQUVIgulXsL4l19+wbx583Dz5k107NgRb775JgDg119/lTlDskSOjo6aZZyfffZZREVFYc+ePdizZw9iY2OxevVq7Ny5E/n5+ejRo4emUEdEREREZG3YMIHIgiQmJuK7775D3759NcvphoaG4uOPP0ZSUhIOHjyIgQMHypskVSpBQUF47bXXsHPnTqxevRrA4548H3zwAfz8/BAeHo4jR47InCURERERUfnjCBWiCi4pKQlubm54+PAhQkJC0KpVKzz33HPo27cvAKBFixZo0aKFzFmSNZk0aRImTZqEu3fvYs+ePQgICEB+fj769OmDXr16YejQoQgODpY7TSIiIiKiMsURKkQVUFJSEr7//nv06tULAQEBOHHiBAIDAxEXF4cTJ05gxowZCAsLkztNsnI1atTAhAkTUKdOHQiCgBdeeAGHDh1CvXr10KFDBxQWFnKpeyIiIiKqtDhChaiCSEpKwqNHjxAWFoZx48bh0aNHGDZsGL799lvUqlULALRW5iGqSBwcHDBu3DiMGzcOycnJOH36NGxtbbFy5UqsW7cOQ4cOxdChQxEUFCR3qkQVXnx8vKily/39/UUf083NTXQsAElLrRcUFIiOLSwsFB3r6OgoOvbRo0eiYz08PETHAtKec0pKiuhYHx8f0bFSXmOpMjMzRce6urqKjk1NTRUdK+U1lvpFxq1bt0THVqlSRXSsjY347/ltbcX/SSsl1sXFRXQsABQVFYmODQkJER178+ZN0bH29vaiY5VKpehY4HHrA7Gk/I4yhCNUiGSUk5ODzZs3a0aiLFu2DACwdetWnDp1CtOnT9cUU4gshbe3N3r37g0AGD58OCZOnIgDBw6gTp06+PDDDwFI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EBERUSXEgkox27Ztw5gxY+ROg4iIzOhWcnapP49LYkGlMlIoFBg0aBB27doldypERERUCbGgUkxERAR69eoldxpERGRGtbydS/15kA+b01ZWffv2RXZ26QU1IiIiIjFYUHmCSqXC/v370bNnT7lTISIiM6rt54rOdfygVCi0tisVCnSu48fVfiqxXr16YePGjXKnQURERJUQCypPePDgAWrXro3WrVvLnQoREZnZspHNER7qq7UtPNQXy0Y2lykjKi+7d+9GRESE3GkQERFRJcNlk59QvXp1nD59Wu40iIioDHg422Hj+DaITcxCXFIWgnxcODLFSly8eBHnzp2zmBGoXl5eUCqVJsdlZYnvBeTm5iY6FgCcnUufVleavLw80bG+vr6Gd9Ljxo0bomN9fHxEx3p4eIiOBR73BhIrNjZWdOzt27dFx9raiv+TIyAgQHQsAGRmZoqOlfKekktRUZGkeE9PT9GxqampomP9/PxEx2ZkZIiODQoKEh0bEhIiOhaApOmoUl6ntLQ00bFSnnNcXJzoWACifi+qiTnXQrGFDPThCJUnfPnll4iJiZE7DSIiKkPBvi7oVs+fxRQr0qNHDxw4cEDyHxpERERET2JB5f9lZ2dj9uzZvNkiIiKqZFq2bAkA+O+//2TOhIiIiCoTFlT+35EjR1C1alWEhobKnQoRERGZkVKpxJIlSyRPtSAiIiJ6Enuo/L+IiAj06NFD0rxUIiIiqpgmTJggdwpERERUybCg8v86dOgguekVERERVUypqakIDw/HqVOn4OrqKnc6REREVAlwys//e+655xAeHi53GkRERFQGPD09kZubi8OHD8udChEREVUSLKgA+Pnnn/Haa6/JnQYRERGVoR49emDv3r1yp0FERESVBAsqAP755x84OzvLnQYRERGVoc6dO+P48eNyp0FERESVBAsqAE6dOoW2bdvKnQYRERGVoWeeeQabN2+WOw0iIiKqJKy+KW1OTg4uXLjAggoREVEl5+HhARsbG6Snp8Pd3V3udIiIiMjCWf0IFTs7Oxw5cgS1atWSOxUiIiIqYyNHjsT69evlToOIiIgqAasvqGRkZKB169ZQKBRyp0JERERlrE2bNjh16pTcaRAREVElYPUFlYkTJ+KTTz6ROw0iIiIqByyoEBERkblYfUHl1KlTaN26tdxpEBERUTlo06YNEhMT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aoiOzcjIEB1rZ2cnOlaq+/fvi47Ny8szOUYQBKP24wgVA8aNGyfpBoWIiIjKz7x583Dz5k250yAiIiIrwIKKAR07dsSPP/4odxpERERkQHR0ND755BNJoxaIiIiIjMWCihEuXLiAmTNnyp0GERERlWLdunXo378//Pz85E6FiIiIrAALKkbw9fXFV199hdu3b8udChEREelQWFiI9evX46WXXpI7FSIiIrISLKgYoVq1aujVqxfWr18vdypERESkx1dffYVevXrJnQYRERFZCRZUjPTSSy9h3bp1krrYExERUdlISkrCkCFDoFQq5U6FiIiIrASXTTZSv3794OHhIWoZQyIiIio7CQkJqFWrFm7evInq1avLnQ4RERFZCY5QMZKdnR26devGpRiJiIgqmE2bNqFdu3YsphAREVG5YkHFBDdu3EDjxo2RkpIidypEREQEQBAErFmzBuPHj5c7FSIiIrIyLKiYoF69emjWrBm2bNkidypEREQE4NGjR1AqlXjuuefkToWIiIisDAsqJho/fjxWr14NQRDkToWIiMjqBQQE4Pz583B2dpY7FSIiIrIyLKiYaNSoUfDx8UFiYqLcqRAREVm1+Ph4vPbaaygqKpI7FSIiIrJCXOXHRM7Ozjhw4IDcaRAREVm9lStXIi4ujkslExERkSw4QkUEQRAwbNgwXL9+Xe5UiIiIrFJubi6WL1+OadOmyZ0KERERWSmOUBFBoVDAyckJX331FVasWCF3OkRERFZn8+bN8Pf3R48ePeROxez8/f1hY2P6d15xcXGijynmeE/Kzs4WHatSqUTH5uXliY51cHAQHZufny861t/fX3QsANy8eVN0rJ2dnejYoKAg0bFSXicp1xYAPHz4UHRsrVq1RMdeu3ZNdOzt27dFx0odsefi4iI61sPDQ3SslOdcvXp10bF3794VHSv1vZyTkyM6VspntpT3o5TnnJycLDoWAGrWrCk6VszvR0EQUFBQYHA/jlAR6a233sL69euRlJQkdypERERWZ8iQIdiyZQsUCoXcqRAREZGVYkFFpGbNmqF9+/ZYt26d3KkQERFZlaioKOTl5aFx48Zyp0JERERWjFN+JNiwYQP8/PzkToOIiMiqTJ48Ge3bt8f8+fPlToWIiIisGEeoSFCjRg3cvXsXp06dkjsVIiIiq3Dp0iX8888/mDhxotypEBER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mNPp1Msvv6zMzEz169fPdB0AAADjOPC5EpgzZ458fHxUUlIiPz8/2e3MyQAA19eMGTP05ptvasSIEaarAAAAuAUGKpWAv7+/JCk5OVk1atTQzJkzDTcCAFQmH3zwgV566SVt3bpV0dHRpusAAAC4BQYqlcikSZPUoUMHxcXF6YknnjBdBwBQCTgcDi1YsEAffvihWrZsaboOAACA22CgUonUr19fn3zyibp37664uDgNGDDAdCUAgAfLyMhQVFSUtm3bxuGkFSg1NVU2m61CtxkUFORSPjIy0nLW6XRazkZFRVnOlpWVWc7m5uZazpaWllrOSnJplVhOTo7lrCuPdUFBgeXshQsXLGcl1x5vV57XGRkZlrMBAQFGtiv978p3K3x9rf9pWVxcbDlbpUoVI9nMzEzLWcm1x7qoqMhy1pXntSuvx/DwcMtZSS79XszOzi535lp/N7F3VMm0bdtWK1euVLNmzUxXAQB4sDNnzqhdu3ZatWoVwxQAAIDfwB5SJdSzZ0/Vr19fb7zxhr777jvTdQAAHiYvL099+vTRnXfeqXvuucd0HQAAALfEQKUSO3v2rHr37q1z586ZrgIA8CDDhw9X7dq19be//a3CDz0BAADwFJxDpRKbPn260tLS1LdvX23evFnBwcGmKwEAPMCkSZOUkJAgPz8/01UAAADcFitUKjG73a733ntPYWFh+uqrr0zXAQC4ualTp2r16tVKTExU1apVTdcBAABwa6xQqeQCAgK0fv162e12nThxQvXq1ePkggCAX5k7d65mzpyp7du3m64CAADgEfjL2gvY7XY5nU7dd999+vOf/+zS5QkBAJXPW2+9pWeeeUafffaZbr75ZtN1AAAAPAIDFS9hs9m0atUqrV+/XmPHjmWoAgC4KisrS59++qnatWtnugoAAIDH4JAfLxITE6NNmzapc+fOateunYYOHWq6EgDAoI8++ki33nqrJk2aZLoKAACAx2GFipeJj4/Xrl27NGTIEJWUlJiuAwAw5L/+6780bNgwfffdd6arAAAAeCQGKl7opptuko+PjwYPHqxp06aZrgMAqGBr1qzRiBEjtGLFCnXv3t10HQAAAI/EIT9ebNq0aUpKSlJAQIDGjx9vug4AoAI4nU7Nnj1b77//vvr27Wu6DgAAgMdioOLFmjVrps8//1zdunVT9erVlZycbLoSAOAG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", "text/plain": [ "
" ] @@ -192,7 +224,7 @@ "ax[0].set_xticks([-1, 0.0, +1.0])\n", "ax[0].set_ylim(-1, +1)\n", "ax[0].set_yticks([-1, 0.0, +1.0])\n", - "ax[0].set_title(r\"original simulated points with $r = 0.70$ and $\\theta = \\pi/4$\")\n", + "ax[0].set_title(r\"original simulated points with $r = 0.70$ and $\\phi = \\pi/4$\")\n", "ax[1].imshow(x_observed.view(32, 32), origin=\"lower\", cmap=\"gray\")\n", "ax[1].set_xticks([])\n", "ax[1].set_yticks([])\n", @@ -203,9 +235,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Defining an `embedding_net`\n", + "## Choosing an `embedding_net`\n", "\n", - "An inference procedure applied to the output data from this simulator model determines the posterior distribution of $r$ and $\\theta$ given an observation of $x$, which lives in a 1024 dimensional space (32 x 32 = 1024). To avoid working directly on these high-dimensional vectors, one can use a convolutional neural network (CNN) that takes the 32x32 images as input and encodes them into 8-dimensional feature vectors. This CNN is trained along with the neural density estimator of the inference procedure and serves as an automatic summary statistics extractor.\n", + "The outputs $x$ from the simulator are defined in a 1024 dimensional space (32 x 32 = 1024). To avoid having to setup a conditional neural density estimator to work directly on such high-dimensional vectors, one could use an `embedding_net` that would take the images as input and encode them into smaller vectors.\n", "\n", "`sbi` provides pre-configured embedding networks of the following types:\n", "\n", @@ -213,59 +245,36 @@ "- Convolutional neural network (1D and 2D convolutions)\n", "- Permutation-invariant neural network (for trial-based data, see [here](https://sbi-dev.github.io/sbi/tutorial/14_iid_data_and_permutation_invariant_embeddings/))\n", "\n", - "These networks can be instatiated and customized as follows (please see [here](https://github.com/sbi-dev/sbi/blob/main/sbi/neural_nets/embedding_nets.py) for all options on hyperparameters):\n" + "In the example considered here, the most appropriate `embedding_net` would be a CNN for two-dimensional images. We can setup it as per:\n" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "from sbi.neural_nets import CNNEmbedding\n", "\n", - "embedding_net = CNNEmbedding(input_shape=(32, 32))" + "embedding_net = CNNEmbedding(\n", + " input_shape=(32, 32),\n", + " in_channels=1,\n", + " out_channels_per_layer=[6],\n", + " num_conv_layers=1,\n", + " num_linear_layers=1,\n", + " output_dim=8,\n", + " kernel_size=5,\n", + " pool_kernel_size=8\n", + ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Alternatively, you can define custom embedding networks and pass those to `sbi`. For example, you can define and instantiate the CNN as follows:\\\n" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "class SummaryNet(nn.Module):\n", - " def __init__(self):\n", - " super().__init__()\n", - " # 2D convolutional layer\n", - " self.conv1 = nn.Conv2d(in_channels=1, out_channels=6, kernel_size=5, padding=2)\n", - " # Maxpool layer that reduces 32x32 image to 4x4\n", - " self.pool = nn.MaxPool2d(kernel_size=8, stride=8)\n", - " # Fully connected layer taking as input the 6 flattened output arrays\n", - " # from the maxpooling layer\n", - " self.fc = nn.Linear(in_features=6 * 4 * 4, out_features=8)\n", + "!!! note\n", + " See [here](https://github.com/sbi-dev/sbi/blob/main/sbi/neural_nets/embedding_nets.py) for details on all hyperparametes for each available embedding net in `sbi`\n", "\n", - " def forward(self, x):\n", - " x = x.view(-1, 1, 32, 32)\n", - " x = self.pool(F.relu(self.conv1(x)))\n", - " x = x.view(-1, 6 * 4 * 4)\n", - " x = F.relu(self.fc(x))\n", - " return x\n", - "\n", - "\n", - "embedding_net = SummaryNet()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ "## The inference procedure\n", "\n", "With the `embedding_net` defined and instantiated, we can follow the usual workflow of an inference procedure in `sbi`. The `embedding_net` object appears as an input argument when instantiating the neural density estimator with `sbi.neural_nets.posterior_nn`.\n" @@ -273,7 +282,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 22, "metadata": {}, "outputs": [], "source": [ @@ -285,21 +294,19 @@ "# make a SBI-wrapper on the simulator object for compatibility\n", "prior, num_parameters, prior_returns_numpy = process_prior(prior)\n", "simulator_wrapper = process_simulator(simulator_model, prior, prior_returns_numpy)\n", - "check_sbi_inputs(simulator_wrapper, prior)\n" + "check_sbi_inputs(simulator_wrapper, prior)" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "from sbi.neural_nets import posterior_nn\n", "\n", "# instantiate the neural density estimator\n", - "neural_posterior = posterior_nn(\n", - " model=\"maf\", embedding_net=embedding_net, hidden_features=10, num_transforms=2\n", - ")\n", + "neural_posterior = posterior_nn(model=\"maf\", embedding_net=embedding_net)\n", "\n", "# setup the inference procedure with the SNPE-C procedure\n", "inferer = SNPE(prior=prior, density_estimator=neural_posterior)" @@ -307,13 +314,13 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "a073de8ca9094ec9a4909f74ba837bfb", + "model_id": "3aaa3e73f5b94afb99fd871e79208043", "version_major": 2, "version_minor": 0 }, @@ -327,19 +334,19 @@ ], "source": [ "# run the inference procedure on one round and 10000 simulated data points\n", - "theta, x = simulate_for_sbi(simulator_wrapper, prior, num_simulations=10000)" + "theta, x = simulate_for_sbi(simulator_wrapper, prior, num_simulations=10_000)" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - " Neural network successfully converged after 96 epochs." + " Neural network successfully converged after 198 epochs." ] } ], @@ -359,13 +366,13 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "cac9b3de62b14679a86885c2294a8f98", + "model_id": "96b874255ae54c2ca18ab90750f595ac", "version_major": 2, "version_minor": 0 }, @@ -379,7 +386,7 @@ ], "source": [ "# generate posterior samples\n", - "true_parameter = torch.tensor([0.70, torch.pi / 4])\n", + "true_parameter = torch.tensor([0.50, torch.pi / 4])\n", "x_observed = simulator_model(true_parameter)\n", "samples = posterior.set_default_x(x_observed).sample((50000,))" ] @@ -393,12 +400,12 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 30, "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZsAAAHSCAYAAAA6z2ZcAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAdgklEQVR4nO3de3CU9b3H8e9mk82NAIGQKBhRK2NVLnIRBmgLLSlSmY52eqx0KkN7ehkZrFLanjJn5gxtbYV2rLVaCuKoULWFqVOrtlNvFKh6oNEAU9GxavUgppIYCJArWXZ/5490L8/mAtk83+e3+zzv10xmdvfZ2XyzbPjkdw8ZY4wAAKCowHYBAAD/I2wAAOoIGwCAOsIGAKCOsAEAqCNsAADqCBsAgDrCBgCgjrABAKgrtF0AAJFPF9zgyuuEiouTt3s+PtlxreRwa/J27K13XPl+QMJz8d8Nep2WDQBAHWEDAFBHNxrgJ/HUvrrxooy/JQv42xL28OkDAKgjbAAA6uhGw+CMEens7L1dViYSCtmtB4MKhVN/P/aMCjuulRXwbwd7aNlgcJ2dIiNG9H4lQgcAhoiwAQCoI2wAAOoYswF8JBSJJG/3lDvHaEyEX3fYQ8sGAKCOsAEAqKNdDfhUQcx53xSlTYXOnMJujACaaNkAANTRsslRjSe6pLWjJ3m/sjwiE0aXWqwIALJH2OSgxhNdUvezPdIVTfWDlBaF5flvLyBwAOQlwiYHtXb0SFc0JnffeJVcWj1C3m5ul9U7DkprRw9hg8GlbUkTLXOOy4TOxJO3GaGB1wgbi87WVXZp9QiZPGGUjdIAwFWEjSWDdZUBgN8QNpYM1lUGAH5D2CijqwxeCpWUJG+frnReOzMitZVNAetq4DHCRpFWVxnTogHkG8JGUTZdZW83tw/6mkyLBpCPCBsPZHaV9RcoleURKS0Ky+odB0WkN0AqyyN9nse0aAzGxFLTm0OZPWXhtKnQbFcDjxE2HhosUCaMLpXnv70g2eo5W9cYYz0A8glh46GzBcqE0aWDBszZutgAIFcRNi4YyoD92QKlP+faxQYAuYqwGSYvFmcOtYsNARZPfQ67x8Wdl8KpTd7Z7h1eI2yGyavFmdm0iAAgVxA2WUp0nSXGUWwP2KeP59DyAZBrCJssZHad2RxDyRzPSdTDuptgCpWm/s1NxDmd2aT3nTHVGR4jbLKQ2XXWX0vCq5ljmeM5rLsBkIsIm2Hor+vMxswxxnMA5DrCxmXMHAOAvggbBbnQ0kh04xF2AVOU9is9Iuq4FC8Ke1wMkELY+Ex/3XgDTRZg92gAXiFsfCa9Gy8xWeDld49La/UIEUkFCrtHA/ASYeNDiW68waZFs3s0AC8RNj422LToBNuLUeGyM6mWamHxGceleIRfd9jDp8/ncmGyAgAQNgHEUQUAvEbYBAhHFfifKUn9e1aUdzuuFfQUp+5wUic8RtgMInNqcEK+tgxYcArAFsJmAP1NDU6Xr60CxnAA2EDYpElvybzd3O6YGpyJVgEAnDvC5t8GWuR49cVjCBXkjVAsdTpnaZFz6nPPyNR2NcWM0cBjhM2/ZS5yFKH1AgBuIWwysMgRANxH2AA+YsKp4zgLQhkndabfZeozPEbYwIGjCQBoIGwgIoMcTVBkty5kb9yHbXJBY6u8P6FSPhxXYbscBBxhAxHp/2iC3h2g+Yjko2tO/l1uXf6MhONGYgUh+elti+VJ+bTtshBgBWd/CoJiwuhSmTxhVL/ripA/qqJtcmtTb9CIiITjRv7rF8/KuM4TqScZ4/wClBE2gM+Mjx6XsDgDJBw3ckF7i6WKALrRMIi3m9sl1BmSK20XgiH5V9EYiUnIETixgpC8P6LKYlUIOlo26CN9ssB/bNqbfPxfJ7osVoVz1VJUIffUXCOxgt7pzbGCkDz633Pkw7LRdgtDoNGyQR/pkwVCnR0iP+99vLWzR8bbLQ1nU9D79+MzlVfJu/ePkpojp6SpdqQcry6XnvvT1tawzgYeC3zYJDbfzNdjA7Qkd4fuCPxHJG8dry6X49XltssARCTgYZO5+Wa+HhsAALku0GGTufkmq+aR7+JlqdM4rx3zquPaGzGmesCeQIdNAptvAoAuZqMBANQFrmWTeRonAEBfoMJmoNM4mRRwbt75sENM2UnGtnJYKJb6bJ+IlTmvMbsZFgUqbDiNc3j+67G/S1ekJLUjNO8bgHMUqLBJYEJAdh5bOVfeajeyesdBefnd49JKYAM4R4EIGxZuuuPK8aNkdLTAce6NiNDSySGmOHUAUSxj/k887HU1QIrvw4aFm+5K38pGRDLOviFsAPTP92HDwk33JbeyAYBz5PuwSWCcBgDs8WXYsJYGgZW2e/OkyFHHpcJu5j7DHt+FDWtp7EiEOt2UAPrju7BhLY230g9aE2FmGoD++S5sEhij8Ub67DRmpgEYiG/DBt5hdloOSTuBc2RBt+NSrDjtdE5O5oTH2PUZAKCOsAEAqKMbDa5Ln27O5AxvxUpSv9KXFjm70YSeM1hE2MA1mTPTRJidBqAXYQPXsG8agIEQNnBVfzPTWPAJgLCBGhZ8ei/cFU3e7h5senPaFGkRYSo01OVt2KTvfybCX825iAWfABLyMmwG2v/s+W8vsFgV+sOCTwAieRo2mfufpf/VDARZdFRx8vYFhSOcF9N7zug2g8fyMmwS2P8MAPIDOwgAANQRNgAAdXndjZaJUzkRdKF4aizmvTPO34dQLP0OU5/hLV+ETX/rOTiZEwByhy/CJnObFNbc5C426QSCyRdhI8J6jlzHJp1AsPkmbJDb2KTTG9ERqV/p88PO9zXSHve6HCApr8ImsUUNEwHyE61PILjyJmwyt6hhEgAA5I+8CZvMLWoYXAb6Sp/63BrvHvAaU53htbwJmwS2qPEXzroBgiHvwgb+wFk3QLAQNrCCs26AYCFsYA2z09yXviXNqIKMCTQZO9QAXmIjTgCAupxu2aQf/czaGgDIXzkbNgMd/czaGmBgZ0pTnRV/O13kuFbUFst8OuCZnA2bzHU1IkyPBYB8lbNhk8C6GgDIfzkfNggOjh8A/IuwgXUDHT+weflMGVseIXiGoCCa2obmkkLnpJp4IXOfYU/OhQ07OwdP5vEDxzp65OaHG2TFg/Uiwu4CgB/kVNiws3NwZS7wZHcBwF9yKmzY2RkJ7C4A+EtOhU0CM9CA7ERHpNbZNMWcvQKFHWe8LgdIYrsaAIA6wgYAoC4nu9EAnKNQxnTmtAM4/7dzkuNSYXtP8nZcsyagH7RsAADqrLds2NkZAPzPatiwszMABIPVsGFnZ8BdoXhq0Kas4LTzYpyRGthjvRtNhHU1AOB3ORE2wNmwIzSQ3zwPGyYEYCgG2hGajTn/zRjn/bSp0CdjZc5rBUw+hT2ehg0TAjBUmTtCszEnkJ88DRsmBCAbbMoJ5D8rYzZMCMBwDdQFyx8vQG5iggDySn9jOOkCN55TEHbc7SlPjdk89cEUx7XS9i5PSgL6Q9ggr2SO4aRjPAfIXZ6EDUc9w02M4QD5Rz1sOOoZAKAeNhz1DCgyzi1oQmnLbrqiRY5rZWf6dj0CXlEJm/4WbjIDDQCCy/WwYeEmACCT62HDwk3YlmhNB/FzF0/rOevoKnZcG3uaCTqwx7WwyZxxRrcZvJa5Bidwa26AHOZK2DDjDLkgfQ0Oa26A3OJK2DDjDLmCNThAbnJ1zIauM8BjIeexAdG07Wo6T5U4rpnujJM7AQ9xwAUAQF3WLRsOQQMAnKusw4a1NEDuKT6R2kKgqCnj9zEWE8CWrMOGtTTIB+mtbj6jgD3DmiDAhADkqv7OvSktCsvm5TNl7L9b4Hx2Ae9wng18KfPcm2MdPXLzww2y4sH65HP+b8NSW+UBgUPYwLcy19ykh49fJrWEws6TOqNlqanPpsBkPh2whrBBYLDgE7CHdTYAAHWEDQBAHd1oQD7rc1Jnapym+HjIcS1+mu1qYA8tGwCAOsIGAKCObjQgn2Xs+hxK25Gm+Lhz6nMolDYtWrUooC9aNgAAdYQNAEAdYQMAUMeYDeAnabOdI23OkRlz5ozHxQAptGwAAOoIGwCAOrrRgDwWKhr4V7isKeq4b+JMeIY9tGwAAOoIGwCAOsIGAKCOMRsgn4WcOzsXdqVuF/Q4d4TO3CEa8BItGwCAOsIGAKCOsAEAqGPMBshjmetsQrHUWprC1i7HtXj6cQQmJoCXaNkAANQRNgAAdXSjAXnMRDN2ck6bCR2KZXSVxek6gz20bAAA6ggbAIA6wgYAoI4xGyCPhUpLHPfDPWnXOrs9rgYYGC0bAIA6wgYAoI5uNMBHCqKpHQRM92mLlQBOtGwAAOoIGwCAOsIGAKAuZIwxZ38aAADZo2UDAFBH2AAA1BE2AAB1hA0AQB1hAwBQl9UOAsYYaWtrc7sWwHMVFRUSCoXO/kQAw5JV2LS0tEh1dbXbtQCea25ulnHjxtkuA/C9rMImEomIiMiRI0dk5MiRrhak4dSpU1JbW0u9SvKtXpFUzYnPMgBdWYVNotth5MiRefOfiwj1asu3ekWELjTAI0wQAACoI2wAAOqyCpvi4mJZt26dFBcXu12PCurVlW/1iuRnzUA+YyNOAIA6utEAAOoIGwCAOsIGAKCOsAEAqMsqbDZu3CgXXXSRlJSUyJw5c6S+vt7tulyt4f7775ePf/zjUllZKZWVlVJXV9fn+V/+8pclFAo5vpYsWZIT9W/durVPbSUlJWq1DbW+hQsX9qkvFArJ0qVLk8/x+v0dyF//+lf57Gc/K+PHj5dQKCR/+MMfPK8BCKIhh82OHTtkzZo1sm7dOtm/f79MmzZNrrnmGmlubtaoz5Uadu/eLV/84hdl165dsnfvXqmtrZXFixdLY2Oj43lLliyRDz74IPn129/+NifqF+ldnZ9e2+HDh1Vqy6a+3//+947aDh06JOFwWG644QbH87x6fwfT0dEh06ZNk40bN3r+vYFAM0M0e/Zss2rVquT9WCxmxo8fb9avXz/Ul8racGs4c+aMqaioMNu2bUs+tmLFCnPddde5XWq/hlr/Qw89ZEaNGuVJbcYM//39+c9/bioqKkx7e3vyMS/f33MlIubxxx+3XQYQCENq2fT09EhDQ4PU1dUlHysoKJC6ujrZu3ev2zmoVkNnZ6dEo1EZM2aM4/Hdu3dLdXW1XHbZZbJy5Uo5duyYq7WLZF9/e3u7TJw4UWpra+W6666T1157zfXahlNfugceeECWLVsm5eXljse9eH8B5KYhhU1LS4vEYjGpqalxPF5TUyNHjx51tTDNGr73ve/J+PHjHf+hLlmyRH7961/Lzp075Sc/+Yns2bNHPvOZz0gsFrNe/2WXXSYPPvigPPHEE/LII49IPB6XefPmyfvvv+9qbdnWl66+vl4OHTokX/va1xyPe/X+AshNWe36nM82bNgg27dvl927dzsG2ZctW5a8PWXKFJk6dap85CMfkd27d8uiRYtslJo0d+5cmTt3bvL+vHnz5PLLL5f77rtPbr/9douV9fXAAw/IlClTZPbs2Y7Hc/n9BaBvSC2bqqoqCYfD0tTU5Hi8qalJzjvvPFcL06jhzjvvlA0bNsizzz4rU6dOHfS5l1xyiVRVVcnbb7897JrTufEeFhUVyfTp012vbbj1dXR0yPbt2+WrX/3qWb+P1vsLIDcNKWwikYjMnDlTdu7cmXwsHo/Lzp07HX95a8q2hp/+9Kdy++23y9NPPy2zZs066/d5//335dixY3L++ee7UneCG+9hLBaTV1991fXahlvf7373Ozl9+rTcdNNNZ/0+Wu8vgBw11BkF27dvN8XFxWbr1q3m9ddfN9/4xjfM6NGjzdGjRzUmMGRVw/Lly83atWuTz9+wYYOJRCLmscceMx988EHyq62tzRhjTFtbm/nOd75j9u7da959913z/PPPmxkzZphJkyaZ7u5u6/X/4Ac/MM8884z55z//aRoaGsyyZctMSUmJee2111yvLZv6Ej72sY+ZG2+8sc/jXr+/g2lrazMHDhwwBw4cMCJi7rrrLnPgwAFz+PBhT+sAgmbIYWOMMffee6+58MILTSQSMbNnzzb79u1zu65h1bBgwQKzYsWK5P2JEycaEenztW7dOmOMMZ2dnWbx4sVm3LhxpqioyEycONF8/etfVw3QodS/evXq5HNramrMtddea/bv369W21DrM8aYN954w4iIefbZZ/u8lo33dyC7du3q97OQ+fMAcBdHDAAA1LE3GgBAHWEDAFBH2AAA1BE2AAB1hA0AQB1hAwBQR9gAANQRNgAAdYQNAEAdYQMAUEfY5IGenh7bJQDAsATu8LR8sHDhQpk8ebIUFhbKI488IlOmTJFdu3bZLgsAskbY5Kht27bJypUr5aWXXrJdCgAMG7s+56CFCxfKqVOnZP/+/bZLAQBX0LLJUTNnzrRdAvKZMSKdnb23y8pEQiG79SDwmCCQo8rLy22XgHzW2SkyYkTvVyJ0AIsIGwCAOsIGAKCOsAEAqGM2GuBHHR294zUiIu3tIowBwjJaNgAAdYQNAEAdYQMAUEfYAADUETaAz13+P0/LocaTtstAwBE2QAAQNrCNsAEC4AdPvS6NJ7psl4EAI2wAn1tdN0m6ojFp7eAQPthD2AA+N6Y8YrsEgLABAOgjbAAA6ggbAIA6wgYAoI6wAQCoI2wAAOoIGwCAOsIGAKCOsAEAqCNsAADqCBsAgDrCBgCgjrABAKgjbAAA6ggbAIA6wgbwoX+lncpZWcZ5NrCPsAF8qLUzdSrn+aNLLFYC9CJsAADqCBsAgDrCBgCgjrABAKgjbAAA6ggbAIA6wgYAoI6wAQCoI2wAAOoIGwCAOsIGAKCOsAEAqCNsAADqCBsAgDrCBgCgjrABAKgjbAAA6ggbAIA6wgYAoI6wAQCoI2wAAOoIGwCAOsIGAKCOsAEAqCNsAADqCBsAgDrCBgCgjrABAKgjbAAA6ggbAIA6wgYAoI6wAQCoI2wAAOoIGyAgjnX02C4BAUbYAD5XWRaR0qKw3PxwgzSe6LJdDgKKsAF8bvzoUtm8fKZ0RWPSSusGlhA2QACMLY/YLgEBR9gAANQRNgAAdYQNAEAdYQMAUEfYAADUETYAAHWEDQBAHWEDAFBH2AA+dJydApBjCBvAZxpPdMltvz1ouwzAgbABfKa1o0e6ojHbZQAOhA0AQB1hAwBQR9gAANQRNgAAdYQNAEAdYQMAUEfYAADUETYAAHWEDQBAHWEDAFBH2AAA1BE2AAB1hA0AQB1hAwBQR9gAANQRNgAAdYQNAEAdYQMAUEfYAADUETYAAHWEDQBAHWEDAFBH2AAA1BE2AAB1hA0AQB1hAwBQR9gAANQRNgAAdYQNAEAdYQMAUEfYAADUETYAAHWEDQBAHWEDAFBH2AABcqyjx3YJCCjCBgiAyvKIlBaF5eaHG6TxRJftchBAhA0QABNGl8rm5TOlKxqTVlo3sICwAQJibHnEdgkIMMIGAKCOsAF8hkkAyEWEDeAjjSe65OaHG6S0KGy7FMCBsAF8pLWjR7qiMfnFF6+yXQrgQNgAPjSGyQDIMYQNAEAdYQMAUEfYAADUETYAAHWEDQBAHWEDAFBH2AAA1BE2AAB1hA0AQB1hAwBQR9gAANQRNgAAdYQNAEAdYQMAUEfYAADUETYAAHWEDQBAHWEDAFBH2AAA1BE2AAB1hA0AQB1hAwBQR9gAANQRNgAAdYQNAEAdYQMAUEfYAD5yrKPHdglAvwgbwCcaT3TJzQ83SGlRWCrLIrbLARwKbRcAwB2tHT3SFY3Jtv+cLeNHlw74PFo/sIGWDeAzY8v7b9VUlkektCgsNz/cII0nujyuCkFH2AABMWF0qWxePlO6ojFppXUDjxE2QIAM1OoBtBE2AAB1hA0AQB1hAwBQR9gAANQRNgAAdYQN4BMs1kQuI2wAH3BsVcP0ZuQgwgbwgcRWNZuXz5QJg2xVA9hC2AA+wqJN5CrCBgCgjrABAKgjbAAA6ggbIICYJg2vETaAD5xreHCmDWwhbIA8N5Q1NpxpA1s4FhrIc+nHQZ/LGpvE9Gi60uAlWjZAnkuExrmusaErDTYQNkAeaj7VLYcaT8qeNz8c8jY16V1ph1s6lCsFeoWMMcZ2EQAAf6NlAwBQR9gAANQRNgAAdYQNAEAdYQMAUMeiTsAyY4y0tbXZLgMYloqKCgmFQgNeJ2wAy1paWqS6utp2GcCwnDx5UkaOHDngdcIGsCwS6V2MeeTIkUF/WfPVqVOnpLa2lp8vT53rz1dRUTHo6xA2gGWJroeRI0f68j+rBH6+/Dbcn48JAgAAdYQNAEAdYQNYVlxcLOvWrZPi4mLbpajg58tvbv18bMQJAFBHywYAoI6wAQCoI2wAAOoIGwCAOsIGsGjjxo1y0UUXSUlJicyZM0fq6+ttl+SK9evXy9VXXy0VFRVSXV0t119/vfzjH/+wXZaaDRs2SCgUktWrV9suxTWNjY1y0003ydixY6W0tFSmTJkir7zyStavR9gAluzYsUPWrFkj69atk/3798u0adPkmmuukebmZtulDduePXtk1apVsm/fPnnuueckGo3K4sWLpaOjw3Zprnv55Zflvvvuk6lTp9ouxTWtra0yf/58KSoqkj//+c/y+uuvy89+9jOprKzM+jWZ+gxYMmfOHLn66qvll7/8pYiIxONxqa2tlW9+85uydu1ay9W568MPP5Tq6mrZs2ePfOITn7Bdjmva29tlxowZ8qtf/Up+9KMfyVVXXSV333237bKGbe3atfLSSy/JCy+84Npr0rIBLOjp6ZGGhgapq6tLPlZQUCB1dXWyd+9ei5XpOHnypIiIjBkzxnIl7lq1apUsXbrU8e/oB08++aTMmjVLbrjhBqmurpbp06fL/fffP6zXJGwAC1paWiQWi0lNTY3j8ZqaGjl69KilqnTE43FZvXq1zJ8/XyZPnmy7HNds375d9u/fL+vXr7ddiuveeecd2bRpk0yaNEmeeeYZWblypdx6662ybdu2rF+TXZ8BqFq1apUcOnRIXnzxRduluObIkSNy2223yXPPPSclJSW2y3FdPB6XWbNmyR133CEiItOnT5dDhw7J5s2bZcWKFVm9Ji0bwIKqqioJh8PS1NTkeLypqUnOO+88S1W575ZbbpE//vGPsmvXLrngggtsl+OahoYGaW5ulhkzZkhhYaEUFhbKnj175J577pHCwkKJxWK2SxyW888/X6644grHY5dffrm89957Wb8mYQNYEIlEZObMmbJz587kY/F4XHbu3Clz5861WJk7jDFyyy23yOOPPy5/+ctf5OKLL7ZdkqsWLVokr776qhw8eDD5NWvWLPnSl74kBw8elHA4bLvEYZk/f36fqepvvvmmTJw4MevXpBsNsGTNmjWyYsUKmTVrlsyePVvuvvtu6ejokK985Su2Sxu2VatWyW9+8xt54oknpKKiIjkONWrUKCktLbVc3fBVVFT0GX8qLy+XsWPH+mJc6lvf+pbMmzdP7rjjDvnCF74g9fX1smXLFtmyZUv2L2oAWHPvvfeaCy+80EQiETN79myzb98+2yW5QkT6/XrooYdsl6ZmwYIF5rbbbrNdhmueeuopM3nyZFNcXGw++tGPmi1btgzr9VhnAwBQx5gNAEAdYQMAUEfYAADUETYAAHWEDQBAHWEDAFBH2AAA1BE2AAB1hA0A3zLGyF133SUXX3yxlJWVyfXXX588WwfeImwA+NZ3v/td2bRpk2zbtk1eeOEFaWhokO9///u2ywoktqsB4Et/+9vfZO7cufLKK6/IjBkzRETkhz/8oTz66KN9djSGPlo2AHzpzjvvlEWLFiWDRqT3JNSWlhaLVQUXYQPAd06fPi1/+tOf5HOf+5zj8e7ubhk1apSlqoKNbjQAvrN3716ZN2+elJSUOA4yi0aj8slPflKefvppi9UFE4enAfCdN998U8rLy+XgwYOOx5cuXSrz58+3U1TAETYAfOfUqVNSVVUll156afKxw4cPy1tvvSWf//znLVYWXIzZAPCdqqoqOXnypKSPEvz4xz+Wa6+9Vq644gqLlQUXLRsAvvOpT31Kuru7ZcOGDbJs2TJ59NFH5amnnpL6+nrbpQUWLRsAvlNTUyNbt26VTZs2yZVXXin79u2TF198UWpra22XFljMRgMAqKNlAwBQR9gAANQRNgAAdYQNAEAdYQMAUEfYAADUETYAAHWEDQBAHWEDAFBH2AAA1BE2AAB1hA0AQN3/A9bV9uZn6wuEAAAAAElFTkSuQmCC", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZsAAAHVCAYAAAAnylbkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAY30lEQVR4nO3de5DVdf348deyF1hxkQVcFEPQcswGBAVxAEsm+allZdOMpZMMXazBwbxNJX80P6ZslPp20dBCzQvpJP7sl1l9J28IeBkYbIHfF/Sbt8zLxkVoue2u7rr7+f3Bl9WNUtk97/3sOefxmDnj7jnL2dcegSfv87lVZFmWBQAkNCjvAQAofWIDQHJiA0ByYgNAcmIDQHJiA0ByYgNAcmIDQHJiA0ByVXkPAET8r0Hn5T0C9MnDXfe+6+NWNgAkJzYAJCc2ACQnNgAkJzYAJGdvtIEmyyJaW/d9fMghERUV+c4DUABWNgNNa2vEoYfuu+2PDkCRExsAkhMbAJITGwCSExsAkhMbAJITGwCSExsAkhMbAJITmwFgU9OuGL/gP2NT0668RwFIQmwGgFXPvd7jvwClRmxy1rSzLf7jwWcjIuI/Hnw2/r6zLeeJAApPbHLW3NIeEREXnXbMvs9b2/McByAJsRkgPtRwaN4jACQjNgAkJzYAJCc2OdvRYhsNUPrEJkdNO9ti3p2NUVtdGfVDa/IeByAZl4XOUXNLe7R1dMbSr0yLkWIDlDArmwFAaIBSJzYAJCc2ACQnNgAkJzYAJCc2A8w/HHcDlCCxGSDqh9ZEbXVlXHb3hrxHASg4sRkgjhpeG0vmTIm2js68RwEoOLHJ0T+fqsbxNkCpEpucOFUNUE6criYn7zxVzVHDa/MeByApK5uceesMKAdiA0ByYgNAcmIzgOw/1gag1IjNAHLU8Nq4/oLJeY8BUHBiM8CMsMMAUILEBoDkxAaA5MQmJ/98qhqAUiY2OXCqGqDcOF1NDpyqBig3VjY5cqoaoFyIDQDJiQ0AyYkNAMmJDQDJiQ0AyYkNAMmJDQDJiQ0AyYkNAMmJDQDJiQ0AyYkNAMmJDQDJiQ0AyYkNAMmJDQDJiQ0AyYkNAMmJzQBTf8jbl4r++862HCcBKByxGWDGDK/t/ri5tT3HSQAKR2wASE5sAEhObABITmwASE5sAEhObABITmwASE5scrCjxfEzQHkRm37WtLMt5t3ZGLXVlVE/tOa9fwFACajKe4By09zSHm0dnbH0K9PiqHecLQAKbdCQIT0+73rjjZwmASub3Iy0qgHKiNgAkJzYAJCcbTZQQiqq3/H27PHH9Hzwv/7y9sdZ1j8Dwf+wsgEgObEZwP7heBygRHgbbQC77O4N8Yfxo+0izftWOWpE98cvfaq+x2Pjnn/791FXa2u/zQQRVjYDWltHZzRb3QAlQGygRI3evTNO/dvzMXr3zrxHAW+jQSk6s+WZuHTxiqjMsuisqIj//cnz4s8x5L1/ISRiZQMlpKuhPkYMr4xLd+0LTUREZZbF1X/6P9FQVxmD6ofHoPrh+Q5JWRIbKDFHvfmPqIyex9EM6oo48q1dOU0EYtPvXF6A1JoGj4jOqOhxX9egiM1Vh+U0EYhNv3J5AfrD9pphcf3Yc6Lrf/50dw2KeOS7J8T2qrp8B6OsiU0/2n95gSVzpjh2hiSymqrIaqrigSNPiXhqfHT93zERT42P2Rd1RNRUv32DfmZvtBy4vAD9YkzVvhsMAFY2ACTnnz1QQipff3uPs88+f1bPB9tcqZP8WNkAkJzYAJCc2ACQnG02A5yDQDkYXTuauz/e/MsJPR4bsfv/9fc40M3KZgCrra6MeXc2RtPOtrxHAegTsRnArr9gsmvaACXB22gD2AgHf3KQuvbu7f541CMv9XjsrTfe7O9xoJuVDQDJiQ0AyYkNAMnZZtOP7MZMctnbF017a+vrPR/r6uznYeBtVjb9xLVsgHJmZdNP9l/LZulXprmWDVB2rGz6mWvZAOXIygZKlW00DCBWNgAkJzYAJCc2RcAu00CxE5sBrP6QGmd+BkqC2AxgY4bXxpI5U5z5GSh6YjPA2VUaKAViA0ByYgNAcmIDQHJiA0ByYgNAcmIDQHJiA0ByYtNPnHIGKGdi0w9cpRMod65n0w9cpRMod1Y2/cipZ4ByJTYAJCc2ACQnNgAkJzYAJCc2ACQnNgAkJzYAJCc2ACQnNgAkJzYAJCc2RcJZo4FiJjYDXP3Qmqitrox5dzZG0862vMcB6BWxGeCOGl4bS+ZMibaOzmi2ugGKlNgUAWeLBoqd2ACQnNgAkJzY9AN7kgHlTmwSa9rZFvPubIza6sqot+0FKFNVeQ9Q6ppb2qOtozOWfmVaHDW8Nu9xAHJhZdNPCrFHmbfjgGIlNkXAgZ1AsRObIuDATqDYiU2RcGAnUMzEBoDkxAaA5MQmMXuQAYhNUg7oBNjHQZ0JOaATYB8rm35QyD3JvC0HFCOxKRIO7ASKmdgUCQd2AsVMbIqIAzuBYiU2Cdm+ArCP2CRit2eAt9n1OZGUuz1bMQHFxsomsUJuZ7FHGlCsxKaI2CMNKFZiU2TskQYUI7FJxHYVgLeJTQL2RAPoyd5oCTgBJ0BPVjYJ2b4CsI/YFCnbhIBiIjZFxrE2QDESmwRSrjocawMUI7EpsP7YE23/tiBvpQHFQmwK7IVte6OtozOWzJmSbE80b6UBxUZsCmhT067uVc2HGg5N9n3e+VbaC9v2Jvs+AIUiNgWyqWlXnLdkdURE3DtvevLjaz7UcGjUVlfG3NvWxvgF/xmbmnYl/X4AfeGgzj7YtvuN2LbnzdjR0h7z7myMiH2hmXDUYcm/91HDa+PeedPjU4ufiIiIVc+93uPxhrrB0TBsSPI5AN6PiizLsryHAKC0eRsNgOTEBoDkxAaA5MQGgOTEBoDkerXrc5ZlsWfPnkLPAv2urq4uKioq8h4DSl6vYrN9+/ZoaGgo9CzQ77Zt2xaHH3543mNAyetVbGpq9p0I8tVXX41hw4YVdKAUdu/eHWPHjjVvIsU2b8TbM+//vQyk1avY7H/bYdiwYUXzl0uEeVMrtnkjwlto0E/sIABAcmIDQHK9is3gwYNj4cKFMXjw4ELPk4R50yq2eSOKc2YoZk7ECUBy3kYDIDmxASA5sQEgObEBILlexebGG2+M8ePHx5AhQ+LUU0+NtWvXFnqugs5wyy23xEc/+tGor6+P+vr6mD179gFf/6UvfSkqKip63M4+++wBMf8dd9xxwGxDhqS95PPBzDdr1qwD5quoqIhzzjmn+2v6+/X9dx577LH49Kc/HWPGjImKior43e9+1+8zQDk66Njcc889ceWVV8bChQtj3bp1MWnSpDjrrLNi27ZtKeYryAwrV66MCy64IFasWBGrV6+OsWPHxplnnhlNTU09vu7ss8+OzZs3d9/uvvvuATF/xL6j898528svv5xktt7M99vf/rbHbJs2bYrKyso477zzenxdf72+76alpSUmTZoUN954Y79/byhr2UGaNm1aNn/+/O7POzs7szFjxmTXXnvtwT5Vr/V1hrfeeiurq6vLli5d2n3f3Llzs3PPPbfQo/5LBzv/7bffnh122GH9MluW9f31/elPf5rV1dVle/fu7b6vP1/f9ysisvvuuy/vMaAsHNTKpr29PRobG2P27Nnd9w0aNChmz54dq1evLnQHk83Q2toaHR0dMWLEiB73r1y5MhoaGuL444+Piy++OHbs2FHQ2SN6P//evXtj3LhxMXbs2Dj33HPj6aefLvhsfZnvnW699dY4//zzY+jQoT3u74/XFxiYDio227dvj87Ozhg9enSP+0ePHh1btmwp6GApZ7jqqqtizJgxPf5CPfvss+NXv/pVLF++PH7wgx/EqlWr4hOf+ER0dnbmPv/xxx8ft912W9x///1x1113RVdXV8yYMSNee+21gs7W2/neae3atbFp06a46KKLetzfX68vMDD16qzPxWzRokWxbNmyWLlyZY+N7Oeff373xxMnTowTTzwxPvjBD8bKlSvjjDPOyGPUbtOnT4/p06d3fz5jxow44YQT4qabboqrr746x8kOdOutt8bEiRNj2rRpPe4fyK8vkN5BrWxGjRoVlZWVsXXr1h73b926NY444oiCDpZihh/96EexaNGieOihh+LEE09816899thjY9SoUfHCCy/0eeZ3KsRrWF1dHSeddFLBZ+vrfC0tLbFs2bL46le/+p7fJ9XrCwxMBxWbmpqamDJlSixfvrz7vq6urli+fHmPf3mn1NsZfvjDH8bVV18dDzzwQEydOvU9v89rr70WO3bsiCOPPLIgc+9XiNews7MzNm7cWPDZ+jrfvffeG2+++WZceOGF7/l9Ur2+wAB1sHsULFu2LBs8eHB2xx13ZM8880z29a9/PRs+fHi2ZcuWFDsw9GqGOXPmZAsWLOj++kWLFmU1NTXZb37zm2zz5s3dtz179mRZlmV79uzJvvnNb2arV6/OXnrppeyRRx7JTj755Oy4447L3njjjdzn/+53v5s9+OCD2Ysvvpg1NjZm559/fjZkyJDs6aefLvhsvZlvv9NOOy37whe+cMD9/f36vps9e/Zk69evz9avX59FRPaTn/wkW79+ffbyyy/36xxQbg46NlmWZYsXL86OPvrorKamJps2bVq2Zs2aQs/VpxlOP/30bO7cud2fjxs3LouIA24LFy7MsizLWltbszPPPDM7/PDDs+rq6mzcuHHZ1772taQBPZj5L7/88u6vHT16dPbJT34yW7duXbLZDna+LMuyv/zlL1lEZA89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9u3bo7OzM0aPHt3j/tGjR8eWLVtymiqNrq6uuPzyy2PmzJkxYcKEvMcpmGXLlsW6devi2muvzXuUgvvrX/8av/jFL+K4446LBx98MC6++OK49NJLY+nSpb1+Tmd9BpKaP39+bNq0KZ544om8RymYV199NS677LJ4+OGHY8iQIXmPU3BdXV0xderUuOaaayIi4qSTTopNmzbFkiVLYu7cub16TisbyMGoUaOisrIytm7d2uP+rVu3xhFHHJHTVIV3ySWXxB//+MdYsWJFfOADH8h7nIJpbGyMbdu2xcknnxxVVVVRVVUVq1atip/97GdRVVUVnZ2deY/YJ0ceeWR85CMf6XHfCSecEK+88kqvn1NsIAc1NTUxZcqUWL58efd9XV1dsXz58pg+fXqOkxVGlmVxySWXxH333RePPvpoHHPMMXmPVFBnnHFGbNy4MTZs2NB9mzp1anzxi1+MDRs2RGVlZd4j9snMmTMP2FX9ueeei3HjxvX6Ob2NBjm58sorY+7cuTF16tSYNm1aXHfdddHS0hJf/vKX8x6tz+bPnx+//vWv4/7774+6urru7VCHHXZY1NbW5jxd39XV1R2w/Wno0KExcuTIktgudcUVV8SMGTPimmuuic9//vOxdu3auPnmm+Pmm2/u/ZNmQG4WL16cHX300VlNTU02bdq0bM2aNXmPVBAR8S9vt99+e96jJXP66adnl112Wd5jFMwf/vCHbMKECdngwYOzD3/4w9nNN9/cp+dznA0AydlmA0ByYgNAcmIDQHJiA0ByYgNAcmIDQHJiA0ByYgNAcmIDQHJiA5S8E044IX75y1/mPUZZExugpLW1tcXzzz8fkyZNynuUsiY2QEnbtGlTZFlWEmdjLmZiA5SkDRs2xMc//vE47bTToqurK44++ui47rrr8h6rbLmeDVByXnzxxTj99NPjW9/6VowcOTK6urrilFNOiSuuuCJmzZoVkydPznvEsmNlA5ScefPmxec+97n4zne+E6+88krMnDkzvv3tb8ewYcPi8ccfz3u8siQ2QEnZsmVLPProozFv3rzo7OyMjRs3xuTJk2PQoEFRWVkZNTU1eY9YlsQGKClr1qyJrq6umDx5cjz77LPR1tYWkydPjr/97W/R3NwcM2bMyHvEsiQ2QElpb2+PiIg33ngj1q9fH+PGjYsRI0bEkiVLYsKECTFx4sScJyxPdhAASsr06dOjqqoqvve978XevXvj2GOPjRtuuCEWL14cjz32WN7jlS2xAUrK2LFj47bbbourrroqNm/eHFVVVdHa2hoPPPBATJkyJe/xylZFlmVZ3kMApDBixIi444474jOf+Uzeo5Q922yAkvTaa69Fc3OzMwcMEGIDlKSNGzfG0KFD45hjjsl7FMLbaAD0AysbAJITGwCSExsAkhMbAJITGwCSExsAkhMbAJITGwCSExsAkhMbAJITGwCS+/9Y26HPR4qLNAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] @@ -412,13 +419,50 @@ "fig, ax = analysis.pairplot(\n", " samples,\n", " points=true_parameter,\n", - " labels=[\"r\", r\"$\\theta$\"],\n", + " labels=[\"r\", r\"$\\phi$\"],\n", " limits=[[0, 1], [0, 2 * torch.pi]],\n", " points_colors=\"r\",\n", " points_offdiag={\"markersize\": 6},\n", " figsize=(5, 5),\n", ")" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Defining custom embedding networks\n", + "\n", + "It is also possible to define custom embedding networks and pass those to neural density estimator. For example, we could have defined our own architecture for the CNN as per" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "class SummaryNet(nn.Module):\n", + " def __init__(self):\n", + " super().__init__()\n", + " # 2D convolutional layer\n", + " self.conv1 = nn.Conv2d(in_channels=1, out_channels=6, kernel_size=5, padding=2)\n", + " # Maxpool layer that reduces 32x32 image to 4x4\n", + " self.pool = nn.MaxPool2d(kernel_size=8, stride=8)\n", + " # Fully connected layer taking as input the 6 flattened output arrays\n", + " # from the maxpooling layer\n", + " self.fc = nn.Linear(in_features=6 * 4 * 4, out_features=8)\n", + "\n", + " def forward(self, x):\n", + " x = x.view(-1, 1, 32, 32)\n", + " x = self.pool(F.relu(self.conv1(x)))\n", + " x = x.view(-1, 6 * 4 * 4)\n", + " x = F.relu(self.fc(x))\n", + " return x\n", + "\n", + "# instantiate the custom embedding_net\n", + "embedding_net_custom = SummaryNet()" + ] } ], "metadata": { @@ -437,7 +481,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.8" + "version": "3.10.13" } }, "nbformat": 4, From b074c6623cf9868c5d749b5e5fa40b030c3935a1 Mon Sep 17 00:00:00 2001 From: Peter Steinbach Date: Tue, 26 Mar 2024 17:13:40 +0100 Subject: [PATCH 15/53] updated wording in tutorial 12 (#1030) * Fix wording in first paragraph * ran jq on the stored ipython notebook to remove spurious metadata cli command executed: ``` jq --indent 1 \ ' (.cells[] | select(has("outputs")) | .outputs) = [] | (.cells[] | select(has("execution_count")) | .execution_count) = null | .metadata = {"language_info": {"name":"python", "pygments_lexer": "ipython3"}} | .cells[].metadata = {} ' 12_diagnostics_posterior_predictive_check.ipynb > test.ipynb ``` taken from 12_diagnostics_posterior_predictive_check.ipynb * updated wording in tutorial - tried to make structure more clear - added missing words - worked on postprocessing for notebook commits postprocessing could work like this: 1. install the `nbdev` package 2. make the notebook run (either in your jupyter session or locally) 3. execute `nbdev_clean --fname notebook.ipyng` 4. git-add and git-commit * added outputs of cells --- ...agnostics_posterior_predictive_check.ipynb | 95 +++++++++---------- 1 file changed, 43 insertions(+), 52 deletions(-) diff --git a/tutorials/12_diagnostics_posterior_predictive_check.ipynb b/tutorials/12_diagnostics_posterior_predictive_check.ipynb index 265073549..80352fc3e 100644 --- a/tutorials/12_diagnostics_posterior_predictive_check.ipynb +++ b/tutorials/12_diagnostics_posterior_predictive_check.ipynb @@ -6,16 +6,18 @@ "source": [ "# Posterior Predictive Checks (PPC) in SBI\n", "\n", - "A common **safety check** performed as part of inference are [Posterior Predictive Checks (PPC)](https://rss.onlinelibrary.wiley.com/doi/full/10.1111/rssa.12378). A PPC compares data $x_{\\text{pp}}$ generated using the parameters $\\theta_{\\text{posterior}}$ sampled from the posterior with the observed data $x_o$. The general concept is that -if the inference is correct- **the generated data $x_{\\text{pp}}$ should \"look similar\" the oberved data $x_0$**. Said differently, $x_o$ should be within the support of $x_{\\text{pp}}$.\n", + "A common **safety check** performed as part of inference are [Posterior Predictive Checks (PPC)](https://rss.onlinelibrary.wiley.com/doi/full/10.1111/rssa.12378). A PPC compares data $x_{\\text{pp}}$ generated using the parameters $\\theta_{\\text{posterior}}$ sampled from the posterior with the observed data $x_o$. The general concept is that -if the inference is correct- **the generated data $x_{\\text{pp}}$ should \"look similar\" to the oberved data $x_0$**. Said differently, $x_o$ should be within the support of $x_{\\text{pp}}$.\n", "\n", - "A PPC usually shouldn't be used as a [validation metric](http://proceedings.mlr.press/v130/lueckmann21a.html). Nonetheless a PPC is a good start for an inference diagnosis and can provide with an intuition about any bias introduced in inference: does $x_{\\text{pp}}$ systematically differ from $x_o$?" + "A PPC usually should not be used as a [validation metric](http://proceedings.mlr.press/v130/lueckmann21a.html). Nonetheless a PPC is a good start for an inference diagnosis and can provide an intuition about any bias introduced in inference: does $x_{\\text{pp}}$ systematically differ from $x_o$?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Main syntax" + "## Conceptual Code for PPC\n", + "\n", + "The following illustrates the main approach of PPCs. We have a trained neural posterior and want to check the correlation between the observation(s) $x_o$ and the posterior sample(s) $x_{\\text{pp}}$." ] }, { @@ -25,8 +27,8 @@ "```python\n", "from sbi.analysis import pairplot\n", "\n", - "# A PPC is performed after we trained or neural posterior\n", - "posterior.set_default_x(x_o)\n", + "# A PPC is performed after we trained a neural posterior `posterior`\n", + "posterior.set_default_x(x_o) # x_o loaded from disk for example\n", "\n", "# We draw theta samples from the posterior. This part is not in the scope of SBI\n", "posterior_samples = posterior.sample((5_000,))\n", @@ -46,19 +48,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Performing a PPC over a toy example" + "## Performing a PPC of a toy example" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Below we provide an example Posterior Predictive Check (PPC) over some toy example:" + "Below we provide an example Posterior Predictive Check (PPC) of some toy example:" ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -73,12 +75,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We work on an inference problem over three parameters using any of the techniques implemented in `sbi`. In this tutorial, we load the dummy posterior:" + "We work on an inference problem over three parameters using any of the techniques implemented in `sbi`. In this tutorial, we load the dummy posterior (from a python module `toy_posterior_for_07_cc` alongside this notebook):" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -96,7 +98,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -114,19 +116,17 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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+MMxHo9x5ZVX4qqrrtrrTbpPeP3rX49nPOMZOHz4MC644AJ81Vd9FT7xiU+c8DVvetObtvx24/F4l7Z4iSWWWMLwgMhrY2MDV199NX7oh34IV199NX7rt34Ln/jEJ/DSl770pK994hOfiM997nPl8u53v/uBbMqu49d+7dfwmte8Bj/8wz+Mq6++Gk95ylPwFV/xFbj11lv3etNOGe9617vwqle9Cu9973vxjne8A33f44UvfCHW19dP+LojR47M/HbXX3/9Lm3xEksssYThtPd5/fVf/zWe+cxn4vrrr8dll1228Dmve93r8Du/8zv44Ac/eDo/eldx5ZVX4hnPeAZ++qd/GgAgIrj00kvxT/7JP8G/+Bf/Yo+37v7htttuwwUXXIB3vetd+OIv/uKFz3nTm96E7/3e78Xdd9+9uxu3xBJLLFHhtNe87rnnHhARzjrrrBM+75prrsFDH/pQPPKRj8Q3fMM34IYbbjjdm7Jj6LoOH/jAB/CCF7yg3MfMeMELXoC/+qu/2sMte2C45557AADnnHPOCZ93/PhxPOxhD8Oll16Kf/AP/gE+9rGP7cbmLbHEEksUnFbymkwmeO1rX4tXvOIVJ3RZv/LKK/GmN70Jf/iHf4if/dmfxXXXXYfnPe95B2Z45e23344YIy688MKZ+y+88EJ8/vOf36OtemAQEXzv934vnvvc5+JJT3rSts977GMfize84Q1429vehl/+5V+GiOA5z3kObrrppl3c2iWWWOLBjvs0EuUtb3kLvvu7v7vc/oM/+AM873nPA2Dija//+q+HquJnf/ZnT/g+L37xi8vfT37yk3HllVfiYQ97GH79138d3/Ed33FfNmmJ04RXvepV+OhHP3rS2uOzn/1sPPvZzy63n/Oc5+Dxj388fv7nfx7/7t/9u53ezCUehPhy/rq93oTdx6IRRLQ11iA+tecBABY991Qg21SWVBbcpds+/o746/fv87fBfSKvl770pbjyyivL7YsvvhjAQFzXX3893vnOd97n2VZnnXUWLr/8cnzqU5+6T6/bK5x33nlwzuGWW26Zuf+WW27BQx7ykD3aqvuPV7/61Xj729+OP//zP8cll1xyn17bNA2+4Au+4MD8dksssS8xT1YVARWCqkkp3bdlzh5XzznRY4teC2CLBEKkfnDufq4e0vSe6TkqUOHy907gPqUNDx8+jEc/+tHlsrKyUojrmmuuwR//8R/j3HPPvc8bcfz4cVx77bW46KKL7vNr9wJt2+JpT3sa/uRP/qTcJyL4kz/5k5moZL9DVfHqV78av/3bv413vvOdeMQjHnGf3yPGiI985CMH5rdbYol9BaJZkiEuJEVMRlz5PiaQ43RxIOeA+tI0gHMg7+3iHKjxw8VXl7YBGr/lMvMcx/a69Fnk/ZbPgnMAp+0hMlJN27wwKjyNeECTlPu+x9d+7dfi6quvxtvf/nbEGEvN55xzzimj45///OfjZS97GV796lcDAH7gB34Af//v/3087GEPw2c/+1n88A//MJxzeMUrXvEA/zm7h9e85jX4lm/5Fjz96U/HM5/5TPyX//JfsL6+jm/7tm/b6007ZbzqVa/CW9/6VrztbW/D4cOHy2939OhRrKysAAC++Zu/GRdffDFe//rXAwB+5Ed+BM961rPw6Ec/GnfffTf+43/8j7j++uvxnd/5nXv271hiiQOFk0VZ+TZTIgQeXsc8RExzz51577n7y2vqz64jsQURlqoOKUMVQBUEzN6XbqsqQARSBUSgDEAYxFUEdprxgMjr5ptvxu/+7u8CAJ761KfOPPanf/qn+JIv+RIAwLXXXovbb7+9PHbTTTfhFa94Be644w6cf/75+KIv+iK8973vxfnnn/9ANmdX8fKXvxy33XYb/s2/+Tf4/Oc/j6c+9an4wz/8wy0ijv2MXJvMv1PGG9/4Rnzrt34rAOCGG24AVzv5XXfdhVe+8pX4/Oc/j7PPPhtPe9rT8J73vAdPeMITdmuz9xTTEPGGd38Gb/zL68BEuPDICF9w2dn4R1/yKFx4ZNmsvcQ22IawtqQEa8LKZOXSY86lSI2H5xUi49kojqu/0/06T3DzUAUVYlIjohkCy7eNyAq5qSTSUiBGaIwgVSgiIAwg3v/v7QRYzvNaYolTxPs/cye+/zc+hOvv2Njy2LhhfNtzH4FXfemjcWj0gNaES8zhwAs25tOC5c9toqyatIiBirwKYeXn5ceq6EwzcdXkNU9m89CKoEQHosqEVt2eeTwTWQh2O0ZolEJimdxUFO8Iv3qavlDD8ihbYolTwE13beA73vx+3LPZ44LDI/zgix6Hyy88hBvv3MQb/vI6fOD6u/Czf3Ytfuvqm/CvX/IE/P0nX7SwIL7EgwQLCGsmysrpPOfsvkxMzhkhOQdiNlLyFnGpd9BMXJyjKTblAnN6DEOk5cjuI7tP0/WM0iFl/krEJRZxUazIK/8dtaQFIXZNUew6eCOsvgeRQGEfCxJokB2pfy0jryWWOAmmIeLrfu6v8OGb7sFTLjmKt7zyWTPRlarijz9+K/797/1ticoef9ERfNOzHoaXPvWhy0jsAeJARl7bkVdNXJms5qOsTFzeA0zQxtv7ZRJjBtxAUCXa4iHqUgKQyCunCzWT1jyRiIISiXEUQBKZzRPZDHkBFCOQyasPQBTotAMkAn2waEzErgH8Ufcrp/crXpLXEkucGD/0Ox/F/3zv9ThrtcHb/8kX4ZKzVxc+b9JH/MKffxr/7c8+hUlvZwMi4OHnruFR56/h0MhjpXXwzHBMWGkdjq40OHu1wUPPWsHFZ63gsnNW4R0vfP8HKw4Uec0JJurU4EztKhNWqmMVJZ83BZ96+1uZoY0zIvIMZYI6tqiKCeqNqIy0kB5P14zhPqrIC3Y/FCC1a446ex3UCEoBCmLXibyoF5Co3d9HUBBg2lkUNplCRYCuh3adpRT7RF7Tt5zWr3q5JFxiiRPgA9ffhf/53utBBPzky5+6LXEBwLhx+KfPfwy++dkPw2+8/ya89aobcN3t6+VyKhg3jCdcdARf8tgL8C3PeTiOrjSn65+yxE5jO+LK9ayUIhwk7mykRQS0jaX+2gZwRljaOKhniLdIS7yRlriUEnRIqcH6GsNtRrlgnryAWfIKVMiLBKBYExml++wx9gKKCu4FTARlAYtAKZrEPoQUCTIQd0asASwjryWW2Baqiq/52ffg6hvuxtc//RL8h699yn1+j9uPT/Hxz92L6+/YwKSP2OgigiiiCDa6iHs2e9xxvMPn7tnEjXduYrMfDvbDY4/vet4j8Y++5FEP6mjsQEReFXFtIa0kriDnLGWXoixi3kJaMmoAz5CGIa2DMiGOrK4lzUBc4hIxJZISB4AA8Xadn4OK0JAv6YxPYhcjKJSIK5NXJjCK9rz8mOvEHusEbhpBfQRv9KAYQRsTIETodGrRV4zQrgewjLyWWGLX8Acf/TyuvuFurDQO3//Cx96v9zjv0AjPe8z5eN5jTv5cEcWnb1/H1dffhV9896fxyVuO4z+/45O46a5N/PjXXLEUgOxHbBNtkeOBtBpvj6caFjWNpQS9A9rGUoMrDcQzZOQgniAtI44Y6oAwshShNEZE4gdy0kxiHkPkxYB6raKwvK12m4pIwwgKCnBPiaBSlBUyeREokRb3BI6A6wjcK5y3VCUzgXoBOEWVojOqSjBtbzH1ALAkryWWWIAuCP7fP/w7AMB3ffEjd6WHi5nw6AsO4dEXHMLXPu0S/MYHbsS//K2P4NfefyPOPdTiB1908Aa2PpgwI8hgnlUQEg01Lu9MhOGr1GDroN6irHwdWyOoOLLoKrYpVegxEFcmKF+RFufH8t851EobqgCUUnRlZAW2GpdyIi9n0ZjGRE5iL1TO0RqBo1rk58kEJGIkS8DgtLFzWcMleS2xxCL8ylU34Po7NnD+4RG+64sfueufz0x4+TNsHt5r/9dH8N/+7FpccvYq/uGVi2fkLbHL2C5NWIjKmeUSO7NiSnUtdQwdtUZaI4c49lBHCKsWcYUxQRpCbI20xANxbMRUIq+mIqhMVo1FPvACOAU5BXsxFb2b9RaUyFAlSCRIYJPL9wwSAvWJ1AKBc/SV7uPO7lMPcJf+7dHIkxsHVrVUqDMXEAWG/rMdkMovyWuJJeaw2UX89J+a0fA/ff5jsLaHUveXP+My3HrvFP/5HZ/Ej/3+x/H8x1+wdPLYa8wTFzDjeFEEGeyG9KHjQUGYiEsaB2kZ4smIytl1bAFpCXFkKcI4SqTVaomuxANwCvVqUVMjIFZwI2AWOKfwPoJI4UhBpFC1bQ3CECGE4BA9Q4UgnBygmC0aS4pFIycFRxN0gAHpCSSa0peD0nGLywcxSiPZDmBJXvcBqoqf/MmfxE/91E/hlltuwQtf+EK8+c1vxtGjR/d605Y4jXjzX30Gtx2b4pKzV/Dyp1+615uDV33po/Enf3crPnjj3fh3b/9b/PQ//MK93qQHL04WcbXtoCL0KTXYWo1LVizykhWPOHKQhtCvGnn1qwT1QFghSAuLvMZWt4qjVL8aJe16oyAvYKdwPoJZ0TYBjgWjJqBhQeMiRs4k6p6NQIIwRAm9OPTRoRfGtPeIwuh6b4TWO2gkSM9AMCKTqZGYZ0ACGR+R3RebRHCObRzKnLtHicB2AEvyug/45//8n+Ntb3sb3vzmN2NtbQ1f9VVfhde97nX4yZ/8yb3etCVOE45Nevzcu64FAHzvCy5H6/de5cdM+Pdf9SS89Kffjbd/+HP4uqffhv/r8oPjA3rGYAFxDZFVirJq4mobc8UYN1DnIOMG0jDi2CGOCbFl9KuWGuzXMnlZhBVbQMYWWenIUoHcGlH5JsL7aATVBDhSrDUdGhex6ju0HDHiAM8Rjgbq6MVBlLAeWwRhTGKDzaZBFMZG3yAKYdo3iJEReocYGBoY6hgUCFEY5BXcEyRWwpF0rXFomKbsArKsee093ve+9+EnfuIn8P73vx9f+IW28n3lK1+Jt7zlLUvyOoPwS+++Dndv9Hjk+Wv4qqc+dK83p+BJFx/Ftz7nEXjDX16Hf/O2j+L/fO8XY9y4k79widODbSKuoiislYQuqQhHRlo6MiVhHDtIwwirjDAixJaMrDwhrFoKLqwqpAFkJEZaXuHGEcyCpg1wTjDyEa0PaF3Eiu/RcsShZoqGI9ZcB88RDRmBAYCkdOFUPCIYniM68fAs8CToxIFIEYWNb4TQOY++d4jOIcJSg9ITuDeSzSlDcamsla2nFihiiWjrnLDTgCV5nSL+03/6T3j+859fiAsALrzwwhm3/CUONm49NsEv/PmnAQCv+fLL911v1WteeDne/uHP4vo7NvBL774Or/rSR+/1Jj04cIKIqzhjtI1FG6O2SOBlpYE2DnHFQxpGv5ZShSuEODZBRr+WSOuQmrJwLVpacBTRjoysVkYdGidYaYyoVnyPVd9h5AIO+wlGHHDITdFQxGq6bijCQRBhqcIIxlQa9OqwIS0m0mAqHpuxQRBXorGN0KIXh82+wTR4TIPDxDWIwUHElIXcMyAEbi3qEg+Is9ljSnNu9zuI/XV07lNMp1P83u/9Hl72spfN3D+ZTJb1rjMIP/mOa7DRRTz10rPwkiv233DNQyOPf/WVjwcA/PQ7P4XP3r25x1v0IMCJIq4izEhpsmzr5JIow1nKLSZRhjSE2CDVtJIwo7E0oTQKaRXwCmoEzguaxtKC4yZg7ANWfI8V3+NQM8Wa73DYT3DET3DITXHYTezCExzmTYypw5j76rpP0ViPEQWMuceIg11cwIrrMXYBY9dj5AJGPl8ivBc4Z6nLLL9HvuTGZ9T37U4/4jLyOgVcffXV2NzcxPd///fjB3/wB8v9fd/jS7/0SwEAb3/72/H93//9EBG89rWvXQ5nPGD4xOeP4df++gYAwL9+yeP3bUPwP3jqQ/GW912Pv/7MXfix3//4UryxU1ikKKz6toqiMEdc45HVt0atKQlHHnHFI7aMsGbk1R2yRuOwSghjQEZa0oS6GkGNoBn3aNuIUdPj8MjqWIebCVoXcbTZxIgDjvgJVrnDqpviME/QUMAad3AkaCjAJYlEBCEqo1ePCEJDAb16NBTRq8NUGky4gYCwEVuIEjYbi7zWQ4uN0GIzNCBSTL1HDAxhU0jGADifIi8H810MupW4dnCa8pK8TgGf/OQnsba2hg9+8IMz97/kJS/Bc5/7XIQQ8JrXvAZ/+qd/iqNHj+JpT3saXvayl+Hcc8/dmw1e4j7j9X/wcYgCL3riQ/CMh5+z15uzLYgIr3vpE/H3f8rEG1/9hbfgyx53cAagHijULhHEg9VTFiM4no24komuOoY2ZvGknhCb3Ltl5GVS+HQZmSiDRhHspRDXShMw9hYNHWqmaEhwyE0x4oDDboJDboIx9TjsNtFSxCpN4UjgoGASiDIiCH06xTswJP17Yk64McpzGYo+WXG0zKVOJiC0LkKVwHORV238a99R/q5o2/rX6cSSvE4B9957L8477zw8+tFDjeH666/HNddcg6/5mq/BVVddhSc+8Ym4+OKLAQAvfvGL8Ud/9Ed4xStesVebvMR9wDv/7hb82Sdug2fCa1+8/10snvjQo/i25z4Cv/Tu6/D9v/4h/P4/ex4uOrqy15t1ZuAkEReYremYHcg7i7hS4zE8Q1YbSMsIY4ewai4Z/VqKuNaQrhVxbGnCHHGNVzt4H7E26jD2AWtNhyPNBCMXSsR1jl/HiHuc5TawylOMqccaT+GgJeKKGIgkqgNDABgpMQlaAECHlhhRudTEVtmis6mzutiIA9bDCCMXrBbGLdbbFgpAGp88FisCI6TZYbuXsViS1yngvPPOwz333ANVLemkH/3RH8VXfuVX4glPeAJ+8zd/sxAXAFx88cW4+eab92pzl7gPmIaIH/nffwsA+PYvegQecd7aHm/RqeEHX/RYvO+6O/DRm+/FP/uVD+Ktr7xy3wlMDhwW1beAEnHNNB+n3q1i8zT2UM+II2fWTiuMMM6KwkReWQY/VsRVARqBXwlwPmJt3MG7iCPttNS1jjQTtBxwtt/AmHuc7dcxpg5nuQ2ssQkz1qgDgJIq7MAp6hrgSAC16AskGKdoCzREYTFFWhO29GEWfTAJ1hujvMZHxMiI2TdxzrUeu5xpX+7tp4Av+7Ivw2QywY//+I/juuv+//bePU6uqsz3/q219t5VXX1JQtK5kZBAQgjhFogQA3JnYNQjwigiihydo2fGAWc4jAqeMwofR4+eeR1f5xydjC9nJMyA1xFFEfECDsJAuCRE7iGE3Enn3teq2pe11vvHWmvXrk4n5NLdu6r7+frZn+ququ5ancb69bPW7/k9G/ClL30JP//5z7F8+fK8l0YcJf/8+AZstDFQn7qkedx7BU/gm9edhbaCh6c37sUXH3h5ROzI44YDNh9njBm+Z/u4MvmEvgftC6jAJGbIAoeyNnhZMCkZ7lIFnW4VwlfgBQk/SBAExhzhTBlFL0aLiNHCo/Rsq8QjtPIQrTxKzRcBJAR0WnFJsHS7UGlTWSmYWwDptqKp1CSKPLbfM0SHqKKVR+jglXRbsl1UrZHDXIJb4wazs1RctQWMunABJF6HxLRp07BixQosX74cp5xyClauXInHH38cs2eb9IWZM2fWVVrbtm3DzJmN0yNEDE1XTxXffMTEQH3unQvRXmyu2Vlzp7Tif73vdDAG/MuTm/A/H3yFBOxwSc9n+NCpGUKA+R5Y4IP5PlihYLYKCwFQCKBKAWQpgGzxkLR6SEoccYkjajXbhUkrQ9JqtgqTVo2kTUK3JvBbYxRLETpKVXQUQ0wsVjCpUMakQhkT/Ao6vAo6vComeBUcIwYwQQxgor06eBUdLESJx+BMg7OaQSOCQKw9RFoghkCkBRSMiAGAzxIUrRC28wom8jKOEf3oFL2Y7nWj0+tFp+hFp9eLSd4AjvEG0OGFKHkxCn4Cz5PWdVi/ZTgkI/zfIonXIXLttddi8+bNKJfLeOCBBzBv3rz0sXPOOQcvvvgitm3bhv7+fvzyl7/EFVdckeNqiUPhfz30KsqRxJI5k3D1mce+9Rc0IO8+fQb+59WnAQDufGwD/u5Xa0nAjpD95nBlcwozZ15acDvShNcGRPrWDm8v7VkbvG+CdJUHaN9Y4blnrPCeUPBslFPATdOxx1RqYXdbdz5LEDAJH7WtPJ5JzjB9XKbaUpqnguUqLwe3OYPujMxnEkUWI4BEMfN5kccImESRRenr+VyCM20KrOxsMODgVdcIjEJx0JnXMOB5Hv7+7/8eF198MZRS+OxnP0tOwwZn1aZ9+Mlz28AYcMd7TmlYa/yhcN05xyGRCp+//yUs//f1aA0EbrrkEAaIjWcGz+Fy/VpZY8ZQqRlZO3zgQZY8k01o7fBxq9kqTFqYNWiYikv7GrqUQAQKhWKEUiFGwUvQUajWEjKYQqtnHIUlEaFdVFHgMVp5ZCumON0qBGqiFWuBqvYhwcytFa1Ii/S5gikETIJDpedlARRKNoXDh4YCUNWibtuxarcOQ+XB5wqCq/pqK8f/25B4DRNXXnklrrzyyryXQRwCSml88ecvAQCuWTILp81q/kbzjyybizBR+NIvXsHXfv0aWgIP/+Udx+e9rMbkAKnw5tYmZwjXjCxqFZc964LnLPGuyrIVV1ppsVrFFZiKS3sm8V14EoGNdyp4pinY4wo+UyiIbLXlKq4krbwEFLidJJkVLnfeFWvP9HTZcy/AbCU6AeNQ6blXAIUCkyjaCs6HiyGUiDS3lVkCAWUum0zP3HkXDrJdCIz4liFA4kWMQ+57bhv+sLUHbQUPn77iyCYkNyIfP/8ElCOJr//mNfztAy9j7uQSLj2ZesDqOJQ5XEIYY4aruHyvzg4vW3wz8Tjgdg4XMo5CG/1kLxVo6KKxwxeKMXxPolSI0OZHVrxMgG6LiOHZQF2TfhHXYp6YSrf8lJ0G6YTLNSAPqEJabSnNU5FzW4SBNWgEkGjnEYpMosCAImMQdeWTeS2fSbNVyRJzrjZENjw7kD4NEq6R2samMy9iXFGJJL72q7UAgJsumY+p7WNrNtanLpmP/7xsDgDgs//2PHb1hTmvqIE4QEZhasxwjkLPM8KVHWkS+GarsOhBOTt8gVtHoUnMSIomaFcWzDgT2aKgigq8KOEVEhSDGKVChJJvYp6KwroKrXDVV10yU/1oY3e3GNEywlXVPqraT00aKu3dqjkMnQgVWYwiS1BkEiUrXCXmo8C89AoYg2BG9LituLKvvV9ghh58jd55K4kXMa6464kN6Oqt4tiJLfjouXPzXs6wwxjD5951MhZOb8eegQif/bc/kIEDeOtUeGeJ9zxrhfdSO7y2dnjtCyiPmwGSAbf5hDY5IzBzuJRv5m/JwJxzIVDwfAnfN9uFBSHhcwmPG3MGt8Mi66osVtuqc7iGYrNFyFOxchFQMlM9ue1Fd8ZVM2dIFGzF5TMGn3EIxtJrMMb0wVKrPWD9F5oduOoaRUi8iHHD3oEIy39nZnV9+ooFY3akSNEX+IcPnonA4/jd2l34/jNb8l5SvrjBiEIY4bKzt5hnLfBBAPgBWCEwFVchMONMioExZ7SYhHjZYgwazg5vLjOLK24FkpIZaSJLGqqkwFtj+C0xSsUIrcUI7YUQbUGINj9EyYvQIkw4buCchVym24WcaXvelJnHZY0ZVWWrLQhUVYBYe6nTkLOacLkEjlYW2StBK1doZRwl5qPIPBSYDw8CHPyAAqY0gwKD1uYaXG2x9FabystdI+g0BEi8iHHENx95HX1hgkUzOvDeM5rTGn+onDS9HZ+153lf/81rKEdJzivKiUGuwjSj0Jow6pqRmckrdKYNLaw5QzAzAdnZ4UVtFIi2tngt3OfGnAE76ZgLY4n3hamqstWW6dFStlKqnSuZRmJ1gB+oRrYi4mnFptNzLm7Fz1R1Kg1957bS4oPe/qWt0KVGagLJogY7NFLBOvAaR7LqJ/EixgVb95Vxz8pNAIDPvWsh+AimXTcKNyybi9nHtGBXX4i7/mNj3ssZXTLNx3UVl+8Bvl9rPC4EpvIqBGnzsS4G0C2m4pItPpKSX2tAbnWXaUCO24C4ZOZxJW0Ksk1BtybwSglaSiFaW0K0FUK0+RHa/DBNzwgyvVzGbbj/WRdnKj1vcn1baWoGWJoiXzvPitPm41YWoYObESkllqCVJSjacy7fVlo8I06xllBQiLRGnDGDRNozHyththCVmeXFFGqXBpjSYEoDCkOfe41AFUbiRYwLvvHbdYikwnnzJ+P8EzvzXs6oEHgct/zRAgDAtx9dj55ynPOKcsRVXCzbyyVq0U8uGd42H2vPpcJzY333slfGDu/ZdHjfzOSCp8B9e84l3DlXAl8YkQp4Ao8pW3mp2vYgU5lU+FoFdiCy/VvucmdcNVEzFVfAFPzMOVcWqRVUOkLF9HpJO7xSartlmLk0MIRJYwjnoXrryvFoIfEixjyv7+zDfau3AgA+c0Xjp8YPJ1eecSxOmtaO3mqCf/r9+ryXMzoMVXEJnlZccFFPzkVYNGdcCHyogg9VNJcsekhKwoTsljjiFm6aj0vGVZi02DOuFuMs1EUF0WImIBeDGK1BjJJfG/JozrZMWoU75yrwBD7fv7cryFjk3eVEanC1VWQxWlmEks0pNOdbMYrWpOEz80YvBm8DQkNBI9YSoU4QaoWqZgi1SM/VqtpHaKcuS8Uhpa28ZLb6sudbymwjshE+63KQeBFjnr//9WtQGrh80TQsnj0x7+WMKoKztJft7ic2orc6xquvrOnA5RU6K7xnbfCe2TqEdRLC96ADz9jgi54ZJFkQkEVux5twJAXTv5W0GFu8+dgmxBcVUFTgLQmCQoyWQmQt8VEatFsUCQrcVGGebTj2uBOjoWzytViobFXmHhtKuMzHMUo8tg3IEj40fAABY+asC25Ol/mf2y6MoRFpjaoWiMCt/d4MrIw1R6QEEunEq5bNC12/dVi3ZahHtvoi8SLGNM9v7cYvX+wCY8BfXz52GpIPh8tOnooTp7ahHEn86NmteS9n5HF2+EwqPLONx84Ob7YH7TahELUhkna70NjhbTK8n7HEuxSNQEP7Nj0j0OC+hPAUfJegIexltwl9btyE3ArQ/udc2b6uzBZinekiQQCTJl8TsSSNegrgtiGtIQSAyGi50tpuDSpIrSG1tgJmz7o0EGte6yFTRsAi5SFRHFJxKMXAFDMCNkjE6hiF9gwSL2LMorXGV3/5KgDg6sXH4qTp7TmvKB8YY/joeXMBmOpLjtK2zqiSNWhwtn/F5Xt2qzAwW4WBscSrFt8YM4oeZMlHUhL2ytjhW2G2Cp0dvlUjKWkkJWWGSbYkKLTEKLZEaCuGaC+EaPUjlLwIJS/TiMyMFd7jCkUep0ka7ipmLj8TC5UNzy2yBCUeG9s7S1CyV4FJlHhS2yqEhnDbhYMs8BIaMcxWYVVLVLVCWTOUtcCADtCnWjCgApRVAX2yiIr0UU4CJJJDSQGWMDAJI2ASQ9vkRwESL2LM8vt1u/HE+j0IBMd/s8aF8crVZx6LjqKHzXvL+Pe1O/NezohR14Bsh0jWZxQa2zuEscCD22T41BJvE+GdJV7AZhgCKrXDG2u89jSY0OCehnAJ8XYr0Ett8fay1ZMzaHAYa7xIL5VWWe7WmDdUnQ3eVVbp17PaBbhkjAOjtE4vCY1Ya8RwFZepuiJbecVaQGmGRHFozaAUN7qkMxUXDhITNcKQeBFjEqVqVddHls3B7GNKOa8oX0qBh+vOOQ4Axp5tPjOPK5tVyGzVlZozfC+NenLGDFn0oIoCSYu90orLNh63Ziou24CctGioFnPO5RVjc84VxCgFMUppxRWlFZdpRo7TUSclEaUVVomHdVVXOv7EVV4wW4IuHcNVVoF1EYqMAPoZ4cpuF7otwhhWsOxV1RplDQwojj4VoFcX0C1b0S1L6JEl9CQt6E2KKCcBKokPmXComNvKy1RfzFnjh9o6BIzrcIQqfRIvYkzysz+8iVe296K94OGmi5tnQvJIcv3b54Az4PHXd+P1nf15L2d4GCIVwlniYc+9BqfCa4+b5mN3viVsMrxvzrecHV57NTu89gDtA8ozM7ngKTBPwfMUPHvGldrhhYl/4sykxTtzBrcxUBw14wVnOk2OdxmG+1detXMsV1kNdR0Kxgqv0zOuSHPE4Igg0jMud94VKg+R8hArgVgZ23waDZVJ1WBu2xAwQkXbhgRxZFQiif/1kKm6/vyieZjUGuS8osZg9jElXHzSVADAT5/b9hbPbi4YZ+YSbqSJM2Z4doyJTYf3BXRg3IQqsAG7RWFCddMLkDZkNylmgnYDDVXQ0L4CL0jTy+VJFDyJgpekYbsBT+oqrhbhqixTcZVEWDvnsgMfnXAdrLfLMdjDp4a4pDaXAhDDjDuJtHMUAqEGylqgT/voUwH6VBF9qgW9qgV9qoh+WUC/LKAifYSJhygRUAkHnEVeok7EgIyAwSZrUDwUQRwe//ToemzvMeG7NNOqnqvsxOifrtkG1ezGjSGin8B5XeMx87y0AVnbOVzGTWiES9lU+NplhasIyMA0IJugXUAXTNguK1hnYZCg4Ju5XAXby1VMRStJryKPUWC1USfO4h5ktgizY09cOO/ByArVwR53IhZnrqrmqGqBAe0ZU4ZqQZ80otUjW9Avi6lwVRMfkRRIpICWDJCsZpXPug0ValUXVV4Ecfhs667gnx41zbj/490nj9nw3SPlspOnoa3gYeu+ClZt3pf3co6eOuHKJGhwBmYT47XgNUu84NA+t5mEboik3S6sGyRZ2yZ0eYVa2O1Cm1kobGahSc6Q6VBJP9O7VUhDd5O6rcK0AXkIkZI2ZNdlC7rBk9LdDnFFmiPSfL/7Y7BUyGIwVO02YdWF/NprQBXsVqGPsgyQWIt8pISxyGsGKFYXxJtuHVrRYtmRKO4PI/f5CPR80TBKYkzxlQdfQZgoLD3+GLzz1Ol5L6fhaAkE/vjU6fi3VVvxk+e24ey5x+S9pCMjc9aV9nQ5d+HgLUPfM1VXQUD5ArIgkLSYkN24hUML03ysPTtE0reRTwVtHIYFK1yBAvfNdmHBVl0lP4bPJUpehIJI0OqFdduEnCmUeARhBzy6pmQ3tmTwNqERLA4JZYJzNSCYhtQMYKZyAmrxUIPDcwc/DrhtQ5aKYNXOARuwVVdV+eiRJXObtKAiA/TGNaNGmAjEsTBbhom5uASY1PbWpWwoI1ZSAVrVQnlHqFmZKi9izPDc5n144PntYAz4wnsWmTczYj+utluHv3h+O8JE5ryaYYTzWtXlDBuMQacp8cYOrwSD5tYW7+zvwibDC/exhub2VmiAA0woMA4IoSC4vZgxY7j5XE6Yss3HLjXe5Q2KA1RcKvN2XKu+atVUNmNwqPuGetxMXDaVUwSejlUxVngvHWxZM2sIxJoj0TzTmGys8oMrr7TSclWYi4pKfyA1ohmHVHkRYwKtNb7yoDFpvP+sWThl5oScV9S4vP2EyZjaXsDOvhD/vnYXrjilSSvUwQ3J2cBdz0Y/CQFdMNuFxqTBIYsmo1D6xpShPAbZYoRLFk16hvIAVVCAABAoQGgIG7hb8BO0BDGKXoKSFyEQEm1ehIAnaPNClHiEgq28BExDcrbSyk4mdmNNauNNPEgo01is6/MIFTJ/aLzVsZJ93FVmErXkjAFVSOeC9cgSYi3QI1uQKI6+2DQl98cFlOMA1cRDknDIxDQn85iBxQB3VwLwRIMnCkxKI1ZS2upLp9WXplR5ghiah1/Ziac37kXB47jl8vHdkPxWCM5w5RkzAQC/erEr59UcAQeqqPmg2Vycp/O5TFJ8JhU+c6vtbC7l23lctgEZtgKD0HXnXJ4wzcg+r0VAuREnBVY723IWeFdxOXOGC9oFUCdkDleBuTEobtBkBIEI4sDnXvbx7BXbLUJXcUWDBlpWlZ/a4l0Ar6u6EsVtqgaHskaN/cahOJOGUrVxKFrXbRWOhHABVHkRY4BEqtQa/7HzjseMCS05r6jxuWThVPzfxzfg9+t2QyndvPPNnFFDCLtVaJ2GrqfLN5Z45XPIgBtHYWBdhb651Z6xw2thXYW+tpetuAIFzhWCwIw2afFN2G7Ji9AqzFlXmwhTG3yJRwhYghIP08GQWRt8ek6ljUAJpsysLjBgiApMaW7ETgsIphBjfxNSdjAlUBNAY/QwcllVPiQ4BlTBGDNUgLIKECoPFekjUh6q0kPVugyNRd6DTDh0zCFiZistgMfaVFyxuZirvKSClrYxeQQblM2/EEE0Ob96aQfW7ezHxJKPT140L+/lNAVL5k5CKRDY3R/ila7e5ttmzYbvZmZ0sbTSsmG7vtkqVH5WuGzIrrXCm5lcpuIygbsK8DRYoMCEgucnEEKh6CcIbD9Xmx+iaA0aBZ6gXVThM4kSj9DKw3RkiWAKPmRdhcWtmIApKF0TmbpbLSDATYguFAArXNoIl4CuM2s48UpFK/N9Y+1BaoaqDqA0Q9k6C8sqQL8sIFECA0kBieYoJwFiJVC1vV1JwqFiAcQcLGbgEattGcYAjxR4rMASBSQSSBJASejMliGAETFt0LYh0fR8/5nNAIDrl87BhBY/59U0BwVPYNkJkwEAj762K+fVHCVpfqE986rbKjQJGvsPk7Si5dW2CtP0DLdV6ClwYXILzXahNNuFQiLgsq6Xy7ehu6bp2PRvBUzCh7nNxjhlUzTc9qFDZbYJjQXebP1lJylLzRFpAal5xnjh2cnHNfOF2xaMM1mF2bT4WAskSqRbhZE0E5NjKRBLs2UoEwHYOCguUau8EoBLDS41mDTGDCZVrTnZGTW0GjG3IVVeRFOzdV8Zj7++GwDwgbfNznk1zcWFJ3Xi4Vd34vev7cJfXNQkEVqDk+NdFFRq1BDQdk6XCjzowCRopONNbBOyLBoBky3GVSiLypxz+RrMd9OQTcVVKsTwhERHEKLgGVPGxKCCFh5hgldBgcdoE1UUWYRWHqHIo1S0OFMIUO/ojCAgoBFppMYMQNTchdpUVCI9+zIV12CHons+gLQik/Y+pWtGDSeEofIhNUe/LKRnXAMyQCg99McFJIqjEpum5DD2EYU+ZCTAIg4WMYgqgwgBUdUQoYaoavBQgocJWBgDcWLNGtKeg41sszKJF9HU/HjVNmgNLDthMo6bPL7Ddw+XC07sBAA8u3Ef+sMEbYUmfDvgrkm5Zo03Rg3zuebWkCEylwdrg0dqh4eAnR+iwYQ54xpccQmuzFgTO1AyO5MrYIlNd685Cn2WmCUOEh1he7YEWCo6Q+FEDIxDwGwx8rqtxprQZUXLCZoTLXcb22rN2O9tirwSNVt8ao9nkNLY47V0IbwMLLE9XRJpnxdTGkzWj0PRzsCh1YiZNQASL6KJUUrjR6u2AACuPZuqrsNl7pRWzJlcwqY9ZTy5fg/+aNG0vJd0cAZPSXaJGpkoKFd11fILOZICN1WWzSyUBTMFWfsmsxCehi5IME+DBxKeJ+H7EkU/SSsuwZWptkSMdr+KNmvMaEvPukIETKLEwkwqvLSGjZp4KSdcWtf1dbkqygmMQzAjAhLCNivXBEuBI9IelLbnWhmhSr+n5lDWtBEqzxg2kkJq0ign1qiR+IgVRyXykUiOOPIgqwIIOUSFQUSAVwV4CHhVDa+i4FUleDUBixJTdSX2Vqn6864Rgs68iKblifV7sHVfBe1FD39MaRpHhKu+Hn2t+WZ8scy8rlqSvKm61FDWeJ/VEuJtNQYb+8Q8c8YlhEmK94VE4CUo2LT4oohRECbD0OUVFtOcwqg+o9BWXwHqR5Y4IXOuw8EJG1KzusrI3MczJgwTEWWDpRBlzrFqDcYCsfLMlb3PXqHyak3ImpvUeGlS42NpoqCks8a7NI0EtscLENZlyBINFisgUaanS0pod+Zltwx1NiJqBMSMxItoWu5fY5LR37t4JmUYHiEXLjDi9R+v78l5JYeOcxma9PhsHFTNHq+9jDXenXUVTNiuLGrIgoYqKuhAAQUJEUgTtGtnc7UEMUq+mc/V4VfR5odo96potRWXa0Sum3wMu4UIl66hULC37nIDKN1WooQRIwleV4llGWzqAFwCR/2W4IEEq9bH5dm8Qi8N3Q2lh1B6qMYewthDFAnEkQcdCrCQQ1R57awr1BBVU3mJUIFHEixOwOIEWilAyf1TNUbIrAHQtiHRxDyx3rzhXr6Iqq4jxWUbbtg9gH0DUeOPj3EDJ+s+Z2Yysuvrcvb4wFrjA9iP3WgTmxDvKfBiAiY0gkJszBk2OaMgErT6IQIh0e5X4TOFNlGzxbeJKgJrh09t8dB1wuWqLN/udkqbUxjbzEJzH0+3ArPnVtxNRj5AcG/t3ErUnWe5LcKsYSNR5rmh8pAokQpXVXoIEw+x4qafS3LIWEDFxqTBQw4ewgoXjHCFRrhENUnFK90ytGYN7ZqUR1C4AKq8iCZly94ytnVX4HGGJXMm5b2cpmVCyccJU1oBAH/Y2p3vYg6DuoGTdtikyS80mYXK5zVrvE2K174bKukS4nVqhfeEQsEOlSwIM+akKJLMeJM43S7M5hcKplKTBs9sGfqpFf7AwyJVZkswW3WZ4ZOqZqlnuu7K4s650s+zH1shdJb4RNncQmW2DKXmiBVHIgWk5KanK+FAzMDSfi4GHpmmZBG7pmTX16VqlZbKuAuzW4YjCFVeRFOy8g1TdZ0+awJam9El10CcMXsi3tg9gDVbunGRHVbZUGTmdtVvGRp7PHNTkn0PquBBFgVkkSFuMY3IssUkxSctZpikapFgLWYmV7Elgi8k2grmttWP0rlcHV4Ij0tM8CrwmUzNGa08NGdd9swrGwFVZBI+FAKmUGDGxCiYM1jotOJyFZPp1apteQu7Reh6xczHMv0awFRjsRL7iZaqG6FSq7gSbfq3KtJHojmq0kcl8VFNPFQjH7EUiEIfKmFARYBHxqThDTB4VcAf0BAR4A8o8EhBVBLwagwWRkAYQScSOrFGDTmo4hpB4wZVXkRT8tSGvQCApbbRljhyFs+eCAD4w5buXNdxRHBWq7pYJi2e1xLjlbAVl9A2s1CDewrCM2YMz87l8rnLKZQocAmPZ+ZxZS5uqy6XUTjYlCGYqbiGOoU1Mxuz9vb6WK60kmOmknPVnflRh96Gy1Zb7ntnb6VLm7cp9C4tXtr8QmfQ0JKnlnjThIzax9akkUZBJaYpOc0xdONQRhH6k5VoSlzl9XYSr6PmDCdeW3ugtW74UTIuCiqdlOwakwsCqiBManyRmeT4ApCUtLHKlxRQUBAtCVpaIgRego5iiIBLtAdVBFyi1YvQIiIUeIKSiParuEx1FaeNyC4xvsgScKZN5cUAH4Cf+XdMpxrDjCapar8uo9ANpkwbm617EbBRUIyhqgKAKXBtRqy4Ki4bG8WZrj/vskMlTeSTj0iJNC2+GnsIq77JLix7YAmDN8DBQwZ/APAGTEOyP6AgIg2/nIBFCrwSg1UjIIqh43i/sy6t3JkXNSkTRB1b9paxdV8FgjO8jc67jpqTZ7QjEBx7ByJs2Vtp2GZvl6qRkm1K9sy8rqFioLRvzrlceobvGxt80Tc5hR5XKHkRfKbQIqL9hkkWWWznccnaFqHNKwwg7VmXOefiMMIlGEvHmUirMkbAWNp/BSDd+nNnWbWBleY10h8VQMxUJrjXVmIZAYPm6Ve4uV5IX5OZcy5lzCGJ5EgSc9alEpNbyNz5lr1EZLYLRaTBI22EK0pMhqGUqUlDZ2KhUuEaBUi8iKbDbRnSedfwUPAETp7ZgT9s6caard0NK14pziLv4qAGhfCmqfFFE7wrCxo60ODFBH4hQTGI0V6wafC+qbzcPC5jga9lFRq3oEwdhXW5hen4E2XPujSKzFRcAgycMSitrWhpRJojtsMlXVah2wp0YlhkMThqlVc23olrlfZ/OQS0mU2SOTdzTkR31hUpz0Q+WXdhOQyMLT70oSoeEDOIMgdPAK9sBMwra3OFpiGZRwq8moBHCVgUA/acS8uMYWOUzrrS/wxG/BUIYpihLcPhZ/Eskyq/ZnN3vgs5EM4i76ot9zHngGdGntSEy1zKWuNVUUEXJfxCgpZCjPZiiI5CFRMKFUwKypjoV9Du2dQMEZmxJsKYMko8rOvlCty2IYtRZAmK1qRRZDXh8hmHz3gqYFJrxABicFRtU7E76xLQ5nvyKH29Dl41r5sRTBc55c7DBsMHDbkETMUVKoFIGgGrxMak4YRLVgVYhUOUObyyNWgMAH6/hj+g4Zc1vAEFbyCBKMfgVWPQQBRDh2GdPb5uu3CUIPEimo6nNpB4DTeLj5sIoEns8plUDW0HT2rOoJxN3hk1fG1SNGxCvO9L+J60NvgYATdVk8frDRkibSSuZRQ6kck6C+t6uWC2Cp1oOZTWkDDnXdmmYocbTmkanJN0GzJrAMmSjYcaCrdd6Kzxia28XNUVxp6Jfoo4ENtersx2YbpVGAPCjTuJpU3TkMakkQ3etVFQddb4UTJu0J4L0VTss+cyAHCmfcMljp4zZk0EALy4rQexVPBFA/1d6865srO7eC1VIx04WeBICixNjTdbhxq8lMDzJdqKITqCEO1BFRP8Kgo8QYdXAWcaJR5BMJVuFbrxJq7SClx+ISSKLEGBSQRMocSMaBVcpQUOwRhiLSGhIaERaiDSHBHMNGR33hVYx6JgCq3Mna/J+qGVGR0YPHAyi2tOdo3LtezCAP1RAaEUGKgGSGKBZMA36RllDq/f9HMFvaaXK+g3ifFeWcEvJ+ChhBiIjHBVIyBJoMPIWOPteVddQ/IoOg4b6L9QgnhrXt7eCwCYM7mEjiLN7houjp/Sio6ihzBRWNvVl/dyDo7r9bJmDc25SYfnzN4Cmrm0eA3OTSOyS4YPuLHFe1ymRgyXSWi+vbJNwsauXpu/pax93fRx+Va4jC2+JlwOd95V+5zX9WYBqGtwTis+q1g1Eas1Mg+21mdxVnhnznCXa0ROEmOLhzTmDJZkhkrGunab2EZk14ysbLWllImBctZ4pUZ1m3AwVHkRTcXLbxrxWjSjI+eVjC0YY1g0swMr39iLV7v6cOqxjTVZmbnwXc5tszK3kVDGaejOu4xBA1AFQBU0dKAQFGIU/AQlP0KbH6JFxGjhUTrSJHtWZAREpduFRRaj1Q6YbOcRfCgUmUrPt4pMpKLF7eRjwDgMY2hEWttzLlt1gVlnIFKDhoBOKy5u+8RMMoap1lz4bpSG8NZnGErN0wGTA7KAUHroiwvoi4oYiAP0lFsQxwJxfwDEHF6fME3IFcDvsxVXnxEtv1+Z+KdKAlGJwaIErBIag0YYAlJBx4ltSs5nu9BBlRfRVLjKi8Rr+DnZ/pu+Yv+NGwXGs6NQagkbadXlmpK5bUgWgHINyZ6pugIb/RRwE//kIpgcnGUjnnTq+Ett65nkjCIDitaU4TMBwRg8CHBbfTmk1og1EB+oGTkT0psVrizOVp+OO7HpGem0ZZusYSKguDnbUl6aohEmHuJYIIkFkM0rrKIWthuazEIXuCtCaV2FLrfQ2eJVul2YugvTa3SFC6DKi2gyXOV1yrEkXsPNydPNv+mrXY0lXilWsGBzDTVngDCmDZOg4dI1TKIGuBks6dntQp5Jcwds9h8Y4Lbz7GMiY1V3rkJjh1d1jsLa/7LNyAqxloi1sg5DlgbnDt4yzGYhmq+t9WbFmqOqPUQQqGrfjkARqOoAofJR1WbsSahNA/JAUkCsOfqSAspJgN6wiL5qAdXIR1T2gYhDDAgzl6vM4JUBr2IchTzWEBVjznCBu7yaAFFsEuNtI3J6zpVtRs4REi+iaajGEq/v6gcALJrRWNtaY4GFM9oBAK9s72u8pI3BSfLCVV41p2E6JdmzbU+eBve0iX/ixlXoKptsRBPqtg1rlZazxJdYgoAptHIGHwwF5sFnptISLFtpKUhtTBpxpupyOYZZ3PZk+rVgJknDCphL4TCC5UNpjqoOzIgT7SG024RlGSBUHnqTAiLloSdsQSXx0VMpolIJkEQCrN8Dixn8fuMqDPoAUdHwKxp+WYG79IxYQZRjsFgCYZQaNBDZFI04NsIl5ailaBwM2jYkmobXdvRBKo1jWgNM6yjkvZwxx4Jp7eAM2DsQYVdfmPdyhoS5bUMHZ+ZdjBnDBpg1azBzXxaX8xcrkSauKzuKpPbtzNZdzQ4v06xCDoBbQeeDvrm0xgUFVbPH26oLcI3D9a+VbTg2Ybos3WKMtTBnXMiedwkjWnZuV1X5qMgAFRmgap2FlcRHJfYRxR6SWECHAjxkEBGzVniAWzs8j01yBreDJdOk+IwlPq2ynEilAybzM2o4qPIimoasWaOhqoIxQtEXOH5KK9bvGsArXX2Y2lHMe0kGV91Y4UqNG6JWeaVOQ3vmBa4BZi/AOvBMz5NgGhXpm+GQTKcxTKaXK8k0IcdpA7LJKuTwIew5V/3f/QrabhkqxDBVV1ULW0Xtv2Uo7XalSUbUkNbEYao0Y8Ao6wKqyseAKiDWAv2yaO5XASrSCFdfUkAkBfaFJURSoHugBXHkIS77YGUBUeUIeo0d3u81fVxBv4ZXVeBhfcWFRIFVQ7DEVF46jo01PorrEuO1tCFUOVZdAFVeRBPxkjvvmknnXSPFQmvaeLXBTBsHQzM2ZKXl/r7RumYhV7byGiwmgD2DgkuxUAgyM7lcVqE4hD+aZMYin90udFXX4OrLmTFUOozSiFpkhWzwZGQ3FdmlZ1SlnwbtxrGATGwDcjqTy1wisnb4JDuXS6cVF1M2KV5aS7xUdY3IdedcOQsXQJUX0USkTkMSrxFj0YwO/OL57Q3nOEwdhkBq2KhdGLRdaN5YtWLQyoTQCm6ceG5Csc8luOZoATKhuzJtSq5P0Nj/r3w5aNss1tJUXjBRUNktQJeqke3TMgIF+Ejq0uVddNSAKqCsTOXVk5QQa4HepIhQ+ei1pgxnzIikQO9AETIRSPp9sIjD6zeRTyIEgl4jWkG/ES2vrOBVpc0rjM14kyg2FZc730qS+hldwKjHP70VJF5EU6CUTt9QySY/ciycbkwbrzZ6ozJgHIeuuhpcEOnaJTVLZ1clikNxlqa7O1xjspvTFUAa6zp0XUL8ULgtQwltDBv2NQGkwiV1/ZmXhEuCN2/BpkOMp71cVeWbS/upo7CiAoTSS4WrHAco22GSceRBxRysauzwIjSDJJ0tnifWFh+ZPi4eKfBImuinRIHFSdqMXLPDuygol54x+ikaB4PEi2gKNu0toxxJFH2OEzrb8l7OmMVtG76+sx9RohB4DXayYM+aNK8XE9cexTRsCQbAVl5KcUiloK2IOaeh6+kSduija1geHHALmKZjH2ZL0LgTXepFrSnZGTUUbFyTu7QZWxlrr35wJBRkusFoqq+q9hFrD2VVQJ8ylVZ/UkCofHRHLYiUQE/UgnLsoxL5GKgUIBMB1e+n87hEaK3wA0aw/IoxZXjODh9KI1xRAhZa0Upsgobr58oaNoCG2i50kHgRTYEza5w0rR2Ck1ljpJg5oYiOoofeaoLXd/Y35hYtzwhqpvoCADchhCkAdjqwlBwJNzFJvqhVXCKzXegPCt2t6wfTGmDMzuWyM7Xs4+Z8yzgMY9jxJ1a03BlWbPMMo0G9XsYez9OPjR3et6aMAvplEWUZoDsuGTt8XEQoPfRUi6hEPsKqj7jsAzGH6BPgCeD3mq1Cr6zhl805l9+vjHgNJGBSgYcJWCjBpDTjTZQyNnipzHahzHw+isMlD5cG+7OKIIbm5e09AOi8a6RhjNVMG43SrHyIf6yk4RRuy9B+rLUxbdS+nc0ttGNEeBoJtf+bsxEiK1K2h0vB9nPpzHahyyHUteGPtVQMU3k5MXOX0lkzhrHDm5gnD2UVpD1cFemjKr3UBl+NPUSRl6ZmsIiZJPiqvU0vXZ9VKI0dnllzhqu20kpL1wwadTTQOVcWqryIpuCV7eYM5mQ67xpxTp7ejqc37G0408bg9gjNGKC13SpEXdXFbJEExaC1uRjM3CuPKwQ8gcclCixBkcc2rsm4C5Xb5mMcsNZ3xQBoBR8MMTCowdg0JUuYRA0FZjMJPVNJ2SZjd57ltiVjiMxZlwelGXpkCVXlozcpojsuoSJ97Km2IlIC3eUWRIlAtRJAVTywkMPv5+AR4PdZO3yfTqOevHKt4oLSEBVrh3fmDGkt8VoDcWSyCpPEWOGVrlnigYarugASL6JJcG+kJF4jj6tuX24w8TokskKmGfSgeVjMVleC1QJ4AWOYGAoFZh7RtgDU2trldeY5SM+6ZLbiGrR9qDC0VR5AGh9Vs8L7NqPQQ2Qt8bEUSBIBFXMgYWC28TidxxWbOVz7pcNLVWeHTxPhpUoTM6C0+dhVXVmTRgMKF0DiRTQB3eUI23uqAGpuOGLkOGWmid566c3exouJysAyb6quHzl7pY8xDc5NxqFnR6J4TMLjbsRJrcJwghNBwNcSyooUt9uFZvyJrjtvUQBi+3puWnJVu+ZiU33JNCaKp1VbVrjK0jQi70tMtdUTt6A7bEE18bGv3IJEclQGCtARBxvwTCp8lcHrh53HpSFik1UoQgVRVRBV4ybkYQJIDRZGpo8rTszZllLGGq9VvS0+h6nIRwKJF9HwuApg9jEtaKcZXiPOidPa4HGG7nKMN3uqOHZiS95LqjHU+ZeGPdhi9eddFtcKJriCxxR8Xj81OYsb6CigjdHCnom5wZBmXInezyxgXIWmt8tVXW50SVa43Jakw+UehtYeX5E+BlwfVxygmni1qKeqAIs5RNUIFw9h7PCRTYS3AbsiUuChES1jg5eAVGarUFlTRiIBJWuOwsGNyA1ccTlIvIiGJz3vmk5bhqNBwROYP7UNr3b14eU3extLvAYxhMciRdsSjNtUeY+ZcF4vY5F3ye4OZbf3Im2NHRmjhwJLe7/SgZFMG9GyWYlVW2kNqIKtuFh65uW2EB3Z1Ix9cQmJFtgXlepS4aNEIKz40DEHLwvwiJlU+Irp3/IGbMVVUaYB2TUfOyu81CYdXmlTcWldL1xSmvsatBH5YJB4EQ0PnXeNPqfMnIBXu/rw0ps9+KNF0/JezkFh1rRhthFr4bzWoWEmKXNdN0XZNCNnz624bTI2QyMFY3DHYIHdVoxZAqH3n3rsUuCV5mar0I4xcQMi3XlW1n0IIK22QuWhO25BpDzsC0uoxD76qgWTCh8L6H4PLObw+hl4xOAPGCu8qAJBv4KINbx+CZ5omwpvqi1ng2dhbAQqjo2bMJueYYdK7rdV2OBVF0BWeaIJIPEafZxpw+VJNgyDZ0gd7E3WRkUxe/GDlWmWNMYpDc3lNmPQbAO6kF2ZOgpr044jmBT4qgpqW4aojUSJlZduIWa3CSs2Eb6cBKjEPipxZqsw4uCRzSl0lvgQNiHeVF37mTOk6eGCyyp0pgxZq7ig6rcF85yIfKRQ5UU0NLFUWLfDzfAi8RotXPjxy40mXoB5U3buuMG4qovDDKPkxhrvC5nZNpTptmH2zMtEOrm3RAGh3dagSXz3beXlKrAsbvZW2W4XukZjCYZQmXNad/4V2pEmFemjLy6iKj3srbYilAK95SKi0EdS9UwqfMjg9XNrg3dNx4BfURChhjcgTWpGxWUUmsnHzE1AVsqkwutMA7LbLmzSistB4kU0NOt39SOSCm0FD7MmNe7Zy1jDVbnbuivoLkeYWApyXtFByBYNLqQXSAN73YeuORnAfhFQUvP07MudSyn7NbCfc9hkDe0BLEm/DkDqKDQi5tWZNUyTskmzB4yIRcpDZK3wLhU+SkQtFd42H6c2+MQ2HUeoVVvxICu8bTxOjRnZbELXiOzud/9eTVhxOUi8iIbGbRkunN4OTrFQo8aEFh+zj2nBlr0VvLy9F+fOm5L3koxtf6gH0kT5WsJ8umVoz7u43TbkyNwOchqaFIz6MSbQIhU8CQahTcUWaZFuL0owU2Vpjj5VNOdcykOoa9uESjOEykOiBfoTMzyyPy6gNywiTDyTCi85ZJ9NhS+bVHg3+ZjHGn6/NpVXWUFUjClDVGIwqc25ljQNyHAxT4lMKy7zg8kD2+GbTLgAEi+iwaFkjfw4ZcYEI15vNoZ4HSo6K2AWnjnzcn1WrvpK+640h2CqrplYMAWlXROzZ+OgmPkql1cIY9RQmiNUg40aLL2tyACJ5nWp8ANhYFLhQw865mBVs1UoqsZRyCNAVDREDBOwG1k7fDUxVVcoTeNxbHILYZMztFLmfEvpuoprPzs80JTCBZB4EQ3Oqk37AACnzZqQ80rGH4tmduChl7oaz7QBDP2GmxEtJ2Bm5FftuXyIbUMJnlZh2fQL97mAsgkZysze0rV+MOckLKsAcZpNKJAoI2QKDKH0oMAwkASIpIe+uIBy7KMcBqhUAsiEQw94YDGDN2CFq2pT4SONYMCmwpdtKnw1yfRwGdegiXtSNeFKDRqDKi5gTAgXQOJFNDDVWOL5rd0AgHPmHpPvYsYhzrTxwraenFdyCNgUEJ3ZMjT3m4rLuQ3dGJTBKF2/ISmzjcRuWKR2z3VNyAKhFauq8lPBco3KoZ3YXJUeEiXQFxcQS4G+agHVyEcceZD9HljC4fdxsBjw+7Op8BoiAnxrg/cGkjQxg8XSnG9FxgYPe6uTJHUX1pkzgDFTcTlIvIiGZc2WbsRSo7O9gDmTS3kvZ9xx5nGTAJjZXrv6QnS2F/JZiNK1ZI2DNNDuN5DygN+u9kSTnMHrthidYUMOOmFz92dTM5xz0J1nhdJDrDkSJZBoM/yynASQmqMc+yZYN/IRhR5UKMBCbkwZoQnWFaEbGumS4e3gyESb3q3Y5RTKWrVlYvPtlqC2yfCD0uGVrjdnjAFIvIiG5dmNewEAZ8+d1LD5emOZY1oDnDyjA69s78XKN/bgPWfMzHtJNdx/D4xBD57plT5nkCFDZ2ZsWQECnKMw+7zamZfKTD9251jZCitSnknRkL5pVlYeEsUhFUcozcflyIdU3GwRSg5VNonwosrhDzBbcZmMQn/ApcIrs00YKdN4LBV4xZoyYjvp2BkzXB+XNikatbDdTPAuMGYqLgc1KRMNy9MbzXnX2bRlmBvnzpsMAHhi/Z6cV3IEWEVTdiSK+1hpVidMsfLqr0xsUy3l3czVCpWHigrS5uIBa76oSh9V6SNMPIR29lYoBcLEQ5TJJ1ShAIs4eGgajnloK6xQm76t0DgKeahNxRWrNDHDmTFS4UpzCfWgz+3ZlnsMGHNVF0CVF9GgSKWxehOJV96cO28y/vnxDVj5RhOJl0Ya0qsVQyI5YmG27zjTZsyJ7evKJsoDtbOuRAkrbmy/6qoqfcTSPB4mZg6Xq7YSySE1Q5IIJAmHkgKyKgDJTDZh7HIJjQ3eH9AmFb7fmjIGlEmFDyV41TYeV23Mk7PBp25CnToKU+EaouIaS+dcWUi8iIbkle296A8TtBc8ssnnyDnHHwPBGTbsHsCb3RXMbOCQ3ixuQKVWDFJxY0eXAlVWm0pgBlPWi5fSJmDXNRUnmiOSNeNFrMz3ibNiZT/WGkgSYV5Tcjt3i4NVOVhiAnV5zCCqgKjYtIwB28M1oMASDb+cgEUKPEpq24Q2ozA1Zbipx5npx6kpwwlXtuIag8IFkHgRDcrTG8x511lzJkFQc3JutBd9nHrsBPxhSzeeXL8H71syK+8lDUk6x0vVLiQcmgFR7EED6OUFREqgkvjoFzLTtKwyqRqsVklZw4URL4YoEUikMGIlOZRiUNKY7LVk0IpBJxxQzA6L5CYZo8rAJOCVGVgCW3lZJ6GbdlyW4IkCryRpIjyiuDZ/S+uaBd6Jk67Z35Eda9LksU+HCokX0ZA8Y80a5xxPW4Z5c+68yfjDlm480YjipbVJk7fzvJiEuRKAxQwaHFHoQSYcSnGUuYInZJq64XrA3JmYVNwa9YxwKcXqqiktGbTkgLQZVMrcssTO+4oZmDQiJUIrVlVY8TJbhF7VnG3xyIqWVBDlBEgUeBibhuM4MaKlVC0pI1tpubOtrGgBY36rMAuJF9FwRInCU7byetucSTmvhjh33mQs//f1eHL97sacrJxWXRpMMTAF8ISBxdakEQloYT7mQiHmApzruubl1NChjLkjrao0g4rNliCSmmgxaUamsMzn5nWNUPHYWN9ZYuZuManN4MjEmjJCM3+LR9LEO0Vm2jHipL7hWNtzLeCAwmUWPighvklmch0NJF5Ew/Hrl7uwdyBCZ3sBZ5F45c7b5hwDXzC82VPF2h19WJj3UNC00tJGsKQdCSIYRKShqkaIPMGgBYOMGbQAYl/V/NV88GgV1E1iZpKlAiUSK1TuskJlnmeFU5rHeOzEy2wLMmkqLS41vIo51xKhySXksQKrxGBKgVUjI0TWBq+tDR7Afi7C/bYIgdo2of04fd4YhqzyRMNxz8pNAIAPnj0bvqD/RPOmJRC4dKEZSPmdxzfkvJoMmWrDiIc2wpEYETHVD0tnYfEqB6+atHYW8tpVNZmCLOTgFQ7hriqzl9kC9CrZzwddVXdpsy1YtduDVQ0vVOaMq2qchDy0KRlRZntQ1qzwJovQbRXK+kpr8DYhMC6FC6DKi2gwXt/Zh5Vv7AVnwHXnHJf3cgjLJy44AQ+91IWfPLcNf335SZjWUcxtLTpzzsViCcYYeKTggUMLDWgTaMsSBnBABgyaA5pnUucHY9/zmcpUUq6qStx95nunhhANcOluta28NLitvHhsKkNRkWBKg4dma5BHtfOsoaYcp0aMQVuDqWAdrNoyTxyBf/XGg8SLaCjufWozAOCShdOaxpY9HlgyZxLeNmcSnt20D3f9x0bc9s6Fo78IpQBXids3dbNlaM6PwEyDr2aAkgxMa2gO8MiIluaZCCl36yIQnXhJgGlttwdRu7Vnalnxyt7HE1f1abBEgUvTZAxlxKp2rlWfkHGkomVuxq9wASReRAPRHyb48aqtAIDr305VV6PxZxfOw7P/8izufWoTbrpkPtoKo/j2oTJv4DZRgnEFnSgzaDKSRqwYwBSDsluGmgNa1AJ7B8dIpZ6NOtMHMlWVqaSAjHhZgYOtxkx1ZqpBFpspzybxXZnzrMjM03IJ8EhkLdYpM2sr22QMHIJoZe4bT6LlIPEiGoIwkfjkPavQW00wZ3IJF5zYmfeSiEFcunAq5nW2Yv2uAdx+/0v4u/efPro9eDZ8likbkcSYbeAVEBUGHXGwWEFXOZRg0J7p8wKHGVQJ7F9xuTd9Z9RQOt0iZFYkmNJmW1Fr2/xshUtru5VoxCq9VcbWnk40TkxvlnZC5dafbS52FvdBJoz0Rx9KsOy/yXiFxIvInVgq/OX3nsNj63ajFAj8v9cupqnJDQjnDLe982T82b8+ix+v3opylOAbH1yMgidGfzEZ8wISgCUCUGaNWgOMM2ipTWhv6jAc9N+UEycnXJlqyjkZASdeOlOludeGGQSZES/Ybb90MKStrurCc1NTxhB9WocjXOMcpvU4lm4id75w/4t48IXt2N0fIfA47vro2ThvfvNM7R2PPPRiF/7ye88hkgozJxRx6cnT8LdXnTpir3d5cB0AgHkewLm59T2AC7BCYJLlCz7AuTkT49z0dTGWmfO1/x9DtapL1yoYhUzTs62ChngeU5nnONFyQjQ4d3BwhNMBrO7mZtDb8VBi1aRv2b9RPxrW70fiReTK3Nt+AcCM3/jaNafjEmvJJhqbJ17fjU/euxo9lRgAsPGr7x6x13LiBSHAhDC3ngcIDuZb0fI9I2JWvMBYrdI6UFN19q1vkBixwaKVvVWDxMwJFrBffBOJVo3hFi/aNiRy5X1nzcJ7zpiB8+ZPoZ6uJuLc+VOw8nOX4sk3duPhV3aO6GtppcE4M0JgR0RqmGZhrbURpyQBY8yIG3sL0ar75oOFqd4AoQcLnFlQ7TnZ+7LpF+njB94SPOTtwCYXrZGCKi+CIBqaP/I+CABGmACwTHXFhDAVFuP7V1rsIH8MDRaLwQIz+DnZ+KU6QRvk9iOxOiBUeREEMT5xIqCZMUrAmgYlzFmYE63DMfsM2q4bUpjqnzDk40dtuBijgjWSkHgRBNHYpJWLqaQYJDTLNCs7jjAw+ICbTwebPjxIhIacVExCNaKQeBEE0XxoZbYFlU4rrcNJvD8iwcq+9pE+h4Rr2KAzL4IgCKLpIHsXQRAE0XSQeBEEQRBNB4kXQRAE0XSQeBEEQRBNB4kXQRAE0XSQVZ7IDa01+vr68l4GMUy0t7cfslWdII4WEi8iN3bv3o2pU6fmvQximNi5cyc6O2kOGzE6kHgRuREEAQBgy5Yt6OjoyHk1I0Nvby9mz549Ln5G9/skiNGAxIvIDbfF1NHRMWbf2B3j4WekLUNiNCHDBkEQBNF0kHgRBEEQTQeJF5EbhUIBt99+OwqFQt5LGTHoZySIkYGCeQmCIIimgyovgiAIoukg8SIIgiCaDhIvgiAIoukg8SIIgiCaDhIvYsSI4xi33norTjvtNLS2tmLmzJm44YYb8Oabbx706+644w4wxuquhQsXjtKqh5dvfetbmDt3LorFIpYuXYqnn3467yUdFl/5yldw9tlno729HVOnTsVVV12FtWvXHvRrVqxYsd/vr1gsjtKKifECiRcxYpTLZaxevRqf//znsXr1atx3331Yu3Ytrrzyyrf82lNOOQXbt29Pr8cff3wUVjy8/OAHP8Att9yC22+/HatXr8YZZ5yBK664Ajt37sx7aYfMo48+ihtvvBErV67Eb37zG8RxjMsvvxwDAwMH/bqOjo6639+mTZtGacXEeIGs8sSo8swzz+Ccc87Bpk2bcNxxxw35nDvuuAM//elPsWbNmtFd3DCzdOlSnH322fjmN78JAFBKYfbs2fjUpz6F2267LefVHRm7du3C1KlT8eijj+KCCy4Y8jkrVqzAzTffjO7u7tFdHDGuoMqLGFV6enrAGMPEiRMP+rx169Zh5syZOOGEE/DhD38YmzdvHp0FDhNRFGHVqlW47LLL0vs457jsssvw5JNP5riyo6OnpwcAcMwxxxz0ef39/ZgzZw5mz56N9773vXjppZdGY3nEOILEixg1qtUqbr31Vlx33XUHDaldunQpVqxYgYceegjLly/Hhg0bcP755zfV7K/du3dDSolp06bV3T9t2jR0dXXltKqjQymFm2++Geeddx5OPfXUAz7vpJNOwne+8x3cf//9uOeee6CUwrnnnoutW7eO4mqJsQ6JFzFs3HvvvWhra0uvxx57LH0sjmN84AMfgNYay5cvP+j3eec734lrrrkGp59+Oq644go8+OCD6O7uxg9/+MOR/hGIg3DjjTfixRdfxPe///2DPm/ZsmW44YYbsHjxYlx44YW477770NnZiW9/+9ujtFJiPEAjUYhh48orr8TSpUvTz4899lgANeHatGkTHnnkkcMeDTJx4kQsWLAAr7/++rCudySZMmUKhBDYsWNH3f07duzA9OnTc1rVkXPTTTfhgQcewO9//3vMmjXrsL7W932ceeaZTfX7IxofqryIYaO9vR3z589Pr5aWllS41q1bh9/+9reYPHnyYX/f/v5+rF+/HjNmzBiBVY8MQRBgyZIlePjhh9P7lFJ4+OGHsWzZshxXdnhorXHTTTfhJz/5CR555BEcf/zxh/09pJR44YUXmur3RzQ+JF7EiBHHMd7//vfj2Wefxb333gspJbq6utDV1YUoitLnXXrppakjDwA+/elP49FHH8XGjRvxxBNP4Oqrr4YQAtddd10eP8YRc8stt+DOO+/E3XffjVdeeQWf/OQnMTAwgI997GN5L+2QufHGG3HPPffgu9/9Ltrb29PfX6VSSZ9zww034HOf+1z6+Re/+EX8+te/xhtvvIHVq1fj+uuvx6ZNm/Dxj388jx+BGKPQtiExYmzbtg0/+9nPAACLFy+ue+x3v/sdLrroIgDA+vXrsXv37vSxrVu34rrrrsOePXvQ2dmJd7zjHVi5ciU6OztHa+nDwrXXXotdu3bhC1/4Arq6urB48WI89NBD+5k4Ghl3Pul+V4677roLH/3oRwEAmzdvBue1v4P37duH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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -147,17 +147,27 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now we can use our simulator to generate some data $x_{\\text{PP}}$, using as input parameters the poterior samples $\\theta_{\\text{posterior}}$. Note that the simulation part is not in the `sbi` scope, so any simulator -including a non-Python one- can be used at this stage. In our case we'll use a dummy simulator:" + "Now we can use our simulator to generate some data $x_{\\text{PP}}$. We will use the poterior samples $\\theta_{\\text{posterior}}$ as input parameters. Note that the simulation part is not in the `sbi` scope, so any simulator -including a non-Python one- can be used at this stage. In our case we'll use a dummy simulator for the sake of demonstration:" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "def dummy_simulator(posterior_samples: torch.Tensor, *args, **kwargs) -> torch.Tensor:\n", - " sample_size = posterior_samples.shape[0]\n", + "def dummy_simulator(theta: torch.Tensor, *args, **kwargs) -> torch.Tensor:\n", + " \"\"\" a function performing a simulation emulating a real simulator outside sbi\n", + "\n", + " Args:\n", + " theta: parameters to control the simulation (in this tutorial,\n", + " these are the posterior_samples $\\theta_{\\text{posterior}}$ obtained\n", + " from the trained posterior.\n", + " args: parameters\n", + " kwargs: keyword arguments\n", + " \"\"\"\n", + "\n", + " sample_size = theta.shape[0] # number of posterior_samples\n", " scale = 1.0\n", "\n", " shift = torch.distributions.Gumbel(loc=torch.zeros(D), scale=scale / 2).sample()\n", @@ -173,24 +183,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Plotting $x_o$ against the $x_{\\text{pp}}$, we perform a PPC that plays the role of a sanity check. In this case, the check indicates that $x_o$ falls right within the support of $x_{\\text{pp}}$, which should make the experimenter rather confident about the estimated `posterior`:" + "Plotting $x_o$ against the $x_{\\text{pp}}$, we perform a PPC that represents a sanity check. In this case, the check indicates that $x_o$ falls right within the support of $x_{\\text{pp}}$, which should make the experimenter rather confident about the estimated `posterior`:" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAc8AAAHyCAYAAACNnEVYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOz9d5hkd3nmjX9OqpyrOuc4OY8mSBrlgJCIAhOXaLD9Ou/6Z7Ov16/tXa+N117b2BgHMCYYAQIRlLNG0owm5+npns6hurtyzif9/jitRkICSQahwZ77uvqa6erq6nO+55zvk+7nfgTTNLmMy7iMy7iMy7iMVw/xjT6Ay7iMy7iMy7iMnzdcNp6XcRmXcRmXcRmvEZeN52VcxmVcxmVcxmvEZeN5GZdxGZdxGZfxGnHZeF7GZVzGZVzGZbxGXDael3EZl3EZl3EZrxGvZDzNy1+v+esnxetyXLF8zbz3zJJ5dCaz+lqm3DBPzmfMkaX86uuJQs3MV1XzYqxojsUKZrWhr76/pupmslgzD0ykzC8emDFrqv6Sv5Ms1s1nJ5Kv+rhSpbp5z4noG7nmr+lvHZ5Om7Op8oteK9c10zBM0zRN0zBM81w0b+YqDfOxC3GzVNfMMws58yuHZs1DU2kTMBdz1Rddh+e/dMM07zuzZBarqvnUxcRrvr7j8aJ5fjH/U71vijXVTBbrb9h6v9avVKluPjP+g/tPN0zz8Qtx0zBMUzdMEzBLdc00rR691ev36EjMzJYbL1r3R0Zi5nisYP7J/SPm4ZVrN7pcMAs19cceQ7bc+Gmf10+Kn+rx3Htmyaw0tJe8XlN18x/2T/3Ie1dfeUZqqm4u5qqrr6u6Yd5/dsmciBfMQ1Mps6bq5nymbD59MWH+68EZU9WN1fe93J7zo75mU2Xz5HzWBMwzC7nX9LuvZlEvR57/SRBwKWzp9NMbcZEs1jkwkWJsuUA0U+UvH75IV9CBaZokinVOzWVIFGvMpsrUNJ0vHZzBNE1OzmdZytboCbv40N4eHIrEsxNJihWVeKEGQJPXzr6hJnKVBp9/dopMufFjjyvisXPnjk4AksX6674OPynWtnpp9Tte9NqzE0mWCzUKNQ1RFDAxEQXIlOvMp8ts6vDzgd09pEo1fvPrJ1nMVukNu/jqoVk03WAhU2F0ucDphSxXD4apajqZUoOFTOVVH9eh6RS1hk5HwPHKb34NyJQbLOWqq99fCn3hx2YzRLMvvzYRj51rhptWvxcF6A67EEUBSRQwTZM/f2iUE3NZHr8QB2A8XkSRBL5/epE1LR7AOu/rhiI0ee3EilWCbgUAwzTR9R+/Bk6bxKGpNNPJEk9dTLzse0p1jfvPLr3mc78UsLsvhFORyFdU7jkRXX39YqzIzp4AfWE3YF2nSl3DMKz1urBU4LmpNOlSnblUefX3GprBUJMX0xT47qkohmnS6nOyptXHR67sRVh5378cmOYrz81SrKmv6jh7I262dwcB67q9EN89FaWu6S/7e5OJ0qv6/EvbeP7Wb1lfl7EK0zR5ciyOphuv6fccikR7wEmz14HPKaObBrv7wwy1eNjRG6Qt4OJbx6N4HDJH5zKoms5gswdNN6hrOhOJEvFCDa9TxmmT0E2TqWSJh88t84/PTPHA2WUAVN3gxFwWSRTY1BHA55Bf9TH+4/4pCtVX92AATCdLP5PNfGQpT2HlgU2XG/zwn3zTxjZafQ7uO7PE+cU8dlnkwXMx3rqlg+EW7+rG3R9xc9VgmLqq89TFBNlynaOzGaYSRfIVFYcikS43mIyXqKk6mm6Sr6jcfWyehmZdb90wVzejF+Id2zq57+wSz06kKdTUV7w/Kg2NyURx1en5UegJu9nSFVj9/tsv2CzfKPSEXYTctld8X6JYI1msM9ziXX3tXDSPTRKxKyJ7B8KAZXBn0xXWtHoJe+wcm81wZDrN5/ZPMRYvsrE9wH1nl3j4/DK6YXLf2SUSxRrTyRLfODq/+tl1TWc8XkQSBWySyGy6zLauwMs6QS5F4ore0E9hNX72aPE5EAQBv0thsNlDtaEzn6kwmy5zNpqnN+JmKVclX1F5bjrF55+dwjRN1rR6GY8Xefh8jPQLnOqJRImapnFiLsNbNrfjssnkqw2enUjy+Gicv3z0IpOJIjt7QnSHXRyYSL1qA/o8tnUHcSjS6vd7+yPYZell39vss7+qzxReYfN5Y93M666z/t2//408itcK4ZXf8mPxims+FiuwpsWLILz8nzoxl2FLZwBBEHhuKsXVgxH2jycZiea5bXMrrT4n3zw+jywKRDNVFEnEoYi8b1c3f/34OJIgEC/W+fM7N3N4OsPOniAjSwUmk0V2dAdRdZOlfJX+iJtqQ2dzlx+bJCGKAqpucDaaZ0O770U366vBZKJEX8SNJL7yEpqmySMjMW5a14L8an7hx3zUK73hwlKBzpATn0Ph2GyGoWYPAZe1eX/uqQnevLkNEZFstYEIdIVcFGoq955a4vp1zRSqGh67zNo2L79x10m8Dpn37+6houo0ex08OrKEasAn9w3w3FSKqwYjnJrPsXcgTLJYJ12q8/3TS6xr8xF0K3gdCltfYNBeuCYXlgt0hVx8+3iUkNvG27d1vOw55SsqF+MFFjJV3rm940feSz8MVTdQXuf1/mlhJlXGME0GmqxoMpav8vvfPc/v3roGVTdp8tn4vXvOcfumNm7Z0MrFWJGTcxkmEiV+8ep+ZNHk4HSavrCHiUSJqwcjlOoqWzqD/NMzU3QEnFy7pomQ245hmHz+2WkCLoU7t3diArOpMqW6Rrmuc/VQ5BWPdyJeJOyxv5xj8LrvKf8eJAo1HhuJEXDZqOsGmmEwGS8xkyrzGzcNcWQqgywJ5KsNOoIuQi4bmmEiAFOpMm/d0o7HIeNzKBiGyd89OUG61OBXrh9gNlnmK4fn+Ov3bKFU15hJVdjRHUQUBc5F83SFnKvP4I+CphuMxgpUGwa7+l6zo/KKa35pR56X8bJY2+p7yWb3Qifo+cBEAAJOG985uYjfIXPrxhbG4yWeGIuztdPyxE5H8yznq2QrDb59YgFdN7ErEh+9shevQ2F7T4BTC1n2jyf40N5etnYHSZXqbO4MsKkzwK7+MHZZYjRWAECRRHb0BHn4fIzESlTzaqPDwWbPqzKcC5kKj12I86aNbcjS638Lr2/34XNYabsrekMvemibvQ5OzGYxMUmX6gRcNgIuG4+cj69GoTt6gkQ8Np4aS/DuK7owTEiW6mzrCtIRcDARr9DQdGyyyECTtQYeh8T+iwmeHIvTG3GTrzY4s5BlMOLm+GyGqWSJx1bSjs9DEAQ2tPvxORTet6uLG9Y1v+Rc8lWVkaU8fpfCrr4wd+7ofEXD2dAMxuNFwLq+lzqev9/6Iu5Vw9nQDO4/u8yfvXMTXqdCsmxdq1++pp9dvUG+dniWSkMlmq2ypsXDvaej/NuRBToDLlTdpDvkQhIFLsZK/MvBGbpDLrpCLk4t5PjmsXkWshXu2NzOTKpMtqKiSCKSKPDMePJVGU5YKbaZJgcnU6+YEXijoRsm4/EizX4HVw1F2NTh5+BEmoDLxvt2dzHU7KVQV+kMunj/7h6qDYOJRJGGbtAacBDNVPj8s9OMLhU4NZ9FFAX6Im4+dnUvrT4HewbCfOSqXh44u4xdtqL0R0ZifPrBUTZ2+F7WcJbqGkem06vXf3S5yPlogR++ZQs1lfOL+Z94DS5Hnj99vCFe4lcPzfK2bR2rm/wLka+oPDyyzC3rWwF4YjRGuqSyvSdIV8hJvqIynihSrGm8f3cP8+kK3zsV5b27u2n2Ovj+qUWcNpH9Ywk+sKcXt12mJ+xa3XR1w+TZiST7BiNEc1XCHjv7xxIs5at8aG8vD51fZmtXALddptn7k9fkDMOkpum4bDLfODrPe3d1v+GR0D0nolw9FCHisfPcVBJVhy2dfgDOLOS4dk0zuUqDrx+d5+qBJg7PpLhpfQv3nVliOVfjD96ynvOLBVRdX40sR5YK9IZdVBo62XIDn1Mm7LEjCAKSIKAaxmrqaTpZQhQEeiNWvensQo7HxxL815uHX3ScXz00y/o2Pzt6g6/63Mp1jbPR/Gqak5/sHn/d95SvH53nTRtaCbptaLrB3ccXeNf2Tg5MpRho8hDx2JFEgWJNo9LQODKdYXtPAFkUsckibX4Hmm7wxFiCm9e3spCp8LEvHWWwycPbtrajyBKdISflus7aVi/5qorfqRAv1Hj6YpKPXd2HIAhoukGprr3sRl9t6CSKNXTDpFDTUCSBda0+GrpBoaricyovzNxcUpHn908v0hlwMJkss607iGGaxPIWR8Jpk3jPFd2AFZk+PZ5ka1eAYl1je3eQ84s5Ts3luGNLO+WGhqabmMDXj87hssmsafGymKvyi/v6AUiX6vgcMgYgiyI1VcOpyFRUnUpdo9n3g/3kwlKekaUCpgk3rGsm4rGTr6hohkHY84NUbLFmOUnr2nw/7jRfcc0vG8+fPn6mN3qm3CBbadAdcr1sVDARL/LZpyb5s3duwmWz6o8Xlwvcf3YJ3bQ83Ts2txP22Dg+l+WOze2Mx4pkKnXOLxXY0xfmf943QthtQ5FF1rR6aQ84ecc2i+TzfKpwfZuPumaw/2KS7pCLXKXBUIuHJq+1ESWKdeYzFfb0h19yjADxQo2gy4ZNfm2RTU3VcSjSG7qZxws1DNOkze/ksQsxGppBW8BBpW7Q0HQWshVEUWA6UUIQBFLFOlcNhdndHwZMTszm6G/ysLkzQKWucWAl8tjQ7idRrNHqd1JXdU7N5+hvctPQDd629Qfp2IVMhcPTaSJeOzt7gthkkXxFZT5dYUdv0PqbpToNzcBtk/G7XupgvUZc0sZT0w3yVZWwx45pmnzpuVl0w+Smdc0EXDamkiVcNpmaqrOcr2EYBlu7g3QGXYB1T52N5plMFPE7ZS4sFXn7tg4eHYlxeiHHu3d20Rt2UVUN1rX5iBdqqLrBd08t8ol9/ficCvedXuTx0QSfed82FjIV8lWV9W0+xJXMyreOL7Cl04/PacPrkEkWa0RzVQ5Npvn/vWntD5/SJWU8nxyL0x100eJ38Kl7zvLhvb08eiFOm9/B9Wuamc9WaPM7ODSVZm9/GK9TYWy5QMBl4zOPj/MLV3Rx28Y2nh5PUKhqrG318tTFBC0+Bzt6grjtMifns1wz1ES5ofPUWAKfU2Fjh48Hzy3jdyp47DLNPgd9YTcBl4IgCNRUnYZu4FKkn0ZG6uc/bXtyPkfvpx7gqk8/+UYfyiUJ3TDRdBNFEkmX6qtEkalEiaVclWMzGf7oLev56qE5Yvka3z25yOlojv9261o+eU0/xZrKsdk03zsZ5amxBPeeWeSLB2eYTJRwyCKmadLqc+BURH7nlrV0BJz0hl2rf9804dR8jgfOLjOdKBH22GgPOLhyMIIiiYzHi8iSSHvA+SMN5/MpoFz1xcxc0zRZzldf9neex2utq/40MJko8c0XEEWKNY2DEylylQbz6Qo7e4KcXyzQ4rOzsdPPls4AYbeNIzMZPnpVH++9optYvs6ZhTzfP7GEahi0+BxIooDXqZAu1UkUagTdClcORNjS6WcpXyVdtq6vQxHJvoBwcWohx1u2tLNvMMK5xTwLmSrNPgfxYh11hRlabeiU6xp+l1W3HVn6ydNWlypSpTqPXohzYCLFbLrC5s4AH9rTw1MXkxyaSrOjJ8RitkKhplKsqXQG3Dw3mUbVDGK5Kn9473k0XWcqWWY5V7WeA0A1TP76PVtp8lqRa9CpkKs0OBvNo+o6Q80elvM1EoUasUKNvYMh0qU6T4zGefRCDPUFJK5rhptIlRpEPDbcdpnFXI2BiIdfum7gRefyWokxrycKNZWx5QINzaC/yYMgCDR57ByZSXPdmibev6uLhq6zkKngcchMxgv849OTPDORJFdV6QjY+a83D9Pic/CNY3M8OZpgQ4ePeLHG5s4A79jeiSSKpIoNHh2J8w9PT/LoSIxyXePK/hCGCbdtbOOtWzq4cV0LvWE3j16IkSk3qGs6DkXCbZNfREZ6JeSr6mtitb8Ql7zxbGg6s5++ncXcj99E/7OiyWtnuMVDvqpyaj5HptJA0w0euxDjnhMLrG33MpeucGouw8Pnlwi6ZHxOmb9/coKxWIHt3VZkMp+tEvHYmIgV+d/v2MSGdj/qSv3ztk2tvGVrB+lynU2dfoabLfZiptxAFAUGmt1kKg0+f2CanpCLxy7EKdc1TPPFFHFVNzg1n33R8ddUnW+fWGBdm+8lKd2aanB89sXvf6NxYi7LhaUC+4YjLGQqnFnIEXQp7O4Po+oG79vdzf7xJNFMxUprm3BgMsVMwiKDLGTLeJ0y79jewR2b2xls81JXTdoDTjLlBg+dW2YxV+XWja1MxEv88X0jfOngDPsvJvjwlT3kqiqFqsZXD80yn7bo/m/d0o5mmNx1dB5M6Aw6Abh9c9tqJN8ecPJ8abPN70B8lQQhsK7ba2V3v5EYixXZ0ulHFKAj4MQwTfI1lZvWtXDz+haeupjg/rPLzKZKFKoqkmhSbWj8+UOj/PMzU6xp8WKXJX7l2gF+8ZpBfum6QY7PZvmtm4Z58NwyM6kydkXidDTLXz12kXJDw2VTuGFtC89MJHDZJNa3+XjLpg5OzGXZ3BmgK+gi9oI6pt+pMNDs4ZGROHPpMlcNRmgLOF9UdjFNk++cXHwjlvBloesmmmEy3OJlOlUmka/yvt3dfOzqfhZzNfaPJ/nfD46xrTtAR8DF27Z1sqUrSF/YjaYbLOZq3HV0gYBLYSpRYkdfEKdNtpzPyRT5qso3js5TUVXec0UXH9rbx9u3tuFxyDR0k+OzGdoDThq6Qa6iMpsus6Hdx+mFHP/89DTnF/NcjBX4kwcukC2/tO2tUFNf1HYFllM5Hi++5PVXg0veeF7Gj8dCpkI0U+WR8zGuW9NEyGXjTDSHbphs7gwyslhAFAU+877t7OgO8m+H5/jOiUW6wy6OTmfoCrnpi3jY0RNcKfb3UFN1Ts/nuHFtM21+B1f0hUmX69x3ZompRIl/OThLQzO49/QipZrGVw/Nsb07wFCLF9OEWza04rbLBN02RpcLFGsqk4kium6utlo8O5FE0w2+dmSeO7d1EvG8lB7utEm8ZUv7S17XdONl2zV+FlA1nd39QbwOhfF4kVPzWWZTZbpCLuYzVZayVa4ajHDj+hbOLOQYWy4iAA9fSOC1y4wsFdh/MUmiUOfIdJrBJi/v2tFJQzPwOmSGW7zsGQgTcNk4F80hChB02fjg7h7uP7vMrRtbeef2Tt68qY0z0dzqcXnsMh/c3c0zE0nK9RdHK+cX84wtF7jnhLUR22UJ+TUQZk/MZTm/VPhpLN/rgpqqc/fxhdXvr1vTTNhj58RcFsM0KdU07juzRLmhUdN0PDar3WpLR5CGbvCXj46TKNZ4ZiKJIIjcvL4Fw7Tuv0rDqkdev7aJuXSZpVyVNa1eZlMVtnYFedeOLvb2hTkwkUIQTDa2B/A4FI7PZfnc05P4nDJ+p8ztm9voWel/BCtj0uJzsL078CMDg1zFqqVeKgi6bWzs8NPf5EHVDS7GSxyfy+K2ywRcMuva/Pz5nZt4cizBn9w3wj0noww2e7nv7BLZikqr38nWLh/PjKfoDru5ZV0rf/T9EZq9dm7b1Mr3Ti2iGQYeu0KqVCfgVDi9UODYbAaXXVotVWRKDc4v5Ym4bcwkK0Q8dj58VS9eh4zLJrOzJ7jqqMQLNR4+HwOgVNNIlV5sVFv9DoaavS/pA301ePVNeJdxSeLUfBa7IuFzytx7eomOoJONHX7qqsGVgxFyFT+LuSpfem6GdKnBR67sQxDgqiGrkdwSM5jmN28cRhDgq8/NIAoCh6czLOUqXL+uhSsHIgw1ewk77ewdCnNsNstcusxQi5dUqc6n3rQWl0226nILWda0+nhmPMnO3iDXDjfjscscy1ToCrnoCDq59/QivU1WS8qH9/aQqTQoVFVkUWQmXeb6NS9liRarKueX8zR5HCxkK7T6HK9U8P93o6bq/NvhOT60t/clNdh17X6eHk/y1i3tbOkKUKg1mEyWaPY5UDWDyVQJmySyttWHqZsgCCzmKvzGDQM0NIMHR+K8aWMrYLK7P8yD55aZiBc5PpfhN24c5kw0x9pWL4+OxNFNE4cssnsgzLMTSWZTFSp1ncl4mq6Qi7dssTaThUwFz4qz8qnb1vF73z7LL1/XT2/YjSAICEDIZeOXrrVIGE1eO01ey1kp1zXc9h+/DWzu9F/SLFuHInHzupbV7+uazmSixK/fOASAU5G4Y3M76XKdP7l/lN19YbZ0+ulr8nB4JsWphRxeu0jEa2dDh48vPDtNuaHz329bx1NjCbZ2BxmLFairOvmqhs+hUKprmMCOniD7Lya5ajCM266skqp+8ep+GrrBd04tsrlTpKGbL3u/FuualTYceMmPCP6YVqM3EvmKSm/YxdpWL/OZCsv5KvsvJlEEkbVtXk4v5HApMuvavXSHXdywtomhZi8PnlvGKUsMNrnJVup8/MvH+PUbB9nQ7ue7pxbZMxBiMW3V7x8+H2Nnb4izizmGmt189dAcH7uqD1G0+ktPzWU5MZvhqsHIah/y81F7VQ3T3+Smpur4nT+4Ju0BJ+0B50vOp/sFZajXgkv3ibiMV4VbNrSybyjCLetbOTyT4RvH5kmV6lw5aNHjXTaZTKlBslinUNOYSZf49okF7jmxwEK2zFy6QkfAwdlojn94apKxWIlvHl+gr8nNUr7GlQMR6prOoak0D1+IMR4vcef2Dlx2masGI1QaOoYJ955Z5Hw0R7rUoC/itjw5E0JuG4IgcMPaFuyyhGmajCwX6ItYNZPjcxm+eGCGbEWlM+h82cZx0zT54sEZ5tOVVVLC62U4s+UG955e4r/s7XlZ8pLfqXDtUBOGYeJUJNIllbdu6eBsNE/ApXDdcDP7BiP8/nfPkSzX2dTpQ9fhn56Zweey0RlwkC03uOfEIh/516N858QC3zo+j1ORkEXYN9SEXZEIe2wE3TauWdPEpx8aozvkpjfswmOXWNfmY3Q5z4m5DF94dvpFSjYLmQrXrokwl6rwj09PU65r6KZJutJ4WdbnQ+dj5CovrRE9L8oAVk179gWKMJcigi/ojZQEgcALSFF7BsI0+xx854TFGt83FEGWJDKVBiBwy7oWPnr1AJ/Y18+BiRQRt52GpvO9U1HOLub4zOMXafU5SJcabO0O8L3Ti3zj6AJ/cv8FHrsQ51w0x78enOXkXJaZVJm5dJnpVIl/fnaKYk19iUrTC1FTdfoiHp4eTxLLW9FSXbNIMpcqvnl8nifGEsxnKkwlLTWeakPjnpNRvnUiyif39fP+3V04FZn7zizyvx8Y4+h0BqdNoiPo4H89cAFFFnjfri5LBOTEAtOpMg+di1HXTKoNnffs6iLgVAi5bCxkKrT4HIiiQF3T+cKz04iCwKYOP3sHftAG9Dz5dV2bj5HFAr/x9VM8N5Xi6fHkK57TTKpMua69pnW45Nm2h6fT7Jk/R++nHmD207e/oYfzKvGGMePm0xXsski+1sDvtOGySUwny+QqDRLFOlcOhJlLV/j7JycQRajpBiGn1ZfY6nPgcUjMZSpcO9xMXdW47+wy/++b1/Pl52ZZ0+JlKlXCbZf5yJV9+J0KDc1gJlWixefgidE4qmawsy+0WsA/s1DgyoEQzT4HpmmJB9RUnVxFXZW40w2T+krbyU+Anwn7M19VOb2Qo9rQafbZqKsmmzr9uFaUgc4t5rhhbQumaXJgIsmRmQyyJFKo1LEpEm/b2smhyRQVVccwTCIeG00eBxs6fTw+muDtW9r5wsEZPry3l28eW+BcNE9/k4sr+sKcWcjy9HiKm9a18PF9fZyPFojmypRqGtu6g/idCgvZKlu7AuwfSxAv1Hj3zi5crxBVvhwy5QaPXYitthy8DC5ptu2Pw+HpNLphMtjk5mtH5ijXdYZaPAiCSE3VGW7x8AffO89AxE1X2I0sweMjCX71+n6294Tx2GWqqk622sDvUBiLFdF1nfvOLPPxff1MJUusafXS5HXw+IUYdkXk5vWtPDGa4OrBCOOJEtcON1Gua4zFimzu9PO/7r9Af8TF+3f3ciaaY2O7n2i2wtAPlJEuGbbtk2Nx1rf5ORvN4bFLNHkdq2z7Lx2cYX27j/VtPvJVlcMzGTa2+5lJlZBEgYDLxvnFPBvbfbx3Vw9/9tAopZrK1u4ga1q8nJrP8v5d3TwzkWLvYASPXeavH7tIolil2jB4+7YOTBMiHgetfgeqrqPqJrmKSnvAyfdPL65Gp985uUC730m5obG9O/Qi5+rl8MDZJXb3hYl4V8tHP79s26s+/SSHp9PYfoSE0mW8FN1hFwcmUxSrGtWGzpcPzvCnD46SLNa5aV0zHUEXJ+ez5Gsqb9nSTsRlo1hTMU0TuyzSHnBQU02uX2P1SA01e7n/zBKyKHDHljY+dlUfv3rdIH6nQr6i8n8fu8hUoozPYVHHW/1OdMOkWNO4sFTk9EJmNSUoCFZU9O3jUWRJWGUeSqJgpXw1nf/9wAWeuBBf1S09Mp3mzELuZc+12tCZS/9soyGXTWI+XaYz6MQmSQy3ePj7pyZYzFWxySI3rLVSh4IgcH6pSE012NrpY99whGimSrJYo6YZNHnsTCRKRHNVTAHuO7OEphv88f0jfOf4AnZJxOdQ+MCebtIllU6/k21dQT595yZu3dDKVKLMyfksp+dzxAp1Dk6m+NzTkzwznqSuGvzj01MoirBqOOOF2kua7mP52o8kAYXcth9nOH/u8Ly04kKmwhOjccpVlT+8d4Tjc1l+59ZhjkxnSBdrTCaKfPtElN+8cRCvU8Ztl6g0DG7e0ExPxMvXj80zlSpxYDJFtWGgm3DfmUVOzOfxOBQ++9QE4/EiZ6N5js2meexCgj39EUJuOwPNHhZzVTa2+yjVVO49vYi50h+5bzDCmzZa5C5FEpEl4YWG85JBoaYyHisRctuQJYGQy85XD82xtSvAYLOHNW1e+pvcHJnJ8DePTxB0KXSHXJyYy5IpN5hLl5hPV8jXNJ4YjRNyKNQ1g7DHhschs6M3xF89PoFuWipEpZrK2HKRTW0BJEHgTx8Y4+nxJIu5CookIIkiQZdCsW6tZ9BlW9XSvnl9K7v7w9y4rhW/U2FiReTjR0GWRDyvQUoULmHjuZirsqc/zPbuAGCx5i63rLwY4/EiR6bTL3rtzh2d7OgNYZhW8/Wu3gB/+8Q4b/3sQf7gu+dp9dlX9FZFrhluZk2rj119YYIeG5Io8V92dzOyVOAf9k/hdchcjBX51euHqGsG3zw2z3SqxOHpFB/90hECDpmJeIFotsKtG9u4bm0z2UrDop1va0cSRFyKyGK2iqqZnInm2DsYIuy2cdeR+RelSeyyxFWDEbb1BGldaXze1h1kffvLp2erqk688LMVklckkTs2t9PiteN3KlRVHUyrdeX3vn2Grx+d49BUmol4kY9e1csNa5s5u1Tk0ZEke/rD/NWj40SzFcYTRd69o5Nmr4O5VJnvnlzg1HyGqUSJ9+7u4eGRZR4eWaahGUgiPDoapyfiYmSxwESyyPG5NG/e1Mpv3TTMr98wRJPHQbPHwa9dP4ggmHSHXaxt8aGvkKoqDZ1K48Ui2CNLeYq115am+nlEoaby6IilxHT38QUWs2XyNZXhFi9uu8yZaJ4r+kJct7Z59bXTCzmem0ojYTKdKLFnIMLByRTv29XNTKpMulRnJlni6Ewamyzwzm0dXLe2mT+8Y6Mly5cu0x1yIQpWj2mprhJwynSFnIQ9du47u0S+0gABplNlbljXgjWkBLZ2Bd7Q+vI9J6I/ckCDz6Fw26ZWMuU62bJK3dBX9oM0f3jvCDPJMvsvJnnzpjZu29jKDWuayFQa3LqxlevWNJMsqty+uY1kvsojF2I0DOu+bPU5mUuVSRfrSECtrnHv6UUOz6TZ1mMRqnwuhVafnf6wi46AJX95eDrNVLK8khK2lLzuP7tEpaHhdSirIi6aYbLwIwYJPI9bN7S+5ra3S9Z4/jAOfuqGyy0rP4TukIsNHZaKTV3TmU9bN4humGTLDc5E81RUg96wm1+6po+rhyJoBiiiyInZLE67zL6hJlKlGv/89BTfODLPIxdiVBoqsiTikCW2dgc4G83yB987z+GpNN88tsBjI3HetaOTUwt56rpBslQnVarztcOzfOt4lLHlAoWaznuu6KJhgE0WETE5PJ3i0FQGw4QPX9n7EqLKdWuaCbltHJxKk6s0Vj3xl0PIbfv36FX+xAi6bUS8dkaW8rT6HPzGjUNs6vTxjm2dxPM1gi6ZU/NZfvMbJ5ElgYGIh7qmk6s0+J1bh6mrOsdmMzwyEiPosiFJAhGPgyMzWTZ1+EkV6/RFPNy4pplKXaMr5MRlk/juqSVy1Qbjy0XKNZ1/emaav3jkIh/90lHaAw5kSUAzrdaiXX0hMqUGv3P36ZWampu+iPtF53HjupaXTWXVNZ39P2ISyM8lTJPxWIFEoUZ/xI3boTCdKuN3KTgVkX9+epqz0RyKJCKKYBomF5byDDS52T+eIORRWN/m46Hzy8wki9yxuZ1fuW6Qt2/vYFdPGEyRfzk4w5s3tVFRNbZ0+mny2Hl2PEVn0MlSrsrXDs/z9HiSUt1yYDoCLvataWK4ycvJuQzz6TJfOzL3kkxKXdN/5vvd7ZvbVslkL4dotsJ3Ty3SG3GxsT3Af79tHQ3NIOiS+aVrBrhxXSsz6TJ9TW7+6L5R/uyhUe46PM/R6TQ3rm8imqswGi/hc9oIuh38r7dtZCFT4ZnxJF88OMvGTh/3n4vhtMmMLReJ56ucXcxz07pWOoNunhxPcmwmRbLY4Jb1LZyN5hhq8aBIEqcXcnxob8+LSkAn57NUGhprWi0n/KfJ0v+5Zdte9eknV2+sjoCTg5+64Q0+op89nveUppKlVQWP7rCLu47M43fK/H93rOfUfJauoItiTWMymeKGtc3Mp23EClUmYkXGYnmrJxGB7b0B5lIVxpdLvPeKbgIumfvOxpBFgViuSl0zCLlslmGTRLqCTt69sxNZlNg/lmAyWWJrd4CL8SI9YRe6YTKXKlPTDJyKhEtRkFbSt70/tJm/EANN7pfUQA3D5PHRODeua3lV+rc/Ldx7Zomb1jWvHk80azFbh1u8SKKALMkcnc0QcCk4bTIHJ1Ms5WoYpuXEnJzP0FANHjy/zHK+xt6BCOW6xvnFPMWGytqV1pR17X6WshV+6doB7j+3zPGZDJtWxBUGmhzs6gvhcyr83RMT/OLV/Xzu6Uk+tKcHuyJwdCbHmhYv+YrV9O9QJLxOBYcs8tiFOLdtbOXCcoEN7Vbvo6qbP1LJSRZF2vxOnptK0RFwvqi94lLDUxcT7OkL47T9IGI4MJGiyWtjIlHijs3tGCZs7gzw1MUEiUKdnpAbATg4kWJHd5BnJhOU6jIum0R30M1MskRX0MWbNrfz3+85S5vfyaGpNL94dR811eTUfJb2gIOgy86ByQQ1TQMEPvvkBEvZKg3DwKFIvGtbOyOxEooocDZqiVj0r9zzfpfC904usZSv8v7d3XgdMgGXgvuH7vlSTWMmWabjZRiirxdeKfp6Pg3tW2mhGWqxWLR2WeS37z5NX9iFKEnkyw3cdomuoB+XXWE+U2ExW+WG9S2YBrxpQwv/dmQemwyHpzMEnTbcdon7zy7x3l1dfPm5GW7b1Mo3jyZ4184uTNPkd29bwzPjCR48H6PZZ4m1DDR5afHZOTydplDTWMzV6FpROIvlq9hlkbpqMB4r0hFw8uiFOEMtHiJuO7IkvCLT/Mfh59Z4LuaqqwSi3k898AYfzRuLmVSZJq+1wT5+IU68UKPF62eoxUtbwM7vfvscH9nbixwr8JePXuTXrh+kK9jOY6MxFjMVHIrEmze1EHQ5+PZcFNUwODwLe/rDdASczKXLrO/wUq6pGBh87/QSt29uoz/ixudQEBBYyldp9to5PZ+lN+Tm3jOLFKoaiUKN//n2TficCv/v7T5i+dqPnfFpmuaqTNoLoRoG3SEXMylL4u55we/XG3tWZhc+j5GlPA+di/HHb9uIIAgkijUamsne/iBTiRJOm8idO7q4+/gCLkVie7efv76YZFt3gLdt7eD+s0tc0RfhbDSLYMJTY0nyNY2N7T4Cbht3H1/AIUuouoEomByZzlCu63SG3DR57dy8voXPPzvFO7Z1UNdN7j+7xNbuIBeWC2TKDc4s5Ah77dywtoU/vXMzpbqGZpg8O5HCqUg4FIkz0Rx3bG6n0tBe5KTUVB1ZFFjT6iVXsb/sRjqZKDLYfGnU4yxJyhc7Uh1BJ+1+x6rRf+h8jM6gk1ihysn5DJpu8hs3DuO0SYRcNoaafBRqDf7o3hH+8YPb+T+PjNHkVXh2IsHtm1vxOe2cWcghiALnozl+4You/vXgDA3VANFy9GyyRKHaYKDZzdGZLG/Z3M7Xji4w2OzB71SwyxL3nllmbZsfv1Oh2Wvn1o2tdAZdRDw2TKA37H4hWYVSXSPktnHV4Murcr1RkESBdW0+5tJlHj4fY3Onn56wizdvamNkOc9EssS3fvkqfukrx7ArIk0eG189usC2zgD9EQ9HZzJMJ8tohoHfpXBmIU+uquJz2rhmsIm+Fhe6ZtIf8bCQrrKjN8TF5SL7hiOci+YZi5W4ajDC6YUs1ww3rYruD7V4yZQbK1maKOejeZp9Dn7pWqsHqMXvYDJRZN9QZDU177ZJDLV4KdVUPv3QKB+9qo9EscGWTv+rItr93BnP52ufL/TGXvjaf7YIdCFTYV2bb3U9rl3TREPXWdfu5Z+emeJcNMdbt7QxnS6zb7iJTKXOE6MJJhIlnLLIW7d1cmw2w2isSF+TznXDzSDAmze2s6HDxzeOzhP2WBvpM+NJenSBz7x3K/9yYIa6ahDP1xhq9jDc6iOZrzKTKuOUJQQBFnM1/uQdG0GAg5Mp1rf5VtRCdJbzVWRR5KHzy5YwwIp03/7xJC1eB0G3QsRjxzBNFFHk5FwOj10m5LG9JnWcnxQvFJ4GuHldK1cPNOF2yIzFCrhsEoPNHk7MZSnVNRq6yGeemOChc0scmkyysdPPFT1BrhpqIui28dat7fzj/mkmEkW6Qw5uWNuMpul888Qie/pC7O4P8S8HZtndF6Yz4GQ2XWFnb5BnJyy6/UK2ysf39XFwMs3btnYgS+38xUNjfHB3D11hF+1+J/m6iksRmV9xjFp8Cr96/eDqOYiipa9775kl3nNF16r3fXIuS8BlY7jF8yOnVnzh2Rk+fefm13HFXz1ezoHKlBs0e+2r5/TuHZ3UNYN0qY5umAw1u/nbJya4dUMLx+eyfOiqHr7y3Cy/f8cQ955exm2TeP8VPUwmynzn9CJX9ASIZqvkqg1KdYPPPzPNW7d2oGk6ugHbeoN88+gC8WKNT+zr54aVFq7DUylU3eD6tS0s5+t0u234nQp/9ehFNnf6uWllSMPzuG1T2+r/T85nubhc5Mb1zZxZyHPz+hYuNVQaOjt7A5xZyHHVYISL8RLDzV4mkiVmUkVu29jKpx8eYy7lYE9vkGxVozviZmQpz67+AA+ei6OIAs0eG0vZCueiOaprmzkbzRHwKGzsDLCp04+EyT8+M81MosTVQ80s5Cp0B10sZSt889g8n7jmBw2yz49yu3a4iWimwi9e3ceBiRTtAQf9TR6yFXX1eX7hSL+pZJlr1zTTG/HQ0IuvWhf35854vpxxfP61/+gRqKYbpEqN1TaP52GY1tBkv0tB1Q02dfpJFBqsafFwz4kon3tqku3dQR4+t0zIY+OK7hAji3ky5QapUo2Ay4aIyf2nl9nSFSBfVXl2Is5orIBuWHTw/WMJ3HaJoFvhYrzEtm4/IZedJ0cTPD4a53fftA63Q6bF6+B337wOSYDPPzNDwGnj5FyWE3MZ+pvcfP/MIpW6RthtY02rj0y5zkDTDzaOwSYPLT47z02lsXdKnJrP0htxv3CixxsKURRw2SVmkkWKFZWA08ZIPI/fqbCnP0xd02j1O3ArIsfmsrxzWyf3nlnij+89zy/s7EY1TBQJwm6F0eUS+4ZbODKdJlNu0Bly4bErbO8JMrKcZypZpNww+NcD01zRF2YxW2Y8VuCR88vWqKddPbT5nXSFXaQrdfxuG0GXjel0mb95Ypxmr4O+iIeLsSJdIRcBp4IgwANnlshWG9y+qf1Faavne4PvPrbA9WubX1L78tjlS8ZwPo+nLiYYbPLQFbKyFQ5F5PPPTrO9O8BcqswjI3E6Ak6KDY2hZi9rW70cmMxwdjFLpWFwPprn0dEEdkViMl7Eocjkqg28Tpn/cfta7j4WpSfsRs5Cb0SmUNX43qkoHpuMTZG4dm0zH7+6l8dGE6xt8ZFbYfKenE3jd9m5Y3MHv70y2aZc03C8YAi2YZiIosDD52Nc0RvEZZNRJIH9Ywk+sa8fw4S9/ZfOwOxsuc6ByRQ7e0M8diFG0KWQLjX4uyfGqWkGXUEXQbed3/3WGbZ1B+gOugi4bAy1ejm/lOO5yRTbegI8fC6GjMlitooiQKrYYFOnn2avg1afg1xVo9lrOc4XlgqMRPP0hKzWIrdN4p/PTfN/f2ELIZeNmqqjG+bqffyVQ7O8a0cnH9jdQ7rSoC3gYCpRpD3gxOuQKde1VTEFVTP4/pkl7tzegSAEAF5T//jPnfH8z4xiTbOIKi8wnl0hF4lijUPTKW5Y28K/HZ7DJonkqxrrWzz0h11Mp0rECjUyVZXBZjffP7tIwK0w2OqhVNNxKyIV1eBNG1s5tZAjWawTdim4FMWq1eVq+N0Kc2nL2752TTMn5vL0hl38f2/dwFcPzWIAfoeCLIt84ZkpPHZlpRfLZKlQ444t7bT5ndy4toVnJ5KcWcyj6iYum4KmGyQLNUp1ndlMmUy5QU/YTaJYozvk+pmlaF8tHjy3vNL76kEUBf6f64cIu200NIMvHJimXNe56/AcW7v8nJzPcXQmg8smcW4xh10RWMrVCboVtnUFcNtE0hWV69c0cd/ZZZZ6anQFnYAlwvDtk1GuG2yi1NC45+QimVKDsVgBj03im8cXcNtE3ntFN1u6Anzh2SnetrWDt2/rwGOTEEURTTfQDJOZVJm7R5ZJlawJPJ+8dt3q+RyYSL1oRuK7dnRyZCZDvFBj4woh7XmYpvmqB2f/LLC9O4hrpeZ5eDrNju4ApmkynSxxciFHwKVQUTV29gTZ2BFgU4cfQRD4+/1TvG1LK1OJAreub2Y+XWY5X8PrVPibxycp1FTWtHjZ2uXnsQtJ3HYJNVdjbbOPoSaZZKlKsa6y/2KCa4ebGVnMc799iQ/v7eXDe7vANIn4bBycTFGsqYTcNv7i4TF2D4Q5Ppelze/k3KIVtXUEHARcNr5+dJ53bOvgl64dIFWs88C5JdpeMMHoZwnTNK2ReBE3k4nSigZ1lE0dPoIuG+1+J6cXcvRGXKxr9TGfrfKmDa187/QiTpuMqpsky3VCbhsXlgocnc6xscPHfWeW0HWD7rCbgNvO27a2EXDbuWqgib97cpyR5QLTyTIjS3m8doVyXaVhmMSKdVLFGvNpK9OWK6vcd2aZvQNhynWNdW0+suUGsVyNAxMphls8ZMrWOLIT8znWtftx2+TVEX4AFVUjXar/u+/ny8bz5whBt40b1700hVOu6bgUmRNzGbZ2BdnZE+D0Qp6JeJ4P7OkhUapzaCrDeqeN6WSFiMtGoa7S4XdyYCJFi89BqlxjY0cHa1p9fOfkPAem0jR0E5sk8vF9fRyZSTOeKPN7t63j9EKW4RY356N5fvdbp7HbZPYNN1FXrR5Gq2G8jysHw3z2qQlCLhulus7nn5nmQ3t7iBVq7OkLc/P6VuYy1vDgZKnGQrrKe3d18eiFOG67RKbU4Phc5kU9b6puIIvCG7KB11SdzzwxzjVDTbxpYystPjtPjCZ4biLF3sEwJ+ayTMRLlGsqVw2GuWa4mXLd8qIF0yRRrJEo1Ll6uIntXQE+88QkTpuErhtIktVLO5kocWoui9Mmk0Xjj27fwD8dmCZequOySfzKdf2cmM+xbzDCwak0D5/P8PYtHdgkgfOLBT5+9QA2WaSu6hTLdStStlmqRBGPHd2wBLqfHIuzuy/M0ZnMCmPxB8QgURTY3hN42fR4olinxfeTz2T9aeGF2q+PXYiBadLf5OGP77vAFz50BclinclkgccuJJAlgWJNpVBV2TcQIpavoxkGD52P0ey1oxkmDc3AqYi0+rw0eRRA5KNX9/DwuWX2DrZSrGqcX8pSacAdm9qYTpW5/9wS/2VPD8Wazmy6Qr6qIUsiqmpQ0zSmkyUEwcN/vWUN2UoDw7QEN3LVBifmspyN5vjqoTk+fefm1ZFl5xfztAWcNHvemLU2TUiXG/RFrLpyb9jLu7Z3sHNlKPWBySQRj51zCzlSpQblukY0W2O41cfVgyFGlwq8c3snj1+I4bHL+Owia1t8TCaK3Ly+haqqc3G5wN8/OUlnyMX2riBLuSoDTV5uWd/CoamMRcRzKnQGnQQcIgcnCmzrCvLWbW3MpMts6wrwrwdn+J9v28hEvMTdx+a5sJzn3Ts6MRGIF2q8aWMrO3pCLyIZZsoNYvkaE4kidlmk0tDIVlTUlZ7T0ws59q3Il/44XFLG84cZtJfx6jAaK/DMuJXqWc7XyFdVHh+NcWgqw2/fNMRErMi7d7Tz9aML9EXc7O4P8rmnpnjk/DK3bGhhIlFmOlnmbx+/yFWDTUTTFZq8dgaa3Tw3kyaWrzHU5GV0qciv3XWckNvBh67sQdNMhtu8nJnL8s1j8+wbsnRs9wyE6Iu4yZZV8uUGHptIvFDFaRPJVRp8cl8/ByZTOG0STkXi7uML/M4taxCGrRv81g2tjC7nafE7eP/uHrLlBkG3DVU3+NLBGUwTPnZ1H0+PW/2TPwlj7sdBN0wkUWAyUSKWr3H1UITr1zQz1OylI+Di/JJ1jN8/s0SqXF9hGTtZ09LMvWeWKNRUvn1igU3tfqL5OmtaPIRcCtFM1fpswWQsVqTZZ+ep0QSJQgOnDeazNda1+PjI3h4OTKeo1Bp4bBK/f8dmnhqz6tWbOgL0NXlo8zmo6QaPjSa4bWMrD5xbwu9USBbrXIwVWdvmoztoZSe2dgW578wSDd1g31AESRS4ajDCcIuHsPsHKdrHL8TZ2Rt82brnpWQ4fxi/edMwx2cyVBs6n33/NvwuhcPTKdLlBsu5CueiWVr9VvvIfKbKmhY3pbqGLApcOxzmYqzMRKJEk8dOyGPH71I4OpPmwfN1Ih4HmmGSLjfIVw0+sa+Hf9w/g8sm8a6dXcxnq2SKNUTR0gIu1VUcip2Qy876dktfemNHgJHFPHOZCr983SBbO/3MZcp47DKKzKrhVHUDQRB4x7bON0wWURQFrh22ZCjTpQbr23zsWZHCK9U1PrinlwfOLqEj8L7d3dglgXtOLbGcqzKfLnN8Lssf3LGOgFPhxFwOuwSPXIhhE2EyWSJZanB8NsNVA2FOzuf4lwMzLOWqiKJAulwnW64jSwJv29rG/vEUsijxWzcOc3gmyxXdYQRB4HNPT/ILO7v44oFp8lWNDW0+Nnb4+JfnZtnTH6JvRdv55FyG7d3BFxnQdLlOwKUw0OThXDRP2GPjybEEYY+N2ze9dBjFy+GSMp4vZNAC8PD/fOMO5hLDXLrM6HKBN21se8nP3rypjfaAk2iuRmfQyV8/NoEiWaLVn31qkoV0hXNLecp1jZ6gi8PTGfIVlc6wk68emqcj6CDostETdluT1xEIOGQm4xU2tvs4MZdFEKzPixVqNHttlKoqI8tFhlo8JCsNNncESJfqjC7l8TokHr8Qp6/Jw/oOHxOJMh/qtWqWf/noGL96/SA2WSBXafDXj49z6/pWBEHgkZEYG9p9HJhIMZks8ZbN7dRUnWi2yq0bWlEkcZUBLEsiQ83e122e51y6zPnFArdvbqM75KJtJVW+qy/M2YUcXzgwzUev7OOZi3WafTYM08Rtk5AEgXxVxedQmEyU8Dtt5Goqpmkw2OzhX5+bYU2zlzPzGQzDIF6okixWkSWTWKFCqarRFbQE9A/NZDg7n8flUPA5Zf74+yNEc5bAvl2WeHI0wR1bWjmzkGe4xYNmmHT4nficCls6/eztj/C1w7MUqw36mzyE3AqbOv0MNLvpCPyA0dzxAnbz81NE8tUfaOFGsxUeuxDng3t6LlmB+PF4kVxFZW2bj2ylzulombdt7UAUBS4sFTB0E03Tcdtk2nxO2v1OSqqOXYfBZhvFujV2TTes8WTHZ1NIokBv2I3HprCjJ0A0XeL0fI5mv4Pjc1n2DIQ4MZfFbRN48HwcWRSpawa5SoPJWJlGxORXrhvkwlKB0eUC3zkZpVC1NJzT5TrnFnJUVIO6qhPNVVjf5scuWw7l8yziH9fS9bOAIPyAiDOVLPKdk4ts7vTTHXKxoyfEw+eX+faJKG/e1MpUokS5rnHNUIRUqc5nn5xkQ3uAWze0kq+pHJlOUzIglquwlK+xtsXDyZURhd85GWV9u5dqQwPT5PxigTdvauXAZIqLy3kW0mUausHu/hCffniMiMeGXZbY3h0E4NBUilixxvv3dGOYcP1wM7JstRDNZ6ps7w5yMVakO+Qi5LZxaCrNxg4fWzuDPDuZwARuWNvCybnMq16bS/NJuIyXoDvk4vq1L5428rUjc1QaGuW6xoWlAg1NJ1Go8f7d3bhsEqJopV23dflxKyLXDEU4Gc3y4LklNNMgXqiztSvAQLOX3rCLaKbCcIsHv11iPFEmXakhSxI7Ov0Uahr1FbHwU/M5vnUiynuu6KSmmWAKtHodXFjK89x0moDbRn+Ti/PRPNWGwa/fMETQbcPnVLhyoIkvHpzlobMxJEFgfZuXkFvBNE36Im4+99QUVw6E+fXrh9jSFWBDu59bN7RirAg/yJKIIls6pN1h1+vW89kTdnPbRosRaZNFXDaJv3zkIk+PJzg5n6Un5GIyYU1TefOmNqoNnRafnafHk3zr+CLJUh27Ynm4XptEf8TDlw/Nsr7VT1fIatbXTAGbLGFXZG5Z18amDh8f3NNFRbNaRqYSRewSbOsMEPY42N0fZHt3gP928zDJQp3OoIO/emScuUyZKwcjFKoaT48n+ctHL/LcZBq3XSJfU+kOuYnmasiSyGCzB59DWVUfeh5PjsW5GCvyzHiSi/EiXzw4uyrfl6+q7OoNXbKG01hpxekIOCnXNRazNd6yuZ2Hzi0jCgKfuKafoMeGz+Ugmq3wlq2t2BWRak2lzWfjvTu7OT6TYSpZZkdvEM2EVp+DzqBV76urGocmU0iSiCAIRDM1rh1uQddNEvkq//zMLLFcje2dfooNnfFYkd+6eZD/dsswTkXC51QIuRWcikBX0Ml8psLfPDbOyXlLGOOqwQjDzV4WMhXuPbNEpaGzbcUoqG/wHFVBENi4Uicu1y3BDXGlRWttq5dbNrTyq9cNUlUN1rd7Wdvu5d+OzDOTtCL4jR1ephIlfHaZXX1hepscZKs6Q81uTi/myVZUuoMuNMPg7EKOpy+mmE9XeMf2dkaXSzw9nsIwTEoNjelEkVi+wq7+IOWGzkeu6iVVqrOQqfDUaIKIx0bIZed9u3twO6z65jXDEX752j4kUeCBs0urQhQfubKXTR0BJpNFblrXSkfAid+pYMKPbaV7IS6pyPMyfjQEQXhRsRvg7Vs7Vvv03r6tnaVclQfOLlGsacxnK5ZhEWAqXSHkVrjn5BK7ewIsKDK7ekNMJIqMx0t0h52MxUp47QKPXEggCLCh3Uu2onIxVmDJ76TJY2cyUUKWBBRZZC5d4TOPj/PBPb28f3c3y/kqbrvCX717C3/y4AUqDYM7t3XwoSt7Wc7XeHQkxi0bWrl9cxs3r29BkQQWMlXKdY0/fXCMP3zLerZ1B/kft68jmquyFCustq8AZCoNnptMcfvmdiRR4OtH5rhyMPK6NvGLLzDMNdXgpnXNLOcqHJ3JWD1sXjsL2SrFmsatG1t46Fycal3F5bCxkC5TrDQsZt9K3dFnl1nMVahrGqJpUKnruO0Su3pDPDgSpy/i4rmpLANhF4linflMhVSxgSKXKdd17tzWTqJoRYQeZ416xsAU4N07unhyNEFH0EFH0EnAqVDXdX77m6dRdYOBZg9HZjMcm0kz3Orj1HyOiUSRD6zMbvU7FfYNNSEJVo8nWLJ2siQyFisQcdtp9v1o1Zk3GqIo8PGr+zAMk2i2wqGpJJ99YgK3Q+YfPriDv3l8nBPzOb760d3ce3aJbxyLUqlbzuDhmRxeh4wkQrPPxrbOIKNLOZbyKju6A6QUkUy1jlo0cdgkKitCIX/24Ch2WUTVTTwOiX6fm5Jq1UvTxTrL+RrfPbWMLIEkilw5EOZNG9vpb/JwfjHPrr4QyWKN8XhxZcC0j2Jd5TsnFjg4meIz792GIolU6jp+1xvvtBiGybHZLB/e20O6XOeuIwss5yo0NJ3jczl+YYdFavI5ZNa0ephLVYh4bPzLs7NUGyrjiQIb2vzMpeu0+wUyZRG3IrGjO8C5xQLVhs6WrgCjS3my5TrH53I4ZJENrV5SZZVcVSVZavD3T01z6/oWtvWEyJUb7L+YwO+28es3D/HFA7N4HC8e4za2XOKm9S0UayqfvHYAuySuDHawMkm5iooggNsuE81WCLhsHJhM8gs7X1nb+Y2/Kpfx78bztb4vHpjBMEwOTqT4xtEFFrNVmt023IpErtygN+JC0w0CLpm6YY29ihWqJIsNfC6JTElFEkza/C4ETAqVBjOpMtFcjY6gi0KlgV0W2NDmpa5qbGj3sq7V6puaz5T5lwMztPqc7BtqwmaTeNeOLta0eGn1O/m7JycYaHKvRs3JYp0nx+J84ivHGV3O0xFwUKlrdAScCIIlZt4TdrGpw8/YcoHZlDXyKOKx43HIq57jFX0hlnK1l1+YnzKmkyV++d+OY1ckBlt8bOnyM9TsZj5TpTvoYndfiC8emCPitrGzP8xSroqqm8znauzo9mOXJA5OpmnoUKw2qKkGfo8Th00kVWzw9HgSpyywsd3Pu3d0Mp4oWaSgoQhtAQd7B0JcMxjig1f20FB1Pv/sNG/a2IZhwk3rm/nOyUV8doXxeImRpTxnF/PYJZm3bmnjr9+zlbuOzFNXdZLFBn/35DgPnF3mxrXN2CSRpy4mKNa1FXk6y1mwhB+siCdXUXlmMkm+qv64JbokUFF1vnxolplkhS3dfv75QzupqYY1X7XFGsq8/2KC1hVHwCZJiILJmajlIEwmKnz+wJQ1CFsRmUmVqWggCRK3bmilUNPZ0OpmoNmNJIDXIbOu3Ue2qiKLAoWqyv6xBOOJEodnMrxtaxv/ZW8vu/pC3LapjZ29ISbiJTqDLkIuG595YpJkoYbHLvPlQzO4FInbNrXxX28eZjlXZTxe5Dunom/MWjY0LsYsMXXdMLnv7BK/sKOTrx6ew74iCjGdLJEpaww0exiNFxiPlzg8nbUGU2gmU6kyYY+CxyHT7LWTKjf4xL4e1rf7mElXMA04NJ2hplmOzFSyzLVrm1FkGZcicngqgyQK3PWJPfzurcO0+Z1cNRhCkeHZSav2f9VgBLsksqHdz3+7eZhKQ+N3vnWGizFrePsvXNHF0Zk0+8eSHJ5Kc9+ZRX7jGyc5F81jmiYBlyVi8dxUipDLkmK8bvil84RfDpcjz/8AuHIgxNlojkylwUev6iVerBHLVbHJEl1hF05ZQncaFOsa4/ECfofCyFKRtoCdX7t+mH89OIPT7qYj6CJf0yjWNa7sD/PQSJxiVaWqGsiSwMhykbaACxBo6AYeu8TpaA5dN3lmPInLLtPQdN66pYO5dJmxWAG/S2FkKc/GjgD/9MwU/RE3M6kyWzv91Bo6xbrOJ68dwGmXOTCR4uqhCF89NMfbtrYznSrz+IU4u/tDvOeKbm5Y28LIUp6nxhJcv7aZwWZYzldp879+5DLTtEYe3bCmme6QkzMLefb0h/nMExN8YE83vWEPvSEXi9kqSytRaa7SYHdfkErDYP94Et2E7pCTTEVFN2XylQZX9IYYirh4aGSZJo+DbEXlzEIOHZOhFg+ZUo17TkRp6NDitTMeL3LX4QUylTrnojr/9PQkHrvE0+NJ2gIOXHaJs9Ecb15pthcEqDQMmrwONnX6cSsSo8sFdvVGWN/uxW1XSJXrKJKIXRI5s5Cjze8gX7U8cVEQiHjs7OkPs4cfZABi+dpL+owvFdx7epEdK60rE4kST40l0A2DY7MZZjNlppMlrhwMc3zWErTY3RckXqwy3OIlV2uws8fPfNYafyUAuqETcMk0+520BZxMJ8sU6wZz2RJ9TS5OzmUZaPZSrmmYhskVvSFafXa+cWwBpywyl6kgSSJv29pBulynruo4bRLfPrFAtdFK38rIs2+fWEASrdm2v7hvAN0wrefUaVsdkvCzhmaYlBvW4ADdMNncaaVuTy/kaPHZyVVUBps9XDUYQRAE/vyhi8SLVSTAMA0iHovgFy/UkDDxOa0JTn/7xDRBl8IHdndzMVZgOlWlN+zCbQOH3UbIbePcQo4Tsxk+elUP3z4R5Y/vO0+iUKPS0FnKV3nL5g4+sKeXQlUn4LKxod3PVw/N8d5dXRRnNNa1eUiXG2i6wXi8xJHpDBs6fDQ77EQ8Nt6/q4eesJOGbnAmmqMr5OKOze08ORYnXarz7lcRdcJ/MOP5n1FpqKbqlOs695xc5DdvGuLe04s8O5Gm3W8nWWxw+9Y2vndyialEiSavjWy5QaGq0h60Y5dlJhMlplNlXIrI+HKRiNeGoevce2YJVYdKXWfPQIjlXA2HIhJ224jnaxRqKrduaCXgVDgyl+HxUWtyxXVrm7nr6BybOgJ852SUHT2h1ekdb9/ajseusLPHmvryLwdnUARo9zup1HU6gpYRHGrx0NBN3rypjalEkaBTplTXsEkix2ZXBNRLdSIeO02en1468fyiNWnkeUGG5XyVQ1Np7tjcziMXYnzz2AIf2NODJAj84tX9NPvsfP/UItu6/DxwLoZDFljT7EHXDGRJwhRMTFOgXGvQUA0iHoVaQ6OiGjw5GseuSLgVaz7khnYv+y+mUWRo9tpZytbpjjj5tat6+fbJRZLFOnZFpNnrxO9SWM5WafI5WMhUuG1jK0+MxWkP2PnmsShf+PBOilWVi/ECsUIVhyzy+Gicd2zrRMekyevgnhNRtnUFAJM/vm+EVp+Tm9Y388UDs/zivj7Wtlnp22cnklzRG1olZjmUSy9ZFcvXuLCcx6lIPHkxwcZ2H56uAHPpMg3NZF2bl6Vsha1dfp4cS2CXRWqawUyqgqbpNHSN+WSJZFnHZRPoDDioaSbdYQ+JfIX5VJmFdIVKQ6Vc07llYzOzqQrFusH5xRxbOoPsHgjzzHgSx0qNs8XnsMZnZauWAREF4vkau/vD/PK1AxybTTPU4mFTh5/JpEXMm10Z7DARL3LPiUX+xx3rf6xI++sJn0NZJeMcmUljW0khr2v18PD5GFs6/XgdCncfjyIIUGqoXN0fZDHXoDvsIlttcH6xgGCYlA3IlVUiHoVEUUU3TO45FaXSMMA08Tkknp0q4FQkAk4bqmbQ3+RdmQQkMBEv0RN2ki2r+Bw2PnnNAN89HeXYXJaNbX5afXbqms74coFUuU7QqRAv1Hjg3DKzqTJv3drOpg4/y/kaYbeN751ZJF9106xIXDPcxHdPRXnHtk5294Vfk3rZJTUM+yUDr6+7zvp3//6f7HN+tviZDa41DJNPPzTKe6/o4vwKo6/d72AxVyNTqXExViLstnNsNk2730nYY1spvhtc1R+iquo8PZFCMA0Ws3UCHpkmrxObLCCZBmcWS6xr83Ljuma+d2qRjZ1+yjUNURSQBSvNN5koslyoce1wE9s6AsRLdUJuhbMLBda2+8mV6xyeTfO59++gb0XsYCxW4GtH5rlhTZj7zsRYWplpqOomN65rZn27nwtLBQTBIkrVNJ1DU5YcHVhC+GG3NcR7NlWmN+L+qQxnVnUDwzRfVFseWcwz3OpFAL5xbJ7NnT9otP/KoVlMw+DwTJpkscGtG5p5ZCRBNFNG0y2ZsAvLebrCThRR4oZ1zTw1luDRkThbu/0s5WtU6yo2WWGwycvBqRQht4ymm1zRFyZVqrGtO8CTownKdZ2/ePcmvvjcHMu5Kn6njYGIh4vxAqW6xh2b2/nQ3l5S5TpfeHaGZKFGrqqyscPPh6/s5bnJNFf0Bonmqmi6Fd3ef3aZiNtO0CUT8drZ3R+hrunIorhKxLoYKzLQ5P5hybJLahi2qhsUa5YW7JHpNE+OxpnNVBhu9mKXBQ7PZLhuOEJVNbErIh1+O//87IzFLNcNeiMuJuMlEiUVpwJ1DYZbPMiiyFKujM9lI1uuU6wZ9IadbOoMEM1UGWx1U6lrjCwV2dEV5Ohchit6Q9bMVq+Nal1na3cIl03k8HSaSsNq5j89n0U3Bf7mvdv42ycm8DsVbt3QyuOjcT52VR+CAE+Mxjk1n+Pm9S1s7Q6+YcOwizWVh8/HyFcazKbLTCXLbOvy47Er7Btu4t7TUZ6dSOGxyfQ0eSjXVYaaPRyZyXA+msOhiAiAyyZjVyTmMlU6A3au6Avz4LllaqpJf8RJqqzSHXJRUTX6Qm7CXgceu8yZhSwIAtu6/PicMhdjZRyyyHyuyru3d5Io1HhuOsNHruzl6GyGvf1hdNMkU6rxyEicnT0hbtnQQmfIzdcOz6EZBh0BF70RN6lSnasHIzwxGsfvsq0qP63gFdf8P1Tk+Z8FdU1nIl5iY4efvQMWLfzIdAavQyJXVdnQ4ee5yQYtfid+m4QiSyzlKjQ0jaV8g31DEb5yZA6HIlGtazgUQIBCVUOhBpLIQLObvoiLd27v5IFzy+QqKmcW8gRcNtoDdqpVjZphggBdQTeiIPLlw/NIgkmzzyKuDDa5GdVU7JJAckUFqS/iYbjFy97+EB0BD7duaAPBaodYTpU5OZ8j4rUzHi8wmyqzqdPPmlbfquEs1zX6wu7V+txPk8r/cmzSfFVF002cNokb1rbwnZNRBpo8uO0yQZfCV56bY3dfiCsHHKuCCOtavXzn1CKTyTyz6QpTSWsE1li8iGCCblhGuaFZ6VXMOrphIAmwud1Hpqoz1OxhTYvHcnwCLs4sZPlf941QN0SuHrAeclmy9IO9Dpmj02nssojbLiOYBppu0hN20tfkpjPoosVf5tB0mi1dAVp9Du4/s0yr1876Dj+jywXWuO3ohvkSUtrzBKJLGYokEnLb+KvHLtIXts73e2eWCLoUGprBzetauHZtE0+NJnlkJIZTkZhJlugPu7kQK66mr502gUbDxOuQ6W/yEM2WMQWJUl1DFEScsoHXITOdLFFu6IzHQNd1CitRvs+pMBDx8LVj84TdCh0BFz6nwnOTKUzTYHS5SG+Tm7oOV/T4+cenJ/HaRURBoC3goC/ipljXyFUajC0XaA840H98cPO6Ilms89C5ZfYMhEkU6iiKyB+8ZQOf+PIxeiMunIrIM+MpDNNk35pmvHaZu47MMZkskSmpKLJIsW6gSAKqoREQRWwiRLN1ctU4rT47y/ka08kqLQEbNllgMlEn7LbxgSt7+f17zrGUrzHYbA3Y3tYdxKFIPD2eYE2Ll0Jd5WP7+rlyqInTC1n2DUXw2BW+/NwMe/vDvG1rBxfjJWKFOggihmFSbRjs7A3gd1pzjZfzVeYzFd7ZE+KuI3O8f3fPq16fSy8HcxmvCMOw0rUA161p4quH53nzphauX9PMxZjVayWLAsWqynKxhtcu0ep30BvxcN1wmJFohqpqomkafRE3umFtxK1+OxVVJVGoc24+i10R+fKhWSoNjeEWL/sGIuztDzGZKHN2uYBdNEkVG0iiQSxfpdVv586dXdgUiaFmD3/9+Dheh8xAk5fJZJl/OzTHYyMxzi7mGYh4OLWQY127lydGLQ/x9960lg9f2Uub30lvxM3mrgCdQSfTydLquT89niRerJEu1V/XWYeFmsrx2Qy7+kKrI6+cNomBJg/pkkVlP79YYFOnj1PRHE+NJZhKlMhXVdKlOhG3TE0FEZPhVg8Bu8RCusJyvorfuTIKyQTVAKddZDDsRBBhJlNlXYuHZydTPHkxwXymikOR2NDux67Y+NiVPQiCQFU1OBPNs6ndx9WDYWRJ4Ew0TzRXpcnv5F07u8iUVE7O5bjnRJSBiJs9/WGqDYOLsSJTqRK5msr+sbhVr83XOBfNUaipPJ+N+v7pxR85GPlSgaYbq8/Cmze1Um5oPDOR4MN7uhmJ5onn67xjeycCAl6HhMcu4lCg3W9nKV/Fa5eRRejwu+gKurDbBIo1jcPTKXIVlVKtgaoaSKKAiUCuUudirMTmdh8NVeea4SZafA6KDYMmr51ovkKmVONirEzQpVCqq/gcMvmqzp3bO/AoMovZKn6XQraiMhYr0xNy8mtfO8GjI5Yw/bePR7lpXSvbuoJ4XicBkFeDJq+dWza0YJpgVwQCThszyTICFlP+qYsJ3rOzG1GA75xc4IsHZ1jb6mUo4mVbl4+1rT4Gm930hlzUNQO7ZFLWrIgtV9XxKBKyKKEDpmFwdiGPyyZw28Y2SjWr3zjsVgi5bKSLde4/s8REvMjGDj8ORUbTQBYFzi7k8TtsBFwKVVXjhhUyXKWhs6s3xI6eEPFCjV/Y1U1d1/k/D49zdCbNP+yf5OmLSXb0hFZbcZ4aS7CQ+fGDs5/H5cjz5xBfOTTL9u4AYLWwSKLAYq5GqlRHEGBtq5ej02k8dom5dBm3XcYmCuiGyWy+RrKiowhQbMBUooxNFjCBZLGBqoLHKVBvmEzGSwTdNgwDIh4HD5xbZF2rH9Mw8dhETsznkSUBEbDJEk0emYVshXdu7+BcNE+53qCqGrx1awfH57IMtnhAMLm4XMClSBRrKk+OJvDaZTTDxLsi2LyQqdDQTG5e38qx2QzBFfWbyUSRa4ebcNtlFjJlDk9nWNfme4n+6k8Dum5yJpoj5LLRGXKt9no6FImJRBHdNNnY4WOoycPIcoGesJM/e3CM84t5Ak6JZEkn5DFoDzrxOWRG0mUaBvQ3OZlJVZAFDVEEyQBdNzg2X8DvkolmquRa6ghY7NsHzy1zMVZgc6efrpDE3cejLOeq2G0Sv3njEJ99aoLT0Tzbu3zs6QvzyEiMrV1+7j+7iMchc8emVgJuG6IosJytMbqUZ7jFy5s2thJ223ngzCI9ETdBlw1RgIfOxWjzO7hmuIkb17Xw/VOLvG1bxxu6if84TCZLJIt19g010RfxkCtrtPgcdAVdfPf0Mtd2+3hkZJmHzy+jagaZiopTkWjoAj6nbXXyzGy6RNAprahKQaqsYZMEdB1qoo5TMSirJkJZxyYLPDuZotLQiR+tkq1q9Edc9IRcqLrBUIuXkWiBeKHGc+NJmv12Nnf6OT6X47dvHiZdVvnuqSV+++Y1lGoqTR4bmzsDjMUKJEt1fuGKLmqqTixbo1z/wSDnNwKtfieiWOOZiSSVusbR6TRNPjuKJPKNYwsMNXlIFGvYJBmbLHB0JoMB2EQBm00kV25QqFnM7VjRYmyHPTYqms755TI60OyRiRU0nIpItqxxYjbL2cUCN65t5vRCjiv6grQF7ByezqLqBoMRD9t7Q6xp9TKRKKEbOoen89Y9b1cQRIFbN7ZwejKPYYIowHisSKJQY2d3CJsEu/rDzKTKZMoqU4kSggAfv7qPiUSJw9Pp1UEDPw6XxBPxvCzfT0uS7z86cejGdS20rNDtD06m+NXrB/iLh8e4dm0zv7ivj8cuxBmN5Qm77LT4nDgVgUpDYzRWJFNSaQ/YyFVUtIaJAficCvlqA0EQUIFc1UTESkvECg3CbgW7CMW6yd6BEHcdiyJi4LSLmIZAsW6wq9/L904u4HbYsIkC6zsCLOcCOBSJcl3nidE4NVXnyoEIh6dTLOUqOG0KQZfCu6/oYu0LNginIuKQRQ5NpZhOlvE4ZLZ2BSjUNJo8VlTUusKwfb369oNuGx+/up9nJ5KIokBvxI1dlrh+bTPFmsq5aJ65tKW884HdPUzGSyxkqjgkgUrDQJEg4LRR1wzOLhaIuGxUG3XG4hUEwOuUSFV1mj0ymZKG1yEhigJhj8KByRSqbkVHTptMplzn1HwGzRD4i3dt5s8fHmM5XyOWr1qTOiSR0eUCo/EShmlduMl4iU3tPop1HQMVhyLT7HXQNGQn4LLRFXIyHi/icdpw2xQKtQY7ekKsa/OxmKtyYi7Ljp4gu/qCnJzLcNVg0890CPmrxdpWH2tXpnvZZYk9K2SvhUyZP33nJuYyZb51dJ5otspbN7fxb0fmcdklXDaFVLGKLIJg6GgmLJd03IqAgXX/LxVU7CKoKiypJpJgMXA1DfojLuYzVaqaTqvPgSSJjCwWcNgkOoNu5pIlTsxl6Yu4ydU0blzn5qZ1zfz5Q2PkKiobO720B5w8diHHyHKOzR1Bbt/czvnFPA+fj+G0ieztb1odOv1GIpqpMJMsIUsiyWKNaK5KpaHjlEUkSWQg4iFWrAGWg15WNQwdWgMOVN0g6JIp1DS8DgWPzWS5aGVuBMAmWKREmwR1zUAw4aGRGJ1+Gw+fj7G1O8C9p5cp1VV29QapaybjySJ1w+D+s0uE3XY2dPjY3R/iK4dm2dUXxiaLTMbLllCMYE2tafbaODGXZTZdIVNu8Lu3SVw9GGEhW6GmGvSE3JxfyjPY7OFbJxZe1bpcEmnb52X5flqG7uCnbmD207e/rmm9NxKDzZ7VKG24xct9Z5aIFeqMLhf54oFpDk+n8TsVtnYHKNY00mWVVFkF06qxtfgdOGwyQZdExK1Q1y3puI6AE0WETx2+CwOQJHDZROyKwBMXU0gC3HcuhmoY1FTQDIGw147XJvGNYwvcuLYF3TT4/ukYXrvEzevbeGI0QbbS4CN7e/mHD+wgV2kwm65QqqosZSuEPbbVqKahGUwmigiCgG6a1DSDd2xrx+uQeW4yxcZ2P9mK9eApksi7d3bR5H19qPznonnOrAhET6dKpIqW0MNcusyzEymevphgZDHHYJOH759a5BtHZwm5Fdx2CY/DknNr8Tv53TetpdljI16so5vQ6VPwOqxNxyFBrqLxW8/dhW6Y5KsaNVWj2ICaDoem03jtIl6Hwvq2AE1eG7999xk6Ak4+fedmTi3k2NYVZEd/mN+7bT2lmk7QaeO2DS189r1b2d4TpDPo5NxinvtOR5lLlWny2kkUa/z375xjdLnAJ6/p5/h8mntOWNJxF5YLBF3KqiM7Hi/jssmcX8wzmSi+Lmv978WTY3FmVrRfT81nufvYAvsvJrgYKzKXLnP3sQVOzWVJFGqYhkFDN2kNOPn4E18lUaxRUU10Exx2hXafHRGQBROHAAGXjE20yhl2m0iTR8YmCYTcdjxOGQSRzpATEQG/S2a4xUtNVbmwlGc+VWJNq5eNHX7+9zs28fkP7WRkqcD/euAC85kSDU0j6LLzm18/iaqapIsq/7B/kq6Qi7WtPq4diqzW4+45+eo28tcTpbpOZ9C1WuvvDDj5f64bYF27nw9d2ct0qsJSrkFD1RAlkc3tPuw2kWpDQzOs/tvfOngXkmDidyq47SJuu4jdJuKwi9jtMiG3Hb9TxqkIGCYs5xt4nDJnowU8DpnBJi8jy0UKNQ2fTWEhVbaEWWyWHOb5xQK/fsMQfpey2jq0vs3LXUdneej8MmeiecJeG7t6QnzqTWuRRYGZdJkWn5Ox5QKn5rMIKxwhv/PVxZSXhPG8jH8/mrx23rypnfdc0c2Wdj+JfJ10qUFdNfnWiQVSpRrjsQKJfI0Ovx2HDGcWCmi6QaWhWyOb6hpzmQrz6QqY8MtP3wVYIuAtPjupQgMTy5DG8tZGFHIpbGjzWsNsC3UMw2A2U+GOzW28Y2sbdx2ZY/94nO6Qi2SpRovXzlcOzaySUv7ft2zgfbu66Ai4VnvZVN1gLm2l0U4v5NjWFUAz4drhZq7oC1HTdBayVj1iIVMhlq/y5edmX5d1HWh2M9RisYMDTktHs1BTwTQ5OZ8lU27gtSscnEoyEstZ2qiGQaFh0tBNKnUD0zD50sFpotkaVQ10oKabFGoG8ZKKIoqIAvzas3eBYBJ2KjR5XQQdFrEi5FSIZmtc0RtkU6eP9W0+WrwK7T4H/RE3hgG7B8IMt3j59skFOoMOijWVuVSVP314jHft6GTvQISQS2EyWeaBs0vcfTzKYraKyyaxqcOPQ5FY1+rD71DQDJNnx5M8diFOq99BvFBDMwx29ATpDrnecFH4U/NZ8pUfiDXs6Q/TvZJeW9/uI+RWyFXq/N49Z0gVGwiYHJhIYlNkdvSFmUqVsYnwyaf+jXrDwGMXafLYaPXZKdU1DEAQJfI6ZCsafodIXYWQW6En5MIui5RqKmG3jUy5QbqkUtcNzi+ViOcrVFRrrVTDYCJZxutQqGkG/7B/ijavnX0DEXrCHvqbPByYSOJxyJTqOjdvaOHdV3Tz5FiCzqDTGg+4vo1otorP/sZGnqpu0B5wkizW8TskPnntIDetb+XRC3EKNY0Hzy7jtEm4bZaMnyzCeLIMmFTqOl6HhGSa/Oozd5EqNJhIWOtiGAaVhoFdEsmUVARMtnQFuHqoid6QA82E2WQZ3TDwOiQuLOdZytVw2SUW81X6mjz0hD1cWC7yyPllhprcfObxCQTT5Ir+MOvafYiiwMeu7ONXrh3AbZNZSFeIeG3UdANJFAm6bEwmimzvDbKu3Ud7wEGhqhJyvbr2oP/QxvP59O1Vn37yjT6U1w01VefEfJbr1zbTFXahYbKtO0BV1ZFESzh5a0+Ihq5zdqmEKAgEnTISJg0NxhIVAk4bEbcdVQd1hdwnAMu5GrMpK7WlCFbdU5Gs5vtr1zWTrzZYzNUIOCXWtXlQZJFnxtPUDJOGAZIgIAgQy9V4/GKCp8eTlBsav3r9IPOZKo+PJclWGnzx4Ax/8L3zPDEaJ1Gs8YUD07x7ZxdLuRpnF3Is5az0qM9hycg9MRrnwnKBsViB/tdJONshS5yaz9HQdKqqTq7aYP9YkslEiUyxzoev7CFbaZCvaDQaOrlKg8VslVafHU03sMsmx2YznIsWaBg/eNDKdavnVRHA7xBpWFwXFEkmXmyQKdeo6waiAMvFGi6bxGy6wj0nFnnwXIzZTJXReJGPf/k4u/pC/Je9vQw0eYhmqqiaSWfIuTrbUF3Rr93eE+Ta4Qgf3NNDvtpgbZuXX71+kIFmi0n7gT29/Pata9h/Mcn1a5u4YW0ziUKNZq+dW9a38qXnZnEo0mq2442Cxy4jSz9IHbts8moq2S5LRLNVBiJe3ruzE1EQaPLa2dDiRTN0/E4bg00e1rVb9XENyFYtIfiLyQrFqo5TAnPl470yVDWrx6NcVRldKlCq6dR1ayh0slgjVayvXr9z0QLbukPcvrkDp02mJ+wmVqjxq187yUy6xHdOR9FME59D4arBJiIeB3v6g/Q3ufjW0Si5skq1oTO2XODJsTgNXWdnb5APXdn7s1vgl8HZaI7vnYpy68ZWBFFgKVdFFkXa/E5294UQRRPdMNFMk+l0GUEw0XQDUzdRZJF8Rae+Is9bNaz1TBbqlFZ8oFRZI+gUSBQtxaLj8zlm09YcX82AmqqyqT3IQLOXnb1Bmjx2a8SZS0EUoDfsZilX5e4TUSQRjs/nCDhlZlIlHh6JM5OuMNji5b27uhho9qEaJqIgsKXTTyxfQ9V08lWNXEXl5HyWRy/EeffOrle1NpdEzfP1wvNp4N5PPfAGH8nrB5sksqs3yLHZDLpucNVAhPF4kYaqce1QiAuxMr//5jX8xtcLaJqKKFqDr7UXCE6XGyrlhor+gs8VAN1kpRZhbTYRnx1JtFpaTs1mGFkuowhY9HsN7LJBvtJA13Vi+Rp/eecWfufbp6lrBm/f2sG2niCaZrCt2xqNFU1XuHVjKwGXtSkPtXgwTUsSThSsaOKpsQR2ReLa4Sb0lXmLwy1WvWg2XWZX3+sTDQmCtVl/+blZPnyl1Xv3jm3tllZwqsR3Ti2SKNXxu2TqKwax1efAJomopslUqoJugCBCd8DGUr6BUxaJeESKdWhoGoYAAadlVjMVFROo1nVqOogiOCUBUwDD0EmXG/SGneRrloLTli4f5YbBidk03z8VhZVU98Z2P1XN4O8/sIN0WeXJ0RnuORVlS6cfv8uOIsL/fXScX7thgC89N8t/u2XN6n20lKsy1OIhHy9SWREBr2k6H9zTw4GJFD1hF/1v4GDyF851/WHUVJ1iTaPF7+DApEa5rmMiYLfJZMoqsXyV/ReT3LDGGqu1ud3DbLpCoapS00DCKlMogoAsQMOEesPAJUPdMKhpK4xTh0C2ouO0ybT77cQKlpSh12mjrul8bv8kqm5w7ZpmdN3gyoEwnX4nx2ezLOdrtPoc2BWBWL5GyC1Ta5i8a2cHkiRZcnwno1adbiQGCAy+wYPgt3UFGWz28tiFOP0RF/+wfwqnIrGl289zk2nOzGeRJYuJm6s2EBERBJGgV2E+a8lnSisOuUOChm6ts8O0ShMSluPYFhBZytZQTWj12rl6yOrXFIGyqqNI4sq4RY3rh5s4PpvFLYuouszuvjDZqsqf37mZR0fi7L+YYrjZWrc9A2HuO7PEucUc1YZOV9DJuWiOseUCH7u6j5GlAmBSU3VuXt/Kyfks3zpuiaG8Ev5DG8//aCjUVCRBeNH8yuem0iznq6iaQbpi6aZeORgh4FDYNxzmTLTI/WdimIDHpeCxSxiaQXvIyan5PA0dVN2kpoFDBuMFkWdfxMlcuooI2CUo1jTKDY1MpYEsC4TdEi6bRKmmURJM/HY3O3qDjC4XiLhtfOPYHLppsJitsJSrUVMNmj02PvKvR2jzufjIlT08NZagyWPnPTu7iRdrfP/04mrTu9suc81w0wqbuMqR8zFyVZWPXNlrsUfzVU7NZ3nXjlfnKb4WCILAlq4Amzv9VBo6brvMjetb+dxTk9yxqY2RWJG3bG7nzEKe5+JJClWNnrCLWKGObEKmbJEgAHJVDc0ETTWoZw1EESJehbpqUlhxywWgza8QcMgkSjrbe3xsbg/w0EiMbLmOz6lglyRMo8GBySRLeUtUvDPoZDxR4rZNbThkiasHwiBawv0HJlNs6w6wvStANFuhJ1jDYZP56/dsYSlXJeK28fR4kmuHm1AkkTs2t2FXRJ6dSPGhvb1kyw1curQ6Cs4mX1qJqmLNqnXtHQjjUCQ+cU0/oiDQHXKxb7gJr0OmUFX528cv8sxEis6AA2OlrjWZKKFI4ur9rgOlhnXPN/QSIbeNXFmlrpuIpknQJZGq6PgcIpJoGc/zsTIy0Oy343bIRLM1itU6N69pYTpZ5OxCHhN4zxWdvHVLK984tohLkTg5l0ORBJrddp6eSGJXRMIeO0GXgmE4aPM7WcpX+eS+Pp64mGJt28+WbTuVLDGfrnD92mZEUcDvVHjblnb2X0ywscPHt44vUFM1olnrPU+MJqhrOiGXDdXQKTcMnLKIS+ZF2Sy7LGCYJlUNnBKsaXYzlSgTcNuoqRqCCKYOqXKdJ0cTtPgd5EoNZpIFBGBHVwDVMNBMa2ycgEzYJ7OtO0CyUOe/33OOWza0cOeODn7/u+cs3kdnkGSxTlfQhSwJjC0X+eVrB3h0NM7fPzVJR8DJHVvaV9tT1rZ68Tku1zz/w2E6WeZMNMfYiujx+UVrjqNLEamqGnVN57unozx6PkasVOOfn52h2WcnVamBaaBpBpmyyny+weGZPLpubdpORbKiHg1291mSXA4ZYsUGkggqIIsQdIjkKw3cdolKQydf1kkUGgy3Wvq5AY9CLG+1p2zrDjAaK+K2KQTddnb3h9jRHaRY13n75nb+x+1r+d7pRTZ1+Kir+oq8n8k7t3USctp4fCzG905FOTJjkVk6Ak7evq2Dj13dhygKFGsqqUKdWkP/Ucv1U0FDN7jnpCXOfWYhx2Czm3LdYCDiYTFXpT1go1zXaPPbMQyDrqATbSXt2tCtCLZcN1YfNA2wSQKJvEqmoq1qvwhALK/SMAVEwWR0ucBspsJyoY6mm1ZaK1NBEEWOzVlj5bZ3B8lVG/zydQMMN3sYXcrz+QMzPH5hGbts1YWv6AnR5nciCBI2ReK3b16DJFq6qzdtaAETvn9qkZlUibVtPk7P55hJltF0g6DbRrPPwTePzQNccmxbmyySq9SJrtTBHYrE14/NcWohx/HZLH907wj/56FRHjq/jK6bVFSDibhFelJWrssLd0CnBGOxIi1eJ6linbphYpdMaiqkKjqywIpAvsBy3oqqTKAv7OC64WZqDY10WeOpyRTpsspv3DBE2G3j6bEkIHLn9g6CbhsfurKXnogLDYG3be1EFEXetb2TaLbK1UMRLiznWchW+ItHJ1YF+n+W6A27VyUqF7MVjs+k+eyTEzx5MUGmorGjJ0SloTPY5OKJsQSyCA4FYoUasaLKzeua0EwTSRTxOuTVJa6oK+UcoK5bAwiavZaox1LOarMbiLhwK5AsNTi9kGc+U2UuXWEiUeaZyTSxQoMmrw23TUY3TCYSRaKZCuOJIoZp8v1TUf7w++fw2GQCLgXNNHDbZQaaPHxoj7XuC9kqVw9E+NhVfbxlSzsXlgrcfXxhlQzY5Hl12azLxvPnCFu7Aqxr9eFYUYFZzFaJZio47TIBlw23LBJ2KnQEHPSEXHjsyqoyUKFmUKzpGIaBvLIHihI4ZchULQOkAMdmreG0DkXELoIoidhl8DlsnFss4HbYaPc7WN/mx+dSsMsi5aqGIkvUVOgJOtjZEyJb0djaHeC/3rKGWze0MrJUIOy20RNyslio8+D5GLv6rBqR26FweDrF4ekM5xdzuG0SnQEXVw81sbbFx60bWkiX6tx9fIFEwdq0/uT+Uda2+bhxfcvruuZ2WeJdOzr55rF5gi6F64abaQvYODGf4dGRGA+NxHHYZBRZYjZT48xCjr0DYWQJ2vw2fHaFzZ1e7DIEnVaDflU1rTS4S2ZlohyyaKWzgk4FVTdIFlW+f2oJwTAxMQg6Je7c1k57wIkkQGfAydHZFIuZKsdnMvztE5NkKg329IWpqgan5vOIAhSqKj6XjbBHQZZEvnhghvFYnifHEsiCgGYarG/3kamoPHDWUpN5XuXmebxpY9uqUMTdx9949ufzsMsSW7qCq7VYVTdwSBKDzR7uPj7PzeuaGV0uIIki/c1uQm6ZoNt6b2nFb9FXfC+bCAhWD2KmXEOURBRBQJEVFBnsQMStIGClx02skoYswoXlEoMRJw3D4Ia1TRSqKhGnwmMX4gScMvlqg4fOxVB1E80ARRLY2xfBJovsHgjR5LZTUQ32DoT53P4p3r2zm919ITZ1eJlOlV7u1F9XSKKAQ5HIV1SeGEvwP753nlS5wbt2dLGjy09fxM36dj/RbB1VN2n1uwi4bOgrjuCD5+Mki3UaukFNN2j1W8O0hZWfG1iGJ1/VKdYNFvI1RBOaPQ4ShRo1zRpt5lFEPnp1LwgQcFr1bcOwpgO9c0cnVw9GqDd0VB02tvvZ3hNgqNXHTeta6Wvy8I6tnXzz6DwbO3zMZyqohkGL10nEYyNRqjObriBLIuWGxjVDTWQrKs1e++q9/kr4T2E8/6MQh/JVlaDbRm/EzWMXYpb8mGGwvs3P7ZvbOTybZbjNhyRKPDGWpNpQsSsiNVVD0010wGOXkEXrwms6NF7g2BpY9U2AXNUgU9WpNAxU7f/P3nuHx3Wdd/6fe+dO74OZQe8gQIK9V1GVktVtucolcYmTbJJNvCm/tN0k62w22U12E292nWI7tuPeLatYvVCk2DtBondgeu/l3vv744IQKVEmVVgkzed58JCYATDnnrlz3nPe8n0BUcBhMRDJlJmN52l1G/FYJDxWA8FMGYtBx1w8y1A4i04HHXUmfnxklulYnnylyq3L6vnekVnWtLqZjuf54eEZQqkCzwyGaHVrjWh1wJf3TCADa9rcbO7y8N1DUxyeSiAIWq2l06JnNJThD9/Th14SOTWbuuLzXpFVLfPYaUIVYDCUxWHU0VlnwaQTubPfj8Wow7MQuz0wEUeWIV2QNVGIUAZFgXRBoVoFs0HEb5NIl6qcSx4tKZqLq81twiiJCKhUVEgVqxRLComCzLGZFMWyTL5cZTiUIZGvkC9XOD6dpFyRMegE3DYDtyz1MxnLMRhKE86WODGT4Je2tLN3NILdpCOer/LZGzopyyoDsymOzSTp9dnY0OGmWFH4uw+uxnteCdBYOMvAnDbPN/X5rvh8vx48VgOBlFaSJisqPz8d4Nh0nLY6C3pJp3UYSpeYTxWRVQFxwW3rseiwGEVaPVpmZVmBclWLt6cKCumiQqGqEM1pMVFECGU19aUGhwmjDkRVM8A6UeTvnhohlCoyGs5QLFcZCWeZSRRwWQxYDHr+065ecqUqvT4bf/3YWb74whgn55LsH4txYDLGf/vZaWRZpcdvp95h4vbljRglCeM1akBeXGjv1t/o4F9+aQN/eOdSkvkSf/34ID89Pkc4XeDGPh9uix6jXiSSrXBuKTFJkC4plGQtuVBdyK8oLxhPSdA8MAra84WySlWFeLaIvHBSdBglilVNDStTrDIdL7C8yU4wVeLAeIwTM3F+cGSGUKbI2fkkLqueBoeJbp+NHx+b48ZeH4+dmqdU1RKaPrm9E5NeYnWrk7FIjnS+wrJGO8WK1rx8MJhhRZODtW3uyw5PvCuM5zuh7jNXqvLE6SCgSZIJAgyHMvzg8Az/59kRHjs5zwPrminLColcgQaHifFogeMzCfJFmYq6IHqQqVKUtRtXQZOHO4cAnEtmNOkFjKJ2owvAxnYXyVxZKyoXRZ4filJVVLx2Ew+sa2Ftm5tEoYpeB7FshUS+wo29fl4ciWjF+XYjS3xWWjxmJBFuWuojmtMMsUESWd3iZEu3hy98ZC2dPisrmx0MBjN8fGsHO3q8eKwGtnTVoarw2OkAh6cSRDIlNp/XMPtK4TTruanPT7pQ5Y9/dILZRIHfvLmXM8EsBknHXKqMWRLw2k2UZMhVVJwWiVxZJpqtUq1CVdHialVVOyGFs1VKMhgXPoEOA5glgRNzGYKZCoWFTYzLIiEL0OIyYtAJhDJljJIOo16gWJYxSDq6/VasZj11dhMHJ2Lc2Ovno5vbWd3s4uxcCrdFj9duIpopMxnNcXgyTovbyjODIXob7Ny7qpGnz4b4+kuTi27Cb+2fIpopLkjfqYuuUf8Vqqt9o8iKSrZY5eh0gsFghv/9obV0ee3sWtbAQ8dmsRj1tLpN2EwShVIF+0I8y2rQY5QkxqMl9IDXosnE6UUVUdTu+cqCi1FAc0sadZq7MVUss62njg6vBd3C6V7r+CERTpfIVSFdqpIqlnnmbIRwpsRTZzVZyqcHg7x/XQvbuj1MRHL87Pgcc4k8JoOOHx+b5RNb2mlymZiJZTHqRR5YaDJ9pSlXFZRzAWC0lnTtdRbWtLpocVsYCmb40u4JPrGlnU9s7cBhMaCoWr31qfnUBeGTqqrdz3UWba4DWe1mXviWigqOhcRtQQC3RY+kFyhUNaUyRVGIF8tUVfDaDbgsRla3OFGBsqKSLJQ5NBGnKivYjBJnghm+f3CaUkXBIAl8fHM7w6EMnV4bd69q4MXhKF9/aYLf+/5xnGYJl1mT8RuYT2PS6/jk9k7et7ZZ2/Qq6mVvyN8VxvOdgNUo8aGNWmLMybkUDpOBu1Y24jQbtCbVVYU9I1FyJRm9pCddKJMtVnAYJTq9NjwmAbtRxMDLb3q720R3nemCeNy54H5FUTEbdZrL1izx0lgcBAFRAL0kYpIE0vkKg4EUzw5GKJcrdNbZKFVVBuZSWA0Sx2dSbOhwMxnNsWeh3+dIMEtvvV3bWet07B2J8MJwhJ+fDvG9Q1qMc3WLC5fZQKZQIVOsXtDR4+RskqUNDm5f3sCWLq0N1JXmuaEwsay2493V38Dfvn81sqqwtcuD127k41vaKMsq88kckqidRhQFzEYBo6S5Y2W0xaPVpZUEgeYqPJfGr9dJ6ERIZMuLBhW0psQ6QdNbrSoqzS4TPT4byoLA/OauOiRJx9IGG5lChWOTCQaDabb3eOlvcrJvPI7bYuCx0/N0eq10eq1YjRL/8NQw71vbjEEn8sXnxyhUqvQ32heF4F0WPT85NsfBiRjr2j3csaLxis/zG8Fi0FGRFWwGHU+eCTKfyrNreT31TiOnAyl0CyVWoWSJaLaitcEC3FY9qlJFRYvpC4JmKGUFXGa9dqJE22DqgFRJyw712STyRa1H6Hg0j9GwkHQkaL1fb+rzY9JBV50my9jbYOW3b+1mOppjeYOdNe1uRiN5bu9v4K/ft5Kbev2sa3NTVaDTa+OJgSB//9QwTwyEePREQKu9vgrsHYsyfJ4IRrJQRq8TmU8W+c7BKVpdZjZ1epB0Ijf0+HBZDAwGMrR4LJQWYplmSYsliwqky1CsyhjPC5Of2xAaBC2TXy9qKlpGScQgqEii5gZf1+qmKivUWfUcnUxyz8oG1rQ5GZhLUixXKVVVljU6SRdl1rV5uGdlI2ORHHvHYlQVlYOTcWxGiccHghwYj/OBDS24zAZ0gkA4XUYQVPoaHGSLFYoVTc9290iEs4EUp+eT5EqX1/j9mrYkO1+W76LqQm+wJdmlXg+4ktJ9V7V90Om5FCdnkzQ6zUxEs8iqFkv7593jKIrCVLTADUu8zKeLPPCzL/PZ5775Jof3Mv9y48f40b2fJlWo4rQYaPNYODQZp85mQC/q+MTWNn5+KsCqFhfBdInBQJqqqvLedU382g09nA2k+acXxljR5KDJaeZ7h2e4ZZkfRYHb+xtIFMoEUwXWtXkWGzCPhrP47EacC7JlqUIFp1l/RVtkhdJFPFZNam86lufQVBydAHtHotQ7jJyYS6KqgnZSK1eI5xUcRoHPPPtN/uOe77yJoV3IF3d+lNHf+H1OzSVJF6v0+Ww0OC3odfDMYBiv3cintnUgSTruWdnIoakEVVkhXahyaDLGTCLPf767nxa3hW8dmOLhEwG++ZlNGPU6/ufjQ2zvqaPLa6PeaUIU4P8+O0pVUfhPu/qoLmRAu60GuMYtyYoVWXNtCwIVWeHreyfZ1OVB/5efZ9m//v2b/fOL/OP2B/lfOz6GUdA2lfV2iUxJZXu3m6fORlHQPDMK4LNKpApV/A4TOlFA0mlGvcNr5thUEp/DRJPTQJvLyq6VjThMei0ebdIzlyzQ12jn6FSCsqyQzJXx2Y2cnEtxU5+f2/sbrsqakilWCGdKdPtsFEpVQpkix2dTyLKm4/y1PZPc0u9nLJzliTNBcsUKn3763/nIz7/2Jof3Mv9840d56L2fJZGvoCgygqBjXZuL0UiOclUmkStz18omPralnbPBNA8dm+O+1U0cnIwjiSK7RyLc3l/P+nY3Pzk2x4c3tLK5y4tJL/IPTw9j0kvYDBLjsSz1DiMf2djOeDRLu8dCo9PMzxckAZtd5kvO+TU1npfsu/kWG8/X9dpvnCt6o5eqMqKgpVwva9RaXy1rsKOqcGwmQaPDxMB8ku8emuGWvnqOTScYi+VA1eoWs+UqFr1AoaxeEO+06MFnNVJVYO+f7qL/jx9BkARyZZW1rQ7OBjKYdAKiKGhalHrNTWnR69jcVcepuTQOs8RgIMO6Niduq4l94zF0AlSqClu667h7VSP/4+eDvHdtC/1NDn50dI7+RgeSCLFMCUEn8ls39/DF50bZ3uMlUagwE8vT6bUSyhQZi2S5a0UTqUKFyViW5U1O1moNe6/aYp7IlfiNbx1FrxPZ3Onm8FSCQ5Nx2jxaT0iHSSKeryIAHquE1SgRyRTJVbRBnnsxs6gtunU2PS/96R2s/C+P0u2zMRTKIMtafGiJz0qdTc/ZQIYGh4mKolJvN9Hls3BywbXUVmcmW5RJ5sp8ekcnPzkR4Pd2LaHBaeFvnxjk/euayZaqPDcU5thUij+8cym7hyOE00W2dHn46JaOxWv73HeP0eo285FNbZpL3mZEFATMBt1iw+lbltZf1fm+GI+dCrCqxYnfbmIknGF5k5PhUIaKrPDDI7PodVpHoZv6fHzxuTGa3GZGQhkktF62e/5kF+v+/BFyFS15p1xRMeoF9KJAqqgVs9Q7JGRVIF+qkl4I1jU7DKiqSl5WSOZldAsXU2fRIauQLsqsaLYzGcvjt5tY4rMyGE7R7LJp7e4UhYl4gU9tb+fodIpgqsi9q5vY0OGh02tFUKGiKEzH8xyciHPzUj8tbsubnW+4zDk/16loVYuLfWMxHCaJBqeJOpuRbx+Y4vh0gpuW1pPMlnl6KMiZ+TTZYpW1bW4i6QKRbBmrSUcoVaLFbSKcKqGqKtkqTP6Pe9jw+ceRBIhlNTUnt1UinltQdloYpFUvIIhQqqiY9CJbOz2EMiWsZj25QpWzc2kaXAYKVZW/vH8lA/MpVjQ7ODKVxCTpOB1IcueKRvJlGbtJjyQKnJpNsb7DzVNnQkxEs9y/uolPbO1kPlXAazMyMJ+i2WVmLJIjVSizubOOOpvxknNec9u+zTg5m+L0XIp4rsRX9kywusVFulghkCrw0LF5Yvky+8YTbOv2MRnPkS5V8VkNNDsNyIpCRYZUUcVh1uFdCEKIAAqE0iUCaa0FVUnV4h4mHRyfSVOuqjgselrcZhrdZv7z3cv5kzuXMhHLcWgigcusx2XSkgeOTafY2u2hz28FAe5f20Rvg4PxaI4/u3c53X4bRp1AV52FuUSeWK7MZDyPKGjC0rcvb2BZk4Ob+/zcvNTHunYX3V4bfruJbr+Vlc1OtnTVYb3MrLg3Q7Ei8439U4vfH59N8as3dGE16MgUZQYDGax6ieFgFr1OoFSpLmQn69i1zE8gVURBoL/BisUgLs73uXhzdEFqxWjQMRMvIKsLMSGjgKIoJLJlmpwmrEaJSkUhnNNOweFsiel4HknQagQ3d3vx2I2sa3PxzJkQelHgT+5axsB8hrlEgVa3lV/e1sYjJ+cYDWW4Z3UjD25uJ1+uUq4qqKrK+g43M4k8hYrMV/aMYzVKi5mHDU7TOcN5zblrZSMtbstivBM0KcmpaI67VzTisRi4Y0Ujw6Esty+vp9trodNjoahApqT5zFNFLX5pWkgOqSgqqaKCy6zDapJIFVV0OpFCVbM7JkkgnC2TLcugwq5ldeh12qIfL8isbXPjskiMBDOsbHaxrtXBiZkkuYJMr99GLFNmQ6cXu0lPg91MsSLT7jazs9dHoSzzhaeHOTAZw2yQKFUV1rd7mE0UFhWprgZ1NiOrWlwAbO2uY3mzk2C6yP7xGGtb3XxiSwdTsRx1Nq012Z0rGujwWjgbSBFKF8iVq+gQMEoiwUSRYlWr6XSbtXsomqsSzFY1Nzma2IrHKtHi0jr6NNglQEASdaxvddBXb2c6WaQiq4SSReL5MhaTDkUVcFv0/PjoLCdnk+wfT9BaZ2Y6nmNdq4ejU0kqssJwMI3VIHLLMj8AGzs83NTnZ2Onl+8emkGvExkMponntETMyWiWsXCWxxdySy5FTSThbcbGDg+lqoxeFLlhiY9941EanGbiuhIemx6DqJ0UljRYFwTcFdL5Mn0NDg5PxZAVhVxF2yV7rAY8ZoGqIpItyTQ6DJQW8s1dZh0+u4npqKYiVFE1AYVYpoTZKDEezbFntMCty/zMJ0rMJgts7HBTqcr4HUaSea2LgoDAVLzASrOeFwZjVKsq4WyJLq+V8WiWTLHKJ7d38du39jKfLHBqLsXaNjephXjnM2cj3L2qkbXtbta2u6nIChaDiNNy5aXixiNasfz71jYvPraq2UlFVrhvdRM6nUCD08TZ+QQHxxMUZZlsSaZUUpAEhedGYjQ6DLTVWTkwkeDGXh8nZpLoRK3MYiJexL+gFysJIiVkzHoRUGl0msmXZFJVhd56G/V2E8VKlXSxyt7RGL9zcy//9tI4RoNEvd1EoVxhKlbgwHicXLnCgYkEv7y9g49taeNPf3wKSScwiUimWKXNa+GGJX5iuTL/+MwIbquBD29sxWqQ+K1bljAdy2MxaPN7TolKukZZnxdDVlStPtmgNar+6bE5ljXayZdlcuUqFVllNJzhwEScSLqkdfeoaj05N3W6AOjymrTsW1HEYqwSSpWodxgRBJVGh1aK9dJYFEnQ4tV9DVbMeolgqrRYu6sXtVreNpeeibjmIYnmSoxGsmQKRk1BRxAZDGbZ3OVhYD7FZ3Z08vxwhGK5ynAgQyhV4Oh0ig9vbAUEYtkSqCrPD4X59Ru7F5u+XyuW+O1Mx3IMhzJYTTrt/8EUHpuB4VAWEZEmp4VAqsDaRjvHZxN4bUYyhQomncCqRiczSS1u6zBosVCLpMWW5YV2fFVRpMNj1uQLzTpa3CZCqSKiKGKSdDS7TExEc5oHKlXAYzNybEYLlbjNEhaDSKmsYDfrafGYOTab5N41TTx8co6zwSxNThMWg561bVqXJ50osKHDzWAww9EpzWv0k6Nz3LWyiZfGo6xqurwWhzXj+TaiKisLmq4Z6u1GdizxMRLKsrXLy5Ong9zc6+PF0Rj3r27mh0em8dqMyCqkCmWqqoLHaiJfzqJD+9DrRQG7zUyuUKSqaD9nWig8zJUVdHmt1MVlMtDsNNLqtvLiaIRkqshPj8/isZpod5uJZou0uc1EMmVWtbhZ1+7WlDrMEp/d2c2hyQT1TiOz8SKFiszqZgd/++QwD25qZzycpdGplQs4zHqEhbViLlGgIiusaHbgs78s1Pyt/VO4LHruWN542fVYb5TDUwlMksh9a142nnU2Iydmkjx8KgCqyn+9fyVdfivtdVb2TyQ4OBHHrBcoKyrNThPxXJm5ZAmP1cDAXErb5S407fXbJGwLp1FJVAgXZCRRO7XG8hXWtzjxOcw8PhBkLJLhM9s7eW44SiJfJZor4rWbFjp96EmKsKXLg05UMegEBmYzGHQizw6G6W2wYdDpaHWb+ecXxuiosxDLlTg5m2Rzp4fblzcg6URuW1ZPtlTlpj4f3T4bR6cTJHJlbEbpqmQ1Xy4HxmNYjFqbuo0dbp44E2IskmU2mWc8muNT2zv4waEZ+psc9K618cyZMJFimW6vlekFJZlOn4PVrS6++Nwoy5vtVBRNASeYKmPSSxyYjBPKlmlwmpiKFwmnShgNMj6bnlNzaaqVKuc0FlJFFatBxuA0sbPbz01L/fzjsyPs7PUCKiubXLTUmbEH9AyHMty/polgushjp4LkyzINTiMPHZ8jU5Tp8dsolOVFMZBrxc9PBVjW6KDDayVflnn6bJidvV7GIjl0AvhsJlLFCjv7fDw/FOaDG1s5Np2ky2slXagsbKArHJ5JYlxI4ZckHS5BIVPS2rupgKIK+O1GLEYdp+fS+Kx65pJFpqI5mlxmvFYDHpuRsqw1lX9gbTNf2zfJHcvr2bnEh8tipNFlQq8TCWdKrGl1MRXL0+Yx47ea+cjGVhL5Mn/5yFlu6vPjsugZi2S5c0UjN/b6WN/m4jsHp9DrdLitBjrrbOwZjfFg3aU1s6+f7WSNS6KokCvJ3Njro8NrRScKfHJ7J6DyyMl5do9EcFkkjs8kmInn2T8Rp9NjwWMzMhnN0eg0ohd1mCWw6QUCqRKSTqCsat09DJKESXfOIKnYzToUFT6xuRW3xbhwKoKtXV5cZj1bu+soyzJ+h4nuBgdHJmPIqsrNfT6eHQyjKPAPz4ywocNNKKWJqX95zwQ/PT7P793ey9ZuDzt6vUSyWkG+zSjRuNCnc1mjHatRx4YOzwVz8MntndjNelLnFfFfKT60ofUCwzkVy7FnNMJTZ4J01llodVuIZoo8dGyOSLaCzagVctfZJZwmzcAnC1WaXGZS+TLz6TJ+p4ltPV466szkygrehY1Bqihj1gtIosC9qxtpsBuYTpaI58u0uC00uqyYTXrWtXn4lR2diKKmKtVZZ0UQtIa/NqOeaLZMIFVmY5cHv91AX72NXEmmVJHZMxbFbtTz3GCEz333GDpBIF+WeWEhYzlflgmkCoiiSLvXilmvo9VjxmUxXPG5fj1s6/GyptUFaOLwK5qctLgt3NjrZ0ePV9Pl9dnorbfzzf3TNDhNdHg1LdtzG7GyrHB4Mo5OhFCqyKpmF8WKQr3DRDRTxCAuxEDzFUQglq8AKsdn09hNEm6riQ+ub6W9zoxJL9BWZyGdrzCdyLN3NMKOHi+f2dnFgYk4z54NMh3N8eJIGFWBkUiOULrEZ3Z0YTFInJlPE8mUMRt02AwSH97YivEaSyHe1l9Pe53WsWZVq4vP3dYLqpZoKSsqxYpCm8dCf4OdVreZQLLIZ7a3MxHNU6pUaXaa8FiNdLpNnBNJShdkTAYdfruBDq8Jg6iFRcajGU7PpVGBz+7s4T3L62lxWyjLCqlSlQPjcdrcJnw2Ez89EcBtNTCfLFJnMyIrKs+cDfEHPzhBLFvizHyKQ5NxnjoTIpYvEkgV+dHROW5d6mdrdx1em4Hfv72PFc3a6dJm0tPsthBfWE/6mxw8uLntsuaodvJ8G2GQxEXZrPMpyyq7ltezstnJqhY3Y+EUZwIperwWDk8lqXeYaXZrsQmv3Uijy8hLYwl29fuJZiokdRX6m7woisrYQrr6ujYXw6EcJoPIY6dDzCbyGCWRYrmKoIM/vWc5j50MMhzO8f61TRRlzbV3YirBXz02yKZOD3tGwmzq8NDl09ownZpL8jcPrCSer+CyGCmUFXYtq79ghx1Ka51EjDqR8UiObp+NYkXBbNBxei5Fplhlic+OJImMhrP0+K+ccLaiqEzGcoti6EenE4yEMnz2hm6C6SJn5lP8255xNnfU8dTZIKIIKgqyokdG4SfH51jX7qLOauCkJGHWq+hFEEWBD61v4eBkguEFubhPb+vkTDDN0ak4PzwawG3Rs63HTamiUFUVHljbTCxTprfBzsmZJMWKTKPdRKPLzIGJOKDy+Ol5Ts2mWVJv5eRsmq+8OMGf3rOMbp+N9jorFVlBrxORdPClFydY3eoimCrSuNC7s8FpWsxqVlWtuDxTrGIxXL/LhKQTWXae9utENMfpuRQ7+3y8MBSmt97Or+7sYmAuxbHpJOvbNflJs14knivit5sw6kXMBoG+ege/vLWd//XUMPV2IwVFRVBVEMtUqjLRdBGHSUdbnYXtS7zEs1VSpSpdXiuSTsdsIsO6djdnQxl8NiP1dhNuiwHjQsG/324knCvS32zne4dmKFYVljY42LnEj8dm4Bv7J5BEAeeU1jGkzmakw2vVko2uMq98zSaXiYdPFnCYJTZ3t6BD4LHTQR49PY+iqhgkkcNTSewmzc26dyyuadkisLpVM1Tdfisui4FYtsSSejs6ncR8osCufj9mg8TAfIovPDOMgkCT04jPYUIF1rW7cJq0jekH1zUxGMoyFcvT6DTz+EAIg05gY6ebfLnKydkUW7rrWN3ipN5hYkm9nd/x2XhpPMZIKI3VpOeF4QhdXhttC5sDSRTZ2auJf8wn81gM0mVtGK/fT8UV5pzq0BUsWbkqvDgSYV2bm1/e2gmwIB0moihQUgRkBHwOI7FsifY6C/vHowSTRUw6kYOTcT6+pYO+hg4GZlMcmYlRWIh5eq1m/vQzK/izn56ms85Mo91AslBhMiYzHNAW/EAqjyQKnAlkaa+zsqrVxSe2tBPPVZBE+M7BaT6wvo3vHppGB0zE8nisBk0T1mnizLzWfuk/3rIEo1638DeLVKoKgXSR+1Y3MR3L88XnR/mL+5bT12BHUbV+oLlSlb3zUQw6cfFD8FZTVVRGw9lF4/m+tS3ah8uodaj/9oEpSlWFLV2apN3v397HaCiH26Inli3htRpY0WTnp8cD3NHvI7HQdaIqq3x57xQGvY5MUUsYOjSd5LZl9ZSrWkunXFFTEVrZ5EBV4GfHA3T7rPzS1k7C6RJPnwmwus3FS+Mx6u0GzgaydNRpOsfHp1Pc2Ovjw5vaGIvksJskQukCZ4NZPrW9g1imzK/s6MJnNxFIFV/Vp/PIVJyJaI73r9MK9AVBQFFUqop63YnDg3Z6GQykGYtkWdXi4rmhCBaDjuVNTnYs8TGXLPC3T45wz5qmBdEHGJhPs6mrjqFQAJNOk6KLZkuY9CLBVJ7xaBa3WROX2NDu4eenA7gtEn6HmUypyo+PzLGhw0NfvZ1ev50lDXYURaHOaiScLnLLUj/BZJH/+YE19PhtHJtOcHQ6xe+/ZwmhVIEPrmtmNllgfbubf983yYZ2D7958xIKZZmOOiuZYoXRSI5cqXpVT/6j4SyCoPLCcJSN7R5WtjiZS2hGc1d/AwJaScv/enKIG3u9HBxPMBTK0N8k0OAwsaWzjmCmTJPTiCCK5MsyXuuCd6VQYT5ZQK8TiefKvHd1E0+eDfLU2TB+h5lPb2/HIIkEk3meHoyiqCrrWt386o5uHjkxh0En8pMTAdwWAxaDxAtDEUZCKTZ3eun02uhrsBPJlhmLZHhyIERrnZVHTwVY1ezkh0dmuHtlI5s6PAwFMzQ4jSTzZVwWAzf1+ZEWNvDf2DfNXSsbLmvOr79PwlXi7aY6dHoutZiOH1rQdwVN/DueLfHoqXkeHwjyf58dZc9wlEJFZjqW4z/c0MW6NjcnZ5NMxnIICOglgRa3GbNeB4rCt/ZPMZfKY9YZ+ODaBgD6Gy18/aUJ9DoBo17CbTUyFMqxosXDnasa+b/PjZEryyyttxPPa9Jcn7ttCQ6zgUi2RLZUZdeyejZ0ekjmy6RLFf6/9yyl22fjk9s66G2w89HNbaxodjIdz1OuKjx8fJ6ZeB631cDdKxspV2QOjEf5s3v6Mem17h7GBV1fq1Fi4ytcum81Bknk9uUNFzymIvDtA9P832eG2dRZh0Ev8pW9kyxvdKITRT66uY2lTQ5+/44+Gpwmvrp3ihWNTo7PpolnFU7MJplN5FnZ7CCe1WLEAB9Y10KL20I8V2Y0kqWn3spsosDesSirmu3cusxPOl/luaEQoqDS4tY2H6qiYjXq+bUbu7h5qZ/1HR5+dWc3n93ZRbZUxSiJtLgs5Csyv7KjE4dJz5HpBH67EVXV3G+vJF2scvNSPwcm4hydTgIwEs6ydyx6Ref7cgmkChTOU7QZDmXIl2UanWYanSY+u7OTTp+V7x+e4UdHZ5EVhZv6vNj0ErMJ7fPe47Mhywq/e3sfLquRdEHLMj81l8ZjMaCi9XQVBJX5VJGeehuCIHLz0np+dacmxL+508ttC/P0/NkQhYrMi8Mh5pJF/vdTw4xFsnhtBvQ6AZdF05xO5kv8v+fH8NoNtHmsOEwSH93Uhsdq4GfH5zQhdVEABKLZ0lV3mRsXVD6aHSaWNzl45MQcj5yc58B4nHaPhd3DYVKFCm11Vo5PpxiL5eipt/LxLe3kKzKqqjIZzVBWYFu3l6X1duQF5SK/zYhVL3LvygZUtM33SDiHrKh01hk5Op3k2wdm6Kl3sLbNhd9mZCKe4/R8Cp2kw6jX8bHNbYyGMvzKjg6eHgxydCrBXKJAh9dKs9tCt89KIFGkr8HBlk4Pa1tdRLIlPrmtk2UNDsSFHsOFsrIYrjBI4qL363duW8LBBX3vS/GuPXm+3WhxmxFFgVShwplAevG0cNuyetxWA2a9hMOsZ1hI8+HNLfjsRmYSeSbieSZiee5Z08RUNM+ntnfx0liUUkWmqqjoJR2dXgsTkQJnA2kCGW2X2OlzcHgmw7pWF8lCFZfVSH+TnQ+ubeJ0IItZElnV4sZi0DMWznDf6iY6vDaOTiWxmxYyQCsqiqJy54pGnGY9k9Ece0cj3LxUSx2fiefZ3FmHeUEl5mwwjcMk0e23oqoqM8kCgiBgMV78Nm1acDdeTZK5MpWqAgK0eSzkylVWt7goljURgVCmxEy8wB+/p4GblzZw41I/z54N8/4Nrdza5+fPHz6Fw6jnT+/pJ56vcGgsDsDPTs7R6DTz3rUtfOvAFEemU1j0IvV2M7uWNwFwYCzGY6eD/MldSzk0ESddqGI1aolA7XWaS8xi1PH46SD7xwWsRh2SKGIxSuRLMl9/aZJfuaGLD5wn+XaxMMDNfdr74+54eeHua3hZfehaMxMvINYJiwlj58orAB4/HWRli5PTcylcFgNDgTT7RmPcv6YJk17Hp3Z0wscgX5VZ6nQQy5QpyQrbeurx2vU8eioI6NjSWYfbasBtkti1shG32cDv//AEM/E8Pzk2x12rGnFZ9axb6qeqwmwsR7JQxW3VY9JLbO7ycPeqRiSdyFQsx/9+apjfuKmHyViO37iph74GO4WKTEVW8TtMGPU6JJ3IkwMhJJ3A+9e1LMZ1ryatHgupfIVwpkxVURkOZfncbb3IqspDx+YIpEt4bEbuX9PMxg4Pf/bTU4yE0zxzNsJf3L+cn58KMJ8u8ZkbOjg9l6FQVWiwaWtKh89GrlxFFQTWtrnYNxZn5xIvJVkhlq2wvNmMgMC/7J7g/WtbeHYwTIvHTKki47bo6W90ciaQYn2bi//5xDA+qxGPxcCv3NiFY6E5wCMn5ilUqqzvcHN0Ksl71zbT5bORKlQ4NBHHaTHQ4DTjtOi5/7x8hnOY9Dp+eeule3lCzXi+bTh/B3pucQMWSx3a6iyMh7M4TAYOTyTpqbfR5DIxlyzS4bViNei4Z5W2gLx/fSvziTxfeXGch08EaHCaeM+KehpcRn7jxm6On/ptJEnHhg43+0ajGCSRDq+Fv3rvKjw2A1UEDk/GGAxkaHSYMOhFXhyJsKrFydbuOoZDBkbDWe5b3cR3D82wutWJSRJpcplpcL6cdp4pVtHrRJ4bDrO80cHt/Q3kK1W8NiM/PjrHhza20r3gMn12MMSKJufi9abyFWYS+cXA/9WiWJVpdpm5dZmfjjoLA4EM4UwJgTL7RqP0+K2cmk0SzBT428eHuG9NE+vb3UzF8hyaTLC6xc2ZQJqv7p3kV2/oZjpRYPTXfxezXqLNo7mfV7Y4cJn1JHMV5tMlTi3Eev/wzmU0OE3kyzL/9b0reWk0isui5/uHZ5mKF1jR7KTOamA8kuP+NU2E0yU2dHiwGnXIqsqaNtcvdLsen0nS47dhW9isXOsyiddiU+erPQ6KonJoMs6OnjosBonmhY3V46fn+dfd44TSRda0uvnW/ike/NP/wtZOL88MBknmtaL4wWCGOpsTk6RjTauLroU48YnZJEen4nR4bfTV27l3dRN3rtQ2g8l8mR8cmWFnr49bl9WTKVV5YSiMy6I1bzgnFesya3G+r+zRtGFXt2q12XtHY5SrCveubiSaLVGpqnxsUwu5siZJ+Up3+tXCadEvbqp+d6FZ+oGxOC0eC7myVuKWL1fZNxbjL+5fwdf2TCyUbKX46t5xVrU4mY4W2Nzp4eHj8zw7FOa9v/af6PHb2NzpJlOW+eHBGRqcJnb2+njsVIhNHdomfX27i0yxwkQsy44eL90+GyaDjlAsj8MsMRLOcvuKRg5PJehZEBUpVRRYmKqb+vzMJvJ4bUbee16JmdOs57b+er60e5wl9bbF++NiKJclKfEudtu+03CZJNrrrPzazi7GYznmkgUsRj0rW5xMRHOUqwoGnYjNKFGtKgTTRQwGkZ29Xn531xLi+QoD82leHInywoO/yenZJJs66vj41g6WNzl56OQ8zwyGcFkM5EoyH9nUxuauOm5a5sdvN/P+dS1kSlVi2RJ+u5FgqoCiKtzQU8fyJifPDobJlqp8ansXwVSR4zNJ+pscNDhN2AwS9Q4TnV4rffV2/HYTH9xwoSD26hYXE9EcU7EcAIL46qSGK0U0W+KlUc1lub7dw92rm+j22/n5QIjeejuNDhMui4GjMwkyuQq/u2sp3T47Gzs8PHRsDodJ4rZ+P2vbnNy+vAGzJLK0wcF/fXiAJX4bif/vj7EaNLd0olBmbVsdyUKVkqJy/+pGenxWdvX7sRolnGY9//T8GDaj1nrr5qX1/P2H15DMV7AZdbS4zXxyWweBVJGTcykyxQr7x2M8uFHLIMyXqmRfUXh/TmVMr9O0i1+JoqiLscLrjVypysC8praULVUQBWHR6MuKittqZOcSH3pJZCySIV2scPiTv80zgyH0Oh2f3NbBx7a00+qxsq7dw4/+w3Y2dNQRzWpu3P4GBw+fCKBDE/vYNxEjV5KRdCLr2j1s6aojka9gkESyhQpNTjPbuuvY0lnHM2dDyIrKibkEW7o8bO/24jRLGCQRr81Ii8vE3asasZv0dPts3L68HpNBhyBcP5uWRK7MD4/MsqbVhddmYMcSLzf2+rlhiY8VzQ70OpFPbOug0WXm8FQCp9lAOFPi/nXaRv325fUsb7Iz+Vt/QCRTYi5RZDKSZ1uPl0ypSiSj5WKMRvJs6vDgtRlZUm+nVFZocJpY2uhgid/Og5vakBWV/gY7k7EcH93URjhT5L1rm/HZjcRzZcbCGfwOE9PxApWF3I3HTwc1b5Gs8PjpIJ/d2cVN5x0+zlGsyIufi+u6q8r2v3l2MVnnWvNOaFdWkRV+cnyeVKGMxSjx2R1d7OpvoNNnZTKaYSKSY/sSL9/YN8Wx6SQ/OjaLz27CbTHyyW2dpIsyTpNEp8fC4ekk/U12ChWFk3NJimWFOpuRB9a08NFNmjuj3mHitv4GZFXFZNBhlAS+uneCM/Mp9o/FNGWX/ga+e2iGf3lxnNNzKersBnYPRxYLlFcunBhzpSq99XZcFgNOi566BRfPuQUklC7y46OzuC0GJmM5cgsKMQ6T/qq5EW1GiXbvq+u+2jwWnh8KUazKTMdzvG9tC1aLgd6Fce3qb+DXdnaxuauOx04G+cGhWb7w9AhNbgs3L/XjtRtIFSsEUmXuXNnIzX31FEoyZklkZZOT25bVc3w2zWOng7TVWYnnyoxHcnx6RyfxXIVHTwUAKFUUHCYds4kiZoNEh9dKr9/O525bQovbwkQkx989OUQyry2Ez54NXXAd/75vip+fDrC8yXnRzNq5ZIHnh8JXYGbfPMpCVrAoCthNBmI5reRgNJzl6bMhNnfW8bldfQiCwP6JOKIg4LMZuWN5AxvaXSCKDIWybOr0sHs4osWURTAbdcRyZU7OJ9mxxMv3j8ySylfY1O5BEOBsIM1MPM9Lo1HqrAYeOxVABpY3ORkJZxFFTXe3VJXZ0e0jka+yocO96DkBLb56zkgDdPls5EpVnhu8fubabTWwq9/Pdw9NY1/YvAFEMiWOLcTDTXod/U0Omt0W3rO8ni6vjdFQjoeOz3FiNoWiwoujUertJprcZt67ppH3rW1me4+P+VSJQKrIH925lGypSkVR8dmNLGtykCpUcZi17FhB0BqQt9ZpvUT/zzMjgNbRJlWo8MTpIA+fCFCRFW7rr18cp9MscWAijiQK9Na/nJl/fgeZ03OpBWH4NEenE6SL17Ew/GXryl5BbdtX8hZq3V51Yfgl9TZ0gvAqFZhUXltgP7KxFVEUODGTpK/Bjl4noigKv/eDE6xodGIx6dg/FsNrNRAvVvn0tg5sRomSrDAwl2L7Ei9j4RwddVaa3WaqisJXdk8Qy5fZtczPoYk4bpuBj2/pYGA+RSRTYjSc5RNb2hEEAb1OQFG1zvHn6jiT+TLlBdWXyVh+sYTgq3sn+OjmtsXEINDaJV1iN3hNtFaPTyf42kuT3LzUTyxb5v41TbgthsWTz0w8z5deHOfz968AIJwukilqMes6q5ElCzWYsqrS7bOhKCon55IMBTIcm05wz5omJEGk02fBKOn44nOjmPQ6+hocBNMFAskCn97RyVSssOhme/ZsGLNBx6ZOD7rzjpH5kqZONBhM4zTrz2kCA1AsV5mM51na4OB8nhsKs8RvO6evej7XVNv2tXhuMMyWrjqqisLPTszz4Ma2xfeiWJEplGVShQqlqszfPTGExajjfatbuGlBvu3ETIIvvzjOzUvraXGbyRSrGHQC3z88g9dmpNtnxW014TBrjcoUBYLpAh9cr32+wukiTwwE+cTWDgAG5lOa21GvoyorvDgaZV2rm1CmQCRTZvNCl5LL4KquKZfLIyfmmYzm2Nnn05o/pAr84Q9P8pFNbTQ5zQyF0vQ3OXn8dJCnzwb57VuWYDfrOTAWR0ELI7R7LLS4NYWiPSMxPrG1nX1jUVY0Ozk5m6Iiy9y6rOFVr10oVxmLaF6oRqeJqqIsikxccOGqiqKy+FnIFCvoRYFv7J/mU9s7kBYyfyWdgMOkiVi0uM1YDNL1KQx/PRrPS3Z4uXyu6o1+aDLOymYnJv1rq+3ky1qtXqZY4afH5vjE1g5kReXAeJRUoUKxorC9x0u5InNsNskdyxv51v4ptnRrOpEf2dRGtlRlJJThheEIv3PrEg5OxOlvcnB4MoHDpGNVq3txDK+8YS/GWDhDqarS33Thgl2syL/wWl6Dq76Yn5tTVVUpVRVMeh3fPzzDvauaFhNZSlWZcLpEKF2kxW1h90iEdKHM8dkUG9pcbOvx4TLrkVVNji9XqqITBdSFuTMs1LL6bEasRh2RTAmPzYBR0jEaytDgNGHS6xiYT7N6IblkOJQmnisznyyyrdu7WLf5RkjlK1iMuou5x69L4zkWydJRp4mHnLuPZEU7mZ6/+Qpnijw/GOamXh+HphLs6m/AIIlUZIWJaA5ZUfDZTDx5JsRHN7cRzZR4aSzCzb1+hsJZhoIZtvfUkSpUaXGbF70lhbLMT47N8tHNmodmz0iU5U2Oc51oGItkqVQVQpkivQtNry8zrnxdGs9/fHaEZK7Mn9zdj04UGApmmIrlWNPq0jboqkqdzch0PMffPT7EJ7d3ki9XMRskVrU40etEZEWlIiuIgsChyRjBVJFtPV7qrEYkUbhkeVRVVkgXq7w0FuWeVU2XHPPBiThui54un+0Xrk9cxpzXjOcreAtOoNfFjV6uKvz0+BxbOj3sGY3x0QXVDFVVKVRkIpkSn394gP/5gdU8MRDivjVNfGv/FF1eK7sWyjN2D0fwWA2LSTm5UpVUoUKTS+tS4bEaFheO8/n2gSnuXdWE3fyy/uzBCa3HXn+Tg2JF5qt7JrhndROtnrekRvOqLuYVWSvv+eT2TuK5Mk8OBPnIpjaS+TKFirx4uj7HcDBDrlxlWaMDVYVDkzFsRgmvzUQwXSBfllnZ7ORbB6a4ua+eQwvKNw+sa8G+kEX4jf1T3L+maTGr8HyOTMWxGCR8diPehffj0ZPzbO/xXqlSh+vSeC6+gKoSz5Wpsxk5M58mliuxosmJy6JnKJRhaYODYqXKidkU/Y0O/ufjg+hEgf4mJx/aoPXMTeTKTMZy9Nbb+e7BaQoVGVWFX7uxG4OkJch1eq0XO5UvMhPP43cYL/CinOPJgSC99XY6LhIOuAjXxZpyMZQFl/k5RkIZpmJ5VFSWNTq0sEE0x8GJGHqdyK7+eoaCmUXlsKFghmC6SK5URRIgW5ZxWwwEUsXFNasiKxetd5UVlX/bM4HboufeNU0Xnec3waXnXFXVX/R1RWj/w0cu7wdvvFH7uopc9them0vN6VWb80imqH7/0LRaKFcvePz4dEI9NZtU/3X36KueO58D4zE1ni1d9LnhYFqNZooXfe6J0wH19FzygsdypYparGivNZ/MqwNzSfXYdOJ1XM0v5LqY75l47lXXraqqmsyV1TPzKfXkTFI9MhW/4LmxUEZ95kxQVRRFTebLqqqqarkqq/+2Z1xVFGXx5879P5krq/vGomqhXFWHgmlVVVU1U6yohXL1gvc6nC6qsqyoV4jrYr5fycMn5tTZRF7NFivqT47OXvDc9w5Oq5lCWX3mrDbXxUpV/eGRafV7B6fUQrnymveyoihqZOG589+PeLakliqyqqqqenouqU7HclfoqlRVvY7WlEvxxedG1cFASv1/z44szoksK+qp2aSaL1241oTSBfXHR2dUVVXVaOa179e5RF599mzoos8piqKGUoW38AoWueS81k6er+AtcN9et7vEV1Ioy79QXH0ymlt0Db6VjIYzGHS6t1IZ6Lo+Cb0RXuu9KVZkAqkiPruRgbnUtRJsvy7n+/wm2ZdDpljhbCBz0dKX10MgVcCil65kp5+3zZoyGs7S5rFc4Gqtygp7x2LcuCCBdz5vMExzNbjknNfqPF/BOYPZ8UePXuORXHl+keEMpoq4LPorcmP3+K+PYvvrmdd6b0x6HZ0Lrr5XGs5wuoikE/FYry8h96vF671X7Sb96zKcw6EMPT7bq+KUr3TTv5u5mNa0pBMvajgB0sUKuVL1ouGf651anedrcK6E5e1exnK5vDgSYSySXfw+niuTLrz+Rryzifyi2HmNi6OqKi8MRxZlyy7Fmfk0Byfil/y5RL5CunB5afY1Xj9ziQLVS7xnT58JcWgizkjtM7DIdw5OU6pevE44lddKTQ5OxBd1nt8uXNWT5/ku0eud812274ZT6No29wVtkF6ZBXu5mPVvrsh7Jp4nlC6+qhXZ25lotsSZ+fRi5wZBEKizGi4qSHAxuv3WyzK014t83juVc7KSv4jNXR5Ngu66DAZceQ5Pxql3mC5IBLxzRcNrJvMsqdfuWVnJXJPuMW+Gq2o855KFt6qWssZbTDRTIpYrL9ZbvlHerPulzma4XmMgF5AvV3lhKMKdKxsv+bMOk57e+gsN2+uRFXyLswjfsSiKysMn57lnVdOlyhCuGHaTfjFD+t3GTDxPPFd+1cb7cjK+l9S//TZ+tZjnZfBOaV/2i/A7jDjM1/5DbzFI13X/yHOYJB2rLlO42yCJb6ressblIYoC69vd18xwvtvx2oysa3e/LT6/bwXvjqt8k7wbkog0o3WtR/H2QRSFt0X44d3GL6q7rHFlMRt0vzAJ8Z3G28vJfI15J+jg1qhRo0aNN0/t5Pk6eOUJ9C2U9KtRo0aNGm8jaifPN8C5EyjA5N/czVyycI1HVKNGjRo1riZX5eT5dipRuRxqp8waNWrUeHdzVYxnrUSlRo0aNWq8k6i5bd8CzlcjqlGjRo0a73yu2MnznKsWeMe4a1+Lmhu3Ro0aNd5dXDHjWXPV1qhRo0aNdypvmfE8/6QJ7/zTZo0aNWrUePdyqX6eNWrUqFGjRo1XUEsYqlGjRo0aNV4nNeNZo0aNGjVqvE5qxrNGjRo1atR4ndSMZ40aNWrUqPE6+YXZtoIgPA54r8DreoHoFfi71wMmVVVXXOtB1KhRo0aNK8c1ybYVBOGwqqobrvoLXwXeyddWo0aNGjU0am7bGjVq1KhR43VSM541atSoUaPG6+RaGc9/vUavezV4J19bjRo1atSgpjBUo0aNGjVqvG5qbtsaNWrUqFHjdXLVjacgCO8RBGFIEIRRQRD+6Gq//pVEEIRJQRBOCYJwXBCEw9d6PDVq1KhR48pwVd22giDogGFgFzALHAIeVFX1zFUbxBVEEIRJYIOqqu/UGtYaNWrUqMHVP3luAkZVVR1XVbUMfBe4/yqPoUaNGjVq1HhTXG3j2QzMnPf97MJj7xRU4ElBEI4IgvCrb+Jv1L5e39eb4XW/XrZUfc3nfnJsVg2mihc8VpEV9Uu7x9WqrKi/+73j6mwirx6ejKknZ5Pq84NhdSKSVQtlWQXUR0/Oq//w9LCaLlbU2UReffx04JLjmYrl1FOzKXUymlNnE3n10ZPzajRbesfM9+v9en4orGaKlQseOz2XUvPlC9+3QKqg7h2Nqk8MBNViRVZn4vkLng9niupX9kyo+8Zi6vGZpPr9Q9PqQ8fmVEAtVxVVVlQ1la8svpaqqupjpwLqydmkCqjHZ5LqUDCt/vtLE+rBidirxlmqymrsFe9TMl9evBfeovl+y+Y8kimp8Vz51Y+nS+r/eWb4kr8/E8+p//jsiDoTz6tf3TuuHp2Kq8WKrFZkZXFOzwZS6okZbf7+/qlh9RsvTaqA+txQWB2LZC/4e0+fDak/PDxzyddVVVUNpAoXfU5WVPXodOIN3eO1hKG3lh2qqq4D7gR+UxCEndd6QDXeWooVmZ8em3vN59+3toUGp4lIpsSLIxEA9DqRz+zoRBQEPrq5jWS+wlg4RyhdJJAuYtTr+PnpAJFMiR1LfNy/pglJFPjRkVl8dhMAkUyJRK7MwYkYxYp8wWu211lZ2eKkw2vlzHya/iYnXpvxVWP7ybHZV/3uO5Gb+vzYTfoLHpMVFeUVS+KZ+TSj4SypfJlcqcp8snDB8y6zgbtXNrCs0U6pIjMcyi6uqt8/PMNLo1EknYAoCAAIgsBdKxtZ1eICoNFpwmXR0+mzMZu48G8DxLJlzgYyF76mxYDZoHvjF38FiefKJPLlxe9PziYZDmXIlqts6vBc8t5qcVu4a2UjPrsRm0FPNFvi6HSC4VCGbx2YYt9YjHShSjxfZjScZUOHmw9saAXg5j4/3T7bBX/PbdFz75qmS467VFU4OBG/6HM6UWBdm/uSf+NiXO2Y51bgL1RVvWPh+z8GUFX1r6/aIK4SgiD8BZBVVfXvXuevXr035J2D8CZ+93XPd0VWKFbkiy7Qs4k87XVWylWFRL5MvcP0qp/RiS8Pd/dwhHqHkeFQll399Tw/FAYE3rOigWCqgFHSYTdJfGP/FA+sbeZvnxjijhUN3LDEd9GxhTNFDozHuXf1qxeVcLrIRDTHunY3et2b2jdf1fl+K0jkytiMEnrp5esOpopIIiAIr9psTMVy5Msyyxod/OefnOKBdS0sbbRjMWhy4MOhDMFUAbfFyIGJGB/a2IrDpOexk/NYjBI39fkB+NreCR7c3IZRutAghtJFpmJ5NnV6Lmf4b2a+4QrNeSpfQacTEICjUwksRon17W7mkgUGA2kmYzk+s6Pr5UGoKruHIzS5zCgqnA2kWNHsosdvYyScodllxmKQGJhPYdCJyKpKt8+2eK+qqkoyX8FtNVxybAPzKbLFKpu76t7o5V1yzq/2yfMQsEQQhE5BEAzAR4CfXeUxXBEEQbAKgmA/93/gduD0tR3VG+Bzn9O+arwms4kCx6aTr3q8XFUYDmUBbUf7xOkghXJ18fn5ZIHPPzzAV/dOIC8cgzwWA08OBHFb9EiiQJdPO0UCNDjNuK0GJJ2I12akWJX5/Tv6XtNwAvhsRm7qu/jzXpuRsUgW3oW13d85OM2X9oyTKlQWH2twmkgXq4uG8+BEnKqsoKoqOkFAFGA0nOWP7lqGz2bgH54eZjSc5eBEnPY6Cx6rkZUtTu5a2Yh1wajmyjIvDEUIpLST5oc3vtpwAjhMelo95qtw5VcGVVUxGURsRgmrUWLHEi99DXZAMyoOk4QkilRkZfF3Ts6myJSqBFIF+hrsbO/x4bJoG9BkvsLpuRT7xmLMxPOEMyWWNjgWDedgMM1ULM+LoxfmYp4NpPnZ8XmOTScoV19+rSV+O6tbXVd0Dq6q8VRVtQr8FvAEcBb4vqqqA1dzDFeQemCPIAgngIPAo6qqPn6Nx/T6OX5c+6rxmnR6rezsfdlAHZtOcHQqQaEis6u/HoBYrkQoU+RMIM2jJwOkixX8diMui56JSJZwpghAg8vE0kY7R6YSxPNleusdyLJKpli54DXvXd3EvrEYoXTxF45NEIQLTsQz8TyRTJFSVXOp9TXYkc7byZ9PtlTl7cSRqfjidf0iTswk8dqMfHJrB07zy3MTTBU4Np0gki6SLVUXPQLzyQJ///QwdTYjU7EchyfjHJ9N0ue30+Q00ddgxyjp6PBaeWIgSJPLvPi7H9zQyoOb2jg1mwLAbNChqir7xmLIssKZ+TSqqmI26Gh0vn2N51Qszzf2TXE2kAY04/fdA1O8MBTGIIkk8hUe3NTGiZkkJ2eTqKrKqhYnyXwZu1F7Dw5OxBeN48YOD6taXPQ12Gmvs7K+/UJXqigIuCx67nuFR8VnNyDpIF2scGjy5fvBIImY9BduWgrlKl/dM0H1PIP+ZviFLcmuBKqqPgY8drVf90qjquo4sPpaj6PG1UevExFQOeeNjWRKpHJl7lvVRF+jg3CmiM0gIYoC969pxmM18NipIB/a0ILXZmRXfyM7e/2LJ5REvozJIC4awd3DEVrcZkx6HX676bWGcVFOz6UwSCL9TQ4anWbWt7/sJvzG/ik6vdpCZdbr+PHRWR7c1PZmXbpXDUkUES7Do7mk3saSehupQgVRFBYX1clYng6vlWcGQxybTvHf3reCg5NxLAaJ//7ASlQVbuz1UZYVLAaJR07OU6jI1C2cVC16HSuana96vS6fFZ0ocHoutfi8Ua/NaShTZGmDHUHQNitVWcFlubQb8nqjw2vlgwvxSND8wumSTDRXps5mxGaSqMgKK5qdPHR8jpOzKe5cCDeUqwqhdJE1bU7sRolkvoyAgEESSebLTMVyLGt0XPB6vfX2i47j2HSKNa1umlxmTswkF+PPFyOaLdPoMi1uHt8sNXm+649r+4bcdJP27/PPX8tRvF6uSgwuXawgy+pizEVWVF4ciXBjr49ItrRo2PaNxZiK5UCAD6xrQdKJyIpKvlzl+HSS7T1eBEE7Jc7E8xecXF5JqlDhR0dm+ejmtlftpC+H2USeFrflos9VZIXhUIZun+31/u3rMuapqirCRRbPbKlKqSIzFMzQU29bfJ8qssJEJMfzw2EeWKdtZDLFCrlSlQanme8dmuaO5Q1kS1WypSpLGy5c0GVFJZEvYzHoyBarOC36xQ1QulghnC7R47e9ajznGA1nyJXky3EvXjcxz2CqiMdqwCBdvgEKpzXPR6PTTLJQoVCWGY/m6G904LMbefpMEBWBHr+Nx04FuGtlI6lChVXNTsSLfC5mE3nqHaZXbfJe615/rfviElx3Mc8a1wnb/+ZZOv7oUbb/zbPXeihvG8Lp4gVZk6IABp2IIAi8MBRZjLnYjRIrmh18ZGMbTwwE2Tsa4Q9/dJL5ZIFT80mmYnm+uneSnx2f4/e/f4KhYApZUZlPFvi3PRPsHY3yvUPTRDNFnGY9n97RiU4U+NGRGX56bBZ4tcv1tTg6nbwg7nSOYkXmJ0fnWN7kfENG+XrkiYGQFtNFm5/JaI6XxqJEMiW+vGeCZY2ORcMZy5aIZEp8Zc84DXYTX39pgn9+YZQ9o1GOzyQBmEsWORtIYzFIOBa8AN89OM3hSS1z8/uHZzg9lySSKTEUyjCXzC+6vh0m/aLhzJWqi276c8wlC+hE8QLDOR3L8+jJwBWbn9dLsSKTyr8cPohlSwyHMqQXQgqvdQ9Ox/M8dFzLSH/0ZABFVfnLR87y/cMz/OToLIPBNDf2+vDZjYvxTYdZwiiJ/ObNPXR6rQzOpyie55IfCqb5+6eGePpMiNFwlnxJ5rFTAaaiOZ4cCFKVFY5MJSiWqwwFL8xg/uaB6cUxv5VcdbdtjeuDuWSByb+5m44/evRaD+VtQ4//QtdRqaowu1DecM6FVZUV4vkSIPCl3WM0uy1s6/ayvMnJsZkkyxocxHIlWtwmAqkit/b7qMjw9NkQt/T5uW91I6PhLNlSlb2jUUBABW5e6qcsK2xq07IHv31wmlUtLk7Pprh1mR+/4+Lu3FfGiM5h0utY3+Hm0GScjR2XlfF53XPbMv/iCf6JgRDtdRaWNzpxWvQ8sLaZ/eMxrEaJ8UgWi0Hb4PgdJiLZEk1OM00uC0OhNIl8hTuWN/DRTa1MxXJMxXIoqopBEskUKxgXTl0f3tCKIICiaiUm39w/xbJGO1u7vBeUm8RzZcKZEj6bEUXVkskkUUB5xamq1WOmwfn63PJXCllR+fd9U1j0Oj6+tR2AZwfD3Lu6id3DEda3u/nJsTl+5YYuFEXlZyfmGQlluH9tM0OBNLKs8MPDM2zuqsNvN/GbN/UwnyrgsRpZ0fSyq7vVY+EjG9sYi2TRCQJVWWH3SISxaO6C8bS6LQRSRVY0q9zUp+UVbOzwUFUU6haS6u5f00yuVCV5XjkNwEc2tl6RUETNbXv9cVXekI4/enTReE7+zd0vP1Fz274hqrJCviLz/UMzdPusjEay9Dc4WNnsxGExoKoqpapCoSzzvYPT2C0SK5qcxHJlcsUq96xu4umzYTrqLHT7bDx9NoTdKGHU65iO5aizGVjd5l48AVVlBVEQGAymcVkMnJhJcvNSPya9jmS+jMUgXdK1VijLhDNF2uusr/dyr/l8X4qqrKATBSqyyovDEXrr7XhsBsYiWfLlKiDQXmchkSszEspw18pGJmJ5UvkKuXJ18WcanSYcJj16nYjbql90s5v0Okx6Hc8PhRGAG/v8FCsyz54Ns3cswp/fu+JV8z8YTDOfLHDL0vrXeznXjdsWIJAq4LebiGSLDMylmY7nWdPq4uhUnFShQiBZ5L1rm1nR4sRpfjnEUZGVC7wcz5wNsbbNjUkv8uJwhL4GB/vGY/T4rRRKCp0+K3aThNmgI5otY5QEMgUZm0nCZ9fizqF0kXShwpJ6O6F0kblk4Q3XbYJ2ul6IadfctjUuj3Nu3P3jMY5epAzj3cZMPM8TA8FL/lwgVWDvaJRgusjhyTgb2t04zHokQeDgRIwXRiIoisr3D88Qy5UZCKSYiOdodloYCmbYM6y5FYsVhY3tbpbU2xFFgR1LvNhMEol8mRUtTs4EMpycSS2+rqQTEUWB/iYnTS4zK5qdGHQixYrMv+4ef5WbsCorPHM2yOOnA4vZhmaD7o0YzuueQlnmTCCNIAgMBdN86cUxxqNZzgbS/OjILOFUifXtbnSisFCon+ShE/OcnE2xsdPD1q46hoIZljc5CKSKCCK01VkoVGROz6X50dFZAiltfrOlKmtanUxGc4iCgNdupK/BQbJw4eknnisxGs7iNOs5MpW4FtPyltHo1GL0XquRlc1OnGaJn52Y54ZeHwOBNO11Frb1eHGaDcwlC2SLFSaiWUx6HcemE5SqMlVZ4fhMklJV5ku7xxEFgZfGongseqKZMvVOI4IAT54J8YWnR3jsZACvzYTZIPL3Tw0tjqXeYWLJQjKR1Sjht79aHOR8Ts2mGA1nX/P554Yily0kUjOeNYCX3bhbuuooX0b6/zudZpeZzR0evrFv8oLHHzsVIJotLX7vsRpo81iwGCRuWVpPq8eC1SCRLlZp9VjJl2QOTMQYD2cpVmT8NiMddRY6vFZaPBYcFj33rGliIpplNJKlIisoioqAwJGphOYqLFS5ZamfHr+Vj395P3OJ/OLrn/ugqyqcCaQxSiL3r2l6VRmEThRodlvorbe/ZnLS251yVSFXqqKiLpaydvls/MV9K1jerG0yPrG1nf4mB7uHIosx31+/qZs7VzTgtxn4gx+cIJAuYFhI/FnZ7OT0bIrJaI5DE3HuXNnAXSsb6fRa+Yenhml0mHhxNMrjAwFC6SLr2lyUqwo+m5F9YzFOz6UIZ4o8PxRhbZsL64K7+HzOvYeXU3ZzLcmWqgyHXo4nSjqRdLFCZ52NTq+V4zMpbu71c165Jc8PhfjuwamFEASLKk+STsRu0mGSRG7p81OoyGxfqBXt9ttwmg0MzKVo81i4ZamPbp+VY9MJZhMFJFHgj398kuFg6gJDZzNKr5kcd45mtxm/47UN7HtWNGC4TBdvzXi+y2l2men4o0dpdr282Bok3bs+mUgUBVxWAw+sa7ng8e3dXjznlRYYJR2KqjIazvKz43MUKwqxXJl6p4mt3XVs6a5jIprj0zd0smckyj+9ME6zy8I/PD1EtlBmS1cdL43G0IkiR6YS/PDwDGeDaZ46E2R5kxOjJDKfLHJ0OsmzgyGaXWZ+fHQOVVUpVmS+uX+KTLGCySAyHM4gCAJTsfziyTORK/P46QCCILC0wUGXz/ZGMg/fFkzHcxyfSWIxSKxudSErKlajxNJGB2a9jn/dPU5VVglnSjxyap73r2uhqqgcnIjz+OkQTrOeBze30ua2LpZKxLIljk0neXE4zHyywNNnQwwGMyRyZZY3OxgOZxEQ+fDGNgaDGSSdyN2rGolkSswl8gzMp8iVqkzGchTKMjOJwgWiCaWqzHcOTiMrKt/YN7UonnE9ksyVGQ2/bDwzxQqxbBmnRc/xmQSddRa2dHuxGCWC6SL/8PQwRyeTHJtJsrFDi9XXWQ3sHYlyfDqBSS8RSBV59FSA1a0u2j1WZhMFvnNwmp+dmOPIVJJQqojVKFGWFRoX4sEPrGtha1cdiirw7GD4ssc/m8hjMegWQx+vpCor7BnRvEiXw9sm5ikIwnPAf1dV9SlBEP4b4FRV9T9e63FdAa5qzPNVnBfzfM2fuf646jG4XKnKntEoffV22jwWRFHgLx8ZwG6S2LWsAXlBpUYQtNja6bkUTw+GWNfqIpAqEMuWmY4XuHNFIyuanbS4zXz+4QHuXd3M+g43hyfjDIUy3LLUT6PTTCRTwmrUYdbrqCoqkUyJ/eMxGp1mVFRWNDkJpouL9XCyohJKF2lwmIjnyxfVun0TXNcxz1JVRi+K/N2TQ3xiSzuNLjMVWWEqlqfHbyNXqvDYqSB+h4nZeI7jMym293jZ3lOHz24inC4yEs7S6jaTKlRZUm/jucEwy5vtPHs2yh0r6vHajORKWmbn2jb3BfHN7xycot1jwSDpeOTUHKdm0uzq97O2zU1fgwOXxcBENIffbsRqfO2czXOxRd0vKl68PN70nOfLVaZieaqyysoWJ6qq8vWXJplN5tnZ46OiKGxor6O8oND00PF5buit44WhKCqwudPD2UCKjjobo+EMjU4zy5udzMTz5MtVljc5L0h6U1WVr700yce3tFOVVcYiGfaNxVAVeN/6Zo5OJal3mlhzXrZyuaqg1wmvuTncNxZjSb3top+FUlXmG/um+JUbFuUELznnb6ds2z8HPi8Igh9YC9x3jcdT412MWa9jeZODM/NpGpwmSiWFbd1e7CaJVKHMS2NaZudQMMPdq7QM2kaHiecHIxycjPP5+5YTyQYoVqu0esykCxU+uqUdRVVRVZUNHR6WNjrYMxohXaguSp/97PgcU/E8969uYiqW531rmzk6nSSRL9PpfTl+mS1VOTOfxm83YjHo+PaBaT6ysZVMscKpuRQ7lvgIZ4qLdae/aBF/uzCXyOO2GPjHZ0e4d00Tty71I+kEvrl/igc3tdHiNnNgIsZQIIPNJOGxGGhyGHFbDViNEr/xraPcstRPg93I02fDfGhjCyBg0jvZ1V9PIl/hgfXNOEx69oxEsRp0PHkmuHDiFNjW7SWYKrCy2UlVVpF0ImtbPbxvTQurW90MBTM8dirApk4P6WIVh0l6zXkvVmROzqZY1yYsNge4lqQKFbKlKhs7PMRzZRwmiXXtbnKlKrmyTDJfoVip8rdPDLGx08ONvV7cVgPLm+x0eG08MRDk6FSCgfkUGzu8zKcKnJhLMR7O8lu3dPPIyXly5SqSKPKp7Z0YJZHbltVzcjbJ2lYX4UyJrV1ehkJp5pNFbl3mXxQ7iGRKRLNFjk0niWbKfHZn10XF9bd2v7bOrVHS8entna9rTt42nxhVVXcL2pbid4GbVFWVFzRkvwiUgedVVf3WNR1kjXcNoihgN+pxWQzodSLfeGmSHUu8fH3fJDajHoNO4PRckhaXhY0dHgw6kX/bO4GsqixvcvDkmTAOk8TXX5pEEgW+dWCGvgY7XV4rTpOeRpcZm1EilCpRbzOSLlZwmPTUWY08ORAit6zK+9e1sHs4woYOD1ajxJdfHOcTW9sxSjqcZj3beur45v4pPrm9kx1LvHz/8AxrW11MRHPsWOLj2bNhvDbjJes8p2I59DqRJtf1LSf39X1TvHdNEw9uaqet7uXY1wNrmzkTSDOXyJPKlwmni1iNVn58dAZZBUkn8KF1rfzazi76mx188blRyrLMaDjHvvEYNyzx8eOjswyHM2zpqmNjuwcVlYlojmyxQqla5ZGTYVa3uDgTyHDrMj8/PxXkV27ovECBaPdIhGJZJpErU6jIfPH5Mf7krmUXxKCrskK5qvCDI7P88rYOcteJZGKj07wYR98/romA1Fn1bOnyAAI3LPFSURTqHUb2j0X48dEZblnawMGJGC0uCzazhKKqHJ1KMh7J85s393DTEjP/6+lhzgTSC7F9leOzCYw3dhPNlDk5m+ToVIJun20xQ7lQlRmPZPDaDTS7LDw/FEYUBAQBljc56a23o9e9PJ+ziTw+uxGjpKMiKwho8dapWI7BQIaKonDPKq2c65wgQypfwWm5uGv3fN42MU9BEFYCjUBZVdVzjvcHgB+qqvpZaifRGlcZo17EazOgEwW29Xh5fijCmlY3m7u0k4XbYiCQLvHjo3OUZZXP7OjgzhWN9DbYuW9NI6fn0mzs8DAeyeG26LltmZ/94zG+d3iKP/vJKX5weIbeejtum5GD41phfp1dj9Wg46kzIR47HeD4THJx8f3Mjk6eG4wQy5b4weEZkvkKGxZOCm0eCx9Y30Jfo4NPbO2gUJa5c0UjbqvhkglEAtridL3zS1vbmYjmFw3nl18cJ1us8KXd43zv4DSziQLtXit+h5HhUIZ4vsyv39jFrUvrcZj13NbfwMmZFOlClRuW+LljRQN/ds9yHh8IMJPI0+gw88/Pj/HF50c5OBFnxxIvoXSRM3MZ/vze5bR6LNyxvB6P1UAwleenR19uXfeFp4cJp4t8dHMbLouBfFnBbzde0OILtGzPuWSBX97WAXDNPQLhTPGCBLlkvsyu/np+eVsHp+czlGWVI9MJdKLIvtE4IFCsqtyzsgm9TuTz9/bT5DZx36pGWt1m/v1TG/mTu5bx7QPT/N4PT/Le1U0YRB0vjkQpVmUS+TLzqQL7JmLEc2WaXGZ+fF4LwIlIjvFIfnFM27q9GCSRLp+NVo8FWVX55v4pnhsMMxrOMhXLky1qG5AjUwlOz2tavG6rgTVtTu5Y3sBoOHNBBvQTZy6dZQ9vk5OnIAiNwLeA+4H/IwjCexZE11uAUws/dn2nqtV4x/DcYJjNXR6eOhPijuUNVGSF+VSR2/rriWaKWtlJh5sTMylu7vPQXmfl2wem2Nzl4adHZ8mXFeLZMh11FmxGHSubnURzZTZ31bG928s/Pz9Gp0+PAKxpdXFgIsZ0PMePjsxwwxIf713XzHyywIomJ30LiS3PDoZY1ujAa9OzezjCTX1+JqNZ8mWZdLGC26xnMJjh3tVNSDqR7x2a5qOb218lwH0xzj/FXc80u8zUWV+OZ61qcXJiNkl/o4NgpsiHNrTyk2NzxLNFHj0Z4AsfWYvVIPGDI7Ns7/LQ5DKRyFf4pa0d/NeHB5hPFfijO5fx7YOTrGp2MRjM0OQ0YTboaHCaSeTL/NUDqzBJOgYDaZ4dDDMeybK+3U0wXeLBzU5OLKgV3djrw2mWqLMZqbMZF8srXslty/zXVUJXulBBFASS+TLRTJmfnVgQRlDhj+9chtmgo8tn4/hMgicGAoxHcnzmhk70OpHlTQ6+8Nw4VoPIH/zoFLf3+ygrKiuanfzqzk4eOxlkPlUknivzvrXNfPvgNMsaHfzj0yP82b3LOT6TxO8wXpCgt7LFiaTTeq0qisLZQJpOr4XZRJGJaJZgusj2bi8tbjP281SeALac157MYdIvJg41ucz4bC+HhT90nmbvL+K6P3kKgmABfgz8nqqqZ4G/RIt/AsyiGVB4G1zL241zmbjv5qxb0Iq5Y9kSzw2GNVes24xR0rGp04MkCvzg0Aw2o45Gp4lCRUEQBeL5Cr9xczeZQoU9I2G2d9fR47ezpcvD525bQqkio6gKBp2Of3xulE9t7eDrL00yFs4wFMrgsRgIZ0rMpwoYdALFiszqFielqsLWbi9uq56/fXKI//Hzs3zn4BSPnJjnX14YYyyc471rm/HZjUzE8vQ3OTkyGeeFhT6K5+JEn9zeuZjkcmo2xXjktWvf3i4IgnBBrGtNq5tkvsJUIkc4XeRz3zvOnSvqCWZKfHxzG8dmk3zn4DSf2dGOglaG9NRAgD0jEW7t85MtVfiXF0YZmEtxaCLOEwNBltTbiGbLKIrKM2fCPD8U4YmBIPFciZXNDv7s3n5cFj2/cWMXI6EMiXwZh0lPl99Gp+/VBjOaLS2WcVRkhYqsMhzKoCxk3Y6EMq/6natJj99Ol89Gi1s71e1aXs+ekShPDgQpVxXC6SJ/9cgZvrR7DJtJxy3L/EQyJU7PJnhpLMaaVgfliozbosduNPLN/dMk8hWGg1n2j0fRiwLpYoVSReHDG1rxWo3oRIEz82mS+QrfOTi9qOIFIAiwvl3bkP71zwfZPRLBZzPRXmchnivT7bWSKVY4OZtCVbU5lRX1F7q/LQbpsty0r+S6NziqquZVVd2qqupTC9/vVlV168LTPwbeLwjCPwEPX7NBvkPZ+0e3MPk3dzN33s37bmRlixOnWc+GDjdziSJPnw2hEwUanWa+c3CaR0/N87W9kzx6cp5jMwkG5tLc3Ovj758eoVCVieerDIYyHJqMky3JvDgS4Y4VDWzt8S2oDlX50p5xYtki/++5MZwWPY+cCrKz18u/vzSJ12ZkfYeHM4EMz5wN8Y19kwyHstzQ42Vzp4cbenz8ys5ufv3GHpbU2xkLZzkyFeeBBSN6e38j961uWmy8nMyXmYm/XCva6DLhfY3i8ucGw9dd/WG6WLmgpOPkbPJCt9vCwm6QRHobbIyEsmzv9iKJcGwmxaZOLz0Ndp4+E6TRZSCerdDqMZMtK9zUV08sV+bIdII2t4Wnz4QoVWSmE3m8NgNrWt3odQLLGh2ogorPauT5oTBf2TNBIl/hxZEoj50Kopd0bO32kspXmE8VcJj0nJxNMntejS6AWRJpdZs5PZdiYD7N8ZkkM/E88kIVRCRT4nrApNexvcfLzX31eO2agAGCJivZ12jn3tVNZAsVBuZTRLJl9k8kGAtnqLebWdnqYnuPF6dF4shUnEyxzHA4gwLsGY3y46NzRDIFfnh4htlkHpfFQIfPyqYuD3pR4Gwgw/cOTvOlF8cZWigTOjQZ5/d29dLusZJYyCb/6OZ2HCY9c4kCbR4Lkk7g0ZMBjk1rhvxyeeZs6LJ+7m3htn0tVFXNAZ+61uN4u7D9b55dNITN13nyx/XEOTFxu07kjhUNi9qZ45EsqUIFRYVP7+hgOp6n2Wnh4ZNznJlP8d51zXz30DQfWNdCOF3iJ8fmWNHsRABUNIWW5wYj3Lmikb1jMQwiZEsym50ebuuvBwQ+sL4FnSjS5rYgAnesaODgeJxsqYrDLOE0GxBFgXJV5uETc9y+vAGLQauzOzyVYEtXHbtHwqSLVRocJj62pZ1iRdF2+1WZuUSBLt/Lrq2KrHB6LsXaNjeFsozPbkQSr6899oHxOMubHIsJTK9sV7XEb0NRFf7x2THWNDuIZcvsn4izubOO/kYH88kCpaqMx2Lkv/5skPeuaeLobIoPb9DqPqOZEh/Z2EpVVdmxxEtVVilUFAKJAkOBDPmSTJvbzJDVwEg4TbZYYXOXlwfWtTCfLHDf6iYEQVgQf4eZWJ5nKiGWNzlR0TrxnGto/uU9E/T4bTjM+sXHDk3GURaM57Ye71Wc2dfmoeNz3LqsHptRYn2biyV+G6WqzMpmF/OpHP/vuTF8NiPtdRbes7yBVK5Mg9PEVCJHMFlCrxMYmE/xtx9czam5NIFkkTv6GzgxG2dpg53Dk0l8DhPLGh28OBLhd757jG6fldNzaT67s5sfHJqhUJXJFcrYjRKKCiaDxI19PuwLceH5ZIE1bW4eOx3k/rXNJPMVbur1YTVJr0vbttVzeWGKt7XxrPH6OKci9Ho557499/+9f3TLWz20txUuiwFF0dxr96xqZEO7G7vRwPND0/zy1jbuXNFIIFVkaYODX9rSwU+OzbK9x8dnd3aSK1UZC2eRdAJ2o8T/eP9KKrLChg43u4ej6ESBqqJyejbFTb1+vrF/ilaPCatRj6KqdBWrtHgsmPVazafToudLu8f44ZEZtnZ5cVsMOMx6qoqNf3pujKqs8OCmNqqywkhEE9tucJpocJpIFSoE00UanCYsBm0pUFXIl7WT5tlgGr0oXneKROcajp/jldnCXT4biqJiNegQRBGfw8jndvVSKGulFJPRLLcsref37+hlLJhl32Qcu0Fkid9OtlhhWaODsgxlRcVrMxLJFAmlCvQ22hEElc2dHh4fCJItVVnd6uZMIMvdKxsBbfNxdDrJ+nY38WyZHx6d5dd3duG2anNekRVCqSLfOzTNhze28cltnRybTiwaTgCjJJLIaaept6r35JshXaywrduL1aCjUJbx2k347Fot8aMnA6xpcbJrmZ8un41SReWhE3OMR7OcCaT44MZWuv1WxiI5bl1Wj91kYHuPl0i6yOauOrr8NmZiOSbjBe5YXo/dpGdVi4t6h5HHTgVAFUgXy5wNprmhx8fX9k1QZzNy39oWTs4mWdboWMySjWZKRLMlPr65nVJF67JiNujo8lov2yDCa/cOfSU141njkpxvLN/tXVhOzaawGHV0+2y8Z4W2YM4mC3zzwCSf3NaBitbv06jX8a39U6xpc/HrN/VwdCpBo8PK73zvOGtbnTx8fI5CWebIdIL3LG+gWFWIZUr8x1t7OTIdJ5krs3skzMYON8+cDdLps5MrVVnRVOFMIM1ty+o5PpNkS1cd23u86HUChyYSfOfQFHetaKLZZea+NU2kixVGwlnWtrnZaL3QNWvSi4yGs8wlCuzq1xYugyQylywQy5belMD2teTnpwJs6/byoY1tWPRaQst4JMvAfIqJSI6dvT7GolkMOpF8RcFhkvDajRyejHNyNonNpAcBgskCbV4LPzw8i80oMRjK8ru39+IxG/j2oWnuXN7ASCTLH76nj0dOBjg4EUenEzg6GUdRO9jQ7mF1ixu31bhYp6vXiaxpc7O00cG/7ZngrpX1iyLn51jV4uKh43O011kw66XF370WFMoyj50McNfKBv7qsbNs6vAQzZY4PJmgrU6L/TstBsoyFCoKR6fi1NtN/NunNnFsOoEoCKxodjIZyfH5Rwf46dFZQEQQVDKlCjajAZ1Oxz2rGtEJAsenExycTLDEb0PSifzytg4seh02ox67RU9nnY29YzE6vDZCmRJ9DXaypSr5UpVtPV5eGosyGcvR4DTxnhUNr7oeTQnJ9oZinK+kZjxr1LgMUvkKVqOOZreZh0/M8ezZMBs7PTx+OsB9a5q4a0UjjU4jX3hmhG6vlTOBDHesaMBiEGl1W9g7EuGRk/P0+q00e8wcGE9gMejoq7dj0ot0+238/HSQJpcJh9nHb3zrKKoK69tdBNIlItkyH9/aQbpQYf9YlHaPhcloji1dddTZjDjNRj66uZVEvspLo1E+sKGVDR0e8qUq+8ejnA2kWdbooFiRGZhPkytVWd3q4v3rWrAaJRRF5c9/dpot3XWXnW14vbK+w42KymOnglSqCoIAhoXTya/f1M0LwxESuTJnghk+u7OL7x2cYi5RIFOo8v51Wtbne5ZrZSvZUpXtS7z47UZEAXYPRljZ6uTXb+zmyTNBnjkbYmA2xcoWJ/Fcmfcsb6BQrvLjo3NsaPcwGEijE1T6GhxMxXL8+Ogs/2lXHya9DrNBZPdwlHXtL7eES+TK7B+PMRnN0ewyM5XOXVPjaTbo+MimNhRF5fblDWzq8LB/PIpOhJFQlga/iXiuzFyiwHwix3S8QIfXxl89MkChomA3SRwYi/Ho6QBNTiOpQpXfuqWHfLmKrMBkNEeH10qd1cAH/vklblnq41dv6EAFTsxqIgrrOty0eMzMxPKs73BRkVUOTcWpsxoIpUoIApyeS9LoNLOt28vBiRizycJi0/oD4zGWNdrZPx5nMpajVFbY/ArBhOMzSRocptfVEu7a+wRq1HgbcGgyTiRbwiiJ1FkN/NLWdlY2O/mtm3vob3QSzpb49NcOMRTM8PPTQZo9FiLpEv/+0hSf/tpBPFYDR2eSdPpsiIg0OU3oJYFAqshkLE+Ty0Q0XeDvnxrhWwemcZklqrLCRCSHJGiKM1a9iF4n0lNv46XR2GKsciyS4QvPDDESznHTUj82k8TTZ4JEsyV2j0QwGXQ8cmIeVVUX+k+qxLIlLAYdTwwEmUvk+dpLkzywtoVur+0150BWVKZiudd8/nogmi0xFc3hshhY1mBnIpJlcD7F/3t+jC6/jUi2xIGJGLKiMJvI8s19kyiKSjRbZnmjg9v6G5F0Or57aJqVLXayJZlkoYqqqvzL7gmMenj8dIBv75/AbdaTyJVp91q0ms1cmW8emObYdIKqohDNlvmPt/ZgkHT8wQ+Oc3gyzs1L68mXq3znwBRPnQ6yutVFs8u82OnGYdazvsPN/Wua2dDhYVWL8xJXfHUQRYFNHR5eGo0yHcuTLyk4LYaFDiUqsqJw67JG/teH1lAsK5SqCsF0iaPTCeaSeSx6kaoqUKzKnJpLMhkvcGAyxncPTbNvLMqfP3Qas14kUyjzT89P8KUXJ+itt/FfHjrJH/zgBKVyFVGEzV11bOjw0OQ0kS1pZVgtbjPj0RzhTIlErkw8W2Z0IUtZVjSlJ1QBRVG5e1UTuUqVh47PMR3PLSbOeW0GrMbX1xS+dvKsUeMyuG0hzqYoKmva3Bj1OkbDWSqyTLmq0FVn5Z5VTZSrKmcDSax6HQaDyNJGG4cm4hwYj9PqtpAqVDDoZXQijIdzbOyoI1+u8IWnRpiN59mxBHYPRVje7GBNmxurUc9zgyH0OoGfHJtjZ6+Pm5b4KSsKT58JE8+VqLMa8NqM7FpWz2g4y3RcEyRPFar0Nznob3SwttWDIAgYJR3xXAmrUWImnuc9K7QEo1/a2n7J+FqpKjMSyl63bcwyxQqPnZrnqYEQH9hQYDZewGM3srzRyce2tPPff36WrV113Nzro6rA/vEI+8ajeCwGltY7+Mjmdv5l9yg7ltTx1ECIk9MpBJ3I+jat1tZhlIjlysSyJcbDWewmI5s63BQrWp/KjV0e1rW4OTqTYCSc5St7xlnit3PzQteQ5c1OljY4GApmuLHPx6bOOrr9Nh47GeDYTIK7VzWxptWF325iopSjWJF587K2bx1zyQJHphJs6HBzNpBmeYOdQKaI26InV5JZ1+7id753nN+9bQm3LvXy+UcGyBQqlGQFVRBod1uYT+cZC+UQBOj22en02ZiIZilUZD64oYWRUI5gOk8sV2H/eJz3rm0mX1H4xNYOUoUKf/34IL9zay8tbgurWgz0Nzk5NBnDopdY2ezkyFSCBpcZVJXBYJqv7p3gV3d2Y9CLNLstNLvMNDlN/OzEPCAsJmad343lvJ6ev5DaybNGjUswFsku1omFMyWGghmmYjleGArz5RfH+W8PD3BgMo5ZryOYLnB0NkUwXeAnR+YIJItUFIFWj4nJaAajTqDebqRQUUAQ2NLl4bdvWcKaNhc6SeLhk/OsaHZQ7zQRy1U4PBmnr97Bhze2Mx7JoSoCx2eTHJ6M0+A08cKCPNnt/Q3UO0347EbCaS1eWWfTUyjLnA2keOpMiGJFRlZUtnRqGrz7xmJYDJr+bllWXvP6z5WqWAzS4ibiesRmlOj2asLfw8EM+8ZjfHhDK36HgS8+P0ab28rpuQytdVacZolItkK93US1qnAmkOLfX5rgR0dmefJUELtJot5lYjSU4fmhEDOJAs0eM8emU7R7rJiNEsem46xqcbGjx8eGDg9tLjNf2TvBsgY796zUyoNkVcFh1nPXykbkqrKofvOz4wHKskJVVphLFXjvmmbaPC9nwAdTRUoVhVPzqV9wxVeOQllerDEtlGVOzib4l+fHsBo1dat6h5lb+htY3eLmh0fn+fCmFv5t7wSBRIF/fmGMT339MF1eO5JOh0UvUSjLlGWZdEFmQ6cH04Iu8O3L6vGYDbxvbTPRTJlYrkRvvZ0HN7byS1vbyZVlihWFJ8+E+NcXx5FEgVKliqyo/PTYHP++b4KnBkI0ukz4HSZ6/DasBh1Pnw0xF89z21I/RkkkX6qytPFl93dHnZVWt3lxIygrKmcDaV4YClO4zH6etZNnjRqXYCqWJ5kvs77dg9dmYF2bmyfPBEjky9ze38C/vzTFgfEoNy/10+G10hw0cXu/dgp85myIv3lgJX/56CArmxyoiOweDjMVK9BgN/GPzw7T4rbituhZ2Wwjminz3FCEDp+VHV1exsMZTmZLDARSmPQSep1AMFXkucEwm7rcLG100uO3U6hoXUOm43lWtThxmCVkRcuUHAwWcFsMfOvANGa9QCBZ4jdv6VnUXc2Vq/zk2Bw3LPHS5nn1qfI7B6bZ3FXH0gb7daV+cw5FUfnR0VkeWNfCRCxPb4ONbp+dBze1kchrrtS/uG85oiBQqiiIIvz2d4+zoc1JIFViKpajJCtUFBWn2cBMsoCjWCGSylOuyuRKVertRrp9Nn50ZJbpeJ5tXR4GgxkePhGgN5Tlp8dmCSQLBNNFNnd4+O6hKbYv0RbuuWSO03MZJmM56u0mDDqRiXiO03MpOr1WPBYD3zowhQr89QOrgJdFzBsd10YUvixr5UygicJPxfKYDTret7aFn5+aZ0O7i6fPBjkwHmMymueHR2a4pddHOFPg1j4vp2c1MZG2tJlssUy724IoQDCVJ1+qEEjkcZp1PHU2SDBd4uBkFL2k52ObW5lNlHj0VJCZRJ5IpszqFhc7e33MpwqUqwrfPTSLKILDqMdp1rM7GuHe1c18de8EHXVWhkMZbu7za5nNGa2lnCCorG/30Og0IwgCq8/rxgJwNpDmsVMBOrwWjs0k+dxtvZeco5rxrFHjIuwZibKly4OkE1nV4iRV0BYSSSfithoIpUskcxWm4zk+uLGZwWCGb+yb5j/c1E2zy8znHz7D1h4vXpuBr740jcOsZy5dYk2bmycHtEVgPlUkU6pg1+sYDqZY2+6hRW/A71QoVWTOVaLrRZG+Bjt9DTa+8OwImzo82Ex6Erkqv3lzK6WKgsMsYTaKDAbTyApkShKrW1ysbnWRyJVR0Rp3H5tOkC7EODqVYCKW42Ob21nXppVVKApMx/JaxxHry5JobR4Le0aiLPHbKMvyYlnL9YIoCtzY62MylmU6nuPBjW14bEZm4jn+95MjbOp0MxBI8+Xd47S6LWxb4sVplhgIZkgXquglHUVZoVKVaXQZmYhkcJn0zCSLGCQd0VwVp8VET72dT+/oYCKW48BEAqdFz7ZuD4em4pQVhWSuSrPLyEMn5qgoWmPlHxye4Zv7E9y6zE84U8Ri0DEYzGDQiTQ6TZj0OpqcRlZsa8dnNzOXzPNPz4/xyW0dzCWLOM1vPiv0jeA061nd4mIikuXIdJKqrHBzn48jU3Hi+QqHpxJMRHPU20z84NAsHpuBHT1e0sUq6bJCvcvMUCiD26Ln8dMhljXY0OsFwpkKX3xhjCaHCYNeR6UiY5YE5qtQbxJ4ZjBMi8fCr+7s5J+fH6PRYaHZY+HgRBy/w4zbYmRdq4uXxmJsX1JHR51VE543SbTXWejx21jb5sJlMWjqTmY9IFCRFb65f5Ibenyki1WW1Nsv6EK0otlJs8uE1SAx/Qohi9ei5rZ9F7D9b559VcPrN8q7RbKvXFV4YTgCgNemnTpA6zP41b0T7FpWz67lfmRV4ImBELPxIu9b28TekShnAymShSrlqkIoXSKUKZIrlpmLZXnoRICvfnIjGzrcrGyxs7TBjmTQkS/LHJtO8KENLfT4bPy3962gJMsEkzkGgxnyZa3x8OpmO2ORLB/c0Mw9qxs5OZvkTCDNZCxHuSrz/cMz3LuqgS2dWkmBqqqMR3MMhzKMhjKMR7K8Z0Ujfofxgl6It/XX07EgbZbIXShWvrmrjo0dbiSdSCx74XPXkr0LySugudOfORvmY5vbEUWBQxMxIpkyyxpt6ESBY1NJ1rW62NTpJpwqEk6XqDPr0esE/su9/cRzFX56fI5nzoTp9Nno9tuwmvTct6YJt8WALCucnE1TrKr0N7i0U32hjNNqoNVjYWm9k0ankXCqyLGZJC0uMw0OEyubXdy7qpFgssiDG1t539oWPryxFa/dSCRToliRGQnnePJMGI/VwEgoy019Pl4YjtDltWqbqGvEfLLIZDzPB9a34DTrUVWVJ88EuXtVI26LgZFwBp/TRJ3NQDRbJpwrc/uKBnb2eDFJOjxWI6oKyxrsvG9dK7FsmR3dLvoaHHxwfSvJfJVkvkQkXcIkiZgMOkRBQC8I/OjoHCaDjv4mO2tanTS7zORLZdo9Jr57aIayoklb2kx61nd4UFWVTLGKXhJ5+myY//PMCD88PIN5wT1c7zBxcibFv+4e58Y+H+2vqPuUFZWnB0P8xSNn6PHX6jxrLPBGxREuxrmaz3d6vecNvd7FbgwAZ+bTtNdZ+B+PD9LtsxLNlehvdBLNVmh1m8mXqxwYj3PLMh9zyRwWvQ6rUUcgXaTdY2bvWIKuOjM2k8SvfesIu/rr2TsSxW83YjZINC+1MB7OEEqXUFH5/uFZpmM5bBYDuXKRgfkMk7ECPX4rp+c0weybe31IOpHRSBazQSKRq/Indy0llitTlhXiuTI/ODKLKAisbXPit5locVvIl2VaPGZOzWrxtGypSjJfZmA+TY/fxr6xKN8/PMMf37UMQBNJWHDXvp5i8yvN8ibHopZtj99Gt8+G2aDjhaEwA4E0ZknHunYXuaLMF54ZwW6U+IijlSfOBAikCyiygqTTcTaQoaPORLaoYNCp+GwGZFXhP+zsRicITEazTETzCAIcny6SLSk0OPTMpyt87+AUgiCys9eLy2zgtqX1NLvNPHYqyHODIeL5CksbHLwwEuWRE0FOzSfZscTHDUu8DIYyfP2lCVwWPU1GE4WyjEEnclOfn2ypyjNnQlxLcacml2mxKcC2bi9ngynKFZVErkyxKvOxTW2MRHIIgkqjw8CXdo9x7+pmHjsVYFWTk+FwmlSuQqpY4csvjtPlsxJIlWh0mghni7jMEhU9RHMVDDoRoyQSSBXoa7DS5rEwEy8giCq/8c0j/O8Pr2UuUeDF4Sg9fhsf2diKx2rk+4dm2NTlRi+KOM16TkzHeeZMgF/e1sG3Ds1QqWqauQ1OE1/82Hr0kohRenVWbShdQC+KbGhzUZGVy1IkqhnPGjUuQqmqoJfExQ9SRVZQVJUN7W66vTb+80OnuHd1Mz6rnuPTSWK5Mu9f18oTAyG6fXbOBDIcPjyLJApE0gWWNliZiWsxNASB/5+9/w6P6zzv9PH7tOl9gEHvhb2TEqlKdVmWbbnbie04sRMndjZxks3G393s5pdNc/omu4kT24kTx72qWZLVRapQ7B0gegem93JmTvn9cUCItCiLsgopZe7rwgXMYDB4zzsz5zlP+zwPnVyiJ+ymt9HDkdkMsiiQLtd4djxOrqxTUKsosoAogMsukS9XkUSB7pCHNdf5+Pdnp3luPEnQpZCraOwejPD+bR38jx/O0Bpw8s5NLTwzmqA14CTgsdO3LEq+utmHbprEchWKqka2VOVb+2fY1h3iyp4QAZeNjqCTxWwFsDzte48u8O6tbZfy5bgggXOmbZxVGfr7x0bZ1O6nPeAiW6nhsSt8ec8UjV47hmnylw+PEHAprG/xk8hXqOkmDxxf5JNX9/LHDw0hIHJoOo3PKXNwKk2+ouNzyoTdMifmc1RqGg5ZxN3o4gPbGrn3yAIVXaenwU3E6+DRoRiNPhvv2tLGPzw+Sqlq8OWP7eDagQbuP7ZAd9jF7tWNzKcrtAecbGrzkyrVePDkItu7Q4Q8Nh46ucTWzoClKBV+6dah15LjcxlCbhvtyxXh8XyFr++b4Rev6SZZqLKlM0hfxI2ByfcPWwIODxxfJFepYZcldvYGuPvwIsdm0vz2LYPcMNjIL3xlP6eXCoRcMgMRD/myylyqwFSiiKYZZEpVQm4bmlGlwSNTVA0MA54fT9MZcvKhHR08cSa2XDSks38yzdauAE0+B8dmM2zsCDAeL3DdoCVhaBompxfzRPNVWoNu7JLImlbr/f7vz06tjHmr1KyLlOcmklRrBlm1xkDEw/pWP4dm0sxnynRfREV53XjWqXMBphJFTBOen0zysV3dKwUG/REPPzwyz3+5cYCpRIG/fGSEK7tDrGsLMBYvMJEoYpgmLpuAIAIihNxOvE6FgNOalPKRKzuZTZZ4fjLFdLLEUraMBLgdCkVVs6pbBQFRkNg9EOaHR+YpagYDbhvfPzxLQdWxywJ2WebOTa00ex2cXMiydzROe9BJo9dOvqLhWZY6W9fm58RclvuWx0kdn8/wr3sn+esPbuS///Ak61q9tPgdBFw2Esv9n2erEAVB4KY1kZUr8YKq4bnEMyZ/Glf1hYnlKyzlKlw/2EhbwMnWriC7esOMRHPsm0xydCbLM6MxHA4FTdMpVQ2+fWgOWZDoDDuZiudJFU10AwIuBbsMQ0slRAE6gw5iBZWw245dkhls9rGYK3N8Jk1b2EPAKTOTKvPoqUVuX9dCXtU4Op+hqGp0ht20BRzcfXiBOzY0ky7VaA+5aPKZfGnvOF95ZpL/eusqmrwOfE6F3ausgqM3gojXgWu5z7FS0y3BiG1thNx2jOVC7EaPk5+/sotGr53Pff8Et6xt4uB0mv2TSTTDpDXkXFYNkvmD+05b2r4CVGoaR2czBN1W+qM14GRbd4gzS3mGl/Jc0x9GN2EqWWR9g494rspkssxXnp1EEMBrl/nugVmylRr3H1vkit4QT5yJ89cf2IzHIfPk8gzUTMlqI/rc7atJFlQ+vbufTLlKQdUYj+U5OJWiM+TiS3sn+NR1vbjtMo0ekUK0hiQK9Dd5cTtkFi7SeNZznnXqXID1bX42tPv55LW9K6O7wBpOvLHNzz/vmWDfZIqAQ+aWdU3opkmlptEVclGu6UwmSlzbH2ZbZ4hUucrR2RSCAEG3zKNDUQ7NpEGAyUSBXEmjYpj0NLqRBYGTC1nGonlGYjkeHYpxy7oWNrUHWMxXCLkVtnYFcNpkIj4Hd21p555jizw1kuAbz08zlSjSEXRxcj7HR3d2sW65ovY7B2eo6Zbazun5HG/f2EpNg9vXN/Gp6/ooVXUWs2UmE8Xz8pqzqdJ5Eyl+cHjujXsRfgYErDRFZ8iJIllSg7lylf9x9wlOLmTpbvDwoSs76Gvy0RF0YQoCjV47RVUjV9YYXsiTVUGtGXjtAjVNRzdFfv6KNlr8dhq9DjrDbp6bSDCZLHBVf5hkocojQ1GeHoljUwRmkiVm0xX2T6W4blUjX3hyjBa/g4jXxm1rm2n02vj01w+zsT3A4ek0JxcyfOHntxHxOnjwxCL/8MQo2XKNmVSJPaPxN2Tfmv2OlfmWTT4HW7qCrG8L4LHLdC8X1pSrOvsnU0zEi1wzEMapiLgUiWavjVRBpVCqMR4v8r/uPcXx2TStAQerW9yUayAKArIosJRTeXw4zpf3TjIWtYznqYUcJrCQrpAtafzWLavwOWWyxSr5ss7t65oIum384TvWsabFx6qIl5aAg2fHEximgdMm0eC1IQoCG9r91AyTtS0+9k+leOR0lIDTxm/fuopcxRri0Nfg4cR8js0dAQabfQRcNpLLw7WHF/MX3cd8+V5C1qlzmTGZKOKySZiCwB3rm+ltdPEf+2ZpCzgxDIOKpi+rBlXZ3hXk7RtbyZQ1vvn8JAkDTsxlKFfN5cpXhYKqYZfg9/Z/i++985OMRvN4HTJVDeyyScBhleLPJIvEcyqpQpX1rdaA543tQX7/7WsIumz86bs3UNM1fnBkgURBZWgpy7HZDFu7A6xt8ZMpVbmmv5HBJg8/Or7AXLrEdYMR5tNlIl47CALfOTCL0yby27euPu+Y24NOms5pl/jYru43dtNfAQenUpxZyjG0kOPhU1G+/smdHJlJc2o+T75cZWghh99V4fee/zaPrL+LiN9Fd9DNbLqIzynhtIuEHBIDTV52DTTy8KkYY9Ec+XIVQxD57M2D/M0jI1RqGq0BF4dn0jwzmmRDh5/1LV6+uX+WUrVG2G0Zk5yqkSlU+fx7NnJ6Icd3D87x9EiCawYa+K+3ruKJoRjFmsYta5tw2mRuXdfEbLKELEn80X2niPgcFzWs/PXgufEk3Q0uWvxWkeG39s9w15Y2Bpo8pIoqDkVi96omaobBoekkHSEXw0s5BEGgI+Ag6LIxlSzSE3YwHivxu89/i0fe96scWB4dly5USRaq9DY4mc9WKOs6qqZjl0QeH45imFDVoSdoJ+JzUKkZPDOeIFep8Tu3rSKaV/n2gVlsokjQpRDx2tjU7kfXwaZIuOwyt6xtwuewhsM/eSZOk9/Ok8Mx3rutnU0dQb59YIadveHzCgIDLoWlbIWGukhCnTqvPVs7AqRKVUaiRaYSBaaSJZZyFRbTZY7N5PA7FY7OZdg7lqBcqy33DyoEXApnayf7Gl2YpkmlZvKJx7/GfLpCoqCykFFZ2+LBZZNp9NpJlzV8ToWqbmBXJFyKRLZcJehSuPfYAn/+4BAf/NKzeB023rmpldVNXp4eTdIedPGt/bOkilX+ec8EYa8NSRSYS1cIe+3MZ0qsafHx6FCM+44tsKMnxDUXGH/1vUNzP1VA4VJgGCbmsjKMfs7Pq1t8tAdddIddfGZ3H7/17aP8+zOTKIqVw9YNA7ddYctX/p7xRImpRAGnXcQwTKYTJcIuhZxqkCjW+Ne9k0ynilgqNDpPDkX57qE50kWV7rCHnT1BlrIVvA6RkWieZyZSmAIE3XZ++9ZBNMNE002WcirJYpUWnw1ZEokVVBq9DqK5Ct88MM3mjgB/+eMzxHIVQGAhV+Gdm1v52K5uGjw2bl33YnHzN4LusItzO3r9LoV9E0nm0mXesamVm9c08a2DM3zv4Bx+p8JSVmVLh58rekIs5lSeGokznSjxxEgKzTD5xUf/g8lkAUmAmgEGIAkQy5cJOGyYOqxvC2C3SSTyKr98TS+lmk66VON7h+Y5MJWiqmk0euz8n0dG+KuHhukKOcmWNe47tsie0SR//+jYiqIWQMhlo1zV8dhlfu/2VdyxoYXP3jLIpg7rguRtG1pw22VssrgSXRps8mKXL66Xue551vmZONuy8lYeUfbYUJSr+xtWilF6GtwcmEoRdMrouokiC/RHPNb8RQPWtPrZ0AaPDccJuRVmkiUeP72EqunoBhSrOiIgi5ApazR6HRRVq39UMDQaXAo61nDkuXSJ04sFNrX7GI3mmU2UuKIvyMaOIJIsMrSY46q+MF/fN42qafy/x0exKxKL2TKY1jimkNvGfKrIz13Rwd1H59F0k66wi7agk6DLRsBt46O7uqjWDCo1g+Fonit+Yg9uXdeMZ1nKL1FQ2XIZTFrZN5HEZZfZ3BHgqZEYLX4na1p85Cs12oJOKppBd4OHbV1+Ti3kWet30BZwsZQuMRqzVHOCLhlJEpiK51F1A0OHWE6lpmNJHnpsxPJVNFMnp4JNNplebotJl2o8O56gWjNZzJZZ0xzg1rVNPHp6Cacs8k9PjtEacqElS2imgVMRue94lA9sb6NQMTgym2FDu587NrQwFs2TKqosZMqsbfHR5Gvl1EKWkNvGxvaA5Y1doDr09UaWRA5Np7jd72Q2VeLxoRgfv7qbWs3goZNL5Cs1ruoN8/x4nHihRmvATlUzGE/krDFuOaiZ4FVYSR0Ulmffylij7xQZgh4nPpvCTLrIibkMYI2Bm0oUaPDY8Ttk1rR5yasGx2cz5Coa6VKVX909AJhkyiqaYWLqOlu6gkwmSrQFnYzNFnhiOMav39iPz6kwtJTHqYjYJJEHTiyytTPE6mYvR6MZVE2jO+xGEgVcNokzS3kGmnwvu0d1z7POz8Qzn7uRqc+/fWW49luR7gY3e0fiFFVtRb4r7LahGaCZJrPJMsfnshyYSjKTKrGYKbN3LEGqVGMqVeLEfAZFsUro0xUdhwIBp8Tmdj9LmSLzmYp1FgE0UyCrGnSFXRybz+F32uiPuMlWasTyZRp8Npp8Dg5MJRhZyjOfLrOqxWsNxHbYGInmeWwoykK6zOoWHx+6opPeBg9/eN9pjs1mGF7I0+xzcsvaJmQBhpfymKZJulijVNNZ2+rjfdvaeejkEnPLTeJ//9gIw4tWO0vQbbvkA9QfOR0llquwszfMpmXB9BtWRVjT4uPkfJYfHJ7j5FyWW9c2cWQ2zf3HlxAwOTCV4pr+MBogYO23LEk4ZJFKzUASBVoCDtw2cTlnWmUhXSGer6LXrMeva/HQE3LSGXbT7LVT1UAQIV+FEwtZnp9MMRor4nYoLOZUTMPgE1d1s7UzyHy6QlnV+OuHR+kIOvE7Zb69f4aRpQIhr42aZvDgyUW+eWAGj13m7x4d4XuHZhEFgT9/cPiS7HWj187t61uYShT5yjOT3LwmgkMWKWnWVJ6Q285oLI8iWUVu+YpGLK8Sz9fIlqoEnAo+O6g6HJmx3kOqARJgk8/qfwikClWGYzluWduMLMFgxMOG9gAI4LaJZMo1HhtKcHTaGm+WKVfxO228fWMLC5ky04kShUqNaKFKUdWYSuZ59PQSLX47AafE8bkM9xyZJ+xROD6fYzSa5+R8llMLWfZPJhmN5vnS3gm+d3AWgOcmkkQuUtWpbjzr1HkJ+ho9rGr24VAkTi9mObOURxQEdMPAY5cZjeWQRIGQy8b/vHMtiYLKUq7K+hY3fqeCZpiUVA1BFHFIUK2BKQiMxIuUVQg6ReRlr6Kqm2CaFMo1mn12EoUKE/ECZVUnX9YZiHhp8zu5//gS8bzKL1/bzcMnY3QE3dy4uonfuXWQ92xtYylXQdVMGlx2vnNwlsFmD48Px62ZlokC0VyFoNsqkBmPF9jUEWAmVaJQtXparxtswGOT+faBGUuqLmVdHHns8kWfVF4vtncFCXvsiKKwIhMoCALzmTJ2WSTotPH8VIpMyTqBd4ddnFrIIonw4Mko8VyV9rMXAKbJRNwSKC9WTXTDRJAlHHYJp2JJFjoVKC3H2fdNZkgUqvSE3RycSZOrVBmIuBlsdPL+7a2MxQv0R1ycXsixuslLZ9jNZKrIE8Mxjs9niBeq/PK1PXzv0Cxz6RLv2NTKLeua8NoVfvf2NVw/GOHdW9r48akodtkKBf/g8By/dn3/Jdpti5aAg/dt78AuiUwnSyQLKmPRPPmSyiOnoiAYbGgLEPbYkSWJRrdMIlelomlW4ZXOSki0qoMkQUUD3bQUr2yiiFuRGYkWsMkSLrvClo4gf/vBrdR0k6phYpcEfE4bJiYNbhsDTW5+/4cn2NYZ5Kr+BrZ2BtnaFaSvwc3x2RxTiRLZco2g28FCpkxV13lsKM77t7XjUCRuWBWhLeDksaEY06kSn7t9DZIoEM+rZIpVNrRe3CSbeti2Tp2fQmfYkgZz2yWuG2xkOlnkH58YoyPk5HdvW8O+iQSGafJPT42xtsWHS5EYTxRRJAGXIqAaUFJr+J02cuUq6ZKGSwZRgnTZIGC38okOUaBYNRiJFegIu2gNOJhKVCioGl6nzPBijvF4gbetbyGeV3nwZJRsRUMSBE7MZzk4lcYUTMIeGzeubmQuXWIw4qK30cvuwUZruHNWpaqbnFnM4rSJ1DQrX9gdcpMsVDk8neaqvgYMyaSmG3zoig5Go4VL/Aq8QPAcycBzyZSqlKs6V/aFuXNzKz6HwpaOADPpIj93ZScTsTJj8SyxfIXCcpi8WLVkBrNlDa9NIJZXscnWSLBkQcdjF8mVrNdGBETBJJovkyyqmIZ1b1HVqRkmR2ZyfOLqLn54eIFcuUZ/xAOmwNBSgYVlL/6T1/QwHC2wuTPITKqEIov8+7NTrG7x8vGresiVa6RLNRYyJf7y/ZuI5iqMRgt8+elx/r871r4Bu3thFFEknqtQqGq0BJwkJlVsisCXnpniU9f18sMjCzR6bSxmyoSdMkVVo2aCWTMRsXKbOdXax6BTQjdMDAwErLanrrCL+bTKdCJPo9fBVKLAUyPwnYPT5Cs6g00ehpbyiAJMJMq8d0sribxKulTjubE49x1b5CM7uwi7bWRLVW7f0Ex32I3HIbO62ce9xxb4zA0DhNw2nhqJc3IhS1HVCDoV/C6Fn7uyi6HFHD2NbuYzJR4bjnHNQCMXE2OpG8+3MFd//nHmM+XXNdx2Nvd59ue3Yv4z7LFCltFcZaVXrNFrZ2ghw/3HF1F1A4cokirW2NQeoFCtEc+rqDWB1qCLXKmKIAnIsoCgm5Q0UABJhMHmAAAlzWRHT5CRxSyyYDIcqyACmqHjc9gQRYGNbQGGlrIEHDJ3bW3ji3um+OCONp4+k6A34mZ9W4DFXIVGt83St60aLGbKpMs1EgWVkqrTGrCTV3X2Tya5fiDC4Zk0ibzKzt4GVE1HFgVsDoUP7ejEMK2WnWOzGdx2iVhO5aoLFBVdShIFFbdNxudQEEWBXLnGDw7NUTMMvHYbsigxnczjVGQ+uKOd0wsvTArxOxVEESqaSZPPTqGisbM7yIHpLJlSFZsMiml5n2UN/E6RREFHFCDsVshWrGrpiUSRbx+YZyFdwqGIPDa0xNs3tPKZG/r58lNjNPpsfGnvJIok0B/xcvVAmLFogVy5il0S+PKeCQQRzizmGWyyIgUDTR5U3WBjW+CS7q8gQMhtx22XeHw4xpbOAImiysZ2mX98coz1rT4kQSBRrBLLV+gIuihUargUGadNZDFbxeewogS6Ya7MLfXYBTQdxqJ5DNNqY9EMjVJV5+B0GtO0pvi47YrVejWbpSPs4LHhKBXNoD3k5vGRGO/c1MxStsTjw0ts7AyyXhDZOxonXbIq04cWc4TcNmRRZHWLl2v6Gzi1kEORYS5V4fB0CsMEUVDY3OHnd29bvayH+/LUw7ZvYc7K8r2eBu1s7vOtkv9MF6v88Mj5vYx9jR4cimT1wQnwC1f1EM+X+bOHzvC2dU1sbPOjY7KQKXL3sQUEQSDitoMoMJ0qMRDx4pAF8qq58oGrAXZRYC5teXaiaJ1IchWDubSK2wbdDQ4KZQPdBFkUGFrMEvE6qOkGT4+mqNYMvrl/jqppUtEM/vRHp7nnyAL3HF8iU6rxqet6uXNzC4uZMs+OJUjkyjx0Kopm6PzWLYO0h1x0BF1s7QridymsbvZx3/EFFrNlhpfyHJhKAeC2SwRdtpXh25cTumGiGQYdIRf7J5OUqzolVSdf0ehtcPMveyc4Op9D1QzihRrty2O/mvx2uhqcbGn3YRNhPqOSqejcfSxGpabzyWu60RCI+O2cPZUu5XUiHgkEGIoWEU2TXLlm9UV2eAl6FFx2BbfdKlD58lMT1HTY1B7mF67uxu+y0Rl08tDxJR4bihL22Dm5LIk4kyzR4LERL6homkGDx9KFvekSj4ATBIH1bT5EQaBS1VnKqzwznmRoMUexajCZLFHWDLZ1hVAEkYJqFe60h5wYWEIhqmbljXOqQUmziogGmzzYRKsvt9lntUvF8hqlmoEoCNhkcNkkesIuzkTzBLwyQbeCKIl8/KoeBiIeChWd4aUCmgGL2QqyIOKyCyQLVe4+PM8398/QFXbT5HPw3YOzuGSJmmGiagatfhe3rmvmRycWEYF0SeW+4wvMpC5OFB7qnmedOucRcCnctOaFE5ZhmIiideX86PASqXyFWK7MoZksV/aEeWwkjiKK9DW6eepMmYpmkC3WyFd1mrw24nmVg7NpiuoL7R4CYGJ5PNXlnJppQqakYVcE8lUDCegKexBFyRprlS7hVGTsSpW5TIWKBmVNo6aaNPudHJnNsqrZg9/loD1g58R8ltUtXh46GSWWs/JU0x5L5chrlxlssuT6orkKc5kyb1vfAsC1/Q3MZ8pW0cYyumEScFmtLpcbEa8d+7KM4tBC3soXxvLctaWNJ8/Eec/WNk4uZKlqJtlyFd2wTuTxvEqqWKVcMzFNlsuIwOcQSRc1vrBnCk0zCbodVhXussxxtKDjUkDQYCFXXQ5LljgwJRJ02Ujmq1zVH+KxoTiGYWAiMJcqka9q/PqN/XzhyVFciszN6yLs6AyzkC0zmSySq9T4let7GYsVOTCVYjia5+NXd1uemvLGVdsenErhdyoMLL8/DMNkPFFg30QK3TAJu230hF0EnDJtAauq++qeRr53ZJaI107NMJhNlZhPq8gS6AY4HeebmXwNjs/m8blkSmWIFVQKqoksgCJar4VNsIq5vvr8DJ0hJw0eB+PxAgGHzDf2T+NSFD55XTeHpjNky1Xu2trGWLTIXz40wmgsz5++ewN/dP8Qn7q+H8MwyJWr5FWNhw7PE89XUGsac5kKv3pdH0u5Es+NpPnV3X00ei8+r1/3POvUOQdBEFaUVpayFe4+Og+AphvsHU3gtMk8MRJnV28Ij12iJ+RmY5sfAQFJABGTsqaj6yaxYhWnIlFWDSs0BCt9nmubnMgyJEvWWVkWweMQMUywidb58qmRBCGXgscm0+Z34rJLZMsa79ncwlX9YRo8DnZ2B6ioGl67RHvYTaKgUqzqKJLAo6ej9De6uX1thN+4aYBPXt1DT4ObXb1h5jNlJuIFusNuiqrGs+MJTNOkXNMxwWp5wRLE//GpKJpxefV6niVTqrF3NMGDJxYZi1oVxDu6g1RqOm0BB89OpOgMOkkUVU7OZxlarh522SQU0WRZkQ6vTUAGnIqEBmiaSV/ExWyqiID1mgC0+e0E3VZlbtApLT+XSFU3UTWT9pCLuVSFFr+dfFVHNwyeGIlxYjbD7373OLOJEmeWCrgVCYdNYl2Lj/VtXjx2mf2TaR4fitIdcnNVXwNBl428qr3omF9PBpu9tAdfEP9PFlXOLOb5hau68bsUHh2K0tPg4disJcTR5LXzzESc9oADBJPWgJNMqYbXaYVlJSBXto7BIb6wjwaQLGpoQF41rfe8IuB2SHjsMg6HTLPfwX+/fTXNPgcVTafZ52D36ibUmkFJrfKlPZNEfHYy5Roji3l29YX41et7uHNDK2ta/PzVBzZaF7CFKs1+JzZZQjcMTNPE71LobXQTzasYCDT5HDR47CQKqqU/fREIZxuM61w2vGYvSPfnfvTKp6ns3m19f/LJV/z/zs2xvsG5z1fjEv3U/dZ0A1kSKVU1FjMVWvwOhpbynJ7Psmc0zqomDwG3jW/vn0U3dCqaiU0SGGzycOt3/on3PfBvr2Jp5/OlGz7Ct27/OBpw/apGDk6mafDaOTabocFt48NXdrJnJEHE5yCer+C2y/zxu9bzhafGSRatHJDfLfPEcIJf292Lyybz5HCctoCDVKnGrWubeGo0wV2bW/nhkXlcNomBiIeusBt5Wdv2ieEYN6yOvG77fVFPYJrnDeU2TZNHh5aY+83P8YuPfvXVPv0KX9z983z+yg/jkqGmgyQL7OwLE81UWMiW6Qo7GF4s0uR30h5wMhrL0xZwosgCw0sFWn0OVM1goMnLoZk0a1u89DZ6iOWqKDK8c1Mb+8aTZMtVeho9bGz3c2g6DQi8b1s7iiQyEi1wzUDDq3X5f6Y9L1W15YrUIsVKjeGlPC1+BzXN6m9NF6vc+cMv8mt7vvEql/cCX73lY/z7rR+jVNVRJAlZEsmWqgxEPAw2e5FFgQNTaZq8NmoGDDT5WNfm5f5jiyQLVSRJ5A/fsY6AW+GBE4u4FIlNHUE2tPtJF1XmUmUePxPjN28eJFFQmUwU2dEd4sxSjlXNPp48E2NNi4+ms4nan0LdeF5+vGmN56v6v6+O1/VkXqpq/ODQHNcONrJ/MkVbwDopfubrh+iLeOgIWuO9WgIOPDaZwzMZCqqO2yZQqpm0B2zMpqoggE2CRp+DWk0jmtfQgak/v5O+37sfRRKo6FZe1CYL/OLV3Xx57yQ1A+wSGLpVpdvf4CavarSHPWxo9TK8mKMt6OLwbIbesJtP3zjAPzw+aqaG1QAAwKlJREFUyonZNBs7g7QHnDw7mWKg0ctAkwvDsDRAvU4FpyKxmCnTFnQhizASLXDL2iYEwRogbJPElbA1WN54s//lTyyvZr9fjgdOLLK2xbeiuTqfKXN4Ok1bwMmf/Og0O7oDHJnN8r/fuZ6vPjtBxWrw5JmxGDXd5ND/up3u37ufiEeiXLP2NlGyBCxcMmjLq1TPhtSxogYOGTQDOkIOUkUNXTfIVQ1CDnDZbXgcCvmyJfZe0Q3Go0X6G13YFYmQ28b7d3SSL2ucnM/y7HiCrZ1BplNF3DaF/3LTAA+fXqSnwc3zEynev72dRL7KLZbC0BtiPIuqRrJQXRlDVlQ1js9meODkAuvb/DwznqTV6+TQdIp3b2sjli3z0KkYRbVGg9vOUq7MYr5Gk1tB1XUyFWMlRTH153ey6r/fj6pD2CmimwaZyvn/P+iQkCWo6gblmjUarjPo4shcBk2HX7y6h2i+wlK2zNpWP6lClXhRxSaKaIbBmmYvjT4HXofCrp4wJU1n70ict29soTXg4pNfPcCu7jDXrWqkL+JBEgSenUigaaY1+xYTv3NF1ell97wetq1T52Wo6SZr2/wEXDYm4wUeOL7IY0NR+ho9VDSTkaUCubLGgaks+6fS1HQdmywgyhKSADPpKm47+J0KPodCplRjYdlwnv0A6li9ni7JOtk0eRS+tX8Wm2SFB5t9dvqbnDjtEjomQY+dglrj9FKBJr+TJr+TngY3TrvEV5+d4trBRq4aiCCJAh++soNfu76PsFvhIzt7yKk1qzeuM0hPg5uOkIvRWJ6WgJPb1zfzu989xl88NIxDkVYMZ7Zco6hqNPsvba8nwK1rm+gKu8hVauwdjVttCuUaAZfCX39gM5oh4FAk/mPfFAdnsvQ0umn2OVBEidLyjNZGt8zWrhACJuXlxLMBlDSrD1EzXshNryBYBtRpU/A6ZfwuBQlIVWAhW0UzoKvBw8Y2Px6bFXZcyKnopkk0p/LMWILpZBG3XWZ9m4/pZIGiqrOjJ8RitozbJrOjO8St65ooVnX+6alx/vKhN04koVTVSRTVldtuu8zOvjBbOkOWwMaaJk4tZilpBls6AjwxkmQpV0GSRCqagdMmIwJVw6A95HrR/p1VefQ5beQqL1gnjwIbWz2UqjoF1cAmyVzdF6RUNTg+Zw0WD7ttPDUaYyJeYHgpx+mFLJlyFbWm0R/xoIgCiiQxnSxzeCbN89MpvnVgFr9TYSxWpFjVKFY0Dk4neepMjF/6t/189bkpKlWdfRNJtnUHKag6La+gM6FuPOvUeRn8ToWtnUGeG0/QGXZxajFHqlTj4zu7MXWDRL7Mju4gNw6GKVQN3DYFXTfJFjWCLhmnCIUqqDWrl692jlbs2ZGUAYfA6hYPXWEXThl0BDpDLloCTjqDLhJ5lZ5GH31hD51BN4MRN/2NHja1+9k3mWQinmcuVWQyUeKzNw8ylyrx4Ss7+eO7NpIoaDx6egnbcmHNf79jLTPpEn947ylmUyUGmrzcubF1ue8Tfvm6XrZ0BpYViKqcms9yYCrFXPryqKaWJRFBEBBMyztyKBLv3tJGb6OH7gY3v3/nWn7+yk6mEiVkAfaNJ6holtE8u/OabvDQqTiaYXDtQMPKibw9YEcGAi4JRbRydn6HyECTy5JpFESWchUqVY35jLqSw1MkKFc1yjWNPWNJdMNA1XS2dwXZ1BFkV1+IrR0BIj47H9nZye/cthqnTWZXX4h4tsTTo3Gu6m8gV9E4MJmir8HDn7x7Az0NFzfh47Wg0Wtna2eQVLHKtw/MAPBvz07R4ndQquqkClVuX9vMb940wD3HFmn22Qi5ZKo1ndl0iaVMGVmyWltiuSoC0OASaXJbBUNnI+0ltUbAKeGWrYrVrrAbzTCpGiAK1ki0PSNp60LFLlPRDMIeG3esb0ECNrcF2NwZYDFbIeJ1kK/UWNPiZyZdorfRxc7eMJPxIpvbA9y4pomqpnPPkXnevbmNVc0+tnUH+dD2DiI+B6cWcyQKFf517yRtQScb2i5OIAHq1bZ16rwkI9E8rQHnyvzK29e3sLgcMpqI5fnLh0fIlmq4FImReJFWv42AXWBNq5unRzN4bCKiKGKziWhVg5oOTsW6SpcAt83ycsDyOhezFRRZZFWTj7lsmZFoDlkSMEwBv8tGT6Obp87EMDFp8TlZ2x7gP56bQjdM9ozEuXl1hB19DXzhqTFuGGykNeDge4dneWI4Rjyv0hfx4LbLpIsqf/HjYW5b20xVN1ZmdO4di2MYJqPxApIgoEgi9x9b5CM7O9neFTxv+PTlgCKLOBSJclXHbZfZP5lkLlUi4nVQVDV6GlwIookkiBQrGjt6Azx1xhrxdfYCRtfg4aHEihcxm7E8r0TR8kYFIF8xyFasFoaIR2FVs4djczkcitWf6BAFdq+KMJsuWaPNKjUU0RIYiOZUmv0OTsznieVVojkVv1PmoVNR3r6hhQdORlnf6mVN2MWqJi+iIBArVFc8/XdteeOHkIfcNt69pR2AD1/RiSKJJAsqpxezfH3fDL2Nbk4v5ohny8ylKww2ufHbJdIVDVGwis28DhmXYqUttOULF69DIlvSSZR0DNMShm/0Wu05iYL1GAmTUs0EAaJ5jSavjeSy8s/jw1GCHjsLqRI2ReKuLa0sZipMJooE3QoBp8JINM9Nq5vY0unn6dEk/Y1uFrMV9o4m2NYVYDReZFWzjzs3tXFiPsO2rgCFisYzYwmuG2h8RftUN5516rwE5aq+0tpwlqKqU6hoLGRUGj12blzVSEGtYQoCe87EyKgm+8YzhN0SNd3EMATyFQOfU7bk+qo6HptI1jDwOhVyWUvxxtShrGsIdolMpUaiUMMhg4JJTRCo1HSeHkmwud3P4dksAbedMws5WvwOPHaZ3kYP2XKNg5Np7j06x/G5DL94dTcRr51tnQHG4kW6gm7+4qFhru5v4N2b2jgym6HJ58AuS3SFXQiCSWfYhdcp8S97JukMufgfd665qPFMbySpYhWXTcKhSLhsMomCSkfIhYDAF/dMcGV3iFhRZX2rj5lUEa9D5vBMlnihjHO57aOqWdWf5nIVtCSBSxEpVg2q5xQWB+ygmwKVmoksWfKKR2cyhNwyeRVCLoX5tHUCL2s61ZpGPFvFrYgE3XaafHb8TgVFhHLVYH2bn6/tm8Uuwd89PsqunhAgcHw+R1vARWvQyWd29/P0aJxCVWNdm/+N7FRZ4ayk3tmhCLG8SkfIjctmTfYxDBO/y0Z7yPL+J1MqXUE7Vc1EEqBYqVGuWapCleUac8OyiejL32URlvJVTMBnF9ENk0LNpCNgx6ZIKJLIXLpEa8DBYrZCtaYzGSvQGnRQ1U0mYkUKqo7LJjESLVghcUVkJllifZufxWyJJ0fj5Mo12oMO+hrctPidbG73MxLNM5cqMxEvsrMnzESiyFisgM+hsH8yyfu2d7zsHtXDtnXqvASbOgJ47TKGYXJ6MctXn5tiPlPm5EKWZFHljg0tZEpVHj0d48BEklxZx++wWhCyFSt/U6hWqZmQKmnkKtZ0FbtNobfBhSyKKx9AuyKgA6myzmKmjFexTvAZFdw2GUUWMU2T/iYvg01ehhezlKo1eiMefnV3P5phUqxquO0iv7q7nza/k398coJr+hsQRZHBJi/H5zM8PRLnwESKDW0+blnbxI2rI/RHPMTyKs+NpXh2LEm6WEORRda2eCmpGrH8C5Uddx+ZvySvxbmcWcoTy1ke4rauIKpmWbsdPSE+fGUXQ0s54nmVBo+DqUQJUbDCtF0hN4a5rHZjQsWwvhvADQONlGoGPqeExybiWnYrMuqy9q0JzT4HmFCqWYL6oiAwk6rgUATGYnkEE7wOG/3NbgqqjqbrnJxP8+CJJSqaiWaYNHmdCCI47DIBp8LesSTPTSQZbHTz3QMzHJlOkyqqLOYq3DAY4cenli7FFp9HUdXoDLvIVzQGIh7mcmWu6Alx7UAjumGymFUJ2AXm0iqL+SqFqkmlZoVguxo8lKzrQzTdQMPy2AxAEoWVnKhDEWnxO/A5JTTTJOhSWN/mx2mTmU5XKGvgdSrkVY1yVV+Zl5pariK/fV0zQZedxVyV2XSJ1qCTbV0hnh9P0OZz4HfZKNZ0HDYJSRK4+8gct6xt4l2b2xiPF/jIzm4avXZ8Tpm24MXlPevGs85rzlnJvqs///ilXsqrYjFb5vMPDTMaKzCbKtMVdpIr1/DYJSI+O4NNXrKlKn2NLso1k3dsauG6/jDh5fCmKIJNEnHK1gfNxMqNqZqOZmikSjUCTussXdNNvHaRVQ1OXDYJA0vZxyZb1b5uu8KaVj+5is51qxpY1ewj7HEQdNr4j33TLKZLJPJVplMlppNl3rO1lW2dAU4vZEkWq6SKKqeXcvz9h7ewrs3HfSeWWNXsQxAEFrNl7j++wI1rInz6hn7es7WDL//CFWgGnF7MkSnVePJMjKlEkV194Uv2epxlV194pSK0phvMpIorv6tqGlu6gnxwRwelms5gk5eDU2nes62Ntc0+a/g34LCJNLrllaKtw3NpDB1qmklPgxsB8NgEVjU50bFC7LppotZ0bl7diCJL5CsaTptIXjVxyBLVqk6Tz0nAqVDWDBYyFdqCbt6/vYNPXNNr5Y8Xs+zqCTGbLHHzmib+4r0b6Qg4uf/kIpOpInbZili0B5yIosC7Nr/xYVuwBr8vZa2LpuGlHCfnsmRLVa5b1YBdFBleKvCerR2sbfVhVyTcDht+l4yE9T7XsFScNMNYMZBNPgedAYUaVkGcLIJNsPLKsYK2fHHhQJIk6+LDsKp1r+kL0Rmwk8yrDDR56Alb0oWT8TzrWr20BJw8PhxjZ2+IH37mav7+w1uJuB3cfWSexUyFbKXGju4g3WE3S9kKRVUHBETBev/YFBHDNGnyOQi4rOKzi6Eetq3zmnO2x/Os5u2bEd0wOT6X5deu7+O5iSTbOoN8//AsY7ECu3rDxPIqc6koNptMPlthbbOHgEvhvmMJZBH6Ix5cNonZZBFZEChjtaDIkkBJ1TA0AadNwm2zwmI1HTwOCUSBsmag6dDhkzFMBacsUDXgzGKWiUSRX7muj4EmDzbBUtMRBJFEscrWTj8f2NFJVTM5NJ2moGqsa/Uxl6nQGXJRqen8zneP8d9uG2R9q4/GZUMiCQKNbhtht8Kx2QzxvMp1g420B510hV14HQqtAScOWVzp97xccCgSN65uoqoZiALcsLqJf3xinK6wydV9DfQ3uPjTB4aI5ipEfA46l4XhP7qzkweOLwJWo36yoKHIVjHSRCyPYYBLgXxFpz1gJ5ZTyVY0tnb4mUwWMU1LYMEwTOyyNYUl4LJhmOZK61Bvg4uuBg9+p0wsX0aWBLpDLjZ1BqloBk+NxOlucNPgsxPNl8EUGF7K8cEdnSxkyjw1El9R+nmjmM+UiXjtiILlOQLYly8U7j06x1i0yLu2tLKuTebXv3kYSTDpDrvobnAxkSgiCCqb233IosiZaIHRWH7FeC5kystatXaiWZWqYRnPzqCd6bTKFT0hRFHkgePzpApWikSRBa5b1URnuMA3n59le3eQZycyeOwiJhLbukLMpcu47BKdYTfzmTJPnomxoc3PZ28eRMDk6FyWWL5KpphnQ3uQZLHKmmYvoihSqWok8urKzNqRaJ6pePEl9+dcLq9PQp06lwmSKNDX6CHotrGrN4xdEdnRHWZVswcEgWsHGqhqGmG3jV+6poe7tloews6+MDesjqDWDDZ1BJElGd00V8r2dd2S5Otu9NAR8iCK1kfQFCBeqFHVDQYibrZ1B2nyOnHYZNpDlgqQ2yHhdcgsZcoMLeZ5ZiLJtQMNLGTKBF029k2k+T+PjHF6IY8oQrGmM5dRKVV1Wv1OxmIFblwTIZqv4lBeuG5WJBG/y8ZE3Dp5zKVLPDEc5UfHFzkykwGskWSXm+E8l6OzGf7fE2NUawYf2N7OA8cX+OKeMX50comdfWEOTWUsPdZltZunx5LIskR7QKEraGdLV4DusIt0SSPis3SJZUkiXdK4Y2MzDkVCreqciRWI5VR0BJx2G6Ik8qEruvjV6/uQZYmJeAGf006mVCWaq1JUdb64d5LRaAFFkrhpTRMn57NouklnyE3nsprP2pYAn7y2l+3dIRIFlalkkXdvbn3D93EkmqeoanSF3aiaJbW3vs3P7lURPnltHzabiAncd2wBWYQGj51kqcaekQRDC5Z83tPjKZp8DpyKiNdpw7ZshHUDMDTKqs66Vh8KVgVuT8RD0Cnx2FCMkaUc1w02EnQpVJeHVFdrJndsaOWGNRHaQx52r2rgusFG2oIO1rT6OTmf5fB0hu6wi397dhpdN3huPMmJ+SyZks5SVuW9W9tx2GT6GqzP0oHJFIem0rhsMrevb6En7EaRrPmhu/pDF7VXdc/zLcZZlR/gkg8vfrPTH7GE0AUBhhfz+Jwy/REfI9E8ubLKfFalJ+zm2GyWZ8eTALxjUyt2WcQU0kRzZdpCTmL5Cl67SKvfQTRXpqqbzGZKVDWdchX+z9UfJuCUMbB61UaiRQabPMwki0iixKev72c8MUK2pNPgcdAWcmKKAjNJy4h+7m2r0A2BFr+df31mkmOzaTLlGrPpIk+eiXH1QAP/8OQYS7kKX/7YDkQB7j22wEyySMhj5+mxBBGvnR09If7ukRHu2tLGhvYAU4niZalney6lqoZdlriiJ0SmVKVmGBSqlsD4lT0hnh5PUlQ15rMlqrpBi9/Ov9/yMQTTpKbrzGZqOBSB6wcjPDwUxSYL5FWdsmbiwxLkPzadxeOQWcrqdATd5NUaApY0YIffwXi8aBkLWWBVk5+T8zlyFYN4QcXnkHn7hhaqmk5nyMnfPnaGNc1+YrkKvY0e9o4luHF1hLuPLHBFbxjdMJFEgUavnX/eO8ldm1tZe5HzJV8LblgVAWAslidbrtHst84hX3lmkpBb4Qs/v43f/8FxRqMF3rmxhVi+ymd293Lv8UXa/A72jyfY2O7nkaEYmZKK36EQcCt847aP0+y3M59WcdkNTi3kqAGiYekr+1024vkKsZzKSLRAe8BJsaaDCT84OsvXnp/C45Bp8Tu5dW0zI7E8brvC15+f5oNXdGI/Msc/7xmnyefEpsj4XRK7VzXissnctqEZsGoHvrl/hli+wq/u7iO8XAi3kCnzN4+M8D/vXMt7t7bzlz8+w6aOlzegdeP5FuPsJJXLgbfKuDJFEnE7JFoDTtqCLo7OZEhUNX5tdz+NXjuGaTCeKHJdfwOdYRcPnVwiX64Rz1WJFVSCbhtFtUayWMVhU1C1KppmYJoCbX6FR977K3xqWzv3HJ5jIlnGNE3OLOVZ3WR5pu0hF7+2u4+ZVAlNNzFMAbssEnDKxAoqAxEv85kSf/3wGT6wo5Mmn4Mnz8T4wLYOusJujs1l+NT1vbhsEvcenefmNU1cM9BASdV5YjiGS5HIlGv4HArv297Boek0nWH3ioLP5cwDJxYZjRb49O7+s8ow1DSdsahVibm21ce7NrWT+vYRXDaJck1n9td/F380z0JOxSVDtWZyaiGLaZh0hZx4HArlahanTaYtaGc8WaTRrbCmJcL2rgBz6SL5so6q60RzKjOpIgcmU7xrUwvNQRfv3NzOPUdmGV6yLriKqoFDkbhuVYQTs1nAxACmUkWuH4wwFivywSs68DnkFdnBXX0NdIZL3Hd84Q01nmAV9hRVnc6QG59T5nuH5nDaROyyxKNDUW5a3bSsgWyyvt3H40Nx7LLE0ZksqiFQrOhUahohtw0TgYqq8Y+7P0KxUsNtF/HaFXxBGdMwMRDoa/CwmK3SHHCQr2j4nAq3r2vmC0+N4bBJrG7yEs1WaPLayZZUjs1neH48Schj4/ffvg7/covKdYMNBFw2JuIFnhlLsLrZd160ZGdPCOeqRh44uUS6bMkNRvMqd25s4QPb21Eka+9XN19cqLxuPOu8bpxrLN+s+U9NNzg4nWIyXuTUfI6dPSGKtRrmcrm936Hwlw+fwedQqGgmT4/GGV7IoukapxYzOBWZsEemr9GN12Gj0atwz5F5bIpCs8+OJIjk1Bp3H55nPqtyy7oI47Eis+kSLQHXsgEzKVZ1PrCjg+8fmifis2NXJG5e28RvfPMIX3lmEq9DoaDqtAednJjPsabFR8BtQ1FEPrqrmx8dX+DMUp73bmvnWwdniXitXr7xeIHBZg8Nbks5aE2Lj5FoDsO4sKJboqBeVq0r79nSztG5DOJZwXHD5IdHFgi6FVTNoMPv5JvPT7OQq3Bdf5i2kJuxWJ7ReJFmn52SKiPLIvNZFVESiOYrZEsabQE3DR4bVd3A0Ez6Ih4aPA6+tm+Kmm7QHnAzHi9w6/ombLLEeCzPulY/WbXGeDyPqpnYZYl0sUa2XGN9m5/9kynUmsEdG1roDLuZS5XY1O6jWDVY3ezj6EyaRp+DtoCTvkYPyUIVp/zG96lky9Y82u6wm+8fmuedm1s5s5RHrekkC1XyVY28qjOXrjCTLuN2KEwlrIHVdlnEY5doCThx2WS2tAd4+PQioigSWha6D3oUGjx21JpBLK+SVWvMZYpc0RNiY5ufgqoTcNtoCTgYaHCzrSvIN/ZNM5MuY5MEVrf4EQSRrpCLP7j3FJ1BFx/Y0U5b0MVXnp4g6LGzfzLNQsYarXfj6giyJDKZLNHd4OLDV3QC0BF08qMTS7htMm67jLh84XLd4MX1e9aNZ506y1RqOpphrogiAIiCQMhl5/qrIxRVjUeHouzoCiMKkCnXsMkin715gIWMNVj3xJzKQk7FbZfY3h1CNwzOLOWpaSozyTJbuwIYCGxs83F8PovPaWNju58mr4NnxuIcnEqjSCLXDjTwyWv7+Oqz0zw7luBT1/ehyBKrm708NmRVFt5/dBGvXWYslqe/0cOuvjBV3eS29U20+JzopslkosiJuSzXr4rgtst0hd188poeEoUqh6bTLGUrCAJ0rLa8zKHFHDu6w/idCrphki3XCLlfEEcIXOSg4DcKURTY2hlcuV0zDKq6QYPHxhNnYgw0uEkWq3jtCkvZKretb6U/4ubkXJZWv5NT8zk8TgXdMEgVNQJOG9mKRl/ETU+DB8MwKKg6TV4nM+kSd21uQxBEhqNZruzrBAQWsmVcNpn/++Q4AxEX5arJH75rLd8/PM8z4ylafHYWMhVWNXlw22TWtHgpqjWePFPAOAWZUpWZVIl7jszzu7etWjmWK3pCXNFzcfm315Kwx87Ny3NEf+5Ky9Bs6wpSXh5U/anre+kIOfnac9O4FImAU6HV72Q6WUQyrIHkhmnS3eImq9bIV3RaAjai2QqlmsaOcAinItPqd1CqaTxwYhG/SyGaU6nUTN6zuYUnRhI0ep2AwP3HFlBkiT6fA1kQ8DtltnUFKVY1ruwJIQoCZ6IFehs99EW8eB0yf/Ku9XjsMsNLOXavsozhT1aK+5w27trcyp8/NMzv3raK4aU8TT7HSiHdy1E3nnXqLDOVLFKoaGzvfuGEJYoCXQ1WUYfbLnPD6ghffGoCr0Pmqv4wQbeNkwtZXIpEX8SDrhtIgkBr0MGnbxjknmPzzKZLWKE6k9OLeVr9Dq7sbaBSM7imr4GAx8aO7hCDzV6+8OQYLptMuljj/z0+RtCl8MRwlLuPLfDOTa38lxsHKKo6AxEPNd3Kj/U2ulnKVXjb+ha8y+PUjs1l+N6hOT73ttUYhlXwc91AI79/9wl+5bpeOkNuhpZydIVdHJvLcuNq62SZr2h0hV2IokAsX+HoTGYlHApctkVDk4kiZ5Zy3L6+hY/s7ALg5HyOiN9JyGPn6v4QQ4t55jMljs9mrdC3IrGm3ccNqyKMRAt47TL3H19gR3eQ371tNc9Pprj/2AI3r2nCoYjsn0pxYCqNQxZp9jvY1qFwYiFHs9/Ou7e0oRsm9x6bZ1WTj0ShykMno1w30MA1/Y10Nbj42r5pdMPEZpNYyla4YVUTAZfE85NpVkW8fGB7By67TKWmM58p03cZDB8/W0C0pTPIfccW+JXrerHLEhGvk8/cYPUXf+77J/jY1V0cnc2g6Sab+sM8PZbgTDTPp67v4xNX9/CnDwyBadLg82OYcHV/A4mCyki8gMeuEPHa+fkru/mf95wkXqwQdNi4c0MrjwxHuXNjG1u6ghyeTrOq2ct3Ds7ynq1trGv1E/bYMU1LVvLUQpa+Rqvq/X/fd4qb1kQsQYZljzKWq+BxyCxmK1bPdMSLXZa4dqABSRRw22Vsskilpq+IQ/w06lNVLj9e1QvyqieavAZTVS7E6zxp5XWb8lGp6Xz/8Bw/f2XXyn3ZUpXHh2MUqxrNPicPnVqipNZoC1hX36pmsqnDzwev6ODx0wlOLWTJVars7AnjVES+/MwUv7a7n2MzacJeG5pusmc0zm/dPEi6XOMLT1hG88NXdvEXDw5zTX8Di7kKH9rRSUW3RLkXsxVkUaCmmezqD/PQySXWt/nQdMtbbA04MTGJnDPc99GhKKfms6xv89MVdtEfOT+3k6/UyFc0Wl++0OySTlW54JOaJjXdJF5QCbttOBSJbKnGkZk0D51a4o71LfztI2foi3joDLtwyQJPjiYxTNg92MC6Nj9HpjPMZ4rMpVUyJZUPX9nFt/ZbGq/bu4Mcm83QFXKjyAK/d/tq5tMVzkRzjMWLdAZdSKLAvz4zybs2tzKXLvPxXd20hVwcnc0giwIht0K6pK3MGy1V9ZWiFYCjM2nyqsbG9gBDizl29oYZj+fpa/RekpFkAPPpEslilY3tAdLFKkG3jb995Azv39ZBe8jFoekU3z80ywe3d7BnLMFTQzFESbDmzm5tI5FTGY0XuWtLKyNLeQ5OpZAlgbs2tdEScrK5I8gPDs/T6LFhAhGPjT996Ay3r2tmTYuPbKnKj09FuaovRLmmMx4rcuPaJhJ5lQ8th1/P8q9PT7ChLUCyqLKx3c9kvAQYHJ3L4rLJNHjsRHNlehs8rG/3n/fZOJfnxpPs6gvXp6rUqfNqcCgSV/c1kK+80Dj9tX3T7JtIsqUjiCgK9IVdgMBt65tx2mQCLoX5dJnjc1ncDonVLV7+622rKWsGc+kyd25o4cnhGKcWMkwlSty6ronNHQEUWcRvV1jd4mNdW4Dt3SF29oaRJcsLnEkVObVgDSGeSZao6TplTaNQqdHT4KY9aOVIm/0Onh5NLDeDv8C2ziA3rI4wmyrxwIkXK9cUVI1YXn3R/TXdIFu6uMbxS4UgCNhkkdlUiYdPR/n3ZycRRbiyN8yGNj/7p5L83M4OblnTiCKJPHAqRrmqsabZg2nCPUfmuefoPCDgd0o0eOwIgslAk4e1rV68NoWBZi/XDjbyP+5ch4nAvz07hV2RuGtzG+/c3EqT387bNrSwpsWHCTiWc2mb2gMcmErhd9pWxNGzZY0T89Zgbk03yFVqxAsqmVINv1NhZ2+Ybzw/w96RxCXbU7D0g2VRJLFc+GYYJlf2hFcusNa1+rDJMvsmkmRKGp+7Y431HvTZOb2QJ1Op4VQEhhdy5FWNwWYPnWE3DpvE7999imShSjRX5r5jC1YaIafysZ2dbGz388xYnLWtPhCtiI2qGdgViZtWR1jIlvnS3jH+9pEz/OjYAqcWsvzi1T30Rzz4HNZghrKmMRIrsr0zxLu3tC0XBnXSFnS9pOGEF4d3X4p62LbOG8olHJj9M5EsqGRKVTwOmbN+2i9f10u2rNHoteNKFBmPFfj/vWsd8byKLAn4HAqaYbKzJ8zpxRyxbIVEwRIeyJdr/NkDQ7xjUwvxfAVJEPjD+07zGzcO8NCJJdx2mVVNHjpC1hitTLnK2HSed21uR5FFNrb5Wd8WoC3gXNEfPT6X4enlcVf9EQ/3H1/kjg3NFFUNwzARRYGRaB6fQ2Fti4+5dJlfuOqFUOxYLE/IbafF76TF/2KvM5ZXGVnKc8PqyBux5T8TumHylWcm+aWre8iUa3z34CxL2QqnF3L0Rzz83JWdjETz3HN0no3tAQzTxCmL5CsaV/V7mMtU2NUX5oreMJOJIs1eO9PJEjXNoKia/M6tnXxr/yzFqs6TwzGePBPnmv4wLX4Hq1t8AKiaSbpojR4Lu22Mx/PkKjXWtvi4bV0z6VINj10mXrDE4tOlKrlKjVy5xkg0zy1rm887pnduaiVeePHFzBtJxOvAMEy+vX+GT1zbw9f2zXDr2mZmUiWrqM3vwGWTODaXY22rl3uOLVBUNd67vYOwW8HvtCGJAvsnk3zz+Vl+/+1r2NQR5B+fGuPqvjClao3xWJEP7OhAkQQKqkaiqPHs+DyxfIW/fmSE921tpyPkotnvWN4vjU3tAe49Orc8CcVHe8hNpWbw6FCUta0+hqN5EoUqt69vptFjX0k3+JwKvtcob18P215+/EwvyGtmlF6nsO1Pru81DuO+bmHEHx6Z49a1zbjtF77OHIsVcNus6kK1pvPZbx3h/ds7WMpWCLhtqDWdck3jviPz3LGplf6Ih796eIS/fN8mHj61xN1HF/jolZ3MpYuYgoDfYaNc1Wnw2ugKuxEFgYEmD/ccXeBDOzrw/5TJJpWajiwIHJnLsKM7xN7ROLt6wyzlKjx5Jsbb1rdgmFZ+8NxClDNLeRo8tvNCiC/DZRe2BctDVs7JySbyFb72/DQf3tFJk99Jparxu98/jkeReHo8wZ++Zz1XdDdwz9F5+iIeRpZy7B1L8undfaxt8fPoUJSaZvDEmSg2WeYD29uZSpa4pj/Mw6ej2GWBjR1BTi/kuG2dJaSQKFT4t2em6Ai62NwZ4KGTS6xt8dPos7O5I7BcwJXhpjVNTCWLpIpVtnYGyVVqNPscK/k5sMLoR2czXDvQeMnCtgCxfIVsqcZAkzV4fSZVYm2Lb2WYuiIJ/MWDp5lNW3ncW9Y14bRJHJ/L0OCx0xW2itH+v+8fZzZV5Od2djGVKPHA8QVCHhvr2wK4bBItfgdX9ISoVA2Oz2eI5irLov9uVjf72NUXplLT+ZtHRnjPljZ8TuUlUwwLmTIeh4zP8TMbypfd87rxvPz4mV6Q18wYvU7G8yd5sxjPl+LHp5bY3hU8z+AcnkmTLdXY0hnA61BIFlUiXgePno5ybC7N9YMRHjyxwNrWAHtH4/z6jf0ookhXg5t/eGKUa/obsEkSw9Ec27tCnInmqWo6iiTREXKylC3jsS97tb3nh5bGYgVUTact4OTbB2b5+Z1dDC/m2N4dwjBMyjVrbFe5qq9MIXkVXJbG86U4OpuhUtPZ2RsmVVD5wZE5usNubl7bTKWm84l/289/vW01Nd1gJJon4FCIFVS2d4cYjxVo9Dk4NZ/l41d3Y5clhhZzKJKwkjM+OJUi5LbRu1zgU6npPD4UZXt3CJ9ToaYZfO/QHBs7/GzrCvHUSIzOoIvOsJsHTy7iskmUqjo3ro7gsl3wIu2SGs9zKVU1aprJ3rE4G9r8K4Zx33iCg1MpClWdkNvGmhYf1w40MrSYI1WskilXeXZ5zumHr+ji6GyaU/NZ+hq9bGj30ex3WsLzTR5cNpkTcxkiPgflqo7HIa+0R5mmyXSyRLygsqP7xZXIuUqNPSNx7tz4qtWZ6sbzTch/CuP5k0pIrzKE+4afzON5lZDbdp4Cz9HZDEem06xv82GYVr7tJ3l2LEFHyEVVM+gMuVCWQ68FVcNtkxAEYUVlBqCqGSzlynz/0BwbOwKsavKQKNRQJAG/U6E96CKWq3BgMsXOvjA+p8JipkLEZ2cqWWR1s+9nObyX401lPDXdWBblt/baMEwEAdKlGntH40S8NmL5KjZJ5IbVERIFlYVMmTNL+eXiHoO1rX5sspX7Oz6XZWtnYGW+aTRXwTSh2e9A1XSqmrFS9XyWsVgeTTdZ3eJjOlnkyEyG9W1+usMuNMN8uerOy8Z4nuXc9+hZlrJlkgUVl11ZGeKt6QZPjsSJeO3Ec2VmUmXeubkNWRRYylUoqBqSKFLVDByKyEDEi2GafP35GT50RQcT8SKtfgcRnxWynYwXWd3iZTxWtPKhP4FhmCSWL1pfJXXj+SbkP4XxPJfXYO2Xzcn8vmMLdIWcmAhs6gig6QaSKCAIAqZpUtUN7K+w8b2mGxQqNfxOG987PMc7N7WuzLQMuGzUdINMqXbR/WlgjZlKl6q0B38mD/Sy2e+fhaOzGTpDLoIuhVSxSshtOy9cCjCbKpEp1VjX6kM8x0hMJ4ucOafx/tzHhz02ZlMl4nmVa17hYOWX4bIznq+Eoqphk8WVi5fHh6MArG/1E/G9YOQ03eDAVJqdvSGiORUTk3SxSsRrp2F5wPlsusTqZh+6YaIZr/yz9NM497PKRex5vdq2ziXnzT7CrFy1vA2AkNuG16mwqSMAwN6xBEOLeQBmUiWeGI5xaiHLc+MJTNNk30SCqYQ1xWE+U+ahk4svev6jsxkmEiWOzWVY2+LDoVhSgWc9H0USX5HhBMvTjeYubTHKpcLnsPr5BEHgwFSKqWSJQ9NpDk2lVh7TEXKxod2/YjhPLWRJFFR8DoWiqnFyIQdYhuH5iST7p5IUVI1kofozF6SkilWKqvbqD/B1wjDMlWjRxVJQNf71mUkOTadX7tvSGSRTqr3I8BWrOs+MJRAEgWa/g0S+iigKPHw6Blh91mcjKaOxPPsmUryW7B1NMLyUv+jH1z3Py4//dJ7nWV7FMVxST+jZ8QQht+2iQqQj0TxNXgdHZtP4nQr5ioZumNywOoJhmFQ0/YJ5L9O08pbDi3lOLeT46K6uCzz7G8ab2vO8ELFchYdOLvGxq7pf9DvTNJlIFGlw2/G7XjCMU4kiM6kSkijQ5LXTf874sKlEkdOLOe7Y0HLRazg8kybgVFZyp+dwWXieparGnpE4t6+/uGNKFFQqNd2a2uNUcCgSz4zF+fGpKCG3jV+9vu9F4ep8pYbXoVCp6WRKNZr9rzr8+rPysnteb1WpU+dVclVfw3m3Z1MlfE4F/zkeyFmt2Pl0iWa/g+sGGhEEzgsXiqJwQcOpajr/8dw0n7y2l0y5yts3NL/oMXVeHTZZ5AM7Oi74u6/tm+auLW3n5TE13eDkfJa3b2xhMVshXznfY+wKu2gLvrKpRjZJXMkVXo6cHd91IWJ5K+/bdE4YtlLTKVd12ptcK7ePz2b57VsGV6ImwEo7FbCyx9lyjalk8VIaz5elHratc9nwZg/fniVbrlGpnS9Q8J2Ds0zEC6iagc+hIL6QW3lZ7LLELyx7RDeubiJ0GQmzv1U4OpshWaxe8HcfuqLzRQVAoiCwmK2gGyatASerfmIShyAI57XNvBymaZIoqLyEHv9lT1HVKfxEyLk96DpvmLdDkdjcGSD+E0Ic9xybZzF7fji4yed4UUX55UY9bHv58Z82bHuWn+FYLvswoqYbl60u7M/AZb/fbwRv4Gt6WYRtXy8u089GPWz7Vudc8YG3CufOAT33vjeDItFLcRmeHOq8Suqv6WvDm3Uf68bzTc7lNPz6teJCRvLNOg+0Tp06b03qxrPOm4ILeaNneatdPNSpU+fyp24867wpeDOHbOvUqfPWo24830ScK2l3lrdSrrNOnTp13izUjeebiLdifrNOnTp13ozUW1Xq1KlTp06dV8ibs0a4Tp06derUuYTUjWedOnXq1KnzCqkbzzp16tSpU+cVUjeederUqVOnziukXm17mSEIwkNAw8s+8JXTACReh+e9HHCYprn+Ui+iTp06/3moV9v+J0EQhIOmaW6/1Ot4PXgrH1udOnUuT+ph2zp16tSpU+cVUjeederUqVOnziukbjz/8/DFS72A15G38rHVqVPnMqSe86xTp06dOnVeIXXPs06dOnXq1HmF1I1nnTp16tSp8wqpG8+3OIIg3C4IwhlBEMYEQfjcpV7Pa4kgCFOCIJwQBOGoIAgHL/V66tSp85+Hes7zLYwgCBIwAtwCzAEHgA+bpnn6ki7sNUIQhClgu2mab1Xxhzp16lym1D3PtzZXAGOmaU6YplkFvgW86xKv6XLDrH+94q9Xw+u2LsMwV36eThbNyUTxJR9bqmrmN56f+anP9+W9E6aq6SZgJguqOZsqmYA5nymbh6bTZkHVTP2c/3mhr3JVN79zYPZS7vdrtue6YZr5Su2iHx/LV8x9E8nz7ptMFM2nRuLn3ffUSNwci+VXbo/F8uZc2trr4aWc+fhw1ATME3PZl93v1/DrZal7nm9hBEF4H3C7aZqfXL79UeBK0zR//dKu7LVBEIRJII31Zv9n0zR/lpaV+gfglSO8ir+9LPZ7JJrHLot0hd3n3V/VDHKVGgJQqul0BF0v+tuiqlFQNZp8jov6X9lSDb9LoaoZGKaJQ5Fe6XJfzX7D67jnlZqOIIBdfvExVWo6qWKV1oBz5b6abqBqBh67pQw7Gs3jUCRa/A5UzWApV6Ej6CJXqdHgsVuLN00E4dVuwSvmZf9h3fOs82bmGtM0twJvAz4jCMJ1l3pBdS49lZp+wftzlRpVzQCsE/JZsqUaBVUDYDFb5q9+fIbxeIGSaj3PeLzASDS/8ni3Xb6g4Tz7nGOxAtPJ4sr9fpcCwGgsz7HZzKs4skuDbpgcmEqt3C6qGpWazoGpFM9NJBmNFgCI5Ss8eGJx5XEORaI14CRbfmF/FUlcMZwAkijgsknIkshz4wnm0mWSRZXnJ5Irr+NrYThfDyexbjzf2swDHefcbl++7y2BaZrzy99jwA+xwtRvLj77WeurzmvGdw/NUVw+WZ/L8dks85kyAC6bzHjcOulPJossLt8f8Tp41+ZWtnYGWdXsRdMN4nmV5ydSxPMqTwzHVv7uLNlSjeNzGe4/bhkOj13GZXvxzI11rX6u7A2TLKicWcq/6Pc/yY+OL5IoqK/s4N8A7j02z33HFgi6FHb1hlnf5gegwW3nqv4GTNPk35+doqYbpIpVvvbcNPPp8srfl6oaE8t72NvoIeyxc3I+g26YXNkTwudQUDWDB04sEstXXvV6R6J5Hh2Kvern+UnqxvOtzQFgQBCEHkEQbMCHgHsv8ZpeEwRBcAuC4D37M3ArcPLSrupn4OhR66vOa8ZHd3bhtsscn8uQKlZX7r9moIGeBitM67JJxPOWYdrcEeD0Yo6lbAWnTWJXXwOyZJ0aNcPkzFKOdEmlXK2xqy9Md9hNvlIjUVDJlWucWswiiyJvW9/MsdkMk4kijV77eWsyDJO5dAmApWwF8ac4U2OxPKZpck1/AyGX7bXcmp8JSRTY0R1auf3erR28a3Mbs+kyM6nSyv2iKCCLAoIg8L5t7SiSSNCl8JGdXaxq9q48bilT5qvPTVOp6Xz34CxTyQKmCY8Px6jUdNx2mfdsbWdrV5CRpfMvVKZTxQteGBmGyUyy9KL7AQYiHm5cHbno4/2P56Yu6nF14/kWxjRNDfh14MfAEPAd0zRPXdpVvWY0AU8LgnAM2A/8yDTNhy7xmupcRrhsMop0YStlAu/Y1Lpy+7Z1zTT57C96nEORaPDaafE52DOaxKFISKJAslBlIl7gOwdnyVc01rb6kCWRda0+tncHX/g/pkm2XGMhU+bZ8SSabjCeKNIf8Vx4XabJ9w/Ns5gp43cpiD/Nyl4ibLKITRa5qi9MX6N1HFXNIFuq8o3905SrGu7l0KwgCCth61SxSixfYSxe5Bd2dWGTRGq6wb7xFIPNXv7wXesJnHOxcGYxj7z8+pWqGtlyjT+89zRnlnIvWlNVNxi6wP1n1yC9gn18z9b2i3pcvWCozn92Lu0HYPdu6/uTT17KVbxS3nQFQ0vZCrpp0hZwYhgmT47EyJU0tnUHODSdoafBRWvARaPXzjOjCZr8jhUD98xYnIjXjkORObWQ4/b1zRiGSc0wODydYXt3kHhe5dhshu3dIRq9dubSJWZTZQabPDwznmR9qw/NMBlsesEDu//4AjetbsJpO7/YJluq4bRJ2GSRXKWGz6FcFgVDTwzHGGjy0B50ce+xBW5b14QkCDw/mSLitRPLqzgUCVGALZ3WBURB1dg7Eue6wUYeG4qyqtm34oUemk5jGAYtfgdPjyX50BWdLyzYNNF1k6V8hfagi5FonoKq0R2yCrgOzWS4ZW3Ty645mquQyKt0N7hXDPpP45HTUda3+WjxO192z+vDsOvUeQO4+vOPr+TbzuUHMxm2dgbe+AW9xbn32ALXDzRik0WeGomzrtWHblg25LuHZrl5TROyJLKULdMedOJz2rBJIppuMJEooGoa/REPhUqNHd1hbLJIuapx3WADM8kSx+cz3LauGUmAHxyeYzZd5pev6cXrsE6pDR47DkUi7LFz/UAj85kya1t9K+uLZst0h104lBcH/+yKyH/sm+YT1/RgdcpcHmztCuJeNvTbuoLYJBHTtHK8A01eBpq8TMQL/M3DI/y3t9mZS5X4weE5fvvWQSRRsB4T8RDPV2j0Omj02Hl6LM5kosRV/Q3n/a9TC1lOzOUwMfnA9g72jMT5pat7EEWBfeNJ1p2zlz+NUwtZJFGkI/ziqmkAVdPPqxRe3eKlwf3iCMSFqBvPOnXeAOYzZaY+//YX3b/vG28p0afLhmv7G/A5ZUwT1rX66Fj2WJ44E+Pq/gbCy20QhUqNgMt2XvXsh6/o5InhODPJIl/cM8n7t7ezlCsTy1X56K4uOsMybUEnI0t5xuIFgi4buwc9DC3l2NkbBqxwr0ORqOkGw9Ecfqey8vyzqRIPnVrihlWNF6wkdSgSv3hVNwAvEXW+JJx7DG3L7SeCYOVEq5qBTRZ5fDjGJ67txiaJhN0KqqYTzam0Blx0hlx8/sHTmCb8t7etoS3o5MNXdDKylEc3TI7NZljT4sPE5PmJFDetaUIUBGRJ5Or+Bko1HY9dRpEFmnwOqppBRdPxOV5Y11isQEfIuWIQb1z90t6pbpj8x3PT/OLVPSth3WOzGZy94ZU2mZ9GPedZp06dtxxBtw1BEBBFYcVwAmxqD5xnKPMVjR+fWuKLeyao6VYby/cPz9HgtfHdQ3Ns6vCxlCtzfDbLh6/o4PHhKAemUuiGyZlonjs2tKAZJls7g+cV1ZxFN0xy5Ron5jIrlaMdIRefvKaH/oj3vMdWavpKde3ZXOdZb/lyxDRNfnh4jsVshWRB5d5jC7xnSxuqZtLotTOZLPHpGwboi3j44ZF5DkwmafY7uW6wEUUSue/YAgvZCqtafOQrNY7MZKjUdHTD5GNXddPd4EZavnqoagblqsYDJxbZ2hlEEgXmM9brAi+0J8XylZV2pHM5s5RfqfA9iyQKfPLa3vPyoXdubL0owwl1z7NOnTpvcZayFY7OpNnRE1rxOMtVHVkSGIsV6Aq6cNgl/ui+03xkVxdv39iKxy7jkEWOzGbY0RViS0cQQRB4fDjKu7e0Y5NF3rahmXJVp6hqiKJArlKjphkcn7NO6Ff0hHDbZdx2mY6QC0UUVxr+f9Lj1A2TZLHKdKJIQ/8LJ++5TJnQRZ7MXw2abiCJL17XT+OxoRgzqRKfvLaHrzw9xebOIJIosm8iSZPPzu3rW6jUNA5NZ9jSEUAzDHb0hFfSF+/c1LpykbCu1c9AxMOfPDDEqoiHd2xu4/RCjkMzaT51XR+bOgIArG3xrayxp8FNZ8iFqun8y9OTrGv1sXvVhatqg24FWXxtfcW651mnziXEJkvsm0jS/bkfcfXnH7/Uy3nTkS5WX1IUAWAyUSRVVAl6bOe1rRyeSXN4Ok2xqnH96ghht43rBhvxOWScywpAY/EiV3SHuPvoPIZpFb/85o2DHJnJUKzU+PdnpyiqGls6/Ryfy3B0JsPBqRSL2TKiYPLFPeMAbO8K0RVys2c0Tv4CbRa6YfKvT0/S4nO8KPd3IeWe14M9o3HORF++9/RcrhkIc1VfmP2TaTZ3BphIFPC7FK7uayBXto7zX56e4rnxBImCSqmq83ePjSBgUqjUuP/4Ao+ejnLfsXlqmk6+ouFzyCxkVb68d5JVLV4+vbsfm/yCmepueEERKlep8Y3np7HLEr9yXS8DTd4XrfEsEa+DkPu1bfupe5516lxCzhYLTX3+7XR/7keXdjFvQoaWcrQHXHQuF4SYpsm/PD3JL1zVjSKJuO0SbpvE2lb/eX8nCgIn5rLctMbyVDpCLoIuG199dorhaJ4P7ejgzo0tCIKAz6nwB/eeZG2Ln75GN+vb/LgdCjeubuJvHjnDjWuaWNfix2OXKagaa1v9JAtViqrOUrZCulQlXapy27rmC0rzSaLAL13Tc8G2lHP7I19PblgVuWivU9V0Hjq5xLs2t9EWdPHo6ShdYRcT8QKj0TwtAQd7R+KE3DZ++dpebLLIvvEk85kCR6bTTCWL3LmhlXuOLnDHhmZcNpk9owmcNon/dvsaRpZyFKs64Zcp3PE5FH7uyi7AUi5qCzg5vZAjU6q+6CLkp3FyPsvaFt8rbguqe551LoggCE8IgnDL8s9/LAjC/73Ua6pT5ye5qq9hxXCC1dO3od1PtlwDLI8j4nMwmyqh6S/kwtqDTloCDjwOmfl0if9932mOz2Y4PJOm2eegt8FqUxmJ5on4HPz8lV20BZ1cO9jIulYfk4kirQEHf/m+zbx9Qyvlmk6mVOXITIaOkIvVLV52dAfJlWu0B53s6A7xjednXlIm7qX6EN+oVsKXM5zlqr7i4T82ZBlL3TBZylZIFFV6G130NXo4vZijPeiiWNX5hydGEQSYS5e4//gC0WyFt21o5jduHOTOja184SPbuKInzE1rItywqpGhhRz7J5O0BV30NnqYiBdYyJSYSZbQDRPTNFdk/s5y7r4VVA2XXWRrV5BXQqpYPa+XJ5q7OFWjuudZ56X4A+B/C4IQAbYA77zE66lT56Jo8jpWQq9nGY3lCbgUqOmcnM9xeCbN2zc00+h1UFI1ru5r4PiyB3L7hhYQTR4bjnLf0QV2r2rk7Rvb+Ob+aT74z8+xe7CBQlXnN24aXJHhu//4Ild0B7m6P0xB1finJ8do8jto8juJ51X2jib4pWt6XvGxPHkmxg0/pWL0jWJ4KYckCmxsD3D9YASnIvHAiQXORAsEnAqZssZdW9p48kwcVdPZ0hnE65BIFlSiuQo3rWliIVNGFq3+1h+fXEIUTZp8Tp4eS/D+re3Mp0sUVI3Hh2L83ttWE81WKBkG0XyF5yeTrGvzcWohh0OWzhO4OEtR1UgVa3SHLyxA8VJcN9j4M+1J3fOsc0FM09yD1Qz/28CHTNPUBUHoFQThXwRB+N4lXl6dOudhmiZVzeDobIbWgBPxHE8qX6nRGXLjdSjMp8s8cGKBo7MpxmOWePu3DsyykC2Tq1RpCzmZjBf5r985zmNDMa7pb2A2XeGBEwusa/Fx54ZmTsznsEkiS9kXPJT3bG1ja1eQw9NWxWh32M1NqyOEPVae7f3bX1q15rsHZ8+rEM2WapyazzIeL1ywgveNoFLTMc6p9N3SGWRjewCwhPFVzSBVrGGYBqcWskzFC/zg0CyKKPD8RIpnx+KcWcrz+QeHODKdxqGILGbLHJxOIYkQL1QYixbZPdhIT4OLgWYvbSEXV/aGaPTYyZRqfOfQLAYmV/c30BfxkCnWeN/Wdq7svfCeuO0yWztf7HU+fGqJmm4wnykzEs2zbyL5U4/9Yqfl1I1nnQsiCMIGoAWomqaZB1ieC/qJS7uyOnVezFSyxOPDUTTdQNV0vn1gZuV3mm6ylC1zdDaD36VwTX8jdlkm6FHQDZOarnNoKkU0q+KQRfaMxrlhVSNuRWQ2XcahiDxwYpG9YwmiOZU/eOc61rT4eHLYEhtfypZ56kwMWRRZ1+YjllPZ2BHg7x8b49v7ZylVrfaL43OZC679+lWN5xXFVDSdTLmKWjPwnNPD+Eby1Eic2XSJoUUrlPqT7JtIkipVWdviY1tXkOcnUySKljzf2hYv27tCTCSKOBURURTY2OZHFCCWU/E6FLZ3hbh2sIHvHZ7n41f10B500RF0UdVMUiWVf3xyjF+6ppuw28aX9oyTKar4nAqHZ9I0uO1MxAt8/fnplfWoms4PD89d8Fh6Gz3IokBNMxAFXqQ7/LNSN551XoQgCC3A17EGZxcEQbj9Ei/pPwVtASfdn/tRvfL2FVLVDGZTJW5f38LG9gAHplJ8/OoXQqSz6RIORcJjlzmzlGc6VeSuLW30NXj5whNjjCzluGF1E29b38JYrMTnbl/Fh3Z04bTL3LmxlVa/k4/t6mJTq4+nxxIcnEzx9Ggch03k6dEEPzqxyNf2TfPlPWOYBtgkkYdPLdHotdHf5KEj6GJkKc94tHBe3hUsr/jwdPq8+5p8Dq7ubzxPkeiN5rZ1zXSF3XSHXByYTK/0m9Z0g3y5htch8yvX9bKxPciVvWHes62dz940yF99YDMT8RKdYRchtx1VMxlazPFnDw7jscv83JVdxPMqnUEX//bMJIJpIgoChUqV2XQJRYSZVJF8ucpjp2OEPXZUzeC7h2bBNDk1nyNf0RheyvO+czRoCxWNj+7q5pHTUebSJSo1nXLVytH2Rzwr+raZUm1Fj/fVUs951jkPQRBcwA+A3zFNc0gQhD8C/hyoi66/zjzzuRtXfq5X3l48kiiseBNHZtJkS7WV3y1mywwv5hBFgbmxOLetbWY6WaRc1UgUVR48ucA7N7XwgR0d6LrBwSnLy/rst4/QG3axlCtzJppjLlUGQaA96GIqVcIwYXN7gB8eWUAW4c4NLfz4dIyqAVf2hDFNkxtXRShVDWwSHJxOoRswkSgyFiuwvTtIxOvApUi0By293ctRBN5hk7h5bQTdMLn/+AKtASdTiSKDTV5qusk3989w85om/s+jo6xv85Ita0wkimztDPLp3X0EnDL/+OQEt61r4okzcZ48M8UVvWH2TSXZ0hmkNejkgROLnFnMcXoxz/7JFB6HhGmaeOwyyYLKr1zXx/+8+wQPnlzkY1f14Hcp3LGhhe8cmKUt6GRVk5fHhqN8cEcnO3tDmKYlimBiTcwBiOdV3DaJlsDFhWQvhrrxrHMepmmWgF3n3N5z9rYgCGHgT4AtgiD8f6Zp/tmlWWWdOi8giQJrWiwvbftP5AjtsmgVkTS4WcxUODyVosFjY2evJdG3vaeBu48u4HM5CLkUonmVh09HuaovjNchc3ohy23rmgk4bUynikwnS5SqOiNLef7rd49hV0T+8ee30RFys749QFvQyUDEw9auAJlSFZssUdFMZlNl/vjdGwDLs/Qui5THCir3HF0k5LbTuix5dzlhmDCdLDEQ8bKjO4RuWJ7ipo4AyaJKW9CJIMCfvHsDi5kS//7cFD0hN/lyjS/vmUAQBD51fR+TiQKb2gPcuraJ43NZWvwOAk6Z2VSZOza0IIkid2xsZSyW4/4TS+zoCvHYcIz4svH8/Hs3Mp0skSxUV3KS79naxli8gCKLfHCHJSrvdSh879AcN6+JnDeh5Yt7xrHLIls6g3jsClXNeNXh2/pUlTr/2XlDPgDdn/vRBbVtX2qqyks+/vLgTTVV5dB0mppmkCqpHJrOIIvwiWt6+Ycnx9jVG6JWM5hIlrhrcxvfPjhDd8jN/qkU793WzuPDMZyKyJ0bW1nKVTBNKNd0XIrIkyMJ1rR42dAeYDRaoFzTKFR0FEkkV67ytg0t9J4TIpxNldAMA7dNJpZXV4ZIp4tVAi5lpV3k9EKOaL7CDS+o5byhU1XODrG+UOHMUrZMrqKxmCkTz6sIAggIJIsqeVUj6FS4aU0TTkXivuMLPD4cY22Ln7s2t3JgKs10qsjb1rewtSvIRLzAV56ZIF2q8V9uHGQmWUSWBMYTRT6wrYN94wm2dYcoLsvy7R6MMBov8I6NrUiiQCxXIbK8xnylxt88MsL1gw3sXvXi6uRKVWcsXmB9m5+pRJF8RWNDu/9FjzuHl93zes6zTp06bxlSxSrZsqUktJAp88RwjGdG48QLFZ4bSzKfKtLic/ClPeOMRXN47QrDsTxTySKPD0fJl2vce3yeD13Rwa6+BgTB5LsH5/iTH50mW9K4+8g8h6ZTaAb8/tvXMLSY528fPsN3D8zw6FCUDW0+xuJ51rf76W308PXnpzk0nSKeV3lmLMFUooRdlvA6ZP7o/lM8PRpn71hiRZEHYE2Ll2v7G0gWVJ4eTbzhe5gr1zi9cOHZmN86MM2X904wnylzVV8YTTdp9NrIljWGFrL84Mg8c+kSf/voCE+PJvDaJTa0+zg0neK7h2aJF1TKVY0/e3CIb+yfRpEkkoUqnSEnB2fSLGTKvGNDC/cenecrz05x79EFppMlZpMlFrJlhhasNiOAP7r/NHcfmcc0Tc4s5WnzO3Db5JWh4wVV48ETixRVDYdNWrlY6W5ws6HdT6WmU6q+WPHpYqmHbevUqfOW4dhchtMLOW5b18SeM3GeOBPjyt4Qd2xoJVOs8tCpRTIVjS0dAd61uY01rX4Oz6YpVnROLWSI5qoogsAjQ0sk8iqFssYvXdPNju4GytUaJibv39bBN56f4QdH5pmMF/A7Fd65uYV1rQE03eTndnRSrmnE8yp3bmwlnqvw2NASV/Y20LMsL+d3KXSHPaxt9RFaVtJJF6vUDIOI14EsCXgcMr2N7p92uK8LYY+dG1ZfWCN2Ilbiip4gs6kyD5xctNp9hCCfvXmA43MZvvjUON/eP0t/xMOZpRwb2vxsaAvw/54YZTDiwmmTOTqbYTZRJFZU2dUd4vb1TbhsMresaeL/Pj5Cslgj4rXhdsjoGIzGcsQLKtPxAj0NbjYvt8z8xfs2ki7V+LvHRnnv1jZ+bmcXubLGntE4HnuW0Wie92/vwKlY/aZuu3yewtNYrECpqtPgsZ0XIbhY6p5nnTqvIVd//vF6xewl5IZVET5zQz+SIDCTLiEIMBYt8Nx4AlkWed+2drZ2BLlxdRPpksbwYpaT8zk+flUXmgFdITemKPDI6RjfOzTPjp4QNllieDHLl/ZO0BF08bnvH2dVs4egS+Zju7pY1+anXDMRTJM/fXCIbx6Y4aGTUeL5Cn6nQs0wifisHN+5Orwf3dW1YjhPLWR58kzsPP1duyxdNnnQP/3REM+NJ/jorm5uXttMf8TNzWua+cN3rWdzh4+/e2yU04t5OsIujs1nGF7K8cFtHQQ9Nv7swSF8DoXxRBmPXcZjl/mFq7vp8Lv4zuE5nh5LYBgm3z00h9umcE1/mA/s6MRtk3l6NEnE6+Bdm9poC7kZbPLwN4+OAFY+9shMhlvXNjMSLXBkJk2Tz05vg5uukIvb1jXRGnBiYhUQHZ/LcGYpz0MnlwBY3+ZnY7ufqWTxZ9qTuudZp85ryLlzO19NxezZtpWzP59biVvnfEzT5PnJFFd0hzBMk+lUkX0TKTa1B9jZ20ChUiVbrjGTLPGB7Z3YFYkfHp5jXauXHxyeo1Yz+Pd90zglgWfG4ww2ednaHuDawUbWtwX4b989xlS6SEfASa5SozPo5P7jS9yxoZmv7pvmltURppMlKjWNzR0BfvumAX54bJH+Rg8/ODTLE2fibGj38eW9k3z8qm5uXddMQdVwyCKyZPkvg01e+ho9K56RYZjklmeNXg58+oY+7LJIplwjlqswvJgj4rVzaj7LfKbMbKrIYqbEmaUCXrvChnY//7hnnM6QyxLvVzVCLoW1LV6+uHeSta0+fC6ZK7qCdITcfOprh2gNONjcEeJ/3XOCj+zs5vb1Tfzo+CKxXBWnTaTX56HJ52TbshCCU5FQazrtISdBt8LIUp7nJ1Ps7A2TKKhUajpVzeCx4ShzqRJhjx1dN7l24AXdW4fyQjj3lVL3POvUuQx55nM3MvX5tzP1+bevjHCq89Ioksg/PTXOQ6eWGFrMM58ukatoZMtVnh1PcXohS76i09PowWWT8DkUHh+Oc2g6TaqkUlQ14sUqt6+1FIQ8DhmbLCGK4LSLmJpOSTNY3eJnJl0m4JDY1hXirs1t9EY8BFwKDR4Hn76+l39+epJdvWEeHYoynSpx7UAD3SE33SEnsynLy3l+IslitsIPj8xxz9F5FEnELot8/flpnhiOkSpVeXY8+apycq8lAZeN4cU8/7J3kn99Zgqf00ZvxMuzE0n2jMZJ5FTKVZ2ZVBFN1zkyneFD2zsIOG2UqxplTWNrZ4DP//gM6vIQ60JFx+u0cXV/A5+5oZ/dqxq57+gia1r8FKs6xYqGJAj0N7pAsPpnHx9eotlvFQkJAuzoCeFSJPacidMScHDFcrV1g8fO8GKeg1MpnIrENQONNHjsNPkduO0v+IyqprN35IW88g+PzJGr1LgY6p5nnTqvEz/pPdZ5fRAEAacikq/UmE4WAYG3rbcqXf/4/tP0hJ3MZyvctbmNL+4ZRxaFlWKRrV1BIj4H6WIN0zQ5uZRDka1Kzr95+Ay/fcsA04kSrUEXbSEXh6ZSNPsdhD02BEz2Tyap1Azetr6ZbLnKr3ztELphUq7qiMB0qkiL30EsrxL2OPDYFYYXc5RUnbaAE5MgLsU6DX/7wCxX9oSo1AwaPHbu2NBywcHOl4KZZImQx0bEZ+euLW00eO0YujWg+rM3DTKVKPAfz0/jdyo4bAqaYfDAiQXieRWP005B1XlmNEHQJbOu2YskSdx9dIFGjx1FErhrcytPDseoGiYNbjtPDS8Ry6tc2dOAy66wrsVOyG3j7iMFFElCN0wOTKX42K5uZElkXZufJq+TR4aWGIsW+NXd/dywOoIovCB671QsxaNT81nWLXubdlnivdteEFu4YVVkpY3o5ah7nnXqvE6c6z3Ww66vL00+B+/Z2s6nd/fT0+Cmp8GN2y7zv96xjlihytZlbdaDkyn+3+NjhNwKI9ECPqfCNf0NDC9kmUuX0DSDoNPG1p4gyWKVe47M0xdx43cpTCWKpEtVZlMlZtMV/uc9J5lMlhAEgS2dAQzd4PqBBrKVGgvpEqcWslw72ECTz0FvowdJErh6oIHJRJFvH5zhN791hFPLXi7Ae7e10x/xnhdGPFe2741GN0xmUyUOTKWQJAFFEvnENb2oms7x2QzfPjCHCXz74Ax/9/goLkXiN27sp1ytMbyUI1uukSlryAK8a3MbPpcNRZR4diLNWKzAb93cz4Z2H+lSjb96ZIREscr2zhA/Pr1EWTNp8NrpafQQcilkS1UEBH7x6m72jsZ4djzJR3d28aPjC4xG87QHnfyfR0fIlTTWt/mRREtRyDSt1huwqmxPzOc4Pp95kdLT8xNJJhNFAi7bRY9mqxvPOnXqvOkJe+wMNHkRBIE7NrTgtsv88Mgc39w/QyKv8uRIlD974DS/efMA79vWxom5HF/46DamEyX+/rFRsuUah6ZSLGTKeGwie4bjeOwiT0+ksMsS6aJGqVJDwuTvPryFm9c0cfPaJn5hVxftQQf3H1/k3uNLbOoMsDrioyfiYUtnkLDbwUg0zzPjCZq9dmZTJZr9DgJOBbsiMpcu8Vc/PgNYoefLiVy5xpNn4ozHCrQFnLQGnEiiwLauEA0eG6mSyqev78dtU1jd7EMU4FsH53DbZZq8DnavasLvVBBE2DeeIluuEvbYuX5VBFUzieZrDEZ87J9Mcmo+Z2nb1gw6gw4+flUPO3sbqWoGf3DfKR4+HWXfRILPPzjMH75zPW9b38yJ+Sxht417j84zny4xmSxy05pGNrX7ObWQ5eFTSzxxZonPPzgEWG1MN69t4oqeMI8OxVaOU9MNDs9kCLoUFtKlFZWpl+PyerXq1KlT51Xy3HiS8XiBwSYvv3RND5+5cYBsSWdtm4+/f2yU/VNpfA6Z3/rmEQ5MJbmiK4jTJuGxi0QLKv9/9v47TM7rvu+/3+e+557eZ7b3xRb0DhAkwd5FipREWcWS3GviOIoT20x1IvtJ6MSJE5efq2RblmSJkkU1iqRIsReQAEH0ur2X6X3mbs8fs4DAvssGAjiv68KFLYPBmQNyPnva9xydzTOZqvDf7lrPzu4I27uj7OqJ0BLxMpGu8O390+zsiTKTqWBZsLEtjG5ZZMs1fnRknl++ehU9MT8VwyRVqBdCPzWbZy5XRVUEAbeDn9rewZ0b27i6v5G2iIehhTzfeXmahw7PnX0dY4ki+8ZS560fIz4nN65tpD1aX3Iwz7llpb8pwG/dOMAXnxlloNlPV8RLSbdQgA9vaiVfNVkoVPnIphZCTpW9Ywnaoh6uHWxgS2f9jGVfg5fdgw1cuaqBHV0RGgIuqqZBumTw0JE5Hjw8w1iiwJWr4nxsSzsHJ9Mcm83x548PkS/rnJzPU9ZNDk5luW/vFNcMxPmrp0b4xb/fy5MnFzkwkWEsUWZbVwTdtHj02DxVoz5dftOanxzFmclUuKw3Stjr5MWxFBV9eVPlMjwlSbqoOBS4b+8kPzo6z69/ZR+qIrhjYwu1pSLlG9oCzGTKFGoGO3uifPfgLCfmCjQG3KxrCfHZyzr56LZWvrl3irFkiQcPz5Ap6xiWzbauCH2NAQIuB8dnc/zt0yM0hdwEPRoNAdfSiKxGc9DJCyMpnh1KYNtw3epGFvIVHKpg31gaVRF0xb0MtgT4+St7aA56GGz21294GU9j2zZPnFog4js/u21Pz+eZSpfwOh00BtyMLBb40dF6sD83tMhfPjHERKrE+vYAp+cLpEo1DNOibNSv/uqKeegIeygb4PU4aQl7SOSqTCaL/PGPTpOr1Pjis2P8w9PDzOfL2AKePr3I6cUCfreDW9Y1s7UrilAFumnyV08NYyG4aW0DxYrON/dP0hx0U9YtPntZJ90NXm5c08RookhnzMuHNrRw2aoYHVEvfY0BvrJnnA9vasXlUHnq1CIT6TL/uGecYtUg5nfSEalfqN4d99MZXd7ZWrlhSJKkC9ZUukTE63zFDsrFQhXdNOkN+nGq8PCRWa5cFec/fecwmzvDzKQrnJzPc1lvjGrNRBU2u3qjeJ2CRL6GLWweP75IslBBKILZbIWRxRIOlfoGF4fgfzx4HE0IvE6Ff3pxAqdD4HY46G4MMNgc4Ge/uIfGoIub1jaCUEgUq9y9tZ2BpiDz2QoPHZ3Dp6n8xg39aKrCHz18gjs2tXLzuib+5dde5jeu68PpUN61G0BWyuNUcWsqIY9GyFO/Fq0p6OIfnx9jz0iSsNfJvQ8dZzxZ4n99fCOJgs50tsxirsLx6Swn5wokijUa/C5quknc78IGjs/lmc9XWd3gYSpX5YBuMJ2pce3qGL0NfiI+jTXNQY7PFrhpbRPrWoN8/+AM6VKNuE/D63TR1xAgXzEIe5zs6IrwtRcn2Nge5lsvTfHxbe0cnsryrZcmOTmX449+ajMhr5OBpsDZ13bzumbyFZ1VDV5cDgVFCJKFKqMJnUypRl/j8vpcjjwlSbogjSaKDC8UKVbrxzn2j6d48uQCg01B/G4nR2ayzOUqgOClyTTbuqNMJivsG0+zpTPCbetbmMlVqZqwsS3Ei6NpZnJVHjk6x3iqiAV4nSqqEOzsjdAV83HXpjYKZZ3mkIuj83naIm7KNZOo1008oHF8JsffPTvCp3d2MtAU5IHD81QNi1xJ5y+fGiZTrHFkOodDEZycL1CsmgwvFnA7VY5MZxlPlvkX1/ahKIKwR+NHx+betA/eK+0RL3F/vYDDZKrEZKqEqiikijX+253rSBWreDUVRcCXnhnlpYkUk6kSEa/GRLpMV9yDQ1E4NJlh73iadKFGV8xHxOci7nWQLBu0hjxUDZu1rX4cQmV0scC+0RQxn5u5bInvH5zhpbEMPz6+yMa2ECfmC1R0C82hsG88w2SqyP/3xBBPnlrkxFwWRQhiPhdbu6PYts2qBj+Pn1x43denqQoxn5vnhpP8+MQ8Dxye4+hU7uxtLsshw1OSpAvK4ycWmEyVKNUM1rYGzxYHPzyd5XuHZpjJlrlusIEr+2M4FJXb1jdxYjbPQJOfa9fE0ZT6UZKnTifY0hnCowmeOLnA5o4wAw0+euJ+bBvmMlUmk6X6mU9VIVOq8edP1O//PDWX57M7O/FoThoDbhKFMqWaxeU9EVyKQqlmcGgyzce2tZEu1YMj5HYwvFhACMHwYoGfvaKLUs3gK8+Ps741RHPQzWiywNrWIKZl0xz0MPE2q9+8m4SA6UyJE3N5ruyLoygK/+7m1bRHfXxkazupYo0bBhtpCLjIlnU0VXBstv4DgsuhoAob0zR5dihBqabTFvWSqxhMJAs0Bz00+l0cnckymSqzpjmIjcXjJxcIe1QEFn2NfrZ1hulr9DOaKCxNe8MNa5q4aW0zn79pALfmIOp30hx2s7UzzNrWEKsa/DQF3Zy5/MS2bZ48ucBCroJh2Qw2B7h6oIGb1jbzy1f1kCrXqBr2617+/XrktK0kfcCde170zOeX8tGXbd0RvJpKR7S+TqWbFqoQfGpnJxtncmzpjFCumcxmqwy2+Dk5X+D4TJbRxTxbuqL862e/wRfKP4XTAbpVvz4j5FSZSJcp6xaXdYW4drCBw1MZUiWddKlGrqIzk60Q92mMJUvMZiu8ODZKR8jNQGsQh6qgOQQ/PplgLltmQ1sY04I9Qyl29UaJB1woA41kSzV29UTpa/Tx9RcnuW6wgWuW/q5js3nu3trOyGKR1c1BJlIF/C7t/HY29VFoyKORKFQ5PpMn5nVyaj5PZ8xLRTexbPjynnHmclUsyyTocXJ5b4wnTiZRAB348He/yBM//esMzxfYPRCnUKoxnqlQrJn0eHx0hN3M5as8eXqBfNWgK+rl2/tnuP/AHG1hN9lylaBHI+DW+I3r+6nqFmXd5KFjc8ymS2zsCONSHUynKjw3kmAiWWRDe5gfHZ2nWDO4cU0z33ppiulMGVURuDWV7d1RyjWTR4/P8eFNbfzM5d08N5zg8GSWnT2xt+wXGZ6S9AH36qC81C/KDrrrgWKYFouFKifm8rSE3PXNHz4nlZrBQ0fnURWwLXhhJIFDhfaIB7em8Lkf/QP/78pP4XepeFwa6YJOslTD71JoCrjJVgyOH5+nULUIexUyJZuZdJmI14lXUzk4laW/wctEymY0WaJqwUCjn+lsmbBbY2tXmNs3tJAuVhlZLHDN6jhPn07w4U0t/ODQLDG/i3UtIZ4fTvLYiQXuWNqd+vFt7dy8rpm5bIW/fHKImmHRv8z1t3fDRLLE4ekst29sec33Am6NqmHy1RfGqRoGA01BxpMlbl3fSGvYTWvYjWHaVE2TZL7CSxMZ2iJuarrBXMHgN5/9J77/sV/Bsi2++dI0V/fFSJSqOB2CfaMJfG6NBr+T43N5ZjMzxHxu4n4n/c0BDkxkcTsEczmVHd0Rvn9whlPzObZ0Rom4NWaFwnOnk/zUtnb++ukhMiWdvgY/tm3T3+hjXWv93OyHN7bg0tRXnON0ORSGFgqUayYep8oVq+Icmsosq79keEqSdEEqVk2OTue4cW39/sYvLl2Vtb1rqcbtQpEPbWjl+ZEkDlVhMlXh6EyOewC304HPrdEW8bK9y8XjJxeYyVQJ+xRCHgfH5+vHFQzDwuMQjCbKtIVdTKZLDDYHaYv4mMlVaA56cDtVFvNVFAFHZnO8PJXmoaPz+N0qNd3mW/um0G2b62uNNAZcHJnJ4nXW12oLVZ2+Bh9xv5OWsJv79k2SyFdpCbqpmTZBz/s38uyIemgJuynVDAoV4+x0+BkHJjJ0xDyE3E5cDoVEvkJ72EfYV+DITIGPbWrhjx45gWFByKORKtYQ2Pi0+urgdKqIABwCJtNlLEthMl3CpylMJkucNkEFmkIaTifMZ2oEc1V6416qpkW+pHNiJkeyZODWFCIeje8fnGFLR5htnWEOT2cJuB10x3x8ZHMrX35+HFVVWNsaoiXk4Z5vH2Z1S5Bfu2bV2dekKIK+xgDpUo3RZI1kvsYdG1uX1V9yzVOSpAtSyKudDc6XJ9IMNAf4pat68bpUbl7bhKIIfnBoGqcqKFYt7tjURP/SrsueuA/dtDAti4l0iapu0hLSyJd19o1lUYCIW6FqgGnb3L2tlYGmACGvi+NzecYSRUwTaobFidk8qVKVqmHh0QS2ZbO1M0TNqB9RiQdc7OiK0hJ0M5Uus2ckxe0bmtnZHeW/3bUOn9vBU6cTdER83LqumWsHG8hXTTa0h9Ct9688nxD1KkKpYo3TC/mzpQFLNYN8RcejqbQF3BRrBlf0xbCB33/gGIcm0yzmy3xz/xRVE1a3+NEUBdu0CHs1moL1jUe6BaYNfpfGbKZM1KfREvQQ8bpoDLi4eW0DQY8DtyYo10w6Yl4+ub2duN/FpvYwumXWi2CsbyLkdlDSDT67q5PNnSF+fHyeY7M5cmWdhXz9bO1v37qa//7RDZyYz/PUyXl+aXc3t6xt4sDSfaBQryykKoLD01ksC47P5Tg+m19Wf8mRpyRJF6R8ReeZ0wlu29CCblrc+8Pj/PzubnJlg6v7G3AogsePJ+hp8LGxI8Qzw2kWc/Ui+y+Pp/E4VRbzNXTTpFCrbypRAAvQFCjXLCoW2AY8eGQWj+bgqv44Pzq2wEymTK6iE/I4iPmcBD0aUZ+GQ/Hz9FCSfNWgKeDCoSrctamVtqiXx08s4HIo/Kvr+3h6KInH6eDUfJEHDs0QdDv58vPjbGgLcmAyQ1PQzZqWIJPp9/9SgPaIl8NTWf7mqWGuX9OEYVkYps3+iQyTmTKdMS/zuSqf3NnJwck0394/SW/cz1y2ikPYJPI1pjNlhKgf/TGWaiuoQM0Ey7LIVy18bptatYpu2GSrJmU9ScDtZDpdwe/WsMwqX987idep8v1Dc/jdKjZFJlIlyrqJx+nA43TQHfNQ1i2uXBVlKFFiQ1uY+1+eQVMF3TEvparB8dka8aCbkFujZlpssm1sG7Z1RbDs+g8IYa8Tl6YQX+bZWjnylCTpguRzOtjaVb+eqiPq5Y5NrUR9Lj65o5O/emqYv3t2jES+yniySGvIw9hiAc9SEXaPS6VQMajoJl0xH50RJwrgcQo6Q07cDoG5tJnIsiBftVko6PU7IwMufG6N3gY/xZpJvqpTMSyOzRV4eiiJZdpMZcpMZyocnk5zaDpLyKOhCMG+8RRV3aQ75mVNa5DZTIWoz8WHNrZQrBqcnMsznSlxbCYHQFvY/Qav/r116/pmPnd5N98/OMPIYpH+Jj9ep4P1bSGu6o8T8WjsGU4ym6lQqFg8P5JmZLFEqmyRLOoIln4AMcCzNETzuBy4HFDULRRRL2ZhA9mqiaZAd0OAfNVgsMlPyOOo/1uZJslcheagC90wCbocrGr00xLycGQqw3yuQsCjcVlvjIaAm03tYXb3x2gJuijVTB4+Nk/IrSGE4O6t7VyxKobPqfK3T4/w1KlFHKrCbLZMplS/SWUiWcK037BbXkGOPCVJuiApiqAp6KZqmAgEP31ZF6fmcnzhB0fpi/vY0R1hV2+EYtXikWMLBD0abkd9s8hgY5BTCzk8msqp2QJhr4J3aXmxu8FHYSZPpWZgAybgV6Bi1zeYjCRL3LSmkX1jaVIFHa9LpSko2NAcYFtvFL/LQaGs89RQguH5AvmKyVOnFvnsrq56Efr5PB6nymBTkLBX47p4I2taghydzjKZLjGXrfKhjVGePLXIzUvT0u83IQRBj8Yv7u4hXdJREYS8GutaA/zVE8MUagamCVcNxJhIFRle2nQjAFUB3QTdsgl5VXpj9Yo92bKB5gBTt+mIevC7HdSMCoMNHubyNRazFWwsuhoCXDsQ5w8eOM5wwsCjwY6eOJev6qRUtcjVDAabA+wdTfHRLa30N/mwLBunQ2E6U+Z/PXSSq/ob6Ip7yVd1Qj4nN69v5v88cpI1zUG6417aIh56Yj6OzWSpmTaHpzMcn82xpiV49nzrW5HhKUnSBatmWNy3dxJVETQE3IBNqWrw2IkFjs/l6Yl66G0KckVflG++NE2Dv757dd9EiooBQaeJDiyWLAQQdAlOzuVxaSolh4Fqg8+l4VBsrKpJpWYS8bkYXizid2k0RzwIW6E15GE0UeTWjS7GkyW+/Pw4HVEPRd1iTZOfA1NZ/vsDx1jdEiRT0umJ+djQGibqd3JkKstcrsyvX9fH11+c4NM7Orn/wAy7+2LLvuHjvTCydCa1NeTmuZEkN65pZM9IknSxRqGqs7E9zPhimWShPuW5qsHFwakMAoHTUR91akJwdLo+ilZFfepWB2azZfQUuByCXFlnR3eMPSNJeuM+Ts8VqOkGLUE3uVIBr1NDNwz2jmeYSVdwawrlmkGhbDCTKWNY4NIc3LK2kX9z5CCxgEbE5+ChI/PctKaJdS0BvE4Hv3Z1D4+dSNAb9/PnTwwx0Ojn+ZEUl/fGuHawkXy5dvb403LIaVtJki4IQwuF11wOrZsW8YCL29a34HUqDC8U6xt3XA4+trWNuXyN//3wSU7O5TGMekAC1AwIuwVOhwO/UxByKwRcCg5VoWJYZItVPKpCwK2RLenkqxa6YTObr5IrVhlNFNEti0KpSqZUpTXswjBM/uP9Rzg+nWFTe5DdfXE+tqWN2UIVn8tBW9TLRKrEZLrMRLrEXzxxmheGEhyezvDI0XmmkkWaAy4eOjqPZZs8fmqRmfN4EbqqCMYTBX7lH/fx0JFZKrrJEycX6W8KYNn1m2xOzGeZzRSZz1Y5OptFcygUayYeTaAp0BB0ETizY1hAyaivKQfdDmxAVWwsGxAWPk99c9Fsrsze0TR9TT664l42dYZY0xJhJlliZDGPW1VoDXtRHYIXRlLs7o8zny3z/348xG9ct4pMyWD/RIaN7SG+vX+K3//Bcf7vo6fYP5FjQ3sIG5tb1jXTGvbwWzcNsKMnSs0wmUxXUBVBzTCX1T9y5ClJ0gUhW9aJ+514z9nPoSqCnriPiM/Jls4IV/Y18OTJAJlSDUURJPJVRhaL5MoGDsVm/0QWqL+BC0UhV9KpAQKboFslVzYw7PpanGFaBByCrriHgFvjwFQODXA7FMqGRaZUo1SzaA+7CXk11raF6DEsTi8WMEwbhyqYSZa4ek0zs5ky7REvw4tFdq2KolDfxXtiJo/ToTKXK/J73z/Kjp4oX3txgqjHwUe3d/LVPRP89q2D739nUy9hZwF/9bnt/O1Tw3x73ySJQoWNA/Ui97O5MhOpMi0hF1OZKg4FGnwuFktVSjUb24JUoXb2B54zV2g6VfC6VRxlA9OCigkHxtNUTTg4ncXtUEiXdA5N5SjWDI5P5yhUDObzFQwTDkym+c0bB/n0ZZ3Yls1jx+b408dOs7EtxGy2xOb2MDu6IzSHPewfT3PNYJyJVImwx4HXqTKeLHNkOkumVKMh4EYIUITCLeuamc6USearbOwIv2X/yPCUpAvMuRWHLqVqQ9uWNgedy62prG4OAjD2G7/D2r/5Y6551WN+/nWea+wP73jLv+/Pdn+a/7v7M3g0k5m5Kh4VFAGpikXYpeB1OQh7BNmKwVeen+Dj2zqYSBWZz5ao6haT6RKNficvjaWpmhYdUR+f2dXJkeks61pC/O4/H2Rta5C430lPLM7Wrnpx9L5GP/e/NM1t65s5vrRx6HzwOR2kizo+l4Og18mxmSzCFsSCTo7N5nGo8F/338ct//w3y3q+kWX0+d9c9znuv/MXSRZ03A4FwxRUdIvT83niATdtEYXhhQL3vzTJL1zdy2iixPHZHOtbg/Q1+jk6m+PYbJ6RxTxlw6Y77qdQMZnPVdk3kcaybHxOB7tWxUgUqnidKrGlNc5UocZCrn4WeDnhKc7U/ZOkS9Q7/h/gynsfY3ppem3FYXbttfXfn3jibf3d3fc8wNi9t7+tP/sOvJOFuHf1DWcsWeT4TI71bSGGFgvsH0txfDZLvmJyx4YWClWDg1Np9o6nWb909OOx37mBTb/3Q2qGRdmov5iotz6OyJQMTMCn1dfo8jVo9KkkiiZb24MMJ/PkyjYxv5NkqYZXBaEKDMNmsDnEZ3Z18ldPj+DVVHpifsZTRUzbplozCHmcBLwaN65pYnVzkP/18Al+84Z+Hjo6y5GpHFcNNNIacnNFf4w/e2wIy7S5e1sHO3qi73Thc9l9/tJ4iqBbY1WDn2eHE+zuiyOE4KXxFCdm8kxlSizkK9gWzGRKzGQrWDZUdJPumIehxSJOh6iP9AEDqBj1H1a2/7cHyZTNs0dXBLC9O8SRySxlEzwq9DX50VSbE/MVXA6FSlWnYkLUp9IZ9dMccOFzOdg/mSbucxH1O7ludSOmBZ0RD1W9PmU/lSnz6LE5dvXE8GgqLRE3Pzw8x69e3cvx2Ty6aXH5qjjNITeZUo1Hjs4xnChy45omtndHzzTvTcmRpyS9Q9OZ8vkIMAkYni/g0lQaAi6OzWRZ0xpksCnAffsm+ccXJuiKeIgG6mX1Ts4XzlbsqdQsnI76O6RLhUK1/mYfcKuYNlRqJj0NXmqpEomiid+tMlesAQqXdfs5tVgk6nawUDJAt+kOO5jLVfiDHxylYlg0B1zYMR+/c+sgT56c58t7JijpFpOZCr9y9SoQsK0rit+l4XPWj73s6Irgd2v8zVOjfGZnF0dnMuyfSLGjJ/q+9WdfYwCnqiAEhD31+fHvHpimwe/i5ck0Ma8DbNAti4BH46oGL3N5ndlsmYjXhW0XwFbwaA5CbpXxdPXscxerPwlOrwolE6ZS5bMpVTHh1EKRrqiHvpgHr0vD7xSkyga6adMV9fHs8AL9TQH8Lo2gx0FDwEWqqHN8Nsdc3MtHt7TzjRcnSJV0rhtoIB5wc2Qmy0yuwtaOCAcnsyDgi8+MMpUusbolxOpmP+myzr+5aQCXQ112X8nwlCTpgpKv6KiKwOt00NPgI1ms4dZUijWThVyFy1fFWd8eYtCwGF7Ic2o2T9jrQgiYz1cAqFpQrYHfCR5NY7GoUwUcllnfRWlDoWJg2fWjKutbQ4wkClQNi71jWWpA3FcPCBBULJWqYVDSLWomLBR19o2nmUwVuWldCwNNAYoVnXjAzUtj6fqaYbbC3rE0O7uj3LCmka64j/0TaX7z+n4iPicdMS9PvsGVWu+VdLFGS9iNEIIN7aGlEnugmybr24Icmspw9UAj39k/xUymzHxWZXixSMjjoCPipSnoIVs2yJarFCrGK4a8tXP24ZSWPl4s1FAAv1ZfE436HJR1i4V8Fa/LwKkKemNe5vI1Hjw6i9chODKVoz3q4fB0jtlchUrN4tYNzTQH3BiWTX9jkLVtQZ44uYBJlTs2tJAq6Qw0+XluOMmquI/r+uOsaQ6wWKjicoQwbZt0Uac5tPzwlLttJekCdmb9s/ueB7jy3sfOd3PeF48dX+DQVH3jT2+Dn/5GP6lijdVNfgaa/NiWRbqoE3JrrGoIsKY1iGFblHUDr/bKN8dCDTJFnbhXwa3Wp2prNnhcgqaQh5pZf5M8vZBlNlejqNs4HOBUoFg1yFZMDMvCsixKFRPThPawix2dkXoxAZ+bVY1+NrZFmM3VmM6W+dIzo2iK4MMbW7ljQwtRn4pHU5lIFrm6L352dOwQgrWtwfe1b6czZSq6hW3bJApVnji5wJbOCA8fm6cl5MGwYP9EmoWl+zndTgcuh02pUmMqXaZimHRG3QQ9KoZdr2OrLQ0tzw3Spdr+GBbULCjpoKoKs1mdhWwF27ZQsPnY1tazm6+iXq1+zZmmIBA0Bpw4hEKhqjM0n+foTI5Hjs6xoS3A8dkcioBrB+JoDhVtaef0qbkcn/u7vaTKOlOZCp/e2Ulj0M3uVTFKS/fCnphd3jqzHHlK0gXs3PXVS+W2lXVtIaLnlFBbzFfJVwzGkgX2jqWo1CwCbo3PXN7Nt/ZPsnc0SbVmYVgWwaVyN5oA3f7JG2C+YuFxCkq6jUuBweYAL43XA7on7mE6Xcaj1Q//q6pK2agfx1AUAaaFV3PS1+1jZLGI06EwlS3jcat4nAoPH55jsNnPH39yE994YYKhZJG5fJnpIxW8TpWpTAlhLxD0OAi4NO7Y3MruvgZemkijCsGqhsD71rdX9sWB+jT2s0MJdvXGaA17+NSOTmYzZTa2hnj4+DyaIrisJ8ajJ+fRLUGxZqNmSoR9TsaTJcpVk9aQk8V8jTM/rwQ8KqZhYphgLhWBN4GOsItCuUa6Wt+OG/FpxPwuZrNl/u6ZMTSHgiIUKjUTl6rQGnKxoS3MNYON3Ld/ipjfyan5AndtCpHIV/iLp0aoGSalWv2qugePzNIW8fHvbh5ge1cUp0Pls7u6+J8Pn+D/PXqKf3FtH//fE8P84u5eeoGILM8nSdLFqK/R/4rw7G8KIAT0xv2sagjgcans7o/zhw+doC3kYj5XIezTyFV01KVRkEPUy8epav3YStWCXMVGob4Oun8ih1sFtwrjyTIWgoBTZXdPhEa/E7cDapYg4FYomVComSAUfG6NmF9jJlshW6zx2PF5Ts7nqOgmE4kiQ8kin7uim8lUmaGFPL0NPm5b34JlwxW9McI+jeOzeZ4bXmT/eL3Y/fngdzkIujWiPidz2QpPnVxkNFkk6HWytSMMAvaMJKjqJjGfEwuomRbDiTILBR3bhnJNpynoYqnyHcWySVGHilUvEh9wKajAQqFK2bDRRL2UX0W3iPudCCEwbRsbQUvATWfMx7buKAGvixcn0vzp46dxqgLdtPmN6/uZy1f5zK5ublzTxBW9DezsjjLYHOSGNU18dlcXX/jBMfJVk9s2tBDyOvmdW1Yzmynz/YPT/OsbBnBrKsdmc0S8ywtPOfKUJOmCt6WzfoxlfVuIo9M59k2kWN0S5Mh0jqjHia0I+hsDrG2p3+2oqIKIy8FCof7OHnYLagYIRWDq1tLNHjaaCls7Q5yaz+JzaQwlS/hdDlShUDMtCmXY2BpgsVijM+KlZlqcnsvjcigEPU6uG2ykYlo8cmKB5qCbLR0Rjk7miPvdjCdL3Lyuma6oj0NTWda1hzFswSd3dOByKOzojuHWlr8G927riNYvuy7VDO7e3s6J2TzFqsGhmSzdMR9HpjMs5KsYpo1PA8uyz27A8jgVyrpFT8xFtlQDIOSGZKX+Q8vPXt7F0Zkcz4+m6Q65SZcMsuWl+1gNG6eq0hX10RhwkqvoFKsm1w420BDwkCnVGEnkmUpXaA65ubq/kSPTWVL5CsOLBTyayrOzCaJeJ00hN1cN9AOwujnADw/P8K19U/Q2+LhhTRNXDzTwlRcm+PdNQcaSBSaSJX50dI7P3zjwlv0jw1OSpItCrqJzei7PTLbMqdkcn9jRya/8+BReZ31Tz66eKKlSffen16lS0+u7VhRgXUuIkUSJqmEQC3lpDrkZXiigqQq6YVKqQc2qEnA6cHoVHKrAsgU2Fslije3dEfoa/RyczBDxO9nQFiJX1gkGXbgsB1f0xnh2OElTwI3f7cDGZlXcx1iiyEymQsDt4Oh0FqdDMLRQYFNHGIcKj51Y4PrVjeelP/sa/SzkK+QrOh0RD06H4KEjCVY3BUDYfGhjK6WayddfGKcp4KZq2ailKjeub2E2UyVTrDGbK5NburGmagpUbFQFhhcLRLxO1jZ50K36NLGmQKFSoyMeJFOu0RR0cWIuh8uhYFiCw9M5ZjILrGr08aH1zeSrJt8/OEPU6+SagQYePz7PeKrEb986yMGpbH2zUdxHslAlVazxjb2TZMo1tnSEKekGQwt5blrbTHvEi6YKkgWdqN+Jpi5vQlZO20qSdMGybZuFXH0H7WK+wom5HIv5Kn6PxgOHZ/j7n9+Bpips7w5TNcyzVW7ifiexgJuwW0FRoKBb5Co6pZrF8GKJ6XQZVRFoDsHh6QIORYAlaAm58TpVuuNeNnWG+bkre3E6VGazFda2hrh8VQynovDDw3OEvBpX9zdQqBq8MJbC6VBxawprW4P84OAsw8kix2ZzhDwa1w000hBwE/TUr8V6+vQiz55epGsFtVbfzT4tLm2eaQy40U2bP31siOOzOSJejdFEkbawhydPLLKzK8q6tiCZSoWY10F71M/jJxbpb/Izn69S0k0i7nrMNAfdaA5B1OtiaKHIoycWODZfxuVQifmdeD0OqiYkClU8msLIYoHy0rql26EgsAl7NDpCHmqmzYujKVpDbgpVk0xZJ+Z3sb0rSsjt5Beu7OFfXt/PWLLI3rE0f/3UMHdsbOG3bhygPeIl5nOzrSvKcyNJyrqJblpcM9hAR8THhzct7zJsOfKUpIvEpVh5qKJbPD+S5K7Nbbw8kSXmd5Ep1bBsm/WtQf7phUl64j7WtYS4/+Vp0qUq/3jzz3JyoURAE5R1G5cKqXwFp6rg8ynMZ3WSRZ2qaSCs+kF/y7BpD7uYy1aWdo0KAh6Lf35pkoDbwXiiyH/93hFSpRq2DSGPg5fH0hyezvP/PrV5qZCAzh8+dJJf2N3Dv799kOGFEjcMNmILwcb2MEPzBaJ+J1GfkxdHx7Bs6+zl3e+ndEnniZMLfGxrOwAxn5Or+mLkqwbPDyVZ3eLn6VMJ5nJl7n3wOK1RN2ubo+wZTRH1OdjUHmRDa4iHD89h2SqZks5fXfsZNnaGqQwn2d4TZe9oCqhP8x6dLWADDT6FRr8LFIXpdInhZBWvBrmKQVfcS39jkEJV5xv7pmgNu7htQxu7eqMcnMzw+IlF3A6VWMDFSKJIZ8TD0EIel0OlNeQm4NZYyFd44PAsbk3h167pY+9YipjPyVyuzP7xNFcPNhDzO1lu3SA58pSki8Sz91zP2L23M3bv7WcrHl2MDkxmSBfr62gep8pdm9sA+Pi2dmYzFX50dJ6Dkxkqpo1pWxQqOv/w3BguFdwOla/c+rM4VeiK+fF7HHTFfWQqBrmKSa5s0N/opTHgwNChp8GHR1vaXCRsshWdsm4S92uki5WlAgFVbNvCqQg+urmFuza1cnV/nI9t76A77mU6XebodJb/+eApFCF45NgC39o3w317J/n8fQd46MgslmXzd8+OMJ+t/7tt74zQFHCv6ND+uyXqc3JlX5x/fmmKZKHKl/eMUzUtnh9OsaYlyAvDaeZzVTqiXvqbA4wtlulrCuB3q/Up2fki9z50gsagC4FFV9zLd+78ZRyqIFcxODqdJVGs4nequNSfhFB7yEdTyIMCTKSr3LG+gbjPRcynsbUtxNf3TXB0NsftG5vpjPoYXsjzjb0TPD+U4NR8/exnR8TD9w7M8L8fOUWyUENVBG6nikNVyJQMilWTu7d04HM5GGgKkK/qtAQ8TGfLNAfdzOcqPLHMs7Vy5ClJ0gUl4HagOX7yc3++ouPRVE4vFLisN0o84EIVNosFnXzFZFVjfTfuaKKI3+kgX9HpivmI+DXSFR0bgQAcKuiGzfH5En6nwAKSBR3LhFWNXqbSZXob/KRLNRQh0FSFsMuipFt0x31oisrh6QK/sLub+/ZOUTOhJ+Zj33ia7riXDe0hOqJejs/m0VTBlX1xLuuNUjMshIBSzWQ8WaIr7iNXMTg2k68XLF/f/L73cVPQzZ2bWxHAlatiHJnKEfJq5KsGv37dKl6eyLCxLcT3D83SFnHzxMlF+mJejszlaQ1pNDgVKrpFb2OAim6ykKvynf0z6BZ8pC/G5N5yvSC7AhGXg6phkShWcWoOgl4NrVDlxHyJXE3n8p4Yo8kSLX4XPqeDk7N5irpJc9DNsdkcu3pjXNYb45Fjc3REPFR0k5vXNXFZb4xSzUBTFX731tVAvfxfxayvdT83nGQ8VeAXruzlDz6yAYBrB5e/vizDU5KkC8qqBv8rPn92KMm61iBz2Qob2kLM56usbw2yfzzNv76xn2+/PE1DwE1PzIeFgqZAolDjyGyG5qAHhyLwaH7G02XaQi40VWU+W0ZRTVyagg1nd4BWDIvfuXk1zWE3P/93L+JQBbGAxmcv6+YvnhyhI+Lh6y9OUjVNdMNkoVAlU6iRLdW4fk0Tw4tFfvHqbgIuDa9T5ZHj8zSHPEymSqxq9LGpM8wLIykaAi5cmoLXdf52257ZOHNlX/3YR7JU4/hcnoOTOZqCbkwbVrcEiHrrN8EsFGsIoWDaNt0NQfIVg5JuMJ4ss6E9RNXKUq2ZPDOUoK/Rz2SqiEMo9DYF0BTByGKRuEdDUxQ2twaxAKeq0OB3858/3Mef/XiIk/N5wj4nIWzWtoT5rZsHKesGz4+k8Lk0Ij4XxZrBpo4wx6azfGv/FNcONGADf//cGDt6Inx8WwcAWzrDrG7xoypvr3SwDE9JWqFzC8FDfX1Rev9Zlo2iCG5d30yiUEVTFeZzFYRd370Z9bt4aSxNsWJQrhlMpUqsbQvRGvZyYDLDQEOQqlkvx6cLwcbWAJvaoxSqNfboJk6nzeomL01BN8dn82zrjhDzOTk4k6NQMwm6NSzbZqAxiOZQCXs02qNedvZEOT2XZzRZYm1LkHJQZ+9YFsOao78xwKGJDPe/PM3tG1tZ1xrkL58Y5ub1zWztjGKYNtct7a6dyZTZ2BY+r30McGw2x8nZHKmSTl+jj6DbQVk3GVks8PW9k/zM5Z3E/U6u6m9gdLFAPODmuaFFTAuqpsmG9jADDT6GFwrcurmR0USZqM9JrlrDp2kUKzqmBVcNxNkzkmRnV5S5XAXTtGiLeCjrJl97YQKPU6Er5qWnwU9VN7ltQ3N9OrZc4+ev6OFPflyfFv/0zk5URfDsSAKnqvDiaIq2qIcrVkVZLFR54sQCn9jRSWu4Pkr98vPj/OLuHopVA59r+ZEow1OSVkgWgv9g+OoL43xkSxsBt0aurONxKrgcCqcX8ggBl6+KM9AUYE1LgG/tn2JoocDwQp5iTSdbqeF1qkxmyhimRVfEw6HpPM0hL5Zt0x72EA+4Ob2QR7csehs8aCr4XCovj6fpa/Dxu7et4St7xsmUdQ5MpGgKudjUEWY2U+Fnr+xhIlniueEEVw828uvXDvAXTw7RGfVyeCZHf3OAsFfDsusVbda3hmgKuQF4+vQia1uC3LyumeeGElyxVPXnfFnfFuSFkQTTqRKX9UaZTJX5pd29PHFiAac6xfBiEd20uf/lafriPjxOg43tIW5c3YxLU3h5MsO3D8xQqersGUnR3xQgW67RFvLicihYts3HtnYwmSrSuKmVlyfSfHRLByfmcsznqlQMC8O0uKIvzp8/NsSapgDJqsG+sTTbuiIcnMiymKsx0BTg758dZUdvlAOTGT65o5OaYfGV58e4e2s7TodKrqITcDk4OFm/LNutqXxqezvDCwV+fGKeW9Y10xXzLatf5IYhSZIuSJ/e2UlgqUhqb4OfbV1RJtJl4gEX1ww2cmgqw3/49iH+6EenuHVdM20RD8lCjcHGEC0hL0IVYFnohsWOrghep0LNMNnWFaFiWsQDLja2hRC2zXS6SrZoMJYo1o+wKII1LcH6FKLbgUNRuWNDK6fm8szmKjxwaJaybtIW8fC3T48ynirxu7etIezT8GkKN6xuYnd/A3/99AibO8JUTJNvvTRJuWayqsGP310f14SXWe3mvTSVLtMb99MY8rC2JcjPXdmNIuobt3b0xrh5XRM3rmnmntsGCXg0GgMuGgJuHjpWP3e5ZzSFpsCWjjCWLbhpbTOn54tMZ8ocnyugW3D/y9McmcnTFvHxkS3t7BlNcHwmR1U3iXudHJ7O1i+2Xt3ImrYgV/U1MJstMbxYoD3q4cnTCxQqBrdvbCWRr3HdYCNBt0bc7+I3ru9naKHIc8MJPJpKsWrwnQPTpEs6J+fy/MPz4/z4xDxX9sUxrOXfmCdHnpJ0EboUjq04XnWY3bJsqrrJXZvqu2+3dUUYSxbrU4oDjfjdGn/66GkePzlPbzzAhze1cN/eCY5MZ2mJ+ljdHEJVVB45ukDNtCnU6reC5KsWv7i7h5+7soc/eOAY5ZrJ9w7Okikb3L6hhUNTGSqGyViyRE/cx9OnFwl5HFy+qpvf//5RhICBZj+zmTIn5wpUTYvHTy6wvi3Eb93Uj9+lMZ+rEHRrOB0KrecsA7zfheFfz6oGP6sa/GzoCDORKtIV8yFQ0E2LctUgU9RZ3xbi8ZML9MR9lHWLXLnKaLLI06cX+djWNk7PK6TLOjGfi+6Yn/6mAIl8mfaIi89d3s2390/y69f08vxoCr+rfkNLzOekOeTBMMHr0bi8N8r+iSwjiRIK0N8YwONUMSybX7umjzUt9b7a1BEisFRcv2ZYOB0K/U1+TMvmfz50gpBH43duGcTjdBDxavQ1vr11TxmeknQRuhQLxiuKYHVLsF6sHRBCEPY6Ob1Q5JoBm0ypxt3b21EFpAtV9o6lSBRr7FwVY0dPjAOTGTRVYFkWXk2lLezhmdMJbGxqpsV0pszPXN7Nw0fnqOgmc9kyHVEvDX4XbWEvRd3giRML6KYJtuDY0rEKt+ZgKlW/OPoXdvdwfCbH116cYCZTplirb6gZaPJT1s1XvInbto0Q7/Qe7HdPW9jDfK6CadlMZEts64oQcDmYzZX5+PYOQh6Nh4/OsZgvEvG76TUh6FR4cSzFjq4Icb8Lh6rw8kSGm9c18+2XJumMeplMlfi1a/p4fjTF2GKR8VT9hxCPpjCdLnPruhY8LpVS1aA56OKWdc2cmMtzfDbPbLZC2FsvgwiQLes8dHSez+7qwrIs/u7ZUX5hdw+2DV/ZU5/mbw158Djr0SeEOFvveKVkeErSRe5SGIWe0RN/5XqVYdrkSlV+91uH6G3wsbUryjf2jlOuWexaFaOvyc/OrhiPnZinPeLlqv44f/XkCD1xH9etbmJtS4C/eHwEv1Plb54a5obVTaxvC1GumfQ2+NjZHeHQdIaoX+NDq1poC3sYSxZZ1RAg5tOINPoZXSwyk62wuy++FIjQHHQRdGt0nFNB6Mx5VYCTc3mm0iVuWNP0vvXdcjT4XYwmivTEfKSKVcqGSXPIwwOHZ2kLu+lr9PPpnZ08cWoBn6Zy27pm9k2k+NjWDp4bWuTb+2f40MYmdve3UqwZPHlykU/u7GIiWeSZ04vctbmVj21pZ75QJVmoUqoZnF7I09PgYzFXpWpYeJwqmVKNdKnKrt4o6ZJBoWrg1lRCHo2f3tnJvrEUqhC0RTxndw3/zOXdOB1vvlJZ0U32jaXZ3f/W68wyPCXpIncpjkJnMmV00+LmtU2sbw2wfyLNeKrMzp4oa1uD1HSL6UyJA5MZLlsVY21rkC/84Ch3bmohVazya9f20h3z0R3zsWc4Xd8kliiSqehEvU6uW9NIa8jD3vEMn7msC00RpIo1ijWTm9Y2o6kK9z54gv/ziU1saA/x2Il5TMvmxFye+Vy9lN/+yfTZEdOrDTT56Wv0v+73zpd8RWc+V+aFpanVYs3iN2/o58RcnphP4zN/+yJ/8qnN7BtLsbopyMe2tJMp67idDvaMpPilq1aRKelEfU4OTKXZ3hWlppu0hj1EfRpHprNMpSsMNoe4s6+V5FKAtoQ9Z9e2Tcvmzx8bYiZb4pZ1zXidDgTKK25CURRBS9iDz6mypSty9utvFJwvjadxKIKOqJdHj8+/5s7XNyLDU5Kki44Q8PCROW7b2MyDh+e4oi/OnZvr5eb8LgdHElm+/fI0u3qj9eMnkxnWtATxezRWt4bOvhlbls2vXttLpmSwZyTBR7a0U9HrBckVBIuFCq2hJmZzFRbzVe7Y+JO6qP/jYxvOTrtev7o+glzfFmJda/Atp2PfyXTie+WxEwsoCPoaA/Q2+OmMevn2y1ME3Rob2kLc96uX0xh0ozkUZrMVhBDEfE5uXNvEf/nuEeZyFe750FqgfpH4Dw7NkC7rPHKsPs36H+9Y94q/L+Z3EfO7XtOOy/tibGjr5ccnFjg+VP83efWapW3bPHU6wZ2vqlNr2zZVw3rFbTX1fw9wOVQ+sb3jbPWqtyLs5Rbyk6SL04r/B+i+54F376jKtdfWf3/iiXfn+d7CuWdU38EU7jt5W3/f3nAWchUag+43/P5Yooht23REvRyezjKZLHHbxhZ008LtUFEUwcm5HIens2iqgmHa7O6P0xR0U6oZzGTKOFWVzthPpl4ty8YGFAHPjyTZ1RM7uwb7ZvZPpAl7NHrPKQBhWjbfemmST+7ofKcx+q71uW5anJ4vsLY1yEymzL6xNLdvbHlNeJmWzWMn5mgJeTkyncXvcuB1qWd/iKgZJslijalUmc6oh1RJZ6ApgICz/fXdA9NcO9hIaGnzz6tVDRPbhqGFAuvbQstq/2SqxOHpLB/a0PJWD33LPpdHVSTpEnKp1L8FXjc48xUda+k4QnfcR7Fm8uxwki2dEe7c0oamKjxxcpHZXIWKbvL8cJJMSeeq/gZGFgtn31F1wyZXMV4RnACHprO8MJIEwK2pLHe/T3fMR9Or2qsqghs/YGuemqqc3QHcGvZw5+bW1wRnRTfZO5rkiRMJVjcH6GnwsaUzwlS6/t9bqWbwtRcmaAl52NETxaWpeDSVF0aSHJrOnn2eq/obCC4d2ZlIltiz1K9nuBwqihBkzty2vQwdUe9ygnNZ5LStJEkXrZph8dJ4mstXxQB4dijBpvYwX3x2lLu3tr/uiOXcN9efu7IH27axbWiLuPEu7dIMeTW2dkZe82fDHo10sUrNtF73+28k6nv985yvN235Qbd3LMlctsp//vAavvz8OL+wuweALR0RXhqvFzb4uSt7zj4+6NY4OpPj8t4oivKT8dy5fdIYdOF3OyjVDP7PI6f42cu76Yh6cTqUZW3ueT1Vw3xHhfflyFOSpItSRTc5OJnGd0592FvXt9AS9vDLu3vpiHoZSxTf8nmEECiKYENbBLf2k7fMr784Qb7yylFPe6S+ueUPHzzxus81lS4xlS69zVd0YdjeFWNDewi35uAzuzrPfr2/yc+6V51bPT6b49nhBH6X403XgbMlna++MI6CYFN7iPbIa0tiFqoGi/nqstt5//5pMqXlrW++HjnylCTpoiQEaA6Vje3h13yvKeSubyqZzdEe8byi4MIPD8+yvSvymmnfDe2vHKXeubn17Ej0DIeqsKkj/Jri9ee62LeZeJwqq5vrIXnuyM79OrtY+xv99MR9r/u9c6mqYFdvDM2h0BzysH8ig1NVXvFvkixUSRVrNASWN1r/1M7Ot37Qm5AbhqRL3bL+B3iXNtq81vu8Yehc7+A1XRAbht6uXEXH73Qsa6PP++QDs2EI4PBUlqjfeV4vRKjo9WvF3ip034G37HM58pSkZbgYi8GfG5ZX3vvYJVNI4a0E3a+/u9O2bYYWCvQ3Bd7nFn2wxPzOt7x95L3uq/cwNJdNhqckSW8YpCDD9AzTshlLluhr9H+gyua931qXMeI0LZvxZOmi/kFDhqckSa/w6qCUo9I6h6pw09oP1tGRDyqHqnDjRd5XMjwl6Q28ek3wUnUplveTpLciw1OS3sDFuM75Tl3KP0RI0rnkbltJkiRJWiFZJEGSJEmSVkiGpyRJkiStkAxPSZIkSVohGZ6SJEmStEJyt610SRNCPAS8vWsZ3lwcSLwHz/tB4LZte/35boQknU9yt60kvQeEEPts295+vtvxXriYX5skLZectpUkSZKkFZLhKUmSJEkrJMNTkt4bf32+G/AeuphfmyQti1zzlCRJkqQVkiNPSZIkSVohGZ6SJEmStEIyPCXpXSSEuFUIcVIIMSSEuOd8t+fdJoQYE0IcFkIcEELsO9/tkaTzRa55StK7RAihAqeAm4ApYC/wadu2j53Xhr2LhBBjwHbbti/WAhCStCxy5ClJ756dwJBt2yO2bdeArwN3nec2SZL0HpDhKUnvnjZg8pzPp5a+djGxgR8JIV4SQvzK2/zz8tfKfr1T73qbjs5k7Zcn0naqWLN//wdH7ZlMyf7811+2f/5Le+y9oynbtGy7Zlj23zw1bH9lz5g9NJ+394wk7X1jKbumm/ZXnh+zf+vrL9v/8NyYXTVMG7D/4/2H7R8enjn7d3z9xQk7W9LPfj6VLr2iDfO5iv3QkVk7W9Ltcs20Tcu2s2X9FY/JlGr20ZmsbVq2XdFN27Lsd63PZXhKkrQSu23b3grcBvxLIcTV57tB0vsnWajy3HCC3riflpCbHx+f5/LeGH/91Ag3rmmkMejmn/dP8I/PjzGbLTOdLXN0OkumXKMn7uXZ4QRjySK3bWihK+7jilUxXA4VgI9tbWNXb+zs33X9mkaGEwUAbNvmpfE0L4wkqekmAA8enmVHd5ShxTx7RhKMJgqEPBoV3eTkXB6AYq3+WFURfPn5cR49Pv+u9YUMT0l690wDHed83r70tYuGbdvTS78vAPdTn6q+cHz+8/Vf0tvicznojHrxOFWaQx529kR5YSSJz+UgUaySKel4XRprW4NMJEv8q+v6uXNzO3/55Aj5ssFP7+xiMV8l6NH4xI4OPJrKXzwxxMHJNEems3x7/zSpYg3LsvE6HTT4XQAIIbhiVZzvHJjiS8+OAvCJHR3E/C62dUXpiHo5NJnhyZMLGJZNrqKTLevMZSusaw0BcPe2Nnb1Rt+1vpC3qkjSu2cv0C+E6KEemp8Cfvr8NundI4TwAYpt2/mlj28GvnCem7UyBw6c7xZc0NyaSnvES7pYYzJVxO1UyVYMvnDLauZzFT60vpV81eDIdJZi1eSqgQYu97vY1B7i+Fyew9NZ/vChE/zeh9dxaDqLS1WYy5UJeTQGmwI0BN18bc84t65vpq8pgN/1k4iKejVCHif9TX7MpXA94+Gj8zQHXRiWjd/lYEd3lFLNIOB2YNs2z48k2dUTQ1HE2T/zxMkF+hr9tEe8b6svZHhK0rvEtm1DCPEbwMOACnzJtu2j57lZ76Ym4H4hBNTfO75m2/ZD57dJ0vulapgcm8mxpTPCU6cXGU8WuX51I5+/cYDvvDyF36XyzZem6Wv0c89ta8iUarw8kWYyVeTYTJ61bUFu39DCdasbOTCZob/Rz0CTH01ROLmQZ9eq+s2Ad25uIx5wAnD/y1MMNgZYLFTRVIWoV+PQVAa/S6M17CHk1XhuKEHIo3H3to5XtNfrdDDQFMC2bdyaihCvfD1bOiJ4Xerb7g8ZnpL0LrJt+4fAD893O94Ltm2PAJvOdzuk98dMpkxLyI04J3WKVZOvvTDBT1/WyfcOztAR9TGbLZMu6owk8rSFPfzGdf04FMHfPj3KqgYfjx6bp1DRKdYMYj4XWzsjbO4Is5Cr8tzwIgPNAU7PFWATmJaNbVskCzW8UQeX98YxTIt7HzzOdWsaOTiV5ae2tfPCaJLmkJtN7WEypRouVbzh6xBCsLUzAsBivsrIYoHLemOEvNo76h8ZnpIkSdJrvDyRIby6gaGFApqqsKYlyO7+OKWaAcCdm1qpGibJQo0Tczlenkjx8W2dRHxODk5maAy4yJZreDSVgNvBp3d08p2D0/ic9anf2WyZim7x6NEFchUdgOeGE3zx6RE2d4T5/E2DNIfcAOzojfLiaIr/efcmAh6Na1c3cWQ6w98+PcqvX7sKj6byhw8dJ+By8EtXrcJaGm3OZMq8OJriI1vqm979LgetYc9rXutEskR7xPOKad23IsNTkqRL0pX3PsZ0pgxAW9jDs/dc/4qvvdqZx1wqbt/YAkBP3IdyzujzzFqjYVr85RMjHJlOs6k9xGCTn/sPzNAW9jCaLHJlf5wj01mEKuiI+Yj4ncxlKjx+cp6BpiCHJrOMJfI0BtyUdZOZTJmhhTy/sLubXMXg4GSa/RMZPrG9gy0dEeJ+F998aYqtXRHCHgffOTBDW8SNpgpawh5+ZlcX87kqx2azpIs1XA6VK/rifGhDy9m2e5wqHdHXrnEem83SGHThVpY/jSvDU5KkS9J0pszYvbcD9SDtvucB2sKes197te57Hng/m/eBEXBrLOQrnF4o4HOq9DcFAEgUavzyVT0cn41Sqpl8+flxblnXRGfUQ3PYxdf2THBZT4RGv5OQW0Ohvlu3LeTln14cZ3t3lLDXRSzg4rduWc3LkxnGFutHU547neCGtU3MZcss5qts6ghzdCbH2pYApmkxtFBga2eEYtVAU+uHRlrCXhqDHr70zCif29XF0dks5ZqJEPW1049uaX/D13jr+pY3/N4bkeEpSdIl71IaUb4d+8fTjCwWSBZq/O5ta3Aogi8/P0q6qPN7d67j0WNzCGw2tof5/uE5rlwVI+jW2DeWZjxVojlU5v6Xp1jMVyhVDda1huiMelnMVjg4leGb+6Yo6wan5gsE3E5uXNvMD4/M0t/kpzvuYyZTpifuoyvmYz5X5fmRJB/f1sFYoogiBAcmMww0+fE6HdywppGpTBnLrq9xdsa8XLm0GemMLz4zymd3dZ49Y3quim7i1t56BCrPeUqSJElv6trBRj61s4sb1zbjUASmbdPT4Oe3bxmkopscns6iKgr37Zvi0FSWP/nxKQaa/VzWE+MXd/eQLtYwrZ/sev0X1/UzulgkWaxRMyy+d3CS2WyZweYATk1BCPiFK3ooVU3+83cO8Y/PjaGbNp0xHzt6oty1uQ3btmmPejgyncWhCAT1qWW/20HNMMlXdJ4fSaCbFo1B9ytez41rGsmW9dd9rU+eWlxWn8iRpyRJkvSm3JqKW1O5fFWMv392lNvWNzOTLlOoGjwzlODgZIaB5gA7eqK0h708fmIOB4KHjs3hcqg0+J3ctaWNHxycYb5Q5V9+9SU+sqWN4cUi/U1+9gwlmUiV0A2bG9Z4uGV9M1Xd5MhMlmsH4yAEIY+TuUyZ7x+eYU1zkLaIl46Ih1UNFg5FwemojwXTxRpT6TKbO8OMJYqYpk2pqr9id61h2VR163Vf6y3rmpfVJ3LkKUmSJL2pxXyVw1NZACJeJ//88jQNfhd/+eQwlmUy2Bzk5rXNXN3XwPcOTHN6ociB6SyX98bwaDaHp/O8PJHGralcNxBnsMnP116Y4LduHqCq29yyvgm/SyXocbC6OcCfPHqa//nQScYSJR46Os/e0TQ1w+K3//kQPzgwQ9TvpCPiYTZb4et7Jvni08NYVr0kbcznJFPSafC7mM1UePDoLIenszx9epFEoQrAqgY/QsCjx95+uT4ZnpL0ASCEeFwIcdPSx38ghPjT890mSTrDpSkE3A7+5qkRNnYEKVVNGoMuTszm+bPHh/mp7e2Yls1/+e4RHjwyR9SrsZAr89zQAsfnSnTFvYRcDqI+jf0TGYJuJ5tbg4wuFilUdB46ukDQo5EoVJnJlDkxl6dU1bl7WxvzuSrrW4Ms5Kvcc+tqOqJe3IrC3z49ytHZLCg2iWKN//voKQpVg6DHySd2dCCE4KZ1TWzvirK7P05/Y4Cg+yejz5aQh8t6oyQLVeaylbNfH17atPRW5LStJH0w/B7wBSFEI7AFuPM8t0d6lbaw5+yO20vp2MrQQr3Iel9jgIFmP2GPk49tbcOpCv7rXetoj3jwuzRm3WW2doQJeTSiPifPDCUJulV64166Y36eH06QKNRY1xbgh4dnyFQMfnx6kZ/e2cl0tkJr0MOJ2TwPHJ6lLeJhXUuQ+/ZNcvO6ZmIBF4enc+zqjbGlK8J/+t4RGvxOLuuNgg1bOsL86Ng8Nd3ky8+N8ctX96KpCl6nA2+0HnNnzoyeoSoCr9NBqljipfE0fpeDnT1RFnMVVjX437JfZHhK0geAbdtPiXopl98CrrVt2xRCfAS4HQgCX7Rt+0fns42XunPD8lI6thL2Os9+fM1AIwcnM/Q3+dk/lubwdJY9oylawy6a/C4m0mX2jqb43dsG+c93rOH3vneU+WyKXMlgXWuAZ4cSLOR1Au566TzdNGkKuLl5bSP7xtJc1R+nKegm5nNxeDqDZdmEPRp/9tgQN69t4s8eO8327gimabOhPURP3Md8roLH6eDawUaifhdrW4OMJooMLB2peSOTqRIvT2a4c1MrxarBo8fn2dYVOVsm8K3I8JSkDwAhxAagBUjatp0HsG37O8B3hBAR4I8AGZ7S+y6+dLPJGcWqwe9+6xC2bXN4Jstt65sJuJ186ZkR1jUHcDoU/v7ZcWazZQIejb6OEKfn85QNA8O0KFZqhLxOvE6FlyfzPHxsjtVNAabSJVRFkK/o/DixwJ2bW5lKl/nG3kmu7IuhqQonZrOsivv4pat6WSxUOTWfZyxZZFdvjNUtQY5MZ5nNlrlmoIE/fPA4d25uZU1L6BXtf/zkAgNNATqi3rPVhta2hljb+srHvRW55ilJ55kQogX4KnAXUBBC3Pqqh/wn4M/f94ZJEnBoKsOByQzTmTKPn5jn0FSGkMfBLeubiHqcPHM6QUfYQ2fUi43NreuaiPg01rQECLkd7B3PAAo9MS+LBZ3xRAndtCkZNiG3g9GFPF95YZxKrX4Pp2nB1q4wX3txghvWNHFyPo+qKGTLBn2NAe57aYrf+dZB9o+nSRd1rulvZCZT5oeHZ/nzx4colA2++Mwo69vDjC4Wmc3WK0bppkWxarClI4xTFdi2jaoIKrrJ8dncivtFjjwl6TwSQniBbwP/1rbt40KI3wf+EHhoaRr3XuBB27b3n892Speu+s0kMJerMJoo8tCRWRoCGl99Po9DEezsjbN3LEnE56RQ0gm4Vaq6zXSmSLqk85mdXXxj3wRHZ3L0N/qp6EY9uAQcm8tjmxa6DRv6gug2BN1OFnJVwl4nXqeDn728C7em8uXnRplI1UeZfpeDuVyFTKnGXK7EkycX+c0bBvh3Nw/wpWfHuHtrKzXDJuZzMpookCsbjCeL7B1L8evX9vHMUIJ8xeDOTa1oqkKxaqy4X2R4StJ5ZNt2Cbj8nM+fOufzfwXcCISEEH22bf/leWiidAmybZt0SSfqc+LWVCq6SXvEQ1+Dn/awh5lcBdu2aQy4qZkWJ+cLWJbF8EKBomnQE/VzfM6gWDX42ovjbO+KEvA42DOcxLAh4leYTJXY1R2hIejhG/umODqX5/99cgu/++1DGKbNqgY/f/TwSWzb5q7NLSSLVRyKQqKg83NX9FDUTVRF8OixeT5/4wAV3eTBIwn+4CPreez4PIuFKo8eX+Cuza2cnMuRLul89rIunKrgusFGnA6FbFmnZlhs7/7JJdmlqoHX9dbRKMNTkj6gbNv+E+BPznc7pEtPsWby2Il5BIIPb2rlH54b4/YNLThUhf/+8U0cnsryd8+MMJoscXQ6S8yvoSoqjUEntgmrmwKAxf6JNOmCzv7JNLZl0RR00xBys6snzv37p0gUqqTKButafIDCN16c5IreKOPJEvO5MkLYeF0Owl4nH9nSzt1b29k7muILPzjG9aubWNsW5O5tHTx4eBZFCE7P59k7muLFsRRXDzSwsT1Cc9DFhvbw2dd2ZDpL1bDY1hVhLlvBofxk9XIyVeQfnhvjP92x7i37SK55SpJ0Sdk/kTlbBF56fR5NJVs22Nge5Bt7J/jQhhbGkiWu6IuzfzxNW8jNv71lkNvWNbGmJUCyaJAt6ZR0WN8W5r6XplCEwOXQqJrg1hS2dkZJlmq8OJLih4dncDkVbBvylRo/tb2DwZYgHpfCVKbMQr6Kqii0hz30xn3804sThD0OPvO3L/DSRIrpTBmXpnDNQCMuVeH4bI7dfTF+akcHw4sFrh1s5HsHZ6gaBj88MssfP3KSYlnnj390kv3jKWK++g7i3gY/nbH6LStHprO8MJLk8lWxZfWRHHlKknRJqRnmG96cslKvd63ZxUBVBJ+5rBO3prKqIcBsroIQkCvrHJrMsJAr8/DReSI+J6cXity1qRUhBEdn0wRdKls6wgwnixiWSYNPJeh2cnAqTaZicPOaJp4dWqBmQMSnUa4JnhlKMJOtsrM7yrrmAIZhUzUsjs/l+Lc3D3J0JkeuYtTv4wx56Gv0M54o8dxQglSxysm5HM8NL5Iu6aiKwhV9cT65o5MXRpJkKzqX9cT4yosTOBTB8dk8V/TF69O8h2fZ2B5mVaOfxoCLjkjLsi/JluEpSZK0QmcKJpx7hdnFcPbzyHQWv8tBd9yHW1PJVXTyFYO434nbofClZ0Y5NJWhIePEoSjctq6ZY9MZhhZz1Aybk3M5XhjNEPdqZKsG1aqJLSBXLdAS1FgswKm5HEXdRgWEEBi6yfHZPKpQODqdw+NSmEiXSRUq9MT9ZEoGG9pCPHRknrFEkfFkkUxJ50g1y0iiyNbOMDt6YnhdGqmCzmy+wkSyxFdemOCnd7bTHvFycCpD0OWguz3EXLbCN/ZO0hv30xRy49IUfnx8nrawh4aAixdGklzW+9ajTxmekiRJK3SxjDBfrTHoesU1XalilR8enmV3XwMBl4OWkBshQuwfz9Ad9/LSeIrxVAWEQr6ikywYuF0qE5kqGuDUoGaAUGw0h0azHxYLNYQNNRMS+SpVA1TFoD3i5cRsmnwNeqMu1rcG2NAeYc/IIhXdpFjV+Xe39PHdA3M0Bd0IAW6HwONU2d4dYSZdpjXiwet20BHzcPfWVjqiPk7M5ZjNVtjaGeGBwzPctr6VnT1RnA6ViFfjxbEU44kSU+kSO3tinF7Iy/CUJEmSlq8x8MoSdhGvi3UtYVpDHvaNpxheLOB1qvz8FZ08emKR8WQRj0PgUKA56MbtULBsG9usUKzZVA3oiXlYLOpMZ0o0Bd0kkjVaQi5MW+BxwEyuSnPIVZ8aRtAdc9PfEuDHxxY4MpOnO+5nTUuAoMdFb0OA7d1VWsMesiWDg1MZHj02x6omP0emc/zbmwYZWiiwdzTFzp4Y7REvbREP6aLOP++fojnkYUtHmL95eoRVDX6mMmUmU0W2dETY0B5isDnI3rHUsvpKhqckSdIlrqKbaKrCEycX2NoZ4dR8nkShSm+Dnyv6Yows5nlpPM0nd3Ry394J/mnvFFPpMk1BJw6HiiYUNFUQD2icni+xtjXE4ekMugnT2TIBlwa2YDhRRgWqhknVBM3hoGbaGBb0xr3UDItdvTF8TicRb5qtXWFSRYOybvPZXV28PJlhJlvm0HSW7qiPsm7S1xTg169dRb5iMtgc4MBkBk1V+OGhWZrDbnb1xmgJeRho8nHf3kn+b0nnd25dTdWwUAQcm8nTEfWQrxo8N5zgZy7vXlafyfCUJEm6xL0wmqIl5GZda4iA20Fvgw/dsGgNeXjsxALf3DeJZdnsH0+RKFQZbA5wYjbLWLKIqgjS5Rrz82XWtdVL3J1eKNAW8bGYrxBwa1iWRU2H1c0+FnNVQh4ns7kq06kKAphMVXBr0OB38+MTi3xiezsb2sOcni/gcTrocnl55NgcTlXh8FSOX792FZlSjY3tEW5Z10iuajCRKnL/y1NUDYt942l298dwKoJEvkq5ZpIs6OzojrKuNcQ/7Z0k4nWwoS2MqsCLo0nWtYVZ3fzm9XDPJY+qSJIkXeKuGWhgoClAc8hNxbDIlnVCXif5is7xmRz3fmwDXk3wjX2TJItVvn9wlg9vamNV3EfA6cA0TaJ+N5PJEqZloQibmUyJq/riFCoG6VKNigXTqTJeh0JJtyjrJppDYNng1qAz6iFRrIJt8qOjM8ykyzQE3JRqBj8+NsfR6Sz7JzJs6gizoS3Mqfki5ZrOl54d5fe+e5SQx4lTVeiOevn0jg5WNwcZXizy1OlFRhYLHJ/NsbU7QrJY4+4tbdywupmumI/ZbIUXx9KMLhb47oFpyjVzWX0mw1OSJEk6K1fWyVUMNrSHCPucfGpnJy6Hymy2TDpfJerRENgcn8ngVAQWNrP5GlXdIOx1YZg2NoKqbrN3LEWpZlIzwatYOFSbxWKNVLGCbkFRt7EAw4BEvoZp2pSrBsMLJRYKVX73ttV0Rny4HCpDC3kW8xU8DkFzyE3VMPjbZ0YZmi/w2V1dKALu3NRKR9TL1YONXNXfQKpYo6/Bz5GZHP/mxgG2dER5dijBQ0dmOTyd4W+fHmFNa5DLe6IMNAfY2R3jmdOLy+onOW0rSZIkndUa9py9bcQwLU7MZnGoCkJRqZg1/G4HUb+L4UQZBZuGgItCxSBXNihUCghFEF06K5mr6NRMcCqgI8iVbQCUpcGdU8D2ngiHpnMkSiY+DTSnk/VNbmYyFf7bd48wn68S9TtJFeqj1ZoJ/+U7R2gLu7nh5kEcDoUXRhI0Bd28PJGhJewhHnBxcDLLhze3MrRQJF+u8diJeT66tZ1PX9bBfXunuHNzGxvbw5yYy+HSVEJujfv2ThDxOV+3X15NjjwlSZKk1zBMi8NTGR47ucB0pswffGQd27qiVGoWl6+K0h314HCoKEJQrFkYFiCgPeJhIV+jVDUo6mABIY+GWHperwMUASEn2MBL42kUYaEp4HGqVKo6U+kSApuJVIlcSWdkoYCqKmeP0cznKjx+KsH/efQkbREPNcPmhdEUd2xs5smT8zxxYgHNAZoqaI94qJo2z4+k2D+R5jsvz7KuNYiqCNyaikMIvC4HiiKYz1XJlPRl9Y8ceUqSJEmvka8Y1Eybn72iB2HD/Qem+eiWNh4/ucDTJ5MYtkVz0MVvXt/P/++Hx5jJlDEtm2zZJFOpDy0dgC3AoQpu6mvk+4fmKS1dYJKtgUuBy1fF+MxlXfzxo6eYShYp1erVhbpibizLJlsxCXkc2BbotsnmjiB+l0p7xMOPjs3zRw+fwOlQyZd1vndwDiEUOiJejszmSOVrtEe8XDPQyI7uCP/80hT9DT4uXxVHiPp1ZCfm8pR0k5l0Ca/Twa9cvWpZ/SPDU5IkSXqNiM/JtYON/PtvH6Qr6uOmNY18fe8EDqGgKNAW8PDccJJ//53D1AwLIQSmbRPzOFjIVfG5BG1hN6fmy0znauwZT1G1f/L8LgXaY15Ozeb5T985Qlm3CPmceFwWubLOTK6GS1Hoa/DidTsQwFiiyNdemMBGMJ3xcN1AIwZQqxq8NJnh8t4ImzvCjKYKaApkSjU8LpWhxSKrm/zsG0/ymV3dWHZ9PXZHd5Td/Q0cmEzTEvLQFffhW8aNKiCnbSVJkqQ3oCqC37ppEMOyOTiZZSZTYU1riPaIl1PzeWzLpDnoJl3SwQbTstnWFaGvyYuqKJyYL2MBn3/mq6TyOgoQciu4VXCoMLpYIlGqUdFNGvwOskWDfEWnIeCmI+zDpUK2YjK6WGR4vkDE56Jm2GiKSlPAzTPDCSzLYihRYGN7iB8cmmXvWIq1zSFURaE14mV7VwyfS2UsVaJq2ES9TtojXgabAwwvFhhaqNe63dQRZjxZIldZ3rStDE9JkqR30ZX3Pkb3PQ9w5b2Pne+mvCMTyRKPn1gg5neRKeskChV+cXc3169poC3iIeZ34XFpPD+UwutUqegG5arFqfk8p+ZLZMomKvVNQZ9/9p8omSCAuFejYnJ2PTTsdWIYJgv5Gopq0xbx4XIonJzLU7MEmztCbO6MoCgCBUHZMOmKebDs+malRL7Gzt4YDx6ZoyvuZ3NnmMPTGdoiHm5c28zWrgi2bXN4OsvdW9tZ0xLErakE3RodES+mZXFgIg3ADaubCMiRpyRJ0vvnTLF4gLF7bz9728qFqjHgpDHoQlMVfuXqXiJ+F7/zrcN86q/28PJkijs2tHDTuiZ6GrxYlo3H6UAHTs7l0QAV8DkFLq2+VcipgKJAumKw9CU0oFStUTNBCGgNuUkUKkymSvhcCjt7IqxtC7G+NcSGtjDpco18SadUM0kVa8xkysxmSyRyVda2BGnwO5lMlmgKeRhNlCjXTPaMJNncEcYwDCqGxfcOzpBZGu1+8ekRvrF3isGl4ggep4ph2a/XHa8hw1OSJOld8Ow91zN27+0XRdH4ZKFKuqwzulgEYCFboaJbfOayLqI+DdUWGJZNpqCjORSKVRPTshCAblisbfXh1gS6aeNyLMWMTf1sZ9VELOWTDphmfXo4X7E4OVeiZtg0Bd0Yps1zIyn+8vEh/uG5UVSHYKAxwJrWAKfm83hdKqOJEjGfm8GWIA5V0BLyoKkKn9jewa3rmplMl3A7FEDw6IkEvTEvQ3N5fnh4Bsu2mc6UuHFNEw5F4ZFj87w8kebYTG5ZfSQ3DEmSdNE7c+/m10eSOM+5NUR6fdOZMn6Xg2y5xtBCnvv2TbGpI8jTp5MMtgQJezSeH04yn6tgmTambVOoWjT4nXhdCiOJEpoKwqGQKNV33ppLgVk1QRX1USfUj7FkKjo2MNjkI1XS6Y55aQq52dQe4vnhJDGfRr5kEHA7mM1V2doZJlMy6Ih6GWj28/xIkj+8exPPDSfY2hlhPFnC71b43z8a4aa1TVzVH2dnd5ixZJHFYpWo30XVsPj0zi4GmwP8zVMj3LahmfaIlwOTmWX1kRx5SpJ00ZvOlBm793Z29cbY2hk+3835wNvYHqa3wc+HNrQykSqxqtHLXLbKhvYQUZ+LuM+FbpqcmsszslBEN2wUVaWqG0wmK3g0lZoJmbJ1NmTODEBbQ05CHgcI0G2omja2VZ/mPTlfJF+psWc0hWnbfP3FKWYzJQ7P5BleLJAp1+iJehlsDpEu1eiMeMlXDVyqwv999BTPjSRpi3gxTItcxaCv0Y9pW2QrBoYJL4yk+MJdG9jVG+Xz3zhAZ9TD0EIBt6ZwaCrLg0fm0NTlxaIMT0mSJOl1Zcs6hmkT87sJeBwcmcpwdCrDdw9O0xP3c+3qOJYqcKrgcyogFEIelUrNoCnoxqvVNwUBVC1wq/X7PF2KYH1rgO5ovTpR1YL2qIumgEbI48TrdOBSFWqGic/l4MY1jQTdDjJlA49L49RCnjUtAda3hzgxm+eOjS3MZSu8OJLiK3vGuP/ANFXD5l/f2E/NsHGqCr90dQ8f3drO/3jwOE1BN//l9rWUdJM/f3yIVY0BOqM+tnVF2NQRXlbfyGlbSZIk6XU1BFwkClXcmorLIWha18LJ+RynFwr43RpWBm4YjDOTrTLQ6OfFsRQLuQpVE6rpMhG/imHWp219mkLApTBXMJgv6MwVdFxKPVzjPgc+p4Y/6Fi6UkyQLemEPA4MS2Fksci27ggn5wrM5yo0B1wkCzX+5XXN/NJVveRKNa5d3UjPYp4fH58jWayxmK+yuSOMpgpSxSrr20JUdZt1rUEKVYOmkJuv7hlnd3+c1S0Bjs7k2LyCWQk58pQkSZJewbZtClWDoYUCiXyVgaYAj51YRFEFNrC6KUjE5+Tmda1ky/WSQY0BN6Zl43U5GGz0oFuQKZi4l45+1HSLRMEg4FLpCNfrx1YsEDaoqkKmVOXIdIagS8XrUEiVahjA5X0x3E6VF0aSJAtV9o2lOTidwzDrJfn+8flRPvU3e3jw8CwIaA55uHJVA7v74lzVF+ey3ign5vJUdJOKYaIKhT0jSf7ssdO0ht2oQjCyWKTR72LfMi/CBjnylCRJkoDJVInjszluXtfMXK7CvrE0V6yK0Rn14nQofP7GAVrDHjqiHr65b4or+mKMJov85g39TKZKfGXPOOlilY1tQZwOhdFEmaBXoyXsBsDnUREIOsJuClWTxoATt0Ph1vXN/PDwLNmywebOMB6Hxly2RKpU42d2dfPCaJL5XJWQx0VXzMt8rszq5gALhRqNASd/8OQwUZ9GslAlkXfxs1d049YUHjo6z93b2qkZFgu5GslijflcFc0h2LWqgeaQh0JFZ3NnmO6Yj5ppLbuuLcjwlCRJkqjfphL1OUkVazx5cpFP7ex8zfdHFgs8eTLBzp4oEb+Lid/8Xa74wRcB+ORbPP+B/3rbG37v3y/9/qUbPse37vhF8lWDqmHz0nga79KNJ41BF4VKjVzZ4LETi1y3ppHjs3nu3NLKFb0xTswVuGV9E994cZJGv4uWoIfnh5Nc1d/AbRtaAOiJ+wA4MVc/jvKhja3cv38Kw7RxqApPnlrgI5vbiPldb9lfMjwlSZIkVEXgcznwueAT2zte9zEPHZnhxFye1U1+Hjs+j/I7/4GH/vvv0xRw8h++cwSfU2E2V8GrqSiqIF/SEULh2f9wE333/ICA20HQo9Ea9rCmJcB0ssTeiTSNATfpUo2YT2V1SwC/S+OqgQbue3GCsmGyvbteJeiRYzk+vq0dFMFMukyqWOOmtU1kyjrJYpXjs3l+7do+bNtm33gKt0NFEfXd1ntHU+zuj1PRTVKFGjt7ogB0RL1UdZPHTy5y/epGgh7tdV/7q8k1T0mSJOkVFEW85mvlmsHx2QKzmQrfPTRLxKdxZCbLQ0dm+YsnR1jfGuRjWztoC3vJlAxiXhe6aaMuHf24a0sr8YCTuN/JWKJIplwjr5vEAy564z6uHmjgo1u7iPvdtEY8tITcTGXLlGom6VKNT13WSdjrZGNHGKeq0hB00xR0s5Cv8tU9E1R06xUFDp4dSmKYFr/3vaNMJIusaw1wZDpLRTdZLFR55Ng8ANu7o2zqjPBLV/XQEnZz377JZfWRHHlKkiRJb+r0fJ7HTyxw6/pm0qUaH9nSjm5Y/OUTIximRcjjYDJtMZkuUzUs1rYFcTlU3E4HO7oiAKxq8PP8cJKmgJu1LQEu74nzd8+NUTUs5vMV+j1BHj46z8b2EM8NJWgNufmprR2EvCr/8TvHyFUMPr69A4/Twd3b2nh2KIll2nx97wS/f9d6Yv76sReA2WyF5qCb9W0hTi8UKNdMIj4XR6bzHJjIcNO6JgIujUypRthb37ykqQrHZnKEXMsbecrwlCTponWmslBb2HO+m3LBGksUefLUIp/d1YWiCGy7Xsc2Z+v86tW9hH0a33hhkh09UXb2Rvmdbx5EFRCNOfncri46o14AHj02T9zvomJYuDSVBw7N0hFxY9k2a5pDLOSrmJbFT+/s5OmhBJmSTk+Dl796YoSd3WFcDoVrB+NUdZv7X56hOeBmU3eYde31W14A/nn/NJ/e0UGpZnDL+mY0h8ondnRyYjbHTLrMNYMNlPUIrSEPx2ZzuLRXTr5u6ggzmS4tq1/ktK0kSRetM5WFzke92TOF4i/EG1YM08K26/X0mkNu7t7ajtOh8MChGU4vFKjpJhPJEj+1o5P5XI3dAw0IRVCsWty2oZVVjQHWt4a5oq+BvsZ60fXuuI9fvaaH//XxzbgdCqcWchRrFrdtaOPDm1s4Opsj5NEo6Sa5so6w4U9/PMR4qsSvXrMKv1vj/v0zPDOUQBUCj1Ml7NHojHoRQiCE4HO7unCoCtOZCg4hWMhXMC2btoiHbEUn6nPSFq4/vjHgZjz52qC8Y2PrsvpIjjwlSZLeA+cG9pnbVi4UPzo2z9qWIN1xH25NZTFfZf9E/cLoje1h/v7ZUQJujbUtQX5qezuJfJWvvDDO8GKeD61vJlc1+OLTo3idKp/e1QXA9asb+eZLU/TEMlg23LimmY3tYR46PEfE4+TawQbms1VURdDb4MOlCmqGxY1rGkkVDX775kH+949OYlg2P3tFNz6Xg0NTWSJejf6mAMdnc6xq8JMu1bBtm3/aO0Hc76K/0c+G9jBX9Te84jX6XQ5aQvVjNHvHUmxoC+HWll/3WIanJEnSe+zMKLQt7Lkgbl25bX0zQvxk01BzyE3QrRHy1tcDf+bybh4+OkeiWGVkscBUqsxHN7ehmzYl3eSLz4yytSuMW1N57MQ81wPjqTIBl4OqYeHWFBbzVTKlGrpp4veobO+KMJIo8sTxBVa3Bvj6i5N8bFs7XTEfa1uCFGsmg00BdvREzx4lObNj9usvTlDVLXriPg5PZelv9ON0COay1Te8YszjVOlYmlL2aCritXuk3pQMT0mSpPfYmcC8UEag4lVJoqkKIe9PVvkURZw9O3lgIsNMtkxzyM1UukzYo/Hr1/ahLk2bxpeC7q7NLSgCPndZF8fncvzxI6eYy5epmhYjCwUWC7X6iNKp8vxwik0dIa4fbMLvcRD2aHz1hXEGm4OsagzwyLF5rlgVw7dUvWhda5DGgJti1aAt4iEecFEzLQ5MZAm4HdQMC6fjjVcp17eFVtxHMjwlSZKkN/XCSBLTsjkynWXXqhgb28Nnv3dZb4xjszl29zdwYDLD6uYAbk1lZLHAjniUoLs+Wm2P+Pjsri6OzOQQwGBzANuCX7l6FYpt8+JYmkypxoGJEqZtM7JYBMHZ8B1sDjLYFMDpUM7+HWdsWGpPplRDUwXzuQqJYpXbNtQLxlv28i64XgkZnpIkSdKbigdceDWVim4SelURgZBH4/M3Drziay+MJFnTGjwbnMd/5d+wcGqBawYauWxpqnVzZ5j79k6yqsHPnpEkP3N5N61hL9mywWBzgPaIl+6likAAu3pjZz8+M936amGv8+zRk94GP/CTqkLvNhmekiRJ0ptatRRELUtHfk7M5ehvDFDRTZ4fTnLj2iYANi9d5xXzu3huKMFAUwBVEXzphp9hYC6P26FyWW+MhVwF07b56cu6UBVBslijMehCVcTZKdS+Rv87avPByQxrW4PLvp9zpWR4SpIkSSsyn6vSs7QTd6ApcPbri/kqDQEXfY1+2iMehhcKHJzK8B9uX4vP5cBc2rxT0S0My0JdqmS0+Zw7NBdyFZ4ZSvCxre3vqI0103pPpmvPkOc8JUmSpBW5ZqABl0NFVQSdsfoUatUwefLU4tnHuDWVfNXgprVNRHxOnA4Fj7O+TtkZ856dVn21xqCbDy1tRnondnRHcTmWf/RkpeTIU5Ik6X1y5sjKmY8vhGMrAPvGUqx/i3OQLodaL9p+jnPXKd/I8dkcUa8ThyrOHkFZyXnLd9tCvkJjwP2Wj5PhKUnSReVMST7gA1eW79ywvPLexy6Ys58ux8rPQS7XfK6Cbdu4NHVZV4G916q6tazHyfCUJOmicqYk3wfdhXT2c0P7ys5BlmsmqVJtWT+8XDvY+Hab9Z54o528rybXPCVJkqR3Vb6qM50un+9mvKfkyFOSJOk8ulDXQd9MY8C9rHXDC5kMT0mSpPPoQi4gfymT07aSJEmStEIyPCVJkiRpheS0rSRJF4UzR1Q+aMdTpIuTDE9Jki4KF8oRlTdzod37eSmT07aSJEkfEM/ec/3ZHwC673lAbiD6AJMjT0mSpA8YOer84JMjT0mSJElaIRmekiRJkrRCMjwlSZIkaYVkeEqSJEnSCskNQ5IkXdDk+U7pfJDhKUnSBe1iON8pXXhkeEqSdME496LrM+SIUzofhG3b57sNkiRJknRBkRuGJEmSJGmFZHhKkiRJ0grJ8JQkSZKkFZLhKUmSJEkrJHfbSpL0vhFCPATE34OnjgOJ9+B5Pwjctm2vP9+NkF5J7raVJOmCJ4TYZ9v29vPdjvfCxfzaLmRy2laSJEmSVkiGpyRJkiStkAxPSZIuBn99vhvwHrqYX9sFS655SpIkSdIKyZGnJEmSJK2QDE9Jki5oQohbhRAnhRBDQoh7znd73k1CiDEhxGEhxAEhxL7z3R7pJ+S0rSRJFywhhAqcAm4CpoC9wKdt2z52Xhv2LhFCjAHbbdu+WM+wXrDkyFOSpAvZTmDItu0R27ZrwNeBu85zm6RLgAxPSZIuZG3A5DmfTy197WJhAz8SQrwkhPiVd/Ac8tfKfr0lWZ5PkiTpg2u3bdvTQohG4BEhxAnbtp86342S5MhTkqQL2zTQcc7n7UtfuyjYtj299PsCcD/1aWrpA0CGpyRJF7K9QL8QokcI4QQ+BXzvPLfpXSGE8AkhAmc+Bm4GjpzfVr0Nn/98/ddFRk7bSpJ0wbJt2xBC/AbwMKACX7Jt++h5bta7pQm4XwgB9ffqr9m2/dD5bdLbcODA+W7Be0KGpyRJFzTbtn8I/PB8t+PdZtv2CLDpfLdDen1y2laSJEmSVkiOPCVJkqT3xJX3Psb/HknidKhsfZ3vTWfKtIU9PHvP9eelfe+EHHlKkiRJ74npTJldvTEAuu95gO57HuDKex87+72xe29nOlM+n01822R4SpIkSe+prZ1hxu69nbF7bwfqQdoW9pznVr0zctpWkiRJet9ciFO0r0eOPCVJkiRphWR4SpIkSdIKyfCUJOmSJIR4XAhx09LHfyCE+NPz3SbpwiHXPCVJulT9HvCFpaLrW4A7z3N7pAuIDE9Jki5Jtm0/Jeq1734LuNa2bVMIsQb410Ac+LFt239xXhspfWDJaVtJki5JQogNQAtQs207D2Db9nHbtn8N+ARw5flsn/TBJsNTkqRLjhCiBfgqcBdQEELces737gQe4CKslyu9e+S0rSRJlxQhhBf4NvBvbds+LoT4feAPgYcAbNv+HvA9IcQDwNfOX0svXOeW3nsrbWEP3fc8cPbjC+UcqAxPSZIuKbZtl4DLz/n8qTOfCyGuBT4GuJAjz7ftTOk9AB76wps+9tywPBOiFwIZnpIkSUts234CeOI8N+OCdGa0CVzwpfeWQ4anJEmS9I69YrR5CZAbhiRJkiRphWR4SpIkSdIKyfCUJEmSpBWS4SlJkiR9IJw5tnLmwuwPMrlhSJIkSfpAOHNs5UI4siJHnpIkSZK0QjI8JUmSJGmFZHhKkiRJHygXwtqnXPOUJEmSPlAuhLVPGZ6SJEnS27aSIvAXExmekiRJ0tt2qZXlO0OueUqSJEnSCsnwlCRJkqQVkuEpSZIkSSsk1zwlSZKkD6QzR1bOfHzuxdnnmwxPSZIk6QPp3LD8oB1bkdO2kiRJkrRCMjwlSZIkaYVkeEqSJEkfeB+0kn1yzVOSJEn6wPugleyTI09JkiRJWiEZnpIkSZK0QjI8JUmSJGmFZHhKkiRJ0grJ8JQkSZKkFZLhKUmSJEkrJI+qSJIkSSt2qV6CfYYMT0mSJGnFztcl2GeKJZzvQvEyPCVJkqQLxgelWIJc85QkSZKkFZLhKUmSJEkrJMNTkiRJklZIhqckSZIkrZAMT0mSJElaIbnbVpIkSVqWM2c7gfN+vvPMkZUzH7/fx1ZkeEqSJEnLcr7Odr6ec8PyfBxbkdO2kiRJkrRCMjwlSZKkC9qZKdwr733sffs7ZXhKkiRJF7Rn77n+7HTy+xWics1TkiRJuii8n6X75MhTkiRJklZIhqckSZIkrZAMT0mSJElaIbnmKUmSJF1U3o8CCjI8JUmSpDd1prLQ+a4qtFznhuWV9z72nlyeLcNTkiRJelMfpMpCK3UmMN/tEJXhKUmSJF303u1jLHLDkCRJkiStkBx5SpIkSZeMd2szkQxPSZIk6ZLxepuJzlhJmMrwlCRJki5Jrw7KM2G6nM1RMjwlSZKk13WhHVF5p1YyhSvDU5IkSXpdF/IRlfeaDE9JkiTprDOjTeCSGXG+HTI8JUmSpFdM0crR5lsTtm2f7zZIkiRJ0gVFFkmQJEmSpBWS4SlJkiRJKyTDU5IkSZJWSIanJEmSJK2Q3G0rSZJ0ERNCPATE34OnjgOJ9+B5Pwjctm2vf7MHyN22kiRJ0ooJIfbZtr39fLfjvbCc1yanbSVJkiRphWR4SpIkSdIKyfCUJEmS3o6/Pt8NeA+95WuTa56SJEmStEJy5ClJkiRJKyTDU5IkSZJWSIanJEmStGxCiFuFECeFEENCiHvOd3veTUKIMSHEYSHEASHEvjd9rFzzlCRJkpZDCKECp4CbgClgL/Bp27aPndeGvUuEEGPAdtu237L4gxx5SpIkScu1ExiybXvEtu0a8HXgrvPcpvNChqckSZK0XG3A5DmfTy197WJhAz8SQrwkhPiVN3ugrG0rSZIkSXW7bdueFkI0Ao8IIU7Ytv3U6z1QjjwlSZKk5ZoGOs75vH3paxcF27anl35fAO6nPk39umR4SpIkScu1F+gXQvQIIZzAp4Dvnec2vSuEED4hRODMx8DNwJE3eryctpUkSZKWxbZtQwjxG8DDgAp8ybbto+e5We+WJuB+IQTUs/Frtm0/9EYPlkdVJEmSJGmF5LStJEmSJK2QDE9JkiRJWiEZnpIkSZK0QjI8JUmSJGmFZHhKkiRJ0grJ8JQkSZKkFZLhKUmSJL3nhBCPCyFuWvr4D4QQf3q+2/ROyCIJkiRJ0vvh94D/f3t3iFJRFIVReP1VR/CmIBicgUUwiNnoGDS8rsmBWAwmEQdh1jnIawqC4NsGL2J0P7mcsr54T9ltcTiw78W0N3YPOB48z79485QkzW5asB7gDDipqk/4WYv3mORo6IBNxlOSNLsku8AC+Kiq119HS+BmzFSbM56SpFklWQDXfP84+y3J4fT9AHgCXgaOtxHfPCVJs0myBdwC51X1nOQSuAIegH1gG9gB3pPcV9V62LANLoaXJA2V5BRYVdXd6Fn+ynhKktTkm6ckSU3GU5KkJuMpSVKT8ZQkqcl4SpLUZDwlSWoynpIkNRlPSZKajKckSU1fhVI+aRlEXIIAAAAASUVORK5CYII=", + "image/png": "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iROulyoFQhEREZkxekNxrv+HF2g7/OebHnqJuNUOgMNi4um7rwBg/f3biCfTx1wv5VCoQCgiIiIzRjCamA56AP/25bVknS7ahyLc+cQuXukYAyCeTPPAxuUA3PnELoLRhAKhiIiIyEy0pM4HLhdlLisOi4k7n9gF5FYFV80pn942LnUKhCIiIjLj1fsdPH33FSfcN6hAmKNAKCIiIiWh3u8o6W3h96K2MyIiIiIlToFQRERmtMcffxyHw0F/f//0tc2bN7Ns2TLC4XAeKxMpHAqEIiIyo336059m/vz5fOtb3wJgy5YtPP300/zyl7/E5/PluTqRwqB7CEVEZEYzGAx885vf5KabbqKmpoYHH3yQ559/nvr6ekKhEOvXryeVSpFKpfjKV77C7bffnu+SRc47BUIREZnxPvaxj7F48WL+5m/+hqeeeoolS5YA4PF4eO6553A6nUSjUS644AJuvPFGKioq8lyxyPmlLWMREZnxtm7dyp49e0in01RXV09fN5lMOJ1OAKampshms2Sz2XyVKZI3CoQiIjKjtbW1cfPNN/O9732Pa665hq9//evHfD8UCtHa2sqsWbP46le/SiAQyFOlIvmjLWMREZmxDh06xHXXXce9997Lpk2baG5uZu3atbS1tbFixQoA/H4/r7/+OoODg9x4443cdNNNx6wiipQCrRCKiMiMNDY2xkc+8hFuuOEGvva1rwGwZs0aNmzYwL333nvC86urq2ltbeX5558/36XK+9QbivNWb5i3esO0D0XO6jXahyLTr9Ebin/AFRY+Q1Y3S4iISIkaHBzE6XTi8XgIh8NccsklPP744yxdujTfpclp6g3FWX//NuLJ9PS18myStr//ZO4PkQi4XGf08w6LiafvvqKkpppoy1hEREpWZ2cnX/ziF6cPk9xxxx0Kg0UmGE0QT6Z5YONyWqrcAJSThL8/vZ8/fsZx+1CEO5/YRTCaUCAUEREpBatXr2bXrl35LkPOQm8oTjCamN4ibqlyc0H94Ubj0egZvZZmHCsQioiISJE5fpvXYTFR5rLmuaripkAoIiIiReX4beIyl7XkV/jeLwVCERERKUrHbBPL+6K2MyIiIiIlToFQREREpMQpEIqIiIiUON1DKCIiInKcI+1sSuXAigKhiIiIyGFlLisOi4k7n9gFlM7UEgVCERERkcOOnlxSSlNLFAhFREREjlKKk0t0qERERESkxCkQioiIiJQ4BUIRERGREqd7CEVERETeQym0oFEgFBERETmJUmpBo0AoIiIiRaE3FJ9uB3M+lFILGgVCERERKXi9oTjr799GPJkGcqt1ZS7rOX/fUmlBo0AoIiIiBS8YTRBPpnlg43Jaqtwz+n6+fFAgFBERkaLRUuXmgnpfvsuYcdR2RkRERKTEKRCKiIiIlDgFQhEREZESp0AoIiIiUuJ0qERERETkNM3UqSUKhCIiIiK/x0yfWqJAKCIiIvJ7zPSpJQqEIiIiIqdhJk8t0aESERERkRKnFUIRERGRs3DkgAkU/yETBUIRERGRM3D8ARMo/kMmCoQiIiIiZ+DoAybAjDhkokAoIiIicoZm2gETHSoRERERKXEKhCIiIiIlToFQREREpMQpEIqIiIiUOAVCERERkRKnQCgiIiJS4hQIRUREREqc+hCKiIhIweoNxQlGE8eMiZMPngKhiIiIFKTeUJz1928jnkwDufFwZS5rnqs6tSOhtRjnGisQioiISEEKRhPEk2ke2Liclip3wQat42cbF+NcYwVCERERKWgtVW4uqPflu4xTOnq2cbHONVYgFBEREXmfin22sU4Zi4iIiJQ4BUIRERGREqdAKCIiIlLiFAhFRERESpwCoYiIiEiJUyAUERERKXFqOyMiIiLyASu2qSUKhCIiIlIwjswuBopyfnGxTi1RIBQREZGCcPzsYij8+cXHK9apJQqEIiIiUhCOn10MxbPlerRinFqiQCgiIiIFpdBnF89ECoQiIiIi51AxHDBRIBQRERE5B4rpgIkCoYiIiMg5cLIDJq90jBEswPsjFQhFREREzpEjB0yOXy2EwloxVCAUEREROceOXi0ECq4ljQKhiIiIyHlQyO1oNMtYREREpMQpEIqIiIiUOG0Zi4iIiORJofQoVCAUEREROc8KrUehAqGIiIjkVW8oPt2rr1S8V4/CfKwWKhCKiIhI3vSG4qy/fxvxZBrIrZSVuax5rur8OFWPwnysFioQioiISN4EowniyTQPbFxOS55Wx/KtEFYLFQhFREQk71qq3FxQ78t3GXmT79VCBUIRERGRAnGy1cLzMc1EgVBERESkgORjookCoYiIiEgBO/r09dH3FB45nX389bOhQCgiIiJSgI6/nxBy9xQ+fOtKAL70g53HnM5+P/caKhCKiIiIFKCj7ycEGI0m+NIPdnLbIzuAXAj8l8+vJhhNTJ9Mrr+w/qzeS4FQREREpEAdfz/h0QHxyDZxbyg+vZL4CQVCERERKRalOJ3kg3CyAyfHrySeDQVCEREROa9KeTrJufJ+TyYrEIqIiMh5pekkhUeBUERERM6L47eJS306SSFRIBQREZFz4ug+eUdOyGqbuDApEIqIiMgH7vj7BOHdNikVLqu2iQuMIZvNZvNdhIiIiIjkjzHfBYiIiIhIfikQioiIiJQ4BUIRERGREqdAKCIiIlLiFAhFRERESpzazoiIiMgpZbNZJiYm8l2GnAGPx4PBYDijn1EgFBERkVOamJjA59M0kWIyNDREZWXlGf2MAqGIiIicksfjIRwO5+W9x8fHaWhooLu7G6/Xm5caismRz8tqPfMJMAqEIiIickoGgyHvYczr9ea9hmJyptvFoEMlIiIiIiVPgVBERESkxCkQioiISEGy2Wxs2bIFm82W71KKwvv5vAzZbDZ7DmoSERERkSKhFUIRERGREqdAKCIiIlLiFAhFRERESpwCoYiIiEiJUyAUERERKXEKhCIiIlJwvvvd79LU1ITdbmfNmjXs2LEj3yUVrG984xsYDIZjHgsXLjyj11AgFBERkYLyxBNPcNddd7Flyxba2tpobW3l2muvZWhoKN+lFawlS5bQ398//XjhhRfO6OcVCEVERKSgfOc73+H2229n8+bNLF68mIcffhin08kjjzyS79IKltlspqamZvoRCATO6OcVCEVERKRgJBIJdu7cyfr166evGY1G1q9fz0svvZTHygrb/v37qauro7m5mVtuuYWurq4z+nkFQhERESkYIyMjpNNpqqurj7leXV3NwMBAnqoqbGvWrOHRRx9l69atPPTQQ3R0dHDZZZcxMTFx2q9hPof1iYiIiMg5tmHDhumvly1bxpo1a2hsbOTHP/4xX/jCF07rNbRCKCIiIgUjEAhgMpkYHBw85vrg4CA1NTV5qqq4+P1+5s+fT3t7+2n/jAKhiIiIFAyr1crKlSt55plnpq9lMhmeeeYZ1q5dm8fKikckEuHAgQPU1tae9s9oy1hEREQKyl133cVtt93GRRddxOrVq3nggQeIRqNs3rw536UVpHvuuYfrr7+exsZG+vr62LJlCyaTiU2bNp32aygQioiISEHZuHEjw8PD3HfffQwMDLB8+XK2bt16wkETyenp6WHTpk2Mjo5SWVnJpZdeyvbt26msrDzt1zBks9nsOaxRRERERAqc7iEUERERKXEKhCIiIiIlToFQREREpMQpEIqIiIiUOAVCERERkRKnQCgiIiJS4hQIRUREREqcAqGIiIhIiVMgFBERESlxCoQiIiIyYz3++OM4HA76+/unr23evJlly5YRDofzWFlh0eg6ERERmbGy2SzLly/n8ssv58EHH2TLli088sgjbN++nfr6+nyXVzDM+S5ARERE5FwxGAx885vf5KabbqKmpoYHH3yQ559//pgwGIvFWLRoEZ/61Kf49re/ncdq80crhCIiIjLjrVixgt27d/PUU09xxRVXHPO9v/zLv6S9vZ2GhoaSDYS6h1BERERmtK1bt7Jnzx7S6TTV1dXHfG///v3s2bOHDRs25Km6wqBAKCIiIjNWW1sbN998M9/73ve45ppr+PrXv37M9++55x7+9m//Nk/VFQ7dQygiIiIz0qFDh7juuuu499572bRpE83Nzaxdu5a2tjZWrFjBz3/+c+bPn8/8+fP53e9+l+9y80r3EIqIiMiMMzY2xrp167jyyit5+OGHp69fd911pNNptm7dyl/8xV/w2GOPYTKZiEQiJJNJ7r77bu677748Vp4fCoQiIiJS8h599FHeeustHSoRERERkdKkFUIRERGREqcVQhEREZESp0AoIiIiUuIUCEVERERKnAKhiIiISIlTIBQREREpcQqEIiIiIiVOgVBERESkxCkQioiIiJQ4BUIRERGREqdAKCIiIlLiFAhFREREStz/B8XHFNzWt0bIAAAAAElFTkSuQmCC", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -212,24 +220,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "In contrast, $x_o$ falling well outside the support of $x_{\\text{pp}}$ is indicative of a failure to estimate the correct posterior. Here we simulate such a failure mode:" + "In contrast, $x_o$ falling well outside the support of $x_{\\text{pp}}$ is indicative of a failure to estimate the correct posterior. Here we simulate such a failure mode (by introducing a constant shift to the observations, which the neural estimator was not trained on):" ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAc8AAAHyCAYAAACNnEVYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOy9d5hk5Xnm/Tupcq7q6pzD5AwTgCEjhEBC0YpWsuXwOe/6s73r9bf2rteW117bcpCDZFnBykISOcMAA5Pz9HRP51DdXTnnk74/TtOAQIS1EEie+7rqgq6prj7nPee8z/s+z/3ct2CaJpdwCZdwCZdwCZfw6iG+0QdwCZdwCZdwCZfwk4ZLwfMSLuESLuESLuE14lLwvIRLuIRLuIRLeI24FDwv4RIu4RIu4RJeIy4Fz0u4hEu4hEu4hNeIS8HzEi7hEi7hEi7hNeKVgqd56fWaX/9evC7HFS/UzbvOLJtHZ7Nr72UrTfPkQtYcXS6svZ8s1s1CTTUvxkvmeLxo1pr62ufrqm6mSnXz4GTa/MLBWbOu6i/6O6lSw3xqMvWqjytdbph3nIi9kWP+mv7W4ZmMOZeuvOC9SkMzDcM0TdM0DcM0z8UKZr7aNB++kDDLDc08s5g3v3xozjw0nTEBcylfe8F1ePalG6Z595lls1RTzccvJl/z9Z1IlMzzS4Uf6X1TqqtmqtR4w8b7tb7S5Yb55MRz959umOYjFxKmYZimbpgmYJYbmmlaPXpr1++h0biZqzRfMO4PjsbNiXjR/ON7Rs3Dq9dubKVoFuvqyx5DrtL8UZ/Xvxc/0uO568yyWW1qL3q/rurmPxyY/qH3rr76jNRV3VzK19beV3XDvOfssjmZKJqHptNmXdXNhWzFfOJi0vzXp2dNVTfWPvdSc84Pe82lK+bJhZwJmGcW86/pd1/NoF7aef4HQcClsK3LT1/ERarU4OBkmvGVIrFsjb944CLdQQemaZIsNTg1nyVZqjOXrlDXdL749CymaXJyIcdyrk5v2MVH9/XiUCSemkxRqqokinUAWrx29g+3kK82+dxT02QrzZc9rojHznt2dQGQKjVe93H492J9m5c2v+MF7z01mWKlWKdY1xBFARMTUYBspcFCpsKWTj8f3tNLulznN75+kqVcjb6wi68cmkPTDRazVcZWipxezHHVUJiappMtN1nMVl/1cR2aSVNv6nQGHK/84deAbKXJcr629vOboS/82FyWWO6lxybisXP1SMvaz6IAPWEXoiggiQKmafJn949xYj7HIxcSAEwkSiiSwJ2nl1jX6gGs8752OEKL1068VCPoVgAwTBNdf/kxcNokDk1nmEmVefxi8iU/U25o3HN2+TWf+5sBe/pDOBWJQlXljhOxtfcvxktc1hugP+wGrOtUbWgYhjVeF5aLPDOdIVNuMJ+urP1eUzMYbvFimgLfOxXDME3afE7Wtfn4+BV9CKuf+5eDM3z5mTlKdfVVHWdfxM3OniBgXbfn43unYjQ0/SV/bypZflXf/6MJnr/5m9brEl53mKbJY+MJNN14Tb/nUCQ6Ak6iXgc+p4xuGuwZCDPc6mFXX5D2gItvH4/hccgcnc+iajpDUQ+abtDQdCaTZRLFOl6njNMmoZsm06kyD5xb4R+fnObesysAqLrBifkckiiwpTOAzyG/6mP8xwPTFGuv7sEAmEmVfyyT+ehygeLqA5upNPnBP/nWze20+RzcfWaZ80sF7LLIfefivGNbJyOt3rWJeyDi5sqhMA1V5/GLSXKVBkfnskwnSxSqKg5FIlNpMpUoU1d1NN2kUFX51rEFmpp1vXXDXJuMno937eji7rPLPDWZoVhXX/H+qDY1ppKltUXPD0Nv2M227sDaz9953mT5RqE37CLktr3i55KlOqlSg5FW79p752IFbJKIXRHZNxgGrIA7l6myrs1L2GPn2FyWIzMZPntgmvFEic0dAe4+u8wD51fQDZO7zy6TLNWZSZX5xtGFte9uaDoTiRKSKGCTROYyFXZ0B15yEeRSJC7vC/0IRuPHj1afA0EQ8LsUhqIeak2dhWyVuUyFs7ECfRE3y/kaharKMzNpPvfUNKZpsq7Ny0SixAPn42Set6ieTJapaxon5rO8fWsHLptModbkqckUj4wl+IuHLjKVLHFZb4iesIuDk+lXHUCfxY6eIA5FWvt530AEuyy95GejPvur+k7hFSafVzczXXut9d8DB17Vx3/KIbzyR14Wrzjm4/Ei61q9CMJL/6kT81m2dQUQBIFnptNcNRThwESK0ViBW7a20eZz8s3jC8iiQCxbQ5FEHIrIB3f38FePTCAJAolSgz97z1YOz2S5rDfI6HKRqVSJXT1BVN1kuVBjIOKm1tTZ2u3HJkmIooCqG5yNFdjU4XvBzfpqMJUs0x9xI4mvPISmafLgaJwbN7Qiv5pfeJmveqUPXFgu0hVy4nMoHJvLMhz1EHBZk/dnH5/kbVvbERHJ1ZqIQHfIRbGuctepZa7bEKVY0/DYZda3e/n1r53E65D50J5eqqpO1OvgodFlVAN+Yf8gz0ynuXIowqmFPPsGw6RKDTLlBneeXmZDu4+gW8HrUNj+vID2/DG5sFKkO+TiO8djhNw23rmj8yXPqVBVuZgospit8e6dnT/0XvpBqLqB8jqP948Ks+kKhmky2GLtJuOFGr//vfP8zs3rUHWTFp+N373jHLduaectm9q4GC9xcj7LZLLMz181gCyaPD2ToT/sYTJZ5qqhCOWGyrauIP/05DSdASfXrGsh5LZjGCafe2qGgEvhPTu7MIG5dIVyQ6PS0LlqOPKKxzuZKBH22F9qYfC6zyn/N0gW6zw8GifgstHQDTTDYCpRZjZd4ddvHObIdBZZEijUmnQGXYRcNjTDRACm0xXesa0Dj0PG51AwDJO/fWySTLnJL183yFyqwpcPz/NX799GuaExm66yqyeIKAqcixXoDjnXnsEfBk03GIsXqTUNdve/5oXKK475pbTtTyDWt/leNNk9fxH07MZEAAJOG989uYTfIXPz5lYmEmUeHU+wvctaiZ2OFVgp1MhVm3znxCK6bmJXJD5xRR9eh8LO3gCnFnMcmEjy0X19bO8Jki432NoVYEtXgN0DYeyyxFi8CIAiiezqDfLA+TjJ1V3Nq90dDkU9rypwLmarPHwhwVs3tyNLr/8tvLHDh89hpe0u7wu94KGNeh2cmMthYpIpNwi4bARcNh48n1jbhe7qDRLx2Hh8PMn7Lu/GMCFVbrCjO0hnwMFkokpT07HJIoMt1hh4HBIHLiZ5bDxBX8RNodbkzGKOoYib43NZplNlHl5NOz4LQRDY1OHH51D44O5urt8QfdG5FGoqo8sF/C6F3f1h3rOr6xUDZ1MzmEiUAOv6vtnx7P3WH3GvBc6mZnDP2RX+9N1b8DoVUhXrWv3S1QPs7gvy1cNzVJsqsVyNda0e7jod49+OLNIVcKHqJj0hF5IocDFe5l+enqUn5KI75OLUYp5vHltgMVfltq0dzKYr5KoqiiQiiQJPTqReVeCE1WKbafL0VPoVMwJvNHTDZCJRIup3cOVwhC2dfp6ezBBw2fjgnm6Go16KDZWuoIsP7eml1jSYTJZo6gZtAQexbJXPPTXD2HKRUws5RFGgP+Lmk1f10eZzsHcwzMev7OPesyvYZWuX/uBonE/fN8bmTt9LBs5yQ+PITGbt+o+tlDgfK/KDt2yxrnJ+qfDvHoNLO88fPd6QVeJXDs1x+47OtUn++ShUVR4YXeEtG9sAeHQsTqassrM3SHfISaGqMpEsUaprfGhPLwuZKt8/FeMDe3qIeh3ceWoJp03kwHiSD+/tw22X6Q271iZd3TB5ajLF/qEIsXyNsMfOgfEky4UaH93Xx/3nV9jeHcBtl4l6//01OcMwqWs6LpvMN44u8IHdPW/4TuiOEzGuGo4Q8dh5ZjqFqsO2Lj8AZxbzXLMuSr7a5OtHF7hqsIXDs2lu3NjK3WeWWcnX+YO3b+T8UhFV19d2lqPLRfrCLqpNnVylic8pE/bYEQQBSRBQDWMt9TSTKiMKAn0Rq950djHPI+NJ/tNNIy84zq8cmmNju59dfcFXfW6VhsbZWGEtzcm/7x5/3XeeXz+6wFs3tRF029B0g28dX+S9O7s4OJ1msMVDxGNHEgVKdY1qU+PITJadvQFkUcQmi7T7HWi6waPjSW7a2MZitsonv3iUoRYPt2/vQJElukJOKg2d9W1eCjUVv1MhUazzxMUUn7yqH0EQ0HSDckN7yYm+1tRJlurohkmxrqFIAhvafDR1g2JNxedUnp+5eVPtPO88vURXwMFUqsKOniCGaRIvWBwJp03i/Zf3ANbO9ImJFNu7A5QaGjt7gpxfynNqPs9t2zqoNDU03cQEvn50HpdNZl2rl6V8jZ/fPwBAptzA55AxAFkUqasaTkWmqupUGxpR33PzyYXlAqPLRUwTrt8QJeKxU6iqaIZB2PNcKrZUtxZJG9p9L3earzjml4Lnjx4/1hs9W2mSqzbpCbleclcwmSjxd49P8afv3oLLZtUfL64UuefsMrpprXRv29pB2GPj+HyO27Z2MBEvka02OL9cZG9/mP9x9yhhtw1FFlnX5qUj4ORdOyySz7Opwo3tPhqawYGLKXpCLvLVJsOtHlq81kSULDVYyFbZOxB+0TECJIp1gi4bNvm17Wzqqo5Dkd7QyTxRrGOYJu1+Jw9fiNPUDNoDDqoNg6ams5irIooCM8kygiCQLjW4cjjMnoEwYHJiLs9Ai4etXQGqDY2DqzuPTR1+kqU6bX4nDVXn1EKegRY3Td3g9u3PpWMXs1UOz2SIeO1c1hvEJosUqioLmSq7+oLW3yw3aGoGbpuM3/XiBdZrxJs6eGq6QaGmEvbYMU2TLz4zh26Y3LghSsBlYzpVxmWTqas6K4U6hmGwvSdIV9AFWPfU2ViBqWQJv1PmwnKJd+7o5KHROKcX87zvsm76wi5qqsGGdh+JYh1VN/jeqSU+tX8An1Ph7tNLPDKW5DMf3MFitkqhprKx3Ye4mln59vFFtnX58TlteB0yqVKdWL7GoakM/+9b1//gKb2pgudj4wl6gi5a/Q5+746zfGxfHw9dSNDud3DduigLuSrtfgeHpjPsGwjjdSqMrxQJuGx85pEJfubybm7Z3M4TE0mKNY31bV4ev5ik1edgV28Qt13m5EKOq4dbqDR1Hh9P4nMqbO70cd+5FfxOBY9dJupz0B92E3ApCIJAXdVp6gYuRfpRZKReccxfPZvjDcKVn36MpXyNzoCTp3/v+jf6cN500A0TTTdRJJFMuYHfqSBLItPJMk6bxLHZLH/49o185dA8t2/v5NB0hqau859vXk++2uQvHhzn2FyGelNnMmXViJ6ZyrC504dDFjFNkzafA1mE37xpPScXsvSGXWt/3zTh1EKe2VSFgYibsMdGR8DBxg4f+WqTiUSJkVYr4HYEnD/0HCYSJda1eV+wMzVNk3ixTrv/pX8PeM111R8FppJlTsxlef9ua4VdqmucXshx48ZWFjJVbtvazoMXEuwbCON3KYTcNpYLNb4+m+WffvYyFjNVjs1nObNYYC5ZpjXooNXnQBIFvE6FTLlBsljnquEIQ1EPXofM908vkak06Ak5cSgiuUqT4Gpt7NRinrdv60AWBY7OZYl6HQxFPRyby6HqJjZZoNbUqas6HQEnx+ayuGwSmzr8P/ax+3EgXW7w+MUU3UEXnUGnVWLo8PHVowu0+RzcsqWdRy7EUWSRUl1lXdTHM1MZ3rXDQabc4K8eneD2bR1Mpyq0+2zWcwCohslfvX87k8kykigQdCrkq03OxgoMRV0MRz2sFOrUVZ14sc6+oRCZcoNHxxJkq02Gox7sonW/Xj3SwnSyzECLB1kSOb1YZzBiLaCej1JdxfsS2aQ3AsW6ynKuRlMzGGjxUFV1Wjx2jsxmuHZdC7t6Asxnqyxmqwy3ephKFDmzmGPPYASbJLKpw8t/umkE1TD5xrF5xpZLfOzKPpbzNbZ2BbhiKMJSrka61OSh0QSjywXafE6amsFbN7WSr2vcsrmdiMeOIFjP3UMXLN6DxyHjUCQUSSRdbtDqe3UZrkJNpVhT6Q65XvnDP4A3fQFjKV9j7tO3svQ8uvwlPIcWr52RVg+FmsqphTzZahNNN3j4Qpw7TiyyvsPLfKbKqfksD5xfJuiS8Tll/v6xScbjRXb2WDuThVyNiMfGZLzE/3rXFjZ1+FFX65+3bGnj7ds7yVQabOnyMxK12IvZShNRFBiMuslWm3zu4Ay9IRcPX0hQaWiY5gsp4qpucGoh94Ljr6s63zmxyIZ234tSunXV4PjcCz//RuPEfI4Ly0X2j0RYzFY5s5gn6FLYMxBG1Q0+uKeHAxMpYtmqldY24eBUmtmkRQZZzFXwOmXetbOT27Z2MNTupaGadAScZCtN7j+3wlK+xs2b25hMlPmju0f54tOzHLiY5GNX9JKvqRRrGl85NMdCxqL7v2NbB5ph8rWjC2BCV9BabNy6tX1tJ98RcPJsabPd70B8lQQhsK7ba2V3v5EYj5fY1uVHFKAz4MQwTQp1lRs3tHLTxlYev5jknrMrzKXLFGsqkmhSa2r82f1j/POT06xr9WKXJX75mkF+/uohfvHaIY7P5fjNG0e479wKs+kKdkXidCzHXz58kUpTw2VTuH59K09OJnHZJDa2+3j7lk5OzOfY2hWgO+gi/rw6pt+pMBj18OBogvlMhSuHIrQHnC8ou5imyXdPLr0RQ/iS0HUTzTAZafUyk66QLNT44J4ePnnVAEv5OgcmUvyv+8bZ0ROgM+Di9h1dbOsO0h92o+kGS/k6Xzu6SMClMJ0ss6s/iNMmU6prPD2VplBT+cbRBaqqyvsv7+aj+/p55/Z2PA6Zpm5yfC5LR8BJUzfIV1XmMhU2dfg4vZjnn5+Y4fxSgYvxIn987wVylRe3vRXr6gvarsBKn08kSi96/9XgTR88L+HlsZitEsvWePB8nGvXtRBy2TgTy6MbJlu7gowuFRFFgc98cCe7eoL82+F5vntiiZ6wi6MzWbpDbvojHnb1BleL/b3UVZ3TC3luWB+l3e/g8v4wmUqDu88sM50s8y9Pz9HUDO46vUS5rvGVQ/Ps7Akw3OrFNOEtm9pw22WCbhtjK0VKdZWpZAldN9daLZ6aTKHpBl89ssB7dnQR8byYHu60Sbx9W8eL3td04yXbNX4cUDWdPQNBvA6FiUSJUws55tIVukMuFrI1lnM1rhyKcMPGVs4s5hlfKSEAD1xI4rXLjC4XOXAxRbLY4MhMhqEWL+/d1UVTM/A6ZEZavewdDBNw2TgXyyMKEHTZ+MieXu45u8LNm9t4984u3ralnTOx/NpxeewyH9nTw5OTKSqNF9L4zy8VGF8pcscJayK2yxLyayDMnpjPcX65+KMYvtcFdVXnW8cX136+dl2UsMfOifkchmlSrmvcfWaZSlOjrul4bFa71bbOIE3d4C8emiBZqvPkZApBELlpYyuGad1/1aZVj7xufQvzmQrL+Rrr2rzMpats7w7y3l3d7OsPc3AyjSCYbO4I4HEoHJ/P8dknpvA5ZfxOmVu3ttO72v8IVsak1edgZ0/gh24M8lWrlvpmQdBtY3Onn4EWD6pucDFR5vh8DrddJuCS2dDu58/es4XHxpP88d2j3HEyxlDUy91nl8lVVdr8TrZ3+3hyIk1P2M1bNrTxh3eOEvXauWVLG98/tYRmGHjsCulyg4BT4fRi0cqU2KW1UkW23OT8coGI28ZsqkrEY+djV/bhdci4bDKX9QbXFiqJYp0HzscBKNc10uUXBtU2v4PhqPdFfaCvBm/6tO0lvDxOLeSwKxI+p8xdp5fpDDrZ3OmnoRpcMRQhX/WzlK/xxWdmyZSbfPyKfgQBrhy2GsktMYMZfuOGEQQBvvLMLKIgcHgmy3K+ynUbWrliMMJw1EvYaWffcJhjcznmMxWGW72kyw1+763rcdlkqy63mGNdm48nJ1Jc1hfkmpEoHrvMsWyV7pCVRrvr9BJ9LVZLysf29ZKtNinWVGRRZDZT4bp1L2aJlmoq51cKtHgcLOaqtPkcr1Tw/79GXdX5t8PzfHRf34tqsBs6/DwxkeId2zrY1h2gWG8ylSoT9TlQNYOpdBmbJLK+zYepmyAILOWr/Pr1gzQ1g/tGE7x1cxtgsmcgzH3nVphMlDg+n+XXbxjhTCzP+jYvD40m0E0ThyyyZzDMU5Mp5tJVqg2dqUSG7pCLt2+zJpPFbBXP6mLl927ZwO9+5yy/dO0AfWE3giAgACGXjV+8xiJhtHjttHitxUqloeG2v/w0sLXL/6Zm2ToUiZs2tK793NB0ppJlfu2GYQCcisRtWzvIVBr88T1j7OkPs63LT3+Lh8OzaU4t5vHaRSJeO5s6fXz+qRkqTZ3/cssGHh9Psr0nyHi8SEPVKdQ0fA6FckPDBHb1BjlwMcWVQ2HcdmWNVPXzVw3Q1A2+e2qJrV0iTd18yfu11NCsPtDBF59X8GVajd5IFKoqfWEX69u8LGSrrBRqHLiYQhFE1rd7Ob2Yx6XIbOjw0hN2cf36FoajXu47t4JTlhhqcZOrNvi5Lx3j124YYlOHn++dWmLvYIiljFW/f+B8nMv6QpxdyjMcdfOVQ/N88sp+RNHqLz01n+PEXJYrhyJrfcjP7tprapiBFjd1VcfvfO6a/LDSUU/4tads4dLO8yceb9nUxv7hCG/Z2Mbh2SzfOLZAutzgiiGLHu+yyWTLTVKlBsW6xmymzHdOLHLHiUUWcxXmM1U6Aw7OxvL8w+NTjMfLfPP4Iv0tbpYLda4YjNDQdA5NZ3jgQpyJRJn37OzEZZe5cihCtaljmHDXmSXOx/Jkyk36I25rJWdCyG1DEASuX9+KXZYwTZPRlSL9EQ+CIHB8PssXDs6Sq6p0BZ0v2ThumiZfeHqWhUx1jZTwegXOXKXJXaeX+dl9vS9JXvI7Fa4ZbsEwTJyKRKas8o5tnZyNFQi4FK4dibJ/KMLvf+8cqUqDLV0+dB3+6clZfC4bXQEHuUqTO04s8fF/Pcp3Tyzy7eMLOBUJWYT9wy3YFYmwx0bQbePqdS18+v5xekJu+sIuPHaJDe0+xlYKnJjP8vmnZl6gZLOYrXLNugjz6Sr/+MQMlYaGbppkqs2XZH3efz5OvvpiFahnRRnAqmnPPU8R5s2I4PN6IyVBIPA8UtTewTBRn4PvnrBY4/uHI8iSRLbaBATesqGVT1w1yKf2D3BwMk3Ebaep6Xz/VIyzS3k+88hF2nwOMuUm23sCfP/0Et84usgf33OBhy8kOBfL869Pz3FyPsdsusJ8psJMusw/PzVNqa6+SKXp+airOv0RD09MpIgXrN1SQ7NIMm9WfPP4Ao+OJ1nIVplOWWo8tabGHSdjfPtEjF/YP8CH9nTjVGTuPrPE/7p3nKMzWZw2ic6gg/957wUUWeCDu7stEZATi8ykK9x/Lk5DM6k1dd6/u5uAUyHksrGYrdLqcyCKAg1N5/NPzSAKAls6/ewbfK4N6Fny64Z2H6NLRX7966d4ZjrNExOpVzyn2XSFSkN7TePwpmfb9v3evcx9+ta1//4E4A1jxi1kqthlkUK9id9pw2WTmElVyFebJEsNrhgMM5+p8vePTSKKUNcNQk6rL7HN58DjkJjPVrlmJEpD1bj77Ar/9W0b+dIzc6xr9TKdLuO2y3z8in78ToWmZjCbLtPqc/DoWAJVM7isP0S20qSh6ZxZLHLFYIioz4FpWuIBdVUnX1XXJO50w6Sx2nby78CPhf1ZqKmcXsxTa+pEfTYaqsmWLj+uVWWgc0t5rl/fimmaHJxMcWQ2iyyJFKsNbIrE7du7ODSVpqrqGIZJxGOjxeNgU5ePR8aSvHNbB59/epaP7evjm8cWORcrMNDi4vL+MGcWczwxkebGDa383P5+zseKxPIVynWNHT1B/E6FxVyN7d0BDownSRTrvO+yblyvsKt8KWQrTR6+EF9rOXgJvKnZti+HwzMZdMNkqMXNV4/MU2noDLd6EASRuqoz0urhD75/nsGIm+6wG1mCR0aT/Mp1A+zsDeOxy9RUnVytid+hMB4voes6d59Z4ef2DzCdKrOuzUuL18EjF+LYFZGbNrbx6FiSq4YiTCTLXDPSQqWhMR4vsbXLz/+85wIDERcf2tPHmViezR1+Yrkqw88pI71p2LaPjSfY2O7nbCyPxy7R4nWsse2/+PQsGzt8bGz3UaipHJ7NsrnDz2zaIlgFXDbOLxXY3OHjA7t7+dP7xyjXVbb3BFnX6uXUQo4P7e7hyck0+4YieOwyf/XwRZKlGrWmwTt3dGKaEPE4aPM7UHUdVTfJV1U6Ak7uPL20tjv97slFOvxOKk2NnT2hFyyuXgr3nl1mT3+YiHetfPSTK5Jw5acfo+/37qXzhzA0L+HF6Am7ODiVplTTqDV1vvT0LH9y3xipUoMbN0TpDLo4uZCjUFd5+7YOIi4bpbqKaZrYZZGOgIO6anLdOqtHajjq5Z4zy8iiwG3b2vnklf38yrVD+J0KharK/3n4ItPJCj6HRR1v8zvRDZNSXePCconTi9m1lKAgWLui7xyPIUuWEhGAJApWylfT+V/3XuDRC4k13dIjMxnOLOZf8lxrTZ35zI93N+SySSxkKnQFndgkiZFWD3//+CRL+Ro2WeT69VbqUBAEzi+XqKsG27t87B+JEMvWSJXq1DWDFo+dyWSZWL6GKcDdZ5bRdIM/umeU7x5fxC6J+BwKH97bQ6as0uV3sqM7yKffs4WbN7UxnaxwciHH6YU88WKDp6fSfPaJKZ6cSNFQDf7xiWkURVgLnIli/UVN9/FC/YeSgEJu28sFzp84PCutuJit8uhYgkpN5b/fNcrx+Ry/ffMIR2ayZEp1ppIlvnMixm/cMITXKeO2S1SbBjdtitIb8fL1YwtMp8scnEpTaxroJtx9ZokTCwU8DoW/e3ySiUSJs7ECx+YyPHwhyd6BCCG3ncGoh6V8jc0dPsp1lbtOL1ls8kKd/UMR3rrZIncpkogsCc8PnG8aFOsqE/EyIbcNWRIIuex85dA827sDDEU9rGv3MtDi5shslr9+ZJKgS6En5OLEfI5spcl8psxCpkqhrvHoWIKQQ6GhGYQ9NjwOmV19If7ykUl001IhKtdVxldKbGkPIAkCf3LvOE9MpFjKV1EkAUkUCboUSg1rPIMu25qW9k0b29gzEOaGDW34nQqTqyIfPwyyJOJ5DVKi8CYOns+ybJ9tT+kMOOn7vXu58tOPvcFH9ubBRKLEkZnMC957z64udvWFMEyr+Xp3X4C/eXSCd/zd0/zB987T5rOv6q2KXD0SZV2bj939YYIeG5Io8bN7ehhdLvIPB6bxOmQuxkv8ynXDNDSDbx5bYCZd5vBMmk988QgBh8xkokgsV+Xmze1cuz5Krtpka1eAd+3oQBJEXIrIUq6GqpmcieXZNxQi7LbxtSMLL0iT2GWJK4ci7OgN0rZKM9/RE2Rjx0unZ2uqTqL44xWSVySR27Z20Oq143cq1FQdTKt15Xe/c4avH53n0HSGyUSJT1zZx/Xro5xdLvHQaIq9A2H+8qEJYrkqE8kS79vVRdTrYD5d4XsnFzm1kGU6WeYDe3p5YHSFB0ZXaGoGkggPjSXojbgYXSoymSpxfD7D27a08Zs3jvBr1w/T4nEQ9Tj41euGEASTnrCL9a0+9FVSVbWpU22+UAR7dLlAqf7a0lQ/iSjWVR4atZSYvnV8kaVchUJdZaTVi9sucyZW4PL+ENeuj669d3oxzzPTGSRMZpJl9g5GeHoqzQd39zCbrpApN5hNlTk6m8EmC7x7RyfXro/y32/bbMnyZSr0hFyIgtVjWm6oBJwy3SEnYY+du88uU6g2QYCZdIXrN7RimZTA9u7AG1pfvuNE7IcaNPgcCrdsaSNbaZCrqDQMfXU+yPDf7xplNlXhwMUUb9vSzi2b27h+XQvZapObN7dx7booqZLKrVvbSRVqPHghTtOw7ss2n5P5dIVMqYEE1Bsad51e4vBshh29FqHK51Jo89kZCLvoDFjyl4dnMkynKqspYUvJ656zy1SbGl6Hsibiohkmiz/ESOBZ3Lyp7TW3vb1pg+cP4unfu/5Sy8oPoCfkYlOn1avX0HQWMtYNohsmuUqTM7ECVdWgL+zmF6/u56rhCJoBiihyYi6H0y6zf7iFdLnOPz8xzTeOLPDghTjVpoosiThkie09Ac7GcvzB989zeDrDN48t8vBogvfu6uLUYoGGbpAqN0iXG3z18BzfPh5jfKVIsa7z/su7aRpgk0VETA7PpDk0ncUw4WNX9L2IqHLtuight42npzPkq821lfhLIeS2/d/oVf67EXTbiHjtqz1oDn79hmG2dPl4144uEoU6QZfMqYUcv/GNk8iSwGDEQ0PTyVeb/PbNIzRUnWNzWR4cjRN02ZAkgYjHwZHZHFs6/aRLDfojHm5YF6Xa0OgOOXHZJL53apl8rcnESolKXeefnpzhzx+8yCe+eJSOgANZEtBMq7Vod3+IbLnJb3/r9GpNzU1/xP2C87hhQ+tLprIams6BH+IE8hMJ02QiXiRZrDMQceN2KMykK/hdCk5F5J+fmOFsLI8iiYgimIbJheUCgy1uDkwkCXkUNrb7uP/8CrOpErdt7eCXrx3inTs72d0bBlPkX56e5W1b2qmqGtu6/LR47Dw1kaYr6GQ5X+Orhxd4YiJFuWEtYDoDLvava2GkxcvJ+SwLmQpfPTL/okxKQ9N/7PPdrVvb18hkL4VYrsr3Ti3RF3GxuSPAf7llA03NIOiS+cWrB7lhQxuzmQr9LW7+8O4x/vT+Mb52eIGjMxlu2NhCLF9lLFHG57QRdDv4n7dvZjFb5cmJFF94eo7NXT7uORfHaZMZXymRKNQ4u1Tgxg1tdAXdPDaR4thsmlSpyVs2tnI2lme41YMiSZxezPPRfb0vKAGdXMhRbWqsa7MW4T9Klv5PLNv2WfEE4D+sgMKzK6XpVHlNwaMn7OJrRxbwO2X+v9s2cmohR3fQRamuMZVKc/36KAsZG/Fijcl4ifF4wepJRGBnX4D5dJWJlTIfuLyHgEvm7rNxZFEgnq/R0AxCLpsV2CSR7qCT913WhSxKHBhPMpUqs70nwMVEid6wC90wmU9XqGsGTkXCpShIq+nbvh+YzJ+PwRb3i2qghmHyyFiCGza0vir92x8V7jqzzI0bomvHE8tZzNaRVi+SKCBLMkfnsgRcCk6bzNNTaZbzdQzTWsScXMjSVA3uO7/CSqHOvsEIlYbG+aUCpabK+tXWlA0dfpZzVX7xmkHuObfC8dksW7oChN02Blsc7O4P4XMq/O2jk/z8VQN89okpPrq3F7sicHQ2z7pWL4WqSqluubN4nQoOWeThCwlu2dzGhZUimzqs3kdLOOGlFyWyKNLud/LMdJrOgPMF7RVvNjx+Mcne/jBO23M7hoOTaVq8NiaTZW7b2oFhwtauAI9fTJIsNugNuRGApyfT7OoJ8uRUknJDxmWT6Am6mU2V6Q66eOvWDv7LHWdp9zs5NJ3h56/qp66anFrI0RFwEHTZOTiVpK5pgMDfPTZpCQgYBg5F4r07OhiNl1FEgbMxS8RiYPWe97sUvn9ymeVCjQ/t6cHrkAm4FNw/cM+X6xqzqcqPtXT1SruvZ9PQvtUWmuFWi0Vrl0V+61un6Q+7ECWJQqWJ2y7RHfTjsissZKss5Wpcv7EV04C3bmrl344sYJPh8EyWoNOG2y5xz9llPrC7my89M8stW9r45tEk772sG9M0+Z1b1vHkRJL7zseJ+pz0hV0Mtnhp9dk5PJOhWNdYytfpXlU4ixdq2GWRhmowES/RGXDy0IUEw60eIm47siS8ItP85fATGzyfTeuCRSr6j4zZdIUWrzXBPnIhQaJYp9XrZ7jVS3vAzu985xwf39eHHC/yFw9d5FevG6I72MHDY3GWslUcisTbtrQSdDn4znwM1TA4PAd7B8J0BpzMZyps7PRSqasYGHz/9DK3bm1nIOLG51AQEFgu1Ih67ZxeyNEXcnPXmSWKNY1ksc7/eOcWfE6F/3qrj3ih/rIen6ZprsmkPR+qYdATcjGbtiTunhX8fr2xd9W78FmMLhe4/1ycP7p9M4IgkCzVaWom+waCq6pOIu/Z1c23ji/iUiR29vj5q4spdvQEuH17J/ecXeby/ghnYzkEEx4fT1Goa2zu8BFw2/jW8UUcsoSqG4iCyZGZLJWGTlfITYvXzk0bW/ncU9O8a0cnDd3knrPLbO8JcmGlSLbS5MxinrDXzvXrW/mT92yl3NDQDJOnJtM4FQmHInEmlue2rR1Um9oLFil1VUcWBda1eclX7S85kU4lSwxF3xz1OEuS8oULqc6gkw6/Yy3o338+TlfQSbxY4+RCFk03+fUbRnDaJEIuG8MtPor1Jn941yj/+JGd/O8Hx2nxKjw1meTWrW34nHbOLOYRRIHzsTw/c3k3//r0LE3VANFa6NlkiWKtyWDUzdHZHG/f2sFXjy4yFPXgdyrYZYm7zqywvt2P36kQ9dq5eXMbXUEXEY8NE+gLu59PVqHc0Ai5bVw59NJylm8UJFFgQ7uP+UyFB87H2drlpzfs4m1b2hldKTCZKvPtX7qSX/zyMeyKSIvHxleOLrKjK8BAxMPR2SwzqQqaYeB3KZxZLJCvqficNq4eaqG/1YWumQxEPCxmauzqC3FxpcT+kQjnYgXG42WuHIpwejHH1SMta6L7w61espXmapYmxvlYgajPwS9eY/UAtfodTCVL7B+OrKXm3TaJ4VYv5brKp+8f4xNX9pMsNdnW5X9VRLufuOD5bO3z+aux57/3H20HupitsqHdtzYe16xroanrbOjw8k9PTnMulucd29qZyVTYP9JCttrg0bEkk8kyTlnkHTu6ODaXZSxeor9F59qRKAjwts0dbOr08Y2jC4Q91kT65ESKXl3gMx/Yzr8cnKWhGiQKdYajHkbafKQKNWbTFZyyhCDAUr7OH79rMwjw9FSaje2+VbUQnZVCDVkUuf/8iiUMsKp5e2AiRavXQdCtEPHYMUwTRRQ5OZ/HY5cJeWyvSR3n34voD8h83bShjasGW3A7ZMbjRVw2iaGohxPzOcoNjaYu8plHJ7n/3DKHplJs7vJzeW+QK4dbCLptvGN7B/94YIbJZImekIPr10fRNJ1vnlhib3+IPQMh/uXgHHv6w3QFnMxlqlzWF+SpSYtuv5ir8XP7+3l6KsPt2zuRpQ7+/P5xPrKnl+6wiw6/k0JDxaWILKwujFp9Cr9y3dDaOYiipa9715ll3n9599rq++R8joDLxkir54e6Vnz+qVk+/Z6tr+OIv3q81AIqW2kS9drXzul9u7poaAaZcgPdMBmOuvmbRye5eVMrx+dzfPTKXr78zBy/f9swd51ewW2T+NDlvUwlK3z39BKX9waI5Wrka03KDYPPPTnDO7Z3omk6ugE7+oJ88+giiVKdT+0f4PrVFq7D02lU3eC69a2sFBr0uG34nQp/+dBFtnb5uXHVpOFZ3LKlfe3/Ty7kuLhS4oaNUc4sFrhpYytvNlSbOpf1BTizmOfKoQgXE2VGol4mU2Vm0yVu2dzGpx8YZz7tYG9fkFxNoyfiZnS5wO6BAPedS6CIAlGPjeVclXOxPLX1Uc7G8gQ8Cpu7Amzp8iNh8o9PzjCbLHPVcJTFfJWeoIvlXJVvHlvgU1c/1yD7rJXbNSMtxLJVfv6qfg5OpukIOBho8ZCrqmvP8/Mt/aZTFa5ZF6Uv4qGpl161Lu5PXPB8qeD47Hs/7TtQTTdIl5trbR7PwjAt02S/S0HVDbZ0+UkWm6xr9XDHiRiffXyKnT1BHji3Qshj4/KeEKNLBbKVJulynYDLhojJPadX2NYdoFBTeWoywVi8iG5YdPAD40ncdomgW+FiosyOHj8hl53HxpI8Mpbgd966AbdDptXr4HfetgFJgM89OUvAaePkfI4T81kGWtzceWaJakMj7Laxrs1HttJgsOW5iWOoxUOrz84z0xnsXRKnFnL0RdzPd/R4QyGKAi67xGyqRKmqEnDaGE0U8DsV9g6EaWgabX4HbkXk2HyOd+/o4q4zy/zRXef5mct6UA0TRYKwW2Fspcz+kVaOzGTIVpp0hVx47Ao7e4OMrhSYTpWoNA3+9eAMl/eHWcpVmIgXefD8imX1tLuXdr+T7rCLTLWB320j6LIxk6nw149OEPU66I94uBgv0R1yEXAqCALce2aZXK3JrVs6XpC2erY3+FvHFrluffRFtS+PXX7TBM5n8fjFJEMtnjVtUoci8rmnZtjZE2A+XeHB0QSdASelpsZw1Mv6Ni8Hp7KcXcpRbRqcjxV4aCyJXZGYSpRwKDL5WhOvU+a/3bqebx2L0Rt2I+egLyJTrGl8/1QMj03Gpkhcsz7Kz13Vx8NjSda3+sivMnlPzmXwu+zctrWT31p1tqnUNRzPM8E2DBNRFHjgfJzL+4K4bDKKJHBgPMmn9g9gmLBv4M1jmJ2rNDg4leayvhAPX4gTdClkyk3+9tEJ6ppBd9BF0G3nd759hh09AXqCLgIuG8NtXs4v53lmKs2O3gAPnIsjY7KUq6EIkC412dLlJ+p10OZzkK9pRL3WwvnCcpHRWIHekNVa5LZJ/PO5Gf7Pz2wj5LJRV3V0w1y7j798aI737uriw3t6yVSbtAccTCdLdASceB0ylYa2JqagagZ3nlnmPTs7EYQAwGvqH/+JC57/kVGqaxZR5XnBszvkIlmqc2gmzfXrW/m3w/PYJJFCTWNjq4eBsIuZdJl4sU62pjIUdXPn2SUCboWhNg/luo5bEamqBm/d3MapxTypUoOwS8GlKFatLl/H71aYz1ir7WvWRTkxX6Av7OL/e8cmvnJoDgPwOxRkWeTzT07jsSurvVgmy8U6t23roN3v5Ib1rTw1meLMUgFVN3HZFDTdIFWsU27ozGUrZCtNesNukqU6PSHXjy1F+2px37mV1d5XD6Io8P9cN0zYbaOpGXz+4AyVhs7XDs+zvdvPyYU8R2ctIfZzS3nsisByvkHQrbCjO4DbJpKpqly3roW7z66w3FunO+gELBGG75yMce1QC+Wmxh0nl8iWm4zHi3hsEt88vojbJvKBy3vY1h3g809Nc/v2Tt65oxOPTUIURTTdQDNMZtMVvjW6QrpsOfD8wjUb1s7n4GT6BR6J793VxZHZLIlinc2dLxSPN03zVRtn/ziwsyeIa7XmeXgmw66eAKZpMpMqc3IxT8ClUFU1LusNsrkzwJZOP4Ig8PcHprl9WxvTySI3b4yykKmwUqjjdSr89SNTFOsq61q9bO/28/CFFG67hJqvsz7qY7hFJlWuUWqoHLiY5JqRKKNLBe6xL/OxfX18bF83mCYRn42np9KU6ioht40/f2CcPYNhjs/naPc7Obdk7do6Aw4CLhtfP7rAu3Z08ovXDJIuNbj33DLtz3Mw+nHCNE3LEi/iZipZXtWgjrGl00fQZaPD7+T0Yp6+iIsNbT4WcjXeuqmN759ewmmTUXWTVKVByG3jwnKRozN5Nnf6uPvMMrpu0BN2E3DbuX17OwG3nSsHW/jbxyYYXSkyk6owulzAa1eoNFSahkm81CBdqrOQsTJt+YrK3WdW2DcYptLQ2NDuI1dpEs/XOTiZZqTVQ7Zi2ZGdWMizocOP2yavWfgBVFWNTLnxf30/XwqeP0EIum3csOHFKZxKXcelyJyYz7K9O8hlvQFOLxaYTBT48N5ekuUGh6azbHTamElVibhsFBsqnX4nByfTtPocpCt1Nnd2sq7Nx3dPLnBwOkNTN7FJIj+3v58jsxkmkhV+95YNnF7MMdLq5nyswO98+zR2m8z+kRYaqtXDaDWM93PFUJi/e3ySkMtGuaHzuSdn+Oi+XuLFOnv7w9y0sY35rGUenCrXWczU+MDubh66kMBtl8iWmxyfz76g503VDWRReEMm8Lqq85lHJ7h6uIW3bm6j1Wfn0bEkz0ym2TcU5sR8jslEmUpd5cqhMFePRKk0rFW0YJokS3WSxQZXjbSwszvAZx6dwmmT0HUDSbJ6aaeSZU7N53DaZHJo/OGtm/ingzMkyg1cNolfvnaAEwt59g9FeHo6wwPns7xzWyc2SeD8UpGfu2oQmyzSUHVKlYa1U7ZZqkQRjx3dsAS6HxtPsKc/zNHZ7Cpj8TlikCgK7OwNvGR6PFl69Y4VPw48X/v14QtxME0GWjz80d0X+PxHLydVajCVKvLwhSSyJFCqWy4a+wdDxAsNNMPg/vNxol47mmHS1Aycikibz0uLRwFEPnFVLw+cW2HfUBulmsb55RzVJty2pZ2ZdIV7zi3zs3t7KdV15jJVCjUNWRJRVYO6pjGTKiMIHv7TW9aRqzYxTEtwI19rcmI+x9lYnq8cmufT79m6Zll2fqlAe8BJ1PPGjLVpQqbSpD9i1ZX7wl7eu7OTy1ZNqQ9OpYh47JxbzJMuN6k0NGK5OiNtPq4aCjG2XOTdO7t45EIcj13GZxdZ3+pjKlnipo2t1FSdiytF/v6xKbpCLnZ2B1nO1xhs8fKWja0cms5aRDynQlfQScAh8vRkkR3dQd6xo53ZTIUd3QH+9elZ/sftm5lMlPnWsQUurBR4364uTAQSxTpv3dzGrt7QC0iG2UqTeKHOZLKEXRapNjVyVRV1tef09GKe/avypS+HN1Xw/EEG7SW8OozFizw5YaV6Vgp1CjWVR8biHJrO8ls3DjMZL/G+XR18/egi/RE3ewaCfPbxaR48v8JbNrUymawwk6rwN49c5MqhFmKZKi1eO4NRN8/MZogX6gy3eBlbLvGrXztOyO3go1f0omkmI+1ezszn+OaxBfYPWzq2ewdD9Efc5CoqhUoTj00kUazhtInkq01+Yf8AB6fSOG0STkXiW8cX+e23rEMYsW7wmze1MbZSoNXv4EN7etfst1Td4ItPz2Ka8Mmr+nliwuqf/Pcw5l4OumEiiQJTyTLxgmURdt26KMNRL50BF+eXrWO888wy6UpjlWXsZF1rlLvOLFOsq3znxCJbOvzECg3WtXoIuRRi2Zr13YLJeLxE1Gfn8bEkyWITpw0WcnU2tPr4+L5eDs6kqdabeGwSv3/bVh4ft+rVWzoD9Ld4aPc5qOsGD48luWVzG/eeW8bvVEiVGlyMl1jf7qMnaGUntncHufvMMk3dYP9wBEkUuHIowkirh7D7uRTtIxcSXNYXfMm655spcP4gfuPGEY7PZqk1df7uQzvwuxQOz6TJVJqs5Kuci+Vo81vtIwvZGuta3ZQbGrIocM1ImIvxCpPJMi0eOyGPHb9L4ehshvvON4h4HGiGSabSpFAz+NT+Xv7xwCwum8R7L+tmIVcjW6ojipYWcLmh4lDshFx2NnZY+tKbOwOMLhWYz1b5pWuH2N7lZz5bwWOXUWTWAqeqGwiCwLt2dL1hsoiiKHDNiCVDmSk32djuY++qFF65ofGRvX3ce3YZHYEP7unBLgnccWqZlXyNhUyF4/M5/uC2DQScCifm89glePBCHJsIU6kyqXKT43NZrhwMc3Ihz78cnGU5X0MUBTKVBrlKA1kSuH17Owcm0siixG/eMMLh2RyX94QRBIHPPjHFz1zWzRcOzlCoaWxq97G508e/PDPH3oEQ/avazifns+zsCb4ggGYqDQIuhcEWD+diBcIeG4+NJwl7bNy65cVmFC+FN1XwfD6D9hJeiPlMhbGVIm/d3P6if3vblnY6Ak5i+TpdQSd/9fAkimSJVv/d41MsZqqcWy5QaWj0Bl0cnslSqKp0hZ185dACnUEHQZeN3rDbcl5HIOCQmUpU2dzh48R8DkGwvi9erBP12ijXVEZXSgy3ekhVm2ztDJApNxhbLuB1SDxyIUF/i4eNnT4mkxU+2mfVLP/ioXF+5bohbLJAvtrkrx6Z4OaNbQiCwIOjcTZ1+Dg4mWYqVebtWzuoqzqxXI2bN7WhSOIaA1iWRIaj3tfNz3M+U+H8UpFbt7bTE3LRvpoq390f5uxins8fnOETV/Tz5MUGUZ8NwzRx2yQkQaBQU/E5FKaSZfxOG/m6imkaDEU9/Oszs6yLejmzkMUwDBLFGqlSDVkyiRerlGvamg/lodksZxcKuBwKPqfMH905SixvCezbZYnHxpLctq2NM4sFRlo9aIZJp9+Jz6mwrcvPvoEIXz08R6nWZKDFQ8itsKXLz2DUTWfgOUZz5/PYzc+6iBRqz2nhxnJVHr6Q4CN7e9+0AvETiRL5qsr6dh+5aoPTsQq3b+9EFAUuLBcxdBNN03HbZNp9Tjr8Tsqqjl2HoaiNUsOyXdMNy57s+FwaSRToC7vx2BR29QaIZcqcXsgT9Ts4Pp9j72CIE/M53DaB+84nkEWRhmaQrzaZildoRkx++dohLiwXGVsp8t2TMYo1S8M5U2lwbjFPVTVoqDqxfJWN7X7ssrWgfJZF/HItXT8OCMJzRJzpVInvnlxia5efnpCLXb0hHji/wndOxHjbljamk2UqDY2rhyOkyw3+7rEpNnUEuHlTG4W6ypGZDGUD4vkqy4U661s9nFy1KPzuyRgbO7zUmhqYJueXirxtSxsHp9JcXCmwmKnQ1A32DIT49APjRDw27LLEzp4gAIem08RLdT60twfDhOtGosiy1UK0kK2xsyfIxXiJnpCLkNvGoWnLs3h7V5CnppKYwPXrWzk5n33VY/PmfBIu4UXoCbm4bv0L3Ua+emSealOj0tC4sFykqekki3U+tKcHl01CFK20645uP25F5OrhCCdjOe47t4xmGiSKDbZ3BxiMeukLu4hlq4y0evDbJSaSFTLVOrIksavLT7Gu0VgVCz+1kOfbJ2K8//Iu6poJpkCb18GF5QLPzGQIuG0MtLg4HytQaxr82vXDBN02fE6FKwZb+MLTc9x/No4kCGxs9xJyK5imSX/EzWcfn+aKwTC/dt0w27oDbOrwc/OmNoxV4QdZElFkS4e0J+x63Xo+e8NubtlsMSJtsojLJvEXD17kiYkkJxdy9IZcTCUtN5W3bWmn1tRp9dl5YiLFt48vkSo3sCvWCtdrkxiIePjSoTk2tvnpDlnN+popYJMl7IrMWza0s6XTx0f2dlPVrJaR6WQJuwQ7ugKEPQ72DATZ2RPgP980QqrYoCvo4C8fnGA+W+GKoQjFmsYTEyn+4qGLPDOVwW2XKNRVekJuYvk6siQyFPXgcyhr6kPP4rHxBBfjJZ6cSHExUeILT8+tyfcVaiq7+0Jv2sBprLbidAacVBoaS7k6b9/awf3nVhAFgU9dPUDQY8PnchDLVXn79jbsikitrtLus/GBy3o4PptlOlVhV18QzYQ2n4OuoFXva6gah6bSSJKIIAjEsnWuGWlF102ShRr//OQc8XydnV1+Sk2diXiJ37xpiP/8lhGcioTPqRByKzgVge6gk4Vslb9+eIKTC5YwxpVDEUaiXhazVe46s0y1qbNjNSiob7CPqiAIbF6tE1caluCGuNqitb7Ny1s2tfEr1w5RUw02dnhZ3+Hl344sMJuydvCbO71MJ8v47DK7+8P0tTjI1XSGo25OLxXIVVV6gi40w+DsYp4nLqZZyFR5184OxlbKPDGRxjBMyk2NmWSJeKHK7oEglabOx6/sI11usJit8vhYkojHRshl54N7enE7rPrm1SMRfumafiRR4N6zy2tCFB+/oo8tnQGmUiVu3NBGZ8CJ36lgwsu20j0fb6qd5yX8cAiC8IJiN8A7t3eu9em9c0cHy/ka955dplTXWMhVrcAiwHSmSsitcMfJZfb0BlhUZHb3hZhMlphIlOkJOxmPl/HaBR68kEQQYFOHl1xV5WK8yLLfSYvHzlSyjCwJKLLIfKbKZx6Z4CN7+/jQnh5WCjXcdoW/fN82/vi+C1SbBu/Z0clHr+hjpVDnodE4b9nUxq1b27lpYyuKJLCYrVFpaPzJfeP897dvZEdPkP926wZi+RrL8eJa+wpAttrkmak0t27tQBIFvn5kniuGIq9rE7/4vMBcVw1u3BBlJV/l6GzW6mHz2lnM1SjVNW7e3Mr95xLUGiouh43FTIVStWkx+1brjj67zFK+SkPTEE2DakPHbZfY3RfivtEE/REXz0znGAy7SJYaLGSrpEtNFLlCpaHznh0dJEvWjtDjrNPIGpgCvG9XN4+NJekMOugMOgk4FRq6zm998zSqbjAY9XBkLsux2QwjbT5OLeSZTJb48Kp3q9+psH+4BUmwejzBkrWTJZHxeJGI207U98NVZ95oiKLAz13Vj2GYxHJVDk2n+LtHJ3E7ZP7hI7v460cmOLGQ5yuf2MNdZ5f5xrEY1Ya1GDw8m8frkJFEiPps7OgKMracZ7mgsqsnQFoRydYaqCUTh02iuioU8qf3jWGXRVTdxOOQGPC5KatWvTRTarBSqPO9UyvIEkiiyBWDYd66uYOBFg/nlwrs7g+RKtWZSJRWDaZ9lBoq3z2xyNNTaT7zgR0okki1oeN3vfGLFsMwOTaX42P7eslUGnztyCIr+SpNTef4fJ6f2WWRmnwOmXVtHubTVSIeG//y1By1pspEssimdj/zmQYdfoFsRcStSOzqCXBuqUitqbOtO8DYcoFcpcHx+TwOWWRTm5d0RSVfU0mVm/z94zPcvLGVHb0h8pUmBy4m8btt/NpNw3zh4Bwexwtt3MZXyty4sZVSXeUXrhnELomrxg5WJilfVREEcNtlYrkqAZeNg1MpfuayV9Z2fuOvyiX8X+PZWt8XDs5iGCZPT6b5xtFFlnI1om4bbkUiX2nSF3Gh6QYBl0zDsGyv4sUaqVITn0siW1aRBJN2vwsBk2K1yWy6QixfpzPoolhtYpcFNrV7aagamzq8bGiz+qYWshX+5eAsbT4n+4dbsNkk3rurm3WtXtr8Tv72sUkGW9xru+ZUqcFj4wk+9eXjjK0U6Aw4qDY0OgNOBMESM+8Nu9jS6Wd8pchc2rI8injseBzy2srx8v4Qy/n6Sw/MjxgzqTK/9G/HsSsSQ60+tnX7GY66WcjW6Am62NMf4gsH54m4bVw2EGY5X0PVTRbydXb1+LFLEk9PZWjqUKo1qasGfo8Th00kXWryxEQKpyywucPP+3Z1MZEsW6Sg4QjtAQf7BkNcPRTiI1f00lR1PvfUDG/d3I5hwo0bo3z35BI+u8JEoszocoGzSwXsksw7trXzV+/fzteOLNBQdVKlJn/72AT3nl3hhvVRbJLI4xeTlBraqjydtViwhB+sHU++qvLkVIpCTX25IXpToKrqfOnQHLOpKtt6/PzzRy+jrhqWv2qrZcp84GKSttWFgE2SEAWTMzFrgTCVrPK5g9OWEbYiMpuuUNVAEiRu3tRGsa6zqc3NYNSNJIDXIbOhw0eupiKLAsWayoHxJBPJModns9y+vZ2f3dfH7v4Qt2xp57K+EJOJMl1BFyGXjc88OkWqWMdjl/nSoVlcisQtW9r5TzeNsJKvMZEo8d1TsTdmLJsaF+OWmLpumNx9dpmf2dXFVw7PY18VhZhJlclWNAajHsYSRSYSZQ7P5CxjCs1kOl0h7FHwOGSiXjvpSpNP7e9lY4eP2UwV04BDM1nqmrWQmU5VuGZ9FEWWcSkih6ezSKLA1z61l9+5eYR2v5Mrh0IoMjw1ZdX+rxyKYJdENnX4+c83jVBtavz2t89wMW6Zt//M5d0cnc1wYDzF4ekMd59Z4te/cZJzsQKmaRJwWSIWz0ynCbksKcZrR17sJ/xSuLTz/CnAFYMhzsbyZKtNPnFlH4lSnXi+hk2W6A67cMoSutOg1NCYSBTxOxRGl0u0B+z86nUj/OvTszjtbjqDLgp1jVJD44qBMPePJijVVGqqgSwJjK6UaA+4AIGmbuCxS5yO5dF1kycnUrjsMk1N5x3bOpnPVBiPF/G7FEaXC2zuDPBPT04zEHEzm66wvctPvalTauj8wjWDOO0yByfTXDUc4SuH5rl9ewcz6QqPXEiwZyDE+y/v4fr1rYwuF3h8PMl166MMRWGlUKPd//qRy0zTsjy6fl2UnpCTM4sF9g6E+cyjk3x4bw99YQ99IRdLuRrLq7vSfLXJnv4g1abBgYkUugk9ISfZqopuyhSqTS7vCzEccXH/6AotHge5qsqZxTw6JsOtHrLlOneciNHUodVrZyJR4muHF8lWG5yL6fzTE1N47BJPTKRoDzhw2SXOxvK8bbXZXhCg2jRo8TrY0uXHrUiMrRTZ3RdhY4cXt10hXWmgSCJ2SeTMYp52v4NCzVqJi4JAxGNn70CYvTyXAYgX6i/qM36z4K7TS+xabV2ZTJZ5fDyJbhgcm8syl60wkypzxVCY43OWoMWe/iCJUo2RVi/5epPLev0s5Cz7KwHQDZ2ASybqd9IecDKTqlBqGMznyvS3uDg5n2Mw6qVS1zANk8v7QrT57Hzj2CJOWWQ+W0WSRG7f3kmm0qCh6jhtEt85sUit2Ub/quXZd04sIomWt+3P7x9EN0zrOXXa1kwSftzQDJNK0zIO0A2TrV1W6vb0Yp5Wn518VWUo6uHKoQiCIPBn918kUaohAYZpEPFYBL9EsY6Eic9pOTj9zaMzBF0KH97Tw8V4kZl0jb6wC7cNHHYbIbeNc4t5Tsxl+cSVvXznRIw/uvs8yWKdalNnuVDj7Vs7+fDePoo1nYDLxqYOP185NM8HdndTmtXY0O4hU2mi6QYTiTJHZrJs6vQRddiJeGx8aHcvvWEnTd3gTCxPd8jFbVs7eGw8Qabc4H2vYtcJP2XB8z+i0lBd1ak0dO44ucRv3DjMXaeXeGoyQ4ffTqrU5Nbt7Xz/5DLTyTItXhu5SpNiTaUjaMcuy0wly8ykK7gUkYmVEhGvDUPXuevMMqoO1YbO3sEQK/k6DkUk7LaRKNQp1lVu3tRGwKlwZD7LI2OWc8W166N87eg8WzoDfPdkjF29oTX3jndu78BjV7is13J9+ZenZ1EE6PA7qTZ0OoNWEBxu9dDUTd62pZ3pZImgU6bc0LBJIsfmVgXUyw0iHjstnh9dOvH8kuU08qwgw0qhxqHpDLdt7eDBC3G+eWyRD+/tRRIEfv6qAaI+O3eeWmJHt597z8VxyALroh50zUCWJEzBxDQFKvUmTdUg4lGoNzWqqsFjYwnsioRbsfwhN3V4OXAxgyJD1GtnOdegJ+LkV6/s4zsnl0iVGtgVkajXid+lsJKr0eJzsJitcsvmNh4dT9ARsPPNYzE+/7HLKNVULiaKxIs1HLLII2MJ3rWjCx2TFq+DO07E2NEdAEz+6O5R2nxObtwY5QsH5/j5/f2sb7fSt09Npri8L7RGzHIob75kVbxQ58JKAaci8djFJJs7fHi6A8xnKjQ1kw3tXpZzVbZ3+3lsPIldFqlrBrPpKpqm09Q1FlJlUhUdl02gK+Cgrpn0hD0kC1UW0hUWM1WqTZVKXectm6PMpauUGgbnl/Js6wqyZzDMkxMpHKs1zlafw7LPytWsACIKJAp19gyE+aVrBjk2l2G41cOWTj9TKYuYN7dq7DCZKHHHiSX+220bX1ak/fWEz6GskXGOzGawraaQN7R5eOB8nG1dfrwOhW8djyEIUG6qXDUQZCnfpCfsIldrcn6piGCYVAzIV1QiHoVkSUU3TO44FaPaNMA08Tkknpou4lQkAk4bqmYw0OJddQISmEyU6Q07yVVUfA4bv3D1IN87HePYfI7N7X7afHYams7ESpF0pUHQqZAo1rn33Apz6Qrv2N7Blk4/K4U6YbeN759ZolBzE1Ukrh5p4XunYrxrRxd7+sOvSb3sTWWG/aMyvH6DjbN/bMa1hmHy6fvH+MDl3ZxfZfR1+B0s5etkq3UuxsuE3XaOzWXo8DsJe2yrxXeDKwdC1FSdJybTCKbBUq5BwCPT4nVikwUk0+DMUpkN7V5u2BDl+6eW2Nzlp1LXEEUBWbDSfFPJEivFOteMtLCjM0Ci3CDkVji7WGR9h598pcHhuQyf/dAu+lfFDsbjRb56ZIHr14W5+0yc5VVPQ1U3uWFDlI0dfi4sFxEEiyhV13QOTVtydGAJ4Yfdlon3XLpCX8T9IzFnVnUDwzRfUFseXSow0uZFAL5xbIGtXc812n/50BymYXB4NkOq1OTmTVEeHE0Sy1bQdEsm7MJKge6wE0WUuH5DlMfHkzw0mmB7j5/lQp1aQ8UmKwy1eHl6Ok3ILaPpJpf3h0mX6+zoCfDYWJJKQ+fP37eFLzwzz0q+ht9pYzDi4WKiSLmhcdvWDj66r490pcHnn5olVayTr6ls7vTzsSv6eGYqw+V9QWL5Gppu7W7vObtCxG0n6JKJeO3sGYjQ0HRkUVwjYl2Mlxhscf+gZNmbygxb1Q1KdUsL9shMhsfGEsxlq4xEvdhlgcOzWa4diVBTTeyKSKffzj8/NWsxy3WDvoiLqUSZZFnFqUBDg5FWD7Iospyv4HPZyFUalOoGfWEnW7oCxLI1htrcVBsao8sldnUHOTqf5fK+kOXZ6rVRa+hs7wnhsokcnslQbVrN/KcXcuimwF9/YAd/8+gkfqfCzZvaeGQswSev7EcQ4NGxBKcW8ty0sZXtPcE3zAy7VFd54HycQrXJXKbCdKrCjm4/HrvC/pEW7jod46nJNB6bTG+Lh0pDZTjq4chslvOxPA5FRABcNhm7IjGfrdEVsHN5f5j7zq1QV00GIk7SFZWekIuqqtEfchP2OvDYZc4s5kAQ2NHtx+eUuRiv4JBFFvI13rezi2SxzjMzWT5+RR9H57LsGwijmybZcp0HRxNc1hviLZta6Qq5+erheTTDoDPgoi/iJl1ucNVQhEfHEvhdtjXlp1W84pj/VO08/6OgoelMJsps7vSzb9CihR+ZyeJ1SORrKps6/Twz1aTV78Rvk1BkieV8laamsVxosn84wpePzONQJGoNDYcCCFCsaSjUQRIZjLrpj7h4984u7j23Qr6qcmaxQMBloyNgp1bTqBsmCNAddCMKIl86vIAkmER9FnFlqMXNmKZilwRSqypI/REPI61e9g2E6Ax4uHlTOwhWO8RKusLJhTwRr52JRJG5dIUtXX7WtfnWAmelodEfdq/V536UVP6XYpMWaiqabuK0SVy/vpXvnowx2OLBbZcJuhS+/Mw8e/pDXDHoWBNE2NDm5bunlphKFZjLVJlOWRZY44kSggm6YQXlpmalVzEb6IaBJMDWDh/Zms5w1MO6Vo+18Am4OLOY43/ePUrDELlq0HrIZcnSD/Y6ZI7OZLDLIm67jGAaaLpJb9hJf4ubrqCLVn+FQzMZtnUHaPM5uOfMCm1eOxs7/YytFFnntqMb5otIac8SiN7MUCSRkNvGXz58kf6wdb7fP7NM0KXQ1Axu2tDKNetbeHwsxYOjcZyKxGyqzEDYzYV4aS197bQJNJsmXofMQIuHWK6CKUiUGxqiIOKUDbwOmZlUmUpTZyIOuq5TXN3l+5wKgxEPXz22QNit0Blw4XMqPDOVxjQNxlZK9LW4aehwea+ff3xiCq9dRBQE2gMO+iNuSg2NfLXJ+EqRjoAD/eU3N68rUqUG959bYe9gmGSxgaKI/MHbN/GpLx2jL+LCqYg8OZHGME32r4vitct87cg8U6ky2bKKIouUGgaKJKAaGgFRxCZCLNcgX0vQ5rOzUqgzk6rRGrBhkwWmkg3CbhsfvqKP37/jHMuFOkNRy2B7R08QhyLxxESSda1eig2VT+4f4IrhFk4v5tg/HMFjV/jSM7PsGwhz+/ZOLibKxIsNEEQMw6TWNLisL4DfafkarxRqLGSrvLs3xNeOzPOhPb2venzefDmYS3hFGIaVrgW4dl0LXzm8wNu2tHLduigX41avlSwKlGoqK6U6XrtEm99BX8TDtSNhRmNZaqqJpmn0R9zohjURt/ntVFWVZLHBuYUcdkXkS4fmqDY1Rlq97B+MsG8gxFSywtmVInbRJF1qIokG8UKNNr+d91zWjU2RGI56+KtHJvA6ZAZbvEylKvzboXkeHo1zdqnAYMTDqcU8Gzq8PDpmrRB/963r+dgVfbT7nfRF3GztDtAVdDKTKq+d+xMTKRKlOply43X1OizWVY7PZdndH1qzvHLaJAZbPGTKFpX9/FKRLV0+TsXyPD6eZDpZplBTyZQbRNwydRVETEbaPATsEouZKiuFGn7nqhWSCaoBTrvIUNiJIMJstsaGVg9PTaV57GKShWwNhyKxqcOPXbHxySt6EQSBmmpwJlZgS4ePq4bCyJLAmViBWL5Gi9/Jey/rJltWOTmf544TMQYjbvYOhKk1DS7GS0yny+TrKgfGE1a9tlDnXCxPsa7ybDbqztNLP9QY+c0CTTfWnoW3bWmj0tR4cjLJx/b2MBorkCg0eNfOLgQEvA4Jj13EoUCH385yoYbXLiOL0Ol30R10YbcJlOoah2fS5Ksq5XoTVTWQRAETgXy1wcV4ma0dPpqqztUjLbT6HJSaBi1eO7FClWy5zsV4haBLodxQ8TlkCjWd9+zsxKPILOVq+F0KuarKeLxCb8jJr371BA+NWsL03zke48YNbezoDuJ5nQRAXg1avHbesqkV0wS7IhBw2phNVRCwmPKPX0zy/st6EAX47slFvvD0LOvbvAxHvOzo9rG+zcdQ1E1fyEVDM7BLJhXN2rHlazoeRUIWJXTANAzOLhZw2QRu2dxOuW71G4fdCiGXjUypwT1nlplMlNjc6cehyGgayKLA2cUCfoeNgEuhpmpcv0qGqzZ1dveF2NUbIlGs8zO7e2joOv/7gQmOzmb4hwNTPHExxa7e0ForzuPjSRazL2+c/Swu7Tx/AvHlQ3Ps7AkAVguLJAos5eukyw0EAda3eTk6k8Fjl5jPVHDbZWyigG6YzBXqpKo6igClJkwnK9hkARNIlZqoKnicAo2myVSiTNBtwzAg4nFw77klNrT5MQ0Tj03kxEIBWRIQAZss0eKRWcxVeffOTs7FClQaTWqqwTu2d3J8PsdQqwcEk4srRVyKRKmu8thYEq9dRjNMvKuCzYvZKk3N5KaNbRybyxJcVb+ZSpa4ZqQFt11mMVvh8EyWDe2+F+mv/iig6yZnYnlCLhtdIddar6dDkZhMltBNk82dPoZbPIyuFOkNO/nT+8Y5v1Qg4JRIlXVCHoOOoBOfQ2Y0U6FpwECLk9l0FVnQEEWQDNB1g2MLRfwumVi2Rr61gYDFvr3v3AoX40W2dvnpDkl863iMlXwNu03iN24Y5u8en+R0rMDObh97+8M8OBpne7efe84u4XHI3LaljYDbhigKrOTqjC0XGGn18tbNbYTddu49s0RvxE3QZUMU4P5zcdr9Dq4eaeGGDa3ceWqJ23d0vqGT+MthKlUmVWqwf7iF/oiHfEWj1eegO+jie6dXuKbHx4OjKzxwfgVVM8hWVZyKRFMX8Dlta84zc5kyQae0qioF6YqGTRLQdaiLOk7FoKKaCBUdmyzw1FSaalMncbRGrqYxEHHRG3Kh6gbDrV5GY0USxTrPTKSI+u1s7fJzfD7Pb900Qqai8r1Ty/zWTeso11VaPDa2dgUYjxdJlRv8zOXd1FWdeK5OpfGckfMbgTa/E1Gs8+RkimpD4+hMhhafHUUS+caxRYZbPCRLdWySjE0WODqbxQBsooDNJpKvNCnWLeZ2vGQxtsMeG1VN5/xKBR2IemTiRQ2nIpKraJyYy3F2qcgN66OcXsxzeX+Q9oCdwzM5VN1gKOJhZ1+IdW1eJpNldEPn8EzBuuftCoIocPPmVk5PFTBMEAWYiJdIFutc1hPCJsHugTCz6QrZisp0sowgwM9d1c9ksszhmcya0cDL4U3xRDwry/ejkuT7aScO3bChldZVuv3TU2l+5bpB/vyBca5ZH+Xn9/fz8IUEY/ECYZedVp8TpyJQbWqMxUtkyyodARv5qorWNDEAn1OhUGsiCAIqkK+ZiFhpiXixSditYBeh1DDZNxjia8diiBg47SKmIVBqGOwe8PL9k4u4HTZsosDGzgAr+QAORaLS0Hl0LEFd1bliMMLhmTTL+SpOm0LQpfC+y7tZ/7wJwqmIOGSRQ9NpZlIVPA6Z7d0BinWNFo+1K2pbZdi+Xn37QbeNn7tqgKcmU4iiQF/EjV2WuG59lFJd5VyswHzGUt758J5ephJlFrM1HJJAtWmgSBBw2mhoBmeXikRcNmrNBuOJKgLgdUqkazpRj0y2rOF1SIiiQNijcHAqjapbuyOnTSZbaXBqIYtmCPz5e7fyZw+Ms1KoEy/ULKcOSWRspchYooxhWhduKlFmS4ePUkPHQMWhyES9DlqG7QRcNrpDTiYSJTxOG26bQrHeZFdviA3tPpbyNU7M59jVG2R3f5CT81muHGr5sZqQv1qsb/OxftXdyy5L7F0ley1mK/zJu7cwn63w7aMLxHI13rG1nX87soDLLuGyKaRLNWQRBENHM2GlrONWBAys+3+5qGIXQVVhWTWRBIuBq2kwEHGxkK1R03TafA4kSWR0qYjDJtEVdDOfKnNiPkd/xE2+rnHDBjc3bojyZ/ePk6+qbO7y0hFw8vCFPKMrebZ2Brl1awfnlwo8cD6O0yayb6BlzXT6jUQsW2U2VUaWRFKlOrF8jWpTxymLSJLIYMRDvFQHrAV6RdUwdGgLOFB1g6BLpljX8DoUPDaTlZKVuREAm2CREm0SNDQDwYT7R+N0+W08cD7O9p4Ad51eodxQ2d0XpKGZTKRKNAyDe84uE3bb2dTpY89AiC8fmmN3fxibLDKVqFhCMYLlWhP12jgxn2MuUyVbafI7t0hcNRRhMVelrhr0htycXy4wFPXw7ROLr2pc3hTB80cty/fTblE2FH3OZWSk1ctXDs0SLzYYWylxdCbDUr6O36mwvSfAwakM1SYW7dy0amytfotNqMgGNlGkoVvScXXVYCZdxWMXyNUs6yy7JGJXBB69mEYS4O5zcVTDwNTBEASiXjtOSeAbxxa5dVMrT89muPN0nD0DYW7a2M43ji3wzh02Pr6vj23dAf72sUnmMlVCToVcRWUo2rK2q2lqBgvZCkGXDd00qWsG79rRweHZLM+sWiEt562UlyKJvO+ybtLl1yeteC5WsGo5wy08Np7AY5c4uZBnXZuX0eUiZxZyLGQrbGj3c+epJS4s5wi5FYqCgSmI9EdcCKLEBy/v5i8fsoKdbkKXT6HY1JEkEYekk69qKLI16VRrGk7ZyggAHJrJEHYrCChsbPezUqzxW986w66eAL9x4whfPTLPju4gLofMLZva+IM7R+kMOLllUyvrrhvi2HyOrqCTJyfTnJjLsKMnxK7eIEv5Gp89MMXegRC/cPUAf3zvKNWGznDUS7LUoC/sWqv/TiQqtPrsnF8q4LZLbxojbLBUkfojHvojbk4tWKL8UZ+ddr+TVKnGnadXsMkCyWId0zBo6iZtASf5apNkqY6qmQgCeB0Kflkklm8gCyayAG6XTLmuIUsgyyJBm0i5rhNy2ywWqCDSFXIyn67id8kMRb3MpUrMpMu0+xysa/NiU2T+69s2MBT18gd3nufec8u0eGw4ZImgy85vfP0kN29sI1NS+YcDU3z1U/tQJJFaQyNfV1kp1Hj4Qp79I68sUv56otzQ6Qq6cNtlSrUmXQEnN25s5fBMlvfv7uGXv3ycfE2jxS0jSiJbW3yMJcrUmhqaYfXf2mQBSTBxO5XnWmBMkEVQZAmvKNLQdFRVp6qbrBSa9La4ORsr4nPKtPkcjK6UiHoddPqdLKYrFBoaPUGrvWolX+fXrh8mVW6QLjYwTdjY7uVzB2foDLjoCbkIe21EPQ629wQQRYHZTIXOgIsHz69gk0TCq8x9v/PVhcVLNc+fcLR47bxtSwfvv7yHbR1+koUGmXKThmry7ROLpMt1JuJFkoU6nX47DhnOLBbRdINqU7csmxoa89kqC5kqmFCuW7u7Vp+DVp+ddLGJCbhsIvGCNRGFXAqb2r2WmW2xgWEYzGWr3La1nXdtb+drR+Y5MJGgJ+QiVa7T6rXz5UOza6SU//r2TXxwdzedAddaL5uqG8xnrDTa6cU8O7oDaCZcMxLl8v4QdU1nMWfVIxazVeKFGl96Zu51GdfBqJvhVmuREnBaOprFugqmycmFHNlKE69d4enpFKPxvKWNahgUmyZN3aTaMDANky8+PUMsV6emgQ7UdZNi3SBRVlFEEVGAmmaCYBJ2KrR4XQQdFrEi5FSI5epc3hdkS5ePje0+Wr0KHT4HAxE3hgF7BsOMtHr5zslFuoIOSnWV+XSNP3lgnPfu6mLfYISQS2EqVeHes8t863iMpVwNl01iS6cfhyKxoc2H36GgGSZPTaR4+EKCNr+DRLGOZhjs6g3SE3K94aLwpxZyFKrPiTXsHQjTs5pe29jhI+RWyFcb/O4dZ0iXmgiYHJxMYVNkdvWHmU5XsIlQa+o0mgYeu0iLx0abz065oWEAgihR0CFX1fA7RBoqhNwKvSEXdlmkXFcJu21kK00yZZWGbnB+uUyiUKWqWmOlGgaTqQpeh0JdM/iHA9O0e+3sH4zQG/Yw0OLh4GQKj0Om3NC5aVMr77u8h8fGk3QFnZY94MZ2YrkaPvsbu/NUdYOOgJNUqYHfIfEL1wxx48Y2HrqQoFjXuO/sCk6bhNtmyfjJIkykKoBJtaHjdUhIpomum6SLTSaT1rgYhkG1aWCXRLJlFQGTbd0BrhpuoS/kQDNhLlVBNwy8DokLKwWW83VcdomlQo3+Fg+9YQ8XVko8eH6F4RY3n3lkEsE0uXwgzIYOH6Io8Mkr+vnlawZx22QWM1UiXht13UASRYIuG1PJEjv7gmzo8NERcFCsqYRcr6496Kc6eD6bvr3y04+90YfyuqGu6pxYyHHd+ijdYRcaJjt6AtRUHUm0hJO394Zo6jpnl8uIgkDQKSNh0tRgPFkl4LQRcdtRdVBN6yUAK/k6c2krtaUIVt1Tkazm+2s2RCnUmizl6wScEhvaPSiyyJMTGeqGSdMASRAQBIjn6zxyMckTEykqTY1fuW6IhWyNR8ZT5KpNvvD0LH/w/fM8OpYgWarz+YMzvO+ybpbzdc4u5lnOW+lRn8OSkXt0LMGFlSLj8SIDr5NwtkOWOLWQp6np1FSdfK3JgfEUU8ky2VKDj13RS67apFDVaDZ18tUmS7kabT47mm5gl02OzWU5FyvSNJ570CoNa9WtCOB3iDR1GGlxoEgyiVKTbKVOQzcQBVgp1XHZJOYyVe44scR95+LMZWuMJUr83JeOs7s/xM/u62OwxUMsW0PVTLpCzjVvQ3VVv3Znb5BrRiJ8ZG8vhVqT9e1efuW6IQZXd5Ef3tvHb928jgMXU1y3voXr10dJFutEvXbesrGNLz4zh0OR1mrSbxQ8dhlZei517LLJa6lkuywRy9UYjHj5wGVdiIJAi9fOplYvmqHjd9oYavGs+joKaECuZgnBX0xVKdV0nBKYq1/vlaFmJWuo1FTGlouU6zoN3TKFTpXqpEsNmhZXiXOxIjt6Qty6tROnTaY37CZerPMrXz3JbKbMd0/H0EwTn0PhyqEWIh4HeweCDLS4+PbRGPmKSq2pM75S5LHxBE1d57K+IB+9ou/HOsY/iLOxPN8/FePmzW0IosByvoYsirT7nezpDyGKJrphopkmM5kKgmCi6QambqLIIoWqTsMAVYeaYY1nqtigvLoGSlc0gk6BZMlSLDq+kGcuY/n4agbUVZUtHUEGo14u6wvS4rFbFmcuBVGAvrCb5XyNb52IIYlwfCFPwCkzmy7zwGiC2UyVoVYvH9jdzWDUh2qYiILAti4/8UIdVdMp1DTyVZWTCzkeupDgfZd1v6qxeVOkbV8v/LSnbwFsksjuviDH5rLousGVgxEmEiWaqsY1wyEuxCv8/tvW8etfL6JpKqJoGV9rzxOcrjRVKk0V/XnfK2ClVaxaBGhAxGdHEq2WllNzWUZXKigCFv1eA7tsUKg20XWdeKHOX7xnG7/9ndM0NIN3bu9kR28QTTPY0WNZY8UyVW7e3EbAZU3Kw60eTNOShBMFazfx+HgSuyJxzUgL+qrf4kirVS+ay1TY3f/67IYEwZqsv/TMHB+7wuq9e9eODksrOF3mu6eWSJYb+F0yjdWA2OZzYJNEVNNkOl1FN0AQoSdgY7nQxCmLRDwipQY0NQ1DgIBTZDpVx8CaWGoNnboOoghOScAUwDB0MpUmfWEnhbql4LSt20elaXBiLsOdp2IgCBaJqcNPTTP4+w/vIlNReWxsljtOxdjW5cfvsqOI8H8emuBXrx/ki8/M8Z/fsm7tPlrO1xhu9VBIlKiuioDXNZ2P7O3l4GSa3rCLgTfQmPz5vq4/iLqqU6prtPodHJzSqDR0TATsNplsRSVeqHHgYorr10WwKQpbO5zMZaoUayp1DSRAkkARBGQBmiY0mgYuGRqGQV1bZZw6BHJVHadNpsNvJ160pAy9ThsNTeezB6ZQdYNr1kXRdYMrBsN0+Z0cn8uxUqjT5nNgVwTihToht0y9afLeyzqRJMmS4zsZs+p0o3FAYOgNNoLf0R1kKOrl4QsJBiIu/uHANE5FYluPn2emMpxZyCFLFhM3X2siIiIIIkGvwkLOks+UTGj1SmSrOk3dGmeHCXXdGndFkmkPiCzn6qgmtHntXDVs9WuKQEXVUSRx1W5R47qRFo7P5XDLIqous6c/TK6m8mfv2cpDowkOXEwzslra2jsY5u4zy5xbylNr6nQHnZyL5RlfKfLJq/oZXS4CJnVV56aNbZxcyPHt45YYyivhpzp4/rShWFeRBOEF/pXPTGdYKdRQNYNM1dJNvWIoQsChsH8kzJlYiXvOxDEBj0vBY5cwNIOOkJNTCwWaOqi6SV0DhwyGCQ3dCp79ESfzmRoiYJegVNeoNDWy1SayLBB2S7hsEuW6Rlkw8dvd7OoLMrZSJOK28Y1j8+imwVKuynK+Tl01iHpsfPxfj9Duc/HxK3p5fDxJi8fO+y/rIVGqc+fppbWmd7dd5uqRllU2cY0j5+Pkayofv6LPYo8WapxayPHeXa9upfhaIAgC27oDbO3yU23quO0yN2xs47OPT3HblnZG4yXevrWDM4sFnkmkKNY0esMu4sUGsgnZikWCAMjXNDQTNNWgkTMQRYh4FRqqSbFhoGPtTNv9CgGHTLKss7PXx9aOAPePxslVGvicCnZJwjSaHJxKsVywRMW7gk4mkmVu2dKOQ5a4ajAMoiXcf3AqzY6eADu7A8RyVXqDdRw2mb96/zaW8zUibhtPTKS4ZqQFRRK5bWs7dkXkqck0H93XR67SxKVLa1ZwNvnNlagq1VXOLxXZNxjGoUh86uoBREGgJ+Ri/0gLXodMsabyN49c5MnJNF0BBwYCqWKdTMnqD33WXEYHyk3rnm/qZUJuG/mKSkM3EU2ToEsiXdXxOUQk0Qqe5+MVZCDqt+N2yMRydUq1Bjeta2UmVeLsYgETeP/lXbxjWxvfOLaES5E4OZ9HkQSibjtPTKawK1a9LehSMAwH7X4ny4Uav7C/n0cvplnf/uNl206nyixkqly3PoooCvidCrdv6+DAxSSbO318+/gidVUjlrM+8+hYkoamE3LZUA2dStPAKYu4ZNayWcslHb9dwDBNaho4JVgXdTOdrBBw26irGoIIpg7pSoPHxpK0+h3ky01mU0UEYFd3ANUw0EzLNk5AJuyT2dETIFVs8F/uOMdbNrXynl2d/P73zlm8j64gqVKD7qALWRIYXynxS9cM8tBYgr9/fIrOgJPbtnWstaesb/Pic1yqef7UYSZV4Uwsz/iq6PH5JcvH0aWI1FSNhqbzvdMxHjofJ16u889PzRL12UlX62AaaJpBtqKyUGhyeLaAvhoknYpk7Xo02NMfJOpVcMgQLzWRRFCxCvtBh0ih2sRtl6g2dQoVnWSxyUibpZ8b8CjEC1Z7yo6eAGPxEm6bQtBtZ89AiF09QUoNnXdu7eC/3bqe759eYkunj4aqr8r7mbx7Rxchp41HxuN8/1SMI7MZ7jgRozPg5J07OvnkVf2IokCprpIuNqg39ZcZsX8/mrrBHSctce4zi3mGom4qDYPBiIelfI2OgI1KQ6Pdb8cwDLqDTrTVtGtTt3awlYax9qBpgE0SSBZUslUrL+hRrOsQL6g0TQFRMBlbKTKXrbJSbKDpppXWylYRRJFj85at3M6eIPlak1+6dpCRqIex5QKfOzjLIxdWsMtWXfjy3hDtfieCIGFTJH7rpnVIoqW7euOmVjDhzlNLzKbLrG/3cXohz2yqgqYbBN02oj4H3zy2APCmY9vaZJF8tUFstQ7uUCS+fmyeU4t5js/l+MO7Rvnf949x//kVdN2kqhpMJkrYJCttXmkYL5gBnRKMx0u0ep2kSw0aholdMqmrkK7qyAKrAvkCKwVrV2UC/WEH145EqTc1MhWNx6fSZCoqv379MGG3jSfGU4DIe3Z2EnTb+OgVffRGXGgI3L69C1EUee/OLmK5GlcNR7iwUmAxV+XPH5pcE+j/caIv7F6TqFzKVTk+m+HvHpvksYtJslWNXb0hqk2doRYXj44nkUVwKBAv1omXVG7a0IJmmkiiiNchW8x9AarqajkHa4GeLNWJei1Rj+W81WY3GHHhViBVbnJ6scBCtsZ8pspkssKTUxnixSYtXhtum4xumEwmS8SyVSaSJQzT5M5TMf77nefw2GQCLgXNNHDbZQZbPHx0rzXui7kaVw1G+OSV/bx9WwcXlot86/gi85kKT02mafG8umzWpeD5E4Tt3QE2tPlwrKrALOVqxLJVnHaZgMuGWxYJOxU6Aw56Qy48dmVNGahYNyjVdQzDQF6dA0UJnDJka1YAUoBjczmaqoZDEbGLIEoidhl8Dhvnloq4HTY6/A42tvvxuRTsskilpqHIEnUVeoMOLusNkatqbO8J8J/eso6bN7Uxulwk7LbRG3KyVGxw3/k4u/utGpHboXB4Js3hmSznl/K4bRJdARdXDbewvtXHzZtayZQbfOv4IsmiNWn98T1jrG/3ccPG1td1zO2yxHt3dfHNYwsEXQrXjkRpD9g4sZDlodE4948mcNhkFFliLlvnzGKefYNhZAna/TZ8doWtXV7sMgSdVoN+TTWtNLhLxiaDx2lDFq10VtCpoOoGqZLKnaeWEQwTE4OgU+I9OzroCDiRBOgKODk6l2YpW+P4bJa/eXSKbLXJ3v4wNdXg1EIBUYBiTcXnshH2KMiSyBcOzjIRL/DYeBJZENBMg40dPrJVlXvPWmoyz6rcPIu3bm5fE4r41vFXR+P/ccAuS2zrDq7VYlXdwCFJDEU9fOv4AjdtiDK2UkQSRQaibkJumaBboSfiobxaz9RX1142ERCsHsRspY4oiSiCgCIrKDLYgYhbQcBKj5tYJQ1ZhAsrZYYiTpqGwfXrWyjWVCJOhYcvJAg4ZQq1Jvefi6PqJpoBiiSwrz+CTRbZMxiixW2nqhrsGwzz2QPTvO+yHvb0h9jS6WUmXf4hZ//6QRIFHIpEoary6HiS//b986QrTd67q5td3X76I242dviJ5Rqoukmb30XAZUNf3cXfdz5BqtSgqRvUdYM2v43+kB1h9d8NrMBTqOmUGgaLhTqiCVGPg2SxTl2zrM08isgnruoDAQJOq75tGJY70Lt3dXHVUIRGU0fVYXOHn529AYbbfNy4oY3+Fg/v2t7FN48usLnTx0K2imoYtHqdRDw2kuUGc5kqsiRSaWpcPdxCrqpa3QPPpoxeAf8hgudPC3GoUFMJum30Rdw8fCFuyY8ZBhvb/dy6tYPDczlG2n1IosSj4ylq/z97/x0mx3XeacN3VXXOeXIezACDnCPBTIoUg0RlWbKV7bW9a72297PW+7621l6vtWvv2lrvykGSZVs5UhKDmAMIEDnnyblzztVdVd8fNRgCjKBIAiDV93XNBUxXT9epU9UnPOH3yDXMRpFKrU5d0VAAh1nCIOo3vq6AfNHCVkX3b2YqGpmySqqsUJJVanVAFHDZTMTzMrOpEh1eMz6bAZ/dRCQvYzNJzKUKnI8VkCTo9lv4yeFZppMlSrU6Ny9r4vuHZ1nT4WU6VeJHh2aIZss8eS5Kh1cvRCsBX9s9gQKs6fSyudfH9w5OcWgqjSDouZZum5HRaJ4/etcgRoPIydnsW97vNUXTI4/dFjQBzkULuMwSPX4bFknkjqEQNrOEb8F3u38ihaJArqzoohDRPKoKubJKvQ5Wk0jIYSBXrVOq6bm0F4IqOr0WzAYRAY2aBtlKnUpVJV1WODqTpSIrlOQ6w9E86VKNklzj2HQGuaZgkgS8DhM3LQ0xmSxyLpojVqhyfCbNr2/pYs9oHKdFIlWq89nrepAVjdOzWY7OZBgIOtjQ7aVSU/nrD6wm4Hxh9T0WK3B6Tu/nGwavbtrEi/HZTYSzutKUomr84lSYo9MpOv02jAZJrzCUqzKfraBoAiICkUwZn03CZhbp8OmRlbIKcl33t2fLKrmKSrmukijqPlFEiBZ09aVmlwWzBKKmT8CSKPLXj48QzVYYjeWpyHVGYgVm0mU8NhM2k5H/59YBitU6A0EHf/nwWb7y7Bgn5jLsG0uyfzLJf/35KRRFoz/kpMll4bblLZgNBsxXqQB5ZaG821CLi3/89Q380R1LyZSq/OUj5/jpsTliuTLXDwbx2oyYjSLxQo0LQ4nFALmqSlXRgws1Rd9ZyguTp0HQLTAq+vGyrFHXIFWooCzsFF1mA5W6roaVr9SZTpVZ3uokkq2yfzzJ8ZkUPzw8QzRf4ex8Bo/dSLPLQl/QwU+OznH9QJCHT85TresBTZ/Y3oPFaGB1h5uxeJFcqcayFieVml68/Fwkz4pWF2s7vZftnviV8Hm+EwKHitU6j56K8MGNHdQVFUGA4WieozNpzEYDGzo93LeujUdPR0gXyzS7LIzGChTlGuJCBK0IRPL1Sz5XvWjyFNDNKwJgMQgoiv5Qo8HGLl2g3CCCIIo8cz6B2SgScFrY1uenUFV46MQ87RYDyUINkyRy/UCI50bi9IUcBJ1mlgTttPusGES4YWmQRFGfiPuCDla3uxlqdbF1IXF5ZZuL47NZPra1G5tRwrDgd6vUFB4+FWZpswuX1cjmiwpmv1W4rUZuGAwRz1f5y4dPk68q/OGtg3zkq/t0If6sjNUgYHVamEiWqSoafruBVLFOSUZPrtd0vxqavkOKFfSON4v6IGI1QE0VOD6XX1RiAfDYDJTkOu0eMyZJYC4jYzZImI0CFVnBZpJo85qZSJbxOy0cmEjy3967CqMkItdVzs5l8dqMBJwWEnmZyUSRqWSJ7f16nuhAs5PrB4I8dCLMeKK4qCH87X1T3L68CYfFCOhFppe3uQk5r61yZIqqUajUOTKdRhQE/tcH1/LDQzOs6/Jy/5EZbGYjHQYRh8XAfKpEq8uMx2ahrihoqIwnqhgB94JP0yZqqCIIqi6daEC/bxYjCHXd3JityGzr9zOf1k2KuXINTdPlLWO5KsU6GKv1BYH3Ek6LgcfPRhiOFlBVlT+4bZBnh+M8P5Ykma9iNUn0Bx385OgsX7hjGTaTxOHJJGajyH0LRabfauS6ikEUFjWjRUGgy29jTYcHQRA4Mp3mq7sm+PiWLl3gPVlE1XS/8cn5LOqFbSdQ18BlAqPBQLJUJ1zQxxybAUp1fSxyGSFX090aHpuRglynXNNwWiVUVSVVkalrEHCa8NjMLAma0ABZ1ciUZQ5OpKgrKg6zgTORPMUD09y1qg2TQeBjm7sYjuZ1He1mJ88NJzgbznFiNssX7hjEYzUylylxej7HijY3n9jeQ7oos38ixZZeP2fmc6xsf23Vsl+Jnec7AbvZwAc36oExJ+ayuCwm7lzZgttq0otU11V2jyQoVhWMBiO5skyhUsNlNtATcOCzCDjNIiZeuOldXgt9fssl/riapg/0NVXDapZ0k63VwPNjKRAERAGMBhGLQSBXqnEunOWpc3FkuUaP30G1rnF6LovdZODYTJYN3V4mE0V2L9T7HIkUGGhy6itrSWLPSJxnh+P84lSU7x/UfZyr2z14rCby5Rr5Sv2Sih4nZjMsbXZx2/JmtvTqZaDeap4+HyNZ0Fe8tw4181fvW42iqWzt9RFwmvnYlk5kRWM+U8Qg6rsRVQWrWcBs0M2xCvrg0eHRU4JANxVWVRA0PeJQEiFdkDFf9K0syXUkQddbrasabR4L/UEH6oLA/OZePwaDxNJmB/lyjaOTac5FcmzvDzDU6mbveAqvzcTDp+bpCdjpCdixmw387ePDvHdtGyZJ5CvPjFGu1RlqcS4KwXtsRu4/OseBiSTrunzcvqLlLe/nXwabSaKmqDhMEo+diTCfLXHr8iaa3GZOhbNICylW0UyVRKFGSVYxGQW8diOaWkdD9+kLgu6LU1TwWI36jhJ9YSMB2aoeHRp0GChV9Bqh44kSZtNC0JGg1369YTCERYJevy7LONBs5z/c3Md0osjyZidruryMxkvcNtTMX753JTcMhFjX6aWuQk/AwaOnI/zN48M8ejrKQ8fDeu71FWDPWILhWH7x90xZxiiJzGcqfPfAFB0eK5t6fBgkkev6g3hsJs6F87T7bFQXfJlWg+5LFlXIyVCpK5gXXESWhdQf0FWFFA2Moq6iZTaImAQNg6ibwdd1eKkrKn67kSOTGe5a2cyaTjen5zJU5DrVusayFje5isK6Th93rWxhLF5kz1iSuqpxYDKFw2zgkdMR9o+neP+GdjxWE5IgEMvJCILGYLOLQqVGpabr2e4aiXM2nOXUfIZi9fIKv1/VyXP7l55alNG7Elww377dTbjrOr1s6vHhc5i5b107giDQ7Nbz+3YsCXL9gB8N6PJbyZbqtLgtNHnsmE0GjCZx0byiaCqTycol9YoWXD/UFCiWFao1KFbqlKo1egJ2VrZ76fBZieSrIAi0ui3Ec2UOTGVwWCRmUiUsJpGnzsX5yKZ2Hjo+T8BuYu94kudHEnz5qRG8DiM7+gN8YGMHBoOE12bktqEmTs5lKVTrfP/gDFPJEu0+vZpIZCE4A8BnN1+y29x5BdRXhlr0Xe4NS0N0+R387MQ8R6YzqBp0+238/a5RPScFAbdFRERPL6nXNQIOy6JfrVSH+Ux1sf8vxILImh6RW5I1DJKI0SDisxlocxnZ2hegUtP0SjqxAr1BB5lKDRW97mSmWMdvNXJ4Mk2yKPO563sZiRVQVY1t/QF+9+Z+XS4uUSJRrLKh28dnr9NrkX76Xw6xrc/P7986wHymisdmYj5dRlH1WqqVmsrhqbTeVkUlXZRf3DVXhUpNWRSvr6sap+dyVOoqS4IOhiN5Tsxmeex0FL/dTJvXyv931xBrutzcubKFmXSJ0ViB47N55Lr+GXYJEkUFi1FAAPJyDYtBQBIWJk9hIRraaaAoa1w/GKBY1SeMQkVFBXw2A4mCzKGpNC0eK3lZQxBEmtwWvvzkKDlZIVooY9BgqNWJ06oLKFw/GGJZi5tPXdeDx2ZEVlRsJomlLS6CbvMbL3B4mdw4GKLNY2VsoQiD02RgqMXJkZk0VqOBbKVGPFelJ2DnqXNRnhuJM50qkCvJ+Oy6y8VnM9DqseBacF+UZA2LWfcfynXwWiUsBnQfslFCU2E2U2UuW6Ug66ZzRdWYz1ewmYxomkqxpjCRKLJrJInFqBtKr18S5Ne2dPOFO5cyky7RF3IsRlf/n6dGF3Kz9QDKbX1+XBYjty1vwms38tiZKGfnC/zg0Az7JpJkSrpra0OXl09t72U2VaHDf3m541fVbPtmy/K9Fhfr3L5dTbjVuoIo6CHXy1qcnAnnWNnmRtNgOiXQ7rJwej5DpiRz02ATkpBm11hCj+o0G5AVFbdFoCxrzGZeGAxtRgjazdRVyFdr1GsqgkGgKGusbHdxNpxnJllEFAVdi9Io4LEbMRkk7lod4uRcDhakzla0uvDaLfzbvmkkAR4/E2VLn58/uWeI//6Lc9iNRo5Mp/nxkTk29/gxiDCdLLKtP8BndvTyladHyZZlsuUaibzMSDTP7tE4Y/ECd65o5eRslslkgeWtbtYuFOx9K7mgrGOURFrcZh45GcYoiWzu8XJoSpeF6/TZiOWqC2HuKvmqhs9uQBT1wUKuLeTOLnymdcFc63cY6Q3YOT6bpS/o4Hw0j6JAQVZZErRTrNaxmSWaXRZqqkY4U2FTt48Ts1nS5RpOm0whr9DkNPOpHT3cfzzMH9y6hFSpxk+OzPK+dW2YjQI1VSWcqTKdKvOtfdPEchXuW9uKxaQPAX90x1I+/72jdHitfHhTJ3VV0yObF4oDJwoyZ8JZblr61gZoXQ5PnYuxql03IY/E8nxmZy/D0TwDzU5+dHgWo6RXFPrwxg6+8vQYX3l2jJFoHgMaBlHQNU81hWJNw2ESkBf+NYoC2YqGADS5JBRNoFStk1tw1omCiMussX8qvbgjVTXw26TFYCCf3chkskTIaWF5s4NzsSyrOzy63KGq8vxEisFWJ0ems0SyFe5e3cqGbh/dfjs9Pjs1VWU6VeLARIrfvqGfdu9rC5S/Wch1dVHE49hsFpfFwHX9AfwOM9/Zr6ed1RQNl1nXpA5nysxnKqzt9BLPlYkXZOwGjUy5Rl/AQixbRakrC30HoijgsRhIFupUagreBdcG6NYaDZDrGjPpEtWahsUosrXHxXymTNBlpliuE05VeH40xpPnovz5vStZ1+nFYzPit5uxGCSWtThZ0eYmXapx9+o2ZEXjK0+Psr7bS6IgM5FIce/qVv7iPSuZz5bxLAQ9SqLA3vEkgqBhuUyfZ8Ns+zbjxGyWU3NZUsUqX989wep2D7kFHcyfHZ0nWZLZO55mW1+QyVSRXLVO0G6izW1CUVVqCmQrGi6rRMCmD5wigArRXJVwrkqxqlLVdL+HRYJjMznkuobLZqTda6XFa+X/ffdy/viOpUwkixycSOOxGvFY9OCBo9NZtvb5GAzZQYB717Yy0OxiPFHkT+5eTl/IgVkS6PXbmEuXSBZlJlMlREHXeL1teTPLWl3cOBjixqVB1nV56As4CDkt9IXsrGxzs6XXj/0yo+LeCJWawjf3TS3+fmw2y+eu68VukshXFM6F89iNBoYjBYySQLVWX4hOlrh1WYhwtoKKwFCzHZtJXOxvFd2nlijUKNY0zCaJmVRZN5lr4DILqKpKuiDT6rZgNxuo1VRixQo+ux4tOJ0qYRD0HMHNfQF8TjPrOj08eSaKURT44zuXcXo+z1y6TIfXzm9s6+TBE3OMRvPctbqFj2zuoiTXkesqmqaxvtvLTLpEuabw9d3j2M2GxcjDZrflmpg4Ae5c2UK717bo7wR9gTOVKPLuFS34bCZuX9HCcLTAbcub6AvY6PHZqKiQryoYJIFsRfdfXhgoa6pGtqLisUrYLQayFQ1JEnXpRPQYgFhBpiAroMGty/wYJX1BlCorrO304rEZGInkWdnmYV2Hi+MzGYplhYGQg2ReZkNPAKfFSLPTSqWm0OW1snMgSFlW+PITw+yfTGI1GajWVdZ3+ZhNlxcnsyuB32FmVbsHgK19fpa3uYnkKuwbT7K2w8vHt3QzlSzid+ilye5Y0Ux3wMbZcJZorkxRriMhYDaIRNIVKnU9p9NrlfBYJRLFOpFCXTeTo4ut+OwG2j16RZ9mpwEQMIgS6ztcDDY5mc5UqCka0UyFVEnGZpFQNQGvzchPjsxyYjbDvvE0HX4r06ki6zp8HJnKUFNUhiM57CaRm5aFANjY7eOGwRAbewJ87+AMRknkXCRHqqgHYk4mCozFCjxyKnJZ/fUrETD0TmJjt49qXcEoily3JMje8QTNbispqYrPYcQkClhNEkua9VVspaaSK8kMNrs4NJVEUVWKNcgtiFz7rAJ1VaRQVWhxmagqGoqqLMibWZhO6CpCNU1fZSfzVaxmA+OJIrtHy9y8LMR8uspspszGbi+1ukLIZSZT0qsoCAhMpcqstBp59lySel0jVqjSG7AzniiQr9T5xPZe/sPNA8xnypycy7K200t2wd/55Nk4717VwtouL2u7vNQUFZtJxG1766XixuN6svx717YtvraqzU1NUblndSuSJNDstnB2Ps2B8TQVRaFQVahWVQyCytMjSVpcJjr9dvZPpLl+IMjxmQySqKdZTKQqhFwWgnYT4UyZKgpWowhotLitlKoK2brKQJODJqeFSq1OrlJnz2iS37txgH9+fhyzyUCT00JZrjGVLLN/PEVRrrF/Is1vbO/m17Z08p9/chKDJDCJSL5SpzNg47olIZJFmb97cgSv3cSHNnZgNxn43ZuWMJ0sYTPp/XtBicpwlaI+Xw5F1XeHVpNeqPqnR+dY1uKkJCsU5To1RWM0lmf/RIp4rqpX96jrNTk39XjYPZKgN2DRo29FEZu5TjRbpcllRhA0Wlx6KtbzYwkMgm4tGGy2YzUaiGSri7m7RlHP5e30GJlIlegJ2EkUq4zGC+TLZl1BRxA5FymwudfH6fksn97RwzPDcSpyneFwnmi2zJHpLB/a2AEIJAtV0DSeOR/jt67vWwzguVosCTmZThYZjuaxWyT9/5EsPoeJ4WgBEZFWt41wtszaFifHZtMEHGby5RoWSWBVi5uZTImaoiLXFXKy7vtX1IUfRaUuinT7rLp8oVWi3Wshmq0giiIWg0Sbx8JEokhPwE40W8bnMHN0JoOm6VKjNpNIVVZxWo20+6wcnc1w95pWHjgxx9lIgVa3BZvJyNpOvcqTJAps6PZyLpLnyFSKTp+N+4/McefKVp4fT7Cq9fJKHDYmz7cRdUVd0HTN0+Q0s2NJkJFoga29AR47FeHGgSDPjSa5d3UbPzo8TcBhRtEgW5apayo+u4WSXEBC/9IbRQGnw0qxXKGu6u+zmPT0k7lMFWnBH+CxmGhzm+nw2nluNE4mW+Gnx2bx2S10ea0kChU6vVbieZlV7V7WdXl1pQ6rgc/u7OPgZJomt5nZVIVyTWF1m4u/emyYj2zqYjxWoMWtpwu4rEYWrITMpcvUFJUVbS6CzheEmr+9bwqPzcjty1suOx/rl+XQVBqLQeSeNS9Mnn6HmeMzGR44GQZN47/cu5LekJ0uv519E2kOTKSwGgVkVaPNbSFVlJnLVPHZTZyey+qr3IWivSGHAYdJ5MRcBoOoESsrGER915os1Vjf7ibosvLI6Qhj8Tyf3t7D08MJ0qU6iWKFgNOCSRJ0QXQRtvT6kEQNkyRwejaPSRJ56lyMgWYHJkmiw2vlH54do9tvI1mscmI2w+YeH7ctb8YgidyyrIlCtc4Ng0H6gg6OTKdJF2UcZsMViWq+XPaPJ7GZ9TJ1G7u9PHomyli8wGymxHiiyCe3d/PDgzMMtboYWOvgyTMx4hWZvoCd6VSJwWY3IaeZ1R0evvL0KMvbnNRUMBsEIlkZi9HA/skU0YJMs9vCVKpCLFvFbFIIOoycnMtRr9W5oLGQrWjYTQomt4WdfSFuWBri754aYedAANBY2eqh3W/FGTYyHM1z75pWIrkKD5+MUJIVmt1mfnZsjnxFoT/koCwri2IgV4tfnAyzrMVFd8BOSVZ44myMnQMBxuJFJAGCDgvZSo2dg0GeOR/jAxs7ODqdoTdgJ1euLSygaxyayWCWBIqygtUk4RF0l4YkLATWaXplJptZ4tRcjqDdyFymwlSiSKvHSsBuwucwIyt6Ufn71rbxL3snuX15EzuXBPHYzLR4LBglkVi+ypoOD1PJEp0+KyG7lQ9v7CBdkvnzB89yw2AIj83IWLzAHStauH4gyPpOD989MIVRkvDaTfT4HeweTfKRy/B7XjvLyQaviapBsapw/UCQ7oAdSRT4xPYeQOPBE/PsGonjsRk4NpNmJlVi30SKHp8Nn8PMZKJIi9uMUZSwGsBhFAhnqxgkAVnTq3uYDAYskoTdZAAWwsY1+PjmDrw288KuCLb2BvBYjWzt8yMrCiGXhb5mF4cnkyiaxo2DQZ46F0NV4W+fHGFDt5doVhdT/9ruCX56bJ4/uG2ArX0+dgwEiBd036vDbKBloU7nshYndrPEhm7fJX3wie09OK1GsqW3Pnjlgxs6Lpk4p5JFdo/GefxMhB6/jQ6vjUS+ws+OzhEv1HCY9URuv9OA26JP8JlynVaPlWxJZj4nE3Jb2NYfoNtvpSirBJxmCrJKtqJgNQoYRIG7V7fQ7DQxnamSKsm0e220eOxYLUbWdfr4zI4eRFFXlerx2xEE3afkMBtJFGTCWZmNvT5CThODTQ6KVYVqTWH3WAKn2cjT5+J8/ntHkQSBkqzw7ELEcklWCGfLiKJIV8CO1SjR4bPisZne8r5+PWzrD7CmwwPo4vArWt20e21cPxBiR39A1+UNOhhocvKtfdM0uy10BxxMJksEnWbqioKsqByaTCGJEM1WWNXmoVJTaXJZSOQrmMQFH2iphggkSzVA49hsDqfFgNdu4QPrO+jyW7EYBTr9NnKlGtPpEntG4+zoD/Dpnb3sn0jx1NkI04kiz43E0FQYiReJ5qp8ekcvNpOBM/M54nkZq0nCYTLwoY0dmK+yFOItQ010+XV/66oOD5+/ZQA0PehSUTUqNZVOn42hZicdXivhTIVPb+9iIlGiWqvT5rbgs5vp8Vqoq3qQVK6sYDFJhJwmugMWTKLuFhlP5Dk1l0MDPruzn3ctb6Lda0NWVLLVOvvHU3R6LQQdFn56PIzXbmI+U8HvMKOoGk+ejfIff3icZKHKmfksBydTPH4mSrJUIZyt8OMjc9y8NMTWPj8Bh4k/vG2QFW367tJhMdLmtZFaGE+GWl18ZHPnZfVRY+f5NsJkEBdlsy5GVjRuXd7EyjY3q9q9jMWynAln6Q/YODSVocllpc2r+yYCTjMtHjPPj6W5dShEIl8jI9UYag2gqhpjsTw+p4V1FgPD0SIWk8jDp6LMpkuYDSIVuY4gwX++azkPn4gwHCvyvrWtVBTdtHd8Ks1fPHyOTT0+do/E2NTtozeol2E6OZfhS/etJFWq4bGZKcsqty5rumSFHc3plUTMksh4vEhfUK8zajVJnJrLkq/UWRJ0YjCIjMYKl9Q2fbNRVY3JZHFRDP3IdJqRaJ7PXtdHJFfhzHyWf949zuZuP4+fjSCKoKGiqEYUVO4/Nse6Lg9+u4kTBgNWo4ZR1AMnPri+nQOTaYajeVrcZu5c3syZSI4jUyl+dCSM12ZkW7+Xak2lrqnct7aNZF5moNnJiZkMlZpCi9NCi8fK/okUoPHIqXlOzuZY0qTXQfz6cxP857uW0Rd00OW3U1NUjJKIQYKvPjfB6g4PkWyFloVo92a3hWa3HhylaXpyeb5Sx2a6docJgySy7CLt14lEkVNzWXYOBnn2fIyBJief29nL6bksR6czrO/yki7WiOUrpIoVQk4LZqOI1SQw2OTiN7Z28T8fH6bJaaasagiaBqJMra6QyFVwWSQ6/Ta2LwmQKtTJVuv0BuwYJInZdJ51XV7ORvMEHWaanBa8NhPmhYT/kNNMrFhhqM3J9w/OUKmrLG12sXNJCJ/DxDf3TWAQBdxTesUQv8NMd8C+WFv1SvLic7Z6LDxwoozLamBzXzsSAg+fivDQqXlUTcNkEDk0lcFp0c2se8ZSmA0CKgKrO9ykijJ9ITsem4lkocqSJieSZGA+XebWoRBWk4HT81m+/OQwKgKtbjNBlwUNWNflwW3RF6YfWNfKuWiBqWSJFreVR05HMUkCG3u8lOQ6J2azbOnzs7rdTZPLwpImJ78XdPD8eJKRaA67xcizw3F6Aw46FxYHBlFcjNqfz5SwmQyXtWC8dr8VbzEX0lbaPNZLonDfbjw3Emddp5ff2NoDsCAdJqKqUFUFFASCLjPJQpUuv4194wkimQoWSeTAZIqPbelmsLmb07NZDs8kKSsa8+kyS5tc/OdPr+BPfnqKHr+VFqeJTLnGZFJhOKzng4WzJQyiwJlwgS6/nVUdHj6+pYtUsYZBhO8emOb96zv53sFpJGAiWVowCZdpdVs4M6+XX/r3Ny3BbJQWPrNCra4SzlW4Z3Ur08kSX3lmlC/es5zBZieqptcDLVbr7JlPYJLExS/Bm01d1RhdSA8BeO/adv3LZdYr1H9n/xTVusqWXl3S7g9vG2Q0WsRrM5IsVAnYTaxodfLTY2FuHwqSXqg6UVc0vrZnCpNRIl+pkSnWOTid4ZZlTch1vaRTsaKrCK1sdaGp8PNjYfqCdn59aw+xXJUnzoRZ3enh+fEkTU4TZ8MFuv26zvGx6SzXDwT50KZOxuJFnBYD0VyZs5ECn9zeTTIv85kdvQSdFsLZykvqdB6eSjGRKPK+dXqCviAIqKpGXdWuOXF40Hcv58I5xuIFVrV7ePp8HJtJYnmrmx1LgsxlyvzVYyPctaaVSk2hLCucns+xqdfP+WgYi6RL0SUKVSxGkUi2xHiigNeqi0ts6PLxi1NhvDYDIZeVfLXOTw7PsaHbx2CTk4GQkyXNTlRVxW83E8tVuGlpiEimwv94/xr6Qw6OTqc5Mp3lD9+1hGi2zAfWtTGbKbO+y8u/7Z1kQ5eP37lxCWVZodtvJ1+pMRovUqzWr+jOfzRWQBA0nh1OsLHLx8p2N3NpfdK8dahZT+Wp1Pifj53n+oEAB8bTnI/mGWoVaHZZ2NLjJ5KXaXWbEUSRkqwQsJsxSSLnInnmM2WMkkiqKPOe1a08djbC42djhFxWPrW9C5NBJJIp8cS5BKqmsa7Dy+d29PHg8TlMksj9x8N4bSZsJgPPno8zEs2yuSdAT8DBYLOTeEFmLJ7nsdNROvx2HjoZZlWbmx8dnuHdK1vY1O3jfCRPs9tMpiTjsZm4YTCEYWEB/82909y5svmy+vza+yZcIfZ84SYmv/Ru5jLlq92Uy+LUXJbhaJ6aohLNvZD3OJMqkSpUeejkPI+cjvB/nhpl93CCck1hOlnk313Xy7pOLydmM0wmiwgIGA0C7V4rVqMEqsq3900xly1hlUx8YG0zoigw1GLjX5+fwCgJmI0GvHYz56NFVrT7uGNVC//n6TGKssLSJiepki7N9flbluCymogXqhSqdW5d1sSGHh+ZkkyuWuP/966l9AUdfGJbNwPNTj66uZMVbW6mUyXkusoDx+aZSZXw2k28e2ULck1h/3iCP7lrCItRr+5hXtD1tZsNbHyRSffNxmQQuW158yWvaQh8Z/80/+fJYTb1+DEZRb6+Z5LlLW4kUeSjmztZ2uriD28fpNlt4Rt7pljR4ubYbI5UQeX4bIbZBQWlVEH3EbttRt6/rp12r41UUWY0XqC/yc5susyesQSr2pzcvCxErlTn6fNRREGj3asvPjRVw2428pvX93Lj0hDru318bmcfn93ZS6Fax2wQaffYKNUUPrOjB5fFyOHpNCGnGU3TzW8vJlepc+PSEPsnUhyZzgAwEiuwZyzxlvb35RLOlilfVBBgOJqnJCu0uK20uC18dmcPPUE7Pzg0w4+PzKKoKjcMBnAYDcymy6zv8dIfdKAoKr9/2yAeu5lcuQrAybkcPpuuZmMxSAiCxny2Qn+TA0EQuXFpE5/bqQvxb+4JcMtCPz1zNkq5pvDccJS5TIX/9fgwY/ECAYcJoyTgsema05lSlf/7zBgBp4lOnx2XxcBHN3Xis5v4+bE5XUhdFACBRKF6xU3m5gWVjzaXheWtLh48PseDJ+bZP56iy2dj13CMbLlGp9/OseksY8ki/U12Prali9JC/u1kIo+swra+AEubnCiqhskgEXKYsRtF7l7ZjIa++B6JFVFUjR6/mSPTGb6zf4b+JhdrOz2EHGYmUkVOzWeRDBJmo8Svbe5kNJrnMzu6eeJchCNTaebSZboDdtq8NvqCdsLpCoPNLrb0+Fjb4SFeqPKJbT0sa3YhLtQYLsvqorvCZBAXrV+/d8sSDkymL6uvfmV3nm832r1WRFEgW65xJpxb3C3csqwJr92E1WjAZTUyLOT40OZ2gk4zM+kSE6kSE8kSd61pZSpR4pPbe3l+LEG1plBXNYwGiZ6AjYl4mbPhHOG8mRsGgvQEXRyaybOuw0OmXMdjNzPU6uQDa1s5FS5gNYisavdiMxkZi+W5Z3Ur3QEHR6YyOC0LEaA1DVXVuGNFC26rkclEkT2jcW5cqoeOz6RKbO7xY11QiTkbyeGyGOgL2dE0jZlMGUEQsJlf/jFtvULiGheTKcrU6ioI0OmzUZTrrG73UJH1MmrRfJWZVJn/9K5mblzazPVLQzx1Nsb7NnRw82CIP33gJC6zkf981xCpUo2DYynOhPP8/MQcLW4r71nbzrf3T3F4OovNKNLktHLr8lYA9o8lefhUhD++cykHJ1LkynXsZj0QqMuvm8RsZolHTkXYNy5gN0sYRBGb2UCpqvCvz0/ymet6ef9Fkm8v5wa4cVC/P97uFwbuweYX1IeuNjOpMqJfWAwYu5BeAfDIqQgr292cmsvisZk4H86xdzTJvWtasRglPrmjh2y5xv1H51jqdpHMy1QVlW39TQScRh46GQEktvT48dpNeC0Gbl3Zgtdq4g9/dJyZVIn7j85x56oWPHYj65aGqGswmyySKdfx2o1YjAY29/p496oWDJLIVLLI/3p8mN++oZ/JZJHfvqGfwWYn5ZpCTdEIuSyYFyQoHzsdxSAJvG9d+6Jf90rS4bORLdWI5WXqqsZwtMDnbxlA0TR+dnSOcK6Kz2Hm3jVtbOz28Sc/PclILMeTZ+N88d7l/OJkmPlclU9f182puTzlukqzw8yaLi8PnpinKNfRBIG1nR72jqXYuSRAVVFJFmosb7MiIPCPuyZ439p2njoXo91npVpT8NqMDLW4ORPOsr7Tw/94dJig3YzPZuIz1/fiWigO8ODxecq1Ouu7vRyZyvCetW30Bh1kyzUOTqRw20w0u624bcZFKcqLsRglfmPra9fyhMbk+bbh4hXohcENILQwiXb6bYzHCrgsJg5NZOhvctDqsTCXqdAdsGM3Sdy1Sh9A3re+g/l0ia8/N84Dx8M0uy28a0UTzR4zv319H7vHkhgMEhu6vewdTWAyiHQHbPzFe1bhc5ioI3BoMsm5cJ4WlwWTUeS5kTir2t1s7fMzHDUxGitwz+pWvndwhtUdbiwGkVaPlWb3C2Hn+UodoyTy9HCM5S0ubhtqplSrE3CY+cmROT64sYO+BZPpU+eirGh1L15vtlRjJl1adPxfKSp1hTaPlZuXhej22zgdzhPLVxGQ2TuaoD9k5+Rshki+zF89cp571rSyvsvLVLLEwck0q9u9nAnn+MaeST53XR/T6TJfuH0pPzsxR6dPNz+vbHfhsRrJFGvM56qcXPD1/tEdy2h2WyjJCv/lPSt5fjSBx2bkB4dmmUqVWdHmxm83MR4vcu+aVmI5XVHIbpZQNI01nZ5XNbsem8nQH3LgWFisXO00iVdiU89LLQ6qqnFwMsWOfj82k2FRteyRU/P8065xorkKazq8fHvfFO/f0MHWngBPnouQKcls7vFzLpLH73BjMUis6fDQu+AnPj6b4chUiu6Ag8EmJ3evbuWOlfpiMFOS+eHhGXYOBLl5WRP5ap1nz8fw2PTiDRdqhXqsup/v67t1bdjVHXpu9p7RJHJd5e7VLSQKVWp1jV/b1E5R1iUpX2xOv1K4bcbFRdXvLxRL3z+Wot1noyjrKW4luc7esSRfvHcF/7J7YiFlK8s39oyzqt3NdKLM5h4fDxyb56nzMYbaXPSHHGzu8ZKXFX50YIZmt4WdA0EePhllU7e+SF/f5SFfqTGRLLCjP0Bf0IHFJBFNlnBZDYzECty2ooVDU2n6F0RFqjUVFrrqhsEQs+kSAYeZ91yUYua2GrllqImv7hpnSZPjVVXtLty31+JX1mz7TsNjMdDlt/ObO3sZTxaZy5SxmY2sbHczkSgi11VMkojDbKBeV4nkKphMIjsHAvz+giLN6fkcz40kyJRqnJrNsKnbz8e2drO81c3PTszz5LkoHpuJYlXhw5s62dzr54ZlIUJOK+9b106+WidZqBJymolky6iaynX9fpa3unnqXIxCtc4nt/cSyVY4NpNhqNVFs9uCw2SgyWWhJ2BnsMlJyGnhAxsuFcRe3e5hIlFkKlkEdDW8KxVIkShUeX5UN1mu7/Lx7tWt9IWc/OJ0lIEmJy0uCx6biSMzafLFGr9/61L6gk42dvv42dE5XBYDtwyFWNvp5rblzVgNIkubXfyXB06zJOTA7zRiN+lm6XRZZm2nn0y5TlXVuHd1C/1BO7cOhbCbDbitRv7+mTEcZr301o1Lm/ibD60hU6rhMEu0e618Yls34WyFE3NZ8pUa+8aTfGSjHkFYqtYpvCjx/oLUnVHStYtfjKpqVGrKSw9cAxSrdU7P6xVfCtUaovCCuLmianjtZnYuCWI0iIzF8+QqNY7PZHjyXBSjJPGJbd382pYuOnx21nX5+PG/286Gbj+Jgm7GHWp28cDxMBK62MfeiSTFqoJBElnX5WNLr590qYbJIFIo12h1W9nW52dLj58nz0ZRVI3jc2m29PrY3hfAbTVgMogEHGbaPRbevaoFp8VIX9DBbcubsJgkBOHaWbSkizI/OjzLmg4PAYeJHUsCXD8Q4rolQVa0uTBKIh/f1k2Lx8qhqTRuq4lYvsq96/SF+m3Lm1je6sQkicTzVebSFSbjJbb1B8hX68TzeizGaLzEpm4fAYeZJU1OqrJKs9vC0hYXS0JOPrKpE0XVGGp2Mpks8tFNncTyFd6zto2g00yqKDMWyxNyWZhOlaktCNU/ciqiW4sUlUdORfjszl5uuGjzcYFKTVn8XlyuX/+qTJ5XWtP21Xhblyv74hcBvUrH/cfmyZZlbGYDn93Ry61DzfQE7Uwm8kzEi2xfEuCbe6c4Op3hx0dnCToteG1mPrGth1xFwW0x0OOzcWg6w1Crk3JN5cRchoqs4neYuW9NOx/dpJszmlwWbhlqRtE0LCYJs0HgG3smODOfZd9YUld2GWrmewdn+Mfnxjk1l8XvNLFrOL6YoLxyYcdYrNYZaHLisZlw24z4HXpO54UBJJqr8JMjs3htJiaTRYpVfRB3WYxXzIzoMBvoCtgX+/sCnT4bz5yPUqkrTKeKvHdtO3abiYGFdt061Mxv7uxlc6+fh09E+OHBWb78xAitXhs3Lg0RcJrIVmqEszJ3rGzhxsEmylUFq0FkZaubW5Y1cWw2x8OnInT67aSKMuPxIp/a0UOqWOOhk2EAqjUVl0ViNl3BajLQHbAzEHLy+VuW0O61MREv8tePnSdT0gfCp85GL7mOf9s7xS9OhVne6n7ZyNq5TJlnzsfems59NV7U3y+HuhAVLIoCTouJ5IL+7miswBNno2zu8fP5WwcRBIF9Eyld/MNh5vblzWzo8oAocj5aYFOPj13Dcd2nLILVLJEsypyYz7BjSYAfHJ4lW6qxqcuHIMDZcI6ZVInnRxP47SYePhlGAZa3uhmJFRBFgZqiUq0r7OgLki7V2dDtXbScgO5fvTBJA/QGHRSrdZ4+dxX6+gIv6nOv3cStQyG+d3Aa58LiDSCer3J0wR9uMUoMtbpo89p41/ImegMORqNFfnZsjuOzWVQNnhtN0OS00Oq18p41Lbx3bRvb+4PMZ6uEsxW+cMdSCtU6NVUj6DSzrNVFtlzHZdWjYwVBL0De4ddrif7vJ0cAvV5ttlzj0VMRHjgepqao3DLUtNhOt9XA/okUBlFgoOmFyHz1ou3lqbnsgjB8jiPTaXKVyxOGFy6sOl+By9vA3nCD/u8zz1zW27u/8NAV1bS9HN7ENr3RZeNlGg0AQeDUbIYlTQ4kQXiJCky2pA+wH97YgSgKHJ/JMNjsxCiJemmkHx5nRYsbm0Vi31iSgN1EqlLnU9u6cZgNVBWV03NZti8JMBYr0u230+a1UldVvr5rgmRJ5tZlIQ5OpPA6THxsSzen57PE81VGYwU+vqULQRAwSgKqpleOv5DHmSnJyAuqL5PJEuu7dI3ab+yZ4KObOxcDg0DX3HyN1eAb6fPX1d9c9H05Np3mX56f5MalIZIFmXvXtOK1mRZ3PjOpEl99bpw/u3cFALFchXxF91n77WaWLORgKppGX9CBqmqcmMtwPpzn6HSau9a0YhBEeoI2zAaJrzw9isUoMdjsIpIrE86U+dSOHqaS5UUz21NnY1hNEpt6fEgXbSNLVV2d6Fwkh9tqvEQTuCLXmUyVWNr8QsoH6NVkloQcL6evelX6+7V4+lyMLb1+6qrKz4/P85GNnYv34kKUbbZco1pX+OtHz2MzS7x3dTs3LMi3HZ9J87XnxrlxaRPtXiv5Sh2TJPCDQzMEHGb6gna8dgsuqwQIqCpEcmU+sF7/fsVyFR49HeHjW7sBOD2v6xVbjBJ1ReW50QTrOrxE82XieZnNC1VKLqcnLrsTXp63pM8fPD7PZKLIzsEgq9o9RLJl/uhHJ/jwpk5a3VbOR3MMtbp55FSEJ85G+A83LcFpNbJ/LIWK7kbo8tlo9+oKRbtHknx8axd7xxKsaHNzYjZLTVG4eVnzS85dluuMxXUrVIvbQl1VF0UmLrlwTUPVWPwu5Cs1jKLAN/dN88nt3RgWIn8NkoDLootYtHut2EyG1+zzxuS5wPYvPcVcpvxmpK5c0Qf94ESSlW1uLMZXVtspyXquXr5S46dH5/j41m4UVWP/eIJsuUalprK9P4BcUzg6m+H25S18e98UW/p0ncgPb+qkUK0zEs3z7HCc37t5CQcmUgy1ujg0mcZlkVjV4V1sw4sf2JdjLJanWtcYar10wK7UlFe9llfqidf7BxfxSw0sF/pU0zSqdRWLUeIHh2a4e1XrYiBLta4Qy1WJ5iq0e23sGomTK8scm82yodPDtv4gHqsRRdPl+IrVOpIooC30nWkhlzXoMGM3S8TzVXwOE2aDxGg0T7PbgsUocXo+x+qF4JLhaI5UUWY+U2FbX2Axb/OXIVuqYTNLL2cevyYnz7F4gW6/Lh5y4TlSVG0h2vOFa4jlKzxzLsYNA0EOTqW5dagZk0GkpqhMJIooqkrQYeGxM1E+urmTRL7K82NxbhwIcT5W4Hwkz/Z+P9lynXavddFaUpYV7j86y0c36xaa3SMJlre68NpNi+2r1VWi+QoDC0WvL9OvfE1Onn/31AiZoswfv3sISRQ4H8kzlSyyZkEIX9U0/A4z06kif/3IeT6xvYeSXMdqMrCq3Y1RElFUjZqiIgoCByeTRLIVtvUH8NvNGEThNdOj6opKrlLn+bEEd61qfc02H5hI4bUZ6Q06XnV84jL6vDF5vog3oW3XxIMu11V+emyOLT0+do8m+eiCaoamaZRrCvF8lT974DT/4/2refR0lHvWtPLtfVP0BuzcupCesWs4js9uWgzKKVbrZMs1Wj1WRqJ5fHbT4sBxMd/ZP8Xdq1pxWl/Qnz0wodfYG2p1UakpfGP3BHetbqXD96bkaF7Rwbym6Ok9n9jeQ6oo89jpCB/e1EmmJFOuKYu76wsMR/IU5TrLWlxoGhycTOIwGwg4LERyZUqywso2N9/eP8WNg00cXFC+uW9dO86FKMJv7pvi3jWti1GFF3N4KoXNZCDoNBNYuB8PnZhne3/grUp1uCYnz8UTaBqpoozfYebMfI5kscqKVjcem5Hz0TxLm11UanWOz2YZanHxPx45hyQKDLW6+eAGvWZuuigzmSwy0OTkewemKdcUNA1+8/o+TAY9QK4nYH/VqiczqRIhl/kSK8oFHjsdYaDJSXfgsspfXRNjysuhLpjMLzASzTOVLKGhsazFpbsNEkUOTCQxSiK3DjVxPpJfVA47H8kTyVUoVusYBCjICl6biXC2sjhm1RT1ZfNdFVXjn3dP4LUZuXtN68v28xvgtftc07RX+7k8rr9e/7lMuv7owct+75XmTWjba/Xpm9PnmqZpvPrb4/mK9oOD01pZrl/y+rHptHZyNqP9067Rlxy7mP3jSS1VqL7sseFITkvkKy977NFTYe3UXOaS14rVmlap6eeaz5S003MZ7eh0+lXb/zq4Jvp7JlV8yXVrmqZlirJ2Zj6rnZjJaIenUpccG4vmtSfPRDRVVbVMSdY0TdPkuqL98+5xTVXVxfdd+H+mKGt7xxJaWa5r5yM5TdM0LV+paWW5fsm9juUqmqKo2lvENdHfL+aB43PabLqkFSo17f4js5cc+/6BaS1flrUnz+p9XanVtR8dnta+f2BKK8u1V3yWVVXV4gvHLr4fqUJVq9YUTdM07dRcRptOFl9XW18n18yY8lp85elR7Vw4q/3fp0YW+0RRVO3kbEYrVS8da6K5svaTIzOapmlaIv/Kz+tcuqQ9dTb6ssdUVdWi2fIbavMr8Jr92th5vog3wXx7za4SX0x5Qaz5lZhMFBdNg28mo7E8Jkl6M5WBrumd0C/DK92bSk0hnK0QdJo5PZe9WoLt12R/V2oKZoN42dGq+UqNs+H8y6a+vB7C2TI2o+GtrPTzthlTRmN6bduLTa11RWXPWJLrX6Zw/S/pprkSvGafN/I8X8SFCfPtWiz79fBqE2ckW8FjM74lD3Z/6NpItr+WeaV7YzFK9CyY+l48ccZyFQySiM9+bQm5Xyle77PqtBhf18Q5HM3TH3S8xE/5YjP9rzIvpzVtkMSXnTgBcpUaxWr9Zd0/1zqNPM9X4EIKy9s2jeV18txInLF4YfH3VFEmV379hXhn0yWGo/k3s2nvODRN49nhOMplZmOfmc9xYCL1mu9Ll2rkypcXZt/g9TOXLlN/jXv2xJkoBydSjDS+A4t898A01frL5wlnS3qqyYGJFPnLTBG5VriiO8+LTaLXOhebbH8VdqFrO72XlEF6cRTs5WI1vrEk75lUiWiu8pJSZG9nEoUqZ+Zzi5UbBEHAbze9rCDBy9EXsl/WRHutyOe9U7kgK/lqbO716RJ0V8a6f81xaDJFk8tySSDgHSuaXzGYZ0mT/swqav6qVI95I1zRyXMuU75mfZ2/6iTyVZJFeTHf8pfljZpf/A7TteoDuYSSXOfZ83HuWNnymu91WYwMNF06sb0eWcE3OYrwHYuqajxwYp67VrW+VhrCW4bTYlyMkP5VYyZVIlWUX7LwvpyI7yVNb7+F39trqr9KXHEVoi9+UXfcv9YPXN77LkOpJeQyL/rSriYXUi6uKL9Ef9vMRu5Y1XpZ/W0yiG8o3/Idx1v0fIuiwPou71WbOK9prsCYEnCYWdflvabrv76ZXNFo22s5yvZyuMz2v20i495BXJPRn+9gGv19ZWmMKVee1+zzxs7zdfC21sFt0KBBgwZvGr8a++s3iRensbyJkn4NGjRo0OBtRGPn+UtwYQcKMPmldzOXKV/lFjVo0KBBgyvJFdl5vp1SVC6Hxi6zQYMGDX61uSKTZyNFpUGDBg0avJNomG3fBC5WI2rQoEGDBu983rKd5wVTLfCOMde+Eg0zboMGDRr8avGWTZ4NU22DBg0aNHin8qZNnkemM9x3kdnynb7bvCb40z+92i341aLR31eWRn9feRp9ftm8lsJQgwYNGjRo0OBFNAKGGjRo0KBBg9dJY/Js0KBBgwYNXieNybNBgwYNGjR4nTQmzwYNGjRo0OB18qrRtoIgPAIE3oLzBoDEW/C51wIWTdNWXO1GNGjQoEGDt46rEm0rCMIhTdM2XPETXwHeydfWoEGDBg10GmbbBg0aNGjQ4HXSmDwbNGjQoEGD18nVmjz/6Sqd90rwTr62Bg0aNGhAQ2GoQYMGDRo0eN00zLYNGjRo0KDB6+SKT56CILxLEITzgiCMCoLwhSt9/rcSQRAmBUE4KQjCMUEQDl3t9jRo0KBBg7eGK2q2FQRBAoaBW4FZ4CDwEU3TzlyxRryFCIIwCWzQNO2dmsPaoEGDBg248jvPTcCopmnjmqbJwPeAe69wGxo0aNCgQYM3xJWePNuAmYt+n1147Z2CBjwmCMJhQRA+9wY+o/Hz+n7eCK/7fIVq/RWP3X90VotkK5e8VlNU7au7xrW6omq///1j2my6pB2aTGonZjPaM+di2kS8oJVlRQO0h07Ma3/7xLCWq9S02XRJe+RU+DXbM5Usaidns9pkoqjNpkvaQyfmtUSh+o7p79f788z5mJav1C557dRcVivJl963cLas7RlNaI+ejmiVmqLNpEqXHI/lK9rXd09oe8eS2rGZjPaDg9Paz47OaYAm11VNUTUtW6otnkvTNO3hk2HtxGxGA7RjMxntfCSn/dvzE9qBieRL2lmtK1ryRfcpU5IXn4U3qb/ftD6P56taqii/9PVcVfvfTw6/5t/PpIra3z01os2kSto39oxrR6ZSWqWmaDVFXezTs+GsdnxG77+/eXxY++bzkxqgPX0+po3FC5d83hNno9qPDs285nk1TdPC2fLLHlNUTTsynf6lnvFGwNCbyw5N09YBdwC/IwjCzqvdoAZvLpWawk+Pzr3i8feubafZbSGer/LcSBwAoyTy6R09iILARzd3kinVGIsVieYqhHMVzEaJX5wKE89X2bEkyL1rWjGIAj8+PEvQaQEgnq+SLsocmEhSqSmXnLPLb2dlu5vugJ0z8zmGWt0EHOaXtO3+o7Mv+dt3IjcMhnBajJe8pqga6ouGxDPzOUZjBbIlmWK1znymfMlxj9XEu1c2s6zFSbWmMBwtLI6qPzg0w/OjCQySgCgIAAiCwJ0rW1jV7gGgxW3BYzPSE3Qwm770swGSBZmz4fyl57SZsJqkX/7i30JSRZl0SV78/cRshuFonoJcZ1O37zWfrXavjTtXthB0mnGYjCQKVY5MpxmO5vn2/in2jiXJleukSjKjsQIbur28f0MHADcOhugLOi75PK/NyN1rWl+z3dW6yoGJ1Msek0SBdZ3e1/yMl+NK+zy3Al/UNO32hd//E4CmaX95xRpxhRAE4YtAQdO0v36df3rlbsg7B+EN/O3r7u+aolKpKS87QM+mS3T57ch1lXRJpsllecl7JPGF5u4ajtPkMjMcLXDrUBPPnI8BAu9a0UwkW8ZskHBaDHxz3xT3rW3jrx49z+0rmrluSfBl2xbLV9g/nuLu1S8dVGK5ChOJIuu6vBilN7RuvqL9/WaQLso4zAaMhheuO5KtYBABQXjJYmMqWaQkKyxrcfH/3n+S+9a1s7TFic2ky4EPR/NEsmW8NjP7J5J8cGMHLouRh0/MYzMbuGEwBMC/7JngI5s7MRsunRCjuQpTyRKbenyX0/w30t/wFvV5tlRDkgQE4MhUGpvZwPouL3OZMufCOSaTRT69o/eFRmgau4bjtHqsqBqcDWdZ0eahP+RgJJanzWPFZjJwej6LSRJRNI2+oGPxWdU0jUyphtdues22nZ7PUqjU2dzr/2Uv7zX7/ErvPA8CSwRB6BEEwQR8GPj5FW7DW4IgCHZBEJwX/g/cBpx6y074+c/rPw2uOLPpMkenMy95Xa6rDEcLgL6iffRUhLJcXzw+nynzZw+c5ht7JlAWtkE+m4nHTkfw2owYRIHeoL6LBGh2W/HaTRgkkYDDTKWu8Ie3D77ixAkQdJi5YfDljwccZsbiBfgVzO3+7oFpvrp7nGy5tvhas9tCrlJfnDgPTKSoKyqapiEJAqIAo7ECX7hzGUGHib99YpjRWIEDEym6/DZ8djMr293cubIF+8KkWpQVnj0fJ5zVd5of2vjSiRPAZTHS4bNegSt/a9A0DYtJxGE2YDcb2LEkwGCzE9AnFZfFgEEUqSnq4t+cmM2Sr9YJZ8sMNjvZ3h/EY9MXoJlSjVNzWfaOJZlJlYjlqyxtdi1OnOciOaaSJZ4bvTQW82w4x8+PzXN0Oo1cf+FcS0JOVnd43tI+uKKTp6ZpdeB3gUeBs8APNE07fSXb8BbSBOwWBOE4cAB4SNO0R96ysx07pv80uOL0BOzsHHhhgjo6nebIVJpyTeHWoSYAksUq0XyFM+EcD50Ik6vUCDnNeGxGJuIFYvkKAM0eC0tbnByeSpMqyQw0uVAUjXyldsk5717dyt6xJNFc5VXbJgjCJTvimVSJeL5Cta6b1AabnRguWslfTKFa5+3E4anU4nW9GsdnMgQcZj6xtRu39YW+iWTLHJ1OE89VKFTrixaB+UyZv3liGL/DzFSyyKHJFMdmMwyGnLS6LQw2OzEbJLoDdh49HaHVY1382w9s6OAjmzo5OZsFwGqS0DSNvWNJFEXlzHwOTdOwmiRa3G/fyXMqWeKbe6c4G84B+uT3vf1TPHs+hskgki7V+MimTo7PZDgxm0HTNFa1u8mUZJxm/R4cmEgtTo4bu32savcw2Oyky29nfdelplRREPDYjNzzIotK0GnCIEGuUuPg5AvPg8kgYjFeumgpy3W+sXuC+kUT+hvhVUuSvRVomvYw8PCVPu9bjaZp48Dqq92OBlceoyQioHHBGhvPV8kWZe5Z1cpgi4tYvoLDZEAUBe5d04bPbuLhkxE+uKGdgMPMrUMt7BwILe5Q0iUZi0lcnAR3Dcdp91qxGCVCTssrNeNlOTWXxWQQGWp10eK2sr7rBTPhN/dN0RPQByqrUeInR2b5yKbON2rSvWIYRBHhMiyaS5ocLGlykC3XEEVhcVCdTJboDth58lyUo9NZ/ut7V3BgMoXNZOC/3bcSTYPrB4LIiorNZODBE/OUawr+hZ2qzSixos39kvP1Bu1IosCpuezicbNR79NovsLSZieCoC9W6oqKx/baZshrje6AnQ8s+CNBtwvnqgqJoozfYcZhMVBTVFa0ufnZsTlOzGa5Y8HdINdVorkKazrdOM0GMiUZAQGTQSRTkplKFlnW4rrkfANNzpdtx9HpLGs6vLR6rByfySz6n1+OREGmxWNZXDy+URryfNcel3dDbrhB//eZZ96yhryNuCI+uFylhqJoiz4XRdV4biTO9QNB4oXq4sS2dyzJVLIIArx/XTsGSURRNUpynWPTGbb3BxAEfZc4kypdsnN5MdlyjR8fnuWjmztfspK+HGbTJdq9tpc9VlNUhqN5+oKO1/vZ16TPU9M0hJcZPAvVOtWawvlInv4mx+J9qikqE/EizwzHuG+dvpDJV2oUq3Wa3Va+f3Ca25c3U6jWKVTrLG2+dEBXVI10ScZmkihU6rhtxsUFUK5SI5ar0h9yvKQ9FxiN5SlWlcsxL14zPs9ItoLPbsJkuPwJKJbTLR8tbiuZco2yrDCeKDLU4iLoNPPEmQgaAv0hBw+fDHPnyhay5Rqr2tyIL/O9mE2XaHJZXrLIe6Vn/ZWei9fgmvN5NrhG2P6lp+j+wkNs/9JTV7spbxtiucolUZOiACZJRBAEnj0fX/S5OM0GVrS5+PDGTh49HWHPaJw/+vEJ5jNlTs5nmEqW+MaeSX5+bI4//MFxzkeyKKrGfKbMP++eYM9ogu8fnCaRr+C2GvnUjh4kUeDHh2f46dFZ4KUm11fiyHTmEr/TBSo1hfuPzLG81f1LTcrXIo+ejuo+XfT+mUwUeX4sQTxf5Wu7J1jW4lqcOJOFKvF8la/vHqfZaeFfn5/gH54dZfdogmMzGQDmMhXOhnPYTAZcC1aA7x2Y5tCkHrn5g0MznJrLEM9XOR/NM5cpLZq+XRbj4sRZrNYXzfQXmMuUkUTxkolzOlnioRPht6x/Xi+VmkK29IL7IFmoMhzNk1twKbzSMzidKvGzY3pE+kMnwqiaxp8/eJYfHJrh/iOznIvkuH4gSNBpXvRvuqwGzAaR37mxn56AnXPzWSoXmeTPR3L8zePneeJMlNFYgVJV4eGTYaYSRR47HaGuqByeSlOR65yPXBrB/K3904ttfjO54mbbBtcGc5kyk196N91feOhqN+VtQ3/oUtNRta4yu5DecMGEVVdUUqUqIPDVXWO0eW1s6wuwvNXN0ZkMy5pdJItV2r0WwtkKNw8FqSnwxNkoNw2GuGd1C6OxAoVqnT2jCUBAA25cGkJWVDZ16tGD3zkwzap2D6dms9y8LETI9fLm3Bf7iC5gMUqs7/ZycDLFxu7Livi85rllWWhxB//o6ShdfhvLW9y4bUbuW9vGvvEkdrOB8XgBm0lf4IRcFuKFKq1uK60eG+ejOdKlGrcvb+ajmzqYShaZShZRNQ2TQSRfqWFe2HV9aEMHggCqpqeYfGvfFMtanGztDVySbpIqysTyVYIOM6qmB5MZRAH1RbuqDp+VZvfrM8u/VSiqxr/tncJmlPjY1i4AnjoX4+7VrewajrO+y8v9R+f4zHW9qKrGz4/PMxLNc+/aNs6HcyiKyo8OzbC510/IaeF3buhnPlvGZzezovUFU3eHz8aHN3YyFi8gCQJ1RWXXSJyxRPGS9nR4bYSzFVa0adwwqMcVbOz2UVdV/AtBdfeuaaNYrZO5KJ0G4MMbO94SV0TDbHvtcUXMtt1feGhx8pz80rt/qc+4hrjqZsS6olKqKfzg4Ax9QTuj8QJDzS5Wtrlx2Uxomka1rlKWFb5/YBqnzcCKVjfJokyxUueu1a08cTZGt99GX9DBE2ejOM0GzEaJ6WQRv8PE6k7v4g6orqiIgsC5SA6PzcTxmQw3Lg1hMUpkSjI2k+E1TWtlWSGWr9Dlt7/ey73q/f1a1BUVSRSoKRrPDccZaHLic5gYixcoyXVAoMtvI12UGYnmuXNlCxPJEtlSjaJcX3xPi9uCy2LEKIl47cZFM7vFKGExSjxzPoYAXD8YolJTeOpsjD1jcf707hUv6f9zkRzzmTI3LW16vZdzzZhtAcLZMiGnhXihwum5HNOpEms6PByZSpEt1whnKrxnbRsr2t24rS+4OGqKeomV48mzUdZ2erEYRZ4bjjPY7GLveJL+kJ1yVaUnaMdpMWA1SSQKMmaDQL6s4LAYCDp1v3M0VyFXrrGkyUk0V2EuU/6l8zZB310v+LQbZtsGl8cFM27DlKszkyrx6OnIa74vnC2zZzRBJFfh0GSKDV1eXFYjBkHgwESSZ0fiqKrGDw7NkCzKnA5nmUgVaXPbOB/Js3tYNytWaiobu7wsaXIiigI7lgRwWAykSzIr2t2cCec5MZNdPK9BEhFFgaFWN60eKyva3JgkkUpN4Z92jb/ETFhXVJ48G+GRU+HFaEOrSfplJs5rnrKscCacQxAEzkdyfPW5McYTBc6Gc/z48CyxbJX1XV4kUVhI1M/ws+PznJjNsrHHx9ZeP+cjeZa3ughnKwgidPptlGsKp+Zy/PjILOGs3r+Fap01HW4mE0VEQSDgNDPY7CJTvnT3kypWGY0VcFuNHJ5KX41uedNoces++oDdzMo2N26rgZ8fn+e6gSCnwzm6/Da29QdwW03MZcoUKjUmEgUsRomj02mqdYW6onJsJkO1rvDVXeOIgsDzYwl8NiOJvEyT24wgwGNnonz5iREePhEm4LBgNYn8zePnF9vS5LKwZCGYyG42EHK+VBzkYk7OZhmNFV7x+NPn45ctJNIw2zYAXjDjAg1TLtDmseI0G/jm3kk+vrV78fWHT4bZ1ONbzA302U3UFQ2bycBNS5sWfWm5Sp0On51SVWH/RJLxWIEN3T5CDjPdfhvdATsmo8h8tsJda1qZSBQoyQqrLR4kQUBA4PBUmr6Qg3y5zk1LQzgtBj72tX389/etom0hMKJSU7AYJTQNzoRzLG91ce+a1pekQUiiQJvXhkkSXzE46e2OXFepKSqC8EIqa2/QwRfvWUHAaUauq3x8axdosOt8nNF4gfevb2dJkxOXxcDhyTT/8YfH+Z2b+jAtBP6sbHNzdDqNiMDp+Sx3rNQDiFrcVv728WGuWxLgudEEs+ky717ZyrpODydmMwQdZvaOJXFaDIRcZnaPJNjc6yNfrtMTvHTBcuEeVuvKy+aEXisUFlSYLkS+GiSRXKVGj99BoapwbCbLjQMhEoUXFg7PnI9SrtYxGiT6Q85FlSeDJOK0SFgMIjcNhphIFtm+JICmasiKhsti5PhMmk6fjd6AjVy5ztHpNIqqYRAF/tNPTvDJbV10+l8IdnOYDTjMrz6ltXmtGKRXfv7ftaIZ02WaeBs7z19x2jxWur/wEG0e60te+1XegYqigMdu4r517Ze8vr0vgO+i1AKzQULVNEZjBX5+bI5KTSVZlGlyW9ja52dLn5+JRJFPXdfD7pEEf//sOG0eG3/7xHkKZZktvX6eH00iiSKHp9L86NAMZyM5Hj8TYXmrG7NBZD5T4ch0hqfORWnzWPnJkTk0TaNSU/jWvinylRoWk8hwLI8gCEwlS4s7z3RR5pFTYQRBYGmzi96g45eJPHxbMJ0qcmwmg81kYHWHB0XVsJsNLG1xYTVK/NOuceqKRixf5cGT87xvXTt1VePARIpHTkVxW418ZHMHnV77YqpEslDl6HSG54ZjzGfKPHE2yrlInnRRZnmbi+FYAQGRD23s5Fwkj0ESefeqFuL5KnPpEqfnsxSrdSaTRcqywky6fMkEWa0rfPfANIqq8c29U4viGdcimaLMaOyFYJx8pUayIOO2GTk2k6bHb2NLXwCb2UAkV+FvnxjmyGSGozMZNnbrvnq/3cSekQTHptNYjAbC2QoPnQyzusNDl8/ObLrMdw9M8/PjcxyeyhDNVrCbDciKSsuCP/i+de1s7fWjagJPnYtddvtn0yVsJmnR9fFi6orK7hHdinQ5vG18noIgPA38N03THhcE4b8Cbk3T/v3VbtdbwBX1eb7R91wjXHEfXLFaZ/dogsEmJ50+G6Io8OcPnsZpMXDrsmaUBZUaQdB9a6fmsjxxLsq6Dg/hbJlkQWY6VeaOFS2saHPT7rXyZw+c5u7Vbazv9nJoMsX5aJ6bloZocVuJ56vYzRJWo0Rd1Yjnq+wbT9LitqKhsaLVTSRXWdwVKKpGNFeh2WUhVZJfVuv2DXBN+zyrdQWjKPLXj53n41u6aPFYqSkqU8kS/SEHxWqNh09GCLkszKaKHJvJsr0/wPZ+P0GnhViuwkisQIfXSrZcZ0mTg6fPxVje5uSpswluX9FEwGGmWNUjO9d2ei/xb373wBRdPhsmg8SDJ+c4OZPj1qEQazu9DDa78NhMTCSKhJxm7K+yU7rgW5ReLXnx8njDfV6S60wlS9QVjZXtbjRN41+fn2Q2U2Jnf5CaqrKhy4+8oND0s2PzXDfg59nzCTRgc4+Ps+Es3X4Ho7E8LW4ry9vczKRKlOQ6y1vdlwS9aZrGvzw/yce2dFFXNMbiefaOJdFUeO/6No5MZWhyW1hzUbSyXFcxSsIrLg73jiVZ0uR42e9Cta7wzb1TfOa6RTnB1+zzt5PZ9k+BPxMEIQSsBe65yu1p8CuM1SixvNXFmfkczW4L1arKtr4ATouBbFnm+TE9svN8JM+7V+kRtC0uC8+ci3NgMsWf3bOceCFMpV6nw2clV67x0S1dqJqGpmls6PaxtMXF7tE4uXJ9Ufrs58fmmEqVuHd1K1PJEu9d28aR6QzpkkxP4AVzYKFa58x8jpDTjM0k8Z3903x4Ywf5So2Tc1l2LAkSy1cW805fbRB/uzCXLuG1mfi7p0a4e00rNy8NYZAEvrVvio9s6qTda2X/RJLz4TwOiwGfzUSry4zXbsJuNvDb3z7CTUtDNDvNPHE2xgc3tgMCFqObW4eaSJdq3Le+DZfFyO6RBHaTxGNnIgs7ToFtfQEi2TIr29zUFQ2DJLK2w8d717SzusPL+Uh+0eyfq9RxWQyv2O+VmsKJ2SzrOoXF4gBXk2y5RqFaZ2O3j1RRxmUxsK7LS7FapygrZEo1KrU6f/XoeTb2+Lh+IIDXbmJ5q5PugINHT0c4MpXm9HyWjd0B5rNljs9lGY8V+N2b+njwxDxFuY5BFPnk9h7MBpFbljVxYjbD2g4PsXyVrb0BzkdzzGcq3LwstCh2EM9XSRQqHJ3OkMjLfHZn78uK62/te2WdW7NB4lPbe15Xn7xtvjGapu0S9CXF7wM3aJqmLGjIfgWQgWc0Tfv2VW1kg18ZRFHAaTbisZkwSiLffH6SHUsC/OveSRxmIyZJ4NRchnaPjY3dPkySyD/vmUDRNJa3unjsTAyXxcC/Pj+JQRT49v4ZBpud9AbsuC1GWjxWHGYD0WyVJoeZXKWGy2LEbzfz2OkoxWV13reunV3DcTZ0+7CbDXztuXE+vrULs0HCbTWyrd/Pt/ZN8YntPexYEuAHh2ZY2+FhIlFkx5IgT52NEXCYXzPPcypZxCiJtHqubTm5f907xXvWtPKRTV10+l9Ilr9vbRtnwjnm0iWyJZlYroLdbOcnR2ZQNDBIAh9c18Fv7uxlqM3FV54eRVYURmNF9o4nuW5JkJ8cmWU4lmdLr5+NXT40NCYSRQqVGtV6nQdPxFjd7uFMOM/Ny0L84mSEz1zXc4kC0a6ROBVZIV2UKdcUvvLMGH9857JLfNB1RUWuq/zw8Cy/sa2b4jUimdjiti760feN6yIgfruRLb0+QOC6JQFqqkqTy8y+sTg/OTLDTUubOTCRpN1jw2E1oGoaR6YyjMdL/M6N/dywxMr/fGKYM+GcngZU1jg2m8Z8fR+JvMyJ2QxHptL0BR2LEcrlusJ4PE/AaaLNY+OZ8zFEQUAQYHmrm4EmJ8aLfJqz6RJBpxmzQdL94ej+1qlkkXPhPDVV5a5VejrXBUGGbKmG2/bypt2Ledv4PAVBWAm0ALKmaRcM7/cBP9I07bM0dqINrjBmo0jAYUISBbb1B3jmfJw1HV429+o7C6/NRDhX5SdH5pAVjU/v6OaOFS0MNDu5Z00Lp+ZybOz2MR4v4rUZuWVZiH3jSb5/aIo/uf8kPzw0w0CTE6/DzIFxPTHf7zRiN0k8fibKw6fCHJvJLA6+n97Rw9Pn4iQLVX54aIZMqcaGhZ1Cp8/G+9e3M9ji4uNbuynLCnesaMFrN71mAJGAPjhd6/z61i4mEqXFifNrz41TqNT46q5xvn9gmtl0ma6AnZDLzHA0T6ok81vX93Lz0iZcViO3DDVzYiZLrlznuiUhbl/RzJ/ctZxHToeZSZdocVn5h2fG+MozoxyYSLFjSYBorsKZuTx/evdyOnw2bl/ehM9uIpIt8dMjL5Su+/ITw8RyFT66uROPzURJVgk5zZeU+AI92nMuU+Y3tnUDXHWLQCxfIVGoLv6eKcncOtTEb2zr5tR8HlnRODydRhJF9o6mAIFKXeOula0YJZE/u3uIVq+Fe1a10OG18m+f3Mgf37mM7+yf5g9+dIL3rG7FJEo8N5KgUldIl2Tms2X2TiRJFWVaPVZ+clEJwIl4kfF4abFN2/oCmAwivUEHHT4biqbxrX1TPH0uxmiswFSyRKGiL0AOT6U5Na9r8XrtJtZ0url9eTOjsfwlEdCPnnntKHt4m+w8BUFoAb4N3Av8b0EQ3rUgut4OnFx42zu/UGGDa4Knz8XY3Ovj8TNRbl/eTE1Rmc9WuGWoiUS+oqeddHs5PpPlxkEfXX4739k/xeZeHz89MktJVkkVZLr9NhxmiZVtbhJFmc29frb3BfiHZ8boCRoRgDUdHvZPJJlOFfnx4RmuWxLkPevamM+UWdHqZnAhsOWpc1GWtbgIOIzsGo5zw2CIyYUI3lylhtdq5Fwkz92rWzFIIt8/OM1HN3e9RID75bh4F3ct0+ax4re/4M9a1e7m+GyGoRYXkXyFD27o4P6jc6QKFR46EebLH16L3WTgh4dn2d7ro9VjIV2q8etbu/kvD5xmPlvmC3cs4zsHJlnV5uFcJE+r24LVJNHstpIuyfzFfauwGCTOhXM8dS7GeLzA+i4vkVyVj2x2c3xBrej6gSBuqwG/w4zfYV5Mr3gxtywLXVMBXblyDVEQyJRkEnmZnx9fEEbQ4D/dsQyrSaI36ODYTJpHT4cZjxf59HU9GCWR5a0uvvz0OHaTyH/88UluGwoiqxor2tx8bmcPD5+IMJ+tkCrKvHdtG985MM2yFhd/98QIf3L3co7NZAi5zJcE6K1sd2OQ9FqrqqpyNpyjJ2BjNl1hIlEgkquwvS9Au9eK8yKVJ4AtF5Unc1mMi4FDrR4rQccLbuEPXqTZ+2pc8ztPQRBswE+AP9A07Szw5+j+T4BZ9AkU3gbX8najEXWr8+TZKMlClafPxXRTrNeK2SCxqceHQRT44cEZHGaJFreFck1FEAVSpRq/fWMf+XKN3SMxtvf56Q852dLr4/O3LKFaU1A1FZMk8XdPj/LJrd386/OTjMXynI/m8dlMxPJV5rNlTJJApaawut1Nta6ytS+A127krx47z3//xVm+e2CKB4/P84/PjjEWK/KetW0EnWYmkiWGWt0cnkzx7EIdxQt+ok9s71kMcjk5m2U8/sq5b28XBEG4xNe1psNLplRjKl0klqvw+e8f444VTUTyVT62uZOjsxm+e2CaT+/oQkVPQ3r8dJjdI3FuHgxRqNb4x2dHOT2X5eBEikdPR1jS5CBRkFFVjSfPxHjmfJxHT0dIFausbHPxJ3cP4bEZ+e3rexmJ5kmXZFwWI70hBz3Bl06YiUJ1QUlK19qtKRrD0TzqQtTtSDT/kr+5kvSHnPQGHbR79V3drcub2D2S4LHTEeS6SixX4S8ePMNXd43hsEjctCxEPF/l1Gya58eSrOlwIdcUvDYjTrOZb+2bJl2qMRwpsG88gVEUyFVqVGsqH9rQQcBuRhIFzsznyJRqfPfA9KKKF4AgwPoufUH6l784x66ROEGHhS6/jVRRpi9gJ1+pcWI2i6bpfaqo2quav20mw2WZaV/MNT/haJpW0jRtq6Zpjy/8vkvTtK0Lh38CvE8QhL8HHrhqjXyHsucLNzH5pXczd9HD+6vIynY3bquRDd1e5tIVnjgbRRIFWtxWvntgmodOzvMveyZ56MQ8R2fSnJ7LceNAkL95YoRyXSFVqnMumufgZIpCVeG5kTi3r2hma39wQXWozld3j5MsVPi/T4/hthl58GSEnQMB/u35SQIOM+u7fZwJ53nybJRv7p1kOFrguv4Am3t8XNcf5DM7+/it6/tZ0uRkLFbg8FSK+xYm0duGWrhndeti4eVMSWYmVVq8vhaPhcArJJc/fS52WWW/riS5Su2SlI4Ts5lLzW4LA7vJIDLQ7GAkWmB7XwCDCEdnsmzqCdDf7OSJMxFaPCZShRodPisFWeWGwSaSRZnD02k6vTaeOBOlWlOYTpcIOEys6fBilASWtbjQBI2g3cwz52N8ffcE6VKN50YSPHwygtEgsbUvQLZUYz5bxmUxcmI2w2y6dMm1WA0iHV4rp+aynJ7PcWwmw0yqhLKQBRHPV7kWsBgltvcHuHGwiYBTFzBA0GUlB1uc3L26lUK5xun5LPGCzL6JNGOxPE1OKys7PGzvD+C2GTg8lSJfkRmO5VGB3aMJfnJkjni+zI8OzTCbKeGxmegO2tnU68MoCpwN5/n+gWm++tw45xfShA5OpviDWwfo8tlJL0STf3RzFy6Lkbl0mU6fDYMk8NCJMEen9Yn8cnnybPSy3ve2MNu+EpqmFYFPXu12vF3Y/qWnFifCtms8+ONa4oKYuFMSuX1F86J25ni8QLZcQ9XgUzu6mU6VaHPbeODEHGfms7xnXRvfOzjN+9e1E8tVuf/oHCva3AiAhq7Q8vS5OHesaGHPWBKTCIWqwma3j1uGmgCB969vRxJFOr02ROD2Fc0cGE9RqNZxWQ24rSZEUUCuKzxwfI7bljdjM+l5doem0mzp9bNrJEauUqfZZeHXtnRRqan6ar+uMJcu0xt8wbRVU1ROzWVZ2+mlLCsEnWYM4rW1xt4/nmJ5q2sxgOnF5aqWhByomsrfPTXGmjYXyYLMvokUm3v8DLW4mM+UqdYVfDYz/+Xn53jPmlaOzGb50AY97zORr/LhjR3UNY0dSwLUFY1yTSWcLnM+nKdUVej0WjlvNzESy1Go1NjcG+C+de3MZ8rcs7oVQRAWxN9hJlniyVqU5a1uNPRKPBcKmn9t9wT9IQcuq3HxtYOTKdSFyXNbf+AK9uwr87Njc9y8rAmH2cD6Tg9LQg6qdYWVbR7ms0X+79NjBB1muvw23rW8mWxRptltYSpdJJKpYpR0kYm/+sBqTs7lCGcq3D7UzPHZFEubnRyazBB0WVjW4uK5kTi/972j9AXtnJrL8dmdffzw4AzlukKxLOM0G1A1sJgMXD8YxLngF57PlFnT6eXhUxHuXdtGplTjhoEgdovhdWnbdvguz03xtp48G7w+LlYRej1cMN9e+P+eL9z0ZjftbYXHZkJVdfPaXata2NDlxWk28cz5aX5jayd3rGghnK2wtNnFr2/p5v6js2zvD/LZnT0Uq3XGYgUMkoDTbOC/v28lNUVlQ7eXXcMJJFGgrmqcms1yw0CIb+6bosNnwW42omoavZU67T4bVqOe8+m2GfnqrjF+dHiGrb0BvDYTLquRuurg758eo66ofGRTJ3VFZSSui203uy00uy1kyzUiuQrNbgs2kz4UaBqUZH2neTaSwyhee4pEFwqOX+DF0cK9QQeqqmE3SQiiSNBl5vO3DlCW9VSKyUSBm5Y28Ye3DzAWKbB3MoXTJLIk5KRQqbGsxYWsgKxqBBxm4vkK0WyZgRYngqCxucfHI6cjFKp1Vnd4ORMu8O6VLYC++DgynWF9l5dUQeZHR2b5rZ29eO16n9cUlWi2wvcPTvOhjZ18YlsPR6fTixMngNkgki7qu6k3q/bkGyFXqbGtL4DdJFGWFQJOC0Gnnkv80Ikwa9rd3LosRG/QQbWm8bPjc4wnCpwJZ/nAxg76QnbG4kVuXtaE02Jie3+AeK7C5l4/vSEHM8kik6kyty9vwmkxsqrdQ5PLzMMnw6AJ5CoyZyM5rusP8i97J/A7zNyztp0TsxmWtbgWo2QT+SqJQpWPbe6iWtOrrFhNEr0B+2VPiPDKtUNfTGPybPCaXDxZ/qpL952czWIzS/QFHbxrhT5gzmbKfGv/JJ/Y1o2GXu/TbJT49r4p1nR6+K0b+jkylabFZef3vn+MtR1uHjg2R1lWODyd5l3Lm6nUVZL5Kv/+5gEOT6fIFGV2jcTY2O3lybMReoJOitU6K1prnAnnuGVZE8dmMmzp9bO9P4BREjg4kea7B6e4c0UrbR4r96xpJVepMRIrsLbTy0b7paZZi1FkNFZgLl3m1iF94DIZROYyZZKF6hsS2L6a/OJkmG19AT64sRObUQ9oGY8XOD2fZSJeZOdAkLFEAZMkUqqpuCwGAk4zhyZTnJjN4LAYQYBIpkxnwMaPDs3iMBs4Fy3w+7cN4LOa+M7Bae5Y3sxIvMAfvWuQB0+EOTCRQpIEjkymULVuNnT5WN3uxWs3L+bpGiWRNZ1elra4+OfdE9y5smlR5PwCq9o9/OzYHF1+G1ajYfFvrwZlWeHhE2HuXNnMXzx8lk3dPhKFKocm03T6dd+/22ZCVqBcUzkylaLJaeGfP7lJlzUUBFa0uZmMF/mzh07z0yOzgIggaOSrNRxmE5IkcdeqFiRB4Nh0mgOTaZaEHBgkkd/Y1o3NKOEwG3HajPT4HewZS9IdcBDNVxlsdlKo1ilV62zrD/D8WILJZJFmt4V3rWh+yfXoSkiOX8rH+WIak2eDBpdBtlTDbpZo81p54PgcT52NsbHHxyOnwtyzppU7V7TQ4jbz5SdH6AvYORPOc/uKZmwmkQ6vjT0jcR48Mc9AyE6bz8r+8TQ2k8RgkxOLUaQv5OAXpyK0eiy4rEF++9tH0DRY3+UhnKsSL8h8bGs3uXKNfWMJunw2JhNFtvT68TvMuK1mPrq5g3SpzvOjCd6/oYMN3T5K1Tr7xhOcDedY1uKiUlM4PZ+jWK2zusPD+9a1YzcbUFWNP/35Kbb0+S872vBaZX23Fw2Nh09GqNV1rVvTwu7kt27o49nhOOmizJlIns/u7OX7B6aYS5fJl+u8b50e9fmu5XraSqFaZ/uSACGnGVGAXefirOxw81vX9/HYmQhPno1yejbLynY3qaLMu5Y3U5br/OTIHBu6fJwL55AEjcFmF1PJIj85Msv/c+sgFqOE1SSyazjBuq4XSsKlizL7xpNMJoq0eaxM5YpXdfK0miQ+vKkTVdW4bXkzm7p97BtPIIkwEi3QHLKQKsrMpcvMp4tMp8p0Bxz8xYOnKddUnBYD+8eSPHQqTKvbTLZc53dv6qck11FUmEwU6Q7Y8dtNvP8fnuempUE+d103GnB8VhdRWNftpd1nZSZZYn23h5qicXAqhd9uIpqtIghwai5Di9vKtr4AByaSzGbKi0Xr948nWdbiZN94islkkaqssvlFggnHZjI0uyyvqyTc1bcJNGjwNuDgZIp4oYrZIOK3m/j1rV2sbHPzuzf2M9TiJlao8ql/Ocj5SJ5fnIrQ5rMRz1X5t+en+NS/HMBnN3FkJkNP0IGISKvbgtEgEM5WmEyWaPVYSOTK/M3jI3x7/zQeq4G6ojIRL2IQdMUZu1HEKIn0Nzl4fjS56Ksci+f58pPnGYkVuWFpCIfFwBNnIiQKVXaNxLGYJB48Po+maQv1JzWShSo2k8SjpyPMpUv8y/OT3Le2nb6A4xX7QFE1ppLFVzx+LZAoVJlKFPHYTCxrdjIRL3BuPsv/fWaM3pCDeKHK/okkiqoymy7wrb2TqKpGoiCzvMXFLUMtGCSJ7x2cZmW7k0JVIVOuo2ka/7hrArMRHjkV5jv7JvBajaSLMl0Bm56zWZT51v5pjk6nqasqiYLMv7+5H5NB4j/+8BiHJlPcuLSJklznu/unePxUhNUdHto81sVKNy6rkfXdXu5d08aGbh+r2t2vccVXBlEU2NTt4/nRBNPJEqWqittmWqhQoqGoKjcva+F/fnANFVmlWleJ5KocmU4zlylhM4rUNYFKXeHkXIbJVJn9k0m+d3CavWMJ/vRnp7AaRfJlmb9/ZoKvPjfBQJOD/+9nJ/iPPzxOVa4jirC518+Gbh+tbguFqp6G1e61Mp4oEstXSRdlUgWZ0YUoZUXVlZ7QBFRV492rWinW6vzs2BzTqeJi4FzAYcJufn2i/I2dZ4MGl8EtC342VdVY0+nFbJQYjRWoKQpyXaXXb+euVa3IdY2z4Qx2o4TJJLK0xcHBiRT7x1N0eG1kyzVMRgVJhPFYkY3dfkpyjS8/PsJsqsSOJXrFj+VtLtZ0erGbjTx9LopRErj/6Bw7B4LcsCSErKo8cSZGqljFbzcRcJi5dVkTo7EC0yldkDxbrjPU6mKoxcXaDh+CIGA2SKSKVexmAzOpEu9aoQcY/frWrtf0r1XrCiPRwjVbxixfqfHwyXkePx3l/RvKzKbK+Jxmlre4+bUtXfy3X5xla6+fGweC1FXYNx5n73gCn83E0iYXH97cxT/uGmXHEj+Pn45yYjqLIIms79RzbV1mA8miTLJQZTxWwGkxs6nbS6Wm16nc2OtjXbuXIzNpRmIFvr57nCUhJzcOhijXFJa3uVna7OJ8JM/1g0E29fjpCzl4+ESYozNp3r2qlTUdHkJOCxPVIpWawhuXtX3zmMuUOTyVZkO3l7PhHMubnYTzFbw2I8WqwrouD7/3/WP8/i1LuHlpgD978DT5co2qoqIJAl1eG/O5EmPRIoIAfUEnPUEHE4kC5ZrCBza0MxItEsmVSBZr7BtP8Z61bZRqKh/f2k22XOMvHznH7908QLvXxqp2E0Otbg5OJrEZDaxsc3N4Kk2zxwqaxrlIjm/smeBzO/swGUXavDbaPFZa3RZ+fnweEBYDs9q9L/hEL6rp+ao0dp4NGrwGY/HCYp5YLF/lfCTPVLLIs+djfO25cf7rA6fZP5nCapSI5Mocmc0SyZW5//Ac4UyFmirQ4bMwmchjlgSanGbKNRUEgS29Pv7DTUtY0+lBMhh44MQ8K9pcNLktJIs1Dk2mGGxy8aGNXYzHi2iqwLHZDIcmUzS7LTy7IE9221AzTW4LQaeZWE73V/odRsqywtlwlsfPRKnUFBRVY0uPrsG7dyyJzaTr78oLO5+X40Kqis1kWFxEXIs4zAb6Arrw93Akz97xJB/a0EHIZeIrz4zR6bVzai5Ph9+O22ogXqjR5LRQr6ucCWf5t+cn+PHhWR47GcFpMdDksTAazfPM+Sgz6TJtPitHp7N0+exYzQaOTqdY1e5hR3+QDd0+Oj1Wvr5ngmXNTu5aqacHKZqKy2rkzpUtKHV1Uf3m58fCyIpKXVGZy5Z5z5o2On0vRMBHshWqNZWT89lXueK3jrKsLOaYlmWFE7Np/vGZMexmXd2qyWXlpqFmVrd7+dGReT60qZ1/3jNBOF3mH54d45P/eojegBODJGEzGijLCrKikCsrbOjxYVnQBb5tWRM+q4n3rm0jkZdJFqsMNDn5yMYOfn1rF0VZoVJTeexMlH96bhyDKFCt1VFUjZ8enePf9k7w+OkoLR4LIZeF/pADu0niibNR5lIlblkawmwQKVXrLG15wfzd7bfT4bUuLgQVVeNsOMez52OUG/U8GzR4c5hKlsiUZNZ3+Qg4TKzr9PLYmTDpksxtQ8382/NT7B9PcOPSEN0BO20RC7cN6bvAJ89G+dJ9K/nzh86xstWFhsiu4RhTyTLNTgt/99Qw7V47XpuRlW0OEnmZp8/H6Q7a2dEbYDyW50ShyulwFovRgFESiGQrPH0uxqZeL0tb3PSHnJRretWQ6VSJVe1uXFYDiqpHSp6LlPHaTHx7/zRWo0A4U+V3bupf1F0tynXuPzrHdUsCdPpeuqv87v5pNvf6WdrsvKbUby6gqho/PjLLfevamUiWGGh20Bd08pFNnaRLuin1i/csRxQEqjUVUYT/8L1jbOh0E85WmUoWqSoqNVXDbTUxkynjqtSIZ0vIdYVitU6T00xf0MGPD88ynSqxrdfHuUieB46HGYgW+OnRWcKZMpFchc3dPr53cIrtS/SBey5T5NRcnslkkSanBZMkMpEqcmouS0/Ajs9m4tv7p9CAv7xvFfCCiHmL6+qIwsuKns4Euij8VLKE1STx3rXt/OLkPBu6PDxxNsL+8SSTiRI/OjzDTQNBYvkyNw8GODWri4l05qwUKjJdXhuiAJFsiVK1Rjhdwm2VePxshEiuyoHJBEaDkV/b3MFsuspDJyPMpEvE8zKr2z3sHAgyny0j11W+d3AWUQSX2YjbamRXIs7dq9v4xp4Juv12hqN5bhwM6ZHNeb2knCBorO/y0eK2IggCqy+qxgJwNpzj4ZNhugM2js5k+PwtA6/ZR43Js0GDl2H3SIItvT4MksiqdjfZsj6QGCQRr91ENFclU6wxnSrygY1tnIvk+ebeaf7dDX20eaz82QNn2NofIOAw8Y3np3FZjczlqqzp9PLYaX0QmM9WyFdrOI0Sw5Esa7t8tBtNhNwq1ZrChUx0oygy2OxksNnBl58aYVO3D4fFSLpY53du7KBaU3FZDVjNIuciORQV8lUDq9s9rO7wkC7KaOiFu49Op8mVkxyZSjORLPJrm7tY16mnVagqTCdLesUR+wuSaJ0+G7tHEiwJOZAVZTGt5VpBFAWuHwgymSwwnSrykY2d+BxmZlJF/tdjI2zq8XI6nONru8bp8NrYtiSA22rgdCRPrqwXaq4oKrW6QovHzEQ8j8diZCZTwWSQSBTruG0W+pucfGpHNxPJIvsn0rhtRrb1+Tg4lUJWVTLFOm0eMz87PkdN1Qsr//DQDN/al+bmZSFi+Qo2k8S5SB6TJNLitmAxSrS6zazY1kXQaWUuU+LvnxnjE9u6mctUcFvfeFToL4PbamR1u4eJeIHD0xnqisqNg0EOT6VIlWocmkozkSjS5LDww4Oz+BwmdvQHyFXq5GSVJo+V89E8XpuRR05FWdbswGgUiOVrfOXZMVpdFkxGiVpNwWoQmK9Dk0XgyXMx2n02Prezh394ZowWl402n40DEylCLitem5l1HR6eH0uyfYmfbr9dF563GOjy2+gPOVjb6cFjM+nqTlYjIFBTVL61b5Lr+oPkKnWWNDkvqUK0os1Nm8eC3WRg+kVCFq9Ew2z7K8D2Lz31koLXvyy/KpJ9cl3l2eE4AAGHvusAvc7gN/ZMcOuyJm5dHkLRBB49HWU2VeG9a1vZM5LgbDhLplxHrqtEc1Wi+QrFisxcssDPjof5xic2sqHby8p2J0ubnRhMEiVZ4eh0mg9uaKc/6OC/vncFVUUhkilyLpKnJOuFh1e3ORmLF/jAhjbuWt3CidkMZ8I5JpNF5LrCDw7NcPeqZrb06CkFmqYxnigyHM0zGs0zHi/wrhUthFzmS2oh3jLURPeCtFm6eKlY+eZePxu7vRgkkWTh0mNXkz0LwSugm9OfPBvj1zZ3IYoCByeSxPMyy1ocSKLA0akM6zo8bOrxEstWiOWq+K1GjJLA/3f3EKlijZ8em+PJMzF6gg76Qg7sFiP3rGnFazOhKConZnNU6hpDzR59V1+WcdtNdPhsLG1y0+I2E8tWODqTod1jpdllYWWbh7tXtRDJVPjIxg7eu7adD23sIOA0E89XqdQURmJFHjsTw2c3MRItcMNgkGeH4/QG7Poi6ioxn6kwmSrx/vXtuK1GNE3jsTMR3r2qBa/NxEgsT9Btwe8wkSjIxIoyt61oZmd/AItBwmc3o2mwrNnJe9d1kCzI7OjzMNjs4gPrO8iU6mRKVeK5KhaDiMUkIQoCRkHgx0fmsJgkhlqdrOlw0+axUqrKdPksfO/gDLKqS1s6LEbWd/vQNI18pY7RIPLE2Rj/+8kRfnRoBuuCebjJZeHETJZ/2jXO9YNBul6U96moGk+ci/LFB8/QH2rkeTZY4JcVR3g5LuR8vtPzPa8bCCxWYwA4M5+jy2/jvz9yjr6gnUSxylCLm0ShRofXSkmus388xU3LgsxlitiMEnazRDhXoctnZc9Yml6/FYfFwG9++zC3DjWxZyRByGnGajLQttTGeCxPNFdFQ+MHh2aZThZx2EwU5Qqn5/NMJsv0h+ycmtMFs28cCGKQREbjBawmA+linT++cynJooysqKSKMj88PIsoCKztdBNyWGj32ijJCu0+KydndX9aoVonU5I5PZ+jP+Rg71iCHxya4T/duQxAF0lYMNe+nmTzt5rlra5FLdv+kIO+oAOrSeLZ8zFOh3NYDRLrujwUKwpffnIEp9nAh10dPHomTDhXRlVUDJLE2XCebr+FQkXFJGkEHSYUTeXf7exDEgQmEwUmEiUEAY5NVyhUVZpdRuZzNb5/YApBENk5EMBj/f+z995hcp3nffZ92vQ+s7O9L3pvJNib2ESqd6u5yJYtO4njkuj74sR2nNj67NiOE1dJ7pLVJTaRlNgJFhC972KxvU/v5cxp3x9nsQREUATFApCa+7r2ws7B7O573pk5z3na73HwjrWtdIbdPHh8iSdGEmSrGmvbAjx1Js0DR5c4vpDn2lUtXLcqxkiixD8/N0nIo9DhdFFrGDgkkRvXxCmrOo+dSnApxZ06Qq6VoQBXD8YYXirQ0CxylQZ13eDjV/RwJlVBECzaAw6+9PQ479rSyYPHF9ncEWQ0WaRQ0SjUNb68Z4KBFi+LBZX2oItkuU7ILaMpkK5oOCQRpyyyWKixps1LT8TDbLaGIFp87isH+bOPbGM+V2PPaJqhuI+P7uom4nXyzf2zXDEQRhFFgm6FozNZHju1yKev7uOr+2fRdFszty3o4q8/vgNFFnHKL62qTRRrKKLIzp4QmmFelCJR03g2aXIBVN1EkcWVD5JmmJiWxc7eMIMxH79z73HetaWTFq/CkZk8mUqDD2zv5gcnEwy2+Dm1WOLAgTlkUSBVrLG2zcts1s6hIQg8fGKJ/qiXgRYfh2fzyKJArqbx3HiKYs2grDZQZAFRAI9TolRrIIkCfREf664P8M/PTfP8eIawR6FY17lxdZwP7ejmv3xvho6Qm3dvaefZM2k6Qm5CPieDy6Lka9sCGJZFslinouoUqg2+vm+GHX0RruyPEPI46A67WSzUAdvTvu/IAu/b3nkpX44LEjpn2sZZlaH/89gZtnQF6Qp5KNQ1fE6FLz89RYvfiWlZ/MkPRwl5FDa2B0mX6miGxYPHFvnMNQP8j4eHERA5OJ0j4JY5MJWjVDcIuGWiXpnj80Xqmo5LFvG2ePjwjhbuO7xA3TDoj3mJ+108OpykJeDgPds6+avHz1BtmHz5U7u4blWMB44u0Bf1cOPaFuZzdbpCbrZ0BslWNR46scjOvggRn4OHTyyxvSdkK0pFX7516PXk2FyeiNdB13JFeKpU56t7Z/i5a/vIlBts6wkzGPdiYvGdQ7aAw4PHFinWNZyyxO6BEPccWuToTI7fuHU1N61u4dP/uI9TS2UiHplVcR+lmspctsxUuoKum+SrDSJeB7rZIOaTqagmpgkvjOfoibj56K5unjidXC4aMtg3mWN7b4jWgIujs3k2d4cYT5W5frUtYWiZFqcWSyRKDTrCXpySyLoO+/3+z89NrYx5q2v2TcrzExkamklB1VgV97GxI8jBmRzz+Rp9F1FR3jSeTZpcgKl0BcuCFyYzfOqqvpUCg6G4j+8dnuff3byKqXSZP3lklCv7ImzoDDGWKjORrmBaFh6HgCACIkS8bvxuhZDbnpTyiSt7mM1UeWEyy3SmylKhhgR4XQoVVberWwUBUZC4cVWU7x2ep6KbrPI6+M6hWcqqgVMWcMoyd2/poM3v4sRCgT1nUnSF3bT4nZTqOr5lqbMNnUGOzxW4f3mc1LH5PP+wZ5I//chm/t/vnWBDh5/2oIuQx0F6uf/zbBWiIAjcsi6+cideVnV8l3jG5I/j6sEoyVKdpWKdG1a30Blys703zFUDUUYTRfZOZjgyU+DZM0lcLgVdN6g2TL5xcA5ZkOiJuplKlchWLAwTQh4FpwzDS1VEAXrCLpJllajXiVOSWd0WYLFY49hMjs6oj5BbZiZb49GTi9yxoZ2SqnNkPk9F1emJeukMubjn0ALv3NRGrqrRFfHQGrD40p5x/vHZSX7rtjW0+l0E3Ao3rrELjt4M4n4XnuU+x7pm2IIROzqJeJ2Yy4XYLT43H7+ylxa/k89/5zi3rm/lwHSOfZMZdNOiI+JeVg2S+d37T9navgLUNZ0js3nCXjv90RFys6MvwumlEiNLJa4dimJYMJWpsDEWIFVsMJmp8Y/PTSII4HfKfGv/LIW6xgNHF7liIMITp1P86Ye34nPJPLk8AzVftduIPn/HWjJllc/dOES+1qCs6ownSxyYytIT8fClPRN89voBvE6ZFp9IOaEhiQJDrX68LpmFizSezZxnkyYXYGNnkE1dQT5z3cDK6C6whxNv7gzyd09PsHcyS8glc+uGVgzLoq7p9EY81DSDyXSV64ai7OiJkK01ODKbRRAg7JV5dDjBwZkcCDCZLlOs6tRNi/4WL7IgcGKhwFiixGiyyKPDSW7d0M6WrhCLpToRr8L23hBuh0w84OK927q49+giT42m+bcXpplKV+gOezgxX+STu3vZsFxR+80DM2iGrbZzar7IXZs70HS4Y2Mrn71+kGrDYLFQYzJdOS+vOZutnjeR4ruH5t68F+EnQMBOU/RE3CiSLTVYrDX4L/cc58RCgb6Yj49e2c1ga4DusAdLEGjxO6moOsWazshCiYIKqmbidwpouoFhiXz8ik7ag05a/C56ol6en0gzmSlz9VCUTLnBI8MJnhlN4VAEZjJVZnN19k1luX5NC3/z5BjtQRdxv4Pb17fR4nfwua8eYnNXiEPTOU4s5Pmbj+8g7nfx0PFF/uqJMxRqGjPZKk+fSb0p+9YWdK3Mt2wNuNjWG2ZjZwifU6ZvubCm1jDYN5llIlXh2lVR3IqIR5Fo8zvIllXKVY3xVIX/dt9Jjs3m6Ai5WNvupaaBKAjIosBSUeXxkRRf3jPJWMI2nicXiljAQq5OoarzH29dQ8AtU6g0KNUM7tjQStjr4PfftYF17QHWxP20h1w8N57GtEzcDomY34EoCGzqCqKZFuvbA+ybyvLIqQQht4PfuG0Nxbo9xGEw5uP4fJGt3SFWtwUIeRxklodrjyyWLrqP+fK9hWzS5DJjMl3B45CwBIF3bmxjoMXDv+6dpTPkxjRN6rqxrBrUYGdvmLs2d5Cv6XzthUnSJhyfy1NrWMuVrwplVccpQcyvEPQ6OZMo4XfJNHRwyhYhl12KP5OpkCqqZMsNNnbYA543d4X5nbvWEfY4+MP3bUIzdL57eIF0WWV4qcDR2Tzb+0Ksbw+Srza4dqiF1a0+vn9sgblcletXx5nP1Yj7nSAIfHP/LG6HyG/ctva8c+4Ku2k9p13iU1f1vbmb/io4MJXl9FKR4YUiPzyZ4Kuf2c3hmRwn50uUag2GF4oEPXVu39iOpunEgx76wl5mcxUCbgm3UyTikljV6ueqVS388GSSsUSRUq2BKYj8+jtW82ePjFLXdDpCHg7N5Hj2TIZN3UE2tvv52r5Zqg2NqNc2JkVVJ19u8IX3b+bUQpFvHZjjmdE0166K8Vu3reGJ4SQVTefW9a24HTK3bWhlNlNFliT+4P6TxAOuixpW/kbw/HiGvpiH9qBdZPj1fTO8d1snq1p9ZCsqLkXixjWtaKbJwekM3REPI0tFBEGgO+Qi7HEwlanQH3UxnqzSEnDQGXSzf3l0XK7cIFNuMBBzM1+oUzMMVN3AKYk8PpLAtKBhQH/YSTzgoq6ZPDuepljX+M3b15AoqXxj/ywOUSTsUYj7HWzpCmIY4FAkPE6ZW9e3EnDZw+GfPJ2iNejkyZEkH9jRxZbuMN/YP8Pugeh5BYEhj8JSoU7sIkQSmsazSZNXyfbuEN86OIuesJhKl5nKVFkq1lnM1ZjPq/TF3ByZyxPwOBiKe5f7BxU0Q6TcaCACgy0ejswWqGsQ9krM5+rohk6pbrC+3cdioU6L30muptMecjOZqeJUJDyKRKHWIOxRuO/oAqmSyqMjCe793LW8e0sHz42luf/YIuva/Xx93yy//g43X9ozwS3r4kiiwFyuTtTvZD5f5ZrBGH/15BiLBZVd/RFC7pdeDr59cI47N7Wf531fakzTlhkUBAHDtBCXv1/bHqCi6mTKKu/e0sF//MYRLNNEUewctmGaeJ0KR2ayjKerVDWTtpAL07SYTleJ+23t1XRF4x/2TGLXuQqYls6TwwnGk2VyFZV17UG29wT5t32zdIVcjCZKFGoalgBhr5NP7O7lz394Gt2wWCqqKIpEe8CBLIkkyyotfheJoj0X9r+9awN/8oPT/MoNg4DAQrHOR3f10Bf1cGA6y20bXipu/mbQF/Vwbkdv0KOwdyLDXK7Gx6/sYbFQ5+v7Z3hiOEHQrbBUUNnWHUSWZSZSFY7NFcCCqeVq6MW8SkM37TCuAbIAkgDJUo2Qy4lpWGzsDOF0SKRLKr947QD//funyFU1vn1wntaAk4hXpsXn5H8/Msp8vsa1q2KcWrB7bWN+J6cXi/zVx7fjWC4IingcdvrCKfOf71izHG53EFkekHDnpnYauoluWivv79WtfhbyF9eq0jSeTX4izrasvJ1HlD02nOCaodhKMUp/zMv+qSxht4xhWCiywFDcZ89fNGFdR5BNnfDYSIqIV2EmU+XxU0uouoFhQqVhIAKyCPmaTovfRUXVKFYbCKZJzKNgYA9HnstVObVYZktXgDOJErPpKlcMhtncHUaSRYYXi1w9GOWre6dRdZ2/fPwMTkVisVADyx7HFPE6mM9W+JkrurnnyDy6YdEb9dAZdhP2OAh5HXzyql4amkldMxlJlLjiR/bgtg1t+Jal/NJllW2XwaSVvRMZPE6Zrd0hnhpN0h50s649QKmu0Rl2U9dN+mI+dvQGOblQYn3QRWfIw1KuyplkiXylTtgjI0kCU6kSqmFiGpAsqmgGtuShz0Gy1EC3DIoqOGSL6WVDkKtqPDeepqFZLBZqrGsLcdv6Vh49tYRbFvnbJ8foiHjQM1V0y8StiNx/LMGHd3ZSrpscns2zqSvIOze1M5Yoka2oLORrrG8P0Bro4ORCgYjXweaukO2NXaA69I1GlkQOTme5I+hmNlvl8eEkP3tNH5pm8vCJJUp1jasHorwwniJV1ugIOWnoJuPpoj3GrQiaBX4FNnQGGVksU16efStjj75TZAj73AQcCjO5Csfn8oA9Bm4qXSbmcxJ0yazr9FNSTY7N5inWdXLVBr984yrAIl9T0U0LyzDY1htmMl2lM+xmbLbMEyNJfu3mIQJuheGlEm5FxCGJPHh8ke09Eda2+TmSyKPqOn1RL5Io4HFInF4qsao18Ip7dPncTjZ5S/Hs529m6gt3rQzXfjvSF/OyZzRFRdVX5LuiXge6CbplMZupcWyuwP6pDDPZKov5GnvG0mSrGlPZKsfn8yiKXUKfqxu4FAi5JbZ2BVnKV5jP18GyyNZNdEugoJr0Rj0cnS8SdNtea6GukSzViAUctAZc7J9KM7pUYj5XY0273x6I7XIwmijx2HCChVyNte0BPnpFDwMxH79//ymOzuYZWSjRFnBz6/pWZAFGlkpYlkWuolHVDNZ3BPjgji4ePrHE3HKT+P95bJSRRbudJex1XPIB6o+cSpAs1tk9EGXLsmD6TWvirGsPcGK+wHcPzXFirsBt61s5PJvjgWNLCFjsn8py7VAUHRCw2NUbQZYkXLJIXTORRIH2kAuvQ1zOmTZYyNVJlRoYmq19uqHdR3/ETU/US5vfSUMHQYRSA44vFHhhMsuZZAWvS2GxqGKZJr9wdR/be8LM5+rUVJ0//eEZusNugm6Zb+ybYXSpTMTvQNNNHjqxyNf2z+BzyvzFo6N8++AsoiDw/z00ckn2usXv5I6N7UylK/zjs5O8Y10clyxS1e2pPBGvkzPJEopkF7mV6jrJkkqqpFGoNgi5FQJOUA04PFMgVzdQTZAAh3xW/0MgW24wkixy6/o2ZAlWx31s6gqBAF6HSL6m8dhwmiPT9nizfK1B0O3grs3tLORrTKerlOsaiXKDiqozlSnx6Kkl2oNOQm6JY3N57j08T9SncGy+yJlEiRPzBU4uFNg3meFMosSX9kzw7QOzADw/kSF+kapOTePZpMnLMNjiY01bAJcicWqxwOmlEqIgYJgmPqfMmWQRSRSIeBz817vXky6rLBUbbGz3EnQr6KZFVdURRBGXBA0NLEFgNFWhpkLYLSLLEooADcMCy6Jc02gLOEmX60ykytRUg1LNYFXcT2fQzQPHlkiVVH7xuj5+eCJJd9jLzWtb+c3bVvP+7Z0sFeuoukXM4+SbB2ZZ3ebj8ZGUPdMyXSZRrBP22gUy46kyW7pDzGSrlBt2T+v1q2P4HDLf2D9jS9Vl7Zsjn1O+6IvKG8XO3jBRnxNRFFZkAgVBYD5fwymLhN0OXpjKkq/aF/C+qIeTCwUkER46kSBVbNAVcrN3MgOWxUTKFiivNCwM00KQJVxOCbdiSxa6FaguaxTsncyTLjfoj3o5MJOjWG+wKu5ldYubD+3sYCxVZiju4dRCkbWtfnqiXiazFZ4YSXJsPk+q3OAXr+vn2wdnmctVedeWDm7d0IrfqfDbd6zjhtVx3retkx+cTOCURUYTJb57aI5fuWHoEu44tIdcfHBnN05JZDpTJVNWGUuUKFVVHjmZAMFkU2eIqM+JLEm0eGXSxQZ1XbcLrwxwyCISdg5TkqCug2HZilcOUcSryIwmyjhkCY9TYVt3mD//yHY0w6JhWjglgYDbgYVFzOtgVauX3/necXb0hLl6KMb2njDbe8MMxrwcmy0yla5SqGmEvS4W8jUahsFjwyk+tKMLlyJx05o4nSE3jw0nmc5W+fwd65BEgVRJJV9psKnj4ibZNMO2TZr8GHqitjSY1ylx/eoWpjMV/vqJMbojbn779nXsnUhjWhZ/+9QY69sDeBSJ8XQFRRLwKAKqCVVVI+h2UKw1yFV1PDKIEuRqJiGniUsRwbSoNExGk2W6ox46Qi6m0nXKqo7fLTOyWGQ8VebOje2kSioPnUhQqOtIgsDx+QIHpnJYgkXU5+DmtS3M5aqsjnsYaPFz4+oWe7hzQaVhWJxeLOB2iGi6hWVZ9EW8ZMoNDk3nuHowhilZaIbJR6/o5kyifKlfghXC50gGnku+2qDWMLhyMMrdWzsIuBS2dYeYyVX4mSt7mEjWGEsVSJbqlFUNbTmE7nHIFGo6fodAsqTikO2RYJmygc8pUqzaPRoiIAoWiVKNTEXFMu2jFdVAMy0OzxT5hWt6+d6hBYo1jaG4DyyB4aUyC8te/Geu7WckUWZrT5iZbBVFFvnn56ZY2+7nZ6/up1jTyFU1FvJV/uRDW0gU65xJlPnyM+P8P+9c/+Zs8AVQRJFUsU65Yefe05MqDkXgS89O8dnrB/je4QVa/A4W8zWibpmKqqNZYGkWImACRdVEFiDskjBMCxMTAbvtqTfqYT6nMp0u0eJ3MZUu89QofPPANKW6wepWH8NLJUQBJtI1PrCtg3RJJVfVeH4sxf1HF/nE7l6iXgeFaoM7NrXRF/Xic8msbQtw39EFfvWmVUS8Dp4aTXFioUBF1Qm7FYIehZ+5spfhxSL9LV7m81UeG0ly7aoWLibG0jSeb2Ou+cLjzOdrb2i47Wzu8+z3b8f8Z9RnhywTxfpKr1iL38nwQp4Hji2iGiYuUSRb0djSFaLc0EiVVFRNoCPssXOakoAsCwiGRVUHBZBEWN0W4oXpPBKwqz/M6GIBWbAYSdYRAd00CLgciKLA5s4Qw0sFQi6Z927v5ItPT/GRXZ08czrNQNzLxs4Qi8U6LV6HrW/bMFnM18jVNNJllapq0BFyUlIN9k1muGFVnEMzOdIlld0DMVTdQBYFHC6Fj+7qwbTslp2js3m8TolkUeXqodglfjXOJ11W8TpkAi4FURQo1jS+e3AOzTTxOx3IosR0poRbkfnIri5OLZTIV1Um01WCbgVRhLpu0RpwUq7r7O4Ls3+6QL7awCGDYtneZ02HoFskXTYQBYh6FQp1u1p6Il3hG/vnWchVcSkijw0vcdemDn71piG+/NQYLQEHX9oziSIJDMX9XLMqyliiTLHWwCkJfPnpCQQRTi+WWN1qRwpWtfpQDZPNnaFLur+CABGvE69T4vGRJNt6QqQrKpu7ZP76yTE2dgSQBIF0pUGyVKc77KFc1/AoMm6HyGKhQcAlsLM3yt6p7MrcUp9TQDdgLFHCtOw2Ft3UqTYMDkznsCx7io/XqditV7MFuqMuHhtJUNdNuiJeHh9N8u4tbSwVqjw+ssTmnjAbBZE9Z1LkqnZl+vBikYjXgSyKrG33c+1QjJMLRRQZ5rJ1Dk1nMS0QBYWt3UF++/a1y3q4r0wzbPs25qws3xtp0M7mPt8u+c9cpcH3Dp/fyzjY4sOlSHYfnACfvrqfVKnGHz18mjs3tLK5M4iBxUK+wj1HFxAEgbjXCaLAdLbKqrgflyxQUq2VD5wGOEWBuVwZhwCiaF9IinWTuZyK1wF9MRflmolhgSwKDC8WiPtdaIbJM2eyNDSTr+2bo2FZ1HWTP/z+Ke49vMC9x5bIVzU+e/0Ad29tZzFf47mxNOlijYdPJtBNg/9462q6Ih66wx6294YJehTWtgW4/9gCi4UaI0sl9k9lAfA6JcIex8rw7csJw7TQTZPuiId9kxlqDYOqalCq6wzEvPz9ngmOzBdRdZNUWaMrYrdGtAad9MbcbOsK4BBhPq+SrxvcczRJXTP4zLV96AjEg07OXkqXSgZxnwQCDCcqiJZFsabZfZHdfsI+BY9Tweu0C1S+/NQEmgFbuqJ8+po+gh4HPWE3Dx9b4rHhBFGfkxPLkogzmSoxn4NUWUXXTWI+Wxf2lks8Ak4QBDZ2BhAFgXrDYKmk8ux4huHFIpWGyWSmSk032dEbQRFEyqpduNMVcWNiC4WousUPT6cpqiZV3S4iWt3qwyHafbltAbtdKlnSqWomoiDgkMHjkOiPejidKBHyy4S9CqIk8rNX97Mq7qNcNxhZKqObsFioIwsiHqdAptzgnkPzfG3fDL1RL60BF986MItHltBMC1U36Qh6uG1DG98/vogI5Koq9x9bYCZ7cZW20PQ8mzQ5j5BH4ZZ1L16wTNNCFO382qMjS2RLdZLFGgdnClzZH+Wx0RSKKDLY4uWp0zXqukmholFqGLT6HaRKKgdmc1TUF+dlCoCF7fE0DHDKtmeTr+o4FYFSw0QCeqM+RFGyx1rlqrgVGafSYC5fp65DTdfRVIu2oJvDswXWtPkIelx0hZwcny+wtt3PwycSJIt2nmraZ6sc+Z0yq1ttub5Esc5cvsadG9sBuG4oxny+ZhdtLGOYFiGPw9a4vcyI+504l2UUhxdKdr4wWeK92zp58nSK92/v5MRCgYZuUag1MEwLSbDzW9lKg5pmYVn26wEQcInkKjp/8/QUum4R9rrsKtxlmeNE2cCjgKDDQrGxHJassn9KJOxxkCk1uHoowmPDKUzTxEJgLlul1ND5tZuH+Jsnz+BRZN6xIc6unigLhRqTmQrFusYv3TDAWLLC/qksI4kSP3tNn+2pKW9ete2BqSxBt8Kq5feHaVqMp8vsnchimBZRr4P+qIeQW6YzZFd1X9PfwrcPzxL3O9FMk9lslfmciiyBYYLbJVPRX9SJLmlwbLZEwCNTrUGyrFJWLWQBFNF+LRyCXcz1Ly/M0BNxE/O5GE+VCblk/m3fNB5F4TPX93FwOk+h1uC92zsZS1T4k4dHOZMs8Yfv28QfPDDMZ28YwjRNirUGJVXn4UPzpEp1VE1nLl/nl68fZKlY5fnRHL984yAt/ovP6zc9zyZNzkEQhBWllaVCnXuOzAOgGyZ7zqRxO2SeGE1x1UAEn1OiP+Jlc2cQAQFJABGLmm5gGBbJSgO3IlFTTTs0BJydkbG+1Y0sQ6aqU9bs9hWfS8S0wCHa18unRtNEPAo+h0xn0I3HKVGo6bx/aztXD0WJ+Vzs7gtRV3X8TomuqJd0WaXSMFAkgUdPJRhq8XLH+jj//pZVfOaafvpjXq4aiDKfrzGRKtMX9VJRdZ4bT2NZFjXNwAK75QVbEP8HJxPo5ssPy76U5Ksae86keej4ImMJu4J4V1+YumbQGXLx3ESWnrCbdEXlxHyB4cUCAbeMxyGhiBbLinT4HQIy4FYkdEDXLQbjHmazFQTs1wSgM+gk7LUrc8Nu+4c9DpGGYaHqFl0RD3PZOu1BJ6WGgWGaPDGa5Phsnt/+1jFm01VOL5XxKhIuh8SG9gAbO/34nDL7JnM8PpygL+Ll6sEYYY+Dkqpf6LTfMFa3+ekKvyj+n6monF4s8emr+wh6FB4dTtAf83F01hbiaPU7eXYiRVfIBYJFR8hNvqrhd9thWQko1nQEwCW+uI8mkKno6EBJtez3vCLgdUn4nDIul0xb0MX/e8da2gIu6rpBW8DFjWtbUTWTqtrgS09PEg84ydc0RhdLXDUY4Zdv6OfuTR2saw/yvz682b6BLTdoC7pxyBKGaWJZFkGPwkCLl0RJxUSgNeAi5nOSLqu2/vRF0DSeTV433m7jytqCLt69pQOwhwP/h5tX85nrBrl5bSsdQQ+5qkbM5yDic3BsroDPJRHxOYn5nNy0NsaWdj9+l0Tc78DC9jhlbE8zUWrYerHLXk/ILSNgoekWsiRQN8ApwgtTeU4s5LlqdZRSXUPG4pHhJKpurDScT2Yq5CsN1rb68TokxpIVTi8VUSSBW9bEOTCd46ETi4wlK/RE3Xxt/yx1TUcQbBGEgFNmJlMlV2mwbyrHps4gz49nePjEIk5Z4HM3Dq70Gj4xkrxUL8cKlmWtfB/2Orh7cztuh8h4usz+ySwWoEgCuYpGRdV58GSCd23qIOhW8DtlEgWVQs0g5rXDhUNxN9WGhQEslTRkwX5NcmWVbMW+8AsWeBSBoTY/fqeMJQh0R124JAh5nLT6nSzmaxRrGrIEyVIDnyKhGxYdQTdT2Sqr4l5uXt/Gxs4Qw0slSnWN+44u8P2jiwzFffRF3XRH3ORrDYbiXoo1jfFk5U3d24BLWZlUU23o7J3IMpWt8JePj3JsLo9LEalrBr0xL20BF0vL490ifhcNwyRXUon7bT1cA5Bl34rnWQAAwWxJREFUu9/TJcGqNh9xnwMJu9r2LDG3ZPd/CgIht4OAS8I0LUp1jS8/O8mxuQISsLEzQF3T6Y542NQVpDfqQTfgrs3tVBoGX3thlj98aJQ7NrZTaeg8O5bhgWOLhD0O/ugDm3HKAtcOxvC7FLb1RFjd6sftkLhpTSs3rGlBEAROzBfIVbWL2qum8WzyuvF27P2UJZFqQ+e7B+eQJYHvH19E1XS6Im6eHUvx1JkUh6az1DWdmN/J2lYf+arG4yNphpdKzBfswhMZu/jCIdvaoU5JsD1S7A9hqqxT00AH6pqFSxb49LX9KCKUGxb/8uw02ZLGXKGOT5F4cjhJyOtkXZufrV1BrhyI8u1D8/icMj97TT8eh8yxmRy/c+8JBGA0Web4fJFEoc7aVj/pUoNcVWP3YBRZEtnWEyZXbeCSRQzT4j1bO7lxTZz+mA/5nPFM69pfuXn8jeahE0tMpV80KguFOnXN4s8/so3j80XmshW++PQE79nawfo2H7t6o5xaKlHTdMoNg6BbQregoOpIoki23MDAvrnxyiBLtuefrtpeeFm3DQCWxTOjaeq63TE6kaxRN6BUrTGdKRPxOkgW6wgI9Ld4mcvXCbplCrUGV/SF+blrB9jeE6Er7GY8WeGp0ylGkyXKqsmNa2yR9b6Yl0SxTrJU5+hsnmtXvXkFWhVVX5mPin26xLwOEoUafTEvfrdCwOlgKl3hnZvbuXV9nI6wB7dDpFhpUFcNTiYqlGo64nIrUV23b0RqBowmyswVG4TcIqFzoqPpmoFmgbTcx5kuq2QqGoZp0upzUGnoHJjO45Rl0hUNt0OiK+oj6HZwcrHAPYcWqGsGO3tD3LY+zrH5PJpmcs1QjLKqE/LIGKbFb3zrKM+PZ7h9QxuaYRLxOFB1gydHkhyfK/CtAzM0dPM8OcofR9N4NmnyCmiGxfrOICGPg8lUmQePLfLYcILBFh913WJ0qUyxprN/qsC+qRyaYeCQBURZQhJgJtfA64SgWyHgUshXNRZKOgYvfgAN7F5Pj2RfbFp9Cl/fN4tDssODbQEnQ61u3E4JA4uwz0lZ1Ti1VKY16KY16KY/5sXtlPiX56a4bnULV6+yJfk+dmU3v3LDIFGvwid291NUNbs3ridMf8xLd8TDmWSJ9pCbOza28dvfOsofPzyCS5FW8r2Fmu3FtQUvba8nwG3rW+mNeijWNfacSdltCjWNkEfhTz+8Fd0UcCkS/7p3igMzBfpbbC9JESWqdZ1Kw6TFK7O9N4KARa1hh+lMoKrbF3zdfDE3vYIALhncDgW/WyboUZCAbB0WCg10E3pjPjZ3BvE57LDjQlHFsCwSRZVnx9JMZyp4nTIbOwNMZ8pUVINd/REWCzW8DpldfRFu29BKpWHwt0+N8ycPv3kiCdWGQbqirjz2OmV2D0bZ1hOxBTbWtXJysUBVN9nWHeKJ0QxLxTqSJFLXTdwOGRFomCZdEc95+9fhk1kutCXgdlCssyL/51Ngc4ePasOgrJo4JJlrBsNUGybH5uzB4lGvg6fOJJlIlRlZKnJqoUC+1kDVdIbiPhRRQJEkpjM1Ds3keGE6y9f3zxJ0K4wlK1QaOpW6zoHpDE+dTvLz/7SPf3l+inrDYO9Ehh19YcqqQfur6ExoGs8mTV6BoFthe0+Y58fT9EQ9nFwskq1q/OzuPizDJF2qsasvzM2ro5QbJl6HgmFYFCo6YY+MW4RyA1TN7uXTjBfzhx6H/SEMuQTWtvvojXpwy2Ag0BPx0B5y0xP2kC6p9LcEGIz66Al7WR33MtTiY0tXkL2TGSZSJeayFSbTVX79HauZy1b52JU9/I/3biZd1nn01BKO5cKa//ed65nJVfn9+04ym62yqtXP3Zs7lvs+4RevH2BbT2hZgajByfkC+6eyzOUuj4iCLIkIgoBg2d6SS5F437ZOBlp89MW8/M7d6/n4lT1MpavIAuwdP+st2gbS4xDRDZOHT6bQTZPrVsVWLuRdIScyEPJIKKKdswu6RFa1emyZRkFkqVin3tCZz6srOTxFglpDp6bpPD2WwTBNVN1gZ2+YLd1hrhqMsL07RDzg5BO7e/jN29fidshcNRghVajyzJkUVw/FKNZ19k9mGYz5+J/v20R/7OImfLwetPidbO8Jk600+Mb+GQD+6bkp2oMuqg2DbLnBHevb+A+3rOLeo4u0BRxEPDINzWA2V2UpX0OW7NaWZLGBAMQ8Iq1eGQPh7Dx1qqpGyC3ZXj7QG/WimxYNE0TBHon29GjOvlFxytR1k6jPwTs3tiMBWztDbO0JsVioE/e7KNU11rUHmclVGWjxsHsgymSqwtauEDeva6WhG9x7eJ73be1kTVuAHX1hPrqzm3jAxcnFIulynX/YM0ln2M2mzosTSIBmtW2TJi/LaKJER8i9Mr/yjo3tLBZqrO8IMpEs8Sc/HKVQ1fAoEqOpCh1BByGnwLoOL8+cyeNziIiiiMMhojdMNAPcin2XLgFeh+3l+D0yqqazWKijyCJrWgPMFWqMJorIkoBpCQQ9DvpbvDx1OomFRXvAzfquEP/6/BSGafH0aIp3rI2zazDG3zw1xk2rW+gIufj2oVmeGEmSKqkMxn14nTK5isof/2CE29e30TDMlRmde8ZSmKbFmVQZSRBQJJEHji7yid097OwNnzd8+nJAkUVcikStYeB1yuybzDCXrRL3u6ioOv0xD4JoIQkilbrOroEQT51O4Xc7SC4XRBk6/HA4veJFzOZtzytdOSsLD6W6SaFuhzPjPoU1bT6OzhVxKXZ/oksUuHFNnNlc1R5tVtdQRFtgIFFUaQu6OD5fIllSSRRVgm6Zh08muGtTOw+eSLCxw8+6qIc1rX5EQSBZbqx4+u/Z9uYPIY94HbxvWxcAH7uiB0USyZRVTi0W+OreGQZavJxaLJIq1JjL1Vnd6iXolMjVdUTBLjbzu2Q8ikBVs9B1O3Tqd0kUqgbpqoFp2cLwLX67PSddtm9uJCyqmgUCJEo6rX4HmWXln8dHEoR9ThayVRyKxHu3dbCYrzOZrhD2KoTcCqOJEresbWVbT5BnzmQYavGyWKiz50yaHb0hzqQqrGkLcPeWTo7P59nRG6Jc13l2LM31q1pe1T41jWeTJi9DrWFgmOcF7qioBuW6zkJepcXn5OY1LZRVDUsQePp0krxqsXc8T9QroRkWpilQqpsE3LIt19cw8DlECqaJ361QLGg0qjpuEWqGjuCUyNc10mUNlwwKFpogUNcMnhlNs7UryKHZAiGvk9MLRdqDLnxOmYEWH4WaxoHJHPcdmePYXJ6fu6aPuN/Jjp4QY6kKvWEvf/zwCNcMxXjflk4Oz+bt/Kss0Rv1IAgWPVEPfrfE3z89SU/Ew3+5e91FjWd6M8lWGngcEi5FwuOQSZdVuiMeBAS++PQEV/ZFSFZUNnYEmMlW8LtkDs0USJVruBUJn1NhTq/hEu28nogtG+dRRCoNk8Y5hcUhJxiWQF2zkCVbXvHITJ6IV6akQsSjMJ+zL+A13aCh6aQKDbyKSNjrpDXgJOhWUESoNUw2dgb5yt5ZnBL8xeNnuKo/Aggcmy/SGfLQEXbzqzcO8cyZFOWGzobO4JvZqbLC2SkjZ4ciJEsq3REvHoc92cc0LYIeB10R2/ufzKr0hp00dAtJgEpdo6ZB2C1Rx6DUMHHKAgJ2sZCAXWG+VGpgAQGnnWsvaxbdIScORUKRROZyVTpCLhYLdRqawWSyTEfYRcOwmEhWKKsGHofEaKJsh8QVkZlMlY2dQRYLVZ48k6JY0+gKuxiMeWkPutnaFWQ0UWIuW2MiVWF3f5SJdIWxZJmAS2HfZIYP7ux+xT1qhm2bNHkZtnSH8DtlTNPi1GKBf3l+ivl8jRMLBTIVlXduaidfbfDoqST7JzIUawZBl92CUKjb+Ztyo4FmQbaqU6zb01WcDoWBmAdZFBGxLyRORcAAsjWDxXwNvwINHfIqeB0yiixiWRZDrX5Wt/oZWSxQbWgMxH388o1D6KZFpaHjdYr88o1DdAbd/PWTE1w7FEMURVa3+jk2n+eZ0RT7J7Js6gxw6/pWbl4bZyjuI1lSeX4sy3NjGXIVDUUWWd/up6rqJEv1lT255/D8pXo5Vji9VCJZtD3EHb1hVN22drv6I3zsyl6Gl4qkSioxn4updBVRsFuNeiNeTEugpDYwLKib9oXcBG5a1UJVMwm4JXwOEc+yW5FXl7VvLWgLuMCCqmYL6ouCwEy2jksRGEuWECzwuxwMtXkpqwa6YXBiPsdDx5eo6xa6adHqdyOI4HLKhNwKe8YyPD+RYXWLl2/tn+HwdI5sRWWxWOem1XF+cHLpEu3yi1RUnZ6oh1JdZ1Xcx1yxxhX9Ea5b1YJhWiwWVEJOgbmcymKpQblhUdfsEGxvzEdVA0wT3TDRsT02E5BEYSUn6lJE2oMuAm4J3bIIexQ2dgZxO2Smc3VqOvjdCiVVp9YwVualZiu2ktAdG9oIe5wsFhvM5qp0hN3s6I3wwniazoCLoMdBRTNwOSQkSeCew3Pcur6V92ztZDxV5hO7+2jxOwm4ZTrDF5f3bBrPJq87b5eWlcVCjS88PMKZZJnZbI3eqJtiTcPnlIgHnKxu9VOoNhhs8VDTLN61pZ3rh6JEl8OboggOScQt2x80u4UCVN1AN3WyVY2QW8Yh2UVJfqfImpgbj0PCxFb2cch2y4DXqbCuI0ixbnD9mhhr2gJEfS7Cbgf/uneaxVyVdKnBdLbKdKbG+7d3sKMnxKmFAplKg2xF5dRSkf/zsW1s6Axw//El1rQFEASBxUKNB44tcPO6OJ+7aYj3b+/my5++At2EU4tF8lWNJ08nmUpXuGoweilfEgCuGozSE7V7ETXDZCb7YuVtQ9fZ1hvmI7u6qWoGq1v9HJjK8f4dnaxvCxD3O9nZE8blEGnxyitFW4fmcpgGaLpFf8yLAPgcAmta3RjYIXbDslA1g3esbUGRJUp1HbdDpKRauGSJRsOgNeAm5Fao6SYL+TqdYS8f2tnNL1w7YOePFwtc1R9hNlPlHeta+eMPbKY75OaBE4tMZis4ZTti0RVyI4oC79n65odtwR78vlSwb5pGloqcmCtQqDa4fk0MpygyslTm/du7Wd8RwKlIeF0Ogh4ZCft9rgOtQSe6aWJhF8S1Blz0hBQ07II4WQSHYOeVk2V9+ebChSRJ9s2HaWvgXjsYoSfkJFNSWdXqoz9qSxdOpkps6PDTHnLz+EiS3QMRvver1/B/PraduNfFPYfnWczXKdQ1dvWF6Yt6WSrUqah2bbUo2O8fhyJiWhatARchj118djE0w7ZNXnfOygGe1bx9K2KYFsfmCvzKDYM8P5FhR0+Y7xyaZSxZ5qqBKMmSylw2gcMhUyrUWd/mI+RRuP9oGlmEobgPj0NiNlNBFgRq2NJ8siRQVXVMXcDtkPA6JNyKRKqk4nNJIArUdBPdgO6AjGkpuGWBhgmnFwtMpCv80vWDrGr14RBsNR1BEElXGmzvCfLhXT00dIuD0znKqs6GjgBz+To9EQ91zeA3v3WU/3T7ajZ2BGjx2+FYSRBo8TqIehWOzuZJlVSuX91CV9hNb9SD36XQEXLjksXz2lYuB1yKxM1rW2noJqIAN61t5a+fGKc3anHNYIyhmIc/fHCYRLFOPOCiR9U4k6zyyd09PHhsEbAb9TNlHUW2i5EmkiVMEzwKlOoGXSEnyaJKoa6zvTvIZKaCZdkCC6Zp4ZTtKSwhjwPTshhZLNIZ9jAQ89Ab8xF0yyRLNWRJoC/iYUtPmLpu8tRoir6Yl1jASaJUA0tgZKnIR3b1sJCv8dRoakXp581iPl8j7nciCrbnCOBcvlG478gcY4kK79nWwYZOmV/72iEkwaIv6qEv5mEiXUEQVLZ2BZBFkdOJMmeSJSxAM2AhX1vWqnWSKKg0TNt49oSdTOdUruiPIIoiDx6bJ1u2UySKLHD9mlZ6omW+9sIsO/vCPDeRx+cUsZDY0RthLlfD45ToiXqZz9d48nSSTZ1Bfv0dqxGwODJXIFlqkK+U2NQVJlNpsK7NjyiK1Bs66ZK6MrN2NFFiKnVxvbWX1yehSZPLBEkUGGzxEfY6uGogilMR2dUXZU2bDwSB61bFaOg6Ua+Dn7+2n/dutz2E3YNRblobR9VMtnSHkSUZw7JWyvYNw5bk62vx0R3xIYoivVE3lgCpskbDMFkV97KjL0yr343LIdMVsVWAvC4Jv0tmKV9jeLHEsxMZrlsVYyFfI+xxsHcix/9+ZIxTCyVEESqawVxepdow6Ai6GUuWuXldnESpgUt58b5ZkUSCHgcTKfviMZer8sRIgu8fW+TwTB6wR5JdbobzXI7M5vnLJ8ZoaCYf3tnFg8cW+OLTY3z/xBK7B6McnMrbeqw1HdMyeWYsgyxLdIUUesNOtvWG6It6yFV14gFbl1iWJHJVnXdubsOlSKgNg9PJMsmiioGA2+lAlEQ+ekUvv3zDILIsMZEqE3A7yVcbJIoNKqrBF/dMciZRRpEkblnXyon5Arph0RPx0rOs5rO+PcRnrhtgZ1+EdFllKlPhfVs73vR9HE2UqKg6vVEvqm5L7W3sDHLjmjifuW4Qh0PEAu4/uoAsQsznJFPVeHo0zfCCLZ/3zHiW1oALtyLidztwCKAItlQfpk5NNdjQEUDB7n3uj/sIuyUeG04yulTk+tUthD0KjeUh1Q3N4p2bOrhpXZyuiI8b18S4fnULnWEX6zqCnJgvcGg6T1/Uwz89N41hmDw/nuH4fIF81WCpoPKB7V24HDKDMfuztH8yy8GpHB6HzB0b2+mPelEke37oVUORi9qrpuf5NuPsJBXgkg8vfqszFLeF0AUBRhZLBNwyQ/EAo4kSxZrKfEGlP+rl6GyB58YzALxrSwdOWcQSciSKNTojbpKlOn6nSEfQRaJYo2FYzOarNHSDWgPG0zVavDImdq/aaKLC6lYfM5kKkijxuRuGGE+PUqgaxHwuOiNuLFFgJmMb0c/fuQbDFGgPOvmHZyc5OpsjX9OYzVV48nSSa1bF+Ksnx1gq1vnyp3YhCnDf0QVmMhUiPifPjKWJ+53s6o/wF4+M8t5tnWzqCjGVrlyWerbnUm3oOGWJK/oj5KsNNNOk3LAFxq/sj/DMeIaKqjNfqNIwTNqD9ixTjyKhGQazeQ2XInDD6jg/HE7gkAVKqkFNtwhgC/IfnS7gc8ksFQy6w15KqoaALQ3YHXQxnqrYxkIWWNMa5MR8kWLdJFVWCbhk7trUTkM36Im4+fPHTrOuLUiyWGegxceesTQ3r41zz+EFrhiI2tq7okCL38nf7ZnkvVs7WH+R8yVfD25aEwdgLFmiUNNoC9rXkH98dpKIV+FvPr6D3/nuMc4kyrx7czvJUoNfvXGA+44t0hl0sW88zeauII8MJ8lXVYIuhZBXIe53Uaw3mM+peJwmJxeKaIBo2vrKQY+DVMlWKxpNlOkKualoBljw3SOzfOWFKXwumfagm9vWtzGaLOF1Knz1hWk+ckUPzsNz/N3T47QG3DgUmaBH4sY1LXgcMrdvagPs2oGv7ZshWarzyzcOEl0uhFvI1/izR0b5r3ev5wPbu/iTH5xmS/crG9Cm8XybcXaSyuXA22VcmSKJeF0SHSE3nWEPR2bypBs6v3LjEC1+J6ZlMp6ucP1QjJ6oh4dPLFGqaaSKDZJllbDXQUXVyFQauBwKqt5A100sS6AzqOBzKrxvRxf3HppjIlPDsixOL5VY22p7pl0RD79y4yAz2Sq6YWFaAk5ZJOSWSZZVVsX9zOer/OkPT/PhXT20Blw8eTrJh3d00xv1cnQuz2dvGMDjkLjvyDzvWNfKtatiVFWDJ0aSeBSJfE0j4FL44M5uDk7n6Il66XsTewx/Uh48vsiZRJnP3TjEbRvsi6SmG4wl7ErM9R0B3rOli+w3DuNxSNQ0g5tWxxlJlFgoqnhkaGgWJxcKWKZFb8SNz6VQaxRwO2Q6w07GMxVavArr2uPs7A0xl6tQqhmohkGiqDKTrbB/Mst7trTTFvbw7q1d3Ht4lpEl+4aropq4FInr18Q5PlsALExgKlvhhtVxxpIVPnJFNwGXvDLk+6rBGD3RKvcfW3hTjSfYxVUV1aAn4iXglvn2wTncDhGnLPHocIJb1rYuayBbbOwK8PhwCqcscWSmgGoKVOoGdU0n4nVgIVBXdfLLrTdep4jfqRAIy1imhYnAYMzHYqFBW8hFqa4TcCvcsaGNv3lqDJdDYm2rn0ShTqvfSaGqcnQ+zwvjGSI+B79z1waCyy0q16+OEfI4mEiVeXYszdq2wHnRkt39EdxrWnjwxBK5msbIUolESeXuze18eGcXimTv/dq2iwuVX75xmCZved4O48p0w+TAtB3imfsP/5lcWaWiaZjLodigS+HLe6YIuBTqusUzZ1KMLBTQDZ2Ti3kqdY2IV2JzV4jtvVFuWWer/jgUhf6Yj7DXTc2wuOfQPHMFlVs3xFc0N9tDHq4ciAIWlYbBh3d141TsYqWOkIeP7e5hPFXmH5+d5PnxLGXVoCvsZmSpxLr2ACGvA0UR+eRVfYwslvjaC7Ps6o/w9QOzPHMmRW/Ug8chsbrdt9Ljtq49gH9ZW/RCpMvqBY+/Ifze773iU96/rYvbN7YhnhUcNy2+d3iBsFdBkkS6w16+9sI0C8U6HSEX16+JU2zonElVaAs4aQ246Y97mS+oiJJAolRnPlujM+SlI+hGFMDULQbjPrrDLr6yd4pHTiWYy9XYO55lVauPqwZjbOoKsKEjiCzCeKqEqls4ZYlcRSNVqtPid7JvMku+pnH1UAt3bmxnXWuALV0BNncH2dBhz009+zkZbPHhkmXc8pvcp/J7v0ehZs+jdUgi3zk4zx0b21gVDxBwKZgm5FWdkmowl6uzfyqLx6WQq6iIAjhlEZ9Toj3kpj3k4a6N7QTdMookEvE4cCkSYZ9Ca8BF2OvEMC0KqsZcvkKLz8k1g1G294YJeR20h1ysinnZ0RsmX22wfybPoZk8iigiCCK9EQ+/e99J/uyHo9y0poWeiJfvHJhlKlNl32SOhXyNH55cWpkhOpmpUtUMPnZFDxs6guzsCwO2R+p1yiuSgtevvrh+T+FckeUmlwUX94LceKP975NPnne47/Pfv2w8z3N5g9f1WmKLK/td1wx001oRRQD7YnxyocimriAIAvcensMhiYiC3eZw1UCUSkNnIW8P1n3mTIoXJrN4nRLbeiIYpsnppRJ+p0xdM9neG+KxkSS7+yMcmy8QcDvY1Bmg1e/i2bEU+ZqGIols7AzwmesG+ZfnpumPefjsDYMossTDJxZ5bNiuLDw4leP5iTQtPgdDLT58bgc3rInTF/PQHnBjWBaT6QqqZtLf4uXAVJYb18TRDZN0ucFcrsrppRLtIRc3r7XHsA0vFgm6FdoCLixsWb6I90VxBN0wkV9bLPfiLziCYDdivgpU3eBbB+aI+Rw8cTrJqpiXqWyNY3MF2gMuPn1NH3Vd5389fJrOkJuT80WiAScVVSNb0Qm5JQp1nd39EfpjPkzT5MnRNNcMRpnJVVkd9yEIIiOJAqvifkBgoVCjVNM4tVhiVdxDrWHx++9Zz3cOzXNopkB7wMmqVj9rWn14HTI3rI1zYCrL9w7PM9DiI19tsLk7xL2H5/nt29fQF3vJ3NTXGjt/Xfa81jD40p4JPnvDAI+PJPjK89N4FImOsIdkscZ0pkJNM3FKdvXq5u4wogiPnkzQHnKTKNSpajo3rY3jVmQ6gi6qms6DxxcJuO1xeUG3g/dvbeeJ0TSTmQpRj4NkqU5NMwl5FGRB4I5NbXY+uaHTGXIjCgIxv5M7N7bxyKkEfpdMi9dJxOfgKy9M88s3DOJ4mZuQWkPnfz96ht++fQ0jSyVaA66zhXSvuOfNsG2TJstMZSqU6zo7+17Md4iiQG/sxRFNN62N88WnJvC7ZK4eihL2OjixUMCjSAzGfRiGiSQIdIRdfO6m1dx7dJ7ZXBU7VGdxarFER9DFlQMx6prJtYMxQj4Hu/oirG7z8zdPjuFxyOQqGn/5+Bhhj8ITIwnuObrAu7d08O9uXkVFNVgV96EZdn5soMXLUrHOnRvb8S+PUzs6l+fbB+f4/J1rMU274Of6VS38zj3H+aXrB+iJeBleKtIb9XB0rrBiPEt1nd6oB1EUSJbqHJnJr4RDgcu2aGgybU+SuWNjO5/Y3QvAifki8aCbiM/JNUMRhhdLzOerHJst2KFvRWJdV4Cb1sQZTZTxO2UeOLbArr4wv337Wl6YzPLA0QXesa4VlyKybyrL/qkcLlmkLehiR7fC8YUibUEn79vWiWFa3Hd0njWtAdLlBg+fSHD9qhjXDrXQG/Pwlb3TGKaFwyGxVKhz05pWQh6JFyZzrIn7+fDObjxOmbpmMJ+vMXgZDB8/W0C0rSfM/UcX+KXrB3DKEnG/m1+9ye4v/vx3jvOpa3o5MptHNyy2DEV5ZizN6USJz94wyC9c088fPjgMlkUsEMS04JqhGOmyymiqjM+pEPc7+fiVffzXe0+QqtQJuxzcvamDR0YS3L25k229YQ5N51jT5uebB2Z5//ZONnQEifqcWJYtK3lyocBgi131/t/vP8kt6+K2IMOyR5ks1vG5ZBYLdbtnOu7HKUtctyqGJAp4nTIO2Z4a47oIZYqm53n50fQ8Xz1vmCdU1wy+c2iOj1/Zu3JXXqg2eHwkSaWh0xZw8/DJJaqqRmfIzXSmgqpbbOkO8pErunn8VJqTCwWK9Qa7+6O4FZEvPzvFr9w4xNGZHFG/A92wePpMiv/4jtXkahp/84RtND92ZS9//NAI1w7FWCzW+eiuHuqGLcq9WKgjiwKabnHVUJSHTyyxsTOAblgUahodITcWFvFzhvs+Opzg5HyBjZ32OKeh+Pm5nVJdo1TX6XjlQrPLzvO0LAvNsEiVVaJeOzxYqGocnsnx8Mkl3rmxnT9/5DSDcR89UQ8eWeDJMxlMC25cHWNDZ5DD03nm8xXmcir5qsrHruzl6/tsjdedfWGOzubpjXhRZIH/fMda5nN1TieKjKUq9IQ9SKLAPzw7yXu2djCXq/GzV/XRGfFwZDaPLApEvAq5qr4yb7TaMFaKVgCOzOQoqTqbu0IMLxbZPRBlPFVisMV/yTzP+VyVTKXB5q4QuUqDsNfBnz9ymg/t6KYr4uHgdJbvHJzlIzu7eXoszVPDSURJsOfObu8kXVQ5k6rw3m0djC6VODCVRZYE3rulk/aIm63dYb57aJ4Wnz22L+5z8IcPn+aODW2saw9QqDb4wckEVw9GqGkG48kKN69vJV1S+egVPect/R+emWBTZ4hMRWVzV5DJVBUwOTJXwOOQifmcJIo1BmI+NnYFz/tsnMvz4xmuGoy+4p5fnreRTZpcJrgUiWsGY5TqLzZOf2XvNHsnMmzrDiOKAoNRDyBw+8Y23A6ZkEdhPmeHCr0uibXtfn7r9rXUdJO5XI27N7Xz5EiSkwt5ptJVbtvQytbuEIosEnQqrG0PsKEzxM6+CLsHosiS7QXOZCucXLCHEM9kqmiGQU3XKdc1+mNeusIe+mJe2oIunjmTXm4Gf5EdPWFuWhtnNlvlweMvVa4pqzrJ0ktzmpphUrjIGYeXCkEQcMgis9kqPzyV4J+fm0QU4cqBKJs6g+ybyvAzu7u5dV0LiiTy4MkktYbOujYflgX3Hp7n3iPzgEDQLRHzOREEi1WtPtZ3+PE7FFa1+bludQv/5e4NWAj803NTOBWJ927t5N1bO2gNOrlzUzvr2gNYgGs5l7alK8T+qSxBt2NFHL1Q0zk+XwDsUHixrpEqq+SrGkG3wu6BKP/2wgx7RtOXbE/B1g+WRZH0cuGbaVpc2R9ducHa0BHAIcvsnciQr+p8/p3r7PdgwMmphRL5uoZbERhZKFJSdVa3+eiJenE5JH7nnpNkyg0SxRr3H13g4HSOpaLKp3b3sLkryLNjKdZ3BEC0IzaqbuJUJG5ZG2ehUONLe8b480dO8/2jC5xcKPBz1/QzFPcRcNmDGWq6zmiyws6eCO/b1rlcGNRDZ9jzsoYTuGghkGbYtsmbytlWmrdK9W2mrJKvNvC5ZM76ab94/QCFmk6L34knXWE8Web33rOBVElFlgQCLgXdtNjdH+XUYpFkoU66bAsPlGoaf/TgMO/a0k6qVEcSBH7//lP8+5tX8fDxJbxOmTWtProj9hitfK3B2HSJ92ztQpFFNncG2dgZojPkXtEfPTaX55nlcVdDcR8PHFvknZvaqKg6pmkhigKjiRIBl8L69gBzuRqfvvrFUOxYskTE66Q96KY9+FKvM1lSGV0qcdPa+Jux5T8Rhmnxj89O8vPX9JOvaXzrwCxLhTqnFooMxX38zJU9jCZK3Htkns1dIUzLwi2LlOo6Vw/5mMvXuWowyhUDUSbTFdr8TqYzVTTdpKJa/OZtPXx93yyVhj3/8cnTKa4ditIedLF2ecapqlvkKvbosajXwXiqRLGusb49wO0b2shVNXxOmVTZFovPVRsU6xrFmsZoosSt69vOO6d3b+kg9WYWaF2AuN+FaVp8Y98Mv3BdP1/ZO8Nt69uYyVaZzVVpD7rwOCSOzhVZ3+Hn3qMLVFSdD+zsJupVCLodSKLAvskMX3thlt+5ax1busP89VNjXDMYpdqwB35/eFc3iiRQVnXSFZ3nxudJlur86SOjfHB7F90RD21B1/J+6WzpCnHfkbnlSSgBuiJe6prJo8MJ1ncEGEmUSJcb3LGxjRafcyXdEHArBNzK67I3TeP5NuFco3Q5crZtpTPkZuoLd71l1IeePpPitvVteM8pInLIEi1+OydimBZ3b24n7ncRdClUVYO7NnWwVKjz/EQWVTMIeGT+/AcjvHNLB0NxH6IkcOPaVhqGxT1HFvjklT08cyaJyyHic8pUVYNMWeXp0RSfuqqfVa0+7j2ywPu3dRG8wGSTzV0hNneFqGsGsiBw1WCUobifPWdSmJbFQq7GvskMd25sJ1fVlr2qF6NShmmHPV+OzpD7sn1fnUUSBT59dR+iKBDxOvjsDYOkS3UmM2V2D0QQBIHeiIfZXI1cuUGmrPKH79/IFX0x7j0yvxxWLPLg8UU+d+Mg69uDPDqcYF17gCdOJ/jzR8b48M4upjJVrh6MUlZ1LGxx9HuPzHP7hjZu39DGjt4Q//TsFN1hDx0hNw+fWGIxX6cl4GRrd4jJdIW94xluWdeKaVkcnc2zvSdse6uWdd7rYmExl6u+qWPJLoQoCty2oQ2XInPtUIyRpSLr2wNs7grhViR++/Y1/PFDpxhZLHHTmlZu3dCK2yFxbC6P36XQG/Wyrj3IyGKZv31qnJ/Z3YvfqbDndIov5Kps7LTD1O1BF1f0R1jVYhJwySSK9k3ndLaK2yGzqtWPIon82SOjvH9bJ//5zvXnpRjcDokPLQu6hz0OfC6ZgOv1MZQXopnzvPz4iXKel2uu8+V4ndf7pufgfnByiZ294fNyVodmchSqGtt6QvhdCpmKStzv4tFTCY7O5bhhdZyHji+wviPEnjMpfu3mIRRRpDfm5a+eOMO1QzEcksRIosjO3ginEyUauoEiSXRH3CwVavicy17twPmhpbFkGVU36Ay5+cb+WT6+u5eRxSI7+yKYpkVNs8d21RrGyhSS18Bll/P8cRyZzVPXDHYPRMmWVb57eI6+qJd3rG+jrhn8wj/t47duX4tmmIwmSoRcCsmyys6+COPJMi0BFyfnC/zsNX04ZYnhxSKKJKzkjA9MZYl4HQwsF/jUNYPHhxPs7IsQcCtousm3D86xuTvIjt4IT40m6Ql76Il6eejEIh6HRLVhcPPaOB7HBf2Zy6LaFmxRCk232DOWYlNnkN6obdj3jqc5MJWl3DCIeB2saw9w3aoWhheLZCsN8rUGzy3POf3YFb0cmc1xcr7AYIufTV0B2oJuW3i+1YfHIXN8Lk884KLWMPC55JXJPpZlMZ2pkiqr7Op7qZBBsa7x9GiKuze/ZnWmV9zzpvG8/PipMJ4/qoT0GkO4b/rFPFVSiXgd5ynwHJnNc3g6x8bOAKbFco/m+Tw3lqY74qGhm/REPCjLodeyquN1SAiCsKIyA9DQTZaKNb5zcI7N3SHWtPpIlzUUSSDoVugKe0gW6+yfzLJ7MErArbCYrxMPOJnKVFjbFngNW/PyO/EafvZNN566YS6L8tt7bZoWggC5qsaeMynifgfJUgOHJHLT2jjpsspCvsbppdJycY/J+o4gDtnO/R2bK7C9J7Qy3zRRrGNZ0BZ0oeoGDd1cqXo+y1iyhG5YrG0PMJ2pcHgmz8bOIH1RD7ppvVJ152VjPM9y7nv0LEuFGpmyiseprHjLumHy5GiKuN9JqlhjJlvj3Vs7kUWBpWKdsqojiSIN3cSliKyK+zEti6++MMNHr+hmIlWhI+giHrBDtpOpCmvb/YwnK3Y+9EcwTYv08k3ra6RpPN+C/FQYz3N5HdZ+2VzM7z+6QG/EjYXAlu4QumEiiQKCIGBZFg3DxPkqG981w6Rc1wi6HXz70Bzv3tKxMtMy5HGgGSb5qrYi9H4xVFSdXLVBV/gn8kAvm/3+STgym6cn4iHsUchWGkS8jvPCpQCz2Sr5qsaGjgDiOUZiOlPh9FKJm9fGz2vbmc1WifoczGarpEoq177KwcqvwGVnPF8NFVXHIYsrNy+PjyQA2NgRJB540cjphsn+qRy7ByIkiioWFrlKg7jfSWx5wPlsrsratgCGaaGbr/6z9OM497PKRex5s9q2ySXnko8w+73fsy8ar/QFr/icd23tpPv//glbukMA7BlLM7xYAmAmW+WJkSQnFwo8P57Gsiz2TqSZSttTHObzNR4+sfiS5R2ZzTORrnJ0Ls/69gAuxZYKPOv5KJL4qgwn2J5uoniJilFex/1GEC5KiehcAi67n08QBPZPZZnKVDk4nePgVHblOd0RD5u6giuG8+RCgXRZJeBSqKg6JxaKgG0YXpjIsG8qQ1nVyZQbP3FBSrbSoKLqP9HPviKXaM/Lqs4/PDvJwencyrFtPWHyVe0lhq/SMHh2LI0gCLQFXaRLDURR4IenkgB4nfJKJOVMssTeiSyvJ3vOpBlZKl3085ue5+XHT53neZbXcA6X1BN6bjxNxOu4qBDpaKJEq9/F4dkcQbdCqa5jmBY3rY1jmhZ13bhg3suy7LzlyGKJkwtFPnlV70Uv+w3gLe15Xohksc7DJ5b41NV9L/k/y7KYSFeIeZ0EPS8axql0hZlsFUkUaPU7GTpnfNhUusKpxSLv3NR+0Ws4NJMj5FZWcqfncFl4ntWGztOjKe7YeHHnlC6r1DXDntrjVnApEs+OpfjByQQRr4NfvmHwJeHqUl3D71Koawb5qkZb8DWHX39SmgpDTZq80Vw9GDvv8Wy2SsCtEDzHAzmrFTufq9IWdHH9qpblm/gXP6OiKFzQcKq6wb8+P81nrhsgX2tw16a2lzynyWvDIYt8eFf3Bf/vK3unee+2zvPymLphcmK+wF2b21ks1CnVz/cYe6MeOsOvrkLZIYmXvLL2x3F2fNeFSJbsvG/rOWHYumZQaxh0tXpWHh+bLfAbt65eiZoAK+1UwMoeF2oaU5nKpTSer0gzbNvksuGSh29fJwo1jbp2vkDBNw/MMpEqo+omAZeC+GJu5RVxyhKfXvaIbl7bSsT36kK0TV6ZI7N5MpXGBf/vo1f0vKQASBQEFgt1DNOiI+RmzY9M4hAEYSXHdzFYlkW6rPIyevyXPRXVoPwjIeeusOe8Yd4uRWJrT4jUjwhx3Ht0nsXC+YMjWgOul1SUX240w7aXHz+1Yduz/ATnctmHEZcF1X+in70Muez3+83gTXxNL4uw7RvFZfrZaIZt3+5c7uIIPwnnzgE999hbQZHo5bgMLw5NXiPN1/T14a26j03j+Rbnchp+/XpxISP5VlEkatKkyU8HTePZ5C3BhbzRs7zdbh6aNGly+dM0nk3eEryVQ7ZNmjR5+9E0nm8hzpW0+/pEBoDOO94+uc4mTZo0eavQNJ5vIc7Lb+79E6Dpkb2p/O7vXuoV/HTR3O83n+aeXzTNVpUmTZo0adLkVfLWrBFu0qRJkyZNLiFN49mkSZMmTZq8SprGs0mTJk2aNHmVNI1nkyZNmjRp8ippVtteZgiC8DAQe8UnvnpiQPoN+L2XAy7LsjZe6kU0adLkp4dmte1PCYIgHLAsa+elXscbwdv53Jo0aXJ50gzbNmnSpEmTJq+SpvFs0qRJkyZNXiVN4/nTwxcv9QLeQN7O59akSZPLkGbOs0mTJk2aNHmVND3PJk2aNGnS5FXSNJ5NmjRp0qTJq6RpPN/mCIJwhyAIpwVBGBME4fOXej2vJ4IgTAmCcFwQhCOCIBy41Otp0qTJTw/NnOfbGEEQJGAUuBWYA/YDH7Ms69QlXdjrhCAIU8BOy7LeruIPTZo0uUxpep5vb64AxizLmrAsqwF8HXjPJV7T5YbV/HrVX6+FN2xdpmmtfD+dqViT6crLPrfa0K1/e2Hmx/6+L++ZsFTdsAArU1at2WzVAqz5fM06OJ2zyqpuGef8zQt91RqG9c39s5dyv1+3PTdMyyrVtYt+frJUt/ZOZM47NpmuWE+Nps479tRoyhpLllYejyVL1lzO3uuRpaL1+EjCAqzjc4VX3O/X8esVaXqeb2MEQfggcIdlWZ9ZfvxJ4ErLsn7t0q7s9UEQhEkgh/1m/zvLsn6SlpXmB+DVI7yGn70s9ns0UcIpi/RGvecdb+gmxbqGAFQ1g+6w5yU/W1F1yqpOa8B1UX+rUNUIehQauolpWbgU6dUu97XsN7yBe17XDAQBnPJLz6muGWQrDTpC7pVjmmGi6iY+p60MeyZRwqVItAddqLrJUrFOd9hDsa4R8zntxVsWgvBat+BV84p/sOl5Nnkrc61lWduBO4FfFQTh+ku9oCaXnrpmXPB4sa7R0E3AviCfpVDVKKs6AIuFGv/rB6cZT5WpqvbvGU+VGU2UVp7vdcoXNJxnf+dYssx0prJyPOhRADiTLHF0Nv8azuzSYJgW+6eyK48rqk5dM9g/leX5iQxnEmUAkqU6Dx1fXHmeS5HoCLkp1F7cX0USVwwngCQKeBwSsiTy/HiauVyNTEXlhYnMyuv4ehjON8JJbBrPtzfzQPc5j7uWj70tsCxrfvnfJPA97DD1G8Ov/7r91eSy51sH56gsX6zP5dhsgfl8DQCPQ2Y8ZV/0JzMVFpePx/0u3rO1g+09Yda0+dENk1RJ5YWJLKmSyhMjyZWfO0uhqnFsLs8Dx2zD4XPKeBwvnbmxoSPIlQNRMmWV00ull/z/j/L9Y4uky+qrO/k3gfuOznP/0QXCHoWrBqJs7AwCEPM6uXoohmVZ/PNzU2iGSbbS4CvPTzOfq638fLWhM7G8hwMtPqI+Jyfm8ximxZX9EQIuBVU3efD4IslS/TWvdzRR4tHh5Gv+PT9K03i+vdkPrBIEoV8QBAfwUeC+S7ym1wVBELyCIPjPfg/cBpx4w/7gkSP2V5PLnk/u7sXrlDk2lydbaawcv3ZVjP6YHab1OCRSJdswbe0OcWqxyFKhjtshcdVgDFmyL426aXF6qUiuqlJraFw1GKUv6qVU10iXVYo1jZOLBWRR5M6NbRydzTOZrtDid563JtO0mMtVAVgq1BF/jDM1lixhWRbXDsWIeByv59b8REiiwK6+yMrjD2zv5j1bO5nN1ZjJVleOi6KALAoIgsAHd3ShSCJhj8Indveyps2/8rylfI1/eX6aumbwrQOzTGXKWBY8PpKkrhl4nTLv397F9t4wo0vn36hMZysXvDEyTYuZTPUlxwFWxX3cvDZ+0ef7r89PXdTzmsbzbYxlWTrwa8APgGHgm5Zlnby0q3rdaAWeEQThKLAP+L5lWQ9f4jU1uYzwOGQU6cJWygLetaVj5fHtG9poDThf8jyXIhHzO2kPuHj6TAaXIiGJAplyg4lUmW8emKVU11nfEUCWRDZ0BNjZF37x71gWhZrGQr7Gc+MZdMNkPF1hKO678Losi+8cnGcxXyPoURB/nJW9RDhkEYcscvVglMEW+zwaukmh2uDf9k1Ta+h4l0OzgiCshK2zlQbJUp2xVIVPX9WLQxLRDJO941lWt/n5/fdsJHTOzcLpxRLy8utXbegUahq/f98pTi8VX7KmhmEyfIHjZ9cgvYp9fP/2rot6XrNgqMlPOxf3AbjxRvvfJ598wxbyFuItVzC0VKhjWBadITemafHkaJJiVWdHX4iD03n6Yx46Qh5a/E6ePZOmNehaMXDPjqWI+524FJmTC0Xu2NiGaVpopsmh6Tw7+8KkSipHZ/Ps7IvQ4ncyl6sym62xutXHs+MZNnYE0E2L1a0vemAPHFvglrWtuB3nF9sUqhpuh4RDFinWNQIu5bIoGHpiJMmqVh9dYQ/3HV3g9g2tSILAC5NZ4n4nyZKKS5EQBdjWY99AlFWdPaMprl/dwmPDCda0BVa80IPTOUzTpD3o4pmxDB+9oufFBVsWhmGxVKrTFfYwmihRVnX6InYB18GZPLeub33FNSeKddIllb6Yd8Wg/zgeOZVgY2eA9qD7Ffe8OQy7SZM3gWu+8PhKvu1cOkNunv38zZdgRW9v7ju6wA2rWnDIIk+NptjQEcAwbRvyrYOzvGNdK7IkslSo0RV2E3A7cEgiumEykS6j6jpDcR/lusauvigOWaTW0Ll+dYyZTJVj83lu39CGJMB3D80xm6vxi9cO4HfZl9SYz4lLkYj6nNywqoX5fI31HYGV9SUKNfqiHlzKS4N/TkXkX/dO8wvX9mN3ylwebO8N41029Dt6wzgkEcuyc7yrWv2savUzkSrzZz8c5T/d6WQuW+W7h+b4jdtWI4mC/Zy4j1SpTovfRYvPyTNjKSbTVa4eip33t04uFDg+V8TC4sM7u3l6NMXPX9OPKArsHc+w4Zy9/HGcXCggiSLd0ZdWTQOounFepfDadj8x70sjEBeiaTybNHkTmM/XmPrCXS853vf571+C1bz9uW4oRsAtY1mwoSNA97LH8sTpJNcMxYgut0GU6xohj+O86tmPXdHDEyMpZjIVvvj0JB/a2cVSsUay2OCTV/XSE5XpDLsZXSoxlioT9ji4cbWP4aUiuweigB3udSkSmmEykigSdCsrv382W+Xhk0vctKblgpWkLkXi567uA+Blos6XhHPPoXO5/UQQ7JxoQzdxyCKPjyT5hev6cEgiUa+CqhskiiodIQ89EQ9feOgUlgX/6c51dIbdfOyKHkaXShimxdHZPOvaA1hYvDCR5ZZ1rYiCgCyJXDMUo6oZ+JwyiizQGnDR0E3qukHA9eK6xpJluiPuFYN489qX904N0+Jfn5/m567pXwnrHp3N4x6IrrTJ/DiaOc8mTZq87Qh7HQiCgCgKK4YTYEtX6DxDWarr/ODkEl98egLNsNtYvnNojpjfwbcOzrGlO8BSscax2QIfu6Kbx0cS7J/KYpgWpxMl3rmpHd202N4TPq+o5iyGaVGsaRyfy69UjnZHPHzm2n6G4v7znlvXjJXq2rO5zrPe8uWIZVl879Aci4U6mbLKfUcXeP+2TlTdosXvZDJT5XM3rWIw7uN7h+fZP5mhLejm+tUtKJLI/UcXWCjUWdMeoFTXODyTp64ZGKbFp67uoy/mRVq+e2joJrWGzoPHF9neE0YSBebz9usCL7YnJUv1lXakczm9VFqp8D2LJAp85rqB8/Khd2/uuCjDCU3Ps0mTJm9zlgp1jszk2NUfWfE4aw0DWRIYS5bpDXtwOSX+4P5TfOKqXu7a3IHPKeOSRQ7P5tnVG2FbdxhBEHh8JMH7tnXhkEXu3NRGrWFQUXVEUaBY19B0k2Nz9gX9iv4IXqeM1ynTHfGgiOJKw/+PepyGaZGpNJhOV4gNvXjxnsvXiFzkxfy1oBsmkvjSdf04HhtOMpOt8pnr+vnHZ6bY2hNGEkX2TmRoDTi5Y2M7dU3n4HSebd0hdNNkV390JX3x7i0dKzcJGzqCrIr7+J8PDrMm7uNdWzs5tVDk4EyOz14/yJbuEADr2wMra+yPeemJeFB1g79/ZpINHQFuXHPhqtqwV0EWX19fsel5NmlyCekMuen7/Pfp+/z3ueYLj1/q5bzlyFUaLyuKADCZrpCtqIR9jvPaVg7N5Dg0naPS0LlhbZyo18H1q1sIuGTcywpAY6kKV/RFuOfIPKZlF7/8h5tXc3gmT6Wu8c/PTVFRdbb1BDk2l+fITJ4DU1kWCzVEweKLT48DsLM3Qm/Ey9NnUpQu0GZhmBb/8Mwk7QHXS3J/F1LueSN4+kyK04lX7j09l2tXRbl6MMq+yRxbe0JMpMsEPQrXDMYo1uzz/Ptnpnh+PE26rFJtGPzFY6MIWJTrGg8cW+DRUwnuPzqPphuU6joBl8xCQeXLeyZZ0+7nczcO4ZBfNFN9sRcVoYp1jX97YRqnLPFL1w+wqtX/kjWeJe53EfG+vm0/Tc+zSZNLyLnFQs3856tneKlIV8hDz3JBiGVZ/P0zk3z66j4UScTrlPA6JNZ3BM/7OVEQOD5X4JZ1tqfSHfEQ9jj4l+emGEmU+Oiubu7e3I4gCATcCr973wnWtwcZbPGysTOI16Vw89pW/uyR09y8rpUN7UF8TpmyqrO+I0im3KCiGiwV6uSqDXLVBrdvaLugNJ8kCvz8tf0XbEs5tz/yjeSmNfGL9jpV3eDhE0u8Z2snnWEPj55K0Bv1MJEqcyZRoj3kYs9oiojXwS9eN4BDFtk7nmE+X+bwdI6pTIW7N3Vw75EF3rmpDY9D5ukzadwOif90xzpGl4pUGgbRVyjcCbgUfubKXsBWLuoMuTm1UCRfbbzkJuTHcWK+wPr2wKtuC2p6nk0uiCAITwiCcOvy9/9DEIT/e6nX1KTJj3L1YGzFcILd07epK0ihpgG2xxEPuJjNVtGNF3NhXWE37SEXPpfMfK7Kf7//FMdm8xyaydEWcDEQs9tURhMl4gEXH7+yl86wm+tWt7ChI8BkukJHyMWffHArd23qoKYZ5KsNDs/k6Y54WNvuZ1dfmGJNoyvsZldfhH97YeZlZeJerg/xzWolfCXDWWsYKx7+Y8O2sTRMi6VCnXRFZaDFw2CLj1OLRbrCHioNg7964gyCAHO5Kg8cWyBRqHPnpjb+/c2ruXtzB3/ziR1c0R/llnVxblrTwvBCkX2TGTrDHgZafEykyizkq8xkqhimhWVZKzJ/Zzl338qqjscpsr03zKshW2mc18uTKF6cqlHT82zycvwu8N8FQYgD24B3X+L1NGlyUbT6XSuh17OcSZYIeRTQDE7MFzk0k+OuTW20+F1UVZ1rBmMcW/ZA7tjUDqLFYyMJ7j+ywI1rWrhrcydf2zfNR/7ueW5cHaPcMPj3t6xekeF74NgiV/SFuWYoSlnV+dsnx2gNumgNukmVVPacSfPz1/a/6nN58nSSm35MxeibxchSEUkU2NwV4obVcdyKxIPHFzidKBNyK+RrOu/d1smTp1OousG2njB+l0SmrJIo1rllXSsL+RqyaPe3/uDEEqJo0Rpw88xYmg9t72I+V6Ws6jw+nOQ/37mWRKFO1TRJlOq8MJlhQ2eAkwtFXLJ0nsDFWSqqTrai0Re9sADFy3H96pafaE+anmeTC2JZ1tPYzfC/AXzUsixDEIQBQRD+XhCEb1/i5TVpch6WZdHQTY7M5ukIuRHP8aRKdY2eiBe/S2E+V+PB4wscmc0ynrTF27++f5aFQo1ivUFnxM1kqsJvffMYjw0nuXYoxmyuzoPHF9jQHuDuTW0cny/ikESWCi96KO/f3sn23jCHpu2K0b6ol1vWxon67Dzbh3a+vGrNtw7MnlchWqhqnJwvMJ4qX7CC982grhmY51T6busJs7krBNjC+Kpukq1omJbJyYUCU6ky3z04iyIKvDCR5bmxFKeXSnzhoWEOT+dwKSKLhRoHprNIIqTKdcYSFW5c3UJ/zMOqNj+dEQ9XDkRo8TnJVzW+eXAWE4trhmIMxn3kKxof3N7FlQMX3hOvU2Z7z0u9zh+eXEIzTObzNUYTJfZOZH7suV/stJym8WxyQQRB2AS0Aw3LskoAy3NBf+HSrqxJk5cylany+EgC3TBRdYNv7J9Z+T/dsFgq1DgymyfoUbh2qAWnLBP2KRimhWYYHJzKkiiouGSRp8+kuGlNC15FZDZXw6WIPHh8kT1jaRJFld999wbWtQd4csQWG18q1HjqdBJZFNnQGSBZVNncHeL/PDbGN/bNUm3Y7RfH5vIXXPsNa1rOK4qp6wb5WgNVM/Gd08P4ZvLUaIrZXJXhRTuU+qPsnciQrTZY3x5gR2+YFyazpCu2PN/6dj87eyNMpCu4FRFRFNjcGUQUIFlU8bsUdvZGuG51jG8fmudnr+6nK+yhO+yhoVtkqyp//eQYP39tH1Gvgy89PU6+ohJwKxyayRHzOplIlfnqC9Mr61F1g+8dmrvguQy0+JBFAU03EQVeojv8k9I0nk1egiAI7cBXsQdnlwVBuOMSL+mngmbl7U9GQzeZzVa5Y2M7m7tC7J/K8rPXvBginc1VcSkSPqfM6aUS09kK793WyWDMz988McboUpGb1rZy58Z2xpJVPn/HGj66qxe3U+buzR10BN186qpetnQEeGYszYHJLM+cSeFyiDxzJs33jy/ylb3TfPnpMSwTHJLID08u0eJ3MNTqozvsYXSpxHiifF7eFWyv+NB07rxjrQEX1wy1nKdI9GZz+4Y2eqNe+iIe9k/mVvpNNcOkVNPwu2R+6foBNneFuXIgyvt3dPHrt6zmf314KxOpKj1RDxGvE1W3GF4s8kcPjeBzyvzMlb2kSio9YQ//9OwkgmUhCgLleoPZXBVFhJlshVKtwWOnkkR9TlTd5FsHZ8GyODlfpFTXGVkq8cFzNGjLdZ1PXtXHI6cSzOWq1DWDWsPO0Q7FfSv6tvmqtqLH+1pp5jybnIcgCB7gu8BvWpY1LAjCHwD/H9AUXX+DaVbe/mRIorDiTRyeyVGoaiv/t1ioMbJYRBQF5sZS3L6+jelMhVpDJ11ReejEAu/e0s6Hd3VjGCYHpmwv69e/cZiBqIelYo3TiSJz2RoIAl1hD1PZKqYFW7tCfO/wArIId29q5wenkjRMuLI/imVZ3LwmTrVh4pDgwHQWw4SJdIWxZJmdfWHifhceRaIrbOvtXo4i8C6HxDvWxzFMiweOLdARcjOVrrC61Y9mWHxt3wzvWNfK/370DBs7/RRqOhPpCtt7wnzuxkFCbpm/fnKC2ze08sTpFE+enuKKgSh7pzJs6wnTEXbz4PFFTi8WObVYYt9kFp9LwrIsfE6ZTFnll64f5L/ec5yHTizyqav7CXoU3rmpnW/un6Uz7GZNq5/HRhJ8ZFcPuwciWJYtimBhT8wBSJVUvA6J9tDFhWQvhqbxbHIelmVVgavOefz02ceCIESB/wlsEwTh/7Es648uzSqbNHkRSRRY1257aTt/JEfolEW7iCTmZTFf59BUlpjPwe4BW6JvZ3+Me44sEPC4iHgUEiWVH55KcPVgFL9L5tRCgds3tBFyO5jOVpjOVKk2DEaXSvzWt47iVET++uM76I542dgVojPsZlXcx/beEPlqA4csUdctZrM1/sf7NgG2Z+lfFilPllXuPbJIxOukY1ny7nLCtGA6U2VV3M+uvgiGaXuKW7pDZCoqnWE3ggD/832bWMxX+efnp+iPeCnVNL789ASCIPDZGwaZTJfZ0hXitvWtHJsr0B50EXLLzGZrvHNTO5Io8s7NHYwlizxwfIldvREeG0mSWjaeX/jAZqYzVTLlxkpO8v3bOxlLlVFkkY/sskXl/S6Fbx+c4x3r4udNaPni0+M4ZZFtPWF8ToWGbr7m8G1zqkqTn3belKkqfZ///gW1bV+v57/JvKWmqhyczqHpJtmqysHpPLIIv3DtAH/15BhXDUTQNJOJTJX3bu3kGwdm6It42TeV5QM7unh8JIlbEbl7cwdLxTqWBTXNwKOIPDmaZl27n01dIc4kytQ0nXLdQJFEirUGd25qZ+CcEOFstopumngdMsmSujJEOldpEPIoK+0ipxaKJEp1bnpRLedNnapydoj1hQpnlgo1inWdxXyNVElFEEBAIFNRKak6YbfCLetacSsS9x9b4PGRJOvbg7x3awf7p3JMZyvcubGd7b1hJlJl/vHZCXJVjX9382pmMhVkSWA8XeHDO7rZO55mR1+EyrIs342r45xJlXnX5g4kUSBZrBNfXmOprvFnj4xyw+oYN655aXVyvWEwliqzsTPIVLpCqa6zqSv4kuedwyvueTPn2aRJk7cN2UqDQs1WElrI13hiJMmzZ1KkynWeH8swn63QHnDxpafHGUsU8TsVRpIlpjIVHh9JUKpp3Hdsno9e0c1VgzEEweJbB+b4n98/RaGqc8/heQ5OZ9FN+J271jG8WOLPf3iab+2f4dHhBJs6A4ylSmzsCjLQ4uOrL0xzcDpLqqTy7FiaqXQVpyzhd8n8wQMneeZMij1j6RVFHoB17X6uG4qRKas8cyb9pu9hsaZxauHCszG/vn+aL++ZYD5f4+rBKLph0eJ3UKjpDC8U+O7heeZyVf780VGeOZPG75TY1BXg4HSWbx2cJVVWqTV0/uihYf5t3zSKJJEpN+iJuDkwk2MhX+Ndm9q578g8//jcFPcdWWA6U2U2U2WhUGN4wW4zAviDB05xz+F5LMvi9FKJzqALr0NeGTpeVnUeOr5IRdVxOaSVm5W+mJdNXUHqmkG18VLFp4ulGbZt0qTJ24ajc3lOLRS5fUMrT59O8cTpJFcORHjnpg7ylQYPn1wkX9fZ1h3iPVs7WdcR5NBsjkrd4ORCnkSxgSIIPDK8RLqkUq7p/Py1fezqi1FraFhYfGhHN//2wgzfPTzPZKpM0K3w7q3tbOgIoRsWP7Orh5qmkyqp3L25g1SxzmPDS1w5EKN/WV4u6FHoi/pY3xEgsqykk6s00EyTuN+FLAn4XDIDLd4fd7pvCFGfk5vWXlgjdiJZ5Yr+MLPZGg+eWLTbfYQwv/6OVRyby/PFp8b5xr5ZhuI+Ti8V2dQZZFNniL984gyr4x7cDpkjs3lm0xWSFZWr+iLcsbEVj0Pm1nWt/N/HR8lUNOJ+B16XjIHJmWSRVFllOlWmP+Zl63LLzB9/cDO5qsZfPHaGD2zv5Gd291Ks6Tx9JoXPWeBMosSHdnbjVux+U69TPk/haSxZptowiPkc50UILpam59mkyevINV94vFkxewm5aU2cX71pCEkQmMlVEQQYS5R5fjyNLIt8cEcX27vD3Ly2lVxVZ2SxwIn5Ij97dS+6Cb0RL5Yo8MipJN8+OM+u/ggOWWJkscCX9kzQHfbw+e8cY02bj7BH5lNX9bKhM0hNsxAsiz98aJiv7Z/h4RMJUqU6QbeCZlrEA3aO71wd3k9e1btiOE8uFHjydPI8/V2nLF02edA//P4wz4+n+eRVfbxjfRtDcS/vWNfG779nI1u7A/zFY2c4tViiO+rh6HyekaUiH9nRTdjn4I8eGibgUhhP1/A5ZXxOmU9f00d30MM3D83xzFga07T41sE5vA6Fa4eifHhXD16HzDNnMsT9Lt6zpZPOiJfVrT7+7NFRwM7HHp7Jc9v6NkYTZQ7P5GgNOBmIeemNeLh9QysdITcWdgHRsbk8p5dKPHxiCYCNnUE2dwWZylR+oj1pep5NmryOnDu387VUzJ5tWzn7fXNg9stjWRYvTGa5oi+CaVlMZyvsnciypSvE7oEY5XqDQk1jJlPlwzt7cCoS3zs0x4YOP989NIemmfzz3mncksCz4ylWt/rZ3hXiutUtbOwM8Z++dZSpXIXukJtiXaMn7OaBY0u8c1Mb/7J3mlvXxpnOVKlrOlu7Q/zGLav43tFFhlp8fPfgLE+cTrGpK8CX90zys1f3cduGNsqqjksWkSXbf1nd6mewxbfiGZmmRXF51ujlwOduGsQpi+RrGslinZHFInG/k5PzBebzNWazFRbzVU4vlfE7FTZ1Bfnrp8fpiXhs8X5VJ+JRWN/u54t7JlnfESDgkbmiN0x3xMtnv3KQjpCLrd0R/tu9x/nE7j7u2NjK948tkiw2cDtEBgI+WgNudiwLIbgVCVUz6Iq4CXsVRpdKvDCZZfdAlHRZpa4ZNHSTx0YSzGWrRH1ODMPiulUv6t66lBfDua+WpufZpMllyLOfv5mpL9zF1BfuWhnh1OTlUSSRv31qnIdPLjG8WGI+V6VY1ynUGjw3nuXUQoFS3aC/xYfHIRFwKTw+kuLgdI5sVaWi6qQqDe5YbysI+VwyDllCFMHtFLF0g6pusrY9yEyuRsglsaM3wnu3djIQ9xHyKMR8Lj53wwB/98wkVw1EeXQ4wXS2ynWrYvRFvPRF3MxmbS/nhYkMi4U63zs8x71H5lEkEacs8tUXpnliJEm22uC58cxrysm9noQ8DkYWS/z9nkn+4dkpAm4HA3E/z01kePpMinRRpdYwmMlW0A2Dw9N5Prqzm5DbQa2hU9N1tveE+MIPTqMuD7Eu1w38bgfXDMX41ZuGuHFNC/cfWWRde5BKw6BS15EEgaEWDwh2/+zjI0u0Be0iIUGAXf0RPIrE06dTtIdcXLFcbR3zORlZLHFgKotbkbh2VQsxn5PWoAuv80WfUdUN9oy+mFf+3uE5inWNi6HpeTZp8gbxo95jkzcGQRBwKyKlusZ0pgII3LnRrnT9Hw+coj/qZr5Q571bO/ni0+PIorBSLLK9N0w84CJX0bAsixNLRRTZruT8sx+e5jduXcV0ukpH2ENnxMPBqSxtQRdRnwMBi32TGeqayZ0b2yjUGvzSVw5imBa1hoEITGcrtAddJEsqUZ8Ln1NhZLFIVTXoDLmxCONR7MvwN/bPcmV/hLpmEvM5eeem9gsOdr4UzGSqRHwO4gEn793WSczvxDTsAdW/fstqptJl/vWFaYJuBZdDQTdNHjy+QKqk4nM7KasGz55JE/bIbGjzI0kS9xxZoMXnRJEE3ru1gydHkjRMi5jXyVMjSyRLKlf2x/A4FTa0O4l4HdxzuIwiSRimxf6pLJ+6qg9ZEtnQGaTV7+aR4SXGEmV++cYhblobRxReFL13K7bi0cn5AhuWvU2nLPGBHS+KLdy0Jr7SRvRKND3PJk3eIM71Hpth1zeW1oCL92/v4nM3DtEf89If8+J1yvy3d20gWW6wfVmb9cBklr98fIyIV2E0USbgVrh2KMbIQoG5XBVdNwm7HWzvD5OpNLj38DyDcS9Bj8JUukKu2mA2W2U2V+e/3nuCyUwVQRDY1hPCNExuWBWjUNdYyFU5uVDgutUxWgMuBlp8SJLANatiTKYrfOPADP/h64c5uezlAnxgRxdDcf95YcT/n73/DpfzOA/77+/Ttvfds3t6L+gdIEiCvatQhbIsWXJ3XGLHVpzEVn4pksub0IkT97jKRZZlNYuyJIqk2DtAgCB6Pb2X7X2f+v6xIARKlHggFhDgfK7rXNiG3XkG5N5nZu6558KyfW81y3aYyVbZP5lFUSQ0ReZn9/TTMC2OzOT54v5ZHOCLB6b5o8fO4tMUfvXmQWq6wanFIoWaQb5mokrwvi0dhHwuNFnhufEco8tl/v2tg2zsDJGrGvz+w2dIV3R2dMd46MQiNdMhEXTT1xIg5tMoVHUkJH762l6ePrvMc2MZfnx3D/cfmefsUonOqJc/fOQMxarJho4witysKOQ4za030MyyPTpX5Mhc/nsqPe0bzzCRrhDxuVZ9NJsInoIgXPbiATdDqSCSJPGujW343Sr3vTTLP78wTbrU4IkzS/zPb53g124d4kPbOzg6W+TPf3w7U+kqf/zoWQo1gxcns8znawRcMk+dWiHglnlmPItbVchVTKp1AwWHP/roVm5dm+LWdSl+8uoeOqMevnlkga8fWWRzd4Q1yRB9yQBbu6PE/R7OLJV4dixNa9DNTLZKa9hDxKvh1mRmc1V+/6HTQHPq+e2kWDN44vQKY8tlOiJe2iNeFFlie0+MRMBFttrg394wiN+lsaY1hCzBFw7M4nerpIIebhxJEfZqSDLsHctSqOnEA25uGEnSMB2WSgbDyRAvTGQ4Plds1rY1bLqjHn7qmj5297egmzaf+sZxvn1iib3jae594BS/dfcG7trQytG5AnG/i68fmmMuV2UiU+GWtS1s7gxzfL7At48v8vjpRe594CTQ3MZ067oUu/riPHJy+fx1mpbNwek8UZ/GfK56vsrUa3l7/WsJgiC8Ts+PZRhbKTOcCvIze/r45ZuHKFQt1nWE+ONHz/LCZI6QR+Xf//NL7J/MsKsnitelEHDLLJUbHF8oMZOt81vv28Cu3ig7emPs7ovSFvUxnavz1YNz7OqLMZ+vY9uwqSOCYdsUajrfPrbEv7l+gL54gLppkS03C6GfWSixWGygyBJBj8qP7Oji7k0dXD+UpCPqZXS5xNdemuPBo4vnr2MyXeHAZPaS9WPU7+LWdUk6Y80lB+uCU1aGUkF+/dZhPvPMBMOtAXqiPqqGjQy8d3M7pYbFcrnB+ze3EXYp7J9M0xHzcuNIC1u7m3ssB1t87Blp4dqBFnb2RGkJumlYJrmqyYPHFnng6DyT6TLXDiT44NZODs/kOLFQ5M8eH6VUMzi9VKJmWByeLfCl/bPcMJzgL58a52f/fj9Pnl7h0HSeyXSN7T1RDMvmkRNLNMzmdPlta7+zFWc+X+eq/hgRn4sXJrPUjdVNlYvgKQjCFUWV4Uv7Z/j28SV+6XMHUGSJ92xqQz9XpHxjR5D5fI2ybrKrL8a/Hl7g1GKZZNDD+rYwH7+qmw9sb+fL+2eZzFR54Og8+ZqBaTts74kymAwSdKucXCjyN0+Pkwp7CHk1WoLucyMyndaQi33jWZ4dTeM4cNOaJMulOqoicWAyhyJL9CR8jLQF+elr+2gNeRlpDTRPeJnK4TgOT5xZJuq/NNm2Z5dKzOaq+FwqyaCH8ZUy3z7eDOzPja7wF0+MMp2tsqEzyNmlMtmqjmnZ1Mzm0V89cS9dES81E3xeF20RL+lig5lMhT/49lmKdZ3PPDvJPzw9xlKphiPB02dXOLtSJuBRuWN9K9t6YkiKhGFZ/OVTY9hI3LauhUrd4MsHZ2gNeagZNh+/qpveFh+3rk0xka7QHffxro1tXDUQpyvmYzAZ5HN7p3jv5nbcqsJTZ1aYztX4x71TVBom8YCLrmjzQPXeRIDu2Or21oqEIUEQLluzuSpRn+sVGZQr5QaGZdEfCuBS4KFjC1w7kOC/fu0oW7ojzOfqnF4qcVV/nIZuoUgOu/tj+FwS6ZKOIzk8fnKFTLmOJEssFOqMr1RRFZoJLqrE/3zgJJok4XPJ/PML07hUCY+q0psMMtIa5Cc/s5dkyM1t65IgyaQrDe7Z1slwKsRSoc6Dxxfxawq/cssQmiLz+w+d4j2b27l9fYpf/vxL/MpNg7hU+Q07AeRieV0KHk0h7NUIe5vHoqVCbv7x+Un2jmeI+Fzc++BJpjJV/veHNpEuG8wVaqwU65ycK3B6sUy6otMScKMbFomAGwc4uVhiqdRgTYuX2WKDQ4bJXF7nxjVx+lsCRP0aa1tDnFwoc9u6FOvbQ3zj8Dy5qk7Cr+FzuRlsCVKqm0S8Lnb2RPn8C9Ns6ozwlRdn+dD2To7OFvjKizOcXizy+z+yhbDPxXAqeP7abl/fSqluMNDiw63KyJJEptxgIm2Qr+oMJlfX52LkKQjCZWkiXWFsuUKl0dzOcXAqy5OnlxlJhQh4XBybL7BYrAMSL87k2N4bYyZT58BUjq3dUe7a0MZ8sUHDgk0dYV6YyDFfbPDw8UWmshVswOdSUCSJXf1ReuJ+3re5g3LNoDXs5vhSiY6oh5puEfN5SAQ1Ts4X+btnx/norm6GUyHuP7pEw7QpVg3+4qkx8hWdY3NFVFni9FKZSsNibKWMx6VwbK7AVKbGv71xEFmWiHg1vn1i8Qf2wZulM+ojEWgWcJjJVpnJVlFkmWxF57fuXk+20sCnKcgS/O0zE7w4nWUmWyXq05jO1ehJeFFlmSMzefZP5ciVdXrifqJ+NwmfSqZm0h720jAd1rUHUCWFiZUyByayxP0eFgtVvnF4nhcn8zx6coVNHWFOLZWpGzaaKnNgKs9MtsL/e2KUJ8+scGqxgCxJxP1utvXGcByHgZYAj59eftXr0xSZuN/Dc2MZHj21xP1HFzk+Wzx/mstqiOApCMJl5fFTy8xkq1R1k3XtofPFwY/OFfj6kXnmCzVuGmnh2qE4qqxw14YUpxZKDKcC3Lg2gSY3t5I8dTbN1u4wXk3iidPLbOmKMNzipy8RwHFgMd9gJlNt7vlUZPJVnT97onn+55nFEh/f1Y1Xc5EMekiXa1R1m6v7orhlmapucmQmxwe3d5CrNgNH2KMytlJGkiTGVsr85DU9VHWTzz0/xYb2MK0hDxOZMuvaQ1i2Q2vIy/QPWf3mjSRJMJevcmqxxLWDCWRZ5j/evobOmJ/3b+skW9G5ZSRJS9BNoWagKRInFpq/ILhVGUVysCyLZ0fTVHWDjpiPYt1kOlOmNeQlGXBzfL7ATLbG2tYQDjaPn14m4lWQsBlMBtjeHWEwGWAiXT437Q23rE1x27pWPnHbMB5NJRZw0RrxsK07wrr2MAMtAVIhDy8ffuI4Dk+eXma5WMe0HUZag1w/3MJt61r5N9f1ka3pNEznVQ//fjVi2lYQ3uYu3C/68v138taX7b1RfJpCV6y5TmVYNook8ZFd3WyaL7K1O0pNt1goNBhpC3B6qczJ+QITKyW29sSIBbw8eXoFlwqG3Tw+I+xSmM7VqBk2V/WEuXGkhaOzebJVg1xVp1g3mC/USfg1JjNVFgp1XpicoCvsYbg9hKrIaKrEo6fTLBZqbOyIYNmwdzTL7v4YiaAbeThJoaqzuy/GYNLPF16Y4aaRFm4491knFkrcs62T8ZUKa1pDTGfLBNzape1smqPQsFcjXW5wcr5E3OfizFKJ7riPumFhO/DZvVMsFhvYtkXI6+Lq/jhPnM4gAwYwka2zqSvE2FKZPcMJylWdqXydim7R5/XTFfGwWGrw5NllSg2TnpiPrx6c575Di3REPBRqDUJejaBH41duHqJh2NQMiwdPLLKQq7KpK4JbUZnL1nluPM10psLGzgjfPr5ERTe5dW0rX3lxlrl8DUWW8GgKO3pj1HSLR04u8t7NHfzE1b08N5bm6EyBXX3x1+wXETwF4W3uuwPlO/2g7JCnGVBMy2al3ODUYom2sKeZ/OF3UddNHjy+hCKDY8O+8TSqAp1RLx5NJuZ3kS3XCbgVvG6NXNkgU9UJuGVSQQ+FusnJk0uUGzYRn0y+6jCfqxH1ufBpCodnCwy1+JjOOkxkqjRsGE4GmCvUiHg0tvVEePfGNnKVBuMrZW5Yk+Dps2neu7mNbx5ZIB5ws74tzPNjGR47tcx7zmWnfmh7J7evb2WxUOcvnhxFN22GVrn+9kaYzlQ5Olfg3Zvavue5oEejYVr8074pGqbJcCrEVKbKnRuStEc8tEc8mJZDw7LIlOq8OJ2nI+pBN0wWyyZJv0qpbmE7Nl9+cY7rB+Okqw1cqsSBiTR+j0ZLwMXJxRIL+Xnifg+JgIuh1iCHpgt4VInFosLO3ijfODzPmaUiW7tjRD0aC5LMc2cz/Mj2Tv7q6VHyVYPBlgCO4zCU9LO+vblv9r2b2nBryiv2cbpVmdHlMjXdwutSuGYgwZHZ/Kr6SwRPQRAuS5WGxfG5Ireua57f+JlzR2Xt6DlX43a5wrs2tvP8eAZVkZnJ1jk+X2R3f5zZXBW/R6Mj6mNHj5vHTy8zn28Q8cuEvSonl5rbFUzTxqtKTKRrdETczOSqjLSG6Ij6mS/WaQ158bgUVkoNZAmOLRR5aTbHg8eXCHgUdMPhKwdmMRyHm/UkyaCbY/MFfK7mWm25YTDY4icRcNEW8fClAzOkSw3aQh50yyHkfetGnl0xL20RD1XdpFw3z0+Hv+zQdJ6uuJewx4VblUmX6nRG/ET8ZY7Nl/ng5jZ+/+FTmDaEvRrZio6Eg1+TKekW+XoFCVAlmMnVsG2ZmVwVvyYzk6ly1gIFSIU1XC5YyuuEig36Ez4alk2panBqvkimauLRZKJejW8cnmdrV4Tt3RGOzhUIelR6437ev6Wdzz4/haLIrGsP0xb28smvHmVNW4hfvGHg/DXJssRgMkiuqjOR0cmUdN6zqX1V/SXWPAVBuCyFfdr5wPnSdI7h1iA/d10/PrfC7etSyLLEN4/M4VIkKg2b92xOMZQKcmK+QF/Cj2HZWLbNdK5Kw7BoC2uUagYHJgvIQNQj0zDBchzu2d7OcCpI2Ofm5GKJyXQFywLdtDm1UCJbbdAwbbyahGM7bOsOo5vNLSqJoJudPTHaQh5mczX2jmd598ZWdvXG+K33rcfvUXnqbJquqJ8717dy40gLpYbFxs4whv3WleeTpGYVoWxF5+xy6XxpwKpuUqobeDWFjqCHim5yzWAcB/id+09wZCbHSqnGlw/O0rBgTVsATZZxLJuITyMVctMV8WLYYDkQcGss5GvE/BptIS9Rn5tk0M3t61oIeVU8mkRNt+iK+/jRHZ0kAm42d0YwbKtZBGNDirBHpWqYfHx3N1u6wzx6cokTC0WKNYPlUnNv7X+6cw3/4wMbObVU4qnTS/zcnl7uWJfi0LnzQKFZWUiRJY7OFbBtOLlY5ORCaVX9JUaegiBclkp1g2fOprlrYxuGZXPvt07y03t6KdZMrh9qQZUlHj+Zpq/Fz6auMM+M5Vgp1pjK1JCp4HUprJR0DMuirDeTSmTABjQZarpN3QbHhAeOLeDVVK4bSvDtE8vM52sU6wZhr0rc7yLk1Yj5NVQ5wNOjGUoNk1TQjarIvG9zOx0xH4+fWsatyvy7mwd5ejSD16VyZqnC/UfmCXlcfPb5KTZ2hDg0kycV8rC2LcRM7q0/FKAz6uPobIG/fmqMm9emMG0b03I4OJ1nJl+jO+5jqdjgR3d1c3gmx1cPztCfCLBYaKBKDumSzly+hiQ1t/6YDnRFvCiAboFt25QaNn6Pg95oYJgOhYZFzcgQ9LiYy9UJeDRsq8EX9s/gcyl848giAY+CQ4XpbJWaYeF1qXhdKr1xLzXD5tqBGKPpKhs7Itz30jyaItEb91FtmJxc0EmEPIQ9Grpls9lxcBzY3hPFdpq/IER8LtyaTGKVe2vFyFMQhMuS36Wyrad5PFVXzMd7NrcT87v50Z3d/OVTY/zds5OkSw2mMhXaw14mV8p4NZWIT8PrVijXTeqGRU/cT3fUhQx4XRLdYRceVcI6l0xk21BqOCyXjeaZkUE3fo9Gf0uAim5RahjUTZsTi2WeHs1gWw6z+Rpz+TpH53IcmSsQ9mrIksSBqSwNw6I37mNte4iFfJ2Y3827NrVRaZicXiwxl69yYr4IQEfE8/074E1054ZWfvzqXr5xeJ7xlQpDqQA+l8qGjjDXDSWIejX2jmVYyNcp122eH88xvlIlW7PJVAwkzv0CYoJXhaVSA69bxa1CxbCRpWYxCwcoNCw0GXpbgpQaJiOpAGGvildTwbLIFOu0htwYpkXIrTKQDNAW9nJsNs9SsU7Qq3FVf5yWoIfNnRH2DMVpC7mp6hYPnVgi7NGQJIl7tnVyzUAcv0vhb54e56kzK6iKzEKhRr7aPEllOlPFcn5g15wnRp6CIFyWZFkiFfLQMC0kJH7sqh7OLBb57W8eZzDhZ2dvlN39USoNm4dPLBPyanhUiWrDYkN7iDPLRbyawpmFMhGfjO/c8mJvi5/yfIm6buIAFhCQoe40E0zGM1VuW5vkwGSObNnA51ZIhSQ2tgbZ3h8j4FYp1wyeGk0ztlSmVLd46swKH9/d0yxCv1TC61IYSYWI+DRuSiRZ2xbi+FyBmVyVxUKDd22K8eSZFW4/Ny39VpMkiZBX42f39JGrGihIhH0a69uD/OUTY5R1E8uC64bjTGcrjJ1LupEARQbDAsN2CPsU+uN+jswWqeo2mgqW4dAV8xLwqOhmnZEWL4slnZVCHQebnpYgNw4n+N37TzKWNvFqsLMvwdUD3VQbNkXdZKQ1yP6JLB/Y2s5Qyo9tO7hUmbl8jf/94GmuG2qhJ+Gj1DAI+13cvqGV//vwada2huhN+OiIeumL+zkxX0C3HI7O5Tm5UGRtW+j8/tbXIoKnIAiXLd20+dL+GRRZoiXoARyqDZPHTi1zcrFEX8xLfyrENYMxvvziHC2BAJ0xDwems9RNCLksDGClaiMBIbfE6cUSbk2hqpooDvjdGqrsYDcs6rpF1O9mbKVCwK3RGvUiOTLtYS8T6Qp3bnIzlany2een6Ip5qRg2a1MBDs0W+B/3n2BNW4h81aAv7mdje4RYwMWx2QKLxRq/dNMgX3hhmo/u7Oa+Q/PsGYyv+oSPN8P4uT2p7WEPz41nuHVtkr3jGXIVnXLDYFNnhKmVGplyc8pzoMXN4dk8EhIutTnq1CSJ43NFTAc0qZkQZAALhRpGFtyqRLFmsLM3zt7xDP0JP2cXy+iGSVvIQ7FaxufSMEyT/VN55nN1PJpMTTcp10zm8zVMG9yayh3rkvz7Y4eJBzWifpUHjy1x29oU69uC+Fwqv3h9H4+dStOfCPBnT4wynAzw/HiWq/vj3DiSpFTTz29/Wg0xbSsIwmVhdLn8PYdDG5ZNIujmrg1t+FwyY8uVZuKOW+WD2zpYLOn8n4dOc3qxhGk2A+RKsYZuQsQj4VJVAi6JsEcm6JZRFZm6aVOoNPAqMkGPRqFqUGrYGKbDQqlBsdJgIl3BsG3K1Qb5aoP2iBvTtPgv9x3j5FyezZ0h9gwm+ODWDhbKDfxulY6Yj+lslZlcjelclT9/4iz7RtMcncvz8PElZjMVWoNuHjy+hO1YPH5mhflLeBC6IktMpcv8/D8e4MFjC9QNiydOrzCUCmI7zZNsTi0VWMhXWCo0OL5QQFNlKrqFV5PQZGgJuQl6NVQJkKBqNteUQx4VB1BkB9sBJBu/t5lctFCssX8ix2DKT0/Cx+buMGvbosxnqoyvlPAoMu0RH4oqsW88y56hBEuFGn/06Ci/ctMA+arJwek8mzrDfPXgLL/zzZP84SNnODhdZGNnGAeHO9a30h7x8uu3DbOzL4ZuWszk6iiyhG5aq+ofMfIUBOGyUKgZJAIufBfkcyiyRF/CT9TvYmt3lGsHW3jydJB8VUeWJdKlBuMrFYo1E1V2ODhdwOdWsLGQZJli1UAHJBxCHoVizcR0mmtxpmUTVCV6El6CHo1Ds0U0wKPK1EybfFWnqtt0RjyEfRrrOsL0mTZnV8qYloOqSMxnqly/tpWFfI3OqI+xlQq7B2LINLN4T82XcKkKi8UKn/rGcXb2xfj8C9PEvCof2NHNP+2d5j/dOXJJ+ltTZGzgL398B3/z1BhfPTBDulxn03CzyP1CscZ0tkZb2M1svoEqQ4vfzUq1QVV3cGzIlnWquknMp5CuNIOSSwGfR0GtmVg21C04NJWjYcHhuQIeVSZXNTgyW6Sim5ycK1KumyyV6pgWHJrJ8au3jvDRq7pxbIfHTizyJ4+dZVNHmIVClS2dEXb2RmmNeDk4leOGkQTT2SoRr4rPpTCVqXFsrkC+qtMS9CBJIEsyd6xvZS5fI1NqsKkr8pr9I4KnIFxmLqw49E6qNrT9XHLQhTyawprWEAAPHF3kxaksXk0hU2nw396znp/++xeoNkxkXeJnr+nl/z05RqFqEnDJhN0yuaqFWwJban6p6wpIFugOKBIUqhZezWJ+sYFXAVmCbN0m4pbxuVUiXolC3eRzz0/zoe1dTGcrLBWqNAybmVyVZMDFi5M5GpZNV8zPx3Z3c2yuwPq2ML/5L4dZ1x4iEXDRF0+wradZHH0wGeC+F+e4a0MrJ88lDl0KfpdKrmLgd6uEfC5OzBeQHIl4yMWJhRKqAlf3R3jqTBoJCLhdFHULRZJpj7pRFIkzSxUsB1TJwqs2s20VYDrTwKFZgD7pkVkuG7jV5kxAzK+RKRt4VBnTkqgbNmeXSiSCHjqiMmPLZe57cYafub6fiXSVkwtFNrSHGEwGOL5Q5MRCifGVEjXToTcRoFy3WCo2ODCdw7Yd/C6V3QNx0uUGPpdC/NwaZ7ass1xs7gUWwVMQ3gLX3vsYc+em1zoi3jf98y4Mlu/0akOTmQon54ts6AgTC7iI+12cXChQqlt86/A8d61r5fBsjv1TOZ4dzxILeAh5VCYyFZZKzQxL3YGYV8V2QDebCUJ+rRk86zoYhoVu2mzrDDGWKaEaDm5NZbmk41NAUiTyFZOnz6zwsd3dHF8o4tMU+uIBprIVSg2Dhm7yzJllDs/muHVtCrcm0xH18pPX9PLg8QX2TeRwac3CAtcMxXns1DL/96HT3LO96y3tzxensoQ8GgMtAY7M5fngtg4ANnWGcckys/kq3z6+xKaOMPP5KgemCnhcGkgyXTEPoysV3JrEdK6KCmgKWCYUdUj4FBo1i9q5WVEJGG4NcGymAIDsOCSDGprioGkKiyWdesOgbkHMr+BzqbQG3QwngxycyfEvB2aJBVy8a2Mrlg3dUS+3rEnhdavM5ms8cmKR9rAHr6bwnk1tfOvoIr9wfT8nF0ocnMpx9UCCeMBNvqrz8PFFxtIVbl2b4uO7e1bVVyJ4CsLrNJevMXnvuy91M96RxpbKuDWFlqCbE/MF1raHGEkF+dKBGf5x3zQ9US+xYLOs3umlMiGvRtW0qes2LrX5Be5WoNwwUYGgR8FyoK5b9LX40LNV0hWLgEdhsaIDMlf1BjizUiHmUVmummA49EZUFot1fvebx6mbNq1BN07cz2/cOcKTp5f47N5pqobNTL7Oz18/ABJs74kRcGv4Xc1tLzt7ogQ8Gn/91AQf29XD8fk8B6ez7OyLvWX9OZgM4lJkJAki3ub8+L8emqMl4OalmRxxnwoOGLZN0KtxXYuPxZLBQqFG1OfGccrgyHg1lbBHYSrXOP/elYaFeW4biE+BqgWz2Rovp0TVLTizXKEn5mUw7sXn1gi4JLI1E8Ny6In5eXZsmaFUkIBbI+RVaQm6yVYMTi4UWUz4+MDWTr74wjTZqsFNwy0kgh6OzReYL9bZ1hXl8EwBJPjMMxPM5qqsaQuzpjVArmbw728bxq0qq+4rETwFQbislOoGiizhc6n0tfjJVHQ8mkJFt1gu1rl6IMGGzjAjps3YcokzCyUiPjeSBEulOgFVpmFDQ4eAC7yaxkrFoAGottXMonSgXDexneZIdEN7mPF0mYZps3+ygA4k/M0AARJ1W6FhmlQNG92C5YrBgakcM9kKt61vYzgVpFI3SAQ9vDiZa64ZFursn8yxqzfGLWuT9CT8HJzO8as3DxH1u+iK+3jy+xyp9WbJVXTaIh4kSWJjZ/hciT0wLIsNHSGOzOa5fjjJ1w7OMp+vsVRQGFupEPaqdEV9pEJeCjWTQq1Bud7c6vMy/YI8nOq52ytlHRkIaGDZEPOr1Ayb5VIDn9vEpUj0x30slnQeOL6AT5U4NlukM+bl6FyRhWKdum5z58ZWWoMeTNthKBliXUeIJ04vY9HgPRvbyFYNhlMBnhvLMJDwc9NQgrWtQVbKDdxqGMtxyFUMWsOrD54i21YQLmMvr3/2fvJ+rr33sUvdnLfEYyeXOTLbnOrrbwkwlAyQreisSQUYTgVwbJtcxSDs0RhoCbK2PYTp2NQME5+mUKh/J2O3rEO+YpDwyXiU5lSt7oDXLZEKe9Gt5pfk2eUCC0WdiuGgquCSodIwKdQtTNvGtm2qdQvLgs6Im53d0WYxAb+HgWSATR1RFoo6c4Uaf/vMBJos8d5N7bxnYxsxv4JXU5jOVLh+MHG+nq0qSaxrD72lfTuXr1E3bBzHIV1u8MTpZbZ2R3noxBJtYS+mDQencyyfO5/T41Jxqw7Vus5srkbdtOiOeQh5FUynWcdWk5p9eGEgPVfbH9MG3YaqAYois1AwWC7UcRwbGYcPbms/n3wV82nNY840GQmJZNCFKsmUGwajSyWOzxd5+PgiGzuCnFwoIktw43ACTVXQzmVOn1ks8uN/t59szWA2X+eju7pJhjzsGYhTPXcu7KmF1a0zi5GnIFzG3onrn+s7wsQuKKG2UmpQqptMZsrsn8xS122CHo2PXd3LVw7OsH8iQ0O3MW2bkFdFliQKNRPD+c4XYKlu43VJVA0HtwwjrUFenGoG6L6El7lcDa/W3PyvKAo1s7kdQ5YlsGx8movBXj/jKxVcqsxsoYbXo+B1yTx0dJGR1gB/8KOb+eK+aUYzFRZLNeaO1fG5FGbzVSRnmZBXJejWeM+WdvYMtvDidA5FkhhoCb5lfXvtYAJoTmM/O5pmd3+c9oiXj+zsZiFfY1N7mIdOLqHJElf1xXnk9BKGLVHRHZR8lYjfxVSmSq1h0R52sVLS0RSoGRD0KlimhWmBdS5xyAK6Im7KNZ1co1lLN+rXiAfcLBRq/N0zk2iqjCzJ1HULtyLTHnazsSPCDSNJvnRwlnjAxZmlMu/bHCZdqvPnT42jmxZVvXlU3QPHFuiI+vmPtw+zoyeGS1X4+O4e/tdDp/ijR87wb28c5P89McbP7umnH4iK8nyCIFyJBpOBVwTPoVQQSYL+RICBliBet8KeoQS/9+ApOsJulop1In6NYt1AkZqjRlVqlo9TlOa+w4YNxbqDTHMd9OB0EY8CHgWmMjVsJIIuhT19UZIBFx4VdFsi6JGpWlDWLZBk/B6NeEBjvlCnUNF57OQSp5eK1A2L6XSF0UyFH7+ml5lsjdHlEv0tfu7a0IbtwDX9cSJ+jZMLJZ4bW+HgVLPY/aUQcKuEPBoxv4vFQp2nTq8wkakQ8rnY1hUBCfaOp2kYFnG/CxvQLZuxdI3lsoHjQE03SIXcVI1mn1ZqFhUD6nbzHNWgW0YBlssNaqaDJjVL+dUNm0TAhSRJWI6Dg0Rb0EN33M/23hhBn5sXpnP8yeNncSkShuXwKzcPsVhq8LHdvdy6NsU1/S3s6o0x0hrilnNJQL/9zROUGhZ3bWwj7HPxG3esYSFf4xuH5/i1W4bxaAonFopEfasLnmLkKQjCZW9rd3Mby4aOMMfnihyYzrKmLcSxuSIxrwtHlhhKBlnXFmbf+AqyIhF1qyyXmxm3EY+EboIkS1iGfe5kDwdNgW3dYc4sFfC7NUYzVQJuFUWS0S2bcg02tQdZqeh0R33ols3ZxRJuVSbkdXHTSJK6ZfPwqWVaQx62dkU5PlMkEfAwlaly+/pWemJ+jswWWN8ZwXQkfnRnF25VZmdvHI+2+jW4N1pXrHnYdVU3uWdHJ6cWSlQaJkfmC/TG/Ryby7NcamBaDn4NbNs5n4DldcnUDJu+uJtCVaeiO4Q9kKk3f2n5yat7OD5f5PmJHL1hD7mqSaF27jxW08GlKPTE/CSDLop1g0rD4saRFlqCXvJVnfF0idlcndawh+uHkhybK5At1RlbKePVFJ5dSBPzuUiFPVw3PATAmtYg3zo6z1cOzNLf4ueWtSmuH27hc/um+c+pEJOZMtOZKt8+vsgnbh1+zf4RwVMQhCtCsW5wdrHEfKHGmYUiH97Zzc8/egafq5nUs7svRrbaIB70kKno6EYza0UG1reFGU9XaZgm8bCP1rCHseUymiJjmBZVHXS7QdCl4vLJqIqE7Ug42GQqOjt6owwmAxyeyRMNuNjYEaZYMwiF3LhtlWv64zw7liEV9BDwqDg4DCT8TKYrzOfrBD0qx+cKuFSJ0eUym7siqAo8dmqZm9ckL0l/DiYDLJfqlOoGXVEvLlXiwWNp1qSCIDm8a1M7Vd3iC/umSAU9NGwHpdrg1g1tLOQb5Cs6C8UaRb05qmxYEgoOigxjK2WiPhfrUs2jysoNE02Gcl2nKxEiX9NJhdycWiziVmVMW+LoXJH5/DIDST/v2tBKqWHxjcPzxHwubhhu4fGTS0xlq/ynO0c4PFtoJhsl/GTKDbIVnS/unyFf09naFaFqmIwul7htXSudUR+aIpEpG8QCLjRldROyYtpWEITLluM4LBfrAKyU6pxaLLJSahDwatx/dJ6//+mdaIrMjt4IDdPCsuGGoSSJgIt40EPEIyPLUDZsinWDqm4ztlJlLldDkSU0VeLoXBlVblZSaAt78LkUehM+NndH+Klr+3GpCguFOuvaw1w9EMcly3zr6CJhn8b1Qy2UGyb7JrO4VAWPJrOuPcQ3Dy8wlqlwYqFI2Ktx03CSlqCHkLd5LNbTZ1d49uwKPRdRa/WN7NPKueSZZNCDYTn8yWOjnFwoEvVpTKQrdES8PHlqhV09MdZ3hMjX68R9Kp2xAI+fWmEoFWCp1KBqWEQ9Mpoq0RryoKkSMZ+b0eUKj5xa5sRSDbeqEA+48HlVGhakyw28msz4SpnauXVLjyoj4RDxanSFveiWwwsTWdrDHsoNi3zNIB5ws6MnRtjj4meu7eOXbx5iMlNh/2SOv3pqjPdsauPXbx2mM+oj7vewvSfGc+MZaoaFYdncMNJCV9TPezev7jBsMfIUhCvEO7HyUN2weX48w/u2dPDSdOH8pnfbcdjQHuKf983Ql/Czvi3MfS/Nkas2GF0uMbpSJahJ1AwHtwLZUh2XIuP3yywVDDIVg4ZlItlgArbp0Blxs1ion8salQh6bf7lxRmCHpWpdIVPf/0Y2aqO40DYq/LSZI6jcyX+6CNbsB2oGwa/9+BpfmZPH//53SOMLVe5ZSSJI0ls6owwulQmFnAR87t4YWIS27EZSr31a565qsETp5f54LZOAOJ+F9cNxik1TJ4fzbCmLcDTZ9IsFmvc+8BJ2mMe1rXG2DuRJeZX2dwZYmN7mIeOLmI7CvmqQcirsqk7Qn0sw46+GPsnskBzmvf4QhkHaPHLJANukGXmclXGMg18GhTrJj0JH0PJEOWGwRcPzNIecXPXxg5298c4PJPn8VMreFSFeNDNeLpCd9TL6HIJt6rQHvYQ9Ggsl+rcf3QBjybzizcMsn8yS9zvYrFY4+BUjutHWogHXDirPJJMjDwF4Qrx7CdvZvLedzN577vPVzy6Eh2ayZOr6ECzvNv7tjSr4HxoeycL+TrfPr7E4Zk8dcvBcmzKdYN/eG4StwIeVUGSHFwK9MQDBLwqPQk/+bpJsW5RrJkMJX0kgyqmAX0tfrzaueQiyaFQN6gZFomARq5SP1cgoIHj2LhkiQ9saeN9m9u5fijBB3d00ZvwMZercXyuwP964AyyJPHwiWW+cmCeL+2f4RNfOsSDxxawbYe/e3acpULz321Hd5RU0HNRm/bfKDG/i2sHE/zLi7Nkyg0+u3eKhmXz/FiWtW0h9o3lWCo26Ir5GGoNMrlSYzAVJOBRmlOySxXuffAUyZAbCZuehI9k0IOqSBTrJsfnCqQrDQIuBbfynSDUGfaTCnuRgelcg/dsaCHhdxP3a2zrCPOFA9McXyjy7k2tdMf8jC2X+OL+aZ4fTXNmqbn3syvq5euH5vk/D58hU9ZRZAmPS0FVZPJVk0rD4p6tXfjdKsOpIKWGQVvQy1yhRmvIw1KxzhOr3FsrgqcgCG9Pn/70qz4c9Kho6ne+ukp1A9OyOblQ5Kr+GB/Y1snP7enDNB1KdYuBZJCOqIe5Qh3p3Ot74n6iAQ2/W8VBQgJUBQzT4eRS80xNG8iUDWwLBpI+MlWd/pYAAU9zu4umyETcErppkwp70FSFo3Nldg/EKdabxRL64n4OTOWwcdjYGeauDW2cXCihKRLXDib4pRsH6Ix6kSSo6hZTmSpV3aRYNzkxX2LveOat6OnvONfnqZCHu7e0E/ZqXDsQ59hskbBPw3AcfummAW5ak+Tn9vSjyjIdUQ9PnF5hMO4jVzXRVJkWn0rdsOlPBgm4FQo1na8dnKek21w9GEdCahZklyHqUwm6ZNKVBpmKTsinoakyp5aqFHWDDR0hJjJV2gJu/C6V0wslprJVCjWDp8+mCXg17tjQxuOnl1kq1KgbFretS3FVf5yITyPqc/Gbd67hnu2dfGhHJ3Wrudb93FiGl6ZzDKQC/O77NxIPuLlxJMmdG9pW1VVi2lYQhLen3/qtVw2gAy2BV9x/djTD+vYQi4U6GzvCLJUabGgPcXAqx6/dOsRXX5qjJeihL+7HRkaTIV3WObaQpzXkRZUlvFqAqVyNjrAbTVFYKtSQFQu3JuPA+QzQumnzG7evoTXi4af/7gVURSIe1Pj4Vb38+ZPjdEW9fOGFGRqWhWFaLJcb5Ms6harOzWtTjK1U+Nnrewm6NXwuhYdPLtEa9jKTrTKQ9LO5O8K+8SwtQTduTcbnfotHnhf0+cuJM9cONrd9ZKo6JxdLHJ4pkgp5sBxY0xYk5mueBLNc0ZEkGctx6G0JUaqbVA2TqUyNjZ1hGnaBhm7xzGiawWSAmWwFVZLpTwXRZInxlQoJr4Ymy2xpD2EDLkWmJeDhv713kD99dJTTSyUifhdhHNa1Rfj120eoGSbPj2fxuzWifjcV3WRzV4QTcwW+cnCWG4dbcIC/f26SnX1RPnSuXvDW7ghr2gIo8g93ZqoInoJwkS4sBA9vTTF44XvZtoMsS9y5oZV0uYGmyCwV60hOM3szFnDz4mSOSt2kppvMZqus6wjTHvFxaCbPcEuIhtUsx2dIEpvag2zujFFu6Ow1LFwuhzUpH6mQh5MLJbb3Ron7XRyeL1LWLUIeDdtxGE6G0FSFiFejM+ZjV1+Ms4slJjJV1rWFqIUM9k8WMO1FhpJBjkznue+lOd69qZ317SH+4okxbt/QyrbuGKblcNO57Nr5fI1NHZFL2scAJxaKnF4okq0aDCb9hDwqNcNifKXMF/bP8BNXd5MIuLhuqIWJlTKJoIfnRlewbGhYFhs7Iwy3+BlbLnPnliQT6Roxv4tiQ8evaVTqBpYN1w0n2DueYVdPjMViHcuy6Yh6qRkWn983jdcl0xP30dcSoGFY3LWxtTkdW9P56Wv6+ONHm9PiH93VjSJLPDuexqXIvDCRpSPm5ZqBGCvlBk+cWubDO7tpj3ipGxaffX6Kn93TR6Vh4nevPiSK4CkIF0kUgn97+Kd9U7x/awdBj0axZuB1ybhVmbPLJSQJrh5IMJwKsrYtyFcOzjK6XGZsuURFNyjUdXwuhZl8DdOy6Yl6OTJXojXsw3YcOiNeEkEPZ5dLGLZNf4sXTQG/W+GlqRyDLX5+8661fG7vFPmawaHpLKmwm81dERbydX7y2j6mM1WeG0tz/UiSX7pxmD9/cpTumI+j80WGWoNEfBq206xos6E9TCrsAeDpsyusawtx+/pWnhtNc825qj+XyoaOEPvG08xlq1zVH2MmW+Pn9vTzxKllXMosYysVDMvhvpfmGEz48bpMNnWGuXVNK25N5qWZPF89NE+9YbB3PMtQKkihptMR9uFWZWzH4YPbupjJVkhubuel6Rwf2NrFqcUiS8UGddPGtGyuGUzwZ4+NsjYVJNMwOTCZY3tPlMPTBVaKOsOpIH//7AQ7+2Mcmsnzozu70U2bzz0/yT3bOnGpCsW6QdCtcnimeVi2R1P4yI5OxpbLPHpqiTvWt9IT96+qX8SapyAIl6WP7uomeK5Ian9LgO09MaZzNRJBNzeMJDkym+f/++oRfv/bZ7hzfSsdUS+Zss5IMkxb2IekSGDbGKbNzp4oPpeMblps74lSt2wSQTebOsJIjsNcrkGhYjKZrjS3sMgSa9tCzSlEj4oqK7xnYztnFkssFOvcf2SBmmHREfXyN09PMJWt8pt3rSXi1/BrMresSbFnqIW/enqcLV0R6pbFV16coaZbDJxbVwWIrLLazZtpNlejPxEgGfayri3ET13biyw1E7d29se5fX2KW9e28sm7Rgh6NZJBNy1BDw+eaO673DuRRZNha1cE25G4bV0rZ5cqzOVrnFwsY9hw30tzHJsv0RH18/6tneydSHNyvkjDsEj4XBydKzQPtl6TZG1HiOsGW1goVBlbKdMZ8/Lk2WXKdZN3b2onXdK5aSRJyKORCLj5lZuHGF2u8NxYGq+mUGmYfO3QHLmqwenFEv/w/BSPnlri2sEEpr3KVFvEyFMQrkjvhG0r6ndtZrdth4Zh8b7Nzezb7T1RJjOV5pTicJKAR+NPHjnL46eX6E8Eee/mNr60f5pjcwXaYn7WtIZRZIWHjy+jWw5lvXkqSKlh87N7+vipa/v43ftPUNMtvn54gXzN5N0b2zgym6duWkxmqvQl/Dx9doWwV+XqgV5+5xvHkaTmuZUL+RqnF8s0LJvHTy+zoSPMr982RMCtsVSsE/JouFSZ9guWAd7qwvCvZqAlwEBLgI1dEaazFXrifiRkDMum1jDJVww2dIR5/PQyfQk/NcOmWGswkanw9NkVPritg7NLMrmaQdzvpjceYCgVJF2q0Rl18+NX9/LVgzP80g39PD+RJeBuntAS97toDXsxLfB5Na7uj3FwusB4uooMDCWDeF0Kpu3wizcMsrat2Vebu8IEzxXX100blyozlApg2Q7/68FThL0av3HHCF6XStSnMZj84dY9RfAUhCvQO7FgvCxLrGkLNYu1A5IkEfG5OLtc4YZhh3xV554dnSgS5MoN9k9mSVd0dg3E2dkX59BMHk2RsG0bn6bQEfHyzNk0Dg66ZTOXr/ETV/fy0PFF6obFYqFGV8xHS8BNR8RHxTB54tQyhmWBI3Hi3LYKj6Yym60yX6jzM3v6ODlf5PMvTDOfr1HRmwk1w6kANcN6xZe44zhI0g+XzPJm6Ih4WSrWsWyH6UKV7T1Rgm6VhWKND+3oIuzVeOj4IiulCtGAh34LQi6ZFyaz7OyJkgi4URWZl6bz3L6+la++OEN3zMdMtsov3jDI8xNZJlcqTGWbv4R4NZm5XI0717fhdStUGyatITd3rG/l1GKJkwslFgp1Ir5mGUSAQs3gweNLfHx3D7Zt83fPTvAze/pwHPjc3uY0f3vYi9fVDH2SJKH8kF0sgqcgXOHeCaPQl/UlXrleZVoOxWqD3/zKEfpb/GzrifHF/VPUdJvdA3EGUwF29cR57NQSnVEf1w0l+Msnx+lL+LlpTYp1bUH+/PFxAi6Fv35qjFvWpNjQEaamW/S3+NnVG+XIXJ5YQONdA210RLxMZioMtASJ+zWiyQATKxXmC3X2DCbOBURoDbkJeTS6Lqgg9PJ+VYDTiyVmc1VuWZt6y/puNVoCbibSFfrifrKVBjXTojXs5f6jC3REPAwmA3x0VzdPnFnGrynctb6VA9NZPriti+dGV/jqwXnetSnFnqF2KrrJk6dX+NFdPUxnKjxzdoX3bWnng1s7WSo3yJQbVHWTs8sl+lr8rBQbNEwbr0shX9XJVRvs7o+Rq5qUGyYeTSHs1fixXd0cmMyiSBIdUe/5rOGfuLoXl/qDVyrrhsWByRx7hl57nVkET0G4wr0TR6Hz+RqGZXP7uhQb2oMcnM4xla2xqy/GuvYQumEzl69yaCbPVQNx1rWH+O1vHufuzW1kKw1+8cZ+euN+euN+9o7lmkli6Qr5ukHM5+KmtUnaw172T+X52FU9aLJEtqJT0S1uW9eKpsjc+8Ap/u+HN7OxM8xjp5awbIdTiyWWis1SfgdncudHTN9tOBVgMBl41eculVLdYKlYY9+5qdWKbvOrtwxxarFE3K/xsb95gT/+yBYOTGZZkwrxwa2d5GsGHpfK3vEsP3fdAPmqQczv4tBsjh09MXTDoj3iJebXODZXYDZXZ6Q1zN2D7WTOBdC2iPf82rZlO/zZY6PMF6rcsb4Vn0tFQn7FSSiyLNEW8eJ3KWztiZ5//PsFzhencqiyRFfMxyMnl/Ctshi/CJ6CIFxxJAkeOrbIXZtaeeDoItcMJrh7S7PcXMCtcixd4KsvzbG7P9bcfjKTZ21biIBXY017+PyXsW07/MKN/eSrJnvH07x/ayd1o1mQXEZipVynPZxioVhnpdTgPZu+Uxf1f35w4/lp15vXNEeQGzrCrG8PveZ07OuZTnyzPHZqGRmJwWSQ/pYA3TEfX31plpBHY2NHmC/9wtUkQx40VWahUEeSJOJ+F7euS/Hf//UYi8U6n3zXOqB5kPg3j8yTqxk8fKI5zfpf3rP+FZ8XD7iJB9zf046rB+Ns7Ojn0VPLnBxt/pt895ql4zg8dTbN3d9Vp9ZxHBqm/YrTapr/HuBWFT68o+t89arXIjmrLeQnCFem1f0PcOONzT+feILeT95/2W5VuXCP6uuYwn09X+sOn/50czP+G+VTn3rVYgrLxTrJkOf7/rXJdAXHceiK+Tg6V2AmU+WuTW0Ylo1HVZBlidOLRY7OFdAUGdNy2DOUIBXyUNVN5vM1XIpCd/w7U6+27eAAsgTPj2fY3Rc/vwb7gxyczhHxavRfUADCsh2+8uIMP7qz+/WG0Telz+c/8ZscmMzx7k1t3xO8LNvhsVOLtIV9HJsrEHCr+NzK+V8idNMiU9GZzdbojnnJVg2GU0EkON9f/3pojhtHkoTPJf98t4Zp4TgwulxmQ0d4Vc2eyVY5OlfgXRtfs4rQa/a52KoiCO8gb4v6t5/+NDjOa//A6l73fcr4vVrgLNUN7HPbEXoTfiq6xbNjGbZ2R7l7aweaIvPE6RUWinXqhsXzYxnyVYPrhloYXymf/0Y1TIdi3XxF4AQ4Mldg37mSeh5NYbX5Pr1xP6nvaq8iS9z6Rq15vgl93h7xcveW9u8JnHXDYv9EhidOpVnTGqSvxc/W7iizueZ/b1Xd5PP7pmkLe9nZF8OtKXg1hX3jGY7MFc6/z3VDLYTObdmZzlS/p1ShW1WQJYl81Vh1N3TFfKsJnKsipm0FQbhi6abNi1M5rh6IA/DsaJrNnRE+8+wE92zrfNURy4Vfrj91bR+O4+A40BH14DuXpRn2aWzrjn7P3414NXKVBrplv+rz30/M/+r7OV9t2vLtbv9khsVCg//23rV89vkpfmZPHwBbu6K8ONUsbPBT1/adf33Io3F8vsjV/TFk+TvjuQv7JBlyE/CoVHWT//vwGX7y6l66Yj5cqryq5J5X0zCt11V4X4w8BUG4ItUNi8MzOfwX1Ie9c0MbbREv/2ZPP10xH5Ppymu+jyRJyLLExo4oHu07X5lfeGGaUv2Vo57OaDO55fceOPWq7zWbqzKbq/6QV3R52NETZ2NnGI+m8rHd3ecfH0oFWP9d+1ZPLhR5dixNwK3+wHXgQtXgn/ZNISOxuTNMZ/R7S2KWGyYrpcaq23nfwTny1dWtb74aMfIUBOGKJEmgqQqbOiPf81wq7GkmlSwU6Yx6X1Fw4VtHF9jRE/2ead+Nna8cpd69pf38SPRlqiKzuSvyPcXrL3Slp5l4XQprWptB8sKRnedVsliHkgH6Ev5Xfe5CiiKxuz+Opsq0hr0cnM7jUuRX/Jtkyg2yFZ2W4OpG6x/Z1f3aL/oBRMKQ8E63qv8BDvZvQTctPvJj914xeyVfR/LQ60sYWvWnSJck0hTrBgGXuqpEn7fI608YWvUnvXafH50tEAu4LumBCHWjeazYawXd1+E1+1wET+GdblX/A+zt3sju/jg88cSb3JxL4yID6RUdPL8fx3EYXS4zlAq+1R/9tgqe8/kafrf6fbNg4ZL21RvlNftcTNsKgvCKYHntvY+9opjClTLSfr0s22EyU2UwGXhblc17q7WvYsRp2Q5TmerlHDxfkxh5Cu90YuT5Gl5lVPqOHHleQm+rkec7hBh5CsIP68Kg8dXXkdJ+uXsnlvcThNcigqcgfB+vOPR67/++tI15m3hLk0Q+9am37rOEJtHnqyambQVBEAThIokiCYIgCIJwkUTwFARBEISLJIKnIAiCIFwkETwFQRAE4SKJbFvhHU2SpAeBH+5Yhh8sAaTfhPd9O/A4jrPhUjdCEC4lkW0rCG8CSZIOOI6z41K3481wJV+bIKyWmLYVBEEQhIskgqcgCIIgXCQRPAXhzfFXl7oBb6Ir+doEYVXEmqcgCIIgXCQx8hQEQRCEiySCpyAIgiBcJBE8BeENJEnSnZIknZYkaVSSpE9e6va80SRJmpQk6agkSYckSTpwqdsjCJeKWPMUhDeIJEkKcAa4DZgF9gMfdRznxCVt2BtIkqRJYIfjOFdqAQhBWBUx8hSEN84uYNRxnHHHcXTgC8D7LnGbBEF4E4jgKQhvnA5g5oL7s+ceu5I4wLclSXpRkqSf/yH/vvi5uJ/X6w1v0/H5gvPSdM7JVnTnd7553JnPV51PfOEl56f/dq+zfyLrWLbj6Kbt/PVTY87n9k46o0slZ+94xjkwmXV0w3I+9/yk8+tfeMn5h+cmnYZpOYDzX+476nzr6Pz5z/jCC9NOoWqcvz+bq76iDUvFuvPgsQWnUDWcmm45lu04hZrxitfkq7pzfL7gWLbj1A3LsW3nDetzETwFQbgYexzH2QbcBfyyJEnXX+oGCW+dTLnBc2Np+hMB2sIeHj25xNX9cf7qqXFuXZskGfLwLwen+cfnJ1ko1Jgr1Dg+VyBf0+lL+Hh2LM1kpsJdG9voSfi5ZiCOW1UA+OC2Dnb3x89/1s1rk4ylywA4jsOLUzn2jWfQDQuAB44usLM3xuhKib3jaSbSZcJejbphcXqxBEBFb75WkSU++/wUj5xcesP6QgRPQXjjzAFdF9zvPPfYFcNxnLlzfy4D99Gcqn7jfeITzR/hbcXvVumO+fC6FFrDXnb1xdg3nsHvVklXGuSrBj63xrr2ENOZKv/upiHu3tLJXzw5Tqlm8mO7elgpNQh5NT68swuvpvDnT4xyeCbHsbkCXz04R7aiY9sOPpdKS8ANgCRJXDOQ4GuHZvnbZycA+PDOLuIBN9t7YnTFfByZyfPk6WVM26FYNyjUDBYLdda3hwG4Z3sHu/tjb1hfiFNVBOGNsx8YkiSpj2bQ/AjwY5e2SW8cSZL8gOw4Tunc7duB335TPuzQoTflbYXXx6MpdEZ95Co6M9kKHpdCoW7y23esYalY510b2ik1TI7NFag0LK4bbuHqgJvNnWFOLpY4Olfg9x48xafeu54jcwXcisxisUbYqzGSCtIS8vD5vVPcuaGVwVSQgPs7ISrm0wh7XQylAljnguvLHjq+RGvIjWk7BNwqO3tjVHWToEfFcRyeH8+wuy+OLEvn/84Tp5cZTAbojPp+qL4QwVMQ3iCO45iSJP0K8BCgAH/rOM7xS9ysN1IKuE+SJGh+d3zecZwHL22ThLdKw7Q4MV9ka3eUp86uMJWpcPOaJJ+4dZivvTRLwK3w5RfnGEwG+ORda8lXdV6azjGTrXBivsS6jhDv3tjGTWuSHJrJM5QMMJwKoMkyp5dL7B5ongx495YOEkEXAPe9NMtIMshKuYGmyMR8Gkdm8wTcGu0RL2GfxnOjacJejXu2d72ivT6XynAqiOM4eDQFSXrl9WztiuJzKz90f4jgKQhvIMdxvgV861K3483gOM44sPlSt0N4a8zna7SFPUgXRJ1Kw+Lz+6b5sau6+frhebpifhYKNXIVg/F0iY6Il1+5aQhVlvibpycYaPHzyIklynWDim4S97vZ1h1lS1eE5WKD58ZWGG4NcnaxDJvBsh0cxyZT1vHFVK7uT2BaNvc+cJKb1iY5PFvgR7Z3sm8iQ2vYw+bOCPmqjluRvu91SJLEtu4oACulBuMrZa7qjxP2aa+rf0TwFARBEL7HS9N5ImtaGF0uoykya9tC7BlKUNVNAO7e3E7DtMiUdU4tFnlpOsuHtncT9bs4PJMnGXRTqOl4NYWgR+WjO7v52uE5/K7m1O9CoUbdsHnk+DLFugHAc2NpPvP0OFu6InzithFawx4AdvbHeGEiy/+6ZzNBr8aNa1Icm8vzN09P8Es3DuDVFH7vwZME3So/d90A9rnR5ny+xgsTWd6/tZn0HnCrtEe833Ot05kqnVHvK6Z1X4sInoIgvCNde+9jzOVrAHREvDz7yZtf8dh3e/k17xTv3tQGQF/Cj3zB6PPltUbTsvmLJ8Y5Npdjc2eYkVSA+w7N0xHxMpGpcO1QgmNzBSRFoivuJxpwsZiv8/jpJYZTIY7MFJhMl0gGPdQMi/l8jdHlEj+zp5di3eTwTI6D03k+vKOLrV1REgE3X35xlm09USJela8dmqcj6kFTJNoiXn5idw9LxQYnFgrkKjpuVeGawQTv2th2vu1el0JX7HvXOE8sFEiG3Hjk1U/jiuApCMI70ly+xuS97waagbT3k/fTEfGef+y79X7y/reyeW8bQY/GcqnO2eUyfpfCUCoIQLqs82+u6+PkQoyqbvHZ56e4Y32K7piX1oibz++d5qq+KMmAi7BHQ6aZrdsR9vHPL0yxozdGxOcmHnTz63es4aWZPJMrza0pz51Nc8u6FIuFGiulBpu7IhyfL7KuLYhl2Ywul9nWHaXSMNGU5qaRtoiPZMjL3z4zwY/v7uH4QoGabiFJzbXTD2zt/L7XeOeGtu/73PcjgqcgCO9476QR5Q/j4FSO8ZUymbLOb961FlWW+OzzE+QqBp+6ez2PnFhEwmFTZ4RvHF3k2oE4IY/GgckcU9kqreEa9700y0qpTrVhsr49THfMx0qhzuHZPF8+MEvNMDmzVCbocXHrula+dWyBoVSA3oSf+XyNvoSfnrifpWKD58czfGh7F5PpCrIkcWgmz3AqgM+lcsvaJLP5GrbTXOPsjvu49lwy0ss+88wEH9/dfX6P6YXqhoVHe+0RqNjnKQiCIPxAN44k+ciuHm5d14oqS1iOQ19LgP90xwh1w+LoXAFFlvnSgVmOzBb440fPMNwa4Kq+OD+7p49cRceyv5P1+m9vGmJipUKmoqObNl8/PMNCocZIaxCXJiNJ8DPX9FFtWPy3rx3hH5+bxLAcuuN+dvbFeN+WDhzHoTPm5dhcAVWWkGhOLQc8KrppUaobPD+exrBskiHPK67n1rVJCjXjVa/1yTMrq+oTMfIUBEEQfiCPpuDRFK4eiPP3z05w14ZW5nM1yg2TZ0bTHJ7JM9waZGdfjM6Ij8dPLaIi8eCJRdyqQkvAxfu2dvDNw/MslRv88j+9yPu3djC2UmEoFWDvaIbpbBXDdLhlrZc7NrTSMCyOzRe4cSQBkkTY62IxX+MbR+dZ2xqiI+qjK+ploMVGlWVcanMsmKvozOZqbOmOMJmuYFkO1Ybxiuxa03ZoGParXusd61tX1Sdi5CkIgiD8QCulBkdnCwBEfS7+5aU5WgJu/uLJMWzbYqQ1xO3rWrl+sIWvH5rj7HKFQ3MFru6P49Ucjs6VeGk6h0dTuGk4wUgqwOf3TfPrtw/TMBzu2JAi4FYIeVXWtAb540fO8r8ePM1kusqDx5fYP5FDN23+078c4ZuH5okFXHRFvSwU6nxh7wyfeXoM226WpI37XeSrBi0BNwv5Og8cX+DoXIGnz66QLjcAGGgJIEnwyIkfvlyfCJ6C8DYgSdLjkiTddu7270qS9CeXuk2C8DK3JhP0qPz1U+Ns6gpRbVgkQ25OLZT408fH+JEdnVi2w3//12M8cGyRmE9juVjjudFlTi5W6Un4CLtVYn6Ng9N5Qh4XW9pDTKxUKNcNHjy+TMirkS43mM/XOLVYotowuGd7B0vFBhvaQyyXGnzyzjV0xXx4ZJm/eXqC4wsFkB3SFZ0/fOQM5YZJyOviwzu7kCSJ29an2NETY89QgqFkkJDnO6PPtrCXq/pjZMoNFgv184+PnUtaei1i2lYQ3h4+Bfy2JElJYCtw9yVuj/BdOiLe8xm376RtK6PLzSLrg8kgw60BIl4XH9zWgUuR+PT71tMZ9RJwayx4amzrihD2asT8Lp4ZzRDyKPQnfPTGAzw/liZd1lnfEeRbR+fJ100ePbvCj+3qZq5Qpz3k5dRCifuPLtAR9bK+LcSXDsxw+/pW4kE3R+eK7O6Ps7Unyn/9+jFaAi6u6o+BA1u7Inz7xBK6YfHZ5yb5N9f3oykyPpeKL9YMcy/vGX2ZIkv4XCrZSpUXp3IE3Cq7+mKsFOsMtARes19E8BSEtwHHcZ6SmqVcfh240XEcS5Kk9wPvBkLAZxzH+falbOM73YXB8p20bSXic52/fcNwksMzeYZSAQ5O5jg6V2DvRJb2iJtUwM10rsb+iSy/edcI/+09a/nU14+zVMhSrJqsbw/y7Gia5ZJB0NMsnWdYFqmgh9vXJTkwmeO6oQSpkIe4383RuTy27RDxavzpY6Pcvi7Fnz52lh29USzLYWNnmL6En6ViHa9L5caRJLGAm3XtISbSFYbPban5fmayVV6ayXP35nYqDZNHTi6xvSd6vkzgaxHBUxDeBiRJ2gi0ARnHcUoAjuN8DfiaJElR4PcBETyFt1zi3MkmL6s0TH7zK0dwHIej8wXu2tBK0OPib58ZZ31rEJcq8/fPTrFQqBH0agx2hTm7VKJmmpiWTaWuE/a58LlkXpop8dCJRdakgszmqiiyRKlu8Gh6mbu3tDObq/HF/TNcOxhHU2ROLRQYSPj5uev6WSk3OLNUYjJTYXd/nDVtIY7NFVgo1LhhuIXfe+Akd29pZ21b+BXtf/z0MsOpIF0x3/lqQ+vaw6xrf+XrXotY8xSES0ySpDbgn4D3AWVJku78rpf8V+DP3vKGCQJwZDbPoZk8c/kaj59a4shsnrBX5Y4NKWJeF8+cTdMV8dId8+HgcOf6FFG/xtq2IGGPyv6pPCDTF/exUjaYSlcxLIeq6RD2qEwsl/jcvinqevMcTsuGbT0RPv/CNLesTXF6qYQiyxRqJoPJIF96cZbf+MphDk7lyFUMbhhKMp+v8a2jC/zZ46OUayafeWaCDZ0RJlYqLBSaFaMMy6bSMNnaFcGlSDiOgyJL1A2LkwvFi+4XMfIUhEtIkiQf8FXgPziOc1KSpN8Bfg948Nw07r3AA47jHLyU7RTeuZonk8Bisc5EusKDxxZoCWr80/MlVFliV3+C/ZMZon4X5apB0KPQMBzm8hVyVYOP7erhiwemOT5fZCgZoG6YzcAlwYnFEo5lYziwcTCE4UDI42K52CDic+Fzqfzk1T14NIXPPjfBdLY5ygy4VRaLdfJVncVilSdPr/CrtwzzH28f5m+fneSebe3opkPc72IiXaZYM5nKVNg/meWXbhzkmdE0pbrJ3Zvb0RSZSsO86H4RwVMQLiHHcarA1Rfcf+qC+/8OuBUIS5I06DjOX1yCJgrvQI7jkKsaxPwuPJpC3bDojHoZbAnQGfEyX6zjOA7JoAfdsjm9VMa2bcaWy1Qsk75YgJOLJpWGyedfmGJHT4ygV2XvWAbTgWhAZiZbZXdvlJaQly8emOX4Yok/+tGt/OZXj2BaDgMtAX7/odM4jsP7trSRqTRQZZl02eCnrumjYlgossQjJ5b4xK3D1A2LB46l+d33b+Cxk0uslBs8cnKZ921p5/RikVzV4ONX9eBSJG4aSeJSZQo1A9202dH7nUOyqw0Tn/u1Q6MInoLwNuU4zh8Df3yp2yG881R0i8dOLSEh8d7N7fzDc5O8e2MbqiLzPz60maOzBf7umXEmMlWOzxWIBzQUWSEZcuFYsCYVBGwOTufIlQ0OzuRwbJtUyENL2MPuvgT3HZwlXW6QrZmsb/MDMl98YYZr+mNMZaosFWtIkoPPrRLxuXj/1k7u2dbJ/oksv/3NE9y8JsW6jhD3bO/igaMLyJLE2aUS+yeyvDCZ5frhFjZ1RmkNudnYGTl/bcfmCjRMm+09URYLdVT5O6uXM9kK//DcJP/1Petfs4/EmqcgCO8oFxaBF16dV1Mo1Ew2dYb44v5p3rWxjclMlWsGExycytER9vAf7hjhrvUp1rYFyVRMClWDqgEbOiJ86cVZZEnCrWo0LPBoMtu6Y2SqOi+MZ/nW0XncLhnHgVJd50d2dDHSFsLrlpnN11guNVBkmc6Il/6En39+YZqIV+Vjf7OPF6ezzOVruDWZG4aTuBWZkwtF9gzG+ZGdXYytlLlxJMnXD8/TME2+dWyBP3j4NJWawR98+zQHp7LE/c0M4v6WAN3x5ikrx+YK7BvPcPVAfFV9JEaegiC8o1x4msrr9WrHml0JFFniY1d149EUBlqCLBTrSBIUawZHZvIsF2s8dHyJqN/F2eUK79vcjiRJHF/IEXIrbO2KMJapYNoWLX6FkMfF4dkc+brJ7WtTPDu6jG5C1K9R0yWeGU0zX2iwqzfG+tYgpunQMG1OLhb5D7ePcHy+SLFuNs/jDHsZTAaYSld5bjRNttLg9GKR58ZWyFUNFFnmmsEEP7qzm33jGQp1g6v64nzuhWlUWeLkQolrBhPNad6jC2zqjDCQDJAMuumKtq36kGwRPAVBEC7SywUTLjzC7ErY+3lsrkDArdKb8OPRFIp1g1LdJBFw4VFl/vaZCY7M5mnJu1BlmbvWt3JiLs/oShHddDi9WGTfRJ6ET6PQMGk0LBwJio0ybSGNlTKcWSxSMRwUQJIkTMPi5EIJRZI5PlfE65aZztXIluv0JQLkqyYbO8I8eGyJyXSFqUyFfNXgWKPAeLrCtu4IO/vi+Nwa2bLBQqnOdKbK5/ZN82O7OumM+jg8myfkVuntDLNYqPPF/TP0JwKkwh7cmsyjJ5foiHhpCbrZN57hqv7XHn2K4CkIgnCRrpQR5ndLhtyvOKYrW2nwraML7BlsIehWaQt7kKQwB6fy9CZ8vDiVZSpbB0mmVDfIlE08boXpfAMNcGmgmyDJDpqq0RqAlbKO5IBuQbrUoGGCIpt0Rn2cWshR0qE/5mZDe5CNnVH2jq9QNywqDYP/eMcg/3pokVTIgySBR5XwuhR29EaZz9Voj3rxeVS64l7u2dZOV8zPqcUiC4U627qj3H90nrs2tLOrL4ZLVYj6NF6YzDKVrjKbq7KrL87Z5ZIInoIgCMLqJYOvLGEX9blZ3xahPezlwFSWsZUyPpfCT1/TzSOnVpjKVPCqEqoMrSEPHlXGdhwcq05Fd2iY0Bf3slIxmMtXSYU8pDM6bWE3liPhVWG+2KA17G5ODSPRG/cw1Bbk0RPLHJsv0ZsIsLYtSMjrpr8lyI7eBu0RL4WqyeHZPI+cWGQgFeDYXJH/cNsIo8tl9k9k2dUXpzPqoyPqJVcx+JeDs7SGvWztivDXT48z0BJgNl9jJltha1eUjZ1hRlpD7J/MrqqvRPAUBEF4h6sbFpoi88TpZbZ1RzmzVCJdbtDfEuCawTjjKyVenMrxozu7+dL+af55/yyzuRqpkAtVVdAkGU2RSAQ1zi5VWdce5uhcHsOCuUKNoFsDR2IsXUMBGqZFwwJNVdEtB9OG/oQP3bTZ3R/H73IR9eXY1hMhWzGpGQ4f393DSzN55gs1jswV6I35qRkWg6kgv3TjAKW6xUhrkEMzeTRF5ltHFmiNeNjdH6ct7GU45edL+2f4w6rBb9y5hoZpI0twYr5EV8xLqWHy3Fian7i6d1V9JoKnIAjCO9y+iSxtYQ/r28MEPSr9LX4M06Y97OWxU8t8+cAMtu1wcCpLutxgpDXIqYUCk5kKiiyRq+ksLdVY39EscXd2uUxH1M9KqU7Qo2HbNroBa1r9rBQbhL0uFooN5rJ1JGAmW8ejQUvAw6OnVvjwjk42dkY4u1TG61Lpcft4+MQiLkXm6GyRX7pxgHxVZ1NnlDvWJyk2TKazFe57aZaGaXNgKseeoTguWSJdalDTLTJlg529Mda3h/nn/TNEfSobOyIoMrwwkWF9R4Q1rT+4Hu6FxFYVQRCEd7gbhlsYTgVpDXuomzaFmkHY56JUNzg5X+TeD27Ep0l88cAMmUqDbxxe4L2bOxhI+Am6VCzLIhbwMJOpYtk2suQwn69y3WCCct0kV9Wp2zCXreFTZaqGTc2w0FQJ2wGPBt0xL+lKAxyLbx+fZz5XoyXooaqbPHpikeNzBQ5O59ncFWFjR4QzSxVqusHfPjvBp/71OGGvC5ci0xvz8dGdXaxpDTG2UuGpsyuMr5Q5uVBkW2+UTEXnnq0d3LKmlZ64n4VCnRcmc0yslPnXQ3PUdGtVfSaCpyAIgnBesWZQrJts7AwT8bv4yK5u3KrCQqFGrtQg5tWQcDg5n8clS9g4LJR0GoZJxOfGtBwcJBqGw/7JLFXdQrfAJ9uoisNKRSdbqWPYUDEcbMA0IV3SsSyHWsNkbLnKcrnBb961hu6oH7eqMLpcYqVUx6tKtIY9NEyTv3lmgtGlMh/f3YMswd2b2+mK+bh+JMl1Qy1kKzqDLQGOzRf597cOs7UrxrOjaR48tsDRuTx/8/Q4a9tDXN0XY7g1yK7eOM+cXVlVP4lpW0EQBOG89oj3/GkjpmVzaqGAqshIskLd0gl4VGIBN2PpGjIOLUE35bpJsWZSrpeRZInYub2SxbqBboFLBgOJYs0BQD43uHNJsKMvypG5IumqhV8DzeViQ8rDfL7Ob/3rMZZKDWIBF9lyc7SqW/Dfv3aMjoiHW24fQVVl9o2nSYU8vDSdpy3iJRF0c3imwHu3tDO6XKFU03ns1BIf2NbJR6/q4kv7Z7l7SwebOiOcWizi1hTCHo0v7Z8m6ne9ar98NzHyFARBEL6Hadkcnc3z2Oll5vI1fvf969neE6Ou21w9EKM35kVVFWRJoqLbmDYgQWfUy3JJp9owqRhgA2GvhnTufX0qyBKEXeAAL07lkCUbTQavS6HeMJjNVZFwmM5WKVYNxpfLKIp8fhvNUrHO42fS/N9HTtMR9aKbDvsmsrxnUytPnl7iiVPLaCpoikRn1EvDcnh+PMvB6Rxfe2mB9e0hFFnCoymokoTPrSLLEkvFBvmqsar+ESNPQRAE4XuU6ia65fCT1/QhOXDfoTk+sLWDx08v8/TpDKZj0xpy86s3D/H/+9YJ5vM1LNuhULPI15tDSxVwJFAVidsGk3zjyBLVcweYFHRwy3D1QJyPXdXDHzxyhtlMharerC7UE/dg2w6FukXYq+LYYDgWW7pCBNwKnVEv3z6xxO8/dAqXqlCqGXz98CKSJNMV9XFsoUi2pNMZ9XHDcJKdvVH+5cVZhlr8XD2QQJKax5GdWixRNSzmc1V8LpWfv35gVf0jgqcgCILwPaJ+FzeOJPnPXz1MT8zPbWuTfGH/NKokI8vQEfTy3FiG//y1o+imjSRJWI5D3KuyXGzgd0t0RDycWaoxV9TZO5Wl4Xzn/d0ydMZ9nFko8V+/doyaYRP2u/C6bYo1g/mijluWGWzx4fOoSMBkusLn903jIDGX93LTcBIT0BsmL87kubo/ypauCBPZMpoM+aqO160wulJhTSrAgakMH9vdi+0012N39sbYM9TCoZkcbWEvPQk//lWcqAJi2lYQBEH4PhRZ4tdvG8G0HQ7PFJjP11nbHqYz6uPMUgnHtmgNechVDXDAsh2290QZTPlQZJlTSzXsc++VLRnIQNgj41FAVWBipUq6qlM3LFoCKoWKSalu0BL00BXx41agULeYWKkwtlQm6nejmw6arJAKenhmLI1t24ymy2zqDPPNIwvsn8yyrjWMIsu0R33s6InjdytMZqs0TIeYz0Vn1MdIa5CxlTKjy81at5u7IkxlqhTrq5u2FcFTEAThDfTyqS3X3vvYpW7K6zKdqfL4qWXiATf5mkG6XOdn9/Ry89oWOqJe4gE3XrfG86NZfC6FumFSa9icWSpxZqlKvmah0EwK8mkSVQskIOHTqFucXw+N+FyYpsVySUdWHDqiftyqzOnFErotsaUrzJbuKLIsISNRMy164l5sp5mslC7p7OqP88CxRXoSAbZ0Rzg6l6cj6uXWda1s64niOA5H5wrcs62TtW0hPJpCyKPRFfVh2TaHpnMA3LImRVCMPAVBEN46LxeLB5i8993nT1u5XCWDLpIhN5oi8/PX9xMNuPmNrxzlI3+5l5dmsrxnYxu3rU/R1+LDth28LhUDOL1YQgMUwO+ScGvN8n0uGWQZcnUT7Vz2kAZUGzq6BZIE7WEP6XKdmWwVv1tmV1+UdR1hNrSH2dgRIVfTKVUNqrpFtqIzn6+xUKiSLjZY1xaiJeBiJlMlFfYyka5S0y32jmfY0hXBNE3qps3XD8+TPzfa/czT43xx/ywj54ojeF0Kpu18nx55JRE8BUEQ3gDPfvJmJu999xVRND5TbpCrGUysVABYLtSpGzYfu6qHmF9DcSRM2yFfNtBUmUrDwrJtJMAwbda1+/FoEobl4FZlig0HHJp7OxsW0rn4ZACW1ZweLtVtTi9W0U2HVMiDaTk8N57lLx4f5R+em0BRJYaTQda2BzmzVMLnVphIV4n7PYy0hVAVibawF02R+fCOLu5c38pMropHlQGJR06l6Y/7GF0s8a2j89iOw1y+yq1rU6iyzMMnlnhpOseJ+eKq+kgkDAmCcMX77nM3hR9sLl8j4FYp1HRGl0t86cAsm7tCPH02w0hbiIhX4/mxDEvFOrblYDkO5YZNS8CFzy0znq6iKSCpMumqRcwDhXrzvRsWKFJz1AnNbSz5uoEDjKT8ZKsGvXEfqbCHzZ1hnh/LEPdrlKomQY/KQrHBtu4I+apJV8zHcGuA58cz/N49m3luLM227ihTmSoBj8z/+fY4t61Lcd1Qgl29ESYzFVYqDWIBNw3T5qO7ehhpDfLXT41z18ZWOqM+Ds3kV9VHIngKgnDFeyMPwH4n2NQZASDqc/HSTI6BpI/FQoONnWGKdZOYV+OYlefMYqmZKAR43QoNwyRTton7Vcq6Rc2wkYG6CaoMlg3tYRd1w6ZUNzFsaFgOjt2c5j29VMGjwd6JLBs6w3zhhVlcisN8QcZxoDfhoy/mY6Q1zMMnF+mJ+Sk1TNyKzB8+cgbTcfi1m4eZSJepGiaDyQCWY1Oom5gW7BvP8tvv38jYcolPfPEQf/qRLYwul/FoMkdmCxydK9Id862qj8S0rSAIgvCqCjUD03KIBzwEvSrHZvMcn83zr4fn6EsEuHFNAluRcCngd8kgyYS9CnXdJBXy4NOaSUFVExo2eJTmeZ5uWWJDe5DeWLM6UcOGzpibVFAj7HXhc6m4FRndtPC7VW5dmyTkUcnXTLxujTPLJda2BdnQGebUQon3bGpjsVDnhfEsn9s7yX2H5miYDr926xC66eBSZH7u+j4+sK2T//nASVIhD//93euoGhZ/9vgoA8kg3TE/23uibO6KrKpvxMhTEARBeFUtQTfpcgOPpuBWJVLr2zi9VOTscpmAR8POwy0jCeYLDYaTAV6YzLJcrNOwoJGrEQ0omJaFIoEkywTdMotlk6WywWLZwC03g2vCr+J3aQRC6rkjxSQKVYOwV8W0ZcZXKmzvjXJ6scxSsU5r0E2mrPPLN7Xyc9f1U6zq3LgmSd9KiUdPLpKp6KyUGmzpiqApEtlKgw0dYRqGw/r2EOWGSSrs4Z/2TrFnKMGatiDH54ts6Y6sum/EyFMQBEF4BcdxKDdMRpfLpEsNhlNBHju1gqxIOMCaVIio38Xt69sp1Jolg5JBD5bt4HOrjCS9GDbkyxYet4qiSuiGTbpsEnQrdEWa9WPrNkgOKIpMvtrg2FyekFvBp8pkqzomcPVgHI9LYd94hky5wYHJHIfniphWsyTfPz4/wUf+ei8PHF0ACVrDXq4daGHPYILrBhNc1R/j1GKJumFRNy0USWbveIY/fews7REPiiQxvlIhGXBzYJUHYYMYeQqCIAjATLbKyYUit69vZbFY58BkjmsG4nTHfLhUmU/cOkx7xEtXzMuXD8xyzWCciUyFX71liJlslc/tnSJXabCpI4RLlZlI1wj5NNoiHgzDYb5YQ0KiK+Kh3LBIBl14VJk7N7TyraMLFGomW7ojeFWNxUKVbFXnJ3b3sm8iw1KxQdjrpifuY6lYY01rkOWyTjLo4nefHCPm18iUG6RLbn7yml48msyDx5e4Z3snummzXNTJVHSWig00VWL3QAutYS/lusGW7gi9cT+6Za+6ri2I4CkIgiDQPE0l5neRreg8eXqFj+zq/p7nx1fKPHk6za6+GNGAmz985CwuVWJtW7h58ookc3qphKYo+N0KXVEvfo/G+r4gf/f8FINxL8gyGzsDLBQarG0LMNDiJxHysK41xPHFIiGPSalh0jAdXpzK4Tt34kky5KZc1ynWTB47tcJNa5OcXChx99Z2rumPc2qxzB0bUnzxhRmSATdtIS/Pj2W4bqiFuza2AdCX8ANwarG5HeVdm9q57+AspuWgKjJPnlnm/Vs6iAfcr9lfIngKgiAIKLKE363id8OHd3S96msePDbPqcUSa1IBHju5xE1rknREvKSCLh47tcS6tgALxTo+TUFWJBYKNaRigzNLJUzLYa6oE/I6LJd1NnSGmMtU+caRBZJBD4dyBeJ+hTVtQQJujeuGW/jSC9PUTIsdvc0qQQ+fKPKh7Z0gS8znamQrOretS5GvGWQqDU4ulPjFGwdxHIcDU1k8qoIsNbOt909k2TOUoG5YZMs6u/piAHTFfDQMi8dPr3DzmiQhr/aq1/7dxJqnIAiC8AqyLH3PYzXd5ORCmYV8nX89skDUr3FsvsCDxxb48yfH2dAe4oPbuuiI+MhXTeI+N4bloCgymzsjvG9rO4mgi0TAxWS6Qr6mUzIsEkE3/Qk/1w+38IFtPSQCHtqjXtrCHmYLNaq6Ra6q85Gruon4XGzqiuBSFFpCHlIhD8ulBv+0d5q6Yb+iwMGzoxlMy+ZTXz/OdKbC+vYgx+YK1A2LlXKDh08sAbCjN8bm7ig/d10fbREPXzows6o+EiNPQRAE4Qc6u1Ti8VPL3LmhlVxV5/1bOzFMm794YhzTsgl7VWZyNjO5Gg3TZl1HCLeq4HGp7OyJYtgw0BLg+bEMqaCHdW1Bru5L8HfPTdIwbZZKdYa8IR46vsSmzjDPjaZpD3v4kW1dhH0K/+VrJyjWTT60owuvS+We7R08O5rBthy+sH+a33nfBuKB5rYXgIVCndaQhw0dYc4ul6npFlG/m2NzJQ5N57ltfYqgWyNf1Yn4mslLmiJzYr5I2L26kacInoIgXLFeriwkqgr98CbTFZ48s8LHd/cgyxKO06xjW3QMfuH6fiJ+jS/um2FnX4xd/TF+48uHUSSIxV38+O4eumM+vvLiLI+cWCIRcFM3bdyawv1HFuiKerAdh7WtYZZLDSzb5sd2dfP0aJp81aCvxcdfPjHOrt4IblXmxpEEDcPhvpfmaQ162NwbYX1n85QXgH85OMdHd3ZR1U3u2NCKpip8eGc3pxaKzOdq3DDSQs2I0h72cmKhiFt75eTr5q4IM7nqqvpFTNsKgnDFermy0KWoN/tyofjL8YQV07JxnGYB2tawh3u2deJSZe4/Ms/Z5TK6YTGdqfIjO7tZKursGW5BkiUqDZu7NrYzkAyyoT3CNYMtDCaD+NwKvQk/v3BDH//7Q1vwqDJnlotUdJu7Nnbw3i1tHF8oEvZqVA2LYs1AcuBPHh1lKlvlF24YIODRuO/gPM+MplEkCa9LIeLV6I75kCQJSZL48d09qIrMXL6OKkksl+pYtkNH1EuhbhDzu+iINF+fDHqYynxvoHzPpvZV9ZEYeQqCILwJLgzYL5+2crn49okl1rWF6E348WgKK6UGB6ebB0Zv6ozw989OEPRorGsL8SM7OkmXGnxu3xRjKyXetaGVYsPkM09P4HMpfHR3Dzt7Y0R9Lr784ix98Ty2A7eubWVTZ4QHjy4S9bq4caSFpUIDRZbob/HjViR00+bWtUmyFZP/dPsI/+fbpzFth5+8phe/W+XIbIGoT2MoFeTkQpGBlgC5qo7jOPzz/mkSATdDyQAbOyNcN9TyimsMuFXawh4A9k9m2dgRxqMpq+4jETwFQRDeZC+PQjsi3svi1JW7NrQiSd9JGmoNewh5NMK+5nrgT1zdy0PHF0lXGoyvlJnN1vjAlg4My6FqWHzmmQm29UTwaAqPnVria4cWuHlNkqBbpWHaeDSZlVKDfFXHsCwCXoUdPVHG0xWeOLnMmvYgX3hhhg9u76Qn7mddW4iKbjGSCrKzL3Z+K8nLGbNfeGGahmHTl/BzdLbAUDKAS5VYLDS+7xFjXpdC17k6tl5NQfreHKkfSARPQRCEN9nLAfNyGYFK3xVJNEUm7PvOKp8sS+f3Th6azjNfqNEa9jCbqxHxavzSjYMo56ZNEwE3t69P8e6NrcgS/PhVPZxcLPIHD59hsVSjYdmML5dZKevNEaVL4fmxLJu7wtw8kiLgVYl4Nf5p3xQjrSEGkkEePrHENQNx/OcOrl7fHiIZ9FBpmHREvSSCbnTL5tB0gaBHRTdtXOr3X6Xc0BG+6D4SwVMQBEH4gfaNZ7Bsh2NzBXYPxM+fugJwVX+cEwtF9gy1cGgmz5rWIB5NYXylzM5EjJBHO//6j+/u4dh8EQkYaQ3i2PDz1w8gOw4vTObIV3UOTVexHIfxlQpIkDg3yhxpDTGSCuJS5fOf8bKN594/X9XRFImlYp10pcFdG5sF421ndQdcXwwRPAVBEIQfKBF049MU6oZF+LuKCIS9Gp+4dfgVj+0bz7C2PUTI03ztfQdniQVc3DCc5KpzU61buiN8af8MAy0B9o5n+Imre2mP+CjUTEZag3RGffSeqwgEsLs/fv521/c5Nizic53fetLfEgC+U1XojSaCpyAIgvADDZwLRG3ntvycWiwylAxSNyyeH8tw67oUAFvOHecVD7h5bjTNcCqIIkvN261BPKrCVf1xlot1LMfhx67qQZElMhWdZMiNIkvnp1AHk4HX1ebDM3nWtYfQlDdnU4nYqiIIgiA0ffrTq3rZUrGBadt4NIXhVPD84yulBtAMfDeOJKnpFs+Opvn/3r2On7ym7/z0bd2wqekWyrlKRlu6IrSFm4F5uVjnqwdnX/el6Jb9pkzXvkwET0EQBKHpt35rVS+7YbgFt6qgyBLd8eYUasO0ePLMyvnXeDSFUsPktnUpon4XLlXG62quU3bHfeenVb9bMuThXeeSkV6Pnb0x3Orqt55cLDFtKwiC8BZ5ecvKy7cvh20rAAcms2x4jX2QblVpFm2/wIXrlN/PyYUiMZ8LVZHOb0G5mP2Wb7TlUp1k0POarxPBUxCEK8rLJfmAt11ZvguD5bX3PnbZ7P10qxe/D3K1lop1HMfBrSmrOgrszdYw7FW9TgRPQRCuKC+X5Hu7u5z2fm7svLh9kDXdIlvVV/XLy40jyR+2WW+K75fJ+93EmqcgCILwhio1DOZytUvdjDeVGHkKgiBcQpfrOugPkgx6VrVueDkTwVMQBOESupwLyL+TiWlbQRAEQbhIIngKgiAIwkUSwVMQhCvChVs/hO/y6U+DJL32D6zudausRHQlk5w3sXyRIAjCd1ndF86NNzb/fOKJVb9x7yfvvyy2qPwgL+9R/a7Eode7w3L1X/KSBCImwCr6XIw8BUEQ3iae/eTN538B6P3k/SKB6G1MZNsKgiC8zVwJ21WudGLkKQiCIAgXSQRPQRAEQbhIIngKgiAIwkUSwVMQBEEQLpJIGBIE4bJ24fYOQXiriOApCMJl7XI5gky4sojgKQjCZePCg65fJkacb6BPfepSt+CyISoMCYIgCMJFEglDgiAIgnCRRPAUBEEQhIskgqcgCIIgXCQRPAVBEAThIolsW0EQ3jKSJD0IJN6Et04A6Tfhfd8OPI7jbLjUjRBeSWTbCoJw2ZMk6YDjODsudTveDFfytV3OxLStIAiCIFwkETwFQRAE4SKJ4CkIwpXgry51A95EV/K1XbbEmqcgCIIgXCQx8hQEQRCEiySCpyAIlzVJku6UJOm0JEmjkiR98lK3540kSdKkJElHJUk6JEnSgUvdHuE7xLStIAiXLUmSFOAMcBswC+wHPuo4zolL2rA3iCRJk8AOx3Gu1D2sly0x8hQE4XK2Cxh1HGfccRwd+ALwvkvcJuEdQARPQRAuZx3AzAX3Z889dqVwgG9LkvSiJEk//zreQ/xc3M9rEuX5BEEQ3r72OI4zJ0lSEnhYkqRTjuM8dakbJYiRpyAIl7c5oOuC+53nHrsiOI4zd+7PZeA+mtPUwtuACJ6CIFzO9gNDkiT1SZLkAj4CfP0St+kNIUmSX5Kk4Mu3gduBY2/aB37iE80fYVXEtK0gCJctx3FMSZJ+BXgIUIC/dRzn+CVu1hslBdwnSRI0v6s/7zjOg2/apx069Ka99ZVIBE9BEC5rjuN8C/jWpW7HG81xnHFg86Vuh/DqxLStIAiCIFwkMfIUBEEQ3hTX3vsYc/kaHREvz37y5lU/dzkQI09BEAThTTGXrzF577sB6P3k/fR+8n6uvfexVzw3l69dyib+0MTIUxAEQXhTXTiyvPbex+j95P10RLyXsEWvnwiegiAIwlvmcpyifTVi2lYQBEEQLpIInoIgCIJwkUTwFAThHUmSpMclSbrt3O3flSTpTy51m4TLh1jzFAThnepTwG+fK7q+Fbj7ErdHuIyI4CkIwjuS4zhPSc3ad78O3Og4jiVJ0lrg14AE8KjjOH9+SRspvG2JaVtBEN6RJEnaCLQBuuM4JQDHcU46jvOLwIeBay9l+4S3NxE8BUF4x5EkqQ34J+B9QFmSpDsveO5u4H6uwHq5whtHTNsKgvCOIkmSD/gq8B8cxzkpSdLvAL8HPAjgOM7Xga9LknQ/8PlL19LL14Wl915LR8RL7yfvP3/7ctkHKoKnIAjvKI7jVIGrL7j/1Mv3JUm68f/f3v2DyFnEcRz+/gioGOyCEtTCwka0EIJNLESIpBAFq9hZWVlpYTpBLWJtZ2GniIUBEYkKMQhWiSKo8Q9BguaakEJQEELiWNy+YZHLZefu9t7dvedpsnd5uZurPsw778yb5Lkkt8fMc8umj+W7lelYDhFdBuIJMNFaO5PkzMjDWErDbDPJ0h+9NwvxBGDbemabq8ADQwDQSTwBoJN4AkAn8QRgIQzbVoYXZi8yDwwBsBCGbSvLsGXFzBMAOoknAHQSTwAWyjKsfVrzBGChLMPap3gCsGU9h8CvEvEEYMv22rF8A2ueANBJPAGgk3gCQCdrngAspGHLyvB5+sXZYxNPABbSdCwXbduK27YA0Ek8AaCTeAKw8BbtyD5rngAsvEU7ss/MEwA6iScAdBJPAOgkngDQSTwBoJN4AkAnW1UA6LZXX4I9EE8Auo31EuzhsISxD4oXTwCWxqIclmDNEwA6iScAdBJPAOgkngDQSTwBoJOnbQGYybC3M8no+zuHLSvD593etiKeAMxkrL2dG5mO5RjbVty2BYBO4gnAUhtu4R4+cXrXfqd4ArDUvj7+5I3bybsVUWueAKyE3Ty6z8wTADqJJwB0Ek8A6GTNE4CVshsHKIgnAJsaThYa+1ShWU3H8vCJ03N5ebZ4ArCpRTpZqNcQzJ2OqHgCsPJ2ehuLB4YAoJOZJwB7xk49TCSeAOwZGz1MNOiJqXgCsCf9P5RDTGd5OEo8AdjQsm1R2a6eW7jiCcCGlnmLyryJJwA3DLPNJHtmxrkV4glAvv39z1y9dj1JzDZnUK21sccAAEvFIQkA0Ek8AaCTeAJAJ/EEgE6etgVYYVV1KsmBOfzoA0muzOHnLoI7WmsPb3aBp20B6FZV51prh8YexzzM8re5bQsAncQTADqJJwBb8c7YA5ijW/5t1jwBoJOZJwB0Ek8A6CSeAMysqo5W1S9VdaGqjo89np1UVRer6vuq+q6qzm16rTVPAGZRVfuS/JrkSJJLSc4meb61dn7Uge2QqrqY5FBr7ZaHP5h5AjCrx5JcaK391lq7muSDJM+OPKZRiCcAs7o3yR9TX1+afG9VtCSfV9U3VfXiZhc62xYA1j3eWlurqruTfFFVP7fWvtroQjNPAGa1luT+qa/vm3xvJbTW1ib/Xk5yMuu3qTckngDM6mySB6vqgaq6LcmxJB+PPKYdUVX7q+qu4XOSp5L8cLPr3bYFYCattWtV9VKSz5LsS/Jua+3HkYe1U+5JcrKqkvU2vt9aO3Wzi21VAYBObtsCQCfxBIBO4gkAncQTADqJJwB0Ek8A6CSeAMxdVX1ZVUcmn9+sqrfHHtN2OCQBgN3wWpLXJ+fGPprkmZHHsy1mngDM3eSA9UrycpJjrbXryY1j8c5V1dOjDrCTeAIwd1X1SJKDSa621v6a+q9Xk3w4zqi2TjwBmKuqOpjkvay/OPvvqjo6+f6RJOeTXB5xeFtizROAuamqO5N8lOSV1tpPVfVGkreSnEryRJL9SR5K8k9Vfdpa+3e0wXZwMDwAo6qqF5Jcaa19MvZYZiWeANDJmicAdBJPAOgkngDQSTwBoJN4AkAn8QSATuIJAJ3EEwA6iScAdPoPU9MnaweJa+wAAAAASUVORK5CYII=", + "image/png": "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amqKQEDTRGaSkZERamtrz+s5CoQiIiLyrnw+H9FotCTvPTk5SWtrK8eOHcPv95ekhpnkxOdlt5//BBgFQhEREXlXJpOp5GHM7/eXvIaZ5Hy3i0GHSkREREQqngKhiIiISIVTIBQREZGy5HA42Lx5Mw6Ho9SlzAgf5PMyFQqFwkWoSURERERmCK0QioiIiFQ4BUIRERGRCqdAKCIiIlLhFAhFREREKpwCoYiIiEiFUyAUERGRsvPtb3+b9vZ2nE4na9euZfv27aUuqWw98sgjmEymU74WL158Xq+hQCgiIiJl5emnn+b+++9n8+bNdHV10dnZyS233MLIyEipSytby5YtY3BwcPpr69at5/V8BUIREREpK9/61re499572bRpE0uXLuXxxx/H7Xbz5JNPlrq0smW1WmloaJj+CoVC5/V8BUIREREpG5lMhh07drBhw4bpa2azmQ0bNvDqq6+WsLLydvDgQZqampg3bx6f+9zn6O3tPa/nKxCKiIhI2RgbG8MwDOrr60+5Xl9fz9DQUImqKm9r167lqaeeYsuWLXznO9/hyJEjXHvttUxNTZ3za1gvYn0iIiIicpHdeuut09+vXLmStWvX0tbWxo9//GO+8IUvnNNraIVQREREykYoFMJisTA8PHzK9eHhYRoaGkpU1cwSDAZZuHAh3d3d5/wcBUIREREpG3a7nTVr1vD8889PX8vn8zz//POsW7euhJXNHLFYjEOHDtHY2HjOz9GWsYiIiJSV+++/n3vuuYfLL7+cK6+8kkcffZR4PM6mTZtKXVpZevDBB7n99ttpa2tjYGCAzZs3Y7FY2Lhx4zm/hgKhiIiIlJW7776b0dFRHn74YYaGhli1ahVbtmw546CJFPX19bFx40bGx8epra3lmmuuYdu2bdTW1p7za5gKhULhItYoIiIiImVO9xCKiIiIVDgFQhEREZEKp0AoIiIiUuEUCEVEREQqnAKhiIiISIVTIBQRERGpcAqEIiIiIhVOgVBERESkwikQioiIiFQ4BUIRERGZtX70ox/hcrkYHBycvrZp0yZWrlxJNBotYWXlRaPrREREZNYqFAqsWrWK6667jscee4zNmzfz5JNPsm3bNpqbm0tdXtmwlroAERERkYvFZDLxjW98g7vuuouGhgYee+wxXn755VPCYCKRYMmSJXz605/mH/7hH0pYbelohVBERERmvdWrV7Nnzx6effZZrr/++lN+9ld/9Vd0d3fT2tpasYFQ9xCKiIjIrLZlyxb27duHYRjU19ef8rODBw+yb98+br311hJVVx4UCEVERGTW6urq4jOf+QxPPPEEN998M1/72tdO+fmDDz7I3/3d35WouvKhewhFRERkVjp69Ci33XYbDz30EBs3bmTevHmsW7eOrq4uVq9ezc9//nMWLlzIwoULeeWVV0pdbknpHkIRERGZdSYmJli/fj033HADjz/++PT12267DcMw2LJlC3/5l3/JD37wAywWC7FYjGw2ywMPPMDDDz9cwspLQ4FQREREKt5TTz3F7t27dahERERERCqTVghFREREKpxWCEVEREQqnAKhiIiISIVTIBQRERGpcAqEIiIiIhVOgVBERESkwikQioiIiFQ4BUIRERGRCqdAKCIiIlLhFAhFREREKpwCoYiIiEiFUyAUERERqXD/P0d+SK5kvJnbAAAAAElFTkSuQmCC", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -238,7 +244,7 @@ "\n", "_ = pairplot(\n", " samples=x_pp,\n", - " points=x_o[0] + error_shift,\n", + " points=x_o[0] + error_shift, # shift the observations\n", " limits=torch.tensor([[-2.0, 5.0]] * 5),\n", " points_colors=\"red\",\n", " figsize=(8, 8),\n", @@ -258,25 +264,10 @@ } ], "metadata": { - "interpreter": { - "hash": "2193897e41726b46f35b9de052100742a934a9183b8a000ae8eb69e12e860d83" - }, "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "python3", "language": "python", "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.11" } }, "nbformat": 4, From d3b458b8db1e1772aaf1607ea3767c2f07d3ba72 Mon Sep 17 00:00:00 2001 From: max-dax <74651235+max-dax@users.noreply.github.com> Date: Tue, 2 Apr 2024 09:13:24 +0200 Subject: [PATCH 16/53] Fix bug in importance sampled posterior (#1081) * Added theory section for importance sampling tutorial. * Added manual importance sampling to tutorial. * Finished importance sampling tutorial. * Fixed bug in sir, where the oversampling_rate would not be passed to the sir function. --- .../posteriors/importance_posterior.py | 2 +- .../17_importance_sampled_posteriors.ipynb | 24252 ++++++++++++++++ 2 files changed, 24253 insertions(+), 1 deletion(-) create mode 100644 tutorials/17_importance_sampled_posteriors.ipynb diff --git a/sbi/inference/posteriors/importance_posterior.py b/sbi/inference/posteriors/importance_posterior.py index b7b02e90d..ccad0e64d 100644 --- a/sbi/inference/posteriors/importance_posterior.py +++ b/sbi/inference/posteriors/importance_posterior.py @@ -253,7 +253,7 @@ def _sir_sample( self.potential_fn, proposal=self.proposal, num_samples=num_samples, - oversampling_factor=oversampling_factor, + num_candidate_samples=oversampling_factor, show_progress_bars=show_progress_bars, max_sampling_batch_size=max_sampling_batch_size, device=self._device, diff --git a/tutorials/17_importance_sampled_posteriors.ipynb b/tutorials/17_importance_sampled_posteriors.ipynb new file mode 100644 index 000000000..f23f92d8d --- /dev/null +++ b/tutorials/17_importance_sampled_posteriors.ipynb @@ -0,0 +1,24252 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "cf9f505b-f478-4da4-9ccd-5208aa806825", + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "### TLDR:" + ] + }, + { + "cell_type": "markdown", + "id": "cb0b9d26-e5f7-4866-ae1b-fad6485d54b1", + "metadata": {}, + "source": [ + "# Theory\n", + "\n", + "SBI estimates the posterior $p(\\theta|x) = {p(\\theta)p(x|\\theta)}/{p(x)}$ based on samples from the prior $\\theta\\sim p(\\theta)$ and the likelihood $x\\sim p(x|\\theta)$. Sometimes, we can do both, *sample* and *evaluate* the prior and likelihood. In this case, we can combine the *simulation-based* estimate $q(\\theta|x)$ with *likelihood-based* importance sampling, and thereby generate an asymptotically exact estimate for $p(\\theta|x)$.\n", + "\n", + "### Importance weights\n", + "\n", + "The main idea is to interpret $q(\\theta|x)$ as a proposal distribution and generate proposal samples $\\theta_i\\sim q(\\theta|x)$, and then augment each sample with an importance weight $w_i = p(\\theta_i|x) / q(\\theta_i|x)$. The definition of the importance weights is motivated from Monte Carlo estimates for the random variable $f(\\theta)$, \n", + "\n", + "$$ \n", + "\\mathbb{E}_{\\theta\\sim p(\\theta|x)}\\left[f(\\theta)\\right] \n", + "=\\int p(\\theta|x) f(\\theta)\\,\\text{d}\\theta\n", + "\\approx \\sum_{\\theta_i\\sim p(\\theta_i|x)} f(\\theta_i).\n", + "$$\n", + "\n", + "We can rewrite this expression as \n", + "\n", + "$$ \n", + "\\mathbb{E}_{\\theta\\sim p(\\theta|x)}\\left[f(\\theta)\\right] \n", + "=\\int p(\\theta|x) f(\\theta)\\,\\text{d}\\theta\n", + "=\\int q(\\theta|x) \\frac{p(\\theta|x)}{q(\\theta|x)}f(\\theta)\\,\\text{d}\\theta\n", + "\\approx \\sum_{\\theta_i\\sim q(\\theta_i|x)} \\frac{p(\\theta_i|x)}{q(\\theta_i|x)}f(\\theta_i)\n", + "\\approx \\sum_{\\theta_i\\sim q(\\theta_i|x)} w_i\\cdot f(\\theta_i).\n", + "$$\n", + "\n", + "Instead of sampling $\\theta_i\\sim p(\\theta_i|x)$, we can thus sample $\\theta_i\\sim q(\\theta_i|x)$ and attach a corresponding importance weight $w_i$ to each sample. Intuitively, the importance weights downweight samples where $q(\\theta|x)$ overestimates $p(\\theta|x)$ and upweight samples where $p(\\theta|x)$ underestimates $q(\\theta|x)$.\n", + "\n", + "### Effective sample size $n_\\text{eff}$ and sample efficiency $\\epsilon$\n", + "\n", + "If inference were perfect, we would have $w_i = p(\\theta_i|x) / q(\\theta_i|x) = 1~\\forall i$. In practice however, SBI does not provide exact inference results $q(\\theta_i|x)$, and the weights will have a finite variance $\\text{Var}(w) > 0$. Performing the Monte Carlo estimate above with $n$ samples from $q(\\theta|x)$ thus results in reduced precision compared to doing the same with $n$ samples from $p(\\theta|x)$. This is formalized by the notion of the *effective sample size* (see e.g. [here](http://www2.stat.duke.edu/~scs/Courses/Stat376/Papers/ConvergeRates/LiuMetropolized1996.pdf))\n", + "\n", + "$$\n", + "n_\\text{eff} = \\frac{n}{1 + \\text{Var}(w)} = \\frac{\\left(\\sum_i w_i\\right)^2}{\\sum_i \\left(w_i^2\\right)}.\n", + "$$\n", + "\n", + "Loosely speaking, using $n$ samples $\\theta_i\\sim q(\\theta_i|x)$ is equivalent to using $n_\\text{eff}$ samples from the true posterior $p(\\theta|x)$. The *sample efficiency*\n", + "\n", + "$$\n", + "\\epsilon = \\frac{n_\\text{eff}}{n} \\in (0, 1]\n", + "$$\n", + "\n", + "is an indirect measure of the quality of the proposal $q(\\theta|x)$.\n", + "\n", + "### Mass coverage\n", + "Importance sampling requires $p(\\theta|x) \\subseteq q(\\theta|x)$. When using NPE, this should naturally be ensured, as NPE is trained with the mass-covering forward KL divergence, such that $p(\\theta|x) \\not\\subseteq q(\\theta|x)$ for in-distribution data would imply a diverging validation loss. \n", + "\n", + "When $q(\\theta|x)$ is a light-tailed estimate of $p(\\theta|x)$, the variance of the importance weights is unbounded and we may encounter a small sample efficiency $\\epsilon$.\n", + "\n", + "### Self-normalized importance sampling and the Bayesian evidence\n", + "\n", + "In practice, we don't have access to the normalized posterior, but only to $p(\\theta|x) \\cdot p(x) = p(\\theta)p(x|\\theta)$. We thus have to use self-normalized importance sampling. In this case, an unbiased estimate of the Bayesian evidence $p(x)$ can be computed from the normalization of the importance weights (see e.g. [here](https://arxiv.org/abs/2210.05686))\n", + "\n", + "$$\n", + "p(x) = \\frac{\\sum_i w_i}{n}\n", + "$$\n", + "\n", + "with a statistical uncertainty scaling with $1/\\sqrt{n}$,\n", + "\n", + "$$\n", + "\\sigma_{p(x)} = p(x)\\cdot \\sqrt{\\frac{1-\\epsilon}{n\\cdot \\epsilon}}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "fe5e6091-285a-4841-b902-7e335fc15513", + "metadata": {}, + "source": [ + "# Implementation" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "f3284c6a-5205-492a-bbd9-c1b46bb2feb3", + "metadata": {}, + "outputs": [], + "source": [ + "from torch import ones, eye\n", + "import torch\n", + "from torch.distributions import MultivariateNormal\n", + "import matplotlib.pyplot as plt\n", + "\n", + "from sbi.inference import SNPE, ImportanceSamplingPosterior\n", + "from sbi.utils import BoxUniform\n", + "from sbi.inference.potentials.base_potential import BasePotential\n", + "from sbi.analysis import pairplot, marginal_plot" + ] + }, + { + "cell_type": "markdown", + "id": "4808d6d3-cb14-4ecd-a0f5-824bf54a5b01", + "metadata": {}, + "source": [ + "We first define a simulator and a prior which both have functions for sampling (as required for SBI) and log_prob evaluations (as required for importance sampling)." + ] + }, + { + "cell_type": "markdown", + "id": "7bafcabf-bf3f-4133-aeaa-ab1e36e89267", + "metadata": {}, + "source": [ + "Next we train an NPE model for inference." + ] + }, + { + "cell_type": "markdown", + "id": "cb514776-590a-4c41-93f4-e42a32f8470e", + "metadata": {}, + "source": [ + "Now we perfrom inference with the model." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "3e72c9d2-7973-499a-8d56-485cd69f2ebb", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Neural network successfully converged after 70 epochs.observations.shape torch.Size([2])\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "e7787d46f88d4de19994f91440a90be2", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Drawing 10000 posterior samples: 0%| | 0/10000 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "log_probs_inferred = posterior.log_prob(theta_inferred) # log probs of proposal\n", + "log_probs_gt = log_prob_fn(theta_inferred, observation) # gt log probs (unnormalized)\n", + "\n", + "plt.plot(log_probs_inferred, log_probs_gt, '.')\n", + "plt.xlabel(\"proposal log prob\")\n", + "plt.ylabel(\"ground truth log prob (unnormalized)\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "4796c043-3faa-4c91-8ef2-a967cfc4b160", + "metadata": {}, + "source": [ + "Based on these densities, we can now compute the importance weights." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "4a990c0b-ef62-495b-a529-3d8d653e91d4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Effective sample size: 1466\n", + "Sample efficiency: 14.7%\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "w = torch.exp(log_probs_gt - log_probs_inferred) # importance weights\n", + "w = w / torch.mean(w) # self-normalized importance sampling: normalize weights to mean 1\n", + "ESS = torch.sum(w)**2 / torch.sum(w**2)\n", + "sample_efficiency = ESS / len(w)\n", + "\n", + "print(f\"Effective sample size: {ESS:.0f}\")\n", + "print(f\"Sample efficiency: {100 * sample_efficiency:.1f}%\")\n", + "\n", + "plt.hist(w, density=True, bins=50)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "af125b98-726f-4365-9cfc-e3c221bb549d", + "metadata": {}, + "source": [ + "With these importance weights, we can correct the inferred samples." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "c1aec66d-4148-40d8-881a-bf4e43f3092d", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# get weighted samples\n", + "theta_inferred_is = theta_inferred[torch.where(w > torch.rand(len(w)) * torch.max(w))]\n", + "# *Note*: we here perform rejection sampling, as the plotting function \n", + "# used below does not support weighted samples. In general, with rejection\n", + "# sampling the number of samples will be smaller than the effective sample\n", + "# size unless we allow for duplicate samples.\n", + "\n", + "# gt samples\n", + "gt_samples = MultivariateNormal(observation, eye(2)).sample((len(theta_inferred) * 5,))\n", + "gt_samples = gt_samples[prior.support.check(gt_samples)][:len(theta_inferred)]\n", + "\n", + "# plot\n", + "fig, ax = marginal_plot(\n", + " [theta_inferred, theta_inferred_is, gt_samples], \n", + " limits=[[-5, 5], [-5, 5]], \n", + " figsize=(5, 1.5),\n", + " diag=\"kde\", # smooth histogram\n", + ")\n", + "ax[0][1].legend([\"NPE\", \"NPE-IS\", \"Groud Truth\"], loc=\"upper right\", bbox_to_anchor=[1.8, 1.0, 0.0, 0.0])\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "87290c05-2945-4b0f-bb39-f1eaa17b0594", + "metadata": {}, + "source": [ + "Indeed, the importance-sampled posterior matches the ground truth well, despite significant deviations of the initial NPE estimate." + ] + }, + { + "cell_type": "markdown", + "id": "26d8d8c7-05a0-4fd4-ac64-0dabf1a848f6", + "metadata": {}, + "source": [ + "### Importance sampling with the SBI toolbox" + ] + }, + { + "cell_type": "markdown", + "id": "7150cc13-9911-4656-936f-9cafb867eba4", + "metadata": {}, + "source": [ + "With the SBI toolbox, importance sampling is a one-liner. SBI supports two methods for importance sampling:\n", + "- `\"importance\"`: returns `n_samples` weighted samples (as above) corresponding to `n_samples * sample_efficiency` samples from the posterior. This results in unbiased samples, but the number of effective samples may be small when the SBI estimate is inaccurate.\n", + "- `\"sir\"` (sampling-importance-resampling): performs rejection sampling on a batched basis with batch size `oversampling_factor`. This is a guaranteed way to obtain `N / oversampling_factor` samples, but these may be biased as the weight normalization is not performed across the entire set of samples." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "1479c986-a677-4367-9037-d72f5f34569d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Posterior: oversampling factor 1\n", + "Num candidate samples: 1\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "4ea11a620bc5495c9be77c51794f1166", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Drawing 10000 posterior samples: 0%| | 0/10000 [00:00" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiQAAAC8CAYAAABIWbV3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABUh0lEQVR4nO3dd1xT5/7A8c9JQggbZYPIEEVx772ttVZtrb/a3dphd2/3sLfXtnbfa2/3uF3aPbVLbd2rigvFgaICioAs2RBCSM75/XEgLXURDCTA83698lJCznO+gZzwzTO+j6QoioIgCIIgCIITaZwdgCAIgiAIgkhIBEEQBEFwOpGQCIIgCILgdCIhEQRBEATB6URCIgiCIAiC04mERBAEQRAEpxMJiSAIgiAITicSEkEQBEEQnE4kJIIgCIIgOJ1ISARBEARBcDqRkAiCIAiC4HQiIREEQRAEwelEQiI4lCzLHNiUQ2F2hbNDEQQAcipzeC3pNX5N/5VKc6Vdx5YazZgtcjNFJgjCX+mcHYDQdsgWmR/+nUThiQqQ4Op/DSEg3NvZYQnt2H93/ZfFKYtR+HNTc71WT6+AXiy6eBEazdk/k32ReJynfk5BI8HIuECenpZAXIhPS4QtCO2SpCiKcv6HCcK5mc0Wvl2wg/JTJtt9Bm83bn55JBqd6IgTWtahwlTuW/sP8mtyAdBIGhRFaZCYPDH4Ca5LuO6Mx/92IJe7vth92v0xgZ58dutQIjt4Nk/gbYzVaqW2ttbZYQhO4ubmhlarbfTjRUIiXDBTpZmvnt1OdYX6xhPe1Y+TR8sAiOkbyNS7+jgzPKEdkWWZbxdt5OTuKvRWA0Z9GYpWJsI3jMm39CbfM5OHNzxMnjGPYM9g1l659rQ2tmcUcc2H25AV8HbXMr1POD8ln6S61gpAuJ+BrfMmtvRTa1UURSEvL4/S0lJnhyI4mb+/P6GhoUiSdN7HioREuCBmo4XPntpKjdECwMCp0QybEcuqjw5wdFcBABfdkkC3IaHODFNoB4pzq/jp9d1Ul535E7neQ8ut/xnNupx1PLjhQQC+uOQL+gb3tT0mNbecaW/9gUVW0Os0rH1wLJEBnsiyzLsb0lm46ggAj0zuxr0Tujb/k2qlcnNzKS0tJTg4GE9Pz0b9MRLaFkVRMBqNFBQU4O/vT1hY2HmPEQmJYLetJ7fyyMZHMNfWMv7Q9USX9MaiMdN9WkcunjoEUD+pfjpvK8YyMxqtxA0vDMfb3+DkyIW2as/qTLYuTQcFrJKVpIjfueGSmYSbYinIrCBlUw4AXQeHMPnWnoz8eiTl5nJ6B/bmq0u/AtTXbL8Fqyk3WdBKEj/fO5JeEX4NznPpG5tJyS1Hp5HY9dQk/D31Lf5cXZ3VauXIkSMEBwcTEBDg7HAEJysqKqKgoIBu3bqdd/hGDO4LdrHIFh7a8BAV5gr6H5tMdElvrJKV3+M/4tmyBzBZ1DkkGo2GKx4ZgCSBbFVY99khJ0cutFX5x8vZukRNRoo98lja+1UCRilMGjiKhJHhjLs2nph+gQAc3ZlP/vEyZnebDcCBUwcoMZUA8Pb6dMpNak/fx3MGnZaMAHxy82A0Elhkhbmf7WqhZ9i61M8Z8fQU82yEP18HjZlLJBISwS7zt8ynqraKPifH0S9XHUc398ol2/8wFeYK7lh9h+2xfkGedBuqDtWcPFLqjHCFNk6WZZa9tReAYs9clvT5D+YO5fx7zL8bPG7ybb1wc1c/nS1/Zx939L4DraRFQeE/O/+DLMu8tyEdgJ7hvoyLDz7j+UJ8DcwdHQPAzuMlrEstaK6n1uqJYRoB7HsdiIREaLQjJUf4NeNXYov6MTzzcgAiEzryyD03ck38NQDsLtjNR/s+sh0z+NJoAKwWhYxk8eYtONaaRYcwVdUiY2VVt0+waiy8Of5NdJqGFQ10Og0X3ZIAQHVFLduXZjIqYhQAKzNX8tKKQ7ZJq69d1e+c53x8SncCvdShmge+2YMsizolguAIIiERGu2+dfcRXhbHxKM3ICHRMdyLafeqK2ieHPYksX6xALy5500OFh0E1F4SDx83AJLXZDkncKFNyj5czNGd+QDsiFpGqUcBk6MmMyh00BkfH9M3iIh4fwAObMjhwZ6PAGC2mvls7yoABkV1oNt5ao1oNBrev2EgAOUmCx9sOuaIpyMI7Z5ISIRG+Wj/R9Tkw8WHb0Or6PDy13Plk4MbFJb6fOrnuGvdUVC4bdVtWGR1PD62v9r9nX+sXHyaFBzCYpFZ8d5+AMweRpLD1iMh8dyI58553NS7+lDfg1y8W6GLXxcAJJ8kAF67ul+jzj8ouiM9QtXE5f2N6U14BoIg/J1ISITzssgWPtv6DVMP3Ym71QO9h5ar5w9F97eCZ756X96c8CYAFeYKHtmgfgIdNDUKUCe3pu0SwzbChdv4VSq1JnWIZXOfL0FSiPWPxVN/7omUeoMOv2D1Mem7C7my67UA6LwPMzLOz66CZ89e1hOA0upaftyd05SnIbiYOXPmIEkSL7/8coP7f/rpJ9tciA0bNiBJku0WEhLCrFmzyMjIsD0+Ojq6wWPqb39vV2hIJCTCeX136Hsmpc7Bq9YPSQdXPTUEg6fbGR87InwEl0RfAsDarLVsydmCt78BL393APauFcM2woWRZZmjO9ShmuAenhzVHADguu5nrrr6dzF91RU3JblVpBzuimLxRNKaGD8w0644hsQE0KmDBwD/Xplq17GC6zIYDLzyyiuUlJSc83GHDx/m5MmTfP/996SkpDB9+nSsVqvt+wsWLCA3N7fB7b777mvu8Fs1kZAI57Vuy3YCqsOxaMzMemQQvgEe53z8y6Nfxk+vLpl8aMNDmC1mug5Wh20KsyrEsI1wQfauy8ZqUcsnHeypVlrVSTpmdZ3VqOP7jO8EqD1225NPYalSC5xtzP3d7liemNIdgNwyE1vTTtl9fHuhKApGs8UpN3tLbU2aNInQ0FBeeumlcz4uODiYsLAwxowZw/z58zl48CBpaWm27/v4+BAaGtrg5uXl1aSfX3shNtcTzkmWZXQn1eTC4mMkJNr3vMdoNBremfgO1/92PUaLkQc2PMB/L36d5NVZKDIc2pJLz9ERzR260EbtWXUCgI7hXnxd+BsA/YP7n3OjvL/y7mBA76HFXG3Ft9xKpiEeN7+9HCq2v1bOtL7h/OvnA5QYa3n6lxRWPzTW7jbag+paKwnzVzrl3AcXXIynvvF/6rRaLS+++CLXXnst//jHP+jUqdN5j/HwUD+kmc3mJscpiB4S4Tx+OvozkaU9AOjbL67Rx/UN7svlXS4HYHPOZrYVb8U3UK3Uun+jGG8XmibrUDHV5eqbfsRFOsrM6p5Jd/a50652QmPVJDvGokWpVntIaqw1pBbZP/Ry73j1ujhaUElqbrndxwuuZ+bMmfTr14+nn376vI/Nzc1l4cKFREREEB8fb7v/8ccfx9vbu8Ft8+bNzRl2qyd6SIRzWr5tLQNMVyBLVoZN6WbXsc+OeJZNOZsoNhXzxB9P8PrQL0hafoKinEosZgs6Oz61CALAliVql7iHtxvfVn0CgJfOiyHhQ+xqp/uIME6kFBNp0dArIJxcrQfV1mq+PPQlz40690qdv7t5ZDSvrj6C0Wxl/s8H+O7OEXYd3x54uGk5uOBip527KV555RUmTJjAI488csbvd+rUybZfS9++fVmyZAl6/Z9bCTz66KPMmTOnwTEREaJn+FzEXwThrGRZRslSxzxrPCvx7mDfXjQajYY3x7/J9b9dT1VtFcu8PyOMcaDA7pUnGDI9thmiFtqqimITRdmVAPSd1Jl38rYBMDbS/mGSkB4dqJQUvBWJKV4+bA9MICk/icTcRLvb0mg0zBrQic+3ZZKcVWb38e2BJEl2DZu4gjFjxnDxxRczb9680xILgM2bN+Pr60twcDA+PqfXrgkMDCQurvG9yoIYshHOYXXmajqVql2Q8d0jm9RG3+C+jO2k/sH45cRPeEWon1ZS/jjpmCCFdmPzt+pOuxqdRGG3VMxWdejm3n732t3WZ9syOeamrojokG9meux0APKN+bb9mOxxW105ebNVZs+Jc6/OEFqPl19+mV9//ZXExNMT1ZiYGLp06XLGZERoGpGQCGf1/c6fCamMRkFh2CXx5z/gLBaOXWgrmPZ76KcAGMvMFOdWOSpUoY2TLTLH9xcBEDcgmCVpPwAQYAgg0tf+ZPnHPSfJ0KkJSUmukemx05FQ60wsPbrU7vaiArzwqtsr59Ot9i0fFlxX7969ue6663jzzTftPraiooK8vLwGt/JyMcfoXERCIpxVTbo6HlpjqCSoU9M/BRh0BuYNmQdAin4nFr36CTTxx7RzHSYINgc2n0SR1eWbo2Z3tW1NMDBkoN1tmS0yGacqydTJKCjIVoVTx42EeYUBsOLYiibF2K+TPwBb08Xy37ZkwYIFTSpVMH/+fMLCwhrcHnvssWaIsO0QCYlwRhuzNhJRqq4+iIw5886n9pjVbZatTPeucHX534mDxaImidAoBzZmA+AX7EGt3kS5Wf2kOaPLDLvb+m7nCRQFajTg5q6raz+HUZ3UzfZSi5tW5OyKAeqExYKKGipNlia1ITjX4sWL+emnnxrcFx0dTU1Nja2eybhx41AUBX9//7O2c/z4cRRFOe32/vvvN2P0rZ9ISIQz+mr3t4SXq6tqhl1k3+qas3lr4ltISBwM2oqMjGxRSE3Mc0jbQttlNlkoyTMCkDAqnJ/TfgZAQmJ0xGi72/tmp1otuFMHD0Jj1Lo62anFXN/jekBd/ptyKsXudi/rG2HbJ+frnWLYRhDsJRIS4YzKjyhoFS01bkY6JwQ4pM1In0h6BvbErDOR3UH9FFpf5EoQzibpN/WPuyRBnwmRrD2hVmcN9QptdDG0erIscyivAoBLe4fSe5zaq1FdUUugNQxPnbqXzWcHP7M7Tp1OQ6S/WiBr2d5cu48XhPZOJCTCafYX7iekTF01EBDu7dC2HxmkrulPDlP/qJTmGzGWi+qGwtkd3q7+cQ+M9EGn09iGVAaFDLK7rXWpBVjr5qLMHRNLbL9gNFq1WyPpt+MMCBkAwJacLU2KdVx3dXizPukRBKHxREIinOazA58TVq6un+8zKMahbQ8MGUiAIYCTvulUu6k1Jbb/LLZvF86sothEVamasPabFElRdRFVterqrMu7Xm53e1/vUIdr/D3dCPRW6+qE1A3bZOw9xU0JNwFQZi4jq9z+jSBvHhENqBNnxfJfQbCPSEiE0xzIOIK32R8Fme7Dwxze/vUJ14OkkBKillFO31Po8HMIbcOOX9Ut3TU6ibhBwfx49EcAtJKWQcH295DsylSThCHRHW339Z2gLhuuLjfTy6Mfeq26uuyjAx/Z3X5MkDeeenX572eJYh6JINhDJCRCA/lV+XgW180Zcbfi4a0/9wFNMKfnHHQaHYeDdgJQY7RQlFPp8PMIrd+xveoS2vCu/mg0GtZlrVO/9g63e/5IQbmJsupaAK4d2tl2f0y/QNuwza7fMukb2BdQV5o1Rd+65b9bxO6/gmAXkZAIDSxOWUxYubo8NySs43ke3TQ6jY7xkeOpMBRR5KlutLdrxfFmOZfQeuUfL6fGqC6fHTw1GoC0UrV2zbCwYXa392ldj4VWIzGma6Dtfo1GYxu2OZZcyLU9rgWgyFREgbHA7vPMEst/BaFJREIiNLAuax3hFWpCEtXTMatrzuTxwY8DcKSul+TEwaJmO5fQOu1cfgwAN4OW8K4dyK3MpdpSDcDMuJl2t7cqRV1iHhfkfVrvSp/x6rCNsdzMEO8R6DRqfZJP9n9i93ku7xdRV/MVvk+yfx6KILRXIiERbIwWI2VFVfiZglBQ6DEyvNnOFeIVQlf/rqQHJANgrrZSeEKUVRb+lJuublQX2UPtqVtydAmg9rD1DuptV1uyLJNRqE6GndIr5LTvx/b/c9hmz6osEjomALDmxBq749bpNIT6qRNm1xzMt/t4QWivREIi2HyX+h2hFeoOvDo3DT4d7dvd115z+8yl0r2EPG/1k/CuFWISoKCqrjRjrhuu6TlKTYw3ZW8CoLNP57MedzbrDxdirau0edPw01eOaTQagqPU7REykguZHT8bUDfbKzWV2n2+AZ39AUg5KZLs1mTOnDlIksTLL7/c4P6ffvoJqa7q3YYNG5AkyXYLCQlh1qxZZGRk2B4fHR3d4DH1t7+3+1f17ZaWltru+/DDD+nbty/e3t74+/vTv39/XnrpJcc+aRciEhLBZlnGMsLrlvt2CPVq9vNdHHUxeo2e9MA9AGQdKm72cwqtw4FN6twiSQOdenQAIKNMfcMfHjbc7va+2q4W4PP3dKPjWSZq964ftikzMzFgMlqpbrO8lE/tPt+0vmoSVVpdi9Es5pG0JgaDgVdeeYWSknMv2z58+DAnT57k+++/JyUlhenTp2O1Wm3fX7BgAbm5uQ1u9913X6Pj+OSTT3jggQf4xz/+QXJyMlu2bOGxxx6jsrLtLgAQCYkAqF3aaaVptgmt9d3kzUmj0TAodBDpAXtQUKitsZKXUdbs5xVcX0bdUnC/IA80Gg0ZpRnUWGsAuKLbFXa3d6blvn8XNzCowWqbrh3UvZx+P/673ee7qHuIbR7Jr3tP2n284DyTJk0iNDT0vD0RwcHBhIWFMWbMGObPn8/BgwdJS/tzw1AfHx9CQ0Mb3Ly8Gv9B75dffmH27NnceuutxMXF0bNnT6655hpeeOGFJj83VycSEgFQJ7O6mQ10rFbrjjRH/ZEzubvv3Rj15eT6qMXRdv12vEXOK7i2klx1vkfnuonV3x3+DgC9Vk+3DvbtrXS25b5/p9FoCI1VV9ukJxXYJs5mV2ZjtthXTVin0xDo4w7A7wfEfk2KomCsNTrlVr8pXmNptVpefPFF3nrrLbKzsxt1jIeHumWA2ey4qtOhoaFs27aNzMz2M5Stc3YAgmv4Je0X2/wRjU6iY1jzD9kA9A3ui4/eh/TAPYRXxJFzWFS3bO8KsyqwWtQ/Ir3HdgLgj5N/ABDnF2d3e2db7nsmg6bG8MsbyZiqLFxsmMxLqJ+Slx1bxhVd7euZ6dfJj9WHCtiXLXr9qi3VDP1qqFPOvf3a7Xi6edp1zMyZM+nXrx9PP/00H3/88Tkfm5uby8KFC4mIiCA+Pt52/+OPP85TTz3V4LG//fYbo0c3bkPIp59+miuuuILo6Gi6devG8OHDmTp1Kv/3f/9ndw2e1qJtPivBbsmFybb5I35B9l28F2p85HgyOu5FRsZilsk5IpKS9uzARvVTqU6vwT/EE1mWya5Q75sYNdHu9lbWLfftEuR13jfyyB4dcXNX544kr8gh2FPdm2ZZ+jK7zzu1tzqPpKjKjNki23284FyvvPIKn376KYcOHTrj9zt16oSXlxfh4eFUVVWxZMkS9Po/5yc9+uijJCcnN7gNGqRWF+7Zsyfe3t54e3tzySWXnLH9sLAwEhMT2b9/P/fffz8Wi4WbbrqJKVOmIMtt8/UkekgEjGYjJTUltvkjEfH+LXr+u/vdzS/pv5Dnk0F4RRwpm3KI6NahRWMQXEfWITUhDeikbuy4LW8bVkWdLHhltyvtastikckoVCcBTuvTuGXs0X0CObozn+xDJQztM5RfM34lpSjFrvMCXNIrhAfVkSZ+T8llRt8Iu9toKzx0Hmy/drvTzt0UY8aM4eKLL2bevHnMmTPntO9v3rwZX19fgoOD8fHxOe37gYGBxMWduUdvxYoV1Naqw4j1wz1n06tXL3r16sXdd9/NnXfeyejRo9m4cSPjx4+3/0m5OJGQCPyS8Qt6i4GAKvUNs/uwlpk/Ui/CO4Jgz2Cy/VPVYZujpS16fsF1yLJMRbEJgC4D1N6JpUeXAuCj96GDwb5EdcmebOo29+XmkdGNOmbojBiO7szHapGZYJ3Br/yK0WIkqzyLSN/IRp/boNfR0UtPcZWZ5Xvbd0IiSZLdwyau4OWXX6Zfv34NhmLqxcTE4O/v36R2o6KimnRcQoJaH6eqqqpJx7s6MWQjsPL4SkIrYtGgQdJIhET7tngMM2JnkOV/GFCXXVrEUsl2KWPPKahLIHqOUHs0kvKTAOgV0Mvu9r7ZqVZKDff3wMfg1qhj/II88fRTu96LE7XoNer/v0r9yu7z94pQr6XkrFK7jxWcr3fv3lx33XW8+eabdh9bUVFBXl5eg1t5eePr0tx1110899xzbNmyhczMTLZt28aNN95IUFAQw4fbv/S9NRAJicCh4kOEl6lLHH0Dm7cY2tnM7T2XIq9sTFo18z+8XVS4bI9St+UCYPB2Q++pw2Qxcapa3aTu0thL7W7vQI46oXRywunVWc+l+7BQAE6dqCDOV7026guz2ePinmo7BRU1bXbcv61bsGBBk3538+fPJywsrMHtsccea/TxkyZNYtu2bVx55ZV069aNWbNmYTAYWLt2LQEBzbethzOJIZt2rsBYQFVtFRHl6ptup+7NX3/kTDz1noT7hJPjd4Quxf05uiufnqPbbxd3e5VfV4cmNNYPgOUZy23fuyT6zJP/zmZdagG1VrW75Y4xsXYdO/CSaHavPIGiwMiySzlICtkV2ciybNcKh8v6RvDPHw+g1MUzKSHUrjiElrV48eLT7ouOjqampsb29bhx4867lPj48eN2n/vv7c6aNYtZs2bZ3U5rJnpI2rkfjvyA3uJBYJW6vLLnqJadP/JXoyJGkV03bFOQWeG0OATnMBlrMVWpQ3U9Rqh/uFccWwFAsGcwet2ZK6yezeKt6pYEHTzdCPO3b2Kj3qCjY7i69N0nNRoAGZm1WWvtasfboMPPQ/3c98veXLuOFYT2RiQk7dz6rPWEl3dBQkKjlQjq3PLzR+pd0/0asn3VhMRsslBZYnJaLELLO5xY9wdbUle6ABwsOgjAoJBBdre367i6WmdMt6AmxdN7nJqkG4tr6eimdpH/dPQnu9tJCFN7e5IyxXJ2QTgXkZC0cxmlGbb5I37Bzp0FH+sfi8W7mjJDIRISBzbmODUeoWUd36/OFfH2d0ej0XDKeIrKWnXJ7qw4+7quD+SUYTSrS4XtHa6p133En72Fwyxq/ZPkwmS725nUQ10tlFtWLeaRCMI5iISkHTtSfASzbCa8bv5IZA/n1/5ICEwgyy8VgGP7Tjk5GqElncpSk4+QGLWX7rsjahEPraRlSPgQu9r6YJO6EZ+nXktCuF+T4tHpNHj6qsNE8QVqldFyczlF1UV2tfN/A9WeFlmBLen2HSsI7YlISNqxb498i6HWi0CjOnk0YVTjCkc1p0tjLrXNIynJb5tr7YXTWcwW2/yRLgPVHoU1mWsAiPRpfO2PepuPqpvzDT7HZnqNERanJjPySYNt99+vU7+2qw0/Tz0+BnUeyZIk0esnCGcjEpJ2bNvJbYTVlYvX6iQCwr2dHBFM7zKdXN80ZKwoVjiZVurskIQWkL670Pb/mL5BGC1G0krVnVOnxU6zq62cUiMlRrUKZmOLoZ1N/FB1cm2N0UKsp1rJeGP2Rrvb6Rmu9vrsPF58QfEIQlsmEpJ2qn5/kIgyNSHxD3GNKooGnYEOvn4U+Kgboh3cLLZubw/Sk9WExMPbDZ1Owyf7P0FBQULipp432dXW/zaqwzVuWolx8cEXFFdU7wAkSf3/YKM6j+RY2TG725lct9xXzCMRhLMTCUk7teL4CmRkIsrVrdwjE5xTf+RMhocPJ9tPHbYRG+21DwXH1QqWgZ3VXrqf034GIL5jPAadfcX6VtVtptenU9PmjvyVRqPBu6N6/oiTatnuGmsNWeVZdrUza4A6LCorsOmomBslCGciEpJ2aunRpXiYfehQrX5y6znKdYqQXdv9WrL9jgBQUWoSnyjbOFmWqSozAxDdJ4jcylzyjGpScWPCjXa1VWo0k1euFrG6YVi0Q+KL6OYPgClXwk2jlp+v31+nsfw89fjWzSP5cY+YRyIIZyISknbqQOEBwuvnj7hpXGbIBqB7QHfKfPOwSLVIikR2quglacuyD5XY9q/pPiSUd5PfBcBN48alMfaVi68frtFKEjP6OqbIX4+R6mTv2horMe7qirQ/Tv5hdzsJtnkk4vUs2GfDhg1IkkRpaamzQ+GZZ56hX79+zdK2SEjaoSPFR6i2VhNRV3+kQ6jrJCP14gK7UOCtziM5ukvsa9OWHdmp/n71Bi16T52tGurg0MF2lWkHWL5PnXPUPczH7mPPJjzOH0mjTiQZWK5u+d6UeST1+9rkiXkkLi0vL4/777+fuLg4DAYDISEhjBw5kvfeew+j0ejs8E5Tn6yc67Zhw4YmtS1JEj/99JND4z0XkZC0Q58f/BwU6FyqjolH9Q50ckSnuyTmEvJ81Df93KNlTo5GaE65dSupOoZ7sbdgLxVmdduAO/vcaVc7lSYLJ0qqAbhqsP1Lhc/FL1gtPR+e2x1o2jySK/r/OY9kwxExj8QVZWRk0L9/f1atWsWLL77Inj17SExM5LHHHmPZsmWsWbPmrMfW1ta2YKR/GjFiBLm5ubbb7NmzmTJlSoP7RowYYXu82Wx2SpyNIRKSdmjLyS34mYLxNquF0HqPdZ35I/Vmxs0k3+c4ACXFYl+btqyiWJ3z0blXAO/uVYdrvN286R/S3652Pk08DoAkwdWDOzs0xs491EnfpnwcMo/kJzGPxCXdfffd6HQ6du3axezZs+nRowexsbFcdtllLF++nOnTp9seK0kS7733HjNmzMDLy4sXXngBgPfee48uXbqg1+uJj4/n888/tx1z/PhxJEkiOTnZdl9paelpvRgrVqygW7dueHh4MH78+HNu1qfX6wkNDbXdPDw8cHd3t339/vvvM2TIED766CNiYmIwGNRJ2tHR0bz++usN2urXrx/PPPOM7fsAM2fORJIk29f1Pv/8c6Kjo/Hz8+Pqq6+mouLC36dFQtLOVJorKawuJKpE7R1x99Lh5efu5KhO5633pjpArdmgseooOlnp5IiE5lCYVYEiqxNI4oeGsDNvJwATOk+wu636yaJdgrzR6xz71tZzjJq0Wy0ycTq1l6Qp80h61lWN3dXO6pEoikJtjdUpt/PtzFuvqKiIVatWcc899+Dl5XXGx0j1a8DrPPPMM8ycOZP9+/dzyy238OOPP3L//ffz8MMPc+DAAe644w5uvvlm1q9f3+ifVVZWFldccQXTp08nOTmZ2267jSeeeKLRx59JWloaS5YsYenSpQ2SoXPZuVO9FhctWkRubq7ta4D09HR++uknli1bxrJly9i4cSMvv/zyBcUIoLvgFoRW5ZvUbwCILu4NQHhXfydGc24JEd0o8jhJQHU4h7flMeKKOGeHJDhYat2Gelo3DX+UbaBWVru97+53t13tmC0y6YVq0jqzv+N7/DqGeaHVabBaZPqXjueQ5/4mzSOZ0iuUxIwicsvV1WOOmufi6ixmmQ/ut7+gnCPc/sZY3Ny1531cWloaiqIQHx/f4P7AwEBMJnWjz3vuuYdXXnnF9r1rr72Wm2++2fb1Nddcw5w5c7j7bvX1+9BDD7Ft2zYWLlzI+PHjGxVvfQ/Lq6++CkB8fDz79+9vcF57mc1mPvvsM4KCGr/RZP1j/f39CQ0NbfA9WZZZvHgxPj4+ANxwww2sXbvW1kvUVO3jahBsfjv+G25Wd0IrYgDoNcb1hmvqzYibQZ6vumri+KHC8zxaaI1yDqsrTvyDPfk05VMAgj2DifC273X5zc4T1H8Qvml4tCNDtOkYrn5qDspRK7Y2aR5JXT0SRYH1h8VrujXYsWMHycnJ9OzZk5qamgbfGzSo4S7Uhw4dYuTIkQ3uGzlyJIcOHWr0+Q4dOsTQoUMb3Dd8+HA7o24oKirKrmTkfKKjo23JCEBYWBgFBQUX3K7oIWlHZFkmvTSdzqU90aBFo5XonBDg7LDOamLkRP7n/Q0980dRWCCWSrZFJXnqqoWweF9Si9VNFe0tFQ/w7U41MejcwQNvQ/O8rXUdEkLhiQpqikDfTY9ZMbP06FLuH3h/o9vwMbjh56GjrNrCj3tymNgjpFlidTU6vYbb3xjrtHM3RlxcHJIkcfjw4Qb3x8aqu0V7eHicdszZhnbOpr5H7K/DSC0xGfZMcWo0mtOGsxobi5ubW4OvJUlyyMox0UPSjmzK3oRVsRJV0hNQu6FdmUajwRqkbrCnqdFjLHfd2eGC/TIPnEK2qm+IRzsnIqO+oc3tPdeudmRZJjVXnVB3SW/H1B45k55j6jafVKB3tfqJtSnzSHpHqPNIdhxrP/NIJEnCzV3rlNvf532cTUBAABdddBFvv/02VVVN29izR48ebNmypcF9W7ZsISFBnbNX30uRm5tr+/7f53T06NGDHTt2NLhv27ZtTYrnXIKCghrEUV5ezrFjDYch3dzcsFqtDj/32YgeklYiq8TIgZwyjuZXkllURXl1LR293Qn1dSfc34NhsQFEBZw7wfgq9StQILpEnT8SN8j1P531iYuncncJ3uYOHN6RR/9Jjl09ITjPvvXZABi8dCw9+QMAMX4xeOvt2+Rx6e4crHWf9O4a18WxQf6FXq/Du6M7lcU19CgYTlLnjU2aRzKjXwR/pBVRUFGDyWzBoBdvw67i3XffZeTIkQwaNIhnnnmGPn36oNFo2LlzJ6mpqQwcOPCcxz/66KPMnj2b/v37M2nSJH799VeWLl1qWy7s4eHBsGHDePnll4mJiaGgoICnnnqqQRt33nknr776Ko8++ii33XYbSUlJLF682OHPdcKECSxevJjp06fj7+/P/Pnz0WobzrWJjo5m7dq1jBw5End3dzp06ODwOP5KXAkuJKfUyL7sMlJzyzl2ykhGYSXZpdWUV9ciN2KiuJtWItzPg/6dO3D9sM4M+tvW60kFSQQYIzBY1MSltwvPH6k3u/tsPvRZQdeigaQmZ4mEpA3JTVPrywTHe3Gi4gQAV3W7yu52vtiuHhvmZ8DfU++4AM8gqlcgKZty8M4Pgc7qPJIjJUfo1qFbo9u4vF8Ej/+wDwVYuuck1w4Vr2lX0aVLF/bs2cOLL77IvHnzyM7Oxt3dnYSEBB555BHbZNWzufzyy3njjTdYuHAh999/PzExMSxatIhx48bZHvPJJ59w6623MnDgQOLj4/n3v//N5MmTbd/v3LkzS5Ys4cEHH+Stt95iyJAhvPjii9xyyy0Ofa7z5s3j2LFjTJs2DT8/P5577rnTekheffVVHnroIT788EMiIiLOufzYESSlsWuiBIcprjTz1Y5MVh3M52RJNRU1Fmos5x9/kwC9ToOXuw6Dm5ZqswVTrYzZYsV6ht+iu05Drwhfrh8aTcfANO5dfy8DsiYzJPtSPH313PzvUY5/cs3gxpceZGjmdExe5Tz86uXODkdwgMLsCr57Xl1GWHH5Xr7M/wStpGXX9bvQaRr/OUmWZbo99TsWWeGWkdHMn96zuUIGoKzQyBf/UrvPlwz4N4XuOUyLncZLo1+yq52hL64hv7yG4bEBfH37sOYI1WlMJhPHjh1rUPNCaL/seT2IHpIWYjJbeG75IZbvy6W0+uwThyTURMLb4Eawj57uob4MjunIuG5BhPmfPqmqXmZRFT/uyWFL2ikO5VZQWZfkJGWWkpSZjCFkBW4dIa54AACdujdv15sjaYPNkAk6owcWswWd6OJu9ZJXq70aOr2GleW/ANAzoKddyQjAiv15WOq6D+8c23zDNfX8gjzRG7SYTVaGll7MspBP+CPH/nkkw2ID+Dn5JPtzRBViQagn3tmbmcls4dlfD/J9UrbtjRNAI0FUgBd9OvnRJcibnuG+9I30I9C7aZ8oogK8eGBSNx6YpHYdZxZV8eGmDNamFpBbZkLjlYqh1osORnU9eedhrj9/pN7APj0w7zahtxrISD5FtyGh5z9IcGlZB9UJnX7ROk5Vq2XUb+5187kOOaP66qzBPu4E+7bMp/HQOD9OHCimU34ChEBpTSk5lTl2LVW+ZnBnfk4+SWWNhfxyEyEtFLsguDKxyqYZffLHMXo9s4qvd2ZhkRUkYGSXAD6ZM5i0Fy5h/SPjeOPq/vxjYlcm9ghpcjJyJlEBXjw/szeJ8yby/LUSWvcCIot7ISFRoJG55PPtzP/5QKvY5Gt2z9nke6tjm4lbU5wcjXChqspqqK5Qewn3R6jFsvRaPZOiJtndVnJWKQCTE1ouwe41ppP6nyo3PGV1Au4nBz6xq41hXQLQ1W3Y93lipkPjE4TWSiQkzaDCVMtl7/zBgmUHbYnI2G5BbHtyIl/OHcaE7sEtWqFxVY5anbV3oVqw55ibjKzAZ4mZ9Hl2NRsPX3hBm+YU7BlMoa/axV+QKbq4W7v64RqNVmJt7a8ADA0deq5DzmjNwTxq6yZP3TW++Ydr6kX16mjb/XdY5RQA1p9ofGnwetGB6uTytYfEbtaCACIhcbg1B/MY/Pwa9mapfzhjAr3Y9uREPr1liFO6ZWVZZv+p/RhqvQmqUGfzPz6nDyO7qAXRKmss3LRoJ/d/s8ele0s8u1kA8Kj2oyhH7GvTmqXvUSuUakJrqLKq9R7u7X+v3e18/MdxAAK89ET4ezosvvPRaDQE1FVt7ZanVuosrC6kxGRf8b7x8WpNirTCtvl6FuslBLDvdSASEgd65pcUbvssCZNFRgLuGBPL+kfGOXV8eGXmSiyyhbhTA5CQ0Ok19Owfypdzh7HkrhH4eajTiH5OPsmQF9aSmlvutFjP5ZqRsyjwOoGExKYVB5wdjtBEZrOFiiJ1X5BdQasACPQIJCEgwe62dp9QE4CJPYIdF2AjdR1SN0RU7IGubire4gOL7WrjxmHRANRaFfZmtZ1KxPVVPI1Go5MjEVxB/evg79Vdz0RManUAk9nC7A+2sS9b7RXx83Dj67lDSajb2dOZvjj4BQA989Xhmsgef9YmGRjVgaR/XsSdXyax5lABp6rMXPLGZm4fE8O8qfb/gWhOI8JH8In/MoKrOpOWKrZub60ObKj73Umww7AWgCu7XWl3O5uPFtqWyt8zvuU3Xew1JoLEpemgwBDjJLZ6/s7KzJU8OOjBRrcRGeCJp16L0Wzli+0n6BvZela+nYtWq8Xf39+2t4mnp2ejq6UKbYeiKBiNRgoKCvD39z+t6NqZiITkAqUXVjLr3a22pbx9I/34du4wl6i+KMsyKUUp+JgC6FCtrkwZPC2mwWN0Og0f3TSYFftyefC7ZGosMv/bdIzl+/P4+rZhRAa0XFf4+bjFmCAHDFW+VBSb8OkoVia0Noe2qqWqKzsWIEsyGknDbb1us7ud9zakA+Dv6XbeCsXNQW/Q4R/qSWmekYTs0Wzt9js5lTkYzUY89Y2/ZhLCfNmVWcLWtKJmjLbl1e8O64gN14TW7Uy7BZ+N8/9qtmIfbk7npRWptiqqLVGYyR7fHfkOq2KlW6E6zu3uqSMo0ueMj53aJ4zR3QKZs2gHSZmlZJdUM3bheuaMiOapS3u4xDbps0ZPJTEpj47Vofyx4iCXXD/A2SEJdjCbLZTWbaa3M3glAAODB6LX2VddVZZl2z4wl/R03hLw3mM7sfnbI+iKvNFZ3bFoa/gq9Stu69P4BGtq7zB2ZZZwsrQas0VGr3P+deYIkiQRFhZGcHBwi2weJ7gmNze3RvWM1BMJSROYzBau/3gHuzLVcV83rcSb1/Tnkl7Nt7FXU3x56EtQIKFgBACx/c69/bSPwY0ld43k250neOqnA9RaFT7Zcpzvk7J5aWZvpvUNb4mwz2pC5AS+93+GjtWhHNiXwSWIhKQ12bdG3ZFXkWSO+O0G4IGBD9jdzl9r+jx4UeNLtjtar9Hh/PH9ERQZhpZOZkvAr/yU9pNdCcnsQZEsWHYQBfg08RhzR7fcaqGWoNVq7fqDJLRvbSMdb0G/HchlwPNrbMlIbKAXifMmuFwyUmoq5Xj5cQKMEXiZ/YHTh2vO5qrBndn5z0kMi1Xnm1SYLNz79R4mvrqRgyedt+xWo9GgdFJ3dXWv8MFUKXb/bU1SE/MAyAtIR5FkOho60ieoj93tfFK3uqZTB48WK4Z2JhqdhpAYXwB6nFST/syKTLs23PM26OgSpA45fVW3J48gtFciIWmk/HIT097czF1f7MZoVrdjnjMimnWPjHNoQTNHeTf5XQB65KvbpHv56+2ac+Hvqeeb24ez5K4RhPmpx6UXVjL1zT+Y9d4WckqdM4N+6uhxVOiL0SpuJK484pQYBPuZjRbKCqsB2BWsrq65Iu4Ku9upNFk4kq8mpVcPjnRcgE004OJoAHSVnvhb1R7IF7e/aFcb1w+LAuDYKSOlRpFkC+2XSEjOQ5ZlFvyawvCX1nLgpLokNsTXnR/vHsEzM1xnvsjf/Xb8NyRFotspdf5IU8utD4zqQOK8iTw7oyeeerXrNSmzlFEvr+f2z3ZRabI4LObGmBE3nawOh9Q4dqW26LmFptu9Rv30b9GYyfE9igYNd/S9w+523tuYjoK69cJtoxrX49ecYvoEotOrb6NTiq8FYEfuDozmxifsNwyNQlu3CuWtdWmOD1IQWgmRkJzDmoN59H9uNZ9sOY6sgE4j8eBFXdn+5CT6d3bdJXoHiw5SWlNKp9Lu6K3qhnyDpkRfUJs3jYjmwDOTuWtsF9y0Egqw6mA+/Ras4pXfUlusqJpGo6E2rBQAXZkXJqOYMNcaHNmmDtccC9wHkkKfoD4YdPb3LC5JUuehJIT5usRKNoDIBHVoM/BEFzRokJFZmLSw0cfrdBr6RqolAn5OPtksMQpCayASkjM4VWli+lubue2zJMqq1R6AoTEd2fXUJO6f6LxJdI311p63AOibNx6AgAhv9J4X/uat0Wh4/JLu7H96MjP7RyBJYJEV3tuYTr8Fq1mVknfB52iMcaMGUakvwU12Z/0PokiaqzNVmqkoVouh7Q/eBMD9A+63u52sIiN55TUA3D421nEBXqCh09VYLGaFUfrJAPyS/otdSfrd49TJrKcqa0hvo5VbBeF8RELyN59uPc6wF9exP0cdngnycefb24fx7R3D8fe0b3miM8iyzPbc7RhqvYgo7QrAoKnRDj2HQa/jtav6sW3eRAZG+QNQbrJw++dJzHx3C8XNPNl0dsKVHA7eAUBKkpgI6OqSflc3j6vRGSnwzsRP78eg0EF2t/PqanXOkF6nYVpv15lEHhDhjcFbrUI5/MQMAGqsNXyd+nWj25iUEIrBTX07fm21mBsltE8iIalTajRz6ZubefqXFCyyglaCByZ1Zec/JzE0NsDZ4TXasoxl1Mq1dCscgoQGnV5D3MDmKa0d4mtgyV0j+eHO4QR6uwOw50Qpg19cwxtrm+9NVafR4d3bglWy4FHjQ8oWUbnVlR3dpW4edzhoB0gwI25Gk9pZU7cJ3YguAS5RF+evug5SS8mXH68l1lutHPvRgY/samNUXCAA61NFMTGhfXKtq9pJliRlMfiFNaTUTVqNCfRk0+PjeWCS6w/P/N3ilMWgQJ/csQDE9D137RFHGBStDmfdPa4LWgmsssJrq48yYeEGckurm+Wcj054gPSAZABWL9/VLOcQLlx5UTVVpWqP2ZHAnUhI3NvX/o301h7Kp7JGHT59cFJXh8boCMMujwUJFAWuLLsLgFPVp9iRt6PRbTxUV1Olymxla9qpZolTEFxZu05IzBaZGz7ezsPf76PWqqCp6xVZ/8j4Ft091FGKqos4WnqUkMpovM3qpNvhM1uu0NJjU7qTOG8iPcPU2gwZp6oY9cp6Ptyc7vBzRfpEUhp5HABNiQfFuVUOP4dw4RKXqr/7cvdTnPLKJiEgwa7S6vX+s/IwoA6huuKeL3qDjvCu/gAY97rj767+/7VdrzW6jYRwP/w91aGf19cedXSIguDy2m1CsvFwAQOeW8Xmo+onkVBfd9Y+NLZV9orU+2/SfwHolTcaAN9AQ4vv9xLsa2D5/aOZPy0BrUbCqii8sDyVy9/Zgsns2CXCN0y5ggKvE2gVHcu+3u7QtgXHOLZPvb72h24CCe7pd4/dbeSXm0jNU2uP3Dwy2pHhOdSo2WrPTW2Nlct01wOQUpRCpbnxk1Qv6xcBwM5jxeSXmxwfpCC4sHaXkBRXmrny/a3ctGgnlTVqgbNrBkey9YkJxAR5Ozm6C7P6+Gp0Vj2xRf0A6DvReYWjbhkVw9YnJtCl7meanFXK4BfXciDHcZVeJ0VN4lhIMgCnMoxYLC2z9FhonCM78rDWysjIHAnaibebN6M7jba7nReWq3Vn3LQSt49yndU1fxfUycf2ASB4by80kgYFhdd2N76XZN6UeHQadVn9Yz/sa6ZIBcE1tZuERJZlXvktlcEvrmHncbXsewdPN769fRgvzerjcpPk7LUiYwXV1mq6nBqAVtGh0Ur0Ghvh1JhCfA2sfXgst9YVsKowWZj+1h+8v8FxQzj9RkVTravE3eLJph9THNaucOHqV9dkdjhAjZuRS2IusbsNWZb5vW45+YT4YHQuvvncwKlq1dWKwhqGeanJ1/KM5Y0+3qDXMWtgJwA2HSmkQPSSCO2Ia1/dDmCxyLy04hAJT6/kvY3pWGV1rsgdY2JIeqp1raA5l//t+x8oEoNzpgDQqXsHl0my/jUtgc9vHYK7ToMCvPx7Kjd9ssMhxdTuHXI3RwPVSa27t4oql66iutJM8Ul1Xs+B0M1ISPyj/z/sbufTxEzMdT1fT01PcGiMzaHHiDBb5dbRx68EoKq2itWZqxvdxrPTE2y9JI8vEb0kQvvhGn+xmoHZIvP0LykkPLOS/23KwFSrvqkN6OzPtnkTmTc1wWX+YF+oAmMBGWUZxBT3xrtGnfA37rruTo6qodFdg9j+5ERiAtUJjRuPFDL85XUXPE6u1+lx71OtLgGu9mPHGlHDwRVs/zkDgEp9KTl+RxkSOgR/g7/d7XywSW2nS5AXkR1cf6K5RqMhfqi6TUN5mpUQd7VeyjvJ7zS6DYNex8wBau/mhsOFzV7XRxBcRdv4i/wXFaZaHvo2mYT5v/Pp1uO2T1eDojqw9uGxLL17pFN3CG0O/036LygwOGsqAGFxfi0+mbUx/D31rH1oLJfXTdzLL69h1CvrWHeBdReenfokRwOTAFj7++4LjlO4cPW1Rw6GbAFJ4ekRT9vdxsGTZeSWqQnrg61osvmImXG2JcAzim8BIL00nQJj41/nz87oibZ+LsmSvc0UqSC4ljaTkFgsMo8v2UffZ1exdE8OFllBQi2itPnx8fxw1wjbBMu2RJZl1mSuIbK0Bx2r1U9j429wrd6Rv9JoNLx+dT9euqI3GglqrQq3LN7Joz/sbfIQTgdDBwIGSsjI+FYGs3mjeAN3phMpRZirrSjIHA7aQULHBCJ97J9g/fQv6pwgb3ct0/qGOzrMZqP31BHZQ93fxi0lBD1q0cBXd73a6DY89Tou76c+57WpBaKXRGgX2kRC8vHmDHo9u5Jvd2YhK+pOoBf1CGb7kxP5au6wVtHV21Rfpn5JjaWGgdkXAxDU2YcOIV5Ojur8rhnSmRX/GI2fh1p34ftd2Yz5T9MLqT014xFOdFD/gK1ZIXpJnGnrj+qk5RP+h6hyL+WpYU/Z3caBnDLb5PPrhnZ2aHwtYeJNPQCQrQoXF18HwJrMNVjkxi99f3ZGL7WXRIG5n+9sljgFwZW06oRkb1YJQ19Yw3PLD9nmiIyLD2LPvy7iw5sGt7mhmb+TZZm397xNeHkcoZXqShZX7h35u+5hvuz85yRGd1VLZmeXVDP63+v5eHOG3W3pNDq6jFQnKAeVRfLrxnUOjVVonJNppRRlq3U39odtpLNPZ3oH9ba7nfu+3gOAl17L41Naz2u6npefO517qr0kEWl9kBQNZtnMe3vfa3Qb3gYdt9WtUEvKLGVtXel8QWirWmVCYrbI3PHZLi57Zyv5Ferun91CvFn14BgW3zwEv1awCZ4jvLHnDYwWo613pGO4F0GRPk6Oyj56nYbPbx3KCzN7oZUkLLLCc8sPMfHVjeSUGu1q685p15Pnm46Ehj9WiiXAzrB28UEAsn2PkO13mMcGP2Z3G78dyOXYKXWFzpOX9mi1k88n3Kj2kmCVmHBKXXHzxcEv7BqafHxKPAFe6vvZg98mO2RlmiC4qlZ3pX+3K4u+z65i5UH104KnXsu71w5g1YNj6RbSuv4YXwiTxcTnBz8nurg3EeXqhL9x17e+T5L1rhsaxabHxxEXrM7zSS+sZPQr63nlt1S72uk3Vv1EGVHSnTdWfOjwOIWzS99TQPkpdRLqjs6/EugZyNjIsXa38+TS/YBaPfm6oVEOjbElefm507mX2kvSNWMYGlmD0WLkq9SvGt2GRqPh3esGAOqO2v/6WSTaQtvVahKStPwKJizcwGM/7KO6Vq2welm/cPbNn8zUPq6zFXlLeWHbC+irPRmXdg0AwVE+hMX6OTmqCxPh78mah8Yyf5pah0FW4L2N6Qx6fjW7jhc3qo1Zl06ixDsXraIlf4NMVnlWM0ct1Nv4tbrkOr1jMgU+J3hy6JN2t/HO+jRKjLUALLyyr0Pjc4aJNyaABMgaRp26HKirGWSHobEBtmHNr3acIKvIvp5DQWgtXD4hqTRZuOuLJCa9tomMum7czh09WHH/KN64ur/LV25sDuXmcn5N/5WJaTdgsHqh02u47MH+zg7LYW4ZFcOupyYxoLM/AKcqzfzf+4nc9MkOjI3YD2fWjaOxShYiyrvy3AeNr/8gNN2BTTlUl5uRkdnZeTm9AntxUdRFdrVhMlt4s25TuZ5hvozq2vw7VTc3T189UT3VuU09jo3Grdad0ppSlmUss6ud964biJtWneB686digqvQNrnsX3OT2cKj3++l77Or+O2AWjraoNPw/GU92fTYBBLCWndvwIWYt2kefbMnEF7eFVC45M7e6A06Z4flUP6eepbePZKPbhyIT91z23ikkP4LVvP1jhPnPLZHn85ootVPkd2OD+etTY2fSCjYT7bIJC5Vq+QeDt5GhWcRb0942+52rv1oOzV1dYPevrbtJNgT5/RA0khIsoaLjt0EwOtJr9vVhrdBxxN1k3vTCip5Z72oSiy0PS6XkFSYann0h730emYV3ydlY1XUUu/T+4ax75mLuX54tLNDdKplGctIPXSCQVnqviA9RoTTOaFtlL8/k0kJoeydfxFXDY5EAmosMvOW7mfya+ee9Hr7/dMw6svwsPhwdFUZWRVi6KY5yBaZrxZsx2yyYpFq2dXpd27tfSsBHva9Jv+76jC7T5QCcNOI6Fa/0eVfeXjrGXFFFwA6F/UkvKwr+cZ8NmVvsqudW0fH0j1UnSf36qrDZBZVOTxWQXAmSVEUxdlBgDpHZP4vKSRmFFEfkQRM6B7Mf/6vLx2928fKmXM5VnaMG7+9len778Or1g+vjnpufH5Eq12FYK/0wkpuWbSTzGI1EdFIcOPwaOZPO/NKjO1rjrDrh2wAtvb+ls/veq/d/KxagsUi8/Uz2yg/ZUJBZl3cl5R2zmTdbPuWXG/PKOKqD7YB0D3Uh98fGNMc4Trd189upzi3CqNbOV/1fw6dXsPa2Wvx1fs2uo3iSjNDX1pDrVUh3M/A1nkTmzFiQWhZTk9IvtuVxTvr0mx/ZED9QzOmWxCvzOpDSBuvJdJYJouJqV9cxoTkOXQwhSDpFG5YMNIlS8Q3tw83pfPK74exyOpL19/Tjbeu6c/oM8w5ePNfv6It9KLMvZC8i7bx5rTGbwUvnJ3ZbOHrZ7ZTWVyDgsyarp+RHriHL6d+SZ+gPo1up8JUy5AX1lJda8VTr2XHk5PwbmPDj/UqS0189uRWFBkOhGzmj9gfiPKNYtlM++aT/LAri0d+UDfdu3F4FAsu69Uc4QpCi3NKQlJqNPPiikP8ujfXtmIGwMNNy5WDOvHEJd3x1LfNN6Wmum7pjXTZOo6QymhkjZXZjw0hJLr9zqMpM5q584vdJGYU2e7rG+nH21cPIDLgz8q85UXVfDx/HXqrB+kdk+k+24fb+811RshthslYy9fPbMdYbkZBYVW3TzgWsI+ZcTNZMHJBo9sprjRz6VubyS0zIQE/3DWCgVEdmi9wF7BrxTG2/3IMBYXf4z8ks2MK02Kn8dLol+xq55oPttle+9/ePqzN7FoutG8tmpDsOl7M88sPsTerlL+etHNHD+4ZH8eVAzuJLvUzeGzdE7AqgqjSnlglC9PvGkBMn0Bnh+US/jhayH1f77EtFa0f5vvv7L62Ankpm7NZ9+UhNGjZGvUj99x0DSPCRzgx6tarstTENwt2UGO0oKCwutsiMgL2EukTyYorVjS6nW3pRdy0aIdtEusjk7tx74SuzRW2S/lifiJlBdUoKGyK/ZZDIYksGLGAmV1nNroNk9nCgOfXYDRb0UiwaM5gxsYHN2PUgtD8WiQh+XbnCV5bfYS88hrbfVpJYlTXQOZPT2iTm945ygPLH8awKZbIsh7IkpXx1yTQa0yEs8NyKbIs88bao7y3IQOzVf0Dp5Vgcs9QXri8Nx299fzybhJZ+8qwShZW9HqfRTe9Q5h3+6tfcyFK8qv47oWdWMzqz3hDzy9I9d2Jm8aN1f+3utETWd9Ye4TXVqvLeyUJnprag1tHxzZb3K7GbLbw3XM7KStU923aHbGanZEruHfAPdze5/ZGt7Mvu5RZ722l1qogSfDudQO4pJd4TQutV7MlJBaLzH/XHOGzxONU1vw5LOPv4cZ1w6K4f2JX9O2whog97vv+YYIS+xNgDMcqWRg6NY6h09vPG7e9zBaZf/60nyVJ2ch/mRg9qmsgz1/ek99f2Y6lXKLCvYiV/T/g12t/xFsvkuHGyD5cwq9vJiNb1R/s7kE/scNtPQCvjXuNSVGTztvGscJKbvssifRCda8bT72Wr+cOpW9k2x6mORNZlvn59WROHikF1GJyW2KWEBEcwscXf0wHQ+N+JkfyK5jx1h+YLDIS8J//68P/DbJ/Z2VBcAUOT0iMZgvP/nqQpbuzqbX+2XR0gCfzLunBxb1CHXm6NimnMof53/6b+ORxeNX6YdaamHJ9P3oMbz1bsDtTmdHMv35OYfn+XKzyn6/BPoHeTDhWg5tVR6FXFtv7/8DPVy9BrxMruM5l12/H2f6zuuGhopFZ3vcdsg1qHYzLu1zOc6OeO+fxFovMY0v28eOeHNtQbbcQb5bcNQIfg1tzhu7y1n12iINbTyIhUaupYXfEag6F/8F9Q+7lxp43NqqNrCIjF7+xCaNZ/eDXp5Mf710/gAj/trvLudA2OSwhyS2tZv7PB1iXWsBf8hAGdPbn+ct7kRDefidgNlZaSRrPr3kZz/1R9CgYhgYt1foKrntgXKsvC+8MJrOF55cf4rukbMx1cxUCLBLXVukwKDoKvE5waMhKvrvqaydH6ppkWWbZ2/vIOqiW7a91r+bbnq9Q6V4CwOz42fxr2L/Oenx+uYkXlh9iZUqeba6IXqfhn1N7cNOI6GaPv7U4lJjL5m+OUFvXk1zhXsSuTivJDTvMHf3ncn2P6887t66g3MSlb/1BYd1moxIwo184L1zeu82uWhLaHockJDPe/oN92WV/NirBmK5BvHhFL5Gln4fRYmTxgcUsP/Q7ARld6HdyEu5WDwCqfUu544mp7XJpryPJssx7GzP4cHMGpcZaAq0SV1Vp8ZTdKPDK5NlXb3Z2iC5FlmWSV2exe2UmNUa1VH9a4G7WdfkCWWNFr3HnkX4vkeA/iI6e7nTw0uNt0JFVYmRr2il2nyhl1/Fi0gsbFu6a1COYN6/pL1bQnYEsy2z+7igHNmWDLAFQoS9hb/g6ssL3c22fq7m9z+3oNOf+2b2x9ghvr0s7rXd65oAIbh0ZK5ITwaU5JCGJfmI5AG5aiam9w1gwo6dthYNwunJzOV8c/ILfM37HlKOhW8EQ4or64ya7A2DWVzNmegIDL4pxcqRtz8oDefx75WEq8qqYXaXBQ9Zzz/sTnB2W01ksFpJTUtm+6TCmI24YatW5NVbJwh8xP3AoJBFFkagtHUJN/jRQGjfU4qaVGB8fzD8v7UFUgFdzPoU2obrSzJrFB8lMOYWkqL0iNVojJ/wPkeefTtfe4Tw07r5zzjExmi08/N1eVqbkIf/t3d3f0434EB/GdAtifHwQ3UN9xMpGwWU4JCHp88xKbh4ZzX3ju7bLze7+SrbIVJWbqSg1Ul5WTXlZJceKMjlRms2pqiLKqsqQTDp8awLpYAzDx/znG4tVV0uvYZ0Zd3U8mnb+c2xuWUVG/v3pHqLTKnj43SnODqfZmCwmCqsLSSs+xt7co2Tm5VFSWI1cLqGrdsO9xgN/kz8B1SF4WP6c4FurqSE1eDv7QjdRIvtgKe+LpaIXivXcSYVGAh+DjlBfD64aHMmcEVHiD14TmIy1bPr6CEeScpHkP39+MjIlHnlUeBRR61mNd6Aev46edAz2oVN4CJ06hhHoEUiARwCyrOGLbZl8s/MERwsqOds7vbtOg5+HG8E+7kQHetEtxIe4IG9C/AyE+xkI8nZv9+/rQstwSELyzyfs2067NZDq/m3ww1HqvqEAioRG0aKRtWgVLXqLB3qrAb3VgGTHFkEyMn5BHvSbGEWvMeHizbuFpW7PpftQ11kq+eBjH9CYC1Ky/UdBQUFSX5RIkvp/CdDJOtxkN3SyHoPFC49ab7TK2bvsrZKVYo98DvseZ79HKdW1ISimTgR5BNGnkx8X9QylV4QvAV7udPDUo9dpqDRZKKkyc6qqhlBfA2H+Hhf+QxBsLBaZ1K257Es8zsmcU3iYfc75+FqNGaumFoumFqtUi1VjUW+SBatGRgYsgBWQ/3ZsY/8QSA3+Vf58LQKv/bvxy5YF4e8cMqAYXto+ChrZwypZqdWYqNXWYNGakSUZJNBoJDr4+NK1UzShMf7E9g/C21/MEXEWV0pGAOLK45r9HDWaGip1Rip1Jqp0tVToZCo93dF0CCXApzt9AgdyXYQfA6M6nDfB8Dbo8DboGlTHFRxHp9PQa0yErfZQ/vEytu3cz+H041SXWnAzeaC3GHC3eKJBi5usx00Ww+VC6+SQhCQv5pAjmnE50t+/ljRo0KCRJLQ6LXq9DoPegIeHHi8fA95+HnTo4IVvgDeeXnr0Oj3uWncCDYGi50NolINhB5Ek9bVX/4pRzvSvAiChqX9NokUr6dBJbugkN9w0ejwMBrw9vPD39iEsxI+ozr6ERfpi8GzfS21bs5BoPy6LHgWManC/LMtUFJmoKDFRUl7OqfIiSivLqTBWUlVdTbWpBrO5FqtsxSrLWK0yoNS9ppSzDufIioJVadh7oihglcGqqDdZUe9Te1zEfCyh6Zy+uZ4gCIIgCIL42C4IgiAIgtOJhEQQBEEQBKcTCYkgCIIgCE4nEhJBEARBEJxOJCSCIAiCIDidSEgEQRAEQXA6kZAIgiAIguB0IiERBEEQBMHpREIiCIIgCILTXXDpeEVRqKiocEQsguA0Pj4+SNLfNwtoWeJaEtoCV7iWhNbpghOSU6dOERwc7IhYBMFpCgoKCAoKcmoM4loS2gJXuJaE1umCExK9Xt1ZMisrC19f3wsOqLmVl5cTGRkp4m0mrTXe+texM4lrqXmJeJuXK11LQut0wQlJfdecr69vq7ho6ol4m1dri9cVupjFtdQyRLzNyxWuJaF1EpNaBUEQBEFwOpGQCIIgCILgdBeckLi7u/P000/j7u7uiHianYi3eYl420YsjSHibV4iXqG9kRRFUZwdhCAIgiAI7ZsYshEEQRAEwelEQiIIgiAIgtOJhEQQBEEQBKcTCYkgCIIgCE53wQnJnDlzkCSpwW3KlCmOiK1Jamtrefzxx+nduzdeXl6Eh4dz4403cvLkyXMe98wzz5z2PLp3795CUZ/ZO++8Q3R0NAaDgaFDh7Jjxw6nxvPSSy8xePBgfHx8CA4O5vLLL+fw4cPnPGbx4sWn/VwNBkMLRXx2rvj7FtdS83Kl60lcS4Jwuguu1AowZcoUFi1aZPvamcu+jEYju3fv5l//+hd9+/alpKSE+++/nxkzZrBr165zHtuzZ0/WrFlj+1qnc8iPp0m+/fZbHnroId5//32GDh3K66+/zsUXX8zhw4edtt/Jxo0bueeeexg8eDAWi4Unn3ySyZMnc/DgQby8vM56nK+vb4M3W1ep5OhKv+964lpqHq52PYlrSRBO55BXjbu7O6GhoY5o6oL5+fmxevXqBve9/fbbDBkyhBMnTtC5c+ezHqvT6Vzmefz3v/9l7ty53HzzzQC8//77LF++nE8++YQnnnjCKTH9/vvvDb5evHgxwcHBJCUlMWbMmLMeJ0mSy/xc/8qVft/1xLXUPFztehLXkiCcziFzSDZs2EBwcDDx8fHcddddFBUVOaJZhykrK0OSJPz9/c/5uKNHjxIeHk5sbCzXXXcdJ06caJkA/8ZsNpOUlMSkSZNs92k0GiZNmkRiYqJTYjqTsrIyADp27HjOx1VWVhIVFUVkZCSXXXYZKSkpLRHeebnK7/uvxLXkeK3hehLXkiA4oDDaN998g6enJzExMaSnp/Pkk0/i7e1NYmIiWq3WUXE2mclkYuTIkXTv3p0vv/zyrI/77bffqKysJD4+ntzcXJ599llycnI4cOAAPj4+LRgxnDx5koiICLZu3crw4cNt9z/22GNs3LiR7du3t2g8ZyLLMjNmzKC0tJQ//vjjrI9LTEzk6NGj9OnTh7KyMhYuXMimTZtISUmhU6dOLRhxQ670+64nrqXm4erXk7iWBKGOYocvvvhC8fLyst02bdp02mPS09MVQFmzZo09TTfZuWIym83K9OnTlf79+ytlZWV2tVtSUqL4+voqH330kaNDPq+cnBwFULZu3drg/kcffVQZMmRIi8dzJnfeeacSFRWlZGVl2XWc2WxWunTpojz11FPNFFnTtPTvW1xLLcfVrydxLQmCyq45JDNmzGDo0KG2ryMiIk57TGxsLIGBgaSlpTFx4sQLy5YuIKba2lpmz55NZmYm69ats3v7bn9/f7p160ZaWppD422MwMBAtFot+fn5De7Pz893iXHae++9l2XLlrFp0ya7P5m5ubnRv39/p/xcz6Wlf9/iWmo5rnw9iWtJEP5k1xwSHx8f4uLibDcPD4/THpOdnU1RURFhYWEOC9LemOrfQI8ePcqaNWsICAiwu93KykrS09Nb7Hn8lV6vZ+DAgaxdu9Z2nyzLrF27tkGXc0tTFIV7772XH3/8kXXr1hETE2N3G1arlf379zvl53ouLf37FtdSy3HF60lcS4JwBhfSvVJRUaE88sgjSmJionLs2DFlzZo1yoABA5SuXbsqJpPJMX04djKbzcqMGTOUTp06KcnJyUpubq7tVlNTY3vchAkTlLfeesv29cMPP6xs2LBBOXbsmLJlyxZl0qRJSmBgoFJQUOCMp6F88803iru7u7J48WLl4MGDyu233674+/sreXl5TolHURTlrrvuUvz8/JQNGzY0+LkajUbbY2644QbliSeesH397LPPKitXrlTS09OVpKQk5eqrr1YMBoOSkpLijKdg42q/b3EtNS9Xu57EtSQIp7ughMRoNCqTJ09WgoKCFDc3NyUqKkqZO3euU/9oHjt2TAHOeFu/fr3tcVFRUcrTTz9t+/qqq65SwsLCFL1er0RERChXXXWVkpaW1vJP4C/eeustpXPnzoper1eGDBmibNu2zanxnO3numjRIttjxo4dq9x00022rx944AHbcwgJCVGmTp2q7N69u+WD/xtX+32La6n5udL1JK4lQTjdBa+yEQRBEARBuFBiLxtBEARBEJxOJCSCIAiCIDidSEgEQRAEQXA6kZAIgiAIguB0IiERBEEQBMHpREIiCIIgCILTiYREEARBEASnEwmJIAiCIAhOJxKSFjRu3DgeeOAB29fR0dG8/vrrTotHEFozcT0JQtsiEhIn2rlzJ7fffrvD233hhRcYMWIEnp6e+Pv7O7x9QXBFzXE9HT9+nFtvvZWYmBg8PDzo0qULTz/9NGaz2aHnEQQBdM4OoD0LCgpqlnbNZjNXXnklw4cP5+OPP26WcwiCq2mO6yk1NRVZlvnf//5HXFwcBw4cYO7cuVRVVbFw4UKHn08Q2jPRQ9JMqqqquPHGG/H29iYsLIxXX331tMf8vYtZkiT+97//MW3aNDw9PenRoweJiYmkpaUxbtw4vLy8GDFiBOnp6ec897PPPsuDDz5I7969Hf20BMEpnHU9TZkyhUWLFjF58mRiY2OZMWMGjzzyCEuXLm2OpykI7ZpISJrJo48+ysaNG/n5559ZtWoVGzZsYPfu3ec97rnnnuPGG28kOTmZ7t27c+2113LHHXcwb948du3ahaIo3HvvvS3wDATBdbjS9VRWVkbHjh2b+lQEQTgb52423DZVVFQoer1e+e6772z3FRUVKR4eHsr9999vuy8qKkp57bXXbF8DylNPPWX7OjExUQGUjz/+2Hbf119/rRgMhkbFsWjRIsXPz6/Jz0MQXIGrXE+KoihHjx5VfH19lQ8++KBpT0YQhLMSPSTNID09HbPZzNChQ233dezYkfj4+PMe26dPH9v/Q0JCABoMvYSEhGAymSgvL3dgxILgulzlesrJyWHKlClceeWVzJ07156nIAhCI4iExMW4ubnZ/i9J0lnvk2W5ZQMThFbIUdfTyZMnGT9+PCNGjOCDDz5ohkgFQRAJSTPo0qULbm5ubN++3XZfSUkJR44ccWJUgtA6Oft6ysnJYdy4cQwcOJBFixah0Yi3TUFoDmLZbzPw9vbm1ltv5dFHHyUgIIDg4GD++c9/ttgb2YkTJyguLubEiRNYrVaSk5MBiIuLw9vbu0ViEARHceb1VJ+MREVFsXDhQgoLC23fCw0NbfbzC0J7IhKSZvKf//yHyspKpk+fjo+PDw8//DBlZWUtcu758+fz6aef2r7u378/AOvXr2fcuHEtEoMgOJKzrqfVq1eTlpZGWloanTp1avA9RVGa/fyC0J5IiriqBEEQBEFwMjEYKgiCIAiC04mERBAEQRAEpxMJiSAIgiAITicSEkEQBEEQnE4kJIIgCIIgOJ1ISARBEARBcDqRkAiCIAiC4HQiIREEQRAEwelEQiIIgiAIgtOJhEQQBEEQBKcTCYkgCIIgCE73/+mQXcS064zCAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = marginal_plot(\n", + " [theta_inferred_sir_2, theta_inferred_sir_32, gt_samples], \n", + " limits=[[-5, 5], [-5, 5]], \n", + " figsize=(5, 1.5),\n", + " diag=\"kde\", # smooth histogram\n", + ")\n", + "ax[0][1].legend([\"NPE\", \"NPE-IS\", \"Groud Truth\"], loc=\"upper right\", bbox_to_anchor=[1.8, 1.0, 0.0, 0.0])" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "id": "a5c4f6d0-d32c-46f9-b6f8-5a772b332d31", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 83, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = marginal_plot(\n", + " [gt_samples, theta_inferred], \n", + " limits=[[-5, 5], [-5, 5]], \n", + " weights=[None, w],\n", + " figsize=(5, 1.5),\n", + " diag=\"kde\", # smooth histogram\n", + ")\n", + "ax[0][1].legend([\"NPE\", \"Corrected\"], loc=\"upper right\", bbox_to_anchor=[1.8, 1.0, 0.0, 0.0])" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "id": "2ad91ac5-a90d-4814-8660-6164123bcf6e", + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'oversampling_factor' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[90], line 6\u001b[0m\n\u001b[1;32m 1\u001b[0m corrected_posterior \u001b[38;5;241m=\u001b[39m ImportanceSamplingPosterior(\n\u001b[1;32m 2\u001b[0m potential_fn\u001b[38;5;241m=\u001b[39mlog_prob_fn,\n\u001b[1;32m 3\u001b[0m proposal\u001b[38;5;241m=\u001b[39mposterior\u001b[38;5;241m.\u001b[39mset_default_x(observation),\n\u001b[1;32m 4\u001b[0m method\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msir\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 5\u001b[0m )\n\u001b[0;32m----> 6\u001b[0m corrected_samples \u001b[38;5;241m=\u001b[39m corrected_posterior\u001b[38;5;241m.\u001b[39msample((\u001b[38;5;28mlen\u001b[39m(theta_inferred),), oversampling_factor\u001b[38;5;241m=\u001b[39m\u001b[43moversampling_factor\u001b[49m)\n\u001b[1;32m 7\u001b[0m corrected_samples_for_all_observations\u001b[38;5;241m.\u001b[39mappend(corrected_samples)\n", + "\u001b[0;31mNameError\u001b[0m: name 'oversampling_factor' is not defined" + ] + } + ], + "source": [ + " corrected_posterior = ImportanceSamplingPosterior(\n", + " potential_fn=log_prob_fn,\n", + " proposal=posterior.set_default_x(observation),\n", + " method=\"sir\",\n", + " )\n", + " theta = corrected_posterior.sample((len(theta_inferred),), oversampling_factor=oversampling_factor)\n", + " corrected_samples_for_all_observations.append(corrected_samples)" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "id": "1c0fc1a4-bc5c-49db-ac8f-8819b07aed0a", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGdCAYAAADAAnMpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAbnklEQVR4nO3df2xd9Xn48ccOsw1NYpIGnCY1GAIaYhXJFsdu2Biwes26jI1pRR6qiOVVaO0CAlmdSLo2Lqsquy3rPEFEGFtB6hol3Y+ANLoUZJFWVd2GJovK6BIN1MghmZ1kCDs1kl353u8f/dbIJQm+ie0nvnm9pCvh43PufY6S4Lc+PvfcimKxWAwAgCSV2QMAABc3MQIApBIjAEAqMQIApBIjAEAqMQIApBIjAEAqMQIApLoke4CpKBQKcezYsViwYEFUVFRkjwMATEGxWIxTp07FsmXLorLyzOsfcyJGjh07FvX19dljAADn4MiRI/H+97//jN+fEzGyYMGCiPj5ySxcuDB5GgBgKoaHh6O+vn7i5/iZzIkY+cWvZhYuXChGAGCOebdLLFzACgCkEiMAQCoxAgCkEiMAQCoxAgCkEiMAQCoxAgCkEiMAQCoxAgCkEiMAQCoxAgCkEiMAQCoxAgCkEiMAQKpLsgcA4OwaNj33rvsc7l4/C5PAzLAyAgCkEiMAQCoxAgCkEiMAQCoxAgCkEiMAQCoxAgCkEiMAQCoxAgCkEiMAQCoxAgCkEiMAQCoxAgCkEiMAQCoxAgCkEiMAQCoxAgCkEiMAQCoxAgCkEiMAQCoxAgCkEiMAQKpLsgcAuJg1bHouewRIZ2UEAEglRgCAVGIEAEglRgCAVGIEAEglRgCAVGIEAEglRgCAVGIEAEh1TjGydevWaGhoiJqammhubo69e/dO6bgdO3ZERUVF3HnnnefysgBAGSo5Rnbu3BkdHR3R2dkZ+/fvj5UrV8a6devi+PHjZz3u8OHD8alPfSpuueWWcx4WACg/JcfIV77ylbj33nujvb09brzxxti2bVtcdtll8dWvfvWMx4yPj8fHPvaxePjhh+Paa689r4EBgPJSUoyMjY3Fvn37oqWl5e0nqKyMlpaW6OvrO+Nxf/3Xfx1XXnllfPzjH5/S64yOjsbw8PCkBwBQnkqKkZMnT8b4+HjU1dVN2l5XVxcDAwOnPea73/1u/OM//mM8+eSTU36drq6uqK2tnXjU19eXMiYAMIfM6LtpTp06Fffcc088+eSTsWTJkikft3nz5hgaGpp4HDlyZAanBAAyXVLKzkuWLIl58+bF4ODgpO2Dg4OxdOnSd+z/2muvxeHDh+OOO+6Y2FYoFH7+wpdcEocOHYoVK1a847jq6uqorq4uZTQAYI4qKUaqqqpi9erV0dvbO/H23EKhEL29vXHfffe9Y/8bbrghXn755UnbPvOZz8SpU6fi7/7u7/z6BWAWNWx67l33Ody9fhYmgclKipGIiI6Ojmhra4vGxsZoamqKnp6eGBkZifb29oiI2LBhQyxfvjy6urqipqYmPvCBD0w6/vLLL4+IeMd2AODiVHKMtLa2xokTJ2LLli0xMDAQq1atit27d09c1Nrf3x+VlW7sCgBMTckxEhFx3333nfbXMhERe/bsOeuxTz/99Lm8JABQpixhAACpxAgAkEqMAACpxAgAkEqMAACpxAgAkOqc3toLwIVlKndXhQuVlREAIJUYAQBSiREAIJUYAQBSiREAIJUYAQBSiREAIJUYAQBSiREAIJUYAQBSiREAIJXPpgFgwlQ+4+Zw9/pZmISLiZURACCVGAEAUokRACCVGAEAUrmAFWCGTOViUMDKCACQTIwAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQ6pLsAQDmooZNz2WPAGXDyggAkMrKCAAlmcqq0OHu9bMwCeXCyggAkEqMAACpxAgAkMo1IwBMO9eVUAorIwBAKjECAKQSIwBAKjECAKQSIwBAKjECAKQ6pxjZunVrNDQ0RE1NTTQ3N8fevXvPuO+//du/RWNjY1x++eXxnve8J1atWhVf+9rXznlgAKC8lBwjO3fujI6Ojujs7Iz9+/fHypUrY926dXH8+PHT7r948eL4q7/6q+jr64sf/ehH0d7eHu3t7fGtb33rvIcHAOa+imKxWCzlgObm5lizZk089thjERFRKBSivr4+7r///ti0adOUnuM3fuM3Yv369fH5z39+SvsPDw9HbW1tDA0NxcKFC0sZF2BGTOWmXpyd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bt26Nb785S/HwMBArFy5Mh599NFoamo64/7//M//HJ/97Gfj8OHDcf3118cXv/jF+P3f//1zHhpmizunAsy8kmNk586d0dHREdu2bYvm5ubo6emJdevWxaFDh+LKK698x/7f+9734u67746urq74gz/4g9i+fXvceeedsX///vjABz4wLScBv0xEAMwdFcVisVjKAc3NzbFmzZp47LHHIiKiUChEfX193H///bFp06Z37N/a2hojIyPx7//+7xPbPvjBD8aqVati27ZtU3rN4eHhqK2tjaGhoVi4cGEp43KREiMAUzdTn9o71Z/fJa2MjI2Nxb59+2Lz5s0T2yorK6OlpSX6+vpOe0xfX190dHRM2rZu3bp45plnzvg6o6OjMTo6OvH10NBQRPz8pGAqCqNvZY8AMGfM1M/XXzzvu617lBQjJ0+ejPHx8airq5u0va6uLg4ePHjaYwYGBk67/8DAwBlfp6urKx5++OF3bK+vry9lXABgCmp7Zvb5T506FbW1tWf8/jldwDrTNm/ePGk1pVAoxBtvvBHvfe97o6KiYtpfb3h4OOrr6+PIkSNl+Wsg5ze3lfv5RZT/OTq/ua3czy9i5s6xWCzGqVOnYtmyZWfdr6QYWbJkScybNy8GBwcnbR8cHIylS5ee9pilS5eWtH9ERHV1dVRXV0/advnll5cy6jlZuHBh2f5Fi3B+c125n19E+Z+j85vbyv38ImbmHM+2IvILJd1npKqqKlavXh29vb0T2wqFQvT29sbatWtPe8zatWsn7R8R8cILL5xxfwDg4lLyr2k6Ojqira0tGhsbo6mpKXp6emJkZCTa29sjImLDhg2xfPny6OrqioiIBx54IG699db4m7/5m1i/fn3s2LEjfvjDH8bf//3fT++ZAABzUskx0traGidOnIgtW7bEwMBArFq1Knbv3j1xkWp/f39UVr694HLzzTfH9u3b4zOf+Ux8+tOfjuuvvz6eeeaZC+oeI9XV1dHZ2fmOXw2VC+c3t5X7+UWU/zk6v7mt3M8vIv8cS77PCADAdPLZNABAKjECAKQSIwBAKjECAKQSI7/kD//wD+Oqq66KmpqaeN/73hf33HNPHDt2LHusaXH48OH4+Mc/Htdcc01ceumlsWLFiujs7IyxsbHs0abNF77whbj55pvjsssum5Ub5c2GrVu3RkNDQ9TU1ERzc3Ps3bs3e6Rp853vfCfuuOOOWLZsWVRUVJz1M6vmmq6urlizZk0sWLAgrrzyyrjzzjvj0KFD2WNNq8cffzxuuummiRtlrV27Nv7jP/4je6wZ093dHRUVFfHggw9mjzItPve5z0VFRcWkxw033JAyixj5Jbfffnt84xvfiEOHDsW//uu/xmuvvRYf/ehHs8eaFgcPHoxCoRBPPPFEvPLKK/G3f/u3sW3btvj0pz+dPdq0GRsbi7vuuis++clPZo8yLXbu3BkdHR3R2dkZ+/fvj5UrV8a6devi+PHj2aNNi5GRkVi5cmVs3bo1e5Rp9+1vfzs2btwY3//+9+OFF16In/3sZ/HhD384RkZGskebNu9///uju7s79u3bFz/84Q/jd37nd+KP/uiP4pVXXskebdq99NJL8cQTT8RNN92UPcq0+rVf+7X43//934nHd7/73ZxBipzVs88+W6yoqCiOjY1ljzIjvvSlLxWvueaa7DGm3VNPPVWsra3NHuO8NTU1FTdu3Djx9fj4eHHZsmXFrq6uxKlmRkQUd+3alT3GjDl+/HgxIorf/va3s0eZUYsWLSr+wz/8Q/YY0+rUqVPF66+/vvjCCy8Ub7311uIDDzyQPdK06OzsLK5cuTJ7jGKxWCxaGTmLN954I77+9a/HzTffHL/yK7+SPc6MGBoaisWLF2ePwWmMjY3Fvn37oqWlZWJbZWVltLS0RF9fX+JknIuhoaGIiLL99zY+Ph47duyIkZGRsvu4j40bN8b69esn/VssF//zP/8Ty5Yti2uvvTY+9rGPRX9/f8ocYuQ0HnrooXjPe94T733ve6O/vz+effbZ7JFmxKuvvhqPPvpo/Pmf/3n2KJzGyZMnY3x8fOLuxr9QV1cXAwMDSVNxLgqFQjz44IPxm7/5mxfU3aenw8svvxzz58+P6urq+MQnPhG7du2KG2+8MXusabNjx47Yv3//xEeclJPm5uZ4+umnY/fu3fH444/HT37yk7jlllvi1KlTsz7LRREjmzZtesdFOr/8OHjw4MT+f/mXfxn/+Z//Gc8//3zMmzcvNmzYEMUL+Ea1pZ5fRMTRo0fj937v9+Kuu+6Ke++9N2nyqTmX84MLycaNG+O//uu/YseOHdmjTLtf/dVfjQMHDsQPfvCD+OQnPxltbW3x4x//OHusaXHkyJF44IEH4utf/3rU1NRkjzPtPvKRj8Rdd90VN910U6xbty6++c1vxptvvhnf+MY3Zn2Wi+J28CdOnIj/+7//O+s+1157bVRVVb1j++uvvx719fXxve9974Jdeiz1/I4dOxa33XZbfPCDH4ynn3560mcJXYjO5c/v6aefjgcffDDefPPNGZ5u5oyNjcVll10W//Iv/xJ33nnnxPa2trZ48803y27FrqKiInbt2jXpXMvBfffdF88++2x85zvfiWuuuSZ7nBnX0tISK1asiCeeeCJ7lPP2zDPPxB//8R/HvHnzJraNj49HRUVFVFZWxujo6KTvlYM1a9ZES0vLrK8ElfxBeXPRFVdcEVdcccU5HVsoFCIiYnR0dDpHmlalnN/Ro0fj9ttvj9WrV8dTTz11wYdIxPn9+c1lVVVVsXr16ujt7Z34AV0oFKK3tzfuu+++3OF4V8ViMe6///7YtWtX7Nmz56IIkYif/x29kP9/WYoPfehD8fLLL0/a1t7eHjfccEM89NBDZRciP/3pT+O1116Le+65Z9Zf+6KIkan6wQ9+EC+99FL81m/9VixatChee+21+OxnPxsrVqy4YFdFSnH06NG47bbb4uqrr45HHnkkTpw4MfG9pUuXJk42ffr7++ONN96I/v7+GB8fjwMHDkRExHXXXRfz58/PHe4cdHR0RFtbWzQ2NkZTU1P09PTEyMhItLe3Z482LX7605/Gq6++OvH1T37ykzhw4EAsXrw4rrrqqsTJzt/GjRtj+/bt8eyzz8aCBQsmrvOpra2NSy+9NHm66bF58+b4yEc+EldddVWcOnUqtm/fHnv27Ilvfetb2aNNiwULFrzjGp9fXE9YDtf+fOpTn4o77rgjrr766jh27Fh0dnbGvHnz4u677579YXLfzHNh+dGPflS8/fbbi4sXLy5WV1cXGxoaip/4xCeKr7/+evZo0+Kpp54qRsRpH+Wira3ttOf34osvZo92zh599NHiVVddVayqqio2NTUVv//972ePNG1efPHF0/55tbW1ZY923s70b+2pp57KHm3a/Nmf/Vnx6quvLlZVVRWvuOKK4oc+9KHi888/nz3WjCqnt/a2trYW3/e+9xWrqqqKy5cvL7a2thZfffXVlFkuimtGAIAL14V/wQAAUNbECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQSowAAKnECACQ6v8BVxj2twnOOzYAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# gt samples\n", + "gt_samples = MultivariateNormal(observation, eye(2)).sample((len(theta_inferred) * 5,))\n", + "gt_samples = gt_samples[prior.support.check(gt_samples)][:len(theta_inferred)]\n", + "\n", + "kwargs = dict(density=True, bins=50)\n", + "for idx_param in range(2):\n", + " plt.hist(gt_samples[:, idx_param], **kwargs)\n", + " plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "efeacc9d-f5ce-4619-bd15-66df1e1e7983", + "metadata": {}, + "outputs": [], + "source": [ + "_ = torch.manual_seed(3)\n", + "theta = prior.sample((50,))\n", + "x = sim.sample(theta)\n", + "\n", + "_ = torch.manual_seed(4)\n", + "inference = SNPE(prior=prior)\n", + "_ = inference.append_simulations(theta, x).train()\n", + "posterior = inference.build_posterior()\n", + "\n", + "_ = torch.manual_seed(2)\n", + "theta_gt = prior.sample((5,))\n", + "observations = sim.sample(theta_gt)\n", + "print(\"observations.shape\", observations.shape)\n", + "\n", + "\n", + "oversampling_factor = 128 # higher will be slower but more accurate\n", + "n_samples = 5000\n", + "\n", + "non_corrected_samples_for_all_observations = []\n", + "corrected_samples_for_all_observations = []\n", + "true_samples = []\n", + "for obs in observations:\n", + " non_corrected_samples_for_all_observations.append(posterior.set_default_x(obs).sample((n_samples,)))\n", + " corrected_posterior = ImportanceSamplingPosterior(\n", + " potential_fn=Potential(prior=None, x_o=obs),\n", + " proposal=posterior.set_default_x(obs),\n", + " method=\"sir\",\n", + " )\n", + " corrected_samples = corrected_posterior.sample((n_samples,), oversampling_factor=oversampling_factor)\n", + " corrected_samples_for_all_observations.append(corrected_samples)\n", + "\n", + " gt_samples = MultivariateNormal(obs, eye(2)).sample((n_samples * 5,))\n", + " gt_samples = gt_samples[prior.support.check(gt_samples)][:n_samples]\n", + " true_samples.append(gt_samples)\n", + "\n", + "\n", + "for i in range(len(observations)):\n", + " fig, ax = marginal_plot(\n", + " [non_corrected_samples_for_all_observations[i], corrected_samples_for_all_observations[i], true_samples[i]], \n", + " limits=[[-5, 5], [-5, 5]], \n", + " points=theta_gt[i], \n", + " figsize=(5, 1.5),\n", + " diag=\"kde\", # smooth histogram\n", + " )\n", + " ax[0][1].legend([\"NPE\", \"Corrected\", \"Ground truth\"], loc=\"upper right\", bbox_to_anchor=[1.8, 1.0, 0.0, 0.0])" + ] + }, + { + "cell_type": "markdown", + "id": "257c04cd-6ad7-46e1-8a10-88774d5e09c4", + "metadata": {}, + "source": [ + "_ = torch.manual_seed(3)\n", + "theta = prior.sample((50,))\n", + "x = sim.sample(theta)\n", + "\n", + "_ = torch.manual_seed(4)\n", + "inference = SNPE(prior=prior)\n", + "_ = inference.append_simulations(theta, x).train()\n", + "posterior = inference.build_posterior()\n", + "\n", + "_ = torch.manual_seed(2)\n", + "theta_gt = prior.sample((5,))\n", + "observations = sim.sample(theta_gt)\n", + "print(\"observations.shape\", observations.shape)\n", + "\n", + "\n", + "oversampling_factor = 128 # higher will be slower but more accurate\n", + "n_samples = 5000\n", + "\n", + "non_corrected_samples_for_all_observations = []\n", + "corrected_samples_for_all_observations = []\n", + "true_samples = []\n", + "for obs in observations:\n", + " non_corrected_samples_for_all_observations.append(posterior.set_default_x(obs).sample((n_samples,)))\n", + " corrected_posterior = ImportanceSamplingPosterior(\n", + " potential_fn=Potential(prior=None, x_o=obs),\n", + " proposal=posterior.set_default_x(obs),\n", + " method=\"sir\",\n", + " )\n", + " corrected_samples = corrected_posterior.sample((n_samples,), oversampling_factor=oversampling_factor)\n", + " corrected_samples_for_all_observations.append(corrected_samples)\n", + "\n", + " gt_samples = MultivariateNormal(obs, eye(2)).sample((n_samples * 5,))\n", + " gt_samples = gt_samples[prior.support.check(gt_samples)][:n_samples]\n", + " true_samples.append(gt_samples)\n", + "\n", + "\n", + "for i in range(len(observations)):\n", + " fig, ax = marginal_plot(\n", + " [non_corrected_samples_for_all_observations[i], corrected_samples_for_all_observations[i], true_samples[i]], \n", + " limits=[[-5, 5], [-5, 5]], \n", + " points=theta_gt[i], \n", + " figsize=(5, 1.5),\n", + " diag=\"kde\", # smooth histogram\n", + " )\n", + " ax[0][1].legend([\"NPE\", \"Corrected\", \"Ground truth\"], loc=\"upper right\", bbox_to_anchor=[1.8, 1.0, 0.0, 0.0])" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "300af8d5-3f2a-4f54-b66c-0a54ae231cc6", + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "log_prob = sim.log_prob(theta, x, myprior)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "92bcc66c-2239-4ba9-990d-682c37fe7c64", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([ -7.0203, -6.7757, -8.7409, -11.0604, -6.8828, -6.8849, -6.7167,\n", + " -6.5307, -7.6620, -7.1050, -6.9813, -7.7949, -6.4848, -8.8385,\n", + " -6.5047, -7.5428, -6.5311, -7.8525, -7.6094, -6.8969, -6.5591,\n", + " -8.4800, -9.2732, -7.5526, -6.8612, -6.9509, -6.6061, -6.9288,\n", + " -8.6525, -6.8885, -9.0233, -6.6701, -6.9285, -11.2049, -6.5632,\n", + " -6.6593, -7.2530, -7.5786, -11.1936, -6.6386, -6.6733, -7.0817,\n", + " -6.5013, -10.9662, -6.8552, -7.1537, -7.4354, -8.6405, -7.6694,\n", + " -6.6940])" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "log_prob" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "73d97121-7990-479f-b261-99ccbb2127e8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Neural network successfully converged after 93 epochs.observations.shape torch.Size([5, 2])\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "851cdf8a650545539807c4d818c9ad87", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Drawing 5000 posterior samples: 0%| | 0/5000 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiQAAAC8CAYAAABIWbV3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABLA0lEQVR4nO3dd3hTZfvA8W9G03QPOiillELZey9lKAjqCw5UFBRFfjh5FRVwvgLugYqK4gZ99RVUUAQV2UP23qMtLWWULrrTNE3O+f1xIFjbQgttk5b7c129oDnPOedOmye980ydqqoqQgghhBAupHd1AEIIIYQQkpAIIYQQwuUkIRFCCCGEy0lCIoQQQgiXk4RECCGEEC4nCYkQQgghXE4SEiGEEEK4nCQkQgghhHA5SUiEEEII4XKSkAghhBDC5SQhEUIIIYTLSUIihBBCCJczujoA4UKqCsUW7f8e3qDTuTYeIaqKvLaFqHWkheRKVmyB1xpoX+fevIWoC+S1LUStIy0kQgghLomiKNhsNleHIdyUh4cHBoOhwuUlIRFCCFFpNpuNxMREFEVxdSjCjQUGBlK/fn10Feg2lYRECCFEpaiqSkpKCgaDgaioKPR66f0XJamqisViIS0tDYCIiIiLniMJyZVMVcv+vxC1nby2q5XdbsdisdCgQQO8vb1dHY5wU15eXgCkpaURFhZ20e4bSWuvZMWFZf9fiNpOXtvVyuFwAGAymVwciXB35xLW4uLii5aVhEQIIcQlqci4AHFlq8xrRBISIYQQQricJCRCCFEFZLaJEJdHEpI6zGa30ef7PnT8piOPrXiMLGuWq0MSos5RFIVHlz9Kh/92YPivw7Hara4OSYhaSRKSOuz9ne+Ta8vFoTpYdWIV/ef2Z8K3z3MqLdXVoQlRJ6TkpzDwp4GsPbkWgCNZRxg8fzCZhZkujkyU5b777kOn0/HGG2+UePyXX35xjnVYvXo1Op3O+RUeHs7w4cM5evSos3zjxo1LlDn39c/risqRab91lKIozDs8D4Am1jY0SGlFTGZ7fIoDmLdhO/UaejP41kaEuzhOIWqrZceWMXntZOyKHb1ioK1HZ/bat3HGeoYh84fw3Y3f0TyouavDFP9gNpt58803efDBBwkKCiq33OHDh/Hz8yMuLo4HHniAoUOHsmfPHufU1Zdeeolx48aVOMfPz69aY6/rJCGpo77Y9wVF9iKuOzKGJmc6Oh936OyYFDN5yQo/v3+QhyQjEaLStqdu55Mf5jLwzBiCLRH4FQWjQ0cPwwg2N1zMgfAN3LHoDhbdvIgo/yhXh1vtVFWlsNjhknt7eRgqNZNj4MCBxMfH8/rrr/PWW2+VWy4sLIzAwEAiIiJ48cUXGTVqFPHx8bRo0QLQko/69etfdvziPElI6qjZ+2bTOKudMxnx9jfRsld9itqdYsavn9Mm5Woa5Td0lj8Rl03DTqEuilaI2sNmt/Hm/2ZxTcKoUscMDg96H7uFLicGsydiDf/5awpzbvjKBVHWrMJiB61f/NMl9z7w0mC8TRX/U2YwGHjttdcYOXIkjz32GA0bNrzoOecW+JJ9e6qXjCGpg+Ydnke+rYBux68HoH5Tf8a8dRW9bomlf2xfXh39DEvaf8qi1jOd5/z22RH2rDruqpCFqDUeW/wkXY/eCIAhyE7v4U2547mu3PdmH2K7hKHT6/B0eNPtxPXYdnvLYHI3dMstt9CxY0emTJly0bIpKSlMnz6dyMhIZ+sIwNNPP42vr2+Jr3Xr1lVn2HWetJDUQR/v+pgmZ9pTzxIJwMD7Wpc43iakDb/c9AujF94CzrF3OtbNiyMr1UK/O1sghChtYfxCzNsa4VMcgM1YyMPPD8Lse3610sHj2mK3KyyauZNTh3LocmIwr6+Yzls3vurCqKufl4eBAy8Ndtm9L8Wbb77JNddcw8SJE8s83rBhQ+d+LB06dGD+/PklVqadNGkS9913X4lzIiMjLykWoZGEpI75M+lPsgqzGHj8AQAaNAsgILT0XhNR/lEsvHEefNAZgMTg3URl9mDv6hO07tOA0CgZnCXE32VYMvh64S9cm3EPKgrXjehQIhk5x2jUM3R8J2Y8uQgvmx/WTX7YBtswGevuMus6na5S3SbuoG/fvgwePJhnn322VGIBsG7dOvz9/QkLCytzsGpISAixsbE1EOmVQ7ps6phZu2bRJLMjwYXazorX/qN15O/8Tf7O/69s8h2nfRPRoWPpV/uqPU4hapsnFj9N78SbAQiM9qTN1eWPPTAa9fS+sRkAzdO78t7Pn9dEiKKS3njjDRYtWsTGjRtLHYuJiaFp06Yyc6YGSUJShyiKwrGcY3Q9O3YkskUg/vW8KnTuf7pPYkuj3wDISrFw4vCZaotTiNom15ZL0N5YvOx+2DwKuePxXhc9p/fg1mQGJqNDj3WTH3a7vQYiFZXRrl07Ro0axQcffFDpc/Py8jh9+nSJr9zc3GqI8sohCUkdsjFlIzHpHQiyhgNqqbEjFzI05gbqN/MjOfAAOnSs+Ppg9QUqRC3z/rJPiM3oAsCA4W0weVese2LIyM4U64sIKWjIZ1/8XJ0hikv00ksvXdKy/y+++CIRERElviZPnlwNEV45alenn7ign478ROvUPgBEtgjCN8hcqfPfuPoNRh0dS6Ps1uSfKeLI1lSad5OFSoRI3+IgWDWS55VJx/7XVPi87u3b833EH8Se7Eb+fiOKoqDXy+dAV5kzZ06pxxo3bkxRUZHz+/79+6Oq6gWvk5SUVMWRCZAWkjrlcGISEXlNUVHpdUvTSp8f4RtBixbRxNXbDsDaeYeqOkQhap1l+1YSk94BgNa9Iyp9/lX/6opNb8WnOIC3Z/+J3S6b8AlRFklI6oh8Wz6hp5oAoHrZCG8ccEnXee2q19gR9ScOnYOifAd7Vp+oyjCFqHWW/rITk2Im15zBv4b3rtS5e05k89x8G/EBiQAkHT5J8//8weD31nIy21Id4QpRa0lCUkf8dHg+zTK1Pu5WHS99qeogcxDdWnbgSOhmALYvPXqRM4Sou9KyMgk/rc2WMTW3Vqq7Zen+09zy0XqK7AoHDNp5zQoaoFdtHE7N467PNlVLzELUVpKQ1BEbtu4iqLA+Dp2dHkMvb278y71fJi50GwD5WUUU5BRd5Awh6qYvvlqIl92XPFMWD953W4XPm70+kQf+ux2HCh4GHS+PvpkCUzaeDjP9/ZMASD5TyHebj1VT5ELUPpKQ1AFHUvMwJmn70Jz2zubu/23jj30pl3w9b5M37ds2J8ecjl41sHWxtJKIK4/dZseYpO0GeyYyEV/v0gsMlmVDfAbTFh0AwNfTwNIJfbmqeQSWEG1Z5LBsbxqfnY7/8uID2GRMiRCAJCS1mqIo/Pv7HQx5fzGNs1oBsFnvwe4TOTz87Q6ue28N8al5l3Ttid2fIr7eDgB270iospiFqC1+/G4NPsUBFBrzue2Ois2sybbYGDNnKwA+ngb+evoaYkJ9AfjX9X0BiMhtwo1ttZYRa7HCxB93V0P0QtQ+kpDUUmm5Vvq+vZpFu1NobMjApzgAq8GCGhpAiK8nAEdS8xn43loe+W57pefZh/uEY4k6DYC+wEzmyfwqfw5CuCtFUTi5U0vmj4btpHtM5wqdd/PZMSM64PtxPQn0Pr9cfNduLcjxSkePgcSdSVzfVtu6ftHuUySmS/0SQhKSWmjloTT6vLmSE1mFAHSyaW962UEnWTn5Gra9MJAX/9Uas4f26/1972lGfrG50ve566pbSfVNQo+elT/vqbonIISb277kGF42f4r1Rfh1K67QOU/9sIukTG3mzDPXt6R9w8BSZcKbats1hGc05f5rDXga9ajAuP9ur6rQhai1JCGpZdJyrYz7ZhvFDhW9Dl4YFEtUXiMAIjv4Osvdf1UMe6YMpm/zEAA2HT3DmNlbKnWvoU2Gkhys9YUnxadW0TMQwv1tXaZ1Ux4I38CY7ndftPzCXSeZv+MkAFfF1uPBfmWvA3TbiH4oOAixNOSLpd/wzPUtAYhPy+evuPQqil6Iss2ZM4fAwEBXh1EuSUhqmbu/3IxDUTHodPz+2NXojh/GQ/Ek1zOTu4feVKKsyajnm/t7cHUzLSlZdTidR7+r+CcxvV5P/fbeKDjwtgZwbH9GlT4XIdzR/nUnUQv1OHR24iO30LJeywuWj0/N48l52jiQYB8Tc+7rXm7ZgFBvrP7aficeCfUY1SOSYB+thXPKrweq6BmIizl9+jT//ve/adKkCZ6enkRFRTF06FBWrFjh6tBKcfckoipJQlKLfLI6gSOpWl/zpMEtaBnhz/HDWpKQEZCMr9m3zPP+O7YH3RprswV+23uayT9VfBDdEwMe5WTAEQB+Wbj2csIXolbYskhbxOxIyDZaNr7wiscWm51bZ23AoaoY9ToWPtIHo/HCb6tX9W8LQNOMTny2+SsmDNTWOUlIz2ffyZwqeAbiQpKSkujSpQsrV67k7bffZu/evSxZsoQBAwbw6KOPXtI1bTZbmY8XF1esu09oJCGpJVKyC3n7z8MANA/35aH+TSmy2vDP1faaCW1+4SmJ8x7oSdsGWv/1D9tOMHNlXIXuG+4TTnbYKQBsKfpL2oRKiNoicXc6llwbKgq7I1cwuvXoC5a/bdYGcq3aLr4fj+pMVL2LTw3uMaQZFlMuJsXMvjUnGd2rMb6eBgCe+3nv5T8JcUGPPPIIOp2OLVu2MHz4cJo3b06bNm148skn2bRJW6wuOTmZm266CV9fX/z9/bnjjjtITT3fbT116lQ6duzIF198QUxMDGaztm+YTqdj1qxZDBs2DB8fH1599VUAFi5cSOfOnTGbzTRp0oRp06aV2P05OzubBx98kPDwcMxmM23btmXx4sWsXr2aMWPGkJOTg06nQ6fTMXXqVACKioqYOHEikZGR+Pj40KNHD1avXl3iuc6ZM4dGjRrh7e3NLbfcQmZmZjX+ZC+fbK5XS9z95RYcqopBr+PbsT0A+H7hEjwdvhQa8xlz04UXbdLr9fw6vg/93l7N8axCpi89Qox3NDdW4N6DB/fgWEIR3sX+rFm5iwEDKzbjQIjaZv1P8QAkBu/F4ptNzwY9yy377Pw9HEjRZuI82DeG69rUr9A99Ho99Zp5UrgfotLacCj9EGOviuH9FfHsOZHD8UxLhRIbd6KqKoX2Qpfc28vohU6nq1DZM2fOsGTJEl599VV8fHxKHQ8MDERRFGcysmbNGux2O48++igjRowo8Qc/Pj6e+fPns2DBAgwGg/PxqVOn8sYbbzBjxgyMRiPr1q1j9OjRfPDBB1x99dUkJCTwwAMPADBlyhQUReH6668nLy+Pb7/9lqZNm3LgwAEMBgO9e/dmxowZvPjiixw+rH0g9fXVWsLHjx/PgQMHmDt3Lg0aNODnn39myJAh7N27l2bNmrF582bGjh3L66+/zs0338ySJUuYMmXKpf6Ya4QkJLXAl+uOknB2WuBz17ckzF/LxuP3nSKC5mT4JxPuN+yi19Hr9fzxeF/6vLmSnMJiJi88xI2eF7//LW2HMTngQ6Kz2rBq7XZJSESdlHfGSk669kd1d4OVtAtpV27Z5QdO8/3W4wB0bxzEsze0rtS9Roy+hs+fXUmgNYzP5//I2w88zydrjlJkV3hmwR6+G1d+IuSOCu2F9PhfD5fce/PIzXh7VCyBi4+PR1VVWrYsf1zQihUr2Lt3L4mJiURFadtwfPPNN7Rp04atW7fSrVs3QOum+eabbwgNDS1x/siRIxkzZozz+/vvv59nnnmGe++9F4AmTZrw8ssvM3nyZKZMmcLy5cvZsmULBw8epHnz5s4y5wQEBKDT6ahf/3zCm5yczOzZs0lOTqZBgwYATJw4kSVLljB79mxee+013n//fYYMGcLkyZMBaN68ORs2bGDJkiUV+lm5gnTZuDlFUXh3uTaGIzbMl7FXay9Uu92Of7bWXRMYYyr3/H/yNRv5/fGr8DTqUdSKfaoA8IvRXip+WaHkWWXNBFH3bFqozazJ8jpNqm8SI1qMKLNcvtXO+P/tBCDQ24P//V/lkwefAE8sIdr4L8+j2h+0O7pqf/w2JGRyJr/sMQni8qiqetEyBw8eJCoqypmMALRu3ZrAwEAOHjzofCw6OrpUMgLQtWvXEt/v3r2bl156CV9fX+fXuHHjSElJwWKxsGvXLho2bOhMRipi7969OBwOmjdvXuK6a9asISEhwfk8evQomST26tWrwvdwBWkhcXMfr06goMgBwAd3dnQ+Pu/P3/ApDqBYb2P0LTeVc3bZIgO9+eHBnoz6eGWFz3n0zlHM2f0X3sX+fDjvG56795FK3VMId5e4S0sQDoVuxqA3MDh6cJnl7vlqM9azi599O7bHRQexlmfYrX1Y/clRInOb8+XyuTx/wx18vyUZu6Ly7II9fDq668Uv4ia8jF5sHln5tY6q6t4V1axZM3Q6HYcOHbrs+5bV5VPW4/n5+UybNo1bb721VFmz2YyXV8Xj//s1DQYD27dvL9FdBOe7dGojSUjcmKIofLRKy3bbNvCndYMA57G9248RRVsy/U7QIGRIpa/dISqIZwbFwNmJM19uSGbsdaWz/XOC/QPJDUgj9ExjMo9YK30/IdxZ8v5MioscqCjEhW6jRVCLMnf2nb0+kZ3J2QA80DeGtpEBpcpUVNuOTZjv9xcheQ05si4N83VGbmwfwcJdp1h6MJWMfCshvuZLvn5N0ul0Fe42caXg4GAGDx7MRx99xGOPPVYqecjOzqZVq1YcP36c48ePO1tJDhw4QHZ2Nq1bV65rDqBz584cPnyY2NiyNz1t3749J06c4MiRI2W2kphMJhwOR4nHOnXqhMPhIC0tjauvvrrM67Zq1YrNm0smiecG7bor6bJxYzOWx1FYrL0Q3x3R0fm4oij4Zmlri/g0vPRf4d3dzzdJzliVRFruhRONHj3bANAguxm/HFh4yfcVwt1s/U2b6ns84DAWUy63Ni/9afZktoVXFmtN9o3reVd63EhZGnbUZr41ONOMpJQTvHpzOwx6HaoKT8yTPW6qw0cffYTD4aB79+7Mnz+fuLg4Dh48yAcffECvXr0YOHAg7dq1Y9SoUezYsYMtW7YwevRo+vXrV6o7piJefPFFvvnmG6ZNm8b+/fs5ePAgc+fO5YUXXgCgX79+9O3bl+HDh7Ns2TISExP5448/nGM9GjduTH5+PitWrCAjIwOLxULz5s0ZNWoUo0ePZsGCBSQmJrJlyxZef/11fvvtNwAee+wxlixZwvTp04mLi2PmzJluPX4EJCFxW4qi8Nk6bZfdjlGBNA/3cx6bt2YRQYX1UXAw8ubKt46Uxa7C6K8uvJLroBu6UWSwYHb48Ouy1VVyXyFczW5XSE3UFis7FL4Jg87A8GbDS5Ub/eVW53oj8x6smr74e2//F7memZgcXnw3bwm+ZiN3dtM+KKyLy+D42aXoRdVp0qQJO3bsYMCAATz11FO0bduWQYMGsWLFCmbNmoVOp2PhwoUEBQXRt29fBg4cSJMmTZg3b94l3W/w4MEsXryYpUuX0q1bN3r27Ml7771HdHS0s8z8+fPp1q0bd911F61bt2by5MnOVpHevXvz0EMPMWLECEJDQ3nrrbcAmD17NqNHj+app56iRYsW3HzzzWzdupVGjbSVu3v27Mnnn3/O+++/T4cOHVi6dKkzCXJXOrUio3xEjXv994N8ulZLSFY81Y+moef7BSe+/jYxx7qQ4XOCKe9ceJ2EC8pPh+laM2Ir61cUYmbasDbc27txuafMnLoI3Wkf4upt55GJN9E8qOIDsYSoMX97bTMxHnzL747c8ecxNv6cgE1v5etuz9Ohfnu+vv7rEmUW7z7F+O+1gaxThrZmTJ+YKgt18mvvEp3ckRxzOs+8ezt2BdpO/RObXaFTo0B+fqRPld2rqlitVhITE0uswSFEWSrzWpEWEjdktyvM2ZAEQNfooBLJiM1uwzuzHgCeEVWXSzatp83/feW3A9js5S9+ds2gLgA0zmrL2+veqbL7C+Eq+9Zqe9AcCd2KQ2/nwQ4PljiuKArP/6ItWBYRYK7SZASgz+CW2HXFBFhD2br2CCajngfOzqbbmZzNgVOyequ4MkhC4oZeX3KIorNJwXt3dCxx7Is13xKe3xiA24cNqrJ7fnJXe3RAsUPlzSXlj0Bv2as+xUYrHoon2UccsnKrqNXyzljJy9TGTh0J3YK30ZveDXqXKPPOsjhyCrVVNd//20y3qjK00xCSg/YDsHqpNm7kyUHN8DFpsycmzNtV5fcUwh1JQuJmbHaF/248BkDPJsGlVmzcv0lbjCnHO42mzRtU2X0bBnrRPSYYgG83HSs30dDr9dSP0vbFaZLRkR/jfqyyGISoaVsWad2iOZ4ZpPkm069hvxLH8612Pl2jzXTr3CiQ7jH1qjwGvV6PJUZbltwrK4jczEL0ej1PXdcCgCOp+Ww+6t5LfgtRFSQhcTMvLz6AzaElA+/c0aHEseN5xwk5ow2Eqte46qfYvXVbewCK7Aozlpe/103vodq4kajslvy8+fcqj0OImnJsn/aH/nDYZtDBox1Lbq42Yd5O7IqKTgez7u5SbXEMvaY/mV6nMKhGVvywD4D7r4oh0NsDgOd+3ldt9xbCXUhC4kasNjtztyYDcFVsPSIDSyYdM//8grCCRigo3Hpr/yq/f3Q9HzpGBQLwxV+J5baSNGpdj2LvAnTo8UtsSL5NVm4VtU9+lpXCPG031sTg3YR4hRAdcH7mQ2J6PssPpgFwa6dIwv2rb/DmkJjBxIVtAyDpQJqz7j05SEv+E9Lz2ZmcVW33F8IdSELiRqYtOkCxQ0UHvPOPsSMAZw5q/dgWnyxCG/pXSwxv3Krt32GxOfhsbWK55br01t4oW6R359NtX1RLLEJUpx1/asl/jjmdLK9UhjUpuR/UpJ/2AOBp1PP6re2rNRa9Xo++RS7F+iJMxV7sW6PtsD26V2P8zdr6lc8ukJ2ARd0mCYmbsNjs/Lj9BAD9WoSW+jS27NgyorJaARDbKrLa4mgZ4U+rCG3Nk49Xx5dbrtewptgMhXjZ/dh3dsyLELXJ0V3pACQE7wIdjGs/znnseKaFbce0Fon7ejfGdInLw1fGiI63ER+yHYDtK446H//3Ndr05UOn82TGjajTJCFxE8//vE/rqwam317609h3qxZQz9IABQcDb+pYrbGcayXJtdr5ZmNSmWWMJiPeUdrmfA1Ot+J47vFqjUmIqmTNt1GQXQRAYr09xAbG4ms6P71+0nxttounUc+ks4NLq9uQxkNIqqeNFck9U+jsthl7VQw+ntqMm8lnW22EqIskIXEDien5/LJTWwthUOvwUvtXWGwWDMmBABT7FhAQWr17RnSICqJpqLbHw3vLjpRb7uY7r0JBoUFeLB//PqdaYxKiKu1aqbVG5puySPdJ5qH2DzmPncy2sOnoGQDu7hl9yZvnVZZeryeosSfF+iKMigcJO9Odjz/YtykA+07lEp+aVyPxCFHTJCFxA//3zTZUwGTQM6OMdQ4+2/M5Tc5orSYdOjWrkZhevqktAFmWYn7ecbLMMuGN/cnz1940C/d71khcQlSF+K3aNNvE4D14e3gzOOb8zr5Pn22FMBn0PDukZY3GNbL9nZzy17pKd607P4Zr/ICmeHlorSST5ksryZVo6tSpdOzY0dVh0L9/fyZMmFAt15aExMW+35JMQnoBAM/f2ApvU+kNmDdu30WgNRyHzkGPG5vWSFy9Y0NoGKRti/3GHwfLLdehl7ZqZaMzbVgXt7FGYhPicthsdnLSCwEtIRkSc34/qNRcK+vjtanAI7pF1VjryDmDowdzOkBb9+TYsdPOx/V6PfdfpdW1ncnZpF5kI0xRvtOnT/P4448TGxuL2WwmPDycPn36MGvWLCyW2rt30OrVq9HpdGRnZ7vl9SpCEhIXstrsTP1VW6Exup53mXvIZFuzCT15NgnxL8I3sOb2jZg6VNvNNDWviKX7T5dZ5vqh3SkwZePp8GLRonU1FpsQl2rfaq3Fr9CYT4r/UZ7o/ITz2OSf9qACHgYd//nX5e/mW1l6vR7PRtrYEc9CX/KzzyceT1zbDA+DNm5rykJZl+RSHD16lE6dOrF06VJee+01du7cycaNG5k8eTKLFy9m+fLl5Z5bXFxcg5FWH5vN5uoQyiUJiQs9PncXRXYFHfDl6LK3tf5y89fEZmgLMl19bbsajA4Gtq5PuJ/WFfPS4gNlltEb9djCtJH/ppSgGotNiEt1eJOWXCcF76VFcHMCzYEApOVaWXtE64K8tXPDGplZU5YRVw0jxzMdPXrWL93vfNxo1HNDuwgAlh1Mu+CeU6JsjzzyCEajkW3btnHHHXfQqlUrmjRpwk033cRvv/3G0KFDnWV1Oh2zZs1i2LBh+Pj48OqrrwIwa9YsmjZtislkokWLFvz3v/91npOUlIROp2PXrl3Ox7Kzs9HpdKxevRo43/KwYsUKunbtire3N7179+bw4cMlYn3jjTcIDw/Hz8+PsWPHYrWW3yqWlJTEgAEDAAgKCkKn03HfffcBWhfL+PHjmTBhAiEhIQwePPiicV7oeqDt7zR58mSCg4OpX78+U6dOreiv4IIkIXGR3cez+POA1o99U8dIYsP9yix3dH02HoonBaZsOgyMqskQAXj2Bm2q8YmsQjbEZ5RZ5sYbtb0/wvNiWLy1/E8YQria3a6QmaINCk0M3sP4TuOdxyb+tBsVMOp1TBta860j5wyMHshpf23a7449JfeVmvKvNugAh6LyztLy95yqaaqqUlzkcMlXRTesz8zMZOnSpTz66KP4+PiUWUan05X4furUqdxyyy3s3buX+++/n59//pnHH3+cp556in379vHggw8yZswYVq1aVemf2fPPP88777zDtm3bMBqN3H///c5jP/zwA1OnTuW1115j27ZtRERE8PHHH5d7raioKObPnw/A4cOHSUlJ4f3333ce//rrrzGZTKxfv55PPvnkorFV5Ho+Pj5s3ryZt956i5deeolly5ZV+mfwT6UHLIhqpygKY7/WVmX0NhmYflvZiy5lW7KJTNUSAt9YHXp9zeePN3eK5KXFBzhTYOOFX/axcmL/UmU6dWrBYu9tBFsiWLt8J//qNrDG4xSiIvasOI5O1VNksJBd7xT9orS9a1Jzraw7oiXct3dpiLmMsVw1yVDfBulgzPFBURRn3Q/2NdElOohtx7L4bvNxnr3BdYnT39ltCp89vsYl937g/X54nJ0WfSHx8fGoqkqLFiWncYeEhDhbHx599FHefPNN57GRI0cyZswY5/d33XUX9913H4888ggATz75JJs2bWL69OnOFoWKevXVV+nXT3v9PfPMM9x4441YrVbMZjMzZsxg7NixjB07FoBXXnmF5cuXl9tKYjAYCA7W9iILCwsjMDCwxPFmzZrx1ltvOb9PSkq6YGwXu1779u2ZMmWK89ozZ85kxYoVDBp0eRu+SguJC7zy20Ey8rV+vBkjOpY7cO7zuQsIKArBZijk7tGDyyxTE54cqM3sOZpRwJbEsjf5MkRqazr4poXLDsDCbe1dq62XEx+ykxubXe98fOKPu51jR6a4sHXknH9d2x+Hzo53sT/btpccVP7STW0AyC+y88M2Wf/ncm3ZsoVdu3bRpk0bioqKShzr2rVkV/rBgwfp06dPicf69OnDwYPlD/wvT/v25z+IRkRoXXFpaWnO+/To0aNE+V69elX6Hud06VK1+zD9PXbQ4j8X++WQFpIalpiez+wNSQD0iAnmujb1yy1rOWDAG0irl4R/YPWuPXIhd/dqzNtLj5BTWMzkn/awelLpTwIjhg/i9zcPUa+wAXNXLGbkoGFlXEkI18nPtmo76WIgLmQbb3X+DoCU7EL+itNaR0Z0jXJ56wjAtS37scbnS8LzY1iyaj3du7VxHmvdIIBGwV4knylkxvI47uha8125/2Q06Xng/X4XL1hN966I2NhYdDpdqbEaTZo0AcDLy6vUOeV17ZTnXEvW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04ZTSTabTR02bJjasGFDddeuXWpKSorzq6ioyFnummuuUT/88EPn90899ZS6evVqNTExUV2/fr06cOBANSQkRE1LS3PF01Dnzp2renp6qnPmzFEPHDigPvDAA2pgYKB6+vRpl8Sjqqr68MMPqwEBAerq1atL/FwtFouzzD333KM+88wzzu+nTZum/vnnn2pCQoK6fft29c4771TNZrO6f/9+VzwFJ3f7fUtdql7uVp+kLglR2mUlJBaLRb3uuuvU0NBQ1cPDQ42OjlbHjRvn0j+aiYmJKlDm16pVq5zloqOj1SlTpji/HzFihBoREaGaTCY1MjJSHTFihBofH1/zT+BvPvzwQ7VRo0aqyWRSu3fvrm7atMml8ZT3c509e7azTL9+/dR7773X+f2ECROczyE8PFy94YYb1B07dtR88P/gbr9vqUvVz53qk9QlIUq77Fk2QgghhBCXS/ayEUIIIYTLSUIihBBCCJeThEQIIYQQLicJiRBCCCFcThISIYQQQricJCRCCCGEcDlJSIQQQgjhcpKQCCGEEMLlJCGpQf3792fChAnO7xs3bsyMGTNcFo8QtZnUJyHqFklIXGjr1q088MADVX7dV199ld69e+Pt7U1gYGCVX18Id1Qd9SkpKYmxY8cSExODl5cXTZs2ZcqUKdhstiq9jxACjK4O4EoWGhpaLde12Wzcfvvt9OrViy+//LJa7iGEu6mO+nTo0CEUReHTTz8lNjaWffv2MW7cOAoKCpg+fXqV30+IK5m0kFSTgoICRo8eja+vLxEREbzzzjulyvyziVmn0/Hpp5/yr3/9C29vb1q1asXGjRuJj4+nf//++Pj40Lt3bxISEi5472nTpvHEE0/Qrl27qn5aQriEq+rTkCFDmD17Ntdddx1NmjRh2LBhTJw4kQULFlTH0xTiiiYJSTWZNGkSa9asYeHChSxdupTVq1ezY8eOi5738ssvM3r0aHbt2kXLli0ZOXIkDz74IM8++yzbtm1DVVXGjx9fA89ACPfhTvUpJyeH4ODgS30qQojyuHaz4bopLy9PNZlM6g8//OB8LDMzU/Xy8lIff/xx52PR0dHqe++95/weUF944QXn9xs3blQB9csvv3Q+9v3336tms7lCccyePVsNCAi45OchhDtwl/qkqqoaFxen+vv7q5999tmlPRkhRLmkhaQaJCQkYLPZ6NGjh/Ox4OBgWrRocdFz27dv7/x/eHg4QImul/DwcKxWK7m5uVUYsRDuy13q08mTJxkyZAi3334748aNq8xTEEJUgCQkbsbDw8P5f51OV+5jiqLUbGBC1EJVVZ9OnTrFgAED6N27N5999lk1RCqEkISkGjRt2hQPDw82b97sfCwrK4sjR464MCohaidX16eTJ0/Sv39/unTpwuzZs9Hr5W1TiOog036rga+vL2PHjmXSpEnUq1ePsLAwnn/++Rp7I0tOTubMmTMkJyfjcDjYtWsXALGxsfj6+tZIDEJUFVfWp3PJSHR0NNOnTyc9Pd15rH79+tV+fyGuJJKQVJO3336b/Px8hg4dip+fH0899RQ5OTk1cu8XX3yRr7/+2vl9p06dAFi1ahX9+/evkRiEqEquqk/Lli0jPj6e+Ph4GjZsWOKYqqrVfn8hriQ6VWqVEEIIIVxMOkOFEEII4XKSkAghhBDC5SQhEUIIIYTLSUIihBBCCJeThEQIIYQQLicJiRBCCCFcThISIYQQQricJCRCCCGEcDlJSIQQQgjhcpKQCCGEEMLlJCERQgghhMv9P2RHkkMPNmn2AAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from torch import ones, eye\n", + "import torch\n", + "from torch.distributions import MultivariateNormal\n", + "\n", + "from sbi.inference import SNPE, ImportanceSamplingPosterior\n", + "from sbi.utils import BoxUniform\n", + "from sbi.inference.potentials.base_potential import BasePotential\n", + "from sbi.analysis import pairplot, marginal_plot\n", + "\n", + "\n", + "class Simulator:\n", + " def __init__(self):\n", + " pass\n", + "\n", + " def log_prob(self, theta, x):\n", + " return MultivariateNormal(theta, eye(2)).log_prob(x) + prior.log_prob(theta)\n", + "\n", + " def sample(self, theta):\n", + " return theta + torch.randn((theta.shape))\n", + "\n", + "\n", + "class Potential(BasePotential):\n", + " allow_iid_x = False\n", + "\n", + " def __init__(self, prior, x_o, **kwargs):\n", + " super().__init__(prior, x_o, **kwargs)\n", + "\n", + " def __call__(self, theta, **kwargs):\n", + " return sim.log_prob(theta, self.x_o)\n", + "\n", + "\n", + "prior = BoxUniform(-5 * ones((2,)), 5 * ones((2,)))\n", + "sim = Simulator()\n", + "\n", + "_ = torch.manual_seed(3)\n", + "theta = prior.sample((50,))\n", + "x = sim.sample(theta)\n", + "\n", + "_ = torch.manual_seed(4)\n", + "inference = SNPE(prior=prior)\n", + "_ = inference.append_simulations(theta, x).train()\n", + "posterior = inference.build_posterior()\n", + "\n", + "_ = torch.manual_seed(2)\n", + "theta_gt = prior.sample((5,))\n", + "observations = sim.sample(theta_gt)\n", + "print(\"observations.shape\", observations.shape)\n", + "\n", + "\n", + "oversampling_factor = 128 # higher will be slower but more accurate\n", + "n_samples = 5000\n", + "\n", + "non_corrected_samples_for_all_observations = []\n", + "corrected_samples_for_all_observations = []\n", + "true_samples = []\n", + "for obs in observations:\n", + " non_corrected_samples_for_all_observations.append(posterior.set_default_x(obs).sample((n_samples,)))\n", + " corrected_posterior = ImportanceSamplingPosterior(\n", + " potential_fn=Potential(prior=None, x_o=obs),\n", + " proposal=posterior.set_default_x(obs),\n", + " method=\"sir\",\n", + " )\n", + " corrected_samples = corrected_posterior.sample((n_samples,), oversampling_factor=oversampling_factor)\n", + " corrected_samples_for_all_observations.append(corrected_samples)\n", + "\n", + " gt_samples = MultivariateNormal(obs, eye(2)).sample((n_samples * 5,))\n", + " gt_samples = gt_samples[prior.support.check(gt_samples)][:n_samples]\n", + " true_samples.append(gt_samples)\n", + "\n", + "\n", + "for i in range(len(observations)):\n", + " fig, ax = marginal_plot(\n", + " [non_corrected_samples_for_all_observations[i], corrected_samples_for_all_observations[i], true_samples[i]], \n", + " limits=[[-5, 5], [-5, 5]], \n", + " points=theta_gt[i], \n", + " figsize=(5, 1.5),\n", + " diag=\"kde\", # smooth histogram\n", + " )\n", + " ax[0][1].legend([\"NPE\", \"Corrected\", \"Ground truth\"], loc=\"upper right\", bbox_to_anchor=[1.8, 1.0, 0.0, 0.0])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f54aef73-e154-4e23-bbbe-69f08be85bdc", + "metadata": {}, + "outputs": [], + "source": [ + "potential_logprobs = potential_fn(samples)\n", + "proposal_logprobs = proposal.log_prob(samples)\n", + "log_importance_weights = potential_logprobs - proposal_logprobs" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "ad89e51f-6d0f-4b31-baef-12aff1bf0737", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'sir'" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "corrected_posterior.method" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "09471c29-c834-4ea4-901e-ee81a2db756e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([[ 0.6470, -1.2714],\n", + " [ 1.2079, 1.2723],\n", + " [ 1.7336, 1.2876],\n", + " [-1.1429, -5.3115],\n", + " [ 1.7205, -5.9448]])" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "observations" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "afa5d882-4509-48c8-a23b-f0c3d8798295", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "0d40494b6fed4026945ed987b2c38415", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Drawing 5000 posterior samples: 0%| | 0/5000 [00:00 Date: Tue, 2 Apr 2024 13:46:46 +0200 Subject: [PATCH 17/53] inverse_tranform methods for nflows and zuko (#1086) --- .../density_estimators/nflows_flow.py | 49 +++++++++++++++++++ .../density_estimators/zuko_flow.py | 49 +++++++++++++++++++ 2 files changed, 98 insertions(+) diff --git a/sbi/neural_nets/density_estimators/nflows_flow.py b/sbi/neural_nets/density_estimators/nflows_flow.py index f6c0aa0ad..a8bfb4224 100644 --- a/sbi/neural_nets/density_estimators/nflows_flow.py +++ b/sbi/neural_nets/density_estimators/nflows_flow.py @@ -25,6 +25,55 @@ def embedding_net(self) -> nn.Module: r"""Return the embedding network.""" return self.net._embedding_net + def inverse_transform(self, input: Tensor, condition: Tensor) -> Tensor: + r"""Return the inverse flow-transform of the inputs given a condition. + + The inverse transform is the transformation that maps the inputs back to the + base distribution (noise) space. + + Args: + input: Inputs to evaluate the inverse transform on of shape + (*batch_shape1, input_size). + condition: Conditions of shape (*batch_shape2, *condition_shape). + + Raises: + RuntimeError: If batch_shape1 and batch_shape2 are not broadcastable. + + Returns: + noise: Transformed inputs. + + Note: + This function should support PyTorch's automatic broadcasting. This means + the function should behave as follows for different input and condition + shapes: + - (input_size,) + (batch_size,*condition_shape) -> (batch_size,) + - (batch_size, input_size) + (*condition_shape) -> (batch_size,) + - (batch_size, input_size) + (batch_size, *condition_shape) -> (batch_size,) + - (batch_size1, input_size) + (batch_size2, *condition_shape) + -> RuntimeError i.e. not broadcastable + - (batch_size1,1, input_size) + (batch_size2, *condition_shape) + -> (batch_size1,batch_size2) + - (batch_size1, input_size) + (batch_size2,1, *condition_shape) + -> (batch_size2,batch_size1) + """ + self._check_condition_shape(condition) + condition_dims = len(self._condition_shape) + + # PyTorch's automatic broadcasting + batch_shape_in = input.shape[:-1] + batch_shape_cond = condition.shape[:-condition_dims] + batch_shape = torch.broadcast_shapes(batch_shape_in, batch_shape_cond) + # Expand the input and condition to the same batch shape + input = input.expand(batch_shape + (input.shape[-1],)) + condition = condition.expand(batch_shape + self._condition_shape) + # Flatten required by nflows, but now both have the same batch shape + input = input.reshape(-1, input.shape[-1]) + condition = condition.reshape(-1, *self._condition_shape) + + noise, _ = self.net._transorm(input, context=condition) + noise = noise.reshape(batch_shape) + return noise + def log_prob(self, input: Tensor, condition: Tensor) -> Tensor: r"""Return the log probabilities of the inputs given a condition or multiple i.e. batched conditions. diff --git a/sbi/neural_nets/density_estimators/zuko_flow.py b/sbi/neural_nets/density_estimators/zuko_flow.py index 5b2f98af4..13c1e1e94 100644 --- a/sbi/neural_nets/density_estimators/zuko_flow.py +++ b/sbi/neural_nets/density_estimators/zuko_flow.py @@ -34,6 +34,55 @@ def embedding_net(self) -> nn.Module: r"""Return the embedding network.""" return self._embedding_net + def inverse_transform(self, input: Tensor, condition: Tensor) -> Tensor: + r"""Return the inverse flow-transform of the inputs given a condition. + + The inverse transform is the transformation that maps the inputs back to the + base distribution (noise) space. + + Args: + input: Inputs to evaluate the inverse transform on of shape + (*batch_shape1, input_size). + condition: Conditions of shape (*batch_shape2, *condition_shape). + + Raises: + RuntimeError: If batch_shape1 and batch_shape2 are not broadcastable. + + Returns: + noise: Transformed inputs. + + Note: + This function should support PyTorch's automatic broadcasting. This means + the function should behave as follows for different input and condition + shapes: + - (input_size,) + (batch_size,*condition_shape) -> (batch_size,) + - (batch_size, input_size) + (*condition_shape) -> (batch_size,) + - (batch_size, input_size) + (batch_size, *condition_shape) -> (batch_size,) + - (batch_size1, input_size) + (batch_size2, *condition_shape) + -> RuntimeError i.e. not broadcastable + - (batch_size1,1, input_size) + (batch_size2, *condition_shape) + -> (batch_size1,batch_size2) + - (batch_size1, input_size) + (batch_size2,1, *condition_shape) + -> (batch_size2,batch_size1) + """ + + self._check_condition_shape(condition) + condition_dims = len(self._condition_shape) + + # PyTorch's automatic broadcasting + batch_shape_in = input.shape[:-1] + batch_shape_cond = condition.shape[:-condition_dims] + batch_shape = torch.broadcast_shapes(batch_shape_in, batch_shape_cond) + # Expand the input and condition to the same batch shape + input = input.expand(batch_shape + (input.shape[-1],)) + emb_cond = self._embedding_net(condition) + emb_cond = emb_cond.expand(batch_shape + (emb_cond.shape[-1],)) + + dists = self.net(emb_cond) + noise = dists.transform(input) + + return noise + def log_prob(self, input: Tensor, condition: Tensor) -> Tensor: r"""Return the log probabilities of the inputs given a condition or multiple i.e. batched conditions. From c8b87c316c37b014ce0dfbf2a538515475d64c76 Mon Sep 17 00:00:00 2001 From: manuelgloeckler <38903899+manuelgloeckler@users.noreply.github.com> Date: Tue, 2 Apr 2024 13:48:36 +0200 Subject: [PATCH 18/53] multiprocessing only with num_cores (#1117) * multiprocessing only with num_cores * revert to what @baschdl suggested * update comment * remove comment --- tests/multiprocessing_test.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/multiprocessing_test.py b/tests/multiprocessing_test.py index fc2a02317..e53a271a2 100644 --- a/tests/multiprocessing_test.py +++ b/tests/multiprocessing_test.py @@ -26,7 +26,7 @@ def slow_linear_gaussian(theta): @pytest.mark.slow -@pytest.mark.parametrize("num_workers", [10, -2]) +@pytest.mark.parametrize("num_workers", [2]) @pytest.mark.parametrize("sim_batch_size", ((1, 10, 100))) def test_benchmarking_parallel_simulation(sim_batch_size, num_workers): """Test whether joblib is faster than serial processing.""" @@ -54,5 +54,5 @@ def test_benchmarking_parallel_simulation(sim_batch_size, num_workers): ) toc_joblib = time.time() - tic - # Allow joblib to be 10 percent slower due to overhead. - assert toc_joblib <= toc_sp * 1.1 + # Allow joblib to be 50 percent slower due to overhead. + assert toc_joblib <= toc_sp * 1.5 From bb35def3341a0896a66b7038d9c02931f6797113 Mon Sep 17 00:00:00 2001 From: "A. Ziaeemehr" Date: Tue, 2 Apr 2024 13:52:38 +0200 Subject: [PATCH 19/53] Evaluation of posterior fit (#1023) --- sbi/utils/metrics.py | 84 +++++++++++++++++++++++++++++++++++++++++- tests/analysis_test.py | 1 + tests/metrics_test.py | 44 +++++++++++++++++++++- 3 files changed, 127 insertions(+), 2 deletions(-) diff --git a/sbi/utils/metrics.py b/sbi/utils/metrics.py index 16eb57357..69064017e 100644 --- a/sbi/utils/metrics.py +++ b/sbi/utils/metrics.py @@ -1,7 +1,7 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed # under the Affero General Public License v3, see . -from typing import Any, Dict, Optional +from typing import Any, Dict, Optional, Union import numpy as np import torch @@ -262,6 +262,88 @@ def unbiased_mmd_squared_hypothesis_test(x, y, alpha=0.05): return mmd_square_unbiased, threshold +def posterior_shrinkage( + prior_samples: Union[Tensor, np.ndarray], post_samples: Union[Tensor, np.ndarray] +) -> Tensor: + """ + Calculate the posterior shrinkage, quantifying how much + the posterior distribution contracts from the initial + prior distribution. + References: + https://arxiv.org/abs/1803.08393 + + Parameters + ---------- + prior_samples : array_like or torch.Tensor [n_samples, n_params] + Samples from the prior distribution. + post_samples : array-like or torch.Tensor [n_samples, n_params] + Samples from the posterior distribution. + + Returns + ------- + shrinkage : torch.Tensor [n_params] + The posterior shrinkage. + """ + + if len(prior_samples) == 0 or len(post_samples) == 0: + raise ValueError("Input samples are empty") + + if not isinstance(prior_samples, torch.Tensor): + prior_samples = torch.tensor(prior_samples, dtype=torch.float32) + if not isinstance(post_samples, torch.Tensor): + post_samples = torch.tensor(post_samples, dtype=torch.float32) + + if prior_samples.ndim == 1: + prior_samples = prior_samples[:, None] + if post_samples.ndim == 1: + post_samples = post_samples[:, None] + + prior_std = torch.std(prior_samples, dim=0) + post_std = torch.std(post_samples, dim=0) + + return 1 - (post_std / prior_std) ** 2 + + +def posterior_zscore( + true_theta: Union[Tensor, np.array, float], post_samples: Union[Tensor, np.array] +): + """ + Calculate the posterior z-score, quantifying how much the posterior + distribution of a parameter encompasses its true value. + References: + https://arxiv.org/abs/1803.08393 + + Parameters + ---------- + true_theta : float, array-like or torch.Tensor [n_params] + The true value of the parameters. + post_samples : array-like or torch.Tensor [n_samples, n_params] + Samples from the posterior distributions. + + Returns + ------- + z : Tensor [n_params] + The z-score of the posterior distributions. + """ + + if len(post_samples) == 0: + raise ValueError("Input samples are empty") + + if not isinstance(true_theta, torch.Tensor): + true_theta = torch.tensor(true_theta, dtype=torch.float32) + if not isinstance(post_samples, torch.Tensor): + post_samples = torch.tensor(post_samples, dtype=torch.float32) + + true_theta = np.atleast_1d(true_theta) + if post_samples.ndim == 1: + post_samples = post_samples[:, None] + + post_mean = torch.mean(post_samples, dim=0) + post_std = torch.std(post_samples, dim=0) + + return torch.abs((post_mean - true_theta) / post_std) + + def _test(): n = 2500 x, y = torch.randn(n, 5), torch.randn(n, 5) diff --git a/tests/analysis_test.py b/tests/analysis_test.py index b69e654c7..0eb9d1eeb 100644 --- a/tests/analysis_test.py +++ b/tests/analysis_test.py @@ -18,6 +18,7 @@ def test_analysis_modules(device: str) -> None: Args: device: Which device to run the inference on. """ + num_dim = 3 device = process_device(device) prior = BoxUniform( diff --git a/tests/metrics_test.py b/tests/metrics_test.py index 19c943ffb..f6171c0f6 100644 --- a/tests/metrics_test.py +++ b/tests/metrics_test.py @@ -9,7 +9,7 @@ from sklearn.neural_network import MLPClassifier from torch.distributions import MultivariateNormal as tmvn -from sbi.utils.metrics import c2st, c2st_scores +from sbi.utils.metrics import c2st, c2st_scores, posterior_shrinkage, posterior_zscore ## c2st related: ## for a study about c2st see https://github.com/psteinb/c2st/ @@ -128,3 +128,45 @@ def test_c2st_scores(dist_sigma, c2st_lowerbound, c2st_upperbound): assert obs2_c2st.mean() <= c2st_upperbound assert np.allclose(obs2_c2st, obs_c2st, atol=0.05) + + +def test_posterior_shrinkage(): + prior_samples = np.array([2]) + post_samples = np.array([3]) + assert torch.isnan(posterior_shrinkage(prior_samples, post_samples)[0]) + + prior_samples = np.array([[1, 2], [2, 3]]) + post_samples = np.array([[2, 3], [3, 4]]) + expected_shrinkage = torch.tensor([0.0, 0.0]) + assert torch.allclose( + posterior_shrinkage(prior_samples, post_samples), expected_shrinkage + ) + + prior_samples = torch.tensor([[1.0, 2.0], [2.0, 3.0]]) + post_samples = torch.tensor([[2.0, 3.0], [3.0, 4.0]]) + expected_shrinkage = torch.tensor([0.0, 0.0]) + assert torch.allclose( + posterior_shrinkage(prior_samples, post_samples), expected_shrinkage + ) + + prior_samples = np.array([]) + post_samples = np.array([]) + with pytest.raises(ValueError): + posterior_shrinkage(prior_samples, post_samples) + + +def test_posterior_zscore(): + true_theta = np.array([2, 3]) + post_samples = np.array([[1, 2], [2, 3], [3, 4]]) + expected_zscore = torch.tensor([0.0, 0.0]) + assert torch.allclose(posterior_zscore(true_theta, post_samples), expected_zscore) + + true_theta = torch.tensor([2.0, 3.0]) + post_samples = torch.tensor([[1.0, 2.0], [2.0, 3.0], [3.0, 4.0]]) + expected_zscore = torch.tensor([0.0, 0.0]) + assert torch.allclose(posterior_zscore(true_theta, post_samples), expected_zscore) + + true_theta = np.array([]) + post_samples = np.array([]) + with pytest.raises(ValueError): + posterior_zscore(true_theta, post_samples) From 6bbb4461b835e9a11404afad4a3f41ff6d4c07ef Mon Sep 17 00:00:00 2001 From: Fabio Muratore <37794142+famura@users.noreply.github.com> Date: Wed, 3 Apr 2024 08:23:21 +0200 Subject: [PATCH 20/53] Split the github workflow in CI and CD (#1063) * First version * Deleted the old CI * Do not run on draft PRs * Deleted comment * Added --exitfirst * Commented out if for testing the workflow * Moved the pull_request tag from CI to CD * Changing on push and pull_request for CI and CD * More specific concurrency * Debugging why CD is not triggered * Moved if clause * Bug fix * Changed flags for code cov * Added -n auto from recent PR * Installing pytest cov with the dev option * Updated testing and cov options * lfs is not used * Revert to pre-commit hooks as a separate job * First try of the codecov.yml * Format fix * No tokes was found, is this due to the codecov.yml? * The token was still not found * Before this commit a token was found * Test doc bulding * Docs workflow worked, moved it to CD * More detailed caching key * Run fast tests for pushes and fast+slow for PRs * Testing double exec * Revert since the last commit is only executed when the PR is merged * Add fallback keys if full key is not available * Do not run the slow tests in CI * Fixed typo * Add a workflow for manual selection of markers * Added coverage report for fast CI back in --------- Co-authored-by: Sebastian Bischoff --- .github/codecov.yml | 28 +++++++++++ .github/workflows/cd.yml | 78 +++++++++++++++++++++++++++++ .github/workflows/ci.yml | 81 +++++++++++++++++++++++++++++++ .github/workflows/manual_test.yml | 65 +++++++++++++++++++++++++ .github/workflows/tests.yml | 71 --------------------------- pyproject.toml | 1 + 6 files changed, 253 insertions(+), 71 deletions(-) create mode 100644 .github/codecov.yml create mode 100644 .github/workflows/cd.yml create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/manual_test.yml delete mode 100644 .github/workflows/tests.yml diff --git a/.github/codecov.yml b/.github/codecov.yml new file mode 100644 index 000000000..341df26cf --- /dev/null +++ b/.github/codecov.yml @@ -0,0 +1,28 @@ +# The official docs +# https://docs.codecov.io/docs/codecov-yaml +# https://docs.codecov.com/docs/common-recipe-list + +# Check if this file is valid +# cd PATH_TO/sbi/.github +# curl -X POST --data-binary @codecov.yml https://codecov.io/validate + +ignore: + - "sbi/examples" + +coverage: + status: + project: + default: + target: 70% # the required coverage value + threshold: 2% # allow the coverage to drop by X%, and posting a success status + if_ci_failed: error # will set the status to success only if the CI is successful, alternative: success + patch: # about the individual commit + default: + target: 50% # minimum coverage ratio that the commit must meet to be considered a success + threshold: 2% # allow the coverage to drop by X%, and posting a success status + if_ci_failed: error # will set the status to success only if the CI is successful, alternative: success + +comment: + layout: "diff, flags, files" + behavior: default # update if exists, otherwise post new + require_changes: false # if true, only post the comment if coverage changes diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml new file mode 100644 index 000000000..6c1bc8a4d --- /dev/null +++ b/.github/workflows/cd.yml @@ -0,0 +1,78 @@ +name: Continuous Deployment + +on: + push: + branches: [main] + workflow_dispatch: + +defaults: + run: + shell: bash + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} + cancel-in-progress: true + +jobs: + pre-commit: + name: ruff and hooks. + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.8' + - uses: pre-commit/action@v3.0.1 + with: + extra_args: --all-files --show-diff-on-failure + + cd: + name: CD + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + lfs: false + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.8' + + - name: Cache dependency + id: cache-dependencies + uses: actions/cache@v4 + with: + path: ~/.cache/pip + key: ${{ runner.os }}-pip + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -e .[dev] + + - name: Check types with pyright + run: | + pyright sbi + + - name: Run the fast and the slow CPU tests with coverage + run: | + pytest -v -x -n auto -m "not gpu" --cov=sbi --cov-report=xml tests/ + + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v4-beta + with: + env_vars: OS,PYTHON + file: ./coverage.xml + flags: unittests + name: codecov-sbi-all-cpu + token: ${{ secrets.CODECOV_TOKEN }} + + - name: Check doc building + run: | + jupyter nbconvert --to markdown tutorials/*.ipynb --output-dir docs/tutorial/ + jupyter nbconvert --to markdown examples/*.ipynb --output-dir docs/examples/ + mkdocs build -f docs/mkdocs.yml --site-dir site diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 000000000..0f67f2d13 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,81 @@ +name: Continuous Integration + +on: [pull_request, workflow_dispatch] + +defaults: + run: + shell: bash + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} + cancel-in-progress: true + +jobs: + pre-commit: + name: ruff and hooks. + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.8' + - uses: pre-commit/action@v3.0.1 + with: + extra_args: --all-files --show-diff-on-failure + + ci: + name: CI + runs-on: ubuntu-latest + if: | + github.event_name == 'push' || + (github.event_name == 'pull_request' && github.event.pull_request.draft == false) + strategy: + fail-fast: false + matrix: + python-version: ['3.8'] + torch-version: ['1.11', '2.2'] + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + lfs: false + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + + - name: Cache dependency + id: cache-dependencies + uses: actions/cache@v4 + with: + path: ~/.cache/pip + key: ${{ runner.os }}-pip-${{ matrix.python-version }}-${{ matrix.torch-version }}$ + restore-keys: | + ${{ runner.os }}-pip-${{ matrix.python-version }}- + ${{ runner.os }}-pip- + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install torch==${{ matrix.torch-version }} --extra-index-url https://download.pytorch.org/whl/cpu + pip install -e .[dev] + + - name: Check types with pyright + run: | + pyright sbi + + - name: Run the fast CPU tests with coverage + run: | + pytest -v -x -n auto -m "not slow and not gpu" --cov=sbi --cov-report=xml tests/ + + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v4 + with: + env_vars: OS,PYTHON + file: ./coverage.xml + flags: unittests + name: codecov-sbi-fast-cpu + token: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/manual_test.yml b/.github/workflows/manual_test.yml new file mode 100644 index 000000000..bab476f28 --- /dev/null +++ b/.github/workflows/manual_test.yml @@ -0,0 +1,65 @@ +name: Manual-Test + +on: + workflow_dispatch: + inputs: + pytest-marker: + description: "Combination of markers to restrict the tests, use '' to run all tests." + type: choice + options: + - 'not slow and not gpu' + - 'not gpu' + - 'not slow' + - '' + default: '' + required: true + +defaults: + run: + shell: bash + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} + cancel-in-progress: true + +jobs: + test: + name: manual-test + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python-version: ['3.8'] + torch-version: ['1.11', '2.2'] + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + lfs: false + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + + - name: Cache dependency + id: cache-dependencies + uses: actions/cache@v4 + with: + path: ~/.cache/pip + key: ${{ runner.os }}-pip-${{ matrix.python-version }}-${{ matrix.torch-version }}$ + restore-keys: | + ${{ runner.os }}-pip-${{ matrix.python-version }}- + ${{ runner.os }}-pip- + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install torch==${{ matrix.torch-version }} --extra-index-url https://download.pytorch.org/whl/cpu + pip install -e .[dev] + + - name: Run the selected tests without coverage + run: | + pytest -v -x -m ${{ inputs.pytest-marker }} tests/ diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml deleted file mode 100644 index 663b6bef6..000000000 --- a/.github/workflows/tests.yml +++ /dev/null @@ -1,71 +0,0 @@ -name: Continuous Integration - -on: - push: - branches: - - main - pull_request: - workflow_dispatch: - -jobs: - pre-commit: - name: ruff and hooks. - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 - with: - python-version: '3.8' - - uses: pre-commit/action@v3.0.1 - with: - extra_args: --all-files - - test: - name: Tests - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - python-version: ["3.8"] - torch-version: ["1.11", "2.2"] - - steps: - - uses: actions/checkout@v4 - with: - lfs: true - - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - - - name: Cache dependency - id: cache-dependencies - uses: actions/cache@v4 - with: - path: ~/.cache/pip - key: ${{ runner.os }}-pip - - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install torch==${{ matrix.torch-version }} --extra-index-url https://download.pytorch.org/whl/cpu - pip install -e .[dev] - - - name: Check types with pyright - run: | - pyright sbi - - - name: Test with pytest - run: | - pip install pytest-cov - pytest -n auto -m "not slow and not gpu" tests/ --cov=sbi --cov-report=xml - - - name: Upload coverage to Codecov - uses: codecov/codecov-action@v4-beta - with: - file: ./coverage.xml - flags: unittests - env_vars: OS,PYTHON - name: codecov-umbrella - fail_ci_if_error: false - env: - token: ${{ secrets.CODECOV_TOKEN }} diff --git a/pyproject.toml b/pyproject.toml index d18bca461..4b579a0d3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -62,6 +62,7 @@ dev = [ "ruff>=0.3.3", # Test "pytest", + "pytest-cov", "pytest-xdist", "torchtestcase", ] From 7be211529fb300786f94add749da1e50f115a98b Mon Sep 17 00:00:00 2001 From: Jan Date: Wed, 3 Apr 2024 11:13:37 +0200 Subject: [PATCH 21/53] fix snpe-a tests. (#1119) --- tests/linearGaussian_snle_test.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/linearGaussian_snle_test.py b/tests/linearGaussian_snle_test.py index 2eedf9404..8a9fea093 100644 --- a/tests/linearGaussian_snle_test.py +++ b/tests/linearGaussian_snle_test.py @@ -151,7 +151,7 @@ def test_c2st_and_map_snl_on_linearGaussian_different( """ num_samples = 500 - num_simulations = 5000 + num_simulations = 3000 trials_to_test = [1] # likelihood_mean will be likelihood_shift+theta @@ -173,7 +173,7 @@ def simulator(theta): inference = SNLE(density_estimator=density_estimator, show_progress_bars=False) theta, x = simulate_for_sbi( - simulator, prior, num_simulations, simulation_batch_size=10000 + simulator, prior, num_simulations, simulation_batch_size=num_simulations ) likelihood_estimator = inference.append_simulations(theta, x).train() @@ -213,7 +213,7 @@ def simulator(theta): check_c2st( samples, target_samples, - alg=f"snle_a-{prior_str}-prior-{num_trials}-trials", + alg=f"snle_a-{prior_str}-prior-{model_str}-{num_trials}-trials", ) map_ = posterior.map( From 6e0e98a5d74a4a8e2b990a0e43cb01c2a3edb4f2 Mon Sep 17 00:00:00 2001 From: Fabio Muratore <37794142+famura@users.noreply.github.com> Date: Wed, 3 Apr 2024 21:33:43 +0200 Subject: [PATCH 22/53] Integrate PyMC samplers and clean up unsued MCMC sampler (#1053) * Deleted unused MCMC class, using Pyro's leads to MP errors currently * First try on fixing the pickling error * Moved test class * Test are running * Removed the Pyro-based slice sampler * add draft pymc interface * fix dependency typo * Minor edits * Deleted empty file * improved docstrings, attempt to fix ruff and pyright * improve test * @famura improve tests * Minor test input rework * Docs * Thinning has fallen out of fashion, ask PyMC * Unified warmup_steps default to 200 * More asserts in the test * Bug fix * Improved test_api_posterior_sampler_set * Removed [:num_samples] tuncation * final test improvement and minor cleanup * ignore pyright * Process the new thinning default * Formatting * Formatting * Type fix * Formatting * attempt to fix num sample edge case * Added [:num_samples] back in * update docstring for num_chains * Fixes after merge * Doc fix * Changed tests parameters * Doc updates from review * apply suggested change to thinning docstring Co-authored-by: Jan * apply suggested change to thinning docstring [2] Co-authored-by: Jan * expose mc_context argument * fix assumption of default thin value --------- Co-authored-by: felixp8 Co-authored-by: Felix Pei <64850082+felixp8@users.noreply.github.com> Co-authored-by: Jan --- examples/00_HH_simulator.ipynb | 2 +- pyproject.toml | 1 + sbi/inference/posteriors/mcmc_posterior.py | 196 ++++++-- sbi/samplers/mcmc/__init__.py | 2 +- sbi/samplers/mcmc/build_sampler.py | 0 sbi/samplers/mcmc/mcmc.py | 151 ------ sbi/samplers/mcmc/pymc_wrapper.py | 218 +++++++++ sbi/samplers/mcmc/slice.py | 212 -------- sbi/samplers/mcmc/slice_numpy.py | 16 +- tests/mcmc_slice_pyro/LICENSE.md | 202 -------- tests/mcmc_slice_pyro/__init__.py | 0 tests/mcmc_slice_pyro/common.py | 273 ----------- tests/mcmc_slice_pyro/conftest.py | 112 ----- tests/mcmc_slice_pyro/test_slice.py | 515 -------------------- tests/mcmc_test.py | 88 +++- tests/posterior_sampler_test.py | 54 +- tutorials/00_getting_started_flexible.ipynb | 4 +- tutorials/01_gaussian_amortized.ipynb | 4 +- 18 files changed, 495 insertions(+), 1555 deletions(-) delete mode 100644 sbi/samplers/mcmc/build_sampler.py delete mode 100644 sbi/samplers/mcmc/mcmc.py create mode 100644 sbi/samplers/mcmc/pymc_wrapper.py delete mode 100644 sbi/samplers/mcmc/slice.py delete mode 100644 tests/mcmc_slice_pyro/LICENSE.md delete mode 100644 tests/mcmc_slice_pyro/__init__.py delete mode 100644 tests/mcmc_slice_pyro/common.py delete mode 100644 tests/mcmc_slice_pyro/conftest.py delete mode 100644 tests/mcmc_slice_pyro/test_slice.py diff --git a/examples/00_HH_simulator.ipynb b/examples/00_HH_simulator.ipynb index 269cd3663..3b88cce0b 100644 --- a/examples/00_HH_simulator.ipynb +++ b/examples/00_HH_simulator.ipynb @@ -256,7 +256,7 @@ "ax.set_xticks([])\n", "ax.set_yticks([-80, -20, 40])\n", "\n", - "# plot the injected current \n", + "# plot the injected current\n", "ax = plt.subplot(gs[1])\n", "plt.plot(t, I_inj * A_soma * 1e3, \"k\", lw=2)\n", "plt.xlabel(\"time (ms)\")\n", diff --git a/pyproject.toml b/pyproject.toml index 4b579a0d3..fd0f9c49f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -43,6 +43,7 @@ dependencies = [ "torch>=1.8.0", "tqdm", "zuko>=1.0.0", + "pymc>=5.0.0", ] [project.optional-dependencies] diff --git a/sbi/inference/posteriors/mcmc_posterior.py b/sbi/inference/posteriors/mcmc_posterior.py index 1079f4602..75d8b1cdb 100644 --- a/sbi/inference/posteriors/mcmc_posterior.py +++ b/sbi/inference/posteriors/mcmc_posterior.py @@ -21,7 +21,7 @@ from sbi.inference.potentials.base_potential import BasePotential from sbi.samplers.mcmc import ( IterateParameters, - Slice, + PyMCSampler, SliceSamplerSerial, SliceSamplerVectorized, proposal_init, @@ -46,13 +46,14 @@ def __init__( proposal: Any, theta_transform: Optional[TorchTransform] = None, method: str = "slice_np", - thin: int = 10, - warmup_steps: int = 10, + thin: int = -1, + warmup_steps: int = 200, num_chains: int = 1, init_strategy: str = "resample", init_strategy_parameters: Optional[Dict[str, Any]] = None, init_strategy_num_candidates: Optional[int] = None, num_workers: int = 1, + mp_context: str = "spawn", device: Optional[str] = None, x_shape: Optional[torch.Size] = None, ): @@ -64,14 +65,17 @@ def __init__( theta_transform: Transformation that will be applied during sampling. Allows to perform MCMC in unconstrained space. method: Method used for MCMC sampling, one of `slice_np`, - `slice_np_vectorized`, `slice`, `hmc`, `nuts`. `slice_np` is a custom + `slice_np_vectorized`, `hmc_pyro`, `nuts_pyro`, `slice_pymc`, + `hmc_pymc`, `nuts_pymc`. `slice_np` is a custom numpy implementation of slice sampling. `slice_np_vectorized` is identical to `slice_np`, but if `num_chains>1`, the chains are vectorized for `slice_np_vectorized` whereas they are run sequentially - for `slice_np`. The samplers `hmc`, `nuts` or `slice` sample with Pyro. - thin: The thinning factor for the chain. + for `slice_np`. The samplers ending on `_pyro` are using Pyro, and + likewise the samplers ending on `_pymc` are using PyMC. + thin: The thinning factor for the chain, default 1 (no thinning). warmup_steps: The initial number of samples to discard. - num_chains: The number of chains. + num_chains: The number of chains. Should generally be at most + `num_workers - 1`. init_strategy: The initialisation strategy for chains; `proposal` will draw init locations from `proposal`, whereas `sir` will use Sequential- Importance-Resampling (SIR). SIR initially samples @@ -82,17 +86,32 @@ def __init__( uses `exp(potential_fn)` as weights. init_strategy_parameters: Dictionary of keyword arguments passed to the init strategy, e.g., for `init_strategy=sir` this could be - `num_candidate_samples`, i.e., the number of candidates to to find init + `num_candidate_samples`, i.e., the number of candidates to find init locations (internal default is `1000`), or `device`. - init_strategy_num_candidates: Number of candidates to to find init + init_strategy_num_candidates: Number of candidates to find init locations in `init_strategy=sir` (deprecated, use init_strategy_parameters instead). num_workers: number of cpu cores used to parallelize mcmc + mp_context: Multiprocessing start method, either `"fork"` or `"spawn"` + (default), used by Pyro and PyMC samplers. `"fork"` can be significantly + faster than `"spawn"` but is only supported on POSIX-based systems + (e.g. Linux and macOS, not Windows). device: Training device, e.g., "cpu", "cuda" or "cuda:0". If None, `potential_fn.device` is used. x_shape: Shape of a single simulator output. If passed, it is used to check the shape of the observed data and give a descriptive error. """ + if method == "slice": + warn( + "The Pyro-based slice sampler is deprecated, and the method `slice` " + "has been changed to `slice_np`, i.e., the custom " + "numpy-based slice sampler.", + DeprecationWarning, + stacklevel=2, + ) + method = "slice_np" + + thin = _process_thin_default(thin) super().__init__( potential_fn, @@ -109,6 +128,7 @@ def __init__( self.init_strategy = init_strategy self.init_strategy_parameters = init_strategy_parameters or {} self.num_workers = num_workers + self.mp_context = mp_context self._posterior_sampler = None # Hardcode parameter name to reduce clutter kwargs. self.param_name = "theta" @@ -202,6 +222,7 @@ def sample( mcmc_method: Optional[str] = None, sample_with: Optional[str] = None, num_workers: Optional[int] = None, + mp_context: Optional[str] = None, show_progress_bars: bool = True, ) -> Tensor: r"""Return samples from posterior distribution $p(\theta|x)$ with MCMC. @@ -233,6 +254,7 @@ def sample( num_chains = self.num_chains if num_chains is None else num_chains init_strategy = self.init_strategy if init_strategy is None else init_strategy num_workers = self.num_workers if num_workers is None else num_workers + mp_context = self.mp_context if mp_context is None else mp_context init_strategy_parameters = ( self.init_strategy_parameters if init_strategy_parameters is None @@ -289,7 +311,7 @@ def sample( ) num_samples = torch.Size(sample_shape).numel() - track_gradients = method in ("hmc", "nuts") + track_gradients = method in ("hmc_pyro", "nuts_pyro", "hmc_pymc", "nuts_pymc") with torch.set_grad_enabled(track_gradients): if method in ("slice_np", "slice_np_vectorized"): transformed_samples = self._slice_np_mcmc( @@ -302,7 +324,7 @@ def sample( num_workers=num_workers, show_progress_bars=show_progress_bars, ) - elif method in ("hmc", "nuts", "slice"): + elif method in ("hmc_pyro", "nuts_pyro"): transformed_samples = self._pyro_mcmc( num_samples=num_samples, potential_function=self.potential_, @@ -312,9 +334,22 @@ def sample( warmup_steps=warmup_steps, # type: ignore num_chains=num_chains, show_progress_bars=show_progress_bars, + mp_context=mp_context, + ) + elif method in ("hmc_pymc", "nuts_pymc", "slice_pymc"): + transformed_samples = self._pymc_mcmc( + num_samples=num_samples, + potential_function=self.potential_, + initial_params=initial_params, + mcmc_method=method, # type: ignore + thin=thin, # type: ignore + warmup_steps=warmup_steps, # type: ignore + num_chains=num_chains, + show_progress_bars=show_progress_bars, + mp_context=mp_context, ) else: - raise NameError + raise NameError(f"The sampling method {method} is not implemented!") samples = self.theta_transform.inv(transformed_samples) @@ -452,9 +487,10 @@ def _slice_np_mcmc( num_samples: Desired number of samples. potential_function: A callable **class**. initial_params: Initial parameters for MCMC chain. - thin: Thinning (subsampling) factor. + thin: Thinning (subsampling) factor, default 1 (no thinning). warmup_steps: Initial number of samples to discard. - vectorized: Whether to use a vectorized implementation of the Slice sampler. + vectorized: Whether to use a vectorized implementation of the + `SliceSampler`. num_workers: Number of CPU cores to use. init_width: Inital width of brackets. show_progress_bars: Whether to show a progressbar during sampling; @@ -494,8 +530,7 @@ def _slice_np_mcmc( self._mcmc_init_params = samples[:, -1, :].reshape(num_chains, dim_samples) # Collect samples from all chains. - samples = samples.reshape(-1, dim_samples)[:num_samples, :] - assert samples.shape[0] == num_samples + samples = samples.reshape(-1, dim_samples)[:num_samples] return samples.type(torch.float32).to(self._device) @@ -504,21 +539,24 @@ def _pyro_mcmc( num_samples: int, potential_function: Callable, initial_params: Tensor, - mcmc_method: str = "slice", - thin: int = 10, + mcmc_method: str = "nuts_pyro", + thin: int = -1, warmup_steps: int = 200, num_chains: Optional[int] = 1, show_progress_bars: bool = True, + mp_context: str = "spawn", ) -> Tensor: - r"""Return samples obtained using Pyro HMC, NUTS for slice kernels. + r"""Return samples obtained using Pyro's HMC or NUTS sampler. Args: num_samples: Desired number of samples. potential_function: A callable **class**. A class, but not a function, is picklable for Pyro MCMC to use it across chains in parallel, even when the potential function requires evaluating a neural network. - mcmc_method: One of `hmc`, `nuts` or `slice`. - thin: Thinning (subsampling) factor. + initial_params: Initial parameters for MCMC chain. + mcmc_method: Pyro MCMC method to use, either `"hmc_pyro"` or + `"nuts_pyro"` (default). + thin: Thinning (subsampling) factor, default 1 (no thinning). warmup_steps: Initial number of samples to discard. num_chains: Whether to sample in parallel. If None, use all but one CPU. show_progress_bars: Whether to show a progressbar during sampling. @@ -526,17 +564,17 @@ def _pyro_mcmc( Returns: Tensor of shape (num_samples, shape_of_single_theta). """ + thin = _process_thin_default(thin) num_chains = mp.cpu_count() - 1 if num_chains is None else num_chains - - kernels = dict(slice=Slice, hmc=HMC, nuts=NUTS) + kernels = dict(hmc_pyro=HMC, nuts_pyro=NUTS) sampler = MCMC( kernel=kernels[mcmc_method](potential_fn=potential_function), - num_samples=(thin * num_samples) // num_chains + num_chains, + num_samples=ceil((thin * num_samples) / num_chains), warmup_steps=warmup_steps, initial_params={self.param_name: initial_params}, num_chains=num_chains, - mp_context="spawn", + mp_context=mp_context, disable_progbar=not show_progress_bars, transforms={}, ) @@ -550,10 +588,66 @@ def _pyro_mcmc( self._posterior_sampler = sampler samples = samples[::thin][:num_samples] - assert samples.shape[0] == num_samples return samples.detach() + def _pymc_mcmc( + self, + num_samples: int, + potential_function: Callable, + initial_params: Tensor, + mcmc_method: str = "nuts_pymc", + thin: int = -1, + warmup_steps: int = 200, + num_chains: Optional[int] = 1, + show_progress_bars: bool = True, + mp_context: str = "spawn", + ) -> Tensor: + r"""Return samples obtained using PyMC's HMC, NUTS or slice samplers. + + Args: + num_samples: Desired number of samples. + potential_function: A callable **class**. A class, but not a function, + is picklable for PyMC MCMC to use it across chains in parallel, + even when the potential function requires evaluating a neural network. + initial_params: Initial parameters for MCMC chain. + mcmc_method: mcmc_method: Pyro MCMC method to use, either `"hmc_pymc"` or + `"slice_pymc"`, or `"nuts_pymc"` (default). + thin: Thinning (subsampling) factor, default 1 (no thinning). + warmup_steps: Initial number of samples to discard. + num_chains: Whether to sample in parallel. If None, use all but one CPU. + show_progress_bars: Whether to show a progressbar during sampling. + + Returns: + Tensor of shape (num_samples, shape_of_single_theta). + """ + thin = _process_thin_default(thin) + num_chains = mp.cpu_count() - 1 if num_chains is None else num_chains + steps = dict(slice_pymc="slice", hmc_pymc="hmc", nuts_pymc="nuts") + + sampler = PyMCSampler( + potential_fn=potential_function, + step=steps[mcmc_method], + initvals=tensor2numpy(initial_params), + draws=ceil((thin * num_samples) / num_chains), + tune=warmup_steps, + chains=num_chains, + mp_ctx=mp_context, + progressbar=show_progress_bars, + param_name=self.param_name, + device=self._device, + ) + samples = sampler.run() + samples = torch.from_numpy(samples).to(dtype=torch.float32, device=self._device) + samples = samples.reshape(-1, initial_params.shape[1]) + + # Save posterior sampler. + self._posterior_sampler = sampler + + samples = samples[::thin][:num_samples] + + return samples + def _prepare_potential(self, method: str) -> Callable: """Combines potential and transform and takes care of gradients and pyro. @@ -563,13 +657,13 @@ def _prepare_potential(self, method: str) -> Callable: Returns: A potential function that is ready to be used in MCMC. """ - if method == "slice": - track_gradients = False - pyro = True - elif method in ("hmc", "nuts"): + if method in ("hmc_pyro", "nuts_pyro"): track_gradients = True pyro = True - elif "slice_np" in method: + elif method in ("hmc_pymc", "nuts_pymc"): + track_gradients = True + pyro = False + elif method in ("slice_np", "slice_np_vectorized", "slice_pymc"): track_gradients = False pyro = False else: @@ -662,8 +756,8 @@ def get_arviz_inference_data(self) -> InferenceData: Note: the InferenceData is constructed using the posterior samples generated in most recent call to `.sample(...)`. - For Pyro HMC and NUTS kernels InferenceData will contain diagnostics, for Pyro - Slice or sbi slice sampling samples, only the samples are added. + For Pyro and PyMC samplers, InferenceData will contain diagnostics, but for + sbi slice samplers, only the samples are added. Returns: inference_data: Arviz InferenceData object. @@ -672,16 +766,20 @@ def get_arviz_inference_data(self) -> InferenceData: self._posterior_sampler is not None ), """No samples have been generated, call .sample() first.""" - sampler: Union[MCMC, SliceSamplerSerial, SliceSamplerVectorized] = ( - self._posterior_sampler - ) + sampler: Union[ + MCMC, SliceSamplerSerial, SliceSamplerVectorized, PyMCSampler + ] = self._posterior_sampler # If Pyro sampler and samples not transformed, use arviz' from_pyro. - # Exclude 'slice' kernel as it lacks the 'divergence' diagnostics key. - if isinstance(self._posterior_sampler, (HMC, NUTS)) and isinstance( + if isinstance(sampler, (HMC, NUTS)) and isinstance( self.theta_transform, torch_tf.IndependentTransform ): inference_data = az.from_pyro(sampler) + # If PyMC sampler and samples not transformed, get cached InferenceData. + elif isinstance(sampler, PyMCSampler) and isinstance( + self.theta_transform, torch_tf.IndependentTransform + ): + inference_data = sampler.get_inference_data() # otherwise get samples from sampler and transform to original space. else: @@ -711,6 +809,28 @@ def get_arviz_inference_data(self) -> InferenceData: return inference_data +def _process_thin_default(thin: int) -> int: + """ + Check if the user did use the default thinning value and raise a warning if so. + + Args: + thin: Thinning (subsampling) factor, setting 1 disables thinning. + + Returns: + The corrected thinning factor. + """ + if thin == -1: + thin = 1 + warn( + "The default value for thinning in MCMC sampling has been changed from " + "10 to 1. This might cause the results differ from the last benchmark.", + UserWarning, + stacklevel=2, + ) + + return thin + + def _maybe_use_dict_entry(default: Any, key: str, dict_to_check: Dict) -> Any: """Returns `default` if `key` is not in the dict and otherwise the dict entry. diff --git a/sbi/samplers/mcmc/__init__.py b/sbi/samplers/mcmc/__init__.py index 7d3abe146..bd62f4436 100644 --- a/sbi/samplers/mcmc/__init__.py +++ b/sbi/samplers/mcmc/__init__.py @@ -4,7 +4,7 @@ resample_given_potential_fn, sir_init, ) -from sbi.samplers.mcmc.slice import Slice +from sbi.samplers.mcmc.pymc_wrapper import PyMCSampler from sbi.samplers.mcmc.slice_numpy import ( SliceSampler, SliceSamplerSerial, diff --git a/sbi/samplers/mcmc/build_sampler.py b/sbi/samplers/mcmc/build_sampler.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/sbi/samplers/mcmc/mcmc.py b/sbi/samplers/mcmc/mcmc.py deleted file mode 100644 index f6e4ba7fb..000000000 --- a/sbi/samplers/mcmc/mcmc.py +++ /dev/null @@ -1,151 +0,0 @@ -# Copyright (c) 2017-2019 Uber Technologies, Inc. -# SPDX-License-Identifier: Apache-2.0 - -import multiprocessing as mp -import warnings - -from pyro.infer.mcmc import MCMC as BaseMCMC -from pyro.infer.mcmc.api import _MultiSampler, _UnarySampler -from pyro.infer.mcmc.hmc import HMC -from pyro.infer.mcmc.nuts import NUTS - - -class MCMC(BaseMCMC): - """ - Identical to Pyro's MCMC class except for `available_cpu` parameter. - - Wrapper class for Markov Chain Monte Carlo algorithms. Specific MCMC algorithms - are TraceKernel instances and need to be supplied as a ``kernel`` argument - to the constructor. - - .. note:: The case of `num_chains > 1` uses python multiprocessing to - run parallel chains in multiple processes. This goes with the usual - caveats around multiprocessing in python, e.g. the model used to - initialize the ``kernel`` must be serializable via `pickle`, and the - performance / constraints will be platform dependent (e.g. only - the "spawn" context is available in Windows). This has also not - been extensively tested on the Windows platform. - - :param kernel: An instance of the ``TraceKernel`` class, which when - given an execution trace returns another sample trace from the target - (posterior) distribution. - :param int num_samples: The number of samples that need to be generated, - excluding the samples discarded during the warmup phase. - :param int warmup_steps: Number of warmup iterations. The samples generated - during the warmup phase are discarded. If not provided, default is - half of `num_samples`. - :param int num_chains: Number of MCMC chains to run in parallel. Depending on - whether `num_chains` is 1 or more than 1, this class internally dispatches - to either `_UnarySampler` or `_MultiSampler`. - :param dict initial_params: dict containing initial tensors in unconstrained - space to initiate the markov chain. The leading dimension's size must match - that of `num_chains`. If not specified, parameter values will be sampled from - the prior. - :param hook_fn: Python callable that takes in `(kernel, samples, stage, i)` - as arguments. stage is either `sample` or `warmup` and i refers to the - i'th sample for the given stage. This can be used to implement additional - logging, or more generally, run arbitrary code per generated sample. - :param str mp_context: Multiprocessing context to use when `num_chains > 1`. - Only applicable for Python 3.5 and above. Use `mp_context="spawn"` for - CUDA. - :param bool disable_progbar: Disable progress bar and diagnostics update. - :param bool disable_validation: Disables distribution validation check. This is - disabled by default, since divergent transitions will lead to exceptions. - Switch to `True` for debugging purposes. - :param dict transforms: dictionary that specifies a transform for a sample site - with constrained support to unconstrained space. - :param int available_cpu: Number of available CPUs, defaults to `mp.cpu_count()-1`. - Setting it to 1 disables multiprocessing. - """ - - def __init__( - self, - kernel, - num_samples, - warmup_steps=None, - initial_params=None, - num_chains=1, - hook_fn=None, - mp_context=None, - disable_progbar=False, - disable_validation=True, - transforms=None, - available_cpu=mp.cpu_count() - 1, - ): - self.warmup_steps = ( - num_samples if warmup_steps is None else warmup_steps - ) # Stan - self.num_samples = num_samples - self.kernel = kernel - self.transforms = transforms - self.disable_validation = disable_validation - self._samples = None - self._args = None - self._kwargs = None - if ( - isinstance(self.kernel, (HMC, NUTS)) - and self.kernel.potential_fn is not None - and initial_params is None - ): - raise ValueError( - "Must provide valid initial parameters to begin sampling" - " when using `potential_fn` in HMC/NUTS kernel." - ) - parallel = False - if num_chains > 1: - # check that initial_params is different for each chain - if initial_params: - for v in initial_params.values(): - if v.shape[0] != num_chains: - raise ValueError( - "The leading dimension of tensors in `initial_params` " - "must match the number of chains." - ) - # FIXME: probably we want to use "spawn" method by default to avoid the - # error CUDA initialization error - # https://github.com/pytorch/pytorch/issues/2517 even that we run MCMC - # in CPU. - # change multiprocessing context to 'spawn' for CUDA tensors. - if mp_context is None and list(initial_params.values())[0].is_cuda: - mp_context = "spawn" - - # verify num_chains is compatible with available CPU. - available_cpu = max(available_cpu, 1) - if num_chains <= available_cpu: - parallel = True - else: - warnings.warn( - "num_chains={} is more than available_cpu={}. " - "Chains will be drawn sequentially.".format( - num_chains, available_cpu - ), - stacklevel=2, - ) - else: - if initial_params: - initial_params = {k: v.unsqueeze(0) for k, v in initial_params.items()} - - self.num_chains = num_chains - self._diagnostics = [None] * num_chains - - if parallel: - self.sampler = _MultiSampler( - kernel, - num_samples, - self.warmup_steps, - num_chains, - mp_context, - disable_progbar, - initial_params=initial_params, - hook=hook_fn, - ) - else: - self.sampler = _UnarySampler( - kernel, - num_samples, - self.warmup_steps, - num_chains, - disable_progbar, - initial_params=initial_params, - hook=hook_fn, - ) diff --git a/sbi/samplers/mcmc/pymc_wrapper.py b/sbi/samplers/mcmc/pymc_wrapper.py new file mode 100644 index 000000000..8d9bcfd4a --- /dev/null +++ b/sbi/samplers/mcmc/pymc_wrapper.py @@ -0,0 +1,218 @@ +from typing import Any, Callable, Optional + +import numpy as np +import pymc +import pytensor.tensor as pt +import torch +from arviz.data import InferenceData + +from sbi.utils import tensor2numpy + + +class PyMCPotential(pt.Op): # type: ignore + """PyTensor Op wrapping a callable potential function""" + + itypes = [pt.dvector] # expects a vector of parameter values when called + otypes = [ + pt.dscalar, + pt.dvector, + ] # outputs a single scalar value (the potential) and gradients for every input + default_output = 0 # return only potential by default + + def __init__( + self, + potential_fn: Callable, + device: str, + track_gradients: bool = True, + ): + """PyTensor Op wrapping a callable potential function for use + with PyMC samplers. + + Args: + potential_fn: Potential function that returns a potential given parameters + device: The device to which to move the parameters before evaluation. + track_gradients: Whether to track gradients from potential function + """ + self.potential_fn = potential_fn + self.device = device + self.track_gradients = track_gradients + + def perform(self, node: Any, inputs: Any, outputs: Any) -> None: + """Compute potential and possibly gradients from input parameters + + Args: + node: A "node" that represents the computation, handled internally + by PyTensor. + inputs: A sequence of inputs to the operation of type `itypes`. In this + case, the sequence will contain one array containing the + simulator parameters. + outputs: A sequence allocated for storing operation outputs. In this + case, the sequence will contain one scalar for the computed potential + and an array containing the gradient of the potential with respect + to the simulator parameters. + """ + # unpack and handle inputs + params = inputs[0] + params = ( + torch.tensor(params) + .to(device=self.device, dtype=torch.float32) + .requires_grad_(self.track_gradients) + ) + + # call the potential function + energy = self.potential_fn(params, track_gradients=self.track_gradients) + + # output the log-likelihood + outputs[0][0] = tensor2numpy(energy).astype(np.float64) + + # compute and record gradients if desired + if self.track_gradients: + energy.backward() + grads = params.grad + outputs[1][0] = tensor2numpy(grads).astype(np.float64) + else: + outputs[1][0] = np.zeros(params.shape, dtype=np.float64) + + def grad(self, inputs: Any, output_grads: Any) -> list: + """Get gradients computed from `perform` and return Jacobian-Vector product + + Args: + inputs: A sequence of inputs to the operation of type `itypes`. In this + case, the sequence will contain one array containing the + simulator parameters. + output_grads: A sequence of the gradients of the output variables. The first + element will be the gradient of the output of the whole computational + graph with respect to the output of this specific operation, i.e., + the potential. + + Returns: + A list containing the gradient of the output of the whole computational + graph with respect to the input of this operation, i.e., + the simulator parameters. + """ + # get outputs from forward pass (but doesn't re-compute it, I think...) + value = self(*inputs) + gradients = value.owner.outputs[1:] # type: ignore + # compute and return JVP + return [(output_grads[0] * grad) for grad in gradients] + + +class PyMCSampler: + """Interface for PyMC samplers""" + + def __init__( + self, + potential_fn: Callable, + initvals: np.ndarray, + step: str = "nuts", + draws: int = 1000, + tune: int = 1000, + chains: Optional[int] = None, + mp_ctx: str = "spawn", + progressbar: bool = True, + param_name: str = "theta", + device: str = "cpu", + ): + """Interface for PyMC samplers + + Args: + potential_fn: Potential function from density estimator. + initvals: Initial parameters. + step: One of `"slice"`, `"hmc"`, or `"nuts"`. + draws: Number of total samples to draw. + tune: Number of tuning steps to take. + chains: Number of MCMC chains to run in parallel. + mp_ctx: Multiprocessing context for parallel sampling. + progressbar: Whether to show/hide progress bars. + param_name: Name for parameter variable, for PyMC and ArviZ structures + device: The device to which to move the parameters for potential_fn. + """ + self.param_name = param_name + self._step = step + self._draws = draws + self._tune = tune + self._initvals = [{self.param_name: iv} for iv in initvals] + self._chains = chains + self._mp_ctx = mp_ctx + self._progressbar = progressbar + self._device = device + + # create PyMC model object + track_gradients = step in (pymc.NUTS, pymc.HamiltonianMC) + self._model = pymc.Model() + potential = PyMCPotential( + potential_fn, track_gradients=track_gradients, device=device + ) + with self._model: + params = pymc.Normal( + self.param_name, mu=initvals.mean(axis=0) + ) # dummy prior + pymc.Potential("likelihood", potential(params)) # type: ignore + + def run(self) -> np.ndarray: + """Run MCMC with PyMC + + Returns: + MCMC samples + """ + step_class = dict(slice=pymc.Slice, hmc=pymc.HamiltonianMC, nuts=pymc.NUTS) + with self._model: + inference_data = pymc.sample( + step=step_class[self._step](), + tune=self._tune, + draws=self._draws, + initvals=self._initvals, # type: ignore + chains=self._chains, + progressbar=self._progressbar, + mp_ctx=self._mp_ctx, + ) + self._inference_data = inference_data + traces = inference_data.posterior # type: ignore + samples = getattr(traces, self.param_name).data + return samples + + def get_samples( + self, num_samples: Optional[int] = None, group_by_chain: bool = True + ) -> np.ndarray: + """Returns samples from last call to self.run. + + Raises ValueError if no samples have been generated yet. + + Args: + num_samples: Number of samples to return (for each chain if grouped by + chain), if too large, all samples are returned (no error). + group_by_chain: Whether to return samples grouped by chain (chain x samples + x dim_params) or flattened (all_samples, dim_params). + + Returns: + samples + """ + if self._inference_data is None: + raise ValueError("No samples found from MCMC run.") + # if not grouped by chain, flatten samples into (all_samples, dim_params) + traces = self._inference_data.posterior # type: ignore + samples = getattr(traces, self.param_name).data + if not group_by_chain: + samples = samples.reshape(-1, samples.shape[-1]) + + # if not specified return all samples + if num_samples is None: + return samples + # otherwise return last num_samples (for each chain when grouped). + elif group_by_chain: + return samples[:, -num_samples:, :] + else: + return samples[-num_samples:, :] + + def get_inference_data(self) -> InferenceData: + """Returns InferenceData from last call to self.run, + which contains diagnostic information in addition to samples + + Raises ValueError if no samples have been generated yet. + + Returns: + InferenceData containing samples and sampling run information + """ + if self._inference_data is None: + raise ValueError("No samples found from MCMC run.") + return self._inference_data diff --git a/sbi/samplers/mcmc/slice.py b/sbi/samplers/mcmc/slice.py deleted file mode 100644 index 3359d3fe0..000000000 --- a/sbi/samplers/mcmc/slice.py +++ /dev/null @@ -1,212 +0,0 @@ -# Copyright (c) 2017-2019 Uber Technologies, Inc. -# SPDX-License-Identifier: Apache-2.0 - -from copy import deepcopy -from typing import Callable, Dict, Optional - -import torch -from pyro.infer.mcmc.mcmc_kernel import MCMCKernel -from pyro.infer.mcmc.util import initialize_model -from torch import Tensor - - -class Slice(MCMCKernel): - def __init__( - self, - model: Optional[Callable] = None, - potential_fn: Optional[Callable] = None, - initial_width: float = 0.01, - max_width=float("inf"), - transforms: Optional[Dict] = None, - max_plate_nesting: Optional[int] = None, - jit_compile: bool = False, - jit_options: Optional[Dict] = None, - ignore_jit_warnings: bool = False, - ) -> None: - """ - Slice sampling kernel [1]. - - During the warmup phase, the width of the bracket is adapted, starting from - the provided initial width. - - **References** - - [1] `Slice Sampling `_, - Radford M. Neal - - Args: - model: Python callable containing Pyro primitives. - potential_fn: Python callable calculating potential energy with input - is a dict of real support parameters. - initial_width: Initial bracket width - max_width: Maximum bracket width - transforms: Optional dictionary that specifies a transform - for a sample site with constrained support to unconstrained space. The - transform should be invertible, and implement `log_abs_det_jacobian`. - If not specified and the model has sites with constrained support, - automatic transformations will be applied, as specified in - :mod:`torch.distributions.constraint_registry`. - max_plate_nesting: Optional bound on max number of nested - :func:`pyro.plate` contexts. This is required if model contains - discrete sample sites that can be enumerated over in parallel. - jit_compile: Optional parameter denoting whether to use - the PyTorch JIT to trace the log density computation, and use this - optimized executable trace in the integrator. - jit_options: A dictionary contains optional arguments for - :func:`torch.jit.trace` function. - ignore_jit_warnings: Flag to ignore warnings from the JIT - tracer when ``jit_compile=True``. Default is False. - """ - if not ((model is None) ^ (potential_fn is None)): - raise ValueError("Only one of `model` or `potential_fn` must be specified.") - # NB: deprecating args - model, transforms - self.model = model - self.transforms = transforms - self._max_plate_nesting = max_plate_nesting - self._jit_compile = jit_compile - self._jit_options = jit_options - self._ignore_jit_warnings = ignore_jit_warnings - - self.potential_fn = potential_fn - - self._initial_width = initial_width - self._max_width = max_width - - self._reset() - - super(Slice, self).__init__() - - def _reset(self): - self._t = 0 - self._width: Optional[Tensor] = None - self._num_dimensions: Optional[int] = None - self._initial_params: Optional[Dict] = None - self._site_name = None - - def setup(self, warmup_steps, *args, **kwargs): - self._warmup_steps = warmup_steps - if self.model is not None: - self._initialize_model_properties(args, kwargs) - - # TODO: Clean up required for multiple sites - assert self.initial_params is not None - self._site_name = next(iter(self.initial_params.keys())) - self._num_dimensions = next(iter(self.initial_params.values())).shape[-1] - - self._width = torch.full((self._num_dimensions,), self._initial_width) - - @property - def initial_params(self): - return deepcopy(self._initial_params) - - @initial_params.setter - def initial_params(self, params): - assert ( - isinstance(params, dict) and len(params) == 1 - ), "Slice sampling only implemented for a single site." # TODO: Implement - self._initial_params = params - - def _initialize_model_properties(self, model_args, model_kwargs): - init_params, potential_fn, transforms, trace = initialize_model( - self.model, - model_args, - model_kwargs, - transforms=self.transforms, - max_plate_nesting=self._max_plate_nesting, - jit_compile=self._jit_compile, - jit_options=self._jit_options, - skip_jit_warnings=self._ignore_jit_warnings, - ) - self.potential_fn = potential_fn - self.transforms = transforms - if self._initial_params is None: - self.initial_params = init_params - self._prototype_trace = trace - - def cleanup(self): - self._reset() - - def sample(self, params): - assert ( - self._num_dimensions is not None and self._width is not None - ), "Chain not initialized." - - for dim in torch.randperm(self._num_dimensions): - # cast for pyright. - idx = int(dim.item()) - ( - params[self._site_name].view(-1)[idx], - width_d, - ) = self._sample_from_conditional(params, idx) - if self._t < self._warmup_steps: - # TODO: Other schemes for tuning bracket width? - self._width[idx] += (width_d.item() - self._width[idx]) / (self._t + 1) - - self._t += 1 - - return params.copy() - - def _sample_from_conditional(self, params, dim): - # TODO: Flag for doubling and stepping out procedures, see Neal paper, and also: - # https://pints.readthedocs.io/en/latest/mcmc_samplers/slice_doubling_mcmc.html - # https://pints.readthedocs.io/en/latest/mcmc_samplers/slice_stepout_mcmc.html - - def _log_prob_d(x): - assert self.potential_fn is not None, "Chain not initialized." - - return -self.potential_fn({ - self._site_name: torch.cat(( - params[self._site_name].view(-1)[:dim], - x.reshape(1), - params[self._site_name].view(-1)[dim + 1 :], - )).unsqueeze( - 0 - ) # TODO: The unsqueeze seems to give a speed up, figure out when - # this is the case exactly - }) - - assert ( - self._site_name is not None and self._width is not None - ), "Chain not initialized." - - # Sample uniformly from slice - log_height = _log_prob_d(params[self._site_name].view(-1)[dim]) + torch.log( - torch.rand(1, device=params[self._site_name].device) - ) - - # Position the bracket randomly around the current sample - lower = params[self._site_name].view(-1)[dim] - self._width[dim] * torch.rand( - 1, device=params[self._site_name].device - ) - upper = lower + self._width[dim] - - # Find lower bracket end - while ( - _log_prob_d(lower) >= log_height - and params[self._site_name].view(-1)[dim] - lower < self._max_width - ): - lower -= self._width[dim] - - # Find upper bracket end - while ( - _log_prob_d(upper) >= log_height - and upper - params[self._site_name].view(-1)[dim] < self._max_width - ): - upper += self._width[dim] - - # Sample uniformly from bracket - new_parameter = (upper - lower) * torch.rand( - 1, device=params[self._site_name].device - ) + lower - - # If outside slice, reject sample and shrink bracket - while _log_prob_d(new_parameter) < log_height: - if new_parameter < params[self._site_name].view(-1)[dim]: - lower = new_parameter - else: - upper = new_parameter - new_parameter = (upper - lower) * torch.rand( - 1, device=params[self._site_name].device - ) + lower - - return new_parameter, upper - lower diff --git a/sbi/samplers/mcmc/slice_numpy.py b/sbi/samplers/mcmc/slice_numpy.py index ea7733375..605120118 100644 --- a/sbi/samplers/mcmc/slice_numpy.py +++ b/sbi/samplers/mcmc/slice_numpy.py @@ -22,20 +22,20 @@ class MCMCSampler: Superclass for MCMC samplers. """ - def __init__(self, x, lp_f: Callable, thin: Optional[int], verbose: bool = False): + def __init__(self, x, lp_f: Callable, thin: int, verbose: bool = False): """ Args: x: initial state lp_f: Function that returns the log prob. - thin: amount of thinning; if None, no thinning. + thin: Thinning (subsampling) factor, default 1 (no thinning). verbose: Whether to show progress bars (False). """ self.x = np.array(x, dtype=float) self.lp_f = lp_f self.L = lp_f(self.x) - self.thin = 1 if thin is None else thin + self.thin = thin self.n_dims = self.x.size if self.x.ndim == 1 else self.x.shape[1] self.verbose = verbose @@ -61,7 +61,7 @@ def __init__( lp_f, max_width=float("inf"), init_width: Union[float, np.ndarray] = 0.01, - thin=None, + thin=1, tuning: int = 50, verbose: bool = False, ): @@ -222,7 +222,7 @@ def __init__( log_prob_fn: Callable, init_params: np.ndarray, num_chains: int = 1, - thin: Optional[int] = None, + thin: int = 1, tuning: int = 50, verbose: bool = True, init_width: Union[float, np.ndarray] = 0.01, @@ -237,7 +237,7 @@ def __init__( log_prob_fn: Log prob function. init_params: Initial parameters. num_chains: Number of MCMC chains to run in parallel - thin: amount of thinning; if None, no thinning. + thin: Thinning (subsampling) factor, default 1 (no thinning). tuning: Number of tuning steps for brackets. verbose: Show/hide additional info such as progress bars. init_width: Inital width of brackets. @@ -356,7 +356,7 @@ def __init__( log_prob_fn: Callable, init_params: np.ndarray, num_chains: int = 1, - thin: Optional[int] = None, + thin: int = 1, tuning: int = 50, verbose: bool = True, init_width: Union[float, np.ndarray] = 0.01, @@ -369,7 +369,7 @@ def __init__( log_prob_fn: Log prob function. init_params: Initial parameters. num_chains: Number of MCMC chains to run in parallel - thin: amount of thinning; if None, no thinning. + thin: Thinning (subsampling) factor, default 1 (no thinning). tuning: Number of tuning steps for brackets. verbose: Show/hide additional info such as progress bars. init_width: Inital width of brackets. diff --git a/tests/mcmc_slice_pyro/LICENSE.md b/tests/mcmc_slice_pyro/LICENSE.md deleted file mode 100644 index d64569567..000000000 --- a/tests/mcmc_slice_pyro/LICENSE.md +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/tests/mcmc_slice_pyro/__init__.py b/tests/mcmc_slice_pyro/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/tests/mcmc_slice_pyro/common.py b/tests/mcmc_slice_pyro/common.py deleted file mode 100644 index 4d082ed45..000000000 --- a/tests/mcmc_slice_pyro/common.py +++ /dev/null @@ -1,273 +0,0 @@ -# Copyright (c) 2017-2019 Uber Technologies, Inc. -# SPDX-License-Identifier: Apache-2.0 - -import contextlib -import numbers -import os -import shutil -import tempfile -import warnings -from itertools import product - -import numpy as np -import pytest -import torch -import torch.cuda -from numpy.testing import assert_allclose -from pytest import approx - -""" -Contains test utilities for assertions, approximate comparison (of tensors and other -objects). - -Code has been largely adapted from pytorch/test/common.py Source: -https://github.com/pytorch/pytorch/blob/master/test/common.py -""" - -TESTS_DIR = os.path.dirname(os.path.abspath(__file__)) -RESOURCE_DIR = os.path.join(TESTS_DIR, "resources") -EXAMPLES_DIR = os.path.join(os.path.dirname(TESTS_DIR), "examples") - - -def xfail_param(*args, **kwargs): - return pytest.param(*args, marks=[pytest.mark.xfail(**kwargs)]) - - -def skipif_param(*args, **kwargs): - return pytest.param(*args, marks=[pytest.mark.skipif(**kwargs)]) - - -def suppress_warnings(fn): - def wrapper(*args, **kwargs): - with warnings.catch_warnings(): - warnings.simplefilter("ignore") - fn(*args, **kwargs) - - return wrapper - - -# backport of Python 3's context manager -@contextlib.contextmanager -def TemporaryDirectory(): - try: - path = tempfile.mkdtemp() - yield path - finally: - if os.path.exists(path): - shutil.rmtree(path) - - -requires_cuda = pytest.mark.skipif( - not torch.cuda.is_available(), reason="cuda is not available" -) - - -def get_cpu_type(t): - assert t.__module__ == "torch.cuda" - return getattr(torch, t.__class__.__name__) - - -def get_gpu_type(t): - assert t.__module__ == "torch" - return getattr(torch.cuda, t.__name__) - - -@contextlib.contextmanager -def tensors_default_to(host): - """ - Context manager to temporarily use Cpu or Cuda tensors in PyTorch. - - :param str host: Either "cuda" or "cpu". - """ - assert host in ("cpu", "cuda"), host - old_module, name = torch.Tensor().type().rsplit(".", 1) - new_module = "torch.cuda" if host == "cuda" else "torch" - torch.set_default_tensor_type("{}.{}".format(new_module, name)) - try: - yield - finally: - torch.set_default_tensor_type("{}.{}".format(old_module, name)) - - -@contextlib.contextmanager -def freeze_rng_state(): - rng_state = torch.get_rng_state() - if torch.cuda.is_available(): - cuda_rng_state = torch.cuda.get_rng_state() - yield - if torch.cuda.is_available(): - torch.cuda.set_rng_state(cuda_rng_state) - torch.set_rng_state(rng_state) - - -@contextlib.contextmanager -def xfail_if_not_implemented(msg="Not implemented"): - try: - yield - except NotImplementedError as e: - pytest.xfail(reason="{}: {}".format(msg, e)) - - -def iter_indices(tensor): - if tensor.dim() == 0: - return range(0) - if tensor.dim() == 1: - return range(tensor.size(0)) - return product(*(range(s) for s in tensor.size())) - - -def is_iterable(obj): - try: - iter(obj) - return True - except BaseException: - return False - - -def assert_tensors_equal(a, b, prec=0.0, msg=""): - assert a.size() == b.size(), msg - if isinstance(prec, numbers.Number) and prec == 0: - assert (a == b).all(), msg - if a.numel() == 0 and b.numel() == 0: - return - b = b.type_as(a) - b = b.cuda(device=a.get_device()) if a.is_cuda else b.cpu() - # check that NaNs are in the same locations - nan_mask = a != a - assert torch.equal(nan_mask, b != b), msg - diff = a - b - diff[a == b] = 0 # handle inf - diff[nan_mask] = 0 - if diff.is_signed(): - diff = diff.abs() - if isinstance(prec, torch.Tensor): - assert (diff <= prec).all(), msg - else: - max_err = diff.max().item() - assert max_err <= prec, msg - - -def _safe_coalesce(t): - tc = t.coalesce() - value_map = {} - for idx, val in zip(t._indices().t(), t._values()): - idx_tup = tuple(idx) - if idx_tup in value_map: - value_map[idx_tup] += val - else: - value_map[idx_tup] = val.clone() if torch.is_tensor(val) else val - - new_indices = sorted(list(value_map.keys())) - new_values = [value_map[idx] for idx in new_indices] - if t._values().dim() < 2: - new_values = t._values().new_tensor(new_values) - else: - new_values = torch.stack(new_values) - - new_indices = t._indices().new_tensor(new_indices).t() - tg = t.new(new_indices, new_values, t.size()) - - assert (tc._indices() == tg._indices()).all() - assert (tc._values() == tg._values()).all() - return tg - - -def assert_close(actual, expected, atol=1e-7, rtol=0, msg=""): - if not msg: - msg = "{} vs {}".format(actual, expected) - if isinstance(actual, numbers.Number) and isinstance(expected, numbers.Number): - assert actual == approx(expected, abs=atol, rel=rtol), msg - # Placing this as a second check allows for coercing of numeric types above; - # this can be moved up to harden type checks. - elif type(actual) != type(expected): - raise AssertionError( - "cannot compare {} and {}".format(type(actual), type(expected)) - ) - elif torch.is_tensor(actual) and torch.is_tensor(expected): - prec = atol + rtol * abs(expected) if rtol > 0 else atol - assert actual.is_sparse == expected.is_sparse, msg - if actual.is_sparse: - x = _safe_coalesce(actual) - y = _safe_coalesce(expected) - assert_tensors_equal(x._indices(), y._indices(), prec, msg) - assert_tensors_equal(x._values(), y._values(), prec, msg) - else: - assert_tensors_equal(actual, expected, prec, msg) - elif type(actual) == np.ndarray and type(expected) == np.ndarray: - assert_allclose( - actual, expected, atol=atol, rtol=rtol, equal_nan=True, err_msg=msg - ) - elif isinstance(actual, numbers.Number) and isinstance(y, numbers.Number): - assert actual == approx(expected, abs=atol, rel=rtol), msg - elif isinstance(actual, dict): - assert set(actual.keys()) == set(expected.keys()) - for key, x_val in actual.items(): - assert_close( - x_val, - expected[key], - atol=atol, - rtol=rtol, - msg="At key{}: {} vs {}".format(key, x_val, expected[key]), - ) - elif isinstance(actual, str): - assert actual == expected, msg - elif is_iterable(actual) and is_iterable(expected): - assert len(actual) == len(expected), msg - for xi, yi in zip(actual, expected): - assert_close(xi, yi, atol=atol, rtol=rtol, msg="{} vs {}".format(xi, yi)) - else: - assert actual == expected, msg - - -# TODO: Remove `prec` arg, and move usages to assert_close -def assert_equal(actual, expected, prec=1e-5, msg=""): - if prec > 0.0: - return assert_close(actual, expected, atol=prec, msg=msg) - if not msg: - msg = "{} vs {}".format(actual, expected) - if isinstance(actual, numbers.Number) and isinstance(expected, numbers.Number): - assert actual == expected, msg - # Placing this as a second check allows for coercing of numeric types above; - # this can be moved up to harden type checks. - elif type(actual) != type(expected): - raise AssertionError( - "cannot compare {} and {}".format(type(actual), type(expected)) - ) - elif torch.is_tensor(actual) and torch.is_tensor(expected): - assert actual.is_sparse == expected.is_sparse, msg - if actual.is_sparse: - x = _safe_coalesce(actual) - y = _safe_coalesce(expected) - assert_tensors_equal(x._indices(), y._indices(), msg=msg) - assert_tensors_equal(x._values(), y._values(), msg=msg) - else: - assert_tensors_equal(actual, expected, msg=msg) - elif type(actual) == np.ndarray and type(actual) == np.ndarray: - assert (actual == expected).all(), msg - elif isinstance(actual, dict): - assert set(actual.keys()) == set(expected.keys()) - for key, x_val in actual.items(): - assert_equal( - x_val, - expected[key], - prec=0.0, - msg="At key{}: {} vs {}".format(key, x_val, expected[key]), - ) - elif isinstance(actual, str): - assert actual == expected, msg - elif is_iterable(actual) and is_iterable(expected): - assert len(actual) == len(expected), msg - for xi, yi in zip(actual, expected): - assert_equal(xi, yi, prec=0.0, msg="{} vs {}".format(xi, yi)) - else: - assert actual == expected, msg - - -def assert_not_equal(x, y, prec=1e-5, msg=""): - try: - assert_equal(x, y, prec) - except AssertionError: - return - raise AssertionError( - "{} \nValues are equal: x={}, y={}, prec={}".format(msg, x, y, prec) - ) diff --git a/tests/mcmc_slice_pyro/conftest.py b/tests/mcmc_slice_pyro/conftest.py deleted file mode 100644 index 73ea5794d..000000000 --- a/tests/mcmc_slice_pyro/conftest.py +++ /dev/null @@ -1,112 +0,0 @@ -# Copyright (c) 2017-2019 Uber Technologies, Inc. -# SPDX-License-Identifier: Apache-2.0 - -import os -import warnings - -import pyro -import pytest -import torch - -torch.set_default_tensor_type(os.environ.get("PYRO_TENSOR_TYPE", "torch.DoubleTensor")) - - -def pytest_configure(config): - config.addinivalue_line( - "markers", "init(rng_seed): initialize the RNG using the seed provided." - ) - config.addinivalue_line( - "markers", "stage(NAME): mark test to run when testing stage matches NAME." - ) - config.addinivalue_line( - "markers", "disable_validation: disable all validation on this test." - ) - - -def pytest_runtest_setup(item): - pyro.clear_param_store() - if item.get_closest_marker("disable_validation"): - pyro.enable_validation(False) - else: - pyro.enable_validation(True) - test_initialize_marker = item.get_closest_marker("init") - if test_initialize_marker: - rng_seed = test_initialize_marker.kwargs["rng_seed"] - pyro.set_rng_seed(rng_seed) - - -def pytest_addoption(parser): - parser.addoption( - "--stage", - action="append", - metavar="NAME", - default=[], - help="Only run tests matching the stage NAME.", - ) - - parser.addoption( - "--lax", - action="store_true", - default=False, - help="Ignore AssertionError when running tests.", - ) - - -def _get_highest_specificity_marker(stage_marker): - """ - Get the most specific stage marker corresponding to the test. Specificity - of test function marker is the highest, followed by test class marker and - module marker. - - :return: List of most specific stage markers for the test. - """ - is_test_collected = False - selected_stages = [] - try: - for marker in stage_marker: - selected_stages = list(marker.args) - is_test_collected = True - break - except TypeError: - selected_stages = list(stage_marker.args) - is_test_collected = True - if not is_test_collected: - raise RuntimeError("stage marker needs at least one stage to be specified.") - return selected_stages - - -def _add_marker(marker, items): - for item in items: - item.add_marker(marker) - - -def pytest_collection_modifyitems(config, items): - test_stages = set(config.getoption("--stage")) - - # add dynamic markers - lax = config.getoption("--lax") - if lax: - _add_marker(pytest.mark.xfail(raises=AssertionError), items) - - # select / deselect tests based on stage criterion - if not test_stages or "all" in test_stages: - return - selected_items = [] - deselected_items = [] - for item in items: - stage_marker = item.get_closest_marker("stage") - if not stage_marker: - selected_items.append(item) - warnings.warn( - f"""No stage associated with the test {item.name}. Will run on - each stage invocation.""", - stacklevel=2, - ) - continue - item_stage_markers = _get_highest_specificity_marker(stage_marker) - if test_stages.isdisjoint(item_stage_markers): - deselected_items.append(item) - else: - selected_items.append(item) - config.hook.pytest_deselected(items=deselected_items) - items[:] = selected_items diff --git a/tests/mcmc_slice_pyro/test_slice.py b/tests/mcmc_slice_pyro/test_slice.py deleted file mode 100644 index 22c1766fc..000000000 --- a/tests/mcmc_slice_pyro/test_slice.py +++ /dev/null @@ -1,515 +0,0 @@ -# Copyright (c) 2017-2019 Uber Technologies, Inc. -# SPDX-License-Identifier: Apache-2.0 - -import logging -import os -from collections import namedtuple - -import pyro -import pytest -import torch -from pyro import distributions as dist -from pyro import optim as optim -from pyro import poutine as poutine -from pyro.contrib.conjugate.infer import ( - BetaBinomialPair, - GammaPoissonPair, - collapse_conjugate, - posterior_replay, -) -from pyro.infer import SVI, TraceEnum_ELBO -from pyro.infer.autoguide import AutoDelta -from pyro.util import ignore_jit_warnings - -from sbi.samplers.mcmc.mcmc import MCMC -from sbi.samplers.mcmc.slice import Slice - -from .common import assert_equal - -# NOTE: Use below imports if this moves upstream -# from tests.common import assert_equal -# from .test_hmc import GaussianChain, rmse - - -class GaussianChain: - def __init__(self, dim, chain_len, num_obs): - self.dim = dim - self.chain_len = chain_len - self.num_obs = num_obs - self.loc_0 = torch.zeros(self.dim) - self.lambda_prec = torch.ones(self.dim) - - def model(self, data): - loc = self.loc_0 - lambda_prec = self.lambda_prec - for i in range(1, self.chain_len + 1): - loc = pyro.sample( - "loc_{}".format(i), dist.Normal(loc=loc, scale=lambda_prec) - ) - pyro.sample("obs", dist.Normal(loc, lambda_prec), obs=data) - - @property - def data(self): - return torch.ones(self.num_obs, self.dim) - - def id_fn(self): - return "dim={}_chain-len={}_num_obs={}".format( - self.dim, self.chain_len, self.num_obs - ) - - -def rmse(t1, t2): - return (t1 - t2).pow(2).mean().sqrt() - - -logger = logging.getLogger(__name__) - - -T = namedtuple( - "TestExample", - [ - "fixture", - "num_samples", - "warmup_steps", - "expected_means", - "expected_precs", - "mean_tol", - "std_tol", - ], -) - -TEST_CASES = [ - T( - GaussianChain(dim=10, chain_len=3, num_obs=1), - num_samples=800, - warmup_steps=200, - expected_means=[0.25, 0.50, 0.75], - expected_precs=[1.33, 1, 1.33], - mean_tol=0.09, - std_tol=0.09, - ), - T( - GaussianChain(dim=10, chain_len=4, num_obs=1), - num_samples=1600, - warmup_steps=200, - expected_means=[0.20, 0.40, 0.60, 0.80], - expected_precs=[1.25, 0.83, 0.83, 1.25], - mean_tol=0.07, - std_tol=0.06, - ), - T( - GaussianChain(dim=5, chain_len=2, num_obs=10000), - num_samples=800, - warmup_steps=200, - expected_means=[0.5, 1.0], - expected_precs=[2.0, 10000], - mean_tol=0.05, - std_tol=0.05, - ), - T( - GaussianChain(dim=5, chain_len=9, num_obs=1), - num_samples=1400, - warmup_steps=200, - expected_means=[0.10, 0.20, 0.30, 0.40, 0.50, 0.60, 0.70, 0.80, 0.90], - expected_precs=[1.11, 0.63, 0.48, 0.42, 0.4, 0.42, 0.48, 0.63, 1.11], - mean_tol=0.08, - std_tol=0.08, - ), -] - - -TEST_IDS = [ - t[0].id_fn() if type(t).__name__ == "TestExample" else t[0][0].id_fn() - for t in TEST_CASES -] - - -def mark_jit(*args, **kwargs): - jit_markers = kwargs.pop("marks", []) - jit_markers += [ - pytest.mark.skipif("CI" in os.environ, reason="to reduce running time on CI") - ] - kwargs["marks"] = jit_markers - return pytest.param(*args, **kwargs) - - -def jit_idfn(param): - return "JIT={}".format(param) - - -@pytest.mark.mcmc -@pytest.mark.parametrize( - T._fields, - TEST_CASES, - ids=TEST_IDS, -) -@pytest.mark.skip(reason="Slow test (https://github.com/pytorch/pytorch/issues/12190)") -@pytest.mark.disable_validation() -def test_slice_conjugate_gaussian( - fixture, - num_samples, - warmup_steps, - expected_means, - expected_precs, - mean_tol, - std_tol, -): - pyro.get_param_store().clear() - slice_kernel = Slice(fixture.model) - mcmc = MCMC(slice_kernel, num_samples, warmup_steps, num_chains=3) - mcmc.run(fixture.data) - samples = mcmc.get_samples() - for i in range(1, fixture.chain_len + 1): - param_name = "loc_" + str(i) - latent = samples[param_name] - latent_loc = latent.mean(0) - latent_std = latent.std(0) - expected_mean = torch.ones(fixture.dim) * expected_means[i - 1] - expected_std = 1 / torch.sqrt(torch.ones(fixture.dim) * expected_precs[i - 1]) - - # Actual vs expected posterior means for the latents - logger.debug("Posterior mean (actual) - {}".format(param_name)) - logger.debug(latent_loc) - logger.debug("Posterior mean (expected) - {}".format(param_name)) - logger.debug(expected_mean) - assert_equal(rmse(latent_loc, expected_mean).item(), 0.0, prec=mean_tol) - - # Actual vs expected posterior precisions for the latents - logger.debug("Posterior std (actual) - {}".format(param_name)) - logger.debug(latent_std) - logger.debug("Posterior std (expected) - {}".format(param_name)) - logger.debug(expected_std) - assert_equal(rmse(latent_std, expected_std).item(), 0.0, prec=std_tol) - - -@pytest.mark.mcmc -@pytest.mark.parametrize("jit", [False, mark_jit(True)], ids=jit_idfn) -@pytest.mark.parametrize("num_chains", [1, 2]) -def test_logistic_regression(jit, num_chains, mcmc_params_fast: dict): - dim = 3 - data = torch.randn(2000, dim) - true_coefs = torch.arange(1.0, dim + 1.0) - labels = dist.Bernoulli(logits=(true_coefs * data).sum(-1)).sample() - - def model(data): - coefs_mean = torch.zeros(dim) - coefs = pyro.sample("beta", dist.Normal(coefs_mean, torch.ones(dim))) - y = pyro.sample("y", dist.Bernoulli(logits=(coefs * data).sum(-1)), obs=labels) - return y - - slice_kernel = Slice(model, jit_compile=jit, ignore_jit_warnings=True) - mcmc_params_fast["num_chains"] = num_chains - mcmc_params_fast.pop("thin") # thinning is not supported - mcmc = MCMC(slice_kernel, num_samples=500, available_cpu=1, **mcmc_params_fast) - mcmc.run(data) - samples = mcmc.get_samples() - assert_equal(rmse(true_coefs, samples["beta"].mean(0)).item(), 0.0, prec=0.1) - - -@pytest.mark.mcmc -def test_beta_bernoulli(mcmc_params_fast: dict): - def model(data): - alpha = torch.tensor([1.1, 1.1]) - beta = torch.tensor([1.1, 1.1]) - p_latent = pyro.sample("p_latent", dist.Beta(alpha, beta)) - pyro.sample("obs", dist.Bernoulli(p_latent), obs=data) - return p_latent - - true_probs = torch.tensor([0.9, 0.1]) - data = dist.Bernoulli(true_probs).sample(sample_shape=(torch.Size((1200,)))) - slice_kernel = Slice(model) - mcmc = MCMC( - slice_kernel, num_samples=400, warmup_steps=mcmc_params_fast["warmup_steps"] - ) - mcmc.run(data) - samples = mcmc.get_samples() - assert_equal(samples["p_latent"].mean(0), true_probs, prec=0.02) - - -@pytest.mark.mcmc -@pytest.mark.parametrize("jit", [False, mark_jit(True)], ids=jit_idfn) -def test_gamma_normal(jit, mcmc_params_fast: dict): - def model(data): - rate = torch.tensor([1.0, 1.0]) - concentration = torch.tensor([1.0, 1.0]) - p_latent = pyro.sample("p_latent", dist.Gamma(rate, concentration)) - pyro.sample("obs", dist.Normal(3, p_latent), obs=data) - return p_latent - - true_std = torch.tensor([0.5, 2]) - data = dist.Normal(3, true_std).sample(sample_shape=(torch.Size((2000,)))) - slice_kernel = Slice(model, jit_compile=jit, ignore_jit_warnings=True) - mcmc = MCMC( - slice_kernel, num_samples=200, warmup_steps=mcmc_params_fast["warmup_steps"] - ) - mcmc.run(data) - samples = mcmc.get_samples() - assert_equal(samples["p_latent"].mean(0), true_std, prec=0.05) - - -@pytest.mark.mcmc -@pytest.mark.parametrize("jit", [False, mark_jit(True)], ids=jit_idfn) -def test_dirichlet_categorical(jit, mcmc_params_fast: dict): - def model(data): - concentration = torch.tensor([1.0, 1.0, 1.0]) - p_latent = pyro.sample("p_latent", dist.Dirichlet(concentration)) - pyro.sample("obs", dist.Categorical(p_latent), obs=data) - return p_latent - - true_probs = torch.tensor([0.1, 0.6, 0.3]) - data = dist.Categorical(true_probs).sample(sample_shape=(torch.Size((2000,)))) - slice_kernel = Slice(model, jit_compile=jit, ignore_jit_warnings=True) - mcmc = MCMC( - slice_kernel, num_samples=200, warmup_steps=mcmc_params_fast["warmup_steps"] - ) - mcmc.run(data) - samples = mcmc.get_samples() - posterior = samples["p_latent"] - assert_equal(posterior.mean(0), true_probs, prec=0.02) - - -@pytest.mark.mcmc -@pytest.mark.parametrize("jit", [False, mark_jit(True)], ids=jit_idfn) -@pytest.mark.skip(reason="Slice sampling not implemented for multiple sites yet.") -def test_gamma_beta(jit, mcmc_params_fast: dict): - def model(data): - alpha_prior = pyro.sample("alpha", dist.Gamma(concentration=1.0, rate=1.0)) - beta_prior = pyro.sample("beta", dist.Gamma(concentration=1.0, rate=1.0)) - pyro.sample( - "x", - dist.Beta(concentration1=alpha_prior, concentration0=beta_prior), - obs=data, - ) - - true_alpha = torch.tensor(5.0) - true_beta = torch.tensor(1.0) - data = dist.Beta(concentration1=true_alpha, concentration0=true_beta).sample( - torch.Size((5000,)) - ) - slice_kernel = Slice(model, jit_compile=jit, ignore_jit_warnings=True) - mcmc = MCMC( - slice_kernel, num_samples=500, warmup_steps=mcmc_params_fast["warmup_steps"] - ) - mcmc.run(data) - samples = mcmc.get_samples() - assert_equal(samples["alpha"].mean(0), true_alpha, prec=0.08) - assert_equal(samples["beta"].mean(0), true_beta, prec=0.05) - - -@pytest.mark.mcmc -@pytest.mark.parametrize("jit", [False, mark_jit(True)], ids=jit_idfn) -@pytest.mark.skip(reason="Slice sampling not implemented for multiple sites yet.") -def test_gaussian_mixture_model(jit, mcmc_params_fast: dict): - K, N = 3, 1000 - - def gmm(data): - mix_proportions = pyro.sample("phi", dist.Dirichlet(torch.ones(K))) - with pyro.plate("num_clusters", K): - cluster_means = pyro.sample( - "cluster_means", dist.Normal(torch.arange(float(K)), 1.0) - ) - with pyro.plate("data", data.shape[0]): - assignments = pyro.sample("assignments", dist.Categorical(mix_proportions)) - pyro.sample("obs", dist.Normal(cluster_means[assignments], 1.0), obs=data) - return cluster_means - - true_cluster_means = torch.tensor([1.0, 5.0, 10.0]) - true_mix_proportions = torch.tensor([0.1, 0.3, 0.6]) - cluster_assignments = dist.Categorical(true_mix_proportions).sample( - torch.Size((N,)) - ) - data = dist.Normal(true_cluster_means[cluster_assignments], 1.0).sample() - slice_kernel = Slice( - gmm, max_plate_nesting=1, jit_compile=jit, ignore_jit_warnings=True - ) - mcmc = MCMC( - slice_kernel, num_samples=300, warmup_steps=mcmc_params_fast["warmup_steps"] - ) - mcmc.run(data) - samples = mcmc.get_samples() - assert_equal(samples["phi"].mean(0).sort()[0], true_mix_proportions, prec=0.05) - assert_equal( - samples["cluster_means"].mean(0).sort()[0], true_cluster_means, prec=0.2 - ) - - -@pytest.mark.mcmc -@pytest.mark.parametrize("jit", [False, mark_jit(True)], ids=jit_idfn) -@pytest.mark.skip(reason="Slice sampling not implemented for multiple sites yet.") -def test_bernoulli_latent_model(jit, mcmc_params_fast: dict): - @poutine.broadcast - def model(data): - y_prob = pyro.sample("y_prob", dist.Beta(1.0, 1.0)) - with pyro.plate("data", data.shape[0]): - y = pyro.sample("y", dist.Bernoulli(y_prob)) - z = pyro.sample("z", dist.Bernoulli(0.65 * y + 0.1)) - pyro.sample("obs", dist.Normal(2.0 * z, 1.0), obs=data) - - N = 2000 - y_prob = torch.tensor(0.3) - y = dist.Bernoulli(y_prob).sample(torch.Size((N,))) - z = dist.Bernoulli(0.65 * y + 0.1).sample() - data = dist.Normal(2.0 * z, 1.0).sample() - slice_kernel = Slice( - model, max_plate_nesting=1, jit_compile=jit, ignore_jit_warnings=True - ) - mcmc = MCMC( - slice_kernel, - num_samples=600, - warmup_steps=mcmc_params_fast["warmup_steps"], - num_chains=1, - ) - mcmc.run(data) - samples = mcmc.get_samples() - assert_equal(samples["y_prob"].mean(0), y_prob, prec=0.05) - - -@pytest.mark.mcmc -@pytest.mark.parametrize("num_steps", [2, 3, 30]) -@pytest.mark.skip(reason="Slice sampling not implemented for multiple sites yet.") -def test_gaussian_hmm(num_steps, mcmc_params_fast: dict): - dim = 4 - - def model(data): - initialize = pyro.sample("initialize", dist.Dirichlet(torch.ones(dim))) - with pyro.plate("states", dim): - transition = pyro.sample("transition", dist.Dirichlet(torch.ones(dim, dim))) - emission_loc = pyro.sample( - "emission_loc", dist.Normal(torch.zeros(dim), torch.ones(dim)) - ) - emission_scale = pyro.sample( - "emission_scale", dist.LogNormal(torch.zeros(dim), torch.ones(dim)) - ) - x = None - with ignore_jit_warnings([("Iterating over a tensor", RuntimeWarning)]): - for t, y in pyro.markov(enumerate(data)): - x = pyro.sample( - "x_{}".format(t), - dist.Categorical(initialize if x is None else transition[x]), - infer={"enumerate": "parallel"}, - ) - pyro.sample( - "y_{}".format(t), - dist.Normal(emission_loc[x], emission_scale[x]), - obs=y, - ) - - def _get_initial_trace(): - guide = AutoDelta( - poutine.block( - model, - expose_fn=lambda msg: not msg["name"].startswith("x") - and not msg["name"].startswith("y"), - ) - ) - elbo = TraceEnum_ELBO(max_plate_nesting=1) - svi = SVI(model, guide, optim.Adam({"lr": 0.01}), elbo) - for _ in range(100): - svi.step(data) - return poutine.trace(guide).get_trace(data) - - def _generate_data(): - transition_probs = torch.rand(dim, dim) - emissions_loc = torch.arange(dim, dtype=torch.Tensor().dtype) - emissions_scale = 1.0 - state = torch.tensor(1) - obs = [dist.Normal(emissions_loc[state], emissions_scale).sample()] - for _ in range(num_steps): - state = dist.Categorical(transition_probs[state]).sample() - obs.append(dist.Normal(emissions_loc[state], emissions_scale).sample()) - return torch.stack(obs) - - data = _generate_data() - slice_kernel = Slice( - model, max_plate_nesting=1, jit_compile=True, ignore_jit_warnings=True - ) - if num_steps == 30: - slice_kernel.initial_trace = _get_initial_trace() - mcmc = MCMC( - slice_kernel, num_samples=5, warmup_steps=mcmc_params_fast["warmup_steps"] - ) - mcmc.run(data) - - -@pytest.mark.mcmc -@pytest.mark.parametrize("hyperpriors", [False, True]) -@pytest.mark.skip(reason="Slice sampling not implemented for multiple sites yet.") -def test_beta_binomial(hyperpriors, mcmc_params_fast: dict): - def model(data): - with pyro.plate("plate_0", data.shape[-1]): - alpha = ( - pyro.sample("alpha", dist.HalfCauchy(1.0)) - if hyperpriors - else torch.tensor([1.0, 1.0]) - ) - beta = ( - pyro.sample("beta", dist.HalfCauchy(1.0)) - if hyperpriors - else torch.tensor([1.0, 1.0]) - ) - beta_binom = BetaBinomialPair() - with pyro.plate("plate_1", data.shape[-2]): - probs = pyro.sample("probs", beta_binom.latent(alpha, beta)) - with pyro.plate("data", data.shape[0]): - pyro.sample( - "binomial", - beta_binom.conditional(probs=probs, total_count=total_count), - obs=data, - ) - - true_probs = torch.tensor([[0.7, 0.4], [0.6, 0.4]]) - total_count = torch.tensor([[1000, 600], [400, 800]]) - num_samples = 80 - data = dist.Binomial(total_count=total_count, probs=true_probs).sample( - sample_shape=(torch.Size((10,))) - ) - hmc_kernel = Slice( - collapse_conjugate(model), jit_compile=True, ignore_jit_warnings=True - ) - mcmc = MCMC( - hmc_kernel, - num_samples=num_samples, - warmup_steps=mcmc_params_fast["warmup_steps"], - ) - mcmc.run(data) - samples = mcmc.get_samples() - posterior = posterior_replay(model, samples, data, num_samples=num_samples) - assert_equal(posterior["probs"].mean(0), true_probs, prec=0.05) - - -@pytest.mark.mcmc -@pytest.mark.parametrize("hyperpriors", [False, True]) -@pytest.mark.skip(reason="Slice sampling not implemented for multiple sites yet.") -def test_gamma_poisson(hyperpriors, mcmc_params_fast: dict): - def model(data): - with pyro.plate("latent_dim", data.shape[1]): - alpha = ( - pyro.sample("alpha", dist.HalfCauchy(1.0)) - if hyperpriors - else torch.tensor([1.0, 1.0]) - ) - beta = ( - pyro.sample("beta", dist.HalfCauchy(1.0)) - if hyperpriors - else torch.tensor([1.0, 1.0]) - ) - gamma_poisson = GammaPoissonPair() - rate = pyro.sample("rate", gamma_poisson.latent(alpha, beta)) - with pyro.plate("data", data.shape[0]): - pyro.sample("obs", gamma_poisson.conditional(rate), obs=data) - - true_rate = torch.tensor([3.0, 10.0]) - num_samples = 100 - data = dist.Poisson(rate=true_rate).sample(sample_shape=(torch.Size((100,)))) - slice_kernel = Slice( - collapse_conjugate(model), jit_compile=True, ignore_jit_warnings=True - ) - mcmc = MCMC( - slice_kernel, - num_samples=num_samples, - warmup_steps=mcmc_params_fast["warmup_steps"], - ) - mcmc.run(data) - samples = mcmc.get_samples() - posterior = posterior_replay(model, samples, data, num_samples=num_samples) - assert_equal(posterior["rate"].mean(0), true_rate, prec=0.3) diff --git a/tests/mcmc_test.py b/tests/mcmc_test.py index d2ebae928..43cc0015b 100644 --- a/tests/mcmc_test.py +++ b/tests/mcmc_test.py @@ -3,7 +3,6 @@ from __future__ import annotations -import arviz as az import numpy as np import pytest import torch @@ -17,6 +16,7 @@ simulate_for_sbi, ) from sbi.neural_nets import likelihood_nn +from sbi.samplers.mcmc.pymc_wrapper import PyMCSampler from sbi.samplers.mcmc.slice_numpy import ( SliceSampler, SliceSamplerSerial, @@ -26,24 +26,20 @@ diagonal_linear_gaussian, true_posterior_linear_gaussian_mvn_prior, ) -from sbi.utils.user_input_checks import ( - process_prior, -) +from sbi.utils.user_input_checks import process_prior from tests.test_utils import check_c2st @pytest.mark.mcmc @pytest.mark.parametrize("num_dim", (1, 2)) -def test_c2st_slice_np_on_Gaussian(num_dim: int): +def test_c2st_slice_np_on_Gaussian( + num_dim: int, warmup: int = 100, num_samples: int = 500 +): """Test MCMC on Gaussian, comparing to ground truth target via c2st. Args: num_dim: parameter dimension of the gaussian model - """ - warmup = 100 - num_samples = 500 - likelihood_shift = -1.0 * ones(num_dim) likelihood_cov = 0.3 * eye(num_dim) prior_mean = zeros(num_dim) @@ -84,7 +80,6 @@ def test_c2st_slice_np_vectorized_parallelized_on_Gaussian( Args: num_dim: parameter dimension of the gaussian model - """ num_samples = 500 warmup = mcmc_params_accurate["warmup_steps"] @@ -135,13 +130,63 @@ def lp_f(x): check_c2st(samples, target_samples, alg=alg) +@pytest.mark.mcmc +@pytest.mark.slow +@pytest.mark.parametrize("step", ("nuts", "hmc", "slice")) +@pytest.mark.parametrize("num_chains", (1, 3)) +def test_c2st_pymc_sampler_on_Gaussian( + step: str, + num_chains: int, + num_dim: int = 2, + num_samples: int = 1000, + warmup: int = 100, +): + """Test PyMC on Gaussian, comparing to ground truth target via c2st.""" + likelihood_shift = -1.0 * ones(num_dim) + likelihood_cov = 0.3 * eye(num_dim) + prior_mean = zeros(num_dim) + prior_cov = eye(num_dim) + x_o = zeros((1, num_dim)) + target_distribution = true_posterior_linear_gaussian_mvn_prior( + x_o[0], likelihood_shift, likelihood_cov, prior_mean, prior_cov + ) + target_samples = target_distribution.sample((num_samples,)) + + def lp_f(x, track_gradients=True): + with torch.set_grad_enabled(track_gradients): + return target_distribution.log_prob(x) + + sampler = PyMCSampler( + potential_fn=lp_f, + initvals=np.zeros((num_chains, num_dim)).astype(np.float32), + step=step, + draws=(int(num_samples / num_chains)), # PyMC does not use thinning + tune=warmup, + chains=num_chains, + ) + samples = sampler.run() + assert samples.shape == ( + num_chains, + int(num_samples / num_chains), + num_dim, + ) + samples = samples.reshape(-1, num_dim) + + samples = torch.as_tensor(samples, dtype=torch.float32) + alg = f"pymc_{step}" + + check_c2st(samples, target_samples, alg=alg) + + @pytest.mark.mcmc @pytest.mark.parametrize( "method", ( - "nuts", - "hmc", - "slice", + "nuts_pyro", + "hmc_pyro", + "nuts_pymc", + "hmc_pymc", + "slice_pymc", "slice_np", "slice_np_vectorized", ), @@ -185,4 +230,19 @@ def test_getting_inference_diagnostics(method, mcmc_params_fast: dict): ) idata = posterior.get_arviz_inference_data() - az.plot_trace(idata) + assert hasattr(idata, "posterior"), ( + f"`MCMCPosterior.get_arviz_inference_data()` for method {method} " + f"returned invalid InferenceData. Must contain key 'posterior', " + f"but found only {list(idata.keys())}" + ) + samples = getattr(idata.posterior, posterior.param_name).data + samples = samples.reshape(-1, samples.shape[-1])[:: mcmc_params_fast["thin"]][ + :num_samples + ] + assert samples.shape == ( + num_samples, + num_dim, + ), ( + f"MCMC samples for method {method} have incorrect shape (n_samples, n_dims). " + f"Expected {(num_samples, num_dim)}, got {samples.shape}" + ) diff --git a/tests/posterior_sampler_test.py b/tests/posterior_sampler_test.py index b46a5b317..6b0b59af8 100644 --- a/tests/posterior_sampler_test.py +++ b/tests/posterior_sampler_test.py @@ -5,41 +5,46 @@ import pytest from pyro.infer.mcmc import MCMC -from torch import eye, zeros +from torch import Tensor, eye, zeros from torch.distributions import MultivariateNormal -from sbi import utils as utils from sbi.inference import ( SNL, MCMCPosterior, likelihood_estimator_based_potential, simulate_for_sbi, ) -from sbi.samplers.mcmc import SliceSamplerSerial, SliceSamplerVectorized +from sbi.samplers.mcmc import PyMCSampler, SliceSamplerSerial, SliceSamplerVectorized from sbi.simulators.linear_gaussian import diagonal_linear_gaussian @pytest.mark.mcmc @pytest.mark.parametrize( "sampling_method", - ("slice_np", "slice_np_vectorized", "slice", "nuts", "hmc"), + ( + "slice_np", + "slice_np_vectorized", + "nuts_pyro", + "hmc_pyro", + "nuts_pymc", + "hmc_pymc", + "slice_pymc", + ), ) +@pytest.mark.parametrize("num_chains", (1, pytest.param(3, marks=pytest.mark.slow))) def test_api_posterior_sampler_set( - sampling_method: str, set_seed, mcmc_params_fast: dict + sampling_method: str, + num_chains: int, + set_seed, + mcmc_params_fast: dict, + num_dim: int = 2, + num_samples: int = 42, + num_trials: int = 2, + num_simulations: int = 10, ): - """Runs SNL and checks that posterior_sampler is correctly set. - - Args: - mcmc_method: which mcmc method to use for sampling - set_seed: fixture for manual seeding - """ - - num_dim = 2 - num_samples = 10 - num_trials = 2 - num_simulations = 10 + """Runs SNL and checks that posterior_sampler is correctly set.""" x_o = zeros((num_trials, num_dim)) - # Test for multiple chains is cheap when vectorized. + mcmc_params_fast["num_chains"] = num_chains prior = MultivariateNormal(loc=zeros(num_dim), covariance_matrix=eye(num_dim)) simulator = diagonal_linear_gaussian @@ -58,17 +63,18 @@ def test_api_posterior_sampler_set( ) assert posterior.posterior_sampler is None - posterior.sample( - sample_shape=(num_samples, mcmc_params_fast["num_chains"]), + samples = posterior.sample( + sample_shape=(num_samples, num_chains), x=x_o, - mcmc_parameters={ - "init_strategy": "prior", - **mcmc_params_fast, - }, + mcmc_parameters={"init_strategy": "prior", **mcmc_params_fast}, ) + assert isinstance(samples, Tensor) + assert samples.shape == (num_samples, num_chains, num_dim) - if sampling_method in ["slice", "hmc", "nuts"]: + if "pyro" in sampling_method: assert type(posterior.posterior_sampler) is MCMC + elif "pymc" in sampling_method: + assert type(posterior.posterior_sampler) is PyMCSampler elif sampling_method == "slice_np": assert type(posterior.posterior_sampler) is SliceSamplerSerial else: # sampling_method == "slice_np_vectorized" diff --git a/tutorials/00_getting_started_flexible.ipynb b/tutorials/00_getting_started_flexible.ipynb index 552bb71fc..b8094b100 100644 --- a/tutorials/00_getting_started_flexible.ipynb +++ b/tutorials/00_getting_started_flexible.ipynb @@ -136,7 +136,7 @@ "metadata": {}, "outputs": [], "source": [ - "inference = SNPE(prior=prior) " + "inference = SNPE(prior=prior)" ] }, { @@ -266,7 +266,7 @@ "outputs": [], "source": [ "theta_true = prior.sample((1,))\n", - "# generate our observation \n", + "# generate our observation\n", "x_obs = simulator(theta_true)" ] }, diff --git a/tutorials/01_gaussian_amortized.ipynb b/tutorials/01_gaussian_amortized.ipynb index 67b9e7833..69f798783 100644 --- a/tutorials/01_gaussian_amortized.ipynb +++ b/tutorials/01_gaussian_amortized.ipynb @@ -183,7 +183,7 @@ "# plot posterior samples\n", "_ = analysis.pairplot(\n", " posterior_samples_1, limits=[[-2, 2], [-2, 2], [-2, 2]], figsize=(5, 5),\n", - " labels=[r\"$\\theta_1$\", r\"$\\theta_2$\", r\"$\\theta_3$\"], \n", + " labels=[r\"$\\theta_1$\", r\"$\\theta_2$\", r\"$\\theta_3$\"],\n", " points=theta_1 # add ground truth thetas\n", ")" ] @@ -238,7 +238,7 @@ "# plot posterior samples\n", "_ = analysis.pairplot(\n", " posterior_samples_2, limits=[[-2, 2], [-2, 2], [-2, 2]], figsize=(5, 5),\n", - " labels=[r\"$\\theta_1$\", r\"$\\theta_2$\", r\"$\\theta_3$\"], \n", + " labels=[r\"$\\theta_1$\", r\"$\\theta_2$\", r\"$\\theta_3$\"],\n", " points=theta_2 # add ground truth thetas\n", ")" ] From b2d7d21cb5421271657f04f01ebce6baff2800ea Mon Sep 17 00:00:00 2001 From: manuelgloeckler <38903899+manuelgloeckler@users.noreply.github.com> Date: Thu, 4 Apr 2024 14:22:18 +0200 Subject: [PATCH 23/53] Fixes rendering bug on website (#1125) * Fixes rendering bug on website * fix link to new getting started tutorial. --------- Co-authored-by: Jan Boelts --- docs/mkdocs.yml | 2 +- examples/00_HH_simulator.ipynb | 15 +++++---------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index ccc0c873f..43fcd48c3 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -6,7 +6,7 @@ nav: - Installation: install.md - Tutorials and Examples: - Introduction: - - Getting started: tutorial/00_getting_started.md + - Getting started: tutorial/00_getting_started_flexible.md - Flexible interface: tutorial/02_flexible_interface.md - Amortized inference: tutorial/01_gaussian_amortized.md - Implemented algorithms: tutorial/16_implemented_methods.md diff --git a/examples/00_HH_simulator.ipynb b/examples/00_HH_simulator.ipynb index 3b88cce0b..6a731aa38 100644 --- a/examples/00_HH_simulator.ipynb +++ b/examples/00_HH_simulator.ipynb @@ -106,7 +106,7 @@ "source": [ "## 2. Simulator\n", "\n", - "We would like to infer the posterior over the two parameters ($\\color{orange}\\bar g_{Na}$,$\\color{orange}\\bar g_K$) of a Hodgkin-Huxley model, given the observed electrophysiological recording above. The model has channel kinetics as in [Pospischil et al. 2008](https://link.springer.com/article/10.1007/s00422-008-0263-8), and is defined by the following set of differential equations (parameters of interest highlighted in orange):\n" + "We would like to infer the posterior over the two parameters ($\\color{orange}{\\bar g_{Na}}$,$\\color{orange}{\\bar g_K}$) of a Hodgkin-Huxley model, given the observed electrophysiological recording above. The model has channel kinetics as in [Pospischil et al. 2008](https://link.springer.com/article/10.1007/s00422-008-0263-8), and is defined by the following set of differential equations (parameters of interest highlighted in orange):\n" ] }, { @@ -116,15 +116,10 @@ "$$\n", "\\scriptsize\n", "\\begin{align}\n", - "\\color{black}\n", - "C_m\\frac{dV}{dt}& \\color{black} =g_1\\left(E_1-V\\right)+\n", - " \\color{orange}{\\bar{g}_{Na}}\\color{black}m^3h\\left(E_{Na}-V\\right)+\n", - " \\color{orange}{\\bar{g}_{K}}\\color{black}n^4\\left(E_K-V\\right)+\n", - " \\bar{g}_Mp\\left(E_K-V\\right)+\n", - " I_{inj}+\\color{black}\n", - " \\sigma\\eta\\left(t\\right)\\\\\n", - "\\color{black}\n", - "\\frac{dq}{dt}&\\color{black}=\\frac{q_\\infty\\left(V\\right)-q}{\\tau_q\\left(V\\right)},\\;q\\in\\{m,h,n,p\\}\n", + "\\color{black}{C_m\\frac{dV}{dt}}& \\color{black}{=g_1\\left(E_1-V\\right)}+\n", + " \\color{orange}{\\bar{g}_{Na}} \\color{black}{m^3h\\left(E_{Na}-V\\right)+}\n", + " \\color{orange}{\\bar{g}_{K}} \\color{black}{n^4\\left(E_K-V\\right)+\\bar{g}_Mp\\left(E_K-V\\right)+I_{inj}+\\sigma\\eta\\left(t\\right)}\\\\\n", + " \\color{black}{\\frac{dq}{dt}}&\\color{black}{=\\frac{q_\\infty\\left(V\\right)-q}{\\tau_q\\left(V\\right)},\\;q\\in\\{m,h,n,p\\}}\n", "\\end{align}\n", "$$\n" ] From cbf9dca7f209f1c055645b758937bd79edfe67a0 Mon Sep 17 00:00:00 2001 From: Nastya Krouglova <41705732+anastasiakrouglova@users.noreply.github.com> Date: Fri, 5 Apr 2024 11:51:16 +0200 Subject: [PATCH 24/53] Zuko density estimators (#1088) (#1116) * Zuko density estimators (#1088) * update zuko to 1.1.0 * test zuko_gmm commit * build_zuko_nsf added * add build_zuko_naf, update test * add license change to pr template. * CLN pyproject.toml (#1009) * CLN pyproject.toml * CLN optional deps comment * CLN alphabetical order * fix x_o and broken link tutorial 7 (#1003) * fix x_o and broken link tutorial 7 * typo in title * suppress plotting output --------- Co-authored-by: Matthijs * replace prepare_for_sbi in tutorials (#1013) * add zuko density estimators * not working gmm * update tests for PR * update PR for pyright * resolve pyright * add reportArgumentType * resolve pyright issue * resolve all issues pyright * resolve pyright * add typing and docstring * add functions from factory to test * remove comment mdn file * add docstrings flow file * add docstring in density_estimator_test.py * Update sbi/neural_nets/flow.py Co-authored-by: Sebastian Bischoff * Update sbi/neural_nets/flow.py Co-authored-by: Sebastian Bischoff * Update sbi/neural_nets/flow.py Co-authored-by: Sebastian Bischoff * removed pyright --------- Co-authored-by: bkmi <12955549+bkmi@users.noreply.github.com> Co-authored-by: Nastya Krouglova Co-authored-by: Jan Boelts Co-authored-by: Thomas Moreau Co-authored-by: Matthijs Pals <34062419+Matthijspals@users.noreply.github.com> Co-authored-by: Matthijs Co-authored-by: zinaStef <49067201+zinaStef@users.noreply.github.com> Co-authored-by: Sebastian Bischoff * merge * hate * merge * merge * merge * merge * MERGE * remove cnf * implement changes Jan * Update sbi/neural_nets/factory.py Co-authored-by: Jan * resolve issues Jan * undo changes to tutorials folder. * sort dependencies. --------- Co-authored-by: bkmi <12955549+bkmi@users.noreply.github.com> Co-authored-by: Nastya Krouglova Co-authored-by: Jan Boelts Co-authored-by: Thomas Moreau Co-authored-by: Matthijs Pals <34062419+Matthijspals@users.noreply.github.com> Co-authored-by: Matthijs Co-authored-by: zinaStef <49067201+zinaStef@users.noreply.github.com> Co-authored-by: Sebastian Bischoff Co-authored-by: Jan --- pyproject.toml | 2 +- .../density_estimators/zuko_flow.py | 8 +- sbi/neural_nets/factory.py | 67 +- sbi/neural_nets/flow.py | 758 ++++++++++++++++-- tests/density_estimator_test.py | 104 ++- tests/neural_nets_factory.py | 30 +- 6 files changed, 806 insertions(+), 163 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index fd0f9c49f..027a83f08 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,8 +42,8 @@ dependencies = [ "tensorboard", "torch>=1.8.0", "tqdm", - "zuko>=1.0.0", "pymc>=5.0.0", + "zuko>=1.1.0", ] [project.optional-dependencies] diff --git a/sbi/neural_nets/density_estimators/zuko_flow.py b/sbi/neural_nets/density_estimators/zuko_flow.py index 13c1e1e94..e8c04178a 100644 --- a/sbi/neural_nets/density_estimators/zuko_flow.py +++ b/sbi/neural_nets/density_estimators/zuko_flow.py @@ -2,7 +2,7 @@ import torch from torch import Tensor, nn -from zuko.flows import Flow +from zuko.flows.core import Flow from sbi.neural_nets.density_estimators.base import DensityEstimator from sbi.sbi_types import Shape @@ -125,6 +125,7 @@ def log_prob(self, input: Tensor, condition: Tensor) -> Tensor: emb_cond = emb_cond.expand(batch_shape + (emb_cond.shape[-1],)) dists = self.net(emb_cond) + log_probs = dists.log_prob(input) return log_probs @@ -166,7 +167,7 @@ def sample(self, sample_shape: Shape, condition: Tensor) -> Tensor: emb_cond = self._embedding_net(condition) dists = self.net(emb_cond) - # zuko.sample() returns (*sample_shape, *batch_shape, input_size). + samples = dists.sample(sample_shape).reshape(*batch_shape, *sample_shape, -1) return samples @@ -190,9 +191,8 @@ def sample_and_log_prob( emb_cond = self._embedding_net(condition) dists = self.net(emb_cond) - samples, log_probs = dists.rsample_and_log_prob(sample_shape) - # zuko.sample_and_log_prob() returns (*sample_shape, *batch_shape, ...). + samples, log_probs = dists.rsample_and_log_prob(sample_shape) samples = samples.reshape(*batch_shape, *sample_shape, -1) log_probs = log_probs.reshape(*batch_shape, *sample_shape) diff --git a/sbi/neural_nets/factory.py b/sbi/neural_nets/factory.py index 1273b4587..5bddcc0f5 100644 --- a/sbi/neural_nets/factory.py +++ b/sbi/neural_nets/factory.py @@ -16,11 +16,37 @@ build_maf, build_maf_rqs, build_nsf, + build_zuko_bpf, + build_zuko_gf, build_zuko_maf, + build_zuko_naf, + build_zuko_ncsf, + build_zuko_nice, + build_zuko_nsf, + build_zuko_sospf, + build_zuko_unaf, ) from sbi.neural_nets.mdn import build_mdn from sbi.neural_nets.mnle import build_mnle +model_builders = { + "mdn": build_mdn, + "made": build_made, + "maf": build_maf, + "maf_rqs": build_maf_rqs, + "nsf": build_nsf, + "mnle": build_mnle, + "zuko_nice": build_zuko_nice, + "zuko_maf": build_zuko_maf, + "zuko_nsf": build_zuko_nsf, + "zuko_ncsf": build_zuko_ncsf, + "zuko_sospf": build_zuko_sospf, + "zuko_naf": build_zuko_naf, + "zuko_unaf": build_zuko_unaf, + "zuko_gf": build_zuko_gf, + "zuko_bpf": build_zuko_bpf, +} + def classifier_nn( model: str, @@ -162,22 +188,10 @@ def likelihood_nn( ) def build_fn(batch_theta, batch_x): - if model == "mdn": - return build_mdn(batch_x=batch_x, batch_y=batch_theta, **kwargs) - elif model == "made": - return build_made(batch_x=batch_x, batch_y=batch_theta, **kwargs) - elif model == "maf": - return build_maf(batch_x=batch_x, batch_y=batch_theta, **kwargs) - elif model == "maf_rqs": - return build_maf_rqs(batch_x=batch_x, batch_y=batch_theta, **kwargs) - elif model == "nsf": - return build_nsf(batch_x=batch_x, batch_y=batch_theta, **kwargs) - elif model == "mnle": - return build_mnle(batch_x=batch_x, batch_y=batch_theta, **kwargs) - elif model == "zuko_maf": - return build_zuko_maf(batch_x=batch_x, batch_y=batch_theta, **kwargs) - else: - raise NotImplementedError + if model not in model_builders: + raise NotImplementedError(f"Model {model} in not implemented") + + return model_builders[model](batch_x=batch_x, batch_y=batch_theta, **kwargs) return build_fn @@ -265,20 +279,13 @@ def build_fn_snpe_a(batch_theta, batch_x, num_components): ) def build_fn(batch_theta, batch_x): - if model == "mdn": - return build_mdn(batch_x=batch_theta, batch_y=batch_x, **kwargs) - elif model == "made": - return build_made(batch_x=batch_theta, batch_y=batch_x, **kwargs) - elif model == "maf": - return build_maf(batch_x=batch_theta, batch_y=batch_x, **kwargs) - elif model == "maf_rqs": - return build_maf_rqs(batch_x=batch_theta, batch_y=batch_x, **kwargs) - elif model == "nsf": - return build_nsf(batch_x=batch_theta, batch_y=batch_x, **kwargs) - elif model == "zuko_maf": - return build_zuko_maf(batch_x=batch_theta, batch_y=batch_x, **kwargs) - else: - raise NotImplementedError + if model not in model_builders: + raise NotImplementedError(f"Model {model} in not implemented") + + # The naming might be a bit confusing. + # batch_x are the latent variables, batch_y the conditioned variables. + # batch_theta are the parameters and batch_x the observable variables. + return model_builders[model](batch_x=batch_theta, batch_y=batch_x, **kwargs) if model == "mdn_snpe_a": if num_components != 10: diff --git a/sbi/neural_nets/flow.py b/sbi/neural_nets/flow.py index a37e69f63..1bbb5e477 100644 --- a/sbi/neural_nets/flow.py +++ b/sbi/neural_nets/flow.py @@ -2,7 +2,7 @@ # under the Affero General Public License v3, see . from functools import partial -from typing import List, Optional, Sequence, Union +from typing import List, Optional, Sequence, Tuple, Union from warnings import warn import torch @@ -26,6 +26,33 @@ from sbi.utils.user_input_checks import check_data_device, check_embedding_net_device +def get_numel(batch_x: Tensor, batch_y: Tensor, embedding_net) -> Tuple[int, int]: + """ + Get the number of elements in the input and output space. + + Args: + batch_x: Batch of xs, used to infer dimensionality and (optional) z-scoring. + batch_y: Batch of ys, used to infer dimensionality and (optional) z-scoring. + embedding_net: Optional embedding network for y. + + Returns: + Tuple of the number of elements in the input and output space. + + """ + x_numel = batch_x[0].numel() + # Infer the output dimensionality of the embedding_net by making a forward pass. + check_data_device(batch_x, batch_y) + check_embedding_net_device(embedding_net=embedding_net, datum=batch_y) + y_numel = embedding_net(batch_y[:1]).numel() + if x_numel == 1: + warn( + "In one-dimensional output space, this flow is limited to Gaussians", + stacklevel=2, + ) + + return x_numel, y_numel + + def build_made( batch_x: Tensor, batch_y: Tensor, @@ -58,18 +85,7 @@ def build_made( Returns: Neural network. """ - x_numel = batch_x[0].numel() - # Infer the output dimensionality of the embedding_net by making a forward pass. - check_data_device(batch_x, batch_y) - check_embedding_net_device(embedding_net=embedding_net, datum=batch_y) - embedding_net.eval() - y_numel = embedding_net(batch_y[:1]).numel() - - if x_numel == 1: - warn( - "In one-dimensional output space, this flow is limited to Gaussians", - stacklevel=2, - ) + x_numel, y_numel = get_numel(batch_x, batch_y, embedding_net) transform = transforms.IdentityTransform() @@ -142,18 +158,7 @@ def build_maf( Returns: Neural network. """ - x_numel = batch_x[0].numel() - # Infer the output dimensionality of the embedding_net by making a forward pass. - check_data_device(batch_x, batch_y) - check_embedding_net_device(embedding_net=embedding_net, datum=batch_y) - embedding_net.eval() - y_numel = embedding_net(batch_y[:1]).numel() - - if x_numel == 1: - warn( - "In one-dimensional output space, this flow is limited to Gaussians", - stacklevel=2, - ) + x_numel, y_numel = get_numel(batch_x, batch_y, embedding_net) transform_list = [] for _ in range(num_transforms): @@ -185,7 +190,7 @@ def build_maf( standardizing_net(batch_y, structured_y), embedding_net ) - # Combine transforms. + # Combine transforms transform = transforms.CompositeTransform(transform_list) distribution = get_base_dist(x_numel, **kwargs) @@ -251,18 +256,7 @@ def build_maf_rqs( Returns: Neural network. """ - x_numel = batch_x[0].numel() - # Infer the output dimensionality of the embedding_net by making a forward pass. - check_data_device(batch_x, batch_y) - check_embedding_net_device(embedding_net=embedding_net, datum=batch_y) - embedding_net.eval() - y_numel = embedding_net(batch_y[:1]).numel() - - if x_numel == 1: - warn( - "In one-dimensional output space, this flow is limited to Gaussians", - stacklevel=2, - ) + x_numel, y_numel = get_numel(batch_x, batch_y, embedding_net) transform_list = [] for _ in range(num_transforms): @@ -355,12 +349,7 @@ def build_nsf( Returns: Neural network. """ - x_numel = batch_x[0].numel() - # Infer the output dimensionality of the embedding_net by making a forward pass. - check_data_device(batch_x, batch_y) - check_embedding_net_device(embedding_net=embedding_net, datum=batch_y) - embedding_net.eval() - y_numel = embedding_net(batch_y[:1]).numel() + x_numel, y_numel = get_numel(batch_x, batch_y, embedding_net) # Define mask function to alternate between predicted x-dimensions. def mask_in_layer(i): @@ -433,6 +422,61 @@ def mask_in_layer(i): return flow +def build_zuko_nice( + batch_x: Tensor, + batch_y: Tensor, + z_score_x: Optional[str] = "independent", + z_score_y: Optional[str] = "independent", + hidden_features: Union[Sequence[int], int] = 50, + num_transforms: int = 5, + embedding_net: nn.Module = nn.Identity(), + randmask: bool = False, + **kwargs, +) -> ZukoFlow: + """ + Build a Non-linear Independent Components Estimation (NICE) flow. + + Affine transformations are used by default, instead of the additive transformations + used by Dinh et al. (2014) originally. + + References: + | NICE: Non-linear Independent Components Estimation (Dinh et al., 2014) + | https://arxiv.org/abs/1410.8516 + + Arguments: + batch_x: Batch of xs, used to infer dimensionality and (optional) z-scoring. + batch_y: Batch of ys, used to infer dimensionality and (optional) z-scoring. + z_score_x: Whether to z-score xs passing into the network, can be one of: + - `none`, or None: do not z-score. + - `independent`: z-score each dimension independently. + - `structured`: treat dimensions as related, therefore compute mean and std + over the entire batch, instead of per-dimension. Should be used when each + sample is, for example, a time series or an image. + z_score_y: Whether to z-score ys passing into the network, same options as + z_score_x. + hidden_features: The number of hidden features in the flow. Defaults to 50. + num_transforms: The number of transformations in the flow. Defaults to 5. + embedding_net: The embedding network to use. Defaults to nn.Identity(). + randmask: Whether to use random masks in the flow. Defaults to False. + **kwargs: Additional keyword arguments to pass to the flow constructor. + """ + which_nf = "NICE" + additional_kwargs = {"randmask": randmask, **kwargs} + flow = build_zuko_flow( + which_nf, + batch_x, + batch_y, + z_score_x, + z_score_y, + hidden_features, + num_transforms, + embedding_net, + **additional_kwargs, + ) + + return flow + + def build_zuko_maf( batch_x: Tensor, batch_y: Tensor, @@ -441,13 +485,17 @@ def build_zuko_maf( hidden_features: Union[Sequence[int], int] = 50, num_transforms: int = 5, embedding_net: nn.Module = nn.Identity(), - residual: bool = True, randperm: bool = False, **kwargs, ) -> ZukoFlow: - """Builds MAF p(x|y). + """ + Build a Masked Autoregressive Flow (MAF). - Args: + References: + | Masked Autoregressive Flow for Density Estimation (Papamakarios et al., 2017) + | https://arxiv.org/abs/1705.07057 + + Arguments: batch_x: Batch of xs, used to infer dimensionality and (optional) z-scoring. batch_y: Batch of ys, used to infer dimensionality and (optional) z-scoring. z_score_x: Whether to z-score xs passing into the network, can be one of: @@ -458,66 +506,598 @@ def build_zuko_maf( sample is, for example, a time series or an image. z_score_y: Whether to z-score ys passing into the network, same options as z_score_x. - hidden_features: Number of hidden features. - num_transforms: Number of transforms. - embedding_net: Optional embedding network for y. - residual: whether to use residual blocks in the coupling layer. + hidden_features: The number of hidden features in the flow. Defaults to 50. + num_transforms: The number of transformations in the flow. Defaults to 5. + embedding_net: The embedding network to use. Defaults to nn.Identity(). + randperm: Whether to use random permutations in the flow. Defaults to False. + **kwargs: Additional keyword arguments to pass to the flow constructor. + """ + which_nf = "MAF" + additional_kwargs = {"randperm": randperm, **kwargs} + flow = build_zuko_flow( + which_nf, + batch_x, + batch_y, + z_score_x, + z_score_y, + hidden_features, + num_transforms, + embedding_net, + **additional_kwargs, + ) + + return flow + + +def build_zuko_nsf( + batch_x: Tensor, + batch_y: Tensor, + z_score_x: Optional[str] = "independent", + z_score_y: Optional[str] = "independent", + hidden_features: Union[Sequence[int], int] = 50, + num_transforms: int = 5, + embedding_net: nn.Module = nn.Identity(), + num_bins: int = 8, + **kwargs, +) -> ZukoFlow: + """ + Build a Neural Spline Flow (NSF) with monotonic rational-quadratic spline + transformations. + + By default, transformations are fully autoregressive. Coupling transformations + can be obtained by setting :py:`passes=2`. + + Warning: + Spline transformations are defined over the domain :math:`[-5, 5]`. Any feature + outside of this domain is not transformed. It is recommended to standardize + features (zero mean, unit variance) before training. + + References: + | Neural Spline Flows (Durkan et al., 2019) + | https://arxiv.org/abs/1906.04032 + + Arguments: + batch_x: Batch of xs, used to infer dimensionality and (optional) z-scoring. + batch_y: Batch of ys, used to infer dimensionality and (optional) z-scoring. + z_score_x: Whether to z-score xs passing into the network, can be one of: + - `none`, or None: do not z-score. + - `independent`: z-score each dimension independently. + - `structured`: treat dimensions as related, therefore compute mean and std + over the entire batch, instead of per-dimension. Should be used when each + sample is, for example, a time series or an image. + z_score_y: Whether to z-score ys passing into the network, same options as + z_score_x. + hidden_features: The number of hidden features in the flow. Defaults to 50. + num_transforms: The number of transformations in the flow. Defaults to 5. + embedding_net: The embedding network to use. Defaults to nn.Identity(). + num_bins: The number of bins in the spline transformations. Defaults to 8. + **kwargs: Additional keyword arguments to pass to the flow constructor. + """ + which_nf = "NSF" + additional_kwargs = {"bins": num_bins, **kwargs} + flow = build_zuko_flow( + which_nf, + batch_x, + batch_y, + z_score_x, + z_score_y, + hidden_features, + num_transforms, + embedding_net, + **additional_kwargs, + ) + + return flow + + +def build_zuko_ncsf( + batch_x: Tensor, + batch_y: Tensor, + z_score_x: Optional[str] = "independent", + z_score_y: Optional[str] = "independent", + hidden_features: Union[Sequence[int], int] = 50, + num_transforms: int = 5, + embedding_net: nn.Module = nn.Identity(), + num_bins: int = 8, + **kwargs, +) -> ZukoFlow: + r""" + Build a Neural Circular Spline Flow (NCSF). + + Circular spline transformations are obtained by composing circular domain shifts + with regular spline transformations. Features are assumed to lie in the half-open + interval :math:`[-\pi, \pi[`. + + References: + | Normalizing Flows on Tori and Spheres (Rezende et al., 2020) + | https://arxiv.org/abs/2002.02428 + + Arguments: + batch_x: Batch of xs, used to infer dimensionality and (optional) z-scoring. + batch_y: Batch of ys, used to infer dimensionality and (optional) z-scoring. + z_score_x: Whether to z-score xs passing into the network, can be one of: + - `none`, or None: do not z-score. + - `independent`: z-score each dimension independently. + - `structured`: treat dimensions as related, therefore compute mean and std + over the entire batch, instead of per-dimension. Should be used when each + sample is, for example, a time series or an image. + z_score_y: Whether to z-score ys passing into the network, same options as + z_score_x. + hidden_features: The number of hidden features in the flow. Defaults to 50. + num_transforms: The number of transformations in the flow. Defaults to 5. + embedding_net: The embedding network to use. Defaults to nn.Identity(). + num_bins: The number of bins in the spline transformations. Defaults to 8. + **kwargs: Additional keyword arguments to pass to the flow constructor. + """ + which_nf = "NCSF" + additional_kwargs = {"bins": num_bins, **kwargs} + flow = build_zuko_flow( + which_nf, + batch_x, + batch_y, + z_score_x, + z_score_y, + hidden_features, + num_transforms, + embedding_net, + **additional_kwargs, + ) + + return flow + + +def build_zuko_sospf( + batch_x: Tensor, + batch_y: Tensor, + z_score_x: Optional[str] = "independent", + z_score_y: Optional[str] = "independent", + hidden_features: Union[Sequence[int], int] = 50, + num_transforms: int = 5, + embedding_net: nn.Module = nn.Identity(), + degree: int = 4, + polynomials: int = 3, + **kwargs, +) -> ZukoFlow: + """ + Build a Sum-of-Squares Polynomial Flow (SOSPF). + + References: + | Sum-of-Squares Polynomial Flow (Jaini et al., 2019) + | https://arxiv.org/abs/1905.02325 + + Arguments: + batch_x: Batch of xs, used to infer dimensionality and (optional) z-scoring. + batch_y: Batch of ys, used to infer dimensionality and (optional) z-scoring. + z_score_x: Whether to z-score xs passing into the network, can be one of: + - `none`, or None: do not z-score. + - `independent`: z-score each dimension independently. + - `structured`: treat dimensions as related, therefore compute mean and std + over the entire batch, instead of per-dimension. Should be used when each + sample is, for example, a time series or an image. + z_score_y: Whether to z-score ys passing into the network, same options as + z_score_x. + hidden_features: The number of hidden features in the flow. Defaults to 50. + num_transforms: The number of transformations in the flow. Defaults to 5. + embedding_net: The embedding network to use. Defaults to nn.Identity(). + degree: The degree of the polynomials. Defaults to 4. + polynomials: The number of polynomials. Defaults to 3. + **kwargs: Additional keyword arguments to pass to the flow constructor. + """ + which_nf = "SOSPF" + additional_kwargs = {"degree": degree, "polynomials": polynomials, **kwargs} + flow = build_zuko_flow( + which_nf, + batch_x, + batch_y, + z_score_x, + z_score_y, + hidden_features, + num_transforms, + embedding_net, + **additional_kwargs, + ) + + return flow + + +def build_zuko_naf( + batch_x: Tensor, + batch_y: Tensor, + z_score_x: Optional[str] = "independent", + z_score_y: Optional[str] = "independent", + hidden_features: Union[Sequence[int], int] = 50, + num_transforms: int = 5, + embedding_net: nn.Module = nn.Identity(), + randperm: bool = False, + signal: int = 16, + **kwargs, +) -> ZukoFlow: + """ + Build a Neural Autoregressive Flow (NAF). + + Warning: + Invertibility is only guaranteed for features within the interval :math:`[-10, + 10]`. It is recommended to standardize features (zero mean, unit variance) + before training. + + References: + | Neural Autoregressive Flows (Huang et al., 2018) + | https://arxiv.org/abs/1804.00779 + + Arguments: + batch_x: Batch of xs, used to infer dimensionality and (optional) z-scoring. + batch_y: Batch of ys, used to infer dimensionality and (optional) z-scoring. + z_score_x: Whether to z-score xs passing into the network, can be one of: + - `none`, or None: do not z-score. + - `independent`: z-score each dimension independently. + - `structured`: treat dimensions as related, therefore compute mean and std + over the entire batch, instead of per-dimension. Should be used when each + sample is, for example, a time series or an image. + z_score_y: Whether to z-score ys passing into the network, same options as + z_score_x. + hidden_features: The number of hidden features in the flow. Defaults to 50. + num_transforms: The number of transformations in the flow. Defaults to 5. + embedding_net: The embedding network to use. Defaults to nn.Identity(). randperm: Whether features are randomly permuted between transformations or not. - kwargs: Additional arguments that are passed by the build function but are not - relevant for maf and are therefore ignored. + If :py:`False`, features are in ascending (descending) order for even + (odd) transformations. + signal: The number of signal features of the monotonic network. + **kwargs: Additional keyword arguments to pass to the flow constructor. + """ + which_nf = "NAF" + additional_kwargs = { + "randperm": randperm, + "signal": signal, + # "network": network, + **kwargs, + } + flow = build_zuko_flow( + which_nf, + batch_x, + batch_y, + z_score_x, + z_score_y, + hidden_features, + num_transforms, + embedding_net, + **additional_kwargs, + ) + + return flow + + +def build_zuko_unaf( + batch_x: Tensor, + batch_y: Tensor, + z_score_x: Optional[str] = "independent", + z_score_y: Optional[str] = "independent", + hidden_features: Union[Sequence[int], int] = 50, + num_transforms: int = 5, + embedding_net: nn.Module = nn.Identity(), + randperm: bool = False, + signal: int = 16, + **kwargs, +) -> ZukoFlow: + """ + Build an Unconstrained Neural Autoregressive Flow (UNAF). + + Warning: + Invertibility is only guaranteed for features within the interval :math:`[-10, + 10]`. It is recommended to standardize features (zero mean, unit variance) + before training. + + References: + | Unconstrained Monotonic Neural Networks (Wehenkel et al., 2019) + | https://arxiv.org/abs/1908.05164 + + Arguments: + batch_x: Batch of xs, used to infer dimensionality and (optional) z-scoring. + batch_y: Batch of ys, used to infer dimensionality and (optional) z-scoring. + z_score_x: Whether to z-score xs passing into the network, can be one of: + - `none`, or None: do not z-score. + - `independent`: z-score each dimension independently. + - `structured`: treat dimensions as related, therefore compute mean and std + over the entire batch, instead of per-dimension. Should be used when each + sample is, for example, a time series or an image. + z_score_y: Whether to z-score ys passing into the network, same options as + z_score_x. + hidden_features: The number of hidden features in the flow. Defaults to 50. + num_transforms: The number of transformations in the flow. Defaults to 5. + embedding_net: The embedding network to use. Defaults to nn.Identity(). + randperm: Whether features are randomly permuted between transformations or not. + If :py:`False`, features are in ascending (descending) order for even + (odd) transformations. + signal: The number of signal features of the monotonic network. + **kwargs: Additional keyword arguments to pass to the flow constructor. + """ + which_nf = "UNAF" + additional_kwargs = { + "randperm": randperm, + "signal": signal, + # "network": network, + **kwargs, + } + flow = build_zuko_flow( + which_nf, + batch_x, + batch_y, + z_score_x, + z_score_y, + hidden_features, + num_transforms, + embedding_net, + **additional_kwargs, + ) + + return flow + + +def build_zuko_cnf( + batch_x: Tensor, + batch_y: Tensor, + z_score_x: Optional[str] = "independent", + z_score_y: Optional[str] = "independent", + hidden_features: Union[Sequence[int], int] = 50, + num_transforms: int = 5, + embedding_net: nn.Module = nn.Identity(), + **kwargs, +) -> ZukoFlow: + """ + Build a Continuous Normalizing Flow (CNF) with a free-form Jacobian transformation. + + References: + | Neural Ordinary Differential Equations (Chen el al., 2018) + | https://arxiv.org/abs/1806.07366 + + | FFJORD: Free-form Continuous Dynamics for Scalable Reversible + | Generative Models (Grathwohl et al., 2018) + | https://arxiv.org/abs/1810.01367 + + Arguments: + batch_x: Batch of xs, used to infer dimensionality and (optional) z-scoring. + batch_y: Batch of ys, used to infer dimensionality and (optional) z-scoring. + z_score_x: Whether to z-score xs passing into the network, can be one of: + - `none`, or None: do not z-score. + - `independent`: z-score each dimension independently. + - `structured`: treat dimensions as related, therefore compute mean and std + over the entire batch, instead of per-dimension. Should be used when each + sample is, for example, a time series or an image. + z_score_y: Whether to z-score ys passing into the network, same options as + z_score_x. + hidden_features: The number of hidden features in the flow. Defaults to 50. + num_transforms: The number of transformations in the flow. Defaults to 5. + embedding_net: The embedding network to use. Defaults to nn.Identity(). + **kwargs: Additional keyword arguments to pass to the flow constructor. + """ + which_nf = "CNF" + additional_kwargs = {**kwargs} + flow = build_zuko_flow( + which_nf, + batch_x, + batch_y, + z_score_x, + z_score_y, + hidden_features, + num_transforms, + embedding_net, + **additional_kwargs, + ) + + return flow + + +def build_zuko_gf( + batch_x: Tensor, + batch_y: Tensor, + z_score_x: Optional[str] = "independent", + z_score_y: Optional[str] = "independent", + hidden_features: Union[Sequence[int], int] = 50, + num_transforms: int = 3, + embedding_net: nn.Module = nn.Identity(), + components: int = 8, + **kwargs, +) -> ZukoFlow: + """ + Build a Gaussianization Flow (GF). + + Warning: + Invertibility is only guaranteed for features within the interval :math:`[-10, + 10]`. It is recommended to standardize features (zero mean, unit variance) + before training. + + References: + | Gaussianization Flows (Meng et al., 2020) + | https://arxiv.org/abs/2003.01941 + + Arguments: + batch_x: Batch of xs, used to infer dimensionality and (optional) z-scoring. + batch_y: Batch of ys, used to infer dimensionality and (optional) z-scoring. + z_score_x: Whether to z-score xs passing into the network, can be one of: + - `none`, or None: do not z-score. + - `independent`: z-score each dimension independently. + - `structured`: treat dimensions as related, therefore compute mean and std + over the entire batch, instead of per-dimension. Should be used when each + sample is, for example, a time series or an image. + z_score_y: Whether to z-score ys passing into the network, same options as + z_score_x. + hidden_features: The number of hidden features in the flow. Defaults to 50. + num_transforms: The number of transformations in the flow. Defaults to 5. + embedding_net: The embedding network to use. Defaults to nn.Identity(). + components: The number of components in the Gaussian mixture model. + **kwargs: Additional keyword arguments to pass to the flow constructor. + """ + which_nf = "GF" + additional_kwargs = {"components": components, **kwargs} + flow = build_zuko_flow( + which_nf, + batch_x, + batch_y, + z_score_x, + z_score_y, + hidden_features, + num_transforms, + embedding_net, + **additional_kwargs, + ) + + return flow + + +def build_zuko_bpf( + batch_x: Tensor, + batch_y: Tensor, + z_score_x: Optional[str] = "independent", + z_score_y: Optional[str] = "independent", + hidden_features: Union[Sequence[int], int] = 50, + num_transforms: int = 3, + embedding_net: nn.Module = nn.Identity(), + degree: int = 16, + linear: bool = False, + **kwargs, +) -> ZukoFlow: + """ + Build a Bernstein polynomial flow (BPF). + + Warning: + Invertibility is only guaranteed for features within the interval :math:`[-10, + 10]`. It is recommended to standardize features (zero mean, unit variance) + before training. + + References: + | Short-Term Density Forecasting of Low-Voltage Load using + | Bernstein-Polynomial Normalizing Flows (Arpogaus et al., 2022) + | https://arxiv.org/abs/2204.13939 + + Arguments: + batch_x: Batch of xs, used to infer dimensionality and (optional) z-scoring. + batch_y: Batch of ys, used to infer dimensionality and (optional) z-scoring. + z_score_x: Whether to z-score xs passing into the network, can be one of: + - `none`, or None: do not z-score. + - `independent`: z-score each dimension independently. + - `structured`: treat dimensions as related, therefore compute mean and std + over the entire batch, instead of per-dimension. Should be used when each + sample is, for example, a time series or an image. + z_score_y: Whether to z-score ys passing into the network, same options as + z_score_x. + hidden_features: The number of hidden features in the flow. Defaults to 50. + num_transforms: The number of transformations in the flow. Defaults to 5. + embedding_net: The embedding network to use. Defaults to nn.Identity(). + degree: The degree :math:`M` of the Bernstein polynomial. + linear: Whether to use a linear or sigmoid mapping to :math:`[0, 1]`. + **kwargs: Additional keyword arguments to pass to the flow constructor. + """ + which_nf = "BPF" + additional_kwargs = {"degree": degree, "linear": linear, **kwargs} + flow = build_zuko_flow( + which_nf, + batch_x, + batch_y, + z_score_x, + z_score_y, + hidden_features, + num_transforms, + embedding_net, + **additional_kwargs, + ) + + return flow + + +def build_zuko_flow( + which_nf: str, + batch_x: Tensor, + batch_y: Tensor, + z_score_x: Optional[str] = "independent", + z_score_y: Optional[str] = "independent", + hidden_features: Union[Sequence[int], int] = 50, + num_transforms: int = 5, + embedding_net: nn.Module = nn.Identity(), + **kwargs, +) -> ZukoFlow: + """ + Fundamental building blocks to build a Zuko normalizing flow model. + + Args: + which_nf (str): The type of normalizing flow to build. + batch_x: Batch of xs, used to infer dimensionality and (optional) z-scoring. + batch_y: Batch of ys, used to infer dimensionality and (optional) z-scoring. + z_score_x: Whether to z-score xs passing into the network, can be one of: + - `none`, or None: do not z-score. + - `independent`: z-score each dimension independently. + - `structured`: treat dimensions as related, therefore compute mean and std + over the entire batch, instead of per-dimension. Should be used when each + sample is, for example, a time series or an image. + z_score_y: Whether to z-score ys passing into the network, same options as + z_score_x. + hidden_features: The number of hidden features in the flow. Defaults to 50. + num_transforms: The number of transformations in the flow. Defaults to 5. + embedding_net: The embedding network to use. Defaults to nn.Identity(). + **kwargs: Additional keyword arguments to pass to the flow constructor. Returns: - Neural network. + ZukoFlow: The constructed Zuko normalizing flow model. """ - x_numel = batch_x[0].numel() - # Infer the output dimensionality of the embedding_net by making a forward pass. - check_data_device(batch_x, batch_y) - check_embedding_net_device(embedding_net=embedding_net, datum=batch_y) - embedding_net.eval() - y_numel = embedding_net(batch_y[:1]).numel() - if x_numel == 1: - warn( - "In one-dimensional output space, this flow is limited to Gaussians", - stacklevel=1, - ) + + x_numel, y_numel = get_numel(batch_x, batch_y, embedding_net) if isinstance(hidden_features, int): hidden_features = [hidden_features] * num_transforms - if x_numel == 1: - maf = zuko.flows.MAF( - features=x_numel, - context=y_numel, - hidden_features=hidden_features, - transforms=num_transforms, + build_nf = getattr(zuko.flows, which_nf) + + if which_nf == "CNF": + flow_built = build_nf( + features=x_numel, context=y_numel, hidden_features=hidden_features, **kwargs ) else: - maf = zuko.flows.MAF( + flow_built = build_nf( features=x_numel, context=y_numel, hidden_features=hidden_features, transforms=num_transforms, - randperm=randperm, - residual=residual, + **kwargs, ) - transforms = maf.transform - z_score_x_bool, structured_x = z_score_parser(z_score_x) - if z_score_x_bool: - transforms = ( - transforms, - standardizing_transform_zuko(batch_x, structured_x), - ) + # Continuous normalizing flows (CNF) only have one transform, + # so we need to handle them slightly differently. + if which_nf == "CNF": + transform = flow_built.transform - z_score_y_bool, structured_y = z_score_parser(z_score_y) - if z_score_y_bool: - # Prepend standardizing transform to y-embedding. - embedding_net = nn.Sequential( - standardizing_net(batch_y, structured_y), embedding_net - ) + z_score_x_bool, structured_x = z_score_parser(z_score_x) + if z_score_x_bool: + transform = ( + transform, + standardizing_transform_zuko(batch_x, structured_x), + ) - # Combine transforms. - neural_net = zuko.flows.Flow(transforms, maf.base) + z_score_y_bool, structured_y = z_score_parser(z_score_y) + if z_score_y_bool: + # Prepend standardizing transform to y-embedding. + embedding_net = nn.Sequential( + standardizing_transform_zuko(batch_y, structured_y), embedding_net + ) + + # Combine transforms. + neural_net = zuko.flows.Flow(transform, flow_built.base) + else: + transforms = flow_built.transform.transforms + + z_score_x_bool, structured_x = z_score_parser(z_score_x) + if z_score_x_bool: + transforms = ( + *transforms, + standardizing_transform_zuko(batch_x, structured_x), + ) + + z_score_y_bool, structured_y = z_score_parser(z_score_y) + if z_score_y_bool: + # Prepend standardizing transform to y-embedding. + embedding_net = nn.Sequential( + standardizing_net(batch_y, structured_y), embedding_net + ) + + # Combine transforms. + neural_net = zuko.flows.Flow(transforms, flow_built.base) flow = ZukoFlow(neural_net, embedding_net, condition_shape=batch_y[0].shape) diff --git a/tests/density_estimator_test.py b/tests/density_estimator_test.py index 2468a0fbc..8bd8bbb27 100644 --- a/tests/density_estimator_test.py +++ b/tests/density_estimator_test.py @@ -10,21 +10,82 @@ from torch import eye, zeros from torch.distributions import MultivariateNormal -from sbi.neural_nets.density_estimators import NFlowsFlow, ZukoFlow from sbi.neural_nets.density_estimators.shape_handling import reshape_to_iid_batch_event -from sbi.neural_nets.flow import build_nsf, build_zuko_maf +from sbi.neural_nets.flow import ( + build_maf, + build_maf_rqs, + build_nsf, + build_zuko_bpf, + build_zuko_gf, + build_zuko_maf, + build_zuko_naf, + build_zuko_ncsf, + build_zuko_nice, + build_zuko_nsf, + build_zuko_sospf, + build_zuko_unaf, +) + + +def get_batch_input(nsamples: int, input_dims: int) -> torch.Tensor: + r"""Generate a batch of input samples from a multivariate normal distribution. + + Args: + nsamples (int): The number of samples to generate. + input_dims (int): The dimensionality of the input samples. + + Returns: + torch.Tensor: A tensor of shape (nsamples, input_dims) + containing the generated samples. + """ + input_mvn = MultivariateNormal( + loc=zeros(input_dims), covariance_matrix=eye(input_dims) + ) + return input_mvn.sample((nsamples,)) + + +def get_batch_context(nsamples: int, condition_shape: tuple[int, ...]) -> torch.Tensor: + r"""Generate a batch of context samples from a multivariate normal distribution. + + Args: + nsamples (int): The number of context samples to generate. + condition_shape (tuple[int, ...]): The shape of the condition for each sample. + + Returns: + torch.Tensor: A tensor containing the generated context samples. + """ + context_mvn = MultivariateNormal( + loc=zeros(*condition_shape), covariance_matrix=eye(condition_shape[-1]) + ) + return context_mvn.sample((nsamples,)) -@pytest.mark.parametrize("density_estimator", (NFlowsFlow, ZukoFlow)) +@pytest.mark.parametrize( + "build_density_estimator", + ( + build_maf, + build_maf_rqs, + build_nsf, + build_zuko_nice, + build_zuko_maf, + build_zuko_nsf, + build_zuko_ncsf, + build_zuko_sospf, + build_zuko_naf, + build_zuko_unaf, + build_zuko_gf, + build_zuko_bpf, + ), +) @pytest.mark.parametrize("input_dims", (1, 2)) @pytest.mark.parametrize( "condition_shape", ((1,), (2,), (1, 1), (2, 2), (1, 1, 1), (2, 2, 2)) ) -def test_api_density_estimator(density_estimator, input_dims, condition_shape): +def test_api_density_estimator(build_density_estimator, input_dims, condition_shape): r"""Checks whether we can evaluate and sample from density estimators correctly. Args: - density_estimator: DensityEstimator subclass. + build_density_estimator: function that creates a DensityEstimator subclass. input_dim: Dimensionality of the input. context_shape: Dimensionality of the context. """ @@ -32,14 +93,8 @@ def test_api_density_estimator(density_estimator, input_dims, condition_shape): nsamples = 10 nsamples_test = 5 - input_mvn = MultivariateNormal( - loc=zeros(input_dims), covariance_matrix=eye(input_dims) - ) - batch_input = input_mvn.sample((nsamples,)) - context_mvn = MultivariateNormal( - loc=zeros(*condition_shape), covariance_matrix=eye(condition_shape[-1]) - ) - batch_context = context_mvn.sample((nsamples,)) + batch_input = get_batch_input(nsamples, input_dims) + batch_context = get_batch_context(nsamples, condition_shape) class EmbeddingNet(torch.nn.Module): def forward(self, x): @@ -47,22 +102,13 @@ def forward(self, x): x = torch.sum(x, dim=-1) return x - if density_estimator == NFlowsFlow: - estimator = build_nsf( - batch_input, - batch_context, - hidden_features=10, - num_transforms=2, - embedding_net=EmbeddingNet(), - ) - elif density_estimator == ZukoFlow: - estimator = build_zuko_maf( - batch_input, - batch_context, - hidden_features=10, - num_transforms=2, - embedding_net=EmbeddingNet(), - ) + estimator = build_density_estimator( + batch_input, + batch_context, + hidden_features=10, + num_transforms=2, + embedding_net=EmbeddingNet(), + ) # Loss is only required to work for batched inputs and contexts loss = estimator.loss(batch_input, batch_context) diff --git a/tests/neural_nets_factory.py b/tests/neural_nets_factory.py index f5a2775f3..af8c4d4a1 100644 --- a/tests/neural_nets_factory.py +++ b/tests/neural_nets_factory.py @@ -2,6 +2,24 @@ from sbi.utils.get_nn_models import classifier_nn, likelihood_nn, posterior_nn +models_to_test = [ + "mdn", + "made", + "maf", + "maf_rqs", + "nsf", + "mnle", + "zuko_bpf", + "zuko_gf", + "zuko_maf", + "zuko_naf", + "zuko_ncsf", + "zuko_nice", + "zuko_nsf", + "zuko_sospf", + "zuko_unaf", +] + @pytest.mark.parametrize( "model", ["linear", "mlp", "resnet"], ids=["linear", "mlp", "resnet"] @@ -12,22 +30,14 @@ def test_deprecated_import_classifier_nn(model: str): assert callable(build_fcn) -@pytest.mark.parametrize( - "model", - ["mdn", "made", "maf", "maf_rqs", "nsf", "mnle", "zuko_maf"], - ids=["mdn", "made", "maf", "maf_rqs", "nsf", "mnle", "zuko_maf"], -) +@pytest.mark.parametrize("model", models_to_test, ids=models_to_test) def test_deprecated_import_likelihood_nn(model: str): with pytest.warns(DeprecationWarning): build_fcn = likelihood_nn(model) assert callable(build_fcn) -@pytest.mark.parametrize( - "model", - ["mdn", "made", "maf", "maf_rqs", "nsf", "mnle", "zuko_maf"], - ids=["mdn", "made", "maf", "maf_rqs", "nsf", "mnle", "zuko_maf"], -) +@pytest.mark.parametrize("model", models_to_test, ids=models_to_test) def test_deprecated_import_posterior_nn(model: str): with pytest.warns(DeprecationWarning): build_fcn = posterior_nn(model) From a126b1d519d84ed1162cf9f2c62313e39bc91e6e Mon Sep 17 00:00:00 2001 From: Jan Boelts Date: Wed, 3 Apr 2024 15:41:15 +0200 Subject: [PATCH 25/53] fix snle test. --- tests/linearGaussian_snle_test.py | 78 +++++++++++++++---------------- 1 file changed, 37 insertions(+), 41 deletions(-) diff --git a/tests/linearGaussian_snle_test.py b/tests/linearGaussian_snle_test.py index 8a9fea093..44ec03824 100644 --- a/tests/linearGaussian_snle_test.py +++ b/tests/linearGaussian_snle_test.py @@ -460,50 +460,46 @@ def test_api_snl_sampling_methods( else: prior = BoxUniform(-1.0 * ones(num_dim), ones(num_dim)) - # Why do we have this if-case? Only the `MCMCPosterior` uses the `init_strategy`. - # Thus, we would not like to run, e.g., VI with all init_strategies, but only once - # (namely with `init_strategy=proposal`). - if sample_with == "mcmc" or init_strategy == "proposal": - simulator = diagonal_linear_gaussian + simulator = diagonal_linear_gaussian - inference = SNLE(show_progress_bars=False) + inference = SNLE(show_progress_bars=False) - theta, x = simulate_for_sbi( - simulator, prior, num_simulations, simulation_batch_size=1000 + theta, x = simulate_for_sbi( + simulator, prior, num_simulations, simulation_batch_size=1000 + ) + likelihood_estimator = inference.append_simulations(theta, x).train( + max_num_epochs=5 + ) + potential_fn, theta_transform = likelihood_estimator_based_potential( + prior=prior, likelihood_estimator=likelihood_estimator, x_o=x_o + ) + if sample_with == "rejection": + posterior = RejectionPosterior(potential_fn=potential_fn, proposal=prior) + elif ( + "slice" in sampling_method + or "nuts" in sampling_method + or "hmc" in sampling_method + ): + posterior = MCMCPosterior( + potential_fn, + proposal=prior, + theta_transform=theta_transform, + method=sampling_method, + init_strategy=init_strategy, + **mcmc_params_fast, ) - likelihood_estimator = inference.append_simulations(theta, x).train( - max_num_epochs=5 + elif sample_with == "importance": + posterior = ImportanceSamplingPosterior( + potential_fn, + proposal=prior, + theta_transform=theta_transform, ) - potential_fn, theta_transform = likelihood_estimator_based_potential( - prior=prior, likelihood_estimator=likelihood_estimator, x_o=x_o + else: + posterior = VIPosterior( + potential_fn, + theta_transform=theta_transform, + vi_method=sampling_method, ) - if sample_with == "rejection": - posterior = RejectionPosterior(potential_fn=potential_fn, proposal=prior) - elif ( - "slice" in sampling_method - or "nuts" in sampling_method - or "hmc" in sampling_method - ): - posterior = MCMCPosterior( - potential_fn, - proposal=prior, - theta_transform=theta_transform, - method=sampling_method, - init_strategy=init_strategy, - **mcmc_params_fast, - ) - elif sample_with == "importance": - posterior = ImportanceSamplingPosterior( - potential_fn, - proposal=prior, - theta_transform=theta_transform, - ) - else: - posterior = VIPosterior( - potential_fn, - theta_transform=theta_transform, - vi_method=sampling_method, - ) - posterior.train(max_num_iters=10) + posterior.train(max_num_iters=10) - posterior.sample(sample_shape=(num_samples,)) + posterior.sample(sample_shape=(num_samples,)) From 69677f4c589a60dfe0d8d5362c51df7e3f50c26f Mon Sep 17 00:00:00 2001 From: Jan Boelts Date: Wed, 3 Apr 2024 15:49:04 +0200 Subject: [PATCH 26/53] expose progress bar in IS posterior. --- sbi/inference/posteriors/importance_posterior.py | 10 ++++++++++ sbi/samplers/importance/importance_sampling.py | 7 ++++++- tests/linearGaussian_snle_test.py | 2 +- tests/linearGaussian_snre_test.py | 2 +- 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/sbi/inference/posteriors/importance_posterior.py b/sbi/inference/posteriors/importance_posterior.py index ccad0e64d..ace31ba2f 100644 --- a/sbi/inference/posteriors/importance_posterior.py +++ b/sbi/inference/posteriors/importance_posterior.py @@ -160,12 +160,18 @@ def sample( oversampling_factor: int = 32, max_sampling_batch_size: int = 10_000, sample_with: Optional[str] = None, + show_progress_bars: bool = False, ) -> Union[Tensor, Tuple[Tensor, Tensor]]: """Return samples from the approximate posterior distribution. Args: sample_shape: _description_ x: _description_ + oversampling_factor: Number of proposed samples from which only one is + selected based on its importance weight. + max_sampling_batch_size: The batch size of samples being drawn from the + proposal at every iteration. + show_progress_bars: Whether to show a progressbar during sampling. """ if sample_with is not None: raise ValueError( @@ -181,6 +187,7 @@ def sample( sample_shape, oversampling_factor=oversampling_factor, max_sampling_batch_size=max_sampling_batch_size, + show_progress_bars=show_progress_bars, ) elif self.method == "importance": return self._importance_sample(sample_shape) @@ -190,6 +197,7 @@ def sample( def _importance_sample( self, sample_shape: Shape = torch.Size(), + show_progress_bars: bool = False, ) -> Tuple[Tensor, Tensor]: """Returns samples from the proposal and log of their importance weights. @@ -197,6 +205,7 @@ def _importance_sample( sample_shape: Desired shape of samples that are drawn from posterior. sample_with: This argument only exists to keep backward-compatibility with `sbi` v0.17.2 or older. If it is set, we instantly raise an error. + show_progress_bars: Whether to show sampling progress monitor. Returns: Samples and logarithm of corresponding importance weights. @@ -206,6 +215,7 @@ def _importance_sample( self.potential_fn, proposal=self.proposal, num_samples=num_samples, + show_progress_bars=show_progress_bars, ) samples = samples.reshape((*sample_shape, -1)).to(self._device) diff --git a/sbi/samplers/importance/importance_sampling.py b/sbi/samplers/importance/importance_sampling.py index 20199b68b..2660ab310 100644 --- a/sbi/samplers/importance/importance_sampling.py +++ b/sbi/samplers/importance/importance_sampling.py @@ -9,6 +9,7 @@ def importance_sample( potential_fn, proposal, num_samples: int = 1, + show_progress_bars: bool = False, ) -> Tuple[Tensor, Tensor]: """Returns samples from proposal and log(importance weights). @@ -20,7 +21,11 @@ def importance_sample( Returns: Samples and logarithm of importance weights. """ - samples = proposal.sample((num_samples,)) + # Use progress bars when available (e.g., for multi-round proposals) + try: + samples = proposal.sample((num_samples,), show_progress_bar=show_progress_bars) + except TypeError: + samples = proposal.sample((num_samples,)) potential_logprobs = potential_fn(samples) proposal_logprobs = proposal.log_prob(samples) diff --git a/tests/linearGaussian_snle_test.py b/tests/linearGaussian_snle_test.py index 44ec03824..aae1370b7 100644 --- a/tests/linearGaussian_snle_test.py +++ b/tests/linearGaussian_snle_test.py @@ -502,4 +502,4 @@ def test_api_snl_sampling_methods( ) posterior.train(max_num_iters=10) - posterior.sample(sample_shape=(num_samples,)) + posterior.sample(sample_shape=(num_samples,), show_progress_bars=False) diff --git a/tests/linearGaussian_snre_test.py b/tests/linearGaussian_snre_test.py index 086c7ce73..9380f8890 100644 --- a/tests/linearGaussian_snre_test.py +++ b/tests/linearGaussian_snre_test.py @@ -419,4 +419,4 @@ def test_api_sre_sampling_methods( ) posterior.train(max_num_iters=10) - posterior.sample(sample_shape=(num_samples,)) + posterior.sample(sample_shape=(num_samples,), show_progress_bars=False) From e17a9062f3ce675cd23b33f9da6edc4176be9cb1 Mon Sep 17 00:00:00 2001 From: Jan Boelts Date: Thu, 4 Apr 2024 08:37:45 +0200 Subject: [PATCH 27/53] fix deprecated nuts and hmc kwargs. --- sbi/inference/posteriors/mcmc_posterior.py | 9 ++++++++- tests/inference_on_device_test.py | 2 +- tests/linearGaussian_snle_test.py | 8 +++----- tests/linearGaussian_snre_test.py | 6 +++--- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/sbi/inference/posteriors/mcmc_posterior.py b/sbi/inference/posteriors/mcmc_posterior.py index 75d8b1cdb..734bfbe91 100644 --- a/sbi/inference/posteriors/mcmc_posterior.py +++ b/sbi/inference/posteriors/mcmc_posterior.py @@ -667,7 +667,14 @@ def _prepare_potential(self, method: str) -> Callable: track_gradients = False pyro = False else: - raise NotImplementedError + if "hmc" in method or "nuts" in method: + warn( + """The kwargs "hmc" and "nuts" are deprecated. Use "hmc_pyro", + "nuts_pyro", "hmc_pymc", or "nuts_pymc" instead.""", + DeprecationWarning, + stacklevel=2, + ) + raise NotImplementedError(f"MCMC method {method} is not implemented.") prepared_potential = partial( transformed_potential, diff --git a/tests/inference_on_device_test.py b/tests/inference_on_device_test.py index dd87da969..7df1ef1d6 100644 --- a/tests/inference_on_device_test.py +++ b/tests/inference_on_device_test.py @@ -58,7 +58,7 @@ pytest.param(SNRE_B, "resnet", "slice", marks=pytest.mark.mcmc), (SNRE_C, "resnet", "rejection"), (SNRE_C, "resnet", "importance"), - pytest.param(SNRE_C, "resnet", "nuts", marks=pytest.mark.mcmc), + pytest.param(SNRE_C, "resnet", "nuts_pymc", marks=pytest.mark.mcmc), ], ) @pytest.mark.parametrize( diff --git a/tests/linearGaussian_snle_test.py b/tests/linearGaussian_snle_test.py index aae1370b7..46647932a 100644 --- a/tests/linearGaussian_snle_test.py +++ b/tests/linearGaussian_snle_test.py @@ -406,11 +406,9 @@ def simulator(theta): pytest.param("slice_np", "uniform", marks=pytest.mark.mcmc), pytest.param("slice_np_vectorized", "gaussian", marks=pytest.mark.mcmc), pytest.param("slice_np_vectorized", "uniform", marks=pytest.mark.mcmc), - pytest.param("slice", "gaussian", marks=pytest.mark.mcmc), - pytest.param("slice", "uniform", marks=pytest.mark.mcmc), - pytest.param("nuts", "gaussian", marks=pytest.mark.mcmc), - pytest.param("nuts", "uniform", marks=pytest.mark.mcmc), - pytest.param("hmc", "gaussian", marks=pytest.mark.mcmc), + pytest.param("nuts_pymc", "gaussian", marks=pytest.mark.mcmc), + pytest.param("nuts_pyro", "uniform", marks=pytest.mark.mcmc), + pytest.param("hmc_pymc", "gaussian", marks=pytest.mark.mcmc), ("rejection", "uniform"), ("rejection", "gaussian"), ("rKL", "uniform"), diff --git a/tests/linearGaussian_snre_test.py b/tests/linearGaussian_snre_test.py index 9380f8890..92a272a37 100644 --- a/tests/linearGaussian_snre_test.py +++ b/tests/linearGaussian_snre_test.py @@ -328,9 +328,9 @@ def simulator(theta): pytest.param("slice_np_vectorized", "uniform", marks=pytest.mark.mcmc), pytest.param("slice", "gaussian", marks=pytest.mark.mcmc), pytest.param("slice", "uniform", marks=pytest.mark.mcmc), - pytest.param("nuts", "gaussian", marks=pytest.mark.mcmc), - pytest.param("nuts", "uniform", marks=pytest.mark.mcmc), - pytest.param("hmc", "gaussian", marks=pytest.mark.mcmc), + pytest.param("nuts_pymc", "gaussian", marks=pytest.mark.mcmc), + pytest.param("nuts_pyro", "uniform", marks=pytest.mark.mcmc), + pytest.param("hmc_pyro", "gaussian", marks=pytest.mark.mcmc), ("rejection", "uniform"), ("rejection", "gaussian"), ("rKL", "uniform"), From c40e4b15e9419771fab60eb9209e0bc2082f8311 Mon Sep 17 00:00:00 2001 From: Jan Boelts Date: Thu, 4 Apr 2024 09:22:13 +0200 Subject: [PATCH 28/53] remove duplicate slice mcmc tests --- tests/inference_on_device_test.py | 10 +++++----- tests/linearGaussian_snpe_test.py | 1 - tests/linearGaussian_snre_test.py | 2 -- tests/mnle_test.py | 2 +- 4 files changed, 6 insertions(+), 9 deletions(-) diff --git a/tests/inference_on_device_test.py b/tests/inference_on_device_test.py index 7df1ef1d6..e1e5208d5 100644 --- a/tests/inference_on_device_test.py +++ b/tests/inference_on_device_test.py @@ -46,16 +46,16 @@ (SNPE_C, "maf", "direct"), (SNPE_C, "mdn", "rejection"), pytest.param(SNPE_C, "maf", "slice_np_vectorized", marks=pytest.mark.mcmc), - pytest.param(SNPE_C, "mdn", "slice", marks=pytest.mark.mcmc), + pytest.param(SNPE_C, "mdn", "slice_np", marks=pytest.mark.mcmc), pytest.param(SNLE, "nsf", "slice_np_vectorized", marks=pytest.mark.mcmc), - pytest.param(SNLE, "mdn", "slice", marks=pytest.mark.mcmc), + pytest.param(SNLE, "mdn", "slice_np", marks=pytest.mark.mcmc), (SNLE, "nsf", "rejection"), (SNLE, "maf", "importance"), pytest.param(SNRE_A, "mlp", "slice_np_vectorized", marks=pytest.mark.mcmc), - pytest.param(SNRE_A, "mlp", "slice", marks=pytest.mark.mcmc), + pytest.param(SNRE_A, "mlp", "slice_np", marks=pytest.mark.mcmc), (SNRE_B, "resnet", "rejection"), (SNRE_B, "resnet", "importance"), - pytest.param(SNRE_B, "resnet", "slice", marks=pytest.mark.mcmc), + pytest.param(SNRE_B, "resnet", "slice_np", marks=pytest.mark.mcmc), (SNRE_C, "resnet", "rejection"), (SNRE_C, "resnet", "importance"), pytest.param(SNRE_C, "resnet", "nuts_pymc", marks=pytest.mark.mcmc), @@ -151,7 +151,7 @@ def simulator(theta): ) # mcmc cases - if sampling_method in ["slice", "slice_np", "slice_np_vectorized", "nuts"]: + if sampling_method in ["slice_np", "slice_np_vectorized", "nuts_pymc"]: posterior = inferer.build_posterior( sample_with="mcmc", mcmc_method=sampling_method, diff --git a/tests/linearGaussian_snpe_test.py b/tests/linearGaussian_snpe_test.py index cbc0d3bdd..bc14b3740 100644 --- a/tests/linearGaussian_snpe_test.py +++ b/tests/linearGaussian_snpe_test.py @@ -389,7 +389,6 @@ def simulator(theta): "sample_with, mcmc_method, prior_str", ( pytest.param("mcmc", "slice_np", "gaussian", marks=pytest.mark.mcmc), - pytest.param("mcmc", "slice", "gaussian", marks=pytest.mark.mcmc), pytest.param("mcmc", "slice_np_vectorized", "gaussian", marks=pytest.mark.mcmc), ("rejection", "rejection", "uniform"), ), diff --git a/tests/linearGaussian_snre_test.py b/tests/linearGaussian_snre_test.py index 92a272a37..2edf59f55 100644 --- a/tests/linearGaussian_snre_test.py +++ b/tests/linearGaussian_snre_test.py @@ -326,8 +326,6 @@ def simulator(theta): pytest.param("slice_np", "uniform", marks=pytest.mark.mcmc), pytest.param("slice_np_vectorized", "gaussian", marks=pytest.mark.mcmc), pytest.param("slice_np_vectorized", "uniform", marks=pytest.mark.mcmc), - pytest.param("slice", "gaussian", marks=pytest.mark.mcmc), - pytest.param("slice", "uniform", marks=pytest.mark.mcmc), pytest.param("nuts_pymc", "gaussian", marks=pytest.mark.mcmc), pytest.param("nuts_pyro", "uniform", marks=pytest.mark.mcmc), pytest.param("hmc_pyro", "gaussian", marks=pytest.mark.mcmc), diff --git a/tests/mnle_test.py b/tests/mnle_test.py index b2127d069..41ef9981c 100644 --- a/tests/mnle_test.py +++ b/tests/mnle_test.py @@ -43,7 +43,7 @@ def test_mnle_on_device( device, mcmc_params_fast: dict, num_simulations: int = 100, - mcmc_method: str = "slice", + mcmc_method: str = "slice_np", ): """Test MNLE API on device.""" From ab6783921c58e086d818e2002d7d4bc30852013e Mon Sep 17 00:00:00 2001 From: Jan Boelts Date: Fri, 5 Apr 2024 12:00:47 +0200 Subject: [PATCH 29/53] FIX: track_gradients boolean bug. --- sbi/samplers/mcmc/pymc_wrapper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sbi/samplers/mcmc/pymc_wrapper.py b/sbi/samplers/mcmc/pymc_wrapper.py index 8d9bcfd4a..86043199e 100644 --- a/sbi/samplers/mcmc/pymc_wrapper.py +++ b/sbi/samplers/mcmc/pymc_wrapper.py @@ -138,7 +138,7 @@ def __init__( self._device = device # create PyMC model object - track_gradients = step in (pymc.NUTS, pymc.HamiltonianMC) + track_gradients = step in ("nuts", "hmc") self._model = pymc.Model() potential = PyMCPotential( potential_fn, track_gradients=track_gradients, device=device From 1c5adfd3e1d0fc3b825fa87c8de6735ae72031e2 Mon Sep 17 00:00:00 2001 From: Jan Boelts Date: Fri, 5 Apr 2024 12:03:12 +0200 Subject: [PATCH 30/53] make mcmc tests more difficult. --- tests/mcmc_test.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/mcmc_test.py b/tests/mcmc_test.py index 43cc0015b..ccad85ee3 100644 --- a/tests/mcmc_test.py +++ b/tests/mcmc_test.py @@ -81,7 +81,7 @@ def test_c2st_slice_np_vectorized_parallelized_on_Gaussian( Args: num_dim: parameter dimension of the gaussian model """ - num_samples = 500 + num_samples = 1000 warmup = mcmc_params_accurate["warmup_steps"] num_chains = ( mcmc_params_accurate["num_chains"] @@ -90,7 +90,7 @@ def test_c2st_slice_np_vectorized_parallelized_on_Gaussian( ) thin = mcmc_params_accurate["thin"] - likelihood_shift = -1.0 * ones(num_dim) + likelihood_shift = -5.0 * ones(num_dim) likelihood_cov = 0.3 * eye(num_dim) prior_mean = zeros(num_dim) prior_cov = eye(num_dim) @@ -142,7 +142,7 @@ def test_c2st_pymc_sampler_on_Gaussian( warmup: int = 100, ): """Test PyMC on Gaussian, comparing to ground truth target via c2st.""" - likelihood_shift = -1.0 * ones(num_dim) + likelihood_shift = -5.0 * ones(num_dim) likelihood_cov = 0.3 * eye(num_dim) prior_mean = zeros(num_dim) prior_cov = eye(num_dim) From 377925ec8fb6ffb261af3c5311cd5713b771f038 Mon Sep 17 00:00:00 2001 From: Jan Boelts Date: Mon, 8 Apr 2024 13:25:09 +0200 Subject: [PATCH 31/53] exclude nflows kwargs in zuko flow builder. --- sbi/neural_nets/flow.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sbi/neural_nets/flow.py b/sbi/neural_nets/flow.py index 1bbb5e477..9fa71f115 100644 --- a/sbi/neural_nets/flow.py +++ b/sbi/neural_nets/flow.py @@ -25,6 +25,8 @@ from sbi.utils.torchutils import create_alternating_binary_mask from sbi.utils.user_input_checks import check_data_device, check_embedding_net_device +nflow_specific_kwargs = ["num_bins", "num_components"] + def get_numel(batch_x: Tensor, batch_y: Tensor, embedding_net) -> Tuple[int, int]: """ @@ -1040,6 +1042,9 @@ def build_zuko_flow( x_numel, y_numel = get_numel(batch_x, batch_y, embedding_net) + # keep only zuko kwargs + kwargs = {k: v for k, v in kwargs.items() if k not in nflow_specific_kwargs} + if isinstance(hidden_features, int): hidden_features = [hidden_features] * num_transforms From 0720c785ead2f822768140e87ecf9c4e15280a36 Mon Sep 17 00:00:00 2001 From: Jan Boelts Date: Mon, 8 Apr 2024 13:27:55 +0200 Subject: [PATCH 32/53] CD workflow tick to template. --- .github/PULL_REQUEST_TEMPLATE.md | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 01cd2753f..ca894ed9e 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -32,3 +32,4 @@ your code. - [ ] I performed linting and formatting as described in the [contribution guidelines](https://github.com/sbi-dev/sbi/blob/main/CONTRIBUTING.md) - [ ] I rebased on `main` (or there are no conflicts with `main`) +- [ ] For reviewer: The continuous deployment (CD) workflow are passing. From 46db2634aedbf0b931eb1d353636f0ffb1b58d28 Mon Sep 17 00:00:00 2001 From: felixp8 Date: Mon, 8 Apr 2024 04:14:37 -0400 Subject: [PATCH 33/53] fix pymc bugs --- sbi/samplers/mcmc/pymc_wrapper.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/sbi/samplers/mcmc/pymc_wrapper.py b/sbi/samplers/mcmc/pymc_wrapper.py index 86043199e..6e00da67e 100644 --- a/sbi/samplers/mcmc/pymc_wrapper.py +++ b/sbi/samplers/mcmc/pymc_wrapper.py @@ -144,10 +144,9 @@ def __init__( potential_fn, track_gradients=track_gradients, device=device ) with self._model: - params = pymc.Normal( - self.param_name, mu=initvals.mean(axis=0) - ) # dummy prior - pymc.Potential("likelihood", potential(params)) # type: ignore + pymc.DensityDist( + self.param_name, logp=potential, size=(initvals.shape[-1],) + ) def run(self) -> np.ndarray: """Run MCMC with PyMC From c9df2c0f50945652487e038cfeb235458e41f156 Mon Sep 17 00:00:00 2001 From: michaeldeistler Date: Wed, 20 Mar 2024 16:56:30 +0100 Subject: [PATCH 34/53] New shape conventions for all `DensityEstimator`s --- sbi/inference/posteriors/direct_posterior.py | 53 +- .../potentials/likelihood_based_potential.py | 62 ++- .../potentials/posterior_based_potential.py | 22 +- .../potentials/ratio_based_potential.py | 5 +- sbi/inference/snle/mnle.py | 8 +- sbi/inference/snle/snle_base.py | 8 + sbi/inference/snpe/snpe_a.py | 16 +- sbi/inference/snpe/snpe_base.py | 14 +- sbi/inference/snpe/snpe_c.py | 24 +- sbi/neural_nets/categorial.py | 34 ++ .../density_estimators/categorical_net.py | 92 ++-- .../mixed_density_estimator.py | 197 ++++---- .../density_estimators/nflows_flow.py | 134 ++---- .../density_estimators/shape_handling.py | 65 ++- .../density_estimators/zuko_flow.py | 84 +--- sbi/neural_nets/mnle.py | 61 +-- sbi/utils/user_input_checks.py | 9 +- tests/base_test.py | 2 +- tests/density_estimator_test.py | 453 +++++++++--------- 19 files changed, 733 insertions(+), 610 deletions(-) create mode 100644 sbi/neural_nets/categorial.py diff --git a/sbi/inference/posteriors/direct_posterior.py b/sbi/inference/posteriors/direct_posterior.py index 9d12c7cdd..3dcd45ffb 100644 --- a/sbi/inference/posteriors/direct_posterior.py +++ b/sbi/inference/posteriors/direct_posterior.py @@ -11,6 +11,10 @@ posterior_estimator_based_potential, ) from sbi.neural_nets.density_estimators.base import DensityEstimator +from sbi.neural_nets.density_estimators.shape_handling import ( + reshape_to_batch_event, + reshape_to_sample_batch_event, +) from sbi.samplers.rejection.rejection import accept_reject_sample from sbi.sbi_types import Shape from sbi.utils import check_prior, within_support @@ -101,17 +105,13 @@ def sample( """ num_samples = torch.Size(sample_shape).numel() - condition_shape = self.posterior_estimator._condition_shape x = self._x_else_default_x(x) - try: - x = x.reshape(*condition_shape) - except RuntimeError as err: - raise ValueError( - f"Expected a single `x` which should broadcastable to shape \ - {condition_shape}, but got {x.shape}. For batched eval \ - see issue #990" - ) from err + # [1:] because we remove batch dimension for `reshape_to_batch_event`. + # Note: This line will break if `x_shape` is `None` and if `x` is passed without + # batch dimension. + x_shape = self._x_shape[1:] if self._x_shape is not None else x.shape[1:] + x = reshape_to_batch_event(x, event_shape=x_shape) max_sampling_batch_size = ( self.max_sampling_batch_size @@ -171,24 +171,29 @@ def log_prob( support of the prior, -∞ (corresponding to 0 probability) outside. """ x = self._x_else_default_x(x) - condition_shape = self.posterior_estimator._condition_shape - try: - x = x.reshape(*condition_shape) - except RuntimeError as err: - raise ValueError( - f"Expected a single `x` which should broadcastable to shape \ - {condition_shape}, but got {x.shape}. For batched eval \ - see issue #990" - ) from err - # TODO Train exited here, entered after sampling? - self.posterior_estimator.eval() + # [1:] to remove batch dimension for `reshape_to_sample_batch_event`. + x_shape = self._x_shape[1:] if self._x_shape is not None else x.shape[1:] theta = ensure_theta_batched(torch.as_tensor(theta)) + theta_density_estimator = reshape_to_sample_batch_event( + theta, theta.shape[1:], leading_is_sample=True + ) + x_density_estimator = reshape_to_batch_event(x, x_shape) + assert ( + x_density_estimator.shape[0] == 1 + ), ".log_prob() supports only `batchsize == 1`." + + self.posterior_estimator.eval() with torch.set_grad_enabled(track_gradients): # Evaluate on device, move back to cpu for comparison with prior. - unnorm_log_prob = self.posterior_estimator.log_prob(theta, condition=x) + unnorm_log_prob = self.posterior_estimator.log_prob( + theta_density_estimator, condition=x_density_estimator + ) + # `log_prob` supports only a single observation (i.e. `batchsize==1`). + # We now remove this additional dimension. + unnorm_log_prob = unnorm_log_prob.squeeze(dim=1) # Force probability to be zero outside prior support. in_prior_support = within_support(self.prior, theta) @@ -238,6 +243,8 @@ def leakage_correction( """ def acceptance_at(x: Tensor) -> Tensor: + # [1:] to remove batch-dimension for `reshape_to_batch_event`. + x_shape = self._x_shape[1:] if self._x_shape is not None else x.shape[1:] return accept_reject_sample( proposal=self.posterior_estimator, accept_reject_fn=lambda theta: within_support(self.prior, theta), @@ -245,7 +252,9 @@ def acceptance_at(x: Tensor) -> Tensor: show_progress_bars=show_progress_bars, sample_for_correction_factor=True, max_sampling_batch_size=rejection_sampling_batch_size, - proposal_sampling_kwargs={"condition": x}, + proposal_sampling_kwargs={ + "condition": reshape_to_batch_event(x, x_shape) + }, )[1] # Check if the provided x matches the default x (short-circuit on identity). diff --git a/sbi/inference/potentials/likelihood_based_potential.py b/sbi/inference/potentials/likelihood_based_potential.py index 063bcb906..5ddcdcef4 100644 --- a/sbi/inference/potentials/likelihood_based_potential.py +++ b/sbi/inference/potentials/likelihood_based_potential.py @@ -9,6 +9,10 @@ from sbi.inference.potentials.base_potential import BasePotential from sbi.neural_nets.density_estimators import DensityEstimator +from sbi.neural_nets.density_estimators.shape_handling import ( + reshape_to_batch_event, + reshape_to_sample_batch_event, +) from sbi.neural_nets.mnle import MixedDensityEstimator from sbi.sbi_types import TorchTransform from sbi.utils import mcmc_transform @@ -110,8 +114,8 @@ def _log_likelihoods_over_trials( Repeats `x` and $\theta$ to cover all their combinations of batch entries. Args: - x: batch of iid data. - theta: batch of parameters. + x: Batch of iid data of shape `(iid_dim, *event_shape)`. + theta: Batch of parameters of shape `(batch_dim, *event_shape)`. estimator: DensityEstimator. track_gradients: Whether to track gradients. @@ -119,19 +123,33 @@ def _log_likelihoods_over_trials( log_likelihood_trial_sum: log likelihood for each parameter, summed over all batch entries (iid trials) in `x`. """ - # unsqueeze to ensure that the x-batch dimension is the first dimension for the - # broadcasting of the density estimator. - x = torch.as_tensor(x).reshape(-1, x.shape[-1]).unsqueeze(1) + # Shape of `x` is (iid_dim, *event_shape). + x = reshape_to_sample_batch_event( + x, event_shape=x.shape[1:], leading_is_sample=True + ) + + # Match the number of `x` to the number of conditions (`theta`). This is important + # if the potential is simulataneously evaluated at multiple `theta` (e.g. + # multi-chain MCMC). + theta_batch_size = theta.shape[0] + trailing_minus_ones = [-1 for _ in range(x.dim() - 2)] + x = x.expand(-1, theta_batch_size, *trailing_minus_ones) + assert ( next(estimator.parameters()).device == x.device and x.device == theta.device ), f"""device mismatch: estimator, x, theta: \ {next(estimator.parameters()).device}, {x.device}, {theta.device}.""" + # Shape of `theta` is (batch_dim, *event_shape). Therefore, the call below should + # not change anything, and we just have it as "best practice" before calling + # `DensityEstimator.log_prob`. + theta = reshape_to_batch_event(theta, event_shape=theta.shape[1:]) + # Calculate likelihood in one batch. with torch.set_grad_enabled(track_gradients): log_likelihood_trial_batch = estimator.log_prob(x, condition=theta) - # Reshape to (-1, theta_batch_size), sum over trial-log likelihoods. + # Sum over trial-log likelihoods. log_likelihood_trial_sum = log_likelihood_trial_batch.sum(0) return log_likelihood_trial_sum @@ -170,28 +188,40 @@ def mixed_likelihood_estimator_based_potential( class MixedLikelihoodBasedPotential(LikelihoodBasedPotential): def __init__( self, - likelihood_estimator: MixedDensityEstimator, # type: ignore TODO fix pyright + likelihood_estimator: MixedDensityEstimator, prior: Distribution, x_o: Optional[Tensor], device: str = "cpu", ): - # TODO Fix pyright issue by making MixedDensityEstimator a subclass - # of DensityEstimator - super().__init__(likelihood_estimator, prior, x_o, device) # type: ignore + super().__init__(likelihood_estimator, prior, x_o, device) def __call__(self, theta: Tensor, track_gradients: bool = True) -> Tensor: + prior_log_prob = self.prior.log_prob(theta) # type: ignore + + # Shape of `x` is (iid_dim, *event_shape) + theta = reshape_to_batch_event(theta, event_shape=theta.shape[1:]) + x = reshape_to_sample_batch_event( + self.x_o, event_shape=self.x_o.shape[1:], leading_is_sample=True + ) + theta_batch_dim = theta.shape[0] + # Match the number of `x` to the number of conditions (`theta`). This is + # importantif the potential is simulataneously evaluated at multiple `theta` + # (e.g. multi-chain MCMC). + trailing_minus_ones = [-1 for _ in range(x.dim() - 2)] + x = x.expand(-1, theta_batch_dim, *trailing_minus_ones) + # Calculate likelihood in one batch. with torch.set_grad_enabled(track_gradients): # Call the specific log prob method of the mixed likelihood estimator as # this optimizes the evaluation of the discrete data part. - # TODO: how to fix pyright issues? - log_likelihood_trial_batch = self.likelihood_estimator.log_prob_iid( - x=self.x_o, - context=theta.to(self.device), - ) # type: ignore + # TODO log_prob_iid + log_likelihood_trial_batch = self.likelihood_estimator.log_prob( + input=x, + condition=theta.to(self.device), + ) # Reshape to (x-trials x parameters), sum over trial-log likelihoods. log_likelihood_trial_sum = log_likelihood_trial_batch.reshape( self.x_o.shape[0], -1 ).sum(0) - return log_likelihood_trial_sum + self.prior.log_prob(theta) # type: ignore + return log_likelihood_trial_sum + prior_log_prob diff --git a/sbi/inference/potentials/posterior_based_potential.py b/sbi/inference/potentials/posterior_based_potential.py index 28ca66644..bf87cc549 100644 --- a/sbi/inference/potentials/posterior_based_potential.py +++ b/sbi/inference/potentials/posterior_based_potential.py @@ -9,6 +9,10 @@ from sbi.inference.potentials.base_potential import BasePotential from sbi.neural_nets.density_estimators import DensityEstimator +from sbi.neural_nets.density_estimators.shape_handling import ( + reshape_to_batch_event, + reshape_to_sample_batch_event, +) from sbi.sbi_types import TorchTransform from sbi.utils import mcmc_transform from sbi.utils.sbiutils import within_support @@ -98,15 +102,25 @@ def __call__(self, theta: Tensor, track_gradients: bool = True) -> Tensor: the potential or manually set self._x_o." ) - theta = ensure_theta_batched(torch.as_tensor(theta)) - theta, x = theta.to(self.device), self.x_o.to(self.device) + theta = ensure_theta_batched(torch.as_tensor(theta)).to(self.device) with torch.set_grad_enabled(track_gradients): - posterior_log_prob = self.posterior_estimator.log_prob(theta, condition=x) - # Force probability to be zero outside prior support. in_prior_support = within_support(self.prior, theta) + x = reshape_to_batch_event(self.x_o, event_shape=self.x_o.shape[1:]) + assert ( + x.shape[0] == 1 + ), f"`x` has batchsize {x.shape[0]}. Only `batchsize == 1` is supported." + theta = reshape_to_sample_batch_event( + theta, event_shape=theta.shape[1:], leading_is_sample=True + ) + # We assume that a single `x` is passed (i.e. batchsize==1), so we squeeze + # the batch dimension of the log-prob with `.squeeze(dim=1)`. + posterior_log_prob = self.posterior_estimator.log_prob( + theta, condition=x + ).squeeze(dim=1) + posterior_log_prob = torch.where( in_prior_support, posterior_log_prob, diff --git a/sbi/inference/potentials/ratio_based_potential.py b/sbi/inference/potentials/ratio_based_potential.py index 3d536ce0e..b630a282d 100644 --- a/sbi/inference/potentials/ratio_based_potential.py +++ b/sbi/inference/potentials/ratio_based_potential.py @@ -107,10 +107,11 @@ def _log_ratios_over_trials( Repeats `x` and $\theta$ to cover all their combinations of batch entries. Args: - x: batch of iid data. - theta: batch of parameters + x: Batch of iid data of shape `(iid_dim, *event_shape)`. + theta: Batch of parameters of shape `(batch_dim, *event_shape)`. net: neural net representing the classifier to approximate the ratio. track_gradients: Whether to track gradients. + Returns: log_ratio_trial_sum: log ratio for each parameter, summed over all batch entries (iid trials) in `x`. diff --git a/sbi/inference/snle/mnle.py b/sbi/inference/snle/mnle.py index 7c8c85193..cefbbcc55 100644 --- a/sbi/inference/snle/mnle.py +++ b/sbi/inference/snle/mnle.py @@ -11,6 +11,10 @@ from sbi.inference.posteriors import MCMCPosterior, RejectionPosterior, VIPosterior from sbi.inference.potentials import mixed_likelihood_estimator_based_potential from sbi.inference.snle.snle_base import LikelihoodEstimator +from sbi.neural_nets.density_estimators.shape_handling import ( + reshape_to_batch_event, + reshape_to_sample_batch_event, +) from sbi.neural_nets.mnle import MixedDensityEstimator from sbi.sbi_types import TensorboardSummaryWriter, TorchModule from sbi.utils import check_prior, del_entries @@ -205,4 +209,6 @@ def _loss(self, theta: Tensor, x: Tensor) -> Tensor: Returns: Negative log prob. """ - return -self._neural_net.log_prob(x, context=theta) + theta = reshape_to_batch_event(theta, event_shape=theta.shape[1:]) + x = reshape_to_sample_batch_event(x, event_shape=self._x_shape[1:]) + return -self._neural_net.log_prob(x, condition=theta) diff --git a/sbi/inference/snle/snle_base.py b/sbi/inference/snle/snle_base.py index 16e26eaac..78db3cb4b 100644 --- a/sbi/inference/snle/snle_base.py +++ b/sbi/inference/snle/snle_base.py @@ -16,6 +16,10 @@ from sbi.inference.posteriors import MCMCPosterior, RejectionPosterior, VIPosterior from sbi.inference.potentials import likelihood_estimator_based_potential from sbi.neural_nets import DensityEstimator, likelihood_nn +from sbi.neural_nets.density_estimators.shape_handling import ( + reshape_to_batch_event, + reshape_to_sample_batch_event, +) from sbi.utils import check_estimator_arg, check_prior, x_shape_from_simulation @@ -366,4 +370,8 @@ def _loss(self, theta: Tensor, x: Tensor) -> Tensor: Returns: Negative log prob. """ + theta = reshape_to_batch_event(theta, event_shape=theta.shape[1:]) + x = reshape_to_sample_batch_event( + x, event_shape=self._x_shape[1:], leading_is_sample=False + ) return self._neural_net.loss(x, condition=theta) diff --git a/sbi/inference/snpe/snpe_a.py b/sbi/inference/snpe/snpe_a.py index 6b7d4df00..64d6dc018 100644 --- a/sbi/inference/snpe/snpe_a.py +++ b/sbi/inference/snpe/snpe_a.py @@ -18,6 +18,7 @@ from sbi.neural_nets.density_estimators.base import DensityEstimator from sbi.sbi_types import TensorboardSummaryWriter, TorchModule from sbi.utils import torchutils +from sbi.utils.torchutils import atleast_2d class SNPE_A(PosteriorEstimator): @@ -408,12 +409,14 @@ def __init__( if isinstance(proposal, (utils.BoxUniform, MultivariateNormal)): self._apply_correction = False else: + # Add iid dimension. + default_x = proposal.default_x # type: ignore self._apply_correction = True ( logits_pp, m_pp, prec_pp, - ) = proposal.posterior_estimator._posthoc_correction(proposal.default_x) # type: ignore + ) = proposal.posterior_estimator._posthoc_correction(default_x) self._logits_pp, self._m_pp, self._prec_pp = ( logits_pp.detach(), m_pp.detach(), @@ -544,17 +547,24 @@ def _posthoc_correction(self, x: Tensor): estimator and the proposal. Args: - x: Conditioning context for posterior. + x: Conditioning context for posterior, shape + `(batch_dim, *event_shape)`. Returns: Mixture components of the posterior. """ + # Remove the batch dimension of `x` (SNPE-A always has a single `x`). + assert ( + x.shape[0] == 1 + ), f"Batchsize of `x_o` == {x.shape[0]}. SNPE-A only supports a single `x_o`." + x = x.squeeze(dim=0) # Evaluate the density estimator. embedded_x = self._neural_net.net._embedding_net(x) dist = self._neural_net.net._distribution # defined to avoid black formatting. logits_d, m_d, prec_d, _, _ = dist.get_mixture_components(embedded_x) norm_logits_d = logits_d - torch.logsumexp(logits_d, dim=-1, keepdim=True) + norm_logits_d = atleast_2d(norm_logits_d) # The following if case is needed because, in the constructor, we call # `_posthoc_correction` regardless of whether the `proposal` itself had a @@ -572,6 +582,7 @@ def _posthoc_correction(self, x: Tensor): logits_p, m_p, prec_p, cov_p = self._proposal_posterior_transformation( logits_pp, m_pp, prec_pp, norm_logits_d, m_d, prec_d ) + logits_p = atleast_2d(logits_p) return logits_p, m_p, prec_p def _proposal_posterior_transformation( @@ -606,7 +617,6 @@ def _proposal_posterior_transformation( Returns: (Component weight, mean, precision matrix, covariance matrix) of each Gaussian of the approximate posterior. """ - precisions_post, covariances_post = self._precisions_posterior( precisions_pp, precisions_d ) diff --git a/sbi/inference/snpe/snpe_base.py b/sbi/inference/snpe/snpe_base.py index 521f2a36e..1ae878441 100644 --- a/sbi/inference/snpe/snpe_base.py +++ b/sbi/inference/snpe/snpe_base.py @@ -23,6 +23,10 @@ from sbi.inference.posteriors.base_posterior import NeuralPosterior from sbi.inference.potentials import posterior_estimator_based_potential from sbi.neural_nets import DensityEstimator, posterior_nn +from sbi.neural_nets.density_estimators.shape_handling import ( + reshape_to_batch_event, + reshape_to_sample_batch_event, +) from sbi.utils import ( RestrictedPrior, check_estimator_arg, @@ -318,11 +322,9 @@ def default_calibration_kernel(x): ) self._x_shape = x_shape_from_simulation(x.to("cpu")) - test_posterior_net_for_multi_d_x( - self._neural_net, - theta.to("cpu"), - x.to("cpu"), - ) + theta = reshape_to_sample_batch_event(theta.to("cpu"), theta.shape[1:]) + x = reshape_to_batch_event(x.to("cpu"), self._x_shape[1:]) + test_posterior_net_for_multi_d_x(self._neural_net, theta, x) del theta, x @@ -580,6 +582,8 @@ def _loss( distribution different from the prior. """ if self._round == 0 or force_first_round_loss: + theta = reshape_to_sample_batch_event(theta, event_shape=theta.shape[1:]) + x = reshape_to_batch_event(x, event_shape=self._x_shape[1:]) # Use posterior log prob (without proposal correction) for first round. loss = self._neural_net.loss(theta, x) else: diff --git a/sbi/inference/snpe/snpe_c.py b/sbi/inference/snpe/snpe_c.py index 7955cc951..e4c307b90 100644 --- a/sbi/inference/snpe/snpe_c.py +++ b/sbi/inference/snpe/snpe_c.py @@ -13,6 +13,10 @@ from sbi import utils as utils from sbi.inference.posteriors.direct_posterior import DirectPosterior from sbi.inference.snpe.snpe_base import PosteriorEstimator +from sbi.neural_nets.density_estimators.shape_handling import ( + reshape_to_batch_event, + reshape_to_sample_batch_event, +) from sbi.sbi_types import TensorboardSummaryWriter from sbi.utils import ( batched_mixture_mv, @@ -318,7 +322,6 @@ def _log_prob_proposal_posterior_atomic( Returns: Log-probability of the proposal posterior. """ - batch_size = theta.shape[0] num_atoms = int( @@ -343,16 +346,20 @@ def _log_prob_proposal_posterior_atomic( batch_size * num_atoms, -1 ) - # Evaluate large batch giving (batch_size * num_atoms) log prob posterior evals. - log_prob_posterior = self._neural_net.log_prob(atomic_theta, repeated_x) - utils.assert_all_finite(log_prob_posterior, "posterior eval") - log_prob_posterior = log_prob_posterior.reshape(batch_size, num_atoms) - # Get (batch_size * num_atoms) log prob prior evals. log_prob_prior = self._prior.log_prob(atomic_theta) log_prob_prior = log_prob_prior.reshape(batch_size, num_atoms) utils.assert_all_finite(log_prob_prior, "prior eval") + # Evaluate large batch giving (batch_size * num_atoms) log prob posterior evals. + atomic_theta = reshape_to_sample_batch_event( + atomic_theta, atomic_theta.shape[1:] + ) + repeated_x = reshape_to_batch_event(repeated_x, self._x_shape[1:]) + log_prob_posterior = self._neural_net.log_prob(atomic_theta, repeated_x) + utils.assert_all_finite(log_prob_posterior, "posterior eval") + log_prob_posterior = log_prob_posterior.reshape(batch_size, num_atoms) + # Compute unnormalized proposal posterior. unnormalized_log_prob = log_prob_posterior - log_prob_prior @@ -364,7 +371,12 @@ def _log_prob_proposal_posterior_atomic( # XXX This evaluates the posterior on _all_ prior samples if self._use_combined_loss: + theta = reshape_to_sample_batch_event(theta, theta.shape[1:]) + x = reshape_to_batch_event(x, self._x_shape[1:]) log_prob_posterior_non_atomic = self._neural_net.log_prob(theta, x) + # squeeze to remove sample dimension, which is always one during the loss + # evaluation of `SNPE_C` (because we have one theta vector per x vector). + log_prob_posterior_non_atomic = log_prob_posterior_non_atomic.squeeze(dim=0) masks = masks.reshape(-1) log_prob_proposal_posterior = ( masks * log_prob_posterior_non_atomic + log_prob_proposal_posterior diff --git a/sbi/neural_nets/categorial.py b/sbi/neural_nets/categorial.py new file mode 100644 index 000000000..ad80ef81c --- /dev/null +++ b/sbi/neural_nets/categorial.py @@ -0,0 +1,34 @@ +# This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed +# under the Affero General Public License v3, see . + +from typing import Optional + +from torch import Tensor, nn, unique + +from sbi.neural_nets.density_estimators import CategoricalMassEstimator, CategoricalNet + + +def build_categoricalmassestimator( + input: Tensor, + condition: Tensor, + num_hidden: int = 20, + num_layers: int = 2, + embedding_net: Optional[nn.Module] = None, +): + """Returns a density estimator for a categorical random variable.""" + # Infer input and output dims. + if embedding_net is None: + dim_input = condition[0].numel() + else: + dim_input = embedding_net(condition[:1]).numel() + num_categories = unique(input).numel() + + categorical_net = CategoricalNet( + num_input=dim_input, + num_categories=num_categories, + num_hidden=num_hidden, + num_layers=num_layers, + embedding_net=embedding_net, + ) + + return CategoricalMassEstimator(categorical_net) diff --git a/sbi/neural_nets/density_estimators/categorical_net.py b/sbi/neural_nets/density_estimators/categorical_net.py index d8a183761..298383793 100644 --- a/sbi/neural_nets/density_estimators/categorical_net.py +++ b/sbi/neural_nets/density_estimators/categorical_net.py @@ -9,7 +9,7 @@ class CategoricalNet(nn.Module): - """Class to perform conditional density (mass) estimation for a categorical RV. + """Conditional density (mass) estimation for a categorical random variable. Takes as input parameters theta and learns the parameters p of a Categorical. @@ -22,7 +22,7 @@ def __init__( num_categories: int = 2, num_hidden: int = 20, num_layers: int = 2, - embedding: Optional[nn.Module] = None, + embedding_net: Optional[nn.Module] = None, ): """Initialize the neural net. @@ -31,7 +31,7 @@ def __init__( num_categories: number of output units, i.e., number of categories. num_hidden: number of hidden units per layer. num_layers: number of hidden layers. - embedding: emebedding net for parameters, e.g., a z-scoring transform. + embedding_net: emebedding net for parameters, e.g., a z-scoring transform. """ super().__init__() @@ -42,9 +42,9 @@ def __init__( self.num_categories = num_categories # Maybe add z-score embedding for parameters. - if embedding is not None: + if embedding_net is not None: self.input_layer = nn.Sequential( - embedding, nn.Linear(num_input, num_hidden) + embedding_net, nn.Linear(num_input, num_hidden) ) else: self.input_layer = nn.Linear(num_input, num_hidden) @@ -65,11 +65,6 @@ def forward(self, context: Tensor) -> Tensor: Returns: Tensor: batch of predicted categorical probabilities. """ - assert context.dim() == 2, "context needs to have a batch dimension." - assert ( - context.shape[1] == self.num_input - ), f"context dimensions must match num_input {self.num_input}" - # forward path context = self.activation(self.input_layer(context)) @@ -91,7 +86,9 @@ def log_prob(self, input: Tensor, context: Tensor) -> Tensor: """ # Predict categorical ps and evaluate. ps = self.forward(context) - return Categorical(probs=ps).log_prob(input.squeeze()) + # Squeeze dim=1 because `Categorical` has `event_shape=()` but our data usually + # has an event_shape of `(1,)`. + return Categorical(probs=ps).log_prob(input.squeeze(dim=1)) def sample(self, sample_shape: torch.Size, context: Tensor) -> Tensor: """Returns samples from categorical random variable with probs predicted from @@ -107,16 +104,13 @@ def sample(self, sample_shape: torch.Size, context: Tensor) -> Tensor: # Predict Categorical ps and sample. ps = self.forward(context) - return ( - Categorical(probs=ps) - .sample(sample_shape=sample_shape) - .reshape(sample_shape[0], -1) - ) + return Categorical(probs=ps).sample(sample_shape=sample_shape) class CategoricalMassEstimator(DensityEstimator): - """Class to perform conditional density (mass) estimation - for a categorical RV. + """Conditional density (mass) estimation for a categorical random variable. + + The event_shape of this class is `()`. """ def __init__(self, net: CategoricalNet) -> None: @@ -124,21 +118,65 @@ def __init__(self, net: CategoricalNet) -> None: self.net = net self.num_categories = net.num_categories - def log_prob(self, input: Tensor, context: Tensor, **kwargs) -> Tensor: - return self.net.log_prob(input, context, **kwargs) + def log_prob(self, input: Tensor, condition: Tensor, **kwargs) -> Tensor: + """Return log-probability of samples. + + Args: + input: Input datapoints of shape + `(sample_dim, batch_dim, *event_shape_input)`.Must be a discrete + indicator of class identity. + condition: Conditions of shape `(batch_dim, *event_shape_condition)`. + + Returns: + Log-probabilities of shape `(sample_dim, batch_dim)`. + """ + input_sample_dim = input.shape[0] + input_batch_dim = input.shape[1] + condition_batch_dim = condition.shape[0] + condition_event_dims = len(condition.shape[1:]) + + assert condition_batch_dim == input_batch_dim, ( + f"Batch shape of condition {condition_batch_dim} and input " + f"{input_batch_dim} do not match." + ) - def sample(self, sample_shape: torch.Size, context: Tensor, **kwargs) -> Tensor: - return self.net.sample(sample_shape, context, **kwargs) + # `CategoricalNet` needs a single batch dimension for condition and input. + input = input.reshape((input_batch_dim * input_sample_dim, -1)) + + # Repeat the condition to match `input_batch_dim * input_sample_dim`. + ones_for_event_dims = (1,) * condition_event_dims # Tuple of 1s, e.g. (1, 1, 1) + condition = condition.repeat(input_sample_dim, *ones_for_event_dims) + + return self.net.log_prob(input, condition, **kwargs).reshape(( + input_sample_dim, + input_batch_dim, + )) + + def sample(self, sample_shape: torch.Size, condition: Tensor, **kwargs) -> Tensor: + """Return samples from the conditional categorical distribution. + + Args: + sample_shape: Shape of samples. + condition: Conditions of shape + `(batch_dim_condition, *event_shape_condition)`. + + Returns: + Samples of shape `(*sample_shape, batch_dim_condition)`. Note that the + `CategoricalMassEstimator` is defined to have `event_shape=()` and + therefore `.sample()` does not return a trailing dimension for + `event_shape`. + """ + return self.net.sample(sample_shape, condition, **kwargs) - def loss(self, input: Tensor, context: Tensor, **kwargs) -> Tensor: + def loss(self, input: Tensor, condition: Tensor, **kwargs) -> Tensor: r"""Return the loss for training the density estimator. Args: - input: Inputs to evaluate the loss on of shape (batch_size, input_size). - context: Conditions of shape (batch_size, *condition_shape). + input: Inputs of shape `(sample_dim, batch_dim, *input_event_shape)`. + condition: Conditions of shape `(batch_dim, *condition_event_shape)`. Returns: - Loss of shape (batch_size,) + Loss of shape `(batch_dim,)` """ - return -self.log_prob(input, context) + return -self.log_prob(input, condition) diff --git a/sbi/neural_nets/density_estimators/mixed_density_estimator.py b/sbi/neural_nets/density_estimators/mixed_density_estimator.py index 55664edb7..fb70ee2ca 100644 --- a/sbi/neural_nets/density_estimators/mixed_density_estimator.py +++ b/sbi/neural_nets/density_estimators/mixed_density_estimator.py @@ -27,16 +27,16 @@ def __init__( discrete_net: CategoricalMassEstimator, continuous_net: NFlowsFlow, condition_shape: torch.Size, - log_transform_x: bool = False, + log_transform_input: bool = False, ): """Initialize class for combining density estimators for MNLE. Args: discrete_net: neural net to model discrete part of the data. continuous_net: neural net to model the continuous data. - log_transform_x: whether to transform the continous part of the data into - logarithmic domain before training. This is helpful for bounded data, e. - g.,for reaction times. + log_transform_input: whether to transform the continous part of the data + into logarithmic domain before training. This is helpful for bounded + data, e.g.,for reaction times. """ super(MixedDensityEstimator, self).__init__( net=continuous_net, condition_shape=condition_shape @@ -44,169 +44,191 @@ def __init__( self.discrete_net = discrete_net self.continuous_net = continuous_net - self.log_transform_x = log_transform_x + self.log_transform_input = log_transform_input - def forward(self, x: Tensor): + def forward(self, input: Tensor): raise NotImplementedError( """The forward method is not implemented for MNLE, use '.sample(...)' to generate samples though a forward pass.""" ) def sample( - self, context: Tensor, sample_shape: torch.Size, track_gradients: bool = False + self, sample_shape: torch.Size, condition: Tensor, track_gradients: bool = False ) -> Tensor: """Return sample from mixed data distribution. Args: - context: parameters for which to generate samples. - sample_shape number of samples to generate. + sample_shape: Shape of samples to generate. + condition: Condition of shape `(batch_dim, *event_shape_condition)` Returns: - Tensor: samples with shape (num_samples, num_data_dimensions) + Samples of shape `(*sample_shape, batch_dim, event_dim_input)` """ - assert ( - context.shape[0] == 1 - ), "Samples can be generated for a single context only." + num_samples = torch.Size(sample_shape).numel() + batch_dim = condition.shape[0] + condition_event_dim = condition.dim() - 1 with torch.set_grad_enabled(track_gradients): # Sample discrete data given parameters. - discrete_x = self.discrete_net.sample( + discrete_input = self.discrete_net.sample( sample_shape=sample_shape, - context=context, - ).reshape(sample_shape[0], -1) + condition=condition, + ) + # Trailing `1` because `Categorical` has event_shape `()`. + discrete_input = discrete_input.reshape(num_samples * batch_dim, 1) + + ones_for_event_dims = (1,) * condition_event_dim + repeated_condition = condition.repeat(num_samples, *ones_for_event_dims) # Sample continuous data condition on parameters and discrete data. - # Pass num_samples=1 because the choices in the context contains + # Pass num_samples=1 because the choices in the condition contains # num_samples elements already. - continuous_x = self.continuous_net.sample( - # repeat the single context to match number of sampled choices. - # sample_shape[0] is the iid dimension. - condition=torch.cat( - (context.repeat(sample_shape[0], 1), discrete_x), dim=1 - ), - sample_shape=sample_shape, - ).reshape(sample_shape[0], -1) + continuous_input = self.continuous_net.sample( + sample_shape=(), + # repeat the single condition to match number of sampled choices. + # sample_shape[0] is the sample dimension. + condition=torch.cat((repeated_condition, discrete_input), dim=1), + ) + + # In case input was log-transformed, move them to linear space. + if self.log_transform_input: + continuous_input = continuous_input.exp() - # In case x was log-transformed, move them to linear space. - if self.log_transform_x: - continuous_x = continuous_x.exp() + joined_input = torch.cat((continuous_input, discrete_input), dim=1) - return torch.cat((continuous_x, discrete_x), dim=1) + # `continuous_input` is of shape `(batch_dim * numel(sample_shape))`. + return joined_input.reshape(*sample_shape, batch_dim, -1) - def log_prob(self, x: Tensor, context: Tensor) -> Tensor: + def log_prob(self, input: Tensor, condition: Tensor) -> Tensor: """Return log-probability of samples under the learned MNLE. - For a fixed data point x this returns the value of the likelihood function - evaluated at context, L(context, x=x). + For a fixed data point input this returns the value of the likelihood function + evaluated at condition, L(condition, input=input). Alternatively, it can be interpreted as the log-prob of the density - p(x | context). + p(input | condition). It evaluates the separate density estimator for the discrete and continous part of the data and then combines them into one evaluation. Args: - x: data (containing continuous and discrete data). - context: parameters for which to evaluate the likelihod function, or for - which to condition p(x | context). + input: data (containing continuous and discrete data). + condition: parameters for which to evaluate the likelihod function, or for + which to condition p(input | condition). Returns: - Tensor: log_prob of p(x | context). + Tensor: log_prob of p(input | condition). """ - assert ( - x.shape[0] == context.shape[0] - ), "x and context must have same batch size." - - cont_x, disc_x = _separate_x(x) - dim_context = context.shape[0] + cont_input, disc_input = _separate_input(input) disc_log_prob = self.discrete_net.log_prob( - input=disc_x, context=context - ).reshape(dim_context) + input=disc_input, condition=condition + ) + # Pass parameters and discrete input as condition. + repeats = disc_input.shape[0] + disc_input_repeated = disc_input.reshape((repeats * disc_input.shape[1], -1)) + condition_repeated = condition.repeat((repeats, 1)) + condition_reshaped = torch.cat((condition_repeated, disc_input_repeated), dim=1) + + cont_input_reshaped = cont_input.reshape(( + 1, + cont_input.shape[0] * cont_input.shape[1], + -1, + )) cont_log_prob = self.continuous_net.log_prob( # Transform to log-space if needed. - torch.log(cont_x) if self.log_transform_x else cont_x, - # Pass parameters and discrete x as context. - condition=torch.cat((context, disc_x), dim=1), + ( + torch.log(cont_input_reshaped) + if self.log_transform_input + else cont_input_reshaped + ), + condition=condition_reshaped, ) + cont_log_prob = cont_log_prob.reshape(disc_log_prob.shape) # Combine into joint lp. - log_probs_combined = (disc_log_prob + cont_log_prob).reshape(dim_context) + log_probs_combined = disc_log_prob + cont_log_prob # Maybe add log abs det jacobian of RTs: log(1/x) = - log(x) - if self.log_transform_x: - log_probs_combined -= torch.log(cont_x).squeeze() + if self.log_transform_input: + log_probs_combined -= torch.log(cont_input).sum(-1) return log_probs_combined - def loss(self, x: Tensor, context: Tensor, **kwargs) -> Tensor: - return self.log_prob(x, context) + def loss(self, input: Tensor, condition: Tensor, **kwargs) -> Tensor: + return self.log_prob(input, condition) - def log_prob_iid(self, x: Tensor, context: Tensor) -> Tensor: - """Return log prob given a batch of iid x and a different batch of context. + def log_prob_iid(self, input: Tensor, condition: Tensor) -> Tensor: + """Return logprob given a batch of iid input and a different batch of condition. This is different from `.log_prob()` to enable speed ups in evaluation during inference. The speed up is achieved by exploiting the fact that there are only - finite number of possible categories in the discrete part of the dat: one can + finite number of possible categories in the discrete part of the data: one can just calculate the log probs for each possible category (given the current batch of context) and then copy those log probs into the entire batch of iid categories. For example, for the drift-diffusion model, there are only two choices, but often 100s or 1000 trials. With this method a evaluation over trials then passes - a batch of `2 (one per choice) * num_contexts` into the NN, whereas the normal - `.log_prob()` would pass `1000 * num_contexts`. + a batch of `2 (one per choice) * num_conditions` into the NN, whereas the normal + `.log_prob()` would pass `1000 * num_conditions`. Args: - x: batch of iid data, data observed given the same underlying parameters or - experimental conditions. - context: batch of parameters to be evaluated, i.e., each batch entry will be - evaluated for the entire batch of iid x. + input: batch of iid data, data observed given the same underlying parameters + or experimental conditions. + condition: batch of parameters to be evaluated, i.e., each batch entry will + be evaluated for the entire batch of iid input. Returns: log probs with shape (num_trials, num_parameters), i.e., the log prob for each context for each trial. """ - context = atleast_2d(context) - x = atleast_2d(x) - batch_size = context.shape[0] - num_trials = x.shape[0] - context_repeated, x_repeated = match_theta_and_x_batch_shapes(context, x) + condition = atleast_2d(condition) + input = atleast_2d(input) + batch_size = condition.shape[0] + num_trials = input.shape[0] + condition_repeated, input_repeated = match_theta_and_x_batch_shapes( + condition, input + ) net_device = next(self.discrete_net.parameters()).device - assert ( - net_device == x.device and x.device == context.device - ), f"device mismatch: net, x, context: \ - {net_device}, {x.device}, {context.device}." + assert net_device == input.device and input.device == condition.device, ( + f"device mismatch: net, x, condition: " + f"{net_device}, {input.device}, {condition.device}." + ) - x_cont_repeated, x_disc_repeated = _separate_x(x_repeated) - x_cont, x_disc = _separate_x(x) + input_cont_repeated, input_disc_repeated = _separate_input(input_repeated) + input_cont, input_disc = _separate_input(input) # repeat categories for parameters repeated_categories = torch.repeat_interleave( torch.arange(self.discrete_net.num_categories - 1), batch_size, dim=0 ) # repeat parameters for categories - repeated_context = context.repeat(self.discrete_net.num_categories - 1, 1) + repeated_condition = condition.repeat(self.discrete_net.num_categories - 1, 1) log_prob_per_cat = torch.zeros(self.discrete_net.num_categories, batch_size).to( net_device ) log_prob_per_cat[:-1, :] = self.discrete_net.log_prob( repeated_categories.to(net_device), - repeated_context.to(net_device), + repeated_condition.to(net_device), ).reshape(-1, batch_size) # infer the last category logprob from sum to one. log_prob_per_cat[-1, :] = torch.log(1 - log_prob_per_cat[:-1, :].exp().sum(0)) # fill in lps for each occurred category log_probs_discrete = log_prob_per_cat[ - x_disc.type_as(torch.zeros(1, dtype=torch.long)).squeeze() + input_disc.type_as(torch.zeros(1, dtype=torch.long)).squeeze() ].reshape(-1) - # Get repeat discrete data and context to match in batch shape for flow eval. + # Get repeat discrete data and condition to match in batch shape for flow eval. log_probs_cont = self.continuous_net.log_prob( - torch.log(x_cont_repeated) if self.log_transform_x else x_cont_repeated, - condition=torch.cat((context_repeated, x_disc_repeated), dim=1), + ( + torch.log(input_cont_repeated) + if self.log_transform_input + else input_cont_repeated + ), + condition=torch.cat((condition_repeated, input_disc_repeated), dim=1), ) # Combine into joint lp with first dim over trials. @@ -215,19 +237,18 @@ def log_prob_iid(self, x: Tensor, context: Tensor) -> Tensor: ) # Maybe add log abs det jacobian of RTs: log(1/rt) = - log(rt) - if self.log_transform_x: - log_probs_combined -= torch.log(x_cont) + if self.log_transform_input: + log_probs_combined -= torch.log(input_cont) # Return batch over trials as required by SBI potentials. return log_probs_combined -def _separate_x(x: Tensor, num_discrete_columns: int = 1) -> Tuple[Tensor, Tensor]: - """Returns the continuous and discrete part of the given x. +def _separate_input( + input: Tensor, num_discrete_columns: int = 1 +) -> Tuple[Tensor, Tensor]: + """Returns the continuous and discrete part of the given input. - Assumes the discrete data to live in the last columns of x. + Assumes the discrete data to live in the last columns of input. """ - - assert x.ndim == 2, f"x must have two dimensions but has {x.ndim}." - - return x[:, :-num_discrete_columns], x[:, -num_discrete_columns:] + return input[..., :-num_discrete_columns], input[..., -num_discrete_columns:] diff --git a/sbi/neural_nets/density_estimators/nflows_flow.py b/sbi/neural_nets/density_estimators/nflows_flow.py index a8bfb4224..0ce61c7d2 100644 --- a/sbi/neural_nets/density_estimators/nflows_flow.py +++ b/sbi/neural_nets/density_estimators/nflows_flow.py @@ -79,59 +79,47 @@ def log_prob(self, input: Tensor, condition: Tensor) -> Tensor: i.e. batched conditions. Args: - input: Inputs to evaluate the log probability on of shape - (*batch_shape1, input_size). - condition: Conditions of shape (*batch_shape2, *condition_shape). + input: Inputs to evaluate the log probability on. Of shape + `(sample_dim, batch_dim, *event_shape)`. + condition: Conditions of shape `(sample_dim, batch_dim, *event_shape)`. Raises: - RuntimeError: If batch_shape1 and batch_shape2 are not broadcastable. + AssertionError: If `input_batch_dim != condition_batch_dim`. Returns: - Sample-wise log probabilities. - - Note: - This function should support PyTorch's automatic broadcasting. This means - the function should behave as follows for different input and condition - shapes: - - (input_size,) + (batch_size,*condition_shape) -> (batch_size,) - - (batch_size, input_size) + (*condition_shape) -> (batch_size,) - - (batch_size, input_size) + (batch_size, *condition_shape) -> (batch_size,) - - (batch_size1, input_size) + (batch_size2, *condition_shape) - -> RuntimeError i.e. not broadcastable - - (batch_size1,1, input_size) + (batch_size2, *condition_shape) - -> (batch_size1,batch_size2) - - (batch_size1, input_size) + (batch_size2,1, *condition_shape) - -> (batch_size2,batch_size1) + Sample-wise log probabilities, shape `(input_sample_dim, input_batch_dim)`. """ - self._check_condition_shape(condition) - condition_dims = len(self._condition_shape) + input_sample_dim = input.shape[0] + input_batch_dim = input.shape[1] + condition_batch_dim = condition.shape[0] + condition_event_dims = len(condition.shape[1:]) - # PyTorch's automatic broadcasting - batch_shape_in = input.shape[:-1] - batch_shape_cond = condition.shape[:-condition_dims] - batch_shape = torch.broadcast_shapes(batch_shape_in, batch_shape_cond) - # Expand the input and condition to the same batch shape - input = input.expand(batch_shape + (input.shape[-1],)) - condition = condition.expand(batch_shape + self._condition_shape) - # Flatten required by nflows, but now both have the same batch shape - input = input.reshape(-1, input.shape[-1]) - condition = condition.reshape(-1, *self._condition_shape) + assert condition_batch_dim == input_batch_dim, ( + f"Batch shape of condition {condition_batch_dim} and input " + f"{input_batch_dim} do not match." + ) + + # Nflows needs to have a single batch dimension for condition and input. + input = input.reshape((input_batch_dim * input_sample_dim, -1)) + + # Repeat the condition to match `input_batch_dim * input_sample_dim`. + ones_for_event_dims = (1,) * condition_event_dims # Tuple of 1s, e.g. (1, 1, 1) + condition = condition.repeat(input_sample_dim, *ones_for_event_dims) log_probs = self.net.log_prob(input, context=condition) - log_probs = log_probs.reshape(batch_shape) - return log_probs + return log_probs.reshape((input_sample_dim, input_batch_dim)) def loss(self, input: Tensor, condition: Tensor) -> Tensor: r"""Return the loss for training the density estimator. Args: - input: Inputs to evaluate the loss on of shape (batch_size, input_size). - condition: Conditions of shape (batch_size, *condition_shape). + input: Inputs to evaluate the loss on of shape + `(sample_dim, batch_dim, *event_shape)`. + condition: Conditions of shape `(sample_dim, batch_dim, *event_dim)`. Returns: - Negative log_probability (batch_size,) + Negative log_probability of shape `(input_sample_dim, condition_batch_dim)`. """ - return -self.log_prob(input, condition) def sample(self, sample_shape: Shape, condition: Tensor) -> Tensor: @@ -139,41 +127,21 @@ def sample(self, sample_shape: Shape, condition: Tensor) -> Tensor: Args: sample_shape: Shape of the samples to return. - condition: Conditions of shape (*batch_shape, *condition_shape). + condition: Conditions of shape `(sample_dim, batch_dim, *event_shape)`. Returns: - Samples of shape (*batch_shape, *sample_shape, input_size). - - Note: - This function should support batched conditions and should admit the - following behavior for different condition shapes: - - (*condition_shape) -> (*sample_shape, input_size) - - (*batch_shape, *condition_shape) - -> (*batch_shape, *sample_shape, input_size) + Samples of shape `(*sample_shape, condition_batch_dim)`. """ - self._check_condition_shape(condition) - + condition_batch_dim = condition.shape[0] num_samples = torch.Size(sample_shape).numel() - condition_dims = len(self._condition_shape) - if len(condition.shape) == condition_dims: - # nflows.sample() expects conditions to be batched. - condition = condition.unsqueeze(0) - samples = self.net.sample(num_samples, context=condition).reshape(( - *sample_shape, - -1, - )) - else: - # For batched conditions, we need to reshape the conditions and the samples - batch_shape = condition.shape[:-condition_dims] - condition = condition.reshape(-1, *self._condition_shape) - samples = self.net.sample(num_samples, context=condition).reshape(( - *batch_shape, - *sample_shape, - -1, - )) - - return samples + samples = self.net.sample(num_samples, context=condition) + + return samples.reshape(( + *sample_shape, + condition_batch_dim, + -1, + )) def sample_and_log_prob( self, sample_shape: torch.Size, condition: Tensor, **kwargs @@ -182,32 +150,18 @@ def sample_and_log_prob( Args: sample_shape: Shape of the samples to return. - condition: Conditions of shape (*batch_shape, *condition_shape). + condition: Conditions of shape (sample_dim, batch_dim, *event_shape). Returns: - Samples and associated log probabilities. + Samples of shape `(*sample_shape, condition_batch_dim, *input_event_shape)` + and associated log probs of shape `(*sample_shape, condition_batch_dim)`. """ - self._check_condition_shape(condition) - + condition_batch_dim = condition.shape[0] num_samples = torch.Size(sample_shape).numel() - condition_dims = len(self._condition_shape) - - if len(condition.shape) == condition_dims: - # nflows.sample() expects conditions to be batched. - condition = condition.unsqueeze(0) - samples, log_probs = self.net.sample_and_log_prob( - num_samples, context=condition - ) - samples = samples.reshape((*sample_shape, -1)) - log_probs = log_probs.reshape((*sample_shape,)) - else: - # For batched conditions, we need to reshape the conditions and the samples - batch_shape = condition.shape[:-condition_dims] - condition = condition.reshape(-1, *self._condition_shape) - samples, log_probs = self.net.sample_and_log_prob( - num_samples, context=condition - ) - samples = samples.reshape((*batch_shape, *sample_shape, -1)) - log_probs = log_probs.reshape((*batch_shape, *sample_shape)) + samples, log_probs = self.net.sample_and_log_prob( + num_samples, context=condition + ) + samples = samples.reshape((*sample_shape, condition_batch_dim, -1)) + log_probs = log_probs.reshape((*sample_shape, -1)) return samples, log_probs diff --git a/sbi/neural_nets/density_estimators/shape_handling.py b/sbi/neural_nets/density_estimators/shape_handling.py index 158feac99..421260b92 100644 --- a/sbi/neural_nets/density_estimators/shape_handling.py +++ b/sbi/neural_nets/density_estimators/shape_handling.py @@ -2,10 +2,10 @@ from torch import Tensor -def reshape_to_iid_batch_event( - theta_or_x: Tensor, event_shape: torch.Size, leading_is_iid: bool +def reshape_to_sample_batch_event( + theta_or_x: Tensor, event_shape: torch.Size, leading_is_sample: bool = False ) -> Tensor: - """Return theta or x s.t. its shape is `(iid_shape, batch_shape, event_shape)`. + """Return theta or x s.t. its shape is `(sample_dim, batch_dim, *event_shape)`. This follows the conventions used in pytorch distributions: https://bochang.me/blog/posts/pytorch-distributions/ @@ -14,16 +14,16 @@ def reshape_to_iid_batch_event( theta_or_x: The tensor to be reshaped. Can have any of the following shapes: - (event) - (batch, event) - - (iid, event) - - (iid, batch, event) - event_shape: The shape of a single datapoint (without batch dimension or iid + - (sample, event) + - (sample, batch, event) + event_shape: The shape of a single datapoint (without batch dimension or sample dimension). - leading_is_iid: Used only if `theta_or_x` has exactly one dimension beyond the - `event` dims. Defines whether the leading dimension is interpreted as batch - dimension or as iid dimension. + leading_is_sample: Used only if `theta_or_x` has exactly one dimension beyond + the `event` dims. Defines whether the leading dimension is interpreted as + batch dimension or as sample dimension. Returns: - A tensor of shape `(batch, iid, event)`. + A tensor of shape `(sample, batch, event)`. """ # `2` for image data, `3` for video data, ... event_shape_dim = len(event_shape) @@ -35,16 +35,51 @@ def reshape_to_iid_batch_event( ), "The trailing dimensions of `theta_or_x` do not match the `event_shape`." if len(leading_theta_or_x_shape) == 0: - # A single datapoint is passed. Add batch and iid dim artificially. + # A single datapoint is passed. Add batch and sample dim artificially. return theta_or_x.unsqueeze(0).unsqueeze(0) elif len(leading_theta_or_x_shape) == 1: - # Either a batch dimension or an iid dimension was passed. - return theta_or_x.unsqueeze(1) if leading_is_iid else theta_or_x.unsqueeze(0) + # Either a batch dimension or an sample dimension was passed. + return theta_or_x.unsqueeze(1) if leading_is_sample else theta_or_x.unsqueeze(0) elif len(leading_theta_or_x_shape) == 2: - # Batch dimension and iid dimension were passed. - return theta_or_x + # Batch dimension and sample dimension were passed. + return theta_or_x if leading_is_sample else theta_or_x.transpose(1, 0) else: raise ValueError( f"`len(leading_theta_or_x_shape) = {leading_theta_or_x_shape} > 2`. " f"It is unclear how the additional entries should be interpreted" ) + + +def reshape_to_batch_event(theta_or_x: Tensor, event_shape: torch.Size) -> Tensor: + """Return theta or x s.t. its shape is `(batch_dim, *event_shape)`. + + Args: + theta_or_x: The tensor to be reshaped. Can have any of the following shapes: + - (event) + - (batch, event) + event_shape: The shape of a single datapoint (without batch dimension or sample + dimension). + + Returns: + A tensor of shape `(batch, event)`. + """ + # `2` for image data, `3` for video data, ... + event_shape_dim = len(event_shape) + + trailing_theta_or_x_shape = theta_or_x.shape[-event_shape_dim:] + leading_theta_or_x_shape = theta_or_x.shape[:-event_shape_dim] + assert ( + trailing_theta_or_x_shape == event_shape + ), "The trailing dimensions of `theta_or_x` do not match the `event_shape`." + + if len(leading_theta_or_x_shape) == 0: + # A single datapoint is passed. Add batch artificially. + return theta_or_x.unsqueeze(0) + elif len(leading_theta_or_x_shape) == 1: + # A batch dimension was passed. + return theta_or_x + else: + raise ValueError( + f"`len(leading_theta_or_x_shape) = {leading_theta_or_x_shape} > 1`. " + f"It is unclear how the additional entries should be interpreted" + ) diff --git a/sbi/neural_nets/density_estimators/zuko_flow.py b/sbi/neural_nets/density_estimators/zuko_flow.py index e8c04178a..1be8d76d6 100644 --- a/sbi/neural_nets/density_estimators/zuko_flow.py +++ b/sbi/neural_nets/density_estimators/zuko_flow.py @@ -88,45 +88,27 @@ def log_prob(self, input: Tensor, condition: Tensor) -> Tensor: i.e. batched conditions. Args: - input: Inputs to evaluate the log probability on of shape - (*batch_shape1, input_size). - condition: Conditions of shape (*batch_shape2, *condition_shape). + input: Inputs to evaluate the log probability on. Of shape + `(sample_dim, batch_dim, *event_shape)`. + condition: Conditions of shape `(sample_dim, batch_dim, *event_shape)`. Raises: - RuntimeError: If batch_shape1 and batch_shape2 are not broadcastable. + AssertionError: If `input_batch_dim != condition_batch_dim`. Returns: - Sample-wise log probabilities. - - Note: - This function should support PyTorch's automatic broadcasting. This means - the function should behave as follows for different input and condition - shapes: - - (input_size,) + (batch_size,*condition_shape) -> (batch_size,) - - (batch_size, input_size) + (*condition_shape) -> (batch_size,) - - (batch_size, input_size) + (batch_size, *condition_shape) -> (batch_size,) - - (batch_size1, input_size) + (batch_size2, *condition_shape) - -> RuntimeError i.e. not broadcastable - - (batch_size1,1, input_size) + (batch_size2, *condition_shape) - -> (batch_size1,batch_size2) - - (batch_size1, input_size) + (batch_size2,1, *condition_shape) - -> (batch_size2,batch_size1) + Sample-wise log probabilities, shape `(input_sample_dim, input_batch_dim)`. """ - self._check_condition_shape(condition) - condition_dims = len(self._condition_shape) + input_batch_dim = input.shape[1] + condition_batch_dim = condition.shape[0] - # PyTorch's automatic broadcasting - batch_shape_in = input.shape[:-1] - batch_shape_cond = condition.shape[:-condition_dims] - batch_shape = torch.broadcast_shapes(batch_shape_in, batch_shape_cond) - # Expand the input and condition to the same batch shape - input = input.expand(batch_shape + (input.shape[-1],)) - emb_cond = self._embedding_net(condition) - emb_cond = emb_cond.expand(batch_shape + (emb_cond.shape[-1],)) - - dists = self.net(emb_cond) + assert condition_batch_dim == input_batch_dim, ( + f"Batch shape of condition {condition_batch_dim} and input " + f"{input_batch_dim} do not match." + ) - log_probs = dists.log_prob(input) + emb_cond = self._embedding_net(condition) + distributions = self.net(emb_cond) + log_probs = distributions.log_prob(input) return log_probs @@ -134,11 +116,12 @@ def loss(self, input: Tensor, condition: Tensor) -> Tensor: r"""Return the loss for training the density estimator. Args: - input: Inputs to evaluate the loss on of shape (batch_size, input_size). - condition: Conditions of shape (batch_size, *condition_shape). + input: Inputs to evaluate the loss on of shape + `(sample_dim, batch_dim, *event_shape)`. + condition: Conditions of shape `(sample_dim, batch_dim, *event_dim)`. Returns: - Negative log_probability (batch_size,) + Negative log_probability of shape `(input_sample_dim, condition_batch_dim)`. """ return -self.log_prob(input, condition) @@ -148,27 +131,15 @@ def sample(self, sample_shape: Shape, condition: Tensor) -> Tensor: Args: sample_shape: Shape of the samples to return. - condition: Conditions of shape (*batch_shape, *condition_shape). + condition: Conditions of shape `(sample_dim, batch_dim, *event_shape)`. Returns: - Samples of shape (*batch_shape, *sample_shape, input_size). - - Note: - This function should support batched conditions and should admit the - following behavior for different condition shapes: - - (*condition_shape) -> (*sample_shape, input_size) - - (*batch_shape, *condition_shape) - -> (*batch_shape, *sample_shape, input_size) + Samples of shape `(*sample_shape, condition_batch_dim)`. """ - self._check_condition_shape(condition) - - condition_dims = len(self._condition_shape) - batch_shape = condition.shape[:-condition_dims] if condition_dims > 0 else () - emb_cond = self._embedding_net(condition) dists = self.net(emb_cond) - samples = dists.sample(sample_shape).reshape(*batch_shape, *sample_shape, -1) + samples = dists.sample(sample_shape) return samples @@ -179,21 +150,14 @@ def sample_and_log_prob( Args: sample_shape: Shape of the samples to return. - condition: Conditions of shape (*batch_shape, *condition_shape). + condition: Conditions of shape (sample_dim, batch_dim, *event_shape). Returns: - Samples and associated log probabilities. + Samples of shape `(*sample_shape, condition_batch_dim, *input_event_shape)` + and associated log probs of shape `(*sample_shape, condition_batch_dim)`. """ - self._check_condition_shape(condition) - - condition_dims = len(self._condition_shape) - batch_shape = condition.shape[:-condition_dims] if condition_dims > 0 else () - emb_cond = self._embedding_net(condition) dists = self.net(emb_cond) samples, log_probs = dists.rsample_and_log_prob(sample_shape) - samples = samples.reshape(*batch_shape, *sample_shape, -1) - log_probs = log_probs.reshape(*batch_shape, *sample_shape) - return samples, log_probs diff --git a/sbi/neural_nets/mnle.py b/sbi/neural_nets/mnle.py index c1d5544d7..034747ce5 100644 --- a/sbi/neural_nets/mnle.py +++ b/sbi/neural_nets/mnle.py @@ -2,43 +2,19 @@ # under the Affero General Public License v3, see . import warnings -from typing import Optional, Tuple +from typing import Optional import torch -from torch import Tensor, nn, unique +from torch import Tensor -from sbi.neural_nets.density_estimators import ( - CategoricalMassEstimator, - CategoricalNet, - MixedDensityEstimator, -) +from sbi.neural_nets.categorial import build_categoricalmassestimator +from sbi.neural_nets.density_estimators import MixedDensityEstimator +from sbi.neural_nets.density_estimators.mixed_density_estimator import _separate_input from sbi.neural_nets.flow import build_nsf from sbi.utils.sbiutils import standardizing_net from sbi.utils.user_input_checks import check_data_device -def build_categoricalmassestimator( - num_input: int = 4, - num_categories: int = 2, - num_hidden: int = 20, - num_layers: int = 2, - embedding: Optional[nn.Module] = None, -): - """Returns a density estimator for a categorical random variable.""" - - categorical_net = CategoricalNet( - num_input=num_input, - num_categories=num_categories, - num_hidden=num_hidden, - num_layers=num_layers, - embedding=embedding, - ) - - categorical_mass_estimator = CategoricalMassEstimator(categorical_net) - - return categorical_mass_estimator - - def build_mnle( batch_x: Tensor, batch_y: Tensor, @@ -75,7 +51,7 @@ def build_mnle( """ check_data_device(batch_x, batch_y) - embedding = standardizing_net(batch_y) if z_score_y == "independent" else None + embedding_net = standardizing_net(batch_y) if z_score_y == "independent" else None warnings.warn( """The mixed neural likelihood estimator assumes that x contains @@ -85,19 +61,15 @@ def build_mnle( stacklevel=2, ) # Separate continuous and discrete data. - cont_x, disc_x = _separate_x(batch_x) - - # Infer input and output dims. - dim_parameters = batch_y[0].numel() - num_categories = unique(disc_x).numel() + cont_x, disc_x = _separate_input(batch_x) # Set up a categorical RV neural net for modelling the discrete data. disc_nle = build_categoricalmassestimator( - num_input=dim_parameters, - num_categories=num_categories, + disc_x, + batch_y, num_hidden=hidden_features, num_layers=hidden_layers, - embedding=embedding, + embedding_net=embedding_net, ) # Set up a NSF for modelling the continuous data, conditioned on the discrete data. @@ -117,17 +89,6 @@ def build_mnle( return MixedDensityEstimator( discrete_net=disc_nle, continuous_net=cont_nle, - log_transform_x=log_transform_x, + log_transform_input=log_transform_x, condition_shape=torch.Size([]), ) - - -def _separate_x(x: Tensor, num_discrete_columns: int = 1) -> Tuple[Tensor, Tensor]: - """Returns the continuous and discrete part of the given x. - - Assumes the discrete data to live in the last columns of x. - """ - - assert x.ndim == 2, f"x must have two dimensions but has {x.ndim}." - - return x[:, :-num_discrete_columns], x[:, -num_discrete_columns:] diff --git a/sbi/utils/user_input_checks.py b/sbi/utils/user_input_checks.py index e02a214a7..0a0c4f99f 100644 --- a/sbi/utils/user_input_checks.py +++ b/sbi/utils/user_input_checks.py @@ -7,7 +7,6 @@ import torch from numpy import ndarray -from pyknos.nflows import flows from scipy.stats._distn_infrastructure import rv_frozen from scipy.stats._multivariate import multi_rv_frozen from torch import Tensor, float32, nn @@ -749,17 +748,19 @@ def validate_theta_and_x( return theta, x -def test_posterior_net_for_multi_d_x(net: flows.Flow, theta: Tensor, x: Tensor) -> None: +def test_posterior_net_for_multi_d_x(net, theta: Tensor, x: Tensor) -> None: """Test log prob method of the net. This is done to make sure the net can handle multidimensional inputs via an embedding net. If not, it usually fails with a RuntimeError. Here we catch the error, append a debug hint and raise it again. - """ + Args: + net: A `DensityEstimator`. + """ try: # torch.nn.functional needs at least two inputs here. - net.log_prob(theta[:2], x[:2]) + net.log_prob(theta[:, :2], condition=x[:2]) except RuntimeError as rte: ndims = x.ndim if ndims > 2: diff --git a/tests/base_test.py b/tests/base_test.py index 2ea778b2b..baf75cdbd 100644 --- a/tests/base_test.py +++ b/tests/base_test.py @@ -20,7 +20,7 @@ def simulator(parameter_set): prior, method="SNPE_A", num_simulations=10, - init_kwargs={'num_components': 5}, + init_kwargs={"num_components": 5}, train_kwargs={"max_num_epochs": 2}, build_posterior_kwargs={"prior": prior}, ) diff --git a/tests/density_estimator_test.py b/tests/density_estimator_test.py index 8bd8bbb27..03fe3c055 100644 --- a/tests/density_estimator_test.py +++ b/tests/density_estimator_test.py @@ -10,7 +10,12 @@ from torch import eye, zeros from torch.distributions import MultivariateNormal -from sbi.neural_nets.density_estimators.shape_handling import reshape_to_iid_batch_event +from sbi.neural_nets import build_mnle +from sbi.neural_nets.categorial import build_categoricalmassestimator +from sbi.neural_nets.density_estimators.shape_handling import ( + reshape_to_sample_batch_event, +) +from sbi.neural_nets.embedding_nets import CNNEmbedding from sbi.neural_nets.flow import ( build_maf, build_maf_rqs, @@ -25,6 +30,7 @@ build_zuko_sospf, build_zuko_unaf, ) +from sbi.neural_nets.mdn import build_mdn def get_batch_input(nsamples: int, input_dims: int) -> torch.Tensor: @@ -61,215 +67,7 @@ def get_batch_context(nsamples: int, condition_shape: tuple[int, ...]) -> torch. @pytest.mark.parametrize( - "build_density_estimator", - ( - build_maf, - build_maf_rqs, - build_nsf, - build_zuko_nice, - build_zuko_maf, - build_zuko_nsf, - build_zuko_ncsf, - build_zuko_sospf, - build_zuko_naf, - build_zuko_unaf, - build_zuko_gf, - build_zuko_bpf, - ), -) -@pytest.mark.parametrize("input_dims", (1, 2)) -@pytest.mark.parametrize( - "condition_shape", ((1,), (2,), (1, 1), (2, 2), (1, 1, 1), (2, 2, 2)) -) -def test_api_density_estimator(build_density_estimator, input_dims, condition_shape): - r"""Checks whether we can evaluate and sample from density estimators correctly. - - Args: - build_density_estimator: function that creates a DensityEstimator subclass. - input_dim: Dimensionality of the input. - context_shape: Dimensionality of the context. - """ - - nsamples = 10 - nsamples_test = 5 - - batch_input = get_batch_input(nsamples, input_dims) - batch_context = get_batch_context(nsamples, condition_shape) - - class EmbeddingNet(torch.nn.Module): - def forward(self, x): - for _ in range(len(condition_shape) - 1): - x = torch.sum(x, dim=-1) - return x - - estimator = build_density_estimator( - batch_input, - batch_context, - hidden_features=10, - num_transforms=2, - embedding_net=EmbeddingNet(), - ) - - # Loss is only required to work for batched inputs and contexts - loss = estimator.loss(batch_input, batch_context) - assert loss.shape == ( - nsamples, - ), f"Loss shape is not correct. It is of shape {loss.shape}, but should \ - be {(nsamples,)}" - - # Sample and log_prob should work for batched and unbatched contexts - - # Unbatched context - samples = estimator.sample((nsamples_test,), batch_context[0]) - assert samples.shape == ( - nsamples_test, - input_dims, - ), f"Samples shape is not correct. It is of shape {samples.shape}, but should \ - be {(nsamples_test, input_dims)}" - log_probs = estimator.log_prob(samples, batch_context[0]) - assert log_probs.shape == ( - nsamples_test, - ), f"log_prob shape is not correct. It is of shape {log_probs.shape}, but should \ - be {(nsamples_test,)}" - - samples = estimator.sample((1, nsamples_test), batch_context[0]) - assert samples.shape == ( - 1, - nsamples_test, - input_dims, - ), f"Samples shape is not correct. It is of shape {samples.shape}, but should \ - be {(1, nsamples_test, input_dims)}" - log_probs = estimator.log_prob(samples, batch_context[0]) - assert log_probs.shape == ( - 1, - nsamples_test, - ), f"log_prob shape is not correct. It is of shape {log_probs.shape}, but should \ - be {(1, nsamples_test)}" - - samples = estimator.sample((2, nsamples_test), batch_context[0]) - assert samples.shape == ( - 2, - nsamples_test, - input_dims, - ), f"Samples shape is not correct. It is of shape {samples.shape}, but should \ - be {(batch_context.shape[0], nsamples_test, input_dims)}" - log_probs = estimator.log_prob(samples, batch_context[0]) - assert log_probs.shape == ( - 2, - nsamples_test, - ), f"log_prob shape is not correct. It is of shape {log_probs.shape}, but should \ - be {(batch_context.shape[0], nsamples_test)}" - - # Batched context - samples = estimator.sample((nsamples_test,), batch_context) - assert samples.shape == ( - batch_context.shape[0], - nsamples_test, - input_dims, - ), f"Samples shape is not correct. It is of shape {samples.shape}, but should \ - be {(batch_context.shape[0], nsamples_test, input_dims)}" - try: - log_probs = estimator.log_prob(samples, batch_context) - except RuntimeError: - # Shapes (10,) and (5,) are not broadcastable, so we expect a ValueError - pass - except Exception as err: - raise AssertionError( - f"Expected RuntimeError as shapes {batch_context.shape} \ - and {samples.shape} are not broadcastable, but got a \ - different/no error." - ) from err - - samples = estimator.sample((nsamples_test,), batch_context[0].unsqueeze(0)) - assert samples.shape == ( - 1, - nsamples_test, - input_dims, - ), f"Samples shape is not correct. It is of shape {samples.shape}, but should be \ - {(batch_context.shape[0], nsamples_test, input_dims)}" - log_probs = estimator.log_prob(samples, batch_context[0].unsqueeze(0)) - assert log_probs.shape == ( - 1, - nsamples_test, - ), f"log_prob shape is not correct. It is of shape {log_probs.shape}, but should \ - be {(batch_context.shape[0], nsamples_test)}" - - # Both batched - samples = estimator.sample((2, nsamples_test), batch_context.unsqueeze(0)) - assert samples.shape == ( - 1, - batch_context.shape[0], - 2, - nsamples_test, - input_dims, - ), f"Samples shape is not correct. It is of shape {samples.shape}, but should \ - be {(1, batch_context.shape[0], 2, nsamples_test, input_dims)}" - try: - log_probs = estimator.log_prob(samples, batch_context.unsqueeze(0)) - except RuntimeError: - # Shapes (10,) and (5,) are not broadcastable, so we expect a ValueError - pass - except Exception as err: - raise AssertionError( - f"Expected RuntimeError as shapes {batch_context.shape} \ - and {samples.shape} are not broadcastable, but got a \ - different/no error." - ) from err - - # Sample and log_prob work for batched and unbatched contexts - samples, log_probs = estimator.sample_and_log_prob( - (nsamples_test,), batch_context[0] - ) - assert samples.shape == ( - nsamples_test, - input_dims, - ), f"Samples shape is not correct. It is of shape {samples.shape}, but should \ - be {(nsamples_test, input_dims)}" - assert log_probs.shape == ( - nsamples_test, - ), f"log_prob shape is not correct. It is of shape {log_probs.shape}, but should \ - be {(nsamples_test,)}" - - samples, log_probs = estimator.sample_and_log_prob((nsamples_test,), batch_context) - - assert samples.shape == ( - batch_context.shape[0], - nsamples_test, - input_dims, - ), f"Samples shape is not correct. It is of shape {samples.shape}, but should \ - be {(batch_context.shape[0], nsamples_test, input_dims)}" - assert log_probs.shape == ( - batch_context.shape[0], - nsamples_test, - ), f"log_prob shape is not correct. It is of shape {log_probs.shape}, but should \ - be {(batch_context.shape[0], nsamples_test)}" - - samples, log_probs = estimator.sample_and_log_prob( - ( - 2, - nsamples_test, - ), - batch_context.unsqueeze(0), - ) - assert samples.shape == ( - 1, - batch_context.shape[0], - 2, - nsamples_test, - input_dims, - ), f"Samples shape is not correct. It is of shape {samples.shape}, but should \ - be {(1, batch_context.shape[0], 2, nsamples_test, input_dims)}" - assert log_probs.shape == ( - 1, - batch_context.shape[0], - 2, - nsamples_test, - ), f"log_prob shape is not correct. It is of shape {log_probs.shape}, but should \ - be {(1, batch_context.shape[0], 2, nsamples_test)}" - - -@pytest.mark.parametrize( - "theta_or_x_shape, target_shape, event_shape, leading_is_iid", + "theta_or_x_shape, target_shape, event_shape, leading_is_sample", ( ((3,), (1, 1, 3), (3,), False), ((3,), (1, 1, 3), (3,), True), @@ -278,7 +76,7 @@ def forward(self, x): ((2, 3), (1, 2, 3), (3,), False), ((2, 3), (2, 1, 3), (3,), True), ((1, 2, 3), (1, 2, 3), (3,), True), - ((1, 2, 3), (1, 2, 3), (3,), False), + ((1, 2, 3), (2, 1, 3), (3,), False), ((3, 5), (1, 1, 3, 5), (3, 5), False), ((3, 5), (1, 1, 3, 5), (3, 5), True), ((1, 3, 5), (1, 1, 3, 5), (3, 5), False), @@ -286,7 +84,7 @@ def forward(self, x): ((2, 3, 5), (1, 2, 3, 5), (3, 5), False), ((2, 3, 5), (2, 1, 3, 5), (3, 5), True), ((1, 2, 3, 5), (1, 2, 3, 5), (3, 5), True), - ((1, 2, 3, 5), (1, 2, 3, 5), (3, 5), False), + ((1, 2, 3, 5), (2, 1, 3, 5), (3, 5), False), pytest.param((1, 2, 3, 5), (1, 2, 3, 5), (5), False, marks=pytest.mark.xfail), pytest.param((1, 2, 3, 5), (1, 2, 3, 5), (3), False, marks=pytest.mark.xfail), pytest.param((1, 2, 3), (1, 2, 3), (1, 5), False, marks=pytest.mark.xfail), @@ -299,14 +97,237 @@ def test_shape_handling_utility_for_density_estimator( theta_or_x_shape: Tuple, target_shape: Tuple, event_shape: Tuple, - leading_is_iid: bool, + leading_is_sample: bool, ): - """Test whether `reshape_to_batch_iid_event` results in expected outputs.""" + """Test whether `reshape_to_batch_sample_event` results in expected outputs.""" input = torch.randn(theta_or_x_shape) - output = reshape_to_iid_batch_event( - input, event_shape=event_shape, leading_is_iid=leading_is_iid + output = reshape_to_sample_batch_event( + input, event_shape=event_shape, leading_is_sample=leading_is_sample ) assert output.shape == target_shape, ( f"Shapes of Output ({output.shape}) and target shape ({target_shape}) do not " f"match." ) + + +@pytest.mark.parametrize( + "density_estimator_build_fn", + ( + build_mdn, + build_maf, + build_maf_rqs, + build_nsf, + build_zuko_bpf, + build_zuko_gf, + build_zuko_maf, + build_zuko_naf, + build_zuko_ncsf, + build_zuko_nice, + build_zuko_nsf, + build_zuko_sospf, + build_zuko_unaf, + build_categoricalmassestimator, + build_mnle, + ), +) +@pytest.mark.parametrize("input_sample_dim", (1, 2)) +@pytest.mark.parametrize("input_event_shape", ((1,), (4,))) +@pytest.mark.parametrize("condition_event_shape", ((1,), (7,))) +@pytest.mark.parametrize("batch_dim", (1, 10)) +def test_density_estimator_loss_shapes( + density_estimator_build_fn, + input_sample_dim, + input_event_shape, + condition_event_shape, + batch_dim, +): + """Test whether `loss` of DensityEstimators follow the shape convention.""" + density_estimator, inputs, conditions = _build_density_estimator_and_tensors( + density_estimator_build_fn, + input_event_shape, + condition_event_shape, + batch_dim, + input_sample_dim, + ) + + losses = density_estimator.loss(inputs, condition=conditions) + assert losses.shape == (input_sample_dim, batch_dim) + + +@pytest.mark.parametrize( + "density_estimator_build_fn", + ( + build_mdn, + build_maf, + build_maf_rqs, + build_nsf, + build_zuko_bpf, + build_zuko_gf, + build_zuko_maf, + build_zuko_naf, + build_zuko_ncsf, + build_zuko_nice, + build_zuko_nsf, + build_zuko_sospf, + build_zuko_unaf, + build_categoricalmassestimator, + ), +) +@pytest.mark.parametrize("input_sample_dim", (1, 2)) +@pytest.mark.parametrize("input_event_shape", ((1,), (4,))) +@pytest.mark.parametrize("condition_event_shape", ((1, 1), (1, 7), (7, 1), (7, 7))) +@pytest.mark.parametrize("batch_dim", (1, 10)) +def test_density_estimator_log_prob_shapes_with_embedding( + density_estimator_build_fn, + input_sample_dim, + input_event_shape, + condition_event_shape, + batch_dim, +): + """Test whether `loss` of DensityEstimators follow the shape convention.""" + density_estimator, inputs, conditions = _build_density_estimator_and_tensors( + density_estimator_build_fn, + input_event_shape, + condition_event_shape, + batch_dim, + input_sample_dim, + ) + + losses = density_estimator.log_prob(inputs, condition=conditions) + assert losses.shape == (input_sample_dim, batch_dim) + + +@pytest.mark.parametrize( + "density_estimator_build_fn", + ( + build_mdn, + build_maf, + build_maf_rqs, + build_nsf, + build_zuko_bpf, + build_zuko_gf, + build_zuko_maf, + build_zuko_naf, + build_zuko_ncsf, + build_zuko_nice, + build_zuko_nsf, + build_zuko_sospf, + build_zuko_unaf, + build_categoricalmassestimator, + build_mnle, + ), +) +@pytest.mark.parametrize("sample_shape", ((), (1,), (2, 3))) +@pytest.mark.parametrize("input_event_shape", ((1,), (4,))) +@pytest.mark.parametrize("condition_event_shape", ((1,), (7,))) +@pytest.mark.parametrize("batch_dim", (1, 10)) +def test_density_estimator_sample_shapes( + density_estimator_build_fn, + sample_shape, + input_event_shape, + condition_event_shape, + batch_dim, +): + """Test whether `loss` of DensityEstimators follow the shape convention.""" + density_estimator, _, conditions = _build_density_estimator_and_tensors( + density_estimator_build_fn, input_event_shape, condition_event_shape, batch_dim + ) + samples = density_estimator.sample(sample_shape, condition=conditions) + if density_estimator_build_fn == build_categoricalmassestimator: + # Our categorical is always 1D and does not return `input_event_shape`. + input_event_shape = () + elif density_estimator_build_fn == build_mnle: + input_event_shape = (input_event_shape[0] + 1,) + assert samples.shape == (*sample_shape, batch_dim, *input_event_shape) + + +@pytest.mark.parametrize( + "density_estimator_build_fn", + ( + build_mdn, + build_maf, + build_maf_rqs, + build_nsf, + build_zuko_bpf, + build_zuko_gf, + build_zuko_maf, + build_zuko_naf, + build_zuko_ncsf, + build_zuko_nice, + build_zuko_nsf, + build_zuko_sospf, + build_zuko_unaf, + build_categoricalmassestimator, + build_mnle, + ), +) +@pytest.mark.parametrize("input_event_shape", ((1,), (4,))) +@pytest.mark.parametrize("condition_event_shape", ((1,), (7,))) +@pytest.mark.parametrize("batch_dim", (1, 10)) +def test_correctness_of_density_estimator_loss( + density_estimator_build_fn, + input_event_shape, + condition_event_shape, + batch_dim, +): + """Test whether identical inputs lead to identical loss values.""" + input_sample_dim = 2 + density_estimator, inputs, condition = _build_density_estimator_and_tensors( + density_estimator_build_fn, + input_event_shape, + condition_event_shape, + batch_dim, + input_sample_dim, + ) + losses = density_estimator.loss(inputs, condition=condition) + assert torch.allclose(losses[0, :], losses[1, :]) + + +def _build_density_estimator_and_tensors( + density_estimator_build_fn: str, + input_event_shape: Tuple[int], + condition_event_shape: Tuple[int], + batch_dim: int, + input_sample_dim: int = 1, +): + """Helper function for all tests that deal with shapes of density estimators.""" + if density_estimator_build_fn == build_categoricalmassestimator: + input_event_shape = (1,) + elif density_estimator_build_fn == build_mnle: + input_event_shape = ( + input_event_shape[0] + 1, + ) # 1 does not make sense for mixed. + + # Use discrete thetas such that categorical density esitmators can also use them. + building_thetas = torch.randint( + 0, 4, (1000, *input_event_shape), dtype=torch.float32 + ) + building_xs = torch.randn((1000, *condition_event_shape)) + if len(condition_event_shape) > 1: + embedding_net = CNNEmbedding(condition_event_shape, kernel_size=1) + else: + embedding_net = torch.nn.Identity() + + if density_estimator_build_fn == build_mnle: + building_thetas[:, :-1] += 5.0 # Make continuous dims positive for log-tf. + density_estimator = density_estimator_build_fn( + building_thetas, building_xs, embedding_net=embedding_net + ) + elif density_estimator_build_fn == build_categoricalmassestimator: + density_estimator = density_estimator_build_fn( + building_thetas, building_xs, embedding_net=embedding_net + ) + else: + density_estimator = density_estimator_build_fn( + torch.randn_like(building_thetas), + torch.randn_like(building_xs), + embedding_net=embedding_net, + ) + + inputs = building_thetas[:batch_dim] + condition = building_xs[:batch_dim] + + inputs = inputs.unsqueeze(0) + inputs = inputs.expand(input_sample_dim, -1, -1) + condition = condition + return density_estimator, inputs, condition From 0f0ee6e9f6c35a6d030281427409bcfacc0e4764 Mon Sep 17 00:00:00 2001 From: michaeldeistler Date: Tue, 9 Apr 2024 17:40:43 +0200 Subject: [PATCH 35/53] Revert tutorials for importing posterior_nn until new release --- sbi/utils/__init__.py | 1 + tutorials/04_density_estimators.ipynb | 6 +++--- tutorials/05_embedding_net.ipynb | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/sbi/utils/__init__.py b/sbi/utils/__init__.py index 11db0b6f5..d702469cf 100644 --- a/sbi/utils/__init__.py +++ b/sbi/utils/__init__.py @@ -70,3 +70,4 @@ validate_theta_and_x, ) from sbi.utils.user_input_checks_utils import MultipleIndependent +from sbi.utils.get_nn_models import posterior_nn, likelihood_nn, classifier_nn diff --git a/tutorials/04_density_estimators.ipynb b/tutorials/04_density_estimators.ipynb index 18890f867..5775f9cce 100644 --- a/tutorials/04_density_estimators.ipynb +++ b/tutorials/04_density_estimators.ipynb @@ -89,7 +89,7 @@ "outputs": [], "source": [ "# For SNLE: likelihood_nn(). For SNRE: classifier_nn()\n", - "from sbi.neural_nets import posterior_nn\n", + "from sbi.utils import posterior_nn\n", "\n", "density_estimator_build_fun = posterior_nn(\n", " model=\"nsf\", hidden_features=60, num_transforms=3\n", @@ -131,7 +131,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -145,7 +145,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.18" + "version": "3.10.13" } }, "nbformat": 4, diff --git a/tutorials/05_embedding_net.ipynb b/tutorials/05_embedding_net.ipynb index 78bae6598..89a605cab 100644 --- a/tutorials/05_embedding_net.ipynb +++ b/tutorials/05_embedding_net.ipynb @@ -303,7 +303,7 @@ "metadata": {}, "outputs": [], "source": [ - "from sbi.neural_nets import posterior_nn\n", + "from sbi.utils import posterior_nn\n", "\n", "# instantiate the neural density estimator\n", "neural_posterior = posterior_nn(model=\"maf\", embedding_net=embedding_net)\n", From f56825dc556cf5a2723735046241de700d8e383a Mon Sep 17 00:00:00 2001 From: michaeldeistler Date: Tue, 9 Apr 2024 19:12:42 +0200 Subject: [PATCH 36/53] Remove tutorial on flexible interface --- docs/mkdocs.yml | 1 - tutorials/02_flexible_interface.ipynb | 350 -------------------------- 2 files changed, 351 deletions(-) delete mode 100644 tutorials/02_flexible_interface.ipynb diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index 43fcd48c3..817f03eaa 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -7,7 +7,6 @@ nav: - Tutorials and Examples: - Introduction: - Getting started: tutorial/00_getting_started_flexible.md - - Flexible interface: tutorial/02_flexible_interface.md - Amortized inference: tutorial/01_gaussian_amortized.md - Implemented algorithms: tutorial/16_implemented_methods.md - Advanced: diff --git a/tutorials/02_flexible_interface.ipynb b/tutorials/02_flexible_interface.ipynb deleted file mode 100644 index 832bea6e2..000000000 --- a/tutorials/02_flexible_interface.ipynb +++ /dev/null @@ -1,350 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# The flexible interface\n", - "\n", - "In the previous tutorial, we have demonstrated how `sbi` can be used to run simulation-based inference with just a single line of code.\n", - "\n", - "In addition to this simple interface, `sbi` also provides a **flexible interface** which provides several additional features implemented in `sbi`." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note, you can find the original version of this notebook at [https://github.com/sbi-dev/sbi/blob/main/tutorials/02_flexible_interface.ipynb](https://github.com/sbi-dev/sbi/blob/main/tutorials/02_flexible_interface.ipynb) in the `sbi` repository." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Features\n", - "\n", - "The flexible interface offers the following features (and many more):\n", - "\n", - "- performing sequential posterior estimation by focusing on a particular observation over multiple rounds. This can decrease the number of simulations one has to run, but the inference procedure is no longer amortized ([tutorial](https://sbi-dev.github.io/sbi/tutorial/03_multiround_inference/)). \n", - "- specify your own density estimator, or change hyperparameters of existing ones (e.g. number of hidden units for [NSF](https://arxiv.org/abs/1906.04032)) ([tutorial](https://www.mackelab.org/sbi/tutorial/04_density_estimators/)). \n", - "- use an `embedding_net` to learn summary features from high-dimensional simulation outputs ([tutorial](https://www.mackelab.org/sbi/tutorial/05_embedding_net/)). \n", - "- provide presimulated data \n", - "- choose between different methods to sample from the posterior. \n", - "- use calibration kernels as proposed by [Lueckmann, Goncalves et al. 2017](https://arxiv.org/abs/1711.01861)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Main syntax" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "```Python\n", - "from sbi.utils.user_input_checks import process_prior, process_simulator, check_sbi_inputs\n", - "from sbi.inference import SNPE, simulate_for_sbi\n", - "\n", - "prior, num_parameters, prior_returns_numpy = process_prior(prior)\n", - "simulator = process_simulator(simulator, prior, prior_returns_numpy)\n", - "check_sbi_inputs(simulator, prior)\n", - "inference = SNPE(prior)\n", - "\n", - "theta, x = simulate_for_sbi(simulator, proposal=prior, num_simulations=1000)\n", - "density_estimator = inference.append_simulations(theta, x).train()\n", - "posterior = inference.build_posterior(density_estimator)\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Linear Gaussian example" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will show an example of how we can use the flexible interface to infer the posterior for an example with a Gaussian likelihood (same example as before). First, we import the inference method we want to use (`SNPE`, `SNLE`, or `SNRE`) and other helper functions." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import torch\n", - "\n", - "from sbi import analysis as analysis\n", - "from sbi import utils as utils\n", - "from sbi.inference import SNPE, simulate_for_sbi\n", - "from sbi.utils.user_input_checks import (\n", - " check_sbi_inputs,\n", - " process_prior,\n", - " process_simulator,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next, we define the prior and simulator:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "num_dim = 3\n", - "prior = utils.BoxUniform(low=-2 * torch.ones(num_dim), high=2 * torch.ones(num_dim))" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "def linear_gaussian(theta):\n", - " return theta + 1.0 + torch.randn_like(theta) * 0.1" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In the flexible interface, you have to ensure that your simulator and prior adhere to the requirements of `sbi`. You can do so with the `process_simulator()` and `process_prior()` functions, which prepare them appropriately. Finally, you can call `check_sbi_input()` to make sure they are consistent which each other." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "# Check prior, return PyTorch prior.\n", - "prior, num_parameters, prior_returns_numpy = process_prior(prior)\n", - "\n", - "# Check simulator, returns PyTorch simulator able to simulate batches.\n", - "simulator = process_simulator(linear_gaussian, prior, prior_returns_numpy)\n", - "\n", - "# Consistency check after making ready for sbi.\n", - "check_sbi_inputs(simulator, prior)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Then, we instantiate the inference object:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "inference = SNPE(prior=prior)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next, we run simulations. You can do so either by yourself by sampling from the prior and running the simulator (e.g. on a compute cluster), or you can use a helper function provided by `sbi` called `simulate_for_sbi`. This function allows to parallelize your code with `joblib`." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "d23ec4c3a80e423faf98bc56a8ca70cc", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Running 2000 simulations.: 0%| | 0/2000 [00:00" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "posterior_samples = posterior.sample((10000,), x=x_o)\n", - "\n", - "# plot posterior samples\n", - "_ = analysis.pairplot(\n", - " posterior_samples, limits=[[-2, 2], [-2, 2], [-2, 2]], figsize=(5, 5)\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can always print the posterior to know how it was trained:" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Posterior conditional density p(θ|x) of type DirectPosterior. It samples the posterior network and rejects samples that\n", - " lie outside of the prior bounds.\n" - ] - } - ], - "source": [ - "print(posterior)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.8" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} From dda9c9d344f22471f6a94f5657106affa3638c0f Mon Sep 17 00:00:00 2001 From: michaeldeistler Date: Wed, 10 Apr 2024 09:13:14 +0200 Subject: [PATCH 37/53] Remove unused tutorial on getting started --- tutorials/00_getting_started.ipynb | 196 ----------------------------- 1 file changed, 196 deletions(-) delete mode 100644 tutorials/00_getting_started.ipynb diff --git a/tutorials/00_getting_started.ipynb b/tutorials/00_getting_started.ipynb deleted file mode 100644 index d9b48e85f..000000000 --- a/tutorials/00_getting_started.ipynb +++ /dev/null @@ -1,196 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Getting started with `sbi`" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note, you can find the original version of this notebook at [https://github.com/sbi-dev/sbi/blob/main/tutorials/00_getting_started.ipynb](https://github.com/sbi-dev/sbi/blob/main/tutorials/00_getting_started.ipynb) in the `sbi` repository." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import torch\n", - "\n", - "from sbi import analysis as analysis\n", - "from sbi import utils as utils\n", - "from sbi.inference.base import infer" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Running the inference procedure\n", - "\n", - "`sbi` provides a simple interface to run state-of-the-art algorithms for simulation-based inference." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For inference, you need to provide two ingredients:\n", - "\n", - "1) a prior distribution that allows to sample parameter sets. \n", - "2) a simulator that takes parameter sets and produces simulation outputs.\n", - "\n", - "For example, we can have a 3-dimensional parameter space with a uniform prior between [-1,1] and a simple simulator that for the sake of example adds 1.0 and some Gaussian noise to the parameter set:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "num_dim = 3\n", - "prior = utils.BoxUniform(low=-2 * torch.ones(num_dim), high=2 * torch.ones(num_dim))\n", - "\n", - "def simulator(parameter_set):\n", - " return 1.0 + parameter_set + torch.randn(parameter_set.shape) * 0.1" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "`sbi` can then run inference:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "60bf691ee48c4e53b628daa1b77d46ef", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Running 1000 simulations.: 0%| | 0/1000 [00:00" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "samples = posterior.sample((10000,), x=observation)\n", - "log_probability = posterior.log_prob(samples, x=observation)\n", - "_ = analysis.pairplot(samples, limits=[[-2, 2], [-2, 2], [-2, 2]], figsize=(6, 6))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Next steps\n", - "\n", - "The single-line interface described above provides an easy entry for using `sbi`. However, on almost any real-world problem that goes beyond a simple demonstration, we strongly recommend using the [flexible interface](https://sbi-dev.github.io/sbi/tutorial/02_flexible_interface/)." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.5" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} From fac45c89fb42f149ea7c4ca1c0a8e548d004b814 Mon Sep 17 00:00:00 2001 From: michaeldeistler Date: Wed, 10 Apr 2024 09:10:07 +0200 Subject: [PATCH 38/53] Revise tutorials; fix broken links --- tutorials/00_getting_started_flexible.ipynb | 117 +++++++++++--------- tutorials/01_gaussian_amortized.ipynb | 8 +- 2 files changed, 67 insertions(+), 58 deletions(-) diff --git a/tutorials/00_getting_started_flexible.ipynb b/tutorials/00_getting_started_flexible.ipynb index b8094b100..0350eb1fb 100644 --- a/tutorials/00_getting_started_flexible.ipynb +++ b/tutorials/00_getting_started_flexible.ipynb @@ -22,28 +22,19 @@ "\n", "**The overall goal of simulation-based inference is to algorithmically identify model parameters which are consistent with data.**\n", "\n", - "In this tutorial we demonstrate how to get started with the `sbi` toolbox and how to perform parameter inference on a simple model. \n", - "\n", - "Each of the implemented inference methods takes three inputs: \n", - "1. observational data (or summary statistics thereof) - _the observations_\n", - "1. a candidate (mechanistic) model - _the simulator_\n", - "1. prior knowledge or constraints on model parameters - _the prior_\n", - "\n", - "\n", - "\n", - "If you are new to simulation-based inference, please first read the information in the tutorial [README](README.md) or the [website](https://sbi-dev.github.io/sbi/) to familiarise with the motivation and relevant terms." + "In this tutorial we demonstrate how to get started with the `sbi` toolbox and how to perform parameter inference on a simple model." ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "import torch\n", "\n", - "from sbi import analysis as analysis\n", - "from sbi import utils as utils\n", + "from sbi.analysis import pairplot\n", + "from sbi.utils import BoxUniform\n", "from sbi.inference import SNPE, simulate_for_sbi\n", "from sbi.utils.user_input_checks import (\n", " check_sbi_inputs,\n", @@ -64,28 +55,40 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "For this illustrative example, we consider a model _simulator_, that takes in 3 parameters ($\\theta$). For simplicity, the _simulator_ outputs simulations of the same dimensionality and adds 1.0 and some Gaussian noise to the parameter set. \n", + "Each of the implemented inference methods takes three inputs: \n", + "1. observational data (or summary statistics thereof) - _the observations_ \n", + "2. a candidate (mechanistic) model - _the simulator_ \n", + "3. prior knowledge or constraints on model parameters - _the prior_\n", + "\n", + "If you are new to simulation-based inference, please first read the information on the [homepage of the website](https://sbi-dev.github.io/sbi/) to familiarise with the motivation and relevant terms." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For this illustrative example we consider a model _simulator_ that takes in 3 parameters ($\\theta$). For simplicity, the _simulator_ outputs simulations of the same dimensionality and adds 1.0 and some Gaussian noise to the parameter set. \n", "\n", "> Note: This is where you instead would use your specific _simulator_ with its parameters.\n", "\n", "For the 3-dimensional parameter space we consider a uniform _prior_ between [-2,2].\n", "\n", - "> Note: This is where you would incorporate prior knowlegde about the parameters you want to infer, e.g., ranges known from literature. \n", - "\n" + "> Note: This is where you would incorporate prior knowlegde about the parameters you want to infer, e.g., ranges known from literature. " ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "num_dim = 3\n", - "prior = utils.BoxUniform(low=-2 * torch.ones(num_dim), high=2 * torch.ones(num_dim))\n", "\n", "def simulator(theta):\n", " # linear gaussian\n", - " return theta + 1.0 + torch.randn_like(theta) * 0.1" + " return theta + 1.0 + torch.randn_like(theta) * 0.1\n", + "\n", + "prior = BoxUniform(low=-2 * torch.ones(num_dim), high=2 * torch.ones(num_dim))" ] }, { @@ -99,7 +102,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -117,22 +120,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Next, we instantiate the inference object. Here, to neural perform posterior estimation (NPE):" + "Next, we instantiate the inference object. In this example, we will use neural perform posterior estimation (NPE):" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "> Note: Single round sequential NPE which we call via SNPE corresponds to NPE. \n", + "> Note: In the `sbi` toolbox, NPE is run by using the `SNPE` (Sequential NPE) class for only one iteration of simulation and training. \n", "\n", - "> Note: This is where you could specify an alternative inference object such as (S)NRE for ratio estimation or (S)NLE for likelihood estimation. Here, you can see [all implemented methods.](16_implemented_methods.ipynb)\n", - "\n" + "> Note: This is where you could specify an alternative inference object such as (S)NRE for ratio estimation or (S)NLE for likelihood estimation. Here, you can see [all implemented methods.](16_implemented_methods.ipynb)" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ @@ -150,13 +152,13 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "319fb75107b34108b08df7045da73a18", + "model_id": "28cefebf703a4b2c8abbaeb0c5c32034", "version_major": 2, "version_minor": 0 }, @@ -166,10 +168,20 @@ }, "metadata": {}, "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "theta.shape torch.Size([2000, 3])\n", + "x.shape torch.Size([2000, 3])\n" + ] } ], "source": [ - "theta, x = simulate_for_sbi(simulator, proposal=prior, num_simulations=2000)" + "theta, x = simulate_for_sbi(simulator, proposal=prior, num_simulations=2000)\n", + "print(\"theta.shape\", theta.shape)\n", + "print(\"x.shape\", x.shape)" ] }, { @@ -181,7 +193,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 12, "metadata": {}, "outputs": [], "source": [ @@ -197,14 +209,14 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - " Neural network successfully converged after 77 epochs." + " Neural network successfully converged after 81 epochs." ] } ], @@ -218,14 +230,14 @@ "source": [ "Finally, we use this _density estimator_ to build the posterior distribution $p(\\theta|x)$, i.e., the distributions over paramters $\\theta$ given observation $x$. \n", "\n", - "Effectively, `build_posterior` acts as a wrapper for the raw _density estimator_ that among other features (which go beyond the scope of this introductory tutorial) allows us to sample parameters $\\theta$ from the posterior via `.sample()`, i.e., parameters that are likely given the observation $x$. \n", + "The `posterior` can then be used to (among other features which go beyond the scope of this introductory tutorial) sample parameters $\\theta$ from the posterior via `.sample()`, i.e., parameters that are likely given the observation $x$. \n", "\n", "We can also get log-probabilities under the posterior via `.log_prob()`, i.e., we can evaluate the likelihood of parameters $\\theta$ given the observation $x$. " ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -261,7 +273,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ @@ -279,13 +291,13 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "2d074bf735e043df8f9154cd787ac4be", + "model_id": "5e7e4586f08d434ba653da3bcb266b38", "version_major": 2, "version_minor": 0 }, @@ -298,7 +310,7 @@ }, { "data": { - "image/png": "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", + "image/png": "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gCnhdaJw1urVq7V8+fLyf3d2dko6Fe9Dhw5p9+7ds271LUnt7e3yfV9Hjhw5bfuRI0d04YUXxjRV/DZs2KCdO3fqnXfe0fz58+MeB5gSVuBwVlNTkxYtWlT+SKfT5XgfPHhQb731ltra2uIeMxapVEpdXV3atWtXeVsURdq1a5dWrFgR42TxsNZqw4YNevXVV7V7924tXLgw7pGAKWMFjpoRBIFuvfVW9fb2aufOnQrDsHy+d+7cuUqlUjFPOLM2btyou+66S1dffbWWLVump59+WsPDw7rnnnviHm3GrV+/Xi+++KJee+01NTU1lf9eNDc3K51OxzwdMDncRoaa8dlnn33ryurtt9/WtddeO7MDVYEtW7boiSee0OHDh7VkyRI988wzp512mC2MMWfd/txzz+nuu++e2WGACiHgAAA4iHPgAAA4iIADAOAgAg4AgIMIOAAADiLgAAA4iIADAOAgAg4AM2R/35AueegN7e8binsU1AACDgAzZCzcez45FvMkqAUEHABmSGum9DjfJ/7pgPoGszFPA9cRcKCGWGv11FNPaeHChWpoaNCaNWs0NMTh2mpRn/TLnw8MF2KcBLWAgAM15MEHH1R3d7e2bdumvXv3qqenR4888kjcY0FS32BW67b3xD0GaggBB2rE+++/r6eeeko7duzQNddco66uLt133336zW9+E/doUGnFnQ1CPXjjn0mSfvyrd7mYDVNCwIEa8eSTT+r666/XVVddVd7W0dGh/v7+GKfCN7VlTr3WloBjKgg4UAPy+bzeeOMN3Xzzzadtz+Vyam5ujmkqANOJgAM1oLe3V9lsVj//+c/V2NhY/vjFL36hSy+9VF988YWuvfZaXXbZZfr+97+vl19+Oe6RAUxRIu4BAEzdJ598okwmo48++ui07T/60Y+0cuVKJRIJPf3001qyZIkOHz6srq4u3XTTTcpkMvEMDGDKCDhQA44fP6729nYtWrSovO3QoUM6ePCgbrnlFn3ve9/T9773PUnShRdeqPb2dn399dcEHHAYh9CBGtDe3q6hoSFZa8vbHn30Ud1000267LLLTvvanp4ehWGoBQsWzPSYACqIFThQA6677jrlcjk9/vjj+su//Eu98MILev311/XBBx+c9nVff/217rzzTv3d3/1dTJMCqBRW4EAN6Ojo0PPPP6/u7m5dfvnl2rdvn959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", "text/plain": [ "
" ] @@ -309,7 +321,7 @@ ], "source": [ "samples = posterior.sample((10000,), x=x_obs)\n", - "_ = analysis.pairplot(samples, limits=[[-2, 2], [-2, 2], [-2, 2]], figsize=(6, 6),labels=[r\"$\\theta_1$\", r\"$\\theta_2$\", r\"$\\theta_3$\"])" + "_ = pairplot(samples, limits=[[-2, 2], [-2, 2], [-2, 2]], figsize=(6, 6),labels=[r\"$\\theta_1$\", r\"$\\theta_2$\", r\"$\\theta_3$\"])" ] }, { @@ -328,13 +340,13 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "27c3d6145e8d4f2495984d33daca6f67", + "model_id": "a3d1719fd43441e3809bae68c87c6429", "version_major": 2, "version_minor": 0 }, @@ -347,7 +359,7 @@ }, { "data": { - "image/png": "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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAfAAAAIjCAYAAAD87kn6AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAsvElEQVR4nO3df3DUdZ7n8de3v92ddH6QBEKihDiyxzq3igNjBAqZcl1l9dbZo3B0nHGq/FnnDFdgaeE5WFfl4k6to7V6nutiwdZWrTIUKueWriPO7a2ChTgH4iSjNe5uIXOrWQYGMJIESPrHt7/fz/3RSRN+xCGdTn/70/18VGUNDcm891voM59vf77fr2OMMQIAAFaJhD0AAACYOAIOAICFCDgAABYi4AAAWIiAAwBgIQIOAICFCDgAABYi4AAAWCga9gBAsf1x5Nthj4Ay91bwSsn+t/j7iN+l0L+PrMABALAQAQcAwEIEHAAACxFwAAAsxCY2nGKM5A3nPo/VSY4T7jwAgHGxAscp3rD041m5j9GQAwDKEgEHAMBCBBwAAAvxHjiAqTF2D4Ux4c0RttHjUM3HAFOCgAOYvLGxdiJjPnVkAiMpqN6AjR6PM/eEmmDM51V6bDApBBxA4UbC7bhuLlQRZ+RzJx8lJwhkjJECI5lAxverKliReGzkk0juuEQiku/njoMk42UlBWd/YRUdIxSGgAMozOiq24mcFm8nHsv92gRSYGSMkeP7khPIGGck5H64s5eS60oa+SEnNvKfXM859UNOYM4+HOYcQQfOQMCRd2gwqVljP59ZH+o8KGNj4u24rpxYVE40KsWichIJKerm4uQHcoyRyXhSNivH9xVIMp5ykaqCVabTkPv3aPT4yHEkLyt5nhQYOem0TDYrBYGMH+TOUgSR6vohBwUh4MjrH/LyAe8f8jRrZqjjoMw5riu5rpxoVE5dnZx4TKY+IW9Gg0w8IvlGTmAkI7lDaTnJjBwvq8jgCZlkUsYPZLJexUfctE+XJAU1Mfl1URnHUSTtK5LK/UATOZGUk0rLZH1peFgmm5UjP3e2osKPDSaHgAMozOjqe/S0eTwmUxtTtj4qv9aVExg5fu5Dklwp9/5vNJoLvyTjR1TpG9yCurgkya+NKlvvykQcuVFHruvI8aNysoEcSU7Gk9Ju7v1xJyKJFTi+HAEHMDGOk4t3PCantkZOba38thb5DXFlmmI6OcuVX+vICSQFUsQ3qu2PKT4YU3TYV8z3cxuyvYycbDZ3ptip3NXm0OyEJClTH1GmyZGJSG7KlZuW3IxR3ecxxQbSiqS83I05Uikp40nJILeDv0reasDEEXAA52803q6bO23eUKdgWp1O/l6DkjMiSrc4GvpKVkr4ujjTr1tPfKTZ3qAOt0/Xm18s0OHB6ZqWnaZYYKSkmzt1PBqpCnXsq67kSB0NffpWrFud/oAOOC16Jb5A/56ZqcZP46o/6ip2MlCtpMjJuJzhpALPk/wg9wMO74fjHAg4gII4bkQmFpWJR+XVReQ1OPIajdwmT99LdevPD26XUe7yZyPpv0z/uf48ulw/P/AfZWJROV5UikRGrhWv3E1bXqPRzdlf6vHhN047Hiu1Wz9s+ab+seFKeScicnzJxKO5YzPyNoOMkWMc3g/HOXErVQAT4kQcOW5Eio2+5x1Tcqaj5AVGmY6M/mTGP+tHvW/LlVFUJv/PiGO0btpP1d58XKZmZEf26PXjFWzOrN/o8cwbZx8PGf1l/5tqb/lCqRmOUs0R+fUxmURcisdO7ezP3wiGpwPidJX9bw6A4nIiuei6rkxNTEFtTF5DVKk2I6dzWF/9ymGtOb7znK1xJBlH+k+zPlJQG5OpiclxHClS2WH6b9p59l3YNPKSI91S84FSM43S0x15DVH5dTGZ2rgUi+ci7kYq/occFIa/FQAKF3FkXOU2ZkUD1bpZNQ6lx/3jjqQL44Onfb2UW9VXqrbkSTnjnP52jNFsfzB3DF3JREZu8MJqG+eBgAM4b07EGVk15/7T4fhGkaxRxJMy6aiOpep0ONE47tcbSYfTTbnrw/3cndpOffPKjNZn8RaZcf5/M46j37jNcnzJ8ZU7QPnfPOP4AGcg4AAmJhKR4zgjN2kxuUvFMo6ClKsTqRq92/l7kjm9RVLu146R3vx8geSbc2/KqsCI//30r33J8TB6uW5+LuCBTq3UTe74mJEP4FwIOIDCGCP5RhEvUCQjOUlXQ8M1+mV0tn565SUykgIn95GVo0CO/iyzXIeGW+QEgRw/qIo4fejP0p9dtExGTv54+I4jI+mJ3/9D/Xt2ptyUkzuGWSPHD06dnQgq9/I6TB6XkSHv2HAm7BFgCWOMnKyvSNpTdCiq+kNxuRlX6YE6bc98VbsSv6dn5w7o2/2/0qz0Cf325Az970Nf15HjLWroH5aTzOTuB+77uTuPBeOsyCuA9y/T9L+cq/Te9Ev0vcgHmp0dVK9a9HL8Ch3oa1X9wYhqvzCKnwxUcyytyMmUnOGUgkwmd49036/o6+RROAIOSdLBgaTuf+mX6nHDngRlLwhyp7qzWcnLyh3OKHGsRk7gyk05GnZqlK2pUW+2Qf8z3SnHkxoOGtX/1lMinVHkZO6e6LmHeQQVfyOX+t/k/tk3bab+cvqfyLhSNCm5SUf1GSnxuVHNcV/Rk74iQ2k5wymZVDoX7sCMPE9dFfsDDgpHwCFJ6h/KKOn5IzesBs5tdKXsGCOT9XMhzriKDvmqcSXHRJRNRBTEc5uy3IwU8aT4yUDRYV+RdFZOOrf6NtlsVZxCj58YeS66yW1aMxEpmpLclDl1bE76ig5nc7dQzfpS4J9+bKrgOGHiCDiAiRk95Z1KSYEvJVOq8bKqqYnLr4+rtr9Wfk0kv0PdyZrcqeHBYTleVubksEw6LTNy+rySV9+SNO3TpCQpqHGVrXNzTyPL5vYOOL5RdDCtyHA6d2xODOV+sMlmc19c4ccGk0PAAZy/kWdVO5FA8jyZIJDjZnPPtY66ctMJ1UQcBTFXjh/kn0gWGRyWM5TMhSmdlslkcjusq+D0cLR/WJJkYq6iJ0aeBx7k4q1soMhQUsp4uWPjZXLPBB85fZ77QiKOcyPgACZmJOLyc4/BNMaM3M/clROJyD0eUyQakQLJGQmRM5ySSadzD+fIZnORMkFVxMkZTuX+6boyUffUk9dGduIrlZYZfXDJyMY+Y8zIca7cH2wweQQcwPnLX6fs565rHgmw8bJSxJGTSstJpeRE3Nzv+bnfz++oDsaEqUoekxkcG5Ck3A1w3JFNJqPHLTAjP9CMPMhl5J8mMLm3J4AvQcABFGZ0JS5J8nNPzRpdMUYiud3qIyvN0RX3aTvOqyDekmQyI5dnjrmDnaT8Nd75sxHSmLcUKv/MBCaPgENS7jIyYEKMkXQqNMZXbqt1dszd1EaCZM7crFYl8ZZ0alUtnf1QkrGnyav1+KBgBBw6OJDUDzZ3KxH2ILDPmaExvkyGEI2V31EOFBkBh/qHuAMbiohoAyXBvdBxTtxWFQDKGwFH3t+vvCr/+f0v/ZL3xQGgjBFwnFPS8zm1DgBljIADAGAhAg4AgIUIOAAAFiLgAABYiIADAGAhAo5xfcEudAAoWwQc55SIuVq5uZtrwQGgTBFwnNNf3fZ1rgUHgDJGwHFO0+viYY8AAPgSBBwAAAsRcLBZDQAsRMCr3MGBpFZu7lYi5qqlPhb2OACA88TzwKtc/1BGSc/XpnsWaVZTIuxxAADniRU4JEkz6tm0BgA2IeAAAFiIgAMAYCECDgCAhQg4AAAWIuAAAFiIgAMAYCECDgCAhQg4AAAWIuAAAFiIgFc5HmQCAHYi4FXs9AeZcCtVALAJAa9iow8y2Xh7lzqaeZAJANiEgIMHmQCAhQg4AAAWIuAAAFiIgAMAYCECDgCAhQg4AAAWIuAAAFiIgONLcac2AChPBBzn1FIfUyLmauXmbh0cSIY9DgDgDAQc5zSrKaGNt3cp6fnqZxUOAGWHgGNc3KENAMoXAQcAwEIEHAAACxFwAAAsRMDxO3EpGQCUHwKOcbXUx7mUDADKFAHHuDqauZQMAMoVAceX4lIyAChPBLyK8d42ANiLgFepgwNJrdzcrUTMVQurbACwTjTsARCO/qGMkp6vTfcsUkdzIuxxAAATxAq8yvEeNwDYiYADAGAhAg4AgIUIOAAAFiLgAABYiIADAGAhAg4AgIUIOAAAFiLgAABYiIADAGAhAg4AgIUIOM4LTy4DgPJCwPGlWurjSsRcrdzcrYMDybDHAQCMIOD4Uh3NCW28vUtJz1c/q3AAKBsEHL8TTywDgPJDwAEAsBABBwDAQgQcAAALEfAqxWVhAGA3Al6FDg4ktXJztxIxVy1sUAMAK0XDHgCl1z+UUdLztemeRepoToQ9DgCgAKzAqxiXhwGAvQg4AAAWIuAAAFiIgAMAYCECDgCAhQg4AAAWIuAAAFiIgAMAYCECDgCAhQh4FSr0PujcPx0AygcBrzKF3Ae9pT6uRMzVys3dOjiQnOIJAQDng4BXmdH7oG+8veu874Pe0ZzQxtu7lPR89bMKB4CyQMCr1ETvg8590wGgvBBwAAAsRMABALAQAQcAwEIEHAAACxFwAAAsRMABALAQAa8yk72bGndjA4DyQMCrSCF3YRvF3dgAoLwQ8CpSyF3YRnE3NgAoLwS8ChV6VzXuxgYA5YOAAwBgIQIOAICFCHgVYQc5AFQOAl4lJrMDHQBQfqJhD4DSGN2BvumeRRPegX4mVvIAED5W4FViNLqT2UnOteAAUD4IeBUo1unzsdeC//roySJOCACYKAJeBX599GTBN3A509y2hvwq/P/882FW4gAQEgJe4T4+OJhffc9ta5j09+toTuiVlUuU9Hz9YHO3lj6xg4gDQAgIeAX7198e17c37pYkvbJyyaRX36PmdTRp0z2L8r/+4NNjOno8VZTvDQA4P44xxoQ9BAAAmBhW4AAAWIiAAwBgIQIOAICFCDgAABYi4AAAWGjS90I3xujEiRPFmAUVrrGxUY7jhD0GAFSESQe8r69PbW1txZgFFe7o0aOaOXNm2GMAQEWYdMDj8dy9tQ8cOKBp06ZNeiDbHT9+XJ2dnRyPMUaPyejfFQDA5E064KOnRKdNm0awxuB4nI3T5wBQPGxiAwDAQgQcAAALTTrgNTU1WrdunWpqaooxj/U4HmfjmABA8fEwEwAALMQpdAAALETAAQCwEAEHAMBCBBwAAAtNKuCe52nt2rW6/PLLVV9fr1mzZumOO+7QoUOHijWfdZ577jldfPHFqq2t1eLFi7V3796wRwrF448/roULF6qxsVFtbW1asWKF9u3bF/ZYAFAxJhXw4eFh9fT06JFHHlFPT49effVV7du3T8uXLy/WfFbZunWr1qxZo3Xr1qmnp0fz58/XDTfcoKNHj4Y9Wsnt3LlTq1at0p49e/TWW2/J8zxdf/31GhoaCns0AKgIRb+M7IMPPtCiRYvU29uriy66qJjfuuwtXrxYCxcu1Pr16yVJQRCos7NT9913nx5++OGQpwvX559/rra2Nu3cuVNXX3112OMAgPWK/h744OCgHMdRc3Nzsb91WctkMuru7tayZcvyr0UiES1btky7d+8OcbLyMDg4KEmaPn16yJMAQGUoasBTqZTWrl2r2267reoe5NHX1yff99Xe3n7a6+3t7Tp8+HBIU5WHIAj0wAMPaOnSpZo3b17Y4wBARZhQwLds2aKGhob8x65du/K/53mebr31VhljtGHDhqIPCnutWrVKH3/8sV5++eWwRwGAijGhx4kuX75cixcvzv+6o6ND0ql49/b2aseOHVW3+pak1tZWua6rI0eOnPb6kSNHdMEFF4Q0VfhWr16tbdu26d1339Xs2bPDHgcAKsaEVuCNjY2aO3du/iORSOTjvX//fr399tuaMWPGVM1a1uLxuLq6urR9+/b8a0EQaPv27VqyZEmIk4XDGKPVq1frtdde044dOzRnzpywRwKAijKhFfiZPM/TLbfcop6eHm3btk2+7+ff750+fbri8XhRhrTFmjVrdOedd+rKK6/UokWL9Mwzz2hoaEh333132KOV3KpVq/Tiiy/q9ddfV2NjY/7vRVNTkxKJRMjTAYD9JnUZ2WeffTbuyuqdd97RNddcU+i3ttb69ev15JNP6vDhw1qwYIGeffbZ0952qBaO45zz9eeff1533XVXaYcBgArE40QBYAr9ceTbYY+AMvdW8EpBX8e90AEAsBABBwDAQgQcAAALTWoXOgCMyxjJG859HquTxtnYCKAwrMABTA1vWPrxrNzHaMgBFA0BBwDAQgQcAAALEXAAACxEwAEAsBABnyRjjJ5++mnNmTNHdXV1WrFihQYHB8MeCwBQ4Qj4JD300EPasGGDNm3apF27dqm7u1uPPvpo2GMBACocAZ+E999/X08//bS2bt2qq6++Wl1dXbr33nv1s5/9LOzRAAAVjoBPwlNPPaXrrrtOV1xxRf619vZ29fX1hTgVUB52/Zp/D4CpRMALlE6n9eabb+qmm2467fVUKqWmpqaQpgLKw8GBpL7/k1+EPQZQ0Qh4gXp6epRMJvXggw+qoaEh//HDH/5Ql1xyiSTppptuUktLi2655ZaQpwVKq38oE/YIQMUj4AX65JNPVF9fr1/96lf68MMP8x8XX3yxli5dKkm6//779ZOf/CTkSQEAlYiAF+j48eNqbW3V3Llz8x+xWEz79+/XzTffLEm65ppr1NjYGPKkAIBKRMAL1NraqsHBQRlj8q899thjuvHGG3XppZeGOBkAoBrwONECXXvttUqlUnriiSf03e9+V1u2bNEbb7yhvXv3hj0aAKAKsAIvUHt7u1544QVt2LBBl112mfbs2aP33ntPnZ2dYY8GAKgCrMAn4Tvf+Y6+853vhD0GAKAKEfAptGzZMn300UcaGhrS7Nmz9corr2jJkiVhjwVMuS+4jAyYcgR8Cr399tthjwCU3MGBpFZu7g57DKDi8R44gKLqH8oo6fl6YNklYY8CVDRW4ACmxPS6WNgjlB/HOfX5mEtQgUKwAgcwJVrq4/nPDw0mQ5wkZI5z6kOSnMjZr4/9feA8sQIHMCUubErkP+8f8jRrZojDhMiJnuNMhHFkgtwK3Inkwm0CIxm/lKPBcgQcAKZS5Bwr6yAiJxKc/brjcGod542AA8AUijTUj3ziyom6kiST9aXAlwIjmUAKjIzvy6TTIyvxgJDjdyLgADCVWppy/4zH5NfFJceRk/bkpDzJGDleVsr6kufl/lw2K/m+jD9yOp2QYxwEHACmUjz3HniQiMlPxKRI7qx6xHEk3+SC7jhyJMl1c/F2IpIzshIHxkHAAWAKDX8ltwL3GiJKN0dkIpKbkmJJo0jWqKbfkzvkKZLyFDFGSqflZDwFydSpzW4Bm9twNgIOAFPoxEVRGUe6sPmYljf2qMMM6FDQrFezV+g36Rmq/21Etf1RRYfiqvF8OcOujJuWk81KQSBlszKGzW04GwEHgCmUaXS0wv2lfhT/qUxaciQZSffq/+q/1y3XPyUWKJt05GQjMjFXjuvKiURkXDcXcGAcBBwAplDr7x/Wjw7+VK5OX0EbST/2f6pfdF6kvtgMxRMRxYYTcl1XkYgjJ5XOfYUxks8pdJyNO7EBwBS6L7ort+w+gzPyf76V+IVSrVJqhqPMtJj8aXGZuhopGpXjRuRwhzaMg4ADKCoeJXq6C9Mnxn3/2jFGnf6ATMTIOJLhv8iYAP66ACia0UeJJmKuWup5mIkk9SXqxr3PuXGk38SaFERz8XZ8yckaOdng1A1eRuPPShxnIOAAimb0UaIbb+/SrDH3Qq9m73Z+RY4xOnMNbpS71PuVlstz/yV2JCcwcvyRu7CZMfEGzoGAAyi6GWOeRFbtPgi+oid+/w9lJAXOqQ8j6dk/uEr/lmpX9KSj6LAUyQS51XfWz21cC3KrcOBc2IUOAFOo9/+16W/Upn/6yld1R/oX6vCOq9dt0Uv1X9e/nZyput6o6g4b1ZwIFDueUWQ4IyeVUeBlZbJZ7saGcRFwAJhCsX5XcqTe2gv05w1/ItUaKRORczyiaNJRzUAu3tGhQJGMn1t9B8HICtzkHzsKnImAAyia8XagHxuu3p3p9Ydym8/8GkfZuoiMI0W83IebkRJ9vmr6s3JTvpzhtJx0JvdUMjPmXui8F45zIOAAiuL0HehxSadO/d7/0i/1xoNt6miuvo1trR8lJUlBLCK/JpLbrOYbRTyjiB8oOpiWk8zI8bIyQ8MyGU8mk8k91CTggSYYHwEHUBSjO9A33bMoF+rMUP73kp6v/qFMVQY8OpgLuHFdRWtyzwN3siOb1YIgF++Mlzt1nvFy73sTb5wHAg6gqNiBfrrI4MgPMpGITHQk4H4u3jJGSmdGoh3IpNNSEMj4Y8LN6XOMg4ADwBQKjg3kPx+9LWpgzKmAB0Hu/e7AyIze85yVN84DAQeAqeR5+U9NZOTWG6PRlnLXeZuAU+aYMAIOAFPIZLPnfn3s5WHsNkcBCDgATKHxAg5MFrdSBQDAQgQcAAALEXAAACxEwAEAsBABBwDAQgQcAAALEXAAACxEwAEAsBABB1AS4z0rHEBhCDiAKZeIuVq5uVsHB5JhjwJUDAIOYMr91W1fzz8THEBxEHAAU256Hc8IB4qNgAMAYCECDgCAhQg4AAAWIuAAioLLxIDSIuAAJu3gQFIrN3crEXPVUs+GNaAUomEPAMB+/UMZJT1fm+5ZpI7mRNjjAFWBFTiAopnB6hsoGQIOAICFCDgAABYi4AAAWIiAAwBgIQIOAICFCDgAABYi4AAAWIiAAwBgIQIOAICFCDgAABYi4AAAWIiAAwBgIQIOoGR4ZjhQPAQcwJRrqY8pEXO1cnO3Dg4kwx4HqAgEHMCUm9WU0Mbbu5T0fPWzCgeKgoADKAmeFQ4UFwEHAMBCBBwAAAsRcACTxu5yoPQIOIBJOTiQ1MrN3UrEXLXwPjdQMtGwBwBgt/6hjJKer033LFJHcyLscYCqwQocQFGwyxwoLQIOAICFCDgAABYi4AAAWIiAAwBgIQIOAICFCDgAABYi4AAAWIiAAwBgIQIOAICFCDgAABYi4AAAWIiAAwBgIQIOAICFCDiAkvpiKBP2CEBFIOAASqKlPq5EzNXKzd06OJAMexzAegQcQEl0NCe08fYuJT1f/azCgUkj4ABKZkZ9POwRgIpBwAEAsBABB1BybGQDJo+AA5iUicSYjWxA8RBwAAU7OJDUys3dSsRctZzH+9tsZAOKJxr2AADs1T+UUdLztemeRepoTpzX17CRDSgOVuAAJo0oA6VHwAEAsBABB1AwdpMD4SHgAAoy0Q1sAIqLTWwAClLIBjYAxcMKHMCksIENCAcBBwDAQgQcAAALEXAAoWAHOzA5BBxASXE/dKA4CDiAkuJ+6EBxEHAAJcfOdWDyCDgAABYi4AAKwiY0IFwEHMCEcRtVIHzcShXAhHEbVSB8rMABFIzNaEB4CDgAABYi4AAmrFgb2NgIBxSOgAOYkGJsYONubMDkEXAAEzK6gW3j7V0Fb2DjbmzA5BFwAAWZ7AY2NsABk0PAAYSK98GBwhBwAOft4EBSvz56sijfa+z74Ds/+Zz3woEJ4kYuAH6no8dT+tfDJ7Ryc7eSnl+UO7B1NCf0ysol+vbG3brz7/YqEXO18fYuzaiPq62xRm3Taos0PVCZHGOMCXsIAAAwMZxCBwDAQgQcAAALEXAAACxEwAEAsBABBwDAQlxGhopijNGJEyfCHgMWaGxslOM4YY8BFIyAo6L09fWpra0t7DFggaNHj2rmzJlhjwEUjICjosTjuZuLHDhwQNOmTQt5mvAdP35cnZ2dHI8xRo/J6N8VwFYEHBVl9JTotGnTCNYYHI+zcfoctmMTGwAAFiLgAABYiICjotTU1GjdunWqqakJe5SywPE4G8cElYKHmQAAYCFW4AAAWIiAAwBgIQIOAICFCDgAABYi4KgYnudp7dq1uvzyy1VfX69Zs2bpjjvu0KFDh8IeLTTPPfecLr74YtXW1mrx4sXau3dv2COF4vHHH9fChQvV2NiotrY2rVixQvv27Qt7LGBSCDgqxvDwsHp6evTII4+op6dHr776qvbt26fly5eHPVootm7dqjVr1mjdunXq6enR/PnzdcMNN+jo0aNhj1ZyO3fu1KpVq7Rnzx699dZb8jxP119/vYaGhsIeDSgYl5Ghon3wwQdatGiRent7ddFFF4U9TkktXrxYCxcu1Pr16yVJQRCos7NT9913nx5++OGQpwvX559/rra2Nu3cuVNXX3112OMABWEFjoo2ODgox3HU3Nwc9igllclk1N3drWXLluVfi0QiWrZsmXbv3h3iZOVhcHBQkjR9+vSQJwEKR8BRsVKplNauXavbbrut6h7k0dfXJ9/31d7eftrr7e3tOnz4cEhTlYcgCPTAAw9o6dKlmjdvXtjjAAUj4LDWli1b1NDQkP/YtWtX/vc8z9Ott94qY4w2bNgQ4pQoN6tWrdLHH3+sl19+OexRgEnhcaKw1vLly7V48eL8rzs6OiSdindvb6927NhRdatvSWptbZXrujpy5Mhprx85ckQXXHBBSFOFb/Xq1dq2bZveffddzZ49O+xxgElhBQ5rNTY2au7cufmPRCKRj/f+/fv19ttva8aMGWGPGYp4PK6uri5t3749/1oQBNq+fbuWLFkS4mThMMZo9erVeu2117Rjxw7NmTMn7JGASWMFjorheZ5uueUW9fT0aNu2bfJ9P/9+7/Tp0xWPx0OesLTWrFmjO++8U1deeaUWLVqkZ555RkNDQ7r77rvDHq3kVq1apRdffFGvv/66Ghsb838vmpqalEgkQp4OKAyXkaFifPbZZ+OurN555x1dc801pR2oDKxfv15PPvmkDh8+rAULFujZZ5897W2HauE4zjlff/7553XXXXeVdhigSAg4AAAW4j1wAAAsRMABALAQAQcAwEIEHAAAC3EZGQCUgjGSN5z7PFYnjbMzHjhfrMABoBS8YenHs3IfoyEHJoGAAwBgIQIOAICFCDgAABYi4EAFMcbo6aef1pw5c1RXV6cVK1ZocHAw7LEATAECDlSQhx56SBs2bNCmTZu0a9cudXd369FHHw17LABTgIADFeL999/X008/ra1bt+rqq69WV1eX7r33Xv3sZz8LezQAU4CAAxXiqaee0nXXXacrrrgi/1p7e7v6+vpCnArn8gd/9o/6+CBvbWByCDhQAdLptN58803ddNNNp72eSqXU1NQU0lT4MgQck0XAgQrQ09OjZDKpBx98UA0NDfmPH/7wh7rkkkt04MABXXPNNbr00kv1ta99Ta+88krYIwOYJG6lClSATz75RPX19frwww9Pe/2b3/ymli5dqmg0qmeeeUYLFizQ4cOH1dXVpRtvvFH19fXhDAxg0gg4UAGOHz+u1tZWzZ07N/9ab2+v9u/fr5tvvlkXXnihLrzwQknSBRdcoNbWVh07doyAAxbjFDpQAVpbWzU4OChjTP61xx57TDfeeKMuvfTS0/5sd3e3fN9XZ2dnqccEUESswIEKcO211yqVSumJJ57Qd7/7XW3ZskVvvPGG9u7de9qfO3bsmO644w797d/+bUiTAigWVuBABWhvb9cLL7ygDRs26LLLLtOePXv03nvvnbbKTqfTWrFihR5++GFdddVVIU4LSfpiKBP2CLCcY8aecwNQkYwx+t73vqevfvWr3JktLJmh3KNEJf1B6u+UVK1+/vC16mhOhDwYbMUKHKgCP//5z7V161b9wz/8gxYsWKAFCxboV7/6VdhjVb1+VuGYBN4DB6rAN77xDQVBEPYYAIqIFTgAlNh//cP/EPYIqAAEHABK7MKm2rBHQAUg4AAAWIiAA0AJHBpM5j9vqY+HOAkqBQEHgBLoH/LGfJ7bfc4TyTAZBBwASuxffntckvTxIQKOwhFwACixSy+cJkmaN4tntaNwBBwASuzSkXDP6yDgKBwBBwDAQgQcAAALEXAAKIFjw9z3HMVFwAFgih0cSOr+l34Z9hioMAQcAKZY/1BGSc8PewxUGAIOAICFCDgAABYi4AAAWIiAAwBgIQIOACH5079+jweaoGAEHABCRMBRKAIOAICFCDgAlFhLfWzM5/EQJ4HNCDgAlNispoT+5vYuSVJHcyLkaWArAg4AISDcmCwCDgCAhQg4AAAWIuAAAFiIgAMAYCECDgCAhQg4AAAWIuAAMIU+PjioP/3r98b9/S+GMiWcBpWEgAPAFBrvXuct9XElYq5Wbu7WwYFkiadCJSDgABCCjuaENt7epaTnq59VOApAwAEgJDO4DzomgYADAGAhAg4AgIUIOABMIR4XiqlCwAFgCo0+deyvb/t6yJOg0hBwACiBC5t4fCiKi4ADQMi4mQsKQcABICTczAWTQcABICTczAWTQcABYAr9rtPj3MwFhSLgADCFVm7uViLmqqU+FvYoqDDRsAcAgEqW9HxtumeRZrELHUXGChwAphinyTEVCDgAABYi4AAAWIiAAwBgIQIOAICFCDgAABYi4AAAWIiAAwBgIQIOAICFCDgAABYi4AAAWIiAAwBgIQIOAGXgdz12FDgTAQeAELXUx5WIuVq5uVsHB5JhjwOLEHAACFFHc0Ibb+9S0vPVzyocE0DAASBkPG4UhSDgAABYiIADAGAhAg4AgIUIOAAAFiLgAABYiIADAGAhAg4AgIUIOAAAFiLgAABYiIADAGAhAg4AgIUIOAAAFiLgAABYiIADAGAhAg4AZeILngeOCSDgABCylvq4EjFXKzd36+BAMuxxYAkCDgAh62hOaOPtXUp6vvpZheM8EXAAKAMz6uNhjwDLEHAAACxEwAEAsBABBwDAQgQcAAALEXAAACxEwAGgjHAzF5wvAg4AZYCbuWCiCDgAlAFu5oKJIuAAUCa4mQsmgoADAGAhAg4AgIUIOAAAFiLgAABYiIADAGAhAg4AgIUIOAAAFiLgAABYiIADAGAhAg4AgIUIOAAAFiLgAFBmeKQozgcBB4AyMfpI0Tv/bq8++OxY2OOgzBFwACgTHc0JrfvPl0qSvr1xN88Fx5ci4ABQpnguOL4MAQeAMjKvoynsEWAJAg4AZWReR5O23feNsMeABQg4AAAWIuAAAFiIgAMAYCECDgBlisvI8GUIOACUmdFw/2BzNxHHuAg4AJSZjuZE/nOuBcd4CDgAlBkuJcP5IOAAUMYODiQ5jY5zIuAAUMZ+sLlby/7HTiKOsxBwAChDo08mk6Sk5/NeOM4SDXsAAMDZOpoTevvBP9THBwf1g83d+vXRk/nfa2usUdu02hCnQzlwjDEm7CEAAMDEcAodAAALEXAAACxEwAEAsBABBwDAQgQcAAALcRkZAEwRY4xOnDgR9hiwQGNjoxzHmdDXEHAAmCJ9fX1qa2sLewxY4OjRo5o5c+aEvoaAA8AUicfjkqQDBw5o2rRpIU8TvuPHj6uzs5PjMcboMRn9uzIRBBwApsjoKdFp06YRrDE4Hmeb6OlziU1sAABYiYADAGAhAg4AU6Smpkbr1q1TTU1N2KOUBY7H2SZzTHiYCQAAFmIFDgCAhQg4AAAWIuAAAFiIgAMAYCECDgCAhQg4AEwBz/O0du1aXX755aqvr9esWbN0xx136NChQ2GPFprnnntOF198sWpra7V48WLt3bs37JFC8fjjj2vhwoVqbGxUW1ubVqxYoX379k34+xBwAJgCw8PD6unp0SOPPKKenh69+uqr2rdvn5YvXx72aKHYunWr1qxZo3Xr1qmnp0fz58/XDTfcoKNHj4Y9Wsnt3LlTq1at0p49e/TWW2/J8zxdf/31GhoamtD34TpwACiRDz74QIsWLVJvb68uuuiisMcpqcWLF2vhwoVav369JCkIAnV2duq+++7Tww8/HPJ04fr888/V1tamnTt36uqrrz7vr2MFDgAlMjg4KMdx1NzcHPYoJZXJZNTd3a1ly5blX4tEIlq2bJl2794d4mTlYXBwUJI0ffr0CX0dAQeAEkilUlq7dq1uu+22qnsSV19fn3zfV3t7+2mvt7e36/DhwyFNVR6CINADDzygpUuXat68eRP6WgIOAEWwZcsWNTQ05D927dqV/z3P83TrrbfKGKMNGzaEOCXKzapVq/Txxx/r5ZdfnvDX8jxwACiC5cuXa/Hixflfd3R0SDoV797eXu3YsaPqVt+S1NraKtd1deTIkdNeP3LkiC644IKQpgrf6tWrtW3bNr377ruaPXv2hL+eFTgAFEFjY6Pmzp2b/0gkEvl479+/X2+//bZmzJgR9pihiMfj6urq0vbt2/OvBUGg7du3a8mSJSFOFg5jjFavXq3XXntNO3bs0Jw5cwr6PqzAAWAKeJ6nW265RT09Pdq2bZt838+/3zt9+nTF4/GQJyytNWvW6M4779SVV16pRYsW6ZlnntHQ0JDuvvvusEcruVWrVunFF1/U66+/rsbGxvzfi6amJiUSifP+PlxGBgBT4LPPPht3ZfXOO+/ommuuKe1AZWD9+vV68skndfjwYS1YsEDPPvvsaW87VAvHcc75+vPPP6+77rrr/L8PAQcAwD68Bw4AgIUIOAAAFiLgAABYiIADAGAhAg4AgIUIOAAAFiLgAABYiIADAGAhAg4AgIUIOABgShhj9PTTT2vOnDmqq6vTihUrNDg4GPZYFYOAAwCmxEMPPaQNGzZo06ZN2rVrl7q7u/Xoo4+GPVbF4F7oAICie//997VkyRL94he/0BVXXCFJ+tGPfqQtW7Zo3759IU9XGViBAwCK7qmnntJ1112Xj7cktbe3q6+vL8SpKgsBBwAUVTqd1ptvvqmbbrrptNdTqZSamppCmqrycAodAFBUu3fv1lVXXaXa2lq5rpt/3fM8/dEf/ZFefvllLVu2TNlsVtlsVvfff7/uvffeECe2UzTsAQAAleWTTz5RfX29Pvzww9Ne/+Y3v6mlS5eqsbFR7777rurq6jQ0NKR58+bpW9/6lmbMmBHOwJYi4ACAojp+/LhaW1s1d+7c/Gu9vb3av3+/br75Zrmuq7q6Okm50+3GGHEyeOJ4DxwAUFStra0aHBw8LcqPPfaYbrzxRl166aWSpIGBAc2fP1+zZ8/WQw89pNbW1rDGtRYBBwAU1bXXXqtUKqUnnnhCn376qf7iL/5Cb7zxhjZs2JD/M83Nzfroo4/06aef6sUXX9SRI0dCnNhOBBwAUFTt7e164YUXtGHDBl122WXas2eP3nvvPXV2dp7zz86fP1+7du0KYVK7sQsdAFBSR44cUV1dnRobGzU4OKilS5fqpZde0uWXXx72aFZhExsAoKR6e3v1/e9/P7957b777iPeBWAFDgCAhXgPHAAACxFwAAAsRMABALAQAQcAwEIEHAAACxFwAAAsRMABALAQAQcAwEIEHAAACxFwAAAsRMABALDQ/wc/ipEkQKIhtgAAAABJRU5ErkJggg==", "text/plain": [ "
" ] @@ -358,7 +370,7 @@ ], "source": [ "samples = posterior.sample((10000,), x=x_obs)\n", - "_ = analysis.pairplot(samples, points=theta_true, limits=[[-2, 2], [-2, 2], [-2, 2]], figsize=(6, 6), labels=[r\"$\\theta_1$\", r\"$\\theta_2$\", r\"$\\theta_3$\"])" + "_ = pairplot(samples, points=theta_true, limits=[[-2, 2], [-2, 2], [-2, 2]], figsize=(6, 6), labels=[r\"$\\theta_1$\", r\"$\\theta_2$\", r\"$\\theta_3$\"])" ] }, { @@ -372,7 +384,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 20, "metadata": {}, "outputs": [], "source": [ @@ -382,16 +394,16 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "high for true theta : tensor([2.0030])\n", - "low for different theta : tensor([-142.0334])\n", - "range of posterior samples: min: tensor(-8.5509) max : tensor(4.1429)\n" + "high for true theta : tensor([3.7909])\n", + "low for different theta : tensor([-326.5020])\n", + "range of posterior samples: min: tensor(-8.1930) max : tensor(4.0474)\n" ] } ], @@ -411,18 +423,15 @@ "source": [ "## Next steps\n", "\n", - "For `sbi` _contributers_, we recommend directly heading over to [Inferring parameters for multiple observations ](01_gaussian_amortized.ipynb) which introduces the concept of amortization. \n", - "\n", - "\n", - "For _users_ and `sbi` beginners, we recommend going through [the example for a scientific simulator from neuroscience](../examples/00_HH_simulator.ipynb) to see a scientific use case.\n", + "To learn more about the capabilities of `sbi`, you can head over to the tutorial on [inferring parameters for multiple observations ](https://sbi-dev.github.io/sbi/tutorial/01_gaussian_amortized/) which introduces the concept of amortization. \n", "\n", - "Alternatively, also head over to [Inferring parameters for multiple observations ](01_gaussian_amortized.ipynb) which introduces the concept of amortization. " + "Alternatively, for an example with an __actual__ simulator, you can read our [example for a scientific simulator from neuroscience](https://sbi-dev.github.io/sbi/examples/00_HH_simulator/)." ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -436,7 +445,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.18" + "version": "3.10.13" } }, "nbformat": 4, diff --git a/tutorials/01_gaussian_amortized.ipynb b/tutorials/01_gaussian_amortized.ipynb index 69f798783..79c8d9911 100644 --- a/tutorials/01_gaussian_amortized.ipynb +++ b/tutorials/01_gaussian_amortized.ipynb @@ -258,14 +258,14 @@ "source": [ "# Next steps\n", "\n", - "Now that you got familiar with amortization, we recommend checking out \n", - "[inferring parameters for a single observation ](03_multiround_inference.ipynb) which introduces the concept of multi round inference for a single observation to be more sampling efficient." + "Now that you got familiar with amortization and are probably good to go and have a first shot at applying `sbi` to your own inference problem. If you want to learn more, we recommend checking out our tutorial on\n", + "[multiround inference ](03_multiround_inference.ipynb) which aims to make inference for a single observation more sampling efficient." ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -279,7 +279,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.18" + "version": "3.10.13" } }, "nbformat": 4, From 81ce2c9623bd3f5ee8b7e3acc7bc8f6646f6987b Mon Sep 17 00:00:00 2001 From: michaeldeistler Date: Wed, 10 Apr 2024 09:10:20 +0200 Subject: [PATCH 39/53] Fix circular imports --- sbi/analysis/conditional_density.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sbi/analysis/conditional_density.py b/sbi/analysis/conditional_density.py index 6d8d1ca44..f672ef3b0 100644 --- a/sbi/analysis/conditional_density.py +++ b/sbi/analysis/conditional_density.py @@ -10,7 +10,6 @@ from torch import Tensor from torch.distributions import Distribution -from sbi.neural_nets.density_estimators.nflows_flow import NFlowsFlow from sbi.sbi_types import Shape, TorchTransform from sbi.utils.conditional_density_utils import ( ConditionedPotential, @@ -186,7 +185,7 @@ def conditional_corrcoeff( class ConditionedMDN: def __init__( self, - mdn: NFlowsFlow, + mdn, x_o: Tensor, condition: Tensor, dims_to_sample: List[int], @@ -194,8 +193,9 @@ def __init__( r"""Class that can sample and evaluate a conditional mixture-of-gaussians. Args: - mdn: Mixture density network that models $p(\theta|x). We use the normflows - implementation of MDNs. + mdn Mixture density network that models $p(\theta|x). We use the normflows + implementation of MDNs. Type is `NFlowsFlow`, type hint removed to + avoid circular import, see #1140. x_o: The datapoint at which the `net` is evaluated. condition: Parameter set that all dimensions not specified in `dims_to_sample` will be fixed to. Should contain dim_theta elements, From 0b5f9313f12c9e06b8051e83e5efa58dc7d7f4a7 Mon Sep 17 00:00:00 2001 From: Jan Date: Fri, 12 Apr 2024 12:09:48 +0200 Subject: [PATCH 40/53] fix #1047: process_device will return input when device is working. (#1143) --- tests/torchutils_test.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/tests/torchutils_test.py b/tests/torchutils_test.py index 6e041fe26..ec37c7318 100644 --- a/tests/torchutils_test.py +++ b/tests/torchutils_test.py @@ -215,10 +215,8 @@ def test_process_device(device_input: str) -> None: elif torch.backends.mps.is_available(): assert device_output == "mps:0" - if device_input == "cuda" and torch.cuda.is_available(): - assert device_output == "cuda:0" - if device_input == "cuda:0" and torch.cuda.is_available(): - assert device_output == "cuda:0" + if device_input.startswith("cuda") and torch.cuda.is_available(): + assert device_output == device_input if device_input == "mps" and torch.backends.mps.is_available(): assert device_output == "mps" From f0aa0f972954067e0dafba8364c109957e3a738b Mon Sep 17 00:00:00 2001 From: michaeldeistler Date: Tue, 9 Apr 2024 18:27:48 +0200 Subject: [PATCH 41/53] Give all DensityEstimators an input_shape --- sbi/inference/abc/mcabc.py | 2 +- sbi/inference/abc/smcabc.py | 2 +- sbi/inference/posteriors/base_posterior.py | 15 +++++++--- sbi/inference/posteriors/direct_posterior.py | 24 +++++++--------- .../posteriors/ensemble_posterior.py | 6 ++-- .../posteriors/importance_posterior.py | 3 +- sbi/inference/posteriors/mcmc_posterior.py | 3 +- .../posteriors/rejection_posterior.py | 3 +- sbi/inference/posteriors/vi_posterior.py | 3 +- sbi/inference/snle/mnle.py | 9 +++--- sbi/inference/snle/snle_base.py | 14 ++++------ sbi/inference/snpe/snpe_a.py | 4 +-- sbi/inference/snpe/snpe_base.py | 18 ++++++------ sbi/inference/snpe/snpe_c.py | 8 ++++-- sbi/inference/snre/snre_base.py | 3 -- sbi/neural_nets/categorial.py | 16 ++++++----- sbi/neural_nets/density_estimators/base.py | 21 ++++++++------ .../density_estimators/categorical_net.py | 8 ++++-- .../mixed_density_estimator.py | 7 ++++- .../density_estimators/nflows_flow.py | 21 ++++++++++---- .../density_estimators/zuko_flow.py | 16 ++++++++--- sbi/neural_nets/flow.py | 23 +++++++++++---- sbi/neural_nets/mdn.py | 4 ++- sbi/neural_nets/mnle.py | 3 +- sbi/utils/user_input_checks.py | 28 ++++++++++++------- tests/user_input_checks_test.py | 8 +++--- 26 files changed, 161 insertions(+), 111 deletions(-) diff --git a/sbi/inference/abc/mcabc.py b/sbi/inference/abc/mcabc.py index aac09bba9..a0f00b265 100644 --- a/sbi/inference/abc/mcabc.py +++ b/sbi/inference/abc/mcabc.py @@ -142,7 +142,7 @@ def simulator(theta): x = simulator(theta) # Infer shape of x to test and set x_o. - self.x_shape = x[0].unsqueeze(0).shape + self.x_shape = x[0].shape self.x_o = process_x(x_o, self.x_shape) distances = self.distance(self.x_o, x) diff --git a/sbi/inference/abc/smcabc.py b/sbi/inference/abc/smcabc.py index e936c12b1..b7ad736ab 100644 --- a/sbi/inference/abc/smcabc.py +++ b/sbi/inference/abc/smcabc.py @@ -330,7 +330,7 @@ def _set_xo_and_sample_initial_population( x = self._simulate_with_budget(theta) # Infer x shape to test and set x_o. - self.x_shape = x[0].unsqueeze(0).shape + self.x_shape = x[0].shape self.x_o = process_x(x_o, self.x_shape) distances = self.distance(self.x_o, x) diff --git a/sbi/inference/posteriors/base_posterior.py b/sbi/inference/posteriors/base_posterior.py index 6cdac0d56..e834da4c7 100644 --- a/sbi/inference/posteriors/base_posterior.py +++ b/sbi/inference/posteriors/base_posterior.py @@ -4,6 +4,7 @@ import inspect from abc import ABC, abstractmethod from typing import Any, Callable, Dict, Optional, Union +from warnings import warn import torch import torch.distributions.transforms as torch_tf @@ -42,8 +43,15 @@ def __init__( Allows to perform, e.g. MCMC in unconstrained space. device: Training device, e.g., "cpu", "cuda" or "cuda:0". If None, `potential_fn.device` is used. - x_shape: Shape of the observed data. + x_shape: Deprecated, should not be passed. """ + if x_shape is not None: + warn( + "x_shape is not None. However, passing x_shape to the `Posterior` is " + "deprecated and will be removed in a future release of `sbi`.", + stacklevel=2, + ) + if not isinstance(potential_fn, BasePotential): kwargs_of_callable = list(inspect.signature(potential_fn).parameters.keys()) for key in ["theta", "x_o"]: @@ -74,7 +82,6 @@ def __init__( self._map = None self._purpose = "" - self._x_shape = x_shape # If the sampler interface (#573) is used, the user might have passed `x_o` # already to the potential function builder. If so, this `x_o` will be used @@ -146,7 +153,7 @@ def set_default_x(self, x: Tensor) -> "NeuralPosterior": `NeuralPosterior` that will use a default `x` when not explicitly passed. """ self._x = process_x( - x, x_shape=self._x_shape, allow_iid_x=self.potential_fn.allow_iid_x + x, x_event_shape=None, allow_iid_x=self.potential_fn.allow_iid_x ).to(self._device) self._map = None return self @@ -156,7 +163,7 @@ def _x_else_default_x(self, x: Optional[Array]) -> Tensor: # New x, reset posterior sampler. self._posterior_sampler = None return process_x( - x, x_shape=self._x_shape, allow_iid_x=self.potential_fn.allow_iid_x + x, x_event_shape=None, allow_iid_x=self.potential_fn.allow_iid_x ) elif self.default_x is None: raise ValueError( diff --git a/sbi/inference/posteriors/direct_posterior.py b/sbi/inference/posteriors/direct_posterior.py index 3dcd45ffb..2f514fd95 100644 --- a/sbi/inference/posteriors/direct_posterior.py +++ b/sbi/inference/posteriors/direct_posterior.py @@ -52,8 +52,7 @@ def __init__( the proposal at every iteration. device: Training device, e.g., "cpu", "cuda" or "cuda:0". If None, `potential_fn.device` is used. - x_shape: Shape of a single simulator output. If passed, it is used to check - the shape of the observed data and give a descriptive error. + x_shape: Deprecated, should not be passed. enable_transform: Whether to transform parameters to unconstrained space during MAP optimization. When False, an identity transform will be returned for `theta_transform`. @@ -106,12 +105,9 @@ def sample( num_samples = torch.Size(sample_shape).numel() x = self._x_else_default_x(x) - - # [1:] because we remove batch dimension for `reshape_to_batch_event`. - # Note: This line will break if `x_shape` is `None` and if `x` is passed without - # batch dimension. - x_shape = self._x_shape[1:] if self._x_shape is not None else x.shape[1:] - x = reshape_to_batch_event(x, event_shape=x_shape) + x = reshape_to_batch_event( + x, event_shape=self.posterior_estimator.condition_shape + ) max_sampling_batch_size = ( self.max_sampling_batch_size @@ -172,14 +168,13 @@ def log_prob( """ x = self._x_else_default_x(x) - # [1:] to remove batch dimension for `reshape_to_sample_batch_event`. - x_shape = self._x_shape[1:] if self._x_shape is not None else x.shape[1:] - theta = ensure_theta_batched(torch.as_tensor(theta)) theta_density_estimator = reshape_to_sample_batch_event( theta, theta.shape[1:], leading_is_sample=True ) - x_density_estimator = reshape_to_batch_event(x, x_shape) + x_density_estimator = reshape_to_batch_event( + x, event_shape=self.posterior_estimator.condition_shape + ) assert ( x_density_estimator.shape[0] == 1 ), ".log_prob() supports only `batchsize == 1`." @@ -244,7 +239,6 @@ def leakage_correction( def acceptance_at(x: Tensor) -> Tensor: # [1:] to remove batch-dimension for `reshape_to_batch_event`. - x_shape = self._x_shape[1:] if self._x_shape is not None else x.shape[1:] return accept_reject_sample( proposal=self.posterior_estimator, accept_reject_fn=lambda theta: within_support(self.prior, theta), @@ -253,7 +247,9 @@ def acceptance_at(x: Tensor) -> Tensor: sample_for_correction_factor=True, max_sampling_batch_size=rejection_sampling_batch_size, proposal_sampling_kwargs={ - "condition": reshape_to_batch_event(x, x_shape) + "condition": reshape_to_batch_event( + x, event_shape=self.posterior_estimator.condition_shape + ) }, )[1] diff --git a/sbi/inference/posteriors/ensemble_posterior.py b/sbi/inference/posteriors/ensemble_posterior.py index 2e7b12f71..295f2085e 100644 --- a/sbi/inference/posteriors/ensemble_posterior.py +++ b/sbi/inference/posteriors/ensemble_posterior.py @@ -96,7 +96,7 @@ def __init__( potential_fn=potential_fn, theta_transform=theta_transform, device=device, - x_shape=self.posteriors[0]._x_shape, + x_shape=None, ) def ensure_same_device(self, posteriors: List) -> str: @@ -242,9 +242,7 @@ def set_default_x(self, x: Tensor) -> "NeuralPosterior": `EnsemblePosterior` that will use a default `x` when not explicitly passed. """ - self._x = process_x( - x, x_shape=self._x_shape, allow_iid_x=self.potential_fn.allow_iid_x - ).to(self._device) + self._x = x.to(self._device) for posterior in self.posteriors: posterior.set_default_x(x) diff --git a/sbi/inference/posteriors/importance_posterior.py b/sbi/inference/posteriors/importance_posterior.py index ace31ba2f..33f8fe8ca 100644 --- a/sbi/inference/posteriors/importance_posterior.py +++ b/sbi/inference/posteriors/importance_posterior.py @@ -52,8 +52,7 @@ def __init__( proposal at every iteration. device: Device on which to sample, e.g., "cpu", "cuda" or "cuda:0". If None, `potential_fn.device` is used. - x_shape: Shape of a single simulator output. If passed, it is used to check - the shape of the observed data and give a descriptive error. + x_shape: Deprecated, should not be passed. """ super().__init__( potential_fn, diff --git a/sbi/inference/posteriors/mcmc_posterior.py b/sbi/inference/posteriors/mcmc_posterior.py index 734bfbe91..1296b65da 100644 --- a/sbi/inference/posteriors/mcmc_posterior.py +++ b/sbi/inference/posteriors/mcmc_posterior.py @@ -98,8 +98,7 @@ def __init__( (e.g. Linux and macOS, not Windows). device: Training device, e.g., "cpu", "cuda" or "cuda:0". If None, `potential_fn.device` is used. - x_shape: Shape of a single simulator output. If passed, it is used to check - the shape of the observed data and give a descriptive error. + x_shape: Deprecated, should not be passed. """ if method == "slice": warn( diff --git a/sbi/inference/posteriors/rejection_posterior.py b/sbi/inference/posteriors/rejection_posterior.py index 9196cbde6..3bf49109c 100644 --- a/sbi/inference/posteriors/rejection_posterior.py +++ b/sbi/inference/posteriors/rejection_posterior.py @@ -49,8 +49,7 @@ def __init__( m: Multiplier to the `potential_fn / proposal` ratio. device: Training device, e.g., "cpu", "cuda" or "cuda:0". If None, `potential_fn.device` is used. - x_shape: Shape of a single simulator output. If passed, it is used to check - the shape of the observed data and give a descriptive error. + x_shape: Deprecated, should not be passed. """ super().__init__( potential_fn, diff --git a/sbi/inference/posteriors/vi_posterior.py b/sbi/inference/posteriors/vi_posterior.py index 413c06435..bb24da95c 100644 --- a/sbi/inference/posteriors/vi_posterior.py +++ b/sbi/inference/posteriors/vi_posterior.py @@ -91,8 +91,7 @@ def __init__( typically cover all modes (`fKL`, `IW`, `alpha` for alpha < 1). device: Training device, e.g., `cpu`, `cuda` or `cuda:0`. We will ensure that all other objects are also on this device. - x_shape: Shape of a single simulator output. If passed, it is used to check - the shape of the observed data and give a descriptive error. + x_shape: Deprecated, should not be passed. parameters: List of parameters of the variational posterior. This is only required for user-defined q i.e. if q does not have a `parameters` attribute. diff --git a/sbi/inference/snle/mnle.py b/sbi/inference/snle/mnle.py index cefbbcc55..5587b4ee7 100644 --- a/sbi/inference/snle/mnle.py +++ b/sbi/inference/snle/mnle.py @@ -171,7 +171,6 @@ def build_posterior( proposal=prior, method=mcmc_method, device=device, - x_shape=self._x_shape, **mcmc_parameters or {}, ) elif sample_with == "rejection": @@ -179,7 +178,6 @@ def build_posterior( potential_fn=potential_fn, proposal=prior, device=device, - x_shape=self._x_shape, **rejection_sampling_parameters or {}, ) elif sample_with == "vi": @@ -189,7 +187,6 @@ def build_posterior( prior=prior, # type: ignore vi_method=vi_method, device=device, - x_shape=self._x_shape, **vi_parameters or {}, ) else: @@ -209,6 +206,8 @@ def _loss(self, theta: Tensor, x: Tensor) -> Tensor: Returns: Negative log prob. """ - theta = reshape_to_batch_event(theta, event_shape=theta.shape[1:]) - x = reshape_to_sample_batch_event(x, event_shape=self._x_shape[1:]) + theta = reshape_to_batch_event( + theta, event_shape=self._neural_net.condition_shape + ) + x = reshape_to_sample_batch_event(x, event_shape=self._neural_net.input_shape) return -self._neural_net.log_prob(x, condition=theta) diff --git a/sbi/inference/snle/snle_base.py b/sbi/inference/snle/snle_base.py index 78db3cb4b..fbfe324f6 100644 --- a/sbi/inference/snle/snle_base.py +++ b/sbi/inference/snle/snle_base.py @@ -176,11 +176,10 @@ def train( theta[self.train_indices].to("cpu"), x[self.train_indices].to("cpu"), ) - self._x_shape = x_shape_from_simulation(x.to("cpu")) - del theta, x assert ( - len(self._x_shape) < 3 + len(x_shape_from_simulation(x.to("cpu"))) < 3 ), "SNLE cannot handle multi-dimensional simulator output." + del theta, x self._neural_net.to(self._device) if not resume_training: @@ -335,7 +334,6 @@ def build_posterior( proposal=prior, method=mcmc_method, device=device, - x_shape=self._x_shape, **mcmc_parameters or {}, ) elif sample_with == "rejection": @@ -343,7 +341,6 @@ def build_posterior( potential_fn=potential_fn, proposal=prior, device=device, - x_shape=self._x_shape, **rejection_sampling_parameters or {}, ) elif sample_with == "vi": @@ -353,7 +350,6 @@ def build_posterior( prior=prior, # type: ignore vi_method=vi_method, device=device, - x_shape=self._x_shape, **vi_parameters or {}, ) else: @@ -370,8 +366,10 @@ def _loss(self, theta: Tensor, x: Tensor) -> Tensor: Returns: Negative log prob. """ - theta = reshape_to_batch_event(theta, event_shape=theta.shape[1:]) + theta = reshape_to_batch_event( + theta, event_shape=self._neural_net.condition_shape + ) x = reshape_to_sample_batch_event( - x, event_shape=self._x_shape[1:], leading_is_sample=False + x, event_shape=self._neural_net.input_shape, leading_is_sample=False ) return self._neural_net.loss(x, condition=theta) diff --git a/sbi/inference/snpe/snpe_a.py b/sbi/inference/snpe/snpe_a.py index 64d6dc018..d179dcf34 100644 --- a/sbi/inference/snpe/snpe_a.py +++ b/sbi/inference/snpe/snpe_a.py @@ -399,7 +399,7 @@ def __init__( """ # Call nn.Module's constructor. - super().__init__(flow, flow._condition_shape) + super().__init__(flow, flow.input_shape, flow.condition_shape) self._neural_net = flow self._prior = prior @@ -480,7 +480,7 @@ def sample(self, sample_shape: torch.Size, condition: Tensor, **kwargs) -> Tenso # \tilde{p} has already been observed. To analytically calculate the # log-prob of the Gaussian, we first need to compute the mixture components. num_samples = torch.Size(sample_shape).numel() - condition_ndim = len(self._condition_shape) + condition_ndim = len(self.condition_shape) batch_size = condition.shape[:-condition_ndim] batch_size = torch.Size(batch_size).numel() return self._sample_approx_posterior_mog(num_samples, condition, batch_size) diff --git a/sbi/inference/snpe/snpe_base.py b/sbi/inference/snpe/snpe_base.py index 1ae878441..3788d00b1 100644 --- a/sbi/inference/snpe/snpe_base.py +++ b/sbi/inference/snpe/snpe_base.py @@ -36,7 +36,6 @@ test_posterior_net_for_multi_d_x, validate_theta_and_x, warn_if_zscoring_changes_data, - x_shape_from_simulation, ) from sbi.utils.sbiutils import ImproperEmpirical, mask_sims_from_prior @@ -320,10 +319,11 @@ def default_calibration_kernel(x): theta[self.train_indices].to("cpu"), x[self.train_indices].to("cpu"), ) - self._x_shape = x_shape_from_simulation(x.to("cpu")) - theta = reshape_to_sample_batch_event(theta.to("cpu"), theta.shape[1:]) - x = reshape_to_batch_event(x.to("cpu"), self._x_shape[1:]) + theta = reshape_to_sample_batch_event( + theta.to("cpu"), self._neural_net.input_shape + ) + x = reshape_to_batch_event(x.to("cpu"), self._neural_net.condition_shape) test_posterior_net_for_multi_d_x(self._neural_net, theta, x) del theta, x @@ -503,7 +503,6 @@ def build_posterior( self._posterior = DirectPosterior( posterior_estimator=posterior_estimator, # type: ignore prior=prior, - x_shape=self._x_shape, device=device, **direct_sampling_parameters or {}, ) @@ -520,7 +519,6 @@ def build_posterior( self._posterior = RejectionPosterior( potential_fn=potential_fn, device=device, - x_shape=self._x_shape, **rejection_sampling_parameters, ) elif sample_with == "mcmc": @@ -530,7 +528,6 @@ def build_posterior( proposal=prior, method=mcmc_method, device=device, - x_shape=self._x_shape, **mcmc_parameters or {}, ) elif sample_with == "vi": @@ -540,7 +537,6 @@ def build_posterior( prior=prior, # type: ignore vi_method=vi_method, device=device, - x_shape=self._x_shape, **vi_parameters or {}, ) else: @@ -582,8 +578,10 @@ def _loss( distribution different from the prior. """ if self._round == 0 or force_first_round_loss: - theta = reshape_to_sample_batch_event(theta, event_shape=theta.shape[1:]) - x = reshape_to_batch_event(x, event_shape=self._x_shape[1:]) + theta = reshape_to_sample_batch_event( + theta, event_shape=self._neural_net.input_shape + ) + x = reshape_to_batch_event(x, event_shape=self._neural_net.condition_shape) # Use posterior log prob (without proposal correction) for first round. loss = self._neural_net.loss(theta, x) else: diff --git a/sbi/inference/snpe/snpe_c.py b/sbi/inference/snpe/snpe_c.py index e4c307b90..c575d03d0 100644 --- a/sbi/inference/snpe/snpe_c.py +++ b/sbi/inference/snpe/snpe_c.py @@ -355,7 +355,9 @@ def _log_prob_proposal_posterior_atomic( atomic_theta = reshape_to_sample_batch_event( atomic_theta, atomic_theta.shape[1:] ) - repeated_x = reshape_to_batch_event(repeated_x, self._x_shape[1:]) + repeated_x = reshape_to_batch_event( + repeated_x, self._neural_net.condition_shape + ) log_prob_posterior = self._neural_net.log_prob(atomic_theta, repeated_x) utils.assert_all_finite(log_prob_posterior, "posterior eval") log_prob_posterior = log_prob_posterior.reshape(batch_size, num_atoms) @@ -371,8 +373,8 @@ def _log_prob_proposal_posterior_atomic( # XXX This evaluates the posterior on _all_ prior samples if self._use_combined_loss: - theta = reshape_to_sample_batch_event(theta, theta.shape[1:]) - x = reshape_to_batch_event(x, self._x_shape[1:]) + theta = reshape_to_sample_batch_event(theta, self._neural_net.input_shape) + x = reshape_to_batch_event(x, self._neural_net.condition_shape) log_prob_posterior_non_atomic = self._neural_net.log_prob(theta, x) # squeeze to remove sample dimension, which is always one during the loss # evaluation of `SNPE_C` (because we have one theta vector per x vector). diff --git a/sbi/inference/snre/snre_base.py b/sbi/inference/snre/snre_base.py index ffbcb67ab..18dc34fd2 100644 --- a/sbi/inference/snre/snre_base.py +++ b/sbi/inference/snre/snre_base.py @@ -384,7 +384,6 @@ def build_posterior( proposal=prior, method=mcmc_method, device=device, - x_shape=self._x_shape, **mcmc_parameters or {}, ) elif sample_with == "rejection": @@ -392,7 +391,6 @@ def build_posterior( potential_fn=potential_fn, proposal=prior, device=device, - x_shape=self._x_shape, **rejection_sampling_parameters or {}, ) elif sample_with == "vi": @@ -402,7 +400,6 @@ def build_posterior( prior=prior, # type: ignore vi_method=vi_method, device=device, - x_shape=self._x_shape, **vi_parameters or {}, ) else: diff --git a/sbi/neural_nets/categorial.py b/sbi/neural_nets/categorial.py index ad80ef81c..745f61a87 100644 --- a/sbi/neural_nets/categorial.py +++ b/sbi/neural_nets/categorial.py @@ -9,8 +9,8 @@ def build_categoricalmassestimator( - input: Tensor, - condition: Tensor, + batch_x: Tensor, + batch_y: Tensor, num_hidden: int = 20, num_layers: int = 2, embedding_net: Optional[nn.Module] = None, @@ -18,17 +18,19 @@ def build_categoricalmassestimator( """Returns a density estimator for a categorical random variable.""" # Infer input and output dims. if embedding_net is None: - dim_input = condition[0].numel() + dim_condition = batch_y[0].numel() else: - dim_input = embedding_net(condition[:1]).numel() - num_categories = unique(input).numel() + dim_condition = embedding_net(batch_y[:1]).numel() + num_categories = unique(batch_x).numel() categorical_net = CategoricalNet( - num_input=dim_input, + num_input=dim_condition, num_categories=num_categories, num_hidden=num_hidden, num_layers=num_layers, embedding_net=embedding_net, ) - return CategoricalMassEstimator(categorical_net) + return CategoricalMassEstimator( + categorical_net, input_shape=batch_x[0].shape, condition_shape=batch_y[0].shape + ) diff --git a/sbi/neural_nets/density_estimators/base.py b/sbi/neural_nets/density_estimators/base.py index a2af32bc1..50e174375 100644 --- a/sbi/neural_nets/density_estimators/base.py +++ b/sbi/neural_nets/density_estimators/base.py @@ -19,17 +19,22 @@ class DensityEstimator(nn.Module): """ - def __init__(self, net: nn.Module, condition_shape: torch.Size) -> None: + def __init__( + self, net: nn.Module, input_shape: torch.Size, condition_shape: torch.Size + ) -> None: r"""Base class for density estimators. Args: net: Neural network. + input_shape: Event shape of the input at which the density is being + evaluated (and which is also the event_shape of samples). condition_shape: Shape of the condition. If not provided, it will assume a - 1D input. + 1D input. """ super().__init__() self.net = net - self._condition_shape = condition_shape + self.input_shape = input_shape + self.condition_shape = condition_shape @property def embedding_net(self) -> Optional[nn.Module]: @@ -136,17 +141,17 @@ def _check_condition_shape(self, condition: Tensor): ValueError: If the shape of the condition does not match the expected input dimensionality. """ - if len(condition.shape) < len(self._condition_shape): + if len(condition.shape) < len(self.condition_shape): raise ValueError( f"Dimensionality of condition is to small and does not match the\ - expected input dimensionality {len(self._condition_shape)}, as provided\ + expected input dimensionality {len(self.condition_shape)}, as provided\ by condition_shape." ) else: - condition_shape = condition.shape[-len(self._condition_shape) :] - if tuple(condition_shape) != tuple(self._condition_shape): + condition_shape = condition.shape[-len(self.condition_shape) :] + if tuple(condition_shape) != tuple(self.condition_shape): raise ValueError( f"Shape of condition {tuple(condition_shape)} does not match the \ - expected input dimensionality {tuple(self._condition_shape)}, as \ + expected input dimensionality {tuple(self.condition_shape)}, as \ provided by condition_shape. Please reshape it accordingly." ) diff --git a/sbi/neural_nets/density_estimators/categorical_net.py b/sbi/neural_nets/density_estimators/categorical_net.py index 298383793..ef0ed9387 100644 --- a/sbi/neural_nets/density_estimators/categorical_net.py +++ b/sbi/neural_nets/density_estimators/categorical_net.py @@ -113,8 +113,12 @@ class CategoricalMassEstimator(DensityEstimator): The event_shape of this class is `()`. """ - def __init__(self, net: CategoricalNet) -> None: - super().__init__(net=net, condition_shape=torch.Size([])) + def __init__( + self, net: CategoricalNet, input_shape: torch.Size, condition_shape: torch.Size + ) -> None: + super().__init__( + net=net, input_shape=input_shape, condition_shape=condition_shape + ) self.net = net self.num_categories = net.num_categories diff --git a/sbi/neural_nets/density_estimators/mixed_density_estimator.py b/sbi/neural_nets/density_estimators/mixed_density_estimator.py index fb70ee2ca..f7b6602b2 100644 --- a/sbi/neural_nets/density_estimators/mixed_density_estimator.py +++ b/sbi/neural_nets/density_estimators/mixed_density_estimator.py @@ -26,6 +26,7 @@ def __init__( self, discrete_net: CategoricalMassEstimator, continuous_net: NFlowsFlow, + input_shape: torch.Size, condition_shape: torch.Size, log_transform_input: bool = False, ): @@ -34,12 +35,16 @@ def __init__( Args: discrete_net: neural net to model discrete part of the data. continuous_net: neural net to model the continuous data. + input_shape: Event shape of the input at which the density is being + evaluated (and which is also the event_shape of samples). + condition_shape: Shape of the condition. If not provided, it will assume a + 1D input. log_transform_input: whether to transform the continous part of the data into logarithmic domain before training. This is helpful for bounded data, e.g.,for reaction times. """ super(MixedDensityEstimator, self).__init__( - net=continuous_net, condition_shape=condition_shape + net=continuous_net, input_shape=input_shape, condition_shape=condition_shape ) self.discrete_net = discrete_net diff --git a/sbi/neural_nets/density_estimators/nflows_flow.py b/sbi/neural_nets/density_estimators/nflows_flow.py index 0ce61c7d2..a5d3c066b 100644 --- a/sbi/neural_nets/density_estimators/nflows_flow.py +++ b/sbi/neural_nets/density_estimators/nflows_flow.py @@ -15,8 +15,19 @@ class NFlowsFlow(DensityEstimator): wrap them and add the .loss() method. """ - def __init__(self, net: Flow, condition_shape: torch.Size) -> None: - super().__init__(net, condition_shape) + def __init__( + self, net: Flow, input_shape: torch.Size, condition_shape: torch.Size + ) -> None: + """Initialize density estimator which wraps flows from the `nflows` library. + + Args: + net: The raw `nflows` flow. + input_shape: Event shape of the input at which the density is being + evaluated (and which is also the event_shape of samples). + condition_shape: Shape of the condition. If not provided, it will assume a + 1D input. + """ + super().__init__(net, input_shape=input_shape, condition_shape=condition_shape) # TODO: Remove as soon as DensityEstimator becomes abstract self.net: Flow @@ -57,7 +68,7 @@ def inverse_transform(self, input: Tensor, condition: Tensor) -> Tensor: -> (batch_size2,batch_size1) """ self._check_condition_shape(condition) - condition_dims = len(self._condition_shape) + condition_dims = len(self.condition_shape) # PyTorch's automatic broadcasting batch_shape_in = input.shape[:-1] @@ -65,10 +76,10 @@ def inverse_transform(self, input: Tensor, condition: Tensor) -> Tensor: batch_shape = torch.broadcast_shapes(batch_shape_in, batch_shape_cond) # Expand the input and condition to the same batch shape input = input.expand(batch_shape + (input.shape[-1],)) - condition = condition.expand(batch_shape + self._condition_shape) + condition = condition.expand(batch_shape + self.condition_shape) # Flatten required by nflows, but now both have the same batch shape input = input.reshape(-1, input.shape[-1]) - condition = condition.reshape(-1, *self._condition_shape) + condition = condition.reshape(-1, *self.condition_shape) noise, _ = self.net._transorm(input, context=condition) noise = noise.reshape(batch_shape) diff --git a/sbi/neural_nets/density_estimators/zuko_flow.py b/sbi/neural_nets/density_estimators/zuko_flow.py index 1be8d76d6..fe01fe259 100644 --- a/sbi/neural_nets/density_estimators/zuko_flow.py +++ b/sbi/neural_nets/density_estimators/zuko_flow.py @@ -16,17 +16,25 @@ class ZukoFlow(DensityEstimator): """ def __init__( - self, net: Flow, embedding_net: nn.Module, condition_shape: torch.Size + self, + net: Flow, + embedding_net: nn.Module, + input_shape: torch.Size, + condition_shape: torch.Size, ): r"""Initialize the density estimator. Args: flow: Flow object. - condition_shape: Shape of the condition. + input_shape: Event shape of the input at which the density is being + evaluated (and which is also the event_shape of samples). + condition_shape: Event shape of the condition. """ # assert len(condition_shape) == 1, "Zuko Flows require 1D conditions." - super().__init__(net=net, condition_shape=condition_shape) + super().__init__( + net=net, input_shape=input_shape, condition_shape=condition_shape + ) self._embedding_net = embedding_net @property @@ -67,7 +75,7 @@ def inverse_transform(self, input: Tensor, condition: Tensor) -> Tensor: """ self._check_condition_shape(condition) - condition_dims = len(self._condition_shape) + condition_dims = len(self.condition_shape) # PyTorch's automatic broadcasting batch_shape_in = input.shape[:-1] diff --git a/sbi/neural_nets/flow.py b/sbi/neural_nets/flow.py index 9fa71f115..947406f49 100644 --- a/sbi/neural_nets/flow.py +++ b/sbi/neural_nets/flow.py @@ -117,7 +117,9 @@ def build_made( ) neural_net = flows.Flow(transform, distribution, embedding_net) - flow = NFlowsFlow(neural_net, condition_shape=batch_y[0].shape) + flow = NFlowsFlow( + neural_net, input_shape=batch_x[0].shape, condition_shape=batch_y[0].shape + ) return flow @@ -197,7 +199,9 @@ def build_maf( distribution = get_base_dist(x_numel, **kwargs) neural_net = flows.Flow(transform, distribution, embedding_net) - flow = NFlowsFlow(neural_net, condition_shape=batch_y[0].shape) + flow = NFlowsFlow( + neural_net, input_shape=batch_x[0].shape, condition_shape=batch_y[0].shape + ) return flow @@ -301,7 +305,9 @@ def build_maf_rqs( distribution = get_base_dist(x_numel, **kwargs) neural_net = flows.Flow(transform, distribution, embedding_net) - flow = NFlowsFlow(neural_net, condition_shape=batch_y[0].shape) + flow = NFlowsFlow( + neural_net, input_shape=batch_x[0].shape, condition_shape=batch_y[0].shape + ) return flow @@ -419,7 +425,9 @@ def mask_in_layer(i): # Combine transforms. transform = transforms.CompositeTransform(transform_list) neural_net = flows.Flow(transform, distribution, embedding_net) - flow = NFlowsFlow(neural_net, condition_shape=batch_y[0].shape) + flow = NFlowsFlow( + neural_net, input_shape=batch_x[0].shape, condition_shape=batch_y[0].shape + ) return flow @@ -1104,7 +1112,12 @@ def build_zuko_flow( # Combine transforms. neural_net = zuko.flows.Flow(transforms, flow_built.base) - flow = ZukoFlow(neural_net, embedding_net, condition_shape=batch_y[0].shape) + flow = ZukoFlow( + neural_net, + embedding_net, + input_shape=batch_x[0].shape, + condition_shape=batch_y[0].shape, + ) return flow diff --git a/sbi/neural_nets/mdn.py b/sbi/neural_nets/mdn.py index 91230941a..4ac102a9f 100644 --- a/sbi/neural_nets/mdn.py +++ b/sbi/neural_nets/mdn.py @@ -82,6 +82,8 @@ def build_mdn( ) neural_net = flows.Flow(transform, distribution, embedding_net) - flow = NFlowsFlow(neural_net, condition_shape=batch_y[0].shape) + flow = NFlowsFlow( + neural_net, input_shape=batch_x[0].shape, condition_shape=batch_y[0].shape + ) return flow diff --git a/sbi/neural_nets/mnle.py b/sbi/neural_nets/mnle.py index 034747ce5..a1c918239 100644 --- a/sbi/neural_nets/mnle.py +++ b/sbi/neural_nets/mnle.py @@ -90,5 +90,6 @@ def build_mnle( discrete_net=disc_nle, continuous_net=cont_nle, log_transform_input=log_transform_x, - condition_shape=torch.Size([]), + input_shape=batch_x[0].shape, + condition_shape=batch_y[0].shape, ) diff --git a/sbi/utils/user_input_checks.py b/sbi/utils/user_input_checks.py index 0a0c4f99f..036b3f243 100644 --- a/sbi/utils/user_input_checks.py +++ b/sbi/utils/user_input_checks.py @@ -566,16 +566,19 @@ def batch_loop_simulator(theta: Tensor) -> Tensor: def process_x( - x: Array, x_shape: Optional[torch.Size] = None, allow_iid_x: bool = False + x: Array, x_event_shape: Optional[torch.Size] = None, allow_iid_x: bool = False ) -> Tensor: """Return observed data adapted to match sbi's shape and type requirements. + This means that `x` is returned with a `batch_dim`. + If `x_shape` is `None`, the shape is not checked. Args: x: Observed data as provided by the user. - x_shape: Prescribed shape - either directly provided by the user at init or - inferred by sbi by running a simulation and checking the output. + x_event_shape: Prescribed shape - either directly provided by the user at init + or inferred by sbi by running a simulation and checking the output. Does not + contain a batch dimension. allow_iid_x: Whether multiple trials in x are allowed. Returns: @@ -584,24 +587,29 @@ def process_x( x = atleast_2d(torch.as_tensor(x, dtype=float32)) + if x_event_shape is not None and len(x_event_shape) > len(x.shape): + raise ValueError( + f"You passed an `x` of shape {x.shape} but the `x_event_shape` (inferred " + f"from simulations) is {x_event_shape}. We are raising this error because " + f"len(x_event_shape) > len(x.shape)" + ) + # If x_shape is provided, we can fix a missing batch dim for >1D data. - if x_shape is not None and len(x_shape) > len(x.shape): + if x_event_shape is not None and len(x_event_shape) == len(x.shape): x = x.unsqueeze(0) input_x_shape = x.shape if not allow_iid_x: check_for_possibly_batched_x_shape(input_x_shape) - start_idx = 0 else: warn_on_iid_x(num_trials=input_x_shape[0]) - start_idx = 1 - if x_shape is not None: + if x_event_shape is not None: # Number of trials can change for every new x, but single trial x shape must # match. - assert input_x_shape[start_idx:] == x_shape[start_idx:], ( - f"Observed data shape ({input_x_shape[start_idx:]}) must match " - f"the shape of simulated data x ({x_shape[start_idx:]})." + assert input_x_shape[1:] == x_event_shape, ( + f"Observed data shape ({input_x_shape[1:]}) must match " + f"the shape of simulated data x ({x_event_shape})." ) return x diff --git a/tests/user_input_checks_test.py b/tests/user_input_checks_test.py index ad73bc4f4..08cfc5fc6 100644 --- a/tests/user_input_checks_test.py +++ b/tests/user_input_checks_test.py @@ -183,13 +183,13 @@ def test_process_prior(prior): @pytest.mark.parametrize( "x, x_shape, allow_iid", ( - (ones(3), torch.Size([1, 3]), False), - (ones(1, 3), torch.Size([1, 3]), False), - (ones(10, 3), torch.Size([1, 10, 3]), False), # 2D data / iid SNPE + (ones(3), torch.Size([3]), False), + (ones(1, 3), torch.Size([3]), False), + (ones(10, 3), torch.Size([10, 3]), False), # 2D data / iid SNPE pytest.param( ones(10, 3), None, False, marks=pytest.mark.xfail ), # 2D data / iid SNPE without x_shape - (ones(10, 10), torch.Size([1, 10]), True), # iid likelihood based + (ones(10, 10), torch.Size([10]), True), # iid likelihood based ), ) def test_process_x(x, x_shape, allow_iid): From 005aeaca3c0ee246a39ef78a1947bc1786a85f71 Mon Sep 17 00:00:00 2001 From: Michael Deistler Date: Tue, 23 Apr 2024 12:53:31 +0200 Subject: [PATCH 42/53] Fixup for process_x in EnsemblePosterior (#1148) --- sbi/inference/posteriors/ensemble_posterior.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sbi/inference/posteriors/ensemble_posterior.py b/sbi/inference/posteriors/ensemble_posterior.py index 295f2085e..72af02d88 100644 --- a/sbi/inference/posteriors/ensemble_posterior.py +++ b/sbi/inference/posteriors/ensemble_posterior.py @@ -242,7 +242,9 @@ def set_default_x(self, x: Tensor) -> "NeuralPosterior": `EnsemblePosterior` that will use a default `x` when not explicitly passed. """ - self._x = x.to(self._device) + self._x = process_x( + x, x_event_shape=None, allow_iid_x=self.potential_fn.allow_iid_x + ).to(self._device) for posterior in self.posteriors: posterior.set_default_x(x) From afbd5e74220ef9df662a98e85bcfda6f9bf7fc09 Mon Sep 17 00:00:00 2001 From: Michael Deistler Date: Thu, 25 Apr 2024 21:42:24 +0200 Subject: [PATCH 43/53] DensityEstimator.loss does not take `sample_dim` (#1149) --- sbi/inference/snle/mnle.py | 20 --------- sbi/inference/snle/snle_base.py | 5 +-- sbi/inference/snpe/snpe_base.py | 2 +- sbi/neural_nets/density_estimators/base.py | 44 +++++-------------- .../density_estimators/categorical_net.py | 30 ++++++------- .../mixed_density_estimator.py | 11 ++++- .../density_estimators/nflows_flow.py | 25 +++-------- .../density_estimators/zuko_flow.py | 11 +++-- tests/density_estimator_test.py | 18 ++++---- 9 files changed, 58 insertions(+), 108 deletions(-) diff --git a/sbi/inference/snle/mnle.py b/sbi/inference/snle/mnle.py index 5587b4ee7..fe2034343 100644 --- a/sbi/inference/snle/mnle.py +++ b/sbi/inference/snle/mnle.py @@ -5,16 +5,11 @@ from copy import deepcopy from typing import Any, Callable, Dict, Optional, Union -from torch import Tensor from torch.distributions import Distribution from sbi.inference.posteriors import MCMCPosterior, RejectionPosterior, VIPosterior from sbi.inference.potentials import mixed_likelihood_estimator_based_potential from sbi.inference.snle.snle_base import LikelihoodEstimator -from sbi.neural_nets.density_estimators.shape_handling import ( - reshape_to_batch_event, - reshape_to_sample_batch_event, -) from sbi.neural_nets.mnle import MixedDensityEstimator from sbi.sbi_types import TensorboardSummaryWriter, TorchModule from sbi.utils import check_prior, del_entries @@ -196,18 +191,3 @@ def build_posterior( self._model_bank.append(deepcopy(self._posterior)) return deepcopy(self._posterior) - - # Temporary: need to rewrite mixed likelihood estimators as DensityEstimator - # objects. - # TODO: Fix and merge issue #968 - def _loss(self, theta: Tensor, x: Tensor) -> Tensor: - r"""Return loss for SNLE, which is the likelihood of $-\log q(x_i | \theta_i)$. - - Returns: - Negative log prob. - """ - theta = reshape_to_batch_event( - theta, event_shape=self._neural_net.condition_shape - ) - x = reshape_to_sample_batch_event(x, event_shape=self._neural_net.input_shape) - return -self._neural_net.log_prob(x, condition=theta) diff --git a/sbi/inference/snle/snle_base.py b/sbi/inference/snle/snle_base.py index fbfe324f6..2722c856d 100644 --- a/sbi/inference/snle/snle_base.py +++ b/sbi/inference/snle/snle_base.py @@ -18,7 +18,6 @@ from sbi.neural_nets import DensityEstimator, likelihood_nn from sbi.neural_nets.density_estimators.shape_handling import ( reshape_to_batch_event, - reshape_to_sample_batch_event, ) from sbi.utils import check_estimator_arg, check_prior, x_shape_from_simulation @@ -369,7 +368,5 @@ def _loss(self, theta: Tensor, x: Tensor) -> Tensor: theta = reshape_to_batch_event( theta, event_shape=self._neural_net.condition_shape ) - x = reshape_to_sample_batch_event( - x, event_shape=self._neural_net.input_shape, leading_is_sample=False - ) + x = reshape_to_batch_event(x, event_shape=self._neural_net.input_shape) return self._neural_net.loss(x, condition=theta) diff --git a/sbi/inference/snpe/snpe_base.py b/sbi/inference/snpe/snpe_base.py index 3788d00b1..8d4ffe58a 100644 --- a/sbi/inference/snpe/snpe_base.py +++ b/sbi/inference/snpe/snpe_base.py @@ -578,7 +578,7 @@ def _loss( distribution different from the prior. """ if self._round == 0 or force_first_round_loss: - theta = reshape_to_sample_batch_event( + theta = reshape_to_batch_event( theta, event_shape=self._neural_net.input_shape ) x = reshape_to_batch_event(x, event_shape=self._neural_net.condition_shape) diff --git a/sbi/neural_nets/density_estimators/base.py b/sbi/neural_nets/density_estimators/base.py index 50e174375..252c850bc 100644 --- a/sbi/neural_nets/density_estimators/base.py +++ b/sbi/neural_nets/density_estimators/base.py @@ -47,28 +47,15 @@ def log_prob(self, input: Tensor, condition: Tensor, **kwargs) -> Tensor: Args: input: Inputs to evaluate the log probability on of shape - (*batch_shape1, input_size). - condition: Conditions of shape (*batch_shape2, *condition_shape). + `(sample_dim_input, batch_dim_input, *event_shape_input)`. + condition: Conditions of shape + `(batch_dim_condition, *event_shape_condition)`. Raises: - RuntimeError: If batch_shape1 and batch_shape2 are not broadcastable. + RuntimeError: If batch_dim_input and batch_dim_condition do not match. Returns: Sample-wise log probabilities. - - Note: - This function should support PyTorch's automatic broadcasting. This means - the function should behave as follows for different input and condition - shapes: - - (input_size,) + (batch_size,*condition_shape) -> (batch_size,) - - (batch_size, input_size) + (*condition_shape) -> (batch_size,) - - (batch_size, input_size) + (batch_size, *condition_shape) -> (batch_size,) - - (batch_size1, input_size) + (batch_size2, *condition_shape) - -> RuntimeError i.e. not broadcastable - - (batch_size1,1, input_size) + (batch_size2, *condition_shape) - -> (batch_size1,batch_size2) - - (batch_size1, input_size) + (batch_size2,1, *condition_shape) - -> (batch_size2,batch_size1) """ raise NotImplementedError @@ -77,11 +64,12 @@ def loss(self, input: Tensor, condition: Tensor, **kwargs) -> Tensor: r"""Return the loss for training the density estimator. Args: - input: Inputs to evaluate the loss on of shape (batch_size, input_size). - condition: Conditions of shape (batch_size, *condition_shape). + input: Inputs to evaluate the loss on of shape + `(batch_dim, *input_event_shape)`. + condition: Conditions of shape `(batch_dim, *event_shape_condition)`. Returns: - Loss of shape (batch_size,) + Loss of shape (batch_dim,) """ raise NotImplementedError @@ -91,17 +79,10 @@ def sample(self, sample_shape: torch.Size, condition: Tensor, **kwargs) -> Tenso Args: sample_shape: Shape of the samples to return. - condition: Conditions of shape (*batch_shape, *condition_shape). + condition: Conditions of shape `(batch_dim, *event_shape_condition)`. Returns: - Samples of shape (*batch_shape, *sample_shape, input_size). - - Note: - This function should support batched conditions and should admit the - following behavior for different condition shapes: - - (*condition_shape) -> (*sample_shape, input_size) - - (*batch_shape, *condition_shape) - -> (*batch_shape, *sample_shape, input_size) + Samples of shape (*sample_shape, batch_dim, *event_shape_input). """ raise NotImplementedError @@ -113,12 +94,11 @@ def sample_and_log_prob( Args: sample_shape: Shape of the samples to return. - condition: Conditions of shape (*batch_shape, *condition_shape). + condition: Conditions of shape `(batch_dim, *event_shape_condition)`. Returns: Samples and associated log probabilities. - Note: For some density estimators, computing log_probs for samples is more efficient than computing them separately. This method should @@ -133,7 +113,7 @@ def _check_condition_shape(self, condition: Tensor): r"""This method checks whether the condition has the correct shape. Args: - condition: Conditions of shape (*batch_shape, *condition_shape). + condition: Conditions of shape `(batch_dim, *event_shape_condition)`. Raises: ValueError: If the condition has a dimensionality that does not match diff --git a/sbi/neural_nets/density_estimators/categorical_net.py b/sbi/neural_nets/density_estimators/categorical_net.py index ef0ed9387..6d76542dd 100644 --- a/sbi/neural_nets/density_estimators/categorical_net.py +++ b/sbi/neural_nets/density_estimators/categorical_net.py @@ -56,54 +56,54 @@ def __init__( self.output_layer = nn.Linear(num_hidden, num_categories) - def forward(self, context: Tensor) -> Tensor: + def forward(self, condition: Tensor) -> Tensor: """Return categorical probability predicted from a batch of inputs. Args: - context: batch of context parameters for the net. + condition: batch of context parameters for the net. Returns: Tensor: batch of predicted categorical probabilities. """ # forward path - context = self.activation(self.input_layer(context)) + condition = self.activation(self.input_layer(condition)) - # iterate n hidden layers, input context and calculate tanh activation + # iterate n hidden layers, input condition and calculate tanh activation for layer in self.hidden_layers: - context = self.activation(layer(context)) + condition = self.activation(layer(condition)) - return self.softmax(self.output_layer(context)) + return self.softmax(self.output_layer(condition)) - def log_prob(self, input: Tensor, context: Tensor) -> Tensor: - """Return categorical log probability of categories input, given context. + def log_prob(self, input: Tensor, condition: Tensor) -> Tensor: + """Return categorical log probability of categories input, given condition. Args: input: categories to evaluate. - context: parameters. + condition: parameters. Returns: Tensor: log probs with shape (input.shape[0],) """ # Predict categorical ps and evaluate. - ps = self.forward(context) + ps = self.forward(condition) # Squeeze dim=1 because `Categorical` has `event_shape=()` but our data usually # has an event_shape of `(1,)`. return Categorical(probs=ps).log_prob(input.squeeze(dim=1)) - def sample(self, sample_shape: torch.Size, context: Tensor) -> Tensor: + def sample(self, sample_shape: torch.Size, condition: Tensor) -> Tensor: """Returns samples from categorical random variable with probs predicted from the neural net. Args: sample_shape: number of samples to obtain. - context: batch of parameters for prediction. + condition: batch of parameters for prediction. Returns: Tensor: Samples with shape (num_samples, 1) """ # Predict Categorical ps and sample. - ps = self.forward(context) + ps = self.forward(condition) return Categorical(probs=ps).sample(sample_shape=sample_shape) @@ -176,11 +176,11 @@ def loss(self, input: Tensor, condition: Tensor, **kwargs) -> Tensor: r"""Return the loss for training the density estimator. Args: - input: Inputs of shape `(sample_dim, batch_dim, *input_event_shape)`. + input: Inputs of shape `(batch_dim, *input_event_shape)`. condition: Conditions of shape `(batch_dim, *condition_event_shape)`. Returns: Loss of shape `(batch_dim,)` """ - return -self.log_prob(input, condition) + return -self.log_prob(input.unsqueeze(0), condition)[0] diff --git a/sbi/neural_nets/density_estimators/mixed_density_estimator.py b/sbi/neural_nets/density_estimators/mixed_density_estimator.py index f7b6602b2..5c5f9e0a2 100644 --- a/sbi/neural_nets/density_estimators/mixed_density_estimator.py +++ b/sbi/neural_nets/density_estimators/mixed_density_estimator.py @@ -162,7 +162,16 @@ def log_prob(self, input: Tensor, condition: Tensor) -> Tensor: return log_probs_combined def loss(self, input: Tensor, condition: Tensor, **kwargs) -> Tensor: - return self.log_prob(input, condition) + r"""Return the loss for training the density estimator. + + Args: + input: Inputs of shape `(batch_dim, *input_event_shape)`. + condition: Conditions of shape `(batch_dim, *condition_event_shape)`. + + Returns: + Loss of shape `(batch_dim,)` + """ + return -self.log_prob(input.unsqueeze(0), condition)[0] def log_prob_iid(self, input: Tensor, condition: Tensor) -> Tensor: """Return logprob given a batch of iid input and a different batch of condition. diff --git a/sbi/neural_nets/density_estimators/nflows_flow.py b/sbi/neural_nets/density_estimators/nflows_flow.py index a5d3c066b..c7143ba9b 100644 --- a/sbi/neural_nets/density_estimators/nflows_flow.py +++ b/sbi/neural_nets/density_estimators/nflows_flow.py @@ -52,20 +52,6 @@ def inverse_transform(self, input: Tensor, condition: Tensor) -> Tensor: Returns: noise: Transformed inputs. - - Note: - This function should support PyTorch's automatic broadcasting. This means - the function should behave as follows for different input and condition - shapes: - - (input_size,) + (batch_size,*condition_shape) -> (batch_size,) - - (batch_size, input_size) + (*condition_shape) -> (batch_size,) - - (batch_size, input_size) + (batch_size, *condition_shape) -> (batch_size,) - - (batch_size1, input_size) + (batch_size2, *condition_shape) - -> RuntimeError i.e. not broadcastable - - (batch_size1,1, input_size) + (batch_size2, *condition_shape) - -> (batch_size1,batch_size2) - - (batch_size1, input_size) + (batch_size2,1, *condition_shape) - -> (batch_size2,batch_size1) """ self._check_condition_shape(condition) condition_dims = len(self.condition_shape) @@ -121,17 +107,16 @@ def log_prob(self, input: Tensor, condition: Tensor) -> Tensor: return log_probs.reshape((input_sample_dim, input_batch_dim)) def loss(self, input: Tensor, condition: Tensor) -> Tensor: - r"""Return the loss for training the density estimator. + r"""Return the negative log-probability for training the density estimator. Args: - input: Inputs to evaluate the loss on of shape - `(sample_dim, batch_dim, *event_shape)`. - condition: Conditions of shape `(sample_dim, batch_dim, *event_dim)`. + input: Inputs of shape `(batch_dim, *input_event_shape)`. + condition: Conditions of shape `(batch_dim, *condition_event_shape)`. Returns: - Negative log_probability of shape `(input_sample_dim, condition_batch_dim)`. + Negative log-probability of shape `(batch_dim,)`. """ - return -self.log_prob(input, condition) + return -self.log_prob(input.unsqueeze(0), condition)[0] def sample(self, sample_shape: Shape, condition: Tensor) -> Tensor: r"""Return samples from the density estimator. diff --git a/sbi/neural_nets/density_estimators/zuko_flow.py b/sbi/neural_nets/density_estimators/zuko_flow.py index fe01fe259..f68cd71b5 100644 --- a/sbi/neural_nets/density_estimators/zuko_flow.py +++ b/sbi/neural_nets/density_estimators/zuko_flow.py @@ -121,18 +121,17 @@ def log_prob(self, input: Tensor, condition: Tensor) -> Tensor: return log_probs def loss(self, input: Tensor, condition: Tensor) -> Tensor: - r"""Return the loss for training the density estimator. + r"""Return the negative log-probability for training the density estimator. Args: - input: Inputs to evaluate the loss on of shape - `(sample_dim, batch_dim, *event_shape)`. - condition: Conditions of shape `(sample_dim, batch_dim, *event_dim)`. + input: Inputs of shape `(batch_dim, *input_event_shape)`. + condition: Conditions of shape `(batch_dim, *condition_event_shape)`. Returns: - Negative log_probability of shape `(input_sample_dim, condition_batch_dim)`. + Negative log-probability of shape `(batch_dim,)`. """ - return -self.log_prob(input, condition) + return -self.log_prob(input.unsqueeze(0), condition)[0] def sample(self, sample_shape: Shape, condition: Tensor) -> Tensor: r"""Return samples from the density estimator. diff --git a/tests/density_estimator_test.py b/tests/density_estimator_test.py index 03fe3c055..b643fada1 100644 --- a/tests/density_estimator_test.py +++ b/tests/density_estimator_test.py @@ -150,8 +150,8 @@ def test_density_estimator_loss_shapes( input_sample_dim, ) - losses = density_estimator.loss(inputs, condition=conditions) - assert losses.shape == (input_sample_dim, batch_dim) + losses = density_estimator.loss(inputs[0], condition=conditions) + assert losses.shape == (batch_dim,) @pytest.mark.parametrize( @@ -193,8 +193,8 @@ def test_density_estimator_log_prob_shapes_with_embedding( input_sample_dim, ) - losses = density_estimator.log_prob(inputs, condition=conditions) - assert losses.shape == (input_sample_dim, batch_dim) + log_probs = density_estimator.log_prob(inputs, condition=conditions) + assert log_probs.shape == (input_sample_dim, batch_dim) @pytest.mark.parametrize( @@ -228,7 +228,7 @@ def test_density_estimator_sample_shapes( condition_event_shape, batch_dim, ): - """Test whether `loss` of DensityEstimators follow the shape convention.""" + """Test whether `sample` of DensityEstimators follow the shape convention.""" density_estimator, _, conditions = _build_density_estimator_and_tensors( density_estimator_build_fn, input_event_shape, condition_event_shape, batch_dim ) @@ -264,13 +264,13 @@ def test_density_estimator_sample_shapes( @pytest.mark.parametrize("input_event_shape", ((1,), (4,))) @pytest.mark.parametrize("condition_event_shape", ((1,), (7,))) @pytest.mark.parametrize("batch_dim", (1, 10)) -def test_correctness_of_density_estimator_loss( +def test_correctness_of_density_estimator_log_prob( density_estimator_build_fn, input_event_shape, condition_event_shape, batch_dim, ): - """Test whether identical inputs lead to identical loss values.""" + """Test whether identical inputs lead to identical log_prob values.""" input_sample_dim = 2 density_estimator, inputs, condition = _build_density_estimator_and_tensors( density_estimator_build_fn, @@ -279,8 +279,8 @@ def test_correctness_of_density_estimator_loss( batch_dim, input_sample_dim, ) - losses = density_estimator.loss(inputs, condition=condition) - assert torch.allclose(losses[0, :], losses[1, :]) + log_probs = density_estimator.log_prob(inputs, condition=condition) + assert torch.allclose(log_probs[0, :], log_probs[1, :]) def _build_density_estimator_and_tensors( From 1fadce3bdcb8a68656f57883fa5d732d5d554e6a Mon Sep 17 00:00:00 2001 From: Matthijs Pals <34062419+Matthijspals@users.noreply.github.com> Date: Mon, 29 Apr 2024 13:37:22 +0200 Subject: [PATCH 44/53] pairplot refactoring (#1084) * start testing options of plotting function * Move definition of offdiag_func to get_offdiag_func * opts to kwargs, offdiag plotting func * refactor marginal plots * reformat grid arranger * reformat pairplot * 2d plots working * backwards compatibility * points are back * subplots also working again * first draft of the tutorial * update notebooks before merge * plotting tutorial v0 * transposed col and rows fix * eps xlim fig_kwarg * precommit * fix too long lines * reformat with ruff * allow overwrite bin heuristic with specified bins * remove list brackets * reformat wit ruff * fix pyright * ignore pyright errors, fix proposed in #1102 * Checking return types * Warning-free testing of pairplot * Added typing (incl return types) * reformat with rufus.. * start fixing pyright errors appearing with python 3.8 * (Hopefully) fixed all pyright errors * fix ruff error * Update sbi/analysis/plot.py Co-authored-by: Jan * Update sbi/analysis/plot.py Co-authored-by: Jan * Update sbi/analysis/plot.py Co-authored-by: Jan * Update sbi/analysis/plot.py Co-authored-by: Jan * Update sbi/analysis/plot.py Co-authored-by: Jan * Update sbi/analysis/plot.py Co-authored-by: Jan * update according to Jan's comments, add kde2d func * fix long line endings * add note unused args, update tutorial legends --------- Co-authored-by: Matthijs Co-authored-by: Fabio Muratore Co-authored-by: Jan --- pyproject.toml | 6 +- sbi/analysis/plot.py | 1924 ++++++++++++++++----- tests/plot_test.py | 9 +- tutorials/17_plotting_functionality.ipynb | 450 +++++ 4 files changed, 1935 insertions(+), 454 deletions(-) create mode 100644 tutorials/17_plotting_functionality.ipynb diff --git a/pyproject.toml b/pyproject.toml index 027a83f08..267af9884 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -115,9 +115,11 @@ quote-style = "preserve" [tool.pytest.ini_options] minversion = "6.0" addopts = "-ra -q" -testpaths = [ - "tests", +filterwarnings = [ + "ignore::DeprecationWarning", + "ignore::PendingDeprecationWarning" ] +testpaths = ["tests"] markers = [ "slow: marks tests as slow (deselect with '-m \"not slow\"')", "gpu: marks tests that require a gpu (deselect with '-m \"not gpu\"')", diff --git a/sbi/analysis/plot.py b/sbi/analysis/plot.py index 27d43fe16..052eb392e 100644 --- a/sbi/analysis/plot.py +++ b/sbi/analysis/plot.py @@ -2,8 +2,8 @@ # under the Affero General Public License v3, see . import collections -from logging import warn -from typing import Any, Dict, List, Optional, Tuple, Union +from typing import Any, Callable, Dict, List, Optional, Tuple, Union +from warnings import warn import matplotlib as mpl import numpy as np @@ -12,7 +12,7 @@ from matplotlib import pyplot as plt from matplotlib.axes import Axes from matplotlib.figure import Figure, FigureBase -from scipy.stats import binom, gaussian_kde +from scipy.stats import binom, gaussian_kde, iqr from torch import Tensor from sbi.analysis import eval_conditional_density @@ -23,33 +23,428 @@ collectionsAbc = collections -def hex2rgb(hex): - # Pass 16 to the integer function for change of base +def hex2rgb(hex: str) -> List[int]: + """Pass 16 to the integer function for change of base""" return [int(hex[i : i + 2], 16) for i in range(1, 6, 2)] -def rgb2hex(RGB): - # Components need to be integers for hex to make sense +def rgb2hex(RGB: List[int]) -> str: + """Components need to be integers for hex to make sense""" RGB = [int(x) for x in RGB] return "#" + "".join([ "0{0:x}".format(v) if v < 16 else "{0:x}".format(v) for v in RGB ]) -def _update(d, u): - # https://stackoverflow.com/a/3233356 - for k, v in six.iteritems(u): - dv = d.get(k, {}) - if not isinstance(dv, collectionsAbc.Mapping): # type: ignore - d[k] = v - elif isinstance(v, collectionsAbc.Mapping): # type: ignore - d[k] = _update(dv, v) - else: - d[k] = v +def to_list_string( + x: Optional[Union[str, List[Optional[str]]]], len: int +) -> List[Optional[str]]: + """If x is not a list, make it a list of strings of length `len`.""" + if not isinstance(x, list): + return [x for _ in range(len)] + return x + + +def to_list_kwargs( + x: Optional[Union[Dict, List[Optional[Dict]]]], len: int +) -> List[Optional[Dict]]: + """If x is not a list, make it a list of dicts of length `len`.""" + if not isinstance(x, list): + return [x for _ in range(len)] + return x + + +def _update(d: Dict, u: Optional[Dict]) -> Dict: + """update dictionary with user input, see: https://stackoverflow.com/a/3233356""" + if u is not None: + for k, v in six.iteritems(u): + dv = d.get(k, {}) + if not isinstance(dv, collectionsAbc.Mapping): # type: ignore + d[k] = v + elif isinstance(v, collectionsAbc.Mapping): # type: ignore + d[k] = _update(dv, v) + else: + d[k] = v return d -def _format_axis(ax, xhide=True, yhide=True, xlabel="", ylabel="", tickformatter=None): +# Plotting functions +def plt_hist_1d( + ax: Axes, + samples: np.ndarray, + limits: torch.Tensor, + diag_kwargs: Dict, +) -> None: + """Plot 1D histogram.""" + if ( + "bins" not in diag_kwargs['mpl_kwargs'] + or diag_kwargs['mpl_kwargs']["bins"] is None + ): + if diag_kwargs["bin_heuristic"] == "Freedman-Diaconis": + # The Freedman-Diaconis heuristic + binsize = 2 * iqr(samples) * len(samples) ** (-1 / 3) + diag_kwargs['mpl_kwargs']["bins"] = np.arange( + limits[0], limits[1] + binsize, binsize + ) + else: + # TODO: add more bin heuristics + pass + if isinstance(diag_kwargs['mpl_kwargs']["bins"], int): + diag_kwargs['mpl_kwargs']["bins"] = np.linspace( + limits[0], limits[1], diag_kwargs['mpl_kwargs']["bins"] + ) + ax.hist(samples, **diag_kwargs['mpl_kwargs']) + + +def plt_kde_1d( + ax: Axes, + samples: np.ndarray, + limits: torch.Tensor, + diag_kwargs: Dict, +) -> None: + """Run 1D kernel density estimation on samples and plot it on a given axes.""" + density = gaussian_kde(samples, bw_method=diag_kwargs["bw_method"]) + xs = np.linspace(limits[0], limits[1], diag_kwargs["bins"]) + ys = density(xs) + ax.plot(xs, ys, **diag_kwargs['mpl_kwargs']) + + +def plt_scatter_1d( + ax: Axes, + samples: np.ndarray, + limits: torch.Tensor, + diag_kwargs: Dict, +) -> None: + """Plot vertical lines for each sample. Note: limits are not used.""" + for single_sample in samples: + ax.axvline(single_sample, **diag_kwargs['mpl_kwargs']) + + +def plt_hist_2d( + ax: Axes, + samples_col: np.ndarray, + samples_row: np.ndarray, + limits_col: torch.Tensor, + limits_row: torch.Tensor, + offdiag_kwargs: Dict, +): + """Plot 2D histogram.""" + if ( + "bins" not in offdiag_kwargs['np_hist_kwargs'] + or offdiag_kwargs['np_hist_kwargs']["bins"] is None + ): + if offdiag_kwargs["bin_heuristic"] == "Freedman-Diaconis": + # The Freedman-Diaconis heuristic applied to each direction + binsize_col = 2 * iqr(samples_col) * len(samples_col) ** (-1 / 3) + n_bins_col = int((limits_col[1] - limits_col[0]) / binsize_col) + binsize_row = 2 * iqr(samples_row) * len(samples_row) ** (-1 / 3) + n_bins_row = int((limits_row[1] - limits_row[0]) / binsize_row) + offdiag_kwargs['np_hist_kwargs']["bins"] = [n_bins_col, n_bins_row] + else: + # TODO: add more bin heuristics + pass + hist, xedges, yedges = np.histogram2d( + samples_col, + samples_row, + range=[ + [limits_col[0], limits_col[1]], + [limits_row[0], limits_row[1]], + ], + **offdiag_kwargs['np_hist_kwargs'], + ) + ax.imshow( + hist.T, + extent=( + xedges[0], + xedges[-1], + yedges[0], + yedges[-1], + ), + **offdiag_kwargs['mpl_kwargs'], + ) + + +def plt_kde_2d( + ax: Axes, + samples_col: np.ndarray, + samples_row: np.ndarray, + limits_col: torch.Tensor, + limits_row: torch.Tensor, + offdiag_kwargs: Dict, +) -> None: + """Run 2D Kernel Density Estimation and plot it on given axis.""" + X, Y, Z = get_kde(samples_col, samples_row, limits_col, limits_row, offdiag_kwargs) + + ax.imshow( + Z, + extent=( + limits_col[0], + limits_col[1], + limits_row[0], + limits_row[1], + ), + **offdiag_kwargs['mpl_kwargs'], + ) + + +def plt_contour_2d( + ax: Axes, + samples_col: np.ndarray, + samples_row: np.ndarray, + limits_col: torch.Tensor, + limits_row: torch.Tensor, + offdiag_kwargs: Dict, +) -> None: + """2D Contour based on Kernel Density Estimation.""" + + X, Y, Z = get_kde(samples_col, samples_row, limits_col, limits_row, offdiag_kwargs) + + ax.contour( + X, + Y, + Z, + extent=( + limits_col[0], + limits_col[1], + limits_row[0], + limits_row[1], + ), + levels=offdiag_kwargs["levels"], + **offdiag_kwargs['mpl_kwargs'], + ) + + +def plt_scatter_2d( + ax: Axes, + samples_col: np.ndarray, + samples_row: np.ndarray, + limits_col: torch.Tensor, + limits_row: torch.Tensor, + offdiag_kwargs: Dict, +) -> None: + """Scatter plot 2D. Note: limits are not used""" + ax.scatter( + samples_col, + samples_row, + **offdiag_kwargs['mpl_kwargs'], + ) + + +def plt_plot_2d( + ax: Axes, + samples_col: np.ndarray, + samples_row: np.ndarray, + limits_col: torch.Tensor, + limits_row: torch.Tensor, + offdiag_kwargs: Dict, +) -> None: + """Plot 2D trajectory. Note: limits are not used.""" + + ax.plot( + samples_col, + samples_row, + **offdiag_kwargs['mpl_kwargs'], + ) + + +def get_kde( + samples_col: np.ndarray, + samples_row: np.ndarray, + limits_col: torch.Tensor, + limits_row: torch.Tensor, + offdiag_kwargs: dict, +) -> Tuple[np.ndarray, np.ndarray, np.ndarray]: + """2D Kernel Density Estimation.""" + + density = gaussian_kde( + np.array([samples_col, samples_row]), + bw_method=offdiag_kwargs["bw_method"], + ) + X, Y = np.meshgrid( + np.linspace( + limits_col[0], + limits_col[1], + offdiag_kwargs["bins"], + ), + np.linspace( + limits_row[0], + limits_row[1], + offdiag_kwargs["bins"], + ), + ) + positions = np.vstack([X.ravel(), Y.ravel()]) + Z = np.reshape(density(positions).T, X.shape) + if "percentile" in offdiag_kwargs and "levels" in offdiag_kwargs: + Z = probs2contours(Z, offdiag_kwargs["levels"]) + else: + Z = (Z - Z.min()) / (Z.max() - Z.min()) + return X, Y, Z + + +def get_diag_funcs( + diag_list: List[Optional[str]], +) -> List[ + Union[ + Callable[ + [ + Axes, + np.ndarray, + torch.Tensor, + Dict, + ], + None, + ], + None, + ] +]: + """make a list of the functions for the diagonal plots.""" + diag_funcs = [] + for diag in diag_list: + if diag == 'hist': + diag_funcs.append(plt_hist_1d) + elif diag == 'kde': + diag_funcs.append(plt_kde_1d) + elif diag == 'scatter': + diag_funcs.append(plt_scatter_1d) + else: + diag_funcs.append(None) + + return diag_funcs + + +def get_offdiag_funcs( + off_diag_list: List[Optional[str]], +) -> List[ + Union[ + Callable[ + [ + Axes, + np.ndarray, + torch.Tensor, + Dict, + ], + None, + ], + None, + ] +]: + """make a list of the functions for the off-diagonal plots.""" + offdiag_funcs = [] + for offdiag in off_diag_list: + if offdiag == 'hist' or offdiag == 'hist2d': + offdiag_funcs.append(plt_hist_2d) + elif offdiag == 'kde' or offdiag == 'kde2d': + offdiag_funcs.append(plt_kde_2d) + elif offdiag == 'contour' or offdiag == 'contourf': + offdiag_funcs.append(plt_contour_2d) + elif offdiag == 'scatter': + offdiag_funcs.append(plt_scatter_2d) + elif offdiag == 'plot': + offdiag_funcs.append(plt_plot_2d) + else: + offdiag_funcs.append(None) + return offdiag_funcs + + +def _format_subplot( + ax: Axes, + current: str, + limits: Union[List, torch.Tensor], + ticks: Optional[Union[List, torch.Tensor]], + labels_dim: List[str], + fig_kwargs: Dict, + row: int, + col: int, + dim: int, + flat: bool, + excl_lower: bool, +) -> None: + """ + Format subplot according to fig_kwargs and other arguments + Args: + ax: matplotlib axis + current: str, 'diag','upper' or 'lower' + limits: list of lists, limits for each dimension + ticks: list of lists, ticks for each dimension + labels_dim: list of strings, labels for each dimension + fig_kwargs: dict, figure kwargs + row: int, row index + col: int, column index + dim: int, number of dimensions + flat: bool, whether the plot is flat (1 row) + excl_lower: bool, whether lower triangle is empty + + """ + + # Background color + if ( + current in fig_kwargs["fig_bg_colors"] + and fig_kwargs["fig_bg_colors"][current] is not None + ): + ax.set_facecolor(fig_kwargs["fig_bg_colors"][current]) + # Limits + if current == "diag": + eps = fig_kwargs["x_lim_add_eps"] + ax.set_xlim((limits[col][0] - eps, limits[col][1] + eps)) + else: + ax.set_xlim((limits[col][0], limits[col][1])) + + if current != "diag": + ax.set_ylim((limits[row][0], limits[row][1])) + + # Ticks + if ticks is not None: + ax.set_xticks((ticks[col][0], ticks[col][1])) # pyright: ignore[reportCallIssue] + if current != "diag": + ax.set_yticks((ticks[row][0], ticks[row][1])) # pyright: ignore[reportCallIssue] + + # make square + if fig_kwargs["square_subplots"]: + ax.set_box_aspect(1) + # Despine + ax.spines["right"].set_visible(False) + ax.spines["top"].set_visible(False) + ax.spines["bottom"].set_position(("outward", fig_kwargs["despine"]["offset"])) + + # Formatting axes + if current == "diag": # diagonals + if excl_lower or col == dim - 1 or flat: + _format_axis( + ax, + xhide=False, + xlabel=labels_dim[col], + yhide=True, + tickformatter=fig_kwargs["tickformatter"], + ) + else: + _format_axis(ax, xhide=True, yhide=True) + else: # off-diagonals + if row == dim - 1: + _format_axis( + ax, + xhide=False, + xlabel=labels_dim[col], + yhide=True, + tickformatter=fig_kwargs["tickformatter"], + ) + else: + _format_axis(ax, xhide=True, yhide=True) + if fig_kwargs["tick_labels"] is not None: + ax.set_xticklabels(( # pyright: ignore[reportCallIssue] + str(fig_kwargs["tick_labels"][col][0]), + str(fig_kwargs["tick_labels"][col][1]), + )) + + +def _format_axis( + ax: Axes, + xhide: bool = True, + yhide: bool = True, + xlabel: str = "", + ylabel: str = "", + tickformatter=None, +) -> Axes: + """Format axis spines and ticks.""" for loc in ["right", "top", "left", "bottom"]: ax.spines[loc].set_visible(False) if xhide: @@ -66,7 +461,7 @@ def _format_axis(ax, xhide=True, yhide=True, xlabel="", ylabel="", tickformatter ax.xaxis.set_tick_params(labelbottom=True) if tickformatter is not None: ax.xaxis.set_major_formatter(tickformatter) - ax.spines["bottom"].set_visible(True) + ax.spines["bottom"].set_visible(True) # pyright: ignore[reportCallIssue] if not yhide: ax.set_ylabel(ylabel) ax.yaxis.set_ticks_position("left") @@ -77,22 +472,21 @@ def _format_axis(ax, xhide=True, yhide=True, xlabel="", ylabel="", tickformatter return ax -def probs2contours(probs, levels): +def probs2contours( + probs: np.ndarray, + levels: Union[List, torch.Tensor, np.ndarray], +) -> np.ndarray: """Takes an array of probabilities and produces an array of contours at specified percentile levels. - Parameters - ---------- - probs : array - Probability array. doesn't have to sum to 1, but it is assumed it contains all - the mass - levels : list - Percentile levels, have to be in [0.0, 1.0]. Specifies contour levels that - include a given proportion of samples, i.e., 0.1 specifies where the top 10% of - the density is. - Return - ------ - Array of same shape as probs with percentile labels. Values in output array - denote labels which percentile bin the probability mass belongs to. + Args: + probs: Probability array. doesn't have to sum to 1, but it is assumed it + contains all the mass + levels: Percentile levels, have to be in [0.0, 1.0]. Specifies contour levels + that include a given proportion of samples, i.e., 0.1 specifies where the + top 10% of the density is. + Returns: + contours: Array of same shape as probs with percentile labels. Values in output + array denote labels which percentile bin the probability mass belongs to. Example: for levels = [0.1, 0.5], output array will take on values [1.0, 0.5, 0.1], where elements labeled "0.1" correspond to the top 10% of the density, "0.5" @@ -140,7 +534,10 @@ def ensure_numpy(t: Union[np.ndarray, torch.Tensor]) -> np.ndarray: return t -def prepare_for_plot(samples, limits): +def prepare_for_plot( + samples: Union[List[np.ndarray], List[torch.Tensor], np.ndarray, torch.Tensor], + limits: Optional[Union[List, torch.Tensor, np.ndarray]], +) -> Tuple[List[np.ndarray], int, torch.Tensor]: """ Ensures correct formatting for samples and limits, and returns dimension of the samples. @@ -151,8 +548,7 @@ def prepare_for_plot(samples, limits): samples = ensure_numpy(samples) samples = [samples] else: - for i, _ in enumerate(samples): - samples[i] = ensure_numpy(samples[i]) + samples = [ensure_numpy(sample) for sample in samples] # Dimensionality of the problem. dim = samples[0].shape[1] @@ -198,48 +594,6 @@ def prepare_for_conditional_plot(condition, opts): return dim, limits, eps_margins -def get_diag_func(samples, limits, opts, **kwargs): - """ - Returns the diag_func which returns the 1D marginal plot for the parameter - indexed by row. - """ - - def diag_func(row, **kwargs): - if len(samples) > 0: - for n, v in enumerate(samples): - if opts["diag"][n] == "hist": - plt.hist( - v[:, row], - color=opts["samples_colors"][n], - label=opts["samples_labels"][n], - **opts["hist_diag"], - ) - elif opts["diag"][n] == "kde": - density = gaussian_kde( - v[:, row], bw_method=opts["kde_diag"]["bw_method"] - ) - xs = np.linspace( - limits[row, 0], limits[row, 1], opts["kde_diag"]["bins"] - ) - ys = density(xs) - plt.plot( - xs, - ys, - color=opts["samples_colors"][n], - ) - elif "offdiag" in opts and opts["offdiag"][n] == "scatter": - for single_sample in v: - plt.axvline( - single_sample[row], - color=opts["samples_colors"][n], - **opts["scatter_diag"], - ) - else: - pass - - return diag_func - - def get_conditional_diag_func(opts, limits, eps_margins, resolution): """ Returns the diag_func which returns the 1D marginal conditional plot for @@ -281,16 +635,21 @@ def pairplot( ] = None, limits: Optional[Union[List, torch.Tensor]] = None, subset: Optional[List[int]] = None, - offdiag: Optional[Union[List[str], str]] = "hist", - diag: Optional[Union[List[str], str]] = "hist", + upper: Optional[Union[List[Optional[str]], str]] = "hist", + lower: Optional[Union[List[Optional[str]], str]] = None, + diag: Optional[Union[List[Optional[str]], str]] = "hist", figsize: Tuple = (10, 10), labels: Optional[List[str]] = None, ticks: Optional[Union[List, torch.Tensor]] = None, - upper: Optional[str] = None, - fig=None, - axes=None, - **kwargs, -): + offdiag: Optional[Union[List[Optional[str]], str]] = None, + diag_kwargs: Optional[Union[List[Optional[Dict]], Dict]] = None, + upper_kwargs: Optional[Union[List[Optional[Dict]], Dict]] = None, + lower_kwargs: Optional[Union[List[Optional[Dict]], Dict]] = None, + fig_kwargs: Optional[Dict] = None, + fig: Optional[FigureBase] = None, + axes: Optional[Axes] = None, + **kwargs: Optional[Any], +) -> Tuple[FigureBase, Axes]: """ Plot samples in a 2D grid showing marginals and pairwise marginals. @@ -306,157 +665,121 @@ def pairplot( subset: List containing the dimensions to plot. E.g. subset=[1,3] will plot plot only the 1st and 3rd dimension but will discard the 0th and 2nd (and, if they exist, the 4th, 5th and so on). - offdiag: Plotting style for upper diagonal, {hist, scatter, contour, cond, + upper: Plotting style for upper diagonal, {hist, scatter, contour, kde, None}. - upper: deprecated, use offdiag instead. - diag: Plotting style for diagonal, {hist, cond, None}. + lower: Plotting style for upper diagonal, {hist, scatter, contour, kde, + None}. + diag: Plotting style for diagonal, {hist, scatter, kde}. figsize: Size of the entire figure. labels: List of strings specifying the names of the parameters. ticks: Position of the ticks. + offdiag: deprecated, use upper instead. + diag_kwargs: Additional arguments to adjust the diagonal plot, + see the source code in `_get_default_diag_kwarg()` + upper_kwargs: Additional arguments to adjust the upper diagonal plot, + see the source code in `_get_default_offdiag_kwarg()` + lower_kwargs: Additional arguments to adjust the lower diagonal plot, + see the source code in `_get_default_offdiag_kwarg()` + fig_kwargs: Additional arguments to adjust the overall figure, + see the source code in `_get_default_fig_kwargs()` fig: matplotlib figure to plot on. axes: matplotlib axes corresponding to fig. - **kwargs: Additional arguments to adjust the plot, e.g., `samples_colors`, - `points_colors` and many more, see the source code in `_get_default_opts()` - in `sbi.analysis.plot` for details. + **kwargs: Additional arguments to adjust the plot (deprecated). Returns: figure and axis of posterior distribution plot """ - # TODO: add color map support - # TODO: automatically determine good bin sizes for histograms - # TODO: add legend (if legend is True) - - opts = _get_default_opts() - # update the defaults dictionary by the current values of the variables (passed by - # the user) - - opts = _update(opts, locals()) - opts = _update(opts, kwargs) + # Backwards compatibility + if len(kwargs) > 0: + warn( + "**kwargs are deprecated, use fig_kwargs instead. \n \ + Calling the to be deprecated pairplot function", + DeprecationWarning, + stacklevel=2, + ) + fig, axes = pairplot_dep( + samples, + points, + limits, + subset, + offdiag, + diag, + figsize, + labels, + ticks, + upper, + fig, + axes, + **kwargs, + ) + return fig, axes samples, dim, limits = prepare_for_plot(samples, limits) + # prepate figure kwargs + fig_kwargs_filled = _get_default_fig_kwargs() + # update the defaults dictionary with user provided values + fig_kwargs_filled = _update(fig_kwargs_filled, fig_kwargs) + # checks. - if opts["legend"]: - assert len(opts["samples_labels"]) >= len( + if fig_kwargs_filled["legend"]: + assert len(fig_kwargs_filled["samples_labels"]) >= len( samples ), "Provide at least as many labels as samples." - if opts["upper"] is not None: - warn("upper is deprecated, use offdiag instead.", stacklevel=2) - opts["offdiag"] = opts["upper"] - - # Prepare diag/upper/lower - if not isinstance(opts["diag"], list): - opts["diag"] = [opts["diag"] for _ in range(len(samples))] - if not isinstance(opts["offdiag"], list): - opts["offdiag"] = [opts["offdiag"] for _ in range(len(samples))] - # if type(opts['lower']) is not list: - # opts['lower'] = [opts['lower'] for _ in range(len(samples))] - opts["lower"] = None - - diag_func = get_diag_func(samples, limits, opts, **kwargs) - - def offdiag_func(row, col, limits, **kwargs): - if len(samples) > 0: - for n, v in enumerate(samples): - if opts["offdiag"][n] == "hist" or opts["offdiag"][n] == "hist2d": - hist, xedges, yedges = np.histogram2d( - v[:, col], - v[:, row], - range=[ - [limits[col][0], limits[col][1]], - [limits[row][0], limits[row][1]], - ], - **opts["hist_offdiag"], - ) - plt.imshow( - hist.T, - origin="lower", - extent=( - xedges[0], - xedges[-1], - yedges[0], - yedges[-1], - ), - aspect="auto", - ) - - elif opts["offdiag"][n] in [ - "kde", - "kde2d", - "contour", - "contourf", - ]: - density = gaussian_kde( - v[:, [col, row]].T, - bw_method=opts["kde_offdiag"]["bw_method"], - ) - X, Y = np.meshgrid( - np.linspace( - limits[col][0], - limits[col][1], - opts["kde_offdiag"]["bins"], - ), - np.linspace( - limits[row][0], - limits[row][1], - opts["kde_offdiag"]["bins"], - ), - ) - positions = np.vstack([X.ravel(), Y.ravel()]) - Z = np.reshape(density(positions).T, X.shape) - - if opts["offdiag"][n] == "kde" or opts["offdiag"][n] == "kde2d": - plt.imshow( - Z, - extent=( - limits[col][0], - limits[col][1], - limits[row][0], - limits[row][1], - ), - origin="lower", - aspect="auto", - ) - elif opts["offdiag"][n] == "contour": - if opts["contour_offdiag"]["percentile"]: - Z = probs2contours(Z, opts["contour_offdiag"]["levels"]) - else: - Z = (Z - Z.min()) / (Z.max() - Z.min()) - plt.contour( - X, - Y, - Z, - origin="lower", - extent=[ - limits[col][0], - limits[col][1], - limits[row][0], - limits[row][1], - ], - colors=opts["samples_colors"][n], - levels=opts["contour_offdiag"]["levels"], - ) - else: - pass - elif opts["offdiag"][n] == "scatter": - plt.scatter( - v[:, col], - v[:, row], - color=opts["samples_colors"][n], - **opts["scatter_offdiag"], - ) - elif opts["offdiag"][n] == "plot": - plt.plot( - v[:, col], - v[:, row], - color=opts["samples_colors"][n], - **opts["plot_offdiag"], - ) - else: - pass - - return _arrange_plots( - diag_func, offdiag_func, dim, limits, points, opts, fig=fig, axes=axes + if offdiag is not None: + warn("offdiag is deprecated, use upper or lower instead.", stacklevel=2) + upper = offdiag + + # Prepare diag + diag_list = to_list_string(diag, len(samples)) + diag_kwargs_list = to_list_kwargs(diag_kwargs, len(samples)) + diag_func = get_diag_funcs(diag_list) + diag_kwargs_filled = [] + for i, (diag_i, diag_kwargs_i) in enumerate(zip(diag_list, diag_kwargs_list)): + diag_kwarg_filled_i = _get_default_diag_kwargs(diag_i, i) + # update the defaults dictionary with user provided values + diag_kwarg_filled_i = _update(diag_kwarg_filled_i, diag_kwargs_i) + diag_kwargs_filled.append(diag_kwarg_filled_i) + + # Prepare upper + upper_list = to_list_string(upper, len(samples)) + upper_kwargs_list = to_list_kwargs(upper_kwargs, len(samples)) + upper_func = get_offdiag_funcs(upper_list) + upper_kwargs_filled = [] + for i, (upper_i, upper_kwargs_i) in enumerate(zip(upper_list, upper_kwargs_list)): + upper_kwarg_filled_i = _get_default_offdiag_kwargs(upper_i, i) + # update the defaults dictionary with user provided values + upper_kwarg_filled_i = _update(upper_kwarg_filled_i, upper_kwargs_i) + upper_kwargs_filled.append(upper_kwarg_filled_i) + + # Prepare lower + lower_list = to_list_string(lower, len(samples)) + lower_kwargs_list = to_list_kwargs(lower_kwargs, len(samples)) + lower_func = get_offdiag_funcs(lower_list) + lower_kwargs_filled = [] + for i, (lower_i, lower_kwargs_i) in enumerate(zip(lower_list, lower_kwargs_list)): + lower_kwarg_filled_i = _get_default_offdiag_kwargs(lower_i, i) + # update the defaults dictionary with user provided values + lower_kwarg_filled_i = _update(lower_kwarg_filled_i, lower_kwargs_i) + lower_kwargs_filled.append(lower_kwarg_filled_i) + + return _arrange_grid( + diag_func, + upper_func, + lower_func, + diag_kwargs_filled, + upper_kwargs_filled, + lower_kwargs_filled, + samples, + points, + limits, + subset, + figsize, + labels, + ticks, + fig, + axes, + fig_kwargs_filled, ) @@ -467,14 +790,16 @@ def marginal_plot( ] = None, limits: Optional[Union[List, torch.Tensor]] = None, subset: Optional[List[int]] = None, - diag: Optional[str] = "hist", - figsize: Tuple = (10, 10), + diag: Optional[Union[List[Optional[str]], str]] = "hist", + figsize: Optional[Tuple] = (10, 2), labels: Optional[List[str]] = None, ticks: Optional[Union[List, torch.Tensor]] = None, - fig=None, - axes=None, - **kwargs, -): + diag_kwargs: Optional[Union[List[Optional[Dict]], Dict]] = None, + fig_kwargs: Optional[Dict] = None, + fig: Optional[FigureBase] = None, + axes: Optional[Axes] = None, + **kwargs: Optional[Any], +) -> Tuple[FigureBase, Axes]: """ Plot samples in a row showing 1D marginals of selected dimensions. @@ -493,34 +818,188 @@ def marginal_plot( figsize: Size of the entire figure. labels: List of strings specifying the names of the parameters. ticks: Position of the ticks. - points_colors: Colors of the `points`. + diag_kwargs: Additional arguments to adjust the diagonal plot, + see the source code in `_get_default_diag_kwarg()` + fig_kwargs: Additional arguments to adjust the overall figure, + see the source code in `_get_default_fig_kwargs()` fig: matplotlib figure to plot on. axes: matplotlib axes corresponding to fig. - **kwargs: Additional arguments to adjust the plot, e.g., `samples_colors`, - `points_colors` and many more, see the source code in `_get_default_opts()` - in `sbi.analysis.plot` for details. - + **kwargs: Additional arguments to adjust the plot (deprecated) Returns: figure and axis of posterior distribution plot """ - opts = _get_default_opts() - # update the defaults dictionary by the current values of the variables (passed by - # the user) - - opts = _update(opts, locals()) - opts = _update(opts, kwargs) + # backwards compatibility + if len(kwargs) > 0: + warn( + "**kwargs are deprecated, use fig_kwargs instead.\n\ + calling the to be deprecated marginal_plot function", + DeprecationWarning, + stacklevel=2, + ) + fig, axes = marginal_plot_dep( + samples, + points, + limits, + subset, + diag, + figsize, + labels, + ticks, + fig, + axes, + **kwargs, + ) + return fig, axes samples, dim, limits = prepare_for_plot(samples, limits) - # Prepare diag/upper/lower - if not isinstance(opts["diag"], list): - opts["diag"] = [opts["diag"] for _ in range(len(samples))] + # prepare kwargs and functions of the subplots + diag_list = to_list_string(diag, len(samples)) + diag_kwargs_list = to_list_kwargs(diag_kwargs, len(samples)) + diag_func = get_diag_funcs(diag_list) + diag_kwargs_filled = [] + for i, (diag_i, diag_kwargs_i) in enumerate(zip(diag_list, diag_kwargs_list)): + diag_kwarg_filled_i = _get_default_diag_kwargs(diag_i, i) + diag_kwarg_filled_i = _update(diag_kwarg_filled_i, diag_kwargs_i) + diag_kwargs_filled.append(diag_kwarg_filled_i) + + # prepare fig_kwargs + fig_kwargs_filled = _get_default_fig_kwargs() + fig_kwargs_filled = _update(fig_kwargs_filled, fig_kwargs) + + # generate plot + return _arrange_grid( + diag_func, + [None], + [None], + diag_kwargs_filled, + [None], + [None], + samples, + points, + limits, + subset, + figsize, + labels, + ticks, + fig, + axes, + fig_kwargs_filled, + ) - diag_func = get_diag_func(samples, limits, opts, **kwargs) - return _arrange_plots( - diag_func, None, dim, limits, points, opts, fig=fig, axes=axes - ) +def _get_default_offdiag_kwargs(offdiag: Optional[str], i: int = 0) -> Dict: + """Get default offdiag kwargs.""" + + if offdiag == "kde" or offdiag == "kde2d": + offdiag_kwargs = { + "bw_method": "scott", + "bins": 50, + "mpl_kwargs": {"cmap": "viridis", "origin": "lower"}, + } + + elif offdiag == "hist" or offdiag == "hist2d": + offdiag_kwargs = { + "bin_heuristic": None, # "Freedman-Diaconis", + "mpl_kwargs": {"cmap": "viridis", "origin": "lower"}, + "np_hist_kwargs": {"bins": 50, "density": False}, + } + + elif offdiag == "scatter": + offdiag_kwargs = { + "mpl_kwargs": { + "color": plt.rcParams["axes.prop_cycle"].by_key()["color"][i * 2], # pyright: ignore[reportOptionalMemberAccess] + "edgecolor": "white", + "alpha": 0.5, + "rasterized": False, + } + } + elif offdiag == "contour" or offdiag == "contourf": + offdiag_kwargs = { + "bw_method": "scott", + "bins": 50, + "levels": [0.68, 0.95, 0.99], + "percentile": True, + "mpl_kwargs": { + "colors": plt.rcParams["axes.prop_cycle"].by_key()["color"][i * 2] # pyright: ignore[reportOptionalMemberAccess] + }, + } + elif offdiag == "plot": + offdiag_kwargs = { + "mpl_kwargs": { + "color": plt.rcParams["axes.prop_cycle"].by_key()["color"][i * 2] # pyright: ignore[reportOptionalMemberAccess] + } + } + else: + offdiag_kwargs = {} + return offdiag_kwargs + + +def _get_default_diag_kwargs(diag: Optional[str], i: int = 0) -> Dict: + """Get default diag kwargs.""" + if diag == "kde": + diag_kwargs = { + "bw_method": "scott", + "bins": 50, + "mpl_kwargs": { + "color": plt.rcParams["axes.prop_cycle"].by_key()["color"][i * 2] # pyright: ignore[reportOptionalMemberAccess] + }, + } + + elif diag == "hist": + diag_kwargs = { + "bin_heuristic": "Freedman-Diaconis", + "mpl_kwargs": { + "color": plt.rcParams["axes.prop_cycle"].by_key()["color"][i * 2], # pyright: ignore[reportOptionalMemberAccess] + "density": False, + "histtype": "step", + }, + } + elif diag == "scatter": + diag_kwargs = { + "mpl_kwargs": { + "color": plt.rcParams["axes.prop_cycle"].by_key()["color"][i * 2] # pyright: ignore[reportOptionalMemberAccess] + } + } + else: + diag_kwargs = {} + return diag_kwargs + + +def _get_default_fig_kwargs() -> Dict: + """Get default figure kwargs.""" + return { + "legend": None, + "legend_kwargs": {}, + # labels + "points_labels": [f"points_{idx}" for idx in range(10)], # for points + "samples_labels": [f"samples_{idx}" for idx in range(10)], # for samples + # colors: take even colors for samples, odd colors for points + "samples_colors": plt.rcParams["axes.prop_cycle"].by_key()["color"][0::2], # pyright: ignore[reportOptionalMemberAccess] + "points_colors": plt.rcParams["axes.prop_cycle"].by_key()["color"][1::2], # pyright: ignore[reportOptionalMemberAccess] + # ticks + "tickformatter": mpl.ticker.FormatStrFormatter("%g"), # type: ignore + "tick_labels": None, + # formatting points (scale, markers) + "points_diag": {}, + "points_offdiag": { + "marker": ".", + "markersize": 10, + }, + # other options + "fig_bg_colors": {"offdiag": None, "diag": None, "lower": None}, + "fig_subplots_adjust": { + "top": 0.9, + }, + "subplots": {}, + "despine": { + "offset": 5, + }, + "title": None, + "title_format": {"fontsize": 16}, + "x_lim_add_eps": 1e-5, + "square_subplots": True, + } def conditional_marginal_plot( @@ -700,34 +1179,61 @@ def offdiag_func(row, col, **kwargs): ) -def _arrange_plots( - diag_func, offdiag_func, dim, limits, points, opts, fig=None, axes=None -): +def _arrange_grid( + diag_funcs: List[Optional[Callable]], + upper_funcs: List[Optional[Callable]], + lower_funcs: List[Optional[Callable]], + diag_kwargs: List[Optional[Dict]], + upper_kwargs: List[Optional[Dict]], + lower_kwargs: List[Optional[Dict]], + samples: List[np.ndarray], + points: Optional[ + Union[List[np.ndarray], List[torch.Tensor], np.ndarray, torch.Tensor] + ], + limits: torch.Tensor, + subset: Optional[List[int]], + figsize: Optional[Tuple], + labels: Optional[List[str]], + ticks: Optional[Union[List, torch.Tensor]], + fig: Optional[FigureBase], + axes: Optional[Axes], + fig_kwargs: Dict, +) -> Tuple[FigureBase, Axes]: """ Arranges the plots for any function that plots parameters either in a row of 1D marginals or a pairplot setting. Args: - diag_func: Plotting function that will be executed for the diagonal elements of - the plot (or the columns of a row of 1D marginals). It will be passed the - current `row` (i.e. which parameter that is to be plotted) and the `limits` - for all dimensions. - offdiag_func: Plotting function that will be executed for the upper-diagonal - elements of the plot. It will be passed the current `row` and `col` (i.e. - which parameters are to be plotted and the `limits` for all dimensions. None - if we are in a 1D setting. - dim: The dimensionality of the density. - limits: Limits for each parameter. - points: Additional points to be scatter-plotted. - opts: Dictionary built by the functions that call `_arrange_plots`. Must - contain at least `labels`, `subset`, `figsize`, `subplots`, - `fig_subplots_adjust`, `title`, `title_format`, .. + diag_funcs: List of plotting function that will be executed for the diagonal + elements of the plot (or the columns of a row of 1D marginals). + upper_funcs: List of plotting function that will be executed for the + upper-diagonal elements of the plot. None if we are in a 1D setting. + lower_funcs: List of plotting function that will be executed for the + lower-diagonal elements of the plot. None if we are in a 1D setting. + diag_kwargs: Additional arguments to adjust the diagonal plot, + see the source code in `_get_default_diag_kwarg()` + upper_kwargs: Additional arguments to adjust the upper diagonal plot, + see the source code in `_get_default_offdiag_kwarg()` + lower_kwargs: Additional arguments to adjust the lower diagonal plot, + see the source code in `_get_default_offdiag_kwarg()` + samples: List of samples given to the plotting functions + points: List of additional points to scatter. + limits: Limits for each dimension / axis. + subset: List containing the dimensions to plot. E.g. subset=[1,3] will plot + plot only the 1st and 3rd dimension + figsize: Size of the entire figure. + labels: List of strings specifying the names of the parameters. + ticks: Position of the ticks. fig: matplotlib figure to plot on. axes: matplotlib axes corresponding to fig. + fig_kwargs: Additional arguments to adjust the overall figure, + see the source code in `_get_default_fig_kwargs()` - Returns: figure and axis + Returns: + Fig: matplotlib figure + Axes: matplotlib axes """ - + dim = samples[0].shape[1] # Prepare points if points is None: points = [] @@ -736,26 +1242,20 @@ def _arrange_plots( points = [points] points = [np.atleast_2d(p) for p in points] points = [np.atleast_2d(ensure_numpy(p)) for p in points] - # TODO: add asserts checking compatibility of dimensions # Prepare labels - if opts["labels"] == [] or opts["labels"] is None: - labels_dim = ["dim {}".format(i + 1) for i in range(dim)] - else: - labels_dim = opts["labels"] + if labels == [] or labels is None: + labels = ["dim {}".format(i + 1) for i in range(dim)] # Prepare ticks - if opts["ticks"] == [] or opts["ticks"] is None: - ticks = None - else: - if len(opts["ticks"]) == 1: - ticks = [opts["ticks"][0] for _ in range(dim)] - else: - ticks = opts["ticks"] + if ticks is not None: + if len(ticks) == 1: + ticks = [ticks[0] for _ in range(dim)] + elif ticks == []: + ticks = None # Figure out if we subset the plot - subset = opts["subset"] if subset is None: rows = cols = dim subset = [i for i in range(dim)] @@ -767,155 +1267,145 @@ def _arrange_plots( else: raise NotImplementedError rows = cols = len(subset) - flat = offdiag_func is None + + # check which subplots are empty + excl_lower = all(v is None for v in lower_funcs) + excl_upper = all(v is None for v in upper_funcs) + excl_diag = all(v is None for v in diag_funcs) + flat = excl_lower and excl_upper + + # select the subset of rows and cols to be plotted if flat: rows = 1 - opts["lower"] = None + subset_rows = [1] + else: + subset_rows = subset + subset_cols = subset # Create fig and axes if they were not passed. if fig is None or axes is None: - fig, axes = plt.subplots( - rows, cols, figsize=opts["figsize"], **opts["subplots"] - ) + fig, axes = plt.subplots(rows, cols, figsize=figsize, **fig_kwargs["subplots"]) # pyright: ignore reportAssignmenttype else: - assert axes.shape == ( + assert axes.shape == ( # pyright: ignore reportAttributeAccessIssue rows, cols, ), f"Passed axes must match subplot shape: {rows, cols}." - # Cast to ndarray in case of 1D subplots. - axes = np.array(axes).reshape(rows, cols) # Style figure - fig.subplots_adjust(**opts["fig_subplots_adjust"]) - fig.suptitle(opts["title"], **opts["title_format"]) - - # Style axes - row_idx = -1 - for row in range(dim): - if row not in subset: - continue - - if not flat: - row_idx += 1 - - col_idx = -1 - for col in range(dim): - if col not in subset: - continue - else: - col_idx += 1 + fig.subplots_adjust(**fig_kwargs["fig_subplots_adjust"]) + fig.suptitle(fig_kwargs["title"], **fig_kwargs["title_format"]) + # Main Loop through all subplots, style and create the figures + for row_idx, row in enumerate(subset_rows): + for col_idx, col in enumerate(subset_cols): if flat or row == col: current = "diag" elif row < col: - current = "offdiag" + current = "upper" else: current = "lower" - ax = axes[row_idx, col_idx] - plt.sca(ax) - - # Background color - if ( - current in opts["fig_bg_colors"] - and opts["fig_bg_colors"][current] is not None - ): - ax.set_facecolor(opts["fig_bg_colors"][current]) - - # Axes - if opts[current] is None: - ax.axis("off") - continue - - # Limits - ax.set_xlim((limits[col][0], limits[col][1])) - if current != "diag": - ax.set_ylim((limits[row][0], limits[row][1])) - - # Ticks - if ticks is not None: - ax.set_xticks((ticks[col][0], ticks[col][1])) - if current != "diag": - ax.set_yticks((ticks[row][0], ticks[row][1])) - - # Despine - ax.spines["right"].set_visible(False) - ax.spines["top"].set_visible(False) - ax.spines["bottom"].set_position(("outward", opts["despine"]["offset"])) - - # Formatting axes - if current == "diag": # off-diagnoals - if opts["lower"] is None or col == dim - 1 or flat: - _format_axis( - ax, - xhide=False, - xlabel=labels_dim[col], - yhide=True, - tickformatter=opts["tickformatter"], - ) - else: - _format_axis(ax, xhide=True, yhide=True) - else: # off-diagnoals - if row == dim - 1: - _format_axis( - ax, - xhide=False, - xlabel=labels_dim[col], - yhide=True, - tickformatter=opts["tickformatter"], - ) - else: - _format_axis(ax, xhide=True, yhide=True) - if opts["tick_labels"] is not None: - ax.set_xticklabels(( - str(opts["tick_labels"][col][0]), - str(opts["tick_labels"][col][1]), - )) + ax = axes[col_idx] if flat else axes[row_idx, col_idx] # pyright: ignore reportIndexIssue # Diagonals + _format_subplot( + ax, + current, + limits, + ticks, + labels, + fig_kwargs, + row, + col, + dim, + flat, + excl_lower, + ) if current == "diag": - diag_func(row=col, limits=limits) + if excl_diag: + ax.axis("off") + else: + for sample_ind, sample in enumerate(samples): + diag_f = diag_funcs[sample_ind] + if callable(diag_f): # is callable: + diag_f( + ax, sample[:, row], limits[row], diag_kwargs[sample_ind] + ) if len(points) > 0: extent = ax.get_ylim() for n, v in enumerate(points): - plt.plot( + ax.plot( [v[:, col], v[:, col]], extent, - color=opts["points_colors"][n], - **opts["points_diag"], - label=opts["points_labels"][n], + color=fig_kwargs["points_colors"][n], + **fig_kwargs["points_diag"], + label=fig_kwargs["points_labels"][n], ) - if opts["legend"] and col == 0: - plt.legend(**opts["legend_kwargs"]) + if fig_kwargs["legend"] and col == 0: + ax.legend(**fig_kwargs["legend_kwargs"]) # Off-diagonals - else: - offdiag_func( - row=row, - col=col, - limits=limits, - ) - - if len(points) > 0: - for n, v in enumerate(points): - plt.plot( - v[:, col], - v[:, row], - color=opts["points_colors"][n], - **opts["points_offdiag"], - ) + # upper + elif current == "upper": + if excl_upper: + ax.axis("off") + else: + for sample_ind, sample in enumerate(samples): + upper_f = upper_funcs[sample_ind] + if callable(upper_f): + upper_f( + ax, + sample[:, col], + sample[:, row], + limits[col], + limits[row], + upper_kwargs[sample_ind], + ) + if len(points) > 0: + for n, v in enumerate(points): + ax.plot( + v[:, col], + v[:, row], + color=fig_kwargs["points_colors"][n], + **fig_kwargs["points_offdiag"], + ) + # lower + elif current == "lower": + if excl_lower: + ax.axis("off") + else: + for sample_ind, sample in enumerate(samples): + lower_f = lower_funcs[sample_ind] + if callable(lower_f): + lower_f( + ax, + sample[:, row], + sample[:, col], + limits[row], + limits[col], + lower_kwargs[sample_ind], + ) + if len(points) > 0: + for n, v in enumerate(points): + ax.plot( + v[:, col], + v[:, row], + color=fig_kwargs["points_colors"][n], + **fig_kwargs["points_offdiag"], + ) + # Add dots if we subset if len(subset) < dim: if flat: - ax = axes[0, len(subset) - 1] + ax = axes[len(subset) - 1] # pyright: ignore[reportIndexIssue, reportOptionalSubscript] x0, x1 = ax.get_xlim() y0, y1 = ax.get_ylim() text_kwargs = {"fontsize": plt.rcParams["font.size"] * 2.0} # pyright: ignore[reportOptionalOperand] ax.text(x1 + (x1 - x0) / 8.0, (y0 + y1) / 2.0, "...", **text_kwargs) else: for row in range(len(subset)): - ax = axes[row, len(subset) - 1] + ax = axes[row, len(subset) - 1] # pyright: ignore[reportIndexIssue, reportOptionalSubscript] x0, x1 = ax.get_xlim() y0, y1 = ax.get_ylim() text_kwargs = {"fontsize": plt.rcParams["font.size"] * 2.0} # pyright: ignore[reportOptionalOperand] @@ -929,70 +1419,7 @@ def _arrange_plots( **text_kwargs, ) - return fig, axes - - -def _get_default_opts(): - """Return default values for plotting specs.""" - return { - # 'lower': None, # hist/scatter/None # TODO: implement - # title and legend - "title": None, - "legend": False, - "legend_kwargs": {}, - # labels - "points_labels": [f"points_{idx}" for idx in range(10)], # for points - "samples_labels": [f"samples_{idx}" for idx in range(10)], # for samples - # colors: take even colors for samples, odd colors for points - "samples_colors": plt.rcParams["axes.prop_cycle"].by_key()["color"][0::2], # pyright: ignore[reportOptionalMemberAccess] - "points_colors": plt.rcParams["axes.prop_cycle"].by_key()["color"][1::2], # pyright: ignore[reportOptionalMemberAccess] - # ticks - "ticks": [], - "tickformatter": mpl.ticker.FormatStrFormatter("%g"), # type: ignore - "tick_labels": None, - # options for hist - "hist_diag": { - "alpha": 1.0, - "bins": 50, - "density": False, - "histtype": "step", - }, - "hist_offdiag": { - # 'edgecolor': 'none', - # 'linewidth': 0.0, - "bins": 50, - }, - # options for kde - "kde_diag": {"bw_method": "scott", "bins": 50, "color": "black"}, - "kde_offdiag": {"bw_method": "scott", "bins": 50}, - # options for contour - "contour_offdiag": {"levels": [0.68], "percentile": True}, - # options for scatter - "scatter_offdiag": { - "alpha": 0.5, - "edgecolor": "none", - "rasterized": False, - }, - "scatter_diag": {}, - # options for plot - "plot_offdiag": {}, - # formatting points (scale, markers) - "points_diag": {}, - "points_offdiag": { - "marker": ".", - "markersize": 10, - }, - # other options - "fig_bg_colors": {"offdiag": None, "diag": None, "lower": None}, - "fig_subplots_adjust": { - "top": 0.9, - }, - "subplots": {}, - "despine": { - "offset": 5, - }, - "title_format": {"fontsize": 16}, - } + return fig, axes # pyright: ignore[reportReturnType] def sbc_rank_plot( @@ -1403,3 +1830,600 @@ def _plot_hist_region_expected_under_uniformity( color=color, alpha=alpha, ) + + +# TO BE DEPRECATED +# ---------------- +def pairplot_dep( + samples: Union[List[np.ndarray], List[torch.Tensor], np.ndarray, torch.Tensor], + points: Optional[ + Union[List[np.ndarray], List[torch.Tensor], np.ndarray, torch.Tensor] + ] = None, + limits: Optional[Union[List, torch.Tensor]] = None, + subset: Optional[List[int]] = None, + offdiag: Optional[Union[List[Optional[str]], str]] = "hist", + diag: Optional[Union[List[Optional[str]], str]] = "hist", + figsize: Optional[Tuple] = (10, 10), + labels: Optional[List[str]] = None, + ticks: Optional[Union[List, torch.Tensor]] = None, + upper: Optional[Union[List[Optional[str]], str]] = None, + fig: Optional[FigureBase] = None, + axes: Optional[Axes] = None, + **kwargs: Optional[Any], +) -> Tuple[FigureBase, Axes]: + """ + Plot samples in a 2D grid showing marginals and pairwise marginals. + + Each of the diagonal plots can be interpreted as a 1D-marginal of the distribution + that the samples were drawn from. Each upper-diagonal plot can be interpreted as a + 2D-marginal of the distribution. + + Args: + samples: Samples used to build the histogram. + points: List of additional points to scatter. + limits: Array containing the plot xlim for each parameter dimension. If None, + just use the min and max of the passed samples + subset: List containing the dimensions to plot. E.g. subset=[1,3] will plot + plot only the 1st and 3rd dimension but will discard the 0th and 2nd (and, + if they exist, the 4th, 5th and so on). + offdiag: Plotting style for upper diagonal, {hist, scatter, contour, cond, + None}. + upper: deprecated, use offdiag instead. + diag: Plotting style for diagonal, {hist, cond, None}. + figsize: Size of the entire figure. + labels: List of strings specifying the names of the parameters. + ticks: Position of the ticks. + fig: matplotlib figure to plot on. + axes: matplotlib axes corresponding to fig. + **kwargs: Additional arguments to adjust the plot, e.g., `samples_colors`, + `points_colors` and many more, see the source code in `_get_default_opts()` + in `sbi.analysis.plot` for details. + + Returns: figure and axis of posterior distribution plot + """ + + opts = _get_default_opts() + # update the defaults dictionary by the current values of the variables (passed by + # the user) + + opts = _update(opts, locals()) + opts = _update(opts, kwargs) + + samples, dim, limits = prepare_for_plot(samples, limits) + + # checks. + if opts["legend"]: + assert len(opts["samples_labels"]) >= len( + samples + ), "Provide at least as many labels as samples." + if opts["upper"] is not None: + opts["offdiag"] = opts["upper"] + + # Prepare diag/upper/lower + if not isinstance(opts["diag"], list): + opts["diag"] = [opts["diag"] for _ in range(len(samples))] + if not isinstance(opts["offdiag"], list): + opts["offdiag"] = [opts["offdiag"] for _ in range(len(samples))] + # if type(opts['lower']) is not list: + # opts['lower'] = [opts['lower'] for _ in range(len(samples))] + opts["lower"] = None + + diag_func = get_diag_func(samples, limits, opts, **kwargs) + + def offdiag_func(row, col, limits, **kwargs): + if len(samples) > 0: + for n, v in enumerate(samples): + if opts["offdiag"][n] == "hist" or opts["offdiag"][n] == "hist2d": + hist, xedges, yedges = np.histogram2d( + v[:, col], + v[:, row], + range=[ + [limits[col][0], limits[col][1]], + [limits[row][0], limits[row][1]], + ], + **opts["hist_offdiag"], + ) + plt.imshow( + hist.T, + origin="lower", + extent=( + xedges[0], + xedges[-1], + yedges[0], + yedges[-1], + ), + aspect="auto", + ) + + elif opts["offdiag"][n] in [ + "kde", + "kde2d", + "contour", + "contourf", + ]: + density = gaussian_kde( + v[:, [col, row]].T, + bw_method=opts["kde_offdiag"]["bw_method"], + ) + X, Y = np.meshgrid( + np.linspace( + limits[col][0], + limits[col][1], + opts["kde_offdiag"]["bins"], + ), + np.linspace( + limits[row][0], + limits[row][1], + opts["kde_offdiag"]["bins"], + ), + ) + positions = np.vstack([X.ravel(), Y.ravel()]) + Z = np.reshape(density(positions).T, X.shape) + + if opts["offdiag"][n] == "kde" or opts["offdiag"][n] == "kde2d": + plt.imshow( + Z, + extent=( + limits[col][0], + limits[col][1], + limits[row][0], + limits[row][1], + ), + origin="lower", + aspect="auto", + ) + elif opts["offdiag"][n] == "contour": + if opts["contour_offdiag"]["percentile"]: + Z = probs2contours(Z, opts["contour_offdiag"]["levels"]) + else: + Z = (Z - Z.min()) / (Z.max() - Z.min()) + plt.contour( + X, + Y, + Z, + origin="lower", + extent=[ + limits[col][0], + limits[col][1], + limits[row][0], + limits[row][1], + ], + colors=opts["samples_colors"][n], + levels=opts["contour_offdiag"]["levels"], + ) + else: + pass + elif opts["offdiag"][n] == "scatter": + plt.scatter( + v[:, col], + v[:, row], + color=opts["samples_colors"][n], + **opts["scatter_offdiag"], + ) + elif opts["offdiag"][n] == "plot": + plt.plot( + v[:, col], + v[:, row], + color=opts["samples_colors"][n], + **opts["plot_offdiag"], + ) + else: + pass + + return _arrange_plots( + diag_func, offdiag_func, dim, limits, points, opts, fig=fig, axes=axes + ) + + +def marginal_plot_dep( + samples: Union[List[np.ndarray], List[torch.Tensor], np.ndarray, torch.Tensor], + points: Optional[ + Union[List[np.ndarray], List[torch.Tensor], np.ndarray, torch.Tensor] + ] = None, + limits: Optional[Union[List, torch.Tensor]] = None, + subset: Optional[List[int]] = None, + diag: Optional[Union[List[Optional[str]], str]] = "hist", + figsize: Optional[Tuple] = (10, 10), + labels: Optional[List[str]] = None, + ticks: Optional[Union[List, torch.Tensor]] = None, + fig: Optional[FigureBase] = None, + axes: Optional[Axes] = None, + **kwargs: Optional[Any], +) -> Tuple[FigureBase, Axes]: + """ + Plot samples in a row showing 1D marginals of selected dimensions. + + Each of the plots can be interpreted as a 1D-marginal of the distribution + that the samples were drawn from. + + Args: + samples: Samples used to build the histogram. + points: List of additional points to scatter. + limits: Array containing the plot xlim for each parameter dimension. If None, + just use the min and max of the passed samples + subset: List containing the dimensions to plot. E.g. subset=[1,3] will plot + plot only the 1st and 3rd dimension but will discard the 0th and 2nd (and, + if they exist, the 4th, 5th and so on). + diag: Plotting style for 1D marginals, {hist, kde cond, None}. + figsize: Size of the entire figure. + labels: List of strings specifying the names of the parameters. + ticks: Position of the ticks. + points_colors: Colors of the `points`. + fig: matplotlib figure to plot on. + axes: matplotlib axes corresponding to fig. + **kwargs: Additional arguments to adjust the plot, e.g., `samples_colors`, + `points_colors` and many more, see the source code in `_get_default_opts()` + in `sbi.analysis.plot` for details. + + Returns: figure and axis of posterior distribution plot + """ + + opts = _get_default_opts() + # update the defaults dictionary by the current values of the variables (passed by + # the user) + + opts = _update(opts, locals()) + opts = _update(opts, kwargs) + + samples, dim, limits = prepare_for_plot(samples, limits) + + # Prepare diag/upper/lower + if not isinstance(opts["diag"], list): + opts["diag"] = [opts["diag"] for _ in range(len(samples))] + + diag_func = get_diag_func(samples, limits, opts, **kwargs) + + return _arrange_plots( + diag_func, None, dim, limits, points, opts, fig=fig, axes=axes + ) + + +def get_diag_func(samples, limits, opts, **kwargs): + """ + Returns the diag_func which returns the 1D marginal plot for the parameter + indexed by row. + """ + warn( + "get_diag_func will be deprecated, use get_diag_funcs instead", + PendingDeprecationWarning, + stacklevel=2, + ) + + def diag_func(row, **kwargs): + if len(samples) > 0: + for n, v in enumerate(samples): + if opts["diag"][n] == "hist": + plt.hist( + v[:, row], + color=opts["samples_colors"][n], + label=opts["samples_labels"][n], + **opts["hist_diag"], + ) + elif opts["diag"][n] == "kde": + density = gaussian_kde( + v[:, row], bw_method=opts["kde_diag"]["bw_method"] + ) + xs = np.linspace( + limits[row, 0], limits[row, 1], opts["kde_diag"]["bins"] + ) + ys = density(xs) + plt.plot( + xs, + ys, + color=opts["samples_colors"][n], + ) + elif "offdiag" in opts and opts["offdiag"][n] == "scatter": + for single_sample in v: + plt.axvline( + single_sample[row], + color=opts["samples_colors"][n], + **opts["scatter_diag"], + ) + else: + pass + + return diag_func + + +def _arrange_plots( + diag_func, offdiag_func, dim, limits, points, opts, fig=None, axes=None +): + """ + Arranges the plots for any function that plots parameters either in a row of 1D + marginals or a pairplot setting. + + Args: + diag_func: Plotting function that will be executed for the diagonal elements of + the plot (or the columns of a row of 1D marginals). It will be passed the + current `row` (i.e. which parameter that is to be plotted) and the `limits` + for all dimensions. + offdiag_func: Plotting function that will be executed for the upper-diagonal + elements of the plot. It will be passed the current `row` and `col` (i.e. + which parameters are to be plotted and the `limits` for all dimensions. None + if we are in a 1D setting. + dim: The dimensionality of the density. + limits: Limits for each parameter. + points: Additional points to be scatter-plotted. + opts: Dictionary built by the functions that call `_arrange_plots`. Must + contain at least `labels`, `subset`, `figsize`, `subplots`, + `fig_subplots_adjust`, `title`, `title_format`, .. + fig: matplotlib figure to plot on. + axes: matplotlib axes corresponding to fig. + + Returns: figure and axis + """ + warn( + "_arrange_plots will be deprecated, use _arrange_grid instead", + PendingDeprecationWarning, + stacklevel=2, + ) + + # Prepare points + if points is None: + points = [] + if not isinstance(points, list): + points = ensure_numpy(points) # type: ignore + points = [points] + points = [np.atleast_2d(p) for p in points] + points = [np.atleast_2d(ensure_numpy(p)) for p in points] + + # TODO: add asserts checking compatibility of dimensions + + # Prepare labels + if opts["labels"] == [] or opts["labels"] is None: + labels_dim = ["dim {}".format(i + 1) for i in range(dim)] + else: + labels_dim = opts["labels"] + + # Prepare ticks + if opts["ticks"] == [] or opts["ticks"] is None: + ticks = None + else: + if len(opts["ticks"]) == 1: + ticks = [opts["ticks"][0] for _ in range(dim)] + else: + ticks = opts["ticks"] + + # Figure out if we subset the plot + subset = opts["subset"] + if subset is None: + rows = cols = dim + subset = [i for i in range(dim)] + else: + if isinstance(subset, int): + subset = [subset] + elif isinstance(subset, list): + pass + else: + raise NotImplementedError + rows = cols = len(subset) + flat = offdiag_func is None + if flat: + rows = 1 + opts["lower"] = None + + # Create fig and axes if they were not passed. + if fig is None or axes is None: + fig, axes = plt.subplots( + rows, cols, figsize=opts["figsize"], **opts["subplots"] + ) + else: + assert axes.shape == ( + rows, + cols, + ), f"Passed axes must match subplot shape: {rows, cols}." + # Cast to ndarray in case of 1D subplots. + axes = np.array(axes).reshape(rows, cols) + + # Style figure + fig.subplots_adjust(**opts["fig_subplots_adjust"]) + fig.suptitle(opts["title"], **opts["title_format"]) + + # Style axes + row_idx = -1 + for row in range(dim): + if row not in subset: + continue + + if not flat: + row_idx += 1 + + col_idx = -1 + for col in range(dim): + if col not in subset: + continue + else: + col_idx += 1 + + if flat or row == col: + current = "diag" + elif row < col: + current = "offdiag" + else: + current = "lower" + + ax = axes[row_idx, col_idx] + plt.sca(ax) + + # Background color + if ( + current in opts["fig_bg_colors"] + and opts["fig_bg_colors"][current] is not None + ): + ax.set_facecolor(opts["fig_bg_colors"][current]) + + # Axes + if opts[current] is None: + ax.axis("off") + continue + + # Limits + ax.set_xlim((limits[col][0], limits[col][1])) + if current != "diag": + ax.set_ylim((limits[row][0], limits[row][1])) + + # Ticks + if ticks is not None: + ax.set_xticks((ticks[col][0], ticks[col][1])) + if current != "diag": + ax.set_yticks((ticks[row][0], ticks[row][1])) + + # Despine + ax.spines["right"].set_visible(False) + ax.spines["top"].set_visible(False) + ax.spines["bottom"].set_position(("outward", opts["despine"]["offset"])) + + # Formatting axes + if current == "diag": # off-diagnoals + if opts["lower"] is None or col == dim - 1 or flat: + _format_axis( + ax, + xhide=False, + xlabel=labels_dim[col], + yhide=True, + tickformatter=opts["tickformatter"], + ) + else: + _format_axis(ax, xhide=True, yhide=True) + else: # off-diagnoals + if row == dim - 1: + _format_axis( + ax, + xhide=False, + xlabel=labels_dim[col], + yhide=True, + tickformatter=opts["tickformatter"], + ) + else: + _format_axis(ax, xhide=True, yhide=True) + if opts["tick_labels"] is not None: + ax.set_xticklabels(( + str(opts["tick_labels"][col][0]), + str(opts["tick_labels"][col][1]), + )) + + # Diagonals + if current == "diag": + diag_func(row=col, limits=limits) + + if len(points) > 0: + extent = ax.get_ylim() + for n, v in enumerate(points): + plt.plot( + [v[:, col], v[:, col]], + extent, + color=opts["points_colors"][n], + **opts["points_diag"], + label=opts["points_labels"][n], + ) + if opts["legend"] and col == 0: + plt.legend(**opts["legend_kwargs"]) + + # Off-diagonals + else: + offdiag_func( + row=row, + col=col, + limits=limits, + ) + + if len(points) > 0: + for n, v in enumerate(points): + plt.plot( + v[:, col], + v[:, row], + color=opts["points_colors"][n], + **opts["points_offdiag"], + ) + + if len(subset) < dim: + if flat: + ax = axes[0, len(subset) - 1] + x0, x1 = ax.get_xlim() + y0, y1 = ax.get_ylim() + text_kwargs = {"fontsize": plt.rcParams["font.size"] * 2.0} # pyright: ignore[reportOptionalOperand] + ax.text(x1 + (x1 - x0) / 8.0, (y0 + y1) / 2.0, "...", **text_kwargs) + else: + for row in range(len(subset)): + ax = axes[row, len(subset) - 1] + x0, x1 = ax.get_xlim() + y0, y1 = ax.get_ylim() + text_kwargs = {"fontsize": plt.rcParams["font.size"] * 2.0} # pyright: ignore[reportOptionalOperand] + ax.text(x1 + (x1 - x0) / 8.0, (y0 + y1) / 2.0, "...", **text_kwargs) + if row == len(subset) - 1: + ax.text( + x1 + (x1 - x0) / 12.0, + y0 - (y1 - y0) / 1.5, + "...", + rotation=-45, + **text_kwargs, + ) + + return fig, axes + + +def _get_default_opts(): + warn( + "_get_default_opts will be deprecated, use _get_default_fig_kwargs,\ + get_default_diag_kwargs, get_default_offdiag_kwargs instead", + PendingDeprecationWarning, + stacklevel=2, + ) + return { + # title and legend + "title": None, + "legend": False, + "legend_kwargs": {}, + # labels + "points_labels": [f"points_{idx}" for idx in range(10)], # for points + "samples_labels": [f"samples_{idx}" for idx in range(10)], # for samples + # colors: take even colors for samples, odd colors for points + "samples_colors": plt.rcParams["axes.prop_cycle"].by_key()["color"][0::2], # pyright: ignore[reportOptionalMemberAccess] + "points_colors": plt.rcParams["axes.prop_cycle"].by_key()["color"][1::2], # pyright: ignore[reportOptionalMemberAccess] + # ticks + "ticks": [], + "tickformatter": mpl.ticker.FormatStrFormatter("%g"), # type: ignore + "tick_labels": None, + # options for hist + "hist_diag": { + "alpha": 1.0, + "bins": 50, + "density": False, + "histtype": "step", + }, + "hist_offdiag": { + # 'edgecolor': 'none', + # 'linewidth': 0.0, + "bins": 50, + }, + # options for kde + "kde_diag": {"bw_method": "scott", "bins": 50, "color": "black"}, + "kde_offdiag": {"bw_method": "scott", "bins": 50}, + # options for contour + "contour_offdiag": {"levels": [0.68], "percentile": True}, + # options for scatter + "scatter_offdiag": { + "alpha": 0.5, + "edgecolor": "none", + "rasterized": False, + }, + "scatter_diag": {}, + # options for plot + "plot_offdiag": {}, + # formatting points (scale, markers) + "points_diag": {}, + "points_offdiag": { + "marker": ".", + "markersize": 10, + }, + # other options + "fig_bg_colors": {"offdiag": None, "diag": None, "lower": None}, + "fig_subplots_adjust": { + "top": 0.9, + }, + "subplots": {}, + "despine": { + "offset": 5, + }, + "title_format": {"fontsize": 16}, + } diff --git a/tests/plot_test.py b/tests/plot_test.py index 0ace88e48..7196157f4 100644 --- a/tests/plot_test.py +++ b/tests/plot_test.py @@ -6,7 +6,7 @@ import torch from matplotlib.axes import Axes from matplotlib.figure import Figure -from matplotlib.pyplot import subplots +from matplotlib.pyplot import close, subplots from torch.utils.tensorboard.writer import SummaryWriter from sbi.analysis import pairplot, plot_summary, sbc_rank_plot @@ -24,7 +24,12 @@ def test_pairplot( samples, labels, legend, offdiag, samples_labels, points_labels, points ): - pairplot(**{k: v for k, v in locals().items() if v is not None}) + fig, axs = pairplot(**{k: v for k, v in locals().items() if v is not None}) + + assert isinstance(fig, Figure) + assert isinstance(axs, np.ndarray) + assert isinstance(axs[0, 0], Axes) + close() @pytest.mark.parametrize("method", (SNPE, SNLE, SNRE)) diff --git a/tutorials/17_plotting_functionality.ipynb b/tutorials/17_plotting_functionality.ipynb new file mode 100644 index 000000000..2a8cb6077 --- /dev/null +++ b/tutorials/17_plotting_functionality.ipynb @@ -0,0 +1,450 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import torch\n", + "\n", + "from sbi.analysis.plot import marginal_plot, pairplot" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plotting functionality\n", + "\n", + "Here we will have a look at the different options for finetuning `pairplots` and `marginal_plots`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Lets first draw some samples from the posterior used in a tutorial 7.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from toy_posterior_for_07_cc import ExamplePosterior\n", + "\n", + "posterior = ExamplePosterior()\n", + "posterior_samples = posterior.sample((100,))\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will start with the default plot and gradually make it prettier" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "_ = pairplot(\n", + " posterior_samples,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Customisation\n", + "\n", + "The pairplots are split into three regions, the diagonal (`diag`) and the upper and lower off-diagonal regions(`upper` and `lower`). We can pass seperate arguments (e.g. `hist`, `kde`, `scatter`) for each region, as well as corresponding style keywords in a dictionary (by using e.g. `upper_kwargs`). For overall figure stylisation one can use `fig_kwargs`.\n", + "\n", + "To get a closer look at the potential options, have a look at the `_get_default_fig_kwargs`, `_get_default_diag_kwargs` and `_get_default_offdiag_kwargs` functions in [analysis/plot.py](https://github.com/sbi-dev/sbi/blob/961-pairplot/sbi/analysis/plot.py).\n", + "\n", + "As illustrated below, we can directly use any `matplotlib` keywords (such as `cmap` for images) by passing them in the `mpl_kwargs` entry of `upper_kwargs` or `diag_kwargs`.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Lets now make a scatter plot for the upper diagonal, a histogram for the diagonal, and pass keyword dictionaries for both." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "_ = pairplot(\n", + " posterior_samples, limits=[[-3,3]*3], figsize=(5, 5),\n", + " diag=\"hist\",\n", + " upper=\"scatter\",\n", + " diag_kwargs={\"mpl_kwargs\":{\"bins\":10,\n", + " \"color\":'tab:blue',\n", + " \"edgecolor\":'white',\n", + " \"linewidth\":1,\n", + " \"alpha\":0.6,\n", + " \"histtype\":\"bar\",\n", + " \"fill\":True}},\n", + " upper_kwargs={\"mpl_kwargs\": {\"color\":'tab:blue',\n", + " \"s\":20,\n", + " \"alpha\":.8}},\n", + " labels=[r\"$\\theta_1$\", r\"$\\theta_2$\", r\"$\\theta_3$\"],\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Compare two sets of samples\n", + "\n", + "By passing a list of sets of samples, we can plot two sets of samples on top of each other." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# draw two different subsets of samples to plot\n", + "posterior_samples1 = posterior.sample((20,))\n", + "posterior_samples2 = posterior.sample((20,))\n", + "\n", + "_ = pairplot(\n", + " [posterior_samples1,posterior_samples2], limits=[[-3,3]*3], figsize=(5, 5),\n", + " diag=[\"hist\",\"hist\"],\n", + " upper=[\"scatter\",\"scatter\"],\n", + " diag_kwargs={\"mpl_kwargs\":{\"bins\":10,\n", + " \"edgecolor\":'white',\n", + " \"linewidth\":1,\n", + " \"alpha\":0.6,\n", + " \"histtype\":\"bar\",\n", + " \"fill\":True}},\n", + " upper_kwargs={\"mpl_kwargs\": {\"s\":50,\n", + " \"alpha\":.8}},\n", + " labels=[r\"$\\theta_1$\", r\"$\\theta_2$\", r\"$\\theta_3$\"],\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Multi-layered plots\n", + "\n", + "We can use the same functionality to make a multi-layered plot using the same set of samples, e.g. a kernel-density estimate on top of scatter plot." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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3+Tss8/OeMxDDz3EnXfeSW9v75G9OBMTE5MkxtyH09fXhyAIFBYW5jxu586dVFVVMXXqVG644QZaWlrG+lJGTDQaZd26dSxbtizxmiiKLFu2jJUrVx7FK8tOX18fAMXFxTmP8/v91NbWMmXKFD760Y+yefPmI3F5JiYmJgnGVHDC4TBf/epXue6663JWKV60aBEPPfQQL7zwAg8++CB79uzhrLPOGlVTt7Gks7MTTdOoqKhIeb2iooKDBw8epavKjq7r3HnnnZxxxhnMnTs363EzZ87kd7/7HX/729945JFH0HWd008/ndbW1iN4tSYmJsc7IxKcRx99FLfbnfhZsWJF4neKovCJT3wCwzB48MEHc77PxRdfzNVXX828efO48MIL+cc//kFvby9PPPHE6P6K45QvfOELfPjhh/zpT3/KedySJUu46aabOPnkkznnnHN4+umnKSsr43//93+P0JWamJiYjLAfzuWXX86iRYsS/548eTIwKDbNzc289tprI+7BUlhYyIwZM2hsbBzReWNNaWkpkiTR1taW8npbWxuTJk06SleVmdtvv52///3vvPXWW1RXV4/oXIvFwimnnHLU77eJicnxxYh2OB6Ph2nTpiV+HA5HQmx27tzJK6+8QklJyYgvwu/3s2vXLiorK0d87lhitVqZP38+r776auI1Xdd59dVXWbJkyVG8skEMw+D222/nr3/9K6+99hr19fUjfg9N0/jggw+O+v02MTE5vjjkPJyrrrqKtWvX8uijj6JpGgcPHuTgwYNEo9HEceeff34i6gvgy1/+Mm+++SZNTU28++67XHHFFUiSxHXXXXcolzMm3H333fzmN7/h4YcfZuvWrdx2220EAgFuvvnmo31pQMyM9sgjj/DYY4/h8XgS9zsUCiWOuemmm/jXf/3XxL//8z//k5deeondu3ezfv16brzxRpqbm7nllluOxp9gYmJynDKqFtNx9u3bx7PPPgvAySefnPK7119/nXPPPReAXbt20dnZmfhda2sr1113HV1dXZSVlXHmmWeyatUqysrKDuVyxoRrrrmGjo4OvvnNb3Lw4EFOPvlkXnjhhSGBBEeLuH8sfm/j/P73v+fTn/40AC0tLYji4Fqip6eHW2+9lYMHD1JUVMT8+fN59913mT179pG6bBMTExOzH46JiYmJyZHBrKVmYmJiYnJEMAXH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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "_ = pairplot(\n", + " [posterior_samples,posterior_samples], limits=[[-3,3]*3], figsize=(5, 5),\n", + " diag=[\"hist\",None],\n", + " upper=[\"scatter\",\"contour\"],\n", + " diag_kwargs={\"mpl_kwargs\":{\"bins\":10,\n", + " \"color\":'tab:blue',\n", + " \"edgecolor\":'white',\n", + " \"linewidth\":1,\n", + " \"alpha\":0.6,\n", + " \"histtype\":\"bar\",\n", + " \"fill\":True},},\n", + " upper_kwargs=[{\"mpl_kwargs\": {\"color\":'tab:blue',\n", + " \"s\":20,\n", + " \"alpha\":.8},},\n", + " {\"mpl_kwargs\": {\"cmap\":'Blues_r',\n", + " \"alpha\":.8,\n", + " \"colors\":None}}],\n", + " labels=[r\"$\\theta_1$\", r\"$\\theta_2$\", r\"$\\theta_3$\"],\n", + " fig_kwargs={\"despine\":{\"offset\":0}}\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Lower diagonal\n", + "\n", + "We can add something in the lower off-diagonal as well." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "_ = pairplot(\n", + " [posterior_samples,posterior_samples], limits=[[-3,3]*3], figsize=(5, 5),\n", + " diag=[\"hist\",None],\n", + " upper=[\"scatter\",\"contour\"],\n", + " lower =[\"kde\",None],\n", + " diag_kwargs={\"mpl_kwargs\":{\"bins\":10,\n", + " \"color\":'tab:blue',\n", + " \"edgecolor\":'white',\n", + " \"linewidth\":1,\n", + " \"alpha\":0.6,\n", + " \"histtype\":\"bar\",\n", + " \"fill\":True}},\n", + " upper_kwargs=[{\"mpl_kwargs\": {\"color\":'tab:blue',\n", + " \"s\":20,\n", + " \"alpha\":.8}},\n", + " {\"mpl_kwargs\": {\"cmap\":'Blues_r',\n", + " \"alpha\":.8,\n", + " \"colors\":None}}],\n", + " lower_kwargs={\"mpl_kwargs\": {\"cmap\":\"Blues_r\"}},\n", + " labels=[r\"$\\theta_1$\", r\"$\\theta_2$\", r\"$\\theta_3$\"],\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Adding observed data\n", + "\n", + "We can also add points, e.g., our observed data `x_o` to the plot." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# fake observed data:\n", + "x_o = torch.ones(1,3)\n", + "\n", + "_ = pairplot(\n", + " [posterior_samples,posterior_samples], limits=[[-3,3]*3], figsize=(5, 5),\n", + " diag=[\"hist\",None],\n", + " upper=[\"scatter\",\"contour\"],\n", + " diag_kwargs={\"mpl_kwargs\":{\"bins\":10,\n", + " \"color\":'tab:blue',\n", + " \"edgecolor\":'white',\n", + " \"linewidth\":1,\n", + " \"alpha\":0.6,\n", + " \"histtype\":\"bar\",\n", + " \"fill\":True}},\n", + " upper_kwargs=[{\"mpl_kwargs\": {\"color\":'tab:blue',\n", + " \"s\":20,\n", + " \"alpha\":.8}},\n", + " {\"mpl_kwargs\": {\"cmap\":'Blues_r',\n", + " \"alpha\":.8,\n", + " \"colors\":None}}],\n", + " labels=[r\"$\\theta_1$\", r\"$\\theta_2$\", r\"$\\theta_3$\"],\n", + " points = x_o,\n", + " fig_kwargs={\"points_labels\": [\"x_o\"],\n", + " \"legend\":True,\n", + " \"points_colors\":[\"purple\"],\n", + " \"points_offdiag\" : {\"marker\":\"+\", \"markersize\":20},\n", + " \"despine\":{\"offset\":0}},\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Subsetting the plot\n", + "\n", + "For high-dimensional posteriors, we might only want to visualise a subset, this can by passing a list of entries to plot to the `subset` argument of the `pairplot` function." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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ERGRAAYmERGRAAYmERGRAAYmERGRAAYmERGRAAYmERGRAAYmERGRAAYmERGRAAYmERGRAAYmERGRAAYmERGRAAYmERGRAAYmERGRAAYmERGRAAYmERGRAAYmERGRAAYmERGRAAYmERGRAAYmERGRAAYmERGRAAYmERGRAAYmERGRAAYmERGRAAYmERGRAAYmERGRAAYmEVGBkaR8t4BSseW7AUSUHV8oiq6wZsm1FEmCppuWXIsy47LLkCUJxzuCll3T67Kh0u2w7HrDFQOTqMh1hTX85e0T8FsQmg2VLlzcWGNBqyhTDkVGIKLhxd3NlvxOK1w2LJndwMC0AAOTqAT4wxp8ITXr61S4+JZQKKz6nZJ1OIdJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkgIFJREQkwJbvBhANJ6Zpoqury9JrdvmDsOshOE0962spGtDV5bfkelZeq5DbZpoawggDAMr1MJxSVpez/Odm1zV0+/3wK1rW14rzer2QpCxfaBGSTNM0890IouHC7/ejsrIy380gyorP50NFRUW+mzHkGJhEQygXPUwRfr8fY8eOxbFjx0r6jW64vE4gv691uPYwOSRLNIQkScrrG3lFRUXJBwkwfF4nMLxea75x0Q8REZEABiYREZEABibRMOB0OvHggw/C6XTmuyk5NVxeJzC8Xmuh4KIfIiIiAexhEhERCWBgEhERCWBgEhERCWBgEpU4VVVx//3349xzz0V5eTkaGhrw2c9+FidOnMh30yz305/+FBMmTIDL5cK8efOwefPmfDfJcg8//DAuuugieL1e1NXVYenSpdi3b1++mzUsMDCJSlwwGMT27dvxzW9+E9u3b8czzzyDffv2YcmSJflumqWefvpp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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "_ = pairplot(\n", + " [posterior_samples,posterior_samples], limits=[[-3,3]*3], figsize=(5, 5),\n", + " subset=[0,2],\n", + " diag=[\"hist\",None],\n", + " upper=[\"scatter\",\"contour\"],\n", + " diag_kwargs={\"mpl_kwargs\":{\"bins\":10,\n", + " \"color\":'tab:blue',\n", + " \"edgecolor\":'white',\n", + " \"linewidth\":1,\n", + " \"alpha\":0.6,\n", + " \"histtype\":\"bar\",\n", + " \"fill\":True}},\n", + " upper_kwargs=[{\"mpl_kwargs\": {\"color\":'tab:blue',\n", + " \"s\":20,\n", + " \"alpha\":.8}},\n", + " {\"mpl_kwargs\": {\"cmap\":'Blues_r',\n", + " \"alpha\":.8,\n", + " \"colors\":None}}],\n", + " labels=[r\"$\\theta_1$\", r\"$\\theta_2$\", r\"$\\theta_3$\"],\n", + " points = x_o,\n", + " fig_kwargs={\"points_labels\": [\"x_o\"],\n", + " \"legend\":True,\n", + " \"points_colors\":[\"purple\"],\n", + " \"points_offdiag\" : {\"marker\":\"+\", \"markersize\":20},\n", + " \"despine\":{\"offset\":0}},\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Plot just the marginals\n", + "\n", + "1D Marginals can also be visualised using the `marginal_plot` function" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# plot posterior samples\n", + "_ = marginal_plot(\n", + " [posterior_samples,posterior_samples], limits=[[-3,3]*3],\n", + " subset=[0,1],\n", + " diag=[\"hist\",None],\n", + " diag_kwargs={\"mpl_kwargs\":{\"bins\":10,\n", + " \"color\":'tab:blue',\n", + " \"edgecolor\":'white',\n", + " \"linewidth\":1,\n", + " \"alpha\":0.6,\n", + " \"histtype\":\"bar\",\n", + " \"fill\":True},},\n", + " labels=[r\"$\\theta_1$\", r\"$\\theta_2$\", r\"$\\theta_3$\"],\n", + " points = [torch.ones(1, 3)],\n", + " figsize=(4, 2),\n", + " fig_kwargs={\"points_labels\": [\"x_o\"],\n", + " \"legend\":True,\n", + " \"points_colors\":[\"purple\"],\n", + " \"points_offdiag\" : {\"marker\":\"+\", \"markersize\":20},\n", + " \"despine\":{\"offset\":0}},\n", + ")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.18" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} From c294ade2b56dfe2e235b3c33d40f57b238d119e1 Mon Sep 17 00:00:00 2001 From: Jan Boelts Date: Mon, 18 Mar 2024 10:02:23 +0100 Subject: [PATCH 45/53] change license to Apache-2.0 --- LICENSE.txt | 863 ++++++++++--------------------------------- README.md | 2 +- docs/docs/credits.md | 2 +- pyproject.toml | 3 +- 4 files changed, 205 insertions(+), 665 deletions(-) diff --git a/LICENSE.txt b/LICENSE.txt index be3f7b28e..d64569567 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,661 +1,202 @@ - GNU AFFERO GENERAL PUBLIC LICENSE - Version 3, 19 November 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU Affero General Public License is a free, copyleft license for -software and other kinds of works, specifically designed to ensure -cooperation with the community in the case of network server software. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -our General Public Licenses are intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - Developers that use our General Public Licenses protect your rights -with two steps: (1) assert copyright on the software, and (2) offer -you this License which gives you legal permission to copy, distribute -and/or modify the software. - - A secondary benefit of defending all users' freedom is that -improvements made in alternate versions of the program, if they -receive widespread use, become available for other developers to -incorporate. Many developers of free software are heartened and -encouraged by the resulting cooperation. However, in the case of -software used on network servers, this result may fail to come about. -The GNU General Public License permits making a modified version and -letting the public access it on a server without ever releasing its -source code to the public. - - The GNU Affero General Public License is designed specifically to -ensure that, in such cases, the modified source code becomes available -to the community. It requires the operator of a network server to -provide the source code of the modified version running there to the -users of that server. Therefore, public use of a modified version, on -a publicly accessible server, gives the public access to the source -code of the modified version. - - An older license, called the Affero General Public License and -published by Affero, was designed to accomplish similar goals. This is -a different license, not a version of the Affero GPL, but Affero has -released a new version of the Affero GPL which permits relicensing under -this license. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU Affero General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Remote Network Interaction; Use with the GNU General Public License. - - Notwithstanding any other provision of this License, if you modify the -Program, your modified version must prominently offer all users -interacting with it remotely through a computer network (if your version -supports such interaction) an opportunity to receive the Corresponding -Source of your version by providing access to the Corresponding Source -from a network server at no charge, through some standard or customary -means of facilitating copying of software. This Corresponding Source -shall include the Corresponding Source for any work covered by version 3 -of the GNU General Public License that is incorporated pursuant to the -following paragraph. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the work with which it is combined will remain governed by version -3 of the GNU General Public License. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU Affero General Public License from time to time. Such new versions -will be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU Affero General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU Affero General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU Affero General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If your software can interact with users remotely through a computer -network, you should also make sure that it provides a way for users to -get its source. For example, if your program is a web application, its -interface could display a "Source" link that leads users to an archive -of the code. There are many ways you could offer source, and different -solutions will be better for different programs; see section 13 for the -specific requirements. - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU AGPL, see -. + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md index 3f580aff3..a4afcdf4b 100644 --- a/README.md +++ b/README.md @@ -110,7 +110,7 @@ M. Durkan's `lfi`. `sbi` runs as a community project. See also [credits](https:/ ## License -[Affero General Public License v3 (AGPLv3)](https://www.gnu.org/licenses/) +[Apache License Version 2.0 (Apache-2.0)](https://www.apache.org/licenses/LICENSE-2.0) ## Citation diff --git a/docs/docs/credits.md b/docs/docs/credits.md index 4441d6c97..b83ff961a 100644 --- a/docs/docs/credits.md +++ b/docs/docs/credits.md @@ -2,7 +2,7 @@ ## License -`sbi` is licensed under the [Affero General Public License version 3 (AGPLv3)](https://www.gnu.org/licenses/agpl-3.0.html) and +`sbi` is licensed under the [Apache License (Apache-2.0)](https://www.apache.org/licenses/LICENSE-2.0) and > Copyright (C) 2020 Álvaro Tejero-Cantero, Jakob H. Macke, Jan-Matthis Lückmann, > Michael Deistler, Jan F. Bölts. diff --git a/pyproject.toml b/pyproject.toml index 267af9884..14cb59061 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,8 +18,7 @@ classifiers = [ "Topic :: Scientific/Engineering", "Topic :: Scientific/Engineering :: Artificial Intelligence", "Topic :: Scientific/Engineering :: Mathematics", - """License :: OSI Approved :: GNU Affero General Public License v3 or later - (AGPLv3+)""", + """License :: OSI Approved :: Apache License, Version 2.0 (Apache-2.0""", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 3", From 7d02d261d6f8bce68ee7f42cb0d0a3c2504eafaf Mon Sep 17 00:00:00 2001 From: Jan Boelts Date: Wed, 3 Apr 2024 11:50:29 +0200 Subject: [PATCH 46/53] add license comment to all files --- sbi/__version__.py | 2 +- sbi/analysis/conditional_density.py | 2 +- sbi/analysis/plot.py | 2 +- sbi/analysis/sensitivity_analysis.py | 2 +- sbi/analysis/tensorboard_output.py | 2 +- sbi/diagnostics/sbc.py | 3 +++ sbi/inference/abc/abc_base.py | 3 +++ sbi/inference/abc/mcabc.py | 3 +++ sbi/inference/abc/smcabc.py | 3 +++ sbi/inference/base.py | 2 +- sbi/inference/posteriors/base_posterior.py | 2 +- sbi/inference/posteriors/direct_posterior.py | 3 ++- sbi/inference/posteriors/importance_posterior.py | 3 ++- sbi/inference/posteriors/mcmc_posterior.py | 3 ++- sbi/inference/posteriors/rejection_posterior.py | 3 ++- sbi/inference/posteriors/vi_posterior.py | 2 +- sbi/inference/potentials/base_potential.py | 3 +++ sbi/inference/potentials/likelihood_based_potential.py | 2 +- sbi/inference/potentials/posterior_based_potential.py | 2 +- sbi/inference/potentials/ratio_based_potential.py | 2 +- sbi/inference/snle/mnle.py | 3 +-- sbi/inference/snle/snle_a.py | 3 +-- sbi/inference/snle/snle_base.py | 3 +-- sbi/inference/snpe/snpe_a.py | 2 +- sbi/inference/snpe/snpe_b.py | 3 +-- sbi/inference/snpe/snpe_base.py | 3 ++- sbi/inference/snpe/snpe_c.py | 3 +-- sbi/inference/snre/bnre.py | 3 +++ sbi/inference/snre/snre_a.py | 3 +++ sbi/inference/snre/snre_b.py | 3 +++ sbi/inference/snre/snre_base.py | 3 +++ sbi/inference/snre/snre_c.py | 3 +++ sbi/neural_nets/classifier.py | 2 +- sbi/neural_nets/density_estimators/base.py | 3 +++ sbi/neural_nets/density_estimators/nflows_flow.py | 3 +++ sbi/neural_nets/density_estimators/zuko_flow.py | 3 +++ sbi/neural_nets/embedding_nets.py | 2 +- sbi/neural_nets/flow.py | 2 +- sbi/neural_nets/mdn.py | 2 +- sbi/neural_nets/mnle.py | 2 +- sbi/samplers/importance/importance_sampling.py | 3 +++ sbi/samplers/importance/sir.py | 3 +++ sbi/samplers/mcmc/init_strategy.py | 2 +- sbi/samplers/mcmc/slice_numpy.py | 2 +- sbi/sbi_types.py | 1 - sbi/simulators/linear_gaussian.py | 2 +- sbi/simulators/simutils.py | 2 +- sbi/utils/analysis_utils.py | 2 +- sbi/utils/conditional_density_utils.py | 2 +- sbi/utils/get_nn_models.py | 2 +- sbi/utils/io.py | 2 +- sbi/utils/kde.py | 3 +++ sbi/utils/metrics.py | 2 +- sbi/utils/posterior_ensemble.py | 2 +- sbi/utils/potentialutils.py | 3 +++ sbi/utils/pyroutils.py | 3 +++ sbi/utils/restriction_estimator.py | 3 +++ sbi/utils/sbiutils.py | 2 +- sbi/utils/torchutils.py | 2 +- sbi/utils/typechecks.py | 2 +- sbi/utils/user_input_checks.py | 3 +-- sbi/utils/user_input_checks_utils.py | 3 +-- tests/abc_test.py | 3 +++ tests/analysis_test.py | 3 +++ tests/base_test.py | 3 +++ tests/conftest.py | 3 +++ tests/density_estimator_test.py | 2 +- tests/embedding_net_test.py | 3 +++ tests/ensemble_test.py | 2 +- tests/inference_on_device_test.py | 2 +- tests/inference_with_NaN_simulator_test.py | 2 +- tests/linearGaussian_mdn_test.py | 2 +- tests/linearGaussian_simulator_test.py | 2 +- tests/linearGaussian_snle_test.py | 2 +- tests/linearGaussian_snpe_test.py | 2 +- tests/linearGaussian_snre_test.py | 2 +- tests/mcmc_test.py | 2 +- tests/metrics_test.py | 2 +- tests/mnle_test.py | 2 +- tests/multiprocessing_test.py | 2 +- tests/plot_test.py | 2 +- tests/posterior_nn_test.py | 2 +- tests/posterior_sampler_test.py | 2 +- tests/potential_test.py | 2 +- tests/pyroutils_test.py | 3 +++ tests/save_and_load_test.py | 3 +++ tests/sbc_test.py | 2 +- tests/sbiutils_test.py | 3 +++ tests/simulator_utils_test.py | 2 +- tests/test_utils.py | 2 +- tests/torchutils_test.py | 2 +- tests/transforms_test.py | 3 +++ tests/user_input_checks_test.py | 2 +- tests/vi_test.py | 4 ++-- 94 files changed, 155 insertions(+), 74 deletions(-) diff --git a/sbi/__version__.py b/sbi/__version__.py index 01f85029f..559ea96a5 100644 --- a/sbi/__version__.py +++ b/sbi/__version__.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see VERSION = (0, 22, 0) diff --git a/sbi/analysis/conditional_density.py b/sbi/analysis/conditional_density.py index f672ef3b0..05651ce88 100644 --- a/sbi/analysis/conditional_density.py +++ b/sbi/analysis/conditional_density.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see from typing import Any, Callable, List, Optional, Tuple, Union from warnings import warn diff --git a/sbi/analysis/plot.py b/sbi/analysis/plot.py index 052eb392e..300038f1a 100644 --- a/sbi/analysis/plot.py +++ b/sbi/analysis/plot.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see import collections from typing import Any, Callable, Dict, List, Optional, Tuple, Union diff --git a/sbi/analysis/sensitivity_analysis.py b/sbi/analysis/sensitivity_analysis.py index 485b4ea04..2f5279e79 100644 --- a/sbi/analysis/sensitivity_analysis.py +++ b/sbi/analysis/sensitivity_analysis.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see import logging from copy import deepcopy diff --git a/sbi/analysis/tensorboard_output.py b/sbi/analysis/tensorboard_output.py index 971cf1503..fc32ecf1b 100644 --- a/sbi/analysis/tensorboard_output.py +++ b/sbi/analysis/tensorboard_output.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see """Utils for processing tensorboard event data.""" import inspect diff --git a/sbi/diagnostics/sbc.py b/sbi/diagnostics/sbc.py index 740894fae..b8510bcf4 100644 --- a/sbi/diagnostics/sbc.py +++ b/sbi/diagnostics/sbc.py @@ -1,3 +1,6 @@ +# This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed +# under the Apache License Version 2.0, see + import warnings from typing import Callable, Dict, List, Sequence, Tuple, Union diff --git a/sbi/inference/abc/abc_base.py b/sbi/inference/abc/abc_base.py index 308eaa2f4..2cc3484b6 100644 --- a/sbi/inference/abc/abc_base.py +++ b/sbi/inference/abc/abc_base.py @@ -1,3 +1,6 @@ +# This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed +# under the Apache License Version 2.0, see + """Base class for Approximate Bayesian Computation methods.""" import logging diff --git a/sbi/inference/abc/mcabc.py b/sbi/inference/abc/mcabc.py index a0f00b265..fd90ef170 100644 --- a/sbi/inference/abc/mcabc.py +++ b/sbi/inference/abc/mcabc.py @@ -1,3 +1,6 @@ +# This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed +# under the Apache License Version 2.0, see + """Monte-Carlo Approximate Bayesian Computation (Rejection ABC).""" from typing import Any, Callable, Dict, Optional, Tuple, Union diff --git a/sbi/inference/abc/smcabc.py b/sbi/inference/abc/smcabc.py index b7ad736ab..4583c769f 100644 --- a/sbi/inference/abc/smcabc.py +++ b/sbi/inference/abc/smcabc.py @@ -1,3 +1,6 @@ +# This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed +# under the Apache License Version 2.0, see + """Sequential Monte Carlo Approximate Bayesian Computation.""" from typing import Any, Callable, Dict, Optional, Tuple, Union diff --git a/sbi/inference/base.py b/sbi/inference/base.py index ed05e1d7a..6ece178d0 100644 --- a/sbi/inference/base.py +++ b/sbi/inference/base.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see from abc import ABC, abstractmethod from copy import deepcopy diff --git a/sbi/inference/posteriors/base_posterior.py b/sbi/inference/posteriors/base_posterior.py index e834da4c7..0db66b1cb 100644 --- a/sbi/inference/posteriors/base_posterior.py +++ b/sbi/inference/posteriors/base_posterior.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see import inspect from abc import ABC, abstractmethod diff --git a/sbi/inference/posteriors/direct_posterior.py b/sbi/inference/posteriors/direct_posterior.py index 2f514fd95..fb20a580e 100644 --- a/sbi/inference/posteriors/direct_posterior.py +++ b/sbi/inference/posteriors/direct_posterior.py @@ -1,5 +1,6 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see + from typing import Optional, Union import torch diff --git a/sbi/inference/posteriors/importance_posterior.py b/sbi/inference/posteriors/importance_posterior.py index 33f8fe8ca..bbd4ce32f 100644 --- a/sbi/inference/posteriors/importance_posterior.py +++ b/sbi/inference/posteriors/importance_posterior.py @@ -1,5 +1,6 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see + from typing import Any, Callable, Optional, Tuple, Union import torch diff --git a/sbi/inference/posteriors/mcmc_posterior.py b/sbi/inference/posteriors/mcmc_posterior.py index 1296b65da..5ef9f882a 100644 --- a/sbi/inference/posteriors/mcmc_posterior.py +++ b/sbi/inference/posteriors/mcmc_posterior.py @@ -1,5 +1,6 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see + from functools import partial from math import ceil from typing import Any, Callable, Dict, Optional, Union diff --git a/sbi/inference/posteriors/rejection_posterior.py b/sbi/inference/posteriors/rejection_posterior.py index 3bf49109c..6da838059 100644 --- a/sbi/inference/posteriors/rejection_posterior.py +++ b/sbi/inference/posteriors/rejection_posterior.py @@ -1,5 +1,6 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see + from functools import partial from typing import Any, Callable, Optional, Union from warnings import warn diff --git a/sbi/inference/posteriors/vi_posterior.py b/sbi/inference/posteriors/vi_posterior.py index bb24da95c..006ab543a 100644 --- a/sbi/inference/posteriors/vi_posterior.py +++ b/sbi/inference/posteriors/vi_posterior.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see import copy from copy import deepcopy diff --git a/sbi/inference/potentials/base_potential.py b/sbi/inference/potentials/base_potential.py index f0f0a6272..7bf914eb6 100644 --- a/sbi/inference/potentials/base_potential.py +++ b/sbi/inference/potentials/base_potential.py @@ -1,3 +1,6 @@ +# This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed +# under the Apache License Version 2.0, see + from abc import ABCMeta, abstractmethod from typing import Optional diff --git a/sbi/inference/potentials/likelihood_based_potential.py b/sbi/inference/potentials/likelihood_based_potential.py index 5ddcdcef4..eab36e91f 100644 --- a/sbi/inference/potentials/likelihood_based_potential.py +++ b/sbi/inference/potentials/likelihood_based_potential.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see from typing import Callable, Optional, Tuple diff --git a/sbi/inference/potentials/posterior_based_potential.py b/sbi/inference/potentials/posterior_based_potential.py index bf87cc549..ca3a65f2c 100644 --- a/sbi/inference/potentials/posterior_based_potential.py +++ b/sbi/inference/potentials/posterior_based_potential.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see from typing import Callable, Optional, Tuple diff --git a/sbi/inference/potentials/ratio_based_potential.py b/sbi/inference/potentials/ratio_based_potential.py index b630a282d..6641dd318 100644 --- a/sbi/inference/potentials/ratio_based_potential.py +++ b/sbi/inference/potentials/ratio_based_potential.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see from typing import Callable, Optional, Tuple diff --git a/sbi/inference/snle/mnle.py b/sbi/inference/snle/mnle.py index fe2034343..9503c4169 100644 --- a/sbi/inference/snle/mnle.py +++ b/sbi/inference/snle/mnle.py @@ -1,6 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . - +# under the Apache License Version 2.0, see from copy import deepcopy from typing import Any, Callable, Dict, Optional, Union diff --git a/sbi/inference/snle/snle_a.py b/sbi/inference/snle/snle_a.py index 5bc48a4ec..ddfd604af 100644 --- a/sbi/inference/snle/snle_a.py +++ b/sbi/inference/snle/snle_a.py @@ -1,6 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . - +# under the Apache License Version 2.0, see from typing import Callable, Optional, Union diff --git a/sbi/inference/snle/snle_base.py b/sbi/inference/snle/snle_base.py index 2722c856d..35d493562 100644 --- a/sbi/inference/snle/snle_base.py +++ b/sbi/inference/snle/snle_base.py @@ -1,6 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . - +# under the Apache License Version 2.0, see from abc import ABC from copy import deepcopy diff --git a/sbi/inference/snpe/snpe_a.py b/sbi/inference/snpe/snpe_a.py index d179dcf34..dd3774e6f 100644 --- a/sbi/inference/snpe/snpe_a.py +++ b/sbi/inference/snpe/snpe_a.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see import warnings from copy import deepcopy diff --git a/sbi/inference/snpe/snpe_b.py b/sbi/inference/snpe/snpe_b.py index c9ea78da9..f0b27f514 100644 --- a/sbi/inference/snpe/snpe_b.py +++ b/sbi/inference/snpe/snpe_b.py @@ -1,6 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . - +# under the Apache License Version 2.0, see from typing import Callable, Optional, Union diff --git a/sbi/inference/snpe/snpe_base.py b/sbi/inference/snpe/snpe_base.py index 8d4ffe58a..776d37243 100644 --- a/sbi/inference/snpe/snpe_base.py +++ b/sbi/inference/snpe/snpe_base.py @@ -1,5 +1,6 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see + import time from abc import ABC, abstractmethod from copy import deepcopy diff --git a/sbi/inference/snpe/snpe_c.py b/sbi/inference/snpe/snpe_c.py index c575d03d0..751445454 100644 --- a/sbi/inference/snpe/snpe_c.py +++ b/sbi/inference/snpe/snpe_c.py @@ -1,6 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . - +# under the Apache License Version 2.0, see from typing import Callable, Dict, Optional, Union diff --git a/sbi/inference/snre/bnre.py b/sbi/inference/snre/bnre.py index c4b83d165..2524c1b91 100644 --- a/sbi/inference/snre/bnre.py +++ b/sbi/inference/snre/bnre.py @@ -1,3 +1,6 @@ +# This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed +# under the Apache License Version 2.0, see + from typing import Callable, Dict, Optional, Union import torch diff --git a/sbi/inference/snre/snre_a.py b/sbi/inference/snre/snre_a.py index 3c1eb705b..636c3033d 100644 --- a/sbi/inference/snre/snre_a.py +++ b/sbi/inference/snre/snre_a.py @@ -1,3 +1,6 @@ +# This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed +# under the Apache License Version 2.0, see + from typing import Any, Callable, Dict, Optional, Union import torch diff --git a/sbi/inference/snre/snre_b.py b/sbi/inference/snre/snre_b.py index 78082262e..182d80848 100644 --- a/sbi/inference/snre/snre_b.py +++ b/sbi/inference/snre/snre_b.py @@ -1,3 +1,6 @@ +# This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed +# under the Apache License Version 2.0, see + from typing import Callable, Dict, Optional, Union import torch diff --git a/sbi/inference/snre/snre_base.py b/sbi/inference/snre/snre_base.py index 18dc34fd2..195865844 100644 --- a/sbi/inference/snre/snre_base.py +++ b/sbi/inference/snre/snre_base.py @@ -1,3 +1,6 @@ +# This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed +# under the Apache License Version 2.0, see + from abc import ABC, abstractmethod from copy import deepcopy from typing import Any, Callable, Dict, Optional, Union diff --git a/sbi/inference/snre/snre_c.py b/sbi/inference/snre/snre_c.py index b36a8b271..19d11e859 100644 --- a/sbi/inference/snre/snre_c.py +++ b/sbi/inference/snre/snre_c.py @@ -1,3 +1,6 @@ +# This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed +# under the Apache License Version 2.0, see + from typing import Callable, Dict, Optional, Tuple, Union import torch diff --git a/sbi/neural_nets/classifier.py b/sbi/neural_nets/classifier.py index e6f8c5185..cdad6195b 100644 --- a/sbi/neural_nets/classifier.py +++ b/sbi/neural_nets/classifier.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see from typing import Optional diff --git a/sbi/neural_nets/density_estimators/base.py b/sbi/neural_nets/density_estimators/base.py index 252c850bc..b3b83567c 100644 --- a/sbi/neural_nets/density_estimators/base.py +++ b/sbi/neural_nets/density_estimators/base.py @@ -1,3 +1,6 @@ +# This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed +# under the Apache License Version 2.0, see + from typing import Optional, Tuple import torch diff --git a/sbi/neural_nets/density_estimators/nflows_flow.py b/sbi/neural_nets/density_estimators/nflows_flow.py index c7143ba9b..a1de5355c 100644 --- a/sbi/neural_nets/density_estimators/nflows_flow.py +++ b/sbi/neural_nets/density_estimators/nflows_flow.py @@ -1,3 +1,6 @@ +# This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed +# under the Apache License Version 2.0, see + from typing import Tuple import torch diff --git a/sbi/neural_nets/density_estimators/zuko_flow.py b/sbi/neural_nets/density_estimators/zuko_flow.py index f68cd71b5..16d925fe9 100644 --- a/sbi/neural_nets/density_estimators/zuko_flow.py +++ b/sbi/neural_nets/density_estimators/zuko_flow.py @@ -1,3 +1,6 @@ +# This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed +# under the Apache License Version 2.0, see + from typing import Tuple import torch diff --git a/sbi/neural_nets/embedding_nets.py b/sbi/neural_nets/embedding_nets.py index fb2903a15..6365d211f 100644 --- a/sbi/neural_nets/embedding_nets.py +++ b/sbi/neural_nets/embedding_nets.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see from typing import List, Optional, Tuple, Union diff --git a/sbi/neural_nets/flow.py b/sbi/neural_nets/flow.py index 947406f49..d740f43ce 100644 --- a/sbi/neural_nets/flow.py +++ b/sbi/neural_nets/flow.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see from functools import partial from typing import List, Optional, Sequence, Tuple, Union diff --git a/sbi/neural_nets/mdn.py b/sbi/neural_nets/mdn.py index 4ac102a9f..007dbc97e 100644 --- a/sbi/neural_nets/mdn.py +++ b/sbi/neural_nets/mdn.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see from typing import Optional diff --git a/sbi/neural_nets/mnle.py b/sbi/neural_nets/mnle.py index a1c918239..ee0baa625 100644 --- a/sbi/neural_nets/mnle.py +++ b/sbi/neural_nets/mnle.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see import warnings from typing import Optional diff --git a/sbi/samplers/importance/importance_sampling.py b/sbi/samplers/importance/importance_sampling.py index 2660ab310..bcd64be4e 100644 --- a/sbi/samplers/importance/importance_sampling.py +++ b/sbi/samplers/importance/importance_sampling.py @@ -1,3 +1,6 @@ +# This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed +# under the Apache License Version 2.0, see + from math import sqrt from typing import Tuple diff --git a/sbi/samplers/importance/sir.py b/sbi/samplers/importance/sir.py index f4ff53035..03c601577 100644 --- a/sbi/samplers/importance/sir.py +++ b/sbi/samplers/importance/sir.py @@ -1,3 +1,6 @@ +# This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed +# under the Apache License Version 2.0, see + from typing import Any, Callable import torch diff --git a/sbi/samplers/mcmc/init_strategy.py b/sbi/samplers/mcmc/init_strategy.py index a158a4a37..ab164a1bb 100644 --- a/sbi/samplers/mcmc/init_strategy.py +++ b/sbi/samplers/mcmc/init_strategy.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see from typing import Any, Callable diff --git a/sbi/samplers/mcmc/slice_numpy.py b/sbi/samplers/mcmc/slice_numpy.py index 605120118..ac89d458e 100644 --- a/sbi/samplers/mcmc/slice_numpy.py +++ b/sbi/samplers/mcmc/slice_numpy.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see import os import sys diff --git a/sbi/sbi_types.py b/sbi/sbi_types.py index ad2adbc14..0f964df46 100644 --- a/sbi/sbi_types.py +++ b/sbi/sbi_types.py @@ -1,7 +1,6 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed # under the Affero General Public License v3, see . - from typing import NewType, Optional, Sequence, Tuple, TypeVar, Union import numpy as np diff --git a/sbi/simulators/linear_gaussian.py b/sbi/simulators/linear_gaussian.py index b5eaad5d4..72933cf7f 100644 --- a/sbi/simulators/linear_gaussian.py +++ b/sbi/simulators/linear_gaussian.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see from typing import Tuple, Union diff --git a/sbi/simulators/simutils.py b/sbi/simulators/simutils.py index 837f531e0..cd47e51e8 100644 --- a/sbi/simulators/simutils.py +++ b/sbi/simulators/simutils.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see import contextlib diff --git a/sbi/utils/analysis_utils.py b/sbi/utils/analysis_utils.py index 934c835f1..3b907d673 100644 --- a/sbi/utils/analysis_utils.py +++ b/sbi/utils/analysis_utils.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see from typing import Callable, Optional, Union diff --git a/sbi/utils/conditional_density_utils.py b/sbi/utils/conditional_density_utils.py index 5f8df5d38..8f53889d3 100644 --- a/sbi/utils/conditional_density_utils.py +++ b/sbi/utils/conditional_density_utils.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see from copy import deepcopy from typing import Callable, List, Optional, Tuple, Union diff --git a/sbi/utils/get_nn_models.py b/sbi/utils/get_nn_models.py index a56d706bb..15f77fda9 100644 --- a/sbi/utils/get_nn_models.py +++ b/sbi/utils/get_nn_models.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see from typing import Any, Callable, Optional from warnings import warn diff --git a/sbi/utils/io.py b/sbi/utils/io.py index f4da28737..d33b19771 100644 --- a/sbi/utils/io.py +++ b/sbi/utils/io.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see """Utility functions for input/output.""" diff --git a/sbi/utils/kde.py b/sbi/utils/kde.py index 2180d6b06..7a0758df9 100644 --- a/sbi/utils/kde.py +++ b/sbi/utils/kde.py @@ -1,3 +1,6 @@ +# This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed +# under the Apache License Version 2.0, see + from typing import Optional, Union import numpy as np diff --git a/sbi/utils/metrics.py b/sbi/utils/metrics.py index 69064017e..e15b88171 100644 --- a/sbi/utils/metrics.py +++ b/sbi/utils/metrics.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see from typing import Any, Dict, Optional, Union diff --git a/sbi/utils/posterior_ensemble.py b/sbi/utils/posterior_ensemble.py index 385491257..ddee0423b 100644 --- a/sbi/utils/posterior_ensemble.py +++ b/sbi/utils/posterior_ensemble.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see import warnings from typing import List, Optional, Union diff --git a/sbi/utils/potentialutils.py b/sbi/utils/potentialutils.py index f2413466d..375a8774f 100644 --- a/sbi/utils/potentialutils.py +++ b/sbi/utils/potentialutils.py @@ -1,3 +1,6 @@ +# This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed +# under the Apache License Version 2.0, see + from typing import Callable, Dict, Union import numpy as np diff --git a/sbi/utils/pyroutils.py b/sbi/utils/pyroutils.py index 4551e466f..1c338b8d6 100644 --- a/sbi/utils/pyroutils.py +++ b/sbi/utils/pyroutils.py @@ -1,3 +1,6 @@ +# This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed +# under the Apache License Version 2.0, see + from typing import Any, Callable from pyro import poutine as poutine diff --git a/sbi/utils/restriction_estimator.py b/sbi/utils/restriction_estimator.py index 816a59a7e..3f2eeded2 100644 --- a/sbi/utils/restriction_estimator.py +++ b/sbi/utils/restriction_estimator.py @@ -1,3 +1,6 @@ +# This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed +# under the Apache License Version 2.0, see + from copy import deepcopy from math import floor from typing import Any, Callable, Optional, Tuple, Union diff --git a/sbi/utils/sbiutils.py b/sbi/utils/sbiutils.py index 1e26d58b3..58146ccae 100644 --- a/sbi/utils/sbiutils.py +++ b/sbi/utils/sbiutils.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see import logging import random diff --git a/sbi/utils/torchutils.py b/sbi/utils/torchutils.py index f0df3db1d..9bb3bafb0 100644 --- a/sbi/utils/torchutils.py +++ b/sbi/utils/torchutils.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see """Various PyTorch utility functions.""" diff --git a/sbi/utils/typechecks.py b/sbi/utils/typechecks.py index 2dd2455f7..18887625c 100644 --- a/sbi/utils/typechecks.py +++ b/sbi/utils/typechecks.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see """Functions that check types.""" diff --git a/sbi/utils/user_input_checks.py b/sbi/utils/user_input_checks.py index 036b3f243..1b485ff3d 100644 --- a/sbi/utils/user_input_checks.py +++ b/sbi/utils/user_input_checks.py @@ -1,6 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . - +# under the Apache License Version 2.0, see import warnings from typing import Any, Callable, Dict, Optional, Sequence, Tuple, Union, cast diff --git a/sbi/utils/user_input_checks_utils.py b/sbi/utils/user_input_checks_utils.py index 12a356dc4..569838986 100644 --- a/sbi/utils/user_input_checks_utils.py +++ b/sbi/utils/user_input_checks_utils.py @@ -1,6 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . - +# under the Apache License Version 2.0, see import warnings from typing import Dict, Optional, Sequence diff --git a/tests/abc_test.py b/tests/abc_test.py index f5919151e..84af00999 100644 --- a/tests/abc_test.py +++ b/tests/abc_test.py @@ -1,3 +1,6 @@ +# This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed +# under the Apache License Version 2.0, see + import pytest from torch import eye, norm, ones, zeros from torch.distributions import MultivariateNormal, biject_to diff --git a/tests/analysis_test.py b/tests/analysis_test.py index 0eb9d1eeb..76ecf28d4 100644 --- a/tests/analysis_test.py +++ b/tests/analysis_test.py @@ -1,3 +1,6 @@ +# This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed +# under the Apache License Version 2.0, see + import pytest import torch diff --git a/tests/base_test.py b/tests/base_test.py index baf75cdbd..35ae7acd4 100644 --- a/tests/base_test.py +++ b/tests/base_test.py @@ -1,3 +1,6 @@ +# This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed +# under the Apache License Version 2.0, see + import pytest import torch diff --git a/tests/conftest.py b/tests/conftest.py index 2c2ea9ff0..445a27bae 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,3 +1,6 @@ +# This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed +# under the Apache License Version 2.0, see + import pytest import torch diff --git a/tests/density_estimator_test.py b/tests/density_estimator_test.py index b643fada1..7543a8241 100644 --- a/tests/density_estimator_test.py +++ b/tests/density_estimator_test.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see from __future__ import annotations diff --git a/tests/embedding_net_test.py b/tests/embedding_net_test.py index c9fd76822..402211161 100644 --- a/tests/embedding_net_test.py +++ b/tests/embedding_net_test.py @@ -1,3 +1,6 @@ +# This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed +# under the Apache License Version 2.0, see + from __future__ import annotations import pytest diff --git a/tests/ensemble_test.py b/tests/ensemble_test.py index 62ac29a61..8ec819eb3 100644 --- a/tests/ensemble_test.py +++ b/tests/ensemble_test.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see from __future__ import annotations diff --git a/tests/inference_on_device_test.py b/tests/inference_on_device_test.py index e1e5208d5..cfaa0d578 100644 --- a/tests/inference_on_device_test.py +++ b/tests/inference_on_device_test.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see from __future__ import annotations diff --git a/tests/inference_with_NaN_simulator_test.py b/tests/inference_with_NaN_simulator_test.py index 4f3001f3a..983f3dea7 100644 --- a/tests/inference_with_NaN_simulator_test.py +++ b/tests/inference_with_NaN_simulator_test.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see import pytest import torch diff --git a/tests/linearGaussian_mdn_test.py b/tests/linearGaussian_mdn_test.py index cd06787c1..d232e6440 100644 --- a/tests/linearGaussian_mdn_test.py +++ b/tests/linearGaussian_mdn_test.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see from __future__ import annotations diff --git a/tests/linearGaussian_simulator_test.py b/tests/linearGaussian_simulator_test.py index f942d758d..3aec035f9 100644 --- a/tests/linearGaussian_simulator_test.py +++ b/tests/linearGaussian_simulator_test.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see from __future__ import annotations diff --git a/tests/linearGaussian_snle_test.py b/tests/linearGaussian_snle_test.py index 46647932a..2ec431fda 100644 --- a/tests/linearGaussian_snle_test.py +++ b/tests/linearGaussian_snle_test.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see from __future__ import annotations diff --git a/tests/linearGaussian_snpe_test.py b/tests/linearGaussian_snpe_test.py index bc14b3740..cd3b2c2cf 100644 --- a/tests/linearGaussian_snpe_test.py +++ b/tests/linearGaussian_snpe_test.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see from __future__ import annotations diff --git a/tests/linearGaussian_snre_test.py b/tests/linearGaussian_snre_test.py index 2edf59f55..024ce17c0 100644 --- a/tests/linearGaussian_snre_test.py +++ b/tests/linearGaussian_snre_test.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see from __future__ import annotations diff --git a/tests/mcmc_test.py b/tests/mcmc_test.py index ccad85ee3..bf95c8bfe 100644 --- a/tests/mcmc_test.py +++ b/tests/mcmc_test.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see from __future__ import annotations diff --git a/tests/metrics_test.py b/tests/metrics_test.py index f6171c0f6..206d517a4 100644 --- a/tests/metrics_test.py +++ b/tests/metrics_test.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see from __future__ import annotations diff --git a/tests/mnle_test.py b/tests/mnle_test.py index 41ef9981c..ca5b5a890 100644 --- a/tests/mnle_test.py +++ b/tests/mnle_test.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see import pytest import torch diff --git a/tests/multiprocessing_test.py b/tests/multiprocessing_test.py index e53a271a2..384b832ac 100644 --- a/tests/multiprocessing_test.py +++ b/tests/multiprocessing_test.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see from __future__ import annotations diff --git a/tests/plot_test.py b/tests/plot_test.py index 7196157f4..493873520 100644 --- a/tests/plot_test.py +++ b/tests/plot_test.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see import numpy as np import pytest diff --git a/tests/posterior_nn_test.py b/tests/posterior_nn_test.py index a11b4fb37..33f4c29e4 100644 --- a/tests/posterior_nn_test.py +++ b/tests/posterior_nn_test.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see from __future__ import annotations diff --git a/tests/posterior_sampler_test.py b/tests/posterior_sampler_test.py index 6b0b59af8..fdbe7fbaa 100644 --- a/tests/posterior_sampler_test.py +++ b/tests/posterior_sampler_test.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see from __future__ import annotations diff --git a/tests/potential_test.py b/tests/potential_test.py index bca87deeb..77fb83cd1 100644 --- a/tests/potential_test.py +++ b/tests/potential_test.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see from __future__ import annotations diff --git a/tests/pyroutils_test.py b/tests/pyroutils_test.py index ef0fef920..210de5111 100644 --- a/tests/pyroutils_test.py +++ b/tests/pyroutils_test.py @@ -1,3 +1,6 @@ +# This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed +# under the Apache License Version 2.0, see + import pyro import torch diff --git a/tests/save_and_load_test.py b/tests/save_and_load_test.py index f9cc59ada..667b5ebd0 100644 --- a/tests/save_and_load_test.py +++ b/tests/save_and_load_test.py @@ -1,3 +1,6 @@ +# This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed +# under the Apache License Version 2.0, see + import pickle import pytest diff --git a/tests/sbc_test.py b/tests/sbc_test.py index 352454069..c7e0187aa 100644 --- a/tests/sbc_test.py +++ b/tests/sbc_test.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see from __future__ import annotations diff --git a/tests/sbiutils_test.py b/tests/sbiutils_test.py index e976e3ba1..10a4d9037 100644 --- a/tests/sbiutils_test.py +++ b/tests/sbiutils_test.py @@ -1,3 +1,6 @@ +# This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed +# under the Apache License Version 2.0, see + from typing import Tuple import matplotlib.pyplot as plt diff --git a/tests/simulator_utils_test.py b/tests/simulator_utils_test.py index a03c26df9..6419381f4 100644 --- a/tests/simulator_utils_test.py +++ b/tests/simulator_utils_test.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see from __future__ import annotations diff --git a/tests/test_utils.py b/tests/test_utils.py index 81b4de8d2..b6730e65b 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see from __future__ import annotations diff --git a/tests/torchutils_test.py b/tests/torchutils_test.py index ec37c7318..028b5e8b9 100644 --- a/tests/torchutils_test.py +++ b/tests/torchutils_test.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see """Test PyTorch utility functions.""" diff --git a/tests/transforms_test.py b/tests/transforms_test.py index c5cefb621..2a1965485 100644 --- a/tests/transforms_test.py +++ b/tests/transforms_test.py @@ -1,3 +1,6 @@ +# This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed +# under the Apache License Version 2.0, see + import pytest import torch from torch import eye, ones, zeros diff --git a/tests/user_input_checks_test.py b/tests/user_input_checks_test.py index 08cfc5fc6..7d0bfcdea 100644 --- a/tests/user_input_checks_test.py +++ b/tests/user_input_checks_test.py @@ -1,5 +1,5 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed -# under the Affero General Public License v3, see . +# under the Apache License Version 2.0, see from __future__ import annotations diff --git a/tests/vi_test.py b/tests/vi_test.py index 627b30348..d187cd525 100644 --- a/tests/vi_test.py +++ b/tests/vi_test.py @@ -1,5 +1,5 @@ -# TODO ESPECIALLY THE VI METHODS AND VARIATIONAL FAMILIES WHEN FINSIHED SHOULD BE -# THESTED HERE!!!! +# This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed +# under the Apache License Version 2.0, see from __future__ import annotations From 9a8c7c0c1e3f68e81680039b80c2a6057fe97be4 Mon Sep 17 00:00:00 2001 From: Jan Boelts Date: Wed, 3 Apr 2024 12:04:42 +0200 Subject: [PATCH 47/53] fixes to readme; add contributors to credits. --- README.md | 34 +++++++++++++++++++++------------- docs/docs/credits.md | 15 ++++++++++++++- 2 files changed, 35 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index a4afcdf4b..560a3cb3f 100644 --- a/README.md +++ b/README.md @@ -9,12 +9,15 @@ [Getting Started](https://sbi-dev.github.io/sbi/tutorial/00_getting_started/) | [Documentation](https://sbi-dev.github.io/sbi/) -`sbi` is a PyTorch package for simulation-based inference. Simulation-based inference is the process of finding parameters of a simulator from observations. +`sbi` is a PyTorch package for simulation-based inference. Simulation-based inference is +the process of finding parameters of a simulator from observations. -`sbi` takes a Bayesian approach and returns a full posterior distribution over the parameters of the simulator, conditional on the observations. -The package implements a variety of inference algorithms, including _amortized_ and _sequential_ methods. -Amortized methods return a posterior that can be applied to many different observations without retraining; sequential methods focus the inference on one particular observation to be more simulation-efficient. -See below for an overview of implemented methods. +`sbi` takes a Bayesian approach and returns a full posterior distribution over the +parameters of the simulator, conditional on the observations. The package implements a +variety of inference algorithms, including _amortized_ and _sequential_ methods. +Amortized methods return a posterior that can be applied to many different observations +without retraining; sequential methods focus the inference on one particular observation +to be more simulation-efficient. See below for an overview of implemented methods. `sbi` offers a simple interface for posterior inference in a few lines of code @@ -53,7 +56,7 @@ print(posterior) ## Tutorials -For first time users, you can now head over to the turorials and get going with [Getting Started](https://sbi-dev.github.io/sbi/tutorial/00_getting_started/). +For first-time users: You can now head over to the tutorials and get going with [Getting Started](https://sbi-dev.github.io/sbi/tutorial/00_getting_started/). ## Inference Algorithms @@ -94,19 +97,24 @@ The following inference algorithms are currently available. You can find instruc ## Feedback and Contributions -We welcome any feedback on how `sbi` is working for your inference problems (see [Discussions](https://github.com/sbi-dev/sbi/discussions)) and are happy to receive bug reports, pull requests and other feedback (see -[contribute](http://sbi-dev.github.io/sbi/contribute/)). -We wish to maintain a positive community, please read our [Code of Conduct](CODE_OF_CONDUCT.md). +We welcome any feedback on how `sbi` is working for your inference problems (see +[Discussions](https://github.com/sbi-dev/sbi/discussions)) and are happy to receive bug +reports, pull requests, and other feedback (see +[contribute](http://sbi-dev.github.io/sbi/contribute/)). We wish to maintain a positive +community; please read our [Code of Conduct](CODE_OF_CONDUCT.md). -## Acknowledgements +## Acknowledgments `sbi` is the successor (using PyTorch) of the -[`delfi`](https://github.com/mackelab/delfi) package. It was started as a fork of Conor -M. Durkan's `lfi`. `sbi` runs as a community project. See also [credits](https://github.com/sbi-dev/sbi/blob/master/docs/docs/credits.md). +[`delfi`](https://github.com/mackelab/delfi) package. It started as a fork of Conor M. +Durkan's `lfi`. `sbi` runs as a community project. See also +[credits](https://github.com/sbi-dev/sbi/blob/master/docs/docs/credits.md). ## Support -`sbi` has been supported by the German Federal Ministry of Education and Research (BMBF) through project ADIMEM (FKZ 01IS18052 A-D), project SiMaLeSAM (FKZ 01IS21055A) and the Tübingen AI Center (FKZ 01IS18039A). +`sbi` has been supported by the German Federal Ministry of Education and Research (BMBF) +through project ADIMEM (FKZ 01IS18052 A-D), project SiMaLeSAM (FKZ 01IS21055A) and the +Tübingen AI Center (FKZ 01IS18039A). ## License diff --git a/docs/docs/credits.md b/docs/docs/credits.md index b83ff961a..23da46007 100644 --- a/docs/docs/credits.md +++ b/docs/docs/credits.md @@ -1,5 +1,11 @@ # Credits +## Community and Contributions + +`sbi` is a community-driven package. We are grateful to all our contributors who have +played a significant role in shaping `sbi`. Their valuable input, suggestions, and +direct contributions to the codebase have been instrumental in the development of `sbi`. + ## License `sbi` is licensed under the [Apache License (Apache-2.0)](https://www.apache.org/licenses/LICENSE-2.0) and @@ -9,9 +15,16 @@ > Copyright (C) 2020 Conor M. Durkan. +> All contributors hold the copyright of their specific contributions. + ## Support -`sbi` has been supported by the German Federal Ministry of Education and Research (BMBF) through the project ADIMEM, FKZ 01IS18052 A-D). [ADIMEM](https://fit.uni-tuebingen.de/Project/Details?id=9199) is a collaborative project between the groups of Jakob Macke (Uni Tübingen), Philipp Berens (Uni Tübingen), Philipp Hennig (Uni Tübingen) and Marcel Oberlaender (caesar Bonn) which aims to develop inference methods for mechanistic models. +`sbi` has been supported by the German Federal Ministry of Education and Research (BMBF) +through the project ADIMEM (FKZ 01IS18052 A-D). +[ADIMEM](https://fit.uni-tuebingen.de/Project/Details?id=9199) is a collaborative +project between the groups of Jakob Macke (Uni Tübingen), Philipp Berens (Uni Tübingen), +Philipp Hennig (Uni Tübingen), and Marcel Oberlaender (caesar Bonn), which aims to develop +inference methods for mechanistic models. ![](static/logo_bmbf.svg) From fe55b1c586a9d82bc80da96acbac73ce0b2c5393 Mon Sep 17 00:00:00 2001 From: manuelgloeckler <38903899+manuelgloeckler@users.noreply.github.com> Date: Tue, 7 May 2024 11:21:17 +0200 Subject: [PATCH 48/53] Fixes current density estimator bug (#1155) * fixes current bug! * Added tests --- .../density_estimators/nflows_flow.py | 8 +-- tests/density_estimator_test.py | 69 +++++++++++++++++++ 2 files changed, 71 insertions(+), 6 deletions(-) diff --git a/sbi/neural_nets/density_estimators/nflows_flow.py b/sbi/neural_nets/density_estimators/nflows_flow.py index a1de5355c..8d6aaba55 100644 --- a/sbi/neural_nets/density_estimators/nflows_flow.py +++ b/sbi/neural_nets/density_estimators/nflows_flow.py @@ -135,12 +135,8 @@ def sample(self, sample_shape: Shape, condition: Tensor) -> Tensor: num_samples = torch.Size(sample_shape).numel() samples = self.net.sample(num_samples, context=condition) - - return samples.reshape(( - *sample_shape, - condition_batch_dim, - -1, - )) + samples = samples.transpose(0, 1) + return samples.reshape((*sample_shape, condition_batch_dim, *self.input_shape)) def sample_and_log_prob( self, sample_shape: torch.Size, condition: Tensor, **kwargs diff --git a/tests/density_estimator_test.py b/tests/density_estimator_test.py index 7543a8241..35fb0d946 100644 --- a/tests/density_estimator_test.py +++ b/tests/density_estimator_test.py @@ -283,6 +283,75 @@ def test_correctness_of_density_estimator_log_prob( assert torch.allclose(log_probs[0, :], log_probs[1, :]) +@pytest.mark.parametrize( + "density_estimator_build_fn", + ( + build_mdn, + build_maf, + build_maf_rqs, + build_nsf, + build_zuko_bpf, + build_zuko_gf, + build_zuko_maf, + build_zuko_naf, + build_zuko_ncsf, + build_zuko_nice, + build_zuko_nsf, + build_zuko_sospf, + build_zuko_unaf, + build_categoricalmassestimator, + build_mnle, + ), +) +@pytest.mark.parametrize("input_event_shape", ((1,), (4,))) +@pytest.mark.parametrize("condition_event_shape", ((1,), (7,))) +def test_correctness_of_batched_vs_seperate_sample_and_log_prob( + density_estimator_build_fn, input_event_shape, condition_event_shape +): + input_sample_dim = 2 + batch_dim = 2 + density_estimator, inputs, condition = _build_density_estimator_and_tensors( + density_estimator_build_fn, + input_event_shape, + condition_event_shape, + batch_dim, + input_sample_dim, + ) + # Batched vs separate sampling + samples = density_estimator.sample((1000,), condition=condition) + samples_separate1 = density_estimator.sample( + (1000,), condition=condition[0][None, ...] + ) + samples_separate2 = density_estimator.sample( + (1000,), condition=condition[1][None, ...] + ) + + # Check if means are approx. same + samples_m = torch.mean(samples, dim=0, dtype=torch.float32) + samples_separate1_m = torch.mean(samples_separate1, dim=0, dtype=torch.float32) + samples_separate2_m = torch.mean(samples_separate2, dim=0, dtype=torch.float32) + samples_sep_m = torch.cat([samples_separate1_m, samples_separate2_m], dim=0) + + assert torch.allclose( + samples_m, samples_sep_m, atol=0.5, rtol=0.5 + ), "Batched sampling is not consistent with separate sampling." + + # Batched vs separate log_prob + log_probs = density_estimator.log_prob(inputs, condition=condition) + + log_probs_separate1 = density_estimator.log_prob( + inputs[:, :1], condition=condition[0][None, ...] + ) + log_probs_separate2 = density_estimator.log_prob( + inputs[:, 1:], condition=condition[1][None, ...] + ) + log_probs_sep = torch.hstack([log_probs_separate1, log_probs_separate2]) + + assert torch.allclose( + log_probs, log_probs_sep, atol=1e-2, rtol=1e-2 + ), "Batched log_prob is not consistent with separate log_prob." + + def _build_density_estimator_and_tensors( density_estimator_build_fn: str, input_event_shape: Tuple[int], From 3c1e7250192041d995d8fda368d421919400a499 Mon Sep 17 00:00:00 2001 From: Julia Linhart <44973138+JuliaLinhart@users.noreply.github.com> Date: Fri, 17 May 2024 12:35:19 +0200 Subject: [PATCH 49/53] feat: local c2st metric (#1109) * lc2st class - first imp * null hypothesis * start of notebook * LC2ST class and notebook version 2 * notebook with graphical diagnostics on GaussianMixture * missing text in notebook and final fixes * move gaussian_mixture model from utils to sbi.simulators * ruff fix * ruff fix * typing fix and small doc changes * fix bug in return `statistic_data`, no prepare_for_sbi in notebook * bug fix in args of `statistics_data` * fixes suggested by reviewer @agramfort, doc and typing * changes simulator gaussian_mixture * variable name changes pep8 and sbi convention * more explicit method names and custom clf_kwargs * remove pandas dependency * tutorial results description and other fixes for PR * clarifications lc2st-nf * ruff check fix * 10 --> 100 test runs * negatif --> negativ * rebase changes + pytest fix * ensembling * ruff fix * add reference for pp-plot Co-authored-by: Peter Steinbach * tutorial changes and ruff * change the default n_ensemble back to 1, explain in tutorial and lc2st doc * change the default n_ensemble back to 1, explain in tutorial and lc2st doc * ensembling, clf-choice in tutorial, lc2st-nf description in doc * pyright fix --------- Co-authored-by: Peter Steinbach Co-authored-by: Jan --- sbi/analysis/__init__.py | 3 + sbi/analysis/plot.py | 240 ++++- sbi/diagnostics/lc2st.py | 779 +++++++++++++++ sbi/simulators/gaussian_mixture.py | 167 ++++ sbi/utils/analysis_utils.py | 51 +- tests/lc2st_test.py | 266 +++++ tutorials/00_getting_started_flexible.ipynb | 2 +- .../17_importance_sampled_posteriors.ipynb | 28 +- tutorials/18_diagnostics_lc2st.ipynb | 907 ++++++++++++++++++ 9 files changed, 2426 insertions(+), 17 deletions(-) create mode 100644 sbi/diagnostics/lc2st.py create mode 100644 sbi/simulators/gaussian_mixture.py create mode 100644 tests/lc2st_test.py create mode 100644 tutorials/18_diagnostics_lc2st.ipynb diff --git a/sbi/analysis/__init__.py b/sbi/analysis/__init__.py index d54971c44..dc18f5819 100644 --- a/sbi/analysis/__init__.py +++ b/sbi/analysis/__init__.py @@ -9,7 +9,10 @@ conditional_marginal_plot, conditional_pairplot, marginal_plot, + marginal_plot_with_probs_intensity, pairplot, + pp_plot, + pp_plot_lc2st, sbc_rank_plot, ) from sbi.analysis.sensitivity_analysis import ActiveSubspace diff --git a/sbi/analysis/plot.py b/sbi/analysis/plot.py index 300038f1a..47458ed79 100644 --- a/sbi/analysis/plot.py +++ b/sbi/analysis/plot.py @@ -2,20 +2,24 @@ # under the Apache License Version 2.0, see import collections -from typing import Any, Callable, Dict, List, Optional, Tuple, Union +from typing import Any, Callable, Dict, List, Optional, Tuple, Union, cast from warnings import warn import matplotlib as mpl import numpy as np import six import torch +from matplotlib import cm from matplotlib import pyplot as plt from matplotlib.axes import Axes +from matplotlib.colors import Normalize from matplotlib.figure import Figure, FigureBase +from matplotlib.patches import Rectangle from scipy.stats import binom, gaussian_kde, iqr from torch import Tensor from sbi.analysis import eval_conditional_density +from sbi.utils.analysis_utils import pp_vals try: collectionsAbc = collections.abc # type: ignore @@ -1832,6 +1836,240 @@ def _plot_hist_region_expected_under_uniformity( ) +# Diagnostics for hypothesis tests + + +def pp_plot( + scores: Union[List[np.ndarray], Dict[Any, np.ndarray]], + scores_null: Union[List[np.ndarray], Dict[Any, np.ndarray]], + true_scores_null: np.ndarray, + conf_alpha: float, + n_alphas: int = 100, + labels: Optional[List[str]] = None, + colors: Optional[List[str]] = None, + ax: Optional[Axes] = None, + **kwargs: Any, +) -> Axes: + """Probability - Probability (P-P) plot for hypothesis tests + to assess the validity of one (or several) estimator(s). + + See [here](https://en.wikipedia.org/wiki/P%E2%80%93P_plot) for more details. + + Args: + scores: test scores estimated on observed data and evaluated on the test set, + of shape (n_eval,). One array per estimator. + scores_null: test scores estimated under the null hypothesis and evaluated on + the test set, of shape (n_eval,). One array per null trial. + true_scores_null: theoretical true scores under the null hypothesis, + of shape (n_eval,). + labels: labels for the estimators, defaults to None. + colors: colors for the estimators, defaults to None. + conf_alpha: significanecee level of the hypothesis test. + n_alphas: number of cdf-values to compute the P-P plot, defaults to 100. + ax: axis to plot on, defaults to None. + kwargs: additional arguments for matplotlib plotting. + + Returns: + ax: axes with the P-P plot. + """ + if ax is None: + ax = plt.gca() + ax_: Axes = cast(Axes, ax) # cast to fix pyright error + + alphas = np.linspace(0, 1, n_alphas) + + # pp_vals for the true null hypothesis + pp_vals_true = pp_vals(true_scores_null, alphas) + ax_.plot(alphas, pp_vals_true, "--", color="black", label="True Null (H0)") + + # pp_vals for the estimated null hypothesis over the multiple trials + pp_vals_null = [] + for t in range(len(scores_null)): + pp_vals_null.append(pp_vals(scores_null[t], alphas)) + pp_vals_null = np.array(pp_vals_null) + + # confidence region + quantiles = np.quantile(pp_vals_null, [conf_alpha / 2, 1 - conf_alpha / 2], axis=0) + ax_.fill_between( + alphas, + quantiles[0], + quantiles[1], + color="grey", + alpha=0.2, + label=f"{(1 - conf_alpha) * 100}% confidence region", + ) + + # pp_vals for the observed data + for i, p_ in enumerate(scores): + pp_vals_o = pp_vals(p_, alphas) + if labels is not None: + kwargs["label"] = labels[i] + if colors is not None: + kwargs["color"] = colors[i] + ax_.plot(alphas, pp_vals_o, **kwargs) + return ax_ + + +def marginal_plot_with_probs_intensity( + probs_per_marginal: dict, + marginal_dim: int, + n_bins: int = 20, + vmin: float = 0.0, + vmax: float = 1.0, + cmap_name: str = "Spectral_r", + show_colorbar: bool = True, + label: Optional[str] = None, + ax: Optional[Axes] = None, +) -> Axes: + """Plot 1d or 2d marginal histogram of samples of the density estimator + with probabilities as color intensity. + + Args: + probs_per_marginal: dataframe with predicted class probabilities + as obtained from `sbi.utils.analysis_utils.get_probs_per_marginal`. + marginal_dim: dimension of the marginal histogram to plot. + n_bins: number of bins for the histogram, defaults to 20. + vmin: minimum value for the color intensity, defaults to 0. + vmax: maximum value for the color intensity, defaults to 1. + cmap: colormap for the color intensity, defaults to "Spectral_r". + show_colorbar: whether to show the colorbar, defaults to True. + label: label for the colorbar, defaults to None. + ax (matplotlib.axes.Axes): axes to plot on, defaults to None. + + Returns: + ax (matplotlib.axes.Axes): axes with the plot. + """ + assert marginal_dim in [1, 2], "Only 1d or 2d marginals are supported." + + if ax is None: + ax = plt.gca() + ax_: Axes = cast(Axes, ax) # cast to fix pyright error + + if label is None: + label = "probability" + + # get colormap + cmap = cm.get_cmap(cmap_name) + + # case of 1d marginal + if marginal_dim == 1: + # extract bins and patches + _, bins, patches = ax_.hist( + probs_per_marginal['s'], n_bins, density=True, color="green" + ) + # create bins: all samples between bin edges are assigned to the same bin + probs_per_marginal["bins"] = np.searchsorted(bins, probs_per_marginal['s']) - 1 + probs_per_marginal["bins"][probs_per_marginal["bins"] < 0] = 0 + # get mean prob for each bin (same as pandas groupy method) + array_probs = np.concatenate( + [probs_per_marginal['bins'][:, None], probs_per_marginal['probs'][:, None]], + axis=1, + ) + array_probs = array_probs[array_probs[:, 0].argsort()] + weights = np.split( + array_probs[:, 1], np.unique(array_probs[:, 0], return_index=True)[1][1:] + ) + weights = np.array([np.mean(w) for w in weights]) + # remove empty bins + id = list(set(range(n_bins)) - set(probs_per_marginal['bins'])) + patches = np.delete(patches, id) + bins = np.delete(bins, id) + + # normalize color intensity + norm = Normalize(vmin=vmin, vmax=vmax) + # set color intensity + for w, p in zip(weights, patches): + p.set_facecolor(cmap(w)) + if show_colorbar: + plt.colorbar(cm.ScalarMappable(norm=norm, cmap=cmap), ax=ax_, label=label) + + if marginal_dim == 2: + # extract bin edges + _, x, y = np.histogram2d( + probs_per_marginal['s_1'], probs_per_marginal['s_2'], bins=n_bins + ) + # create bins: all samples between bin edges are assigned to the same bin + probs_per_marginal["bins_x"] = np.searchsorted(x, probs_per_marginal['s_1']) - 1 + probs_per_marginal["bins_y"] = np.searchsorted(y, probs_per_marginal['s_2']) - 1 + probs_per_marginal["bins_x"][probs_per_marginal["bins_x"] < 0] = 0 + probs_per_marginal["bins_y"][probs_per_marginal["bins_y"] < 0] = 0 + + # extract unique bin pairs + group_idx = np.concatenate( + [ + probs_per_marginal['bins_x'][:, None], + probs_per_marginal['bins_y'][:, None], + ], + axis=1, + ) + unique_bins = np.unique(group_idx, return_counts=True, axis=0)[0] + + # get mean prob for each bin (same as pandas groupy method) + mean_probs = np.zeros((len(unique_bins),)) + for i in range(len(unique_bins)): + idx = np.where((group_idx == unique_bins[i]).all(axis=1)) + mean_probs[i] = np.mean(probs_per_marginal['probs'][idx]) + + # create weight matrix with nan values for non-existing bins + weights = np.zeros((n_bins, n_bins)) + weights[:] = np.nan + weights[unique_bins[:, 0], unique_bins[:, 1]] = mean_probs + + # set color intensity + norm = Normalize(vmin=vmin, vmax=vmax) + for i in range(len(x) - 1): + for j in range(len(y) - 1): + facecolor = cmap(norm(weights.T[j, i])) + # if no sample in bin, set color to white + if weights.T[j, i] == np.nan: + facecolor = "white" + rect = Rectangle( + (x[i], y[j]), + x[i + 1] - x[i], + y[j + 1] - y[j], + facecolor=facecolor, + edgecolor="none", + ) + ax_.add_patch(rect) + if show_colorbar: + plt.colorbar(cm.ScalarMappable(norm=norm, cmap=cmap), ax=ax_, label=label) + + return ax_ + + +# Customized plotting functions for LC2ST + + +def pp_plot_lc2st( + probs: Union[List[np.ndarray], Dict[Any, np.ndarray]], + probs_null: Union[List[np.ndarray], Dict[Any, np.ndarray]], + conf_alpha: float, + **kwargs: Any, +) -> Axes: + """Probability - Probability (P-P) plot for LC2ST. + + Args: + probs: predicted probability on observed data and evaluated on the test set, + of shape (n_eval,). One array per estimator. + probs_null: predicted probability under the null hypothesis and evaluated on + the test set, of shape (n_eval,). One array per null trial. + conf_alpha: significanecee level of the hypothesis test. + kwargs: additional arguments for `pp_plot`. + + Returns: + ax: axes with the P-P plot. + """ + # probability at chance level (under the null) is 0.5 + true_probs_null = np.array([0.5] * len(probs)) + return pp_plot( + scores=probs, + scores_null=probs_null, + true_scores_null=true_probs_null, + conf_alpha=conf_alpha, + **kwargs, + ) + + # TO BE DEPRECATED # ---------------- def pairplot_dep( diff --git a/sbi/diagnostics/lc2st.py b/sbi/diagnostics/lc2st.py new file mode 100644 index 000000000..0fc16de4b --- /dev/null +++ b/sbi/diagnostics/lc2st.py @@ -0,0 +1,779 @@ +from typing import Any, Callable, Dict, List, Optional, Tuple, Union + +import numpy as np +import torch +from sklearn.base import BaseEstimator, clone +from sklearn.ensemble import RandomForestClassifier +from sklearn.model_selection import KFold +from sklearn.neural_network import MLPClassifier +from torch import Tensor +from tqdm import tqdm + + +class LC2ST: + def __init__( + self, + thetas: Tensor, + xs: Tensor, + posterior_samples: Tensor, + seed: int = 1, + num_folds: int = 1, + num_ensemble: int = 1, + classifier: str = "mlp", + z_score: bool = False, + clf_class: Optional[Any] = None, + clf_kwargs: Optional[Dict[str, Any]] = None, + num_trials_null: int = 100, + permutation: bool = True, + ) -> None: + """ + L-C2ST: Local Classifier Two-Sample Test + ----------------------------------------- + Implementation based on the official code from [1] and the exisiting C2ST + metric [2], using scikit-learn classifiers. + + L-C2ST tests the local consistency of a posterior estimator q w.r.t. to the true + posterior p, at fixed observation `x_o`, i.e. whether the following null + hypothesis holds: $H_0(x_o) := q(\theta | x_o) = p(\theta | x_o)$. + + 1. Trains a classifier to distinguish between samples from two joint + distributions [theta_p, x_p] and [theta_q, x_q] and evaluates the L-C2ST + statistic at a given observation `x_o`. + 2. The L-C2ST statistic is the mean squared error between the predicted + probabilities of being in p (class 0) and a Dirac at 0.5, which corresponds to + the chance level of the classifier, unable to distinguish between p and q. + - If `num_ensemble`>1, the average prediction over all classifiers is used. + - If `num_folds`>1 the average statistic over all cv-folds is used. + + To evaluate the test, steps 1 and 2 are performed over multiple trials under the + null hypothesis (H0). If the null distribution is not known, it is estimated + using the permutation method, i.e. by training the classifier on the permuted + data. The statistics obtained under (H0) is then compared to the one obtained + on observed data to compute the p-value, used to decide whether to reject (H0) + or not. + + + Args: + thetas: Samples from the prior, of shape (sample_size, dim). + xs: Corresponding simulated data, of shape (sample_size, dim_x). + posterior_samples: Samples from the estiamted posterior, + of shape (sample_size, dim) + seed: Seed for the sklearn classifier and the KFold cross validation, + defaults to 1. + num_folds: Number of folds for the cross-validation, + defaults to 1 (no cross-validation). + This is useful to reduce variance coming from the data. + num_ensemble: Number of classifiers for ensembling, defaults to 1. + This is useful to reduce variance coming from the classifier. + z_score: Whether to z-score to normalize the data, defaults to False. + classifier: Classification architecture to use, + possible values: "random_forest" or "mlp", defaults to "mlp". + clf_class: Custom sklearn classifier class, defaults to None. + clf_kwargs: Custom kwargs for the sklearn classifier, defaults to None. + num_trials_null: Number of trials to estimate the null distribution, + defaults to 100. + permutation: Whether to use the permutation method for the null hypothesis, + defaults to True. + + References: + [1] : https://arxiv.org/abs/2306.03580, https://github.com/JuliaLinhart/lc2st + [2] : https://github.com/sbi-dev/sbi/blob/main/sbi/utils/metrics.py + """ + + assert ( + thetas.shape[0] == xs.shape[0] == posterior_samples.shape[0] + ), "Number of samples must match" + + # set observed data for classification + self.theta_p = posterior_samples + self.x_p = xs + self.theta_q = thetas + self.x_q = xs + + # z-score normalization parameters + self.z_score = z_score + self.theta_p_mean = torch.mean(self.theta_p, dim=0) + self.theta_p_std = torch.std(self.theta_p, dim=0) + self.x_p_mean = torch.mean(self.x_p, dim=0) + self.x_p_std = torch.std(self.x_p, dim=0) + + # set parameters for classifier training + self.seed = seed + self.num_folds = num_folds + self.num_ensemble = num_ensemble + + # initialize classifier + if "mlp" in classifier.lower(): + ndim = thetas.shape[-1] + self.clf_class = MLPClassifier + if clf_kwargs is None: + self.clf_kwargs = { + "activation": "relu", + "hidden_layer_sizes": (10 * ndim, 10 * ndim), + "max_iter": 1000, + "solver": "adam", + "early_stopping": True, + "n_iter_no_change": 50, + } + elif "random_forest" in classifier.lower(): + self.clf_class = RandomForestClassifier + if clf_kwargs is None: + self.clf_kwargs = {} + elif "custom": + if clf_class is None or clf_kwargs is None: + raise ValueError( + "Please provide a valid sklearn classifier class and kwargs." + ) + self.clf_class = clf_class + self.clf_kwargs = clf_kwargs + else: + raise NotImplementedError + + # initialize classifiers, will be set after training + self.trained_clfs = None + self.trained_clfs_null = None + + # parameters for the null hypothesis testing + self.num_trials_null = num_trials_null + self.permutation = permutation + # can be specified if known and independent of x (see `LC2ST-NF`) + self.null_distribution = None + + def _train( + self, + theta_p: Tensor, + theta_q: Tensor, + x_p: Tensor, + x_q: Tensor, + verbosity: int = 0, + ) -> List[Any]: + """Returns the classifiers trained on observed data. + + Args: + theta_p: Samples from P, of shape (sample_size, dim). + theta_q: Samples from Q, of shape (sample_size, dim). + x_p: Observations corresponding to P, of shape (sample_size, dim_x). + x_q: Observations corresponding to Q, of shape (sample_size, dim_x). + verbosity: Verbosity level, defaults to 0. + + Returns: + List of trained classifiers for each cv fold. + """ + + # prepare data + + if self.z_score: + theta_p = (theta_p - self.theta_p_mean) / self.theta_p_std + theta_q = (theta_q - self.theta_p_mean) / self.theta_p_std + x_p = (x_p - self.x_p_mean) / self.x_p_std + x_q = (x_q - self.x_p_mean) / self.x_p_std + + # initialize classifier + clf = self.clf_class(**self.clf_kwargs or {}) + + if self.num_ensemble > 1: + clf = EnsembleClassifier(clf, self.num_ensemble, verbosity=verbosity) + + # cross-validation + if self.num_folds > 1: + trained_clfs = [] + kf = KFold(n_splits=self.num_folds, shuffle=True, random_state=self.seed) + cv_splits = kf.split(theta_p.numpy()) + for train_idx, _ in tqdm( + cv_splits, desc="Cross-validation", disable=verbosity < 1 + ): + # get train split + theta_p_train, theta_q_train = theta_p[train_idx], theta_q[train_idx] + x_p_train, x_q_train = x_p[train_idx], x_q[train_idx] + + # train classifier + clf_n = train_lc2st( + theta_p_train, theta_q_train, x_p_train, x_q_train, clf + ) + + trained_clfs.append(clf_n) + else: + # train single classifier + clf = train_lc2st(theta_p, theta_q, x_p, x_q, clf) + trained_clfs = [clf] + + return trained_clfs + + def get_scores( + self, + theta_o: Tensor, + x_o: Tensor, + trained_clfs: List[Any], + return_probs: bool = False, + ) -> Union[np.ndarray, Tuple[np.ndarray, np.ndarray]]: + """Computes the L-C2ST scores given the trained classifiers: + Mean squared error (MSE) between 0.5 and the predicted probabilities + of being in class 0 over the dataset (`theta_o`, `x_o`). + + Args: + theta_o: Samples from the posterior conditioned on the observation `x_o`, + of shape (sample_size, dim). + x_o: The observation, of shape (,dim_x). + trained_clfs: List of trained classifiers, of length `num_folds`. + return_probs: Whether to return the predicted probabilities of being in P, + defaults to False. + + Returns: one of + scores: L-C2ST scores at `x_o`, of shape (`num_folds`,). + (probs, scores): Predicted probabilities and L-C2ST scores at `x_o`, + each of shape (`num_folds`,). + """ + # prepare data + if self.z_score: + theta_o = (theta_o - self.theta_p_mean) / self.theta_p_std + x_o = (x_o - self.x_p_mean) / self.x_p_std + + probs, scores = [], [] + + # evaluate classifiers + for clf in trained_clfs: + proba, score = eval_lc2st(theta_o, x_o, clf, return_proba=True) + probs.append(proba) + scores.append(score) + probs, scores = np.array(probs), np.array(scores) + + if return_probs: + return probs, scores + else: + return scores + + def train_on_observed_data( + self, seed: Optional[int] = None, verbosity: int = 1 + ) -> Union[None, List[Any]]: + """Trains the classifier on the observed data. + Saves the trained classifier(s) as a list of length `num_folds`. + + Args: + seed: random state of the classifier, defaults to None. + verbosity: Verbosity level, defaults to 1. + """ + # set random state + if seed is not None: + if "random_state" in self.clf_kwargs: + print("WARNING: changing the random state of the classifier.") + self.clf_kwargs["random_state"] = seed # type: ignore + + # train the classifier + trained_clfs = self._train( + self.theta_p, self.theta_q, self.x_p, self.x_q, verbosity=verbosity + ) + self.trained_clfs = trained_clfs + + def get_statistic_on_observed_data( + self, + theta_o: Tensor, + x_o: Tensor, + ) -> float: + """Computes the L-C2ST statistics for the observed data: + Mean over all cv-scores. + + Args: + theta_o: Samples from the posterior conditioned on the observation `x_o`, + of shape (sample_size, dim). + x_o: The observation, of shape (, dim_x) + + Returns: + L-C2ST statistic at `x_o`. + """ + assert ( + self.trained_clfs is not None + ), "No trained classifiers found. Run `train_on_observed_data` first." + _, scores = self.get_scores( + theta_o=theta_o, + x_o=x_o, + trained_clfs=self.trained_clfs, + return_probs=True, + ) + return scores.mean() + + def p_value( + self, + theta_o: Tensor, + x_o: Tensor, + ) -> float: + r"""Computes the p-value for L-C2ST. + + The p-value is the proportion of times the L-C2ST statistic under the null + hypothesis is greater than the L-C2ST statistic at the observation `x_o`. + It is computed by taking the empirical mean over statistics computed on + several trials under the null hypothesis: $1/H \sum_{h=1}^{H} I(T_h < T_o)$. + + Args: + theta_o: Samples from the posterior conditioned on the observation `x_o`, + of dhape (sample_size, dim). + x_o: The observation, of shape (, dim_x). + + Returns: + p-value for L-C2ST at `x_o`. + """ + stat_data = self.get_statistic_on_observed_data(theta_o=theta_o, x_o=x_o) + _, stats_null = self.get_statistics_under_null_hypothesis( + theta_o=theta_o, x_o=x_o, return_probs=True, verbosity=0 + ) + return (stat_data < stats_null).mean() + + def reject_test( + self, + theta_o: Tensor, + x_o: Tensor, + alpha: float = 0.05, + ) -> bool: + """Computes the test result for L-C2ST at a given significance level. + + Args: + theta_o: Samples from the posterior conditioned on the observation `x_o`, + of shape (sample_size, dim). + x_o: The observation, of shape (, dim_x). + alpha: Significance level, defaults to 0.05. + + Returns: + The L-C2ST result: True if rejected, False otherwise. + """ + return self.p_value(theta_o=theta_o, x_o=x_o) < alpha + + def train_under_null_hypothesis( + self, + verbosity: int = 1, + ) -> None: + """Computes the L-C2ST scores under the null hypothesis (H0). + Saves the trained classifiers for each null trial. + + Args: + verbosity: Verbosity level, defaults to 1. + """ + + trained_clfs_null = {} + for t in tqdm( + range(self.num_trials_null), + desc=f"Training the classifiers under H0, permutation = {self.permutation}", + disable=verbosity < 1, + ): + # prepare data + if self.permutation: + joint_p = torch.cat([self.theta_p, self.x_p], dim=1) + joint_q = torch.cat([self.theta_q, self.x_q], dim=1) + # permute data (same as permuting the labels) + joint_p_perm, joint_q_perm = permute_data(joint_p, joint_q, seed=t) + # extract the permuted P and Q and x + theta_p_t, x_p_t = ( + joint_p_perm[:, : self.theta_p.shape[-1]], + joint_p_perm[:, self.theta_p.shape[1] :], + ) + theta_q_t, x_q_t = ( + joint_q_perm[:, : self.theta_q.shape[-1]], + joint_q_perm[:, self.theta_q.shape[1] :], + ) + else: + assert ( + self.null_distribution is not None + ), "You need to provide a null distribution" + theta_p_t = self.null_distribution.sample((self.theta_p.shape[0],)) + theta_q_t = self.null_distribution.sample((self.theta_p.shape[0],)) + x_p_t, x_q_t = self.x_p, self.x_q + + if self.z_score: + theta_p_t = (theta_p_t - self.theta_p_mean) / self.theta_p_std + theta_q_t = (theta_q_t - self.theta_p_mean) / self.theta_p_std + x_p_t = (x_p_t - self.x_p_mean) / self.x_p_std + x_q_t = (x_q_t - self.x_p_mean) / self.x_p_std + + # train + clf_t = self._train(theta_p_t, theta_q_t, x_p_t, x_q_t, verbosity=0) + trained_clfs_null[t] = clf_t + + self.trained_clfs_null = trained_clfs_null + + def get_statistics_under_null_hypothesis( + self, + theta_o: Tensor, + x_o: Tensor, + return_probs: bool = False, + verbosity: int = 0, + ) -> Union[np.ndarray, Tuple[np.ndarray, np.ndarray]]: + """Computes the L-C2ST scores under the null hypothesis. + + Args: + theta_o: Samples from the posterior conditioned on the observation `x_o`, + of shape (sample_size, dim). + x_o: The observation, of shape (, dim_x). + return_probs: Whether to return the predicted probabilities of being in P, + defaults to False. + verbosity: Verbosity level, defaults to 1. + + Returns: one of + scores: L-C2ST scores under (H0). + (probs, scores): Predicted probabilities and L-C2ST scores under (H0). + """ + + if self.trained_clfs_null is None: + raise ValueError( + "You need to train the classifiers under (H0). \ + Run `train_under_null_hypothesis`." + ) + else: + assert ( + len(self.trained_clfs_null) == self.num_trials_null + ), "You need one classifier per trial." + + probs_null, stats_null = [], [] + for t in tqdm( + range(self.num_trials_null), + desc=f"Computing T under (H0) - permutation = {self.permutation}", + disable=verbosity < 1, + ): + # prepare data + if self.permutation: + theta_o_t = theta_o + else: + assert ( + self.null_distribution is not None + ), "You need to provide a null distribution" + + theta_o_t = self.null_distribution.sample((theta_o.shape[0],)) + + if self.z_score: + theta_o_t = (theta_o_t - self.theta_p_mean) / self.theta_p_std + x_o = (x_o - self.x_p_mean) / self.x_p_std + + # evaluate + clf_t = self.trained_clfs_null[t] + probs, scores = self.get_scores( + theta_o=theta_o_t, x_o=x_o, trained_clfs=clf_t, return_probs=True + ) + probs_null.append(probs) + stats_null.append(scores.mean()) + + probs_null, stats_null = np.array(probs_null), np.array(stats_null) + + if return_probs: + return probs_null, stats_null + else: + return stats_null + + +class LC2ST_NF(LC2ST): + def __init__( + self, + thetas: Tensor, + xs: Tensor, + posterior_samples: Tensor, + flow_inverse_transform: Callable[[Tensor, Tensor], Tensor], + flow_base_dist: torch.distributions.Distribution, + num_eval: int = 10_000, + trained_clfs_null: Optional[Dict[str, List[Any]]] = None, + **kwargs: Any, + ) -> None: + """ + L-C2ST for Normalizing Flows. + + LC2ST_NF is a subclass of LC2ST that performs the test in the space of the + base distribution of a normalizing flow. It uses the inverse transform of the + normalizing flow $T_\\phi^{-1}$ to map the samples from the prior and the + posterior to the base distribution space. Following Theorem 4, Eq. 17 from [1], + the new null hypothesis for a Gaussian base distribution is: + + $H_0(x_o) := p(T_\\phi^{-1}(\theta ; x_o) | x_o) = N(0, I_m)$. + + This is because a sample from the NF is a sample from the base distribution + pushed through the flow: + + $z = T_\\phi^{-1}(\\theta) \\sim N(0, I_m) \\iff theta = T_\\phi(z)$. + + This defines the two classes P and Q for the L-C2ST test, one of which is + the Gaussion distribution that can be easily be sampled from and is independent + of the observation `x_o` and the estimator q. + + Important features are: + - no `theta_o` is passed to the evaluation functions (e.g. `get_scores`), + as the base distribution is known, samples are drawn at initialization. + - no permutation method is used, as the null distribution is known, + samples are drawn during `train_under_null_hypothesis`. + - the classifiers can be pre-trained under the null and `trained_clfs_null` + passed as an argument at initialization. They do not depend on the + observed data (i.e. `posterior_samples` and `xs`). + + Args: + thetas: Samples from the prior, of shape (sample_size, dim). + xs: Corresponding simulated data, of shape (sample_size, dim_x). + posterior_samples: Samples from the estiamted posterior, + of shape (sample_size, dim). + flow_inverse_transform: Inverse transform of the normalizing flow. + Takes thetas and xs as input and returns noise. + flow_base_dist: Base distribution of the normalizing flow. + num_eval: Number of samples to evaluate the L-C2ST. + trained_clfs_null: Pre-trained classifiers under the null. + kwargs: Additional arguments for the LC2ST class. + + References: + [1] : https://arxiv.org/abs/2306.03580, https://github.com/JuliaLinhart/lc2st + """ + # Aplly the inverse transform to the thetas and the posterior samples + self.flow_inverse_transform = flow_inverse_transform + inverse_thetas = flow_inverse_transform(thetas, xs).detach() + inverse_posterior_samples = flow_inverse_transform( + posterior_samples, xs + ).detach() + + # Initialize the LC2ST class with the inverse transformed samples + super().__init__(inverse_thetas, xs, inverse_posterior_samples, **kwargs) + + # Set the parameters for the null hypothesis testing + self.null_distribution = flow_base_dist + self.permutation = False + self.trained_clfs_null = trained_clfs_null + + # Draw samples from the base distribution for evaluation + self.theta_o = flow_base_dist.sample(torch.Size([num_eval])) + + def get_scores( + self, + x_o: Tensor, + trained_clfs: List[Any], + return_probs: bool = False, + **kwargs: Any, + ) -> Union[np.ndarray, Tuple[np.ndarray, np.ndarray]]: + """Computes the L-C2ST scores given the trained classifiers. + + Args: + x_o: The observation, of shape (,dim_x). + trained_clfs: Trained classifiers. + return_probs: Whether to return the predicted probabilities of being in P, + defaults to False. + kwargs: Additional arguments used in the parent class. + + Returns: one of + scores: L-C2ST scores at `x_o`. + (probs, scores): Predicted probabilities and L-C2ST scores at `x_o`. + """ + return super().get_scores( + theta_o=self.theta_o, + x_o=x_o, + trained_clfs=trained_clfs, + return_probs=return_probs, + ) + + def get_statistic_on_observed_data( + self, + x_o: Tensor, + **kwargs: Any, + ) -> float: + """Computes the L-C2ST statistics for the observed data: + Mean over all cv-scores. + + Args: + x_o: The observation, of shape (, dim_x). + kwargs: Additional arguments used in the parent class. + + Returns: + L-C2ST statistic at `x_o`. + """ + return super().get_statistic_on_observed_data(theta_o=self.theta_o, x_o=x_o) + + def p_value( + self, + x_o: Tensor, + **kwargs: Any, + ) -> float: + r"""Computes the p-value for L-C2ST. + + The p-value is the proportion of times the L-C2ST statistic under the null + hypothesis is greater than the L-C2ST statistic at the observation `x_o`. + It is computed by taking the empirical mean over statistics computed on + several trials under the null hypothesis: $1/H \sum_{h=1}^{H} I(T_h < T_o)$. + + Args: + x_o: The observation, of shape (, dim_x). + kwargs: Additional arguments used in the parent class. + + Returns: + p-value for L-C2ST at `x_o`. + """ + return super().p_value(theta_o=self.theta_o, x_o=x_o) + + def reject_test( + self, + x_o: Tensor, + alpha: float = 0.05, + **kwargs: Any, + ) -> bool: + """Computes the test result for L-C2ST at a given significance level. + + Args: + x_o: The observation, of shape (, dim_x). + alpha: Significance level, defaults to 0.05. + kwargs: Additional arguments used in the parent class. + + Returns: + L-C2ST result: True if rejected, False otherwise. + """ + return super().reject_test(theta_o=self.theta_o, x_o=x_o, alpha=alpha) + + def train_under_null_hypothesis( + self, + verbosity: int = 1, + ) -> None: + """Computes the L-C2ST scores under the null hypothesis. + Saves the trained classifiers for the null distribution. + + Args: + verbosity: Verbosity level, defaults to 1. + """ + if self.trained_clfs_null is not None: + raise ValueError( + "Classifiers have already been trained under the null \ + and can be used to evaluate any new estimator." + ) + return super().train_under_null_hypothesis(verbosity=verbosity) + + def get_statistics_under_null_hypothesis( + self, + x_o: Tensor, + return_probs: bool = False, + verbosity: int = 0, + **kwargs: Any, + ) -> Union[np.ndarray, Tuple[np.ndarray, np.ndarray]]: + """Computes the L-C2ST scores under the null hypothesis. + + Args: + x_o: The observation. + Shape (, dim_x) + return_probs: Whether to return the predicted probabilities of being in P. + Defaults to False. + verbosity: Verbosity level, defaults to 1. + kwargs: Additional arguments used in the parent class. + """ + return super().get_statistics_under_null_hypothesis( + theta_o=self.theta_o, + x_o=x_o, + return_probs=return_probs, + verbosity=verbosity, + ) + + +def train_lc2st( + theta_p: Tensor, theta_q: Tensor, x_p: Tensor, x_q: Tensor, clf: BaseEstimator +) -> Any: + """Trains the classifier on the joint data for the L-C2ST. + + Args: + theta_p: Samples from P, of shape (sample_size, dim). + theta_q: Samples from Q, of shape (sample_size, dim). + x_p: Observations corresponding to P, of shape (sample_size, dim_x). + x_q: Observations corresponding to Q, of shape (sample_size, dim_x). + clf: Classifier to train. + + Returns: + Trained classifier. + """ + # cpu and numpy + theta_p = theta_p.cpu().numpy() + theta_q = theta_q.cpu().numpy() + x_p = x_p.cpu().numpy() + x_q = x_q.cpu().numpy() + + # concatenate to get joint data + joint_p = np.concatenate([theta_p, x_p], axis=1) + joint_q = np.concatenate([theta_q, x_q], axis=1) + + # prepare data + data = np.concatenate((joint_p, joint_q)) + # labels + target = np.concatenate(( + np.zeros((joint_p.shape[0],)), + np.ones((joint_q.shape[0],)), + )) + + # train classifier + clf_ = clone(clf) + clf_.fit(data, target) # type: ignore + + return clf_ + + +def eval_lc2st( + theta_p: Tensor, x_o: Tensor, clf: BaseEstimator, return_proba: bool = False +) -> Union[float, Tuple[np.ndarray, float]]: + """Evaluates the classifier returned by `train_lc2st` for one observation + `x_o` and over the samples `P`. + + Args: + theta_p: Samples from p (class 0), of shape (sample_size, dim). + x_o: The observation, of shape (, dim_x). + clf: Trained classifier. + return_proba: Whether to return the predicted probabilities of being in P, + defaults to False. + + Returns: + L-C2ST score at `x_o`: MSE between 0.5 and the predicted classifier + probability for class 0 on `theta_p`. + """ + # concatenate to get joint data + joint_p = np.concatenate( + [theta_p.cpu().numpy(), x_o.repeat(len(theta_p), 1).cpu().numpy()], axis=1 + ) + + # evaluate classifier + # probability of being in P (class 0) + proba = clf.predict_proba(joint_p)[:, 0] # type: ignore + # mean squared error between proba and dirac at 0.5 + score = ((proba - [0.5] * len(proba)) ** 2).mean() + + if return_proba: + return proba, score + else: + return score + + +def permute_data( + theta_p: Tensor, theta_q: Tensor, seed: int = 1 +) -> Tuple[Tensor, Tensor]: + """Permutes the concatenated data [P,Q] to create null samples. + + Args: + theta_p: samples from P, of shape (sample_size, dim). + theta_q: samples from Q, of shape (sample_size, dim). + seed: random seed, defaults to 1. + + Returns: + Permuted data [theta_p,theta_qss] + """ + # set seed + torch.manual_seed(seed) + # check inputs + assert theta_p.shape[0] == theta_q.shape[0] + + sample_size = theta_p.shape[0] + X = torch.cat([theta_p, theta_q], dim=0) + x_perm = X[torch.randperm(sample_size * 2)] + return x_perm[:sample_size], x_perm[sample_size:] + + +class EnsembleClassifier(BaseEstimator): + def __init__(self, clf, num_ensemble=1, verbosity=1): + self.clf = clf + self.num_ensemble = num_ensemble + self.trained_clfs = [] + self.verbosity = verbosity + + def fit(self, X, y): + for n in tqdm( + range(self.num_ensemble), + desc="Ensemble training", + disable=self.verbosity < 1, + ): + clf = clone(self.clf) + if clf.random_state is not None: # type: ignore + clf.random_state += n # type: ignore + else: + clf.random_state = n + 1 # type: ignore + clf.fit(X, y) # type: ignore + self.trained_clfs.append(clf) + + def predict_proba(self, X): + probas = [clf.predict_proba(X) for clf in self.trained_clfs] + return np.mean(probas, axis=0) diff --git a/sbi/simulators/gaussian_mixture.py b/sbi/simulators/gaussian_mixture.py new file mode 100644 index 000000000..809d425df --- /dev/null +++ b/sbi/simulators/gaussian_mixture.py @@ -0,0 +1,167 @@ +import logging + +import pyro +import torch +from pyro import distributions as pdist +from torch import Tensor + +SIM_PARAMS = { + "mixture_locs_factor": [1.0, 1.0], + "mixture_scales": [1.0, 0.1], + "mixture_weights": [0.5, 0.5], +} + +PRIOR_PARAMS = { + "bound": 10.0, +} + + +def uniform_prior_gaussian_mixture(dim: int, bound: float = 10.0) -> pdist.Uniform: + """ + Prior distribution for Gaussian Mixture, as implemented in [1]. + + Args: + dim: Dimensionality of parameters and data. + bound: Prior is uniform in [-bound, +bound], defaults to 10.0. + + Returns: Prior distribution. + """ + return pdist.Uniform( + low=-bound * torch.ones((dim,)), + high=+bound * torch.ones((dim,)), + ).to_event(1) + + +def gaussian_mixture( + theta: Tensor, + mixture_locs_factor: list = SIM_PARAMS["mixture_locs_factor"], + mixture_scales: list = SIM_PARAMS["mixture_scales"], + mixture_weights: list = SIM_PARAMS["mixture_weights"], +) -> Tensor: + """ + Simulator for Gaussian Mixture, as implemented in [1]. + + The mixture components are Gaussians with scaled theta as mean and fixed scale: + `num_components = dim_theta`, default is 2. + + The dimensionality of the data can be changed, but the mixture parameters + (locs, scales, weights) need to be adjusted accordingly. + + References: + [1]: https://github.com/sbi-benchmark/sbibm/blob/main/sbibm/tasks/gaussian_mixture/task.py + + Args: + theta: Parameter sets to be simulated, of shape (num_samples, dim_theta). + mixture_locs_factor: Factor for the mean of the Gaussian mixture components, + of length (dim_theta). + mixture_scales: Scales of the Gaussian mixture components, + of length (dim_theta). + mixture_weights: Weights of the Gaussian mixture components, + of length (dim_theta). + + Returns: Simulated data, of shape (num_samples, dim_theta). + """ + + # Check dimensions + assert ( + theta.shape[-1] + == len(mixture_locs_factor) + == len(mixture_scales) + == len(mixture_weights) + ), "Mismatch in dimensions." + + # Sample mixture index for each parameter in batch + idx = pyro.sample( + "mixture_idx", + pdist.Categorical(probs=torch.tensor(mixture_weights)).expand_by([ + theta.shape[0] + ]), + ).unsqueeze(1) + + # Select loc and scales according to mixture index + loc = torch.tensor(mixture_locs_factor)[idx] * theta + scale = torch.tensor(mixture_scales)[idx] + + return pyro.sample("data", pdist.Normal(loc=loc, scale=scale).to_event(1)) + + +def samples_true_posterior_gaussian_mixture_uniform_prior( + x_o: Tensor, + mixture_locs_factor: list = SIM_PARAMS["mixture_locs_factor"], + mixture_scales: list = SIM_PARAMS["mixture_scales"], + mixture_weights: list = SIM_PARAMS["mixture_weights"], + prior_bound: float = 10.0, + num_samples: int = 1, +) -> torch.Tensor: + """Samples the true posterior for a given observation x_o when + the likelihood is a Gaussian Mixture and the prior is uniform. + + The dimensionality of the data is 2 by default, but can be changed if + the mixture parameters (locs, scales, weights) are adjusted accordingly. + + Uses closed form solution with rejection sampling, as implemented in [1]. + + References: + [1]: https://github.com/sbi-benchmark/sbibm/blob/main/sbibm/tasks/gaussian_mixture/task.py + + Args: + x_o: The observation, of shape (,dim_x). + mixture_locs_factor: Factor for the mean of the Gaussian mixture components, + of length (dim_x). + mixture_scales: Scales of the Gaussian mixture components, + of length (dim_x). + mixture_weights: Weights of the Gaussian mixture components, + of length (dim_x). + prior_bound: Prior is uniform in [-prior_bound, +prior_bound], + defaults to 10.0, as in [1]. + num_samples: Desired number of samples, defaults to 1. + + Returns: + Samples from the true posterior, of shape (num_samples, dim_x). + """ + + log = logging.getLogger(__name__) + + dim = x_o.shape[-1] + + # Check dimensions + assert ( + dim == len(mixture_locs_factor) == len(mixture_scales) == len(mixture_weights) + ), "Mismatch in dimensions." + + # Define prior distribution + prior_dist = uniform_prior_gaussian_mixture(dim, prior_bound) + + posterior_samples = [] + + # Reject samples outside of prior bounds + counter = 0 + while len(posterior_samples) < num_samples: + counter += 1 + idx = pyro.sample( + "mixture_idx", + pdist.Categorical(torch.tensor(mixture_weights)), + ) + sample = pyro.sample( + "posterior_sample", + pdist.Normal( + loc=torch.tensor(mixture_locs_factor)[idx] * x_o, + scale=torch.tensor(mixture_scales)[idx], + ), + ) + is_outside_prior = torch.isinf(prior_dist.log_prob(sample).sum()) + + if len(posterior_samples) > 0: + is_duplicate = sample in torch.cat(posterior_samples) + else: + is_duplicate = False + + if not is_outside_prior and not is_duplicate: + posterior_samples.append(sample) + + posterior_samples = torch.cat(posterior_samples) + acceptance_rate = float(num_samples / counter) + + log.info(f"Acceptance rate: {acceptance_rate}") + + return posterior_samples diff --git a/sbi/utils/analysis_utils.py b/sbi/utils/analysis_utils.py index 3b907d673..aa4ab0797 100644 --- a/sbi/utils/analysis_utils.py +++ b/sbi/utils/analysis_utils.py @@ -1,8 +1,9 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed # under the Apache License Version 2.0, see -from typing import Callable, Optional, Union +from typing import Callable, List, Optional, Union +import numpy as np import torch from joblib import Parallel, delayed from scipy.stats import gaussian_kde @@ -55,3 +56,51 @@ def get_max(s): peaks = Parallel(n_jobs=num_workers)(delayed(get_max)(s) for s in samples.T) return torch.tensor(peaks, dtype=torch.float32) + + +def get_probs_per_marginal(probs: np.ndarray, samples: np.ndarray) -> dict: + """Associates the given probabilities with each marginal dimension + of the samples. + Used for customized pairplots of the `samples` with `probs` + as weights for the colormap. + + Args: + probs: weights to associate with the samples, of shape (n_samples,). + samples: samples to extract the marginals, of shape (n_samples, dim). + + Returns: + dicts: dictionary with keys as the marginal dimensions and values as + dictionaries with items: + - "s" (resp. "s_1", "s_2"): 1D (resp. 2D) marginal samples. + - "probs": weights associated with the samples. + """ + dim = samples.shape[-1] + dicts = {} + for i in range(dim): + samples_i = samples[:, i].reshape(-1, 1) + dict_i = {"probs": probs} + dict_i["s"] = samples_i[:, 0] + dicts[f"{i}"] = dict_i + + for j in range(i + 1, dim): + samples_ij = samples[:, [i, j]] + dict_ij = {"probs": probs} + dict_ij["s_1"] = samples_ij[:, 0] + dict_ij["s_2"] = samples_ij[:, 1] + dicts[f"{i}_{j}"] = dict_ij + return dicts + + +def pp_vals(samples: np.ndarray, alphas: Union[List, np.ndarray]) -> np.ndarray: + """Computes the PP-values: empirical c.d.f. of a random variable. + Used for Probability - Probabiity (P-P) plots. + + Args: + samples: samples from the random variable, of shape (n_samples, dim). + alphas: alpha values to evaluate the c.d.f, of shape (n_alphas,). + + Returns: + pp_vals: empirical c.d.f. values for each alpha, of shape (n_alphas,). + """ + pp_vals = [(samples <= alpha).mean() for alpha in alphas] + return np.array(pp_vals) diff --git a/tests/lc2st_test.py b/tests/lc2st_test.py new file mode 100644 index 000000000..e676f1c25 --- /dev/null +++ b/tests/lc2st_test.py @@ -0,0 +1,266 @@ +# This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed +# under the Affero General Public License v3, see . + +from __future__ import annotations + +import pytest +import torch +from sklearn.neural_network import MLPClassifier + +from sbi.diagnostics.lc2st import LC2ST, LC2ST_NF +from sbi.inference import SNPE +from sbi.simulators.gaussian_mixture import ( + gaussian_mixture, + uniform_prior_gaussian_mixture, +) + + +@pytest.mark.parametrize("method", (LC2ST, LC2ST_NF)) +@pytest.mark.parametrize("classifier", ('mlp', 'random_forest', 'custom')) +@pytest.mark.parametrize("cv_folds", (1, 2)) +@pytest.mark.parametrize("num_ensemble", (1, 3)) +@pytest.mark.parametrize("z_score", (True, False)) +def test_running_lc2st(method, classifier, cv_folds, num_ensemble, z_score): + """Tests running inference, LC2ST-(NF) and then getting test quantities.""" + + num_train = 100 + num_cal = 100 + num_eval = 100 + num_trials_null = 2 + + # task + dim = 2 + prior = uniform_prior_gaussian_mixture(dim=dim) + simulator = gaussian_mixture + + # training data for the density estimator + theta_train = prior.sample((num_train,)) + x_train = simulator(theta_train) + + # Train the neural posterior estimators + inference = SNPE(prior, density_estimator='maf') + inference = inference.append_simulations(theta=theta_train, x=x_train) + npe = inference.train(training_batch_size=100, max_num_epochs=1) + + # calibration data for the test + thetas = prior.sample((num_cal,)) + xs = simulator(thetas) + posterior_samples = ( + npe.sample((1,), condition=xs).reshape(-1, thetas.shape[-1]).detach() + ) + assert posterior_samples.shape == thetas.shape + + if method == LC2ST: + theta_o = ( + npe.sample((num_eval,), condition=xs[0][None, :]) + .reshape(-1, thetas.shape[-1]) + .detach() + ) + assert theta_o.shape == thetas.shape + kwargs_test = {} + kwargs_eval = {"theta_o": theta_o} + else: + flow_inverse_transform = lambda theta, x: npe.net._transform(theta, context=x)[ + 0 + ] + flow_base_dist = torch.distributions.MultivariateNormal( + torch.zeros(2), torch.eye(2) + ) + kwargs_test = { + "flow_inverse_transform": flow_inverse_transform, + "flow_base_dist": flow_base_dist, + "num_eval": num_eval, + } + kwargs_eval = {} + if classifier == "custom": + kwargs_test["clf_class"] = MLPClassifier + kwargs_test["clf_kwargs"] = {"alpha": 0.0, "max_iter": 2500} + kwargs_test["classifier"] = classifier + + lc2st = method( + thetas, + xs, + posterior_samples, + num_folds=cv_folds, + num_trials_null=num_trials_null, + num_ensemble=num_ensemble, + z_score=z_score, + **kwargs_test, + ) + _ = lc2st.train_under_null_hypothesis() + _ = lc2st.train_on_observed_data() + + _ = lc2st.get_scores( + x_o=xs[0], trained_clfs=lc2st.trained_clfs, return_probs=True, **kwargs_eval + ) + _ = lc2st.get_scores( + x_o=xs[0], trained_clfs=lc2st.trained_clfs, return_probs=False, **kwargs_eval + ) + _ = lc2st.get_statistic_on_observed_data(x_o=xs[0], **kwargs_eval) + + _ = lc2st.get_statistics_under_null_hypothesis( + x_o=xs[0], return_probs=True, **kwargs_eval + ) + _ = lc2st.get_statistics_under_null_hypothesis( + x_o=xs[0], return_probs=False, **kwargs_eval + ) + _ = lc2st.p_value(x_o=xs[0], **kwargs_eval) + _ = lc2st.reject_test(x_o=xs[0], **kwargs_eval) + + +@pytest.mark.slow +@pytest.mark.parametrize("method", (LC2ST, LC2ST_NF)) +def test_lc2st_true_negativ_rate(method): + """Tests the true negative rate of the LC2ST-(NF) test: + for a "bad" estimator, the LC2ST-(NF) should reject the null hypothesis.""" + num_runs = 100 + confidence_level = 0.95 + + # bad estimator :small training and num_epochs + # (no convergence to the true posterior) + num_train = 1_000 + num_epochs = 5 + + num_cal = 1_000 + num_eval = 10_000 + + # task + dim = 2 + prior = uniform_prior_gaussian_mixture(dim=dim) + simulator = gaussian_mixture + + # training data for the density estimator + theta_train = prior.sample((num_train,)) + x_train = simulator(theta_train) + + # Train the neural posterior estimators + inference = SNPE(prior, density_estimator='maf') + inference = inference.append_simulations(theta=theta_train, x=x_train) + npe = inference.train(training_batch_size=100, max_num_epochs=num_epochs) + + thetas = prior.sample((num_cal,)) + xs = simulator(thetas) + posterior_samples = npe.sample((1,), xs).reshape(-1, thetas.shape[-1]).detach() + + if method == LC2ST: + kwargs_test = {} + else: + flow_inverse_transform = lambda theta, x: npe.net._transform(theta, context=x)[ + 0 + ] + flow_base_dist = torch.distributions.MultivariateNormal( + torch.zeros(2), torch.eye(2) + ) + kwargs_test = { + "flow_inverse_transform": flow_inverse_transform, + "flow_base_dist": flow_base_dist, + "num_eval": num_eval, + } + + lc2st = method(thetas, xs, posterior_samples, **kwargs_test) + + _ = lc2st.train_under_null_hypothesis() + _ = lc2st.train_on_observed_data() + + results = [] + for _ in range(num_runs): + x = simulator(prior.sample((1,))) + if method == LC2ST: + theta_o = ( + npe.sample((num_eval,), condition=x) + .reshape(-1, thetas.shape[-1]) + .detach() + ) + kwargs_eval = {"theta_o": theta_o} + else: + kwargs_eval = {} + results.append( + lc2st.reject_test(x_o=x, alpha=1 - confidence_level, **kwargs_eval) + ) + + proportion_rejected = torch.tensor(results).float().mean() + + assert ( + proportion_rejected > confidence_level + ), f"LC2ST p-values too big, test should be rejected \ + at least {confidence_level * 100}% of the time, but was rejected \ + only {proportion_rejected * 100}% of the time." + + +@pytest.mark.slow +@pytest.mark.parametrize("method", (LC2ST, LC2ST_NF)) +def test_lc2st_true_positiv_rate(method): + """Tests the true negative rate of the LC2ST-(NF) test: + for a "good" estimator, the LC2ST-(NF) should accept the null hypothesis.""" + num_runs = 100 + confidence_level = 0.95 + + # good estimator: big training and num_epochs = accept + # (convergence of the estimator) + num_train = 10_000 + num_epochs = 200 + + num_cal = 1_000 + num_eval = 10_000 + + # task + dim = 2 + prior = uniform_prior_gaussian_mixture(dim=dim) + simulator = gaussian_mixture + + # training data for the density estimator + theta_train = prior.sample((num_train,)) + x_train = simulator(theta_train) + + # Train the neural posterior estimators + inference = SNPE(prior, density_estimator='maf') + inference = inference.append_simulations(theta=theta_train, x=x_train) + npe = inference.train(training_batch_size=100, max_num_epochs=num_epochs) + + thetas = prior.sample((num_cal,)) + xs = simulator(thetas) + posterior_samples = npe.sample((1,), xs).reshape(-1, thetas.shape[-1]).detach() + + if method == LC2ST: + kwargs_test = {} + else: + flow_inverse_transform = lambda theta, x: npe.net._transform(theta, context=x)[ + 0 + ] + flow_base_dist = torch.distributions.MultivariateNormal( + torch.zeros(2), torch.eye(2) + ) + kwargs_test = { + "flow_inverse_transform": flow_inverse_transform, + "flow_base_dist": flow_base_dist, + "num_eval": num_eval, + } + + lc2st = method(thetas, xs, posterior_samples, **kwargs_test) + + _ = lc2st.train_under_null_hypothesis() + _ = lc2st.train_on_observed_data() + + results = [] + for _ in range(num_runs): + x = simulator(prior.sample((1,))) + if method == LC2ST: + theta_o = ( + npe.sample((num_eval,), condition=x) + .reshape(-1, thetas.shape[-1]) + .detach() + ) + kwargs_eval = {"theta_o": theta_o} + else: + kwargs_eval = {} + results.append( + lc2st.reject_test(x_o=x, alpha=1 - confidence_level, **kwargs_eval) + ) + + proportion_rejected = torch.tensor(results).float().mean() + + assert ( + proportion_rejected < 1 - confidence_level + ), f"LC2ST p-values too small, test should be accepted \ + at least {confidence_level * 100}% of the time, but was accepted \ + only {(1 - proportion_rejected) * 100}% of the time." diff --git a/tutorials/00_getting_started_flexible.ipynb b/tutorials/00_getting_started_flexible.ipynb index 0350eb1fb..a5f6a773a 100644 --- a/tutorials/00_getting_started_flexible.ipynb +++ b/tutorials/00_getting_started_flexible.ipynb @@ -34,8 +34,8 @@ "import torch\n", "\n", "from sbi.analysis import pairplot\n", - "from sbi.utils import BoxUniform\n", "from sbi.inference import SNPE, simulate_for_sbi\n", + "from sbi.utils import BoxUniform\n", "from sbi.utils.user_input_checks import (\n", " check_sbi_inputs,\n", " process_prior,\n", diff --git a/tutorials/17_importance_sampled_posteriors.ipynb b/tutorials/17_importance_sampled_posteriors.ipynb index f23f92d8d..7c17ebf5b 100644 --- a/tutorials/17_importance_sampled_posteriors.ipynb +++ b/tutorials/17_importance_sampled_posteriors.ipynb @@ -162,7 +162,7 @@ "class Simulator:\n", " def __init__(self):\n", " pass\n", - " \n", + "\n", " def log_likelihood(self, theta, x):\n", " return MultivariateNormal(theta, eye(2)).log_prob(x)\n", "\n", @@ -312,7 +312,7 @@ "source": [ "# get weighted samples\n", "theta_inferred_is = theta_inferred[torch.where(w > torch.rand(len(w)) * torch.max(w))]\n", - "# *Note*: we here perform rejection sampling, as the plotting function \n", + "# *Note*: we here perform rejection sampling, as the plotting function\n", "# used below does not support weighted samples. In general, with rejection\n", "# sampling the number of samples will be smaller than the effective sample\n", "# size unless we allow for duplicate samples.\n", @@ -323,8 +323,8 @@ "\n", "# plot\n", "fig, ax = marginal_plot(\n", - " [theta_inferred, theta_inferred_is, gt_samples], \n", - " limits=[[-5, 5], [-5, 5]], \n", + " [theta_inferred, theta_inferred_is, gt_samples],\n", + " limits=[[-5, 5], [-5, 5]],\n", " figsize=(5, 1.5),\n", " diag=\"kde\", # smooth histogram\n", ")\n", @@ -22243,8 +22243,8 @@ ], "source": [ "fig, ax = marginal_plot(\n", - " [theta_inferred_sir_2, theta_inferred_sir_32, gt_samples], \n", - " limits=[[-5, 5], [-5, 5]], \n", + " [theta_inferred_sir_2, theta_inferred_sir_32, gt_samples],\n", + " limits=[[-5, 5], [-5, 5]],\n", " figsize=(5, 1.5),\n", " diag=\"kde\", # smooth histogram\n", ")\n", @@ -22280,8 +22280,8 @@ ], "source": [ "fig, ax = marginal_plot(\n", - " [gt_samples, theta_inferred], \n", - " limits=[[-5, 5], [-5, 5]], \n", + " [gt_samples, theta_inferred],\n", + " limits=[[-5, 5], [-5, 5]],\n", " weights=[None, w],\n", " figsize=(5, 1.5),\n", " diag=\"kde\", # smooth histogram\n", @@ -22400,9 +22400,9 @@ "\n", "for i in range(len(observations)):\n", " fig, ax = marginal_plot(\n", - " [non_corrected_samples_for_all_observations[i], corrected_samples_for_all_observations[i], true_samples[i]], \n", - " limits=[[-5, 5], [-5, 5]], \n", - " points=theta_gt[i], \n", + " [non_corrected_samples_for_all_observations[i], corrected_samples_for_all_observations[i], true_samples[i]],\n", + " limits=[[-5, 5], [-5, 5]],\n", + " points=theta_gt[i],\n", " figsize=(5, 1.5),\n", " diag=\"kde\", # smooth histogram\n", " )\n", @@ -23967,9 +23967,9 @@ "\n", "for i in range(len(observations)):\n", " fig, ax = marginal_plot(\n", - " [non_corrected_samples_for_all_observations[i], corrected_samples_for_all_observations[i], true_samples[i]], \n", - " limits=[[-5, 5], [-5, 5]], \n", - " points=theta_gt[i], \n", + " [non_corrected_samples_for_all_observations[i], corrected_samples_for_all_observations[i], true_samples[i]],\n", + " limits=[[-5, 5], [-5, 5]],\n", + " points=theta_gt[i],\n", " figsize=(5, 1.5),\n", " diag=\"kde\", # smooth histogram\n", " )\n", diff --git a/tutorials/18_diagnostics_lc2st.ipynb b/tutorials/18_diagnostics_lc2st.ipynb new file mode 100644 index 000000000..bcf96caf2 --- /dev/null +++ b/tutorials/18_diagnostics_lc2st.ipynb @@ -0,0 +1,907 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Local Classifier Two-Sample Tests ($\\ell$-C2ST)\n", + "\n", + "\n", + " After a density estimator has been trained with simulated data to obtain a posterior, the estimator should be made subject to several diagnostic tests. This diagnostic should be performed before the posterior is used for inference given the actual observed data. \n", + " \n", + "*Posterior Predictive Checks* (see [previous tutorial](https://sbi-dev.github.io/sbi/tutorial/12_diagnostics_posterior_predictive_check/)) provide one way to \"critique\" a trained estimator via its predictive performance. \n", + " \n", + "Another approach is *Simulation-Based Calibration* (SBC, see [previous tutorial](https://sbi-dev.github.io/sbi/tutorial/13_diagnostics_simulation_based_calibration/)). SBC evaluates whether the estimated posterior is balanced, i.e., neither over-confident nor under-confident. These checks are performed ***in expectation (on average) over the observation space***, i.e. they are performed on a set of $(\\theta,x)$ pairs sampled from the joint distribution over simulator parameters $\\theta$ and corresponding observations $x$. As such, SBC is a ***global validation method*** that can be viewed as a necessary condition (but not sufficient) for a valid inference algorithm: If SBC checks fail, this tells you that your inference is invalid. If SBC checks pass, *this is no guarantee that the posterior estimation is working*.\n", + "\n", + "**Local Classifier Two-Sample Tests** ($\\ell$-C2ST) as developed by [Linhart et al, 2023](https://arxiv.org/abs/2306.03580) present a new ***local validation method*** that allows to evaluate the correctness of the posterior estimator ***at a fixed observation***, i.e. they work on a single $(\\theta,x)$ pair. They provide necessary *and sufficient* conditions for the validity of the SBI algorithm, as well as easy-to-interpret qualitative and quantitative diagnostics. \n", + " \n", + "If global checks (like SBC) fail, $\\ell$-C2ST allows to further investigate where (for which observation) and why (bias, overdispersion, etc.) the posterior estimator fails. If global validation checks pass, $\\ell$-C2ST allows to guarantee whether the inference is correct for a specific observation." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## In a nutshell\n", + "\n", + "Suppose you have an \"amortized\" posterior estimator $q_\\phi(\\theta\\mid x)$, meaning that we can quickly get samples for any new observation $x$. The goal is to test the *local consistency* of our estimator at a fixed observation $x_\\mathrm{o}$, i.e. whether the following null hypothesis holds about $q_\\phi(\\theta\\mid x)$ and the true posterior $p(\\theta\\mid x)$:\n", + "\n", + "$$\\mathcal{H}_0(x_\\mathrm{o}) := q_\\phi(\\theta\\mid x_\\mathrm{o}) = p(\\theta \\mid x_\\mathrm{o}), \\quad \\forall \\theta \\in \\mathbb{R}^m$$\n", + "\n", + "To run $\\ell$-C2ST, \n", + "\n", + "1. we sample **new** parameters from the prior of the problem at hand: $\\Theta_i \\sim p(\\theta)$\n", + "2. we simulate corresponding \"observations\": $X_i = \\mathrm{Simulator}(\\Theta_i) \\sim p(x\\mid \\Theta_i)$\n", + "3. we sample the estimated posterior at each observation: $Q_i \\sim q_\\phi(\\theta \\mid X_i)$\n", + "\n", + "This creates a calibration dataset of samples from the \"estimated\" and true joint distributions on which we train a binary classifier $d(\\theta, x)$ to distinguish between the estimated joint $q(\\theta \\mid x)p(x)$ (class $C=0$) and the true joint distribution $p(\\theta)p(x\\mid\\theta)$ (class $C=1$):\n", + "\n", + "$$\\mathcal{D}_\\mathrm{cal} = \\left \\{\\underbrace{(Q_i, X_i)}_{(C=0)} \\cup \\underbrace{(\\Theta_i, X_i)}_{(C=1)} \\right \\}_{i=1}^{N_\\mathrm{cal}}$$\n", + "\n", + "> Note: $D_\\mathrm{cal}$ contains data from the joint distribution (over prior and simulator) that have to be **different from the data used to train the posterior estimator**. $N_\\mathrm{cal}$ is typically smaller than $N_\\mathrm{train}$, the number of training samples for the posterior estimator, but has to be sufficiently large to allow the convergence of the classifier. For a fixed simulation budget, a rule of thumb is to use $90\\%$ for the posterior estimation and $10\\%$ for the calibration.\n", + "\n", + "Once the classifier is trained, we evaluate it for a given observation $x^\\star$ and multiple samples $Q^\\star_i \\sim q_\\phi(\\theta \\mid x^\\star)$. This gives us a set of predicted probabilities $\\left\\{d(Q^\\star_i, x^\\star)\\right\\}_{i=1}^{N_\\mathrm{eval}}$ that are then used to compute the different diagnostics. This proceedure can be repeated for several different observations, without having to retrain the classifiers, which allows to perform an efficient and thorough analysis of the failure modes of the posterior estimator.\n", + "\n", + "> Note: The number of evaluation samples can be arbitrarily large (typically we use $N_\\mathrm{eval} = 10\\,000$), because we suppose our posterior estimator to be amortized. \n", + "\n", + "### Key ideas behind $\\ell$-C2ST\n", + "\n", + "$\\ell$-C2ST allows to evaluate the correctness your posterior estimator *without requiring access to samples from the true posterior*. It is built on the following two key ideas:\n", + "\n", + "1. **Train the classifier on the joint:** this allows to implicitly learn the distance between the true and estimated posterior for any observation (we could call this step \"amortized\" C2ST training). \n", + "\n", + "2. **Local evaluation on data from one class only:** we use a metric that, as opposed to the accuracy (used in C2ST) does not require samples from the true posterior, only the estimator. It consists in the Mean Squared Error (MSE) between the predicted probabilities for samples from the estimator evaluated at the given observation and one half.\n", + "\n", + "> Note: A predicted probability of one half corresponds to the chance level or total uncertainty of the classifier, that is unable to distinguish between the two data classes.\n", + "\n", + "The MSE metric is used as a test statistic for a hypothesis test that gives us theoretical guarantees on the correctness of the posterior estimator (at the considered observation), as well as easy-to-interpret diagnostics that allow to investigate its failure modes.\n", + "\n", + ">**Quick reminder on hypothesis tests.** Additionaly to the observed test statistic $T^\\star$, evaluating the test requires to\n", + ">1. compute the test statistics $T_h$ under the null hyposthesis (H0) of equal (true and estimated) distributions over multiple trials $h$.\n", + ">2. compute the p-value $p_v = \\frac{1}{H}\\sum_{h=1}^H \\mathbb{I}(T_h > T^\\star)$: *\"How many times is the observed test statistic \"better\" (i.e. below) the test statistic computed under H0?\"*\n", + ">3. choose a significance level $\\alpha$ (typically $0.05$) that defines the rejection threshold and evaluate the test:\n", + ">- **quantitatively:** a p-value below this level indicates the rejection of the null hypothesis, meaning the detection of significant differences between the true and the estimated posterior. \n", + ">- **qualitatively:** P-P plots: visually check whether the distribution of $T^\\star$ falls into the $1-\\alpha$ confidence region, computed by taking the corresponding quantiles of $(T_1,\\dots, T_H)$.\n", + "\n", + "### What can $\\ell$-C2ST diagnose?\n", + "\n", + "- **Quantitatively:** the MSE metric (or test statistic) gives us a distance measure between the estimated and true posterior that can be quickly evaluated for any new observation $x^\\star$. Comparing it to the values of the null-distribution gives us the p-values that are used to check how significant their differences are. If the check passes (no significant differences), this tells us that we can be confident about the correctness of the estimator, but only upto to a certain confidence level (typically $95\\%$). \n", + "\n", + "- **Qualitatively:** we can choose to look at the predicted probabilities used to compute the MSE metric. P-P plots allow to evaluate a general trend of over or under confidence, by comparing theire distribution to the confidence region (obtained for probabilities predicted under H0). We can go further and map these predicted probabilities to a pairplot of the samples they were evaluated on, shows us the regions of over and underconfidence of the estimator. This allows us to investigate the nature of the inconsistencies, such as positive/negative bias or under/over dispersion.\n", + "\n", + "> Note: High (resp. low) predicted probability indicates that the classifier is confident about the fact that the sample belongs to the estimated posterior (resp. to the true posterior). This means that the estimator associates too much (resp. not enough) mass to this sample. In other words it is \"over-confident\" (resp. \"under-confident\"). \n", + "\n", + "\n", + "\n", + "To summarize $\\ell$-C2ST can:\n", + "\n", + "- tell you whether your posterior estimator is valid for a given observation (with a guaranteed confidence)\n", + "- show you where (for which observation) and why (bais, overdispersion, etc.) it fails " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Illustration on a benchmark SBI example\n", + "\n", + "We consider the Gaussian Mixture SBI task from [Lueckmann et al, 2021](https://arxiv.org/abs/2101.04653). It consists of inferring the common mean of a mixture of two 2D Gaussian distributions, one with much broader covariance than the other:\n", + "- Prior: $p(\\theta) = \\mathcal{U}(-10,10)$\n", + "- Simulator: $p(x|\\theta) = 0.5 \\mathcal{N}(\\theta, \\mathbf{I}_2)+ 0.5 \\mathcal{N}(\\theta, 0.1 \\times \\mathbf{I}_2)$\n", + "- Dimensionality: $\\theta \\in \\mathbb{R}^2$, $x \\in \\mathbb{R}^2$" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import torch" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### SBI Task" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from sbi.simulators.gaussian_mixture import (\n", + " gaussian_mixture,\n", + " uniform_prior_gaussian_mixture,\n", + ")\n", + "\n", + "# SBI task: prior and simualtor\n", + "dim = 2\n", + "prior = uniform_prior_gaussian_mixture(dim=dim)\n", + "simulator = gaussian_mixture\n", + "\n", + "# Number of samples for training, calibration and evaluation\n", + "NUM_TRAIN = 10_000\n", + "NUM_CAL = int(0.1 * NUM_TRAIN) # 10% of the training data\n", + "NUM_EVAL = 10_000" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Posterior Inference\n", + "\n", + "We use neural posterior estimation as our SBI-algorithm with a MAF as underlying density estimator. \n", + "\n", + "> Note: Here you could use any other SBI algorithm of your own choosing (e.g. NRE, NLE, etc.). IMPORTANT: make sure it is amortized (which corresponds to sequential methods with a signle round), so sampling the posterior can be performed quickly.\n", + "\n", + "We train the estimator on a small training set (`small_num_train=1000`) over a small number of epochs (`max_num_epochs=10`), which means that it doesn't converge. Therefore the diagnostics should detect major differences between the estimated and the true posterior, i.e. the null hypothesis is rejected.\n", + "\n", + "> Note: You can play with the number of training samples or epochs to see whether this influences the quality of the posterior estimator and how it is reflected in the diagnostics." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Training neural network. Epochs trained: 11" + ] + } + ], + "source": [ + "from sbi.inference import SNPE\n", + "\n", + "torch.manual_seed(42) # seed for reproducibility\n", + "\n", + "# Sample training data for the density estimator\n", + "small_num_train = 1000\n", + "theta_train = prior.sample((NUM_TRAIN,))[:small_num_train]\n", + "x_train = simulator(theta_train)[:small_num_train]\n", + "\n", + "# Train the neural posterior estimators\n", + "torch.manual_seed(42) # seed for reproducibility\n", + "inference = SNPE(prior, density_estimator='maf', device='cpu')\n", + "inference = inference.append_simulations(theta=theta_train, x=x_train)\n", + "npe = inference.train(training_batch_size=256, max_num_epochs=10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Evaluate the posterior estimator\n", + "\n", + "We choose to evaluate the posterior estimator at three different observations, simulated from parameters independently sampled from the prior: \n", + "$$\\theta^\\star_i \\sim p(\\theta) \\quad \\rightarrow \\quad x^\\star_i \\sim p(x\\mid \\theta_i), \\quad i=1,2,3~.$$" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "from sbi.simulators.gaussian_mixture import (\n", + " samples_true_posterior_gaussian_mixture_uniform_prior,\n", + ")\n", + "\n", + "# get reference observations\n", + "torch.manual_seed(0) # seed for reproducibility\n", + "thetas_star = prior.sample((3,))\n", + "xs_star = simulator(thetas_star)\n", + "\n", + "# Sample from the true and estimated posterior\n", + "post_samples_star = {}\n", + "ref_samples_star = {}\n", + "for i,x in enumerate(xs_star):\n", + " post_samples_star[i] = npe.sample(\n", + " (NUM_EVAL,), condition=x[None,:]\n", + " ).reshape(-1, thetas_star.shape[-1]).detach()\n", + " ref_samples_star[i] = samples_true_posterior_gaussian_mixture_uniform_prior(\n", + " x_o=x[None,:],\n", + " num_samples=1000,\n", + " )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Set-up $\\ell$-C2ST\n", + "\n", + "To setup the hypothesis test, we train the classifiers on the calibration dataset in two settings:\n", + "- `train_under_null_hypothesis`: uses the permutation method to train the classifiers under the nulll hypothesis over several trials\n", + "- `train_on_observed_data`: train the the classifier once on the observed data.\n", + "\n", + "For any new observation `x_o`, this allows to quickly compute (without having to retrain the classifiers) the test statistics `T_null` under the null hypothesis and `T_data` on the observed data. They will be used to compute the diagnostics (p-value or P-P plots).\n", + "\n", + ">Note: we choose the default configuration with a MLP classifier (`classifier='mlp'`). You can also choose to use the default Random Forest classifier (`classifier='random_forest'`) or use your own custom `sklearn` classifier by specifying `clf_class` and `clf_kwargs` during the initialization of the `LC2ST` class. You can also use an ensemble classifier by setting `num_ensemble` > 1 for more stable classifier predictions (see the `EnsembleClassifier` class in `sbi/diagnostics/lc2st.py`)." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Training the classifiers under H0, permutation = True: 100%|██████████| 100/100 [00:24<00:00, 4.06it/s]\n" + ] + } + ], + "source": [ + "from sbi.diagnostics.lc2st import LC2ST\n", + "\n", + "torch.manual_seed(42) # seed for reproducibility\n", + "\n", + "# sample calibration data\n", + "theta_cal = prior.sample((NUM_CAL,))\n", + "x_cal = simulator(theta_cal)\n", + "post_samples_cal = npe.sample((1,), x_cal).reshape(-1, theta_cal.shape[-1]).detach()\n", + "\n", + "# set up the LC2ST: train the classifiers\n", + "lc2st = LC2ST(\n", + " thetas=theta_cal,\n", + " xs=x_cal,\n", + " posterior_samples=post_samples_cal,\n", + " classifier=\"mlp\",\n", + " num_ensemble=1, # number of classifiers for the ensemble\n", + ")\n", + "_ = lc2st.train_under_null_hypothesis() # over 100 trials under (H0)\n", + "_ = lc2st.train_on_observed_data() # on observed data" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# Define significance level for diagnostics\n", + "conf_alpha = 0.05" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Quantitative diagnostics\n", + "We here compute the test statistics and p-values for three different observations `x_o` (as mentioned above, this is done in an amortized way without having to retrain the classifiers). \n", + "\n", + "> Note: The p-value associated to the test corresponds to the proportion of times the L-C2ST statistic under the null hypothesis $\\{T_h\\}_{h=1}^H$ is greater than the L-C2ST statistic $T_\\mathrm{o}$ at the observation `x_o`. It is computed by taking the empirical mean over statistics computed on several trials under the null hypothesis: $$\\text{p-value}(x_\\mathrm{o}) = \\frac{1}{H} \\sum_{h=1}^{H} I(T_h < T_o)~.$$" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABIQAAAFRCAYAAAAFGXYNAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB1d0lEQVR4nO3deVhUZf8/8PcwwACDgCCyKCKihuG+476QuKaJqcVTaip+EzX10ZJKzRU1U1JR06dQS3MptbTSiFwqcdcsNUVzSwU0BQIEEe7fH/44MbLIwAxzzsz7dV1zOXPOfc753DPMe8Z7zqISQggQEREREREREZHFsDJ1AUREREREREREVLk4IEREREREREREZGE4IEREREREREREZGE4IEREREREREREZGE4IEREREREREREZGE4IEREREREREREZGE4IEREREREREREZGE4IEREREREREREZGE4IEREREREREREZGE4IESVYt26dVCpVDh+/LipS6l0BX2/evWqqUshIhliPjIfiah4zEfmIxEZFweEiAxk/vz52Llzp6nL0PH9999j5MiRaNiwIdRqNWrXrm3qkojIAsktH7OyshATE4MePXrAy8sLVapUQbNmzbBq1Srk5eWZujwisiByy0fgcU1t27aFu7s77OzsUK9ePUycOBF37twxdWlEZGAcECIykJI+0F955RU8ePAAvr6+lV7Tpk2bsGnTJjg7O8Pb27vSt09EBMgvH//880+MHz8eQghMnjwZixcvhp+fH8aOHYvXXnutUmshIssmt3wEgBMnTqBp06Z45513EBMTg/79+yM2Nhbt2rVDZmZmpddDRMZjbeoCiCqTEALZ2dmwt7evtG2q1Wqo1epK215h8+fPx9q1a2FjY4O+ffvi999/N0kdRCR/lpSPnp6e+O233xAYGChNGzNmDF577TXExsZi+vTpqFu3bqXXRUTyZEn5CABffvllkWlBQUEYNGgQdu3ahaFDh5qgKiIyBu4hRBV26tQp9OrVC05OTnB0dET37t1x+PDhYttmZWVhzJgxcHNzg5OTE1599VXcv39fp83x48cREhKCatWqwd7eHn5+fkV+sc3Pz0d0dDQCAwNhZ2cHDw8PjBkzpsi6ateujb59+2Lv3r1o2bIl7O3t8dFHH6Fhw4bo2rVrkfry8/NRo0YNDBo0SJq2ePFitGvXDm5u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6NEj8f7774uAgABha2sr3N3dRa9evcSJEyekNn/88Yfo1KmTsLe3FwD0uoSooej7gS6EEN9//71o2LChsLW1Fc8884z47LPPilw2tMCXX34pOnToILRardBqtSIgIEBERESICxcuGKtLFoH5aDzMR+ZjAeajMjEfjYf5yHwswHwkKp1KiCf2cSO97d+/H127dsW2bdswaNAgU5dDMnDu3DkEBgZi9+7d6NOnj9G35+Pjg5CQEPzvf/8z+raI9MF8pCcxH4keYz7Sk5iPRFTZeA4hIiPYt28fgoKCKuXDPDc3F3///TeqVatm9G0REVUU85GIqHjMRyKqbBwQIjKCiIgIHDp0yOjb2bt3L8LDw/HgwQN0797d6NsjIqoo5iMRUfGYj0RU2XjZeSIFW7BgAS5duoR58+bhueeeM3U5RESywXwkIioe85GICvAcQkREREREREREFoaHjBERERERERERWRgOCBERERERERERWRieQwhAfn4+bt26hSpVqkClUpm6HCJSGCEE/vnnH3h7e8PKyrzG2ZmPRFQRzEciopKZc0aSMnBACMCtW7fg4+Nj6jKISOFu3LiBmjVrVtr28vLy8N577+Gzzz5DUlISvL29MXz4cLz77rvSf06EEJg5cybWrl2L1NRUtG/fHqtWrUK9evXKtA3mIxEZQmXnY2VgPhKRoZhjRpIycEAIQJUqVQA8fiM6OTmZuBoiGcrMBLy9H9+/dQvQak1bj8ykp6fDx8dHypLKsnDhQqxatQrr169HYGAgjh8/jhEjRsDZ2RkTJkwAACxatAjLli3D+vXr4efnh+nTpyMkJATnzp2DnZ3dU7fBfCSSOZnns6nysTIwH4kqSOb5VRnMOSNJGTggBEi/pDs5OT31A/3hw4d45513AADz5s2Dra2t0eszJKXXTyaiVv9738nJIj+wy6KyDxk4dOgQ+vfvjz59+gAAateujc8//xxHjx4F8HjvoOjoaLz77rvo378/AGDDhg3w8PDAzp07MXTo0KduQ598BJgxxsLnlUqkkHw2x0OqzP37oxJrJoVRSH5VBnPMSFIGXnYej0dmnZ2dkZaW9tQP9MzMTDg6OgIAMjIyoFVYcCm9fjKRzEzg///dICPDoj+wi6NPhhjS/PnzsWbNGnz//feoX78+fv31V/To0QNLlixBWFgY/vzzT/j7++PUqVNo2rSptFznzp3RtGlTfPjhh0XWmZOTg5ycHOlxwS9XZe0bM8Y4+LxSiWSez6bKx8pg7t8flVgzKYzM86symHNGkjJwDyEiIoWaNm0a0tPTERAQALVajby8PMybNw9hYWEAgKSkJACAh4eHznIeHh7SvCdFRUVh1qxZxi2ciIiIiIhMjqcyJyJSqK1bt2Ljxo3YtGkTTp48ifXr12Px4sVYv359udcZGRmJtLQ06Xbjxg0DVkxERERERHLBASEiIoWaOnUqpk2bhqFDh6JRo0Z45ZVXMGnSJERFRQEAPD09AQDJyck6yyUnJ0vznqTRaKTzYZT1vEFERJXt4MGD6NevH7y9vaFSqbBz506d+UIIzJgxA15eXrC3t0dwcDASExN12ty7dw9hYWFwcnKCi4sLRo4ciYyMjErsBRERkWlxQIiISKGysrJgZaUb42q1Gvn5+QAAPz8/eHp6Ij4+Xpqfnp6OI0eOICgoqFJrJSIypMzMTDRp0gQxMTHFzi+4wuLq1atx5MgRaLVahISEIDs7W2oTFhaGs2fPIi4uDrt378bBgwcRHh5eWV0gIiIyOZ5DiIhIofr164d58+ahVq1aCAwMxKlTp7BkyRK89tprAB5fsWLixImYO3cu6tWrJ1123tvbGwMGDDBt8UREFdCrVy/06tWr2HllucLi+fPnsWfPHhw7dgwtW7YEACxfvhy9e/fG4sWL4V1wKWwiIiIzxgEhIiKFWr58OaZPn46xY8ciJSUF3t7eGDNmDGbMmCG1efPNN5GZmYnw8HCkpqaiQ4cO2LNnD+zs7ExYORGR8Vy5cgVJSUkIDg6Wpjk7O6NNmzZISEjA0KFDkZCQABcXF2kwCACCg4NhZWWFI0eO4IUXXiiy3uKuwkhERKRkHBDSk729PX7//XfpvtIovX4i+leVKlUQHR2N6OjoEtuoVCrMnj0bs2fPrpSamDHGweeVqOzKcoXFpKQkVK9eXWe+tbU1XF1djXIVRiW+h5VYMxER6YcDQnqysrJCYGAgAGBp3EVp+qTn6puqJL0Urp+IyNCeljFKzE05YHYTmV5kZCQmT54sPU5PT4ePj0+Zln3yPVyQhXLOQeYOEZH540mliYiIiMhslOUKi56enkhJSdGZ/+jRI9y7d49XYSQiIovBPYT09PDhQ8yfPx8AoG09CNY2tiauSD+F63/77bdha6us+olI3pgxxsHnlajsCl9hsWnTpgD+vcLi66+/DgAICgpCamoqTpw4gRYtWgAAfvzxR+Tn56NNmzYGr+nJ97ASMHeIiMyfSgghTF2EqaWnp8PZ2RlpaWlP/bUnMzMTjo6OAICor05BY+8AQN67/BZWuP6MjAxotVoTV0SKkJkJ/P+/G2RkAPy70aFPhiiNvn17WsbwkLHyYXZTiWSez8bKx4yMDFy6dAkA0KxZMyxZsgRdu3aFq6sratWqhYULF2LBggVYv369dIXFM2fO4Ny5c9JJ9Xv16oXk5GSsXr0aubm5GDFiBFq2bIlNmzYZvG9PvofXHLoJQN45yNwho5N5flUGc/4OScrAPYSIiIiISFGOHz+Orl27So8Lzu0zbNgwrFu3rkxXWNy4cSPGjRuH7t27w8rKCqGhoVi2bFml94WIiMhUOCBERERERIrSpUsXlLaTe1musOjq6lrmvYGIiIjMEU8qTURERERERERkYTggRERERERERERkYTggRERERERERERkYTggRERERERERERkYXhSaT3Z2dnh6NGjAICDf2tMXI3+Ctdf+EobRESGwIwxDj6vRMqmxPewEmsmIiL9cEBIT2q1Gq1atQIA/Bx30cTV6K9w/UREhsaMMQ4+r0TKpsT3sBJrJiIi/fCQMSIiIiIiIiIiC8M9hPT08OFDfPjhh48fBPaCtY2taQvSU+H633jjDdjaKqt+IpI3Zoxx8HklUrYn38NKwNwhIjJ/KiGEMHURppaeng5nZ2ekpaXBycmp1LaZmZlwdHQEAER9dQoaewcAwKTn6hu9TkMoXH9GRga0Wq2JKyJFyMwE/v/fDTIyAP7d6NAnQ5RG3749LWOWFjrUVim5KQfMbiqRzPOZ+fjYk+/hNYduApB3DjJ3yOhknl+VwZwzkpSBh4wREREREREREVkYkw4IHTx4EP369YO3tzdUKhV27typM18IgRkzZsDLywv29vYIDg5GYmKiTpt79+4hLCwMTk5OcHFxwciRI5GRkVGJvSAiIiIiIiIiUhaTDghlZmaiSZMmiImJKXb+okWLsGzZMqxevRpHjhyBVqtFSEgIsrOzpTZhYWE4e/Ys4uLisHv3bhw8eBDh4eGV1QUiIiIiIiIiIsUx6Umle/XqhV69ehU7TwiB6OhovPvuu+jfvz8AYMOGDfDw8MDOnTsxdOhQnD9/Hnv27MGxY8fQsmVLAMDy5cvRu3dvLF68GN7e3pXWFyIiIiIiIiIipZDtOYSuXLmCpKQkBAcHS9OcnZ3Rpk0bJCQkAAASEhLg4uIiDQYBQHBwMKysrHDkyJES152Tk4P09HSdGxERERERERGRpZDtgFBSUhIAwMPDQ2e6h4eHNC8pKQnVq1fXmW9tbQ1XV1epTXGioqLg7Ows3Xx8fAxcPRERERERERGRfJn0kDFTiYyMxOTJk6XH6enpZR4UsrOzw759+wAAJ7I1RqnPmArXb2dnZ+JqiMjcMGOMg88rkbIp8T2sxJqJiEg/sh0Q8vT0BAAkJyfDy8tLmp6cnIymTZtKbVJSUnSWe/ToEe7duyctXxyNRgONpnyDOWq1Gl26dAEAnIq7WK51mFLh+omIDI0ZYxx8XomUTYnvYSXWTERE+pHtIWN+fn7w9PREfHy8NC09PR1HjhxBUFAQACAoKAipqak4ceKE1ObHH39Efn4+2rRpU+k1ExEREREREREpgUn3EMrIyMClS5ekx1euXMHp06fh6uqKWrVqYeLEiZg7dy7q1asHPz8/TJ8+Hd7e3hgwYAAAoEGDBujZsydGjx6N1atXIzc3F+PGjcPQoUONdoWx3NxcrFmzBgCQV6cL1NY2RtmOsRSuPzw8HDY2yqqfiOSNGWMcfF6JlO3J97ASMHeIiMyfSgghTLXx/fv3o2vXrkWmDxs2DOvWrYMQAjNnzsSaNWuQmpqKDh06YOXKlahfv77U9t69exg3bhx27doFKysrhIaGYtmyZXB0dCxzHenp6XB2dkZaWhqcnJxKbZuZmSmtO+qrU9DYOwAAJj1Xv7TFZKNw/RkZGdBqtSauiBQhMxMoeE9lZAD8u9GhT4Yojb59e1rGLC10qK1SclMOmN1UIpnnM/PxsSffw2sO3QQg7xxk7pDRyTy/KoM5ZyQpg0n3EOrSpQtKG49SqVSYPXs2Zs+eXWIbV1dXbNq0yRjlERERERERERGZJdmeQ4iIiIiIiIiIiIyDA0JERERERERERBaGA0JERERERERERBaGA0JERERERERERBaGA0JERERERERERBbGpFcZUyKNRoPdu3cDAM6rbU1cjf4K16/RaExcDRGZG2aMcfB5JVI2Jb6HlVgzERHphwNCerK2tkafPn0AABfjLpq4Gv0Vrp+IyNCYMcbB55VI2ZT4HlZizUREpB8eMkZEREREREREZGG4h5CecnNzsXHjRgBAnkcrqK1tTFyRfgrXHxYWBhsbZdVPRPLGjDEOPq9Eyvbke1gJmDtEROZPJYQQpi7C1NLT0+Hs7Iy0tDQ4OTmV2jYzMxOOjo4AgKivTkFj7wAAmPRcfaPXaQiF68/IyIBWqzVxRaQImZnA//+7QUYGwL8bHfpkiNLo27enZczSQofaKiU35YDZTSWSeT4zHx978j285tBNAPLOQeYOGZ3M86symHNGkjLwkDEiIiIiIiIiIgvDASEiIiIiIiIiIgvDASEiIiIiMit5eXmYPn06/Pz8YG9vD39/f8yZMweFz5QghMCMGTPg5eUFe3t7BAcHIzEx0YRVExERVS4OCBERERGRWVm4cCFWrVqFFStW4Pz581i4cCEWLVqE5cuXS20WLVqEZcuWYfXq1Thy5Ai0Wi1CQkKQnZ1twsqJiIgqD68yRkRERERm5dChQ+jfvz/69OkDAKhduzY+//xzHD16FMDjvYOio6Px7rvvon///gCADRs2wMPDAzt37sTQoUNNVjsREVFl4R5CRERERGRW2rVrh/j4eFy8+PjKhr/++it+/vln9OrVCwBw5coVJCUlITg4WFrG2dkZbdq0QUJCQrHrzMnJQXp6us6NiIhIybiHkJ40Gg22bt0KALhma2viavRXuH6NRmPiaojI3DBjjIPPK5F+pk2bhvT0dAQEBECtViMvLw/z5s1DWFgYACApKQkA4OHhobOch4eHNO9JUVFRmDVrVrnqUeJ7WIk1ExGRfjggpCdra2u8+OKLAIClcRdNXI3+CtdPRGRozBjj4PNKpJ+tW7di48aN2LRpEwIDA3H69GlMnDgR3t7eGDZsWLnWGRkZicmTJ0uP09PT4ePjU6ZllfgeVmLNRESkHx4yRkSkYDdv3sR//vMfuLm5wd7eHo0aNcLx48el+byKDhFZoqlTp2LatGkYOnQoGjVqhFdeeQWTJk1CVFQUAMDT0xMAkJycrLNccnKyNO9JGo0GTk5OOjciIiIl44CQnh49eoRt27Zh27ZtyMt7ZOpy9Fa4/kePlFc/Ef3r/v37aN++PWxsbPDdd9/h3Llz+OCDD1C1alWpTWVfRYcZYxx8Xon0k5WVBSsr3a+5arUa+fn5AAA/Pz94enoiPj5emp+eno4jR44gKCjI4PUo8T2sxJqJiEg/PGRMTzk5ORg8eDAAIOqrU1DbK+spLFx/RkYGrK2VVT8R/WvhwoXw8fFBbGysNM3Pz0+6b4qr6DBjjIPPK5F++vXrh3nz5qFWrVoIDAzEqVOnsGTJErz22msAAJVKhYkTJ2Lu3LmoV68e/Pz8MH36dHh7e2PAgAEGr+fJ97ASMHeIiMwf9xAiIlKor7/+Gi1btsSLL76I6tWro1mzZli7dq00vzxX0SEiMgfLly/HoEGDMHbsWDRo0ABTpkzBmDFjMGfOHKnNm2++ifHjxyM8PBytWrVCRkYG9uzZAzs7OxNWTkREVHk41E9EpFB//vknVq1ahcmTJ+Ptt9/GsWPHMGHCBNja2mLYsGHluopOTk4OcnJypMe8rDIRKVGVKlUQHR2N6OjoEtuoVCrMnj0bs2fPrrzCiIiIZIQDQkRECpWfn4+WLVti/vz5AIBmzZrh999/x+rVq8t9FZ2KXFaZiIiIiIiUg4eMEREplJeXF5599lmdaQ0aNMD169cBlO8qOpGRkUhLS5NuN27cMELlRERERERkahwQIiJSqPbt2+PChQs60y5evAhfX18A5buKDi+rTERERERkGXjIGBGRQk2aNAnt2rXD/PnzMXjwYBw9ehRr1qzBmjVrAFT+VXSIiIiIiEg5OCCkJ1tbW+kSz3dtbExcjf4K129ra2viaoioIlq1aoUdO3YgMjISs2fPhp+fH6KjoxEWFia1efPNN5GZmYnw8HCkpqaiQ4cORr2KDjPGOPi8EimbEt/DSqyZiIj0oxJCCFMXYWrp6elwdnZGWlqaXodHLI27KN2f9Fx9Y5RGJA+ZmYCj4+P7GRmAVmvaemSmvBmiBIbuG3OTyMBkns/Mx+IVZCFzkCyazPOrMphzRpIyyPocQnl5eZg+fTr8/Pxgb28Pf39/zJkzB4XHsIQQmDFjBry8vGBvb4/g4GAkJiaasGoiIiIiIiIiInmT9SFjCxcuxKpVq7B+/XoEBgbi+PHjGDFiBJydnTFhwgQAwKJFi7Bs2TKsX79eOj9GSEgIzp07Z5RDIh49eoS9e/cCAPLUflCrZf0UFlG4/pCQEFhbK6t+IpI3Zoxx8HklUrYn38NKwNwhIjJ/sk72Q4cOoX///ujTpw8AoHbt2vj8889x9OhRAI/3DoqOjsa7776L/v37AwA2bNgADw8P7Ny5E0OHDjV4TTk5Oejbty8AIOqrU1Dby/opLKJw/RkZGfxwJyKDYsYYB59XImV78j2sBMwdIiLzJ+tDxtq1a4f4+HhcvPj4OOtff/0VP//8M3r16gUAuHLlCpKSkhAcHCwt4+zsjDZt2iAhIaHE9ebk5CA9PV3nRkRERERERERkKWQ91D9t2jSkp6cjICAAarUaeXl5mDdvnnQFnaSkJACAh4eHznIeHh7SvOJERUVh1qxZxiuciIiIiIiIiEjGZL2H0NatW7Fx40Zs2rQJJ0+exPr167F48WKsX7++QuuNjIxEWlqadLtx44aBKiYiIiIiIiIikj9Z7yE0depUTJs2TToXUKNGjXDt2jVERUVh2LBh8PT0BAAkJyfDy8tLWi45ORlNmzYtcb0ajQYajcaotRMRERERERERyZWs9xDKysqClZVuiWq1Gvn5+QAAPz8/eHp6Ij4+Xpqfnp6OI0eOICgoqFJrJSIiXcvjE7E07qKpyyAiIiIiomLIeg+hfv36Yd68eahVqxYCAwNx6tQpLFmyBK+99hoAQKVSYeLEiZg7dy7q1asnXXbe29sbAwYMMG3xREREREREREQyJesBoeXLl2P69OkYO3YsUlJS4O3tjTFjxmDGjBlSmzfffBOZmZkIDw9HamoqOnTogD179sDOzs4oNdna2mLFihUAgAc2NkbZhjEVrt/W1tbE1RCRuSnImB//SIG1AjNSrpjdRMqmxPewEmsmIiL9qIQQwtRFmFp6ejqcnZ2RlpYGJyenMi9X+FCISc/VN0ZpRPKQmQk4Oj6+n5EBaLWmrUdmypshSmDofGRuEhmYzPOZ+ajrycNomYNk0WSeX5XBnDOSlEHW5xAiIiIiIiIiIiLDk/UhY3KUl5eHn376CQCQn+cBK7XaxBXpp3D9HTt2hFph9RORvBVkzKVfb6BOw5aKy0i5YnYTKZsSs5G5Q0Rk/jggpKfs7Gx07doVABD11Slo7B1MXJF+CtefkZEBrQXumklExqP0jJQrZjeRsikxG5k7RETmjwNCRERERERERIS8vDzk5uaaugyqABsbmzLv1ckBISIiIiIiIiILJoRAUlISUlNTTV0KGYCLiws8PT2hUqlKbccBISIiIiIiIiILVjAYVL16dTg4ODx1IIHkSQiBrKwspKSkAAC8vLxKbc8BISIiIiIiIiILlZeXJw0Gubm5mbocqiB7e3sAQEpKCqpXr17q4WO87DwRERERERGRhSo4Z5CDg/xPeE9lU/BaPu18UBwQIiIiIiIiIrJwPEzMfJT1teQhY3qysbHBokWLHj+wVt7TV7h+GxsbE1dDROamIGMOXrwDtQIzUq6Y3UTKpsRsZO4QEZk/ZXwiyYitrS2mTp0KAFgad9HE1eivcP1ERIZWkDHWCsxHOWN2EylbSdlY8F1y0nP1TVFWqZg7RGRJhg8fjtTUVOzcuRMA0KVLFzRt2hTR0dEmrcvYOCBEREREREREREVU5k4Q5RkcHz58ONavX4+oqChMmzZNmr5z50688MILEEIYskSzw3MI6SkvLw/Hjh3DsWPHkJ+XZ+py9Fa4/jwF1k9E8laQMdcvnFFkRsoVs5tI2ZSYjcwdIlIKOzs7LFy4EPfv3zd1KYrDASE9ZWdno3Xr1mjdujVyH+aYuhy9Fa4/Ozvb1OUQkZkpyJjo8S8qMiPlitlNpGxKzEbmDhEpRXBwMDw9PREVFVXs/Pfeew9NmzbVmRYdHY3atWsbvziZK9eA0J9//mnoOoiILAYzlIgsFfOPiIgMTa1WY/78+Vi+fDn++usvU5ejKOUaEKpbty66du2Kzz77jL8YEBHpiRlKRJaK+UdERMbwwgsvoGnTppg5c6apS1GUcg0InTx5Eo0bN8bkyZPh6emJMWPG4OjRo4aujYjILDFDichSVWb+3bx5E//5z3/g5uYGe3t7NGrUCMePH5fmCyEwY8YMeHl5wd7eHsHBwUhMTDRKLUREZHwLFy7E+vXrcf78eVOXohjlGhBq2rQpPvzwQ9y6dQuffPIJbt++jQ4dOqBhw4ZYsmQJ7ty5Y+g6iYjMBjOUiCxVZeXf/fv30b59e9jY2OC7777DuXPn8MEHH6Bq1apSm0WLFmHZsmVYvXo1jhw5Aq1Wi5CQEO65RESkUJ06dUJISAgiIyN1pltZWRW52lhubm5lliZbFTqptLW1NQYOHIht27Zh4cKFuHTpEqZMmQIfHx+8+uqruH37tqHqJCIyO8xQIrJUxs6/hQsXwsfHB7GxsWjdujX8/PzQo0cP+Pv7A3i8d1B0dDTeffdd9O/fH40bN8aGDRtw69Yt7Ny50wA9JCIiU1iwYAF27dqFhIQEaZq7uzuSkpJ0BoVOnz5tgurkp0IDQsePH8fYsWPh5eWFJUuWYMqUKbh8+TLi4uJw69Yt9O/f31B1EhGZHWYoEVkqY+ff119/jZYtW+LFF19E9erV0axZM6xdu1aaf+XKFSQlJSE4OFia5uzsjDZt2uj8J6KwnJwcpKen69yIiEheGjVqhLCwMCxbtkya1qVLF9y5cweLFi3C5cuXERMTg++++86EVcqHdXkWWrJkCWJjY3HhwgX07t0bGzZsQO/evWFl9Xh8yc/PD+vWrTPLy7jZ2NhIJ6pSW5fr6TOpwvXb2NiYuBoiy2TOGVqQMQmX/1ZkRsoVs5vMRWXl359//olVq1Zh8uTJePvtt3Hs2DFMmDABtra2GDZsGJKSkgAAHh4eOst5eHhI854UFRWFWbNmlaseJWYjc4eIAGDSc/VNXYLeZs+ejS1btkiPGzRogJUrV2L+/PmYM2cOQkNDMWXKFKxZs8aEVcqDSjx5MF0Z1KtXD6+99hqGDx8OLy+vYts8fPgQn3/+OYYNG1bhIo0tPT0dzs7OSEtLg5OTU5mXWxp3UbqvxDcKUZllZgKOjo/vZ2QAWq1p65EZfTNESRlq6HxkbhIZmMzz+ckMqaz8s7W1RcuWLXHo0CFp2oQJE3Ds2DEkJCTg0KFDaN++PW7duqVTx+DBg6FSqXT+I1EgJycHOTk5On3z8fHRKx8LZ2BxmItkUWSeX5WhvN+zDC07OxtXrlyBn58f7OzsTFYHGU5ZX9Ny/UQRFxeHWrVqSb/mFBBC4MaNG6hVq5b0CwwREelihhKRpaqs/PPy8sKzzz6rM61Bgwb48ssvAQCenp4AgOTkZJ0BoeTkZDRt2rTYdWo0Gmg0mgrVRUREJCflOoeQv78/7t69W2T6vXv34OfnV+Gi5Cw/Px9nz57F2bNnkZ+fb+py9Kb0+onMgTlnaEHGJF1NZMYYELObzEVl5V/79u1x4cIFnWkXL16Er68vgMeHpnl6eiI+Pl6an56ejiNHjiAoKMhgdRRQYjYyd4iIzF+59hAq6SizjIwMs9/F7MGDB2jYsCEAIOqrU9DYO5i4Iv0Urj8jIwNaC9w1k8jUzDlDlZ6RcsXsJnNRWfk3adIktGvXDvPnz8fgwYNx9OhRrFmzRjpfhEqlwsSJEzF37lzUq1cPfn5+mD59Ory9vTFgwACD1VFAidnI3CEiMn96DQhNnjwZwOMP0RkzZsDB4d8Ps7y8PBw5cqTE3WyJiCwdM5SILNXbb78NW1vbSsu/Vq1aYceOHYiMjMTs2bPh5+eH6OhohIWFSW3efPNNZGZmIjw8HKmpqejQoQP27Nmj+IF5IiKistJrQOjUqVMAHv+689tvv8HW1laaZ2triyZNmmDKlCmGrZCIyEwwQ4nIUp05cwZqtbpS869v377o27dvifNVKhVmz56N2bNnG3S7RERESqHXgNC+ffsAACNGjMCHH35o0jOhExEpjaVm6NOuqkNE5m/37t1wcnKyuPwjIiKSs3KdQyg2NtbQdRARWQxmKBFZKuYfERGRfJR5QGjgwIFYt24dnJycMHDgwFLbbt++vcKFFbh58ybeeustfPfdd8jKykLdunURGxuLli1bAnh86MXMmTOxdu1apKamon379li1ahXq1atnsBqIiCrKVBlKRCQH6enpzD8iIiKZKfOAkLOzM1QqlXS/Mty/fx/t27dH165d8d1338Hd3R2JiYmoWrWq1GbRokVYtmwZ1q9fL10hIiQkBOfOneNJAYlINkyRoUREcsH8IyIikp8yDwgV3sW3snb3XbhwIXx8fHS25+fnJ90XQiA6Ohrvvvsu+vfvDwDYsGEDPDw8sHPnTgwdOtTgNdnY2EgnPVRbl+uIO5MqXL+NjY2JqyGyHKbIUFMoyJjjV+8pMiPlitlNSlelShUA5p1/pVFiNjJ3iMic1K5dGxMnTsTEiRNNXYpBGKo/5fpEevDgAYQQ0iVDr127hh07duDZZ59Fjx49KlRQYV9//TVCQkLw4osv4sCBA6hRowbGjh2L0aNHAwCuXLmCpKQkBAcHS8s4OzujTZs2SEhIKHFAKCcnBzk5OdLj9PT0Mtdka2uL999/H4AyT5RauH4iMo3KylBTKMgYJeajnDG7yVyYc/6VRonZyNwhIqW4ceMGZs6ciT179uDu3bvw8vLCgAEDMGPGDLi5uZm6PFmzKs9C/fv3x4YNGwAAqampaN26NT744AP0798fq1atMlhxf/75p3Q+oL179+L111/HhAkTsH79egBAUlISAMDDw0NnOQ8PD2lecaKiouDs7CzdfHx8DFYzEdHTVFaGEhHJDfOPiIgM6c8//0TLli2RmJiIzz//HJcuXcLq1asRHx+PoKAg3Lt3zyR15eXlIT8/3yTb1ke5BoROnjyJjh07AgC++OILeHp64tq1a9iwYQOWLVtmsOLy8/PRvHlzzJ8/H82aNUN4eDhGjx6N1atXV2i9kZGRSEtLk243btzQq6arV6/i6tWriniBn6T0+onMQWVlqCkUZMy9pL+YMQbE7CZzYc75VxolZiNzh8jCCQFkZlb+TQi9yoyIiICtrS2+//57dO7cGbVq1UKvXr3www8/4ObNm3jnnXektv/88w9eeuklaLVa1KhRAzExMYW6K/Dee++hVq1a0Gg08Pb2xoQJE6T5OTk5mDJlCmrUqAGtVos2bdpg//790vx169bBxcUFX3/9NZ599lloNBr873//g52dHVJTU3VqfuONN9CtWzfp8c8//4yOHTvC3t4ePj4+mDBhAjIzM6X5KSkp6NevH+zt7eHn54eNGzfq9RyVplwDQllZWdKx4N9//z0GDhwIKysrtG3bFteuXTNYcV5eXnj22Wd1pjVo0ADXr18HAHh6egIAkpOTddokJydL84qj0Wjg5OSkcyurBw8ewM/PD35+fsjNyS7zcnJRuP4HDx6Yuhwii2SMDF2wYAFUKpXOccTZ2dmIiIiAm5sbHB0dERoaWiQvDa0gY+a+2l2RGSlXzG4yF5X1HVJulJiNzB0iC5eVBTg6Vv4tK6vMJd67dw979+7F2LFjYW9vrzPP09MTYWFh2LJlC8T/H2R6//330aRJE5w6dQrTpk3DG2+8gbi4OADAl19+iaVLl+Kjjz5CYmIidu7ciUaNGknrGzduHBISErB582acOXMGL774Inr27InExMRCT1kWFi5ciP/97384e/YswsLC4OLigi+//FJqk5eXhy1btiAsLAwAcPnyZfTs2ROhoaE4c+YMtmzZgp9//hnjxo2Tlhk+fDhu3LiBffv24YsvvsDKlSuRkpKix4tZsnINCNWtWxc7d+7EjRs3sHfvXumY75SUFL0GV56mffv2uHDhgs60ixcvwtfXF8DjE0x7enoiPj5emp+eno4jR44gKCjIYHUQERmSoTP02LFj+Oijj9C4cWOd6ZMmTcKuXbuwbds2HDhwALdu3XrqJZ+JiIypsr5DEhGR+UtMTIQQAg0aNCh2foMGDXD//n3cuXMHwOPxhWnTpqF+/foYP348Bg0ahKVLlwIArl+/Dk9PTwQHB6NWrVpo3bq1dO7i69evIzY2Ftu2bUPHjh3h7++PKVOmoEOHDjoXS8jNzcXKlSvRrl07PPPMM9BqtRg6dCg2bdoktYmPj0dqaipCQ0MBPD6dTVhYGCZOnIh69eqhXbt2WLZsGTZs2IDs7GxcvHgR3333HdauXYu2bduiRYsW+Pjjjw02UF+uAaEZM2ZgypQpqF27Ntq0aSMNvnz//fdo1qyZQQoDHv9n5vDhw5g/fz4uXbqETZs2Yc2aNYiIiAAA6dfwuXPn4uuvv8Zvv/2GV199Fd7e3hgwYIDB6iAiMiRDZmhGRgbCwsKwdu1aVK1aVZqelpaGjz/+GEuWLEG3bt3QokULxMbG4tChQzh8+LBB+0NEVFaV9R2SiIgqyMEByMio/Nv/v+iAPkQZDzN7cqeRoKAgnD9/HgDw4osv4sGDB6hTpw5Gjx6NHTt24NGjRwCA3377DXl5eahfvz4cHR2l24EDB3D58mVpfba2tkV+oA0LC8P+/ftx69YtAMDGjRvRp08fuLi4AAB+/fVXrFu3Tme9ISEhyM/Px5UrV3D+/HlYW1ujRYsW0joDAgKk5SuqXFcZGzRoEDp06IDbt2+jSZMm0vTu3bvjhRdeMEhhANCqVSvs2LEDkZGRmD17Nvz8/BAdHS3tXgUAb775JjIzMxEeHo7U1FR06NABe/bsgZ2dncHqICIyJENmaEREBPr06YPg4GDMnTtXmn7ixAnk5ubqXIUxICAAtWrVQkJCAtq2bVvs+ipyFUYioqeprO+QRERUQSoVoNWauopS1a1bFyqVCufPny/2M+T8+fOoWrUq3N3dn7ouHx8fXLhwAT/88APi4uIwduxYvP/++zhw4AAyMjKgVqtx4sQJqNVqneUcHR2l+/b29lCpVDrzW7VqBX9/f2zevBmvv/46duzYgXXr1knzMzIyMGbMGJ3zFRWoVasWLl407tUpyzUgBDw+Ju/J8/S0bt26wgU9qW/fvujbt2+J81UqFWbPno3Zs2cbfNtERMZiiAzdvHkzTp48iWPHjhWZl5SUBFtb2yK/HpTlKoyzZs3Sqw4iIn1U1ndIIiIyb25ubnjuueewcuVKTJo0Sec8QklJSdi4cSNeffVVaZDmyb3kDx8+rHO4mb29Pfr164d+/fohIiICAQEB+O2339CsWTPk5eUhJSVFujCCPsLCwrBx40bUrFkTVlZW6NOnjzSvefPmOHfuHOrWrVvssgEBAXj06BFOnDiBVq1aAQAuXLhQ5ETV5VWuAaHMzEwsWLAA8fHxSElJKXLlgT///NMgxRERmSNDZOiNGzekE+EZco/IyMhITJ48WXqcnp4OHx8fg62fiCwbv0MSEZEhrVixAu3atUNISAjmzp0LPz8/nD17FlOnTkWNGjUwb948qe0vv/yCRYsWYcCAAYiLi8O2bdvwzTffAHh8lbC8vDy0adMGDg4O+Oyzz2Bvbw9fX1+4ubkhLCwMr776Kj744AM0a9YMd+7cQXx8PBo3bqwzwFOcsLAwvPfee5g3bx4GDRoEjUYjzXvrrbfQtm1bjBs3DqNGjYJWq8W5c+cQFxeHFStW4JlnnkHPnj0xZswYrFq1CtbW1pg4cWKRk2iXV7kGhEaNGoUDBw7glVdegZeXV5HdooiIqGSGyNATJ04gJSUFzZs3l6bl5eXh4MGDWLFiBfbu3YuHDx8iNTVVZy+hslyFsfCHFBGRIfE7JBERGVK9evVw/PhxzJw5E4MHD8a9e/fg6emJAQMGYObMmXB1dZXa/ve//8Xx48cxa9YsODk5YcmSJQgJCQEAuLi4YMGCBZg8eTLy8vLQqFEj7Nq1C25ubgCA2NhYzJ07F//9739x8+ZNVKtWDW3bti31aKYCdevWRevWrXH06FFER0frzGvcuDEOHDiAd955Bx07doQQAv7+/hgyZIjUJjY2FqNGjULnzp3h4eGBuXPnYvr06QZ49so5IPTdd9/hm2++Qfv27Q1ShJJYW1tj7NixAAC1utxH3JlM4fqtrZVXP5E5MESGdu/eHb/99pvOtBEjRiAgIABvvfUWfHx8YGNjg/j4eOkqBhcuXMD169eNehXGgoz59UaqIjNSrpjdZC4s9TukErORuUNESuHr66tzXp7iXL16tdT5AwYMKPXCVDY2Npg1a1aJp1YYPnw4hg8fXuLyR44cKXFeq1at8P3335c439PTE7t379aZ9sorr5TYXh/lSveqVavqjLRZEo1Gg5iYGADA0rh/T/BU+H6BSc/Vr7S6yqpw/URkGobI0CpVqqBhw4Y607RaLdzc3KTpI0eOxOTJk+Hq6gonJyeMHz8eQUFBJZ5Q2hAKMqa4TKTyY3aTubDU75BKzEbmDhGR+SvXZefnzJmDGTNmICsry9D1EBGZvcrK0KVLl6Jv374IDQ1Fp06d4Onpie3btxt1m0REpeF3SCIiIvko1x5CH3zwAS5fvgwPDw/Url0bNjY2OvNPnjxpkOLkSAiBu3fvSveVdux74fqrVaumuPqJzIGxMnT//v06j+3s7BATE1Opv/AWZExG6j1onasyYwyE2U3mwlK/QyoxG5k7RETmr1wDQqUdW2fusrKyUL16dQBA1FenoLF3MHFF+ilcf0ZGBrRarYkrIrI85pyhSs9IuWJ2k7kw5/wrjRKzkblDRGT+yjUgNHPmTEPXQURkMZihRGSpmH9ERETyUa5zCAFAamoq/ve//yEyMhL37t0D8Hg335s3bxqsOCIic8UMfXwy/oIbEVkO5h8REZE8lGsPoTNnziA4OBjOzs64evUqRo8eDVdXV2zfvh3Xr1/Hhg0bDF0nEZHZYIYSkaVi/hEREclHufYQmjx5MoYPH47ExETY2dlJ03v37o2DBw8arDgiInPEDCUiS8X8IyIiko9yDQgdO3YMY8aMKTK9Ro0aSEpKqnBRRETmjBlKRJaK+UdERCQf5RoQ0mg0SE9PLzL94sWLcHd3r3BRRETmjBlKRJaK+UdERCQf5RoQev755zF79mzk5uYCAFQqFa5fv4633noLoaGhBi1QbqytrTFs2DAMGzYManW5TsFkUoXrt7ZWXv1E5sCcM7QgY1o994IiM1KumN1kLsw5/0qjxGxk7hCR3P3zzz+YOHEifH19YW9vj3bt2uHYsWM6bYYPHw6VSqVz69mzpzQ/JycHr7zyCpycnFC/fn388MMPOsu///77GD9+fJnqSU9PxzvvvIOAgADY2dnB09MTwcHB2L59O4QQAIAuXbpg4sSJFeu4AZUr3T/44AMMGjQI7u7uePDgATp37oykpCQEBQVh3rx5hq5RVjQaDdatWwcAirwyTuH6icg0zDlDCzJGifkoZ8xuMhfmnH+lUWI2MneISO5GjRqF33//HZ9++im8vb3x2WefITg4GOfOnUONGjWkdj179kRsbKz0WKPRSPfXrFmDEydOICEhAd999x1efvllJCcnQ6VS4cqVK1i7di2OHz/+1FpSU1PRoUMHpKWlYe7cuWjVqhWsra1x4MABvPnmm+jWrRtcXFwM2n9DKNeAkLOzM+Li4vDLL7/g119/RUZGBpo3b47g4GBD10dEZHaYoURkqZh/RETKkpmZWeI8tVqtc4GA0tpaWVnB3t6+1LZarbbMdT148ABffvklvvrqK3Tq1AkA8N5772HXrl1YtWoV5s6dK7XVaDTw9PQsdj3nz5/H888/j8DAQNSpUwdTp07F3bt34e7ujtdffx0LFy6Ek5PTU+t5++23cfXqVVy8eBHe3t7S9Pr16+Oll17SeZ7kRO8Bofz8fKxbtw7bt2/H1atXoVKp4OfnB09PTwghoFKpjFGnbAghkJWVJd1XWn8L1+/g4KC4+omUztwztCBjch5kwdbOXvH9kQtmN5kDc8+/0igxG5k7RAQAjo6OJc7r3bs3vvnmG+lx9erVpdx4UufOnbF//37pce3atXH37l2dNgWHVZXFo0ePkJeXV2Sgxd7eHj///LPOtP3796N69eqoWrUqunXrhrlz58LNzQ0A0KRJE3z66ad48OAB9u7dCy8vL1SrVg0bN26EnZ0dXnjhhafWkp+fj82bNyMsLExnMKhAac+hqel1DiEhBJ5//nmMGjUKN2/eRKNGjRAYGIhr165h+PDhZXqylC4rKwuOjo5wdHTEw+wHpi5Hb4XrL+nNSkTGYQkZWpAxkf2bKTIj5YrZTUpnCflXGiVmI3OHiOSsSpUqCAoKwpw5c3Dr1i3k5eXhs88+Q0JCAm7fvi2169mzJzZs2ID4+HgsXLgQBw4cQK9evZCXlwcAeO2119CkSRM8++yzmDdvHrZu3Yr79+9jxowZWL58Od59913UrVsXISEhuHnzZrG13L17F/fv30dAQECl9N2Q9NpDaN26dTh48CDi4+PRtWtXnXk//vgjBgwYgA0bNuDVV181aJFEROaAGUpElmrjxo3MPyIiBcrIyChxnlqt1nmckpJSYlsrK919Ua5evVqhugDg008/xWuvvYYaNWpArVajefPmeOmll3DixAmpzdChQ6X7jRo1QuPGjeHv74/9+/eje/fusLGxQUxMjM56R4wYgQkTJuDUqVPYuXMnfv31VyxatAgTJkzAl19+WaQOffZskhu99hD6/PPP8fbbbxf5IAeAbt26Ydq0adi4caPBiiMiMifMUCKyVF988QXzj4hIgbRabYm3Jw/XKq1t4fMHldRWX/7+/jhw4AAyMjJw48YNHD16FLm5uahTp06Jy9SpUwfVqlXDpUuXip2/b98+nD17FuPGjcP+/fvRu3dvaLVaDB48WOeQt8Lc3d3h4uKCP/74Q+8+mJpeA0JnzpzRuUTbk3r16oVff/21wkUREZkjZigRWaqzZ8+aNP8WLFgAlUqlc6nf7OxsREREwM3NDY6OjggNDUVycrLRaiAiIuPQarXw8vLC/fv3sXfvXvTv37/Etn/99Rf+/vtveHl5FZlX8Lnw0UcfQa1WIy8vD7m5uQCA3Nxc6TCzJ1lZWWHo0KHYuHEjbt26VWR+RkYGHj16VM7eGZdeA0L37t2Dh4dHifM9PDxw//79ChdFRGSOmKFEZKnu379vsvw7duwYPvroIzRu3Fhn+qRJk7Br1y5s27YNBw4cwK1btzBw4ECj1EBERIa3d+9e7NmzB1euXEFcXBy6du2KgIAAjBgxAsDjgZipU6fi8OHDuHr1KuLj49G/f3/pnEBPmjNnDnr37o1mzZoBANq3b4/t27fjzJkzWLFiBdq3b19iLfPmzYOPjw/atGmDDRs24Ny5c0hMTMQnn3yCZs2alXronSnpdQ6hvLw8WFuXvIharZbtyBcRkakxQ4nIUpkq/zIyMhAWFoa1a9fqXII4LS0NH3/8MTZt2oRu3boBAGJjY9GgQQMcPnwYbdu2NXgtRERkWGlpaYiMjMRff/0FV1dXhIaGYt68ebCxsQHw+LPlzJkzWL9+PVJTU+Ht7Y0ePXpgzpw50Gg0Ouv6/fffsXXrVpw+fVqaNmjQIOzfvx8dO3bEM888g02bNpVYi6urKw4fPowFCxZg7ty5uHbtGqpWrYpGjRrh/fffh7Ozs1Geg4rSa0BICIHhw4cXefIK5OTkGKQoIiJzxAwlIktlqvyLiIhAnz59EBwcrDMgdOLECeTm5iI4OFiaFhAQgFq1aiEhIaHYAaGcnBydOtPT041SMxERlc3gwYMxePDgEufb29tj7969ZVpXw4YNkZiYqDPNysoKK1euxMqVK8u0DmdnZ0RFRSEqKqrENiWdh8hU9BoQGjZs2FPbmPvVIdRqNQYNGgQAsHrirOpKULj+J88KT0TGZQkZWpAxicn/KDIj5YrZTUr38ssvS7/YlsTQ+bd582acPHkSx44dKzIvKSkJtra2cHFx0Znu4eGBpKSkYtcXFRWFWbNmlasWJWYjc4eIyPzpNSAUGxtrrDoUw87ODtu2bQMALI27aOJq9Fe4fiKqXJaQoQUZo8R8lDNmNyndypUr4eTkVGnbu3HjBt544w3ExcUVuQpOeUVGRmLy5MnS4/T0dPj4+JRp2bJmY8H8Sc/VL3+hBsLcISIyf3qdVJqIiIiISO5OnDiBlJQUNG/eHNbW1rC2tsaBAwewbNkyWFtbw8PDAw8fPkRqaqrOcsnJyfD09Cx2nRqNBk5OTjo3IiIiJdNrDyEiIiIiIrnr3r07fvvtN51pI0aMQEBAAN566y34+PjAxsYG8fHxCA0NBQBcuHAB169fR1BQkClKJiIiqnQcENJTZmYmHB0dAQBRX52Cxt7BxBXpp3D9GRkZ0Gq1Jq6IiMyJ0jNSrpjdRPqpUqUKGjZsqDNNq9XCzc1Nmj5y5EhMnjwZrq6ucHJywvjx4xEUFGSUK4wpMRuZO0SWRwhh6hLIQMr6WirqkLEFCxZApVJh4sSJ0rTs7GxERETAzc0Njo6OCA0NRXJysumKJCIiIiLZW7p0Kfr27YvQ0FB06tQJnp6e2L59u6nLIiKqdAUn/c/KyjJxJWQoBa/l0y7ooJg9hI4dO4aPPvoIjRs31pk+adIkfPPNN9i2bRucnZ0xbtw4DBw4EL/88ouJKiUiIiIiuXnyUr92dnaIiYlBTEyMaQoiIpIJtVoNFxcXpKSkAAAcHBygUqlMXBWVhxACWVlZSElJgYuLy1OvEqmIAaGMjAyEhYVh7dq1mDt3rjQ9LS0NH3/8MTZt2oRu3boBeHwVnwYNGuDw4cNG2eWXiIiIiIiIyJwUnFC/YFCIlM3FxaXEiyQUpogBoYiICPTp0wfBwcE6A0InTpxAbm4ugoODpWkBAQGoVasWEhISShwQysnJQU5OjvQ4PT3deMUTERERERERyZhKpYKXlxeqV6+O3NxcU5dDFWBjY/PUPYMKyH5AaPPmzTh58iSOHTtWZF5SUhJsbW3h4uKiM93DwwNJSUklrjMqKgqzZs0ydKlEREREREREiqVWq8s8mEDKJ+uTSt+4cQNvvPEGNm7cCDs7O4OtNzIyEmlpadLtxo0bBls3EREREREREZHcyXoPoRMnTiAlJQXNmzeXpuXl5eHgwYNYsWIF9u7di4cPHyI1NVVnL6Hk5ORSj5fTaDTQaDTlqkmtVqN37964cjcTVgocOS2ov+A+EZEhKT0j5YrZTaRsSsxG5g4RkfmT9YBQ9+7d8dtvv+lMGzFiBAICAvDWW2/Bx8cHNjY2iI+PR2hoKADgwoULuH79OoKCgoxSk52dHb755hssjbtolPUbW0H9RETGoPSMlCtmN5GyKTEbmTtEROZP1gNCVapUQcOGDXWmabVauLm5SdNHjhyJyZMnw9XVFU5OThg/fjyCgoJ4hTEiIiIiIiIiohLIekCoLJYuXQorKyuEhoYiJycHISEhWLlypanLIiIiIiIiIiKSLcUNCO3fv1/nsZ2dHWJiYhATE1Mp28/MzET16tXxKE9g1tZD0Ng7VMp2DaWgfgBISUmBVqs1cUVEZE6UnpFyxewmUjYlZiNzh4jI/CluQEgOsrKyTF1ChSi9fiKSN2aMcfB5JVI2Jb6HlVgzERGVnawvO09ERERERERERIbHASEiIiIiIiIiIgvDASEiIiIiIiIiIgvDASEjWxp3EUvjLhaZRkRERERERERkKhwQIiIiIiIiIiKyMLzKmJ6srKzQuXNn/HX/AVRWyhtPK6i/4D4RkSEpPSPlitlNpGxKzEbmDhGR+eOAkJ7s7e2xf/9+xR72VVA/EZExKD0j5YrZTaRsSsxG5g4RkfnjcD8RERERERERkYXhgBARERERERERkYXhgJCeMjMz4e7ujukvtkXOgyxTl6O3gvrd3d2RmZlp6nKIyMwoPSPlitlNpGxKzEbmDhGR+eM5hMrh7t27pi6hQpRePxHJGzPGOPi8EimbEt/DSqyZiIjKjnsIEREpVFRUFFq1aoUqVaqgevXqGDBgAC5cuKDTJjs7GxEREXBzc4OjoyNCQ0ORnJxsooqJiIiIiEguOCBERKRQBw4cQEREBA4fPoy4uDjk5uaiR48eOrv2T5o0Cbt27cK2bdtw4MAB3Lp1CwMHDjRh1UREREREJAc8ZIyISKH27Nmj83jdunWoXr06Tpw4gU6dOiEtLQ0ff/wxNm3ahG7dugEAYmNj0aBBAxw+fBht27Y1RdlERERERCQD3EOIiMhMpKWlAQBcXV0BACdOnEBubi6Cg4OlNgEBAahVqxYSEhKKXUdOTg7S09N1bkREREREZH44IEREZAby8/MxceJEtG/fHg0bNgQAJCUlwdbWFi4uLjptPTw8kJSUVOx6oqKi4OzsLN18fHyMXToREREREZkADxnTk5WVFVq2bInk9GyorJQ3nlZQf8F9IjIPERER+P333/Hzzz9XaD2RkZGYPHmy9Dg9PV2vQSGlZ6RcMbuJlE2J2cjcISIyfxwQ0pO9vT2OHTuGpXEX9V62PMsYWkH9RGQ+xo0bh927d+PgwYOoWbOmNN3T0xMPHz5Eamqqzl5CycnJ8PT0LHZdGo0GGo2m3LVUJCOpZMxuImVTYjYyd4iIzB+H+4mIFEoIgXHjxmHHjh348ccf4efnpzO/RYsWsLGxQXx8vDTtwoULuH79OoKCgiq7XCIiIiIikhHuIUREpFARERHYtGkTvvrqK1SpUkU6L5CzszPs7e3h7OyMkSNHYvLkyXB1dYWTkxPGjx+PoKAgRVxhrPAv6ZOeq2/CSoiIiIiIzA/3ENJTVlYWateujTmvdMPD7AemLkdvBfXXrl0bWVlZpi6HiCpg1apVSEtLQ5cuXeDl5SXdtmzZIrVZunQp+vbti9DQUHTq1Amenp7Yvn270WpSekbKFbObSNmUmI3MHSIi88c9hPQkhMC1a9ek+0qj9PqJ6F9leQ/b2dkhJiYGMTExlVARM8ZY+LwSKZsS38NKrJmIiPTDPYSIiIiIiIiIiCwMB4SIiIiIyKxERUWhVatWqFKlCqpXr44BAwbgwoULOm2ys7MREREBNzc3ODo6IjQ0FMnJySaqmIiIqPJxQIiIiIiIzMqBAwcQERGBw4cPIy4uDrm5uejRowcyMzOlNpMmTcKuXbuwbds2HDhwALdu3cLAgQNNWDUREVHl4jmEiIiIiMis7NmzR+fxunXrUL16dZw4cQKdOnVCWloaPv74Y2zatAndunUDAMTGxqJBgwY4fPiwIq7ESEREVFHcQ4iIiIiIzFpaWhoAwNXVFQBw4sQJ5ObmIjg4WGoTEBCAWrVqISEhwSQ1EhERVTbuIaQnlUqFZ599Fn9nPoRKpTJ1OXorqL/gPhGRISk9I+WK2U1Ufvn5+Zg4cSLat2+Phg0bAgCSkpJga2sLFxcXnbYeHh5ISkoqdj05OTnIycmRHqenp5e5BiVmI3OHiMj8yXpAKCoqCtu3b8cff/wBe3t7tGvXDgsXLsQzzzwjtcnOzsZ///tfbN68GTk5OQgJCcHKlSvh4eFhlJocHBxw9uxZLI27aJT1G1tB/URExqD0jJQrZjdR+UVEROD333/Hzz//XKH1REVFYdasWeVa1pDZ+OQ6Jj1Xv8LrLA5zh4jI/Mn6kDGeEJCIiIiIymvcuHHYvXs39u3bh5o1a0rTPT098fDhQ6Smpuq0T05OhqenZ7HrioyMRFpamnS7ceOGMUsnIiIyOlnvIaT0EwKW5VeggjbG+nWHiMiclSVnma9ElkcIgfHjx2PHjh3Yv38//Pz8dOa3aNECNjY2iI+PR2hoKADgwoULuH79OoKCgopdp0ajgUajMXrtRERElUXWewg9yVAnBMzJyUF6errOrayysrIQGBiIhaP74GH2g3L2xHQK6g8MDERWVpapyyEiM6P0jJQrZjeRfiIiIvDZZ59h06ZNqFKlCpKSkpCUlIQHDx7nkrOzM0aOHInJkydj3759OHHiBEaMGIGgoCCj/KCoxGxk7hARmT9Z7yFUmKFOCAhU7BhwIQTOnTsn3VcapddPRPLGjDEOPq9E+lm1ahUAoEuXLjrTY2NjMXz4cADA0qVLYWVlhdDQUJ3zUBqDEt/DSqyZiIj0o5gBIUOdEBB4fAz45MmTpcfp6enw8fGp8HqJiIiIyPTKMoBhZ2eHmJgYxMTEVEJFRERE8qOIAaGCEwIePHiwxBMCFt5LqLQTAgI8BpyIiIiIiIiILJuszyEkhMC4ceOwY8cO/Pjjj6WeELDA004ISERERERERERk6WS9h1BERAQ2bdqEr776SjohIPD4RID29vY6JwR0dXWFk5MTxo8fb7QTAhIRERERERERmQNZDwjJ7YSARERERERERETmQNYDQnI8IaBKpYKvry/Ssx9BpVJVyjYNqaD+gvtERIak9IyUK2Y3kbIpMRuZO0RE5k/WA0Jy5ODggKtXr2Jp3EVTl1IuBfUTERmD0jNSrpjdRMqmbzYW127Sc/UNXVapmDtEROaPA0JERGRyhf/zU9x/ep42n4iIiIiI9CPrq4wREREREREREZHhcUBITw8ePECrVq2wdFwoHuZkm7ocvRXU36pVKzx48MDU5RCRmVF6RsoVs5tI2ZSYjcwdIiLzx0PG9JSfn4/jx48DAER+vomr0V/h+vMVWD8RyZvSM1KumN1EyqbEbGTuEBGZPw4IVRJ9T7DK82UQERERERERkbHwkDEiIiIiIiIiIgvDASEiIiIiIiIiIgvDASEiIiIiIiIiIgvDASEiIiIiIiIiIgvDk0qXQ7Vq1fAgN8/UZZRbtWrVTF0CEZkxpWekXDG7iZRNidnI3CEiMm8cENKTVqvFnTt39L5qmFwU1E9EZAxKz0i5YnYTKZsxs7FgnQVXpS3pceFpZVHe3Hly+0REJF8cECIiIlkx9H+Yilufvv9RMcQ6yqu8/5kjIiIiIioNzyFERERERERERGRhOCCkpwcPHqBLly6ImfIKHuZkm7ocvRXU36VLFzx48MDU5RCRmVF6RsrVw5xsxEx5hdlNpFBKzEZ+ZyQiMn88ZExP+fn5OHDgAABA5OebuBr9Fa4/X4H1E5G8KT0j5Urk5+PymaO4DGY3kRIpMRv5nZGIyPxxDyEiIiIiIiIiIgvDASEiIiIiIiIiIgvDASEiIiIiIiIiIgvDcwjJREUvs1zcZYmXxl0s8yWKS2urzyWPC9oWbqdPHURERERERERkfNxDiIiIiIiIiIjIwnAPoXJwcHDAozxh6jLKzVZjb+oSiMiMKT0j5cpWYw9rtcrUZRBROSkxGx0cHExdAhERGREHhPSk1WqRmZlZ4UO8TEWr1WLBrtPSfSIiQ1JiRupzWGxlefL509g7YMGu0wap72n9Lem1K8u2y/tcyvE1IDIkQ2Tj05Yty7r13X5mZmaZ12nI964x1inHbRIRmRoPGSMiIiIiIiIisjAcECIiIiIiIiIisjAcENJTdnY2+vTpg7XvhiP3YY6py9FbdnY21r4bjrXvhiM7O9vU5RCRmVF6RspV7sMcrH03HH369GF2EymQErMx92EO+vTpw9whIjJjPIeQnvLy8vDtt98CAPLz8kxcjf7y8vJw/ugB6T4RkSEpPSPlKv//Z/d5MLuJlEiJ2ZhfqGbmDhGReeIeQkREREREREREFoYDQkREREREREREFsZsBoRiYmJQu3Zt2NnZoU2bNjh69KipSyIikgXmIxFRyZiRRERkqcxiQGjLli2YPHkyZs6ciZMnT6JJkyYICQlBSkqKqUsjIjIp5iMRUcmYkUREZMnMYkBoyZIlGD16NEaMGIFnn30Wq1evhoODAz755BNTl0ZEZFLMRyKikjEjiYjIkin+KmMPHz7EiRMnEBkZKU2zsrJCcHAwEhISil0mJycHOTn/XvIzLS0NAJCenv7U7WVmZkr3s7MyIPLzy1V3wbayMzPK3LY0hddTeN1PLlu4/vT0dOmqEcW1LW3dT6ujcLvS1k0KUejvBunpAK82oqPg71sIYeJKdFV2PgKGy8jSPJkvhlxHWXLwaW0N4cnt5WRn6Wy3Ilf8eVp/S3pOy/tZZIiaqBQyz2e55iOgf0bK4fujPvT5rlmcsubOk9/9ivsuqC9DrEMJ27R4Ms+vyiDnjCQLIRTu5s2bAoA4dOiQzvSpU6eK1q1bF7vMzJkzBQDeeOONN4PeLl++XBmxV2bMR954400uN7nloxD6ZyTzkTfeeDPWTY4ZSZZB8XsIlUdkZCQmT54sPc7Pz8e9e/fg5uYGlUpV4nLp6enw8fHBjRs34OTkVBmlGp259cnc+gOwT0qQlpaGWrVqwdXV1dSlVBjz8V/sk/yZW38A8+sT8/Exc3tdza0/gPn1ydz6A5hnn8wpI0mZFD8gVK1aNajVaiQnJ+tMT05OhqenZ7HLaDQaaDQanWkuLi5l3qaTk5PZhFABc+uTufUHYJ+UwMpKXqdlYz4aBvskf+bWH8D8+iS3fAT0z8iK5iNgfq+rufUHML8+mVt/APPskxwzkiyD4v/ybG1t0aJFC8THx0vT8vPzER8fj6CgIBNWRkRkWsxHIqKSMSOJiMjSKX4PIQCYPHkyhg0bhpYtW6J169aIjo5GZmYmRowYYerSiIhMivlIRFQyZiQREVkysxgQGjJkCO7cuYMZM2YgKSkJTZs2xZ49e+Dh4WHQ7Wg0GsycObPI7sJKZm59Mrf+AOyTEsi5P8zH8mOf5M/c+gOYX5/k3h9mZPmYW38A8+uTufUHYJ+IjEElBK9xR0RERERERERkSRR/DiEiIiIiIiIiItIPB4SIiIiIiIiIiCwMB4SIiIiIiIiIiCwMB4SIiIiIiIiIiCyMxQ8IxcTEoHbt2rCzs0ObNm1w9OjRUttv27YNAQEBsLOzQ6NGjfDtt9/qzBdCYMaMGfDy8oK9vT2Cg4ORmJhozC7oMHR/hg8fDpVKpXPr2bOnMbtQhD59Onv2LEJDQ1G7dm2oVCpER0dXeJ2GZuj+vPfee0Veo4CAACP2oCh9+rR27Vp07NgRVatWRdWqVREcHFykvanfR4Dh+ySH95K+zC0fAfPLSHPLR323r4SMZD4yHwHmI/PRMMwtHwHzy0jmIymOsGCbN28Wtra24pNPPhFnz54Vo0ePFi4uLiI5ObnY9r/88otQq9Vi0aJF4ty5c+Ldd98VNjY24rfffpPaLFiwQDg7O4udO3eKX3/9VTz//PPCz89PPHjwQJH9GTZsmOjZs6e4ffu2dLt3757R+1JA3z4dPXpUTJkyRXz++efC09NTLF26tMLrNCRj9GfmzJkiMDBQ5zW6c+eOkXvyL3379PLLL4uYmBhx6tQpcf78eTF8+HDh7Ows/vrrL6mNKd9HxuqTqd9L+jK3fDRWn0z5uppbPpZn+3LPSOYj81EI5iPz0TDMLR+FML+MZD6SEln0gFDr1q1FRESE9DgvL094e3uLqKioYtsPHjxY9OnTR2damzZtxJgxY4QQQuTn5wtPT0/x/vvvS/NTU1OFRqMRn3/+uRF6oMvQ/RHicQj179/fKPWWhb59KszX17fYD7+KrLOijNGfmTNniiZNmhiwSv1U9Pl89OiRqFKlili/fr0QwvTvIyEM3ychTP9e0pe55aMQ5peR5paPFd2+HDOS+VgU8/Ex5qNxMR91yTEfhTC/jGQ+khJZ7CFjDx8+xIkTJxAcHCxNs7KyQnBwMBISEopdJiEhQac9AISEhEjtr1y5gqSkJJ02zs7OaNOmTYnrNBRj9KfA/v37Ub16dTzzzDN4/fXX8ffffxu+A8UoT59MsU45bDsxMRHe3t6oU6cOwsLCcP369YqWWyaG6FNWVhZyc3Ph6uoKwLTvI8A4fSpgqveSvswtHwHzy0hzy0djb98UGcl8LB7z8THmo/EwH/XD75CGwXwkpbLYAaG7d+8iLy8PHh4eOtM9PDyQlJRU7DJJSUmlti/4V591Goox+gMAPXv2xIYNGxAfH4+FCxfiwIED6NWrF/Ly8gzfiSeUp0+mWKept92mTRusW7cOe/bswapVq3DlyhV07NgR//zzT0VLfipD9Omtt96Ct7e39AFqyvcRYJw+AaZ9L+nL3PIRML+MNLd8NOb2TZWRzMfiMR+Ltlfi68p8rPg65bB9foc0HOYjKZW1qQsgeRs6dKh0v1GjRmjcuDH8/f2xf/9+dO/e3YSVUYFevXpJ9xs3bow2bdrA19cXW7duxciRI01Y2dMtWLAAmzdvxv79+2FnZ2fqcgyipD7xvWSe+LrKn1IzkvnI95HS8XWVP6XmI2B+Gcl8JFOx2D2EqlWrBrVajeTkZJ3pycnJ8PT0LHYZT0/PUtsX/KvPOg3FGP0pTp06dVCtWjVcunSp4kU/RXn6ZIp1ym3bLi4uqF+/vuxfo8WLF2PBggX4/vvv0bhxY2m6Kd9HgHH6VJzKfC/py9zyETC/jDS3fKzM7VdWRjIfdTEfmY/Mx/Izt3wEzC8jmY+kVBY7IGRra4sWLVogPj5empafn4/4+HgEBQUVu0xQUJBOewCIi4uT2vv5+cHT01OnTXp6Oo4cOVLiOg3FGP0pzl9//YW///4bXl5ehim8FOXpkynWKbdtZ2Rk4PLly7J+jRYtWoQ5c+Zgz549aNmypc48U76PAOP0qTiV+V7Sl7nlI2B+GWlu+ViZ26+sjGQ+/ov5yHwEmI8VYW75CJhfRjIfSbFMfVZrU9q8ebPQaDRi3bp14ty5cyI8PFy4uLiIpKQkIYQQr7zyipg2bZrU/pdffhHW1tZi8eLF4vz582LmzJnFXjbUxcVFfPXVV+LMmTOif//+lXqpQ0P2559//hFTpkwRCQkJ4sqVK+KHH34QzZs3F/Xq1RPZ2dlG7095+pSTkyNOnTolTp06Jby8vMSUKVPEqVOnRGJiYpnXqbT+/Pe//xX79+8XV65cEb/88osIDg4W1apVEykpKUbvT3n6tGDBAmFrayu++OILnUto/vPPPzptTPU+Mkaf5PBe0pe55aMx+mTq19Xc8tFYfTJlRjIfmY9CMB+Zj/LtE79Dyrs/pn4fkWWw6AEhIYRYvny5qFWrlrC1tRWtW7cWhw8fluZ17txZDBs2TKf91q1bRf369YWtra0IDAwU33zzjc78/Px8MX36dOHh4SE0Go3o3r27uHDhQmV0RQhh2P5kZWWJHj16CHd3d2FjYyN8fX3F6NGjK+2Dr4A+fbpy5YoAUOTWuXPnMq/T2AzdnyFDhggvLy9ha2sratSoIYYMGSIuXbpUaf0RQr8++fr6FtunmTNnSm1M/T4SwrB9kst7SV/mlo9CmF9Gmls+Pm37SsxI5iPzUQjmI/PRMMwtH4Uwv4xkPpLSqIQQwjD7GhERERERERERkRJY7DmEiIiIiIiIiIgsFQeEiIiIiIiIiIgsDAeEiIiIiIiIiIgsDAeEiIiIiIiIiIgsDAeEiIiIiIiIiIgsDAeEiIiIiIiIiIgsDAeEiIiIiIiIiIgsDAeEiCrBunXr4OLiUqF11K5dG9HR0Qaph4hILpiPREQlY0YSkTFxQIhMRqVSlXp77733KrTunTt3Vri+8qyjuA/dIUOG4OLFi2VavqQP/mPHjiE8PFzveohIeZiPxWM+EhHAjCwJM5KI9GVt6gLIct2+fVu6v2XLFsyYMQMXLlyQpjk6OpqiLKOwt7eHvb19hdbh7u5uoGqISO6Yj/phPhJZFmakfpiRRFQiQSQDsbGxwtnZWWfa2rVrRUBAgNBoNOKZZ54RMTEx0rycnBwREREhPD09hUajEbVq1RLz588XQgjh6+srAEg3X1/fYrdZnnVcunRJPP/886J69epCq9WKli1biri4OGmdnTt31lmu4C32ZP9Onz4tunTpIhwdHUWVKlVE8+bNxbFjx8S+ffuKLD9z5kyppqVLl0rruH//vggPDxfVq1cXGo1GBAYGil27dpXj2SciOWM+Mh+JqGTMSGYkEZUf9xAiWdq4cSNmzJiBFStWoFmzZjh16hRGjx4NrVaLYcOGYdmyZfj666+xdetW1KpVCzdu3MCNGzcAPN4ttnr16oiNjUXPnj2hVquL3UZ51pGRkYHevXtj3rx50Gg02LBhA/r164cLFy6gVq1a2L59O5o0aYLw8HCMHj26xP6FhYWhWbNmWLVqFdRqNU6fPg0bGxu0a9cO0dHROr90FfcrV35+Pnr16oV//vkHn332Gfz9/XHu3LkS+0pE5oP5yHwkopIxI5mRRFR2HBAiWZo5cyY++OADDBw4EADg5+eHc+fO4aOPPsKwYcNw/fp11KtXDx06dIBKpYKvr6+0bMFusS4uLvD09CxxG+VZR5MmTdCkSRPp8Zw5c7Bjxw58/fXXGDduHFxdXaFWq1GlSpWnbnvq1KkICAgAANSrV0+a5+zsDJVKVeryP/zwA44ePYrz58+jfv36AIA6deqU2J6IzAfzkflIRCVjRjIjiajseFJpkp3MzExcvnwZI0eOhKOjo3SbO3cuLl++DAAYPnw4Tp8+jWeeeQYTJkzA999/r/d2yrOOjIwMTJkyBQ0aNICLiwscHR1x/vx5XL9+Xa9tT548GaNGjUJwcDAWLFgg9ausTp8+jZo1a0of5ERkGZiPT8d8JLJczMinY0YSUWEcECLZycjIAACsXbsWp0+flm6///47Dh8+DABo3rw5rly5gjlz5uDBgwcYPHgwBg0apNd2yrOOKVOmYMeOHZg/fz5++uknnD59Go0aNcLDhw/12vZ7772Hs2fPok+fPvjxxx/x7LPPYseOHWVevqInFyQiZWI+Ph3zkchyMSOfjhlJRIXxkDGSHQ8PD3h7e+PPP/9EWFhYie2cnJwwZMgQDBkyBIMGDULPnj1x7949uLq6wsbGBnl5eU/dlr7r+OWXXzB8+HC88MILAB5/8bh69apOG1tb2zJtu379+qhfvz4mTZqEl156CbGxsXjhhRfKtHzjxo3x119/4eLFi/yFh8iCMB+Zj0RUMmYkM5KI9MMBIZKlWbNmYcKECXB2dkbPnj2Rk5OD48eP4/79+5g8eTKWLFkCLy8vNGvWDFZWVti2bRs8PT3h4uICAKhduzbi4+PRvn17aDQaVK1atcg2yrOOevXqYfv27ejXrx9UKhWmT5+O/Px8nfXWrl0bBw8exNChQ6HRaFCtWjWd+Q8ePMDUqVMxaNAg+Pn54a+//sKxY8cQGhoqLZ+RkYH4+Hg0adIEDg4OcHBw0FlH586d0alTJ4SGhmLJkiWoW7cu/vjjD6hUKvTs2dNArwIRyRHzkflIRCVjRjIjiUgPpr7MGZEQxV8ydOPGjaJp06bC1tZWVK1aVXTq1Els375dCCHEmjVrRNOmTYVWqxVOTk6ie/fu4uTJk9KyX3/9tahbt66wtrYu8ZKh5VnHlStXRNeuXYW9vb3w8fERK1asEJ07dxZvvPGGtFxCQoJo3Lix0Gg0xV4yNCcnRwwdOlT4+PgIW1tb4e3tLcaNGycePHggreP//u//hJubW6mXDP3777/FiBEjhJubm7CzsxMNGzYUu3fv1uNZJyIlYD4yH4moZMxIZiQRlZ9KCCFMOSBFRERERERERESViyeVJiIiIiIiIiKyMBwQIiIiIiIiIiKyMBwQIiIiIiIiIiKyMBwQIiIiIiIiIiKyMBwQIiIiIiIiIiKyMBwQIiIiIiIiIiKyMBwQIiIiIiIiIiKyMBwQIiIiIiIiIiKyMBwQIiIiIiIiIiKyMBwQIiIiIiIiIiKyMBwQIiIiIiIiIiKyMBwQIiIiIiIiIiKyMP8PNAUh3B2ZVGcAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, axes = plt.subplots(1,len(thetas_star), figsize=(12,3))\n", + "for i in range(len(thetas_star)):\n", + " probs, scores = lc2st.get_scores(\n", + " theta_o=post_samples_star[i],\n", + " x_o=xs_star[i],\n", + " return_probs=True,\n", + " trained_clfs=lc2st.trained_clfs\n", + " )\n", + " T_data = lc2st.get_statistic_on_observed_data(\n", + " theta_o=post_samples_star[i],\n", + " x_o=xs_star[i]\n", + " )\n", + " T_null = lc2st.get_statistics_under_null_hypothesis(\n", + " theta_o=post_samples_star[i],\n", + " x_o=xs_star[i]\n", + " )\n", + " p_value = lc2st.p_value(post_samples_star[i], xs_star[i])\n", + " reject = lc2st.reject_test(post_samples_star[i], xs_star[i], alpha=conf_alpha)\n", + "\n", + " # plot 95% confidence interval\n", + " quantiles = np.quantile(T_null, [0, 1-conf_alpha])\n", + " axes[i].hist(T_null, bins=50, density=True, alpha=0.5, label=\"Null\")\n", + " axes[i].axvline(T_data, color=\"red\", label=\"Observed\")\n", + " axes[i].axvline(quantiles[0], color=\"black\", linestyle=\"--\", label=\"95% CI\")\n", + " axes[i].axvline(quantiles[1], color=\"black\", linestyle=\"--\")\n", + " axes[i].set_xlabel(\"Test statistic\")\n", + " axes[i].set_ylabel(\"Density\")\n", + " axes[i].set_xlim(-0.01,0.25)\n", + " axes[i].set_title(\n", + " f\"observation {i+1} \\n p-value = {p_value:.3f}, reject = {reject}\"\n", + " )\n", + "axes[-1].legend(bbox_to_anchor=(1.1, .5), loc='center left')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Results:** the plots show the test statistics under the null hypothesis `T_null` (in blue) defining the $95\\%$ (`1 - conf_alpha`) confidence region (black dotted lines). The test statistic correponding to the observed data `T_data` (red) is outside of the confidence region, indicating the **rejection of the null hypothesis** and therefore a **\"bad\" posterior estimator**." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Qualitative diagnostics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### P-P plots\n", + "\n", + "P-P plots allow to evaluate a general trend of over- or under- confidence, by comparing the predicted probabilities of belonging to the estimated posterior (class 0). If the red curve is not fully contained in the gray confidence region, this means that the test rejects the null hypothesis and that a significant discrepancy from the true posterior is detected. Here two scenarios are possible:\n", + "- **over-confidence**: the red curve is mostly on the **right side** of the gray CR (high probabilities are predominant)\n", + "- **under-confidence**: the red curve is mostly on the **left side** of the gray CR (low probabilities are predominant)\n", + "\n", + "> Note: The predominance of high (resp. low) probabilities indicates a classifier that is mostly confident about predicting the class corresponding to the estimated (resp. true) posterior. This in turn means that the estimator associates too much (resp. not enough) mass to the evaluation space, i.e. is overall over confident (resp. under confident)." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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wJ49e1BUVDSY0wcQ3t/FnDlzUF9fH7yoA4AjR46goKAgKh8agfDW4XK5ul38BC70hBADN9kIisXv72hhfGR8jDTGx/iOj0Bsfo9HSyLESMbH2ImPQGLESMbH2Pn+JqI4Fs2TE8K1atUqYTKZxBtvvCHq6urED37wA5GRkSGam5uFEELcdddd4uGHHw6O37Rpk9Dr9eKFF14QBw8eFMuXL4/6UelC9H8dzz77rDAajeKdd94RZ8+eDT4cDke0liCE6P86LhULpzr1dw1NTU0iLS1N3H///eLw4cPigw8+ELm5ueJf/uVforUEIUT/17F8+XKRlpYm/vCHP4iGhgbx6aefijFjxojFixdHawnC4XCI3bt3i927dwsA4sUXXxS7d+8WJ06cEEII8fDDD4u77rorOD5wVPrPfvYzcfDgQfHKK68M6aPSGR8ZHyON8TF24qMQjJFXKhFiJOOjKhbioxCJESMZHxkfiejKxGViTQghXn75ZVFcXCyMRqOoqqoSW7duDb42f/58sWTJki7j//SnP4mysjJhNBrFVVddJT788MNBnnHP+rOOkpISAaDbY/ny5YM/8Uv09++js1i5MOrvGjZv3iyqq6uFyWQSo0ePFk8//bSQZXmQZ91df9bh8/nEL37xCzFmzBhhNptFUVGRuO+++4TFYhn8iV/wxRdf9PjvPDDvJUuWiPnz53d7T2VlpTAajWL06NHiv//7vwd93rGE8ZHxMdIYH2MjPgrBGBkJiRAjGR9jJz4KkRgxkvGR8ZGIwqcRIo7qdYmIiIiIiIiIiGJE3PVYIyIiIiIiIiIiigVMrBEREREREREREYWBiTUiIiIiIiIiIqIwMLFGREREREREREQUBibWiIiIiIiIiIiIwsDEGhERERERERERURiYWCMiIiIiIiIiIgoDE2tERERERERERERhYGKNiIiIiIiIiIgoDEysERERERERERERhYGJNSIiIiIiIiIiojAwsUZERERERERERBSG/w9D6QMtwchQpQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# P-P plots\n", + "from sbi.analysis.plot import pp_plot_lc2st\n", + "\n", + "fig, axes = plt.subplots(1,len(thetas_star), figsize=(12,3))\n", + "for i in range(len(thetas_star)):\n", + " probs_data, _ = lc2st.get_scores(\n", + " theta_o=post_samples_star[i],\n", + " x_o=xs_star[i],\n", + " return_probs=True,\n", + " trained_clfs=lc2st.trained_clfs\n", + " )\n", + " probs_null, _ = lc2st.get_statistics_under_null_hypothesis(\n", + " theta_o=post_samples_star[i],\n", + " x_o=xs_star[i],\n", + " return_probs=True\n", + " )\n", + "\n", + " pp_plot_lc2st(\n", + " probs=[probs_data],\n", + " probs_null=probs_null,\n", + " conf_alpha=conf_alpha,\n", + " labels=[\"Classifier probabilities \\n on observed data\"],\n", + " colors=[\"red\"],\n", + " ax=axes[i],\n", + " )\n", + " axes[i].set_title(f\"PP-plot for observation {i+1}\")\n", + "axes[-1].legend(bbox_to_anchor=(1.1, .5), loc='center left')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Results:** the plots below show a general trend of overconfident behavior (red curves on the right side of the black dots)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Pairplot with heatmap of classifier probabilities\n", + "\n", + "We can go further and map these predicted probabilities to a pairplot of the samples they were evaluated on, which shows us the regions of over and underconfidence of the estimator. This allows us to investigate the nature of the inconsistencies, such as positive/negative bias or under/over dispersion.\n", + "\n", + "> Note: High (resp. low) predicted probability indicates that the classifier is confident about the fact that the sample belongs to the estimated posterior (resp. to the true posterior). This means that the estimator associates too much (resp. not enough) mass to this sample. In other words it is \"over-confident\" (resp. \"under-confident\"). " + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA48AAAJjCAYAAACsmCRCAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeVxU5eIG8OfMMDOACmIIuKC4ZZoKhYm4VCqFLZravbmUW6ZpUiqWSS5klqR2jTKVNJe86dUyW37ZdcNoUdTUvC6hZqKQOrggoGwDM+f3BzFyZAZmhhlmzvB87+d87sw7Z3kPwtO873nPewRRFEUQERERERERVUHh7AoQERERERGR62PjkYiIiIiIiKrFxiMRERERERFVi41HIiIiIiIiqhYbj0RERERERFQtNh6JiIiIiIioWmw8EhERERERUbXYeCQiIiIiIqJqsfFIRERERERE1WLjkYiICEBISAjGjBnj0GOMGTMGISEhDj0GEbkf5hO5CjYeiYiIXMzBgwfx0ksvITw8HCqVCoIgOLtKREQwGAxYt24dBg4ciODgYNSrVw+dOnXC22+/jaKiImdXj2qBh7MrQERE5ApOnz4NhcI1+lS///57fPLJJ+jSpQtat26NM2fOOLtKRORErpJPBQUFGDt2LLp3746JEyciICAAqampiI+PR3JyMvbs2cPOLjfHxiMREbmd0tJSGAwGqNVqi7fRaDQOrJF1Jk2ahNdffx1eXl6IiYlh45HIjcg5n9RqNfbu3YsePXoYy8aPH4+QkBBjAzIqKsqJNSRHc34XBhERuaU333wTgiDgzJkzeO655+Dr64vGjRtjzpw5EEURmZmZeOqpp+Dj44OgoCD861//kmyv0+kwd+5chIeHw9fXF/Xq1UPv3r3xww8/SNY7f/48BEHAe++9h8TERLRp0wYajQa///47ACAlJQVdu3aFp6cn2rRpg48//thYt4ruvKdo3bp1EAQBe/fuRWxsLBo3box69eph8ODBuHr1qmTbb775Bk888QSaNm0KjUaDNm3aYP78+dDr9Tb97AIDA+Hl5WXTtkRUPeaTbfmkVqslDcdygwcPBgCkpaVZvU+SF155JCIihxo6dCg6dOiAd999F9u2bcPbb7+NRo0a4eOPP0bfvn2xcOFCbNiwAa+++ioeeOABPPjggwCAvLw8fPLJJxg+fDjGjx+PmzdvYvXq1YiOjsbBgwcRFhYmOc7atWtRVFSECRMmQKPRoFGjRvjtt9/Qv39/NGnSBPPmzYNer8dbb72Fxo0bW1z/l19+GX5+foiPj8f58+eRmJiImJgYbN682bjOunXrUL9+fcTGxqJ+/frYs2cP5s6di7y8PCxevNguP0cisj/mk33ySavVAgD8/f3tsj9yYSIREZEDxMfHiwDECRMmGMtKS0vF5s2bi4IgiO+++66x/MaNG6KXl5c4evRoybrFxcWSfd64cUMMDAwUn3/+eWNZenq6CED08fERr1y5Ill/wIABore3t3jx4kVj2R9//CF6eHiId/4nsGXLlpLjr127VgQgRkVFiQaDwVg+bdo0UalUijk5OcaygoKCSuf/4osvit7e3mJRUZGxbPTo0WLLli0rrVuVyZMnV6orEdUM88k++VQuKipK9PHxEW/cuGHT9iQfHLZKREQO9cILLxhfK5VKdO3aFaIoYty4ccbyhg0bon379jh37pxk3fJ7ggwGA7Kzs1FaWoquXbviyJEjlY7z9NNPS3rs9Xo9du/ejUGDBqFp06bG8rZt2+Kxxx6zuP4TJkyQDCHr3bs39Ho9Lly4YCyrOMT05s2buHbtGnr37o2CggKcOnXK4mMRUe1iPtU8nxYsWIDdu3fj3XffRcOGDWu8P3JtHLZKREQO1aJFC8l7X19feHp6Vhre5Ovri+vXr0vKPv30U/zrX//CqVOnUFJSYixv1apVpePcWXblyhUUFhaibdu2ldY1VWZp/f38/AAAN27cMJadPHkSs2fPxp49e5CXlydZPzc31+JjEVHtYj7VLJ82b96M2bNnY9y4cZg0aVKN9kXywMYjERE5lFKptKgMAERRNL7+7LPPMGbMGAwaNAivvfYaAgICoFQqkZCQgD///LPSto6aYKa6uubk5OChhx6Cj48P3nrrLbRp0waenp44cuQIXn/9dRgMBofUi4hqjvlkez7t2rULo0aNwhNPPIGkpCSb90PywsYjERG5pC1btqB169bYunWrZFhWfHy8RdsHBATA09MTZ8+erfSZqTJbpaSk4Pr169i6datxMg0ASE9Pt9sxiMi11PV8OnDgAAYPHoyuXbvi888/h4cHmxR1Be95JCIil1Teo16xt//AgQNITU21ePuoqCh8/fXXuHTpkrH87Nmz+O9//+vQeup0OixfvtxuxyAi11KX8yktLQ1PPPEEQkJC8N133/GxQnUMuwmIiMglPfnkk9i6dSsGDx6MJ554Aunp6UhKSkLHjh1x69Yti/bx5ptvYufOnejZsycmTZoEvV6Pjz76CJ06dcLRo0ftUs8ePXrAz88Po0ePxiuvvAJBEPDvf/9b8mXNWhcuXMC///1vAMChQ4cAAG+//TYAoGXLlhg5cmTNK05ENqur+XTz5k1ER0fjxo0beO2117Bt2zbJ523atEFkZKQ9qk4uio1HIiJySWPGjIFWq8XHH3+MHTt2oGPHjvjss8/wxRdfICUlxaJ9hIeH47///S9effVVzJkzB8HBwXjrrbeQlpZmt1lQ77rrLnz33XeYPn06Zs+eDT8/Pzz33HPo168foqOjbdpneno65syZIykrf//QQw+x8UjkZHU1n65fv47MzEwAwMyZMyt9Pnr0aDYe3Zwg1qRrlIiISIYGDRqEkydP4o8//nB2VYiIJJhP5Mp4zyMREbm1wsJCyfs//vgD33//PR5++GHnVIiI6G/MJ5IbXnkkIiK31qRJE4wZMwatW7fGhQsXsGLFChQXF+O3335Du3btnF09IqrDmE8kN7znkYiI3Fr//v3xn//8B1qtFhqNBpGRkViwYAG/mBGR0zGfSG44bJWI7Oann37CgAED0LRpUwiCgK+//rrabVJSUnD//fdDo9Ggbdu2WLduncPrSXXL2rVrcf78eRQVFSE3Nxfbt2/H/fff7+xqUS1jPpErYj7VLe6QQ2w8EpHd5OfnIzQ0FMuWLbNo/fT0dDzxxBPo06cPjh49iqlTp+KFF17Ajh07HFxTIqprmE9E5GzukEO855GIHEIQBHz11VcYNGiQ2XVef/11bNu2DSdOnDCWDRs2DDk5Odi+fXst1JKI6iLmExE5m1xziPc8VmAwGHDp0iU0aNAAgiA4uzpE1RJFETdv3kTTpk2hUNg2kKCoqAg6na7KY9z596DRaKDRaGw6XkWpqamIioqSlEVHR2Pq1Kk13ndN/PTTT1i8eDEOHz6My5cvVxvuQNmwktjYWJw8eRLBwcGYPXs2xowZI1ln2bJlWLx4MbRaLUJDQ7F06VJ069bN4noxo0hOmE91C/OJ5MaSjHJmBgGumUNsPFZw6dIlBAcHO7saRFbLzMxE8+bNrd6uqKgIQV6+yIX5YKxfvz5u3bolKYuPj8ebb75p9fHupNVqERgYKCkLDAxEXl4eCgsL4eXlVeNj2KJ8WMnzzz+PIUOGVLt++bCSiRMnYsOGDUhOTsYLL7yAJk2aGB/CvHnzZsTGxiIpKQkRERFITExEdHQ0Tp8+jYCAAIvqxYwiOWI+1Q3MJ5Ircxnl7AwCXDOH2HisoEGDBgDKfol8fHycXBui6uXl5SE4ONj4u2stnU6HXOiQqOoJLxNxUIhSTL21t9LfhL161FzVY489hscee8zi9ZOSktCqVSv861//AgB06NABv/zyC95//31j43HJkiUYP348xo4da9xm27ZtWLNmDWbOnGnRcZhRJCfMJ8dw1ZERzCeSm+oyihlkGhuPFZRfdvbx8WHwkazUdIhQA5UK3kLlOPAQBaDEcX8TQUFByMrKkpRlZWXBx8dHVr361Q0r0el0OHz4MOLi4oyfKxQKREVFITU11ex+i4uLUVxcbHx/8+ZNAMwokhfmk3256sgIfociuaouo5yVQYBr5hAbj0QEDw8BHibC00N07H0rkZGR+P777yVlu3btQmRkpEOPa2/VDSu5ceMG9Hq9yXVOnTpldr8JCQmYN2+eQ+pMJBfMJylXHRlB5K6clUGAa+YQH9VBRFAoBbOLNW7duoWjR4/i6NGjAMp6vI8ePYqMjAwAQFxcHEaNGmVcf+LEiTh37hxmzJiBU6dOYfny5fj8888xbdo0u52bnMXFxSE3N9e4ZGZmOrtKRLWO+VQz5kZGlI96KB8ZUXEdS0dG5OXlSRYid2SvDALcI4d45ZGIynrVFCZ61QzWBeOhQ4fQp08f4/vY2FgAwOjRo7Fu3TpcvnzZGJAA0KpVK2zbtg3Tpk3DBx98gObNm+OTTz4x9obLRXXDSpRKJZRKpcl1goKCzO7XnjO2EckV86lmODKCqGbslUGAe+QQG49EBJWHAJWJYFRZGYwPP/wwqnp07Lp160xu89tvv1l1HFdT3bAStVqN8PBwJCcnGye2MBgMSE5ORkxMTG1Xl0hWmE+uKS4uzvjFF7g9+Yi96fV6lJSU2H2/5P6USiU8PDxqfN+1vTIIcI8cYuNRZtYq+hlfjzUkO7Em5E4EJWDqEUeu/Kgug8GAH3/8ET///DMuXLiAgoICNG7cGPfddx+ioqJq9CXm1q1bOHv2rPF9+bCSRo0aoUWLFoiLi8PFixexfv16AGXDSj766CPMmDEDzz//PPbs2YPPP/8c27ZtM+4jNjYWo0ePRteuXdGtWzckJiYiPz/feI8ROU9KSgqAsv9Ak+uRYz4Bjs0oa8h5ZMStW7fw119/Vfllu64qKioCAHh6ejq5Jq7N29sbTZo0gVqttnkfzCApNh6JCB4eMDMkwwmVqUZhYSH+9a9/YcWKFcjOzkZYWBiaNm0KLy8vnD17Fl9//TXGjx+PRx99FHPnzkX37t2tPoYjhpUMHToUV69exdy5c6HVahEWFobt27dXGipGRFJyyiegdjLKGnIdGaHX6/HXX3/B29sbjRs3rvHVI3eTn58PAKhXr56Ta+KaRFGETqfD1atXkZ6ejnbt2kFhqgVoAWaQFBuPRFQ2JMPEjd8qvev9x/ruu+9GZGQkVq1ahUceeQQqlarSOhcuXMDGjRsxbNgwzJo1C+PHj7fqGI4aVhITE8NhqkRWklM+AY7PqLoyMqKkpASiKKJx48ayenRTbSkfyssrj+Z5eXlBpVLhwoUL0Ol0Nv+smEFSbDzKDIeqkiOYmzVMAdcLxp07d6JDhw5VrtOyZUvExcXh1VdflVwhJCL5kVM+AY7PqLo2MoJXHKkmbL3aKNkHM0iCjUciKptJzEQwmnqukbNVF4gVqVQqtGnTxoG1ISJHk1M+AY7PKI6MIKpdzCApNh4dhBPbkJwISkChNFFe+1WxysGDB5GamgqtVgugbGKIyMhIdOvWzck1IyJ7kWs+AcwoInfADJJi45GI4KEy06tm4gZxV3DlyhU8/fTT2Lt3L1q0aGEcWpWVlYVp06ahZ8+e+PLLLxEQEODkmhJRTcktnwBmlCOVz45cWzgLc+0YM2YMcnJy8PXXXzu7KpUwg6RqPhCYiGRPpRTKbgi/czERlq7gpZdegl6vR1paGs6fP48DBw7gwIEDOH/+PNLS0mAwGDB58mRnV5OI7EBu+QQwo+oqQRCqXN58801nV9Fu1q1bh4YNG9ptfx988IHJIdeugBkkxSuPDsKhqiQnZm8GF10zGHfs2IGffvoJ7du3r/RZ+/bt8eGHH7K3mMhNyC2fAGZUXXX58mXj682bN2Pu3Lk4ffq0sax+/frG16IoQq/Xw8Ojbn8V1+v1EAQBvr6+NdqPI3+ezCApXnkkIig9RLOLK9JoNMjLyzP7+c2bNx3+8Goiqh1yyyeAGVVXBQUFGRdfX18IgmB8f+rUKTRo0AD//e9/ER4eDo1Gg19++QVjxowxPl+z3NSpUyVf7A0GAxISEtCqVSt4eXkhNDS02uGdISEhmD9/PoYPH4569eqhWbNmWLZsmWSdjIwMPPXUU6hfvz58fHzwzDPPICsry/j5//73P/Tp0wcNGjSAj48PwsPDcejQIaSkpGDs2LHIzc2tdFW1uLgYr776Kpo1a4Z69eohIiJCMtS4/Irlt99+i44dO0Kj0SAjI6PSz6G4uBivvPIKAgIC4OnpiV69euHXX381fp6SkgJBECr9PB2BGSTFxiMRQaEUzS6uaOjQoRg9ejS++uorSTjm5eXhq6++wtixYzF8+HAn1pCI7EVu+QQwo8i8mTNn4t1330VaWhq6dOli0TYJCQlYv349kpKScPLkSUybNg3jx4+vtrG0ePFihIaG4rfffsPMmTMxZcoU7Nq1C0BZg/Spp55CdnY2fvzxR+zatQvnzp3D0KFDjds/++yzaN68OX799VccPnwYM2fOhEqlQo8ePZCYmAgfHx9cvnwZly9fxquvvgqgbNbe1NRUbNq0CceOHcM///lP9O/fH3/88YdxvwUFBVi4cCE++eQTnDx50uR9dzNmzMCXX36JTz/9FEeOHEHbtm0RHR2N7OzsGv88rcUMkqrb18qJXFRtz9YrKMoWU+WuaMmSJTAYDBg2bBhKS0uhVqsBADqdDh4eHhg3bhzee+89J9eSiOxBbvkEMKPIvLfeeguPPPKIxesXFxdjwYIF2L17NyIjIwEArVu3xg8//IA1a9bgscceM7ttz549MXPmTABlD47fu3cv3n//fTzyyCNITk7G8ePHkZ6ejuDgYADA+vXrce+99+LXX3/FAw88gIyMDLz22mu45557AADt2rUz7rvildVyGRkZWLt2LTIyMtC0aVMAwKuvvort27dj7dq1WLBgAQCgpKQEy5cvR2hoqMl65+fnY8WKFVi3bp3x/FatWoVdu3Zh9erVeO2112z+edqCGSTFxiMRQaE0PfxCUcWzxJxJo9FgxYoVWLhwIQ4fPiyZgjo8PBw+Pj5OriER2Yvc8glgRpF5Xbt2tWr9s2fPoqCgoFIDSafTVXulrbyxWfF9YmIiACAtLQ3BwcHGhiMAdOzYEQ0bNkRaWhoeeOABxMbG4oUXXsC///1vREVF4Z///GeVzwQ8fvw49Ho97r77bkl5cXEx7rrrLuN7tVpdZd3//PNPlJSUoGfPnsYylUqFbt26IS0tTbKutT9PWzCDpNh4JCIoPEQoZBaMAODj44M+ffo4uxpE5EByzSeAGUWV1atXT/JeoVBAvON3uaSkxPj61q1bAIBt27ahWbNmknJH3zf75ptvYsSIEdi2bRv++9//Ij4+Hps2bcLgwYNNrn/r1i0olUocPnwYSqX0wYgVJwvy8vKCINhnspk7f56OwAySYuOxFlQcglgRZ2Qlc2r7d0OhKFtMlRMRORPzidxZ48aNceLECUnZ0aNHoVKpAEAyqcxDDz1kXOfmzZvV7nv//v2V3nfo0AEA0KFDB2RmZiIzM9N49fH3339HTk4OOnbsaNzm7rvvxt13341p06Zh+PDhWLt2LQYPHgy1Wg29Xi/Z/3333Qe9Xo8rV66gd+/eVvwUpNq0aQO1Wo29e/eiZcuWAMoa1L/++iumTp1q835txQySYuORiMze+K0wuH6vGhG5N+YTubO+ffti8eLFWL9+PSIjI/HZZ5/hxIkTuO+++wAADRo0wKuvvopp06bBYDCgV69eyM3NRXJyMho0aICJEyea3ffevXuxaNEiDBo0CLt27cIXX3yBbdu2AQCioqLQuXNnPPvss0hMTERpaSleeuklPPTQQ+jatSsKCwvx2muv4R//+AdatWqFv/76C7/++iuefvppAGWzud66dQvJyckIDQ2Ft7c37r77bjz77LMYNWoU/vWvf+G+++7D1atXkZycjC5duuCJJ56w6GdSr149TJo0Ca+99hoaNWqEFi1aYNGiRSgoKMC4ceNq+BO3HjNIio1HIoKgECEoKoegqTIiotrEfKKK3O35mNHR0ZgzZw5mzJiBoqIiPP/88xg1ahSOHz9uXGf+/Plo3LgxEhIScO7cOTRs2BBdunQxznBqzvTp03Ho0CHMmzcPPj4+WLJkCaKjowEAgiDgm2++wcsvv4wHH3wQCoUC/fv3x9KlSwEASqUS169fx6hRo5CVlQV/f38MGTIE8+bNAwD06NEDEydOxNChQ3H9+nXEx8fjzTffxNq1a/H2229j+vTpuHjxIvz9/dG9e3c8+eSTVv1c3n33XRgMBowcORI3b95E165dsWPHDvj5+Vm1H3tgBkkJ4p0DreuwvLw8+Pr6Ijc31+yNpLU9CybJhzN+Nyz5nbVk+zP/iEIDVeW+pJslpbh7y26b90/2VdN/bzKt/Blk7val1NmYT3WLvfOpqKgI6enpaNWqFTw9Pe1QQ/dSPmy1QYMGJj8PCQnB1KlTnTLM05VU9XtU3e8sM8i0Ojpal4gqUijMPMPIxXvVjhw5Iumd/eabbzBo0CC88cYb0Ol0TqwZEdmLXPMJYEYRuQNmkBQbj0RkfIaRqcWVvfjiizhz5gwA4Ny5cxg2bBi8vb3xxRdfYMaMGU6uHRHZg1zzCWBGEbkDZpCUDE7btYw1JBsXoork/Luh8Ch7htGdi6mpqauzbNkyhISEwNPTExERETh48GCV6ycmJqJ9+/bw8vJCcHAwpk2bhqKiIouOdebMGYSFhQEAvvjiCzz44IPYuHEj1q1bhy+//NLquhOR67FnPgHMKKobzp8/X+eHrNoLM0iKjUciMj7DyNRijc2bNyM2Nhbx8fE4cuQIQkNDER0djStXrphcf+PGjZg5cybi4+ORlpaG1atXY/PmzXjjjTcsOp4oijAYDACA3bt34/HHHwcABAcH49q1a1bVnYhck73yCWBGEZH1mEFSbDwSEQRBNLtYY8mSJRg/fjzGjh2Ljh07IikpCd7e3lizZo3J9fft24eePXtixIgRCAkJwaOPPorhw4dX2wtXrmvXrnj77bfx73//Gz/++KNxGvD09HQEBgZaVXcick32yieAGSVHnNeRasIevz/MICk2HonI5HCM8gUom3Gs4lJcXFxpHzqdDocPH0ZUVJSxTKFQICoqCqmpqSaP26NHDxw+fNgYgufOncP3339v7BmrTmJiIo4cOYKYmBjMmjULbdu2BQBs2bIFPXr0sOpnQESuyR75BDCj5EapVAIAJxaiGikoKAAAqFQqm/fBDJKSzXMeExISsHXrVpw6dQpeXl7o0aMHFi5ciPbt2xvXKSoqwvTp07Fp0yYUFxcjOjoay5cvZ+8eUTXM3fhdXhYcHCwpL3+eU0XXrl2DXq+v9PcWGBiIU6dOmTzuiBEjcO3aNfTq1QuiKKK0tBQTJ060eDhGly5dJLOIlVu8eLHxiwcRyZs98glgRsmNh4cHvL29cfXqVahUKigUvN5RUXmj2tJ73+oaURRRUFCAK1euoGHDhjX6e2MGSdmt8Zifn4/Dhw/jwQcftNcuJX788UdMnjwZDzzwAEpLS/HGG2/g0Ucfxe+//4569eoBAKZNm4Zt27bhiy++gK+vL2JiYjBkyBDs3bvXIXUi6/AZma5L8FBAUFVORsFQVpaZmSl5hpFGo7HLcVNSUrBgwQIsX74cEREROHv2LKZMmYL58+djzpw51W6fmZkJQRDQvHlzAMDBgwexceNGdOzYERMmTLBLHYnIuZyVTwAzypkEQUCTJk2Qnp6OCxcuOLs6Lqe80chnYFatYcOGCAoKqtE+mEFSdms8nj17Fn369IFer7fXLiW2b98ueb9u3ToEBAQYG6y5ublYvXo1Nm7ciL59+wIA1q5diw4dOmD//v3o3r17pX0WFxdLLi3n5eU5pO5ELk+lLFvuZCgbkuHj41PtA3D9/f2hVCqRlZUlKc/KyjIb3HPmzMHIkSPxwgsvAAA6d+6M/Px8TJgwAbNmzaq2p3nEiBGYMGECRo4cCa1Wi0ceeQT33nsvNmzYAK1Wi7lz51a5PRHJgB3yCWBGyZFarUa7du04dNWE8mGMHTp0cHJNXJdKpbLPFX5mkIRshq3eKTc3FwDQqFEjAMDhw4dRUlIiGUd8zz33oEWLFkhNTTXZeExISMC8efNqp8JELkxQAoJSMFluKbVajfDwcCQnJ2PQoEEAAIPBgOTkZMTExJjcpqCgoFLwlQe9JTe5nzhxAt26dQMAfP755+jUqRP27t2LnTt3YuLEifxiRuQG7JFPADNKrhQKBa+umVA+gyZ/No7HDJKyuPFY3kgzx1FXHE0xGAyYOnUqevbsiU6dOgEAtFot1Go1GjZsKFk3MDAQWq3W5H7i4uIQGxtrfJ+Xl1dp3HJdZM/hpa4yVNVV6uGyVIqy5U4G6+4xiY2NxejRo9G1a1d069YNiYmJyM/Px9ixYwEAo0aNQrNmzZCQkAAAGDBgAJYsWYL77rvPOBxjzpw5GDBggEW9hSUlJcbhIbt378bAgQMBlHUcXb582aq6E5GLslM+AcwoIrIBM0jC4sZjcXExJk2ahM6dO5v8/MKFC7V2FW/y5Mk4ceIEfvnllxrtR6PR2HVcMpFcCR5KCCaGZAh6g1X7GTp0KK5evYq5c+dCq9UiLCwM27dvN94cnpGRIelBmz17NgRBwOzZs3Hx4kU0btwYAwYMwDvvvGPR8e69914kJSXhiSeewK5duzB//nwAwKVLl3DXXXdZVXcick32yieAGUVE1mMGSVnceAwLC0NwcDBGjx5t8vP//e9/tdJ4jImJwXfffYeffvrJePMnAAQFBUGn0yEnJ0dy9bGqccREVEZQCBAUJoZkmCirTkxMjNnhFykpKZL3Hh4eiI+PR3x8vNXHAYCFCxdi8ODBWLx4MUaPHo3Q0FAAwLfffmscpkFE8mbPfAKYUURkHWaQlMWNxyeeeAI5OTlmP2/UqBFGjRplUyUsIYoiXn75ZXz11VdISUlBq1atJJ+Hh4dDpVIhOTkZTz/9NADg9OnTyMjIQGRkpMPq5WgVh1sC5odcWjIs09Khm/Yc1ukqQ0Qr1sNRQ1hlPTRWrShb7mTDkIza9PDDD+PatWvIy8uDn5+fsXzChAnw9vau0b6XLVuGxYsXQ6vVIjQ0FEuXLjUbtA8//DB+/PHHSuWPP/44tm3bBgAYM2YMPv30U8nn0dHRlSYDI6I7yDSfAMdmFBHVEmaQhMVn/cYbb1TZ6g0ODsbatWttqoQlJk+ejM8++wwbN25EgwYNoNVqodVqUVhYCADw9fXFuHHjEBsbix9++AGHDx/G2LFjERkZaXKyHCK6TVApzC6uTqlUSgIRAEJCQhAQEGDzPjdv3ozY2FjEx8fjyJEjCA0NRXR0NK5cuWJy/a1bt+Ly5cvG5cSJE1AqlfjnP/8pWa9///6S9f7zn//YXEeiukLO+QQ4JqOAsg6ukJAQeHp6IiIiwjj7pikPP/wwBEGotDzxxBPGdcaMGVPp8/79+9eojkTugBkkJZvZVlesWAGgLAArWrt2LcaMGQMAeP/996FQKPD000+juLgY0dHRWL58eS3XlEiGBAVgarpnU0/FdTFbtmzB559/joyMjErTuR85csSmfS5ZsgTjx4833sCelJSEbdu2Yc2aNZg5c2al9e+cUGzTpk3w9vau1HjUaDQcRk9kLRnnE+CYjCrv4EpKSkJERAQSExMRHR2N06dPm/xCuHXrVsmxr1+/jtDQUJMdXBUvBHBeCCIwg+4gm8ajJdPRenp6YtmyZVi2bFkt1Kh23Dn80dzQSGuHqlo6HNYdOWoGWTn/DM31oAmlrh2MH374IWbNmoUxY8bgm2++wdixY/Hnn3/i119/xeTJk23ap06nw+HDhxEXF2csUygUiIqKQmpqqkX7WL16NYYNG4Z69epJylNSUhAQEAA/Pz/07dsXb7/9dpU3rPNZtETyzSfAMRkFsIOLqDYxg6Rc/6yJyPGUgvnFhS1fvhwrV67E0qVLoVarMWPGDOzatQuvvPKK8Vmw1rp27Rr0er1x5rNyVT32p6KDBw/ixIkTxgf6luvfvz/Wr1+P5ORkLFy4ED/++CMee+yxKh9zlJCQAF9fX+PCRwlRnSTTfAIck1HlHVwVn2tt7w6u9u3bY9KkSbh+/brZfRQXFyMvL0+yELklZpAEG49EBEGlNLu4soyMDPTo0QMA4OXlhZs3bwIARo4c6bT7CVevXo3OnTtXmlxn2LBhGDhwIDp37oxBgwbhu+++w6+//lppZrWK4uLikJuba1wyMzMdXHsi1yPXfAIck1Gu0sHFzi2qK5hBUmw8kstaq+hnXFzJWEOycXEXgodg+mZwD9fuVQsKCkJ2djYAoEWLFti/fz8AID093aKh7qb4+/tDqVQiKytLUm7JY3/y8/OxadMmjBs3rtrjtG7dGv7+/jh79qzZdTQaDXx8fCQLUV0j13wCHJNRNWWvDi52blFdwQySsrnxqNPp8NdffyEjI0OyEJEMyXRIRt++ffHtt98CAMaOHYtp06bhkUcewdChQzF48GCb9qlWqxEeHo7k5NudAwaDAcnJydU+9ueLL75AcXExnnvuuWqP89dff+H69eto0qSJTfUkqjNkmk+AYzLKVTq42LlFdQYzSMLqCXP++OMPPP/889i3b5+kXBRFCIJQ5f07ROSazN4M7uLTUK9cuRIGgwFA2eN87rrrLuzbtw8DBw7Eiy++aPN+Y2NjMXr0aHTt2hXdunVDYmIi8vPzjZNTjBo1Cs2aNUNCQoJku9WrV2PQoEGVJsG5desW5s2bh6effhpBQUH4888/MWPGDLRt2xbR0dE215OoLpBrPgGOyaiKHVyDBg0CcLuDy9yDx8uxg4vIeswgKasbj2PGjIGHhwe+++47NGnSBILg+q1ud2LtUMmqZlityJIH3Fuyjj05e1hobZ+vU3koyxZT5S5MoVBAUWH67GHDhmHYsGE13u/QoUNx9epVzJ07F1qtFmFhYdi+fbvxHqOMjAzJcQHg9OnT+OWXX7Bz585K+1MqlTh27Bg+/fRT5OTkoGnTpnj00Ucxf/58ToVPVB2Z5hPguIxiBxdRLWIGSVjdeDx69CgOHz6Me+65p0YHJiIXojDzDCNTZU527Ngxi9ft0qWLzceJiYkx24tv6h6g9u3bm71/wMvLCzt27LC5LkR1mozyCaidjGIHF1EtYgZJWN147NixI65du2b1gYjIhSnN9KopXa9XLSwsDIIgVHujN4fRE7kJGeUTUHsZxQ4uolrCDJKwuvG4cOFCzJgxAwsWLEDnzp2hUqkkn/OGafkzN7zV3BDYqobGWjJs1tp1qqqvJcNLLV3fkvN1GzLqVUtPT3d2FYioNskonwBmFJHbYQZJWN14LH8obb9+0i/5nDCHSMZkNJ6/ZcuWzq4CEdUmGeUTwIwicjvMIAmrG48//PCDI+pBtezOq2e2XPEzta2l+7V0e3P7qbietVdE3fLKYU15KAEPE3Hg4dqdQQkJCQgMDMTzzz8vKV+zZg2uXr2K119/3Uk1IyK7kWk+AcwoIrfADJKw+nrrQw89VOVCRDKkEMwvLuzjjz82OXnXvffei6SkJCfUiIjsTqb5BDCjiNwCM0jC6iuPAJCTk4PVq1cjLS3NWIHnn38evr6+NlWCiJzMw0OWvWpardbkM8gaN26My5cvO6FGRGR3Ms0ngBlF5BaYQRJWNx4PHTqE6OhoeHl5oVu3bgCAJUuW4J133sHOnTtx//3321QRcjxLn/lYcb1PPaKMrw2G27M2KSr0towu3W18/W/N7fXvXK/i9taq6YQ5lg5VNbcvdx/qKiiUEEzMGiYoXHM8f7ng4GDs3bsXrVq1kpTv3bsXTZs2dVKtiMie5JpPADOKyB0wg6SsbjxOmzYNAwcOxKpVq+Dxdyu8tLQUL7zwAqZOnYqffvrJpooQkRPJbCaxcuPHj8fUqVNRUlKCvn37AgCSk5MxY8YMTJ8+3cm1IyK7kGk+AcwoIrfADJKw6cpjxYYjAHh4eGDGjBno2rWrTZUgIieT2Uxi5V577TVcv34dL730EnQ6HQDA09MTr7/+OuLi4pxcOyKyC5nmE8CMInILzCAJqxuPPj4+yMjIqHTzZWZmJho0aGBTJch1VbwiP7rU9NDNrXdFG1/Xqy/9QzLobw9VNRgqlFcYwlpcdPu1LbOi1uRZkncew92Hp5rloTATjK7dqyYIAhYuXIg5c+YgLS0NXl5eaNeuHTQajbOrRkT2ItN8AphRRG6BGSRh9VkPHToU48aNw+bNm5GZmYnMzExs2rQJL7zwAoYPH25zRahuEAHoVUroPT1gUClh+12QZFflQzJMLVZatmwZQkJC4OnpiYiICBw8eLDK9XNycjB58mQ0adIEGo0Gd999N77//nurjlm/fn088MAD6NSpE7+UEbkbO+YTwIwiIisxgySsPuv33nsPQ4YMwahRoxASEoKQkBCMGTMG//jHP7Bw4cIaVYbcm16jRFFAPRQ0a2BcigLrQa9x/cv+bq98SIapxQqbN29GbGws4uPjceTIEYSGhiI6OhpXrlwxub5Op8MjjzyC8+fPY8uWLTh9+jRWrVqFZs2amT3GxIkT8ddff1lcnw0bNlh1DkTkYuyUTwAziohswAySsHrYqlqtxgcffICEhAT8+eefAIA2bdrA29vb2l2RE9kye+m3Qf2Nr/0b3/7V6XT/7R6MW3nSfd1/4FsAQFFREb7oPhKiWglNYSm81YDoKaCkkTcKPD2gvpIPZbEehQW3x7ZWNSOsJWo682qdIpjpQRPKyvLypP+wGo3GZM/VkiVLMH78eIwdOxYAkJSUhG3btmHNmjWYOXNmpfXXrFmD7Oxs7Nu3DyqVCgAQEhJSZVUbN26Me++9Fz179sSAAQPQtWtXNG3aFJ6enrhx4wZ+//13/PLLL9i0aROaNm2KlStXWvITICJXZad8AphRRGQDZpCEzYN1vb290blzZ3Tu3JkNRzJJBFBcXIyCggJcvnwZOi8VlDo98PfTOxR6EZoCHQxqJXS+nhzC6kzV9KoFBwfD19fXuCQkJFTahU6nw+HDhxEVdftxLQqFAlFRUUhNTTV52G+//RaRkZGYPHkyAgMD0alTJyxYsAB6vflnJ82fPx9nzpxBz549sXz5cnTv3h0tWrRAQEAA2rdvj1GjRuHcuXNYuXIl9u/fjy5dutTwh0NETmWHfAKYUURkI2aQ9MdhyUpDhgzBunXr4OPjgyFDhlS57tatW62qAMmbCKBEqYBBEKAQRYgwQACg81Ait74nTp48ievXryMrKwvX2zaCorgUKp0ehbpSeBfq4FFYCqHQgFJvFQwqJQBDNUckh1B4lC2mylE2IZaPj4+x2FSP2rVr16DX6xEYGCgpDwwMxKlTp0we9ty5c9izZw+effZZfP/99zh79ixeeukllJSUID4+3mx1AwMDMWvWLMyaNQs3btxARkYGCgsL4e/vjzZt2kAQBLPbEpHM2CGfAGYUEdmIGSRhUePR19fXeBAfHx+GnpuzZFhnaJ8iFAlK5Cg8UdopCHoRUApAYH0FFBBx+oYGl295IG37VtwqAfQA0LLh31sbkFMqQlOih09hMUr/vAlNiQFCXiE0xaXGY5SU3D5eaYll1yWtnXmV/lbNM4x8fHwkwWgvBoMBAQEBWLlyJZRKJcLDw3Hx4kUsXry4ylCsyM/PD35+fnavGxG5CCflE8CMIiIwg+5gUeNx7dq1xtfr1q2z28FJvooEJbKU9aETlPBVGKAQReSVKJF5Q43zeWpcL1SiCOZuJFYAHkCxhxJX1SqggwZe1/MhFJbA62YJVMXmL8WTgyiUZnrVLL8Z3N/fH0qlEllZWZLyrKwsBAUFmdymSZMmUKlUUCpvH6dDhw7QarXQ6XRQq9UWH5+I3JQd8glgRhGRjZhBElbf89i3b1/k5ORUKs/Ly0Pfvn3tUSdycSKAHIUndIIS9Q063CxR4kSeN37Nro/DWd64WKiuouF4B6UA1FejMNgPWfcH4WpkMAoa8f7HWqf0ML9YSK1WIzw8HMnJt6/sGgwGJCcnIzIy0uQ2PXv2xNmzZ2Go8BDQM2fOoEmTJvxSRkRl7JBPADOKiGzEDJKwerbVlJQU6HS6SuVFRUX4+eef7VIpqn0Vh3gqFLeHJY8u3W18Xa9eWV9DiYcCeZ71oAdwQaiHTEVLZJcWI7+kmjsWVRXflEhfKgCDnxcKGnhC1bI+Ai5eh/7odXjoyq5C5tyQXo3UFVt3bySHqlZDUBhnDatUboXY2FiMHj0aXbt2Rbdu3ZCYmIj8/HzjrGKjRo1Cs2bNjDeTT5o0CR999BGmTJmCl19+GX/88QcWLFiAV155pcanRERuwk75BDCjiMgGzCAJixuPx44dM77+/fffodVqje/1ej22b99e5TNHyD2UqpS41cgLekU9FAtKZMELuVeLUVy5P8EmeqWAvHoaXGjihwZaHXy1N40NSHKgam4Gt9TQoUNx9epVzJ07F1qtFmFhYdi+fbvx5vCMjAwoKtw3EBwcjB07dmDatGno0qULmjVrhilTpuD111+v0ekQkRuxUz4BzCgisgEzSMLisw4LC4MgCBAEweTwVC8vLyxdutSulSPXUqpS4tZd9aDTeEADATpRwE1BZbeGI4Cyx3gIAvK91FAE1ocmX4d61wvseAAyzUyvmg1P84mJiUFMTIzJz1JSUiqVRUZGYv/+/VYfBwAKCwshiqLxcUEXLlzAV199hY4dO+LRRx+1aZ9E5Grsl08AM4qIrMUMqsjixmN6ejpEUUTr1q1x8OBBNG7c2PiZWq1GQECA5GZOki+D4fYdh5/7lP1iiQB6n1qHvLw8aDQaHH4vAblqFXReVf8KlZgpV1Ucw1pxOGtJCUpVCigUShR5q1FUTw11ThH+nq/VyJJhqByqajlB6QFBqTJRbu5f0DU89dRTGDJkCCZOnIicnBxERERApVLh2rVrWLJkCSZNmuTsKhJRDck1nwBmFJE7YAZJWdxkbtmyJUJCQmAwGNC1a1e0bNnSuDRp0oQNRzdnUCmRn58PLy8viKIID4OIUoUSelNTF9eYAL1CgK6eGjpvDUSHHIMkyodkmFpc2JEjR9C7d28AwJYtWxAYGIgLFy5g/fr1+PDDD51cOyKyC5nmE8CMInILzCAJm8/6999/R0ZGRqXJcwYOHGjrLslFVLxi929NFABALyiQ+twcqPJLIHoooAltCL3pZ6DahSCIUGkEeDdWIfCWEpnXpZ9/6hFlcruKE/yQFex4M3htKigoQIMGDQAAO3fuxJAhQ6BQKNC9e3dcuHDBybUjIruQaT4BzCgit8AMkrC68Xju3DkMHjwYx48fhyAIEMWyIY6CUDZDp17PyU3ckWAQIRgAUSlAKDVApddDAQVQqgdUlS/l15QegEIUodDzoR21wtyU01ZOQ13b2rZti6+//hqDBw823lAOAFeuXHHYA3uJqJbJNJ8AZhSRW2AGSVjdZJ4yZQpatWqFK1euwNvbGydPnsRPP/2Erl27mrzJk9yDoNPDo1CHUk8VBABexSVQl5ZCZbDukRmWEqGApkgPTVEJREGofgOqGZkOyZg7dy5effVVhISEoFu3bsbnJO3cuRP33Xefk2tHRHYh03wCmFFEboEZJGH1WaempmLPnj3w9/eHQqGAQqFAr169kJCQgFdeeQW//fabTRUh56o4VNXcMx+RVYjSAAV0ag/ozhah5OYtiCFKQF3hhuE7LkJWnBjHmtuKVQYRHrmFMNwsQeFNPTw8pA3IEuXtK5KlJbdfV6w7J8yxgkJRtpgqd2H/+Mc/0KtXL1y+fBmhoaHG8n79+mHw4MFOrBkR2Y1M8wlgRhG5BWaQhNVnrdfrjWNn/f39cenSJQBlE+qcPn3apkqQPCiL9fC6kg/VTR1EhQKqEj28swsA0f5XH/1KbwGCAGWJAcpSx1zdpAoUSjO9aq4/EVZQUBAaNGiAXbt2obCwEADwwAMP4J577qnRfpctW4aQkBB4enoiIiICBw8eNLvuunXrjI8yKl88PT0l64iiiLlz56JJkybw8vJCVFQU/vjjjxrVkahOkHE+AY7LKCKqJcwgCasbj506dcL//vc/AEBERAQWLVqEvXv34q233kLr1q1tqgTJh7JYD88r+ah/OQ++6ddR76+bUJXa+z5XPfwMOniUitAU6sBBq7VApkMyrl+/jn79+uHuu+/G448/jsuXLwMAxo0bh+nTp9u8382bNyM2Nhbx8fE4cuQIQkNDER0djStXrpjdxsfHB5cvXzYud96IvmjRInz44YdISkrCgQMHUK9ePURHR6OoqMjmehLVCTLNJ8BxGQWwg4uo1jCDJKxuPM6ePRuGv+9ze+utt5Ceno7evXvj+++/57TTMrZW0c+4jDUkG5fRpbuNS2GBAYUFBhQVGCAUG6DK1aHelVtQ3SgGyp8NWXLHUoGqwiIl3cCzxAB1jh7q7AIgTwddsQGlpaJkMehhXCqqWHeyglDF4sKmTZsGlUqFjIwM4wNwAWDo0KHYvn27zftdsmQJxo8fj7Fjx6Jjx45ISkqCt7c31qxZY3YbQRAQFBRkXAIDA42fiaKIxMREzJ49G0899RS6dOmC9evX49KlS/j6669tridRnSDTfAIcl1Hs4CKqRcwgCaubzNHR0cbXbdu2xalTp5CdnQ0/Pz/jjKtUdyhL9GhwPR9FXh4wNPCsfoNqaIqL4V9UCO/SEog3i6HgkNVaYRD1MIiVryCbKnMlO3fuxI4dO9C8eXNJebt27Wyeglqn0+Hw4cOIi4szlikUCkRFRSE1NdXsdrdu3ULLli1hMBhw//33Y8GCBbj33nsBAOnp6dBqtYiKuv2IGV9fX0RERCA1NRXDhg0zuc/i4mIUFxcb3+fl5dl0TkRyJtd8AhyTUYC0gwsAkpKSsG3bNqxZswYzZ840uU15B5cpd3ZwAcD69esRGBiIr7/+2mxGEdUFzCApq688fvbZZ8jPz5eUNWrUiA3HOkpRrId3YQl8r+cDJTX7I/JGKXxLSqAxGOBVUgLPW8Vy6NRxC2IV/3Nl+fn5kp60ctnZ2dBobHsQ6bVr16DX6yVXDgEgMDAQWq3W5Dbt27fHmjVr8M033+Czzz6DwWBAjx498NdffwGAcTtr9gkACQkJ8PX1NS7BwcE2nRORnMk1nwDHZFR5B1fFzihrOriCg4Px1FNP4eTJk8bPquvgMqW4uBh5eXmShcgdMYOkrG48Tps2DYGBgRgxYgS+//57PtfRTZgb7llxOKvBIBqX/Ft65N/So+hGCYrP5sGQVQxVVgGU+aWArsLvREnJ7cXceFYAKhjgrTBArTfA/1Y+Am4WwKPCfobd2iVZLKk7Wa68V83U4sp69+6N9evXG98LggCDwYBFixahT58+tVaPyMhIjBo1CmFhYXjooYewdetWNG7cGB9//HGN9hsXF4fc3FzjkpmZaacaE8mHXPMJcExGuUoHFzu3qK5gBklZPWz18uXL2L59O/7zn//gmWeegbe3N/75z3/i2WefRY8ePWyqBMmXAEBzpQB6tQf0nkpAJUCvElCi8kCppwegUqCqQeEKAB4wwF9RjKaqImiyc9Hs5i1o2ClRqwyiwcyQDNceNrxo0SL069cPhw4dgk6nw4wZM3Dy5ElkZ2dj7969Nu3T398fSqUSWVlZkvKsrCyzQ77upFKpcN999+Hs2bMAYNwuKysLTZo0kewzLCzM7H40Go3NPYNE7kKu+QQ4JqNsERkZaXy+GwD06NEDHTp0wMcff4z58+fbtM+4uDjExsYa3+fl5bEBSW6JGSRl9ZVHDw8PPPnkk9iwYQOuXLmC999/H+fPn0efPn3Qpk0bmypB8qYs1sP7rzz4nM6Gb/YteOXp4JudD7+LuWhakgc/fQEa6ItQDyXwQil8UYwm/ko0DfBA82ZqdPC8iTDvPHSqdwvN2XB0ChEGs4sr69SpE86cOYNevXrhqaeeQn5+PoYMGYLffvvN5jxSq9UIDw9HcvLtK9kGgwHJycmSL19V0ev1OH78uLGh2KpVKwQFBUn2mZeXhwMHDli8T6K6Sq75BDgmoxzdwWXpPjUaDXx8fCQLkTtiBknVaI5Zb29vREdH48aNG7hw4QLS0tJqsju7WbZsGRYvXgytVovQ0FAsXboU3bp1c3a1ZGOtol+165SW3B7nrVAAKCmF6lYu1PnFUDT0hL6eCoAA5RkDGpTo4VGiR8uWGuR7ekCnVqFeQy089aXw1pfCq6gEnvpSKA0GXD51+yrljeulxtefekShotGlu2t8nnSbnG8G9/X1xaxZs+y6z9jYWIwePRpdu3ZFt27dkJiYiPz8fOPkFKNGjUKzZs2QkJAAoGzm6e7du6Nt27bIycnB4sWLceHCBbzwwgsAyoaJTJ06FW+//TbatWuHVq1aYc6cOWjatCkGDRpk17oTuRs55xNg/4yq2MFVnh/lHVwxMTEW7aO8g+vxxx8HIO3gKh8NUd7BNWnSJLvVnUiOmEFSNjUeCwoK8NVXX2HDhg1ITk5GcHAwhg8fji1bttitYrYqn746KSkJERERSExMRHR0NE6fPo2AgABnV8+tCQDU+Tqo8nUwqJQQFQJUShGKEgMEAI39DfDPB0qVCviqdFCIIlSiAfoSTovjbHIKxmPHjqFTp05QKBQ4duxYlet26dLFpmMMHToUV69exdy5c6HVahEWFobt27cb7wfKyMiAQnF74MaNGzcwfvx4aLVa+Pn5ITw8HPv27UPHjh2N68yYMQP5+fmYMGECcnJy0KtXL2zfvr3Ss9aISEpO+QTUTkaxg4uo9jCDpKxuPA4bNgzfffcdvL298cwzz2DOnDkuNezKlumryb4ElD3CAwCUKqHSZyq9AZ53PqCRnMrc8AtXHJIRFhYGrVaLgIAAhIWFQRAEiGLlGc8EQajRhF4xMTFme/FTUlIk799//328//77Ve5PEAS89dZbeOutt2yuE1FdJKd8Amono9jBRVR7mEFSVjcelUolPv/8c0RHR0OpVFp9QEey9vlsfIaaaeZmLTU3nNVguP0LmX9L+oek8bzdeDx5tMD42utMxdttq5/quKphqhXrxRlXbSOnXrX09HQ0btzY+JqI3Juc8gmovYxiBxdR7WAGSVnVeCwpKYFWq0W7du1cruEIVD199alTpyqtn5CQgHnz5tVW9YhclpyCsWXLlsbXFy5cQI8ePeDhIY2y0tJS7Nu3T7IuEcmTnPIJYEYRuRtmkJRVjUeVSlXt2Fk54TTTt5m7emfJ5DkVVbwKCQDFRRVeV7jCWFxs+mpjxT6Jqq6k82qjfYmAyYfduvrjb/v06YPLly9Xup85NzcXffr04XNoidyAXPMJYEYRuQNmkJTVj+p47rnnsHr1aqsPVBusnb6a00wTlRHNPPxWtKFXbdmyZQgJCYGnpyciIiJw8OBBi7bbtGkTBEGwanIGURQhCJUnXLp+/Trq1atn8X6IyHXZM58AZhQRWYcZJGX1PY+lpaVYs2YNdu/ejfDw8EoHXrJkiU0VsQd7TF9NVBfZ62ZwW2c7Pn/+PF599VX07t3bouMMGTIEQNk9OmPGjIFGozF+ptfrcezYMfTo0cOquhORa7LnZBXMKCKyFjNIyurG44kTJ3D//fcDAM6cOSP5zFTLtrZVN301mWZu6GdNhrAClYexltMVV3xOpFBtOTmWvcbz2zLbsV6vx7PPPot58+bh559/Rk5OTrXH8fX1BVDWo9agQQN4eXkZP1Or1ejevTvGjx9vVd2JyDXZ834jZhQRWYsZJGV14/GHH36w6UC1pbrpq4mosuqC8c6ZiDUajaQXC7B+tuNyb731FgICAjBu3Dj8/PPPFtV37dq1AICQkBC8+uqrHP5F5MbskU8AM4qIbMMMkrL6nsdyZ8+exY4dO1BYWAgAJp8f4iwxMTG4cOECiouLceDAAURERDi7SkQuzSCaXwAgODgYvr6+xqX8wdMVVTXbsVarNXncX375BatXr8aqVatsqnd8fDy/lBG5OXvkE8CMIiLbMIOkrL7yeP36dTzzzDP44YcfIAgC/vjjD7Ru3Rrjxo2Dn58f/vWvf9m1glT7LJnJtKbDWSsyN7TVXHlV9SLblBgElBgqDxMuL8vMzJRMKGWqR81aN2/exMiRI7Fq1Sr4+/tbvN3999+P5ORk+Pn54b777qtyuPyRI0dqXE8ici5n5BPAjCKiMswgKasbj9OmTYNKpUJGRgY6dOhgLB86dChiY2PZeCSSoVIzwVj6d5klsxFbO9vxn3/+ifPnz2PAgAHGMoOh7OZzDw8PnD59Gm3atKm03VNPPWUMZmtmHCMiebJHPgHMKCKyDTNIyurG486dO7Fjxw40b95cUt6uXTtcuHDBbhUjotpjEAUYxMrBaKrMHGtnO77nnntw/PhxSdns2bNx8+ZNfPDBB2afuRofH2/yNRG5J3vkE8CMIiLbMIOkrG485ufnw9vbu1J5dna23S7TkuswNyS1pkNVzTE3HLaq43EIa81VNyTDUtXNdjxq1Cg0a9YMCQkJ8PT0RKdOnSTbN2zYEAAqlRNR3WWvfAKYUURkPWaQlNWNx969e2P9+vWYP38+gLLHcxgMBixatAh9+vSxewWJyPEMfy+myq1R3WzHGRkZUChsnqcLAODn52fxY4Gys7NrdCwicj575RPAjCIi6zGDpKxuPC5atAj9+vXDoUOHoNPpMGPGDJw8eRLZ2dnYu3ev1RUgIucrFQXj2P07y60VExNjcvgFAKSkpFS57bp166rdf2JiotV1IiL5smc+AcwoIrIOM0jK6sZjp06dcObMGXz00Udo0KABbt26hSFDhmDy5Mlo0qSJI+pItczcMFBLhqreua21w1stmenVlv1S1aq7GdyVjB492tlVIKJaJKd8AphRRO6GGSRldeMRAHx9fTFr1ix714WInMReN4PXhry8POOsZnc+mPdOlsx+RkSuTU75BDCjiNwNM0jK6sbj9u3bUb9+ffTq1QsAsGzZMqxatQodO3bEsmXL4OfnZ3UliMi57HkzuKP5+fnh8uXLCAgIQMOGDU2O6xdFEYIgQK/XO6GGRGRPcsongBlF5G6YQVJWNx5fe+01LFy4EABw/PhxxMbGYvr06fjhhx8QGxuLtWvXWl0Jci2WDh2tbts7tzc31NSW2VLN7Zczr9qmxFC2mCp3NXv27EGjRo0AAD/88IOTa0NEjianfAKYUUTuhhkkZXXjMT09HR07dgQAfPnllxgwYAAWLFiAI0eO4PHHH7d7BYnI8eQ0JOOhhx4y+ZqI3JOc8glgRhG5G2aQlNWNR7VajYKCAgDA7t27MWrUKABAo0aNqh1XS0SuSW43g1d048YNrF69GmlpaQCAjh07YuzYscZeNyKSNznnE8CMIpI7ZpCU1Y3HXr16ITY2Fj179sTBgwexefNmAMCZM2fQvHlzmypBta+q4aWWDAm1dLZTa4eqWro+h6raV6nBzDTULh6MP/30EwYMGABfX1907doVAPDhhx/irbfewv/93//hwQcfdHINiaim5JpPADOKyB0wg6Ssbjx+9NFHeOmll7BlyxasWLECzZo1AwD897//Rf/+/a2uABE5n14sW0yVu7LJkydj6NChWLFiBZRKJQBAr9fjpZdewuTJk3H8+HEn15CIakqu+QQwo4jcATNIyurGY4sWLfDdd99VKn///fetPjg5j6VX66y9qmfpsxnNXTmsjauIvGpZWanBdA9aqYveDF7u7Nmz2LJlizEQAUCpVCI2Nhbr1693Ys2IyF7kmk8AM4rIHTCDpGx6zqNer8dXX31lHDvboUMHDBo0CB4eNu2OiJxMrr1q999/P9LS0tC+fXtJeVpaGkJDQ51UKyKyJ7nmE8CMInIHzCApq1t7J0+exIABA5CVlWWsyMKFC9G4cWP83//9Hzp16mRTRYjIeUpF01NOl7pgMB47dsz4+pVXXsGUKVNw9uxZdO/eHQCwf/9+LFu2DO+++66zqkhEdiSnfAKYUUTuhhkkZXXj8YUXXkCnTp1w+PBh+Pn5ASibxWfMmDGYMGEC9u3bZ1NFyDVZO8Szqol0bJlwx9b1q8KhqpXpDIDSRDDqXHBIRlhYGARBgCjeTu0ZM2ZUWm/EiBEYOnRobVaNiBxATvkEMKOI3A0zSMrqxuPRo0dx6NAhY8MRAPz8/PDOO+/ggQcesLoCROR8chqSkZ6e7uwqEFEtklM+AcwoInfDDJKyuvF49913IysrC/fee6+k/MqVK2jbtq3dKkZEtafEAHiY6EEzNUzD2Vq2bFkrx1m2bBkWL14MrVaL0NBQLF26FN26dTO57qpVq7B+/XqcOHECABAeHo4FCxZI1h8zZgw+/fRTyXbR0dHYvn27406CyA3IKZ+A2ssoIqodzCApixqPeXl5xtcJCQl45ZVX8Oabb0rGzr711ltYuHChY2pJDmev2U8tnW3VkmdJWrpfqrlSg5nx/C4ajHf6/fffkZGRAZ1OJykfOHCgTfvbvHkzYmNjkZSUhIiICCQmJiI6OhqnT59GQEBApfVTUlIwfPhw9OjRA56enli4cCEeffRRnDx50vg4IwDo378/1q5da3yv0Whsqh9RXSL3fALsn1EAO7iIagszSMqixmPDhg0hCLenqBVFEc8884yxrHxM7YABA6DX662uBBE5l9yGZJQ7d+4cBg8ejOPHj0vG95dnk615tGTJEowfPx5jx44FACQlJWHbtm1Ys2YNZs6cWWn9DRs2SN5/8skn+PLLL5GcnIxRo0YZyzUaDYKCgmyqE1FdJdd8AhyXUezgIqo9zCApixqPP/zwg9U7JiL50BkEKEw8w0hnosyVTJkyBa1atUJycjJatWqFgwcP4vr165g+fTree+89m/ap0+lw+PBhxMXFGcsUCgWioqKQmppq0T4KCgpQUlKCRo0aScpTUlIQEBAAPz8/9O3bF2+//Tbuuusus/spLi5GcXGx8X3FUSBEdYVc8wlwTEYB7OAiqk3MICmLGo8PPfSQTTsn+bDn8FRrt7F2CCvZn0EsW0yVu7LU1FTs2bMH/v7+UCgUUCgU6NWrl3F4/W+//Wb1Pq9duwa9Xo/AwEBJeWBgIE6dOmXRPl5//XU0bdoUUVFRxrL+/ftjyJAhaNWqFf7880+88cYbeOyxx5Camip5eG9FCQkJmDdvntXnQORO5JpPgGMyylU6uNi5RXUFM0jK6glzACAnJwerV69GWloaAODee+/F888/D19fX1t2R0ROVmIAFDK6GbycXq9HgwYNAAD+/v64dOkS2rdvj5YtW+L06dNOqdO7776LTZs2ISUlBZ6ensbyYcOGGV937twZXbp0QZs2bZCSkoJ+/Uw/iiYuLg6xsbHG93l5eQgODnZc5YlckFzzCXBMRrlKBxc7t6iuYAZJWd14PHToEKKjo+Hl5WW80XrJkiV45513sHPnTtx///02VYSInKdEDyhMDHsvcfFbmDt16oT//e9/aNWqFSIiIrBo0SKo1WqsXLkSrVu3tmmf/v7+UCqVyMrKkpRnZWVVO5zrvffew7vvvovdu3ejS5cuVa7bunVr+Pv74+zZs2YbjxqNhvccUZ0n13wCHJNRNWWvDi52blFdwQySUli7wbRp0zBw4ECcP38eW7duxdatW5Geno4nn3wSU6dOtakSROXGGpKNC9UePW7fEC5ZbNjXsmXLEBISAk9PT0RERODgwYNm1121ahV69+4NPz8/+Pn5ISoqqsr17zR79mwYDGVdf2+99RbS09PRu3dvfP/99/jwww9tqD2gVqsRHh6O5OTbv4MGgwHJycmIjIw0u92iRYswf/58bN++HV27dq32OH/99ReuX7+OJk2a2FRPorrCnvkEyD+j7NHBtXPnTqs6uEzRaDTw8fGRLETuiBkkZXXj8dChQ3j99dfh4XH7oqWHhwdmzJiBQ4cO2VQJInKuEoP5xRrlMwDGx8fjyJEjCA0NRXR0NK5cuWJy/fIZAH/44QekpqYiODgYjz76KC5evGjR8aKjozFkyBAAQNu2bXHq1Clcu3YNV65cQd++fa2rfAWxsbFYtWoVPv30U6SlpWHSpEnIz883Tk4xatQoyf1GCxcuxJw5c7BmzRqEhIRAq9VCq9Xi1q1bAIBbt27htddew/79+3H+/HkkJyfjqaeeQtu2bREdHW1zPYnqAnvlE+AeGcUOLqLaxQySsrrx6OPjg4yMjErlmZmZxjG1RCQvJQZAZ2KxNhgrzgDYsWNHJCUlwdvbG2vWrDG5/oYNG/DSSy8hLCwM99xzDz755BPjlyBrZWZmIjMzE40aNZI8WsgWQ4cOxXvvvYe5c+ciLCwMR48exfbt2433GGVkZODy5cvG9VesWAGdTod//OMfaNKkiXEpn8lMqVTi2LFjGDhwIO6++26MGzcO4eHh+Pnnnzkslaga9sonwH0yih1cRLWHGSRl9T2PQ4cOxbhx4/Dee++hR48eAIC9e/fitddew/Dhw22uCJGtOENrzVU3k9ids+iZuhfPkTMAmlNaWop58+bhww8/NH4Jql+/Pl5++WXEx8dDpVJZtB9TYmJiEBMTY/KzlJQUyfvz589XuS8vLy/s2LHD5roQ1WX2yCfAvTJq6NChuHr1KubOnQutVouwsLBKHVwKxe3rAxU7uCqKj4/Hm2++aezg+vTTT5GTk4OmTZvi0Ucfxfz589nB5WLu/O8POR4zSMrqxuN7770HQRAwatQolJaWAgBUKhUmTZqEd9991+oKEJHzlegFCPrKvVAlf5fdOQlC+ReOihw1A2BVXn75ZWzduhWLFi0yDtdKTU3Fm2++ievXr2PFihUW7YeIXJc98glwv4xiBxdR7WAGSVndeFSr1fjggw+QkJCAP//8EwDQpk0beHt7W31wInINpSUKKEoqj2Iv/bssMzNTMhmCI3qizc0AWJWNGzdi06ZNeOyxx4xlXbp0QXBwMIYPH87GI5EbcIV8AphRRHUVM0jKpuc8AoC3tzc6d+5s6+bkZBWHegLyHu4p57q7CoNBgMFQuVetvMySmfRq6xEXFWk0GoSEhFQqb9WqFdRqtcX7ISLXZY98AphRRGQbZpCU1RPmEJH70ZcqUFpSedGXWh4RtTUDYEUxMTGYP38+iouLjWXFxcV45513zA7nIiJ5sUc+AcwoIrINM0jK5iuPJG+8Wmeaucl33H1Snup61SwVGxuL0aNHo2vXrujWrRsSExMrzQDYrFkzJCQkACibAXDu3LnYuHGjcQZAoOxm7vr165s8RvmU0+V2796N5s2bIzQ0FADwv//9DzqdzuRDrYlIfuyVTwAzioisxwySYuORiFBaKkAorRyCpSbKqmLvGQBN8fX1lbx/+umnJe/vvHGdiOTNXvkEMKOIyHrMICk2HokIpSUKCFXcDG4Ne84AaMratWut3oaI5Mue+QQwo4jIOswgKTYeySbuOozT3Lm40zmaYs8hGc5w9epVnD59GgDQvn17NG7c2Mk1Ijkq/4/2ww8/7NR6kJTc8wlgRhHJGTNIihPmEBFKShUoKTGxWHkzeG3Lz8/H888/jyZNmuDBBx/Egw8+iKZNm2LcuHEoKChwdvXIxaWkpPCB2zIg13wCmFFE7oAZJOX6Z01EDqcvVaDUxGLtTGK1LTY2Fj/++CP+7//+Dzk5OcjJycE333yDH3/8EdOnT3d29YjIDuSaTwAzisgdMIOkOGyVbOLuwzjrGoNegEFvYkiGiTJX8uWXX2LLli2SYYaPP/44vLy88Mwzz/AB3FQl/aEtxtfKrv+oYk1yJrnmE8CMInIHzCApNh6JqGzGMBM9aLbMJFabCgoKjDOUVRQQEMAhYWQVw8mvb7/hPY8uRa75BDCjiNwBM0jK9a+3omymoXHjxqFVq1bw8vJCmzZtEB8fD51OJ1nv2LFj6N27Nzw9PREcHIxFixY5qcZE8lJ+M7ipxZVFRkYiPj4eRUVFxrLCwkLMmzevygfuEpF8yDWfAGYUkTtgBknJ4srjqVOnYDAY8PHHH6Nt27Y4ceIExo8fj/z8fLz33nsAgLy8PDz66KOIiopCUlISjh8/jueffx4NGzbEhAkTnHwGRK6ttFQBmJqG2sXH8ycmJqJ///6VHn7r6emJHTt2OLl2JFeln400vvZ47t9OrAkB8s0ngBlFjsdZoh2PGSQli8Zj//790b9/f+P71q1b4/Tp01ixYoWx8bhhwwbodDqsWbMGarUa9957L44ePYolS5aw8UhUDX2JAlBWDkG9jc8wqi2dO3fGH3/8gQ0bNuDUqVMAgOHDh+PZZ5+Fl5eXk2tHRPYg13wCmFFE7oAZJCWLxqMpubm5aNSokfF9amoqHnzwQajVamNZdHQ0Fi5ciBs3bsDPz6/SPoqLi1FcXGx8n5eX59hKE7kog0GAILNnGJWUlOCee+7Bd999h/Hjxzu7OiQTl4Y9fvtN19bOqwhZTI75BDCjiNwFM0jK9ZvMJpw9exZLly7Fiy++aCzTarWVbggtf6/Vak3uJyEhAb6+vsYlODjYcZUmcmGKUoPZxVWpVCrJGH4ick9yzCeAGUX2x+fSOgczSMqpjceZM2dCEIQql/JLrOUuXryI/v3745///GeNW9FxcXHIzc01LpmZmTXaH5FcKUoMUJpYFCWuHYyTJ0/GwoULUVpa6uyqEJGDyDWfAGYUkTtgBkk5ddjq9OnTMWbMmCrXad369rCiS5cuoU+fPujRowdWrlwpWS8oKAhZWVmSsvL3QUFBJvet0Wig0WhsqDmRe1GIIhQG0WS5K/v111+RnJyMnTt3onPnzqhXr57k861btzqpZuQurozsL3kf8O/tTqpJ3SXXfAKYUUTugBkk5dTGY+PGjdG4cWOL1r148SL69OmD8PBwrF27FgqF9KJpZGQkZs2ahZKSEqhUKgDArl270L59e5P3OxLRbcoSEUpF5R40scS1g7Fhw4Z4+umnnV0NcjM/ZZfdT/9go2wn14QA+eYTwIwiO7r5BVB8pey15t5KH3PWVcdhBknJYsKcixcv4uGHH0bLli3x3nvv4erVq8bPyq8qjhgxAvPmzcO4cePw+uuv48SJE/jggw/w/vvvO6vaRLLhUWqAh9LE8AsXH8+/du1aZ1eBZOBU36eMr30CnFgRsolc8wlgRlH19nV+0vi6x/HvnFgTMocZJCWLxuOuXbtw9uxZnD17Fs2bN5d8Jv59ydjX1xc7d+7E5MmTER4eDn9/f8ydO5eP6SCygGAQIZgYkmGqzBUYDAYsXrwY3377LXQ6Hfr164f4+HhOfU8WOezfDADg7eR6kGXklk8AM4rInTCDpGTReBwzZky190YCQJcuXfDzzz87vkJOtFbRz/h6rCHZiTUhd+JRYoCHiSEZcNGbwd955x28+eabiIqKgpeXFz744ANcuXIFa9ascXbVyM39L/L2VczQ1G+cWJO6Q275BDCjqLJPPaKMr+vVv33rVdPg24+Y0454zPjaL1z6JV8zYbjxtUH80/haIbSxaz2pMmaQlCwaj0TkWHK7GXz9+vVYvny58XE9u3fvxhNPPIFPPvmk0v3QVDf9t/ntL2Gt7lZXsSa5OrnlE8CMolpkOHv7taKt8+rhxphBUmw8ygyvNpIjKEoNJm8GN7joeP6MjAw8/vjth71HRUVBEARcunSp0tB2IpI3ueUTwIyqyyqOEKtIoXDtB8qTecwgKTYeiajsmUWCiWB00SEZpaWl8PT0lJSpVCqUlJQ4qUZE5ChyyyeAGUXOoT/4BXQnlgMACk/cMJb7Ju1yVpXcAjNIio1HIoLCYIDCUDkETZW5AlEUMWbMGMlzWouKijBx4kTJM4z4DLW6Y4PXI5L3je6q+X/efspuhMJGGjyQ/ZfJz79uHG18Pejqjhofj0yTWz4BzCiyr5+LA+Gx74qzq1FnMYOk2HgkorKbwU30qoku2qs2evToSmXPPfecE2pCRI4mt3wCmFF1iblhqs7yc0HZ89O74vaVx21N+xtfP3Fpe63XSe6YQVJsPBIRlHoDlCbG7hv01gfjsmXLsHjxYmi1WoSGhmLp0qXo1q2b2fW/+OILzJkzB+fPn0e7du2wcOFCyTh9U2rj2Wn2Pg9RFBEfH49Vq1YhJycHPXv2xIoVK9CuXTuHn4u7qjh7oYeq+vuJTrRsAk09vSOrBICzYtubPfMJYEYxo2rO1RqMNcG8qh4zSIpTfhERFAbR7GKNzZs3IzY2FvHx8Thy5AhCQ0MRHR2NK1dMD7fZt28fhg8fjnHjxuG3337DoEGDMGjQIJw4ccIep2UzR5zHokWL8OGHHyIpKQkHDhxAvXr1EB0djaKioto6Ldlaq+hncnEl/9ZEGZeKXLW+cmKvfAKYUcwoefm5OBA/FwfadZ8bvB6RLBXJIWudgRkkJYiiC88zW8vy8vLg6+uL3Nxc+Pj4OLs6RNWq6e9s+fbPPLkSalXlB8fqSgrx+XcTLN5/REQEHnjgAXz00UcAyh5SGxwcjJdffhkzZ86stP7QoUORn5+P7777zljWvXt3hIWFISkpyerzsRd7n4coimjatCmmT5+OV199FQCQm5uLwMBArFu3DsOGDbOoXnUpoyz5wlJx9sI7rzxWvOex/FEdd1559A65fS+I4FVhII7+9n8WC//Ml+y3+cGrxtfpZ29/qb6Zd3u/pSWm/7Na13r1XS2fAGaUIzNKzvlk7uqbPRtOFfPK3HMeW3e+nSN+4V6ShqNHeCfja4P69kQoFR8XoT/0m/F113NnjK9/+VZpfJ1zQzr6Qldc/dUzd82u6n5nmUGmcdhqBeXt6Ly8PCfXhMgy5b+rNe0D0usKUGqiB01fWig5TjmNRiO5CRsAdDodDh8+jLi4OGOZQqFAVFQUUlNTTR43NTUVsbGxkrLo6Gh8/fXXtpyGXTjiPNLT06HVahEVdfuqlK+vLyIiIpCammr2i1lxcTGKi4uN73NzcwFUnVGf+Q4wvn4u9/+qXcccc9tauq+K21dVJ0vqYo5CvP1lTClKG4/XOzc1vr7a6O8vTjod9KrbX5zEotvbCKjwharC30JRsU6y31ult2eqKzCUGl8XihUaj2b+HpcLD5ksr4q5n6O12965vaX/vqbcWQ9z+3KlfAKYUfbOKEflU1Vq8jdg6ba2/J1aomJeCeLtxmO+/nb5zQr30CmLSpBfIX888guNrw0VOqgkjcei2+vn6cry6WC95jAYLhvLC0Rp47FErL7xaM+fiT3/u2Tu98nS3zNLM4oZJMXGYwU3b94EAAQHBzu5JkTWuXnzJnx9fa3eTq1WIygoCF/unGp2nfr161f6m4iPj8ebb74pKbt27Rr0ej0CA6VDbAIDA3Hq1CmT+9ZqtSbX12q1lp+EnTniPMr/39pzTUhIwLx58yqVW5pRk234nbDHtlVtX9P9SlT8zlN8x2duMieEo/4N7fnvUN2+XCGfAGaUvTPKmflkqdo4hsUq5lWemddpFV5vcWx1nKW2M82S45nLKGaQaWw8VtC0aVNkZmaiQYMGEAT7Psw1Ly8PwcHByMzMlN1wDnvg+Tvm/EVRxM2bN9G0adPqVzbB09MT6enp0Ol0ZtcRRbHS34OpHjWyv7i4OEmPo8FgQHZ2Nu666y5mlB3V5XMHmE9kG0fkU136W+S5Ol91GcUMMo2NxwoUCgWaN2/u0GP4+Pi41B9ObeP52//8benRr8jT07PSg2Rt4e/vD6VSiaysLEl5VlYWgoKCTG4TFBRk1fq1wRHnUf7/WVlZaNKkiWSdsLAws3UxNfSlYcOGlp6KTery32hdPnfAvfMJYEbZO6McmU916W+R5+pc1WUUM6gyzrZKRHahVqsRHh6O5OTbN9YbDAYkJycjMjLS5DaRkZGS9QFg165dZtevDY44j1atWiEoKEiyTl5eHg4cOODUcyWqS5hRzCgiZ3KXDIJItSI3N1cEIObm5jq7Kk7B868b579p0yZRo9GI69atE3///XdxwoQJYsOGDUWtViuKoiiOHDlSnDlzpnH9vXv3ih4eHuJ7770npqWlifHx8aJKpRKPHz/urFMQRdEx5/Huu++KDRs2FL/55hvx2LFj4lNPPSW2atVKLCwsrPXzM6Wu/I6aUpfPXRTr1vkzo1w7o+rS7yLPtW5yhwxi47GWFBUVifHx8WJRUZGzq+IUPP+6c/5Lly4VW7RoIarVarFbt27i/v37jZ899NBD4ujRoyXrf/755+Ldd98tqtVq8d577xW3bdtWyzU2zd7nYTAYxDlz5oiBgYGiRqMR+/XrJ54+fbo2TsUidel39E51+dxFse6dPzPKdTOqLv0u8lzrLrlnEJ/zSERERERERNXiPY9ERERERERULTYeiYiIiIiIqFpsPBIREREREVG12HgkIiIiIiKiarHx6GDnz5/HuHHj0KpVK3h5eaFNmzaIj4+HTqeTrHfs2DH07t0bnp6eCA4OxqJFi5xUY/tbtmwZQkJC4OnpiYiICBw8eNDZVXKIhIQEPPDAA2jQoAECAgIwaNAgnD59WrJOUVERJk+ejLvuugv169fH008/Xenhr0S1hflUpi5kFPOJXFldyyJ3zBxmTB3i1Lle64D//ve/4pgxY8QdO3aIf/75p/jNN9+IAQEB4vTp043r5ObmioGBgeKzzz4rnjhxQvzPf/4jenl5iR9//LETa24fmzZtEtVqtbhmzRrx5MmT4vjx48WGDRuKWVlZzq6a3UVHR4tr164VT5w4IR49elR8/PHHxRYtWoi3bt0yrjNx4kQxODhYTE5OFg8dOiR2795d7NGjhxNrTXVZXc8nUaw7GcV8IldWl7LIXTOHGVN3sPHoBIsWLRJbtWplfL98+XLRz89PLC4uNpa9/vrrYvv27Z1RPbvq1q2bOHnyZON7vV4vNm3aVExISHBirWrHlStXRADijz/+KIqiKObk5IgqlUr84osvjOukpaWJAMTU1FRnVZNIoi7lkyjW3YxiPpGrc9csqiuZw4xxXxy26gS5ublo1KiR8X1qaioefPBBqNVqY1l0dDROnz6NGzduOKOKdqHT6XD48GFERUUZyxQKBaKiopCamurEmtWO3NxcADD+Wx8+fBglJSWSn8c999yDFi1a1ImfB8lDXcknoG5nFPOJXJ07ZlFdyhxmjPti47GWnT17FkuXLsWLL75oLNNqtQgMDJSsV/5eq9XWav3s6dq1a9Dr9SbPTc7nZQmDwYCpU6eiZ8+e6NSpE4Cyf0u1Wo2GDRtK1q0LPw+Sh7qUT0DdzSjmE7k6d82iupI5zBj3xsajjWbOnAlBEKpcTp06Jdnm4sWL6N+/P/75z39i/PjxTqo51YbJkyfjxIkT2LRpk7OrQnUQ84mqwnyi2sIsqpuYMe7Nw9kVkKvp06djzJgxVa7TunVr4+tLly6hT58+6NGjB1auXClZLygoqNJsU+Xvg4KC7FNhJ/D394dSqTR5bnI+r+rExMTgu+++w08//YTmzZsby4OCgqDT6ZCTkyPpeXP3nwfVPuaTZepiRjGfqDYxi6TqQuYwY+oAZ990WRf89ddfYrt27cRhw4aJpaWllT4vvwlcp9MZy+Li4mR3E7gp3bp1E2NiYozv9Xq92KxZM7e7MVwURdFgMIiTJ08WmzZtKp45c6bS5+U3i2/ZssVYdurUKd4sTk5Vl/NJFOtORjGfyNXVlSxy18xhxtQdbDw62F9//SW2bdtW7Nevn/jXX3+Jly9fNi7lcnJyxMDAQHHkyJHiiRMnxE2bNone3t6ym37alE2bNokajUZct26d+Pvvv4sTJkwQGzZsKGq1WmdXze4mTZok+vr6iikpKZJ/54KCAuM6EydOFFu0aCHu2bNHPHTokBgZGSlGRkY6sdZUl9X1fBLFupNRzCdyZXUpi9w1c5gxdQcbjw62du1aEYDJpaL//e9/Yq9evUSNRiM2a9ZMfPfdd51UY/tbunSp2KJFC1GtVovdunUT9+/f7+wqOYS5f+e1a9ca1yksLBRfeukl0c/PT/T29hYHDx4s+Y8jUW1iPpWpCxnFfCJXVteyyB0zhxlTdwiiKIoOHBVLREREREREboCzrRIREREREVG12HgkIiIiIiKiarHxSERERERERNVi45GIiIiIiIiqxcYjERERERERVYuNRyIiIiIiIqoWG49ERERERERULTYeiYiIiIiIqFpsPBIREREREVG12HgkIiIiIiKiarHxSERERERERNVi45GI7Oann37CgAED0LRpUwiCgK+//rrabVJSUnD//fdDo9Ggbdu2WLduncPrSUR1T13Lp2XLliEkJASenp6IiIjAwYMHq1w/MTER7du3h5eXF4KDgzFt2jQUFRXVUm2J6gZ3yCE2HonIbvLz8xEaGoply5ZZtH56ejqeeOIJ9OnTB0ePHsXUqVPxwgsvYMeOHQ6uKRHVNXUpnzZv3ozY2FjEx8fjyJEjCA0NRXR0NK5cuWJy/Y0bN2LmzJmIj49HWloaVq9ejc2bN+ONN96o5ZoTuTd3yCFBFEXRaUcnIrclCAK++uorDBo0yOw6r7/+OrZt24YTJ04Yy4YNG4acnBxs3769FmpJRHWRu+dTREQEHnjgAXz00UcAAIPBgODgYLz88suYOXNmpfVjYmKQlpaG5ORkY9n06dNx4MAB/PLLL7VWb6K6RK455OGUo7oog8GAS5cuoUGDBhAEwdnVIaqWKIq4efMmmjZtCoXCtoEERUVF0Ol0VR7jzr8HjUYDjUZj0/EqSk1NRVRUlKQsOjoaU6dOrfG+a8OyZcuwePFiaLVahIaGYunSpejWrZvZ9RMTE7FixQpkZGTA398f//jHP5CQkABPT0+LjseMIjlhPjmHTqfD4cOHERcXZyxTKBSIiopCamqqyW169OiBzz77DAcPHkS3bt1w7tw5fP/99xg5cqTZ4xQXF6O4uNj43mAwIDs7G3fddRfziWTBkoxyZgYBrplDbDxWcOnSJQQHBzu7GkRWy8zMRPPmza3erqioCEFevsiF+WCsX78+bt26JSmLj4/Hm2++afXx7qTVahEYGCgpCwwMRF5eHgoLC+Hl5VXjYzhK+bCwpKQkREREIDExEdHR0Th9+jQCAgIqrV8+LGzNmjXo0aMHzpw5gzFjxkAQBCxZssSiYzKjSI6YT7Xr2rVr0Ov1Jut+6tQpk9uMGDEC165dQ69evSCKIkpLSzFx4sQqh60mJCRg3rx5dq07kTOYyyhnZxDgmjnExmMFDRo0AFD2S+Tj4+Pk2hBVLy8vD8HBwcbfXWvpdDrkQodEVU94mYiDQpRi6q29lf4m7NWjJmdLlizB+PHjMXbsWABAUlIStm3bhjVr1pgcFrZv3z707NkTI0aMAACEhIRg+PDhOHDggMXHZEaRnDCf5CMlJQULFizA8uXLERERgbNnz2LKlCmYP38+5syZY3KbuLg4xMbGGt/n5uaiRYsWzCeSjeoyihlkGhuPFZRfdvbx8WHwkazUdIiQt0IFb6FyHAiiY/8mgoKCkJWVJSnLysqCj4+Py/bqA84bFnbz5k0AzCiSF+ZT7fL394dSqTRZ96CgIJPbzJkzByNHjsQLL7wAAOjcuTPy8/MxYcIEzJo1y+SQPnND85hPJDfVZZSzMghwzRzibKtEBJVKMLs4UmRkpGSCBgDYtWsXIiMjHXrcmqpqWJhWqzW5zYgRI/DWW2+hV69eUKlUaNOmDR5++OFqh4X5+voaFw5ZpbqI+WQdtVqN8PBwSd0NBgOSk5PN1r2goKBSA1GpVAIou6eLqC5zVgYBrplDbDwSETxUgtnFGrdu3cLRo0dx9OhRAGVTTB89ehQZGRkAyoY5jRo1yrj+xIkTce7cOcyYMQOnTp3C8uXL8fnnn2PatGl2OzdXUXFY2JEjR7B161Zs27YN8+fPN7tNXFwccnNzjUtmZmYt1pjINTCfrBcbG4tVq1bh008/RVpaGiZNmoT8/HzjMPtRo0ZJRk4MGDAAK1aswKZNm5Ceno5du3Zhzpw5GDBggLERSVRX2SuDAPfIIQ5bJSIoBMDURGMKg3X7OXToEPr06WN8X34/zOjRo7Fu3TpcvnzZGJAA0KpVK2zbtg3Tpk3DBx98gObNm+OTTz5BdHS0TedRW5w9LIyoLmE+WW/o0KG4evUq5s6dC61Wi7CwMGzfvt04WiIjI0OSObNnz4YgCJg9ezYuXryIxo0bY8CAAXjnnXecdQpELsNeGQS4Rw6x8UhEZcMvFJV70FQG63rVHn744SqHOK1bt87kNr/99ptVx3G2isPCyp/PVD4sLCYmxuQ2HBZGZBvmk21iYmLM5lFKSorkvYeHB+Lj4xEfH18LNSOSF3tlEOAeOcTGo5XWKvoZX481JFexJpF8KFUCPEwEo9KGYKwtBoMBP/74I37++WdcuHABBQUFaNy4Me677z5ERUU5/P7A2NhYjB49Gl27dkW3bt2QmJhYaVhYs2bNkJCQAKBsWNiSJUtw3333GWcz5LAwourJMZ8A52cUEdkHM0iK9zwSERQKQKEQTCzOrlllhYWFePvttxEcHIzHH38c//3vf5GTkwOlUomzZ88iPj4erVq1wuOPP479+/c7rB5Dhw7Fe++9h7lz5yIsLAxHjx6tNCzs8uXLxvVnz56N6dOnY/bs2ejYsSPGjRuH6OhofPzxxw6rIzlGSkpKpSs35DhyyifAdTKKXAczQ96YQVK88khE8PAQ4KGs3IPmoXe9XrW7774bkZGRWLVqFR555BGoVKpK61y4cAEbN27EsGHDMGvWLIwfP94hdeGwMCLHk1M+Aa6VUURUc8wgKTYercShquSOVCoBKhPBaGqMv7Pt3LkTHTp0qHKdli1bIi4uDq+++qrkxnMikh855RPAjCJyN8wgKTYeiejvIRkmyl1wHpfqArGi8ucpEpF8ySmfAGYUkbthBkmx8UhEZTeDm+hVU7por1q5gwcPIjU1FVqtFgAQFBSEyMhIdOvWzck1IyJ7kWs+AcwoInfADJJi41FmONsrOUL5zd+VykXXDMYrV67g6aefxt69e9GiRQvjJDVZWVmYNm0aevbsiS+//BIBAQFOrikR1ZTc8glgRhG5E2aQlIvOE0REtUnlIZSN6b9z8XDNYHzppZeg1+uRlpaG8+fP48CBAzhw4ADOnz+PtLQ0GAwGTJ482dnVJCI7kFs+AcwoInfCDJLilUcigodKgIeJEPQQXDMYd+zYgZ9++gnt27ev9Fn79u3x4Ycf4uGHH679ihGR3cktnwBmFJE7YQZJyebKY0JCAh544AE0aNAAAQEBGDRoEE6fPi1Zp6ioCJMnT8Zdd92F+vXr4+mnn0ZWVpaTauwYYw3JxoXIXspvBje1uCKNRoO8vDyzn9+8eRMajaYWa0REjiK3fAKYUUTuhBkk5cKnLfXjjz9i8uTJ2L9/P3bt2oWSkhI8+uijyM/PN64zbdo0/N///R+++OIL/Pjjj7h06RKGDBnixFoTyYPCQzS7uKKhQ4di9OjR+OqrryThmJeXh6+++gpjx47F8OHDnVhDIrIXueUTwIwicifMICnZDFvdvn275P26desQEBCAw4cP48EHH0Rubi5Wr16NjRs3om/fvgCAtWvXokOHDti/fz+6d+/ujGoTyYJCKUKhrByCCtE1g3HJkiUwGAwYNmwYSktLoVarAQA6nQ4eHh4YN24c3nvvPSfXkojsQW75BDCjiNwJM0hKNo3HO+Xm5gIAGjVqBAA4fPgwSkpKEBUVZVznnnvuQYsWLZCammqy8VhcXIzi4mLj+6ou75pSceZToGaznzpqFtWa7pezu9YNgkKEwsQDiwQXfYiRRqPBihUrsHDhQhw+fFgyBXV4eDh8fHycXEMishe55RPAjCJyJ8wgKVk2Hg0GA6ZOnYqePXuiU6dOAACtVgu1Wo2GDRtK1g0MDDT+wO6UkJCAefPmObq6RC5PoTQ9/MKVe9UAwMfHB3369HF2NYjIgeSaTwAzisgdMIOkZNl4nDx5Mk6cOIFffvmlRvuJi4tDbGys8X1eXh6Cg4Mt3t6eV+IcdVWvpvvl1ca6QelRtlQqd/1cJCI3x3wiImdiBknJrvEYExOD7777Dj/99BOaN29uLA8KCoJOp0NOTo7k6mNWVhaCgoJM7kuj0XC2MyIAgiBCEEwMyTBRRkRUm5hPRORMzCAp2cy2KooiYmJi8NVXX2HPnj1o1aqV5PPw8HCoVCokJ9++Unb69GlkZGQgMjKytqtLJCtynEmMiOoG5hMRORMzSEo2Vx4nT56MjRs34ptvvkGDBg2M9zH6+vrCy8sLvr6+GDduHGJjY9GoUSP4+Pjg5ZdfRmRkpNvOtMrJbMheBEXZYqqciMiZmE9E5EzMICnZnPaKFSuQm5uLhx9+GE2aNDEumzdvNq7z/vvv48knn8TTTz+NBx98EEFBQdi6dasTa00kD2Xj+UUTi7NrVrUjR47g+PHjxvfffPMNBg0ahDfeeAM6nc6JNSMie5FrPgHMKCJ3wAySkk3jURRFk8uYMWOM63h6emLZsmXIzs5Gfn4+tm7davZ+RyK6TaEQjc8xkiwuPA01ALz44os4c+YMAODcuXMYNmwYvL298cUXX2DGjBlOrh0R2YNc8wlgRhG5A2aQlGwaj1TZWEOycamptYp+xsUR65NrExSi2cWVnTlzBmFhYQCAL774Ag8++CA2btyIdevW4csvv3Ru5cjtpaSkOLsKdYJc8wlgRhG5A2aQFBuPRASFyeEYtt0MvmzZMoSEhMDT0xMRERE4ePBglesnJiaiffv28PLyQnBwMKZNm4aioiKLjiWKIgwGAwBg9+7dePzxxwEAwcHBuHbtmtV1JyLXY898AphRRGQdZpAUG49EZHo4xt+LNTZv3ozY2FjEx8fjyJEjCA0NRXR0NK5cuWJy/Y0bN2LmzJmIj49HWloaVq9ejc2bN+ONN96w6Hhdu3bF22+/jX//+9/48ccf8cQTTwAA0tPTERgYaFXdicg12SufAGYUEVmPGSQlg1s9yRHuHG5q7dBXOc/u6kqz1LpKXRSKssVUOQDk5eVJys09I3XJkiUYP348xo4dCwBISkrCtm3bsGbNGsycObPS+vv27UPPnj0xYsQIAEBISAiGDx+OAwcOWFTvxMREPPvss/j6668xa9YstG3bFgCwZcsW9OjRw6J9EJFrs1c+AcwoIrIeM0iKVx6JqNpnGAUHB8PX19e4JCQkVNqHTqfD4cOHERUVdXu/CgWioqKQmppq8rg9evTA4cOHjUM2zp07h++//944rKI6Xbp0wfHjx5Gbm4v4+Hhj+eLFi/Hpp59afP5E5LrskU8AM4qIbMMMkuKVRyICFAKgFEyXA8jMzISPj4+x2FSP2rVr16DX6ysNgwgMDMSpU6dMHnbEiBG4du0aevXqBVEUUVpaiokTJ1o8HCMzMxOCIKB58+YAgIMHD2Ljxo3o2LEjJkyYYNE+iMjF2SGfAGYUEdmIGSTBxmMd5Ywhkq4yRLO2j13VEGFnD5stJ6iUEFTKyuWGsl41Hx8fSTDaS0pKChYsWIDly5cjIiICZ8+exZQpUzB//nzMmTOn2u1HjBiBCRMmYOTIkdBqtXjkkUdw7733YsOGDdBqtZg7d67d60xEtctZ+QQwo4iIGXQni4etlpSUYMaMGWjbti26deuGNWvWSD7PysqCUln5B0tErk9QCRBUChOLiZ42M/z9/aFUKpGVlSUpz8rKMvu81Tlz5mDkyJF44YUX0LlzZwwePBgLFixAQkKCcXawqpw4cQLdunUDAHz++efo1KkT9u3bhw0bNmDdunUW152IXJc98glgRhGRbZhBUhY3Ht955x2sX78eEydOxKOPPorY2Fi8+OKLknVE0fWfd0JEJigE84uF1Go1wsPDkZx8+2qqwWBAcnIyIiMjTW5TUFAAxR13oZd3QlmSJyUlJcbhIbt378bAgQMBAPfccw8uX75scd2JyIXZIZ+AupdR1j4OICcnB5MnT0aTJk2g0Whw99134/vvv3doHYlkgRkkYfGw1Q0bNuCTTz7Bk08+CQAYM2YMHnvsMYwdO9Z4FVIQrPshkuu4c2hlOVcZVilncvgZCh5lvWiVyvXWzakVGxuL0aNHo2vXrujWrRsSExORn59vnFVs1KhRaNasmfFm8gEDBmDJkiW47777jMMx5syZgwEDBlg0kuHee+9FUlISnnjiCezatQvz588HAFy6dAl33XWXVXUnItdkr3wC6k5GlT8OICkpCREREUhMTER0dDROnz6NgICASuvrdDo88sgjCAgIwJYtW9CsWTNcuHABDRs2dFgdieSCGSRlcePx4sWL6NSpk/F927ZtkZKSgr59+2LkyJFYtGiRTRUgIuczO55fX/2QiIqGDh2Kq1evYu7cudBqtQgLC8P27duNN4dnZGRIetBmz54NQRAwe/ZsXLx4EY0bN8aAAQPwzjvvWHS8hQsXYvDgwVi8eDFGjx6N0NBQAMC3335rHKbhSMuWLcPixYuh1WoRGhqKpUuXVnncnJwczJo1C1u3bkV2djZatmyJxMREi2dNI6qL7JVPQN3JKGsfB7BmzRpkZ2dj3759UKlUAMoeCUBEzKA7CaKFY01bt26NVatWoV8/6RWqS5cuoU+fPmjZsiWSk5Oh1+ttqogryMvLg6+vL3Jzcx1246urqo0rj64yYY47qenvbPn2V+Y9AR9PVeXPi0oQEL/Npf8m9Ho98vLy4OfnZyw7f/48vL29Tfaw28vmzZsxatQoSc/+F198UWXPfs+ePREQEIA33nhD0rNfHubVqcsZ5UpSUlKMrx9++GGn1cPVMZ/K1HZG6XQ6eHt7Y8uWLRg0aJCxfPTo0cjJycE333xTaZvHH38cjRo1gre3N7755hs0btwYI0aMwOuvv2726kZxcTGKi4uN7/Py8hAcHOzy/x7OUJ4ZzAvXUl1GMYNMs/jKY9++fbFx48ZKjcemTZtiz549/INwUbY02CquZ22j0tz6Ve3XHRuorlIPS5Xf/F2p3IYhGbVNqVRKAhGonR5z9uwT1Q455xNQ+xlly+MAzp07hz179uDZZ5/F999/j7Nnz+Kll15CSUmJ5NlwFSUkJGDevHl2rz+Rq2EGSVnceJwzZ47Z0GnWrBl+/PFH7Nq1y+aKEJETeSgBE0MyUGr9kIzatmXLFnz++efIyMiATqeTfHbkyBGHHLP8Qb9xcXHGsuoe9Pvtt98iMjISkydPrlHPPlGdI+N8ApyTUdYyGAwICAjAypUroVQqER4ejosXL2Lx4sVmG49xcXGIjY01vi+/8kjkdphBEhY3Hlu2bImWLVua/bxp06YYPXq01RUgx7L0CqG59Wp61cxR+7X2eLWtpvWo7SuXglKAYOIBuKbKXMmHH36IWbNmYcyYMfjmm28wduxY/Pnnn/j1118xefJkhx2XPftEtUeu+QQ4J6NseRxAkyZNoFKpJB1ZHTp0gFarhU6ng1qtrrSNRqMx+zB0InfCDJKSx/VWInIslcL84sKWL1+OlStXYunSpVCr1ZgxYwZ27dqFV155Bbm5uc6unkTFnv3w8HAMHToUs2bNQlJSktlt4uLikJuba1wyMzNrscZELkKm+QQ4J6NseRxAz549cfbsWclz486cOYMmTZqYbDgS1SnMIAnXP2sicjhBIZhdXFlGRgZ69OgBAPDy8sLNmzcBACNHjsR//vMfhx3X1p79u+++22zPvikajQY+Pj6ShaiukWs+Ac7LqNjYWKxatQqffvop0tLSMGnSpEqPA6g47H7SpEnIzs7GlClTcObMGWzbtg0LFixw6AgOIrlgBklZPGyV3MudQyHNDZOs7YltXGmiGWc++7LWz12tANQmxvO7+OzJQUFBxkdetGjRAvv370doaCjS09MteniurSr27JfPZljesx8TE2Nym549e2Ljxo0wGAzGabjZs09kAZnmE+C8jLL2cQDBwcHYsWMHpk2bhi5duqBZs2aYMmUKXn/9dYfVkUg2mEESbDwSkfkH4Ja49uCEvn374ttvv8V9992HsWPHYtq0adiyZQsOHTqEIUOGOPTY1j7od9KkSfjoo48wZcoUvPzyy/jjjz+wYMECvPLKKw6tJ5HcyTWfAOdmVExMjNnOrIqPmykXGRmJ/fv3O7RORHLEDJKyufGo0+lw5coVyfh4AGjRooWtuyQiZ1EIZYupche2cuVKYwZNnjwZd911F/bt24eBAwfixRdfdOix2bNPVEtkmk+AczOKiOyEGSRhdePxjz/+wPPPP499+/ZJykVRhCAI0MvgEi5VVpNZUR31LMmq9lsbw16tfZals4fZ1oSgUkIwMQ21qTJXolAoJA20YcOGYdiwYbV2fPbsEzmeXPMJcH5GEVHNMYOkrG48jhkzBh4eHvjuu+/QpEkTCILrt7qJqBoeyrLFVLmLOXbsmMXrdunSxYE1IaJaIaN8AphRRG6HGSRhdePx6NGjOHz4MO655x6rD0ZELkqhKFtMlbuYsLAwCIJQ7Y3eHAlB5CZklE8AM4rI7TCDJKxuPHbs2BHXrl2z+kDkXiwZagpYNjzVnJpsW9U2tgwvtWSYrKwpzfSqKV2vVy09Pd3ZVSCi2iSjfAKYUURuhxkkYXXjceHChZgxYwYWLFiAzp07Q6VSST7nc8iIZEhGvWotW7Z0dhWIqDbJKJ8AZhSR22EGSVjdeIyKigIA9OsnveLCCXOIZMxDYWY8v2sGY7mEhAQEBgbi+eefl5SvWbMGV69e5UymRO5ApvkEMKOI3AIzSMLqxuMPP/xg9UHI9Vk7S6mlM5HWZFinpbOtOmrmVUu2t3Y2Wlvr4nAyuxm83Mcff4yNGzdWKr/33nsxbNgwfjEjcgcyzSeAGUXkFphBElY3Hh966CGrD0JELk5mQzLKabVaNGnSpFJ548aNcfnyZSfUiIjsTqb5BDCjiNwCM0jC6sYjAOTk5GD16tVIS0sDUNZ6ff755+Hr62tTJYjIuQSlEoKJG79NlbmS4OBg7N27F61atZKU7927F02bNnVSrYjInuSaTwAzisgdMIOkrG48Hjp0CNHR0fDy8kK3bt0AAEuWLME777yDnTt34v7777epIuRclg5DNbW+pUNTrT2GpetYUhdbhs9aMgTWXkNbnU7pAXiYiAOla9/DPH78eEydOhUlJSXo27cvACA5ORkzZszA9OnTnVw7IrILmeYTwIwicgvMIAmrG4/Tpk3DwIEDsWrVKnj8/YMsLS3FCy+8gKlTp+Knn36yqSJE5EQKoWwxVe7CXnvtNVy/fh0vvfQSdDodAMDT0xOvv/464uLinFw7IrILmeYTwIwicgvMIAmbrjxWbDgCgIeHB2bMmIGuXbvaVAkicjKZ3gwuCAIWLlyIOXPmIC0tDV5eXmjXrh00Go2zq0ZE9iLTfAKYUURugRkkYXXj0cfHBxkZGbjnnnsk5ZmZmWjQoIHNFSHXZMlQU0uHZdZk5lVb9mvL0Fpz+7XnLK4uyUNpekiGR6nVu1q2bBkWL14MrVaL0NBQLF261DjE3ZScnBzMmjULW7duRXZ2Nlq2bInExEQ8/vjjFh+zfv36eOCBB6yuKxHJgB3zCWBGEZGVmEESVk8TNHToUIwbNw6bN29GZmYmMjMzsWnTJrzwwgsYPny4XSpFRLWsfEiGqcUKmzdvRmxsLOLj43HkyBGEhoYiOjoaV65cMbm+TqfDI488gvPnz2PLli04ffo0Vq1ahWbNmpk9xsSJE/HXX39ZXJ8NGzZYdQ5E5GLslE8AM4qIbMAMkrD6yuN7770HQRAwatQolJaWtbhVKhUmTZqEd99919rdkUzVdMKcml6FtNckOVU9P9KSCXDc5iqk2ZvBrYuIJUuWYPz48Rg7diwAICkpCdu2bcOaNWswc+bMSuuvWbMG2dnZ2LdvH1QqFQAgJCSkymM0btwY9957L3r27IkBAwaga9euaNq0KTw9PXHjxg38/vvv+OWXX7Bp0yY0bdoUK1eutOociMjF2CmfAGYUEdmAGSRh9ZVHtVqNDz74ADdu3MDRo0dx9OhRZGdn4/333+cYfiK5qqZXLS8vT7IUFxdX2oVOp8Phw4cRFRV1e7cKBaKiopCammrysN9++y0iIyMxefJkBAYGolOnTliwYAH0evMzmM2fPx9nzpxBz549sXz5cnTv3h0tWrRAQEAA2rdvj1GjRuHcuXNYuXIl9u/fjy5dutTwh0NETmWHfAKYUURkI2aQhE3PeQQAb29vdO7c2dbNiciVKD1M96D9XRYcHCwpjo+Px5tvvikpu3btGvR6PQIDAyXlgYGBOHXqlMnDnjt3Dnv27MGzzz6L77//HmfPnsVLL72EkpISxMfHm61uYGAgZs2ahVmzZuHGjRvIyMhAYWEh/P390aZNGwiC68+ARkQWskM+AcwoIrIRM0jCosbjkCFDsG7dOvj4+GDIkCFVrrt161abK0Py4ewJc2qyL1uGz1oyKY+sVROMmZmZ8PHxMRbba5SBwWBAQEAAVq5cCaVSifDwcFy8eBGLFy+uMhQr8vPzg5+fn13qQ0QuyEn5BDCjiAjMoDtY1Hj09fU1tlB9fHzYY0bkbgQBEEyMYq/wd18xGE3x9/eHUqlEVlaWpDwrKwtBQUEmt2nSpAlUKhWUytvTXXfo0AFarRY6nQ5qtdrKEyEit2OHfAKYUURkI2aQhEWNx7Vr1xpfr1u3zlF1ISJnUXiULabKLaRWqxEeHo7k5GQMGjQIQFmPWXJyMmJiYkxu07NnT2zcuBEGgwEKRVkwnzlzBk2aNOGXMiIqY4d8AphRRGQjZpCE1fc89u3bF1u3bkXDhg0l5Xl5eRg0aBD27Nljr7qRC7N0xlFHPduxJqqqkyXDUN1mqGpF1QzJsFRsbCxGjx6Nrl27olu3bkhMTER+fr5xVrFRo0ahWbNmSEhIAABMmjQJH330EaZMmYKXX34Zf/zxBxYsWIBXXnmlxqdERG7CTvkEMKOIyAbMIAmrzzolJQU6na5SeVFREX7++We7VIqIapmgMDMkw7oJmYcOHYqrV69i7ty50Gq1CAsLw/bt2403h2dkZBh7zoCym8x37NiBadOmoUuXLmjWrBmmTJmC119/vUanQ0RuxE75BDCjiMgGzCAJixuPx44dM77+/fffodVqje/1ej22b99e5QMriciFCWaGZAjW96rFxMSYHX6RkpJSqSwyMhL79++3+jgAUFhYCFEU4e3tDQC4cOECvvrqK3Ts2BGPPvqoTfskIhdjx3wCmFFEZCVmkITFZx0WFgZBECAIAvr27Vvpcy8vLyxdutSmStjbsmXLsHjxYmi1WoSGhmLp0qXo1q2bs6vltqoaxumhuj25ksH8I2lur2MQ7VElm9kyi6xbUCjKFlPlLuypp57CkCFDMHHiROTk5CAiIgIqlQrXrl3DkiVLMGnSJGdXkYhqSqb5BDCjiNwCM0jC4rNOT0/Hn3/+CVEUcfDgQaSnpxuXixcvIi8vD88//7zVFbC3zZs3IzY2FvHx8Thy5AhCQ0MRHR2NK1euOLtqRC5LUHhAUKhMLDY/CrZWHDlyBL179wYAbNmyBYGBgbhw4QLWr1+PDz/80Mm1IyJ7kGs+AcwoInfADJKy+KxbtmwJoGxWIFe2ZMkSjB8/3njjaVJSErZt24Y1a9Zg5syZTq4dkYuy00xita2goAANGjQAAOzcuRNDhgyBQqFA9+7dceHCBSfXjojsQqb5BDCjiNwCM0jC5rP+/fffkZGRUWnynIEDB9q6yxrT6XQ4fPgw4uLijGUKhQJRUVFITU2ttH5xcTGKi4uN7/Py8mqlnnVJvfq3n0tT8ep+xT4Ig/72UNXiYrHCOhVe3zHk1dnDW92OTIdktG3bFl9//TUGDx5svKEcAK5cuWLRM5eISAZkmk8AM4rILTCDJKxuPJ47dw6DBw/G8ePHIQgCRLHsS7zw94My9XoLbmxzkGvXrkGv1xtnLCoXGBiIU6dOVVo/ISEB8+bNq63qEbkumfaqzZ07FyNGjMC0adPQt29fREZGAijrXbvvvvucXDsisguZ5hPAjCJyC8wgCaubzFOmTEGrVq1w5coVeHt74+TJk/jpp5/QtWtXkzMEubK4uDjk5uYal8zMTGdXicg5yp9hZGpxYf/4xz+QkZGBQ4cOYceOHcbyfv364f3333dizYjIbmSaT4DzM2rZsmUICQmBp6cnIiIicPDgQYu227RpEwRBMD7InKhOYwZJWH3Wqamp2LNnD/z9/aFQKKBQKNCrVy8kJCTglVdewW+//WZTRezB398fSqUSWVlZkvKsrCwEBQVVWl+j0UCj0dRW9eqkIdd3mCw/1fcp4+tbebeHoF76q/IzRAEg90bpHSUVZnGthSGs5mZedZvZWQXBzDOMhMplLiYoKAi3bt3Crl278OCDD8LLywsPPPCAcTSEI9k6s/OmTZswfPhwPPXUU/j6668dXk8iWZNxPgHOy6jyCQSTkpIQERGBxMREREdH4/Tp0wgICDC73fnz5/Hqq68aJ9kgqvOYQRJWX3nU6/XGGy/9/f1x6dIlAGUT6pw+fdqmStiLWq1GeHg4kpNvf4k3GAxITk42XqYl1ycC0KsUKNF4QOftgRKNBwxqJXiXowOVD8kwtbiw69evo1+/frj77rvx+OOP4/LlywCAcePGYfr06Q49tq0zO/OLGZGVZJpPgHMzquIEgh07dkRSUhK8vb2xZs0as9vo9Xo8++yzmDdvHlq3bu3Q+hHJBjNIwuqz7tSpE/73v/+hVatWiIiIwKJFi6BWq7Fy5UqXCJrY2FiMHj0aXbt2Rbdu3ZCYmIj8/Hzj7Ktkfxu8HjG+buinlHzWtuPtK7tBbQuMr1sPMH2TbtsCFa6InsgR1bh5U4ReANQwoORAKTzzdfC6WQyPEj1uXL99JfJmnnX32Va8QljxyuGdn1m7L1mT6c3g06ZNg0qlQkZGBjp06GAsHzp0KGJjY/Gvf/3LYce2ZWbnil/Mfv75Z+Tk5DisfkRuQ6b5BDgvo6ydQLDcW2+9hYCAAIwbNw4///xzlcfgpINUZzCDJKxuPM6ePRv5+fkAykLmySefRO/evXHXXXdh8+bNVlfA3oYOHYqrV69i7ty50Gq1CAsLw/bt2ytNokOuJ8fggbOGesgV1SgQlShR6qERDSgWDSior4RBqYBe7YH61/MB3DmMlWpCFEXj5Fd3lruynTt3YseOHWjevLmkvF27dg6dBr82vpgB/HJGBMg3nwDnZZS1EwgCwC+//ILVq1fj6NGjFh2Dkw5SXcEMkrK68RgdHW183bZtW5w6dQrZ2dnw8/OrlXuMLBETE4OYmBhnV4OsUGhQ4E9dA+QaPFACATfhgWJBhSKFBxQAioNK4XP9FoAiKOtrIKIYrvHb5h4M0MOAyldwTZW5kvz8fHh7e1cqz87Oduj9zLXxxQzglzMiQL75BDgvo6x18+ZNjBw5EqtWrYK/v79F28TFxSE2Ntb4Pi8vD8HBwY6qIpHTMIOkrG48fvbZZxg8eDDq1atnLGvUqJFNByf38GzhLrOf5bz4qPG1b9Lt9cSMJcbXeYHN8FdmAa7+kQdDsQoXLuSioKAUOtx+GKRHUDFuBqpwV/ENNDfocOmqB5QlZZ+XllZ4TmSR6edEVnTnUFUCRNEAUTSYLHdlvXv3xvr16zF//nwAZY8MMhgMWLRoEfr06ePk2t1myxczgF/OiAD55hPgvIyydgLBP//8E+fPn8eAAQOMZYa/H8js4eGB06dPo02bNpJtOOkg1RXMICmrG4/Tpk3DxIkTMXDgQDz33HOIjo6GUqmsfkMiM0p0BlzJKsSVy4XIvXETt25V7skphQK3BA3+1NwFFANQF0FUGCAYDBCh51XIGjKIBhhEE71qLh6MixYtQr9+/XDo0CHodDrMmDEDJ0+eRHZ2Nvbu3euw49bGFzOAX86IAPnmE+C8jKo4gWD54zbKJxA0NTLrnnvuwfHjxyVls2fPxs2bN/HBBx+w04rqNGaQlNV3el6+fNn4/J9nnnkGTZo0weTJk7Fv3z6bKkB0/VohTp/MgfZSscmGY0WFggqnNXfh8j3+yGnmg5uBPigKrAe9hh0YNVE+JMPU4so6deqEM2fOoFevXnjqqaeQn5+PIUOG4LfffjPZGLMXa2d2Lv9idvToUeMycOBA9OnTB0ePHuUXM6IqyDWfAOdlFFA2geCqVavw6aefIi0tDZMmTZJMIDhq1Cjjfduenp7o1KmTZGnYsCEaNGiATp06Qa1WO7SuRK6MGSRl9ZVHDw8PPPnkk3jyySdRUFCAr776Chs3bkSfPn3QvHlz/PnnnzZVhNxTw4933n5T8JXx5WZd2b1it7LycXT3NfiipNLVQ5Xkze13JVAht5M/GhTlw6+4AFdPKKHwU8PrWj5w7fZzIgsLqr+R2dLZUt3meY5myHlIhq+vL2bNmlXrx61uZudRo0ahWbNmSEhIMH4xq6hhw4YAUKmciKTknE+A8zKqugkEMzIyoJDBbJFEzsYMkqrRA0q8vb0RHR2NGzdu4MKFC0hLS7NXvagOKMguxJUjV+GLUquHnZYq1bihKoVeoURpvZsAAGUDDcRrOg5htYFB1JsZkuF6vWrHjh1Dp06doFAocOzYsSrX7dKli8PqwS9mRLVDTvkEuE5GAVVPIJiSklLltuvWrbN/hYhkiBkkZVPjsfyK44YNG5CcnIzg4GAMHz4cW7ZssWV3VAfp9XrknM1DSbb1DcdyeR5qaAwG6Py84FFQghIvNQSVEkKJa/4xuzI5zSQWFhYGrVaLgIAAhIWFQRAEk9NlC4IAvd6x9ecXMyLHk1M+Aa6VUURUc8wgKasbj8OGDcN3330Hb29vPPPMM5gzZ47Je3yIAKBwzhPG117ztxlfP9roKj6/8Tlu4qZ0gxKTLyuOWjUWiFAh39cLngU34A0vNCjQ4fofApRW/B3cOfOquSGp7jhUtSI5PcMoPT0djRs3Nr4mIvcmp3wCmFFE7oYZJGV141GpVOLzzz/nLKtUI9nZ2cjNza3xfvKLgFIvNeoXFKNBQTEEM4/noKrJqVetZcuWxtcXLlxAjx494OEhjbLS0lLs27dPsi4RyZOc8glgRhG5G2aQlFU35JSUlECr1aJdu3ZsOJLNRFHE9evXUVJSUv3KFij2UKJYrYK6qBSCzjX/kF1d+TTUlRfXvhm8T58+yM7OrlSem5vrUs95JCLbyTWfAGYUkTtgBklZ1XhUqVTV3nhJVJEmoplxKVdcXIyNhw+gBH8PTS2psFiswkYeSigUBjQ06CAaRBj+XswZa0g2u6xV9DMudcrfM4nducCGYFy2bBlCQkLg6emJiIgIHDx40KLtyh8BVP5MMouqLYoQhMp3zV6/fh316tWzeD9E5MLsmE8AM4qcJyUlpdr74ckFMYMkrB62+txzz2H16tV49913bTogUVFRETQ6XfUrWkoAVLpSqDhk1Wb2GpKxefNmxMbGIikpCREREUhMTER0dDROnz6NgIAAs9udP38er776Knr37m3RcYYMGQKg7GbvMWPGQKPRGD/T6/U4duwYevToYVXdicg12XPIGDOKiKzFDJKyuvFYWlqKNWvWYPfu3QgPD6/Ual2yZIlNFaG6Q6fTQSi17/BSvYcCgoveuCwH9roZfMmSJRg/frzxWYdJSUnYtm0b1qxZg5kzZ5rcRq/X49lnn8W8efPw888/Iycnp9rj+Pr6GuvXoEEDeHl5GT9Tq9Xo3r07xo8fb1Xdicg12XOyCmYUEVmLGSRldePxxIkT/9/evcdFVeZ/AP/MDAwXlYsioIiXtDRvUBqGl8okMcuy2g2t9ZZZFpSJrcqaoraGt3UpM10ttXZztcyulpokWUrrT83ybpoKXgYvyEUQ5nZ+fxAHjszAzDDDmTPzef9e5/WbeTgz53uS+SzPmec8D+68804AwIkTJyQ/s/S1KHk386Xr4mNVbuWFBd8SE9TqGh+4mjOpOnIbpEmA8boZBVeMNu1e15DUmrOq1tzP02dbrW8No+LiYkm7n5+f5CoWUHlRYN++fUhLSxPb1Go1EhISkJOTY/XYc+fORXh4OMaPH48ffvjBpnrXrFkDAGjfvj1effVVDv8i8mDOyCeAGUVEjmEGSdndedyxY4fTDk7eyU8LCE68zqAxmBB4vQJQ8+KFo0yCGSYLY/er2qKjoyXt6enpmD17tqTtypUrMJlMiIiIkLRHRETg2LFjFo/7448/4r333sOBAwccqjs9Pd2h1xGRcjgjnwBmFBE5hhkkZXfnscrJkydx6tQp3HPPPQgICLB6QybRzVQqFcyBvkCpbd8U1ifw+g0ElnKZjoYwCSqYLPToq9ry8vIQFBQktlu6omavkpISjBo1CqtWrUJYWJjNr7vzzjuRlZWF0NBQ3HHHHXXmzv79+xtcJxHJS458AphRRFSJGSRld+fx6tWrePLJJ7Fjxw6oVCr89ttvuOWWWzB+/HiEhobiH//4h91FkOfyeWad+Fgo/E/l/y83YVjPcvxv1w2Ul9/0Al/YqHLHoKAgqA9exo1LFbimq4DZibdSWhuq6onDWY1mFYzm2uFS1RYUFCQJRkvCwsKg0WiQn58vac/Pz0dkZGSt/U+dOoUzZ85g2LBhYpvZXHkVz8fHB8ePH0fHjh1rve7RRx8Vg9meGceISJmckU8AM4qIHMMMkrK78zh58mT4+voiNzcXt99+u9ielJSE1NRUdh6pXmq1CsHB/ohuF4STJ4rh6Dw3zZo1Q3h4OApvHIZvqR783ttxRrMKhjqC0RZarRa9evVCVlaWGFZmsxlZWVlISUmptX+XLl1w8OBBSdtrr72GkpISvPnmm7WGgVSpOQSDQ8KIPJ8z8glgRhGRY5hBUnZ3Hrdt24atW7eiTZs2kvZbb70VZ8+edVph5Bm+7TBUfPzA6a8BAH6CgHDDBRS3OgmzMQ+nTlke5y0l/UpSfeMGgvMvQ3P8BJpdL0cTwQyNnxqoMW2ytclvbGXtG0ZP+baxJrNQuVlqt0dqairGjBmD3r17Iy4uDpmZmSgtLRVnFRs9ejSioqKQkZEBf39/dO/eXfL6kJAQAKjVTkTey1n5BDCjiMh+zCApuzuPpaWlCAwMrNVeUFDgtDG+5NlUKhVatGiB4uJiFBQUoIWfGVcr1Da/XqMBIkpL0byiHBrBDE3hDagNji3USpUMggoGC+P5LbXVJSkpCZcvX8asWbOg0+kQGxuLLVu2iDeH5+bmQq22/d/aktDQUJvvry4oKGjQsYhIfs7KJ4AZRUT2YwZJ2d15HDBgAD744AO8/vrrAP6Y/MRsxsKFCzFw4EC7CyDv5O/vj9atW+Pq1atQXzLDdE2Fwor6f9HVaiCspT+CcysAFRB8Q4/ikgoOWW0gM1QwWwhBswP/ZVNSUiwOvwCA7OzsOl+7du3aet8/MzPT7pqISLmcmU8AM4qI7MMMkrK787hw4UIMGjQIe/fuhV6vx9SpU3H48GEUFBRg165drqiRFKxqqOrNfuz2MAxaDa61aIqSSxXwi2yKJuFNYAoNQHkT38qvF7U1hqrqDYDRBO31CuCIDqVXKhBwrQzFBTdQeL561h2zDWMIbB126onDU60xWBnPb6lNbmPGjJG7BCJqRErKJ4AZReRpmEFSdnceu3fvjhMnTuDtt99Gs2bNcP36dTz++ONITk5Gq1atXFEjeSiVWYBaEKARgCb516E2CxDMJuhLfVAW4AdNhxAYjUY0bdoUwu5DCLl0HUFFN+BrMMFUZIDG4Og1H7qZycpMYiY3DMbi4mJxVrObF+a9mS2znxGRe1NSPgHMKCJPwwyScmidx+DgYMyYMcORlxKJNEYztOVGGAN8oL2uR8DlUmjVZlQE+KKpbznChtyHkJAQdOrUCQff2QofY3VnsZz3ODqVSajcLLW7m9DQUFy8eBHh4eEICQmxOK6/at1Zk8mJa7cQkSyUlE8AM4rI0zCDpOzuPG7ZsgVNmzZF//79AQDLli3DqlWr0LVrVyxbtgyhoaF2F0HewdLspeXl5bhw4QL0ej0CAgLwXcIrMPv5wBTogwvT/42C88XIrTCheQsf1Pz1LrhqtHgMZ86wau19PVF9axi5k++++w7NmzcHAOzYsUPmaojI1ZSUTwAzisjTMIOk7O48/vWvf8WCBQsAAAcPHkRqaiqmTJmCHTt2IDU1FWvWrHF6keS5qibOKSgoQGlpKcxNtIBZgF9BOVRXbkBTwauyjUFJ4/nvvfdei4+JyDMpKZ8AZhSRp2EGSdndeTx9+jS6du0KAPjkk08wbNgwvPHGG9i/fz+GDh1az6uJavP390erVq2g1+sReKEEMAlQG0wwGtx0PIAHcuYaRo3t2rVreO+993D06FEAQNeuXTFu3DjxqhsRKZuS8wlgRhEpHTNIyu7Oo1arRVlZGQBg+/btGD16NACgefPm9d6USd7N2tBPa0NF1erqKzq6C3qb3teWoaqWhs/WV6OnM1q5quauQzKq7Ny5E8OGDUNwcDB69+4NAHjrrbcwd+5cfPnll7jnnntkrpCIGkqp+QQwo4g8ATNIyu7OY//+/ZGamop+/fphz5492LBhAwDgxIkTaNOmjd0FEJH8lDYko0pycjKSkpKwfPlyaDQaAIDJZMKLL76I5ORkHDx4UOYKiaihlJpPADOKyBMwg6TU9r7g7bffho+PDzZu3Ijly5cjKioKAPDNN99gyJAhdhdARPKrHJKhsrDJXVndTp48iSlTpoiBCAAajQapqak4efKkjJURkbMoNZ8AZhSRJ2AGSdn9zWPbtm3x1Vdf1Wr/5z//6VAB5Nnsnb3UkdlSbTlGXUNVCTCYKzdL7e7szjvvxNGjR9G5c2dJ+9GjRxETEyNTVUTkTErNJ4AZReQJmEFSDq3zaDKZ8Omnn4o3Xt5+++0YPnw4fHwcejsikpkJVtYwavRK6vfrr7+Kj19++WVMmjQJJ0+exN133w0A+Omnn7Bs2TLMnz9frhKJyImUlE8AM4rI0zCDpOzu7R0+fBjDhg1Dfn6+2ItdsGABWrZsiS+//BLdu3d3qBAiko/RylU1oxteVYuNjYVKpYIgVCf51KlTa+331FNPISkpqTFLIyIXUFI+AcwoIk/DDJKyu/P47LPPonv37ti3bx9CQ0MBVE4BO3bsWDz33HPYvXu33UWQ57JlhlVHhqra8r4cqmo7vRnQWAhBvRsG4+nTp+UugYgakZLyCWBGEXkaZpCU3Z3HAwcOYO/evWLHEQBCQ0Mxb9483HXXXU4tjogah5LWMGrXrp3cJRBRI1JSPgHulVHLli3DokWLoNPpEBMTg6VLlyIuLs7ivqtWrcIHH3yAQ4cOAQB69eqFN954w+r+RN6CGSRld+fxtttuQ35+Prp16yZpv3TpEjp16uS0woio8RisXFVTws3gAHDkyBHk5uZCr5euB/rII4+49Lj8w4zI9ZSeT4A8GbVhwwakpqZixYoV6NOnDzIzM5GYmIjjx48jPDy81v7Z2dkYOXIk+vbtC39/fyxYsACDBw/G4cOHxZn1ibwRM0jKps5jcXGx+DgjIwMvv/wyZs+eLbnxcu7cuViwYIHdBZB3smW2VVs1ZHjqzcNkvXV4q1KD8ffff8djjz2GgwcPSsb3q1SVay+ZTK67nZ1/mBE1DqXmEyBvRi1ZsgQTJkzAuHHjAAArVqzA5s2bsXr1akyfPr3W/h9++KHk+bvvvotPPvkEWVlZGD16tMvqJHJ3zCApm9Z5DAkJQWhoKEJDQzFs2DAcOXIETz75JNq1a4d27drhySefxKFDhzBs2DC7CyAi+ZkE65s7mzRpEjp06IBLly4hMDAQhw8fxs6dO9G7d29kZ2e79Ng1/zDr2rUrVqxYgcDAQKxevdri/h9++CFefPFFxMbGokuXLnj33XdhNpuRlWX9gkVFRQWKi4slG5G3UWo+AfJllF6vx759+5CQkCC2qdVqJCQkICcnx6b3KCsrg8FgQPPmzS3+nPlE3oIZJGXTN487duxw6M2JbNHQiW0asp6jt37TeDODWQWNWWWx3Z3l5OTgu+++Q1hYGNRqNdRqNfr37y+OkPj5559dctyqP8zS0tLENmf/YQZUjvSYM2dOg+slUjKl5hMgX0ZduXIFJpMJERERkvaIiAgcO3bMpveYNm0aWrduLemA1sR8Im/BDJKyqfN477332v3GRKQc1q6guftVNZPJhGbNmgEAwsLCcOHCBXTu3Bnt2rXD8ePHXXbcxvjDDADS0tKQmpoqPi8uLkZ0dLRjRRMplFLzCZAvoxpq/vz5WL9+PbKzs+Hv729xH+YTeQtmkJTdE+YAQGFhId577z0cPXoUANCtWzc888wzCA4OdqgIIpKX0QQYLAx7N7rrCrh/6N69O3755Rd06NABffr0wcKFC6HVarFy5UrccsstcpdnlS1/mAGAn58f/Pz8GrEyIvej1HwC5MuosLAwaDQa5OfnS9rz8/MRGRlZ52sXL16M+fPnY/v27ejZs6fV/ZhP5C2YQVJ2dx737t2LxMREBAQEiLMELlmyBPPmzcO2bdtw5513OlQIeRdXrcHIYaiO0QuAytIaRm5+Ve21115DaWkpAGDu3Ll4+OGHMWDAALRo0QIbNmxw2XEb4w8zIqqk1HwC5MsorVaLXr16ISsrC8OHDwcA8R7rlJQUq69buHAh5s2bh61bt6J3794uq49ISZhBUjZNmFPT5MmT8cgjj+DMmTPYtGkTNm3ahNOnT+Phhx/GK6+84lARRCSvqjWMLG32WrZsGdq3bw9/f3/06dMHe/bssbrvqlWrMGDAAHFCroSEhDr3v1liYiIef/xxAECnTp1w7NgxXLlyBZcuXcL9999vf/E2qvmHWZWqP8zi4+Otvm7hwoV4/fXXsWXLFv5h5iFcPTETOTefAO/IKABITU3FqlWr8P777+Po0aN44YUXUFpaKs6+Onr0aMl92wsWLMDMmTOxevVqtG/fHjqdDjqdDtevX3dpnUTujhkkZXfnce/evZg2bRp8fKq/tPTx8cHUqVOxd+9eh4ogInnpzdY3e1QtX5Geno79+/cjJiYGiYmJuHTpksX9q5av2LFjB3JychAdHY3Bgwfj/Pnzdp9DXl4e8vLy0Lx5c3EKalfiH2ZEjcNZ+QR4V0YlJSVh8eLFmDVrFmJjY3HgwAFs2bJFvFc7NzcXFy9eFPdfvnw59Ho9/vSnP6FVq1bitnjxYpfXSuTOmEFSdnceg4KCkJuba7Ggqhsyne3MmTMYP348OnTogICAAHTs2BHp6em1Frr89ddfMWDAAPj7+yM6OhoLFy50ST3UcOPMWeJG8jOaK9crunkz2hmMjbF8haRuoxEzZ85EcHAw2rdvj/bt2yM4OBivvfYaDAaDfcXbiX+YETUOZ+UT4F0ZBQApKSk4e/YsKioq8L///Q99+vQRf5adnY21a9eKz8+cOQNBEGpts2fPdnmdRO6MGSRl9z2PSUlJGD9+PBYvXoy+ffsCAHbt2oW//vWvGDlypENF1OfYsWMwm83417/+hU6dOuHQoUOYMGECSktLxT+8iouLMXjwYCQkJGDFihU4ePAgnnnmGYSEhOC5555zSV1EnqK+mcRuXr/L0kQJjbV8RU0vvfQSNm3ahIULF4rDRXNycjB79mxcvXoVy5cvt+l9HJWSkmL1/qGbhzOeOXPGpbUQeSpn5BPgnRlFRA3HDJKyu/O4ePFiqFQqjB49GkajEQDg6+uLF154AfPnz7e7AFsMGTIEQ4YMEZ/fcsstOH78OJYvXy52Hj/88EPo9XqsXr0aWq0W3bp1w4EDB7BkyRJ2HonqYTSooTbUHohg/KPt5unX09PTa12NbqzlK2pat24d1q9fjwcffFBs69mzJ6KjozFy5Ej+YUbkAZyRTwAziogcwwySsrvzqNVq8eabbyIjIwOnTp0CAHTs2BGBgYF2H7whioqKJL3unJwc3HPPPdBqtWJbYmIiFixYgGvXriE0NLTWe1RUVKCiokJ8fvOVAyJLXDVTrJyMRjXURgvB+EdbXl4egoKCxHZXTM9u6/IVNfn5+aF9+/a12jt06CDJAiJSLnfIJ4AZReStmEFSdt/zWCUwMBA9evRAjx49Gr3jePLkSSxduhTPP/+82KbT6Sz25Kt+ZklGRgaCg4PFjYvbkrcym1VWN6DyXueam6VgdMbyFdu2bbNr+YqUlBS8/vrrkotAFRUVmDdvXp3T0RORcjgjnwBmFBE5hhkkZfc3j840ffp0LFiwoM59jh49ii5duojPz58/jyFDhuDPf/4zJkyY0KDjp6WlITU1VXxeXFzMDiR5JZNRLQ6/uLndVo21rljVlNNVtm/fjjZt2iAmJgYA8Msvv0Cv12PQoEGWXk7UIFyao/E5I58AZhQROYYZJCVr53HKlCkYO3Zsnfvccsst4uMLFy5g4MCB6Nu3L1auXCnZLzIy0mJPvupnlli7oZXko4Qhoe5aV0PUvIJ2c7s9UlNTMWbMGPTu3RtxcXHIzMystXxFVFQUMjIyAFQuXzFr1iysW7dOXL4CAJo2bYqmTZtaPEZwcLDk+RNPPCF5zgtARJ7FWfkEMKOIyH7MIClZO48tW7ZEy5Ytbdr3/PnzGDhwIHr16oU1a9ZArZb29uPj4zFjxgwYDAb4+voCAL799lt07tzZ4v2ORFTNaFBBZagdgkYLbXVJSkrC5cuXMWvWLOh0OsTGxtZavqLmZ7fm8hU1WbvZHADWrFljV01EpGzOyieAGUVE9mMGScnaebTV+fPncd9996Fdu3ZYvHgxLl++LP6s6lvFp556CnPmzMH48eMxbdo0HDp0CG+++Sb++c9/ylU2kWIYjWqo6rgZ3B5yLF9x+fJlHD9+HADQuXNnmy9KEZH7c2Y+AcwoIrIPM0hKEZ3Hb7/9FidPnsTJkyfRpk0byc8EoXKRleDgYGzbtg3Jycno1asXwsLCMGvWLC7T0chqDjsF7B/i6YlDQpXAZFJBbap9Bc1koc2dlJaW4qWXXsIHH3wAs7lytV6NRoPRo0dj6dKljT6ZFxE5n1LzCWBGkWVVHYT77rtP1jrINswgKYdnW21MY8eOhSAIFreaevbsiR9++AHl5eU4d+4cpk2bJlPFRMpiMqlhNNbeTCb3jojU1FR8//33+PLLL1FYWIjCwkJ8/vnn+P777zFlyhS5yyMiJ1BqPgHMKG+XnZ3NSbY8ADNIShHfPBKRaxkNasDH+gK47uqTTz7Bxo0bJVdvhw4dioCAADz55JNcgJvIAyg1nwBmFJEnYAZJsfNITsVhp8rkzJnEGlNZWVmt9V0BIDw8HGVlZTJURETOptR8AphRRJ6AGSTl/l1mInI5o1FlcUiG0ejewRgfH4/09HSUl5eLbTdu3MCcOXMQHx8vY2VE5CxKzSeAGUXkCZhBUvzmkYhgNqlgtnDjt6U2d5KZmYkhQ4bUWvzW398fW7dulbk6InIGpeYTwIwi8gTMICl2HokIRpMasDQNtZvfDN6jRw/89ttv+PDDD3Hs2DEAwMiRI/H0008jICBA5uqIyBmUmk8AM4rIEzCDpNh5JCKYDGpAUzsETW58M7jBYECXLl3w1VdfYcKECXKXQyTa3+cR8fGd//tCfFxzKSPeH247JeYTwIwi8hTMICl2HokIMAuVm6V2N+Xr6ysZw0/U2ISTmwEA5vINUA/hrJkuo8B8AphRRB6DGSTh3l1mImoUGoPZ6ubOkpOTsWDBAhiNRrlLIS9gbb227881RenLCeJGzqXUfAKYUUSegBkkxW8eiQgakxk+RgshaHLvYPy///s/ZGVlYdu2bejRoweaNGki+fmmTZtkqoyInEWp+QQwo4g8ATNIip1HIoLKLEBlYfiFpTZ3EhISgieeeELuMois+ihosNwlKJ5S8wlgRpHjfol/VPI8Judz8fH7PtUjHMYYtzdaTd6KGSTFziMRwccgwEdt4Qqawb2Dcc2aNXKXQF7GtOdj8bG6eaCMlXgPpeYTwIwi+xRNfKDGM+aLu2AGSbHzSETQGM3QaGoHo2BpmIYbMJvNWLRoEb744gvo9XoMGjQI6enpnPqeFKPmzKs340ysUkrLJ4AZRc73YcADFtvryhJLmC/2YwZJsfNIDcbp55VPbRagtjD8wlKbO5g3bx5mz56NhIQEBAQE4M0338SlS5ewevVquUsjIidTWj4BzChvZ21yrSrC1R8q//9vOUBhSSNURA3BDJJi55GI4GM0Wx6S4aZX1T744AO88847eP755wEA27dvx0MPPYR3330XajUnkSbn0f+z+l4RU3kEoFHJWI13Ulo+AcwoqiRc+r76ib+/fIVQgzCDpJhgRAT8cTP4zZu7rmGUm5uLoUOHis8TEhKgUqlw4cIFGasiT/ZDeYTcJXgvheUTwIwi5VijHiRuZAUzSILfPFKDcaiq8vkYzPBRWRjP76ZrGBmNRvjfdBXX19cXBoNBporIk5ROrr63yLdtkIyVEKC8fAKYUeS+2Em0HzNIip1HIoLGaIJGbarVbjbWbnMHgiBg7Nix8PPzE9vKy8sxceJEyRpGXEONGsuugLYAgH43cmWuxPMoLZ8AZpQ3M/xrBEwlYQAAdduWde6b/asRKNfgvtvc43eZc1hYxgySYueRiBR3M/iYMWNqtf3lL3+RoRIiqV0BbRGGKw16D/4BJ6W0fAKYUUSehBkkxc4jEVVOQ21hSIbZgZvBly1bhkWLFkGn0yEmJgZLly5FXFyc1f0//vhjzJw5E2fOnMGtt96KBQsWSMbpW+Iua6c1xrlS49hz5zDxcbd7ZSzkJuxIOjefAGYUM8q5zv3pIcnziAeayVSJczF7qjGDpDhhDhFVziRmZbPHhg0bkJqaivT0dOzfvx8xMTFITEzEpUuXLO6/e/dujBw5EuPHj8fPP/+M4cOHY/jw4Th06JAzTsulvOlcPdWP3R4WN3JfzsonwLs+t950rq5SczKZf/sliNtHQYPFzRmyT2iQfUKDnKZtnfJ+5FzMICmVIAju+51rIysuLkZwcDCKiooQFMRJEsj9NfR3tur1Tz6yEr6+gbV+bjCU4aMvnrP5/fv06YO77roLb7/9NoDKRWqjo6Px0ksvYfr06bX2T0pKQmlpKb766iux7e6770ZsbCxWrFhh9/k0JjnOlRnVcO/7JIiPO3aunkxA61e9BEe3e8vFx1UT5oizrdZYqkPdvPozY/jtqvg4LLt62OrJo9XvVXrdeffH1PwmwF2/IXC3fAKYUa48V0/JJ2sTyvj4Vn/2/fyqv3vpO9hXfLw/PApNbtGKzyX3PNacvMSgr35cXv244ucLiL9eed/0mV+kv/OHDpSJj42G6j/dzTIOnVRCDtWlvt9ZZpBlHLZaQ1U/uri4WOZKiGxT9bva0GtApvIyqI2138NkvCE5ThU/Pz/JTdgAoNfrsW/fPqSlpYltarUaCQkJyMnJsXjcnJwcpKamStoSExPx2WefOXIajaaxzrWiogIVFRXi86KiIgDel1H/Ca4eUvqXoi8ttttKra7+A7DUVD3rnN5U3V5cYRQf+5ZX7lNa9Qdezc7jDY342FBR/QdgXvsWuPWUDgBQJlS/1w3BeZ3Hd1SWx9Zaawek/+0agzvlE8CMcva5elI+2ZIlPkL1Z98kVHceSwzALy1bVz7R64Hq60VQl9V4UvNLKknnsTqHKir02O4bCQCINF5FTTWzxFTjM2WW8TsgW3PIWm7bkkn27m8PWzOKGSTFzmMNJSUlAIDo6GiZKyGyT0lJCYKDg+1+nVarRWRkJD7Z9orVfZo2bVrrM5Geno7Zs2dL2q5cuQKTyYSICOl6eBERETh27JjF99bpdBb31+l0tp+EDBrrXDMyMjBnzpxa7d6cUckO/J5L1PwD7riVfX5t2CHcVYP/2znIHfIJYEYBzj1Xr8sng5XHXzR2IcpjLXvszSRXZZi1jGIGWcbOYw2tW7dGXl4emjVrBpVKVf8LLCguLkZ0dDTy8vIUPWwD8KxzATzrfKrOJTc3FyqVCq1bt3boffz9/XH69Gno9Xqr+wiCUOvzYOmKGjlfWlqa5Iqj2WxGQUEBWrRo4VBGedJnAPCs8/GkcwGqz+fIkSPMJw/l7HxqKE/7DNXFm84VcN35CoKAkpISqxnFDLKMncca1Go12rRp45T3CgoK8pgPtCedC+BZ5xMcHNzgc/H396+1kKwjwsLCoNFokJ+fL2nPz89HZGSkxddERkbatb+7aKxztTT0JSQkxLGia/CkzwDgWefjSecCAFFRUVCrHZ+bz1n5BDCjAOeeq6vyqaE87TNUF286V8A151vfqAhmUG2cbZWInEKr1aJXr17Iyqq+Ud5sNiMrKwvx8fEWXxMfHy/ZHwC+/fZbq/u7C286VyJP4U2fW286VyKl8JjPpUBOVVRUJAAQioqK5C6lwTzpXATBs87HXc9l/fr1gp+fn7B27VrhyJEjwnPPPSeEhIQIOp1OEARBGDVqlDB9+nRx/127dgk+Pj7C4sWLhaNHjwrp6emCr6+vcPDgQblOwWZKPFd3/b1xlCedjyediyC47/ko8XPrKG86V0Fw3985V/CmcxUEzzpfT/hcsvPoZOXl5UJ6erpQXl4udykN5knnIgiedT7ufC5Lly4V2rZtK2i1WiEuLk746aefxJ/de++9wpgxYyT7f/TRR8Jtt90maLVaoVu3bsLmzZsbuWLHKe1c3fn3xhGedD6edC6C4N7no7TPbUN407m68++cs3nTuQqC552v0j+XXOeRiIiIiIiI6sV7HomIiIiIiKhe7DwSERERERFRvdh5JCIiIiIionqx80hERERERET1YufRBSoqKhAbGwuVSoUDBw5Ifvbrr79iwIAB8Pf3R3R0NBYuXChPkXU4c+YMxo8fjw4dOiAgIAAdO3ZEeno69Hq9ZD8lnEuVZcuWoX379vD390efPn2wZ88euUuySUZGBu666y40a9YM4eHhGD58OI4fPy7Zp7y8HMnJyWjRogWaNm2KJ554otaCskRVlJ5PADPKXTCfyB14Yh7UR4l5UR/miYLIOterh3r55ZeFBx98UAAg/Pzzz2J7UVGREBERITz99NPCoUOHhP/+979CQECA8K9//Uu+Yi345ptvhLFjxwpbt24VTp06JXz++edCeHi4MGXKFHEfpZyLIFSuqaPVaoXVq1cLhw8fFiZMmCCEhIQI+fn5cpdWr8TERGHNmjXCoUOHhAMHDghDhw4V2rZtK1y/fl3cZ+LEiUJ0dLSQlZUl7N27V7j77ruFvn37ylg1uTOl55MgMKPcBfOJ3IGn5UF9lJoX9WGeKAc7j0729ddfC126dBEOHz5c64+zd955RwgNDRUqKirEtmnTpgmdO3eWoVL7LFy4UOjQoYP4XEnnEhcXJyQnJ4vPTSaT0Lp1ayEjI0PGqhxz6dIlAYDw/fffC4IgCIWFhYKvr6/w8ccfi/scPXpUACDk5OTIVSa5KU/NJ0FgRrkD5hO5CyXnQX08JS/qwzxxXxy26kT5+fmYMGEC/v3vfyMwMLDWz3NycnDPPfdAq9WKbYmJiTh+/DiuXbvWmKXaraioCM2bNxefK+Vc9Ho99u3bh4SEBLFNrVYjISEBOTk5MlbmmKKiIgAQ/y327dsHg8EgOb8uXbqgbdu2ijw/ch1PzieAGeUOmE/kLpSaB/XxpLyoD/PEfbHz6CSCIGDs2LGYOHEievfubXEfnU6HiIgISVvVc51O5/IaHXXy5EksXboUzz//vNimlHO5cuUKTCaTxVrdqU5bmM1mvPLKK+jXrx+6d+8OoPK/tVarRUhIiGRfJZ4fuY4n5xPAjHIHzCdyF0rOg/p4Sl7Uh3ni3th5rMf06dOhUqnq3I4dO4alS5eipKQEaWlpcpdsla3nUtP58+cxZMgQ/PnPf8aECRNkqpwAIDk5GYcOHcL69evlLoXchCflE8CMUjLmEzkb88B7MU/cm4/cBbi7KVOmYOzYsXXuc8stt+C7775DTk4O/Pz8JD/r3bs3nn76abz//vuIjIysNStU1fPIyEin1m2JredS5cKFCxg4cCD69u2LlStXSvaT+1xsFRYWBo1GY7FWd6qzPikpKfjqq6+wc+dOtGnTRmyPjIyEXq9HYWGh5Gqc0s6PHONJ+QQwo2pS0meY+USu4I15UB9PyIv6ME8UQO6bLj3F2bNnhYMHD4rb1q1bBQDCxo0bhby8PEEQqm/Y1uv14uvS0tLc8obtc+fOCbfeeqswYsQIwWg01vq5ks4lLi5OSElJEZ+bTCYhKipKETeXm81mITk5WWjdurVw4sSJWj+vuoF848aNYtuxY8d4AzlJeFo+CQIzyh0wn8hdeFIe1EepeVEf5olysPPoIqdPn641m2FhYaEQEREhjBo1Sjh06JCwfv16ITAw0O2mij537pzQqVMnYdCgQcK5c+eEixcvilsVpZyLIFROa+3n5yesXbtWOHLkiPDcc88JISEhgk6nk7u0er3wwgtCcHCwkJ2dLfl3KCsrE/eZOHGi0LZtW+G7774T9u7dK8THxwvx8fEyVk3uTsn5JAjMKHfBfCJ34Gl5UB+l5kV9mCfKwc6ji1j640wQBOGXX34R+vfvL/j5+QlRUVHC/Pnz5SmwDmvWrBEAWNxqUsK5VFm6dKnQtm1bQavVCnFxccJPP/0kd0k2sfbvsGbNGnGfGzduCC+++KIQGhoqBAYGCo899pjkfzSJbqbkfBIEZpS7YD6RO/DEPKiPEvOiPswT5VAJgiC4ZDwsEREREREReQzOtkpERERERET1YueRiIiIiIiI6sXOIxEREREREdWLnUciIiIiIiKqFzuPREREREREVC92HomIiIiIiKhe7DwSERERERFRvdh5JCIiIiIionqx80hERERERET1YueRiIiIiIiI6sXOIxEREREREdWLnUciIiIiIiKqFzuPROQ0O3fuxLBhw9C6dWuoVCp89tln9b4mOzsbd955J/z8/NCpUyesXbvW5XUSkfdhPhGR3Dwhh9h5JCKnKS0tRUxMDJYtW2bT/qdPn8ZDDz2EgQMH4sCBA3jllVfw7LPPYuvWrS6u1DmWLVuG9u3bw9/fH3369MGePXvq3D8zMxOdO3dGQEAAoqOjMXnyZJSXlzdStUTezdvyiYjcjyfkkEoQBEG2o7sZs9mMCxcuoFmzZlCpVHKXQ1QvQRBQUlKC1q1bQ6127FpQeXk59Hp9nce4+fPg5+cHPz+/Ot9XpVLh008/xfDhw63uM23aNGzevBmHDh0S20aMGIHCwkJs2bLFthOQyYYNGzB69GisWLECffr0QWZmJj7++GMcP34c4eHhtfZft24dnnnmGaxevRp9+/bFiRMnMHbsWIwYMQJLliyx6ZjMKFIS5pN3YT6R0tiSUa7KIEDBOSSQKC8vTwDAjZvitry8PId+52/cuCEEQ1vnezdt2rRWW3p6er3vDUD49NNP69xnwIABwqRJkyRtq1evFoKCghw6n8YUFxcnJCcni89NJpPQunVrISMjw+L+ycnJwv333y9pS01NFfr162fzMZlR3JS4MZ+8A/OJm1I3axnlygwSBOXmkA9I1KxZMwBAXl4egoKCZK6GqH7FxcWIjo4Wf3ftpdfrUQQ9lqj7IQC14+AGjEi9vqvWZ8KWK2q20Ol0iIiIkLRFRESguLgYN27cQEBAgFOO42x6vR779u1DWlqa2KZWq5GQkICcnByLr+nbty/+85//YM+ePYiLi8Pvv/+Or7/+GqNGjbJ6nIqKClRUVIjPhT8GijCjSAmYT96Ff0OR0tSXUXJnEOCeOcTOYw1VXzsHBQUx+EhRGjpEqKmvLwJVteNAI6iACn4mbnblyhWYTCaLgX7s2DGLr3nqqadw5coV9O/fH4IgwGg0YuLEifjb3/5m9TgZGRmYM2dOrXb+e5CSMJ+8A/+GIqWqL6OYQVKcMIeIoNFY31wpMjIS+fn5krb8/HwEBQV53FX97OxsvPHGG3jnnXewf/9+bNq0CZs3b8brr79u9TVpaWkoKioSt7y8vEasmMg9MJ+ISE5yZRDgnjnEbx6JCD4+KvhYuPLmI7h20oP4+Hh8/fXXkrZvv/0W8fHxLj1uQ4WFhUGj0VgM9MjISIuvmTlzJkaNGoVnn30WANCjRw+Ulpbiueeew4wZMyzerG/rTfdEnoz5RERykiuDAPfMIX7zSESVwehrYfOxLxivX7+OAwcO4MCBAwAqp5g+cOAAcnNzAVR+kzZ69Ghx/4kTJ+L333/H1KlTcezYMbzzzjv46KOPMHnyZKedmytotVr06tULWVlZYpvZbEZWVpbVQC8rK6vVQdT8cdlS4KTXRFYxn4hITs7KIMAzcojfPBIR1BoV1OraIai2816lvXv3YuDAgeLz1NRUAMCYMWOwdu1aXLx4UQxIAOjQoQM2b96MyZMn480330SbNm3w7rvvIjEx0cEzaTypqakYM2YMevfujbi4OGRmZqK0tBTjxo0DAIwePRpRUVHIyMgAAAwbNgxLlizBHXfcgT59+uDkyZOYOXMmhg0bJnYiiag25hMRyclZGQR4Rg6x80hE8PVRwddCMPqa7QvG++67r85v0dauXWvxNT///LNdxwEqv+n7/vvv8cMPP+Ds2bMoKytDy5YtcccddyAhIQHR0dF2v6c9kpKScPnyZcyaNQs6nQ6xsbHYsmWLOIlObm6u5JvG1157DSqVCq+99hrOnz+Pli1bYtiwYZg3b55L6yRSOiXmEyB/RhGRczgrgwDP+DuJw1bttEY9SNyIPIXGFxaHZGh85a6sths3buDvf/87oqOjMXToUHzzzTcoLCyERqPByZMnkZ6ejg4dOmDo0KH46aefXFpLSkoKzp49i4qKCvzvf/9Dnz59xJ9lZ2dL/kfAx8cH6enpOHnyJG7cuIHc3FwsW7YMISEhLq2RnCs7OxvZ2dlyl+FVlJRPgHtlFLk35okyMIOk+M0jEUGtrtxqtTd+KfW67bbbEB8fj1WrVuGBBx6Ar2/t9D579izWrVuHESNGYMaMGZgwYYIMlRKRMygpnwBmFJGnYQZJsfNop3HmrPp3IlIYXx8VfDUWhmSYXD+TmL22bduG22+/vc592rVrh7S0NLz66quSeweISHmUlE8AM4rI0zCDpNh5JKLKIRgWgtHHwhh/udUXiDX5+vqiY8eOLqyGiFxNSfkEMKOIPA0zSIqdRyKCWm1lJrFGWMOoIfbs2YOcnBzodDoAlYvpxsfHIy4uTubKiMhZlJpPgLwZtWzZMixatAg6nQ4xMTFYunRpncctLCzEjBkzsGnTJhQUFKBdu3bIzMzE0KFDXV4rkTtjBkmx80hE0Fi5qqZx06tqly5dwhNPPIFdu3ahbdu24gyn+fn5mDx5Mvr164dPPvkE4eHhMldKRA2ltHwC5M+oDRs2IDU1FStWrECfPn2QmZmJxMREHD9+3OIx9Xo9HnjgAYSHh2Pjxo2IiorC2bNnOaEXEZhBN3PXez2JqBGpNdY3d/Tiiy/CZDLh6NGjOHPmDP73v//hf//7H86cOYOjR4/CbDYjOTlZ7jKJyAmUlk+A/Bm1ZMkSTJgwAePGjUPXrl2xYsUKBAYGYvXq1Rb3X716NQoKCvDZZ5+hX79+aN++Pe69917ExMS4rEYipWAGSfGbRyKCr0YFXx8LN4PDPa+qbd26FTt37kTnzp1r/axz58546623cN999zV+YUTkdErLJ0DejNLr9di3bx/S0tLENrVajYSEBOTk5Fh8zRdffIH4+HgkJyfj888/R8uWLfHUU09h2rRp0Ggs/4VcUVGBiooK8XlxcbFzT4TITTCDpPjNIxFZXL+oanNHfn5+df6hUlJSAj8/v0asiIhcRWn5BMibUVeuXIHJZBKHqVWJiIgQ73u62e+//46NGzfCZDLh66+/xsyZM/GPf/wDf//7360eJyMjA8HBweLm6ILjRO6OGSTFziMRQaUWrG7uKCkpCWPGjMGnn34qCcfi4mJ8+umnGDduHEaOHCljhUTkLErLJ0B5GWU2mxEeHo6VK1eiV69eSEpKwowZM7BixQqrr0lLS0NRUZG45eXlNWLFRI2HGSTFYatEBLVGgFpTOwTVgnsG45IlS2A2mzFixAgYjUZotVoAlcO1fHx8MH78eCxevFjmKonIGZSWT4C8GRUWFgaNRoP8/HxJe35+PiIjIy2+plWrVvD19ZUMUb399tuh0+mg1+vF+mvy8/PjCA/yCswgKXYeiQhqHwEaHwvBCPcMRj8/PyxfvhwLFizAvn37JFNQ9+rVC0FBQTJXSETOorR8AuTNKK1Wi169eiErKwvDhw8HUPnNYlZWFlJSUiy+pl+/fli3bh3MZjPU6spBaSdOnECrVq0sdhyJvAkzSIqdRyKCSgWoLAxiV7nvcH4AQFBQEAYOHCh3GUTkQkrNJ0C+jEpNTcWYMWPQu3dvxMXFITMzE6WlpRg3bhwAYPTo0YiKikJGRgYA4IUXXsDbb7+NSZMm4aWXXsJvv/2GN954Ay+//HKj107kbphBUuw8EhHUPgLUlq6qufGQDCLyDswn+yUlJeHy5cuYNWsWdDodYmNjsWXLFnESndzcXPEbRgCIjo7G1q1bMXnyZPTs2RNRUVGYNGkSpk2bJtcpELkNZpAUO49EBI1GgMbCeH6N2TuDkYjcB/PJMSkpKVaHqWZnZ9dqi4+Px08//eTiqoiUhxkkxc4jEUGltjIkg/MxE5HMmE9EJCdmkBQ7j0TEIRlE5LaYT0QkJ2aQlJf2mYmoJrUaUKsFC5vcldVt//79OHjwoPj8888/x/Dhw/G3v/0Ner1exsqIyFmUmk8AM4rIEzCDpBRw2kTkamq1IK5jJNnceAFcAHj++edx4sQJAMDvv/+OESNGIDAwEB9//DGmTp0qc3VE5AxKzSeAGUXkCZhBUuw8EpE4JMPS5s5OnDiB2NhYAMDHH3+Me+65B+vWrcPatWvxySefyFscETmFUvMJYEYReQJmkBQ7j0QElbpqWIZ0c+Rm8GXLlqF9+/bw9/dHnz59sGfPnjr3z8zMROfOnREQEIDo6GhMnjwZ5eXlNh1LEASYzWYAwPbt2zF06FAAldPOX7lyxf7iicjtODOfAGYUEdmHGSTFziMROe2q2oYNG5Camor09HTs378fMTExSExMxKVLlyzuv27dOkyfPh3p6ek4evQo3nvvPWzYsAF/+9vfbDpe79698fe//x3//ve/8f333+Ohhx4CAJw+fVpcz4yIlM2ZV/2ZUURkL2aQFDuPRCSuYWRps8eSJUswYcIEjBs3Dl27dsWKFSsQGBiI1atXW9x/9+7d6NevH5566im0b98egwcPxsiRI+u9ClclMzMT+/fvR0pKCmbMmIFOnToBADZu3Ii+ffvaVTsRuSdn5RPAjCIi+zGDpLhUBxFBpRagsnDjd1VbcXGxpN3Pzw9+fn6SNr1ej3379iEtLU1sU6vVSEhIQE5OjsXj9u3bF//5z3+wZ88exMXF4ffff8fXX3+NUaNG2VR3z549JbOIVVm0aBE0Go1N70FE7s0Z+QQwo4jIMcwgKX7zSERQ+aig8rWw+agAVI6NDw4OFreMjIxa73HlyhWYTKZawyAiIiKg0+ksHvepp57C3Llz0b9/f/j6+qJjx4647777bB6OkZeXh3PnzonP9+zZg1deeQUffPABfH19bT19InJjzsgngBlFRI5hBknZ3Xk0mUyS5//73/+wc+dOGAwGhwogIvmp1CqrG1AZPkVFReJW86pZQ2RnZ+ONN97AO++8g/3792PTpk3YvHkzXn/9dZte/9RTT2HHjh0AAJ1OhwceeAB79uzBjBkzMHfuXKfUSETykiufAGYUETGDbmZz5/HixYvo378//Pz8cO+99+LatWt4+OGHER8fj/vuuw/du3fHxYsXHSqCiGTmq7G+AQgKCpJsloZjhIWFQaPRID8/X9Ken5+PyMhIi4edOXMmRo0ahWeffRY9evTAY489hjfeeAMZGRni7GB1OXToEOLi4gAAH330Ebp3747du3fjww8/xNq1a+38j0BEbskJ+QQwo4jIQcwgCZs7j9OmTYMgCPj000/RqlUrPPzwwyguLkZeXh7OnDmDli1bYt68eQ4VQUTyqhyCobawqWx+D61Wi169eiErK0tsM5vNyMrKQnx8vMXXlJWVQa2WxlDVGHxBqP9GdIPBIIb09u3b8cgjjwAAunTpwotZRB7CGfkEMKOIyDHMICmbJ8zZvn07Nm3ahLvvvhv9+vVDWFgYvv32W0RFRQEA5s6diwkTJjhUBLnOGvUg8fE4c1Yde5JX06gqN0vtdkhNTcWYMWPQu3dvxMXFITMzE6WlpRg3bhwAYPTo0YiKihLvBxg2bBiWLFmCO+64A3369MHJkycxc+ZMDBs2zKYbubt164YVK1bgoYcewrfffisO47hw4QJatGhhV+1E5KaclE8AM4qIHMAMkrC583jt2jWxo9i8eXMEBgaiXbt24s87derk0qtoGRkZ2LRpE44dO4aAgAD07dsXCxYsQOfOncV9ysvLMWXKFKxfvx4VFRVITEzEO++8w7WUiOqh8tFA5Vs7hFSm+odE1JSUlITLly9j1qxZ0Ol0iI2NxZYtW8TPYG5uruQK2muvvQaVSoXXXnsN58+fR8uWLTFs2DCbRzEsWLAAjz32GBYtWoQxY8YgJiYGAPDFF1+IwzRcadmyZVi0aBF0Oh1iYmKwdOnSOo9bWFiIGTNmYNOmTSgoKEC7du2QmZkpLtpLRLU5K58A78soImo4ZpCUSrDlO08A7dq1w8cffyweaPr06Zg6dSqaN28OAPjll1+QkJCAy5cvO1RIfYYMGYIRI0bgrrvugtFoxN/+9jccOnQIR44cQZMmTQAAL7zwAjZv3oy1a9ciODgYKSkpUKvV2LVrl03HKC4uRnBwMIqKihAUFOSS82hs/ObRszX0d7bq9ZfmPIQg/9qzbhWXGxCevtmtPxMmkwnFxcUIDQ0V286cOYPAwECEh4e77LgbNmzA6NGjsWLFCvTp0weZmZn4+OOPcfz4cYvH1ev16NevH8LDw/G3v/0NUVFROHv2LEJCQsQwr48nZpTSZGdnAwDuu+8+WetQAuZTJbkyqrExn+zHPJFXfb+zzCDLbP7mMTY2Fjk5OWLncf78+ZKf//jjj+jZs6fdBdhqy5Ytkudr165FeHg49u3bh3vuuQdFRUV47733sG7dOtx///0AgDVr1uD222/HTz/9hLvvvttltbkzdhjJJk4cktHYNBqNJBABoH379i4/bs2FfgFgxYoV2Lx5M1avXo3p06fX2n/16tUoKCjA7t27xemxG6NOIsVTcD4B8mUUETkJM0jC5s7j559/XufP77rrLtx7770OF2KvoqIiABC/+dy3bx8MBgMSEhLEfbp06YK2bdsiJyfHYuexoqICFRUV4vObF/kk8hZVN3/Xaje5/1KwGzduxEcffYTc3Fzo9XrJz/bv3++SYzqy0O8XX3yB+Ph4JCcn4/PPP0fLli3x1FNPYdq0aVbvW2BGESk7nwB5MoqInIcZJOW0s46Li0P37t2d9XZ1MpvNeOWVV9CvXz/xmDqdDlqtFiEhIZJ961p4MyMjQ7KoZ3R0tKtLJ3JLVeP5a20+9d+MLae33noL48aNQ0REBH7++WfExcWhRYsW+P333/Hggw+67LiOLPT7+++/Y+PGjTCZTPj6668xc+ZM/OMf/8Df//53q8dhRhEpN58A+TKKiJyHGSSljC7zTZKTk3Ho0CGsX7++Qe+TlpYmWdQzLy/PSRUSKYxaZX1zY++88w5WrlyJpUuXQqvVYurUqfj222/x8ssvi6MT3IXZbEZ4eDhWrlyJXr16ISkpCTNmzMCKFSusvoYZRQTF5hOgrIwiIiuYQRKK6zympKTgq6++wo4dO9CmTRuxPTIyEnq9HoWFhZL961p408/Pr9bCnkTeyPL6RZaHabiT3Nxc9O3bFwAQEBCAkpISAMCoUaPw3//+12XHdWSh31atWuG2226TDFG9/fbbodPpag0jqcKMIlJuPgHyZRQROQ8zSMr9z/oPgiAgJSUFn376Kb777jt06NBB8vNevXrB19dXsvDm8ePHkZuba3XhTSL6g0ZtfXNjkZGRKCgoAAC0bdsWP/30EwDg9OnTNi2e6yhHFvrt168fTp48CbO5emrvEydOoFWrVtBqtS6rlUjxFJpPgHwZRUROxAySsHnCHLklJydj3bp1+Pzzz9GsWTPxvqLg4GAEBAQgODgY48ePR2pqKpo3b46goCC89NJLiI+P99qZVutScwkPgLOyejuVj8ryzeAG9x6Scf/99+OLL77AHXfcgXHjxmHy5MnYuHEj9u7di8cff9ylx7Z3od8XXngBb7/9NiZNmoSXXnoJv/32G9544w28/PLLLq2TSOmUmk+AvBlFRM7BDJJyuPOo1+tx6dIlyVV0oLJX6wrLly8HUHstnDVr1mDs2LEAgH/+859Qq9V44oknUFFRgcTERLzzzjsuqYfIo/iqKzdL7W5s5cqVYgYlJyejRYsW2L17Nx555BE8//zzLj22vQv9RkdHY+vWrZg8eTJ69uyJqKgoTJo0CdOmTXNpnUSKp9B8AuTNKHJfVes7kkIwgyTs7jz+9ttveOaZZ7B7925JuyAIUKlUMJlMDhVSH1u+WvX398eyZcuwbNkyl9TgSfhNo3ur+c1wY/xbqTQqqCysV2SpzZ2o1WpJB23EiBEYMWJEox0/JSUFKSkpFn9m6Y+D+Ph4ccgIEdlGqfkEyJ9RRNRwzCApuzuPY8eOhY+PD7766iu0atUKKpX7/4cjonr4aCo3S+1u5tdff7V53549e7qwEiJqFArKJ4AZReRxmEESdnceDxw4gH379qFLly52H4yI3JSPT+VWq91cu01msbGxUKlU9Y5GcOVICCJqRArKJ4AZReRxmEESdnceu3btiitXrth9IFIOW4ZMNvawSqVp6H+fRv9vqrKyXpEbjiw4ffq03CUQUWNSUD4BzCgij8MMkrC787hgwQJMnToVb7zxBnr06AFfX1/Jz7kOGZECKeiqWrt27eQugYgak4LyCWBGEXkcZpCE3Z3HhIQEAMCgQdKlHlw9YQ4RuZDaylU1S21uJCMjAxEREXjmmWck7atXr8bly5c5kymRJ1BoPgHMKCKPwAySsLvzuGPHDrsPQu6hrqGU9g6ztHVYpauGt1p7X3cZTqu4obw+GitX1dz7YtC//vUvrFu3rlZ7t27dMGLECP5hRuQJFJpPADOKyCMwgyTs7jzee++9dh+EiNycwmYSq6LT6dCqVata7S1btsTFixdlqIiInE6h+QQwo4g8AjNIwu7OIwAUFhbivffew9GjRwFU9l6feeYZBAcHO1QEEclMra7cLLW7sejoaOzatQsdOnSQtO/atQutW7eWqSoiciqF5hPAjCLyCMwgCbs7j3v37kViYiICAgIQFxcHAFiyZAnmzZuHbdu24c4773SoEHIea0M36xpKacswy5rva+trXTWk1Nrr7X3fm8+pIXW5y5BZR6jUGqg0ta+gqdTufVVtwoQJeOWVV2AwGHD//fcDALKysjB16lRMmTJF5uqIyBmUmk8AM4rIEzCDpOzuPE6ePBmPPPIIVq1aBZ8/xv8ajUY8++yzeOWVV7Bz506HCiEiGSl0SMZf//pXXL16FS+++CL0ej0AwN/fH9OmTUNaWprM1RGRUyg0nwBmFJFHYAZJOPTNY82OIwD4+Phg6tSp6N27t0NFEJHMFDokQ6VSYcGCBZg5cyaOHj2KgIAA3HrrrfDz85O7NCJyFoXmE8CMIvIIzCAJu886KCgIubm5tdrz8vLQrFkzhwsh5xlnzhK3NepBFreb1fUzS+9bc6tLzfe19hpbju0qN59LQ2qx9b+JNXL+d4CPuvrKmmSzPxiXLVuG9u3bw9/fH3369MGePXvq3L+wsBDJyclo1aoV/Pz8cNttt+Hrr7+265hNmzbFXXfdhe7du/OPMiJP48R8Arwro+w91yrr16+HSqXC8OHDXVsgkRIwgyTsPuukpCSMHz8eGzZsQF5eHvLy8rB+/Xo8++yzGDlyZIOKISKZWAxFK8M06rBhwwakpqYiPT0d+/fvR0xMDBITE3Hp0iWL++v1ejzwwAM4c+YMNm7ciOPHj2PVqlWIioqyeoyJEyfi3LlzNtfz4Ycf2nUORLbIzs6WuwTv4aR8Arwro+w91ypnzpzBq6++igEDBrikLiLFYQZJ2D1sdfHixVCpVBg9ejSMRiMAwNfXFy+88ALmz59v79sRkTtw0pCMJUuWYMKECRg3bhwAYMWKFdi8eTNWr16N6dOn19p/9erVKCgowO7du+Hr6wsAaN++fZ3HaNmyJbp164Z+/fph2LBh6N27N1q3bg1/f39cu3YNR44cwY8//oj169ejdevWWLlypV3nQERuxolDxrwpo+w9VwAwmUx4+umnMWfOHPzwww8oLCx0SW1EisIMkrC786jVavHmm28iIyMDp06dAgB07NgRgYGB9r4VNQJbh1DaO9uqtVlUHXl9Y7D12HLOkirrDK0aK1fQ/phdrLi4WNLs5+dXa9iDXq/Hvn37JDdgq9VqJCQkICcnx+Jhv/jiC8THxyM5ORmff/45WrZsiaeeegrTpk2DxsLMZgDw+uuvIyUlBe+++y7eeecdHDlyRPLzZs2aISEhAStXrsSQIUPqPXUicnNOyCfAuzLKkXMFgLlz5yI8PBzjx4/HDz/8UOcxKioqUFFRIT6/+d+ByGMwgyQcWucRAAIDA9GjRw9HX05E7qSeq2rR0dGS5vT0dMyePVvSduXKFZhMJkREREjaIyIicOzYMYuH/f333/Hdd9/h6aefxtdff42TJ0/ixRdfhMFgQHp6utVyIyIiMGPGDMyYMQPXrl1Dbm4ubty4gbCwMHTs2BEqlcqGkyYiRXBCPgHelVGOnOuPP/6I9957DwcOHLDpGBkZGZgzZ05DSyVyf8wgCZs6j48//jjWrl2LoKAgPP7443Xuu2nTJoeLISKZqH0qN0vtqJwQKygoSGx21oQPZrMZ4eHhWLlyJTQaDXr16oXz589j0aJFdYZiTaGhoQgNDXVKPUTkhmTKJ8B7MqqkpASjRo3CqlWrEBYWZtNr0tLSkJqaKj4vLi6u9Uc0kUdgBknY1HkMDg4We6hBQUG8qu+lrA2rdGQIa0M1dAitq8k5RNchGg2gsRAHfwyJCAoKkgSjJWFhYdBoNMjPz5e05+fnIzIy0uJrWrVqBV9fX8nQi9tvvx06nQ56vR5ardbOEyEij+OEfAK8K6PsPddTp07hzJkzGDZsmNhmNpsBVC7Hdvz4cXTs2FHyGmtD84g8DjNIwqbO45o1a8THa9eudVUtRCQXlbpys9RuI61Wi169eiErK0uc3t1sNiMrKwspKSkWX9OvXz+sW7cOZrMZ6j+Gf5w4cQKtWrVy2z/KiKiROSGfAO/KKHvPtUuXLjh48KCk7bXXXkNJSQnefPNNfqNI3o0ZJGH3PY/3338/Nm3ahJCQEEl7cXExhg8fju+++85ZtZEbs/YNX13fstV8zfs+CU57X3v3s/XbyYZ8Y6iIbxtr0vhYuapmX0SkpqZizJgx6N27N+Li4pCZmYnS0lJxVrHRo0cjKioKGRkZAIAXXngBb7/9NiZNmoSXXnoJv/32G9544w28/PLLDT4lIvIQTsonwLsyyp5z9ff3R/fu3SWvr/o77+Z2Iq/DDJKw+6yzs7Oh1+trtZeXl9c7MxcRual6xvPbKikpCZcvX8asWbOg0+kQGxuLLVu2iDeH5+bmilfOgMqbzLdu3YrJkyejZ8+eiIqKwqRJkzBt2rQGnQ4ReRAn5RPgXRll77kSkRXMIAmbz/rXX38VHx85cgQ6nU58bjKZsGXLljoXrCQiN+akIRkAkJKSYnX4haWF1ePj4/HTTz/ZfRwAuHHjBgRBEJcKOnv2LD799FN07doVgwcPdug9icjNODGfAO/KKHvPtSbepkT0B2aQhM2dx9jYWKhUKqhUKtx///21fh4QEIClS5c6VAS5L2sTv9R8bG0IKgB8FFT9ixkQWP0hMxgE8fEYY/V7/duv+r3MJst12FqjI5PnWHu94oah2kttZUiGA1fVGtOjjz6Kxx9/HBMnTkRhYSH69OkDX19fXLlyBUuWLMELL7wgd4lE1FAKzSeAGUXkEZhBEjZ3mU+fPo1Tp05BEATs2bMHp0+fFrfz58+juLgYzzzzjN0FEJH8VCo1VCqNhc29hzTt378fAwYMAABs3LgREREROHv2LD744AO89dZbMldHRM6g1HwCmFFEnoAZJGVzl7ldu3YAqqduJiIP4sTx/I2prKwMzZo1AwBs27YNjz/+ONRqNe6++26cPXtW5uqIyCkUmk8AM4rIIzCDJBw+6yNHjiA3N7fW5DmPPPKIo29JbsjacM2aQzrV6up1P9c3fUCyX82ftWlXvR5UwVWj+PiLyCHi42ZB1evYlF6vvlChr6ge5loXZ67z6PFDVWty4kxijalTp0747LPP8Nhjj4k3lAPApUuXbFpziYgUQKH5BDCjiDwCM0jC7rP+/fff8dhjj+HgwYNQqVQQhMo/6lWqyk6CyWSq6+VE9RIAmH3VMPmroTILUOn5O+VyTr4ZvLHMmjULTz31FCZPnoz7778f8fHxACqvrt1xxx0yV0dETqHQfAKYUUQegRkkYXfncdKkSejQoQOysrLQoUMH7NmzB1evXsWUKVOwePFih4ogquowVgRqoA8OgNFPg4ryyo6jj8EE85VyaG4YodKboKr33chuCh2S8ac//Qn9+/fHxYsXERMTI7YPGjQIjz32mIyVEZHTKDSfAGYUkUdgBknYfdY5OTn47rvvEBYWBrVaDbVajf79+yMjIwMvv/wyfv75Z4cKIWWxdUjnN20eFB+36VTd3immugtYXK5FsdYPhf7+KNU2hVGjhtZoAoqMEFQqQKVG+VU9tEXl8C0qh/ZKGUxF1cNezWbbhrRaqv3mYa62zNzqkcNZNRorQzI0tdvcTGRkJK5fv45vv/0W99xzDwICAnDXXXeJoyFcadmyZVi0aBF0Oh1iYmKwdOlSxMXF1fu69evXY+TIkXj00Ufx2WefubxOIkVTcD4B8mYUETkBM0jC7u9bTSaTeONlWFgYLly4AKByQp3jx487VAR5r3K1BvmBTXA5IBC6wCYo9fWBWQVcC/BDQXgQCsOaojjEH+XhTXCjdVOUtg1BcZcwGIK0cpfuWaqGZFja3NjVq1cxaNAg3HbbbRg6dCguXrwIABg/fjymTJni0mNv2LABqampSE9Px/79+xETE4PExERcunSpztedOXMGr776qjj7GRHVQ6H5BMibUUTkJMwgCbvPunv37vjll18AAH369MHChQuxa9cuzJ07F7fccotDRZB3KldrkBsYDF3TZjgbFITcoGDomjXB+ZAgFDRritJmfrge4ItSf18YAjTQB2oBvQHGZlrc6BgKo58yrvgoQtWQDEubG5s8eTJ8fX2Rm5srLoALAElJSdiyZYtLj71kyRJMmDAB48aNQ9euXbFixQoEBgZi9erVVl9jMpnw9NNPY86cOTblZUVFBYqLiyUbkddRaD4B8mYUETkJM0jC7rN+7bXXUFpaCgCYO3cuHn74YQwYMAAtWrTAhg0bHCqClOd9nwTx8RjjdvHxtx2GSvZr0676G0KNxggBgEGthnl0T+gKVbhcqMblG364LP5NbKh+sUENaNQwAYC/D4RyE7S+QNMrpSgL0QJRTaC9UAJjjZcYDfUPYa1rRlZrQ1I9cqhqDcIf/2ep3Z1t27YNW7duRZs2bSTtt956q0unwdfr9di3bx/S0tLENrVajYSEBOTk5Fh93dy5cxEeHo7x48fjhx9+qPc4GRkZmDNnjlNqJlIqpeYTIF9GEZHzMIOk7O48JiYmio87deqEY8eOoaCgAKGhoRy/T3WqUGtQEBCAfP8mKDnli2tlwLUywKa5VH00MDXRoNhPA31TP6gLbqCi1ICAy2WAwVj/66lOAswQUHsNV0tt7qS0tFRyJa1KQUEB/Pz8LLzCOa5cuQKTyYSIiAhJe0REBI4dO2bxNT/++CPee+89HDhwwObjpKWlITU1VXxeXFyM6Ohoh2omUiql5hMgX0YRkfMwg6TsHrb6n//8R/zmsUrz5s3ZcaQ66X000DVpirymQSgICESZXkChrR3HKioAvhqUN9XiRnAAylo3RUUw/8fXGcyCyermzgYMGIAPPvhAfK5SqWA2m7Fw4UIMHDhQxsqkSkpKMGrUKKxatQphYWE2v87Pzw9BQUGSjcjbKDWfAOVkFBFZxwySsvubx8mTJ2PixIl45JFH8Je//AWJiYnQKGS2IXKemkNVa3rg9NeS55fHDIEA4JJvIIr6tIK53AdmvRpXbmhh+ftCX4sPYagxNtVXAyHUD0atCj53tIC28AaqfgONvtVDCCrKqx9bm5HV04ej2kqpQzIWLlyIQYMGYe/evdDr9Zg6dSoOHz6MgoIC7Nq1y2XHDQsLg0ajQX5+vqQ9Pz8fkZGRtfY/deoUzpw5g2HDholtZnPlFUsfHx8cP34cHTt2dFm9REqm1HwC5MsoInIeZpCU3d88Xrx4EevXr4dKpcKTTz6JVq1aITk5Gbt373aoAPJ8BpUa17SBKKrQoFSvQkk5UGGo/3V10qhR0cwf59s1R9FtYTBx8pwGMQtmK1fV3HtIRvfu3XHixAn0798fjz76KEpLS/H444/j559/dmlnTKvVolevXsjKqr74YDabkZWVJS7AW1OXLl1w8OBBHDhwQNweeeQRDBw4EAcOHOBQVKI6KDWfAPkyioichxkkZfc3jz4+Pnj44Yfx8MMPo6ysDJ9++inWrVuHgQMHok2bNjh16pRDhZDnMqnUKNH4osKoQrFejWtGJ01trAIq/LQobh8MjcGEpheKASPvf3SEWTDCLNT+b2epzd0EBwdjxowZjX7c1NRUjBkzBr1790ZcXBwyMzNRWlqKcePGAQBGjx6NqKgoZGRkwN/fH927d5e8PiQkBABqtRORlJLzCZAvo4jIOZhBUg2aYzYwMBCJiYm4du0azp49i6NHjzqrLvIQGh8BUAsw+2hQUgEU6mt3HK19CekreXLTr2rVJDm+aqib+EAV1QS+ahNMp4pRdfetQVNz2KrlY9w886q3DmNV0pCMX3/9Fd27d4darcavv/5a5749e/Z0WR1JSUm4fPkyZs2aBZ1Oh9jYWGzZskWcRCc3NxdqtfuvAUXk7pSUT4D7ZBQROQczSMqhzmPVN44ffvghsrKyEB0djZEjR2Ljxo2OvB15OA0AtdmEq+U+LvmYCVDBrFZB30QLla8GGoP738Dsbqzd+O2ON4PHxsZCp9MhPDwcsbGxUKlUEITav1kqlQomk2vrT0lJQUpKisWfZWdn1/natWvXOr8gIg+kpHwC3CujiKjhmEFSdnceR4wYga+++gqBgYF48sknMXPmTIv3+JB3+qbNg5LnD57bioqKCqi++w4VeyzfmCuZF8fqO1sfGmA2CzAbzKgQVPARAMFY+QEx2/B58NZvGm+mpGA8ffo0WrZsKT4mIs+mpHwCmFFEnoYZJGV351Gj0eCjjz7iLKtkM7PZjJKSEpe9v9osQGUC1CYTVCb3HELg7pS0hlG7du3Ex2fPnkXfvn3h4yONMqPRiN27d0v2JSJlUlI+AcwoIk/DDJKy64Ycg8EAnU6HW2+9lR1HsokgCCgoKHDd0BxBAAQVBA2gLdFDxSGrDlHqGkYDBw5EQUFBrfaioiKuoUbkIZSaTwAzisgTMIOk7Prm0dfXt94bL8m7PXjuG8nziooKFBYWVl5sqDADVROI+NYcoOpr4dFNrI1nNQkwCgKEyzdgvFAGs6H+tR1r4oQ5lQRYvvHb3b/HFQQBKpWqVvvVq1fRpEkTGSoiImdTaj4BzCgiT8AMkrJ72Opf/vIXvPfee5g/f75DByTvYjabUV5eDo1GgwCjATe0fs49gAD4FlUg8FwJNBUmNx1A4P4EK1fQBAeuqi1btgyLFi2CTqdDTEwMli5diri4uHpft379eowcORKPPvooPvvsszr3ffzxxwFU3uw9duxY+PlV/16ZTCb8+uuv6Nu3r921E5H7cWY+AcwoIrIPM0jK7s6j0WjE6tWrsX37dvTq1atWr3XJkiUOFeJMjv6jkPOp1WpoNBqoVCo00+txw8e3+ttHJ1DpjfDPL4XPdb3T3tMbOetm8A0bNiA1NRUrVqxAnz59kJmZicTERBw/fhzh4eFWX3fmzBm8+uqrGDBggE3HCQ4OBlB5Ra1Zs2YICAgQf6bVanH33XdjwoQJdtVORO7JmZNVMKOIyF7MICm7O4+HDh3CnXfeCQA4ceKE5GeWvhZtbI7+o5BraLVa8Rf4RjHgf6Mc5S0CbxqGWuOJ1XGrFpjM0JYa4HOuGMY/hqsaDfUPIvDWoal1cdbN4EuWLMGECRMwbtw4AMCKFSuwefNmrF69GtOnT7f4GpPJhKeffhpz5szBDz/8gMLCwnqPs2bNGgBA+/bt8eqrr3L4F5EHc+ZkFcwoIrIXM0jK7s7jjh07nHZwV3DkH4VcR6VSITIyEi1atMDvPmr4GIzADT3QRNuwNzYKUBnNCLpYAr+CcucU68Xqu6pWXFwsaffz85MMgQAAvV6Pffv2IS0tTWxTq9VISEhATk6O1WPPnTsX4eHhGD9+PH744Qe76k5PT7drfyJSHmfkE8CMIiLHMIOk7O48Vjl58iROnTqFe+65BwEBAVZvyGxM9v6jVFRUoKKiQnx+8z8+OUdAQAC6dOmCg4U3UNHEF1qDGWbBAKPKnq8ZaxAEaMoq4FdmRPMzBXWsDUm2MphVMJhrf36r2qKjoyXt6enpmD17tqTtypUrMJlMiIiIkLRHRETg2LFjFo/7448/4r333sOBAwdsrvXOO+9EVlYWQkNDcccdd9SZO/v377f5fYnIPTkjnwBmFBE5hhkkZXfn8erVq3jyySexY8cOqFQq/Pbbb7jlllswfvx4hIaG4h//+IfdRTiLvf8oGRkZmDNnTmOV55X+7ZcAoHJGqqFHVyI3NxfXrl3Db9t+gLGJCvDzAWr+TtfVExQA6I3wKzMARXoE/H4NhpMlMLv/TMluzyxUbpbaASAvLw9BQUFiu6UravYqKSnBqFGjsGrVKoSFhdn8ukcffVQ8/vDhwxtcBxG5NznyCWBGEVElZpCU3Z3HyZMnw9fXF7m5ubj99tvF9qSkJKSmpsraebRXWloaUlNTxefFxcW1rh6Qc6gAtG7dWrxx90p+CTQtmqCsiQ/MAf5AXcuGmgSo9Eb4VpjgV1YOX70A89nraHLqGtQAZ1h1AqOVq2rGP9qCgoIkwWhJWFgYNBoN8vPzJe35+fmIjIystf+pU6dw5swZDBs2TGwzmyv/NX18fHD8+HF07Nix1utqDsHgkDAiz+eMfAKYUUTkGGaQlN2dx23btmHr1q1o06aNpP3WW2/F2bNnnVaYI+z9R7E2Jplcw9/fH1FRUQgICEBAURn0Wh/4VBhhDhZww1cDo68GgkYNlWCGoFJDZTKjSWkFNCYBerUaGoMJfuUCml0pgenEVWiLOcOqsxjNKjEEb263lVarRa9evZCVlSVe6TKbzcjKykJKSkqt/bt06YKDBw9K2l577TWUlJTgzTff5IUcIgLgnHwCmFFE5BhmkJTdncfS0lIEBgbWai8oKJC9I2bvPwq5Xs3ZT9/3qR7Cqm7iA9/IcqiC/KC6YYRvkBb6plqYWwZCUAMqoxmawgr4GMwwazXw1Zvgd7kM2vzrEK5VQG0CjH+8r9nSWAJIZ1Vdox5k8TFnXq1kElQwCbVD0FJbXVJTUzFmzBj07t0bcXFxyMzMRGlpqTiB1ejRoxEVFYWMjAz4+/uje/fukteHhIQAQK32mkJDQ22+v7qgoMCu+onI/TgrnwBmFBHZjxkkZXfnccCAAfjggw/w+uuvA6icTdNsNmPhwoUYOHCg3QU4W33/KCQ/FQCN3gT//FJUQAWzVg2fS2Xwu3IDmsIyVAQHAAKgKSqHyihAU2EELpXBp0Qv3h7JoarOZYQKRgshaIR9wZiUlITLly9j1qxZ0Ol0iI2NxZYtW8T7kHNzc6Fu4DqfmZmZDXo9ESmLs/IJYEYRkf2YQVJ2dx4XLlyIQYMGYe/evdDr9Zg6dSoOHz6MgoIC7Nq1yxU12qW+fxRyH5oKE/zyr8MQ4g9ToC8EtQpag4CmeYXwLTNAKDcDJgFqgwn6CnYXXam+m8HtkZKSYvWb/uzs7Dpfu3bt2nrff8yYMfYXRUSK5cx8AphRRGQfZpCU3Z3H7t2748SJE3j77bfRrFkzXL9+HY8//jiSk5PRqlUrV9Rot7r+UUg+Y4zbxcfi0NEKM1TFBmi0GghqFcwABL2p1jeL1oam1oXDU21X383g7qS4uFi8Mb2+5XVsuYGdiNybkvIJYEYReRpmkJRD6zwGBwdjxowZjryUqBYVAJW+cr0Ntdo9P4ierr41jNxJaGgoLl68iPDwcISEhFgc11+17qzJxHVciJROSfkEMKOIPA0zSMruzuOWLVvQtGlT9O/fHwCwbNkyrFq1Cl27dsWyZcsQGhpqdxFEJC+zoILZwnh+S21y++6779C8eXMAwI4dO2SuhohcTUn5BDCjiDwNM0jK7s7jX//6VyxYsAAAcPDgQaSmpmLKlCnYsWMHUlNTsWbNGqcXSd7DkeGptqg5hLUmDmetZDBXbpba3c29995r8TEReSYl5RPAjCLyNMwgKbs7j6dPn0bXrl0BAJ988gmGDRuGN954A/v378fQoUOdXiARuZ6z1jCSw7Vr1/Dee+/h6NGjAICuXbti3Lhx4lU3IlI2JecTIG9GLVu2DIsWLYJOp0NMTAyWLl2KuLg4i/uuWrUKH3zwAQ4dOgQA6NWrF9544w2r+xN5C2aQlN1zwWq1WpSVlQEAtm/fjsGDBwMAmjdvXu9NmeTd1qgHiVtjGGfOEjdb2r2Z+Y81jG7e3HVIRpWdO3eiffv2eOutt3Dt2jVcu3YNb731Fjp06ICdO3fKXR4ROYFS8wmQN6M2bNiA1NRUpKenY//+/YiJiUFiYiIuXbpkcf/s7GyMHDkSO3bsQE5ODqKjozF48GCcP3/epXUSuTtmkJTd3zz2798fqamp6NevH/bs2YMNGzYAAE6cOIE2bdo4VAQRyUupV9WSk5ORlJSE5cuXQ6PRAABMJhNefPFFJCcn4+DBgzJXSEQNpdR8AuTNqCVLlmDChAniOtcrVqzA5s2bsXr1akyfPr3W/h9++KHk+bvvvotPPvkEWVlZGD16tMvqJHJ3zCApu795fPvtt+Hj44ONGzdi+fLliIqKAgB88803GDJkiN0FEJH8KsfzqyxscldWt5MnT2LKlCliIAKARqNBamoqTp48KWNlROQsSs0nQL6M0uv12LdvHxISEsQ2tVqNhIQE5OTk2PQeZWVlMBgMVoe2VVRUoLi4WLIReSJmkJTd3zy2bdsWX331Va32f/7znw4VQJ6t5tBQW4ar2rt/XbjOo+2cvQBuY7nzzjtx9OhRdO7cWdJ+9OhRxMTEyFQVETmTUvMJkC+jrly5ApPJhIiICEl7REQEjh07ZtN7TJs2Da1bt5Z0QGvKyMjAnDlzGlwrkbtjBkk5tM6jyWTCp59+Kt54efvtt2P48OHw8XHo7YhIZnoB8LFwBU3vhsH466+/io9ffvllTJo0CSdPnsTdd98NAPjpp5+wbNkyzJ8/X64SiciJlJRPgGdk1Pz587F+/XpkZ2fD39/f4j5paWlITU0VnxcXFyM6OrqxSiRqNMwgKbt7e4cPH8awYcOQn58v9mIXLFiAli1b4ssvv0T37t0dKoSI5CNYuaomuGEwxsbGQqVSQahR3NSpU2vt99RTTyEpKakxSyMiF1BSPgHukVFhYWHQaDTIz8+XtOfn5yMyMrLO1y5evBjz58/H9u3b0bNnT6v7+fn5wc/Pzyn1ErkzZpCU3Z3HZ599Ft27d8e+ffsQGhoKoHIK2LFjx+K5557D7t277S6CyFnsHZ5689BYbx3eqjcDGktX1dxwPP/p06flLoGIGpGS8glwj4zSarXo1asXsrKyMHz4cACA2WxGVlYWUlJSrL5u4cKFmDdvHrZu3YrevXs3UrVE7o0ZJGV35/HAgQPYu3ev2HEEgNDQUMybNw933XWXU4sjosZhMFsekuGON4O3a9dO7hKIqBEpKZ8A98mo1NRUjBkzBr1790ZcXBwyMzNRWloqzr46evRoREVFISMjA0DlKLJZs2Zh3bp1aN++PXQ6HQCgadOmaNq0qWznQSQ3ZpCU3Z3H2267Dfn5+ejWrZuk/dKlS+jUqZPTCiOixmMSKjdL7Upw5MgR5ObmQq/XS9ofeeQRlx6XC3ATuZ7S8wmQJ6OSkpJw+fJlzJo1CzqdDrGxsdiyZYs4iU5ubi7U6upJ95cvXw69Xo8//elPkvdJT0/H7NmzXVYnkbtjBknZ1HmsOf1yRkYGXn75ZcyePVty4+XcuXOxYMECuwsgz2LrDKnWZlVt6Ayr1mqxNhzVW4ep3sxotnwFzeimV9Wq/P7773jsscdw8OBByfh+lapy7SWTyeSyY1ctwL1ixQr06dMHmZmZSExMxPHjxxEeHl5r/6oFuPv27Qt/f38sWLAAgwcPxuHDh8Ulj4ioNqXmEyBvRgFASkqK1WGq2dnZkudnzpxxaS1ESsUMkrJpnceQkBCEhoYiNDQUw4YNw5EjR/Dkk0+iXbt2aNeuHZ588kkcOnQIw4YNs7sAIpKf3mx9c2eTJk1Chw4dcOnSJQQGBuLw4cPYuXMnevfuXesPI2eruQB3165dsWLFCgQGBmL16tUW9//www/x4osvIjY2Fl26dMG7774r3oNkDddRI1JuPgHyZhQROQczSMqmbx537Njh0JsTkTKYBBVMgspiuzvLycnBd999h7CwMKjVaqjVavTv318cIfHzzz+75LhVC3CnpaWJbc5egBvgOmpEgHLzCZAvo4jIeZhBUjZ1Hu+9916735i8U13DQG0ZkmptOGtDa7FlCKs3M1iZScxdbwavYjKZ0KxZMwCVU9NfuHABnTt3Rrt27XD8+HGXHbcxFuAGuI4aEaDcfALkyygich5mkJTdE+YAQGFhId577z0cPXoUANCtWzc888wzCA4OdqgIIpKX2crN4JbWNXIn3bt3xy+//IIOHTqgT58+WLhwIbRaLVauXIlbbrlF7vKssmUBboDrqBEBys0nQLkZRUTVmEFSdnce9+7di8TERAQEBIizBC5ZsgTz5s3Dtm3bcOeddzpUCBHJx2AC1BbumTa4di6HBnvttddQWloKAJg7dy4efvhhDBgwAC1atMCGDRtcdtzGWICbiCopNZ8A+TKKiJyHGSRld+dx8uTJeOSRR7Bq1Sr4+FS+3Gg04tlnn8Urr7yCnTt3OlQIKUtDh4Fae721oao3H8Pe43Ooat0MAqC2NCTDgatqjbl8RWJiovi4U6dOOHbsGAoKChAaGirOJOYKXICbqPE4M58A78goInIeZpCUTbOt1rR3715MmzZN7DgCgI+PD6ZOnYq9e/c6VAQRyatqDSNLmz2qlq9IT0/H/v37ERMTg8TERFy6dMni/lXLV+zYsQM5OTmIjo7G4MGDcf78ebvPIS8vD3l5eWjevHmj/FGWmpqKVatW4f3338fRo0fxwgsv1FqAu+aEOgsWLMDMmTOxevVqcQFunU6H69evu7xWIiVzVj4B3pVRROQczCApuzuPQUFByM3NtVhQ1Q2Z5PnGmbPEzZmvr9le1zEaenySMliZgtrem8EbY/mKmoxGI2bOnIng4GC0b98e7du3R3BwMF577TUYDAb7irdTUlISFi9ejFmzZiE2NhYHDhyotQD3xYsXxf1rLsDdqlUrcVu8eLFL6yRSOmflE+BdGUVEzsEMkrJ72GpSUhLGjx+PxYsXo2/fvgCAXbt24a9//StGjhzpUBFEJC+DGVDVMZPYzesLWprIpbGWr6jppZdewqZNm7Bw4ULEx8cDqJyWevbs2bh69SqWL19u0/s4igtwE7meM/IJ8M6MIqKGYwZJ2d15XLx4MVQqFUaPHg2j0QgA8PX1xQsvvID58+fbXQARyc9sVsFsrj2Eoart5uUh0tPTMXv2bElbYy1fUdO6deuwfv16PPjgg2Jbz549ER0djZEjR/IPM3IaLuguH2fkE8CMIvfALFEeZpCU3Z1HrVaLN998ExkZGTh16hQAoGPHjggMDLT74ETOxvUcHWM0qKE21B7FbvyjLS8vD0FBQWK7K5aPsHX5ipr8/PzQvn37Wu0dOnSAVqt1coVEJAd3yCeAGUWuU9WhvO+++2StgyxjBknZfc9jlcDAQPTo0QM9evRgx5FI4YxGtdUNqLzXueZmKRidsXzFtm3b7Fq+IiUlBa+//joqKirEtoqKCsybN6/OWU+JSDmckU8AM4qIHMMMkrL7m0ci8jyCWQWzqfaQDMHCMA1rGmv5iscff1zyfPv27WjTpg1iYmIAAL/88gv0ej0GDbK87AsRKYsz8glgRhGRY5hBUuw8kks19jBSDlV1jNGohspoYUiGhba6pKamYsyYMejduzfi4uKQmZlZa/mKqKgoZGRkAKhcvmLWrFlYt26duHwFADRt2hRNmza1eIzg4GDJ8yeeeELy/OZ7D4hI2ZyVTwAziojsxwySYueRiGA2V26W2u2RlJSEy5cvY9asWdDpdIiNja21fIVaXR22NZevqMnazeYAsGbNGvuKImpk37SpnpjgwXPfyFiJZ3BWPgHMKCKyHzNIip1HIoLRoIaqjpvB7SHH8hWXL1/G8ePHAQCdO3dGy5YtnfK+RCQ/Z+YTwIwiIvswg6TYeSSH2DoclcNIlcFgUAMWQtDgYDA2ltLSUrz00kv44IMPYP7jEqBGo8Ho0aOxdOlSTuZF5AGUmk8AM4rIEzCDpNz/rInI5cyCSlzHSLIJ9t0M3thSU1Px/fff48svv0RhYSEKCwvx+eef4/vvv8eUKVPkLo88XHZ2NtdsawRKzSeAGUXkCZhBUvzmkYhgsnIzuMmBm8Eb0yeffIKNGzdK1sYaOnQoAgIC8OSTT3IBbnIp4871AIDyXf/E+R8duPmFbKLUfAKYUUSegBkkxc4jOYTDUT2L0aAGfJw3nr+xlJWViTeZ1xQeHo6ysjIZKiIiZ1NqPgHMKG937k8PiY/bbNwsYyXUEMwgKfc/ayJyucqZxCwNy5C7srrFx8cjPT0d5eXlYtuNGzcwZ84cxMfHy1gZETmLUvMJYEaRfQzvjhQ3ch/MICl+80hEir2qlpmZiSFDhtRa/Nbf3x9bt26VuTryBMb/jAIAmAuaAwDUPR+TsxyvpNR8AphRRJ6AGSTFziMRiTeDW2p3Zz169MBvv/2GDz/8EMeOHQMAjBw5Ek8//TQCAgJkro48kfDbV3KX4HWUmk8AM4rIEzCDpNh5JCKYDGpAY+FmcDe+qmYwGNClSxd89dVXmDBhgtzlEJGLKDGfAGaUt9ra7kHxcbe7qn9HDcuTAACm6y2huetPtV5H7osZJMXOIxHBbARURsvt7srX11cyhp+IPJMS8wlgRpF1wrnt1U9MJvkKIZswg6TYeSTFW6MeJD7mLLCOUZsFqM1CrXbBQps7SU5OxoIFC/Duu+/Cx4dxRu7nw4AHxMdP3/hWxkqUS6n5BDCjvEHNzzgAhIVb/nfeeb1lY5RDLsAMkmKSERHUBjM0mtrThgkG955K7P/+7/+QlZWFbdu2oUePHmjSpInk55s2bZKpMqLa3vdJEB+PMW6vY0+qSan5BDCjPFXNi9ZaP+cNXdxZHAYAuCfoitPekxqOGSTFziMpHr9tbDiNyQyN0UIwmtw7GENCQvDEE0/IXQZ5uR9NrVDcRkDMuQtyl+KRlJpPADOKHPf7Q8Mkz2/Z/KVMlRAzSIqdRyKC2gSoTbWHX6jd/FaMNWvWyF0CebidfyzRQfJRaj4BzCgiT8AMkmLnkYjgYzTDx8KQDFi40uYOzGYzFi1ahC+++AJ6vR6DBg1Ceno6p74n8kBKyyeAGeWJag5VJe/CDJJy7zlm/3DmzBmMHz8eHTp0QEBAADp27Ij09HTo9XrJfr/++isGDBgAf39/REdHY+HChTJV7J7WqAeJG1FNGqPZ6uaO5s2bh7/97W9o2rQpoqKi8OabbyI5OVnusshD5P/lQXFzlZp5zEyum9LyCWBGkWt9GPCAuJHrMYOkFPHN47Fjx2A2m/Gvf/0LnTp1wqFDhzBhwgSUlpZi8eLFAIDi4mIMHjwYCQkJWLFiBQ4ePIhnnnkGISEheO6552Q+AyL3pjYJVoZkuOdMYh988AHeeecdPP/88wCA7du346GHHsK7774LtVoR18SIyEZKyyeAGUXOt+O2h+QuwWsxg6QU0XkcMmQIhgwZIj6/5ZZbcPz4cSxfvlzsPH744YfQ6/VYvXo1tFotunXrhgMHDmDJkiXsPBLVQ23lZnCzm94Mnpubi6FDh4rPExISoFKpcOHCBbRp00bGykipDvZ7VHwc3kHGQqgWpeUTwIwi8iTMIClFdB4tKSoqQvPm1RMZ5OTk4J577oFWqxXbEhMTsWDBAly7dg2hoaG13qOiogIVFRXi8+LiYtcWLTPOSkrWWFvDyFKbOzAajfD395e0+fr6wmAwyFQREbmK0vIJYEZR4+ESQK7HDJJSZOfx5MmTWLp0qfitIwDodDp06CC9XBwRESH+zFLnMSMjA3PmzHFtsUQKoDGYoVFZuKrmpmsYCYKAsWPHws/PT2wrLy/HxIkTJWsYcQ01aoj/a94GgY10rJr3PfJCn5TS8glgRnkKue5H3lkchuKoIMSc5/I/7oAZJCVr53H69OlYsGBBnfscPXoUXbp0EZ+fP38eQ4YMwZ///GdMmDChQcdPS0tDamqq+Ly4uBjR0dENek8iJfIxmuBjYc5pweie81CPGTOmVttf/vIXGSohqvZLm9YAgICDuTJX4lmUlk8AM4rIkzCDpGTtPE6ZMgVjx46tc59bbrlFfHzhwgUMHDgQffv2xcqVKyX7RUZGIj8/X9JW9TwyMtLie/v5+Ul65ETeypk3gy9btgyLFi2CTqdDTEwMli5diri4OKv7f/zxx5g5cybOnDmDW2+9FQsWLJCM07fEXdZOa4xzJdf5rGWi+Ljjbf517ElycvZkFcwoZlRdnP1t4/7wKABAk3r2cwaOYHANZpCUrFN+tWzZEl26dKlzq7qH8fz587jvvvvQq1cvrFmzptZMQfHx8di5c6dkLO+3336Lzp07WxyySkTVNCYr01DbeTP4hg0bkJqaivT0dOzfvx8xMTFITEzEpUuXLO6/e/dujBw5EuPHj8fPP/+M4cOHY/jw4Th06JAzTsulvOlcvc3/NW+D/2su36QmXMJDyln5BHjX59abztUWNy+Pw88Z2YoZJKUSBMF97/b8Q1XHsV27dnj//feh0WjEn1V9q1hUVITOnTtj8ODBmDZtGg4dOoRnnnkG//znP22ebbW4uBjBwcEoKipCUFCQS86FyJka+jtb9fonH1kJX9/ad3cZDGX46IvnbH7/Pn364K677sLbb78NoHKR2ujoaLz00kuYPn16rf2TkpJQWlqKr776Smy7++67ERsbixUrVth9Po1JjnNlRjmXtW8ez/YKFx8HdpJ+LlQBvuJj08Xr4uPivOr/KQ34pnrYWf/rHgAACaRJREFUasFVo/jYaKjex+zARAtK+ybB3fIJYEa58lzdPZ9c1UnU+km/zAgLrx7U1+0udfU3jx2qJ3RUtwqpfoGpeuij+WqNTDmml9zzePa36o7Khbzqdc69LVecqb7fWWaQZYqYMOfbb7/FyZMncfLkyVrTy1b1fYODg7Ft2zYkJyejV69eCAsLw6xZs+xapqPqvTx91lXyHFW/qw29BmTQ3wAsXEAzGG9IjlPF0pBvvV6Pffv2IS0tTWxTq9VISEhATk6OxePm5ORI7jsGKmdJ/uyzzxw4i8bTWOd684zQRUVFAJhRtvhP8DDx8V+KvhQfb2xVvSSHv3/1H33XjdWjVsr01X+YCeXVFysBQFXjg2Iq19d4TfVn8FyPcET9UvlHX5lQ3Xk01ficmh34zCrt392d8glgRjn7XJWQTzVzwFWMgrTzWPrH7+r5nq1xLUQFVOVJefU+6hvV/90knUdJpuiR0zIMAND9wkWU1viWy5m58o7qXovtNXPTU9maUcwgKUV0HseOHVvvvZEA0LNnT/zwww8OH6ekpAQAOGkOKU5JSQmCg4Ptfp1Wq0VkZCQ+3TLJ6j5Nmzat9ZlIT0/H7NmzJW1XrlyByWQSZzmuEhERgWPHjll8b51OZ3F/nU5nx1k0vsY6V2szQjOj7JNs7bNRVuPxHiuP3YjV83Bz7pBPADMKcO65Mp/+UHHT83M3/X+FUmreOMJaRjGDLFNE57GxtG7dGnl5eWjWrBlUKpXc5ditarbYvLw8txwy4ireeN5V55ybmwuVSoXWrVs79D7+/v44ffo09DW+abmZIAi1Pg+caKpx3DwjtNlsRkFBAVq0aMGMUghvPmfmk2ezN5+87bPgbecLKO+cBUFASUmJ1YxiBlnGzmMNarW61rBYJQoKClLEh9bZvPG8g4ODG3zO/v7+tRaSdURYWBg0Go3FWY+tzXhsbZZka/u7i8Y6V0tDX0JCQhwr2o1442fVG8/ZnfIJYEYBzj1XR/PJ2z4L3na+gLLOub5REcyg2mSdbZWIPIdWq0WvXr2QlVV9873ZbEZWVhbi4+MtviY+Pl6yP1B5j7O1/d2FN50rkafwps+tN50rkVJ4zOdSII9RVFQkABCKiorkLqVReeN5u+s5r1+/XvDz8xPWrl0rHDlyRHjuueeEkJAQQafTCYIgCKNGjRKmT58u7r9r1y7Bx8dHWLx4sXD06FEhPT1d8PX1FQ4ePCjXKdjMm87VWdz199aVeM7uxZs+t+52ru78e+EK3na+guCd52wvd/tcOoKdRw9SXl4upKenC+Xl5XKX0qi88bzd+ZyXLl0qtG3bVtBqtUJcXJzw008/iT+79957hTFjxkj2/+ijj4TbbrtN0Gq1Qrdu3YTNmzc3csWO86ZzdQZ3/r11FZ6z+/Gmz607nau7/144m7edryB45zk7wp0+l45QxDqPREREREREJC/e80hERERERET1YueRiIiIiIiI6sXOIxEREREREdWLnUciIiIiIiKqFzuPREREREREVC92Hj3AmTNnMH78eHTo0AEBAQHo2LEj0tPTodfrJfv9+uuvGDBgAPz9/REdHY2FCxfKVLHzLFu2DO3bt4e/vz/69OmDPXv2yF2S02RkZOCuu+5Cs2bNEB4ejuHDh+P48eOSfcrLy5GcnIwWLVqgadOmeOKJJ5Cfny9TxUSWMaOYUcwo7+Wtn39P/ezzc09c59EDfPPNN8LYsWOFrVu3CqdOnRI+//xzITw8XJgyZYq4T1FRkRARESE8/fTTwqFDh4T//ve/QkBAgPCvf/1LxsobZv369YJWqxVWr14tHD58WJgwYYIQEhIi5Ofny12aUyQmJgpr1qwRDh06JBw4cEAYOnSo0LZtW+H69eviPhMnThSio6OFrKwsYe/evcLdd98t9O3bV8aqiWpjRjGjmFHeyxs//5782efnnth59FALFy4UOnToID5/5513hNDQUKGiokJsmzZtmtC5c2c5ynOKuLg4ITk5WXxuMpmE1q1bCxkZGTJW5TqXLl0SAAjff/+9IAiCUFhYKPj6+goff/yxuM/Ro0cFAEJOTo5cZRLZhBnleZhRZCtP//x702efn3vvw2GrHqqoqAjNmzcXn+fk5OCee+6BVqsV2xITE3H8+HFcu3ZNjhIbRK/XY9++fUhISBDb1Go1EhISkJOTI2NlrlNUVAQA4r/rvn37YDAYJP8NunTpgrZt23rsfwPyHMwoz8OMIlt58uff2z77/Nx7H3YePdDJkyexdOlSPP/882KbTqdDRESEZL+q5zqdrlHrc4YrV67AZDJZPCclnk99zGYzXnnlFfTr1w/du3cHUPnvptVqERISItnXU/8bkOdgRinvfOrDjCJbefrn35s++/zceyd2Ht3Y9OnToVKp6tyOHTsmec358+cxZMgQ/PnPf8aECRNkqpycLTk5GYcOHcL69evlLoVIxIyiKswo78PPP/Fz75185C6ArJsyZQrGjh1b5z633HKL+PjChQsYOHAg+vbti5UrV0r2i4yMrDXTVdXzyMhI5xTciMLCwqDRaCyekxLPpy4pKSn46quvsHPnTrRp00Zsj4yMhF6vR2FhoeQKnyf+NyD3xIyyjhnFjPJ0/Pxb5i2ffX7uvZjcN12Sc5w7d0649dZbhREjRghGo7HWz6tuRtfr9WJbWlqaYm9GF4TKG9JTUlLE5yaTSYiKivKYG9LNZrOQnJwstG7dWjhx4kStn1fdlL5x40ax7dixY7wpndwSM4oZJQjMKG/lbZ9/T/7s83NP7Dx6gHPnzgmdOnUSBg0aJJw7d064ePGiuFUpLCwUIiIihFGjRgmHDh0S1q9fLwQGBip2GmxBqJwK28/PT1i7dq1w5MgR4bnnnhNCQkIEnU4nd2lO8cILLwjBwcFCdna25N+0rKxM3GfixIlC27Zthe+++07Yu3evEB8fL8THx8tYNVFtzChmFDPKe3nj59+TP/v83BM7jx5gzZo1AgCLW02//PKL0L9/f8HPz0+IiooS5s+fL1PFzrN06VKhbdu2glarFeLi4oSffvpJ7pKcxtq/6Zo1a8R9bty4Ibz44otCaGioEBgYKDz22GOS/0EmcgfMKGYUM8p7eevn31M/+/zck0oQBMGFo2KJiIiIiIjIA3C2VSIiIiIiIqoXO49ERERERERUL3YeiYiIiIiIqF7sPBIREREREVG92HkkIiIiIiKierHzSERERERERPVi55GIiIiIiIjqxc4jERERERER1YudRyIiIiIiIqoXO49ERERERERUL3YeiYiIiIiIqF7/D6eaHvG0XrI/AAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from sbi.analysis.plot import marginal_plot_with_probs_intensity\n", + "from sbi.utils.analysis_utils import get_probs_per_marginal\n", + "\n", + "label = \"Probabilities (class 0)\"\n", + "# label = r\"$\\hat{p}(\\Theta\\sim q_{\\phi}(\\theta \\mid x_0) \\mid x_0)$\"\n", + "\n", + "fig, axes = plt.subplots(len(thetas_star), 3, figsize=(9,6), constrained_layout=True)\n", + "for i in range(len(thetas_star)):\n", + " probs_data, _ = lc2st.get_scores(\n", + " theta_o=post_samples_star[i][:1000],\n", + " x_o=xs_star[i],\n", + " return_probs=True,\n", + " trained_clfs=lc2st.trained_clfs\n", + " )\n", + " dict_probs_marginals = get_probs_per_marginal(\n", + " probs_data[0],\n", + " post_samples_star[i][:1000].numpy()\n", + " )\n", + " # 2d histogram\n", + " marginal_plot_with_probs_intensity(\n", + " dict_probs_marginals['0_1'],\n", + " marginal_dim=2,\n", + " ax=axes[i][0],\n", + " n_bins=50,\n", + " label=label\n", + " )\n", + " axes[i][0].scatter(\n", + " ref_samples_star[i][:,0],\n", + " ref_samples_star[i][:,1],\n", + " alpha=0.2,\n", + " color=\"gray\",\n", + " label=\"True posterior\"\n", + " )\n", + "\n", + " # marginal 1\n", + " marginal_plot_with_probs_intensity(\n", + " dict_probs_marginals['0'],\n", + " marginal_dim=1,\n", + " ax=axes[i][1],\n", + " n_bins=50,\n", + " label=label,\n", + " )\n", + " axes[i][1].hist(\n", + " ref_samples_star[i][:,0],\n", + " density=True,\n", + " bins=10,\n", + " alpha=0.5,\n", + " label=\"True Posterior\",\n", + " color=\"gray\"\n", + " )\n", + "\n", + " # marginal 2\n", + " marginal_plot_with_probs_intensity(\n", + " dict_probs_marginals['1'],\n", + " marginal_dim=1,\n", + " ax=axes[i][2],\n", + " n_bins=50,\n", + " label=label,\n", + " )\n", + " axes[i][2].hist(\n", + " ref_samples_star[i][:,1],\n", + " density=True,\n", + " bins=10,\n", + " alpha=0.5,\n", + " label=\"True posterior\",\n", + " color=\"gray\"\n", + " )\n", + "\n", + "axes[0][1].set_title(\"marginal 1\")\n", + "axes[0][2].set_title(\"marginal 2\")\n", + "\n", + "for j in range(3):\n", + " axes[j][0].set_ylabel(f\"observation {j + 1}\")\n", + "axes[0][2].legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Results**: the plots below indicate **over dispersion** of our estimator at all three considered observations. Indeed, the 2D histograms display a small blue-green region at the center where the estimator is \"underconfident\", surrounded by a yellow region of \"equal probability\", and the rest of the estimated posterior samlpes correspond to the red regions of \"overconfidence\". \n", + "\n", + "**Validation** of the diagnostic tool: we verify the statement of over dispersion by plotting the true posterior samples (in grey) and are happy to see that they fall into the underconfident region of the estimator. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Classifier choice and calibration data size: how to ensure meaningful test results\n", + "\n", + "### Choice of the classifier\n", + "If you are not sure about which classifier architecture is best for your data, you can do a quick check by looking at the variance of the results over different random state initializations of the classifier: For `i=1,2,...` \n", + "1. train the ith classifier: run `lc2st.train_on_observed_data(seed=i)` \n", + "2. compute the corresponding test statistic for a dataset `theta_o, x_o`: `T_i = lc2st.get_statistic_on_observed_data(theta_o, x_o)`\n", + "\n", + "For different classifier architectures, you should choose the one with the smallest variance. \n", + "\n", + "### Number of calibration samples\n", + "A similar check can also be performed via cross-validation: set the `num_folds` parameter of your `LC2ST` object, train on observed data and call `lc2st.get_scores(theta_o, x_o, lc2st.trained_clfs)`. This outputs the test statistics obtained for each cv-fold. You should choose the smallest calibration set size that gives you a small enough variance over the test statistics. \n", + "\n", + "> Note: Ideally, these checks should be performed in a **separable data setting**, i.e. for a dataset `theta_o, x_o` coming from a sub-optimal estimator: the classifier is supposed to be able to discriminate between the two classes; the test is supposed to be rejected; the variance is supposed to be small. In other words, we are ensuring a **high statistical power** (our true positive rate) of our test. If you want to be really rigurous, you should also check the type I error (or false positive rate), that should be controlled by the significance level of your test (cf. Figure 2 in [[Linhart et al., 2023]](https://arxiv.org/abs/2306.03580)).\n", + "\n", + "### Reducing the variance of the test results\n", + "To ensure more stable results, you can play with the following `LC2ST` parameters:\n", + "- `num_ensemble`: number of classifiers used for ensembling. An ensemble classifier is a set of classifiers initialized with different `random_state`s and whose predicted class probalility is the mean probability over all classifiers. It reduces the variance coming from the classifier itself.\n", + "- `num_folds`: number of folds used for cross-validation. It reduces the variance coming from the data.\n", + "\n", + "As these numbers increase the results become more stable (less variance) and the test becomes more disciminative (smaller confidence region).\n", + "Both can be combined (i.e. you can perform cross-validation on an ensemble classifier). \n", + "\n", + "> Note: Be careful, you don't want your test to be too discriminative!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The case of Normalizing Flows ($\\ell$-C2ST-NF)\n", + "\n", + "$\\ell$-C2ST can also be specialized for normalizing flows,leading to improved test performance. The idea is to train and evaluate the classifiers in the space of the base distribution of the normalizing flow, instead of the parameter space that can be highly structured. \n", + "Following Theorem 4 of [[Linhart et al., 2023]](https://arxiv.org/abs/2306.03580), the null hypothesis $\\mathcal{H}_0(x_\\mathrm{o}) := q_\\phi(\\theta\\mid x_\\mathrm{o}) = p(\\theta \\mid x_\\mathrm{o})$ of *local consistency* holds if, and only if, the inverse flow transformation applied to the target distribution recovers the base distribution. This gives us the following new null hypothesis for posterior estimators based on normalizing flows (cf. Eq. 17 in [[Linhart et al., 2023]](https://arxiv.org/abs/2306.03580)):\n", + "\n", + "$$\\mathcal{H}_0(x_\\mathrm{o}) := p(T_\\phi^{-1}(\\theta ; x_\\mathrm{o}) \\mid x_\\mathrm{o}) = \\mathcal{N}(0, \\mathbf{I}_m), \\quad \\forall \\theta \\in \\mathbb{R}^m~,$$\n", + "\n", + "which leads to a new binary classification framework to discriminate between the joint distributions $\\mathcal{N}(0, \\mathbf{I}_m)p(x)$ (class $C=0$) and $p(T_\\phi^{-1}(\\theta ; x_\\mathrm{o}), x_\\mathrm{o})$ (class $C=1$).\n", + "\n", + "This results in two main advantages leading to a statistically more performant and flexible test: \n", + "- **easier classification task:** it is easier to discriminate samples w.r.t. a simple Gaussian than a complex (e.g. multimodal) posterior. \n", + "- **an analytically known null distribution:** it consists of the base distribution of the flow, which is **independant of $x$ and the posterior estimator**. This also allows to pre-compute the null distribution and re-use it for any new posterior estimator you whish to evaluate. \n", + "\n", + ">Remember that the original $\\ell$-C2ST relies on a permutation method to approximate the null distribution.\n", + "\n", + "The new method is implemented within the `LC2ST_NF` class, built on the `LC2ST` class with following major changes:\n", + "- no evaluation samples `theta_o` have to be passed to the evaluation methods (e.g. `get_scores_on_observed_data`, `get_statistic_on_observed_data`, `p_value`, etc.)\n", + "- the precomputed `trained_clfs_null` can be passed at initialization\n", + "- no permutation method is used inside `train_under_null_hypothesis`\n", + "\n", + "\n", + "> Note: **Quick reminder on Normalizing Flows.** We consider a **conditional Normalizing Flow** $q_{\\phi}(\\theta \\mid x)$ with base distribution $p(z) = \\mathcal{N}(0,\\mathbf{1}_m)$ and bijective transormation $T_{\\phi}(.; x)$ defined on $\\mathbb{R}^2$ and for all $x \\in \\mathbb{R}^2$ for our example problem in 2D. Sampling from the normalizing flow consists of applying the forward transformation $T_\\phi$:\n", + ">$$\\theta = T_{\\phi}(z; x) \\sim q_{\\phi}(\\theta \\mid x), \\quad z\\sim p(z)~.$$\n", + ">**Characterization of the null hypothesis.** Comparing the estimated and true posterior distributions is equivalent to comparing the base distribution to the inversely transformed prior samples: \n", + ">$$ p(\\theta \\mid x) = q_{\\phi}(\\theta \\mid x) \\iff p(T_{\\phi}^{-1}(\\theta; x)\\mid x) = p(T_{\\phi}^{-1}(T_{\\phi}(z; x); x)) = p(z) = \\mathcal{N}(0,\\mathbf{1}_m)$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Set up $\\ell$-C2ST-NF\n", + "\n", + "The setup of the NF version is the same as for the original $\\ell$-C2ST, but the trained classifiers can be used to compute test results and diagnostics for any new observation **and new posterior estimator**." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Training the classifiers under H0, permutation = False: 0%| | 0/100 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, axes = plt.subplots(1,len(thetas_star), figsize=(12,3))\n", + "for i in range(len(thetas_star)):\n", + " probs, scores = lc2st_nf.get_scores(\n", + " x_o=xs_star[i],\n", + " return_probs=True,\n", + " trained_clfs=lc2st_nf.trained_clfs\n", + " )\n", + " T_data = lc2st_nf.get_statistic_on_observed_data(x_o=xs_star[i])\n", + " T_null = lc2st_nf.get_statistics_under_null_hypothesis(x_o=xs_star[i])\n", + " p_value = lc2st_nf.p_value(xs_star[i])\n", + " reject = lc2st_nf.reject_test(xs_star[i], alpha=conf_alpha)\n", + "\n", + " # plot 95% confidence interval\n", + " quantiles = np.quantile(T_null, [0, 1-conf_alpha])\n", + " axes[i].hist(T_null, bins=50, density=True, alpha=0.5, label=\"Null\")\n", + " axes[i].axvline(T_data, color=\"red\", label=\"Observed\")\n", + " axes[i].axvline(quantiles[0], color=\"black\", linestyle=\"--\", label=\"95% CI\")\n", + " axes[i].axvline(quantiles[1], color=\"black\", linestyle=\"--\")\n", + " axes[i].set_xlabel(\"Test statistic\")\n", + " axes[i].set_ylabel(\"Density\")\n", + " axes[i].set_xlim(-0.01,0.25)\n", + " axes[i].set_title(\n", + " f\"observation {i+1} \\n p-value = {p_value:.3f}, reject = {reject}\"\n", + " )\n", + "axes[-1].legend(bbox_to_anchor=(1.1, .5), loc='center left')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Results:** Again the test hypothesis is rejected for all three observations." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Qualitative diagnostics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### P-P plots\n", + "\n", + "**Results:** As before, the plots below show a general trend of overconfident behavior (red curves on the right side of the black dots)." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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U+dzcnJyapUHgHXr1nktDyh3vuLj42t9ERGpWVjFRybViCiIwio+EhEREfnI57khU6ZMwfjx49G3b19kZ2dj9uzZqK6uxn0X1+q555570LJlS7z88ssAgEcffRS5ubn461//ittvvx1LlizBd999h3feeadpW0JEFGKMj0REdWN8JCIiIq3yObE2atQonDt3Dn/+859RXFyMnj17YvXq1Z4FZo8fP15rB7L+/ftj0aJFeOaZZ/D000+jY8eOtRa2JyLSCsZHIqK6MT4SERGRVvm0xlqocG47ETWGlmOIlttGRIGn5Rii5bYRUXAwjhDR1fBpjTUiIiIiIiIiIiJSMLFGRERERERERETkBybWiIiIiIiIiIiI/ODz5gWh4F4GrqKiIsQ1IaJw5I4dYbCkpM8YH4moMRgfiYi803KMJKKmExaJtcrKSgBAZmZmiGtCROGssrISZrM51NVoUoyPRNQUGB+JiLzTYowkoqYTFruCyrKMU6dOIS4uDhEREQ2Wr6ioQGZmJoqKisJ69xa2Qz200Abg2m2HEAKVlZXIyMiATqetGfCMj2yHGmihHVpoA8D4eClf4yOgjf8HWmgDwHaojRba4U8btBwjiajphMWINZ1Oh+uuu87n58XHx4dt4L8U26EeWmgDcG22Q6t3GRkf2Q410UI7tNAGgPER8D8+Atr4f6CFNgBsh9pooR2+tkGrMZKImg7T7kRERERERERERH5gYo2IiIiIiIiIiMgPmkysmUwm5Ofnw2QyhboqjcJ2qIcW2gCwHaSdvx3boS5aaIcW2gBopx2hooW/nxbaALAdaqOFdmihDUSkTmGxeQEREREREREREZHaaHLEGhERERERERERUaAxsUZEREREREREROQHJtaIiIiIiIiIiIj8wMQaERERERERERGRH8I2sTZ37ly0adMGUVFR6NevH7799tt6y3/88cfIyspCVFQUunXrhlWrVgWppvXzpR3vvvsuBg0ahMTERCQmJiIvL6/BdgeLr/8ebkuWLEFERARGjhwZ2ApeBV/bUFZWhkmTJiE9PR0mkwmdOnVSxf8rX9sxe/ZsXH/99YiOjkZmZiYee+wx2Gy2INX2Sps3b8aIESOQkZGBiIgIrFixosHnbNq0Cb1794bJZEKHDh3wwQcfBLyeasb4yPjY1Bgf1REfAcbIpqCFGMn4qJ74CGgjRjI+Mj4SUSOIMLRkyRJhNBrFggULxL///W8xYcIEkZCQIM6cOVNn+YKCAqHX68Wrr74qDhw4IJ555hlhMBjE999/H+Sa1+ZrO8aMGSPmzp0rCgsLxcGDB8W9994rzGazOHHiRJBrXpuv7XA7duyYaNmypRg0aJD49a9/HZzKeuFrG+x2u+jbt68YPny42Lp1qzh27JjYtGmT2LNnT5BrXpuv7fjwww+FyWQSH374oTh27JhYs2aNSE9PF4899liQa15j1apVYvr06eKTTz4RAMTy5cvrLX/06FERExMjpkyZIg4cOCDmzJkj9Hq9WL16dXAqrDKMj4yPTY3xUT3xUQjGyMbSQoxkfFRPfBRCGzGS8ZHxkYgaJywTa9nZ2WLSpEme310ul8jIyBAvv/xyneXvuusucfvtt9c61q9fP/Hwww8HtJ4N8bUdl5MkScTFxYmFCxcGqopXxZ92SJIk+vfvL9577z0xfvz4kHeMfG3DvHnzRLt27YTD4QhWFa+Kr+2YNGmSuOWWW2odmzJlihgwYEBA63m1rqZT9OSTT4ouXbrUOjZq1CgxdOjQANZMvRgfFYyPTYfxsYaa4qMQjJH+0EKMZHxUT3wUQhsxkvGxxrUcH4nIf2E3FdThcGDXrl3Iy8vzHNPpdMjLy8P27dvrfM727dtrlQeAoUOHei0fDP6043IWiwVOpxNJSUmBqmaD/G3HjBkzkJqaigceeCAY1ayXP2347LPPkJOTg0mTJiEtLQ1du3bFSy+9BJfLFaxqX8GfdvTv3x+7du3yDPc/evQoVq1aheHDhwelzk1Bje/vUGF8rMH42DQYH8M7PgLqfI+HihZiJOOjeuIjoI0Yyfionvc3EYWvyFBXwFclJSVwuVxIS0urdTwtLQ0//PBDnc8pLi6us3xxcXHA6tkQf9pxuT/96U/IyMi44gMhmPxpx9atWzF//nzs2bMnCDVsmD9tOHr0KL766iuMHTsWq1atwuHDhzFx4kQ4nU7k5+cHo9pX8KcdY8aMQUlJCQYOHAghBCRJwn//93/j6aefDkaVm4S393dFRQWsViuio6NDVLPgY3yswfjYNBgfwzs+AoyRl9JCjGR8VE98BLQRIxkfGR+JqPHCbsQaKV555RUsWbIEy5cvR1RUVKirc9UqKysxbtw4vPvuu2jevHmoq+M3WZaRmpqKd955B3369MGoUaMwffp0vP3226Gumk82bdqEl156CW+99RZ2796NTz75BF988QVmzpwZ6qoR+Y3xMbQYH4nUi/Ex9LQQIxkfiYhqC7sRa82bN4der8eZM2dqHT9z5gxatGhR53NatGjhU/lg8KcdbrNmzcIrr7yC9evXo3v37oGsZoN8bceRI0fw008/YcSIEZ5jsiwDACIjI3Ho0CG0b98+sJW+jD//Funp6TAYDNDr9Z5jnTt3RnFxMRwOB4xGY0DrXBd/2vHss89i3LhxePDBBwEA3bp1Q3V1NR566CFMnz4dOp36c+/e3t/x8fHX3J1GxkfGx6bG+Bje8RFgjLyUFmIk46N64iOgjRjJ+Mj4SESNFx5R7xJGoxF9+vTBhg0bPMdkWcaGDRuQk5NT53NycnJqlQeAdevWeS0fDP60AwBeffVVzJw5E6tXr0bfvn2DUdV6+dqOrKwsfP/999izZ4/n61e/+hWGDBmCPXv2IDMzM5jVB+Dfv8WAAQNw+PBhT6cOAH788Uekp6eH5KIR8K8dFovlis6Pu6MnhAhcZZuQGt/focL4yPjY1Bgfwzs+Aup8j4eKFmIk46N64iOgjRjJ+Kie9zcRhbFQ7pzgryVLlgiTySQ++OADceDAAfHQQw+JhIQEUVxcLIQQYty4cWLatGme8gUFBSIyMlLMmjVLHDx4UOTn54d8q3QhfG/HK6+8IoxGo1i2bJk4ffq056uysjJUTRBC+N6Oy6lhVydf23D8+HERFxcnJk+eLA4dOiQ+//xzkZqaKl544YVQNUEI4Xs78vPzRVxcnFi8eLE4evSoWLt2rWjfvr246667QtUEUVlZKQoLC0VhYaEAIF5//XVRWFgofv75ZyGEENOmTRPjxo3zlHdvlf7EE0+IgwcPirlz517TW6UzPjI+NjXGR/XERyEYIxtLCzGS8VGhhvgohDZiJOMj4yMRNU5YJtaEEGLOnDmiVatWwmg0iuzsbLFjxw7PY7m5uWL8+PG1yi9dulR06tRJGI1G0aVLF/HFF18EucZ186UdrVu3FgCu+MrPzw9+xS/j67/HpdTSMfK1Ddu2bRP9+vUTJpNJtGvXTrz44otCkqQg1/pKvrTD6XSK5557TrRv315ERUWJzMxMMXHiRFFaWhr8il+0cePGOv+fu+s9fvx4kZube8VzevbsKYxGo2jXrp14//33g15vNWF8ZHxsaoyP6oiPQjBGNgUtxEjGR/XERyG0ESMZHxkfich/EUKE0XhdIiIiIiIiIiIilQi7NdaIiIiIiIiIiIjUgIk1IiIiIiIiIiIiPzCxRkRERERERERE5Acm1oiIiIiIiIiIiPzAxBoREREREREREZEfmFgjIiIiIiIiIiLyAxNrREREREREREREfmBijYiIiIiIiIiIyA9MrBEREREREREREfmBiTUiIiIiIiIiIiI/MLFGRERERERERETkBybWiIiIiIiIiIiI/PD/kafhl7FPWzwAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# P-P plots\n", + "from sbi.analysis.plot import pp_plot_lc2st\n", + "\n", + "fig, axes = plt.subplots(1,len(thetas_star), figsize=(12,3))\n", + "for i in range(len(thetas_star)):\n", + " probs_data, _ = lc2st_nf.get_scores(\n", + " x_o=xs_star[i],\n", + " return_probs=True,\n", + " trained_clfs=lc2st_nf.trained_clfs\n", + " )\n", + " probs_null, _ = lc2st_nf.get_statistics_under_null_hypothesis(\n", + " x_o=xs_star[i],\n", + " return_probs=True\n", + " )\n", + "\n", + " pp_plot_lc2st(\n", + " probs=[probs_data],\n", + " probs_null=probs_null,\n", + " conf_alpha=conf_alpha,\n", + " labels=[\"Classifier probabilities \\n on observed data\"],\n", + " colors=[\"red\"],\n", + " ax=axes[i],\n", + " )\n", + " axes[i].set_title(f\"PP-plot for observation {i+1}\")\n", + "axes[-1].legend(bbox_to_anchor=(1.1, .5), loc='center left')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Heatmap of classifier probabilities\n", + "\n", + "For the NF case and as displayed in the plots below, we can choose to plot the heatmap of predicted classifier probabilities in the base distribution space, instead of the parameter space, which can be easier to interpret if the posterior space is highly structured." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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rVmzRjAYDMKqVauE48ePC88884xQp04dIS8vTxAEQXjyySeFmTNn2srv2rVL0Gq1wsKFC4UTJ04I6enpgk6nE44cORKoU/BIuJynp0L5uxCq5xaq53UrQuV77e48glGo/j2G6nkJQmifm5RCIWfYeAwS5eXlQnp6ulBeXh7oqvhVqJ6XIIT2ud2KJUuWCLfddpug1+uF7t27C3v37rW917dvX2HMmDGi8p9++qlwxx13CHq9XmjXrp3w1VdfyVxj34TLeXoilL8LoXpuoXpetypUvteuziMYherfY6ielyCE9rlJTek5E1bzPBIREREREZFv+MwjERERERERucXGIxEREREREbnFxiMRERERERG5xcYjERERERERucXGY4CcPXsW48ePR4sWLRAZGYlWrVohPT0dRqPR5X79+vWDSqUSLc8995xMtXZs6dKlaN68OSIiItCjRw/s27fPZfnPPvsMbdu2RUREBDp06ICvv/5appp6LiMjA926dUN0dDQaNGiAoUOH4tSpUy73WbVqVY3fjb8msCYKJqGUX0DoZRjzi4JdKGVIqOUHwAwh19h4DJCTJ0/CarXi/fffx7Fjx/DWW29h+fLleOmll9zuO2HCBFy6dMm2LFiwQIYaO7Z27VqkpqYiPT0dBw8eRKdOnTBw4EAUFBQ4LL97926MHDkS48ePx6FDhzB06FAMHToUR48elbnmru3YsQMpKSnYu3cvtm7dCpPJhAceeAAlJSUu94uJiRH9bs6dOydTjYnkEyr5BYRmhjG/KNiFSoaEYn4AzBByI6AThZDIggULhBYtWrgs07dvX2Hy5MnyVMgD3bt3F1JSUmyvLRaL0LhxYyEjI8Nh+eHDhwsPPvigaFuPHj2EZ599VtJ63qqCggIBgLBjxw6nZTIzM4XY2Fj5KkUURJSYX4IQHhnG/CIlUGKGhEN+CAIzhMR45zGIFBYWom7dum7LffLJJ4iPj0f79u2RlpaG0tJSGWpXk9FoxIEDB5CcnGzbplarkZycjD179jjcZ8+ePaLyADBw4ECn5YNFYWEhALj9/RQXF6NZs2ZITEzEI488gmPHjslRPaKAU1p+AeGTYcwvUgKlZUi45AfADCExbaArQJVycnKwZMkSLFy40GW5xx9/HM2aNUPjxo3x008/YcaMGTh16hTWr18vU03trly5AovFgoSEBNH2hIQE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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from sbi.analysis.plot import marginal_plot_with_probs_intensity\n", + "from sbi.utils.analysis_utils import get_probs_per_marginal\n", + "\n", + "label = \"Probabilities (class 0)\"\n", + "# label = r\"$\\hat{p}(Z\\sim\\mathcal{N}(0,1)\\mid x_0)$\"\n", + "\n", + "fig, axes = plt.subplots(len(thetas_star), 3, figsize=(9,6), constrained_layout=True)\n", + "for i in range(len(thetas_star)):\n", + " inv_ref_samples = lc2st_nf.flow_inverse_transform(\n", + " ref_samples_star[i], xs_star[i]\n", + " ).detach()\n", + " probs_data, _ = lc2st_nf.get_scores(\n", + " x_o=xs_star[i],\n", + " return_probs=True,\n", + " trained_clfs=lc2st_nf.trained_clfs\n", + " )\n", + " marginal_probs = get_probs_per_marginal(\n", + " probs_data[0],\n", + " lc2st_nf.theta_o.numpy()\n", + " )\n", + " # 2d histogram\n", + " marginal_plot_with_probs_intensity(\n", + " marginal_probs['0_1'],\n", + " marginal_dim=2,\n", + " ax=axes[i][0],\n", + " n_bins=50,\n", + " label=label\n", + " )\n", + " axes[i][0].scatter(\n", + " inv_ref_samples[:,0],\n", + " inv_ref_samples[:,1],\n", + " alpha=0.2, color=\"gray\",\n", + " label=\"True posterior\"\n", + " )\n", + "\n", + " # marginal 1\n", + " marginal_plot_with_probs_intensity(\n", + " marginal_probs['0'],\n", + " marginal_dim=1,\n", + " ax=axes[i][1],\n", + " n_bins=50,\n", + " label=label\n", + " )\n", + " axes[i][1].hist(\n", + " inv_ref_samples[:,0],\n", + " density=True,\n", + " bins=10,\n", + " alpha=0.5,\n", + " label=\"True Posterior\",\n", + " color=\"gray\"\n", + " )\n", + "\n", + " # marginal 2\n", + " marginal_plot_with_probs_intensity(\n", + " marginal_probs['1'],\n", + " marginal_dim=1,\n", + " ax=axes[i][2],\n", + " n_bins=50,\n", + " label=label\n", + " )\n", + " axes[i][2].hist(\n", + " inv_ref_samples[:,1],\n", + " density=True,\n", + " bins=10,\n", + " alpha=0.5,\n", + " label=\"True posterior\",\n", + " color=\"gray\"\n", + " )\n", + "\n", + "axes[0][1].set_title(\"marginal 1\")\n", + "axes[0][2].set_title(\"marginal 2\")\n", + "\n", + "for j in range(3):\n", + " axes[j][0].set_ylabel(f\"observation {j + 1}\")\n", + "axes[0][2].legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Results:** Again, the plots below confirm that the true posterior samples (in grey) correspond to regions of \"underconfidence\" (blue-green) or \"equal probability\" (yellow), indicating over dispersion of our posterior esimator." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "sbi_dev", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 1b268b836079d384b57bd80636ad7e16ec84ebff Mon Sep 17 00:00:00 2001 From: michaeldeistler Date: Mon, 27 May 2024 14:58:57 +0200 Subject: [PATCH 50/53] bugfix for tutorial on embedding net --- tutorials/05_embedding_net.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/05_embedding_net.ipynb b/tutorials/05_embedding_net.ipynb index 89a605cab..715b144ac 100644 --- a/tutorials/05_embedding_net.ipynb +++ b/tutorials/05_embedding_net.ipynb @@ -26,7 +26,7 @@ "source": [ "```Python\n", "# import required modules\n", - "from sbi.neural_nets import posterior_nn\n", + "from sbi.utils import posterior_nn\n", "\n", "# import the different choices of pre-configured embedding networks\n", "from sbi.neural_nets.embedding_nets import (\n", @@ -481,7 +481,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.13" + "version": "3.8.19" } }, "nbformat": 4, From 7900af0e1f70b394e5bb85cfe706c176325be650 Mon Sep 17 00:00:00 2001 From: theogruner <45177092+theogruner@users.noreply.github.com> Date: Mon, 3 Jun 2024 15:49:45 +0200 Subject: [PATCH 51/53] 998 abc methods for trial based data using statistical distances (#1104) * Adding ABC with statistical distances and adding Wasserstein distance based on regularized optimal transport * Wasserstein and MMD integration for ABC * Fixing Documentation and pyright conflicts * Moving distances in ABC to new class * Documentation and additional test for MMD * Adding types * Adding missing distance file * Adding documentation for Distance class and renaming --- sbi/inference/abc/abc_base.py | 77 ++++---------- sbi/inference/abc/distances.py | 136 ++++++++++++++++++++++++ sbi/inference/abc/mcabc.py | 45 ++++++-- sbi/inference/abc/smcabc.py | 93 ++++++++++++++--- sbi/utils/metrics.py | 185 +++++++++++++++++++++++++++++++-- tests/abc_test.py | 99 ++++++++++++++---- tests/metrics_test.py | 75 ++++++++++++- 7 files changed, 597 insertions(+), 113 deletions(-) create mode 100644 sbi/inference/abc/distances.py diff --git a/sbi/inference/abc/abc_base.py b/sbi/inference/abc/abc_base.py index 2cc3484b6..9ba61a5b3 100644 --- a/sbi/inference/abc/abc_base.py +++ b/sbi/inference/abc/abc_base.py @@ -4,14 +4,14 @@ """Base class for Approximate Bayesian Computation methods.""" import logging -from typing import Callable, Union +from typing import Callable, Dict, Optional, Union import numpy as np import torch from sklearn.linear_model import LinearRegression from sklearn.preprocessing import PolynomialFeatures -from torch import Tensor +from sbi.inference.abc.distances import Distance from sbi.simulators.simutils import simulate_in_batches @@ -23,8 +23,11 @@ def __init__( simulator: Callable, prior, distance: Union[str, Callable] = "l2", + requires_iid_data: Optional[bool] = None, + distance_kwargs: Optional[Dict] = None, num_workers: int = 1, simulation_batch_size: int = 1, + distance_batch_size: int = -1, show_progress_bars: bool = True, ) -> None: r"""Base class for Approximate Bayesian Computation methods. @@ -39,12 +42,21 @@ def __init__( object with `.log_prob()`and `.sample()` (for example, a PyTorch distribution) can be used. distance: Distance function to compare observed and simulated data. Can be - a custom callable function or one of `l1`, `l2`, `mse`. + a custom callable function or one of `l1`, `l2`, `mse`, + `mmd`, `wasserstein`. + requires_iid_data: Whether to allow conditioning on iid sampled data or not. + Typically, this information is inferred by the choice of the distance, + but in case a custom distance is used, this information is pivotal. + distance_kwargs: Configurations parameters for the distances. In particular + useful for the MMD and Wasserstein distance. num_workers: Number of parallel workers to use for simulations. simulation_batch_size: Number of parameter sets that the simulator maps to data x at once. If None, we simulate all parameter sets at the same time. If >= 1, the simulator has to process data of shape (simulation_batch_size, parameter_dimension). + distance_batch_size: Number of simulations that the distance function + evaluates against the reference observations at once. If -1, we evaluate + all simulations at the same time. show_progress_bars: Whether to show a progressbar during simulation and sampling. """ @@ -57,7 +69,9 @@ def __init__( self.x_shape = None # Select distance function. - self.distance = self.get_distance_function(distance) + self.distance = Distance( + distance, requires_iid_data, distance_kwargs, batch_size=distance_batch_size + ) self._batched_simulator = lambda theta: simulate_in_batches( simulator=self._simulator, @@ -69,61 +83,6 @@ def __init__( self.logger = logging.getLogger(__name__) - @staticmethod - def get_distance_function(distance_type: Union[str, Callable] = "l2") -> Callable: - """Return distance function for given distance type. - - Args: - distance_type: string indicating the distance type, e.g., 'l2', 'l1', - 'mse'. Note that the returned distance function averages over the last - dimension, e.g., over the summary statistics. - - Returns: - distance_fun: distance functions built from passe string. Returns - distance_type is callable. - """ - - if isinstance(distance_type, Callable): - return distance_type - - # Select distance function. - implemented_distances = ["l1", "l2", "mse"] - assert ( - distance_type in implemented_distances - ), f"{distance_type} must be one of {implemented_distances}." - - def mse_distance(xo, x): - return torch.mean((xo - x) ** 2, dim=-1) - - def l2_distance(xo, x): - return torch.norm((xo - x), dim=-1) - - def l1_distance(xo, x): - return torch.mean(abs(xo - x), dim=-1) - - distance_functions = {"mse": mse_distance, "l2": l2_distance, "l1": l1_distance} - - try: - distance = distance_functions[distance_type] - except KeyError as exc: - raise KeyError(f"Distance {distance_type} not supported.") from exc - - def distance_fun(observed_data: Tensor, simulated_data: Tensor) -> Tensor: - """Return distance over batch dimension. - - Args: - observed_data: Observed data, could be 1D. - simulated_data: Batch of simulated data, has batch dimension. - - Returns: - Torch tensor with batch of distances. - """ - assert simulated_data.ndim == 2, "simulated data needs batch dimension" - - return distance(observed_data, simulated_data) - - return distance_fun - @staticmethod def get_sass_transform( theta: torch.Tensor, diff --git a/sbi/inference/abc/distances.py b/sbi/inference/abc/distances.py new file mode 100644 index 000000000..ad2f98155 --- /dev/null +++ b/sbi/inference/abc/distances.py @@ -0,0 +1,136 @@ +from functools import partial +from logging import warning +from typing import Callable, Dict, Optional, Union + +import torch +from tqdm import tqdm + +from sbi.utils.metrics import unbiased_mmd_squared, wasserstein_2_squared + + +class Distance: + def __init__( + self, + distance: Union[str, Callable] = "l2", + requires_iid_data: Optional[bool] = None, + distance_kwargs: Optional[Dict] = None, + batch_size=-1, + ): + """Distance class for ABC + + Args: + distance: A distance function comparing the simulations with 'x_o'. + Implemented distances are the 'mse', 'l2', and 'l1' norm as pairwise + distances, or the 'wasserstein' and 'mmd' as statistical distances. + requires_iid_data: 'True' if the distance is a statistical distance. + Only needs to be specified if 'distance' is a custom distance + distance_kwargs: Arguments for the specific distance. + """ + self.batch_size = batch_size + self.distance_kwargs = distance_kwargs or {} + if isinstance(distance, Callable): + if requires_iid_data is None: + # By default, we assume that data should not come in batches + warning( + "Please specify if your the custom distance requires " + "iid data or is evaluated between single datapoints. " + "By default, we assume that `requires_iid_data=False`" + ) + requires_iid_data = False + self.distance_fn = distance + self._requires_iid_data = requires_iid_data + else: + implemented_pairwise_distances = ["l1", "l2", "mse"] + implemented_statistical_distances = ["mmd", "wasserstein"] + + assert ( + distance + in implemented_pairwise_distances + implemented_statistical_distances + ), f"{distance} must be one of " + f"{implemented_pairwise_distances + implemented_statistical_distances}." + + self._requires_iid_data = distance in implemented_statistical_distances + + distance_functions = { + "mse": mse_distance, + "l2": l2_distance, + "l1": l1_distance, + "mmd": partial(mmd, **self.distance_kwargs), + "wasserstein": partial(wasserstein, **self.distance_kwargs), + } + try: + self.distance_fn = distance_functions[distance] + except KeyError as exc: + raise KeyError(f"Distance {distance} not supported.") from exc + + def __call__(self, x_o, x) -> torch.Tensor: + """Distance evaluation between the reference data and the simulated data. + + Args: + x_o: Reference data + x: Simulated data + """ + if self.requires_iid_data: + assert x.ndim >= 3, "simulated data needs batch dimension" + assert x_o.ndim + 1 == x.ndim + else: + assert x.ndim >= 2, "simulated data needs batch dimension" + if self.batch_size == -1: + return self.distance_fn(x_o, x) + else: + return self._batched_distance(x_o, x) + + def _batched_distance(self, x_o, x): + """Evaluate the distance is mini-batches. + Especially for statistical distances, batching over two empirical + datasets can lead to memory overflow. Batching can help to resolve + the memory problems. + + Args: + x_o: Reference data + x: Simulated data + """ + num_batches = x.shape[0] // self.batch_size - 1 + remaining = x.shape[0] % self.batch_size + if remaining == 0: + remaining = self.batch_size + + distances = torch.empty(x.shape[0]) + for i in tqdm(range(num_batches)): + distances[self.batch_size * i : (i + 1) * self.batch_size] = ( + self.distance_fn( + x_o, x[self.batch_size * i : (i + 1) * self.batch_size] + ) + ) + if remaining > 0: + distances[-remaining:] = self.distance_fn(x_o, x[-remaining:]) + + return distances + + @property + def requires_iid_data(self): + return self._requires_iid_data + + +def mse_distance(x_o, x): + return torch.mean((x_o - x) ** 2, dim=-1) + + +def l2_distance(x_o, x): + return torch.norm((x_o - x), dim=-1) + + +def l1_distance(x_o, x): + return torch.mean(abs(x_o - x), dim=-1) + + +def mmd(x_o, x, scale=None): + dist_fn = partial(unbiased_mmd_squared, scale=scale) + return torch.vmap(dist_fn, in_dims=(None, 0))(x_o, x) + + +def wasserstein(x_o, x, epsilon=1e-3, max_iter=1000, tol=1e-9): + batched_x_o = x_o.repeat((x.shape[0], *[1] * len(x_o.shape))) + return wasserstein_2_squared( + batched_x_o, x, epsilon=epsilon, max_iter=max_iter, tol=tol + ) diff --git a/sbi/inference/abc/mcabc.py b/sbi/inference/abc/mcabc.py index fd90ef170..25927f7bd 100644 --- a/sbi/inference/abc/mcabc.py +++ b/sbi/inference/abc/mcabc.py @@ -21,8 +21,11 @@ def __init__( simulator: Callable, prior, distance: Union[str, Callable] = "l2", + requires_iid_data: Optional[None] = None, + distance_kwargs: Optional[Dict] = None, num_workers: int = 1, simulation_batch_size: int = 1, + distance_batch_size: int = -1, show_progress_bars: bool = True, ): r"""Monte-Carlo Approximate Bayesian Computation (Rejection ABC) [1]. @@ -41,22 +44,32 @@ def __init__( object with `.log_prob()`and `.sample()` (for example, a PyTorch distribution) can be used. distance: Distance function to compare observed and simulated data. Can be - a custom function or one of `l1`, `l2`, `mse`. + a custom callable function or one of `l1`, `l2`, `mse`, + `mmd`, `wasserstein`. + requires_iid_data: Whether to allow conditioning on iid sampled data or not. + Typically, this information is inferred by the choice of the distance, + but in case a custom distance is used, this information is pivotal. + distance_kwargs: Configurations parameters for the distances. In particular + useful for the MMD and Wasserstein distance. num_workers: Number of parallel workers to use for simulations. simulation_batch_size: Number of parameter sets that the simulator maps to data x at once. If None, we simulate all parameter sets at the same time. If >= 1, the simulator has to process data of shape (simulation_batch_size, parameter_dimension). - show_progress_bars: Whether to show a progressbar during simulation and - sampling. + distance_batch_size: Number of simulations that the distance function + evaluates against the reference observations at once. If -1, we evaluate + all simulations at the same time. """ super().__init__( simulator=simulator, prior=prior, distance=distance, + requires_iid_data=requires_iid_data, + distance_kwargs=distance_kwargs, num_workers=num_workers, simulation_batch_size=simulation_batch_size, + distance_batch_size=distance_batch_size, show_progress_bars=show_progress_bars, ) @@ -73,6 +86,7 @@ def __call__( kde: bool = False, kde_kwargs: Optional[Dict[str, Any]] = None, return_summary: bool = False, + num_iid_samples: int = 1, ) -> Union[Tuple[Tensor, dict], Tuple[KDEWrapper, dict], Tensor, KDEWrapper]: r"""Run MCABC and return accepted parameters or KDE object fitted on them. @@ -101,6 +115,10 @@ def __call__( more details return_summary: Whether to return the distances and data corresponding to the accepted parameters. + num_iid_samples: Number of simulations per parameter. Choose + `num_iid_samples>1`, if you have chosen a statistical distance that + evaluates sets of simulations against a set of reference observations + instead of a single data-point comparison. Returns: theta (if kde False): accepted parameters @@ -142,11 +160,22 @@ def simulator(theta): # Simulate and calculate distances. theta = self.prior.sample((num_simulations,)) - x = simulator(theta) - - # Infer shape of x to test and set x_o. - self.x_shape = x[0].shape - self.x_o = process_x(x_o, self.x_shape) + theta_repeat = theta.repeat_interleave(num_iid_samples, dim=0) + x = simulator(theta_repeat) + x = x.reshape(( + num_simulations, + num_iid_samples, + -1, + )) # Dim(num_initial_pop, num_iid_samples, -1) + + # Infer x shape to test and set x_o. + if not self.distance.requires_iid_data: + x = x.squeeze(1) + self.x_shape = x[0].shape + self.x_o = process_x(x_o, self.x_shape) + else: + self.x_shape = x[0, 0].shape + self.x_o = process_x(x_o, self.x_shape, allow_iid_x=True) distances = self.distance(self.x_o, x) diff --git a/sbi/inference/abc/smcabc.py b/sbi/inference/abc/smcabc.py index 4583c769f..194b902ab 100644 --- a/sbi/inference/abc/smcabc.py +++ b/sbi/inference/abc/smcabc.py @@ -3,6 +3,7 @@ """Sequential Monte Carlo Approximate Bayesian Computation.""" +import math from typing import Any, Callable, Dict, Optional, Tuple, Union import numpy as np @@ -24,8 +25,11 @@ def __init__( simulator: Callable, prior: Distribution, distance: Union[str, Callable] = "l2", + requires_iid_data: Optional[None] = None, + distance_kwargs: Optional[Dict] = None, num_workers: int = 1, simulation_batch_size: int = 1, + distance_batch_size: int = -1, show_progress_bars: bool = True, kernel: Optional[str] = "gaussian", algorithm_variant: str = "C", @@ -54,25 +58,36 @@ def __init__( object with `.log_prob()`and `.sample()` (for example, a PyTorch distribution) can be used. distance: Distance function to compare observed and simulated data. Can be - a custom function or one of `l1`, `l2`, `mse`. + a custom callable function or one of `l1`, `l2`, `mse`, + `mmd`, `wasserstein`. + requires_iid_data: Whether to allow conditioning on iid sampled data or not. + Typically, this information is inferred by the choice of the distance, + but in case a custom distance is used, this information is pivotal. + distance_kwargs: Configurations parameters for the distances. In particular + useful for the MMD and Wasserstein distance. num_workers: Number of parallel workers to use for simulations. simulation_batch_size: Number of parameter sets that the simulator maps to data x at once. If None, we simulate all parameter sets at the same time. If >= 1, the simulator has to process data of shape (simulation_batch_size, parameter_dimension). + distance_batch_size: Number of simulations that the distance function + evaluates against the reference observations at once. If -1, we evaluate + all simulations at the same time. show_progress_bars: Whether to show a progressbar during simulation and sampling. kernel: Perturbation kernel. algorithm_variant: Indicating the choice of algorithm variant, A, B, or C. - """ super().__init__( simulator=simulator, prior=prior, distance=distance, + requires_iid_data=requires_iid_data, + distance_kwargs=distance_kwargs, num_workers=num_workers, simulation_batch_size=simulation_batch_size, + distance_batch_size=distance_batch_size, show_progress_bars=show_progress_bars, ) @@ -120,6 +135,7 @@ def __call__( sass: bool = False, sass_fraction: float = 0.25, sass_expansion_degree: int = 1, + num_iid_samples: int = 1, ) -> Union[Tensor, KDEWrapper, Tuple[Tensor, dict], Tuple[KDEWrapper, dict]]: r"""Run SMCABC and return accepted parameters or KDE object fitted on them. @@ -160,6 +176,10 @@ def __call__( particles. return_summary: Whether to return a dictionary with all accepted particles, weights, etc. at the end. + num_iid_samples: Number of simulations per parameter. Choose + `num_iid_samples>1`, if you have chosen a statistical distance that + evaluates sets of simulations against a set of reference observations + instead of a single data-point comparison. Returns: theta (if kde False): accepted parameters of the last population. @@ -171,10 +191,18 @@ def __call__( """ pop_idx = 0 - self.num_simulations = num_simulations + self.num_simulations = num_simulations * num_iid_samples if kde_kwargs is None: kde_kwargs = {} assert isinstance(epsilon_decay, float) and epsilon_decay > 0.0 + assert not ( + self.distance.requires_iid_data and lra + ), "Currently there is no support to run inference " + "on multiple observations together with lra." + assert not ( + self.distance.requires_iid_data and sass + ), "Currently there is no support to run inference " + "on multiple observations together with sass." # Pilot run for SASS. if sass: @@ -183,7 +211,12 @@ def __call__( "Running SASS with %s pilot samples.", num_pilot_simulations ) sass_transform = self.run_sass_set_xo( - num_particles, num_pilot_simulations, x_o, lra, sass_expansion_degree + num_particles, + num_pilot_simulations, + x_o, + num_iid_samples, + lra, + sass_expansion_degree, ) # Udpate simulator and xo x_o = sass_transform(self.x_o) @@ -196,7 +229,7 @@ def sass_simulator(theta): # run initial population particles, epsilon, distances, x = self._set_xo_and_sample_initial_population( - x_o, num_particles, num_initial_pop + x_o, num_particles, num_initial_pop, num_iid_samples ) log_weights = torch.log(1 / num_particles * torch.ones(num_particles)) @@ -238,6 +271,7 @@ def sass_simulator(theta): distances=all_distances[pop_idx - 1], epsilon=epsilon, x=all_x[pop_idx - 1], + num_iid_samples=num_iid_samples, use_last_pop_samples=use_last_pop_samples, ) @@ -322,6 +356,7 @@ def _set_xo_and_sample_initial_population( x_o: Array, num_particles: int, num_initial_pop: int, + num_iid_samples: int, ) -> Tuple[Tensor, float, Tensor, Tensor]: """Return particles, epsilon and distances of initial population.""" @@ -329,20 +364,39 @@ def _set_xo_and_sample_initial_population( num_particles <= num_initial_pop ), "number of initial round simulations must be greater than population size" + assert (x_o.shape[0] == 1) or self.distance.requires_iid_data, ( + "Your data contain iid data-points, but the choice of " + "your distance does not allow multiple conditioning " + "observations." + ) + theta = self.prior.sample((num_initial_pop,)) - x = self._simulate_with_budget(theta) + + theta_repeat = theta.repeat_interleave(num_iid_samples, dim=0) + x = self._simulate_with_budget(theta_repeat) + x = x.reshape(( + num_initial_pop, + num_iid_samples, + -1, + )) # Dim(num_initial_pop, num_iid_samples, -1) # Infer x shape to test and set x_o. - self.x_shape = x[0].shape - self.x_o = process_x(x_o, self.x_shape) + if not self.distance.requires_iid_data: + x = x.squeeze(1) + self.x_shape = x[0].shape + else: + self.x_shape = x[0, 0].shape + self.x_o = process_x( + x_o, self.x_shape, allow_iid_x=self.distance.requires_iid_data + ) distances = self.distance(self.x_o, x) sortidx = torch.argsort(distances) particles = theta[sortidx][:num_particles] # Take last accepted distance as epsilon. - initial_epsilon = distances[sortidx][num_particles - 1] + initial_epsilon = distances[sortidx][num_particles - 1].item() - if not torch.isfinite(initial_epsilon): + if not math.isfinite(initial_epsilon): initial_epsilon = 1e8 return ( @@ -359,6 +413,7 @@ def _sample_next_population( distances: Tensor, epsilon: float, x: Tensor, + num_iid_samples: int, use_last_pop_samples: bool = True, ) -> Tuple[Tensor, Tensor, Tensor, Tensor]: """Return particles, weights and distances of new population.""" @@ -383,10 +438,21 @@ def _sample_next_population( particles, torch.exp(log_weights), num_samples=num_batch ) # Simulate and select based on distance. - x_candidates = self._simulate_with_budget(particle_candidates) + candidates_repeated = particle_candidates.repeat_interleave( + num_iid_samples, dim=0 + ) + x_candidates = self._simulate_with_budget(candidates_repeated) + x_candidates = x_candidates.reshape(( + num_batch, + num_iid_samples, + -1, + )) # Dim(num_initial_pop, num_iid_samples, -1) + if not self.distance.requires_iid_data: + x_candidates = x_candidates.squeeze(1) + dists = self.distance(self.x_o, x_candidates) is_accepted = dists <= epsilon - num_accepted_batch = is_accepted.sum().item() + num_accepted_batch = int(is_accepted.sum().item()) if num_accepted_batch > 0: new_particles.append(particle_candidates[is_accepted]) @@ -681,6 +747,7 @@ def run_sass_set_xo( num_particles: int, num_pilot_simulations: int, x_o, + num_iid_samples: int, lra: bool = False, sass_expansion_degree: int = 1, ) -> Callable: @@ -697,7 +764,7 @@ def run_sass_set_xo( _, pilot_xs, ) = self._set_xo_and_sample_initial_population( - x_o, num_particles, num_pilot_simulations + x_o, num_particles, num_pilot_simulations, num_iid_samples ) assert self.x_o is not None, "x_o not set yet." diff --git a/sbi/utils/metrics.py b/sbi/utils/metrics.py index e15b88171..d33a8353d 100644 --- a/sbi/utils/metrics.py +++ b/sbi/utils/metrics.py @@ -1,6 +1,7 @@ # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed # under the Apache License Version 2.0, see +from logging import warning from typing import Any, Dict, Optional, Union import numpy as np @@ -185,8 +186,28 @@ class clf_kwargs: key-value arguments dictionary to the class specified by return scores -def unbiased_mmd_squared(x, y): +def unbiased_mmd_squared(x: Tensor, y: Tensor, scale: Optional[float] = None): + """Unbiased approximation of the squared maximum-mean discrepancy (MMD) [1]. + The sample-based MMD relies on kernel evaluations between x_i and y_i. This + implementation only features a Gaussian kernel with lengthscale `scale`. + + Args: + x: Data of shape (m, d) + y: Data of shape (n, d) + scale: Lengthscale of the exponential kernel. If not specified, + the lengthscale is chosen based on a median heuristic. + + Return: + A single scalar for the squared MMD. + + References: + [1] Gretton, A., et al. (2012). A kernel two-sample test. + """ nx, ny = x.shape[0], y.shape[0] + assert nx != 1 and ny != 1, ( + "The unbiased MMD estimator is not defined " + "for empirical distributions of size 1." + ) def f(a, b, diag=False): if diag: @@ -202,8 +223,8 @@ def f(a, b, diag=False): xy = f(x, y, diag=True) yy = f(y, y) - scale = torch.median(torch.sqrt(torch.cat((xx, xy, yy)))) - c = -0.5 / (scale**2) + s = torch.median(torch.sqrt(torch.cat((xx, xy, yy)))) if scale is None else scale + c = -0.5 / (s**2) k = lambda a: torch.sum(torch.exp(c * a)) @@ -218,7 +239,23 @@ def f(a, b, diag=False): return mmd_square -def biased_mmd(x, y): +def biased_mmd(x: Tensor, y: Tensor, scale: Optional[float] = None): + """Biased approximation of the squared maximum-mean discrepancy (MMD) [1]. + The sample-based MMD relies on kernel evaluations between x_i and y_i. This + implementation only features a Gaussian kernel with lengthscale `scale`. + + Args: + x: Data of shape (m, d) + y: Data of shape (n, d) + scale: Lengthscale of the exponential kernel. If not specified, + the lengthscale is chosen based on a median heuristic. + + Return: + A single scalar for the squared MMD. + + References: + [1] Gretton, A., et al. (2012). A kernel two-sample test. + """ nx, ny = x.shape[0], y.shape[0] def f(a, b): @@ -228,8 +265,8 @@ def f(a, b): xy = f(x, y) yy = f(y, y) - scale = torch.median(torch.sqrt(torch.cat((xx, xy, yy)))) - c = -0.5 / (scale**2) + s = torch.median(torch.sqrt(torch.cat((xx, xy, yy)))) if scale is None else scale + c = -0.5 / (s**2) k = lambda a: torch.sum(torch.exp(c * a)) @@ -246,7 +283,7 @@ def f(a, b): return torch.sqrt(mmd_square) -def biased_mmd_hypothesis_test(x, y, alpha=0.05): +def biased_mmd_hypothesis_test(x: Tensor, y: Tensor, alpha=0.05): assert x.shape[0] == y.shape[0] mmd_biased = biased_mmd(x, y).item() threshold = np.sqrt(2 / x.shape[0]) * (1 + np.sqrt(-2 * np.log(alpha))) @@ -254,7 +291,7 @@ def biased_mmd_hypothesis_test(x, y, alpha=0.05): return mmd_biased, threshold -def unbiased_mmd_squared_hypothesis_test(x, y, alpha=0.05): +def unbiased_mmd_squared_hypothesis_test(x: Tensor, y: Tensor, alpha=0.05): assert x.shape[0] == y.shape[0] mmd_square_unbiased = unbiased_mmd_squared(x, y).item() threshold = (4 / np.sqrt(x.shape[0])) * np.sqrt(-np.log(alpha)) @@ -262,6 +299,138 @@ def unbiased_mmd_squared_hypothesis_test(x, y, alpha=0.05): return mmd_square_unbiased, threshold +def wasserstein_2_squared( + x: Tensor, y: Tensor, epsilon: float = 1e-3, max_iter: int = 1000, tol: float = 1e-9 +): + """Approximate the squared 2-Wasserstein distance + using entropic regularized optimal transport [1]. In the limit, + 'epsilon' to 0, we recover the squared Wasserstein-2 distance is recovered. + + Args: + x: Data of shape (B, m, d) or (m, d) + y: Data of shape (B, n, d) or (n, d) + epsilon: Entropic regularization term + max_iter: Maximum number of iteration for which the Sinkhorn iterations run + tol: Tolerance required for Sinkhorn to converge + + Return: + The squared 2-Wasserstein distance of shape (B, ) or () + + References: + [1] Peyré, G., & Cuturi, M. (2019). Computational optimal transport: + With applications to data science. + """ + assert ( + x.ndim == y.ndim + ), "Please make sure that 'x' and 'y' are both either batched or not." + if x.ndim == 2: + nx, ny = x.shape[0], y.shape[0] + a = torch.ones(nx) / nx + b = torch.ones(ny) / ny + elif x.ndim == 3: + batch_size = x.shape[0] + nx, ny = x.shape[1], y.shape[1] + a = torch.ones((batch_size, nx)) / nx + b = torch.ones((batch_size, ny)) / ny + else: + raise ValueError( + "This implementation of Wasserstein is only implemented, " + "if x.ndim=2 or x.ndim=3." + ) + + # Evaluate the cost matrix based on the default l2 cost + cost_matrix = torch.cdist(x, y, 2) ** 2 + + coupling = regularized_ot_dual( + a, b, cost_matrix, epsilon, max_iter=max_iter, tol=tol + ) + if a.ndim == 1: + return torch.sum(coupling * cost_matrix) + else: + return torch.sum(coupling * cost_matrix, dim=(1, 2)) + + +def regularized_ot_dual( + a: Tensor, + b: Tensor, + cost: Tensor, + epsilon: float = 1e-3, + max_iter: int = 1000, + tol=1e-9, +): + """Implementation of regularized optimal transport based on + the dual formulation of the regularized optimal transport problem. + + Args: + a: Probability vector of the empirical distribution x, + either in batched form (B, m) or as a single vector (m,). + b: Probability vector of the empirical distribution y, + either in batched form (B, n) or as a single vector (n,). + cost: Cost-matrix between the empirical samples of x and y. + Either in batched form (B, m, n) or as a matrix (m, n). + epsilon: The entropic regularization term + max_iter: Maximum number of iterations + tol: Tolerance required for Sinkhorn to converge + + Return: + Optimal transport coupling of shape (B, m, n) or (m, n) + """ + + assert ( + a.ndim == b.ndim + ), "Please make sure that 'a' and 'b' are both either batched or not." + f"currently a.ndim={a.ndim} and b.ndim={b.ndim}" + + batched = True + if a.ndim == 1 and b.ndim == 1: + batched = False + na, nb = a.shape[0], b.shape[0] + a = torch.atleast_2d(a) + b = torch.atleast_2d(b) + cost = cost.unsqueeze(0) + na, nb = a.shape[1], b.shape[1] + + # Define potentials + f, g = torch.zeros_like(a), torch.zeros_like(b) + + def s(f, g): + return cost - f.unsqueeze(2) - g.unsqueeze(1) + + err = torch.inf + iters = torch.zeros(a.shape[0]) + terminated = torch.zeros(a.shape[0], dtype=torch.bool) + for _ in range(max_iter): + f_prev, g_prev = f, g + f_tmp = f + epsilon * ( + torch.log(a) - torch.logsumexp(-s(f, g) / epsilon, dim=2) + ) + g_tmp = g + epsilon * ( + torch.log(b) - torch.logsumexp(-s(f_tmp, g) / epsilon, dim=1) + ) + f = torch.where(terminated.unsqueeze(-1).repeat((1, na)), f, f_tmp) + g = torch.where(terminated.unsqueeze(-1).repeat((1, nb)), g, g_tmp) + + err = torch.max((f_prev - f).abs().sum(dim=1), (g_prev - g).abs().sum(dim=1)) + terminated = torch.logical_or(terminated, err < tol) + if torch.all(terminated): + break + if iters.max() == max_iter: + warning( + f"Sinkhorn iterations did not converge within {max_iter} iterations. " + f"Consider a bigger regularization parameter 'epsilon' " + "or increasing 'max_iter'." + ) + break + iters = torch.where(terminated, iters, iters + 1) + + coupling = torch.exp(-s(f, g) / epsilon) + + if not batched: + coupling = coupling.squeeze(0) + + return coupling + + def posterior_shrinkage( prior_samples: Union[Tensor, np.ndarray], post_samples: Union[Tensor, np.ndarray] ) -> Tensor: diff --git a/tests/abc_test.py b/tests/abc_test.py index 84af00999..ce6255e72 100644 --- a/tests/abc_test.py +++ b/tests/abc_test.py @@ -26,8 +26,10 @@ def test_mcabc_inference_on_linear_gaussian( sass_expansion_degree=1, kde=False, kde_bandwidth="cv", + num_iid_samples=1, + distance_kwargs=None, ): - x_o = zeros((1, num_dim)) + x_o = zeros((num_iid_samples, num_dim)) num_samples = 1000 # likelihood_mean will be likelihood_shift+theta @@ -38,14 +40,20 @@ def test_mcabc_inference_on_linear_gaussian( prior_cov = eye(num_dim) prior = MultivariateNormal(loc=prior_mean, covariance_matrix=prior_cov) gt_posterior = true_posterior_linear_gaussian_mvn_prior( - x_o[0], likelihood_shift, likelihood_cov, prior_mean, prior_cov + x_o, likelihood_shift, likelihood_cov, prior_mean, prior_cov ) target_samples = gt_posterior.sample((num_samples,)) def simulator(theta): return linear_gaussian(theta, likelihood_shift, likelihood_cov) - inferer = MCABC(simulator, prior, simulation_batch_size=10000, distance=distance) + inferer = MCABC( + simulator, + prior, + simulation_batch_size=10000, + distance=distance, + distance_kwargs=distance_kwargs, + ) phat = inferer( x_o, @@ -58,6 +66,7 @@ def simulator(theta): kde=kde, kde_kwargs=dict(bandwidth=kde_bandwidth) if kde else {}, return_summary=False, + num_iid_samples=num_iid_samples, ) check_c2st( @@ -67,25 +76,13 @@ def simulator(theta): ) -@pytest.mark.slow -@pytest.mark.parametrize("lra", (True, False)) -@pytest.mark.parametrize("sass_expansion_degree", (1, 2)) -def test_mcabc_sass_lra(lra, sass_expansion_degree): - test_mcabc_inference_on_linear_gaussian( - num_dim=2, - lra=lra, - sass=True, - sass_expansion_degree=sass_expansion_degree, - distance="l2", - ) - - @pytest.mark.slow @pytest.mark.parametrize("num_dim", (1, 2)) @pytest.mark.parametrize("prior_type", ("uniform", "gaussian")) def test_smcabc_inference_on_linear_gaussian( num_dim, prior_type: str, + distance="l2", lra=False, sass=False, sass_expansion_degree=1, @@ -93,8 +90,10 @@ def test_smcabc_inference_on_linear_gaussian( kde_bandwidth="cv", transform=False, num_simulations=20000, + num_iid_samples=1, + distance_kwargs=None, ): - x_o = zeros((1, num_dim)) + x_o = zeros((num_iid_samples, num_dim)) num_samples = 1000 likelihood_shift = -1.0 * ones(num_dim) likelihood_cov = 0.3 * eye(num_dim) @@ -104,13 +103,13 @@ def test_smcabc_inference_on_linear_gaussian( prior_cov = eye(num_dim) prior = MultivariateNormal(loc=prior_mean, covariance_matrix=prior_cov) gt_posterior = true_posterior_linear_gaussian_mvn_prior( - x_o[0], likelihood_shift, likelihood_cov, prior_mean, prior_cov + x_o, likelihood_shift, likelihood_cov, prior_mean, prior_cov ) target_samples = gt_posterior.sample((num_samples,)) elif prior_type == "uniform": prior = BoxUniform(-ones(num_dim), ones(num_dim)) target_samples = samples_true_posterior_linear_gaussian_uniform_prior( - x_o[0], likelihood_shift, likelihood_cov, prior, num_samples + x_o, likelihood_shift, likelihood_cov, prior, num_samples ) else: raise ValueError("Wrong prior string.") @@ -118,7 +117,14 @@ def test_smcabc_inference_on_linear_gaussian( def simulator(theta): return linear_gaussian(theta, likelihood_shift, likelihood_cov) - infer = SMC(simulator, prior, simulation_batch_size=10000, algorithm_variant="C") + infer = SMC( + simulator, + prior, + distance=distance, + simulation_batch_size=10000, + algorithm_variant="C", + distance_kwargs=distance_kwargs, + ) phat = infer( x_o, @@ -137,6 +143,7 @@ def simulator(theta): bandwidth=kde_bandwidth, transform=biject_to(prior.support) if transform else None, ), + num_iid_samples=num_iid_samples, ) check_c2st( @@ -150,6 +157,19 @@ def simulator(theta): phat.log_prob(samples) +@pytest.mark.slow +@pytest.mark.parametrize("lra", (True, False)) +@pytest.mark.parametrize("sass_expansion_degree", (1, 2)) +def test_mcabc_sass_lra(lra, sass_expansion_degree): + test_mcabc_inference_on_linear_gaussian( + num_dim=2, + lra=lra, + sass=True, + sass_expansion_degree=sass_expansion_degree, + distance="l2", + ) + + @pytest.mark.slow @pytest.mark.parametrize("lra", (True, False)) @pytest.mark.parametrize("sass_expansion_degree", (1, 2)) @@ -184,3 +204,42 @@ def test_smcabc_kde(kde_bandwidth): kde_bandwidth=kde_bandwidth, transform=True, ) + + +@pytest.mark.slow +@pytest.mark.parametrize( + "distance, num_iid_samples, distance_kwargs", + ( + ["l2", 1, None], + ["mmd", 10, {"scale": 1.5}], + ), +) +def test_mc_abc_iid_inference(distance, num_iid_samples, distance_kwargs): + test_mcabc_inference_on_linear_gaussian( + num_dim=2, + distance=distance, + num_iid_samples=num_iid_samples, + distance_kwargs=distance_kwargs, + ) + + +@pytest.mark.slow +@pytest.mark.parametrize( + "distance, num_iid_samples, distance_kwargs, distance_batch_size", + ( + ["l2", 1, None, -1], + ["mmd", 20, {"scale": 1.0}, -1], + ["wasserstein", 10, {"epsilon": 1.0, "tol": 1e-6, "max_iter": 1000}, 1000], + ), +) +def test_smcabc_iid_inference( + distance, num_iid_samples, distance_kwargs, distance_batch_size +): + test_smcabc_inference_on_linear_gaussian( + num_dim=2, + prior_type="gaussian", + distance=distance, + num_iid_samples=num_iid_samples, + num_simulations=20000, + distance_kwargs=distance_kwargs, + ) diff --git a/tests/metrics_test.py b/tests/metrics_test.py index 206d517a4..c2dedea61 100644 --- a/tests/metrics_test.py +++ b/tests/metrics_test.py @@ -3,18 +3,28 @@ from __future__ import annotations +import math + import numpy as np import pytest import torch from sklearn.neural_network import MLPClassifier from torch.distributions import MultivariateNormal as tmvn -from sbi.utils.metrics import c2st, c2st_scores, posterior_shrinkage, posterior_zscore +from sbi.utils.metrics import ( + biased_mmd_hypothesis_test, + c2st, + c2st_scores, + posterior_shrinkage, + posterior_zscore, + unbiased_mmd_squared_hypothesis_test, + wasserstein_2_squared, +) ## c2st related: ## for a study about c2st see https://github.com/psteinb/c2st/ -TESTCASECONFIG = [ +C2ST_TESTCASECONFIG = [ ( # both samples are identical, the mean accuracy should be around 0.5 0.0, # dist_sigma @@ -39,7 +49,7 @@ @pytest.mark.parametrize( "dist_sigma, c2st_lowerbound, c2st_upperbound,", - TESTCASECONFIG, + C2ST_TESTCASECONFIG, ) def test_c2st_with_different_distributions( dist_sigma, c2st_lowerbound, c2st_upperbound @@ -65,7 +75,7 @@ def test_c2st_with_different_distributions( @pytest.mark.slow @pytest.mark.parametrize( "dist_sigma, c2st_lowerbound, c2st_upperbound,", - TESTCASECONFIG, + C2ST_TESTCASECONFIG, ) def test_c2st_with_different_distributions_mlp( dist_sigma, c2st_lowerbound, c2st_upperbound @@ -91,7 +101,7 @@ def test_c2st_with_different_distributions_mlp( @pytest.mark.slow @pytest.mark.parametrize( "dist_sigma, c2st_lowerbound, c2st_upperbound,", - TESTCASECONFIG, + C2ST_TESTCASECONFIG, ) def test_c2st_scores(dist_sigma, c2st_lowerbound, c2st_upperbound): ndim = 10 @@ -130,6 +140,61 @@ def test_c2st_scores(dist_sigma, c2st_lowerbound, c2st_upperbound): assert np.allclose(obs2_c2st, obs_c2st, atol=0.05) +@pytest.mark.slow +@pytest.mark.parametrize( + "sigma", + (0.0, 5, 20.0), +) +def test_wasserstein_2_distance(sigma): + ndim = 10 + nsamples = 1024 + refdist = tmvn(loc=torch.zeros(ndim), covariance_matrix=torch.eye(ndim)) + X = refdist.sample((nsamples,)) + + # As we are only dealing with a diagonal covariance, + # the residual terms coming from the covariance cancel out. + analytical_wasserstein_2_squared = ( + torch.norm(sigma * torch.ones(ndim)) ** 2 + ).item() + + otherdist = tmvn(loc=sigma + torch.zeros(ndim), covariance_matrix=torch.eye(ndim)) + Y = otherdist.sample((nsamples - 1,)) + estimate = wasserstein_2_squared(X, Y, epsilon=5e-4).item() + + # Check if the wasserstein estimate is of the same order + # as the analytically derived squared Wasserstein-2 distance + exponent1 = ( + 0 + if analytical_wasserstein_2_squared == 0 + else int(math.floor(math.log10(abs(analytical_wasserstein_2_squared)))) + ) + exponent2 = 0 if estimate == 0 else int(math.floor(math.log10(abs(estimate)))) + assert exponent1 == exponent2 + + +@pytest.mark.slow +@pytest.mark.parametrize( + "test", (unbiased_mmd_squared_hypothesis_test, biased_mmd_hypothesis_test) +) +@pytest.mark.parametrize("sigma", (0.0, 5.0)) +def test_mmd_squared_distance(test, sigma): + ndim = 10 + nsamples = 1024 + ref_sigma = 0.0 + refdist = tmvn(loc=ref_sigma * torch.ones(ndim), covariance_matrix=torch.eye(ndim)) + X = refdist.sample((nsamples,)) + + otherdist = tmvn(loc=sigma + torch.zeros(ndim), covariance_matrix=torch.eye(ndim)) + Y = otherdist.sample((nsamples,)) + + estimate, threshold = test(X, Y, alpha=0.05) + + if sigma == ref_sigma: + assert estimate < threshold, "Rejecting 0-hypothesis even though q=p." + else: + assert estimate > threshold, "Accepting 0-hypothesis even though q!=p." + + def test_posterior_shrinkage(): prior_samples = np.array([2]) post_samples = np.array([3]) From 66d1f2b5711fff37ef7975acce6be843c288f667 Mon Sep 17 00:00:00 2001 From: Thomas Moreau Date: Mon, 10 Jun 2024 21:04:36 +0200 Subject: [PATCH 52/53] MTN: split linting process from the CI/CD workflow (#1164) --- .github/workflows/cd.yml | 16 ---------- .github/workflows/ci.yml | 16 ---------- .github/workflows/lint.yml | 62 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+), 32 deletions(-) create mode 100644 .github/workflows/lint.yml diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 6c1bc8a4d..bb7f8b4a8 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -14,18 +14,6 @@ concurrency: cancel-in-progress: true jobs: - pre-commit: - name: ruff and hooks. - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 - with: - python-version: '3.8' - - uses: pre-commit/action@v3.0.1 - with: - extra_args: --all-files --show-diff-on-failure - cd: name: CD runs-on: ubuntu-latest @@ -54,10 +42,6 @@ jobs: python -m pip install --upgrade pip pip install -e .[dev] - - name: Check types with pyright - run: | - pyright sbi - - name: Run the fast and the slow CPU tests with coverage run: | pytest -v -x -n auto -m "not gpu" --cov=sbi --cov-report=xml tests/ diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0f67f2d13..0c8a02ab9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,18 +11,6 @@ concurrency: cancel-in-progress: true jobs: - pre-commit: - name: ruff and hooks. - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 - with: - python-version: '3.8' - - uses: pre-commit/action@v3.0.1 - with: - extra_args: --all-files --show-diff-on-failure - ci: name: CI runs-on: ubuntu-latest @@ -63,10 +51,6 @@ jobs: pip install torch==${{ matrix.torch-version }} --extra-index-url https://download.pytorch.org/whl/cpu pip install -e .[dev] - - name: Check types with pyright - run: | - pyright sbi - - name: Run the fast CPU tests with coverage run: | pytest -v -x -n auto -m "not slow and not gpu" --cov=sbi --cov-report=xml tests/ diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 000000000..e78d36ef4 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,62 @@ +name: Linting + +on: + pull_request: + push: + branches: [main] + workflow_dispatch: + +defaults: + run: + shell: bash + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} + cancel-in-progress: true + +jobs: + pre-commit: + name: ruff and hooks. + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.8' + - uses: pre-commit/action@v3.0.1 + with: + extra_args: --all-files --show-diff-on-failure + + pyright: + name: Check types + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + lfs: false + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.8' + + - name: Cache dependency + id: cache-dependencies + uses: actions/cache@v4 + with: + path: ~/.cache/pip + key: ubuntu-latest-pip-3.8 + restore-keys: | + ubuntu-latest-pip- + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install torch --extra-index-url https://download.pytorch.org/whl/cpu + pip install -e .[dev] + + - name: Check types with pyright + run: | + pyright sbi From fa6a874df0286c9d2ae11681f96480ab1043ecab Mon Sep 17 00:00:00 2001 From: manuelgloeckler <38903899+manuelgloeckler@users.noreply.github.com> Date: Tue, 11 Jun 2024 08:53:40 +0200 Subject: [PATCH 53/53] fix: pyro flow pyright errors in GitHub action (#1165) * ignore types for wierd pyright thing * Ignore params_dims specifically * try to not ignore pyright * next try * Fixing this issue * Adding better typing to pyro flows * Revert "Adding better typing to pyro flows" This reverts commit 825a525fe2be7000e4b4faf263de8344f9d9e549. Notebooks should not be pushed * Adding better typing infomration to avoid errors --- sbi/samplers/vi/vi_pyro_flows.py | 39 +++++++++++++++++--------------- sbi/utils/pyroutils.py | 5 ++-- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/sbi/samplers/vi/vi_pyro_flows.py b/sbi/samplers/vi/vi_pyro_flows.py index 58d96776a..fef17017a 100644 --- a/sbi/samplers/vi/vi_pyro_flows.py +++ b/sbi/samplers/vi/vi_pyro_flows.py @@ -159,8 +159,8 @@ def build_fn( def init_affine_autoregressive(dim: int, device: str = "cpu", **kwargs): """Provides the default initial arguments for an affine autoregressive transform.""" - hidden_dims = kwargs.pop("hidden_dims", [3 * dim + 5, 3 * dim + 5]) - skip_connections = kwargs.pop("skip_connections", False) + hidden_dims: List[int] = kwargs.pop("hidden_dims", [3 * dim + 5, 3 * dim + 5]) + skip_connections: bool = kwargs.pop("skip_connections", False) nonlinearity = kwargs.pop("nonlinearity", nn.ReLU()) arn = AutoRegressiveNN( dim, hidden_dims, nonlinearity=nonlinearity, skip_connections=skip_connections @@ -170,12 +170,12 @@ def init_affine_autoregressive(dim: int, device: str = "cpu", **kwargs): def init_spline_autoregressive(dim: int, device: str = "cpu", **kwargs): """Provides the default initial arguments for an spline autoregressive transform.""" - hidden_dims = kwargs.pop("hidden_dims", [3 * dim + 5, 3 * dim + 5]) - skip_connections = kwargs.pop("skip_connections", False) + hidden_dims: List[int] = kwargs.pop("hidden_dims", [3 * dim + 5, 3 * dim + 5]) + skip_connections: bool = kwargs.pop("skip_connections", False) nonlinearity = kwargs.pop("nonlinearity", nn.ReLU()) - count_bins = kwargs.get("count_bins", 10) - order = kwargs.get("order", "linear") - bound = kwargs.get("bound", 10) + count_bins: int = kwargs.get("count_bins", 10) + order: str = kwargs.get("order", "linear") + bound: int = kwargs.get("bound", 10) if order == "linear": param_dims = [count_bins, count_bins, (count_bins - 1), count_bins] else: @@ -194,12 +194,15 @@ def init_affine_coupling(dim: int, device: str = "cpu", **kwargs): """Provides the default initial arguments for an affine autoregressive transform.""" assert dim > 1, "In 1d this would be equivalent to affine flows, use them." nonlinearity = kwargs.pop("nonlinearity", nn.ReLU()) - split_dim = kwargs.get("split_dim", dim // 2) - hidden_dims = kwargs.pop("hidden_dims", [5 * dim + 20, 5 * dim + 20]) - params_dims = (dim - split_dim, dim - split_dim) - arn = DenseNN(split_dim, hidden_dims, params_dims, nonlinearity=nonlinearity).to( - device - ) + split_dim: int = int(kwargs.get("split_dim", dim // 2)) + hidden_dims: List[int] = kwargs.pop("hidden_dims", [5 * dim + 20, 5 * dim + 20]) + params_dims: List[int] = [dim - split_dim, dim - split_dim] + arn = DenseNN( + split_dim, + hidden_dims, + params_dims, + nonlinearity=nonlinearity, + ).to(device) return [split_dim, arn], {"log_scale_min_clip": -3.0} @@ -207,12 +210,12 @@ def init_spline_coupling(dim: int, device: str = "cpu", **kwargs): """Intitialize a spline coupling transform, by providing necessary args and kwargs.""" assert dim > 1, "In 1d this would be equivalent to affine flows, use them." - split_dim = kwargs.get("split_dim", dim // 2) - hidden_dims = kwargs.pop("hidden_dims", [5 * dim + 30, 5 * dim + 30]) + split_dim: int = kwargs.get("split_dim", dim // 2) + hidden_dims: List[int] = kwargs.pop("hidden_dims", [5 * dim + 30, 5 * dim + 30]) nonlinearity = kwargs.pop("nonlinearity", nn.ReLU()) - count_bins = kwargs.get("count_bins", 15) - order = kwargs.get("order", "linear") - bound = kwargs.get("bound", 10) + count_bins: int = kwargs.get("count_bins", 15) + order: str = kwargs.get("order", "linear") + bound: int = kwargs.get("bound", 10) if order == "linear": param_dims = [ (dim - split_dim) * count_bins, diff --git a/sbi/utils/pyroutils.py b/sbi/utils/pyroutils.py index 1c338b8d6..b541f2b04 100644 --- a/sbi/utils/pyroutils.py +++ b/sbi/utils/pyroutils.py @@ -28,7 +28,8 @@ def prior(): model_trace = poutine.trace(model).get_trace(*model_args, **model_kwargs) for name, node in model_trace.iter_stochastic_nodes(): - fn = node["fn"] - transforms[name] = biject_to(fn.support).inv + if "fn" in node: + fn = node["fn"] + transforms[name] = biject_to(fn.support).inv return transforms