pax_global_header00006660000000000000000000000064120403370420014505gustar00rootroot0000000000000052 comment=42bb0881c95716ce3f924c6ac8af1efa23896ede pymc-2.2+ds/000077500000000000000000000000001204033704200127225ustar00rootroot00000000000000pymc-2.2+ds/.gitignore000066400000000000000000000002001204033704200147020ustar00rootroot00000000000000*.pyc *.so build/* dist/* pymc.egg-info/ UNKNOWN.egg-info/ docs/_build MANIFEST develop testresults *.tmproj *.py.bak .DS_Store pymc-2.2+ds/CREDITS.rst000066400000000000000000000007111204033704200145500ustar00rootroot00000000000000************ PyMC Credits ************ Development team ================ * Christopher Fonnesbeck * David Huard * Anand Patil * John Salvatier Contributors ============ * Andrew Straw : the Von Mises distribution and code to strip trailing whitespace. * Max Nickel : A bugfix in the Raftery-Lewis convergence diagnostic * Joonas Paalasmaa : Fixed an installation bug * Nicholas Matsakis : Changed typographer's quotes to straight quotes in documentationpymc-2.2+ds/DEVELOPERS.txt000066400000000000000000000051301204033704200151320ustar00rootroot00000000000000~~~~~~~~~~~~~~~~~~~~~ Developer Cheat Sheet ~~~~~~~~~~~~~~~~~~~~~ The setup.py file ~~~~~~~~~~~~~~~~~ The setup.py script describes how to build the software, and what is needed to build the software is also what is included in the source distribution. To include other files, such as documentation, specify the names or pattern in :file:`MANIFEST.in`. Before uploading a package to PyPi, make sure you have the correct version number defined in setup.py. Creating source and binary distributions: * Source:: python setup.py sdist --format=zip * Windows:: python setup.py bdist_wininst * POSIX:: python setup.py bdist To upload to PyPi:: python setup.py sdist upload python setup.py bdist_wininst upload To simply change the information about the package on the PyPi page (as defined in setup.py):: python setup.py register To upload to GoogleCode download section:: python setup.py upload2google --src (or --windows) To tag the 2.1.1 release:: svn cp https://pymc.googlecode.com/svn/trunk \ https://pymc.googlecode.com/svn/tags/2.1.1 \ -m "Tagging the 2.1.1 release." Conventions: * alpha release (a) -- Not everything is implemented, this is generally for internal testers. PyMC is not likely to need alpha releases any time soon. * beta release (b) -- Everything is implemented, and the code is released to experienced users. * release candidate (rc1) -- Released to a wider audience to make sure there are no installation issues and tests pass on more platforms than those used by the devs. * Major release (2.0) -- Release where some API breaking is allowed. * Minor release (2.1) -- Release introducing new features, but no API breaks. * Bug fix release (2.1.1) -- Duh. Buildind the docs ~~~~~~~~~~~~~~~~~ The docs are currently written in LaTeX and are stored in the docs/ directory. Some of the files (README.tex, INSTALL.tex and database.tex) are automatically generated from README.txt, INSTALL.txt and pymc/database/README.txt using rst2latex. The build process is coded in builddocs and is quite obfuscated. The plan is to move the documentation to Sphinx, since this is fast becoming the standard for Python projects. This will simplify synchronising docstrings and the documentation. Trunk stability ~~~~~~~~~~~~~~~ The trunk/ should always be stable; meaning that it should pass the test suite at all time. This means developers should always run pymc.test() before committing their changes. If a change breaks something that was not covered by the test suite, then it's a good idea to write a regression test to make sure that doesn't happen again. pymc-2.2+ds/INSTALL.rst000066400000000000000000000166551204033704200145770ustar00rootroot00000000000000************************* Installation Instructions ************************* :Date: Dec 23, 2009 :Authors: Chris Fonnesbeck, Anand Patil, David Huard :Web site: http://code.google.com/p/pymc/ :Copyright: This document has been placed in the public domain. PyMC is known to run on Mac OS X, Linux and Windows, but in theory should be able to work on just about any platform for which Python, a Fortran compiler and the NumPy module are available. However, installing some extra depencies can greatly improve PyMC's performance and versatility. The following describes the required and optional dependencies and takes you through the installation process. Dependencies ============ PyMC requires some prerequisite packages to be present on the system. Fortunately, there are currently only a few dependencies, and all are freely available online. * `Python`_ version 2.5 or 2.6. * `NumPy`_ (1.4 or newer): The fundamental scientific programming package, it provides a multidimensional array type and many useful functions for numerical analysis. * `Matplotlib (optional)`_ : 2D plotting library which produces publication quality figures in a variety of image formats and interactive environments * `pyTables (optional)`_ : Package for managing hierarchical datasets and designed to efficiently and easily cope with extremely large amounts of data. Requires the `HDF5`_ library. * `pydot (optional)`_ : Python interface to Graphviz's Dot language, it allows PyMC to create both directed and non-directed graphical representations of models. Requires the `Graphviz`_ library. * `SciPy (optional)`_ : Library of algorithms for mathematics, science and engineering. * `IPython (optional)`_ : An enhanced interactive Python shell and an architecture for interactive parallel computing. * `nose (optional)`_ : A test discovery-based unittest extension (required to run the test suite). There are prebuilt distributions that include all required dependencies. For Mac OS X users, we recommend the `MacPython`_ distribution or the `Enthought Python Distribution`_ on OS X 10.5 (Leopard) and Python 2.6.1 that ships with OS X 10.6 (Snow Leopard). Windows users should download and install the `Enthought Python Distribution`_. The Enthought Python Distribution comes bundled with these prerequisites. Note that depending on the currency of these distributions, some packages may need to be updated manually. If instead of installing the prebuilt binaries you prefer (or have) to build ``pymc`` yourself, make sure you have a Fortran and a C compiler. There are free compilers (gfortran, gcc) available on all platforms. Other compilers have not been tested with PyMC but may work nonetheless. .. _`Python`: http://www.python.org/. .. _`NumPy`: http://www.scipy.org/NumPy .. _`Matplotlib (optional)`: http://matplotlib.sourceforge.net/ .. _`MacPython`: http://www.activestate.com/Products/ActivePython/ .. _`Enthought Python Distribution`: http://www.enthought.com/products/epddownload.php .. _`SciPy (optional)`: http://www.scipy.org/ .. _`IPython (optional)`: http://ipython.scipy.org/ .. _`pyTables (optional)`: http://www.pytables.org/moin .. _`HDF5`: http://www.hdfgroup.org/HDF5/ .. _`pydot (optional)`: http://code.google.com/p/pydot/ .. _`Graphviz`: http://www.graphviz.org/ .. _`nose (optional)`: http://somethingaboutorange.com/mrl/projects/nose/ Installation using EasyInstall ============================== The easiest way to install PyMC is to type in a terminal:: easy_install pymc Provided `EasyInstall`_ (part of the `setuptools`_ module) is installed and in your path, this should fetch and install the package from the `Python Package Index`_. Make sure you have the appropriate administrative privileges to install software on your computer. .. _`Python Package Index`: http://pypi.python.org/pypi .. _`setuptools`: http://peak.telecommunity.com/DevCenter/setuptools Installing from pre-built binaries ================================== Pre-built binaries are available for Windows XP and Mac OS X. There are at least two ways to install these: 1. Download the installer for your platform from `PyPI`_. 2. Double-click the executable installation package, then follow the on-screen instructions. For other platforms, you will need to build the package yourself from source. Fortunately, this should be relatively straightforward. .. _`PyMC site`: pymc.googlecode.com Compiling the source code ========================= First download the source code tarball from `PyPI`_ and unpack it. Then move into the unpacked directory and follow the platform specific instructions. Windows ------- One way to compile PyMC on Windows is to install `MinGW`_ and `MSYS`_. MinGW is the GNU Compiler Collection (GCC) augmented with Windows specific headers and libraries. MSYS is a POSIX-like console (bash) with UNIX command line tools. Download the `Automated MinGW Installer`_ and double-click on it to launch the installation process. You will be asked to select which components are to be installed: make sure the g77 compiler is selected and proceed with the instructions. Then download and install `MSYS-1.0.exe`_, launch it and again follow the on-screen instructions. Once this is done, launch the MSYS console, change into the PyMC directory and type:: python setup.py install This will build the C and Fortran extension and copy the libraries and python modules in the C:/Python26/Lib/site-packages/pymc directory. .. _`MinGW`: http://www.mingw.org/ .. _`MSYS`: http://www.mingw.org/wiki/MSYS .. _`Automated MinGW Installer`: http://sourceforge.net/projects/mingw/files/ .. _`MSYS-1.0.exe`: http://downloads.sourceforge.net/mingw/MSYS-1.0.11.exe Mac OS X or Linux ----------------- In a terminal, type:: python setup.py config_fc --fcompiler gnu95 build python setup.py install The above syntax also assumes that you have gFortran installed and available. The `sudo` command may be required to install PyMC into the Python ``site-packages`` directory if it has restricted privileges. .. _`EasyInstall`: http://peak.telecommunity.com/DevCenter/EasyInstall .. _`PyPI`: http://pypi.python.org/pypi/pymc/ Development version =================== You can check out the bleeding edge version of the code from the `subversion`_ repository:: svn checkout http://pymc.googlecode.com/svn/trunk/ pymc Previous versions are available in the ``/tags`` directory. .. _`subversion`: http://subversion.tigris.org/ You can also get the code from the GIT mirror:: git clone git://github.com/pymc-devs/pymc.git pymc Running the test suite ====================== ``pymc`` comes with a set of tests that verify that the critical components of the code work as expected. To run these tests, users must have `nose`_ installed. The tests are launched from a python shell:: import pymc pymc.test() In case of failures, messages detailing the nature of these failures will appear. In case this happens (it shouldn't), please report the problems on the `issue tracker`_ (the issues tab on the Google Code page), specifying the version you are using and the environment. .. _`nose`: http://somethingaboutorange.com/mrl/projects/nose/ Bugs and feature requests ========================= Report problems with the installation, bugs in the code or feature request at the `issue tracker`_. Comments and questions are welcome and should be addressed to PyMC's `mailing list`_. .. _`issue tracker`: http://code.google.com/p/pymc/issues/list .. _`mailing list`: pymc@googlegroups.com pymc-2.2+ds/LICENSE000066400000000000000000000024771204033704200137410ustar00rootroot00000000000000Copyright (c) 2006 Christopher J. Fonnesbeck Copyright (c) 2007-2008 Christopher J. Fonnesbeck, Anand.Prabhakar Patil, David Huard Copyright (c) 2009 PyMC Authors (See CREDITS file) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Other code in PyMC ------------------ See the file pymc/cephes/README for the BSD license under which the cephes code is distributed. pymc-2.2+ds/MANIFEST.in000066400000000000000000000000721204033704200144570ustar00rootroot00000000000000include README.txt INSTALL.txt LICENSE docs/UserGuide.pdf pymc-2.2+ds/README.rst000066400000000000000000000161611204033704200144160ustar00rootroot00000000000000************ Introduction ************ :Date: August 16, 2011 :Version: 2.1 :Authors: Chris Fonnesbeck, Anand Patil, David Huard, John Salvatier :Web site: https://github.com/pymc-devs/pymc :Copyright: This document has been placed in the public domain. :License: PyMC is released under the MIT license. Purpose ======= PyMC is a python module that implements Bayesian statistical models and fitting algorithms, including Markov chain Monte Carlo. Its flexibility and extensibility make it applicable to a large suite of problems. Along with core sampling functionality, PyMC includes methods for summarizing output, plotting, goodness-of-fit and convergence diagnostics. Features ======== PyMC provides functionalities to make Bayesian analysis as painless as possible. Here is a short list of some of its features: * Fits Bayesian statistical models with Markov chain Monte Carlo and other algorithms. * Includes a large suite of well-documented statistical distributions. * Uses NumPy for numerics wherever possible. * Includes a module for modeling Gaussian processes. * Sampling loops can be paused and tuned manually, or saved and restarted later. * Creates summaries including tables and plots. * Traces can be saved to the disk as plain text, Python pickles, SQLite or MySQL database, or hdf5 archives. * Several convergence diagnostics are available. * Extensible: easily incorporates custom step methods and unusual probability distributions. * MCMC loops can be embedded in larger programs, and results can be analyzed with the full power of Python. What's new in version 2 ======================= This second version of PyMC benefits from a major rewrite effort. Substantial improvements in code extensibility, user interface as well as in raw performance have been achieved. Most notably, the PyMC 2 series provides: * New flexible object model and syntax (not backward-compatible). * Reduced redundant computations: only relevant log-probability terms are computed, and these are cached. * Optimized probability distributions. * New adaptive blocked Metropolis step method. * Much more! Usage ===== First, define your model in a file, say mymodel.py (with comments, of course!):: # Import relevant modules import pymc import numpy as np # Some data n = 5*np.ones(4,dtype=int) x = np.array([-.86,-.3,-.05,.73]) # Priors on unknown parameters alpha = pymc.Normal('alpha',mu=0,tau=.01) beta = pymc.Normal('beta',mu=0,tau=.01) # Arbitrary deterministic function of parameters @pymc.deterministic def theta(a=alpha, b=beta): """theta = logit^{-1}(a+b)""" return pymc.invlogit(a+b*x) # Binomial likelihood for data d = pymc.Binomial('d', n=n, p=theta, value=np.array([0.,1.,3.,5.]),\ observed=True) Save this file, then from a python shell (or another file in the same directory), call:: import pymc import mymodel S = pymc.MCMC(mymodel, db='pickle') S.sample(iter=10000, burn=5000, thin=2) pymc.Matplot.plot(S) This example will generate 10000 posterior samples, thinned by a factor of 2, with the first half discarded as burn-in. The sample is stored in a Python serialization (pickle) database. History ======= PyMC began development in 2003, as an effort to generalize the process of building Metropolis-Hastings samplers, with an aim to making Markov chain Monte Carlo (MCMC) more accessible to non-statisticians (particularly ecologists). The choice to develop PyMC as a python module, rather than a standalone application, allowed the use MCMC methods in a larger modeling framework. By 2005, PyMC was reliable enough for version 1.0 to be released to the public. A small group of regular users, most associated with the University of Georgia, provided much of the feedback necessary for the refinement of PyMC to a usable state. In 2006, David Huard and Anand Patil joined Chris Fonnesbeck on the development team for PyMC 2.0. This iteration of the software strives for more flexibility, better performance and a better end-user experience than any previous version of PyMC. PyMC 2.1 was released in early 2010. It contains numerous bugfixes and optimizations, as well as a few new features. This user guide is written for version 2.1. Relationship to other packages ============================== PyMC in one of many general-purpose MCMC packages. The most prominent among them is `WinBUGS`_, which has made MCMC and with it Bayesian statistics accessible to a huge user community. Unlike PyMC, WinBUGS is a stand-alone, self-contained application. This can be an attractive feature for users without much programming experience, but others may find it constraining. A related package is `JAGS`_, which provides a more UNIX-like implementation of the BUGS language. Other packages include `Hierarchical Bayes Compiler`_ and a number of `R packages`_ of varying scope. It would be difficult to meaningfully benchmark PyMC against these other packages because of the unlimited variety in Bayesian probability models and flavors of the MCMC algorithm. However, it is possible to anticipate how it will perform in broad terms. PyMC's number-crunching is done using a combination of industry-standard libraries (NumPy and the linear algebra libraries on which it depends) and hand-optimized Fortran routines. For models that are composed of variables valued as large arrays, PyMC will spend most of its time in these fast routines. In that case, it will be roughly as fast as packages written entirely in C and faster than WinBUGS. For finer-grained models containing mostly scalar variables, it will spend most of its time in coordinating Python code. In that case, despite our best efforts at optimization, PyMC will be significantly slower than packages written in C and on par with or slower than WinBUGS. However, as fine-grained models are often small and simple, the total time required for sampling is often quite reasonable despite this poorer performance. We have chosen to spend time developing PyMC rather than using an existing package primarily because it allows us to build and efficiently fit any model we like within a full-fledged Python environment. We have emphasized extensibility throughout PyMC's design, so if it doesn't meet your needs out of the box chances are you can make it do so with a relatively small amount of code. See the `testimonials`_ page on the wiki for reasons why other users have chosen PyMC. Getting started =============== This guide provides all the information needed to install PyMC, code a Bayesian statistical model, run the sampler, save and visualize the results. In addition, it contains a list of the statistical distributions currently available. More `examples`_ of usage as well as `tutorials`_ are available from the PyMC web site. .. _`examples`: http://code.google.com/p/pymc/ .. _`tutorials`: http://code.google.com/p/pymc/wiki/TutorialsAndRecipes .. _`WinBUGS`: http://www.mrc-bsu.cam.ac.uk/bugs/ .. _`JAGS`: http://www-ice.iarc.fr/~martyn/software/jags/ .. _`Hierarchical Bayes Compiler`: http://www.cs.utah.edu/~hal/HBC/ .. _`R packages`: http://cran.r-project.org/web/packages/ .. _`testimonials`: http://code.google.com/p/pymc/wiki/Testimonials pymc-2.2+ds/builddocs000077500000000000000000000030251204033704200146200ustar00rootroot00000000000000#!/usr/bin/env bash # To run the following correctly, you will need a patched version of docutils to enable support for # math directives. # There is a dummy module in docs named distributions.py that imports all the PyMC likelihoods. # By introspection, epydoc finds the related docstrings and creates a tex output. This way, # we avoid documenting all the stuff that lives in the real pymc.distributions.py # epydoc --verbose --debug --config epydoc.conf # Make manual cd docs #cat distributions-module.tex | ./extract.py -s '\\subsection\{Functions\}' -o distributions-module.text #sed -i -e 's/0\.5\\fboxrule/1pt/g' distributions-module.tex python rst2latex.py ../README.rst --use-latex-toc --no-section-numbering | ./extract.py -s '%___________________________________________________________________________' -e '\\end\{document\}' -o README.tex python rst2latex.py ../INSTALL.rst --use-latex-toc --no-section-numbering | ./extract.py -s '%___________________________________________________________________________' -e '\\end\{document\}' -o INSTALL.tex python rst2latex.py ../pymc/database/README.txt --use-latex-toc --no-section-numbering | ./extract.py -s '%___________________________________________________________________________' -e '\\end\{document\}' -o database.tex mkdir pdf # User Guide pdflatex -output-directory=pdf -interaction batchmode UserGuide bibtex pdf/UserGuide pdflatex -output-directory=pdf -interaction batchmode UserGuide pdflatex -output-directory=pdf -interaction batchmode UserGuide cp pdf/UserGuide.pdf . cd .. pymc-2.2+ds/builddpkg000077500000000000000000000002031204033704200146100ustar00rootroot00000000000000#!/bin/bash python setupegg.py sdist_dsc --extra-cfg-file stdeb_all.cfg cd deb_dist/pymc-2.0 dpkg-buildpackage -rfakeroot -uc -us pymc-2.2+ds/buildosx000077500000000000000000000006711204033704200145050ustar00rootroot00000000000000#!/bin/sh export MACOSX_DEPLOYMENT_TARGET=10.7 export CFLAGS="-arch x86_64" export FFLAGS="-static -ff2c" export LDFLAGS="-Wall -undefined dynamic_lookup -bundle -arch x86_64" export PYTHONPATH="/Library/Python/2.7/site-packages/" export CC=gcc-4.2 export CXX=g++-4.2 rm -rf build python setup.py egg_info -d -r config_fc --fcompiler gfortran build #sudo python setup.py install python setupegg.py bdist_egg # sudo python setupegg.py developpymc-2.2+ds/cephes/000077500000000000000000000000001204033704200141715ustar00rootroot00000000000000pymc-2.2+ds/cephes/README000066400000000000000000000033371204033704200150570ustar00rootroot00000000000000These files were copied from the scipy/special/cephes directory with the exception of the c2f.c file on 2009-01-13 by Andrew D. Straw. Accordingly, these files (all but c2f.c) are under the following license, which was copied from scipy/LICENSE.txt. Copyright (c) 2001, 2002 Enthought, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: a. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. b. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. c. Neither the name of the Enthought nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. pymc-2.2+ds/cephes/c2f.c000066400000000000000000000004311204033704200150050ustar00rootroot00000000000000/* c2f.c - call C functions from fortran */ /* Fortran and C have different calling conventions. This file does impedance matching between the two. */ extern double cephes_i0(double); double i0_(x) double* x; { double result; result = cephes_i0(*x); return result; } pymc-2.2+ds/cephes/cephes_names.h000066400000000000000000000046661204033704200170100ustar00rootroot00000000000000#ifndef CEPHES_NAMES_H #define CEPHES_NAMES_H #define airy cephes_airy #define bdtrc cephes_bdtrc #define bdtr cephes_bdtr #define bdtri cephes_bdtri #define beta cephes_beta #define lbeta cephes_lbeta #define btdtr cephes_btdtr #define cbrt cephes_cbrt #define chdtrc cephes_chdtrc #define chdtr cephes_chdtr #define chdtri cephes_chdtri #define dawsn cephes_dawsn #define ellie cephes_ellie #define ellik cephes_ellik #define ellpe cephes_ellpe #define ellpj cephes_ellpj #define ellpk cephes_ellpk #define exp10 cephes_exp10 #define exp1m cephes_exp1m #define exp2 cephes_exp2 #define expn cephes_expn #define fabs cephes_fabs #define fdtrc cephes_fdtrc #define fdtr cephes_fdtr #define fdtri cephes_fdtri #define fresnl cephes_fresnl #define Gamma cephes_Gamma #define lgam cephes_lgam #define gdtr cephes_gdtr #define gdtrc cephes_gdtrc #define gdtri cephes_gdtri #define hyp2f1 cephes_hyp2f1 #define hyperg cephes_hyperg #define hyp2f0 cephes_hyp2f0 #define onef2 cephes_onef2 #define threef0 cephes_threef0 #define i0 cephes_i0 #define i0e cephes_i0e #define i1 cephes_i1 #define i1e cephes_i1e #define igamc cephes_igamc #define igam cephes_igam #define igami cephes_igami #define incbet cephes_incbet #define incbi cephes_incbi #define iv cephes_iv #define j0 cephes_j0 #define y0 cephes_y0 #define j1 cephes_j1 #define y1 cephes_y1 #define jn cephes_jn #define jv cephes_jv #define k0 cephes_k0 #define k0e cephes_k0e #define k1 cephes_k1 #define k1e cephes_k1e #define kn cephes_kn #define nbdtrc cephes_nbdtrc #define nbdtr cephes_nbdtr #define nbdtri cephes_nbdtri #define ndtr cephes_ndtr #define erfc cephes_erfc #define erf cephes_erf #define ndtri cephes_ndtri #define pdtrc cephes_pdtrc #define pdtr cephes_pdtr #define pdtri cephes_pdtri #define psi cephes_psi #define rgamma cephes_rgamma #define round cephes_round #define shichi cephes_shichi #define sici cephes_sici #define radian cephes_radian #define sindg cephes_sindg #define cosdg cephes_cosdg #define sincos cephes_sincos #define spence cephes_spence #define stdtr cephes_stdtr #define stdtri cephes_stdtri #define struve cephes_struve #define yv cephes_yv #define tandg cephes_tandg #define cotdg cephes_cotdg #define log1p cephes_log1p #define expm1 cephes_expm1 #define cosm1 cephes_cosm1 #define yn cephes_yn #define zeta cephes_zeta #define zetac cephes_zetac #define smirnov cephes_smirnov #define smirnovi cephes_smirnovi #define kolmogorov cephes_kolmogorov #define kolmogi cephes_kolmogi #endif pymc-2.2+ds/cephes/chbevl.c000066400000000000000000000032411204033704200156000ustar00rootroot00000000000000/* chbevl.c * * Evaluate Chebyshev series * * * * SYNOPSIS: * * int N; * double x, y, coef[N], chebevl(); * * y = chbevl( x, coef, N ); * * * * DESCRIPTION: * * Evaluates the series * * N-1 * - ' * y = > coef[i] T (x/2) * - i * i=0 * * of Chebyshev polynomials Ti at argument x/2. * * Coefficients are stored in reverse order, i.e. the zero * order term is last in the array. Note N is the number of * coefficients, not the order. * * If coefficients are for the interval a to b, x must * have been transformed to x -> 2(2x - b - a)/(b-a) before * entering the routine. This maps x from (a, b) to (-1, 1), * over which the Chebyshev polynomials are defined. * * If the coefficients are for the inverted interval, in * which (a, b) is mapped to (1/b, 1/a), the transformation * required is x -> 2(2ab/x - b - a)/(b-a). If b is infinity, * this becomes x -> 4a/x - 1. * * * * SPEED: * * Taking advantage of the recurrence properties of the * Chebyshev polynomials, the routine requires one more * addition per loop than evaluating a nested polynomial of * the same degree. * */ /* chbevl.c */ /* Cephes Math Library Release 2.0: April, 1987 Copyright 1985, 1987 by Stephen L. Moshier Direct inquiries to 30 Frost Street, Cambridge, MA 02140 */ #include #define ANSIPROT #ifdef ANSIPROT double chbevl( double, double [], int ); #endif double chbevl( x, array, n ) double x; double array[]; int n; { double b0, b1, b2, *p; int i; p = array; b0 = *p++; b1 = 0.0; i = n - 1; do { b2 = b1; b1 = b0; b0 = x * b1 - b2 + *p++; } while( --i ); return( 0.5*(b0-b2) ); } pymc-2.2+ds/cephes/i0.c000066400000000000000000000217141204033704200146520ustar00rootroot00000000000000/* i0.c * * Modified Bessel function of order zero * * * * SYNOPSIS: * * double x, y, i0(); * * y = i0( x ); * * * * DESCRIPTION: * * Returns modified Bessel function of order zero of the * argument. * * The function is defined as i0(x) = j0( ix ). * * The range is partitioned into the two intervals [0,8] and * (8, infinity). Chebyshev polynomial expansions are employed * in each interval. * * * * ACCURACY: * * Relative error: * arithmetic domain # trials peak rms * DEC 0,30 6000 8.2e-17 1.9e-17 * IEEE 0,30 30000 5.8e-16 1.4e-16 * */ /* i0e.c * * Modified Bessel function of order zero, * exponentially scaled * * * * SYNOPSIS: * * double x, y, i0e(); * * y = i0e( x ); * * * * DESCRIPTION: * * Returns exponentially scaled modified Bessel function * of order zero of the argument. * * The function is defined as i0e(x) = exp(-|x|) j0( ix ). * * * * ACCURACY: * * Relative error: * arithmetic domain # trials peak rms * IEEE 0,30 30000 5.4e-16 1.2e-16 * See i0(). * */ /* i0.c */ /* Cephes Math Library Release 2.8: June, 2000 Copyright 1984, 1987, 2000 by Stephen L. Moshier */ #include "mconf.h" /* Chebyshev coefficients for exp(-x) I0(x) * in the interval [0,8]. * * lim(x->0){ exp(-x) I0(x) } = 1. */ #ifdef UNK static double A[] = { -4.41534164647933937950E-18, 3.33079451882223809783E-17, -2.43127984654795469359E-16, 1.71539128555513303061E-15, -1.16853328779934516808E-14, 7.67618549860493561688E-14, -4.85644678311192946090E-13, 2.95505266312963983461E-12, -1.72682629144155570723E-11, 9.67580903537323691224E-11, -5.18979560163526290666E-10, 2.65982372468238665035E-9, -1.30002500998624804212E-8, 6.04699502254191894932E-8, -2.67079385394061173391E-7, 1.11738753912010371815E-6, -4.41673835845875056359E-6, 1.64484480707288970893E-5, -5.75419501008210370398E-5, 1.88502885095841655729E-4, -5.76375574538582365885E-4, 1.63947561694133579842E-3, -4.32430999505057594430E-3, 1.05464603945949983183E-2, -2.37374148058994688156E-2, 4.93052842396707084878E-2, -9.49010970480476444210E-2, 1.71620901522208775349E-1, -3.04682672343198398683E-1, 6.76795274409476084995E-1 }; #endif #ifdef DEC static unsigned short A[] = { 0121642,0162671,0004646,0103567, 0022431,0115424,0135755,0026104, 0123214,0023533,0110365,0156635, 0023767,0033304,0117662,0172716, 0124522,0100426,0012277,0157531, 0025254,0155062,0054461,0030465, 0126010,0131143,0013560,0153604, 0026517,0170577,0006336,0114437, 0127227,0162253,0152243,0052734, 0027724,0142766,0061641,0160200, 0130416,0123760,0116564,0125262, 0031066,0144035,0021246,0054641, 0131537,0053664,0060131,0102530, 0032201,0155664,0165153,0020652, 0132617,0061434,0074423,0176145, 0033225,0174444,0136147,0122542, 0133624,0031576,0056453,0020470, 0034211,0175305,0172321,0041314, 0134561,0054462,0147040,0165315, 0035105,0124333,0120203,0162532, 0135427,0013750,0174257,0055221, 0035726,0161654,0050220,0100162, 0136215,0131361,0000325,0041110, 0036454,0145417,0117357,0017352, 0136702,0072367,0104415,0133574, 0037111,0172126,0072505,0014544, 0137302,0055601,0120550,0033523, 0037457,0136543,0136544,0043002, 0137633,0177536,0001276,0066150, 0040055,0041164,0100655,0010521 }; #endif #ifdef IBMPC static unsigned short A[] = { 0xd0ef,0x2134,0x5cb7,0xbc54, 0xa589,0x977d,0x3362,0x3c83, 0xbbb4,0x721e,0x84eb,0xbcb1, 0x5eba,0x93f6,0xe6d8,0x3cde, 0xfbeb,0xc297,0x5022,0xbd0a, 0x2627,0x4b26,0x9b46,0x3d35, 0x1af0,0x62ee,0x164c,0xbd61, 0xd324,0xe19b,0xfe2f,0x3d89, 0x6abc,0x7a94,0xfc95,0xbdb2, 0x3c10,0xcc74,0x98be,0x3dda, 0x9556,0x13ae,0xd4fe,0xbe01, 0xcb34,0xa454,0xd903,0x3e26, 0x30ab,0x8c0b,0xeaf6,0xbe4b, 0x6435,0x9d4d,0x3b76,0x3e70, 0x7f8d,0x8f22,0xec63,0xbe91, 0xf4ac,0x978c,0xbf24,0x3eb2, 0x6427,0xcba5,0x866f,0xbed2, 0x2859,0xbe9a,0x3f58,0x3ef1, 0x1d5a,0x59c4,0x2b26,0xbf0e, 0x7cab,0x7410,0xb51b,0x3f28, 0xeb52,0x1f15,0xe2fd,0xbf42, 0x100e,0x8a12,0xdc75,0x3f5a, 0xa849,0x201a,0xb65e,0xbf71, 0xe3dd,0xf3dd,0x9961,0x3f85, 0xb6f0,0xf121,0x4e9e,0xbf98, 0xa32d,0xcea8,0x3e8a,0x3fa9, 0x06ea,0x342d,0x4b70,0xbfb8, 0x88c0,0x77ac,0xf7ac,0x3fc5, 0xcd8d,0xc057,0x7feb,0xbfd3, 0xa22a,0x9035,0xa84e,0x3fe5, }; #endif #ifdef MIEEE static unsigned short A[] = { 0xbc54,0x5cb7,0x2134,0xd0ef, 0x3c83,0x3362,0x977d,0xa589, 0xbcb1,0x84eb,0x721e,0xbbb4, 0x3cde,0xe6d8,0x93f6,0x5eba, 0xbd0a,0x5022,0xc297,0xfbeb, 0x3d35,0x9b46,0x4b26,0x2627, 0xbd61,0x164c,0x62ee,0x1af0, 0x3d89,0xfe2f,0xe19b,0xd324, 0xbdb2,0xfc95,0x7a94,0x6abc, 0x3dda,0x98be,0xcc74,0x3c10, 0xbe01,0xd4fe,0x13ae,0x9556, 0x3e26,0xd903,0xa454,0xcb34, 0xbe4b,0xeaf6,0x8c0b,0x30ab, 0x3e70,0x3b76,0x9d4d,0x6435, 0xbe91,0xec63,0x8f22,0x7f8d, 0x3eb2,0xbf24,0x978c,0xf4ac, 0xbed2,0x866f,0xcba5,0x6427, 0x3ef1,0x3f58,0xbe9a,0x2859, 0xbf0e,0x2b26,0x59c4,0x1d5a, 0x3f28,0xb51b,0x7410,0x7cab, 0xbf42,0xe2fd,0x1f15,0xeb52, 0x3f5a,0xdc75,0x8a12,0x100e, 0xbf71,0xb65e,0x201a,0xa849, 0x3f85,0x9961,0xf3dd,0xe3dd, 0xbf98,0x4e9e,0xf121,0xb6f0, 0x3fa9,0x3e8a,0xcea8,0xa32d, 0xbfb8,0x4b70,0x342d,0x06ea, 0x3fc5,0xf7ac,0x77ac,0x88c0, 0xbfd3,0x7feb,0xc057,0xcd8d, 0x3fe5,0xa84e,0x9035,0xa22a }; #endif /* Chebyshev coefficients for exp(-x) sqrt(x) I0(x) * in the inverted interval [8,infinity]. * * lim(x->inf){ exp(-x) sqrt(x) I0(x) } = 1/sqrt(2pi). */ #ifdef UNK static double B[] = { -7.23318048787475395456E-18, -4.83050448594418207126E-18, 4.46562142029675999901E-17, 3.46122286769746109310E-17, -2.82762398051658348494E-16, -3.42548561967721913462E-16, 1.77256013305652638360E-15, 3.81168066935262242075E-15, -9.55484669882830764870E-15, -4.15056934728722208663E-14, 1.54008621752140982691E-14, 3.85277838274214270114E-13, 7.18012445138366623367E-13, -1.79417853150680611778E-12, -1.32158118404477131188E-11, -3.14991652796324136454E-11, 1.18891471078464383424E-11, 4.94060238822496958910E-10, 3.39623202570838634515E-9, 2.26666899049817806459E-8, 2.04891858946906374183E-7, 2.89137052083475648297E-6, 6.88975834691682398426E-5, 3.36911647825569408990E-3, 8.04490411014108831608E-1 }; #endif #ifdef DEC static unsigned short B[] = { 0122005,0066672,0123124,0054311, 0121662,0033323,0030214,0104602, 0022515,0170300,0113314,0020413, 0022437,0117350,0035402,0007146, 0123243,0000135,0057220,0177435, 0123305,0073476,0144106,0170702, 0023777,0071755,0017527,0154373, 0024211,0052214,0102247,0033270, 0124454,0017763,0171453,0012322, 0125072,0166316,0075505,0154616, 0024612,0133770,0065376,0025045, 0025730,0162143,0056036,0001632, 0026112,0015077,0150464,0063542, 0126374,0101030,0014274,0065457, 0127150,0077271,0125763,0157617, 0127412,0104350,0040713,0120445, 0027121,0023765,0057500,0001165, 0030407,0147146,0003643,0075644, 0031151,0061445,0044422,0156065, 0031702,0132224,0003266,0125551, 0032534,0000076,0147153,0005555, 0033502,0004536,0004016,0026055, 0034620,0076433,0142314,0171215, 0036134,0146145,0013454,0101104, 0040115,0171425,0062500,0047133 }; #endif #ifdef IBMPC static unsigned short B[] = { 0x8b19,0x54ca,0xadb7,0xbc60, 0x9130,0x6611,0x46da,0xbc56, 0x8421,0x12d9,0xbe18,0x3c89, 0x41cd,0x0760,0xf3dd,0x3c83, 0x1fe4,0xabd2,0x600b,0xbcb4, 0xde38,0xd908,0xaee7,0xbcb8, 0xfb1f,0xa3ea,0xee7d,0x3cdf, 0xe6d7,0x9094,0x2a91,0x3cf1, 0x629a,0x7e65,0x83fe,0xbd05, 0xbb32,0xcf68,0x5d99,0xbd27, 0xc545,0x0d5f,0x56ff,0x3d11, 0xc073,0x6b83,0x1c8c,0x3d5b, 0x8cec,0xfa26,0x4347,0x3d69, 0x8d66,0x0317,0x9043,0xbd7f, 0x7bf2,0x357e,0x0fd7,0xbdad, 0x7425,0x0839,0x511d,0xbdc1, 0x004f,0xabe8,0x24fe,0x3daa, 0x6f75,0xc0f4,0xf9cc,0x3e00, 0x5b87,0xa922,0x2c64,0x3e2d, 0xd56d,0x80d6,0x5692,0x3e58, 0x616e,0xd9cd,0x8007,0x3e8b, 0xc586,0xc101,0x412b,0x3ec8, 0x9e52,0x7899,0x0fa3,0x3f12, 0x9049,0xa2e5,0x998c,0x3f6b, 0x09cb,0xaca8,0xbe62,0x3fe9 }; #endif #ifdef MIEEE static unsigned short B[] = { 0xbc60,0xadb7,0x54ca,0x8b19, 0xbc56,0x46da,0x6611,0x9130, 0x3c89,0xbe18,0x12d9,0x8421, 0x3c83,0xf3dd,0x0760,0x41cd, 0xbcb4,0x600b,0xabd2,0x1fe4, 0xbcb8,0xaee7,0xd908,0xde38, 0x3cdf,0xee7d,0xa3ea,0xfb1f, 0x3cf1,0x2a91,0x9094,0xe6d7, 0xbd05,0x83fe,0x7e65,0x629a, 0xbd27,0x5d99,0xcf68,0xbb32, 0x3d11,0x56ff,0x0d5f,0xc545, 0x3d5b,0x1c8c,0x6b83,0xc073, 0x3d69,0x4347,0xfa26,0x8cec, 0xbd7f,0x9043,0x0317,0x8d66, 0xbdad,0x0fd7,0x357e,0x7bf2, 0xbdc1,0x511d,0x0839,0x7425, 0x3daa,0x24fe,0xabe8,0x004f, 0x3e00,0xf9cc,0xc0f4,0x6f75, 0x3e2d,0x2c64,0xa922,0x5b87, 0x3e58,0x5692,0x80d6,0xd56d, 0x3e8b,0x8007,0xd9cd,0x616e, 0x3ec8,0x412b,0xc101,0xc586, 0x3f12,0x0fa3,0x7899,0x9e52, 0x3f6b,0x998c,0xa2e5,0x9049, 0x3fe9,0xbe62,0xaca8,0x09cb }; #endif #ifdef ANSIPROT extern double chbevl ( double, void *, int ); extern double exp ( double ); extern double sqrt ( double ); #else double chbevl(), exp(), sqrt(); #endif double i0(x) double x; { double y; if( x < 0 ) x = -x; if( x <= 8.0 ) { y = (x/2.0) - 2.0; return( exp(x) * chbevl( y, A, 30 ) ); } return( exp(x) * chbevl( 32.0/x - 2.0, B, 25 ) / sqrt(x) ); } double i0e( x ) double x; { double y; if( x < 0 ) x = -x; if( x <= 8.0 ) { y = (x/2.0) - 2.0; return( chbevl( y, A, 30 ) ); } return( chbevl( 32.0/x - 2.0, B, 25 ) / sqrt(x) ); } pymc-2.2+ds/cephes/mconf.h000066400000000000000000000114251204033704200154470ustar00rootroot00000000000000/* mconf.h * * Common include file for math routines * * * * SYNOPSIS: * * #include "mconf.h" * * * * DESCRIPTION: * * This file contains definitions for error codes that are * passed to the common error handling routine mtherr() * (which see). * * The file also includes a conditional assembly definition * for the type of computer arithmetic (IEEE, DEC, Motorola * IEEE, or UNKnown). * * For Digital Equipment PDP-11 and VAX computers, certain * IBM systems, and others that use numbers with a 56-bit * significand, the symbol DEC should be defined. In this * mode, most floating point constants are given as arrays * of octal integers to eliminate decimal to binary conversion * errors that might be introduced by the compiler. * * For little-endian computers, such as IBM PC, that follow the * IEEE Standard for Binary Floating Point Arithmetic (ANSI/IEEE * Std 754-1985), the symbol IBMPC should be defined. These * numbers have 53-bit significands. In this mode, constants * are provided as arrays of hexadecimal 16 bit integers. * * Big-endian IEEE format is denoted MIEEE. On some RISC * systems such as Sun SPARC, double precision constants * must be stored on 8-byte address boundaries. Since integer * arrays may be aligned differently, the MIEEE configuration * may fail on such machines. * * To accommodate other types of computer arithmetic, all * constants are also provided in a normal decimal radix * which one can hope are correctly converted to a suitable * format by the available C language compiler. To invoke * this mode, define the symbol UNK. * * An important difference among these modes is a predefined * set of machine arithmetic constants for each. The numbers * MACHEP (the machine roundoff error), MAXNUM (largest number * represented), and several other parameters are preset by * the configuration symbol. Check the file const.c to * ensure that these values are correct for your computer. * * Configurations NANS, INFINITIES, MINUSZERO, and DENORMAL * may fail on many systems. Verify that they are supposed * to work on your computer. */ /* Cephes Math Library Release 2.3: June, 1995 Copyright 1984, 1987, 1989, 1995 by Stephen L. Moshier */ #ifndef CEPHES_MCONF_H #define CEPHES_MCONF_H #include "cephes_names.h" /* Constant definitions for math error conditions */ #define DOMAIN 1 /* argument domain error */ #define SING 2 /* argument singularity */ #define OVERFLOW 3 /* overflow range error */ #define UNDERFLOW 4 /* underflow range error */ #define TLOSS 5 /* total loss of precision */ #define PLOSS 6 /* partial loss of precision */ #define TOOMANY 7 /* too many iterations */ #define MAXITER 500 #define EDOM 33 #define ERANGE 34 /* Complex numeral. */ typedef struct { double r; double i; } cmplx; /* Long double complex numeral. */ /* typedef struct { long double r; long double i; } cmplxl; */ /* Type of computer arithmetic */ /* This is kind of improper, as the byte-order of floats may not * be the same as the byte-order of ints. However, it works. */ #include #ifdef WORDS_BIGENDIAN # define MIEEE 1 # define BIGENDIAN 1 #else # define IBMPC 1 # define BIGENDIAN 0 #endif /* UNKnown arithmetic, invokes coefficients given in * normal decimal format. Beware of range boundary * problems (MACHEP, MAXLOG, etc. in const.c) and * roundoff problems in pow.c: * (Sun SPARCstation) */ /* #define UNK 1 */ /* Define this `volatile' if your compiler thinks * that floating point arithmetic obeys the associative * and distributive laws. It will defeat some optimizations * (but probably not enough of them). * * #define VOLATILE volatile */ #define VOLATILE /* For 12-byte long doubles on an i386, pad a 16-bit short 0 * to the end of real constants initialized by integer arrays. * * #define XPD 0, * * Otherwise, the type is 10 bytes long and XPD should be * defined blank (e.g., Microsoft C). * * #define XPD */ #define XPD 0, /* Define to support tiny denormal numbers, else undefine. */ #define DENORMAL 1 /* Define to ask for infinity support, else undefine. */ #define INFINITIES 1 #ifdef NOINFINITIES #undef INFINITIES #endif /* Define to ask for support of numbers that are Not-a-Number, else undefine. This may automatically define INFINITIES in some files. */ #define NANS 1 #ifdef NONANS #undef NANS #endif /* Define to distinguish between -0.0 and +0.0. */ #define MINUSZERO 1 /* Define 1 for ANSI C atan2() function See atan.c and clog.c. */ #define ANSIC 1 /* Get ANSI function prototypes, if you want them. */ #if defined(__STDC__) || defined(_MSC_EXTENSIONS) #define ANSIPROT #include "protos.h" #else int mtherr(); #endif /* Variable for error reporting. See mtherr.c. */ extern int merror; #define gamma Gamma #endif /* CEPHES_MCONF_H */ pymc-2.2+ds/cephes/protos.h000066400000000000000000000171751204033704200157030ustar00rootroot00000000000000/* * This file was automatically generated by version 1.7 of cextract. * Manual editing not recommended. * * Created: Fri Mar 31 19:17:33 1995 */ extern double acosh ( double x ); extern int airy ( double x, double *ai, double *aip, double *bi, double *bip ); extern double asin ( double x ); extern double acos ( double x ); extern double asinh ( double x ); extern double atan ( double x ); extern double atan2 ( double y, double x ); extern double atanh ( double x ); extern double bdtrc ( int k, int n, double p ); extern double bdtr ( int k, int n, double p ); extern double bdtri ( int k, int n, double y ); extern double beta ( double a, double b ); extern double lbeta ( double a, double b ); extern double btdtr ( double a, double b, double x ); extern double cbrt ( double x ); extern double chbevl ( double x, void *P, int n ); extern double chdtrc ( double df, double x ); extern double chdtr ( double df, double x ); extern double chdtri ( double df, double y ); /* extern void clog ( cmplx *z, cmplx *w ); extern void cexp ( cmplx *z, cmplx *w ); extern void csin ( cmplx *z, cmplx *w ); extern void ccos ( cmplx *z, cmplx *w ); extern void ctan ( cmplx *z, cmplx *w ); extern void ccot ( cmplx *z, cmplx *w ); extern void casin ( cmplx *z, cmplx *w ); extern void cacos ( cmplx *z, cmplx *w ); extern void catan ( cmplx *z, cmplx *w ); extern void cadd ( cmplx *a, cmplx *b, cmplx *c ); extern void csub ( cmplx *a, cmplx *b, cmplx *c ); extern void cmul ( cmplx *a, cmplx *b, cmplx *c ); extern void cdiv ( cmplx *a, cmplx *b, cmplx *c ); extern void cmov ( void *a, void *b ); extern void cneg ( cmplx *a ); */ /*extern double cabs ( cmplx *z );*/ /* extern void csqrt ( cmplx *z, cmplx *w );*/ extern double hypot ( double x, double y ); extern double cosh ( double x ); extern double dawsn ( double xx ); extern void eigens ( double A[], double RR[], double E[], int N ); extern double ellie ( double phi, double m ); extern double ellik ( double phi, double m ); extern double ellpe ( double x ); extern int ellpj ( double u, double m, double *sn, double *cn, double *dn, double *ph ); extern double ellpk ( double x ); extern double exp ( double x ); extern double exp10 ( double x ); extern double exp1m ( double x ); extern double exp2 ( double x ); extern double expn ( int n, double x ); extern double fabs ( double x ); extern double fac ( int i ); extern double fdtrc ( double a, double b, double x ); extern double fdtr ( double a, double b, double x ); extern double fdtri ( double a, double b, double y ); /* extern int fftr ( double x[], int m0, double sine[] ); */ extern double ceil ( double x ); extern double floor ( double x ); extern double frexp ( double x, int *pw2 ); extern double ldexp ( double x, int pw2 ); /* extern int signbit ( double x ); extern int isnan ( double x ); extern int isfinite ( double x ); */ #ifndef isnan extern int cephes_isnan ( double x ); #define isnan cephes_isnan #endif extern int fresnl ( double xxa, double *ssa, double *cca ); extern double Gamma ( double x ); extern double lgam ( double x ); extern double gdtr ( double a, double b, double x ); extern double gdtrc ( double a, double b, double x ); extern int gels ( double A[], double R[], int M, double EPS, double AUX[] ); extern double hyp2f1 ( double a, double b, double c, double x ); extern double hyperg ( double a, double b, double x ); extern double hyp2f0 ( double a, double b, double x, int type, double *err ); extern double i0 ( double x ); extern double i0e ( double x ); extern double i1 ( double x ); extern double i1e ( double x ); extern double igamc ( double a, double x ); extern double igam ( double a, double x ); extern double igami ( double a, double y0 ); extern double incbet ( double aa, double bb, double xx ); extern double incbi ( double aa, double bb, double yy0 ); extern double iv ( double v, double x ); extern double j0 ( double x ); extern double y0 ( double x ); extern double j1 ( double x ); extern double y1 ( double x ); extern double jn ( int n, double x ); extern double jv ( double n, double x ); extern double k0 ( double x ); extern double k0e ( double x ); extern double k1 ( double x ); extern double k1e ( double x ); extern double kn ( int nn, double x ); /* extern int levnsn ( int n, double r[], double a[], double e[], double refl[] ); */ extern double log ( double x ); extern double log10 ( double x ); /* extern double log2 ( double x ); */ extern long lrand ( void ); extern long lsqrt ( long x ); extern int minv ( double A[], double X[], int n, double B[], int IPS[] ); extern int mmmpy ( int r, int c, double *A, double *B, double *Y ); extern int mtherr ( char *name, int code ); extern double polevl ( double x, void *P, int N ); extern double p1evl ( double x, void *P, int N ); extern void mtransp ( int n, double *A, double *T ); extern void mvmpy ( int r, int c, double *A, double *V, double *Y ); extern double nbdtrc ( int k, int n, double p ); extern double nbdtr ( int k, int n, double p ); extern double nbdtri ( int k, int n, double p ); extern double ndtr ( double a ); extern double erfc ( double a ); extern double erf ( double x ); extern double ndtri ( double y0 ); extern double pdtrc ( int k, double m ); extern double pdtr ( int k, double m ); extern double pdtri ( int k, double y ); extern double pow ( double x, double y ); extern double powi ( double x, int nn ); extern double psi ( double x ); extern void revers ( double y[], double x[], int n ); extern double rgamma ( double x ); extern double round ( double x ); extern int sprec ( void ); extern int dprec ( void ); extern int ldprec ( void ); extern int shichi ( double x, double *si, double *ci ); extern int sici ( double x, double *si, double *ci ); extern double simpsn ( double f[], double delta ); extern int simq ( double A[], double B[], double X[], int n, int flag, int IPS[] ); extern double sin ( double x ); extern double cos ( double x ); extern double radian ( double d, double m, double s ); /* extern void sincos ( double x, double *s, double *c, int flg ); */ extern double sindg ( double x ); extern double cosdg ( double x ); extern double sinh ( double x ); extern double spence ( double x ); extern double sqrt ( double x ); extern double stdtr ( int k, double t ); extern double stdtri ( int k, double p ); extern double onef2 ( double a, double b, double c, double x, double *err ); extern double threef0 ( double a, double b, double c, double x, double *err ); extern double struve ( double v, double x ); extern double tan ( double x ); extern double cot ( double x ); extern double tandg ( double x ); extern double cotdg ( double x ); extern double tanh ( double x ); extern double log1p ( double x ); extern double expm1 ( double x ); extern double cosm1 ( double x ); extern double yn ( int n, double x ); extern double zeta ( double x, double q ); extern double zetac ( double x ); extern int drand ( double *a ); /* polyn.c */ extern void polini ( int maxdeg ); extern void polprt ( double a[], int na, int d ); extern void polclr ( double *a, int n ); extern void polmov ( double *a, int na, double *b ); extern void polmul ( double a[], int na, double b[], int nb, double c[] ); extern void poladd ( double a[], int na, double b[], int nb, double c[] ); extern void polsub ( double a[], int na, double b[], int nb, double c[] ); extern int poldiv ( double a[], int na, double b[], int nb, double c[] ); extern void polsbt ( double a[], int na, double b[], int nb, double c[] ); extern double poleva ( double a[], int na, double x ); /* polmisc.c */ extern void polatn ( double num[], double den[], double ans[], int nn ); extern void polsqt ( double pol[], double ans[], int nn ); extern void polsin ( double x[], double y[], int nn ); extern void polcos ( double x[], double y[], int nn ); pymc-2.2+ds/code_maintenance.py000066400000000000000000000036201204033704200165510ustar00rootroot00000000000000#!/usr/bin/env python import sys import pymc import os # This is a function, not a test case, because it has to be run from inside # the source tree to work well. mod_strs = ['IPython', 'pylab', 'matplotlib', 'scipy','Pdb'] dep_files = {} for mod_str in mod_strs: dep_files[mod_str] = [] def remove_whitespace(fname): # Remove trailing whitespace fd = open(fname,mode='U') # open in universal newline mode lines = [] for line in fd.readlines(): lines.append( line.rstrip() ) fd.close() fd = open(fname,mode='w') fd.seek(0) for line in lines: fd.write(line+'\n') fd.close() # print 'Removed whitespace from %s'%fname # print # ==================== # = Strip whitespace = # ==================== for dirname, dirs, files in os.walk('.'): if dirname[1:].find('.')==-1: # print dirname for fname in files: if fname[-2:] in ['c', 'f'] or fname[-3:]=='.py' or fname[-4:] in ['.pyx', '.txt', '.tex', '.sty', '.cls'] or fname.find('.')==-1: # print fname remove_whitespace(dirname + '/' + fname) # ========================== # = Check for dependencies = # ========================== for dirname, dirs, files in os.walk('pymc'): for fname in files: if fname[-3:]=='.py' or fname[-4:]=='.pyx': if dirname.find('sandbox')==-1 and fname != 'test_dependencies.py'\ and dirname.find('examples')==-1: for mod_str in mod_strs: if file(dirname+'/'+fname).read().find(mod_str)>=0: dep_files[mod_str].append(dirname+'/'+fname) print 'Instances of optional dependencies found are:' for mod_str in mod_strs: print '\t'+mod_str+':' for fname in dep_files[mod_str]: print '\t\t'+fname if len(dep_files['Pdb'])>0: raise ValueError, 'Looks like Pdb was not commented out in '+', '.join(dep_files[mod_str]) pymc-2.2+ds/docs/000077500000000000000000000000001204033704200136525ustar00rootroot00000000000000pymc-2.2+ds/docs/INSTALL.rst000077500000000000000000000164031204033704200155210ustar00rootroot00000000000000************ Installation ************ :Date: 5 April 2012 :Authors: Chris Fonnesbeck, Anand Patil, David Huard, John Salvatier :Contact: chris.fonnesbeck@vanderbilt.edu :Web site: http://github.com/pymc-devs/pymc :Copyright: This document has been placed in the public domain. :License: PyMC is released under the Academic Free license. :Version: 2.2 PyMC is known to run on Mac OS X, Linux and Windows, but in theory should be able to work on just about any platform for which Python, a Fortran compiler and the NumPy module are available. However, installing some extra depencies can greatly improve PyMC's performance and versatility. The following describes the required and optional dependencies and takes you through the installation process. Dependencies ============ PyMC requires some prerequisite packages to be present on the system. Fortunately, there are currently only a few hard dependencies, and all are freely available online. * `Python`_ version 2.6 or later. * `NumPy`_ (1.6 or newer): The fundamental scientific programming package, it provides a multidimensional array type and many useful functions for numerical analysis. * `Matplotlib`_ (1.0 or newer): 2D plotting library which produces publication quality figures in a variety of image formats and interactive environments * `SciPy`_ (optional): Library of algorithms for mathematics, science and engineering. * `pyTables`_ (optional): Package for managing hierarchical datasets and designed to efficiently and easily cope with extremely large amounts of data. Requires the `HDF5`_ library. * `pydot`_ (optional): Python interface to Graphviz's Dot language, it allows PyMC to create both directed and non-directed graphical representations of models. Requires the `Graphviz`_ library. * `IPython`_ (optional): An enhanced interactive Python shell and an architecture for interactive parallel computing. * `nose`_ (optional): A test discovery-based unittest extension (required to run the test suite). There are prebuilt distributions that include all required dependencies. For Mac OS X and Windows users, we recommend the `Enthought Python Distribution`_. The Enthought Python Distribution comes bundled with these prerequisites. Note that depending on the currency of these distributions, some packages may need to be updated manually. If, instead of installing the prebuilt binaries, you prefer (or have) to build ``pymc`` yourself, make sure you have a Fortran and a C compiler. There are free compilers (gfortran, gcc) available on all platforms. Other compilers have not been tested with PyMC but may work nonetheless. .. _`Python`: http://www.python.org/. .. _`NumPy`: http://www.scipy.org/NumPy .. _`Matplotlib`: http://matplotlib.sourceforge.net/ .. _`Enthought Python Distribution`: http://www.enthought.com/products/epddownload.php .. _`SciPy`: http://www.scipy.org/ .. _`IPython`: http://ipython.scipy.org/ .. _`pyTables`: http://www.pytables.org/moin .. _`HDF5`: http://www.hdfgroup.org/HDF5/ .. _`pydot`: http://code.google.com/p/pydot/ .. _`Graphviz`: http://www.graphviz.org/ .. _`nose`: http://readthedocs.org/docs/nose/en/latest/ Installation using EasyInstall ============================== The easiest way to install PyMC is to type in a terminal:: easy_install pymc Provided `EasyInstall`_ (part of the `setuptools`_ module) is installed and in your path, this should fetch and install the package from the `Python Package Index`_. Make sure you have the appropriate administrative privileges to install software on your computer. .. _`Python Package Index`: http://pypi.python.org/pypi .. _`setuptools`: http://peak.telecommunity.com/DevCenter/setuptools Installing from pre-built binaries ================================== Pre-built binaries are available for Windows XP and Mac OS X. These can be installed as follows: 1. Download the installer for your platform from `PyPI`_ or the `GitHub download page`_. 2. Double-click the executable installation package, then follow the on-screen instructions. For other platforms, you will need to build the package yourself from source. Fortunately, this should be relatively straightforward. .. _`GitHub download page`: http://github.com/pymc-devs/pymc/downloads Compiling the source code ========================= First download the source code from `GitHub`_ and unpack it. Then move into the unpacked directory and follow the platform specific instructions. Windows ------- One way to compile PyMC on Windows is to install `MinGW`_ and `MSYS`_. MinGW is the GNU Compiler Collection (GCC) augmented with Windows specific headers and libraries. MSYS is a POSIX-like console (bash) with UNIX command line tools. Download the `Automated MinGW Installer`_ and double-click on it to launch the installation process. You will be asked to select which components are to be installed: make sure the g77 compiler is selected and proceed with the instructions. Then download and install `MSYS-1.0.exe`_, launch it and again follow the on-screen instructions. Once this is done, launch the MSYS console, change into the PyMC directory and type:: python setup.py install This will build the C and Fortran extension and copy the libraries and python modules in the `site-packages` directory of your Python distribution. .. _`MinGW`: http://www.mingw.org/ .. _`MSYS`: http://www.mingw.org/wiki/MSYS .. _`Automated MinGW Installer`: http://sourceforge.net/projects/mingw/files/ .. _`MSYS-1.0.exe`: http://downloads.sourceforge.net/mingw/MSYS-1.0.11.exe Mac OS X or Linux ----------------- In a terminal, type:: python setup.py config_fc --fcompiler gfortran build python setup.py install The above syntax also assumes that you have gFortran installed and available. The `sudo` command may be required to install PyMC into the Python ``site-packages`` directory if it has restricted privileges. In addition, the python-dev package may be required to install PyMC on Linux systems. .. _`EasyInstall`: http://peak.telecommunity.com/DevCenter/EasyInstall .. _`PyPI`: http://pypi.python.org/pypi/pymc/ Development version =================== You can check out the development version of the code from the `GitHub`_ repository:: git clone git://github.com/pymc-devs/pymc.git Previous versions are available in the ``/tags`` directory. .. _`GitHub`: https://github.com/pymc-devs/pymc Running the test suite ====================== ``pymc`` comes with a set of tests that verify that the critical components of the code work as expected. To run these tests, users must have `nose`_ installed. The tests are launched from a python shell:: import pymc pymc.test() In case of failures, messages detailing the nature of these failures will appear. In case this happens (it shouldn't), please report the problems on the `issue tracker`_ (the issues tab on the Google Code page), specifying the version you are using and the environment. .. _`nose`: http://readthedocs.org/docs/nose/en/latest/ Bugs and feature requests ========================= Report problems with the installation, bugs in the code or feature request at the `issue tracker`_. Comments and questions are welcome and should be addressed to PyMC's `mailing list`_. .. _`issue tracker`: http://github.com/pymc-devs/pymc/issues .. _`mailing list`: pymc@googlegroups.com pymc-2.2+ds/docs/Makefile000066400000000000000000000127211204033704200153150ustar00rootroot00000000000000# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = BUILDDIR = _build HTMLBUILDDIR = ~/Code/pymc-pages # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . # the i18n builder cannot share the environment and doctrees with the others I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " singlehtml to make a single large HTML file" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " devhelp to make HTML files and a Devhelp project" @echo " epub to make an epub" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " latexpdf to make LaTeX files and run them through pdflatex" @echo " text to make text files" @echo " man to make manual pages" @echo " texinfo to make Texinfo files" @echo " info to make Texinfo files and run them through makeinfo" @echo " gettext to make PO message catalogs" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf $(BUILDDIR)/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(HTMLBUILDDIR) @echo @echo "Build finished. The HTML pages are in $(HTMLBUILDDIR)." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." singlehtml: $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml @echo @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in $(BUILDDIR)/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in $(BUILDDIR)/qthelp, like this:" @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/PyMC.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/PyMC.qhc" devhelp: $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp @echo @echo "Build finished." @echo "To view the help file:" @echo "# mkdir -p $$HOME/.local/share/devhelp/PyMC" @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/PyMC" @echo "# devhelp" epub: $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub @echo @echo "Build finished. The epub file is in $(BUILDDIR)/epub." latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." @echo "Run \`make' in that directory to run these through (pdf)latex" \ "(use \`make latexpdf' here to do that automatically)." latexpdf: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through pdflatex..." make -C $(BUILDDIR)/latex all-pdf @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." text: $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text @echo @echo "Build finished. The text files are in $(BUILDDIR)/text." man: $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man @echo @echo "Build finished. The manual pages are in $(BUILDDIR)/man." texinfo: $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo @echo @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." @echo "Run \`make' in that directory to run these through makeinfo" \ "(use \`make info' here to do that automatically)." info: $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo @echo "Running Texinfo files through makeinfo..." make -C $(BUILDDIR)/texinfo info @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." gettext: $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale @echo @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes @echo @echo "The overview file is in $(BUILDDIR)/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in $(BUILDDIR)/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in $(BUILDDIR)/doctest/output.txt." pymc-2.2+ds/docs/README.rst000077500000000000000000000164421204033704200153530ustar00rootroot00000000000000************ Introduction ************ :Date: 5 April 2012 :Authors: Chris Fonnesbeck, Anand Patil, David Huard, John Salvatier :Contact: chris.fonnesbeck@vanderbilt.edu :Web site: http://github.com/pymc-devs/pymc :Copyright: This document has been placed in the public domain. :License: PyMC is released under the Academic Free License. :Version: 2.2 Purpose ======= PyMC is a python module that implements Bayesian statistical models and fitting algorithms, including Markov chain Monte Carlo. Its flexibility and extensibility make it applicable to a large suite of problems. Along with core sampling functionality, PyMC includes methods for summarizing output, plotting, goodness-of-fit and convergence diagnostics. Features ======== PyMC provides functionalities to make Bayesian analysis as painless as possible. Here is a short list of some of its features: * Fits Bayesian statistical models with Markov chain Monte Carlo and other algorithms. * Includes a large suite of well-documented statistical distributions. * Uses NumPy for numerics wherever possible. * Includes a module for modeling Gaussian processes. * Sampling loops can be paused and tuned manually, or saved and restarted later. * Creates summaries including tables and plots. * Traces can be saved to the disk as plain text, Python pickles, SQLite or MySQL database, or hdf5 archives. * Several convergence diagnostics are available. * Extensible: easily incorporates custom step methods and unusual probability distributions. * MCMC loops can be embedded in larger programs, and results can be analyzed with the full power of Python. What's new in version 2 ======================= This second version of PyMC benefits from a major rewrite effort. Substantial improvements in code extensibility, user interface as well as in raw performance have been achieved. Most notably, the PyMC 2 series provides: * New flexible object model and syntax (not backward-compatible). * Reduced redundant computations: only relevant log-probability terms are computed, and these are cached. * Optimized probability distributions. * New adaptive blocked Metropolis step method. * Much more! Usage ===== First, define your model in a file, say mymodel.py (with comments, of course!):: # Import relevant modules import pymc import numpy as np # Some data n = 5*np.ones(4,dtype=int) x = np.array([-.86,-.3,-.05,.73]) # Priors on unknown parameters alpha = pymc.Normal('alpha',mu=0,tau=.01) beta = pymc.Normal('beta',mu=0,tau=.01) # Arbitrary deterministic function of parameters @pymc.deterministic def theta(a=alpha, b=beta): """theta = logit^{-1}(a+b)""" return pymc.invlogit(a+b*x) # Binomial likelihood for data d = pymc.Binomial('d', n=n, p=theta, value=np.array([0.,1.,3.,5.]),\ observed=True) Save this file, then from a python shell (or another file in the same directory), call:: import pymc import mymodel S = pymc.MCMC(mymodel, db='pickle') S.sample(iter=10000, burn=5000, thin=2) pymc.Matplot.plot(S) This example will generate 10000 posterior samples, thinned by a factor of 2, with the first half discarded as burn-in. The sample is stored in a Python serialization (pickle) database. History ======= PyMC began development in 2003, as an effort to generalize the process of building Metropolis-Hastings samplers, with an aim to making Markov chain Monte Carlo (MCMC) more accessible to non-statisticians (particularly ecologists). The choice to develop PyMC as a python module, rather than a standalone application, allowed the use MCMC methods in a larger modeling framework. By 2005, PyMC was reliable enough for version 1.0 to be released to the public. A small group of regular users, most associated with the University of Georgia, provided much of the feedback necessary for the refinement of PyMC to a usable state. In 2006, David Huard and Anand Patil joined Chris Fonnesbeck on the development team for PyMC 2.0. This iteration of the software strives for more flexibility, better performance and a better end-user experience than any previous version of PyMC. PyMC 2.2 was released in April 2012. It contains numerous bugfixes and optimizations, as well as a few new features, inculding improved output plotting, csv table output, improved imputation syntax, and posterior predictive check plots. This user guide has been updated for version 2.2. Relationship to other packages ============================== PyMC in one of many general-purpose MCMC packages. The most prominent among them is `WinBUGS`_, which has made MCMC (and with it, Bayesian statistics) accessible to a huge user community. Unlike PyMC, WinBUGS is a stand-alone, self-contained application. This can be an attractive feature for users without much programming experience, but others may find it constraining. A related package is `JAGS`_, which provides a more UNIX-like implementation of the BUGS language. Other packages include `Hierarchical Bayes Compiler`_ and, more recently, `STAN`_. It would be difficult to meaningfully benchmark PyMC against these other packages because of the unlimited variety in Bayesian probability models and flavors of the MCMC algorithm. However, it is possible to anticipate how it will perform in broad terms. PyMC's number-crunching is done using a combination of industry-standard libraries (NumPy and the linear algebra libraries on which it depends) and hand-optimized Fortran routines. For models that are composed of variables valued as large arrays, PyMC will spend most of its time in these fast routines. In that case, it will be roughly as fast as packages written entirely in C and faster than WinBUGS. For finer-grained models containing mostly scalar variables, it will spend most of its time in coordinating Python code. In that case, despite our best efforts at optimization, PyMC will be significantly slower than packages written in C and on par with or slower than WinBUGS. However, as fine-grained models are often small and simple, the total time required for sampling is often quite reasonable despite this poorer performance. We have chosen to spend time developing PyMC rather than using an existing package primarily because it allows us to build and efficiently fit any model we like within a productuve Python environment. We have emphasized extensibility throughout PyMC's design, so if it doesn't meet your needs out of the box, chances are you can make it do so with a relatively small amount of code. See the `testimonials`_ page on the wiki for reasons why other users have chosen PyMC. Getting started =============== This guide provides all the information needed to install PyMC, code a Bayesian statistical model, run the sampler, save and visualize the results. In addition, it contains a list of the statistical distributions currently available. More `examples and tutorials`_ are available from the PyMC web site. .. _`examples and tutorials`: https://github.com/pymc-devs/pymc/wiki .. _`WinBUGS`: http://www.mrc-bsu.cam.ac.uk/bugs/ .. _`JAGS`: http://www-ice.iarc.fr/~martyn/software/jags/ .. _`Hierarchical Bayes Compiler`: http://www.cs.utah.edu/~hal/HBC/ .. _`STAN`: http://code.google.com/p/stan/ .. _`testimonials`: https://github.com/pymc-devs/pymc/wiki/Testimonials .. _`issues page`: https://github.com/pymc-devs/pymc/issuespymc-2.2+ds/docs/_images/000077500000000000000000000000001204033704200152565ustar00rootroot00000000000000pymc-2.2+ds/docs/_images/DisasterModel2.pdf000066400000000000000000000272161204033704200206020ustar00rootroot00000000000000%PDF-1.3 %Äåòåë§ó ÐÄÆ 4 0 obj << /Length 5 0 R /Filter /FlateDecode >> stream x•˜Ën7E÷ý\J 1|³¹‘,¼3¬]bÁ6$'–ùûœbw‘íÑȲ-꩞"/ëqyËŸÍóÙ8[ÌóëGonï?7æÊ‡ÕfsRáO®ÅÔÍÃ;sk|ô6µbZ3÷Æ— ›¹3¾E}ugÞùMÍk~?n›½zk\ÿyû ¾?^yÙ·²aZ³ÍËͽ yµÍâ*8ø¼¶ísÇugbp‡÷²é©Ç[ŽÉñÂÂñœáhŽóvôÅ÷¼oìÀ–?^v<@ÎÆ¸®UŒ×÷懟½u‹7×·æsñðû¥¹r6˜‹¿/ %ß]š_ÍõkóÓ5û>\Î’¢_W‚·5Ô¶Hmö5™à“-mÍ ¯¢óÙ ?ߊ 52Sš©$à™BY’·%圆ńdsqà?øU›j*®™ «OËŽ`~Š“ýÆê©ÀÁ° œê·ÜP7‡˜³,!>Ú=`J´U†2s= ÕÙUޝ–%¬Áz Ñô“ÃHÊ×Tx)A€„žˆ,9XGDXiúÅd!¡ÄöÕý°(¿ûMœì·¯¾„\l%j™8õ|7FëRÚî\]fàPøÁQ–Ò 'eš-«+ŤQ•tÑV•ÿjU~Ð-Ï›÷—ËV°é«?õa|ù“Zð:-æg²Ø{Õ[œ”p `'à’Yúv¥Ì¢K–6Šô'ŒAìMŒÙº5‘ôŠŸ¯ÕÄL+æF«jt:)m¾%iÜ:ا§)Ø\¥EFï{µ(? ¿‹øZlK$SهدÖeZY-\ cLñÈ>žÕ“—&«Ëà?õ;°ÈX}pÍ@0-OÎ'죗ÏWê7† „A`´KïI¯#åå€iQž˜~;›P¿RîI3X(T²%™Ê©J`,"÷[̾ú2-ŠŒ»Ÿâ¼ž®®œ3ì–eâœ~‡J<ËBz;vÒ*<ÜŽ4XÌ.7“½ qnT3.ɇ;5ý÷›>Ý?ýÚ§Ëåi§_D½3eûB €Zëß„d¹2%D,Ö5”Ísl³I*½#LSò&uèø$,“ù Cûý3zçÄãEv鬹Ã)Ù~ïuòDñO$p›vüûgåÄCsø¢Â)\ˆ;r»L\’Î1 yyIB«Ö»B‘ï:†(E¡.a¬Á$Ó¢½>üLV+Nyƒ‹mr ­PíºRlG?¶Î1дcõaQ&~Š“«Þ¦åÉù¾‘IÊ©ôÀh§ÝØ@.7£}<-Ê$Óo2Ir+¬D`oÄÕ(™J3J`L"“ëQ&™E‡Ÿâ„¹ÆêÊ$2ÉÄ9ý´ ŸÓ3ê‚FkðÀ$\éηÏ1É Á$ªgyœå“]ê g¾ƒO"TºFȤËt„T5]A·t Z€9ů1Чáõè°dOç"4Êšë³ÄR£-Áû¥ÏX™Å ¢^P°]²äÌS«-•ý½0U%4]ÆìÞ]åÍûñ¢Œa„°žmÁ'—6Ð9êÒ˶1£ÀSe Ž˜­—m¥^È´@yÏ7Ÿz¿˜rf§L_BŒ8׈°{B=á„zDÂ^ïóÔÃ$€òBYéâ2Ù1R¡bãã6Vu:E”64§q&rS-a«„`6¿±ŠE­²ißÌ6U1~ø,{…ƒ´$hŽãM7nÜ Wõ™ÅwË éì~¦HÛmqÔÚŒaz쯖EQÎÓ}I£Eð¹t±LWè׈¸J–$Ët5-ÔzŸ®¦#Î>]I KBùÉtµˆ¾EY CWOMÂ’¦[ ”¨„›ŽnâDu‰ß’v˜da,NÈúl5÷–ÓÓͶ{qægˆ:7òÃÞέL“s¶ÿª[Æ´ô8Héñ += ÇO¨gyF¥LDú3cè=Ï5DáûݸØãûÐ6ÌB\Ä1AG‹“Ái&Ä<6þ álj†ÿÚÙLŒH*hÔ´ÑÍS×ï’5‰<eM‡ÊÊ*kôó”5ê¡ìò’¬GšÆ»§Ì²\Üÿ3©åÍÿœäÖÕ endstream endobj 5 0 obj 1682 endobj 2 0 obj << /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 320 239] >> endobj 6 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R /Cs2 8 0 R >> /Font << /F1.0 9 0 R >> >> endobj 10 0 obj << /Length 11 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >> stream x…TÏkAþ6n©Ð"Zk²x"IY«hEÔ6ýbk Û¶Ed3IÖn6ëî&µ¥ˆäâÑ*ÞEí¡ÿ€zðd/J…ZE(Þ«(b¡-ñÍnL¶¥êÀÎ~óÞ7ï}ovß rÒ4õ€ä ÇR¢il|BjüˆŽ¢ A4%UÛìN$Aƒsù{çØz[VÃ{ûw²w­šÒ¶š„ý@àGšÙ*°ïq Yˆ<ß¡)ÇtßãØòì9NyxÁµ+=ÄY"|@5-ÎM¸SÍ%Ó@ƒH8”õqR>œ×‹”×infÆÈ½O¦»Ìî«b¡œNö½ô~N³Þ>Â! ­?F¸žõŒÕ?âaá¤æÄ†=5ôø`·©ø5Â_M'¢TqÙ. ñ˜®ýVòJ‚p8Êda€sZHO×Lnøº‡}&ׯâwVQáygÞÔÝïEÚ¯0  š HPEa˜°P@†<14²r?#«“{2u$j»tbD±A{6Ü=·Q¤Ý<þ("q”Cµ’üAþ*¯ÉOåyùË\°ØV÷”­›šºòà;Å噹×ÓÈãsM^|•Ôv“WG–¬yz¼šì?ìW—1æ‚5Äs°ûñ-_•Ì—)ŒÅãUóêK„uZ17ߟl;=â.Ï.µÖs­‰‹7V›—gýjHû“æUùO^õñügÍÄcâ)1&vŠç!‰—Å.ñ’ØK« â`mÇ•†)Òm‘ú$Õ``š¼õ/]?[x½F õQ”ÌÒT‰÷Â*d4¹oúÛÇüä÷ŠçŸ(/làÈ™ºmSqï¡e¥ns®¿Ñ}ð¶nk£~8üX<«­R5Ÿ ¼v‡zè)˜Ó––Í9R‡,Ÿ“ºéÊbRÌPÛCRR×%×eK³™UbévØ™Ón¡9B÷ħJe“ú¯ñ°ý°Rùù¬RÙ~NÖ—úoÀ¼ýE endstream endobj 11 0 obj 737 endobj 7 0 obj [ /ICCBased 10 0 R ] endobj 12 0 obj << /Length 13 0 R /N 1 /Alternate /DeviceGray /Filter /FlateDecode >> stream x…ROHQþÍ6„ˆA…xˆw •)¬¬ ÚvuY•m[•Ò¢gߺ£³3Ó›Ù5Å“]¢É`¨‰µé²™…}v*Ëìðèñ²bç{aÿ[QÓÀ'a?d‡yÖ­ö®Sà{„=5àήÅñÚŠ^-C÷T#hŒsMÄÓ×9s¤ˆï1Ô˜÷F9¦ 1w–ª7€;aYªf ±]û®ê%î{wÓã;Ñ›9 \ Ir±ÙÐ< X}‹°I<>ÎUàw¨˜À¹‰ÜÍ(÷Õg£RVzWÆOã¹ñÅøelÏ€~¬v×{|ÿéãu×¶><ùzÜ9®½UaVqe ÝÿÇ2„Ù'9¦ÁÓ¡YXkØväšÌL° (Ä>—ú’UÜÕîí¸EÌP>,l%ºKTn)Ôê=ƒJ¬+Øvp’Ä,Z¸Skº9xwØ"zmùMW²ë†þúözûÚòmʨ)(ͳDf”±[£äÝxÛýf‘Ÿ8:¾ç½ŠZÉþIE?…9Z*òUôVPÖÄog~¶~\?¥çõAý< =­ŸÑ¯è£¾ tIÏÂsQ£Ið°i!â Šƒ3ÔNTcâ)ñò´[d‘ý@ýf endstream endobj 13 0 obj 704 endobj 8 0 obj [ /ICCBased 12 0 R ] endobj 3 0 obj << /Type /Pages /MediaBox [0 0 320 239] /Count 1 /Kids [ 2 0 R ] >> endobj 14 0 obj << /Type /Catalog /Pages 3 0 R >> endobj 15 0 obj << /Length 16 0 R /Length1 9700 /Filter /FlateDecode >> stream x½Zyx”չϷϒÉìûdf˜ÌL&{d! !KbH$’ ‚ ÁØÂ E¢¢ˆ²z­¨e­2„P/µb[Å ÔÚV+ZÛÇ<ôöj¯U’¹ïù&Dà¹õáŸ~ß¼g_Þó;ïyßsÎ7]+V¶Aô µs[:ü$/ ½ –µtÆãêÕ,èîòÄã| »tQçâeñ¸ô€ÒµxiÏH}Ã]ÚÞö¶lG~.£›×Ž ñ(‡~rû².,Gý:3–Þ±`$ßP‹ñ”e-wôbÜs{˲6ôñIS§óŽ;»h À÷5:U+ÚFÊ“äï ˜j€;@· hñm?Wº€Ã\šÏÂtÕæù‰Å_N’ãó«–ýÓÞÎÝv9¨Ú$ýWÊS_ ‡ÔóU›Fsäzè¢PŸ…©H%Hã‘ÒÒ&[¡—ì†GžBb¡ƒ<=H¶#q£¡};Fèç¤ðqÒv2-¬âܳŒ6·U©r¿%ÂÀ“î÷­Ÿœ 6œ½‰­?“•ä)òSXnò3ð“»¡ RȎá¥îfÌÚH½H¬ì²¯?i¬û%’~Ž`$qäˆûÏ9îOs¢ éw¿Œrèý2 cáD÷Iדîÿr-v¿„t žµ?„%ޏ÷¹–º7'EÉŽ~÷£®(Á:›âÞJV=â^Úâ^˜#çÏØeô» 1vXåÎ+ðºÇ».º³‚Q‰`<Ã5Úó[w2VÄblÔÖ¹®Íî ˜•ä*N@:Aö“Jvöû§¹c‡{xj¨`K”üèpUJŽ?JîçU¥l Uý¡n¨"ÄðìWŵâ-âdq¬˜&¦ˆÑ+:D£¤—´’FRKJI’Ä(ùy‰[8A@ Ârà°$H|”<‰Ü òœœøÜQ‰“ $c4ö /c”ÐÒŽrHˆ’çÇ“ž »9âä -CÃè  ‘˜òPT€uæîk‰~’®°¢ì_9ÍrÎ7í_?VâŠl™^ßÙïjŒŒ¥˜«ñJqë•À¿ô»VbV[iZÚôºžÃÝK•·ùÊ›}åmHÍ‘ºÛ­‘ÞVçÐ’Nšá‰°æÖíÔoi‹túÚÊ"K|ežCÝr½ë²Ñìn_Ù!XT>«áТp[Yw¸»Ü×RÖx¸µtEÓ5}míkEéÿÓW)mlí«U®w]_M4»•öÕDûj¢}µ†[å¾èàË;êKïìBéô”wL÷DRê#SgÎmˆxZË¢d7&–­þ$hù!…ï;—n€ØûHPøæØgüÐ/‹ý7[„“zŒ3\R 'á!Ø A€½N[aœ%Kpmσ8O’ u/Q˜¿!±Ø›°žÅò]ð2<‡@u– s7ìnŒ‡1Ü kcOC2ÀOàE(ÄV7Â`l_ì0æÖÁͰ`ý_sˆ3Äž] fb›k1çÍØŒØAÐC:”B-¦®…—ˆŸý ÖV(BŸÂ.ø%|Aî%±öXwì\ìcU+8¡ßÕd€|Ìä~{"öר0"‘©Øk3l†g°ýƒøžDÕZNn#]d3yœ 3÷2Ü:Þ2<„8„ ß*ÔÊ÷#ÇàüþI.1VVËv±¯ÄÆÇþT0GIGÒÝø®Çw#ŽéH6™BjÉjòyœ¼Í¤273 Ì*æ.æ3¶†Çö°oswrýüƒü6A5üUìDìLì]°€ n°G÷2œƒ/áÂb[Nâ'E¤”ÜŠo/ÙÉ#»È1¦–œ$ç˜ýäär‰|ËðŒš11iL³™9À¼Ì¼Îv°³ÛÙ?²_q“x†ßÅ*øÅß ·o~=Vû8ö5ªX ¼83¥Pó¡GÛ ãà?pÏá{gí¼gå÷â„AøQ¢'v2–Tã[Cn"‹Hy’Ç÷%™—08Œ‚Ñ1ÆÉÔ3­Ì2¦—y—éel*;ËÄ÷Uö<û-û-ÇsÎÄUrSáAn·ßÝÜ^®Ÿ{ƒ/ä'ñ5ül¾—ßÀ?È.àßäÏ k„B¿pIøªÅââƒ8;gQf‰²üÝÑdä~,Ü Hi…-8»H ô¡t-$÷#^kb×°•L6JÃKð#”Ö°6°ó`Wì=v?\@IYŠMö®\üVœ{!¥hä ‡RC)Á€?Ù7ÆëA•ïtØmV‹Ùd4èuÚµJ©DçX†@z¹¯¢Ù 4G¸€¯ª*ƒÆ}-˜ÐrUB3.eO¤âÚ2­×‚Y×” cÉEו ÇK†GK­§Š3Ò=å>Oä·e>O”ÌÙ€á‡Ê|žÈ ®–ÃÈá {½XÁSnm/óDH³§áõBߢahm¦¡–y ¶¥1Â4Ó¶ti‹¯,b¹ûSëwÑ+¡ò¯ÊŒ0þŠ–¶¾ŠH¸ù—F›i¬åAŒM¯÷`³ÌºÆ†Y7Âåq rJÙÛóODá+õµ÷-iFp¡®¡ß¶ËÊ7µ ý¶°MŽd¤³®)òâèeLΘLý"¯uMÜÿó}ñô·NRߺæÔGèO¯€P|S‘ψg܉™- N[ô-(@œði$8ÌägJ„A™aýÞ?µ%Ò[…ö²8sÍKÊú6»l„J±|sŸvΖ×ú<}_¡µnö ~qmJËHŠà×~4“Nô¨¬DHË•p75–~u»Õ×Nç·[žSŒû¬åW%`œBCyŽÑ€×6x#žFLÀÝdúô((j²±1Jbë¢Pæ:†{Tvþ­˜NE­£ ûÇHF:&¤z1”™î©Àž+¨¬xú<}Söy*<í(Lœ_ö1£­¯1 ¬o@œ`öntŒÛ'`;Y´¬‚Åû±…%#- /'e a¡ìt4¦l ¶afC¤·Ì —5â, øž¬mˆœDÉmlÄR9£œ"Ç«;¬#Úf}ƒÏ9Ù×çè£ë-¸>!<’Z„B%½µX=Ÿ×!Ï×çE¶)¦ãP¤¯HîÙ¿á¼Q¾±f>r›'#\ð!\x#O¸!„‹F9½áb么"<ñ߇ð¤k.ù~„ã|#““‘Û°Œpé„ð”A¸ì†.åô„+çrŠpå¿áªkžúýO噜ŽÜN“žñ!\}#×ÜÂ7rz µÈóMá™ÿ>„ë®A¸þûž5Ê72y3r;KFxö„ðœA¸á†nåô„ç"Ïá[F;"pµî½Ní®˜ç]9î”x=”rw Õ᡺ý¤*¤µäŒL„ý°–Æ‘h~7³6`ÙR¦,ïÅóšã&lîÊ=O'aŒÏ=–ËÇsÏf<†ñÂoè#¡Uâ EáÐ@"Þ)èôHôU¸ w꯱v¶Š]Â~Æ•rÇùt~…P'<-\÷Kal½GpÏ”,¶\¿/’²Ð¨#IÚ(À9$Ç0ûa8$À°ø!—y™v[áavZvN®Î« "•r£—ÿÄ¿øÍ”(Wý-Þ=БÄ©Xö“ø R ÅÚbÈÌÉÖ÷š0 ÚðZ…ºØ‡òi!ÏÅðûpAj6QjUµ3˜[¥íP,ÑŠ…’^­`cÅd…K«v¥1™¡¢£ELÑØT¿^+ò’38ÆâŒ’¾°Ïâr‹AW¦ŠqW‹ÅÅN£JÝ›lŸä9§% l'½@¶â!éÙxQóeõà—ƒ5ÚT_:¥/Ì‚’’Aúê uzKa“N_˜9˜9HÐ×Y s²§ô„SòòMc€Øü$/Ñ Ö$‡Ì£—xÇ@>ã»Ëâ%&/:x÷–F´Åô¬Ï=÷@iJ6çŽÍÏ›H4$‘¢`"yùyãÇ|cDAôM"¹cñ¸¡3b!ìBC|c‚ õãÇååˆfEÍüÆ-Þö±ËZsêÉÀ$“ú¾»*ò*÷òÿûÌ‹Ý+-~u’.5=ДjVä¿þãÇ_<¾µï¹éSwo29M‚3k1Y*¥[3æÕÏH­?½³ªjÛÐVç–]§J}áª%¿¸ÿñg ä"•@ÒWŸ=ñ¹§K~~Çááo.ýÌÿüÂÙ_ÿêÜkLþ¸¤éŒë›I/h ßü•ÌÁõVû€³ãé܉79~¢÷l•¶Û÷¸Y^Ã$òF“FŸh2†Õa£²“éª#ìrš=ãxOz_qÞýžïsËç>ÕÝ=3Oâ½É‰;Ì®äBAÍ^—STºÌ*¿¸Õ¹ÇyÔyÁÉù͉~'oSªE&˜è òö`r¦´ÙÁw¼»›â ]¤‹oð¡B}!.¹Bô²šâ«CÅCÅÚAL•¥¥|ÏâÕá9ÁÐiõZƒÖ¨åµŒ#9pH’Ka 2i$Aã³{1‰GG²¢\%hÑ¡Ë2¾.åµ™š–zYÞË›šP„ð5y“p%æçå£áºm  q¡ "aÎäéµ—/ñl}hV¶ñxSN]ÏäºW‡ÿJ¬"nUÊ´ç~¼—'>®ò¶›g.öô3¯4åUmʬuj‰ïR:XYqïá>B?0 ®\‹ŠÊšêÃ鈦d-R VŠ+%ÉÀÐbè\‚hR+BJ»•˜B`¶Y¬x#ØÛ—µâê¡bK()–%­Pà É«C=W.>Ý8y&oí@8wν©Ï8–”³¾óÈÿòЇ3½…Ï4>94“y¦;¿aÇù¡W) åØŒ¼°Sü”C¦V©°Xì8žÈâBVìÿŽ“SCŧjÊÛÊ>Ù,.©ÆÕŽLøt¹&ßÚ£øp©ßžç_ü<ö ØöD¹íPGÉ*ylÛÖÆñW5‰ƒi0ÞØ†jp®à'ø¹JÀºp‘(‰!Ñ"Y4–Ä DÑ«²ÍV-V©}~¥Ýå³)Îâ÷º,®AÁáô³e ö© áe:é·‡è7„0®ÍL(¶`J”$\ òEí—ƒ_0c)ÆV¢ŒZ ©‘¸‚¸iqË­ŽÀSñAܯšþð¸Æå½5éÉÅO·½W“zâ¶ê%ÛÚC‹ö pYÛnJžX’\1»þ‰Y‡ò™Ïo«Ý¸{hsbÙØéO¾AgFžvײ 5õ­áœ£Âá£4v ]"oT3F«ÖÅã0­*¥]´ÛARØ$Ó²Í&óñ‰/ŸžÆq ê ¯ˆA!2]5*C¸64ÇCÖ˜±¿ýbmúQWöšphZA†c€ìAþo­û霧©,µ/L0—Ž_Þ1ô2‹:¨(ö>çEû¢Æû]<ÎÝ&mÑn7ÿŒÛ+íÖî3G¥W¥ ܧš¿Õ$ÁeÕ.½Ê&Úl&&˜hw(‚&›Ý% ´2#ZD¶àßYY]¤ã–+ 2(pÅë˜-â0¤4ª@´èHf4*¬Y'P‡“dýø‘U‚–D«Ÿñ¢Æ• ÉGë²gÿÙ–-Ïà%úåáÿýýðe¢ÿ³ÐEwo¹õ±Ëý.² 1üåðÐðó$í2ú0µ%ÝÃ7s~ºÆ@W8}Ÿ´Ç¤H§N#¸Lb¢ q9Uc4LÐjOVfj3½¡1‰6_òzï‹ñááʾŸY1Ò‰Q‰N³x{€ €Æ›Ñ!6MX‹<&yXt둌V$>g&£ÅœKrãò‰›T¿á6CçcNïñW?QîGw8ó`^ø–>Úµ£§.»h çí·zç:±pÇçìfmœšR<üãÓ[æOš:ô{ªÃp3âÔÁMá@ $䳕§‘´ŒF¡S¨ƒCR²µ•`Ó¢¤ÖÙÐ1Öh©¾¨.95tŠZºžâúK=³ÅDí;]B˜ž½·º´íýâR9–·“a_b™ƒ+†¶ÑuQ»Àá¦ãWŽ,’~¸@±ß¢ßnÜfÚ–*¤$ûƒyÞ oerepvòœà¢äÅuOB¦ÛוÜåï ìNÚ›n`Ñ„ð\¦ì&‡Åi5e3SURÀŸçgüc”\šÁzÚé2ˆœ+sGš*KTh´ŒYÞ,»Ûj¶-“Rb0Åž£qµ“ ˜iËÎéµ{¨B ©¶*Ôbˆ·0 ]\rtŽé”ª”å²$Ï LÀä·¼·øù°é¸‡åS1äÒcšÃhõOâ/xÇh¤ ÒK~…’dp^üfŒN’Îé%63:²ù“7N²#‹ÈÁÇ-ª- ¼é²¨Éí'µ¢/nþ¨ø¸ µ’Fœ@\’üe{n›¼óá “»~wìï·MaöóIÛu”§Ô¬z¹´ãý?\:#’£¤vnöœ9·”'ãŽaLêÔ{¶½°qnûı•5áŠT›Á••^þØÃçÞŠù'Ê’%v‰QðsQ;Ôý"!SyRC¢¤$ìçÌ…VÐ(uvT×ø%%&)‘u³ {Ùl³Ù/{ì:‡š OÉ›‡¸šÎ¢Jz¨xP;tQ6h‡tt\ÙgÆã¾*wœ„$£{JpÍÜM›ø¹Ãïn*/0¨³Q!ݳ˜ye³l{cŸ°ÀõlAo Oˆ_52 ƒd´lÆa{M8ð% Ju—U´Zq+›© ©Uv; Qfߺb-«©ò¢âÓß!—S ¢OšHœQ<'ÐÍ_¾¼ÁYÑùI=û¾Êüû߸ś?­Ï ¹¬¡ÂºqÍ{çþ'£ùöÍ''¦ÎÚ^·yÏN×'žù]\þyÀ^SÉíWàH…8Uµží“Ö)_cN±§Å³ÒiåY•j‘¸DjSv¨ºÅ©[Ù£Z'ö©”´,SÉ®‚»xvNŠ9w©\)â&s‚‚#¬ŠayA̓ )U¬¨Ôà$‰¼°Sb¹SJFqJd§Ú–°×»­Fû¥E¿pôg“'Ê %hP-Åôä5}fOX͇ô8béÕj¿^›†?ü*< Ào1Ê(y lÐã1A8žD…¤PJ4]£çðð ÆaËUÉúêL¬»ú”•_ŸiM“Vk_‘ëWkO¦äd“¦åË—ãFÐÁä:H.ñ©p»váõ7_{ëwÃgO|ðö‰á_sY—Ø—±•ß¾ÉN¼ü+õix*û9ʵf¯…oï3ÝoÝceEÁ"è«ô úÅâ*v•ø qlå·™¶š·ZöÂ^³¶ ¦›*-gM\šgÖó»a7ÙÃïµðÉ)¼Õd1ãˤV%º$ 5~fÊ9h1Yª6£ |ÇKÑD8¿¬¾hc9d\”â±¶,kIqq1Õ§]Xo2Ù¼Lo±XyB–¡TX×g¦Qh¨'¡(äd/'M(}¹ˈŒ¼ÐÇÓMq^þ$’Ȱ¬÷Là¾ÖÒ'zŸ„’²Rµc³´ü$Íp×oˆ›pY‹‡7 ñüð¢Az6AðZ¥Ç’¹šËÛØ{)Vòƒ÷#ÿ©‰ÇG]†J¡ *䯵ô{ìMò÷â:ü|3̆9Ðsa–¢MïKè Þ…L›R[×P›VÕ¶´»­«cA‹\BÎFgR3R'R/Ò#HO!EN"Cúéo´Y$-’))ŒT‹ÔŒÔyŸÑ0Á»›kã´÷«ó\_x]\ÆâªöÚ¯Ëï¸.N¿c^ݾü¨«êß~]þ×Å;¯‹¯¸.Ž·\×´/ÿßéªöW^—¿êºxÿ§ á» endstream endobj 16 0 obj 6288 endobj 17 0 obj << /Type /FontDescriptor /Ascent 770 /CapHeight 717 /Descent -230 /Flags 32 /FontBBox [-951 -481 1445 1122] /FontName /JCPRXP+Helvetica /ItalicAngle 0 /StemV 0 /AvgWidth -441 /MaxWidth 1500 /XHeight 523 /FontFile2 15 0 R >> endobj 18 0 obj [ 556 0 556 0 500 556 556 0 0 556 222 0 0 222 833 556 556 556 0 333 500 278 556 0 722 0 500 ] endobj 9 0 obj << /Type /Font /Subtype /TrueType /BaseFont /JCPRXP+Helvetica /FontDescriptor 17 0 R /Widths 18 0 R /FirstChar 95 /LastChar 121 /Encoding /MacRomanEncoding >> endobj 19 0 obj (Mac OS X 10.6.7 Quartz PDFContext) endobj 20 0 obj (D:20110615021702Z00'00') endobj 1 0 obj << /Producer 19 0 R /CreationDate 20 0 R /ModDate 20 0 R >> endobj xref 0 21 0000000000 65535 f 0000010921 00000 n 0000001798 00000 n 0000003771 00000 n 0000000022 00000 n 0000001778 00000 n 0000001902 00000 n 0000002871 00000 n 0000003735 00000 n 0000010653 00000 n 0000002011 00000 n 0000002851 00000 n 0000002907 00000 n 0000003715 00000 n 0000003854 00000 n 0000003904 00000 n 0000010282 00000 n 0000010303 00000 n 0000010543 00000 n 0000010827 00000 n 0000010879 00000 n trailer << /Size 21 /Root 14 0 R /Info 1 0 R /ID [ <10f912cb771ee1894a29d5df711d2db9> <10f912cb771ee1894a29d5df711d2db9> ] >> startxref 10996 %%EOF 1 0 obj <> endobj xref 1 1 0000011574 00000 n trailer < <10f912cb771ee1894a29d5df711d2db9>] /Info 1 0 R /Prev 10996 /Root 14 0 R /Size 21>> startxref 11733 %%EOF pymc-2.2+ds/docs/_images/DisasterModel2.png000066400000000000000000003271761204033704200206250ustar00rootroot00000000000000‰PNG  IHDR5ãe>êgiCCPICC ProfilexÕXeX”MÛž{vY`Yº;¥»»‘ABÂ¥–’îPJ )A$LB@,@$L$D),@¾›Çç{Þ÷Çûþûþ|s3÷¹3×Ì}ïœ×uÀšç€  0(<ÔÖX÷ˆ£/ö5@V€ €Íƒ¬kmmþkú9  ýÆqÉý±þ«Ùn zz…‘€¬áæcžaä@ß‚ñrph8ˆrD…ù?6c(ü0>±}þàÂ}|ì®ûËÆÎV¶é€ŠÆÃ#Ôüc¸ž7’ìƒ_ÃäI €¸c-²¯‡'¬°ÍÀÀãûØÆ¢ÇþmŸÃÇþÓÃÃçüç¿À=áP‚Ìp.ñ5²ý7yzÂfô{…þï8Ï>8à xüËàï’ÿi¡È4È,Éìüca÷ðp/$ÿC¿ˆ,Œ€lwì?Zýy/÷І¹@ÿxpL(ÅÇ7œW^]^xMƒÈRxådde÷›ÿߤý}õçc¿Ùþµ_ ægÿª l@…¯}×ÕË C^Ÿ ÿª.€àÀ  9"4òÏx¨ýÞ­t0ól€Qxfå€P:À˜+`+Ìž/„g> ă“ db1˜A¬ ~ dFò!%‘*H}¤Ò é E&"3‘EÈ*d²ù9ŽœA®"·P Å‹’D©£LP‡QdT*•*EÕ¡î úQã¨YÔjM@s¢%ÐjhSô´: Ž.B×¢o£ 'Ð èŸ †#‚QƘ`1~˜8L6æ¦ÓƒÅÌc~`±X6¬Vk…õÀ†cÓ±ç±×°÷°cØì&žŠ‡JŽÊˆÊ‰*ˆ*™ªˆê*U7ÕÕGªmjzj!j5j+jOêê\êêêgÔ ÔÛ8"N§‰³ÃùáNâJpM¸¸7¸ox<ž¯Š·ÁSð'ð%øücü,~‹†FœFŸÆ…&‚&‡æ MÍKšoA˜ Cp"„rõ„>Â4a“–D+EkJëI›D[F{‡vŒö35.+],]ÝMºgt«ôÔôÂôúôô‰ôeôíôSô?ˆ$¢,ÑŠHÌ&^%>!.2`„ <RªúæIH’IŸD&¥jHH ŒFFSF?Æ,ÆFÆaÆ5&&&{¦h¦2¦.¦f$³0³)ss.ó æIæ_,\,º,^,,M,c,¬¬:¬^¬™¬Í¬¬¿ØxÙ ÙüÙòÙZÙÞ²£ØÅÙmØ£Ø+ذ¯r0r¨s929np¼âDpŠsÚrÆqVsqþàâæ2æ æ:ÏÕǵÊÍÌ­ÃíÇ]ÈÝͽÄCâÑâ¡ðòÜãYæeâÕå à-áíç]ããä3á‹à»Ä7Ì·Í/˜?™¿™ÿ­N@EÀ[ P W`MGð `¼`ƒà+!j!!_¡b¡GBÂ"§„[…EXELEbEDÞˆDµECD«DŸ‹aÄTÄüÅ.ˆˆ#ÄÅ}ÅËÄŸI $”$($F ¨:Pu`J’FRW2R²ArVŠYÊB*YªUê³´ ´“t¾ô#é]E™™™×² ²f²É²²_åÄåÈrerÏå òFòIòmòë  ^  /IŠO)ö*þVRV UjRZRTvW.WžRaT±VÉVy¬ŠVÕSMRíTÝRSR W»¡öE]RÝ_ýªú¢†ˆ†—FƼ&¿¦‡æ%Í-^-w­‹Z3Ú|ÚÚUÚs::ž:µ:uÅtýt¯é~Ö“Ñ Õ»­·¡¯¦Ÿ ßc€406È46d0’pdÐ‘Ý‘âØæ„u²wªuúálè|ÎyÁEÑ%Ýeò¨ÈÑè£O\Ù]\»ÜèÜ<Ünº£ÝܯºïxXyTyü8fz¬üØYŸ\L^ñÔñ,ô\òÒô*ðúè­é]à½è£ésÖgÉWÛ·Èw•¢O)¥¬û™øUúmø[ù_ñß ph¤ tlbòê?Î}<úøh°DpzðLˆZȹµPóÐÚ0(ìhX[8#ìÀ EˆF¤EÌFjE–EnFÙGÝŒ&FEňÇdÄ|Œ5н‡Š#ÇõÆóÅŸŒŸMÐM¸”%KìMHJMZ8a|¢î$î¤ÿɧÉ2ÉÉßSR:R¹RO¤Î§§5¤Ó¦‡¦OR?Uyušrz8C>ã|Æn¦gæ@–LVQÖN69{àŒì™’3{9Þ9ùJ¹y˜¼ ¼É|íüºbAlÁüÙƒgïòf~?çvîI‘BQe1®8¢x¦Ä¢¤í¼àù¼ó;¥¾¥ezeÍåœåå÷ç{Ýz_÷é{ÞoÓ?üÀüÁã‡Fûé>º÷Xóqçµ'í*­ƒJƒw†‡n?U|z{XiøÎ3ågm#ª#££ÝcÚc÷Ç Æ>7}>8a91:yxòÅ”ËÔÌ Ï‹/^®¿Š|µýúÄô›Ì·ôo‹¦9§«Þ‰½kžQšéš5˜š;4÷zž<¿ò>ìýÎBꇢ<ëå;—Œ–F–—V‚W¶WÓ??•ý|ë‹Î—¡µ#k ë¡ë{_³¿±}»ò]á{ïëÓ?nodn²mÖm©l=úåðëãvÔv§ä·ØïŽ]óÝ7{{{Á¡ùH¸Dx{ðõ ì'8@GûÇïýËv‹agc{H ZA\@º¢„PËèL 6˜Ê–Ú§„—¦‘"HЪЙӻ#ΑÚg™iXtYCÙÙW8Ÿü¸[x6ù øóæ„d…O‰¼SÏ“X•4”ª–Þ•u‘ëP`WŒVšP‘WÍQ[Õ0Ö¼¨õKÇV÷²Þ–¹a©Ñ¢‰‚iœY·tPÇ2ÖªÅzÞ–xHÓÎópšýE‡›Gî9ö9õ8·»4­u-wËsOö9æJ¶ðTöâ÷&xoøÌúPnø•ú'P­ƒ³ßiM ³ ç ÿÑ™å-ý+f ¶4ޝ’€IO¬L 8¡wR0™1….•>˜NŠpš:•±—¹•õ5{åÌ\Ϋܱ¼ÁüÞ‚ö³M…ÕçÎå§”Ä)M.+)¿}a¤b®rõâÚ¥µªµê/5Ÿ/ª]¹²X÷¾~öê|Ãz#±I¿9±¥õú»›·°·IwxZÅÛÛµ;Lïê<ÖÝ]rï~Ïb/ªÔÏþ€÷¡ø#åÇzOôD¾ f± ]zªýtu¸ñYèˆê(4út¬b<ä¹áÛÄçɾ©â¾/•^î½êyûFþÍêÛÆé°w3˜™±Ùò9ïyÙùí÷ ?x}T[dX\^ê^Î^qXå[]útýsì½5üÚÄzã׊o·¾oüôÞxµ¥ó«p{æ·ünáÞÞ_ü @-G$ò1*mŽa¼ÅޤʦÀÆÐÈÄh…èD饉РF${Æ ¦Tæj–~Öv"‡'…«”{ˆgO…?\ IpYXBÄW´NlEBò@¨äm©-mÙ“rðŠJ9Ê£ª$5kõ-Œ¶¶N¤nÞk¼¡šÑ1ã “ÓA³% ÄAK+yk55[ùC‚v´v?¿²ïq¨9’éätÈYÙ…Ãeïèœk¿[­{º‡ç12'yÃsÔ«Á;ÍÇÕW™BOYô»ç_hÄôéø½àœ§PþÐ¥°–𨵈ߑÝQIÑ:1¨˜Ç±gâ¬ãIñ ʼnÎðɺv¢ïderJJPªSšqºÂ)¾Ó4§72æ2‡²îd_wþjÁBK"´¢²b‡Åã$*ôK.Ie”eäâä+î)N+íªp¨ªªÙªS45󵪵¯ëtê>ÐÐ24|dtÏø¦I•i¦Y¹¹¯Å÷ƒ-‹­(Öª6X›IÛˇÂìtÓž²¯q>¢îˆqq*uör‘rùy´Û5ÝÍÒä>åQ Ÿ<äÏ‹^îÞ<Þï|.úºSx(Ó~üHÃA†Ç¡ãwƒÃCDB^„žSû^añ5òb”eÔvt}Œ},"¶9Î9ß’àœˆNlIr=ÁxbôdQ²WŠJ*mêBZWzá)ÿÓº,Ÿ2ïgf{ŸQÎÁåÌä¶åä‡:«XÈV¸{î}Ñ@qsÉÙ󑥎ejåìðm9Qq»²ìâ™KéU©Õi5§.ŸªM»’PXäªaƒú5ÍFó&æø–’ë·n<½¹pkû±U¸M£Ý¦Ãçnbç¹®«Ý÷õ ÜÒû ï~׃¶‡75>¾ò¤ràü`ÁPöÓôá”gi#ù£ucOÆ×'¸&M§"_T½~µõFðí¡éÜw3³”yÖ÷?>¢—WûÖÏn îóÿGÿØ¿0JÔÂ:€ý là–:„ ai¡kvªáŸÄ•‹þs@¨aí€ Ž7¥&0Îp|Ÿ @-¸ FÁ/²C ä‚.C}Ð@‘^¢ññ ŽçL!ÈRd?ò ¼Q¨jÔ8‰V€#²Rô0‰QÅcê0sXNìl!vŒŠHeCu–j‚šÚº–ú3N—‚Ásãƒð=4Œ4~4÷ „(­íyÚ=:º1z]ú›Dqb-ƒC3I4ÄèÆøé ³8ó K0+ k[;?û$ÇN. ×CîL^NÞO|ýüÕY‚±Bž"n¢®bîâ^b$3¤*¤;d¦d—å>Ë¿Wx®Ø§tG¹Iåªj½ÚUõ6Í~­qí-=:}1#C£,ãë&¯Í°ærC-S¬r­+lZm_ÛQÖ²‚ﻯN ÎÑ.÷] n.îõ«d.Om/ï@ŸÓ¾7(Ÿü•2ßW Î ù ßo7"™¢Â£bYâ\ãëö’|OÌ&{¤¼KsLŸ8혱“µ˜““¡½È¬$¸´¤¼­bøâlÕÏË´WÄêÍ¢;Z¸oTÝ–h­hßëté¾{Ÿ·/óÁÖcßñ§ ϲF矜~éþzkºxVeþ݇ÔÅíþÕÝÏ5k‚ë•ߨ¾WýÔÚø¸U²­·3½ú×ùÁšÊÀ8 ¬*äƒ+ L‚/Öô 7(ª€º¡˜{a„"Q„èF|@Ò#Õ^È|ä=ä''ê ¡_G½G³¡-Ñiè.8ú–ÁÀ¼À a½±uØ*iªª.j µ5õêeœ. ÷¯€Ï¿§Ñ¦¹@ó›àNx@+I[L‡¦‹¤[¡'ÓÏ—bHt¤«ŒÆŒ‹LY̲̯XÒYX?°•±ÛqÐsŒq–pã–æ<¼|ü>f‚²BÂTÂÛ"ßE¿‹íHHjI¹KgÈ´Ë.Ës*X+f) ©UÔΫkBZÂÚF:Þº§õõ' FrÆÞ&L§Ì™-ìYŽ[ÓÚÛ&ê°Û°Wrˆ>Òå„v¶v©<úÕÍ̽Æã7Ù>§–}ä}(ƒþ\!sG†Œ‡)„GìD¹EwDzÆÅ?LHÊ<±™ì—ò6Í:½ï´rFcviKne¾ZÁ§Â¶¢â’äÒr· ³‹ U<5´—÷®|­ÿÐð¢ñqsçõö›÷o?k}Û¾rw«×ÃÛ«ÖäaÌ㲎¡‘á×#/ƆžwN^{qáUþ›SÓI31sQï£?Ä-F/]eþTû…e²^ýuâÛÆ–ŸòÖ›a[ç=ÝÁþ¶Ù­ù› x÷Ë=X_ò  Ö9°qAÐQ˜ûKÐCØËd@¨!Ȉ3ˆ6Ä’„Ô…•›jä$Š¥ïøk¨4Ú]‚ž„L)f+€õÃÞÄîR™Q•P-ŠÉêy˜óBÜÞ ßBC¢‰¡™#Xºheh/ÓñЕÓsÓ×ÀºE?ƒ óíÀ„eºËÎ"òÆz‹-Ý”ƒ•c•³Ÿë"w™×‚O•_\€OGˆOXLDIÔTÌMÎÈÊÎIs}.3ñcêÆËÀ×bo>L_žñžŸ__èü˜¶d°¼¾zúÓ×/¦kÙë­_ß~[ý¾õcþç“‚MÍ[©[[¿‚~ÍoÙ¾·Ã¸CÙéþÍø›ò»{—j×z·d÷ÝžÈÞñ½Ö}þüååöoÑèÁòãôÞÞ7a°üÎßÛÛ®ÚÛû] oè ø£©ïc`­¹¼cý§ô?¹âX…»Ç` pHYs.#.#x¥?v IDATxì `EÖÇŸ Ð ‡x€rÈ!"äŠ JPQƒ+ÁUâ_tE7ººè®¯EV *ñ•  ·”€€Ô ”€Dç뇞ô5“žd®žù—ÝUÝ]]õ«JU׫W¯Žð(NèH€H€H€H€H€H€H€H€H€HÀ%ŽtI:™L         P P¨ÉŠ@$@$@$@$@$@$@$@$@$à*jºª¸˜X          5YH€H€H€H€H€H€H€H€H€\E€BMWK$@$@$@$@$@$@$@$@$@¡&ë €«P¨éªâbbI€H€H€H€H€H€H€H€H€(Ôd         p 5]U\L, …š¬$@$@$@$@$@$@$@$@$@®"@¡¦«Š‹‰%         P“u€H€H€H€H€H€H€H€H€HÀU(ÔtUq1±$@$@$@$@$@$@$@$@$@j² ¸Š…š®*.&–H€H€H€H€H€H€H€H€H€BMÖ         W PÓUÅÅÄ’ P¨É:@$@$@$@$@$@$@$@$@$à*jºª¸˜X          5YH€H€H€H€H€H€H€H€H€\E€BMWK$@$@$@$@$@$@$@$@$@¡&ë €«P¨éªâbbI€H€H€H€H€H€H€H€H€(Ôd         p 5]U\L, …š¬$@$@$@$@$@$@$@$@$@®"@¡¦«Š‹‰%         P“u€H€H€H€H€H€H€H€H€HÀU(ÔtUq1±$@$@$@$@$@$@$@$@$@j² ¸Š…š®*.&–H€H€H€H€H€H€H€H€H€BMÖ         W PÓUÅÅÄ’ P¨É:@$@$@$@$@$@$@$@$@$à*jºª¸˜X          5YH€H€H€H€H€H€H€H€H€\E€BMWK$@$@$@$@$@$@$@$@$@¡&ë €«P¨éªâbbI€H€H€H€H€H€H€H€H€(Ôd         p 5]U\L, …š¬$@$@$@$@$@$@$@$@$@®"@¡¦«Š‹‰%         P“u€H€H€H€H€H€H€H€H€HÀUê¸*µL, Ä?þøC:äówÄGHݺu}þŽ<’ó1R˜  ˆyG***¼}žþ\ë ѯéû½:uêüGuTÌsbI€H€ÜC@ë¿´ãï¿ÿîíç0ÖÓ÷iG}´ÁÏ>Í=åÌ”F? 5£¿Œ˜Âøõ×_å—_~1ü~þùgƒ_»®…—••‰¾CÓ:9ó¼Ú8óàOßijçè<6l(ÇwœúkÔ¨‘÷Ü_Ø1ÇS›¤ñY  —€ý—Ö§i美¸×ðÓ÷yvÂJ„áW[‡É>³ Sëïôáõë×Wû:­ÿóuD?¨¿vì±Ç ÞAG$@$; \D_…±š¯ú4ý5øÑ·éû7ŒåÌþÚP2åÌBOøÑŸaüf÷CfÎq\mJ…Ϻ•ÀŠp¥vÒ·æœéŽ;”~øAýíܹSðƒ_;ßµk—w@‡Î `<: 5¡'Ž'œp‚œ|òÉÒ¼ysõ§??餓. @ô@÷ã?ª?­ßÃa8–””xû; ööïß=‰PJ0ÀLLLôö,¢¿C?‡£ùüøã§4BeÅ×’ Ä7ÑŸÛþöìÙãRBI%žÄÇ¡ÿÒ„žèÃZ´háýa<§ù›6m߉¹jÆLQÆoFбi‚I½Ò|ŽŽ.¸ Õ‚ÑNà©~â, @Í @©MÈiJ½°R;/--­ùKø¤#èÓN<ñD[§^Šþ¥t$@$@Õ€Æä÷߯öu¾„–˜˜‹'AeõÔjvGBB‚:†Ó„œ8ê…žZ8XjÆ—O……šácÍ7Õ‚–®mß¾]¶lÙ¢þ¶nÝê=ß±cGÜjUÖiXÅà¯uëÖÒ¾}{ï¯]»vê9ÂiW&¬ÅÁ—‘ D1+ÑÇmÛ¶MýéÏ99Åç#ièßZ¶l)mÛ¶Uèû´s¹TÐ8“ Ä,¬&@ßöõ×_ËæÍ› GösÑUìèÃZµj%§Ÿ~ºtèÐÁp„Гf[¢«¼â55jÆkÉGa¾±Ü»¨¨È"´„ áÁ°ÉU“l£±†­-ý’lí\Sï×ü8Ö«WÏ`Z³ùÈé4Ûá ÔàÀïòB,§×~˜Õε#–fDÊK›6m¼ÂNMð‰:Q, ¤# X!€¾îÛo¿5,õ‚ËH/Ç$lMêíM¢oóå÷Õç!s¿ç/ìÏ?ÿ4l&¤õyèûµsýÑ.aèÏ ÑŠþ­ºão¿ýqmhujBN½Àç\+õÌ ÄhR~÷Ýw¡%„˜PHA›n‡>I³C‰~M;׎ú0h1êû0³ÍK\óa ú,³N­³ 7‡¡?3ÛúÔûµ1úºHh®6hÐ@tš…ðƒ% „‹…šá"Í÷x  ƒ ò‹/¾P_}õ•ê‡&&úP;4Àæ¥ÑPµÇÀÂ,¤„¹X¬iF´1Ô:Hí˵¥üúcyyy¨‹JýX8í´ÓTgçÎ¥[·nê@Î †?_@$P ÐDÙ°aƒ¬]»VýmÚ´Idb’.}’ŽAú;ýrhœã׸qcuÐaV¢Œ‡ï 턟°³m·ÄááŒcPˆþÎ.]ºH×®]%))Ið‹—2b>I€¢ŸÀîÝ»¥  @ý}ùå—ªæ%Æz¡+`#ýrií\Óiã:Mh«ý›Ö—éžÇÁ LÖè—ñÃÿÓO?…¼ƒy7Ï8ã éÑ£‡úC?Æ¥ìÑÿ÷ìÆR¨éÆRsQš1¨ƒÐR`∴#‚íôÂJ;¡%::„sæ(8äÑqšm™jBOÍæŽÐ ¶Ãfgu–Wȉó3Ï<“vË‚ šñ‘ 8"áú¶ÂÂBƒ3T+ š4ibT¢Ó 0µA£ ð&Ç0 {nèï섞Z8®…j@:„›rj?ôàÓ‘ @( `bG`jG¬>¦ƒâ6*õeãQ G_H8|› 2 ;õ~œ{%šPRÑ„œ8¢/£ 3ð2äFjyÐW ÐtÀìœ^€ -•`ê°Û¨~y²vM|äÓEÌÂ6œfG,µÄ1˜›Y CÄ NÓæÄƒ=˜ # `€†%4.5íKí!W0„SÐR×–%kÚz8Â>#Á¤º¸0ù÷Í7ߨ} úA½™ ƒ©ñ‰¥Žø&Ò„œÚƒ: ¨ P 0!¸Dûd·tý–wÓE–Æöè·ÌvOáß·o_P‡r†§^Ð ?LÛБ€Sj:%Åû 0°ûüóÏ%??_=B‰÷`Øó€ )|˜c¹•&´Ôü\ŠÁõ5õBNMð‰tïÞ½µÎ>˜Pw ÉÙ³gO0`€*ô„]7: ðGyëÖ­“¥K—ÊêÕ«UAæÆUûXþžsz Ë¿5¡¥Þ–"°²€&6œ’tç}XÉ¢xê…ž0QÛjÁpø¦Òœ}úô‘¾}ûª½Áˆ›q Ä(¡`l·hÑ"ùì³ÏTmLØÄ¬­Ã 9;Á%¾Ï¹QZméFîy¬J€pÓ,ðD¿V[…&:5NôYÉÉÉ4»¹¢vÅ›)ÔtE1E>‘XBµjÕ*ùôÓOUAæÊ•+¥¶›`ЦiÕÁÞ†&ÄÄ@ްû¡&ä„ ‚shc¹Dm471°;ï¼óT!'„œ ¬ Q>K±AfQ0ƒ¿+VÔZ‚I)!TÂ+ ì4A&—ÍÅF½ E. Á a‚¦Ù‰U/šiƒ`¬p€0ŠýúõSø£=%É8I z `âßÖbâ·dÉ’Z-7†€Jиƒ¦¶[6l+ÒÅ4!Ø„°+[PÇ`¦þÚ(?aSY7µW!ÄOr’S 5PŠÃ{ R¾|ùrU€ A&´Tjª5€Mv °Ô˜Ú±Y³fqH–Y®-5ÑAj?:¡áRÓŽiôêÕË+ä<÷Üs%V ‰×–=Ÿ'X"Cù^.[¶L=¢M©vlýb §iÅAˆ ?M`ÄR­‰|^¾ÿþ{ƒù;1EMì˜ìÓ„œgŸ}6'ûj “Ï‘@”Àw2L¦hBL¬¶Ãf25q`b<§_2ܱcǘßXµ&¬øL%È4§f‹‚ΚšaÁ$±&à<ÿüó…Âóø®ijÆwù{s™ îÐÁAˆ‰F§&ÈÐx³³kÈå^Ô< Ø|Á‡š^Љ ªj²Ã0–<à#MÓä„6 7— A¡1J3h hZ˜dB ®&m­[·ö /5-Lh¿QÛ­&DùLm `5Íúõë½ÂN:ñƒMÏš8|ËA° !'ú@ü¨Y\’|†"GBLhyCˆ¹páBu|WMoLÌ™˜ÐÂ„Ò  Ô†6"2 :¿þúë :;uêärÂÜöá ‹jÆOYr %41ß{ï=Y°`ú1¨¦oÐBð¿è𰄉† ¨é‰hC°‰ÎšÆXVƒ»@ë9>Ú ´2dˆ >\Î9ç~ÈE¨LùZ„6b™?¾|ðÁê„LZÔÄÁî„;èç }‰_Æ kŸ!°رc‡WÐ s øÕDЉï=|ß 4H† ¦šnÁ*: è"!ú¼9sæH^^žº‰þÖaËšoXÅ„I~hÄQ€]åË©AÆ*lBˆÃ„…~/5Ü¡Ç{CM@ë·ôfÕ8†ýÍ#F¨NÈ1¸al¨K-üñS¨~æa}#>V¡‰ßâÅ‹²‹‰åGÐJƒ?Ø[¢m°°_bX¶ŽÁ¶v} dÉ:4U0°ƒ€?­q1z0À`“ubâ¸wï^Óþ½0-;ºÚ2[h¦Ô¯_ßÿC¼J1DÍz³ X¶èdÌA#Zœ˜à€1†*³•0¾ƒ?|Çò7‹Õz!æI'•yd¢HÀŽlp¢ŸÒ 9± …,ŒÙ ÁyÑEñ›Ï² Ã(Ôta¡ùK2f3°Ô3vdâÞ©ƒÝK î4!&w\^ä”ï‹û÷ïW5½4Û²«V­Ø*sê á…%êè,qNG$\èãÖ¬Y£ 1¡‘‰þ.#ó-[¶ô 0!ÈÄ2;.« n16wÀªhN5Û˜8b×r§›› b†F„…šÁ^ýK!$Ø /¼ Úɬn&BKlðƒŽ™ø££#ˆ L> £Äl >X«›q‡@&%%Eí(1ÛÎåé‘)7¾5|¾ùæU‰åuXjW«[·® 4HµËmLl|@G$½ðÝŠþœ¹¹¹Žìšá[vàÀrýõ׫6Íêׯ½dÊH †0y7sæLU˜édCWLâÁlÆxݺu«á[ù €/hB°‰ÉuŒÝª›`Ç7)ìnÞrË-ªN_ñ2<|(Ô kGo‚;—^zI²³³*ÒÕ9`‡¾«¯¾Z°1  @tرc‡j2f#œl4„YxÌBƒó”SN‰®Ì05$P ØðgÖ¬YêªìNY°FÛaKTa' ›þБ ¸“„7o¾ù¦j'׉@Ø„ Nh¤Ñ‘€Û ¬]»VdB YÝîÌèï0¶Ã’Wn°åö’gúÝDNØàÄ ¢¼¼<™îŒ3ÎP…›°¿Ù¨Q#·òZ P¨B¸DýÉ'ŸHVV–:£]ÝìA‰fïèH€ÜA`ݺuêæ^¯¿þº|ûí·~%E˜•Ÿ0a‚ôïßßï½¼HÑL૯¾’çž{NÝø ºÙohj 0@d^qÅB³ Ñ\²L ÔŒÀš5k¼N'šÚ0©ô׿þU]žÎ PjÆœOE†&ï ­üïÿ[5µâ/ÐþÂJG.¹äšUñ‹×H  `†I¬*Ú°aƒß7sÌ1ªRÊwÜÁÕD~I…æ"…š¡áê(VÌàå©§ž úü9lîƒkØq8÷ÜsýÝÊk$@QN¹Ø=æ%Þ~ûm©ngg,7?~¼ºÁ ÁGyá2y*C‡©Ëx ÌD]¯ÎaÓ,h¤\{íµ´ST,^'"°råJU#`þüóÏ~s†oáÔÔT¹õÖ[¥K—.~ïåEˆ$ƒªyO<ñ„lܸÑoRÚµk'ãÆSµ’9‘ç/’@Ä`S<Ø¿E_åÏþ&”R°4ýî»ï¦–uK‹BÍ0ÂÖ^õý÷ßËÓO?­ 4ªÛ1K ÈÄìðJG$[0ˆËÉÉQÛƒ/¿üÒoæ°Ó%ì·`@wÒI'ù½—I vîÜ©~ôýïÿlrçÏað†f”  @ü8pà€j{s†²1æÇ,°-ïÏaƒ°Ûn»MFŽ)0UAGÑ@ã:Læ=óÌ3‚³|9ÔYì€o:ÚR÷E‰á$}0nƒæ&œÕMX`¥„›ø[ç~ ¡-K 5CË×;lýë_ÿRgî~ÿýwÃ5½§qãÆê.fr&ZO†ç$Û Tá&„œþ–é&$$¨K&Nœ(­ZµŠm(Ì+`Y–סîúëß0ƒåu°‹Ë¹k¹+Š—‰$°ÀäÈ«¯¾ªÚ—ÇÆ{þ\Ë–-ËýðÍ MN:ˆ3¡•‰Õwþ¾ßš7o.iiij}å^‘()¾“‚G`ñâŪp«îümêŒÕH<ð€jžÂÍàñ×ÇD¡¦žFˆÎaGï‘GQ7Hð7ó ›AûÛßT[* 4Qj- @´À16 ƒF·¿ 0Óåºrúé§G{¶˜¾$€¥å?þ¸Ì›7ÏïÆ?Ð,¾ùæ›ÕÁ7ÀŠÁŠÀ,‘@ˆ,Z´HÕ|ÃŽ´þP€ÝM|Gs%Cˆ ƒÑZìÝ»×+Ì,++³\× Ը뮻T3B°IG$;¾ûî;uo¬Rò×tíÚU|ðAIII¡æf‹ŸBÍ ÕG÷ùçŸKff¦¼ÿþû>{ÖC[öò°ü€ŽH€4šyl"†åx¾6Wý–ûï¿_ðáLG¡$€z Ô)SdÕªU~_…M`.»—s ç/’ ø!íÍéÓ§ 8÷å`w­Lš4I°±& „‚– B3ßgþ„ƒV—ŸrŒŠR`œ$]Р‚ƶ¿ aÏ:ë,¯p3ºràÞÔP¨‚²Û´i“üýïW7ñ}ýúõåÆoTw6†h: ðGv[ž|òIuC_Ë{!ܼæškÔÉ”ÓN;Í_t¼F5"0wî\u ?û¯èß`'óöÛo—3Ï<³FïáC$@$`GÚš˜T™:uª,[¶Ìî5 + ÜÄd_ëÖ­}ÞÇ $l‚[zÿøÇ?dÏž=¶ÂÌ öB€`fÄl1bšú©·ÞzK]©ëo3è¾}ûÊþóéÕ«WLóGæ(Ô "e¨C¥øå—_öià¼aÆªÖ ìÿœp A|;£"ˆÅÅÅj•ß~ûÍ6ËЈÃR_ æ¸ Ï$ðÁ¨ÂL¬@ðå°ñ´2!ÌĦVt$@$J+V¬PÍ_äææÊŸþiû*ô‡°á eƒSO=Õö’€¦CP¹yófÛÛ!ÌÄÄ2¾½:tè`{I€â‡V6Íž=[U6Y¿~½mƱjwÔ¨Qòè£rΖ³@ 5qò{ì©<üðÃòì³ÏÊÁƒmïÅo„ ê`ï¸ã޳½‡$@$à”4°ì ;l¢ ²s°Í›žž.ÿ÷ÿ'‰‰‰v·0ŒüX¸p¡Üwß}²råJŸ÷A+øÎ;ïT´í/ „ˆ„LX ¥ì¢nç°)6šùÄ6'Ÿ|²j£š“}¶xb6ðûï¿W7ºóU/ðmÞSO=5f0c$@‘'0wî\U¸¹cÇKb © hmrµ”…šV$U!˜µ›>}ºZy°‡Ù5iÒD­\·Ür µWÌpè'ˆX†ŽÍ„°´‚,³C[£Ô×]wùý1JàwÞQíBCƒÉì µ”šš*<òˆœrÊ)æËô“ €« Ì›7Oý¶ß¸q£m>† ¦Nöqå•-ž˜ |íµ×ä¶Ûn,5»ÓN;M]Ñ2tèPó%úI€H $`úá‡VWÿÚ™ëׯŸ¼òÊ+Ò¦M›¼ß­‘RSÓGÉÁÈø_þò–“ƒM1 Ž?þx»Ë # ¨#ðÃ?¨ïï¾û®mÚ°‹ç /¼ 5²½Î@÷ÀÀ öÂ^ýuÛÌ`i vz…9: ˆU°#ŒïøxÀv§tì’ŽUX×_}¬"ˆë|ýöÛoróÍ7Ûö…˜Ø›0a‚:±‡ t$@$nëׯW•M¾øâ Ë«Ñ?ÁV4äQt•(Ô´© .TµT 0;h­ a—ŽH€ÜH`öìÙrûí· 6Q0;h¦@àÅ=ÍdÜï_¼x±ú“*f{aÿøÇ?öÂŽ:ê(óeúI€H & |ûí·ªÖ:–ýÙ9ØËÇDV4ÐŘãÁ’ò 6X2í'Ø^=ï¼ó,×@$@á$MÍþóŸêqf‡±ÜO[ì6o°ÜÌ€ˆÀ*”Š@süøñ²dÉ¡@3âÅÄ 8$e…Ï?ÿ\:wîlx¦¦  òè£ÂãÅךš°wï½÷ZìÆÁ¾lëtïÞ=^êóI$@*åË—«Ë•üñG,·ÃN±·Ýv›!œžè"ØJ…8³ëر£¼óÎ;rÆg˜/ÑO$@$`Cà¹çžS—¤cÀ¨w˜ Â2u 0颓ÀÖ­[ÕÉ=õŠ+X…DzÓSá9 €›ìß¿_þò—¿Ø~ï7Nž}öÙ¸2•r”b|ôA7`°ÒŠ ~øaKtýû÷—O>ùDÚµkg¹Æ ˆu§žzª\}õÕªö–¥k›}ðÁ»b矾Ìc(--Up~ø¡%U°=oÞfÇP†¢a‡Òk³Cø›o¾) 64_¢ŸH€â†Ú@hûmß¾]Ö­[gÈ÷âÅ‹¥¬¬L`“Nºè €v77o ÛÇ{L¦N*°·CG$@$슞šš*(bó5½Ãrt;Ù'ê©DöM,9/))1$«-Z$III†pzH€HÀ0ÃFÖXeŒÉȹ4·qãFÙ°aƒÄ‹`3®–Ÿ:tHý(ÁîPz‡ l«Ð‘ TÀN¯ÿûß«ŸaÇôÿýïq3hEÀ 2D¾ÿþ{Cª5j¤j%''Âé! œÀü!wÞy§<õÔS–‡G-3fÌhÏÐEŽ€/f¿~ýä½÷Þô‹t$@$kòòò$%%E~ûí7CÖ°R › ™÷L0Üž¸jâC䪫®RxúrÃÇÇ å##t$@$@VÏ?ÿ¼Üzë­†@Ü[.°KEM+³p…@“æ°ô\ï`F³¶gžy¦>˜ç$@$@µ$ðŸÿüGî¹ç‹M~l0{ÆlÖp ß´i“ºäܬ¡ ­MìhSt$@$«–-[¦šÖÀŠ:½Ã2õ7Þx#¦Qâc‘½Rª0˜ Û7z#ߨ M=ž“ €‘ÚOt†æåË/¿ü²À>1]d`‡e'f&–Ö­X±‚ÍÈ ßJ$ãÐïAóÅÜ'Bpvíµ× )èÂK‚LØÉ4 4±Šö¤)Ð oyðm$@á'зo_uo˜Æ^>kÖ,uÃ;C`ŒyâB¨9iÒ$u‡B}Ù%&&ÊG}DCÑz(<' 0ˇ¥[ †;ž|òIyä‘G aô„žÀ7ß|£ÚÐ4à°1Â’%K¸!Pè‹€o ˆc£Flʆñ„Þaðó,Ø\.<ÊËËåÒK/Uí€ëßxÉ%—Hnn®å»EÏI€H –`s»… ŠY° ³)YYY±”UC^b~ù9–ˆÜ}÷݆LcPŽeyX²GG$@$àœÀû￯†b½›>}ºÜ|óÍú ž‡ˆ@qq±`6vÇŽ†7œwÞyjßÖ AC8=$@$@¡!€]g¡ h¶cvË-·Èÿûßм”±z `c ØŒ{÷Ýw½a8ÁŽôŸ|ò‰`U Ä,EÇj®x³ŽÐ±r¶7cÍÅ´P3¨XŠ ß vnP˜˜½£# œ–¢c‰¹mÅ®¢¶Ñ…Ž4R ¼üüóÏ /÷ ȱÇk§‡H€H ´>ýôSu¼±ÿ~˰’!==ÝFOp Lžø@ºÇqÌ`~á…&X[´h¡Ú”Æfyt$@$ï°’{#è]çÎå³Ï>‹)Mö˜´© M–Ë/¿Ü ÐDAb&M}•æ9 ÔŒ–šOœ8Ñðð?ü °½i^šn¸‰ž€íRhÉê]Û¶m&(ÐÔSá9 „—vØ~å•Wäˆ#Žð¾ÁöææÍ›½a< Ø“6¯ÁÆMXGfp3 ÷€Êm·ÝfÈÈúõëcnÁQ*ÎËðÜ~ûíêNwú¬ÀÞÊÓO?­â9 @- 4HV­Z%Û¶móÆòÝwß©š*О  Ø;v¬!ÂF©ÆÀ[¶li§‡H€H üÎ<óLv&L±höÌ Qxã7J:u´`kIÊ+k×®5Ä‚0FŒa£‡H€âlk~üñÇ›üšÃʺN: ú­Xp1·ü?ó`ºK—.êRØ # ŸþY°ÓÞÖ­[½‘bPÕ½zõò†ñ¤æÀýØ÷ßïƒclx‡:  è!ššªš»Ò§¶5ac“®öf̘a™ä=z´…yíßÄH€H 6@é¤{÷î²{÷no†š5k&›6mŠ ûÃ1%Ôüõ×_Õ_QQ‘·° ÈüòË/¥]»vÞ0ž @aa¡*Øüý÷ß½‘Âõ_|!õêÕó†ñ¤fÆŒ#3gÎ4<üïÿ[îºë.C=$@$@‘'pðàA­cŒ?4‡eéyyy’œœ¬ñX{ö쑎;æmÚ´‘uëÖ •Wj” Ä ¹sçZv>¿é¦›û$¸ÝÅ”Pöž{î9C™<óÌ3;†è‰rûdÝ’Õ²ë–LEhrL{9¯W[©£¹â¸W¾–+ßze>Ešô‘Ôá]\–h+õ"ZxÖ>°÷xß}÷"ÊÈÈ„ÓÕœÀÛo¿-0Ÿ¢wXöe$zÛmúë<5²cM¾lüYäh-ku›IŸþ]$AóóH$U6lØ =zô0lS!¾5lØ0ªÒê¦Ä`ÿK/½dH2úÃØXµÀ¶ÞP°ô €yÃQŒ%–,Y"}ûö ú»ÂaÌ5ñ‘pÖYgvÀãÀ/œU)DïÚ·J6ì-UÖ‰”÷$eIéÚñÒ8D¯ I´±’À©A¤äYh¡}"ôéÓGÝMO{SݺuÕe §všÄcöïß/:t0ØÀiÒ¤‰@3;¼ÒÅ }òT׆2¡PŸßdYY¶Pz%êÃxN$M Xñ·¿ýͤ»ï¾[üqC=ÎÀ†÷¹çž+ÇûlM›…œÞ‹®;a[ïº"c‚IÀevíÚ%XM­wÍuíÚU]]çfe‰˜ÙýAþù§V6êtrn.ofâùDŠX†îmê¹O»Ñ.M]˜h©‹v<ÝX/¢…gÒ;š/¿ü²`÷QÍaôûï¿_óò ÿüç?&ÿïÿKf€cáö†m̹h(uÍAô“ Dl\:xð`Cš°iéöíÛ aô8#ðÀš°‡~2–ÛúX*Mæ…¢€]»‰M×°2ÌÍ.&„šP™7ož¡`kŒ;ÂÄŽ§ÌOV¬‘1Š5„ÙÞ߈²ÏÏ#¼#üÕ‹pf1Žë ì\Ýzë­Ú¯¿þºÁ®˜á"=> üøãòØc®8P®ºê*C=$@$@ÑKBL¬ZÐìmBƒ.0+W®”?üÐðLÞ4nìªu[†ô»ÎÇß·®++&˜ü¸îºë$))ÉpGff¦aÒÈpÑž˜jÞ{ï½Ô'žx¢ÜsÏ=†0zbˆ@ ¦ˆÊJE eŸYñA Ðzá#šÇQüûßÿ.5òbÄ21„ÑFàÁl~§9hÂN:UóòH$@$à0!M½{óÍ7eõêÕú žWCZšzÅ•[n¹EÄóHˆ£ïÛHàå;I  øõðâ†)ÇÙ³gÂÜäq½P³  @–.]j`þüCŽ=öXC=n%PתeYƒÔ]› ¹µ¬Â™îàÔ‹p¦8^ê`Ó¦M-Z(|ðlÙ²%œ¸]ý®Ý»w«Kùõ™¸ù曥K—.ú ž“ ¸€ÀäÉ“åøã7¤4Ö–M2dÏW_}%}ô‘!V9ëÕ«g£'2âåû62tùV K/½TµQ¬ý‰'žÐ{]uîz¡&ì‹é]óæÍå†nÐñÜͺÈìòr)++—råX^V&åÜê®M‚ÜÌ?ZÓÎz­%£¦ Z)ú%aÐÖ4·ÕQ'núôé†s±t‘¶I#\(|= ÔV/À,–ÞÁ~Yqq±>ˆç>¼øâ‹†+'Ÿ|²`ù$ @Í Lš4Éð0Ì|lذÁæ«…š?ÿü³À^›Þa)‚ÞvþÏÝI NB‚$&&H‚rLHLTŽœtgI7Õ¬ÁåÌØ4h`™\š1c†:1Ì÷Äb\òÜsϲvõÕW &ìèH€H€ÜI`ܸq‚¾Qshë9Ù§Ñð}üý÷ßåÕW_5Üpã7J:  ÐC$@¸ä’Kä”SN1QZ·vïáªÇ©Ã‡siÉcMúQ/±Ø:ùÛßþfÐÄ/))‘åË— Úy:{sçÎ5\Àw6 ¢óO $m@ˆ¾o-mFûwÿÔBy5ºû§p–AHê¦Ã¢³ä“ý“@óûÑÀTÜ®]»dÅŠÒ¿‡T£ã¶P|š‡%gÐÐ\¼x±á]jÆ“;°s¼ñâ32vòtÿÙNN•)×]+W¤\ mÛùªÉKkK¥iýJñ_yù99y¢LÞÖܲK^»÷Y]^_?ª,1Ý#MúÞ.÷¬~S‹ ž’G>Ü^õÞ="Ý;Y†´Ò„H»dÁó¯Ëf©§üwP$±—üet/¯ÐÍÇž 2Óœâܱ2áÞÍÒá°ËY¿«Ü“y½4·GQùô²àågdÒ-J¡9>ƒ?Y2§M”ëF‘V5ûhó {7Éœÿ=/Mšêó}IÉirkú rÕð^ÕڭصF^|}©(VÔÕÔT°õùéÕ¼’ë®M %ûɧdÒô\Cnª<É’‘ýw¹#u 4óÇ©êëÙ]²ä×eú dæ"ëe}HJz–d¤•^Ž!V_/¼ñW씓—µ‡ë(êg›‹&Êø!‡ëvÅ^YõÁ[òÒÔçdú"ûÒNRþ†n¼5M®Ñß–GHê 7î=A›¬j~øá‡êì—Ù—éü!óæÍ3\9r¤ÁOž»¶ÉGó^“—^™,¹¾ÚÃýÛ(¥kå£s¬bßùäí7%ç•IÕ·Wi™Šy…+ep¯ŽÞ~È÷;ȧ2åÍíåj?‡ö§~ÇTÉ׿rB¬b—Ì}îI™`ÜÙ~ÊÊR™Ø«±ïhMW6Í~Lž\öƒ·/Uûº&Jÿtÿp ¬k: Ëwo\•mæ½J›ÙÊôÖ0ymÚðúmFÉäñ+ù+ Μ&,¶ÕD©#Ù'Jê.–IÈ]›–ÈëÏO— S-_•™KJ‘)“ÆKêååp÷p¦ÃUCW‡•,Û”A°ûÑ€ÁºðŽ;JçÎeýúõÞÔChG¡¦‡åļA6· ³'Š6 Tß·ájíI1Ô¦mtKÿÎ2EÝô–¢M°òÒ©öËÏÏ:ë,ùâ‹/¼÷¢Ýu›PRYW:å#À£÷þ;šÅƦ+óx¢K=ó³Ò¼y×s¨î|Êü­¶¯ËÏL¶Æ—’í)³½[X2ß“¤+ïû“¦xJt·ÙŸ–{rR«ÊP{6{cyÕíe+=Éæø“²<¥Uwx ¦¥XÓn~ÆàOö¬ô“±â•9Öwž·¦iÏœUà9¤K—á´¼À“jŽ#yš9Ý:J€éOó¬Ô0¼¨ÒSVe‰sJÞVâÉɰ)ksÚ¼þϬÂêKÒœ„¢üi5b˜’9ËSâ¢î-ê…÷î²OŠ7?•e—œU ^.)ȱ\Óê¡ý1Õ“WlM`°ë 7í.?Q6AðqĆºøé§ŸºÒ¦yògeÔð} 'ïàLŸƒÊó²Bkyf¯,ðL³ Œ«Ò^ÅÇ–aSg¬o­ )È®™À½êýižüb Wý8;žŠX_/¼OÛÜ›šSèÙê³îZó_•6\KóèåîxO0ë 7Ý1rröÙgêøƒ>#9 ~6xà«îÝ»ÿ%ÑcùVOf­ú¸ê'}¼y2“ªû{¯þzjvå$‰7^Ã‰Í 55ÇSR’ïW¨PÓSj_Ú,û‰LCužâùv}’ò-`Û¸ê å©M.i9ž+³ /ÆvÚG¹¥ÎRúèÒö…éž~ú]‚pÕã°Ôa%g6eì~ÔÀ/†=kÖ¬±ÔÛï¾û.†s\ó¬=ùä“VgœqFÍ#sÅ“6ý…iË’·Aý¾ W»h›¶1ªû§p–Aˆë¦·TmÊ€ý“—Ž£“eË–ÚZÅv±ç—_~qôl´ÜäZ¡&„˜úX ãÁÙjTꄚIÉÉž$ƒ´i…¦Š­€Q<ÙæûLóì4<§gJ¾‘²Bë€$)#Ïø›†JL«‚¬@41б×Ô\™¨pÔ~Ðd›os>”‘¾~Û'OÉ7²Òù섚vq–î`p\è@ ™””d¯Ý««ÇÐ0Ê-ò#Ø4óij¦záÅaw¯á]öåèMRÆ|ƒð:XuЛæ:IO7N\~ùå1”»àfeĈ†~ H_Þ IDAT“wqå”íŒ ´˜x¨¦ëR±æe$x›ÿæÑŸ¦8ìS³7šúToÁÙ R“S=)Õä3`¡¦¢·h·òAœ¬¸ð¦µÜ3+ͦ=LÏ5´wÞÛÃu‚6Ü\ÖNýÉ™¾û]/Ž0ÖãðÔa%g!(s?êåã'ÊÆ@ž† Úeƒ¸ÏuͲwà 78ÁÛΦ¿¨F¨ê6 hß·alÃZGBÐ6:íÌ÷UÛ?…¹ B]7½å‚2ˆ·þéàÁƒÅ4˜¡½Uì={»áĵBMeC ø·ß~Û ¼k•Æò9†<{³ÔLO^a‘§\§ApèP™§xk¡gÖZsÊÒ-£"¥ý`&5»ÐOš‹ýj¹øº!R»Ù?‹@Ю¡2 ¯J·xòòò<ùù+=ùó³lf©žY¸¦,íÌÏÏóä­Ü¨.[Óg¬4ß÷ðä´,OþÆ"²yŒúØÌ÷¤ûÔ&Ê4j›â)»|XkIžŒi³<[‹=¥eežÒ’bOáÊùž)i¾Þ¾5N5‘/Ô›Ò²rÏ¡Cåž²’"ÏÊÜi¶K+ëZ’g¾ŸµöÚ¾•äÔÌl%_%†:Z^Z\Íû2=ÅúBÒŸÛñ4Õ ïív÷Ú°OŸ’íÉ/(ô)K¦‹‹‹<y³ü”±Q9uЛÞ;y饗 íV‡b,‡ÁËN›6m ¬^~ùåàEõ1Ù æªlÓæ{6—zÊËË=åe¥jÿ–;-Ó¦½?üŒÒÇù›V+ßhTÓúÔÌœ|O‰¾CUØ•—•x ó•6Á—¶{4íœ)_þ„™I•BT¤Ã($5Å¡¶_Ööß~åD²ó%è>–žgUgïÄ.ÛÁ sÔ†§x¦ääy6{J”ö»0?ד‘â«ï¬ªWZߦö½·*æ¶z ”g3S}=›ê)ô3ߦ¬Ó¶1Põ¾`ÖãðÕa¥0•A’§6ýh0«L´Ç¥Ø*3´õÿüç?£=ÉI_ïÞ½ œžx≈¤#|/µk?¬m½–žp´Áù¾µËWhÚEMØŽŽÚÆhèŸÂ[ᨛÞ2vT쟼¼|œtêÔÉÐÞ¾ð >îŒÎ`W 5•Ý ÐñQºeË–è$ÄTdYmG&¥Ï²è̯,)ȶølW*å5ªÔ}e™œÏï÷’<Ûx+ Jgå×®¦bgÌ28L±Úº´k¨| ¯ñC6KÚMŸyPay2,B®ÊÎ6+¿H½ÃþŸrOžíNGÂYÝ;“Ó³=þWúXb¯l&a›4ÿBÍ$ON¿á¾bkeе®¡\“ÒŠU//ñL±¬'y² ¶áªž¨:+õä¤Û }. ¤^ØÝ«c/)YŸJVJÍ™ïÃŒµ Õ¨jÇÞ±  ÀÐ^cIƒ²Ñ[ìe´–9Â2³ýÑÂB“Jµ|a”=n¿ìYi‡;ˆ…öÍ\e”åMÓR«GÞþGùϘï»ý¶›Tƒ†g¾Ÿ‰›Ã/ôäÙ¶¾„]þHorF¶§°Ø—¦'Þj‡Í@×G[çDËo±ЦëìPâ®8ùÒÊ:%3ׇ-fe²ÖGߢ=›ä§ïÝško^ǨEkäÎz¾:¬ä±š2z?jÄs>etC¿8jÔ¨˜Ëc02tÜqÇ8}üñÇÁˆ6ŠãpØÖÎAXÛ¼³†ß·álÃ^¸Õ´ÑÒ?…» ÂZ7«)öOÎþ*®ºê*C{{çw:{0Jîr¥PsõêÕèG}´Ë9bÛÙutâÉõ©Êf¤a'µ tŠí6ýQ–ñù–Tk“ШÍfH‘FˆÝ29»†ÊŸP3Ðû•D•äÛ\Òr6’lï±_ò—&–R§ùÕ¶¬Ê†U)>ìì*:•óm–ž›'úªâ7ŸÙ½ÏfRN}̾ïÖÊ:+Ï·àµê­vqØ5‘/;!ž]ßZùá3ûÕÕ­¸°DŠ?mxê4öL•Äø°5 þÕ//넛϶_Y£a;A’zÎ:¬pôS’‚~4õ(Šâ|þùç íý9çœE©‹Ž¤”––áoöÛo¿ŽÄ…,NÛz$ Ìm^i×Tû}Îv‰ ³³crx¬=ýS¸Ë ÌuÓO°rþ÷0yòdC›ë6saG*„뜢ÑbHsãÆEÑp1„Å¢çè•}Æ .IŽ­oðéé4x„åÚÂovÚ÷kͯéRPtÀxßaߦe‹ªÂ-ÏáÒ"Y±~WÕ=º³½[VI®ÎÓ´«zK¢),ôÞ}2ï?“­¯Iš"îh ·„$È¥wL³„.Zð¥ì³„Ú¤ËÆ÷·»` k,ƒoJ3…‰”ýò›%Ìo@J¶¤lî÷–Ê‹‰2zÊ|±ë"™™·Íôü>™ÿÌ$S˜âM›%÷8zm&wfϲÆ!JnÁ^›ð`¥ÉÆìë¥quQÕi+7(ª`fWöËÏæ úmÔ¯__ WÌm¸ábœzÌL›k¢Ø·‰ {—¼©ü¥›]Ь|jœÒ28qÍ%cn®µ½Ê}S¾´m>öÉŽ•…¦ˆÓ¥;c=5Ý óÖ—z:ŸvZW;qxÌœ_,ã¶rx·“ÛêHß17ZoÌ}ÅÝ­ûÖÊÌé:ÿáÓë†÷´FMH†<<®»ÿÔ4î,£’ínI‘éCÄÿ_X‚œÞ½Ýöaá­ÇÑQ‡•Žžý¨mmðØ´iSà æößp1N=vL0Þ£ÓDK ¥ÇþÞvÑ> ‘ žþ)üe-u“ýS ußܾڵÁÄî{cB¨©,O7·È¼o¿yV(O½ºÊQZ:^! DY zø·RfŽê`z¶™\pcŠ)LdÅš"K˜ÈNY1['ÔT’–6%KÌ¢Ÿ+6Ù<+²yéBSx’\Ø·), Þ]«å³tUymæ3c¦E“(Ÿõ&·h©l±—nLÍ'm !¾=-ºXo‹}!¶cvÑL›|…sÁqó dвk‡ÙMÿø 1dmï—òÂLó]"Ón¿HœŠðtV—ˆ²Ñ…ÅÍYµÙŒ€Ôì;¤£ÿ­÷5­ûôóžk'‹­ˆ½ö\<Ím´Û:Êp”ÙÏ?…ä5 Çk£à$o¦uR$eÚdéÀøµN«Á2ÉÒ~,’Ŷkõ¥Urª$§¤Jj*~)’’ÑWZ8l”ÖJŽ3Ê$ç˜2MÒ‡8™` ,êĤa’nyd‘¼³d‡%T°kõG–‰FIÊ”ÁiÅõ1†þ<-ç:©^$¬jCkZ’2ï’^fQOêÔÇú°mH¸ëqÔa…ûQÛÊPm ¹}gŸhEVVVf<ꨣäØc5„Å·':ÚÿeîvÑjÂy5zú§H”AtÔMöOÕxóXÍÜ[øïvü þ¤ù~£¹ó7ø~ÒÝW~·QýËÐ[ÆÈ•)ã‡Ks¿cDéØÝ*3iŸ• ])RM}¤Ü°è‹ïäþþæöÁS ‘†ñ~Wjjb¶Nïþøã½7FÏ¥ÇP«%2;sRŠ´¨„Œ»÷)Y°dìÜ[óJ˜x†ÖáÌO¥¨Âˆuצe&AVšœÙª¹tïgR•)\ ›Ìª„{7ÉãxK’Gž‘ÁÓ÷_®6f ¾”AÒ>Áì;Dþ/Ç—ñêo¢L7Ü$ȵ{º¡S[9n™]¼>ÂR{ ‰TGãç*Ó+\.ßéªØ÷«­ “2‡:Р1Å«x[uëk ÌÝ!%¦úg½)Ð…}eœØú,±üõÂ>ÐäÅØýæ6Z±c9¬}vÌýšb'ºö‘º †Šë#'f×^š›åæ[lügôd ]´pµCS –GTÈ}{e×Îm²nÍY2÷yqÂy¢›»óõ ŸðpV 2è'Fý¥®ÃoÒ{+ÏgúY‚¾oƒÍÒó$¹òÒ3¬ñDQˆ³þ3Qº˜¿K”Tê‡{•v5ûë4ev­_aˆŠŒÜÙ.5!«â…–w¤ Lò¡Íb¹µ–‰R7P#lµxcJO“¶­“¸›Koå>SiKU²†›¬ ¯ìLƒÆœ„:-NWMèkÈÙ].ÒÖa6ÇiëOê#§ŸRPÜnûÎ84·Ñæ6<ŽÑx³nf²w¯y6È{kL”ïßc“ŸéòÏ;šÊñ¢üá;võe÷B­Ô=ätò¡bŸlÛ¸A¶lÿN~,úF6oß&¶o‘í¹‹ÄÚÂéâ¯áiUZÃü<–Ðñ|ÉT,‡L6$¼r zÿá­,OîZ=Ï´>C¹%ùVéß<š?O¬UÿyðPpgÊ¢¢‡¹ ûQËß’Ó³f¦¹ýwO,ßg§5¤ly{(Ô¸\ÃÝT“Шh«Ich.GOÿ5eîºÉþ)àªm«™Ûà€# óÑüÅê…²ùãÀçƒn¿Ø]þ·5W Û¥T?È*Ì•©øiyVì‡eÝ4VF^zž4OôWìuäìË”ý;½ÒÑÊ>ý¢XF·Õ¬?î2ÚÓTnIÐM]]§}‹PjÁâM2Q'ÔÜ´x–ªÃÇTé×5ãi¦§kî-— £¾šGU“'SúIë*9qMbè™N­›t¿zs¤TMÖª"Rn·2L¨[ÓŒªŠZwt@›ã(¤Ôñ õ©¹£äÎJÜÌ$^úµŠý¿Xa(!3§Ú(mï¬eà¾2;{ª\9ÁÛ[Ö2Âhx¼¹Œ¸#U&5NMµLU„šÆÖÙ~éyÚ­T¿‰Z$³šÒ=¬ýguYh=ŽTf?Z]µðyÝܾ›—£û|0Ž.$šìF@ ‰åæ1`!ñÕHµ¾S¤^‰h»XMÚBz9Šú§ˆ—A¤ê&û§€«¸ÛM~¸r  ¹óÇÇAEEpgÝ® az ¡ípY[ºQ²3,‹aý§`ÑL™pí iѰ®Œ{l¶ì0ìôb|´y ,Kޱ9Œ—ðÞu{šzµ¨Œ$¡½ M5Æ·h¶bWÓ´Së7BxêPédeyïõ‰Ý¶{9ßí´Vé+«ÕÓ?Ü*ÈËí´Ø1”ªÚ¢Ý]Ç0³®Ì‡75è$ÿýwÃKÍm¸ábœzÌL0x;pÀOC#œ¶¯ZÚœø1ömáSÒµaëhVâì2øZënð3ß’µf`Û¥çÉ’:H›Ä mñÔ8ö(kÃ#U#Z‡£¬ j\—"ð`II‰á­æößp1N=vLvïVŒ×ÓD´ 0¤Äê‰T»hMI˜C¢¨mŒdD´nFQ„¹öÕøuæöÕ¬lQãˆÃô +…š§všš_ýµ!,¦=;ÊõÌ‘ò’­’;-SR”ef¸é“®”Öõï•M^)¥ééf]d„Ùâôe²ãðý»ÖnZŽœ.½ZiRIe³—¡¦½Àõv5wÊìBãûÒSz™4GŒ×Ãí;Pן&k¸S¼÷Õt¹ÝÁà%ÁALö:™öú›¢ã-'°~ýzCê*KùO=õTC="mÚ´³ ±uëÖÅ>ûY‘àå{ûAÛ)–53ÆH»Aª_õàMI’¤¦eHVv®l,Ú(YÎ+z£ ×Ió^r«%¹’»j§!¶KÏSo’ž‘Xî~õ·oïNÙ¢—*¶.Ξ*¹&Á¡•Ç£2êžÞ²êÉá6ÅfÒo”2Z¤_sžÖWô—·êu¡ò:½QÎ*»š; òMƒÈ$¹¨ÕÆ—5½¡ ±ØmÛT,Ò½ch^ÁXëÕDX{`‹,ÕW›ôÛ1´¹ÍQPÅOÛMõ%J{Y§£8ySd  mÖ»Ž;*¶ðX z&8¯_¿¾´oß^6mÚä½ôå—_JÏž=½þX¨lWÛé åùú§X–QWl›-=LK³õlSÒ2åªa=¥í)-äø¦M¥I“&Ò8Q›¸Ãûd¥þ¨5.9vú¾ÍŸÎ±ÜšÔ»•Ô·„2À-Ìm35R|—ÜYge¸øÉ'Ÿü±è9$6k£ródK¨Ì‰*6$ßši%™’•/¯N3M5‡»*KæÍyU– /«\‚¾ëKë®çI×Jw½Rªùqúm „µÇS¶¥íîÀeË–Iyy¹!æ¶ßp1Ž=æï…%K–Ä1 ]Ö]Ò„µ]Ôáái°—Kêf!žÀÒ¥KåÏ?ÿôÂ8úè£åŒ3ÎðúÝpâZ¡æ…^hàûÙgŸÉO?ýd‹%ÏeCƒ1cÆÉ¸q•¿1c’5ûœå°Nbs~ÿ’k4ú}ºN;f¾áçR°z•Åžf·f…ß:Ò5Ù´<¤pµ¬R6„0/Ù•YÕæ“:õ±`(œœ-ëP+ øÌGs•ÕúÊ`ñðoQn ‚QK2‚P8y™"V̼9Õ¢9™œÜͰœó$eÇ{³[4i¾ì0Vëß)åµ€ñHïîíÅ\êŠ7D-[¶4‘¨ .¸ *Ò‰2dˆ!Yà÷ÕW_ÂbÍ“Ø>IÑ&4»™R°Åa§{tïšJ?9F×OŽ‘çW™'sôzæÚÃ)29­¿æ©þXQ,+ êÕ?™;d@êË«ÍY®†­˜9ÙríÆ‘½,a ¨ž@xëq<ÕáêÙ»íŽwß}×ä=zÈñÇo£§’€ù{fǨ­ 6îhÂÛ.ò¯ÆŽ@øËÀuÓŽU<‡}ðÁ†ì÷éÓG5‹eŒrk…šýúõ‘ÖœÇã‘÷ß_óÆÜqÏú…2sæt™>½ò7SŒ,Ýb¯eiŸù9³ooûK¶¡uäìKG¯æHÆ/ÃÒ“ ö4µ‹­ÎîmÚyu¦ M»Ò$M“í½*Ú£a=6ëx¶e§w‘™2g¹y ì;Y;Û£–ñmZw±Èz}G¦+“å½u *6ÉK“l„Œ=»â6ëØÓTÖÈΣ’ëTê~8÷6}$“Š¼Ê•$¹,‚6W'‡xï½÷ Ož|òÉÒ½{wC=U ­cÞDÉ<®º;FÎÚÈPóÆtJÖž|iY€ܧ¬H«ô“3uýäLùåwc4J’2cˆ¢}Þ&íĽ+æ¬F›£‹&³žC-«.dæÇ²fç™§7}­&:CRº7ަä»'-a¬ÇñV‡ÝS œ¥tÎ㊔áÇ;{0ïjÛ¶­˜7‡5¾ã‹¸¦ c»õÀQžÃ\®©›ŽàÅÏMævõ¢‹.r]æ]+ÔÄFƒ6Ÿ={¶ÁKžS»Y5 .5Ú>¨.¿‡~ ÌVdónç›~…²h‘"uÒ­,OOîj¯E×ül©»O=…ÀJ&iJ»’ÕåÏçõ†>¯ˆ4ë#7¥Z¯O¾cšC­ÆòÊýZ"HS쌆#k–WpË„lÅ €3·æÅÚ ÜSdh¯æÆlwÙ™p·ówaãwþ9Ö/|)wHßÚ\µ&¨†!þê` £tÃco¿ý¶!™C‡•#Ž8ÂF‘€y€ûÖ[ooˆ9_c¹àÖtK® §N’¨–ï]“-c-³K)2à,£“:¿ËóÛm—R§æB¬“Ìó&™cˆ^B•¡ïx‘Ôé26õnKûž’5RLÆd¢7_Q—²ðÕ㸫ÃQWÖ5OЪU«¤¨¨È¹Í7\¤G̃k¬ˆŠwUm€ßïÛðµ‹ñ^'|ç?¼eUuÓ7^Ñظq£`e˜Þ™elúkÑzîZ¡&€¦¤­}ôÑG²mÛ¶he]«t%6?Åò|î„'e‰S…›äù'͆ǤuS?š’;Ë šªõÈI’ܵ…%]•ͥﰪ‡!ÏT÷D$㲞öQíÞ`ËüE” —*L‹+œ,©-´*dÉc·Úk0j3Ÿ‹ oÑÿüšj°iî½Òãs}QdÒ㥿E‘§±\>>Ó§ò®±O9³´mî£r­õu2å®aÊÞç1àüÖÁÈŸM°s÷òå•Ë\µË°9KçŸÀå—_n¸»½.\X][dxÄuž¶—Ü Ö¹¥B:ô!Ùá@ظoÓl¹¢ÇK¾“Òo‘¦¤N‹Ó¤åΩòZ¾ êmòÐÅI†Mð,QEa@Ïknµ¤ªp‘U ?5Å,ü´<Æ?ÂUã±ûÁîªKYYY†ôB ‘ö4 H,žË.»Ì†ïŠX7ËbȰ'ªÚ€j¾oÃÕ.Ú`bÐaá,ƒ¨ª›¬Ž`°ÞµnÝZºuë¦rŹ«…š#GŽ”&MšxAÃÀé³Ï>ëõÇÒIBÛ %«JFx8k3å¼FÈÜMþuïöíX%÷^|†L-4)][Õ1êü%y”u¨YuÃ0¿Ïw¹À’àªGÐ z„F'IJÀzÑ-òߛė™ÌÄîWÉ4£|\Mç¢IƒdÄC³eÇ>먺bï&yjL9oR®.O•§IOÊ£råžH̼¥‡š¯m{­ù’Š]²à±1rFŠUûj¶Snh›ôfo”L›ñpî„ó”wÍ•]¾à+šk^»WÚÙ½/iŠŒíÅ mITZýDåÚKO?ý´!í§œrŠ\|ñņ0z¬’““-ƹŸxâ ë±¢hÞ—“fÍ‘2¹ÔºÇ½²j‡å/êð½ûd•Ò~4<ÃlÚ—Sdúä!Ö‰³:ÇÙ5E&*3Ví°¦!vɪ¹OÉÀúíd²Uxø™2ùͦIµ0¼¡‰]†H†ù•æö:9Kùý0G@¿…@¸êqÖa k|÷Ýw2kÖ,CÊo½Õ:á`¸4h´je/L›f£ŒO¬"ØXzãjÆX®v1žÊ?м†³ "X7ÅÂûEÝ´îå—_6 ;v¬;WÕ)¶(]íîºë.RÞ_£F<¿þú««óä+ñ¥+³¼ùÔççI©éži9¹ž•…ž­[·z6n,ðäåf{2R“}>“µ²Ô׫¼áås|>Ÿ”>ßsÈ{§ÍIižGkÚ?Ÿœå©þíJœåE¬jŒ#yúvÏ IDATš§ÌæujÝýæç%ÍSXnŒàPñ|2Æ3¾GçOIK÷dMËöädOód¦§ø¼O$ÕS`—8»tùˇ1yª¯¬pšõ½>â°½W—­þ¤¤ex¦eçxrsgy¦MÉðÏ «À&UUAe…ÙÖôéÞ™š1Å““›çY¹r¥'?/Wy_ºïú¡<7k«©ª^X½û€ê¡Ýût*Ù[ë >{n?ß½{·'!!ÁP233Ýž­°¥ÿ¹çž3°S–ì+múư½?2/*ñ(w†|kí”ÚÇ¥¤y²”¶j~^žÒ~Ì÷dgeøm?2æùÌÆÆœ4?ïI÷dÏš¯¼#Ï“›£´÷iþÚ{Sz“•g•>bJV®§Äûö2OvŠé>I±ï'¼Ï˜OjGA–ÿ|¤ÏÚj~iôøíÚT}Ÿ]¢ §¥ZÊ;«ÀшǮ/MñÛ†§‡·+TkYj¹#»vIØ=÷Üc¨‡ÇsŒgïÞ½.I}d“ùàƒØwÜq1:ÖsÞÖ‡½ @°ûvô}žv1"µÔŽITöOá+ƒ°×ÍZ–Zo‚GD*`í^:cÆ CÛzä‘Gz” Ùji„ž–½7h¯Ulx0àÓ~bwð\fÕÌŸ”Q@R+¡C[=е3_µ¿Acåã%ž)>©)Óü È´×Ûv ~;‹Ce—wÛôjéV4x<+m¥þ…rUÏÛóÀõi¾JAh,íW⃅í½>ÊÑI¾$%K7H÷–Žå¤h~f5ì}³Ó§cJ^±%nC@ <¹×ð' 8j^uotõ©y²I±ìÙ¹s§«óÎÄcbtú¿ e ^8“™w•oõdúè3ô,ª;O™’_Mú‹<ŠÁ ßêâ4\OÎôäÎò×Ö%ëúçƒT߉®}‡ŠfùÉoŠ'ß™ŒÏwCy% öךð 5•÷‡¥‡³#ON0[‹!8qØÅë‚0EKÓÓ AÃßà-·Üâ‚”GGwìØáÁ`[ßÿë_ÿŠŽÄ5´õanÔ|Öâû6,íbP ÃYdµlÃÚ?…­ Â\7kYjA#g5&j¨ðtìØÑЮ2$jÒhB\½ü\éܤ]»vb6²ýØcIII .ǘK‘ÏË4Eu±6.)c–,~ÄfYž]¤uZÉE–Mpc’œ—äËž¦Q30Äf]·ryÄ€öÚMþ‡°…L ®Ž ¾½úMêÚDÙ¸ûõRZ8Ë´9’ͶA©’»±TÆùÚ9ÖG>‚±ZÑiiÙù’—e_¶Y:˜œ‘#%sÆ‹“…à­†Ü/EyYþ¢«öZV~‘LhÚŒÈü”žæÛT¿{rÓâ´«‡öqÔ¼jïró› <óÌ3†,\sÍ5‚ÏéœP4xä¶Ûn3ÜŒ]ÐÙØA4ÜävOB[¹a‰ädø3]â?“³ eÎÄþþoR¶ÃÉ(É·±ãYÍcÊ头iRôÑý2ü’aÊw_®¡èû˜ƒ6·)ÍR@®¶qÔi5@”IF{—vƒœÛØþRT„© [^ÂRÃ[‡%He༠[i…åE“&M’ýû«6ëÄf§wÞygXÞ /iÙ²¥\}õÕ†¬`¬÷Ë/¿ÂbÁã¼­s Â­Å÷mXÚÅÔ€ µaIyØÊ Ìu3HeoýÓ+¯¼"›6m2T½‰'ünò¸^¨ Ø<òˆ(3x^‹(K¼þØ:i.ã^-—üìŒd+Y¦Íß(k)ÎÇ/u¤ÇÐk­ïJ)Iv¥îpÁ@볊u¯þíL»7ØÜ¥)~'š¯5¬g1øÚŽ–âüi†Ö 7øñ4î2R–m•œÌT?wé/%Ë”œ|)õ¼*Ã;ú¡j—õ¬öÞôQ›Îë6°aÖ"Ñq?•5’ãçHaîgl’R%ge‘,|d´#¦–ÜVÇˡ♒æk­Ýi<¦¤gIAÉ!ß¿•ñ‚ÏŽ§¯zawo€ì‘ }?ìkSí²ë¦°ûî»O¬ú,?úè£EÑžwS¢"­Ÿp †´¤§§ lGǶk&£Y(Eù9 “R3eeQ™<2²‹#6ðgO\ŸëÉõœ^èëq8ë°Ô¶ #µü)øéGõ¥àæó+VÈ믿nÈ‚¢¥)íÛ·7„ÑãŸÀäÉ“ c½ÒÒRyüñÇý?ä«´õam³¬Ý÷mèÛŰymÛFk#¡íŸÂSa­›µ-ƒÃ•&žú'ŒÓ̲²ìú»ÕÕN·&^Ÿîn¸A²³³½AuêÔ‘Õ«WÇö®‚ÊæëVÈòù²tù)Üž+…ºÍ€’’’¥MR{éÓs€œÛ¯—œÕ½­U0ã%‹'dç¶"ùq÷.ùí÷£å˜cHƒãʉ-ZHãð][ « eóöDê×—ò={D4•6;K·>}¥g—V’…èö­{^&ÝbH™bLæŒï^V±WÖåçÉüO–Éò k¥¬¬2¸aÃÒ©O?¹`è9OÉ›J†w˜=ûvm“ÕŸ.‘eËVÈ¢µ+ø4×´M’tíÑSúöí§ÔÑ$ižXÛ·i1GÓ±–u0š²â -K—.•óÎ;fM¼wO˜0A¦NêõóÄ9çŸ^0øÕ»'Ÿ|R ÜŒw@¶­Z,ór?”…+Êvoû¡´ÁmZH›N]¤gï³¥ûÙ=¥csËç¨cDûv®“ß›#¹ó ¤aCü¯ôm:I÷žçÉ€ó{)ñÛOZUìÝ&Ì_"¥J£ÈïåØ&§J‡3:J»VÍjÝ~:΀Ã+¶½&uÛ™')3¤È󈢻J:¡¯ÇñR‡CWF¡‰ùСCrÎ9çÈ—_~é}bR¶mÛ&M›6õ†ñÄÔTe²='Ç{3V5lذA Éï.üm@m¿oCß.Æ{¨>ÿá)ƒð×ÍêsïwL™2EþïÿþÏ€«ÁÎ?ÿ|C˜›<1#ÔÄ®‚˜õÔkuéÒE>ÿüse ¡Œ4èH ŽT+ÔŒ#ÌjxüöÛoÒµkWu°¦½111Q¾ùæ9þøãµ  ðÇHRR’:hÓS6`R'ì:wî¬ñHެyj„ô˜k¸75»P^½¾‹!Œ àÀ ƒG½Ã²ieÓ }Ïؼy³ ïƒ°XsŠ 8™?¾æå‘H€HÀeCiulQ^^î½kРAòÉ'Ÿxýn<©Z³íÆÔëÒ|ê©§Êý÷߯ Y·nEµÖp=$@$@A!€åÒÐ>Ñ;˜¡@SO$°ó£Ž:J¦OŸnXrwàÀ=z´a/°Xyw\¨Ø$Ï›šÊ¦y’–Bf\Öf:ä>ýôSËòènݺő¦}ðwèÐÁ"^°`¼úê«Ác$ #€•t7Ýt“èšPþ{öÙg]ŸÓ˜ÑÔDI(»8I¯^½dÍš5Þ‚Á pÉ’%rî¹çzÃxB±N€šš±^ÂÑ•¿?þX.ºè"òs,C_¼x±qÄÑ•X¦ÆNÛ‡Ëú]XLòÎ÷J‹¡R”‘§ØØ¶³{m¸MõTì\(·Ýª˜ø9ñÿÙ»x-Æÿÿ㟴£}#K©$*"Z•Š6­R¤E%ÒBQYâ[´¾–"T(¢ÑiUR‰V_|£,ßP¡´PtJ¥íß{~ÿ©{î¹Ï~Ÿsîåu=çqÏ\3÷Ü3Ï9çÌ=Ÿ¹®ÏuªaØkþ¶íWµ§^º×ÊGb~—°/Œ5å{¬V­š©™[òæÍkŸþ¹U®\Ù­â5ºWkMõq‹ºò¯[·ÎÎ8ã ·Š×8àúG'›CÍÀ‹/¾h}ûöõlCca샘 jê }u<©äå—_îéšpÖñŠê†ÎÅÎó;ÌL ÔŒá“a‡¦Ñί¸â ûý÷ßOìÙ©§žjk×®µ *œ¨c"ýÿüóc¬ë[`™4i’õèÑ#°ŠiBì´'•´û–x½³éµwF=òÖ‡šKüâY+X}@¨E™TׯVí™i5ÓŸ*5“ö‹Í"¼€ºF7nÜØÔR3°hP›ÁƒV1NµÎlÞ¼¹çÝʧî“jÌB‰/®Oñu¾9Úô (·³ù©Ç—[tŸ¦žÍJmí%fºŸ»'BùÇ‚»¡oٲŮ¿þzÓ!@ <ÿý·µmÛÖÐÔ–GM@3<ÄÎVÔ5DÝë‚¿tÜ~ûí¾ç0~,›ŠJÖ˜xò «ÙûäÙ¾€¦õzÇZ¦2 é0¤fÀï°zýÿÑëºM6†@æ hp·à€¦nÌü“OPÍàzêòÀĉ‡éàúäá``?ÿüÓ‰…4õH#‚ï-‚ß-ó1×RSðGµ-Z˜žä–Ûn»ÍÉOXÇ4±(@KÍX<«‘wL;v´·ß~Û³c:t°éÓ§{ê˜ À´iÓ¬sgïèÕêv·jÕ*‚Èá!Žú­¸ÿû/nØÆj]Rʶ/žh Þ¾Î1Nýa¿uJSßîã#ÝnÞn‡rç¶L¿<ÞÒíPî‚vÖñçsEýáâI@­1ï½÷^Ï!—)SÆÜ­D‰žzf2& ‡ªê™÷í·ßžØÒݼÿþûÖ¦M›uLăקx8Ëcú”GS PfÍšåÙÀÈ‘#í_ÿú—§.šgb2¨©²{÷nçb˜sEõ£F²|P“bVÀ½± <À6c?·™ý/ ¬bt h` âX”+L¶ÓO?=°šé0 2Ä{ì1ÏÏ;ï<§ẹķ@¨ÿý>‘ã­4MhOÀÐCéP‹ À H·œvÚi¶bÅ g¤Y·Ž×ð (f5<ƒ^(PÀÉç}Ùe|ß Ÿ4[Bhu¿¦ÑÎ.\èˆ4ZÏÝï˜ë~îX‘"Eì½÷Þ3åv ,ŠH7.°Ši@4<òÈ#¾€f¡B…œ4Ó™ŽUeߪU+Ï;7nÜh 64¥Z¡ ¼@CûhT[šÉ#±4 L™2ÅÔ,0 ©VƒªWZ,JæhÀ gŸ}Ö³ñÄÄD»öÚk= yV`ˆ±cÇúî×4ÆÌo¼SMΘ jêà.¹äç Å)§x³ÿþN½Ö¡ “‡úkãC¾:*H«€ wWÈ}¼Kªº¡ŸþùiÝë§Q@׳©S§:¾õÇ´FÙo¿ýXÍt¼ „øß’ %|›`JЩû¤ SdL@iA”ßQ©¯‹º¢·k×.°ŠéLPëØ»ï¾Û³åíÛ·[Ó¦MmÇŽžzf@xxë­·|ÿÕØOÝÐcqðì˜í~ø ûÒK/Y¯^½«œÑñ^{í5_~2ÏJÌ ­‰›mõ¶À¡± —¿Âª–ŽþÑÍ¢õ”ÄÂ~?ÞúöíëiâÙ”_“’uJ±¢Ö™e>°T¬XÑ,X`eË– ¬f:NïþÎfN_hßnÞfûcÎog”)o—^QÓ®¸¬¼qˆ“_3K&Ožì´Ð2ñóÏ?ï:ƒVg6 vîÜiW]u•g }¬žÀΛ7ÏtCGA¿€Y6l˜oÃ÷ß¿=ÚWOEæ ìß¿ße~Íš5žªZµª-Z´ÈJ–,é©gˆE.ÕÐäÐñA‹b^ê­«ÅÛ/;VòøqéKÆàÁƒ=G¨Ü7:¹?ü°§ž@ÿÐÿɆ hê¦N-7)Ù# Ñt?úè#_·ÿmÛ¶Yýúõ$àÙ³g|* ›j•©Þ_¡šwÝuÍl:íùóç·Ù³gÛE]äÙƒ¯¿þÚyø·uëVO=3 €@¬ (Ê7Þè h*ËMǸ jê`•ß&ÔÈçÇ·~ýúÙáǵ@à¸À?ÿücÝ»w·gžyÆçñøãûrkúV¢"ÓÎ<óLûôÓO­zõêžÏÚ»w¯µlÙÒ”~…‚ q¿þúËéºêÿªH„ºVfüSÙBjÔsñâÅvá…zÞòÝwß9ú~úé'O=3 €@¬èºÔµkW_}|£–+WάJ•*ñpþ9F@À'ðŸÿüÇ®»î:ûõ×_=ËråÊe`­S§Nžzf"C@ùsºuëfo¾ù¦o‡.¿ür{÷Ýw­L™2¾eT €$- ÿ©z8ô÷ß{VÊ—/Ÿóÿ¶mÛ¶žzf²_@ÍFÙ7ß|ãÙ=Ü›4ißc<*Ì €@4 (—p—.]œ€‚÷_-45¦L¼”¸ê~xR•G­25´}`Qׄڵk‡üå\i@ ^ýu«W¯ž/ Y°`A'_ÍÈ=ë¹sç¶©S§:iV4^`Q Z]Ô?øàƒÀj¦@’8x𠓇L×½à€¦R¨«3Í$𲹺T©RNjå—,:§;wvÆSP '  ʬÁB50P`Qº§Ÿ~:®š:þ¸m©éžü/¿üÒÉóË/¿¸U'^Õ’S¿zKAbY@Ý—ï¸ã§%fðqV¨PÁfÍšåËS¼ó‘#ðþûï;­6};¥ÒJâ( €~¯¾úÊi£f‚K:uœ–ï lR"[@ALõ`xûí·};Ú¼ysÓƒÜbÅŠù–QDªÀ¢E‹œ‡3;vìðì¢bVúŸÖ¾}{O}<ÌÄmKM÷ä^zé¥öÙgŸ9­3Ý:÷õÅ_´+®¸ÂÖ¯_ïVñŠÄœÀçŸn—]vYÈ€¦ºo­^½š€f”u¥X³fUªTÉ·çʉê^û| ©@âXàèÑ£ÎC}ÿÐTƒ‡¥K—Íèø%Qws¥iPº¦M›Zp@ScÂ(ØM§¸j A]–,Yb=zôЬ§(1¸¾Ø( 8ˆ%]Ÿ|òIç¡Nðà:Î;ï¼Ó,XÀàiQzÒÐT@Z>—ï¿ÿÞÔÚhĈ¦\œ@ Þ6nÜè 0£Áþùç‡ÒU)£î”êƒ=JÇ¢Þ /¿ü²oÀ<õÔSΧžzÊèŽ=ç”=E Þ”'¸I“&6|øpߘ0U«Vu¾ïÇó hqßý<øâ7ÞpRWÌà¢K/½ô’i0!  Í´gÏžª…B‘"Eœ/ÿM›º0`€…º¶i`¼ñãÇ3"llœjŽÒ( ;J7¥›E ¼\4КòW¬X1xóQ& ž)zзyófßžë>O×JÔóÑPÙ(ðÎ;ïXß¾}í÷ß÷í…rkìàqb|+Æx-5ƒN°Fúâ‹/œ®˜A‹œ„àŠ„ë‹Z8Q@hÐÍÛ¨Q£’ìr¥Ö{ÿýï€f´Ùä÷÷–[nqÎk­Zµ|+ªG‚‡Òz»wïö-§ˆUåË—;ßùï¿ÿ~_@3gΜÎÀk+V¬  #¿0O÷yÍš5ó‘~Ò}žZtR@ìøã?즛n²n¸ÁÐTçž{ÎÔ /Þš:O´ÔLâ·UÝNÔýäÙgŸ Ù¡FÎEO?   [­35BpÑhyº©SK•\¹r/f>FŽ9âµØ>|ø°ï¨J–,étÃÓ“ßàÔ}+SD©À®]»œkžX¡ºŸwÞy΀ ñÜ/JOmªv[St9rdÈk¡Rï¼³Î:+UÛc%@ œ õöÛo·mÛ¶ù6[¶lY›6mZÈ1a|+ÇIAÍN´rmÞzë­öÓO?ùÖÔ¿†+ îš@ vîÜi<ð€Ó­*T+så^T—«ÚµkGâî³O™ °víZ§e¦ UjÖ¬éôJPË]  +j´0nÜ8' ªeºZg*U‡ò ŸvÚi±rØGºvíÚÕþ÷¿ÿùÖ(P €ó{ üâú½  €™- <¿wÝu—½÷Þ{!?JcÀŒ;Öôÿ‰rR€îç'-BN5lØÐýP_pÔ’)°¨•‹šý*Ç΄ è’ˆÃ4d»€þG3ÆÎ?ÿ|§eyp@Sf† âtK& ™í§+Kwà’K.qò©ª7B¨/F`H-”Ôå%ÔC½,ÝY> ƒÀŒ3좋.²Aƒ…Lµ¡Ü™Ÿ}ö™ÓZ€fÀ£`êy÷å—_:ùê‚w711Ñî¾ûn'=RP@ÌPz0 hvá…† h–(QÂÞÿ}§J¨ï홵_Ѳ]Zj¦áL邦®›ß}÷]ÈwU«VÍ h=  µ\_Æ5 P¨¢ –Zg^vÙe¡SG[¶lqFº×—¥P%Ož<Îrµö-Z´h¨U¨C"V`ÕªU6xð`SþÌPåôÓOwZnÞqÇ´È 'u|ðsŸ·uëVß+‹rS=Ú\  €áXºt©éú³~ýú›lݺµ3P©R¥B.§ÒÌÛô‘dÜ4”ƒ%TBV ®Ñ A»öÚk§~ÉnŒ… €@&èæM#x* ~¨€fÁ‚íÉ'ŸtZ£ÐÌ„…›TÎ0us™7ožó„8øÔ]ó©§ž2åð:thÈNÁïaÈnµºÔwrõDÐT J]ÕXA=²èbœÝg,{?ßýÞ¤îæÁ½ó”wõ•W^± *8Íýû÷gïÎòé õºö´mÛÖÔ38T@³téÒ¦‘ÏŒ€fò§›–šÉû$¹Tùî¹ç{ûí·C®£/J:tpP«{:ÈL`ý¯ý˹ð…úýOºùæ›íñÇç ˆ:G@) ”Nåá‡ö´è*TÈÉ÷£–À𦠀‘$ Ñ­zè!›3gN’»U¯^='o°ºœSÐÀФC¿K¡ÊÙgŸíÜãé{Up4ÔúÔ!€®ÀöíÛïÙ¨.Ô úŸÒ¯_?§£PR ¨™²Q²k|üñÇN·¼¯¿þ:äzÊY×½{w{ðÁ­ìñV.@ œJn¯Ñ;5 ^pÎL÷stÓ¦ü¿µjÕr«xE Y¿þúËù2¥œ›j©ª.\ØIq .3tK%Dd¥€Zf>òÈ#I>ÜÓ¾”/_Þy¸wýõ×gå®ñYQ(päÈgP)õPP~ÍPE©|Ô%]£¥S@äôä™gžqrgîÝ»7äªÕ«W·ñãÇÜBò$YIP3IšÔ/ÐEO]4 z¨<,Ú’‚›7Ýt“ÝÿýN’òÔo5@¿€Ò]è‹ô»ï¾›d0SRô©K—.´$ðR“  ¤Q€ßxã Óµ.TÑ€Ê56pà@Þ…¢2M@Ý‚•:C,¨¡ARåÌ3ÏtÆSë;å ¦ ZµªR`SyÈ“ºjÀ!µVº  (°gÏS#4wíÚ¸èÄ´ºš«‘ŠÃÑúûKª'j¦š*å•_E­¡Ô½3©_XuUî ¸@>eSÖ@¯€ò‚=úè£ÎMœwÉɹ’%K:­Ã{÷îÍÍÛI¦2  Á n¾ùæ›IÑ•®}ûöNj=i¦ €™% äS§Nuòý†ÊEæ~®®‡jP ëaþüùÝj^H³€Òü(õ˜Jª\qÅNp³E‹I­B=ĉ€‚™cÇŽu‚™»wïyÔj ÿ+ÌNÓ”ô ÔLŸ[²ïR·½'žxÂù%Þ·o_’ë6nÜØéº§ÄÔ vR@PêV>{öl'ÿײeËB­âÔ)ïŠ.ŠÊu¨Ñ\)„[@ƒO©õïôéÓM-¤’*Jz®Á4b#ƒo$¥D=¤U@­æ”‡ì…^H²w”¶Y¼xqçFQé1B î™ÖÏe}\… :ßµ’J=¦õÔpEÁôë®»ŽVW.¯ĉÀŽ;ìùçŸw»%ÌTkLµÊÔÔêI@ɘAÍŒù%ûn}ñÒ(ÃÊ‹TÞm@ éæO¿Ø"’%e!q%ðçŸ:ÝÆg7nLòØ•ÛP ¥Ì,V¬X’ë±p ¨e”Þ©åæ¡C‡’ܬFVWwÏ[o½•/mI*±Røä“Oœ@æŒ3’ýŸ£\îºë.çÿß©SReyzô°ù­·Þrz0|ÿý÷In¦\¹rÎw³=zÐ Ä_Ðð IDAT+I% Í\]̧L™byPî`ÒJWqÑE…\‡Ê´ ÔL»Yšß¡®èÊ£ ®éIuK×FÕÊJyÉôTY‰Ì) Ÿº(êÿÅk¯½fɵöV·:2ûöíëüÿˆO-Ž:;~ýõW3fŒMœ81É´¹sçvZ¬èwõª«®ÊÎ]æ³@ JÔ àõ×_·_|Ñ’k§Ã©R¥ŠÓ2Sùëõÿ†‚@V(¸©• OiZ’*Eб>}ú8÷x´ÊJJ‰z¢S@ùœŸzê)›3gN’½˜ÌTŠ&3+W®Á{MP3 O޾œ©Õ¦~é·mÛ–ä'«9²º¦«eK›6mør–¤ ˆ=Ñ{ï½÷œnuK—.Mò¢¨#>çœsœ›7ý GXìüDó‘(튮oÊôÛo¿%{(\puëÖÍn¾ùfSKN  à (­…Ze¾úê«öÎ;ï$ÛÓIïQª å#côiW×ìÐBnpsÆ Iî‚©ºþúë¯õë×Or= €@d (®£¼Îúî«Á[“* fêo^ÁL=|£dŽAÍÌqMv« ^è§֛k×®MvÝ%J87~ ^TªT)ÙuYˆÑ'ðÕW_9L.TÞ÷¨”€~À€và 7ð°ÃEá5¢4x‡Êw·bÅŠd÷Mð®¹æ'õŠòŽåË—/ÙõYˆ±+°iÓ&§Ëžz(üôÓOɨrdªE¦Ò®\zé¥É®ËB²R@ÁM= V–Õ«W'ûÑêzª¬ô€¯P¡BÉ®ËBˆ õP S½“Ü©¼yóZ×®]màÀvá…&¹ Â#@P3<ŽéÞŠš+«eˬY³LÂäJݺuÖ›Šö(P ¹UY†, \™hå•W^±5kÖ$»§¹rårº+ôïßßj×®ìº,D ’ôäZÁM=ÄK.‚öY7t7Þx£óP×:Ï‹¤3ɾ 9öý÷ßwR­¤ÔCA{ ôê«ôÊ%MA ’>ýôSglÝã%7°ž‚ô:u²Ûn»ÍjÔ¨ɇľ!—ÿý·)Ÿó„ lùòåÉhl7ÕD©R¥’]—…á ¨>Ë mIO¨5J–‚)µÖRwÓV­Z9@u·QW D¶€Zh+׊º*Ì›7ÏÔ¢-¹¢‘[{õêåäˤ‹nrR,‹tuMWë+åÅS¾Ø”ŠúèСƒÓ"¹V­Z)­Îrˆ"uÙ›={¶½ýöÛöÁØÁƒ“Ý{=ØkÙ²¥Ó*óꫯæG²Z,ŒDåÚ|úé§–Èû÷ïOvÕ+O-7»téâ¤Jve"€@¦ èAIJeËœï¯ï¾ûn²­2µ*Tp©Ó `zPAÉZ‚šYëâ§)ð¡?œ—_~ÙÔŠ3¥¢ÄÓJ:«'|ÊÍ¢î|ˆ µ¾^¼x±ÈTkµJI®¨ušºã*ÝDÛ¶my`‘Ë¢R`åÊ•N®<4ìL©”)SÆ nªgõêÕSZå jå2wî\'©‡z)vtHA-2Ü9ãŒ3"ð¨Ø%Ò& F+zÀ§®«É˜®­ê~Nùb•º]»vŒœž6jÖF Ýʉ«®åúQ£³äJΜ9‡nj™Ù¤Iº%‡•ÉËjf2pF6¯?*µÜT²ôíÛ·§¸)µæjݺµÓгQ£F¦\ÈZݼ-Z´Èi‰¢Ö(©ùÛUË4ݼõìÙÓÊ–-›µ;̧!  jÌœ9Ó¹¾éïE#ȦTÎ;ï<çËãµ×^k 4 gJ`,G ~ýõW›?¾Ó3áÃ?L1…vµhÑ¢N®L]/¿üòlÜ{>ÌX²d‰Ó{A×ÁC‡%ûa§Ÿ~ºµhÑ”{Z=ô ,˜ìú,D´ ¨5µŸ(nJiÁ´åÒ¥K; P”2B÷p”ì ¨™ýç Å=8|ø° QpS]uR궪 žvÚiÎuS×…°dÉ’)~+ €@ú4Ú³˜úùè£RÕ Eƒ¢èoSÝš5kfzÚGA üÐqåÞ\·n]ªÔµG­XàÔRÅÆJdš€z&¨%¶Zdª5¦ÁKMÑø¦M›:ùtõ`ž”J©QcXضmÛ‰,?üðCЇ¥¿¥aP€S/äìK‘Œ)ðŸÿüÇ dêÁÂ7ß|rÀJݧ©5¦zÓéoO©Q(‘#@P3rÎEªöd×®]N÷tååûä“O’M<ínP]jÖ¬é´àÔ¡ºôP@ cEAL%€ÿüóÏSý·¨VÔJ¡¿xÚž±sÀ»cOàÛo¿uº¨ª{zjòoºEÖ p^yå•–;wnw¯ I;vìp¶+ˆ¹páÂs»»¡¿ÏÆ;ƒƒµiÓ†‘Ÿ]^ãZ`ÅŠN÷t $©%S*º¿«S§ŽàTÊ¢råÊ¥ô–#·zð¦™j‘©@æ/¿ü’*‹ªU«žÈsK*”T‘eËJ5³…=<ª?Æ·ÞzËÉ×·víÚToT]øÔ‚SNåáäæ/Õt¬ÇÌ@Ý…Ü™©½ŠLÝè:wîìÜÀyæ™q¬È¡#zµôÒÍœ©iÁânY 0QS]õø›sexE c8A­[ÄÔÏgŸ}–ªzúTµjÑC½n¸Áɨœðð èûfBB‚3°Ð‚ L=öRS.¾øb'À©Vœ—\rIjÞÂ:Ä´€Ré›™ºSã°ÔõpU Úu饗¦æ-¬“Í5³ù„ëã•pÚm5¦'}z‘šR¨P!§ÛnþàTÀ“‚ÿ' @Šìr[¡hÔÖÔݼիWÏyp ‡<=Oë ´€œú;T×VuqMí5NƒoU«VÍ p*§FSW~2 ¤N`óæÍöé§Ÿ:7†J¤Ö™©-ÅŠ;ñSiV4OAÔ ìܹÓ餠ŒòO+à™š¢û9µÞÔƒ½ºuë2sjÐX'&~þùggVÅEtÍÒX©)›D3z(pÕUWѽ<5h´AÍ:áÚ•?þøÃ¹ùÓ³žð¥4âràçžsÎ9NpSNýTªT)p1ÓĬ€Z (§Š‚˜êž åÊLm)\¸°óåQALݼiž‚áP·<]ÛäLkE9‘Ô‚E]Ôõ£›=%|§ €€9 ôAAÌåË—;¯[¶lI"(_´–ë!‚ºÈR@ ãz°®ëžœzMíýzä) ™ì)µº¬+¯;Xغu«Ó“N½éôóÓO?¥ú°.¸à‚­›¯¸â F/Oµ\ä­HP3òÎIX÷Hƒ )H£¼ rê‰{ZŠš_»N½*¯_PÓ"Ⱥ‘* –^Ê‹é0•£VÒR*T¨à¤rP:µÌ$itZôXŒ èa„ºÀêO?꫺´µhqœzU~Nµð¤ ëûöí³Õ«W;ÁK2W­Ze‰‰‰i:ì xÒ=ð M|¬Œ@ºt§)àÔ=ÞöíÛS½ Î¥ pêGÓ Ð•j>VÌfý®/]ºôD S#—§¥(%˜Zcêç /LË[Y7‚jFðÉÉŒ]Óx7õ³fÍš4ßü©õ™núÔ,[AÎË.»Œ@Nfœ(¶vC‡9Á7ˆ©V(©}ÊíîŒúµk×>‘“–‹¡+Ã+‘! ®±óçÏwœÊ£”šÁ‚÷\¹þÔ’Å têé=­Z‚•˜Fõ>p[`êUöR›¯/ðxuísæÒ=r³ê0@Ö =zÔIË¢§~ÒÒRM{š?~çšç9uÍão:kÏ!Ÿ–´Àï¿ÿî4Ðr[b¦f¤òÀ­©‡Žb bª{¹z¥RbO€ fìÓTѶmÛœüdêÆ§@OZžò¹rÚi§9B=õP"]ý”/_žV..¯Ù" /x6l°/¿üÒùQK.µ@QÂè´µ:ÑÅP]ÊÕ¥®xñâiÝë#€@6(X£ü›jÁ© Ÿþ¹©uKZ‹Z°è§ Ä îëUªT!ЙVHÖÏR}§Ó ’îþÒìpwX½v”ªáꫯv‚™ä_wexE òÔ€E£;øá‡NKl=ÔOKѽþÞkÔ¨á\÷ªW¯ngŸ}vZ6Áº¤K@¿«ëׯw¾¯©ç¾­[·.ͰJ”(á¤[ÐÃ7õ¦#ŸsºNGT½‰ fT®ÌÝY 6˜O0-£;"é¦Ï rêUÝùèÚ¨Ät¸”4]<7€©W}¡S·ºô”²eËžh‰¬`¦º˜S@ ú8à´ÖV7[ý(ȳ{÷ît˜žüW¬XѹֹN]÷”hž‚@V è&ð»ï¾;¼tƒ˜iÐ'xõ»í¶TÖ«æ) }$E¡Å‹;Ýuõp/=­³õ`CÁÍÀZ¼EßïC$í±®]ºÓï¤û£û·Ô†x,E‹uîÝÜÖÆ•+W¦U PLÔŒƒ“œÞCÜ´i“'È©‘ Ó[ÐT`30Щ@@)¤V௿þrºË0¿ýöÛt}As?SI¢Ýt bò%Í•áØPîMµE×½ŒµеM?n°S×>å0£ QuÃsƒ–î«®éiì™*•‚—n S­\( {Ê™«ònW^}ŸVï¦ôýŸ rjúÜsÏMϦxOŒ è*€™ÞkW¡B…œ^tnS߹ȅã¿D)AÍ€X|R@£‹¹ùõªœiáäÖÌù磮ê t*?ÓùçŸï´ŠÓ+ÍÄ¥âozçÎN÷qÒÕ\¿kÊý•Þ®s® rbªÛh`SOŸ) €€4Ò³›sPÁNµРb)@¬R¥JNS-ÞÔú[×>ý<ʈll¾W­¨4¨ã?þèüè:¨k ~õ=,£E7ƒÊ í1ÕÅT9õ( Ê;­{:7È©‡%)JѤখU£]óôZªT©Œl–÷F‰€Z_nܸÑÔûSø¨ç_ýu†¾~úéÎ5Ë bêAœzÌPpjº¼¦Y@-tÓ§|…nË9åé GÑ@ ANM»ójbN‰~ýþ¸AK.õãΫEf8K¹rålÔ¨QN^LýnQ@Ô¨U‹òñê:ç¶ŒÓÿªô¶l þLõV r*ÐéÎ+‡™ÄPbO@]Bõ.0péN+ ™žî¡¡”t#¨à‚Z±T«VÍ fêÁ¿W¡´¨C ¾”²BùãuOîR°`ÁN7ЩWý(‡'%º4蜸 |U@3£×/µ¸Ô÷ Ç•Ë\7jð*= ¦ ”Aͤd¨O—€ÓñÅž.Âú¢ž‘Á;¢ f`SÓºT.³3Î8ƒzÁ`Ù4¯§u rÿúë¯Î[`ÐRÓé•8©CÑ š~tÓvæ™gÚ³Ï>ë :è‹SBB‚Ób*©íP¤$ ÇÔê@ANµžs_Ãý0Fi[4 ‹ät[wª{ŸþÏ©GÝ­R:[Ù³\]êtýÓŸnòôÀÎ Zê5-.ƒLù ÝÔî«èñ;,Å< ¨EUÑÿ«À’/_>›1c†éAŒ›÷P¯»ví \-CÓº tªe§þŸ©^-Ë)Y/ *º§Wï]¿—º‡Óßp]Ÿtÿ˜Æ@­0§ ‚šiÑbÝt 蟺»­9õª®T z…»èŸ£ºóiÄjýèÆ/xZu?Ó/ï+uS¦¶À×ÀiµÄ g0ÛÝcå¦Sèàü¬Ozßxã »õÖ[}ɦõåèÍ7ß´æÍ›»›ã‹€òqº­9ÝWµÆËŒÿƒÚaåBT—>÷šø8­ëõ…å›׺î¹ËÀéÀºpÞðïù©§žê¤Qq—nîVnƒ¥˜GÔhØë®»Î7pžz6iuå›.ºÞitj7Щ-üñGðjž×w{7u/§×À·N×;])©Ð}¹‚•Á?º‡sët=Ëhêà½!€,Â|8j†S“m¥Z@­4@ƒœzÕSýè0½IƒSýáÇWTË>?u!tƒžº9Ô\¯àŸÂ… ;u±–wJO^u“¦µœt§ÝW ìÞ¨éb§ŸÌ VŸ?=v»bê)žºÌ©%¦ÝHÍ—lÜ®];gÿ·­sÿØcÙ=÷ÜXÍ4 v½{÷žhÕ©]ÜÖzj “ž>Ó»ƒêáèT®u †%õššÿµéݧì|ß¾}ûlÏž=Î5/©WåvZª•nV÷¨Öºº*©ë!Ýdzê,ð9Ķ€ôìÙÓwï¥VÞóæÍsòa¦V@N9ÕÅmÙ§{;ÝkdfQ°LùñƒŸz˜§{·À]çÜyMÇÂÿQ}Ðý[à{O§:=` V*h©ï%™]tOíæTÕ}›Z_ª1 ß2[>~·OP3~Ï}D¹ò”ýüóÏ'‚œn°S¯º ÌŒÖiÐ ž.„Á?nÐSÿ¬Õ’PëeäGû¤cÍÈÏNÜ´¹87Xé¾f4ïIZìB­«ÖCú⤛´àŸpä“S×÷¶mÛ:_²‚?¿K—.öÒK/™‚§@ +t­sSswMÖ|¸ºveô˜ô /¹ gR×<å¾ ¾¦T']ót] uí UªÎ}X—T°Rõán’g݈롪¸tÓ ¸óú^AA2K`äÈ‘6lØ0ßækÖ¬i³fÍr…¾…i¬PO]ëÜ gà«ò‡+?uwËIË¡œÖîý›ìt_uŸ§ë_ðuLóºw ®U§lB]ËÔx'¸>©: ÝF'Kw:+Ž«­îÝÜàeà+ÁË`-æ3[€ ff ³ý° è&DÀÀ@§;ýË/¿di«—°TlH_ Î9ç_ÐRBå†Ëì'¥jY£§Ðêv\ôÅíý÷ßwZ0/cÈ.µ ìÔÃ= æ]7‚Ùå­Ÿ«‡fz@ç,ó£ê^¬õþˆÖóÄ~#O ¨õêÕË^}õUßa«úÔ©S³ä“rºÎi”ìÀ`§êt ̬Ô-¾ƒ¦"IkuœóTój«‡s"A€ f$œö!,n{5³ws=O«+uv>Õ ËFÈFt³¦îŒ]ø§ÕEó‘2Ú¸ºœ?øàƒ¾`€.Êʤö( €@¤ 蟛ºÎv5­û”ð èºæ^ÿÔÍ1©iZ[†ßž-"€@úÔÂïú믷ŋû6r÷ÝwÛ“O>™é |¢B-uÜuÚÍù¨W-ËÊ” !v3ª«4Ø`¨¥uÅ‹'pÕg9~vž füœkŽôÿ (‘µ{¡ ~*W¤Û-Ûmê¯yåÞŠ‡rúé§{ºÕ»]2Ü—–šV¾¯h+sæÌ±Î;;Ýò÷]­e&Mšd;v ¬fˆj]ËB?u¯wn7mÍkZ­x⩨ ]¨.öºÆ¹K÷U×>M+Í ˆ&å¼lÑ¢…3Xkà~«›ô˜1cìŽ;Šiåþ tºÓº×s»h»¯ºÆÅòõMײÀîóšÖ8å·T ÒXÉ Zr‹Š_qv2•5S Åjñ+ œ]ºÑ tº7ƒÁuZ/T^”àÜ))Í«9¨ücÁ9\’›×ÅʽQss€ºJw>ðU_jâ¡|óÍ7ÖºukgÀŽàãUKNå¢;E° ó /jùâ:ÝW7àü|Í •ã2T®ªWωÀÞú߫ѽum u U¼®R¹×>÷U×:w:ø5^®}ñòûËq"€€_à³Ï>³V­ZÙöíÛ= {ë­·¬eË–žúXQÎe7Èüªë›[§iÝÏßÓ¥e^ibÜkVpÎÍÔÎëzæ*_uM œ×´>‹‚@¼ ÔŒ×3Ïq#ÇJUСC‡ÝoÚ´ic R-W) €™'°`ÁkÖ¬Ù‰PþIåȦ €„G@)–ÔK)xrµ‚š>*@ ÔMãù矷_|ÑéêxÌ_ýµÕ¨QÃ>ýôÓÀj¦@@ˆh (§™ô Ù¸qc[¾|¹3ªuD;‡¤R€ f*¡X bS wïÞ¶páBÓ(€eçÎvõÕW;Ö3 € €@$ ìÝ»×”JIîƒË­·ÞjóæÍsr /cˆV‚šÑzæØo›@ƒ lÍš5V¹reÏ6•¼gϞΓn=õ¦ € € ‰ý»^½z6wî\Ïîi¶G}Ô^zé%”ñÈ0ƒ± @P3Î"Ç€(W®œ­\¹ÒZ´háÛ–ridH†HA@@ ’Ö®]k5kÖ´ÿþ÷¿žÝÊ—/Ÿ½ùæ›6dÈO=3 €@¬ÔŒ•3Éq €@† (`³fͲ{î¹Ç·­>øÀj×®m?üðƒo € €d‡ÀüùóíÊ+¯4µÔ ,Å‹·>úÈn¼ñÆÀj¦@˜ ¨S§“ƒAŒ œrÊ)öÄOØ«¯¾jyóæõlîÛo¿už‚/^¼ØSÏ  € €Y- /[µjeÊ¥X*V¬h«V­²:uêV3ÄœA͘;¥„C [·n¶dÉ+Uª”gs»ví²¦M›Úøñã=õÌ € € GµAƒYß¾}-8ï{ýúõ”JåË—ÏŠ]á3@l ¨™­ü|8D²€º›k¡jÕªyvóðáÃÖ§O»óÎ;}_$=+2ƒ € €@þþûo»þúëíé§ŸömµK—.öá‡ZÑ¢E}˨@bQ€ f,žUŽ Â&pî¹çÚ§Ÿ~jíÚµómsܸqÖ¼ysûóÏ?}˨@@@ œÛ¶m³«®ºÊfΜéÛìC=d¯¿þºåɓǷŒ @ VjÆê™å¸@ l§vš½ûî»öàƒú¶©§áµjÕ² 6ø–Q € €@8Ö­[çävÿÏþãÙœ‚˜S¦L±‡~ØSÏ  5ãá,sŒ a9rبQ£lÚ´i–/_>Ïö¾ÿþ{çK¦F˜¤ € € N… ZݺuíçŸölVÝ̵¬k×®žzf@x ¨/gšãD°ÜtÓMöñÇÛgœáÙÞîÝ»­Y³fö /xê™A@@ ½'N´-ZØž={<›Ð@@+W®tº£{0ƒÄ‘AÍ8:Ù*„G FöÙgŸÙe—]æÙ êׯŸó£i  € €é8vì˜Ý{ï½vûí·[ð÷JµÚ\µj•U¬X1=›æ= €@ÌÔŒ™SÉ €@V œ}öÙöÉ'Ÿ8£O®Zk2€P° ó € €©Ø¿¿uèÐÁþýïûVïØ±£)åQñâÅ}˨@âM€ f¼qŽÂ&pê©§Ú;ï¼cC‡õmsÑ¢E äS¡@@ 9íÛ·[ƒ lÆŒ¾Õ4h¥ò»çÍ›×·Œ @ jÆãYç˜@ l@hĈöæ›o&9€ÐâÅ‹Ãöyl@@ 6Ö¯_ï >¹fÍÏæÎÛ&Ožì Z©ïž@ÿ ¨Éo uÒBgžy¦gk@¨iÓ¦6~üxO=3 € €¸~ø¡3ÂùæÍ›Ý*çµpá¶`ÁëÞ½»§ž@3‚šü €aÐBz²j¡>}úXÿþýíÈ‘#aú46ƒ €  /½ô’]{íµö×_y§\¹rÎç 6ôÔ3ƒ ð5ùM@Â(ÜBÏ=÷œµhÑÂ÷…5ŒϦ@@¢D@#œßwß}Ö«W/ßçµk×vF8¯T©R” »‰d½Aͬ7ç@ ÆÜ„”Ì=¸¨ûP­ZµìÇ ^Ä< € €@œ¸#œ?ñľ#¾ñÆM9ÙK”(á[F €ÀI‚š'-˜BÂ& $î£F²©S§úúî»ïœ$ðÊÁIA@ˆ/äF8àB@_B- :‚š©sb-@ ]:u²¥K—Úgœáyÿüa7¶—_~ÙSÏ  € €@ì $7Âù¤I“ì‘G1F8ÝóÏ‘!€@xj†×“­!€>š5k:U«VͳìСCvÛm·Ù AƒìèÑ£žeÌ € €Ä–@J#œ÷èÑ#¶˜£A2Y€ f&³y@@çœsŽ}úé§Ö¶m[ÈÓO?m­[·¶ÄÄDß2*@@¢_`âĉŒp¸êG" IDATý§‘#@ ¨a'„ÝAØ8í´Óì½÷ÞsF¹ >ʹsçZ:ulÓ¦MÁ‹˜G@ˆRp~ï½÷Úí·ßÎçQzÙmˆ\‚š‘{nØ3ˆAåHzì±ÇìÕW_µ7Þ…„E lÙ²¶råJ'q|ðÕMýú믷}ûö/b@@ ,X`zpýóÏ?{ö®H‘"¶páBëÞ½»§ž@ô ÔL¿ïDÂ"P @›={¶Ý}÷ݾí½ÿþûV¯^=ûõ×_}˨@@ˆñãÇ[Ë–-mÏž=ž*_¾¼ó[ÝÑ) €á ¨>K¶„¤[à”SN±§Ÿ~Ú&NœhêšX¾üòKg¡à.Lë0 € =GµAƒYŸ>}|#œ«ÕæªU«ì‚ .ÈžãS@ ¨Ã'—CCè¸í¶Ûœ®IE‹õìüo¿ýfW]u•½óÎ;žzf@@²O@i‚Úµkç<œÞ‹›nºÉ>úè#+^¼xð"æ@ @P3 ˆl§€º&­^½Ú÷Dÿþývã7ÚÈ‘#Ãùql @@ [·nµúõë[BB‚ïÝC‡µ©S§ZÞ¼y}˨@AÍð8²@ ¬*Tpº*]sÍ5žíj4ôaÆY§NìÀžeÌ € €dÀÚµkοøâ ÏæÉ“ǦL™b#FŒ`„s 3 €@øj†ß”-"€a(\¸°ÍŸ?ßz÷îíÛÞ›o¾i 6´íÛ·û–Q € ysçε+¯¼Ò7£Ò}øá‡Öµk×Ìûp¶Œ pB€ æ &@ÈÈ•+—½øâ‹6vìXË™3§g•t¾FöÕW_yê™A@Èçž{ÎÚ´ic{÷îõ|ÀùçŸïô²Qwt  €@ÖÔÌg>È@ÿþýmΜ9V°`AÏv~þùgÓ¨š³gÏöÔ3ƒ € >#GŽ˜¾éGÓEL=lV`“‚ u5³ÎšOB2$ЬY3[¹r¥wÞyží¨¥@Û¶mí©§žòÔ3ƒ € q}×RëLµÒ .êj®.çêzNAÈZ‚šYëͧ!€¸è¢‹lÍš5N§À =zÔl·Þz«:t(pÓ € €éøõ×_ï]Ê£\†î ¤Á( €Y/@P3ëÍùD@ CÅ‹·>úȺuëæÛÎ+¯¼bMš4±]»vù–Q € zl^³fMÓHç%oÞ¼6mÚ46lX`5Ó €Y,@P3‹Áù8@ jðꫯÚèÑ£-GŽžM.]ºÔùþý÷ß{ê™A@H@BB‚)WæÖ­[=op.ßtÓMžzf@²^€ fÖ›ó‰ €@Øî¿ÿ~›1c†z꩞mþðÃV»vm§E§g3 € €É <ýôÓÖ®];Û·oŸg½J•*ÙêÕ«A= ˜AÈ‚šÙ·"€á¸îºëìÓO?µ³Î:˳ÑÝ»w›š0a‚§ž@@¿ÀáÇ­OŸ>6hÐ S¾òÀÒ¨Q#gÀÆråÊV3 5³ŸFÂ%p饗:]~ùåžMêËyïÞ½íî»ï¶#GŽx–1ƒ € ð{öì±-ZØøñã}$·Ür‹}ðÁV¸paß2*@²O€ föÙóÉ €@XJ—.mË–-³öíÛû¶;fÌkݺµ%&&ú–Q €ijÀæÍ›­N:¶páBƒò–+¹bÌ;·g3 €Ù/@P3ûÏ{€„M þü6}út{ðÁ}Ûœ7ožó…]_Ü) € €æôtÑçëׯ÷p¸ß©”¿œ‚ ™5#ó¼°W €@ºÔª`Ô¨Qöúë¯[Þ¼y=ÛY·nÕ¨QÃÉ åYÀ  € gï¾û®5hÐÀ¶oßî9òR¥JÙÒ¥KCö~ñ¬È  €@¶ ÔÌV~>È<.]ºØâÅ‹­D‰žÙ±c‡5lØÐ¦Nê©g@ˆÇ{Ìn¸áÛ¿¿ç+W®ìŒp®‡À@È ¨Ù燽C2$ üPkÖ¬1}A,4=‡ fÇŽ \Ä4 € ³‡²ž={Ú!C|ßš4ib+V¬°2eÊÄìñs` €@, ÔŒ¥³É± €!Ê–-ë|AoÞ¼¹oéÈ‘#­cÇŽ¾V ¾©@@¢\`÷îÝÖ´iS›4i’ïHz÷îmsçε‚ ú–Q ™5#ó¼°W €@Xô}öìÙÖ¿ßv5°òImÛ¶Í·Œ @@ ~üñG«]»¶-Y²Äs8§œrŠ=õÔSöâ‹/Z®\¹<˘Aˆl‚š‘}~Ø;@ l9sæ´±cdžüÒ®.êʵvíÚ°}B@"A`ùòåV«V-ûþûï=»sÚi§Ù{ï½gôÔ3ƒ 5£ã<±— €@ØÔ½jÞ¼yV¸paÏ6ùå»òÊ+mÖ¬Yžzf@@h˜6mš]}õÕöûï¿{¡téÒ¶lÙ2kÓ¦§ž@è ¨=çŠ=EÂ&иqc[¹r¥•/_޳ͽ{÷Úu×]gO>ù¤§ž@@ Ú†n;w6 XªU«æŒp~Ùe—V3 e5£ì„±» €@¸*Uªä|¡¯_¿¾g“Gµ{î¹Çn½õVÓ¡@@ šÄìÒ¥‹=üðþÝnÙ²¥}òÉ'vöÙgû–Q ]5£ë|±· €@XŠ+f~ø¡uïÞÝ·ÝW^yÅš4ib»víò-£@ˆDu3¿æšklêÔ©¾Ý0`€%$$Øé§Ÿî[F €@ô ÔŒ¾sÆ#€aÈ“'Mž<Ù{ì1Ë‘#‡gÛK—.uëÿïÿóÔ3ƒ €Dš€Ò€@Ÿ~ú©g×4Xâ¸qãl̘1¦ÑÎ) €±!ÀôØ8 aûî»Ïf̘a§žzªg[6lpn–,Yâ©g@ˆ}O©]»¶ýøãž]*P €Íž=Ûúõëç©g@ újFÿ9ä@° h å™:묳<Ûܽ{·5mÚÔ^~ùeO=3 € €@v Lš4Éùž¢ï+åÜsϵåË—[óæÍ«™Fˆ‚š1r"9 @ \ tÍš5V½zuÏ&5hÐm·Ýfƒ6 &DA@²SàØ±c6dÈëÙ³§opÃ+®¸Â±jÕªÙ¹‹|6 €@& ÔÌD\6D«@éÒ¥mÙ²eÖ®];ß!<õÔS¦{÷îõ-£@È ýû÷Û 7Üàäþ<}ùøãíŒ3Î^Ä< €@ ÔŒ¡“É¡ €áPnÍwß}×î¿ÿ~ßfgÍšeW^y¥ýòË/¾eT € €™)°}ûvkРó=%øsî½÷^§>þüÁ‹˜Gˆ1‚š1vB9@ œ }ôèÑöꫯšFI,k×®µ5jØgŸ}XÍ4 € iëÖ­³š5k:©r?$wîÜNîïÇÜôý…‚ û5cÿs„ €@†ºuëf‹-²bÅŠy¶µmÛ6»êª«ìwÞñÔ3ƒ €„[àƒ>°ºuëÚæÍ›=›.\¸°ÍŸ?ßÉ­éYÀ  €@L ÔŒéÓËÁ!€á¨W¯ž“p¿R¥Jž*§Õ7Þh£FòÔ3ƒ €„KàÅ_´–-[Úž={<›,W®œ­\¹Ò®¾újO=3 €±/@P3öÏ1Gˆ„M |ùòÎÃ5×\ãÙ¦F:t¨uíÚÕ<èYÆ  € ^£GÚÝwßm}ûöµ#GŽx6£V›«W¯¶à®ž•˜AˆY‚š1{j90@ sÜ.^½{÷ö}Ào¼á´”عs§o € €@ZöîÝkmÛ¶µ1cÆøÞÖ©S'û裬xñâ¾eT €ćAÍø8Ï% V\¹r™ºé&#gΜžm/_¾ÜIàÿÍ7ßxê™A@R+°eËSê›Ù³gûÞ2lØ0›:uªåÍ›×·Œ @ø ¨?çš#EÂ.0`À›5k–(PÀ³í7Z:uláÂ…žzf@@”¾øâ «Q£†ý÷¿ÿõ¬ª ¦z… >ÜSÏ  €@| ÔŒÏóÎQ#€a¸öÚkM­3Ï=÷\Ï6ÿúë/Ó²^xÁSÏ  € ”@BB‚Õ¯_ß¶nÝêYEÝÌ-Zd;wöÔ3ƒ ¿5ã÷Üsä €@تV­jkÖ¬qºnT ýûõëgýû÷÷%÷\i@@àé§Ÿ¶víÚÙ¾}û<\p­ZµÊ®¼òJO=3 €ñ-@P3¾Ï?G„M T©R¶téRëØ±£o›Ï=÷œµjÕÊ}˨@@ø8|ø°iÂAƒ™F;, 6´•+WZùòå«™F@ÀjòK€ 6|ùòÙ´iÓL üƒËüùó<››7o^Ä< €Ä©€ÒÕ´hÑÂ&L˜à¸å–[lÁ‚V¤Hß2*@ ¨Éï €@XräÈá$ð5*éºuëœÄÿjqAA@øØ´iSÈõ]bôèÑöÊ+¯Xîܹ㉣GHR€ f’4,@Ȉ@§NlÉ’%V²dIÏfvìØa5²7ß|ÓSÏ  €Ä€rdÖ¬YÓ¾ùæÏAçϟߦOŸn÷ß¿§ž@‚j‹0 6ÚµkÛêÕ«­råÊžm8pÀô>|¸§ž@ˆ}-•+S:‹›Ÿ»}ûöÕL#€ R€ fH*@Â%P¶lY[±b…5kÖ̷ɇ~Ø n*ÈIA@Øxä‘GœAƒ¯ýUªT±5kÖ8ijb_#D‡AÍp(² @d ,hsæÌ±;ï¼Ó·žº¡‡j­á[‘ @ˆZþùǺuëfÿú×¿ìØ±cžãЃÏåË—Û¹çžë©g@äj&§Ã2@° ä̙Ӟ}öY7nœi:°(¯V5L Q@@ ¶víÚe7¶)S¦ø¬o߾΃O=¥ € ‚šiÑb]@ ôë×ÏæÎkÁ7/›7o¶ºuëÚüùó3ül@"C`Æ V«V-[¶l™g‡N9å3fŒ=ÿü󾇞™A@ ‚šIÀP yM›6uòl*ßf`Ù³gµjÕÊž{î¹Àj¦@@ >þøc' ©Àf`9ýôÓ-!!Á XÍ4 €i ¨™&.VF—€FD×€uêÔñlòÈ‘#Ö¿»ãŽ;LÓ@ˆ>×^{Íš4ibêzXÎ>ûlûä“O¬eË–ÕL#€ f‚ši&ã  €á(Q¢„-^¼Ø:wîìÛ¤º£µhÑÂÔz“‚ €Ñ! A€4P÷îÝMƒ–êÕ«ÛêÕ«­ZµjÕL#€ .‚šébãM €áÈ›7¯½ñÆ6|øpË‘#‡g³ ,°ÚµkÛÆ=õÌ € €@ä 8pÀ:vìh<òˆoçÚ¶mëäÕ,]º´o €¤G€ fzÔx €@؆ fo¾ù¦å˗ϳío¾ùÆjÖ¬éäàô,`@"F`ÇŽÖ°aC›>}ºoŸ d3f̰SO=Õ·Œ @Ò+@P3½r¼@ ì7Þx£-]ºÔJ•*åÙöÎ;­Q£F6uêTO=3 € ýëׯw@®ZµÊ³3¹rå² &Ø“O>i휂 €@8¸²„S“m!€dX@­25€PÕªU=Û:xð uéÒÅzè!S¾.  €d¿ÀÂ… Aÿ6mÚäÙ™B… Ùüùó­W¯^žzf@—AÍpI²@° œ{î¹¶|ùr»öÚk}Û1b„ÝtÓM¦¼]@È>ñãLJÔï¼óγ•+WÚ5×\“};Ç'#€ļA͘?Å   °Y³fYÿþý}ðöÛo;y»¶oßî[F €d®ÀÑ£GmàÀÖ§O;|ø°çÃ4ÀŸF8¿ð =õÌ € n‚šáe{ €aÈ™3§;Ö^xáS^®À¢¼]ꪾnݺÀj¦@@ öíÛg×]w=óÌ3¾OÑÈç‹/¶%Jø–Q €@¸j†[”í!€„]@-AæÎkÊÏX6oÞìäñRÎ.  €d®À–-[¬^½zNOŠàO:t¨M›6Íòå˼ˆy@2E€ f¦°²Q@p 4iÒÄV¬XaÊÓX­U«VöÜsÏV3 €aøòË/z ,yòä±)S¦˜r^çÈ‘#pÓ €dªAÍLåeã €á¸è¢‹œ<]uëÖõlöÈ‘#NîÍ~ýú™¦) € >å¸V MµÔ ,ÅŠ³E‹Y×®]«™F@ Kr;^²ä“ø@Â$pðàAëÙ³§M:շŦM›ÚôéÓ­`Á‚¾eT €@6 N´Íß~ck¿þ¯}·n³­Z»ÖÞŸ7ïÄ-V–õ½U*]äD ýÊ9xð`Óà@¥bÅŠNj˜ *V3 €@– ÔÌ2j>@ Ü#GŽ´‡zÈ‚ŸÏ©Eçœ9s|]ÕÃýùlR8°õk{ë•qÖcØÄ”WÖw±±#ï°®×Ö´"ÞñÁR÷~ÖB°hTó;ï¼ÓÆïÛ^ƒ ì½÷Þ³"Exáá@ Ëjf5„ o¿ý¶uïÞÝ8àÙ¼F^9s¦3g3 E‰¶xÂ`»ºw*ƒ™¾½ºØÆÎÛú7«ä[Bd®Àž={¬C‡¶páBßõèÑÃ&L˜`¹sçö-£@¬ ¨™•Ú| €@¦¬^½ÚÚ´icÛ·o÷l?oÞ¼6iÒ$ëÔ©“§žÈdÛíÙöem@BÆ?§áˆù6oh3c<åŒ[²R#°iÓ&kÙ²¥­_¿Þ³ºzä‘GlÈ!žzf@È.‚šÙ%Ïç"€„UàçŸvn¾þúkßv‡ f?ü0£²úd¨@ Ž4ŸhRÖî[¾m7ñ‘-ÚÈè>S¶„@(U«V9 wìØáYœ?~g„óöíÛ{ê™A@ ;ý<;õùl@° œ{î¹¶|ùr»öÚk}Û1b„ÓZ3¸‹ºoE*@ ƒ»íÕÉ4öaï|´Ê&M™âù¬üÉôd]2ìjë7í;ÏúÌ €@x4È^Æ -8 YªT)[ºt©Ð ¯7[CȸAÍŒ²@(P €Íš5Ëú÷ïïÛ£·Þz+äÍšoE*@ Ý?¾{¿õx#©·÷²ùßî:žgs¨µoTÓJ—,éY±X©³í‡e“­¡§öäÌÄÎÚ»›½¹sO.e 2" nå;vôå§®R¥Š)ÅK52²yÞ‹ €@¦ÔÌV6Š ]9sæ´±cÇÚóÏ?o¹ry;«ª[nÌÖ­[—]»Çç"»¾°‡;$1(P—ñ¶åÐkV)ù‘’Ë×ën 7ÍO2°9rŠØõãÈÈþùÇlï_ÿú—;v̳Íš5sz@”)SÆSÏ  €‘"@P3RÎû V¾}ûÚܹs­P¡BžínÞ¼ÙêÖ­kóçÏ÷Ô3ƒøî­g,d#Í‹·-¯ßn¥½Ï’ü°\ešÙÛ˹ü«ÑoÛw4Ö iC%iصk—5iÒÄ^{í5ß[u 3gŽ,XзŒ @"E€ f¤œ ö@ ìºY[±b…wÞyžmïÙ³ÇZµjeãÆóÔ3ƒéøÑ&$Ñï|êÛý­t7[¢Þ@K¸ëâïšhoH QO¤E`Æ V«V-ûøã=o;å”Sl̘1Noõ|  € É5#ùì°o €¸è¢‹œ|`uêÔñlëÈ‘#vçwÚwÜa𦠀@ú¿˜kcB½½×;Ö®R¾PKR¨Ëe »ö ¹ÎüBÖS‰@L$n¶ÕŸ|bŸx~VÛÖ0¶PV SM6Ëé§Ÿn 6`À€Àj¦@ˆX‚š{jØ1@p ”(QÂ/^쌀¼MåÞlÙ²¥©õ&Ò'°áÓÅ!ßøø-W[zBšÚXókZ›[M˜ÿ•ÑV3 U1!¸!ÁjÕ¯oõ=?µìµ»Ãr|êj®^ êzXÎ>ûl'ªë!@h ¨-gŠýDÈ@Þ¼ymêÔ©6|øpË‘#‡g[|ð©%ç¦M›<õÌ €@jí«Å !Vlcµ+&?0Pˆ7¬*PÎ5<9{bjÏ c£µ›eˆÈ7änä˲:Õ•HƒuïÞÝ48P`©^½ºÓ£¡ZµjÕL#€ ñ©LÙñÇÁ"€ *aÆYÅŠ­GvàÀÉÐÈúõë­fÍš6sæL«]»vª¶ÅJ p\àÀ[*¦i öãÆÍVþx#èC! vìØá©U äå–ܹ÷ض%î\Àë’öÓñ¦š% Ô1‰I èZ×­[7›>}ºo¶mÛ:üN=õTß2*@ˆt‚š‘~†Ø?@° tìØÑÊ–-kmÚ´±ÀÀЦ5jd“&M²›nº)ìŸËˆICÛö$¬Gõ²I,ñWÿöÛoÎߥ‰¿&ƒÖü¤Ðu­uëÖNKÌàC4h=ñĦÁ( €D£W°hß2*@ˆfºŸGóÙcß@Â. üšj©ÑÑ‹ºñ©;ß /¼XÍ4Xn Ùpò«Ïm[Èh'd N-[¶X½zõŽ·tö4‡jJ¥B@3œâl @ RjFÊ™`?@"F råʦÑb5Bz`Q·ô~ýúÙ€<]Ô×a¸ÈWÖ®lê¨ì»B-HuÝÄݶ{·÷'ñÀáT¿Ÿˆu/¿üòx 皦×À¢–ÏS¦L±#FXŽ91 €@ÌÔŒ™SÉ €„S@ùý–,Ybê¶\ž}öYkݺµ%&Ò -؆ùx(`ÕꄌjÚË3Ö¦äÀ×v[Á¢V´¨÷§àˆeéß&ïD †Ô2S-4ÕR3°+VÌ-Zd]»v ¬f@˜ ¨s§”B—€ºë©ÛÞ°aÃ|›œ7ožÕ­[×~þùgß2*ˆ7ŠWÕ yÈKî{˾KgÃÊÍ 'Ù!¶Úë²2!j©B ¾4Ðu×]gÊ¥X*V¬h«V­r‚õL#€ ‹ ‹g•cB›€ºí >Üý–[n±ƒžØö×_m—W¿ÔîîÙÉvlùÓÖo-óÇñ¥ÅþÿÏ:ß.ªZÙ.»¸¦]Qý"+S"dæÁÛch(Rýz»Ëî³1¾cÏ̼Ã&´/ï[’lÅáïìÑ6þ­™]l-êÔLÖŽ…1-pøða»óÎ;müøñ¾ãlР½÷Þ{V¤Hß2*@ˆE‚š±xV9&@° têÔÉ<¨mÛ¶¶sçÉQ›wþ¾Ëx|\Ÿ·Ä—4ìeS‡ßkê¥1À¸ ¦ˆD\åíöÉ]lLÛʉÚYãV[ûò©yy«Mèq¡M uœm¥ùúІºØЀu:t°… ú¶G6aÂË;·o €ĪÝÏcõÌr\ €a¨S§Ž­^8ÅJJ禗L´Îõ+Ø%wO³“aÑtn‹·!a•:Þk]BîÓW֡µ6ë»Ý!—VØú‰Ý}ÉYÖÛuV{穎¡GZÜÓÄ À®­?›®AÁMõ&xôÑGmÒ¤I4cð¼sH €É ÔLÞ‡¥ €œ8¼u±õ¼´¹mÿëDUº&¾ÓÙJ¶@`3]z¼)bòUµQó‡$±{K¬Í…E­ë쓯7Ûî#˜ÿ}|¤óügÕ·1_…ÞDñ«ÒÐÚ3ô6¨E ZžêÖØÖ¯_ïÙýüùóÛôéÓmȤþî<«3ƒ €@Ì ä8v¼ÄÜQq@ €„]`³¼¤¬ K"à’ž»xÈ|ûüÑfFgÚôèñžÈ8l‹G6±«‡-Iy÷Î;ÏlãÆ”×Ó ÇÚŽÅý­DêÖf-¢V ñë VðâÞ)î©R¥L£Ÿ×¨Q#ÅuY@X ¥f¬žYŽ @ ¬ßM{4é€fÿå´l™26wÆd›üø]IîÇW£›Ûß%&¹œDŸ@.k4t¡-º#ºçxRÐ|Ü~˜G@ÓcÇL\ T©RÅV¯^M@3® 8x@ øïÂpA@¯ÀámBçÃ–ØØe[lÎìYV €wdóM›7[çžwÛÙ—µ°c»¾² ½›tçz<³À¸3¼"¹¬Þí¯Û¦eãUž±ÒfD‚íZ|¯¥zŒ¡Œ}ïF âš6mjË—/·2ÇœQ@ˆw‚šñþÀñ#€¤(pàøÈÍcB¬ÕkòWÖ¿^ikÑ¢…s“yî¹çzÖúóÏ?­yóæ6aú ºx“á™ø†}CcM3±!P¦Þí¶vÏ6yH›´Pû,á«6shk+’öwó¢V`÷_û’Ü÷>}úØÜ¹s­`Á‚I®Ã@âI€ fÍ;ÄÏgœaK—.µ:øÖæ™glàÄå¾z³%öÙ/4Õ CU ä+QÉZw¿×^_¼ÖŽÚoû÷ï·YÇ[œ–¢E ÙíZ[Õò3]˜ŽeË–Y­Zµì‡ÍÛCpƒN}BÖS‰ €@< ÔŒç³Ï±#€dHà¾q ¶;h ùóç··ß~Û|ðÁ %fsýÇ.ºðB[¹r¥mÚ´éÄOïKè`ëâ"vrå³|ùòYZœÅî9æÈÒ$0eÊkܸ±íÚµ+Mïce@â]€ f¼ÿpü €) œS¥zèuÞèa nÕ65´Ì‘#‡5Êt£š'OÏ{¿ùö[k×®íܹÓèAƒ=”ÈçY…@88vì˜ :ÔºuëfÿüóO1‡ˆ €@xj†×“­!€Ä @‘J—$9ŠóW{XÙ‚9ìî'¦Ù?î´é1»víj}ô‘/^Ü£òÛo¿YýúõmÆŒžzf@âCàÀvÓM79Àâãˆ9J@Â/@P3ü¦l@ Ær•nb÷uIþ ÆÜ×ÙªW(iùsç°¶·?`¦}`_ÿ¸Õ.¹¼–3€P¥J•<PNAåÞ=z´§ž@ØPKýF9©J‚ôŽ›¯ ®b@’ ¨™ Õ €œÈg^øÜRˆkžX=aâhëݹ¹]\á,+˜?·Ý:ðqë>h”Õ®wÕ‰u4¡®‡<ð€õèу®‡f@Øøæ›o¬fÍšNnåÀ#Ì•+—?ÞÜ>°ši@HF€ f28,B@à„@Ëlò–eÖëDEê'–$L´ûoko+?ùجô…¾7¾úê«Î üñ‡o €±!°hÑ"«S§ŽmܸÑs@… ²¹sçÚí·ßî©g@’ ¨™¼K@8!«t=›pl­zg¬5ù¤ïí7ÜpƒéVÉ’%}˨@@Ô ÔLk!€ ´@®Vº|UkÖév{æõ  g›‹“~Ÿ»¤pYwÊy=tèÝvÛmvï½÷šZùP@¢Kà·ß~³úõëÛÌ™3};þàƒÚ[o½eùòåó-£@R/@P3õV¬‰ €@ꃜ3×Úþ]›lþä–dxóÏ*Ö U;ß¶ÿýï;­|öíÛç[F €@d ¬]»ÖjÔ¨aŸþ¹góäÉcnÔ¨Q–#GÏ2f@@ í5ÓnÆ;@âJà°%ï®ná'Í›-y|EÊX³îCmíŽeºsúkûÐKvÿý÷û6¤V>õêÕ³-[¶ø–Q YÅüÊ+¯´_ýÕ³cE‹µ… Z·nÝ<õÌ € €@új¦ßŽw"€Ä@âׯXÁã7£º!=ùÓÆVîNÇÁ—¨g/Ìòjµ3zôh›sîºté?†x_C«R®È‰zµæY½zµU¬XñD&Ü‘t•k“‚ ý‰‰‰ÖªU+7nœogn¾ùfûðÃVþ¾…T € €@†jf˜ €Ä´@¾3¬zˆ~– {È>ØšÖ#ßms' ñ¦ó­ôɘ¦³¼B… N랆 zÖ×hèýÖ[o5’NAÈ_~ùÅÉŸ9þ|Ï(ÈÈ‘#íµ×^ó¥ñ¬È  €dH€ f†øx3 €@ì ”¶=C ï³ÄšŸu»­Þ™Ú!ƒíÿ±w'p:UÿÇ¿ö¥ì-–´YRв“hlË %k’h³„$Ù¢BY³oY³”¥2¶0¶Iò“BÈ’ìÙ—Á¾·ÿ<=çyfÆ,÷™y–Ïyý¼æžsï=÷Ü÷U¿|s¾Ë?l(­¦Ç Ö¥¾IëÞž#GY±b…´nÝÚíä„ äù矷’¹¤@À£[·nµö:Þ±c‡ñœŒ3ʬY³¤W¯^F;@°_€ ¦ý¦ôˆ àg%Zõˆq ºÈ8)wOIùpòrÙwôLŒѯœ?*›•©²JÍ>«b”™ÑþÙÛµ1]ºtòå—_Ê!C$ujóÿ¶W­Z%åÊ•“={öÄz?'@ìX°`•ôçØ±cFÇwß}·„……I“&MŒv* € àæ…xæAôŠ €€Ï d)+ƒ&…Ê¢§Yî>­jÊ¿‹Ê£öß -'Ý•+êUOÉþŸÃeÑ*s«A±+¥Y‘Œ®ÍnõwÞyÇJ4*/^tœÿý÷ß­Àfô²'8@°]@ÿ‚©{÷îrëÖ-£ïG}T¾ýö[y衇Œö„VbNN'’5lK¨%×#€ø¿@ª¨ÿC6ÿÙÿß™7D@ 'dl½{¤Ã¢DÜÛ-ÅúÉm½åüY5""BêÖ­+GŽ1zÕãÆÍžNAÀtk…5j8†zß}÷‰îQHAÀ"##åÕW_µfÎ»Ž¯Zµj2oÞ<É–-›ë)ê € àAs›D× €ø¶ÀÝÒ~ÞjÓ[„ŽIp@SŸ\¢D +3ºþt.š4¨U«VÒ£G·DÎ×qŒ 0³gÏZxÝ Äµ´mÛV4QMWê €x^€ ¦çy €€¿¤Í+í§]–ðý$†„èñ|Ë ¼h‡\ŸÖ>A34;Ï—/Ÿ¬]»VêÕ«çÜl4HBBBäÒ¥Knçh@H˜Àþýû¥B… ²råJãFÝãX—¢ë ù´i0ÝÞè…  €$E€åçIÑã^@À¸rF~ùy“lX³V~\.Ó£’öÄV‚‚C¥\…ŠR­re)]²ˆd±éÏ¿7oÞ´övûøãÝ]ªT)Y¼x±äÉ“Çí xƒËϽá+0†¸6lØ`ýåщ'ŒË2gÎ,Ó§O—úõëíT@@ yj&¯7OCðW¨ýÖ®\¾,—£~F—´i3I¦L£fñD·xæç„ ¬½Þt ºsÑ= —,Y"O>ù¤s3Çx…AM¯ø "¯¾úÊÚ£øêÕ«ÆúEúFúG@HY–Ÿ§¬?OGð¨ÈeÆ,Y$GŽŽ_Y²x> ©|­[· é³ËáÇ¥bÅŠÖÀÛ9Fˆ] ÿþÒ¬Y3q h+VÌÚÓ˜€fìvœA@ 9j&§6ÏB@ÀCAAA. 4žpñâEk‰ä'Ÿ|b´SA0®]»&-[¶”Þ½{»%\«U«–üøã’?~ó&j € b5SŒž#€ `¯@áÂ…­YD•£öît.º÷æ[o½%íÚµ“H§åñÎ×pŒ²ÀéÓ§å¹çž“iÓ¦¹1têÔÉšñž%j6>@¼G€ ¦÷| F‚ €@’ræÌ)ß}÷µœkgãÇ—5jÈÙ³g]OQGV`Ïž=R®\9Y»v­a&M1b„Œ9Rô˜‚ €Þ%@PÓ»¾£A@ ÉéÓ§—I“&ÉÀ%UªTF+W®”òåË˾}ûŒv* €@ h SšØt.wÞy§,Z´H^ýuçfŽ@@À‹jzÑÇ`( €Ø)н{w™7oždΜÙèv÷îÝR¶lYY·nÑN$©S§ZKÎué¹s¹ï¾û¬ý3k×®íÜÌ1 €x™AM/û @;4h kÖ¬‘ù¤Ñ­þa^ÿPÿÞ{ï¹eú5.¤‚ø‰À•+W¤iÓ¦Ò¿·7ªW¯žµ¯¦ë_¹]H €x…AM¯ø @Ï D/§¬[·®Ûƒ  7–Ë—/»£ð'NH•*UdöìÙn¯ôÖ[oÉüùóݶëp»@ð‚š^ó) €ž¸ãŽ;ä믿–7ß|ÓíAº÷fåÊ•åØ±cnçh@|]à×_µöÞ¸q£ñ*iÓ¦•1cÆÈСC%ujþhdàPA@ÀËøn/ÿ@ @;ôíÆ “±cÇŠþaÞ¹lÙ²EÊ”)#?ÿü³s3Ç €€O ¬\¹R*T¨ û÷ï7Þ#[¶lòí·ßJûöív* € à5}ã;1J@lh×®,_¾\²gÏnô{èÐ!©X±¢|óÍ7F;@À¾üòK©Q£†œ={Öþƒ>(ëׯ—êÕ«íT@@Àwjúηb¤ €Ø*PµjUÑ¥˜ 0ú½pá‚ËgŸ}f´SA|E@3œwëÖMÚ¶m+‘‘‘ư˖-+›6m’¢E‹íT@@À·júÖ÷b´ €Ø*P¤Hë÷Ï<óŒÑïÍ›7¥k×®Ò¡C·€€q!@ÀË4éYHHˆ 2Ämd5’Õ«WË=÷ÜãvŽ@ð-‚š¾õ½- €¶ äÊ•K~øáiÙ²¥[ߺ÷fÍš5Ý–nº]H àšìL“ž-X°Àm4=zô°2Ÿg̘Ñí  € à{5}ï›1b@lHŸ>½L™2E>úè#I•*•Ñ¿<Ë—//üñ‡ÑNð&;wZÎ5é™sI—.Lœ8Q àöï7çë8F@ßHµßÌ-ß2£E@O Ì›7Ïšµ©K8Ë]wÝ%_ýµ•Hȹc† &“'ONÄùóçåàÁƒŽ{Ò¦M+ºBBË’%KD“¾P[`ÅŠÒ¸qc9w#G™?¾íT@@À÷júþ7ä @°]@g:Õ­[Wt)§sÑšM¸E‹Î͸ÀÖ­[¥téÒÉ®P¼xqÙ¾}{²?—z—ÀèÑ£åõ×_—7nÓ$hß~û­<òÈ#F;@ð–ŸûÇwä-@°U@T›7o 9—k×®Y³8{õê%,öp– ìãR¥J¥H&é—_~9°áüí5¡Ù›o¾);vt h>ýôÓN@3Àðú €þ-@PÓ¿¿/o‡ €@¢òçÏ/?þø£Ô©SÇ­Ý{³I“&âºDÝíBF ¹ŒºObóæÍÆ—5.^¼(õë×—O?ýÔ<UkÖ¬™¬\¹RtË  €ø¯AMÿý¶¼ €I¸óÎ;eÑ¢EÒµkW·¾æÎkev]¢îv! !*iÒ¤I¶w­U«–Ü}÷ÝÉö<ä=G•J•*ÉâÅ‹ÝÕ§O™1c†dÈÁí  € à_5ýë{ò6 €Ø.:ujùä“Od̘1¢É\œ‹î½Y¦LÙ±c‡s3Ç(;wn©Q£F²½yrÏ M¶ãAq üüóÏV†óˆˆã:ÝïwÚ´iòÁíT@@Àjúï·åÍ@°U }ûö²lÙ2Éž=»Ñï¡C‡D÷¯ûæ›oŒv*'\F¡Y»víÀð7Ö¤?+V”ǹrå’~øAt¶0@G€ fà|kÞ@$ T«VM6nÜ(šUع\¸pA‚ƒƒcÜßÎù:Žý[ nݺ’3gN¿¤î™¨{jRG`äȑֿcôß5Î¥P¡BVB gžyƹ™c@‚šð‘yE@ì(R¤HŒA„èLÄ:tÈÈH;I_>" K€›6mêñÑ&׌P¿¸­À7¤sçÎÖ/=v.º¯¦f8/X° s3Ç €  5äCóš €Ø) Y…u¹gË–-ݺ;v¬Ô¬YSΞ=ëvŽÿðtÀ±xñâòä“Oú?$o(Ñ3Àu–¦kÑ÷|ÿý÷É23ØõÙÔ@@À;jzÇw` €øœ€ÎÊ›2eŠ|ôÑG’*U*cüð,_¾¼ìÛ·Ïh§âÿ¥J•’¢E‹zìE=4õØÀé8Aºo¦îŸ©ûh:ýwM¿~ý¬÷迃( € ¸5÷Ûóæ €Ø"гgO™3gŽdÊ”Éèo÷îÝR®\9Y·nÑNÅÿ<xÔ}4›7oîÿ€þ†šÙ¼lÙ²¢™ÎK† dæÌ™Ò»woçfŽ@@ @jè‡çµ@°S $$DÖ¬Y#yòä1º=yò¤hr¡©S§íTü[@³P§I“Æö—¬U«–hæsŠÿ ,^¼Xt¯Ì£G/©ß=,,L^|ñE£  €®AÍÀýö¼9 €¶ ”.]Z6mÚ$ºç¡s¹víš¼ôÒKòÞ{ïÉ­[·œOqì§¹sç–5jØþvžšjû@é0QŸ~ú©Ô¯__.^¼hÜœ¬B… F;@l‚šýýy{@lÈŸ?¿üøãò /¸õ;`Àiܸ±\¾|Ùí þ'`wRgêÕ®]Ûÿ x#Ѭæ;v”7ß|SnÞ¼iˆÉÆåá‡6Ú© € €5ù=€ €¶ Üyç²páB+@áÚñ¼yó¤råÊò×_¹ž¢îguëÖµ53u³fÍD÷Ô¤ø—Àùóç¥N:2zôh·kÕª•¬X±B²gÏîvŽ@@€ &¿@@ÀvÔ©S˰aÃdìØ±’6mZ£ÿ-[¶H™2eÜ’€QñyÍLÝ´iSÛÞÃ¶ ŒŽ-pèÐ!yúé§eùòåFšá\gvOœ8‘@¶!C@œREímÅæVÎ"#€ €€­+W®M$töìY£_Ñ©™ŒcZªn\HÅg¶nÝ*º×jR‹îÓº}ûö¤vÃý^$ ¿7ôŸýcÇŽ£Ê˜1£L™2ÅÚªÂ8A@p`¦¦ U@°W jÕª. 4:¾pá‚Ô«WÏšÑiœ â7¥J•’¢E‹&ù}˜¥™dB¯ê@·§Ðm(\š÷Üs¬ZµŠ€¦W}-ƒ €€÷ ÔôÞoÃÈ@ðGyÄ lVªTÉx'M òöÛoK»víäúõëÆ9*þ!Ô€¤î£Ù¼ysÿÀà-¬¿Ähذ¡\ºtÉÐxì±ÇdÓ¦MR®\9£  € ›AÍØdhG@[råÊ%ßÿ½Ää?~¼Ô¨QCΜ9cë3é,åBCC%Mš4‰H­ZµD3ŸS|[ 22R:tè`ý%†k†ójժɆ äÁôí—dô € ¬5“•›‡!€ ØšY·nÔ«WÏmlƒ–˜2%»]Hƒ× $4@Y¼xqyòÉ'½þ½ »ÀСCEƒ–®΋-*áááÖìM÷»hA@&@P3a^\ €¸ãŽ;dþüùòÎ;ï¸õ®3¾žyæ9räˆÛ9|G T©R¢A­ø–„AãÛ/×yN :ùþsìšá\·”X¿~=Î=ÇOÏ €œAÍ€ûä¼0 €Þ):uj2dˆL˜0Ámňˆ)S¦ŒlÛ¶Í;Ϩâ%ß@¥î£Ù¼yóxõÉEÞ! Î5©SLÎÛ¶m+K—.%ùw|*F €€ßÔô›OÉ‹ € ທæwß}ç–XæèÑ£R©R%Y°`¼h¾Ehh¨¤I“æ¶o^«V-ÑÌç߈Îp®ÿÜ:Íp®[HŒ7Ž çÎ0#€ €€-5ma¤@°S@ŒèÞ{… 6ºÕ=út¯¾AƒíT|C wîÜR£FÛ6¾3:oÛx\ ® çsçΕwß}×ãcà € ˜5ó»óÖ €x½@¡B…¬Àf•*UŒ±j6ô=zH«V­äÚµkÆ9*Þ/p»€¥ÎÐÔeÌïÐýn+W®c†óÕ«W[I¾¼ÿ-! €øªAM_ýrŒ@È‘#‡,_¾\Ú´iãö¶“'OM>rêÔ)·s4x¯@ݺuݶpm³fÍÜöTu>ϱw 6Ìš5}ùòec@š jÓ¦MÖ¸Æ * € €€Í5m¥;@°W@“ÆŒ?^†*šLȹ¬]»VÊ–-+»wïvnæØ‹Ò§O/M›6u„·›ÉëœHè ço¿ýv¬Îxàd A@ÀHµ„ëV`ðö € à+K–,ÉwáÂcÈÙ³gÝ¿¯ZµjF;ïغu«”.]ÚmpÅ‹—íÛ·»µÓàšá¼qãÆ²bÅ ·i†óQ£F‘ÈM†@ð”€9ÝÁSO¡_@@À^xA~üñGÉŸ?¿ÑÛÙ³g¥fÍš2fÌ£Šw ”*UJt™²ka–¦«ˆ÷Ô5ÃyÅŠÝšd8÷žoÄH@4‚šöÅy_@|\@gómÞ¼Ùm¦Ÿ.‹}õÕW¥K—.rãÆ Kÿ¾kS·hÞ¼¹ÿ¿¸¾¡Î¬Õm~ùåcô™2e²fH“áÜ`¡‚ €É$@P3™ y  €Ø';wnY³f4jÔÈ­ÓáÇ‹&£9þ¼Û9¼G 44ÔXª¬Ï5ó9Å».\k†óU«V‘áÜ»>£A@  jÔçæe@ð%6{öléÕ«—ÛK-]ºTž~úi9xð Û9¼C@ÓÏ?ÿ¼c0®37'8H1O?ýÔ Z^ºtÉÃc=&áááÖìMã@@ jB@{t?¿?üP¦OŸ.2d0:×¥²eÊ”±‚/Æ *^#ÈÔšµjÕòšqú@tû†Ž;Ê›o¾é–á\“qmذA|ðÁ@gâý@@ …j¦ðàñ € tÝ‹1,,ÌmùòñãÇ%((HfÍš•ô‡ÐƒíºM@Μ9­Œöº§&%åtÛMÈ5zôh·Á´nÝZ–-[&Ù²es;G € Ü5“[œç!€ €€G*T¨`%rͪ}åÊ+höþûïË­[·<òl:Mœ@úôé¥iÓ¦=c3q½p—]‡¶2œkàÒ¹èŒèÊ—_~iìƒê| Ç € €@r ¤Šú{þë>¹Õy €xLàܹsÒ¤IY¾|¹Û3´}òäÉ’1cF·s4¤ŒÀÑ£G%oÞ¼)ópžêˆˆˆ°fhê÷p.úÏÊÔ©ScLÊå|Ç € €@r ÔLnqž‡ €Ð=»ví*#GŽt{–î³¹hÑ"ÑD5Y²d‰5cöâÅ‹‡îuºxñb)W®œÑN@ð–Ÿ{ÃW`  € `«@š4idĈòÅ_¸-—ݼy³•@è矶õ™t–p“'OʨQ£¬ sÂïæ;ôŸ“zõê‰k@³H‘"²iÓ&šv Ó €xD€™ša¥S@ðï¾ûN7n,ÿüó1¤;ï¼SfΜi-¹5NPI¿ÿþÛ ˜8pÀz^§NbœY›,ƒ À‡Ü¼ySºt飹&×Z°`dÏž=exe@ðfjúÊ—bœ € (êÕ«ËÆåá‡6î¿pá‚5CmذaF;Ï èöº¿it@SŸøùçŸ[‰h<ÿtž ³2ƒƒƒc hjÒ¦+VÐä·  €x½AM¯ÿD @’*ðè£ZKiŸyæ£+­ööÛoKÛ¶måúõëÆ9*žPó5kÖ¸= sçβ}ûv·vìÐD@úÏÁ7ß|ctªÎû÷ï/“&M’téÒç¨ € €Þ(Àòsoü*Œ @<"píÚ5i×®L™2Å­ÿgŸ}VæÏŸ/9sæt;Gƒ}º¬¹aƱv¨3j·mÛÆLÁX…bÇŽR»vm9|ø°ÑI† ¬`fÓ¦Mv* € €€7 0SÓ›¿cC@[Ò§O/“'O–ŠÎLs.«W¯¶öxüý÷ß›9¶Q@muys\å?þ-ZÈ­[·âºŒs X¶l™T¬XÑ- ™+W.Y¹r¥•ý<]r9 € ¢5S”Ÿ‡#€ €@JtïÞÝš•™9sfãñ{öì±›䡨+ û86hÐ@Ο?otuêÔ²|ùryî¹çm$L@÷Œ}÷Ýw%¦dX•*U’¯¿þšíFÊÕ € àE5½èc0@H~Mœ¢MÝÇѵtéÒE†*iÒ¤q=E=Ÿ|ò‰¼õÖ[ÆÅ‹·²ÒgÊ”Éj_µj•ÀÔÌèÑå®»î <çÏŸ?º‰Ÿñ¸|ù²„††ŠîaêZš7o.'NÝŽ‚ €øªËÏ}õË1n@°E oÞ¼²víÚ“×|öÙgVÀÓuÙ®-N6nÜ(ºÜß¹dÏžÝ ¶E4õ\PP|üñÇΗÉÉ“'%$$D4Á%þÿý·h⫘š}úô‘éÓ§ÐŒ?'W"€ €€— ÔôÒð@@ ùto͹sçJÏž=ݺtéRkÏǸ£!n]NÞ¨Q#¹~ýºãBMÐ4mÚ4Ñ,箥k×®R¿~}£yóæÍòÚk¯mTbصk—µ/¬º9•9eÊö*uFá@|Z€ ¦O> €v h°í£>²n2d0ºÝ¹s§”-[V6lØ`´S‰]@—‘¿øâ‹nû•êLÁ:uêÄz£f§/T¨qþË/¿”©S§mþPùüóÏ寿þ²íU4Á•&ýq ÀçÈ‘CV¬X!-[¶´íYt„ €¤´AÍ”þ<@¼J@÷! “»ï¾Û—Î:¬R¥Šµt×8‘ÄŠî5©™Áý­h‚Ý'Ó¹T«VM4¨WÉš5«µlÚ53}‡dÇŽqÝêSç49•i€×Žï?iÒ$©Y³¦œ={ÖpбŒ×åè@@ÀŸjúÓ×ä]@@À *ˆ.ß}üñÇþ®^½*-Z´^½zÉ­[·Œs‰©ôïß_4‰ÎàÁƒs»×Þ³páB뽜¨É~4û¹f5¿]Q÷qãÆ—iâ› È?ÿüc´ûj¥oß¾¢ï¤‰7n,Î ’òNúû°wïÞòÊ+¯ËüµråÊIxx¸)R$!]r- € àd?÷‰ÏÄ @@ %4A.¡Ö}5]KÆ ­%Ñ®3 ]¯‹­>þ|k¿I JiœݻwËý÷ßÛå>Ó¾gÏ)Uª”œ;wÎ1fÝÏqݺuR¦LG[|tMMÖä\4S½Mu»_-¿þú«<ñÄF Sg¢Ž=:A¯¤Av fΜ9Óí>M°¤{—f̘Ñí  € €€?¤‰ú[â¾þð"¼ € `·€î­©AM¸iÓ&£{ Lé>…º|8K–,ƹÛU~úé'yá…3ë"##­½5åËåÒ¥KòÜsÏÉ¡C‡Œ×3fŒõ¾Fc<*U«V•ï¿ÿ^>ì¸ú·ß~³f{V®\ÙÑækmÛ¶ýýã\¶nÝj·+V¬èÜëñéÓ§¥víÚòí·ßº]£ËÚÇŽ+éÒ¥s;G € à/ÌÔô—/É{ € €€G4HÔ©S'ѤsÉ›7¯,^¼XJ–,éÜëñ±cǬ‹®?½aýúõV¦õXoöòºéŒ3ŒQêrý¤$ùÑ€f‰%äĉŽ~Ó¤Ic”5èékE÷·Ôd>1}ªKô›4iÓiGÛÞ½{¥V­Z¢³bKÚ´iå‹/¾víÚ97sŒ €ø¥AM¿ü¬¼ €xB@élÊ3gÎÝët Üé’ô¸Š.Ö„-ºÏaL¥téÒÖŒP_\Z­ËÄu¹¸s)V¬˜õ®º¼>)EÝ«W¯n,×ÖDNºå}÷Ý—”®“ý^‰©ÁëØŠÎþá‡$¶› –“'O]èlá¹sçÊóÏ?o´SA@üUàö;µûë›ó^ € €@4û¹$ *dܩˮ5j$}ô‘ÑîZiݺu¬M½vË–-Ö>ˆ®÷y{]MtɳsÉ–-›•Å<©MíSÝ äܽ5sSÌ×®]3Ú½¹¢3zã hêØ5ð­AK]fïZfÏž-:;Õ5 ©I˜~üñGš®`Ô@@À¯˜©éן——C@OèLM ¨é B×Ò¼ys™0a‚èŒ;ç2pà@éÙ³§sSŒÇºœý÷ß—;î¸#ÆóÞÖ¨ËÂuy¸ó¾—:ÓT“ùhR»Š&Tª_¿¾,Z´ÈèR—ZëÖÞ^4»¹Î\ݵkW¼†úðÃËÆåž{î±®× ®þþQçòÔSOÉ7ß|#úû†‚ €’35ékó® € `‹@Ž9¬=cÚ»P÷” ’¿ÿþÛñ, Ľ÷Þ{Žz\G•ÁƒÇu‰×œÓ@&Rrhêàzõêek@SûÔ@é”)S¤`Á‚Zu”qãÆÉôéÓuo=˜ž(¿üò‹”+WNtÉtÑ=Mu üO<ÝäU?/_¾lmYpäÈ‘K÷uN’ÝÁk¯½&Ç÷˜sôsø‰ €x«AMoý2Œ @|F`éÒ¥Ò´iS9wîœ1f ¶é/×=‹b©h3gÎŒålÊ7ëìS]î¼Z“öhò Äy²èÌLͪî\tŸSÝ“T÷òô¶¢3o»wïn˰R§Nm’]“2ÙÒ9 € €>$@PÓ‡>CE@ïøßÿþg-Þ¿¿mƒÔL×åË—·­?»:Ú»w¯”*UJþùçG—éÓ§—µk×JÙ²emž}l hê˜4áPݺueß¾}v ‘~@@Ÿøï¿}ö8 € à;wî”æÍ›ËÍ›7mÐáÇEͤtÑ¥õšåݹdÍšUæÏŸo%CrnOÎãjÕªÉÀG?~\5j$ׯ_7Ú“³¢YÚ]Àv<_3¡×ªUKN:eGwô €ø¬ËÏ}öÓ1p@ð& 6•)SF8`û°4ƒúo¿ý&š]<%Š.ï.Q¢„èroç¢Iy49OJÍÀ,K–,1†Ò¡C=z´Ñ–\•:uêÈ·ß~ë±Ç=ýôÓòÃ?HÆŒ=ö :F@¼Y€™šÞüu €ø„€î£©És<ÐTMÎÓ­[·±ÐY§ºœÛ5 ùÞ{ïyE@SQR¥J%º÷¨fw.cÆŒ‘™3g:7%˱f÷d@S_býúõ¢û›j@—‚ €¢35ñ«óÎ € `«@ëÖ­eâĉ¶öéÚ™î6lØìIb4˜:dÈc8AAAòý÷ß‹&åñ¦òóÏ?Kùòå­½'£Ç¥³\uéüã?ÝäñŸåÊ•³žéñE=àwÞqû>Éñ\ž €¤´35Sú ð|@ðiO>ùÄãMÒy]»vMÖ™yºœûã?6¾O¾|ù䫯¾òº€¦²xñ⢳3‹ÎrÕY´çÎsnöرî1ªAÔä*ú}F•\ã9 € €€×0SÓk>A@_Xºt©¼ð ¶&ºÁôéÓ­dD·».©ç5Ãv©R¥äìÙ³Ž®Ò¥K'kÖ¬±fC:½ðàõ×_—Ï?ÿÜYýúõeÁ‚F›Ý•ÈÈH)Z´¨üþûïvwg:cváÂ…¢ûxR@@@`¦f |iÞ@lصk—µ×¤™Îã3ÀîÝ»[{lÆçÚÄ^sùòekv£s@Sû1b„×4uœÃ† “Ò¥Kë¡£hR#×,鎓6L˜0!Ùš:ô7nÈ‹/¾(Û¶m³éMè@ð~‚šÞÿ! €x™À©S§¬šÉµ¤Ùùõ>ì¶$Üù¼ǯ¾úªèþ”Î¥Y³f¢ÙÄ}¡¤OŸ^æÍ›'wÝu—1ÜÞ½{ËêÕ«6»*ºÌ½oß¾vu—à~4=räÈßÇ  € €€¯ ÔôÕ/Ǹ@@ EtV\HHˆüñÇ)ò|}¨&î9räˆGžÿÅ_È”)SŒ¾5ÉθqãŒ6o¯ÜÿýVæóÔ©ÿûÏ]ývMš4‘£GÚ>|Ý[õرc¶÷{»yäkêŸþ)“'O¾ÝåœG@üF€=5ýæSò" € \{÷î•Y³fY¿~ýõ×äz¬ñœÐÐP™6mšÑ–ÔÊ–-[¤bÅŠríÚ5GWY³fm/\¸°£Í— $=zô0†\¡BkƦîjG9yò¤(P Ù’eÏžÝ Î¾ôÒK>±€Æô €¸ Ôt¡Ž €$@@—ik€S3‚Û,B]n­Ë®uùµsÑ$9š,'ЊºÖ©SG–.]j¼z§NdäÈ‘F[tåóÏ?—×_=ºêø©AÐ5jX³2uyyúôéç8@@°_€ ¦ý¦ôˆ €xLàÆÖLB ^.X°ÀÈ\®½ÿþûe÷îÝ’)S&c šˆH—[ë²kç¢Éq4IN –3gÎXÞýû÷ºÄ¼qãÆF›f¯/P €?~ÜÑþøã[ûd†††Š._§ € €$AÍäqæ) € €€íº„|ùòåÖ Î%K–È¥K—¬g|øá‡Ò«W/ãyºÌZ—[;—J•*‰fñŽm©µóµþ|¬ûhêÒ}Í]î¼óNkQ]j]úöí+|ðäʕ˱¼\g¾R@@’_€ fò›óD@@ÀvEp•— IDAT¸hÑ"+À¹aÃÙ¹s§äÍ›×zŽ.¯ÖeÖºÜ:ºäÉ“ÇJŠÃìÂE&Nœ(­[·Žæ±~)RÄÚkTœ§OŸ]–bY²¼Ü ¢‚ €$»AÍd'ç € €€g4§Ëªu©´.«ÖÙ„Z.:3S“áhRÊ:t±cÇþ×uÔ¨Q#Ñ}L) € €Þ%@PÓ»¾£A@lÐåÔO?ý´DDD}Ž1"Æd7ÆEXÑåüêµmÛ6ãí‡ "ï¼óŽÑF@@ ej¦¬?OG@<& Ë©uYµsÑä7š‡³À¬™­:Û5ºèÌÖ°°0yæ™g¢›ø‰ € Â5Søðx@@ÀºŒZ—S;Mz³yófÑ=")± hò¥Úµk‹fŒ.¹sç¶ö ÕŸ@@”HòC` € €v èòé7ÞxÃèR™ ,  i¨Ä\©Q£†•åÜùì±cÇDg¹FFF:7sŒ € B5SžÇ"€ €žÐeÓš¡[÷‡t.º ]³ySâ'гgOÑà¦sY·n¼õÖ[ÎM#€ €¤AÍ‚ç± € €€Ý·nÝ’ÐÐPÑ}!‹&¹Ñ,Þ”ø ¤NZf̘!>ø q“&Yš;w®ÑF@@ ùØS3ùÍy" € àÞ½{Kÿþý¾5¹&¹Ñd7”„ èR~͈î<óU—òoÙ²…™¯ çä@@À6‚š¶QÒ € r$·ñœý—_~)mÛ¶5@Ò%ƒƒ  € ì,?Ovrˆ €Ø+ ËÍ›7ondëÖ™™sæÌ²u'ݺM›6nAÍ_ýUZ·nôÎé@@ Q5ÅÆM € €€wè²hM ¤ ‚œËСCE—žSìн4Ÿzê)£3 6Ìh£‚ € <,?Ogž‚ €xD@—Eëòhç¢I4àF±W`ÿþýR²dI9s挣c»jÕ*©X±¢£@@Ï Ôô¼1O@@<"0~üxi×®Ñw‘"E¬$6šÌ†b¿ÀÒ¥K¥N:¢™æ£KžøÀè[“Ôh²MZCI>­[·Z ‚4}tÉ’%‹µ§é#<ÝÄO@@Ôô*]"€ €žX±b…螎7oÞtt¯ÉitMMVCI~qãÆIûöí?öØc²yóf¹ãŽ;Œv* € €ö °üÜ>KzB@<&pðàAiÞ¼¹ÐÔ™™³gÏ& é1õÛw¬Ùç[·nm\¸k×.iÓ¦ÑF@@À^‚šözÒ € `»€.o ‘S§N}2D*W®l´QI~Ï?ÿ\ž|òIãÁ_}õ•è›@@ϰüÜ3®ôŠ €Ø& ³þ&L˜`ô§ÙÏçÍ›g´QI9?þøCJ–,)gÏžu "]ºt²zõj©P¡‚£@@{jÚãH/ € €€G&Ož,­Zµ2úÖ$4[¶lMJCño¾ùFêÖ­+š¡>ºäÍ›W"""D÷>¥ € €Ø'Àòsû,é @°U`ûöíÒ±cG£OM>3þ|š†ŠwTêÔ©#}úô1sôèQyñÅåÆF;@@¤ ÔLšw#€ €Ðe̺ÄüòåËFÿ_~ù¥-ZÔh£â=Ô|î¹çŒéônݺmT@@’&@P3i~Ü €Ø. Ë—[´h!ºO£séÚµ«5ëϹcïH:µÌœ9Sî¿ÿ~c`Æ “¯¿þÚh£‚ € xöÔL¼w"€ €èׯŸ¼ÿþûFßšlFgüiòŠ÷ èž§+V”k×®9›5kVk/ÔÂ… ;Ú8@@HœAÍĹq € àï¿ÿ^jÔ¨!7oÞtôÏ=÷ÈO?ý$št†â;ãÇ—víÚ~üñÇ%<<\toT  € €@âX~žx;îD@løóÏ?¥Y³fF@3Mš42{ölš¶J'OgmÛ¶•–-[Û¹s§[ Ó¸€  € €@¼jÆ‹‰‹@@Ï è2åFÉÉ“' |¸ÑF@@ a,?O˜W#€ €Ðeʺ\Ù¹Ô¯__,XàÜı ìÛ·OJ•*%šÑ>ºèÞ¨kÖ¬‘òåËG7ñ@@ 5€Å¥ € €€'¦N*/½ô’ѵ&“Ñd3š\†âûK–,‘àà`ÑÌöÑ%_¾|!ºg*@@ a,?O˜W#€ €¶ üüóÏÒ¡C£ÏÌ™3Ëüùó h*¾]yá…¤W¯^ÆK9rDš6m*7nÜ0Ú© € €Ü^€ æí¸@ðˆÀ?ÿü# 6”Ë—/ýë2tÍ’Mñ/¾}ûJµjÕŒ— “=zmT@@n/ÀòóÛq € `»€.C®W¯ž,^¼Øè»sçÎ$‘1Dü«¢‰ J”(!‡r¼XªT©¬½Sõ÷@@ ~5ãçÄU € €€­ýû÷—Þ½{}jÒM£Id(þ+°iÓ&©T©’hÆûè’-[6kÕB… E7ñ@@ ‚šqàp @ð„À?ü Ï?ÿ¼Ü¼yÓѽ&‹Ñ¤1š<†âÿcÇŽuÛKõ‰'žððpÑ=U) € €q °§fÜ>œE@l8|ø°4kÖÌh¦I“FfÍšE@ÓViïî¬}ûöÒ¢E c¿üò‹h;@@àö5ooÄ € €€-ºÜ8$$DNœ8aô7pà@©R¥ŠÑFÅÿÆŒ#ÅŠ3^túôé2räH£  € €€»ËÏÝMhA@<"СCÑeÇÎE“Ã,X°@4Y %ðöîÝ+¥J•’þùÇñòéÓ§—µk×JÙ²em € €˜5Mj € €€Gtžërã‚ ÊÖ­[E“ÄPW`Ñ¢ER¿~}¹uë–á¾ûî³öX½ûî»m € €ü'Àòóÿ,8B@<"Ó^‰š FghÐô¹Ou,=zô0Ƭ{¯6mÚTnܸa´SA@øW€ &¿@@ è²â È¥K—Œ§è2tÍvMA@úõë綯êÊ•+å½÷Þ@@ –ŸÇ€B € `‡€.'Öe꼨¹têÔ‰d0Î [š@ªD‰¢³4£‹îµºpáB©[·nt?@@¢jòÛ@ðÀ€ÜfÚiòM£É`(¸ „‡‡K¥J•äúõëŽSºEÁ¶mÛ¤@Ž6@@@ ¨è¿x@ðˆ@XX˜T¯^ÝØQ“¾DDDˆ&¡ ›ÀèÑ£¥cÇŽÆébÅŠ‰<3eÊd´SA@U€=5õËóÞ € à1#GŽÈ‹/¾h4Ó¤I#³fÍ" é1uÿéøÕW_•æÍ›/´cÇéСƒÑF@d‚šüõyw@°]@— ‡„„ˆîè\>úè#©ZµªsÇÄ*0nÜ8yüñÇóS§N•Q£FmT@@@`ùy ~yÞ@<" Ë†uù°sÑ$/šìE“¾Pˆ¯Àž={¤T©RrîÜ9Ç-ºëºuë¤L™2Ž6@@@ ¨ˆ_wF@Ìœ9ÓmÙ°&wÑ$/šì…‚@B¾þúkiРq[þüù­½Yïºë.£  € H,?¤¯Í»"€ €€ÇvîÜ)mÛ¶5úפ. ,  i¨PIˆ@ýúõ¥{÷îÆ-‡’fÍšÉÍ›7v* € €@ Ô ¤¯Í»"€ €€Gty°Î¦»té’Ñÿ˜1cD³VSHŠ@ÿþý%((Èèâûï¿—^½zmT@@@`ùy }mÞ@<" M]&ì\toÍ/¾øÂ¹‰c-püøq)Q¢„9rÄчîѺxñb©S§Ž£@@ P˜©(_š÷D@ 4È- ©I\>ýôS<Ïï;½!-¢‚u°süª7YÎûý‹Çý‚÷ÜsÌ™3GÒ¥Kç¸ðÖ­[Ò¢E ùã?m € €"@P3P¾4ï‰ €¶ ¬^½Úm °&o™7ožh–jŠMç®J¤M]ùr7*Tp –Ÿ={V6l(—/_öåWcì € €@‚j&˜Œ@@±–7iÒDnܸáàH:µhtÍNM±W ­½Ýùlo¯½öš4mÚÔÿöíÛåÕW_5Ú¨ € €þ.@PÓß¿0ï‡ €¶ \¿~]7n,ºÏ¡sÑ„.Ï=÷œsÇØ.0~üx)Z´¨Ñï”)SDSQ@@@ ¨(_š÷D@ÛÞ|óMÙ°aƒÑŸ&kéÞ½»ÑFOÜqDz`ÁÉ’%‹Ñ}—.]dË–-F@@À_júë—å½@@À#³fÍ’Ï?ÿÜèûᇖiÓ¦Y‰mŒT.p=æ[ØSÓt)\¸°Lž<Ùh¼zõª„„„È©S§Œv* € €€? °=‘?~UÞ @<"ð¿ÿýOÚ¶mkô)S&™?¾dÏžÝh÷™Jäy9xðˆ\Ž &¦K—Iræ{@rdŒß诜9!Ÿ>%çþ¹$×5)·$Óe–\¹rɽ÷Ü-ó_š™´#—’5ƒdriJhõÊù3rúôi9§/UÒeÊ*9sæ”Yâù² }`2\ß Ay÷ÝweÈ!ާýùçŸÒ¬Y3Y¶l™è¯@@À_RÝŠ*þúr¼ € `—Àùóç¥téÒòÛo¿]Nš4I^~ùe£Í;*W$lD?™½ÿ²äŠ ¼^¾|J2 •~íŸ+ÖyB Áo|f wpøiy·l£Í¹yþ ü0¶Ì˜ÚM¦¯r>ã~Ü®Ÿ¼òJ#©^¶ˆÄ:<¸|„ X±ß§œÚ%Ç-rë¬]’K[£²|_ÎT\Þé÷²ä½MÐôʉ}òÝ·3eâÔ>²(¶±…Êà–Í¥Ip5y Çm:tUÊ7h¢ªªU«Êš5kŒÁ¼÷Þ{¢{¼R@@ ¨é¯_–÷B@[tY¯ÎÈt.:tÑ£G;7yÑñy[%«tpæ —sa%ÓÑuÒ*_%™Ãh‡o;-KÄÔ´‚ ½¢‚ ãb¸ëvMÁ2fÙ i_£HŒFŒ­'%;¸2c¼Øj ’ðsaRÖÜRÒéòó²|ÄÛR3c í7W÷¹m°ÔéA^qø÷ßK‰%äèÑ£Žñ¤J•J–,Y"µk×v´q€ €ø“kRüékò. € à]ÞëÐÔY›Ÿ}fÎrôÈÓÐi†¬.7ç»K®œX'Õc hº\ý_5ò |XòžD4µ›EÒ¡æ£ÒbrÄ}:¥“X£“NW9f•©ÿ{Á•}òaT07¡M½yzŸF’/]{ÙtÆùYÞ|ï½÷Êœ9s¢¶øOEcµhÑBöïßïý/À@@DÔL· € €@àè²^]Êë\tÏÈyóæI† œ›½ÿøÈ2i[­’8OތϠÃúÔ•>;b¿²XPGý*V,ökôÌôV%eòîón]¿zÄ­-î†sÖön×D4{–-(}ú‚FGã¤\Îöò‹û0«¼­òôÓO˰aÃŒa9sF6l(W®\1Ú© € €þ @PÓ¾"ï€ €Ðå¼Mš4‘ÈÈÿrokò•™3gÊý÷ßï‘gz¬S 8®š.‹b Nû7(©ÏΚÙÜWòÊîÉRu`L7‰ô›±VŽG%Þù9,LFýúùç[rùÜqÙ±v®t ŽùMZ}ºBþÓü÷š‡j••+WÊÚµá²vÙpq†Ê\=·vmÔ¯•²2|”w›Üy^&¿XPbªô³L~=r:jKΨ=9Ï–#{wÈ¢1ýbx–Žiœ !'b~¯m}ýõ׭߯Îüé§Ÿ¤cÇŽÎM#€ €~!Àžš~ñy @°[àúõë5ûpýúõFך|Åuæ¦q×T¢‚|õ²J«8¶ª ê1I†wj(Oäu‹:Þâ—±-¤X×Ý7ÛÉÚ#_È3qfꉔ°!!Rµ›ëBeÇåiòDl™ƒ"‘銙û}O’Ë _Ž3ÙÐÑå=%_ÍŽq;‚ËŽIïÊ1lj]µ´~l«Åí£NöXv@ÔxÀÑ•/\¸pAÊ–-+»ví2†;vìXi×®ÑF@ðefjúò×cì € à1·ß~Û- ©IWzöìé±g&gÇÃW°/ÇД¨9•GºÏÒœôëðÛ4õMÒJ•wGI?·i—çåÒõ8Þ42†“ç®Æ¼ÜÜÑÍAù<¦€fè9¾0Ž€¦5̤ý´#1ŒSdà˜åâc«ÐåÎ;ï´öÍ’Å TwîÜY¶mÛæã@ðu‚š¾þ? €Ø.0{öl1b„ÑïC=$Ó¦MÍ*íë¥ß²#Ò¹J|f ž—ƒá®AÍ.òLÁئYºÊd’˜vý/ëõ‰«ŸY7[ÜçhKøˆörw¼ºÌ+=/r_оh¶l÷±¤AúºEŠ‘‰'o~õêUkÍÓ§OíT@@_ ¨é«_Žq#€ €€GtÙn›6mŒ¾3fÌhÍ~Ë‘#¶5ÌÆåÞ] #]jäç3ÉA¡*¡¡ú+X‚{<-ùÌm7ãè+­dËÇi[N]‘•Ó»¹õ<¦”MÀçJû@uéêÚÍ*Y½Ó×vÖü÷BBBDg;—ƒJóæÍåæÍ›ÎÍ#€ €>)ïÿ$õÉ·cÐ € €@Ο?oÍfÓ} ˨Q£ä©§žrnòÙãÁo5sar\¯’Qjôž&5âº$®s'¶ËIÊDWçÿ.ò€|?Îõº éÜ „kãmê剪QQÍéæþ¡«~:$½Ÿ‰ß|ÏÛ< ÙO8P6oÞl%XŠ~øòåË¥oß¾Ò¯_¿è&~"€ €>)ÀLMŸül @$5ƒ¢vÕ\evüéÄõòò§5ÌÆ8kçeQ¿V2Ý%ûD»Oâ¼ËWO¦M›VæÌ™còe}øá‡R®\9eùê‡eÜ €35ècóª €ºÀ'Ÿ|brœ4AÊÈ‘#›8ŽHyMN¹J¬Ú/§ã› üÊ/Ò¯R7×WÏ×m9¤ZÇ.nìø¬›,?êÖkÙˆIÒÊ% )Qs@+?yw¬÷øú‰šºŸ&ÅH›ïayÈlŠª}&3ׯ#RxeŸ|X«XÔÕ6·)£f¿ê¼"¡fSTm‡Ô¬ù¡ŒGöüîyÒ°än=ëÒAJfqkö«†J•*‰.Ew.§OŸ¶]½zÕ¹™c@@À«jzÕç`0 € à ]^«ÉQ"#ÿ‹pi†sÍtþàƒz⑾ßgÚl15EúT­)“7Å2‹ïÊ Ù´x„TÉTPú¸,ÿäœ\üï3ü×ìtä¶æª2zùn‰5÷OÆ'ä½íœzøÿÃ}äÁ’=eÓA·ÿÿ‚ó²ifOÉúh#qn°ŒëSCþ›ÃèÞ½¿´hÒ ãu¶mÛ&:u2Ú¨ € €Þ$**Ã!)½é‹0@°U@™U«V•µk×ý¾ÿþûÒ·o_£Í¿*çer½¬.KªƒeÛ¹…R"ž³wÏl/6yWÌbÁ]¤kèóR gz9slü¼f™ôç¶~;fÒ .2©e9~.´ê\WŒÞW"¤E¦’2=æ;ÿ¿µì¸Lõ ôqÆKÈqP?YÔ1jgÊF±õ$á礬d”Å]KJðg;âxRpÔ} ]ÜZö×,Ñ8ºt:«Ëhu9­s?~¼´iÓÆ¹‰ãœ?ú‹¬X²P-Û&GÎE¥$ϪÿË*÷>ô˜”(]I*?[VŠäÍc‘göÉÒeëäôµô’>½È9óKáG‹HÁîŽ#Ï9ºï€;yB.FÝwÇ™%s¶¨çåË'92jÄôvåŠìÛ´Z¾]´BÂÂÃdÿ©èësÉC哇{BJ—+%%J•Ž·[8úâ€ûyýúu ’õë×ïÞ¯_?éÝ»·ÑF@H)‚š)%Ïs@@ÀcM›6•¯¾úÊè_“hÒ Ü^àèÑ£R¢D ùûï¿ë´Ë–-“êÕ«;Ú8@@RJ€ fJÉó\@ðˆÀðáÃÝ–Ïj’Mv¢IO( ?5kÖHÕªUåÆŽråÊ%rÿý÷;Ú8@@RB€=5SBg"€ €€Gt¹ì;ï¼cô#GkMš n+P¹re4hqÝ©S§$$$D®^) •q)@@À£5=ÊKç € \ºL¶qãÆ¢ûF—T©RÉ´iÓäᇎnâ'$@àí·ß– wlÙ²E:wîl´QA@’[€ fr‹ó<@°]@—Ǿøâ‹¢û:—^½zIíÚµ›8F Lš4I .lÜ5nÜ8™2eŠÑF@HNöÔLNmž… €Ð%çC‡5úÖd&šÔD“›P@ iÿûßÿ¤lÙ²rñâEGG™2e’7JñâÅm € €É%@P3¹¤y €xD`Á‚Ò°aC£oMb¢ÉL4© ì˜5k–4kÖÌè¬@²uëVÉž=»ÑN@ð´S<-Lÿ € à1ßÿ]ZµjeôŸ!C+1Mƒ… IhÚ´©Û^šûöí“–-[Ê­[·’Ü? € €  ¨™-®E@¯Ðe°šÀäܹsƘFŒ!¥K—6Ú¨ €€=ºÍCùòåΖ,Y" 0Ú¨ € €ž`ù¹§…é@<" Ë`u9¬sy饗dòäÉÎM#€€ÍGŽ‘%JÈñãÇ=ëÞµ+V¬jÕª9Ú8@@<)@PÓ“ºô €9r¤Û2XMV¢IK4y <+°jÕ*yî¹çäÆŽÝu×]Ö^¶ùóçw´q€ €xJ€åçž’¥_@ðˆ€.ßzë-£oMR2þ|š† <'ä¶äüäÉ“"×®]ó܃é@ø‚šüV@@ŸÐå®5’ëׯ;Æœ*U*™:uªhf $ŸÀ»ï¾+õêÕ3¸yófyã7Œ6* € €€'jzB•>@@Àv]æúâ‹/Šîçç\zöì)/¼ð‚sÇ LS¦L‘B… O3fŒL›6Íh£‚ €Ø-Àžšv‹Ò €xD [·n2dÈ£oMJ¢ÉI4I RF`çÎR¶lY¹té’cº·mxx¸+VÌÑÆ € `§AM;5é @<"°páB©_¿¾Ñ·&#‰ˆˆMNBA”˜1c†„††ƒ(X° lݺU²eËf´SA@ì`ZƒŠô €سg¼ôÒKFÿéÓ§—yóæÐ4T¨ rÍ›7—N:Ø»w¯´lÙRnݺe´SA@ì ¨i‡"} € €€Gt9kÆ åܹsFÿÇ—2eÊmT@ e† &åÊ•3±xñb4hÑF@°C€åçv(Ò €xD@—³ê²VçÒ¢E +Û¹sÇ à‡–%Jȉ'J“&µ÷mÕªUm € €I ¨™TAîG@|ñÅnËY5éˆ&Ñ$$ðN°°0©^½ºÜ¸qÃ1À»ï¾ÛÚ÷¾ûîs´q€ €$E€åçIÑã^@ðˆ€.ß|óM£oM62þ|š† ¼O J•*Ò¿c`:s³Q£FríÚ5£  € X‚š‰•ã>@ðˆ@LÁT©RYKÎ5›2¼_ [·nl Tÿ²¢k×®F@@ ±5+Ç} € `»€.WmÚ´©è¾|Î¥{÷îR·n]ç&Ž@À‹ô/"¦L™"®1jÔ(·}r½ø5 €x±{jzñÇah €š@=Ü2%kr‘+Vˆ&¡ €€o ìØ±CÊ—//—.]r =’ÍDT–ÀÔ©SãË_þr|ôÑGuëÞ½{fíÜ6Ú¨.Ï  @ )Aͦ„\'@€Š"ðÈ#Ä®»î‹/®+¿M›6ñ«_ý*’MDT¦ÀÏþóøóŸÿœê\²Cú}÷ÝíÛ·OåK @€ÔlHF> P4>ø ¶Ùf›H^Gu @ 8å”S⢋.‚A€(H@P³ &7 @€-)pà 7ĨQ£Z²He PæŸùÌgâwÞ‰¶míeZæC©ù @ Uü‹¡U˜UB€ÔHÖÐs @ ¾À:ë¬# YÄ9 Ш€™šò¸H€Kà‚ .ˆ«¯¾:æÏŸ_¬*”[ÂÉF1o¿ýv] ;vìÉL=Gu $ËQ\rÉ%ñ…/|¡:ôšh¶€ f³É<@€ °²É.Ø{î¹g]1›nºiÌž=».í„ @€@c^?oLÇ5 @€¢,[¶,Unv:uQ‚ @€@–€ fˆ$ @€ @€¥- ¨YÚã£u @€ @€d jfH @€ @€ PÚ‚š¥=>ZG€ @€ @€@–€ fˆ$ @€ @€¥- ¨YÚã£u @€ @€d jfH @€ @€ PÚ‚š¥=>ZG€ @€ @€@–€ fˆ$ @€ @€¥- ¨YÚã£u @€ @€d jfH @€ @€ PÚ‚š¥=>ZG€ @€ @€@–€ fˆ$ @€ @€¥- ¨YÚã£u @€ @€d jfH @€ @€ PÚ‚š¥=>ZG€ @€ @€@–€ fˆ$ @€ @€¥- ¨YÚã£u @€ @€d jfH @€ @€ PÚ‚š¥=>ZG€ @€ @€@–€ fˆ$ @€ @€¥- ¨YÚã£u @€ @€d jfH @€ @€ PÚ‚š¥=>ZG€ @€ @€@–€ fˆ$ @€ @€¥- ¨YÚã£u @€ @€d jfH @€ @€ PÚ‚š¥=>ZG€ @€ @€@–€ fˆ$ @€ @€¥- ¨YÚã£u @€ @€d jfH @€ @€ PÚ‚š¥=>ZG€ @€ @€@–€ fˆ$ @€ @€¥- ¨YÚã£u @€ @€d jfH @€ @€ PÚ‚š¥=>ZG€ @€ @€@–€ fˆ$ @€ @€¥- ¨YÚã£u @€ @€d jfH @€ @€ PÚ‚š¥=>ZG€ @€ @€@–€ fˆ$ @€ @€¥- ¨YÚã£u @€ @€d jfH @€ @€ PÚ‚š¥=>ZG€ @€ @€@–€ fˆ$ @€ @€¥- ¨YÚã£u @€ @€d jfH @€ @€ PÚ‚š¥=>ZG€ @€ @€@–€ fˆ$ @€ @€¥- ¨YÚã£u @€ @€d jfH @€ @€ PÚ‚š¥=>ZG€ @€ @€@–€ fˆ$ @€ @€¥- ¨YÚã£u @€ @€d jfH @€ @€ PÚ‚š¥=>ZG€ @€ @€@–€ fˆ$ @€ @€¥- ¨YÚã£u @€ @€d jfH @€ @€ PÚ‚š¥=>ZG€ @€ @€@–€ fˆ$ @€ @€¥- ¨YÚã£u @€ @€d jfH @€ @€ PÚ‚š¥=>ZG€ @€ @€@–€ fˆ$ @€ @€¥- ¨YÚã£u @€ @€d jfH @€ @€ PÚ‚š¥=>ZG€ @€ @€@–€ fˆ$ @€ @€¥- ¨YÚã£u @€ @€d jfH @€ @€ PÚ‚š¥=>ZG€ @€ @€@–€ fˆ$ @€ @€¥- ¨YÚã£u @€ @€d jfH @€ @€ PÚ‚š¥=>ZG€ @€ @€@–€ fˆ$ @€ @€¥- ¨YÚã£u @€ @€d jfH @€ @€ PÚ‚š¥=>ZG€ @€ @€@–€ fˆ$ @€ @€¥- ¨YÚã£u @€ @€d jfH @€ @€ PÚ‚š¥=>ZG€ @€ @€@–€ fˆ$ @€ @€¥- ¨YÚã£u @€ @€d jfH @€ @€ PÚ‚š¥=>ZG€ @€ @€@–€ fˆ$ @€ @€¥- ¨YÚã£u @€ @€d jfH @€ @€ PÚ‚š¥=>ZG€ @€ @€@–€ fˆ$ @€ @€¥- ¨YÚã£u @€ @€d jfH @€ @€ PÚ‚š¥=>ZG€ @€ @€@–@»¬´$ @€@Å ,… —fõª]tê”ýOÁ¥1÷ùÇãÁéÇO>oPûÈ:±åvÛÅn»íƒ¶Y¯6³ï¥ñÖËÏÅã>O=ñ¯˜õöÛŸÞ·Fl¼åæÑ{à Øéóýx¶¡ìBÛßÐóéü¥ FŽF§N‘­‘~JŠ @ ”üÛ­”FC[ @€Ex~ÂaÑû°ë²JÿwRl×å“ìY÷ÿ!Î9vt\÷TÖmÙÉÝ¿w^vz Û6;¸¹4ž¿çº8ÿÄÚ.£¦Ì¿~tvÉ ¦ŸþÕ7¢ßØÉY×ÓíϺØpráñÕ·ìÒ.{|^¿ÝÚ ?ç  @€@I xý¼¤†Cc @€-/°dQe¶Oòߊ?œø¥ØjHÍäö{_é×=¾ý‡§“Ô'ÇÒ—ãW·Þ{ÐLzèÏW~úp!_ŸF^ ¹µ€{Z¶´*t  @€@‹ ˜©Ù⤠$@€”ƒÀúÑ~ÉÜøÕEÎ$ÈšÿëÑý¢Ï–ÿãÍ‹ó¶ß,Înj†geº… @€@¡‚š…J¹ PQ¿Ž~»ü:b%‚‘' Þ%îÙý©˜¼eÔ’~\{â› @€@‚š ¹… P‘y‚‘»9-¾9rHl¹~çXðΜxô/¿³}oݯ h6pé¨Ó.ŠÝ÷‹Ç+ÿz2&pvÎ:–õ ]¸TX³¾‡s @€Æ5÷q• P»ŸÓ~ó½ØuËôf9ÃFß9ñÖÙ{d4¿LùŒ¹hr\tüˆØ°S½ìa#âÐã¿OÜüãØ~ÿ³ë]X~úá¢eËÎ @€4!`£ &€\&@€TºÀî§MŽy÷\Ьíw—mFÄÓ.ªM6ðÝ/®žþf\{JV@³îîN±Ý7Ίç®?ª.§þÉ‹Ç{õ3œ @€hD@P³— @€/0æê˜|ÁˆHÏÏÌíõz»îßÉÍ®ËùÎä[ãÐAëÕ¥:ÙfßccL¾‹Ë>Š¥ùòå @€È# ¨™E @ Z®?ãÀèRPg7ŠòF#“‡O‹ïŒØ´ R¢Ófñ•|å,Zÿ2U³0Cw @€„ ¦ @€@µ Œ_Ù¦þâ—AtŠmwÉŒ8êúoF!Íš Æ£×寧}þl¹ @€r5sHd @€ªCà¨vkòµóB$¶Ûv£BnûôžN±ÍÈfÜîV @€y5ó È"@€Tƒ@󂑈,iäšK @€Š ¨YTE @€ÊA`Ñ’–Øšgdì°ua«rÖšt¬=ñM€ @`5WÎc @€røÌíʽ ÚO€ P¥‚šU:ðºM€T»À˜è·YófXV†˜íˆ*cõ‚¨vAÍjÿ Ð @ JÞ‹¨Âµ0—Î{-žªÒ×m @€@% jVÒhê  @€@£¾ñ² f£B. @€ÊC@P³<ÆI+  @€ZBÀÛç-¡¨  @€À*Ô\åC  @€­&P…¯Ü·š­Š @€­( ¨ÙŠØª"@€Xµ³ýûªm€Ú  @€ZD@P³EB€ к5;·7ûUò…ñô×µn3ÕF€ PAÍ¢°*” @ ¸OÅÿ½¶°yU,|!îüuóq7 @€@i j–æ¸h @€@£5A͹ï5zGöÅYº"ÌÓÌV‘&@€”§€ fyŽ›V @€ªG cþ®^çÓù/äË}ïá8i´išùhä @€ÊQ@P³GM›  @€U$°Ùö»äííS?:1n~yiÞkéÌwbÂ1ƒcr:SŠ @ Œ5Ëxð4 P ]6#óvô©Ø³ÿ‡ßj8°ùÞÜ'â⃻ÅaÞ;Ï+(“ P®‚šå:rÚM€¨.ýã€1 uö×1¸{û8øôŸÇ”ûŸˆçgÍŠY³žû§ü!Îûö—â3m߯ÐìW[LÝIm†o @€rhWNÕV @€jè_;åêˆëk°ó×ý脸îG ^®»ðT¿Ý£ßS÷ÆSOÕe9!@€(C35ËpÐ4™ Pm]¶=4¦_–ÿ%ôÂ-v»ï¼1ÎjpÖgá%¹“ @`Õ j®Zµ @€ZAོu,É›ÛüÌæ–³¨*š*gÐñׯäÓvoàé&²û}'¦½ö×øÒ†âíüMà2 @€@) j–Òhh  @ í»lž§Ô.Ñ>OncYí;®‘çrM9Í*¨}tY?O1Ñ6Öh²œ.1â‚¿ÆSwŽ1¯‰¹{\tÓôøï“—Æ®~²òRš¶Æ IDAT¾ú;†U™òŠ< @€@© ´ù¸æ(ÕÆi @€@e Üu×]1lذºÎm¼ñÆ1gΜºtÓ'Kã­—Ÿ‹Ç}<}âÉø×œÿ|òÈ{5Ó0k¢–ŸÝv»Øa·ÝbçAÛD—¦ s @€@™ ø“t™ ˜æ @€$íb½M·aÉçD @€ªMÀëçÕ6âúK€ @€ @ Ì5Ë|5Ÿ @€ @€@µ jVÛˆë/ @€ @€2Ô,óÔ| @€ @€Õ& ¨Ym#®¿ @€ @€Ê\@P³ÌPó  @€ @€T›€ fµ¸þ @€ @€(sAÍ2@Í'@€ @€ Pm‚šÕ6âúK€ @€ @ Ì5Ë|5Ÿ @€ @€@µ jVÛˆë/ @€ @€2Ô,óÔ| @€ @€Õ& ¨Ym#®¿ @€ @€Ê\@P³ÌPó  @€ @€T›€ fµ¸þ @€ @€(sAÍ2@Í'@€ @€ Pm‚šÕ6âúK€ @€ @ Ì5Ë|5Ÿ @€ @€@µ jVÛˆë/ @€ @€2Ô,óÔ| @€ @€Õ& ¨Ym#®¿ @€ @€Ê\@P³ÌPó  @€ @€T›€ fµ¸þ @€ @€(sAÍ2@Í'@€ @€ Pm‚šÕ6âúK€ @€ @ Ì5Ë|5Ÿ @€ @€@µ jVÛˆë/ @€ @€2Ô,óÔ| @€ @€Õ& ¨Ym#®¿ @€ @€Ê\@P³ÌPó  @€ @€T›€ fµ¸þ @€ @€(sAÍ2@Í'@€ @€ Pm‚šÕ6âúK€ @€ @ Ì5Ë|5Ÿ @€ @€@µ jVÛˆë/ @€ @€2Ô,óÔ| @€ @€Õ& ¨Ym#®¿ @€ @€Ê\ ]™·_ó  @€V±Àm·ÝÿøÇ?šÕŠ_|1uÿÿûß8÷ÜsSy…$Ž8âˆØh£ ¹Õ= @€$Ðæãš£‚ú£+ @€­,póÍ7ÇþûïßʵF¬·ÞzñÚk¯Eûöí[½n @€¬Z¯Ÿ¯Zµ @€Ê^`ĈÑ­[·VïÇA$ Ùêê*$@€”†€ fiŒƒV @€ÊV C‡1jÔ¨Voÿ¡‡Úêuª @ 45Kc´‚ PÖ­`ìß¿ 0 ¬Í4ž @`Å5WÜΓ @€Ÿ 80úôéÓj­DmµŽ©ˆ @  AÍ‚˜ÜD€ Д@k“FÝTs\'@€¨`AÍ \]#@€´¦À˜1cbµÕV+z•{ï½wfçó¢W¤ @€’Ô,Ù¡Ñ0 @€@y ôèÑ#† VôF·ÖŒÐ¢wD @€+, ¨¹Ât$@€È(vÀq½õÖ‹áÇgW+M€ Pe‚šU6àºK€(¦Àˆ#¢[·nE«â ƒŠdMM @€@u jV÷øë= @ E:tè£FjÑ2ëVì™ õërN€ Pº‚š¥;6ZF€(Kbû÷ï (K&@€hYAÍ–õT @ ê}úôiq‡bK[¼¡ $@€(º€ fщU@€¨>–@&ëhŽ=ºú õ˜ @ ¯€ f^™ @€+#0f̘XmµÕV¦ˆÔ³{ï½w$;Ÿ; @€$‚š~ @€Z\ G1lذ+·¥g~¶XÃD€ °J5W »J  @€•/ÐRÈd†æðáÃ+L  @€ Ô,˜Ê @€Í1bDtëÖ­9ä½÷ ƒŠdMM @€ZAÍZ ß @€-*СC‡5jÔJ—ÙR3>Wº! @€(AÍ’ !@€TžÀÊ$û÷ï ¨<="@€X)AÍ•âó0 @€@cŒ>}ú4vK£×V6(Úhá. @€”­€ fÙ† @€ÊC`E“É:š£G.Nj% @€@« j¶*·Ê @€Õ'0f̘XmµÕšÝñ½÷Þ;’Ï @€²5³E¤  @€ZT G1lذf—¹¢3<›]‘ @€ÊN@P³ì†Lƒ  @€å'ÐÜe2Csøðáå×Q-&@€hAÍVaV  @ ºFŒݺu+á ƒŠdMM @€|‚šùTä @€´¨@‡bÔ¨Q—ÙÜ™ìF @€ŠÔ¬ˆaÔ  @€@é ¨ìß¿ 0 ô;¤… @€«L@Ps•Ñ«˜ P]Œ>}ú4ÙéBƒŸMä @€ŠԬءÕ1 @€@é 4°LÖÑ=zté5\‹ @€JJ@P³¤†Cc @€•-0f̘XmµÕìäÞ{ïÉÎç @€ j6¦ã @€@‹ ôèÑ#† Ö`™MÍälðA @€ªJ@P³ª†[g  @€«^ ¡Àe2Csøð᫾Z@€ Pò‚š%?DH€¨,#FD·nÝr:uÐAE²¦¦ƒ @€@S‚šM ¹N€ Т:tˆQ£Få”ÙРΜe @€T½€ fÕÿ @€´¾@v³ÿþ1`À€Öoˆ  @€ÊR@P³,‡M£  @€å-0pàÀèÓ§O]';ì°ºs' @€šÔlJÈu @€¢ÔÎÖLÖÑLÖÓt @€(T@P³P)÷ @€´¨À˜1c¢]»v™Ï“Ï @€ Ô,TÊ} @€-*УGøò—¿‡rH‹–«0 @€ÊhóqÍQùÝÔC @€R¸÷Þ{c—]v‰ät @€B5 •r @€ @€%!Ю$Z¡ @€-ðÑGÅâÅ‹ó~Ú¶m:tÈù$³7Û´iSÑ.:G€ °b‚š+ææ) @€@E $AÈwÞy'æÍ›WÐçý÷ßϰ¬ d&å­È‘6³žµy;vŒµÖZ+ºuëVÐgÍ5×\‘&x† @ ¼~^‚ƒ¢I @€b ¼ùæ›ñòË/Ç+¯¼’ú~íµ×âí·ßÎ1çÏŸ•¶ôz]{íµ3Ðd·õž={Ʀ›nšúNò:wî\L~e @€´€€ f *‚ P*K–,‰9s椂•õƒ—ÉùÂ… K¥¹%ÙŽuÖY''ØY?øÙ½{÷’l·F @€ªI@P³šF[_  @€ŠX¶lYÌš5+žyæ™xöÙg3ßÉù¿þõ¯XºtiÅô³;’¼òÞ§OŸèÛ·oæS{žÌþt @€´Ž€ fë8«… °BÉ+àÉìÊ$`YûI‚˜Ï=÷\«Í¸ìÔ©SfíÊ®]»FòI‚zÙßÉz•ÉëÝÉz—íÚµË|צ“¼ìOýkI€6 Ä&³Lk?ÉZœµçÙßµ×-ZÿýïãÝwßäuùìï$/ù$å·Æ‘ÌàLµAÎÚóÄÊA€ в‚š-ë©4 @€À $Ì™3gƃ>Ó§O§žz*3 3Ù„§¥$ÈØ£GØ`ƒ b£6Š 7Ü0óI6Ý©°LΓ yÊùxï½÷2ÁÍúÏd]ѹsçf>ÉZ¢Éy²)R1Ž7Þ8ìÜn»íb§vŠwÜ1³®g1êR& @ Z5«e¤õ“(9>ø }ôÑLóˆ‡z¨Åk]ºtÉ)“€evà2 `&¯J·mÛ¶äLVeƒ’™ŸIp³6Èùúë¯×'ùo¼ñFföèʶ±M›6Ñ«W¯L€3 r&Ÿm¶Ù&’| @€@a‚š…9¹‹ °ÒÉ>É,ÌÚÏŒ3VzýËu×]7>ûÙÏÆÖ[o]÷½ÕV[EÔt´¬@2“6 t¾ð ™µK“õK“ó_|1’€èÊÉ ÙÁƒÇÎ;ïœ rî°Ãva_PÏ @€/ ¨YñC¬ƒ @€Àªx饗âÎ;ïŒûî»/È|õÕWW¸)É:–µË$h™2“O’ïXµ}ôQfÇùÚ`gíw2þÉz +r$ë’öïß?àÜsÏ=ãK_ú’ çŠ@z†¨XAÍŠZ#@€Z[ ÙÀæþûï;î¸#ÌL6óY‘#YëòóŸÿ| 0 óšr¼´³öŠH®Úg’ÍfÏž™Í™lîôü#³NêÂ… ›Ý°d]ÓÝvÛ-¾ò•¯ÄÞ{ï h7» @€*H@P³‚SW @€ÖHf_&³1“@æÔ©S£¹›ú¬¶ÚjÑ»wïH6‘©ý$k`:*S t&Áî'žx¢î“¬ÕÙÜcË-·Ì7“ç¿øÅHv¨w @€ªI@P³šF[_  @€•H‚RɆ>I3ù$;”7çX{íµ3³0“™˜É'yÅX@ª9‚•woÔLfqÖ:ÿùÏ6k­ÕÕW_=ózzàLfrn¾ù敇¤G @€,AÍ,I @€@¶@².â]wÝ×_}L™2%Þ}÷Ýì[L'À 2$³ L2SÀ©A*>H^Oúé§ãñÇ¿ÿýï™ï$˜^è‘줾ß~ûŘ1c2»ªúœû @€å$ ¨YN£¥­ @€@« LŸ>=®»îº¸ñÆã?ÿùOAu·iÓ&úõë—Yÿ0YqÛm·$ÏA`E’% |ðÁøÿïÿÅ´iÓâßÿþwÁEm¿ýö™àæÉZ­ @€@¥jVÊHê Ð"ÉÎÕI 3™•9kÖ¬‚ÊLv ßu×]332“Y™ÉìLb $krÞwß}™OòÚú²eËš¬*Y»uèС1zôèøú׿k®¹f“ϸ PÊ‚š¥<:ÚF€´ŠÀ[o½7ÜpC&˜ùÈ#TgŸ>}2³1“MZ’u1Û¶m[Ðsn"Ð’ÿýï3¯¨×9ß~ûí&‹_c5bŸ}öÉÌàÜsÏ=£]»vM>ã @€@© j–Úˆh Ð*ɺ…þóŸ3Ì¿þõ¯mÌ’¬‰9räÈØk¯½bÝu×m•vª„@¡üq<óÌ3qÛm·Å_þò—xóÍ7›|´{÷š~ðÁÇÀ›¼ß  @€RÔ,•‘Ð @ U’õùË_Æ•W^É Í¦Ž-¶Ø"FŒ‘ùl²É&MÝî:’øè£â¡‡ŠÉ“'G´_°`A“íÚqÇãÄOŒ}÷Ý7’×Õ @€RÔ,åÑÑ6 @ Åž|òÉøÙÏ~'NŒE‹5Zn2 ó«_ýjfVfß¾}½×E¥.ÌJ¾ûî»3Îûï¿¿ÉYÉ›nºiwÜqñ­o}+ºvíZêÝÓ> @ J5«tàu›Tƒ@ò:nò^÷ÜsO£]NÖLÖL^/ßi§ÌTkTËÅr˜7o^ÜqÇ™çŒ3íF²™Ðá‡Ç|l¹å–Þë" @ µ5[[\} @€@Ñ’Wm¯¹æšÌÌÌd7óÆŽwÞ9óºmÐ\}õÕ»Õ5%ðòË/Ç­·Þ7ÝtS¼þúë ö-Ù+Y‚!y5}È! Þç @ 55[S[] @€@Q^}õÕ¸âŠ+â׿þu¼óÎ; ÖÕ¡C‡ÌŒÌÃ;,¶Þzëïs@5,[¶,îºë®¸úê«£©Ù›ÉfYIpóþç¢}ûöÕÀ£ @€@‰ j–èÀh P¸Àœ9sbܸq™ Ì’%K|0Y+s̘11jÔ¨èÖ­[ƒ÷¹@ Z’ æï~÷»ÌæBI°³¡#Ù4묳ΊäíÚµkè6ù @€¢ jVÁ @€@±Þxã¸à‚ 233Ûü§wïÞ™àËðáÃ#™¥é @ qäuôßÿþ÷qã7Æ{ï½×àÍ[l±Eüà?ˆÑ£G[‡¶A% @€bjCU™ @€@QþóŸÿÄÅ_œyÕüÃ?Ì[W›6mb÷ÝwÏlt2hР¼÷È$@ qd}Ú?ýéO1a„xå•W¼y›m¶‰sÎ9'8à€Hþ·ç @€[@P³ØÂÊ'@€ZL`ñâÅqùå—ÇyçóçÏÏ[nÇŽcÿý÷C=46ÝtÓ¼÷È$@ y}ôQÜ{ï½qÕUWÅ£>ÚàÃ;ì°Cfƒ®vÚ©Á{\ @€´„€ fK(*ƒ(ºÀäÉ“ãä“OŽ_|1o]ÉkåÉæ%G}t¬·Þzyï‘I€ÀÊ <ôÐCq饗Æ?þñ ;ðÀ㢋.Šž={6x  @€•Ô\=Ï @€Exê©§2»-ßsÏ=yëJ6)ùÆ7¾ÇsLl°Áyï‘I€@Ë L›6-Ü|æ™gòÞ©S§8餓â´ÓN‹Î;ç½G& @`E5WTÎs @€@Q>øàƒÌ}ÉŒ°¥K—æ­käÈ‘q 'D²³ƒU#0uêÔøñÿ÷ÿ—·ÉlÍ_þò—‘lÔå @€´”€ fKI*‡h1¿þõ¯1vìØx饗ò–¹ÝvÛÅgœýúõË{]&­+üáaâĉñóŸÿ<Þ}÷ݼ•'ËC\vÙe±þúëç½.“ ÐAÍæh¹—(ªÀ[o½•yÕüúë¯Ï[ÏFm§œrJì½÷Þy¯Ë$@`Õ $xý⿈k¯½6ï ëµÖZ+3«óˆ#ްKúª*µ @€²Ô,û!Ô P·Ýv[$Ž$°™}$›%yä‘‘ìnî @ ´’YÖçœsN<øàƒyº×^{Å„ ¬ƒ›WG& Pˆ€ f!Jî!@€Š&¬ùÝï~7~õ«_å­cðàÁqÞyçÅf›m–÷ºLJW`Ò¤Iñ£ý(æÍ›—ÓÈuÖY'~ýë_Ǿûî›sM @ )Aͦ„\'@€Š&ðØcÅèÑ£ã_ÿúWNk¯½vf×ä¯ýë9×d P>É›]tQÜ|óÍy}øá‡gÖÚ\sÍ5ó^—I€È' ¨™OE PtŸýìgñ½ï}/ïº{Æ ‹þð‡Ñ­[·¢·C´ŽÀC=”Y÷7ÞÈ©pë­·Ž?ýéOÑ·oßœk2 @€ù5ó©È#@€Š&¼nþ­o}+³Srv%ÉL­³Ï>;ÌÎÌ–‘&Pï½÷^f­Í[o½5§C;wŽßþö·qàæ\“A€ÈÔÌ‘&@€Š&ðâ‹/fÖÏ{úé§sêøÂ¾_|q$;œ;¨l;î¸#óŒd·ôìãÄOÌü.h×®]ö%i @€@€ f… @ ˜ýë_〈ì F›6mâøãcŽ9&Ú¶m[Ì&(›H^COþ·ÿü#§U»í¶[üùÏŽdm] @ Ÿ€ f>y @€@‹ \sÍ5qä‘GÆ’%KRå&‹Ÿþô§±Ë.»¤ò%¨äwÂ…^¿ÿýïs:Ü»wï¸óÎ;cÓM7͹&ƒ ¨ég€(ªÀyç—yÍ4»’~ýúÅå—_n¸aö%iªLà/ùKœ~ú鑬¹[ÿèÑ£G$¯ªþ󟯟íœ ‚š~ @€¢,[¶,ÆŽ›Ùø#»‚}öÙ'Î?ÿüèСCö%iªTà…^Èl"6wîÜ”@²Ø-·Ü{íµW*_‚¨nAÍê½'@€EHš‡rH\ýõ9åwÜq™uôr.È @ êÞzë­8ꨣâ™gžIYtìØ1Ø>|x*_‚¨^AÍê{='@€EHšßüæ7ãøCªüd'ã .¸ ¾þõ¯§ò% P_ y=Ùýž{™Ùý§?ý)6S, @ j5«vèuœ´¼@Ð<øàƒcâĉ©ÂW_}õ¸òÊ+cçwNåK @ ŸÀG}guVüñL]N–¬H^EÿêW¿šÊ— @€ªO@P³úÆ\  @€@Ñ;ì°˜0aBªü5ÖX#³®æ;ìÊ— @€@cüqüð‡?ÌYÆ" l&»¢éK_jìq× @€ h[áýÓ= @ •~ðƒä4“ >®¾úêÐl¥AP hÓ¦MœsÎ9q衇¦zµxñâØwß}sÖÝLÝ$A€T¼€™š?Ä:H€Š/pÕUWev-®_SçÎãšk®‰þýû×ÏvN€f $ëñ& ©l¼ñÆ1}úôØh£êg;'@€ªD@P³JZ7  @€@±îºë®ÌúvK—.­«¢}ûöñ›ßüÆšu"NXäUôSN9%&Mš”*fÛm·|0’Yá @ º¼~^]ã­· @ E^~ùå8è ƒ¢~@3©à¢‹.ÐlQi…¨näUôýèG±ë®»¦ ž~úéœYâ©$ @€ŠԬءÕ1 P\d]»ý÷ß?æÍ›—ªè´ÓN‹¯}ík©< ¬¬@»víâŠ+®ˆ¾}û¦ŠºñÆ3ù©L  @ â5+~ˆuGà»ßýn<ú裩Â÷ÙgŸ8üðÃSyh)5ÖX#~ùË_F·nÝREžtÒIñÈ#¤ò$ @€Ê°¦fe¯Þ @€¢Üzë­1räÈTÙÛl³MÜtÓMÑ©S§T¾ZZ Ù èC‰>ú¨®èÍ7ß<’×Ñ“MÊ @€@å ˜©Yùc¬‡ @ EÞ}÷Ý8úè£SevéÒ%~ñ‹_h¦T$(–ÀàÁƒãä“ONÿÒK/Åé§ŸžÊ“ @€*W@P³rÇVÏ @€@Q’×<çΛ*{ܸqѳgÏTžŠ)pä‘GÆ.»ì’ª"YsóHåI @€•)àõóÊW½"@€E˜:ujì¹çž©²‡ ­G8 IDAT—_~y*O‚­!ðúë¯ÇÞ{ïï¿ÿ~]u½zõŠ'Ÿ|2:vìX—焨<35+oLõˆE`Ù²eñï|'Uv²YÇ9眓ʓ @€@k l°ÁqÚi§¥ª›9s¦ÝÐS" @ 25+s\õŠ´¸À„ âÙgŸM•{ÆgÄ:묓ʓ @€@k pÀ‘¬±Yÿ8ÿüóãwÞ©Ÿåœ¨0¯ŸWØ€ê(†À|[o½uj-Ídv;/F}åQæÒxöîÉñÔ»2 ^ÖÛ.¾2¤W´ËéÀ‚˜ùØS1oIí…š“Õ7‹ôÌsoí=¾ (Tà¹çž‹‘#GÆÇ\÷H²‘Ðü㺴 @ ²5+k<õ†Eàâ‹/Žïÿû©²o¼ñÆØn»íRyÕ•XgO¯×ë^gÆc·]ëeeN̈ƒìõo†îÍ~Vš‚’×Ðo¾ùæº{“55“Ñ“WÔ @€@å xý¼òÆT @€@‹ ,Y²$~þóŸ§ÊL6ªî€æ'ÖL±DlÒ!ÿÌËvícý¬[¼7û>i 8ñÄ£S§Nu÷.Z´ÈÚšuN @€@å jVÞ˜êhQ›nº)^{íµT™ÇsL*-ñ©Àò ˜›&iνM—æŽD`ѳqrÍ2 ÉR uŸ£o‰tªB {÷îño|#Õ×_ýêWñᇦò$ @€ÊÔ¬ŒqÔ  P4Ÿþô§©²wÚi§èÝ»w*Ob²gy®@)@àýű´€ÛÜR‡vX´m»ü?qÞ~ûí¸æšk*£szA€¤–ÿÿø©l  @€@ÄO<?þxŠâ[ßúV*-Qˆ@»ÜÙ‚‚m…ÀµÈ=¹7µH± )Až={Æ^{í•jÙo~ó›TZ‚¨ ÿÆ«ŒqÔ  Pd3 úG0Øu×]ëg9/D c¯¸ü™gbQÍ”ÁvÉ¿¾–&'£c!Ϻ‡f Œ3&¦L™R÷LòÇ™^x!³$A]¦ @ ìÌÔ,û!Ô Péáj;GךY–«ôXº ÞœûFÌ}óåßÔ¼ËÞ¥K·XoÝõ£[×–kߢùóâíùïÄ{ï-Œ¥™×åkzÞ®S¬½öÚ±N·nÑb“L[ºOù¶f‡è´’·hÁü˜?~¼÷á’LIíWï]»v-îÏDÍÜšñNªlß~õèºþ†Ñä·´çJº­ÊÇ“ æï~÷»º&#âËCwZöÕ,ó¹`n<8å/q뤋còôúçž=ð„øÆ~_‰]lÙdûsŸŽhÉ>ÍvM\yÿ«±V§šÐå»/Æäì §žã~2;ÖJò.Œ…¶‰#OØ/º71„‹æ½¿÷Ö¸yÒe1µ!O͇טoXðÏÄ¢xèš+âŽWfÚ¼pá»Ñi‹‘q¨‘iÒÒyq÷õWÆØqR=9å¦ÇâÈ]Syµ‰–ô¬-³Ü¿ûöí[ðïR˜¯®+Éï´8 .í„(o6×åÝ­'@€ZZ`iÍF6k­µV,X° ®èñãÇÇ{ìQ—®œ“¥ñìmãcŸï^Vp—N¸|J;lã¸åè¾qêÔz >7f\;*:×ËÊœ.˜Ø?R±±^gÆc·ùÃTÉSócÚ5—ÄãnÈ.­Éô)WÝGéÙä}™2A´Kk‚hͯ'bhœ{ÕÉ1jH¡3x[¾OÏN<:ö9»þ 4ÕíÁqÓŒkc@Î Õ>· ÆýÂf»<áò8eì°&ƒ¥ bâÁâìú? ƒÏ¬ù¹9$:¾ùXœºó¨ÜÀlMÓΜôXÒ'û§¥å=k*áûÛßþvÜsÏ=u]ùßÿý߸âŠ+êÒN @€ò°¦fyŸÖ @€¢<ùä“©€f›6m"Ù|£òŽE1íŠÃšÐL .;nXœËñxÝ^…‘´kémKj[»Ã'3óò–ðf\sðÀfÖj‹ºøˆ=âü)³j“ /Wì3hšI±Sãì#†ÅÉ·<ÛpuWŠÓ§v¹!äºóŸ¬íó_¨™BúJ\Qp\‘@òäËŽ‹{Ÿ3æ7Tøòük.?Ïœ­ß-Í{,k  ™u÷§Éâx毫˜JK @€å- ¨YÞã§õ @ (Ï?ÿ|ªÜž={Æg>ó™T^%$žxFqYý)s…÷j©GÄÙ7äyM½ð"¼ó±+NŠq4«×àÁQ³Äi£Ç„šÀëÄ™ËgÚæ»ù¡ËŽŠËéBRÏÐêš|ê>qˬÆë*VŸ–.þw¾®5’÷~|²2fÖ-5ÍŸì·G¬àç…Ýû<+š`Ϫ¸&ùïûâŒoŽJÏäͽ+•S,ÏT%ežH^A¯Ìœ93¼¤V_Ä9(o&V*ïÎi= °b/¼ðBêÁÍ7ß<•®„Ä‚g'Ö¼¶œ³ã§]g^~Dì¾Ý™ÍYÌ=žºwR—µÎa1ͺ-F勬{ô»vªY|taÌûxú¿Å¥g_–UW"{C|uìVñp{·$ÙÔ‘§§O®™óšçèUT^»f>ìôé±f§åÿl/¦gžV”mVöï­>ø fó¥¹±ÑF•mŸ4œX.`¦ær g @€À§•Ô|3®þþÙyÇ{ðØËãᮌC† ŒžÝ»ÕìrÝ-6ìÙ'†rF<÷ð¤ÛÄ É¼…6#óſߑsw¯C/g.96vìµ< ™ÜÔ®]çèÞ³W ;ò¼xxÒ…‘Ó´éãbê¬E9å%³y(Oþ1ñçâØ¯ L4“;v3®|.~ÊÐÜgo˜ TÅìSך±ÙqÇcàÀ1p§Á±Mvˆî»'׬ùì;æÙÜèÍiãÓk£Ö–1ô”¸ý±â¤QCbËî]£cÇŽ5]3æ{Œ:6nî¾8wdíÍõ¾kܯž6·^F#§élæÆÁc/ŒÛ˜/Ü~m\yíµ‘üïq¿-—Gb‹éÙHKËîÒzë­;/wK:ý»­ì:¥Á @€@€ f… @ V`Μ9µ§™ïM6Ù$•.÷Äü“ó¾v=òÜ›âÚ“†58î]·>qÒí÷E¾˜^˘,ˆç§çÎÙ;ñÈaMî2Þ­Ï~qÑ™¹ÁÆç_È÷zöÒø÷ÜôIû/œrf lj[𚹘;ùÃ8!'‚º >\šO¡µúTS÷²< xqfŽf¾–}’77®=b|îå‘çÆÃW½òMs­½»Ý†1ê’òXDŒŸx_Í–@Í?Îüý}5?ƒûE¯îé`Üò’ZÑsy¥e{–ý»+ûw[ÙvLà  @€ÔôC@€ä¼ÿþû©¼.]º¤Òå¨Ù躋s»0òÂ8Ô€Üüœœ ãÈ ƒsò[&£CÎæC½bŽ…•½Õ.¹A͇æÌËóð‚xmFöÁCc‡M ¬¨&ÄšïΆ6ài>åéfYóûKä†4‡ÆMgj0¸.¶{ŒýõøÜY²Sïˆç Ø4¨~Y'\õ@²ã†õ³òž—²gÞ¯ÂÌìµ€ß{ï½UØU @€-)°|qž–,UY @€@Y dÿ‡ÿškfo×\ÆÝ›ÿtü1ÏRš0²®×]wŒcjÞCŸÞÐ"Œu7®ÀɇÙÁÆ™ñûI3bÇCš¸vÜrXL™´M,¬«vI´[;ßz¨b£A#cpͰ®Ÿ™¸ l°}¬_ð¿ ÛÅš5k=|´JŸ nM½ÅC“sÜCÏ=646C³^ Éi» w‰o×¼†þÝÔÏÕô˜þ¼šWÞ ZY3bè¹qØîY%7,YÏÚ» ³×XcTíÙ¿ÛR% @€²(øŸ®eÕ+%@€VJ {¦fv``¥ _Å/xõÙÜ]¦Ÿ»÷jèußü Þnÿo×¼cüÝüW"wqžw–§ŽÛ?N^<>NùæÑ=ßɺú:Ç–}úÔ¥>éC޽$†4|CãWæ=7²;{öíӧìZ H/}5ÈÙ_ip|óË…Ö/¿c|vÇš¨æäTT3~öõ8¶À æ)G|9 ý ,YÏú$%rž½¦föï¶i¦f @€+ àõó@ó¨t¶mÓÿDøè£*¦Ë¯>õtN_†Ý©ÀW—?Úqý-"÷eïå×Wì¬sô’¿ÔÉûngý䚘öØÌxs~žèçŠUÚÄSKcÑ‚ù1ïÍWbæ³ÏÆcwOŒ£Štø®±"J±OŸ´wéÜjö*Ï>6‹šý¡š}l9`Çœg¦OªÀu5‡Æ½ ­´t=sJ #ûwWöï¶h¢& @€+(`¦æ ÂyŒT²@öëæ|ðA…twA<óxn8n«Í×n~ÿ:nƒk֜ڌ‹…TÒkı1òì©  o?.n¨]²×Ð8tØàؾ_Ÿø\ßÞѳ[¡sýò´dé‚xeÖ 1ûÕ7â­WçÔ|¿/¾:;æÔt0û…øõ @€+. ¨¹âvž$@€+½1Pv` œ;žïÕÝ ×iÆŠuïEYj´sŸ8ÿîññüc›&Μ’Om›Œ3Ø/¾ò¥¢{çÿ™·`nL¹ùê8n\])µ¥µÜwk÷©À–/ý0Ôqò„<ÊËl•ÛJÔ³UúÞÌJ²ÿ “ý»­™Å¹(!ô»e%Ô0M!@€V@öø¿û®1-\s‡<å-Ž¥yrW]VÇž{ÄíM‰ Çæ½Á–MŸã¾ûÍØy@ï8ë7Sbî¢ïÌ\xå¡kâ«v+n@óÓ&´VŸïqúê«O>‘ÎhéT÷×*EÏ–æk‰ò²weï†Þu(ƒX5‚š«Æ]­ @ ¤6Ûl³Tû^~ùåTZ¢ºnûte<óðÝ1þÜbh¯æÕyÃÅÇÅn}³ˆ×>{ËɱÇ7Ç5=´®Ú^1òÀ±qæ…ãcÊ}SâÌfÆ[3ŹOuM-ô$_„»Ðg ¹oN‘Ã奿YˆI+ÞóñÇÇœ9sR5nºé¦©´ P¾¾—T¾Ôr @ ù[o½uê¡Ù³g§Ò•–èЮtÿIÔ±[ÏØcÔ±™Ï‚ùoÆìžŽÇ¦OéS&ÄÔ&»'\4 n9c¨¿iúÒW¦Ä>§æ®-Z;®CN9h·Â×ãÌ[Jó2[¦OÍ«³öîu6Þ°ötù÷Ðc»-{¦‚ÀË/–þÙªô,5ÿû¿ÿK5) ÎwïÞ=•'A€”¯€×ÏËwì´œMàsŸû\ªì¹sçÆ[o½•Ê+ÏDרlPÍ–åYÇ?ŸÝüU5¾ÿÎ*§µ“I«WMóÈ3®Œçf<ãOš§ Óã_¯Ï_ž¿àŸ#Ï$Í¡gNŒKŽÜ£UšËµül…ú´üñf-<ïŸO}(f§'÷5«ÌR»¹5=K­ïO>ùdªI½{÷N¥% @€ò0S³¼ÇOë  @€@Q’ f·nÝbÞ¼yuå?òÈ#1|øðºt¹žl´Õ65MŸžjþÌ ‹—O[ÖÃ:uGnâ•i“³Jɽ§¹9sk6îùé-/Æê«ò䇮‡ýðØèSÀ$Òv»ÇÇþ,ÆÏß/ÆNhì½ô|¯UcXxs—¾3òO Í)£uú”SmA7Û&’0pº+“ã™Ù?Œ^Íœ¹;ÿÙ[⼫ª»OïÃ?ŒíÇœ£ÔM‘-¨MMÝTÊžMµ½µ¯'¿³ê»ì²Ký¤s @ Ì5Ë|5ŸC M›6‘n½õÖºâ~øáŠjnØoûš>M¨ë×''7ÄOœÇ.G;ëzvò͸õW7dg®túMÉ“Ó!¶m;8úô)teÆŽ±õöŸ¯é^ÃAÍEóߎœ7ðŽ›Ð?ãž(´÷­Ñ§†ï¸q ©™¸;5㎫o~<ö;cH3Š]S¯85²†.zxz3Ê(ìÖ’ö,¬ ­r×’%Kâ‰'Ò»Ûï¶Ûn­R·J @€Öðúyë8«…”À!é Îßÿþ÷²ëC¾·Ûð qfîèqÙùˆ¹ùÈ“7wÚµqYÃqÃãrJèuè¨è»œ=çúŠf¬rÏmx+?wûí·§j4hP¬µÖZ©<  @ ¼5Ë{ü´žM YW³oß¾©òo»í¶Tº\݇ŒŠ¼sRŒŸœ¿qgÞôX2 ½&ç¬ÛΊaß½!oß{ =4¹klÚµ}ÌÿÏìxî‘iqÙ SóÞ›“9øÐ¸pŸ-bÞûÝc¿CöˆÚ—¯[£O™¶äsÎiäqû3çE¯Ô¢ó⚃Ÿü„Ñkè±ÿÐ/Äæ®kÄ’xù_Ƥqãó3?©lìU÷ÅIC6Ì©ù“ŒqËѲ^W“f\YІPI­æÙ@J={êÔ©qôÑG×53yõüÕW_ 6Ø .Ï  Pþ‚šå?†z@€Š&ðâ‹/ÆÖ[o*ÿÒK/¯~õ«©¼rMÌvEͫ䗭Xós‡¼g_\/TÙ@ 2òÛº·fNᔳúÆqùcŽÍjk¯±WŤ“òÍœWl½[¬`Ï#ŸãGGŒ=®¡ÇM3®uÑÝÖèSB³4î>Ÿ&vZÓ¶+ëµíSÒÌ«õÍD-Œ~è)ãÊ#ÛI~僚Ñ*?#…õ·ï:øàƒcúôåê/~ñ‹qï½÷–bSµ‰X ¯Ÿ¯žG  @€@¥ lµÕV±çž{¦ºùÛßþ6•.çĆCŽ&ž»]“ÆŸ;×NE¬WBž7°“X[îkÑõžIŸvŒaç=çæ.ô˜¾­‰T¯±—ÇõyšÉƒÆØ‡'æYK²‰Bk.÷:ðܸïêccÝw¯Ù §¡#™ßZÿh>%õµ‹]þvýŠóž§Ûöé-{Ʊ×>?;8ï3…d޽üö&šŸ”²8OaKòä5œÕZž · T¯<û쳩€fÒÎú³6KµÝÚE€4_@P³ùfž @€U%pâ‰'¦ú›/hº¡ÌÝŽŠçž'4¡KõhèØ ãîg.ɼ*œ³Ïøúkæ_G±æuýuS¥Ô$ÖìS/Ý=F]òLL¼pl½¼BOǹWM‰ÛOé—ÎÓÏ·ë60.yîš ^¡?4Æßt_Ü~Þ¨È,ÑÙ±O\8éÂè•.öÓÔû5/igÅïSRcÇž_˪ó·+»MÙénñµ“®û&þ´Yß^#Oˆ›î›' +¬Öu3Xkë_7VoW{^èwëxÚšR¹ïª«®J5¥gÏž±ß~û¥ò$ @€ÊðúyeŒ£^ @€¢ $Ëo÷éÓ'ž{:¾ð…/Äõ×__—®”“7g>wþ힘þðC1çO{µöÚ±ÍfbûwŠÝvÜ.6ìÚ±u»[³IÏ̧Ÿ‰'þñh<þÄ‹ñüœ©1sæò&ôê586Ùf³ØnÛ/ÄçöÞ}zæ®é¹üö¼g Þœ÷ßý·˜:íÙø÷û5Û…¯™ü¿5cÝ·ŠÏõÛ!¾0¨lÙ=ˆtéüWâ¾iÆ»‹;D‡š8í]7ˆÍ¶Ú"6ݰ[þoÒ‚VèSòŠö›¯¼oÍ{§f£v±úê«G§.]bÝõ»G׎…DÅ+3Ž{ï¾?¦Ï¨÷ókÇ&›¬oÕ+ú èŸÛ¶_MN”2¯sÑ2[ųh­o±‚gÍšÇeË–Õ•yÉ%—ÄI'T—vB€TŽ€ f匥ž @€¢ üîw¿‹#Ž8"Uþ•W^C‡8Ë/õ¤Z^ਣŽJ­¹ÖZkÅìÙ³£k×üù–o  @€Öðúykj«‹”©À!‡½{÷Nµþ¢‹.ªÙ};÷%ãÔMh|0ÐLª<ýôÓ4[Á^ @`U j®*yõ @€2XmµÕâ /Lµ8™uíµ×¦ò$ ÐÚK—. .¸ Um²–æqÇ—Ê“ @€*K@P³²ÆSo @€@ÑFŒC† I•饗ÆË/¿œÊ“ @€@k $Ka̬¿ÐlMåãÆ‹N:µf3ÔE€´²€55[\u @ œž|òÉ8p`$3£jí·ß>þð‡?DÛ¶þVZkâ›ÖH60Ûwß}S¿“vÞyç¸ÿþû£M›6­Óµ @€«DÀ}¬v• @€òèß¿œzê©©Æ?þøã1a„TžŠ-¬éûýï?ÐLfg^uÕUšÅÆW>(AÍM @€å$pÖYgÅç>÷¹T“/¹ä’˜1cF*O‚Å8ÿüó#™©YÿøÁ~½zõªŸåœ¨P¯ŸWèÀê(¦ÀÃ?»ì²Kj†T=bÒ¤I±Î:ë³je @ ó»æ{ßû^J"Ycúôé‘llæ @€*_ÀLÍÊc=$@€-.0hРHfIÕ?ÞxãøÎw¾Ë–-«Ÿíœ-*ðüóÏÇ™gž™*s­µÖŠo¼Q@3¥"A€*[@P³; ™*-IDAT²ÇWï @€@Ñ’YRÉŽèõd–ÔyçW?Ë9ZLàÍ7ߌoûÛ±hÑ¢T™Éº¾[l±E*O‚¨lAÍÊ_½#@€EHv¾æškbóÍ7OÕqýõ×Ç/ùËTžVVà½÷Þ‹#Ž8"æÎ›**ùËÈ‘#Sy @€@å XS³òÇX  @€@Qž|òÉØu×]# 8Ô?.¸à‚Øÿýëg9'@€À $33?üðxä‘GRÏïµ×^ñ—¿ü%Úµk—Ê— @€*_ÀLÍÊc=$@€Eèß¿ÜrË-Ѿ}ûT=É.éS¦LIåI @ ¹K–,‰O<1' 9`À€¸ùæ›4› ê~ P!‚š2ºA€V¥Àž{î¿ùÍoRMH6 J6JfQ9 °"‹/Žc=6þö·¿¥ïÙ³gÜqÇÑ¥K—T¾ P=‚šÕ3ÖzJ€Š*pÈ!‡Ä¸qãRu$Íï~÷»1iÒ¤T¾šH^9?æ˜câž{îIÝÚ­[·¸óÎ;cƒ 6HåK @€Õ%°Ú95GuuYo  @€b 2$>ú裘6mZ]üqL:5ºwï}ûö­ËwB€†,XG}tÜÿý©[’€æÝwßÛn»m*_‚¨>AÍês=&@€EØ}÷Ý# dÞwß}©z’ÙVÉÚx;î¸c$;§; Oàßÿþw$3¿Ÿxâ‰ÔåuÖY'ÐLÖÒt @€5ý  @€-.6“#;°ùØcÅK/½Éu»·8» ”½ÀóÏ?|pÌž=;Õ͇ P#Цf&ÅÇ$ @€Å¸ä’Kâ”SNÉÌܬ_þÀã¿øE$¯’: $9á„"yõ¼þ±É&›dÖÐìÓ§Oýlç @€@• jVù€î @€b Üxã™WI“M?ê=zôˆË/¿<¼JZ_Å9êHæX\qÅ™ßÙó-úõë—Ùå|£6ª>=&@€Ôl”ÇE @ %’Xûì³O¼ûâÚ·o§Ÿ~zŒ3&•/A€@u$¿N:é¤Ôæbµ=:thÜrË-ñ™Ï|¦6Ë7 @ N@P³ŽÂ  PLþóŸ1bĈ˜5kVN5Iþ¹çž;wι&ƒÊxê©§âøã×^{-§ƒ‡~xŒ?>’?|8 @€ùÚæË”G€hiÏ}îs‘l4|øðœ¢o½õÖøÚ×¾–³ÛqÎ2({eË–e^7?à€rš:tÈ3¯ºê*Ͳi @€Å0S³¸¾J'@€²’5ó’Y™?üás6jÛ¶muÔQ™Ù[fheÁI¨—_~9N>ùä˜1cFNo6Þxã¸ùæ›cРA9×d @€²5³E¤  @€V¸ãŽ;âàƒŽyóæåÔ—ÌêüñŸýìgs®É @ ü’?fLœ81.¼ðÂøðÃs:ðÿÛ»÷دæ?àï]ˆˆŠZr+ÔºX¢‹"²¹MÍLÔ&›ù‡Ãf6­ÿˆ™KÌÜÊmæZ&ŒJ,“KIº¸„RéBåR‰ß^ç·ÏwÔç{éòý|¿ç{g;;ŸÏ¹|Îû<ÞçûÏóû¾ ><;Þ¡C‡ŽÙA€(' Ô,§b PKoܸqéí·ßÞé~-Z´HW^yeºúê«S«V­v:nùXºtiºí¶ÛÒ¼yóv*pt7Ÿ0aBÖz3Zj[ @€ujÖUÊy @€@½D ®I“&¥[n¹%mÙ²e§{tíÚ5ëª>dÈŽÙA€@㈿çx =òÈ#iÛ¶m;ô„NHS§NM}ûöÝé˜ @€Ú„šµ 9N€TD`Á‚i̘1)¶å–˜!ý¦›nJ;v,wØ>‘ÀìÙ³³FÄš;.Íš5ËZ`ß}÷Ý©uëÖ;ö P'¡f˜œD€TB ZsŘ{'N,Ûj3˜H(º¥ë’^‰q»&°lÙ²tçw¦Y³f•½°GiòäÉièСeÛI€¨«€P³®RÎ#@€*&°dÉ’,¼œ9sfÙ{vêÔ)ƒ/ZoF«/  +°aÆtß}÷e“ýlß¾}§ÂÄØ™7ß|sºõÖ[SË–-w:n @`W„š»*æ| @ "1Öæc=–n¼ñÆI¹¥wïÞé†nHƒ *wØ>êY f2ê©§ÒC=”6mÚTönƒÎZgžxâ‰eÛI€Ø¡æî¨¹†¨˜ÀÚµkÓí·ßž~øáT®XdÀ€iüøñ©ÿþ+—(²@LôÌ3ÏdaæºuëÊRtîÜ9ëŠ>vìX-ªË ÙI€쉀PsOô\K€TL`áÂ…éúë¯O3f̨öž1Cúu×]—úôéSí9 °û1îíóÏ?Ÿ|ðÁ´zõê²?Ô¦M›¬…uLìŸ- @€újÖ‡ªß$@€êM`Ú´iY—óÅ‹W{èîzÅWd“‘s³Z&ÔY`ãÆé¹çžKO>ùdZµjUÙëâoí²Ë.Ë&ûêÒ¥KÙsì$@€ì-¡æÞ’ô; @€@Åþúë¯ôÄO¤ &¤åË—W{ߣ>:7.5ÊléÕ*9@ zøûzüñÇÓ‹/¾˜büÌê–óÏ??ÝqÇ©_¿~Õb? @`¯ 5÷*§#@€*)°uëÖô裦‰'¦•+WV{ëvíڥѣG§Û¯cÇŽÕžçÿ˜;wn6Q׻ロbÒ®ê–#Fdÿ\8å”Sª;Å~ @€@½5ë…Õ @€•øóÏ?³1þîºë®jÇù‹ò´hÑ"wÞyYëÍ^½zU²ˆîE Ñ Ä? ^ýõ¬eæ¢E‹j,ï°aò–™C‡­ñ<  @€õ% Ô¬/Y¿K€T\ fdž2eJš4iRZ°`A÷™ÒcÜͳÎ:+5oÞ¼Æs$Дböò˜É<þvÖ®][í£Æ?.¾øâ4~üøtòÉ'W{ž @€J5+¡ì @€@ÅÞyçtÏ=÷¤éӧר}6&49rdºð S·nÝ*^N7$Ð1.íœ9sÒ+¯¼’Þ|óÍ­4«[>øàtÕUW¥k®¹&™¨:%û  @€J 5+-î~ @€@Eb–ô{ï½7›Xè÷߯ñÞ½{÷ÎÂÍè¢Þ¾}ûÏu@æÏŸŸ™ÑÍ|ýúõ5>B÷îÝÓµ×^›.¿üò´ÿþû×x®ƒ @€J 5+-î~ @€@ƒD€3yòätÿý÷§+VÔX†}öÙ' <8 8c"”Ö­[×x¾ƒ³@Ì`þꫯfaf|®m>|xÖÅ<ÂýfÍšÕvºã @€j6»› @€ %°mÛ¶ô /d]Ó?þøãZ‹Ñ¦M›ÁftO4hPŠÀÓB ± DˆC/D÷òÏ>û¬Öâ¶lÙ2]zé¥Y˜-–- @€Æ. Ôlì5¤| @€@½ |òÉ'éé§ŸÎ&IYµjU­÷‰.é\pA:ûì³S¿~ý²ÙÔk½È *$°aÆ4kÖ¬4mÚ´l»}ûöZïºÏ[ @€¿€P³ñב @€L Æ¥ŒVÿ:Ë}Þ¼ysÖå=Æ¿¬ëÝçãÜh!cn–[#d,·?öµlÙ2›Ì¨TV·ÍÓG VÑnL€È™€P3g¦¸ @€ @€Š.м螟 @€ @€| 5óU_JK€ @€ @ ðBÍ¿ @€ @€äK@¨™¯úRZ @€ @€…jþ@€ @€ @ _BÍ|Õ—Ò @€ @€(¼€P³ð¯ @€ @€ùj櫾”– @€ @€@ᄚ… @€ @€È—€P3_õ¥´ @€ @€ / Ô,ü+€ @€ @€@¾„šùª/¥%@€ @€ Px¡fá_ @€ @€ò% ÔÌW})- @€ @€Â 5 ÿ @€ @€ /¡f¾êKi  @€ @€^@¨YøW @€ @€| 5óU_JK€ @€ @ ðBÍ¿ @€ @€äK@¨™¯úRZ @€ @€…jþ@€ @€ @ _BÍ|Õ—Ò @€ @€(¼€P³ð¯ @€ @€ùj櫾”– @€ @€@ᄚ… @€ @€È—€P3_õ¥´ @€ @€ / Ô,ü+€ @€ @€@¾„šùª/¥%@€ @€ Px¡fá_ @€ @€ò% ÔÌW})- @€ @€Â 5 ÿ @€ @€ /¡f¾êKi  @€ @€^@¨YøW @€ @€| 5óU_JK€ @€ @ ðBÍ¿ @€ @€äK@¨™¯úRZ @€ @€…jþ@€ @€ @ _BÍ|Õ—Ò @€ @€(¼€P³ð¯ @€ @€ùj櫾”– @€ @€@ᄚ… @€ @€È—€P3_õ¥´ @€ @€ / Ô,ü+€ @€ @€@¾„šùª/¥%@€ @€ Pxÿª½å)î µëIEND®B`‚pymc-2.2+ds/docs/_images/PotExample.pdf000066400000000000000000000251661204033704200200410ustar00rootroot00000000000000%PDF-1.3 %Äåòåë§ó ÐÄÆ 2 0 obj << /Length 4 0 R /Filter /FlateDecode >> stream xÚ½XÉ’7½çWèh.Eej¿š°ïó¸ ÇL„‰ñÉ_ï\T’ÓTÍ´‡&‚Rj´åörùâÞº/îõ›GtoÞ¹Uÿ½{ÃS¸xýT^Båßy$3ªÛœ§X—U~Á)혌¥äˆÎ#-1#¤K°:ªe¢6GÅ/k)žÆ,ï§5îØ”¦²Ô€HeÚïó¾Fîèlû;Ò4«/m§È^¦æ;>¹w,!•ÏöØäó¸Áuù„u]R]sv‘T%‘ÏÏwÛRûÜ=¸×¿2§€îî£ûéý+w÷§ûåNÕñDÙc5fW<üÄå½Ò(ß}µRÆßÕ+ˆ +ù“ì8cç¯OŸ¿ÉœbèRÑLóô ‰& hÍ vÄT©‰±È y]‰Ê ÖÙļÛ2–‘ñ"߿ǰÕöÜ+²€ YÜ Ú@¦,lã:Bq®Ìªìô½Ò9™ Ó}×ÅlS5\{Bd ûßU} iîþùð÷-¶ë1±J€Þ»»SÆÕÅá¢ì°¬ÀƉé8ÔÈÊÃ54u>¸¸SàZº’#û£)­&› îHÑ!µ–¥ì{Îý 9ÀUE3&EEÎL:º·šBKýÇ_¿ò¨ˆ~ñ‰\»N<ü÷ï_Áó•(:š ‡ÿØlÁŸŸCXÔ¤˜ŠÍ6}×e$s¬ìšg‰•GvU…à±ÍÞY^›º–ôÉÇxàm}†ÿI—Cp!ŽÊ âÅ"e@IâWuÅ"OU=&SçÆÜhÌ tÀ¾ḋl:ÉŽ¡ñi^Ï&’Ìf¶ép&åÖ¾¡F°c€ÞÕ°¬ ô¹\7ø†œ¶gú>Ìq‹í»¶ˆ%#‹U¾ú‹heô7Ø€ù*‰W9±Á¸ØØ¨g<`³xϳÿÒQÖedõfû ¶lÓ§>‡-ÞðÚ’›ýc1äbýRîöO+ ±Ö›ýƒ$ì³ÝWŽì²ýG´™†eðböŸC–Y¬yd–öQ’º ÒŽÞìÆa¶«H#xŸÃíVl2•«àþBb]›°; œ÷gÚGìqøZˆ|E—bÞ‚iýïFùª÷âÝž-ŠŠ]NaÚãç"T¢K­FI¯%f;ºÈ§)PÓìÂF2qKó«ì£NkD›è)7û¾«ÙBäÜ!åÙ¨_N‡Œª5¦—`% §;îf±@ù†t&¼ûj!j0D—кe,— O‘Ï„èBÖ8m°‡:ToŒÐé|NeôÛ yûÀÁ‚ûhvvR›…‰±ïÈüe®70o¸ù„0!€R¶»sÙ¡cÏô~@v †„E‚.W&úñÉ›Z-·•¡W7[÷¢w÷`äh+¨œäq”.ØjÿÒQ`àÅ\ºD€‚˜æJ{0ìxĸhOQƒK9fw  ÅrÄ> ¼ 5Ý’ÊÙš atm´Fõ¶êö&£|\úWa:°{¶Æ‡ÌsÒ6íŠÏÚlÄy²ÀØ#EÎ’ï6Ý¡órÿØÓÞu ‘C$'ƒˆ#¾œÚ‡ #MÙÁƒ&RT¤ç“æu DFÚD9jZ3JJ’èÇ©\ ²—#µjÖ×[8•OÙ‹Ž¬Ãm5¾·¸/BH€\ôÌ|OÖ‡X­„´»Ps†<«‚°AbVç*ûlÜkûy¶%Tþ/b¥Ö/éórH!°Äˆ þ, â'LÅbg§€0³~Q,v1…³É2 ÖŸž[<Óø¥é(ÞÖF+ZÆ0µM¹ømfVÑ*ZºecRˆ­=hUp…¥GI¥5wD…Öë÷-û«ŽñBzž-7JÑõû-B™L(‡Ô¾knÏÖbB{|1âÀˆÞ Œ-¾`ïÆ–4Ôà tÔ˜èiöÏk’,²›øµ?æ³éŒù´î®Ñ{]’ô>ÊÞãk8õϳ½W–'{b_ב/×üdìc[tê%gð¡Eâ¼6õ$“|m"`¾[Öë9¢p-Ú^ÀªÒªÈ ÕÈÓD»aÏÑž€oÿ ú endstream endobj 4 0 obj 1520 endobj 1 0 obj << /Type /Page /Parent 7 0 R /Resources 3 0 R /Contents 2 0 R /MediaBox [0 0 639 588] >> endobj 3 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 5 0 R >> /Font << /F1.0 6 0 R >> >> endobj 8 0 obj << /Length 9 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >> stream xÚ}’OHQÇ¿³%B¬e&RðN¶Wí`ŒÝõoʶ¬k¦²Î¾ÙÞÌn%Bˆ.AÖ1ºXÑI:†‚b]"è(‚—í73»îˆÚƒ7ï3¿ÿ¿ß{@](mšz€yÃÉþ(»;>Áê7P‡A+­Xf$‘v™lqdí}…䜛áãõÿ] ‚U€Æ¬ÇמöxÀáû¶iO:¬äÒb“¸M¤’1âWÄg³>žöq†[ ñ2ñMÅ'"()Y'æ±ld4ƒä—‰»2–’'&ßÀSg^™öÐ}8õ¹&›°€åwÀ¥Öš,Ô \V:k²Ý¤;©iÝR;;\‘Œu?ÊåÝV þ°ÿ¼\þûº\ÞC9¾u¥(J•IÒÀëÃ]ýÜàBS˜s_ QP5ûFz¼Úë׋Gõ%«t{3qW°D÷0vz ¼ü \}\ø$€Ôu¡ºmþÀÍ+˜…–ÍÙ¬C–;XØ9:Y„^g±BÞ,Ú\°ACioci]g®©Å·¸(ñL;òz±Úï9ÚAnŒŽÐIó ¨Üê­°4“I÷ÐÝ x#Ã{zwA¼¨j}ƒÎ…Ðþ¤Š¾Q¥óš=˜ò8Ðmèñá Ã(Äo{1±cÚÑd5¾Ué­ÊgÒ·t¶üÆlaȱi"ßÐ\.5æ±”šËÅâ^Å8tph0èk€!‰~D† TÒhd¡‘”»6‚ØÂì±–:>f¤ß&Ÿm×çŠäíxÝA4Ž…¶ƒLþ&ÿ–·ä%ù­ük±¥ªiÄ”¦¬?ûCqÌÕ¸m¥&/¾By#¤Õ‘%iþ 'ËW©¯:ÕXl©Errð'ñ=_—Ü—)Œi7Ò¬›©äê,úF|ÙNšٮͯ6×rm^™Ü ®ÍšUáHWü «Ãÿ5;¿?ÿͰh endstream endobj 9 0 obj 706 endobj 5 0 obj [ /ICCBased 8 0 R ] endobj 7 0 obj << /Type /Pages /MediaBox [0 0 639 588] /Count 1 /Kids [ 1 0 R ] >> endobj 10 0 obj << /Type /Catalog /Pages 7 0 R >> endobj 11 0 obj << /Length 12 0 R /Length1 8936 /Filter /FlateDecode >> stream xÚ­yy|Õµÿ¹3’F«µx‘,Ëš‘ÇÚ,[’-[¶lÙÛ’ã%‹“8‰MâÄNâ`g!+~$BpÈ–Jh);¿ÈNÈsXýƒ¼Å|È£,-„öµ ”_Á-¯MÒ…XzgFNHûáß?]Ï=÷žsîö½çž{Æ´° hVmèßóácäLâÓ¾jx÷p, ™mͦk7P÷üm€¼ë®k×o_so牭ªeÆûúW}é¡&ë7Ø><ˆ ­]½  ÀƒõâÁ Ûn¨zƒjÇúl¬×¬ß¸ªŸwÙk±~;Öíúoؤlc~‰õDZÎ]׿a`þC‡Îbý´Ø~ÓÆ­ÛÈ!ªë_b½aÓ–Má·ç<`Ãþ¯!€¸qE h@ÚVäP¸:ȱ®”ù©¤\-ålñÝO‡+Ü”¼ ñ±Ð@6@úwøLáó‡®P”¥^IDÛQÿ„øP©X\`ƒð Ž·~U`üŽ4`ýœ_Ãl¸NC; GáK¸~,ýÁ¨ñaú·Àݼ×l'ö¹6‘2j[úNÄc.ÎìEøÉK7@.TBâp- ¸nGÙ+ð!|Ll¸š2â8-°öÂAx’ðSÂ’É#2Uz0½ã Öb»¸š3ð{øob$¯‘7Ó¶ô‰tÇæ¡š$ùxƒ‰+71ƒ)²,¡yº2­KW¤¿E}=¢&@,Ãà&\Ƀðð¦_ã¨&‹È&²‹Œ7©&:[ÆÈç¦oÃY*ïzLópþ[q¦ûábø<é ø9"¯"<ÕHí¢ÎÓFZÍ—§oIK¿š~wDYˆ¦Ù° n€=pÎ÷œ„×á¸WßÀ4aˆ˜q'Ègä+ (#åÅÞ~Fo¤Gèc2‘}&oß™z"u.}múPúôßpõZ™w¾S ŽÃSµz`5b½N²‡àŒÂ)ÄîCø>ƒiH;®³š4‘kÈòcršL’¿Re XÓKÝI=Ši‚š¤>¤­t!í¡Ëéåôýô£ôS²ƒòÕòÍòû䣊¯˜=©U©Õ©áÔM©—ÓéÒÏ¥'p6œ¸§­Ð†«]¸ƒk`‡„õˆhK8Ÿãð¦“8«—àeôgà7pmîâ ’p° A!QÒ€ól&qÒF:È<Ò…û³„t“~²–ì$7“ÛÉLÇp'0"/‘wÈò1¦säkL¥äCY(žrQÕi ¦~j5H Q¨}˜ž ŽQ'¨q躅îÇ”¤'èéé_Ó—YeÛd7ÊþlRö‰ìœìϲ‹rƒ<(_$_¬°("ŠaÅãŠãÌ:æyæCŒÿ7®éêß*ØNÝOýn¦fá9{ €úÕŠ;±“'#R?A»­Ät“€©“Ómˆa‰àv9‹ù"ÇÚ mÖ|‹9/7'Ûd4è³tZZ¥drM(Mð-}\ÒÕ—”¹øÖÖ2±Î÷#£ÿ*F_’CVË?ë$¹>IûgM5×ü‹¦Ñ®h…hY)—à¹ä»qž'×ÌïÆò¾8ßÃ%§¤ò©¼_*ë°ìp`.aŒsIÒÇ%’-Ã#‰¾8vwJÝdY)"¡;NBsÿÎA Q#‘´òñD2ŸK2Ú™è_ìœßˆ8=e¥IÒ¼Š_™¾)©÷Í4Ûq¨º Ç.+ç{µ«ùÕ{ÇXÙ'–ú—u'éþž$Õ'Žaô%Í|ÄtYk‚ï÷$¡³{,_È—*e¥§,7×9”See"­sXnÎÐßÿ ÃB#éþ/¤ ®àBÄ‘ø6œf’[% Âã\kÄl FVÕ þz®r(©jî1Ôb«¤Üi๑ €ÅO}ýÏœþŽÂi¸bQÜÎ+ò™ò8¸K;ÆAÕÙ=JÈÿê'é;Æ!^x ozÅr{DsŠck¬xK‘QâÀRI)ׂ³n÷áFÚVp-Ü n¸Ì)Q Œôp9 »‡0ïêv$…ž‚+ÅžžZìÇ'ö#“úéÁÖÎô°Vê;˜F¥ÒÒ„ÈÕÙ=¿;¹+^â= ÚÏDgwrQìéA­²+3EºsÈ23g?ι¬ L/ ±ì¢gd$Sãɉ‘‘‚ñdêãþ•!Ì0ÆAêMeœìê”D»xGÈ༧ÕÇ¡‚h^—· …~ä`¬@£n>A‘6¹bœ,l cÚhPËem4MYU ¦@¾Rõ•£eÅç›{>:g::×p1:Ç0…Xt:j8Yy0dtÝø8äÃãßþCÞñÆéO/9q,:ÒÿMßEŸÀXF€F¢ÖüÁõ­‹bÜ- JËVŽ<­~Zó”îeÕÏTïÞ žU ~Rþµj*¨_¢,-/1ÛØBz=Ñ·UøÃ‘òR½9Êœ“ñ7„5ʆzM#Óq4Æ¡|»7Pr¬„*§@P7[Üñ¢&Y\§ÈhsS`òüÔùés†‹½Ñ/Œ¦Ètô\b±)1M沆½–©I,DfåÁæíB]CŒ÷hÍ„¡œ:—Âer‘,™ ˜™r‹ÍvÈ3g» vâöÐZpYzyLi£;ÇNÀç3D QÁÿ2¿[ñ½ds/Q0ŠÜs^¨"\U\vVUº]|‘ÈCÏÍ(ø"WUe8T~ܘѪÎUHlw†TªckÇþ¨;Ø´=÷.#Ù9EëB~¿Ú™[X|þÉ×N¥Îk¶;9gMm¼žž^º`ñÍd'Uâò÷l^ê³µGÖõG¯]´ÆÓl-h#Êš<]]qËC7'nOm¬ÍsgTºó]ÝõM\x{/5’í0é)úŒC-KìJ.h‰BKë¯$Ÿäv‚ìçN­P‘«¡ÁÑ a V5öxÖ8E j·Ó­äLä’\<Û£nîHoTÜ‘)ö¿ >\˜ºD.H[`±qZ§µ»ˆÍ€«s¸H¡¾Àˆ/•àÌ®j !Ä*\ !‚ Bd¬tñ !Œ…"E®‘Ùr’¡¬•Ën8x&õç³?âj‰j¤òî;oÞ7kìoEVA¡˜~4èëøÛO?H½ß]*sÔ–Û_öþ¡CÓKšSTƒbÐAƒ"Œ(ŸÚöšWž6~düÈò[ãv¦J“Ð,Ö¬U­UååíPmWïÈÝ‘§ñ(ÍFm0[(³%›QëäºnöÁl’ÝhÓðTÏZ¢ãNCœ­ÕY,Z«á¢)"éT/·I#¢“12¼-aSPèP›€˜ .Èr`¦6Ú³] çt.ÑüˆA28Ò ½€˜ˆf .·„EâR®6ÏXS%„xjÇ þ _¥Õê8GxË#ϜﯵEbÛ=ò Q¼UJ»uŽ#ô«òrßüÉßÄÝ‹Œ7´ì¾øó÷HI›rÄfJ>ŒÑJ-|*lxÐó´çÏÛ¥¿+=_ª€ þ›ü{ýûŸõ=çÑ÷’ÿ]ߤÿ§5g}Ÿú?¬É¢}³½¯Ô|"ëTÛ4ûvÎÜYh³pT”2³¬È]àÍ´¼²Vf*3’ÊPSÛàv;4E²€É-˜‰ýÉhuü‡%¤D„0Z'šbØ{^òW†+fF‰HÀ YÙ É[UÄSZUZ킈³°¯ÒEj¼µWÛfÑÚÀœg6J6ÅTU7G&‹äÒ93UOÜU°TU¥)d We”EÐ)½ÇYÒšØeל ŠP—Ðäi{aj¼m}Ïü|úß·öímºùîC÷Ñ£\®“4Ôû)Ú‘«µjåYÔPd{Ý¥÷+ å ‚uªë­e„yþ—¤úÒS˼äùÛÖýúÇ]BßëI‰Ñø3øžhÃ7´_ ½Cʵڦõ¹72Û•;´;·˜væì̽”uQ¯[¤\£ì3ž–½iú@ö…ê·ze½R¥6[h•šR©i…9b  =‹VØl« ³™Š)(E£NShIQM…†÷ÔD-Z/Kj¡gíëí5EÎOÍØïÔŒ¾|ÂñoƈK² @žë´ºrL’G-‹ä[äY´ òŒ6,Ìdz…´ ¸ —ý©tôEËv؉ˆ»9‹Ì ŽØ3ÑЫ©•Lß¡~õ¶¡ýõ¼÷7?~ùÝ?¾ö\”Ë"Oh Ê·–ÑϼqüË®ÐÞò b;õ6)n/X]Þ݆ïæáTý:žól|CYŒog„þ¶¦Öæ½Mw5?S —{äÕªfks¤y-½¾æ‰œ',ªÆlƒ¿µÔg•幊 (×lCc… ë´w±j~E…—Zje½ó¼¯yiï¬y¡%V.Ÿ¡"YK–¸òfÏßï:ê¢\âť푇Â\¿>áÎË'ï YÑS ㆼ`Þþ¼£y²<Ñwöt&§{§dü›ü`±±ŽMF£ÓÃg{‡E¤Ó3W[Æà¥'"^m¢K0e<£ÛåöñO¼|L™[G”Ô‘\>Ïœqî¢Ì]ʼnuYænŠQ0R4þŒ•î®ýö+;ž8ÓUy¯sAQÞJ‹6t¼øL[r~î¢líó&µñ•£ù…+Zü5„,{ õè‰Ç'BMZ¿Ù“Ø|Áíß¼Ò™=¼\™ú‹°µ«9OG|kÉ’Ç„0å>Üwýû z~ [[¹å5ÕJ–Ó« ÿðå;ÚŠñ:­ÉÈzœ=«sìÁ[ñÇÞòÖ¯S@À„ÈçxgᤗÈ#7•Ùj¦¬JC€ R|ÌÆŽ“o…º":¶ WlÙìï‹ÙÙyyŸÏË[´Â”rõànÈe‚Ö®.æùVÑõTܾ€Œw§¢í_ºØ¢’ë‰F¿s=ß]nb4€Û ƒÓ•gqåÛ‰Ùâ4»íD f¼ :˜ªËΦĈ9sÉI‘Až9×QuE>Ã0-Öhru¥·æ÷Q±òî5?ªãÊg§æ-©h¼fîÊE©Y6MÝuôDMMëœJ;3}¸µ(º§õúÔàZAm³ik¯#‡úoØdLeoªÑÚ2¾ÝƒYâ¨Á»¿WpñZ}LksrÅ<ÇY8C§Ùf9`ãXƒ^fs*Q`cœÅj·‰qšCr7Ë}fП"ipĸíö „&›#E_l¸€»=‰EÃG˜Alzø«å-klr:*½t¹<=ó>*†¼¢¹UyiÉb ,Ú"¥š¤t––âª"k^å¶ðp‰yƒ\®²$ê7ëäôáÖé‰ÙîD‘3ÏÞR; –Ó ¹Z“™õ LwQ´­J¼¯—`ÜjÄ›ûIa™™ú)EišÆÉ MjµÆÀ¦…ÅÓÖÆPÄ Q¢1j"F…cU*¢R› ™&"(l¥[`Ž1Ó–£ z›Ãè6ôÎ:¦Nª'Ô´:';0ùQïðyË9´«åkÃðGh9’Eœˆ§b11ˆªX.ÓLÜŠq¬Ê2rƒ1øÄ`Šä‡ˆí¨"q{«týô‡¤àà\o»ôwŠO_ߤãed ý€åÒDÇ&õ•™nn_÷çl˜ù>‹ç¾³B½@Œ™ÏAoÌó´\¡LªIQ‰oVâ7¢}‘* %~úT_ê9æ¥+’Ë¿,ù›à ÷A‡ €A@ZŽÔƒ4Œ‰Š€G–Ut! b=å•â·2b'G)?už¾OvƒÜ&ß­ØÂ1Tv*–²`3ÆÉ÷ãŒ(0`*ÇA¾T¼†<"i˜fæ£c°®…óg·µúº†6 l-[°qCÿu@e&™€ø¾_>qH@ ̼]ú*Ò ¥h¼ ¸}‚^õ^Ñw‘Ø/y´‹:¼© ¥œ“rƒ”ÞÚ‘µŸ!û䛯y”8Ï?Q4æ”ø•.‰7kK¯QJ|:†¥cX¢àQJ|ÄÒ-8å[(‘*á,߃å]”©؈œÈÙˆœÈ‘Á ¬uâ+¤çaMužT b-†µ T àh¬¤K)LjRx‘|Næ/èÙ×7g±/“2VKÊÇvÏc_%O:r”ß&dqº_qºO8Ý=œîN÷*Ù‹`éÈz)'BV§îºæN]¬SWÛ©{‰ÔaD§CïãѽâÑ{tOzt7ytÃ]™["à:ò¤”ß'píº¿¶ëÞj×=Ø®»£]·£]·¦]çh×­´éŠmº›nœÜ|R@¿_*,žØ¯;°yŽ—ØFôÔ/„X_ií»ÆºJ‘ü`¬ëY¶1—Ü ^Áí/%Ò› .Ñí$(ÑHP’ÿÛXÀ‹Í¶Ž5üÉæ±†sÇ:ðKµc¡sÈ­ëZÎ6ªHh¦Ï ˆ+EZ6ÖpÅ%c¥ï²Fâ?q"»B’˜‡¤^4Cc].T—ŸÀ‰¦½ã„Œ±©=øZ{’ý6°€½è—!ç‚\‰ä7ÞqêÙ1ö³ÁÌ~XÎþ²¡==¼ÑuŽ}-°ž}±Tjðtüe±wxŠÉaAÃþ$p}šE±ïÿÓo éÿMïøÒ‡o="~áêãøô%÷Z’»VrÜè­Ï|úrõ­\5(ÒþäÃü@¶TX*};¾{ßæÄ?uו±6ïûžÎö‰mÇÚøqBïÇJˆc%ıv »¥±Äµ%†6mýžß¶ë¯_¾uërø+›“š endstream endobj 12 0 obj 6668 endobj 13 0 obj << /Type /FontDescriptor /Ascent 750 /CapHeight 669 /Descent -250 /Flags 32 /FontBBox [ -204 -429 1701 1272 ] /FontName /TSQLIH+Times-Roman /ItalicAngle 0 /StemV 0 /MaxWidth 1721 /XHeight 454 /FontFile2 11 0 R >> endobj 14 0 obj [ 444 500 444 500 444 722 500 500 278 722 722 722 778 722 722 500 722 722 389 278 722 722 722 722 722 444 ] endobj 6 0 obj << /Type /Font /Subtype /TrueType /BaseFont /TSQLIH+Times-Roman /FontDescriptor 13 0 R /Widths 14 0 R /FirstChar 97 /LastChar 122 /Encoding /MacRomanEncoding >> endobj 15 0 obj << /Author (\(anand\) Anand Patil) /Creator (circo version 1.13 \(v16\) \(Mon August 23, 2004\)) /CreationDate (D:20071031235254+737'00') /ModDate (D:20071031235254+737'00') /Producer (Mac OS X 10.4.10 Quartz PDFContext) /Title (G) >> endobj xref 0 16 0000000000 00000 n 0000001636 00000 n 0000000022 00000 n 0000001740 00000 n 0000001616 00000 n 0000002664 00000 n 0000009964 00000 n 0000002699 00000 n 0000001838 00000 n 0000002645 00000 n 0000002782 00000 n 0000002832 00000 n 0000009590 00000 n 0000009611 00000 n 0000009840 00000 n 0000010140 00000 n trailer << /Size 16 /Root 10 0 R /Info 15 0 R /ID [ <89eed3b5baef31359fe42454caf5c851> <89eed3b5baef31359fe42454caf5c851> ] >> startxref 10391 %%EOF pymc-2.2+ds/docs/_images/PotExample.png000066400000000000000000004055451204033704200200570ustar00rootroot00000000000000‰PNG  IHDR4Éf*/iCCPICC Profilexc``2ptqre``ÈÍ+) rwRˆˆŒR`¿ÀÀÁÀÍ Ì`Ì`˜\\ààÃyùy© |»ÆÀ¹¬ 2 UŽ +¹ ¨¨ê¥¤'300ÙÙå%@qÆ9@¶HR6˜½Ä. rвùÒ!ì+ v„ýÄ.z¨æ H}:˜ÍÄb'AØ2 vIjÈ^çü‚Ê¢ÌôŒ#Ç”ü¤T…àÊâ’ÔÜbϼäü¢‚ü¢Ä’Ô Zˆû@º! A!¦ahii¡ ¥"ŠˆqŸÁáË(v!†°(¹´¨ Êcd2f` ÄG˜1G‚Á)Ë„˜I/Ãþ©15C}†}sïPoæ³åé pHYsgŸÒR IDATxìu TÕ÷·U¤[¤U$$T”D¤A‘F$DL@Eº%$¤)éA é$Ei¤yÙ¿ïy¯7gæÎÜ{â3\Μٱֳ‡3g½âÎ[·nÝ¡—ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ@ü¸+þ¦ÖÌ" " " " " " " ÿq®ïˆ€ˆ€ˆ€ˆ€ˆ€ˆ€Ä3çñ¼š^D@D@D@D@D@D@dœë; " " " " " " ñL@ÆyvìØ‰'þú믫W¯ú«@²dÉ2Ü~eÉ’åÈvûõÐíWÒ¤IýMíE@D@‚E@Æy°Hjö½wîܹyóæM›6mÙ²e÷îÝþùgÆýß—.]:xûõ¿ÿ÷ï]wÝ…­ž/_¾‚·_… Ê•+×wÞ®™ÞŠ€ˆ€„ˆ€ŒóÕ°" ñI uëÖ9räˆO 4w@fÏž½|ùò€ºª“8›ÀÙ³gW®\¹úökÆ ÿüóOôúଞ>}zö¿ù›&Mã´ž"E <ØqfçÓ àßn\ܯ\¹‚Û;Nïü=}ú4ûí캟:u ×÷°³Ü¼yÓíóçÏ7ç¹dÉ’¥þ÷J’$IØö:.çÁå©ÑD@lA ^½zrжÅJø)žº2Îýd¦æ&€åüã?.Z´hÉ’%7nÄ6ŽT™L™2åÉ“'oÞ¼¹sç6.èìoc–GÚØ÷“LwôèQ<äñ”Ç&Çm޼Μ9c Â# uc«c™?ñÄåË—¯R¥ ›êVˆ€ˆ€‹€Œó`‘Ô8" " " "3v°çÎ;kÖ,ŒÞ°–°Õ3gΜ%J”À6îåéÒ¥³> âNì÷Ý~±/vØ#GŽàQÏ‹çk×®µ<ê/_¾¼ôö«cÇŽô«Q£ÆsÏ=‡­ÎF}Øî:˜€®§£SGð•¾åØäß~ûíœ9sÂy­×?~ ݲeËâFû]q_eЬ±ØŸyæóáðµ_±b†9Çæ$ü—·_<8xá…êׯäŠN §Î‰€ˆ€dœûKME@D@D@DÀ_$u5jÔĉ‰÷Û7mÚ´¸ˆ³]¡BBÇÃ~dŸãì·_ 6D$Œó… ’bÙ²el¤s†Àõ·_>øàK/½Ô¬Y3\îí#¼$g¸ËYâJZp’®Oš4 u¼Ó dYælŒ·lÙ’ô $f£ÛζµÌÃqÆNýõ×ÙÿÇ&Ÿ1c’[%Ó‰ZïÒ¥ xÖ°xñâpõVD@DÀÚ9÷…’Úˆ€ˆ€ˆ€ˆ€¯È£6dÈÁƒ[Ûô¤ºx­Zµš6mZ®\9R©û:–-Û¡KÍÛ/üóñÒ3f iíÈýN’9Þò¢Û[o½Õ¤I²ÇÛR %" v$ s;®Šdp"6Ã?øàrªwîÜÙ²ÌÙ9>|8ÅÆ»Ó-ó°ë’4iÒ:uêÌ›7¬ïÝ»w·|ÚwíÚÕ¢E 2Ûõïߟ²êa»èXD@D *2Σ"£ó" " " "à+sçÎ}øá‡9räèÑ£Çùóçé†^·nÝU«VmÚ´éÕW_M•*•¯c9°]–,YÈâ¾ÿþéÓ§?õÔSFòƵoß>W®\$ÃÉßjIdˆS2Îã·&pÌÎ~ýúa–úé§/^D;J‚U¾gϞɓ'—.]ÚeúF£Ï#žþyÂé×­[ÇÉߎË@«V­¨Ó>uêÔhúê#çúˆ€ˆ€ˆ€ˆ@€È^^ @â«M¾7B¬Û´iCVó¡C‡b®8¨ó»+VŒ-ôíÛ·Sh͘èlªãO¼ýÖ­[¯Ÿ4q¬TD@D@DÀÝŽ?Ž×:µÐvïÞ¦wÝu…ÄöîÝ;pàÀL™2¹[wµ{øá‡Ù-ß°aCÅŠMê¥.\øÝwß WéÝÇÕLD@ÜM@ƹ»×WÚ‰€ˆ€ˆ€ŸùÉIH>eÊ34¾ëëׯ礕-øS:vD¬qr¹Ïš5롇B ’º÷êÕëÑGÅûݱ:Ip ç!ÁªAE@D@D@\IàäÉ“DS7oÞüÌ™3(H‰rr°“õ Ô•úK)êŸïرƒ°|ò/÷òåËwèÐáÊ•+ÁšB㈀ˆ€Ó È8wú J~8"°téÒüùóÿý÷f>Š–S3¬Q£Fq4½Ã§I˜0a§Nˆ97éÜoݺշoßÇü×_u¸f_D@‚C@Æyp8jÀ’üì³Ï*Uªdª—gÈaæÌ™cÇŽM—.‹µ…j8·/[¶Œüöf [ìqJä ÔSDÀqdœ;nÉ$°ˆ€ˆ€ˆ@œ @®ììúÞ¼y“‰«V­ºmÛ¶gŸ}6N…pÑdäoóÍ77nÜøÈ# ÖßÿM"÷÷ߟ' .ÒRªˆ€ˆ€ßdœûLD@D@D@¼CàèÑ£eÊ”aŸ•IÉþÉ'ŸÌ;—sär§zãÆÍø_|ñEíÚµ•Å=D´5¬ˆ€#È8wÄ2IHø—{Œ&L¨^½úáÇy{ùòåaÆ‘X‹$áE‹mÛ¶íÚµkE*ˆ)/^¼ø¦M›3uêÔóçÏïܹ³)ÜÄY<;T²dÉÆ7hР ÒèB7ã=ËDŠ‹€x™ÀÝ^V^º‹€ˆ€ˆ€#`“³[K\.1È‘™ F¼‚kÖ¬yäÈ£Âï¿ÿΙ/¿ü’hÞÖ­[;B/› ‰M^¹rå'N gΜ9çÌ™“7o^›ËìDñøºæÎ›¢ñçÎûùçŸIGé5ÕŠwâRJfXÐÎy,ª»ˆ€ˆ€„œÀ7ß|C™hÒhËœùØcĆa·gàŽ;RgÛqýúõ6mÚôìÙ3ä2¹}‚ 6°‹k,sʤ­Y³F–yèÖœL{”£39ñüO>ù¤I¼º5²ˆ€Ø€Œs.ŠDÿxõÕW'MšdžÍ½{÷^¼xñŒ3Þ}÷ÝîÝ»cØŒ3Ƥ¿¦Õ¤UùŸQôÆgÛ·ogÏœ\z`(._¾œzæ>÷VÃ@P£îÇÌž=;÷îÝ[¡B…S§N2úˆ€ˆ€c È8wìÒIpÈ•+—¥1¾ë%J”°ÞrЬY3âÏÍÜà±ØÃ~ªcß c™gž*U*ß»«eÀˆX±bE¶lÙaÇŽUªT!O~À£©£ˆ€8Ž€ŒsÇ-™ð(D‰YšçË—Ï:¶H|Mló6ì6»Õ@1`·œ|{ǧ%?ò'iYŒ½Ô XHmHøFÖ¬YÈ‚ ˜òuÁ_㈀ˆ€ È8·óêH6ðƒ…¾Z¶li:îÚµk~tVÓ;îÀ¤àöÎ;‘'O,ó)RLÈ‘#Ç‚ Èϼ¤Zxï½÷âXM'" ñE@Æy|‘×¼" " "|–ëû7pÏþ®±K—.Dò£"æóæÍ»çž{\­®}•{ôÑG§M›–0aBD$½éí+«$àq<–ID@D@⛀‰×5R('œ_«±páB¨÷ÝwO™2…ý[¿º«qp ”/_¾OŸ>fÌæÍ›ïß¿?¸ãk4°!ç6\‰$" " H—.Õ“ôZÖ±¢'pæÌ™—^zéÖ­[4ûüóÏË–-}{}( X¿~}&"@Ó¦M|Ì5…ˆ@üq¿ü5»ˆ€ˆ€“À±cÇÌpiҤɘ1c0‡võXmÛ¶5訠ööÛo»ZW')7bÄS\*kýû÷w’è’UD@ü' ãÜfê!" " v%@8#ZÞ¼yí*£íäZ²dÉ„ +mÚ´£F²|ˆ„|cÇŽ%Ó! >üðCëëía$R]DÀÍdœ»yu¥›ˆ€ˆ€×üöÛoFe²Ž{M÷Àô½~ý:Ûæ¦/¹ÇL¯À†R¯P Ô¼©ApéÒ%95„‚°Æ°çöY I"" " ±%`6~±0[µjÛ±¼Ñذa»víBWªšvî ¥¦å§Ÿ~Jþ|„þî»ïV¯^í0é%®ˆ€øL@ƹϨÔPD@D@lCàÏ?ÿŒ( eÀ¶oßÎùÎ;'I’$b Gàòåˤ3'xçw†k ·v @ìs#ÉG}d‘$ƒˆ€„‚€ŒóPPÕ˜" " "ZlŒŸÞ PMÍTXºt)Éáâ] " ¡ ã<T5¦ˆ€ˆ€„–Àµkמ}öÙÉ“'Ÿºýâ L™2Øç5š5kV„ C;½+F§4×€Œ*ݺus…N®U‚âó$„3êõë×ϵzJ1oqîíõ—ö" " Î$0mÚ4vÈ›4i’áöëÅ_L•*Õ'Ÿ|2nÜ8Yæ>.éüùó÷ïßOãŠ+(PÀÇ^j_4h9sffŸ9s¦Ò¶Ç×*h^qR¼\D@‚FàìÙ³'Nd¯ÏßÉŸDGbkýí¨öv&(Q"‚o:´hÑ¢éÓ§?~|ç΄š+jÚ÷U9r¤ilek÷½¯³ZrÝX¹råš5kœ%v8iyêôúë¯sòÆcÆŒ ÷©ÞŠ€ˆ€ È8wÁ"J7ؽ{wß¾}Ÿ~úiöGñXæ®Ô/m‡þÄOбF~utSã[·n¹I°ºdÊ”©|ùòÏ=÷_°çu#sçÎ-X°€flÆV«V-ÆöNl@VÒ›“€ K–,eË–]»v­µ+3éôÍã§o¿ý6ìy‹€ˆ€;Üí5¤…ˆ€¸’±ƒ¶*W #áǦײeË.\¸"EŠqn—7òx"qâă r®’<¾ÿþû+W®0rݺuïºË…{ .ìß¿?»å<†0]ïpÿý÷—.]zÕªUT¿Û¶m[þüùCñÝИ" "_\øk_(5¯ˆ€@»víöîÝËÎyÀ#×®]Ûô­Zµªw,ó¿ÿþ›¼H‘"E‹Åu™·TG·0ÛæhW§NWêX¹re‚ê)¹ÇÃ)£ 9Õ\ ©µ^Ö º@)© " †€Œs}D@DÀîžzê©€EÄ tóæÍlò xuܰa믾Š/±©¿üò‹ƒ$—¨qI€H*r1#YôŠ/—SÇñ\”»衇̤î0Î+UªdÔY²dIÃÔt" "jnx†jF_D@â—@š4i,H÷õØí—5‚+ØŸ4i»å›6mr¥‚F©?þøÃÒîÌ™3Ö±ü%@*‡'NЋ'_î0Y£!wîÜqãÆ 6,}úô‘¶±ÿI¯m•‡[JU‡;£·±!@Ä2ÝÙIΚ5klƱUß«W¯Î™3 ‚±ñªxâ‰'Ê•+פI[ axà3ŽYÇ Œ©AD@DÀsn‡U " ž#@åaŠœ=óÌ3G}ñÅûô郣&»ÁœÁQ™êGÑÁ’'ýr‹-¦OŸ¾uëÖ3f°¡Z¶lÙS§N…íuãÆ j›“´ªV­níì½ó'yîÑóçÏÏq²dɾúê+°óq•7ô·gÏž VT9ž< qú5n$Mš4n& é,<‰«R¥ >8<°³,s3#øxúè#,óçŸ>bšh,m+³W’$I"%E¨¹e™›*T°ZþøãÖ±9°2'…;oó·Ü|ãos!%žÓ ¸ÃXíÝ»7–9þùo¼ñFÄá ê"žwôkánݺåhE$¼ˆ€„# óp@ôVD@BH€ñ!C†0AË–-#N“(Q"ÈiP¼xñÊ•+GlÀ™Gy$ÜùtéÒaÒ8p€ód ÷iŠ)ÂqÄÛ6mÚ”.]z÷îÝ$¸š={6 ®¡Xò{ï½·oß¾wWG÷`“ùŸÛ/§«†Wn&h[{¤Ï³°cIQA¢ ÚX6­ÓµféŒ î{îàô¥‘ü" ±$ ã<–Õ]D@ü 0zôhcdæÎ;Òn=öuÂ"ý(š“XìÆ8?þ|4Í÷QÞÛ¯·ß~›áyóæa¨/X°àìÙ³þ*B&üöíÛûÛKí]L€ŒüñG°â&â— wmâY"•ÄrÃqqn-œŒóHW\'E@œK@níÎ];I."à<Û·oGhP­lÃAÑ!A‚f·:yRÊ›Èy²Ù“’šôXÚlñ&L™2¡8&±ñȰ:sIA«º˜¤ µ }úÔ5;çVys³Ž1*®" "àº;tÊJINÇ O»)`NµÃ‡;^ŸøV Ož›ÿ¦Å¡C‡¢kzû3×ìœ[«F’޵VpçZ,‰*"àl¸²[yàF½2N…^»}Š;uÝÉõeœÞ)1U¶lY9½‡ˆ¶£‡µŒóõë×;W²WXÏ¡L>vçêâ—äfÕ'NìÐR‘~)«Æ" ž" ãÜSË-eE@â™ÙÇS§Nݶm[TÒö¬fÍšQ}ªó¾Àé½C‡+V¬Àé]©Ú}!æ©680A¸Z8:¢eRÈÀŠÄŽj)ݱsŽÀ¾}ûБ’“zôÕZ뼈€C È8wèÂIlG¨R¥Š‘{ E‹§OŸŽ¨%|ëÔ©óꫯFüHg €Ó»|_àæî.$eÄÉOž<ùË/¿8WYÊ›áñµ>|x¤ŠšnÎ_»v-ÒÎ:¹hÑ"#p… œ%¹¤ È8‘ˆ€ˆ@Ð4kÖ¬T©Rf¸Ÿþ¹téÒ ;:¾©O?ý4ÑéÖ=7Ÿb®[mH&g[ÖIë âGœ‰ø©ÕL"à5•+W6*O›6͹º7iÒ¤@F~â8æÏŸNžš"œÿõ×_Ã}êÄ·ÖzY+èD-$³ˆ€DJ@Æy¤XtRD@BB·Rv·,WÌ]»våÊ•«pá­[·&YÅŠ‹)BÖå±cdžžÍ=ëmØãˆ'ñ‡·Nšƒ°í#~®±ÞŠ€wÔªU‹ýsôýöÛo«5™,H²`üÕ¯\¹‚R“&Mºpá‚ÑèÈ‘#ÈpÞ¼?~<×–¹sçZg§8±¥K—"öƒ>øøã;N~ ," Ñq=}*" A&ð裲»•%K3.Ψd2dH¿~ý–,YR¦LvÔÓ¥KvVò[o¹ó¶ŽÍÁÎ;7oÞl޹m kã7¥¼|ê¬F± Àžy… ¶lÙÂø/,^¼øÞ{ïÅxê*" # ãÜa &qE@D@D@BMàÉ'Ÿœ1c†Ù³:uj5Lüs¨çõòøÄ™—)S†ˆ6yÉ’%ýõWzßÿý+W®Ì;w@#©“ˆ€8˜€Œs/žD‚Ÿ1ËS§NÍëׯüñÇ7oÞºé<;2N ì™ÿñÇx衇~üñGYæžý2Hqð8çÿH}( -|õêÕÆ¿úÈ‘#¥J•úú믣l­ü$pãÆN:½ð &jÀÐ~àüFÍE@DÀ%dœ»d!¥†ˆ€ˆ€ˆ@(<üðÔU+Q¢ƒSù¼Y³f¯¼òÊ¥K—B1—§Æ$Lß„Ï>ûìÖ­[(Þ°aCâÌ•ÎSß)+"Ž€Œóp@ôVD@D@D@þC C† ?üðÃ믿nÎŽ5ªP¡BëÖ­ûO#½ñ‡iöòçÏ¿|ùr:Ý}÷Ýýúõ›0a‚ª¦ùƒPmE@\H@ƹ U*‰€ˆ€ˆ€—@¢D‰¾üòËqãÆ%Ožœ‘÷ìÙƒö‡~xåÊ•àNäúÑNž<Ù¨Q£:uêœ:u e)™¶bÅŠ7ß|ÓõŠKAˆ‘€Œó©ˆ€ˆ€ˆ€üK qãÆä„+^¼8Çׯ_ÿôÓOï¹çž¹s犎zõê•5kÖ‰'šöuëÖݺu+9|ì®f" "àn2Îݽ¾ÒND@D@D ˜råÊE:ñ®]»&H€q >æ™gêׯO™î`N㺱~ùåŒðwß}÷êÕ«(—2eÊñãÇOž<9mÚ´®ÓU ‰€ˆ@€dœNÝD@D@D@¼IàÌ™3¤ˆ#Ó¸¥þ·ß~›'Ož>úèüùóÖI<¶hÞ¼y±bÅÈ{o1á¡ áL*8ë¤D@DÀãdœ{ü õE@D@D@ü °xñâ ÌŸ?ßô©\¹rúôé9&‘û'Ÿ|’#GŽž={rìLjîmú×_LNéò1cÆÜ¼yEñ;(X° <Ú`½fÍšgÏžu/i&" þqî/µð&k×®½÷Þ{Xãþù'2eÊ´hÑ¢ ìÝ»÷­·Þ"c'IrFê¢S!ìܹsÞ…Ö‡n×®]öìÙ `ræá¾NJö]»vmܸ‘DzwÝõï-è¬Y³ .ÌÏ‚’â" "–€Œó°4t," " " ‘Ø·o!ÓìŠOìªU«nÙ²…2Ý4M:uŸ>}~ýõצM››“ãN:=ðÀo¿ýöþýû#ν§6lØÐ¤IvÈhªÁ'K–ìƒ>€»èTMÑǹsç^³fMûöíï¼óÎH‡È—/ß„ ¨‚þÚk¯%Mš”6ÄZÏ™3§ZµjÙ²eëØ±#ì‘vtîI€ ,Nþl˜“'Ï(®x—.]:Ô»wo>ŠT;*œÿðÃÀ4Ÿ~óÍ7E‹ݶm[¤uRD@¼@@ƹVY:Š€ˆ€ˆ€øMm6ÌÇgz6kÖŒz`ÄHÇ8iᆠväÈ‘=zàÜnÚÿñÇŸþyÞ¼yɈÆÁo¿ýã8vn2ºá/PªT©#FXiêÑnÔ¨Qdh§ÚEà£W!a„¸!LŸ>ÐZòä‚òt¾—>·qîÖ••^" " "  °tÌNcB§J•jÒ¤I¤Ož<¹ï#bš’ŽXkvΟþy QÓ—`u¶Ðqwøá‡i°jÕªëׯû>l<¶$†þ×_MoÜ×{õêÅÞ¸‘‡ºå¯¼ò »è8«S8-I’$¾Ë žz)R„.¸Ç3Þ &^Ý÷AÔRD@\@ànè D@D@D@D XŽ?Žq¸páB3 {¹x\“x<°ñ‰?¯~ûE–8Ê¡óZ»v­É*Gêr^$™Ã²}òÉ'Ë—/ÏßÇ{Œ¬iÍŠ^XËÛ¯X±béÒ¥H~õêÕ°³ðĬx/¾øb­ZµüzrvŽñ5øé§ŸHz?tèPÞâ­ÀÎü”)Sx~®¥ÞŠ€ˆ€‹ ØèêïbÊRMD@D@DÀ°É±Ì±Ï‘–¼âxnS½<(Ö2 äÚÞ~±ÛŒÙI±Õ«W›,q´³#Í‹IÉmΦ4™ÕðŸÇEœ´ç&|œÑ#—ÛÎ;Ùg7›ðÍ›7GÜØ'œžG Ï=÷6yŒ¾ë>Jž8qâ!C†ðx¢E‹A†Çœ,î7öq5§qîô”ü" " " A €QŠ·9Þìf[;sæÌdÇ ÂÐÿ‚Ìp”XãEQt²¸S,}É’%ÇŽ3­pç&M/ó–íhvóÜ~‘ŽŽo‚Ø3fÌUFºÿNÃ;  OMrê™ïm½Âm[£ @… H´În¹Iwg}¬ƒzõêñT¢N:8ÿ_¼x‘$s 4hPˆ¦ –ØGD@‚B@ÆyP0j{X¾|¹u§k/É$M´° ¢ý\Š@¨[ŽoöÆÍø¡SÍâÕ”wÜ‘.]:òÀób 6Šqg/¦²5)*^弬3°Éœ%K¶âÓ§OÏ_ª”áÏ‹ÒeTzcŸŸîôìx›µÊØ‹6¯Ó§OŸ8q{^\'£/ðƦ=ˆ½§y¹råî¿ÿþ°b„è˜h|üçq29r$Snݺuß}÷¹ôB4£†›¸Ó<¶‰4CD@bCTÅfõµ Rd•.]Ú&ÂH ×`‡œ:Û¦È6vï_|Ñ®]»xÔúÏ?ÿä1Žå¸”³Œ­½ DQQÛwzÒÔó—$m&z§ð}(ŠÒ‘|ŽÇtÁƒ€øæA†ï#¨¥ˆ€8‹€vε^’VD@D@D hØLÆ,Ç4#âk!ID@bK€íVü2 7¬ܱcž¢$v"8³uëÖ'[Ž­Xê-¸Èù„Õ;.¦Ñ#<’/_>j)a6DÛOŠ@l à+^¿~ý}ûö™(6pàÀؤ­@~öçBwòäI|ÔÏ;g\Ö±` 7®ìl¶cf“M;œÿ\Æï¿øÀOø D­û)r ÍIߦM«øù£>J:=¹¸‚R}D@lO@ƹí—HŠ€øL€;T2-SRxÞ¼yì)Yý:tèлwoë­ìF€')ùóç7NÅÈF˜+YškÜ~qÞnÒJà‘ׄN:‘uðÜ>|8©È\ š[UÀ»¡eË–æ*ÁeqwëBK/ð8çÿH}p6¾0ÈgÏž½råJs«V+Ò ·©L¿a™Øð˜hRî¼# †·í3Ï<ƒþÔSO ±Îˆ€¿p'øâÅ‹MÇ’%KNš4 wnÇQû8&€c?YÜqq7óâ逋;•çâX M'" ¡# ã¼ÿþûݺuÃñ;ú^úÔ&pq'‹ûW_}eä! †,îä“·‰xCD@bI@Æy,ª»ˆ@œ0Žëä8®S(ƹåÐ#"û4çÜ•`–Ó;†z¢j¦ó"ŽÁØ|ðA¿~ýL’à)My°pÍôÖþ&NœHwãâÎÎùàÁƒ_zé%û‹- E@D F2ÎcD¤" ñOÇõÛ{ä³Ù踕|rhŠŒmÏGåÜ•Àd™6¡érz ‘Î{÷ù/¿übÞòµ=zt¨Ë˜ ~èàâNŽêÌ™)ÈëN:þ5¡›Q#‹€ˆ@q5…ˆ@ p\_½z569ñäÑ8®G5´Ú£"cçó1:·G%<7å+VÄâ’Ó{Tˆ¼|þ믿¦^ƒUƼW¯^dÿö2wè~ùòåöíÛóDϨC­‡É“'?öØcîÐNZˆ€x“€Œso®»´»Àk’¶¾8®G¥‰Ú£"cóó>:·G¥Õ¡pwŸ9s¦SÊDE¥ˆÎ…Æð&ß›ú[”1—ý¶6„˜ó-Zœ?y’$IBØ+nÙ$†ˆ€øKà.;¨½ˆ€ÄrƒeΜ9à‰phÿä“OñH€¤Ùll,{ï$â–e0@7u\·n]Á‚-Ëü•W^Ù¸q£,s7-1ºÔ­[—h…"EŠpÌ^:Epw7¶ºË4•:" ^ ãÜ «,EÀy%J4vìØÀR(ãÐ>fÌÕNsÞªÿOâ×^{íé§Ÿþß;ÿþå¾¼víÚþõQk×àMÏž=K—.½ÿ~”£Œ9û«#GŽTÙ-×-õ¿ åÌ™“(²¸íXëB… mذÁ•ÊJ)wqîîõ•v"à`E‹}÷ÝwP€(DÕN €›}º°ï=jÔ¨r;¥OŸž¼ÍöQD’Ä ʘW®\ù½÷Þ3É#¹6ŒúØñ"Œ&<Ï0`ÀŒ3Ò¦MËŒ<”yâ‰'pq›Ù5‹ˆ€‹€b΃ER㈀Ÿ¥ .¼cÇ߇V†vßYÙ¼%¹—[µjå—S¦LѶ¹_ÄÜ×xþüùÍš5³Ê˜S;­k×®ùฎ4:tèPýúõ׬Yc”%NXéÒ¥ó‚îÒQDÀ´sî‚E” "àZƹ=A‚>j(‡vA9¢Yürn—C»#–5tBò,4¤ë7–yÖ¬Y—.]úé§ŸÊ2sŽœ-[¶•+Wâ7aOP샼Ôà´¡¨ID@"q‘‰Îˆ€؈ÎíÜfù(Ú}åˆf~9·Ë¡Ýk:!)c^²dɾ}ûmÎ,ÕÕý©§ž ݌ٶxÓ£G|(2dÈ€GŽ)W®)BoÞ¼i[™%˜ˆ€2ÎõM°;7ß|gõ¥T†ö9®™ÛIë勨<Á¹÷Þ{}i©6î#@sâ_HÙj‰'8pà¬Y³äÉì¾…öK#òð€Æxßܸqã£>ªX±â±cÇüDE@D Ž È8càšNDÀ??ýôS±bÅðoÇe=šžrhŽ£?òŹŒ_ï¼óÎ[o½uåÊG++áý%@Ŭ† d~áÂúæË—òimÚ´ñwµw%L™2-^¼˜=sµlÙ2\Ü.\èJe¥”ˆ€;Dw³ë ¥…ˆ€C °×Ñ­[·²eË’àgûöí¤ÞF9´GÇÑÅèÜÎ))qf&3sñâÅwîÜéh}%¼ï°Ã©˜¶Œ9Õ³ (àûjéz<·íܹóòåËï»ï>”%AÕªU­Lþ®W_ Š€8Ž€ŒsÇ-™O8|ø0ñ¢¤YÆDGá'Ÿ|’Òå<òH¤ÊË¡=R,®9½sû°aÃØK’$ úâÅJ’θFw))peÌÓ¤I£2æ‘‚ÒIC L™2›7o&s;oÍ—‡3°•R³ÛŠH;¸Ï~íµ×Ξ= RûtéÒ¥cÇŽl€°-V¢D c®[˜8O&^6·€¸ò€ûé *à•N»ºuëNž<™“øV4hÐ`Û¶m¦Á³Ï>K¥tE¡‡Ã厷”1oÒ¤ îÊFþï³yNŽnwh'-BJ ÿþl›“ØŸYR§N=bÄ®!!Qƒ‹€ˆ€_´sî.5-‹/¾üòËÔÄ2–yöìÙ)ŠƒS"8Gš¹]í¡]{Œ©s;Ú‡ b|ôÑGqrnݺµyK>0Ü›—,Ybñ%EЂ›•5–9—…N:ýðò̃Æ×í‘^”è¹råBÑsçÎñ[óꫯþóÏ?n×[ú‰€8†€vγTT\O€dËõë×ß³gÑ”Ð/¿ü2UªTagǃ´ÌÄ›“8´ã¬˜4iÒ°mtìV|Zµjei7eʔڵk[oÍÁܹs›7on*]cÒ¿ýöÛTº&¡`¸fzë8üßÿàƒÈ,€ÂSÆ|„ *–æ¸u´ƒÀÿýwË–-'Nœh„!` œ¨Â¦ì °dðçÞYki*ö%ÀÝvŸ>}Ø3Þ†)S¦.>Ö¹Ýrh¨ïñãÇ›6mjådæinÏyò䉨RgœB€2æ/¾ø¢)–†Ì„-Œ=ZÅÒœ²|ö”sìØ±øÚà®…x<áÅã]t{Š*©D@¼C@níÞYki*6%@áY ÒR ËXæ?þø¦M›¢²ÌÑÁrn—C»MW4dbYÎíaÚ#Ζ1cFœŸûöíKÉk>Å¢+R¤!è[êŒ#„+c>hР™3gÊ2wÄÚÙYH*ðmܸñ±ÇCH<ÛItÂ#?|Ýí,³dp=ç®_b)(‘À©ÐêÕ«“/_¾L‚ëòåË?ðÀ˜¾mÛ¶]»vm$ÝBpjΜ9a#Hßÿ} ›çÌ™3ú©HW«V-rtGßLŸº€ÉÜ>tèÐ蓽aÆóìæçŸ¦ð5Ø{å•Wð?sæŒû˜¸X#®T˘[™\¬¸T‹8Ôp•°¾QDÊP ôÐÍnŸßÐ騑E@bC@ní±¡§¾"à0Ü‘;uêTþb#ýîÝ»/\¸P³fÍ#GŽ„U†éÄvZ·,a? Ö1°[ŽûºÒñãÇ—+W.Xãk€bXéÇ74¨uÌ×LÊŽøn¬_¿ž$ûöí3ÒòxeÀ€É’%s„ðÒY¾ÿþ{r‘ž>}±ùùûøãIên‘E[ýøE# """ (#¢¡5¬ˆ€ÝàJ .‰Ž1ÈlY²dᎤtéÒ/½ôþäÄôš½ô›7oâÌ}ðO< -Èè†+;Ûæfpž,X°àá‡Å\ÓË&LHqãB… ñµÇP?þ<Æ9eË– â·— ‡Bw.D½zõjÔ¨ÑÉ“'Ÿ’W¬n5¬f(¦Ó˜"7o^R’Є_@~þ–.]ŠWÅŠI€8öùñ Š:DD „ø ÔKDÀS(Nf]Sî¹ç\øÂª?f̘$I’˜Ü—õ:ì§A9¦ü•5ixHÁ”a5ˆDCà?þ pÃúæó(ê·ß~‹¦½>Š/$¡À(²VªdÉ’ˆ/a4¯§\¿~ý£>²Û‘ÛbÞ¼yA$ï?¾AÔEC‰€„ˆ€bέˆ€W˜¯F[|×K”(VsränÎà‰×½{÷°ŸÆò˜}0Ò,¿ñÆÆ©žL<äãyýõ×c9¬º‹@Œpaóü‹/¾0»¯E'¸”í¬;ªA\Àƒ†ËBØ2æØ3$ˆK4—g $H [·nË–-#Ì 'Nœ 3Ë[o½e’•ÆK<þøÆ^x "7dœÇ gÍ"6"¶æ³I—N¸Æ[ædE÷iÀo—,YBî·Ù³g›Úµkgåë xLuß %îÝwßÅU$wîÜô"¸ƒGQèR~f߆®%öO‡ªU«fjÔó0…+5ê ݤY" æeË–-¾í±V}#€ÍƒåC„ ݱ…8kÖ,•1 ¦z‘õJpï"WcâhÓ´iS’íÄ)"Ä߈ƒëŒˆ€ý È8·ÿIBˆÙ²e³f%îÎ:ö÷€ôr$Ê6·Ýxô±3FøŒ3ú;ŽÚ‹@Ð ¼ð <'Â…•‘1Ë)žT¦Lr}" ì‚h°yLý¬ l¡6mÚDÕ^çE Ž ˜Ä(–£ÍĉùE£È_èÄÖoè$ÔÈ" !% ã<¤x5¸8•@Øm«œ9s ÆÙ³g‰æmÞ¼ùÅ‹énn»©8MÜo£©‹„‚eÏIþDÖCØL8:Yâ¸ÿÅ\3ÊVaçL˜0ÁœÇþá)¶P¸fz+ñK€’¢8ÚÿBI?$Ù·oF-_° Ëûß ‹¤E@â’€Œó¸¤­¹DÀ1Lp8â¦I“&€n"x1r¸›1 ·hÑ‚ÛnÎ8F êyvìØ‘šÆæ!…Ðñ\mÒ¤I¨W=8E‰péÝ»7AæØ9|ŒÍóí·ßbÿ`EÒZ§DÀêÖ­»yófB´ÅdQ!DëÏ?ÿ ºh±üñ º<PD Ž È8càšNœA€¾äÏŸýúõ-[¶4¸ã*_05¯¸Œ€vÎ]¶ RGü&pèÐ!6Ìúé'Ó}üøñ÷ÝwŸß©ƒˆ@$H{ùå—O:Ź»îº ã¶K—.$… Óćd—ä‘F\*8|ýõ×”op†ô’RlLÀ5W 3–h"à02ζ`W‚K`òäÉ™“­a1ºuëöþûïcHw&Þ$pôèÑÆã nÔ/Q¢Ä¤I“²gÏî d  ÂÅ\"Ø'ÿì³Ï:tè ôZA‰js.¸JØœ°ÄgÐ-¸³ÖKÒŠ@Ð6–ÄN/¾ø¢¹íΑ#1çlîÉ2b äyY²dY¼xñçŸnÜ¿Ù|.X° µÖæÒ¥Kd³«W¯ž¹DõmõêÕÄ™Ë2wÄòIH§ˆô*ÁS<§È/9E@‚K@;çÁå©ÑDÀ6n܈ŸêÞ½{¸¸µS ‰’HÎ^RŠ€Ó_Ú Aƒß~ûÍÎvú!Cìü?nË–-<¹³j>‘nèСvØißÉ+á 8î*^½íœƒ¢Æç ÚS¯^½J–,i,s0Ÿ0a‚n»³†’Ôy(9¶iÓ¦¦M›ÑùOÇúÏ?ÿlOM T¼xqc™§H‘‚sÖ%ž‹%©\CÀ\%š4ib4â?]¡B…Ö­[祈ˆ€/´sî %µ— Ó2?üK–,1úpÿïí.QOjˆ€í |ûí·$r·m–Ò×5oÞ|Ö¬YdáÂ…ø¡‡²=W (î!ðÍ7ßÈݺJ|üñÇï½÷ž"ÎܳÀÒD¢% ãQ¢D^\$é,ñJ€«0kÖ¬1R”+WŽô¬Y³Æ«Pš\D .È­=.(kˆ_—/_nÓ¦M5ŒeÎüÒ¥K»wï.Ë<~×E³{“Àƒ>HÙó>ú(A‚À$¦úŒ3â‘Æ7§|ùòÆ2OŸ>ýܹsûôé#Ë<ES{™W‰U«V}øá‡æ*±|ùò |ÿý÷^f"ÝEÀ#´sî‘…–šÞ%°cÇr¿mÛ¶Í ¨Y³æ¨Q£î¹çï‘æ"`ÔG` ýðáÃF*–õë×/Y²dq,°G÷ÓO?™y+T¨À]¦L™âX M'"‘&:þ,ÖU‚Ò§\%’&M±¥Îˆ€¸ƒ€vÎݱŽÒB"'@vrÌËœŸsÞ²A'Ëy§TÆ<Ôä5¾øE€«Ä”)S¾úê«pW ¿Qc§[»SVJrŠ€Â&v¢ç”OKœ8±C¨©ˆ@سgá'¿üò‹™³jÕªcÇŽÍ!CˆDؾ};ẻy1ãsÌŽ\ªT©B4†ˆ=_ý•”8»JÄ^` "íœM]DÀ¾®_¿Þ©S§°‰HÒ>pà@Yæö]3I&wÜ‘;wn23¿ýöÛfãzþüùx»,X° l† F´‹±ÌÙ‹=z4¥›d™‡µÆ È“'W‰:„½J,\¸0ˆSh(x' óx_ A#pàÀ«¯]»ÖŒHb§qãÆeΜ9hh X¼xq“&MþüóOæáüÍ7ß$¦ÌR Ãéc× Æj›6mx‚o4ù«DñâÅ]§¨·qî¶•>î#ÀOlëÖ­IÃnTË;7»aøª¹OSi$"à;nµy`wþüyº%Ž¿7oÞäï=÷Ü3jÔ¨š5kú>”ZŠ€¸’w ¯¿þ:>5hGr¸nݺ½ÿþûæráJ}¥”¸€€Œs,¢Tp3ʘ㜶gÏ£d³fÍpaMž<¹›u–n" ¾8pàÉÞ¸JXÍ)Ü0uêÔûï¿ß:£/8tèPÆ úé'¡lÙ²T]½ï¾û¼ÌDº‹€ (!œWG²y@ÿþýÉÉl,óT©RáÙ>fÌYæ^ÿZHø;wrçý¿wÿþK,ú¦M›ÂžÑ±ˆ€— PF‘²ç_L 8&—$åнÌDº‹€ hçÜΫ#Ù¼KàäÉ“l’Ï;× Psï~¤¹DFàêÕ«n0`€ùÐ$†|˜JHVÖ–J•*7ûÜ»D¤¹ˆ@$f'ñò7ß|cÎQÀœTÌ3ÓäßÃ]»v‘ErË–-æü³Ï>˽xºtéÂ5Ó[ÏØ»w/W‰7UªT᩟÷+V¬xê©§<‹NŠ‹@¨ hç<Ô„5¾øD€½¯‚ Ëœ}rvËÙ3÷ñ—Ò§ ÔHDÀÉÖ¯_OEË2'^tÆ -sTÌ—/ßÏ?ÿܶm[£î¬Y³ (°lÙ2'k/ÙE@‚IࡇZ³fÍ;ï¼Cèãr¿ÁUbþüù1ÎÁÆ{åÊ•wìØcK5Œ€vÎã¦^"4—/_îСƒå}š={vvÃÈ´ 4ˆ€“ àqÚ«W/^®]»†8¦Ž1¢N:1ê4oÞ<òJš,qT6&ÜǬ™¹©x‡À’%Kš4irìØ1TÆPç¡{‰'Ž”À_ýõÈ#°¶hÑ¢k×®5éß#m©“" q0:u  â«^½z[·n5c‘©…ÛîÔ©Sah !"à|ÇçÖyÑ¢EFj+²yNm$5ûóÏ?›6mjuç©ß¤I“ræÌécw5p=ŒíæÍ›Ïž=ÛhJ>Z.28àDT¼víÚ$¶0ç?ýôÓN:El£3" ±$ ·öXTwœEËyül,ó¤I“b–ã0&ËÊÏéüE­E@\JöŽ;öéÓÇdQÎ’%Ë„ Ê•+°º¿üò ùŸ¨ÁfFhذ!¡4©R¥ x@upJÿüó_}õe PÓrh«²œÛÃÒб‹€v΃ER㈀¯ÈÊæ•e™¿öÚklgÉ2÷ŸÚ‰€Û ìÛ·¯T©RlwËü™gža/+6–9À¨¾†}Žóª7qâD®Bäs;Ké'"à+ö H<ùÆo˜ä©ÅÅÜì¼mÕªÞïá"'%êáNê­ˆ@, hç<–Õ]ü#пÿ÷Þ{ïêÕ«tÃ}äÈ‘¾$vòoµp,Ìæ–-[â\ƒ¤eâÞ·]»vAÔæ»ï¾ãàÙ³góî»ïîÖ­Ûûï¿Ï|§ÐP" Ž&@ü9òŒ5ÎÅ+Ò!C"Õˆxžú‘%.ÒOuRD 2΀¦."Ó§O“9ÙʹR¢D r®<øàƒŒ¥>" ®#páÂ…Ö­[ýõ×F³`t¡Z 5¸6¡\¾¢–" n%ÀîS¥J•¬jä<È›9sæ< })ÆF wF溄çüÁƒÇŽ˳€¼yó†b:)"à8)S¦lܸq²dÉN:e媈T‹£GâãS¦L™H?ÕI È“Í_bj/þà‘s÷îÝÙ›:rä=Ó§OOña\Uq(õo µp#Ìc¢]¨‘fî€IÒFB J9$Ožõ_ùëï°tY·nÝË/¿|×]rÎõžÚ‹À¿´s®ïÄ–ÀôéÓù¢"%Nœ¸wïÞ­[·Ží ê/"àC† yûí·/_¾ŒBؽäBg_ÚÊýòË/„Ç›ìŒÅþå—_¦L™ÒÂKHظpáÏyŒÈfÃ_ýå×PÝ»wïØ±£_]ÔXDÀq®o‚NàÊ•+Üs[e‡råÊ…?X¡B…Q=E@\DàôéÓÍ›7Ÿ9s¦Ñ©páÂø‡çÎÛA*^¼x±M›6윙ÙR£öDñ⍂Dˆ ŠJ°Ž•ÎkÛ¶m¾ %çv_(©DJ@Æy¤XtRb&°oß¾ºuë²³dš¾øâ‹#FŒÐžRÌàÔB¼A`åÊ•l5㊺”1'àœÚiܳ:Q{;¾úê«çÎCø»ï¾ûã?&¯»ÜV¸”’YbCàСC$¾ÅJ'æ…ý‰h†Ræöhàè#ˆ†€Œóhàè#ˆ’á帲Ÿ?žI“&¥øP‹-¢l­D@¼D€¨ËO>ùäÓO?5›éÓ§;v,i)Í€›ò ¬^½ÚhQ®\¹ &dÉ’ÅÑJIxÀ§w uê;Dåô.çöÀت—Ç È8÷ø@êûM€GÅ:t ˆÔôÌ“'Ï”)SòçÏï÷@ê "àF¿ÿþ;æ«V­2Ê=ýôÓ±Ô w®û¬ T“ " °œÞ1ÔÉ|v9·‡¥¡c𑀌sA©™üK œ+;·àÆ #Ó舀ˆf̘ñÊ+¯jÎ1îߘ²TXt™û7ϸôñ ¬8%‘ûôé“$I}D@pà@ÞÚSTI%"ÇHÆŽOÍСCͼ>ø ‰ÓJ–,ÇbÄÍtgΜ!gÚ´ifºG}”ší<òHÜÌ®YD@lB€!²iØD‰D™2e:vìXÔP¾°©ä»j¸é$?çæÍ›wß~ýú믔õ6n>ÎŽ‰ÎË46{JQud‹‰›Z|ÅóÞ~QV·@uGÕ>nÎãÊþÖ[oY·ÝˆFz$¹²Ç |Í"ö'°sçNRBZyŒIIzÈÔ©SÛ_òÀ$L›6-y7б}ûö—.]Ú¾};ûc}ûömÙ²e`ª—ˆ€ˆ€ˆ´s®¯A$ˆ â^“Ä?¼6lØ€Iî£)NFâdÉ’™q6É&LÈ68ÛætÇ8g#ýêÕ«$asò<·nÝŠdî§èŽ­Î{P¥J•b‹&Ž}D÷ïß_§N++{£FpeOžkÖ,rxX ~ÂJÆ86p¡B… ,È®5ÝAI;Ì;Ž‘¼°óÃNgŽÿüóO¶ëq•Ä—žÈi>Ân7éFxË]`5ÈL>äĉG'6gØççwØ3ƒ(+{l`ª¯¸Àš5kØ4æ&ƨöÆoôîÝÛƒyѸör¬T©ÒK/½ÄóVÒ‘ðäôƒ>èÚµ«mˆ¸ïÛ(D@D@ÜA@;çîXG¿µÀò\´hÑäÉ“¿ÿþ{œÌÃõ'O»ÓøãI^¸paìóp âø-Îð˜èøØs7üÃ??~<œ$™ÃDç©måÊ•ƒ"-7ÜD®[·ÎLÄ-8Ñ•Êʻފ€7 øóùçŸc|šT÷Üs¾Ü5kÖô& Kk²5iÒ÷+s¦D‰¤ÄÃÇÊj —ÐιËu´sïk*ã<Þ— ® ˜„ûHÂ%fc÷£\¹rì~°éAª3v¶ãZ2Ÿçc#ß{.,[¶Œduaû‘ÏsbÔÞ÷ë˜ù¦M›’Ž˜^ìƒõïßÿµ×^ók5p+êSxbùòåFÁ'Ÿ|râĉD÷¸U_¿ô"^©W¯^;wæù/‰B"C7ýDE@œB@ƹSVÊw9eœûÎ*D-eœ‡¬í†%¡îøñã¹Ob :¬p8–“‡WÅŠ—ä ¥Ø¥Á'ŸÚÂáž5ü‰EÍ6Ž_ÛÝìƒáIÍ^“¬.W®\”Oß?,1‹€x–Àܹs›5kvòäI«òÃ?ÄåÀ³@"Uœ4¢ä¿ýö›ù”gƒöëRé°:)"`72Îí¶"±—GÆyìÆr„»bÙ_ÝíO€DkÄN³±óúë¯[–9)…Ùü™3gÑÝcÆŒÁ!Óq–9äÑoö¯¾ú -æÍ›‡)ni±uëVB@Ñšh$™óe™•Ä™Ÿ¨Qc™×®]{ãÆ²Ì}A§6"àz×¼ùæ›Ï<óŒ±Ìï¿ÿ~6Ï»té"Ë<âÒ㸄‹dóÑ×_Mx{Ä–:#" " "–€Œó°4ÜvLAr2ô°ý‹Áiœ´Ñ0r ÿ`Ͳ‘^½zõ DhÇ;8j¶U­Z•[@ôÂiÿ‰'ž0"‘e½_¿~Tøà6‘âpÑȉ“™ÑtÑG" !@ "¨­ô<ÍäAg™2e<¢~j²O·sÝ»w/ILðx7>P]D@D@DÀ dœ»s•ñ'lРÁÃ?eÒÜ" " "`32Îm¶ þ‹C 1¼.+T¨`êÖ:¸eË–c|Ê,‹“ë÷ß2Ä“‡M°ÌŽ:6”Û),+‹€g ?~¼J•*DG›ldÐ$jºN:žDÅqàÂ;‰²j„î3,IõŠ)‚+S§ÐP" " "àh2ν|w,\¸ÇËÝ„âÿõ×_¤‚ÃãàŸþqvRADÀ_&—8WTžÖÑ—èhR—uïÞxi‡Rû ºO?¹KMKRu’þƒ21vTp7çŽ\߃9hÐ #=eÀvìØA¾"…Lûµœx¹Sü³Üô6l1&:À¯qÔXDÀш-çŠjUá®^½:µŸ~úiG+esá“&Múå—_NŸ>Ý¥#mgÙ²e)®AÎN›K.ñD@D@D tdœ‡Žm¨F^°`Ew©øÅÜßàÄNYRš…j>W›!C†Y³f92yòä(J¾"ê¨Íž=ÛÕJK9ÿO€|ìdeg#—S‰%¢²A.Š úÿ€ByôüóÏó³œI0Ë©úIÞ8J`†rN-" " ö% ãܾk©d¤Ò¡Í™3gø”ªi?ÿü3ÎØ‘¶ÔIß ôH $¾ît9wî\Íš5ûöíë{wµp"ª6M“Jæ¦ÈWÔµk×RÙÁ‰º8Wæûî»bŸ|ò‰‰ Xµjaÿì¨;W#I." " q0º¸îHíîÉ4n¼þØpذaƒŠîk~øa¶ÎêÕ«Ç€7oÞ¤]«V­8ÖøGDÀVÈÁŽ ’•M³iÓ¦7nd ÝVBzDrïuîÜ™œ)&÷OŸ_xá"Ò•Ä#_©)" "`qn¡°õ9÷Ž 0R~ðÁÓ¦MK™2¥­…všpx¶ûí·øUÁ‰‡dKÍ”Srš*’WD :\KI0±gÏq!0aVºjOF‡,ôŸ•*UŠj#æ )³ >œ #BB?³f»qn—•ˆFìC*ÍŒ?ž6è=zôgŸ}¦ÜoÑ‹ÍG]»våN=a„ ‚­^«V­«W¯Æf@õ°“'O’/$óÿºX±bl¡óÎ>zY’Ô©SsÕ¥ò¹IBÂÎâÅ‹Ìåe&Ò]D@DÀSdœÛ}¹ñ¬nܸ± ÀKœ8ñÔ©S ’´»Ð—;õï¿ÿžd{èAj¨_|ñúõë×Iâ‹€ܱ|ùrâ™ùO žo¾ýöÛ”ïÊ™3§ÐØŠ@óæÍ­ІÌõì³ÏòTÅVBJç¡ Ì1ÉU6yòdFL’$ ÷”ä* æè+ ÕªU›?~²dÉø|ƌ͚5#æ?ж:-"`w<_#ª¹B… GEÖŒ3òœÚiÆGÆîÒ{O¾ƒõtgm¥ÿþµk×Þ²eKQHe qîÒYfc§cÇŽF8|/Û´iãRAý.±Ž/¾ø¢Ñ’âj”¯ó»ÆÒO|B€B\;wnÛ¶íÁƒQ©xñâ‹-z衇”MÓ[ÌJ ë)6á³Ï>£âÝØ±c½¥…¤pÈ8‡R²ÛüôÓOÍu"O BUß}÷Ýœ9s¢:QèÌKðHcð[®¾új"P(Á…¸D›c¼©ü¤f.<Ï>ûì7ß|“$,f©…Ul–M¨jáñS+·qî®Â[ I#Ó AƒŠ-ê.ù,M¡B…† bÜu×]rnð{Aª»”!åÜ¢ö¡‘¯{÷î”ã¢(—KÅ•XѸá†R¨Q£üöÛo=zôhÖ¬ÙîÝ»£íO÷‰€ˆ€ˆ€[È8wËL9žzê©]»vq|ÅWP[Û]Â^ÂVÙ”Ã?þاOŸÀóp òxóåY¿~ýï¿ÿ™òäÉCelÖ7åyä–Š·&½_¯^½N;í¿13gάX±"yãâ=Žú¤qžTܶqãÆ—^z‰6ÔÖV¨yƬœºÊã>!¬ŒNPë×_í”WDÀؾ}{ƒ üñ?þøƒ“SíâÊ+¯´ tàK™2eêׯ߬Y³ ,ˆ‚{öìiÞ¼9ùS?îK}¥”ˆ€ˆ@È8wÑ,SÕ=êÙ³g±bÅ\$™DùœÛ{÷îÍ+ÌŒÿÖÿ" Θ4i®ì ,`x¬µ¾}ûΞ=ÛXkΤQ“K aƬŴhÑ‚a‰<7É;YéN®MD@D@âC@Æy|8ÆÞ ‰…É4F?8d>øàƒ±w¨DàÞ{ï=ï¼óèœÐV 4ŠºȘ¥ )lѪU«ýû÷Ó²H‘"óçÏgíÌø9g|¯®ú‰?š$RÅïÌD1Ñ,î#GŽô“ŽÒED@D dœ»e¢Ÿ{î9Â&‘†msÒºE,É‘Š@–,Ytä4»4 Hu]'D@N`ݺuK°p+Vj–-[V¶lYóüGŽì„tZé´ˆ@œ °zÝu×ÝqÇG¥ë *,_¾ÜcqLÝy@Ö¬YY¬aÙ4gΜˆ¿mÛ¶:uê7Î8¦yP!‰," ",2Î]1ßcÆŒ1rÜyç®HBœŒåèO=õTZÙ¹;Ùº."¶@Ù}÷ÝwM/8a™—/_>¦Nu³ \sÍ5„9Ô®]å~ÿýw24jÔè‡~ð£®ÒID@DÀWdœ;?ä•å19ªU«VªT)ç’a ûÔ¥—^JCb_¿úê«0îP( °íÙ¿¶@Ù¥ 6Eßÿý¡C‡âÃeºÍï .üÉ'ŸPSãôÓOG×yóæ‘ÕŸ¼q~×[ú‰€ˆ€x›€ŒsççÏ>.\ýõÎK# Â&`çËÎ`Ø·ª¡ˆ@¸vîÜÙ¤I“Gy„-Pîa;”* ­[·÷~µ *Ìr ”b–_pÁ0 ·KË–-Ég‚È‚JEz‹€ˆ€¸š€Œs秇ª¼FˆæÍ›;/$›€/;ƒaߪ†" a˜>}:žsæÌ¡55ÒúôéÃv¨±µÂº_O‡ Vs®¾újC‚ ÿäù§viàÁ€ˆ€ˆ€ È8wxVØ Z¸p!B*T¨L™2K£á#!P¬X±%JpÇ’%K´ 9µ“8~üøý÷ßÅWüøã´>ÿüóçÎûä“O/å“߯"ð?ÄA¼÷Þ{Æ #·?çD"Ûÿ«¯¾ú¿ëú_D@D@ÜB@ƹÃ3AIJI;lR×8,†€™5¬ˆ¯¿þ:Â[Õ\D ]›6mªY³æ /¼ð×_Ñ誫®bó³^½zéÞ  "p2dñ¤ÐÚE]DÃcÇŽñ²M›68Ù}º." " É# ãŸ}öÙÝwß-@"/dø'ìÜ.÷|ÿý÷ 4 \â?þˆ×êGD@D@¢& ãûìôðE‚(>Ñ[·nݵk'D^zé¥:uâ!-½»hüÖ[o‘òÊ+¯¤ÍÁƒwñâÅäŒä‘•ß j=„Þ;eÊ”3flÞ¼™dÀuëÖmÖ¬¿V¡ ìqâzŽNS+˜¼A€§"ý9H€¯Þ(gžy¦ƒ2Ä}h¾à®¹æšlÙ²ÝsÏ='N¤ 8ßæóP­Z5ªÇ}D;<çœsPPFeÐÐ"à]»wïæÇþ^^rÉ%[¶lñ®:’Üs(·a} x’(Ž,­žÓB‹€# d¾½Ç»{÷îmݺ5òô8sæÌ×^{Íæ¥”&ZìñÜvÛm:tÀ~¶ÃQk“µ¶ìÙ³S‚>¿‹-2Åtˆ“béͶ4û÷ïgŽžÝNœ çY¦¬ƒý%â€MRR®²É”Ú‹ULåÐÎ׳%RMCe ÿ¸H‘"¨_ @ðoQËø8%¾Ý©·H ˜òil,Gz£kۓƉïD¾(9Ò8ò/]º4¥¡—<}œ?~”¢¬š§µð"àY³fñÀ'ˆ?ž“~øáß~ûÍI4h ° ê© °zõê ‘î"&8ç¿þú+=~ î½÷^;:îTìlÿýñßp25äq4m°Ò1˹ԯ_?{|„Í]d- =OɆ&Mš˜[LƒÞpà yóæ%Ý qUÿùϪT©b.‘¢kúôéì·mÛ–d¥¬AQÒVô$üÊvž¸žÍ‘jj‹ô@Æy¤ÄâÞ^ÆyÜ‘FÖañâÅù È—/_d·¹µ58ÆX%X4…Œ|ðù²ã_|–R\õîK~'ЈÅïª ÉE ù0Â{öìiÏ;ï< õä‹¡EÀ1b_æwÊä³—t "&8ç}úô1Ÿ>üÆCÇZ»v­9Ï¿Ÿ~úiè%ŽÙ7WŸ{î¹—ŒÎî~ŠKìx›ÇoîÍ’% »èlÚÛ6TX,T¨é–¥j…à0o¯r0lØ0s•z")6Ï×stš†Š汌ó0A%®™™ϗcÿòÀØ|˜“ ®óÝŠ“*^IÆ]?´ïæÍ›³½lέC¯z÷ø—_~Ax?iäݹä^!@<^íÚµ Ào2_~ùå8 6jÔÈ+òKN_À]–eeS “/v6ÜZµjµoß>_*+¥DÀUX®}öÙg s74Ì„3eË–µ[Ùlí¤{ÇŽæŒÝͶ Œ›:›FXûö¤9à™­R¥Jæ˜Ðt–†C«ubϳ{o®R(wÞ¼y—]vYh„jšöìö¯Zµ*ôRâzŽNÓPÙtì2Ξ©¬Y³"?Œsœˆ† ‚:]ºtI•¸z6Ï;vìH¨OÓ¦MS7ð袛ÜÌ£GUØ"LãÇ穈i Ê×>„S§NÅ¥0™2h,H“QWlÍñ\n|:¨¸F )9¢Òl¬“" ñ"€Ï¶ÙêÀ0NmfS^Á º‹nÎôêÕ«T©Rlƒ³¸–B~_ÌvÅS\â¥}l×þŒ3ÎHÑÀÊ¥“‹.º(ÅU¾ÔœüñÇS\MPÏQkšB<½t?çÏQ®\¹€|xÑ8,JÌÿñƦTì…^˜fg<它Ôß¼i¶wÿÉ#ÿ!§™G÷ , EÀA|\øø·k×î§Ÿ~B nÈÅuÿý÷[çveÓÐ"`ð,N(Ò2›#òE³iöè£ò3-D"  "ðí·ßšž÷ìÙc¬ôÐX53/S›Ù|<7nÜøÍ7ߤHœÎ*{ææ.ó‹ÚáIOúPg‡;tèÐI{ muÏ Ò4T6»„€Œs‡'ÂD,#Äwß}ç°(1OÝ ú`ÒÆêÄÜ¥Û;°uqí<º]bÉ'Àq×D–ðÌø„Ï‘3Ò:+:$”†´ ‡…/˜ µøóÏ?Ÿyæ*'mÛ¶-íÖ:+"ëÊN¬“y˜ íÄL楉: ½”âS™0ø *<øàƒf»ˆ&~*EËŒ_ÚÝïôš‘ËÝ\ŠÔõ5^=ÇKÓôÔy È8wþ‡.\¸°‘€êA‹óðkÖ¬¡vÅíwVÌ]º½;kvÝ.±ä'P–ª36l`pª¾ýöÛ¤½Í h­2jL8u(æDfãòºtéRÂ1Þ}÷Ýé…ˆ@<`NÛM\,Sti7BLAòWÍKöÞ»u놑OÌÔÈ‘#©¦Fžæ-œ´.ñ´‰îRì=ÇWÓè´Ð] % ã<¡xOÞ9ßG¦9'NÞÚÅ-XÃÛµkâä/€0IÛY³óæj&!@>-»wïNâTf«œ sªÔD}©éi\<ôÐC‹/65“ù™£âÚwÜaRxZ5 /®"ÀXïÞ½HcÆŒY·n]¨xNã%þVW\qEèysLÈ ûäÄI‘$‚–cÇŽ­V­ZêfÑI\ÔU='TÓèøè®DqžªôiÓEòÀÁmîkÊn˜ÍX¾~ýz÷ ˜‰ì¬ÙyLÈ0êT¼I€LZdšøè£ŸÂË 2/Y²¤7µ‘Ô%Àƒ> ™Û·ooô§âkLve6 P¤¶Ä›@çÎ{ôèA¯,~QŠœH(ŽÉ⎭·®eË–ƒN=&ö*Kf$%©;qæ>Þ) ަ©g9hgdœ;<ãTË“'BàcÃc–)ªáqe·yàø͸OkjU#ŠiÁ‚¼$/ˆÕÝ^Õ™ŸñÇ{Œ6äÓ‚ƒÓ¦Mãù)v¾ S•îN`õyôèÑo½õ–‰Å`ú’K.y饗œ’G㊀/ PM\ê“oß¾=žy¸:tè;ï¼óᇚºå)Çëý÷ßç$÷,X0ÅU?½ ަ~šµèt‘q·¸ÝÅnRÆ 鎬’Ë—/[¿NtT¦L3ìĉ©Š‘ž” xlzW=tžSB£~ýú¾É?ï!þÕµl©W¯^ß¾}ɤ…dÕb¤Y³f®X‚‰@8nºé&¶ÐMCÂ4î¹ç"`S§§+µHM€}r¶Ç»víJiž¯Hô°uëVâJÚ¶m›º1gXüÅnç€è¬§ÙÆ'ƒ£©?æ+F-dœÇ0·7nÜØôbœ?ãУC]؇o¶”©g¾ÿþÔ‚Ö’/ÙN:¥¾ä¹3v¾ì zN ,q'ðÞ{ïáÊÎã=gÊ”éßÿþ7YµÈ­÷Ô¡$ŸA <ð€‰:u*õçÌ™“|I4¢øŒnÛmÚ´a{¼ÿþ¤4Ç«ô¤?ü¸lðs“H¤yÔCo7+Ë¡gâu]ωÓ4^z©Ÿ8qG˜QvE¶$³ï:~üø(»pÇm·ÜrK­ZµŒ,dˬ`Å" IDAT]»vŠÂ3ìžá&€`‹-Ü!rLRŒ7ŽûyD#*¦Žt³ø‚OBwÞy'OW¦º,‰DëôìÙÓ˜1¾PQJˆÀË…8púôéùóçÇÎ;‰íÕ«¦…舀DMà‘G™ дiS–›o¾ùæ?þ˜­0¼5)¬`®îرÃx²PR'žÜ8O\2;šGn{{ìwß}÷7ß|Cƒûî»/uýB2_x᮫E,*[úö^°fo¿ývrO$¨gœö:RM¹%º?çÑq‹ã]§ÒWè;LÇN ؆ŒÞ½{wûeç”0q—-ÓñÕ§Æ\—>]ÒÉC=ôÜsÏ! u›C—f]"žÄä ëÛ 7Ü@nv3\·nÝø\Øý„äÈ QDÀ °Æïºë®Q£Fax¸g#±råÊnM2ˆ@âPP²ôÏ>t·9ŠÙ¦Â{K›:…7n$b·pjž“Í„?6B°N©’C4ø“O>Ù§OŸÐ!¸ÄÓfÑ¢ES±ÎšžªûtBüC€¥·gžy†'$ꙣUîܹGŽéDþ™$i’tcÆŒéÒ¥ËáÇc€@ô{ï½W “>0yâeœcr_qÅeË–%T0éqV¿õÖ[Ù'ëpÍt)2Îc¡—{•­=.ãÐ ©/(íHG¤…ìÝ»wzT‰!ðØca™Ó7ád™'†±zu5VîññcãÂXæä’ 3–,sWÏ™„K öíÛS½ZµjŒvüøq\«°7XyOÊàD¼JÇ’ÀQ¤Œnë@,!.*ì±gÜLWEÀÓdœ»húÈ9‘+W.zûí·M•` 'Qþ&°|ùò×_CR‰‰ *"4”º!°œ*5(N ȧžzŠ@;’Jƒô4 ”(Q‚ŸoBŸÌ†9×ø¼'5ÍÆ:)"‡~˜‡+v;R„‚§ ‡Ï—w«¥©‘NŠ@ 2ÎSqò%®¡<é"‰pcÝÝIi4v*$´£Œ³IÓðøã›"·©Z鄸“N=D•SçÆ”¡ &:Ž$dÐõ§ÂÒJ¢"@b×Pb M: F u×X|'ü5ªþt“øœk¾hHžsS¡6m'MšD‘N¿2h£K"àuz¨r× bûQ'™¨ Žùç.á/Mß¾}Éó  ~`¥ž‡ˆÏL5jÔ#;w" é,‘ òœ²Édº2•“IäÞ¡CvÿÈ€ygºCüI€e,‚¤(ÿa£yÜ¢n±!œç×çضmÛû￟¢Rš?qH«ÀP)57¾(SDˆÚìÙ³®N:ø¦B£qŸL&~$˜Ž¹sçÒŸ+pp8ÙMº.ž'€·eÌ·nÝj4!è†=@vÎ=¯˜¤ NêÝwßו™]AêBk7éó ãL ^¥ÔŒXd6Y½z5Áç9?÷Üsq_§r- GU0ÎÓ–aw*¥–!žd\ÔÎy2(G: –ÆŽk /\¸ðöÛo´µ#ö eΚîøñãe™Ç‘­ºr'Ö)ÑÌÊ ±Ìñ`ï½÷^yåYæîœ/Iå~Ù²e9r$¿ìTú@ÚM›6‘qú?ÿùÉ0ê~ù%¡$@æÌ™©DxõÕWwïÞ¶C *$Ë< ä5„«È8wÕtü# N>~ø!Q7œ=z´*Ÿÿƒ&¹GäÏã7ó¬³ÎúàƒÎ;ï¼äޝÑD ÙvîÜÙ¤I“^½z™8ŽÚµk“û§¥dË¡ñDÀwÚµkG!tr+¢Y|ðÁæÍ›«ºïæY ‰€ˆ@ôdœGÏ.ÑwV­Z³Ü”)ê÷÷_¢GTÿ)°­aâÿY¸Å±fÍš)è¥øŒ€)ËLérôâˇJiŸ|ò UÓ|¦¦Ô§঻hÑ" ;›ý@rP“hfæÌ™NÉ£qE@D@\E@ƹ«¦#¥0­[·~ùå—ÍY6ϩŒ²…^'ŒÀ AƒØÖ0Ýc¥“œ/aC©cpžûx÷ß?qIˆ4„ÕÍçˆâ8œŸIà/”üèß¿ÿ¬Y³Œ+ÖîÝ»ÉJMéæå£ü¥´´‹€Œó°09بk×®Ö&ïÙ³§üÛ“3Ø$÷Þ{¯ëé§Ÿ&ÝnrÆÕ("à"`q yá…LìUW]Eá´zõê9"Œ ¸ì²Ëø”áÖŽ²|î(žJº ¡aꥣˆ€d@@ÆypÜr©G¬²ipo'?™‰u‹|þ’ƒ vݺu3ÞìhöÄO<úè£þRQÚˆÀ FU¹rå•+Wr–|ÿüs ¡ÎïqÔŸˆ€ˆ€gÈ8÷ÆTŸ6xð`¢öꫯ²Ö~ðàAoˆî)))BÛ¢E P©)e­tOé!aE ,¼áo¼ñF[u¹L™2Ë–-£àSX7«‘ˆ@<à¥EÙÂÒ¥KÓ™ùHÞtÓM*„´êCD@¼G@ƹgæì®»î3f ûZHL¬Ú%—\²fÍÏHïA7lØUb!,ûo½õ–¼Ù½0o’1J)¶é(Ù¸bÅ rSEÙnˆ–æ|ún½õVÓÁÛo¿mÎDÛŸîð*ç^š9ª°¢)Ož<%Y½zuù¿ÅkþÞyçÒã¯]»–såÊEî\ö.âÕ¹úW ÀuàÀ6ÀõÜsÏåýÿú믛ڮUˆ@@P²ãÆ3…Ð7oÞLBÈìKM°dœ[Þ8ày¿SD÷èÑ£¸¤bC:tÈÒ»RJÜÙ3¼þúë!;‡Ÿ}ö™Ra¹r®¼*ï1ÖÑH„þÝwß¡Ã/¿ü2lØ0ÒAQ¢Œ%¡îÝ»ãÔš4Ý(ª|ù嗓ɤ†Æ[„2æ×^{mÒÐ@" éà—ˆÏ£)„Î'”Š!|ZIçž^û¸œwÕT\4R'" "àal¡èÏsŽ;†=ißv<â³£î9-Ü ð‚ Š+fI²ÒÁ’‡“ > ðÓO?±vÍ5לuÖYæ=¶~ýzœÉ *dßræ€ÒJ¤aK‚ʸ„äÏŸß Jó^½za$a\ !">>•$šáj>ª|f?þøãðo³¥ ¿ Â”\ÍÜC€¢³æ]Ê{¤’$±(R¤sZ @X:ѽ±ÐιùVñØ¿<ëãƒ:vìØ9r :Ûq 6Ä\ß¿¿Ç4qN\2ê‘÷žò­[·"ž„™ó—%Kç„ÒȾ"ÀÃÊäÉ“Y8c«Ü(öþûïׯ_ŸÝò<òÈ#µk×6ç©¿@[41xܧcÓ¦MÍ.–1Ô©þÀº@"†SŸ" Q0…Ðù„†B·Þ.Qw›âFW}A¥M/E@D ¸b±ìu¯ã¾ýö[žõíÛ7_¾|#FŒ ˜ã‚¹Y€?ÿü#œEAË  ÝÍ2K6ïÀ;þÓHg°téÒP]FŽi÷ÕÏ9ç|ÎC¯Æë˜âɤ¨°bPî!AÅK`õ#">§„ÃØO.ëz›6mŠ/7|AÅW#õ–LÚ9O&í䌥óäpÎ`íœÛ_=O‡öáÇ“Ò ø!gÿ¼Zµj .ô¤>‰Óˆ [jGíÚµ‹Ñ0‡(œÆÓIÑ¢E?¸F"’%KZµ)hÌÛϾäà–[n!þÜœ!òó™gž ½—c\lÈüL® z£ §L™Bå¸t®ND@G€Ï)ŸV¾7L¡‚bÈ8ßD°ŽA%Žžz/qîÅY;AfŠŸwêÔiݺu×]w¹°råʺuë^yå•ä•9¡i°_|õÕW-[¶4õ ‰«¯¾šôìÔ¨3äƒGÚ'Šö°íºlÙ²öØÖ±\¹ræå¤I“ìùØŽ9Bq¦öíÛ\Jo^x!‹SÔ>v¶êA’F ¡…Ðü‚J@ $" " ãÜC“•‘¨D¦?~þüù•*U2í¦NÊ{›6m°Õ3º3×¾üòKRàþë_ÿ"ب[¡B…9sæ¼÷Þ{©Ss€‡TtÒ>uéÒÅÈôý÷ßùV­ZÅ7À›o¾izÃ[„BʦÐC\úW'" I#À/{êBèl¤'A€}A%Ar !" ^$ ãÜ‹³–®Ìl˜óûÍ㸉!žû³J•*dÂM÷6ÿ^øä“O¯å±†2ÎÐ@Ñ .¸€\zøBÏ¿zK3°ž¥$ŒØ¶m[ìÒ¿øâ‹øÏoܸ‘®ˆÝÀ–¯…³Ï>;öžÕƒˆ€#RBÇ,9…Ðãþå@ *" ž ãÜÓ,r³EÆCùK/½T°`As'I_5jT¾|ùW^yÅTóŽ G6¥Ú«¯¾zÑE5hÐ`úôéF2ÀmK6ÂòO?ýtª%‘}KÀ¬¦õ~üñÇXôÜ»w/!-ø®?~œ~È@Á:ží±ô©{E@\BÀ‘Bèqü‚r F‰!" ®% ãܵS“`D‘Q™‰ ääŠ+Q¢„鋸ê®]»âuºxñâ˜pë̈́Ԏ”Iûú믘${:t(4°XLZ·Š/¹J wîÜVsûµgÂ? l[ÅŠ iáË©½Ä'=–ÃZ-E@’C X±b‹-êÕ«—)„N t‚¶X‚OÜèñú‚Jœ„êYD@|C@ƹo¦2 E0ѱT7lØ€s;½M vÎßxã Š‡•*UêÑG%MZwzíÔš5kúôéSºtiÜü^{í5“þ %PóÝwße·œ˜^[°ÊkÊI^ÿعs§Q2GŽùóçBa*¥÷îÝ»qãÆ¦+:™1c…ÓÏ8ãŒ(zÓ-" n&@!ô~ýú¥(„þÐCÅ+cE Ýcÿ‚JÑ¡^Š€ˆ€¤G@ÆyzdüsnÒ’}M^4lTžþn›7o¦nûldîÙ³'+ñÄ»zHmÊ•/Y²„ÝÜõIðöôÓO›[TÈž=;«d£¤\Û¶myŽñ^5€Èg´.S¦Lê¦^§NÖùPp;9&ø°7iÒ$Š®t‹ˆ€W\vÙe|ÒM!t’ª<÷Üs,OóÍ7q—?Æ/¨¸Ë£E@DÀÇdœûxrSª†Žw÷Ž;ÈÅ›»^¿~=;l<ܳÛF=6¢µ±ÛSÞìš×[¶lao¼]»vH{饗þûßÿÆ]ßH‡F<¬¼õÖ[,óãÏOmg×H-AD #öÇZRFíÒº†o)?ýôS.²OÎ:yøt¤ÕVçD@|EÀB7ÑÈßÎ_| ¡Ã+–/(_á–2" "xÚQLtd…_lÞsÏ=T0·[>nÜ82À…߃ZŠ€ø€…Љ\cÍš(¶Ã‡ßxã³fÍ2dH¼ 4D÷å°RAD@’O@Æyò™»eÄ|ùòa ð·ÿþiÓ¦}ôÑGüœ8pÀÈ÷Ã?Løû—X¿^x!»sä?'®›? «$(³)¦Y¤ç ƒ?âá©yÆAšþöøç“‚¾E‹KË“'[°JHŸÀ®]»R_äsg’’"ü̬X‘·yݺu¦C–Û¨Å@Õ´Ôý댈€ï °aN!UÁŽ9eGÅZ6«uÔR _÷8~A…?¨ZŠ€ˆ€„8Õ=¥ãÀ `•8íÙ³gÏ›7j›V-5’Ä’½ðßTÇÎǹŽsæÌ‰yÀ öXï{ó‡muMÂ*þ~ýõW2Ò±´Ï TbŸ¿íÛ·÷÷^÷&n6õ œ¡gª7S ÷už9è9Íf:)î!€CŠ]<*T¨…ÍìK„¤ˆofþmÖ¬ÙäÉ“ÃÌ߯žØ<À§‰ø¬ <˜ŠîQY’ˆ€8EƒüÎ;ï4?ßøº“Šâþûï§vCzò$â *½±tÞ¨Ú‹zñÆc½Ø P#*}ûí·”¶™ ÁY•eœ;Ëß½£c!“OrbØ0'ØÙ3–@’%ÆÂ'ß{˜âø®³uoŠÇ$Y 'Q}ö%ì¢xñâ<ÊàôA‡,„acã¥Ò¡Cj(„c™ÓÛm·Ý†oä©\¹òøñ㩼µxºQDÀgXìÃÅý³Ï>3z±ðG*VÏÓT3¾_Pi¡“>&`sëLÕdœ;8ï2΄率Ùô&oÜÝwß!AÉSLwöºq‹£çKû˜.l-²ާ=O¸é’¼:‹ÅK(%kÀ„>û’ßaΜ9TIà>GÔJ¸á†¨‚–ÁÖ–6þ|Ü×ù r†öš’Ñ$‚²mt " |Ã<öØc 0¿Ñ‰o¾ù&ÙR4ÓK°ð͹馛Œo*Ëy=zôèÛ·oŠõî¸|AÙu4ä&zþù罨5Åwqdã¹4¡ÂãÆÂ¶´ %G.ªDô¬>OJ@ÆùI©Áÿ iœ©§Jt+†Aâ¸tîÜ™rnôÿþûï·nÝ:q©gHÔϾ‘J6v×/^ln$Fýí·ß&éC¤ý¨½ˆ@аh~Ë-·ðómgqØ`*;X±AÙ®t ^!ðÎ;ï!“&»M •™dj$‹“r$%”³Ï:WsŸMhÕÁT6½_}õÕ æ”S®¹æÓÿ{ï½—ÐÔ¹¸ŸŸ %Ëœ5þþýû“Ý]–¹û'NŠ€˜Bèìmšø—åË—“ÃeìØ±nM2ˆ€#X±"H3iC“¹‰´¤ §|@@ƹ&1*àUkrPeË–­I“& ’dì”Icˆ)S¦àŸÐ±Ô¹¸–À±cÇXtoÓ¦)pX¬X1BÖ~øáp¢Ó]«”H2¾1î»ï>*«Q•¡ =#uÛéDÖ$Y 'n Ð¥K¢&“)ÉSO=E,[2GÔXž& ãÜÓÓ—<á.\ÈZ#ãæ~)æèä#"®âÞC‡‘=+ºNt—xšõp@>|¸Ñ¼/¾ø¢FžVJ‹€8E€Ê¸×Úš‹äoç ÅS’G㊀#phO¾W&ûL,‡±ËåˆÊÔsdœ{nÊœØ~—%ڧݨgG±¾ôΨ­QE f&¹ºéÆìŸ´ËaÆa™›…v|UFŒA˜höìÙOz£ˆ€ˆ@zÈÆJ¾˜1cƘ/“M›6‘“2Ôá6Ì/¨ôú×yp9$;´‡ÒÀ¹ê ¡gt,éqžÿ‡µX>øà^“MÝä„ûçZbŽš6mŠMBß“&MÒZcb«×$ÀëÄŽôå—_Úã4x8fe §»_~ù…D›³ÙEaó4뤈€DJ€ì’«V­ª^½:7²¡7pà@ÛÃI¿ lKˆ€ tíÚ5Éí¡”(¹"çöP :N€ŒóôÈèü?>ûì3³ûG•Tª ýs!aGxΛ2Q,s†Ú6 P‹@ü àˆ>tèPêŸÙ®Ÿ~úiªQ{†ò*ö¤=à­þ¯ýË,„q²[·n¤x-]º´m ˆ¤H`a]Üm‡AÙf:/À¡}âĉJ.çvá{kèÄÖ÷ó I›ë[nó¨§×2ŽçÙ?Ć¡CF¯_¿~{VW"lz“{éž{îI1Ü–-[(ßB‚7{÷êódlüD¨/:räÈ+¯¼Ò6Ј€Ä‘¹]êÔ©C,›®J•*|5¥þ‚Šã¸êJ!à C{¨¾Æ¹ý‘G =©cHA@uÎSÑË4”,Yò›o¾áW|÷îݹråJ£ENaÕPæ×_=ÿüó¿ÿþ{e¨Ncué Û·o'yò‚ Œ4T+=ztÁ‚]!œ„ð5={ö°…>cÆ £%Y'Épºtèkí¥\P´mÛ6õ¶yrêœÛÄ®†5E IÄX¾|ù  —ž‘[{äÌv®¹Xæ(ÍöuÒ,s†Ã/zð¨_¶lYÀ¨KÝ øðÃqe7–9ë_ìŸÏž=[–yP¦_zŠ€ÓòåË7mÚ4"ÏM!t¢ØHu1~üx§åÒø"7Ž;´‡j"çöP:N“€Œó4±èä?lžvê-ÿs6)GÖ‹ÞÊ”a5ˆ$ƒ)ßîºë®Ö­[³xÏxEŠ™?~ïÞ½O;M_ËÉà¯1D@ Óxà%K–”*UŠ3?ýôS»víÈCyäÈ!¯p‰C{(Fen¥¡ãÔô˜š‰Îœ@ÀÆ ­Zµ:áBâ_P휽DƱAï‰S#ˆ@2¬]»–lɤ‹3ƒáq‡‹J­Zµ’1¶ÆT8ÇÛöÆo4WH{Á¾—R5Ô ðg3´§GJ™ÛÓ#£óq®·AF0!Ö­[G‹ÚµkçÏŸ?£¦ ¸†½I‡_½J¼$°ºt†À«¯¾ZµjÕ¯¾úŠá³fÍÊËwß}7GŽÎH£QE@DàoB5jÔÛo¿mʲlذá’K.4hðˆ€G ¸Ê¡=”¡œÛCiè8ç)€èå ¬?¹õ0?árâ_³Ý ¢ÍóÄÃÖ 'pðàAÂC:wî|ìØ1«X±"îm;vLøÀ@D@Â#СC¶ÐY@¤99Yï½÷Þ-Z8X:<©ÕJRp¡C{¨ˆrn¥¡ãP2ÎCiè8%cœfä”-üšˆ\‚k— < ºDX¼x1¹ßì;™€sr/•-[6Qã©_ˆŠ%ZAðÁM”)S¦ðÝ5wîܨ:ÓM"à w:´‡²s{( [2Î- ¤$`É Ž-T¨PÊËIy] @š5k2Ôš5kp±KʘDâLàÏ?ÿ¤†y½zõ¾ûî;º&^ƒ$íƒ>묳â<’ºx úsÏ=7}útѶcÇê§±ò÷ßG÷êCK€`±ÔµÓ;dä½Ë¹=rf¸CÆy ¦9:%í_òó´‡ l=êåÙX]†' IDATŠEÇ^!@-ÀË.»¬OŸ>üñ2c¢“@¡eË–^‘_rŠ€–@Ó¦Mù¾jÒ¤ Xdìׯ_ݺu·mÛX RÜphÇ7͢ʹÝÓ”d!eœ'¸—†³‹ŽNù´Xvt»Xà%ˆ’5Ø&OžŒ;è'Ÿ|†ÓO?ý©§žÂ5Ô)?”`O…´ˆ†;ç3fÌxöÙgÙKçþ¥K—RmÉhúÒ="îwhÅ çöP:†€Œs½ Ò&€ÿíòå˹vñÅ/^<íFI9Kýg º0ÔŠ+ŒWpR†Õ ")uëÖò}ûöÑQáÂ…)cþØc©ŒyLXu³ˆ@Ò yÞ£G²f”(Q‚Á:tÝuבÉòèÑ£I—EŠÀIx¡=T9·‡ÒÐ1dœëm6ëCn½ÊÓn—”³vóÜJ•”a5ˆDI€„dj ªÜÜχˆrÁ—^zi”Ýé6pš@µjÕV­ZÕ¾}{#È믿NF÷Õ«W;-—ÆxÈ¡ý¡O9EÎí¡4t,ã\ï´ XŸvgÎpÖ8—g{Ú³¥³n"úÌš%K–aÆñiÊ™3§›d”," "1êŸ=úÍ7ߤ":7§X…Œ¸;Ý ñ&à-‡öPíåÜJ#àÇ2ÎþH[}ò²RF…k*T(]ºtÚ’x¶L™2åÊ•c@¤Ú½{wGÖP"¼=¯½öZëíÉLJتšGÐ…šŠ€ˆ€» Ü|óÍB¯\¹2b¦ˆßq·à’Îç<çÐ:rn¥ðc礭>Þãýõ×ܰmnD4›çd‹¥UÚBë¬8J€SÝd¾$­FüGR":´‡*'çöPA>–qäÙOWwWù´)­g»ÂÎÓ6]pˆkFÏ<ó †¾ýö[D Œù|0tèP•1whB4¬ˆ@ œyæ™Ï?ÿüÔ©SóæÍË`ÔŒlذ¡­™ðá5€œH`ýúõ¸Xz:åjÈ köÆNTN¯‚EàT½ ‚5áah‹ßxÁ‚±7p&'¢,Œ;’Ô„¤ñ[·n¥š *‚7IÐ5ÌÉÒ¡C‡y󿙆uêÔ3fÌ\p²ût]D@ü@`çÎ7ÝtÓìÙ³2d¾;v,õ)ü ›tðÞ$'Â…mÑ¢E<Çf,þþýûý0yçw>휇Ï*(-Ùô3ßhîñi7èÍæùo¿ýöÑGe2¤§» ðVÄ•ÝXæ”1â‰'8–eîîI“t" ñ$pÞyçÍœ9³ÿþ™2e¢_*®Q]Ù[ã‰X}…M€wãÝwßM„®/¿ür5LäEØ$¯!.'˜îŸ|ò ¢RÛ¥^½z²Ì“GßÝ#É8w÷ü8! šu§qy¶;ñ¾Ð˜' Ò=÷ÜsÕUWíÝ»— ä˜å?þ8&ú íôBD@üNûçá‡f¯²X±bèzàÀž0<Ž;æwÕ¥ŸK °•~øðal`‚Îܳ)`<9T¬X‘‡‡æÍ›Ë&wéÈQ±dœ;Šß}ƒ“QÃät)Y²$[‚®°fÍš¬‰"ÒÇ|äÈWÉ&aE€Ø6Öã_zé%£uëÖ­¿üòK~ûAÊŠ€ˆ@(¾¿øâ‹ë¯¿ÞœÄ›—Òè_ýuh‹@ÒðK½víÚ={öÀ»`Á³A¡îÈ56ù]wÝe¶ô;uê´zõj¤ÒVSÒÞ ÞHƹ·æ+áÒ’ ý?þ`¢_>X„°6ÄM¿üòË´iÓ"¼[ÍE >FŒQ¥J¬qº£Œù+¯¼Âïk¢ãÖâ#ºzDÈž=û¸qãø’Ì–-ã¬Y³ûœ/ÉDŽ©¾E m6·1Ý´5q#ÇJO‚Ç{þüù­Mnei Q£Fçœs"Qæà÷ßO[z 0%„ ðä§¥z“&Mf͚ŕ+V˜*¦iµrìÜœ9søRcxÖæypL H”1§hù;ï¼c´§LÚøñã)fHRZD@Ò%°aÃ~¦ÙH7-XXÇb×"fº¼t!.¾øbÞXàRq[.˜víÚñü€ÒdR¼ì²Ë ½ºô0íœ{xòâ.:%Lj+ò¢»Ð2G_‚srçÎÍå[ú;u(éøôÓOÉrd-sÂ))c.Ë<=\:/"d¥K—æ;³{÷î‰f ”#(=ÈL¤{2 |óÍ7fm¨zõên³Ìá òÀÉ|3xn,çž›² ŒO»q°q[*8«3É`I¤ÁK’|˜~{I" /èׯ!åÛ¶mc6HDŒ£&>í QÝŠ€ˆ€× dΜyРA”´È“'º|ÿý÷õë×ê©§Lèœ×µ“ü.'`ëŸv·IK*¸³Î: ©X·RMk·ÍŽãòÈ8w| \$€ÍÓî€s‹É.7Úo^{I"w”1oܸqï޽ͺUíÚµ‰6·o¸§E@DÀO®¼òJ¾34h€R˜å”´hذáöíÛý¤£tq!ûˆèN㜤 M›6……Ù—.]êB€ÉA2΄ﮡ÷ïßOD72-Z´jÕªî.D,%%Òá¡Ã˜2e ®˜sçÎe j¤ñXIIR:È%ºØ,XÀÚ¾}ûšBèäÍæ{uÒ¤I±õª»E ]¸i,[¶ŒË„§™n;G/ØU~»Žà¨8ÜEdœ»h2œÅú´»yÛDxʱÏ« XJÎBÓè~%`ʘ·hÑ”1/T¨&úO<¡2æ~qé%"8d¨Æÿˆ:REŠa~¾[µjEjj¯$nPõXÖÜuç¶¹™‚4Ï8ã ŽUP-°oÔô—qž™À·>í® 8·Sb—õf™è ŽÈ3|É%—¤(cNÙ•8¡®D@D hjÕªEŽ.ûŒ1dÈJ£¯[·.h¤o¢ xÂ8Ï‘#‡ ÷ ÍÊ•+ÍDý{ˆ€ŒsMVE=pà€ñigU›Ì– )]_~ùå&‘»ýJ¤¢êão¼ñeÌM–WÞfC‡e (W®\ÿ´Ð‘ˆ€ˆ@T0HØ >|¸I¨¹zõjÂè^ýõ¨:ÓM"¢¸—,YÂÊ–)S&®9e7öíj‚kD“ Nqî$}÷Œ•ûÛo¿!Ë}Ú 1%ÒpÏ;ÇO’PƜ¼·ß~û‘#GЋßuŠ¥uéÒÅO:Jpœ@§N>ÿüó‹.ºIŽ=Ú±cÇk¯½öàÁƒŽ &|@€üçÔXAkúºV)‚;ˆø@<ç®#G“qîv× j}Ú=aœƒÏ~çêÍuo&o ”¢ŒyçÎUÆÜ›3)©E@<@ \¹r¤ì²«Ÿ<„TªTIi«=0s®Ñ>ÚE׊œ/_>ª´"ÁtkÖ¬q­œ,Édœ'¸‡Ã§LªHæ ŸvCœp&‘K¤nd*™¼C€%öþýû§(c>lØ0•1÷ÎJRï0qCüˆ›¸¡o¿ý–Ôýúõ3ÛžÞÓG»€9\É;ˆ ¥J•ªX±¢ $:‰vÁ®)œä]ç˜ä“©h}Úmš–“Ýáüõœ9sšD[·n]µj•óIo0eÌyä[Æœhs›qЛ:Ijð <{ùÖ5û‡|“Ô½Q£F|3{F ê&<ÐþñÇHd^7I—†,íFvkA)g{Èdê0)ʘ÷éÓ‡â|… Ž  5ˆÀ\0oÞ<[«’c ¡óý[¯º;ˆ¬‰ëãüüóϧ: SErÄM›6qΤs*2ÎS! ؉PŸvŠšxH{%ÒðÐd¹MÔ4˘?ùä“*cî¶™’<" A Àwïã?ŽYޡ޾8'·hÑâÞ{ïå»:êKǸ § -ºYƹ&3U|ãÓn”6›ç,7Lž<9 jë”1¿îºëî¸ãŽ£G¢‰O)ºsçwúGCi"" "ð7îÝ»S “¤3¼:|øð7ÞxóÍ7SéZxHÀ>ífÖØj*Y²$ÇäÇÙ»wo§R*2΃øNøñÇÙdFó%J°äìòl÷Á$Æ¢ÕGøU³KNØäXæ¦0I,Ýê^wà;ÅŠ·Þz«oÔ¨Q<Ϭ\¹ÒÒJª°»2çœsNãÆ4JÒº5žíüñ‡<Û“ÆÜ…É8wá¤$\$}ùä3̵×^›ðÁ’2À%—\b’ÄÌœ9SkçIAî–AˆÎzæ™gêÖ­»mÛ6dƒ·7Þìø´»EDÉ!" "Ù²e{ã7ÆŽ›={vºß´iSÍš5_xáBOl—vÉV…ŽL&ÒÁ¥‚†'–MhgÝ»O­|E@ƹ¯¦3Leì£oŒóSO=•ú¨ÿË/¿˜Z—a¢P3Oøá‡.»ì²G}Ô$PÀD'Úœ pžVJ‹€ˆ€„O ]»v«V­ª^½:·ìþûïÇNÃC0üÔÒ»Þ{ï=#¼ Øö®.HNÒœbÅŠq@Îf³èàiu$|tdœGÇÍÃwQ€„z¡(PªT)¼Â<¬É‰¢Ûïe6NO¼¢Wþ$@~JÝš…zÔH£R?f*cîÏÉ–V" ">’Â.Z´è¡‡b¥žVÓ¦Mã×aΜ9éß¡+~ `kèfÍšõòË/÷ƒJÿËÙΖƒÊûcB£ÐBÆyм} ®2>ói7óÁ®iîܹ9ž:u*e®½=I’>CøGtëÖ­eË–T¤!9&úã?®2æbÓEð-Òt0àã?.P Jîܹ³I“&<òˆñ«ò­ÚÁVŒSËûÜ0¬gû„ ü¡‘´ˆ”€ŒóH‰y¾½ÿ|ÚÍ”dÊ”‰*“¸•ºžŸ')uëÖQÆ|ðàÁæ:¹qe¯]»v:ÍuZD@D (H Æ/B³fÍP˜mÕþýûשSgëÖ­AÑ?`zÚÀlë;éh)REpýPy`Lh*È8š‡oa-yáÂ…(P¦L™Š+zX“´DWÎö´¨øêÜk¯½VµjÕÕ«W£)߆ F¼™Ê˜ûjŽ¥Œˆ€Ä@ _¾|¸µ8Д¼¦âÚÅ_üÎ;ïÄÐ¥nu#Òþ™”æä»âŠ+Ü(b´2™Íóß~ûmÒ¤IÑö¡ûÛ¾};ðìgÒõ;(L|‡æiÇt(Ïöø‚õJo2ν2Sñ‘Ó¯>톫§Í›7ç˜Pä Ä™zqÅ‹“ÝÇ:°uíÚ•2æåÊ•shAD@DÀp³¢ìy‡Œp#FŒ ¶q¼r£¸’)B>ËÓª=ží… æÌìÙ³Ù™½¤ã q„Yþ©;…‘ËòÿùRswd¿µ}©fp”ÂÑãé§Ÿ®W¯Þwß}‡Ö¹rå"é!CÎ:ë¬à@¦" " QÀ™îí·ß~ë­·Î>ûln_¿~=fMYE‡ºÅ=ÌcžÍ7äÁb—×ó4Ki@y¶ÇÎÓs=È8÷Ü”E/0î1„èp¿/}Ú 2v³ Î(=/Ýé4<Ö4hЧOS_L?$iwZ./" "à7Ýt[è•+WFbй„ûðŒôDT¶7yþxH`ÕþÄ‹~xeÔåÙî‡éŒPçórsû´›™auœê)ïØ±ƒ40^ž® ËÎò ®ì&<iO=õeÌ *t.Ò_D@D B¥J•Zºté}÷Ýg ¡“˜†ß—ùóçGØš»…€õŽ´…ÇÜ"Yœä * ebéŒòCòlTÏt#ãÜ3S£ xc•$í¤j±77ß®œínžpd£Œ9Qå­[·Þ¿?í©)‚‰þØcvš¾¯Âá§6" " ) œyæ™Ï?ÿü”)SòæÍË5ý6løøãϬ”­õÚÝŒqÎSA«V­Ü-i”Ò±ŠdÖäÙ%A/ߦ‡]/Ï^$²[Ÿöë®».’û¼×–jçÄ !÷ûï¿ï=é/ñš5kªU«öÊ+¯ä,ýâ‹/jÕªx0 " "+²ÆuÙe—Ñ9Mðɪ_¿þ÷ßk¿º?‰xN }RÄžÊyI9©C)g{Rq»i0çnšDÊb‹|Ú8–DŽædßT½& ¶lÙ‚]ç¤(;BÔ-Ç2ÿú믹/kÖ¬T5'#GŽv£æ" " "6óÎ;oæÌ™ýúõ3ëø‹-ÂÅ]«ùiÃråYëÓns»RÌX…ºä’K¬g;åcíN÷{‡€ŒsïÌU ’’6cùòåt@BSö3†ÎYká¡X\{LHy¥J•>øà#!©t?ûì³²e˺V` &" "àuìL’ôÛÆú×-\¦½®—¿åß¼y³)VOÊ´óÏ?ßßÊZÏvûïo}¥! ã<ïû©ö½O»™Î Ô¬Y“c~e7n܈9ö¦’dâ!YyLÈ_žÏ,¿ÙØ•øõíÞžŠ-Jö;ä#¯˜ª¤¸jžŽ=Ú¹sg»/Áï+YyÈÍ£2殚& #" "pÖYg½üòË~øaîܹQüÛo¿­[·nß¾}©¸(nVÖúBZïH7KÙ­/\¸0]Íž=[ÞqAêþNdœ»Žb’R&s+æãSwžºÙ¦ñ´ßæžߟÂòn¬Zµê«¯¾jÔ»þúë)wǛӟÚJ+OhÙ²%¿JõêÕCjB®{ì1Š¢ïØ±ÃSJøVXë ã<Ô³•#ßN­ ! ã<†ƒéÓnfRƹÛÞу®^½úºuë,[¶lo¼ñƸqã²gÏî69%ˆ€ˆ@` *ThîܹO>ùäé§Ÿ„O>ù„ ¬)S¦ˆKßµk— 4(_¾úˆqqкï¾û>ýôÓ /¼0Ébh8ŸÏNÔ±ùe)óIÖ† ÂïA-ãH €>í–žIõÛo¿±BaOêÀ¯dœûufÿ«W}ÚͼÚåU…;òFÿý÷ß{÷îݨQ#°—/_¾©S§>ÿüógžy¦#òhPŸ@Μ9y~:t(é⸋pô*UªŒ92üÔ2.ð¿Ã‘®J–,iŠÞÅ¥[¯tb3:+g»W¦,9eœÇBÏí÷ãï,2c»]ÖÄÈGÂvã 4gΜC‡%fõš6­[·Ö©S‡iÆ­qãÆlA\~ùåi·ÖYp%.]ºPÁ«\¹rHwäÈ‘Ûn»í†nøé§Ÿ\)¬?…"ùùÐÍnºøSÏt´"_Eˆ¸ÈÓìþýûÓi¥Ó>! ãÜ'™ZU«VmÚ´‰óõë×ÏŸ?ê9c<Ûñ2nÕÑÚq5ÇO`9îëHrÆg<ûì³üqLˆ€ˆ€ˆ@¤*T¨@eÖN:™ÉfÊoܲeË"íGí£#dŸvCÌlžã(ÏöèÞBºKƹ‡&+2Q­ë‹MóÙý~i­œíIžI³«Ð®];㪀éU{ôèA´y’%Ñp" " "/Y²d>|ø„ räÈAŸ[¶l!(¥ç¿þú+^C¨Ÿ4 ð8ÁŽ1—( \­Zµ4Ûøþ¤}˜·!«¾W9° Ê8÷íÔ›Oo¦L™‚édçµV­ZÆq€Û£GÚó:Hü5%°ñx:t +;…Í1–ú$ NÈs-§¼ž={6mÚt÷îÝI#PÃáùxüøqT¶Û-Rß(Ë£TñâÅ9&É.åH 8*Ë8÷ç\EÄ/º5lØ0Ož<þT2<­¹oÕªm±Ìg̘ÞMj1¶^xá2Ùnܸ‘›Ï9眷ÿþã â¾tƒˆ€ˆ€¸•¹læÏŸOºS0qÖ¬Y¤(cÀ­òz^.ù´›)´žíJrìù÷t† È8Ïg/Z§—뮻γJÄMp»Ôª¯³¸1=±#ÊÈ_qÅ÷ß¿YÛÆëŒ-t¶ÍOl¥W" " "à¸%öíÛ—ºÓ¦N-?‚¤;%€‹½t?¨ç&ˆ•3 ¤­1 n’.©²XÏv¸šÔá5X²È8Oé$ŽÃ¦ùÜ’ˆËÖçLâø®ªAƒTCA¬)S¦ëÑu"zY ™3g²i0},$Ç IDATút” °ü¡‡Z¼xq‰%¼¬“d“àé‚*$W^y%íxô8p Öã7ß|s’Ût9Ó¦M;vìwð@k\"¹ÛWm $*QUŽõ _é&eBÈ8á—Ã¥K—~ÿý÷hÓ¤Ic”úE³(õ`‘¢E‹ÜlsŠDÙ‘n;‘[l4kȪ۱ª¡>`À€ŸØP¯D@D@DÀ‡ˆ$"zРA™3gF=2º“Å}̘1>TÕ!•äÓ ÞlžSUN® ¡X|v,ãÜgú_uäÓžzRåÙžšIŒg6oÞÌ&QmóæÍW¯^ݨQ£»Õí" " "à-Ý»w§théÒ¥ûðáÃDuÝrË-?ÿü³·´p¡´¿þú+;ç–;wîzõê¹PÂ$‹d=Ûí£~’ÐpI ã< “:ÄŸþ9qâD†d·eË–IÛŃáD-[6œ4i+Ž.–Ô¢5ŠÍ¶—w©à¦Nš7o^oH/)E@D@D ®*Uª´bÅ lrÓë[o½U¥Jê•ÄuÀuF´9‹¨Í-qþÓ?•Âÿú׿ÌЂ víÚ•êºNø€Œs?Ìb¨ .ܱcgp6Ξ={è¥ Sž”d-øñÇ-Zd1ênön¾ùf³'ÀÛ÷Þ{oŒÝêvð4ö¨$:vìXóôEí’š5k¾øâ‹Æ¿ÌÓª9%¼uÞxUàPþfóœ­8ëðzUÇ> ãÜ“x‚ 6…£ò´ŸÀ%¤<¦ý®OÑ@/OJ`Ù²elØhºÛn»ΜôF5 h×®õJªW¯Ž²ä ½ï¾ûÈÇÆ@t¯Žäµ™íl›h¾R/6e¨õuæ™gÒÇ|[OA¼›…2½Õ®]{Ë–-èî¹çï4bÄ,D"ÒYD@D@Ò"P¼xq|ô¨]B®57òܹsÓj«sé˜7o޸̭y~K·i.T¨P¡\¹rhÌ{̸ÊIû@è*ãÜWÓl‹+`ˆž}öÙ¾Ò-feìÊ+©ì—/_sê`çÎ7~øá‡MWòÀQ<Ʈ݄T0Pµ„í3fäÏŸŸææg´wïÞ¿ÿþ{w«É X·mù´§xC˜0vM&L˜â’^ú€€ŒsLâ?*ØäòiÿJÈ‘r¶‡À÷Lo,ùÏ™3‡(1úè£ÎŸ?¿H‘"áÞ¯v" " "H$£e-»iÓ¦hOp¿~ýêÖ­»mÛ¶@ˆLip}øá‡Ü“5kV’(Ev³ß[ÛÝÊêwƒ¥ŸŒsÿÌ7˱&šš=svÎý£Xü4!Ûçé§ŸN ;*%LÈôfƒå *„WÞÓO?­Œ©áÐS`ç|úôéÏ=÷{éÐXºt)‰Z´áyÒ7é÷ìÙC3 µªyÒöjP¶lÙ‹.º•y;á (݃ ¬ŒsÿÌòìÙ³÷íÛ‡>çè‹,ÍyÍ“'‹Ö\"‡êš5kÒl£“†ÀúõëkÔ¨1hÐ ó²U«V,ÿ«Ê¨Þ" " ""Ï|ðÁÅ‹—(Q‚:ÄÎgÇŽ=Q?j,ŸöŒ§[žíóñôUçžž¾„—Oû 8Òy!ÏötÀœpúõ×_§@+Ö8gÏ:ë¬!C†E/W®\'4Ò ðT«V,îíÛ·7Íù­ZµêW_}ÞÝÁjE4µñpÌœ9³\AÓœ{¾jþÓl¦“^$pªª/zqÚRËL¹Ž|ùò±KíÝ»wóu–ºÎ@`ûöí… æmOõ_|!&)úÈǚƢZåÊ•Y­[·-Z4–®t¯«hçÜUÓ½0ü1–9÷V-Ë<ŽN›ê£l ›ª`4Ú%Êr°fa-ó.]ºÖ^–yÐÞÒWD@D qn¾ùæ+V\|ñÅ ñË/¿Üu×]­[·Þ¿âFô\ÏòigÊ”.J^l#ãÜ‹³–†ÌÖ­Å:º¤ÑH§þ& ÏöÔo„?þøã©§žª_¿þwß}ÇU<Øñc:t(‹ú©ëŒˆ€ˆ€ˆ@Ô.¼ðB6‡I¹jz -9+ã ,ˆºCŸÝh|ÚÉ>{ÕUWùLµ8ªcskısuå ¹µ;?nC³òŠOûáDZ©víÚe2‚Æ­wßu´yóæR¥J¡NSK–,ñ~+DªO¢àÈŒjîÄD=zôùçŸqGºAD@D@D l+½å–[öîÝËT“¡Xéc=fÊʄ݇ßâªÃ6Z5nÜxæÌ™~S/®úÈàóÏ?§ËM›6•,Y2®}«3ÇhçÜ1ôqxÚ´iXætˆg”,ó“‚åûË” `ÝzçÎ'mïï8±`o,sV©©”FIsYæþžti'" "àd;#È®aƃ Û“O>Ù A’ã¸A6§d°Ån¯¹æ§dðʸÖ[VϽ2eáÈ)ã<JnocZì§Ôí;-Ÿñl'-ÎÛNËâØøÇŽëܹs›6m8€dÁ§ŽeûÓNÓׂc“¢E@D@E `Á‚³fÍzæ™gXGqÖÊY1ÇÑ=PB•5ç<ŠPÃ5ô¼ŽSÀ³B}œ·†@ê6:ã9z ÷Ü”¥øÈ‘#S¦LálÞ¼yÍâkÊzŠ€ÂÎW¯^M—W_}Õ°aY‡Üõ&9j*Z:!" " "(¢<òëãEŠa ’ÃáI¢8‚5¤[û]÷÷ÒÕ®];þünÓ-rQ~¨FHÃC݆ Ü"–䈀ŒóØø¹àn,ó£G"þ?S 6*V¬X¢D ÚÏŸ??€)RLÊúµk×B [¶lo¼ñÆøñã)Â>@µˆ#ÖÇY%oÛ¶­é“œ¬üRc«Æq÷w¥<í‘Αõ™Õæy¤è\Û^ƹk§&\Áì§Ñ~>ý3ØíÌæùï¿ÿ>yòäà ë ¹O»uëö믿¢5¥\V®\yë­·‡€4wÈ‘#ÁÃ8µeÍš ¿úê+|Ü^{í5wJ›©ŒqŽ«6¾‰èß}²š#ÏvŸM«ŒsoOèO?ý4}útt8ï¼óêÖ­ëme’+½M4bS$w|F›;w.‘l}ôcóU~ß}÷‘‚.ˆ¢!E@D@D@Ò"бcÇåË—›Ìµ¸FvêÔ‰ÐâC‡¥ÕÖWç¶lÙ‚ï*‘„ü‚ .ð•n S† ¾„Ð=î_ýuÂÆQÇÉ# ã" " "àguÖ!C¨)“+W.tÚ¶m’ýúõ3?å~Ñò=dœŸ€#ìvÎaߪ†n$ ãܳ¦Lœ9s&qþ©U«V˜w©™%„œícÆŒa¹x´fŸü¹çž›1c†2 Ú÷€D@D@DÀµ('†§w:u'¸Þ½{ã·sçN× µ`Tw7Ï*<´˜”½Qw´ (P¯^=´Þ¸q£‰ Ÿé+ãÜÃÊzêñãÇQÀfƒð°2NˆÎ"tîܹyêÔ©&AšR$jÌÇßtÓM:tà€1J•*µdÉ’|Ð$IÔ¨êWD@D@D ~Ø€™7oÞã?n*ò>†Š3<·ÄoWôD ¿þú QìÆ‰+Äòˆ6'´6Ï=2c‰)ã<#:.¿f?ö3érÝ&¿s-[¶D*bΉ[s." " "àQ¸û}ùå—fS^|ñÅK.¹Ofª*öž={-ZÄ™2eÊ /ô’ŽÃ!'Ož Ð’4CŸþy8·¨k È8wíÔœD0ŒI¢hd“4žä‡.ãS=zôè+®¸â»ï¾C²¯ 6ì²Ë.+\¸0Õ;»wïN5/‡Dûï°5:çœs8 ï½áé 0±MùÞzöìùÛo¿Ñ?ÛD]ýõ±÷¬D@D@D@œ%@r¸?üpðàÁ¤‹C’U«Vá÷Ö[o9+U죣”ItgËÜÆÞgÐz°^´Ö¯Öµ\n8Ï}6ýy‘@Æ Í»weÊOv6lù’5¿ˆº~ýzóŒGVèû?œ—_~ÙA¬í:{ölň}è)S¦äÍ›×°¥®ic0ÑcïV=ˆ€ˆ€ˆ€¸Š[èeË–µOSíÛ·ç¹ËUF$ û F—+VDt£[û÷ï?ãŒ3ÀÈî+ö¼{“åëâ‹/v¡èXæìEeʰ#![ýõë×g·|À€<òHíÚµØìWwëÖ Ol§´ðg;Ùìî¹ç"Ð~üñG0R¿‡¾}ûš$§Àj\D 'wÜq‡éœÊ,< zÔŸùÀd¼C‘¢E‹’.'¸‚ÐgΜ9Éä¦xª:딚m™驤óή hôèàÑdÞ>úht=$ç® Ø÷1¾XK—. —@h»¯Žo9G¡W“vŒw£`Á‚î\kÌÅÚµkÿõ¯YÎD£íÛ·/ã[tUD@D@DÀða>÷ÜsÍ3§LõÜ“ŒuËà|0#ª`I²aã í Ó c}U;çÖ¨ñÒ'±&dÉ’V°^xhû’RˆnÎ`!?óÌ3¡W“vL¦4ãOµcÇw®5f€âµ×^Ã÷6Ú°Ä0tèP·XÉà]ð‘\Æ<_ËÖ£GË/¿œÝi§<íñš¬V­ZeΜ™Þ&L˜ÀM¼ºo?ž0 â«r¤½É8”˜óí±!MNKZV¨PÁyÒ—àÌ3Ï´Cƒ£ìÉo¼Ñ¦åœ4i’=Ÿä/z¶ãÖ¦M›N:=z\¼ðgëÒ¥K’Ñi8 à ¾páÂ^½z‘n1>þøcœÞgΜé HáM-[#*Þ‹)¶pÂïD-  ô4kÖŒck)¸ŒWLÑÉ8w~”CSÇ nvyžöpÔã‡ÄÚ“ßÿ½É1ÎñmÓ¢E žýÁÄ·çõÆÏ0®ìv±¹k×®6/_¾|‚†S·" " " ®%À3L¿~ý°rÏ;ï<„$3Fš-ÝâZ±lêÔ©&9QëÖ­O=õT7‹ê Ù¬G­õ±õ„Ø¡BºÄ4)ÉÇ2Γ <Ãaœ›^ì'0:×…õoùã?¶mÛæˆ ø“¬Ž¡¿ùæã"îˆá ¥'žx‚j–¬eÐ>wîÜø±2ÄFï‡Ó‰Úˆ€ˆ€ˆ€øŒujy†iÞ¼9z±‹Cª]’ïRøÚÍj’-؈§"jq™&v›²dÉBW'Nä‰1.}&¿7˜É×ÚŽ(ãÜ¢ðÆÍÁˆÏR™2e¼!t†R)RÄ^7ÉÆíËdx³ýÛo¿­W¯Þ“O>i¾p1Ñù&\2Ai,w ¢*uUŸþyã<¼lÙ2²¸“%ÛÒ²g>mÚ4dË“'OݺuÝ)¤·¤"ÒW\Ìäøä“O¼%¼•Ö%¦•'É2Γ <Öá¬O»?¶ÍÁÁÞ¯…R¢D {œä²h*»ˆ›dN:é=*Uª´xñbZâÀFþ< ³S5í¤7ªˆ€ˆ€ˆ@@ð0sß}÷Q‡j»¨Lqén¸á¶Ûn;räˆÛOÌ9Rñ vúé§»M<Êc ïz¶»Ä4pê ãÜ)òQŽk?i>87vîÜiräÈ‘?þ(¹Ä|aZ5kÖ¤›¯¿þzÓ¦M1÷ÏøA¥–)3~ðàAú-V¬©oR¿Äs$õ%" " "à} _¹råM7ÝdT¡xm•*UÈëî*Ílêù´Çq^Ø9gÿœÙmúý÷ßãØsÒºr‰i4}S $ã<W¿$pˆŒÜˆÈ7¬ÇpµÄagb§i踗¾;=ÛW­ZÅt1°dý›×5j„VMD@D@D@J Â×£G>çœs@°aÃÒ¡¿ôÒK.ÁAà>úa¨ÓÞ°aC—Hå1ˆ9'òEöíÛ‡‹¥5rià=çŽ`rP› Î7Ûæ€Ø¼y³ÁѶmÛ(¹Äé6·çds1ÅáùAEEó+;fÌJeÄIcu#" " "àgíÛ·g ½jÕª(ù믿ÞsÏ=Xn{÷îu\ç¹sç@ä -¯å¸`>Àëžíî1 y3È8w{”ƒúϧfO˜ØiêEÉ%N·á.NP7Q–lûöíqê5ÊnÈäAÂÕûï¿ÿøñãtÁÏ*[èÖ?-ÊNu›ˆ€ˆ€ˆ@Ààk¹dÉ’xÀäÖ!cÕXçÍ›ç,ù´'Ž?…ôÌF}ÌcdâÆJDÏî1 ¡ÝIû”q~RDni°qãF,„KsÑ¢EÝ"VØrìÚµ+uÛY³fãÍùG}Ô ÅÀÌæ9[ÖÎ<'E Ùøg̘~J{ôèÁϪoR¿ tFD@D@D qÎ8ãŒNŸ>=_¾|Œ²cÇŽFñèåTL2Eg°‘$[¶lM›6MœâÁì9sæÌäØCw|x¤t-O˜ɧ'ã<ùÌ£Ñú´[g•(;rè66ÆS¸QmݺµsçΈà ßí·ßî\' ë¸g; œ¬m_~ùå»wïF2ÒÔÍœ9“R¥ü¬ž ¨^ˆ€ˆ€ˆ€ˆ@$0ƒ©ÀÚ¸qcnúóÏ?)ûB}Vª´FÒG|Ú’×ÖTÏåÇÔåŽO¿ê嬱`½nÿwÅEÿ{Â4H>/çÉgåˆæÓÅ>ªã±ÙÑ)@æ«®º -HPÁuêÔÁ>ïСÃäÉ“]b|–/_þ /DÁ… ¦XJˆNëˆîÂ9‚Œñ”'eëžÉ·É(kÛu¢Æ" " " "& °•:`ÀóÜ…_}'NL³qâNʧ=qlMÏ,ÁäÌ™“cž±©'Ÿèá¢ëߦAtªÅr—ŒóXè%ïÞµk×÷ïZµj*T(yÇo$¾ˆÙ!'j—*þ®¿þzâaž~úéQ£F¹Ä27ºšÍs®&Mš?íOÞeNLášâ4hÐ ¢ÂòæÍ{ò;ÕBD@D@D@Â#À6ÏC=ÄÞuñâŹÏgv}ðdD¬Ýéþ´ðhmh>xOá§MéEܶYq Þɤ'‰’KnK¾gû¡C‡Xª¸í¶Û¨gŽBeË–]¶lY÷îÝ œºSªW¯N¢ÙvíÚ¯¾újµjÕÌ>P¢é|öÙg&í.»»¦Ì[¢G fÿî÷l÷Šiä÷O¦$§á¢#`|ÚO;í´6mÚD׃K?—“¦ü8]pÁ”Xœ3gÎO?ý”èºex”QºÜF|uêÔéÅ_TüUšS£“" " " ñ"ÀÎØ±c±»uëÆöÀš5kx"¶®K—.ñ"Í~Ø¡1篹æš4èd\P=LbûñÄd~ɽ—nãÞ‰ûMƒ¸«œq‡Ú9Ϙ+®~õÕWëׯG‚´Éæ ™|-DëÖ­Ñr S§NMœ¢äbÁ«¿nݺÆ2'4÷žáÇË2Osõ," " "JàÖ[o]±b…)%Kp29ºp!M'x‘•EC£hÑ¢˜è=öÙâ8ŠºH ´hÑ?><û¸ϾÇœ¸e“¼-Ò®Òko|ÚyìiÕªUzmt>^àl 0³Õ”ä"Dé©àQÓ =uq^&A"¨Æ³OOû´S-ܲàëÞ»ÿÀz˜Û%ÞØe†@•*UHˆjºÂ×ç.jãÅÞ³zØ ,XpöìÙäÄa£‚ÞæÏŸ¯_¼ì:2(Q©‡n/½ôR—§ޤKzp›g»wMƒ¤Mè©LÚ`( %J” 8‡´;wî4¾FQt’ü[0;ÉCÞ·o_Ä6£S-ƒMcJwT­ZµX±bÉ)¢?Žg;ÙÚÉÓ¶gÏøGt{ŠÆ|Ê^z饞={’dŽK$Ì|ùå—IÁ’¢™^Š€ˆ€ˆ€ˆ€¤¨&s÷Ýw8ï÷Xd{æ™g¨¡K/¼ð½÷ÞKWº7L<‚.\÷ê–QÆ8GŽaÞ÷f^7 â$½eœ§GÆç—/_Ž5‹(Mš4‰¯u¢Õ1bÄÞ½{Ó…ÝãF¥yÉU'Û·oO‰Dš5kV,cÛc‡O›6Íh‡úãÆ+Uª”«”•0" " " "JààÁƒ;vœ8q¢9Y±bÅñãÇ—-[6´MDÇ<­\¹’[¨SƒÅѽj5x€ yÜþÆo8¸3äÓ ê)ˆèFçáJvã=z°Nɨ¯¿þúí·ßžìáƒ=aQ&?‡Œ™3gÞ|óÍ»víâöSO=•ïG–Y¼Œ®7Ý%" " " É$@8»ÜÇŽcЬY³â Ýé¶mÛŒã$”l>%S…€µlÙ²5j¡iÓ¦3fÌ8 ÷«¯˜sWÏÑ„ ïŒ3Î0•·]-«ï„kÖ¬™)9þá‡Fýcüƒ>H'Æ2'¶ ߇çž{N–¹ïÞ)RHD@D@|K S§NØÒ*T@CòÚÞqÇ„1:t(R…mS|;ÒÛÕ>j8á’˜ÛçÌ™³oß¾¨ûÑÉ! ã<9œ£…š“¸ýp'>Õ* ÁØî!2œ%Fú l~éÒ¥u¶qãÆš5kþç?ÿ1V}óæÍW¯^ݸqãˆ:Qcpœ@ùòå±Ïq$4’Pâ·R¥J<¦F$˜ÉÓÎ-2Î#â—Æ&-Üï¿ÿ{ç(E±ôm‘ A²ä¬€JÉY‘ ¯ ˜Åœ0gP/˜³\r% ~dÉ9+ J Y²ä Q¿ßµ¯íñp†™Ù™Ýgÿ€Ù™îªêgöìNuWW²wÁ±qƒÎ¹T‘iÊ›KÖUW]åŒD¤„IÀ,ØéÞP|öÙg5jÔ0»ª”:åÍ7ß?~¼)œJwÚ@€ _Èš5«¶øéqH‰re˜bÔ6løòË/‡XÝ®shž´;ÞßYëJXçÂ{Ð"œóAyÝL+®&¦]QД‚ôšþ_úTðS{ ô.Dç\Q^š›¼å–[T ]½”4eÑ¢E<ðÀ_òø€ •€-T¶Aƒ€–aŸ~úie,¶uyÒÕÈ‘#M,!ËæiPrï’ÌœÈÌ™3•³Ý=EHŽžÎyô ]‘ 8j•=h}ëŰì+c ŽPM7iÒDönذA Ò6|Þ¼yªj§$µGkñâÅ:“v/®B€  (Q¢„¼ž={ž}ömcÖ£Ž-I“Ú(l45ÎyjˆÜ>oÏOŸ>mï…Û‘œóȸ¹ÞkذaF‡ Dq]% R"ðÿ÷æt‹çú¦ëÕ«WãÆM޹ôúâëß¿¿’š¦$’s€ @ ¨2fÌøÂ /LŸ>½xñâÃîݻ۶mûðÃ+nŠCR²Y³féRÙ²e+W®œbNºMµTü IDATÀl;—ëb¸­ù‘À9Œ›»½ùcªJjÇr‡ÜU†ô4 hO™NÍ9ß²eKÓ¦MŸ{î9¹è’Ô¨Q#E|Y—>MÙ\„ @$ 5 =ð˜ÇT=¸¾ñÆJ…»víÚ33zôhóŒÄ²ù™p<;£iS£~îܹ۶móL/ŠÂ%€s.1/ÚÛ?e Ï•+—*Ñ‘ •@Ó.®X±B9Ø“µÒŠ¢¹æÌ™£ó™2eêÝ»÷Œ3ñ•¬o!@€@œP-!•›}÷Ýw•.NCS*\ím8p`²aÚ8j–.’‘ñø­Y5WÉÙ³g÷èÑÃ,³ÿSï @€@|¸÷Þ{•þÖ¬Ê>|ø¦›nºþúë:dF{ðàÁ©S§êXK*¸Ÿ2*ëVÙîç;†sî»»£ -3ŨiHe ÷}‰gЙÎù’%K47üñÇ]»vUº8³Àžxx1 @ M J•*J‚{Ûm· ƒ ª^½ºÎèí¸qãÌ^tû4•Фb:ø‹.ºHwJ&¨FýæÍ›cj ÊS%€sž*šX]PŒ´)JѪU«œ9sÆÊ ôZZ×oŒÞ~ûí·ú.Ó®ª:uê¬^½ZgÎ=÷\U52dHîܹm{ @€@BPÜ>úHK²æ‰hݺuõêÕ{õÕWM%¡À9÷ÃçÁä™¶›ý`6$#€sž HìßÚ˜vò´ÇþfüeýEQ›´fÍšZB¿ùæ›ÿjÅÿ€ @ q èÙU±„Z“'O>öØcʧãB… ™ê艋Æ#'²Ý÷!-+pÎÓ¢ãý5Óž-[6Õ¥ðÞ4¦HÀ:ç«V­Rƒ 2<þøãóçÏWQÛs€ $ Å*ô©§ž2Yxôd+—\r IyüðaЃ«6fÊEƒnذÁ&aC28çɀĸ­’ŠíܹSF(¦]!Ó1¶õ8~ü¸"µ,Œ‚ N™2¥oß¾™3g¶'9€ @Õ¯y饗&Ožl²¸ëÌ×_ýÄOh->1'`Ïm¬nÌM€¤pΓ҈ý±ý;!¦=ö7ãO ´T®è¬7ß|ÓÚóä“O6oÞܾå€ @ † &]Æèׯ_ýúõׯ_Ÿ¬o=&`] r¶{L>Du8ç!‚ò¢ÙéÓ§Mžv%Õ ¦Ý âééЂ¹±´{J ³dÉbškÙ<½~\‡ @ M`Ú´i¦ šrô˜‡(…R+ÃîàÁƒšK¬¯}¦¦'­]»6Öæ ?9œóäDbø~Ö¬Y»ví’­[·Î‘#G -Aµª—_yå•wÜq‡ê™‹FÅŠ¿ûî»’%KêX?6*Ú "@€ Ô˜']}öÙg,XP¾|yë êºë®ëÖ­Û‘#GRëÈy· ØÈvÏÝF|œó ¹ÕeøðáFt—.]ÜÒÜhçÕªUÿßÿû¦í=÷Ü£Z•*UêÔ©“Ψ\çøñãCC@€ ˆ jò´+ƒÒå—_®$dZä¸é¦› ‹èŒVnÆ,GC¹eˆÝNë£0ápÎýòQз˜ñÓÞ¦M¿˜•`vœ:uJó»M›6ݲe‹†ž?~ý´¼÷Þ{&£‰qÎuÞúí †‡áB€ ô hã×_U;Eƒš‡(yéòÉ¿øâ‹œ9sêüš5k”Óç­·ÞJ_-œ&P¢D‰ºuëJê²eË~úé'§Å#/*8çQás°31íÂŒL”JJ4jÔ¨OŸ>¦ìG³fÍ~üñÇöíÛ[iJmR @½0aÂo¿ýfÏs@€ ` ؘvm´'u ˜v-˜×ªUKÇ E|ðÁ•eɸñI›qì6ÙÎâ¹Û¨Ã•s.1·ÚÛ¿ ›DÑ-MÈM‰À!CªU«¦=Qº¨ä¢/¿ü²¿-Z4i[•èìСƒÎh£” „$½Ä1 @€€üñÇ#GŽÔÖ̵ržŒÉ\0oÞ¼G}ÔDVk«`•*U¦OŸž¬o]%йsgSyžmç®rŽ@8ÎyМïBL»óLC–¨T¢Úuíµ×š4oeË–Õo†ê¥™ï¬dbþïÿþÏœ!²=ÞB€ X¸pá¶mÛt ÝæŠf?“‰VA^y啉'*THW·oß~Ùe—=óÌ3Ú]xfcθA@ëO 4d…µ+¸Ý ÈŒŒÎydÜî5sæÌÝ»wK¨v›kϹÃÒ—:SÕcàÀ¦É 7Üðý÷ß›h«;©ÂyîܹuiìØ±ü„¤ˆˆ“€ $2»€a—4R¤!×ý‡~hÙ²¥®jGáK/½¤Ý…7nL±1''`cumô®ã*œó 9ß…<íÎ3MO¢~þõ¯Õ¯_ݺuj›+W.Þ”—nò”¤Ö[…:Mº>ÕZ›1cFjÍ8@€“€Ùpž)S¦¤‰{RD¡•såñéׯŸÖÒÕ@» µÇ_1EVŽŸ´‘íwœm4qΣ¡çL_bÚ᎔­[·¶hÑâ©§ž:yò¤ú)eåÒ¥K¯¹æšPdØi`;1J/Ú@€ ¸' |oʰ«aªöMÞ¼yÓ¯vž?öØcÚQ¨½èj|àÀå*»ýöÛ=šn_DC@3#7–eÎ×cp4¢èë œsaF(JyÚ‰i]DÝTMeÌͺ·6–÷èÑC?Ê”)¢°+®¸"[¶lj¹ä’KT-S­Î9眷ÞzKaí L³S$‰l„} @ˆ;Û·oW7 «R¥JåË—w||ZtÑ£­Ëýᇪ4úòåËW”€•JéòË/×À·lÙ¢íŸ HÀWCÆ9Ùí˜7ož¾È¤^¡×¦¢cÌL‰ÅšLU ‚’½9rDcªP¡‚6ÏÜÿý.¯S§NF2áU.F, @  â²fÑÕ.]8nvîܹ‡úñÇ›òF ]T!yéŽ+J@D¶ûç¦ãœÇì^Óî,zmà¯Zµª¥z×]w-^¼XÙàœÕ’TšÂ«”û]g¤HyD“^†$»Páà†óéÝz뭪ȭG>]Ud»âÛ¥QË3)6ædˆ:tè`²2)g;‘í!Bs©ιK`ӫϽٙ£¸kbÚÓ•ÞåS§N=ûì³M›6U4ŽÚæÏŸ_Ó·|ðrà§×5ÚëfzXwS£•E@€ @{öì1uÈË–-ë꺈asÑE-Z´¨{÷îæ­æä«+W\ÉùÅdE%˜ÜL[·n?¾_ÌJH;pÎcsÛµ-GŸ~éÖ\¹rÅÆˆ¸ÐªJã 6ìÓ§öðk@*ƒ©ªÊláÍàˆl÷†3Z @ð-Ñ£Gk¥Dæ¹ÓžlìZÜzûí·ÇŒ£%]ÒòŒª¬õêÕË< &kÌÛPÙ %Úàœ{9 1gÉÓžO 4H5Lî å™T¥)S¦+V,dÑ6¬X±¢Éz¢$¢¿þúk´âè@€‚FÀ³˜öd`Úµk§%¹å:úôéçž{Nq”ì4LF)Ä·íÛ·×”‡k‹(‘í!Bs£ιTÓ—i¾Å´»C é·¦Å:tà 7\ýõÔE…Q)Áž*m˜Úãg4wñ„Ù[¥ŸM»¨Ñ€ @ÀôH6uêTÙU¼xqeP÷Ø@-ÉL›6­wïÞ3f”j“ˆG²î‚"y•£Z·mÛÆ:ÕçÜ)’aÈQ ñÍ›7«C‹-´Ç#Œž4ý“€6iÁü‹/¾0æÆ` @ð†€Š™M˜0Aº ( µo”¦¦%Ož€úÌ«â”öíÛ'óµ¡hæÌ™Ï?ÿ¼O~d’¦Š5a¬M³Á)€1L† @ ö±Ö.TD"Åé>*TP‚§{î¹Ç–Ÿ©\E”ï³"ÛMÜ‘í¡àr£ ιTÓ’i¾ÅäXzV‹;-k|M™Þ.¹ä’tõÕW+”=æqSɰénš š<žýôÓ¡C‡jC‘ ™mç2ŒÈvÞL‚ @ÀqÓ§O7áâZnÍœ9³ãò£¨•0BoÔ¨‘D)c‘’º«R’J…E/9Ž%téÒÅŒîË/¿Œãaúvh8çžÞüCL{ÚÜ5]§Œ<òˆ²¬©¥2¢k¯~·nÝÒîëú®W}H0vìX“¯.†Æ € ¸M µª¾®I»rÆŒÊa¤§5·áW~Û¶m‰láíÃ9÷¾ùSH_íÌñAÊ”ó\ß›&>\¬üqm*W®\]cÖ$K–,mÚ´‘zU×Ô–ø˜Ùb@€ à>Ň=Zz²gÏÞ²eK÷F®AÛ•HXg¦öíž={Ú·oÿý÷›òì‘ËÓž6²}çΪ§£ôï°pν»7k×®UQéS¨vÑ¢E½SMʦ¦ïJÍØíÞ½[V‹Ò”)SúöíëÏX©d\í„ ‘íÉÈð€ 8#0wîÜ]»viPÚ¢lZ}>@e,Rˆ»}Z{çw.½ôR³wÒç–{ožÍÙNd»÷ðqνcnƒ”xÜ;­ÁÑ´bÅŠÚµkë»Ò˜¬k?þø£ßò‹¤S?NÊ>¢£FÒ†ù4Zr € š€}¬ ÐVͼyóÊì>øÀÌ&ÈWWÖa¥4 ôpÃxÙ®'Rè¹A8 ™8çiÀqø’ý³“v+²8eÔÔÆrY oÌ÷ß_.nþüù4¦9r˜°®íÛ·/\¸0@–c* @€!”]íí¶¾ÐûƼå]wÝ¥Bk+V”%ª×{ë­·víÚõÀ17Ì?è™¶uëÖ²‡Èvïo ιGÌUÂañâÅR¦)ºÒ¥K{¤5j~ýõWíü¹ï¾ûL…pí6¨»ï¾;¶'·ÑN»Ùž ï!@ˆß~ûí–-[4šË.»Ì$Ä ÖÈ*Uª¤!ÈK7f6¬zõꬬ$½‰6g»ªÄ'=ϱÛpÎÝ&ü?ùvÙ<@Á? Ñ–r›3S¹ßxàÍeV¨PÁÕn¨P)‘L™2I2ιx‘ @€€ÄÁc­â4ß®(Ö]H7lØ :Ç/¿ü2QÜæ¦<Ç&ø_ˆ`âåιG´ãà[ÌYRª‘öè£*\Aà’¬ªïJÒþæ›ožsÎ9Î*òRš¾ß›4i"ëׯ×F&/U£ € xCÀÄ´+ º‚½Ñè’Å<.]ºT¹â$_¥pŸ~úiŘGS—4E,9Ûcu§pν ¯?ò H“¢hÊ—/ï…JëX½zµRÖ¿öÚk&qšR©)÷›þõ·Õ!YGd{H˜h@€@0 (C*ÉöÆ+=PмK–,©*k={öÔ\ƒ¨(º‚:µb”bã„:i#ÛGŒ‘Pí`qνà¯ùEã…Ó.Üüq5–,Y¢c­“kµ\߀… òâN¸¯£cÇŽŠÏ—"Û݇@€¼&`Ÿpì‚„×8­Onù /¼ ·¼xñâ’­tHJWþàƒ*ÌÓiUA’'¦‘í^Þ6œs/hÇß·XdÔöíÛ§2r·ß~»rcJ‚ö–k‡¹ö™o62™~ëU¤H‘ºuëʪåË—›ye¿Yˆ=€ @ bf«¦Þ:uê±vlÔ¨‘ö$j•ÅØöÖ[o)ÌSÁž>4Õ“ldûŽ;TÖÞ¥hÁ9wý3°gÏžY³fIMÙ²e'ãº>¿*PȆo÷Þ+C¦²²Ç%;‘lvdùõ†` @ÀÏ?ÿl ßÊq-Z´hx}ß:_¾|zxS}_³b¬0OUYúì³Ï|o¸[ÚÈvr¶»…ø ¹8çg qúĘ1c”aBR­Ïæ´¿ËÓðŸyæ™æÍ›ÿòË/²UÛ“TÃ\2MH¿[¾}v"ÙFL„/ƒ€ @Àwì³M?ÖÞsÏ=¶xБ#Gn¹å–k¯½öàÁƒ¾»îDd»ûŒ“kÀ9ONÄñ÷ö[,17œ¯[·®~ýú/½ô’)à ]¹ß:tèà8gÿ<ÿüó«V­*{ô;uëVÿ†%€ @ 62Žsñ©\¹²<ï¸ãÃjÈ!*„¾hÑ¢hбoΜ9UYI–+¹õüùóƒ8„ÀÙŒsîØ-3)ß’‰;tèJyë¤2LÔªU+ÙÕ¸;pà@}—ÉGÕH3gÎÜ·o_ш¿ ¨3ï£ùÅÒG‚Èö3áp€ Pä·ß~+Ë«U«¦¥ˆ !t›àÙ¿…sçÉ“G½T%W×ô(›âèb×’ÈvoιcÀU&­{÷î³gÏ6KÄFî×_}üøq+Ô9žÒž¥KíÀ×\sÍM7ݤé 5V9“{üñÇ‚N¶qé£ @ð3[~È>çøÙZGlS&ce‰S¨¤iŸæ“O>yùå—'T!ôvíÚ©¸’†¯ ‰D›˜pä#®œóp‰¥Ú^¨ï¾û®J>+VÌzéÖ7Kœo1š7ožâº‡j`i¯Î÷߯Œ©²‹» š©)W®œ†¥ÉeŒ»ñ1 @€Ž€iO¨­š*„®ÔÎ=zô8ûìÿúMS§NÕS®–ßäöçÊ•Kó¬¶jj¥-AFÃaâœ;_õ¬—¾{÷ný,X°aÆÎkòŸÄÓ§O?ÿüóš¡Ø´i“¬Ë›7ï—_~ùÉ'ŸäÈ‘Ãƺk‘™ŽetWÒ!@€€ËôLkêi]xá…ª†ë²6‰W!ôÞ½{«ºVàd™P(SÚÃ?œ …Ð>`îLj#üucâÑœs謁ô3f(F±Ü>ø`²ˆwÇHôÆU"ò…^G*L¹H»S%FFÅL-9Ûc†Å€ 8M`ôèÑæ/¡¢A“RÔⓞêÛ·o¯“ ð~ã7TOnÍš5IÛÄ屆œ%K ͆NÄå0}2(œs/nÄÎ;íZú}÷Ý—^úàÁƒ#`9fÊ”I󋚘(Q¢„|}©£víÚfzU9ðÌÆ{_š‰Q€ @ }Ö1K¨˜öd\TX“ï¼óŽ-„^£F$kgo•¯E‹ÔæÍ›Mšç8 ¯†ƒsîéíÐZú{ï½gö¥þùçžêSÙŠ+Bì!ÏóÆo¼îºëLHeïTÔ“Ý™¢øk¦p ³x®Œ€‰³1)þî##‚ @@‰~Ô-¥J•J¨,B)Þz­´©¬ÚÅ_¬«*„Þ­[7ûœbû88Id»g7çÜ3ÔÿP¤¿ä&Mšü㔟Þ,[¶L ¿Êâ–®Q .T9ÿüç?¦å 7ܰtéÒK/½4ÝŽ‰ÐÀÆ}Ù¼€‰0jÆ@€@œ7nœÙ_mŸmâl€á§J•**„~ûí·›Ž µÅƒÃˆö:tP`¬LeÛ¹Û÷ çÜmÂ)ËõÕW5õ˜òµXŸU¡ˆ›o¾ùèÑ£ú7Dª×§O%ºSáG™œ;wn}1©°yΜ9c=¿è×®{…?É[QÏ/–a @™€iÇ9·Ì²gÏþïÿ[™¡z¾|ùš5k¦±oذ!”Õ;K‰ƒp àœ‡KÌöÚ¶qÇw8 È/¿ü²ù«Óúy¯^½RT²eË–¦M›>ûì³òäÕ@åµ`®Âæ)6NØ“Êí©‰F ÿðáÃÚyž°8 @Á% ›I“&ÉþB… Õ«W/¸qÃre>Ö3°ÁròäIBoÙ²¥ö±º¡+¶2‰l÷†?ι7œÿÖ¢…å?þøï÷>;’C®õpkTß¾}Ïœ>|¸‚y”ÖNÍä>÷Üs*ÿXºtiÛ‹K€œí€ ‘ÀĉåŸËr=Õ˜ZßA…{6+6i!t­Ç(Gò„ ÜÓÉ;vÔc¿TÙî*œsWñ¦ ÜÿíICÙMˆ»=£à[n¹åª«®Ú¿¿Æ&‡\_F*lnþVSmŸºì²ËLœ¿ª›$ € ‰€MCL{j·Í*š6mš©Ô³k×®6mÚÄY!ô hæ¬]»V‹y©¡à|”pΣ^÷ ´'•þüTMg”÷Bå">ûì3sUAì ãQ@{ÒÆ'#pÎ9ç´nÝZ'÷ìÙ£‰ŒdWy @€üL@+4Ê' óæÍ«-~65æ¶)Ù³ ¡·k×N–˜BèuëÖ•+sÜ2ÀVѳ9œ’ŒKçÜ¢pý XíIqüë_ÿR캶Әï D‰ß”þMIà’6ã8EvšyäÈ‘)6à$ @ð'­«Žšl“ÏiòuûÓNŸX¥LÀ –|ûí·µ<#“´9T+[>/Ÿ::=ÓªT°ÚLÄs IDAT㜇-Ü–8çዼ}°Ú“ŽSÁírÅÍ•IÓ‚¹J¦%mÀq´rn¾ åœk5–\‚ @¾"`cÚíª©¯Ìó§1Ý»wÿæ›oL!tí Uý£ø(„^¤H“únùòåkÖ¬ñ'ü […sîÑ b@{R4?ÿü³bužy晹sçžþùI/qœ6sÏ=W;ÏÕfëÖ­ú¦N»1W!@€€O(]ÎèÑ£eŒf.¿ürŸX3L!ôÛn»ÍX7…Ðí iá\ú✻öbƒОt3fÌP4 MI™„xl#Ûíôsˆi@€bE`Μ9»wï–öV­ZeÍš5VfT¯ ¡ôÑGÉ ¡÷ë×/Ðq”ö™–Èv—>–8ç.ý‡Øà´'F²ÌíI/qœ6öíÛ›I œó´Aq€ ÿ°Ï-Ö%ómA±$Y!ô'žxB1Á-„®ºq5kÖ|m§ß°aCPîB€ìÄ9wýf= =) ›¹=éIŽÓ% ì ¦ø„vP|"]\4€ @ æ´Àkœs¥ÎQa°˜Û\L!tm5Uâ§Nª ÷àBïܹ³¹vî&¸·Æ‡–㜻{Sâ# =)#en×TYÒ3‡BÀN9“³=\´ @ ¶-Z¤t9²A©sô@‚®]”}úô±…еY ¸…Ðí¶s"ÛÝøX✻Aõo™ñÐþ÷xÎ:‹àö¤4B?îØ±£)>Á,cèÐh @€@¬Ø'»À+KâF¯)„®ÝŽ‘-„¸´çeË–ÕÊ¿†°páB3}77ÈÁ9wñ.ø< =â5p‚Û#øÐ+V¬víÚêøÃ?¬_¿> t @ž0ι–|3é™ÞøV¤­ŽJ€ÿÎ;ïØBè—\rIà ¡›ÅsÍ/êøÇçÜq¤ÿèÿ€öÞ½{G<øˆûˆ5ÆAG;ñl§¢ã`P € ø#ðã?®[·Nãjܸ±üÉø`lGtß}÷%+„~íµ×زeË’%Kzõêuá…ºÂ.~…j‹NåÊ•5>mÑÙ¾}{ü”‘A€ l&×—Òå(iN°GâcëUýßÿþw²Bè}ûö D!t³x~úôiEéû˜qðLÃ9wþžÅS@{‘"En»í6ýÕíÙ³güøñwÝuWñâÅG–0Íô³¾sG•0ƒf € ‰ÀÚµk—/_.‹ëÔ©S´hÑ ™@[“BòÉ'UÝÿ«86¤ÂY½MÆ9wþ®ÄA@»âjzöì©Ðå`ü裔Ds{ΓJ<‰|‘%Þ=gÄ€ €°î–ÝZ°Í\BŸ={v=l!ôªU«~ýõ×~GÍš5K–,) UîÀ~65X¶áœ;|¿‚ЮÀuU\Tàú/¿ü¢Jæ/¼ðB­ZµLõ/‡%°8í/:ÿüó`æÌ™ûöíK` € Ÿ°Î¹]Tð©¡qdVÆŒ•ªyúôéªï£a©zÛ¶mzè¡'Nøv”æã! Çç[#gι“·,ˆíI×õ§¥Àuó¥à$d%!`¾ÈT.~̘1INs@€bO@‹4ß~û­ìPà2eÊÄÞ D²@¹ñUs·C‡´vA¾ùæ›ÚY°zõj2°s7v6ÇŸvË*œs'ï×+¯¼¢¸'%:'KÞàÍ7ßl§ßL຾| \wŽqH’ì•!CâE#@€<$ GË$$³O,*GÕY*\§ÌDï¾û®bZ…Ci˜Uý³Ï>ó!šúõë*TH†Mœ8ñ·ß~ó¡…A4)CùK—.­Ô|A­«6+ešŸë@ªv¢^ú;×+[¶l žÑn¢P\ýH¤(\qŠMPž݈_ý•Št)Râ$ @1!ФI“Y³fIõŠ+*T¨P*Ë–-ëÚµëÊ•+ ÷ïß?W®\¾‚sçw*á¼LÒœŽûïÚµkÓ¦M ¾Ð^ Îß»wï¡¿^ràµXh^Ú9›éÏWæÌ™õ0¬ècó:ï¼ó þù’Û¯=ízùmÈnóÄ9Iœs·oŒòµ¥<(Õ= á¥Š{î¹G{û¥qøðá;wöR5º @€@jäMiãžóU1wÕªU©5ã¼7äÍ>øàƒÆû•Fí2“úWe‰u UÆD¢K¦ˆ­Ô<‡‰dˆXcE@Z±R^Pœ˜qÎ5ˈsÎG€ ŸPõ\³GL»îˆb]µZ®Êj*l¼ÿþ 64lذW¯^O<ñ„Éë'OžTŒýüùó-Z¤ÕÛûý÷ßC7@ž£†cVËõ¯"Iµ„.™ú÷èÑ£iˆÒÀ¥N/«Krä¢×¨Q£nݺõêÕ+[¶¬½‘¯œ³îÜÛob¸ƒ±ºƒúÒÄ–â|4Ѩ)ê,Y²ÄÊôB€ K uëÖ&LÐÛÅ‹k«³=ÏAl lÞ¼ùºë®›;w®1£Y³fÿùÏ<(A¯GV…ÙªXš^òÉÓXWhº ) ]é·J”(Q¸pá (>]{~õ¸{î¹çj;gj å¨Ë?Wð»J²éÁX/…Äk¨"ä5pý«—,I­»5jÔ¨yóæª™U®\¹Ôšå<ÎyPvâœ;I3"YJÎ÷ù矫«ŠX¶jÕ*"t‚ @Žk$oJɃåbÉrL.‚œ  ˆ­™¿øâ‹&´A{³•%NåÖœ\†’"éUu…&Ož,Ÿ9ùå³ÎÒÚu¥J•”Ï_¬LÀyñâÅÏlæÔ-°¯[·NYëúé§¥K—jýçŸNq±]SbÒ®]»¦M›tõ çÜ©MäàœÇünéûÎÔÉPœÒG}s{0€ '0hР믿^´Ïù7ÞHpþþìÙ³µ„n7¨Þÿýýúõ;çœs±VKÖ#FŒ6lØœ9sÎt}/¸à¥g7‘ä+VŒí®omqWÍ© (Ì^/…£&# ôròÒ•EïŠ+®–—ŽsžìV&Ä[œó˜ßfÅiÊSß, ÅQÜNl¿àbN @ˆ9+¯¼Ò¬–¨½Í1·R$ GôÖ[oU¹5sUk×C‡ÕòuŠC9yüøqåøôÓO»ž,z\©-[¶TĸéOŠ4ïÛhAËé2~êÔ©*4 á$µAùä”àIÄ|’H/©m)㜧ˆ%ÎOâœûáwéÒEÓ“²dæÌ™7öƒIØ@€@bЦ_ybúWiq¶mÛæ}¾±ÄÄñ¨•Zøá‡6›À³gÏþöÛoËÿ WšÅßÿý/¾ø"Ùʳ\ýN:)8üÒK/ Ö'áðáÃS¦L;v¬bTUå:)ÕT¼j·nÝä®'=ï·ã³ýfö@ AØ<¨f–:AFÍ0!@ð!I“&É3—aªV,̇0=0éî»ïV\·ÂË¥K7NnçÕW_­¬¡¨V6m)W¼÷Å_,¯ÞzæÊèöôÓOÿðÃÚÚýÒK/)‚=pŸežÓ´‚¢vìØ¡Ô†Êñ¤tt†‰*Æk:C{ãUÒØÏeqÎCù ÓÎhÓ¦Ùc“œ×D@€ U«6­ìâAhKJÉ&ÿü®»î2F|ùå—ÊЦmØiؤdrC† Q$¼žB5#/]µð~ã7Θ1CYÖ”p®J•*iHÊ%… köA9ó´{T9˜›4i’!C¯-¥ :Ð*º>ç*IàÃáàœûð¦`RBÐLžöðh¨ªáÏo‡„¸ € ð” {ܸq ˆ_¥¹Nx ¬ér5ƒ™7o^½qãF“ƒ}f:7Qõµ /¼ðÚk¯]¶l™¡r¼½þúë[·nMê¾fð¡j§н{w%ŠS?ÍJŒ9RU¥µ£Þoá8ç¡ÝXZAÀvršÈvè"€ (™–‰ˆÖ6ãÌ™3‡Ô‡F¾! @nÅ¢›~ÊèÖ£G-ÿÈå¶j¶V˵<®‚dæd½zõtríÚµ=ôÏ÷`ÛQDy ‰ Åð ‹æ#Š+f¤©Vœ\t¥BôO ;Îy”7šîˆœ€ª©™<í8ç‘C¤' @ѰÏ!vÙ :yôöš@‰%—þüóÏ›K%–7.÷{ùòårÔõÀ©cÓe—]¦”æóæÍÓDŒ‰ôöÚÖ˜êÓʹæ#Ö¯_ÿñÇk½±EŸÿÊ•+ëüþýûcjÝ•“­=æ· ­=ÐSQ©=0úŠÔE¥©PZŽTZq€ ¸B@ÏEŠÙµkWŽ9TéZ‘Ò®¨A¨'æÎ«BèÚ2i´Éý6ËõVUÊñN… {´›ã“O>éÓ§2PÁ‚¾}û*£»mãý+çÞ3G#þ&`§¨í¤õß×8‚ @.;'Ï\JZµj…gî2l×Å7hÐ@E¿µn4Ï\{˵ÅZ7Ï<é Ð¥ÓSl¯^½´5]—49uË-·(ÖÀÆÿ'mïÍ1ι7œÑ” h›¹€sž2 ÎB€ à&ò´»I×kÙ|àæÏŸo«šŠ¢)]Qîï½÷^LF€sì(…ÀÿhPÍš5õæûï¿ß´i\ @€€—´¦*u*ïªòZ^êE—ã´6®­æÊÊn$k]gžzê)S»×quñ$P)âñħOŸ–&¹è?þøã 7Üà®Ö8•®Íçï¼óŽ–Ð‹-ª!îØ±C[Ð_{í5φ‹sîjA eª»X¡B]SY ïƒgR¶‰³€ $µ§ú[íÛ·O€áÆá•˜]iØG¥±i‡yÏž=Uµ¾dÉ’q8T‡tùå—+¯žÊÎI§JÇ?úè£J§ìsîdT@ &-œj™Œ=:¦\† @NP¯ò`IR£FÎ;ï<'D"ÃS‹/¾ôÒKM ó|ùò}ýõ×/¼ð‚\tOˆSe*«¦õsåŠ3!îŸ}ö™‚Þ8àöp¹ynF>Ò'@d{úŒh@€€£ì~:ûâ¨x„¹K`Ö¬YÍš5SܵԔ/_~áÂ…òÝU™`Ò5Í¡*kC‡5%g̘ѴiS•[sι«xÔ¨Q£T©Rjªâ ÌÉ…d @ˆkÆ9× -ì×ëÁ)W™êÒ:tH£Ràƒ<óråÊÅÕ}3˜«®ºjæÌ™ZH—EK–,ímÛ¶¹gι{l‘ 0˜Ikíf7n\Ýh @€Â'°~ýú~øAýj×®­:Rá  GÌhW¹žUîK´mÛvÒ¤Iyóæ™5  X#J}¯úÇëªU«”"νõsœóø@1Ä °“Ö6Æ,Vc# @$`Ÿ7ˆiÖý›?~‡Ž;&³µ¨«”~Y³f Ö‚h­ò7«h¼©‚.ÿ\¹âöïßïÆ@pÎÝ ŠL„M@™6 *¤nJ>a¦BÃA@€ œóÐ8ù«ÕÚµk•WÿÈ‘#2«cÇŽƒ Ê”)“¿LŒ_k”_ûOÍú¹¢N4«åFþvœóøý1²@PΠ̓Êä£GÊ?”í @€@hÓ¬v)Ëâ*Uª”-[6H¦'°­{÷îmӦ͞={Ä@+·Ã† Ã3÷øãPºtiùçfÿ¹òÃÝy玀sî8RB B6®ÌP Ý @€@šô¤ñǨ‰}öH³9cO@w¯½öZ­œË”Ê•+1"K–,±7+ñ,ÐdÖ˜1cLþvÕW{÷Ýwe€sî,O¤A rª‡‘;wnõ;v¬q2‘[FO@€âˆ1í»™}úôQâ7™]°`ÁñãÇçÊ•+pCˆƒëÔ©3`À3œGyä›o¾qph8çÂD¢"9sf¥Ü”e˜P¨LT²è @€R" ¸èÙ³gëŠÖµ›RÎù‹À¼yó^xáÙ”1cÆ!C†˜mÏþ21Á¬Q*¾‡~Xƒ>qâD×®]>ìœs§H"°ÑevJÛ¡ˆ€ @PPî©S§ôÎ>uüu…ÿýH@Ùˆn¾ùf…µË8¹è ´ô£•‰gSß¾}ëÕ«§qoذá±Çs ιS$‘\qÅfËèѣͷ°B@€þ"ðÕW_™Ã+¯¼ò¯süï_=zôøùçŸe_ݺuŸ|òIÿš`–)ßÀsäÈ¡qøá‡N½âœ'Øçˆáú›@öìÙåŸËÆ;v,X°À߯b @#pèС©S§ÊèâŋתU+`Ö'ž¹+V¬xçw4n-Þ|þùç kO<þñ\Я_?c_÷îÝM@J”æâœG îp˜@§NŒD"Û&‹8@€@ÂP.±ãÇ ƒž72dÈð<üà0.ŸÖÌË•+çwsϾ»îºËLriåƒ>ˆÎyô ‘' ´k×N™á$‘‚jNbE @ge§þÙpîÿô?_²óüóÏüñÇýopZxöÙg«šš™çRFý#GŽD çݤÙHµ) 2eÊT«VMm¿ýöÛ_~ù%´N´‚ @)øã?F¥ Ù²ekÕªU -8å;vìX¸p¡Ì©Zµª63ûÆ. I‡€ÍÛgþÖÒiÊeœóTÀ„sºsçΦ¹¾ìÎ=÷ÜpºÒ©0Ûú5eñR¥JU¬XQý¾ûî»ýû÷‡/à¿=pÎ#ãö^ݺu[ºt©æHôúÇÞ@ 6êÌÆ¡E!Œ®€ $.¯¾úÊ þÊ+¯L\ ¹uÎ/»ì²€˜Œ™ÿ#`nÙéÓ§gÍšœóȸ%殺•¿Ê”)Sò ¼‡@¤4÷V¾|yõV¡Ë_ý5R1ôƒ @ Ñ ˜‰þÌ™3·mÛ6ÑYø~ü‹/–r+LíßÛ‹hÔ¨‘y£}©Ÿ çç<Z´…€·Ì⹦ßl^oõ£ € ÀX²dÉÆ5Œ¦M›æÍ›7ðã‰ë?~ü§Ÿ~Ò+T¨pÎ9çÄõXãpp5jÔ0£RTudÃÃ9Œ½ à›³Èv/p£€ ìS„Ý1£Œ“1­Y³ÆQSXnœ )‘†¡mçyòäшW®\Ù¸qÎ#ãF/xA V­ZÅ‹—¦©S§:tÈ •è€ @ ¾çüì³ÏîØ±c|,G³eË3*î‰Ãá%ÀJ—.­QªÖ’’:G0ÜxvÎåÌ|ñÅÊs¸yóf¡9vìØ‡~ؼyó’%KÖ¬Yóþûï7U R£¦h•.¯^½º¦@Ôë‘G™8qâûï¿àÀ3»hŠkôèÑʱ±{÷î3¯r‘È!ƒY³–Ê }+5iÒDÎvß¾}Ÿ~úé ˜óZîîÞ½{¿~ý’7n\Ïž=/¼ð—^z)_¾|Ù³g×GG2圫å‰'Lû£Gꦉ€O?ý”dÚÉòÖ)šB2äšf²i§„#€ ø&€s¬û+ÿÂ,$X–§a­VC[´hñðÃoÛ¶mذa“'OVÔ·B9ÔEoëׯäÈ‘4ºë’½qZŽÀò8tÎï¸ãŽÁƒ+ÈÜâxõÕW§L™2räÈÇ\“4*LõÙgŸeÍšÕ4èÓ§O²Xô×^{M—®»î:+AÊ—øñÇgÉ’EÆæ¼ÐëÌ¿ÿýï$mÉ1$1cÆöíÛKàáÇõ1vP2¢ @ˆoÚÚiêr)‰´öiÆ÷`ãctÖѰ®JÐÇ¥}ÁZ ÕŠæOùä믿.eÚC z6&ÍN„G/ € Ä%qãÆ™„Jöù!.‡ƒR¦!“ @{°mÞï€S…®Œå*o®òXEXfÿý÷¦}õêÕÃêh'´sn÷r¤–ãM›ÌU—oíÚµ*Íg‘õèÑÃv´'9€€ÛTmÂ̤✻ù€  °O 8绕5kÖ”Í*г`Á‚ÀŸÔà"EŠØšVÉjc%mf޵hzäÈ‘3ÏëŒÍÜlnbÆ'´sþóÏ?d]ºtIÊ.YÂ-E¿«(zÿþýk¤è&LHÚžcx@@ŸÃFI‘>·Ë–-ó@#* @"sš8q¢,Wd¨veq‰lsóæÍÍð'OžtŠÒ7CèÙ³ç‰'RŽÒ*µmÛVe‰Rk”óS¦L‘©Zßmܸqd6'´s®Ê{¢V¬X±{î¹')¾ùóçŸzqÇwØf6E~Ò^CÀmvò{äÈ‘nëB> @% ªC¦ØrÇŽU<8 £HX³­s>~üø C¸é¦›Ì´ÿü7ÞHq8*r.'K ¹K–,™bƒ œÔ†ó+VÈZey°%ñÂ5>!þ\wìØq&Ml(Ç›Î+L]y°“6PÉÀ“ž1ÇW\q…9H¶‹@“=¶qÒc{’8B@?±&ñ£UsD,B @ˆ'ö9ÁNëÇÓèâ~,… ®S§Ž†ùã?šRdÁ²V7íÎs¥îz衇L*;"-ˆª^õرcŸþy{2 C† 1–ë‰=â!$„s®É˜dkÝš¼1ÛÈåoßzë­gâ{ùå—7oÞœì¼I §Ìøõë×Oz)©pS0 éUŽ!àEyÔ®][Ò”ÀsýúõN‰E @qC@βÁi8Z»S}é¸WB ¤k×®f¼_|ñE ®P´Û!¨4µVÈ|ðÁÁƒ0àñÇ/S¦ÌСC5ôesqРAf¤W_}µr¸ áœëKª}ûöÆ ÓN½tаaCùç×_ý˜1cT#þLj*X¥­ëÖ­³—T OŸ>Y²d>|x®\¹ìyEbH }ûå—_Úc à8;n'ÅW@@€‚K`úô馘“Rɦø”Ü¡%ŽåW]u•Éu¥M¸ilÕ-ˆªÖ•Ý^¡X€·Þzëºë®ëÖ­Û+¯¼¢bXrÎåšb,i9gΔ]·nÝóÏ??–i_Jçü«¯¾Ò ù7ÞXðÏ—æ¢ä]÷îÝ[±ë)~g(P sçΧOŸVÍîÜ~ûí*«¦ª:V".g"¬rﯽöÚråÊ)Wœ¥¬ŸébÏp XçœmçRE @ nØé{ûÌ7CKœ(Ϲ¹};wîLº PŠf×DztéÒIí×VM9\òÕ;uê”ô|@U~ÛX~ï½÷F3„ Zø ·¿&rä¸ÖªUKeÀÃíëY{­ŸwÞyF씵Úy®=ú‡Ö|†œô4,Qhºüs5Ø»wïš5kTš¯D‰rÂ#ÞÙŸ†®˜\ ÄŒ ™@(­R¥Š&‰ô¦ø}wÂfŒ„ @ÀZ‡Ô³Á®]»²gÏ®}—Ù²eó@)*Ü  •XS¦§B… zð³+ÏnèòL¦>™‹-’SVéÏWΜ9=Síª"M1h@úëS}íŒV¨uÄê2EÜ3p•\A¯PÌ6ž¹ZæË—Ï®“‡Ò‘6ð€€æõ­iµQ£FÝ}÷ÝhD @ 0oÞ<ù?2µU«Vxæ¸e©©Hï Ì;wåÊ•Ê4¦8ðÔZè¼ÖGµÛ"@‡hª²ÙÉ3WãGy$Ï\"¬=D¬4ƒ@ Ø(5·³1€ · Øgû´à¶Fä»GÀ&0WN5 B¹Ç9JÉŠÑVJ2 ÑÔƒ-¼±LœóˆÑѱ! ¤&ÏÄÌ™3÷íÛ#Ð @€€ÿç\kwmÚ´ñŸuX<75ÏU£§_¿~áu¦µ'´`~ß}÷™}âªÏ#GŽ(ÕâœG îˆ3~êÔ)•…ŒzTB€ à?ß}÷©,.wîÜþ3‹Â& Äæ&mû¿þõ¯µk׆ݟ.øðÿýö[)©X±¢#»MãÖ9W®,{/X]´(8ˆ6­¥^‹q1 @€"& úD¦/1í3ô[G¹|Ý»w—U¿ýöÛM7ݤœÜ~³0‘íQÕm•jåi~çwÌ4J”@âÖ9W†C‹æ‡~°Ç@ ¨â€ÉÓ>yòä#GŽÄÁˆ @Q0Sö3fìСC”¢èî}úô)[¶¬ìY°`ÖÏýcX‚[¢Vê6ÏáªåÞ´iSG€Ä¡s¾téÒ÷ßÿÅ_´€TÒü±ÇÓN}U&·'9€@p h~®cÇŽ²_Ó¨&Lî@°€ G(§÷êÕ«%J)¾má!G$#$¶ToÀ€¦”ÚsÏ=7}úôØÚƒvCà‰'ž˜?¾ŽË”)óÊ+¯8…%K©i¿Í¡C‡xàdŒ”J!o޼—ì!ÀôÉˆÆ ÅÒ¨`ƒò)äÊ•k÷îÝQÖTŒÆúB€ s5jÔX²d‰ÌPN8<·˜ßÇ PVðÖ­[Oš4I’+W®¬úçzt\ C!°páÂfÍš)|UµÕ\ÙÚCéb›8 kqä4ƒ@  h†¥]»vÂÁƒ§M›è±`< @Ñظq£ñ̵x†g IßöUXûàÁƒË•+' —-[vå•Wž8qÂ·ÖÆ±a?ÿüsûöígÞ­[7g=sqÃ9ãC‹s6nÍF²Åù€ @)°OöÙ ¥Vœ 6|ùò?>þüÆÔ©S¯¾újÅQ{HA³^³`Z3WȪ W¸þýû;>œsÇ‘"¸üòËsäÈ!ecÆŒQ°“GZQ@€€Ï(±çÜgwÆas´r®§>óø7jԨ뮻ÿÜaÄ©‹Ó†yæ[¶lQ“ªU«jF,sæÌ©7ð Îy„àè˜È–-[«V­dÆ®]»´õ(æö` @Þعs§É­šØåË—÷Þ4zI ^½z£GΚ5«”*-Y§NŽ;楉©K¥TÁTþºè¢‹¦L™’'O7Pàœ»A™ðˆ€¾‘&Ïæ‘bÔ@€ àZA5t,›ûㆸnEóæÍõà§Ei7n\Ë–-•!Øu­ ¬@IÐ6lhÖÌå™+Ù“{Õ qÎøƒÆÐƒO mÛ¶&O»g þ˜ @a°ô8çaP xSÅNN˜0!gΜÇìÙ³ëÔ©³víڀɧæ+<¡I“&fŸyõêÕE»hÑ¢îÙŠsî[$CÀuª¢¡ÙS©Ñ6˜ï¾ûÎu}(€ @ÀOöïß?cÆ YT¦L™jÕªùÉ4lq—@ãÆ§OŸ^¸pa©Y³füsShÍ]­‰$])ª-ßµkW“›]àô·æÞš¹A‹sžH1Æì4¹8ÇQ2&@€R 0vìØ“'Oê‚Ýé–B#NÅ)š5k.Z´¨R¥JßÞ½{U]Î$I‚¹ÛZ*¿âŠ+zõêõÇH ª¦iî#wîÜŽOCÎyp¸P­E•¾”¡8ç¸[˜@p”€ýõ·“õŽŠG˜ß ”,YrÞ¼y;v”¡rËåL*¦R•~·ÛßöMžkÖ¬ØäK­*sðᇖ+W®gÏžšÅçwž¿é/ë‚ .ˆ•É8ç±"^8IçÜIšÈ‚ øž1í¾¿E±40gΜo¿ý¶¶LkØØ¡¤îMš4¹üòËgÏžKË| [Q'Ÿ|òÉE]t÷Ýw+ ]izëX»v­J¦ÅÖ@œóØòG;œ! ï—‹/¾X²æÎ»k×.g„"€ _PѬѣGË´9rÈÝò¥{Jo¦u`}TL-t¤ò`7®_¿¾BßMÚ³Ø[顇zã7Î?ÿüÛn»mýúõF³–¸Çþæ›oæÉ“ÇC[RV…sž2ÎB pLZ8ûk8û1€  Ì™3g÷îÝj¬„ÒJ^b/š%&öíÛ+Qœö¢Ûhíùóçë¤"ºå©îß¿?°¬^½úþûï/V¬ØÃ?lVË5jMl}ûí·_}õ•V¹|çÜ'73 -ÙnãÜ¢•H@€|IÀþÖÛ__š‰Q~! J{Êâ.uРA•+W6fi/ºyò䤞 ‚½»vízõÕWW©R%è¬N:5uêÔaÆiëàÁƒv8Ú¢ ðZB÷ÏR¹µÍ°rž o!`&²ÝÖV ðH0€ T,^¼Xž¹.¶hÑÏ<HœN•€Ö[·n­*è?ýô“ÜÔ|ùò™¦ÚƒýÒK/U­ZU‹ÌO?ýô‚ ´Y2U)¾¼pøðaÕ-ºå–[ .¬ °ž¹êɽþúë¿üòËûï¿ï[Ï\PqÎ}ùÉÂ(DDÀƶÙh·ˆÄÐ € ÿ°¿òöwß¿¶b™ \xá…o½õÖ¶mÛ†Ú²eK[oÕªU/¿ür½zõäâ*^.®™ òçP4ƒðý÷ß¿òÊ+‚j¡éâ³Ï>Û³g±V9Þ”ûM ª-÷ÐCù!å[Ú kO›O|^%¬=>ïëYgéë©H‘"ŠiWÐŽâÜȯ7šqA€@"кŸ6«„õöíÛ (È(»ƒôè8bÄ…‚+Ýà™kæJ&§ïuëÖ•Ó^±bESAÝAía‰:r䈹ÉåÖK%âöîÝ›¬»*ɩػ¢ô¯¸â íþHvÕÏoqÎý|wܲ çÜ-²>{Çw|ôÑG2DQ=;vôE˜@€€cV®\)×HâT³zÆŒŽÉEþ"ð믿Ž?^µÖ´)ÝdPûëÊÿþ×òj³U«VM1ðš*Ò |ñâÅ“µqðíÉ“'•»NRŠÃWåv½TüÌéi,Uª”|òvíÚ)\°|r‹+“=∠æÁ9ƒûÈ @) ¦=E,œt€‚Õ¿]/¥USþoUJ×kÑ¢EÇŽ3Z~ûí7-\ëe•*fSùää+Ua‰%¯˜Ž‚ æÏŸ_i´Ž}Î9çØÆÉ””N9Õ5 pàÀ­Þë¥ PE…lÞ¼YyŽõïÆeI²^ö­5jÔ¨yóæJÁ âpö|@"_9Ïœ9s¡B…:ì7[¹D€|ûqù1P68}êÛ-oÞ¼új³Û‡âr° € hjÔ¨±dÉåô’ß"/(цÏxcE@Ë×úà©@º¼t¤¶všyòµÞ®çRó’C.[/‰•gžâ2xj¢$GÕàô‡P§NEÚ—-[6µ–A<¹sÄÑbsR8çIiÄÓñu×]7xð`HÁH—]vY< ±@€™À† ´>)µk×–”È({l h×÷?þ8|øpí£Ô¸ì­[·Ú¥umS ·2eÊ(r^ñózÉ-×qlw¼;8º3EEÖ®Mªs~¦¬?£¬€ŠÜ­¯ÈZL €"Ûs®È7œóйÑ€ àsr„Œ…äi÷ùŠ{óÇ®äpJ䮘s VÏœJu¤˜Mt(DWæµoß>3SȺ^rÝÍj¹þUè‡YB׊zöìÙåÞë¥xEÔËCÑKÚ Qœ|¢ Œdå<î?m‘ PEUð®»îЬ;½ àÍejû¶iÃÊcèëÏ)ÉÈ @ †4h ÜÔ2@ɱʗ/CKP Å¢-ZtçÎò®•CNÑæ0‰žuΣgø·„Ç\ÓE¿ç±  ¹LUz”æ;v¨ÂD,L@' @°?ëÊÖŽgî0\Ä…O@óDòÌÕOåÊðÌÃç—rœó”¹DvV*sY_zAÀA6ÚÍætuP8¢ @ðžÀ¨Q£LÞ,û+ï½ h„€%`2ù@Z&ÑàœGÏð¦NÚ¿ÿœâ <' ÚÃ#µvsšç& € ' à 9IYQ0H•×cgÔÂð?8çÎ{ì1‚ÛÇŠÄp¨ŽZ“&MÔcýúõK—. §+m!@ð%Öš9s¦ÌRæêjÕªùÎ> J0‹/Vr ZÆsçÎ`£wq¸8çÎÃ%¸Ýy¦H Ÿ€ 1bñ<|xô€ ø‹ÀرcUZ6ÙßwÙ‡5 F૯¾2#æéìÇ9w–çÿ¤Üî V„†C@-LžvNoÚB€ à#vª_ÈGw%M1—ª7Þ¡C‡ÆàüÐ)¥æS•RSÄ‘§b}Ë–-Su>{†xL ~ýúóçÏ—Ò5kÖ”+WÎcí¨ƒ @À¶Hj‘"E¶nÝJ‘TG¨"$bË—/¯\¹²ºkåŒ3"–CÇ3 °r~&gÎÜî G¤DAÀN®³xEºB€bL`âĉ¿ýö›Œ°aq16õ‰MÀ>X^y啉MÂùÑãœ;ÏÔJ$¸Ý¢à &¬sncábbJ!@ˆ†€õ…:uêúBÀ#FŒEpðt„gR!„µ'¥Õq²°v#‹àö¨˜Ò9jÕ«WW¶v}{nÙ²¥X±bQËC @ž8qâD<¨R,»víÊ”)“§êQX»vmùòåu®nݺfûä?¯ó.*¬œG…/Ýη§‹ˆ®03šüñ‹ç®rF8 @À%Ó¦M“g.áíÚµÃ3w 2bC'`ó´Ó:´Ð[✇Î*–·GŽnN°‘í6"Î ©È€ @À#öÜþ¦{¤5H‰ÎyJT;GX»c(S k7Ò nwŒ2‚Â' Ð# ©ÖÅÎ;óçϾz@€ ¿ÿþ{áÂ…wïÞ#Gý›-[¶ØØVüI`Ó¦M¥K—Öa5¾ûî;¨8N€•sÇ‘¦ àö pÊ+f¢ýôéÓcÆŒñJ'z @p€Àœ9sä“KP«V­ðÌŠˆèØ8ŽÎ;G'‰Þ)À9O™‹ãg nw)C$`£àì÷iˆi@€@l Ø”1ö×<¶ö =Á ˜<í‚À†s—> „µ;6°v£ƒàvÇX#(ÊW²dÉ_~ùåœsÎÑì»>‡áô¦- @1#PªT©Í›7gÉ’E¿à¹r劙(†ÀYgmÛ¶­xñâz°¬T©Ò²eË@âVÎÝ š²L‚ÛSæÂY— ¨ŽZÇŽ¥äøñã_ýµËÚ@€€3/^,Ï\²Z´hgî S¤DA@qòÌ%€eó((¦Óç<@Î^&¸ÝYžH ‘€…#²=Db4ƒ Äœ€ýÕ6…Qcn$8ò´{ð ¬Ý1È醵M·;FA!P6¸B… íÙ³G?ÅÅ)¾=ä®4„ @ 6.ºè¢Õ«W«ÞÊöíÛ (#Ð ? è²H‘"z¤T },¡âVÎ]›ªX‚ÛSEÃ×èw½}ûö¯ß”)S\Óƒ`@€œ!°råJã5hÐÏܦH‰‚€bÚå™K1íQPL¿+ÎyúŒoAp»ãH˜."ÛÓED@€€ؘvû îÛ°$ Ø<íQsõîÖîÞÃÚ>‚Û㎠Ð(œæÝµrž?þ;wj-=´~´‚ @ jÔ¨±dÉ)VN¸%JÄÀTBà/{÷îÕÉS§N•)Sfýúõæç °rî<ÓP$æÈ‘cÆŒ¡´¤ ! }æ­[·–(í<Ÿ5k–#2@€€6nÜh<óZµjá™»A™a=z´ù»ï¾Û¨Q#­“㠥ʋ ±  jç&O»ÝÌ +Ð @€@ªìº}ŒLµ) à2ƒNž!@—€òÀ)ŠX½òäÉÓ´iÓp»ÓÎ ¦ÝYž!JÃ9TTÍ”DÁlZ¾|ùš5k¢’Eg8AÀLÉ«þߨQ£œ‡ @€¢"0mÚ´HD»ví=,ó IDAT2gΕ,:C jÄ´G08ç‘P‹ ‘í@£‹{l¼œ sO’!@H—€ýE¶¿Ñév¡\"`cÚ *Ô°aC—´ öL8çg2qå ι+X)ªU«žþùê=sæÌ}ûöE*†~€ 8@à÷ß=z´eÏž½eË–HD¢ 0~üx“›<íQPŒ¤+Îy$Ô"èSªT©š5kªãwß}·qãÆ$ÐÎ0ó§N;v¬³’‘@€@XæÍ›·k×.uiÕªU¶lÙÂêKc8NàË/¿42»téâ¸p¦Aç< 8_bñÜa ˆ‹Ž@§NŒGœóô9ÕçÜ)’Èq„€’*U¡DMžÿüó©]ã¼{¶lÙ¢%>ål¯P¡BÕªUÝS„d„B@É?4]ª–çwž¢Céâe›Ï?ÿ|Ò¤IS¦L‘Cnô-ZôÖ[oUÌU·nÝj×®­IF³–®GÍ2dÏž½~ýú^Zˆ.@€@¸Œ¬3£)[¶¬–bדzæ:óÍ7kÿ¹i H¼_|Ñ6æ€ à7˜>}º¬ÒVGßzæ2_¿}r\²‡<í. W,Îy¸Äœi¯X“³ýøñããÆsF(R ›ŠÆ&§‰B˜+]MÖ:#ZÛóÎÔ¡_í1ç)…p&Î@€€(þëĉ²ÇçåÍùñõÏgÆ=K4U¤ýƒ’_¼xñzõê¹§ÉéÀ9O‘[ lÎöáÇ»¥¹™€}8°e]Bîê—†Ê,ªÈvcÒ:œ¸£pƒ 2!@À?”‡ÕI)X°`d0åÇ×?­È,!¦=2nnôÂ9wƒjH25ÑhæJ•ŠÈöÑÈevñÜ·‘íéÐÎ=ÛFYîì1€ ÿPñÑ£GeO‡â  4?¾þùhE`ɾ}û”KµN“,¡OÒè%œó(FÕÈö¨ðÑÙi6²ÎÆÚ9­Áuyùóç·:.¸à{Ì @À?ìï¬ýåõmXÂoÐüÓeÔ¨Qf'àUW]EL{Ìï Îy,oêB*TH(´éÈ‘#±4Ý8ë,ÕQ3 ÕTêoçÎAD²}ûvcvž1,3øñ …R€ÚèÓxúôiLL»îÎyìïEãÆ‰lýmÀ‚¿Ô«WÏä9·UXÿºâ£ÿµ°ß¾}ûaÆíù󥃆 Ê?¿þúëÇŒ“9sfÙŠ)€ ¿Œ9R‡új×®Ý_çó??¾¹U¡ªÇ'Óç<4`^´Â9÷‚rÚ:Ùn‰‰lOW½! ";v”.} åŸ{£4\-ʦ£òo¼Q[zuíÚ5W®\½{÷8p žy¸0i@ÞXºt©æ‘¥«iÓ¦*ùéRµðãë ̘‹RÑÜY³fÉŒòåËW«V-æö`€!€sî‹O‚¯"g»/îGÂacílôߨöLÏž=7mÚ4yòd©˜•+Wj«y† üf*ö@€ û«jVe‡…ßÀݲ4 1b„ÒªuCÒhÌ%ÏdòLŠÒ  Èö (+ƒrÂi¹2p BÒ—‚HÀÌè+[û¸qãÃæÛµè¾‚H›!@  çÜF¨”?¾½qÉ̶¹®®¾úêd—xC¬œÇþߪÉÙþ7 Ž|@@ÞxÛ¶meˆüs“ÆÓFa @ ÀÖ¬Y³bÅ  nݺòo<L>mÛ¶Í;Wã¸øâ‹+Uúÿìw¼TÅùÿ¥wé EPŠô^éEª´¶`‰&bÁòÕ¨11‰IÔÄ5v%¦Ø¥¼h"½÷.J“ŽôÞûï£ósrs¹Ü»wï9»sÎyïzvwÎÌçyÏrwŸ™gž§vð 8ç®Ì¥ )±ëX®(CG$ ¸ÙÉiÁh@*Ón¿aƒj ºƒOÀÆ´³mîÚd✻2#)s¶;vÌYèˆ*[uÔ¨QæHRTI`7 @À&O»: èsÐ…3ÈÓîÌT¤‚sžšH²žÙž,òŒ›&%>P:t½¥\ksæÌI³M‚_ܾ}»ñÀöš @€€ã¶mÛ¶hÑ"‰lРÁÕW_í¸Ú”òøòMI#×[·n7ožl©S§ŽÂÚÃaTh¬À9wh*md;9Ûš•K±qwv±?¹0fÍše,_¾Ü^s@pœ€¾I/\¸ ‘Û6çË×ñVòäh˜O#1íqÐóû–lfnü†þc!pîܹ²eËîÞ½;_¾|ÊÜ^ @Xî¢ |"pèÐ!P¶öŠ+nڴɧQbéV…açÎûì³ÏîØ±Ã´/T¨ÐÀ›6mÚ¸qã`mAÄb/m @ dTeúôé2jåÊ•µjÕ „u|ùbšâyíµ×.\¸P7*IaÕªUãè[ü#€sîÛxz¾ÿþûß|óMÝùÉ'Ÿ°šAîñ”€"Û'L˜ .—,YÒ°aCOûÎDgï¾ûîÞ½{Ó¼¡Q£F;vLó-^„ ¸@@_aJÏ®=˜k®¹fÍš5.HŠE_¾±P \›7VªTI²uÂbéÒ¥ÓzÁÔ9wkŠÙnœsålÇ9wkn"©F‘íÆ9WŽÙ$:çwß}w$ñc4 „ÀèÑ£å™Ë{^,VñåˆiʬH[ G#³èÓžóÄpŽu¥ÅVd»Rp)²]ñí ŒõNÚAÀú–)SFKå ùꫯ|.!@!'pà 7Œ;VF*–¸I“&!·óÜ& C³a¾aÃ:8W$„skR²gÏÞ¯_?i:qâĘ1c܇šè(UªT‹-d÷×_½zõêèÀb@€@–9rdòäÉê¢|ùòÊ“’¥¾¸Y#°~ýzã™k‘Ï6*ÏÆéÅ×wA€BOÀµßž¡7%`öùræÌɧÑÙ9²ÂpÎ- /L©ƒ3gÎØ?ñ.ªDS4´hÑ¢T©R²uܸq'Nœˆ†ÑX @ˆ‡€YÈ–;¤ çñÜÏ=ðˆÀÂ… 7mÚ¤Î:tèP¼xqz¥¿àœûEÖ“~‰l÷#xB@…1{õꥮŽ?>aÂOú¤@€@ø¨lÕúõëeWëÖ­‹+>±(@ˆiÐdI*ιÓóÕ¸qãJ•*I¢²píÝ»×i­ˆ‹ Ed{f!@ Nö[Ò~oÆÙ·A k”˜ÐÄ´çÎÛ$ÊZÜí;œsßgq€o¼Q=œ={Öþ¡Ïb‡Ü¸ ( ªpáº}̘1:mw?Ü@1ó›M•wp‡B<Ë0mîܹ۶m“ÔN:)R$š#.çÜõ€qÎ¥Ò¥¸®}á%+W®n¸AöŒ@—~À9÷‹¬çýÙî9R:Œ›@éÒ¥¯»î:ÝþÕW_­Y³&î~¸€ ÇŽ›8q¢l)S¦L³fÍÂaV”1í8ÉÆ9ÌÜ]sÍ5õë×—Ü è¬o`t#4¤ì¶€Ý(©¡˜@ȘÀ¸qãNž<©vŠiÏ–-[Æ7Ðþ8uꔪ¨o% êܹ³?ƒÐ«_pÎý"ëG¿<÷ƒ*}ÆGç<>nÜ@¡$`—ª9pÊù QãÇ?|ø°÷îÝ;wîÜRŽTÀ9ÒÇÀF¶Û`• ©Gk¸T¬X±aƲiñâÅ[¶l —qX@ÈÓ§O;V7+V¬mÛ¶™¸“¦ðšÀ'Ÿ|bº´»z^@>À9÷®ç]WªT©qãÆêvéÒ¥ëׯ÷¼:„@¦ØÍó#FdêFC€ÂD`Ê”)f¯²G9sæ “iØ,'NœPÕi.^¼xÇŽƒ%µ"€s°]#g{Àf.Œr­sncùÂh%6A€2 `¿í7c7ð6ü! å&Tßú(²Näc{Å9÷—¯ç½+²Ýd!²Ýs¶t˜Y5jÔ¨^½ºîš={öž={2{;í!@! pîܹQ£FÉ têÔ)aBp XÁîç×–h*Ç9ؼW¨PÁÔçX±bÅêÕ«¦¹¡#`¶Ο?o~—„Î> ‚ d@À®PwíÚ•šÒÀâm? =zÔä>(Uª¹ü$ícß8ç>Âõ©k»fׯ|ˆn!!¿g#ú2¼…€ 0°ß€ö;1LÖaK€费ΜKp¿~ýräÈ åHµ²]¸pÁ>á"¾ýöÛòåËkâjÖ¬¹jÕª@hFdˆ (m»²µ«VÇîÝ» .bK1 € p1û=¨^—_~ùÅ x‰! Úi&’qÆŒ­[·NÌ Œâ-vν噈ÞÊ–-Û²eKôÕW_­\¹2CfaŒ#GŽ|ðÁÝ»w7Õ¶Nž<ùÖ[ouèÐAñùÊ<ÿÐCÍŸ?? Ýskò ˜[E&ù‚P@H[OT¿mðÌEqÒ  zªp®7¬§F#^Â5H(ö>GßUdû¬Y³$N‘íµk×vP¥þáéÐ˰aÃô_9äR¨0›%K–hIoÛ¶mFðÖ­[õÊ›o¾ùÒK/ 4ÈA+ 9ç/¿ü²Z*®ïÖ[oåÚ@€ÂA€˜öpÌc¬9rä©S§dHÿþý³gwnÿ× ÆÏaí1‚r«Ù®]»Ê•+§ì U«V]»v­[â¾WóÎ;ïLŸ>] x0òžÿþ¡Š‹Í›7?tèÐÌ™3•@Å*á…žxâ û”‹P6¸2eÊ(¦=þü{÷îÍ—/_€Ä#€ ªZ²fÍïݱcGÉ’%³Ò÷B +¦úù矫‡¹sçêÇvVºòã^\ƒ©âœÇʹfŠžš:uªd-]º´AƒÎéû^¶÷퉗bÅŠiݤš7jÿýïßwß}f_½P¡Bß|ó ßjnÎc†ªî¹çžÁƒ«Ùˆ#‘a{@€B@à믿V Ò¦MíI„À"L(m†•.]úÌ™3:7ºiÓ&SwÙA[p 2œçb2TLC 9Û«T©bçK±ë)=s½~çwêü¹i X—çž{Î6æ"Xl~ZÝ,ý¨… ÄAÀ~ëÙïÁ8:ád€>ŠòÌÕÏ7Þè¬g.y¸Î5Îy†ˆm ¯œ9¿K0dÈG%^v™2x[m5jÔ°×öâ¶Ûn3KÎz…BÙKà.Çaò´«†‡ùnœ † d–€uΉË,:Ú{KÀÖW¶»wÞöïUo¸’Ä9Ï‘£ J”(!Hâ6nܸpáBGUf$Kù*ÙnZ)?~]FÀ}?W®\7ÜpƒÄ¸k€sÐÏíeÛu2»röß÷‚põî»ïJf¹råî¿ÿþ èEczì‘íéaâ=@2Ï>ûÌUjÞ ÛöÀ°9¡­;x“.»,â®Îyà?Ê%6Y²UGAÕÈœµGù*.Ö6iÒ¤•+Wêõ§Ÿ~ÚÄç_܆WD wïÞ*P)Á8çš5½çì IDAT¤B€@¦Øï8»$©Ûi ¯ع :ç¸i~ pÎÓĤ ( ÿ\ŠU‡lêÔ©ÎJׯøÞ½{SÊÛ¸qãÀõв|ß}÷Ý)ßâ: J•*Õ¢E ‰ÿúë¯W¯^P+ @¸'NŒ?^ïÚ¯¼KµäuøJ`Ë–- ,ÐõêÕ bÉ\ƒ4?8çib Ø‹vµÌ®Ÿ9h€À”¾N ÷}ÿÐE«V­äŸ0`ôèÑ&‘˜ƒ²‘”YvÁn,d¶ÚC€œ%0a„ãÇKž sV*ÂÂM`È!.\7Þxc-Å5HsÖ²™IMó=^ “'OjùöÈ‘#ÅŠSˆˆ;Ž®Üð%JŒ³gÏVö”çž{îìÙ³zEUTôÖ[oýÕ¯~•-[¶  Fg†6oÞ|ÕUW©Y£F/^œa{@€DàöÛoÿý÷%Xûç;wr¤†Œ@“&MÌ-eP«\¹r ¬Ã5ÈpšpÎ3DŒÚþðÃ¥uìØ±ÝºusDtÊ .Ô­¬Zµêèѣ͛7ׂ‚#:‘á-Æ/Y²D}ÊQ¯P¡‚·Ó @ Y´×§_/T'tg;$Y@7Y6lØ`ò`í…àdø!¬=CDÁhˆÈv¡¼âŠ+:tèЫW/<ó`|°âRId{\ظ €\'0mÚ4yæR©t?xæ®ÏV¨õ)¦ÝØИv;9¸…¹À9O$¨OXU¤H©9rä©S§‚jºCAç<Óˆ€ šÀˆ#ÌKö›.u žC !Bãœ'„VÁ9Òl¥£5wîÜJL¢‡6IDÓiÌ[ð•@õêÕ•P@CÌ™3g÷îݾŽEç€ ÄPºmh¬|ùò©ÐLbe\L`ݺuË–-ÓëM›65‰~.nÃ+%€sЉKCvP"ÛÓÎK¡#`¶ìï˜ÐÙ‡A€ 9óæÍ3•™®˜?þÈÙÁΰå™ìg¤!$«pγJÐû;vìX¼xqé3fŒŠpº lûöíVÆì5¡'`ãý(¨ú¹Æ@@!`¿Ñìw\D ÇLט˜vU;êß¿¿kÚÒ׃k>½‹sž!¢À4È™3§ù¶P.tålwA÷¬Y³¬ŒåË—Ûk.BO aÆ+V”™S§N=tèPèíÅ@@=sà\yàzôèzc1ÐY_ýõ—_~)yª|tå•W:«3Ma¸ibIùbŽgžy&ås®M@AVï½÷žLPùúä&oüâ‹/´À¬ªæZ)0HçÏŸ¿ÿ~ùiY´hÑ@sF|,¶lÙ¢IWd{­ZµêÖ­Ë-´ ¸I@?lþô§?I›ö³Ÿ¹)UQ ðÆoLŸ>]–>öØcÍš5 ŠÉ¸1ÎTÎÛÑ,Ú¶m«eJÁ¥syÅ L–l•¹>räÈÃ?œJ€ª2Ê3¿úê«S½ÎÓðPÇK/½$»´L3`À€ðˆE€ 6¦½OŸ>ѱK$`œ.¦× ÆÏR6m±ÆØ”f ðÀhEMR?úè£[n¹%šJÚ3/[¶ì®]»+±gÏrç„r–1 €@DÔ®]{ÕªUÙ³gסYUfŽˆÕ˜é•+WÖ©SGªZµj5sæL×ä¡'ë8sžu†nõ`Ó6ÚDŽnéCMdèŒ)ïwüøqÊûEfÚ1€@ ¨r•ûìÌ™3Q2[!@ <¬sÎóðLj-Q壵k×JxëÖ­‰ààÆ$ç<&LÁjdó´ÛЗ`éGmhØz3ÊÒ?eÊ”ÐØ…!€ Û¶m[´h‘ì­_¿>m£3ïZjØÓîàìx% çÜ+’õcËNœ8ñÀ)CJôØ@»í=X @& 8D“>Ù~£Ø¤™€qÎsäÈÁG1ÈÓ˜vœó ñmW0›ç $1bDM@shtîܹ@2gÔ¨QÊß»0€"BÀ..ãEdÆÝ4séÒ¥ëׯ—6S8ÙM‘¨Ê:œó¬3t±îBÎv§'JšòåË×¥KY¼{÷îÙ³gGÉtl… ÀØ»w¯)XUµjÕZµjÞ ,Ón¯Ö„§Gç<=:Á}¯I“&æXÔÔ©Sõ½\CPv«Án>„À(L€ (=zô¹sçd©ý.‹‚ÕØè ¡C‡JUΜ9ù(:8;JÂ9÷¦[]™Íó³gÏ>Ü-e¨‰îÝ»çÎ[FsÈ"b3¹€OÀ.+ã~.ƒlÀâÅ‹7lØ Ú·o_¢D‰ ›‚ö àœg(¸oÛÈv\[Ph… îØ±£Lزe‹Ixhs@!päȑɓ'ËØòåË+&1"Vc¦ƒìybÚœo%áœ{ËÓ¡ÞTðCç£$húôé»vírHR¢GÀn8Ø-ˆè1Àb@Ï?ÿüÔ©SÝ»woeÛ ˜z䆈€iïÓ§OˆÌ”4àœ§%4/™Ís¥È6lXhŒÂ èÙ³§*H9‘íAœ>4Cˆ&» l—˜£É«“K`áÂ…›6m’Å!+V,¹bÝo8ç~Nfÿ6²œíÉœƾ첒%K¶jÕJ$Ö¬Y³jÕ*@€' =síœK¤Žø¶nÝÚqµÈ 1bÚC<¹›†s~1“ð¼R»víš5kÊ•°úöÛoÃc–€Ýv°4É€ “&M:zô¨¬µÁ_Q±;#``såÊ¥ãŽICŽ÷pνgêT&oÄ… Ìa§´!&RtJÊØÃ9Ô¼c, €°ßVvq9 † ;Ð,X°yóf™ ˜ö¢E‹ÚÄÇBç<JnCd{€'/\ÒmªÛ/¾øbãÆá2k @ TTÛ\ÎeR¡B…LÁ‘P™‡1Á!@L{pæÊ¥8çÞpt¶—êÕ«×­[WòæÏŸ¯BVÎêDXØÍ»«±€G`ÆŒûöí“ìnݺåÉ“'pú6ô5wîÜÄ´‡cN3´çoÞ¼;wFVC€€ã´]iœsí™kçÜqµÈ 1ÓÞ¿ÿ›‰i) àœ§¤Îë*Uª4lØP¶-Z´ˆ³¾áœãàXe¶ ìïžàG) D…€ÊJoß¾]Öj»²`Á‚Q1;# K&O»bÚ{õêå˜:äøEçÜ/²Nõk"Û%É®À9%1Ñ!`ã9vIÇR@Á"`¿¡ìwV°ô£6”.Š˜öpLe¦¬À9Ï® 6¶Îù§Ÿ~TÐ õêÕ«T©’L™>}úBaF@€@¨˜˜ö9r¨Ây¨ Ø@°;jög| ä#6N8çq‚ ÖmW_}u“&M¤yÙ²eëׯ–xÔ†Œ€Ùˆ8{ö¬©R2ë0€M`åÊ•ëÖ­“ mÚ´)^¼x mA|p (¦}øðáÒOL{p'1>å8çñq Þ]¤… Þœ…T±´qƒ!5³ @ xìwSŸ>}‚§Åa!`cÚ;uêT¸pá°˜…À9ϘQ8Z(Íc¶lÙd‹ ’ ‡]X8Íš5+[¶¬dOœ8ñèÑ£Ó`@1ãœë'ÎyˆgÙ}Ó†jD’§ÝýÉòV!ι·<Ýí­B… rФoÅŠ«W¯vW(ÊÂNÀþâ9yòä¸qãÂn.öA€@`lذaùòå’Û´iÓråÊF7BÃE ežv„kn3¶çälÜ”»j°$²ÝÕ)B ¨3fÌÙ³ge-åÍ£2åNÚ©˜öÍ›7KZ‡Š-ê¤FDùKçÜ_¾öÞ¯_¿9rH‘íÎN¤$içýÙgŸIòo™_GîhCI¤ç\ûg,EjÞS‹sž HTžÙ•™vÞNÙ>|øpçÅ"€ÂF`Ê”)‡–U=zô0Á\a³{‚@@y Ö¯_/¥Ú´(Q¢D$£Ñ8ç¾`u¿SyD戜íîOV¸Ú~6ª0Üöb 8E`ĈF],vJb"B€˜öˆLt†ff»páB†hJ;w6¹I-ZÔ¸qãPÚˆQ ТE‹¹sçJêÚµk«V­͈„ 8þ¼2´ïÞ½»@{öìÉ—/_ŒÂ„ ¨Q£ÆêÕ«³gÏþí·ß–.]:ˆ& Ùìœ{‚1ÙÈi £h»YÁæy§› ¸K`öìÙòÌ¥¯K—.xæîÎSØ•­ZµJž¹¬lÕªžyØg;ûpÎ3â·•mÂD¶:4ÄfbšûpÎÝŸ#B%»(l¿‰Bi&F9N€˜vÇ'(‘òkO$mçÆÒ:ñ„ $káÂ…Mš4qN‚"C AƒJ…¢ê²[¶l)_¾|dìÆP@H&Š+ê{'wîÜÚ?/\¸p2¥0v„ Ô©SgåÊ•ú´mÛ¶²eËF˜¦_ÆÎy¤?D¶Gzú]2ÞlY(†MÌã’:´@€@ ,Y²Dž¹ ëСžy'8 &­Y³Fž¹Ä^wÝuxæ™4eâœû×ý®Ùž+W.é$²ÝýÉ ·Â¾}ûm„a¸íÅ:@H:ûCYé¤ÏE”ØR²ö·P”i`;Îy¤?E‹Õj±lÞ¼Y‘í‘fñI%P³fÍjÕªI¬Y³”/7©Z€"AÀ8çÊÝ«W¯HŒ‘N°Î9‰œœŸD‹Â9O4qׯ#²Ýµ‰¬ótîܹQ£FE†C€@b|ýõ×&?vË–-K•*•˜A©lܸqéÒ¥zQU•!Õ»< œóNúÿ˜Ü»woÙnEþÏÛ<@¢Øcg˜¨‘€"GÀ¦8±ß>‘C€Á°¿yúõëç€$$ŸÎyòç ¹ ÙÞ±cGiPdû‚ ’+†Ñ£L@kÆ*T)S¦:t(Ê(°€ü&`"œûšþÓ!`÷Æ8pž¥H½…s©éNÛXÙNZ¸´ñj¢˜_H§OŸ;vl¢Æd@ˆmH(U»ÌnÔ¨‘YŽ v€ÀöíÛÍÆXݺu«T©â€"$$ŸÎyòç é ”…Èö¤ÏDÀ.Ûä(` xN€˜vÏ‘Òa¾¡"²ºÑþþ‰£n œóMh<椌l'g{<¹Ç#-Z´0YyÆâÄ z¥@€ÀÿÀ9ÿ~ü¸üs°@€<'°{÷îÙ³g«Û5jT¯^Ýóþé±ÐçPåcÕRÂZµjÅr m¢@ç< ³œ±älϘ-BÀf͵©z2,ƒ@€@T¨`çùóçe­ýƉŠåØé‘#GšÏ!Ûæ.MKòµàœ'\P Èö:H‰R¤ÙîÂŒDVCûöí‹)"ó?ûì³3gÎD–†C€€Oìâ/yÚ}"L·± ¦=JlƒsÁIOÛdÙn‹:¤ÝŽW!à'å&ìÑ£‡F8xðàÔ©Sýо!@ rTªÓ|¹T¬XQ©Ú#g?»A@?r¦M›&-W]uUƒ Ü… 'àœ;1 .ˆPd{Μ9¥„‚j.LG”5Ø8C»¨eØ@P©NìT‡l›{H•®2K`ôèÑ&<˜öÌ¢ }{œóÐOq¬+VÌD¶oÚ´iñâűÞF;xM sçÎ P¯öX ×#Ð D”€i· ÁÙI%Àç0©øçÜééI°8ÙÎæy‚É3\JùòåëÒ¥‹^± uS¾Ë5 @ >*Ò9nÜ8Ý«²*Þ_'Ü,8vìØ„ ÔI™2eš7ožÅÞ¸=dpÎC6¡Y2ÇF¶sìŽ ²Ýщ‰˜¬Ê•+«âˆŒ^°`Á·ß~1ë1€< `œs%»íÝ»·ÝѼ&ðÌ3ÏÔªUËë^é/pÎ9m mw,‰lOm†H‡€ÙèPŠ›Î'Ƽ@HI`ݺu«V­Ò+Í›7¿âŠ+R¾Å5\ @@» ³àŽœswæÂ-%W^y¥ÉŵlÙ² 6¸%5Q"`£Y'ŠÒ´c+ oÓî Gzñ‡íþp p¯8çž<¿¥³yî7aú…@:uªV­ª–ªºoß¾Xn¡  @À°Î¹Ês®  ÝµIºœó¤O»pÎÝ›ˆ)3›ççÎ5jTÄLÇ\@ˆŸÀ¶mÛ-Z¤ûëׯõÕWÇßwBÀ´û5ð]âœ~ ý3@¹¸êÕ«§þ.\¨¯7ÿ¢g¤OÀF¶Û ôÛó. @@”¬D)Kta¿GÀGÐîÈD¸&çܵqKÉÙ®/6œ"·&&bjš4i¢$2zÒ¤I‡Ž˜õ˜ @q°™DqÎã$Èm¾  Ý7´Áîç<Øóç·zÙ>lØ0¿Ç¢\Š@¶lÙÌYÁÓ§O;öRÍx€ ` ìÝ»WÉJôôšk®¡N•ÅÂ… hwaÜÔ€sîæ¼¸¢ªÆ÷©™3gή]»\‘…Žè°ëDälÞäc1 xŒ=ZÉJt'ÛæñàãßÐîÚ0tŒs†YôÕã?ÞÆ†ù:C M-[¶,Uª”Þ?~ü‰'ÒlË€ KÀžÈ#O»eÂ… hwaœÕ€sîìÔ¸"ŒKWf"Ú:²gÏÞ«W/18vìØ„ ¢ ë!@ GŽ™}ÿþý — Š€K´›!©ð€ `|þùç§NÒµ¶Í•¸,pí.Ì‚ãpΟ 'ä§èìÙ³:¾å„ DD’@‡ .,ÓÇŒsæÌ™H2Àh@ˆ‰€]Ƶ »1ÝF#øI€€v?醤oœóL¤¯fÙî+^:‘@®\¹zôè¡Æœ:ujŒwÑ €¢FàäÉ“Ú9—Õ%J”hÕªUÔÌÇ^7 Ðîæ¼¸¦ çܵqQOÓ¦MË•+'eª2­C\.JDS4Ø »% »±€2A@?WŽ=ªzöì™#GŽLÜISøC€€v¸†°WœóNªç&é°–qŠt|‹*Óžã¥ÃØ téÒ%þüj?räHUˆýFZB€@tØ\»¤Û±ÔM´»9/ªÂ9wpR\”d¿Þìž‹*ÑvùòåëÚµ«¬Ü½{÷ìÙ³Ãn.öA€@¦ (EŽR“è¶B… uìØ1Ó÷s¼&@@»×DÃÜÎy˜g×CÛtd«dÉ’êP‡¸t”ËÞé ™"À:Q¦pÑ€@ÔÌœ9sß¾}²º{÷îyò䉚ùØëÚ]›Çõàœ;>A®ÈÓ‘-[ezâĉ®ÈBGôÜpà úž“Ý#FŒˆžõX @°!~v17ƒx~  ÝOº!ìç<„“ê“IöKnøðá> A·ÈÀå—_®šjj¶eË–Å‹gØž€ .\PRÙ›7o^s *:¶c©ƒhwpR—”Óq}Ès‡€<"ùE‡ÖQ.èÊ™3§òÃmݺuÇŽ:¼gÏý÷СCJçn§OŸV3=Î;§wµ×C{ž Ô10=Š)¢PùR¥Jé¿eË–½òÊ+ ?sgº]V¢Ú~ãÆ“B­ékÏe©hƒ DX°`ÁöíÛ5âõ×_¯ß‰:Êcýæ7¿Q†ü(HÓöM›6éWnË–-Ó|×Í–xÅW¸©-"ªpÎ#2ÑY5S>öÚµk4h ï¼bÅŠ]wÝuÛ¶mÛ¹s§–¨³Úõ÷+'|éÒ¥+T¨PµjÕjÕªUÿá¡êÖ?4áÿøŽ€Ný˜” IDATX 8P‹>Š]üãÿ@€€!@L{R> ëÖ­›?~R†v|PýTv\a*y$–J$ñOqÎÏ<#ªNÕªU«æÎ«ÈáeË–­\¹Rûä¾J—Ÿ¯?az,\¸Ð¤½ôZµjiQ Q£FZ¨S§NöìœÅ°x"zQ¢D‰Ö­[O›6M FúdÖ®];¢ 0€þ—€IG¢H=U8ÿßwx@ pÎ0I “(‡|éÒ¥S¦L™:uªV@Á~©¡å!—)SF»Üz(ÝD§+t§hÑ¢6j]ìÚôÖ¤bÚµÉù}„ûYyøG5qï0ÁðЇ×>¼Žëñí·ß¦¬_­ö’¤Ç»ï¾+1 †oÖ¬Y»víc/w]=_J!¯‡›€2 È9—Ú$Á9÷\c  |ùå—ëׯWã6mÚ(Ê/Æ»hæ!7^uÕUvHW‰!pË-·|òÉ'‰‹QÒ'€sž>ŸH¼»ÿ~HÓIr’Ã|±Íò¯¹æšúõëkãZçzT©R%Sçÿ;nžó»›\÷âÅ‹_<„}E'Õõͺæû‡¾e¿øâ ]Ê·7 äÕK¤zª#ëª_Ú£GÕJI¿OÛ9¡!ЧOŸ‡zHÑ:v®£n¡± C @ n6¦]ßqw€’Hç<‰ð“<´v­‡:dÈÙ³g[ï×j*W®œÂÈ›ÿ¨W¯^¾|ùì[¾^h¿½æ÷;ʉ'V¬X¡|ÅØÏ›7O)èÌ[öýCk’zã7öïß_§Öí\„˜€>Ÿ×^{­>úl|óÍ7•+W±±˜@±0ιRØàœÇ‚‹6€€ƒpΜ%É×Õ·×þóÅ®§òɵÿ¬pq=Ú·o¯½quÄÜ»Öä†éñðÃë¦ 6(ðÞ<öîÝ«WdŬï<òHÛ¶mo¿ýö~ýúåÏŸ?æhHŠl7égôy~üñÇi¢!@À#Z¨Õr­:Ó•€ñ¨Wº PäÖJ(îä¦/­ûï¿_ßX Pd¸õÌ•ý‰'ž{»k×®O?ýôž{îqÇ3¿˜X¥J•~ö³Ÿé`ŒÔΙ3ç¿ø…6ÚM3Y$§ýŽ;îÐyø{ï½Wyì.¾WBC@ι±E‘í¡1 C @ >6¦Ý~;Ä×wAH"œó$ÂOÐÐrYõ¥-eE§¿ù曊7ËÿÕ¯~%ý믿~á…T†1XùÕ””NÑ쪤¥¬òJÙýë_ÿZãiJe÷öÛo7lذU«V ÝW.º±f˜P(»>ÒPéýMUÛÎP€ à“§]špÎÝšÔ@™!€sžZAk«äjï¼óŽò·õíÛwÆŒF¾R²Ýu×]Ú'WQÊgŸ}V9Þ‚fVzUní÷¿ÿ½RÇé\ºöÕ•ÔÝ4ÒqzEWát­JP¹1 pÉüSZ8û›,à!€â! R/æ SݺuÉBAîÜ €sîÆû¬~ýú7Ï;”úN›«Ê×´iSÓ«¢àÌ9|sPÍ»¡è)q7n\¡B§*z‡JÜÀŒ@n°1í8çnL* ø àœÇÏÎ…;·lÙÒ¾}{e}3nI©R¥t zÑ¢E*!æ‚<5(cœºêXþW\!yGŽyàZ·n½qãFÕ")æ×˜’ jA*–ö´ Ð8zô¨²êÈœ²eË^{íµ¡± C hÀ9ð¼üñÇ Øž>}º±AÒT±\ÿUð[å¿t>¿ýöÛÅJIãÌAtU\S”Á{ï½çÿàŒà=»Ub7O¼ƒ!@ÀIãÆ3¥R• Î|§;)Q€b"€&×é{HYÍn½õÖƒJ›Âz•ÞL{æÅŠsMª³zŠ)¢rkJ!£kyøðá;î¸CNû‰'œÕŒ°4 ´hÑ¢téÒzküøñÇO³ /B€@( ØeY»PJ31 ˆœóàM´°åÈ7Òo»í¶+V´k×.x–8 XñÿJ§p£åý÷ßoÖ¬Ùúõ놄X (T¤wïÞj-Ï\þy¬·Ñ€NàÔ©ScÇŽ•ڜРµ€[ƒ|@—áœìC`ò™) »tçÏŸ_Τ‚± .03\’[¨P!­t(»©¯•Z3EY\’‰–ô³==:¼@ ¤&Ož¬Ü12NÕXræÌR+1 ˆœó M¶™+ýÛÞ½{%ºZµj .0`@ pX« ¡/^¼¸V­ZÒ¨Š©:uâºÃÓ•Zš Ú-ZT¯j E™áR¿Ís„ˆ€\‘>ø@Å2•Tfé”Ó[o½¥Ú:ߤâ=ôr^†È\L@zˆiOïA$€s˜I{ýõ×üã+‚KН¿þzýü2žd` p^¨Ö;æÍ›×µkW)•ƒ§#è/½ô’óªø\¹rõèÑC*[ šj@@øÈ'W€O¿~ýT•C§™>ÿüs%ÈX²dIÕªUï»ï>¥Ùºu«ž¾úê«:­óÚk¯…A sçΩ¹^Tà›~¥z—§€‚Hç<³ö§?ýiРA¦·rŒëg™ò™Cz T*Ä}̘1BmT?ú裿ûÝïeAtÅÙݹ†åŠœ’"'Ü$¦–ÑÚ3T̈vË_xá…_þò—-[¶4$Ξ=ûàƒþùÏŽ¬Œ.™3gšXÂnݺåÍ›7º °œóLæ_þò—§žzÊÕ/0åç`•Ó–#Gm=YŸü™gžyöÙgýŽž½" “&kÀ¨Q£´âU·ôGhYö£>ÒÇÛêùë_ÿªòÎ#FŒxâ‰'ž{î¹Y³fýë_ÿ².ŠþpíÙ³Ç6æá# ¿1Š<íá›\,‚@d àœ»>õo¼ñ†~x•ÚÑ/0ׇBßo~ó›—_~Ù˜òë_ÿšøv÷gU>‰9’ y)î F!â P¥J{—þ.©º„}ª‹;ï¼SçÏÍ+ ƒçû"%®CF@±„Æ9Ï“'vÎCfæ@‘%€sîôÔë‹GщF¢~fY/ÝiÑa÷ðÃkcÊXóØc}úé§a±,´vÙکŰäÎû‡ËËjÔ¨a¯í…ޣ׬YÓåW7ŠÔzóÍ79jže¢w °v­žÇOK'ÊçñtçiÞ¼¹zZµjÕš5k¼è’> $&‡¨vï¿ÿþ éF+b#`^‰i ­ À9wh¶^xá…ýû÷KÐm·ÝÖ¢E ‡”!åMš4¹ûî»õìðáÃ:|þÃËüß-}ûö5‚ìo8·ô¡^عsçÅÝLš4I¡=z]‘>y󿽏¯@ ДRaÞ¼y2A†U«V ´-ˆ‡ p1œó‹™$ç•Ý»w¿ñÆ;Ož`À€Ñ£GçÊ•Ë ŒD°ñPv6Ñ €€ŸpÎý¤sß§Nó}4L%ÒW€ƒÆþç?ÿyüøñäˆ`Ôt Øßmö—\ºÍyÁ# Àíß~ûí¥¾Ü|óÍ—_~¹B{Þ{ï=<óàM'Šc pàÀéÓ§«a¥J•êÕ«Ã4 08çNL˜v~üxN¤Ç2[·nU>Î'NÄÒ˜6ˆ…Îy,”|lóÅ_˜Þ6lèã0tí;kvý‡^ã$píµ×–+WN7«ÖÔ‘#Gâì…Û àý‘yã7t@ÔjQIóÇ|èСZäµ/rP° ¬vÉ5”fº`”ÙHïÚµ+'Ò3œ±Rº¨}ûöeØ’ˆ«±³ò¥åÊ•+M¿Š‘öe:õ“€5;~ŽFß™& è¥zíµ×N:õùçŸßtÓM™î‚ à%K–héá‡N%gÆ E‹½úê«S½ÎS„†€ޙī ìÔ©Shìrܳ‘þÌ3Ï(Záž{îy`t\s‚å=öØc*ךàA.ôpΓ<Å[¶l1 Læª$«aøL°³fç1“ÐÜw:v.ç\Ã(g;ιï¸À7wß}·o}Ó1œ& Óæ ¶sóæÍë´ÖЉ3é:”~ÕUW)ﯪó¨”]謌ǠgŸ}ö•W^‰çNî@ºpÎÓÅãÿ›:¬bQ¶LÿGKôÊ]ôꫯ®X±B¹ÜµÉÜ¢E Åÿ*T(Ñ:|ïÊ+¯4}Ûyôm(:Ž“@«V­”·oÏž=Ú9W~ØÅÉ‘Û $‰1íIÿ?Ãh#ýÝwß=xðàÿ¨Oë‰~x÷ïß?Õ;J´9{öì…ß?rçÎ]¯^½:´k×.e3årÖžùK/½d_Ô£|žtD'ñ¨U«ÖW_}¥•6eüޝwî3fLÏž=¥§xñâú[vï½÷V«V­víÚ:©TFö“¦¢qÓ¦M³§µÝÑŸ’R¥JiWV?lr¸øúá.ÿh!|õêÕê__Ò¡Yò=Cp‡ÀÑ£G¿üòKéч5j¸#,ÐJ´'½Ø¾}{íf§ôÛuîÑGU¢Í'Ÿ|ÒÜ%§ZæÌ©r¥ÇÓ&“vdl‡S¦L騱£yªRjP6"í«ÊÀóÏ?ÿÔSOÙõy®[·®ž4H›êöõä^ÜrË-Ÿ|ò‰4¸0ƒÉE‘üÑå2ñH"shY^5x5´-%­¿PJ‘­:¶g­S¦ŒR‘RûVÐ/ld{òÿ1£€ dD þü5ÉÜûÚd27ȵKúï:Š×žv*ÚóoÚ´©©Ì‚©tŽ7NoÉ[Nu—ÂãíaÌx å»òí-#užò-s}Ûm·™ùË_R½kpi½I+©ÞJÖS;5jS‘I–ž(KÞEû/+9Z¼ÔÀf/9 |U¤´‹Þ¹sgÛ·öÒß{ï=­ šW´^«H!ûn /B6wž ÄC€ 0:¶}ß}÷)¥KÊŸ| ýRIÕÅYëtD\1íæyË)·÷U@e)õ–ÜïT}.\X¡æE…Áëà}ªæiÊxÛÀ½_»n޲Êó_¿~½mÏ Μ'ù“`/íÁì$«ñhøòåË+ÝEªÎ”ˆëÍ7ß4‘–ú9¢ÄBZ$¢Xk4¦+!`°^–Y] ¶1W¯ß¨×_½r¥å³©ÑÜ´)Õ¶¹œj•¢TÖt©U@»Ħò¥?üðC½¥ß¥JLs±E§N²/*KTšieSuhÚk`íÚµö^{1þ|›L^'Òíë\@ÀÀ9Oò'A›ÌFjq¥¹b—d}^¯“çÆ9×j¢<[»vèõ8 êOµâôG_ƒÙyLÐÀ “IÊ £¹Ê§º{÷n•ÌUÖƒLv@s@H4SDMžOïÞ½=6ã}O@!âŠs”O®àS-,p`Ž®ï}#;U@»yñ믿օ |衇ҷ®bÅŠé7Hç]%~VÚ¼Áƒ먹¶ÓMKó2»x+‚pΓ<é6˜Î±DÁ9·¹²õ‡IžíÕW_ä ÈÚðöô‘¾½²ÖwûN oß¾¦Ø‰~íáœûŽ› d€S©Ô‹úP/VÀ³Æ2swk5DÌåË-·ë™ë™֛7oþÅ/~aä\Ю×U W5wt¡Œëªvæ‡piP)µ>ø@›*Ÿ¦C×\s %xý@Ž>qΓ<¶.ˆö“y›d5þo¿_•#UÜ‘ÿƒ{?‚‰P¿QXXñ_b{T$žVýŸ&çüå—_N3-±Š €.IÀl›ëí>}ú\²oxG@ë:u’Cî~àzìFÿìg?3ÇÓ hW?Z2½™’«±÷l[¦ósB ’µ4ðÊ+¯¨þ¹vïU]ØÞÅ.EçüRdôº-÷½lÙ² ™Ôaì¹ú*Uª(E\Rµx0¸5;tJþP^•$;vì¶mÛ”²õÚk¯õgz… Xçœçмt!\¿”qÿüç?'MšdÞM3 ]o•-[Ö4Pru6·…Ó.Õçů_Ê9—g~ÓM7éc¬tK*Õfº¸^@J”RKI# ×Ú97éÓfÏž„á>¤ŽÖ›1ñ|hfM'çÃaNÂ?‰P‘ífHû›/Ñ €b °cÇŽyóæ©¡¾^í¸î£I¬´Býì³Ï*ý¸‚®U@GÁ›=R~)ƒål?öØcæÝ4ÚÍ[ŠâÔ¦º¹5jÔ¥z3¯ëc©üÍ©Ú\Ê90`€ù±ñç?ÿÏ<4ž¦Cç<8‰x+gΜ­ZµÒHÚÍ3)1jòư‡´µ‡™<ÞŒ¬P¨o¾ùF}]wÝu!ˆðŠÛ½ôìÙSÿâ¤Ñ>w[,ê D—€*k˜\Yl›ûñ!жr†ÿêW¿²ný%¹}Þ{ï½&)º|oK»Ø…Vù4Ó@'ÀT•[S®âKÉ>yò¤bþ÷íÛw©)_WZ¥O?ýT¯+VLK)ßâéÀ9OŸO"Þµnª‚^1^RÇ0eQ®S@IâÁàŸþ¹éÅΠÒ…ŸŠ/nRÁiUEÛ~E߀ ?ß„s?ÄßùñÇ3ÆP@{šYÖüñ;wªÍwÜaZjÓ套^J›–Šî¿ÿ~¥Ç³ €•;É´T†cebOu×ĉÍ+jfvR60uÝR¾Â5,œs‹"iÚÍ3còÉ'I‘•>mÚ´iZ¼T¡iûG-!#û2ˆ/;ƒ¾ C§ž ²ÝSœt@À{˜>}ºú­T©Rг…{O‡3" ìë¶(Ú¥Úµg>eÊm~Ï=÷ذsåoû¿ÿû?enO9ˆÎ¢ßyçòöŸyæûzáÂ…íµ=³i_Ù°aƒ¹–¥¹±¯ëbÆŒŠ–5¯è£žò-®! 8çÉÿ(œÆ¤[´hѺuë’/(^6dH+‘&R(eOª/­?mzåé§ŸnÖ¬YÊ·‚x­3ZsæÌ‘re ¨S§NMˆ¦fËÍžý»¿{D¶Gó€Õ€€ûF­dZÒɶ¹û“å ÂAƒíÝ»WœP'Ý IDAT”Ý-Í€v½õÇ?þQ ƒ”)V×:™¨€vkˆê¹hIè‘Gùè£T™ü‰'žPÝ_íÇ(šÃn›«±VŽì>“J©›ÛuC£ë:墒vÞÿ}ý6ÖvúÃ?üàƒÖ¬YÓ´:t¨’ÉO:uË–-æþ ïŽ_òH:ÿøÇ¦˜ç[o½õ·¿ý-ézâ åIý1R´ðáÇ۵k÷ä“Oª–£þxiAqÁ‚:Ú¤B­;êÄN|ý;u×Ûo¿mŽÃi˜ô (õKóæÍµ°²jÕªµk×Ú“féßÅ»€ 0Ä´' uø’{0ª(£_׺uëT#ʱ¿êª«RÞ®_°ýúõÓ¦wª–æ©Ü~»Ä¯„Z 8uê”m©½]»vµ½)÷Þ|`ÞU&y³4 ŸýºK±¥ö®d]82ƒÉ2ß©qÙ9·ÿj’y!OOÿ*<£”Z~ÓÒ]2Õdalùä?ýþ±ÿþ5kÖÈq-Y²¤¶ÓMàP:vëV-@˜…XýÉŽýkÀ-"¬Fq’>ú¨(²ý©§žŠ0 L‡ à%[UZlÉÒÞ£=.çœJ9I@ýòŒ[Z¯ïr•ï)‡\eüôH§ò¹6½õ[WYßål«p-ÉfhuIf¹è:.ŸÿÊ+¯´ÂÄ·zõje­R¥Š6±ìë\@@²i©.PüŒþhͯD‰ZwLõ/Ü…h0´m®@ýõ×wÀ²eËR+QP4nÜØ›©¶_šI\ƒb:!„ŒÀ-·Übò­Nž<™TA™\;kú›jó9(&D\'3è΀„p®Ì…òŠÝtÓMR£÷¿þõ¯®ÈBÇE”)ĬËêàžùEx‚ñ9Ûƒ1O¨„"F@QÁ¦L©ö$MåˈÀ\@ êpÎú¨BƒŽ¬HÐ /¼ ¥G‡”!åÊêñÜsÏ陸÷»ßýð2ÿ›˜œí›9äB¡& Ýr唕‰ªQzquèP›Žq€¾#€sîÐç@Y%LaF¶R¡‡”!åªqìØ1=»ï¾ût ᇗùÀT«V­V­Z­ü¨Y9Ÿ0³‘ @Àmäiw{~PøNçÜwÄ™@…M‚±±cÇ*?\¦î¥±ß>þøcó»AYî~ÿûßû=ýûJÀD¶+˃²³ú:C€@,Î;§ çj©´;×_},·Ð€@Èàœ»5¡Êj®ÚF“6i•­Ê-}V£€öxÀxýõ×Uô2Â0Â`º=vNd{¦ à˜9s¦ÒîÈŽnݺ™jjÁ· dŽÎyæx% µÎYÝ~ûíHÇ®ú÷ï¯ä( ”!Ò'pæÌ™o¼ñÀj¦¼}š—ôÛó®ûTqTY÷¥sÆŒ¦0žûšQ@ Ĉiñäb #œóA%´Ù«¯¾ZµjU ¹xñbŸ'ý%SYlNÖ›*¢Bô—hÅË#`6ÏÏž=k)¦¹€BD@•}Í!£@á%`œó9r(óNx­Ä2@À9ÏPrßþíoû“ŸüDNŸ>ý£ýH¾brõDjtå ëÕ«—jÎËj-Ž<÷Üs‘2?"ÆÚÈv»iÃ1€€;V®\¹nÝ:éiÓ¦MñâÅ݆@ &€sž`à™îÿø‡ò„ë6y‰7Üp5™3M0®>ÿüó®]»?~\wksU5çµËWOÜä4–-[–*UJ™b¦Ûi¹ˆƒ FvyTûa´› ÄJçøÀ|])ø¶_¿~ÿú׿’%&"ã~øá‡½{÷>qâ„ìÕ‚È'Ÿ|’3gΈØ53õïKs-«å™?>jæc/ ç\‹àæ² ’Ð@ )pΓ‚=sƒæÊ•kÈ!·Ýv›nÓùg|þå/©ƒè™ë…Ö±Ð9ÿ¨°¹šß|óÍúÅ;wîØn¥U ÙÈiC4 6lX¾|¹¬¹öÚkË•+³°€@<pÎã¡–ø{”"å?ÿùÏÃ?l†þãÿ(âÈ‘#‰Wâ;¦ôo¿ûÝïŒ÷ÝwŸ¶Ðµ2b“1MÚµkgÊã)'œ’;À€I€˜öDÒf,@Àq8çŽOÐå)Üëå—_~õÕWå¨ëÕ#F¨¬×—_~ùß\eÀ×_­ÂZŠPP uVmyNÓEºäÖ`ÐúK=¤õСCä\ Æœ¡뜛ò!² S dš¾G¦‘%÷†AƒiÏlô­]»V1`o¾ùfr%…`teÝ“g.ÿ\¶.\XY÷}ôÑØ… 1°‘íÇñšA€@Ö |ûí·óçÏW?uëÖ­R¥JÖ;¤@&€s¼éëÒ¥ËÒ¥K6l(éJZvÿý÷wëÖmÇŽÁ³ÄÅ»wïVIÕŸýìgŠi—ý8X¼x±ÙGu@D S§N Ô`£F2eí40Ã@ˆ6­†›:äiöë!ÿOç<…«®ºjΜ9>ø ©ï¥*PµjÕÒö/Yâ25úÓŸjÖ¬9fÌs×½÷Þ«õ{Vî3Å0óæÍÛ½{wÙ²oß¾éÓ§‡Ã(¬€ à>ÓŽsîþd¡Hœó@öe¹¯¼òŠÊq—)SF8p@Û¿mÚ´Y¹r¥/ã…«SE°×©Sç©§ž’3&ËTéZ.ºäË—/\†bM¬ld»ý¥ë´ƒ ¸ì߿ƌºUËâúRŽ«n‚ *8çÁžN…¸Ë¿óÎ;³fͪ_¿¾Ý÷îÝlÃ|S¯Ÿ=ô~ØUŒÒ¥Kk³TõÌ}“Ž@@gC´à%¡JµHJ& ‰€@ð Œ=úìÙ³²ƒmóàO&@ÞÀ9÷†c{)V¬Ø¿þõ/e™6ñØ:1«`]?÷ÜsGM¢0׆>~ü¸âØEFïSž+ÞµkW‡fΜéš`ô$’@´Ô¥•¾aîܹ‰š± D“€ÍÁ‰sÍVCÀ9¿˜I _‘{¹jÕª^x¡P¡B2@E¡ž~úéJ•*©$.ºÜò¿ÿý8vÅÿ‹<1-^L™2¥lÙ²z*¬}ûö¢Ç–i ?ý‰¶¿íïE:¦@HM@?N&Mš¤WË•+×´iÓÔoó€@$ àœ‡gÚsçÎýÄO¨¾ÚÀsæÌ)ÃöìÙóóŸÿ¼bÅŠÏ<óŒ9\kc³DAìøÃDà‘GѹnR•ø»ï¾{Íš5¿üå/åñÅ;vÔëÚKÿÅ/~Ñ«W/ã½ÇÖ=­BE@YúUó\&qìÄCîPmsex‘NÕ—19YÝ׌B@‰!Íq7,1"8ŠâÀTöé§ŸjÏüâóç¥J•Ò0N—kªcêÊŸ\DR«eUŸVLþŒ3LÞõ”’ä„+4îæ›oîܹ³'j•ìÆo\¸p¡EÙõÞyç̺ú)rÛ·oWAýaTð…–x‚"€‚B@uLO®oí?þ8(²Ñ™ýLúä“OÔ`ãÆ1†+¦Óo%ž3˜xæ—ñ»‚[<"H@Yâ´ó¬‡’²(–[ÁáZÆÞºu«A±{÷nuë¡§òuk×®­xx=êÔ©£sìeÊ”ñ›ØÎ;UíL{øŠ*×C[å¦àJªqˆ®òWz(ÉvžT×^{íüùó•ð_¡Ê­è¾fBbÚ4YH…Lç<ÁÀN>­v›õÐ m`›û¬Â"RÝýÌ3ÏøZU'Õp<…@8ÖŽyÄŠ$Hâ~óÍ7¿óÎ;:KŸ) é/¾øBYgÕ1á—>Ð¥K@ r”úšk®‘ÙÊÖ® ¤ÈÙ ƒ¸þÙgŸ)p}Ú´if{üRfÐ~)2¼ô °sž>Þ…À% ˜÷Aƒ™Ÿ|ò‰Mñ}É{x#8¡§)–ÞéÓ§ïß¿?8ÂQ @ÀEÄ´»8+1hRàú‚ ž~úi¸®“}ãÇOß3' =®4@ÚpÎÓæÂ«ˆ…€BÜ_}õÕáÇ+ó¼Ú¯_¿^ÅØô˽´qŸÀ~ô#‰TÑŠñº?Y(„'€sîø¥’§Àuê2ëÍš5{î¹ç.\Ou‹}J@»EÁ2K€°öÌ£=Ò  Âï7Ýt“r¢˜÷äÔ½ûî»ÆcO£5/„€ö ô‹Db»wï®@¾€¨F& çlݺUS%KÇ…lÅçT"è²Ë4SŠZ%pýR´h¿^‡@,Ø9…m «®ºjöìÙ>ú¨i§ýýþ°¾z7ó¶«š6mZ¾|y©›}ZÙÚ7oÞìM§ôâ?L·Ðîÿ„0BT°s•™ÆÎ¤¸âŠ+&Nœ¨=ó9rHÀ´iÓâ®õ¤ˆaÐøhIÅ$ùÓ e†‹¯î‚ MªC)Ï\¶›(¤hB¢Õ±·ÐÄùE³³p΄…„€â¢Ÿ~úiB7E¹´Ý­[·'Ÿ|òìÙ³!±0ìfèBÏž=e¥öTS-ìæb / Óî%Íö¥Z3ª;Ó¢E‹ Ç$ =CD4€@ìk-!%û÷ï¿óÎ;UkÍôÒ¬Y³?þXÒ³Ô)7'„€v~zôè¡¡~ò“ŸüóŸÿLȘ @ ðNœ8Q¢D åìP–;vhµ:ð&EÃMÖí·ß®õhMŸÒåèÌ¥ì& ýRdxñà¯d|ܸ ™& ÐèÑ£G¿ôÒK ÓÍóçϯ_¿>Õ¹2Í17\ýõ… ÒÈÊ9LÈC2f€1!@Ð1.Sç¢wïÞxæA™Bí"Ô­[×DŠÉ-W¾•K)' ýRdxqÀ97B <òÈܹs+W®¬›:Ô¿ÿ{ï½W{ ñôÅ=‰"'Ožn¸A£égŠN($jXÆ lÄ´kþNž<9hÐ ä2EÎuOm_{íµKen' =Xó‹Ú@À9Ä4!2T5j´lÙ²[o½ÕXõöÛo7mÚô«¯¾ •‘¡3¦o߾ƦáLJÎ8 ‚ à=3gÎèLú-R¤ˆê‰z?=zJ`åÊ•Mš4±ΕÀoùòåmÛ¶Õ o¼ñ†âÛS¦€ö'žx"Õ‹<…²Hç<‹¹ñPŒ´jªéôrt¿¾õ%7xðàxúâž„èÚµk¾|ù4Ôˆ#¨WŸä ›ÀÔ©S<(y”+W®`võòÉå™ë׈ Õ—Ý[o½¥¨S©D¯\œ¹€ö°"°/ipΓ†ž! ìb‹/ÖÉ.¡Pdû=÷ÜsÓM7)Ö2ÈŸ?¿üs Ûµkל9sTˆ$@N ¦Ý©é¸”E°+Ž]ÑìŠiW|]²dÉÀSµ¿ñÆS·ОŠO!àœs¯HÒâ!P½zõ Üÿýææ!C†4hÐ`áÂ…ñôÅ=> ²ÝgÀt„‡€"Œ”ASöhe³K—.á1,\–(ë›vL™lÙ²=üðÃúMR£F4­´Áí´§É‡!à œsO0Ò â'7o^…“i‡¡hÑ¢êeãÆ-[¶üóŸÿ¬£ñwÊ>Pd¦É´¯Ébv|L—€@x(ÂHqF²Gž¹9ÛBa‰2ü¿öÎ:Њªëÿ/t·4Ò ]‚¤ )*%R" ((J(! %   *]‚´ €JIH Òˆ€t§Àïû²ϼ÷¹Å¹÷ž˜™ó™?.söìXë³gfÍ^{-íæ™g”5M )×ÝâÅ‹GŽ©¨égœÛqhˆåð Œs¯`¤Ä”€"¯ìر£B… êH·Ìž={êÆ<ÙÄ´ëðÚ_½zuêÔ©uêÔ9~ü¸®Ë™M̪U«–5kV½ïÒ¥‹2½…×.¨Ë’%KV½zu!øë¯¿¶lÙÔ,P€@¤ðiMn¾(W®ÜСCÍ‹f=oìܹÓlÝ Wl«PÎíË—//X° U  à]±Xÿñ.Pzƒ@L(‡¶öq}òÉ'&äXúôé'Ož¬Û1é3d[=èÕ¸’«ë¯Ù]¶oß¾k×®)í‰'BÖŒ7®R²kZÈBÎïmÛ¶â ‡Áƒ€Â%-[6½üÕ*ë™3g’'Onà)´ÕÍw„ ;w¾~ýºøk‚ ¤$¯òižé@SØ™@Yv–Ù TbÇŽ­|3•*UZ±b…îåºw*¨û7”Ë$Nœ81G1iÒ¤eË–©s䦷L™2ÉÚ”#½¢Ó)£›ÞÖ™µt½øñǵWÐ,æÇ|hwô Ï‚áÇ ÎéÓ§å_à¥Ð€€w (Öé°aÃÔ§^.›šÞíßq½Ùäæ«àù­Zµ8p ôÄPQo–.]*Ç=,sÇ}£ØÅX9wñ䢚ƒ (zjëÖ­µ¾mtÙh§Å!`Oì9·ç¼ U°H“&¢§Ê±ÜD SüvEqŸ>}ºW¸äÎÛêGC„´ÌU®—Ún*hõ~À€VeND€˜í| DNÀl8—ÃWƒ "¯TWuó½wïžüdå‚g,s½”Ÿ3gθqã°Ìƒê뇲N!€qî”™BΠ# 73mÛ°aCžs$‡@ñâÅ·mÛ¦Mbæš|ÎU²}ûöpªz¯HƧ<ÛMŠLn6§y¯{g÷”!C³_  §çle€€· I‰E¦ IDATXqÚ-?#oàÚþ¼~ó9s¦¶_)­)ÎkÿþýW¯^%K×D18ŸÆ¹óç ÜN I’$²É•ùL;À¥ëŸþ)GtmóiªËûNïÚ=êvÆQÓÏzâdñÑð–Ê0¢Ž *dòŒx¡Ó ë"Ú7ß… )RdÕªU¦åÚ^®MæÚjdüPŽ'€qîø)Dà$.]:¹µúé§V"ô'Ÿ|rÚ´iÞ¢a<âÔ[£F¼Õ§›ú‘«¿öH#¥ ?qâ„›TC@Ñ#0þ|©ŸöèT«hÜ|oÞ¼Ù©S'¥”?þ¼zÐV…dW`v…g¶4„EãöÊŠ+vïÞ­ò>}ú$L˜0lJDÀzú´žGÁ@ h \¸paíÚµR_ŽEò¯Z*î•›ï¨Q£d™ïÙ³Gƒ&J”hܸqº¥L™ÒC¨ØÆ¹ '‘ 5J„>a„éÓ§+.«ZÊ)N‘Z‡jÜ #ïK ãçÎ YG‰p:tè íioÛ¶mÈKœ‡$P @üùó«Dûúþù矗8‡ l´çùßÿ•Öø´{2õ1¼ù*ũҩvéÒåöíÛNûÚôš¾]»vž M@ÀÎ0Îí<;È(hÖ¬™2{•-[Vm©µGŠgÅ}¨#Õ¬_¿þwß}§½j:tR±bEÙçòד–‚ÃGÔr0‹ç÷ïߟ7o@ 3kƒƹ'_ƒ˜Ü|—/_.߄ŋk mpëÚµë¦M›ˆÞê vê@Àþby²¶f50´pѯ_¿AƒÉbTIÚ´iµ¨^§N|d„§I“Æ”hÕWÁ] `V<ÔJ«Á/½ô’½šlê!rŠ€Þ†h «W¯®½¡®ò€@P¬Ýnnݺ¥H%Š7Îí#ÜyùÍ÷Î;½zõ>|¸yzW¢ÓI“&Õ¬Y3Üá(„œHã܉³†ÌxŸ~úIKßÿý·©×¹sgy¹'HÀ| ù| `ãÚ±¦ÍoÚ´¦§«råÊ)ü#zçrÚ]©$v Š+ÏöT©R…¸Â) `!0kÖ¬&MšHÛ7ÞxC¡ƒEí(êÛïŸþ)¹mÛ¶™aŸ}öÙ‰'rËŽâ$Pv'€[»Ýgù  •+Wþý÷ߟ{î9ÓVJ¥K—Þ»woD]eÈ¡ZµjJÄÂm>"D•Ïvù,X° ¢:”Cp7+.&>íQšhÏo¾Šâ®ø¯Æ2׫ö‘#GÊ­[v”hSŽ €qîˆiBHD™@êÔ©µúË/¿|ì±ÇÔX¹UJ–,9vìØ(wDƒH ¼øâ‹æºõliu.Bpy³/Y²DZiÃT¥J•ܦ^ õ¹téRãÆ_}õÕëׯKm=Óó7ß|“½žƇ€O`œû+BÀ&:vì¸eË–Â… Kž›7oêcÆ /^¼hñ\ †6<þøãRD{ί\¹âP€@”è×O»¢ÔDáEãĉ¥¶TŽœÀúõë‹-:{ölSM¹T•]%‘·â* à\çÎ;$‡€G ,¨åÚhjÏŸ?_ñØ=jI%hí¸q*NÏ¢E‹®Ò-pÊÜ»wïý÷߯R¥ÊñãÇ%…bšÈNîoÆ.pr12 à[ç¾åKï°„ jÛ¹LG¤]áß,©XE·PDûÄzµžP£Ý !8‹€"n˜÷’É’%SÞ g ïgi­(­7ò›ïÑ£GµAàã?–‰®Ê2ѵ7ÍŠ#ãg±ð'ŒsÒf,’@ݺuuwõð´zõê@Ê䊱+T¨ |6ReéÒ¥7nÜp…N(@À#JráÂUUÎÎøñã{Ô&X+ÉGÝR]A[­óP'3fÌxòÉ'ýõW•+ÈÀW®\©u¡ªñp%8|ð+C)@ ,C‡%NœXÏòÁ6WùåmJ×U¢D‰R¦L¶ %$ Ïvýí·ß´‚¤´ç xd*@paÆé×Oºôë×_¿ˆætÇŽsçÎ0`€Ùœ¯j7nÔKË—/‡¼ùêjûöíåÍ~ûömÕQªNEÚkÚ´)±ß"K9ÜG€<çî›S4‚@„”‹åܹsº|âÄ ½›WÎUSU/é?üðCÅò‰°%"% e5j¨Šž¢6Òº\„ à<Њî©S§´úìÙ³zùëż­†uó Ûq‰%ŒG›^”¿ôÒK4uZ´hñÅ_$Mš4lJ À8wñä¢"# 7ô;wž8q¢©”3gÎéÓ§—)S&²6\‹€€ÖÌ•®V/;ô ¥'T%¡ "Å€ÜC@¾WO=õ”ôÑvh…+sbþÕäþýûC‡íÛ·ïÝ»w5²vï3F†º¥`4@ÀØsn‹i@øŸ@’$I&L˜0sæÌäÉ“kôÇëK{Ûô”àaœ>¢¶6hÐ@Z\½zuùòåNWù!xB@®Ú¦šIZáIê„"pòäI9^½ûî»Æ2/[¶¬|à±ÌCQâ#‚‡ÆyðÌ5šB Mš4QX…4Ó5-ÿöîÝ»Zµjrz§*E‘°b¶ÿý÷‘Vä" —0«åñâÅ«W¯žKTò¯ ,(R¤ˆ‰Ì;vì>}ú((LŽ9ü+£A6"€qn£É@„@¶lÙÖ®]«X>qâÄ‘ ½[´hQ£:Ú4h|”UÈ,€DµêCpmÛ¶9rD+ÑWŠ)$¹D½yóf§N´ÀyüñÇ׬Y£ÜiòòƒxÈŠÆy È3.lD@f¹7È,Ïš5«ÄRYù(vèÐÄ`žO’"Þ+Yê+{- ê<çFM@À¡,ŸvËoÈ¡Šø_ì]»v•*UJËÍÐ(6%6÷¿$ŒØÆ¹Ýfy 0Ús®çƒÆ ÆW²dÉHr±LP»üâ‹/ÑæÌ™cW‘ €€wã\ÎØ&â†w: ‚^F]ºté={öHWåQÓ­V›¡He3ŠðˆÑÚ=ÂD%ñãÇwéÒåúõëÒZǬäY}äw@nŠiÓ¦7ýUn!³Mà‘­¨@ÀqöíÛ—?~‰­õ^mŒrœüX¹<^yå•~øÁŒ®$¦J½™/_¾€à€€= °rnÏyA*’€ž´™°xñââöíÛo½õV:uΜ9H™œ0¶2ýÖ®][’ê lݺuN!D‡€åDœvñ­X±Bñ\Œe®—Ý]»vÝ´i–¹‡ô¨à!€q|¸"•ĸo:€ÜF·v·Í(ú@À»ô²¿U«Væ‘B†ºVÑ Ä#ED¯]»&Ÿö[·ne̘ñï¿ÿf/@D (‡œKàèÑ£&Ý—â’lÙ²Å¹ŠøAò4kÖlëÖ­f¬ZµjMš4)]ºt~š! '`å܉³†Ìð5j(&œ‰CþàÁƒ#F”)SF» ý'£FJ’$‰–G$²^güú믎’a!xDÀZ6·|…8ê]ºtI #Úd˜-[69‡Òh  Ó§OgΜùþýû ܽ{w°¨=å6Õ¼ysë÷¿]»v#GŽTÖ´¨ôA]@ H °r¤ÚˆÂ… ÿöÛo:u2mµx¢Ø³$Ñ E2EŠÕ«WWá±cÇ„+ÔU>Bp4ùóçË2— ,›‡G‘ùøã•^ÎXæÊ^®ær4Ã2ËŠ@ \çáb¡Ÿ€<Û¿øâ‹ ¤I“F5Nœ8QµjÕÞ½{ÿûï¿á7ÊR˳]eA ¥!×°6ìX?t®U5ŠŠýõ×_UªTyÿý÷ïÝ»§¦2ѱJQ¤Hu;ÜÚƒý€þˆ“'O¶lÙrÕªU¦¹¢ÄMŸ>=gΜÑëÍe­Î;—!C=ŸåÎ[¡z]¦ê@AKàâŋڶ£·±úµ?tèPÐr«¸\É^}õUñÑ¥8qâôë×O¯­cÇf ,,*J Èð«®AÈ”)“²¬ <8^¼xª³iÓ¦'Ÿ|rêÔ©Õªr¹T®\Y*L÷I’$™0aÂÌ™3“'O.u>\±bŘˆ¾A µç¼B… ºðÇÃ#œAp%K–È2—È 6 rËüüùóõë××[ic™+VlÛ¶mXæŽú:#,lJãܦƒXp¹óiµ±Hµ)±OŸ> ä®ÕÇ)â-ñl÷Iúì@Ÿv3 kÖ¬)R¤È¢E‹ôQ/)ºvíºqãÆ'žxÂs„ €€Ó àÖîôD~Ø‹€B”+ËkÿþýM.eyýæ›o‚3tÒêdË–íÁƒÊ¯]ˆöš'¤ Z3—O»<ÛS§NýÏ?ÿ( yTZ»¤®Þ;+ û AƒŒ_˜×k?׳Ï>ëõP°VÎm0 ˆÐÛ|°víZÙ¥RKÑkµ€Ü¾}û7n¸HKTyüñÇK—.­ªr( çGȨØ•ÀòåËe™Kºçž{.8-ó£G*uùÀe^£F ý¶c™Ûõ ‹\p*Œs§ÎrCÀÎäÜ®µb9º!¿þúë%Jáê1žívþ–" à9 ÷iŸ5k–Ò…nذAÄ”@tÈ!Ë–-SlÏR€€'pk÷„u hP ¸.]º˜õ–øñãËð­·Þ žHBŠ—+W.±ÓºRÁG"Í ”€Ü¹Ó§OáÂ…dÉ’={V?æǯƒËíKw±o¿ýÖŒªŸô3f”*UʯB0 4X9š©FQ‚€¢×*†­–Í5ø;wÞ~ûm9j¿b d À˜Ê*§(¾xóæÍÇ€ @ ÆM–¹º©[·nPYær\×ý˲̛7o¾}ûv,ó¡èˆÆy„h¸x…@ž}ú±Ç“O{âĉ}5’múUóW^yeáÂ…F¢âŋϜ9S/šm# ‚@®%Àʹk§Å `7Õ«Wß¹sg½zõŒ`Ÿ}ö™%þøã»Éé]yòæÍ[°`Aõ¹gÏž/¿üR^ýŠ!Ô¶mÛ¥K—Ê2÷îXô@Àë~ýõWYæê¶V­ZÁ`™+Ûˆò_Ëܤ1—ó–¹×¿Wt„Kã<\,B>!&M=ñ|ñÅ &Ôf;ߨ±c}2˜=:Õ:yÕªUµkñêÕ«¯¿þ:6¹=¦) O Oû½{÷”Æ\¿Øÿý·è(¯ûâÅ‹‡TÛì=ýZPð ÜÚ}Õ^!H ìÞ½»Y³fúkj)q®"î¤J•*ÒFNºÊw=Ñqk— €È‘#‡R|+Ø™3gR¤Hpy|$À_ý¥xof󑆨V­Ú”)S2fÌè£áè€@¸X9 …€€o *ThË–-o¼ñ†F{°µïZ};ªï{¿té’b¼á»î{ÒŒøƒ€ÒmÈ2×H2V]l™/X°@iÌe7nÜ._¾ËÜß0Æ€þ›Æùóà à/òl5jÔ¢E‹äë®1åF¨Mé½zõRBÝGŠpûömEA¿yóæ#kú¹‚V–ôÆßu?cg8@ÀGæÌ™czvkœvÝM:wî,ï-¹;IÓìÙ³¯[·î½÷Þ‹›'d}§èˆŒ?=‘Ñá àkÊš«(q5jÔÐ@Š üÉ'ŸT¨PáСC‘ûá‡jdïÞ½#¯æÿ«O<ñDÿþýý?.#Bð³á\–jƒ |Ñ`ûT6 Å%UÊ4#F£FvìØQ®\¹ÀJÅè€@0À8æÙGwØ‚€\•ü|èС&èÎæÍ›‹+6yò䈄ûí·ß† ¢«Š÷®0ÂU Tù[o½U¾|ù@θ€¼E@Ù4L–oe‚L—.·ºµI?Ê[®PŠú!y”%¾š5kVòäÉm"b@ÁIã<8ç­!`/JWÓ­[7YÚZy–d lÞªU+Åæ¹råJ(AïܹӺukÅÔU¹VÚÛ´ic7çv-1M˜0Az¡$ç# g°|ÚµÈY’G.­n1-Z´Ð­äúõ목l—ŠÒ¾}ûÈ[q€€`œû2C@Ð"†‚½òÊ+¦öôéÓ¡G fC6þàƒ”0Ü*ùóÏ?ûôéc}´É Îí6™Ä€bBÀJ¢Ö°aØôc«¶ºË/^|êÔ©FªvíÚÉ2—}n+!Z¤R Ú©GqØ—€| ;tè ÈçQs•xVâ´"-‡ö²eËšesKz•+Ä®Ý<ɵª_±bEO¼îI¥fM%'€€}9r$gΜ’§T©RÚmdÁb"ÉÈ‘#{öì),u"öqãÆ5nÜ8&Ò€€w °rî]žôx€ž–d²j—£úRðö¾}ûV©REQâ,‡öcàܒ瀼BÀZ6w‡OûùóçëÕ«×µkWc™+Üöí۱̽òU¡@À‹0ν“® ¯Èš5ëO?ý$'ö8qâ¨Så¶Ñöòí!G¹=$ Î!Äœ€eœ» ‰š¼«´Iê‡~…8éÞ½»JräÈsJô@À»pk÷.Ozƒ¼Là—_~Qd¸¤I“îÝ»W‹äõî\çvÜÚ#šSÊ!@8uêTæÌ™]£F mŒ2–yÕªU•ÆË<è¿Ý€€­ `œÛzz#FÈqý‘(pn$"*@ð„€•D͹Æù²eËŠ-ºzõjé«íQ}ôÑŠ+2fÌè‰úÔ (¸µŠ<ãB7B{D-èÜŽ[{D³I9 Š–!CãÌ;÷"CL•äJ±9dȳøŸ%K%æTúŒ˜ôI[@þ!Àʹ83  òf7B{D}áÜÊ!xH`áÂ…²oUÙ‰ËæÇŽ«T©ÒàÁƒe^·n]¹²c™{8õTƒNã<àS€€@„Å'¢íµÁ¹="2”Cð„€åÓî¸$jóçÏ/V¬Ø† ¤füøñ‡¾hÑ¢Ô©S{¢5u Ønív˜d€Â!%‡öíåÜŽ[{ȹã,«W¯¦M›ööíÛò?~ü¸VG—›U=>ûì3S?gΜß}÷]É’%=lN5@6!ÀʹM&1 ÿ"U‡öqnIƒs@žP2pYæª/Ÿv§Xæ‡*_¾¼e™7nÜxûöíXæžO:5!ûÀ8·Ï\  ðVW‰vÿïsÏpn"0ªCø_sçÎ5 œ²á|Ö¬YÅ‹ߺu«ÄN˜0á˜1c´fž,Y2£!8‹níΚ/¤…@PfÚ_~ùE;uìß¿?ªš;Ź·ö¨Î,õ!¸yó¦|Ú¯_¿®¿z=ª d>È+ÝÞºu«k×®cÇŽ5½åÍ›Wf¹Ò§y¥s: ¬œ;ƒB& çBÝ:tè¾}û”ÎG¡}ªT©7nÜG·|XçvAQ €€! Üà²ÌuþÜsÏÙÜ2×Û²eËZ–ùË/¿¬0%Xæ|“!§À8wú "?‚‚€Òíj…dõêÕçΛ1cFóæÍS¥JõHÍqn$"*@°8ŧ}Ú´iÚR.·#Iž(Q¢ñãÇO™2%I’$–"œ@p(ÜÚ:qˆ `'`9½+|‘–Ö#ÂaçvÜÚ#š;Ê!¸{÷nºté.]º”"EŠ3gÎċϟ£{8–ï»téòÍ7ߘú Ôžó xØœj€lN€•s›OâAá°œÞÿøãËé=ìÓ$Îíá㣀Àk’,s•Õ­[7ìoé× Ì'¹²—)SƲÌ_yå•Í›7c™f2ð Œsßp¥W@À,§÷³gÏΜ93”Ó;Îí~œ †‚œJ`Μ9Fô^xÁ†:L:U®ì»ví’l‰'ž"  oð4î±·Æ£@¾# ¤kŠî¶ÿŒ5*l¹J† f1ì&C©R¥0Îí6)È(²·µyGNÝ<~üø±‡ÇéÓ§ÏŸ?/£:zRÉq=Mš4ú_–-[¶¬Y³ÊVWú4™åµjÕ²•e®"76 æÒT®ìz§i+ £ÇŸV€Â%€q. !@€@`ÈðÞºuëöíÛwìØ¡˜‘GŽÑ2¸wEQø7e2סBö¬Wœ… ~òÉ'‹+¦¿%J”HžÞE€¤ IDATÂéÑ ½=†žÅ.\èí^é °wïÞŸ~úéׇ‡¬ñÈ%–›º½µÖ-uã£.uã¸?~|ãÊ®¨™Æ¿]oß¾müÞõ÷Â… Z!—»ç¡Ì~­Òï~xè?£dP E\+_¾|… ªT©òøãG.˜·®ÞºuKQÙ¿þúkÓ¡Þ(*;¿êÞÂK?€€m `œÛvj ˆ>=D>õÔSÑoOËزeK€FfX€€üÒüñÇåË—¯ZµêäÉ“áJ c™ÇyO<ñDöìÙå…ž>}ú;ÆÃmèI¡,ó¿ÿþ[®òz ·yë‰nšËmÞØêãÆS‰¨^½zÍš5kÔ¨á;ßrùð7jÔȤ1× mÛ¶Õ¾$ß ç (ê@ðŒsÿpf@€ ð¿´g\!Íä$¢eòP ׺ª䊹P¶lÙâŋ˱\Ù(´|í#pZ]—©¯#äÛLy¼+˜¦<ê·mÛ¶aÃhíÝ ä:¾üòK™Ê²ÒëׯÿüóϧJ•Ê‹âi…üÕW_Õ ¿úÔ‹‰1cÆ´hÑ‹ýÓ ;À8·óì  @.! 7råzÔ!‹7”JòHúé§«V­ª¿E‹•_z¨ þü¨Xqz) £uëÖWÁÒåÒ²fÍ%B߸q£YTW¡v§ëèÔ©“VÑ›6m*+]¶tLä”ïýÛo¿-Ëßt"½Â yLÒp@þú;C€ (ÐÚøÒ¥K• ì‡~Тtȶùóç¯W¯^ݺuË•+Xƒ<¤T¡ÎµH^éáѯ_¿7nÈJ—M.]䯚ÒhÉÃãõ×_WD¹ kÍ?Tž|<|ø°¢²[ÑéZ¶l©5sÒ˜{‚Ž:€€›`œ»i6Ñ€ »Pè5…4ÓR°6u‡”Ikã²cµ­Z.ë!Ëí.k¹ÎÃC¢þöÛorA×!/}}”#ú7-¹+–[³fÍ&Lè¡FóæÍkÓ¦ÍåË—U_ï´Ã\F¾‡m©@ÀM|µ‹ÉMŒÐ€ xN@ëÀÊ–%K–wß}ײÌ3gÎüÞ{ï)q·vqëÄq–y(õK–,9dÈ£Gjç|ûöí“%Kf*H;e#W\÷>ø@¯'Bµ õQ ïre—K¼±ÌönÓ¦MXæ¡(ñçÁ3×h @€€o üñÇÊÅ­¨æ_}õ•6fk0…s“ãº\¿µÂ}ºã…¬Ã9 `#€ql3޾€ x“€\²e„kI|Ò¤IJ ®®Ó¥K7`À9´6,gΜÞÌö})œ–Ð<عsgÑMaä>ùäq9r¤²² Ñûï¿_»vm­®K›9rüòË/;v´½f@Àç0Î}Ž˜ @p%(šœØ‡nrŒ¥NzðàÁZE×ZqòäÉ]©µ'J)wúçŸ~äÈ‘7ß|S ãjrñâÅ®]»*@}‰%>þøcóC™Ò•M]%žôI@®'€qîú)FA@€¼O@ÛËŸzê©víÚ)¹z—_wß¾} ®G:÷þxìQZ-—c¿‚±kï½4Њº"ÆéDNþŠ'7þü)R8P3D† àç>ÁJ§€ ¸•€|³?úè#å S r£cÓ¦M÷ï߯B+h¹[u†^ŠÜ>~üø-[¶(tœÕ\ï3fŒ+–U  `œó€ @žÐÚ¯ÌûõëgüØåÓ¾fÍš3fÈõ´‹ ¬W¼xq½ËÏüøñ@yÑ7NùÞåî”}vîÜY¹rå°5) —€|þÿþûïæÍ››«³fÍ*R¤ˆÂ…[™B@ÁFã<Øf}!@ˆ2­“wêÔ©e˖ׯ_Wc-˜Ë¤T`3í,ÊÝqƒ4iÒL:uöìÙ ž' Êv®·ÚšÄHP€Àÿ'€qÎW€ DF@!ßž~úé1cƘJm۶ݾ}{éÒ¥#kõH ¼øâ‹»víªR¥Šji¿¹¿üòË·oߎ´!¸œÆ¹Ë'õ @ˆ ½{÷–)SfãÆêDaØ'Nœ¨ôi&ƒwLº¥­­X±B9çLX¸iÓ¦U«VÍ$? à$€qœóŽÖ€ àH £%—à:uê?~\ ܺukìØ±2i”VºdÉ’]ºt16¤#u³¥Ðò]/_¾¼ò–Kº,Y²(¤Y«V­l)©#…RBµÌ™3'qâÄRÀÐ6ßmGêƒÐ€bF nÌšÓ€ ŸM¾xñâï¿ÿ^ek¼›7onݺõ¹çžÓ–]3ü_ý¥¹^1â7Þð¹LA0€ÖuEøÆÒµT©R ,Ðboèío6l¸~ýúzõê)Vœ’¢+þÊ•+µ«ßßr0 @`å<Ð3Àø€ GP¦®… ®^½ÚXæª>wî\…ÑÒj¹rSÉ1XöŒéCÛw;wî}ºVn-­‡ ¦uÝyóæ)7•ƒµð8a„„ š ýû÷?{ö¬U™“¨X·n–sM|2….[´h‘ñ»Žj?Ô÷œ€Åëk,+]MþùçmÖ0» <œNãÜé3ˆü€ ,rçÎm©*ßõ²eËZuÒºukí?7%rƒ—Åò*çžøý÷ßëÖ­«jò /Èm!~üøž7§f´ ¤M›VíE‹UÚ¯Q£F âÃE& !'À8wâ¬!3 #&bþüùÃ"hÑ¢ELyÈeö°5)‰ˆÀÉ“'e™ëí†*èD–yܸ艈–÷ËS¥J%—ó5>xð öü“_Íû”é°+Œs»Î rA€¢H vìØ;v4´q÷îÝ»Qì Ø«Ë¬_¿¾‰±§ôi³fÍŠ/^°Cñ»þZ?_ºt©Ùá¯øííÚµó» @ 00ÎÃQ!@¾ `¹¾ß»w-»Q%¬\tŠx¯V9räP>e5jÔ÷ í?Wb³ÏÊ”)_}õ•Wº¥@6'€qnó B<@€@d˖ͪML8 …'' ¹7nÜ8Õ”M>þütéÒyÒŠ:>" Èpß~û­éüÍ7ßܱc‡¢[@ö!€qnŸ¹@@€@L ¤NÚê"W®\Ö9'‘P†í×_ÝÔQ®ø"EŠD^Ÿ«~ ФI™åHÛ Z¶lyçÎ? Ê€Hã<€ð€ àe§N2=¦H‘"}úô^îݽÝicó¥K—¤ßK/½ÔªU+÷*ê0͆ b^”ìÚµëÃ?t˜ôˆ @ Š0ΣŒê€ P8#]¾|ùl,¦½D›={ö?þ(™2eÊ4zôh{ ÜÒ(Cöœ›<C‡Ý·o_pó@{@Àå0Î]>Á¨@AE@Ù§Œ¾5 *Å£­¬ò™wëÖÍ4ÿâ‹/R¦Lí®hè Z9ïÙ³§zVöãåî‹Q耀`œÛa€ à&†VæÌ™;uêäÝÞËðáÃ?.-kÕª¥¬ÚnWבú½÷Þ{&Òáòå˃#Õ@h@"€qþ(B\‡ ØÀéÓ§Ã µbÅŠÝ»w«¼OŸ> & [’P®\¹òé§Ÿª0Nœ8#FŒu•6! øùÚ|n„éׯŸM¤B @^'€qîu¤t@ð9-ŒŸ;w.ä0GŽéСƒJ´ܶmÛ—8ˆÀ¨Q£.^¼¨«/¿ü2»ô#¢d‡rmÓ0‘á¶lÙÂâ¹f _À8÷Uú„ ø–€ößÖ¯_ÿ»ï¾;ÿðÐIÅŠeŸËÈ\¸pa¼xñ|;¼+zCm2—*Z6ÿý÷]¡“k•ˆ+Ö|`Ô9r¤kõD1@ ¸ Ä nõÑ€ àHsæÌYµj•’?ÿûï¿Ràþýûùóçíµ×z÷î-3Æ‘*ù]è¹sçšÌszÍ‘3gN¿Ï€Q#РAMÓáǵ}cÿþýyóæZ{jC°=VÎm?E@à?”‡yÚ´i2ÃþSàé¿¿þú«ÞºuËÓÔ³=%—Òbï±cÇ"KFæ?ÿü³wï^m5Ç2÷|êLð<ÕïÒ¥‹ç­¨(±cÇ~ýõ×5úƒ&L˜(1€€ï`œûŽ-=Cð¥öU@éªU«¦K—NNË÷îÝ‹R¿_}õU… Ô°^½zQjèšÊÊ•å]B)’!C†jÕªiEQßP—ø93gά^½ZuräÈQ¹råÈ+sÕ&Z´h7îÿz}j‡MDB @^$€qîE˜t@Àû>ûì3Õï¼óΚ5k´E6h²i%SäÚµkÑèÁ¡Mäï=þüÚµk¿ñÆU±}G@îæ=WÓ¦M}7 ={—@Ú´iõ6J}=ztóæÍÞíœÞ œÆyÀ§ DFàÍ7ßr%{öìQxE5©R¥J4þCEi,*{—@¶lÙråÊuèСM›6é}œÙ‚îÝ!è €@ àÖ(òŒ @1%`v•Ë]_ –ú÷ïïnË\°Ö¯_o!ûý÷ß­sN¢J`ûöí¦I©R¥¢Ú–ú'`fíöíÛüñGÀ…A@^$ÀʹaÒ ø‰@,•[4wìØ¡|x °J>þøcÅ/]ºtÉ’%oÜ*çÄÖ«bÅŠyRŸ:¶" Y›9s¦DÒ<.\ØV²!  ˜À8 =ÚB€€_ ˜]åJ§äÞAµ«|ëÖ­W¯^UtÀP¸>œ2eJŒóPXùñÈ‘#¦N¾|ùY™ v#`Íš5v“y DÆyô¸Ñ €@4 ÈÄZ°`ÁŒ3ÆŒ£pâ·nÝš8qâìÙ³’]©ªË—/ÿÒK/•-[ö‘½+­Ú¤I“ŠüàÁƒÚ©ˆqÏ?ÿ|–,YÂm(›vñâÅ“'O;v¬r…[Çæ… h§]åãÇw½ïz¸ѶmÛpË)Œ¿þúK µ]9cÆŒÑëÁ†­nÞ¼9jÔ(…I“ÉzúôéìÙ³k…¹B… íÛ·wÙ¾úÇÜð7óhù@$@Ñ#€q=n´‚ 5²Éeÿý÷ú+ƒ\õ$­åÐçž{îĉ¦/=hªDFûˆ#"OÍ-gÎ ȵÛ4ܹsç¼yó”]‰S§NmI¦Ôk×®5kÖœ9sÎ;§r=»[Wq´K厘ç )ÛU§OŸ>Nœ8ÎÕ"¤ä«W¯nÙ²¥~g† V»víT©RmÛ¶­U«VS¦Lùå—_&L˜àM¥uæÌ™îfCrà€€£ `œ;zúp -•+u“ e.¹çÎ;pàÀêÕ«wîÜùòåËëÖ­ûùçŸU.sT%7nÜèÑ£G¸êmذA–¹ò?õîÝ[©Ú¬­Èª/g¥4_³fi¥’.]ºÄŽ[+óZf·+;zq©\q¹õ¾ÃÎÊ"›Ÿ \¸pA#&I’ÄÏãúh¸Ý»w7lØðÊ•+úIi×®EkæzgW¤HÙçÉ“'wÜ‹¹HXY§_¹Hªq €€ó<à€ àÝ»w7¿Â jmOd[÷ -mÉÌ)§V·&Lh*$MšTᾬ«2¼­†ò~ÿî»ï¬K:1±‘L­¢‡¼¤óiÓ¦Ym•‹+ÔU[}´f°L™2z­`‰ÃY)1ìæ®$ðä“OÚêûmaZ´ha&hèС¡:I–,™.)ã;wB]rîG+ÞD¹r圫’CKÀk>®¼m£ ïÈ;·Õ¡ÖrCí-oݺµö„› rO šÛj¥m5oܸqÈ-¿[Íò»õQ'ùóçùÑçŠ@þôÓO“ÁØ“å\!õTä\áCJ~òäIó1¬ïºâê’œGœ"dGŸ[ç²½ôŽž„‡¼B·v¯`¤@ˆ?¾U/\›Y+`C† Ù»w¯ª)nÜÈ‘#­úÖIÁ‚­ss¢}æŠ×mk½=ÔUË4T¹?6mÚô©§ž’·¿"Þ-Z´héÒ¥Æ9z2gÈA!÷¢×–V®$ЦM›k×®)îƒ;´{ï½÷Ž?®¯¼òJ(¬ßu"ÔU‡~´&.Q¢DU±!„Kã<\,B ùrwìØQ{Î5¼âÃi¯x¼xñ<E»1εïÔ“úލ£²²ÒuÈêPP+Yé:öïßUáõzB»ñ£ÚŠú.&ðöÛoË8—Š;t¬V­ÚŸþV—7jÍÜ”»é—Áš¸Ä‰‡Õš@Î%€[»sçÉ!w°\ße‘*(š‡JZç‡ QMÚUªTIûi÷íÛ§œsǯR¥Š‡¯-¡ Bú™€É öÏ?ÿ81Vâ#YÉåD¹ *Ô­[7ýŒ˜únúe°2\¸)Þ#§• €@0À8†YFG@ÀI²eËf‰{öìYëœC@//ºvíª¸÷‚£HxÍ›7Wh=à@ JL¢lÅSˆÄ(5´ye¥W”ß2œoÚ´I&"dnE› ï¹xòá7•­„çž·¥& ;À­Ýγƒl€@0ù0+W®`Dà™Îrzoòð0Nï?üðƒœÞµ´îYkj5ëÖü!SÖ,”‚ñÝwßýüóÏaAé*´lî¥"RA³f.YóQMÊ!8‹+çΚ/¤…ÜOàÔ©SFIe?JŸ>½ûޱ†Æé]ôôÈnœÞ«V­ŠÓ{Œ¹º¹%Q3êmÛ¶ÍzÊ2×{ªO?ýTa&µÏÜÝ–¹ækûöífÖ¬ytÁ$¢ À8çk@À^Δ/_>{IæiŒÓûªU«pzwÂtLF˨ۼysÀ„ðÞÀ/¿üòܹsÕŸ^QeÊ”É{Û´'3kŠ—'O›ŠˆX€¢E·öha£ Ÿ°Ò7jÔÈgƒ¸¿ãNïVh÷«†žЛ¯´iÓê ÎO?ý¤eç¸qü8¤móß}÷ôVð…m÷ €ƒk)_ƒyƒY¡B¥·p°&ˆ@ ~Ô ¡€@@ |ûí·?sæÌ:u ¨ .\NïDrÉ\zOX±b;V Æ;Í{ §åË—›QõUû–ÁJ É|3¤¥oõêÕ}3½BŒó€¡g`@ È œ>}:,+VìÞ½[å}úôI˜0¡U!äö­[·¬rëÄ*´NÂ^RIØ«V5N TjÕªeô={¶£?|ø°‘_Ž¡¼ô×®]ke»xñ¢£Õ´„·æËšAë'€œNãÜé3ˆü€€S haüܹs!¥?räH‡T¢‡Î¶mÛ†¼²fÈs«ŽU¨t«ÐœX—ô1ìÕP•ù !ðÜsÏ%H@ÊΚ5K9Õœ«uÑ¢E-á_xá…)S¦èÅŸ–—ß|óM¥U+P €¹*›öÚµkÊAhå!³Z9èDíÊ'ú®páÂ’Q!xBãÜJÔ à}wïÞ­_¿¾6‹žxè¤bÅŠ²ÏÛiáÂ…¡‚Ϙ1Ã’`úôéÖ¹9Ù»wïŽ;̹‰…fUxðàÙjJd‡X—8@0PT³ôªüK–,q. ½e(Q¢„‘_ëä-[¶Ì˜1cÍš5eÇ*§šõšO‰µ)]ï“&Mê\e•¼]¿i’¿iÓ¦ÎÕÉ!DDã<"2”Cð-9sæÈ6Гtº‡‡ž5“%KöñÇOž<9¤e>nܸ"EŠŒ;Ö’fôèÑJ•4räH•(yXíÚµõh®\ߦ‚œWµ¦Ô¾}{Ùù/½ô’¢õÕWVÛáÇk­]»vV 'ZÖ¥w.í3×ë¼gŸ}ÖRA¿S§NUüv½€hÖ¬YΜ9uIçúA¹ž2eJ«¦³NôBÓüjw}›6mœ%<ÒBð„€ƒÃ“z¢u Ø–@üøñßÿ}YÑ{öì‘»i¹råd¤‡•Vt„-7%²Ã#Yô »ÆQ?”C  È •áª=ÛŠõ°sçNÙ´… ôiúPØvé’={öµŠ¾oß¾(Ë ~sª [?hrsÐyƒ Bêèh¥€@Hç!ip@Àß2<<ü=*ãAÿó?JÄ¥Ù:£_¿~óæÍs4¥xÐVyâX;ÏÃ^uJ‰2ÞɱÈHÛµkW§ˆœ€¢D·ö(á¢2 @î! ·-;KŸùóçoÙ²Å=йNí6?tèÔR¼§žzÊuú¡ ÿ%€qÎ÷€ % „…ï½÷žQ¾K—.&ØX²°±Ú—.]êÝ»·ð£>²±¤ˆ@ F0Îc„Æ€ 8šÀk¯½¦Ø RaãÆZžu´.n¾OŸ>& dãÆË—/ïV5Ñ €Æ9ß@þ# ˆMÖ` «nsŠ€¢[ÑÚ»uëò?i DbÜÖ­[7fÌ•$J”hذa!/q@Àe0Î]6¡¨Øš€òYòýþûïÖ9'€@ T¯^½yóæ@¯Ì¬Äà”‡¡-ÊdѺuëû÷ï«DáÒn‘áp%ŒsWN+JA¶#°cÇŽ/¿ürÀ€–dzÐìÞ½ûìÙ³•Ü*äQ£F)똆^¶lÙСC"ƒ†% ˆ}æRAàÞzë­°( à&¤RsÓl¢  `_[·n½zõªIÚRJå%N™2eŽ9Brø™€þjù2Ÿ+&\¯^½J—.ýôÓOûY† E@oLf̘¡ÂäÉ“Oš4I©ïBUà# —À8wÙ„¢ `SøÊÚtb ÿ!P³fM…ïß¿¿Rj7jÔHñáræÌùŸ‹üëo«V­zçw̨ãÇg.ü=Œ‚ï A1!@°>ø F’K±Ák×®}áÂûÉíÞ½û…^¸{÷®´U”¾çŸ>(ÔFI@ è `œýW€ <$'N…(P €>íß¿¿N: H?ÐfŸZµj]¾|YãÖ¯_ðàÁ~€á ŠÆy È3. @¶# íÍ‹/NŸ>½$“g»ìó7nØNJ÷ tüøñªU«š„v%K–œ>}:[ÍÝ;Ûh„&€qšŸ!@fÙ³g_¹reªT©AI¶%îÊ•+Á Äoº:t¨råÊÇŽÓˆ \ºtiâĉý6:A8Œó€O@€ `/… RN5­¢K,ÙçUªTÑ.t{‰è:ivíÚ¥|i&qZž­± .¬"2dðø @ÀV0Îm5@€€]+VlíÚµY²d‘@ò¸.[¶¬lH»ç"9F­Øø&\™2e~úé',sM/ª@Q €qXT… @ ¨äÏŸÓ¦M²Ò¥µ¬Gí?W"ôß)«`{-[¶ìܹó½{÷4ŠR¦É[Áìö÷Ý ô @À¶0Îm;5êƒqó IDAT@€@à dÊ”iýúõ 4(÷ïßïÛ·¯B¸Ÿ9s&ð’9\‚={ö”.]zÊ”)Fž={~ÿý÷=ö˜ÃÕB|@Ñ'€q}v´„ @ (fø¼yó `ÒzýøãÚ½páÂ`ÐÝ:Êõ`äÈ‘ÚÕ/û\ý'MšTéå +V,_ GŸ€œBãÜ)3…œ€ Œ€ìÆ^½ziϹÙ­•s­¥·nÝúüùó“É™8p@™Ì»vízëÖ-iP¤H‘-[¶¼øâ‹ÎÔ©!x“ƹ7iÒ @.&P­Z5eü2.îRsÒ¤IÚ”>uêT«ìEÕîÞ½+ïYã ù¦nõ¾ãí·ßÞ¼ysÞ¼y½8 ]Ap.ŒsçÎ’C€ àoiÒ¤™?þøñãS¦L©±•ÿ¼E‹•*URº5‹â¨ñ-ZT°`Á>}ú˜óœ9s®ZµêÓO?M £ô@X@>$€qîC¸t @€€+ ´iÓfïÞ½52Ú)b\©R¥TxüøqWê¥ôÚâ™gž©_¿¾ÚÕOœ8qºwï¾{÷î*UªÄ¤[ÚBpŒs÷Í)A€ àsÚ|>kÖ¬¥K—æË—Oƒ)ûĉóäÉÓ¥K—Ó§Oû|x'  ÷ÚL®Ào+V¬0òV®\Y¶ú!CˆÊî„ DF@Àß0ÎýMœñ @p š5kîܹsøðá&;÷;wF•#GŽN:9rÄ5jFUÅxSÒòB… Í™3Ǥ…—»B²+¹öœGµ7êCçA2Ѩ @€€OÄ‹O±Ç>Ü»wo%]ÓÚV=fÌ­¢7iÒäçŸöɨ¶ìôÞ½{Ê9'u%0׉1Ë3fÌøå—_îÛ·ì¶œ4„‚lDãÜF“(€ 8”@òäÉû÷ï/½gϞɒ%“²Tå÷^±bÅbÅŠ7îÊ•+UͱOž<ùÉ'Ÿhy\ æ&»ZeΜyĈìØ±£^axÒu 3Œó`ž}t‡ @À›Ò¥K7hРcÇŽÉP7ÑÕûŽ;:tè ä–-[®\¹RF»7‡ h_7oÞ”³z:u²fͪ<ðV<> stream x+TT(TÐH-JN-()MÌQ(Ê ˜[é  457Ó3`Nr®‚¾g®¡‚K>Pg '’ endstream endobj 5 0 obj 61 endobj 2 0 obj << /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 792.0792 576.0576] >> endobj 6 0 obj << /ProcSet [ /PDF /ImageB /ImageC /ImageI ] /XObject << /Im1 7 0 R >> >> endobj 7 0 obj << /Length 8 0 R /Type /XObject /Subtype /Image /Width 1100 /Height 800 /Interpolate true /ColorSpace 9 0 R /SMask 10 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream xìÝ ´,u}/xÖä×8’¥1 Æ‹b¼×eäj &ƒŠ€ÈC ¾ ¢òx8pðV"PP®<.1pFÄÄAÁñ†È(žAÈðä°bîÜ53+‹…²ÌüÆÊÔíÓÕÕg×Þµ»«~õa±Îªúwuõÿ÷©ÝÿýûîîÝûŸÿÙ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ØHà©§žzä‘Gþáþá?û @ »@t}ÑûE¸QGh‡@.ø"ÿšÿ @€†$`®–V56øÅ/~OèŸüä'ï? @€ìÑõEïàF¡¹âõØø:gs¼pé? @€ÜÑõEï`®–V56qr¯cª#@€Œ È8µÂv’ È8£ÏzÛ @€Ü2NÒ¦^Y È8¹×1Õ @€FdœZa;IdœÑg½m @€@n'iS¯¬dœÜë˜ê @€£2ÎF­°¤2Îè³Þ6 @ ·€Œ“´©WÖF­gœ;î¸ãE/zQ±8|ð7ÿÕ-·ß~ûŸýÙŸm¿ýöu,d|åÊ•ñ SŽœ>‡)wt @ Ÿ€Œ³Q+l'©@ë'–‚ïÿûÅ‚°É|qå•W.1ã<ðÀ?ýéO§¬?›œÃ”ûº‰ L@ÆIÚÔ+k#MfœG}ôíoû{ßûÞwÜqÿý÷ä‘GþäOþä÷~ï÷Ö¬YOù½÷Þûˆ#ŽˆSN9eë­·¾è¢‹öÝwßßú­ßŠ‘¯|å+ø›ÿþò/ÿò /Œ‘k¯½6¶÷ÙgŸ?þã?>餓bäŠ+®xå+_ùîw¿;Üyç~øá<äCžóœç¼ï}ï{ãß híÚµ1ÿÝwß}+V¬ˆ3ìµ×^çž{nŒ¬[·îU¯zÕn»íÛïz×»¶Øb‹£Ž:*¦÷oÿí¿ý¾ƒÕ9Ä`ñ_ÜG¾óïÜo¿ýbÅàC=´jÕª(j§vzÝë^÷w÷w1Ó~Ç;ÞGFù·Ýv[Œµzõê×¾öµ¿ó;¿sÌ1Ǽô¥/©ÆôGô‚¼ 8›  @€]q6j…í$ØdƉ,³ûî»ÇÓóÉ'Ÿ<ðÀcãÞ{ïÝb‹ç<öØc6lxÉK^ñ$ðƒtÐA±ÿ'6â5”C=ô7cÿÇ?÷¹ÏýÑ~»‘Þüæ7ÇF„‹g=ëYñö¶ØŽàsñÅoµÕVgb;^¦‰är÷ÝwÇv¤§"Oýüç?ÿýßÿý[n¹%czEƉíH{î¹gl\}õÕÛn»mlÄ£s(FН»îºo¼1¶×¯_ÿŠW¼¢<òÈ##àÛ»îºëÍ7ß<:íË.»¬(6ˆÇŠÇ ÈY‚â©(äÛßþvÜ‘§8ƒ  @€]q’6õÊÚH`“'úöxa"^R9ï¼óÊ'évÛm÷ùÏ>ûxù&^ȸ뮻âå"2Ä1£'"Fq¯Ï}îs/~ñ‹Ë3‘q"%ÛpÀa‡VlGÆ)ϯ¶Dôˆ\éúë¯/xÛÛÞÇÇö'?ùÉÑŒ³ŠÁx=hóÍ7/ެ{¯Z¤­ˆQo}ë[ãUªxÙ¨xÉæþàÎ9çœâŽÅ¿£ÓŽ—´žýìg/åDƉ›Ê#£m¶Ù¦ÜµA€覀Œ³Q+l'©À&3N<=㵌èüÿýoþ+ž­ñ6­·¼å-ñ³xe—]v‰wˆÅ¿åybƉô11ãDX(î8FÆ2Nœ¿È8_ÿú׋ƒ#ãÄ›Ùb{ìuœ«®ºª8`⊛Šã oñÂP±W¼Tç3ŸýÌèa£Ó‡ÑŒS>V§,dôî¶  @€q’6õÊÚH`“çä“OŽ÷bÅs3^ÅøÝßýÝèócûž{«ïa‹ß|yá _øþ÷¿¿|þ–ùâØcW[üñxµ%þ-ß«o3+Êh4Ë8ñiqŸýìgñ^µx(¶ã7qâ؈¼xë­·ÆöØë8ñÒR ÆçPÜTüéö¡}(¶ã×|âmfÅCD˜*ƒO<\¼oô½j—_~ùè{ÕÊÇŠ“Œ2ú(¶  @€q6j…í$ØdÆ¹à‚ ^ýêWGç¯Úœ~úéå“ôå/y䋨O!ˆ÷z•¯°Ä‘ÿê_ý«88nŠ_´yýë_o+>7àšk®‰[ßóž÷Ä¿ñK=?üáÿüÏÿ<>¾àŸøDÜñ!~‰&> î/¬Ä¯ÞħÄG œuÖYŃF‰ßî‰_ÿ_º9ûì³c0~&æU}æ™gÆ»æâToxÃâ̸bEì›Cqªø7&¼Ã;ÄËOq¶_ñ†·Ha>ø`ñ+91ÉâSâȯ~õ«‘wâ3b°ø›È}Åc}éK_ŠÊBâ€òü6 @€q’6õÊÚH`“g.ÏÍÈ8Å +sytJ€È* ãlÔ ÛI*ÐÁŒó| ^Šqî¿ÿþ¬Ë‹º @€sq’6õÊÚH ƒg.ÏwJ€‚€Œ³Q+l'©€Œ3„ÕL @€B@ÆIÚÔ+k#ÇŠG€Ž€Œ³Q+l'©€Œ3œ5M¥ @€'iS¯¬dk @`82ÎF­°¤2ÎpÖ4• @€dœ¤M½²6q¬u @€áÈ8µÂv’ È8ÃYÓTJ€q’6õÊÚH@ƱÖ @€†# ãlÔ ÛI* ã gMS) @@ÆIÚÔ+k#ÇZG€Ž€Œ³Q+l'©€Œ3œ5M¥ @€'iS¯¬dk @`82ÎF­°¤2ÎpÖ4• @€dœ¤M½²6q¬u @€áÈ8µÂv’ È8ÃYÓTJ€q’6õÊÚH@ƱÖ @€†# ãlÔ ÛI* ã gMS) @@ÆIÚÔ+k#ÇZG€Ž€Œ³Q+l'©€Œ3œ5M¥ @€'iS¯¬dk @`82ÎF­°¤2ÎpÖ4• @€dœ¤M½²6q¬u @€áÈ8µÂv’ È8ÃYÓTJ€q’6õÊÚH@ƱÖ @€†# ãlÔ ÛI* ã gMS) @@ÆIÚÔ+k#ÇZG€Ž€Œ³Q+l'©€Œ3œ5M¥ @€'iSßï²~ùË_žwÞy»îºëOE->K­œçxÉ%—”»Õ 'Çz¥ š È8MÅO€@§Úé‚@‘q~þóŸ—“‰kÊÏRûû8ûì³Ï/~ñ‹òÈꆌ“c½RMdœ¦bŽ'@ ‡€ŒSí‡ÌWà—¿üåŠ+Þÿþ÷ÇgGrÈ!ûØÇŠù¬Y³æ´ÓN+çöÀy䑇~xüÛåøÄ 'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKl0™€Œ“c½RMdœ¦bŽ'@ ‡€Œ“¬™WÎD'Çz¥ š È8MÅO€@gbKlpîwÝu×Ê•+?üðÕ«W?ñÄçsÝu×Å­þð‡9是}ík)eœë•*h* ã4s<9dœ)±›æ%°~ýú½öÚëˆ DÙo¿ýžzꩱÉüä'?Ùu×]~øá衇vÙe—¸×Ø1完“c½RMdœ¦bŽ'@ ‡€ŒS¶Á6º#°fÍšãŽ;®˜Ï3Ï<yçÆo›Þ\ð¾÷½¯Œí /¼°ÜÛqr¬Wª @ ©€ŒÓTÌñäqÆša»]Ø{ï½/¿üòr&G}ô‰'žXîñªÍî»ïþƒüà׿þu¼±-¶‹×}Æ+veœë•*h* ã4s<9dœ‰-±Á9 <ýôÓ;ï¼óõ×__ÎáÔŸ¿˜Sî–>úè»ßýî}öÙç]ïz×c=VŽW7dœë•*h* ã4s<9dœj?ld¾O>ùddœ[n¹¥œÆgœqÀ”»ÅÆ=÷Ü'ûÕ¯~uóÍ7GÌùÛ¿ýÛ±cÊ]'Çz¥ š È8MÅO€@§lƒmtD`¯ãüñGuT9ç~ô£'tR¹;¶!ãäX¯TA€@S§©˜ã È! ãŒ5Ãv» o?ý}œU«VU'ŽýóÏ?ß}÷­›¼Œ“c½RMdœ¦bŽ'@ ‡€ŒSן£Ài§¶ÉÏU‹Ôsì±Ç–“Œ?‘ãuœ‹’*hQ@ÆiÓ©è‘€ŒS6É6º#0ú÷qÖ­[·ÿþûÇØbzñ‹9k×®-æùï|gÏ=÷üñ»?úÑâsÕn¿ýöº¼ŽÓ£EÉT hQ@ÆiÓ©è‘€ŒSן¯ÀÝwß½råÊø8µÕ«Woذ¡˜LüÝœx‰§ØŽ¿›sÛm·|òÉ+V¬ˆ#òÄHÝœeœ-J¦J€@‹2N‹˜NE€@dœº®Øx&§G‹’© Т€ŒÓ"¦S Ð#'S'¯–:§G‹’© Т€ŒÓ"¦S Ð#§®+6žI@ÆéÑ¢dª´( ã´ˆéTôH@ÆÉÔÉ«¥N@ÆéÑ¢dª´( ã´ˆéTôH@Æ©ëŠgqz´(™*- È8-b:=q2uòj©qz´(™*- È8-b:=qêºbã™dœ-J¦J€@‹2N‹˜NE€@dœL¼Zêdœ-J¦J€@‹2N‹˜NE€@dœº®Øx&§G‹’© Т€ŒÓ"¦S Ð#'S'¯–:§G‹’© Т€ŒÓ"¦S Ð#§®+6žI@ÆéÑ¢dª´( ã´ˆéTôH@ÆÉÔÉ«¥N@ÆéÑ¢dª´( ã´ˆéTôH@Æ©ëŠgqz´(™*- È8-b:=q2uòj©qz´(™*- È8-b:=qêºbã™dœ-J¦J€@‹2N‹˜NE€@dœL¼Zêdœ-J¦J€@‹2N‹˜NE€@dœº®Øx&§G‹’© Т€ŒÓ"¦S Ð#'S'¯–:§G‹’© Т€ŒÓ"¦S Ð#§®+6žI@ÆéÑ¢dª´( ã´ˆéTôH@ÆÉÔÉ«¥N@ÆéÑ¢dª´( ã´ˆéTôH@Æ©ëŠgqz´(™*- È8-b:=q2uòj©qz´(™*- È8-b:=qêºbã™dœ-J¦J€@‹2N‹˜NE€@dœL¼Zêdœ-J¦J€@‹2N‹˜NE€@dœº®Øx&§G‹’© Т€ŒÓ"¦S Ð#'S'¯–:§G‹’© Т€ŒÓ"¦S Ð#§®+6žI@ÆéÑ¢dª´( ã´ˆéTôH@ÆÉÔÉ«¥N@ÆéÑ¢dª´( ã´ˆéTôH@Æ©ëŠgqz´(™*- È8-b:=q2uòj©qz´(™*- È8-b:=qêºbã™dœ-J¦J€@‹2N‹˜NE€@dœL¼Zêdœ-J¦J€@‹2N‹˜NE€@dœº®Øx&§G‹’© Т€ŒÓ"¦S Ð#'S'¯–:§G‹’© Т€ŒÓ"¦S Ð#§®+6žI@ÆéÑ¢dª´( ã´ˆéTôH@ÆÉÔÉ«¥N@ÆéÑ¢dª´( ã´ˆéTôH@Æ©ëŠgqz´(™*- È8-b:=q2uòj©qz´(™*- È8-b:=qêºbã™dœ-J¦J€@‹2N‹˜NE€@dœL¼Zêdœ-J¦J€@‹2N‹˜NE€@dœº®Øx&§G‹’© Т€ŒÓ"¦S Ð#'S'¯–:§G‹’© Т€ŒÓ"¦S Ð#§®+6žI@ÆéÑ¢dª´( ã´ˆéTôH@ÆÉÔÉ«¥N@ÆéÑ¢dª´( ã´ˆéTôH@Æ©ëŠgqz´(™*- È8-b:=q2uòj©qz´(™*- È8-b:=qêºbã™dœ-J¦J€@‹2N‹˜NE€@dœL¼Zêdœ-J¦J€@‹2N‹˜NE€@dœº®Øx&§G‹’© Т€ŒÓ"¦S Ð#'S'¯–:§G‹’© Т€ŒÓ"¦S Ð#§®+6žI@ÆéÑ¢dª´( ã´ˆéTôH@ÆÉÔÉ«¥N@ÆéÑ¢dª´( ã´ˆéTôH@Æ©ëŠgqz´(™*- È8-b:=q2uòj©qz´(™*- È8-b:=qêºbã™dœ-J¦J€@‹2N‹˜NE€@dœL¼Zêdœ-J¦J€@‹2N‹˜NE€@dœº®Øx&§G‹’© Т€ŒÓ"¦S Ð#'S'¯–:§G‹’© Т€ŒÓ"¦S Ð#§®+6žI@ÆéÑ¢dª´( ã´ˆéTôH@ÆÉÔÉ«¥N@ÆéÑ¢dª´( ã´ˆéTôH@Æ©ëŠgqz´(™*- È8-b:=q2uòj©qz´(™*- È8-b:=qêºbã™dœ-J¦J€@‹2N‹˜NE€@dœL¼Zêdœ-J¦J€@‹2N‹˜NE€@dœº®Øx&§G‹’© Т€ŒÓ"¦S Ð#'S'¯–:§G‹’© Т€ŒÓ"¦S Ð#§®+6žI@ÆéÑ¢dª´( ã´ˆéTôH@ÆÉÔÉ«¥N@ÆéÑ¢dª´( ã´ˆéTôH@Æ©ëŠgqz´(™*- È8-b:=q2uòj©qz´(™*- È8-b:=qêºbã™dœ-J¦J€@‹2N‹˜NE€@dœL¼Zêdœ-J¦J€@‹2N‹˜NE€@dœº®Øx&§G‹’© Т€ŒÓ"¦S Ð#'S'¯–:§G‹’© Т€ŒÓ"¦S Ð#§®+6žI@ÆéÑ¢dª´( ã´ˆéTôH@ÆÉÔÉ«¥N@ÆéÑ¢dª´( ã´ˆéTôH@Æ©ëŠgqz´(™*- È8-b:=q2uòj©qz´(™*- È8-b:=qêºbã™dœ-J¦J€@‹2N‹˜NE€@dœL¼Zêdœ-J¦J€@‹2N‹˜NE€@dœº®Øx&§G‹’© Т€ŒÓ"¦S Ð#'S'¯–:§G‹’© Т€ŒÓ"¦S Ð#§®+6žI@ÆéÑ¢dª´( ã´ˆéTôH@ÆÉÔÉ«¥N@ÆéÑ¢dª´( ã´ˆéTôH@Æ©ëŠgqz´(™*- È8-b:=q2uòj©qz´(™*- È8-b:=qêºbã™dœ-J¦J€@‹2N‹˜NE€@dœL¼Zêdœ-J¦J€@‹2N‹˜NE€@dœº®Øx&§G‹’© Т€ŒÓ"¦S Ð#'S'¯–:§G‹’© Т€ŒÓ"¦S Ð#§®+6žI@ÆéÑ¢dª,E ¾­ß|óÍ?üpq’ÑŒs×]w}ÿûß_ÊÉÝ—}q2uòj©qú²"™'KøÚ×¾¶Ùf›}ó›ß,Î3šq^ÿú×ï°ÃK<¿» @ 2N]Wl<“€ŒÓ‹åÈ$ Xº€Œ³tCg @ €Œ“©“WK€Œ“`±R q¢äÒ È8u]±ñL2Nú¥L2ޝ„€Œ“©“WK€Œc¹#@` 2Î@.´2 ˜. ãÔuÅÆç(þ³råÊÃ?|õêÕO<ñÄÄ™<õÔSgŸ}öªU«8à€ƒ:è–[n™xX1(ãL_ÜJ€@'Í¥TKq¦4Ænš‹Àúõë÷Úk¯x ýºë®Ûo¿ý"ÎŒÍä™gžY±bÅUW]UŒŸvÚiŸÿüçÇŽÝ•q–²J¸/=qzt±L•åqF;aÛ]X³fÍqÇWÌ$²Läo¼qlbñ×þê¯þªüÇüÇøJ.w«2Îò­!ÎL€@§dœN]“!@`^2Nµ62_½÷ÞûòË//çpôÑGŸxâ‰ån±ƒgœqÆØà”]g^+ŒÇ%@`Æ2ÎŒÁ=Ýq¦4Ænš½ÀÓO?½óÎ;_ýõåCŸúñSãsÊÝbã½ï}ïy¿ùïÃþðé§Ÿ~ß}÷0¶+ãtsý1+ZqZ'uBú( ãŒ5Ãvç+ðä“OFÆýx½&>U`lV»ï¾ûn»ívõÕWÿò—¿¼óÎ;㥟›nºiì˜Ñ]§«“9 °ghîB€@>g´¶=w¾Ž¿¤³ï¾û–³=ùä“=öØr·º!ãä[»TD€ÀDg"‹A†& ãTûa#óØgŸ}F'>ºúû8øÀŽ:ê¨ržW^ye¼¬PPŽŒmÈ8C[ÙÔK`°2Î`/½Â qÆša»sˆ‚ÞäçªÅ_Ɖ(TN5îrÌ1Ç”»Õ gôYo›Ä2Nâ‹«4. ãTûa#óýû8ëÖ­Ûÿýã l1¥øÅœµk×s{øá‡ãWr¾ùÍoÆn| ¿óï¼õÖ[§L[ÆYøšàHz- ãôúò™<m È8Sc7ÍKàî»ï^¹re|œÚêÕ«7lØPL#þnN¼^SNéÇ?þqsÈ!‡Ä/ãÜqÇ¿þõ¯Ë›ª2N[+†ó Ðq§ãÈô˜€ŒSí‡äqf³žxæ. ãÌý˜]qòõó*ª È8]XmÌÈ83@öt_@Æ©öÃFò È8Ý_‹ÌVdœV„¾ È8ùúyUdœ¾¯TæO€ÀdœB9ŒÜ2Nµ6’O@ÆÉ½Ž©ŽR@Æ))l 0d'_?¯¢ª€Œ3äUNí% ã êr+–:§ÚÉ' ãÔ­Æ H& ã$» Ê!@`q2N¾~^EUgqëƒ{ Ð;§w—Ì„ X§ÚÉ' ã,ÇêáœtP@ÆéàE1%f/ ãäëçUTqf¿¶xDæ" ã̅݃ Ð5§ÚÉ' ãtmå1–I@ÆY&X§%@ _2N¾~^EU§_ë’Ù °hgÑtîH€@&§ÚÉ' ãdZµÔB€Àg ޛހŒ“¯ŸWQU@ÆΚ¦Rqþ | §ÚÉ' ãXñˆ€Œ3 ­L¦ È8ùúyUdœéë€[ H# 㤹” !@`)2Nµ6’O@ÆYÊ*á¾ôH@ÆéÑÅ2U–O@ÆÉ×Ï«¨* ã,ßâÌtJ@ÆéÔå0æ% ãTûa#ùdœy­0— È83÷ptS@ÆÉ×Ï«¨* ãtsý1+ZqZ'uBú( ãTûa#ùdœ>®NæL€À"dœE ¹ ùdœ|ý¼Šª2N¾µKELq&²$@`h2Nµ6’O@ÆÚʦ^ƒq{éN€À¨€Œ“¯ŸWQU@Æ}ÖÛ&@ ±€Œ“øâ*… È8Õ~ØH>gák‚# èµ€ŒÓëËgò´% ãäëçUTqÚZ1œ‡Ž È8¿@¦G€Àldœj?l$Ÿ€Œ3›õÄ£ 0wgî—Àè‚€Œ“¯ŸWQU@ÆéÂjcÌ@@Æ™²‡ @ û2Nµ6’O@ÆéþZd†´" ã´Âè$ô]@ÆÉ×Ï«¨* ãô}¥2( ã,Êaäqªý°‘|2NîuLu”2NIaƒ! È8ùúyUdœ!¯rj'0(gP—[±Ô È8Õ~ØH>§n0N€@2'ÙU‹qòõó*ª È8‹[Ü‹Þ È8½»d&L€ÀrÈ8Õ~ØH>g9Vç$@ ƒ2N/Š) 0{'_?¯¢ª€Œ3ûµÅ# 0g.ì”® È8Õ~ØH>§k+ù °L2Î2Á:-ýqòõó*ª È8ýZ—Ì–E È8‹¦sG2 È8Õ~ØH>'Óª¥¦È8SpÜD€Àpdœ|ý¼Šª2ÎpÖ4•¸€Œ3ð/å PÈ8Õ~ØH>ÇŠG€À@dœ\he 0]@ÆÉ×Ï«¨* ãL_ÜJ€@'Í¥TKqªý°‘|2ÎRV ÷%@ G2N.–© °|2N¾~^EUgùÖg&@ S2N§.‡É 0/§ÚÉ' ãÌk…ñ¸ÌX@Æ™1¸‡#@ ›2N¾~^EU§›ëY к€ŒÓ:© ÐG§ÚÉ' ãôqu2g! ã,Í]È' ãäëçUTqò­]*"@`¢€Œ3‘Å Cqªý°‘|2ÎÐV6õ¬€Œ3ØK¯pFdœ|ý¼Šª2Îè³Þ6‰dœÄWi,\@Æ©öÃFò È8 _I€@¯dœ^_>“'@ -'_?¯¢ª€ŒÓÖŠá<t\@Æéø2=f# ãTûa#ùdœÙ¬'…¹ È8s¿&@€@dœ|ý¼Šª2NVs @`2Î =Ýqªý°‘|2N÷×"3$@ §F'!@ ï2N¾~^EU§ï+•ù °@gP#@ ·€ŒSí‡äqr¯cª#@ qJ  Y@ÆÉ×Ï«¨* ã y•S;A È8ƒºÜŠ%@ N@Æ©öÃFò È8u+€q’ È8É.¨rXœ€Œ“¯ŸWQU@ÆYÜúà^ôN@ÆéÝ%3a–C@Æ©öÃFò È8˱z8'q:xQL‰Ù È8ùúyUdœÙ¯-‘¹È8sa÷ tM@Æ©öÃFò È8][ẏeq– Öi è—€Œ“¯ŸWQU@Æé׺d¶,Z@ÆY4; I@Æ©öÃFò È8™V-µ 0E@Æ™‚ã&†# ãäëçUTq†³¦©”ÀÀdœ(ŸB@Æ©öÃFò È8V<" ã äB+“é2N¾~^EUgú:àVÒÈ8i.¥BXŠ€ŒSí‡äq–²J¸/=qzt±L•åqòõó*ª È8Ë·†83q:u9L†y È8Õ~ØH>g^+ŒÇ%@`Æ2ÎŒÁ=Ýqòõó*ª È8Ý\ÌŠÖdœÖI> È8Õ~ØH>§«“9 °ghîB€@>'_?¯¢ª€Œ“oíRdœ‰, š€ŒSí‡äq†¶²©—À`dœÁ^z… 0* ãäëçUTqFŸõ¶ H, ã$¾¸J#@`á2Nµ6’O@ÆYøšàHz- ãôúò™<m È8ùúyUdœ¶V ç!@ ã2NÇ/é 0§ÚÉ' ãÌf=ñ(Ì]@Æ™û%0º ãäëçUTqº°Ú˜3qf€ì!è¾€ŒSí‡äqº¿™!­È8­0: }qòõó*ª È8}_©ÌŸ È8 „r¹dœj?l$Ÿ€Œ“{S¥€ŒSRØ @`È2N¾~^EUgÈ«œÚ J@ÆÔåV,u2Nµ6’O@Æ©[Œ L@ÆIvA•C€Àâdœ|ý¼Šª2ÎâÖ÷"@ w2Nï.™  °2Nµ6’O@ÆYŽÕÃ9 è €ŒÓÁ‹bJÌ^@ÆÉ×Ï«¨* ãÌ~mñˆÌE@Æ™ »%@ k2Nµ6’O@ÆéÚÊc>,“€Œ³L°NK€@¿dœ|ý¼Šª2N¿Ö%³%@`Ñ2΢éÜ‘L2Nµ6’O@ÆÉ´j©…)2Î7 0'_?¯¢ª€Œ3œ5M¥. ã ü @ù2Nµ6’O@Ʊâ 0g Z™Lqòõó*ª È8Ó×· F@ÆIs)B€ÀRdœj?l$Ÿ€Œ³”UÂ} è‘€ŒÓ£‹eª,Ÿ€Œ“¯ŸOPÑ]wݵråÊÃ?|õêÕO<ñĔоûÝïî¼óÎ7ÜpÔcâ&gùÖg&@ S2N§.‡É 0/gzoìÖÙ ¬_¿~¯½özà⡯»îºýöÛï©§žš8ú§:è ƒ"ã|ãߘx@9(ãÌk…ñ¸ÌX@Æ™1¸‡#@ ›2NÙÛèˆÀš5kŽ;î¸b2Ï<óLäo¼qâÜÎ=÷ÜuëÖÉ8Ý\[ÌŠ¹È8sa÷ tM@Æ™Ø<œ£ÀÞ{ï}ùå——8úè£O<ñÄr·ÜøéOïg‹]§k«Šù 0GgŽøšîÈ8eÏl£ O?ýtd–믿¾œÌ©?5~1§Ü-6âõüÙÏ~»2NwÖ3!@`î2ÎÜ/  Ðg¬y¶;_'Ÿ|22Ë-·ÜRNãŒ3Î8à€ÊÝbãꫯ>ï¼óŠm§ +‰9 Ч#Â4˜¯€Œ3Ö<Û¯ÀB^ÇÙ°aÃX~AdŸ«6ßeÄ£ Ч;×ÂL˜£€Œ3ß–Þ£WöÙgŸÑßÇYµjÕØïãD¢‰Sûèÿÿ_dœ÷½ï}±wï½÷VÏVŒø\µ9.2šY È8³ÔöXtV@Æ©ëŠÏKà´ÓN[àçª3ô^µÎ./&F€ÀìdœÙ›{D:( ãÌ«“÷¸u£'>zÿý÷7°ÅÁñ‹9k×®­ÞË{Õ:¸°˜³8餓¶ÝvÛâ˜q>ýéOo³Í6³œ¤Ç"@€À,dœjÏldîwß}w|.t|rÚêÕ«ã·oŠùÄß͉—xFçvÉ%—¬X±"2Nä Ã;lô¦±mïU›åªâ±˜±@,˜Ï}îs‹]`Ɖ—ËŸõ¬gÍxžŽ3qÆša»)dœ™-)ˆÙ È8³7÷ˆt\@ÆIÙÒ+jL@ÆéøBdz,E@ÆYŠžû R@Æk†í¦qR._Š"@ q|% @`L@ÆIÙÒ+jL@Æ{âÛ%@ “€Œ“éjª…Vdœ±fØnJ§•åÂI覀ŒÓÍëbVÌQ@ÆIÙÒ+jL@Æ™ã"ã¡ Xng¹…ŸÞ È8cͰݔ2Nï–&&@`á2έI€À@dœ”-½¢Ædœ,hÊ$0Lg˜×]ÕLqÆša»)dœ)‹€›軀ŒÓ÷+hþ´. ã¤lé5& ã´¾t8!Ýqºs-Ì„ŽÈ8cͰݔ2NGÓ @`9dœåPuNz- ã¤lé5& ãôz™2y¦ È8Ó}ÜJ€Àdœ±fØnJg€‹›’ G@ÆεV) qR¶ôŠq¸ 8Œ> È8}¼jæL€À² È8cͰݔ2β.#NN€À|dœùú{t:( ã¤lé5& ãtpñ1%ÚqÚ’tÒÈ8cͰݔ2Nš%K!Tdœª‰. ã¤lé5& ã |¡S>Ü2Nîë«:! ãŒ5ÃvS È8‹XÜ…¾È8}¹RæI€ÀÌdœ”-½¢Ædœ™-)ˆÙ È8³7÷ˆt\@Æk†í¦q:¾™Kq–¢ç¾¤qR¶ôŠqR._Š"@ q|% @`L@Æk†í¦qÆžøv È$ ãdºšj!@ 'eK¯¨1§•åÂI覀ŒÓÍëbVÌQ@Æk†í¦qæ¸Èxh–[@ÆYnaç'@ w2NÊ–^Qc2Nï–&&@`á2έI€À@dœ±fØnJg š2 S@ÆæuW5Sdœ”-½¢Ædœ)‹€›軀ŒÓ÷+hþ´. ãŒ5ÃvS È8­/NH€@wdœî\ 3!@ #2NÊ–^Qc2NGÓ @`9dœåPuNz- ãŒ5ÃvS È8½^¦Lžé2Ît· 0@'eK¯¨1g€‹›’ G@ÆεV) qÆša»)dœ.#@ 2N¯š9 °¬2NÊ–^Qc2β.#NN€À|dœùú{t:( ãŒ5ÃvS È8\|L‰¶dœ¶$‡42NÊ–^Qc2Nš%K!Tdœª‰. ãŒ5ÃvS È8_è”O ·€Œ“ûúªŽEÈ8)[zE È8‹XÜ…¾È8}¹RæI€ÀÌdœ±fØnJgfKŠ"@`ö2ÎìÍ="qR¶ôŠq:¾™Kq–¢ç¾¤qÆša»)dœ”Ë—¢(d_ qR¶ôŠqÆžøv È$ ãdºšj!@ g¬¶›R@Æie¹pº) ãtóº˜sqR¶ôŠqæ¸Èxh–[@ÆYnaç'@ w2ÎX3l7¥€ŒÓ»¥É„ X¸€Œ³p+G 0'eK¯¨1g š2 S@ÆæuW5Sdœ±fØnJgÊ"à&ú. ãôý š?­ È8)[zE È8­/NH€@wdœî\ 3!@ #2ÎX3l7¥€ŒÓ‘Ç4Xg9T“^ È8)[zE È8½^¦Lžé2Ît· 0@g¬¶›R@Æàâ¦dÃq†s­UJ€Àdœ”-½¢Ædœ.#@ 2N¯š9 °¬2ÎX3l7¥€Œ³¬Ëˆ“ 0_g¾þ È8)[zE È8\|L‰¶dœ¶$‡42ÎX3l7¥€Œ“fÉRU§jb„ È8)[zE È8_è”O ·€Œ“ûúªŽEÈ8cͰݔ2Î"w!@ /2N_®”y 03'eK¯¨1gfKŠ"@`ö2ÎìÍ="qÆša»)dœŽ/D¦G€ÀRdœ¥è¹/)dœ”-½¢Ædœ”Ë—¢(d_ qÆša»)dœ±'¾]2 È8™®¦ZhE@ÆIÙÒ+jL@Æie¹pº) ãtóº˜sqÆša»)dœ9.2šåq–[Øù 而“²¥WÔ˜€ŒÓ»¥É„ X¸€Œ³p+G 0g¬¶›R@ÆÈ‚¦LÃ8æ˜cN9唢Þ%fœ{ï½÷íoû÷¾÷½áè©”ô2NÊ–^Qc2Nú¥L†&ðêW¿úMozSQõ3η¿ýíÍ6Ûìšk®š¡z H, ãŒ5ÃvS È8‰1¥¦€Œ3Ìë®j( ã¤lé5& ã,pAp}qúr¥Ì“¹È8cͰݔ2Î\–J€Àò È8ËgëÌ$qR¶ôŠq,VJ @`T@ÆÕ°M€1g¬¶›R@Æ{âÛ%@ ï2N߯ ù °¬2NÊ–^Qc2β.#NN€ÀìdœÙ›{Dz$ ãŒ5ÃvS È8=Z”L•…È8 Qr ƒqR¶ôŠq»Ä)œ@V'ë•U­È8cͰݔ2N+Ë…“ Ч;×ÂLè €Œ“²¥WÔ˜€ŒÓÁÅÇ”XŠ€Œ³=÷%@ ½€Œ3Ö ÛM) ã¤_ÊH`h2ÎЮ¸z h$ ã¤lé5& ã4ZL€@÷dœî_#3$@`Ž2ÎX3l7¥€Œ3ÇEÆC °2Îr¨:'idœ”-½¢Ædœ4K–B(d_ ˜" ãŒ5ÃvS È8S7 ÐG§WÍœ ˜™€Œ“²¥WÔ˜€Œ3³%Å 0g6Î…ž È8cͰݔ2NO(Ó&@ N@Æ©“1N€qR¶ôŠq,w$q’]På Ю€Œ3Ö ÛM) ã´»n8sqæ~ L€. È8)[zE È8]^…ÌEÈ8‹@s†# ãŒ5ÃvS È8ÃYÓTJ` 2Î@.´2 Xœ€Œ“²¥WÔ˜€Œ³¸õÁ½謀ŒÓÙKcbtA@Æk†í¦qº°Ú˜- È8-b:ùdœ”-½¢Ædœ|k—Š \@Æø€ò ˜. ãŒ5ÃvS È8Ó×· Ð;§w—Ì„ ˜¥€Œ“²¥WÔ˜€Œ3ËUÅc 0gÈ‚þ È8cͰݔ2N×(3'@`¢€Œ3‘Å  'eK¯¨1ÇŠG€@2'ÙUí È8cͰݔ2N»ë†³ 0wgî—Àè²€Œ“²¥WÔ˜€ŒÓåUÈÜX„€Œ³4w!@`82ÎX3l·#wÝu×Ê•+?üðÕ«W?ñÄÕYÅÇ{ìAÇ\xá…>úhõ˜rDÆΚ¦Rqr¡•I€Àâdœ² ¶Ñõë×ïµ×^<ð@Léºë®Ûo¿ýžzꩱéí¿ÿþ—\rɯýë§Ÿ~úÌ3Ï<äCÆÝ•q·>¸q:{iLŒ.È8£°íެY³æ¸ãŽ+&óÌ3ÏDÞ¹ñÆÇævâ‰'þÓ?ýS1ø³ŸýlçwþÑ~4vL¹+ãtaµ1ZqZÄt*ò È8el£;{ï½÷å—_^Îç裎DSîV7ž|òÉÈ8·ß~{õ¦bDÆÉ·v©ˆÀÀdœ(Ÿé2N]Wl|^ñÞ³,×_}9S?~jüÒM¹[ݸõÖ[÷ØcêûÙÊ#eœéë€[ 而ӻKfÂÌR@Æ)Û`(^”¹å–[ÊùœqÆp@¹;¶ñË_þ2~ç†nÝ•qf¹ªx,f ãÌÙC Ð_g´¶Ý¦¯ãœsÎ9§vÚô™Ë8ý]£Ìœ‰2ÎDƒ(dœé½±[ç"°Ï>ûŒþ>ΪU«ê~çÚk¯—þÕ¯~5}ž2Žd2N² ªÚq¦÷Æn‹@¼.³ÉÏU‹‰ÝtÓMGyd¼îÛ?þøÝwß]7[§ÝuÃÙ˜‹À?øÁø]Åâ¡—/ãÄ•®¸âйèA  Ж€ŒSן£ÀèßÇY·n]ü)œ"ÈÄ/æ¬]»¶˜Øw¿ûÝ÷¼ç=÷ÜsÏO~ó_ü‹.º¨nÎ2N[+†ó 0GÍ6Ûìä“O.&°|çùÏ~„©9–é¡  °t§®+6>_xQfåÊ•ñqjñV´ 6“‰¿›SþêM¼Ÿ->~mô¿‹/¾¸nÎ2ÎÒ× g @`î2ÎÜ/  Ч®+6žI@ÆéËŠdžLq¦à¸‰£2N¦N^-u2Îè³Þ6=qzzáL›Ù È8u]±ñL2Îì×H€@ë2Në¤NH€@V'S'¯–:'ë ¦.ƒqu¹K€ÀRdœº®Øx&g)«„û Ч#Â4è¾€Œ“©“WK€ŒÓýµÈ ؤ€Œ³I" @ qêºbã™d+ dœQ ÌF@ÆÉÔÉ«¥N@Æ™ÍzâQXVgYyœL2N]Wl<“€Œ“iÕR Á È8ƒ½ô '@ ©€Œ“©“WK€ŒÓtep<q:xQL‰n È8u]±ñL2N7׳"@ ‘€ŒÓˆËÁ Y@ÆÉÔÉ«¥N@Æò*§vidœ4—R!,·€ŒS×Ï$ ã,÷JâüÌ@@Æ™²‡ @ ‡€Œ“©“WK€Œ“c½R È8ÿP> qêºbã™dœ…¯ Ž$@ ³2Ng/‰ Ð5'S'¯–:§k+ù °ghîB€À0dœº®Øx&g˜ë›ª $q’]På °|2N¦N^-u2Îò­!ÎL€ÀÌdœ™Q{ ú. ãÔuÅÆ3 È8}_©ÌŸq| @`2N¦N^-u2· Ðe§ËWÇÜ蔀ŒS×Ï$ ãtjÙ1(pï½÷žqÆ>ø`qüì3ε×^{饗.p¶#@€@wdœL¼Zêdœî¬9fB€ÀÂ.»ì²È5wÜqGq—Ùgœ]vÙe»í¶[ø„I€ŽÈ8u]±ñL2NGÓ @ ‘€ŒÓˆËÁ(dœL¼Zêdœò)oƒ È8=ºX¦J€@§dœº®Øx&§SËŽÉ °@gP#@€À˜€Œ“©“WK€Œ3öÄ·K€@/dœ^\&“$@ ƒ2N]Wl<“€ŒÓÁÅÇ”ؤ€Œ³I" @`¢€Œ“©“WK€Œ3ñéoŽ È8¿@¦G€@gdœº®Øx&§³K‰ 0E@Æ™‚ã&Lq2uòj©q¦,n"@ ³2Ng/‰ Ðq§®+6žI@ÆéøBdzLq&²$@€À&dœL¼ZêdœM. @ ƒ2N/Š) Ð §®+6žI@ÆéÅrd’Œ È8c v  °@'S'¯–:g ‚Ã蔀ŒÓ©Ëa2ôH@Æ©ëŠgqz´(™*¥€ŒSRØ @€@#'S'¯–:§Ñ²à`:" ãtäB˜½qêºbã™dœÞ-M&L€@È8¾  °8'S'¯–:gqëƒ{ 0_g¾þþ È8u]±ñL2N×(3'0dgÈW_í,E@ÆÉÔÉ«¥N@ÆYÊ*á¾ÌK@Æ™—¼Ç%@ ï2N]Wl<“€ŒÓ÷•Êü S@ÆæuW5Kq2uòj©q–¾V8³qfoî È! ãÔuÅÆ3 È89Ö+U‚À7¾ñsÏ=·¨´Sç{ßûÞ§>õ© 6 á*¨‘¾ È8™:yµÔ È8}_©ÌŸÀp>ðlµÕVE½Ê8kÖ¬Ùl³Íüñá\ • Ð_§®+6žI@Æéïeæ†& ã 튫—åq2uòj©q–cõpN–C@ÆYUç$@`h2N]Wl<“€Œ3´•M½ú+ ãô÷Ú™9Ýq2uòj©qº³æ˜ Ódœé>n%@€ÀBdœº®Øx&g!«cè‚€ŒÓ…«`ô]@ÆÉÔÉ«¥N@ÆéûJeþ†# ã çZ«”åqêºbã™dœå[Cœ™¥ ì½÷ÞGqDqž^dœûî»ï•¯|åºuë–^»3 @`9dœL¼ZêdœåX=œ“¶¶ÝvÛ=öØ£8[/2Î=÷Ü+çâ‹/nKÀy Ю€ŒS×Ï$ ã´»n8í È8íz:dœL¼Zêdk]qº|uÌ> È8u]±ñL2NW's&0g8×Z¥ÌF@ÆÉÔÉ«¥N@Æ™ÍzâQXœ€Œ³87÷"@€@€ŒS×Ï$ ãÔ­Æ è‚€ŒÓ…«`dq2uòj©q2­Zj!O@ÆÉwMUD€À|dœº®Øx&g¾ëŒG'@`º€Œ3ÝÇ­h* ãdêäÕR' ã4]O€À² <þøãkÖ¬¹óÎ;‹Gé{ÆùÜç>÷õ¯}YÅœœdœº®Øx&§Ñ²à`–[ࡇŠ¿¡¹víÚâúžq¶Þzëý÷߹ќŸ q2uòj©q¾&8’È83@ö Y@Æ©ëŠgq†¼Ê©@dœ^S"@ “€Œ“©“WK€Œ“iÕR 2N‚‹¨º, ãÔuÅÆ3 È8]^…ÌÀdœ^t% 0K'S'¯–:g–«ŠÇ"@`“2Î&‰@€¥È8u]±ñL2ÎRV ÷%@ u§uR'$@€À¨€Œ“©“WK€Œ3ú¬·M€ÀÜdœ¹_ @ ·€ŒS×Ï$ ãä^ÇTG w2Nï.™  Ð/'S'¯–:§_ë’ÙH/ ã¤¿Ä $@`¾2N]Wl<“€Œ3ßuÆ£ —]vÙ‹^ô¢ûï¿?¶gœ+V¼á opÅ  0_'S'¯–:g¾ëŒG'@ Î;ï¼Í6Ûì¾ûî‹íÄgŸ}öyéK_êŠ @`¾2N]Wl<“€Œ3ßuÆ£ 2Ž/ÌL@ÆÉÔÉ«¥N@ƙْâ¨qêdŒ @ u§®+6žI@Æi}épBš È8MÅO€E È8™:yµÔ È8‹^"Ü‘¶dœ¶$‡›qêºbã™dœM. @`9~üãÿà?(Î<ÀŒóàƒ~ï{ß{â‰'–ÃÖ9  0E@ÆÉÔÉ«¥N@Æ™²¸‰åxÇ;Þ±Í6Ûç`Æ9÷Üsã£äŠË^>dg&@€@U@Æ©ëŠgqªÏ}#Ì@@Æ‘qfðeæ!¨ È8™:yµÔ È8Õç¾f ãÈ83ø2óTdœº®Øx&§úÜ7B€À dg_f‚ª€Œ“©“WK€ŒS}î!@`2ŽŒ3ƒ/3A€@UàÓŸþô×¾öµèëšCãÈ8Õç¾½8å”Sþâ/þ¢S8I§×ç /Ün»í6lØ0ñâ$@ Ë{î¹§Œ“ ‡WÂtnfœÇ<ú·ø`Õb‰xÅ+^±×^{uy¹07³8øàƒ·ÜrËM>zÄGlò°Ù ãt3ãÜ}÷ݯýëo»í¶é_§~üÔ˜¿Œ3]É­C¸çž{þõ¿þ×_|qQøg>û™uëÖuAƙ޻5‡@w2Îy^—ì–[n‰‰]{íµÓ' ãL÷që0"ãÄÓ§Ì8[o½õþûï_PÄŸÛäf†&ãäèáU1] ;g #þd^¼Ê3³uÀè”Àí·ß?f/¦Ô‹Œsï½÷Æwüx_S1ç½èEï~÷»‹m§Ì8ñžØ>ûì³ ™—½ìes|åzç±Ç‹ŸPýìg?+æï_ƒˆW3£-yòÉ'£ê)gŸ}öyéK_ÚgzoìÖ½Ë8øÀ¶Új«Ž¬¦A`Æ/ùËwÛm·âAG3N¼±s¿ýö»ï¾ûªó™ïë82ÎèrG›œÑ¿Ú—Œ¿§|üñÇ_c£¯ãÜu×]‘Ñ.½ôÒê—ŸéÖ¬Y_ÿÅO_eœ½±*rŒfœŸþô§ñ–‰y-G |GÆ™×ò¸]¨Ë8W^ye|“Wyª“”qžûÜç,ñ;¶¡ôÍo~³Ø}Îsžï+¶ã7PvØa‡bû¸ãŽ{Ö³žUlûÛߎ»\sÍ5ÅîóŸÿü~ðƒÅö.»ì¿t_l/¢ÉécÆÙi§¶ß~û¢d§pð/E<ýç‚vÿý÷?òÈ#ÅC{'G¯Šé£g‹-¶˜ãï&Ë8sYôÎl2Nüt7~Æ[|=Œeœx{Þá‡^Ü´À×qF3·?üá]wÝu™¾Òœ–À¼âÖøÐÈâÑeœ|½±ŠrÌ7ã\tÑEåo°.â½j—]vYôwÜqǼV9K`9âSÈâ »x‡Òâ2Îæ›o~ 's“qzýû8sÏ8Ï{Þó;ì°âki'> .ûrfñ(Ê8ñáÉŸøÄ'Љýð‡?Œy‹V¡ªµ'>¡—q–)ãDëgŽ:Uý㮣Ž:ª?Çyæ™gV™22³ŒóßdƉ¿r{ÓM7M™íô›âO‘^{íµm½ (>"ûØcþˆní…ÀØGÇ/qÎÍ8ñÎÒxíubu2ÎÂ{cGæ¨Ë8+V¬ˆošÅÓ¤/çmo{[ù»ŸàÓeœé>=º5þšI´RÑœsŽ×GN?ýôFó7J}ë[ß*îïzŠ÷>5ºûèÁqª˜ÌC=ƒ]Î8ÑÆ>3?ãŒ3Ê\3úô¸µL|–É8!Ó莾Y%Úþ¸{¼ÌQøÇ/°Ä¯±Û£¿3%ãÄŸ­‰_–)î2ÚäD^xÿûßÿw÷wÅMñZ[üÂb{ôßNeœý÷ß?>Œntz¶ÇžþŸúÔ§Ê¥`çùÃ?üÃò#;–øô_à#:lKÏ8ñj{ù*|/2Nüt.~óûßÿ~Á+ãäèÛsW?Ä‹w˜Çݬ^½:~8<±Øø¸ø¥8æÈ#Œí‰Çƒu'~S žÅób´Éiw!j÷uœhÊ7ä/pžñ§áã]ýÅÁ2ÎѺØX“2ձѴã78âYVÜ¥®É‰5^ùÊWÞpà ÓÏÜ—Œ3úç±êžþ2Îìÿè3ND×Xã£ÒНÒÑ&gôë¶'¾}”ø6ZËlžþ£h»cgô»ÿç¿LOÿ>úýÇ”§¿¿3¥1vÓ¼"°ÄÏ÷â‡~1ë®».ž¤O=õÔØdâ/ì½÷ÞwÞygŒÇ¿±O±cÊÝgœº?t¾ÀÅÄaݘÒäÄkW_}õ&§]—qâãÊ‹wÚÄâý¢{,3òè9ã}2Å 71˜8ãÄGzè¡Eá^lj/†Y¾Ž³aÆßþíߎ­-üë^Ç™ÒäŒ~Åv6ãüüç?g\;:Ûb{»í¶‹Ÿ¥Û>úh¼E­Øžòô¯ž¤ùéOïî‹·•»uOÿº»ï…ÀXÆýî¿ÀùË8eëhƒÀrÄw´ø‰tqægžy&òN¼õzìâ™>øàr𠃊ß~-wÇ6dœU«Vë›×q¸Îwÿ°)MÎ;ìz“%Ô59ñBa´²ÅÝÇ2Î+^ñŠxñ´¸i=öØvÛm‹íÄgË-·Œ¥¦(SÆ™}ƉGŒß)ü³fœøæe﯋_rŸùìgŠ’G3N| oôŸÅø”§q@õßøÄŒx”è‹›êžþÕ;é‘€Œ3ú2®×qÆša»]ˆe.¿üòr&G}t¼m¸Ü-6â'«ÑV•ƒñÖú)wÇ6fŸqÞüæ7Ç´‹…q6ïU‹Ÿr=4~]ú%/yIùÉ*£?É‘qzôݪ:Õ/|á ñ²f1>¥ÉY¾Œ³ÕV[•¿Â&ãDÇX<éâ“b»ü`Æø\…xO{q™–ïéŸõ³£G'^ÚØ¡eœ(¹|éjö窫®Ú}÷Ý«‹‘^LÉ8£Ÿª:Ú0ŒÕµL¯ã<øàƒñ3±òsÔÇ´é®÷ªu¹vû"ðôÓOï¼óÎ×_}9áøoH.w‹è¾øÅ/–ƒ\pAŒ”»cM3N¼YîcûØÄßZ}&Æuâw]ã]s£ƒÅölšœÑÇ]ÄȽ»í^,ð¹2NüÞMqA㣫âãwʰZÄïãx'Úìsè|‰Ÿ9°ôŒoô*ßëÕÙ÷ª½Ž3ߌ3ú2n/VE“˜’qFÂo•‰_á½c¹½Lgì#Gʇ‹è¸â?GG&nîsŸ»ä’KŠ›dœ±.×n_"2DƉß-'¯ÑÄo¤–»ÅÆ[ßúÖÑ×zâ‡ñ6’±cÊÝ"ã\¿îç7¬ûþô5>ê#ׯFüÿî¿üìÞ{œ^lwÌ7þxûCŠíKþÃC¯úþÌÚÿTìsä×Ï>ã‡Åö§>qÇ ûV±}ʉߎî½æ?Çîß|åVvUܱ¸i§7wÈ—Û¿ÿâ·¼ñ¯‹í¸{ÜåªËŸ(îÛ?ù;ÅM»í|ÊûÿêÂbû°C¯ØñõGÛg}úž8ìÒ/þ}±ÛÇ{c±}À~çrà¥Åö‘+ÿæu¯ýH±}Þ9÷Åa|þ§Åîkÿø°£XWl¿sŸ³÷ÝëŒò°~ø«ÅöÕÿqÃ꣮¿üÒÇŠÝ8¾,ÍÇ¿{âqÿS1çŒ2¿~íÿ»_½ê±}éÿ¥äý?®=ý®â°O¯ùþ_¯þf±ýÎÿßâ°BiÝWÿÏØŽ‘â¦(äôOÞYl¯=ýîcWÝPlG±qØW®x2v¯¿îÿŽíó?÷“⦓þúæOžz{±ýÙ³þÓª^Wl_þ¥Gã°6F¢®Ïö¾â¦SOº-þ/¶c°,9޻ċ›âTqÂb;"¨ØŽ‡ŽÃb±SŠíòZÄ„cÚÅaQHy]Š’£Ø¸) »”%Kàw ®@+¶ƒ1 ÒØ ÞØ./_àÇ%(‹ñ?ÿÓ#‹íÏžõ·q•¿xÁÅîÿûC˳Å%Ž ]ŒGí{¾mM±UĬŠË#ñ_6ÅMïyÇ9oßãSÅvg.¶£ØØŽ/Âb7¾,㋳؎/×ø¢-¶ãË8‹gAìllÇ—zqS|ñÇS ØŽ'E<5Ší‹Ãþã—ÿØ ¥ØŽ'TqÓÛvýøûWlxÅUñº£ŠíøšŒÃÊgYQlÇ“"ûÚßü—Ø'NlŸqÚÿRÜô¦¿8öЃ/+¶|ßE;¿éøb;žJqØÕÿñÿ[ñâéÛŸ8å.nzë[NþÀÿ¡Ø^ñÁËßø†ÕÅvrø5¯{íG‹íÏ}æGqXù,û“W¯X}Ô׊›Þ±÷Yñ±ƒqS±Ç]âŽÅnœ*NXlÇC”O™xè8¬xÊÄ”b»\åbÂ1íâ.QH”SlGqX±|Eá±].YÁ8ÅaÁhÅv0ÆaÅZ¼±]®?— 8lOÿ8Cqâ^£OÿXRâÌñÝ¡8ÛBžþñ}!ôKýïÅ]°\ Nÿä÷Ž?ö¦büÂóÖÇaŃþÍÕÿÛåºÏÐò‹äÌOý×/žÅqX±b|ýÚÿÛ~á_¾a…y¹zÄwÞøþ[qSXÅv¸‡…dxÛ!\~õ†|W¡¸)¶Ë¥,¾¨JØxæ–ß øÝôé‹ü›wüXyæÙ<ýG¿û>ý§|÷_ÄÓÿ?¡/:À²´A`¾Ë÷:Î 6ûÕf›ý³ÿ  @€r D×'ãÌ·¥÷èUøË†£¯ÑÄïËOü}œøˆ˜ò¾ñZχ>ô¡rwlcôuœâç!þ}îs^_þ$óOÿdåK¶~{õîñc™øQùó–ê9Fâe£Í6Û¶x…"~*Ûåkÿýï¾¹üámü´ÿßlµ[Qr¼n‡¯ÅOøc;~UÜô¢ßßý ö/?¢Ÿ‚þÞsßXŒÇ‹qXñc½ø jl—/ü»—¼ã5¯úPqXüèþw~ûµÅvüP.+_{úíÿfûòç½Ûm{@ü_ƒqS±Ç]ÊŸþÅ©Êõâ!âŠÃâ¡ã°â¹1¥Ø._¢Š —?¼B¢œâ.Q`V¼¨…ÇvùâQ°”¯ÐW w Æ8¬øágðÆvù ݽlÿR©8Ø¿˜@¼ôóßmþêòõŽßý7ì¶Ë©ÅãÆ+_/þ7{Û‡èÊX²Š—®âØ.ß,ñû[îò¦¿ø—WèâõÍ­žÿ–â.ñREV¼ ^‰íòE±øßg‹Ãâ;o|ÿ-¶O>áæ8¬|þ¿Ýìå;þèß½'^¢*‹—°cÎÅv¼hw)_:ñòî8>îU牳Ûqþ¸KýéOÇ™—û#Gz÷²ô OùÈ‘Eœüïÿþïeœ±~ØîÜFÿ>κuëâïAÇØbVñbMùYjc'^úùÅ/~Q7ó%fœx¬ø¯x~}ç;߉Oà\Äs-Ç]f“qF­’qFK–qF5l ÐÑŒ3:¥dœÑ’eœQ·ã¯8}å+_)ÂcÑz•Ý×"EÆ©ëŠÏW >¯,>(,>NmõêÕÑ哉;^â)'Óqä‘GÆ1ñol—ãÕ%fœE<³²Þeù2Nü¿È°U·fœøTÏW½êUåÈTMŒ @`öoyË[ÊÏñ}ôfœøiçñÇku8,ßGÇ"Û^„€ŒSí‡äq±8L¼Ë"2ÎO<ž»øQÌØ§GÆÇåtÒI¨`Æ)k·A€î 0ãŒ^”xéaÇwŒ?xQ ŽþåˆA=öX1~ÞyçÅÛÛî»ï¾Ø?<ÛáVÜ8&þÜX±€,^/+¶ý»D'_?¯¢ª€Œ³Ä…¢¼û"2NyߨË8£7Õm'Ë8ñ½ì]ïzWQl¼ së­·®+Ü8z!0–qâÍÇ_¬+f¾Í6ÛÄŸ®+¶ã—Y¢ÿ/¶ã×y¢ÉW@b7Þ˜Ûñî¯â¦—¿üåñ— Šíƒ>8~¶Ø¾òÊødƒÍn¿ýöbwóÍ7?ᄊíøýÍHÅöGQþy¬v§8ÿ&ÿÍ8£Ë8£³Ù–qªý°‘|2N[뉌ßdã—" Ͼð…ñRT±½×^{½ìe/+¶Ï>ûì8,]ìÞÿý± ±¸iôßâÍÆ£#¶  Ð;)¿7!ã”WSÆ))f¶!ãäëçUTqÚZR¦dœ7½éMÇ{lñ@ñ/}éK«êuœª‰dqÊ+;šq~øáxM¿üq™÷ª•JínÈ8Õ~ØH>§­ucJÆ}ˆøØç»îºkt¤Ø^DƉŸžuÖYwÜqGq†í·ß~§v*¶ãÖŸ÷¼çÛñ‘ñrÉ-·ÜRìÆ›%âc¢‹íN}vt1%ÿ @`}Ï8çŸþ·¾õ­FWªî½j>ø`|RAñ1c'”qÆ@ÚÚ•qòõó*ª È8m­÷ÜsOüe¢ø™8aüÖä)§œòƒü`á'¿ÿò‚¼à‹_üâÂï2v¤Œ3b—è{ÆYlürЊ+Ýñ _øB|`rq—ø…£«®ºªÑÝ\' ãTûa#ùdœº wã2Nï.™  0XfœÁ^ë.ãäëçUTq:¸ø,nJ2ÎâÜÜ‹³qfoîK§ÚÉ' ã”Où¾oÈ8}¿‚æO€Àpdœá\ëV*ãäëçUTq:¸ø,nJñ·N>ùäâ¾>s`q†îE€Ùô.ãÄæì¾ûî·ÝvÛl|<ʲ È8Õ~ØH>gY—‘y<>o­üŒµÎ~®Ú£>zæ™g6úd†yyz\´+Ÿ0sýõ×çììßIÆÇo¶[¸³uA@ÆÉ×Ï«¨* ãtaµYÖ9Ì=ãÄé>üðËGÿè²Víäè‹ÀhƉdÞsÏ=‹?”üÈ#Ä'ÿÇZòò—¿|·Ýv+¶>øà-·Ü²Ø¾òÊ+ã°øØ±bwóÍ7?ᄊíø(³wܱ؎×ú·Øb‹bû†nˆ»Ä¿ÅnŒÇ­Åv÷*¶ý›U@Æ©öÃFò È8YW°²®¹gœr&±!ãŒjØ&@€@ŒfœQgTÃv‹2N¾~^EU§ÅE£›§’qºy]ÌŠ…€Œã+aÆ2Nµ6’O@Æ™ñÂ2û‡“qfoî  °pgáVŽlE@ÆÉ×Ï«¨* ã´²\tù$sÉ8ëÖ­»óÎ;«,Þ«V51B€ÀÀê2Ά ®ºêªø@³ÂÇïã üë¤Åòeœj?l$Ÿ€ŒÓâ¢ÑÍSÝwß}kÖ¬Y¿~}1½g?ûÙÇsL±˜S~fN ÆMÅø-·Ü¿Žá¨Ø}ÞóžF]lÇǵÅâ)¶Oýø©qX|ŽÝ»îº+¶/½ôÒ⦺eœ:ã V .ãŒÌ&ã\qÅ›\ÉÇ&f·w2N¾~^EU§wKÓ'<ߌó¥/}ée/{Ùƒ>¸Ä*ÜiV­ZõÆ7¾q“åÌ&ãlrH ãTûa#ùdœ‹U£æ›qMÕÁ P È8%…% È8ùúyUdœ%.½»»ŒÓ»KfÂÇ—A[2Nµ6’O@ÆikÅèËydœ¾\)ó$@€À¨€Œ3ªa{)2N¾~^EUg)«Dï;šqùÍEKüÌødƒøëØßüæ7ûhbÎè¾ÀxÜqÇó<øàƒ·ÜrËbûÊ+¯Œ|¹ýöÛ‹ÝÍ7ßü„N(¶_óš×ÄÊ\lqÄ[l±E±ÇMå]b¯{ÝëÎ:묉7L) ãTûa#ùdœ”Ë׋’q–èîXVEdœe“÷K@ÆÉ×Ï«¨* ãôk]šÍleœÙ8{,N@ÆYœ›{2Nµ6’O@ƱâUdœª‰tG@ÆéεèãLdœ|ý¼Šª2NW§åžó3έ·ÞzüñÇ?ùä“Ë=ç'@€QuëÖ}êSŸ*Fø¹j£w·=p§ÚÉ' ã |¡›Xþ3ÎÄû$@€Y È8³ÔÎñX2N¾~^EU'ÇzÕncçì³Ï¾é¦›Š‡Øi§¶ß~ûvÎÙ @`Ñc'^ß¹í¶Ûгþ}œEŸßó È8Õ~ØH>'ßÚµôŠxàø|éûï¿¿zªˆ?7ÞxcuÜÌE`ýúõW\qEt­ÕG¿æšk®»îºê¸‘ È8ùúyUdœ/tÊ'@€% ãTûa#ùdœA-kŠ%@€. ãäëçUTq¾Ð)Ÿ”€ŒSí‡äqµ¬)–¸€Œ“¯ŸWQU@ÆøB§| @`P2Nµ6’O@ÆÔ²¦X @`à2N¾~^EUgà ò  @€A È8Õ~ØH>gPËšb  @€ È8ùúyUdœ/tÊ'@€% ãTûa#ùdœA-kŠ%@€. ãäëçUTq¾Ð)Ÿ”€ŒSí‡äqµ¬)–¸€Œ“¯ŸWQU@ÆøB§| @`P2Nµ6’O@ÆÔ²¦X @`à2N¾~^EUgà ò  @€A È8Õ~ØH>gPËšb  @€ ü¿íÝÙ‹ÇðÎD7$Æ-bzã6àƒK.!®Ÿ„(‚ëƒ( >¸€FÅ 7\p#sÅ£("÷{ÓPÎqšáœ‰£ã§Ÿª×êó™ßTWUwWkã ¼ú¼_Ô*ÐÝݽk×®‹/&àM @€[ µ¾ÔýÒÐk­ZB`Àܾ};qn"@€ø|R0µY?„@«À«W¯äiËç¡5 @€ÀÀÈ3<©û¥ØZ-´„ @€ @€ @€ @€ @€ @€ @€ @€ @€è 8uêÔ3f4åþúõë•+WfU¦­[·6®}öìÙ‚ þõ÷´oß¾ÆUÒÚ?~|â°LÛ·o/‡ª‰Æ²Ž?>}úôl]]]<èðhv'P#ðÛo¿Mž<¹wóæÍ+çªZ]^s}þüyY.A C7oÞ¬]»öË/¿l*ßjBnË–-U=0ÂìÞá ØÀ‡Ø»wo¢wÚ´i)i›òMéºpáÂ,ü믿Æ·cÇŽ²Á”)SÖ­[—ÙG1âèÑ£e•¶Zƒ°ª&Ë6:¸råÊСC¯^½šƒ¤¸3fŒïDtâißz´qNŸ>ݺ͑#G†žkkVå:› të6–hCàÞ½{ §Å‹4¨±Sréi;vl*É.ªNØFÖv!Ð/iž¤až˜oª^æ!ÿ¹èWgõûï¿'ΫtŠå¬zúôi5»zõêü±_N^¦L )˯«‰Æ²–,YRúÒß¾}›öNº€:<¦Ý ô$ÐS'Åà/¿üRíõäÉ“\mÏœ9ÓÓA,'Ð{ëׯ߽{·ªÂ5¶qz ¹wïÞ}ûí·å1žË—/ñÅ÷ïßï}޶$ð1´¶q¶mÛöÕW_•s;wî\JÚ7ndɯ¿þ:qâIJjÿþýYõòå˲D‚@{=µqj¢±½ŒìE U`ذa›7o.ËçÌ™3þü2+A oÞÛÆI‡y®§,yM˜0aÍš5eV‚@‡§NJŒ•6NMÈ¥M”-/\¸P嘞ŸT Ÿ!ïðLìNàô¶qr‹|ôèÑ%÷;wî$Ôó°z–äfeY/«²0«²AY"A =~øaéÒ¥yrrÙ²e'OžL'Ruœšhl/#{hÈ _)ÇöìÙS–ÿôïŸòND™• зiãTWÞ´¦wïÞ]½wsëÖ­ÄaJ¿’WÊÃE‹•Y  4µqÞr)ý’˱cÇyŽ¢ä˜jᆠʬOB µ³|ùòt•“ïîîN¨8p KfÍš5wîܲªºÅsþüù²D‚@{)W/]º”}ólÆwß}Wz/k¢±½ŒìE I ¯?¤ˆkì?Ï ¶£i3³úJ ê<”¾ñ?ÿü3Á6jÔ¨¤Ïž=›8,=çÉköìÙiõU¦ŽC ©Srˆ Ñøøñã‚–jabµÌJè_ô%Dß;U•ÉêôZÛ85=çîãôïßôÓͽ—ÑXýÀ\ýGŽ™‹~fk¢ñÓÕpæ•€û8ÕŸãs;™¼ßš¡®>ÜÚ©ž›‰U§úçfâ÷þCMmœšsçú8l_ äIËÿö0UµÇ*£Ö6NÍé]o¼Åã}œ¾úc øãô2+‡´ÁÓ6Ï]ÂÌÖDã€Gó?˜@³j|'ýçÞÇù`ø2š4iÒŠ+Z_ŽÈÍÄ öˇ@_ 4µqjBÎû8}eî8ý+ÐÚÆiÉ*ÃGW'Ù:®ÚÌ™3û÷üå>®]»–áûÊÉ‹ت¿&Ëö:È»`ÆUëÐÐî½hüÚÈ‹/\= ž¡W~þÏÏÕqªqÕþøãÞÖ–êšÚ8Ù¸§«ÆUË÷qª¦ã1㪕Á ês±–ÀÇ#ÐÚÆÉ¹ý$ô†ïãìܹ³œp†X_¿~}f«ïãä†fY%A =¼_ýuU~ftÊÄØªU«Ê¡j¢±l#A Æï㤸ˠ©y€­“Ú—@À7ß|S Q•Ï0mÚ´)¥_Õ¥“:ä«sÕ÷qr5ðE¡UmTmœÆ! kB._ Kÿvîõ$£rn#S»èC‡僞yHcÈ!I46dRÞ¦£)UÍLe€ôê$3L¾ÉX}ˆ9ϪõË™Ët€ ä‰ô\Ð3Ô@FWË h(}›å7ÖDcÙF‚@‡'NœÈ ‘)Ùººº>|ØáÑìN F /t§ÿ<%^®°7n¼yófÙ8WÕêòšZe5ÞZY%A m\FSÍË·?òø÷ß_n[ç€5!—êßßÕÀ©wÛ>; @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€@oþAÖ endstream endobj 8 0 obj 31346 endobj 10 0 obj << /Length 11 0 R /Type /XObject /Subtype /Image /Width 1100 /Height 800 /ColorSpace /DeviceGray /Interpolate true /BitsPerComponent 8 /Filter /FlateDecode >> stream xíÐ  þ©o( 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ ü ,Û! endstream endobj 11 0 obj 3860 endobj 12 0 obj << /Length 13 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >> stream x…UßoÛT>‰oR¤? XG‡ŠÅ¯US[¹­ÆI“¥íJ¥éØ*$ä:7‰©Û鶪O{7ü@ÙH§kk?ì<Ê»øÎí¾kktüqóÝ‹mÇ6°nÆ¶ÂøØ¯±-ümR;`zŠ–¡Êðv x#=\Ó% ëoàYÐÚRÚ±£¥êùÐ#&Á?È>ÌÒ¹áЪþ¢þ©n¨_¨Ôß;j„;¦$}*}+ý(}'}/ýLŠtYº"ý$]•¾‘.9»ï½Ÿ%Ø{¯_aÝŠ]hÕkŸ5'SNÊ{äå”ü¼ü²<°¹_“§ä½ðì öÍ ý½t ³jMµ{-ñ4%ׯTÅ„«tYÛŸ“¦R6ÈÆØô#§v\œå–Šx:žŠ'H‰ï‹OÄÇâ3·ž¼ø^ø&°¦õþ“0::àm,L%È3â:qVEô t›ÐÍ]~ߢI«vÖ6ÊWÙ¯ª¯) |ʸ2]ÕG‡Í4Ïå(6w¸½Â‹£$¾ƒ"ŽèAÞû¾EvÝ mî[D‡ÿÂ;ëVh[¨}íõ¿Ú†ðN|æ3¢‹õº½âç£Hä‘S:°ßûéKâÝt·Ñx€÷UÏ'D;7ÿ®7;_"ÿÑeó?Yqx endstream endobj 13 0 obj 1047 endobj 9 0 obj [ /ICCBased 12 0 R ] endobj 3 0 obj << /Type /Pages /MediaBox [0 0 792.0792 576.0576] /Count 1 /Kids [ 2 0 R ] >> endobj 14 0 obj << /Type /Catalog /Pages 3 0 R /Version /1.4 >> endobj 15 0 obj (Mac OS X 10.7.3 Quartz PDFContext) endobj 16 0 obj (D:20120212024054Z00'00') endobj 1 0 obj << /Producer 15 0 R /CreationDate 16 0 R /ModDate 16 0 R >> endobj xref 0 17 0000000000 65535 f 0000037476 00000 n 0000000175 00000 n 0000037225 00000 n 0000000022 00000 n 0000000157 00000 n 0000000289 00000 n 0000000378 00000 n 0000031923 00000 n 0000037189 00000 n 0000031944 00000 n 0000035997 00000 n 0000036018 00000 n 0000037168 00000 n 0000037318 00000 n 0000037382 00000 n 0000037434 00000 n trailer << /Size 17 /Root 14 0 R /Info 1 0 R /ID [ <7eb12df3c004dab152a273a1401b5115> <7eb12df3c004dab152a273a1401b5115> ] >> startxref 37551 %%EOF pymc-2.2+ds/docs/_images/autocorr.png000066400000000000000000000474131204033704200176330ustar00rootroot00000000000000‰PNG  IHDRL 9÷sBIT|dˆ pHYsaa¨?§i IDATxœìÝ{•õaÿñÏ"««°Z.ÞPÃŽˆt-íŽ"ÖÔ ‰–:’ŒŽc“©IJSqìL¡uÚcĉ&1E°j-Õ†I¢#Æ B6*VYâTuÝÅå÷G~î”/x­»‡ƒ¯×_œç<Ï9ŸUþá=ÏÙS³yóæÍ [ŸJØÞ&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`Pè[élÿ:::²nݺÔÕÕe§vªô€ªñÎ;綠½=ƒ ÊÎ;ï\é9|‚ hݺuYºti¥gT­#Fdß}÷­ô >Á„´ë®»&IRWWWá5Õ£½½=­­­Ýÿ®¢z&| >}þø«nêêê²Ûn»Ux @õy÷ßUTÿÇ ‚ @A0(&Á  ˜¶+­­­9ú裻O:5S§NýÀëV¬X‘¯|å+7nÜ'¾éꫯþP’¿€í›`Âv¥¡¡!·ÝvÛG¾nذa9ï¼óz`Q2~üø|ó›ßì‘×`ûÔ·Òر¼ýöÛ™4iRêëë³jÕªpÀ™4iR¾úÕ¯féÒ¥¹è¢‹òå/9^xa†šóÏ??7ß|s®½öÚ\~ùå™;wnf̘‘uëÖeáÂ…ùõ¯$Y¿~}ÆŒ““N:)‹/ÎÏ~ö³tuuåÙgŸÍ¸qãòµ¯}-›7oÎæÍ›sÑEå·¿ým† –iÓ¦e×]wÍ÷¾÷½üä'?É7¾ñ´¶¶fíÚµùú׿žÓN;-I²víÚüÛ¿ý[^yå•tvvæ„NÈ©§žš–––\vÙeÙo¿ýríµ×fÒ¤I™5kV.¼ðÂ<ðÀyå•W2qâÄŒ;ö=÷þo .ÌUW]•aÆ¥oß¾9ùä“sì±Ç&IÞxãÜxãyöÙg³aƼù曹ꪫ²×^{eñâÅ™={vjjjR[[›³Î:+ÇïÞóÏÿüϹÿþû³xñâ|ûÛßάY³²Ç{däÈ‘Y´hQÖ¬Y“Gy¤ÿ&T·šÍ›7o®ô¶o6lÈâÅ‹s衇f·Ýv{ßsgÍš• ä‡?üa6oÞœù—ÉE]”Õ«WgÔ¨QY¾|yúöí›ãŽ;.uuu¹÷Þ{ó /äÆo̤I“’$ƒ ʺuë’üñ#.555™8qb’¤££#‡vXþû¿ÿ;{î¹gž~úéL:5×_}~øáœqÆY°`Arúé§g„ 3fL’däÈ‘ùÛ¿ýÛ\xá…Ù°aCþôOÿ4=ôPößÿLœ81p@Î?ÿülÚ´)£FÊ-·Ü’C=4³fÍÊüùósíµ×&IÆ×c,XK/½4sçÎÝæÞÒï~÷»ì²Ë.illÌ믿ž/ùË™3gN’äÚk¯Mkkk®¼òÊ$É„ rþùçgذa[üÌ>ø`&OžÜgÆ—Ï|æ3ùá˜Gy$]]]éèèÈé§Ÿž|0|p®»îºüýßÿýÇþ;||x®¿þúîç:è 444$IŽ8âˆ<úè£[¼ÖÉ'Ÿœ$Ù}÷Ýsä‘Gæ¿øE6mÚ”_üâùÜç>—$éÛ·oŽ9æ˜Üzë­[½ÿ»>ÿùÏ'ùc„)ßãýäСCsÏ=÷ä¼óÎËäÉ“óÄOdÍš5I’Ûn»-ù—Ù}îüã|ö³ŸÝêg5jTž|òÉ<ýôÓÝçþÕ_ýUúô铦¦¦yä‘Ù¼ys:è |ðÁI"–|D‚ Ÿ¨ƒ>8‹-Ê—¾ô¥üë¿þk¾øÅ/v?7nܸÜ~ûí™3gN¾øÅ/æä“OÎí·ßžÇ<êõkjjÞ÷ùtÿ¹®®.›6múP¯÷îÇy¶õܶÞóÝ÷Ùu×]óÎ;ï|ððÿï»ßýnÖ¬Y“ýèGùÁ~¤£££ûùmÅ–òý·µgàÀêŽ`Â'ꦛnÊc=–qãÆåÖ[oÍòåË»ƒÀ©§žš{î¹'mmmÙ}÷Ý3nܸÜpà 2dÈ{¾Þ€ÒÞÞžÎÎÎüÇüGN:餼òÊ+yå•W’$O=õT&Ožü¡÷Ýwß}I’¶¶¶,^¼8ãÆKß¾}sÚi§eþüùI’M›6eÁ‚9óÌ3“l;b¼×]$åÞÒË/¿Ü}§ÈÚµk³zõêî×:óÌ3»7$É?ýÓ?å…^Ⱦð…-~æE‹eĈ>|øîàãÙ©¹¹¹¹Ò#ؾ½ýöÛyñÅ3xðàÔÖÖ¾ï¹/¿ür®¾úê´´´äá‡ÎßüÍßäˆ#ŽH’Ô××çî»ïÎ)§œ’ÆÆÆpÀ™:uj.¹ä’ì»ï¾I’‰'æÑGÍ믿ž1cÆdРA™={v,X<0‡~xF•믿><ð@~÷»ßåüóÏO[[[¦Nš¥K—f=öÈ[o½•믿>+W®Ìðáóÿþûçºë®KSSSn¸á†üû¿ÿ{&Nœ˜Q£F%IþìÏþ,¿ýíosÇwä®»îÊW¿úÕ{ì±iiiÉOúÓ,_¾< HKKKî¼óμôÒK9æ˜c2mÚ´,Z´(o¿ývŽ;ö~ö³ŸÝâ¿Ï˜Ûn»-óæÍË‚ ÒÚÚš—_~9_øÂrøá‡gåÊ•¹í¶ÛòàƒæÐCÍç>÷¹ì´ÓN9úè£3cƌ̛7/Ï>ûl&Mš”Aƒ妛nêÞ3`À€444䥗^êþoñâ‹/æÄOì¿À‡ÑÙÙ™µk×f¿ýöË.»ìRé9|~é+è£üÒ×íÙÈ‘#sÇw䀨ôàSÂ/}­^>’çÂe—]–W_}5—_~y^}õÕJÏ`;ç>ÐŽr‡ @os‡Iõr‡ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&…¾•ÀdziÓ¦Üzë­¹óÎ;sÍ5×dðàÁï{~kkknºé¦tvvfçwÎYg•†††Þ UÆ&UhÍš5innÎk¯½–®®®<ýúõ™2eJÆ—)S¦äÔSOÍ”)SòꫯöÂZ¨>‚Izûí·sþùçç„NøPçßwß}4hPFŽ™$9rd˜û'g@ÕLªÐ½÷Þ;›7oþPçÿþ÷¿Ï!‡²Å±ƒ>8---=1ªž`ò)°~ýúÔ××oq¬¾¾>ëׯ¯Ð"ؾ &Ÿmmm©««ÛâX]]]6nÜX¡E°}L>êëëÓÞ޾űöööôïß¿B‹à“sî¹çæî»ï®ô `#˜| 806lØâX[[[ T¡EðÉ™3gNž}öÙJÏv0‚ɧ@SSS–-[¶Å±eË–¥©©©B‹`û&˜ìÊoË™>}zf̘ÑýøÄOÌúõëóè£&I}ôѼöÚk3fL¯î€jÑ·Òøè6mÚ”K/½4o½õV’äÊ+¯Ì Aƒ2qâÄ$IgggjjjºÏ8p`.¹ä’ÜtÓM™={vvÞyç\|ñÅù“?ù“Šì€í`R…úöí›Ë/¿ü=ŸŸ0aÂVdžš‹/¾¸'gÀÃGr ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€BßJàã[²dIfÏž®®®ôë×/gŸ}vüžçß{ï½iiiÉ›o¾™]wÝ5GuTƌӋ‹ :&Uªµµ5Ó¦MKsss†š{ï½7ÍÍ͹ꪫ²óÎ;ouþŠ+2sæÌüà?È!CòüóÏç /̰aÃÒÐÐÐû?lÇ|$§JÍ™3'#FŒÈСC“$cÆŒÉo¼‘… nóüÅ‹gŸ}öÉ!C’$ûï¿öÝwß,Z´¨×6@µLªTKKK9äîÇ}úôÉðáÃÓÒÒ²Íó>úè¬]»6ÿó?ÿ“Í›7gÉ’%Y»vmŽ>úèÞš UÃGrªPggg6nܘúúú-Ž×××gÍš5Û¼¦¡¡!ßÿþ÷3yòättt¤¶¶6W^yeöÞ{ïÞ˜ UÅ&U¨­­-IRWW·ÅñºººîçJO<ñD&Ožœ³Î:+?ýéOsÖYg¥¹¹9O>ùdï€j#˜T¡wï,iooßâx{{ûVw¼ëî»ïÎ!C2zôèì´ÓN9æ˜c²Ï>ûäž{îéñ½Pm“*T[[›úúú­î&Ù°aC¸Íkž|òÉ >|‹c|pžxâ‰Û ÕJ0©RMMMY¶lY÷ã®®®<óÌ3ijjÚæù‡vXZ[[·8ÖÚÚšÃ;¬'g@ULªÔرc³téÒ¬Zµ*I2oÞ¼ôïß?£GN’LŸ>=3fÌè>ÿØcÍÒ¥KóÌ3Ï$I–/_ž¥K—æØcíýñ°ó-9Uª¡¡!\pAfΜ™®®®ôë×/ÍÍÍ©­­MòÇoÒ©©©é>¿©©)çw^~õ«_eÍš5Ùk¯½òÿðùó?ÿóJý°ÝLªXccc·ùÜ„ ¶xܧOŸuÔQ9ꨣzcT5É(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&@ÕxóÍ7óä“Oæ­·ÞzÏsž{î¹üáèÅUÀŽH0ªÆSO=•¿ø‹¿ÈŠ+ÞóœI“&åÛßþv/®vD‚ @A0(&Á Ð·Òøx–,Y’Ù³g§««+ýúõËÙgŸÁƒ¿çù¹å–[òâ‹/æ•W^ImmmN;í´Œ=ºW@up‡IjmmÍ´iÓ2~üøL™2%MMMinnNGGÇ6ÏïêêÊw¾óìµ×^¹è¢‹rõÕWçÀ|ßo€O3Á¤ Í™3'#FŒÈСC“$cÆŒÉo¼‘… nóü… ¦­­-§œrJ÷±¯|å+9á„ze/TÁ¤ µ´´äCé~ܧOŸ ><---Û<ÿ7¿ùM·8¶Ç{d¿ýöëÑP­ü“*ÓÙÙ™7¦¾¾~‹ãõõõY³fÍ6¯Y½zu†š[n¹%Ë–-Ë~ûí—O<1ÇïÉPuÜaReÚÚÚ’$uuu[¯««ë~®´~ýúÌ™3' È%—\’Q£Få{ßû^~øáß ÕH0©2ïÞYÒÞÞ¾Åñööö­î:yWß¾}³Ûn»å¯ÿú¯Ó·oߌ92GqDæÏŸßã{  &U¦¶¶6õõõ[ÝM²aÆ 8p›× 8°ûľkذaY²dIºººzl+T+Á¤ 555eÙ²eÝ»ººòÌ3Ϥ©©i›ç~øáimmÝâØsÏ=—Ã?<}úø+%ÿZ®BcÇŽÍÒ¥K³jÕª$ɼyóÒ¿ÿŒ=:I2}úô̘1£ûü“O>9o¿ývzè¡$É /¼Ç{Ì× À{ð-9U¨¡¡!\pAfΜ™®®®ôë×/ÍÍÍ©­­MòÇoÒ©©©é>È!¹ôÒKsóÍ7çÎ;ïÌ!CòÍo~3#GެÔÛ5Á¤J566¦±±q›ÏM˜0a«ctP¾óïôô,Ø!øH@A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€BßJàãY²dIfÏž®®®ôë×/gŸ}vü×µ´´äŠ+®È¹çž›ã?¾ç‡@r‡IjmmÍ´iÓ2~üøL™2%MMMinnNGGÇû^×ÞÞžÿüÏÿL’ÔÔÔôÆT¨J‚Iš3gNFŒ‘¡C‡&IÆŒ“7Þx# .|ßën»í¶œ|òɽ1ªš`R…ZZZrÈ!‡t?îÓ§O†ž–––÷¼fåÊ•Y±bE>ÿùÏ÷ÆD¨j‚I•éììÌÆS__¿Åñúúú¬_¿~›×tuueæÌ™ùÆ7¾Ñ ê &U¦­­-IRWW·ÅñºººîçJwß}w=ôÐ|æ3Ÿéñ}°#LªÌ»w–´··oq¼½½}«»N’dݺu™7o^Î8ãŒ-ŽoÞ¼¹çF@•óµÂU¦¶¶6õõõ[ÝM²aÆ 8p«óüñÔÔÔä»ßýîÇùË_æÈ™gž™C=´G7@µLªPSSS–-[Öý¸««+Ï<óLþîïþn«s?þøüñ[;óÌ3ó¥/})Çw\OO€ªä#9UhìØ±YºtiV­Z•$™7o^ú÷ïŸÑ£G'I¦OŸž3f¼ïkøHÕàÆoÌI'ôzÿú¯ÿʱÇû ->-ÜaR…rÁdæÌ™éêêJ¿~ýÒÜÜœÚÚÚ$ü&ššš­®›={v~ÿûßwÿù׿þu.»ì²^ÝÅ«¯¾š•+WþŸ^ãõ×_ÏŠ+>¡EÀ§…`R¥ÓØØ¸Íç&L˜°Íã§Ÿ~zN?ýôžœ;É(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ °Ý¸îºëróÍ7÷è{¬^½:ßúÖ·²råÊ} º &ÀvcîܹùÍo~Ó£ïñúë¯ç†nÈš5kzô}€ê&˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`Pî9õC IDATL ‚ @A0(ô­ô>¾%K–döìÙéêêJ¿~ýröÙggðàÁïyî]wÝ•µkצ®®.‡~xŽ;î¸ì³Ï>½¼¶î0©R­­­™6mZÆŸ)S¦¤©©)ÍÍÍéèèØæùÓ§OÏA”+®¸"—\rIÚÚÚ2mÚ´^^ ÕA0©RsæÌɈ#2tèÐ$ɘ1còÆodáÂ…Û<ÿÀÌ)§œ’šššÔÖÖæ¤“NJkkk–/_Þ›³ *&Uª¥¥%‡rH÷ã>}údøðáiiiÙæùÿøÿ˜ºººîÇýû÷O’lذ¡g‡@LªPggg6nܘúúú-Ž×××gýúõê5–/_ž]vÙ%GqDOL€ª&˜T¡¶¶¶$Ù⎑w¿ûÜûÙ´iS~þóŸgüøñÙyç{d#T3Á¤ ½{gI{{ûÇÛÛÛ·ºëd[n¹å–444äøãï‰yPõ“*T[[›úúú­î&Ù°aCø¾×Î;7/½ôRÎ9眞œUM0©RMMMY¶lY÷ã®®®<óÌ3ijjzÏk~øá,Z´(ßúÖ·²ÓN;eÍš5yüñÇ{c.lÓÔ©Sóè£VzF~üãçᇮô `;"˜T©±cÇféÒ¥YµjU’dÞ¼yéß¿F$™>}zf̘Ñ}~KKKfÍš•ÓN;-øÃ²bÅŠ<öØcyê©§*²’?“%K–TzF~ô£eþüù•žlGúVzOCCC.¸à‚Ìœ93]]]éׯ_š››S[[›äߤSSSÓ}þO~ò“´µµeòäÉ[¼ÎgœÑ«» &U¬±±1Û|n„ [<¾þúë{cì|$  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`ôŠÕ«Wçg?ûY6nÜXé)hñâŹÿþû+=¨ ÁèË–-Ë9眓µk×VzÊš9sf®¼òÊJÏ*H0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜€‚`PL ‚ @A0(&Á  ˜ G,Y²$wÜqG¥g|"V®\™[o½5]]]•žôÁè·ß~{.¾øâJÏøD,\¸0çž{nÞyçJOz‰`PL ‚ @A0(&Á  ˜Ÿˆ /¼0×\sM¥gôеk׿ÔSOMKKK¥§=¤o¥;†%K–¤³³³Ò3zEGGGæÏŸŸ×^{­ÒS€â€‚`PL ‚ @A0(&Á  ˜YgggfÍš•U«VUzÊvãÎ;ïÌ#²ŽŽŽœwÞyiii©ô”íÆ”)SòóŸÿ¼Ò3€Oˆ`PL ‚ @A0(&Á  ˜€‚`PL€ôàƒfôèÑyõÕW+=¥j\yå•ùÚ×¾VéÀÇ$˜hãÆY¶lYÞyçJO©«W¯Nkkk¥g“`PL ‚ @A0(&ÀVÖ­[—^x¡Ò3v(7nÌÊ•+ýâ\¨‚ °•ïÿû9óÌ3+=c‡rÿý÷§©©)6l¨ôàCL ‚ @A0(&ÐC~õ«_Uz“`ÛpóÍ7çë_ÿz¥gÀcîܹ9å”SÒÕÕUé)½jþüù•žÀÇ$˜ð©ÑÙÙ™›o¾9+W®ì>6vìØ\pÁ\l¯žþù´´´|¤k®¸âŠ\sÍ5=´¶Ï?ÿ|Î:ë¬<ýôÓúš5kÖdÁ‚=¸ ¨V/¾øbþ_{wE•ÿÿÿ•Ù–$$ÖEÙDD…ù€_tÆ£3èGÜFqg~ ·AP\(ʨ ÂqAÂ&«È"Ⱦ°#ÙC‡’ξu~„t!@’JÂóqŽGnÕíªwßô­ª~wÕ½ÁÁÁZ·n±léÒ¥×|j 4Z6›MPii©$©¸¸Xýë_kÔ)++SYY™Y!hdvîÜ©½{÷šÆUeggk̘1úå—_ŒeÿùÏ´zõj£ºùhòäÉŠ‹‹3–½þúëúòË/MŒªzrssµbÅ eee™ €F¢¤¤Ä¡ûÌì0àºkôèÑ7ͨõùùùJII¹¦[ŸQ?Øl6‡G§»¿ÿýïš7ožÙaÀ éÚµ«æÎkv¨$L7»Ý®•+W*55µV÷S^^^/’+V¬P×®]UTTdv(¸FÓ§O×o~ó³Ã¨³ÏòÆuôèÑZßÕA¨Bqq±222˜Ihà¶oß®!C†èìÙ³5ºÝÖ­[Wù ÒG}¤öíÛ×è>3|úé§jÓ¦M•u:wî¬÷Þ{¯F÷;}út½øâ‹5ºMuÏf³ñH+$&h4Ö®][åàr×cûö튌ŒTRRRn@ݲÙlŠ­ñÁåÊÊÊêÅ$@}Pý!))‰;N€F`üøñúýï_£Û|Å×|òÉ'zõÕWë"<Ô±èÑG­r<ž©S§jæÌ™¯Y¸pa]„W'®µo'''+..®FcÈÉÉÑ®]»jýQ€¯¿þZ³fͪÕ}àæVPP ƒ2(ø5X²d‰^xá³Ã@!a‚öî»ïjêÔ©f‡Qg^z饛f*R4éééúüóÏ\ëׯŸ¾ûî»Úî¢E‹tèÐ!£·ÇÇÇ+++놶ܨš¸N]²d‰8PCÕo6›Mëׯ¿i•lìH˜4Pñññš>}ºžzê)M™2E½zõÒäÉ“U\\|Ùú™™™š2eŠFŽ©)S¦hĈš2eŠÎ;WÇ‘C’¾üòKüðC£üÊ+¯hÔ¨Q5GcWTTtÍc¼ ñ(,,äï 6nܨ¶mÛêôéÓ’¤’’ÝvÛmZºté_óþûï«OŸ>5Grr²ž}öÙ»ãPóH˜4P{öìQTT”Q¶X,ŠˆˆÐž={.[ïÞ½õ%)22òŠõ‚gŸ}Vü±Ùa\¢´´Ôa¬…Çëî»ïfôqÔ©U«Viâĉf‡Q-iiiUÞqµ-99¹AÜN¿uëVýå/1; Üdœgst¾Ö­/rssuß}÷9L3Ü(& PII‰rssåççç°ÜÏÏufff^Sýš”­Ù³g_Ó`ryyyJNN®r$üƒ*99¹&B¬Q}ô‘ºvíj” Çèã¨Sû÷ïwõC\\œ¢££k|Æ ¦½ð ÌQ8qB_ýµÙaà&ã<›ãܹsÕ®];#º<»Ý®Ý»wW9ä@vv¶ÒÒÒ®i»Ë—/×úõëo4<4P®“'Ožlv¸6ÙÙÙZ±b…ú÷ï¯6mÚË÷ï߯ääd=ðÀ—¼æÛo¿U÷îÝî29qâ„öíÛ§‡~¸Êý)55U™™A²Z=_¤ðð>òðh+«Õ¢ÄÄùùE*8¸»¬V‹’“ËT\ì¯èè{dµZtòd¾¾ùf½‚‚º©¨È_V«EK–ìPrr™QÞ¸ñ˜víJ–Å*«Õ¢Ÿ~:ª÷ÞûV;Þ­3gš()©D11›•ŸßL6›¬V‹ŠÕºuùùEÊjµ()©Tîîáºå–;eµZ”šZ®Ü\?EGߣÌL>-%%•*2r ÊË[Û ê¦æÍo5b·XBÕ®]?cÙÙÞŠŠdì7>¾HwËb “ÕjѧŸ~¯;8’“Ë$µR‡wËjµ(-­\gÏz(*jòòšžßF¡Ú¶í'w÷p£ ›6RPP7Y­íÝ›ªÕ«÷ËÓ³¬V‹N*ÔÊ•±*(h®¬,/Y­-^¼]©©åFþôÓQíÞ"—Y­ýòKºV¬Ø#¶JOwUbbE\hÃeËv+!¡HÅŲZ-úùçÚ¾=A®®ïíÀ -_¾[Mš´Ñ™3M”’bׂ?+'ÇW¹¹~²Z-Z¹r¯ŽÏSiiKY­mÝzJ?ÿ|BMš´‘ÕjÑáÃYúþû’ZëìYw>í¢ùó7*+ËËh~دdzd·ËjµhçÎD­[wØhŸãÇs´dÉvÙíÁÊÌôÕjÑ‚›•‘ᦂ‚æ²Z-Z»6Nû÷Ÿ1þ¶{ö¤ê‡.´á¯¿hÑ¢­*) 0ÚpÑ¢mJK+WaaEnØpD{÷¦m¸oŸU+Vì1¶_¤… ·¨  ¹Ñ†ß¿K Å*.ÕjѦMǵcG‚ñù¨lC7·[tæL%'—]Ò†+VìÕÉ“ùµá¯Ú¼ù׋Úðœ¾ÿ~§,–Ped¸)-Múî»MÊÎö6Úpõê_täH¶ÊÊ‚ÎK%…¨}û»dµZ”’b×¹sžŠŠ¤œ_ãsÕ¡Cc?‰‰%jÞüVµly›Ñ¦sæ¬VëÖ=eµZtú´‹RRì²Z-JOw=߇ŠtË-ŽÇ_ßµjÕãü~ËTT [o|¾?HV«E‘‘6KH(VXXoy{w0ú²§g;…†ÞnôÃüüfŠŽ¤Œ 7#ŽÈÈÆûMH(V«V=Ô´iÔùm”ÈÍíÂñ %Å®œ_EE Ò¹sž:}ÚE‰‰%Šˆ ©µ{``µhÑé¢ãAˆÚµ»Ëˆ#+ËËéxP¨î6úLbb‰Z´è¤ÀÀ®Æ{±Ûƒ1ÀØfbb‰:v¼[ùùÍŒÏÕµS/nÃÊþŸP¤6mî—W{ãý{{wPHH/ãý4Wtô=:s¦‰ÒÒ¤ÔÔrED 0>wõå˜ZÙ†]j옚’bWqq€¢¢m˜žîªˆˆ*,laÄqË-Ú01±D>>Ôºõ…6,,l¡èè{”žîªÓ§¥´4)"b€JJm„„ô’¯o„C¶is‡±¼¼¦ŠŠ¨ÌL¥¥IÉÉeŠŒhÿŠÜMÍšE}ÙÕ5LmÛö=߆vegû(*j²³½uú´‹Š1À8‡&&–Èß¿³Ñ†II¥*/o¥ú‡ÌÌŠ6¬<ÅÇ©}û~rs»åüq7WžžíŒãAJJ™JK[*2r Ñ†gÎ4Qdä@ã8\цwÇÌÊãAå1$%Å®¢"£ ÓÒ¤Ó§]9À8%$+4´—||:ïßãÂÂz±W´á =ë®´´r¥¤Ø1ÀhÃøø"‡ãArr™\]ÃÞLjÃfóQtô eey9´aåñ?1±X]äïßùº©©©åÆgírÇÔ´4)#ÃMQQ•ŸßüºŽ©§NjÑ¢­*,l¡ìloY­-]ºCII¥—ŽiÇŽ$ãó±ÿ-_¾[îîáJOwURR©bb6+7×Ïx/Ë—ïѯ¿Ÿí-[~Õ–-ÎK‡Uœ—\]+ÏKåúî»M²Ù¼•›[Ñ/W­Ú§cÇrŒãôöí úé§£ÆgìèQ›–.Ý¡òò çöùó7)3ÓÃ8>®Ys@qq™Æßv×®d­]{ÐhŸ'ò´xñ6•–¶Ô¹sž²Z-Z¸p‹¬V‹Ñ·×¯?¬ØØÓƱ~ïÞ4­\kôõS§*®ŠŠü6¼ÚuêþýéZ¾|<<*ÛðÒëÔeËv+>¾ÈhÃÍ›OjëÖSÆùâàÁ³Z¶l—\]Ô‘á¦ÔÔÊ6ô¹è+VÇ稴´¢ ·m‹×¦MÇŒ6úè£ËÖ/++SJJŠåíí]3A4r«W¯Ö[o½©\«&MšèÌ™3zä‘ßé­·ÞÖwÜ!Izâ‰'Ô·o_ã¶ë÷ß_qqqš={¶$iÓ¦Mš4éU-]ú½š6mª¼¼<ýÏÿüF“&MÒ AɺçŸ^‘‘‘úÛßþ&Iš5k–6mÚdÜ2¼{÷n÷ÿiÞ¼y n%»Ý®!Ckܸhøðá’¤—_~Yú׿þ%Iúꫯ´xñbã‘’¸¸8ýùÏÒœ9sD‡ {@O?ýŒ~ûÛßJ’þïÿþO’4mÚ4IRLLŒ>ÿü3­ZµZRÅÌRcÆ<©>š©Î;Kª˜FsÔ¨QzüñÇ%IS§NÕÙ³g5}útIƒ+¿óÎÛZ·n½,‹¬ÖÓzôÑGõÎ;ïêöÛo—$=Z ÐsÏ='Izï½÷tìØ1}òÉ'’¤Ÿ~Ú ×^{MË—¯l6›|p¤^{íu 0@RÅx<;wÖØ±c%Iü±¶mÛ¦/¿üR’´sçNÿ}÷ݵlÙR¥¥¥:ô^ÿŠqGÙøñãlüßéÓ§õì³ÏhêÔ«[·n’¤Ç{TC†Ü«gžyF’ôÎ;ïèÔ©SÆ Þëׯה)¯kåÊUòòòRVV–Fúš2eªú÷ï/Izê©§Ô£Gw½ôRÅx)3gÎÔ®]»4wî\IÒöíÛôÏþS .”¿€Š‹‹tÿý÷k„ º÷Þ¡’¤?ÿùÏjÓ¦Æ/Iš3ç ­ZµZß}÷$é—_öiìØ±úꫯ&Iº÷Þ{õ—¿üE#GŽ”$ýããäíí£ÊâçÍ›§o¾ùZË–-—$;vLüãsúôÓYŠŒŒ”$ñ?úÃFëÑG•$Mžûì3­[·Vß~;ïº>/7#«õ´ÜÜÜäïùï<Õ¹N­ ååyªbb.Ôc$L¨^½zéèÑ£FÙn·ëĉ3fÌëïØ±ÃaÙÑ£GÕ·oßjï32Ò.oïš…ßÝý ‚ƒoS·nÛó÷Wfæ £|9={†žÿ3TÇ¡C’buÛm¥rssQjj¡¤XµoŸe´³§ç!µ1ʉòò:l”3%ŪK—bµhQ&›­XR¬ÂÃ3:ÞÞGàa”ƒ‚’åáwÑßÒ¢Áƒ[¨{÷r•ŸÆ1VmÚœ1êøúS‹­ŒòÚµirs;`”‹‹s$Å***OÑÑË,–_j5ê4kvR’Œò¶mVY,¿e>îÊÈ(’«víÎ9—ŒrË–Iç%«5KR¬:u*Rpp™ +ÏKg:>>Gåï_f”ƒƒSåî~Ð(çæÚ$Å*::_:T,sq‰UXXºQÇÏï„üü.œ7m:-W×ý]cäJŠUdd®±ÌÕu¿BB.œË›7ÿU®®Îý{÷¦ËÅ%ö¢k|I±êÐÁf,s¾N½ë./¥¦úåcÇ*Û°TžžMdµV¶¡ã5VË–®m“®±RRÎIŠUçÎE ,S^^‰*®±Û0 ÀrQ¦ÈÝýâk,\]Ëóÿ¿|›efV|–o½µPmÚ\þ:µ&äçÛuäHmuˆ„I5lØ0½öÚkJHHPxx¸Ö¯_/___#2{ölY,=ýôÓ’¤ÁƒkÕªUÚ·oŸºwï®}ûö)++KC† 1%þýû÷;”ÇŽ[/GÛÆëÖ­›bbbÌ£Ak×®þþ÷¿› ºï¾ûÌ¡Á«¼KO=´råJµlY‘XqqqÑÙ³gMŽ õ “ªmÛ¶úÛßþ¦/¾øBv»]>>·+º¹¹IªçÄå¢çgüýýõꫯêË/¿ÔÂ… åî'ªyóæ¦ÄïâôlOÇŽM‰5oøðáÆ#/¨...8p ‚ƒƒÍPÏÜyçÆã«¨=zôлᆱ&Mø*ÕÐ5oÞ\}úô1ÊÎßQzyÖµkW‡ék/öâ‹/^²,<<\'N¬í°Ðˆ >\iiirww¿b8\˜õîÝ[½{÷®ƒèn^Mš4ÑâÅ‹ÍP]m0ܸŽ;:üØçáá¡|PAAAW|ÍÔ©SÏ?î !!aàŠ\]]åêêZeI“&ÕQ4—‡‡‡qwuÍËËëªç{\YóæÍ5gΜ*ëp7 Ð0ÑsÀdkÖ¬q(¿öÚkzíµ×LŠИ5J£F2ÊJII11"¨¿H˜7±.]ºSù¡þàùY@máS?Y,Ý~ûíjÑ¢…Ù¡¸ à&öùçŸ;”ǧ¢¢¢Zݧ‹‹‹>ÿüsõèÑ£V÷p=ÞyçÝrË-µºhçÎÆ ^^^—Üq À|$L€FjàÀZ°`ñLr³fÍôÁ(::úН©j°2©"ÙѶm[ùøø\w\...·Ô'Àwˆp•IDAT<ðÀ o#44´Ê»E|}}¯:KäË/¿ì°Ç{Lƒ¾áØT  ‘ QHHˆQöññÑã?~CÛôóóÓÞ½{o44€F-&&憷1lØ0‡r‡Ô¡C‡Þ.€ê³˜@}CÂÀ ä0ÝСCÕ¬Y3³Ã7???=úªã¸¸9‘0`º—^zɡܾ}{ 0À¤hj—···fÏž­ž={š —5iÒ$µlÙÒì0jEXX˜î½÷^£¤3f˜€úŒ„ €zgÔ¨Q v&¾}û*,,ìŠë=<<ôðÃ×aD\›¡C‡V¹>,,Lÿû¿ÿ+//¯:Ѝæ :ôªï*‘0€ô»ßýÎì¨U:uÒôéÓÍjƒ¾8!aà„Grà|úé§ 4; Lãîî®åË—«cÇŽf‡5Š„ €z¯]»vš9s¦Z·nmv(—èÕ«—Ù!`*‹Å¢~ýú™Æe=ýôÓ*))1;  õ^`` {ì1³Ã¸.Í›7W=d±ð$ a Õ­·Þjv×¥ÿþf‡ #aµhРA4hÙapÝ^|ñE³CSð“'€&Nx$@£pÛm·Õú>¼¼¼ôàƒªeË–µ¾/²»ï¾[ÁÁÁµº___ $L.fÉpBÂÀ '$Lœ0pBÂÀ '$Lœ0pBÂÀ '$Lœ0pBÂÀ 'MÌõŸÝn—$š 4,•ߣÊÊÊLŽ׊„ ®ª  @’on Ð@ñtÃãR^^^nv¨ßŠ‹‹uöìYyzzÊÕÕÕìp Á°Ûí*((P@@€ÜÝÝÍ×€„ €}pBÂÀ '$Lœ0pÒÄìP¤¥¥iæÌ™rssÓ¤I“.Y_RR¢¹sç*!!A’Ô¯_? >Ü¡N^^žfÏž­³gÏJ’î¿ÿ~õïß¿öƒ€±cǪE‹Ëúöí«ûî»Ï(W§Ÿ¸`ÿþýZ¸p¡ìv»|||ôÌ3Ï(00Ðì°€zoÁ‚Úµk—|||ŒeÞÞÞ7nœQÞ¼y³~øáIR@@€ž{î9y{{×y¬@}UZZªùóçkùòåúðÃ/9ÿT§­X±BÛ¶m“$…‡‡k̘1jÒ„¯éõ H’6mÚ¤5kÖÈb¹òMG3gΔ‹‹‹¦NªÂÂB?^nnn:t¨QgÚ´iêܹ³ÆŽ«ÌÌL?^>>>êÑ£G]¼  ^kÑ¢Åe“‘«N?P!>>^Ó§O×äÉ“®üQ“'OÖ{ï½'www³Ãê½'Ÿ|R:uºìº½{÷jîܹzûí·åïï¯ÿþ÷¿š6mš¦NZÇQõSzzºf̘¡Ö­[Ën·_²¾:}hÍš5úá‡ôöÛoËÓÓS|ðfΜ©¿þõ¯uùVPÉ$ÉÏÏO“'OVppðe×§§§kÛ¶mzðÁ%Ižžž:t¨–-[fÔ9tèNœ8¡‘#GJ’üýýÕ¯_?‡:®¬:ý À+W®T§N.I2dˆòòò´}ûv“#¾eË–éî»ï–¿¿¿$iĈ:~ü¸>lrd@ýPTT¤—^zI÷ÜsÏe×_­•——kÙ²ezàäéé)I9r¤¶mÛ¦3gÎÔÍ›ÀU‘0$©GUÞúµwï^¹»»«m۶ƲÈÈHY­V%''K’öìÙ£ÐÐPùúú:Ô‰‹‹SQQQ­Å4Õég.سg¢¢¢Œ²ÅbQDD„öìÙcbT@ÃWXX¨C‡)22ÒXæçç§úp^›6m¬òòòKÖU§%''+==Ý¡Nxx¸ÜÜÜ[ûoÕÂ#9¨–ÌÌL‡Dˆ$5mÚÔX¦ÌÌLùùù9Ô©,Ÿ;wN­Zµª›`zª°°Pü±ÒÒÒ¢þýû«sçÎrqq‘T½~ BII‰rss/{ÞIOO7)* aÙ°aƒ,X 777õéÓG}úô‘···233%é²ý«r€+«ª;wN’Œ1+¯õ¤ŠÄ¿¯¯/ý¬!a‚jÉÉÉ1n«TYÎÍͽjœœ&¸é…„„èþûïWûöíuøða}öÙgêÑ£‡F-©zý @…œœIºlŸ©\àÊåãã£^xAÙÙÙŠ‰‰ÑüùóõñÇ_±yxxp>ª¡ª>T¹®²/q«ßH˜4b ,PLLL•uÞxã µoßþªÛòóóSaa¡Ã²Êrå/â—ûÕ¡²Žsvh,®¥Ÿ½ôÒKƲ[o½UC† Ñ’%Kôûßÿ^‹¥Zý @…ÊóÊåú çàê.w¡E‹zì±Ç´~ýzÅÆÆªuëÖ’.ß¿‚‚‚ê4N !ªêUÙ‡*¯í î2á>^%%%êÙ³gÇŒË#a‚j R¿~ý´téRI·Šýøã1b„Q§S§NŠˆˆ0¦@ÍÌÌÔÖ­[ê7«œœ-Z´H’¤3gÎhÓ¦Mºë®»ŒªªÓÏ\0lØ0:tH ’¤õë×Ë××W}ûö592 þÛ·oŸÖ¯_/I*..ÖŠ+äéé©;î¸CRÅô¦[¶l1·^¾|¹"##¹Ã¸çÙr®Ö‡\\\4räH­Y³ÆxtgÙ²eêÛ·¯ë6x\‘KùåæAÂMgçÎZºt©¬V«JKKª{î¹G÷Þ{¯Q§´´TsæÌ1.Lûõë§áÇ;l'??_³fÍ2F}~àt×]wÕÝê©ÜÜ\-[¶L»wï–»»»š6mª;ï¼S}ûö•———Q¯:ý ÀPLLŒìv»|||ôì³Ï·9¸²Í›7kݺu²ÙlòòòR×®]Õ¿…††u¶lÙ¢Õ«WKª$öÙgŸ•···Y!õJii©&M𤂂¥¤¤¨mÛ¶ Ô¸qãŒ:ÕéC+W®ÔÖ­[%UL+> stream x+TT(TÐH-JN-()MÌQ(Ê ˜[é  457Ó3`Nr®‚¾g®¡‚K>Pg '’ endstream endobj 5 0 obj 61 endobj 2 0 obj << /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 792.0792 576.0576] >> endobj 6 0 obj << /ProcSet [ /PDF /ImageB /ImageC /ImageI ] /XObject << /Im1 7 0 R >> >> endobj 7 0 obj << /Length 8 0 R /Type /XObject /Subtype /Image /Width 1100 /Height 800 /Interpolate true /ColorSpace 9 0 R /SMask 10 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream xì ˜Õõ·ûyô3јÄÍ¢11F£FTŒšh\â¾k\"ˆ nà†¸"¢(ˆ‚*‚ ¢à‚¢ê°È¾ƒ(BX”EÙ—?û2 Ô÷ë®™ššž©^«»«o¿óðLª«nݺç­é›óóœ{®eñ@€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ [o½µ±ëçæ›onÔ¨Qa!ÀZ@€ @À Ò7nkž|òɸÏp @€ @ ¬X±ÂíæÍ›¯ºêª­[·:g8€ @€ ¿ú÷ïߺuëü?#‡ @€ à&аaÃ)S¦¸Ïp @€ @ O ,Z´èÆoŒ=ø;v,Y²díÚµø @0€¼>ù~òc»ˆ\…@` ¼òÊ+Ý»w=<ý‘Ê @€@!ÛEä*‚I`÷îÝÿýï—-[{xëÖ­ÓzΜ9?ð@€ `:y}òýäÆv¹ `˜0aƒ>wlŠÇêï\ßf.ù @0›€¼>ù~òãz‰4€@ ´lÙrðàÁq†Æ1{Ã:@€ à&€Æ‰ëÓ °¶lÙríµ×–””Ä!Çý­ç€ ˜M×=¦Ð8fÏcX@€ÜÐ88ð˜—Çý­ç€ ˜M×=¦Ð8fÏcX@€ÜÐ88ð˜—Çý­ç€ ˜M×=¦Ð8fÏcX@€ÜÐ88ð˜—Çý­ç€ ˜M×=¦Ð8fÏcX@€ÜÐ88ð˜—Çý­ç€ ˜M×=¦Ð8fÏcX@€ÜÐ88ð˜—Çý­ç€ ˜M×=¦Ð8fÏcX@€ÜÐ88ð˜—Çý­ç€ ˜M×=¦Ð8fÏcX@€ÜÐ88ð˜—Çý­ç€ ˜M×=¦Ð8fÏcX@€ÜÐ88ð˜—Çý­ç€ ˜M×=¦Ð8fÏcX@€ÜÐ88ð˜—Çý­ç€ ˜M×=¦Ð8fÏcX@€ÜÐ88ð˜—Çý­ç€ ˜M×=¦Ð8fÏcX@€ÜÐ88ð˜—Çý­ç€ ˜M×=¦Ð8fÏcX@€ÜÐ88ð˜—Çý­ç€ ˜M×=¦Ð8fÏcX@€ÜÐ88ð˜—Çý­ç€ ˜M×=¦Ð8fÏcX@€ÜÐ88ð˜—Çý­ç€ ˜M×=¦Ð8fÏcX@€ÜÐ88ð˜—Çý­ç€ ˜M×=¦Ð8fÏcX@€ÜÐ88ð˜—Çý­ç€ ˜M×=¦Ð8fÏcX@€ÜÐ88ð˜—Çý­ç€ ˜M×=¦Ð8fÏcX@€ÜÐ88ð˜—Çý­ç€ ˜M×=¦Ð8fÏcX@€ÜÐ88ð˜—Çý­ç€ ˜M×=¦Ð8fÏcX@€ÜÐ88ð˜—Çý­ç€ ˜M×=¦Ð8fÏcX@€ÜÐ88ð˜—Çý­ç€ ˜M×=¦Ð8fÏcX@€ÜÐ88ð˜—Çý­ç€ ˜M×=¦Ð8fÏcX@€ÜÐ88ð˜—Çý­ç€ ˜M×=¦Ð8fÏcX@€ÜÐ88ð˜—Çý­ç€ ˜M×=¦Ð8fÏcX@€ÜÐ88ð˜—Çý­ç€ ˜M×=¦Ð8fÏcX@€ÜÐ88ð˜—Çý­ç€ ˜M×=¦Ð8fÏcX@€ÜÐ88ð˜—Çý­ç€ ˜M×=¦Ð8fÏcX@€ÜÐ88ð˜—Çý­ç€ ˜M×=¦Ð8fÏcX@€ÜÐ88ð˜—Çý­ç€ ˜M×=¦Ð8fÏcX@€ÜÐ88ð˜—Çý­ç€ ˜M×=¦Ð8fÏcX@€ÜÐ88ð˜—Çý­ç€ ˜M×=¦Ð8fÏcX@€ÜÐ88ð˜—Çý­ç€ ˜M×=¦Ð8fÏcX@€ÜÐ88ð˜—Çý­ç€ ˜M×=¦Ð8fÏcX@€ÜÐ88ð˜—Çý­ç€ ü%°péÊGû}¥ßùkBFŽÆ‰ëÓÀhœ,L&<€ L5sñ¿ÛŽ8­å°¡ßüégåuÿhxLˆK“×Óƒ‡ @`Íš5/Í>ùñ!WuûÍ‚e‰M×=¦Ð8±ç®B€ d‹–­º£ÇäZM‹š¾÷õŠU«ƒ<Ô€Œ c€ q  q2á0 @€’%0jÖâó"ùiì½Û×=¦Ð8;Åa8 @  (?­sÑìÚ¹òEòÓ’{hxLˆK“ܼ@k@€rMÀŸ¶Œü´$_'®{L q’œh@€@. 8ùiïŽ#?-•Æ1ÀÇ„¸Ð8©ÌÜ@€@Ö (?­ËÐòü´¯¿§~ZŠ/×=¦Ð8)NÜ@€@ (?íÎ7ÂõÓš¼÷5ùié€GãàÀcB\hœtf î… @ FWÔO#?-}Úhœ¸î1 €ÆI® @€2DÀÉO»âÅ1ä§ùc€ q  q|™.è€ ß 8ùiõ#?Í7ºhœ¸î1 ‚L`Ó¦MmÛ¶}ôÑGoºé¦{î¹ç«¯¾ªq´hߦ :‚ @À?ÊO;ÿ¹§=9´õÓü£ªžÐ85ºÄœÌ [¶l¹í¶ÛFŽ©ÑîÞ½ûá‡þðÃk9Ç×iƒÎ @H—€;?m:õÓÒÅ}?§F—˜“yA OŸ>Ò5ÎPWF~œî4Nô7ŸÏ€ 䎀òÓîŠÔO{¬ßWÔOËÄ{@ã¸=aŽó‹€‚8’9‰Œ“‰Ùƒ>!@HÀ˜Šü´¾ã¾KávnI„'™6$°wïÞË.»ìÝwßíСÃý÷ßß¹sç… z“Èl@@€2J@ùi]‡„÷÷¼â…1ä§e5ÇË+æ|À H¶\tÑE—_~ùðáÃËÊÊôû’K.ùöÛok6'£ÓC€ —ùiqùØS£KÌÉàغu«4NÆ ¡Þwß};vt>ºÐ8>Nt@€@²ÂùiÏŽRý´¾cÉOK^*íÑ8nO˜ãü"pÕUWµoßÞs§Nn¾ùfç£û“ÊìÀ=€ ¤M@ùi¯ ›S»ùË_óÕwËÒî"€Æq{ÂçfÍš5hÐÀsãÆ_xáç£û“Ðt@#@€|%ÎOë9¹VÓ¢GU?måj_û¦³XÐ8nO˜ãü"0}út•Ðo {öìÙZ›3gΜM@ãÄš¸@€@ŒýùiÀšX—hœ]bNæ ñãÇkIŽ~ž{î¹o¾ùÆkØhœÄæZA€ àå§½F~š SïãåsÞ$hœÔçî„ @ ÊO»»çå§=Òw:ùiÉó³-Ç$O[¼ qüœ5è € N~Ú;ÔOó@”Óh/¯˜ó&@ãdg>á)€ ‚%@~Z ^=Ç$O[¼ q5í0@€€a~\¶ªA/òÓôVÑ8^^1çM"€Æ ФÃP @fû¿%öþž}ÈO Ì›Eã˜äÉc‹4N`¦@0‡@8?m¸³¿çRs ËKÐ8^^1çM"€ÆÉÿ¹ @Á"@~Z°ÞGÕÑ qLòä±Å‹§ê÷>Ÿ>é?‘Ý~ûíÇ{ìqǧ¯¡Ÿxâ‰'¹~4hà´ŒÑÃÒ¥K¯¾újõ¬Ÿ&Mš8·p@ˆM`Üœ%´uê“CûŒù>vK®æ„ÇË+æ¼IÐ89™^|yè­·Þú·¿ýmuäG·Ýv[ÝJßÔx^'côpÞyçþùj³hÑ¢Ã;¬eË–^p€ `Ð:ëÉO»¬Ã˜¯¾#?- h“VŸ¶˜=kC׎;O;تs‰5qüæŠÅ^fu€@Ò”ŸvOï)µš5&?-ix¸ãåsÞ$hœÜN7Ò8ZVsÇw85z衇¤Œ2-ÞÑö8«V­ÒAýúõíUlM«iúõë§R+J~³«@Kïœyæ™§všÓ¿Wj úѤ*!´jÕʹ‹# ,_¾öú{C!Ëþ÷Ó5mÊF#-Å(@ *òÓz&?-¹¼c’'-^Ð8¹œeÖ®•ÆQíè—^~é”SN±kGK°$>¤Ûo¿ýØÈœ»”̦>{÷î­3K—.}àŽ:ꨣ>úä“OnÖ¬™SnÚn_cº´lÙ²«¯¾ú¸ÈO“&MœÎ90•Àôic¼ü|©©Æb å§uÿrníæC.ë0zÊ<ö÷LaPnAãxyÅœ7‰'·3Ž­qr;ž¨®q:>‹ÆáO('@~šI h“G@ã˜äÉc‹4Nô7ŸÏ€ ¼"0yÞÒKÈOË«W–ÛÁ¢q¼¼bΛD“Ûy†§C€Ò!ðæèybèEíG“Ÿ–Æ‚ºc’'-^Ð85­a, C@ùiÞž¦ý=ÉO3æfÇ4Ž—WÌy“ q²3Ÿð@€€ÈOóf¡u…Æ1É“Ç/hœB›Ù°€ò€Ÿvaû‘g/Éw[ö  q¼¼bΛD“ý¹…'B€R#°tåê#ùi÷¾9eñòU©uÂ]Nc’'-^Ð8>Ña> ä å§]©ŸÖcÄÜ5kÖä˰gРq¼¼bΛD´™‡ñ@€ª ?­:ΤFc’'-^Ð8©ÍÜ@Èå§5Žä§ÝÓ›ü´ì 7ü)h/¯˜ó&@ã>‘a ä3)‘ü´Ú͇tÿ’ü´|~‘A;Ç$O[¼ q‚4ë0@€@%Þ‘ý=U?mÂê§Ubá(Mh/¯˜ó&@ã¤9Qp;’%°|ùÚiS6޶嫩W®HönÚCA€ü´‚xÍ92c’'-^Ð89š`xlX²x]Ïn%¡¥? Yï¿SŒÌ)Ð?̆€7å§]Öa4ùiÞ„¸’4Ž—WÌy“ qÒš&¸I˜:y“-pìßû†,Åt’ìƒæ€€ÉÞ3ïÔ'‡^Ønùi&¿æœÚ†Æ1É“Ç/hœœN3<¼à|>h›[ãèxXÑ–‚£€Á€@MÂùiïL«Õ´¨a/ê§Õˆs>@ãxyÅœ7‰ǧ ƒn IªÄq¤qÙIèNAF˜úùiF¿à ‡Æ1É“Ç/hœ Í:ŒÅ|‹®kÝ´Ì å¼Ô¾téÒuæ›…€@Lv~ÚíF£~ZLP\ô…ÇË+æ¼IÐ8¾LtÄ HæL¿yÐÇÛÓùáNâäh  (?í¡Šü´—­2ÐBL 4ŽIž<¶x@ãoîaD€ P"ùicT?íõásÖ¬YS6cd q¼¼bΛD€É†!@€@Áè3æ{ÕO#?­à^| Fã˜äÉc‹4N&†@D`ÙÊÕ÷®úi zM!?­€^|`LEãxyÅœ7‰'0S@4­ÖÑš¢ÁÛT{-…ÒÊ|ùö›³g­î—Ï€@î|®ŸÎOëF~ZîÞB?c’'-^Ð8>Ña~ HÚ|5u㌯7¶y¼²[Wv,[–Ä`çÌ^ÿT³²ß‡¬?†¬×»ìønJ' z4…@†ôûŸ6öK2ôº…@\h/¯˜ó&@ãÄ hl˜>mãE'Y*.Ýï­§Ä´}0mÊÆÄGòÂ3¥îÛ|Pœø½´„|'@~šïHé0eh“šAÀoÊO»ü…p~Úkä§ùÍ–þR €ÆñòŠ9o4N “·@ C©qTI¯×«Äqö Y‰Çq.XwÚÁåZÉî°î¥…i3ôÖè± (?í´'‡žÿì(òÓbƒâjÖ qLòä±Å‹'kS ‚@\JT; "þrÖ‘VËGË×ãì£Ôµ>Å+WÄí ²Ág·9rIãÇl®¼Æ ÊO{$R?íîžÔOË q’4Ž—WÌy“ q›hlP:YÇg+×ÑÜx±5aìæaE[T‚ )£±.Y¼nôˆ-wÞ`=PïÄñ›“½=Öò Mà«ï–‘ŸfôÎcãÐ8&yòØâE“Ç“C7‘€–ä ²åÑ{÷tïºãëé5P›ó×EY/£RlsçP?- !ïTæ§-ÎÁãy$b@ãxyÅœ7‰'æ4ÀE‹€J@¿Õ£ä„U;dõïW¬u7öø´NÛ¬_‡¬cBÖGï+ˆ¬q3 '?í®ž“-£ÒGÁ¼ø¼2c’'-^Ð8y5-1ØÂ" *“'nº§žuÙi–Š?+vóv¯*…}¼MD´oέWW©00fT¢Ø (ÖB Ã*óÓ†ÍYC™ Ó¦û”  q¼¼bΛD“òÁÈ4©“7í_Q‚@u 9ÙõQgþ}¬µ|ùZU*øIÕóÝ·G!ÖàdúÑ?Üú’ŸæÆÁq€  qLòä±Å‹'À“C+tO7/¯«fWHkPwoTEèKN±$d”¨vhUÓºi™6ÄQÁ+(tˆØÌP~Ú£ý¾ªÕ´ˆü´ÌÃæ >@ãxyÅœ7‰LJɂ. ª<`«û÷ŸBáŒ5÷U'°Ÿüj§Ê C²Þxµ<¥íÈ%”™ÑÑ+ &0ýûeWDö÷|…ü4þ"ò„Ç$O[¼ qòdBb˜…H@›Ú¸Í}·îÕ’œ¢Á[/:Ùºò kİ-Nmÿ|ÐÖzWXMØÝ»{‰Š87::¨ b32LÀÉO3‹úifM÷þ@ãxyÅœ7‰Ç¿9ƒž à3¥K×i+O­Á9"d5k´{ÖÌòˆŒòÓ´“N?ZÂã¨û`äpêÔˆŠ“H‹À²UùioP?--’Üœ}h“4N ǘKA&0hР÷ß÷îÝú–uèÐá†nб׀Ñ8ÁŸ‹!rB`̨h£=I‘LŸ¶ñýwŠûõ)Ös’˜DÀÎO;¯íòÓLz­Ø"h/¯˜óyD`óæÍ—\rɸqã¼ÆŒÆaºƒ@Ræ¿nö¬õ*\füÏÜ9ëÏ9ºr« kYóæn°­ÖN£…Ê/ý"ÄRãÿ Î@å§5yü´‚{ï…c0ÇË+æ|~¸ãŽ;žþy¯1£q gNÃÒ4 ,þqݧŸ²þ²Ú<^6{V¹ÃŸf·A¾ýÛo6vë¼ã¿ZÝ»îб=ÔU«ÖÞvM¥öQ>Ûõç[Ë–ùf‡º’†úlà¶ c7KQúÖ/A 1ÊO»òűªŸF~ZbÀh•Ð8^^1çN@ùi»ví²Y\\|饗>ÜkÌhœü››qŽŒú²JîÖãwæ4ª#}ÊþU4Îñ!ë»yë}y-Bª8gÐ=õ|ëÙ—áщñÞUý´–ÔŸ6ŠúiÆ¿ì6ãås>àêÖ­;`À rÇŽ½zõºæškÉS}ähœžä0=9w×©âØ«æXÁÖ{®U©#CtðÄÃe~%ïiuJU»;=‚BÉý¡Ò:5N~Ú=&/Z¶*µN¸ yASÝæL^2dˆŠªÝ~ûí÷Ýw_÷îÝõ—cØhœ¼˜Žd<Ü`Û÷þcÈš5ÓŸà…¬ÓŸaE[úö.žh[j,_¾¶þµ•K„¤°Z3’ü4ÁÒ[^@ãÄpŒ¹d 4N^OS ÞT“&l²Íi[·]SEkhœìXýÕÔGVÈ«BÖ×Ó£‹!dg<© ?-5nÜUÐ8Ƹñƒ§f3lÌ;Ê û o±ãHéôìVrï-{ Y*+ýV’E ³—0¦ºjÚ»gÔ—ª«¶!ï2àB&0cÁò«;ŽÕþž/}A~Z!ÿ!`{ÍÐ81c.CSó÷Ÿ³UPq3íž³rÅÚ_o¤€sÞ CÈL\`秘Aý´hþù»òU6û†¬¬-±‰"£Œ¸ÞÝKö‹dÄí²”'ÉÃò”ùiyúâvö  qŒqã1$4NöçžXȾ‘¢qʦمŽ Ysf¯Ï>–©“Ë+h‡…¬sQaÖÝdÿ=ðDôŸ¸à­ÂõÓÈOó&]˜NÃ1æ’1Ð8¦ÏdØ 8Ö²¤hn½ºJ©4I ­»Éþ@µ¨-²:w(mrÿž«ÿeõy£„U?Ù<1+Wÿ_óÈOK!÷4Ž1n<†Ä €Æ)¸© ƒÓ#0kæzUQ^¶,•^†|¶EšbŸÕåŶ¸°Ÿq˜¥Â©ô˜Þ=v…ê6—ý¥¢F´ÆÓ ®µøÇ &=S¸»@ (?íš—ÆžÔ¬¨õÓ ôO³S!€Æ‰ásÉhœTfî)H?ü°®oï’?†¬Cá=k´¦&Y ½^/±EMÛ,g‡MU„ž4as²]ÕØ^Á =BjòÄM‰Pê§šízí¥òýFÙ¥Ûk쟓òÓõ:L@ããÆcH hœ<š”jn h›Gè ÞV²Ñœ‰ã7;=\rJ81LÍ´/v©>Û¯\á6‘n.X÷ΛåÊ˛ƙȽ´@®(?í‰H~Úm¯Oš¿„úi¹z<7_  qb8Æ\2†'_g(ÆuïÚã¨ü4ùE4ÊSœå%¢ô°ñcü”nßëÞ¿þd%¸[¨Ä‘j»9÷ÖYóææ BÖß'ÌWß.,ÏOëø9û{æëKdܹ%€Æ1ÆÇÐ8¹gxzhߦÔ:P!²ÒÕÖ¬Y«Œ2-„ñwi¿º½à„J¢á²´t(¼ÚGá¤Si²þsNnª$2NÚ@@úO ×O;ç™/©ŸÆßR&€Æ‰ásÉhœ”§n,4Ú%Ó Ö³[I ¼Õ£JÊ™Â:‰,ÉqLøn^¸–Â’ÅTpp,ä§ë}0š|&€Æ1ÆÇÐ8ùæó´ÃŽ“M§pL 1¦˜Ýs¹$ ü´ÿt§úiä§åò5ðlS qb8Æ\2†Ç” ;ò€€2Ê$=”«–l±‚mS·RaúGñç‰Ñ,/8ùiÃgü˜f84Ž1n<†Ä €Æ øDÄðò‘€2¾T~¹hð6ýv²¿´޶Ú<$dý$²¨_åÔò‘c†@‚ÂùiýÃû{ÞúúDê§%fˆKÃ1æ’1Ð8q§@ )5/?_Y kÇK—†³ÚØæ.Ypß­{W®HªcC °ŸVXïk³HcŒ!1 q²8©ð¨‚  Ø[ËèxêäMJ»þü*uÏ Y3¾öggœ‚ÀŠ‘FàÃHý´³ŸþrØ7ä§Ø»ÇÜÌ@ãÄpŒ¹d 4NæçžPX†|V%^#3ô‹-Ó§m¸§^•ýkŽ oC³!›h$©Kúèýb-Êæsy’" ü´‘ü´[ÈOK !04Ž1n<†Ä €ÆIxJ !" ¨Mõ8΄qû¼QòK×V›ýÞÊjéi"І>öÀ´ éÄñ~n?šA áü´—ÃõÓ^ü|ÖéàÈ4N ǘKÆ@ãd`ò Ë‚& õ8Ý:ïpdN÷®;´G…¦ï½e¯¶ÔyôÞ=w×±Þy³dòD‚8r¥_)¼5ªŽž+Á5bØ5h׺r‰ÆvÅ?-§BA¿­À¯,G{=WàGêÃLž¯ý=ÉOó%]@ &4Ž1n<†Ä €Æ‰9 p©°Å…RÔ$1uÚ”­šìºôTëú{njڔJ¿5Ý3zÄ–ŸVhŽYÚÇÓn%ßXeÜl©¥o¼Z¢«ŽòúsÈš=Ë‘UÓ 8çíÊ*-|ÚÁÖ'„÷crþ|è:x](?íI;?í5ê§ïõ0"ã qb8Æ\2†Ǹ© ƒM`ÖÌõ?üàÛæ¡ æ¯;ã°Jå" Ó¾M©mTéƒBV§v•¡œûnµV­ 4(÷ÚK•Ñ@½Y‰YS™(?íÚ—ÇØ¬è…Ïf­&?ÍÔ׌]A"€Æ1ÆÇÐ8Ašu ’# 2¿vEgä ÿçËî"ªTµ.½ûv±~ëß™GPÒ-9ÎÙo={ÖzÅÚì÷eÿ¾åªò7›ýÁdô‰ÊOûg$?mè7?dôAt8Ð81c.Cã|å9€@ú–-[«ü´Ao?f³rÒï0vZSsí¹UœQ«iÑÍÔOËøß€€'4N ǘKÆ@ãxN\€@’¾ý¦rŸM[쌕VGËg­ ~HœBJZ»ñbëðuùéá¥7IŽ=@ÍÇŽÞrdÄꟇ¬^¯— Ù7§CQ~Úu‘úiä§åô=ðp¬EããÆcH h&;øH@1']í©feó¿O=¤"ßþ¢“«Ôx©}y]èêÖ2œ¿V¨!É+)#g£œêƒ|FÛ˜á2D¶( ä3¶ |h«ÝÆù­Hóñ ¨c‚}ðVòJqùhcå§µ¬ÈOû~ÉJ˜@9'€Æ1ÆÇÐ89Ÿjj$ ‰$Qãvø»vÜYcKèÙ­ÄÝRÇ#‡ç¥ÆQÆÝ~Uã8 Õh5'ó‚Àÿœü´Aìï™oŒA4N ǘKÆ@ãÄt†‘ùI@Á ?V8üœ`)²S£Êa«­uöQ•‚èøPeéo ìÉ•+ÖvîPê赋k[‰[¬9>°òü´6ä§øæŽÇ7Cb@ãnêa@p®Qæ›2¸æÍ­y«Uþð½ð¦<¯vÚñlËÒ󎳞x¸LâÈÕGÒ‡*4­…ÿÝ·GN›R³°JºÓ„oX´p"S*IW4x+'alÁj¨ü´V…ë§Õ{u"ùiÁz7Œk©9Ã/æ’9Ð8Ìv8É%žEdNtùhi™Ú!«U“²ëΓÆÙ©Í@¥qTíÓ¶* ’òÏÀÛœHÊ!+MÅ”ò0¸1O „óÓ:;±YÑóä§åé+dئ ŽcŽ%ÞÐ8¦Ïdؗߤ/œ:cçS%]M‘‰[Œ|6pë>Ç:£%-ZØ’šåßÍÛp‚«+õöpƒ=©uÅ]Hà“)‘úim¾Bý´|ý˜œ'Ð8Þ~1WÌ!€ÆÉ“ ‰a"•¸òŒÊU6’Z«â€ü±Ž~¿Þe§sl¤\WMa£ßWÕ8מ[s=7g$@@\ùiÈOãOA&€Æ1ÇÇohœ ÏBŒ­À Hnü¦ªÜ¸ôÔJ¹1}ÚF%’ÙŠF{eFiœIR\’³jÕÚ‡îÞãîmÐÇÛ²ü"d¸i)P:wYs?nö¢×u¯ü´öä§øŸæç4Ž·_Ìs qòa6bŒ# uñZ óz—C>Û’¹uñŠãHÔ¸åFÇg+ã8«W¯Uûêe§Y÷Ô«lÙôÝaÊÔ´ç]7ZDöUÑ6•5H¹«nÔâ£ßE´›2îT.[»ÿ¤Ð ·d“À§ùiEä§e“;Ï‚@ªÐ8æøñXâM“ê Á}…K ª¾±ôŜٙR“'númE°æ¿±f|]e•„̘Q[Úµ.íÿî6…utÜ»{‰" ó¿OW,_¾V*ž¢]M³ù£'Va¯-ß&ŽßœÍð¬¤(?­õG3N ×O›ðÝâ4ê\$õTCé@ãxûÅ\1‡'½y‚» ‚€V÷/\P©”CµOåð!ܧRºFû`ޱ%sJ*8oQÑ1wÜJÇRmÁ#q ?ÍMƒcä4Ž9~<–x@ãäѤÄP³O@²BËü Y§þÒÒ²%i Õýð·z$á‡+È’åì¯ìsKù‰*·Õ8ΈaÔ)“íü´³Ú|I~ È;ho¿˜+æ@ãäÝÔÄ€³Iàù§KÝaÛßV>ÕáUýðø/˜¿®ß[%ªÌü·%YäV:J SÝ€ömJ•šµlY6MôáY²KÁ&íš~_ªxðÆ«•õ®?ßš;'Sy€öh•Œ'øZ¤:uK—ú`BúÞƒ“ŸvùiU Ð8æøñXâMã1pkgÍ\ïìMc+º—–—5ÓÊ—?FdŽ*›õìVbÇwâ"ûèýb·b’Þ±o‘í.×üéGÅ´*çóAÛ&Žß”N%wŸ©ËL Õ]cAAItÿüupÈR‰i]M­g÷]zŠ4ã;o–ŒúrËÜ9Ü—2qüÙÀm¿¨P¬íZ—å–p& ô·Oå§]ß%R?màÌÕY^¬å¯%ô&€Æñö‹¹b4NOr˜‡€ÕþRáýÚÚäÎ*K7Ïš¹Q1yõªo–ȤʙGT–>S‡§ìoÙµŠ¸µÏÑ¡Ê"ŠéôxeûƒwîQ”§Ç+;²-WuÆdé%§„Çÿ§5àƒb;ؤ¥I?u!:1”ñ°K"¨oóõôRgnøÆRâÀ“ß§SÃû{*?í‹é?x6â xhsüx,ñ&€Æ üTÄsI jß™t`åA]pBwú_²ìÐí×U9ÿó%ßÛ6[ Tϵ*S Äöà YŠndŸˆÖqx•AÚåÎ>|¯JdJƒLQöíR :·ÀѱâGÙFðŸ¨ü´§>þVõÓê¾Bý´à¿.F8Ð8Þ~1WÌ!€Æ‰3p¹° h¥‰2Ç.¬eÝp%XU£•ž£Ì±gZìjÕ¤L~~R›Tý¢ŠG­,)›®¢3nOûÆ‹-gaȸћÚ<^æ¾zú!Vú¥¡“}«’Zî1èXû樓Ïm:/8Õ;ךPî_õK¹=£Qý¬jG©w¹RŸ>û‡7DòÓÚ‘ŸÀ×à <4Ž9~<–x@ã$?7pGPYí³Yï ëÊ3¬'Þ¥¥(Ò5ûº¼â¤¢*JWSÕ‚«Î´.?ÝR9h'ëLOQ°F{nJ/(Ì â´ž¨u÷n!ŸÜ—e/I½EiŸ¸¬ÖxÞ'¼hH»…*³ÎÞm×XŽQNÿZ»t\¤’Ü´ej‚©}Îí=P‰ƒ>oT–8Ð>ªîB}t¾tnç§ý«ÍpòÓòå•1NÄ%€Æñö‹¹b4NÜ©€…Làƒ¾Ur±”Ȥ ‹ãÒëà¼ãÊóÍ¡$3mÊÅD¤\¢\}9ÛR.’QAq"w1=ñœ£-÷f=‰<7ý6Þ³-+ÃIUîF*E¦ês×g½Ý«dö¬èª·v¨Ki_!Ù˜þx|ìA ‹ôFJS–]öd>â{Wä§ùŽ”!hsüx,ñ&€Æ È„Ã0H@úBÆ­hî½eoÔ²E(ü/ÿ*/àT¢V,F»í$X•J¥ª¯9»|‡…¬És³(^f* £êÝ:ïpGšb¿8ÕdvÔqÑà­±oáj8ùiÏ}Jý´ ¼Æ?  q¼ýb®˜Cãç¬A_fQ–šÛEWÆš*E»Ï¨Úp‚F+ÉÍ}£ª$žr&}¡(ƒòâ¤w|\@š© ´ÛjkYS@ÆÆ0¼ ŒÔO‹ä§-òjÃy@   qÌñã±Ä›'ç(Fž¶0ÑR”ú×Z·\e ýb“ J·|´L;ªhùLã»ö¨‚t‚Ãx÷í*ioòöµP%Á{󷙢WZäâÈœ+þi͛ϖ¿Ö™7rå§µ‰ÔO«Cý4óÞ.A ‚ÇÛ/æŠ9Ð8ßxþ5Ъ™©“7¨´š²ÅTáYªDÏ´8EÉZŠÂ$UTmü˜*qI¤ ­L©Á~?NiOm`Úâ‘2íªS}ÁŽO ŸæGz@à  qÌñã±Ä›'ðSÌ1÷9û¤|Q¾™³8 •ó’VŠúQ-e£U?ÕŒðÀ ©‹Î|jø¿žþÙtòÓ|§K‡4Ž·_Ìs q‚5ï0š€˜ùíú£\eÁ¤Pî®S¹yM²ƒÕn;ZV£mqTÈK»ªæ˜6ޱ;Q©4Õ%S½2U!{¤áÕdN¶sÚC 5ÊO{ú“ðþžuºN˜»xEjp GÐ8æøñXâM“G“CÍ>å¤ý¾ªÆùï…5l“ìÀ$a¨¿WrF›Ë|ø^±ôNÔö 7ØãÈŸd;§='0§bÏg?)±“ø´„ò—ÇÛ/æŠ9Ð8ù;G1ò,Ðzœ¦T&˜)Ž£šÏi>wùòµ*¿¬\µn/ïìñÊŽZákê^Z¹0_Où]ÈRµysË£±oWiˆûKH¾Õ£$ïŠÑeí}‘Ÿ–5Ô<"€Æ1ÇÇohœ@M; &€&OÜÔ¬ÑîÃC–¶Â‘ìM<Ó¤ÕþsN¥¢éòâÎÏnmP·òŒ4Žâ;Ï´Ø5|ÈÖæ¤@[û¨6¼©’ç‡YZè”B?ßB~šÁ/Ó —ÇÛ/æŠ9Ð8q§8¯l¿êLë7·+òrÎ_¬ÛîTØ%ú`ÚS*Æùwp¸ŽÁÆ¢Á›_ï²£{×Zï³oÈz©}éoCÖY¶ßm³À_“Û|ÉR¯} ­HÝ üXùiÿí:þÄfEä§ø_æ,4Ž9~<–x@ãì‡á‰Ðö.}zn—ôÐÖŸÍ '­²^~~Ç_B–Â1‰ôP½M׎;¢<ðq£79qœÚ!kôˆ-×.AÆ¥ø”êÏMጒå&MØsÑIÖe§…5Îá¥:ÉXSn›vðIaTÕo‘´9¹ÂöF·ï½ùJëÔ_Z:Y½¥_g–,^'{íå3ÒSÒwR+)„Ì´1ëŸ*F.ŒŠ‹etØ~™Ÿé~œü´©Ÿ–iÖô`@ã˜ãÇc‰74N°ç!F—K âüûØÊ¤2yËÝ·gäðÍ¿ªðŸ“ ¶1ó¿_×òѰJÒ¿ƒB–d”jµÙí߆¬ÖMà ú÷K.ú ­Û®±´üäµ—v¦ ܬeûyÇUÕë]vjH§liüî–~KÚÜx±µ_ÈR!»aE[.=µüéǤ´Yê䉛Ï8<܃$¤zSíˆÿQQhIˆ~æ“o©ŸVà ˜4Ž·_Ìs q˜ë àE@^·Ê;ÛºÃþ}ù?Â¥ìc9Ï)—wVÀBzD‹D´ÜFËá[ªž¶ìU)µ®’ºKA+Eè”hÌ^«ÊO«©Ÿö4õÓ’úS 1 ‰ÇÛ/æŠ9Ð8…4«ak. Dåªie½vœéÛ»ø·‘ø…㸧Ì4UWsdŽöâQ}0E4ôoùrwÃŽÁQTHõ¨•ýåµT_¥ F Û"!£Õ@3¾Þ ^Ôÿ½·”çÎ g¦i7g:ø¸•Öðà4NÉ.g"û¡R[iô—Э2ù–«ÊmT-…Q_&¤"ê:G>›^^?mÐTö÷ÌÑ;à±Èhsüx,ñ&€ÆÉ‡Ùˆ1B@[ᨠò‰!Km'*g^¡íV©ITAí€ùpƒ=’BÍí™8~³jV«ò˜¶³¼ÿ¶½1ÖæhëÌKN©Ô&ZGS½x²‚îâÌZì/Y¤½xÜŠæÊ3¬O?*VÅûä7ÔÐoEö*Î¥ìǽԾ4C ÜcŽŠ¬©2vuVîöA>vòÓnèB~Z_cƒ@  q¼ýb®äþýû_tÑEÓ§O1\4N ¦QT?MKéa±—ºü"dIÈ( ­z5•DûYÈúKȺ°–%tHÈjûdå:Ï?]êL2Ê-Ut¬4°¨ÆJS¤Fµ »vÜio?ª˜Îmÿ)âØ·Kn¼Ýk»Zêv-ù×– QøþQë‰ÍQ’žŠ'$X.;Í1¨º]+ Í>srûwÊO{%¼¿g›Ùß3'o€‡B Ï qb8Æ\ >5kÖÔ©S“góÃ5š€J´iõG£Û÷Jã(P¢S'‡óĪÿh­}”ûí.§,…¢XLõ»t¦úBg·§ýè‘›žiÞìF8çhK¥¡û¿»­Ë‹UÊ5+ؤN¥˜´õ§ŠfkAã˜1a…T=LNu³w}ÜkW¶+V¢}gj4MÁ·û­cí㜹ôTKû“Öx£àV‘ñ¥ö¿oÙ¹A¹mZl"ùc'¹EmS믦nP²Üq®UÓ,*$Ôçé íã“ÂÆ@5µÆ“RZ|äXÚªI™—¥5ÞžÔI=K©ƒö³ô.$©’º=çW¯Yc×OS~Úlö÷Ìùû`Èhœþ3—N`ìØ±­[·^¹r%'¦Fj8IqT @q“ûn-w­²­F³UMÇÕ×ÒøzWT~Œ]cM2Dn Ó(F£\8‰§ ´ÊJÏüvýãË·žqúW3 C• МÊÓhõøv³ãC–60Õ‚  c3¸[bLΨì ¦FD¾œTœHRNQ*%¦VŒÎ—a¤Ð ùi)@ã@À&€Æ ¸Ïð¼lß¾ýÎ;ï\·nÝŠ+Ð8Lh… ~R(ùן¬”i-LŒä(Å\”²Õäþ=J©R3eµiÎs­J%aV­Šc“òÊ$m.X'©¢Ô8·jPƒ×»TIKûM¸fÚÖêÉoªEà¾ñÏ!«áMá3Š}hËΨÝ®(•Ö³Ä[ÔöGVésª–йCië¦U–ÉHƒÔxK!Ÿü¢"?íSòÓ ùïÛ!*4Ž— Íù€èܹó€4H4Nªß~ÏT°K1·dxçÍ’ê²Âç§®]+™sRÕçj-ÂIªcà æÅ¶¥_Ø¡“ jÌøz£“V4x«ÓFGGEî:í`K;鸇*i£njs@È’ó²K¥ÒzµÓE¯Ü¥á?rÃQ&ž] Ajœî–î‡æ±òÓž‹ìïy½òÓU“š… «!$  qîÉÚðT$mFä§Q£F£Fò2îܹ÷ßÿÞ½{Ñ8I~ãi  pë«.tŸWѵâ8Þ¹Çýhm6ºdñ:mÇó\«2…xT¼úòX=^Ù¡­?%^~²þ{‘¥¨Š:P0èýwŠ•¢vdÈjúÀ§Ÿn/ï¬è>ü¿R.\©˜ô¬êUÔL#q/):ãðpÁj»µwPÇZû£ßª{ ¢Ùv~‹€òÓêFê§=Eý4þ 4 q¼¼hÎç„@§NôÜ|pÞ¼yo¼ñ†×Þ|óͻᄏqäçÞ{ïU®Ú]wÝ¥OK—.­ñjG§1Ip+% É)TÊ@Kô戎PŠšê°yíé£+ÝèЩ›¢Á›tR—kÏ +E”T¦àí^•5 ÎúseݶïæmPšrä´;Â4Mîßµ‰L‚òMÍT+Û­e´==ìAosŸ×± VkŒ%Ű«Ð.}1ý‡³Ú|©úiä§Ú«Ç^øNS£KÌÉ\xûí·/^Ü´iS  gÏž‰ ƒš¾O t” ($áT<»ëÆ$¶›œ;gý·”¯©ùC’¡ ­£èîÝJ3û|ÐV…Q´ºÇVú¨=qn¾Òúçï,­êÔ®Ô]ÍLm¢Vú/_Þ¼FñêËmŽÑ¨Ü"Eë}ªS’ªr·Ñ±6ú´›EÉeÓEɨê½Ôå§µ8óÄfEä§Ô{ÇXdŽ'/š6Y#ðÞ{ïÝ|óÍÊVS¢Z³fÍy.ëq27?Ð3R  (Œj8'»¥fT˜ãï?·Ù5F™f …H•¨ ÛÙG…·ãÑï/¶ì•/µC––êèªÆ£0$O”ѽ‰Ø¿_åF3Z³c§ºEÝ.Ùâ„“ìg¹‹ hÎùÇ[¿ Y*tðá{Å*t–m@£ÀN~Zëf¬Zý!C‚òŽ'/š6%ðâ‹/*iM¹jõë××^9^ã$W-ï¦&\h½·Ê‚ „¸D‘‘‹N ÇV YÝ:ïxºù.%†]ý/K!’ûo³Td@n¡¤R‡»b14Ü“”ÄЉƒúõ)VW^/H‘¬¿Fž¢œ7UÐB§¥ µ)úÓø®=çWr+ §Y¡Tæ§MaÏB{ùØ @ãxyÅœÏ %ª=ûì³O=õÔˆ#Íñk hœ N"t ?H8¸ƒ,G‡bUœÖÁ±Žs—òüÒ%aT"`à€­QC“,z¶e©= Êd.UL=Oš°IÏŠÊySèçç®jäRvQ#,¨ÊOkÉO»®3õÓ êÍc,²Aã—M?¾ÐœÙ³g÷îÝ[½©°€/}ª4N6fžQfÍ\¯4åÀ«€˜¿?ZðrÎ_Ê£û„,åqÅî_ ÂQ7ö6:“Ñ}!?-5‚ÜÄ#€ÆñË‹¦_ôêÕK¡¥«Iælj÷õå:²G@œ3«ƒPɲ¬=^Ï^~~‡¶¹9¹B×tyqG÷®;½ m4µÄ—sæª3-É¢¬0Ái}ª (îÎ,•eê)´w~Úÿ-/4ó±È4Ž/ž9øE`ûöílݺõ AƒJJJüê–8NÖ¦d íÛ¢ñcGo±×­(tâÈû ùCÙ˳RdçŽë­ž)•®yí¥×k™‘Ã7«`š†¡…üÞSÍviû›ëγTNí±ûvÇ(Y  ‘ï¹vI½÷ô¥Š([Oe’znÎ+?­Þ«j‘Ÿ–ó7Á PÐ8~yÑôã  Øý¨øÀ„ |éS q `2ÃD? håÈ¿þT9)R'yÒ„ ¿rEI$1´ŸŒÙטQ›†ÙrbÅê]n5º}ïƒwîôñÖ¿Erç”÷Õç’ßÛÒòѲl=«æ<ºóשHµÂ(ןo©FÂCy÷#TDîŠ.°RØ/5W&ùú‡³#û{’Ÿ–«WÀs!PPÐ8~yÑôã »Ú€ºÚ½{w÷îÝ}éS q jZÃØô h-¼;jÓð&Kr ÛË;“ª{¦ý.ÓP‚=|5uÃe§Uæ¡iŸ-íÝ}»³ß¨=0…{bwøÎ›UÖì(J»}¯*%Ïy :ЧIUÀΉEáü´A³´¿çuÇ‘Ÿ–“WÀC!P€Ð8~yÑô“&Áƒ7nÜø¦›nÒoý4jÔ¨U«ViöéÜŽÆ)ÀÉ “S&  ¨Ó©"(¤h”º6oîz­ÁQ D«û³)pdˆâ5îºÐòíˆQ6šÛÛ×±üÇê¥K×)×N£íòâN¥ué¼L8¶"dߨCöùrpw*¯FŨkÜ48æ|¿d¥ŸÖŠý=ƒóV  €Çqƒ9È-­[·®X±B5V®\©ƒ5kÖø84NLf˜è­y¸A•9oº,ÇÉá6Ótª ØòDksf~»>Jã(.3ÿûò%*>¨ÜpGØ$ˆ”ÀvTUsí¹¹Ô8âœUíïã¶úÈx åð­éÑN~ÚÇ“Ùß3·¯‚§C à q|t¤éÊ_cÇŽõ«C4NÁMmœ>9 |°¸9`é=-ÎÝ?ü°î³[{w/Ѿ9¶{¯¸’Ö¤(MkXQeâ–ê œõgKkm´DEuÔÆ­žn®ðòóU‚ÖøÔølÅ€d²“ví©±Aú'¥¹´¤èŒÃ-U“Nê)ºÑ^Œc[÷Aßâô“‰”Ÿö¼Ÿöò¸YÔOËbú„b@ãøåEÓ/fΜ٬Y³º‘Ÿk®¹Æ—>Õ 'æ4ÀEÔ@@Ž·$€²¿TÂ˾¡Â-—ç¯é?ZòD¥Tß`¸MÚ8F[|*.£žÝ…Q:>d½ñjÉþ!ëÐÕü¡]î茎u—¸Oþý@KÅÇ$jÜ'µy¨3`-ÌQçcÔ””ûÆãB–]=[yeÚ$(YM¡{µi©âP²Ë)­}NÝбöʉFþ~©ŸöÏVÃÈOËß—ÈÈ!`4Ž/ž9øEà7ÞPWZ•£ßݺuó«[â8LV˜erȵ¤ÅN“ˆxôÞ*+tê^šb9/S½‚~}¶)ìÚDYgŠÔØnÿÏBVÑàmޱS'oRÝ€ßFZ²Ú>Y¥à›JFK;Üxq9£*pRI 6©.úÔÆ /µ/uÖé8={´k]%ŸM=Hè)òRÿZKâîÒS­‰ããëe»é‰¸[>6i4g×T÷Z!ÛêDúôppÎ+?­ùiÁyŒ…Mã—M?¾P¢ÚÈ‘#  ºj:ö¥Ou‚Æ)ìyëS! ]êÀöÀU·ùŒÃªè­Ö™ó¿ )ôÛ¿_¸€BB’ vçú­Bmα”Çå¤Ã©˜ÛÛ½¶;W;w(µõŽ}FIkÚÐS:HUì3¿sŘsQH¹vN%‘+‡Íyœ<’ŒúûÏ+G«,8‰Ñ•ž( øÇÕ©]¹$©¨d9ݨQ¹SéÎ:ÒR+F‡yqIùi7¿ÎO{’ü´¼xa ¦@ãøåEÓ¿f̘±cÇ¿úDã˜>“aŸÿ´Åqõµ~_ ä:¸õêT*­I¹Ø E^½–ÒØÊÛoþÐ驇îÞ£-xptŠ;wK™l¿©0 åôxeG‹GÊþsŽõÑûÅÊ:³-—"SØàO¶é MZvä,íÑ‹oÕ²·í:Ö³¼ž"auÕ™aÓþ¡u£"8d$1o³šI*>P¯³âÉ«Ï`ž×ÛìÛ»DoMªðƒ‘?žýô—ÊO@ý´`¾-FÂ#€ÆñË‹¦Ÿ4 ”––ª‡U?Z•à…7!aq€¸ã8rÔ@9õ—åªD’'v ÃË ånÙ>¿Ò”?æøÿï¿SüV»’›Ê¸õìV¢ºÐîN¤)”–f·oPwϨ/7©ª€»¿Çê\yeï¾½MiuÒSQ;‡j>^OTŒÆç~!+ªŒ› )+OWßµGRHùlŠ…)•?ZgtÎ_ÊßÈA¯¬Õ¤èšŽÔOËÇ7ɘ!`,4Nšž9·ûE@û~ª+T‹lþ¥ý@ýêœ8ޱS†eŒ€½gß e¡Åþ3¾Þ ˆ†–ä+Ò‘Úc•©õ·Š Rµg;eK’ÁI6³‚ÔûRUŸ ܦT7…?~²Úµ.K|‰»«ÄUd Aݰÿß +£Núø'W*]õÞ¤ <4¿t¯m‘´›´’„ýQùuÕïÍ£3Ne†#.üVùi¿ùëãÆå·EyŸ¡B‰@ãøåEÓ/&Mšäô3qâDç8Í4N"³m E@uÕ¤,†|¦ºj›j,³Õ>‘Æn–F°ýüî]wÈÕWàCAûŒó[…È¢z[´pÝ…µÊo´›©à[T?j`Ž$ióx™:磴º2ñ •;P±8Ç;®·ÆÞ$תI™³¾IWUr!F'Á¿4èc•†Ûõ×;Ç{ïÈŸ„ÂeâT>.øÃf„€@á@ã¤é$%þù»°.ˆ2DjËöÁà öDµñ÷£"2Nå7{xÊ©‹ûˆÙ³6h»VÙée»é'IϹ²òRŽ…Å@¨~Z‹>sNxlÈ‘×|e[ô‡•ÔN¦Y$€ œÇwwšÓ! 58½{÷Ö.9Ó§OO§Ÿ¨{Ñ8>Ña~À ù|ó‹mKþPˆGÁŽÛ¯³ªÇJ$ TºÙö¨íß eÔ.%È)|ãÕ0xPm´S²"¹O•æžz–2åÜ?’ vÝi[AH/D•PÓ"i•2PÅf¸ëEkÇOÉ Õg³K7»»}´YÛ€~ø^¸LÝ­¶¹qw› ±’W þH—ÝpAC´µê§%x»ŒRMl•,P H«¢T^‚d¨™òÓ^ølÖIÍŠþóò¸o.ÏÐS耀_Ð8~yÑôã ›o¾ùÃ?ܺu«/½9 qüš1èiÐÊ”†7…wÕΞZ«2fÔ&UWëÛ»¸Éý{ÜGIkîêÐrþ¥1¿ …목v{$ªví¹UÄ…tâ/Zã#MäîY{ªqæ~ÜRKÏM¼¶€6ÍQ›{¨‰¤ÆeÎyP-ˆûnµži±kÄØµ·¼Þß³EÿoV®þ¿Ì=”ž!øEã¸ÁÀ¼yó4Œ²²2ƒÆñkÆ $NÀNdr§‡MŸ¶á¬?['…¬«Ï’ç\vhÈÚ'dI›h'…fœ’ËòóßîUâ~jv¹ÿHƒíîl49äµ#kCN?ĺælëÈur¤æó'XÎ6.vZÔ3kfŠ{ëh³NSUäü+ÿÍ=BçØN™ÓÚ¢ž)•ˆS*Á5޲±×ëU $ØO"ͤžTüYÉ{î€ZÔ}Þ(©Ï®ãîsZ‹aNZÕ†€Kã¯/Moi˜5k–vÆiÞ¼ùˆÈOš½9·£q;10# ÈÏ>d‹½Äþø¥]ud¦¼ý‘÷Üu£¥q´§g…ÿŽ\´nºKí•T¦’Ñϵک}p¤Y2 pL¿©AݽîÚËZ&óõô*‹VTÍLn¹ö£9e둆{ØzdÈÒ¢x-íq?ëÒS-­šq:OüàÛo6^t²õl˲×^ÚÙ¾Mé[=¶'žÃ–ÈS¢j¯iÌ>ˆ_Æ-‘ž£ÚµÊ ©…ôKé¼¹5(>Ux°Ûô‹U{tè‘×Lmöxt5ï¨nù@ PÐ8ŽÌAôêÕkýúõ}úôÑ`Þy翆„Æ Ô´Ã`Œ' •õD¼h[\hO­‚Ѫ{GQ-ÿé²JÝ¡¼5¥“ý&d5}`O·Î;>z¿xâørñ¢tµûëüŸCÖ‰!ëµ—vœ}TøF %­[±Ë2;0õñ`×CÍÑ?5îñÊgG…Š”KæÜ’ÔÁàO¶v{y§­³ŒDš–Jª‡ØµlGÕ°mbú­1KUž%…«ŠàØâÅyPûÚè})9ðçÏR~Ú¡Çü¨Æ÷Þb¥ð8n +h¿¼húñ…€ G«[ãØÇ¾t‹ÆÉÕ Ãs “€¶ u\hû@É]N.d)Î÷ƒ¾ÅQUTHëqTÙX«~²Mq¢ñc6)*ä¾+ñc=W÷#$ǾššÌÑP5rÙ%‰c5š©Ï›¯´TI»zQ…㣥RÔÜ&èX«·/šöã)Œ:îÞöþžj¦7X½g –ÇšNü" uÓ¶m[åªuèÐ8N`ç Ø´Ð>Ê‘V²™"/ÎÉAoU^™ÔÍSÍT$m{»Öeî<45Sâ–ö”lÝ´L"žKÕ›µæ‘ÇÓÍËFŒÞ$ôÝ·£5Ž";êD¢FÙY?«èçâÚÉíV)I¢e8ZU$ãŒß>PXG’$6 ]UÞ×E'UÚž¡ ´¸Ã°h Ž6úq"%è¾wÍš5/~®ŸvÅóãêÞXòó%Mª—åÎt·ç€@0  qürÎéÇ»wïž:uꫯ¾:mÚ4_:´;!ŽÌù‡Qœ€Ö›(ëlXÑ–I6ýðCkX´åS®YUžkU* \/ÛµVÇÖ;ÊaS%1­ÖÑB~·×­c¥¨Íüv}ËGËþqÈUà¹VUÊ£UßTCuW-к›… ÂcVpÄ^ä<â£÷·jKµ—x‰ý ”-¦¼8UrÓºbœìÅžš5Ú»]UÕk÷¿ËLZÜaØ $Ù:w(uÆ#ñåθÓþž·Fê§=©Ÿ¦ÆJZ“FK°sšA4ŽŽ4]ùK`Ê”)~uˆÆ ΜÃHò…€RÅTÀÉÎR %©­å+`ѽëv©)m#-£ÑZŒ#ûØH!E^T:LAUp¼nû@%¼}úÑÖçŸ;äÚt¦ö¾U¢Ê@«^:@K~®;ÏR•ƒæ•9‹Y”ôåî\šK=ÛUšµ~G:ÅK¾i;κ—V>T•¨[5©ÔYwÞ`]~zX‹Å}¡Ï¶¬ÔöH¥Š{Wæ¨È€Þ…RÔÁqçÚ Ÿñã9Ï„÷÷ì?‘úi™ÃOÏ€@– qüò¢é'M*§õS¯^½4ûtnGãdiBá1ÐÀWü­ßêÅÆ Eô];îtzˆì˹©Ç+ÛÖ+SÆ”“„&¥µ϶¬l©Zõ.·Î9Ú’7®43Õ‘~ªÙ®[e0J9«qoMCVrššóóݼ ªVí Cûãh'P磢¶ÚqnTìé_ªÒòýwŠÍ‘ì’2Òî¢õ®¨qnŒ:uîÇI‚E­$ŠjŸýÊOëøùÿ”ŸvÍKcÙß3ûüy" hÇ æ ·ºuë¶bÅ ý>|øÒ¥K¿üòËN:ù5$4N&fú4›Àø1›Ýž¹Ž•Q–”ÉZã4³»z þ^´”Æ]s@—´iΰ¢Í ¯(þ¢2hw× +‹¿hi ˆb=—œ¢Zл¥/ìNj…ÂKòU ̽óNìÉ–ßVÈœ¨Ì1õ©Þ¢nWÄJÍ.;ͺérK+nôDûÑÚõF°'MØðÙÀÍ@‚ûìHs)éÎîAu4˜¨Çåö£òÓn{}’ê§=ñû{æöUðt@ÀOh¿¼húñ…€[×¼ôòK¾ô©NÐ8~ÎôU”âå^Þ"ÝÞæ¦FëpQ4D¢Æ÷¥UhkÑàÍîÊï¼–T—ÿ£¼åª) £pv¨±3èÑkOõ“Zz£Œ†¤ÊfªŠì• ($äÞìF%¬Õ vDÖ5k´ûWK¤n¤×$|blšYý¡Îõ¯ç  “Aç\ÊíÁˆ?žûÌHòÓrûx: h¿¼húñ…@»ví¾øâ‹ï¾ûîóÏ?oß¾½/}ª4N&fú4›€Ò½TëØÑïÚãUuYjè”ÊUÃm×XÎu©­âq¯÷Wi²Ã6jyŽ;‡MPfZŸžÛµ‰g»Ö¥ YºEÑûqêÁƒ¢¢0'‡,¥¢%õ"ˆÑR§Ï6ïêÙ­äŒÃ­/o£«*Ŧh‹Ô™Ê¦9ÍtF)gRUqË$5˜«<‚–‰›‚Y‰G¯bwîä§]ÝqìŒËc7æ* ¼#€ÆñË‹¦_¬\¹²sçÎ 6ìÚµëªU«|éS qònjbÀA  Mj´:^ÂD•ŸíeÕG¥… 8Z@*`7“Põ³ûnÝûΛÛ{vÛ®T´únSM3-uWHÅYÎ/}¡ðʇïm>óK—é˜;§R¶H@9+w´¨ªF»Ÿ¥c­zñ¨qJ¶h] EFº¤ö²K +eÇ9ªC3¾Þ =zî»Õ²Kº9WÕ^Ùk^B/ê‰>~Ô˜D; æ±ûöÄØa'Áç.XZžŸÖüƒoV¬Zà]4ƒ GÐ8~yÑôdhœ<š”j~‘"p„€®>Ë’ ’*ÇEΫprÌ´x_bR1:Öbœ1£6ªd±r·´ªErC¢CÚaÁüšËSëŠ(i™¿Öò¸CKz– £©À•g„÷Óñâ& Ø=B U­s‰uÅ?-åÂ) ͧ6Ú¯Gá§&÷ïnóxÙþwÙ÷Þt™¥R ^OÉÜù¾½£ k+¬“Îãœü´¨Ÿ–Gî…‚MdÏœ±ùEìyˆÑåw¤_œ:ÒŠïœqX£RɲG…£mi å3îU9 I(¸£xvÞIÖrEdÜUÑT.àȈ9*T™#Õ§³ÞßÏE'[ªÉf+²s`U!óÄÃeº}Ú” ƒ>Þ¢58§Riš*iËöìÿ¼Ú©2³Îv A{xÊOëôÅÿN~|ùi±Aq0€Ç//š~‚LcÀd… A usO=K»XjÎÐ/¶Ø>¿"#vyàÒÊõÒö]^,_Ì¢•5¶gîüþ oñÙGYmŸ,kÝT»Ø¬OÖ.ÉÉ—Ÿ/U7·¼Ò0ªw¥õ5çü¥R§h G„¬{o)?sï-{c]úÇoT zã¨/7úx›jÈ–›¯ ¯ R´H£Í~–šmŽÒçt:P¹¯¼Áêæ»Ï(?­~÷pý´Çß'?Í †c@ÀLhœ {æ>¶uëÖùEcæü…UÙ% šiÊCsûÛZG£!¨:" Ê"StF¹’Ç+Q4»¥vùtߢcçLƒºVÊiWãFWñüÕ­æÔÈCá÷´r_ Ë>S{¿ð ŠÝü÷¢pè;®·´{޶rgßIÍéYîªk5>%s'%$ðÒ0SI‡ÔŠØùi§·öþÄï37Tz† h¿¼húI“ÀàŠUT³Ÿ|òÉ4ûtnGãgÎa$ùK@zÄ-t,ùà6G‘' LÏ´ÚEõ–Us@»y:7*ªrç •S^á¢êmªíìt«%9^qÅžœRÕ*Œ&Q£ÅAÚsG …4BÕCèÞu»ê*8]©Ìšsl(bå63'DzN†¤PmÀÉO»ªãØo,ËÉày( ì@ã8n0¹%ðÐCõìÙ³E‹Mš4éÞ½»~?öØc~ “ý¹…'šG@y\ûºd…üi·™,¶(ˆPÙ´ N°´åÍÐ/6kÓO©!•_ëòâ-êw+IŒ9³“NW³ªˆ†º½êLK+Vj‰‘öÖ¯O±”‹Fûv¯í#†m¾î¼ð®£ú¨´º¯§o˜:yÿ-—KªUžZ£Ua·™ytL~Z½,† øKã—M?iX¼x±zPÉh§‘vŽÓ<@ãø;oÐ[aPÒ”»Òò¯CZ½²A‰jZ cëi•)Så4åƒý-dÝ]ÇRè—Ú—(J"É£l+mïâ8j¦¸Oëh$,Ù¥ ivj™bFêêÝ··9ùoªk­34ÜóÂ3åéjªkí–i*ž¦bnž’hRcuåŒóÂZž¢™«fä§åŠ<Ï…‚@“¦óÌíþhݺõ®]»Ô§~?õÔS~uŽÆ Âlà  kT1@‰aª®¬Jγg­W\Fû×h×N•bž:y“V軳œw\¸xÚùÇ+ NÓŽ3:8ëÈðrþ†7…Ë>ë¤öÖLŒ´‰¢0‰#Ft U¥rm„¬ c7«O=Ú¾ª-G²¤\¨¿×Ý^Šì×¶KÔ8{’¾ÞeçO"2M-µqvÞ?fÓ¬™)FšR°Ë—[”ŸöR¤~ùi¾ð¤@   qüò¢éÇ£FªS§ÎwÞY·n]ûÒ§:AãäãìĘN@œgZTI<û|Ðæ¨ýk$(ÆÙëŒýOúèÑ{÷¨›}5‘ßêJ)pº]irÚ•*jsãÅå½Ù}6}`Ï" ¤S”Gwbų¤Vži±KKrìm=ÒÊ ÇFê!ÜsóîNívtîPª“‚P#‡‡ešS [ÝJIéŒÂF­úQèJª-'{åÄ¥4ræç>3RõÓÞ??nc@0˜ÇGGš®Ò'P\\¬¢j}úô™>}º„IúÚ= q žÄ0-WæÍÝ 2e¶¸°kÑb%Ê sN*žâìµÏ‹ÚØ¥§¿$•2ÜœžuЧçvÕ ¨½oùI•8x®Uy\I›ø¨Ú³B6ª·¬0ÖÔh%Žû^­ÊQ€¦ó ;úöÞ¦D;ÕÄVbÛÿgï>À,«ÊôÑ×}Æë\Óxu³3-¢DÉ*‚( ¢DA‰’$InB'›I"ˆ Y”$ H2 ˆ éxGaF:§êîs§VõªUûTN§»«N}õÔSÏ:{¯µöZïiö³^Þï{?+´Ú[~6¥ì©-€Íß{9©ÌåhFâÓ¾w{½¾għ-俨èí@pœV¢cž– p饗^y啜°’óÏ?¿%sš$8N{¿ÇbwË JdÚU—N—á2þÖIÜ¡eñw•øì‰C»ý–*wÐsaV.ê ’ìS¡” Õ9åõ '|Õ¾wZw±Qf©ˆ '×ßÙÅŒðÊpezh7_]¯‡7‰d ÷ï?­JQ ao_ÿbOOSñ£þÓ_[˜õ/¥>ʶ×ñUøõoÿºçEõúžŸ¶”ÐŽi@`Ð!§U§è˜§%PpÌ“þ";-™Ó$ÁqÝ«)<`S†hÜ5~㲩å˜ÍC@ˆÚ.›×å’¤³ðˆ¦¡üáåêù¿QÇ1[ómJù‘¿³Î;jxŠŠ6D"†™ªüð¼:©a2ŘPYRŽž|BÚÎeIÅ¡bdå©A’ôÅ„(¾°ý&½èÌÞ;ÔØS;~Ö§ßÛóh3ˆšë¯"OóMµäþíìq9ðoöÚ‡ß·ÞØˆOk ´1I ´ ÁqZuŠŽyZ‚À…^(Jí’K.yæ™gTÉiÉœ& ŽÓ&/¬ØÆòCƒ“Ø¢AÁAdüÜï²õ×(˜¤ÏeR=.8§[j1†‚4¥žÂÞHЧ”cÙ ¤ šô\tæÐ½ç¦ög?R»þš©—]4ý¦&ßg®È1ù>yìþ~Ú ÓÕë9d¯îþkNi|ýÃ:Êùæ–½h‹ˆ5 Îü2},é´ W<‚¾£þrcË[ö Ȥe¼³ã¯«vÇG·ûnÿŸe¿Œxb à8­:EÇ<-AàOúÓñ'ÿõ¯ý¤“Nzå•WZ2§I‚ã ØWP,l° ZìÒNwò÷;følÖÊ¿zxK4Á`RòåþËÊ—ürôu³åþ6•” ¡eè %"ý¨q³î;»¹³µgžî oÃbJZ¡mì©ÇÎâl ¯6Nh¹Ã ×vs+Å@\ -–ïj3b¶>˜šáÊ’²×ÁueD‰$ô¾ùsÚÎGæ‹D–*òmô¡sX ]¨Ö³ÏL¨l¨6T¹¾4>Zª•èó¿ŸöÞU_Ö¶©¥ñ ˜3AŠ@pœV¢cž– 0yòä4Ïßÿþw)´-™Ó$Áqé *–=@@(rÞŠŒ¥<·ý|½®Í‰cg>úÈ„£œ-]åä£;‰#ªjò[øec=o4L*OUuJâJ¾Ëð¹¼¥VN »ðÜiÚ˜6Tv@OМtEèÚñ£gú('H¬·Qj‰v‰vûÂJ5Ûº¦§Aº‡”ULÕ ¤^%³> ì²ËQK£ýÓ;^YiïV>ðî·tÔ ù ¸4s@ 0HŽÓªStÌÓx¤yÞxã³Î:«%sš$8Î }AŲÛK²°fGmmk2Y„‹/˜:öðNòŠP.EdDp=öè"pÚ¹¤œ|‹ÏÔò®Ÿ~êõd:f¤¹û_ÿõ7JÐùgÍðÐ#˜+äLƒÑ¿*“q¾ð‰º¿4;µ+.™ž<Ì`*}ÒT#šóÍ-çõÇ $tSŠòÂ*2Õˆ÷Ú™'Ï‚Œ_„¨ÒsÉ?vù§=Ë?m“ü—ŽzIS W„åk€°äûŠ@ h-ÁqZuŠŽy–i8_|ñðáÃýõ#稣ŽZÂ9óðà8­}oÄlCÊ…à«L Að÷Ôcë.Í„‘iéâ?uQÄ'Ñ…„èåß¿&³&O«q˜Îr¬è/Š vsá¹3²×tY…çSï©'å˜ ¼¿ M訑–Ò]D ó¥¦JNù¬Ån¶òÄòekô «L O-ž_Á^ýË·.zT|ÚÈŸ>ùê_þŠCÕMÕæ[@T@ ÊÇÉÇàh,_^|ñE•qÆŽ믟ñãÇG¬ÚP~5ÅÞ[(#÷þ²žq“Ïðk½¹¶ÛÖubr̈Nù8,8M‡È²H?N锈4ÿ°zíÎh<Ôë‰*-ÊÌm£Õ'iôOsEÝþl­Øý¥B/ýá4¥z‰G°YöCè¹ÝKØ^Z?W~©þbgyªd—Š ÁpQCÚî}æŸt÷zGßù“J}OAzHÜø[§P²Jχþ¡Š;@ ,#‚ã,߃}<½‚À¤I“ò•—^z)·—°:Î2z¡ÄcÚÌän”ÎýʺÝGw1`bÒ°’·uÔ®¾|꿘è|‹ì²E=íCÚ¢bàäO‰ Å(¾)t­ùp4í*I„6V²óWë•nÐ1•=+w…«q ©ÈÓGmÎ?kfRŽ6ÿTí²‹¦åÇ9«¿}>Õ2ƒÅä[ l¨OúÅUêø@©"K}´£öÜïº1±Íò–”\¯û›Ÿn%ÿÈÞ÷úé7=·Öèñ[žñÀ“ÿg¾YCú®[G8“o'Û;4±È7MKËh3sš³È Æ€@ XjÇYÂÃs o-ÈÈÕW_}r×Ͼûî۪Ƀã,µWHLܶ8ó¯ÿáú¹ý¼3gRjÔÇtìÇDœœï¼}âv×x”q–XF™ÀžÛÕ Œæ£µ†µ7j6žuùÅÓF…dðñŽÚ{:jûïÚëqÚSWçÎ÷xhÕƒï>|Ü+¤™ü æ l«|7ì dÍ'Ìwñ>Âå!nŒ&ʧh#}¹g4@ X¾ÇiÕ):æi ªš'¹«qhÉœ& ޳|ß3ñôÁˆ€³zªƒÝȲ)O³ªÒôwþ_¼ò# PFÔ i>ƒä+ñ…Ú —ÿhz&¬ëG?˜¦ƒ•Ss°3Wvܬî€9“'c„´ax(F~Ü-?›lÎ?]üÕÞ;ÔS§"§¹CnHí)Ñxw‘¸%¿æìq³.¹pšô¥Q1š +yþ¹ 9äÏ &BŸÊAeIñù§Žÿ­×÷üúèla™. ãÕ×ÓØÀõÊj‹ñk춨WP›õÞÝMߤb!;•§¸²¨sFÿ@ –ÁqZuŠŽyZ‚À¨Q£žþùË/¿œ¯švKæ4Ipœ¥ô‰iÛ+\ç Ÿè¨í¾M/ƒ=ò'ä"–Ù;÷w†5îB[ÖyGmí·ÖcÏ*gl‰9ão›ˆ;°DØw§yô¦Õ;j¨ÐIGͺì¢é @D1`²‡°†M×ì $C²Vš¯òløÑ>üÐòŽ.8§š„•Þnv!h­BpÒpÜPŽŒ¢×aûvï:íâ3ﯱS·†[ÝyÏkÚ¨«¾çj/§»œH'ØÍí·L±¼µÞ$™hzÑt&NoÉC ivà*»(¡)_‰|œü/$@ 0ŽÓªStÌÓ^yå•¿üå/œH9œÖZ2§I‚ã „·M¬aÐ!@^qzÿÞi3ä†ä£¬† ‹QEˆ—ø7VÎÛ'4¤±0 ¢Rç»:jt„{9‰|3fxÝ*ïA¹°sϨ‡«¹Bx’.$8íœÓgІØ<ùĉ9[oX÷ÀÝRÎÎèCç\så”GšH@Qd§œjÜñ³úû¾D¸•=iFô ±måEÞÚ6Ûß éz©¶ì»SM¡’Ú£ûís£¼û±ÿ–ÞBRñçÙgºÙ8QçGhÆ«Fàã4ùO {µ*ª,•s ÒèY}~×q1€@pœV¢cž%DàІŸ]vÙe çÌÃ㠄·M¬a°#€§8<7ÿßõIú‘ã¯Èf¦Bd1åá\°–ÃyÊ[¹ñºÉ¼©ÕA´˜ ¯Ê¹]žKËä-·5(J(fä‰7ß8™˜Ây ôU;ó”™x “G‘K$õ°¿vþOÆeny¨©r þl‚ʨ!ßúz=qÆ _°–B<©nB~2@ø ÐMÖÿP¯áW\2í™§›åÉm!6‰£;bÿ¹gœ43­ùCŸ{–Ú{W_ë3MnQ¹H~"ýÊWD+{IpQ3¨UVé¥/7z•óƒÊD;‚@pœ| ŽÆòEà‚ .øóŸÿüßÅ+­ZRpœò‰e´=?¹¢GFQ&ƒ±ù#åáÜþ°}ç¤+Ò:Ê[rm*Ç{$%u šHu/;k_ôýi<¤¨K·¸à,]…>§Ë$"ý”CÞ2_¾)/ ió”ä±àºÌVrà ftêq3º¿Wн ²|ÈGg¼Éý1YC^úË*Jÿ üÀüɑֿ[MZq÷‡V>ð®·vŧ Øë“KŠÓ+—}É…Ó+ÿ¢$•pÉ,BUz.ÆG qÊjŶ–=-ÆbbH ÍŽÓªStÌÓrž}öÙVͧù{ î-A@XT%-å‚ïÍ4³cö~;÷â8ôˆ$| '„ŒòX®MãÈëÁ~~ýä\¼F¢}ÙY¼1EzF“¯³‰^ûkÉìÚüÎùù–)×óæŽ…‚“3^c~¾jLÎ×ËX@*§”óhÓƒ$yœ]£*|ªIN¸Ò+¯43=³µJ Ò?¿ë¯kŽ¿âŽæù)\²af·6[»–|§éGå]zÙ&«÷ÂY2Ns9©í@ Ú à8­:EÇ<-A UÿŒ íô’‰½ nåSzjH¥áùzÈ–Lt#]Ä>ÐÔ–e_¡-ŠfêŒæ$#å¨vܨNÑ_ p÷vM%‹‡sÚ¿˜xÕ¥S¶ù\í­óç¿ïž:ëWæï—תr“ýwGP%7QK”•\Àz¨'²4X®‰UK+Ì+<1#\©¢›$N·Àoœ’§Mñiß¾ð7>ôw}ÂöHBVØä2ýy>d2˜æ×ÜeºÉSâV ƒà8-9™Ç$­B@ÝÏ'žxâñÇ¿öÚkÏ;ï¼VM:Π~MÅâ 4—ŠŽ@¡³X¿¬|œw/ãÑH‡p1lÈ ®‘>žóÝY›ªn À 5sû-“}t—…Â"M .pþY3D3ód‡*dZF‡ï7!J³ùË•Zôä‹«Ô“}N:ª»Éx:ÿ'ÛÜ_ô—3µ;=7_Ô0?W”-_ô8ád ŸÕÜÙpXÝaÛ-~¿©—¶’ŸU6Á.·¹âÓV9ø®Ooü¿•ð¼²ó"µÑ.Aty‘ýéA‹4gt@`0"§U§è˜§å(‘Óª9ƒã Æ·S¬y0"@‚IAhoïâ)[}¶&v+mD.‰€.Ço‚ŽÜ–ÕºÚxÇA{Ì3|îΞ‰°[û ²éÓA]TW|h's’>JŸa5oið¸F©Ê+Úòú¥áz0FHŧ¥þHÒtìȺGB<6¢Ôοv= qÃ}¯á&t¥¯›*-…’Bm9ïÌgœ4Kðú£U¨Ï<šô\& @èû¿Ç_ùÂê#Ư¶×#ßÚ{J6gh\Þb\!Q»0Júó/Æ1$v@ 8N«NÑ1OK¸xþÏw¿ûÝc=¶%sš$8N;¼­bƒþc*× ,§ÓÉX`ûM{éî¸1ÛŠ¶|”„’ÂѾÏ\<‚Œ"\ÍGqVÂØ°$†ÉbÛÖìêƒþ ‰FyÀù8‰¡¤¿›­S^+¯h_uiw`WêF6!wþK«Õkƒnñ™Úu?™BòÄ4G5|‡‹þ"LN!˜Ê7€ã”u<Í»UúäJÛèfÞêøÇù§}í觯ùé¤Vy;çE#@ÁqZuŠŽyZ‚ÀرcoéúQgÖ¬Y-™Ó$Áqâu,3ðÏêÑ e`XZ€\Rˆ2Ñh„iò~…T)(C”aFpYû­uŸ´œ³“x·´ûîy}Ó5ê*q‡N‘âÊÒÝô÷«ëÕJc·táÊ}yŠU‘lHƑ̆:wÖ8{Ü,xÒöûTg(&egmKêg8$I¨£cîjß~`Í‘w½­£[oR-(hNŸ ÅÅ@ –à8­:EÇ<-A`âĉyž_|1·—°gIÞ1vh" ¯äá&* ƒ‰ôyÂ_tΖëש[|ÒÊIÐ}МqÇ÷„®n° „‚xtî3JÁEjŒ<¶lßܲíÆù™a5·´sϘŽ¥9Jð`^;}¥îJüô¹}YBy¸%žp4¥y,lÓ5k¶€Î|e½Ú§½Ì?mýžxÚëH»ª‹â\‰æ`X¢òÚþä¯R*3ŽÜ¨ëm7OiaècŸ_J\ @Áq–ððÃ[‹À#<²Ï>ûœtÒIÂÕöÝwßVM'^wÀ"!€”$Bm¶É‹4Cå§ð"s¶—MC+Ùu+a‚S>NÄEæó¯)…ÃÓlïj ‚ƒŒèÆ‹@Ѳ l»íæÉoï}]ˆæò…•êÏÂ\$ãh<ý¸Q³i Mî)ç¡Uyny…` y> &Wñ`Îl”G3Rp’¿ëމ¼àˆS’‰n¿óï_ùñiï[ã÷æ´Ö ïèJ#úö.5C1¬ä2.‘oÇŒè´Î«/›þܳuë¹¶ùÁKT[Å—ÛŸØH , ‚ã´êó´8àŽ;jKã¿÷˜3h‚5AP–#ý^~Íÿi¿ðÜé\Š8à 9O¿É yë/ùÊ@æP1Ó#äã#åX•¬¡Ô’$ѰwÖgóO×9îSöW׆±@Ù?Ýu™Jm:yEÛXiªÛ°­Æ;\'.ãpöþʺ½fæ´ÆáÆë&KùIóHái4‹Ë7CêÆ?mƒ±÷ŠO{ë|ÿ4×1¬ä6Pžùsr€·ùcëÂPK ò–c_Ku‘òîDbvXs ÿQ-Ç Æ£@``"§%'ó˜¤UœqÆyªˆU˜/XU["@žç’N¡â¬TQü…BŒ´ö,êAJçã“vÕ¥ÓE‹]|Á4Žù¬±Ö›j¤iû<ÍF<çøÑBÈijá_Rl¸Rö'|0R'V¤é $,uc ã¦"F6€4‘r•îrZ(iÎèCæ ¯â$+q«[~Ö¯ Ú.[ÔçyG—Ú†ßy°|¢ö»Ï3ƒl Ö é–ç¦D§FËkËkiÏ?7A$a …íK¤"âÑm§×_bì"ŒÇÉ'êh FŒ±÷Þ{G¬Ú`|™Äš5e&‹ã¨\ekZþC=a†–»d”Ÿ_?égϹŸ/j\pÎ þÒ¨9?Ø+Fކ¢ô§3üˆúó/Õ°°[~>éš+§âA ÙЀþ±£6¬£vùÅS(5'Õ©„r~m–Dù>œÙ•wsg ;©¶ÎȃæZ*§ë”PÃö­?dvØbÎ?û|ŠOÛòsµMVï53Õl*?Î!—ôcÎ|ÑáßG<c¢  ëïqƒåzÂ-o099¤CÄoa°|S±Î@ Ž3ö±†Œ_µdª&VíÔSOÍ×—°ù8íôÖŠ½´‘ilÁòTCFü‹/´^GÈE3G<}@1¤Þüêá ×ýdŠ4– ‡ÕsÒÅq‘oD²ÉUㄹTö‹›°/#ˆPmÖÿp]QfÍÿÜQs`¶Â²ƒ í·s³Ù»;ê~•TDƴ¨n¾qJ¹qmìé€Ýæ¡QV’FyÄZ]t6‚S ø î?I²°.h”ëñèV>”0.û6ÜpOþåîšþ-ûÆ@ ޳„‡çÞ*.½ôRS¥êŸQ´^2±—A!¥Ã;/KcÙxÓ™§ÌBFÑ`@͆¨hSž{]dhvÏ]¯# ÷ß; (݆³”‡ð(K™2¸ŒS´•ûË :wÐà¥&=çˆýçn4ÌŸa‹2fÌðN^Ó8E) gì¶ÏŽÝmô'ÃB¸Éé?)>m§SŸzõÏÕÁjÝÕP<´wø~s°- æ0€YFꙦ¥wX9«\¹¶-ççê,ì‹r×ÄÀaPï4Ëà8­:¢ÇO! à ®0ܑՓ4*Û”‰%sŠöÃíYÏrN—6qY(ƒC~>½Ë:Y¹ë#¦ðÐýoºwwhٺדּ˜}wšWfm¥6MËZÒz6…f;À¯Ì-up’4“ÄYò³då`1"ß*äHFÿÂÀïäÄ<ˆÍçžlÛôÇOޏs…M’aÔ8ÛóÏýÝjy©qŠ3·C™kc ª%€­L½Ç¹n½iŠ”(Êš"¤O=Ù&"N#8q%¥‡@pœÆóp\Y.Ü}÷Ý×]wGû×>vìØcŽ9¦¹wô‘GyõÕW§¥þìg?ûÚ×¾6uêÔþVgé½Cbæ@  þG½ð0ehhçöÌ;¤Ÿ«t#.‹=Ú.[ÌÓá¬SgÑw’혘Ü35 ›?\n‹3ΨÁ“OL¸ÿÞ7+)J-/F\œ»'5‹8¥‹Ô²QeNöq¹ÿ"šKbIk¼£¶í‰OðOûÚ1¿E LË”  !QÇpœÛo™\áY„-° l•¤–Ë&\YQ Üit@  ŽÓß©8®/c¸F?õÔSúÝ®ºÌYgÕd Ï?ÿüìÙ³S‡?ÿùÏ›nºéo~ó›þúÇiƒ—UlaÐ!@Á<æü\²×\¿‰hÐAT¢É®eçžQ]K„ïÖgÞ_»ûÎIÃæ3štîó–âŠ,þB<2ÛÆ+ׄ‡I¥9vdg¥P þ&QÇGX592ú0p6Crèè¨Ç§­zè]»x… #†]@ó°+:©¦M•K;òW摱ÿw×¾n½ir‹Y^×ÅÈ¡f¢}•ñÀàB 8N§â¸¾Œ8ÿüó=Q|EfâĉÚ_|ñ¬áµ×^7nÜؤspœÁõ^ŠÕ¶dîdRXäSý5Ú Â’¯hÐhxh°Y&î0UƒÀm7÷›ñ%P§R¦ÿg¸8weÓ3_GPgXé—P‚ŒÐtr›ê3¥³YžDC`›J£i ,ž'Ÿ°Õõ"WÞÑñڪûãÓT±á!Ðg²Lb‚ôÒ´âôÒl|o¦Ú¦üÔñáe'ûÉ$oêz²S®a9¶eN!e¨¥Z6ß¹ÆtÒ×ð¾å¸ªxt ‹„@pœ&㸵,¸ì²Ë<î¿ø…@µô\zÎpÚi§}ùË_V3tÞ¼yM:ÇY¤×BtZ‚€Œ~Õd Ј×J‡çtì÷Wù˜ÎFåÊEp±Úü)3¸ 2"&mÄs¹¥‰ »öªzøY¹H™ìrX¤ä`C’ÙQ ¡_S~„†r<žqR=zMn"SÚµåÙ\älrW£xú‰³®¿áõ®_¯ïùþµ^JwÝ*óhò ,×P<ÎØÖF–JCè>éU+…¨¥2£Ú„A 6$6&¼»ÓšÓ_\lóOפåmF#Œ@pœ&㸵,¸æškýÆ7¾ñÒK/yî¹çž;f̘…Y€@5Lg¿ýöKêOŸC‚ã ä·P¬­P#õ(ÊÚ8Îþ»öòsà¿ùÆÉ(ŒD~.Е̔„Ïm7ODØ­¶óWë5tDÁ•TxMùÄJUyEÛ)ý®;&Þs×ÄݶžGÍY½£¦0e£”óÔ“ÞÕEŽ0¯"®lÞ§GÜ¿úáw¾­£{ZávÔ™Æï½êò[ë!bÞ(AY?2§íó[@"pŸ=·›Çˆ³hœjÙ_q—Œ к”g”1ä™°ZGÍ^–ýªâ‰@ ,Áqú<ÇÅå‚ÀÿüÏÿdßÌ¥ g©,oÒ¤I›m¶ÙÍ7ß\¹ž?ÇYŒ—C –ñN~ýoÿ㾘É44i)xJ>?ËåÇ®¾l:oç> Ž•p“Îý5øäH0¦gB¿ÖìÊÜO}ÖÿPMM9„W›>Œ£átþô>wÏ]=‡vDW’sÉ…Óœðq.Ò’ S|ÚÇv|ä‚+þ†¡Èî±Îä;ÝQ#·­ {ÄàÌÆ- Ëí ŸÉ,xàîµ_‹ k[Ž+@  @‚ãäcp4Ùp -;9H÷·…à8ðåKjW ,¡Hål†ï3GcûMjòýSÕj$DcÔÁs„¥)#w†k™ÿí7­­ý–šz7Á½™4#¬+G‘­Ô!njBÂ7áÏ& ì”c:Ç^¯Gõ e”x–x¹cGÎÞð£½(Ê“óç|w–Itöô™ªGmdÊ(WªÏ?ÓŸ¶÷5 ô4ùîd!½{þ<éÂÕR¤¬Ëîu”gùþÈZÂÅüV¢õrL(rÕ¡:5àó|0dù®<žÀB"§¿Sq\àl»í¶sæÌI‹œ5kÖV[muà 7ô·æà8 ùBˆnÀ" kæ'WÔÍäÅ 9é˜ÙÎùçœ>C"ÌøÛ&RI¨!òîÕÄQ¬3=QÜW™>säsr( óÙtO…+<¨î$ Ì, $m²z'¶ÏŽó¤É‚Ñá…çÿN4ñ›V’ÿ}Dg ³$2н¿|c»{&Ñ¥ó ¿|uÝÃï矖ãÓØ 4'8iIè[~†5@âÐÒÚü¶×7º7‹u–y@Ú2žÒâ×y{䓎ê”Átî3?ýÞºÜrggyÑ@ 9Áqú;Çõ޳heqЂÎW\±ùæ›Ož<¹¿5Çiþˆ»@K@X¤–PgØŒÞ)(+õI®¨‰ƒSä‹,ÔòsO>º—ÓšP±D H<»oÓ3±”—‡ì±  —'Ô³ã(¾ÙÚu=×H9òñctnfÃ:ê95õ0¹Ë§~¢X­yÖÜè/kŽ¿Î¡{êetìÅQ?GÇåe§Õ‰VÅÆÍ_môJÞ el®Q¼þÆV¦ZX"–Béòsap¢Û>;Ö å\'Ì lL\ÊC¢ÀD 8N§â¸>ÀP0ô€Øm·Ý¸FÿûßöÙg›,88Î|ùÄ’Ú_=ü†§ ‡Õ¾¹e=å$e¯çã4«.)3']%K¿(rjøEçë¢Ç¡,”*oñdØ–T-ïŠ1+?zéQÂSòuRƒ5 ®d,i×­j%“Jñi+}õù4d«ÏÖ8¼•ÍO×G÷/õ¬PÛ×ÉC¹èyø*4¯¡SιôÚVõ©÷ô¬ÖÂ|MiÁù¡àRHÝÒø @`ð"§ÉÁ8nµ Áqï;*V>X¥†Úd!_†L“?²à -/†›Y¾¨¥ æ 2."8 è¤36›²Ï­ÐkÈA{Ìc(í¬ž¢B9ÿÅqý[_ïÕ9[8´µÓWê¹ó Ö8c:f¦¹üú± L§U®YïÝÆÎýØ7æŸöíãþX®³Oè´·ÊžÚ©s¹£Ôa TÀ¸ÛÖ½ ÚüSµ\Th°üc‹u@ °@‚ã´Í1>6Òà8 |D‡@`IÀJF“Žô—_<Í©þ”cfwæL™,¹˜˜•t@\Ù¿˜˜ìÅ•=tÿrvÎ:u†º3è’p²$åÜ卵όh:¸’I0ˆ¼`õ@²Þ¦ªæÁ{ör¥fe–ƒÄ±¤¶AÀaïÈNeéðì/’ò™Ô{´Ç…L®ÊèCêŽ~?ÜQã Í¿KÂÇZo®_ä,-¥Ež~ê³BClæ® §D’qÇwRyÜ-sy )HΈ¿UE@Z™&_F²>‹U2ƒÓN˜uÚ)Ó¶û¤úžŸßÿ™_<ƒ(“‰ÄÔqKëïûòÜ\ûÆÂ´5{ö™ ¥ý2GUGËIDˆQ—Ê+ÍÛÖpÓ S úÉ.xÇyDCPb[—ìÊž’nä ]pÎ 1x%>eŸh@ 0¨ŽÓ6ÇøØH‚ã ê×T,~ # ö齿~áµ“Žš%Ó?qeôK´Çb*qP”9;ž;ÙI<‚DRj+”ºOžG€™í;Š—¤Ã]⎙1 ÅS2‘K‚¹ÈÙYëMõ¢ŸÉs ˆSpEÀYN;óªKs(ݼU÷~pÍ‘wŽùÁHK&Ç¿¬J >…JÈ-‰çŠÈ:±sy¶Üxð¾7Öèh¸§çëHM ´DÇO;;Å! Šé,µÿÂsg”LñÉaxy ;Me†àÃp[¬uš³ì“Û/ÿþ5ÆtCU¾…Ü3@ ´+ÁqšŒãVÛ §]ß`±¯åŽ€H09/ŽÓW\2šÃ”˜øòÅUêæfÿDŽƣ5E&Ÿ½SÃA½r7ÉW.»¨^\F˜[³|qÇÍê%>ùä+‹fÏ퓌˜ŠlpHÄêí¯­rè+ìøÈa#ß8÷ŒI‘áÿÆTy—ÍkÇêÔ ÁXR²¶Þ×y¹.Ù<ÅŽ~pö •C1š ¥ÒÁ³ˆ&•ëˆ[^¹m=Éa‡ )Á#έ´8 Q¸Ê!`ññš+{ŒéÌà‡­F–ËÜä! )uŽ¿@ ´1ÁqÚæi‚@pœ6~‰ÅÖ–  žyºn’LwHÚ‡t˜£œ}õõ¶3y«Rtò°}»ÃÕœÀ7úX=$ÅS#àS;α Z:`~”A<˜´ŠÏÆ+wþ©ìï¡ù:drŒœEÍÿO¿ >íý뾨ÉJõ Nj§¿XUvK@"Ò„t…cr·M×<ÖïÆó(M,ò( 3[o·|‘ –7n`£}ŒUöјµVײù'ä©Rc Ød¢À2@ 8N“ƒqÜj‚ã,ƒ—I;Î+-àLÌ*í󣕴Ûrýzê¸8eƒˆYìÖãz ¨ ‹ãgri[ý‘¸€—V"€Ð#)PŸT±Ï…ÅÅ@ Úà8msŒ4A 8NÛ¼²b#Ë ¥4=KÇéŸ\QÍ|/É 8uK™•Iá);¤6FC† ÇH®G48å>ÚbÀh7ÛoRshH–éLšóâ ¦±OŽ‹ê„6*7ß÷꺇?°ê¡w~ôãK=ˆmÚûçóÒ ‘nå¿DSa²uð䦈5Œ:xK·a]ÃÉ%Ò0‘¼ì²¾a(´*Îl’˜Ð™­7¬Ýò³É®ÀÇT˜µ ¶âÖ$æ<úH7Wò8Œ(#º/°Sð-ì²EؤQº:0CÀÓÊ?±Aƒå £@›!§ÉÁ8nµ ÁqÚìÅÛY^÷ÚüSuϱLÙ,Ëq6.¬L¥7J`X*Sö”)³ßÎ=sêVÊ=¥<áÖ=wM”AŸ0¬k„–/®ÚQ7^C(Ä;øÑÝϯ=füÆ'ÜwêÙ¯!S4Ô쑇Þx÷|‚à •@:ò$©qËϦ”KÕY§î §5ÉîÐ VاÛùí]æUz¦Žä£<­l#tiŸ»÷+¢Œ:“×DâevVwvÛº¾©rïæDúʇî;bÎПÖSvŽv mŒ@pœ¶9ÆÇFš §_b±µe‰€#ô1#fë¸×-öef ¬à)D¡kæÉ©(iŸx|Bò[þ¿:j›|ŠÚ>üzýa=S±SãÑD"¡nɰZJQöO3®„ÁIíÇ;~û›ºœ_{ÏKÝ×Z® ć¡O((8¹j`på•î§Æ(ŽVvӖД}äÒ-x–RNŸ ˆ‹@  A‚ã49Ç­¶A 8Î|¹Å–[‚€*J½#%)áœÓgÜuÇDç›?HêŠäýt —hãÜ~õåSÕÐaS&ÖË]ê•e@uV)&MK4©h4(e¤òPëÌy4Çba=õÀÝç ýÚc¯‰ÛùaþiÇ^òRcZÎy±;AtrmÅÚH3>ßg® 2"ØhÅz­ÚÍÞ;ÌÆÒ^üµf©F—\X÷j#Çä³ÊÚn½©ª 5ªE”—Ê(+’§;ÍÿöŽ «yçÚ‡<èãi'Ì”;“Ÿ›–„ 0OCj.¹pZŽCpn¿e"}䨑=…f80_rát¦ÍƊГ c͸”®½jбŠeÍKêI,©|®y¼¯×ñrñ{öˆ¸•òõÔ“¨Wåld²F4âJ @pœ&ã¸Õ6ljw] °¨PV.Ȉs5õaQ'Ñ_ —x³œc¢˜fyD'…$ÿ4J Ö •~Äsð…òA>òÆP$¼œÖ 1cåÝÔ>ÿ¬™W]:…ä´û6õt¡ýhòêÛ='>íë½páõÊžäjTùhºP7ÊHºèéå]m.Ù%ÅpRzæÍ5i>,ÚrÿF×mÛÏ×…ž¯m„¯MÀŒþ¡«?÷¶ë®ž \U¹ÏdFݸ)¤Éƒþµk ©n»y µYŠ- ûó±q`\ @ ŽÓ6ÇøØH‚ãÄ».XT¤~ä3|jHœ_ŒI¸@ãJòV’T!ѦœVšœnßçäNJ«1 QG†œDà@ÁÊþ¿zxs€<óŠ»<¼Ö¨;þù_s5c ýëÇ&à,DdÁÅ5:jHšsó“¿½Ký Sµ<<5äé¤3ùºb£›®QWp¸ä‹ è PYÇ‘jT2 …DÉLXÁª‰îñ m Ÿs¥Rʳܗ6„Äó- TÈ·¢@ à8MÆq«mޝ»@`Qp„Îä"ç%¹,Ò$u“ç7÷ˆò÷Ì%­ÐA2A¸öªfsJðÿÒj="£²WÝÙÚP¦æ|ìÑ „ž”Œ/>MöÍÇv~dƒõf¨>Cˆ!vˆ³òóΜ¦:xîΞù­¯×ÄŒ)CsâØNJù©Ä€¹% AËKÕÐGðÞ Ïÿ}ßz15Z #hý>VŽÒ–Y³HÐEç@ %D 8NÛãc#M޳„/Š>4p2wÔOÇu1WØÄÂã@w¸þš©c†ÏÅ >·B÷$ò_ˆ‡H- >æÇbšÌI¯yëü¤eðjæ À ÀGi,ÂÀLÂÐL^Ï:ÿRûÀz/vŧ½èîÚo©!/*–n<×Sú¬¤äì±mmýÖyhi>§Ÿ8+E”Iºô‡SÑ«3O™É¢ ŸÚàßj?¹b:“æ8Žè²´žô÷ËkÕŽݹÎ;êÞÎäqå]íÒ »É~ãV« š=n–¯þ±å8ÉVMóÀ @ 8N“ƒqÜj‚ã Š×Q,r !€`⩺â"å} 8Ÿ~orÊ1IZ Ñt­˜ª1|~OGí“õв™;µF¾‘–ÂMzë­§¬?ê 'ñ ŠßwvQ$QafÆÑ$û\ùãéÖfÄ1@çϼ6ò :iÀvÎwg%°ã|ÙEÓeĤ!üE?¢Ëž @‰apRŽg¥x<˜Ò¢iþ²>[–qe\š¿U@n¿´Â’g}­ýv; &Çi›c|l¤ Áqš¼âV ‡sÿÇ{‘”š&¸Ud‡ÿ“Žêd³ÜßQßÿiG, 17ÅÈI1*×äD5CÙ0:C"ÞÝ1AöͺÃ3JŬûW÷aF½TŸ>@&gÓGžËߦ† Æü½ EÆ2@` §ÉÁ8nµ Áq–ÁË$1HÒ"RKÜ—Ó ·®–DU9ö—‡Lmé*}Ú#£š ±DdVë¨ULÕ†á‹03©4yZ'y×3cØÆ/ˆO[mÛß]rñää{vÿ½u®„þ øKIÜÐîÊZõR8[oX;bÿ¹þ?žÖyØRÖÌW4Ä¡YFùýª•㺈;n©çª]:sJŠÒŸbêôÑÈ ÷llî…ç'X!›‚ÊfóðÅhИÊB¨ ÜJÿíŘpÆÃz}}4ÄçŸ[F4s‚ËÚà8msŒ4A 8N[¾¾bS-A€¨Qžç?ÐQC–pf1iåœÎÿI ñ¿ÓÙ;3ˆV‰FbK:ù£*eg䥬+šjÄ}äìÝ¿Ö+Íw¸òg^ûà×yç;;êþi~Ý{®Ò3W\ҷǵ§ý‹½N¿ÖIZrUÖQÆÆ¦`­7ÕI º”WånÄnܪ=Žû´½T$ª’7™s´YÎoÉo %Yé_ºªˆ*pÓXÒ´ò¸…ù¨¼àÔøÞi³f`ûõ¹ø‚^%„ŽÑ™-ïÚo³±£@ èà8MÆq«mŽÓß ®ʵTÎÆ)CIá$ÀŠYæ¾™Wé艛bãì _5†Ÿè*…é)Rl*  tä§Sy>û‘ú<÷þòugWêŒß£è<ô»ÿß'GÜùùãîÛz›)ŒÎ8i–³T ýÉÃËF# V£cçž7­´žö8±p*¦…ѹÊyØV÷“ A¹©ÍÖB/.É aìáÝGˆÙ«“ܳ$Ùñ»°·À¥.÷*¥ú÷FòRµZBFRâUR9ãUl·—û–c@ °lŽÓ6ÇøØH‚ã,›÷I鮞ôEàJß9¬SÕÑ›oœ"G°\™w£3[i=‰,äAkixú‹ |t=âN¼YQvý}Ýj߃ÊÙˆS•mºûÃóº+òŒ;~–$ WМþæ\àuÒÒ^ßèy(ƒ8à/pÔrïP¦>‰¯kÕš©fþùùKüÀÐD 8N“ƒqÜj‚ã Í÷[ìzaE¶ÅgzÎÆìÂÈ 3pQûȉ*VÆ€½¯£æ*4NvLf?¹¢ÑD„[Rst[aÇGø§í>úOrˆœy>;oøÑú œ® :È”µ!8jÙäi™p(‰†»Ü<Ýä ®Ë…ÅF÷‡Ö_ººœ‹GgúÄ!ó—´€“Žš%./&5.j`7Êr.ÏH„,›Mר›¤}u½zBŒÚ˜1ݨ,²Ëþd¦ßþ¦—Ï@zMGtß×ME%DCYCŸ©ýܧo¾qòEߟ¶çvóýö.µw¯}a¥žó¼X¸/®Rÿ(f/…ði‹p[rb‚8,%–Z~/-iûÞþye˜Z2seÙRþUTr¦*}âc ´ÁqšŒãVÛ §Í^\±AŠ@%'ÅÉ–£Zó½ð@–·²ç³×ÜáÙŸ–ÎÃ’MäûWÒ7Ðä-•F½Î|rÎC4°~k˜á†Ñtî#ZŒ CY³£&K«ÂÈ*‘NŽ!)ë'Dv*‡gk6á‰vCÁa঎ÏùgÕÿb^ŒÝ$¡Z'|g&Zç"ú–f»áÚ©?ø/8&-1"hŽír¿‹Ð©=”‘ÔUØÚUù‚É~¼ á•êY]=à­}PÌ à8msŒ4A 8Î@{óÄz†&"»ˆòLÛ_ `%fôqàÜϬ9sCZsÔùèßÒX H£zB¿ö’'~–Û[}¶FÄÑà$œê§\ð½îP±ÜM^ ÂEíCóI‡â§å7EuÒ¹Ñ%ÉÝ,cwÔ‰Ò¹gt§Û"”ŽF¦ÁoáÃ]“Ó•.»hš4"CböÔôÁwJC0ªë†ûÇÅ@ h‚ã´Í1>6Òà8móÊŠ´x3­œýƽ¸ÅIØÿØ—{~Ñ…S?¾ÙóâÓ>¼ÁóŽ©ì—ñ¹0©ìæ 5TÁQÇ3bÙ •ÿÇÞEA_×ýdŠD"NêƒqH¥ImÄWJm%éèŸj¡æ‹æ,)Ëæê˦c:âÓR¡k|n¿e2)'i"£Þ4ÿ.&I3¼©+º’á| È:I’@TŠ8ir+/Ÿ®-цO£¹¡ÉVÙûâ}ô½äo35JÑmñæŒQ@ 0(ŽÓä`·Úà8ƒâu‹l3°˜Eжb/@ÙhÅnúðño>²æ¨ñŸÜà/7Ý0ÉE´BXWé~Fñÿäó VŠ i¦üèÿá£Kòbè)øË5Z‰:‹_Qp8‹Iä˸Žk°}}Hƒ4k5vå—BXI9òÒˆŽÕyÀnóœì¢J±$‡·¼Œ}wªçþHáAÍvݪ{kîRy®¿f2å(BÅYÊåQ©QÆãÑ¿laóO×s…N9f–?WʵE»O„n¿IìˆmËÃáú|n\ åŽ@pœ¶9ÆÇFš g¹¿jbC db,óeƒ«û˜I®©ü8yJu!8Ƨ—”ÆÌæð,ê옋^^õÐ;ù§mµõ!gäΩŠMf"Ð ©¤ÿ˸ÁVN;›G4=H^ õ¤Pè‘ãO1ñëéåªîøÅDŒ Ñp ƒØoçy\©q«2cå)À÷ b vÏ]+WÄÅQ‘lá[_Ÿ÷/Õ׃ªx‚³Íçj$¡œ"Öέ·ti@èæ•q#W­ÿ¡žƒú†ÃêÎ ìV[’š¡åÞÛ»Mï#Þq·CHµÛ{³±»@ ÈÇir0Ž[mƒ@pœüŸ|4¥aBÝÌÌ4JšàéNìþwzê Xë¶›§¸rèÞsN>ºóýµlð¢ø´Oÿµ¼ôÄeŒr:-ëø` .V"‘¤ó úJ´  žrÿ½o(sÙEÓq—)$úŽŽÚˆg{hêéï“OLH5@¹ #Ü·~pöŒäº¦€‹B©'餬çÂ% Ü¦öåOûÖ×{Ȉ+X˜˜4£¸´IÒÙkûyW_>…º”âDiƒ‹ >âÓ$ÙWÉ_ðµÜ?5DÙ©[š7›7@ „@pœ¶9ÆÇFš 'ÞxÀ2CÀ‰½’3úÐ^™ûHMybwÈGCR6Šúž«¿ó¯íöµzŒ3é'iåL€q@‹³dV NÐWÊ1ÏËó«!<Œ.ƒz 8÷Üõ:O¶Cöš+¢Œ’".Y}~Zü—Œº‘¸-àYˆF¹—Ÿ_?¹®þ|¬ûâ^ߨ iK”È‘:ÄS{*‡h÷Yö4?ÑNíº2uÚxåÚ"…æ £ÀP@ 8N“ƒqÜj‚ã …·Yìq€ @ìxWï“¿ˆ¬rmìÑœØÙ¦#ʤ} ›îøßõúžß¬×÷t—ã¾ n£"8)ñDrM¶A““’k•Òk¼‰|kbÌ¥®(~„[©>“jAκ틫ÖD¬]ùãiò€ÍÁ’ÖA¬”Sb÷žºÜ3×"É@ú#DjöÙqž% 6Ã;n¿e"yÈù>8‘è¦&‹1³ß Ïyî3o¼n²½è°Ö›ê¬Geõ_̬]þ^x²mïj~òSb̰­²g´@ J‚ã´Í1>6Òà8åõÑ–* ;Š:Ër" ~Q>[‘)ƒ&(j¿éšµs¿7õ›g<)>íƒë×ýÓÒï°ŽšnI q¼wžÆ–ïj,ü _VK™¶sèÞsñbt.m2tÚcž\þrræi—þp*yÅ2Òõݶ®¥`¶ô+9úˆÎU;êöÔˆR['Žíüô{kòtR…ìIÐí6®›`k0²F¦Ð%Lš'ýEñ$(A ÿÊ98£4¥š>­ ÿüÇkhïkr•¨¶JýÓáh@ Çir0Ž[mƒ@pœx×Ë矛pÕ¥Ó%ìï²E=§r~†àäCþ ;<²ÆÈñ'ÿäŲ6 5„Z‘û”&ÏébÖ>ž~êuÏâ5Í£¬1£œYí&ϓėóΜ‘M¤+×p`WqH#¦°H3°SP‡"ã÷ç_L·ÈRûï:÷±÷®­ë8ù—ˆóÂóõÔž¤Î ,¸žBëIÝh@øNú²pŸí£5™,e˜c±¬ãÈñ¿þš©”|àß}›šc¼í‹XË5”ª¡}-L%Ð+…„1d®°ªÝGøYË–Y›<WjI:ŠÝdÏtë„1kÔ-§3ÄN™A·ü¬—¨ÌEú×®š>yf6q©NùÅñŽÎRÃÚR»`k(•ÃÚʱýµ%Uæt¥¿Îq=¶D 8NÛãc#MŽÓ–¯¯ØÔ B@ôuF†‹2š‡|}££Hþié(N©an–·ãlÿÍ-{H‡>ªm²|uÁ÷fòqŸ,Å‘|˜G(TŸáÆ&s¡ ¥[ ²÷š+òh6V«§ÆÜÝCD—¡R]äæXáð}æ¼½£n>€4¥I•=tÿë4Ú mˆ®täulÌ+;§ù(Á'õÏËT ²NÞcnˆ¯Cñr†‡¬å¶è¨q9È£š7ˆ\å„_Z­¾Ù,!5w@ h‚ã49Ç­¶A 8N{¼¯bƒ•häݧS÷;:^_kÔë~ÿ gü,"±…öñøô{”²Rïcÿ:o¯m½AàM Ñ\o›ßRm'Ÿí‘u<ÓG³óÝY7Ý0ÅQ?if8I…óßa]LpŸÏ­PÓSDç4µ%Ë`tŸÃ÷›{Ö©3ªåù…®m¹~Mdþld•ôÏRCàéº"ÜD¦õù ZX…‘%9=+YHž¾!gÈѺ–J“bV ¤)œåÉ3÷¹Œ¥qÑW°7¦J-ÇÅœ@ d‚ã´Í1>6Òà8ù?ùhËì0ð¾5ëñiÝäÙ»îž0êà9òbx>¿òJõäOq(«d:ÿì¦û\LeÿºRœB^R†Tîæcª|š'·ÙÖêDùYÑ@ à8MÆq«mŽÓøß~\ –¯þù¯‡]õ„ø´¯Ž}"ô|_Œ¼QPQyú\Éãÿñú?ÎçÎɂҡº1ç…Õ3]Æœ¦:p÷z]Qq_—]4M ›ræF·1 ë´¦ÝxÝd™/ûí\gRŸ½w˜—ÃÞh1ä¤tJ¿åg“å¶à\ärpÔÐ)ç_˜¶Må3j¨ÎC9r½ÏáhjcåÏ<Ýw‡>G¹H¯1ÿ¸ã;KÞgƒ¥·¶n8—Ä¥rIÈÔs¿k¶¯?ýñ5nr`Á4O9¦SŠÅï½C £9~tg޵¼G/+gÆwúJ=õ©?VÛß^âz ‹@pœ¶9ÆÇFš g1^1$X œl`SHÒ¯_|å«ß½­1ãp×s¯¼ò¿NÂÒÏe¬œzl¯ÄÙñù`\>‘¼RžµJëÀg Û¥Ø[æÔ–\Ï6mÛÏ×$Ú‹s+%‰Fr$MHÕ¿ÿtŠQ›÷Ùq^ªò‰¿äG QÓu3ï5jŸk£©û HÏ)'/WÞ¤MFÉ3§Kjm”WšL²0·PÞ×fFßöضö™÷×ÀÞ'Îê•K¢!>M~øã•ý6-#úÀži”(8À¦Î ÀÉm©-<¯Éüq+– §ÉÁ8nµ ÁqZòºˆIæ8Óò[³£&Yþ{7¼¼îQw|ñä{øÝŸ*£*ÿ{_XŸ©ôÒù˳´v ÖB ¤Þ$;5Ú)aìá³×{w/1‚¦€†ð¶¤ütá[žäN3'ÒdZÇ*=Èiœ¾Ãí²C!b[}âØnÀäù´fÝzÓ~¥yÒ$ˆLŸ±¬Ïï¢|–W~/ììÊÚ%_“‘$Ƨ·ÀÌL·Þ°VNí@ –ÁqÚæi‚@pœ¥ñöˆ9d9¬ë}kþ^|Únßì?_ýKÙ'µ96—§â]·ê¥¶äþŽÇ28rObDÎø 9Š›GØ›_µup“ÜS SÜaZ…;’dîèÙUut ÁB‡M×èyФ{aÔ ˆ‚;iÎ+<-O®±Hy1y;¹z$NLYá¾;Ís%ßmmb€*gúœŸél¦¤²õÙ¡¼X¡¨§bk ªüè«,'Œv Kà8MÆq«m޳4Þ1g P"à„œˆÀ Ûwû§±(;¤65áúk&Ÿ=n–!±E±Î&Âu=wܬžÄ‘ ¬HÁ}*ffvJדLsö¸~´››˜ßѽ²I:üÖ>[ e§¬M“Ö.]pN/RC¸!=P…œÕ©Ký "¬ÌL(”ËŽ„À5ùa§@ Bm,æ//¬UZ“ —å­J¸™æÝóÉ V7–ì—°M“|¶,×Ï !ˆ@pœ¶9ÆÇFš g¾ÜbËËç­¯¯rð]+îúPòO“ÿÒ¸{ÑSäæÊnJx'Ä4vëóбJvÊß‘;M4ö!Xp(Ó Üp?ÓYî j‹µE¾Ñ“Ö#ïFβ¿öΞyàîs.¿x%H*½Ç¡ZXæòüsý&ã£*ÂØÒTŸzOý¡>*6ZÑh†ÉÑá =æ¡9[hÉ,Ö; ®ùé!)È)ãîÖ²o¸á³éœ/«Ïã®Ã…SH®Y˜Ç™Íœyl¢E¾å>Ä™ À<7U‘ÈCñ¹ïž7œÏ¥Ÿì»Smý÷ yOGíÌ“géï4n8ù¦O2Õø\G÷ô\)BÒOò, Ï j /È·>´t¼”Qž"ÿ…Ï@£ªÒ¸øÅ»’Êž¦±h£Ý•WoÎ@«ŽÓ6ÇøØH‚ã´êóüúÅW7?½îŸvò5/²÷ôˆCh®«w“Ïù ß4ÎÙx¥Ìâùç.‚§4ªK~ar:óág+õ~¨Ù2ÝP²Ó‚ÉÛ|®î¬¡ó]±X‹i¼’­ØL¢òN¹At)…®%?çòVr}' KBgnr…¤"HÏ(9Dˆ‹3’Ó—×êõtJ“Ò-b»l•O¥-ÐK ã)•D§>":@ °ŒŽÓä`·Úà8ËøÅ:\ùÀ‹ëuû§ýÑ®‘ÁKMÎÉNûŽâï˜Ï8­³“@sÐruÖÐjʬÜQSùeäAs*…cð…-×ï>äÓzõpÎ/™…ö)Ç̺醞‹xj3»õO5uprÿSí¼â’i)kÆâq4¬GFOvHNËÎú”ð62P®Áa Eg “³ffÑÂáÎ:uÖjõ‡NyìÑ YŸƒgýÍqÈwYÆÙ>ׂÓOìñâV·täA½ªÒ¶ïÜ<¤Ï^“LêÒš±­>»¥‹–ÇhŽÚEcî]&FiãJ °-Ú™i›'%5yJÜ @`ÉŽÓ6ÇøØH‚ã,ù»"f*ˆO;¼«¾çÞ?ú‡¾üÓ*ýóG<Sp–ĵð%fÉŽ¬´Ps,¾ÏÜ ¥¢kÐDðšãFu&Í«Â\tftÀN§ëM©Ig{$EôÚ5WNU÷³,ø’G÷±~F™Qgrz'”‡Cš©èA*é¤9Ó_uaÒÞ-LU"”ëÊ› $CpJW7×==Õ¤ •h08îÖò›ÊÇI#*?ò=+çÁ(Ÿyºîx`¿ðç“  NÙŸi@É\Œõ,=Q*_Ö·¾Þ«³IÒä" éeæáG‡Uí¾Mݳº4‘.×Pi[’õøm^—§2*>@ Ðà8MÆq«mŽÓü=wEE ǧ}ÿÎçþgYýÿzi6ÎÎÏ噜©—ЩÆõS^H0©çö›Öõ9ð=F”F<ÇáœAJœÏïýewÈ:ó¾.Ö ³KúÂ'ê;d¯¹£,¸¤Q·ß2‘®AFùô{kŠéP.ÄÝýüúÉ)-È9ÿÈædëf4á]½ùÒ$4.Í–þJÌoÜKãr Ǫâ¤åpmÊN"tÚL°Ë A>2Q]T*!&¢g1 (g0$s7ÏÅSd-é`hã[æLC’HD¥R©œäœïÎÒ!j\yåŠït«ÏÖÇþCGý{‰¸ >ñ1à8msŒ4A 8Îb¿"b` ЈÀUóãÓ¶ŒFÚëLÎ/º®–×C°` ÍiMDÜ¿˜¸Vq>W3Ô±œ¾sÀnstpVÇ•2І}¸›E%Ab•Çxí«/Ÿ²ÝÆ=gû)f ìЪLXzˆ!V•.úþŒVì™Á]D,¯¿l¿(òwÄìÉÁö–ä]%N•ÓÒ°¬˸öª©%û³+3|.fTö¯8Ë¡N™³bgŸ(:C>±¿<üä£gY$žÂ(/_Ôøêz5ŽvÐkL˜*7™På@:ZÙ!Ú@ ,6ÁqšŒãVÛ g±_10(ŸvÄտ柶÷->­œd ÛTŽaù`Œ&ô7áϯï)ËrÛÍSòÔÆ àªK§äÙÐgrjEªþé¯>騡¿~l‚çæª iáv•9›{Ä5²$Áf”©,åЃžzr‚Ø-ܤR7GPÖP$!,耧 Æ£Ë_R[d]%Ò,ƒc}.ø^U÷á#'Þ/¼©ÎY&UJáÈ3’k“·L-²#ó‹Á[³øFtÀ\£æhØHŽl-/8@ , ÁqÚæi‚@pœ%yKÄØ@ !ðÄÿyu þi£ÇŸ7þÙeŸÖ>•Ý8xÏyÌÔ¸I¹ÿNærFÊó¹:›ûí<X÷µ#öŸ#&ÎSøþY3¾sXÝ@*ý“OL •” øÚ¤÷1ƒ_ù&i¸Ê¤Ä”ÊœÍeù,dš‚¤äþ¸†ø´´TéóƤçÇrQÏT§†Fƒ¹àJ7\;u—Í»ÇZ EÃ@ò-ä eÍÐk¤¨X* 5מ~âLöÔ'5 #C",ïøÑVÕ_À^†Q¡Gñ!ÜäGprÛgÇî'"h(¡âži1‚±$eë¨ß°À®ýNº†3ÚøÓ¿ý{¶•—¤‘Ô¥´n XUy7Ú@ ,6ÁqÚæi‚@pœÅ~EÄÀ@àÕ¿tǧíµüâÓúûDIÑ/r°™£²š›8²ÀÜŒÜóÂÀ§鑈m?_7m{ø¬ìGº­ÒQ«\qýþ{'•óŸ8v6‘"™H2{4ö_Û¨ÇFÌA°‚/ )'Œ™ÍúÌ<êr–xÔŒ ‚*<ÇŽìĮ̀‘aqBð±d§1,Ž8HZíʽâÊD”,³Éê1° 8’dÁÄTAÒ„Cåä#YžAÈLŒB$K™¬Ïùã"ˆZÚ;¸ŸÅ˜*†@ P"§ÉÁ8nµ ÁqÊÿê£,<Ë8>-ÕXqÖ-#¦š¬–½XJ½OÇþô—!jp‡./j_rá4ÆÑâÖ.8gÚ¯ž@¤À2*}œ·K{díŸ\ÑkºFŽõB 04L˜0çuJÛ/§å½B—:ó¥Õj”!aG0ש>S›<°Œø2ƒÿ”t“f£CQIÌ–'¿ç®‰"©F# PèÕZ:“§í¯¡3ʉJ±›”Ô“&o\[“Äõ@ &ÁqÚæi‚@pœùþ‰U p®z°«¾ç)wß·LüÓ„HÒ[¦‰ØªâCø(Ïüi,å!Ud.Ø ßi‰'ù/Þ¬ì#ï^ê çäñ·NÞæ¯öÑGÎ.û°8ð±†1ñjcÚV.Õä%YЃ{x7ë)WÕeeЋ‰H/Ò9?ŽB4¬]s]}Ï«.íæ8T§¤¥þ#œK¥ÊcwúJ­¤]HRj’Áu’ ñ@XŠÔ8g\ @`à §ÉÁ8nµ ÁqÎ;'V2(Ÿvd—Ú2‹OÃJØäó¶†#÷±B(H-ÛoÒs¶ß{‡ºŠ!5^,V*ì’æ”;ÿÐýo8ØË‘,Oë!|8ɯõæž±èOiõœžÎй\U¢E ÙÊ‹c†wZú‘>#,­¼k=©<è‡:j'Ží%ñ°¤.÷H]&~Œ÷2'„¨ “3§è»¬ì\úÃi$›òAåª ÌT®|Dn»[ŽÕ¦.% h¬m!³iòlÑ@` !§mŽñ±‘&ÇhožXÏ@F ŸvFÝ?íÜ;–šZ6gf‘] sÒ¾ïž7øHºuð\98ÂÏ›f,×2, Y J|ê=5•=͆à”DÀÀdÂ,m_‡dÑVùj ¡I·çœüÃfËôÇA¾½K/r!õƃs¡il*fÔ8޲›¹¿Æ¸ã™HÏ/—ìòv¢À`D 8N“ƒqÜj‚ã Æ·S¬y¹ põƒ/­wÔŸ´ŒâÓòÀ7ø·^Gnájùn áX´¼@Ü—ßtbÿÂ'j$!©ô>~eÝzù˜|ho¬P#§¿ÉÓuÍygÎPë“Ûmè½ê, R‡´ÜÅ< y±ñc2†n¾qò1#:YÈÜÁ¼¬ês+ÔÑDšå¨6üåÑGº¢Ëõà>_^«>DHž§³wSÜiÂqhU¥Íµ>W_Þ“:”T0ÃùŹ嗓@i€»©šnùË«¡ô‚.×í@ #ÁqÚæi‚@pœÁøvŠ5/cºâÓžTßs™Å§U6˜ ¸¤S·+MŽÜò_}dj³ý¦ujC¦¡Î$¯³4ü¦¦JR[É<È/§t*Nwi.•eT>2@†Å”9`,M"®,Ǫ•ѾÒ|P=Yºb¾ñ%¹<Ó”È<`·î¦I”¿Ìnf•I#å{R7ÅàÑ­>ÙU†Æäé:ßæ¯›ÌMýMÚGómàÖGiЭʙy»)ŽƒpრäzåÀh@ 0ðŽÓä`·Úà8ÿ]+\¾<¹<âÓ*[Fœ´— 9k’K‚&HÌ'¦¨ö’ðŽúÉ Àe:S´Ø]Õmˆ)Jj*‚#Kmš<$5¥Ê2*Eyé¹Ç¶µÕæ³ é/t9þk½©¦~(²P•>ªSy»fD]âW°ÑÇzÖ¯$`¯Ïyî¿·:4CXÐw.øÞLÊ6zè~…x&dÑŠj#b­\€‡6Î/iabÆ•@ 2ÁqÚæi‚@pœüе-wr|Ú½ËÄ?mIö+¤mã•k§Û‰•§wmŽ)Á„Ù©ÇÍ”ù"¥…@ÙMØØÎîñ‹>å˜NzGóõà/4a]œœË©—JšøÁ*7ÁŒ<ŽÎ€IZ9!}G4Z '#TIÒ!N ucõ–3zrú iIÝ:o¯¯J†N£cmò’ò µxšo6î@ Ð6Çir0Ž[mƒ@pœ¶yeÅFZ‹€ø´?­Ç§}ë¢Gÿðê|k°Ö>£¥³ÑwDŽ‘-¨'åé][6Š€.™ø ƒJ6qæ?lß99b-uþìGj/ÿþ5·RM™þŠëçÙk®¬!s~wÛz^.¾™¦Rs;S GÁM¿¬ð/auÉ[…‘eƒ©e§hëL¬6dâÇòî8 ÜyûÄÊF’5“7PH½ùÉSúÜ ·w̧f]ÓÚ·@ DÇi›c|l¤ ÁqÑK)–ºÌŸ¶åðO;çöe矶„»SmS6 c³µk””L$ãÖ ²7š<YöHMî£A+é3q¦²*PÅ3 ÇÁV„qÒL©4‚â1üÊ*£?b+2†„ÉY>Â'-õÑfö£Ló )BÔ¥óÎì¦l|Ø*ÕK1#ÊÔ÷MBˆÜ%*¡Wûï:§³0ôGð^Ÿ‰<éYpÐ_hŸòC+Œ+@ ´+ÁqšŒãVÛ §]ß`±¯ÅFà'üÓŽ¾ó 'Ý}ïÓ\ìI–Ë@†Š3 ÊÄ;¾^J†«“”}OÊ¡ãX²ƒU*„Ò5¸f" É#s ®hFÉsaõ–¯›¹±˜Žnèêwüö7_çŸzæa\†n¤§ÿûO»9”Ô¡4a–¥DÄUjèè ãFnÑϯŸ¬Hèõ×L¾ñß'Yä7@ ÊÇi›c|l¤ Áq†ò[.ö^A ŒO{ù•?WîüýëßH*˜y‚ÀqßÝ“šÉÔCCöJÚ®Aë¹â’é,—ÑgaDlR]Ê •5¡Ô˜ò¢"›™³dÐPl€&oèÂs{-ŒZêyõå=tÒœBÎRcí·ÕRZ~–(5ViDœm>W_ÕF+ÖÍÙò£@ Ð'ÁqšŒãVÛ §ÏÿüãâDà7¿u«3XsPŧ5ÿš£e:\ò1f:ð+ûã’W&øÕÈwûlÈåÙgÇ^Gdšž *ºÿÞn2•çÁ§Ê>Ħ2XN¹R†ogœ4 ‹Ùu«žGt¹(ÌúpGí›[Ö“qFÌÒ<%õ}ÞßQCåãybÞky Ñ@ €@pœ¶9ÆÇFš '^w~úÐ`O«|}¢Ñh()ÁDCÂKÉ,ÐJfeèƒd©.Rø…Š]ùãi*ìôç™lfÒ ›¼—UêdS`Âd"$O©­üú¸¢­óŽ:Y@m¤ÒŸ~â,™ûª["/çŸ5CÌÄ€ªeɆ­ô>Q;xÏž2šŒÎD ¡-åÌe›/4 “œœÓuÆe$˜DRÐ@¼C1ÐÌb4Öÿ 2:“7ÿTí¤£fÞ}ç¤ò–6‰/ô9§Ïà-ªMO4GŸwŸGHzð¾º…ÂØÃg«pJŠø´òÛ‰v  D 8NÛãc#M޳ÀWAthcr|Ú÷¤šüîÇòúÉÊß4ÿ"°€ÒEÙ@d:“’)/©¨ë|ÕÜD¥Î Ï­zM3 ç’'ǧñ‡kÁ+¯ôZ¸¶Bdésˆë(D%ÔyZÉ8Žc¿ä¤RúQÙsØüá»oSÖ‡¼«èJØ6”Üò#¢@ ŽÓä`·Úà8ù?ùh 5ħ}ªË?íž§ÿsîÁùØüS½ó¼ÔûFq¤\v0Æ”ì¸Q_Y·V©t¹÷µÌƒX®q?Ûù«uk²ÌRÕÍ?]£õpu6 wþÌÉ*íÙg&œyò¬Õ;j®»˜œ Äц,Ï*—Ti_®¹r*wkl(ñ $ Uò†ˆP*„ „+W…ÞÛÆ¡º¼¥}õuˬíkusŸõ?T`eñ1@ÁqÚæi‚@pœxÝ Aħºæ õ=÷¼h9ħáÏýnBÅÇ ƒ¨(#•$}†fÍíX†1ùð¯næ¾;ÍS'_ÑP@sÓ5º¯¬ØQ{þ¹ >2ñœïΪ¸¥áSœÙð‘r,ï5‹<|¿9åEÑq4>êxº¾RGÍ•…ü…éì³ã<ñf÷þò ÄG±3HÃá=úÐ9c†÷Šms+s±ì´–WbµzÖ©Ýñréú·w©%^¶ë‰n@  ‚ã49Ç­¶A 8Îy¡Å63E|Úïþ§¹4’Ç´®!ŒŠâ$/&qd‡÷²à1)*ÌrÍÇÎÎgøÔîÕd!ÎóãŽï9ä}äl¹6e1P“Hб–fCvRVޤ~i;éú?wÔC×äò?õä$¨\kQsW]:}Íù×u¸íæÉ´±mÖŸ:¯ûN\l‚ùeƒV¡ryýöþ…•j[}¶Æ™Í<œÓLŽÅ 6pT̹åg½L¤¹¨e98êûäµ!G"Ûßàßz.º;¬£†Kæ'F#@ !§mŽñ±‘&lj7ÞB ŧ}þÄ{–K|’âôžçɈ eŒ™['Õ™â¸D‚åž$›Y:¨€#J£Î¦œa`¢¶Ò<Ì2 zSG-Ù;¿ðü„µÞ\CH'¬˜¥ÆHö÷ålþµXª¶Þ ö™÷×§JNDO1OšïàTÚæÑ@I(^£,N£-·gÑ©ÆÀ³$Ó±ÿÜ\WôÝ5™>´THÐÚIGÍÂŒÌ/™HnNVŽÛ·§©lñ™šª£Í‹»@  A‚ã49Ç­ŽÀ]wÝ5|øð}öÙçàƒ¾üòËý÷Ûß‚ƒã Á—ÛÐÜòòOK˜“K ÈqJP%%é; Ä›ù¨3¦Ð\ÄiüNõçMþÁ%…߃¸à/æT%éH‚“çž13Ívê±ÝÑbŸì²q†e0aÛtÍÚW©}Dçûæœ40eÐ0…–8³á°‹é<³X¸rýgÖê*y³FGÍœ¹[jXajà€èÒ·ObãöÄãÂêÞ° í/'YIö Ùè¦&§»•U*þÕ:7ÂW@ ‚ãôw*Žë/ùË·Ýv›uN:u̘1ßùÎwú[spœx× r|ÚÙ¿XñiaÕg*çy\cĽÔt@äU‚ï8º§24ùâHDéW€w$ÞÔ8ÐäoéMURþ¾ž ®ºt*ßfñiožß‡¶2ò 9‡ï7·q/£žKºø‚iô:‹Ø3²KÞ/.“Ÿî®Ë—‘.´ãf½ÏÂqTË£ðÁ{LÕyùº²u0£cGv^qÉ4Šì#öŸ“g¶MAn?¿~2B¤ÍuEͽ¡®(ÎEãr?@  q‚ãôw*Žë#FäE>øàƒ›m¶™¼ƒ|¥lÇâ/º¡°ýkù?üÓħÝýÔröOC^Ê¢œâ»ˆ5rùó‘^ƒè/‡eá¿,ÎÌåœÚÔÆárXäΠ ¹óªµT?Tgni4ám4‘ÜACؘDl"‹&é.NñØ£°›uÞ^ïOåQ—'µ}Ìò™“9ƒ‚† 0¦“S´g1»–¤ƒÉÍñK0ºùÆÉÙt“þ£ó.[ÔÔýÁPB[{áù^~n(Þg?Ò³fÓJùI‹,=«‰+@  ‚ã”'áh^~ûÛßnºé¦/½ôRŸ[Ž3ÞfCv9>mþê÷¯üy à dë =æ9s3s·$TB‚/ø[f‰0å:åæ Ï<ÝëbÙ¡Ïv%—Çñ¾ñl§Èî'ÐÈ[QjSÈœÀ°RîaÔÆ--»™%Žà/EFÌö›Ô›sz¶"ý‡æb¹§†™ÓÇ”’ƒ¾Ñ¤€.ò@ æ¼§£¦t)ñÅ­JäÞzﮕ‚rT+9;bÞVï¨0f6A*C¡i¹M–Sº¢ê(Àã'¡Œ@pœ>ÄqqÐ!på•Wî¼óÎý-;8ÎP~˵÷ÞŸúým}ækŽ¿|ãÓ2Ès8ƒh‰0ÇlŒ£±l%¾Cã ˆHÿ—Ŧ,ÏÖ¼AרhÅ®!L]Cäà âB©¬DnŽc¿ó¿³ý`åéßöbRL t`Ζ«ˆ&š gj|¤Ë`ü­Sy¨žìcþŠ‚nØ]ÃBÖòûŸf1Òx‘ œÉ™9ç`°~S9ë?éS˜ŽJ<ÅÉŸGÐ+wÉ#Î?k&ÒÄÒ ÌÀVd¬•;jûïÚ½fŽsyµÑ@`h"§¿Sq\DŒ;ö’K.i²àà8CóýÖÆ»Ÿ6úšß¨ï9pâÓhéÀŸþJÃYOcµ]Jßc¿¼V-ÙJ/ü×—‰ƒ!ÈH¹ ”¥€X¯òâí·t{”VÜe§Û*5ÏbÆüÞoÕ‡i[^5GœÎò®®iMžâñt@XÊiˬÉW0”GšpÏ]ÍÆë@Ìõ'ß§óÉGϪLÂnn¯íçzH’gËŸÃÌl 1A7˜ ˆgã…sVè‰<õWvÓéãGw*'ÊìÚ»M—‘ìÚÔâ¡þà)*HÕQ„ˆV%¶ÍCi7%&¬‡<„1¹.ꯒèTvŽv C à8ÍÏÆqw€# ,ÎqÇ—ù|×OŸ Ž3¤^kí½Ùëùý§þiœ9 ”'v.aåá¿Ò¹üÈ©¬øÈC=Qae·…lWä$ájòhª Q·Éêµ}v¬³³qð\b»l^7À}„x)BºÇ¶ufM¨ÊZÜ]&kô‘õ?ØÃ} ŠV.Œ 3¬ GØ Ïçw¯—ÚÉ{´ LÊÇd.¯käR¡T0mÞÑÛm\·\cm…‰‘+Ÿíþ@ýð>!ï9Ï÷˜3˜úë×@ -ŽÓç‘8. n¸á†=÷Üó™gžy®ëçâ‹/¾å–[ú\ypœ¶|} µMýù¯ÿ;æÚz|Úîþê¥? ÿ´ò+pÇò‰žRÞmÒfD€˜T¤¥8š.¡§´\,&/;ë$ó3aÎE¦¡-<ÐÐÎ?8{æîÛÔ(:rn»yâ£L/GèaõVž1šÄqqà# î§ ü¢ËŸT´qñÁqÚõ 6tö%>m›³Ÿvæm˳¾gsÀѧwÿó\–}Ni>dIîŠË¢›”É8i6j‹¬>þ°Û¼D"ø3ã™Pp!`°&É%ù›­õ&fÑÓ±ÄäÞ_¾Á” xfG%çJÒOžDCòNã a²Š,RÑœrˆv2@ƒNÇ0A^ 2Ê#~õp•I]úÃ…%Œ‹jW€¯¢P 8émükj8Ç~@pœÆóp\i?‚ã üwQ¬° )>m£¹Üë{6Yä²¼%‹‡Ò1¬£&"Žït™„Âß Gu6þ¶7Жò¬»ÙÚ5¿éÊÏ›öðƒ½¨„ø1¾d2_XRg[fq‚IJ7ìчÎÉsZ@Yj§?*²3ê‘Í•“Æ:~k$[6bïvÊ1Õ‚¤¥ãAOY–×ÿÿöîZªêNÔø]«{½~«ÓÝY¯;«;ýÒyÏî̃é¤Ó™çÄ)ƒÔ8D£BPPQD%b‚11ÎÑ$I1JÔˆEQ” 1FM˜ž„ˆÆz_ÝçêÜSÔ½U§î©]ß]¬›swÚgï_Ýl÷ÿî ¢?Â@‚²f>·–gQ¶äŽâ|Xoï(%wÒ«%ïQ@ŒqÂëÏ[£´€1NU{Vùigx~Z“?Fm8Ά®uÅñ—œ}•„þ-[E1ÇåTü=Ÿpˆ¢W97‡³x¢ëø;q]÷ŠaVúÇëqxÊ’§Ö1BÄ6Îß»9™^…‚ø…Ih ñ †‡¯’qYü^6”fŸöF»â’®ÅM'}mG¡öIC`üÅåµBW^Æ6t¯üzE·Þ´[lËéB±° (Ð>Æ8éþ°)á ã´O›RMŸXÖóÓšδ®èŒ›Ï¼£tÀï6i¯òéŸåÅ’sÉXÞ2ôä®1â FjX‡Îù˜,ÏaÄ$¹«3¯².dÂkü˜üÇýuV“ TDOäï2Ým†qùßÓy*SÚXK U·77*‘ü“kŽö˜-K–pX{Å &6g`Ì‹³{’çí1‡¼o $¤TŒñýSGiøi» óåýhóW@âã„ן·Ficœâ´9–¤FÛ~]Þ?ùi÷,ü}o ø6úáÄ&QÜñ_W:ì »Å ïë(E#ÌéJÆ&,„Ù+­pÎù÷ă/„Ém«ùkÿÊeŠ©eôä =šc»ôwk?ú¦Ýª…] :³ã¾?aޱ•…ݰyPzeS·Ïýñõ»’°ï ^ˆ(kÜF¯Û<óH¤üÏ]®ø¥RŸï EÃ.gQ¿ú#odfT9ô`! û*GC<5ìM £9t§ yaP†Ñ»øN¼¶ÇÉK èÙÅoáÏhÓ³ê¿K¼«G«Zªç–ë«ÄnÔ®âÌVRðªå¹À&ËØäS~¾yÜvÎ9ªòv‰bR.˜W‹j• }I¨.`Œ^Þ¥Œqª·¾Úçåùi·•Ï÷<ªóÓ˜»•ì‘rÍnc}«ÄjF7fÜþ #,ñ¦d=gÊO¸bL‡Ñâ6g¦ð³f¼ ôì±,ŸïQÝôa¶»ôûtiÞƒå] þ…Q!C*Œ‚Å5ý›ÝË¿à‘ul©Íùª¿ºï%ÂÆY36ìqkµä¬ÑC)Æä ( @¯ŒqÒýaSÂ0Æéuá› ÏO»ìŽEkj\øs±fNÛ÷~£‹ä2–œÞƒìïšùJE9Ùõ‹÷³~gP¿Ò[:J,éi_úŽé•y²ÛsV™Œ8ôó]‘Bz.Ÿ'“¸Xàs€òŠ•êƒYOil:#YÔˆ%9£¿½••JœzðgËÑY•_=†Ædx…!ØdŸäÐùá÷^«eD†!¶ŠOª–Iƒ­¸¹) @[ ã„ן·Ficœ¶jÖZ«²“:÷O+Âü´¤ýÏx ]S6mŽ:·É{ŠpMøPÑs~hÞúEOþù»fµñê›z¸å1Q2ONÕ‰·bKW¹âfÞÈܹämlyÍ®Ôq†œ­“|•€ÜÀÈÑS‹{¿êç±å#{N$_bZ]/†6ØV.™ ׬”éie»½?:çKÿgW=ˆ…<Ééy$2 y¬øXžC,Sec‡*/u[ P@Þ ã¤ûæ„'`ŒÓ»öÁwå$0ù¡¥œïÉü´_<þlNhçlÙí™×âž?CÌ^k“µâœ9c”]¬YÒræí¬jé¿/^•{LŸ²Ûêžs¾µ5Žh÷}WVäù¯=œSÕ(=hEèTe Ä¢Ðæ{•WëÄUæ‚ Ù8T(Naïh">v½‹eØà.T²ùQCñVýÅ3P`Æ8áõç­QZÀgM74G€ùiçu~Zsšó‚ö:#Òùö7·±^¾Q­X8Ï|6bzû¬Wb4çô㷥ĞҬ b5 “Ê’ÑKþãH‹Ï¾³TËY¼36±_,ÆIžD>Œì¤‹‘NaR_• xÊßíŠæ85~Ä>ÿÉ®ÝåU±s¢Ý¥ü…'–kñêÿcù¼›øf.Øomô··<:¿¼B2¡«¯}µ¼ùóÏ­å%†Øþ¹£4äèŒòûT‰¹â‚y¡€ Ô(`Œ^Þ¥Œqjl¼-?æ§}ÄùiùùVÍ™ÁfOÍ}`}Ó¥XƒŸì±ê­¥Óï¤`†§T-E7/û;ÐÛ¯¾‘2Q AÇž¾aWLƒ=Ù¢Lٖ݈)ºyFgÒâEëØðH„™u¬$â4œ¸"?ûq÷ëw¨K„¸“X†Ášý?X~K¼…ZrÑWœ!lSÀˆÏen>殑þ·%Æ×Ï"VJÞØJŸOéØCK”3« ¦+ €=0ÆI÷‡M OÀ§GÍ‚77V žŸvdñöOklM‹™Û£E=êƒ>U×Úæ’±?óë;sûØ›ËÓ±X·ÂŠzþ„.}€¥ž] Ó€e·Üðê__"žbð¥bÓæ__ž0˜HrR!Rò¸Ï½:JœÓ5 Åîyla~4)Tp̈­g´ÉxàÄñ;û'Çz²Çéïï<"ö¸þ;ïùÏŽòÎi¤"}gìn±{z>¼ô…÷–ÛA«l¯íW±+]·¥2Q¨EÀ'¼þ¼5J ãÔÒxO‹–;?-×®<éÕ³¤É™Nñº~zï#Qÿ<ú~óu»ííÜ•QmWäÌ3:ÿñ/ž{ÖI;GsxÄÀ/•CB ÆAêßC, âòϸ}Ã?ÚoæLx•,5›-pîLtóttíøMÔç]|ÿŠ®)v¬ÉŠq¨éÿÚÝDodNüDjǶ{dβ‰z¦M~…#A‰b¢›9"‡½9\3ñU¦±(]{õ¦èžè;çïD+›¾øáRœ/.B£eJ½x¯oQ@ÀŒqÒýaSÂ0Æ ¬áj•êL~hÙÎùi¹Z.s½âe#(oËÌ Ÿ¾üÑò¹6ôºé„GkFâõ×®«®FEqø~¥+.ÙÌ&¬49tk=Ã:OÿvÝ;U ºùôÛÊC!ìu6¨_×Q;Q©*¿|ôM¥(cì¸úÑK‡â”Ûn© ŠëH@ÇL¶øNªF¿š¾ ¬;ð;œ“íˆêÎB$2¹xäfBŽ""D†½¢1 (ógle6®Kg[K A%SãQB†úÆAn-ïõRÀ'¼þ¼5J ãÙ|¹R«Ø?mÒÂ÷Åü´ß=¿²ÈEmé²qègÜçbæ´Ý6jæ(O¶5cE|òFFÒUf>Gg2Å‹ )ýjõVúÄù³2…'þ‘ JØ‹So¢'28Ūüdn_üP‰ÍœIùÅ/_ÿƒM¬Ð‰ËFˆq~ðÝ×â9c{u”ØuˆÂÞÿ?ºòùŸ%jÊä7‚ É?ë~Ï8[ 4¼¥–ÕLÄ•›(¦¢ÖágY8Ê„3@9Iç„;ù\‰}çøN¥ )jüèÚ/¨{\kò¡‚”¡ö·{§ )`Œ“€1NÍWa+Åü´ƒ£ýÓ¦÷|ÏÂêÕ^0&&q* }ÚègS2|ÿÈ{faѯŽVÐò™w”ÒQ ½îxÃ4…ak‚=–á!æV±®„þ9!@¼× ígI–áí{ÑóßcžÜ°rEù_ôE/ý=¥±£»Î-ËU¢ÌÇŒØÌ14„Ñ =f‹Å»7c¡<7üp§öLúÉFê;jØ_Øÿ™ Øìš œo¹q#!›$g÷ÕR¼ÆÞs×ëO=vƒ/Ì[#d×*{Óµ›zñBª¤9×ß½ü/½ÈÇ·( @HÆ8áõç­QZÀ'¤V«àu™òÐ²Ž¼ç“£gÿÂùi9T¬¼`âSܹýܻʋÙã¹`¢W´T„„¦±u;Õêž»ºbx‘E··ÅµaòU¼ŸûYYÏ‘4ÿÖj1SëÐÏïV†½¡œÂnÉñÛ»½ â åíÈÞÇzüWߘëEæD1,Ûg«B'â"ù;tïÉq–(=úN&ñf΄~5¤æí¥o°Â¼¹£Dº-F3YÎî×Ìè£lÄkQɨêEø|£·Çß šÈ¼ÆÐ²Oô- (P|cœtØ”ðŒqŠßPBæ§èœŸ6p¢óÓšôy²gZ|Tå;Jñ‚¶öbÉ S×jÙÏ™í”ã¾qtQ}¦û›UÜOCšôI?y…}’¯˜¼®³`ÕEXËŸ|³ìâ…- B1§kú” ŒÂD÷0@3å¶ '}­Ä†QŒsü;_Šn`ÃçäÎiMÉÌñ©8©§zÙò{•PŽ,Y6>‹^<޹jì;çÃ\5Øù1Ú_‚ßF‹b»|ÌæZ~zQߢ€0Æ ¯?oÒÆ8l|+ÒovÍO»ÄùiÍýh‰GèвaÌLûéÍ뿃~44ÀÙ.¬—©^"ÎÁŒ»Ç\+Uï 3,y?×ÉssXAC˜ÃÎìpã5åmŸ¹¡úü7¤83™'£?3§mH¦0›ŽIwœÂÉÍ~(ß̃84ZöÂÔ¬äͬß?a@W†7]ûê/ï^Ï¡ŸLœc€£PgÐP)͉ ÿï%FdªXY¯²çU{_ç¶ ?¾þU–ö'{†&7Ü¡ú ]Vþ¦+ @Ë ã¤ûæ„'`ŒÓrMSk8žŸv—óÓ ðÉÑmNvøéè¦×à$‹É«ÉE4,ÃO¾š¾^øØ:p–e´!{°a2óââÂXõó«û^bOæ¨gŸ¾5ksæ(sâÞ’,3ãPì'oÍÄ3JųУ6 v¢55lÑíKeÂL¶äžÏÑB~&nE3÷Ò5êÛÂÂL·ê¡e-…diSò’’¿¼{·_^Š1­%CïQ@Ö0Æ ¯?oÒÆ8­ÛF¼äÌO;ïçåýÓNœëþiù°¢yJÉŽnõaŠÍ|–ðÓá@ņ`•¢Þßr/šs^ØvàŠK^ã-ì¸=Žëµnõ-¹ $ŒqÒýaSÂ0ÆIþ¿ÞëF ”ç§M˜³÷°YcŸÖ(ÓFäSÑ­MufϤ²Š•/„ǶóØMúÏœ7zâQåu=}=œSÃFpœ à ·ä.Íñ"#ΑIÆnÜÌ:Ý>‹YYõŒt›yaa$ÞŒ¶¹ÛÿƒlýgvW` /Fc[»™öò` ä-`Œ^Þ¥ŒqònIÚ0ÿÛÞ¹Ú,ç§ìãçèɯ~²«[ËRF-±§ÃüO‰3=gÆtX;w¡¹àìÑß.é:¶¦G6ÙÉ>oIžàIôôŽ]ø«ÎgUÜìœþÉÇÄøW<|F¬÷¥”—Y1¬ÃµD (Ð&Æ8éþ°)á ã´IƒÖœj&ç§=ýÜ®ãLšólŸR›£LIbÆ;ž5ð˜%O­‹CŒ(®ùö7·½uWÐ¥°ÀŸ8 Üœ™¾z¼I›È͸}ËmØ5ŽÉuŠÝjCmá»ø`ø¦¿ -laÑhcœðúóÖ(-`ŒÓ6MZî]¼|ÅÁt~ZîÐE}@ßóã£ïq~ZK|^Å/$Áݳ^~wG‰Iã^}t1ïÁ‹qmØNáÏ•>ûÎÒäŸmLZZãÇñ³ïÛŠAˆk|¯·) €{0Æ ¯?oÒÆ8{l ¼!`~Ú¨)O°šóÓü•h¸'æpÌÍ›ƒŸ{W‰¹m P®rFO•pAÔֻDZÏv2®š×bá^ï*î»P 9Æ8éþ°)á ã4§=iõ§,~vÅ¡óÓ.šêþi­þa·ü,Ba·¾¾4úÛ[Ù-¿‚2xÄ KzqPO|x×3“ï(-^Ô›0Q›¿N„{Œ =³Ô¹ju~8¾]ºŒqÂëÏ[£´€1N×ÿç½ÊHÌO[žq‹É 4F`õêŸû}¾ýyV»°½Û»:J' (-x¤‘‘Ô‘_Þ-Æù·Žû`÷Â…]Ø9Tè“ÿQbÏmâ&ÎêE&¾EÈ0ÆI÷‡M OÀ'«0x~ÚáîŸæ/DïL ‘¼¥£ôä†E÷Þóò[;JgÙ>jØÖþïÒÅ#7×c¶|ÙZÊVçöõÀ÷* @¨Æ8áõç­QZÀ'Ô¬þz9?­~Cs(šÀ}³wÇ/x!0iT!9ÛôÊËþò¯¥(¿ìhì Q£ i> ( €1Nº?lJxÆ8¶uÝ L‹öOuÏÌÎOëVÈÄz^xaí¼×÷ò×8"'×Õ7É‚¦cR’7Ôs=sÚ+qèÄÅ·NØÞð%?õÏ÷* €‘€1Nxýyk”0Ʊū`~ÚèÎýÓÿîÜ%ÏÕwÎGEÖþ¨@B`ÒOºvHfþXsV° ûTÇ‘È;z»d&Q®ËC?ß•3àŒ›N„ëzŒW ( @}Æ8éþ°)á ãÔ×N„öîx~Ú˜©Oì„V=ëS:ÿ,Éc .®½º—;-÷´Nì9púñÛßßQ:õØí\÷ôíUî?mðödÜ~»d]•û}IècœðúóÖ(-`ŒÓ'ÍK1:}þòºçãÎO+æÇV©Ø&:pÍRý¦U‘ÝÛXÑÏ÷Æ~Íè¥×%7Žmlþ榀 4DÀ'Ý6%<cœ†4­ž C6çß^>ßÓùi­þQ¶Jù—=³öÓoÛmçîY [Ó‡„9#‡n=åë;~ußËyo‚݇ÕôÑ (ÐÒÆ8áõç­QZÀ§¥›©†þ©]ç{:?­!žfR£C9÷ÉÎßt”.:o+‡rÖøFoS@¨GÀ'Ý6%<cœzZ‰ÞÏO›ñ¨û§ðy¶Xžþí:>vܬÅ>9‹«€­,`Œ^Þ¥ŒqZ¹•ª«ìñü´þîŸV¤oV@P •ŒqÒýaSÂ0Æi¥V©qee~Úaß}8Üþ„û§5ÎÕœZL`Ñ“fiÉSj±r[\P cœðúóÖ(-`ŒSG#ѪoeZû§ñÏùi­úZîºV®x‘#;£ý«ÙäùûCØñ n3P@¶0ÆI÷‡M OÀ§-š³]•LÎOc(gW²ÿ«@Û °(¹yõ¿4ëÒ¶ƒ¶Â (P<cœðúóÖ(-`ŒS¼¶'¯-ynKoœŸ–—¯ù¶”Àô)¯$c®ïÿ¥C9-õZXè­€1Nº?lJxÆ8½m!Zì}LKãpOç§µØÇfqs ¢©ˆqš÷RnO3cP @Æ8áõç­QZÀ§@N>Ea~ ì=l› 8?-csm=öØÿƒ]‡ž6x»Gv¶Þ§h‰P WÆ8éþ°)á ãôªyh™7ÅóÓÎwÿ´–ùÐ,hîO.üóÄñ¯M·ùÆk^=שּׂwÍ|ù·KÖåþT € CÀ'¼þ¼5J 㣽ɥñü4úÌåfª@á¯a{…ý9.éòekûï»sç¯:JzCiác81 (¾€1Nº?lJxÆ8A¶eÌO3õIæ§z¥óÓ‚ü„­TMó\ÿîŽr8óO¥[nÜøüskyën*VâL¹mcMÙy“ („€1Nxýyk”0Æ ¢¹Ú­ÌO;¼sÿ4ç§íæâm&°xÑŸÞÒàÄͯç–wøõÜõqJtñÓ›qÚì—Ãê*ÐÞÆ8éþ°)á ãÖÎÍ\PÞ?í£#ïq~Z`Ÿ¬Õ驃8±ÌµW¿J&K·öSoíÚmàu¥GçwÍdëéS¼_h9cœðúóÖ(-`ŒÓrMSV“óÓ{¾g“ém#@äò×»ãÌš±!ª=Ës†]Ú«£´ßJsXß6$VT( ã¤ûæ„'`ŒF{÷4óÓ¾W>ßsô”'v¨”µP •+^¼äüÍñPÎÇÞ\Zôd×xͪU/2™Íý¢ëö½ (ТÆ8áõç­QZÀ§E¨d±ËóÓF—ç§M›¿,™îµm.ðÌÒµœõ9vôæÉ?ÛÈ~Ñm®aõP@HÀ'Ý6%<cœ–nñV¯YïŸæü´–þ(-¼ ( €Í0Æ ¯?oÒÆ8ÍiOòxŠóÓòP5OP@Â0ÆI÷‡M OÀ§EÛ±;wÍO›êü´ý-¶ ( €}!`Œ^Þ¥Œqú¢u©ë™ÌO»¨ó|ÏC®|pñòuåå›P@P ÍŒqÒýaSÂ0Æi­†ùiGtîŸ6ÊýÓZ듳´ ( € CÀ'¼þ¼5J 㣽©©w.xö£g³šóÓjòò&P@H ã¤ûæ„'`Œ“ú¿~˜Ÿvñ´'÷6ËùiEüx,“ ( €­#`Œ^Þ¥ŒqŠß&ÅóÓFþ|¡ç{ÿó²„ ( € YÀ'Ý6%<cœ"·B”­k~ÚÞïYðÏÊâ) € (ÐÆ8áõç­QZÀ§°óÓÆvÎO;x‚û§öS²` ( € ´˜€1Nº?lJxÆ8Ål˜˜Ÿ6`âܽ‡Îr~Z1? K¥€ ( @‹ ã„ן·Ficœ6P³Û¹ÚíÎO+àÇc‘P@hecœtØ”ðŒq ÕJ%ç§ýfù U6 £€ ( €ã„ן·Ficœâ4VÌO8qî{ŸVœÄ’( € (œ€1Nº?lJxÆ8iºîzìÙOvžïéü´‚|"CP@ ŒqÂëÏ[£´€1NŸ7_åùiÓq¾çÁæ8?­Ï?  € ( @ØÆ8éþ°)á ãôm;ö»çWFóÓÎó|Ͼý$|º ( €í!`Œ^¾­j´eË–‰'î·ß~«V­ªRqcœ>lÏâùiSò|Ï>ü|´ ( €m$`ŒS¥cìKX±bÅ!C.¼ðÂ}öÙǧ€ÍóÓ.‰æ§]1g‘û§ð²H ( € *`ŒSðn¼Å«"°lÙ²?üá ,0Æ)`ûÔ9?mû§˜´pÕêÿWÀZ$P@UÀ§JÚ—ZBàÑG5Æ)Zõ‹ÎýÓ>rÞÝÎO+ÚGcyP@hcœ–èÆ[È*Æ8…j©˜Ÿ6Îùi…úH,Œ ( €í'`ŒS¥óìK-!`ŒSœv‹ùiG^UžŸv®óÓŠó©XP@ÚOÀ§%ºñ²Š€1NAÚ­òü´óg3?m²û§ä#± ( € ´«€1N•γ/µ„€1NŸ·^ñü´~îŸÖç†P@P@_4Æi‰n¼…¬"`ŒÓ·-ÙÒçWµk~ÚJ÷OëÛç+ € ( @§€1N•γ/µ„@ã¬\¹²Ji=4§ïÇóÓ–æô³U@P@z*`ŒS¥cìKزeˉ'ž8hÐ öŽ|xTÔmÛ¶ïÜyçÝ–Ü'ï–ÄüP@P@âãtÛ%6±%:è ›o¾9.ê™gž9bĈøÇä…1NqÚK¢€ ( € ä-`Œ“ì {ÝB›7oÞgŸ}¦OŸ—yôù£Y˜ÿ˜¼0ÆÉ»%1P@P 8Æ8Éž°×-$°fÍbœÙ³gÇe7nÜÑGÿ˜¼X»víÔ©SŸzê)~áýR@P@[€^}?b®d‡ÐkŠ/УqœçŸžßs¿P@P@ÚG€`ñû´–P ~ýú%×ãœqÆYëqØo_rby&­ù¥€ ( € (¶sxèûeí¸[Ñ¥ôG %pÑEÕ¸¯Z¡ŠmaP@P@P@n’çãÜ~ûíd[·wš¨€ ( € ( € ´„ÀüùóO9å¶S:tèêÕ«[¢ÌRP@P@P@P@P@P@P@P@P@P@P@P@" <üðÃñšU«V¹¨­^¶-[¶Lœ8q¿ýöÓ9ïòž{î9í´ÓÌïö7Þègùßÿý,÷ƒúÄO9rä¼yóò{–9Ç·Ýv§ñ'îh¤Ì'á*y¹ó»Íâ¾*÷øR¯##Æá/$qlÑsùå—Ç?z‘‡À÷¾÷½üàyälž A _¿~Éõ8ìÙèzœ\?cœ\y+2g§nVˆT$úccâ ¢l£¤ûs‹®»î:öè.oöúÍoâLŸ0ÚÙø…^¨ Çs #•MxP{>‚•ïÉæzüøñìiܞͩ5ƒ’‡v[!5çq>Eæ \tÑEî«ÖLvcœ¦i³|uÔ¨QÑãø8_M{t[=ˆ¿“Äx¦£â6¤MøpÏ& 3?-áÙ}ÿý÷gUžÛž6lØñÇ×@þÒK/ô¢ásçÎ=õÔSž­*Päù8lF:pà@z)Å)^x%‰b·ÄÌû“¥›ýõ¯}Ñ¢EOu~±vxÆŒy?´=óg4¦ƒ0‡ÞàM7ÝÄŒz—f7á7Á¹jM@>âˆ#¢€cã˜òúÕ¯~5yšðôv{+°í@t ÑâÅ‹iIh¼Û ¡™õeÒŽÿYl&¸ÏêùóçsÄ-Ó¼9¬|õêÕ}R†vx(ÿqdzÉ Aƒè2á$>k‡º7¹ŽüÅ•=¾pN~EG‚6¹$íð8¶eæ<{•І0»›ÎI;ÔºoëxÙe—цðëM{г¾-LÀO¿ë®»Mà¯%ü†³láÙgŸ ¸²E¨Úƒ>È’¾˜aâ1[¹~"¬dþÕW_Íõ)f®€ ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ô­YžwÞyœöÂ!­œE@üýïŸCIšP0väŽ1cÆtû,N´?ðÀ»})ÈÁ@ .L§“ò“Ÿü¤ÛtP@P@P 0B NW\µjUT/bœ«¯¾šë•+W6'ÆáYªžãð*ÇÜGe«ç{C2©§¾WP@P@š#ðË_þò¤“NŠŸÅ‰ÛGy$?2¸3xðà‰'2Èrã7’²víZÆzn¸á†sÎ9‡ã¹wìØAúõ×_íµ×.Z´hÓ¦MgœqưaÃÆwÔQG‘xÈ!‡pHúš5kÈöìÙÜ@"oa´è¹çž#Ã¥K—^pÁ&L?~|EŒ³eËMVœkØa‡q3_Œéð^ @ ¶~ýúo}ë[gu%áXö!C†,[¶Œ lÆŒÜÉ{É–`mÚ´iüxÿý÷3DQç̙Ó&MºîºëøqÞ¼yüøÈ#\uÕU×\sÍØ±cùÑ/P@P@hi›o¾ùòË/OVáØc}ú駉qˆ dx‰ØaùòåÄ [·n]²d ¡Ðüùó/¼ðB^ýÓŸþø0sôÑG“ÂІ N<ñD2Ù¶mÛw®ø‰¼…‹Å‹GÍÙgŸMDÊM7ÝTã<ðÀÄV¼D`µÏ>ûp±qãÆAƒqÁ× 'œÀ„:Štê©§ò#A Q äÅ8÷Þ{où¾Î;)0ñ8Î /¼•–‚QS^}þè; ÊÏw¿P@P@P ¥Ça$®£-pÀK/½DxròÉ'G錳Lž<™—"ˆ Xö³ >œq¾¸ åÑGe\&Ί †ñY¢á’‘#GÈp3(£Fâ¶~ýú1 ÃáREŒÃ#n½õÖ(«þýûsA&ÇsLçÓn$*! #ñ”SN!ÒaȆ€…ãgîܹ\sóÀ£ixqŒCExW”R/¾ø"ÙÅ_Ì ÕôéÓ£'ú]P@P@ZW€õ8Œ$×ãAPô8Ä$D„ ðŰNTq%.ˆq’¡J4ííÒK/î!‚ ²HÞO>ÑÐ cIÉ7r“Ê¢q‰¢q"¬ã?>z;1QÍš5kĈÌ^‹Ò£‡!žƒ:ˆz‘Ȉ! LŸ£äDÔ‹nÑýŒšÝwß}üÈÀ“ô¢ý¢Wý®€ ( € ( €-*@·ŸH`„è†yeDT„}ÕØ‹€Y¥,‡áâ†u¢q®”á;sÃHa4„0„›ØYpÌC‹~$äa Yñ=š¢öÌ3Ï0ÛQÞȶøÑ8EºòÊ+Y×3uêT^¢¬èa‡4žÝIH«ŒÅð#k|N;í´sÏ=—°ˆ<‰¿x4c@<ŽW Xq M™2%Ê'Ê–1#îç%êeëwP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Âøÿeá–$ endstream endobj 8 0 obj 74317 endobj 10 0 obj << /Length 11 0 R /Type /XObject /Subtype /Image /Width 1100 /Height 800 /ColorSpace /DeviceGray /Interpolate true /BitsPerComponent 8 /Filter /FlateDecode >> stream xíÐ  þ©o( 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ ü ,Û! endstream endobj 11 0 obj 3860 endobj 12 0 obj << /Length 13 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >> stream x…UßoÛT>‰oR¤? XG‡ŠÅ¯US[¹­ÆI“¥íJ¥éØ*$ä:7‰©Û鶪O{7ü@ÙH§kk?ì<Ê»øÎí¾kktüqóÝ‹mÇ6°nÆ¶ÂøØ¯±-ümR;`zŠ–¡Êðv x#=\Ó% ëoàYÐÚRÚ±£¥êùÐ#&Á?È>ÌÒ¹áЪþ¢þ©n¨_¨Ôß;j„;¦$}*}+ý(}'}/ýLŠtYº"ý$]•¾‘.9»ï½Ÿ%Ø{¯_aÝŠ]hÕkŸ5'SNÊ{äå”ü¼ü²<°¹_“§ä½ðì öÍ ý½t ³jMµ{-ñ4%ׯTÅ„«tYÛŸ“¦R6ÈÆØô#§v\œå–Šx:žŠ'H‰ï‹OÄÇâ3·ž¼ø^ø&°¦õþ“0::àm,L%È3â:qVEô t›ÐÍ]~ߢI«vÖ6ÊWÙ¯ª¯) |ʸ2]ÕG‡Í4Ïå(6w¸½Â‹£$¾ƒ"ŽèAÞû¾EvÝ mî[D‡ÿÂ;ëVh[¨}íõ¿Ú†ðN|æ3¢‹õº½âç£Hä‘S:°ßûéKâÝt·Ñx€÷UÏ'D;7ÿ®7;_"ÿÑeó?Yqx endstream endobj 13 0 obj 1047 endobj 9 0 obj [ /ICCBased 12 0 R ] endobj 3 0 obj << /Type /Pages /MediaBox [0 0 792.0792 576.0576] /Count 1 /Kids [ 2 0 R ] >> endobj 14 0 obj << /Type /Catalog /Pages 3 0 R /Version /1.4 >> endobj 15 0 obj (Mac OS X 10.7.3 Quartz PDFContext) endobj 16 0 obj (D:20120223235442Z00'00') endobj 1 0 obj << /Producer 15 0 R /CreationDate 16 0 R /ModDate 16 0 R >> endobj xref 0 17 0000000000 65535 f 0000080447 00000 n 0000000175 00000 n 0000080196 00000 n 0000000022 00000 n 0000000157 00000 n 0000000289 00000 n 0000000378 00000 n 0000074894 00000 n 0000080160 00000 n 0000074915 00000 n 0000078968 00000 n 0000078989 00000 n 0000080139 00000 n 0000080289 00000 n 0000080353 00000 n 0000080405 00000 n trailer << /Size 17 /Root 14 0 R /Info 1 0 R /ID [ <07603421c2ac0410c68bfc0ba4296366> <07603421c2ac0410c68bfc0ba4296366> ] >> startxref 80522 %%EOF pymc-2.2+ds/docs/_images/deviates.png000066400000000000000000002662551204033704200176100ustar00rootroot00000000000000‰PNG  IHDRL 9÷sBIT|dˆ pHYsaa¨?§i IDATxœìÝyxTåáöñûÌL’I&ûJµT­‚‚@ÝQD­w­+¢¢Öµþ\Áj­Šˆ¨U‹Uë«ÕVlUD$".HQ*²JBÈžÉ>Ûyÿd¢B ÉL2ßÏuõºÈÉÌ™'¡ræÜóÜÏc˜¦i Í,Á@¨!0@`€À @€&L˜ 0@`€À @€&L˜ 0@`€À @€&L˜ 0@`€À @€&L˜ 0@`€À @€&L˜ 0@`€À @€&L˜ 0@`€À @€&L˜ 0@`€À @€&L˜ 0@`€À @€&L˜°{è3gÎTRRR‹cåååJJJÒ<¤QšLÂDRR’î»ï¾Çžxâ 6,H# tQÉ ×]w]‹¯kkkµnÝ:wÜqA¡‹À$L¤§§·øzåÊ•:òÈ#¤ºLÂÔòåË5a„`€Ä&a¨°°PUUU1bÄ=Þår©¼¼\v»]V«µƒG݇×ëUcc£RRRìá  LÂÐ'Ÿ|¢N8á€_^^®ï¿ÿ¾ãÝÜСC•™™ìa  LÂŒÏçÓÊ•+Û´•ptt´$©oß¾²Ûí54èv•——×|_…®ƒÀ$Ì|ûí·êÑ£‡222ø9‹©»ÝÎ"±pöÜW¡ëào,Ì´µŽ@8"0 #uuuZ¿~½Ž=öØ`€F%'Œ8½øâ‹Á!&L˜ 0@`€À @€&L˜ 0@`€À @€&L˜ 0@`€À @€&L˜ 0@`€À @€&L˜ 0@`€À @€&L˜ 0@`€À @€&L˜ 0@`€À @€&L˜ 0@`€À @€&L˜@7TÛäѼUªmò{(@—D`ÝÌæÒzM_¸IK·Vj{Uc°‡tI¶`Ð>LÓԻߗé/_îPÿ”hýé´êìa] tu.¯žX‘¯Oóª4õð4]yL–"¬” €ƒE`]Üæ²zÍ^š+g“W÷ýºŸÆöM ö€.Àº(Ó4õïÝœ~ÉÑz” ÐnL  ¬àüî˜,ERÁÚ t1ûVpîÔOÇõ£‚´7è"LÓÔ6”éù/üœGN Ìx*8@G 0€. ÎåÕŸæëÓÜ*µ{*8@Ç!0€·¥¬^³¨àŠÀBÔ¾œ¾Év*8@'"0€TçòêÉOóµ"·JS†¦éªQTp€ÎD`fjjjôÊ+¯¨ªªJÅÅŊׅ^¨Ã?<ØC°Û–²zÍÎÉUUƒGÿ7©ŸŽ§‚t:“0RWW§{ï½W矾F%ŸÏ§Ù³g«°°Àœ‡O ,*8@P˜„‘%K–(99Y£F’$Y,]{íµAÉ_Á™ói¾–çViÊÐT]5ª' ˆLÂÈòåË5~üøÇÒÒÒ‚4{l-«×¬Ýœ{&õÕ¸~IÁöL„iš*))‘ÍfÓ /¼ üü| 0@'NTïÞ½ƒ=< ,™¦©÷6”é¹/v¨o ”0¿+LÔÔÔÈãñè7ÞÐᇮûï¿_Ôí·ß®M›6{x@Ø©syõpNžž^U¨Ó†¤èÉ3–!„À$LØlþÉD½{÷Ö˜1cdµZ5fÌõïß_Ÿ}öYG„—­eõº~á&­.t꞉}uý˜Þ¬W„*9a"&&Fv»]}ûömq¼ÿþZ»vmp„Ó4õþÆr=ûE¡ú$Ú5ûä!ê™À¬ ˜„‘¡C‡*77·Å±üü|1"H#ÂGË«9+óµ|[•Κª«é©H³J€PÅaäŒ3ÎPAA¾ÿþ{IÒÖ­[µeËM˜0!È#º·ÊwWp üœcz–!Ž&adèСºõÖ[õꫯJ’²³³õ‡?üAýû÷òÈ€îÉ4M}°±\ó©à]I˜9ꨣtÔQG{@·Wçòê©•úd[¥ÎøEª®EèJL ýP^¯YKóTÙàÖ&öÕøÃ’‚=$mD`ídß Nv¢]ÏPÁº,hõ.¯žú¬@Ë~ ‚t&pˆ~(oЬ¥¹ªlpëî‰}u Ë#0€ƒdš¦>ØT®ùŸï©à VÏ{°‡ ˜ÀA ‚to&:•išš={¶V¬X!Ã0tüñÇëž{îùÙçœqÆ2 £Å±±cÇêŽ;îhÓy›ššt×]wiýúõ’¤©S§êÚk¯m§Ÿ „“mþ Ny½[wOè«úSÁºêÁÔ—_~©?üP’4yòd=øàƒº÷Þ{ò9†aèßÿþ÷!Ÿwúôé²X,Z¼x±êêêt 'Èn·ë²Ë.;ô „Ó4µhw§W‚]óÏ¢‚tWÌÐijkkõ׿þU3fÌÅb‘ÅbÑôéÓõÒK/©¾¾¾CÏ›ŸŸ¯wß}W7Ýt“$ÉápèòË/×¼yóÚågÝ_½Ë«G?Ù®9+ tÒ Í=sa ИøIÏ?ÿ¼F¥#Ž8B¯¾úªÎ<óL :T·ß~»<O›Ï·jÕ*ÕÖÖê˜cŽi>6räHÕÖÖjÕªU=Î9ïG}¤èèh 6¬ÅcrssµiÓ¦ƒ~m¶U4hÆ»›ôy~µîžÐW7ŽíÍz%@7G%ÀOºæšk¯™3gjË–-úç?ÿ©¼¼<]xá…š?¾n¼ñFÍ™3G999?{ž—^zIiii***’$¥¤¤4oÏŸ‹‹‹öwß}·¾ýö[effêÜsÏÕ¤I“!ItÞ¢¢"%&&¶8ç¾oEE…bcc[œ×ápH’*++ì—ÂJƒÛ«§V(ç‡J>$E׎î¥(f•aƒÀÀ~¥¦¦*;;»ùë#šÐÿ§ß«èžLì—iš?zÜçóP%çÅ_Tzzº²²²$IåååJMMmþ³$effðxF%—Ë¥œœsÎ9tÞ¬¬,UUUµ8ÏÁ¼6Б¤ˆÉÆÕ‚¦e'Š ÆxK`¿ÊËË•——§¾}ûJ’Ö®]«cŽ9F‰‰‰mªäŒ3F±±±úòË/uúé§K’¾úê+ÅÆÆjìØ±?úœÒÒRÍŸ?_÷Ýw_ó±µk×Êb±4?ç@Î{ÒI'éÎ;ïÔÿþ÷? >\’´zõjvØa¬_‚ +/7ôÅ6½új¤ ðꪫ\ÊÎöiŸ– 4¸½šûY–n­ÔiCRt ¬ñ_?€ý²Ûíúûßÿ.·Û­-[¶hÉ’%:ùä“Û|žØØXýîw¿ÓüùóåóùäõzõÜsÏéÊ+¯Ttt´$©¬¬L£GÖÊ•+%I zæ™gôÝwßIò( ,Є Ô£G>ovv¶Î:ë,Í;W’+â—_~Y3fÌ8äßp(ÜnéÕW#uñűúè£HÍŸ­_ÿ:NEE¤%Йr+4cá&­Ú^­;O裙Çe–aŽ&ö+--MÆ Óoû[mܸQ“'OÖôéÓê\÷Þ{¯fÍš¥SN9E’4nÜ8ÝsÏ=Íß÷ù|jll”Ûí–$eddè®»îÒŒ3d±X¯ÓN;MgŸ}v›Î+IóçÏ×wÞÙö\qźôÒKêçÚKY™¡9sZNõ./·hÍ›zötiT>LÓÔâÍš·ª@½¢4oÊ`õN¤‚@2ÌŸZœØÍétjõêÕ2dˆbbb‚=t²×_]úÓŸôÍ7ß{(@·T\lhôèÕÔ´œQòÒKµš:•À:t†úúzmܸQ#GŽlÓ† >þ5 ˆRRL]{mc‹cññ>}´'H#€ðWÑ ïnÒgyÕºƒ €Á¿~ÒóÏ?¯¹s窴´TS¦LQccãþŸ M"#¥«®jÒ3ÏÔiìX·.º¨I995êÙ“  Ðöì‚sû›d3 =sÖ`MÀ–ÁZ£’ƒý¢’£ºZ²Û¥¨¨`º§·WOV ·Vê´Á)ºîX*8èxTrº.} D$${Ð}åU4衜\•ÖºuÇ }˜U`¿Lt[¦iê£-š÷Y2ã£4ï¬ÁÊf€À@·ÔèöêéU…Z²¥B§î®àØ©à8@&º¼ŠÍÊÉSI­‹ €ƒB` [Y¼¹œ €CF` [Ø·‚sÊàM§‚à˜èòò*4kižvÕºtûø>úõ@*8 8huu’Ý.Y­Á €pöÑær=½»‚óÌ”ÁÊN¢‚àИ€6+)1´dI„Þy'R¿ü¥G—_Þ¤^½Ì` @˜¡‚ #˜€6©­•y$Z/¿%IÊɉÐ?ÿ©E‹j”™Ih slß]ÁÙYëÒmãûèD*8Ú h“ÊJC¯¾ÙâX~¾Uefzƒ4*áä£ÍåzzU¡zÄERÁÐaL@›˜?1‰ä§Ž@{it{5oU¡>ÚR¡“%ëú1½©àè0üëÚ$)ÉÔùç»ZëÙÓ§ìl_F l¯lÐ ïnÖòÜ*Ý6¾nׇ°@‡b† h“¸8éÿþ¯AGéÑÂ…‘1£k¯mbýfÉ– Íý¬@=b#5oÊ õIŠö„Ðféé¦.¿Ü¥sÏu):ZŠˆöˆtGŸžYU Å›wWpŽí%{û˜è&à †ìQè®¶W6hVNžvÖ¸ôûqÙ:iPJ°‡ ̘)Tp„!aß ÎI“5c ÁC` èò+õPN®v:›¨à &‚êã-zjwç鳫/!€À@Pì[Á9q`²n ‚ „˜ètùUšµ4WÅTp„(jéÖ =µ²@éTp„0¢ÑãÓüÏ õá¦r*8B €G@WC` Cí©à¤ÅFèé)ƒÕ7™ €ÐG` C4í®à,ÚT®_HÒ c{+š €.‚À@»Ë¯jÔ쥹*r6éÖqÙ:i`² Ãö°à€˜hWTpt&ÚE“ǧg?/Ô›Ê5i@’n¤‚  #0pÈ vÃÙ¤[ŽÏÖɃ¨àèÚL’œ­š³O§Ý  Kr»¥’Cµµ†ââL¥§›²qU€NE@wÆ[K@—ÓØ(}ö™M¿ûCN§EÉÉ>½új­FŽôš@')¨jÔìœ\VSÁÐ=Y‚=Úª¬ÌÐ%—ÄÊéô_Æ**,ºðÂXíÚÅuè Ë~¨ÐŒw7Éí5õô”Á:ep a €n‡Ïá]Ne¥E -ߘWUYätêÙÓ Ò¨ ûkòøôì…ú`c¹&öOÒMÇQÁÐ}˜ºœ„Ÿl6SÏÞÐ$&ÆT\a t”Âjÿ.8Tp„ *9€.'%ÅÔŸÿ\/«ÕDD˜zæ™:¥¥˜@GXöC…®_¸I.¯©¹Tp„ f˜º‡C:ç—Æ÷¨²ÒPr²O©©¦¢¢‚=2è^š<>=÷E¡Þß]Á¹qloÅDRÁL]’Ã!9>õéì‘@÷ä¯àä©°ºQ7×›Y% €>ù¡RO®ÌWJL„æN¬Ã’£ƒ=$èt&$I.OÏ}¹Cïm(Ó„þIº‰ €0F`+õõRY™!§Ó¢ÄDŸÒÒ}íÓ”JK Y­¦RRÚgœÐÙvT7ê¡¥y*¨nÔÌãzëT*8»亽úz©¨ÈЮ]†þõ¯H}t‚ƋרQ Z±Â&—ëàÏ]Q!½öZ¤Î<3NS§Æiñb›ª«ÛoìÐ>ÙV©é 7ÉåõiuÚTÂaÀЭºõÖ• ­[­ºùæy<þ›€†CW]åPiéÁß,[¡›nrhóf«¾ûΦiÓbµe Ó×t .Os?+ÐÃ9y yS« ë•€D%Ð9ÒwÄè½÷"%™r: y½FÀc,ª­5$™m>e¥¡çŸ·5ôâ‹Q:òÈzYÉM„°Õš•“§üªFÝt\oFZ 0t[55†>ø b÷W†¢¢LED˜r»÷Þ$%ùÛö°D’""L%'ûZOKóÉÂN!ì“m•šói¾’¢#4÷Lf•Àáí Û²X¤””½aÈ+¯DéÑGëã?–àÓ+¯Ô*#ãà“ØXéî»e³™û3uÅ.ñ!-€Päòøôôî Î1½ôÌY„%ðS˜aè¶ÒÓM=òH½~÷;‡$Cÿþw¤zöôjåJ§¤„Séé¦l‡p54È«U«œzë­HEG›š:Õ­ž=[Ï:€`ÛQݤY9¹Tpà˜º-«Uš4É­U«œZ¶,Býû{5b„W=züôŒ§S2 ).®õ÷<©¼ÜPd¤©¤$ÿ1»]0À§»îjì ŸÝòm•z²¹‚3HýSb‚=$y&€n->^Š÷iȦŸ}\uµ´v­MO[¯òrC¯¼Õâ<¡%K"”‘Ñ$»]‡´ ´·Û*õħùJ¤‚·w€°²|yDsXâghÙ2›"#[¯kb·û×3±Zý ÄVT´ü~LŒ©ßÿ>Z}ú˜ºôÒ&eeÜn;Ð^\ŸþòÕýû{*8p¨ØVVœÎÖÓÑß?R¿ÿ}£ coàa³™š1£Q6›·‡j´÷ûYY>eeùôDé±Ç¢uá…•”0Õ@ð9›tó6kѦrÝ8¶·îžÐ—°3Laå”SÜzàS.×ÞpcÊ—öjùr§æÏ·+*ÊÔµ×6©OŸ½ë“¼[Ë—;õöÛ‘êÙÓ§}ºå–í©ñ|ûm„** ¥§3Ë@çÛ·‚óÔƒ4 • *@XÉÊòé£jtÿýv•–ú}:Õ­¸8iØ0ŸæÎ­o®áì+.N>ܧáÃUXhhĈxNÔ´0o@'sy}úË—»+8ý5óx*8Ð^La%*J1« êävKÉÉ-ƒŽY¼5&ÆÔĉåäD69Ò­¤$f—èé°Ã|ÊÌ$LºƒOs«ôøŠíJ°Û4çÌAÈ.8ÐéLÂÄ„ šÿœ””¤iÓ¦)''Gk×®Õ¯~õ« Ž @wçtJn·+^>=pÉÉ>u–K F5;ï<—’’ö"……†N;-N……þ™(™™>-ZT£ìl_§@ûpy}zñ«"-\_ªãû%ê*84&a*66V={öÔš5kLtˆ†iëzÈ®ÊJ‹®¼²I§žêVJ 3 DR’ôÈ# :ï<—V¬ˆÐ '¸uÄ^%&ú^¯´`ATsX"IÅÅÍŸ¥lh5¥½¹\RI‰¡Š ‹âãM%'ûß±¯ twÅÎ&ÍÎÉSnEt1ÂÄ /¼ ÇÓüuCCƒŠŠŠ4lذ Ž @wVXhÑÉ'ÇiùòH­[gÓ7:ôÎ;ò1ùဥ§›:å~¸A'äQzúÞ°©©IZ·®õçß}gUCCÇŽËç“Ö¬±êØct ñúÕ¯âõ—¿ØU]ݱ¯ tg+s«4}á&Õ4yô䙃t&»à@И„‰o¾ùF999’$—Ë¥÷ß_v»]ÇsLG »ú׿"åõ¶|³ÿÜsv•–rÐbb¤sÏmjuüì³]>Óc×.CW]«º:ÿߥizøa»JKy[´•ËZa]› IDATëÓüÏ õàÒ\•§ùS‡hë•@H ’&¦M›¦¥K—jñâÅŠŽŽÖðáÃõÐCÉfãÿ:FllëêMLŒ)«µã+9ååRI‰Eåå†úôñ)#£õb©ÝÁĉ]uU£^~9J¦)]x¡K“'»;|­˜ÆFCEEሡ‚‹ ` p vÖø+8ÛÊtý±½tæP*8J Ó4)“ãg9N­^½ZC† ab¬ À¢qãâT]½çÆÚÔoÔꤓ´Ø¾ÝÒ–HþÙ7ÜàÐ{ïÕ´Xd_ þ|ìö^»s8$‡£s?ûÈÈ0õòËu:ÿüXíÜiQt´©G­Wj*a °?îݻ༳¾TÇ÷MÔÍÇ÷VloÉ ñ¯3 CX,Rv¶OwßÝØ©¯»eKëu4¶nµÈínýØêjiýz«æÍ³+6ÖÔÌ™:ì0_— N:Û°a^-]ê”Ói(&ÆTjª©èè` m{*8?PÁ€.ÀЭu”W’)iïMÈØ±ÅÄ´ž…±fMçžÛüØ… #µr¥Sƒ1Sb,)3ÓTf&Í^à@|–W¥ÇWä+6ʪ9g ¢‚]ËÙº•ÌLŸæÎ­W\œÿF~øpž~º^II-WUeè±Ç¢µo°âñz饨N-€îÎíõé¹/ õÀǹ:"+VóÏLX]3LÝJ|¼tÞy.M˜à–Ëe(.Î_ù1?¶ì¹iúÿ ³äKK UV²Z¥ÄDŸRR‚="m±ogú±½4… t)&€n'2RêÙÓ”¿š³WI‰¡Í›­ÚºÕ¢I“\ºå–þÞJŽÍfêÊ+›B",).6tÉ%­Y!Iš4É¥yóê•‘Aè ö­àþئsÎiYm1 SgŸu—ˆéê«›ôË_î oŽ;έɓƒæhiÏ.8÷/ÉÕ/³bõìÔÁ„%ÐM0Ã22L-\X£™3Êɱ骫šS¯¿ý-JII¦x A}úý’=²²Lýãuª¨0d±HÉɦRRXð%»j\š“«­å ºntOu8èNLa!*J=Ú«ÿ»F^¯äp˜?Þ£‹.rÉf3CrËÞ´4Sii„$@(ú|{µ[¾]ŽH«ž˜ýuu±þù]‰ÆôIЭã²Ç.8Ð-ñ¯; Ë*)1tóÍ1Z´È¿ûMb¢Oï½W£¡CC§Z¨©IZµÊ¦+¯t¨²Ò¢ÔTŸ^y¥VGí•«2Ò¨à@xaÑW@—S^.}ÿ½Ek×Z›ÃIªª²è曪¨âàö£´ÔÐÅǪ²Ò NM5õ Q*+ òÀü¬/¶Wkúªlðè‰É5uX:a ts|–èRÊË¥?ü!F¹¹VÛzט ¬jj2$…æÚ••Õ׊÷éé§ëUTdÑæÍVmÚdSD„'$×R™Çg꯫‹ôöÿ¨à@¸á_{@‡*+“<CÉɦ"#÷ÿøýÙ¹Ó¢ü#J >Ýpƒ·Õ÷ÇsËáͰD’|²ÙLÍšÕ §ž²ë¿ÿõ_Š,ˆÒw6è†äAä¯à<¼,W›KëuíèžšJ •@‡¨¯—V®´éì³ã4aB¼}Ô®’’C¿ÑصË骮¶hën¼±Q‘‘þ€dÄ~¸Aññ‡ü2?©¸ØPNŽM。‚CÞÖ™ÍÏJI1õøãuJIñ5‡%{<ù¤]eeÜŒ¡`O§¢Þ£'Ϥ³©à@Øa†  CìØaÑYgÅÊçóß`<ùd´<éh<¤™&ýûûghx<†þøG».¸À¥7߬Uf¦OII» N;-Nþ-mââL}ü±Sø"³‡4uª[k×¶¾75i÷ï+tgÈÝÇgjÁê"½õ¿›í¯àÄÛyË áˆ&€ñá‡Íaɯ¿¥òòCû„6=ݧ7Þð$’¡­ÊÎöiÐ _‡†%’ôöÛ‘Ía‰$ÕÔš5+Zuum;Ol¬tØa^%&¶ Z&Lp+!!twøº»’Z—n}o³þõ]‰®ÕS÷ŸØ°ÂW@‡èÑ£õjª)«õGÜÑÑÒ„ }ü±Sn·äp˜²PªiJßßzðÛ¶YÔÐàŸ9Ò™™¦>ü°Fÿ÷ÑÚ°Áª“Ovë–[•˜ØNÐ&_äWë±åÛaÑ“g Òô6þG èvLbìXz÷ö6ÏÈ0 S³fÕ+=ýÐg†?pèL†!M›æÒ[oEµ8~î¹.%%µý|‹4hOùK %&š²ÛÛi°ÀOájèYY¦-ªÑŠ6íØaÕé§»Ô«W×®›ŒáÑÔëÏŽVS“tñÅMš6ÍuH³f¤„Ö,‚¡¤Ö¥‡sò´©´N׌ꩳ‡± `/@‡ÉÊ2uþùnIîv;§iJ¥¥þÝiRRÚg«â•œ,]sM“Î9Ç%IJJ2Ùè¢ö­àS ¾.Ò[ëJ4:;^¿ׇ àGqu„ŒÆFé£"tíµ56²ÛM½ðB~ýk·¢¢¤~°êÒK’üSæç̉Vl¬©ol’+€ý ‚h ¶„ŒÒR£9,‘¤ÆFCW_íPi©¡†éÍ7#µ',Ùãï?ô­Št_æWëºw6ª´Î¥Ç'Ò9ÃÓ K?‹Ïã!Ãé´4‡%{44r: Y­¦RS[/›žn**ªÕá ÛµËPQ‘EÔ«—¯Ówõàçñ™zùë"ýc]‰FeÇë6*8€ÄÕ2|ŠŽ6Õа74q8LÅÇ›jj’FŽô*+˧¢"ÿI›ÍÔ=÷4(11´Âˆ¢"C眧M›üÛçdfúôÁ5êÓ§kït5%µ.=¼,O›Jêtõ¨,3ŒY%€G`©©¦^z©VW]«º:C‡ÿë´4Sn·ôÏZõÔSuÚ¼Ù*§ÓИ1eg{:tL¦)ڱâèhSf«Ef›šüu¢º:Cqq¦V®´5‡%’T\lÑ“OÚõÈ#õÍ Ø¢¡A²X’³¨BÝWÕzô“í²Û,z|ò Í`@Û˜B†Ý.M˜àÑçŸWËé4ï'¢¢ü7ŒçŸïÒÇÛôý÷õïïSV–W½{wì˜~øÁ¢SOSy¹VËÑG»õÊ+uêÑÚ44H¡ë¯w¨¶ÖPJŠOÏ>[§_ýÊ£5kö^f×­³ª®Î¿-°?ÕÕÒºu6=óL”LÝ|s£úõóœÏÔß¾.Ò›ëJ4ªw¼nOpp¸zBJT”Ô«—)©u°Ð³§©K/uëôÓÝŠ‰‘bb:v,55Òý÷G7‡%’ôõ×úôS›~ó·$©¬ÌЕW:ävû§ù——[týõ=úh½®¸"¶ùy“'»C®:„еj•M^×üõ»ïFjåJ§  ÖõsJj]úã²ÐJy¹ôØcÑ-޹\†þþ÷È ¨køª ZÓßÙ¨’Z—Ÿ}ýµS¦)%&ÿgA×bþÈd$“K~@Ga† èLSúï­=:A'ÆëW¿Š×OØUYÜO‡íviæÌFï’d*"ÂÔM75èðýÍIMõé‘Gêe±øïp£¢Lýå/þ5N²³}êÓ‡°m“’"Ýv[c‹c‘‘¦.¾Ø¤…®Ò:—n{‹Þú_‰®<&Kœta  Ý¦ùcŸa{9N­^½ZC† QLgÌvvî4tÒIq*,l9“cÕªj üÕ++¥êj‹¬VS))f«:Pm­í’êjCII>¥¥™ì†ƒCR]-}û­MóæÙ•˜èÓ-·°èk ¯ œúÓ'yвYt÷ľ:<#vÿO€ ¨¯¯×Æ5räHÅÇÇ{8h"x@Ð55­ÂIÊ͵tH`²s§¡ÊJC6›”œìSJÊÏ?>)IJJòÃå’ÊÊ$‡CŠÞ½ÌDl¬ü`§³•—ª­5éßnÙ¼Õv“ çÑÑG×Êje[á}y}¦^^S¬7¿Ý¥czÇëv*8€Â[@ÐEG›<ØpÔÔ AíBäç[4yrœÆŽMШQ š1á]»¬úSTdèìš2%^wÞ£‚‚ð]PrÛ6‹Î=7VG™ I“âõÉ'654{TÝOL aɾš+8ëvéÊc²ô @"0]zº©¿þµV½zùC“èhSO=U¯´´ö L¤G±kÛ¶½³Y/ŽÔ_ìÿ†«¬ÌÐW8ôì³ÑÚ°ÁªW_ÒYgÅiçÎð MJK ]z©Cß~ëÿ½íÜiÑùçǪ¤„·è8« œšþÎ&íªuéñÓêªQM¡èhÿZ!ÑÑû^[ÔÔúòËÖ—¾eËlš2Åý#Ïð«¯—Š‹ }õUD‹ã¹¹VUTêÑ#¼–«­5´~}ËߣÇc(7×¢>}¯š„Žåõ™úÛšb½±»‚sÛø>J`V  pµ„Ãzô0;4|ˆ‹3uüñåæ¶\/åÄ=?û¼’ËîÙ¦¤–ŸhÛÂðJe*)ɧÊÊ–3J22KоÊê\z8'Oß—ÔéÊ‘Y:wD:³J†¹³€°-ýþ÷ 6lO@bê7¿iÒÈ‘?˜|û­UŸÞzʘ1n%'‡×ìÉ_¡š3§^†±÷gŸ6­Iéé&h?« œºîMÚY³»‚óK*8€Î†Ÿ‹ÂY¯^¦Þ~»VÕÕþ]r’’L%&þtèQ]-efútõÕ-XP«“OviéÒ{¬G'äVjjû&RQ‘E}¡ÄDŸŽ?Þ£ž=C+”±Ù¤‰ÝZ³Æ© ,êÝÛ§ÌÌýï6¯ÏÔ+ÿ-Öÿûf—FöŠ×í'PÁW@ØIO÷UUþí…%S‰‰­WXh覛btæ™n]vY£$Co¾¥ÔTSK–Dèˆ#<êÑÃl×ZΆ VrJœÜnÿ'é>-YâT¯^¡š8’ÃáSß¾Ì*Aû)«séËò´~W~72K¿¡‚"@Ø),44mZìî…KMMêÒÿØÐ¤Hþ0å†b´|y¤¾ø"B‹95eJœª«÷¶Y¿úʦO?u*+«}ÂŒêjC÷ÝÝ–HÒ®]½ûn¤®¿¾©]^U_:õè'Ûa1ôçÓjXØ` æXÃV¤ÇÞg—Cï¼Õj÷œÚZiùòˆÝÏ1T\lm–HRe¥EUUí÷éwS“~tkÞíÛ¹\£ûòúL-øºHwøƒ¥FëÙ³‡–BïÀa¥¦ÆÐÊ•­'X~ôQË-ƒ­V)#cïÌ‘ˆSVkË™$¦bcÛ¯*“’bꢋg’˜ºàW»½F{*)1´m›E;vòüüº¹À*¯sëö¶êÍow銑Yzèäþ¬W&€NQW'åæZ´x±Më×[T^œqÄÅ™=ºõÝýĉ-wÀÉÈ0õøãuÍ;Á,\©;îh”kaI2õÐCõJIi¿ÀÄj•~û[—n¿½Aii>õëçÕ‚uê×ÏÛn¯Ñ^6o¶èŒ3âtôÑ 7.^‹G¨¾>Ø£BW²¦Ð©kßÙ¨bg“;} Îg@ˆ1LÓ ­UärœN§V¯^­!C†(&&&ØÃÐy<Ò¢Eºür‡|>ÿ ÑE5éþû땜Üùã)(0tÎ9qÚºÕ*I:å—ž|²¾ÅŒÉòìÜiÑš5VõéãUv¶©úzCùùõéãSjªOññí?>·[*+3dµJii¦Bí²¤ÄД)qÚ´ÉÚ|Ìb1µfS}ú°,~ž×gêÕÝ»àÝ+N·ï£Äèˆý?º¨úúzmܸQ#GŽT|G¼q@‡aÎ# ]UU²ÙLÅî³Á®]†fÎŒiK$éµ×¢4}z£’“;ÿ»woSÿùO** EDHÉɾ n©Ÿú÷ßwŒfÀ×í/"BÊÌ ÝÏ3êêŒa‰$ù|þz ~Ny[/ËÓú]µº|d–Îc@#0´‹Š é³Ï"4¾]ññ>ÝuW£ö*:Zr¹ UV¶nîÜiÑ!wƒítJ¦)%$Üx32ÌV3Jp`¢¢L¥¦úTVÖòï4+‹°?mM¡S|²]6‹¡ÇN¨á,ì q&€v‘“¡«¯ŽmñõÊ•N ì“Ãaê¿ðjƽ³l6S‡Ööµ9jj¤uëlzôQ»LSºõÖFy¤§EpR\lhëÊË sŒW™™>EFÒ×eÔÔHõõ†LÙíó¦æÏ¯ÓÄÊã1$™ºúê&¥§701MiçNC55†bbL¥¥™ŠŠ ê –œ_õŠÓíTp] à••IO=ÕòîÜë5ôÚk‘zè¡F¥§›zå•Z]~¹Cß}gSF†OóæÕ)-­í3<6n´êŒ3b%ù§ñö™MÿùO­ÆŽõ/äZ\lhêÔ8mÞìg¢¢L½ÿ~Ž:ªe8ÓØ(•–ªª²(>Þ§ÔTSÇAüð¬¡Á_{ŠŒ4•’²÷¸iJ?ü`Ñ}÷Ekýz«N:É­›onìjÕ*ëÑ×_Wkûv«zôðÿþ’’Úý¥Úäÿ³jÚ´X[cê‰'êuúé®.ñ÷Ú]•×¹õÇOòôÝÎZ]~t¦ÎcaW@B`8d‹~ô“ü}׉îßß§ý«Vuuþ›ýŒ S–6îÕÖØ(=ýt”ö„%~†æÌ±ëˆ#jåpHŸ~jkK$©©ÉÐwÆè7jš×)q¹¤O?µjÛ† ójçN«ªªL èU(¯m]\lhöìh½÷^„úöõéϮ׈^EFJEE†N=5Nååþ_ê‹/Zµy³E ÔuH-eg›ÊÎý„wî4tÉ%ûþúzC×]£5kS[S¬»ý )Ñzvê`Â@—Ä»@»9Ò£?®Ñyç5éškµb…S½zùdšþm|_=Bû[¤¶o·Ès“¢¢¤›nj”Ͷ7˜±ZMÝzkSs2y²[û7’4uj“’’ös¹ü[÷.Z©=³Uvì°èÞ{£åtÜØ:šÓihÑ¢–ë>¸\†¾ùÆDG·®ÞDFú??¥²Ò?3¥¬¬}Ç v»ù#k¨˜ÊÌdvIg*¯wëÎE[õÿ¾Ù©ËŽÎÔìSú³^  Ë"0´ ŸÏ_‹ÈÈð©±Qú䫪«¥ü|‹Æ×Œ±ºùf‡Ž;.^¹¹ù9ì0Ÿ>ýÔ©Ë.kÔÅ7iÅ § Ø»>Iß¾^=ûl½ÒÒ|Šˆ0uÁMºá†¦•¡„Sß}×z&ÊÚµ6ÕÕ…æú ‹”˜Ø:üØôèaêè£Ý-¾wýõJIùñÀä‡,ºðÂX ž sÏÓúõùºp¶‘aêùç뚃#Ã0u÷ÝJûÿìÝwxuþÀñ÷̶d7›„4ÒèÕx4T<=PDÀQQQlXPÏ.xŠ€ý‡"ž' VÐSQAQAiÒ¥ZP’NÊn¶ïÎüþIXB'D>¯çñyÈdwæ;d2Ÿý”Ôz|RõÌ»\ÜòñFv”ûyºo+®ì˜.ýJ„BÔkÒÃD!DøåC‡V5chÕÊÍœ9fÊʪ$ÂÓOÇ0q¢w¿å5‡#.NcÔ(?±±F£Ñ½Ë{`Р ={†Ðu#Ȱo_’„èÕ+Äk¯E7ªíÑ#„ÓY7G 7l¨óä“>n½ÕΞkܱcˆæÍ€@jªÎ[oyX¼ØÌÊ•f.º(Ä©§î¿'KAÂàÁqlÝjÖ¯73`€“E‹\dfÖÍó?“ ºw³|y9»w«$$è$%iÄÇ×öÊþú"šÎ;kòyoM>§e9¹ÿï2G!Ä_ƒL„B³p¦LÙ·+¬XaªÖWŒò—`pÿýHÆã/¿´p×]¼^…´4éÓ+èÐ!ÂÞd›Lt:ŒÙ íÛG¸þz?o¾iC×Ú¶ðøã~âêh«“ .¼0È¢EaæÍ³Ðºu„Ž#4lXužéé:ƒ…4(t=Ay¹R,Ù£´T¥¤D©·0J²³u²³|\µ8:»½!Æ· ù\{zWt”)8B!þ:$`"„☙L™Y½ôaçN•aÃÌžmÚ>lX„„#?Nq±ÊÍ7;Ð4㬰Påê«ãøúk×ÏMKÓyôQ·ß 2ÊtÒÒêv° !4N=5pLû‰‰Ñ1›uÂá½l«gâq0«ÿœ‚£ªðtß–´ÏpÖö’„Bˆ%!„ÇLQàúëƒL›fÃl†aÃD"pÙe~ÒÓáùç=<óL,á0Ü~»ŸóÎ;xÄìÚ¥TKª¶©x½ û6z={'›ädýËÏSOU¥ø\sM¤¤º0uCDÓywM>ï®É§S–“¤G!Ä_”L„BÔˆF4/.§°ÐÄ{ïYiÐ@ÇfSq84®¾:HŸ>FO‘ÔTóQÞ}Œ,½KRSµýNˆæpÀ 7¸à‚«V™h×.B³fÚ~›Ê ±7)ÁBq2‘€‰Bˆ¡ª°i“™Aƒª¿¾þº¹sÝ´h¡‘ž~ìãIIcÆøø÷¿cÑ4…ØX×^óDõñØÛî݉($'똪·R9©5h Ó A„ví¤ß‡8}ûù¿ÿóœ\‹ ;‰D4÷ÖæóÎê|:e:¹ÿÜ&4)8B!NB0BQc6nTùåãÇ{Ð4…iÓlôëÝ»‡±Zæ«5¥¬LaÊ”˜Ê¯=…G‰å£\ôí C‡0ŠkÖ˜ùÏlÜv›Ÿ±ccÉÉ 3~¼¯FšÐŠš·{·ÂsÏÅDmûâ +=æ#9ùä}¢•xCŒŸ¿õyR‚#„BHÀD!DðxÀj…·Áóø IDAT>}Bƒ Û¶™˜7ÏBI‰‚ÙìgâÄX¦N­ ;»füQ½oùöí&Eá‹/lLœƒ× çžâë¯Ý¼ðB [¶˜ÈÍUñû}5²†ã­¬ \.“IÇbÑ œN„„Ú^Ùñ *ƒÕÐ+*ä¡ýx[›ëfÜwF Îø [Ò1SJp„BœÜ$`"„¢FªÜv[¹¹F ãŒ3¼ô’‡O?µàr©¬^mæ‘Gì¼ü²‡¸¸c?^›6 ³÷TžnÝBìÜibüøªrŽï¾³òÜs:–?+ š5‹`³Û±#‡9æýÌ®] #GÚ™?ß‚Ó £Fù(-UøåÏ?ï%+«v2dü~(-U0™Œ¾5ååÆ×‘ˆBb¢~ÌYD :íÛ‡Y¿¾êW”ÄD† %»äxÙ»§c¦“¤G!„d¬°BˆàñÀر1•Á€åËÍäæªÜ¿gž1J,æÏ7ãv×L¦@ZšÆóÏ{‰‰1г³#LšäeΜêzóç[èÜ9ŒÍ¦óì³^22Žþ¡~Ç…§žŠá†|ù¥…Ý»k>óÁã1cb™?ß (¸Ý ?K÷î–-³pÏ=v\®?ì!*<ñD gÏ€N~ùEå‘Gìœ~z]º$0dˆƒÜÜc»)):o¿íᢋ‚8:ݺ…˜=Û}L?3q`¥¾ÍùwVçsõié<Õ§…K„Bˆ?I†‰Bˆcæñ(¬][ý–òË/*ññfvì0:¬æäD*Ç*>®¸"È?þÂçSˆ7ÊVZµªÞd¶uë0íÚEX¶¬ü˜¼wíR¸à‚xòóÀÐ_Xyä/·ßÀj=êÝVãr)|ýõ¾;TX¾ÜÄ)§Døæ Æ9Ÿ(¼ô’ɓ씔Ë—›y÷ݪ4›•+-LœØ1>bb´§CkÔHcÒ$‚ͦ“”t¬«û³6×Íøï¶¡cLÁ‘!„"šd˜!„8f :窶ýÌ3Ã<÷\쟯ÑxöY/ ûñÂa¨¨0Jb5ÒiÝZ#=Ýx°>眧Ÿ^µ§SgÜ8:EhÒDGÓ ¸‚Á#?î† ¦Ê`Éÿ÷±×l–‰ÕªÓ¢…øQU£ôš7×ÈÍUÈÊ:ñS~JJ¦O7‚#Š¢““cLö5¾—ëØ¯G|æSªÆj…—_ö°c‡Š®Yùù 11:¹¹*Ó§W–vbKTÌf0À¸Þ€Bb¢FE…ÂŒFÙЧ&.NÊgêªR_ˆñßýÁÚ\7WŸ–ΕÓe ŽBq0BQ#23uÞy§‚òrcªKR’ŽÓ {²#jB~¾Â€N¶n5Ò+,°°|y€æÍ#L˜` W¯ Ï?ï¥sçèÒœ‚…AƒœlÚd¼÷§ŸÌ,[fæý÷=¤¤Þ;u “ Q^^•erà ~’’jæ].X·ÎÌÔ©VFŒpÛmJJŒcõëä¾û|¬Xá"=]C9Áϸ èôêfèÐ8EÑyøaO<áåÑG4jáüØí'vmâðH ŽBqd$`"„¢Æ$'Cròñ›f’—§VKöøè#+Ë–¹X»6ÈW_Y™;×ÊÆ²³£S?JJ”Ê`É?ü`¡¬L9ì€If¦ÎܹnžÞQ|å•.º(tLý:ö¶aƒ™‹/ŽãüŒm¯ –ÌšeeøðíÚ‡”–ÃPP pûív#R£ë cÇÆ²|¹‹^½Ê‡’’tiÎZE4éë x{uí3âxàïMI²KcW!„âP$`"„¢ÞÛ¹SeìX/_}e4J]¿ÞD¯^Ñ…ý÷üÐQ ›—ªB‹F/–@@!!A¯‘LŸŠŠt~ØO‹&Mª…Y½ÚDÏžµ0ñùJK£/–®+””(tíºgÄsíq¹ŒñÆ>Ÿ1Þ8=]7`”àLøîÖäºzZ:C¤G!„8lÒôU!D½‘‘¡Ñ¬Yt©Mÿþ!æÏ·›«Ò²¥ñ½ý’’tÎ>;º1í€!5òòòòBÕûÖîWl,„B0ož™‡ŠåË/-ü!´¸~ýUeæL ë×›((0¶—”À+¯ØèÖ-âX°ÀL‹ºu«¾˜³Ï®` €Ã¡“™=d2餧¿Œ¢ÃUR/¼Ãé§'УG½{dzy³üг.ÏÍ-odk©ñ¶äêÓ2$X"„BÓ˜1cÆÔö"DÝÈÍÍ%%%‹ERx…µ'.Î?ß$8:C‡9óÌ0cÆÄ2p`ˆÅ‹ÍÜ|³Ÿ=ÂÄÅE¿76ºw‘­¯sýõ†ðÝwf®½6Ž×_·¡(Ъ•vÈååðØcv{ÌΪUf>þØÊ¶m*çœ"6¶úë].øôS+ƒÇñé§6¦Nµáõ*œvZ„ß~31bDá°(lßnB×áÖ[üðƒ‰¢"‹Eçž{üôêµÿýŸqqУG˜¯¾²àñ(8:“'{h×.Bmß6n4që­qèº p»Ö¯7Ñ·o°Ö®WmŠh:ï¯-ๅÛi•bgü…-iž|^!„¨#B¡ÅÅÅdeea³Ùj{9âHIÎIhΜ9¼ù曌=šœœœÚ^ŽB‡C£Q£ª sçZ;6†Œ ¦M#¼ù¦‡ÔTíÏf³Ñòòúôq’­Ó²e„wÞ±2y²ûîó³{·‘ðÄv5Ò4èà©&%%*ï½gÚ6k–…ÇSIJªžqQ\¬ðñÇV&NôÒ Î÷ß›yûm+7Ýà믫ߊç̱rÉ%A¦M«@Ó¬V£7ŒÃqª†) tèáÛo]¸Ý v»NZšŽÕzè÷okÖT¯·ZµÊüg¿•“«4§Ìbüü?X³ËÍUÒ¹ª“”à!„GK&'™’’>ûì³Ú^†B5“ úõ 1s¦ñxíµn¿=€Ù¬“}à‡ãÒR…ÂB……°zuÕíoß&µo½eãüóCÄÇx Féξ¡ Áàþ_¯ipÅAÆ‹¥ @¡_¿ o½å¡¬ :uŠT{}›6aÚµ‹PVff\.…ë® Ð´iíMT22ŒÆ®EE ëÖ™øõW;‡ÉÈÐHH¨uuìXýžvZ«õä –¬Ës3î»mhŒ»°§eä/±B!I |O2o¾ù&¬íe!ÄQóû:uŠÃn×xòI}ûé×/ŽE‹^b”fD?@›Lzµf°Mšh*[61Q§mÛè‡ô&M"$'k+lÞ¬²i“Jq±T …FŽ´³k—J8¬0s¦éÓ­4j¤Ñ¹st¿’øx ¼”•©ôìÏ‹/ÆòÆ1ôìϪUffÍ2³c‡‚V‹­Cvï†ûî³sÁñÜq‡ƒ=â™9ÓJ P;ëiÒ$ÂM7ùQãçÛ°¡ÆÄ‰’“kg='š¦ë¼»&Ÿû¿ØB£„&l+Á!„¢HÀä$²jÕ*Ìf3:t¨í¥!ÄQÑ4‡áƒ|´l©³`•¡C˜ÈÉ9x!)IçÚk£S@n¿ÝÏÂ…UÙ&N§ÎÝwû0IKÓ™1ÃÍàÁ²²4þùÏŸ|âF×®¾ÚÁg$Э[W]å ¨¾ÿÞ\Ù_cÏ?· *¤§ëL›æaþ|³f¹X¼ØE«V:o½eÅã©z®+<óL kÖ˜9çœx¶o¯½[xi©ÂgŸí]‹£ðè£vŠŠj§ô#9|ÐǪU.-*gÞ<mÚÔ~3Ú¡Ìâ¡9¿ñÖy é˜Îø [’,#ƒ…Bˆ!%9' ¿ßÏŒ3xøá‡ (g\!ê¸M›TúõsRRb ú÷2~¼—Í›MdgW/ËØ[b¢ÎÃû2$ÀêÕfºt Ó¤IŸÚµ‹‰MM33¯Œ£Q#çžóâv+ÄÅéØíðÒK6–/¯zX]¹ÒÂÌ™67®¾¶¬,Ý»’’tRSuRS£_ãrU>x½ 11PV¦òê«6ž|Ò‡y?wr—Ëh|ªªFpgÿ#•L~¾Â·ßZX²ÄÌ„xñE÷Üc'1ÖYQ¡ Õ^Ï„HH89‚${¬ÏsóÔwÛˆhðÔ…-8]²J„Bˆ%““ÄŒ3èÝ»7‰‰‰Öör„∕”Àw:*ƒ%`di àÒKƒí9²GJŠNJJ„.]¢ƒ‡jòz ‡1­ ¢æÏ¯þÉþçŸ[xé¥ íÛ‡X¿Þø¾É¤óàƒ>rsURRtt]ÇïWHLÔ+³[®».ÀÔ©¶¨Ì”+¯ 2}º‘Ù±m›J(Dµ€I^žÂý÷Ûùâ ÉÉ:cÇzÙ“Åë…ÂB•ŸVÉÊÒÉÊÒHI© |)\{­ƒ•+õ¿÷ž«®òsã^}5€öíÃ8'WÏÚ¢é:Ó×ðÖê<þ–ǃoJ²C²J„Bˆš&%9õÌœ9sظq#7ndôèѬX±âïùý÷ßÙ²e ½{÷>+Bˆã#PøñÇê©ë×›+Xr¼Ùípî¹Õ/ÿ{ˆ† už}ÖÇäÉFöòá‡,X`&&vì01b„óÏwòøã1äç’fÍ4fÍrÓ½{ˆÂŒïÅçƒ5kŒɰaÕGæz½ðı̚eEÓŠŠTnºÉÁξÝk,]j¦K—x†urî¹ñÜ}wtyMQ‘R,Ùcút\tzö 2mš'*È"Ž2_ˆ‡çüÆ´ò¸²c:.l)Á!„â8‘ “z&//>}ú0f̆ ÆÊ•+éÚµëAß³fÍ‚Á ÿþ÷¿*Kr¦NŠÃá`Ĉ¤§§÷µ !ı°Ûuzô1o^ôÛîÝÃG½O¯vïVœNcLîÑRU¸ä’ sæXX¶Ìx€=ãŒ={†Ù²ÅhDºm›Ê®]&  ñ¯Å2a‚¯¿¶ ¯¾Kn®Êĉ^âã¡{÷ï½ç¡¢/6óÌ3vRS5FòѵkõàLy¹ÂìÙûÎùUøî; 99ûïÈZP pÇŽÊÒ€Ù³­Œå¯, «—E"FYÑ?–c·%OâøZŸWÁ¸ï¶Öt)ÁB!N ˜Ô3IIIäææC³fÍXµjÕ!ßs饗r饗V~]TTÄí·ßΰaÃÈÉÉ9žËBˆ“Ï>ëãŠ+ŒQ¶f³Î¨Q~š6=xï’)-Uxã +Ï<K0¨“æÝw=4irt}0t>ýÔÂ%—„˜0ÁKa¡Ê–-& ŠÃíV˜?ßE»v~üÑÄæÍ&®»ÎʳÏúxã {(ž5ËÊ“Oúˆ×ÿÎ8£v‚%`dš4n¬“‘±ÿþ(ª ±±Õ?cÙ3VYÔŒ2_ˆG¾ú7WåqE‡†<ÝW¦à!„µE&õŒÅb¡eË–¨¸«û+tBˆzbûv…;ïtйs]Ï—_Z(-=1ÇNMÕyöYË–•3ož‹Å‹]´m»ÿˆÇc¬uÕ-[TþøCAQ #£úëôϲÙ\¿ ©©:?ìªÎ#)Iã¼óªOëGgC~·|ò+›‹}ŒíÓ‚a3¥_‰BQ‹¤‡I=‡ùðÃ)**bæÌ™h'òãX!„¨AÅÅðÐCv¾üÒÈÒØµKáÚk|ÿ½‹ NÌ¿mIIÆCÿÁ„B0ož™øx˜81†ùóÍ80iR&x¹òÊ8tÝx¨mÚ4BzºFvv„;«Ò4† РAý˜( üã!æÌq3uªF4®º*HVVý>¯º`ßœÏmBŠC:é !„µM&õL¿~ýX²d ¹¹¹$$$УGÚ^’BRY™Bi©‚®Cb¢1ŠÖãQ˜3'ºÔ@Ó/6Ó¦Mð{:ñ ~üÑL›6n¾ÙÏ7*Ìšeášk,[æbÙ2 šÉÎÖhÛ6ÂÂ…f^~ÙËìÙ¶l1Ñ»wB‡œæ‰A‰ºœ8˜]»FèÒÅ‹r Œ²¬ tbbj~ÿuQ™/Ä3 þ`åN7Cd ŽBQ§HÀ¤ž),,ä¼óÎã¼óÎ#77—Ÿþ™N:Õö²„†î»ÏÎçŸÁ‘sÎ 1y²EÑÉÊÒØ±#ºaFÓ¦u+sÎ<ð@, Z°ÙছŒígÎ+={†˜9Óʶm&|>˜2ÅCLL„SNQ¹ì²Íšií‹âvÃo¿™xí5ññ:7Þ qc Kn[QÓÁ·¾ÿÞÌCÙÙ½[eÈwßí¯‘iHuÙù<õí6BNÁé,Sp„Bˆ:¥Ž%ögÕªU•NOO¯,„uÕœ9>ÿÜ (€Â‚VÞ~ÛFFL˜àCU«Š;wѺu¤ÖÖº?±±:¯¼ÃÂ…Æ9 /½CãÆíÚ…¹å–8¾ÿÞ®]*%%*×\GV ¤sçƒKÖ®5sÞyN¦O·ñÚk1ôìÏŽ'×íyÇ•!CâØ¶Í„Û­ðŸÿÄðÊ+6‚u'ѨFiºÎôuÜ;{3ñV&_ÒF‚%B!D$&õÄüùóY°`EEElذMÓhp ± BQøýðå—ÕS%¾ùÆÂ7èÖ-Ä÷ß»XºÔLãÆ­ZEhÔ¨neª|ûmõsX¾ÜÌwøùõ×è ·[¡¼\‰êí@n®Ê‚fRRtN?=LF†NY™ÂSOÅb“ >ŸÂ´iVÜÜΩ®© ¨Uùà7ß =½ný}8Våþ0OÏ߯Ên®ìØk¤G!„¨³$`ROtíÚ•œœ.\È9眃®ë˜Íf’jkþ¤B› Î:+ÌW_E7°ìÖ-„ác±=MêRÏ’}åæª´n&77úºt c±èØí^oUFˆÍfôßp¹ þϤ L\t‘“PÈx0nÒ$ÂìÙnl6}¿Y>_ýx€Öu‡9æò¡&Mªg5l¨a±üµ‚%{—àŒ½ ]IV‰BQ—\9¿õ˜Ýn'--Aƒ‘ššJZZIIIQ%:BQ×(ŠÑÿ£S§ªÑ³mÚD1"P§{tìáõBv¶ÆÈ‘ªz«tîl|&MŠá›oÜØíÆ÷L&Ñ£½üûß1<ð€ÂB…’cО` À˜øî; ÉÉpçÑ™$ªªsýõƒ®+0¦ ýþ»JQQíWrs&N´qýõ>þØrLëèÙ3LÓ¦UA³YgÜ8ï!Ë™ê M×™ñg NºÓÊ+—´‘`‰BQH†I=³iÓ&>ùä¶o߀Ïçã7Þ¨åU !ÄedèLŸîa÷ncJr²NÆFæ@q±1=gÏd”ºÔäSÓ`Ñ"3¿þjâüóƒ|ýµ›ü|¯×(Ó1"·[¡¸Xeùr¿ÿn"†÷ß·òÙg6Î<3LŸ>Ars«>ñûïÆ¶³ÏñöÛ¼ür ‡ÆCùiÜøÀo].£„åÁíTT(œzj˜·ÞòЬىk–›Ÿ¯0p “M›Œr¤Ù³­\½Ÿ1c|ÄÅùþ23ufÍr³j•™‚…óÎ “™Y·šÿ-£çVîtqE‡†\{º”à!„õ…¢ëzÝùíTÒ´iÓèÛ·/ßÿ=}úôaöìÙ\zé¥Çõ˜.—‹•+WÒ¶m[ìvûq=–â¯+†‚(/W‰‹Ó0›n¾ÙÁâÅFªÉ©§†™1£‚ÌÌãs[ÚµKaÅ 3n·BÏž!4Ð)/WðxtÒÓõ¨‘¾yy 7Þèà®»üÜz«§SçÖ[}<ü°ƒ`°ê×bÑY¹²œ[n±³titÙN¯^!¦L©àÅcxá…Ø½¾£³`‹víª‚ee &“ŽÓyðóؼYåŒ3âÙ»çG·n!Þy§‚¤$… ¼ˆ=ð~¥¤JJŒQJŠNF†^9gÍÿøGt†„ɤóîƒ{N6?åW0öÛm#÷ÿ½©d•!ÄIÊëõ²qãFºtéB|¼Ü êÉ0©gbccIMM%Cð¯:B@ñ—¢ë°v­‰Ë.‹£¼\¥{÷ýú…*ƒ%?ýdfòd>êÇj=ÈÎS0 Û·+dd@ÿþNòòŒˆÈwøHJÒyòÉXÂa…´4ÿý¯‚¿ý­ª,$Aƒ‚<ôâb“IÃnW¢‚%N§ŽÙ ;FXº4z ]º„q8`ĈÂ{ïÙHLÔxâ MšD/P´f‰}¤.[fÆç32?^ÝÆW_YèØ1½÷ú«ç`(-UˆD`ôèX>þØÈ”IIÑøüs7mÚh•×f_šfüœ…Q‚ó¿õ…¼±*—œ4ž×”TG ü¥B!Ä %“zfëÖ­,_¾œøøxF-Bˆz¡ @áºëŒ` @‹ß_ý´d‰…ŠŠIIÇþä½f‰K.qÒ¹s˜®]ÕÁ‹E§gÏ0ƒű'ðPX¨2|¸ƒÏ>sW–ÅÅé4oaËÓŸç §Ó²eÕ6€Ñ£}4l¨sË-¾øÂÊßkÕ*ÂUWPUHKÓ=ÚÇwú+¿V޲*£eËêæÍ5EáŽ;ìÌk<˜ÿô“™ï¾³ðõ×®ÃÊÚ)(Pxùe X5Ê_,(.V5ÊÎ;ïTРdeidfjQ¥Fýû‡HL”ì’r˜güÁŠ..ïÐaR‚#„BÔ[0©gî¿ÿþÊ?7nܘæÍ›×âj„âðø| »vU=\oÜh⢋‚|ñEô§îçœÂé<ö`Ia¡ÂÈ‘ü~…¤$üüªc§¦êlÝj"+KgÄ-[jìÜ©òßÿÚðûÀ8~b"4n¬Ñ¢E„ß~3‚ ÿú—‰=ìÜ©òóÏ&Òª•†ÉÙÙ:_~é&/OEU)/{Ä…ØØc?·Æ5 ð¿ÿ˜©S+ðùæÎ›«RP ’™¹Ÿ”½ø|0aB,S§ÚèÚ5Ìúõ¦j¯Ù°ÁÌo¿™°X iÓ_|áæÅcX·ÎDÿþA®¼2HBÂ1Ÿ^½RX¨°i“‰µkMôè&à,çåUÛ„5ž¼ ]¥G!„¨×dJN= &Š‹‹+ÿKNNæ“O>©å• !ġůêdgW=´¯Ze¢ysÞ½ƒì Pœ~zˆáÃkfzN([¶·¸eËÌôî]5¥§¸X!''ÌK/yøä+C†Ä1eЧžò!Ñ´©Îk¯yHJÒ*ß»fÊYg…xà]ºD¢JiÒÓu:uŠÐ¡C$*XR“RRŒ 2K—–3kV9Ë—»X¹ÒLn®Š©zœã°Fó–•)LŸn¯6oV騱z€¥[·0³fY9÷ÜxÞzËFjªÆ¸q^>ü°‚‘#•|O%%ðÀv pòØèX®z¢”1ó7“b·2y`[ –!„«1÷h IDAT0©'žzê)FͤI“˜4i¯¼ò ‹-ªå• !Ä¡5l¨óƞʒ ³ aâD+WºX¾¼œ÷ß÷ÔXÃW»]çÌ3ÀQn³n‰§žò™©£ãtêÜ}·5kŒDË_5qà ŽjýIÚ·°p¡‹ùó]Ìšå&?ßDß¾NæÍ³ârÕÈrXr2´i£Ñ¥‹ÆûïÛ¸ç_~iáòË£ûZµo:¬ÉCŠBeTi©ÊÖ­*7ßìÇl6¶µmaäH?o¿mUÆ‹e÷n›Íxßþ5u»w«ÌœiÅdÑrØz]ôù sg‡6Ò¯D!„ø‹)9õ̺uëèСCå×k×®¥cÇŽÇõ˜2%GQÂa£„¡´TÁéÔIIÑ9žÿ¤lÛ¦ríµ6l0ãtêü÷¿ääD0™ÀåRèÞ½zýÈüùå´o_½‡Ç÷Ücçƒl{mÕY¼ØENNíõíÈËS8ë¬xJKUL&^ð ÁâÅzôÑ·oˆŒŒCßæ5 >ýÔ 78Eѹç?W\ÀëUøá3Ï>UVµjU9Í›Ÿ¼=KÖ®5Ñÿ:WýˆbÑØ6ýÊMaÅŠòýö™Bqò’)9õ—ô0©gæÎK³fÍ*ÿG;ÞÁ!„¨)f3dfêÇmlð¾š6Õøè£ Ün«U'5U¯œ¾ Ûš7׸üòññ:sçZˆ‹ÛÿÚÊË•jýV@á»ï,ääŽï‰„¢@LŒñçHDáŽ;´iáùç=tï~ð¾%{+-U°Ûu>ø ‚ Ì´l©qÞy!5ÒÙµ {ÌŽÛ]•}Ó©S˜øø“÷óM×YåΣí-¹x¶ÇóÛ»§*!''LBÂÉ{]„Bˆ¿ ˜Ô3ÙÙÙÌ;·ÛM—.]ÈÉÉ©í% !D•’bd²ì«¢Bç•W<( ¼øb %%*W\ 6vÿû±Z¡I“?ý}ÛlÕêðƒÇCjªÎƒú¸ãGå¶Ý»5:² ‡eËÌ\}uN§NÇŽa¾ýV%6V§Q£éé:³g»¸ûn¿übâœsBŒçÛïu=¸þœ‚³|‡‹^2ïãVXBÎ=?ÈÓOûHM=9¯‹BñW$%9õT(âÕW_eëÖ­<ÿüóÇõXR’#„ø+)+S1"– ð8ÑõªÌ‰‡òq×]~Ìû|œ‰j/¾ØYÙçäôÓC¼ý¶§ZsW]‡]»Œ2]‡ÎÃdeEv»^!𦓠ӠÁÑŸOi©ÂO?™˜6ÍJ³fW_<¢€‰ÏÆÅñÍ7ÑÝvÏ:+Ä;ïT°'sx÷nâât'›Øï7®ul,™¬‹Ÿ <Œýv+þ°ÆýoB×F ””×Åá8¼ë"„âä#%9õ—d˜Ô3ï½÷‹…Å‹“““Ãí·ß^ÛKBˆ:K׉9Ö½ªiqã|¼ÿ¾-*X0mš¡CQAMƒuëL¼öšéÓ+øýw•æÍ5Ú´Ùÿ$œíÛUþñ'%%F¿ 4æÎuSQ¡óî»1 dút+o¿m#^½BLœè=ê©: èœuV˜îÝÃGÕ|ÕbæÍ#@tÀ¤iS Û^-[’“aÏD£CÉËSxþù¾üÒJ‹aÆóѺµV-U_hºÎG yce.mÒÚI5f3Ü|s€?´V®;>^ã®»üQ“ÃU^÷ÞkçË/€Bn®•>},,YRNvvÝ,x<°s§ÊìÙVÒÓ#œÞÝÏ;›·±|»‹ÁíÓÖ9³Z}š’B!þz$`RÏÜ}÷Ý4kÖŒH¤vëæ…¢.ØS]Ö’—?Ky¹Jóævî41j”ƒÝ».»,HûöaÚ´‰™!7׈4(ŠÎOøþ̤¨âñ(äå]WرÃxýöí MšUj Âo¿™0™tzõ ‘•¥ñÃf¶m3Ѷm„öíÃ,^\=*òÕWn¾ÙOJJÍ\—‚…_~1±u«Ja235œÎ¿¾qcùó]¬\iFÓ kW£Œèh¸\ sæDŸcE…¦M&²³ÃGµÏc±s§‚ϧ`± ‡­‡˜ø»j•™ãÐuGãrZ_ó+ñÉaž8¿9g4®>YI!„]0©gÂá0?þ8v»³Ï>€nݺÕòª„âÄÒuøõW•;îp°f‰3Îóÿç¥E M·[¥m[`P£ÿÿø‡0"¯¿Ãßþ¦k×o¼á!&Fç—_TN9E§E‹è`ty9X,:<àåwlìÜY\QU…‚HO¯z½Ã7ÝäçŽ;Œ ÈæÍ&.»,H÷î!F²cµ*ôîbæÌèóéØ1‚ÃA(,Txüñzö4J†Ö¯7‘—§pöÙ‘f¡( dgëdg‡Žùøªj\‡ŠŠèíµ1UgãF•áÃüü³™ädçžóÒ³gˆÄÄý¿¾¸Xáá‡cÑuhxöv²úþ†w‡“ËSOáŒÆ’U"„BœlÔC¿DÔ%ëÖ­ã®»î¢U«VtëÖÂÂÂÚ^’Bœpyy _ìdÕ*3‘ˆÂ’% Š#?_açN•>}œ<ýt,«V™ùä {‚%}û ‡®¾ÚÁÚµfrsUš7×IH¨ ZìÞ ?ü`bÆ ×]Ç’%f&LðrñÅATUç¾ûü|ú©…P¨úCtNN„;ï´óê«1Ì›gá‘Gì¼û®ÓO°r¥‰´o_˜ÈÌÔ¸÷^ÿ'ô͵0 ÌØ±±\uU=fGUNÔí"%Eçþû}QÛÚ·Ѹñ‘Mî9V;w*•Á€Ý»Un¸ÁAqñõ ‡¡Ô¡åµhÔ …‹ñë«§á.¬¡ŽB!êÉ0©gTU%!¡*%8>ñéÍBQÛJKŠŠ¢|ÿøÃDy¹ÂçŸ[)+S+_×°atfÃ5×;6–§ŸöñÈ#v~ùÅDÓ¦&Oö•eda¬Xaæ·ßL<öXU¯(·[aòd/÷Üã㫯¬üô“ŠÃQ=kb×.•íÛ£S9Þ~ÛÆ7߸X²Ä”)6¦LñPQ¡@jªFbbÍe_˜L0r¤Ý»kPP 2th}äF×#dfÙþJJ ¸X¥´T!+K£aCý ½Vl6¸òÊ]»†™=ÛBûöºw“–vb3L|>¥2X²G$¢°y³JË–ûÞi4ñ#¿Ææ7ÚS¾1EÑé×/x"–,„Bˆ:F&õŒªªLš4 ¯×Ëÿû_6lXÛKBˆÎÈÆÐÙ;sÄdÒ‰‰Ñ)(¨ÚöóÏ*gžâ“OÜFðÀjÕ¹í¶wÞi¯,±Ù¶ÍÄàÁN–,)Çj…¢"•÷Þ«êxzï½>224†w (pÓM&N ü9!%š¶ŸgqM3¦Ù|ú©«U'/OåòË”–ª„Bpå•AÆŒñ‘šztA…PJJ¬Vãý{‚%{TT(•Û23¿Vq±Â£Æ2c†q-ìv™3Ýtî|ð}$%ARR„.]j¯ß–Å¢“’¢UË(ÉʪþÒu~,dÊŠ\š§8HÚÔ†ü²x²O óä“>²³OlvŒB!ê)É©g @Ïž=ÉÌ̤{÷î 0 ¶—$„‡%Ü\…_~QÙ¾]Áë=ú}%%é Võ©B‚ÆË/{ˆ×:4Àžé5ÿþ·Ÿwßµqé¥qÜ¿9s,4j¤“–¦UKöp»òóU@GÓŒà#w[´Ð¸ç?þhfÃ3#G:øý÷ý7iÚT#33úûŠ+‚4h “šª‰Àw8(,4ýYÒ£ðþû6¶mSp¹Œk´wÐçP ž{.†óÏwrÅN¬V°Ù¢/&“ŽÍ¦³ví‘}N²}»Z,ðzn»ÍAaaÝïç‘•¥óÜs^L¦ªkqùåRS£6.˜ÑßüÎkËsØ.ÿ»¤Ý«óí·.>ù¤‚sÎ ×X!„BÔ/’aRϨªJ»víh×®ëׯ§}ûöµ¼*!„88]‡õëM ÇîÝF–Ǹq^.½4H|ü‘ï/1Q硇|  ¤’“aút+[¶˜¸âŠ Ÿ}ææé§chÜXcÖ,3Ë—»((PðûÚ¶ c³é{?øëTT(ª´oææ›unºÉAïÞ!>ü°úh•7Þ°qöÙáj½G23u¾øÂͤI6~üÑÄÀAú÷g|?Pذ!:Ø’ a·Ã-·8øê+ ÙÙ/¼àåŒ3Âl‚¼ß/½dcÒ$c;vÀ3ÏÄ0~¼—Q£ìèºèŒågæL+×\8¢ë¼iSõÏU6o6²bê:‹Î>;IJe.6mRÉÊÒHIÑÈȨzÍ/…Æ~»_Hãß½›Ó­ÉŸ%¯*¤§×ýÈB!„8¾$`RO<þøãûÝ^\\ÌK/½t‚W#„G¦ @aØ0GeYH0¨pÏ=vÎ9'L|üÑ•;¤¤è8æÎµÐ»·ƒ=å9o¼acî\#GúY»Veòd/C†8Ù¸ÑR$'kÌšåæ…*¸õÖ¸Ê÷]}€o¿µ°c‡ÂóÏ{±ÛaæÌ þøC¡¨¨zFEr²Žz€<ÍÆ5žx‡ÏññÑ£‡ívèÖ-Ä‚UA˜nðøã±ÌklÛ¾Ý.­\é¢iÓ_ŸÏÈ1›uÂaã }dãúë,]êbýzÉÉ:_}e!1Q;¢r€N"ì[úÔ½{˜ØØúLHL„ÄD-¢¯¡®ë|üc¯¯ØEëT;Ÿ×Œ´¸CÌB!ÄIGJrê‰Ö­[sË-·Ðºukz÷î͈#8ÿüó9í´Ój{iBqH>ŸÂŽû–°(lß~l·¡ÂB…§ŸŽaïúÒR•O?µrê©.¹$ÌìÙÖÊ` ý=Æ‹¡C‡‹¹xæ3f¸IMÕyùe*‹Ñ䃬¸Ý 7ܨìröÙ!^½‚»ïö´¬Èj…„„è` @B‚ÎóÏûhÙÒ^˜Í:}û†˜7/º“j$¢°zõþË~\.X½ÚÄèÑvš4‰0{¶›³Ï®*QÊÏ7›ví"99ÂðáFŽôGeWŽôtçŸ÷V6·=å”/¿ìÝoï–úÂå3æ›­ügù.þ-çúµ–`‰B!öK2Lê‰+¯¼¿ßO=HOOç×_­Íe !Äa‰‰ÑÉÌÔÈÍÝ;@¢Ó¨Ñ¡³KÊÊ ¬LÅdÒINÖ£JTtÝhhº/—K!PhÐ@çÇ«~ýÕL8¬ (:/¾ÃîÝ*~¿Q¾2r¤‡f̰þÙøÕÆyç…øàƒ rsTî¿ßÎîÝ =z„™<ÙC£FG–qѬ™ÆçŸ»)/Wˆ‰12UÒÓuòò¢Ï¥yó˜ÍÆô›=–,13dHçžfàÀ kך92À°aA^|ÑF“&á04n ëìéér¤Œ†´½z…œNý„O»©I =ŒývÞP$ºG!„b?$äž ,\¸mÛ¶±`Á#«GBˆÚž®3eJN§ñ°m2é<þ¸””ƒLòòn¼ÑÁi§ÅÓ¥KÏ=CqqUP!+KçöÛýtî&.®jß uÆ¡_¿ê 7Î??DI‰Â®]&}ÔGûö:w3cFíÛãÚ;v¬*_ùö[ C‡:hÝZç¶ÛöŒìUX²ÄÂwÚ)/?ò&¨ ê´n­Ñ¸±Nf¦Î³ÏzP”=Á‰+ؽ[eøp=˨h)<ñ„fÍ4n¼1À•WÆqÿývòì³±¼öš—G¥´´f³Úl­Ó¢…VcÁ’Ü\…iÓ¬Üw_,K—š(-­‘Ý®ë|´¡»?ßDƒX3¯ü³­K„BqHŠ®ëõ÷£¢“PQQ_|ñ7n$''‡ /¼”””ãzL—ËÅÊ•+iÛ¶-öƒuBˆƒ‡^&¥¥F¦Br²^Ùu3&–ÿü'&jû'Ÿ¸9ç#¨QP °n‰4Ñ¥K˜`ÐθÝFF†Í11ðöÛ6^ÝF0}û†;ÖK~¾ÎË/Û¹÷^?éé:‹1úw¼<…üú«‘Úѱcˆn2rä¾#StÖ¬)'-M¯Öö@ŠŠvïVˆDŒ^(éé:>ŸQôÅZ·Ž°e‹‰ûî«:VB‚ÆÂ….¬V /ŒgèÐ _|aaõêèdÑ ü°‚7ß´RQ¡pé¥FùË‹/FG_ÊËUæÏ·0dH#Œ²¡ýõ€Ù±CeÔ( –lÙbŠ –ŒË€A23kö3œ½KpïÝœî’U"„Bˆ# ±!„¨uá°ÑÀÕåªÚæpèääTŸêÒ¥‹‘]²}»Ê²eFÐáÁýÜ}·Ï?·‘—§2k–•{ïµÓªUGå†â¡eK¬,#$!KöhØPçŒ3"œ{n˜ÌLhÞ\£W¯ªæªf³Îcù˜4)†iÓl\sM\TÉÐþÌ™c© –lÛfâ¹çb(-Uyë­Œ##ÃèA²¯PÈÈœé×/ÈßþbÂ/\DU«Jy.¹$DvvÝMÝûg¼‡Ïgô£©)ÆœBFÍÚ\Y‚#Á!„B) ˜!„¨U…… /¾CÿþNn¸ÁÁÏ?«„Ã?î#9¹ªÏI§NAÎ=7DQ‘1 fäd­[£³¶l1¯ó ±\}u•+ÍÛZSSu&Mò2ož‹©S+øàƒ >þØÊºuFÂæš5æƒö3Ñ4X¸°zÖ̆ &š77Î3Q˜3ÇÂðáU=ªl6>}‚\xaˆÍ›¡¨ÈÄ›oÆðòË1´iáý÷+hÜ8¤I^š7`®Ãù£íÚE*ûÍìqé¥Aj&bâ„y|îV^]¶‹‹sRy®_+:e ŽB!Ž\þ•J޲²2k{BqT¼^˜0!†7ß4ú”lÞlbéR K–”Ó¸±Nóæóç»Ø¹S%6V§AE‹,|û­™[n `³éÊŸdtö/ :^¯Â§ŸZùôS+<à#V8Ú‰1{¤¦ê¤¦FHHÐèÒ%]¯:¦¢è˜ÍÞ¿ªBÿþAfÎŒ~€ïÖ-5ÍgéR3·ÝàÙg=lÙ¢rÉ%!¾ùÆÂ”)6† rýõ¶m3^¿f™Ÿ~ òñÇnš4Ñ£¦éÔE:_}åâ±ÇbÙºÕÄŹé¦ÀAûÙ®=%8ž`„1½›Ñ£‰Ü…Bqô$`ROÌŸ?¿òÏŠ¢°§WïêÕ«5jT-­J!ŽMY™Â»ïÚ¢¶y½ ?ü`¦qãв§ïI„òrxè!;ï¿o¼>?ßÄÛoWðı¬]kâŸÿ 2sfÕ¾þùÏË—WÝæ^yÅÆàÁ57Y,>þþ÷ß}Wü¸æš ‰‰Èœyf˜Ë/ðÁVtzôÓ·oˆ©S­ `Ñ"37ßÀlÖÉΎеk˜^½â TU§{÷pe°dyó,øý &SÝ-ÅÙÃl†SNÑxýuOåèçcmöªë:ŸüTÄë+ri‘Ë3µ$Ýi;ô…B!B&õÄÂ… 9å”Sؾ};Á`æÍ›óûï¿#CŽ„õ™¢€Ý® F—±ì?¼·ÒR…éÓ­X,:}ú„hÜXãíLšTªÂ€пˆ+ÌœyfˆÒR•{ï­šì )ìØ¡!)éØ×ž’¢óÊ+^–, ²h‘™^½B´máPÓÞÓÒt† 0hP]«U§aCôt‚…çžóÒ®]]7z»Œc¯¼>mÚD¢&ùì¡(`­gU'FSÚc¿‡¹až[¸%”séßÒ¸¾‹LÁB!DÍß(ê‰áÇsÙe—‘––ƃ>Èå—_΃>HVVVm/M!ŽZjªÎÃû¢¶5iáÔS€AQ‘BI‰±=VÈÌÔùðà ÒÒ4Ö®5ú~X­ ›7«øý «W«lÙ¢’œ¬óÈ#vB¡ª@Ì!¦O·QZZs·¾† uºu £iðÈ#v:wNdðà8~ûMeÉ•ÜܪãðÛo*¯¼b#?_å²Ëœ ‡®+\xa<ÿýo Ÿ}fcð`'ß|cÅဲ25j½÷ÞëgëV•ví¢;Â^vYÔT“ÍÆB·~ò+ëó*Ó»#ºeI°D!„5F2Lê‰ÌÌLJJJøöî<ÎÆºÿãøëº®³Ÿ33fÅ0v’%e©¨n%{ú)YZìiUT ©h‘¤,¡H%{J"$eß÷1̘åìëuýþ¸š§‘´0M}ŸÿÜæÜsÎùÎ9=œ¹Þ>K8Æ`0‡ÉËË+æ“ ‚ üytì¢vm'󿙍Y3Âw1™`ölo¿mÁáÐ9ÒGåÊ^}ÕÃÃÛ ZRÖ¯7rà€¾F÷µ×, ìçÖ[­ääÈ|ñ…“ ¬?.ÓºuˆÊ•#ôëggð`ÿßrv—KŸÁ2~¼•Y³ Û?~þÙÈ‚&¾þÚÀÁƒ Ë—»¨TIåÐ!™fÍôÖš>pSµj›MãÇrs£/òÇ·P¦L„¼<™Þ½|õ•Þ³b³Á€6ÞßÃÖ­ ?ü W¶üï!B¡¿åÇ*4McÑÎLÞ-8‚ ‚ \B"0)a7nÌàÁƒ±Ûíx½^î»ï¾â>’ Â_¯qýõ®¿^¯4Ñ4øðCC†Ø ¾§}{k׿«™ß±p¡‰'ŸôóôÓ~L&}Hì¦M &<ø «/6òàƒv®¸B=oKËÅÊÉÑg¬„Ãðî»fbc5¶m+:eu÷n…J•T6n42~¼…—^ò2~¼¥ µæÑGmLœèÁbÑp8`î\7^/LžlaëV¡Df¦Bùò*»vɼý¶›×_·b·«”/!ÔØ¿_¡T)o¾1P¯^„ѣ͌á§fMù_\dqn NÇ:Éôi”*ªJAA¸$D`RÂ\{íµ4lØôôtRSS‘ÿÍ¿ ‚🔠S¦DW hšÄ¬Yfºu+ZF!Iúö™ ô–”¸8•={š6%°X4&Lð2fŒÛo’’òç“£Ge´±~½ŠUž}ÖÇÞ½ Mš„ Ö çkÒ$̬YúP‘;¼^ Zkìv[n ‘•%Qº4tëf'+K&%EeÂ/o½e¡eË 'O‚Õ ©©‹5ÊKJŠÊ¸q>î¹ÇÁÙ³…ÿoØ`ä…¼Üyg ß~›G0(±nHD¢iÓ0©©ê?zÕðÅÚ›éá…Õúœg[Tæ†Jb Ž ‚ —οà×§ÿŸÏÇ÷ßOnn.5jÔ |ùòÄÆÆ÷±Aþ6Š"wè«Å"áñ@Õª,¬êèÚ5H||áüެ,‰¾}íz5‡ß/1b„ï¾Ë#-íÏ…%gÏBïÞv~üQÿØ_a `·ëÕKÓ`ÿ~™§Ÿ¶²k—›o1w®‹Þ½dg^¬'%©œ>-óÕWzôPº´F™2a6nt¢ª¥J©ÄÆBF†D  ávK¼ô’“ RRT p¸ðœf³†ªB¯^ºwwœs"‰·ß6óøã~-2ñÀ¦N-L?† óóÅ&Ú´ ñé§E÷ Ÿ8!ðL‚AX¹ÒHŸ>vTUÂÕ IDATV>úö![¢GA„ËN&%Œßïg×®]„ÃaöïßÏçûý; ‚ üy½°b…‘íx½ *sæ¸iØ0‚ÍV«FÆa>úÈÌÛo› 4:t¡(çK@_UüÞ{nxÀÇ#a·ë_''&¹¹yyŠ¢‘ a³E?FzºÄí·Ç•¥‡#sçš9tHfÈ?Ï>«óí·‰×øðC7qq*l¢uëåÊ©”/¯‘_ÍrälÙ"Ó°¡ÊÚµF&L°âñÀ3Ïxyé%/#FØÐ4 YÖ3ÆKZZ„?4“—]E« Á;ïèÃ]?úÈÅ Õ«GHKSñù R%•R¥4–-‹Mzö ÷§ßªË&3Sbð`;ª )MŽSþöœ=é`b·ê4ªd,îã ‚ ‚ð#“¦iÓ¦,X°€íÛ·súôi:uêTÜGAøS²²$ââ4Þß Àñã6([6‚Å"!I`4B­ZvìPˆU4ÈOrò…gqX,ЬY˜ òp¹ôy())¦_2„S§$~ØÆÊ•FL&è×ÏÏ€’’ •ôt¹ ,É·q£W^ñRº´›ªUU*VT ‡5:uŠa÷nýãtôh/¿tѰa€3g #CaË !F*LfF¶óÚkn–/wqâ„LZšJ\œÊÒ¥FZ´óÖ[‘ˆ^}b6kôë &F£jU•qã¬ØleÊèÕ4 ¸©YS?ƒaÆ÷ðê«VÂa4ÈÏÍ7‡ÏûZ9# ͦ±ïÜ¥ãóIxCaªÞ»‡øº™œ^WžK«!ßé"Å}ÏdáÂ…ôêÕ«˜O%‚ðÇìÙ#3{vá–“'^~ÙBýúZ·ŽáóÏ]ìÛ'£i#Fø9qB檫TvïVÝ,|Ñòò$–//:ãã³ÏŒQIéÒ7ÜbýúÂ6^½$$èÁD(§OK¤¥©ÌžíæàA…Œ ‰n³e‹M› Ô®&.\.™çŸ·rÝuafÏvÓ¿¿ôt½z¥jÕéé Á ¢lÞ¬ž.ѧO´4—_.ÚvY¡‚ʤI^Ün=€9_k’¢@™2¿,>-Ñ¡CLÁœ—Ý»¶mÓ×$&j¼ÿßMß‚“ÅÔïOR9Õʓ듻ÓAb¢Ê”)ž¨v*AA„ËE&%Ä®]»Ø¹s'»wï.¨*QU•œœœb>™ ÂÅ‹DÀé„uëŠÎ£øá#ݺ…ÈË“ùþ{Íš…èÒÅŽ,«”. ™™úÜ’õëüÑm7ùl6Zµ":½ñ¦Q£èj½äd)S<|ÿ½~4kâÊ+#¤¦êÏûóÏ íÚ­Zyøa?·Ýè·­]›Ç!vöïןëèQ…mÛ <þ¸Áƒí8?ìgÈüÄC£V-•‘#4l¨’–öÛÉÝ®²ý³NœÏŠ«ÿ¬ãÆY Ö&W©aÑ"×/U:ÑrrôÖ}îŸ>BO0«ßcÝ‘\:ÔN¦Ïµ©d7 ãñäaµAA¸ÜÄ^¾Âf³‘œœŒÝn'99™äädÊ•+GÏž=‹ûh‚ åÌX³Æ@V–ÄWm'lÔ(Äž=úÇ’¢è›j®¸"‚ªÊœ:%Ë<óŒï/U8ðì³> [<êÕ Ñ¼yÑp¢\9ŽCŒë£U«0*èÏ{ô¨Ä Aö¨-<Ë—›8}Z桇´oÄfS‰D¤‚°$ß¾} µkGxûm«V9™3ÇDzºŒÝ®1v¬PHcÂ/Ÿ}fDýUÊÉ“}ddêT‡ë[oþ¬üJ€ë¯óㆂ°àÐ!…7ß´D=‡¦Á¾}2÷ÞëàºëâèÓÇÎáÃí׈}Y^úº‡­é.ž¹¥2ý—ǤȔ)£ÏjIMýç‡%Á œ8!±s§Âñãb» ‚ ü{üà òUªT‰J•*ѨQ#ìçÔ_=z”„„„b<™ Âïs:áøq…iÓ,ôîí'3S¦{÷sçšÐ4‰Š#<÷œ;ïŒ!%E¥Zµ~?ÌŸïbýz»w+´k¢jUã_\–R¥ŠÊ×_;9~\Æb²eURR..„9yRbß>…}ûŠF£†Ã¡òÕWN<½F:ç»4\.‰‘#­ÄĨ̛çáÞ{ø|2}dâñÇmÜ{o€îÝÈç<ʼn-[Ærú´~ã3Ïh,_î¢^½?7Ç*)I¥sç ˜©ZUeçN¥È÷lÚdÀã‘0›õ׿Ô)‰;ïŒ)8Ú5&ºtQøâ WÔ •ßr옄өo'*[6ÂÎLfl=Iå+co«FÙXóï>ƹΞ…ÌL™œ‰òåUJ—.ì{¹ƒ°nž=õL‹ÆäÉZµ aµ^Þ³‚ ‚ð÷I ‰DX²d ÇàØ±cŒ;¶˜O%‚paN§ÄĉfV®4Ò£G€3Œ¼õ–ûïà÷C\œ†¦itì¤K— *ññúæ–nÝBÀ_\ò+’©©©©…6mB,]ZxÇA22$²²dªWàrÁðáv. ,>üÐÄ!þ¨çýäSAP JŒeaÆ Ïï¶Å8-ãrIÄÇ«”)£‘˜/¾è£oß™™úy>ÿ<:mhÙ2DLLa’“#EôJGoÓ %‹V„¨*ìØ¡0`€; \ÕÀOÝÞ»ÙëÉ¡}ídî¿6“òÇ*U²²$ž|ÒÊ‚zÈbµj|ú©‹k¯½¼ƒÐÏœ‘èÝ[Kü~‰¾}ílÚ”WP‘$‚ BÉ%“æ“O>¡J•* 6lˆ$I¿'A„bÊúù¤I¦O÷pß}Ž‚–EÑøä7ƒûˆD ) l¶ =bñÈÊ’™>ÝÌôéòò$¶n5àph<þ¸O>1²l™‰±c½ddÈ,Yb¤{÷-Z„غÕ@ýúajÕŠðÓO2S§ºQÈÌ”¢Z{@­~ÝŽsôèù*Zò‡Åþö…yn®Ä;ï˜?Þ‚¦é+–,pѨQ„¤$¤¤ªªíÔ)ÀÂ…&4 š6 Ñ«W ªšG¯˜ˆ®˜iÛ6À™32ýúÙÈÌ”èÞ=H¨¶©Œ ‰ÎdeÉØÊ9Q[ìd÷ÙíËUã®1˜Š·ü®cÇä‚°ô™*Úùüs×EW ýyyzø§(úœ—KÂåŠ~ÿ‚A‰¼<±YAJ>1䄉‰‰¡iÓ¦$%%Q¿~}’’’ŠûH‚ ¿Ël†Šõ /ObÃCÔ|HDâ‰'l˜L*\ú°Äï×Û\Ž‘ÉξøûµjÂé”xðA;;Y¾ÜɸٸÑÀÛo[9|X¡{wåË« ìgà@“'[ÈΖ˜3ÇD(¤u:%ÆŒ±’–¦ñëÜ»eK}ñ¹î»/À /x™?ßÅÇ»1ÂGÏžþ¨Y$çsæŒÄ¸qzXàrI<ð€Œ ‰`փݻe†÷³iS[¶8™6ÍSdKN|¼F÷îÁ‚¯F¡C´kÃæÍŽQ3ÆÊÔ©f‚…ßFNŽDV–DrãÔð¯Q3&žP¨ðçôùÀí¾¸÷aÿþ¢¿¾8 ÿ¥ J¿'=]⡇ì\}uMšÄ2w® ‡C‹ªÂ0™4J•kAáß@&%ÌÁƒ9tè²,3oÞ<:TÜGAø]eËj¼òŠƒA#>^ãĉ¢?§NI„Ãç¹óß,'Gâý÷Í\}õëÇrß}Nž¼pµžÓ ‡ÉH’ÞúQ·n˜¯¾2`0htìèˆjg ‡õ e˪,_îâöÛƒ\uU˜‘#ýŒoåÎ;CX­úp×aÃlL™â¡S§ µk‡4ÈÇø™5ËuñŸ˜¨±d‰‘®]cèÒÅÁž=2mÛ†P~§:ãÐ!™è*p옂ß/ñã MšÄÒ«—ƒÎc>ÜÆ qq*‰‰E+>^ã™g||ñ…“Ñ£½¬]ëdÃápôãïÚ¥pê”ÄéÓ‘Hæ0UïÙAÅûÈÜXŽ=“ɳ˜¨‘˜¨áóé-;ýúÙèÙÓÁÚµòò.üs]sM„_WÖ4nÆf»4Õ%^/¼ð‚•+ô™;N§ÌС6²³efÎtl,²XôCII¢GAþ D`RÂÜwß}ÄÆÆÒ²eKŒF#wÝuWqIá¢4jaÓ&'ýûû¸óÎ’}QÙ¹søø¿~¡™›+qäˆ^=r¾ÍëGŽÈ<ý´ ¯W$Ö¯72j”çüwâ„ÄóÏ[éÐÁÁ“OZIIÑ0 @ëÖ!ìvλµ'5UeÇíÚ9HKSiÞ<Œß¯qÿý~ªVЭ[ˆš5Ãôì`Ñ"#Ý»ûyñE/*Ü}·ƒúõÃlÙ"sô¨L0Ó¦™ùþûüþ‰Å‹ÍlØðû]µÕª©ü:X¨V-‚¢h j'( ;Ö¯7’—'i19Wr²FãÆ på•*IIÑ•?î㦛ÂÜyg -ZÄòò´/nÚMRl̪ÃñÅ5Ð"2C†ø)[Và{ü¸Lóæ1,^lfÍ#;ưqã…¶2eT&Nôµj…yóM/ññ¿û’ü)yyË–ýzÚ°ÄêÕFn¸!† y¬[—Ç÷ß;ÅÀWAAø3LJ˜2eÊü¹cÇŽlß¾½O#‚pñ,¨TI¥R%·æÎuóÄ623eºv 0l˜‹å¯=Ç™3>jcÉýâ¶u믽æÚâ²f‘[n ѽ{›McçNsæq:¥‚ ð|99ðä“V>ÿ\Ÿ—1t¨ŸGµòÍ7zEI“&!žÞKß¾ö‚¶—ÆCÔ©!#CÆë•6¬p³Yb¢Ê·ßæqü¸Ì´i&R¸÷Þ™™2=d$n¸!DË–!®¹ÆAB‚ÌêÕÎ_ ˜Õ-]jâæ›Cø|V«FB'Á >%U«\ fã§Ÿ ”)£òþûÌfí—ê“h‡Ë4n|ñ¯÷7†IMUIO—©X1BÅŠúõsÉO²JÛO逕‰m«llaÇ7µkG(WN¯.xÿ}s‘*•W^±ríµ®ó ¡x<·Ü¢eË\|>‰˜˜óW“I£J•­[£_³ZµÂP¾¼Fùò¢ªDAþmD`RBŒ=ú¼·geeñÆo\æÓ‚ ü5´jæšk\D"Pª”vQÿ*ï÷CF†Ì–- eÊhT¯)C4 >ÿÜÈ’%…í1Ë–™hÜ8Ì=÷èÃI ›oâph j#/Oâºë"¼õ–‹¥èon®\°åÆn×HNÖ Â€ï¾3R«V„¯¾r²zµ‰´´ÕªEø¿ÿ³3z´Ÿ6m‚÷—$ñã=͛ǭ_|/]jâŽlÞì$ÐÛ:î¹ÇÈÎÖÞë® ³}{ôGv“&!PØ¿_áÄ ™Ö­CT¬Áj…U«Œ dÇå’HMUùà7qq*V+”.­ávë[p¾øâÜÍ8ëíB#=]bÅ #Ó§»Ù²Å@éÒ.4£XÂTì´‡„zg8½¾<æ³)ÓÑK\¹uë„úë­:úkz+QôY²³aÁcÇZñù$zö 0t¨ÿ’†%‰‰0a‚—¶mc †ô6hâê«Å`WAAø7I Q£F Z´h¦EÿR¸zõêb:‘ Â_÷G7šlݪо}LAEÂÕW‡˜;WPêóµÂ7ßòåFdYcäH;f³Æ²e.žxÂJþlï¿7ðÊ+Þ}·hOŽ¢hØlú0Ò˜­È0VÐÛeZ¶ ²`‰êÕôi#±g‘= ,[ædÐ ??ýd zõß~k /O.Kò½úª…Ûn Ò¼y\‘–˜3g$ô³v­‘ô’ë¯qÓMaúõ³ñÓOzõÉ„ ¦LqÓ¨Q„>}ìD"ú㤧Ëôèá`åJgÁ ×`^xÁ‡Ó ëÖ‰‹Óç“T­ªr1³Ä32$:vŒaß>…ü•ÊÇûH¨êäÊ:û1؃ü 9ÛS¸¶SSÑ·¥À}÷˜6ÍüËÆÇó·=kçN?^X±óÎ;RSUú÷üî<—¿ªví7æ±{·BB‚F… ê%ÝÈ#‚ BñI q÷ÝwŸ÷öF]æ“‚ ÌL‰aÃìQíÛ¶Ù¶Í@ëÖ!Ìf¸îº0kÖD·¯\}u„õÛªTQùî;¿„ºzµG".®ðØë…¬,‰aÃ|Œmãôi‰ŠUŒF-j»Ë 7„©ZUåŽìÝ«ðÈ#úŠŸ@@âÐ!…9sŒ?®pø°LõêݺŠülá°^i1p Ÿ—^*,µ‰WIKÓxê) ³f¹ÉȉDô{÷Êa‰Nb̯¿î-Kò<)ãñHäæÂW_?ÞJLŒÊ /øHNö¡(¥Kk˜Í\”S§ä_Âýy·lQöv.i·€t;»'5"mÃjÕ>ÜÁê¡ T¾þÚÉoXÈ˃ÔªU´rCÓ`Μ¢É˼y&î¾;pQAÏ_a4BZšFZÚe˜L,‚ Â?‚LJ˜É“'G}}ìØ1ÆŽ[L§A¸|Âaλ]ç矮¿>D©RÐ¥K€E‹LìÞ­_ÌW¯¡]» ·ß€ÇW^}1n4j<ü°Ÿ`Po3IJÒ0™àôi™[oáµ×|,Zää‹/Lƒ0¾›áÃm>,Ó¬Y˜Aƒüøý (*ûö±Ûµ_ÊBݺa ÒÈËÓØùó\uU„˜-ª’dÀ?))½z¨V-ÂìÙfªT‰Ð©SmìÚeÀb‘‰U™>ÝÂüù.Μ)úZèçÏôZøøññ*‹Æöí }ú8~¹U¡uk#sçºiÝúíãœóÊæ0•:ë-8M+$Ó¥E9Ö–Ó…¼´n"5õÂ+vÍf¸â •W_õ¢ªüæI*úÞ>ç¯Î¾AA8˜”0’$Ñ´iSTUåøñãÄÄÄ÷‘A.‹¸8¶mƒÌŸn„Fƒa²³%J•Ò°Ù4†÷£‘ßÁ¸n]áêÛjÕTdY£Y³_}eD’4¦Mó°j•‘–-cyê)uêD°Ù4TâãaÈ;))n¹%L\œÆðá6úõóS¦ŒÆ–- ß|c qc˜2łŢñæ›æÎ5ѨQ˜ Œ jCU%dYã¹ç|¬[g`éR'“&Y8~\¡G-[†0!)I£C}èëÙ³Çá÷ëg_²D7Pxë-Ï?ï/RíÒºu˜ýûÜϸq4MÂdÒWÝ&$hŒa¦lY•FÂddÈlÚ¤0eŠ™nñG>NÊ•SIMUÉÁCÕ{v`tIØs}»Øˆ‹ƒ*½ƒøý½PÛN¾ÎƒL›fáäI=,r84FŽôápüÎAAþIûõP ¡D™7oÞ%_-ìt:Ù¼y35kÖÄf³]ÒçA¸#G$FŽ´ñå—F’“õY?ÿ¬ððÃ~*TÐ?Îöï—éß֭߯ 5kªÌžífÈ;ß~käºëB´j¥‡©©z{ÍÏ?+Œcå£ÜL˜`eóf‡F~ºvÕ«SÜnýý¥—¼,Zdâûïõo¨V-ˆ>|Pßp ËkÖ¸p8Tš4‰;g6‡¾meÉ?þ¨°oŸB¯^j×>Æž=2MšÄa³i´i¤|y•J•ÂÜ|s„pX`<è×ÏÎÑ£n»-H×®AF¶ðÑGü~‰ìl‰”•äd E+ kÖ©PA¥aÃ0_~ià¹ç.Ü6pú´„Ó)a±h$'«Ìÿá,sv€<MMÕés—µèRIO—رCÁã‘hØ0LÙ²ÚyÇ ‚ Â?…×ëeÏž=4jÔˆØØØâ>Žðˆ_1J˜?þ¸àϹ¹¹x½Þb< Âå£qóÍ!þïÿ‚8|`⪫ÂQB«WWùè#7~¿^]‘œ Ó§»ÉÍ•‘$=8hÙ2Gâ‰'||ö™‰o ³e‹Í› ´iäþû,^lbî\3 ¸;ÖʺuªT‰ðÖ[ž}ÖÊW_éÝÛÏÌ™fÎmQU‰©SMtíŠ K‚A‰@ž|R¯:Y»ÖÈ_¸Î4$$htéâçž{B|ò‰‘V­‚¸Ý2'ZøðC3Šýûû™=ÛÉ2ß~kdùr#sæx([V4*W.|¼PŽQ9²0ø®\9‚®ß Kö퓹ûn‡+8âC´a{<9Ô±¦Ð¥^yªU¾´k}Ï•šª‘š*戂 ‚pé‰À¤„9vì 4 fÍšÔ¬Y³˜O$‚pù$&Âí·‡Ø²ÅÀÎ2#Fø©U+R¤$1‚A“'e>þ؈ͦqË-!Ê—×/ê—,q±h‘‰2eT*WŽ”¤±u«B»vú÷pûí…›xfÎ4³l™»]å•Wltì¤bÅo¼$.NãË/‹žS–% ­È¬ýkUÕo;tH&ôãCRR4žxÂOóæ±ÜrK˜¨ªÄŒ…;&L°R»v„–-CÔ¨Ánç7ÃÌL‰ñã£ÿÏÇV¨\ù·ˆ¬,‰ûï·sø°‚5ÕEÍû·sÐâМÚlù©43€Ö­ƒLšä½l¡‰ ‚ Âå “桇ÂqN³ö‘#G¨T©RñHá"¸\pö¬Lv¶Dr²JR’ö»U ¿¥ti¶mC´m{áA¥û÷Ë´hK  ‡ññjA«Ì€6 ‰]»úô ðÆfúõ ‰À¤I–¨M<€Ä»ïZèÙ3Àm·…ðx$-23y²LåÊž~ZŸK’_eb0htèdâD+“&yxôQgÏÊ$%©ŒïeòäÂ,EÈÎÖï—šª!ÿ2Ç5/O"7WÂãvíô0$„•+‹~lÏ›g¢ZµÈo¶öä …Àï/zû¯×çËÊ’õa»¹¹|ýIÒîØO¢ÙÂö© ÉÞW¸ÞwÙ2'NøIN.:”UA¡¤*:b_øGËÍÍeÞ¼yLž<™É“'3eÊ”â>’ ¹\0{¶™ biÑ"–† ãX³ÆHðϽhn7Œc-KrrdfÍ2a4êm3›6X²ÄÄ_™0ÁC8 _mÄç+ ¸\0k–™‘#­”-«òôÓ^êÕ Ñ±cH.tqǺt ðÑGnÞ}×ÌÆNœøôSë×çñÙg.‚AضM=jÖŒðÔS>î¾;†›nŠåÐ!ý#9#C⡇l\sM,·Ü‹Å¢Q«VƒA£bÅ¢¡H¥J*ï¼c&#ãüÁG>£:vŒ~ÑêÕ#dfê+{ °ñí· ;v(tîì N8z=`¡ÅÓÛ©Øq/¹?–åžÔZ¤ï+:Ï*« ‚ ¿…¨0)afΜIÓ¦M©[·.š¦ñí·ß÷‘A.èìY™‘#­hš~A Iôïoç»ïò(WîÒ´pƒÒy×î?.£ª0|¸Ÿ¡CmÜsO€;îrê”ÌŒfdz÷°v­ñœ{iôî䥗ô­6‹iÓ&D¿~Þ{ÏÂŽ #Fø5Ê‹Õ OV®4иq‡ã¯eJ $&ªœ:%qÏ=22$¾ýÖÀÝwøé'ݺ°XÀn׸µUJÍN²"뉒•;“k“j2Ó©“ƒéÓÝŒícÔ(øî;©©¯½æ!%åÂ-AB¡Ü\‰~PxóM v»Æcù©V-ò§ÛÔAA¸4D`%² IDATRÂ4lØÇ{Œ * IÇŽcìØ±Å},A„ß””¤b2iQcRRTbb.í€ÐV­B<ÿ¼—·ß¶`6kôï¯:ÉÈP¸õÖ˜‚ çë¯ ¬\ébÆ 3ë×Ù·OæŽ;B¨*¼úª…믓“£oÛ¶A ²G=W($±r¥»]"3Sæ™glœ»9gσA¯$xøaÛ¶hÚ4ÄòåNP8uJ&6V¥T)¶mƒT¨ Ò§OἪO?5±aC“&Y˜>]úêr)Ü{¯Å‹]<ø`EÑç¶üðƒBåÊ*Uª¨E†°Ö®­2j”ìl ‡âã522`Æ sçš8}Z¢LZÀÕ‡X~ö,g6”cËçÕ8^fÌpO\}u¸ J"=]-~þY¡cÇW^&!áo~sK¸ï¾3pÏ=…ïïòåFÖ¯wR£†AáŸD&%Ì‚ h×®¥J•-9‚ üãx½-¡iz¥GR’ÆÌ™nzÈŽÓ)Sº´Êœ9îó®Òý;%%iôíàÖ[C=*óæ›6mRظÑÉ /X£ª^|>™éÓÍôè –h×.†±cõȸ8•ŽƒÜs{ïÕÛ^L¦¢g7™4B!‡%Ξ-:O$5UåÞ{¤§ËØlmÚ„˜2ÅÂÒ¥FÒÒTÆób4½÷èÞ]_ûsíµaôc0€Ç#áóE?¦¦IlÙb fÍûöɼþº…+L·ÞäÍ7½$%žÕ`€rå´¨V¨3gô•Á€„µ¬‹ÈÆ=dùÂþ¸69?—`ï^عS¡\9•Ó§%ÌfxñÅÂrˆM›òHNVÉÈèØ1†}û¦O·ðÜs^|0€Éô‡Þ¾­ìlxí5KÔm‘ˆÄûï›6ÌG8,Qºtá`AAŠLJ˜Ê•+sà 7|-ZrAø'ÉÌ”˜8ÑÌ{ïYPU¸çž ?î£yó0ë×;ñz%í²\ffJ¬Ycdî\ii*ÇûYµÊÀþý2Òyæ£>¬0ož‰œ™eËœ|÷«nº)„Ѩñí·N¶mSxüq+=`ð`…ü*‡Cã–[Â|𑘕N‚Ì›W¸ ÇdR‰D =]ÿ¡{ô0{¶™Ï>ÓS„;e:tˆáûï8*á0\s– d#/OÆdÒxöYÝ»˜3§ð±ív2ÄFß¾aþ|7O>ieÅ 'OúIJºðl‘9sLtÝI*´Û¬YØ7ùjܧ¢«hŽ•)UJ¥Q£_]øëC\œŠÕª0‡ÉaI¾—_¶Ðµk€””ßyÃþ#$I:ïûšƒÛùñG“&y¸é¦°˜m"‚ ÅL&%Ì™3g1b+V-9‚ üã¬]kàí· +fÌ0S§N˜^½‚¿T5\Úª’|~?Ljæ•Wô³Øl?ü ðÖ[nNŸV¸ë® Ÿ|b:§ÊDãþûý<ö˜ ‹TZ¶ ½µ]ÃjpòdP/v3k–‰ÄDÞ½x½³féU"Ï?ïÅáÐøôS=¬5ÊCB‚Æ[oy re•ÎQg…$6mRèÜYeð`?V«ÆˆzXú Û‘#­|ò‰›9sL€DµjÊ•SYºÔÆÿþaß}fdÚ4:98}ú›sÂD¨|÷.¯9Í™ïÊQ7¡mn’™?¿ð{E£Aƒ'O†¹ï¾À/óYôªš)S<¤¤èï«Ûý|))*¯¿îaÅ û÷ËÜygˆ*UôÖ£ÿªøxÇ÷Ñ©“ƒüÀÍlÖWewëæÀï—èÞÝÁ–-N*U-:‚ ‚PœD`R¨ªJÏž=Ñ4ý—ÍuëÖó‰At>|ü±¹ÈíŸ|b¢S§ qq—ï,ÙÙo¿mÁbÑ=ÚGùò*YY‹DíÚaN’Y°ÀÍŒfÂaø¿ÿ ’–¦òÊ+^\.‰G±1mš‡_dï^™´S§N„'$¦M3‘šª1z´Š#|ú©›çžóñÈ#~ŒF ˜>ÝÌ´if¬V÷Þó”¤ 4ò+oÚ¶ rì˜BFFt)‚ªJ( <ý´øx½Rç‘Gô2„ƒeRSUöî5²k—Bݺ®¸"ú‚ûìYÈË“1ô°~Gkì¢TJ˜ƒsj“óSiæY4Ö®ub±h|öYþÏåEÓ4† ñ!Iðõ×.òò$’’ô9)Æ_æÔª!&FÃåÒ®q㼌icÿ~½êä7¬¼þº‡»ï¢D¢ü§4hfùr“'›‰‰N‚LœhÁï×_7U•عS‰ ‚ 3˜”0Æ Ãb)ì}6›‹^œ‚ “ ®º*̪UƨÛk×.ží’cÆxYºÔÄêÕú™ >rãñè¡H›6! xôQåÊ©ôìégëV“&yIM=DNŽÞ:±s§; ?F?øÀMl¬ÊÑ£ S§šyæeËj¨*¼ÿ¾‘—^*|F²òüó^|ÐN~•AíÚa*WÖÛgÀïWIIQ£6éH’F¹r*Š"óÆŽ)Ln¸!Ì'Ÿè->ª 'z)S¦ð‚ûäI‰^½lÙbÀhTéôè1Ž&¦|œ…g®¯É¬­¥ÈK 1p »]Åd‚qã|deI<óŒ={žyÆËgŸéÞ=@«Vaìvs>’([Vcùr'£FYÉÉÑ[OòÃ’sö[n Q¶ì·Ê$65Š0eŠ— Z·ŽåСèש|ùÿîë#‚ ÿ"0)!.\HÇŽyÿý÷£n-9‚ üS( ôì`Þ<3'Oêù¥K« xù~&%i¼þº›zõ"T©¡o_?‡)ŒkaÎÕª©œ=+óÁ…¡³ß+ª4lèÃá8vLŸ’”¤E>€ÄÖ­EË#vïVHKSÙ¹Sfûv·,}Èç¬YÑáöúõFºv °b…‹Í›7ŽÃñã2Š¢R®œ^=òþûnî¾;—KÂ`Ðxé%/ÉÉ*]»†Ø¼ÙÈÑ£2 àg÷n…ìl‡CãöÛCT®\–x<ð V¶l1 ›Ã”︗¥NÓ0.™Qw¦b2È\û¦UÕg¢ddH|þ¹‰iÓ¢+\L&9¢Ð¥‹•ØXgŸõrõÕìvý¿š5U¦Nõ ºuÑá€Ó©Àl£Qöºww´ˆµk¤\9Q]"‚ ÅM&%D¥_é%I¢iÓ¦¢%G„¤òå5V¬pr茪JT­ùÍJKEÓàôi‰Ã‡Ö­3Òª•¾%§råË—»øøcý¶—_Ž.{iÑ"ÄÒ¥F:t€Þ½mìÚeÀlÖxòI]º9qBfæL3;iР–-Ñ¡µjEx㠽ܢuëPÁ*]³Ê”QÙ±#úœéé Û·ËÜuW˜ÿû?2’¤ñÀ}ÔGb¢^…°~}¹¹úÚáÄD »]2ûÖ[œN U…cÇdÆŽµÐ¥K€áÃý¤¥éÛg΀˥?®ª‚µŒ›ª÷ìÀààœÚÜÔ<S'}óϹ¡Pr²Æcù:´pðkb¢ÊõׇY³Æµ!§]»¾ùFŸ·aÿåÛóç‘ׯÁbÑ ZM:w'“|² 7ÝfË';wÊ”/¯W»ÝHA„â!išøwž’$ b:çŸjýõoÙ¼y3«W¯&''ƒÁ@JJ M›6åꫯþÝû:N6oÞLÍš5±‰‘ý‚ üE"pö¬^…áñH4oËÙ³ùÕÓ§{xç3›7èØQßÜóùçF^yÅŠË%Ñ¢Eˆ¾}lÞ¬°q£µk£ÿ^ýòK']»:p¹ô9!“'{èßßNzºŒ,ë!GJŠÊ˜1VÚ·2z´/juïŽ -[ÆèÁAr²ÊêÕNœN‰‡¶ _V­rR¿þ…·ÛüZ^žÎä·È;¦WÉ|ýµ‘O?5Ð¬Ï ¶Žâ>eãàì:²lÌ™ãæ¶ÛBç}¼œؾÝÀŒú“Ö­ƒœ:%3a‚µH›Íƒú)SF¥}ûPÔÜPH¯¼yòI+G*´o`àÀÀ%_)-‚ ÿ$^¯—={öШQ#±å´„&%ÄÆÉÍÍ¥uëÖäääðþûï£( :u"--íwï¿råJêÖ­ËwÜÀªU«xã7xóÍ7±ÇpA„¿IV–ÄÇ™>ÝÌÝw¹êª05jDذABŸ"±zµ‘Q£|œ<)óå—FfÌ0Qª”>çÃjÕHMU¹ýöXÞxÃÃ+¯m#ùæ#Uª¨üô“LzºÌcÙ˜=ÛÙ¬·ëX,*D»v!ââT’’¢ï¯ŸÇɆ *¨Ô¨!„“'•ó¶÷lÛ¦üáÀ$¨®ªÂîÝ2C‡ÚÙ±CáºüüïÑüäʦŽ5™/>ªI ËH³fAê×ÿæãÅÇÃÿþ¦I“0gÎH:$så•bc‹†))*«V™6ÍÂʕ΂ù$F#\uU„>Ð[tâãµËÞž%‚ ‚ðgÉ¿ÿ-Â?ÁW_}UЖ³`Ábcc¹ùæ›YµjÕEÝ¿[·nÜvÛm_׫W·ÛÍ‘#G.ÁiA.HæÍ31v¬1c|( Lj¥U«óæ¹q84† óqå•î»ÏÁÃÛ‰×hÔ(‚ݮѻ·ƒ»ïŽ!;[æÆƒ\qE„ZµŠ5jD æ²ìÝ«ðÝw®¼R¥R%•2e jUªU‹†% ÄUIMÕ˜1ÃÌÌ™f‚A™S§d4(ú|×\óûaIf¦Ä2GJ8úm¹¹GÊÜyg [¶Jy8{ÍOl?›ÇJULÛ«óùg^¾û.wÞñ^T¥G(kÖi×N ð#I…÷‹WiÓ&Ä®]z˜”™Yt•qþFŸ’–x<ž.‘‘!ùc¹• ‚ ÿ"¢Â¤„¨P¡5kÖ$ ²qãF&Mš„Ãá`ÿþýuÿ*Uªü977—… R£F ®¼òÊKudA„K.+Kâ½÷Ì<÷œ—×_·°~½^²r¥‘¦MƒŒçÁfƒ^½÷y÷] IIeÊèWÂqq*V«FÛ¶!®¸Båõ×½Üq‡§SH:tÐÛm²² “IûÍV€@@ÿßüEf¡ÌŸoæÉ' ÛgÌPùôSU«Fxè!GA{Ï€~*V¼ðUú‰=z8ض̀,kôîígèP?/¿l¦U«0ÙÙIÒ©Ð~þL;&6âÑ7#ðEHM-œ5òkäåI ’¢¼Æ=f$¼^‰•+ÌŸïfÙ2#qqM›†9vL&ÛOI E~MÓôÁ¿yyÏ?oeÁññ#Gú¸êª0eÊh$'‹V"AAø/&%Dþì7R«V-ý—ÿÜÜÜ?ô8S§N¥oß¾„Ãaž{ýœ‚ —“Á «Q¯^¤ ,É÷õ×&êÖ°bEÑ›E‹Lx½5kF˜:ÕÃÓOÛ‡õ þZµ"¬_ïdÕ*'ߟÇË/{©\9ÂK/y©S'L³fA-rápÝbâõÂÏ?+ `£?ý¤àñè¡Ã¸q–¨ïMO—ٸр¢ÀsÏyY²ÄÉ7ß8yàÀ×0û|0nœ•mÛôóhÝ:DÛ¶aV­2qà RBTî¶‹J]öpö‡2ì~³‘\+f3´iþͰäÔ)‰áÃmÔ¯GëÖ1¬YcÀë¯WÂçÓ_›µk ¨ª@;¦Ï{é×ÏF$"‘›+Ó¤IˆÄÄ’*ddHL™bfÚ43&XøðC3¡Ä™32ƒÙ8uJæ…,ää÷IAA¸œD`RB˜ÍfÆŒÜ9sèܹ3³fÍúÃɃ>Èo¼ÑhäÉ'ŸÄív_Šã ‚ \‰‰0j”ùŸfUª­Ö(_>Âu×…¹ï¾O>iÃ烖-õŠErå4ê×P½ºJB‚Þþ²d‰‘öíCÔ®­Ò§ƒùóÍEÚ5öïWhÞ<†… Í|ú©™æÍcØ¿_AÓ(øšÏlÖ(]Z¥T)•:u¬^m k× °±c‡Bvöù§¾ùFK®¼2BçÎAºtq0dˆÁ#aÜ{Hª—É¡¹µ8º°&ZXaÈ?UªD¢²žËãQ£¬Ì›g&”8rD¡kW½êEo%Òï7}º™V­B âÃ傚5#|ò‰›­[eÞyÇÍ´ižW…‘•%Ñ»·§ž²Qª”Æ’%¿.‘‘øæ#‡Ëç Aá¿@´ä”mÚ´áúë¯Çjµ i½í¶ÛþÔÀÖäädºwïÎý÷ßÏæÍ›iÖ¬Ùß}\A„K.Ç[½zarrd®¾:Ķm…Õ$ „e}5oÙ²*§Né»V«Æ3ÏøHHP©S'”)RSÕ‚A¥çóÑG¾ûÎÈwß>þÌ™fºt ´®øý0{¶‘ÿý/̾} éé2š&ñÊ+ÞzËC¯^Þ~[¯2±Û5fÍr³t©‘/¾°S©R„Gñ³ys„uëLtîldåJ' …GF†ÄéÓúŠà×^óЯŸƒ=Œg%¦ çô)+O5¯…¿´¼4k¦R¥‰‰¿ýZæåI,Z¨ªÄúõzô2ož‹ž=<¨0r¤•?tÓ«W‡CoÁyê©ÀŽiÿ@997êïkV–LZšJfft0’–¦²zµŸ¯8N(‚ BqI ’õurròEß7c0¾Ýv»*UªðóÏ?‹ÀD„Åé„'d¦O7q×]!fÎ4sÅaÆ÷±pa„~0аa˜‚,_ndÁ“&y8|XÆl†¦M䦪( ƒÞyÇÌþýzõ pÝu¡"ÁB^téäÆÃ,]jdî\š&‘˜¨a<§Û'7W¢I“Š"q×]A¼^xì1ªªo‹4ÈOR’Ê¢E&úôñ3s¦‰Å‹õ!'2={øà7ë×p¹$öîU¨QCÅçƒ3g$:vŒáða}£NÍš¦Mó•'O«T¾k‰ N“¹1•c‹«³ÍääI™§ŸöRºô₩Še˪;½±'-ME’ vm•/¾páõJX,úW©èlפ@@_9 úðÙ_ÿ;ƒzNÑÍœ9&ž{ÎGïÞv‚Aý>W\¡B•³g¥Ùn$‚ Ÿ'“ÿˆ¾}û2uêTä_êÖC¡'Nœ iÓ¦Å|2A„‹—‘‡)´oÃw„˜7ObÎ3F£‰W_õТEˆÆC$$hX­*õê…©\Y¿è÷û¡[· 11úc?.qóͱäåé/®^mäÅ=<ð@EÉ>‰#l|ñ…“ zõ ðÒK>žzÊÊsÏy‰×/ srô––ùóÍgíÒ%À°a>:t¢iP¦ŒF¯^‚ÖŸG‰&âõênRS5ÒÓ%Tü~}Àë´i–‚°`Ï…Í›nº=—mÇ qèÃZdÿXÐئ¤D.*,(]ZcÂ/wÝå@Óô àª«BQƒôJš’deI¼û®™·Þ²‰@ïÞ~~8Õ6” Q§N˜; :¤0c†™%K\8 `6ë›}>øÀÈâÅ® V! ‚ ‚ðï#“ÿ—ËÅš5khÞ¼9ªª²téR"‘7ÞxcqMᢸ\°n‘Ü\‰›n Ó¤Iˆ‰õrPHbÐ *D4ÈÏÊ• wݤsçXl6… ]a Àúõ†‚°$ßk¯Yiß>D™2¡¼û®™Ï?×[U˜2ÅÂÌ™n6o΋ZÉ›“#3~tKˉ2C‡úyýu+§OË<ôŸ ÂÿÏÞØ\ï~¿g?sÎŒYÌÂŒ]ƉJ” IBD¸J¥‹D¨+)E®Ð&’ˆ6¹²õ•6{%K¶R¶PÂ0cö³oßï÷÷Ç·9ã˜ÑrS©ûyüuûÎÙæ{ºù¾Î{¡I•“'% —+¶L#!AÃçƒfÍÂÔ¨¡R\ §OË|õÕÙן/díg‡1«6d4"ÒßÎôÓ 'úIKSIM=÷¹,,„ï¿7°c‡^S»¶Â•WFضÍŦMF23õuÉo¿m&;[¡I%ÚzôW²e‹‘gž)/)™3ÇÆE© ŠVÈT­ª±d‰‡W_µ°i“‰K/™©Ðª•‚Ë^¯Ä•W†9«ÈSA„ÿ"0ùq×]w±qãFV­Z…Óé¤Aƒ<þøãÑí;‚ ºâb‰¸8xÿ}M›êC[³²rrÊCcÇ ø|'N8~¼¼"Ãç“1"ŽwßuG/üÕJæŸjgd%%|PqGîG™èÒ%3hV_#\~cÇèÐ!ŸO?¾n‰Ù³½ôé¢jU}ŽÊèÑåU&MšDÈÈP™<ÙOëÖa²²4¾ûNfíZmÚ„ùâ ý#[6G¨Ùã ¾Æyh‡ÒÙöZ>¸óÎ }¤WAüÔÜÒRxöYsç–oí2$Àر~êÕSÉÌ ±`™[o-O—:v ñâ‹>RRþ:¡I ‹U|ÿ–.5sóÍ!ÊU«¦¿_^o‡C£¬ƒ5>âãÿ:¿³ ‚ ç—LþGÜpà Üpà öËAø¯äæÂk¯Y˜9³¼Z`Û6'ú¹ùf#€JÔ«§­ ²x±%æ1¾ýV&(ÿç«®Šàtj¸Ýú}SRTžy¦<°Û5²³#<;×£~}…/¿4Ш‘‚õÇÌ!1Q£F %:¤eËŸ}fŒ†%ež{ÎÊu×…IMÕèÙ3Lóæ.V¬0“™©R»¶ÂoXØ»×ÀêÕF^|чժrü¸D¯^®¿>ħ_©{û^ìÉÚ;êð会”5o¼afĈ²üÓøÅÅ2óæÅž›yó, $!A%?_b„Ø0}Í3þ¿T`b2é[„>þ8öxýújô};ûöUªüu~?AA~"0A.h>Ÿ^9òÊ+±W¹Û¶™ðûý¬_ï⫯ 8šªbµjÔ¬ £FÅ~Ä]yeB!}³‹Ã¡±qc)ß|c@Q 16l0¢ªÐºu„ôtG ðÙg&ŠŠô’ìl…Æn¼ÑÁöí.²²ô ìôt+<<ö˜íÛ\ye„¸¸ŠßgV°T©¢Ñ¤‰ÂÚµ*óç[b‚™›oPR¢WÆ<üp€)S­¤^~Šæ¿§ŠÑÂÐæÙôî”Æ™U-š& ýüùôû‰Î)9ó¾e`Âa©Â d ,o%%zûÒÖ­F6T¸è"õ¼¬&6ô™3K–XÈÍÕß¿¤$•Q£X,?sgAAD`"‚ \Àòó%¾üÒ€ÑápÅŸÉÌ›gä©§üdf–/,„§Ÿö3q¢ ¯W¢Q£cÆ0ÀÉÊ•."™Ñ£mlÞl¢I…)S|ŒmgÏýcñ’KÂ,^ì¥N•5kÜìÚeÀl†@@bذ8B!™S§d²²Ê‡¢Ö®­2gŽGŸORX(óôÓ~yÐðÀ˜0Àl†Ö­ž|²<,yæ7W_­²j•…¤$Í `»ú B…døR¹ãâLdLÕª99å}ÑE ?4T©¢Q­šÊÉ“å};Õª©Ñ¶ -ZDص«üO„„•ŒŒŠ=L¥¥zØòßVfäåIœ<)sô¨ÌªUfÆŒ1ѹsˆ™3}?»‘Æí†ÂB™Ó§%ÒÒ4ªVU9»Ë4+KcíZûöˆD iS…jÕD‰ ‚ ¿ŒLA„ ’¢ÀâÅföì1Ò¾}ˆÞ½C,ZT^P¥ŠJB‚Æ!aÎÞ²žœ mÛ†™;W_|ü¸Ì°aqääÈø|2wÜáˆVtìØa¤o_Ï?ïãöÛìÞmâÄ ™ÔT³YãñÇíKg´Øh$'kƒpê”ÌŽRS54P¢›T¬V•]̘a%/Ofðà­ZE*¬ãmÚTaî\Ó¦Y1ÂOmÚĉHXÓ<4þç>L AzרÍÊç3éóo# DX¾ÜÍcÙØ½ÛH«V~ئi|û­ŒÕª¿¾¸ØE<ddh¼û®‹ýËΖ-úÓ3|¤§k?ž;ùóõj™õëÍ4náÙg}1bÜnسÇÈÔ©VÂa‰ðsùåJLpRZ  •¶¿=*3p`_~i$)Ieüx?*K—ZÈËóÿd`âñè+€Ç³£iƒÆœ9^ºv W¨©VM£ZµÈ9KAá\$MÓÄW-ÂOr¹\lß¾ììl1$V„?ÌéÓ7ÝääØ1™eË܃;vY»ÖDݺ <ÀéTII¡Ò‹ï¿—iÓ&>:ߤ̦M¥´m›PáöK–¸éÛ×AY›ËÛo»¹æš¡¬ZebР¸h+˽÷ú3&À¾}ºwwëÇ›6°t©'>€>6¡Ò𢌦׫¯ÁýÇ?œ8 “Üò5nþ–`¡¾5êR+ÙÂØ±qœ<)sÛmœN0õ¹-X´ÈÌܹ^† ‰Ãë•xè!?†¢•# ?ÇéÓ2ÈT¯®’”¤§‘˜Xñ5y<àrIØl¾k—œœÙôÖ[nÚ·Ÿ/ñÑG&/6S·®Êý÷¨UKD[Xýú9Ù±£ü{IÒX¾ÜCïÞÞ}×MëÖ g+(ÈÍ•0™ M›xTµüùív­[KÉÌÖ‚ ŸÏÇhÕªñññöË~Qa"‚ \0"}¦Ñ$ø IDAT…Ý‹Þfqø°Aƒ<ü°ŽCôì"%E%9ù§+=]eÜ8?=VôÞ|s›Mßb‰œ¤h˜ÍP8õêéìf3têfçNGŽÈdfª¤¦ªø|ú¬×^ó²r¥™åËM|ýµ‘Ý»tî\Þ?d±Tè”)*‚‚™?4Ñ®]„¹µnÝOJË\ò¿Èàø;á¢f‹ÅÅúëëÞ=ÌСqÄ®ÃùôS_¬ðÙg&&O¶Ó©S8˜( lØ`âŽ;ʃŸ¾}ƒLšä«ôu9úœ—³…Ã0{¶…3À™3­\r‰‡Ù³-<ÿ¼>œwëV}«Ñ§Ÿºb‚ ŸObÇŽØaºš&qø°ºuU²²*¶ÿäåIÜ{¯ Ì,Zä‰ KÊÓ㑘‚ ‚p~üÄâAAAøãääH<÷œ•=œŒa§°Pæ™g|˜Lùù2<à`À'qqÚφ%6ôïâÓOKyæ/|àâ©§|¤¦ª<ð@ æ¶·ÜÂå’ÈÈP¹êª|àŠiA‰‹ƒZµTڷРJ qÿývzöt0dH5k*<ö˜þ˜‡ÿòÖpŽ1pÕUñLœhç•·"4µÄ‹OóÝ’Füð QÃ2×^&ÖèÐ!ÌË/»hÖ,›ozxýu7 –·›Ô®­rêTùóŸ9‡$/ObÔ({ÌÀ×%K,äåýº?$ISÎf·kƒóæÅöà””ÈìÞûýŒÑH¥³DjÖT˜7/¶B§Ì¾}6l0ÿx ›-ö6ÉɪX,‚ Ây%*LA„?ÝÑ£OgXPZ*ñᇦ Ç7m2°l™—1cìÑJˆ¶mÃ̛筴bôù&ùŵnÝmÁ9´¶>Ï<`âh‘ˆÐtîÏ-·„èÖ-ÄàÁ6víÒŸûv#[¶™7χ¦©ôîíüñ‘5îº+DÍš ¯¾j¦}ûM›Føúëò~£Q£N_–œy¿¥K=¬\i&Ñ[öî•ÉÎV9ÒÏO”·A¥¦ª\|qì<I‚+®ˆ°}»‹Ã‡õÀ#=ý§Ã¥víÊ+iÖ¯7á÷ë¯zIO×+KÒÒ´Ÿ|ßAA~-˜‚ *·[ß>£¯íý™ÙüË*vï6DÃЛŽgcÞøÀLÇŽúúã¤$•¹s½X­úF.]´oÆd"y½ðÚkæ˜ê“Q£üŒàäI™víâ£Û†^zÉÊ'Ÿ¸hРü½HLÔ80H·n!" §óçÿ ‚ ‚ ü¢xUAøS¥¤h´h¦fM…^ðÒ³gˆqã|,]ê!+ë—U´o_ñ¢¿];½"£°P_Q¬ž‘½JÌŸ»ºFQ$V­*i‹yü矷âñHL›f†%¡ÄôéV‚gubY­™©Q«–KAAøý‰ AásꔄË%aµj$%i8úEpaNž”9tHfôhqqTZr.Ù٠Æùyé%+Š"Ѽy„Gñ³{·ñãí¸ÝƒèÑ#LJІÁññ§NÅ>Nrrùs* x½¿Wp»AU˪9bƒš[o ñÞ{&ví2!I3fxiØPeÉ #GØu8Àj÷a hT“–USxö½3C‰Ç³Ó¾}˜êÕ5ÒÓ5Ünxä·Ý"3Seút}dâ“OL\uU˜îÝCäåIL˜`#+K£K—ë×éÝ;ÌèÑåaGƒ [·:ÔÏ¢E’’Túõ‹†{¶ÒR E‰ U< ·[âìµÂ?ü`Àï?÷Z_ŸO:k•³¾J8„ÒҊ繤$6äAAø£‰ÀDAøC:$Ó«—ƒãÇ È²Æˆ† œ ññ¯’ýß]!§¤h<ôP€Aƒ‚„ÃzNAÞfS¶F÷¡‡â$/†¨ZUcâD}û:(»ðOKS¹îºòê¤$}›ÎÆg¶Ùh ¬t­.èÃP|0€Õê§N•µktíê$”H¾ôuz$ÑdaÇÌVÄ=¡RXI§Û-HøýÇˬ]kbÈÛ·›èÞ݉¦AÇŽa{ÌKýúK—5ª|ðÊ¢EfæÎõòÝw2Á Dݺ^ÝËÉ“2yy2YYðÁ¥dfj•n¤ ôV§So²XôuÁe’“UTô`¤üx Vë¹C®„ŒŒØµÇII*v»Æ°aÖ®=ÏDZÙ*>Ž ‚ ÂE´ä‚ ¿»¢"9ÒÎñãz†ªê­-úŒŽß®¬¥zuºuõÁ¤ Z£aI™W_µRX¨kÝ:§Ÿº¸ï>?S§zY³ÆU!@hÒDaãÆRV®tóÈ#>.ô»ñåLÛ·›ˆ‹SIOט?ßÂáÃþ³¸”+Fì¥vŸýäïLeXƒ†NÇQ«–JÍšC†-"””HäæJ´mÏ£ÚIMÕxúé²ßGbÍ3]º$pê”ÄSOÅÅÜ¿°PæÀ’¤ x:4޾}ŒGÛ¶ñ¨ªDf¦†tVGNNŽÄøñ6ºu‹çÑGmȲƂžHIQY¸ÐCr²>@¶l]p•**¯½vîm@ ¯þ¿ÿsÓ¤‰^•“­°b…‡”hÞ<ÂÂ…š7pÉ%-òдé¹g«‚ ‚ üD…‰ ‚ð» $¶o¯ø‘³k—K.9wñKœ<)ñúë>ÿÜHûöú÷’ž®‘’R±Z%>^‹^ä;Ф‰J“& ·8qBbà@;v1™4†ТEƒAo-²X4’’bïÓ¤I˜âb×\£W•XS½|f?€3+@î;ÙœØTÔ{\ â§Z5•PHbñbcÇÚùö[™«¯ŽpÿýzÈÆ³Ïú3&ÀÔ©Ž—+„?eۅΞóú¬•åËͼ󎛽{ ìÝ[~îÃa‰G±óÆjÔ(MNŸ–èÛ×½í6o6±r¥‹M›\x½‡¾¾×`€;ï Òµk·["1Q#5õ§[¨$ 6TY¾ÜC0 T­ªß'!n¼1Ìå—‡‘$*œWAA„?ƒ¨0A~wV«Vi0Ò¬Ùo K `Ä;Ó§[ÙºÕÄäÉ6 Š£°n¹%Lbbyh"ËzNbâÏ?®Ï“&ÙØ±CÂa‰éÓm|ó‘7ߴФI}û:ùö[™P áÄ ()‘™5˪·à´8EÃÛÑ4‰äÝÍiW3™Œ •¼<‰{ï R­ìÝkàða™ƒ,\è¥U«wßljöí3b6k´k§`·W\±œšªb2Á]wÅ&&v»F‹6o6™©òÝw?ê“))‘8|¸üg%%RL°°¿ÂB™êÕ5.ºH¥Z5-:È5.jÔÐhÜX?nü…_ÁT­ª‘™©EÃ’3%'‹°DA„ ‡LA„ß]RÌœé%5µ,Àиûîµkÿ÷I~¾Ä÷ßèÜ9Âòåºwט~þ¹‰’™ÌL•]LšäcÔ(?›6¹¸øâ_ö|¥¥ÒY³Køñ±ÜtS˜‰ý8`àÖ[äçC~¾Ì¢EV¾øÂH©G¥VïýÔâ¯ÒØÿBKüyqÔ¯¯0k–—‰Ë·ÉT«¦R¿¾Ê„ 6ú÷wðì³6 en»-Ș˜;׃ú‘$_ôF[cÒÒTæÌqóì³f5Š0a‚K/еkˆeË<|û­Ì;ïxèÐ!ÂÙƒX;wóõ×FƳáréÇô ¤bˆñKƒá¯/'GâwL,[fâøq å·å™‚ ‚ð—'þ Aþ ¨lØà¢¨HÂn×~&$üw•Ÿ/1r¤>2`0hÌšå#'GfÇ}~‡$AV–ưa•ô¬ü »]£qã7šcŽ×®­Ò«—ƒ5TæÎõ²e‹^qÿýq4h ëó!uü–Ä@ï—6¤pgC†ø¸ï¾8NŸ–0™ô`¢F •ÿû?#K—z˜3ÇB^žL÷î!5¦O·róÍ!¾þÚÈØ±vÚµ 3s¦›M£Q£Ì7*$$@vv«U£K}•r«V`2éíJ‡ËÌšåcâDEE7ÝbÔ¨:9±Ûõí5ññ‰‰*;‡ùðÃòßùúëC$%]X«jü~ýwAÎùuü¸L‡NòóõïÒœNµk]Ô¯a½ÿ‚ ‚ðGn‚ çMn®D8¬Éɱ?“$ÈÈÐÈÈøåë‚Ïåøq9–(ŠÄ¤I6Æó“`¢J•Ÿ¾ÈSÈËÓ¿Aw8´ m: 0y²Ÿ®]éW]Æn×8zÔÀÑ£Ú´‰Ð­[ˆ‚™Ý»œ¶åSãÒƒ˜BºÙóv(‘Œ&úL«U£[7' 1b„Ÿ¤$ý$'Cß¾!|>xê)…}û ,X`áÃM€Ä AAn¿]_ÉóÉ'ú*á-"<ý´nÝœø|z¥JãÆ^~ًϧs-c4´i6zôñþûnB!øö[7Ý䤤D¦k×`t}sR<÷œ=‚>lä²ËÂ4n¬\0-2……Û¶Y°ÀLýú ƒ…¨QC\ÌŸª o¼aކ% ÏÈyúië!ÝŸøâAáO$Aá7 …`çNC‡Æqì˜æÍ#Ì›ç¥^½ßç‚öرŠ¥'OJ4jáÚkÃ?y‘ïvÃêÕ&zÈNQ‘DÛ¶fÏöÆ *|àæôi U•8xÐÀ¨Qåivî4н;ì= ÑèŽ}Øç¢Kå¾ë29¸×Ìcù©][!)Ic÷n#cƸæš0õë+1k‰ƒA‰E‹,,[f&3Sáþû¤§«Ô«§’œ¬EC›MãÆà îgÎkô8ÀÞ½Fvì0rÓM¡˜ß!5Uã…¼ôèáÄéÔ8yRæÕW-„BЦM˜‡òÇ\ ''k´j¥’›«±¿‘ºu5"5ZÍQP  Ýš¦árI T8wç[8 š™8ÑÀêÕ°t©… *n6~=EÇ+n¬úငÍ&α ‚ð¿IÒ4M| ?Éår±}ûv²³³±ÛíöËátü¸Äå—'”_Ä_t‘»ïºv{Êã»ïd.»L_[¦M›0 xHLÔÛ6Ž“Y´ÈŒÝ}ú„ÈÌÔ/ü¿ýVæŠ+âòû^}ˆyó¼ÄÇ—?Ç©S:8yðA?ÇËLŸûß¿I“|4mSʳŸ%b òýÛ‘·µf³Æ¸q~ºt qâ„ÄÕWŸ;4òûaâDóæY£Çl6Ï>sQ¥ŠŠÍOÆØí7º¨UKeï^ÇÛÙ·Ï@Û¶a}4ÀСq˜ÍðôÓ>š7ÄAçÓ©S­[ÇãrÅeóç{èÖ-üû<éÿ˜uëŒôîíŒ96}º—BÖO ‚ ¿ŽÏçãÀ´jÕŠø3ÿØ.x¢ÂDAøÍNž”cÂÐ[?Ünéw LÒÓUþó<G^žDëÖ^|±|ή¿ÞI|¼F‹ 6™=ÛK:[·93,X»Ö„Ç£Ïò(ãph\z©ÂƒƱys W^©D/“)­rš)Û j3U7åÁÍ{¨UK¥°PâŠ+˜0ÁÏÕWŸ{†JI‰Ä‚–˜c~¿ÄŽn½U%?Úµ që­!ºwwDƒõëM<ü°ŸŽ#¬Y£§=»º¤ŒÙ¬ÏrÉÊ:ó}¨øžƒ0cFlåŠÏ'1c†•1cütëæÄíÖöÙgfFŽ40lX€ý+Ž^½|ö™‹?4н»Bf¦ݦs¾œŽ•ù;%  'GfÕ* :„©^]ûÝ‹æÍ#Lêå™gl„øñưKA„ÿi"0A~³²™gr84,–ß§ˆÑn‡N"¬_ï"‰CâvÃäÉV† ÒªU„O>1’•¥RR"£i uëV¼Ê®][­0DÔé„)S|\t‘M“;ÖΑ#dS„«FÀ9Má®t& N'RǨ˜L2S§ZY·Î h\w]yõÃÉ“}dâ»ïdzõ S»¶ÀÄÅi¦²à¦´TfÒ$;ÿøG¨BuÅk¯Y˜0ÁÇÖ­F|ÐOíÚ¿­ý)¼¼Š­NÇËѰ¤ÌªWן3’øòKï¾keÚ4Ÿ~ê¢fÍó׎•œ¬1th€gž)ïJHPiÙ2rÞžãB³oŸnp‰èç=%EeÝ:×YÁ×ù“œ wߊVì$'k˜Í?s'AAø›k…A„ß,%EeÀ€3+)4ž|ÒGÕª¿_×§,ëCd³²b‡¶F"õꩤ¦ªÜ~»ƒW^±2a‚{î‰#7W¢~}•k¯-¯Æ0™4žÞ[i%Lf¦FïÞažxÂÊ‘#¬U½d߉«JmLuP¶4À  ‡õÛ._nfé©*¯¼â%3S Nž”èÜÙÉèÑqÌžmãºëœ¬YcBÓ4æÏ÷`6—?wV–Â%—D8}ZJûÄ~*kžUUhÙRaãÆRî¾;Hzú¹ÏuI‰Ä©S^ï¹Ïg\ ¨p¼{÷P¥ÕV«†¦•OKÓÈÍÕƒ•7Þ8¿WÚf3 äŽ\ye˜þýƒ¬[çþÛÎ/)-…Ç·EÀ‚™·ßþ} £±|0³KAAT˜‚ çAb"<ö˜»ïðÝw7VHKS±X~þ¾çÿµhôï¤gÏØy ‡8pÀÀµ×Fxé%'NÈË“hØP%-­b5„¢À‰û÷عÓDÒ%¹ÔìyP‰…ý/´¤e7#—_!#Cnþyá“'û‘e½êÅí–5vî4rüø™=*?ngìX?ŸndãF³g[¨^]¯J)-•¹ãHHPXµÊƒÓ©ÅTy  >^%5µòó›+ñÃ2F#L˜`ãÀíÛ‡?ÞΠ¡I“ë×—’Ÿ/ñÅFÒÓ5rr äæBÏžAÞ~»ü ½ÿþË—ëí@—]Ž•½REUõPë|IIÑè×/Ä7†°ZùSþÝú£„BRÌÆš2'NüñßsA aµjÌÆ$AAø£ˆÀDA8/’“!9Y¥iÓ?ÕkB‚¾ÁålEEú±ªU5ªVýé992ë×9™§R·ï~yìLçØŠ‹PCF®¸ÂC³f‘˜Ê§œNœ‰{î‰ããM´o¦C‡ŠƒI].‰¸8¥K-Ôª¥R­šÆ† &œNeËÌ<¨,¥¥FŽ´³zµ‹Y³¬ääÈtï"!A#/O¦JµB5@n®Dß¾qŒ`Р¸h;Ï[oYÈÉ‘Y°ÀSáâ÷Ø1™ã¨VMeР uê¨de©ÄÇG8qÚ·‡îÝÃ|û­¾©zu•;ezö Q­šJ¿~e•Æ]w9vL"7W&=]#%E=oaÎÏã\È’“5î¼3ÀÃÇqT£ÿÊçÔü4M|ß}qìÚe eË3gú¨_ÿÏÿÿ· ‚ üQD`"‚ üí$'kÜzkˆ7ß,/C°Z5Z¶üé$ÖC‡CãÃM|º;„·Ù"æžõ 8úa5zõ rÙe‘J+5JKá_ÿ²³zµžb¬_oâÞ{ƒ˜Í¡PyˆÓ«WˆÕ«õ uëL\}u˜/¾02jT€={b?žwí2±g믳u«‘yó¬ìßoÀlÖØ²ÅUa~Éþý¾ûΈ×+U˜}²y³—K&)©ü>¥¥0z´øx•[o rË-Žh;H·nA}4@›6ñ8*3fXIHИ5˃Û-±c‡‘¸8&M"<òˆŸÒR‰nH@U%dYcÆ ={†‹Ö~Y†[n ãóùxõU+‡Æøñ~êÔùã¦ÜææJôèáäÔ)ýߟmÛLôèádÍW´¢JAþîD`"‚ üíÄÅÁ£úINVY¾ÜBÍš S¦øÉÈ8÷·ã……°|¹™¹s-tî&˜žOnÓïI±š¸èdSZv·r·‡”‚ ÿ|‹Š ?_&/O&+K‰n®P‰Y³¬¬XáfÒ$§NÉÜtS˜–-# ¤WÔ¯¯DÛ-Š‹%ªUS£í-ejÖTùç?ã8q¢¼µ'’X»ÖÈ A±•ÇË à§V­Š¿¯Õ Cìo0ƒ %EbÞg#Žm‡ …¤ [vʃ—§Ï‹ñx*½Éÿ,£ÒÓµ?<,}•$Å>¯$iØl縃 ‚ ü ‰ Aá/«¤DÂlÖÎÙêa6ó“ÛcŽ“˜2ÅʪUfŒ‰>êßq€¸>Œ_ÕgîÝN^ð©=*SX(‘“cdνÍg÷n#>Ÿ„Ç#ñúëÖècΟoåÑGý nn‘¹ì²0ññlb÷n={†i×.‚¢@ãÆ »v˜?__asäˆììÛ·—òÃ2U«j8/¼`aøð cÆØ€²Y,*­[W\­‰èU'NÈ̘á¥OŸùù×\¡O……2²¬qÿý2eŠ•’’ò4æða;w¹ì2I’X½ÚÄÈ‘AžÞH3gúHLTY¼ØCZš~Ž­V°Ù´ jããUªT‰}òò$¶n5²~½‘-¬VM›Œ<úh úxŸ'1QeÈ /½Tþïö½÷bZ¹AáïNÒ´Ê– B9—ËÅöíÛÉÎÎÆ.ÐA¸H¬Ycâõ×-dd¨<ü°ŸL!Ðå IDATºuUL¦Š·--…¢"¯Wß “ž®a0è3Ö­3b±èÕßEòYxàÁb+-Ãõ9±7žýËO³f 992wÝÇÞ½åß3Ô¬©ðá‡n¾þÚ@Ÿ>±yúô 2jT€; Ô¬©’ž®ñðÃ6† ÓW/ O@•$–-#ŒïnEIKSiÒ$ö¢tß> IÒ[bü~‰•+ÍÔ¨¡pùåæÏ·0aB€š5Ëïó×\’@Y°R³¦Âøñ~žyFß–s¦­[K¸ãgtÈl™[o b·ë³`Ö¯7âvËÜpC˜’‰‹.Rðx`éR _¬Ð±c8Ú¦ñý÷{öyðA;2U«ª¼úª‡Ë/W¢ïOQŒÇûï——ütë¢aCý6#G0ľáOPXGøòK—\¢P³¦BròŸýªAþz|> U«VÄÇÇÿÙ/GøD…‰ ‚ð—‰À’%fÆ/p׬1±e‹+&4ýÂ|út+/¾h$UV®ôP½ºÂ[o™¨Zžy΄ÔâñÍOѪZ¯MnLÃ.*ÙÙ µj©Ølú·í—^ª°w¯°Ù4æÌñ’ž®è­)e3;¾þÚ@r²Ê?þ¡F_ó´i>¾ÿ^¦zu• \;&¯¡ªp÷ݼ^9ÒÏ%—Äþ¹¹ðÉ'f¦Nµ‘•¥Ò¥K#>,3~¼={Lȼñ†‡ÄDý>V+´mfÓ&=øá6›V!,8uJ¦kׯöZÜrKMƒ)S¬LžìçØ1›7¸úê0}dbÒ¤òóߠŠnÒÓ5jÔаZìXáFQ$âã5²²Ô˜¤¸Xæý÷cÓ­wß51`@ l  %å§ÿ=~úæ+…K/ýã†Í ‚ Â…D&‚ Â_JAÄœ9Ö˜c€Äš5FþùÏØá§99^|±<(.–2$ŽÿüÇM£F*·ß+Sç¶ÝXSü}+›¶m«Ð©½J¿~!5Š–¦ß/) þõ/?ƒ0™ÀáP£ô©©*¯½æeÔ(;%%2 (¼þº7æ‚ßh„¬,¬¬² O:uô`DQà½÷Ü€¾îØï×+D\.‰ªUU\.øä#£GûÉË“™?ßÊæÍ&†DWìnÚ¤oÄILÔ«<ÒÒ4¦O÷3p Ì×_q84ªTÑhÜ8S%ú ”¶mÃ>là½÷L˜Í0|x€Ü\™‘#õ¡´¬pê”ÄW_iÞ\aúôØpåàAß}'“ž®`0@Fç° A eÕ/å$²³±MGA„ ‚LA„¿I£±b7ie]÷ï×Û\êÔQxúiII*¥¥ ¼µ­˜†#¾'Tjaÿ -ñç:X–£²`^)áõJäåéáÃþý2·ÞêääI«UcêT}M®Ù¬ǼñÆ0—^ê"’ˆ‹ûù!äçK””È8*f³¾öØçƒÅ‹ÍìØa`Ĉ ‡ÈÈPiÞ\añb 5j¨ÌëåÉ'­Ôª¥rü¸ÌÔ©>ê×W~¬ªQT$1¾«Uãõ×=ƒª š¦1i’Ÿ9s,ôëÂjÕHIѵÊ2\sM˜>}B„ѡн»“ŽÃ( L›faôè ·ßîÃjÕb6•9×P×3ååI¼ô’…fÍêÖU8r¤¼ì$;[¡°PbìØ€LAA¸ ˆ&ÂÏ3LA¸¨*,[fæÞ{ã¢ÇªTQùäYY±iûöÉ<þ¸‰ý¼öš¯WâÆ®¶…~`[~…»Òøáí¨!ýûƒfÍ"¼ø¢—›nrRR"S·®Â’%þñ‡Ù΢±}»‹ºuýÌp6n4rÇ}€êcùñù G0óæ™éÝ;Ì3ÏXiÛ6Â÷ßËüç?å5‡ÆâÅB!‹EbÜ8;_}eÄhÔ><@ÕªãÆ•ý·Z¿í©S2Ë—›yä?á°Ä?ÿGAL|¼Ê”)~V­2Ñ»wˆgŸµ±¿wÞq«V™0™ S§0S§Z™9ÓKZšÆØY¾Ü}MN§ÆçŸ—âtj¸\ƒ^-sæL|ÐÎÒ¥ªWW™=ÛËüùfvï6Òºu„Q£8*ééz(&‚ b†É_—L„Ÿ%A.4ÅÅ{÷xí53YY*†¨QC­p¡—§|íØ1ŸOÂRÕKÝþßà¬æãöÆYL\›œ=14V¬p3fŒýŒYÿ÷nzõŠê °x±›Nô 5ùùعÓ@ëÖêÖ­|8¦ß¯WY´k—S‘a0h¼õ–¾n8=]㆜(ŠÄÂ…îº+®ÂšÞW^ñpÅayÄλïZb~öÚkzÈ"{é¥aÞ|ÓCQ‘þÏ7ÝäŒþo‹EcÉ7;v¹òÊ}d¢k×7ÞO$¢?¯Ý®±j•›ZµªT)¯yç3õê)üûß~UFŒˆcÍññÿþ·ŸîÝCѶ¡'ôA´Š¢?¦Ã¡Ñ«Wˆ4h þêuµ§OK|ù¥ L´k¦E åOY¿+‚ ?G&]¢%GAøËILÔhÛ6Âå—G0ô–’Ê””H,YbÁç“Hj–GÍ[vY`í%¤Õ–ùà7›7ÉÏ—éÔ)L0¨qß}ARSõÊ‘“'õu™™ 'NÄL­UK¿Mq1ŒocéÒòàâ¾ûüŒÀyFÎ’›+ñôÓ6:u Uh_Q ¿jÔPxóMk4T…ô5½g&ññ_~idÓ¦Šk¶o7Ò Býú ÷ßÀï—((ÙºÕHõêjLXP­šJjªÆîÝFæÏ·Ò¦MHIÑÈÍÕŸ×ç“X²ÄÌäÉz/NZšÆÃ¸çž 6›†Ñ<`gͽ/Êå’5ÊÎ%—DhÚT?O²¬·/y½úí=½u¨gÏ6Û¯«Ô))‘?ÞÆ²eú9Ÿ;×JAž}Ö|+‚ ‚ð[ãOLAA¸ð™LçKÂaX»ÖD©G¡fÏÔé¿—’})ì{¡%ÁÓ’’ôÃ}ú„>âpèÕ ’¤qÿý~ÒÒô.*’Yº4v€Ê¢EfJK%NŸ–‡õv”dz1¾…@@"))6 0™4,X¿ÞŒÝ^^%±|¹™{ï ÆÜ¶fM…ôt•Ý»4n\q{I£FúàÕ±c,X`aìX;mÛ&ðÉ'FÒÓµèïQfÜ8?}û:øà3992Ë–Yxà;£GÇ*)*’8³&ÕlÖƒ“øx(-•øè£³Ã‰õëËU­ª±t©›¥K=¼òŠ—Å‹=tí¢^½_¿¥¨HbÙ²Øs¾b…™âbñg ‚ ç¨0Aþ6Š‹% $òó%23U4‡‚f‡Iö9úV6Û3‰»îò’‘¡ÆÌ؇aþ|3–W’ìÙcä³Ïô-3¯¼âAU%,¼< ³YOô¨å MšD˜4ÉÏ#Ø9xÐ@—.!îº+ÈêÕú“Ížmå¹ç|Ñ­:qq“&ùX°ÀÂéÓ0s¦Ÿyó¬ø|ï¿o¢yóo½åæí·ÍÔ¯¯Ð³gˆwß5±p¡…Ù³½ìÛg °P :tqå•!Z´ˆ°e‹‘äd• |ÊŒgcР “'û=ÚN8,!ËÕ««?[=óÍ7F²²Î L4b<Ç_ f³¾õçË/c‹ììò0¤¸Xbútk´ %!AeÕ*}Àî¯Çžs«U£kתªo2TÜž,‚ ‚ð«‰ÀDAø[(*‚§ž²òòË@¢ê¥¹Ôë{SÄÌ™ YnOÄÛRáž{\~y˜ôôØûû|°m[Å—­[Mde©Œk4@"#Cåšk\ØíII©©*§OëaÁ£ú80.Zí0c†Ã‡ `êT;Û·™3ÇÊóÏûÈÌTq:5vì0ЫWˆ–-#¤¤h¬_ïâå—-¸ÝW\¡pèŒÏ'ññÇfrs%2~¼§Ÿ¶òÞ{n~øAÆd‚ |õ•‘W^ÑWÌŸC‡0 Ä—_9qBâ­·ß|cˆ†%¥¥2cÆØY¸Ðó«Ûh5.ºHáÛo Ô¬©0s¦eËL Ç7†øÇ?BÑ   IQ‘¾ÚZÓ 1Q­tÎ ‚ ˜‚  yy2/¿lE2*du=Djë“”îKåå{ª±i£…Áƒƒdg«T«¦b±T¼¿Ã×_bÛ¶ØÆÂ,_^v¡¯‡MšD‡aÇ©©*o¿í桇ì=*HZCÞßĘ1~¦NÕ—mÛŒxŽ—yâ lŠVV¬Xᎆ%e^yÅ»ïºq84ªTQ‘e‰´4 Y†ÂB¸á†}TfÜ~»>DwÅ 7² II?þ7Vض­”}û $'kÔ¨¡Æ aݽ»âŸ{÷~ X~]¸‘šª±l™‡I“¬ôìbØ0{tÆÌÎFví22k–„„Ê7?_¢°P_·œœ¬ý!áJ^žÄ°avÖ¯×Ïs›6a^~Ùû_UØ‚ ‚ðlj ‚ð·pℌ%ÅGÝÛ¾ÁZÕÇÑÿk@ÁÕ°ÝWÊ A¡Ÿ½¿Áýú…ؼÙÈW_è×/Äe—EhÑ"š5Ê>2SRTÆóÓ©““Ü\²¬1i’Ÿ»ïR¯^Ÿ¯â ‹E_½ûé§.V¯Ö[kZ¶Œž®qê”ÄÉ“2›7iÚT¡n]…¼<زÅDÆJLXúãìÚedéR3ãÇûY¹Òk4j•Ît ‡!!A##CýqkMùEzr2LŸî£ÿŸn¤}û0_¬D·Ûœ­´Ž—ùäuê(¤¤hØl™™YYYY‘JïwÍ5a&OŽ]…síµaœÎÿ.0HKSé×/ˆÙ,UÈûÁ&JJ¤J“Ü\‰;îˆcûv=Tª__aùr7™™¿_p¡i°r¥)–|þ¹‰E‹,Œ-D‚ ‚p‰ ‚ð·Pì( ÑÈc„K-ìŸu)þSN®½6Œ,Âú@ÓîÝõÊ ‡£òÇHO×xùe/§NÉ<þ¸åË-tèfÚ4?>ŸŸO&)IåŸÿt›«_åªjÙÆ&ØyöY?ÙÙÊ«‰aذ©©5kj4iˆ/-Õ«I¦L)_ÙÞµkñãý´je£Q#…¬,%fÆÈÃûùúk[¶˜˜7Oãê«#9¢ÿ<”HLÔHIQc‚–Ö­#œ3IKÓèÒ%L—.•ôçœ!†wÞ13j”²j›Ö­ÃôébëV0 „Ù\ù}k×Vxä?Ó¦Y %.¹$¿ÿí?ç{ñsòó%î¾ÛÁœ9¾ ?“$*¬˜.óÞ{¦hXpè_´2q¢ÿœ¯½2n·~>ά¾Qõm@gòû‰iG*³n‘þý¥ ²}HA˜‚ q¡ˆÊKÛrXµ¿€Î$>|¾þ3õêExöY/]ºÄ““£‡Ï>keÉ;V^àõJtíꌮß]°À‘#2o¼á!)IáÀ™]»b?>EBQà¾û‚tëæà¹ç||ó‘C‡ôÆbÑp»Á[`Aa¡Ì´i±ß{ÏÂC˜7¯YÖ«?vî4’“#Ó¾}˜½{eZ¶Ôgƒ¬ZebÑ"ÇŽI¬[gÂlÖW¿úª—Y³¬ìÛgફÂôíÂnÿu«{+sú´Äc•‡% W äìtî¦zõÊ/þ“’ôà¨OŸ á°D|¼FJÊ(ŠDi©„Û-Ñ 3¬÷¶ÛB$&Vü}Ãaøì³Šsj¾øÂˆÇ#‘”ôó¯'€ƒ <ñ„•âb™Aƒ‚\}ŸOâ?ÿ±°c‡‘›oqýõáhK’Õ íÚ…c¶\zi„Y³¬ÜpC˜fÍ"ÿux$‚ ÂïC&‚ Â_†ªêÃYm6½…&§4À¤uG9^`dÛ,:ÔNf\{€Ÿ*UTÖ­3EÃMÓ/ø›5sÇÌ×8ÓÉ“r4,)óùçF\.½º$>^#9Yn¦}KKÕª*/¾h%'Ç@Ÿ>.½T¡zuý5øý6¨Œˆ©b…ôª³¹Ý·Ü¢°}»Ì“OZéÒ%LF†ÂèÑ6òó ¬\é –80ŽÅ‹=Œ ¤DfíZ_¬Ð¢E„ŽÃ>,#Ë))¿åÌëEÂí®x¼¸XBÓ´[ƒÎ:Øl•¥ýäm~©øx•«® óè£6æÌñ²y³‘ýû tïâšk"8ïc2AçÎaV­Š­ö¸îº_Þtü¸LÇŽN"ý}:ÔÈúõ ƒÅE+}Ö¯7Ñ¿)S|8úêëÞ½C¼÷ž‰;ôÐäâ‹#\{m„[ou0{¶…O>qѤÉoµAA8*étA„ On®ÄK/Y0ÀÁŒVVî,áÞ• FTfvk@—ì,‰êÕ5êÖÕ7äåUü˜+*Ò«AÎÅn¯xál6ƒÁ OKÓxóM©©úÅm•**Ó§ûصˀËU~HìÜiäÝwÍ|÷¸8eË,ņ#‡F£F±Õ.ññ*ii’z«ÌgŸ™ðxdæÎõÑ´i„”•W^ñððÃ~^}ÕËÖ­FŽ1ЯŸƒÉ“íLj£n]…Ë.‹0bD€Ö­•_Õnr.N§ÊÕWǶíX­úl”ììNçwÁŸ˜³gû¸öÚ0ƒÙq¹$&Oöѳgøœa@ûöaºwQÚ´ifàÀ`ÌŠéŸòöÛæhX`±hœ>-EÃ’2‹›c†ÿ¦§k¼ù¦—Ï?/eÅ 7wÝdðà8EBÓ$^½’IÄ‚ ‚ ü©D…‰ ‚pÁ+*‚ûî³³nɨð]â1Rrh]=‘‡Úga7W>5³S§0'j¨jùnÿþA’“Ï}AšªÑºu˜-[ʯ ‡Dïc0@Ë– 6¸p»%L&ý¸Í¦Q»¶ÆêÕz2a6kŒàúëCÈ\sM‹%öy335ÞxÃ˘166m2Ѹ±Â´i>ªWW).†)Sl,]ª_H¯_obõj‹{2ÄÆ±cFÒÒTf̰â÷K¼óŽ‹ÿgï¾Ã£(×>Žg¶—ôB „&¥(¢¨ˆ¯X° (¨ˆTäH ˆ¨èA@°¡XQŠ(D)"E@@D±8 -@ i»Éö™çýc aYà±$ú|®‹ë:g³;;3›svæ—ç¾oE¡ðí·f† s±vm9YY¿_Œ¤$xþy£G >ýÔJÓ¦÷ßï端LL›æ?áñÀÿ«ìlÁSOù(/W°ÙD¦ù¤§ ¦LññÐCÆ”œÄÄï{d v¬^)`4{=\ZšÀjŒ錙d””$û˜H’$IRm£qä×¹$EóxvØŒS]4o~ô¯±H¾ùFeß>O?m§¨Hå꫃ÜzkÌÌ_ÿê+(Pøâ 37š¸è¢Í›GHI1úWx½ n·ˆéGPV¦°j•™‰íŒé烬,X`ê××øðà 7Ž]…QX~¿‚Ù,¨WÏXMST¤rþùq}Gþþû^Á An**”ª0è³Ï<¼ñ†•E‹Œ cÂ'Ÿ¬cþ•?ƒFóT¿ß8¦Œ ñ«@õq‚ϧ X,— \®ã¿îï`÷n•®]ãñz(ÁÚµúöu³{wupwå•A&Oö» L\|q\Õgçv”5’%9’$IG>ŸÍ›7Ó¡CâöÅ ÕZr…‰$I’T'$µ. ÑU[{­USp œcõÃ((P¸öÚ8RS×^k4]±ÂL pÔ§G©WOpÙea.»¬ºüdï^…©Sí¬Yc¡S§#FøcFÑ&&¯ëÚ5ÌÆf,¨.³ÈË31fŒƒ‡öc· ÒÓÅÅàó©˜L‚ìl£1ìO?©”•©GmZ F°²y³Ñ„VÓ¾üÒÌüùêÕÓyì1?#F°Û¿b¡²/¶0l˜‹Š … / ñè£~¾ýքݧ‰iàZXh4—]°ÀÂgDèÓ'DzúñÏçïÍãGAUÏêÏË›­³j•‡7ß´’Ÿ¯2p`úõu>þØËôé66m2sé¥!z÷5,8õTÕ«=Ìœi#>^зoˆúõeX"I’$Iµ L$I’¤Z-Ñyçšö;@É·éì|¯9zÐLëÖá_jâ÷+”–ª”–£V/¹ë® ÿJ“£(,T¸î:7?ü`|mnÝjâ‹/Ì|ø¡÷¨#a““á‹/b¿b¿þÚÌÚµffδòâ‹>î¼ÓÅÆ&ÒÓ&øhÙ2B8¬0q¢®]#üßÿ…X¸°:tiÔH#€… ma&N´3`@wß­¨Ú‡£f G‹ŠT r¡ë ‰‰:ƒéÞ=žŠ cÕC½z:Ÿ~ê© …ÊËáá‡ÌkìÏ'ŸX™7ÏÆûïýüQöíS9ÒÉ’%’“ãÇûèÙóØáÄïÍd‚Ftz(€® ]ââ=À磪Ñë±8Т…ÎOøÿœ–$I’$é7‘M_%I’¤Zkoy¡må³ÝÅÜtjn8¹1gvÜwŸŸ·ÞªüÕæž.— ++ú¯öf³ #ãÄÿ’_V¦T…% j\vY¯×˜Üs4çœ;º¸C‡?ÿlbôèC†8Ù¸Ñ (ª h„¯¾jaíZ S§Ú¹öÚ0÷Ýç§sç07ß`êT=ä$7WcÏPxýuûaå!5·{·ZUrÅ!^{ÍV–€Ñ0wæL[U޲2•·ßŽîûóÏ&ŠŠŒ×)ü÷¿*;wª”—ŸðîDÑ4㜗—Ã/¿¨|ø¡…o¿5QP 0~¼Å‹­¡P\l„>yy'v9³w¯Â‚æÍ³°gϯ7>R$b¬^*- E,HHøõ°D’$I’¤ºC®0‘$I’j¥U¿”2eÍnž¹4—¦)Nô!ÜÂéä¸e‚Y³*¸î:7ùù*qq‚gŸ­$5õÄWC}@ pé¥!úô ñÜs6,°2`@€+®Çl·E o òæ›ÆÍ}n®Æ-·¹á7ÜdÆè¯`]Wøæ·Þdþ|;€Bÿþ.ºvðøã>¦LqpõÕnRS޾}ÝU¯ýá3EEíÚi¸\F³Ñü|…²2§Sœ,bÆìa’qL©©‚o¿½ËߺՄ¦Ç/„ 7Wã®»‚$' ‚Axí5š¦—×_o¬ÀQAÿþ!|ÐOZÚ‰Ÿëü|#ÌÈÉÑ©¬T¸í6WU—Þ½ƒœq†Æ[oþ …•+-´h¬Ñö÷ìQ¸à‚x ã‹,[æ¡Y³ãiEE 3gZ™5ËFZšà±Ç|´j¥Eõ³ñûIL¡Â÷ß›(+SèÞ=Lýú5ë#I’$IRí!ÿ"I’$Õ*¡ˆÎ³k÷0~ÅN:4ˆçùËO¦iŠÑpZUr‡šô¬PhÝZcùr6”³vm9={†ù-½«“’t.»,ŒÝ.¸é¦ 7Þèâ‹/,lÙbâ¾û\ÌkY¥–&xøa_íáóÏ˹óÎwÜáÂãQ …”ƒgmÛFèÓ'È©§FhÔHÇd‚=õNQX»ÖŒËC†˜?ßË3ÏT2l˜ŸO9xNéé:W\áfï^ãk}Ë•ó΋çÌ3h×.çž³SZZ}·%7÷ÝçŸn梋B1Ç}à Áª¦±II‚‰}LšdçúëÝŒá¤_¿ ))ãÇ;«Và¡ðæ›6¾ÿþÄ‹”–Âøñvš77šÕÞ{¯3ªéíØ8é$-fÚP³f±KD|>8pÀ(áÙ¶M%/O!„7ß´U…%`4ñ}òI;þ£TÇ”–B^žB~¾B(/¿lã±ÇœìÜibãF3_WuÎÁ(Ý7ÎAÇŽ ôìG^žÊîÝ*çœpEЉñùŒýß·O!>þó%I’$Iú}ÉÀD’$Iª5ö–ù×G[Y²µ˜»ÏlÀç6ÂuŒ‘Á5¡ª™)hÖL§~}Õzü×MRL˜àãí·½¬YcFÓ¢— ¼òŠb—$$ý.6Ô±Ù¨ -ÞyÇ”)•¼ùf%½{‡•ƒáƒ1r¶OŸêðâ–[‚!h×N£sg ôª• ‰‰:S¦ø˜5ˆ®«,YbáÀ…Aƒ\äç_ñº®0q¢ƒ½{ï½gáæ›]¼ø¢¾}C|ûm9<â£OŸC‡úq¹II:?^I›6ÕeE~¿ÂwºØµËø©Åå‚îÝC|ü±Fa¡B0hŒ3ÆÉÊ•Æô‡Zé1'ª IDATÑ#DYY:£GWÒ²¥Î¶m&®¾ÚÍ’%ddrsuæÍóâ÷+ Ó§Ûxÿ}cõëëƒðý÷±_ïåå 3gÚxùe;K–ÀܹV.ôrúéFˆ0jT€Ûn ¢(š*¢FWT(ìÙ}á°Âž=*íÛkäåE¿ç™gÆöp9œ®å7%% N'$' E™©³e‹‰íÛUÚ¶ðí·ÕÛ5›Í›ë,Zäåûïͤ¥é4n¬G5ÍÏWèÝÛÍàÁAî½×X rhÿï¸ÃÅgŸyPUQÕ¿àºë‚$&Vo£¤n»ÍÅ—_ï½w¯ÂºufDGJŠ~ð5 *|ú©…Ž#ìÙ£F5‰ý5‘̘a« hÊËFrѪ•šI’$I’ôç+L$I’¤¿T(¢óܺ=<¶b'ê%8µ-,9Ü…†«n’ ‚±cýÇí²{·‰ó΋§oß8† q¡ijUXrÈÒ¥Ú¶P^®Ð±c„»îr1fŒ“Ý»Íø| ºnŒîßßM—. Ü}·“«® Ѳe„Æ5:u £ëЪUlX‘žNÌ ‰;LìÞ]})`·+r22¢Ã0¦ïÄǹ:C`³Á€Aêׯ¾‘ïÙ3D‡a|>£AjeeìùزÅ(U9ûìÚ·gÜ8v;ÄÇ ìvÁ´ivÆóÓ¾}0ø¾óNõêé4l(¸ä’0:i1zJK~ùÅDv¶n ¡°m›‰‡ö“”¤ãv † ósñÅá¨þ"*_~ýÚ¹sm<ø QÂtHf¦N׮ƹ¶ÙÙÙ±aFýú:( ¬q3Ø’…÷Þ‹ _ŽÈH’$I’ôÇ‘+L$I’¤¿Ì>OñËw°³4À.õéuJ*J-ïŒY¿¾`Å ï¿oeÿ~•ë® Ò¸±$}2l6¢ž–•Áòåf²²tZ¶Ô8çœÐ1&É(˜LÆM¿Õªrÿý~23?ÿ¬âtêäç+\qE\UŽÿüÇÌwºx÷]/ÉÉ:°nÊãû8ÐMQ‘Šª  b±ˆ£Nƒ©é„˜´4ÁsÏù0Àu°$I0xpeË,,\haìX?M›ê¸\‚”ŸOáÞ{|þ¹™öí#Œ aCã<ÃSOÙ Ï:#C—§rà4mªqÿý~ÆŽurûí.n»-À#DÈÎÖkÔ8õPÐãñ(dfêìßRÄÇ ÞßÄ„ >Ú¶Õˆ×IH8r‚ÔTUfµi“™æÍ5V­òðÞ{Vê××¹è¢0ÙÙÆçœ<â§GKUyOƒgžᤓ"äæÖ|eˆÝ.hÔHã¿ÿmZ´«K$I’$éϤ!N¼…½ôâñxظq#Í›7Çù[º%J’$Eu Ž™ÑÝ×êU%ÇSR;wš¸ë.›7›hÙ2Âô镜rŠŽ®ÃìÙfN;Mgóf3ë×›9ãŒ0-ZhÜ~»›Í›«oŠÛ´‰0mZ%?þ¨âvØ1N~ùE¥{÷0O=åÃëU8묄˜÷ÿüórÜn˜9ÓÊ/¿¨\zi˜úõ)3ÉÉ:‘ˆBjªÎK/Ùxî¹ê‘.:Ë—{6 …pØh2ª(•%(*2FîÆÇ âã&¤EE*{ö(ØíðÑGVž}Ö(´iæí·QÏ W]åæÇ«ÿ.Ó¨‘Æ¢E^l6A~¾Êš5f²³ : ë×[h×.¹熱Ûaß>•M›ÌœrŠFÆz§Ãwº()Q<Øh´k3‚n‘™©3a‚“I°`—[ouÓ§OAƒ‚Ucª5 /¶pãÕz.¾8Ä”)¾_Ýãü©¬_o">^в¥†Ó)HMå„'äüü³JñTV/lØPcáB/YYò²M’$©®ñù|lÞ¼™:ÿWïŽtd`"— L$Iú=…4—6ìeÁO8»q"÷tÍùŸ»þÕÊËáçŸMôï隸¸z5C½z:+VxPU£á§×«ðÌ3ÕaEÏžAÆŒ 0}º¯¿6Ó¹s„믱i“B·n:;ÇWßewîæÙg}tìÕCU6xèÙ3.êýŸ{®‚† >èàûïÍ´háùç}lÙ¢òê«vZ·Ž0dHœcÕǾ}FŽW^±cµ †÷S¯žàškÜôìfâD_ÔÍzI |õ•™ùó­têá‚ ÂUÁËO?©G v6l(Ãç3Â’¤$Û-Ø´É„ÉS§ç¦S§0o¼QyÔ‘ÄEE ‘ˆ1±Çn?ögRP`ôÙ·Oå¼ó”•)¸Ý:ß|c!/O¥¸ØóüÍ7fÞ~Û(Sºí¶?ì¯Úne%¨|÷‰† u4ÐÓ˜äß*ýû6m2'hÞ\“a‰$IR%“ºK–äH’$IšÚX‚ã÷=#5:=ÑI:%%*ååJTXÆÍvY™BZšà¬³"\zi\ÔÏ—,±qË-Aå`YFR’Æ 7å;‡‡%ë×›±XƘ4©:x6,@AAìûÇÇK÷ïWq»§žªñá‡n¿=@£ÿÈ!K—Zxä‘êP|È7ï½ç¥m[Å‹­¸Ý‚ |8 ²l™…ÌLŽ#ôèá‹9'ºF¯êc8é$T.¿<®êØN>YcÌLj<ï‹/,”–B0hLÉIHÐQUøñG?줨HáÚkƒ Œé_rH½z‚Þ½£çðåR+VXÈÉÑ8í4yóªOÀœ96† T…>.4i¢Ó¤IìT?ƒÙ 4ó„%I’$é¯"›¾J’$IŠÕ;J¹ãƒÍT†5¦^šË%-Òþò°¤°PaÌíÚ%йsÓ§Û(.>±møý`µ+=g2áKR’ !A>Ê}¯ÝÙÙÆÊ…6mtrrÀd¢ª4äpII“Éè²fM9/¼PÁš5å dëÖØ¯s›M°¿Jûöfͪ@øî;36Xдè°dÿ~…9sl1Û˜5ËJ¿~A.´’Ÿ¯Ò©S<<àdÀ7½zűo_ìg¨ëÄ#FøyàgT´e‹‰¼<–Ã&wîf÷n:%Э[<íÚ%°p¡•Å‹-lÙb¢¤DeÚ4Ï=g#Œ=§GÀ‹/Ú¸÷^_mæƒl\uU\T×ÄD½ÆMY%I’$Iúg—’$IÒ*¤é<¿n-ßIûúñ<ysšÕ‚~%šo½eåµ×ì„B ^¯ÂرN~øáÄ_&% Ö¯7sÛmÑwïÇxýu+Û¶+M޳›šª“™©3rd€Ë.3¦Ûüü³J^žÑ¬´{÷ÐaÏ6Vw¤§ïײ¥Î5ׄiÙR')IpÎ9GtÈ’–&°Xt|ÐO¿~nÞyÇÆÊ•nºÉÍüùÖ¨f¯v» --v%Ef¦ÑÇ aCM›ÌQå@;v˜øâ‹Øó•˜¨Ó«Wˆ§Ÿ®¤_¿ “&UÒºµF^^ìeǾ} &Sõ¾ágÐ >Ÿñ>š¦ðàƒŽƒLõóæÎµQRR³À­´T©§|ˆ×«°y³‰fÍt@ðØcþ£U’$I’$ýsÉ’I’$é³ÏdüŠì, pW—ú\R Jp)-娣[ßzËJ·n‘7éÌÌôédÛ6W^bÓ&3M›j”—+¸\:O=e#5ÕP7ÖY¹ÒB«VÆóÓ¨‘ uëÌÜx£ GÅå¼ürÏ=çcÇŽÛ·›èØ1Bf¦3ê÷ìlO?õðÄŽƒ“{ddhLšägãF3Ñ3eŠƒ‹/“‘aII0jT€+,U“kun¸!H÷îqX,‚‰+yôÑêR ÎÃÜv[€-t~úIEHI1FçäDX½ÚB‹š7×HLÔéÝ;Ä+¯T F¸å– ^¯`Ô(‰‰Fs×’’è`E×ÊË,ªVꤥU>.-…òrU…”—+öY,Ñ%B`<·ÿçœ!'G?áÆ¬’$I’$ý½ÉÀD’$IúC¬ÙQÆäÕ»H°›™zin­XUr8‡7ÖùÏ¢oÕJ;¡ç`â⌑¯½{»…ü|¿_áŠ+BœzjŸOáúëÝ\qEˆiÓ*iÓ&¡žo……JUXPY©0`€›/¿,§sgÎ?JVUaÇ•¬,‹. Ѥ‰Î;ïXéÞ=rÔ Š;µå¤“4V¯ö°h‘»zôS^ãÇûiÛV##CãôÓ#lØ`á²ËBôèÂå2&Ò|õ•ñ j,XPAƒ:99‚~ýBQï1lX€ÊJ…wß53w®‡CðÆ6Z·ÖèÝ;ÌÊ•&¬VHO׫F'ƒQÞ”’¢W•ó¨ªàñÇ}¤¥ òó† q²|¹³n¾9Èðᨭ©©‚‘#Œ]ý;X¯žN—.‘ª±À’$I’$IG’‰$I’ô» i:/oØÇ‡?ѵq"Ãjé— FöóÙg¼^ãF¼A+®ç•ÆèZŸ„PxñEŸ|b%7Wã©§ü<ô¿ßØÞ‚î¼3À˜1Æc³g[hÝ:Bn®‚ßoô*ñx”ª°äC O48~XFCÓ¡C]8pÞya.¿<ŽPHaÜ8ÁÇ{‰‹UÇpÏ=þ˜ñ¸N'4k¦3thŸ†·³t©øxÁîÝ*-Zh¼õVº]æñÇôè© Kví2ñÔSvžxÂwÔ)6‚‰}<ôÌžmã±ÇªŒ3Ï óðÃ~Frðê«•Üpƒ‹ÒR‡C0yr%v»àßÿ®¤¬L¥W¯é„Bð 6–/7V E"ðÒKvÎ9'LÏžÕ%P \{m“OÖ˜5ËFn®F¿~A–H’$I’ô«d`"I’$ýnö{‚%Q()Q6,ÀsÏ=YÀtÆŽu²`—×_·‘—§2p`3Îcú• «¨Háwì¡PZj<öãfÊÊ`ìØ«W›iÔHç?ÿ‰ÝÈW_™¨¨à˜cN£ÉìäÉŽ¨Ç×®µ ë~¾ýÖÌÖ­a^y¥’`PAUÍši€àÿþ/D|êcóf…3Έ0r¤ŸõëÍÜõy¹ýv7+V”3}zº ,Á3ÏøbV€ü·[§cGädA~~ôj•¯¾2ó|ÒG$bÇ#„ñïHš¦b·kÔ¯¯óÃfn¼1ÈüùÑÅYgEض̈́ÆôŸâbÈÏW9p@%'GÇfÓÑ4c…Í‘<…øxÁæÍ&/¶²b…™‘#ýœrŠFƒ±Ïw¹­[Gز%:¸éÒ%û䃎ÕF’$I’$éHò²A’$IúŸ„4W¾ÜÇü‹èÚ(‘ag×Μ߃ǣ°r¥…«¯ *ØlÆÈÚÃefê à‚ Âääè8йs% XX´(v5ÄSOÙ™6Ídž 唕©$$O-Øðù`ï^•Å‹-¤¥éœ}v„W_­àÕW­ôêbêÔC«7ŒÔ£wï0V«1þ¸&>j$»v©Ì›g%9YP¯ž±ê¥^=¶m#$& z÷1¾!Œ â‚ Â\zi×]bÔ(c”ð‡ol³ ¦O¯¤Y³;GX¿¾:pŠ‹dgëìÛ§Ò·oˆÂB…;î«U'%åèá‘Ó ÷ß`ÍKUPÔ¶m˜ .¨Y&I’$I’ôkd`"I’$ýfû=AƯØÉŽ?wv®Ï¥-jw ÎÿÊá€SNÑ0™Œþ$yþùêÚ“Ö­Ãdeé\w]—KgTæ`2Áž=¦£Þøgg p»E{–|û­‰K/«ñ›•¥óÉ'î¾;HE´j!5U *dgã‹O„߯°w¯Â§ŸZ9å”|PAF†FF†ñópÚ·œ¬1p Æˆ~‚AØ»×ÄÍ7»ˆD,°Ð·o°*,£7˸qFòóì³>Æ·³r¥…Ü\Ç÷±p¡…?ô’–¦c³ÍtSSÅ1Ë{5ÒY¶ÌC~¾ŠÕ*HOr<°$I’$I¿ ˜H’$I¿Éç;ʘ¼f7q6S.É%7­ö—àü¯¦¥³fYIHÐÉÌ4VL¬YcæÔS#´o¯qþùñ”—+<ð€Ÿƒ$$«'** ²l™…@À:ââ·ßüÕ~"G*.†Ñ£Ua À¾}*Ë–Y¸ñƪj·Þê@»]0{v]»FŽYŽ@q±‚`µ †u°l™ €íÛMlÜhaùr‡V¬ìÞmbøp6› >^pà€1ò÷õ×+«ئ¦êlß{`;v¨ÄÇÃðáÆŒñ3th€`„ÜtS”ãyÙÙ5?'YY‚¬¬š…M’$I’$I5¥ÿ)’$I’T-¤éL[ŸÇ#ËwpzVÓ.?ù–’›«3hP€þýCtêAÁÝwHO×¹à7¥¥*º®ðØc Œ¯Ù¸8¸ÿ~?+V˜™;·‚áÃýŒçcÕ* œØêHD¡¨(öë{ï^ã±âb•±c° P¸í6……G_ùS\ Ó¦Ù8ãŒÚ¶MàÁ Âdª^¥QP ²õ{†ÃÆÏ‚Ac_„PˆDˆzMÆÆâC!Ë!]ºDøþ{ÉÉ‚9sltïÏ /Ø©Wª°D’$I’$©6+L$I’¤Ë÷%8Û‹ÿ%8G£ªP¿>€tœ~ºÆîÝ ÄñL…íÛUrsçeg †àñ(´hÁå‚’ÈÏ7&¸8ÔHr² _¿ &T¿@Q—_nŒC.(P€èϤ¸X=8ê8¶TåÇÍQã}ß{ÏFzºÎE…ùøc£œÆd$$è|ÿ½‰mÛŒÃC‡úyúéê}èÝ;DY™qlçŸæöÛƒ¸\‚^ð1j”G¥mÛ£F1ÂÁìÙ•˜L‚Áƒƒû¶Ôìø%I’$I’þ,20‘$I’jdíÎ2&­6Jp¦þCJpŽ¥¼*+ÌfHO˜Íд©Æöí&œN¦A0ÍšE¯IL4ÊzŠŠ&L° *\~yˆ¯¿VÉÈÐ ¡Q#úõ=öÖb‚D"0s¦¤$Á£úÈÉ1Þ++K`2 4­zYY:NçÑûz¼ûnl'Øeˬôï¬ Lž|ÒÇóÏ;xã ÛÁg&OöñÄ•¼óŽ•aôj¥a6 Î??L\œ±ŸW\¢k×0>Ÿ± ¥¸Xá½÷*ÈÎQö‘$I’$©v’‰$I’ô«Â§à|ðcg5J`X×ܶî×Çž= Ç;Y¾ÜB“&:¯¿^Á–-&ž~ºG!R0›‰2ii:ûö½A’“EÕ*’U«Ìäå™8õÔ]Ç¡!·Ü 1QЯ_¨*9šôtÁÈ‘n¾9ˆÙ iiÕ¡CjªÎôé• ꢲR!=]gæÌ 22ŽL´maÖ,[ÔcÍšití¦ÿ :…8ýtáÃÈÆŒq²n]9—\âë¯ÍìÜi"€Œ  t¼^•÷ß· )\}u·[°x±™¥K­4i¢1xpúõeX"I’$IRíõϽâ•$I’Žëðœ;:×粿A NAÂÏ?›ØµKåÌ3#dfê¸\5{mI 䪇»s§Ê*ÿú—“wß­`Ø0WÕxÛæÍ5^|±’‹/v‰(Üxcáø\‚¹smÜzk›nrqxùÌ+¯Øxï½ æÎµrï½Æ¼b]7Ê€Ždµ“uŽìtÂŇéرœÊJ…¸8AF†8投ž=üô’ÆÖ­FƒÖøx±cý4k¦óôÓ>¾þÚÄ‘e>>ŸíÚ¥òé§VfͲÆû½û®—{ïuòÝwÆeF(»w«¼÷^u0óñÇV–,ñ’™i„&PR¢"$&ê$$÷ã$I’$IúCÉÀD’$I:ªµ;˘¼z7n›‰)—4ãä´¦ µXAÂõ׻شɯÞßÊYgÅÓ¶m<×_Çž=Ç?¶Œ AçÎç¡~}ªB^žÂ”)6† s ÂoTи±q²O;-«¯V°l™…]»b/%¶n5E›8FîqhåÌÚµf^}ÕŽ¦)¡°p¡•™3mD"ÇÝuI’$I’¤?Œ L$I’¤*ùÞ Ã>þ/ ~:À³yè¼Æµ²_É®]*÷Þëäê«Ý<÷œíàdÐ4رCeôhºøì33¥¥Õ¯ËË‹ öïWºM½z‚ |jT‰(ìޭФ‰N×®á˜çwíæÛo«Ï_Ó¦v» AÓO3}z'Ÿl¼yÆ/¿\‰Ë%ÈÎÖ;ÖÉáe0•• 3fX™=ÛJëÖ:çœSý~¹¹ee Û·›HO×¹æcbΆ fFŒpRP`œ—;T<Ž{¼ ?lŒE3ÆÏw¸;ÖÁÝw˜3§‚ë® ²¿ÊäÉvÚ·ÝXÛ¶¶m«¾ÄXµÊµ׆¢žÓ¤‰FV–N$|ÛxváB OÝ.ÿ’$I’$©n«}WÁ’$IÒ_âP ŽËZ»KpöíSèÙ3Ž‚ã†ü›oÌüô“‰I“|”–ªœsN<^¯q£½h‘•矯äškB¨*tꤡª]¯¾ïÕ+D\\ÍJ?Ìf£çÇ_xذÁÌI'i4mªa³AÇŽvî4ÊpL&¸é¦ qq¢jåIb¢Îˆ(+S:ÔÉÎ& pòÉFÉKf¦FVC ûþ^¯ÊÒ¥&V¬°ðöÛ|ýµ™¬,‘#ý\vYee*Š"4(Ȉ&Mr°l™…­[Í\v™‹G •¥³p¡•–-#ôé:jãUŸúô ár öîUùúkãráž{ª/æÎõRP ²n™qã|<þ¸ƒ`P!'Gã…*ÉËSiÑ"B$¢ÐªU„6m4š7×øì3 mÚD¸é¦`U#ÚŽ#|ôQthÒ¦vÌÉ>’$I’$IEˆc-”•þnÖ­[Dze˨¬¬Än·sÚi§Ñ­[7’’’~õu‡7Ò¼ysœÎîQIú» k:¯nÜÇûÿ)âÌF ¯åSpÖ­3Ñ«W|Ôcª*Ø´©œO?µ0rdtÐÓ°¡Æ’%^êÕø|ðÅf†w²w¯Ê%—„xôQUÏŽßbß>…gŸµ³aƒ™»ï6ÆëZ­‚”Ay9lÞl&„SOÕªFéî٣ЦMG6R}óÍ zõ2V޼óŽ•Aƒ\€àì³#Üzk€ÌLAi©Â[oÙ°Z‘téaÚ4;Û¶E—½óŽ—þýÝääèÜv[5kÌ4k¦1y²£ê9ÙÙ:Ÿ|â‰:þ¢"…AƒœœzªÎwß™¸ë®×\㎠™Þ}×ËUW}I®¾:D¿~!RSõƒ%K‚HĘd±ÀX=ÚÁé§ëœvZ„Ý»Uî»ÏÏi§e;û÷+\ye›7Ç•¥³h‘‡œy‰"I’$Õ}>ŸÍ›7Ó¡Câããÿ©Ö¨½WÄÒïî™gžaðàÁtëÖ ¿ßÏsÏ=ǶmÛ1bÄ_½k’$ýEŸ‚3¸S6—·L«õSpÌGùæ2›~‘H쾺qc‚L÷î–,ñ¢ë'p»c^RcEE 7ÜPÝDöæ›Ý4k¦±`— \.ÈÊŠmÄa6CjªàÀèýÍȨîûqþù!,Ј‹x½*7Þ袴TÅj<ø ›Í%Z´Ðb€;Œ>"?^ÉæÍfî½×ÏÆfZ´ˆðÓOÆIÜ»WåçŸMQû¸k—ÊÊ•V:wöSZª°r¥QN3gNuc×sÎ a±Ìfãü.YbåškBddèlÛfâî»]lÙb"%Eç½÷¼|ú©…©Sý4j¤(x½ _|aæ´ÓŒ2ÌLÁxÉÏWÑ4AZš ¤DåÇš7×Á›oÚ0›¡oßõëë1Ó$I’$I’~o20ùiÓ¦ ݺuÀápн{w&MšDII ÉÇ£ IÒßκ]eLZe”à<Õ«ÍÓkg Αrrtš6ÕØ¾½:$80@r²à Ã<ò ŽL8 IDATˆÀï¯"† ñ“–½Rá÷š¾RV¦D5‘øïM””(Ç|HÄXóÄ>n½µz¬ð™g†ÉÉ©Lââ ¬Leÿ~7ÎIi©Q‚ ýEÖ­ó“£ãñ“m¢›Î :vŒpÑEA<•éÓ-Œë IÑ£ýÌšecÙ2c¿?WyyÆû,_náÊ+C<òˆƒI“|tîaÃ]»FÈÉÑyûm+o½UA8l¼~î\+ÉÉ:C†¸ªF+ŠÑX÷ª«Âlݪ’ž®óùç>üÐÊ;ïx)+ƒÄDã}ëÕÔ«gLÌ>ÜÉljˆÉ$˜6­’µk-|õ•™çŸ·³j•‡fÍ¢æJ’$I’$ýÞd`òrÿý÷Gýw·Û®ëx½^˜HÒ?Èá%8]&0üìâjq Α22~èåw¬lÚdæê«CtêÁé4JLV®ô0q¢ü|•›oröÙaLG,ÀÐucô®ª RSû¾ÛYZs´U0`LöY½ÚÌw¸¸ä’0|PÁ¶m*¹¹:¹¹ééÕ!Ka¡Â!N^xÁǾ}Ñ=Ú…P((0š~0ó쳕ôï裂@ÅlŒc¬æÐu<ØÉÚµF8²m›‰ÛnsñöÛ,[f&.ÎhÐ F#X¿ßè'b2élØ`âê«£Fxúi;'¤qß}~rs°dÆ ;3fØ«ö©G¡R–<ù¤Áƒ]UaÎ³Ï Æ÷“›«qß}úô ѽ{„ÌÌêãÎËS«Âc¿Æsòàƒ~¾úÊL  ðÜsv&Mòa‰Îª$I’$I’~Wuç YúÝmÙ²…´´46løWïŠ$I’oˆñ+v°­•நH!”ÁСA"‘`ÔM³Å¹¹:Ï<ã#‚„„ØmÃÇ[yþy;v»`ôh?:Eø-%ÅÉÉ:—_bþüèr•äd#Œ}öûââBú÷w“ž.hÙR#´j¥Ñ¤‰FZZô¶…òr•Š £T'?¿:4QÍwÝåB…5kÌLŸ^IJŠÀíÖIM¸\°{·ÊÚµÑ_õ¡Â¾} 7Ýdðà YY‚ýûfͲ±v­™óϳn—~ýÜŒá`èÐï½ç%.Î(#¸è¢0/¾X½Ê'.N0v¬ŸÂB•äd’c5I0¨±òEá©§ì<ñ„{îqqã!^xÁÆèѪ›£)Þ·O!)éðqÎFè%I’$I’ôG’É?TEEK—.eРAõ®H’ô'Y¿«œ‰«vÕ¹0¦¶|õ•™ûîsRT¤píµA† F­È8œÃaü;šåË­ÜsOõ±_{­›e˼œ~z g &1þýo?½z…Y¼ØÂ¹çF8ï¼0))¯>úÈÊÈ‘Nü~…¬,7߬à´Ó"Œ`ôh?üàÄn<ð€Ÿ~ýB¦\.A£F/¾hgÂwÝåÂëU0›ãÆù™7ÏŠFØõãf.¿ÜÍ×_{hذzf³ )Éh{¸“OÖ¹ì2?N§±’åºë\|÷‘<­^maÕªï¾ëÅçSøî;óæY¹öÚ0BMk³²}äeëV^¯BÓ¦K—Zh×.¤IF©‘Ûû¾åå N'´kaófK–X¹ë®êϲuk EUÇЩS„<¼b³ÅlZ’$I’$éw%§äüCMž<™† rÕUW÷¹rJŽ$ÕmaMçµûyï?…u²à¿ÿUéÜ9>jRËàÁ~ÆŒ `·ÿÊ PR¢Ð§›M›¢¿oß Ï>ëC]ÜPcB=;Ù±C¥}ûø¨ÿ&M4¦N­dÊ+WFד¬^]N«VƲ‰6oVQU2ÄEf¦ÎСŒ¯ì”cöáË/Ë9é¤ê¥••°u«‰O?53{¶={Lœ{nˆ_ôUõuÙ¼Y¥K—#—âV¬ðÒ½»±ìÆjäähÌ›ç%TPU…ädEGu0c†CeIãÆùèÚ5ÂæÍ*mÛjœ{n<Á`õ9èÝ;ÄI'EèÒEãöÛ]téæÙg}¸\ÕûüÙg† 3±Œsvß}¼^•Q£ŒAG[=$I’$Iµ‘œ’SwÕ­+féw1{ölÜnwÂI’ê¶C%8ÿ=àcP§lz×±œC–.µÄŒµ;ׯ]w£ú_Å"HLŒ­åHMÕÿ§°¢Ã0“ÃÀ_~1‘’"X³Æøú­__£}{ü|…/¾0Ѫ•N /¿lcòd;7ÝäÅ+QUp8÷ÞëäÇM|øa'=§}ûpÔ •ýû&Nt°h‘…Æu^z©›M•%bšàMY™‚ÉdLäiÕJ#?_ÅãQ™3ÇÆôévºwñøãþ¨°`ìXóæyyà'íÚE˜1£‚É“ìÙ£rÙe!n¹%È÷ß›1ÂàGT…%`LêÙ3Ìé§{‡ÜnädxíµJRRjôqH’$I’$ýÏd`ò3þ|Š‹‹¹ûî»øå—_hÒ¤É_¹[’$ý¾ØUÎÄÕ»pZLL¹$·N•à)++6äHK1Í\'.ÆŒ °zµ¥jq\œàæ›C¿ÇnFiÐÀ‡{x˜•¥ãt Z´ˆpÕUaÒÓ+V˜éÖMãœsŒ’ âb…_´ñÊ+•|ó™Ûow‘‘¡3fŒŸ´4#Ì™caîÜ žÞΆ &Î=7Ìw«zŒ”—ÃÈ‘N-2ƒª\yeë×—Ç”1¥¤Ú´ W•äœw^˜ŸVyà?ýdâ‘GŒpÃd<ÿ¼.]¬XaÅã pdÃ[PÐu…²2•åË­äæjŒégÿ~•4z²4mª1mZ%ÙÙ:YY±áÉÄÁ ¬úg2(ùciš1fzÑ" Á \rIXŽo–$I’þñd`ò²téRÖ¬YàAƒØ¾};›6m"--M&’ô7ѯmÜÇ»?Ò9Ç(Á‰·×íÿ»?ãŒiìÜyh\­àñÇ}Çìaòkrs5Ö®õðî»V\.Áå—‡ÉÎþý;ˆ¦¥fž|ÒŽ N§ÎìÙ^**^~ÙÇöí*·ßîÆë5‡yó¬|ô‘!àÖ[ƒÄÅ :uŠ`6 ^ÝFïÞq¬XáAÓ‰‰‚ìl?ÞGEÄÇucëñ(,^]òãó)üô“‰ "1û9gNeUÓ× .sÅ!ÞßÌ©§FxôѸªçjšÂèÑžxÂǺuÊËš4Ñøå—êäêä“54 N:Iã²ËBtî¡_?7€qœ¯¼b端ÊiÜXvm­MöìQéÖ-¾ê÷ñ‰'Ë—{hÙR~N’$IÒ?Wݾ‚–jÌï÷óÚk¯!„`ôèÑQ?»ãŽ;þ¢½’$é÷Và ñøÊl-òqûÙ\Ѫn–à)+KðñÇ^Ö¯7“—§Ò³§ñ×ïßÂá€fÍtî¿?ð?ïWq1èºBjªˆ)ÉIL  OŸ¥¥Æ”—>°0uªƒÊJ¸à‚0¯½VA¿~n‚A…_~1±m›‰æÍ#tíaÄ'¿ü¢rî¹f̨ä–[\¬\i¡GééÆä˜Š …øxÉ©*¸ÝàõFïÓá“f—™)6,ÀàÁàt¯¿öÚ0ë×ÇÎí=p@­*¡)+Sxÿý }ÔΗ_šéÜ9ƒú«Mƒvíдê“#„ÂÎ&7ŽÄl[úkh¼òŠ­*,cšÒO8˜>½2ªdJ’$I’þId`òáp8˜;wî_½’$ý•à8,j/Á9š¬,Á•W†ÿêÝŒ bãF3>êÀïW<8@¯^¡¨²ŸÏ˜“Ÿ¯¯±g™Ç«nœ½t©•ÔTÁ•W†˜3Çùâ÷ *+Æ´á°qóºb…¿n¿=Hf¦NZš`ñb C†¸¨¬THIÑ™3§‚ví´ª>,éé‚1c|Ü{oõï@›6a6€$I’ôÏ$I’¤:.¢ ^߸y£œÚ¨¨HÁãQ°ÙEE*W]åæPÿŽ{îqaµBß¾F/”pV®´0`€‹HDáœsB´h¬XaaÔ(?sæØˆ×iÕJã?ÿ1W…%‡¬_oføðÍ›kx< ·ÝæªêÁR\¬Ò¿¿›•+=U p-¸òJ£qê’%Z¶ÔèØÑ7NDzºÎÌ™Ü}·‹TZ¶ŒðòË•Øí‚+¯ VD.—1ùÂB…{ïu’™©óøãÆHäŠ U5šÈ¦¥ÕÝÀ¤´TaÕ*Jr²NzºNF†N|¼Õt·.±Xà–[BÌŸ=«ù–[uö˜$I’$é÷ ¯¨%I’ê°Â c Îß­§¶Ù½[¥?ü`æŠ+‚8ÑÍ\^zÉFÆ*“ÂB…;ïtV…û÷›èÙ3vuL“&~¿B¯^!ÆŒñ“‘……±7¨II‚&MŒ©_mªÚî!……*Ñ+’’II§Ÿ®ýæãv:á‚ "|ö™‡PHÁåªÙ„M3¦‚3¯¼bã•W*Ðu… 4rrtâ⎻‰?Œ× 6¿¹™éþý ÊÔ©vÊÊúô Ñ©S„3¬L™â¯³½YZ¶ŒðÚküûß‚A¸ë®çž[;VtI’$IÒ_E&’$IuԻ˙¸Ê(Áyê’\Nù›•àÔ^/Œíà‡Œ¯LG%==6„HLÔ1üVõû›êC¶l1‘•=ÆíÜwŸŸ]»T&LðU­ÉÎÖéÞ=ÄŠ‡îè&øªz¶¤¤TUDYNLÔ†8¿?“‰ƒ“lj¾ý¸8ÁE…Y¸ÐÊçŸ[øüs f³àË/=zXRP ðÍ7*qq°g‰¹s­4i¢s÷Ý6ÔczÏOI‰Ê¿þåäP`öÒKv,–n7\w›?ôþ¦fĵ„¸üò0]ºDÂhü¿ŽÚ–$I’¤ºN&’$IuÌá%8râqvCY‚óª¨PX³¦úü®ZefȳgW7É4™£GHH0žãv ²³uöî­¾ã=ÚÎܹ•lÝjÂëUÈÈÐyì1'_~ifãÆrii‚iÓ|lß`Û6gœ!#£:ŒII1Ê\|Љ¦)Øí‚—_®<ár›?R|Y'%¥nܘÙíFóÓµkð#V;ÖÁÒ¥/¶àñ(ôïÄl†-[TÜnAzº`öì úõs‘—g"1QgÂV+ âÄá0Î (¤§ë8Ñç"=]ž®Ñ¹sìJ–¸8èÝ;̹çz(-UHI$'W*µEV–Ñ ö‘Gü˜ÍÍxa¡Âš5^{­‚¡C£W`••©|õ•™úõO¬ì¤qãØÏ¤^=AI‰Ñ߯f«Ùqê:üò‹Êøñv¶m3qÕU!úö ÉÀB’$I’j‘Zvy%I’$Ë¡»Yer¯\ZÔ«%8ÅÅð¯9Y²Ä(1™<ÙÁ!~FŽ Ô‰é"II‚I“|ôêGq±šdfê$%éüë_AB!X»ÖÌÍ7»(/WILÔyýõJ:wްt©—Š ‡CP¯žÀòsÿýFIG\œàµ×*ÈȨùM²ÇcôK™<ÙqðÁøñ>n¼1„Óù«/ÙŽÝþÛ{yÔ„Ûm¬¶ù«TVa¢8Æ.ü–’“ / 3eJõê!³Yp÷ÝzÈÁøIM­ÙñîÛ§pþùqU¥[?þhf×.=æ;¡ÏQ’$I’¤?Ž"ı.#$Éàñxظq#Í›7Ç)¯â$éOѯµyßrFN<#ëX ÎÖ­*:%D=f2 ¾þºœœœºñ$„Ñ쳨HÅé4Vtš“—§Ð¹sBÕÍ9=<Ö®-¯*÷‡Ò—KCq±Ñã$)I'=]`±Ô|_vìPiß>!ªßÏj|ùeÍÎgQ‘Â’%æÍ³Ò¼¹ÆwuÜp]¶w¯ÂYgÅsÎ97Ö˜:ÕQõ³ädÏ>;ñ’€ýû!/Ï„Õ*p»*ññ‚úõE§Ê,Ybæºë¢ºX,‚M›ÊÉήÿ»$I’jÆçó±yóf:tè@||ü_½;Ò ¨;WÜ’$Iÿ@‡—àÜvFW¶J¯%8‡ bÓ4åàèܺqc¨(F‰IVVl9Fy¹–x½Æbì߯ðê«6>ûÌBçÎa  6~ÛôšŠ %*,…|¾ãŸOŸžzÊÎôéF/Ï?·°`•+<»Vƒ/¶P^®Ò»wˆìl‡ãh[®23‹{5ÊÎyçé<ûl%|`¥iS;îÖ(˜ÈÏW8p@Ál6 „Pxúi;K–XÈÌ<õT%mÛj'´2ähçÑfã„›ÐJ’$I’ôÇ‘‰$IR-µaw9OÖÁœ#¥¦ ÒÓu «ëZ·Ž_7Â’ã‰×±Z¡Põ®Ý.ˆ‹ƒn¾Ùņ Æ’M›Ì¬Xaåƒ~û$•ädøx=j OF†NBÂñ·WZªðúë¶¨Ç ÕƒS|"QïÙ£rî¹q”–ï3q¢%K¼1cŠ+*ŒÉ1š :Éɿ鰎*?öí3±r¥™-4ZµÒhРæçMU¡ys7Þðã÷CB‚ wïV+5êù²gÂ¥—Ʊk—ѵ}û0¯¿^ɨQ-2j™öîUèÛ×͆ š6­ùJÜ\œÝ»«;½ÞsOÍKz$I’$IúãÉq’$IµLD¼òå^Æ,ý…é.^èݼΆ%`ü•ÿ㽜w^ˆÔT+®2sfiiÃÔTñÿíÝ{|ÓõõÇñwÒ¤—ôBïWÊ»¢x¯0/ÜT¼ xAÅM:QP'SAÐÍûeÞÑ€ˆ¸©L…ÙD@*2˜- •ÒÒ6MšË÷ûû#Ph¸È¥%½¼žÇ{$M“Ó´•äÝsÎGÏ?_)›-ðõØl¦^xÁ©ädC¥¥–ê°dŸÿþ7L»wAZš©¹s+ª—vèàל9åGµÅë=tá®›5+¼:,‘$ŸÏ¢Ç‹Ôž=ûoóË/=þx”zõŠS¯^qºùæhÖN‹De¥4o^„.¸ N“&9tÝu±;6ZÇ~ÿññ¦22L9’Ãqä°¤²Rúé'«¾øÂ¦§ŸŽªK$é»ïìúüs»víªùòÉ0,Z¾üØŽ¸ÉÈ0õÙgåš8±RÇWéÃËuà UuºS:L )ªðhò¢<­/rjLïL ë’*kïÑ·X¤ví ½ù¦S••ÅÅ™Šn¸ùÏA¢¢¤Ë.ó¨O¯JJ{I’“MEEí[*j*øÚãY6ºÍ&õêå×üùår» eÕ­²s§E?ý¦mÛ,:ã ¿Âà ½ûn„FŽ¬Ò›oFVß.#ÃÐ)§<´cÇÁ?wÅÅVy8TfÕª0½ñÆþûZ¼8\¯¼â×#¸OøÿÎM™RsneéR» ­jÞüøÆ™ŽÆªU6 £tëûïA–,±«GŸ¾ý¶f–•eª²202UXh•Ó)µli(#Ã<ì÷;+ËÔ]wUÉ0NìgÔ ¨'¾ÝºGS¿Ú7‚Ó^ÓÀ2Ç Y3ÕØHCäpH-Z˜jÑ¢æù„Czõ¯íOúôñ*1ñÄŸ‡´4S‡ÛY²s§E#GFë»ïoêÃÂL½óŽS‹ÛtóÍMž\©… íêÐÁ¯Ûo¯:h‰$ÝpƒGÓ¦EèÀ°ç¦›ªª—ÝJÒ?ÿyp*²`A¸î¼³ê„Çõû-*/?øúéÎù5»vI&DÉ0,Z»6L}úø´vmÍ—J—_îQzº¡7Þˆ”aj9ã Ÿvì°hëV«~ÿ{‡V® <ïññ†>ÿ¼\§œ²TÇë wlR\œ©fÍK¨¯L Ä|†©w¿Û®Ù¹E:3;N÷÷mX§ààð¤gž©Ô%—xõùçvõïïÕ¥—zë|OÅúõaÕa‰}4J¿ÿ½[wÞ­®]}êÝÛ§ÌL¿²³½w£M¿fάÐc9ätJ·ÝV¥Ë.óÖßéÓǧ™3kîDéÒŧèècûúvì°T¿¼ïÔ ˜CçœãÓ×_ïÿ:óÝ0¿Æå üÿ¯-¬õù'!IÒüùvÍœY¡uëÂôõ×6Y,ÒÕW{tÎ9>ÅĘú¿ÿ+ÓÂ…vefòù,zë­H ^U–HRi©U?¥çž«Tf¦©’‹æÎµëñǪ¨Qüøã.EDjÞ\|žEO`ÉlرMú€ZÄ+r¡¢ ž\”§ÿ9uKïL o#8¨)-ÍÔÈ‘]u•G¿~ûÚ—wpËBAµzoLn®M¹¹6½ývÅaï#.NºøbŸzö,—avµ¿y¿à¯zöôjÕª@HžnhÂ÷1\­]kÕõ×ÇhË–0ÅÅzñÅJ¾WééÒK/9õ§?E)''\íÚùõÔS•‡ì†9œÀ>’0=óL„|>‹þð·N=Õ¯ØØCß>1ÑÔˆUzþù(ù|Ý|s´î½×­)S*e¯/%%pÛu묚1#B»w[´k—U]äÑúõ§ëׇ)'Ǧ¼Ú±Ãªqãö?9Ÿ®„Séé†F tå¬[¦G‰RQ‘U×\S¥+¯ôÈb1•”ôë¨]&"ßnÝ£§¾ÊWD#ÁAM†%EE•–ZÛiÖ¬vëì³}²XÌÇÿö·ååí»ljØ0Î>Ûwè;8À‘–󦧛š9Ó©¢"‹ªª,JO7Ž*Ш¬ Œ¡”•I7ÜS}RLY™U7Ý­•+ËÔ¢…¡–-M=ûl¥ÊÊ\ 7•™yäû-.¶(77LŸ|bW¯^~õéãÓ°aÑÚ½;pÿÿú—]óç—묳Ý¥.[%ŸOš93BÉɦÒÒLýío‘š1#\+V”)%%Бӣ‡¡­Õc9¹¹6]w]¥¦M«yŸýúù´t©]‡¨,\h×ûôÙgá>¼JÆî=r[zâ ‡ví²ª¸Ø¢V­ Ýzk•’’çXõ œdŽàôÎŽÓ8Fpš”-[¬ºúêmØ&‹ÅÔM7Uéܵ:¦“™ihúô Ý´vì°hÐ ¯žx":\r‰OK`¯ÉòåajÓÆPFÆñœ’bõ‰G{öHk×Úô ‘ŠŽ6t÷ÝUêÔɯ¼¼ýA‚ßoÑ–-µh¸œ˜¨ê/.Wà¨f¯7°<øÀ笲Rzùå=÷\  cÚ4©[7¯{Ì­ßÿ~_W‡Eýk¤ÞyÇ©˜Ãä“©©¦ÆŽ­RçΆöì±èÕW#”›øýܰÁZ}tpzzà9¾ï¾ÀÉ@;úÔ­›OãÆ¹ôü󑪪 „%ƒ{tÝu1JJ2túé5mÚھݪ͛­:÷\KuX²ÏìÙáš<Ù¥±c£Õ§OýúýzÈj¯Ðà$úÅéÑäFp—kÿ2ÒÄD³Æè„iî?¶·¢Bzøá(mض÷cÝ—_îÕyçÕÞáèhé’K|êÑ£L†!ÅÆšÕc(ÑцÞ{/\ãÇ;´o¡ëwºtÿýn¹Ý–êñ›ºXDºr¥MÇÇT?î'Ÿ„káÂ2ãÖܹš>=°DöPG$—”HÓ¦Eè©§¢TUeQ>M›V¡ììÀm‹‹-zå•ÈŸ³f]‰‰UŠˆ0UUxÌ£ùu³Z¥'ŸŒÔÖ­5;BZ·Þ¿ïÅá.ºÈ§… ËäóI±±ã‹ïºË­‹/öj×.‹V­²é¦›¢UUeÑ€>uìèW·n^­Ycß{¦î»Ï¥{ïuhÊ”Êêý)Š‹ œ¾#IóæÙk=0q:5vû¯ß€¦†ÀN’o·–驯ò#8¿m¯ÎéŒà4¿übÑ+¯Dèµ×oÖo¹Å­»îrkÏ«Þz+B.—tË-UjÝÚPy¹EË–üOïþc«ÕÀD ‡ ví²hâÄýa‰$ùýRNŽ]S§FÉã‘î¼Ó­K/õw×É¡ìÙcÑ_þô¸ÀÈé”N9ÅИ1UŠ5«Ç^´ys˜ÜQ}yõj›&Lpè•WœŠ• #°(5˜Û8йªJ’LÝwŸû°Ý%û¤¥™zí5§†Ue¥E’©;îp+=½f]V«”‘Qó9v8¤¬,CÓ§GjÆŒEDHúS¥ºuó)1Qš5˩͛­Ú²%°SæùçY÷î~y}ùeÍãxûô9|XRUe<ËÞ0áÄFw\.Ku]R`´¤wo¿FŽÖ¾0㈖Ãaêò˽ ?øäàãRQqèî‹%œL©%KÊ´s§eo¸±ß¾Ë³f•kÕ*›þö·¹ÝXåtº;¬VSx•“³¿à¤$C]»úU·aÙ IDATuá…y½Ý}·[:üzè`±H={úµlÙýò‹UÍš™JJ:ú]3©©¦Ü¥{ïuËb tìì{ÓÒL¥¥ùÕ®_{öXôÌ3•Õ÷]\,½ñF…¾þÚ¦âb«ú÷÷jÑ"»V¬°©cGŸú÷÷]¿¢ªJzóÍ@·Ž$-Zd×G…뫯ʔ•ÅŽöá;Ô¡_œ=™“§uENÝrF¦†we§1q:¥Y³j}sá…^½óNxPÂ0,zòÉHM›æÔäÉ.­]kÓöíVI¦†õ¨K—C¿‰ß³Gúøãp=ü°CN§E§æÓ{ï9ÕªÕ¡>”ÂB‹>ÿÜ®åËm2Ä£Îýjѧ-[/úõóêÿ°ëÀÎIzóÍHµli¨sg¿ŽCÜñøöæ?¶½¯2¶m³hìX‡Föè›olÕe³™2Ä£nŒé俆i‡®ºÊ£Gu)**pÄîØõÄ£x ðéã+TZ*­_oÓ–-a 3ôÕWa;¶J-Z˜Z¼Ø¦üúÝïÜjÖÌÐ+¯TÊ4í”™ðp©ysSÍ›_W‡Ã¹9œädíÝÁ²ÿ6IIR³f†""Lõîí“ÝnêôÓ}:çœ ¹ÝmÞlUvö‰w™[ôòË‘A×Yõý÷6eeÕN(@c@`udÅÖ2=µ8_v«…œF*<\:õTŸrrö/€°ÛM¹\‡b••ù|µichÁ‚2•”X!%&JH8ôýZuÏ=ûÇgÖ®µé®»z÷ÝŠÃ~Îvî´hĈýðCàŸû>ˆÐï~çÒ¼y92FëÖÙe²s"!ÁÐG…+-Í­-Ž®ëÀíiüÊ+‘òz¥;î¨R›6~Í™®%KÂÕ©“¡wÞqjΜpED˜ºöZ^=B±—ôtSee½ûn„îºË­¨(S›7[õàƒûâÍɱ+%ÅPT”©iÓoú¯¸Â£[nqkذX]z©W7ß\¥­[­zðÁ(}ø¡S‘‘ §k¢cGS11^ «ŸS|¼!¯×"§Ó¢‘#«ô›ßTžðc.³u¹¤ü|‹RRÌcÉhŒê`¥4m~ÃÔÛ+¶ë¡/~Ö)ɽ:ôTÂ’FÊn—n½Õ£´´ýkÖ„éÖ[«d±Þ¤÷ëçÕÛoWhÊWõŽŒ S:jÛöða‰X’Üù±d‰mï^_·c‡µ:,Ùçõ×#&͘Q¡E‹ÊtõÕUºùæÀîý_—©[n©Ò¼yáÚµëè_*lÞlÕo~§éÓ#4{v„úõ‹ÕúõaÚºÕZýØ=äP·n>Ýy§[ãÆEéóÏÃe·›š<Ù¥ØXC=äVjêþçsÁ‚ƒ·‘.X`¯qâÌ?þ®¸8)<ÜÔG:r^{-R#Gzjõô¡“Áj tžœvZ M§´Ô*§3ðýîÝ»vöÜ$&v²()ÉPB‚©ÓOÛûs8þú£ìºã‡æÍ³«¨ˆî8@ÓB‡ Ô¢]{OÁYWäÔÍgdêJFp½- -\X¦õëÃdšRÇŽ~5kfêÓO˵x±M-Z˜º÷^‡JK­:å¿Þ{¯B§œrt#5§œrðøEûöÆQŸh¼ D’¼^©ªÊ¢ .ˆSyyàg³O¯þýï2Íž%:ÿ|¯^y%R»vYªôý5^¯ôÒK‘òùöÿ¼›f`Ñëøñ.½óN dûv«ž|Ò¡ÔT§æÌqÊé”|>‹Þz+B&Déì³}š1£¢:èèÜùàç m[CÛ¶Õ rJJ,Z° L“';´s§U·ÜâVÿþ>……ôéõ^t´ôÈ#n-]j¯>9§{w¯ ¨q™ˆi̘*µoï׌ÊÎ6tÕU=ð€C~¿UãÆ94wn¹ÆshþüÀò•Y³"tÙe=÷œó¨º›h L –8‚ó—ß¶×it•4YY¦²²jþõ¿O¿ÒÒLõî'Äÿû_˜FŽÑ?þQ~TË[[µ24dH•æÍ ìI‰Š2õòËN¥¦]ˆÑ²¥_ï¾[¡ÒR‹fÍ ×7ߨuÑE^ååYÕ¹³Oùùa*,´ê›oìš2%BãÇ»5~¼Co¼#ŸOzê©J%']¸cš‡hªª,JO7ôÈ#•zöÙÀ)<×^[¥Îý5Ê¡qãª4jÔþß•¥KíúÛß"õôÓÑ“^½|:ã ¯V¬¤DÑѦÆwéî»÷ÏŒDD˜jÝÚ¯ìlS¯¾ê”ÇcQ||Ãê, Ö¦¡E‹Ê´m›U‘‘¦ÒÒÌ£þ¾ädSÇ{•˜hèý÷#uÕU1r»?§Û·[U^nÑüù5“¹O>±ëO²*!áèwèИÀ ò¦Þ[U¨™ßïÔÍc5®_+NÁ¤ÀˆÊ¾°dŸõëÃätZŽ*0II1õÔS•ºÿ~·vï¶(;ÛPZÚѽi.*²è…"4}z¤ââLÝ{¯K·ÝæV~­[¶÷d\.iÜ8‡ Ãoê™g*URbU\œ¡ädSÑÑ¿þXR`ŸËï~ã1Í}_³©{îq+55𱫯ö¨ªÊ¢—^ŠÐo«³ÏöiéÒƒW,°«´Ô¢¨¨À^“¿ÿÝ©‚«JK-jß>ÐqÒ¢…¡­[­jÓÆÐ‹/:«Ÿ—_[¶ÚdfšÊ̬½£„%+ËÔ¼yö¾gÒС†<&Yä¯Ûr¨WxE'`—Ó£'åéÇNÝtF¦®bÈÌ<ø/ñ))SPŽVRR`¿Ä±ðz¥iÓ"ôê«caÊË-ºï>‡.,×ôéázúéýÝ—^êѸqnµiãWR’$ÿÉ0íÛû5~¹ž~:0šsÏ=nuíè¼ «VY«Çs¶nµêŠ+<ÝOÇŽ¾KGSSM¥¦Ö¬é½÷*ätZ®Zí¼hj²² ½ÿ~…x 0Ê4|¸G<à’Å"uèà׆ ûgš:vô7øÎŽ §ï Ê4õ«ÀÎÓ¿m¯.Œà HZš¡›nrëí·Ívl#5Çk÷n‹fÎ ºÖ¢¹sõiSÍÝŸ~j׸”•uâc11Ò™gúõÎ;N™¦wðm’’L……™òû-Ú´)LÍš™:óL¯–/Œ4kfhÒ$—š5;òs” %$ðæýDÅÄH]äS÷îåòû¥fÍöwÍ™S®¿ü%Jß|cÓÙgûtß}.Â)@“B`Ç(xçþ¾-u”[8Ѥ$&J=äÒ­·ViçN«Z¶ô+%ŬóE¤ááRzº©üüš×·ní×·ßÿÓoQq±UË—ÛôÛßzzäçHbcÿ±ädCÏ?_©{ïuÈã±h‡fÍ*WII`äæÔSýjßž'“Å¢C~ß›77õä“•*/·(6ÖTTTŠ „Là;½š¼(O?î¬`G%Ð aõÉ8µó˜¦&MªÔÀ±òz?ŸÍ›ûuÑE^½õVDÛ¦¦*-µèŒVNŽG/¾X·§ DGKƒ{tî¹^•—[mª¤DÚ¹S:ã ŸÒÓë>PÂÑ‹Š , )"0€£´² LS¾Ê—4;ûµlY™/¶)1ÑÔé§û”™ijÖ,§ÆÒ×_ÛÕ­›O÷ÞëÖ„ …!óçÛõøãu ŠÃ!µhaJ ì%iÕJêу®P¿˜À¯ð¦þ¾w§WóXc @D„Ôºµ¡Ö­k.UmÙÒÐßþæTQ‘Usæ„ëŽ;¢µcÇþ½&æ!š vî´èÇôzµMýúyÕºµ_‰‰uý„ Á#87žž¡«º¥1‚ƒ/.Nr»M}òIx°¤_?¯âãkvzìÚeÑw:´pa`‰ìÓOGêµ×*tÎ9~%$0>/8ŒGpžÔ^]3ÁA㑚jêÃËõÆZ¶Ì® /ôêÚk«ê)*²T‡%™™†^yÅ©?¶ëÕW£tÉ%áQz:;.@ãC`AÁ陫ú1‚ƒÆ)3ÓÔ„ nUVº£Cv‹8û;ªþüçÀé6›6nøí·6­XaÓË/W*>žÐ¤¶lßnѧŸÚµzµMW^éQ·n~%%ñüp²˜ÀŠ^=ùUžÖî¨ÐèÓ3t5#8häìv©Y³Ã<3ÓP³f†ÊË-ЉQuX²Ï¿þeWi©_Ç…Ö3~`ß‹­–_IíØaÑ!±úé§Àó<{v„Æsép+2²v ™õ×oMÃÊmeº}Þzìqë©AíuM÷tÂ4yé馿Ï/WŸ>^……Üå`±þ×Tø|Ò¦MV=ôP”ÆŽuè»ïÂTVV{÷Ÿ—g­KöyñÅH7¡'€z‚Mžß05}õ½¿z#8@°0©cGCï½çTy¹E;úõßÿîC?l˜§IãXõ›ßÄ©²2`Ì®>¨ÐøjåþÝ‘ª*ÉàÔeN:MZq¥WSåé‡Õ+C#º3‚JB‚”`jΜr}ðA¸¾ùÆ®Ë.ó袋¼Gé©K~¿ätJÑч޿RfϯK,š<9J=z”+)éÄï¿}{¿âã •–îo2¤i…RÔ&š¬•ÛÊ4uQ¾¬Vé©AíÔ5#6Ô%õ^f¦©»îªÒm·U)**tuìØaÑûïG('Ǧ¾}}ºþú*edÔ}¨àr|Ç#™¦EÒ‰?~f¦©/¿,פI‘Ú°Á¦+®ðhôè*ÅòŸ'N:MÎ#8=²bõ #8À1±ZÒ°d×.‹nº)ZË–~o—.µë‹/lš9Ó©””º M®½Ö£¯¿¶iØ0¯¢£M}ñ…]—_îQrrí<®Å"µkg襗*UYiQB‚Yë‹eÀÑáŸ`M #8@ÃWRb©KöYµÊ®’K&ÉɆJO<¥òr‹n¸Á­óΫý%ŠŽ–¢£Ã ”L4«¶•iÊ¢|Y-ÒÔAíÔà°ªª¤;¬Z»ÖªÔTS-[JM­ßoàOFöYP¦nˆ–x°©SŠ•n»­ê¤íQ'Ç hôü†©÷Vjü¿~V›Ä(½:ôTÂàW¬Y¦3ÏŒÓÈ‘±ºøâ8­;ëG7Vb¢¡sÎñÖ¸îÌ3½JH¨û@gæÌpí Köy÷ÝíÞ]?žP{è0Ш8‚sC¯ è–¦0+ol€#ùå‹î½×!gÿïʲevýøc˜ÒÒjüäX%%Io¼áÔܹáÊɱ«o_¯®ºªööˆIVÖÁçû&%²³ €F‡À@£µz[¹¦|•'‹ÁŽ…×+mÞ|ð|Éÿþ¦B˜HRzº©±c«4ztà´ëIê™<Ø£—^ŠTQQàm6S=æâØ_!Žß0õþ÷;4}ÕõÈŒÕý[*Sp€£gê’K<š7/â€kMõíë=ìç„‚ÕXŽz25onjáÂ2åä–Ì^z©W™™w€†À@£²»Ò«'ÁNHLŒôøã.UTX´p¡] ¦&Mrr¥)jÞÜÔ 7xB]¨c&Gp¦ l§î™ŒàÇ+3ÓÔë¯Wª¼<ÐÉ‘–fr hRL4xŽàtόՃŒàµ¢Y3SÍš…º €Ð 0Рí®ôjÊWyZ³½B#{¦ëšîéŒàMЮ]y)77LƒÇè´Óšéºëb´i/oÀ‰ã€Ço˜úûªB=0£Z%DéÕ!§²¯h¢vì°èòËc´nM’EË–Ù5bDŒvî$<'†‘ J‰Ë«)‹òõýörFph×.«ÊÊjþýgãÆ0•—[”–f†¨*Иh0¾ß^®)‹òdJš:ˆSpH11¦$SÒþà4"ÂTDa 81Œä¨÷ü†©é« õà¿6ªEB$#8ª%%ºî:OëzÈ¥ädpbè0P¯8‚s}Ït]Ë€½~ùÅ¢+ÂtÑE^ îQ^žU§ŸîSV–©¨¨PW:õÖ#8S¶S,ºJ€¦¦¤Dr:-²ÛUc'‰Ó)=÷\„^}5Œ4kf謳|ºäâãCU-hLÉPïø S3VïЃÿÚ¨ìøÀa Ðôäç[uà 1êÚµ™.¹$V_&·;ð±Ý»-zóÍÈêÛîÙcÕ_„«  ,DՀƆõJ‰Ë«©‹òµš I+.–n¾9Z«V^ªäç‡ièÐX­X±G-Z˜2M‹|¾ƒ?Ïã9ø:€ãA‡ €zcMa¹Æ~´^›v»4e`;ì™AX4QÖê°d¯×¢$ññ†®¸¢f:’šj¨eKã¤Õ7:L„œß05kÍNý}U¡º¤ÇèÁþ­”ä°‡º,!d·›Š7TZZóo;©©@$.NzòI—N;ÍÐ'ŸØÕ¹³_ü£[™™œŽj €*uy5å«|­ÞV®ëz¤ëºŒàRSM=õT¥n½5ZRà¿ —^êQzúþ@$-ÍÔÝw»5j”[‡8Ô*!³¦°\O.Ê“aHOl«žYq¡. @=a³I_ìÕ·ß–iõê0µn·IN®ÙA&%%…¨HШ˜8é ÓÔÌïÁpd±±Rl¬¡víØKN>'#8'Mna¹&/Ê“ß&l«^Œà¨§LÔ9Ã45ëûzoU¡NKÑø~­”Í€ú‹À@*uy5õ«|­ÚV®k{¤ëzFp4&êLna…ž\”'Ÿa2‚ A!0Pë ÓÔì5;õîJFp4L&jÕ#8×tOÓÈžŒàhpLÔš#8—´U¯æŒàh˜Lœ0Ã4õÁšš¶²PÓb4¡?#86'¤ÔåÕS‹óµ²€ €ãöÃŽ MÎ ŒàLº¤­Ng@#A`à˜àŒïßRÉÑá¡. j €cRêòêéÅùZQP®kÁÐH˜8jk÷Žàx÷ž‚ÀƊÀÀ¯2LSäiÚwÛÕ9-Zãû·b@£F`àˆö¸}zê«<­Ø{ Î Œàh¬¡.'—ÏçÓŒ3tÍ5×h×®]¡.õÜÚûÑzýo—K“.n«OÏ$,Ð$ÐaÒ„é…^PFF† Ãu9¨Ç ÓÔœÜ"½óÝvuJÖø­”€&„À¤ ©ªªÒwÞ©ââbýç?ÿ u9¨§#8ùZQP¦ÝÒ4ª#8š“&$;;[’ÅÁaý¸£B“ròäñštq[‘Í)8š&2LSæémFp@ Ðäíqûôôâ|}»µLWwKÓhFp€ÀhÊ~ÜQ¡É‹òTå3ôÄÅmÕ›D`4IŽàtLÖFp  ‰)Û;‚³|ïΨ^²1‚5˜4a¦i†ºœd?î¬Ðäœ}#8mÔ;»Y¨K€z‰À¤ ñù|zôÑGår¹$IùË_”œœ¬ûï¿?Ä•¡®¦©(ÒÛ+¶ëÔÔhMèßJ©1ŒàÀá˜4!6›M“&M u8ÉjŒàtMÕ¨Ó3Á€_A`4bëv:5)g³ÜŒàÀ1!0!Ã45wïNFpà˜˜L™Û§§ÿ“¯å[ÊtU×TfŽ Ј8‚óøEmtf Fpàx˜€išš»¶Ho}»]R¢5a#8p"L€®ÌíÓ_þ“¯e[Ête×TÝÈœ0 ûoQ`Çå5ôØEmt#8P+L€ˆ¨[&@4ïÇ_ôúòíŒà@!0 ’Ô">R§7 u)Ð(YC]€ce#,€:D`„À  @€ &AL‚˜!0B`„À  @€ &AL‚˜!0B`„À  @€ &AL‚˜!0B`„À  @€ &AL‚˜!0B`„À  @€ &AL‚˜!0B`„À  @€ &AL‚˜!0B`„À  @€ &AL‚˜!0B`„À  @€ &AL‚˜!0B`„À  @€ ¶P€“+77WsçΕaŠŽŽÖ-·Ü¢äääP—@½B‡I’——§gŸ}V7Ýt“üqõêÕK'N”Çã uiÔ+&MÈüùóÕ©S'µlÙR’tþùçËétjÙ²e!® €ú…À¤ Y¹r¥:tèP}Ùjµª}ûöZ¹re« þ!0i"¼^¯***[ãúØØXíÞ½;DUP?±ôµ‰(//—$EFFÖ¸>22²úc‡c†$Éív×MqÐHí{å÷ûC\ ŽI±¯³$8ôp»Ýus¹\’KcÇŽ?@7<&M„ÝnWllìAÝ$eeeJLL<âç&%%©S§NŠŒŒTXXX]– Šar¹\JJJ u)8F&MH¯^½´aÆêˆahãÆºñÆøyáááÊÈȨëò QŠu 8,}mB¨uëÖ)??_’”““£˜˜õéÓ'Ä•P¿XLÓ4C]Nž~øA~ø¡ ÃPtt´ÆŒCkAL‚0’„À §äàˆrss5wîÜê'·Ür‹’““C]j‘ÏçÓìÙ³õé§ŸêÅ_äûÛ-]ºT .”ÓéTdd¤zô衾}û*!!!Ô¥¡–¬X±Bÿþ÷¿URR"›Í¦ÔÔTõíÛWÝ»wui¨#Ÿþ¹Þyç=úè£êÔ©S¨ËA-š3gŽV¬X¡èèèêë‡î¿ÿþV…ºP^^®÷Þ{O¥¥¥*,,T\\œ®»î:uîÜ9Ô¥¡üá8èµVqq±ôç?ÿ9DUáX˜à°òòòôì³ÏjâĉjÙ²¥,X ‰'ê™gžQxxx¨ËC-(**Ò /¼ ŒŒ †êrPG^xá;V}ûö•ËåÒK/½¤7êüc¨KC-Y°`ºté¢Ë.»L’´páB½øâ‹z饗âêPÛvïÞ­þóŸ¡.uhôèÑaœÓéÔŸþô'1Bgžy¦ ÃФI“TPP@`ÒH$$$èÑG­qÝ3Ï<£ÓN;-Dáx0’ƒÃš?¾:uꤖ-[J’Î?ÿ|9N-[¶,Ä•¡¶TUUéÎ;ïTÿþýC] êP·nÝÔ·o_IRTT”  •+Wj÷îÝ!® µeĈ8p`õånݺ©¢¢Byyy¡+ uæwÞÑСCC]€°`Á%&&êÌ3Ï”$Y­VÝ~ûíêÙ³gˆ+Cm;vlËÊÍÍչ瞢Šp<LpX+W®T‡ª/[­Vµoß^+W® aU¨MÙÙÙJKK‡e5nãǯq9&&F†a¨¼¼[aaa:ûì³Õ¶m[}ýõ×!®u᫯¾R¿~ýB]Ž#98$»Ý®ØØØƒºIÊÊÊ”˜˜¢ªœˆ3f(&&FÇu)¨e>Ÿ¯ú¸$EGG«M›6ÊÍÍe©s#±zõjy<žêQ«}#9Ó¦MStt´n»í6¥§§‡²DÔ‘˜˜eeeiåÊ•êÕ«W¨ËA-p8ŠŒŒT«V­j\ß¶m[‚±FÈ0 -Y²„£„(V¯^½j´†¡7êÆo aUŽÇǬââbÝu×]’­–ËBÑðÝ~ûízýõ×eµG½^¯ ªOGBÃ7lØ0 6¬úò/¿ü¢ßÿþ÷?Û½ñƺñÆ«CP—Ë¥íÛ·s2R#Ó©S'mÞ¼¹Æu[¶lad£Z³fÒÓÓ•––êRpÉÁa 8PëÖ­S~~¾$)''G111êÓ§Oˆ+C]á´œÆéË/¿ÔÿýßÿiàÀúùçŸõóÏ?kåʕڲeK¨KC-)//WNNŽ ÃÏçÓüùóå÷û9º°ã¿××÷߯œœIN¢Ï>ûL‘‘‘êÝ»wˆ+Cmºì²Ë´uëV­[·N’´qãFýôÓOt6BŒã4l“qq?üðƒ>üðC†¡èèh3FIII¡. µÄçóéÑG•ËåÒ¶mÛÔªU+%''ëþûïui¨%.—K7Þxã!ß\ÝqÇt 4Ÿþ¹–,YR}ºY‡tÖYg©]»v¡. uà­·ÞÒÿþ÷?ååå)++KYYYºï¾ûB]jÉ’%Kôïÿ[eeeŠŠŠR—.]tî¹ç*+++Ô¥¡–­ZµJsæÌ‘$µhÑBýúõã8øFÆétêî»ïÖË/¿¬ˆˆˆP—ƒã@`„‘€ &AL‚˜!0B`„ÀÔPTT¤çž{No½õ–æÌ™£%K–ÈëõJ’fΜ©?ÿùÏ!®0ÀãñèÕW_Õ+¯¼rÄÛ-]ºT7Þxãq=ÆôéÓµ~ýú#Þæ³Ï>;®ûõ ¨æñx4uêT]ýõºùæ›uå•WJ’æÎ+Iºà‚ BY^ áááêÛ·ï¯Þîì³Ï–Ãá8®Ç¸þúëuê©§ñ6óçÏ?®ûõ›-Ô€úcÕªUr8JNN®¾îŒ3ÎÐ| #FÈ4MUVVjÆŒ*++SFF†¬ÒÒRÍ;W‰‰‰Ú´i“n¿ýv9ýãÿa2 CݺuSvv¶þú׿Êf³)11Qk×®Õyç§/¿üR÷ÜsÒÒÒôì³ÏjРAêÑ£‡>ýôSÙl6y½^sÎ9ÊÌÌT~~¾>ùäÅÆÆÊ0ŒC~>ŸO³gÏVee¥âââä÷û«?¶téRmÛ¶M6›M)))êÞ½»ž{î9………é®»îÒ† ôÑGé¶ÛnÓÛo¿­¾}ûª_¿~š1c†|>Ÿ"""”ššªhÅŠª¬¬ÔG}¤–-[ªW¯^úâ‹/TQQ!‹Å¢6mÚ¨{÷îZ»v­rsse³ÙTRR¢Ûn»­Î¿—àÄÐaª©uëÖ5®‹ˆˆPDD„òòòªosíµ×jìØ±Z³f ´jÕ*†¡Ë/¿\C† ‘ÍfÓÚµkµmÛ6 :T^x¡Þÿ}EFFjÈ!*,,Ô˜1côðÃkРAJIIQRR’âããÕ¶m[õéÓGK—.•išþøc†!ŸÏ'IZ¿~½ÆŽ+IjÓ¦¶mÛvÐ×±~ýzeggK’âã㫃• 6ÈjµV×”™™©mÛ¶©U«V2MSZ¹r¥FŽyÐ}†‡‡kΜ9²Ûíª¨¨PIIINIÊÍÍ•aÕ÷Ÿžž®’’1BsçÎÕüùóuÉ%—Ôb@ýD‡ ¨Ö³gOUVVj×®]Õ×}÷Ýw:묳+IÚºu«LÓ”$mÙ²E:uÒ¦M›4hÐ M:U;wîÔúõëÕ­[7ÅÇÇkðàÁªyóæU/ÑõWØÄ‰'†ºP?„……©Gš>}º~üñG}ýõ×r:5j”l6›þùϪ¤¤D………Z¾|¹Ú´i£3Ï> stream x+TT(TÐH-JN-()MÌQ(Ê X˜›ë˜˜›+¡‰©ž‰)˜“œ« ï™k¨à’Ô&õ endstream endobj 5 0 obj 64 endobj 2 0 obj << /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 877.0477 405.4005] >> endobj 6 0 obj << /ProcSet [ /PDF /ImageB /ImageC /ImageI ] /XObject << /Im1 7 0 R >> >> endobj 7 0 obj << /Length 8 0 R /Type /XObject /Subtype /Image /Width 1218 /Height 563 /Interpolate true /ColorSpace 9 0 R /SMask 10 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream xíÝë“Õ}?þ}bÿTQŃ<ÊòCWùÐ !ˆ›Œd cŒsûaJ\L°C°ãlÇ`ƒÀ\CÂÍBs !$,!0`,K .Bò÷S™Ÿ§6£>­îžîÓÛ¯-J5{zúœÏyõì‡}ïÌÎþå/> @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ ÐKçž{î©§žúo @€†*ßÇwŽün^Ѻˆ/™Ç{ì7> @€ U ¾ŽïŠ»øfÜšz)?pŠnñ' @€†*ßÇwŽün^Ѻ"‡Ú,í› @àÿ"»"Öì±€©{ @€ \@ŠìqžQzRäÀ{¦í @€H‘]köX@ŠÔ6  @€. Eö8Ï(½ )rà=Óö  @€¤È.‚ˆ5{, Ej› @€"{œg”Þ…€9ðžiû @€RdAÄš="µM @€ H‘=Î3JïB@ŠxÏ´} @€)²‹ bÍ H‘Ú& @€ÀÀ¤Èç¥w! E¼gÚ> @€€ÙE±f¤Hm“ @`àRdóŒÒ»"Þ3mŸ @@Šì"ˆX³ÇR¤¶I€ 0p)²ÇyFé]H‘ï™¶O€ EvD¬Ùc)RÛ$@€¸€Ùã<£ô.¤È÷LÛ'@€"»"Öì±€©m @€ \@ŠìqžQzRäÀ{¦í @€H‘]köX@ŠÔ6  @€. Eö8Ï(½ )rà=Óö  @€¤È.‚ˆ5{, Ej› @€"{œg”Þ…€9ðžiû @€RdAÄš="µM @€ H‘=Î3JïB@ŠxÏ´} @€)²‹ bÍ H‘Ú& @€ÀÀ¤Èç¥7-ðûßÿþÒK/=ã?zè¡Âé}ŠÜ±cǺ+¾xÜq_:öØø7nÇH}2ÛÂrÀQ @ M)²0) ÀŸÿüçsÎ9gëÖ­£½Ç§…‹;Enß¾ý dzynîðÜÜ_ææÍÍ=57#Él k³][‹ ‰€Y˜ PàᇾõÖ[ºñÅ"ã™Çˆ‘çÿ·in.Æ»mYÙÖ-‹Õ  @€H‘GM î0n¸aÆ çŸþÚµk¯¿þú÷ß¿pã‹;EÆKXGÏBÎO‘ñŒdŒwÒ Æ‹f[ظB7 @€Ã" “‚Á \vÙe×^{m„ÇÇÿìg?‹_,DXÜ)2~r~~ߎñn»b¶…uËbu @€@'RdaR08@x"rãÆ£ôÑGK–,‰tXÜ)2Û§ü²-¬“¾mQ @€@·Rä‘1ÁÈ0î¹çžË/¿|´÷?ü0Rdáì,î™í¯f[X· Üê @€N¤Èa&&»>R`ÿþý§œrÊæÍ›ãн÷Þ;ÌW´Æ{±Æ;²ÆÛéÄïBÆËYã߸Ã{´f[X'}Û¢ @€n¤È#Ó„‘Á ìܹó‚ .8í´Ó.ºè¢?üá…‹û¹ÈhGÙþYÆl 붇[ о€Y˜ H ,úÙ~²" @€@¿¤ÈTX0N P@ŠìW‹S- @€@ãRdaR0H % E6Þ…LH€ Ð/)2Œ("ûÕâTK€ и€Y˜ H H‘w! @€ôK@ŠL…ã ¤È~µ8Õ @€4. E&ƒRRdã]È„ @€ý"SaÁ8B)²_-Nµ @€ H‘…IÁ ”€Ùx2! @€@¿¤ÈTX0N P@ŠìW‹S- @€@ãRdaR0H % E6Þ…LH€ Ð/)2Œ("ûÕâTK€ и€Y˜ H H‘w! @€ôK@ŠL…ã ¤È~µ8Õ @€4. E&ƒRRdã]È„ @€ý"SaÁ8B)²_-Nµ @€ H‘…IÁ ”€Ùx2! @€@¿¤ÈTX0N P@ŠìW‹S- @€@ãRdaR0H % E6Þ…LH€ Ð/)2Œ("ûÕâTK€ и€Y˜ H H‘w! @€ôK@ŠL…ã ¤È~µ8Õ @€4. E&ƒRRdã]È„ @€ý"SaÁ8B)²_-Nµ @€ H‘…IÁ ”€Ùx2! @€@¿¤ÈTX0N P@ŠìW‹S- @€@ãRdaR0H % E6Þ…LH€ Ð/)2Œ("ûÕâTK€ и€Y˜ H H‘w! @€ôK@ŠL…ã ¤È~µ8Õ @€4. E&ƒRRdã]È„ @€ý"SaÁ8B)²_-Nµ @€ H‘…IÁ ”€Ùx2! @€@¿¤ÈTX0N P@ŠìW‹S- @€@ãRdaR0H % E6Þ…LH€ Ð/)2Œ("ûÕâTK€ и€Y˜ H H‘w! @€ôK@ŠL…ã ¤È~µ8Õ @€4. E&ƒRRdã]È„ @€ý"SaÁ8B)²_-Nµ @€ H‘…IÁ ”€Ùx2! @€@¿¤ÈTX0N P@ŠìW‹S- @€@ãRdaR0H % E6Þ…LH€ Ð/)2Œ("ûÕâTK€ и€Y˜ H H‘w! @€ôK@ŠL…ã ¤È~µ8Õ @€4. E&ƒRRdã]È„ @€ý"SaÁ8B)²_-Nµ @€ H‘…IÁ ”€Ùx2! @€@¿¤ÈTX0N P@ŠìW‹S- @€@ãRdaR0H % E6Þ…LH€ Ð/)2Œ("ûÕâTK€ и€Y˜ H H‘w! @€ôK@ŠL…ã ¤È~µ8Õ @€4. E&ƒRRdã]È„ @€ý"SaÁø–,YrÆ_?ž}öÙB¹cÇŽu+V|ñ¸ã¾tì±ñoÜŽ‘~µ‚¡U[á’U8¥ÕTa©ñf«jg•fk6 PS@Š,L ‡))ò¨?2Enß¾ý dzynîðÜÜ_ææÍÍ=57#ñÝuÍ/O§ÏH Â%«pÊŒŠŸ˜6UØæÍ›[xX¦V÷àŸ¸L>%@€‹L@Š/a= 9?EÆ3’1ÞɵE*Pá’U8å¨e4r‡TaóùÏ·ð°L­ãìÎ$ @€@žRd*, ÀG}»Þ»wïyç÷è£ ™"ãw!ççÇñíÏó«^U.Y…SÚqNö·ŸûÜø¡8ÿF³ËÔêͮҎ¤U @€… H‘…IÁàÀzè¡«¯¾ºáÈé阅7œLîYá’U8¥Í¦ ó\d;þV!@€Ã" “‚Á Üÿý×^{m!‘)Ò¯†õ®yV¸dNi‡%U˜ß‹lÇß* @`˜RdaR08@x9ëþýûcãñŠÖ¯~õ«Ï=÷\!‘)2ÞŽ2Þ 3ÞN'~2^:ÿÆmïÑšsG­pÉ*œÒŽ@ª°§Ÿ~º…‡ejõogûV!@€:" “‚Á lÙ²%ÞZçôÓOw×yüñÇSG¦ÈøÊï™ã)¡xmaü:Xü·}ÝIC[ø¢.Y…S^O{¦ K×YëÈsÛYåÈu @€ H‘©°`œ@¡@aŠìðKØÒ @€Z" “‚A))²åe9 @€Ü¤ÈTX0N P@ŠÌ­‰©‡ @ e)²0)$"[îQ–#@€ÈM@ŠL…ã ¤ÈÜš˜z @€Z" “‚A))²åe9 @€Ü¤ÈTX0N P@ŠÌ­‰©‡ @ e)²0)$"[îQ–#@€ÈM@ŠL…ã ¤ÈÜš˜z @€Z" “‚A))²åe9 @€Ü¤ÈTX0N P@ŠÌ­‰©‡ @ e)²0)$"[îQ–#@€ÈM@ŠL…ã ¤ÈÜš˜z @€Z" “‚A))²åe9 @€Ü¤ÈTX0N P@ŠÌ­‰©‡ @ e)²0)$"[îQ–#@€ÈM@ŠL…ã ¤ÈÜš˜z @€Z" “‚A))²åe9 @€Ü¤ÈTX0N P@ŠÌ­‰©‡ @ e)²0)$"[îQ–#@€ÈM@ŠL…ã ¤ÈÜš˜z @€Z" “‚A))²åe9 @€Ü¤ÈTX0N P@ŠÌ­‰©‡ @ e)²0)$"[îQ–#@€ÈM@ŠL…ã ¤ÈÜš˜z @€Z" “‚A))²åe9 @€Ü¤ÈTX0N P@ŠÌ­‰©‡ @ e)²0)$"[îQ–#@€ÈM@ŠL…ã ¤ÈÜš˜z @€Z" “‚A))²åe9 @€Ü¤ÈTX0¾h>þøãÝ»w:t¨‘I‘¹51õ @€´, E6’,L’•Àý÷ß¿sçÎQIÛ¶m[µjÕ’%KÖ¯_¿gÏžúuJ‘-÷(Ë @€ä& EÖfÈMàÌ3Ï|饗FU{î¹7Þxã®]».¾øâ›nº©~©RdnML= @€- H‘õc…rX¾|ù›o¾UEx\¶lÙ¾}ûâö /¼°fÍšú¥J‘-÷(Ë @€ä& EÖfÈMàä“O~ùå—£ª»ï¾ûÒK/•¹réÒ¥õK•"skbê!@€hY@Ь+Ì›Àµ×^{ÅWlÙ²eíÚµ÷Ýwߨ¼­[·Fº¬_ªÙr² @€@nRdýXa†ÜÞ~ûíÈñŽ:—\rÉFå=ðÀ6l¨_ª™[S @€@ËRdýXa† âïzìÝ»w…I‘-÷(Ë @€ä& EÎ"h˜s H‘¹51õ @€´, E.â¼ck³"[îQ–#@€ÈM@ŠœEÐ0g·¯¼òÊÁƒgTƒ™[S @€@ËR䌲†i;ˆ÷b}â‰'fT€Ùr² @€@nR䌲†i;8þøãwíÚ5£¤ÈÜš˜z @€Z"g”5LÛ¡@ü±È{î¹gFH‘-÷(Ë @€ä& EÎ(k˜¶C={ö\xá…<òÈ,j"skbê!@€hY@ŠœEÐ0g·'œpÂÊ•+—,YÿÆíñǪU«ê&E¶Ü£,G€ ›€Y?V˜!7GÓõK•"skbê!@€hY@Ь+Ì0()²åe9 @€Ü¤ÈA% ›­/ EæÖÄÔC€ в€Y?V˜aPRdË=Êr @€¹ H‘ƒJ@ÃÙì¡C‡â±}×]w}ðÁ£]öÙgû÷ï¯/ EæÖÄÔC€ в€Y?V˜!7}ûöwÞy§œrÊÒ¥Kßzë­Qy‘(¯¼òÊú¥J‘-÷(Ë @€ä& EÖfÈMàºë®Û°aÃÁƒW¬X1N‘Û¶m[½zuýR¥ÈÜš˜z @€Z"ëÇ 3ä& òõ×_ªæ§ÈÝ»w/[¶¬~©RdË=Êr @€¹ H‘õc…r8餓vìØUÍO‘>øàYgU¿T)2·&¦ @€–¤Èú±Â ¹ |ÿûßW´ÆìŒSä¦M›â Ê;î¸c!¥^}õÕK–,Ù³gOá¥È–{”å @€r" “‚Á^ |øá‡]tÑ©§ža0nœqÆq#~Y2Þ¦õ¨ûzæ™g®ºêªòù×^ûÅãŽ[·bE<ãYþwˆ»Å¿tì± <¥d ³U8¥¤€iu»ú´ÕŽîßNÍ%«”ª¶£©Îêvõ’R³-¬¤f‡ ÐwÎ{oçôý δ~)ò¨±Âú(OD>ûì³·ÝvÛÍ7ß|ûí·oݺu!»øä“OÖ¯_ÿî»ï–§Èÿ¾ì²CssOÍÍ}á˜c¢¿¥¾B·oßwØ<7wxnî/ss 9%5UŒW˜­Â)%L{¨ÛÕ§­vtÿvj.Y¥äPµMuV·«—”šma%5;D€¾ tÞ{;/ ïWpÖõK‘ î3ù—¹óÎ;c³GM‘‘ ã¿MssñTcê‹4EÒÝsüoù)©©b¼ÂlN))`ÚCÝ®>mµ£û·SsÉ*%‡ªíhª³º]½¤Ôl +©Ù!ô] óÞÛy}¿‚³®_ŠH>²Í£ üÏÿüÏW¿úÕøû O‘ñôb¼N5õE‡FÏBŽ#dÜ(?%5UŒW˜­Â)%L{¨ÛÕ§­vtÿvj.Y¥äPµMuV·«—”šma%5;D€¾ tÞ{;/ ïWpÖõK‘G î°8Þ|óÍ]»v¥örøðáo~ó›/¾øbÜ!n/ð¹ÈH…ñ ©/Ò84??Žo—œ’š*Æ+ÌVá”’¦=ÔíêÓV;º;5—¬Rr¨Úަ:«ÛÕKJͶ°’š"@€@ß:ï½Ð÷+8ëú¥ÈT¬0Þ_K/½4¾p&êôÑG/»ì²‰Áñ§0?þøÕýˆyâ‰'nÙ²e|‡ñxÖø½ÈQ$,b±ÙŸ¡U˜­Â) 6œnW¯¶‘vj.Y¥äPµMuV·«—”šma%5;D€¾ tÞ{;/ ïWpÖõK‘ãtàÆ¢ˆ øÎ;ïLlçõ×__µjÕÄ`êÓ>YþKŽÍ¾ž¿ÂlNi°át»zµ´SsÉ*%‡ªíhª³º]½¤Ôl +©Ù!ô] óÞÛy}¿‚³®_ŠLåãý(L‘>øàÊ•+¸©£¦Èx2"dù{´ÆÛ·Æânqçxîr!§”|½W˜­Â)%L{¨ÛÕ§­vtÿvj.Y¥äPµMuV·«—”šma%5;D€¾ tÞ{;/ ïWpÖõK‘ Œî–¿À}÷Ý·ö?"ÆßˆÝý{Ê)§ÄàøÃú»ˆ´ú{‘ ìKÑÿã‰ñŠ”øÕ†ø7nÇÈÏíêníÔ\²JÉ¡Lº]½dƒÙVR³Cè»@ç½·óú~gZ¿Y?V˜!xÍjüòc|D`ܸqãèöèßÇ{lÛ¶mÔ)2¾jfúUir @€9 H‘$ “d%)òÈß‹lªB)2熦6 @€¤È¦Â…y" E¶Ð—,A€ ³€9ìc›M H‘974µ @€´ E6.Ì3)²…¾d  @€œ¤ÈdŸ!oóã?Þ½{÷¡C‡A"snhj#@€hA@Šl$Y˜$+ûï¿çΣ’â­YW­Zï·³~ýú={öÔ¯SŠl¡/Y‚ @ g)²~¬0CngžyæK/½4ªêÜsϽñÆwíÚuñÅßtÓMõK•"snhj#@€hA@Ь+Ì›ÀòåËß|óͨ*Âã²eËöíÛ·_xá…5kÖÔ/UŠl¡/Y‚ @ g)²~¬0Cn'Ÿ|òË/¿UÝ}÷Ý—^z騼ȕK—.­_ª™sCS @€@ RdýXa†Ü®½öÚ+®¸bË–-k×®½ï¾ûFåmݺ5ÒeýR¥Èú’% @€r"ëÇ 3ä&ðöÛoG~ŒwÔ¹ä’K80*ïذaCýR¥ÈœšÚ @€Z"ëÇ 3d(×cïÞ½³(LŠl¡/Y‚ @ g)rAÜ‹X@ŠÌ¹¡© @ )rç[›…€ÙB_² @€@ÎRä,‚†9;øè£âÝužyæ™§ÿúñä“OÞ{ï½õ “"snhj#@€hA@Ь+Ì›@½U«VÅ»ëÌÿX¹råúõëë—*E¶Ð—,A€ ³€Y?V˜!7sÎ9'þÒÇ{ï½÷úë¯_pÁQÞÎ;Ï>ûì·Þz«~©RdÎ Mm @€-H‘õc…rX¾|ùk¯½UÅÛ´®Y³fTÞÃ?|ÕUWÕ/UŠl¡/Y‚ @ g)²~¬0Cn§vÚï~÷»¨êðáÃñÒÖÑŸüصkW¼¨µ~©RdÎ Mm @€-H‘õc…røîw¿û«_ýjTÕ5×\sã7Æ«[o½õÖ3Î8£~©Rd }É @€9 H‘õc…rضmÛÏþóQUo¼ñÆÉ'Ÿo³³bÅŠÍ›7×/UŠÌ¹¡© @ )²~¬0CæŸ|òÉöíÛ÷íÛ×HRd }É @€9 H‘$ “ G@ŠÌ¹¡© @ )r8ñÇN"[èK– @€ÈY@Šl$Y˜$g?þx÷î݇j¤H)2熦6 @€¤ÈF’…I²¸ÿþûwîÜ9*)Þi'þØG¼»Îúõë÷ìÙS¿N)²…¾d  @€œ¤Èú±Â ¹ œyæ™/½ôÒ¨ªsÏ=7þÒGü±È‹/¾ø¦›nª_ª™sCS @€@ RdýXa†Ü–/_þæ›oFU—-[6zwÖ^xaÍš5õK•"[èK– @€ÈY@Ь+Ì›@üÈ—_~9ªºûî»/½ôÒQy‘+—.]Z¿T)2熦6 @€¤Èú±Â ¹ \{íµW\qÅ–-[Ö®]{ß}÷ÊÛºuk¤Ëú¥J‘-ô%K @€ä, EÖfÈMàí·ßŽüï¨sÉ%—8p`TÞ<°aÆú¥J‘974µ @€´ EÖfÈP þ®ÇÞ½{gQ˜ÙB_² @€@ÎRä,‚†9±€™sCS @€@ Rä"Î;¶6 )²…¾d  @€œ¤ÈY s.b)2熦6 @€¤ÈEœwlmRd }É @€9 H‘³æìDà™gž‰?çKÇ¿©ú…I‘974µ @€´ EÖfÈD þäÅ_ÅÄßøH}Ô/UŠl¡/Y‚ @ g)²~¬0C&ï½÷Þ|ÅD„üíoû~ÑGýR¥ÈœšÚ @€Z"ëÇ 3ä&)òwÞ™QURd }É @€9 H‘3ʦíPà¶ÛnÛ¿ÿŒ "snhj#@€hA@ŠœQÖ0íb"[èK– @€ÈY@Š\¬aǾf$ EæÜÐÔF€ Ђ€9£¬aÚÅ* E¶Ð—,A€ ³€¹XÃÎ÷•ú‘óÇë³H‘974µ @€´ EÖfÈD õ7"ç×/UŠl¡/Y‚ @ g)²~¬0C&ã¿ùòË/å+_Ù¾}ûx$ç_þò—_{íµú¥J‘974µ @€´ EÖfÈMàâ‹/Þ¼yóDU=ôÐÕW_=1XáS)²…¾d  @€œ¤È 9Â)™ ¬X±b×®]EÆÈÊ•+'+|*EæÜÐÔF€ Ђ€Y!G8%sõë×ï{ß;|øð¸Î¸}Ë-·¬[·n~ík_‹ç/¼ðÂ[o½õí·ßn¤N)²…¾d  @€œ¤ÈF’…I†# EæÜÐÔF€ Ђ€9œøc§H‘-ô%K @€ä, E6’,L²ÞyçóÎ;ïŒ3Î8óÌ3ã°,ÜT†)rÇŽëV¬øâqÇ}éØcã߸#·’UJ5^Æ‘–¬^rèÈy*´³Jåò O̶æv kg•Bùjƒ½+¸ómD¬š³³¦(y,•šj w&ÐS)²0) À¡C‡>ýôÓØø'Ÿ|òo|ãá‡.DÈ-Enß¾ý dzynîðÜÜ_ææÍÍ=57#ñ·›RÉ*%‡, 5UÉê%‡R³Uog• …•œ’mÍíÖÎ*%þÓê]ÁÓnptÿ·ÙàTÕöâ¬E#PòX*9´h¶o#ʤȤ`p°ñ7A"Å{ºþö·¿-DÈ-EÆ3#?ÎÿoÓÜ\Œ—íOu´d•’CS-QíÎ%«—ª¶VáYí¬R¸tåÁlkn§°vV©|uŽ<±w¹……Œ4¸Í§ZHåJK%‡1ˆ­˜/ E&ƒÃØ»wïªU«â¯„<þøã)ÜRd¼„uô,äüÏHÆøü¯ôš·KV)9TsÑ…œ^²zÉ¡…̼Àû´³Ê‹Yàݲ­¹ÂÚYe×b!wë]Á ÙÔ‘÷ip› NudF%PòX*94("›²€™ Æ+°uëÖÓN;íÅ_,È-EÆïBÎÏãÛ1Þ`g+Y¥äPƒ¤¦*Y½äPj¶ ãí¬R¡°’S²­¹ÂÚY¥ÄÚC½+xÚ Žîßà6œªÚ^œµhJK%‡Íöm„@¹€Y˜ \àî»ïÞ°aC!Bn)²‡–¬Rr¨¼ù4r´dõ’C,=š¤U,8¦Ê¶æv kg•/Yï ®¶÷·ÙàTÕöâ¬E#PòX*9´h¶o#ʤȤ`pà7n¼ñÆ rK‘íüjFÉ*%‡Ê›O#GKV/9ÔÈÒ£IÚY¥Á‚cªlkn§°vVið’õ®àj{op› NUm/ÎZ4%¥’C‹fû6B \@Š,L (ðî»ïîß¿?6¾{÷îµk×nÛ¶­!·ïïÈo§¿ /gãvãïÑZ²JÉ¡òæÓÈÑ’ÕK5²ôh’vVi°à˜*ÛšÛ)¬U¼d½+¸ÚÞÜfƒSUÛ‹³@Éc©äТپ(" “‚Á <ùä“ãïEžþùÏ?ÿ|J ·_àñÿ²ø¡h¼º&~M#þÛ1Rþ…_áhÉ*%‡*,4í)%«—šv•’û·³JIe[s;…µ³J…ë’:¥w§6R>Þà6œª¼fG½@Éc©äТg±A! E¦Â‚q…¦H­Œ @€@›RdaR0ØGøÀüqTþÞ{ï:thF["ÛlPÖ"@€ÈP@ŠœQÖ0mû_þò—ãtĺK–,yçwfT€™aS @€@›R䌲†iÛX¾|y¼1N¬+E¶ÙC¬E€ 04)²ý°cÅ Ä{ãÜpà ›6mŠùàƒ>]ôQiÏE­IÚ/ @€À„€Y?V˜!x0¯[·nÙ²e‘"SõK•"'zˆO  @€†& EÖfÈJàðáÃ!ß~ûíU%E­IÚ/ @€À„€9£¬aÚ"Ezw‰¯tŸ @€hJ@Šì0ìXzFï¾û®¿ôÑT‹0 @€ )rFAÆ´‹UÀ+Z'zˆO  @€†& E.Ö°c_3"‡Ö$í— @`B@ŠœQÖ0m·xøá‡ã\~ùåñï¿ÿû¿úé§”$ENôŸ @€ M@Šl$Y˜$+ø*>ûì³W­ZµaÆ[n¹å;ßùÎ 'œ#{÷î­_§9´&i¿ @€RdýXa†ÜâÉÇo}ë[û÷ï¶oß¾ /¼0ÆÇ#•oH‘=ħ @€C"+§ 'f+°zõêmÛ¶M”#'žxâÄ`…O¥È¡5Iû%@€˜"+ä§d.°råÊ;wN#1>1XáS)r¢‡ø” @`hRd…á”Ì®ºêªë®»nþŸŒ%@€š€™s`Q[†RäК¤ý @€LH‘æ%å, ENôŸ @€ M@ŠÌ9°¨-C)rhMÒ~  @€&¤È sŠ’r"'zˆO  @€†& EæXÔ–¡€9´&i¿ @€Rd†9EI9 H‘=ħ @€C"s,jËP@ŠZ“´_ @€ )2Ü¢¤š¯¼òÊÁƒkN’:]Šœè!>%@€š€™ Æû+pòÉ'?ñÄ3ª_ŠZ“´_ @€ )rFYô üñ»víšQRäDñ) @€ÀФÈe Óv(pÅWÜsÏ=3*@ŠZ“´_ @€ )rFYô ìÙ³ç /|ä‘GfQƒ9ÑC|J€ 04)rAÃœÝ œp +W®\²dIü·Ç«V­ª_˜9´&i¿ @€RdýXa†ÜMÔ/UŠœè!>%@€š€Y?V˜aPRäК¤ý @€LH‘ƒJ@6[_@Šœè!>%@€š€Y?V˜aPRäК¤ý @€LH‘ƒJ@ÃÙì¡C‡â±}×]w}ðÁ£]öÙgû÷ï¯/ ENôŸ @€ M@Ь+Ì›À¾}ûÎ;ï¼SN9eéÒ¥o½õÖ¨¼H”W^yeýR¥È¡5Iû%@€˜"ëÇ 3ä&pÝu×mذáàÁƒ+V¬§ÈmÛ¶­^½º~©RäDñ) @€ÀФÈú±Â ¹ Ĉ|ýõ×£ªù)r÷îÝË–-«_ª9´&i¿ @€RdýXa†ÜN:é¤;vDUóSäƒ>xÖYgÕ/UŠœè!>%@€š€Y?V˜!7ïÿûñŠÖxƒqŠÜ´iSûìm·ÝvóÍ7ß~ûí[·nmªH)rhMÒ~  @€&¤È¦Â…y" ENôŸ @€ M@ŠHö±Í¦¤È¡5Iû%@€˜"› æÉJà7ÞøÑ~tñÅŸþùW\qÅwÞùþûï7R¡9ÑC|J€ 04)²‘da’¬6oÞ2þ®ÇøÃŸýìgñ«‘§vÚêÕ«_}õÕúuJ‘Ck’öK€ 0! EÖfÈM òã?üÃ?ÄìŒ ûôÓOã=ZÏ=÷ÜñHåRäDñ) @€ÀФÈÊi‰٠¬\¹r×®]å½þúëÇüÄ`…O¥È¡5Iû%@€˜"+ä§d.pÙe—=õÔSE>öØcßþö·'ç äì³Ï>ýôÓãMÆ9|øðü£ãÛRäDñ) @€ÀФÈq:p£ïûÿú±mÛ¶õë×ïØ±ã¯ûŸ{î¹x™ëöíÛKöøá‡~ôÑGq‡wÞy'‚äC=Txg)r¦M2®Úº+¾xÜq_:öØø7nÇÈLW4ù*\šÔ)©ñV2q·g+™ªäÐD=>Í\ u)Sã™o§ÛòZ·{évõxU( Â)Ý>\­Þ¸€Y˜ öQ`É>¸¯ë¯¿þ–[n)¼³ÙxO1ÿ dzynîðÜÜ_ææÍÍ=57#ñ¿ªñ}ÜèD Â¥Io~ÕàUN­Rá1S2UÉ¡N.‡E+ ¤.e³ËÊåõëÄf…¯¾Î7Þí^º]=ð+Pá”ί²" “‚Á> ¼¼€î+Þ‡Çs‘w›£NÏù¤.e³Ë|ö;ÓJR˜1>Óug1y·{évõð¬P@…SfqáÌÙ­€™ Æû+°iÓ¦ /¼ð´ÓN;ùÿ~œrÊ)囊7؉#'–ÜMŠœ]Ëò³ÍÙÙÖœ¹Â¥IÒì“>©Ub|Ú-—LUrhÚUÜ¿[Ô¥löaÙí[[=…ã­ÕÐÔBÝî¥ÛÕðBNiêb™')²$/8ÔSU«V]uÕU÷Þ{oünãÄGÉŽ>ùä“K.¹äÙgŸ-¹O’"g×¾üžÅìlkÎ\áÒ¤NiöÐR«Äø´[.™ªäд«¸·©KÙìòÛ=¶¶z 3Æ[«¡©…ºÝK·«‡a…*œÒÔÅ2O>Rdydp´?øÁyä‘i+ÿéOºbÅŠ3þú±aÆÂ¤ÈÙµ¯xg¿x÷Îx;ø]Èx­cü·½GëìÀ>s…K“:åé§Ÿnð*§V‰ñ…ïntÏ’©JM»Šûw+º”Í>,»Ýck«§0c¼µšZ¨Û½t»zV( Â)M],óä# E&ƒ½x÷Ýw×­[wÅW|ÞÇ÷¾÷½ø¬þ¾¤È™¶¯øSü„3^*¿sÿÆí™éŠ&_ @…K“:%5¾ÀJ&îÖàl%S•š¨Ç§™ ¤.ej<óít[ÞbBëv/Ý®¢ T8¥Û‡«Õ"ëÇ 3ä&pÖYgtÒI—]vÙÿ÷?®¾úêú¥J‘w! @€ôK@Ь+Ì›À7¾ñ-[¶Ì¨*)²_-Nµ @€ H‘3ʦíPàñÇ?çœsî¿ÿþøU—‰úUI‘w! @€ôK@Ь+Ì›À’ôGýR¥È~µ8Õ @€4. EÖf”€Ùx2! @€@¿¤ÈA% ›­/ Eö«Å©– @ q)²~¬0Cn¿ 9ÿÓú¥J‘w! @€ôK@Ь+Ì›@ú×"—Ô/UŠìW‹S- @€@ãRdýXa†üþøÇ?žþù¿ÿýïë—*E6Þ…LH€ Ð/)²~¬0C/¶oß¾aÆú¥J‘ýjqª%@€h\@Ь+ÌГO>¹~©Rdã]È„ @€ý"ëÇ 3ä&°ÿˆ?üá¿üå/׬YS¿T)²_-Nµ @€ H‘õc…r(|w+V<úè£õK•"ïB&$@€è—€Y?V˜!7—øˆ_Šü裩SŠìW‹S- @€@ãRd#ÉÂ$Ã"ïB&$@€è—€9œøc§H‘ýjqª%@€h\@Šl$Y˜$7={ö<ÿüóOñQ¿N)²ñ.dB @€~ H‘õc…r¸ï¾û–.]Zø;õK•"ûÕâTK€ и€Y?V˜!7ø»ÿôOÿôÁÌ¢0)²ñ.dB @€~ H‘³æìV`õêÕo¼ñÆŒj"ûÕâTK€ и€9£¬aÚn¾ùæ7Ψ)²ñ.dB @€~ H‘3ʦíPàí·ßþêW¿úâ‹/î?â£~URd¿Zœj  @€"ëÇ 3ä&Pø¾:£Áú¥J‘w! @€ôK@Ь+Ì›ÀËéú¥J‘ýjqª%@€h\@Ь+Ì0()²ñ.dB @€~ H‘ƒJ@6[_@ŠìW‹S- @€@ãRdýXa†A H‘w! @€ôK@ŠT²ÙúRd¿Zœj  @€"ëÇ 3 J@Šl¼ ™ @ _Rä ÍÖ"ûÕâTK€ и€Y?V˜aPRdã]È„ @€ý"•€l¶¾€Ù¯§Z @€Æ¤Èú±Â ƒ"ïB&$@€è—€9¨d³õ¤È~µ8Õ @€4. EÖf”€Ùx2! @€@¿¤ÈA% ›­/ Eö«Å©– @ q)²~¬0à¤ÈÆ»  @€ú% E*Ùl})²_-Nµ @€ H‘õc…% E6Þ…LH€ Ð/)rP Èfë H‘ýjqª%@€h\@Ь+Ì0()²ñ.dB @€~ H‘ƒJ@6[_@ŠìW‹S- @€@ãRdýXa†A H‘w! @€ôK@ŠT²ÙúRd¿Zœj  @€"ëÇ 3 J@Šl¼ ™ @ _Rä ÍÖ"ûÕâTK€ и€Y?V˜aPRdã]È„ @€ý"•€l¶¾€Ù¯§Z @€Æ¤Èú±Â ƒ"ïB&$@€è—€9¨d³õ¤È~µ8Õ @€4. EÖf”€Ùx2! @€@¿¤ÈA% ›­/ Eö«Å©– @ q)²~¬0à¤ÈÆ»  @€ú% E*Ùl})²_-Nµ @€ H‘õc…% E6Þ…LH€ Ð/)rP ÈfË^xá…K/½tÙ²e%w›uŠÜ±cǺ+¾xÜq_:öØø7nÇH¿ºŠjÇ ^ͧ—·¸o´#V²JêPj<.GÉ¡/V…UR§¤Æ¬¶5– 5—l?u(5^²z;§”PáP…š›]¥R5—¬^rhÚÙJ¦JJ§–nm¼óÂ:/ EÝ`a¦:ê)RdI^phP~øáE]ôÀt˜"·oßþ…cŽÙ<7wxnî/ss‡ææžš›‹‘øBNuãÙ 4x5œ*[®f kG¬d•Ô¡Í›7§¾ÆS§4ûå_a•Ô)%{iðj¦Vo–¥BÁ%…¥UKMU²ý §TØ~É)íP²JÉ¡’²›:T²zÉ¡Ôê©SJKNI­ÞÎxªà’y³…u^@j; Vaª…œ"E*(ÙìQÞ}÷ÝSd<ó±1òãüÿ6ÍÍÅxªÉÏV Á«ÙàTÙr5[X;b%«¤ýÝ1Ǥ¾ÆS§Äxƒ8VIR²—n npõ’©R,1ž:TA,5UŒ§j«pJjªjãíP²JÉ¡j;šê¬’ÕK¥–HRòXªpJjõvÆSÇø@ Hm³A™ S-ä)ò¨±Â%ÐmŠŒ—°Žž…œŸ"ãÉO5ãÙ 4x5œ*[®f kG¬d•Ô¡¿ùüçS_ã©Sb¼Aœ «¤N)ÙK·7¸zÉT)–Oª –š*ÆSµU8%5Uµñv (Y¥äPµMuVÉê%‡RK¤N)y,U8%µz;ã©‚c| ¤¶Ù L…©rŠ9¨ˆd³Gè6EÆïBÎÏãÛ1žj2Ƴhðj68U¶\ÍÖŽXÉ*©Cû¹Ï¿®ç߈û§N‰ñq*¬’:¥d/ÝÜàê%S¥Xbÿùi;Ljª¯°£Ôl +Y=µJµšS e»J…ÂR§”\—Ô)1ž+OÍÖN©Õ«í¥d›C>T‚\rhZ±’©R‡Jc©ÕSSÅxêPÉ*Ni°°X½Âl©SÆãRdaR084¥K—nÙ²å†nˆùé§ŸžuÖY¯¾új!B#)2~r~~ߎññ׿ìnt»zì«ófgkfm ¤¾”þösŸw•ù7J:Ljª’SJvšš­BaV©Vsj¡Ô^:_¥Ba©SJ®Kê”jÛOÍÖN©Õ«í%õ€øx rÉ¡iÑJ¦J*yŒ¥VOMã©C%«T8¥ÁÂbõ ³¥NK‘…IÁàÐFÏEŽwí¹Èq‹˜ÅÔOäJ~V6‹2ÌI ï©/¥’Ÿ‡§¶œšªÚWej¶ …¥ ŽñÔ*ÕjN-”í* KRr]R§ÄxJ¬d<5[;¤V¯¶—’mùP rÉ¡iÅJ¦J*yŒ¥VOMã©C%«T8¥ÁÂbõ ³¥NK‘ãààÆ.½ôÒ7ŽÞÿ}¿9n³¸‘ú퀒×íÏ¢ sè»@êK©äwsR[NMUí«25[…ÂRÇxj•j5§Êv• …¥N)¹.©Sb<%V2žš­R«WÛKÉ6‡|¨¹äдb%S¥•<ÆR«§¦ŠñÔ¡’U*œÒ`a±z…ÙR§ŒÇ¥È!G'{ <ùä“ñZÖ}ûöµó­ñÎWñŠñv:ñ»ñz³ø7n·ö­Ý®ͧóÆ Ð ½H})=ýôÓÓv˜ÔT1^(5[…ÂJVO­R­æÔBÙ®R¡°Ô)%×%uJŒ§ÄJÆS³µS@jõj{)Ùæ• —šV¬dªÔ¡’ÇXjõÔT1ž:T²J…S,,V¯0[ê”ñ¸9În \à¿øEü¹ÈÓO?ýÆoô÷"Ç-bF7¢¡ÅOÆâ%ñZýø7n—´¸Õ`Z‹@ õ¥”/Ùr…S*ÌÖÎ*%…U8ÔlÍ©*¬Òà)%S•Jí¥d<5[j<¦*9T²Pá¡§*œß`” —š–®dªÔ¡ÔxÉÒ%§¤¥ÆKdJNIÕVrJÉ¡ ³¥NK‘N¶?­@#ï®SþUé( @€œ¤ÈiC„û\@ŠÌ¹¡© @ )rà™Èö§"[èK– @€ÈY@Šœ6D¸ÿÀ¤ÈœšÚ @€Z"ž‰lZ)²…¾d  @€œ¤ÈiC„û\@ŠÌ¹¡© @ )rà™Èö§"[èK– @€ÈY@Šœ6D¸ÿÀ¤ÈœšÚ @€Z"ž‰lZ)²…¾d  @€œ¤ÈiC„û\@ŠÌ¹¡© @ )rà™Èö§"[èK– @€ÈY@Šœ6D¸ÿÀ¤ÈœšÚ @€Z"ž‰lZ)²…¾d  @€œ¤ÈiC„û\@ŠÌ¹¡© @ )rà™Èö§"[èK– @€ÈY@Šœ6D¸ÿÀ¤ÈœšÚ @€Z"ž‰lZ)²…¾d  @€œ¤ÈiC„û\@ŠÌ¹¡© @ )rà™Èö§"[èK– @€ÈY@Šœ6D¸ÿÀ¤ÈœšÚ @€Z"ž‰lZ)²…¾d  @€œ¤ÈiC„û\@ŠÌ¹¡© @ )rà™Èö§"[èK– @€ÈY@Šœ6D¸ÿÀ¤ÈœšÚ @€Z"ž‰lZ)²…¾d  @€œ¤ÈiC„û\@ŠÌ¹¡© @ )rà™Èö§"[èK– @€ÈY@Šœ6D¸ÿÀžzê©Ç{,¾p| @€¦@|?ß<Ø>… <÷Üsñ%ÏHú @€ 0Lø~8¾+^ø·ÐîI€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€·À /¼p饗.[¶lþ6·mÛvÞyç­Y³æœsΉ;Ì?èÜsÏ=ãŒ3Ö®]»sçÎñ¡GyäË_þòé§Ÿ~õÕW¿ÿþûãq7r˜êêôÑG7ÜpC<*N;í´ÿøÇ‡oÍÕSôëFáàé§Ÿ^¿~}\åË/¿|Ïž=ã}òÉ'7Þxã©§ž_ûwÝu×xýì³Ï<8Ô¹zõê·Þz+>½÷Þ{¯¸âŠÑ¸s˜öêÿð‡?¼öÚkãºÇ÷ßüæ7ã»ÊÑî\ýœ¯rIm…€wß}÷ÄOŒ¯ô8ñ׿þu\èñ 7ß|ó5×\_õ'£oÄÑÑ!€1QnL{õãç £†ÿì³Ï.]ºt÷îÝ®~.÷D©Ó^ýÑé?úÑ®ºêªø1Âx6_ûcŠݘöêûƯGW©Úˆïç§ÈxÊ)>o£’x¾é”SNÃOEýæ7¿9²Â›nºé?øÁhªyáWß7~ý½Ê*'ЂÀD3‰}ôÑH‚ñ ÆÑë]Ç5Ä7¿üå/ãuMþóŸãw¦î¸ãŽÑ¡øÆò?ÿó?#EÆÏ¨ÿô§?}ûÛßžøÅ™ñ nä&°ð«ÿûßÿ>~¶?–ŒŸ-Ä¿ñªW?·«Y¡ž#ñjö¯ýëñKp—]vY|ë?7ˆi_yå•H‘ñ…¿þ¿/6¿€Á—öLNYàÕŸ_íOúÓ 6ŒG\ý1Eïn,üêÇO‰ãiÇØàDŠtõ{wÑÇõêß}÷Ý£;ûÆoŒæG L4“—^z)þ׿û÷Œß‘ŒgãE,£³â÷%ûÛߎnÿ×ýW¼¾et;~ ùàƒŽnÇ¿‘@ãwgÆŸº‘³À¯~ü,:bEüŠýh/ÿöoÿOHn»ú9_ߣÖ6ñ˜¸¼lõñÇÁÑs‘‘"Gwˆ§,O:é¤Ñm€ ´}ºÀ«?ÞQ„ˆ³Ï>{ü¤wõÇ8½»±À«oŒ?;½iÞDŠtõ{wÑÇ/ðêÇý}ã7Fsƒ#&šÉ/~ñ‹q@ˆ;_ýõ÷ÜsÏè¬xÿÕ8:ºOX\pÁ£ÛßûÞ÷â‰ËÑm¿9rèË¿ ¼úñâÆx**ÞZg´¯çŸ>Þ¿wtÛÕï˵.¬sâ0ÿ>ñ}ãÊ•+ãÒÇàè÷"Ç?DÚ¼ys¿ó¯ÿú¯ñÍÃþýûãún¹å–Ñ¢®~eüNœxDIüããßx­xér¼+ã¸Èøèx)c<FïÑ:~€1Qïn,üêdzÏñÄÓ;ï¼3±GW¤GŸ.üê7ßÌÿ½HW,Ó» ¿ú¾ñëÝÅU0v⃉ñfñ4SÜ¿B5~/2^È?~ŒG¯gןÆÿDâ]tþþïÿ~ôÓÈÑ¡ÿøÿÿ½Èñû®ŒÏr#Ci¯~üô ~6-ñƒüÇ¿¸1¶æêgx}ZRê¿ o§ö¶Ûn‹Ÿç‰ð8þ{‘ã×$ŒŽzŒ•úrcÚ«ïÜÿˆGÅècü•د«ß—‹>®sÚ«?>1^Ñߌ?®þ|^Ü®põ}ã׋+«H @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ ¸âŠ+®¿þúñ=>¦püG*?üðÃïÿû'tÒ 'œpÝu×MüÚøKèßýîwãO^._¾üœsÎùïÿþïñºýì³Ïžzê©ãØð”SNùÍo~S¸Í÷Þ{oÉ’%[¶l#<òÈxÄ  @€X7ß|óUW]‰œ¯;}òÉ'G›ºí¶Û"®˜÷OSÞu×][ŽÁîÝ»7ž¬Œ;?óÌ3㣣ç"ÇŸºA€ @€‹CàÕW_]¶lÙûï¿ÿÜsÏÅ«RãÙÉѾ"]Æ+Zßú¿|ðÁx×o¼ñÆ5×\§¬Y³æ‚ .ˆùôÓOFŠŒß‹ê @€,õë×?øàƒ7Þxc$Çñ¦n¿ýöx§ñ§7âW)ã‰Ë8%žˆ’"'ˆ|J€ @€Å*pçw~ýë_gãmWÇ{ŒwÚ‰`¸iÓ¦ñÈüÛ·o£ñë£Á;wJ‘ó}Ü&@€ @€À"½7κuë&öÝ#^•OSîÞ½;füRägŸ}6ºOüÕøÉ[o½5Þõá‡>ûì³ãYÇ¿S÷ñŠÖ LŸ @€ @`1 Ä_ñÿ™Èñ¾"3ÞqÇguVüâäêÕ«¯¼òÊýû÷nÞ¼9^òá1Þœ'~{2^{ï½÷ŽFŠŒ'7ÇŸºA€ @€‹FàwÞ‰0ø§?ýiÑìÈF @€ @`¯½öZü‘Žo}ë[?úÑf1¿9  @€ @`1 œsÎ9ñë×^{íø|,¦ÝÙ  @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€@ÿŠÅÿ endstream endobj 8 0 obj 23498 endobj 10 0 obj << /Length 11 0 R /Type /XObject /Subtype /Image /Width 1218 /Height 563 /ColorSpace /DeviceGray /Interpolate true /BitsPerComponent 8 /Filter /FlateDecode >> stream xíÐ  þ©o( 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€þt%˯ endstream endobj 11 0 obj 3013 endobj 12 0 obj << /Length 13 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >> stream x–wT×ÇßÌl/´]–"eé½·¤.½H•& ËîKYÖe°7D"ŠˆV$(bÀh(+¢Xì "J F•ÌÆõ÷;'ùýNÞw>ó}÷žwçÞûÎ(!a¬@¶P"Žô÷fÆÅ'0ñ½D€6p¸¹¢Ð(¿h€®@_63u’ñ_ àõ-€Z®[„3™éÿïC‘+K€ÂÑ;?—‹r!ÊYù‘LŸD™ž’)c#c1š ʪ2NûÄæú|bOó²…<ÔG–³ˆ—Í“qÊó¤|”‘”‹òü|”o ¬Ÿ%Í üez6Ÿ“ †"Ó%|n:ÊÖ(SÄÑ‘l”ç@ ¤}Å)_±„_€æ ;G´D,HK—0¹&Lgg3€ŸŸÅ—H,Â9ÜLŽ˜Çdçd‹8Â%|úfYP’Õ–‰ÙÑÆÙÑÑÂÖ-ÿçõ›Ÿ½þd½ýäñ2âÏžAŒž/Ú—Ø/ZN-¬)´6[¾h);h[€êÝ/šþ>ä híûê{²yI—HD.VVùùù–>×RVÐÏë:|öü{øêù ¢‚¡[£°R¡Fá„ ”"MÑF1L1[±Tñ°âeÅ'Jx%C%_%žR¡Ò¥óJ#4„¦GcÓ¸´u´:ÚÚ(G7¢Ò3è%ôïè½ôIe%e{ååååSÊC „aÈdd1ÊÇ·ïT4U¼Tø*›TšTT¦Uç¨zªòU‹U›Uoª¾ScªùªeªmUkS{ ŽQ7UPÏWߣ~A}b}Žëîœâ9ÇæÜÕ€5L5"5–iÐèјÒÔÒô×iîÔ<¯9¡ÅÐòÔÊЪÐ:­5®MÓv×hWhŸÑ~ÊTfz1³˜UÌ.椎†N€ŽTg¿N¯ÎŒ®‘î|ݵºÍºôHz,½T½ ½N½I}mýPýåúúw ˆ,ƒtƒÝÓ†F†±† Û Ÿ©-5j4ºoL5ö0^l\k|ÃgÂ2É4ÙmrÍ6u0M7­1í3ƒÍÍf»ÍúͱæÎæBóZóA Š…—EžE£Å°%Ã2Är­e›ås+}««­VÝV­¬³¬ë¬ïÙ(ÙÙ¬µé°ùÝÖÔ–k[c{ÃŽjçg·Ê®Ýî…½™=ß~ýmšC¨Ã‡N‡ŽNŽbÇ&Çq'}§d§]Nƒ,:+œUʺäŒuöv^å|Òù­‹£‹Äå˜Ëo®®™®‡]ŸÌ5šËŸ[7wÄM×ã¶ßmÈéžì¾Ï}ÈCǃãQëñÈSÏ“çYï9æeâ•áuÄë¹·µ·Ø»Å{šíÂ^Á>ëƒøøûûôú*ùÎ÷­ö}è§ë—æ×è7éïà¿Ìÿl6 8`kÀ` f 7°!p2È)hEPW0%8*¸:øQˆiˆ8¤# ÝzžÁ<á¼¶0¶-ìA¸Qøâð#pá5#m"—GvGÑ¢’¢G½ŽöŽ.‹¾7ßx¾t~gŒ|LbLCÌt¬OlyìPœUÜŠ¸«ñêñ‚øö|BLB}ÂÔßÛŒ&:$%ÞZh´°`áåEꋲJ’Oâ$OÆ&Ç&N~Ï ãÔr¦RSv¥LrÙÜÜgIsKÛ–6žî‘^™>!` ª/22öfLg†e̜͊ÍjÎ&d'gŸ* 3…]9Z99ý"3Q‘hh±Ëâí‹'ÅÁâú\(wan»„ŽþLõH¥ë¥Ãyîy5yoòcò( z–˜.Ù´dl©ßÒo—a–q—u.×Y¾fùð ¯ûWB+SVv®Ò[U¸jtµÿêCkHk2×ü´ÖzmùÚWëb×uj®.Y￾±H®H\4¸ÁuÃÞ˜‚½›ì6íÜô±˜W|¥Äº¤²ä})·ôÊ76ßT}3»9uso™cÙž-¸-Â-·¶zl=T®X¾´|d[è¶Ö fEqÅ«íIÛ/WÚWîÝAÚ!Ý1TRÕ¾Sç–ï«Ó«oÖx×4ïÒØµi×ônÞî=ž{šöjî-ÙûnŸ`ßíýþû[k k+àäx\S×ý-ëÛ†zõú’ú…‡Eêjpjh8¬q¸¬n”6ŽI§¾ökÎ×:úçöŸð8wÝçúÅ7®Þœw³ÿÖü[·‡nón?¹“uçÅݼ»3÷VßÇÞ/~ ð ò¡ÆÃÚŸM~nr:5ì3Üó(êѽîȳ_ry?Zø˜ú¸rL{¬á‰í““ã~ãמ.x:úLôlf¢èWÅ_w=7~þÃož¿õLÆM޾¿˜ý½ô¥Ú˃¯ì_uN…O=|ýzfºøÚ›CoYo»ßž›É_õÁäCÇÇà÷g³ggÿ˜óü endstream endobj 13 0 obj 2615 endobj 9 0 obj [ /ICCBased 12 0 R ] endobj 3 0 obj << /Type /Pages /MediaBox [0 0 877.0477 405.4005] /Count 1 /Kids [ 2 0 R ] >> endobj 14 0 obj << /Type /Catalog /Pages 3 0 R /Version /1.4 >> endobj 15 0 obj (Mac OS X 10.6.7 Quartz PDFContext) endobj 16 0 obj (D:20110615031342Z00'00') endobj 1 0 obj << /Producer 15 0 R /CreationDate 16 0 R /ModDate 16 0 R >> endobj xref 0 17 0000000000 65535 f 0000030352 00000 n 0000000178 00000 n 0000030101 00000 n 0000000022 00000 n 0000000160 00000 n 0000000292 00000 n 0000000381 00000 n 0000024078 00000 n 0000030065 00000 n 0000024099 00000 n 0000027305 00000 n 0000027326 00000 n 0000030044 00000 n 0000030194 00000 n 0000030258 00000 n 0000030310 00000 n trailer << /Size 17 /Root 14 0 R /Info 1 0 R /ID [ <5238a165203e9127b37a7afecb60a410> <5238a165203e9127b37a7afecb60a410> ] >> startxref 30427 %%EOF pymc-2.2+ds/docs/_images/disasterts.png000066400000000000000000000413351204033704200201570ustar00rootroot00000000000000‰PNG  IHDRÂ3âiµ&sBIT|dˆ pHYsaa¨?§i IDATxœìÝ}]u}?ðÏæf„<7E‘°ºÄ„ºêk§@ËÓ ÖAk¡X©ÁZ'‚uj*þ”¥ˆD`|(¶Hà U"é ¨|*ÅÀ¸&ëh„àˆ Y’ ä‰lvïïä!¹7ì½çœ{¾¯× ²çî9ïï¹ß{Îå͹ç¶U«Õj@ÉË;dA@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@Æç€òúÉO~Ï>ûlLœ81ï(p@Û¶m‹C9$Þð†7ä…&R„Ñ4Ï>ûlìܹ3ÚÛÛóŽ´sçμ#EM3qâÄhooÎÎμ£À ¸#î@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$a|Þh¿ùÍoâßþíßâ·¿ýmDDœyæ™qꩧ未ãÚÞÞXÝו‘‘©T¢«§'ööFGGGÞñJ™Æ@¹(¨˳Ï>×\sMœþù1gΜ½?cì6lØž~z,^³&æGD[DŒFÄ?Ü,¹ë®–)Ê4ÊÇG#©ËÿüÏÿÄk_ûÚ½%XDÄ!‡’c¢òøâe—Å•kÖÄ‚Ø]Eì~a¾)">½fM\ÛÛ›[¶ƒU¦±P>®£.«V­Š]»vÅ¢E‹bË–-ñêW¿:Î;82eJÞÑZÞê¾¾X°Ÿe "âŸúú²Œ3&e åãŠ0êòôÓOG[[[|üã/~ñ‹ñÒ—¾4>÷¹Ïå«*##{¯žú}ãö,oe 壣.'NŒW½êU1eÊ”hkk‹·½ím±jժضm[ÞÑZÞH¥Õý,ݳ¼U”i,”"ŒºtuuÅOúÓ½¯Vw×ÅÆ˜uõôÄòý,[¾gy«(ÓX(Eu9餓âÑGåËw×?üácΜ9n˜ß {{ãc³fÅ}±ûª©Øóç}qɬY±°…n0_¦±P>mÕÿiÔð«_ý*–,Y7nŒ—¼ä%ñ¡}(f̘±ßÇ÷÷÷Çððptvvf˜²5 Ƶ½½±º¯/*##1R©DWOO,ìíŽŽŽ¼ã”2HÇÀÀ@´··GwwwÞQh"EM£ U(ÂÒ࣑$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@a$A@Æç€ÖqÖYgÅôéÓ÷þý}ï{_ôôô¼ u Ƶ½½±º¯/*##1R©DWOO,ì펎ŽFE¦Ä1‡Ê4k¥(c-J MŠ0Êu×]7æulذ!.<ýôX¼fM̈¶ˆˆ~8.¸ÿþXr×]þƒ˜jÄ*Ó<¬5–Å·ÜÿxÎ9¹µLûhM>Iæ¾xÙeqåš5± vÿ‡pÄî‰ø¦ˆøôš5qmoonÙh ˜Ceš‡µÆòÑsÎ)ÄXË´Ï€Ö¤£n•J%.\_|q|ó›ß|ÁëYÝ× ö³lÁžåp ˜Ceš‡µÆ²qݺBŒµLûhM>IÝn¸á†˜8qb ÅW\S¦L‰O<ñ ×SÙ{5Èï·g9H#æP™æa­±L¨V 1Ö2ís 5¹"ŒºMœ81""¦M›§œrJ<ðÀ/h=#•JT÷³ltÏr8FÌ¡2ÍÃZcÙÙÖVˆ±–iŸ­IÆ 222ííí/èw»zzbù~–-ß³¤s¨Ló°ÖX¦yd!ÆZ¦}´&EuÙ¶m[lÙ²%""†††â»ßýî úXdDÄÂÞÞøØ¬Yq_ì¾ $öüy_D\2kV,tÃljhÄ*Ó<¬5–«—-+ÄXË´Ï€ÖÔV­V÷÷IØëg?ûY\ýõ1<<‡zh¼ãïˆ?þã?>àïô÷÷Çððptvv>gÙàà`\ÛÛ«ûú¢22#•JtõôÄÂÞÞèèèhÖ0(‘FÌ¡2ÍÃZc)ÊX‹’~ßÀÀ@´··GwwwÞQh"EMs " ŠD– Š0’  Š0’  Š0’  Š0’  Š0’  Š0’  Š0’  Š0’  Š0’  Š0’  Š0’  Š0’  Š0’  Š0’  аmß¾=üñÍ; @fÆç€æºóÎ;ãØccŽ9&""z衸òÊ+cÇŽ1sæÌ¸ôÒKcúôé9§h>W„•ÜwÜ[·nÝû÷n¸!æÍ›W_}uL›6-–-[–c:€ì(ÂJnhhhï_k×®uëÖŹçžGuTœyæ™±råÊœdCVr‡vX EDÄŠ+böìÙ1uêÔˆˆ˜1cF<óÌ3yÆÈŒ{„•ÜܹsãöÛojµwß}w¼å-oÙ»lóæÍqøá‡ç˜ ;®+¹sÎ9'žx≸üòËcÆŒqòÉ'ï]¶víÚ˜3gNŽé²ÓV­V«y‡ ¹FGGãé§ŸŽiÓ¦eºÝþþþŽÎÎÎL· k`` ÚÛÛ£»»;ï(4‘+Â0nܸÌK0€¢Q„EXÉý⿈]»vå wа’»æškâþûïÏ;@îa%÷ì³ÏÆ+_ùʼcäNVr¯yÍk¢¿¿?ï¹S„•Ü>ðX¾|y|ÿûßÏ; @®ÚªÕj5ï4ϹçžÕj5vîÜ&Lˆ¶¶¶}–·µµÅÒ¥K›²íþþþŽÎÎΦ¬e`` ÚÛÛ£»»;ï(4Ñø¼Ð\çw^Þ AVr'žxbÞ Á=ÂH‚" €$(Â0::?þñãöÛogžyfïÏGFFbË–-9&ÈŽ{„•ÜæÍ›ãSŸúTlÚ´)¶lÙo|ãcòäÉqÇwĪU«â’K.É9%@ó¹"¬än¼ñƘ9sf|éK_ŠJ¥²Ï²Ù³gÇ#<’S2€l)ÂJnÅŠñÎw¾3ÆîÅ“&MŠ;vä {а’?~| ?ﲟÿüçÑÑÑ‘q"€|(ÂJîøão~ó›1::ºÏÏï»ï¾øêW¿'œpÂA¯ó3ŸùLœuÖY±qãÆFÅh:7Ë/¹sÏ=7/^û·»víŠë®».cãÆ±`Á‚8óÌ3j}>øàsJµùÉÿüOüŸ¿ú«èê鉅½½u_688×ööÆê¾¾¨ŒŒÄH¥rÐëÈj;Ye«VÉÙ(Eo=9Š’µ–VÉY2òÒJçÓVÊ 4W[µZ­æ‚æ+VĪU«bÛ¶m1eÊ”èîîŽ9sæÔzvìØ‹-Šüã±pá¸îºëbúôéû}|Ä7¿ðÉOÆñ±Y³bÉ]wÕ<Ñlذ!.<ýôX¼fM̈¶ˆ8¨uÔ£ÛÉ*ëXµJÎF)ÊxëÉQ­V ‘µ–¢ìÓF(ÓX /­t>m¥¬äk`` ÚÛÛ£»»;ï(4Q¥···7ï4W[[[¼ìe/‹îîî˜7o^üÁüA̘1ã ×sË-·Ä«_ýê8þøããë_ÿz¼õ­oÃ;l¿_¿~}ÄÃÇKøÃxEDt ÅO='qÆ·sÕ¢Eqñ½÷Æ›b÷I*öüy0ë¨G#¶“UÖ±j•œR”ñÖ“ãÁ{î)DÖZвO¡Lc€¼´Òù´•²’¯M›6E¥R‰™3gæ…&r0êòØcÅÊ•+ãíoû ^Ç‚ˆXÝ×Wóq«ûúbÁ×QFl'«¬cÕ*9¥(ã­'GQ²ÖÒ*9ëQ¦±@^Zé|ÚJYæS„%lݺu±víÚš«V«±dÉ’xï{ßãÇúiÚqQ©ù¸ÊÈÈÞÿSóB×QFl'«¬cÕ*9¥(ã­'GQ²ÖÒ*9ëQ¦±@^Zé|ÚJYæS„•Üe—]›6mzÞe<òH,]º´æ:~ýë_Ç£>ŸûÜçâoþæoâ¼ó΋ˆˆ¿ÿû¿Ÿýìgugˆ‘J¥æãF*•Ø_ÕVï:êшíd•u¬Z%g£e¼õä(JÖZZ%g=Ê4ÈK+O[)+Ð|а’[µjUìܹóy—}ôÑñË_þ²æ:Ž:ê¨øÊW¾7ÝtÓÞ"">ûÙÏÆqÇWw–åÑÕÓSóq]==±|Œë¨G#¶“UÖ±j•œR”ñÖ“£(Yki•œõ(ÓX /­t>m¥¬@ó)ÂöðÃÇèèhÓ·3÷EÄ%³fÅÂ:¾›aaoo|lÖ¬¸oÏï¾uÔ£ÛÉ*ëXµJÎF)ÊxëÉQ”¬µ´JÎz”i,—V:Ÿ¶RV ùÚª/ô†OÖw¾óøö·¿ƒƒƒ1}úô7nßÎóÙgŸgžy&N=õÔ8ÿüó›’£¿¿?øþ÷ã?ÿíߢ«§'ööÖýµÄƒƒƒqmoo¬îë‹ÊÈHŒT*½Ž¬¶“UÖ±j•œR”ñÖ“£(Yki•œõ(ÓX /­t>m¥¬äg`` ÚÛÛ£»»;ï(4‘"¬„}ôÑxôÑG#"âºë®‹w¿ûÝ1eÊ”}ÓÖÖGqDÌž=»i9úûûcxx8:;;›¶ hEXÆç€Æ;úè£ã裎ˆÝEØüùóãˆ#ŽÈ7@Îa%wë­·æ Ü,€$(ÂH‚",AÛ·oÇ}zÎ)šÏa%wÇwÄÖ­[÷þý†nˆyóæÅÕW_Ó¦M‹eË–å˜ ;а’Ú{Å×Úµkcݺuqî¹çÆQGgžyf¬\¹2ç„ÙP„•Üa‡CCC±bÅŠ˜={vL:5""f̘Ï<óLžñ2ãa%7wîܸýöÛ£Z­ÆÝwßoyË[ö.Û¼ys~øá9¦ÈŽ+ÂJîœsΉ'žx".¿üò˜1cFœ|òÉ{—­]»6æÌ™“c:€ì´U«ÕjÞ!h®ÑÑÑxúé§cÚ´i™n·¿¿?†‡‡£³³3ÓíÀÁˆöööèîîÎ; M䊰Œ7.ó  ha$ÁÍò°mÛ¶øÕ¯~Û¶m‹ÿýIØáá኷¾õ­9¦Ȇ"¬äúûû㳟ýlìØ±ã9Ë&L˜Ó§OW„IP„•ÜÍ7ß]]]ñþ÷¿?¶lÙ×_}\yå•ñ«_ý*®½öÚø‡ø‡¼#dÂ=ÂJî7¿ùMœuÖYÑÑÑÓ¦M‹ÁÁÁˆˆ8æ˜câŒ3Έ¥K—æœ а’›ûìX¹re|ðƒŒ»ï¾;þú¯ÿ:ÇtÙi«V«Õ¼C­;vÄÚµkãˆ#Žˆ©S§6m;ýýý1<<MÛ4ÂÀÀ@´··GwwwÞQh"ß™ C=4ºººòŽ) аmß¾=üñÍ; @f|4²äî¼óÎ8öØcã˜cމˆˆ‡z(®¼òÊØ±cGÌœ93.½ôÒ˜>}zÎ)šÏa%wÇwÄÖ­[÷þý†nˆyóæÅÕW_Ó¦M‹eË–å˜ ;а’Ú{Å×Úµkcݺuqî¹çÆQGgžyf¬\¹2ç„ÙP„•Üa‡CCC±bÅŠ˜={vL:5""f̘Ï<óLžñ2ãa%7wîܸýöÛ£Z­ÆÝwßoyË[ö.Û¼ys~øá9¦ÈŽ+ÂJîœsΉ'žx".¿üò˜1cFœ|òÉ{—­]»6æÌ™“c:€ì´U«ÕjÞ!h®ÑÑÑxúé§cÚ´i™n·¿¿?†‡‡£³³3ÓíÀÁˆöööèîîÎ; M䊰Œ7.ó  ha$A@a$a|Þh¼|0&MšsæÌ‰U«VÕ|¼oŽR +¡ë¯¿>^þò—Çe—]—]vYÍÇßz뭤ȗ"¬„>ó™ÏÄ!‡²÷ïŸþô§cÆŒ9&ÈŸ"¬„:::öùû¤I“bÊ”)9¥(7Ë/¹·¾õ­qøá‡ç w®+¹÷¼ç=yG(W„EIðÑÈZµjÕA=~Μ9MJPаºì²Ëêñ·Þzk“’‡"¬„–,Y²÷ßýë_Ç’%KâïþîïbæÌ™{¾zõêøò—¿_|q2§+¡)S¦ìý÷ÿøÿˆ³Ï>;ºººöy̼yóbãÆqÛm·Å¢E‹²Ž97Ë/¹_þò—ñ²—½ìy—Íž=;~ö³Ÿeœ а’ëèèˆo}ë[Q­V÷ùyµZ»îº+^ô¢å” [>Yrï}ï{ãꫯŽGy$æÍ›“'OŽÍ›7ÇO~ò“xòÉ'ã#ùHÞ2¡+¹×¿þõqÕUWÅwÞýýý±cÇŽ˜®¹æšØ²eK´µµÅüùóãÝï~wŒ_î)488×ööÆê¾¾¨ŒŒÄH¥]==±°·7::: •£(Yki¥±%GVÊ4Þ¢Œ¥(9²ÒX%‹}æyßi¥÷ 4O[õ÷¿NžÇèèhŒŒŒD{{{ìØ±#þéŸþ)N:é¤8å”Söû;ýýý1<<&mœ 6Ä…§Ÿ‹×¬‰ùÑ£ñ@D|lÖ¬Xr×]™¼!ª'GµZ-DÖZZi,Eyþ³R¦ñe,EÉ‘…”ÆÚ(Yì3Ï üN+½ò300íííÑÝÝwš¨ÒÛÛÛ›wН­­-*•JT«ÕxôÑGãþûïÓN;-¦OŸ¾ßßY¿~}ŒŽŽð1EvÕ¢Eqñ½÷Æ›b÷¡Øóç+"¢kh(n|ê©8éŒ3 ‘ãÁ{î)DÖZZi,Eyþ³R¦ñe,EÉ‘…”ÆÚ(Yì3Ï üN+½ò³iÓ¦¨T*¾T®äÜ#Œº Å{ßûÞ¸ôÒKãÌ3ÏlÙ+½êµº¯/ìgÙ‚=Ë‹’£(Yki¥±%GVÊ4Þ¢Œ¥(9²ÒX%‹}æyßi¥÷ 4W¹oðDCM›6-–.]«V­Š/|á 1mÚ´xík_›w¬¦©ŒŒìý¿¿oÜžåEÊQ„¬µ´ÒXŠòüg¥Lã-ÊXŠ’# )µQ²ØgžøVz@s¹"Œƒ6gΜ8ãŒ3â»ßýnÞQšj¤R‰ýÝ@otÏò¢ä(JÖZZi,EÉ‘•2·(c)JŽ,¤4ÖFÉbŸy^àwZé=Í¥ãikk‹ &䣩ºzzbù~–-ß³¼(9Š’µ–VKQrd¥Lã-ÊXŠ’# )µQ²ØgžøVz@sùÖHêòä“OÆÄ‰cÒ¤IñøãÇ•W^ .ŒÙ³gï÷wZý[#ã‚ÓN‹O¯Y bwk<»ß]’á7Õ“#" ‘µ–VKQžÿ¬”i¼EKQrd!¥±6JûÌó¿ÓJïA€üøÖÈ4(¨Ë~ô£X¶lYŒŽŽÆ”)Sâì³ÏŽ×¿þõüV/Â"v¿iº¶·7V÷õEed$F*•èê鉅½½™¾ª'GQ²ÖÒJc)Jެ”i¼EKQrd!¥±6JûÌó¿ÓJïA€|(ÂÒ £iÊP„EXÜ#¬„V¯^Û·oˆÝÿWktt4çDùS„•Ð?ÿó?Çš5k""âƒü`lذ!çDùS„•ÐÆcÊ”)yÇ(”ñy ñ^ô¢Åm·ÝÇ|DD¬\¹2¦M›¶ßÇÏŸ??«h¹q³üúñ7ß|slذ¡®ûƒÝzë­MÉáfù´ 7ËOƒ+ÂJhÞ¼y1oÞ¼¨V«qöÙgǾð…˜9sfÞ±råa%ÖÖÖ¶ÏŸ)sEXÉ]{íµÑÑÑ‘w €Ü)ÂJî%/yIÞ ÁG#H‚+°sçθçž{bÕªUñÌ3ÏÄäÉ“cîܹq 'D{{{Þñ2ኰ’Û´iS,Z´(¾ò•¯Ä®]»âˆ#ŽˆgŸ}6n¾ùæøèG?CCCyGÈ„+ÂJîæ›oŽÉ“'Çå—_“&MÚûóÍ›7ÇUW]K—.‹.º(Ç„ÙpEXÉ­\¹2Î9çœ}J°ˆˆ©S§Æ{ÞóžX±bENɲ¥+¹]»vÅ„ žwÙ„ bdd$ãDùP„•Üœ9sâßøFŒŽŽîóó]»vÅm·ÝsæÌÉ)@¶Ü#¬äÎ=÷ܸôÒKãÃþpÌ›7/¦N›6mŠ|0vîܽ½½yGÈ„"¬äŽ<òȸæškâ[ßúVüüç?­[·ÆäÉ“ãÍo~sœqÆ1mÚ´¼#dB–€iÓ¦Å_ýÕ_å Wî@a$A@a$A@a$A@a$A@a$A@a%÷‹_ü"víÚ•w €Ü)ÂJîšk®‰ûï¿?ï¹S„•ܳÏ>¯|å+óŽ;EXɽæ5¯‰þþþ¼cäNVrøÀbùòåñýï?ï(¹j«V«Õ¼CÐ<çž{nT«ÕعsgL˜0!ÚÚÚöYÞÖÖK—.mʶûûûcxx8:;;›²~h”hooîîî¼£ÐDãó@swÞyyG(EXÉxâ‰yG(÷ Š0’ KÀèèhüøÇ?ŽÛo¿=žy晽?‰-[¶ä˜ ;îVr›7oŽO}êS±iӦزeK¼ñoŒÉ“'GDÄ4É 7 IDATwÜ«V­ŠK.¹$ç”Í犰’»ñÆcæÌ™ñ¥/})*•Ê>ËfÏž<òHNɲ¥+¹+VÄ;ßùÎ?þ¹ÿMš4)vìØ‘C*€ì)ÂJnüøñ1<<ü¼Ë~þóŸGGGGƉò¡+¹ã?>¾ùÍoÆèèè>?¿ï¾ûâ«_ýjœp 9%ÈV[µZ­æ‚æÙºuk,^¼8Ö¯_›7oŽ®®®Œ7Æ‚ âCúÐsîÖ(ýýý1<<MY?4ÊÀÀ@´··GwwwÞQh"ßYr‡~x\vÙe±bÅŠXµjUlÛ¶-æÌ™ÝÝÝ1gΜ¼ãdF–€qãÆEOOOôôôä 7î@\–€_ÿú×ñ½ï}/}ôÑØ±cGL™2%fÏž§œrJL™2%ïx™pEXÉ-_¾<>úÑÆO~ò“8ꨣâ oxCtttÄÝwß]tQ<üðÃyGÈ„+ÂJî«_ýjœp qá…Ƹq¿ë=‡‡‡ã‹_üb,Y²$®¹æšdÃa%744gœqÆ>%XDD{{{œyæ™ñÛßþ6§dÙrEXÉuuuźuë⨣ŽzβÇ{,ºººêZϪU«bÉ’%±}ûö“N:)Î>ûìhkkktd€¦P„•Ж-[öþû»Þõ®¸îºë¢££#^úÒ—îýùêÕ«ãë_ÿz,\¸°®u¾ò•¯Œ+®¸"&NœëׯO|âñâ¿8N=õԆ秸ãÚÞÞXÝו‘‘©T¢«§'ööFGGGÞñ(€FÌ‘ZëÈjf±z¶áuG³å5ÇÁóÜì«UöG«äŒÈæ¼µ¶jµZÍ;uÖYgÔão½õÖƒÞÆç?ÿù8üðÃã‚ .Øïcúûûcxx8:;;zýφ âÂÓOÅkÖÄüˆh‹ˆÑˆx ">6kV,¹ë.of׈9Rk‹o¹%þñœsš>³˜ïõl£Z­zÝÑTEyÍqðœ—÷Õ*û£UrFds^/Òx!"b`` ÚÛÛ£»»;ï(4Q¥···7ï4Öœ9sâ„N¨ûŸ—¼ä%½¯ýëÑÓÓsÀ’kýúõ1::Ó§OËp(ˆ«-Š‹ï½7Þ»ßÄÄž?_]CCqãSOÅIgœ‘_@r׈9Rk‹~ðƒX¼fMÓçaó½žmò‘ì÷w|kd¹ ƧŸ^³&Äî}4v¿‰¹Ä·þ™#µÖñ™eËbÑ_þeÓçaó½žmD„×MU”×Ïyy_­²?Z%gD6çõ""|kd*a%÷ä“OƧ>õ©8âˆ#žóíÕj5ÚÚÚâø@S¶­+ŸÁÁÁ¸¶·7V÷õEed$F*•èê鉅½½ÞÄ™#µÖ‘Õ<Ìb;õlÃëŽf+ÊkŽƒç¹ÙW«ìVÉ‘ÍyŠD–EXÉ-\¸0¶nݳfÍŠöööç,okk‹E‹5eÛŠ0Z…", n–_r“'OŽ÷¿ÿýqÜqÇå Wа’;ýôÓ㦛nŠ“O>ù9üÿæÏŸŸq*€ì)ÂJî_þå_""âË_þò~së­·f” ?а’Srì6.ïW„•ÜÆÇ'€(ÂJn%×SO=W]uU\|ñÅ'ȇ{„%êÅ/~qœþùqË-·ä а„uuuŪU«òŽ ,¹-[¶<ïÏ·oß?úÑbÜ8](EXÉþùû]6~üø¸à‚ 2LEXÉ}ò“Ÿ|ÞŸ···ÇË_þò˜8qbƉò¡+¹¹sçæ Ü €$¸",7nŒÇ{,vîÜù¼ËçÏŸŸq"€ì)ÂJî;ßùNÜ|óÍQ­V÷û˜[o½5ÃDùP„•Üm·Ý§žzj¼ë]ïŠÉ“'ç 7îVr£££qÊ)§(Á€ä)ÂJnÁ‚±bÅŠ¼cäNVroûÛã¿ÿû¿ã§?ýilÙ²åyÿH{„•ÜE]W\qÅ~ãfù@ a%÷ÉO~2ï… +¹¹sçæ Ü# €$(ÂH‚" €$(ÂH‚" €$(ÂH‚" €$(ÂH‚" €$(ÂH‚" €$(ÂH‚" €$(ÂH‚" €$(ÂH‚" €$(ÂH‚" €$(ÂH‚" €$(ÂH‚" €$(ÂH‚" €$(ÂH‚" €$(ÂH‚" €$(ÂHÂø¼Ð:V®\ßøÆ7⡇Še˖姦ÁÁÁ¸¶·7V÷õEed$F*•èê鉅½½ÑÑÑ‘w§1ÚªÕj5ïßÖ­[cñâÅñæ7¿9–.]ZWÖßßÃÃÃÑÙÙ™AÂ}mذ!.<ýôX¼fM̈¶ˆˆ"âc³fÅ’»îrÐc̲˜gær1åy©'GµZ=àcßrKüã9çŒiEo­µÖQÏþh•±EVót¬Ï}VëÈJQ²6âù/Ê~Íj,8Neñš*Š¢Ìõz´RÖZZå}ðÁ®c`` ÚÛÛ£»»{LÙ)¶JooooÞ!(¾ &ÄŸüÉŸÄ”)Sâ¿þë¿âÏÿüÏkþÎúõëctt4¦OŸžAÂ}]µhQ\|ï½ñ¦Ø}°‹=¾""º††âƧžŠ“Î8#ó\”KóÌ\.¦¢I)uõôÄòý,[¾g9ŒUóÌ\.¦¢¸LûœÆñ­‘”'Ÿ|2.ºè¢Âkäàà`\pÚiñé5kbAìn|Gc÷Áî’:¿ajÉbž™ËÅT”神qÀÇ|fÙ²Xô—9¦ui¼µrÔZG=û£UÆZYÍÓ±>÷Y­#+EÉÚˆç¿(û5«±4â8U+GQŽuP”¹^VÊZK«¼>ØuøÖÈ4(¨Ëã?ŸøÄ'btt4vìØ'NŒŽŽŽ¸úê«÷û;ya»z×ööÆê¾¾¨ŒŒÄH¥]==±°··eN0_óÌ\.¦¢½á™®Z´(.¾÷ÞxSì>ØÅž?_]CCqãSOÅIgœÑðí¬VÉÑZYÖSë³è?ˆÅkÖŒé”Õq,‹±4"GVÇí2åÈbõÌï¹§eærY‹2Çh¼zžÛ¢Ì±Z9²:5"G«Œ%sÿ¦M›¢R©ÄÌ™3ëþZ{„QÓc=¯xÅ+âóŸÿ||èCŠC9$=ôÐxâ‰'rË´º¯/ìgÙ‚=Ë‹ UrF´VV õÔ:Æl\·nÌÇ ¬ŽcYŒ¥9²:n—)Gë¨g~´Ò\Î"kQæWÏs[”9V”óX¯Û¢Œ¥Hç~ÊÅ=¨iûöí1a„hkÛݱ·µµÅ¡‡Û·oÏ-SeddoãÿûÆíY^­’3¢µ²­§Ö1fBµ:æcPVDZ,ÆÒˆY·Ë”#‹uÔ;?Š0‡Š’µ(sŒÆ«÷¹-Ê+Êy¬Ù¯Û¢Œ¥Hç~ÊEFM‡vXìܹ3.ºè¢½?Û±cGvØa¹e©T¢Ïàݳ¼Z%gDkeZO­cÌζ¶1ƒ²:Že1–FäÈê¸]¦Y¬£ÞùQ„9T”¬E™c4^½ÏmQæXQÎcÍ~Ýe,E:÷S.>IMG}t<þøã{ÿþôÓOÇŽ;âe/{Yn™ºzzbù~–-ß³¼Z%gDkeZO­cÌô#ó1(«ãXciDެŽÛeÊ‘Å:ê™­4—³ÈZ”9FãÕóÜeŽå<–Åë¶(c)Ò¹Ÿrq³|j?~|ÜqÇñ‡ø‡qÈ!‡Ä×¾öµxÅ+^Çü¯™7Ëÿƒ7¾1.úÖ·¢kh(ŽŒß};ÈýqɬYñ©ÿûcâĉ ßîÁj•œ­•h=µŽ1W-[ÿøýïé”Õq,‹±4"GVÇí2åÈbõÌù'žØ2s9‹¬E™c4^=ÏmQæX­YÇ‘£UƒǹßÍòÓÐV­V«y‡ øþó?ÿ3¾ûÝïFµZ¹sçÆ…^‡rȧ¿¿?†‡‡£³³³)™ãÚÞÞXÝו‘‘©T¢«§'ööê+´[%gDkeZO­cL#ŽAYDzK#rd¥L9²XG=Û(Ê*JÖ¢Ì1¯•æXQÎcY¼n‹2–Fm§^ÑÞÞÝÝÝõ{´EMÓì" E–÷ Š0’  Š0’  Š0’  Š0’  Š0’  Š0’  Š0’  Š0’  Š0’  Š0’  Š0’  Š0’  Š0’0>ï”×¶mÛbçÎ100w€ÿ×ÞÝÇTUÇqÿ—‹à|"†…¤RâS-ÍJC æÜTZYjÅ|ÞJm¢-ÜlèfF.5]º6\*¶ZÚ¬4 ©Y–•šæSAT¦†ÈÔy¸À®÷×ÎSW Ø.\Êó~ýwÎ÷Üß=¿í³{9ß{ÎêUUU%§ÓÙÒ§fF# Í&44T’ÒÂg@ýœN§u‹»W+cŒi铚k„Àh„Àh„Àh„Àh„Àh„À-}ÀÝè÷ß×¶mÛTPP M›6ùÔ ´~ýz•••©]»vš8q¢ú÷ïïsÌáǵqãFUUU)((H¯¿þºx૾sçNmݺUG±±±š9s¦Úµk¹áîáON«««µvíZ;vLAAAJHHÐK/½¤  ¿_!§h*õeuÿþýÚ¸q£Ün·î¿ÿ~Íš5KVÝívkíÚµÊÍÍUHHˆFŒ¡gžyÆg ²Š¦àON·oß®œœÕÖÖ*<<\ãÆÓ“O>é39ESð'§7ÕÔÔhîܹ ÕêÕ«}jäMÁßœr-…MÊår™ ˜o¾ùƼð >µÚÚZ3mÚ4³ÿ~cŒ1'Nœ0“&M2W¯^µŽ9s挙7ožùóÏ?1Æx<SWWgÕ?n¦L™bΟ?oŒ1æë¯¿6Í=-ÜeüÍéºuëÌŠ+ŒÇã1ÕÕÕ&==Ýdgg[urЦR_V/^¼h&OžlΜ9cŒ1f÷îÝ&==Ýç˜5kÖ˜eË–™ºº:SSSc,X`vïÞmÕÉ*š‚¿9½råŠõ]ðàA3aÂsîÜ9«NNÑüÍéMYYYfÉ’%&55Õg?9ESð7§\K¡1x4hbmÚ´Ñ[o½¥Gyä¶Z]]ª««/IêÞ½»BBBär¹¬c¶mÛ¦ñãÇ+22R’,‡ãï›7wîÜ©!C†(::Z’4jÔ(êòåËÍ9-ÜeüÍiyy¹úôé£àà`………)..NeeeVœ¢©Ô—Õ“'O*&&Fݺu“$ 2DÆJ’jkkõË/¿èÙgŸ•ÃáPëÖ­5fÌ}ÿý÷ÖdMÁŸœJRDD„õ]?`ÀµmÛVEEEVœ¢)ø›SI:}ú´òóó5zôhc|jäMÁßœr-…Æ Pxx¸&Mš¤•+Wê»ï¾Ó»ï¾«¤¤$ÅÄÄXÇäççëСCš3gŽRSSµiÓ&y½^«^TT¤˜˜}òÉ'zùå—UVV¦èèh={¶f„»Qcr:~üxíÙ³G_}õ•6mÚ¤Ó§Ok̘1Vœ"ºuë¦sçÎY—––Jºq¡&I%%%ª««STT”fÏž­Õ«W+&&Æ'‡dÍ­¡œÞª¢¢B.—K]»vµö‘S4·ÆäÔëõjݺuš>}º‚ƒƒoƒœ¢¹5&§\K¡1X# °°°0UUU©¨¨H•••êØ±£O½¢¢BQQQš>}º®_¿®åË—kË–-zþùç%ÝX›)44T’dŒQ«V­*·Ûð¹àîÕPNoÞ væÌ]»vÍçn‰œ"0bbbôꫯjݺuª¬¬Ô½÷Þ+cŒ•³ššIRhhè¿æ¬¢¹5”Ó[eggkàÀêܹ³µœ¢¹5&§;vìPçÎÕ«W/åååÝ69Esû·œÞü¾—¸–BãÐ(77W_|ñ…–-[¦°°0ÕÕÕ)--MÑÑÑÖchááኗÃáÃáÐÈ‘#µyófëÃ;<<\µµµJIIQJJŠ$éÚµk k±yáîÒPN½^¯2224}útë¶õÍ›7kýúõJMM•DN8ƒ Ò Aƒ¬í7ß|S:t$Ÿ¼½ÿþû’¤ââbŸýdP_Nÿ)//OPFF†Ï~rŠ@¨/§eeeÊÎÎÖ’%Kþõõäp§œþó[®¥Ð< ЩS§g}І„„(66Vüñ‡uL=tôèQkÛãs§M×®]U\\lm{½^•””øø@«V­òÙON᯦È)×Rh0ØFÀh„Àh„Àh„Àh„Àh„À-}vñöÛo«M›6š;w®µÏ£Y³fiĈ;v¬$©ªªJ}ô‘8 Ç£‡~XÓ¦MSûöí}Æ+((ÐŽ;”——§ÊÊJÝwß}š4i’úõëçsÜ®]»”••¥÷Þ{O™™™:~ü¸BCC•––¦Þ½{7ÿÄþ#¸# @†®C‡Éív[ûŽ?®«W¯jذa’$¯×«wÞyGÕÕÕzã7´xñby½^eddÈëõúŒ—››«|PóçÏ×âÅ‹¡•+Wªººú¶÷6ÆhÅŠŠ×’%K4eÊÅÅÅ5ï„þch„È£>ªàà`ýöÛoÖ¾={ö¨oß¾ºçž{$IGŽÑÅ‹õÚk¯)..NݺuÓœ9stõêU>|Øg¼qãÆiôèÑŠU÷îÝõÊ+¯ÈívëôéÓ·½wmm­•œœ¬.]º(!!A{ᯀq:zâ‰'´gÏ :TGûöíÓÔ©S­còóóU^^®‰'ú¼öúõë*..ÖÀo×£òòr¹\.IºãaN§SIIIM<#€ÿa4|øp-Z´H*,,”ÇãÑ Aƒ¬zuuµzôè¡™3gÞöÚ¶mÛúlŸ;wNŸ~ú©Ž;&§Ó©ÈÈHI÷3gIDAT7c·jÕªUÏàÿ‡F@õìÙSQQQúõ×_uòäI lFlFlFlFlFlFlFlFlFlFlFlFlFlFlFlFlFlFlá/Ý5*Y¿ «IEND®B`‚pymc-2.2+ds/docs/_images/envelope.pdf000066400000000000000000000630541204033704200175760ustar00rootroot00000000000000%PDF-1.3 %Äåòåë§ó ÐÄÆ 4 0 obj << /Length 5 0 R /Filter /FlateDecode >> stream x+TT(TÐH-JN-()MÌQ(Ê ˜Xè›(! '9WAß3×PÁ%¨3$é endstream endobj 5 0 obj 56 endobj 2 0 obj << /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 480.1334 480.1334] >> endobj 6 0 obj << /ProcSet [ /PDF /ImageB /ImageC /ImageI ] /XObject << /Im1 7 0 R >> >> endobj 7 0 obj << /Length 8 0 R /Type /XObject /Subtype /Image /Width 480 /Height 480 /Interpolate true /ColorSpace 9 0 R /SMask 10 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream xíÛ²%+nEÏÿÿt[Uœ¦eJ’[käCijjÀÚnw„Ãÿù @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ ¼ ð ¼ø³õ3©r-?3+ƒB›à‘y1`1±„Và‘I,&‚€ÀJü!2iƒÅÄBXI€?D&m°˜XB+ ð‡È¤  A@`%þ™´Ább!¬$À"“6XL,!•øCdÒ‹‰…  °’ˆLÚ`1±„Và‘I,&‚€ÀJü!2iƒÅÄBXI€?D&m°˜XÌ °ò?³Š  ðH@~Y9?˜ÿÒõäQ™¾§øAü!2/,& ƿ̥„R¼¹°$H×à‘yÅ`ɱ„?°yüUdˆÈ«Ž$Cà\ü!2ï, –±WǪ%VÙBàü!2¯,Ë$“dµsÖ8š¿óúÀ±LE!âSõã, p"~æ­%`YÀAZ,èbÞ2AlN€Ÿ†yA`,+!¬ìeÞ8AlHàšß… ’ÍÀEª¹öŽÂõÖw¼ã¦˜âbwü(JS”âÚ\ø¨|DÂWãÕ÷ˆKÁä¸ãQš¢¼èæÂGåý¾ýÛîûߊÀ?‡Ò¥øã7>*ož°Ãà;xØüš°÷#®ù-È ù×|‰"Õ\{ná>SïãäÜÛÄùø!˜—øƒXdä­¦ÞÊŒùHB`6~&á_Ã"ón8ò†–Ì×B“ÜýxœNJß$à{Ê ŒíIW¿L`Ûæ·—òSXvV¼ílïÛWJ÷ë ðøÍ+þ,þü-ÿÏ¡iéßäFBZd _ °þ·9‰ªù+nž®¹pÒtód?™Ôij™ÁyLP†À&îxùqЏx“m=óæÂú;dʘŸLê4-•â;`Ä&¸ãÙë)JëWµÈ«Â³’¿ÓéÛvtvÜB ’€ós¨TØ!-™"nãâ­ÉæÂ·>Ì—¿Óéë9§’¤5&¸æÁ'ƒÈ6|mܤ¶­ð ªgtZ;GÂÖ?=>V!PC€oRº‹ øáŒNkç(ÜÔc‚y¡!p"^»yk×cùv@§»soª&'&³€À¹xêæÝÝåóéÎQ¼©šœ˜Ìçà©›ww7–ϧÎgÞH”ò$Â÷à›wz1–kF»fó„€à‘›ÏàV,2×5£]3ˆù B@ðÈÍgp+–Ëæºló)üe¼póöoÅÒ0—”8ŸIoeP¼­lG/¬$Àó6i_‰¥m(§Ê92©ÎЇlÌ Mð¶Í7p%–¶¡œ*çȤ:)(66q2i@d–Û¼úû°üùÖô_8UΑIu^p'ófDù ð°ÍK¿KóDN¡sdRÜÊÌÔIÿ¼jó®ïÃÒ<‘Sè™T§ÅÌV~¦‹øàI›}–žqœZçȤ:;¸›ŸÙó¢=ž´yÅ—aéÇ©uŽLª³ƒâg7K³GFÿn¼gó~/ÃÒ3ŽSë™T7´´`jZÜJ€÷lÞìMX:g‘rç3é} V?4@k $ ïy Ú5R7a¹i–šökóÖ0!çPæ๚lÅr¨mó œ 3¦s%á1ÇiÍVà­š´OÄrœg1ì|潄 T•N£XR““Y@àC¼Uþ‰XŽó,†Ï¼—”ªÒ©s¤K*Ót k¬'ÀC5™Ÿˆå8ÏŽaçHîË9uŽôEW¦éÖXO€‡j2?ËqžÃΑܗsê%]Ÿ™²…À2¼RõqXŽ3,ØÏÎQOar×~—$™-Öà‰šÌÃòhXœÏ„0;(~J-œ#)qN£¼×«ä¼œfà‰š„ÃòhØIpŽL8£‚N_çHºË©ó½²':¯òI†ÀJ¼O“öqX ; Α gTÐéëêt–5kµ!Àû4/ú,,5nçÈ„3*èôuŽFu:+{Ŧ, PC€ÇiR: K['Ç92ጠJ_çÕåQG<<æOð8Mìga©qëä8G&œQAéë|£º$:NG9J’ÙBà[¼I“ÿAX*­:iΑ çè 9lšGG‹ùÓ ð&Í<K¥U'Í92á, +ñÒÑÑóbþh¼IóúÂRiÕIsŽL8GKÃJ¼ttô¼˜?šoÒ¼¾S°Ôû”Lç3!\æ\ŽyD_(=ׯülÒ÷,§øÜäZņCÌ9ÚÇ?N~ŠoÒ¼îS°œâÓ„üIÐ!&GÎé'niúãxæ8Ë)>MÈŸbräœ~â–¦?N€i>€#°,3)üÏd¸gP) GNB©8&à5š`À²Ì¤4*õrŽL°ŸƒáÒ¿b︉>GŠyä5Î?Wù,ËL:²œ#nÿ\8ß„À²ßø&óVÚØËJ‡Îaç¨õ†iWµ!g,=Xù34³OÂþXV:tþ^9GûÜfƒ“•xìQò#x‡æEïe¥CéUjç™`O Þ:×)üñ”~wgñÑS„_VçïK nˆb±=¦s4[èRúw`#-%íô–5Ö¸ãÆ)â"L¶õx› ë[ôd.¶'íJ£ž“ÚRwIsŽ‘·Û5£½uEþO˜÷¼WbŒSÄEèžlë-5Ö·èÉ\lOÚ•::G=&µ¥î’æ%" Û©â ~(ù5w¼À8E\„{L¶õ—Û\Xߢ's±=iç=³ÔÔJ÷RšsT*©‡©ëóÉ„ÀXSŸ÷X«ŽZøé_“^;…¥£±ìì­Ä³3îŒìu6 å³õ‡˜DäV§‹T•N£¼äUr^Nmxx&·m±lkÌÄøyÐÁå™¶ßæ›"!ðНÎĵ'–­\‰™ÊÏ$¼&(Kœ#³äm¾)B¯ÜñêdŠÒ÷ŠFLµ¸Þg±‰«ˆº†LL‹š’91çÈ4ð‰Ó Áß!ðö•nKfì cÕFAûÖ•t_ÛDå M¥c©Ê9XR’" ¯´Fv}ÎØAƪ ¡!–œoH‹’Hì[Jx‚o«ò¥Q©Ê9*•H¼­ÊäÞ› gC,Ž%çÈœîUpž¸(Ï3:úΑç­ÊäÞ› gC,Ž%çÈœ®>8O9xýðÕ[z•)â¥|ç¨TâÍ…¾,§È ðØr&Ù‹cÉ92§« Šæ Y³uè5£]T6¦™Ç`zL#ýfü(ú]}®°!Ç’sÔ@RÔÂ×PÛSòß¶ÅÿÄÛ#>¶V¬ŽD &^Ú)Xœ›rŽÌ霠H Ts•Ž>7P2¦ãß"ÒNXßM€—fÞïnXü¿Z£ÜŽÒ1‘¾ îã¤d{‡%çÄ"À33/k7,âDZä™Ó™Á!"¦r[p7?É›ÛKܲ=”Ï̼¸Ý°ˆÇ’sdN—ûrÍþÈž®Â\âmg{ýðQØo̼…ݰüù[à~æ•A®Ì\Ÿ†^ß·¦ãÎÜjü“³?Þ˜yG»a™çgž² ¶!(÷4¹§«”lK€7f^ÍVXæ™åyâ&Øæàž>÷tÕ ™ÂÝðÀÌÙ Ë<3ó”MªÁ Ýnh©2å[à™×±–If&ÉšCÝÇvýmÒ1!À£J€„í&XÆÚ«frkö»…~‘çIÉ&6Wl&°ÃÃÞà&XÚØö¯Ç¨Géô¼Æ<ôø§v7¼(óF6ÁâØ#硒ä<øI$qâo_9L¤^ÕIŸ{2"›à9™± ÇÆ«#IvòMSƒÚLiÝ`àÏ_ÿ¡Ï 4p£d[<'ójvÀâ{pNó£ÇòhÀIˆGqaÎømP¼åß@KAÜ”#3>0¸ Å@·HmK€‡d^ÍçX 8 ñ(.Ì+ƒCDò^"›yZs$ˆ›årdÆÇ×tëµÝðŠÌùË£'!9 æÈ¥à(D_dó/ÉéÙŠ¸”‡3˜äôo×té÷‰ÂÎxEæí|ŽåÑ€$<~æhA‘Õ9þVgÖ¯µfi]¯ffFÙ¸ˆiy$],k4Ö6jûà ™wñ9–N˵”^›Üj‚‰ˆ¿­4s¢¬,â:d&[³|HpY£!nÙOȼ”o±H÷=µ‘Æ_ é?ñtàbˆÛÜ–ÕkÉL¶yíÀÈÊ^m#µ ÞyßbÑÝeí|óÌ›MÍvAiÔ©`–›þcÐ,™œ4Ý «hnH€÷c^Ê·Xtw½N¬šGf0)¬ÙŠNþÕn›#ã¬÷®ïKÇ;|òh÷G÷-Ý]¯nù‘Dò`RålCy忎ΞGa®õÞznd½[:nE€Çc^Ç·Xtw½N¬æGy$)©ßŠTþÕ—ï™&Zì퓦‹g¤Ý$òx&)-û-Ý]¯¤ùQIJê·"•õåÛfÊPë½}Òtý˜tN€—c"ý‹´ÖÝõ:±š%Û$ùíVÔòï­Èžù2×bcä⦴»€Àú·z´±$­“­¦—%[ùv­¥Jë·š[åë¡Ö[ßqÍ\t™J€gcâýKÒ:Ùj·úHÖz«ÓÞ®ûV|Ÿüd®ÙƤÝ⎳'BÞŒ ùC,Iëd«Ýê#½Ö9ýëyÊýÞ:¶¸]'Êw À›1oáC,IkÙ:_4/9q=v1Oy¬Ï6µ•Ó…{lóIÕoXù>"ü!–†Ö %ÝÅl«+é­ì5›ú ð`LÈ_a‘¾ ­JÌ©3¸’ÞŸÛö¿éüæõÝ=5¯Å¼ß¯°´õm«2ÿÍàX€¢æ¿ ™©ÈCj¨º¾ä+, }J®¿¾·Žeè¨ÉQøÞ:$ÿ7 ÈkùÍÁý©¿ÂÒз¡ÄŸý7Obt¤Â‘“ð›ð™ºD€§b’ù ËÛ¾oóÍa £`::áHþ ÈCÀ'À;1ù|…åmß·ùæ°9„§#âøpðNL8Ÿ`yÛôm¾9éMÁ~ ¢0D¤D5ŠÇE)“8„ïÄ|Ÿ`yÛôm¾9éMÁ!@úE}¤×7ݳ $À#1a~‚åUÓWÉæŒþ¶~ÞD§¾0d:åúH¯ß¶ ÿGðHÌ‹þË«¦¯’Íïj¥uäZêm¹S›%Û·È¿ž/ļâO°¼jú*Ùœñš  È¿Îé‚`›HnFG´¦Äõ–5¼HØ®Çòªã«dsÀ›‚B#ÿú šý:¾‚tñ8ýe<óö×cyÕñU²9`OðÛî¹sñ“yZCDdª^•,hñÊÉ[Xÿ<âOi+‰™O°$JÛõÞ'Ÿ?ñÕ,ÿ¯¶æ°~Ó·úf‹W"$ßJà÷ù†l×c©ïXŸ9 lÒÑߎjZ¯#~ò¯¾ü1SÄ“œ<œ£˜“,J¶·Øámˆ‡lè+^ìçU»WÉz¨žµnZZ÷è÷ÔŠŸü3%ÍŒûÁ¼*Dç(æ$ )i¨JDØ^IàÛ‡ñ÷aþû“ét¤’›¯¬ÓÌÛ¾õíê3ßzxÌO؆ícÕ‚„zcÍô’Âd«gtŽtZ²n«JDØÞG`ýÃŽñKxJ<‰TnK…¥ø£lsᣲ™Pß®>ÓlÔ”Öù×#8¤V,E|­#’æo£N¾¨/L2s)3"Um…¦ÁkÜñ*JS”â××\ø¨l&T¶«L3[ô¥{þõËö(ˆ]nnu°´Ö"¥ue­N+I™ñæBSàîx¥)JñÇ»k.|T6*ÛU¦™-Ú‚Ò±þkk1°J¬šjæf¦Œúq‘ç;Gy²Ž“:ÂÍÏi7táy'ÿ6›\‰¥¾W}fóàNaÂ6lüõG%>£œÇ‘KddçèHOí£8 'àI˜·¶Ke¯Ê4sœ!A1C”g‹ä¶%ÒÖ4J•Ê›•E°§¶ä‡øÑxæõ­ÄRÙ«2ÍgHP äßå"¹U'òÊ€£Ž^©%É¢DØþ2»ßÃãtáeþ»ìU<š N*Ó&ÙÖÝKëI­ûeÅpþõÈŠZO¹S;OÙiÊѶxæÕ¬ÄRÙ«2ͧ3˜´ö·½f”‹áüëiÔzœZwN9ú)<óº—a©lT™fÎ2<¸•™šéÄpþÕ:9"èœöÍSîqEí'x &öeX*U¦™³ neæq:í¶´~ÉDJ«å =‘yÊ=®¨]O€—`2_†¥²Qeš9Ë/nþö-¨Dím¹“?OÙiÊцîx 2Eékc.jm…o«*U¦½íþkùc1ŠÚXÁxó”c G˜ôÀÖÏ>v±jšF59N Ž"á$‡ γ•YD`Þ[ aì cÕ5jrœM%0ïvæ)O‚ø@¼æ,•]*ÓÌAÎ& ·3é‚&É΂þ@¼æ,5]jrÌ.# w4éš&É.#C£N<à,5]jrÌ®$0éšDv’òJ8ôj&Àí›èÖ`©éR“cŽ@p1I75Iv1ÚµàöMnk°€í×AaCÆ>ãŒr2 KI¶5η:2]ý÷­Õ» ¢þîCDúm 0Šj’œ„¥$[Š›ÞŽʤùwôD£Ì –!R£t†˜A¤“·iœ„¥$[Š›ÞŽʤùwôDÍ ™~µ!"ý6PB€Û41NÂbÊšAÓÕA6ÿ.˜kÔ§_jˆH¿ ú p•&ÃIXLY3hº:=¨'-­OŸ±Ó¿ÆÒ,%"Ctš P8Š÷h’œåÏoÆúOGfÐtut0Óß=i§ù„L›Ú‘¶ÖT $À=š0g`15Í ié²àÏþx£ÈŒÒy4LÂ<\¢ÉvSÓ š–. þìà5÷8Α·äÌ#À%šlg`15Í i‰àOò0†ˆüö݆åÍ™ÅÔ4ƒ¦%‚?E@Æ·1Dä§Èo5,×g^Ç ,¹f1ÍüMò<ú_H¿ÂoÂßdj®Ï¼ˆáXD0×Ì#¦‚?K`È "ò³WðíàÜÉ8SÐ š~v8u¿sQèéäOy.Îä6K.˜GL'‡8šv¿ù~…!·€È[\œIl8–\0˜N¶HðúÛ¶˪Ä|âÿmë~…·ÉB óÞ‡xØPd8–\0lÈáhKšpi}Ê€â_Ð`»³¼¡#%ý¸5“áp,¹`1ì! ó¯GðÃZ¤§{àУ@íz—¾ÞðšŽc±ä?±úk˜œØ%OþÝd†7ÐP¢‡í,×R¬×àÊLÎc±äjyÄ´A°“€pοNÍQåb¬Aª­*4 (šRòžëþÊó‚¾c±äjydÁP?ÒBØÖ+™ˆ+ÝÎßêL½NªôQͺ³¼¦9 p_&̱XrµÌÅIþµMtÚj¥JÊ›k)\C€;29Ä’HÉ6‰˜Ž%°ó¿÷ŸþÓêÄ„æÂ¨‰T²i,~ÀؗУ&µ=å¿vq+ç½ã^þ¾¯ÿ ô¦™ä(,¹Ni6Iáц¿„ÁžÚ£oasóÜ‹yA£°$:ÉÖlMÍš˜6×6»¥ð‘—b"…%ÑI¶fk‚h& ¬ù56»¥ð‘ÀÝ—ò8$”¾Gt5 "®Ó’­>b !Â{nj.lèEI%þb˜ FaIt’­Ùš : 4?³æÂNÔ—p#&™QXdk¶&~æK“ ó…¦’Ðß…Q®¹óá5S…Eëèu³1 !PI oy$JÅ£¸ˆG,>$pÇu”¦(Å7&ÊZG¯“4¶N@Þ[òä’­î¨ôZç°^OàŽ»(MQŠ?rn.ÔÊ"¢uôZ§±†À$àÿþû ç&GÉv’=d Üq¥)Jñ5X’îÉöÑ è' _^'ÊÉQ²M’Ù.#pÍEÈ ù׌Q¤škc¡Ñë˜À Ä·yÓü(äUDfàLÂC°h½6;~ÜÜÞ·p.èî×¹eóÈ ^@ã ¸ó²†`Ñ"zmvü6¸¹½oá\Ð]î7|¥Yä4?2ƒy‘y¸“í,ZD¯ÍŽ‹ƒ‰»Øíf+NnYw)•⺖õ<ð7ÙÁEâÂìõUP»*­¿òFßä–Ïì(ùfœàð79ÁEâÂìõaPŒå߇~îk-x·ªÁOCÉV#møæõ ÁEâÂìõaPŒå߇~îk-xwªÁRCÉnSêòæÅõcÑ zm¶û*(Æòï+3wôžz«3W®W­Ã#yL#a8·75ÜÀž‚ýX¢B\l2©ø©ÿ6ñ|– Á —Ö1á«…6Vã!¼™šLrx{M[ï,Õ%*ÄņóŠ·üÛÐçq–rªÙmŠ·–Þæï6ï‰~`nÞZ?–¨f£oƒâ-ÿ¾µtG÷œªD6í­«·ùŽ|–%€›÷Õ%*Ä…ÙèÛ xË¿o-ÝÑ=§*‘=G{kìmþžSŸâ ÚæMõc‰ qa6ú0¨•ÖÚ;®µ0¬ÿ¶šNlû~ü¹üZN{<^Mø¹µýX‚BxØrHô·mþÍ6‘C«Â½'ÿî<‹YÉi˜+Œ“í<ã‰ÞÀkÞZ?– Ð¯cÚœás†æðÁ' Êìù7©×Ùà¶$%§ÉQŒÄE’Àvðš;±Äò¸0»ìâ3ñ·ûÌ>É̞D°SÁ/wôÍ£4üFœÖ¯ÉªK, ³Ë}A=oi}ßÔÉD¥Áu<)©Ùv–÷´(µ–x騦9Àk"êÄËãÂìrY0 +ÿæŸL*ÁËæ5ÇIÆô·¦B úµÉi¬ê\˜²fPI¼tÔiƒò@¼æKèÄËãÂìr_Pæ-}÷ [3‘ШI+åèòÒºTÛׂH‰âÎQÌaÑL¼&ºN,¡\þ ³Å­Á0uòï­Ã>ÎÕÿ’aûØ·3!±lµ¸s¤ÓX·¯É­K(ï1•‚+{å¤{ý——q˜`üQGÒ7Jéu †E°—ÙŽ"àÕâDN,¡¼Sä·•½|câ$ÿüN9L‰8ùb#ÓC Jǘ9°;R€-½ž÷kã¢Ô¥'žˆûÛžF5µÒ½þ«üñœz˜’9U°Q©?ÕI¥‡ûÒ jÞi–Xf‹þ Ö/­û»¼U'ù÷V„üH ‡)‘x:{ñª×«äÙÎïЩy=Xbm\˜-†¥Eþ QnÉÍÄH› U ^¬Ä"}ëÛ½J®—ýÙLxšW߃%ÔÊ¿aaê †.É¿£Äßê„y3a+Ráô­&ù%ž+ɼº»WÉ+§8±0Í[ëÁj{LKfPºäŸ™¹&(fb£Ò:&°x$Pb¨ã"C^u|•<ÄÞ­"4o¶K¨íQ0-Å (×±jÁB\é.þVg²6 ø“SSalðUÇWÉc}Þ¤Fó6{°„ÚÓ’”.ùgf®бõM/î¸ÏW^%_|q=£ÁФ׌%Æ…©?*(]òo”x§ŽëT \Ø„gxoÚ˜³Þijãpó#šÔŒ%Æ…©?*(]òo”8:0 „'g%Áṳ́m A‘hÆ ›Ës'NDw)­rŽ ÐC@?9G§2ÍQøå#虷ߌ%6—›fÌ`ÒÂßš !ÐI yu%µÊ´Rù/ÇAgÞ~3–PØ\nš© ®ïX㊜ë T>¼Ê´ëq½n&±f,¡°¹Ü4S\ß±Æ9¿@ òíU¦ý±úf²jÆ ›ËM3!°9yð5o¾&góIÛƒ˜ ¼ K¨j«5m„À)äÙ×¼üšœSF^à\&ä6,¡ª­Ö´Ag¨yü59gM=Ï-¬L¶mXBU[­iƒ Ž# ïÿñ'ð˜pÜÔ“ ÊÛ†%TµÕš6BàDòxü<&œ8øpÏP2‘¶a Umµ¦ ‚8—Àãá1áÜÙG9‘I² ‹TµšBàt?‡Ç„Ó tú‡ ° ‹TµšG€Ûϯì‘ÉcB®ù;à˜wÝ€%”4šžH€Û7oíËc‚)û AȘ·Ü€%”4šA ¹n{ÄD“L ™NÒè1!Éÿ‘­íG äc6` % …yw"Ð7^Z4Î<«GóÉ=&ä%×G|b×_° ¯«óúx¸úäßë§nðñ—õ˜ÐÖ÷Ð*h˜×€EJªÌîÏ"®>ù÷¬Vº  œŽüŽ"PDzÑ€åñÕi}Ö7WŸü{Ó€3fñ/r:£éqšp0¯¬‹ÿÞÌ.Ï%®»òßsÇœê<Ò3»ÄÓÒ¬º,(³_6ÑqÞb ùo«†XEäsrïù÷¹«S t¦ÛH5?•£æpÁ»ŸÓ]I@~ù×6©è´îV•é­§v72ŽŸÓ!À†0ÿþ”‚õïø…–¦(Åù4>*“ÜM@þzä_ÛÈ¢ÓV¸UUiŠRüÑ|sá£2 €ÀÝä¯Gþµ,:m…[U•¦(ÅÍ7>*“ÜM@þzä_ÛÈ¢ÓV¸[U¤g´žÚÝÈàXF@ÿé(­ëÍh…úªë3Árý3 †HþnøÛšî‰BMÉ/ä€ån™!0•@ÿŸ‘~…©~%–¯ÈÓ×èÿ3Ò¯p L=X4 Ö€À'øCdb‹‰…  °’ˆLÚ‚…€ÀçÌ?P+ ÈõUfž•Æ\Ý—uÐe‰Õ[ïkÃ[¸5smøØJ–¸¬™=ã·Þ׆´oEÍ\>¶’%.«DfÏø­÷µ!í[Q3׆­d‰Ë*‘Ù3~ë}mHûVÔ̵ác+Yâ²JdöŒßz_Ò¾5smøØJ–¸¬™=ã·Þ׆´oEÍ\>¶’%.«DfÏø­÷µ!í[Q3׆­d‰Ë*‘Ù3~ë}íIW€ @€ @€ @€ @€ @€ @€ @€ 0œ€ü·ÏTþïáaÿ¯|Ûþ©Éa“`sÉÙÄm½ .ÿ´¾ËúLß¹ºÞm}Gq^J>w¨ÒDÆ5g½–tD¯?4\ÓZ[Õ룇óz½ÖL$^:Òi[­µa½&uD¯·Á4£ÝêõÑsÉ ákÙ,!èÔñT¯CPGô:–ì¹ÐVõ:wëŸæùßF´[½Ž®BÐ<Š9.´a½VóȆ#˜–´s½ÎçÊOMÁ}‚%Ã:®×û8?ˉf¨×a ÑëÍgÔVõ:±í%™›lµa½ŽöBÐ<Š9.´a½VãPùц³hKÚ°^Ç †/FNYˆmÓªŽëµ™Lð‘€f¨×¡PGôúQöÛmU¯µ«R\çì¶Öžõ:øŒ‘¸ØÍÉ6¬×q®Œ‹’ÔVqíV¯ã\Ñm~ö\” ë¸^ï9Åþ®4C½ÎuD¯7ŸK[ÕëhÛ ÆÓmÚ¶^‹a½ÕëmgÑÆ´a½9:¢×Zaϵv«×§Ï%þóq.jÃW¤9ëõÑ´õ zµá8–ô,z-%²M>Gg·#q-éuêˆ^Ç’mÚ­^Ÿ>—øÏǹ`¨ ’æ¬×GÓÖƒèu>Ô†7âXÒ³èuRâ%™›lµa½ötD¯71ïØÐnõúô¹Ä>ÎC9Wùá‘ _ô [½NNãÑ΋GúÿƒÃñè²¹âuÈ\q}Ê"^J4¬§ÈOcÚæ‹Üù5siòw ¥'b @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ ÿüóF‘lõk@XL þMŽ‹Åh@%ò—™?Î%8Ä!|H€¿Ï§5 øŸœã¢”I€–Hþ&'Ûe6h@ är²M’ÙB€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€~“Àÿ,¼8 endstream endobj 8 0 obj 13162 endobj 10 0 obj << /Length 11 0 R /Type /XObject /Subtype /Image /Width 480 /Height 480 /ColorSpace /DeviceGray /Interpolate true /BitsPerComponent 8 /Filter /FlateDecode >> stream xí]‰¶ã¸ œÿÿéK¶ÐIà%—{NbÄREœ¤o÷¼÷ßþã ¸®€+à ¸®€+à ¸®€+à ¸®€+à ¸®€+à ¸®€+à ¸®€+à ¸®€+à ¸®€+à ¸®€+à ¸®€+à ¸®€+à ¸®€+à ¸®€+à ¸®€+à ¸®€+à ¸®€+à ¸®€+à ¸®€+à ¸®€+à ¸®€+à ¸®€+à ¸®€+à ¸®€+à ¸®€+à ¸®€+à ¸®€+à ¸®€+ðYþùÏã X¾xþY‚;¶DÓ˜‚K¦óÓ˜‚ûî$ ˜®À\2瘮ÀÜw'QÀt¦à’é<Çt¦à¾;‰¦+0—Lç9¦+0÷ÝI0])¸d:Ï1])¸ïN¢€é LÁ%ÓyŽé LÁ¯Ý¿À÷mö ˜®Àü˜%ì6TŸ²ÿO[…>ú:˜‚‡í¶”W›òÇÎDšó[‚÷ËÌ ·æTŸÂ²\Á†àôéȧ£DÖpÇç£É†Efƒ=ÖO{Lµ0û- ¯ÙR·dXq}Ái_C©RâÊÕ\+ÉYék5 :„?w?Èä˜I›tÉPeY“­¿—¾/CBH×BÄUDM)¨4o‘ÆGÊöUHéZ ޏŠèš)Ç”g®1ùDÕ¾ !]‹±W]2g gr—È| HAƒóãÂ|{šÌ!Îeï1{iµ©êàè·8FYuL¯w†LП]¯åoÐ޹Ύ•Þ ¤ë{~½ÚQ´¨ôi¡„û`Ät~eð8õרÇv¼¢™xD]páªàÍãì.¬Ïô±D…\ "HˆkC!¤]œ7Z·tú!‚ Hˆk])éM“‘®ë­?\¹?|@HFˆ}ðP y½Q ýDX8"OâZo#ƒ¼l€µÜý³… £Gô/ÀAX1$‚½ô÷Ç,‚Á ŠàÒOßâ}¤è^˜c¾ÒtrEp9d‚qè_Úo^‡:7ÓÁõÀ'  ߯úËæ,Þk1Ôü~ãê;°ÇôeÕ¦s«+)@¼lu":¦ckË¿\Ñ3kq¡;¼2b:¶¸ Ž È+wÈ‘2Z ¼ÃÁ?c¹9X‡2Èÿ‰°éÐJà= xÀ,Cã]^Ðæ])3M3WïaÀ†„Û_\ð”@Ëpd- FÙ–´ç²I˜/LGÖGPÀ†LóÉt諳L'ÖGPÀ†Ldä­@VøÙ¬IææTÇ@À†Øl¾ö½i¦«€c àC¨ðŸ»gêx¦©€c àCÊkº@ üÒ<Óy5ÀQŒ¥ßoÄ üµ•O뵨®QΣWb¿Ð6W\¢Q]±iðª£é´ à ÞúˆMƒWM§UW€hõ6€l[¼çl:ì>ø>"µ (Òç .ÓY÷Á÷‘M@‘>op™Îº > ú“Ó<ìVµÄÁtÔmðy¨‘åý!˜“Qfε >``”Ù VðYŸé¤»à õP¶š¿s³2`ÒÌøvÁê¡ ”0EK¾é4t|¥jÀ@÷ògn`^T¹s|¥jÀÀéÂxѽ¦sn‚¯”C øRþÊ <GêÝ_ª†"0²£8Qö5·é˜{àKÕ¢ßoÄ%-Ám½¶ÿ¨K­âvÈÚUñÛ~¯9›N¹¾UÜê ``ü‘ÿ^¥˜·Õdÿ¼¾UÜr00Žýv›ÿ3gÓwÀ7j¹7ã¶´f¡Í ¦3î€oÔJ÷kûå£ú¡ã†ŒcÆ;àµP FÞdvô«Ãxœ/f˜Ž¸¾Q ¥`äMfWØV}úâþFœM'Üß(Í[Ë `q ÓGj}/n:àxQŠ|œò:C-ØÊ#FÎà!?5p¼(ŒÚFü‚>_'MmNi?r4o¼(Œö] H¡‹?1o¼¬Œ®S ÉaÊß2o¼¬Œ¨SØRÐAÏ·†MÇ[/+Ác ¦p¿Â´A³—‡¥š-± ^ÂŒ%2]Ñ÷/¹îR¾ïPÖ¬d¼*„u—ÕS‚ûé¿gHC®ŠÄÖ-ƒW…pƒm*&8߯X²&1)ظ‡ÇºÎês2uñýB$$‰0é^­#ÑtMû¶Ót¶UðÕº¹U@—_¾aÈ9mdÙ«à«u2V) ºø~“$“WPp®NP–?“ÉDw¨üå?!Á„[îEpAÜr`Ìͯ‘þ§X-ç•K‹à‚2X+©çÚUÐr øé*ÓÁÖÀ%U°V0ö„T‚Ù#aQ-s¹ï¸¤ öÆ2ɳPÒt³Å#å¦s­Kª`­`lª§…³IC½\"&ß4 „¯*HæCÒj—¨ÚQƒ§âkTáíLQÛ®êõŽý±„‚ !®± ¢"X+$0঎в·;ù¡%ì„‚ !®1¢¨¶ x`੃0^ôzïþTBA×XQQ~Ó¦C8‡ñ+¯{·w0´€üùÙ‹ª³¾Rò@0ˆôQœ({·Ût¨ð•VbƒHʼn²w»M‡Z_©a%@0¨ôaUøb¿ÞL|:Î^ Ì£€šv8‡ Tá‹ý¦3-€/” ÔD0Èÿš!g 0¿6i|¡d 6¼™dh°À81šãøaÓ‘ÀJæu†&`\íyúm¦̓OVä{óüSšP]è†ï—”4î3ZùúŒÖ3Uqt.ë#‘ÒAÚPÆ•Z’õ ´.P§!èÕF^ß°Íʉ6ÐŒ”Ø9Rà«W…h:BÈoAÉ}ÈìQp/0€OïÐ' Óy¦Á¡ \T><Ü0”ƒmz„>i˜Î3 ` ¢òÑムC=¹ âÊÁïY¦ãLƒCˆ¢ƒåÅ ~Ãñ >õðô¾êµNÈmÒÓàPFÇß\N—æåŠË¢[w©p˜N3 `´NÜ^©e²u™ôÛtšY𼪒òãzÏe'ŒµªTý²«é0³àÃýN®¨=Ûd¥Çm5¦ÃÌ‚ö;‹·öW~™Åm[°k4/Ù—Yðü½­D:+ËZé3 ñXØt–Yp>ŸR .,x­EàY¿é,“à|ú¢NiyXLþù å>ÓQ&Áùt>ʉ9]9]Àu6f:Ê$8›ÎÎÖ.¿U x<ž}Šâ$8—ÎÅÆœf«góÇ žÊ0dœIß½£hTùÙ|ä NÓAæÀ™ìÝõNÿA˜áò†­É9˜2Îd3!験“éR·ç™Î1NgÓ‘ ½æ@öß1&¨¦ÎM=IdœÌVÒz†d3©ÁÃé¦cLÓÉt„¯˜ZðT2Åãy?®„¯)p2yAi ‹òcóÎäbõïð™N1ÉùoN‰ R,f秦fkáeÕ4{ÃqbàyºSàܳ:‡òôè(Ï€åCÓ!fÀs.X§G©ª×ý§O Í¼ðf/ðNÌ;Ïv<ç‚ 8‰Û³û=níöýŸžoMB=0a<ç‚ 8‰%â÷{¬7!‘Í5g6G3n2žsÁ dDò½-¬(omˆ=LÀðßå3a¼Hó0ÀžPmpÿæx>L˜`õPªéàE*˜‡v-á>“ôöKµ¯É¼úÄ*µË|¼H“þßU‡Œáp¿im,JDg`Þä3`¼H½ö/½T11?á !^ ÖIGàŒ‘9_’“ßh™0ަ’Î@ƒ—;ƈ„Px~Ç¢Š= RŠìš¦ÈÁó—ÚB#¢|ôþ{ •'vÆ6ëâ!ɹR_y1å/™ù}™×v{¿ÐH°ù°RLùËÁã~ÓøWU-ØoBb®zS‚¾±49o> Ç\A2!û4PeáÖ;5Z± …Gð€û€Ë”¾WË¡ _ÊGgD• }ù–Ì7£W•+ï;G…«yt’ährRÄ2¥.ïoiå¾’N=¿ý¾7!HÆ[¦"ïózÏ2‰Q!Ý*`Ð9#ô§ã¦Ì¥à]^ç0”‰î‘ó+!;h˜Á¢…¼Ëëì&Ù ô?$I¯½Â  ¥àm^{¶àV`RíÀþÍt‘ÿ%Ó”·¼ÍkÏÆ‚Rˇ¶1mxSÞBð6­=+ÎŒC †äÃ[‘ÌP¦¼…àmZ{VÔ€ÆÝà ÙÜeJ[Þ¤5G-"l~ªaÑžà ê·ŸLi Á›´æ¨¦`ÀMk ¾hÀ©«}³Ã”µ¼IkŽzê]¿¯@±àüûPbF å£å4e-o²š£Ö aC玈-¸Î´#V÷Q=™’–7YÍ‘™Vžy‚°ûߟ³íæ÷…d¤eV(ÉŠê¬úÄvHM÷îµb´òr¦”näÎÁ’{Iã¶²bxUŸ0&Á³ò•Vû¯ÍÕÎât¶`¤”Α/¾Îpž~‹À›¤æHIÒÒƒÊiýõ~ûF§ü`$œéùSáƒ×n’K˜Í®e+ëÑô2!ØuR}js‹3ݵHªÍºé]àPz„ÞjÈ(eâHzr¥k1)â*¢—Y'Õ§><õ²ÀÍú|Ä&ù jjW·ðLï7B_Oá’f틹e´}¯©cïù©íÄÓà£-ÖÓç}¶Ì—)x•R¬•¡›ñ70µf=‹OO)F¢!耗)¥ fÓ tø¨ß5`²4²eJiCÂ#Ï„>B˜ljÊu ^eT’ñþ=ø=<ÇZ˜rƒ—¥=&n›ñ3 6u ^f”¶íöè,~ûôûRØ9viŒÁËŒÒÞí¼_ϲaƒû½L™ŽÁ‹ŒÂTœoŠãó˜›b]›«r^&”övgv‡o#KÎkJt^$&Iv?0Óå'<3ð´¼Cð"¡0§ûÈ ¦ºpÉ\LNÇ>Ó”ç¼H(L›©cƒü$iÂqâbì›rLiÁsB¶Ì-ÒCÖ„{‡æb2ô[²Lu‚ç„lmŒ=áþÒïÊr1í ¯)Ëx/Ìu ûe™Ðúꕦ,GàE¼0—fŒõù Řß/ûwE»”QŽÚNS’#ðÏÖê€!= ø[êÓ@2P÷)»Ïm©ë4%9Ïñl!ã±AÈßã ƒëÍÅàaÔ#žï§(“)ý õñöÆÈ2fLzÆeÊ‘¡ðtæPïƒÆ~FéÆÛg ; ˜…Ô“;Rô—)E<„bøz¢RS?•¼6—.¸¼2¨®–Y0OªCzÂaJ‘ObK>Ìë¿êÂòÅ7Ý(1‚ç'¹Ø«³šY½Þ6“&¯Ð—¡>žÂváܶ­ òE‰±%”ºèês\® „(ϤÕÜ•90à!ÃÑ85C»‹Ö*E‰ #´û鬪à™3U¯[ 6 8ˆ b¿×ÊÒ…¥˜™žl=¬Þ‡¡AêÈU>¶Lp'Ä~§k¹#z±U~¥OÆËÇ&¡Þ¬Û$96زY‹A<„NÒÝIìX¸ßÈé·8A*+Á¼è§”w^­=37ƒ)#ü 1 éݘÆ_B Ôñ­ïÒÝ©Giî–µ4ø)/Qôí•ýv\;Gà‰:õ#š¢ÁÏ—°’©²_t—¯»M%¦ÁŸÛïµÛt‘¼<"Ùü”JÐéPgªxàjʇ?#tÜV‰Ùû7ðL‚JuE7›¦thð¡ÃÆ"Ìî—øQþ¨ÓxÞ” #t˜!¬RÚ/ú Œ;5X/a˜jL‚?üõùP*P#éuJR/ á]_±0†Ýx«ü áÕ~²ºØ6?Š®Ý¦K•Žîò¡±*bp0%C‚Ÿ2 ì쌹ÞÔý{|0#1’v‹Ë” ¨6· }4!©¡Èý¢8Ö🛳)ŽÇ€æGb˜jPi7¸èý¢S b<3¹1!‚ Hˆë„¥ ÄMïM tÓ£ëŒ ‰ùºÂ[ûL„‚ !®s(ªà–‘§›d¶Ø@èÍŠ%N÷Õ(Ø'r D qœ©‰Œ0ÈYÎé›®èÒ›œ[Ž4miûó³ˆ?ýTTÚøÞ<†-Â|÷>»™ò À£Ÿ >¡ÂfOdôõ¾Ùf¥¡¶ƒ×PàÑOq¨W{±e¾d<=ÒõÇ l츧˜Zä¿zyrȤˆK‚¤cª2þsûžcQÃkoÇ3eAÿÞ~Ó‚á둚ž_ˆrTýË <ø©˜ò|·ÁóÀT‡ömFû$BºMWŒ?+Ê?ežŸ·0Õ[FBËb&„t-€WˆF)ˆXQý1³ž*Ž÷‚÷)$„t-Ö‚¸B4º‰XQý53LS½eF ´®æôço%Äzß×Usœ§ÇǸš2 Àƒ›ñ:,ñªÑëÿ¦+`^TglJ€n"Ä˽TÄCªFw²„wpNþ»¯¦ðà&Bäø1??‘yϺýNÏ©ÍVç©þøá&" z¨H&íáPùûHe~PÝ Lûà‡›ˆp³Ñ_ã¸ªÝØ,Ñ.¿sì2š«7mO€n"ÂqÿÆ~ûÉFåd˜Œ™vÇÁƒ°Üoßo䘟XrE°-&I·™-ÕÆ8øáÅtïü±-:Q5X¦Çp;Ü£ nÉLÌ1NÅÁ/ào¿šçÏ«¶Óµç¾ÂÎcÚ?¼x€ŸrQl”®¶lÇkÏ|WÕ¨iküðâ~°U±yT6ºÜ²¯=³]Uƒ¦qðËØÁBIz°‰JÁk·é2‰Z ˜žù.ˆLŽ HÇÁßÒâ1Vä§>u²Çh=Ë÷où >IÏ [ÆÝÙ´)^ü¾£Ã;p¼³†‹ñ¨ttg¿Àç4ŽgðÐ õ#¦MQðIQ¼K¸#Veãö;jñËXU¯²u@c …(FÁ'ê'0$’|aN‚Dé¢Î8%À5e’¹mÚ?œ¨}Ôðt#Ëü”ùe;ÈL9 _:rËe+u_à QðÉú9 AìZ¯…‚(ÕàL†ÚY `0%ê!Ó¦(øÒ×çÁÜéþ¤-„Ñàýb‹ŒA•jØ´) .û¢–¢“ÃÍ{h޶Súz SÀ$o/ÃÁ û0s!×Þoà%Õ{a´DÜïPàÊ=.yÕ(¨‰]V' ‹¶oà…¹Û!˜¢wàÙoäŸ:ÑÅYa*7Ý šøÖ±ÿÈ~áo¯º¶ä¨Š‹­f•¢q0œ ú¢xrµœDC À¸ão  é (èvÈ¿Ü÷[n­P£SªÌ۱̀©¼˜h‡´}í÷oCy6+ÜH³Ïó(¡ wí6]4¡;¬£ÉåKí²§K^q$ø•ÚaM þ•¯WáÆŠ?à ÷ÊŸh­j[=TÁZ&-8ÌÒ&¾î|ß~áMúxñŸzµªm‰£ Ö2iÁÿü~[ANÁNYB,ZxR«­ð¬ ÖölÁ?³ß¨uлhóLá¥~qÁTÒRoU°–A þ•ýFÞù©kéœáZUÜ¡Ìåc©KW„5ë’V-øWöçmɯŠê^z$_q=>ñÏSº± S{ŠŠJ Þž«äƒ ®:èà;|a‡Mo(¥êSòa´àí¹ÌÚL1ÂÞ—0ÚïÁ$®6|‘V›H Ó©ßcÝ€]ý¢7?a,Þâí÷ŠG•Ô6Œ«¦$I¾¼ß¼¿ñà<é¡DÛvw\‡¤’Ί{Á¸Þ“±<1ŸD9ÒÓÀtI7zw…˜hÚlºîśģy7àÍq¦ Ý#|X…Ÿ´grOž"¢i t]',jÇÂ'„t-’Ws,‡&£ ÂÞš0IôÚíqÙa¹U'„t-Ø4®æX$MB›Ë.C˜'Âôé!äç:ªv„¶¢ÓRót-2Ws,Y3mﺶ¹„»M{ú‡ÏOb:a<јpuq¯¸{H¤®Á·^†gŒÝË~ÖW "æ"ÇÆ½âÎ|b ^ŸøÊ6ÊLÈ„Z”ÇÏë\SÆK7F„ÍOe|½c‰BØ5x}"J7½Ä€šDñ¹‰5'z‰{Ϫ°¨°Š„Ê/8„Òô¨Ó#h~ªƒ¿{…£š:JSyZày8"îUäõPך{ž¦Ò¨‚3`L¨Ÿø'=–û%±ã[ªšœ¾DBÊæ-ºÎÚW-!¤k¸Š¨›z ÷Øþ Bº¤WuSO߯ž–oD2ܯø÷WoÔåG8…7Êô¨G2} 5¯çøÓ§¨s~*µ0])x9…ÛçýÛë`ºSð~–¿íÁÅÆ½JJ™‚+qüqÓ˜‚ÿøb”Æ3]Aó›?> €ÒëD£õRzÎËèèþRX°VHùQ!~t,X›ØøQ!~t,ñZ!ñG…øÑ±`mbãG…øÑ±Äk…ÄâGÇ‚µ‰âGǯTˆ Öæ†+à ¸®€+à ¸®€+à ¸®€+à ¸®€+à ¸/VàøgG»l-ÐÍÅÙZ€©þ×J±=->›8iˆ=˜„"¾ O³%.Ή¹8[9*·ÊjxáÉË!3ãd ‚F®ÎÖDyJÍKÝ‚Ip×Ü/[å)µ.§µŸgëL;ã¬s Ô8X©4® 4[•ûek£Òá:,`„’‚„Ú~uÞªOŽùéÂ`á§ðt?ç~ÙZhY{õ'ãÖP³Tà#m ¢dÀU‰æêr¿lÍ!Äì¢8˜Ë?€ÆT.ÏÖ R®ÎÖ ¼46a¦{ç~Ùš)_–fýHßHò—’y<ÀÙ¼a´p|¿ç³žÇ92N¶V ru¶Vp`–M˜ùÞç]Ûn}‰ÅÌÞ}w}‹ t¶ö[àì¼ Äq.&›8i =˜€â?®€+à ¸®€+à ¸®€+à ¸®€+à ¸®€+à ¸®€+à ¸®€+à ¸®€+à ¸®€+à ¸®€+à ¸®€+ð-â?>ÿ•ô·ˆ;[™á_ÒË2=ë“ ìüÇŸø‘öýþôÂýýù××ëÀ?¼áøÝÊ¿`ýð†}4WÀp\WÀp\WÀp\WÀp\WÀp\WÀp\WÀp\WÀp^ Àÿ´qÄ endstream endobj 11 0 obj 8590 endobj 12 0 obj << /Length 13 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >> stream x–wT×ÇßÌl/´]–"eé½·¤.½H•& ËîKYÖe°7D"ŠˆV$(bÀh(+¢Xì "J F•ÌÆõ÷;'ùýNÞw>ó}÷žwçÞûÎ(!a¬@¶P"Žô÷fÆÅ'0ñ½D€6p¸¹¢Ð(¿h€®@_63u’ñ_ àõ-€Z®[„3™éÿïC‘+K€ÂÑ;?—‹r!ÊYù‘LŸD™ž’)c#c1š ʪ2NûÄæú|bOó²…<ÔG–³ˆ—Í“qÊó¤|”‘”‹òü|”o ¬Ÿ%Í üez6Ÿ“ †"Ó%|n:ÊÖ(SÄÑ‘l”ç@ ¤}Å)_±„_€æ ;G´D,HK—0¹&Lgg3€ŸŸÅ—H,Â9ÜLŽ˜Çdçd‹8Â%|úfYP’Õ–‰ÙÑÆÙÑÑÂÖ-ÿçõ›Ÿ½þd½ýäñ2âÏžAŒž/Ú—Ø/ZN-¬)´6[¾h);h[€êÝ/šþ>ä híûê{²yI—HD.VVùùù–>×RVÐÏë:|öü{øêù ¢‚¡[£°R¡Fá„ ”"MÑF1L1[±Tñ°âeÅ'Jx%C%_%žR¡Ò¥óJ#4„¦GcÓ¸´u´:ÚÚ(G7¢Ò3è%ôïè½ôIe%e{ååååSÊC „aÈdd1ÊÇ·ïT4U¼Tø*›TšTT¦Uç¨zªòU‹U›Uoª¾ScªùªeªmUkS{ ŽQ7UPÏWߣ~A}b}Žëîœâ9ÇæÜÕ€5L5"5–iÐèјÒÔÒô×iîÔ<¯9¡ÅÐòÔÊЪÐ:­5®MÓv×hWhŸÑ~ÊTfz1³˜UÌ.椎†N€ŽTg¿N¯ÎŒ®‘î|ݵºÍºôHz,½T½ ½N½I}mýPýåúúw ˆ,ƒtƒÝÓ†F†±† Û Ÿ©-5j4ºoL5ö0^l\k|ÃgÂ2É4ÙmrÍ6u0M7­1í3ƒÍÍf»ÍúͱæÎæBóZóA Š…—EžE£Å°%Ã2Är­e›ås+}««­VÝV­¬³¬ë¬ïÙ(ÙÙ¬µé°ùÝÖÔ–k[c{ÃŽjçg·Ê®Ýî…½™=ß~ýmšC¨Ã‡N‡ŽNŽbÇ&Çq'}§d§]Nƒ,:+œUʺäŒuöv^å|Òù­‹£‹Äå˜Ëo®®™®‡]ŸÌ5šËŸ[7wÄM×ã¶ßmÈéžì¾Ï}ÈCǃãQëñÈSÏ“çYï9æeâ•áuÄë¹·µ·Ø»Å{šíÂ^Á>ëƒøøûûôú*ùÎ÷­ö}è§ë—æ×è7éïà¿Ìÿl6 8`kÀ` f 7°!p2È)hEPW0%8*¸:øQˆiˆ8¤# ÝzžÁ<á¼¶0¶-ìA¸Qøâð#pá5#m"—GvGÑ¢’¢G½ŽöŽ.‹¾7ßx¾t~gŒ|LbLCÌt¬OlyìPœUÜŠ¸«ñêñ‚øö|BLB}ÂÔßÛŒ&:$%ÞZh´°`áåEꋲJ’Oâ$OÆ&Ç&N~Ï ãÔr¦RSv¥LrÙÜÜgIsKÛ–6žî‘^™>!` ª/22öfLg†e̜͊ÍjÎ&d'gŸ* 3…]9Z99ý"3Q‘hh±Ëâí‹'ÅÁâú\(wan»„ŽþLõH¥ë¥Ãyîy5yoòcò( z–˜.Ù´dl©ßÒo—a–q—u.×Y¾fùð ¯ûWB+SVv®Ò[U¸jtµÿêCkHk2×ü´ÖzmùÚWëb×uj®.Y￾±H®H\4¸ÁuÃÞ˜‚½›ì6íÜô±˜W|¥Äº¤²ä})·ôÊ76ßT}3»9uso™cÙž-¸-Â-·¶zl=T®X¾´|d[è¶Ö fEqÅ«íIÛ/WÚWîÝAÚ!Ý1TRÕ¾Sç–ï«Ó«oÖx×4ïÒØµi×ônÞî=ž{šöjî-ÙûnŸ`ßíýþû[k k+àäx\S×ý-ëÛ†zõú’ú…‡Eêjpjh8¬q¸¬n”6ŽI§¾ökÎ×:úçöŸð8wÝçúÅ7®Þœw³ÿÖü[·‡nón?¹“uçÅݼ»3÷VßÇÞ/~ ð ò¡ÆÃÚŸM~nr:5ì3Üó(êѽîȳ_ry?Zø˜ú¸rL{¬á‰í““ã~ãמ.x:úLôlf¢èWÅ_w=7~þÃož¿õLÆM޾¿˜ý½ô¥Ú˃¯ì_uN…O=|ýzfºøÚ›CoYo»ßž›É_õÁäCÇÇà÷g³ggÿ˜óü endstream endobj 13 0 obj 2615 endobj 9 0 obj [ /ICCBased 12 0 R ] endobj 3 0 obj << /Type /Pages /MediaBox [0 0 480.1334 480.1334] /Count 1 /Kids [ 2 0 R ] >> endobj 14 0 obj << /Type /Catalog /Pages 3 0 R /Version /1.4 >> endobj 15 0 obj (Mac OS X 10.6.7 Quartz PDFContext) endobj 16 0 obj (D:20110328015150Z00'00') endobj 1 0 obj << /Producer 15 0 R /CreationDate 16 0 R /ModDate 16 0 R >> endobj xref 0 17 0000000000 65535 f 0000025583 00000 n 0000000170 00000 n 0000025332 00000 n 0000000022 00000 n 0000000152 00000 n 0000000284 00000 n 0000000373 00000 n 0000013733 00000 n 0000025296 00000 n 0000013754 00000 n 0000022536 00000 n 0000022557 00000 n 0000025275 00000 n 0000025425 00000 n 0000025489 00000 n 0000025541 00000 n trailer << /Size 17 /Root 14 0 R /Info 1 0 R /ID [ ] >> startxref 25658 %%EOF pymc-2.2+ds/docs/_images/envelope.png000066400000000000000000000305571204033704200176130ustar00rootroot00000000000000‰PNG  IHDRàà}Ô¾• pHYs  ÒÝ~ü IDATxí݉’Ø(Ò®áîÿýß²Ï0Ó´)¬-ˆíé‡2óMÄ'Te÷ß¿~ýúË € ð-ÿ÷­;Þ@@  Àæ € àйD@€› €4 @€@ç@l € ЀnK@°9€ €@¸t.@ Àæ € àйD@€› €4 @€@ç@l € ЀnK@°9€ €@¸t.@ Àæ € àйD@€› €4 @€@ç@l € ЀnK@°9€ €@¸t.@ Àæ € àйD@€› €4 @€@ç@l € ЀnK@°9€ €@¸t.@ Àæ € àйD@€› €4 @€@ç@l € ЀnK@°9€ €@¸t.@ Àæ € àйD@€› €4 @€@ç@l € ЀnK@°9€ €@¸t.@ Àæ € àйD@€› €4 @€@ç@l € ЀnK@°9€ €@¸t.@ Àæ € àйD@€› €4 ð |6wù÷ßÿj„@šøõë×ß­‚XR€ì–Ð[›_@ßZoÆ|‚þ] g €|F€†š#@~ À¿Y8C@à3ø3Ô!€ ð›þÍ €Ÿ ÀŸ¡æ@ßðoÎ@øŒþ 5G €ü&@€³p† €Àgðg¨9B@à7ü›…3@>#°ì¿ýaŽN \ù÷XýÞ§8 €À ð …š)Ì\pKE5ôKû–ö›‰\@`xžZvŸÉSñL7ãô~÷ˆüC€› Õ Dá}S(ãXQˆãuõd8@^"@€_i˜m5Ä7õ…·¶ŸÔ§s@à ø ŠÆØ$D1 ä¦Á‹7£Ÿ/}¾¾¡@`AþÒ‚Eÿ"åVB„8ø¾È“@à.|—œ~»Z‰o (Ý Ç{Ž €@opo<žÖâñŽ»áxÏè‰@W?>úlw5=ÁËO½ˆoUaó'¥âz П-Þgí=À\9†žëC„Wž™rG _>A÷[›a"ëY|#Ä(ÂñÚhM€·®ÀàþG߈˜GŽ Ðn>AŸ-Ž¡½`bøM`$ñQÇyf>E"Ž Њ@7X[Mƒë~ƒø^ïÕG"ÜGDÀê|‚^}ÜÈ?ŠïÈ/LQ„o¤¯  ð ®vÀG]ùÜâhAoQYüÞÛ;ÉÅqJØ$@€7±¸YkG9"Ù¸ 1v1#€@¿|‚î·6CGVº‹Eè£ïГGð,B€/RèÒ4ßüÙï™X•Štiì_ؽÉç‹xù@~ øÝomDÖøB1â‹Cg(…ƒÿ!@€Mƒ –QìžDÞ5Ѐ À… V1#0界¼¬œsbÇð1­ì »h4 €@\i“ &v¿å•ƪœKØ&@€·¹¸‹@»à"LŒ@`ƒÞ€â%ì‚K(±A=þð™…î×úü¼Êî°¿…¦ TX’^²ìõ“^ewò\åE£þ¬áµø½V½ÿÈÖîí$—oáËÈt@ÿ À¦ € àйœ€]ð|5•µ àÚ„;ßççw‹C„ßåi4f'@€g¯°ü@º$à· »,Ký fÙý–þrØÖ§ú×_qü•¿/râê Àu¸õCgbW*Òo†<Ë Î›LŒ…? øý“‡+8{!xìÀ 0 €Àuø:³i{ìý|rÚ„;KÌgèÎ "*ð º2`Ã#p•€¯W‰±G`Lx̺‰@`p>A^À<ü'?ÿÍÇzz}e'çó÷oÚñS4&¿™8C`Fxƪv–Ó‘\éÎÒºΕ|{z™º•¬N pH€âшÀ{Ž^Dr/qœßwóð3àyjù—ÓDÅü'•+;æù²—s Às×Wv¸²c8M¡#°,¼lé%> »àQ*%N®èægÀùçÓ|ѱ8.lÎïØZkN Ÿoy{¼þzúYp$ïˆÀ|ºàí–˜lÝKû8Gà)3q-é§qlõ7ÿ·¨¸‡ÀØ|‚»~¢_€ÀÙ‹Á¤ˆÀ”ºÜOIzá¤ZîgÂnA÷]Ÿî£‹ ¯…§N[Œ·´/;@ \‹lÅq{‘G*nS~eèk/ü^IêŸABn3æõ&#c!ÐÜ[E‰'Šï áþ“XýÀá ÀÀìvdñÜga»àXaGú'à—°ú¯Ñn„-ÛÄ7ME8œÇû£Ó|FÍAܬD€Zí‚1“øÆ²GÑš1·˜£#ôIÀ'è>ë²U+¡~wƒ¼!ˆpâÁSùïÿœbæZ^ñ# À) ç‡Zìºz¹q~‹á@ \ ìLöÚu·`8‹Û·˜=|"p¾Æk9ë•Ä7wtžýKE¬“#£ À£W°bü+ï¢fá•ëWñ±04¯ À¯¡¬?З»Ñ¸x¯¼›]„ëÏH@à ü„Þä}WßXÚ‘ExäØ#Gf&@€g®îÍܾÜiß ñÓn£ Yüšñ)4Î@à”>E´–Åz»ÞQ„GãâÞÎÈ]hM€·®@¡ÿ/w¥3,Ú5„2r©1vá4¸m6bÌ·“ÕAàA õE˜ésÊA„ß‘XŇóìX €À—ü[Ð_Ò®ì«TŽ䣶Êáß>ä]w©]I Áß›ã•ø|j3Z¼OóÕÞ àÞ+t1¾3! ‹ðÖ{÷·l{»W"†µÄ§Ö¸o3ŽŒÞ×x pŸ¾Ï_-ògâýYÂ7m LúRQ#·-Ÿ7Bÿ´ËWséÓ¤8C`Pxн¶Eù>Í(ÂñX2R—R¿éKII6 P®ÇÖÈ‹HÅ÷L\{@/\‹LLivO€w_¢º޼_³ÜöL(ëRo7zú²Ð. ž@  ÀσšYsì/°æ"š‹lCn›¶½q…mt¦o°0”ð÷€Ë8±ºHàH /Åüeñeáåa ‡ à‹Àf1·S«SIâV‡«Q˜‘€OГUµdçYbsK©˜—Ú]ñmó±Ï®c¿Ç(ÂáXcü7Æ!Æ7ò4= À=Wçbl¥ ~.NÝüa^²˜¿í3 ¢dì’Ó1ß8/‰ë ?Æ@1 àŽëð·Ã«% QàÒxÓøK_Òþ¥ç¥c—Ú•ú=²Ûâqdߢ-Æø%—yò‰@¯p¯•ù'®tqLí(ì´Ï‘¶÷ ä5ʯß÷hD•¬rgâz´à‡¶³þƒáØ ·Ež{>{çÞ{|»EÖ€Ààðà, ÿH˜KÇÈí®Œ™Ûî‰Uîc–ë^E.Ô!¯Í,Ìå@ïpïz1¾·E/ïh!Ïm_L«û¡¢Èõ*Â`ϱu_`"p“€¿|œn\!Ðó Hϱ]aÌÑàN+v´›¼²ÝÍUbuìãN¸ÎèÏG}sÎ=ÆÌO€w\ã‘v&QäCÌ1îxŽ÷ÿM´^YÄšuü8 éàéJú3¡/„/ŠïOÏ?¯zžŸQ~sÕ3‹/æË7”yA ¸ÿ=ްöî¦tüR»Ç 0@"¬>L!NEÀoAVN;”Á vnáÞ„¯ä‹ÆAZš@ .ÕƒÙÕ…ºåBz5Öø¶ˆ¡7Žñ´`Á'«ð ºÃŠÛåvX”ÅB2+¸t›°n‚ýÜ©ä9£Y,â®ó‹šÖYfŠ´9ÔQÑ„2%Ÿ §,«¤F#wÁ½Ä}&Ò½Ä)F&@€G®ÞNìv.;`:¿Ý›\q7Ü9:á!0$Èça­gq´°ŽJ£dÁž1ï­zÍôÌÌ”ËV­ÜCà+»;à<€øÐ…E5´ÕX8£Üw¸Ž~·ÚV¾W£oòÜá´ÎêzväÙŠ[ô-jÖ °E`W€ÓE2tÌøø æ÷·œ”Ü;’³ölxB Ÿƒ{×ùý=Ÿ¥v{ý[Þ9ö–ÜøF %°û :kú'íÏßß8žã5Ák¼žX—°ÏC´ Ç#ÑîÈf¯-úÙk¯}ßs_›°ñW!°»^€<ß'p&>©Çܶ׎4®hŽynéu´KY\9ã?çŠÏÜ6äÓÒkF#ÐÇeàÌúl Y^«Txòúæ¶y»ëc­æÎÙózµVºàŒÅ8P(û¯ÕÂ[ÝV­çkÁ£œ5*!KÆ$Е‰PÔüÀ!ÌmïŠyáA>fíºDßwc¯ŸñèÀ0—Òýë…¨÷"·Œ/¯ÛÙuËXŸúÎççÑ<ÌmŸøcå\ŸŒ§/|C`¾²`Ù-Œß`_ÃK‰(÷æB ï÷¼ýo$õ{›¨ñV"°û×V‚Ð2×;‹æ>-r<{Š1•ÚE{Ç? `ø'wèî½Bâ’@|I ÂÅ1ž‡ch¯‘X­qb­™Ï‘_mŒN€^ÁÁâb4XØ—Ââ{Ô©†h­Àöˆ©6F#ÐÍÏ€KÞÜ-0£M¯5ã-§¥vW)–¼\³Ä¾•ß’ØØ Ð#n8,Fàó)‚Ñ9£•-âsô5ƒV~¿Î“?Þ$àô›4…ÀZ»Ý-w­Ä°•ß-î!0®øËEª‡âØÍöP…ycókÞìd†ÀøºàñqÖÍ€`×å;Óèñeök¶ žiÉ¥6\›°ñhD Šp ÷_ ‹ùDà)ü” þtL ÅŽ´¥ðw\ ¡!ðü’>oøüÜg]Fˆª….vÁ#Ì1¶$@€Ñ'¨À/ìöKA´ ^x¢I½˜.FÕÎX·cäùKA;Š£¤- â—1·Úy—ð`ƒ@pUˆ"ü+.@ €.€ÄÒc©]+¢_ïJ¿ö׊+¿Ü!@€ïPû°OXÐí\>¾ãªDHFªÕ×/ _ûÛ)£ÛtE › º+*‚éš@+¡ÛáTXFyQÚÊ£fÁ¿öW3c#ð&;à7iŽÕJ@ Ãc¶ôåa‘”¥‰@WpWåLN T$JíòñW½þz·n¼êL“÷Ÿ è4n³Sþ미p FMNW„=·=йñÔú×}Mvÿ:q‚›ð&–uoö¸ GN«’Š]M¡ËÇNý¦ñ„óÜ6oïíz‹kÍ£¿Ñ8Õdbìµ àÊõß[°óû¥Ê…0ü&¢¸‰ÅM>!àgÀ`‹\ú'¸Ì¯÷ÂÈ…zÏîÎýÒ±KíîÄ O¾ªqü>²m ØÌ?,ta:síj.Œq1<Š'ÆqïÛíWòÎmòygÎâìú‰¯/ûÆyçóe |!°"ÜQÕKÀR»’Ôââ›Ú†ñãu-1‹ãïs¿iLyŸÜ6o㺄ydùE¡•  À ™ÿFºže›Û¶X0ó…úìú,§·Ú[°x+ö³qrÆgöÚ@à:|Ùð=ráÈE6M0·MÛ¾8/‚c‰ÝñÎà#ò¬Í4úi=Çf¨™Æ$@€;©[XìJBÉíf_¼Jó+µ+aÌæ÷¿@ö‹ÚBÿE| p‡¾CíbŸ\4óë0\* [íÑejï9"Pƒ@˜ka.ÖœsÑGø‰@ïpå ¥‹WÉbv$¾5BÍc:»®ÃÕ1S¦Wû²¿F $æ×¸±F „€ «„Ò¤6¹Øn¥à­¶Þî}ýòÒ[þ£Æ3Ò•±¸û$`Üa]ÒÝF.’ùõ“ðS?Gã”Ú¡m\Q ̓qk(ò> àŽêR²ƒ³þ¯`¥/"¥vMƒaC)™¿{É™×{dÜŸ™%»Œ›»iÕûnL[ýJlâ»EîÞ½3ޣ̛{Ùë…@¸W£~@ ŠBê*Ý……”ÌóóÈ»×Úã?'`Þ%à—°Þåùúhµ»×5  €À%ø®ûÆgŸCÏÚï{Ö÷Ä]ê{#þ9RúãÏVw˜‡€OÐóÔr‰L®,ι­¯ ïL‘(Â5xƱ߉Ô(ôM€÷]ÑeòE?ÙÔ<·MÛœ÷K аúõ[#‘½CÀ'èw8¥D‘\*iÉ"ð2ü2Ð;Ã…]œ·ý;äôiI ¦×»%3¾H øÒp>üÅåìz¨äû_yMaA`&vÀT3,"¸YÊEÉÂlUJÔdÆ®Ÿ´#@€?b¿·˜”ÉG!åfgžD©]ÞÏuBý¼ÀöQ Q¼O€¿ÏÔˆ,E€H.UnɾH€¿ÓPm Øí¶ã_S„kŽÝŽÏüõ6 @à5µ>á×Jd Žà†Åðó߆ð¹~@üQK„_Ø€4&@€+ÀbT°á»"E¸FPvÁ5¨³%üýš‹Òásñ€ÀŠ/`µ…rE¦¦ ® ÀŠÂÜ>·Õ ÔaÏLõÒqð!ü!l®æ&Pº3+µ›V­\k;s9ŒC€S+‘vN dׄc•]\Ìóm±Œãv>„‡À)ÿô)"”â Nz½šxlñ(§yl¸®Æó˜ˆÖÑØW¬Xºð¦n,) ç½؛ǥq×aÂ[JŸ]ÏpåêX(*6üjˆpHüéËÁð9-Ÿ §-­Ä¾"pErÛÞ^ÐB|%1•ÚÕ¬A-Q¯³±H à”†snÈ+ÙtÈÜ6mëá<ŠÚQœwÅ·dì« jŒy5öÜ%@€ï’»ÙïîâuÓn\&E-혾T‰sÚÇ9ð3àc>Z@àE[âþtøc>IJàJ7lÒÃîº J ~á¢wŠñœPü¯¨µ8xæ}hÛ'èŠÅ pE†îˆ@ߣ¢øô67®ˆWn{7—^G,Ó¶È5½çÞ àÞ+$¾a” Q©Ý—‰ç1å"›Æ’Û¦m¥çaŒà£†¿_iìxBÀ'è'ô.ö=ZÔ.Åá ÔJÏÙðSc™ºàü¡ ×éŸY*RkÑ™…Ïly¨÷qEŸüÙ?îqÜy¿9æ±G­Ü'Ðå'èððÄ)¦¶u/¶9"€À{ògíìú©ç(Âù3wÜ8ÞÝþú!ðnvÀ_%ÌìÈÅv˲–Àß[þîÜ«ãXôA`Þ#ã> (Ý…–Ú•"|{¼è÷MQc:"ð®8<,ùïÕz@ß™Žb)Þ4vç´"ž™üù‹gð =}¿ ÐÍÏ€÷–½û_ÀyÓQ~“¦±¾$ðå3|½ý¬¼=Þ—ìùš›@W;à¹QËJ Ñ,µ=²ûòåá(mlèf¼\zïÊ[ì[oêß9|C <óg‘½9Ö™/í”F€¯¼ÉžÙèÒéÁ6¢¿áýͱވÇDÃp ØÖ …sï…ºôE:ô?k ¢²ì@W|ô@í=„½¬•IDATÝŠÇç¯-*î!pNàL8ÏÖ…£5åÜ; êèF€ÏDꬽ.&£#€@Ko<ÿgbÞ2?¾×$à· _®»7î—nyq—ûƳExy¨tA€W(C\0* mH–$à™Z²ìÓ'ÝÍ'è³7ÓQÀ7>M? %ˆ@¸F<] Þ§ d&èF€C”O¬ÃL5¾FÀKÅk( t‘À[âùÖ8ÃgŽÀ>AÿÀáF ðÆÏƒGÈSŒs Às×÷qv¥ ]©Ý〠°<·¾”Å]ðò@hF «OÐÍ(Tr<çڸH-z3äYi ¶8/½øUlØOàO0í$.viéÂw$Îiçýùå)ÎË'óï1ú«ªˆF!àô(•'üA è n¼1ÆwLø—þÅó“‘wϳ7BïÒ¯G±–ÚñeÛ[:ZÞ_2櫟 ëpýkt1¾²å¶aA¬„Õ°D¡:ªÏ¨ó¶$·#t±ÿ¨ù妭_¸ßÚ4,_¤s‘MƒËmÓ6ç}ˆB“F•ÖväZÆÜîæû§lœ#P“€OÐ5é>%ðTDŸöÿ4YΆ'@€‡/¡@ %ðTDŸöOcqŽÀŸ èhû/üçbg×°õE ýÄ|YnÄè¬OíQDKãÏó9mÝ+¯G&bê®P“­·‚›O† ¹œ-:¡½ÄînÀ5ǾÓHýòúž{ñç¶{v#Ü¿:/óÜ#§x?^»Ç àt¥:ҶÒðŸ [šG©Ýgs„À?î §9m Õ&@€_"rìs˜¥‹e©ÝóˆŒð”@ËZ=}&Cÿ–ñ?e¯ßpßõé2º§‹ÚQR% ^XkÆpßèm‘]àÆópœQlžæõ´ÿèsFüõàzl|ƒ@ˆpŒÂ0ñØÍI€OP×°À•¦‘Û¦BW:FM»|±ÞòeÁÛ¢Òǽ‘ë÷d^=éÛGåDÑ‚nAýeŸ¹ˆæ"›ºËmÓ¶ÎKã+µë!§•b(­K©Ý×ìB\%/[q=é»5ž{óð3à‡5¾û°>t«;T"…ôèEvÏuì»×î>)œÒpÞ%°¨u˜ ŠŒX¿óPîö+Êh>A¿TÊ^vÂyg×/¥o¦#Šp;ÏÌ>ûh™•ž¨²á¡/I§Ô®d,6¬@àŽ Þé³K9þ&@€³p†ì¸#¨wúì a:xº’þL(,?ï¸B»¢ ^ùoìs×§~ó Àjæ†Ò!_j‰ð ë8LÜqq„†}"|ug{Õ¾ÏÌEõ&ü&Mc!€ÀR¢¨–ýR$»K€ï¢Ñ€œ¢¬ˆð9+? àŸ<\!€— ¾²»½b{9†!@€–Ê/`=¨;¸"¬Wl'B$•„N`8E`V¥ŸGgÍÿ˼®ëÛ/sàëø&g;ß›àtC`W„õŠíè–J‘/UnÉ®@ t·[j·³9Fa-á|ŶF¬ÆlC€·áÎ+ÕÄÅüÈ/8GtÞk µ£•Šp©í{©%ÿ;Âô-bàéZ•À–§"…¡jÿ/Ⱥd½¸b ïøì€Ç¯¡ @`ñ¥(}Ú ;Úîµ»?Á#€@ 5D°D`Kź>¯ À×™é@÷⚸`‡€ãy8Öî¡ `¬ÑY}‚]HçÌn€”—‘/]~ÉÏH ,ÊqÞË/´[¼÷èü¼_Ê©ÔîçèÛW±>Gc›h·=Š»½ À½WH|\$å’.¥v%cÍlS"rA(ßæÆK}ï‰qj3sfÌÍoA߬êÛÛÍ0¦ìVc1›”¤>#°%r© Ö\Rß{>£Ml¯ÏgÐpd¼@‘ßH1>ØoŒeŒï X¿gþ¶ÇPÃø'ŒžÉü¹ŒuÞj{;ã='`|‘a>á/vgž<㢑5ý¸,µûÑÉØ[{òûñy ÷c[¼7Ž)R!ÀS”ñÝ$ÂC[òÀ–ÚEüœsÖ~4¾6îó®´on[òü”ŽìÎÆËýç}Òö³±®ÄÅöüŒß”½¿Åè/…iÁHi8oA ªtNæñä¶y{íëè?1Þ ¾ãyh6ñ^íØŒ¿O +Žc+Üž&KO±l±zã^È1¯Gz½ƒ78/ Äç2<«[ÏëYû—±òõ×_Ýp˜,qrlæ¬}«{ €ÀŠòµ4ãÀ#mm±=½¿"·¯sîF€¿Nœ¿¶â_Enk‘(¡ÆæMa¦óîìúMßoŒ•Ǿ÷LÅû©ýþ±M€osYòn|øJ’Ïm¯>°¹}>^Cn›¶9G 607Ïæ`h/±«kÉøy.!îð'ö¹¤×ñ¼Õq¶Wùt#ÀyÑóDòI“·qNÒ/ü}í#g|”onûu¬ü!ðÒ¹^j÷UÜ¥~ò¸óç>½ÎmK}°Û&ЇðF(î1n—Ú]@àœ@ºÆ¥âzæ×ùhiß¼­ô:ø(§Ô®Ôo »®¸>ÛȤ³ëö‹`u%1££<Ãsšç¸u/ÚmÂ1Øåk@ÚÎÏÚsû^¯‡à+Àƒm¯ÀG‰+ç}v}7¯|Ü­qJÈ­~î!€@=g‚š¯ÃùõYd¹ýÙõYg¹†ö»³\ÏüÄþ¥vÑÞÚxúÌ­ÓOÇnKæ·wÿ3†ß,œýC tr—Ú‹ ð'®vÀ+¼ñüYwr„='âù ­ÿyö¹í¨kF7€AÇœðÙçƒÍ>›Ð‚Ïœ||‚>®«V@ª ÀU°@cø˜V@ª ÀU°@cø˜V@ª ÀU°@cø˜V@ªð÷€«`5( €Çì€ùhE@  \«A@8&@€ùhE@  \«A@8&@€ùhE@  \«A@8&@€ùhE@  \«A@8&@€ùhE@  \«A@8&ðÇÍk¶þý÷ß¿bæ¿~ýú;žçÇR»¼ßÈ×¥9—ÚÌb+ö«yû£9¶åcä{¥|JíFf±{iÞ¥v[>F¾ò>{^FbC€³Ù˜8¿Žæùýü:ÚÍtÌs̯c®ùýü:ÚÍvÌó̯ó|C{~oæëœG~sÏïç×Ñn¶cžg~óÍïç×Ñn¦cȱ$ŸœE~]2Æ—6>AI{_go¨‹`8L³÷…á0øͧwè.Ìçp‡“m¦ÍLÕü6—0w‚ÇÞ'$ÈŸ'$Û÷%Àík0mÄw»´¸lsI歷ÒóÔfÕóœG~½*—óö zĪ ³Ea»H¸lsÉïÚõæD\ÏHÀxƪ6ΉÈ ðI-ðJi8G`xZË´ùÎŽøvP! Ј@øÍ²F®ûu›îPÒ3_,÷ìúÍìyd{9§lR›è1åïÍxLsOsNù¤yïÝOmf:/å³g7‹­\öòÎçÉžÝÖ˜3ÝË9„Üò{#±!À3ÍN¹ € CÀ/a S*"€ÌD€ÏTM¹ € C€S*"€ÌD€ÏTM¹ € C€S*"€ÌD€ÏTM¹ € C€S*"€ÌD€ÏTM¹ € C€S*"€ÌD€ÏTM¹ € C€S*"€ÌD€ÏTM¹ € C€S*"€ÌD€ÏTM¹ € C€S*"€ÌD€ÏTM¹ € C€S*"€ÌD€ÏTM¹ € C€S*"€ÌD€ÏTM¹ € C€S*"€ÌD€ÏTM¹ € C€S*"ðŒÀßÿý+aë^nãê Àu¸îüúõë?zû[„Ãy¸×] B`á \$Ui"€@ E˜øš´%`Ü–?ï €‹ À‹^ÚkˆŸÃî7î„×$!kÚ Àík >!Å7:#‘„#mà6ÜyEXœ€_ÂZ|H@  ;à6ÜyEXœ^|H@  ܆;¯ €‹ À‹Oé#€´!@€Ûpç@`qxñ }@6pî¼"€,N€/>¤ ІnÃW@Å àÅ'€ô@Ú Àm¸óŠ °8¼ø> €@¸ w^@'@€ŸÒGhC€·áÎ+ €Àâðâ@ú €mà6ÜyEXœÀÿ­§´ÑsÛ%IEND®B`‚pymc-2.2+ds/docs/_images/geweke.pdf000066400000000000000000007067341204033704200172410ustar00rootroot00000000000000%PDF-1.3 %Äåòåë§ó ÐÄÆ 4 0 obj << /Length 5 0 R /Filter /FlateDecode >> stream x+TT(TÐH-JN-()MÌQ(Ê ˜™ê™››)¡™±ž¥…¡!˜“œ« ï™k¨à’Ô&ö endstream endobj 5 0 obj 64 endobj 2 0 obj << /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 425.7742 630.9811] >> endobj 6 0 obj << /ProcSet [ /PDF /ImageB /ImageC /ImageI ] /XObject << /Im1 7 0 R >> >> endobj 7 0 obj << /Length 8 0 R /Type /XObject /Subtype /Image /Width 1774 /Height 2629 /Interpolate true /ColorSpace 9 0 R /SMask 10 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream xìÝ ”eUy'ðÑQ M‚ BL0.H v ÊQŒQH &š€Æ 4Ž=¾£a²¢‚.¢ÆWEAÄ‚ÊKÄATTh[yÊ[ 5_yÆžšëöÙ§oŸ{¿»z±ŠªsÎÞû÷ýÕ­ݪš›ó @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€@{î¹çöÛo¿í¶Ûn¹å–›= @€ @€‘ Üzë­ Üu×]Mbç @ EèT«V­úÁ~pñÅ_èA€ @€ŒIࢋ.úÞ÷¾wùå—_ýõ-¦†"@€@™@¼ó—¿üåµ×^{Úi§}øÃþÀ>p¬ @€ 0&÷¿ÿýÇüI'tÞyçÅ+3ï¼óβpÁÑhE ^yÅWœ}öÙ{î¹çCúЭ= @€ @€ñ D&ðÇüÇoxêWfÞ}÷Ý­Ä!@€@@$™ñCå_øÂvÚi§ûÜç>¿ó;¿³Å[l¹å–ãëÙVL`½b×,Y²äxÀïþîï®×…œL`|±}6Ùd“Ø>ñ h|«·bS°‰¦€ècˆO=ñ9(¾ë-`Ýó[mµÕƒüà=èA÷»ßýøÀ®X±âÒK/½æšk$™ÙŠC hK ^1~É%—|æ3ŸyÜãwÿûßß}÷}ýë_ÿ¶·½íßþí߯ô:zk%°¾oûÛ÷ØcwÜñÅ/~ñú^ËùF&Ûg—]v‰ísÈ!‡Œlé–K`:6Ñt]e”ñ©'>Å#öÑ(,šÀ¼ÀÑG{!Ìm¶Ù&’Ì<0~?èÏ~ö3If[ÁŒq(¸ãŽ;â¯ü¬\¹rÙ²eñ½Èƒ>øÄO<ýôÓã7cŒéw[+õˆ6ï·ß~»ï¾û[Þò–õ½–ó ŒL ¶ÏsžóœØ>'Ÿ|òÈ–n¹¦#`MÇÑUF)ŸzâsPçž{.ØD МB ˆO=ñ9(±˜­Àu×]{!‚ývØA’ÙJcš ¤$3^Xî›/Í59b«®ºê ƒzÞóž¯j1ƒ¥h"Û'^ÒÛ'~F ÉùÎ!0z›hô·€æñ©'>Å#öQó«8“@ÏR,à5™=¯§é¸@jY’Ì×Ûò6˜€$sƒÑºðð„0ï±n`›h»ü$™C®®µÕH±€$³¶œ ˜@jY’ÌÔÀƒd¢Œ1!ÌlÜ: ›h@Å´”¶$™m‹¯“)dv²J&E€ÀÿH-K’éÎ ÐL@’ÙÌÍYB@ã6 °ž6Ñz:}Ì’Ì1WßÚ× ¤X@’¹VÆtP µ,IfkdJ½dö¢L&ÙM!L7ëbV=°‰zT,S횀$³k1Ÿ™¤X@’9“*”š©eI2kº9Œ@d&ÿK ¾€¦¾•# üF›è7²x':’Ì:J޼@Š$™ƒ¯¸èµ@jY’Ì^WÓäg( Éœ!¾¡û. „é{Íæ6ÑÌK`ýdö·vf>E H2§hëRL] µ,IæÔ…]p$×\sÍ¡‡úÿð§œrÊH–l™¦%ÛgÅŠ±}¾ûÝïNëš®C`T6ѨÊm±ÓˆO=ñ9(±¦{eW#Ð# H2{T;S%0BÔ²$™#¼,y*7ÝtÓÉ'Ÿ|ôÑGŸsÎ9S¹ ‹@lŸ|à±}V­Z5žU[)) ØDSÄt©± ħžøØGc[»õX+bIæZo ÐAÔ²$™¬‘)õBàÖ[o=묳>ùÉO^rÉ%½˜°IèŽ@lŸSO=5¶ÏÕW_ÝY™  ØD=*–©vM >õÄç xÄ>êÚÜ̇@k)d¶&o ¤–%Él`è!pçw^~ùåcÆ/+B€@‘@lŸK/½4¶Ï-·ÜRt¢ƒ ¨l"wÆñ©'>Å#öQã‹8‘@ßR, Éì{AÍŸÀ°RË’d»ÜVG€ @€ ¤X@’¹ÇÛtM µ,If× d> @€ @`à ¤X@’¹á¨]™õH-K’¹þ¤®@€ @€ú"bIf_ gžÆ)Z–$sœ·U @€ @€À8R, Éçm`Õú"Z–$³/…3O @€ °þ)d®?©+ °áRË’dn8jW&@€ @€]H±€$³k2 ¤–%É\ˆãm @€ 0l H2‡]n«#ÐwÔ²$™}/¨ù @€ @€ú)dÖ§s$í ¤–%Él¿F$@€ @€³H±€$sV…0.uRË’dÖAs  @€†@Š$™Ã(«Uª@jY’̡ں @€ @€À½R, ɼ7‘÷ ÐÔ²$™Ý)™ @€ @€ -bIæ†w}ÖG µ,Iæú`:— @€ôK Å’Ì~•Ïl ŒM µ,IæØnë%@€ @€1 ¤X@’9æ›ÁÚ t_ µ,If÷Kf† @€ @`Z)dN ÖuØ©eI27²k @€ @€n ¤X@’ÙÍ2™•@jY’L7 @€@Š$™ã)½•è£@jY’Ì>Ñœ  @€ @€@3 H2›1:‹vRË’d¶Ãn @€ Ð H2»Ps @`1Ô²$™‹Ay? @€ž@Š$™Ã+±’@jY’Ì!×Z @€ @€Àd H2'sù(³H-K’9Ûr @€´)bIf›øÆ"@ T µ,If) ã  @€ @€@R, Éìo)ÍœÀRË’dŽ¡èÖH€ @€* H2ÝtY µ,If—‹en @€ @`º)dN—×Õ˜®@jY’Ìéòº @€è²@Š$™].–¹ Z–$Ó-A€ @€Æ#bIæxJo¥ú(Z–$³E4g @€ ÐL Å’ÌfŒÎ"@ Ô²$™í°… @€tA Å’Ì.ÅXL µ,IæbPÞO€ @€†'bIæðJlE†$Z–$sHŵ @€ 0Y Å’ÌÉ\>J€ÀlRË’dζF'@€ @€m ¤X@’Ù&¾±(H-K’Y èx @€ Ð_ H2û[J3'0Ô²$™c(º5 @€ @€J Å’L7]H-K’Ùåb™ @€˜®@Š$™Óåu5¦+Z–$sº¼®F€ @€º,bIf—‹en¤–%ÉtK @€ @€ñ¤X@’9žÒ[)> ¤–%ÉìcÍ™ @€4H±€$³£³hG µ,If;ìF!@€ @€]H±€$³ E1H-K’¹”÷ @€ @€á ¤X@’9¼[! ¤–%ÉRq­… @€LH±€$s2— 0[Ô²$™³-‡Ñ  @€ @€@›)d¶‰o,JRË’d–:ž @€ôW Å’Ìþ–ÒÌ ŒA µ,IæŠn @€ @ H±€$ÓA€@—RË’dv¹XæF€ @€¦+bIæty]é ¤–%Éœ.¯« @€ @€. ¤X@’Ùåb™©eI2Ý @€ @`<)dާôVJ ©eI2ûXDs&@€ @€ÍR, ÉlÆè,ÚH-K’Ù»Q @€ @€@R, ÉìBQÌÅRË’d.åý @€ @`x)d¯ÄVD`H©eI2‡T\k!@€ @€“R, ÉœÌå£ÌV µ,IælËat @€ Ц@Š$™mâ‹RÔ²$™¥€Ž'@€ @€ýH±€$³¿¥4scH-K’9†¢[# @€¨R, Étc ÐeÔ²$™].–¹ @€ @€é ¤X@’9]^W#@`º©eI2§Ëëj @€ @ Ë)dv¹XæF€@jY’L· @€@Š$™ã)½•è£@jY’Ì>Ñœ  @€ @€@3 H2›1:‹vRË’d¶Ãn @€ Ð H2»Ps @`1Ô²$™‹Ay? @€ž@Š$™Ã+±’@jY’Ì!×Z @€ @€Àd H2'sù(³H-K’9Ûr @€´)bIf›øÆ"@ T µ,If) ã  @€ @€@R, Éìo)ÍœÀRË’dŽ¡èÖH€ @€* H2ÝtY µ,If—‹en @€ @`º)dN—×Õ˜®@jY’Ìéòº @€è²@Š$™].–¹ Z–$Ó-A€ @€Æ#bIæxJo¥ú(Z–$³E4g @€ ÐL Å’ÌfŒÎ"@ Ô²$™í°… @€tA Å’Ì.ÅXL µ,IæbPÞO€ @€†'bIæðJlE†$Z–$sHŵ @€ 0Y Å’ÌÉ\>J€ÀlRË’dζF'@€ @€m ¤X@’Ù&¾±(H-K’Y èx @€ Ð_ H2û[J3'0Ô²$™c(º5 @€ @€J Å’L7]H-K’Ùåb™ @€˜®@Š$™Óåu5¦+Z–$sº¼®F€ @€º,bIf—‹enz$p÷ÝwßtÓM×]wÝ~ðƒï~÷»\pÁ¹çž{öÙgéW¯~õ«_ûÚ×âßùÎw®¸âŠo¼ñöÛo¯³ºÔ²$™uÐC€ @€†!bIæ0Êjf.ÉäE]tÆgzè¡+V¬Ø{⦅üä'ï´ÓNô«ÇŸüÉŸì°Ã{íµ×þûïÿÞ÷¾÷›ßüæOúÓ5kÖ¬sÚ©eI2×)æ @€ 0 H2SY !0[[o½5^}ùÑ~ô¥/}ésŸûܧ>õ©K—.Ý~ûí·ùÕãxÄ£õ¨]wÝuÏ=÷<è ƒN9唈=ã5œÑ‘î¹çž 3O-K’9Áʇ @€ @€ÀÀR, ÉX}-‡À¬âçÊ<òÈx5泟ýì§?ýé/|á _ûÚ×rÈ!ïz×»Þýîw¿ímo{ó›ß/ÔÜm·ÝvÙe—wÜñ°Ã‹Ÿ7¿ì²Ë¢)M˜sjY’Ì V>D€ @€&bIæÀêk9f%pÍ5×DV¹ï¾ûF’ùWõW¯yÍkÞ÷¾÷xâ‰ñBÍ/ù˧vÚ'>ñ‰8àÏxÆ£ýè6Úè/xA¼23~—æm·Ý6aΩeI2'Xù @€˜@Š$™«¯å˜•@üžÌoûÛñ2ËóÎ;ï /Œ[®Zµêç?ÿù/~õˆWl^}õÕqÀ™gžùò—¿|Ë-·ŒWfFìyøá‡_{íµæœZ–$s‚• @€ @€ ¤X@’9°úZY Äß.¿þúë#®¼óÎ;›CôŸ8àˆ#Žøýßÿýø@ñ“æ¯zÕ«"í\ìøxjY’Ì V>D€ @€&bIæÀêk9f%¸'~Nü–[n‰Hs±9Ä+´3þvùŸýÙŸ-[¶,~[æ¸zõêÅŽ÷§–%Éœ`åC @€ @``)d¬¾–C ãuüñþç¾ÓN;m·Ývñæ?ýéO'Ì9µ,Iæ+"@€ @€H±€$s`õµ]ˆ×dÞpà ÇsLĘ{Üã–.]ºÿþû{Mf—Kfn @€ @`†’ÌâšÀÈn¾ùæ+®¸â°ÃÛ|óÍ#ÆÜsÏ=_ÿú×ÇoΜÀ’Z–×dN°ò! @€ 00 xMæÀêk9:+¿?3~<þ¬ù?þã?þöoÿöžð„}öÙ§ôo—}ô±çœsÞ¼ú¶ÛÖÜqGüÍuü‹¿>´ø šDuÏ=ó'Æ¿u±ð€8~ÍšùE+þÅY /Uóíø¥¤qn飚dÍ!ªÃ*»î*jþø˜dÌ+æYºº ³´p±Æ8¥:·h…qJL2¦Ú3Nlðˆ±`V/.Vµ+ZZupU¸8½èQM²´v•FéXÕÄHÆ) 0czñ¯ô>©0«=^ºÀõÁ,ªZupL¯1f,°èQaÆp îÌêÜ¢áâà ³t¸˜aT¼Á#†k°º+N,}T ¥K‹ãc† 0㔘déFˆ±â_é}RQÄXÕéõ×ÇWo€Ù~Ãl†…(}Ä)¥’a^Ý–¥wfuk•.­*qÕ0KWWU<Xÿ>‰#ãø˜dƒGL²1féF¨0K—V9Tç–.°Á¯0Kï“jbQ‚««*^º´ ¤è&©Ž6ÀŒZÇf›4j¶ôO¨b¬8=ÅdÀ…ãþóù©Ý'1V`KÑX1n_íñ¢§1·(wÌ3f»pò“ߎ±âÖZŸ†7vQíª†›¨è>©fƒ=wrìñ 3öxiÃŒM˜ fÔ.:Cœ[ÔŸãàªa–îñªa6Øãá{ꨕÛm'ɬÿ”Á‘4ˆWcÞxãñû0_÷º×ÅO”ÇoÈÜj«­^ûÚמsÎ9—_~ùŸI,L27ÞxÓ+Þñ®wþïÿþíOzõÊ•WÝëßÕ+W^¿rå-+WÞ±råÜg?;wæ™s_ÿúüW[¥n˜ûÊWæOÿÌgæâR5ÿÅXÑØ¯¸¢ìz<Ɍϰџk޲ö°3Θ wÓMóß«ÿˆO¯?üáüçÖÏ}®`ÄÏ~î‹_œ»à‚²±ªYýøÇsg5÷…/Ìzj݃ý ç¾ÿý²¸/žøÅ“Ìxvµ[«Tó8%NŒÓ‹0ã‰wL2¦Zÿ> „ ý¨~Ñþï‘1·(A"ÊQs]qX:ÊE/zfcÅ­7XÜfõÇªŽŒ›9n鸱£"5ñ<36NlŸØDõ1ãÈØ¤Q»Ø°¥h 1Vœ¢þ£vñ|,¦Zôd,Æ Ì`9í´‚±bVq|µÇ‹šXÌ-ÊóŒÙÖ_Z8Ä­µ> 3†+ª]Õ0‹¾z;ªj˜ öxÜɱÇ4ÌØã fìñ 3ö]t†87öxý†{¼j˜¥{¼j˜ öxøÇÓëïñØ¡QëØã f ŸGJ±k4̸«†Y´Ç#|«fé!λþ£j˜±ÇÏ>»`W 3ö]ƒ†§4h˜1½ 3(ª†Y¿}UG®m˜E±pÕ0£è fÜ`E͹*qÜÌqK—6ÌØ8±}JflÒØªfé“¢hAÕ“¢úÏ0£ÑE»«ž= ÌêIQƒ†åŽy–6̸-ã“H; 3öxÕ0cß}bû*ÊÝ`ÇcÅÓ€OŠâ)G; 3öxƒ†s‹§m¥ ³ý¯"£aÎä«È¢†»¦ú*²¨a®ý*rrÃŒÄàÖ[o_Fwíµ×^õëÇÅ_uÆW}þóó_õò“WuÔ—ÞøÆ<ò‘ñšÌúÏI€@cèHýèG:ê¨wÞùþàžö´§½ò•¯üô§?}Í5×Ä 5ï™ø…ÐÂ$ó¾÷ÝèaÛcÛm_ô˜Çü¥KÿiÙ²ƒîõïàeËŽ]¶ìŒeË~¸lÙ]»ì2÷œçÌý÷ÿ>ÿÄ£ô߉{á çOüãç–-«ûï€æŽ9fîÓŸ.xqE»ï>÷©OÍ /¾³Yÿ߉>ᄹ·¿}î)O)ñiO›ûoÿmîCʾڪfõ±Í=÷¹s{î9·ãŽuGÜyçù±>ô¡¹o}«þÊæŸGÅñLì/¨;ÐZÌ8%NŒÓ‹0cz1ɘjLxí¥&¿A ÁRúˆ¯ïb¬(D”cò( ?…ŽrGÑ£ôõá·VÜ`q›-¼Z·ãfŽ[:nì¨HÍG<ŠÛ'6Q}ÌØž±Ic«Æ†-}D[ˆæ§G£¨³¨ê˜ÿú_çÞóžù©Æ×w5±Ç«Wà¼å-sOzRÁX1b%ˆïìÇâ:51·(wÌ3f[iá·Öú4̸±ë7̨rÕ0cÕwTÕ0ìñ¸“c7h˜±Ç4ÌØã±[‹â©¨o_5ÌØãõfìñ+æYºÇ«†Ù`‡ìñ8½þÕE­cÇTëïñªaÆoÐ0cÇX¥ 3vMÕ0ëïñXZ„EUÃ,Ýã±C£aÆ»þ¯fìñØDõ÷xÕ0c7h˜qJƒ†ÓkÐ0ƒ"@¢aÖ_ZudÕ0£QŽúªaFÑ4̸Á<ÃŒ›9néÒ†cÅö)m˜±Ic«6n˜¥OŠ¢UOŠê?ÃŒ=í®zRÔ aKœ[Ú0£Ü fÜZñI¤†{¼j˜¥OŠâ¾ZŸ'EÑ0<)Ч¥ 3öx<½)m˜q|t†Ò†s‹§m¥ s<_E5̵_E5ÌØ¡qk­³aþâ¿øêW¿?³yÄGôëÇ>û´ë®=ñ‰ó_õ/]úÚí¶{ñ#ùÜM6ÙJ’YÿÓœ# h )åí·ßþ³ŸýìÍo~óË^ö²G>ò‘zЃöÚk¯÷¿ÿýçw^¤”ë¼æÂ$ó¿ü—ßzÀvÜd“§oºé³–,ù›%Kžw¯û.YrØ’%'/YrÉ’%wn¹åÜ;Ì=ó™e_ÜUS:ï¼¹Ýv›?}³Íæ–,©ûo=æÞüæ¹|¤à{ôñ•KflÏØ¤±UcÖ>âÉX4‡8=EEUÇl·ÝÜß8?Õú/xˆ=_êÆÏ¾ËÖ[Œ#Æñ1VœW¨ŸrÄÜ¢Ü1Ϙmý¥…CÜZëÓ0ãÆ®ß0£ÊUÃüò— fÜQUÃl°ÇãNŽ=Þ aÆ/m˜øüoÐ0cW 3®P¿aƯfé¯fƒ=þ±Çãôú{¥ 36ilÕÆ ³ôIQ´ êIQýg˜Ñ誆,EiX°WOŠ¢Ù–6Ì(w̳´aÆ­ŸDÚi˜±Ç£Ö žÅ}µ>OŠâi@ƒ'Eñ”£´aƧ7¥ 3ŽoÐ0cn1ViÃÏW‘E 3vMõUdQÃ\ûUä䆸ÔSO=þøãW¬Xñ¼_?žð„çm½õó¶Üòy|`|áæo¼ë}ï»™$³ôSã (ˆï­|å+_ùÄ'>ñ¬g=ë)OyÊSŸúÔøéò·¼å-ßøÆ7V­ZµfÍšu^ma’y¿û=`×]_¼×^ÿ²Ï>GpÀG–/?ñ^ÿNZ¾ü Ë—_¼|ùUË—ßý²—ͽá sï|gÙ§×jJñD:¾ë§¿ô¥ó_ Õüßäïú}ík/S‰W¤Ægx¡þ‰'Öeídâ™XŒŸjDÂÿO:~\åôÓç>úÑù'k/µÎ7^óšùçñ-ìÉ?ðÿ†YðVüàÏ›Þ4wÐAs/yIÝW¬˜+~ &~΢þ#n¨ø58ñÒ‘¨Ý:W”ˆSâÄ8½3¦“Œ©Æ„Óûß@Љá)}~Œ…ˆr,vý{¿? 厢Géë?Â!n­¸Áâ6»÷5'¿'næ¸¥ãÆŽŠÔ|Ä+»b¬Ø>±‰êcÆöŒMµ‹ [úˆg¶Ñâôh“—³ð£ÿóÎý¯ÿ5?Õú?•{<~$-~³S°¼üåcŸq|ŒçÆ&¾zýÿ[}Ì-ÊóŒÙ.œüä·Ã!n­õi˜qc×o˜QåªaÆ×†Qýš¸£ª†Ù`Ç{¼AÃŒ=^Ú0_ýêù=»µ´aÆñÑâܸBý†{<ÆŠy–îñªa6Øãá{¥ 36ilÕÆ ³ôIQ´ êIQýg˜±Ç«†­¯Aà – 3ÊÝ aÆ­ŸDÚi˜±Ç£Ö žÅ}ån°Ç«'EÑ0<)Ч¥ 3öx<½)m˜q|ƒ†s‹±Jfû_EFÃŒŠÇTë?)šÊW‘E síW‘E síW‘“æ-·Ür饗Ƌ>õ©OøëÇÛÞvâ+_yâË^v➸ÿþÿ¾÷Þ‡ï¾û?n±ÅÃ%™õ?Í9’?þñ#·|Å+^±Ùf›m¼ñÆpÀ¿þë¿F¶YÿR “Ìø‹?¯ý±ùÈy§¶ú›ß\¯˜ü/~Qü&œø-ÁE/©æ/H‹_¨§Ÿþ:FY8‡ø2-žçD“¯ÿõH ÏÜâÛÊñ+\^ªÎÛñC1V|‚®ÿBŽ.ªêo.Äï\ª3JuÌEÍkÄ/p+«ÂŒ—“Ås¿øÍ6õ1£vñ4ìg?+û}°ÇÏDßxã|íê/­:2N‰ãô¢Fáb’1Õ˜pÍ!(¤Á¤ÅÜ¢Qˆ(GÍáâ°(tü®Å(zQHcÅ­7XÜfõÇªŽŒ›9dâÆ®¿âÈ+¶Ol¢"ÌЈÚ½’¶º-£-DsˆÓë«‹ÚÅO>ÆT‹œ+0ãÙE›®ª]µÇ‹šXÌ-ÊóŒÙÖ¯]8„Æú4ÌÒ=^5Ì¢6a6Øãq'ÇoÐ0cÇ*ª]ìÐØã f컪aÆê7̘[Õ0K÷xÕ0ìñð=§×ßã±ïâ”Øã f × aÆ®iÐ0ã6®fÑ/<«†YtŸ¬m˜qnQ†ìÑbdž­¿Ç㎪öxƒ†§4h˜qJƒ†Uì¿´êÈÀ¯fý n˪aFÑ4̸ÁŠšóÚ'EqK—6ÌØ8±}JflÒØwfé“¢hAÕ“¢ú!n˪aÆ/z˜Õ“¢h¶¥ 3Êó,m˜q[Æ'‘vfìñ¨uƒ'Eq_E¹ìñ¸“ìñ.öx<åh§aÆ}O¥JfÌ­AÃ\ÿ'EÑoë&þQñ˜jÑ'ÖêIÑú|YÔ0c×T_E5ÌØ¡¡Ñ¸a®ý*òœsî8餋ßõ®•Ûnë/þTŸOü—é D†‰åqÇ·ûî»W¯ÆüË¿üËøÃgŸ}öOJ~œca’¹é¦KŽ8âØÓN;ï‚ V_yåšèö“ÿų”h¶ñ¡ô©QpÄ'ôxU@œ™<ÊÂÆXñÄ£ôùC|‰Ï ñ]ª…—ªóvL/ÆŠ©}Ê‹Oèñ´6†‹oµ×¥:&Ž'™¿øEÙXÕ“Œsc¶õ‡ ö+0‹žgV…‹'ÞQ»úcUGÆ)qb)fL/&S-ºO‚"@â¯R–>¢Ð1Vœ[Z»(w½èyfŒQ»¢ÂU˜1\È=5 Š+0cÕÇŒ#czQ»˜jé#ÚBŒ§×.VÇÇ21ÕÒM3 –¢±b¸8>ÆŠsKkåŽyÕ.ÆŠ[«µ†ÃU ³(À‰*W ³Á{<äã¶l­aÆ}¡Á¯fé}·V˜Ý'kfìñÒ}׸aF¹c#”>b7h˜¡Q5Ì¢=c…FL²t‡g ç6h˜±ÇcU©óߘ[¬.N)-\ÈÇ)qbœ^´À8¥Aà Š.Xê,já11·ªa=ë‹BWOŠŠ6BŒû4n°¢±ª{8&·tf WíñÒ†’±ïZn˜1ÕÒg)YôgÙ+ɨ]ƒ=s‹»+{ÇfÔºý'EQˆ¢=·qìñØAí4̘[ƒ†s‹M׸a6Øã±ïJ÷x´²h˜Qñ˜jÑ£zRÔ aFí4ÌØ5 æÚ¯"`Æ$㶬úóO~rǾpññǯ|Ìc$™E·‰ƒ (ˆ3^~yàÆ«1ò‡Äï»8ì°Ãâãñk3ëüPùÚ‘&™ñ2òcŽ9ö›ß÷‰ÿî¶Ûnûí·ß©§žzÆgœ¾È#Î_Æ_N]ü‘Z–$sq*!@€ @€CH±€$sh¶3¸úê«ßøÆ7>ó™ÏÜrË-ï{ßûn²É&zЃúЇ>ö±Wi.ýMxÿ¾g”SË’dN°ò! @€ 00 H2V_Ë!0+øM˜ÿôOÿ´ûî»?ìa‹Ÿ.Çï®ëÇì¹çžW\qÅ„9§–%Éœ`åC @€ @``)d¬¾–C`Vñç~âWb~ðƒ<üðÃýÕ#~Ò|ò#Ž:î¸ãâošO˜sjY’Ì V>D€ @€&bIæÀêk9&Z–$s`õµ @€ 0A Å’Ì V>D€ÀÌRË’dμ"&@€ @€ZH±€$³5y Ð@ µ,IfC§ @€ @€ž ¤X@’ÙÓ:š6‘¤–%ÉIÝ-“ @€„@Š$™î º,Z–$³ËÅ27 @€ 0] H2§ËëjLW µ,Iæty] @€tY Å’Ì.ËÜH-K’é– @€ @€ãH±€$s<¥·R}H-K’ÙÇ"š3 @€h&bIf3Fg ÐŽ@jY’ÌvØB€ @€º bIfŠb,&Z–$s1(ï'@€ @€ÃH±€$sx%¶"CH-K’9¤âZ  @€˜,bIæd.%@`¶©eI2g[£ @€ @€6R, ÉlßX” ¤–%É,t< @€è¯@Š$™ý-¥™ƒ@jY’Ì1Ý  @€ @€@%bI¦ƒ. ¤–%Éìr±Ì @€LW Å’ÌéòºÓH-K’9]^W#@€ @€]H±€$³ËÅ27RË’dº% @€ @€ÀxR, ÉOé­”@RË’dö±ˆæL€ @€š ¤X@’ÙŒÑY´#Z–$³v£ @€ @€.¤X@’Ù…¢˜‹ ¤–%É\ Êû  @€ @€ÀðR, É^‰­ˆÀRË’d©¸ÖB€ @€& ¤X@’9™ËG ˜­@jY’ÌÙ–Ãè @€ @ M H2ÛÄ7¥©eI2KO€ @€ú+bIfKiæÆ Z–$s E·F @€ P ¤X@’éÆ @ Ë©eI2»\,s#@€ @€ÓH±€$sº¼®F€ÀtRË’dN—×Õ @€ @€@—R, Éìr±ÌÔ²$™n  @€ 0 H2ÇSz+%ÐGÔ²$™},¢9 @€ @€f)d6ctí¤–%Él‡Ý( @€ @  )dv¡(æ@€Àb©eI2ƒò~ @€ 0< H2‡Wb+"0$Ô²$™C*®µ @€ @€É)dNæòQf+Z–$s¶å0: @€hS Å’Ì6ñE€@©@jY’ÌR@Ç @€ @€þ ¤X@’ÙßRš91¤–%ÉCÑ­‘ @€T)dº1è²@jY’Ì.ËÜ @€ @€ÀtR, Éœ.¯« 0]Ô²$™Óåu5 @€ Ðe H2»\,s#@ µ,I¦[‚ @€ŒG Å’Ìñ”ÞJ ôQ µ,If‹hÎ @€ @ ™@Š$™ÍE€@;©eI2Ûa7  @€è‚@Š$™](Š9 °˜@jY’ÌÅ ¼Ÿ @€ O Å’Ìá•ØŠ I µ,IæŠk- @€ @`²@Š$™“¹|”Ù ¤–%Éœm9ŒN€ @€ÚH±€$³M|c P*Z–$³Ðñ @€ @ ¿)dö·”fN` ©eI2ÇPtk$@€ @€•@Š$™n º,Z–$³ËÅ27 @€ 0] H2§ËëjLW µ,Iæty] @€tY Å’Ì.ËÜH-K’é– @€ @€ãH±€$s<¥·R}H-K’ÙÇ"š3 @€h&bIf3Fg ÐŽ@jY’ÌvØB€ @€º bIfŠb,&Z–$s1(ï'@€ @€ÃH±€$sx%¶"CH-K’9¤âZ  @€˜,bIæd.%@`¶©eI2g[£ @€ @€6R, ÉlßX” ¤–%É,t< @€è¯@Š$™ý-¥™ƒ@jY’Ì1Ý  @€ @€@%bI¦ƒ. ¤–%Éìr±Ì @€LW Å’ÌéòºÓH-K’9]^W#@€ @€]H±€$³ËÅ27RË’dº% @€ @€ÀxR, ÉOé­”@RË’dö±ˆæL€ @€š ¤X@’ÙŒÑY´#Z–$³v£ @€ @€.¤X@’Ù…¢˜‹ ¤–%É\ Êû  @€ @€ÀðR, É^‰­ˆÀRË’d©¸ÖB€ @€& ¤X@’9™ËG ˜­@jY’ÌÙ–Ãè @€ @ M H2ÛÄ7¥©eI2KO€ @€ú+bIfKiæÆ Z–$s E·F @€ P ¤X@’éÆ @ Ë©eI2»\,s#@€ @€ÓH±€$sº¼®F€ÀtRË’dN—×Õ @€ @€@—R, Éìr±ÌÔ²$™n  @€ 0 H2ÇSz+%ÐGÔ²$™},¢9 @€ @€f)d6ctí¤–%Él‡Ý( @€ @  )dv¡(æ@€Àb©eI2ƒò~ @€ 0< H2‡Wb+"0$Ô²$™C*®µ @€ @€É)dNæòQf+Z–$s¶å0: @€hS Å’Ì6ñE€@©@jY’ÌR@Ç @€ @€þ ¤X@’ÙßRš91¤–%ÉCÑ­‘ @€T)dº1è²@jY’Ì.ËÜ @€ @€ÀtR, Éœ.¯« 0]Ô²$™Óåu5 @€ Ðe H2»\,s#@ µ,I¦[‚ @€ŒG Å’Ìñ”ÞJ ôQ µ,If‹hÎ @€ @ ™@Š$™ÍE€@;©eI2Ûa7  @€è‚@Š$™](Š9 °˜@jY’ÌÅ ¼Ÿ @€ O Å’Ìá•ØŠ I µ,IæŠk- @€ @`²@Š$™“¹|”Ù ¤–%Éœm9ŒN€ @€ÚH±€$³M|c P*Z–$³Ðñ @€ @ ¿)dö·”fN` ©eI2ÇPtk$@€ @€•@Š$™n º,Z–$³ËÅ27 @€ 0] H2§ËëjLW µ,Iæty] @€tY Å’Ì.ËÜH-K’é– @€ @€ãH±€$s<¥·R}H-K’ÙÇ"š3 @€h&bIf3Fg ÐŽ@jY’ÌvØB€ @€º bIfŠb,&Z–$s1(ï'@€ @€ÃH±€$sx%¶"CH-K’9¤âZ  @€˜,bIæd.%@`¶©eI2g[£ @€ @€6R, ÉlßX” ¤–%É,t< @€è¯@Š$™ý-¥™ƒ@jY’Ì1Ý  @€ @€@%bI¦ƒ. ¤–%Éìr±Ì @€LW Å’ÌéòºÓH-K’9]^W#@€ @€]H±€$³ËÅ27RË’dº% @€ @€ÀxR, ÉOé­”@RË’dö±ˆæL€ @€š ¤X@’ÙŒÑY´#Z–$³v£ @€ @€.¤X@’Ù…¢˜‹ ¤–%É\ Êû  @€ @€ÀðR, É^‰­ˆÀRË’d©¸ÖB€ @€& ¤X@’9™ËG ˜­@jY’ÌÙ–Ãè @€ @ M H2ÛÄ7¥©eI2KO€ @€ú+bIfKiæÆ Z–$s E·F @€ P ¤X@’éÆ @ Ë©eI2»\,s#@€ @€ÓH±€$sº¼®F€ÀtRË’dN—×Õ @€ @€@—R, Éìr±ÌÔ²$™n  @€ 0 H2ÇSz+%ÐGÔ²$™},¢9 @€ @€f)d6ctí¤–%Él‡Ý( @€ @  )dv¡(æ@€Àb©eI2ƒò~ @€ 0< H2‡Wb+"0$Ô²$™C*®µ @€ @€É)dNæòQf+Z–$s¶å0: @€hS Å’Ì6ñE€@©@jY’ÌR@Ç @€ @€þ ¤X@’ÙßRš91¤–%ÉCÑ­‘ @€T)dº1è²@jY’Ì.ËÜ @€ @€ÀtR, Éœ.¯« 0]Ô²$™Óåu5 @€ Ðe H2»\,s#@ µ,I¦[‚ @€ŒG Å’Ìñ”ÞJ ôQ µ,If‹hÎ @€ @ ™@Š$™ÍE€@;©eI2Ûa7  @€è‚@Š$™](Š9 °˜@jY’ÌÅ ¼Ÿ @€ O Å’Ìá•ØŠ I µ,IæŠk- @€ @`²@Š$™“¹|”Ù ¤–%Éœm9ŒN€ @€ÚH±€$³M|c P*Z–$³Ðñ @€ @ ¿)dö·”fN` ©eI2ÇPtk$@€ @€•@Š$™n º,Z–$³ËÅ27 @€ 0] H2§ËëjLW µ,Iæty] @€tY Å’Ì.ËÜH-K’é– @€ @€ãH±€$s<¥·R}H-K’ÙÇ"š3 @€h&bIf3Fg ÐŽ@jY’ÌvØB€ @€º bIfŠb,&Z–$s1(ï'@€ @€ÃH±€$sx%¶"CH-K’9¤âZ  @€˜,bIæd.%@`¶©eI2g[£ @€ @€6R, ÉlßX” ¤–%É,t< @€è¯@Š$™ý-¥™ƒ@jY’Ì1Ý  @€ @€@%bI¦ƒ. ¤–%Éìr±Ì @€LW Å’ÌéòºÓH-K’9]^W#@€ @€]H±€$³ËÅ27RË’dº% @€ @€ÀxR, ÉOé­”@RË’dö±ˆæL€ @€š ¤X@’ÙŒÑY´#Z–$³v£ @€ @€.¤X@’Ù…¢˜‹ ¤–%É\ Êû  @€ @€ÀðR, É^‰­ˆÀRË’d©¸ÖB€ @€& ¤X@’9™ËG ˜­@jY’ÌÙ–Ãè @€ @ M H2ÛÄ7¥©eI2KO€ @€ú+bIfKiæÆ Z–$s E·F @€ P ¤X@’éÆ @ Ë©eI2»\,s#@€ @€ÓH±€$sº¼®F€ÀtRË’dN—×Õ @€ @€@—R, Éìr±ÌÔ²$™n  @€ 0 H2ÇSz+%ÐGÔ²$™},¢9 @€ @€f)d6ctí¤–%Él‡Ý( @€ @  )dv¡(æ@€Àb©eI2ƒò~ @€ 0< H2‡Wb+"0$Ô²$™C*®µ @€ @€É)dNæòQf+Z–$s¶å0: @€hS Å’Ì6ñE€@©@jY’ÌR@Ç @€ @€þ ¤X@’ÙßRš91¤–%ÉCÑ­‘ @€T)dº1è²@jY’Ì.ËÜ @€ @€ÀtR, Éœ.¯« 0]Ô²$™Óåu5 @€ Ðe H2»\,s#@ µ,I¦[‚ @€ŒG Å’Ìñ”ÞJ ôQ µ,If‹hÎ @€ @ ™@Š$™ÍE€@;©eI2Ûa7  @€è‚@Š$™](Š9 °˜@jY’ÌÅ ¼Ÿ @€ O Å’Ìá•ØŠ I µ,IæŠk- @€ @`²@Š$™“¹|”Ù ¤–%Éœm9ŒN€ @€ÚH±€$³M|c P*Z–$³Ðñ @€ @ ¿)dö·”fN` ©eI2ÇPtk$@€ @€•@Š$™n º,Z–$³ËÅ27 @€ 0] H2§ËëjLW µ,Iæty] @€tY Å’Ì.ËÜH-K’é– @€ @€ãH±€$s<¥·R}H-K’ÙÇ"š3 @€h&bIf3Fg ÐŽ@jY’ÌvØB€ @€º bIfŠb,&Z–$s1(ï'@€ @€ÃH±€$sx%¶"CH-K’9¤âZ  @€˜,bIæd.%@`¶©eI2g[£ @€ @€6R, ÉlßX” ¤–%É,t< @€è¯@Š$™ý-¥™ƒ@jY’Ì1Ý  @€ @€@%bI¦ƒ. ¤–%Éìr±Ì @€LW Å’ÌéòºÓH-K’9]^W#@€ @€]H±€$³ËÅ27RË’dº% @€ @€ÀxR, ÉOé­”@RË’dö±ˆæL€ @€š ¤X@’ÙŒÑY´#Z–$³v£ @€ @€.¤X@’Ù…¢˜‹ ¤–%É\ Êû  @€ @€ÀðR, É^‰­ˆÀRË’d©¸ÖB€ @€& ¤X@’9™ËG ˜­@jY’ÌÙ–Ãè @€ @ M H2ÛÄ7¥©eI2KO€ @€ú+bIfKiæÆ Z–$s E·F @€ P ¤X@’éÆ @ Ë©eI2»\,s#@€ @€ÓH±€$sº¼®F€ÀwÞ}æ²Ë.;óÌ3W®\ùáøCúÐÛßþöÃ?ü°ÃûçþçãŽ;î‹_üâ~ô£»îºk\©eI2×)æ @€ 0 H2SY !ÐÛn»íæ›oŽ óàƒ~ÉK^²ûî»?ùÉOþ½ßû½Í7ß|£6ÚxãŸò”§¼éMoŠ0óöÛo_çœSË’d®SÌ @€ @`0)d¦²B  ÷ÜsÏM7Ýtýõןp ûï¿ÿ_ÿõ_ÿÅ_üÅn»í¶ýöÛ?êQÚtÓM%™](“9 @€ @€^H2{Q&“$ÐSH2þóŸÿä'?yÃÞðˆG<âáø“žô¤§=íiûì³Ïßþíßn½õÖ‘dF°y衇žuÖY^“ÙÓ*›6 @€hG@’ÙŽ³QŒS ’Ì«¯¾úÊ+¯|ë[ߺóÎ;?þñß{ï½ÿîïþîU¯zÕË_þòm¶ÙF’9Îê  @€ @€@If4§ P_`Íš5ñ§|~ñ‹_Dž¹jÕªx‰æêÕ«øÃžþùlJ2ëK:’ @€Œ\@’9òÀò ´/p÷ÝwÇoμüòËwÙeIfûþF$@€ @€=dö´p¦M ¿’ÌþÖÎÌ  @€ @€À $™3Ä74q D’yÝu×Ř?ñ‰OôšÌqÞVM€ @€H2 9…õd®žs  @€ @€Àh$™£-½…˜•€$sVòÆ%@€ @€½döº|&O ’Ì>VÍœ  @€ @€ÀÌ$™3/ ›€$sl·^ @€ 0IæT]„úÓJ27Ùd“C9䤓N:óÌ3/¼ð‹ïõøÎw¾sùå—_uÕU·ÜrË=÷ÜS†Ž$@€ @€Ú¸óÎ;¯¹æšÕ«Wï{ß»×Wùóï8ÿüó?þñuÔQÛm·Ý’%K–/_~ÞyçÅñkÖ¬i¶F$@` ÓJ2ë·~kÇw|úÓŸþ¬g=ëoþæožw¯Ç¾ûî{Øa‡|òÉ—\rI4Ã1ØZ# @€è¯ÀÕW_}ê©§üñ+V¬¸×WùóïxîsŸ»Ç{ìºë®›m¶™$³¿…6s=˜b’¹Ë.»DŒùüç?ÿE/zÑ~÷zxàGqħ>õ©K/½ô®»îê‘© @€ @€ \{íµŸÿüçÿã?þãu¯{ݽ¾ÊŸÇßÿýßïµ×^ñ¢¦Í7ß\’9Â;Ä’ ´/0­$sÓM7}Ç;Þqúé§ûÛߎW’ÇO‘§G|+çúë¯-_£Ñþ2H€ @€ Dbpë­·Þ|óÍi¦¯ñ«ÿ½òÊ+¿ô¥/}ä#yÌc#É,²u0ͦ•dFË:öØcýBŒfUp @€耿øÓ»’™0¾ H2û^Aó'@€ @€3d΄ݠÆ, Ésõ­ @€4d6¦s"Í$™ÍÜœE€ @€F. Éù `ùÚd¶onD @€ 0IæŠh º/pÝu×ýð‡?¼ì²Ë.¹ä’‹/¾øë_ÿúç>÷¹¥K—Þÿþ÷ßi§V¬XqÜqÇþùñÑxÄa·ÝvÛ]wÝuÏ=÷¤¥¥–å/þ$ÿK€ @€,båË—ûCÀ.·¥˜•@Ęgžyæi§öÉO~òãÿø 'œpÌ1Çl»í¶m´ÑŸþéŸ>ÿùÏÿ—ù—}ìcñÑxÄa×_}„™ñêÍ4áÔ²$™ÉÇÿ @€ @€ ¤X@’9àZ[ œsÎ9ï{ßûÞñŽwvØa‡rÈAôŠW¼b›m¶¹ßýî÷ð‡?|·Ýv{Ñ‹^tðÁú«Ç;ßùÎ+¯¼òÆo\³fMšsjY’Ìäã  @€ @€À€R, Ép­-À ☻îºëöÛo¿ÕV[m¹å–[l±Åæ›o?Z~ßûÞ7þ»é¦›n¶Ùf~ðƒãCyÈCûØÇž{V­ºýöÛÓœSË’d&ÿK€ @€,bIæ€kmif(ð|àÏxÆŽ;î¯ÀüÃ_?âí…ÿ[½;Þ³óÎ;ë[ßúéO *Í9µ,Ifòñ¿ @€ @`À)d¸Ö–F`†7ÝtS$“ñ3ã?®ñˆÃ¢5ÝûGËcþ©eI2gXSC @€ @€–R, ÉlÙßp ¤–%É,Òs0 @€èµ@Š$™½®¦É¼@jY’ÌÁWÜ  @€ @€ÀZ H2×Êxƒ ¤–%Éì`L‰ @€l  H27³Ë 0Ô²$™SQu @€ Ð  H2{Q5“$0ZÔ²$™£½,œ @€F(bIæïK&Ð#Ô²$™=ª© @€ @€õH±€$s==N€ÀH-K’¹Aµ]œ @€tJ Å’ÌNUÇdH©eI2“ÿ%@€ @€H±€$sÀµ¶4H-K’9€šZ @€¨)bIfM7‡ 0Ô²$™3©‚A  @€ @€ÀLR, ÉœI J€@MÔ²$™5ÝF€ @€ bIæjj ,Z–$sÀµ¶4 @€ R, ÉL>þ—N ¤–%ÉìTuL† @€lP H27¨¶‹ °ž©eI2×ÓÓé @€ @ G)dö¨v¦J`„©eI2GxX2 @€ŒV Å’ÌÑÞ N ©eI2{Q5“$@€ @€SH±€$s*ª.B€ÀH-K’¹œ]– @€tP Å’ÌÖÈ”X+Z–$s­Œ7 @€ @€ÀàR, É|Å-@¯RË’döºš&O€ @€ŠR, É,Òs0- ¤–%ÉlÙßp @€ @`†)dΰ†&@`©eI2×)æ @€ 0 H2SY !0HÔ²$™ƒ¬²E @€ @€ß(bIæoTòN:"Z–$³#u1  @€ Ђ@Š$™-˜‚Æ©eI2K:‘ @€ôN Å’ÌÞUЄ ŒJ µ,I横o± @€ 0r H2G~?X>Ž ¤–%Éìx½L @€LQ Å’Ì)ÚºSH-K’9ua$@€ @€H±€$³³•21B µ,I¦»‚ @€ŒG Å’Ìñ”ÞJ ôQ µ,If‹hÎ @€ @ ™@Š$™ÍE€@;©eI2Ûa7  @€è‚@Š$™](Š9 °˜@jY’ÌÅ ¼Ÿ @€ O Å’Ìá•ØŠ I µ,IæŠk- @€ @`²@Š$™“¹|”Ù ¤–%Éœm9ŒN€ @€ÚH±€$³M|c P*Z–$³Ðñ @€ @ ¿)dö·”fN` ©eI2ÇPtk$@€ @€•@Š$™n º,Z–$³ËÅ27 @€ 0] H2§ËëjLW µ,Iæty] @€tY Å’Ì.ËÜH-K’é– @€ @€ãH±€$s<¥·R}H-K’ÙÇ"š3 @€h&bIf3Fg ÐŽ@jY’ÌvØB€ @€º bIfŠb,&Z–$s1(ï'@€ @€ÃH±€$óÿ°wàQUëû÷Ÿ={’ÐKè„Þ;„Þ{ï È¡("(*"Š ‚  ‚EQDEE±"ö†`Å‚‚Ò¥ R¤7 ž÷vò7oΦHI&S¾såŠc2³÷ZŸ5¬ì¹g•Èkbj„@$ xº,’ÌHj\ê‚ € € €À™<±I晹ø-¤¯€§Ë"ÉLßæàì € € €SÀ dŸs!€À¹ xº,’Ìsäñ € € €„¯€' É ß¦¤äDƒ€§Ë"ÉŒ†F§Ž € € €$ xb’L^ Êž.‹$3”‹²!€ € € ºžX€$3uy9¤®€§Ë"ÉL]^ކ € € €@( xb’ÌPn,ʆž.‹$“— € € €Ñ#à‰H2£§é©)á(àé²H2ñ)3 € € €ç'à‰H2Ï‘g!€@p<]IfpØ9  € € €¡ à‰H2C¡Q(œNÀÓe‘džŠŸ#€ € € yžX€$3òš˜!Iž.‹$3’—º € € € pfO,@’yf.~‹é+àé²H2Ó·98; € € €ÁðÄ$™ÁÄç\ p®ž.‹$ó\y< € € €á+à‰H2÷))9Ñ àé²H2£¡Ñ©# € € €IžX€$“„²€§Ë"É åÆ¢l € € €¤®€' ÉL]^ކ©+àé²H2S——£!€ € € ÊžX€$3”‹²!€€§Ë"Éä% € € €@ôxb’ÌèizjŠ@8 xº,’ÌplDÊŒ € € €Àù xb’ÌócäY O—E’v΂ € € €@(xb’ÌPhÊ€§ðtY$™§ƒâç € € €Dž€' ÉŒ¼&¦FD’€§Ë"ÉŒ¤Æ¥. € € €œYÀ dž™‹ß"€@ú xº,’ÌômÎŽ € € €@0<±If0ñ9œ«€§Ë"ÉùÔu×]ß²e«ÄĦ9r´È˜±¥ãt6ë’1cë,YZ”-Û¢yó}ûö{ê©§_}þáÇ 3ë¡)mH xb’Ìj ƒO—E’éñá@@@ hš*~ðàÁ§ŸžÝ¢Eë’%ËÄÆfòùŠ™ 0aö¨Ùãf7™]í8µÇÍ“'_‡®¸b°Ff’d­8Qä xb’ÌÈkbj„@$ xº,’ÌHj\ê‚ € €@ (ܳgϺuëx`rµjÆÄÔðù:˜M2›n6ßì ³f“çRÇ©’#GõzõuïÞcåÊ•š~ìØ±0ª,EE t<±Ifè4 %A“<]IæÉDü@@‚  (rÑ¢EÚʧW¯^~¿ßçëc6Çì³}fGÍþ0û¿À#fß™=ë8cbb²'$$è)z¢ÂÌ ’S yžX€$3òš˜!Iž.‹$3’—º € € FzoòÚk¯Ý{ï½íÚu5Ëj6Ôl‘Ùš@€ù_³”_?Î©Ž“'OžBÃùÊ+¯üúë¯aTYŠŠ@èxb’ÌÐiJ‚' xº,’Ì“‰ø  € €A@[–+Ƽä’þ5j´sݪ>ßT³]ó¯ÿ1i3ûÝqÅÄTË•«òÀƒï¸ãŽõëסœÈðÄ$™‘×ÄÔHðtY$™‘Ô¸Ô@@0øý÷ßHöèÑ«J•¶®[Çç›ivø¤ óÿ™é8ßÄÄÔΙ³Zß¾—=zíÚµaTYŠŠ@èxb’ÌÐiJ‚' xº,’Ì“‰ø  € €A@IæØ±c;uêV¡B{Çiæ8O›ývÆ$s‰ßß$GŽz={ö1bÄš5k‚PHN@ä xb’ÌÈkbj„@$ xº,’ÌHj\ê‚ € €@ (ɼí¶Ûºté^±¢’Ì&Žó”Ù!³“§–kX¦~xBc2ýþÆ9rÔíÕë’›nº‰$3ŒÚ𢆔€' É ©Ö¡0 àðtY$™þ@@‚#pôèÑ'žxbĈ‘·óùò9Î8³õËOœ42ó Ù/fó|¾Â¹r5êÖ3flÙ²%8åä,D˜€' ÉŒ°ö¥:D˜€§Ë"ÉŒ°ö¥: € €„‹ÀüñüóÏ?¾U+%™ç&³f;Íþ<)ÉÜcö“ÙsŽ“#wî¼'N|î¹ç¶oß.5¥œ„”€' É ©Ö¡0 àðtY$™þ@@‚#püøñ%K–ÌŸÿÆW\•5k®¸¸ŽŽs›ãhߟÍ~6Ûov pç'ÇyE¿Š‰”#GÁ²e+Ì›7OOü/ € €M@›þìØ±cÖ¬'Û´i_±býøøÊ™3· ,˜ùÙ f/šéÎ]2ôÊ‘£l±bÕ;vì:hÐ`­©56Oœ8´rr""IÀ dFRãR"OÀÓe‘dF^S#@@ÂE@Ã25Ç|Û¶mß~ûí­·Ž­Y³^±bebb²›e6˦/ÇÉ¢¯Š'&ÖîÝû’Å‹¯ZµêرcáRAʉ@ xb’Ìl#Š„Éž.‹$3Y†; € € | ­Ü»wïúõë§Ly¸K—î 4*R¤hþüùóåË—7oÞ‚ *T¨V­Ú:u>|ĪU«ùåæ•¿™8c$ xb’ÌHj\ê‚@ä xº,’ÌÈkbj„ € €@x (™Ô0Ëýû÷oÛ¶}Íšµ|ðÁüùógnï¾ûî¢E‹–/_®q›»víÒÃ4†3¼jGi5O,@’j Dy@ ¥€§Ë"ÉL‰Ã}@@HGM6?|øðš5k–-[¦sáÂ…«W¯Þ´iÓ¾}ûô+ÝÒ±lœˆðÄ$™Ó²TˆðtY$™ÙÊT @@0ÐøLíK®=Í•^ê¦ûGŽaf˜¶&ÅMO,@’šÍD©@ IÀÓe‘dòÂ@@@@ z<±Ifô4=5E <]If86"eF@@@àü<±Iæù1ò,Ž€§Ë"É ;gA@@@ <±If(4 e@Ó xº,’ÌÓAñs@@@"OÀ dF^S#"IÀÓe‘dFRãR@@@Î,à‰H2ÏÌÅo@ }<]Ifú6gG@°øë¯¿Nœ8¡ý”nºsìØ±°«FˆZO,@’µ¯*Ž@Xxº,’̰h5 ‰ €!" S¹åï¿ÿ¾jÕª~øaùòå+W®Ü±cÇŸþ©x3D I1@8ƒ€' É<ƒ¿BtðtY$™éÞ"@ÂB@Q‡Ú»wïÆ›V¯^óÁ¼ýöÛï¾ûîûïðí·ßnÚôó®]»þíèÑ£J;âF@ :<±Ift¾ ¨5á"àé²H2Ã¥á(' €¤—€’IÝ–-[öì³ÏNš4©fÍÚ*TJHH(P @Á‚ *T¦L¹êÕkÝxãÈW^yåË/¿ýôÓx`èÐayóΚ5ãd5Ë¢/ÝÉ”)OîÜ…ûôéÿ裾óÎ;8~üxXTB"€D¡€' ÉŒÂ×UF Œ<]IfµEE@à (“üì³Ï^ýõk®¹¦téÒ… U‰éäºÿ1»×lªÙCf÷¹î5±±-óç¯S®\¥nݺ͟?_óÍ~¿´œ@ðÄ$™ÿ*Æ@ <]If:¶§F@ÐP ùâ‹/=ðÀä6mڛŚ3lv‹ÙGf‹Í>×ÇyÐqú9N5³Œ*Tž:uêo¼¡]B¿v”@ <±If¾¨2a$àé²H2èí(* €Y@;’k—Ÿ±coëÞ½Gùò-̪›u7{Éì=³õf[Ì~ÜQž9×ìJÇ©œPç’KŽs›ö ri9 €g#à‰H2ÏÇ €@z xº,’Ìôj΋ €¡/pìØ±]»v·k×![¶œqq Ì&•1ûïÿ~ýe¦¯ç§gƌ͊­Ô¸qó­[·†~)! €@ xb’Ì(| PeÂHÀÓe‘d†QÛQT@¦À‰'4 óçŸnÙ²UæÌYcc[™1{ÂìèÿƘJ5“’Ì×gH\\·üùËÖ©SãÆ Bµéy0Ë̹@øWO,@’ù¯b<ÒQÀÓe‘d¦c[pj@eåëÖ­Óv?5kÖ2sÌ.3[h¶ÔìøIIfÒÍÍ^4»ÕçË[´hÑ%K–ìÚµK å:R6@(ðÄ$™Qø Ê„‘€§Ë"É £¶£¨ € L]5ýôÓOŸ~úi5ìïÛåý}Wþyš$s…Ùkf·›å)\¸°¶/ß¹s'If0›Œs!€œ€' É<4ƒé%àé²H2Ó«!8/ €„¸€®š’Ædþ“djLæ'fËNŸd.7{Åì6³ÜJ2¿ÿþû={öd†x+S<@ <±If¾¨2a$àé²H2èí(* €S@!ä¦M›¾úê«:uêø|>Çécö¦Ù—§Ÿ]¾Äì)ÇS D‰’Ë–-Û·oßñãǃYfÎ… €À¿ xb’Ìã Žž.‹$3Û‚S#€ €@( h³]8i†xûöræÌ“1cCÇè8÷šýØâ'im̤ï'4PÓqžñùzdÎܬdÉ*Í›·Ü²åíʤl €Ñ)à‰H2£óe@­O—E’. G9@@ øþùç¾}û{ôèU¨P±lÙê:NWǹÅl§Ùofÿgv,ð]wô¿çŸ¯UöìõªU«×¥K·íÛw¿Àœ@ðÄ$™ÿ*Æ@ <]If:¶§F@Ðøã?fÏ~æŽ;&4kÖQ[ù˜UqœáŽ3Þì]³ßç9Οo¨Ï×ÔçËW®\­»ï¾ï…æ>|8ôkG @¢PÀ dFák€*#Fž.‹$3ŒÚŽ¢"€ €@ð´Zæ‚ æÎÛ£GÀæñŽÓÆqz™=möRàû4ǹÖçkäóóùb«W¯¡/^¼XhðKË@øWO,@’ù¯b<ÒQÀÓe‘d¦c[pj@}­u¹qãÆåË—O›6­W¯^­[wÍ“§~öì |¾‹Ì.vœn>_çÌ™[äÍ[»AƒŽýúõ7n¼öúùå—_Øë'ô—"€Ñ)à‰H2£óe@­O—E’. G9@@ }V¯^ýÚk¯ÝwßýåËW.\¸¸ßï×M×õÇÄÄåËW°bŪ7ÝtË;ï¼³téRFc¦oKqv@3 xb’Ì3sñ[B_@ûT†~!Ï»„ž.‹$ó¼%y" €D•ÀæÍ›?ýôSÍïßÿríÔ¨Q£zõê5jÔ¸Y³æÚßç²Ë>úèc_ýõºuët¹U2T@ ¼<±Ifx5¥E Ú<]If´½¨/ €œŸ€¦™kÍL·ü/a'À:™a×d@@à<´Ó¥n[·nýî»ï,X0s欇~äÎ;'ÞqÇ÷Ýwÿ”)¿ðÂÜ… .]ºT³–´]ûyœ‚§ €„šIf¨µåAà"û"ÍÓe1&ó_-<@_Ř'NœX²dÉìÙ³ï¸cBóæ­kæÏŸ'O¾Ò¥ËV«V£wï>wÝu×sÏ=wèСcÇŽ…oM)9 €@²€'`Lf² wS]Î…iÉϦ؞.‹$ólÐx  € yºèݽ{÷š5kTÞtÓM}û(_¾IBBí¸¸Š11sæ¬V°`­úõÛ_vـѣoýâ‹/ôH]IFž5B¢MÀ dFÛ €úF˜€>˜Ž°yªãé²H2=>ü/ € %G}ï½÷†Þ¨Q£9rÄÅrÝŽ>_?³ñf“ç:Çéï÷×Í!Kþü…Ú´iË-£·oßÙÓ—¢¤é©&D¹€' ÉŒò×ÕG Ä<]Ifˆ·ÅC@ÒB@ׄûöí{饗úõëW¥J˜˜|f̘ 7›aö„Ùf#§ƒãÊž½d­Zõ®¼òêµk׳f_›ÍñùnË!Wµj‰Ó¦M{óÍ7wíÚÖÕ§ð €@” xb’Ì(=P}B\ÀÓe‘d†x{Q<@@ Õ´¹¶#ë­·´¦™cÖÕlšÙ;f‡Íþ›âëO³Mf‹Ì¦˜å(S¦üĉµ¨¦æ˜§z‘8  €@Ð<±IfÐä9œ‡€§Ë"É<Cž‚ €„µ€fˆÏ;w„;Û´éìºñ>ß­f«Ív™)ºL™dþevÔl¿ÂLŸ¯AÁ‚ /¾ø’‘#oÒxΰ®>…G¢\À dFùëê#âž.‹$3ÄÛ‹â!€ €©. 2g̘1lØõµõû ø|÷âÊÿc¦Œ4—ù|óäiÙªUçAƒ®X¾|yª‰"€MÀ dMž!€Àyxº,’Ìó0ä) € €@X (É|ä‘G®¹æÚ ÚÅÄw݇ cjfÊô2åýç¢\¹Ú6mÚ¾ÿË~üñǰ®>…G¢\À dFùëê#âž.‹$3ÄÛ‹â!€ €©.°wïÞ‡zèÊ+¯ªW¯CLLy×}ÄìÐécLEš+ÌúæÈѹAƒ6}úô[¶ì‡T/Dš€' É š<'BóðtY$™çaÈS@@°Ø¿¿.‡¿±qãŽ~QŸï^³%1O–©)çÇ;3ë˜;w«6mº^yåà+V„uõ)< åžX€$3Ê_TðtY$™!Þ^@HuÇ¿ýöÛš`Þ¹³v-wÍ®3ûÖls ´L9©\Áæ³}fï¹n‰bÅ*_uÕ5wÝu׆ R½H@ hžX€$3hòœÎCÀÓe‘dž‡!OA@ÂZàÈ‘#_}õÕË/¿¬E/3dÈä÷÷6{Êì³ífÌŽ61ÿ=a®5[è8ÄÆ&”/Ÿ8~ü„§Ÿ~zëÖ­a]ýp/¼®ç•EïÙ³gÕªUZ³tñ⯾øâK}ÿê«o~øáÇõë×ïÞ½[ùóÏ?ý¦”ÒHÀ d¦‘3‡ETðtY$™©¢ÊA@@08qâÄ6nÜ4qâ]E‹–Ì™³Šß_Çuû˜Í7û*`4S†¹Øç›ìºcc›dË–§iÓ |¼nݺßÿ=Œ*yEݹsçÊ•+ß{ï½k¯ª,º^½F5jÔÑ÷¦M[^zéeãÇׯô¥jèÈ«>5B ðÄ$™NÊ@ í<]IfÚQsd@@ 4þúë¯?þøc×®]3f<^¿~ãâųd)×Âq¦š½h¶Ôl¹Ùûfs]÷ÆØØZÙ²U/]ºB¯^ÿùþû¥ŠÈt=šõŠøR©Õ4ž6)ÆTÛuêtQÓ¦m ¬”;wÙ‚+ª›4i{ùåƒü‰%K¾Û¸q£O˜ñ¯ *ˆÀyxb’Ìó0ä) 4O—E’4yN„ €„Ž€ÂÌãÇoÙ²åË/¿¼å–1µj5(^¼bLL‚Y~³ÂfEÌ :NÁ¬Y‹,XRqÙóÏÏýì³Ï5Ì9ËéÕˆj¯¥K—.\¸ðºë®+S¦lþüųe«’%‹Ó^áó Õw¿ÿ’L™šäÌY¨T©ŠµjÕ½âŠÁ+W®Ú·oafz5çE d<±IfȶC xº,’L^ € €@t (àÒ&æ›6mš<ù¡6mÚ%&ֈϕ%K–L[æÌ™³eËV¨Pካ\tQÏO>ùdÍš5º’ŒN«P¨õ±cÇ-ZôÊ+¯ôêÕ'kÖx×Íåº5]·™ÙÍfã߯óùÚºn¡9Š$$íÔ©ë×_³mÛ6ÂçPh>•A ¡›Ê=z4é»ÚT5Qsˆ4PTà dFUëSYÂNÀÓe‘d†] R`@@ µ”¢(TÙ¼y‹¦üñÇO>ù¤647nÜí·ß>uêÔY³fÍ›7OC15P™§–ÇÔHÎÔ:5Ç9'µ”FW2´aÃÆE‹6ˆ‰©çóõ3û(°®é:³fú¾Úì3³—cbdÊT¬\¹ê7Þ8rÊ”‡µ&ê9‹§…€þùè³€eË–=ÿüóO=õ”þqéû‚ /^¬¡Ñz¦3-ÎË18¥€' É<¥?DðtY$™!Ò.@HGE”TbùùçŸkOó¹s5—ü3¥.¿üòKÒ°±t,§–€ZA;’wêÔ%W®¼™3WsÝ6>ßM½™þÏì¿ÿ|üd£ãŒrÝb e{ôèuã#´Ë9†é.pèС%K–hTí½÷Þ« ÆŽ«Ï ”j¾ýöÛk×®ÕM’Ìto£¨*€' ÉŒªÖ§²„€§Ë"É »¤À € €@ª $í´cÇ [±bÅòåË7oÞ¬ÿU¼ù÷„XF‹¥ºø¹P2·nݪœ¹I“¦™2eމéè8w:Î\³ßÍþü'ÆTžù—Ù…™Ž3Óç»({öVÕªÕïÒ¥ëöí;Îål<6ÕôÏJ7 Åœ?¾<_sÍ5\ÞºuÇæÍÛ5mÚ¾Y³={öêÛ·ï­·ŽyôÑÇÞxãMžÕi=%ÕJÀ8€' É<?FðtY$™!Ñ*@@Ó(Ýúþûïß|óͪU«Úß·ÁYäšNž2ÆL™©; ÍîrÝ™3®P¡òÏ?ÿL8vÚ´ýqÒ§óæ½~ùåÛ·ïkæsÝ쮫eNóùýùG?±Â…‹Ö­Ûફ®ÑÇìД¶MÂÑÿðÄ$™ÿÀð_EO—E’ŠD™@ˆmcqäÈ­§q}ºiú¤fÈ2º/"Ú–JU@Iæ·ß~«5K«T©H2¯ ,¹ÉLÓÉS˜É÷?5»ßçœ!CBÙ²H2ƒÚZÿœLàöíÛ7nÜøÈ#ÓcÖ­ÛÜï/gVQ+¸n'×íæº]ÌêšUÍ›7±bÅê]ôŸ?üH3ÐÕUþs þ‹@Z xb’Ì´‚æ¸ ž.‹$35P9 €x4LæúõëW®\ùÍ7ß|ýõך¶¬õúôCïCù8£€>в¥sæÌ©T©R ÉØÜgw`:yrz™òÎ7f3Í®wœ\ÅŠS’yÆÃóË4P ùÒK/Mž<903.&¦‚Ù=f³Ì~1ÛøÚ[û¦ëŠ-šPFëš:L ¢¦I8()<±If î"€@È xº,’Ìk! „ €@8 hÈ¥.6~ûí·mÛ¶ýôÓOŸ|òÉ|ðZàöå—_j†ì† ”gj98 XbÆk875ež€’Líp­X¬råÊ$s˜ÙfÛO?&s±Ù4ǹ666_éÒ¥I2ƒ×T)Τ‘´?>sffl ¶4ËfV3c¾av0°,€5=n¶ÂìKÇéºUrç®Ü¼yëK.¹tÛ¶íŒ]OÉÝ4ðÄ$™i¢ÌA@ •<]If*¹r@ø¯ÂÉ;wj³­ ×±c×zõ-Z´`Á‚ùÿ¾(R¤HÑ¢ÅÚ·o?bÄHM·LŸI˜ÉëÐŽ?ZAQÌk×®H2/2{Âì#³c'Í.W>¦¯ÍúgÌØ¾D‰ªÍšµÜºuÛ¿ž‚¤®€:C}^Ó§Ï%¥J•ofÖ×l¼ÙN³ßþw$­¶ž?j¦Õ¦ú|C2eŠWò¬†Öf[z×–ºEâh¤ðÄ$™)q¸¡&àé²Â=ÉÔr[õ¡ë„;~Õ¶Œ›7oÑ×/¿ü¢q »víÒÏ>jM@y@ˆH "Ò$íÒûöÛoO™2µrå: åüþfùÌô½ Ï—×çËS±bmm×{óÍ£V­Z¥ùæŠh"RƒJ!Šúǥϴ§|Ó¦Ú»}ºÆg&-Æ þ”@ˆÐTÊÀì×%ÇȒ%GÆŒ ®ÛÀuû-0[n¦AGB6ÝqzºnžÖÔ›¬ s @¢P@Ó´³Ïc=Þ³gß rkÀ˜ãÜã8ÏÌ f¿¾–™}e6ÅqúfÊÔ¹T© 7Ѷæ 3õe¢QeÎI@ÿÊÞÿƒgžyvР««V­]¤H]Ÿ¯›Yo³Qfü¬1Ïç·Ï×°T©fÍ›·ºúê«5wI >0;霜/üÁJ257\“úÿ“ÙY0™Í;ý˜Ìmfß'Éœ7ož:FÆd^xCp„3xb’Ì3Xñ+HwO—¦I¦® žzê©Ûo¿]‹ÅÅÅ™Å;NKÇÑÄqf5sÍìRÇ©åóÅæÌ™[Û r>e%®tùQ@HÐD‰xàòËÖ®ÝLkcº®Þ¹k„˜¦»jí¾”“(u•Ù+Í/2i¥v5ÿî»ïxÏ©/ ꕺé§©F³f=yñÅÿ©W¯¾ßï ùó™éëï›Ïçs]›6m&L˜ õ—ø—•ºþg4¥Ç»wïnÕªMÆŒYüþ¶uMŸ1ûã¤þ0©{Ô€L]×B™µEڻᆱ}Ó´@ÖÙŸŽG"p®žX€$ó\y<SÀÓe…]’©q•šj¡E°¯¹æŘŊ5õû›šýÇqf9Î f {ÿ½­·HŽs¯ã Ìá¢Â…K·mÛþ7ÞüþûïòÌçBˆ½é9ò¦-Ú•*ÕÊçkæó]g¶'0)i/’”a¦¦Á®0{ÚqråÉSpêÔ©o¼ñ†v3‰+jŠÀy èJ^èÿýÒ—^zyÚ´éº8p`çÎ]:vìÔ£GOÍTºâŠ+FŒñÄO,Z´Hi—¾çM}OÔŽ?Êœ¾ªV­Ú M§½ã 7û9Ð1¦ü|GÙæ³·gLll¿\¹ U­š¨wÔ%2’ö›€§ŸYÀ dž™‹ß"€@ú xº¬°K2õ7]ËpiÂEƒZÿ'C ÆÔUÁŒÀUÁïfGŸuêû¡À]Üã÷ç,_¾â¤I“æÌ™ÃVæéûòãì €‘*pèСþý–+W#OžvfÍî ì¡|rŒ©Hóxàïõ×MȻИ1cgΜ©©‘*C½Hu]ÏëšV“—?ÿüs­ê0mÚ´‡zHó•4óã?^½zõ¯¿þªaÒzXªŸšž½€–'0áÎ>}úV­ZÏuó»n³oëaûgd¦zȃÚkÞq¦ºn‹,Yj–*U±Y³–›7oQzö'⑜‡€' É<Cž‚AðtYa—dê“åeË–½ýöÛ‰‰Z€Ëï8ZHû3¾{Ò²3ú¬s‡™Öãší8Å‹«zýõÃ|ðA–ÎÚ+!€D•€’ÌK.¹¬téj¹r)ɼÒìþÀ@£”C1“ïëo´ÂÌ…®[0wî„Q£FkS’-[¶D•Eà´£‚²uëÖ­X±B{úh`³ÿâ‹/cjR³~¥\à)xú èmË3Ï<£0³M›ÎÚ¡)cÆú•0ç–ÄÔ¸t탶Ìq8Î;~ÿ°ØØÄjhÇÒÁƒ¯Ñ€Lšïñyú)ôºÒ GëÖòÔ6l˜?¾>©P¡B–,YH2O)Æ@ DÂ=ÉÔj?ú¸Y+ÿ”.]Éu³ú|ãÌ~ ŒúH~”|Go”þÔ¥‚ãtoÛ¸q›K.¹ô×_™¼"¯DŠ QJ2/»l`ùò“©á˜Ý}ú$S5¡ò#Ÿ/_®\ùÇŽ½M3a“Q¯*,ÜÓM—÷ºiâ’nú_…º«œç´j¥ÊŠŒ&N¼«té … •öûóú|E̺›õ1ëiÖÍu«øýÅ3f,˜={îFšjG§%K–°&ÀiMùÅ… ¨‹ÐÇÊ0gÍš5yòänݺ5iÒ$>>ž$óÂ\y6¤¹€®s´fÎ[o½U£F uYa7&S Î<ûì³cÇŽ-Uª²ëf÷ùî4Ór[És4’cÌä;˵‡cŽêÖmÞ«×vìø5͉9 €Ñ' ¹®W^yubbý‚5ƒòâÀ|ZéE¡eò_ää;Z f·Ù>_žÜ¹ Lœ8ñ¹çžÓ›ýè3£Æ ÉJ2Õ1jFØŒiÎx­Zuµ2pŽE2fl“!C縸öº“#G…øøbEŠ”)_¾RÏžk­Ÿ~úIqS$»P·ôÐPLÝöìÙ»nÝz­J¡¿¼7ß|sÓ¦­ëdË–$3=Ú„s"€À9„{’©‹­¦uã#J”¨SÐu5yMËË$¿9:ùÎj³ÁY³ö¨ZµQçÎݶoßqX<@ÎN@‹òi¥¾+¯\·n MwÝNfú¬OO3µöËÓf·h—Þ jVì?ü !gw…„@R|´{÷žŸ~Z÷É'Ÿiú°a74lضV­æ ´mÚ´cŸ>ý ºrúôŸ}öùÊ•«4í—3lZ7| ªP]Ã4BxÚ´G›4i^³f…êññ 3Öˆ‹Kôù²’d†OcRR¢T ’LÍAÓî¨%KÖŒ‰I$™ûNõ.)9Ò\evEÖ¬U«Ö¸K—î$™Qúº§Ú €i, 7àI 5ÆÃïÏáºÍ̾2Û`v80—üÿ+ZkK>íÒ»Hû9ÎÕ±±ÙŠ+öÑGi­?ÍwKãrx@ }ôþë·ß~Ó`K­I8q⤮]»·k×AKbvïÞëúëo=zô¼yó6nܨ ‰eÒ§…"ý¬z]iƒ°Ÿþyüø;K–,—PÂus9N>³zfuÌ“é¯ê‡@ø „{’©9ï¾ûîôéÓË•«ì8qŽsC`Ñì­fZ39½Lº“´5ê®[¿@º]ºô¼îºaºBÿ6¤ €„œ€VçS ©9k7Ü0"W®Ù³—ñûÛ¹®61Êì³wÌÞ2{Ôì³Þf¥sç®Ö±cç+®¸bóæÍÏ©‘K!W% „¤†€r$uqêè´µ™Ë~øqéRmaªÑè?®]»výúõ»víb4fjHsŒS èÕ¥%nºé–fÍÚeÉ¢¡˜Ìfhc\³̦š•gLæ©áø)„Œ@¸'™ºøì³ÏæÌ™S¥JŸÏç8z‹ô¾ÙñŠ.“2̤½~4dW`7ÀrEŠT»üò+Æ¿wïÞi ‚ €@äè­ºfˆë}ú½÷Þ_¦L…¢EËfÎ\4.®®ãŒ6»Çì½]rœëõ‡;&¦v† K–,5tèP-Õµoß¾ÈQ &¡' Iïâu©×§nþý¥r¬«â¿÷ËùóÏÐ+5%BRG@5è–[FuèЩlÙÚ®[Äu;š}k¦©‹ß>dü{û ö.OnŽ‚i#îI¦–ŽÑ—_|ñE‹­rçΛ9s×îóM1[c¶%0sMëq0Ûî8Ÿ;Î,ŸotllBåÊuî¿òË/¿¬ ×´qå¨ €D»€öÛÝ·oÿ‡~tûí㯹æºjÕ/Þ0.®Ï×Áu»ë+C†–™25-[¶yË–-û÷ïÿÊ+¯hj¹"¦h‡£þi# ˆR×½íöé§Ÿj³ËÇ›9uêô‡š¢¯gžyîÅ_Z¼x±†3¥7mø9*¤¿€bLýiÞ¹sg¿~—”/_!Ož¦ŽÓËqƘmÖûe³H2Ó¿‘(œ…@¸'™ª¢ª kÎ~ýú—+W)oÞ2±±Å]·m þÂì·À>æê™—:΃ŽÓÚuëdÈ­AƒFü±"PÖÐ>‹×A@à<’Ffnß¾ý“O>éÓ§_ãÆMµ)ªß›1GŽÜ¹sçïܹëÝwß­éÇp¸ó„æig! +F}„½jÕ* ý½êª«kÖ¬«µ‰Š+]¼xéÖ­ÛöèÑóÁÒzkÖ¬áuxœ<ÂO@ƒÒ<¸iÓ¦Fæ3j4¦–y™ÿ£õ«—“d†_£Rb¢R ’L¥‘ÚÁü¶ÛÆõìùŸêÕçÎ].K–&fwf®½kö‘Ù‹f3]÷º˜˜ú9sÖKL¬Ý¿ÿ€o¿ývëÖ­\©F嫞J#€I@I¦òÉ={öh ¸ &:¬M›¶Mš4kÚT_ÍÛ·ïÔ¹s·Q£nUŒùá‡jÎ/—ƒÔ0Qv½®tÅ«7ïŸ|òéܹ/]qÅ•]º\\¶lÓ"Eþ^;=þºµjµjÒ¤ýµ×Ÿ:uÚ«¯¾¦ì] é-”9Q]ˆpu†êÜ´kƒ Ifw³g‹³ „™$™þ zDŒ@$™j ]jj¹ì+VŒ7¡n݆%J”óù²™eÖÎk¯¬Ž“-cÆ\ññêÕk¬·KšU¤åA¸@˜—1AY…™ºéÝ“"M Ѥ¶¤-SµkªN}©aršì¦ ’­ w½öN>òÈôÚµëW¬X-K–ø¸¸’®{‘Ïw©ã ÑWllà *eÎ\${öœõêÕÓLó °ÐA¸·;åG€†i o¾ù¦V­Zö÷­¿ÙBÍ^4ÓŒÉôhñ¿ º‘‘dê-’>]Ò;£9s^2äº^½z׬Y³jÕªåË—/§‰C•+'&&6nÜD›¢2T1æêÕ«Ãî“rW VÑÒôÛ¶mÓ z¨Û¯¿þª™õº>¼Mü+t_g” @ÿþW­ZêÏ™>OÔ_4½¥Ò_7ýÒN@¯± 6|ùåâQ£Æ-Z:þ ®[ßçëlv[`ó©‡ÍvÝ!®{‰~îº ¥JÕÔʮӧO×*¯|êví‘@ øÇ×{IÍ’¨[WðéÖ×ìm³Å$™Áo Έ"I¦4ØC=óÔ9k¤×_}îܹ“'O¾ÿþûgÏž­M´B—Ò+ýSî§Z‡Ýû&½õÓ'hK—.Õ˜ÒÇ|Ê”)?ü𫯾úÞ{ïiA'F³\È¿ž‹ 4¤Þ‘Í<ÊO¤k¤gžyæÖ[Ç´jÕ.C†±±õÍæ™}ØÞbÙ>³½f¿˜m2›ê8]2fl\¼xÙFš¬[·NÃ2y¡Fùë‡ê#IêÐô1¢ÞkßãóiÌ©f¯±Nf$µ2uA 4’Þ(ŽÛ·oŸ¶_ü%pSÆ¥›Bü?ÿùO™2eŠ+–7p«T©’V)W˜ùä“O.Y²DKèÿk˜‘IfZ·BÐŽ¯?4jÄ… ÞyçºÏ”)ÞçËêóåõù øý%õå8ñfYâãJ—®ØµkÏÅ‹¿Z½zÍYÇ Z-8¤£€þj¨'Q· Osô)˜ºÝt_7ý0?ßIGLNá( O·»uë‘/_‰,Y4ó³GÌŽ¦È0“‡eêŽfšo2{Þ,«®¬gΜùÁh_ªp¬5eFN'4R}ðà«êÔi›3&Fkn¼böžÙ'f/›i[´,ƒþî»ï´Wš.#Ow~Žœ¥€Þ{N:õúë¯ïر£6²iذáÈ‘#ÇŽ«YÆZòÊ+¯ìÙ³góæÍ5NoĈo¾ù¦òL=å 'É<NúþJ5´ûG}¤&.Y²dBB5Ÿ¯‡Ùõf¯š}è8Ÿ;ΧfsÌíŸ%K©¢E«÷ìÙûºë®gXfú6gG ¤44]=‰ ž6mÚ½÷Þ{kউ–<òÈû￯ÑûºF »Áê!%La@ Ä8Ø®]‡¬YóÅÆ¶7›`öŒÙ§I2•pî7{Ó,[îܹµ ùüùóÕ‹†x) pNz›©}´üÚ˜1·Uª”X¼x¢ÏWͬ†ë¶uÝæfñ$™çäɃ@à_4–æÆolÕª•²J]bÕ¨QCWYO=õÔ‡~¨OnjӿýPûõèÑã‰'žP¦§œá°$™gÀIß_i<í—_~©yå½{÷¶¿o…͆lûgJÔŸfk;sœ[\·D¶le*UªÖ¶mûÍ›·è¹ˆ•¾åçì  ZBY=‰v=Ó0þv Ü4tÿ†nÐ 9f’d†BKQH#MoݺmÆŒ¹ýþf÷š½pú$S«eþ˜”]—Ù$ ×õqŒÃ"€é" ÷‰‡ÖRlÓ¦M¯_¿Q¥Jš`îšù]·¾Ì2d¦K»pR"R@Ù”ööÑÖÕZS#ôš6mÚ§OŸQ£F}ñÅÚÝfCà¦å15ë|È!¥J•ÒÈL-›y×]wíÞ½û ¡IfȾZ4˜væÌ'n¼qdãÆ§ˆãhq'mµùu`5æ¤5êµ “öÜÜî8¯ø|ÃãâúåÍ[´ZµÄÏ>û\Òy,nÈÖš‚!€@ªèÓvms¦ýΦL™¢Ü²W¯¾ ´«Q£uùòÊ•ëX»v› Z]tQïk¯:qâ$}(¯¿!,L‘*òBM@õöêÕ§H‘²9r´4»RË`>N9©<ùþN³fOjvy¾|ùfÏž­^T›þ„Z( p ônñ믿yüñ'î¹ç^œéÚµ{µj Ë”©ž)S6’Ì äåé , å,´÷K/½T¥J ¹Ô,r-†©èÒóÞS#05̦uëÖÕªU+R¤ˆFfj@ÎÆÛd& ‡Ú5å°aÃ6l^¼xŸ¯¡Ïwm ÃTz™|½|g³™fš?¬53uáýüóÏ+ßÖ§l¡V#ʃAÐÞpz>~üøfÍšeÈÁq2úýÅüþòfÚ¤RS‡Jùýùýþì~¬>ˆüñÇ5ªÿÌøƒVrN„¤®€†]}õš5*ÔÄqZ8Îp³Ãÿ»ÝOòÕêÀnwše*P À;ï¼³råJ==uËÃÑ@PJ áR;vì˜7ož¦y^zé¥íÚµÓˆt’Ìi Š@è=æ{ï½÷è£j^¹ßï¿ì²ËÞxã -ëÎ'eí~ÿý÷×^{M½¶þÑ5X‡4yPKŸ.Ì$ÉL©R÷u徬ŽëÙ³—ºDBq H_å™ê'5ŠF£¤4&*11‘$3}[„³#IZîR‹^öíÛ·L™2¹råºûî»5}øäÁ3ê…V­Z¥õÉ{õê•9sfuDZ9󫯾:Ý›SO’9cÆŒo¾ùfëÖ­z/IzáX—@’Ù#_¾$™áØ|”ôÐûn­/ñ /ôîÝÏ,ÆL{õÞeör`C^}ê‘4‰RoÛµuï[fÃçâØØlõêÕÿý´‘%sÌÓ«á8/¤‘€zE]Üjî¤>ßÉ™3gÖ¬e§¿ÙífŸ›-7[øz]îÄÄ\š9s©"E*vëÖcÈkwîÜu†¥æÓ¨´HO,0xð`›Û·o'H—æà¤DŒ€¦ :´Q£FµjÕª^½º"ÇS®Û£®FŽöRç“5kVM¹ÿþû_~ùåÓ½9MÙe)ùTXúæ›o®]»Ö3i=bè"Z þ’K.+]ºZ®\mÌ.7»çô Ôk¹§íf¯jv¹6ш«!»aTYŠŠ©% ‰üWh[¿¿´Ï§z·VÙMŽ1“W„ÓM Ô|Ùu ”-[yܸñZ"IŸd¥VI8 "ÚØB“›Þÿý±cÇ^zéå™2åwݼ틚3Ó÷fù ,—˜X§_¿Ë”|êbXÃB¤üHk”±c2ÓZ›ã#,ñŸ™*ŸT8©S `Ö¯_ÿ‰'ž8e’©Qš»víÒ°Lí`®IèeË–4iÒœ9sNù`é¥ì²2fÌ8bÄmý …2´`šÆF¼jòë'ï¨Éëd6(XP;t\d6ÆLB5’êäMþß:™Ž“M;þÌœ9S›w°Nf¶)EB ZNËh^dÕª­üþª>ߣfš>yr¿¡-¬ñÊ+¯°ãOè´%‰ˆ_×1(I¦£…Íâ ,©0³cÇŽú„úá‡Vjªk<Ý´y®ô~üñGÍ=ç2/­ÿY)ŠÔ¦óo¿ýÎõ×/Z´dþü5|¾Kg¸ã<é8/˜Í5{Áç›æóMÖÏ}¾J ÔíÝ»ßðá7ꥢ4âG)§µ?ÇG Lt:vìm:u«P¡­Ï×Èqff—Ÿ¼H¦òÌãfG͹nù%jz½ÖUÞ´iS˜Vœb#€g# ë+}è¯åÄuA«ùæºÖúá‡ô!Žb̤Í4¹‚:Fƒá% ØrõêÕK–,™?~Ò[{Ï÷gžyF³2GŽ©IšŒÉ ¯Æ¥´a-ñWAI25 3Á¬¤ÂLÌÔ²™šœ^±bŶmÛv Ü.ºè"MÀQ§§k¿ˆ ÿ„¼wï¾™3g5nܬjÕD¿?Îq´@½&›w1ënÖÕu«úý%ýþÜ~L•*Uµ ªV³WŽ …§  .ZDB]rIÿ5Zøý¥|¾‡»–ÿyªa™Š1µéÏ;>_¾R¥Ê}ëc=¦ÅIҥ؜@@ ôñ2Lí§0pàÀ¤·öžï:thÒ¤IíÚµ5¯“$3ZÃ"p²@ÄÔ:™êv4Ø»Aƒš`®fõÁÊ)42|Æ Æ ÓŽ?¥K—¾ýöÛµ>}>ùÁúIÊ1ÌâÌú˜ÝbÖÛ¬qllõ|ù •/_QÃ25õF)c2Oi˜v?Ô°…K–hú'ïºëž.]º6iÒ¾T©6EŠ´)\¸]Ñ¢í+WnY½zóÎ/¾æš!'NZ¶l™Ö¸#dN»áÈ„¾€zu-õvÿýtèp‘Ïï8µ;¹ÙâÀzÉ#3“–Ø]bö”㌎ÍU£FíÙ³ŸY´h‘þ‚„~#¾„ISÀ4º~÷îÝÚÅOË_ë¸Z6â+N@@ -“™ª ˆø$SKú\}õÕuþ¹éó”SnG.½ëY¹reòÞåZîR£(Où`±ÿo’™ÅlªÙgf3ÌntÝ‹³fÍ£$óÇ—kºÞF©dÌ ­žÓô~öÈ‘£ûöí×õ>ø 6òhÞ¼]:MëÖmV¯^‹nÝzöéÓoòäµËæF±@ý9Ùò`"R@Ÿ€èC·ß~{À€ËÇuœFf×zõÍÊ“ÉÔÊ™‡çyÇéíº­3eŠoÒ¤™ÖˆÓ€Lu#É^•ÒŸr®×ŠÇk×®]µj•ÚeÇŽ§û;^U£´ € |¤IõÞŸu2ƒÏ8ƒ@Ä'™ZšrøðáÍš5Ó°Lm/>mÚ´S³Ô{XmËøÕW_ 4(kÖ¬*TЈJ$?åNyž”d>nöÙKf÷ú|ƒµv™2å–/_®!:òüùUÚ èµ­e`õxã7fÍš5bÄM×^;lÈaC‡Þ0nÜJªÕ¾ZßIëDü¿‚´CæÈDŒ€ú­u©5ÛÇŽ«aù¹r5ôùºš sœ7çS³¯_ ÌÞ÷ùnuÝÆ9r4LL¬=`À@uõ{öìaPwz½ÔpºíÝ»wãÆj‹?üHë$kB„v$Ѿ$¯½öÚ‚ÿýÒ5kÖ*Òd1äôj&΋ €@D ¤Œ˜]‘ML¥BS â×ÉÔL-}v饗jíÊ9rhKë¤eÉ=Í¡7¡ÚQ{^÷ìÙ3sæÌÕ«W×dß~û­Þõx™ô¿)»,3ÉLJ2?7ûÈì³Ì ü±‚2Ms>åøapô Wci¸”Bi½Õ~òúúýw5Ëý<é-ppJÂY@ ÄôÁ“>p×Pm­ÜÞºu»L™rºnv¿¿˜ß_Ú竦/×-îº ±±y2fÌQ­Z­Y³ž\°`º•ˆÿKÊ —ÔÃk­ã;î¸Cãi *’'OÞlÙ²ëCI­_¡B%µæ!CµTµ>ºŠøC¹±( €&2 ÉŒ°Æ¥:¤£€Ö.›:uª&˜kŒú­~©72'§‹ê‚´£æžwíÚUo´f¯æ*ÛÔÏOYø”]VŠ$ó 3Ø!É<¥?DB]@}»6äÕŠÊÏ¿J(P$wîâññ%s䨬¯øøb¹s*T¨D©ReÛµë¨ñÞÚË’yåéØ¨Êµ2Œþ¬?÷Üs×^{mÇŽú ^(..¿Y>3}Ïãºy ,[£Fý^½ú½ûî»j\…ÕÌ•HÇ&ãÔ €D’@ÊX€$3’Z–º ¾zÏòÉ'Ÿh¢YåÊ•}>_Ÿ>}4ÝìË/¿ôŒÊÐô/6W†Y¸paå™Úæ ÓÐRvY)’Ì;DÜn–Iïu/^¬·W§Õ™¾,œ@à”ê´µ‰–MÖxË9sž×ÂW]5dÀ€Aú>|ĨQ£Ÿzêé/¾øBKìj4æþLœòàü0cêo÷CM¹öÚ¡7Ë“§`–,•gH`¾çë½<ª%_bc/Éœ¹B®\Ë•«¬’ÕpÚHòS±$ @¢S e,@’¯j@Zh´ŒÆÌ¼þúëš0£¬rúôéï¼óŽæ«ÛQž©›£÷5ZJ±E‹5kÖ,[¶lß¾}µlæ& ¦ì²R$™ï˜Í6»Ùu³-ZTë­i¯=2-êÅ1@ÒN@#ýV¯^­MÉï»ï> æ¿9pÓZ%S¦LÑDæÍ›7k Þ3üH»‚qäd ­Ôæ>cÇÞÖ£GÏŠkÄÅåñùª˜3{Ðìc3­÷2ßìYŸo˜ß¯ßVÊž=o‹­•Bk' ýéO>w@@óH džŸ!ÏB“4îBïtô¶eàÀµjÕÒæuëÖíÕ«—–ÁÔD3­„©¼ñ‰'ž¸óÎ;;w:tè ížyæmÖsòÑ’’²Ë $™Ú»üsǹËu»gÍÚ¼L™ÊÍ›·Òæzou“Ѹƒ„‹€OÖ^ZŸD¡¥¶’ѢǨÿóÏ?믉6—ÑPL>¥JߦT©¦Ñ'•mÚ´É›7oæÌmg¤Ù#fkͶ˜í5Ûo¶Ûl»ãüà8ڧ顸¸¢åÊU=zÌc=¦ ƒô-?gG@H dF@ƒRBJ@ÐÆŒÓ­[7 ¹Ô^<šB®a6>úè¼yó´±éM7ÝÔ¯_?…œÚëG£1gÏž­q8zʪ²ËÒþ>f÷˜½ã8Ã\·z||Õ† ›õêÕgÇŽ_Ïp~… €ç' ¿ÂZà£>Ò„ ûûv‘Ù¬ÀRÕÇÌþ›âë/³ßi:λ~ÙÂ…«ôë×ÿÖ[oU}~çåY € €@²@ÊX€$3™…; *êa´ƒæ6¬uëÖÂÑ»wo…–—_~ù€´*¦†bê»6.ä‘G4PS#p4 ç §NÙe™Åú|Ý|¾!~˸¸âeËÖ3æö©S§yTçί@@à ú´QŸ9jEåÊÚV>Öq®1ûÌlÙŸ)b̤HSÙ¦ÂÌÅ>_»Ü¹›5kÖþ²Ë.ß¹sçί@@³H džAsÐ~åš*8þü[n¹Eûþ)RDóÑ2nÚÖ\2‡ªM´_ù™3̤“¦ì²Ì×Í© Rãââ3gÎÞ¸qSíõ³víÚ³9Î9U#€ €€4=\û÷M˜0¡t銮›Ùç›`¶çT1fòøLÍ:¿.cÆ^%KÖhÞ¼õÖ­Û`D@.P e,@’y˜<Nвf 3?ÿüs-¥÷>_|±ajp¦nšZ~ÕUW=ôÐCü±FcžÍF)»,ÇñåÌ™7o)í8ШQÓÁƒ¯Ö”768¹ ø  €©"p~If¦Lÿ/Éܶ$3UÚƒ € Õ)c’̨~)PyÒR@)¥òLÍJÓ› Ý4\·Ã›~®Q”Ú õlΟ²ËòûýÚG¨]»ö“'Oþúë¯7lØ ³h§¡³9A@sÐ_ð¤1™¥JUðù29Îý}ŽŸ4µ<å˜Ì¡™2]\²dÍæÍÛdž+8G@“RÆ$™'ûð)”]Vlll÷îÝ59ý¥—^Ò~åÚG€ýÊCª±(  €@„ èÈ·ÞzkêÔ©åËWöù26._i¶ËL[ü$§—Iw´ræÿ™}ï8}²gïP£FÓîÝ/Þ±cG„P@¾@ÊX€$3øþœÎI e—¥Ï5sÁ‚ëׯ?zôèYŽê<§Óñ`@HЊ1Ë—/ÿý÷µw¹cv±Ùl³Ef'ï]þ›ÎÀÞå ®Ö·ï¥£GfïòdIî € €Ày ¤ŒH2Ï›‘'"€@p<]Öã?þÝwßmß¾38þœ@ š´ŒÖµþòË/5j¤Ïcc;šÝiöœÙN³fGÌŽš6Ûo¶Ùl©ã<[¤T©*×_?üÁÜ¿4ëQw@HO,0xð`bTå  ž.‹$3-9& €§Ð*.ZÝú×_½á†á­[·)Y²^LL%Çim6Õìi³Åfßš½cö¢Ï7Þu{Äŵ̞½`ãÆ-Þ|óÍeË–éø)Ë@@³ðÄ$™gOÇ#@ øž.‹$3øMÀ@¢\@aæ<0xðUuëÖË–-glli³!f£Í^2›g6Íl¢ßÿŸ JgËVªH‘’Ý»÷\ºté®]»Ø•/Ê_9T@TðÄ$™©¢ÊA@ <]If9sX  S4ô{ঠÕC²ÔFX4\¸R¯:Í1ׂ™>úèå—lݺKÖ¬ãâÊ9NU³ª®[>6¶|Á‚ÕtéÒëÙgŸýøã5¯\¯Ïp¯8åG@PðÄ$™¡Ð(”N'àé²H2OÅÏ@ ’’ÌC›†É)Ì$ÉŒ†v…:?~\kfjëŸqãÆõëwIΜ¹3fÌâ8ÚÈ\׋ËP¼x©¦M[ |Ï­[·êñ¡PlÊ€ € à‰H2# M©,àé²H2#¸­©œN@«þøã .zä‘i<0ùÖ[ÇŒ5j̘±ãÆŸ2åá9sžÿæ›ovïÞ}øða&óžÎŸ_ €2sÝÖ­[·páÂW_}u„‰cÇÞ~ýõ×_wÝu7ß|³^ze>õÔì7ß|ë×_wùäåKЀB Ô*Ã|øá‡;wîœ+W®  ¹n'×ík6ÅìQ³ûÍÆûý=3d(_ûÜĉ“:wî–/_áøøZŽs³ÙD³·Í>2{Ïl¾Ùf³goV¤H©–-[¾ð |ðö¿ˆ*(*›våûí·ßjMƒªU«:ß®0[`¶ÊìÏ1fR¤yÂì¸Ù<Ç’)ÓEÅŠUmÒ¤¹¶¦J»²qd@@‚)à‰H2ƒ‰Ï¹@à\<]Iæ¹òøsиJmÂ;aÂ}úô­R¥®ëævÝzfÏbLÍäý¿À¬^MïýØì^³6fYK–,§%4gÍšuðà¡s=]º?^cÿtÓ²Šºi+vÝgdiº7Š  Å ´¹6™ªPAÛ”ëv£ÙZ³½f„™rLfò}åœüþ˳e+Q¹ru(…ZP@@.\À d^8)G@´ðtY$™iGÍ‘% Oã*wìØ1`À€ÄÄÄš:NgÇföÙšÀÄ^;˜Ï»Áì³[ÌêæÍ[¿gÏÞ×]w½¦ô†Q ¨¢jàŸö¹Ö&ì+V¬ÐþìÚÛH÷÷ïßÿ÷nÄìGœ®ÿ$§/X°@ñxùòåIæH3½ä”¥Ÿ.É\hv—ëÊ–­håÊU7o&ÉüÿØ»p»Æ³oàÏ>ç$‰™ Š˜BB¢ZAÅ<Ô<ÔŠšµ}Õ¬:)¥ŠV©—ViMmßRTÛÏ5šöýM]'ÂÍ3Ï"#FŒ|üñÆ=6‹fÆØâ²åW^y妛n>÷Üó~ðƒS8à€qãÆÅ"ì±Dûn»í¶÷ÞûyäQ§Ÿ~Æo~sI³‘ë6ÐÉ™qu|øÇjM7ÝtÓ•W^uÎ9çyæÙ?þñYgœqÖÅÿæ·¿ýÝ=÷Ü7ŒI¹F]‡gLd„ W_}õ*«¬Ò™dî•ÒŸRz°›ûdÆÍ3//•ö0`Ëe—]uìØ&MšÔýaî @€$Å’ÌF*ž±h=¬eI2[ï¨éŒgˆì\cå™”â¢òiéåôßLHé×qy©4`‰%>×hÇ æqBcM]ÉÎ"–|õÕWÿñD†¹ÞzcGŒXe¾ùæ8pàœ_ ˜gžy†ýÌ*«|v§¾|×]wE®én%{¨çk£|o¾ùf¬÷·-=øàCÖYgýUW]}å•W5ê³;ì°c„´çwÞßþö·§žzªøñl¤²Ï=÷Ü}÷Ý÷¹Ï}®3ÉÜ2¥³RººóN­Óñ}Ęÿ*•~ÖÞ¾î‚ ®±öÚcwÝu÷_|©ž•°o @€ÕÈbIfõhm‰ê d-K’Y}b[œN ¢°ûï¿ÿšk®ùωp¤ô÷”žê>ÉŸÒE)Q*͹ÄK<òÈ#qQpaS²ˆXãÆ˜>øÐ¥—^¶Ï>.¿üj‹,2¢£cå”F¥´fJk¥ôÙRi•¹ç±è¢+¬½öFçœóó?ý麸=ÂÌ‚ŸÄØ5µ¸Ïçõ×ß§_î¹çÞ›m¶Ý²Ë®=tèꃯ¾è¢«¯±ÆFl°Åá‡×k_uÕUqÞæ”)S [©8$cFqêìc=¶Ùf›/²Èà7,•JéG)ý3¥ç;—ššÒ›kÅý3ÿÖÖvdGÇÈÅ_m×]ÇsÌqqÞétǵok-Ÿ—8ºâã'ÇÆêK‘®Ç}hã£÷ÐC =‰U„ÕEþWZ“Ù @ {,dvOåê/µ,IfýKÒÔ#ˆã-²£X3zôèÑÿ¹¤7n?øÀÌ.éí:/~R*اÏ<Æ-7ØŒ-3ô‹Q½ýöÛqšß©§þh¹åV4hx¿~ËwtlÖ™Äþ¥3­Û0ÞšÒÿ´·£OŸ•1tè°m·Ý!—×_=R—ÂV>¦§ÂƵð?úÑG޽Ì2Ã\hŽ9–moß¡­m¯Ré«ñ§_¿5ú÷_nÎ7ßBk¯½N\µ}ÇwDÐTØIÅÀ" ‹’}ï{ßßm·ÝWYåsýú-ØÖ±óI)›Òý)=Úy߃¿–J§´µmÝÞ¾RGÇÀUWý\Üòôî»ïŽL¾ÈSkú±Åç%Ž®gžyæ¿øÅgœ±çž{í¸ãNñg—]¾üío;¹ùæ›c°¨oÓS˜  @`Ö²X@’9뤶@€ÀìÈZ–$söQÛrL»Oæç?ÿùöö޶¶]RúCg¾ë•gkFÇõæqUïÿIé{ííãæ™gá¸Oæ?ÿùDa“Ì8û+’“G}ôøã¿µÈ"‹Í5Wœ¹V{ûž7½/¥×;Oð{$&ÛÖöƒöö ûõ[s¾ù»qÜ54N!+rè‰_Üýòþû8î¸o-¾øÒƒ ëèˆ3Î2“c¡œo¥t|{ûVëÄã}úÌ?bÄjç÷ßøÃ•qmÁû`?çœs8â›ë¯?vР83s¥”ïœQ\fùs,8uagò¼Þ¼ó®“Š%Úãšå¸xyB©ô‹ŽŽE–[nĉ'~û—¿üeD……ZgÜwΡ‡6fÌØ~ýèÛwLJפtoJ“Szµ3¤}­sáï'K¥ÓÚÚ68pVËâÄ)s¿p>ȸÆ<®P¾è¢‹ößÿ7Þ¢ÿ!ííƒRÒùg‘Ri‘[h¡%ã¢òsÏýùu×]'ÐÆ1\Øb5ýÀâ4˸qÁÏþßl°ñç?ÿ…ȟ矱×0`ìœsnÿo¾a ,Ÿ¬á«¯þ…}öÙ7Ná…„™M`˜  0+Y, ÉœLï%@`v d-K’9»Ám?Î§Š b·Ýö\~ùZhÕ¶¶5ÛÚöM)nEøRJïv晑õ½Ò¤X ¨­í›Ë 2<ÖÇ9üð¯GèTXÀ¸þúŠ+®ˆ¥p6ÙdóR©_©ô”JéÅ.œ<3fà•mm‹-µÔŠ_ÿú7Î<óÌý ;µ©SßyÅu»£FÅY¦ ··oÒyñuä±N·NS„´ï•J¿jkÛ©_¿XgÑQ£Vshã*ì¨xa§‹ƒŒúøãÅå^x‘yç/iŠå™â¿±BÓàÁ‹.»ìð8üâ’ùX!¨ÈgÏÙ¹*c›–<ŸtÒÉ‘–/±ÄrííóGÚùy[ÛV¥ÒÖ¥RüËȰ¶¶…æw±Å_róÍ·ºçž{ÿùÏ:‡¶*þ6B€4«@ H2›µÐæE 9²–%Él޲|qÔ]yåUqUïV[íÔ·ï >}"ŽØ®½}”N»bvÞ¨ðø¶¶}âìbíï¡ë¬3öÚk¯•¾‹|s¸Ü5îηß~_]}õÍÛÛWlk;#¥—;OÂÌ®šÿkaÇ=K¥õYd̶Ûîüµ¯}-.K/lÕ"¤sÉ%W˜o¾/¦´WJßï\'N4~jq7€øë7ý¡TúvŸ>óºD,íËÍü^…ŽÅW¬8ëÈ?ðÀüãÕ¿ýíï~ò“ŸD¼üßÿýßq®f,`të­·Åzôñš (x0[Ø£¨*‹ðË_^§1o´Ñs͵Ȝs®‘ÒOSº8¥»;Óõ¸ãn¬vUJ—öé³÷œs.¿ÔR£ÇÛ÷裭ÐT~!@€šV ‹$™M[i#ÐYË’d6EU‹>‰¸ÒóÁ¼í¶Û:èà4ß|Cæœs™9æX9NÎŒõ£ÛÛwkoß¶oßÏ÷ï¿ð f©¥–Ûn»c­Ÿ¸´¼È—ˆFÌÕyâân£GoÖÑWÍÿ¼óÜË®u‹fúßûãü±…Úh£¶Úwß}#ñ+lÙâÚM6Ùl®¹õí»aÜ3¥ :Oé¤â\ÓSúï”Fñ.¹ä’X÷'V‘.ìÔ²Å:2qñø‹/¾7`Œû—ÆQ^Üþ4<ffU—ÿ:ujĘ;í´óÈ‘«··/ÿØ‘Òk3}ðŸÓƒ#NƒðéRé;íí£çŸÄk¬ $.0¼º.c¶S @€@ñ²X@’Yü’!VÈZ–$³•†šÍ="…É“'ÇõÔ‘trÈ¡»ï¾÷ª«®·âŠëÎ?ÿÆóλéB mU kY’ÌOó‚* ÄÙn‘àÅ•ã{í5.ÖZzéå†]jøðÑ«®ºæV[msðÁÿö·¿}î¹çâœÀâçHquùé§Ÿ+Œ|þóǽ=ÛÚÎü´$óoííë ²öÖ[ïxØa‡öêò$s̘1)õOió”Ή;|v^5?Ó$óÎûþ>¥¹Zh¡è'±Òw‘ïnZŃ٦f«@‡2Ç©•ë­÷Å>}bE­S*ªÇ¹Á—¥tLJs.¶Øbq’m,ªUäÛSÌV='@€”ÈbIfy.Ï P_¬eI2ë[ŽVÛ{DdO?ýtÜó¤“~pì±Çí²Ën;ì°Ëž{î³ï¾Å­íâ¶“7ß|s¤¿ÑbWÕb.çŸþG|sÝuã>™‹µµ}»óìÄ87lÚÙbÓ΋%bÉï¿ÄÕ¯C‡®÷ñ;ñÄcQ’bV¿+ÉÜh£çœs>}">Š›dÆm ã&™3M2c úÇRº0¥Ÿ“yñÅßzë­ tNf1K`T!Çaܤ4Ε3f½ŽŽ¾mm[vÞ!óºÕMéꔾI梋.zË-·D«±Z“c‰ 0S,dÎTɃD kY’̂ԥE†éD\Ï7'ŒÛßÅ×›o¾"·Œ¯¸¤7NÁŠëIã5ñU|mÜY1®—ßyç]RjKi‡”~™Ò)En9}èë}?žÒµ)'.®°ÂJØþሻ€vŽ‘ íºëÆX`uSÚ>¥f˜Ô´ Ɖp—§tlW|tà 7Ä2:!SØ©X£Ä…áq±œº¼Æ±ÊO|íܹ²Ïí)ÅjÚá7ý7/t®·«8xðà?þñ&LˆÆÒ(ó5N @€@-²X@’YK|û"@ R¬eI2+ôz]ñQzä‘G"»;ôÐC 4`À&¥Ò)Å5æKé±IJÏtf˜¥'’}¿£ã«óÏ?duÖ¹üòËãÒ×8¥³°’‘*ãG¬¿þÆK/k—¯ÒWRz¸s]•83ó£Î)nN8¥óDÓŸ×ѱwLmĈ‘÷ÜsOÜ5d ;5kø'¸MAœº¼ÖZk·µµ—J‘¨ÇýZ¯OiÚZ?ÓǘñýÄ”"çŒàÀ!C†\wÝu±¨VÉ2_ã$@€ÔR ‹$™µÄ·/*ÈZ–$³R@¯'Ð%'ŽÆµ«q-ü…þjË-·Zn¹Ñ‹¤´RJû¦‘æé)Ñy×¾CJ¥J¥ÁóÍ7l̘õ=ô°8k1–"¯E]âw¿ûÝÉ'Ÿ¼É&qIïœ)­˜Ò÷RúMJqÚ[Üó_›ß×Ë—J‡´·¯´à‚+­·Þ»îº[Ü™0N¸mˆSjƈ£¨ë>™l°aÿþ;:âFqåø¯º¿ÑÁ„”~Ò‘¥Ò€Å·°˜4i’P½àU6< @ ^Y, ɬW!ì—žd-K’Ù4¯!0S[âùXÀèàƒ3fÝAƒž{î¥ûöݪ£ãË)–Ò×::Æõí»ã€ŸŸo¾–YfùÝvÛãä“O‰ð3Î7›é ò`\ãK_tÑE»ï¾û¼óÎ;pàr±*tJ?HéÎΓ3ÿÙyÒéoS:¯OŸ XbÉ%‡ïºëîÿõ_GÄÂß™‚a4@¬×–­¶ÚzРÁlÒ¡ÿ:ðZJï¥gO;'3ÎÒŒtý¦”~ÔÖöÕ\n¹åǧtƑܦ@€ +ÿ4¿]ÆÏÃñC`ü­=iÒ Ï??)®Ð‰[ÄÄ#o¾ù¦ë# [»,d¶RF€@d-K’é¨ 0+‘IÆ/zè¡ .¸ V$ß~û]‡ û îÛw¹>}–[tÑ5–[ný/~q›}öÙçøã¿ûî»ãjÙø ÎÊkðÞHhceöX0å׿þõÞ{ï½ÙfÛÎ1G,ξ|©´V©4&¥ø³NJ«Ä ¨ƒ^e•ÕwÚi×믿á¾ûÆ[*ºÕi]Äq¿þ|ë['î°ÃŽ+­´N[[„q’ð)Åé—]v%™±ÀÖÓ°—Jßko_gþù?·æšc¶ß~ÇX*¨ë¦»­Ãe¦ @ öñãO<·Ž?å”Sâ¯ìqãöÙ}÷=÷Û難rØxêW\qã7ÆEE¾©öhÙc H2 Rà @`¦YË’dÎTɃz.afüx·¾<÷Üs>ú˜µÖ³ÒJ+´ÈB -Ÿí¼Àüš”^Jé­”ÞL)NѼ;¥ÿÓ޾߾C]tÙí·ß)~{Š2{·Gï"@€z"?ýÆ?>õÔSc^zé¥{ì±×Ö[o¿ÒJ«-»ì*£Gá _øâ{ì}ÒI']xá…q~f¬&é§Äž¨Öò5Y, ɬ%¾} P©@Ö²$™•z=™ DŽw‰Œ{`Þ{ïßî¼ó®[n¹åæ›o¾ûî{î»oÂ#<:qâÄø).~„‹„p¦o/àƒ1ÔX–è™gžyðÁûÛßF¯8ꨣ¿þõoqÄG}ôi§ö“Ÿü䪫®úÛßþöøãGci”¶€Ô†Ô@|dâW¤8çù»ßýÞj«­¾üò«µ·LiÕŽŽí::vnoߦó,Í5S½À+/³ÌÈ­¶Úö¯ýk“NîŽÔã @`Ö"ÆŒãgÝc=v̘1+¯¼Úb‹­ºÈ"«°}ÿþ;Ï=÷VóÍ·éàÁk ¶lüõ½ß~œ~úñ“°»¾Ìº|·Å’Ì*ÚÚUÈZ–$³êÂ6H É"Š$ö¾ûî‹U?çœsÎ?ÿü_ýêW‘Å?ÁÇ5¼–øi²rm:qZfÜ}ëüó/ØpÃW[ís)uôéó™>}–joÒÖ¶PJ}RJƒ/ºÊ*«ÆEmq¬¾þúëNü(Z‡šI 2ÉGy$ˆÜi§çškX›o鎎ø×Æ=SÚ¿TÚ±TÚ¼T^*uÌ;ïük¬±ÖAÇï¡Í„ÐèsÉbIf£Ôø 4·@Ö²$™Í]n³#0ë‘UN™2å…^˜0a½÷Þk©<ðÀqöiĘñxch:ë¶Pc8üâ×¥8ê.¼ðW§ŸþãX…*nƒ¹öÚ›®±ÆÆë¬³Ézëmºå–[o»í¶±àÔYgýäþçâDâ¸Wü\cO»#@€³(¿NÆ?^~ù±àãÊ+í×oå¶¶ ÚÚNnkûIJÿ“ÒK¥+J¥‹ãÖ¥Ò¸9æØfñÅ—Ýh£M¯¸â·q/&MÌ"~ߞŒÌ*ÚÚUÈZ–$³êÂ6H€Õˆd22óXõÚk¯½ì²Ëâ‡zhÜ?ó„Nˆ“„ã&´‘®Ç©›nqP]v[#@€™@ü7~,?þ„¸ƒzß¾£J¥­J¥ãRzcºõøbU¾Rz&¥›S:³Tšw©¥†ÅßÝ?ýéOãÁ³ úßz d±€$³^…°_z"µ,IfOм†ê(ЕdÆù–wÝuW¬‚ú³ŸýìÌ3όŀ.¸à‚k®¹æú믅Sã:tK£Ö±FvM€­ ÿh8iÒ¤ûï¿?î+@öé³^©tX©tNçJ|¤fןSšœÒý±T_©´ìb‹­2nÜWN<ñÄ×^{½”bŽY, Élˆª$–ÈZ–$³e'@€@c DžÙu±y„–q yü7¾â/µ¸ü\†ÙX¥4ZhP¸⦛nŠ[¦ï°ÃqŸê”Né¾”žK)¢Ëi1æ´03ÎÌ|(¥½üÒðákl²Éq·¢xó ;‹$™ÍWb3"ÐLYË’d6SqÍ… @€³IàwÞ‰eÏ;ï¼m¶Ù¦3ÉüzJ¥ôjJŸÌdvå™ñìýûo¿ôÒ«®¿þ†Ï??i6 Ìf+ÈbIf¥€^O€@-²–%ɬ%¾} @€ @ AÞzë­X_ïÔSOÝl³-J¥>¥Ò·:cÌ8÷2;!sÚÿ>•Ò‰}ûŽ4h…ÕV[ã¹çžkЉ7ß°³X@’Ù|%6#Í$µ,If3×\ @€ 0›b¹Ÿ+¯¼òôÓOßb‹Xè'’ÌãSzñÿ_ëgZ†ÙõÍ“)ׯߞƒ_}õ/<÷Üó³i`Ußlܸ&Ö'zíµ×&Ož· öÙgŸ«ããcéö¸Ê>nqSõÖrƒY, ɬ%¾} P©@Ö²$™•z= @€ZP îS}Çw\zé¥;ï¼KJ¥”¾šÒm)=1³ûdÆõæñçÁ¶¶ç™g£Q£¾ð¥/mA`ñÑ"ÃŒ[pGzyÙe—yæYûî»ÿ—¿¼ûÖ[o¿ÕVÛì³Ï~tÈÙgÿ,n:a„†¾Mw H2‹d!VÈZ–$³•s'@€ @€@ÞÿýxàÚk¯7nï¶¶öRi÷”~—ÒÝ)½ŸRvy,eþnJw¶µm°à‚k­»î&{ì±×K/½ÔÃÕëe±¼`¤µqÖåƒ>ø½ï}oÿý5jaÃF ´Ô |fäÈϯ¾ú˜ƒ><Ö<ºîºëâ Õ©×Pgq¿Y, ÉœEOo'@`¶ d-K’9[µmœ @€Í!ðá‡ÆÉŠf}ô1‹,2x®¹6lo?¨­íô”žê¼Ì¼+ÌŒ sjçJ@×¥tF©´ÜK¬vÐA‡ýð‡§¾ñÆEvøøããšñûî»ïüó/8é¤l²É¦«¯>vȱ ,°áÀ›Î9çæƒo0tèzk®¹y,Ý~øá‡ÿå/¹ë®»4ÌÌbIf‘Lc#@ kY’L‡ @€ôD .©~ýõ7~úÓ³W^yôàÁ+ôé³T{ûf)ÝœÒÿ¹afœŠ«™ÿ1¥ÃSÚ>¥~#FŒ¸à‚ ®¿þú8ݱ'»¨×kºîyÁ¿Xo½ FúlŸ>s”JCRÚ6¥½S:2nøÙÖ¶m[ÛK¥¥bÝö%—\òØc=묳âvšõð¬ì7‹$™³‚é½Ìn¬eI2g7¸í @€ @ 9âÄÅ$o¹å–8kq«­v\|ñóÍ÷ùRi\J¶µ}¯­í䔎OéˆRéË¥ÒæŸ/~qÃ:(î®ùä“OÆ)…Eˆó‘G¹ñÆÿ뿎XrÉ¥^µ½}×Réë)ý:¥+SúkJ7”J—•J–J‡¥´Î¼óŽYgõwÜq§xW, ·Ö,ìÔf:°,dÎTɃD kY’Ì‚ÔÅ0 @€ P|3㎗=ô÷ãŽûÖèÑ«ºL[ÛÜ)ÍÓÑñ™ŽŽ%K¥ãû¶¶¹ÚÛ 6ü„N¸øâ‹_}õÕ"ǘa¿&_}õÕqŽåÖ[oݧOߎŽQ)]’Ò­)½ÖyÃÏ÷:ïWÍ¿ÒÕ)ýW[Û.ýûÏ·ôÒÃn¸á†'žx¢à§›ÎxPe±€$sF" P¬eI2‹S#!@€ @€@ÁbYœ·Þzë…^¸ð‹biï­·Þvå•WYqÅÆ­¼ôÒ+/»ìðVXaÔ¨Qk®¹fÜO2bÌXé{êÔ©ŸTÜîò—¿¼ð¨£ŽYo½Í"Œ-•ÖOé–”þñŸKæÿ7¥ø«±ÇŸ¿¥t^çy§s¼øW\qÏ=÷4Ü5æY, É,øñixZ\ kY’Ì?LŸ @€ Äi™qŽe\U=qâÄñãÇÿâ¿8û쳿ùÍ£¾þõÿŠ«ÎÏ<óÌË.»ìÖ[o0aB¬þÎ;ïDøYÑökÿâä‘G½ñÆ[.·ÜFmmë¶µÜy·ÏuF—]1æ´ÿ¾Ó¹¼ÑÚÛ/´Ðb'œð­¸ èóÏ?_û1ÏʳX@’9+˜ÞK€ÀìÈZ–$svƒÛ> @€šO î-¿]Æ•æq…õ5×\afd˜¿ùÍo®¼òÊ;ï¼óÙgŸ§ŠŸavÕ%’ÌC=|­µÖ_rÉH27ok‹%~"±œ–^NÿM,Ñþ~J×··/¾À‹qÄ7úÓŸF¢ÛXõÍbIfc•Ïh ´š@Ö²$™­v˜/ @€ª%еPÜ(2®°Ž¯·ß~;RÁ¸X;NÚŒ¨³Z{™ÝÛ‰aï»ïWWYeÁƒ7Mi÷”¾ŸRÜsúóÿû¾Tº£OŸ\p¹ƒ>ìÔSO}úé§g÷«»ý,dV—×Ö¨®@Ö²$™Õåµ5 @€h,®$3îî9dH$™»¦ôÝî“̸UæÇ¥Òí}ú _pÁå9äðÓN;M’ÙXå6ZK@’ÙXõ2Z @€˜­±&Ñ·¿ýí¶Ûqäȱíí+··Ké•ÿ¹Ÿiçd¾žÒ)ý&ZpÁ!?üá/¿üòÉ“'ÏÖáU}ãY,àœÌª Û UÈZ–s2«hkS @€ Ðpquügœ±ß~û¯¾úØŽŽÅÛÛ¿”ÒS)MIéÃ8ó?—™Ç2ãÏÄ”îHé§mms/¼ðÂñ õŸÿüçW^y¥±¦œÅ’ÌÆ*ŸÑh5¬eI2[í0_ @€˜^ ~M¾öÚkúÓ³·Ùfç>}èèø|©tN©tuJ“:óÌ:óÌÉ)=S*ý®­íè¾}÷šþEW\qDĘ<òHÜtú­ÿû,d¿dFH •²–%ÉlåƒÁÜ  @€ @ Ö-Š{]Þu×]|HŸ>ý::)•6*•Kéo)=›Ò»'g>Ò-¥Ò×ÚÛ—8p™¥—^a̘õŸ|ò©XÞ(ÞÞX†Y, Él¬ò-VÈZ–$³Õó%@€ @€é"ŠŒ{]>üðÃ?øÁÉ£F­ºì²Ÿë×oíööSúyJ—§ôç”®Oéü”Îì×o×¹ç^n‰%VÝb‹möÛï€çŸ>~Åþä“O¦ßZñ¿ÏbIfñKf„ZY kY’ÌV>Ì @€B ÂÌ8»ò¡‡Š|¾óï |øÊÛm·Óí·ßÉç|ЈzY, ÉlÄ"3ÖÈZ–$³uJo¦ @€ ÐÀG}ôÜsÏÝyç—^zé—¾´Íºë®¿òÊ+¯¸âŠ+¬°ÂðáÃG޹Ê*«l´Ñ&{ì1îÄ¿óÏ>§qÆ[ºÛZ‘ÏbIf‘‹eld-K’é @€ @€!çXÆ:毿þúcýãŽ;îüÅ/~ñ³ŸýìÌί‹.ºè²Ë.»ýö;&N|vòäã•~øaƒ¢e±€$³AëhØZD kY’Ì©»i @€ @€@OâJóXŽ<îyà 7ÄšæWv~ÝrË-±$Ðĉ#ÀlÐS1§Í=‹$™Ód|C€@²–%É,` ‰ @€ê(Yå{ï½÷Úk¯½òÊ+/½ôÒË/¿'jN™2%Œõ}⫎c›õ]g±€$sÖImÙ'µ,Iæì£¶e @€ P4,d­@ÆC€ÀôYË’dNã{ @€ ÐÜY, Élîr›FÈZ–$³Ñ jü @€ @ çY, Éì9W P{¬eI2k_{$@€ @€õÈbIf½ a¿ôD kY’Ìž y  @€h,d6GYÍ‚@³ d-K’Ù¬…6/ @€ 0£@ H2g$òÅÈZ–$³8¥1 @€ 0»²X@’9»ÁmŸYÈZ–$sV0½— @€4–@ H2«|FK Õ²–%ÉlµÀ|  @€ @ •²X@’Ùʃ¹(¾@Ö²$™Å/™ @€ @€j d±€$³Z°¶C€ÀìÈZ–$sv Û& @€(¦@ H2‹Y&£"@ K kY’L @€h,d¶NéÍ”@# d-K’ÙˆE4f @€ Ð;,döŽÑ»¨@Ö²$™µa· @€ P,d¡(Æ@€@wYË’dvåq @€ Ð|Y, Él¾›fÈZ–$³™Šk. @€ @ ¼@ H2Ësy–ú d-K’YßrØ; @€¨¥@ H2k‰o_T*µ,If¥€^O€ @€W ‹$™[J#'Ð YË’d¶BÑÍ‘ @€t d±€$ÓA€@‘²–%É,r±Œ @€TW ‹$™Õåµ5ª+µ,Ifuym @€Y ‹$™E.–± µ,I¦C‚ @€´Ž@ H2[§ôfJ ²–%ÉlÄ"3 @€è@ H2{Çè]ÔF kY’ÌÚ°Û  @€(‚@ H2‹Pc @ ;¬eI2»ƒò8 @€h>,d6_‰Íˆ@3 d-K’ÙLÅ5 @€ P^ ‹$™å¹,d6_‰Íˆ@3 d-K’ÙLÅ5 @€ P^ ‹$™å¹ó™ÏÌ?ÿü /¼ðð£ýèÖ[oíù˜³–%Éì9W @€ @€FÈbIf£Ôø Dàã?~ë­·â„Ìo}ë[»îºë—¾ô¥±cÇ®½öÚÇ_zé¥ûöíÛ¿ÿ=÷Üó¤“NŠó3{>æ¬eI2{Nç• @€ @ Ñ²X@’Ùè5~ˆKË_z饇~x‹-¶Xl±ÅFŽ1æ†n¸Ë.»Dª9pàÀH2÷Úk¯üà’Ì‚”Ì0 @€ @€@Á$™/áhPH2_~ùå¸=fD—#FŒXýõ·Ûn»=öØãßøÆþûï?Ï<óH2´²†M€ @€ê% ɬ—¼ýhn¸Of´—wÞyçþûï¿í¶Ûî¹çž &ÄŠ?÷Þ{ï•W^9dÈIfsfG€ @€ª. ɬ:©  ÐÀ‡~øÚk¯E¤9tèPIfwJ'@€ @€f* Éœ)‹ ˜’ÌÙ¡j› @€ @ E$™-RhÓ$P>øàÕW_kÌ“Y„r @€h,IfcÕËh 4´€$³¡Ëgð @€ @ ¾’ÌúúÛ;–d¶T¹M– @€TW@’Y]O[#@ Œ€$³ ާ @€ @€ò’Ìò>ž%@ Š’Ì*bÚ @€h5If«UÜ| Ì(}à½÷Þ‹µx&NœøÌ,|½ð ±©X |Æ]t=RÝ$sÀ€§vÚ_ÿú×|0výÒ _/¿üò믿þÎ;ïĨº’Ç  @€ @€‚|üñÇS§N}ûí·#£˜á·ü?ðÜsÏÝ|óÍ_|ñÈ‘#¸ß~ûÝwß}‘ |ôÑG™‚a 0[âÃþðÃßyçßøÆ7†þ™YøÚb‹-î½÷ÞˆB#±œé˜«›dvtt¬µÖZ[mµÕÎ;ï¼×^{í=Ã×þûïÊ)§\yå•=öX™|u¦Cõ  @€ Pc0ÿò—¿\rÉ%ßüæ7gø-ÿßì¹çžÛl³Í†n¸À H2k\»#PH2ãœÆÛn»í ƒZb‰%œ…¯ 6Øà®»îzê©§$™E¨¬1 @€ @€Æd6V½Œ–@íâÌíI“&=ùä“—_~ù±Ç{Ä,|yæ™qBæk¯½ÖÝIÝÕ='sÎ9ç<á„.»ì²n¸áþûïh†¯¿ÿýï«ÆÉçqù'Ÿ|R{[{$@€ @€z.¹Á+¯¼W‹ÿãÿ˜á·ü?0~üøßÿþ÷?ùÉOâªRçdöÖ+ 4@D|‘=¾øâ‹·ß~{œ¿}Ñ,|]{íµÑpâv‘ŽÎÔ§ºIf´¬Ÿÿüçnˆ1Sj @€ @€æ°âOóÕÔŒT*ðî»ïFüËý<ðÀñ¯½þŠÛQv-¯ÓÝ ’ÌJKãõ @€ @€À4Iæ4 ß 0»$™³[Øö  @€ @€@ H2›¸¸¦F h’Ì¢UÄx @€ @€@ H2¨X†J Ñ$™^Aã'@€ @€udÖß® 4½@Ü0óÍ7ߌ…^}õÕ—_~¹kõ±ë¯¿~±Å›cŽ9vÞyçãŽ;îøC<ÕõõÆo|øá‡Ý-\Y˲âOÓB&H€ @€¦ d±À~ûíg!ài8¾!@`"–œ0aÂ7Þø—¿üåšk®¹êª«.»ì²³Î:kРA}ûö;vì¸qãN>ùäxªë+ÖO0óý÷ßïnÍ ¬eI2g±@ÞN€ @€H ‹$™ T;C%P|¸œ<2Ì‹/¾øüóÏÿÙÏ~æ©§žzôÑGÏ?ÿü}úôYc5¶ÞzëÃ?üìÿ|ýþ÷¿ñŧN*É,~q @€ÔX@’Ycp»#ÐRo¿ýöW¾ò•Ñ£G6l‘E‰S1\pÁˆ1;::ÚÚÚú÷ï?pàÀyç7¯…^xÓM7½ûî»ã"ô>úh¦PYËrNæL•VŠûdv7÷¬e9'³;( @€ @€æÈbçd6_‰Íˆ@3 d-K’ÙLÅ5 @€ P^ ‹$™å¹,d6_‰Íˆ@3 d-K’ÙLÅ5 @€ P^ ‹$™å¹,d6_‰Íˆ@3 d-K’ÙLÅ5 @€ P^ ‹$™å¹õÏÇŸ|Êl¿ÌS]ïýÔ]Lÿ‚ÿ÷ãOþ÷“øSf³Ý=»›~S=ü¾»­•¼k=ÜÅ´—õ3v× Ì^KÆÜ§¹¢oÊ£u÷l/0»4âÑÝ6Ë<Þ É@¨1f ²Ìº{ªkñ!ª¨j] Ým³üã5ÆŒ V4µ®—ŸBwÏöâ°ŒÝÕsVf/$ã-Ýq•¼˜]’ñßò[žé³Ñzqdv r¦üÔ3&ø©™ñ½ cöò8éüa#Þ[Qùº@f„êÉ#½ÀŒ·ô3ÞXÑÔº^Ü“‰Ìøš®AVº»^cÆîzÙ5ÈøïŒãÿÔG*Z1»4f凢ØBEsìÂüT·™¾ ¢M{ñL7UþÁ®A6ñE1ýi>=ÿ¦wÿ‡YáqÒëÏxL­ŸñxK¯ÌJ?]àåÀîžídÏKÖõÊ^cÆî¦a¾ûþ»<øÀU¼jôª£èêòîjäqª+ðþûïÿò—¿<ꨣ6Ø`ƒ9æ˜ãË_þò¯ýë[o½uêÔ©ev4}’9ç€9¿súw~Ãïo}øÖG^zä¯þ£üŸÇ_}üé7ž~îÍç>üøÃ2»˜éSï}øÞÄ)ãíåw‘=ûì›Ï¾:õÕ)ïM‰®;ÓÍÎôÁ}ô¯w?x÷¥·_ʶö©ÿûäëONyÊû¾_Ñ¡ñú»¯¿üÎËÿ|ퟟº‹i/xâµ'BcòÛ“ão“™Î¢Ìƒo¼÷F¼÷©7žš¶µOýæñ×}½6õµ)³åŸ wþõÎÄ7&~ê.²Ä[â•bÆðb1Ôp¶Á2ÿ,3Ž¿ü#ûŠ÷F9Êl?{* 厢WôAˆƒ*4â‹Ã,Ûà§þoÌ!vùéLÿl|d⃟øU„ñQìô[ëÉ÷¡Í!ÞâSg4íO½þÔ+ï¼C­èƒû Ìßy±¢]ì4^ßõ¯¨v1¶(wŒ3F;mäŸúͬ7ÌJ?ã] sêS{Ñ0{ñ#¹ŸñÏxÅ óõ^6̨]WÃ|âõÊ>ã] ³¢ã¤ë3&½øŒ‡|Æã¨îÉgmÚkâ-ñïEÃŒÏx/fhô¢aƧ¦«aVôÿèãºf¥Ÿñø`FÃŒ÷ö¢aÆgü¹)Ï}êG{úDÇ‹¾×‹†oéEÃŒáõ¢aEWÜ~ä=ù~ZÃŒrL;ê>õ›®†EïEÃŒ¬¢]×`â`ŽCºÒ†ûŠO¥ 3$ãsWã†C­èƒí.ŽÌ`©èC˜ñúÿ÷¯°aF¹£±WT»7Ìøk1jÝ‹Šâ¸ªýEñ#GEµëuÃŒã*~”ª´aÆØâǶJæ¬ÿPGuO×´×DÃŒŠ×þ·ÈŠf|jº~‹¬¨aNû-²¢Ý´†’] ó¡ºú¶«Ï½äÜW^Q’ù©»yÕˆÄò»ßýî;ì°Ê*«ôíÛ÷€¸å–[üñÈ*Ëì"K2ùá1ÿùâëî¿îÞçî½ï…ûÊÿ™0yÂß_ú{üMôÁÇÝ.§ÞÝ®ãç‡G_y4Þ>~òøò{™þÙøËè…·^ˆ¿†*úÅ<þF~û_o?;åÙé7Õ“ï|éÁØWüŒZÑÏñ;BüÞ]Þÿâý=ÙK×kxñ¿¿ü÷ø«¤¢}uñ¾<õå‡_~ø¡—ÿBO1£vϼñÌä·&‡Lw5šññ`ïƒ÷Þ|ïͨ]ϧÖõÊxK¼1Þ^Ñcx1Èj ¸‡{ „ øAzÆ)”$Æ%ˆBD9z¸»xY:ÊE¯è7åØWWì‡YÏ÷ÕõÊ8˜C&ìžâ•q0ÇÇ'>D`NÒ¨]|`ËÓÍøl´…hñöžï.fµ{þÍçc¨ñOÌ3n³»G>øèƒÿ.9eâý“+øÐý»v“ïïúŒÇºÛøŒÇØ¢Ü1Îíÿeï=à­(îÿïŸÄJ°÷Ø{ŒA‰?5Q£ì[‚EÁì±Æ VŠ-*Vì½`APTD°DÅ¢QAÄŠÏóÖùgŸ}朳w÷Ü{Ï=çÞ÷yù½çÌÎ̾w¾3ßýìwfòß;8дšÓaþ`ã¹;LŠ æô¯¦j'¡Ã¬ÂÆiÉØx&6^E‡‰WÑabwô œ‹çï0±ñÐaµñÐaVaãðÇÆ9=ÿ½£¡r 6^E‡IqŒ#¥M=ûl¼Š“f:ÌB6ÎÓYè0‹Ú8J‡É¹4ììËIÿ:LlƒÍoã˜gpŠªè09¥Š“Sªè0A:Ìü—R&f¡‡åÐarÓ«è0i`Ux˜4fštÑÃÁ|Šv˜)vWu‡YÔ)¢ NQ~“ŽŽî.8E…0,"8EUt˜ÜnêY´Ã¤Y2ˆÔ¦ÃÄÆ¹×U8E´+nw6þ¢ªqŠp9jÓabã¸RE;Lê†+U´ÃüÁ)ªíS$&wœªXƒSÔœ§ÈB&Vž" u˜ÉSdu&6þC‡9ù…‘ïŽúèÐó®9oµ5WSÉL{K ƒ`{ñ>øàí·ß6lØ©§žzb3>ì$þÞ{ïM™2%{Ëò/¿ürĈ÷ÜsÏöÛoŒÉÆå[o½5ç¾ùæ›Ì7ÿî»,A ­dÎ1çm·Ñönßëè^}NéÓ÷´¾ñýûö=¿oßÁ}ûÞзï}ûÝÛï¸G;÷™sy½Uôæâ1ö²?§p÷}ïê›ó¿O¸óµ;Ÿ~÷éüƒ£o ßšòÖõc¯ÏYJ’ìÈ‡Ž¤¬ÉÓ&rÆ>™ùÉCo>tãË7rÿ!IVMþÀáÇ?vü‡zÚ Øûñ;ñè‡Þï®ýš,($8𞇼0äÞߋ֑ÿÞá«|8ýÃñÿϽËYP’ŒS8‘Ó Á¤zT’ªRá$«ì € ½ýXþK )Ï-àFp;²KIÿÊævsÓ¹õùK„M‹F3Kç–ç˜ÆL“¦aç÷l1ÊÂ|0¢ü01OŒ”{‡Áæ¿´’nÎÓé(ò\THsÌ#ÇÜúÊ­Tuæ·y£…ÃóÈûÓÞËA÷”¿,R’ž²8·ÐÓ+uãvSOj›¿88дšÓaÒ°ów˜ÜåÐa¾öñkù;LZTè0«°qZ26^E‡‰í0{à0l¼Š§gà\rÈßabã¡Ã,jã¡Ã¬ÂÆász~Çîè0±ñ*:LŠc©ÂÆ«è0±šÐaæ·q*öƒæðc‡YÔÆ±Pzlœ†ÿé5t˜ØøÙ#ÎÎoã¡ÃÄÆ«è09¥Š“êUÑa‚"t˜ù/-¤ &7‚Û‘¿µ„“›^E‡I«Âä1Ó¤‹v˜æS´ÃÄH1Õª;Ì¢N]PpŠò{˜tt¡Ã¤ë+êa§¨Š“ÛM=‹v˜4-‘Út˜Ø8÷º §ˆvÅí®ÂƃS„P…S„ËQ´ÃÄÆqoŠv˜¤¯¢Ã¤n”U´Ã¬ýS$&wœªæwŠZä)²P‡‰Õ„§ÈBfò™ÝaΘ1ƒeèžþù;î¸ãúÿ~κä¬CÎ:¤ß™ýö=mß}þ¹OσzöØ£Ç"K-¢’™˜3¥Ú ”ñcÇ2­›¨È¥–Zjf|6Þxãgžyf„ ß|“/ôÙgŸ 8ð¸ãŽ[yå•ç›o¾Í7ß|À€O=õQšÙ2&ÌÓJæÿtúŸ¹—›»ójºæO»°ÞïorÕ&œ¾à v9­KÎÿ6ÿ׿§=yÚuc¯û껼Á¼PÆß5i^_ÎR’d+ \麗®ÃÕ)ôî•·™={žØRç,•dÕäÁòç-¿ö¥kó°ÀËý¢0/{þ²u.[ç—ýrþþó7YPH°È™‹ì{÷¾ŒéO¾ûdþâxÓ÷Æ'o<òÖ# Ù(gAI2NáDN/“êQIªJ…“¬²€ €\6ú²ü—RŸ[Ààvd—’þ•Ííæ¦sëó—š Œf–Î-Ï1™&MÃÎÿî“Áp0Œ(?LÌ#ÅT1Øü—RÒ-Ð9p:Ež‹ iV¿huü|ªÊ¤ïœ%†(»W>z,KX2Y¤$=·€s‰ÓˬBݸÝÔ“Úæ/4­æt˜4ìü&w9t˜O¼ûDþ“:Ì*lœ–ŒWÑabãE;ÌÎ[¯¢ÃÄÆé8—òw˜Øxè0‹Úxè0«°qøcãœžßÆ±:Ll¼ŠgÉiqI2l¼Š« f~§Ä¿ø8t˜Em ¥gÀÆiØùmúˆÀ§«¯¾úÀÜ忟õz¬·äúK.¶îbóv›—ÇÿΫwžgÅy:uÙäèf ´?ˆ‡¯¼òʨQ£X²’ ÄWmƧgÏž¼7y÷Ýw¿ý¶üB”¬É¯/¾øb¿~ýþüç?¯µÖZ«¯¾ú~ûíwûí·¿úê«Ùúg ŸV2;ÍÞi¹u–[í«­¹Íškï´v·»ÅÿíÚ­[ßnÝŽêÖíônÝ.î¶Álwãvûß½³Òˆcßãö=8}ÝË×ívi·œÿõ¹³Ï¥£/å…Zþ¸>ž\˜ï0öñ§?yzÎR’d=®íqÇkw°PI¡5¯Dþ5ö_F ØxÈÆIVMt¿¦ûCw8á± }á&Þ4þ¦oÚq«ë·ÂÛl² `ýÁëSÑ£'Îoƒ¼Ää 虉Ïì~Ûî9 J’q 'rz!˜TJRU*œd•}Pä¦q7å¿´ø”Åàvd—’þ•Ííæ¦gûQeà@Ó¢ÑÌÒ¹å9¦1Ó¤iØù_+c2æƒ凉yb¤˜*Õ¿É?éè8Ž"ÏE…4[_¿õÀQ©jþ.l|ÊÌ)¬D˜Ä†Wn˜¿,R’ž[À¹ä_å nÜnêImóšVs:Lvþ“»:ÌÑïÎßaÒ¢B‡Y…Ó’±ñ*:Ll¼p‡yuwl¼Š§gàÜîWwÏßabã¡Ã,jã¡Ã¬ÂÆász~Ç$é0±ñ*:Llœq¤I£Ž`ãUt˜XMè0óÛ8å²nXè0‹Ú8J‡‰Ó°óÛxè0±ñ>wõÉoã¡ÃÄÆ«è09¥Š“êUÑa‚"t˜ù/-¤ &7‚Û5†Œ?C‡ÉM¯¢Ã¤UáaÒ˜iÒE;LÊÂ|Šv˜)¦Zu‡YÔ)¢ NQ~“ŽŽî.8EE=ÌàUÑar»©gÑ“¦Å R›ç^WáÑ®šãáTáárí0±qÜ›¢&éq¥Šv˜Ô ·­h‡ÙO‘wµÍSd¡« O‘…:Ìä)2»Ãœ:u*‘Nwß}÷™gž‰L>½èµQ¯~÷çßñÔ¿öŽk¯Þcõ7Z±ó‚U23Æ5’@{%ÀšÕ¼ò˜4iÒÃ?|饗^ØŒÏM7Ýôá‡N›6­ÒìrdÌsÎ9稣ŽZ|ñÅÙ¯|¯½öêß¿?å¢O6ø§•Ìy:Ïsø)‡_vûe·>}룯>:üßÃËü÷æðáo þöÿþ1êýQ¬Õ“ÿ19¹éÓ¿žN§?ñÎÃßžó?ÖoyûÓ·Y{'ÿó%þ°ðÎWÓxñ³”$K³_C¡â~X·ÿ³‰¸O½ûT’U“#ÞñìûϲöN¡¹„çûÓßçÜ‘“F6YJ’ì¼ûfúB»<0É⋯¿`Df)•$«œœÂ‰œ^æëöO}—ªj' È¤é“’ö–óøÜÎåvä¼.’q£¹ÝÜôB"-hZ40šYþ²BJ3Mš†²$Åa8˜F”&)1RLƒÍÉ0IF·@çÀétù/päÄ‘<ËPÕBe“Œ ]¸wÁÆ ubÔÛM=©mþKƒM«9& »Ð½ æÔ™vy E…³ §%cãUt˜ØxÑóé‰O³Š§gà\rÈïhW¡Ã,jã¡Ã¬ÂÆász~Çôè0±ñ*:Llœq$1ÞœXM&V:ÌB6ÎJ¶¡Ã,jãÜe:LÎ¥aç¼.’…Ljò·“ÐabãUt˜œRE‡Iõªè0A:Ìü—R?t˜…&7½Š“V¨s·˜ÆL“.Úab8˜OÑ#ÅT«î0‹:EtAÁ)*d¡Ã¤ë+êa&NQÑ“ÛM=‹v˜4K‘Út˜Ø8÷º §ˆvÕ§ˆÑ§ §—£6&í Wªh‡IÝpÛŠv˜ç)²P‡‰Õ„§ÈBfò™Ýa¢QæÄ³?Ó6™i>þ3aä„‘#ÞÁSÿÃãrÏþ—õ_ù—+«dæ÷L)vC€^‚Wˆ™„eÞzë­C›ñy衇>þøãÏ?ÿœ<#>Dc2©|̘1Ș{ï½÷2Ë,³ä’Kqă~î¹ç¢Ä¦•Lö.?áì†>4ôÑ±Ž™<†µ³ÿ#„€U¹¹ ¯¡2¬©‚ŸÃé¬öœ]JúWÊbdüœBw_û5¾"žm:«<ǸДUt=v,¡bMifvä)%¤¡,V¢fð¹ʸ_e"œŒsqÂóÇÎ#l“úÑçᮔͳì—`ÿꛯ>ÿêsî]þ²BJNáDN/tTJRU*œ¿DP„5½Ë^EÆ—Ô[À¹ÜŽüÅq£¹ÝÜôB¾ eÑ´h`…Ê µ¢1Ó¤iØù ””…ù`Dùabž)÷®ÐM0Ýeq:E~˜¯ü:ë†QÕBíäÛï¾&«B*‹Z‘>Ø89d4Œè'êÆí¦žÔ6ÿ¥QM«9& ;‡É]&FT¨„³ §%cãUt˜ØxÑ£f&÷Žžs õÏ$fQf6lœÓóß;Z)÷ú‡Šw˜Ç8µó&ÿÄÆ«è0±šÐa³ñY?Ø8ÖZÔÆ±P:LÎ¥a7yEI‚ÐabãQ~&§TÑar 'í09¥Š¡ÃÌi!åÿ×aÎ*ÜarÓ«è0i`Ux˜!J¿h‡‰á`>E;LŒS­ºÃ,êѧ¨hF§G×WÈè0Ò/Z·›zí0i– "µé0±ñÐabD…œ"Ú·» N7¢P'œ"\ŽB÷޲ªë0©®TÑ“ºÑ9í0)‹þUØ8ü¹ œžß)¢£¬6yŠ,tXMxŠ,Ôab5Á)*TVòÒO‘/L|á¶á·]xÝ…«¯¹ºJfâx E€xH>lăÙœÏÌ™3‰Æ,Éú™ƒ :øàƒ—Xb dÌ>}úsÌ1›È›ˆœùi§•Lº¬A—ùÜÈw&½3ó뙼Öiò?–ð*´ŠWR1\ˆpn“E¤p /ˆ‹¾S¦,þûnÖwé¬rÏÂûb9¹ŠJ¡’9‹É¹¸º* ê€ QÌo¿ÿ–z½º“Úº:sJ8·´²ßs •¤ª…Š 4ж“PnÁ§¼ÀpÇË^BÆ—\ ¬Ð¥…Ä4æ*`†Jru…J 0).ãB*ýÎ-VÜwÕÛxÑv*l¼èþ_˜ÛIR WÆ÷T¯˜?v˜…¨ChZEM À çf\HÙŸÌBíäëY_¤º“â8— •:̲õÏø2)TPH\û³h; W]E‡É¥…;žÁ­ìOÀ¬}‡Éº}ÁN©jÙKÈø’Sª°qªWÌÐ,›Óaf\HÙŸB%‹ö*UÛxsœ¢¢†`½´Ð¨Â¹e‰e| ÌÂ÷îÇ“3²­ôS°ñ¢fÍ’  …,®9&÷šzþ0äxÞIÒTmã\`6^û“ÖUEË w¼º³RÛËøžV³9fíŸ" õ*$˜­ÒOéó󙟿ðÒ ·ßy;ëã©dV"æ÷@ÕÐÑ*ï¿ÿ~6EïÕ«“Ê3Yéâ¼óÎc£ó¢ÙFJ&;ž³2çäÉ“Qb‹fez H@€$  H@€‹@$ ôíÛWY ±î µ•@=`u 4L6ÛsÏ=W[mµ®]»þå/9è ƒØôçÝwß-.3ê²T2ëùî[7 H@€$  H@@ˈd•Ì–ÅknèÈè^˜<ŽØÈDòßÿþ÷D}¯¸âŠŸþùS¦LùqF{™²‰E]–Jf6.•€$  H@€$  ´'‘, ’Ùžn®×"6$@¼åË/¿üÈ#ôîÝ{ÓM7íÖ­Û*«¬Ò½{w´G¶8ã7&–û°ñPö<ñ¨ËRÉlÃ[lÑ€$  H@€$ ˆd•Ìó·8 ´WÓ¦M»ñÆO9åâ0g›m¶•VZi³Í6Ûo¿ýüqvÿ9r$ÿ–~ÆŸ=å<ê²T2Ûkûñº$  H@€$  H@¥"Y@%³‘ßH@U˜:u*2㡇ºÜrË¡d.½ôÒ¿ùÍo¶Ýv[6úaóJŸaÆMŸ>=£¸¨ËRÉÌ`åO€$  H@€$ vF ’T2ÛÙýõr$ÐV>üðCdÌ7Þxá…îÔ©ÓO~ò“9æ˜c®¹æš·Âg¾?[l±;eÔ9ê²T23Xù“$  H@€$  H ˆd•Ìvv½ ´öô8pàßþö·­¶Új“?¨šÙR|ðÁH uŽº,•Ì Vþ$ H@€$  H@hg"Y@%³Ý_/GmE`Ö¬Yˆ™È’ï½÷Þ;¹?|ð;þ´Õ-³\ H@€$  H@@Pɬódõ$ 4¨Ë2&3 Çc H@€$  H@@û&ÉÆd¶ïÛíÕI Ñ D]–Jf£ßPë/ H@€$  H@ÈO ’T2ó£3¥$P{Q—¥’Yû[`‰€$  H@€$ ¶"É*™mu#,WÈC ê²T2ó@3$  H@€$  H }ˆd•Ìöq[½ ´WQ—¥’Ù^o´×% H@€$  H@(%É*™¥ˆüF¨Q—¥’Y?·ÆšH@€$  H@€Z›@$ ¨d¶6p󗀚C ê²T2›Ós%  H@€$  H@E ’T2ëöY[ t4Q—¥’ÙÑ€×+ H@€$  H@™@$ ¨dväÆàµK þ D]–Jfýß2k( H@€$  H@h)‘, ’ÙR`ÍGh Q—¥’ÙÍS€$  H@€$PŸ"Y@%³>o“µ’€¨ËRÉ´aH@€$  H@€:HPÉì8·Þ+•@#ˆº,•ÌF¼‰ÖY€$  H@€$PHPɬ£gI@µ!uY*™µÁn)€$  H@€$ z É*™õpS¬ƒ$P‰@Ôe©dVå÷€$  H@€$ öG ’T2Ûß-öŠ$ОD]–Jf{º¹^‹$  H@€$  H ›@$ ¨dfãòW H m D]–JfÛÞK—€$  H@€$  Ô’@$ ¨dÖ¾eI@E D]–JfQ€¦—€$  H@€$  4.HPÉlÜ[iÍ%ÐD]–JfG¸é^£$  H@€$  H ˆd•L†$PÏ¢.K%³žo–u“€$  H@€$  ´,HPÉlY¼æ& ´,¨ËRÉlY¼æ& H@€$  H@¨g‘, ’YÏ7˺I@Q—¥’i“€$  H@€$  t‘, ’Ùqn½W*F$uY*™x­³$  H@€$  H :‘, ’YFÏ’€jC ê²T2kƒÝR$  H@€$  H@õ@ ’T2ëá¦X H ¨ËRɬÊï%  H@€$  H@í@$ ¨d¶¿[ìI =ˆº,•Ìöts½ H@€$  H@@6HPÉÌÆå¯@Ûˆº,•̶½–. H@€$  H@¨%HPɬ%|Ë’€Šˆº,•Ì¢M/ H@€$  H@h\‘, ’Ù¸·ÒšK #ˆº,•ÌŽpÓ½F H@€$  H@@ É*™6 H ž D]–Jf=ß,ë& H@€$  H@hY‘, ’Ù²xÍMhYQ—¥’Ù²xÍM€$  H@€$PÏ"Y@%³žo–u“€¢.K%Ó&! H@€$  H@è8"Y@%³ãÜz¯TH ê²T2ñ&Zg H@€$  H@@u"Y@%³:Œž% Ô†@Ôe©dÖ»¥H@€$  H@€ê@$ ¨dÖÃM±@%Q—¥’Y ”ßK@€$  H@€ÚHPÉl·Ø+’@{"uY*™íéæz-€$  H@€$ l‘, ’™Ë_% ¶%uY*™m{;,]€$  H@€$PK‘, ’YKø–% %uY*™Eš^€$  H@€$и"Y@%³qo¥5—@G uY*™á¦{€$  H@€$ @ ’T2m@=ˆº,•Ìz¾YÖM€$  H@€$в"Y@%³eñš›$в¢.K%³eñš›$  H@€$  H ž D²€Jf=ß,ë& D]–J¦MB€$  H@€$ÐqD²€Jfǹõ^©‘@Ôe©d6âM´Î€$  H@€$ êD²€Jfu=K¨ ¨ËRɬ vK‘€$  H@€$  ÔHPɬ‡›b$ J¢.K%³(¿—€$  H@€$  ´?‘, ’Ùþn±W$öD ê²T2ÛÓÍõZ$  H@€$  H@Ù"Y@%3—¿J@mK ê²T2ÛövXº$  H@€$  H –"Y@%³–ð-K(J ê²T2‹4½$  H@€$  H q D²€JfãÞJk.Ž@ ê²T2;ÂM÷%  H@€$  H@@$ ¨dÚ0$ z&uY*™õ|³¬›$  H@€$  H e D²€JfËâ57 H e D]–JfËâ57 H@€$  H@@=ˆd•Ìz¾YÖMˆº,•L›„$  H@€$  H ãˆd•ÌŽsë½R 4"¨ËRÉlÄ›h%  H@€$  H@Õˆd•Ìê0z–$PQ—¥’Yì–" H@€$  H@¨‘, ’Y7Å:H@•D]–Jf%P~/ H@€$  H@h"Y@%³ýÝb¯Hí‰@Ôe©d¶§›ëµH@€$  H@€² D²€Jf6.•€Ú–@Ôe©d¶íí°t H@€$  H@@- D²€Jf-á[–$P”@Ôe©dhz H@€$  H@@ãˆd•ÌÆ½•Ö\@Ôe©dv„›î5J@€$  H@€HPÉ´aH@õL ê²T2ëùfY7 H@€$  H@@ˈd•Ì–Åkn@ˈº,•Ì–Åkn€$  H@€$ z&É*™õ|³¬›$uY*™6 H@€$  H@@Ç!É*™çÖ{¥hDQ—¥’Ùˆ7Ñ:K@€$  H@€ª#É*™Õaô, H 6¢.K%³6Ø-E€$  H@€$P"Y@%³nŠu€*ˆº,•ÌJ ü^€$  H@€$ÐþD²€Jfû»Å^‘Ú¨ËRÉlO7×k‘€$  H@€$  dˆd•Ìl\þ* ´-¨ËRÉlÛÛaé€$  H@€$ Zˆd•ÌZ·, H (¨ËRÉ, Ðô€$  H@€$ Æ%É*™{+­¹:¨ËRÉì7Ýk”€$  H@€$  ‘, ’iÀê™@Ôe©dÖóͲn€$  H@€$ –%É*™-‹×Ü$ –%uY*™-‹×Ü$  H@€$  H@õL ’T2ëùfY7 H ê²T2m€$  H@€$ ŽC ’T2;έ÷J%Ј¢.K%³o¢u–€$  H@€$  TG ’T2«ÃèY@mD]–Jfm°[Š$  H@€$  H D²€Jf=Üë  T"uY*™•@ù½$  H@€$  H ýˆd•Ìöw‹½" ´'Q—¥’Ùžn®×" H@€$  H@È&É*™Ù¸üUh[Q—¥’Ù¶·ÃÒ%  H@€$  H@µ$É*™µ„oY@QQ—¥’Y é%  H@€$  H@K ’T2÷VZs tQ—¥’Ùnº×( H@€$  H@"Y@%Ó†! Ô3¨ËRɬç›eÝê™À7ß|3a„ñãÇÿç?ÿ©çzZ7 Ô!Ìçµ×^Ã|f̘Q‡Õ³J¨Qýß#kX·zƒø`Gu[I+&Ö&É*™­ Üü% 戺,•ÌæÀôÜŽLà‹/¾xüñLJ †Ó‘9xí¨‚æsÏ=÷`>}ôQ§{Š$ Ù$P5†Æ >ØQÕ™x¢@$ ¨d6ú µþhߢ.K%³}ßn¯®õLŸ>ýæ›o4hÐÈ‘#[¯s–@»$€ù\qŘϤI“ÚåzQhmQk6ÿvL€¡‡1ˆvÔŽ/ÓK“@6HPÉÌÆå¯@Ûˆº,•̶½–Þ¸x¡üñÇï¶ÛnC‡mÜ«°æh˜Ï¾ûî‹ùŒ7®M*`¡htQ£ßAë߆zƒø`GmX ‹–@Ûˆd•̶½–. dˆº,•Ìl\þ*JXóè£Þe—]®¿þúJiü^(KóéÝ»7æóòË/—Mà—@6(›¿J ƒCc—:Ï äOíž@$ ¨d¶û;îJ ¡ D]–JfCßM+߆T2Û¾E7:E˜F¿ƒÖ¿Í hDm~ ¬@ãPÉlÜ{gÍ[@$ ¨d¶ [³’€Zœ@Ôe©d¶8a3ì T2;Èö2[ƒ€"LkP5ÏE@#êP·Û‹mY*™-ËÓÜ”@$ ¨d6è}´Úè ¢.K%³ƒÜw/³Å ¨d¶8R3ì8a:νöJ[‰€FÔJ`Ͷ#PÉìwÙkl’@$ ¨d6IÌ@ˆº,•Ì6¼ÝÐT2úöYù¶% Ó¶ü-½ЈÚÁMôÚŠ€Jf[‘·Üº"É*™uuw¬Œ$ˆº,•̈J '•Ìœ L&RŠ0¥LüF…hD…p™Xi*™iwX‘, ’Ùa[‚.† uY*™ q׬dPɬÛb•…€"L£Ü)ëY·4¢º½5V¬þ ¨dÖÿ=²†5 É*™5`n@Õè²ÆŒsÇw¬½öÚ]ºt9ï¼óüñ×_ý³Ï>ûÜ$›À„ ;ì°ž={^y啹O2¡$ðÌg÷ÝwÇ|F% H  QÐØ‘L$Ða 4[8ðÀ—]vÙyçwß}÷EÔýàƒfÍšÕµÁs%  ´3fð"’{ÕUWm¶ÙæŸþ…^x±Å[Ò$P„VÃë˹çž{(rži% %1ŸÎ;c>‹,²ˆ8$ *hDU@ó  =ŒA||²ItdK,±Ä¢‹.ºÐB Í1Ç(™Hš¯½öÚǬ’Ù"ŒyJ@Í$€’9lذ®·ÞzAäãÓ‘»q¯]€$  H@€$ÐÑ,µÔR«¬²ÊqÇÇʱŸ~ú©Jf3õO—€ZƒÀ7ß|óæ›o>÷ÜsgŸ}6‹dœ‰ªyñÅwظz/\€$  H@€$ÐÑ\~ùåW_}õСCŸþù™3g¢´†až€šI€—,¼j™8qâÝwß}íµ×²Òõˆ#6_|ñŻܱ. H@€$  H@èP^zé¥×_=Dc6Sgðt H@­J€W-ìûÃ"¬è;eÊ”Ï>ûlÚ´iŸû‘€$  H@€$  H Ãøâ‹/ˆÆüöÛo[U‚0s H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H e |ÿã‡ÍÈØ£ü£>šøãçÝ?ï¿ÿ>{—³k9»•±›yË–knhs´ýï¾ûnúôéŸ~úéÇüá‡ÒæßûñóÎ;ïð¾ÿì³ÏH“]U¬ã믿ÆRÈaòäÉÁ|8cârfcC6û›5kVv>¡2S§N%“I“&‘Õ ޱMjB>Ù9ø«jC€Æüå—_2p|òÉ'´p ‡VJ›§ÅÒn9àÏÐøIóÕW_ak•*†ù€|Hš}È–ÿŸÿü‡Ì)(ù ¶Œù„ÊP>dŸŒn˜ùTªƒßK –èê2ð¬èØñ²hö4ÔÐb“áƒQ€öϰ2cÆŒŒ1ˆ|hØÁ|hêÁv‚r:ß“óÉ0ÀpáTóÁÜÒ•á˜jóÁ¾j‰È²$ÐLX .”˜2šq‰)š9aq•F"¹fÞSO—€$  ¤ 𘉟üÐCtÒIýúõûÝï~÷›ßüfÕUWýå/¹ñÆÿŸÿó.¹ä’;ï¼óµ×^ÃNŸè±šOv<»ñ˜vÍ5×üóŸÿ<äCzõêõÇ?þ±[·n¿úÕ¯VXaþ=ùä“ Ä3fÆ•"éL˜0áå—_¾øâ‹ÿüç?o³Í6œ¸úê«ó/¦´ë®»tÐA×]w¾4röã$´ÿú׿N?ýô­·Þz£6"‡UVYåÿ÷7Ø`ƒ>}úœwÞy7ÝtuÖ3n‡?Õ†ùé§Ÿ¾ï¾ûŽ<òÈýöÛ¯GŒ]»v]qÅ>hºë¯¿þ.»ìrà>òÈ#/¼ðOve+ÆÃ#æóÜsÏuÔQ˜Ï¦›nʹŒ>Á|þú׿b>O>ù$6ÈiÙ’/_|ñÅ!C†`>úÓŸ0lpµÕVÃ|ÈóØcÅ|¨0æ“! %Yy V%€ ñꫯb>pfB¿îºëÒ\1Ÿ•W^ Zk­µ¶Øb‹½öÚëòË/¿ãŽ;Ð$ËÖóÁ7{ê©§0ŸwÞ™¦N³æƒ=b>˜çرc1Ÿ ‡œÑ^¨ æÃ8H&œK¨VŒ5a>Œƒ#FŒÈóB¡l=ýRµ'€ÕÜrË-8f Lxt4i¬ìÙgŸ-[“àÈ1ÑÔ3F"¹<#Qpä’‘(8rXVÚ‘s$*{#üR€$“c7/ñßzë­«®ºjï½÷ÞqÇ×\sM†{ýŸÿüçŒþ8ØÇwÜÀq•‰OCöÌ™³É$PçñHß~ûí³Î:«oß¾<n¶Ùfk¯½6ñÅïÔ©Ó‚ .xðÁ÷ïߟP™JדFÁ#Þ=÷܃¥à©þö·¿ýÅ/~A&ü‹)ñ fuÆg†h<1ºÒܪA7nÅ!þ`w¿þõ¯yª]~ùåy2Å*·Ýv[ž1Ï=÷\2á)¸l&¥ÙúZ‰±[¼áâ-jÉöÛoâA+E„Yf™eBã_c5hü;ì°òR M­L×sÀ1Ûn»m=ö =NÚ|H1Ÿo¼qÔ¨Q¼› ’˜Ï­·ÞŠù`V6“tÅ<–@«à¥ÕK/½DƒD3áõãÒ=ÍuÙ?tû˜Òzë­·ÕV[üñ]tÑøñãiáiéƒ6ÌçÑG½á†0^=‡ñ‹–a˜¯ç(1b•Ëšù`>h>ƒÆ|xõ–T†ú`ÅXæƒRŠ(D¬‰5ŸVmfÞ|4uŒïŽX4ÝE]tŽ9æèܹóRK-Å{±Òü1¥àÈ1¡ÛgŒDŒVa$*ëƒ%#Qpä’‘(8rŒD‡$Ž#QÙLJ«ç7€$  ”àÑ•¹‡Õýäˆ#ŽøÇ?þ`‚¼ÃÛCž"‹yÅøá‡ßu×]£G6¬£ß4"]'ŸþyBbhá묳Î&›l²ùæ›ãjn¸á†sÎ9'J&>'!^•”LràÉî•W^ÁR8å÷¿ÿ=Ï’H7è– àDL‰ ‰ ã{LìÊ+¯DÏ)}Ä‹3fL åñ“ô»ï¾;‚ Î0~øÑGM58g[Š8õÔS/½ôÒ&£ñŽXç"ðÆo„hÌ-·Ü’FNsåÆyÁœsÎ9 $æÃ1æÃé4~̇/1¤^4`>ˆ9ŒYIáóyà0^Æa#¤'’ú`ƒÔóá¡•Ÿ°tjHM²ãÓ¢üýS-NEIm¾ffÄœvÚiçŸþ…^È¿´[DEš+–…‰1k¹’á&© mEóá=B0ŸîÝ»óJîì³Ï>óÌ31ŸÃ; óA%Ìç™gžÁ|J[>Sr0ŸË.»Œyض† R+œ@ªCHž˜’&"'†I`si&I­<@= UóÂ÷á‡Æ1çZrÉ%Yd‘ùçŸ饗.U2ÃH9L‰ÃV2G.‰‚#‡)áÈEWš‰‚#—ŒDÁ‘c$bLL9F"¹ˆ¡J@€r@“d8fîÞòÏ~ö3”L&b0ö±Ç#¾çyß}÷]n¹åx›¹ÝvÛácxÆ,¤œù›LõL ¸¯#GŽ$Ü‘à”LœL"X˜îdzá\sÍÕ¤’‰- çàãúÎ7ß|<ë‘Ï}wß}÷ƒ>È¿˜ÒN;í„´Â4=ìë„N`F!6E'dˆo!€¸„tWƒ³£Ë‹žyw0|øpBÚP‡ÐWù‰(MbxxD5,3èA› %3:`/¬„@ãD9¡¡6Œè}3a`ÌŠEŠ!¸…v‹)Ñžù{Ij‹ùiÆ—˜ÏB -Äèƒù0è`8H+4~̇Ùy˜1fÌÎÃ|P>yôK‡„ó!œ,DDÏ=÷ܘš*ÅñK¸µBe~Õ@ÕÁ|¨*ϹÃ$7ƒÚJ&±Êh˜D]¢RÞ~ûíôöè (´Û¡C‡â›áwa; /¼0C"<1fIUR˜6ŽùÐà[l1̇a óa¥ ¾Ä|ˆäÄ|Xá„0OÌ'ÄEG‹<`>̵Á|P,WZi%Ì=“LpöüqªÁâBÔó!ª A•àL‚Ö4Ÿä.xPŸXößÿþ7FD0$Ö 0Y€Q¦¬’F¢àÈ‘†§¡ôH¹d$ Ž#>XÆH¹d$ Ž#8rŒD:rõÙ~¬•$  Ô9dLV'ca1V&"ñ‘gR¢hˆ <Œùæ¸Áf'¤»í¶o'Yg,=|×ùeZ= T"€”*ÂbW_}5A,<»±Æâ /Êy´üéOÚ¤’ÉS!Ò +LÇ#1ÌDKâ<#ò`>,_FÀ'zÑ58Æ ,°<±"õ¤Wi Æ oöŠ+® +C·!~†X'žx‚|0R¢nƒ!b'$Š+Ërâ«Péêü^­J ¬éŠÉ É“­e’æ7ß|“öÏ„Ök¯½Ëâ5Ë5ì³Ï>H"È#I­0а1bfˆðÄ|ẋÉø4Ì'¼hÛsÏ=QcÒ+63aJ˜Ï¡‡Šu ˆb˜oÜ0TSj‚ù ¬`CâsH@>(B˜bfr/<¨1^"#fb/4N´Gœ.Ži–|‰အR²z‚<ÖVI¼å_þò–IêIx? $æƒ}!õc> "˜Íþõ×_Ç|Pf0b’‘q_PQ° Ì'ÉöùP(惀Ià%ÖAzª„H0¬˜³0`>è¢ÄjrJ˜«ždåêŠË]"ÂÕCÅŠ%¬ûŠ¿ÄK”]F¢àÈ1G.‰‚#—ŒD8ra$‘Kf¨1G.ŒDXJpä’‘(8rXï#GŽ|‚#çHTWÇÊH@@ýÀƒE¨d&AÌ6Ûl={öDÀaœ´^¾ÆÈËKyüa’éÁÖÿ͵†UÀ.X¼Á$’eÏ.GB!NŒw!*æ”SN!N†’Ò‰½d> Î*Q”LWGia%äÂ`B`iñr9æâaˆ`:Ó©C’I8à±”‡Vä Öz"®€x3žXy­%óO Ô†#íŸÕ2+=…Ѷ™…ŠB$$ý¬‹ƒæ™TÓ÷ßB:1‚iÒ˜O:æ?DMc><Î;ï¼¼nC®AöI&˜S4¦„ù0­ó¡ ÂD1Ÿ´ RÕà æC0iÑg0Ÿh°K*æê„êÇv°bþ‰ØL*†òI &æƒc†ÚYj>4{"Çx †Î‰ù „2Za>Iè0˜"*æÃœ"«1‚9“ဠóáíæÃòÑÌÅ|[5Ÿ”Ö6Üa8ÖÁŒb•Y®}Í¿¬’F¢àÈ1!6fŒD8ra$‘KDÁ‘KF¢àÈ•ŽD¼bK9F¢àÈiJõÓr¬‰$  4¢ÑˆcÈfÞ+Ï€ûÛ߈à-|ôXÊH͛ͿÿýïD‹1½èøQ¤§Ç6ÄõZI ä!€6H°V%K!ž³wïÞˆü¼ñǹ%B&í”"æà“ŒÐEy ŵfÂQ²-vÄ)Þ,A/³Ï>;ÆHÄ ¥sVT[„—{ï½—¸š.]º0[ /šõБ¢dþ)Ú ýóž+#DŸÆTBŒËôa#Ds¦Â ª̇ŸBÀ AËl)‹ù¤GrQÓ,ÐÇ2ÎX¥D5SnÈ„ô¬½‰ùK†ùl³Í6ŒV˜OZ%%Õ` Ì1óAB™Á||P›¦b)U`W æÂ Ðþ%»À|™QŽù ó‡\j>˜æÃê,úÇéU²´æ“T†P4̇Yí˜R'¯Û0‚Ù’á5ó¹ùæ›™¶Ã[o–ŒÀ|d4Ÿ”¶9ì‚wgX ¢=‘üìxÅF,ÎÚ?(™¼).U2“‘(8rŒDÁ‘«4áÈ…‘G.=G.‰‚#W:1[!qä°èàÈiJmÞr¬€$  4‚¾ˆÑaX‰×ñ¬ŒÄühØåŠexâcú-¯5yäi”¸MâJS6Öå[[ ”%€K™GÉ * Ê?R +É#¡°ÛJiž¤D–Ä‚x À+x¼kæ˜ó. ¤Ä¾0(¶2ÁÍæ!‘ÇR–8ãÆef#2u`Q–r"†˜¢dþ)š móÉ.Ž˜dd¢‘yNdqÖî#=g¡.b><Ê1›óáUSbK³"%æÃ”=Ä̇¹È&¤ÄZ™‹ùð=æC ¡Ë˜Oú!4G5ÐT ±Æ|X,…ñóAç)-Ño$P?HfdAÁv%íóa¡–þÃ|Ðù‰U®d>¬€‰ù0¸´ 0\ ¡h˜R惒É惙D—5…™˜VÆ ÌÇÍJ"JþY‚CEã$“Õei«„³J KΖÉLDÁ‘c$Â(J¯%‰‚#‡ÉàÈ¥G¢àÈ%#QpäJG¢´#ÇH9G¢Rà~# H@È @4C6ƒ;/ëY=†˜1Üc>Ñ)8̬˜Ä„#œa”Ì_ÿú×, ˆ»›ÌªˆÒû§š@N%•×ñ¼…'V™„©°Û””½vòDdOs$™ß„Ñ¡@ⓘ7¸ÍìkI¬&‰­1Ù²éÀÎ'1¼}Àñ·‰ŽfŠ6Kʲ%ú¥êfB@2”4ìnݺ1ýŠñ=ú$æÃ{43æÃ~=›eëŒù0³•L0¤V3ãa0˜™0‹óaĊ¹êLÀ(¢ŒÄ<*b><6b>˜kc²„&Sk‰ðÄ|ˆ[Ó|DÔ¼&¤E^lɘ‚tÏò ,ƒ€ÈßU“™‰‚#ÇHÄ ™e/'ŒDÁ‘c$"ÃôH¹0±kdpäJG¢´#ÇH9M©,p¿”€$  T"À›zFdfI0‚HËË.»¬lJâ0Yc¿ýöc Göä>«kâH—Mï—hh9•LÜQ“Ç{Œ81VÞã?1ݯìµ#ûóÔ‰/¹±‘á1Ì0 QÍüÄ#!†­!ÅðÄÊÊfdÎÃfiV|É"ó,z¼hÕØÖ¡4™ßH ðˆ‚6Âû/vüAa!>¢e¨-œaóaÅW"g0 $P9ª<6‚q¡R²8SÈQ5g‚ÔÏ z>æÃ:œ˜B%™G9ðgPoXœóaz /æ0g(å7mB ´OL “1…a&8º ½=ûõÐþÙs$á£É3‚0Å— ó9ù䓉ù¯d>¬„INÇFHŒÈÃÐ̇! óAKá'ö1!Š ó SêQ%̇l „ù j>%ÿlC<ªÐ ±D{†dFÞyñ¨ÂðÁxÁÊ e•ÌôH9F"j({!a$‘ #Ž9{a$ Ž\2G®4Ÿ`éÁ‘c$¢VŽD¥”üF€$M€×ñÌéCÆÄ/e\f×˲éqx§ÉRK¼dÄmæ…#0¼ÇWÉ,‹Ë/@N%“dØÚNb#¨4(*˜ÏüÄNµ$.+Å„œÑm0êÃó#æ£S¸_Ö˜^â$ªqH1˜+$0y)™¹ƒKÛÆïâ4u#%ñ̘ .æÓ¿ÿ믿¾’ù`#$À|°‘\0m#„qb>,!~bÂ|RË^>o%0^Iù Žj>eAùe›@œÇ%ãm2¡ËÌ2cv9R?Mšïi¨•”ÌôH9ÌŠÙèe/!ŒDÁ‘K¼µàÈaeÁ‘ #Q2H•͇/ƒ#‡]GNSªÊï%  H@e 🉱L8B|8;›cq(™ˆ–¸Ê¬ÆÉ,!L÷Cááñp®¹æbS^îW’1ÉG9Sl DJ–iªTbÙjø¥jI€=ªN<ñÄ=÷ܱ…•]‰(#­†:`>l,ÂV#›1=óa?‘Òi­¡¶˜;žólÈe^ò ‰Úƒ™ý‡8LÌmóalÂv2̇­0Ÿ°æS©ÄZR², ИÏ<óÌ#Ž8‚÷b(!|ØŽœ¸2dCV—EÌ<ýôÓ‰mÆjÚþ[ð 4ˆÅ-1Z5/*5fb)Yó!ŽRðèÂ(ƒòƒù° æÃDu´Ó ó¡tL˜™†Àº¬ÌY©Do¨jO‡ŠÕXùŸao*,§Œ;GM2”ÌôH9F"§-[ÿ0áÈ…‘GŽ‘(8r¼‰Ž\‰XH6#ÇH9M©,p¿”€$  T"€3Ìt?b,ù—]Kx}Y6%ž-#5¯ûy§”LNq¡U2ËâòËF'Sɤýyë­·²ô0SöX “‡Í²—ÌN¯D¿à%‡ÇÉ dèÂjN<ÃÎ=÷ܸµìW‚„‚ùÜvÛmXDÙ c> OL*ïÞ½;J&R OŽ˜cÓQG…ù þ`> #N² 9†>¼´Âõb" m›¢ÍSOæ˜ÓÅ’ $Æ|8`ýäJæÃ€‚ªƒù%“øglq혀ù0UóA5eÊ€€æƒdJ€(J&æƒj>¸ü©fhÉ^òDÃÞXL4ãq†°ÌtlF†’™‰0·0e8rŒD8ra$BÉÄ*ƒ#ÇH¹0¡dæq䉂#§)Õ¬µX$  ´*™íã>z-K@%³eyš[$À¾$DQîÅì965ØgŸ}ˆ–!Ð%Y…/ýü¨’Ù[ˆ—œ&€VÏÒ|„D¢“°%Âã¹çž‹¶É®%È2¼·b%sþLf—«d¦éyÜÁ  ²½±”ƒÄ £(¢üÚk¯%XT2H@€Ú”L¬æI“ÙåÌʈÉÄ `*z“‰GÍ‚0<ж^…Òò+™Ì',ÄdñÂV&“’wa{Ù$&“xNÌ*Äd0€‰®ºäŒÉ¤D… *€P4c2Ó÷Îã6'@4&²Ì½÷ÞË„qb½P)Y “BØ‘$½ŽÃÑŘOˆÉÄ|ˆÏ¬TF†Ø!æb2™·Îºd!&óÉ“IPæ³æšk´ƒù Óæ Æ @€9ãXú$Á`D2cŒÆ £Í÷êÕ‹f>0†•-‰@#åˆ#¼`"æSIü)­ƒßH õÐ’±$G Ü­‰'bGìæÆ~%¬I¾Å['m«­¶BÀ$%›0ö|ùå—‡u2‘PH«d>¬×Ç ~˜+ø±A9æƒzƒùp9ÉJ¶˜‹Ù2Ha>a{éÅræÃFê,Bˆù0œi>¥”ü¦–èêÙß oŠ5únˆaÆjˆÓ@«gàþäùeûí·Ç:yä¾çç’,‰‚#ÇH4f̘²WÁYŒDÁ‘c$‘c$ Ž#Qpä’‘(#ÇH9M©,p¿”€$  T"À&˜ìš‡SÊvÖèÃ+.›·v„ &¬xö.g¼¾á†x-›Þ/%ÐÐr*™(,öŽKŒù°å%ûa¨Ìê—e¯1g›RÖÉdeZ–W ;,óÓ 9ä¼b|ã6ÚˆR~âÙ¶lV,Fh “¸å8çî]^–’_¶ ž ‘1‘iá´s*Û‚°¨réŠa˜&€ù°~æÂ /Œùð„ˆ†S¶ÚØ™°Õ8æ6(ç¹…ÑHŒJÃf(˜ϘÛš8XVÙ¬ØW…Zñ>nçwÆ|§)›Ì/%P'eXsiáì!¢Î0`>¸v˜ësò"g“{—óÁ“!óaMZͧNI‡­-™'‘‡~˜ÕYÆ„–Ì€2ɸþ‰qÀl»í¶´s”Ìûî»! =2‰‚#ÇH”áÈ1GŽ‘ˆaŽ‘( 79Š#Qpä*ÝšàÈ1GNSªÊï%  H@e 0Î2û°ör]c5 Ë&ã¥çøñãÙ_šÞ!<˜UhÂ;ý²§ø¥—@N%цș§žz u…Wù¸ÐÆà–½ptvd rlýõ×çi”p5žOó$ùð@zì±Ç‰¼Áðt‰›]›a[["Ù˜Ht ³¨Ê–è—¨%„w^¡®™Ì\oñxF£I3–I²¥ƒÍþÝwßÅ|xîCÁ|˜!‹A•­3æ¶…%n[CØá¹à1c)¼YÃ|˜WˆùxF$ _–¾ÀÜxäD~Á|¨•Ä|H\¶D¿”@@´dÚìÁŒØÈ&|CL&ŽM0Úÿe—]VÉ|ÐjX±v¯½öBêaà8ù䓱…`>d‚ù0ñóa?Gü:,‚°ôÚ9Ñó!CæÃx§ù”‚ò›Zà½"Ê$›€#Q¢U²RäÝÿÿóÍ·Ûn;œ+¶µÂ^äù—n,N‹ì‰Aá¹1GŽ‘ˆÈç²WF¢0ƒ†Ä8rŒDÁ‘cÐ Ž\‰x…¹Ò‘(íÈ1GNS* Ü/%  H@•0tòÜǸÏLU<äþýû#ž”ê' ÓŒø7Ýt“»YÚåþûïç•%¢•rö{ 4.œJ&*³óØÅóÙa‡<ð@fË–½p”bf˜$H4Ë*«¬‚ïÊt§û"†·ù¼šGŠa®:û> …ýéÜÈ„·,-Hq -´¸ÜÈAé4K M00)Iå¬XB4&&òê -¶ìH‘˜ 5³–&æÃVÈXSÙÊÓòy0$gfðè‡öB8MHÉOXæÃϘOŸ>}Xóái1Å¡çPJÁ|tÝÁ|xüL'óXõF€FK&Óºiá¼Jf²9ò Ý>!Ía™YtE"-+™3ÖI€ù°<,þæ“\cPPJCæØæSÛ‰[B×0BјËù Ûh> IÚ„-ùÝC‡åýÔO~ò“¹æš‹Õ{TFoOø†ŸæœsNZ/Ÿ.]º0 ¬³Î:„‡MÆy³ÌH99ë<—½œ0áÈ…‘G.=G.ŒD,]¹Ò‘ˆ Ò`wa$ Žœ¦T¸_J@€*àU&SíxÞ\yå•™UA€ Ã+þjô‘çP–`Â×e&F^^ÇŸÉtŒð"²Ræ~/%SÉäêðQ‰iAáç-ékç‘“·<"cTF`š'l! ±1ìïÀ³*ïpÅY·–øbÕxûŸÎ„cNaN"¢yž%®€Y,òÞE%JZ;Á`ˆ‡L*g¥2¢1Y‹ åU„w^<úUª'b>D)ó* ó¡ý³}_FoÓ€0Â`0c>„Ü$k›“Ã#æÃÌ̇YÄ•a>!ä,)šlÑy0òÁ|x›€žã) ê–º"š!z q†ÆOcMšvÖLÞzë­‰jæ“öß8Æ|9c¡0ú g^yå•ÉÅ2ñóa7.̵‡IèѦÏ!exg÷ä“Ob>¼/`‘L̇¨¶Ä “ =@- б–î!<’6\éCÄ&ј0=“×a¤äÝq¿~ý˜5À F¢àÈ1G®É‘G.1F¢àÈ‘s‰‚#W:¥9Œ:8rI>µ¤gY€$ Æ%€bä vâc”ç5%¯™Ë¬Šhä%¯û‰™a-MVçÃ%æ?îqÚan\Ö\üJ&'b LÜCäLj˜ýwÖYgá§EHž7™”Çj–¼)àQ‘e0yä1W¡\ìˆ J¯¾ú*Ò„-†wÍ’›høÿc>éhḋ|06xE½Ç|Èœ€™ÄÄHÀ 8Ì'ì¥Å¿DÔ`>Dã >óI—•Nï±ê„ üI'ÄÜp¢ÎÅDzhð¡Û§ïºë®˜z 0Ÿô+fš7æÃÀAœæ³ÓN;یח\ È O ™”˜¡eI‚p€c>¼ø& _‘x3̇…M4Ÿ”Ö˜­!ƒexäG‚3K?|ÏìÔ~^„-ºè¢E2 q#b #Qp䉂#—nÞé‘(8rŒD8ré‘(8ra$ CUÙ‘(íÈ1G.]VZœ$  H   F²2Ã(/ë™È 3,•Ip  ~2O‚ŒÑÈ)8 ¬•Í茒Éì¤=÷Ü“-,³ŸO‘†uî°hÌØ­2&îh˜¯Ä“Aȼv'-…ŸÂÓà>ÃXXÁ¯wïÞÄÆ ã W2M)l¬rcÒË̲¸%fae„Ä0—y¸éÉD˜§°ÙK,Á#ç.»ìBxkÔch”HÝHÀ1S×Ùây·ÝvÃg&ÔO OT õ’jðáûÂ|( óAÆAí$[HÑ|’´ 0ö‚Ïö /0Y cáßô‡oø0;ÍŸnŸÕèÿ™ Cb›Qã™PO`$ Ž#Qpä*DÁ‘c$ÂRÒ#Qpä’‘(8rÉHDÊ0ñÌ•8rT)8ršR›´ •€$ Æ%Àð¿ŠÊðÍ›A„JÖ~aݘ[n¹o™•0‰Ïd*+K×®]yDÅËýÇ?þÁD§dìnÜk·æHð6<ìiÅd=œ^ý˜gÇbJLDeò8!(¼Öç§ðÁgæ91¼C癑7ì˜ J Ê'/âƒòÉÓ"®2ÿ"?²€™ð¾©“=š)…0›ô+x¼qžÙ…Uþ˜¢ÎS'6ì§€­‘ÃóÏ?â ¨±7D¾9€Í¢ÃPz4*¹($ÐÚÐIxóEØ ‹ïñôÇ¿¼ð"´˜6Ï ĺ`V¥ÎJ*FƦhç!Z†Æù?C³çñ“G<²Â(0Z>v)!¡f––CyÄ|ˆ¢!%Ø!È`>^x!Ùb› d˜û¡‚’ «£`>
Œ/—_~9Íž¬0†-Œ‚y4H ˜³È™Žù$×Hû'7Â2)ˆ—Ô¼ªÆ|3qü8—53© £6Žùð–75äƒù rj> IÚŠ@hü·âu@¥ï…y M¯ˆê'%£Ž͘š‡‘(8rHn¸az$ Ž\2áÈ…‘G.=G.‰‚#—ŒDÁ‘ÃÒy¡8rŒDÁ‘Ó”ÚªýX®$  44†rog_?¶a%ôLbW&11ÿ‚ÇRÜZFdfä1ý;=}©¡¯ÝÊK˜såÐdX7Γ ˜ìËâ±4{Ö_bR—ü>Á Ïq<òNm“P4^÷3I–u±–HbuY^Ù³ Óš˜!êŒ@J&èÆ×)¼@üA½$¶má…féZÖ=cUö B‡9ÿüóQVy’%F”LïdzTéôsï¦jI€·`¬ŸÌ|UÞsÍ1ÇŒ ˆ„ÄC>üðÃ,•>¬7Kž4{Ìó9í´Ó‚ù0j`>fÏ™dÂãéyg½Æk`>¼ Î¥˜F‡c>8˜##5Ô|Ò=®sÄ6‡Ê<Ë ù£LF#Qpä‰0„ôH¹d$šÂH„áD d2á­G.‰‚#ÇHÄ ‰#ÇH¤#Ý ÿ”€$  ä'ÀkDÂfˆ;ï¼ó˜ Á[K¢VÎÄ+æÃ1n-c1Sbñ±yteØÆîüe™RuH€ˆ¼\æÍÑìÑW_}ud‚ÈI(O‘<´’Ob‰D¬…`lQŠˆÛ!À uØ–:T•hÌÌlEi!z™=ˆIFra¡×n?~ÑŒ>á{"ÐJ4{$æb>Ìø ‰¨L›â 惪C†*9£·äF>X1æƒþÃòe˜6ˆù̇2Ç|0Ṙ0˜ÒL’Zy Àéâ•Ê‹ñHs¥¡2;É1i´¼G# ™mAxÕ…Œ™–iÃŒ&˜:$±´p¼5ÌçGßí‡Ñ‡ċˆÛÄ|°‘²æÃxÄOÌ´EŸÁ|HωŒ8a£VX™ó €XMZ! Só©A ±ˆ–"€$J&Be©’F¢àÈ1ñȃVi$‘ #QYG.ŒD˜dpä’‘k #ÃYâÈ1éȵÔ]6 H@è˜p†Y—Œµ ߨ4h8¼|' ©µìñ‡?ŒK´Ï­Ž¹³…´ï«f½/U Ù³’³&¶6à“üø†G<¦øá¯&~,<2{ˆ}OÐ-yEÕ!¸…Y»§KÌ ÷˜ð3^d?RRC&ˆBäÀ¢Lä°4oÅdvA¤IÑíûÖxuõL`̘1Dž ÿ3X”ZJd8üùƒ9uêDŽ.Š•0„¦ïa>̼£Ù£ŽóA)Å|ˆðä¡åP¢s£?Q‡t0æÉb>Ø Ì'9S4»¢h>4ÿl€±ß"‘ˆôö8]Dj±·2/Ð0(#6X$ ŒÆøOx$«ö•­'æÃxD¼%æC ¯áhó8o˜£æƒlÂØ„ù¤UÐҬȇ‰ ˜Óp°A&¤3ôUQcŽj*+Ö2ôda¥9ûÚ–@“É* e•ÌP½àÈ1ÑÔ3F"¹&G"VxŽ\2GŽ‘ˆp:rmÛ,]€ÚôIœØ×^{IC¸²LDºÄÁfB+n-“m‰CÆÄ‘ÖƒmO÷Ýk ˜"ÄLpš=s÷ˆxlòC\ ¶Àâí¼Ç9p€«ÌÒî¼ëg’ ý‘æÃ¿Ìx2dÓýXp,ÌìKÎ*ËŸµ›HÉî±d¬Xr`¿!2¡z¼ågm"Ê0X-±,=¿¬%ÜcÚæ@mÒj’´á¨’üó6 óaÂ]Ú|P{0æ¤óð˜-Å-K= fb>D»…5È0ò$&¢yÕ|"þþÙ&0–Ädn8“ôö,<‚~‚)¡rÐh9fwž+¯¼’ÆÏz•¯¾ú*¯›ËÖóa<¢ac>Œ54u†æ†cDL´Á|PA›02Ëæ¾$Ÿ0='Lq¨ª5a>Œn…2ôdaEø“Ú„o¯xàV,Á"X)ˆèý²ÕŽ#<#Ž\“#¯¤ƒ#—ŒDÁ‘ò˜8 #W–¿_J@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€ÚéÓ§O›6mÖ¬YíïÒ¼" H@€$  H@€$  H Ý@Æl7×â…H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@hhW\qÅùÍþ 80 aðàÁI–ãÇOÿÔÎŽßyçäJ9x饗ÚÙÖær:Nƒ© OK‘€$  H@€$  H@í’ÀÏ~ö³ÿiögöÙgOÃYb‰%’,¯¼òÊôOíìøÞ{ïM®”ƒ /¼°]`m.§ã4˜Úð´ H@€$  H@€$Ð. t%óû￟˜ú|óÍ7Í¿¡y”ÌÖ(·ù5¯Aù/\%³·Ã"$  H@€$  H@@£è8JægŸ}–ŽŸ=ztóï]%³5Êm~ÍkCþ WɬÁí° H@€$  H@€$ÐèÒJf—.]þ·ªÏú믟æPŸÂT~a-}-ÙÇ*™|ò¯Ï“qiþ$ H@€$  H@€$P{i%sƒ 6h‘ ÜvÛm×ÿ÷óÖ[oµHžÍÏ$¿°–¿,•Ì Vù×gƒÉ¸4’€$  H@€$  H@¨=ÖP2kyJÌ/¬åÉ-¤QÉÌ`ÕÀ3Šó' H@€$  H@€$ öM@%³9÷W%3ƒžJf’€$  H@€$  H@(J@%³(±tz•Ì4èX%3⟀$  H@€$  H@Í!P{%óã?~ÿ¿Ÿo¾ù&©<ß]sÍ5‡rÈî»ïþÄO$ß§>ùä“;ï¼óœsÎÙÿý{ôè±õÖ[ï¹çž'žxâSO=õí·ß¦S&Ç3fÌ¥½úê«é½Ëï»ï¾ÿÖâýt5’ód(™-R.õðÃ÷ïßÿ ƒêÕ«×a‡vþùç?ýôÓyêFšæ þî»ï}ôÑK.¹ä¨£ŽÚe—]vÝuWJ‡üСC?üðÃŒ ´È…gäOÅhGydÏž=YÙµ[·n´„Þ½{_wÝu}ôQƉÉOÔ?¹õ³fÍJ¾çø‘G9õÔS8à€ÝvÛíÐC=ûì³_~ùå$€$  H@€$  H@mH 5”Ì¥–Zê'ÿý 2$º:vGOÅ‘#Gòë÷ßá…²szòýÀ£³fΜ‰Ä4ß|ó%i¢ƒE]”LJõÌ3Ï<3JYúç³Ï>—óÏ %³™å~ú駨— ,°@imùæ¿øÅ)§œòÅ_d׳:ÔÄR0`ùå—/[4_Î1Ç;ì°Ã<À+­@žÝ`’"P/¿üòôFçQ gŸ}ö}öÙç½÷ÞKN){ÎaòäɤA=묳Òß§sþÕ¯~5bĈ²Yù¥$  H@€$  H@@Í´†’™V„®¼òÊèZ"y ‰àº´pÄq¤d…ˆØ¥)ûçoûÛiÓ¦¥K¬BXKŸž}ÜJJæ­·ÞºÈ"‹”½Àô—?ÿùω!̨a¨ÇŽ[I>MŽ÷ØcR1³ àÙ &\ ñ–ë®»niJ¿ùéOzÓM7e`I‡’ùî»ï®³Î:¥ù¤¿A#½êª«2òô' H@€$  H@€$ Ö&жJæ3Ï<Ãôð´dŽÓJ&Vº’!Á¼óλÌ2ËøYz.b&êh­ a-9·ÉƒÖP2Ü©S§Òë*ûÍl³Ívíµ×VªgZÉ̃zÒ¤IK/½tiA‹/¾8!¯”UúÓü£Ò«ž–K¥oòŸ8qâ*«¬RZú<óÌCÛ(Û Î8㌨bÉŸéâž{î9\Ks.ý†²^yå•$$  H@€$  H@€jL -²ê`‹”žVŠJ…©´¼Æª˜‘d„’Öµk׫¯¾:Ô„ Å›m¶Y’Ií¼óΛ2eJø•¹äo¾ùæõ×_ª™¤á€9ÈÉ…°<æ?~®¸âŠt檇ïù7É09+çA†’Y]¹Ã† KW’ãvÚ‰åCÇÇ¢—÷ß?‹‚nºé¦é4Ìõf-Ͳ.„šèÊ_ÿú×霉•Eÿœ:ujÈÚãÇÿûßÿ¾à‚ ¦“E¥WqáÙ †r£˜IZÈ\€8E¸f™æ•§`t×Ûo¿½,–tqIû'=Ë®Ò\Y”ÀT˜÷éÓõ2}¥;ï¼sÙ ýR€$  H@€$  H %ŦöJ&“vƒR´ÖZk!ˆ•*Ь`™HIÌ3fLY&Ÿþù¶Ûn›¤d*ú×_¥l­´3”̤ôüå~ðÁéIåÌòf{$ŸôÁñÇŸ\,L3/»iQZÉlu´#Ò¥—^š.1}˜žϪª¥-ŠÄéâBÎ(ä£FJòIî¸ãŽtÀ'W]Ú®’ÄH@€$  H@€$  ´*´’‰ò³aÁÏ 'œPZ½´RT*L¥åµ #±UôW_}Ušß\|ñʼnеÍ6Û”M¾|ñÅ“”V%Î/¬E'füÙ²Jæ_ÿú×ä¹¢Œ¢O>ùä$1e…ÇB¨‰BL2ÜrË-3Šæ'64Oo¾ùæeçžÑ`Ø­~î¹çNÊÚh£Ø½lqáË[n¹%IÌA“í“4„˜Ù[)ÏÓN;-aö¤•2ñ{ H@€$  H@€$ æH+™iÅ&ç1sŸKë!L‘8’×ЦJsH¾Ù{sšì¶ÛnÉ÷eÖ^{í$1ŠV”&¿°˜ñg *™dÎ9çœIý™ÄQnøiã7NÒ—§-„º_¿~In¥;ÎG•aO¢$ñ +¬ýþÌ<£Áœ~úéIA¼ð eËJÙ£Gä”…Z(½hjH–.Ž”‘>=:fK ô¡ÉºQ2ÿ”€$  H@€$  H@hmm«d2u·Ò„ñpá;î¸c¢J-¹ä’ÙñxŸ~ú)ûP‡óÍ#tù…µèÄŒ?[PÉ<å”S’+eŽùÌ™33Ê ?Ýpà É)¬–YzÉi%³IÔƒ :è¿f—žV2—[n¹²‰óOK‹Qoz£VË,[Pôe:¸>,§%HÇBM¢^~ùåÎgŸ}v”›J@€$  H@€$  Ô†@Û*™ë­·^öe²‰y""qÀ¾älež}J¥_ó k•r(ý¾•Ìô>>[l±EiY¥ß°ONéÄç´’Ù$êÒü3¾9øàƒ“¢[OÉä^'¥pÀžMUJ~âF§£[KµÇ´’‰v›œXé ½ßÐ1ÇS)™ßK@€$  H@€$  ´*´’Iü[²w΃§Ÿ~º´zi¥( ±#qZ^ëÝ»wéééoس;­eq̾?l*}Ï=÷dÇg¦3 Çõ¬d²=wçΓ+=î¸ãJë_öB “³¥)„::·ìŸìŸ>bĈÃ;,=áºõ”L6ÜI®ŽƒI“&•­Ué—+®¸br"{šG Òí©<úµôÏ?üáIn‡zhi¿‘€$  H@€$  H@¨´’Yv­Å*êVв•̳Î:«ÉüO=õÔDGJ0Ÿš8Ã#<’XÄ<;J׳’ÉŽ3éKûÓŸþtH¾Oúö•în“V2ó Nß æªßwß} 8ðÀ·Új«5ÖX£K—.éJ&Ç­§dRzR [ •®x™®pú˜ýÍ“wØa‡ôO§Ûçµ×^ýZúg÷îÝ“ÜT2Kùø$  H@€$  H@¨ ´V{%ó‚ .Ès™Ñþщ¬” ²m»í¶¨¦_~ùe¥ ëYÉ|öÙg“k©úàðî=­dæD&Œ~¸þúë£æ¬Ië)™Ç{lR‡e—]6ººŒ?·Ûn»äÄM6Ù$J™V2Kw†Šó§Jf)¿‘€$  H@€$  H@µ'ÐJ&XF<Ŷ5‰BUö`±Å#†sÖ¬Y¥$ëYÉ$ú±ìåúòoû[tÕE•ÌÇ|µÕVË.´S§N„hpÀI²ÖS2÷ßÿ¤Â,£«Ëø3­dn½õÖQÊ´’9lذè×Ò?U2K™ø$  H@€$  H@¨=FQ2™)S¦0x§vbwïDã*=`?šR’õ¬d>øàƒé«XuÕU»ÿ¹]u!%“IúéÕ/“ú,½ôÒ„5îµ×^ýû÷à>ùäJaÕ$[{Gå†?óOK‹éåˆ2MJáZÊ–RöËô…—îé“.N%³,@¿”€$  H@€$  H@uH ±”Ìà÷ß?vìØóÏ?Ÿˆ;öJô®ä t'—üÂZRJ“-µw9§IÍ9¸ýöÛ›,:O‚´ —=»üÓO?E±L×@Df^WÚ)¾6J楗^šTiñÅÏsÉ!Mz#$It¢JfÄ?%  H@€$  H@@ChP%3Í–¥ï¾ûî?þñ‰êÅÁZk­•NÃq=+™&LHWþŒ3Έ*_ÝŸù•Ì#Ž8"]²A­é:üë_ÿJÒ·^L&a¢I)Ä‹~õÕWé:T:f#øô*wÝuW”R%3⟀$  H@€$  H !´%3p&Js¿ýöK„/v6vÿ©g%“…=çŸþ¤ò½{÷n‘Æ“_ÉÜtÓM“ÒûÛß6YzzWñÖ['ó½÷ÞKjÅÁ¸q㚬 ¢EG_yå•è,•̈J@€$  H@€$ † PÏJæm·Ý†J>}úôi’ç‡~˜¾˜²>¥ž•Lê¹Å[$•_yå•ËnZ”¾ŽßyçŸÿüç‘|ðA” ¿’¹è¢‹&¥³cx”OéŸ{î¹g’ž ”&à›üÀÓÒbzLÔé¹çž;)èÐC-[Pôåî»ïžœ2ï¼óF‚6‰ÓŹNfDÏ?%  H@€$  H@@ݨg%“¼D’B²k’!ÓŠÓÂ×ĉÓ§äÖÒge·Ô:™”ÂrŽÉÅrpóÍ7gͯ½zõJN)H™SÉDëKòá`ðàÁÙEO:5½6ië)™Tc³Í6KêFØê矞]7®õ29åè£.M¯’YÊÄo$  H@€$  H@@ý¨g%ó»ï¾K+fÏ<óL6ÏQ£F%jU”8R2Ÿ}öÙ(AV¡dV*wúôé ,°@RÖù$"1£J/¾øbz«ñ /¼°4qN%“ éLŠîׯ_iVÉ7‹î°ÃIbr*™•.œœÓÒb:&“ŸžþùôežrÊ)IMʰÂgR·.]º|üñÇ¥ÉÒÅ“YÊÇo$  H@€$  H@@}¨g%bé}|Ö^{mN¬„qÆŒ›l²I¢b±§y”]töÙgO\uÕUQ‚*þÌ£dæ/÷øãOªÇÁöÛo_)ñÉ'ŸD?L/»ì²è´¥õϯdn·ÝvInóÍ7ß«¯¾Zšß°•yÏž=“”á€MÏË&Îáii1R2Éy·ÝvK—xòÉ'—-Ž/ù)òïÿ{Ù”éâT2Ë"òK H@€$  H@€$P‡ê\É|饗Òò#Q‹ìšÍfåi’(fìOVíæœsÎ^x!&§Õ¿…^ø¬³ÎºóÎ;Ù æÓO?-Mœç›¸˜hƒÐxíÏw4\E„Œ¨ FEÄ€C…(D„ë+¢ â Aå%âETTh[yÊ[ õÍrÖíoBÞk÷é}öãwFFSµ÷^kýæ^óœú÷©* @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€Ý¸çž{n¿ýöÛn»í–[n¹Ùƒ @€™À­·Þ±À]wÝÕÍଠ° jåÊ•?úÑ.¾øâ = @€ @€1 \tÑE?øÁ.¿üò믿~!+ðtM Þùë_ÿúÚk¯=í´Ó>úÑ~èC:Öƒ @€“À?øÁã?þ¤“N:ï¼óâ™wÞyg×â ó!@€@Ä»1¯¸âгÏ>{Ï=÷|øÃ¾• @€ 0>ÈþäOþäMozSõÎÌ»ï¾[lB€® D’ßTþ¥/}i§vºßýî÷à?xóÍ7ßb‹-Æ×³­˜À: Ä®Y²dÉøÀßû½ß[§ 9™Àøbûl¼ñƱ}â h|«·bS°‰¦€ècˆ§žxЇ¯€Æz X÷¼À–[nùЇ>ô!yÈýïÿ=èAË—/¿ôÒK¯¹æIf×ó!@ âã—\rÉç>÷¹'<á xÀöÝwß7¾ñïxÇ;þýßÿ}LVë*ðÎw¾s=öØqÇ_úÒ—®ëµœO`d±}vÙe—Ø>‡rÈÈ–n¹¦#`MÇÑUF)O=ñØG£°hóG}tì…0·ÞzëH2<ðÀøù ¿øÅ/$™R#:(pÇwÄoùY±bÅÒ¥Kãß">øàO<ñôÓOŸŒ1¦Ÿml­ÖU ÞØ¼ß~ûí¾ûîo{ÛÛÖõZÎ'02Ø>Ï{Þóbûœ|òÉ#[ºå˜Ž€M4GW¥@<õÄsPÉÌ ÄöyÑ‹^ÛçÜsÏ%B€@›¨šSTñÔÏAñˆ}Ä„Àh®»îºØ ìo¿ýö’Ì‘gD–O û)ÉŒ7–ûÇ—îWÍ ;(pÕUWtÐA/xÁ â]Íœž)è²@lŸxKslŸø.ÏÓÜtVÀ&êliL¬ûñÔÏAñˆ}ÔýÙš!õ$bïÉ\OÎ.K€ÀTRË’dNEÕEF( ÉaÑ-yZB˜iIºÎhl¢Ñ–ÞÂ×]@’¹î†®0 H2PSK 0`Ô²$™®µ¥­WIæzåuña a†]_«kAÀ&jÙCdµ²ÖU$bIf‘žƒ hY µ,IfËþ†Œ€$s0¥´ö„0í›q`6ÑÀ j9m H2ÛÔ6VgR, Éìl¥LŒH-K’é® ÐL@’ÙÌÍYB@ã6 °Ž6Ñ::}Ì’Ì1WßÚR, É\ñ:(Z–$³ƒ52¥^H2{Q&“즀¦›u1« ØD=*–©vM@’ÙµŠ˜ÏLR, ÉœI J€@MÔ²$™5ÝF H2ˆÿ%P_@SßÊ‘îSÀ&ºO$PG@’YGÉ1ƒH±€$sð·@½H-K’Ùëjšü ®¹æšC=ôÿñO9å”NÃÐú(Ûgùòå±}¾ÿýï÷qþæL`æ6ÑÌK`ýˆ§žxŠGì£þ®ÂÌ ¬£@Š$™ëèétÖ«@jY’Ìõªíâ¸é¦›N>ùä£>úœsÎð2-Àúˆíó¡}(¶ÏÊ•+×Çõ]“Ààl¢Á—Øן@<õÄsPH€@GRË’dv¤.¦A€ @€ZH±€$³sC ÐX µ,IfcI' @€ @€Þ ¤X@’Ù» š0Q ¤–%ÉUõ-– @€F.bIæÈïË'ÐqÔ²$™¯—é @€ @€) ¤X@’9E[—"@`ê©eI2§.ì‚ @€ @ ³)dv¶R&F€@¤–%ÉtW @€ @€ñ¤X@’9žÒ[)> ¤–%ÉìcÍ™ @€4H±€$³£³hG µ,If;ìF!@€ @€]H±€$³ E1H-K’¹” @€ @€á ¤X@’9¼[! ¤–%ÉRq­… @€LH±€$s2—Ï 0[Ô²$™³-‡Ñ  @€ @€@›)d¶‰o,JRË’d–:ž @€ôW Å’Ìþ–ÒÌ ŒA µ,IæŠn @€ @ H±€$ÓA€@—RË’dv¹XæF€ @€¦+bIæty]é ¤–%Éœ.¯« @€ @€. ¤X@’Ùåb™©eI2Ý @€ @`<)dާôVJ ©eI2ûXDs&@€ @€ÍR, ÉlÆè,ÚH-K’Ù»Q @€ @€@R, ÉìBQÌÅRË’d.åã @€ @`x)d¯ÄVD`H©eI2‡T\k!@€ @€“R, ÉœÌå³ÌV µ,IælËat @€ Ц@Š$™mâ‹RÔ²$™¥€Ž'@€ @€ýH±€$³¿¥4scH-K’9†¢[# @€¨R, Étc ÐeÔ²$™].–¹ @€ @€é ¤X@’9]^W#@`º©eI2§Ëëj @€ @ Ë)dv¹XæF€@jY’L· @€@Š$™ã)½•è£@jY’Ì>Ñœ  @€ @€@3 H2›1:‹vRË’d¶Ãn @€ Ð H2»Ps @`1Ô²$™‹Aù8 @€ž@Š$™Ã+±’@jY’Ì!×Z @€ @€Àd H2'sù,³H-K’9Ûr @€´)bIf›øÆ"@ T µ,If) ã  @€ @€@R, Éìo)ÍœÀRË’dŽ¡èÖH€ @€* H2ÝtY µ,If—‹en @€ @`º)dN—×Õ˜®@jY’Ìéòº @€è²@Š$™].–¹ Z–$Ó-A€ @€Æ#bIæxJo¥ú(Z–$³E4g @€ ÐL Å’ÌfŒÎ"@ Ô²$™í°… @€tA Å’Ì.ÅXL µ,IæbP>N€ @€†'bIæðJlE†$Z–$sHŵ @€ 0Y Å’ÌÉ\>K€ÀlRË’dζF'@€ @€m ¤X@’Ù&¾±(H-K’Y èx @€ Ð_ H2û[J3'0Ô²$™c(º5 @€ @€J Å’L7]H-K’Ùåb™ @€˜®@Š$™Óåu5¦+Z–$sº¼®F€ @€º,bIf—‹en¤–%ÉtK @€ @€ñ¤X@’9žÒ[)> ¤–%ÉìcÍ™ @€4H±€$³£³hG µ,If;ìF!@€ @€]H±€$³ E1H-K’¹” @€ @€á ¤X@’9¼[! ¤–%ÉRq­… @€LH±€$s2—Ï 0[Ô²$™³-‡Ñ  @€ @€@›)d¶‰o,JRË’d–:ž @€ôW Å’Ìþ–ÒÌ ŒA µ,IæŠn @€ @ H±€$ÓA€@—RË’dv¹XæF€ @€¦+bIæty]é ¤–%Éœ.¯« @€ @€. ¤X@’Ùåb™©eI2Ý @€ @`<)dާôVJ ©eI2ûXDs&@€ @€ÍR, ÉlÆè,ÚH-K’Ù»Q @€ @€@R, ÉìBQÌÅRË’d.åã @€ @`x)d¯ÄVD`H©eI2‡T\k!@€ @€“R, ÉœÌå³ÌV µ,IælËat @€ Ц@Š$™mâ‹RÔ²$™¥€Ž'@€ @€ýH±€$³¿¥4scH-K’9†¢[# @€¨R, Étc ÐeÔ²$™].–¹ @€ @€é ¤X@’9]^W#@`º©eI2§Ëëj @€ @ Ë)dv¹XæF€@jY’L· @€@Š$™ã)½•è£@jY’Ì>Ñœ  @€ @€@3 H2›1:‹$p÷ÝwßtÓM×]wÝ~ô£ïÿû\pÁ¹çž{öÙgå7¯ýëßøÆ7âƒßûÞ÷®¸âŠo¼ñöÛoOW¸ÏÿM-K’yŸJ>H€ @€)bIæ «lQÚˆdò¢‹.:ãŒ3=ôÐåË—ï½÷ÞO}êSwÚi§?þÍãOÿôO·ß~û½öÚkÿý÷ÿûßÿíoûç?ÿùêÕ«×:ÏÔ²$™ks @€Œ@Š$™ƒ©¬…˜­À­·Þï¾üøÇ?þò—¿üùÏþÓŸþôvØa»í¶Ûú7G=êQyÌcvÝu×=÷Üó ƒ:å”S"öŒ÷pFGºçž{&Ì<µ,Iæ+Ÿ"@€ @€H±€$s`õµ³ˆï+?òÈ#ãݘÏ}îsŸùÌg¾øÅ/~ýë_È!‡¼ç=ïyï{ßûŽw¼ã­o}k¼Qs·ÝvÛe—]vÜqÇÃ;,¾ßü²Ë.‹¦4aΩeI2'Xù @€˜@Š$™«¯å˜•À5×\Yå¾ûîIæ_ÿõ_¿îu¯ûÀ>pâ‰'Æ5¿úÕ¯žvÚiŸúÔ§8à€g=ëY}ìc7ÜpýèEñÎÌøYš·ÝvÛ„9§–%Éœ`åS @€ @``)d¬¾–C`Vñs2¿ûÝïÆÛ,Ï;ï¼ /¼0Þl¹råÊ_þò—¿úÍ#Þ±yõÕWÇgžyæ+_ùÊ-¶Ø"Þ™±çá‡~íµ×N˜sjY’Ì V>E€ @€&bIæÀêk9f%¿»üú미òÎ;ï\lÑâ€#Ž8âþàâÅwš¿æ5¯‰´s±ããã©eI2'Xù @€˜@Š$™«¯å˜•@üâžø>ñ[n¹%"ÍÅæ¿¬<ÒÎøÝåþç¾téÒøi™xàªU«;>>žZ–$s‚•O @€ @€ ¤X@’9°úZŽ DÔyüñÇÿÅ_üÅN;í´í¶ÛÆ7˜ÿüç?Ÿ0çÔ²$™¬|Š @€ L Å’ÌÕ×rtY Þ“yà 7sÌ1c>á OØa‡ößïÉìrÉÌ @€ÌP@’9C|C¹ÀÍ7ß|ÅWvØa›m¶YĘ{î¹çßøÆøÉ™XRËòžÌ V>E€ @€&bïÉX}-‡@gâçgÆ7’ǯ5ÿ§ú§ßýÝß}Ò“ž´Ï>û”þîò£>öœsÎûéOWÝvÛê;¢¹–?ñÛ‡ÿD“¨î¹gþÄø³Ö!Ö< Ž_½zþOÑ#ÆŠ?qÖš—ªù÷ø¡¤qn飚dÍ!ªÃ*»î*jþø˜dÌ+æYºº ³´p±Æ8¥:·h…qJL2¦Ú3Nlðˆ±`V/.Vµ+ZZupU¸8½èQM²´v•FéXÕÄHÆ) 0czñ§ô>©0«=^ºÀuÁ,ªZupL¯1f,°èQaÆp îÌêÜ¢áâà ³t¸˜aT¼Á#†k°º+N,}T ¥K‹ãc† 0㔘déFˆ±âOé}RQÄXÕéõ×ÇWo€Ù~Ãl†…(}Ä)¥’a^Ý–¥wfuk•.­*qÕ0KWWU<Xÿ>‰#ãø˜dƒGL²1féF¨0K—V9Tç–.°Á¯0Kï“jbQ‚««*^º´ ¤è&©Ž6ÀŒZÇê¨Ûn+ɬÿ’Á‘4ˆwcÞxãñó0ßð†7Äw”ÇOÈÜrË-_ÿúןsÎ9—_~ù_I¬™dn´Ñ&Ë—¿ë=ï9ý?þ㻟ýìª+®º×Ÿ«W¬¸~ÅŠ[V¬¸cÅŠ¹Ï~îÌ3ç¾ùÍù¯¶J7Ü0÷µ¯ÍŸþ¹ÏÍÅ¥jþ‰±¢±_qEÙz¼ÈŒgØèÏ5GY8ìŒ3æ_ÂÝtÓü?áÕÄÓë<ÿÜú…/ŒøÅ/Î}ùËs\P6V5«Ÿþtæ¾ô¥¹SO­;b°_xáÜX÷Å ¿x‘¯N£v J5ÿ§Ä‰qzf¼ðŽIÆTëß'ò“ŸÔ/ÚÿwdÌ-J…ˆrÔ\W…ŽrGÑ‹^ÙÆXqkÅ ·Yý±ª#ãfŽ[:nì¨HÍG¼ÎŒÛ'6Q}Ì826iÔ.6lé#ÚBŒ§G£¨¿À¨]¼‹©½‹±3XN;­`¬˜U_íñ¢&s‹rÇþñuÔQ;ï¼óþá>ãÏxõ«_ýÙÏ~öšk®‰7jÞ3ñ ¡5“Ì 6ØðØc›m^ò¸Çý?;ìðÏK—t¯?/]zìÒ¥g,]úã¥KïÚe—¹ç=oîþÏù¥ø—¸¿xþô'>qnéÒº8`î˜cæ>ûÙ‚7WÄk••+ç¾ûݹ·¿½î( óÙ}÷¹Ï|fþŸðâ_6ë?â_¢O8aîïœ{ÚÓ F|Æ3æþÇÿ˜;䲯¶ªY}âsÏþÜž{Îí¸cÝwÞy~¬|dî;ß©¿²ù×QñB¼{ы관§Ä‰qzfL/&S /\jò_!($XJñõ]Œ…ˆrLeÍÏF¡£ÜQô(}ýG8Ä­7XÜfk^­ÎßãfŽ[:nì¨HÍG¼ŽŠÛ'6Q}ÌØž±Ic«Æ†-}D[ˆæ§G£¨³¨ê˜ÿþßçÞ÷¾ù©Æ×w5±Ç«wà¼ímsOyJÁX1b%ˆÙ+Äuj>bnQî˜g̶þÒÂ!n­ui˜qc×o˜QåªaÆ&ªÿ*:a6Øãq'ÇoÐ0c7h˜±Çc·ÅSQß8¾j˜±Çë7ÌØã1V̳tW ³ÁÿØãqzý=«‹ZÇ©ÖßãUÃŒ=Þ aƱJf욪aÖßã±´‹ª†YºÇc‡FÃŒ=7vý=^5ÌØã±‰êïñªaÆoÐ0ã” 3¦× aE€Dì¿´êȪaF!¢õUÃŒ¢7h˜qƒ5x…7sÜÒ¥ 3ÆŠíSÚ0c“ÆVmÜ0K_E ª^Õ…{<Ú]õ¢¨Aà –8·´aF¹4̸µâI¤†{¼j˜¥/Šâ¾Z—EÑ0¼(Š—¥ 3öx¼¼)m˜q|t†Ò†s‹—m¥ s<_E5Ì…¯"‹fìиµÖÚ0õ«_}ýë_ïÙ<âˆ#úícŸ}Úu׃žüäù¯úwØáõÛnûÒG?úùo¼¥$³þÓœ# h )åí·ßþ‹_üâ­o}ë+^ñŠG?úÑyÈCöÚk¯~ðƒçw^¤”k½æšIæûo¿óÀî¸ñÆÏÜd“ç,Yò·K–¼à^ö]²ä°%KN^²ä’%KîÜb‹¹í·Ÿ{ö³Ë¾¸«¦tÞys»í6ú¦›Î-YR÷Ï{̽õ­sûXÁ¿ÑÇW.ñBñÜsç^ý꺣,Ìçÿx~¬x¿}Ñk¿ŸýlîýïŸ{Ãæþð‚ÿèævØanÙ²²×*æ±ÇÎI¾Ývs~pÝ7ß|îÀçÞõ®ùY®ÿ¸óÎùd%Üu׺-`Æ)qbœ^„Ó‹IÆTc —šü—@Š –ÒG¼‹D!¢“GYó³Qè(w=J_ÿqkÅ ·ÙšW«ó÷¸™ã–Ž;*RóÿJcÅö‰MT3¶glÒØª±aKñb,šCœ¢Î¢ªc¶ÝvîÍožŸjý7<Ä/uã{ß‚e«­ ÆŠãø+Î+ÔO9bnQî˜g̶þÒÂ!n­ui˜qc×o˜Qåªa~õ« 3a6Øãq'ÇoÐ0c—6ÌG>r~7h˜±Ç«†W¨ß0cW ³tW ³ÁÿØãqzý=;4fìñ 3öxƒ†{¼AÃŒ]S5Ìú{<–ßmW5ÌÒ=;4:Cìñ¸±ëïñªaÆMTW 3öxƒ†§4h˜1½ 3(ª†YiÕ‘UÃŒBD9ê?ª†EoÐ0ã‹Û¬ô7sÜÒ¥ 36NlŸÒ†›4¶jã†Yú¢(ZPõ¢¨þ+ÌhtUà –¢4,Ø«EÑlKf”;æYÚ0ãÖŠ'‘vfìñ¨uƒEq_­Ë‹¢xÐàEQ¼ä(m˜±ÇãåMiÃŒã4̘[ŒUÚ0ÇóUdQÃŒ]S}YÔ0¾ŠœÜ0ã·Ÿzê©ÇüòåË_ðÛÇ“žô‚­¶zÁ[¼àAŠ/ü#ÃÜc£vÝ`ƒM%™¥O=Ž'@ H þmåk_ûÚ§>õ©ç<ç9O{ÚÓžþô§Çw—¿ímoûÖ·¾µråÊÕ«W¯õjk&™÷¿ÿwÝõ¥{íõ¯ûìsô|lÙ²ïõç¤e˾´lÙÅË–]µlÙݯxÅÜ›Þ4÷îw—=½VSŠÒñ¯~qúË_>ÿ¥PÍ?ñ¼ñ¯~ßøFÁÛTâ©ñ oÔ?ñĺ£,L&^‰ÅXñ¤P#þ¿Òñí*§Ÿ>÷ñÏ¿X¸ÔZÿòº×Í¿ˆžü}ÿw˜5þßøó–·ÌtÐÜË^VwÄåËçÇŠo¨‰ï³¨ÿˆ*~ N¼u$j·Ö¥â”81N/ÂŒéÅ$cª1átÁÅþ7‚"@â[xJcE!¢‹]ÿÞBG¹£èQúúpˆ[+n°¸Íî}Íɉ›9n鸱£"5ñή+¶Ol¢ú˜±=c“FíbÖ>â•m4‡8=Åäå¬ùÙÿõ¿æþ÷ÿžŸjýïJ‹=ß’?Ù)X^ùÊ‚±bÜ8>ÆŠsã ß½þÿ[}Ì-ÊóŒÙ®9ùɇ¸µÖ¥aÆ]¿aF•«†_Fõk>⎪fƒ=wrìñ 3öxiÃ|íkç÷xìÖÒ†ÇGgˆsã õfìñ+æYºÇ«†Ù`‡ìñ8½þGÃŒ=S­¿Ç«†ÃÅóHé#öxŒUÚ0c×T ³þ‰Å­fé]!öxÜØõ÷xÕ0cG3y_¯ùÙªaÆoÐ0ã” 3¦× aEÕ0ל|¿W 3 å¨ÿ¨f½AÃŒ¬(À©f7sÜÒ¥ 3ÆŠíSÚ0c“ÆVmÜ0K_E ª^Õ…{¼j˜Ñú4Ì`iÐ0£Ü fÜZñ$ÒNÃŒ=µnð¢(î«(wƒ=^½(ІÙàEQ¼ä(m˜±ÇãåMiÃŒã4̘[ŒUÚ0Ûÿ*2fT<¦ZÿEÑT¾Š,j˜ _E5Ì…¯"'7Ì[n¹åÒK/7;}æ3Ÿ9ñ·w¼ãÄW¿úÄW¼âÄûg%ßαf’¹É&KŽ8âØÓN;ï‚ V]yåêèö“ÿÄ«”h¶ñŒPúÒ(8â =Þ§ÇE&²ægc¬xáQúú!žAây!þ•jÍKÕù{L/ÆŠ©=åÅz¼¬áâŸÚëŒRÇ‹Ì_ýªl¬êÆŠIƹ1ÛúÃ{Œ˜E¯3«ÂÅ ï¨]ý±ª#ã”8±3¦“Œ©Ý'A ñ[)KQè+Î-­]”;Š^ô:3Æ ¨]Qá*Ì.dŠ^EŒ˜±‰êcÆ‘1½¨]Lµôm!ÆŠÓë«‹ãã ™˜j馋KÑX1\cŹ¥µ‹rÇ<‹jcÅ­ÕZÌ᪆YàD•«†Ù`‡Fƒ=òq[¶Ö0㾊ÎÐ`W ³ô>‰[+LŠî“…†{¼tß5n˜QîØ¥Øã fhT ³hÇX¡“,ÝãáÃŹ fìñØDUEêü7æ«‹SJ òqJœ§-0NiÐ0ƒ"† –:‹Zó˜˜[Õ0‹^õE¡«EE!ÆŠ}7XÑXÕ=“Œ[º3†«öxiÃ ÉØw-7̘jé«”À,úµì•dÔ®Á¹Åݽã 3jÝþ‹¢(DÑÛ8öxì vfÌ­AÃŒ¹Å¦kÜ0ìñØw¥{àšG6«’,]ZÒ`¸8¥:wÍi×ù{5Ïf#Ö¹~:¦Ù}Ò ÌðoŒYzŸTªÍªVM2Õe­ÿÛøÎŒáîÌÛn»ã¢‹.þìgWì°ƒ$³YõœE€À¢ñ+~â÷ûÄ2ãݘc>÷¹Ïßò³ýöÛ¿÷½ïwñËø'™ÂGJ2=öØøé«V­*ŠC Çt8 @€ Ð  ,[¶L,Љ˜AD‡9å”S"·|Þóž·ÕV[=ö±}ÙË^vÈ!‡üä'?¹á†Ä©eI2q›X @€¨%bIf-5 °6x7füƱ«®ºêÈ#|Ík^³ë®»Æ÷•o³Í6c}ôÑññø¾ò{?¢#M¾pjY’ÌÉ\>K€ @€†$bIæŠk-f(póÍ7ÿ×ýWĘK—.­2̧<å)/~ñ‹?ÿùÏŸuÖYßùÎwο¯Çe—]69ÌL-K’9Ú @€´,bIfËþ†#0To¼ñ„NxË[Þò¨G=ê~÷»_üw·ÝvÛo¿ýN=õÔ3Î8ãôE‘pþ:~sêâÔ²$™‹Sù  @€š@Š$™C+°õ˜‘ÀÕW_ýæ7¿ùÙÏ~ö[l±Ál¼ñÆyÈCþð‡?þñwiîp_øø¿¾g”SË’dN°ò) @€ 00 H2V_Ë!0+øI˜ÿüÏÿ¼ûî»?âˆï.Çï­íÇì¹çžW\qÅ„9§–%Éœ`åS @€ @``)d¬¾–C`Vñë~âGb~øÃ>üðÃýÍ#¾Ó|ò#Ž:î¸ãâwšO˜sjY’Ì V>E€ @€&bIæÀêk9&Z–$s`õµ @€ 0A Å’Ì V>E€ÀÌRË’dμ"&@€ @€ZH±€$³5y Ð@ µ,IfC§ @€ @€ž ¤X@’ÙÓ:š6‘¤–%ÉIÝ-“ @€„@Š$™î º,Z–$³ËÅ27 @€ 0] H2§ËëjLW µ,Iæty] @€tY Å’Ì.ËÜH-K’é– @€ @€ãH±€$s<¥·R}H-K’ÙÇ"š3 @€h&bIf3Fg ÐŽ@jY’ÌvØB€ @€º bIfŠb,&Z–$s1('@€ @€ÃH±€$sx%¶"CH-K’9¤âZ  @€˜,bIæd.Ÿ%@`¶©eI2g[£ @€ @€6R, ÉlßX” ¤–%É,t< @€è¯@Š$™ý-¥™ƒ@jY’Ì1Ý  @€ @€@%bI¦ƒ. ¤–%Éìr±Ì @€LW Å’ÌéòºÓH-K’9]^W#@€ @€]H±€$³ËÅ27RË’dº% @€ @€ÀxR, ÉOé­”@RË’dö±ˆæL€ @€š ¤X@’ÙŒÑY´#Z–$³v£ @€ @€.¤X@’Ù…¢˜‹ ¤–%É\ ÊÇ  @€ @€ÀðR, É^‰­ˆÀRË’d©¸ÖB€ @€& ¤X@’9™Ëg ˜­@jY’ÌÙ–Ãè @€ @ M H2ÛÄ7¥©eI2KO€ @€ú+bIfKiæÆ Z–$s E·F @€ P ¤X@’éÆ @ Ë©eI2»\,s#@€ @€ÓH±€$sº¼®F€ÀtRË’dN—×Õ @€ @€@—R, Éìr±ÌÔ²$™n  @€ 0 H2ÇSz+%ÐGÔ²$™},¢9 @€ @€f)d6ctí¤–%Él‡Ý( @€ @  )dv¡(æ@€Àb©eI2ƒòq @€ 0< H2‡Wb+"0$Ô²$™C*®µ @€ @€É)dNæòYf+Z–$s¶å0: @€hS Å’Ì6ñE€@©@jY’ÌR@Ç @€ @€þ ¤X@’ÙßRš91¤–%ÉCÑ­‘ @€T)dº1è²@jY’Ì.ËÜ @€ @€ÀtR, Éœ.¯« 0]Ô²$™Óåu5 @€ Ðe H2»\,s#@ µ,I¦[‚ @€ŒG Å’Ìñ”ÞJ ôQ µ,If‹hÎ @€ @ ™@Š$™ÍE€@;©eI2Ûa7  @€è‚@Š$™](Š9 °˜@jY’ÌÅ |œ @€ O Å’Ìá•ØŠ I µ,IæŠk- @€ @`²@Š$™“¹|–Ù ¤–%Éœm9ŒN€ @€ÚH±€$³M|c P*Z–$³Ðñ @€ @ ¿)dö·”fN` ©eI2ÇPtk$@€ @€•@Š$™n º,Z–$³ËÅ27 @€ 0] H2§ËëjLW µ,Iæty] @€tY Å’Ì.ËÜH-K’é– @€ @€ãH±€$s<¥·R}H-K’ÙÇ"š3 @€h&bIf3Fg ÐŽ@jY’ÌvØB€ @€º bIfŠb,&Z–$s1('@€ @€ÃH±€$sx%¶"CH-K’9¤âZ  @€˜,bIæd.Ÿ%@`¶©eI2g[£ @€ @€6R, ÉlßX” ¤–%É,t< @€è¯@Š$™ý-¥™ƒ@jY’Ì1Ý  @€ @€@%bI¦ƒ. ¤–%Éìr±Ì @€LW Å’ÌéòºÓH-K’9]^W#@€ @€]H±€$³ËÅ27RË’dº% @€ @€ÀxR, ÉOé­”@RË’dö±ˆæL€ @€š ¤X@’ÙŒÑY´#Z–$³v£ @€ @€.¤X@’Ù…¢˜‹ ¤–%É\ ÊÇ  @€ @€ÀðR, É^‰­ˆÀRË’d©¸ÖB€ @€& ¤X@’9™Ëg ˜­@jY’ÌÙ–Ãè @€ @ M H2ÛÄ7¥©eI2KO€ @€ú+bIfKiæÆ Z–$s E·F @€ P ¤X@’éÆ @ Ë©eI2»\,s#@€ @€ÓH±€$sº¼®F€ÀtRË’dN—×Õ @€ @€@—R, Éìr±ÌÔ²$™n  @€ 0 H2ÇSz+%ÐGÔ²$™},¢9 @€ @€f)d6ctí¤–%Él‡Ý( @€ @  )dv¡(æ@€Àb©eI2ƒòq @€ 0< H2‡Wb+"0$Ô²$™C*®µ @€ @€É)dNæòYf+Z–$s¶å0: @€hS Å’Ì6ñE€@©@jY’ÌR@Ç @€ @€þ ¤X@’ÙßRš91¤–%ÉCÑ­‘ @€T)dº1è²@jY’Ì.ËÜ @€ @€ÀtR, Éœ.¯« 0]Ô²$™Óåu5 @€ Ðe H2»\,s#@ µ,I¦[‚ @€ŒG Å’Ìñ”ÞJ ôQ µ,If‹hÎ @€ @ ™@Š$™ÍE€@;©eI2Ûa7  @€è‚@Š$™](Š9 °˜@jY’ÌÅ |œ @€ O Å’Ìá•ØŠ I µ,IæŠk- @€ @`²@Š$™“¹|–Ù ¤–%Éœm9ŒN€ @€ÚH±€$³M|c P*Z–$³Ðñ @€ @ ¿)dö·”fN` ©eI2ÇPtk$@€ @€•@Š$™n º,Z–$³ËÅ27 @€ 0] H2§ËëjLW µ,Iæty] @€tY Å’Ì.ËÜH-K’é– @€ @€ãH±€$s<¥·R}H-K’ÙÇ"š3 @€h&bIf3Fg ÐŽ@jY’ÌvØB€ @€º bIfŠb,&Z–$s1('@€ @€ÃH±€$sx%¶"CH-K’9¤âZ  @€˜,bIæd.Ÿ%@`¶©eI2g[£ @€ @€6R, ÉlßX” ¤–%É,t< @€è¯@Š$™ý-¥™ƒ@jY’Ì1Ý  @€ @€@%bI¦ƒ. ¤–%Éìr±Ì @€LW Å’ÌéòºÓH-K’9]^W#@€ @€]H±€$³ËÅ27RË’dº% @€ @€ÀxR, ÉOé­”@RË’dö±ˆæL€ @€š ¤X@’ÙŒÑY´#Z–$³v£ @€ @€.¤X@’Ù…¢˜‹ ¤–%É\ ÊÇ  @€ @€ÀðR, É^‰­ˆÀRË’d©¸ÖB€ @€& ¤X@’9™Ëg ˜­@jY’ÌÙ–Ãè @€ @ M H2ÛÄ7¥©eI2KO€ @€ú+bIfKiæÆ Z–$s E·F @€ P ¤X@’éÆ @ Ë©eI2»\,s#@€ @€ÓH±€$sº¼®F€ÀtRË’dN—×Õ @€ @€@—R, Éìr±ÌÔ²$™n  @€ 0 H2ÇSz+%ÐGÔ²$™},¢9 @€ @€f)d6ctí¤–%Él‡Ý( @€ @  )dv¡(æ@€Àb©eI2ƒòq @€ 0< H2‡Wb+"0$Ô²$™C*®µ @€ @€É)dNæòYf+Z–$s¶å0: @€hS Å’Ì6ñE€@©@jY’ÌR@Ç @€ @€þ ¤X@’ÙßRš91¤–%ÉCÑ­‘ @€T)dº1è²@jY’Ì.ËÜ @€ @€ÀtR, Éœ.¯« 0]Ô²$™Óåu5 @€ Ðe H2»\,s#@ µ,I¦[‚ @€ŒG Å’Ìñ”ÞJ ôQ µ,If‹hÎ @€ @ ™@Š$™ÍE€@;©eI2Ûa7  @€è‚@Š$™](Š9 °˜@jY’ÌÅ |œ @€ O Å’Ìá•ØŠ I µ,IæŠk- @€ @`²@Š$™“¹|–Ù ¤–%Éœm9ŒN€ @€ÚH±€$³M|c P*Z–$³Ðñ @€ @ ¿)dö·”fN` ©eI2ÇPtk$@€ @€•@Š$™n º,Z–$³ËÅ27 @€ 0] H2§ËëjLW µ,Iæty] @€tY Å’Ì.ËÜH-K’é– @€ @€ãH±€$s<¥·R}H-K’ÙÇ"š3 @€h&bIf3Fg ÐŽ@jY’ÌvØB€ @€º bIfŠb,&Z–$s1('@€ @€ÃH±€$sx%¶"CH-K’9¤âZ  @€˜,bIæd.Ÿ%@`¶©eI2g[£ @€ @€6R, ÉlßX” ¤–%É,t< @€è¯@Š$™ý-¥™ƒ@jY’Ì1Ý  @€ @€@%bI¦ƒ. ¤–%Éìr±Ì @€LW Å’ÌéòºÓH-K’9]^W#@€ @€]H±€$³ËÅ27RË’dº% @€ @€ÀxR, ÉOé­”@RË’dö±ˆæL€ @€š ¤X@’ÙŒÑY´#Z–$³v£ @€ @€.¤X@’Ù…¢˜‹ ¤–%É\ ÊÇ  @€ @€ÀðR, É^‰­ˆÀRË’d©¸ÖB€ @€& ¤X@’9™Ëg ˜­@jY’ÌÙ–Ãè @€ @ M H2ÛÄ7¥©eI2KO€ @€ú+bIfKiæÆ Z–$s E·F @€ P ¤X@’éÆ @ Ë©eI2»\,s#@€ @€ÓH±€$sº¼®F€ÀtRË’dN—×Õ @€ @€@—R, Éìr±ÌÔ²$™n  @€ 0 H2ÇSz+%ÐGÔ²$™},¢9 @€ @€f)d6ctí¤–%Él‡Ý( @€ @  )dv¡(æ@€Àb©eI2ƒòq @€ 0< H2‡Wb+"0$Ô²$™C*®µ @€ @€É)dNæòYf+Z–$s¶å0: @€hS Å’Ì6ñE€@©@jY’ÌR@Ç @€ @€þ ¤X@’ÙßRš91¤–%ÉCÑ­‘ @€T)dº1è²@jY’Ì.ËÜ @€ @€ÀtR, Éœ.¯« 0]Ô²$™Óåu5 @€ Ðe H2»\,s#@ µ,I¦[‚ @€ŒG Å’Ìñ”ÞJ ôQ µ,If‹hÎ @€ @ ™@Š$™ÍE€@;©eI2Ûa7  @€è‚@Š$™](Š9 °˜@jY’ÌÅ |œ @€ O Å’Ìá•ØŠ I µ,IæŠk- @€ @`²@Š$™“¹|–Ù ¤–%Éœm9ŒN€ @€ÚH±€$³M|c P*Z–$³Ðñ @€ @ ¿)dö·”fN` ©eI2ÇPtk$@€ @€•@Š$™n º,Z–$³ËÅ27 @€ 0] H2§ËëjLW µ,Iæty] @€tY Å’Ì.ËÜH-K’é– @€ @€ãH±€$s<¥·R}H-K’ÙÇ"š3 @€h&bIf3Fg ÐŽ@jY’ÌvØB€ @€º bIfŠb,&Z–$s1('@€ @€ÃH±€$sx%¶"CH-K’9¤âZ  @€˜,bIæd.Ÿ%@`¶©eI2g[£ @€ @€6R, ÉlßX” ¤–%É,t< @€è¯@Š$™ý-¥™ƒ@jY’Ì1Ý  @€ @€@%bI¦ƒ. ¤–%Éìr±Ì @€LW Å’ÌéòºÓH-K’9]^W#@€ @€]H±€$³ËÅ27RË’dº% @€ @€ÀxR, ÉOé­”@RË’dö±ˆæL€ @€š ¤X@’ÙŒÑY´#Z–$³v£ @€ @€.¤X@’Ù…¢˜‹ ¤–%É\ ÊÇ  @€ @€ÀðR, É^‰­ˆÀRË’d©¸ÖB€ @€& ¤X@’9™Ëg ˜­@jY’ÌÙ–Ãè @€ @ M H2ÛÄ7¥©eI2KO€ @€ú+bIfKiæÆ Z–$s E·F @€ P ¤X@’éÆ @ Ë©eI2»\,s#@€ @€ÓH±€$sº¼®F€ÀwÞ}æ²Ë.;óÌ3W¬XñÑ~ô#ùÈ;ßùÎÃ?ü°Ãû—ù—ãŽ;îË_þòO~ò“»îºk­\©eI2×*æ @€ 0 H2SY !ÐÛn»íæ›oŽ óàƒ~ÙË^¶ûî»?õ©OýýßÿýÍ6Ûlà 7Üh£žö´§½å-o‰0óöÛo_ëœSË’d®UÌ @€ @`0)d¦²B  ÷ÜsÏM7Ýtýõןp ûï¿ÿßüÍßüå_þån»í¶ÝvÛ=æ1Ùd“M$™](“9 @€ @€^H2{Q&“$ÐSH2ùË_þìg?{Ó›Þô¨G=ê‘|äSžò”g<ãûì³ÏßýÝßmµÕV‘dF°y衇žuÖYÞ“ÙÓ*›6 @€hG@’ÙŽ³QŒS ’Ì«¯¾úÊ+¯|ûÛß¾óÎ;?ñ‰OÜ{ï½ÿþïÿþ5¯yÍ+_ùÊ­·ÞZ’9Îê  @€ @€@If4§ P_`õêÕñ«|~õ«_Ež¹råÊx‹æªU«~üãŸþùlJ2ëK:’ @€Œ\@’9òÀò ´/p÷ÝwÇOμüòËwÙeIfûþF$@€ @€=dö´p¦M ¿’ÌþÖÎÌ  @€ @€À $™3Ä74q D’yÝu×Å7˜?ùÉOöžÌqÞVM€ @€H2 9…ud®‹žs  @€ @€Àh$™£-½…˜•€$sVòÆ%@€ @€½döº|&O ’Ì>VÍœ  @€ @€ÀÌ$™3/ ›€$sl·^ @€ 0IæT]„úÓJ27ÞxãC9䤓N:óÌ3/¼ð‹ïõøÞ÷¾wùå—_uÕU·ÜrË=÷ÜS†Ž$@€ @€Ú¸óÎ;¯¹æšU«Výà?¸×Wùó8ÿüó?ùÉOuÔQÛn»í’%K–-[vÞyçÅñ«W¯n¶F$@` ÓJ2çw~gÇw|æ3Ÿùœç<çoÿöo_p¯Ç¾ûî{Øa‡|òÉ—\rI4Ã1ØZ# @€è¯ÀÕW_}ê©§üñË—/¿×WùóxþóŸ¿Ç{ìºë®›nº©$³¿…6s=˜b’¹Ë.»DŒù¾ð%/yÉ~÷zxàGqÄg>ó™K/½ô®»îê‘© @€ @€ \{íµ_üâÿó?ÿó oxý¾ÊŸÿÀ?üÃ?ìµ×^ñ¦¦Í6ÛL’9Â;Ä’ ´/0­$s“M6y×»Þuúé§÷»ßw’Çw‘§GüSÎõ×_ßZ?F£ýe‘ @€(ˆÄàÖ[o½ùæ›#ÒL_ãWÿ{å•W~å+_ùØÇ>ö¸Ç=N’Ydë`š L+ÉŒ–uì±Çúͪà, @€ Ð;¿ñ§w%3a}dö½‚æO€ @€f" Éœ »A ŒY@’9æê[; @€h, ÉlLçDš H2›¹9‹ @€Œ\@’9òÀò ´/ Élß܈ @€ @`’ÌÑt_àºë®ûñ|Ùe—]rÉ%_|ñ7¿ùÍ/|á ;ì°Ãð€vÚiùòåÇwÜù矟GvÛm·Ýu×]÷ÜsOZZjY~ãOòñ¿ @€ @`À)X¶l™_<àr[Y DŒyæ™gžvÚiŸþô§?ùÉOžp ÇsÌ6Ûl³á†þÙŸýÙ _øÂý×ýÄ'>ŸGvýõ×G˜ïÞLN-K’™|ü/ @€°@Š$™®µ¥˜¡À9çœó|à]ïz×a‡vÈ!‡tÐA¯zÕ«¶Þzëûßÿþ|ä#wÛm·—¼ä%|ð¡¿y¼ûÝï¾òÊ+o¼ñÆÕ«W§9§–%ÉL>þ— @€ X Å’Ì×ÚÒÌP ޹뮻n·Ýv[n¹å[l±ùæ›o¶Ùfñ­ål°Aüw“M6ÙtÓMúЇƧö°‡=þñ?÷ÜsW®\yûí·§9§–%ÉL>þ— @€ X Å’Ì×ÚÒÌPàCúгžõ¬wÜ1ÞùG¿}Äß×üßêÃñ‘wÞù;ßùÎÏþóhPiΩeI2“ÿ%@€ @€H±€$sÀµ¶43¸é¦›"™ŒïÿiG­éÞßZóO-K’9Úš @€´,bIfËþ†#@ H µ,If‘žƒ  @€ @€@¯R, Éìu5MžÀàRË’d¾âH€ @€R, É\ñ:(Z–$³ƒ52% @€ °žR, É\OÎ.K€ÀTRË’dNEÕE @€ @€@/R, ÉìEÕL’ÀhRË’dŽöN°p @€¡@Š$™#¼,™@RË’dö¨v¦J€ @€ÖQ Å’Ìuôt:ëU µ,IæzÕvq @€ Ð) H2;U“!@ ¤–%ÉL>þ— @€ X Å’Ì×ÚÒ @ µ,Iæjj  @€ @ ¦@Š$™5ÝF€ÀLRË’dΤ %@€ @€3H±€$s&U0(5RË’dÖts @€€@Š$™¨©%°@jY’Ì×ÚÒ @€ @€@H±€$3ùø_:%Z–$³SÕ1 @€ °^R, É\¯Ú.N€À: ¤–%É\GO§ @€ @€ ¤X@’Ù£Ú™* ¤–%Éá=`É @€ 0Z H2G{'X8^¤–%ÉìEÕL’ @€LE Å’Ì©¨ºëI µ,IæzrvY @€ ÐA H2;X#S"@`A µ,I悌¿ @€ @€Á ¤X@’9øŠ[ ^ ¤–%Éìu5Mž @€ ¤X@’Y¤ç`ZH-K’Ù²¿á @€ @€À R, Éœa- M€ÀZRË’d®UÌ @€ @`0)d¦²B`©eI2Ye‹"@€ @€÷)bIæ}*ù H-K’Ù‘º˜ @€hA Å’ÌÌ A€@cÔ²$™%H€ @€z'bIfï*hÂF%Z–$sTÕ·X @€¹@Š$™#¿,Ÿ@ÇRË’dv¼^¦G€ @€¦(bIæm]Š© ¤–%Éœº°  @€ @€Î ¤X@’ÙÙJ™!Z–$Ó]A€ @€Æ#bIæxJo¥ú(Z–$³E4g @€ ÐL Å’ÌfŒÎ"@ Ô²$™í°… @€tA Å’Ì.ÅXL µ,IæbP>N€ @€†'bIæðJlE†$Z–$sHŵ @€ 0Y Å’ÌÉ\>K€ÀlRË’dζF'@€ @€m ¤X@’Ù&¾±(H-K’Y èx @€ Ð_ H2û[J3'0Ô²$™c(º5 @€ @€J Å’L7]H-K’Ùåb™ @€˜®@Š$™Óåu5¦+Z–$sº¼®F€ @€º,bIf—‹en¤–%ÉtK @€ @€ñ¤X@’9žÒ[)> ¤–%ÉìcÍ™ @€4H±€$³£³hG µ,If;ìF!@€ @€]H±€$³ E1H-K’¹” @€ @€á ¤X@’9¼[! ¤–%ÉRq­… @€LH±€$s2—Ï 0[Ô²$™³-‡Ñ  @€ @€@›)d¶‰o,JRË’d–:ž @€ôW Å’Ìþ–ÒÌ ŒA µ,IæŠn @€ @ H±€$ÓA€@—RË’dv¹XæF€ @€¦+bIæty]é ¤–%Éœ.¯« @€ @€. ¤X@’Ùåb™©eI2Ý @€ @`<)dާôVJ ©eI2ûXDs&@€ @€ÍR, ÉlÆè,ÚH-K’Ù»Q @€ @€@R, ÉìBQÌÅRË’d.åã @€ @`x)d¯ÄVD`H©eI2‡T\k!@€ @€“R, ÉœÌå³ÌV µ,IælËat @€ Ц@Š$™mâ‹RÔ²$™¥€Ž'@€ @€ýH±€$³¿¥4scH-K’9†¢[# @€¨R, Étc ÐeÔ²$™].–¹ @€ @€é ¤X@’9]^W#@`º©eI2§Ëëj @€ @ Ë)dv¹XæF€@jY’L· @€@Š$™ã)½•è£@jY’Ì>Ñœ  @€ @€@3 H2›1:‹vRË’d¶Ãn @àÿeï> ¥ªÎþñ ‘ Ø h@@ÄŽØÁÞŠ”Xcì1¯Æ[b4Ö$–¼¶Ø&1Ö VTÔØbÔÄ‚°‹ò*òûïܻºÿ-÷ʽ 3gÎ|f¹²®sgÎÙûóž¿ìs6 @ I, ÉÌBQŒ–’–%Él Êû @€ @ I, ÉÌ_‰Íˆ@ž’–%ÉÌSqÍ… @€´.Ä’ÌÖ¹ü–ê $-K’YÝr8; @€¨¤@ H2+‰ï\´U iY’̶ú< @€¨]$dÖn)œ@=$-K’YE7G @€ Ð$Ä’LYHZ–$3ËÅ26 @€ P^$d–—×Ñ(¯@Ò²$™ååu4 @€ e$df¹XÆF€@Ò²$™.  @€ P?I, ɬŸÒ›)ZHZ–$³‹hÌ @€ @ }I, Él£o P¤eI2+Ãî, @€ @ I, ÉÌBQŒ–’–%Él Êû @€ @ I, ÉÌ_‰Íˆ@ž’–%ÉÌSqÍ… @€´.Ä’ÌÖ¹ü–ê $-K’YÝr8; @€¨¤@ H2+‰ï\´U iY’̶ú< @€¨]$dÖn)œ@=$-K’YE7G @€ Ð$Ä’LYHZ–$3ËÅ26 @€ P^$d–—×Ñ(¯@Ò²$™ååu4 @€ e$df¹XÆF€@Ò²$™.  @€ P?I, ɬŸÒ›)ZHZ–$³‹hÌ @€ @ }I, Él£o P¤eI2+Ãî, @€ @ I, ÉÌBQŒ–’–%Él Êû @€ @ I, ÉÌ_‰Íˆ@ž’–%ÉÌSqÍ… @€´.Ä’ÌÖ¹ü–ê $-K’YÝr8; @€¨¤@ H2+‰ï\´U iY’̶ú< @€¨]$dÖn)œ@=$-K’YE7G @€ Ð$Ä’LYHZ–$3ËÅ26 @€ P^$d–—×Ñ(¯@Ò²$™ååu4 @€ e$df¹XÆF€@Ò²$™.  @€ P?I, ɬŸÒ›)ZHZ–$³‹hÌ @€ @ }I, Él£o P¤eI2+Ãî, @€ @ I, ÉÌBQŒ–’–%Él Êû @€ @ I, ÉÌ_‰Íˆ@ž’–%ÉÌSqÍ… @€´.Ä’ÌÖ¹ü–ê $-K’YÝr8; @€¨¤@ H2+‰ï\´U iY’̶ú< @€¨]$dÖn)œ@=$-K’YE7G @€ Ð$Ä’LYHZ–$3ËÅ26 @€ P^$d–—×Ñ(¯@Ò²$™ååu4 @€ e$df¹XÆF€@Ò²$™.  @€ P?I, ɬŸÒ›)ZHZ–$³‹hÌ @€ @ }I, Él£o P¤eI2+Ãî, @€ @ I, ÉÌBQŒ–’–%Él Êû @€ @ I, ÉÌ_‰Íˆ@ž’–%ÉÌSqÍ… @€´.Ä’ÌÖ¹ü–ê $-K’YÝr8; @€¨¤@ H2+‰ï\´U iY’̶ú< @€¨]$dÖn)œ@=$-K’YE7G @€ Ð$Ä’LYHZ–$3ËÅ26 @€ P^$d–—×Ñ(¯@Ò²$™ååu4 @€ e$df¹XÆF€@Ò²$™.  @€ P?I, ɬŸÒ›)ZHZ–$³‹hÌ @€ @ }I, Él£o P¤eI2+Ãî, @€ @ I, ÉÌBQŒ–’–%Él Êû @€ @ I, ÉÌ_‰Íˆ@ž’–%ÉÌSqÍ… @€´.Ä’ÌÖ¹ü–ê $-K’YÝr8; @€¨¤@ H2+‰ï\´U iY’̶ú< @€¨]$dÖn)œ@=$-K’YE7G @€ Ð$Ä’LYHZ–$3ËÅ26 @€ P^$d–—×Ñ(¯@Ò²$™ååu4 @€ e$df¹XÆF€@Ò²$™.  @€ P?I, ɬŸÒ›)ZHZ–$³‹hÌ @€ @ }I, Él£o P¤eI2+Ãî, @€ @ I, ÉÌBQŒ–’–%Él Êû @€ @ I, ÉÌ_‰Íˆ@ž’–%ÉÌSqÍ… @€´.Ä’ÌÖ¹ü–ê $-K’YÝr8; @€¨¤@ H2+‰ï\´U iY’̶ú< @€¨]$dÖn)œ@=$-K’YE7G @€ Ð$Ä’LYHZ–$3ËÅ26 @€ P^$d–—×Ñ(¯@Ò²$™ååu4 @€ e$df¹XÆF€@Ò²$™.  @€ P?I, ɬŸÒ›)ZHZ–$³‹hÌ @€ @ }I, Él£o P¤eI2+Ãî, @€ @ I, ÉÌBQŒ–’–%Él Êû @€ @ I, ÉÌ_‰Íˆ@ž’–%ÉÌSqÍ… @€´.Ä’ÌÖ¹ü–ê $-K’YÝr8; @€¨¤@ H2+‰ï\´U iY’̶ú< @€¨]$dÖn)œ@=$-K’YE7G @€ Ð$Ä’LYHZ–$3ËÅ26 @€ P^$d–—×Ñ(¯@Ò²$™ååu4 @€ e$df¹XÆF€@Ò²$™.  @€ P?I, ɬŸÒ›)ZHZ–$³‹hÌ @€ @ }I, Él£o P¤eI2+Ãî, @€ @ I, ÉÌBQŒ–’–%Él Êû @€ @ I, ÉÌ_‰Íˆ@ž’–%ÉÌSqÍ… @€´.Ä’ÌÖ¹ü–ê $-K’YÝr8; @€¨¤@ H2+‰ï\´U iY’̶ú< @€¨]$dÖn)œ@=$-K’YE7G @€ Ð$Ä’LYHZ–$3ËÅ26 @€ P^$d–—×Ñ(¯@Ò²$™ååu4 @€ e$df¹XÆF€@Ò²$™.  @€ P?I, ɬŸÒ›)ZHZ–$³‹hÌ @€ @ }I, Él£o P¤eI2+Ãî, @€ @ I, ÉÌBQŒ–’–%Él Êû @€ @ I, ÉÌ_‰Íˆ@ž’–%ÉÌSqÍ… @€´.Ä’ÌÖ¹ü–ê $-K’YÝr8; @€¨¤@ H2+‰ï\´U iY’̶ú< @€¨]$dÖn)œ@=$-K’YE7G @€ Ð$Ä’LYHZ–$3ËÅ26 @€ P^$d–—×Ñ(¯@Ò²$™ååu4 @€ e$df¹XÆF€@Ò²$™.  @€ P?I, ɬŸÒ›)ZHZ–$³‹hÌ @€ @ }I, Él£o P¤eI2+Ãî, @€ @ I, ÉÌBQŒ–’–%Él Êû @€ @ I, ÉÌ_‰Íˆ@ž’–%ÉÌSqÍ… @€´.Ä’ÌÖ¹ü–ê $-K’YÝr8; @€¨¤@ H2+‰ï\´U iY’̶ú< @€¨]$dÖn)œ@=$-K’YE7G @€ Ð$Ä’LYHZ–$3ËÅ26 @€ P^$d–—×Ñ(¯@Ò²$™ååu4 @€ e$df¹XÆF€@Ò²$™.  @€ P?I, ɬŸÒ›)ZHZ–$³‹hÌ @€ @ }I, Él£o P¤eI2+Ãî, @€ @ I, ÉÌBQŒ–’–%Él Êû @€ @ I, ÉÌ_‰Íˆ@ž’–%ÉÌSqÍ… @€´.Ä’ÌÖ¹ü–ê $-K’YÝr8; @€¨¤@ H2+‰ï\´U iY’̶ú< @€¨]$dÖn)œ@=$-K’YE7G @€ Ð$Ä’LYHZ–$3ËÅ26 @€ P^$d–—×Ñ(¯@Ò²$™ååu4 @€ e$df¹XÆF€@Ò²$™.  @€ P?I, ɬŸÒ›)ZHZ–$³‹hÌ @€ @ }I, Él£o P¤eI2+Ãî, @€ @ I, ÉÌBQŒ–’–%Él Êû @€ @ I, ÉÌ_‰Íˆ@ž’–%ÉÌSqÍ… @€´.Ä’ÌÖ¹ü–ê $-K’YÝr8; @€¨¤@ H2+‰ï\´U iY’̶ú< @€¨]$dÖn)œ@6f5¾¦OŸþÁL™2åÍÆ×ë¯É“'¿óÎ;ñýøÛ/¿ürnÆŸ´,IæÜ ù  @€ȇ@ H2óQV³ 3f|þùç&LøÍo~sòÉ'=zûí·ß´ñµÇ{pÀçœsÎ_ÿú××^{í«¯¾úÖa'-K’ù­b>@€ @€r#Ä’ÌÜTÖDdA ®Ç|ÿý÷ß}÷Ýë®»î°ÃÛu×]WXa…e–YfÑÆ× AƒÖ^{íf^vÙeO<ñÄgŸ}ö­afÒ²$™Y¨²1 @€ @€Ê$±€$³2ìÎB N¾øâ‹óÎ;ïG?úÑV[m5xðà#Fyä‘ÇwÜÙgŸýË_þr¿ýöÛyç7Úh£•VZéˆ#ŽøÓŸþóÌø•Vp’–%ÉlÅʯ @€ @€@Î’X@’™³úšê Äe–‡~ø¨Q£bVÙ³gÏUW]õÜsÏýÝï~w÷Ýwßu×]Ç{ìØ±cã›…Ba§vºä’Kî¹çžø•VÆœ´,If+V~E€ @€r&Ä’ÌœÕ×tTK Þ'÷ö™4iR|*æòË/¿ÁŒ3æ˜cŽy衇žzê©W_ññ˜ñ®óïÿûýúõ‹+3ãc3O;í´©S§Æ{Ò[vÒ²$™-AyŸ @€äO ‰$™ù+±¨Š@Üåç‘G¹þúë‡ —\Æ»ÈãÃ0ct™ìQW`^qÅ›l²ÉСCûôéWfÆ]Í¿þúë–Æœ´,IfKPÞ'@€ @€ùHbIfþJlFª"#Ê;î¸ã¢‹.Š÷•744Œ7îüã“O>™ìé3}úô›o¾y¯½öŠ[ÿ,±Ä[n¹åsÏ=÷ñÇ·f&-K’Y•â:) @€¨Š@ H2«R'%?¸eyÜÓgüøñýû÷ïÖ­ÛÉ'ŸüÞ{ïņ“Ì4.Ñ|úé§/¿üòvØ¡k×®«­¶Ú-·ÜïIÿæ'›¾˜´,Ifâé_  @€ @€@Ž’X@’™ãZ›J ÄÇ]Ƈ^î¾ûî+¬°Â"‹,rúé§øá‡ß\i“Ì^xᦛn=zt—.]VYe•øäÌG}tÆŒsmÒ²$™sTò& @€È¥@ H2sYe“"PywÞyçàƒ^wÝuW_}õaÆýú׿þôÓO¿9Œ™3g¾ýöÛq Ø|Zh¡ü⿸á†ZÚÁúè /¼p.“ÌóÎ;o„ ¯¼òJü|<þ7__|ñE|g¼‡½òÎH€ @€´I ®wŠÿãÊéÓ§ó¿ñã;|ðÁã?~ã7Æ6âÆÁ’Ì6ñú0- T É\pÁ¿÷½ïýìg?‹ÉgLJÿWÜ<èž{îyöÙgß}÷Ýon6ÔÒȽO€ @€TE f•/¾øâO'3¶¸Ø{uÖ‰7˜ÿîw¿‹±òÍQÅ¥’qeø«¯¾zÈ!‡Äú÷ïüñÇ_vÙeñ–óo~8¾ÓüÖdΑț @€ @ F¬É¬ÑÂ6Zˆ¾<ðÀ×üï+þ}Ê·#oÚ»üù矟½wùi§WQÎñÃѤy’ÿòÅs2ký:1~ @€ 0[Às2gSøJ ÄGSvØan¸a\–w0¿à‚ æ¸Ì2îÅóæ›o>úè£ñ‰— -´ÐÀÏ=÷ܸ’|Ž 8ãø“$ÓÞ啬©s @€ @€ê $±€ª[g'iÓ¦yæ™{íµW¿~ýºwï~ê©§~øá‡ßÜv'>¾ò¹çž»þúëwÞyç.]º 6,n@6qâÄ3fÌ‘"iY’Ì9*y“ @€äR ‰$™¹¬²I¨¼@|úe¼õ;Þ`}oO¿Œ{}þùçÉHb zòÉ'ã½çÛm·]\“ŸÙ{Ûm·Ål3¾Ÿ|²é_“–%Éœ£’7  @€ @€@.’X@’™Ë*›Ê LŸ>ýþûï¿òÊ+\,ÇŒsíµ×>üðÃ_}õUóÁÄ]wÝuq“ñ˜aöîÝ;景¼òJ\ŸŒÑüc³NZ–$s¶Œ @€ @€@î’X@’™ûŠ› Ê|ñÅO<ñÄ-·ÜoïСCÌ*/¼ð¿üå/ñ˜±íÄ<3¾âg¦Nz饗n¼ñÆ«­¶ÚŠ+®¸ûî»ÇÇf¶cÆ‘'-K’Y™j:  @€È‚@ H2³Pc øHÌ?þø7Þ?~üꫯ÷0_k­µFƒyûí·Ç'a>þøã—\rÉ)§œ²Í6ÛôèÑcË-·<î¸ã®¸âŠ>ú¨•é'-K’ÙŠ•_ @€ @€œ $±€$3gõ5Õˆ7{ì±Ûo¿}\r¹ÔRKÅ[ÈþóŸ_tÑEøÃn¾ù棎:j=öˆ!gÜë'®Æ¼üòËï»ï¾ø•VÆœ´,If+V~E€ @€r&Ä’ÌœÕ×tTW v˜¸ƒO¼üCÙd“M6ÝtÓÝvÛ-†–ûì³ÏÞ{—bÆÿ—Ÿþùq¡æk¯½w3oeÌIË’d¶båW @€ @ gI, ÉÌY}M‡@Õâ~åñÙ˜·Þzëüã¸ïOŸ>}]tÑί¸­y\yðÁÇMâ~å­g˜MIZ–$³êõ5 @€ P1$dVLÞ‰Ô‰@܈<†™&LøÍo~sòÉ'ï²Ë.qf\œ_ñÖò8àœsι÷Þ{ãj̸зš4oY1 Œw©ÿýïÿôÓO㯾õë>@€ @€Ô®@óX k×®’ÌÚ-¥‘Ȳ@L)cžŸ·Н¸­O|Åø1¾âûq5æÌ™3çfüÍ[VÜ=nzoW¿ì²Ë^~ùå)S¦´²éùÜÜg @€ @€, 4$™Y®”± š·¬R©aå•W]o½<ò˜ßÿþÚ¿ýí¾˜ŽÆ\TžéR!@€ @€¹h H2sYb“"'æ-+„BçνZh饗î÷Ýï®´Ë.£'Mš4—w©çÉÄ\ @€ @€@4$™uRtÓ$P»Í[VÅR©o©4 S§¾Ýº-ºÎ:üå/·?öØcñÉœµ;A#'@€ @€Zh H2[Rò>hÞ²BèÂ!!œ_*íޱ〥—6fÌ^‡~äÔ©Ó22Zà @€ @€Ê(Ð<d–Ö¡˜Í[V]B8'„¿‹?nhX«{÷aÆ­½Í6ÛOžü¶GeÎ|Ç$@€ @€Õh H2«[ g'@à[š·¬º†pQ…pm¡pfCÃݺ-6pàJÏ<óÌ|wKÿÖ£ù @€ PCÍcIf ÎP Ô§@ó–Õ˜dþ6„'C¸3„kB86„ÎqûŸ‰'¾ûî»ñ“õIdÖ @€ @ ¯ÍcIf^«l^r#мe5K2ï áO!œï7_j©¥&L˜ðúë¯ñŹ™µ‰ @€ @€Q y, ÉtI qæ-«Y’ùp1ÌŒÏÌì²ä’Kþõ¯ýÇ?þ1}úôŒÏÅð @€ @€6 4$™m¢óa*/мe5K2ï á–N.êÝ»5™•¯‹3 @€ @€ 4$™w æE yËj–d^‰Åâ¸Î{®¸âÀ—^z).Èüúë¯çåD¾K€ @€dM y, ÉÌZuŒ‡D yËjL2Ï áÁ. áŽw^l±eV[mÍW^yeÆŒ³fÍJ¾ë_  @€ @€šh H2kº”O š·¬ a|¼©<„- …%–^zÀþûpüñÇO›6MŒYƒ9 @€ @€@½ 4$™õV}ó%PsÍ[VCØ.„ƒ:v±ÐB½ ròÉ'ÿæ7¿ùøãkn^L€ @€|«@óX@’ù­\>@€@uš·¬ !,BŸVX}³Í6?äCžyæ™×^{í«¯¾ªî  @€˜ÍcIæüvLÊ(мe…x{ù‚ vîÜyĈpÀ¯~õ«¸óË/¿,ãéŠ @€ÈŽ@óX@’™º shÞ²:tè°á†î²Ë.§œrÊ7ÞøÐCÅßÚ²|ŽnÞ$@€ @€9h H2sPPS oæ-+®Æ<ñÄo¸á†çŸÞRÌ|×Ýì @€ @€@h H2]d\ yËêÒ¥ËYguÏ=÷¼ú꫞™ñ @€˜wæ±€$sÞ=ù*´¬¸Sùĉ'OžùöÛo‹ª^ @à›IËúío«e}SÉ; @€ @ —I, ÉÌe•MŠ@n’–%ÉÌMeM„ @€|«@ H2¿Ų¢@Ò²$™U¬…S @€ @€ $±€$³ÂþNG€@›’–%Él“ž @€ @€šHbIfMWÓà ä^ iY’ÌÜWÜ  @€ @€Àl$dΖñHZ–$3ƒ52$ @€ 0Ÿ’X@’9Ÿœ–²$-K’YU!@€ @€5!Ä’Ìš¨šA¨[¤eI2ëöJ0q @€¨C$dÖá5`ÊjH iY’̪¡ @€ @€yHbIæúèóÏ?Ÿ1cF;”|… @€äR ‰$™¹¬²IÈ@Ò²j=ÉüðÃ_ýõ'žx⢋.:ûì³>úÇGqäñÇŸpúé§_sÍ5=öØ /¼`[öÜ\½&B€ @€ó(Ä’Ìyôôuæ«@Ò²j7ÉüꫯâjÌcNœ8ñ–[n9ä}ï{ûn²ÉVm´Ù;ì´Ç{xâI7Þxã½÷ÞûñÇÇ•™³fÍš¯°N€ @€²/Ä’Ìì—Ì Ô³@Ò²j4ÉŒ7•¿öÚkÏ=÷Üÿþïÿ~øcÇŽ1b“5ÖÕ¿ÿ–Ë/¿Õ A›¶É&›l·ûî»vØa·Ürë£>ï4¯çº›; @€ˆI, ÉtU e¤eÕh’Wcþío»þúëGÞµ[·î ]–hhX6„-BئTZ³¡aP±¸Xa©¥–:à€Ï=÷¼øÍ,×ÅØ @€ @€@’X@’Ys§ @ ÝI˪¹$3Þ$WW¾÷Þ{ña˜»í6fÈ‘ ,°J±8ªX<©XüEW…pM±xq±ø«BáG!l¾ÐB£V[mí±cÇ>øà„W^y%F í¦óE @€ PëI, ɬõ‚?| $-«æ’̸}O\]ùòË/o¶Ùæ‹,Ò«sçU …­C8:„‡0%„ÏB˜Â'?ÿ5„3 …:vì¶Ê*«\zé¥÷Üs{Ìó}y› @€´.Ä’ÌÖ¹ü–ê $-«æ’̸¨2.­œ0aÂðá#X sCÃÆ!ÂÅ!|Âÿ…ðÿÿ™Õøó !ÜÂÏBX¼ÿ¡§œò³+¯¼ò“O>©®¿³ @€ @€* $±€$³Šµpj¾U iY5—d~úé§þóŸÏ;ï¼—J ‹‡…0)„·B˜B 0›’̦ÿѸ8óRi½%–±í¶»üð‡‡L:õ[‰|€ @€äU ‰$™y-´yȇ@Ò²j.Éüøão¸á†ÓN;­ÿ•ŠÅÎ…Âq!¼ÑxSyó ³ùÏ“J¥-zõÚh£¶Ø{ï}â6óQG³ @€ @€íHbIf; }…Š $-«æ’Ì?üð’K.9âˆ#—[nµz—Jg…ða_ÿÿWc6O2_ áÀ…ÚeÈu·Þzû·ß~§bÔND€ @€²&Ä’̬Èxh.´¬ZL2/¾øâÃ?b¹åÖèСo©tv}ã¾òæIæK1ÉìÚu—Áƒ×Ýj«í$™Í/? @€ @€@½ $±€$³Þ.ó%P[I˪¹$3nÙsóÍ7Ÿyæ™+¬0¨ñîòÿ áµÂÌøØÌ¸VóÉRi³EÝ`äÈ­Çß×Ýåµu¹- @€”W ‰$™ååu4Ê+´¬šK2?ûì³Ûo¿ý /80>'³T(ü¨å¾ az¡ð`CÃÚK.¹ÖöÛþѵãOy/'G#@€ @€ÚHbIfm•Ïh Ô›@Ò²j.Éœ1cƳÏ>{Çw¬µÖðNºvè°m¡pf¡pcãÓ2?ÿïmæqó¸qùË!ÜÂÙÅâ²ýú­vÌ1ÿóë_ÿ:nTo7_ @€ 0[ ‰$™³eü@€@’–UsIæ×_ÓÈÿûß›o¾e½:w^©TZ·X<(„×Cxÿ¿[ÿ|Â'!ÜÂá!Œa•W^ùšk®yøá‡¿øâ‹ Å @€ @€@e’X@’Yvg!@ }I˪¹$sÖ¬YñóÉ“ßþþ÷°Þz,»ìð\½¡aÇ®á¶BáÑBáñþÂ_B83Ƙ .¸Å²Ë®°Í6ÛÜyçÏ=÷\œ~ûÜ|‹ @€ä@ ‰$™9¨©)ȱ@Ò²j.ÉŒ¥‰aæ—_~ùÈ#ÜvÛmûì³ï’KöíÚµW±Ø³X\¢¡a͆†á…ÂÒ!t/Š[-¿ü€ãŽ;îŠ+®˜6mÚW_}•ãÊš @€øV$d~«˜ PE¤eÕb’õfΜùÏþsÒ¤I?ÿù/¶Ùf»¸8sÅöë7°wïuz÷±Ür+õë·Â ACÖXcÍwÜ)Ƙ÷Þ{ïôéÓ«ÈîÔ @€ @ I, ÉÌBQŒ–’–U£Ifœ]œHÜýç7Þ˜4éé;î¸ó¤“N:星Œ;~Ï=÷>òÈ£ã¿^rÉ%ñŽò¸tóý÷ß7¤Ç•œ-™xŸ @€Ô‰@ H2ë¤î¦I F’–U»If“\i9uêÔ_|ñòË/[“ÿô§?=öØcÏ?ÿüø¯wÝu×K/½ôúë¯ÇM‚j´X†M€ @€Ê+Ä’Ìòò:åHZV­'™1¥ŒÏÌŒK.ßzë­¸>óåÆWL/ã¿Æ„3¾ÿù矗ÐÑ @€ @€@í $±€$³vKiäêA iYµždÖCÉÌ‘ @€”K ‰$™å‚uæ‡@Ò²$™óÙ1  @€ @€@6’X@’™Í2MIË’dº0 @€ @€@ý$±€$³~Jo¦jQ iY’ÌZ,¢1 @€ @€ö $±€$³}Œ¾E€@e’–%ɬ »³ @€ @€,$±€$3 E1ZHZ–$³%(ï @€ @€ü $±€$3%6#yHZ–$3OÅ5 @€ к@ H2[çò[ª+´,IfuËáì @€ @ ’I, ɬ$¾s ÐV¤eI2Û èó @€ @ v’X@’Y»¥4rõ ´,If=Ý  @€ @€@“@ H2]dY iY’Ì,ËØ @€ @€@y’X@’Y^^G#@ ¼IË’d–—×Ñ @€ @€@–’X@’™åbIË’dº$ @€ @€@ý$±€$³~Jo¦jQ iY’ÌZ,¢1 @€ @€ö $±€$³}Œ¾E€@e’–%ɬ »³ @€ @€,$±€$3 E1ZHZ–$³%(ï @€ @€ü $±€$3%6#yHZ–$3OÅ5 @€ к@ H2[çò[ª+´,IfuËáì @€ @ ’I, ɬ$¾s ÐV¤eI2Û èó @€ @ v’X@’Y»¥4rõ ´,If=Ý  @€ @€@“@ H2]dY iY’Ì,ËØ @€ @€@y’X@’Y^^G#@ ¼IË’d–—×Ñ @€ @€@–’X@’™åbIË’dº$ @€ @€@ý$±€$³~Jo¦jQ iY’ÌZ,¢1 @€ @€ö $±€$³}Œ¾E€@e’–%ɬ »³ @€ @€,$±€$3 E1ZHZ–$³%(ï @€ @€ü $±€$3%6#yHZ–$3OÅ5 @€ к@ H2[çò[ª+´,IfuËáì @€ @ ’I, ɬ$¾s ÐV¤eI2Û èó @€ @ v’X@’Y»¥4rõ ´,If=Ý  @€ @€@“@ H2]dY iY’Ì,ËØ @€ @€@y’X@’Y^^G#@ ¼IË’d–—×Ñ @€ @€@–’X@’™åbIË’dº$ @€ @€@ý$±€$³~Jo¦jQ iY’ÌZ,¢1 @€ @€ö $±€$³}Œ¾E€@e’–%ɬ »³ @€ @€,$±€$3 E1ZHZ–$³%(ï @€ @€ü $±€$3%6#yHZ–$3OÅ5 @€ к@ H2[çò[ª+´,IfuËáì @€ @ ’I, ɬ$¾s ÐV¤eI2Û èó @€ @ v’X@’Y»¥4rõ ´,If=Ý  @€ @€@“@ H2]dY iY’Ì,ËØ @€ @€@y’X@’Y^^G#@ ¼IË’d–—×Ñ @€ @€@–’X@’™åbIË’dº$ @€ @€@ý$±€$³~Jo¦jQ iY’ÌZ,¢1 @€ @€ö $±€$³}Œ¾E€@e’–%ɬ »³ @€ @€,$±€$3 E1ZHZ–$³%(ï @€ @€ü $±€$3%6#yHZ–$3OÅ5 @€ к@ H2[çò[ª+´,IfuËáì @€ @ ’I, ɬ$¾s ÐV¤eI2Û èó @€ @ v’X@’Y»¥4rõ ´,If=Ý  @€ @€@“@ H2]dY iY’Ì,ËØ @€ @€@y’X@’Y^^G#@ ¼IË’d–—×Ñ @€ @€@–’X@’™åbIË’dº$ @€ @€@ý$±€$³~Jo¦jQ iY’ÌZ,¢1 @€ @€ö $±€$³}Œ¾E€@e’–%ɬ »³ @€ @€,$±€$3 E1ZHZ–$³%(ï @€ @€ü $±€$3%6#Õ˜9sæ—_~9yòäW_}õÅ_|æ™gžzꩇ~ø¡‡ºï¾ûxà—^zéõ×_ÿè£æ~„IË’dÎ=O @€ @€ZHbIf­Ôø dD`Ö¬YŸþùÔ©ScØxÜqÇÅÞ²Ã;Œ9²ÿþË,³L=[l±ƒ:è—¿üåƒ>8÷cNZ–$sîé|’ @€Ôº@ H2k½ ÆO #_ýõ'Ÿ|džp {ì±ÇvÛm7jÔ¨u×]wàÀË/¿|ÇŽ;uê4nܸÓN;-®Ïœû1'-K’9÷t>I€ @€j] ‰$™µ^Pã'xkù{ï½÷üóÏo½õÖK/½ô!CbŒ¹É&›Œ3&¦š]»vIæÞ{ï}úé§K23R2à @€ @€df¼@†G Fb’9eÊ”øxÌ]}úH2[Rò> @€ 0GIæY¼I€ÀüdÎUÇ$@€ @€u" ɬ“B›&,|ùå—Ó¦M‹÷˜[“™…r @€¨-IfmÕËh Ô´€$³¦Ëgð @€ @ º’Ìêú;;ºdÖU¹M– @€”W@’Y^OG#@ If+8~E€Àüˆmç½÷Þ{óÍ7_zé¥çŸþ¹Æ×«¯¾úúë¯ðÁñÿÅç÷Îó:& @€óC@’9?T“9 H2çÈâMæ‡À×_=sæÌwÞy禛nºð :è qãÆí±Ç{î¹çñÇÿ‹_üâž{îyûí·?úè£Y³fÍ8& @€ed–Ô Ôœ@ì_|ñEÜ‹'.Rú÷<¼b&Ðú§ò&™]ºt9묳î¾ûîgŸ}6ž:.»J^S¦L‰k®>ûì³8ªš+Š 0/1œüä“O&Ož3¸Œ¡,p2.ÿ°Ç;.yä‘#Ž8bàÀËÌÃkë­·ž8qbŒB[ÊÊ›d644Œ1bÛm·Ým·ÝöÞ{ïñßxpÀgžyæ­·Þï*uiƯCÃ#PFø—ño1®»îúÝvÛc³Í¶X|ñÅ{ôèÝ­Û -´nçÎ#;wÕ½{ÿ=–XvÙ† Ye̘=Ÿzê©W^yE—(c Š @€@ûb€y×]w]sÍ5G}ô7þ+ÿ?oÄ;­vØa‡M6Ùd‘E‘d¶Ù·Ô´@L2ãšÆ &üà?èÛ·oÏyx9òÑG}íµ×$™5}I<šˆ«1ßÿýø$Ì_ýê¼áÃ×4hÕRi‰V(•6+•¶a÷øO±¸j±Ø¿sçezôXz½õFþùÏ~øá‡ãÒôšž¸Á @€È€$3E4óU ®ÜŽ7`Æÿê¿þúë=öØ£æáuî¹çÆ™1ChiQwy×dvîÜ9>ìîºë®»÷Þ{Ÿ~úé¿ãwöˆ±j\o0÷¼ùz98ìÄ™1™<ï¼óvÙe×=íÖmµBáÔ. áá&…ðtO…pGhhøþ‚ ®¼ä’«n½õûïлï¾ûav&b$ @€êP æS§Nw‹ÿãÿøÆåÿçxGÕÍ7ß|þùçÇ»J­É¬Ã+Ä” 4­_Šÿ ÿÐCÅõÛñÁqí~ýå/‰ '>΢¥4 ¼IflY¿ýío=Ã5L€@s¸´ò¢‹.úá¸Î:‹]‹ÅµBøsc†ùEÿ¯ñŸY!¼Â;…Â/K¥ ºvÖ¯ßJn8ò_ÿúÏ“1ü­GsL? @€Èš@\ºó̸zaÕUW•df­:ÆC 2ŸþyŒãv?Ï<óLüÛv¿âã(›¶×i) dV¦ ÎB žb:òÈ£GŽÜ¼ÿ …á…ÂøþÂä¾úo’óÌÏCø4&œ…Âq;î¹È"K2ô±Ç‹ówÿ©g=s'@€ qIfÆ dxò$ ÉÌS5Í…@6>þøãm·Ý¡gÏ>;oÂÁ!üª1·lZ™üïk!ÜÂ/Cè²ÄKÄÝÁâs*âŽçÙœ—Q @€ $™.*& ɬµ¨[>úh³Í6ïÒ¥W‡›…pJW„0£ÙjÌæaæ”^áw!,´Øb‹]}õÕqï³?ü°néLœ @€@ö$™Ù¯‘È€$37¥4Ùˆ¶ˆQälP(ta«. áÖþ¯…$ó³Þ áæº-ºè¢_|ñ]wÝ·JÌæÔŒŠ @€( Ét 0ÿbªïôŒ»™Çp`Ê”)M»ýõ¯]zé¥\pÁÝvÛí¸ãŽ»å–[⯚^1‚øê«¯ZÚ0(Ž3iYvü™µsä–fΜŸ+/ìx=¿õÖ[ñßyçxéÆfâÕÛÒ·¼_¦$sÔ¨Q ,нTÚ2„³B¸®å5™†ðﮉk2c’yùå—ßwß}±_Uf¨ÎB€ @€@;’X`ÿý÷·p;}…9 Ä`gÒ¤IûÛßâJ§Ûn»íüãu×]wÞyçÅРcÇŽ1mØgŸ}Î8ãŒø«¦WÜ?=&BqÇ–ö JZ–$sŽìÞœñÊŒ1æsÏ=7qâÄßÿþ÷ÿû¿ÿ{ÅW\{íµñ®ä7ß|3Æ›-]ºóoHŽœÄ*ì°ÃN‹/¾l×®#CøAç´úœÌûÓÎÿ<'36¨¸ë™çd&žþ• @€@¦’X@’™©ê Zˆ·“Ç óª«®ºôÒK/ºè¢˜aþâ¿øÉO~Ò£G:¬½öÚÛo¿ý¡‡zá_7ß|ó»ï¾;}úô–â ¤eI2ký ©•ñÇ 2¾b†ùÞ{ïýóŸÿüË_þrÓM7zê©'œpÂ)§œÓøx‘Ç0óÿøG\Ñ??\+S›=Î8æ¸ÜôóÏ?c_q"qðø‡î?“¯Å(r¯½Æ­¸âÊ={Æv ᄦ†ðE³šÝc>³q+óI!\[(Û±c÷e–Yæî»ï~ùå—ãôg›ø @€¬ $±€$3k25-“}÷Ýwذaýúõ[|ñÅãRÌž={Ƴ¡¡¡X,vêÔ©k׮ݻwïÇWÜqc‹-¶xì±Çâíº1Q™ãÄ“–%Éœ£’7Ë.ó½˜éÅôr¿ýößqÇúôé³øâKôì¹ø"‹,ÿéÙsÑø¯ñ™ ;î¸c 6ãÍx§y E‘+þ¥Cœ`¼Yþž{î‰|ˆOŒüÍo~WPÿùÏnZ¦XCù^Ä¿øâK?üˆõÖY(t+Öl¼ü¡¦ÿ7Ìü:„É!¼Z,žÑа^·n«®´ÒÐM7Ýüµ×þÕÊ‚ð²_TH€ @€@;’X@’ÙC_!@ %¸8jï½÷ˆ«1c¾·ÕV[¯½öˆ††n!t)z ½ …E …ï4&fÖYgýƒ>ø‚ .ˆÛgÇL¬òCmÇãciã·8àø7ñ®ùÃ^rÉ%?ûÙ©'trœH¼}>>"Þ8§ÓΖþ`¶ã¼óï+Qþúë¯+f·ØbËŽèÐap„ð§ÞáãÆ>áùž(•ŽîØqPÏž‡_oçGÇ'žÖVþ<ÿ ™ @€@f$™™-È@Ì=žþùNÆoãVßúzê©§â=­­D@I˲&3Iö§/Èø0Ì“O>eë­·[l±Þ=z¬^(ü8„SC¸-„{B¸3„?6>kqü oØ»÷òo¼q|„æwÞWrf|v1ÆŒåßÿþ÷_ýêÜÑ£w5jÓ!CV0`à + éßÈw¿;p¥•VZ{íá[l±Õ÷¿ÿƒ‡~8Þ|ÿ fR1•çœsÎÙh£† ‹Éó Ba††v+•F‹; ë kuë6d‰%úo°Áf×]wÃ=÷ü5ûõʸ¼á @€¨€@ X“Ys§ @ ÝIË’d¶[Òç^ ÞX}ê©§íµ×Ø¡CW/•º”JÃB¸´1½Œ;_ÿ_ã=ËÓB¸;„SBØ(„û÷ïÖYg]yå•Ùß;&þ]Ão¼wÚúá´Ür+ôèÑ«X,…P,•º•J ‡ÐP(:uêß_wÝõãæñïâ½ÛsOW­OÆyÅ¿‰wǽk 3ãSy …;tèÛ¡Ãr¥Rßb±wœV¡PüÎwéÛwùí¶Û1f¹ÑÁÖóÕª—ó @€˜{$dÎ=O Py¤eI2+_‚º:c¼×8®Ó{çwÆ7tèÐÅ ù¶-~Âã!¼ÂŒâ¿lÜûÕ!®Õ\kÑE‡ï¼ón1œ2eJfïVnšZáþð‡¸ÞrĈ-{ôÒ©Ó:…Â~!V(œR(œÂQ!|¿C‡m:w´ì²ÃÇŽÝçôÓÏxíµ×bH˜ñÛÌãZÓ¸’öïîúëo¸è¢_Çg\ì¸ã.#Fl±ÖZ›­³Îæë®»Åæ›o½õÖÛüàŸzêéW^yU\˜'¿UW—·É @€¨E$dÖb™@ý$-K’Y?¥¯ÊLc^÷";’#¾b¡°Eç…psãRÌÿ×l#ìÙ?Ç_í·À[/½t¿ø8Í7Þx3³IfLíâÔâ>ìÇ÷Óï|§gçÎ+–Jk‹û„ðHÿjÜ×;îôýN/ ç‹74¬Ñ¥K 7Ü8Þc7jåU©ÔOñã+N3nctõÕWuÔQñ)¦‡~øÑGý«_ý*vGy$>ÕMåsÔó& @€l $±€$3›e2*š’–%ÉtaÌWx»qÜêé§Ÿ^k­µ“ÌC¸ºñFò¸svzÙü‡ÛC8ºC‡Ýzõê³êª«¿öÚ¿âb˜6_Ù¾ƒÇí{bŒùàƒ9äÐ…ú΂ Ž(÷.ãÃ?Ÿk 0g6nóý~L5 …ë‹Å64ìÒ©S¯µ×^/îlï1Ïþó‘¥1Èœ[>ñÄwß}÷E]Ÿœyá…ÆmÙo¼ñÆ?ýéOñYšq"5‘ʶ¯Ê¾E€ @ I, ÉÌ_‰Íˆ@ž’–%ÉÌSq38—øLÈI“&ÅçC®¼òÊá?¯ï‡ðb¯7ÞTÞ<Àœý󤯍óÇ…B—¾}—‰[Ç ,›7bÇÝpà §vÚ[l]*u*áÙÆ 3>ù3Þ2ß4£¸,3þüI“CøC©Ô»_¿ÁGyÔùçŸÿúë¯g°^sRÌ3cž“ÛX͸ü2þo|Åô26“l–f޳ð& @€MI, Éta e¤eI2³\¬Œ-æ]MIf|Hfc’yPÏ7Þ|=;ë›a6ýðTWÆÇK ûöíû /|öÙgÙ|úâ‡~ø»ßýîÇ?>fƒ 6/{ '†ðFŸ6‹1gO-f›ñý{K¥•úö¶ï¾œrÊ)¯¼òJêk  @€Ôœ@ H2k®‚L ®’–%ɬ«êW~²ñz{ñÅï½÷ÞaÃâ~åñ#9¡qíb¼ùzvÐ×ü‡‡C8¿Pˆ»ä,Ü¯ß ñ›1 ÍæÝåÓ¦M;óÌ3÷ÚkïÕVÛªTZ­XüuÏ)ÆŒ³kZ™CÚ-{õµå–;tÐAñ¾ìÊ—Ã  @€ Ä’L—YHZ–$3ËÅÊÁØâ-ɯ¾úêC=´æšk–J Åâ˜n áÁÆýÊc¾×<ÃŒ«4c¼yO§”J{/¼ðbƒùç?_‰Wlf“Ìxkù˜1{¶e©´F±øÛÆ…—Íg”üütÛôì¹éf›mÿ¯B¼q>õ­Ý)Ä…¾M÷ËÇýŒ¦NúöÛoǺ¾ýö;ï¼ón̨ã£A=ü³v‹kä @€­ $±€$³u.¿%@ ºIË’dV·¹?{ !ãíáo¾ùæ6Ûl·ØbK.´ÐˆRi¯Ré”âV83+6Å}1Õü,„)…ÂÙ¥Ò‹,²Özëm´Ûncb®”Í3.&`qû›}÷ÝÍ57+•ú‹ç6®ÉLâÙæaæ¥ÒºK.9b‡v=ôÐCãRÕÜW?ËŒø÷¿ÿýØcuÖY'tò÷¾·ÿ¸qã÷ÛïÀƒ>äôÓϸæškâ6UñÒig–gal @€Ú!Ä’Ìvú HZ–$³bòs¢˜ÝÅWÜK%î®2}úô¸<,¾>j|}ÚøŠû­Ä€%nÂ2÷Ǭâ'ãâ·8ö½ö7`À E]µT^*í«!¼Âç!|ÂôÆÕŒqOœŠÅ¸qyÿ¥–Zi̘Ý?üð©S§Uqä­Ÿúƒ>ˆ{yÿð‡‡Œ±yCCïbñÌÆÅGb~3ÌŒkMÿ¯Px¨¡aõ¥—^s̘±ÇsL¼q¾õãûí|ˆ²âŸ¸ãÒã?~ã7í³Ï÷vÚi×!CÖ0`Õ¡C×^{í wß}ìI'tûí·Ç…šñÒÍæcZçŽÃ @€Ôƒ@ H2ë¡èæH v’–%ÉÌ`)cb`ùÏþó /<þøFÞmë­·Ýd“Í7Ýtó±cÇí¿ÿ\páƒ>øì³ÏÖÊÎÑqFúÓŸûÛ‹·Ûn·ŽëÐaÅRi‡¸83„³B8/„SC8®X_*êÒeh}Ö_TÌ‘âz¹,ßáCæxફ®Úu×Ý … …]C¸,„¿6³Í—b~Â?BøSg ½ úË_ž}ÓM7½ûör?¤øG&n#/­O¼wï âšÒö,.(® áÖþÂÕ!\ÂÑ!lݵë&C‡®¶çž{>üðÃÿú׿b8öM(ïÌWX²O>ùäÌ3¾ï¾û­¶Ú¦: Še-V,žÂÍõº!–¬P8½P8 [·—\²ßFŠËncò¬^óµ4N€ PI$dVß¹h«@Ò²$™mœ¯Ÿ;Œ¼õÖäsÎ9wå•W]a…A]º,¶À+‹ß+ á¤N,•vjhØxVìܹó!CÎ>ûì³ÄÄo¾Žª,!R|½ñÆ>úè 7ܸçžc·Ývûå–Ü»÷€V6lÝ­¶ÚáÀŠÓy饗âF?ñÃYŽ1›Lâ #þm·ÝvðÁ¯¹æ:;v a‰bqT±¸CßáàBat¡°EƒâjÌÅïþyê©§Åü3® ÌþìÊR÷ì$‚Çe´‡v^zé¾Ýº +7,á_q«©Ægħ¶ÆG¶~Üø4€{㟻í×oÀ~thüƒ˜™¹  @€yHbIæ¼`ú.ó[ iY’Ìù >÷Ç‹ÄûX~ø‘£þÉRK-Û«×€††¸ÌotãÃ$ã½É¿ÿ 'ÄT³Pˆ72/µÔRCcôwâ‰'ÆÜ/–µ&’±x×|\Žoï=ãŒ3~úÓãÇŒÙs—]ÆŒ·ïþûÿàØczÞyçÅU¦S¦L©‰l¶©²Q>nŸh:nܸUVY¥_¿¡½z­ß½ûÈNv^pÁ]ºwß²W¯Q}ú¬ùÝï~wà 7Œ1æµ×^—ÝÎýUá“刱ó´iÓ^zé#GŽêÖ­û ¬[(ìW(œ‡!Ìaö¾aj/ Ç‹+-¹äÐwsÄGÆï–k$ŽC€ @ ºI, ɬn9œÖ’–%Él«’¿Ç¼ôÒK:ê¨ 7ܤC‡…ÖᾸwŸ4&-q4móï„= TÚ¾[·^®ôÄOÄô¯&ž™ãÖØÆ‰q»œøúøãOâ?1·Œ¯¸5ÞÀg?_•”ŸÇsÅéÄÚMœ8ñꫯ>í´Ó7Ûl›µÖÚ`¹åVZvÙ•6Ø`³í¶ÛåÐCüõ¯mƒÜøÉÚšÝ<âdçëQ>Fèq¯¥•W^¹ðŸW|Fë!¼BÜY~vŒÙôC 3㛷ć¸.¸àÎ}ú YwÝ ßzë­ìÌÅH @€Ì‹@ H2çÓw ˜ßIË’dÎoð¹?~ÌñÎ9çœø¿5×ܰTZ¼TÚ<„gB˜BÜüzvÒ2+„øÏ½!ü´PסÃBË,³ì„ Þ|óÍÔÌý¹|²ìq‹¢¸ßú%—\:~ü¾;í´Ëzëm¼ÞzÅE§øƒøÔÓ ÝÿýñOŸ³ìòsyÀøç롇ºæšk Š7ûÇW¼¯ü©Þ !æ–³ÿ|5ÿáö~ܱãî‹-öÝ5ÖÿˆÍå‰|Œ @€@Æ’X@’™ñz:HZ–$3;×Ã'Ÿ|:nÜø†õêoß#„“Ù÷Íc1lù „Ww“éÖ«×¢ñ¦ì?þñqYfvæR‡#‰«Iã*Ó¸¡LÜr=ÞïŸwúæ›o½óÎ{S¦Lýàƒ›VœÖ!Kv¦KpçwÆÅ±ñNÿÆ$ó˜Æ3>³yzÙüçCøe©tP—.}üúëodg.FB€ @`^’X@’9/˜¾K€ÀüHZ–$s~ƒÏýñã}Ö£GïÞ§Ï€…Þ4„ƒBˆOðk)f‰wšÇ0óO!,¼È"=þóŸ_ýõ1=›ûsù$zˆIæÝwß}ñÅÇ-¦“Ì£Cx=„O970gÿ|g–Jûwë¶ÌàÁ+K2ëí‚1_ @€@Ž’X@’™ãZ›$-K’™šÆ`vØa—Åï×µkÜíúÈ. !&–³s•æ?Ä…šñ™™w =zö\ôÔSOOh|ûí·³3#!5¸qùÓO?7š:thc’¹Ow†ð÷9='³éÏÚ…Âø.]¶é×oÕ7ÞtòäÉY›‘ñ @€hŸ@ H2ÛÇè[TF iY’ÌʰÏÍYÚ’dÆ'gÆS’97®>Cà?±õ½üòË<ðÀk¬Q*•ŠÅÑ!\Þ¸©Vü£”<áéÏ×e…Âv /¼ñj«­¿ãŽ»Xóì2"@€È@ H2sSY!K¤eI2³Så¸÷¾ûî¿òÊk.¹äÈbq§bñ§·¾Îq;’©{šÇ¦Û¢‹.‹8mÚ´ìÌÅHdM`æÌ™ñY²/¾øâ¶Ûn×»wŸîÝ7.•Æ‹§†ðÆfÆô2î¥ÿ7>Ò!>„6nªuhƒ—Zj½÷Þï„N|ÿý÷³6#ã!@€ Ð>$d¶Ñ·¨Œ@Ò²$™•aŸ›³Äçøýä'ÿ³Å[°^©4¤TÚ»ña˜Éj±¦û^_ á!œBç%–Xâ–[n™4iRÜkfnÎâ3êV nÿ˜tÐÖ^{Dß¾+-°@ïR)î®ï1ŸØ¸È9þ­A|hC|í]!Âú!,0pàÀ¦µâvNuëfâüìÝ|ÕÞÆñ3»¤Ù€P•" EØèH³"ˆ °#(*Šz¯`C®×^P®\DÁzEQ)*ˆvDAšôH@Ü÷1óš ‡d³³Àfv÷·Ÿ|4lfvÎùž9ÿÌ>™A@8°b’Ì8_ºƒ@œ X%‹$Ó?ã«ëø½ýöÛ<òh‡]‚ÁrÁ`ScFfÇ,«IÍ>U,#ûl1]Ùïߎs}Ñ¢«T9õœsš~ÿý÷úè«FÖ?}¡%øP@Iæ®]»ß{ï½gžyö²ËzT­zzéÒg8Î5ÆôChLc®6¦U•*­š7o}ÓM7MŸ>}áÂ…º7½{D“@@ˆ@ÀŠH2#0dˆš€U²H2£&Ÿï†ôéWZùÉ'Ÿ\½>ôZ(¨è8W8ÎýÙ'Œ-Ë3õ¡ò©Æüy#’`°b©R5š7ouå•ÝÖ¬Y³wï^¥4ùn‚Hp}ûö­ZµjÑ¢EƒÑ™™§œR;8Θ㒒*ëËqJë{Ç)á8E[´hsÏ=÷è^çúL:1f‚ï6t@ˆ3+ ÉŒ³ñ¥;Ä™€U²H2ý3¾ÊX–/_þí·ß4¨^½ú§œ’R¸p«`°[öMÌÇó‘1ó¤1+Ö©L™ªuë6Ñçd úÇ–-©Ä˜þGZâgÍ”mÛ¶)œ|óÍ·n½õöË/¿¢aƧV¯zõÓO9¥~ÍšµkÕªuº.V{æY·ß~»bL]V—}ðsh € €^¬X€$Ó+ Ë#€@4¬’E’Mü|·¥S¿tߟo¾ùfĈÿû€ääªÅŠ•wœŠÆèë¤ì¯dcJW©rZëÖíz÷î£s8—.]ª2ó}e@W@'?ë±uëVœ9wîÜ7ÞxCÓíÞ{üío÷>úègžyfìØ±_|ñ…î ¤»hi>ògö@@8°b’Ì8_ºƒ@œ X%‹$Óoã«XrÉ’%“'O~á…7>£fÍSuOŸä¿ú¾B… Í›·¸îºtEM]sûöí:™Óo½ =ø\@³F8ؼy³.ƒ©é6|øð^xAæ¸qãfΜùûï¿+êdfù|i € €@dV,@’#k!€@t¬’E’vO[QÀ¢%+HY²dé·ß~÷æ›oŽ9òÕW_5j”®¢9eÊ”yóæmذ!55U§–¶x²eaÐôÉÌ~¤e?t¦»víÒ˜YBñ= € €@< X±If< .}A þ¬’E’éÛ!v3u9mÚ´I“&é´1]²O'×m”u"™>ñʇ^};v4 @@ð­€ dúv¤hHÀ*Y$™~Þ+fj¼tƒ~©Köé¿:aL§kr'e?mC@@ü,`Å$™~,Ú†VÉ"Éd—@@@@ q¬X€$3q†žž"‹VÉ"ÉŒÅA¤Í € € €D&`Å$™‘1²DGÀ*Y$™Ñag+ € € €øAÀŠH2ý0(´ò°JIf^P< € € €@ü X±Ifü 1=B ž¬’E’OƒK_@@@-`Å$™¡¹ø)¬€U²H2 v8Ø: € € €Ñ°b’Ìhâ³-ð*`•,’L¯€, € € €@ì X±Ifì%-G ¬’E’™ƒN@ aög?¶ût@@àP+ É<”ˆg@À?VÉ"ÉôÏÐÐ@à deeíÝ»w×®]™™™ú^‰æ|q^ @@ v¬X€$3v‡’–#VÉ"ÉL„A§ 8J/]îܹsëÖm[¶¤®Ë~¤¦¦¦¥¥éÉÝ»wë·@âhÐS@@C¬X€$óP"žAÿX%‹$Ó?CCK@ÃسgOFFÆŒ3†þÐCuéÒµC‡óZ¶lÙ¢EË .¸¨S§.ýûß7zôèÉ“'ëDM¥y8Ûb]@@ذb’ÌØJZŽ@"X%‹$3>"€@"è|ËôôôqãÆÝsÏ=]»^V¾|Å%Žuœ€ã8Ç_ªL™òÊ3ÿñ¼öÚk:9“$3v úˆ €ä*`Å$™¹*ñ$øDÀ*Y$™>šD, XRŸ(Ÿ={ÎóϿгçÍÍ›·©[·EÉ’m‹é`Ì%Æt.Z´}ñâmjÖlÓºu›îÝ{¼ñƘ/¾˜¦8#Þ"+"€ €Ä®€ dÆîPÒrAÀ*Y$™‰0èôâ[@Ÿ+OMÝúÊ+¯¶lÙ¦zõ:%J”)R¤®ãÜbÌ}ƼhÌ¿çnÇéU¨ÐÙE‹¯\¹j·n=†}lóæÍÜ(¾w z‡ €ä*`Å$™¹*ñ$øDÀ*Y$™>šD& 4rýúõ¿þúëàÁžzj2e*tN0ØÕ˜gy͘‰ÆL6æßú§ã\ã8§pBÃæÍ[ÝvÛí‹-Òm€t‡ È¶ËZ € €1*`Å$™1:Ž4°JIf‚Œ;ÝDxPUÿä“OžþùN:'% n4æcc¾7&Í˜ÝÆüaÌcv“iÌ7Ƽâ8/TèØÆ¿óÎ;sæÌQ˜¯2ô @@ W+ ÉÌU‰'@À'VÉ"ÉôɸР@ 2Ýèçí·ßúhÓ¦M‘m—µ@@bTÀŠH2cti6 "`•,’Ìwº‰ñ*°wïÞY³f½óλ×]wcñâ'.|‘ã rœWŒùÙ˜ßÙœj.6æÇy=¸«H‘Éɕ۷ï0yò§óçÏׇÓãU†~!€ €ä*`Å$™¹*ñ$øDÀ*Y$™>šD&°ÿ~W¹`Á}ZüÄ“‹«™”Ô8¼Â˜w™–}~æ"c&ó^ Ð;)©ú±ÇÖ¬[÷ôk®¹nñâÅŠ1³²²"Û.k!€ €Ĩ€ dÆè8ÒlDÀ*Y$™ 2îtâU@IæŽ;Ö®];bÄËmÛv¨]ûœO¬_¼ø¹Žó1O3:ûk¨1+vIéÒÕkÖltÕU=¢UôA«Ç« ýB@ÈUÀŠH2sUâIð‰€U²H2}2.4ˆX`ß¾}ªí¿ÿþû_|q×]oÐଓO®”TÞ˜²ÆT0¦¢1eŒ)}òÉu›5ksÝu½fÍš½dÉ’?þØñY@@ v¬X€$3v‡’–#VÉ"ÉL„A§ ÷ 3SSS•O>÷Üó:uiÚ´yåÊUÊ—/_®\¹²eËV¨P¡R¥JÍš5ïÞýš­X±bëÖ­Z%îYè  € €À¡V,@’y(Ï €€¬’E’韡¡% €Àá芗{öìÙ¶mÛÚµë-Z9ž‘‘¡;¥e?ôýîÝ»9óHñò: € €@L X±IfL&G E’÷#N@@@Ȱb’̾A X%‹$Ó‡cD“@@@8JV,@’y”œyY8"VÉ"É<"ª¼ € € €1!`Å$™11j4„°JIfÂî tˆ9ÝÌH—Õõ?ÓÓÓu#=t»v=£çc®/4@((+ É,¨`» Ž€U²H2ÃAc@P\©ÜR·eÿå—_~øá‡ï¾ûNÿݲeË®]»öîÝ[àÍ£ € €@¬X±If¬ íD 1¬’E’™˜»½FbH@'anذaÙ²e_}õÕçŸþꫯþ+ûñÒK/}ôÑÇS¦L;÷ç•+WnÚ´‰“3chXi* €”€ dÔ@°]GÀ*Y$™á ±  €@ ,X°`ܸqO?ýL“&gÖ­[¯bÅJåË—/W®œþ[½ú©µjսᆞÇŸ0aÂîÝ» 3 p¤Ø4 €Ä„€ dÆÄ¨ÑHVÀ*Y$™ »'Ðq@ÀÿúäxFF†NÅ|æ™gî¸ãîääSJ–¬ä8åŒÑWy}sL…bÅ*´m{á½÷öùå—7nܨKhfúdi! € € dàX°iÈWÀ*Y$™ùб €@deeýôÓO_~ùå=÷ÜS«V­Ê•)Ò¾P¡ÎÆûl̘1]ºt5&Éyãô3fª1ßócö7æcšSRaæ AƒtMÝÓÜç]£y € €@ X±IfŽ›F|¬’E’™¯ €D_@Ÿ×~îºëžsÏm_­Z+Ç9Çq®7æ;c“jÌvcvdÿw…1‹yÁ˜+ŠïP·nÃÎ[±b¥RP>cýQc‹ € V,@’£F#HX«d‘d&ìž@Ç@? (‡Ô©•W\Ñ­J•ê'œp¶ã\ä8²ÓËýÆü÷¯OŒé v.Q¢L:õ–,Y¢_v$™~_Ú† €(`Å$™8lò°JIf¾b,€ e…;wî\»vmÇŽçü‰E‹vpœçc2É5ÉÔ¹š¯:Î=… ŸP­Ú)³gÏY³fîcåf³9@@ &¬X€$3&FF"°VÉ"ÉLØ=Ž#€¾Ø·oßæÍ›uje³fÍ€ãè:™cùܘ=‡œéžŸ©Ï˜Ï0æYcJT¨PaâĉóæÍSêÛÒ0@@ ¬X€$³Ç‚M#€@¾VÉ"ÉÌWŒ@¢, $sÓ¦M‹/>çœsÌŸËŒyטiy'™«Œ™mÌ0%™åË—Ÿ0aÂÏ?ÿ¬ËlF¹Ùl@ˆ + ÉŒ‰Q£‘$¬€U²H2vO ã €€o”d¦¦¦þþûï%™]ŒcÌgy'™œ“éÛÁ¤a € à;+ ÉôÝÑ 8@À*Y$™Øð- €€/”dnÛ¶mùòå-[¶*T¨p Ðɘ3Þ˜?òøt¹nh>ј!À±•*4eÊ”… fddø¢34@𙀠dúl|h$`•,’̃tø €€?f¦¥¥]sÍuµkŸ–œ|v0Ø>¼Û˜m‡œ–©éë}Çé]¸ð¥JUlÐ EØÜµk—^Á]¡ € €€¿¬X€$Ó_ÃCk@à`«d‘dÌÿ@ü"  ]ÞrËmgÕôä“Ï Ï{³Ú˜4cveŸœ©ó3õ•aÌcF9ÎåÇÓúä“k4mÚbÅŠ•YYY~éí@@|&`Å$™>šƒ X%‹$ó þ àýš8qÒÈ‘£:w¾2Ðy•¿þúë¬Y³n½õÖãŽ;¾dÉò… 7)\ø\c7æEcžÕ7ÁàåIIç)rjñâÇ5iÒä­·ÞúüóÏ333}Ô š‚ €øLÀŠH2}6>4°JIæA:ü@À7û÷ïß°aÃÊ•+_ýž=oêÜùªÊ•Ï.[V×̼ИNÁ`§¤¤‹?¾y™2guÖyW\qÕ}÷Ý÷ã?ê"™{öìñM'h € à;+ ÉôÝÑ 8@À*Y$™Øð- €€V­Zõõ×_¿öÚè¦M[žvZƒÂ… ã$%.R¤XåʧԪuZß¾wþç?ÿ™={öÞ½{ýØÚ„ €øIÀŠH2ý48´l«d‘dÚ@ü@Àgº‰¹Â̹sç¾úê¨^þÀôïßÿþûïðÁ‡žzê™aÃ^œ4iò‚ V¯^ÍýÊ}6t4@ü(`Å$™~$Ú„ X%‹$ó/þ àS哺f¦~énæÛ·o_³f‚M=]nݺ5==]ÆÔ٘ܯܧãG³@@ÀgV,@’é³ñ¡9 p€U²H2Òá €þÐÅ3322vþõà$L­C@? X±I¦‰6!€À_VÉ"Éü †ÿ#€Ć€ÂÌœGl´˜V"€ €~°b’L? mA[À*Y$™6ÿF@ ZºÍºN/Õ…@×­[·víÚÙ÷³óºo{jjª>M¯óN•ÜF«El@â_ÀŠH2ãÈé!±,`•,’ÌXLÚŽ «îi¥óçÏ?~üóÏ»à‚N­[·­QãÔªUO©[·~JÊW\qÕÀ_yå•M›6éõ„™±:Ò´@ÿ X±I¦ÿ†ˆ!€Àÿ¬’E’ù?¾C@ Zúu¼k×®Ù³g¿úê«<ðPƒgV¯~Z‘"'ƒ%K”(W¦L•fÍZëmÅСC—.]ª0“ûEkdØ €ñ/`Å$™ñ?äôX°JIf,&mGˆIý.ž4iÒ¨Q£zöìyúé§W©rz‰íнÐqúÓ7¼¡P¡î'œÐæä“kÖ«×øòË» ôˆnÔ®ä“33cr¼i4 €>°b’LŸÍAƒ¬’E’yÿ@@àè ìÞ½[1æÃ?ܪU«cŽ9ƘRÆ\`Ì•Æ4°JIæA:ü@£)°wïÞ5kÖüôÓOgu–ó磵1ýeÌncþ{À×>c6ó«Î@ ¹ZµSï¼³ß3Ï<£»œÍÖñÚ € V,@’™£N'ˆY«d‘dÆìHÒp@ØÐoá L:5%¥±ã§“1/3Á˜?ˆ1i*ÉÜjÌ2cƵO:©áµ×ÞøÐCSSSc¯Ï´@|&`Å$™>šƒ X%‹$ó þ €ÀÑHOOÿàƒž|òÉSO­qœûYaLº1ûN2fê噿s]É’N?½ÙÅw^·nýÑl¯ € !`Å$™ 1êt˜°JIfÌŽ$ Gˆ=]$ó½÷Þ:thµcg 1ëùhù3ÿ͘ÞÅ‹w©]û¬Ž/\»v]ìõ™#€ €€Ï¬X€$ÓgãCs@à «d‘d¤Ã?@8šJ2ß|óÍAƒÕ¨qZ0X2x4ûSä:÷òÀôòÀïswÑ¢ÝN9%¥M›vkÖ¬=š­ãµ@@ !¬X€$3!FN"³VÉ"Ɍّ¤á €±' $óÝwß2dHÍšõ²“Ìä}N¦>]®/“y[ñâWÔªuf‡çsNfì 9-F@ÀV,@’é¿!¢E ð?«d‘dþ†ï@8Ê3fÌ;vlݺõ s³1_³Ð˜¬CNËÜ›ý©óÙÁ`«²e›vèpq¯^½7mÚt”ÈË#€ €@ü X±Ifü9=D –¬’E’˃IÛ@bL`÷îÝsçÎ0aBJJJ0 ºó¦13ŒÉ4fOöI˜:S©¦bÌÆlvœÉII§UªÔ°{÷kî»ï¾-[¶ÄX‡i. €øOÀŠH2ý7D´þ'`•,’ÌÿÑð €GY`ß¾}ú€ùÊ•+¯¾úÚzõN/WîÌB…šƒ×3Á˜™Æl2f›1ËuËrÇÜ ^Q¤HrJÊÙ£G¿þå—_fffåòò € ÿV,@’ÿCNˆe«d‘dÆò`Òv@ØpÃÌÛnëÛ´i‹*Uj)R6<ǘQÆ|hÌZ‡iÌ|c¾vœmƒÁ&EŠ”lÚ´ÙgŸ}¾hÑ¢={öÄ^‡i1 €øLÀŠH2}6>4°JIæA:ü@£,°ÿ~}Æ|ܸqƽУÇõ§vF¥Jg¹R·)7æïÆÜjÌ… Ÿ_¼xýªU›êså<2xáÂ…›7oV z”[ÇË#€ €@ü X±Ifü9=D –¬’E’˃IÛ@bR@äúõë—/_þÜsÏ_pÁÅ‘”t¬1ÅŒÑõUÂqJ+VºtéJM›¶~óÍ7u“ ;wcÆä`Óh@ü'`Å$™þ"Z„ÿ°JIæÿhø@¨è´Ì;vlÛ¶í£>ºÿþzö¼éì³ÏnܸqÝìGƒ RR·jÕæâ‹;÷í{çÌ™_ë„LýúŽJÓØ €Ä¿€ dÆÿÓCbYÀ*Y$™±<˜´@ Vfê¡_Ê:ÙrãÆß}÷N¼Ôé—¯¿þú¤I“¦OŸ>þ|}œ\i§®™••«ý¤Ý € à?+ ÉôßÑ"øŸ€U²H2ÿGÃw €„€îH¾téRE—Ÿ}ö™bÌo¾ùfÞ¼yk×®Õ¯lnñSÂ6@ˆs+ ÉŒóñ¦{ĸ€U²H2c| €@Ì èäL%–ú­H3##C÷Ò÷œ‡óãJ@ð«€ dúu hü)`•,’Lv @@@GÀŠH2gèé)±(`•,’ÌXDÚŒ € € €@dV,@’#k!€@t¬’E’v¶‚ € € €€¬X€$ÓƒB@ /«d‘dæÅó € € €ÄŸ€ dÆßÓ#âIÀ*Y$™ñ4¸ô@@@ÐV,@’š‹Ÿ"€@Á X%‹$³`‡ƒ­#€ € € M+ ÉŒ&>ÛB¯VÉ"Éô Èò € € €Ä®€ dÆîPÒrAÀ*Y$™‰0èô@@@WÀŠH2Ù1@ÀÏVÉ"Éôó`Ñ6@@@ެ€ dY^^ ެ€U²H2,/¯† € € €€Ÿ¬X€$ÓσEÛ@À*Y$™ì € € €$Ž€ d&ÎÐÓSbQÀ*Y$™±8ˆ´@@@ȬX€$32FÖBèX%‹$3:ìl@@@?X±I¦…6 €@^VÉ"ÉÌ Šç@@@ˆ?+ ÉŒ¿!¦GÄ“€U²H2ãipé  € € €¡¬X€$34?E‚°JIfÁ[G@@@ šV,@’M|¶…^¬’E’éå@@@ˆ]+ Ɍݡ¤å$‚€U²H2aÐé# € € €®€ d²c €€Ÿ¬’E’éçÁ¢m € € €Y+ É<²¼¼Y«d‘dY^^ @@@? X±I¦Ÿ‹¶!€€U²H2Ù%@@@H+ ÉLœ¡§§Ä¢€U²H2cqi3 € € €‘ X±IfdŒ¬…ѰJIftØÙ  € € €~°b’L? m@¼¬’E’™Ï#€ € € V,@’CLˆ'«d‘dÆÓàÒ@@@B X±Ifh.~Š+`•,’Ì‚¶Ž € € €@4¬X€$3šøl ¼ X%‹$Ó+ Ë#€ € € »V,@’»CIËH«d‘d& ÓG@@@\+ ÉdÇ@? X%‹$ÓσEÛ@@@8²V,@’ydyy58²VÉ"É<²¼¼ € € €~°b’L?mC«d‘d²K € € € 8V,@’™8COOˆE«d‘dÆâ Òf@@@"°b’ÌÈY ¢#`•,’Ìè°³@@@ü `Å$™~Ú€y X%‹$3/(žG@@@ þ¬X€$3þ†˜!OVÉ"ÉŒ§Á¥/ € € €„°b’ÌÐ\ü VÀ*Y$™;l@@@h X±If4ñÙx°JI¦W@–G@@@ v¬X€$3v‡’–#VÉ"ÉL„A§ € € €¸V,@’ÉŽ~°JI¦Ÿ‹¶!€ € € pd¬X€$óÈòòj pd¬’E’ydyy5@@@ü,`Å$™~,Ú†VÉ"Éd—@@£!°ÿþ¬¬¬]»veffîÌ~ìÞ½[Ç!zòhlŽ×D@0¬X€$3L7C°JIfŒE@ ¾öíÛ§sÆ _ýõ”)S>üðÃñãÇûí·¿þúëÆrêßô@ß X±I¦oGІ!€€¬’E’É^ €GP@æÞ½{ÝsáÂ… 0ß~ûí—_~ù•W^™U©Råc=>˜ƒ•+WiÑ¢õÍ7÷Yºô÷M›6qÙÌ#…Ïë € ¦€ d†éÆb P VÉ"É,Q`£ €Ä™€>*žššºlٲѣ_ïÑãê:w\£cŽié8=ékÌ€ì¯ë¹êøãÏ­Zõ´fÍÚ=öØc¯¾úê¶miœ–g;ÝAð¹€ dú|¼h .`•,’Ìßè> €GD@iä’%Kf̘ѧϭII…ƒÁ²ŽÓÞqn7f–1KŒÙžýõ•1ã›’’Ê|•ÆÏºä’.«W¯á´Ì#2¼ €a X±If˜n,†"`•,’Ì6Š €@œ èså³fÍÒÍ}ºw¿.)éØ`°–ãôuœgùÅ˜ÕÆd³Ó˜¹ÆÌtœƒ­K–lV«Vý6mÚþòË/:™sÏž=qBw@Ð_²víÚ¥½mÙ²eóæÍ*麲þÉmÝü¼X±I¦Ÿ‹¶!€€U²H2Ù%@@àðô¦õ‰'ž¸öÚë7>7)©Z0x™1+ŒI3f¯1ûŒùoöWVö?ó‰1CƒÁc+T¨ ðSwÒÛÞÃo¯€ }Ř+V¬X´hÑĉÇ?eÊŸ¯³ôwïÞ­÷žÑo[ GÀŠH2ÃAc((«d‘dÔ@°]@âI ##ãá‡uîܵ^½6IIõ‚ÁëŒÙlÌe˜n’éþW§hê#ç/S29¹ìÈ‘#§NªsxâIƒ¾ €ñ- ó-u*æÎ;u¦bLE—Ÿþ¹.}üÒK/½öÚko½õÖ—_~©0sÕªUZF‘¦–o˜ë dÆÜÒ`JÀ*Y$™ 5út@£$žž~Ýu7Ö®R¦ÌyÆè.?g¢|nI¦ÎÒÌ4fJ0xRéÒ'?øàC¯¼òÊêÕ«RÃxY@#. prûöíÿùÏûwÞÙ¯k×®UªTÑ9öÉÉÉeÊ”)[¶l¹råO9¥úé§7ºôÒË>ùdÂ?ü ó6xxÁðb’ÌÃÁd]8ÚVÉ"É<Úà¼> €‰  $³Gk«W¯_ªÔÆÜjŒ®©¸òÀS1s¾W¼©Ï›Ow“Ìþýüë_ÿÒy;‰ D@8ÐÙ˜:‘^§\>ÿü0ŠÆ-’’ÊSƘJÆœdLEÇ©pÌ1?¾RJJ³áÇO˜0AËë}hô=nº`Å$™q3²t¸°JIf\Ž2B@ Êéé;®¿¾gݺ)ÉɹV—ÁÌ>'3'½<ð÷œÌϲ¥K—è¡ú@âš5k¢Ü`6‡ €>'® #Ožüé]wÝÓ¶íù'TãÄÏpœ{ŒyؘwŒgÌëÆü+¼½pá'œÐ´^½ݺuÓÇÏ—.]ª{ÃE°EV9V,@’y4yM8RVÉ"ÉùäÓuêÔ«RåÔB…ʃ§gßÇ|€1ƒt3ǹÖq.uœzÆ©\¹FÿþýŸyæÝÐV·Áõ´-F(ÕùñãÇ«t_tÑÅŽ“ä8³Þ}¨ÜŠ1sþù»1.|MÙ²uÎ8£©~GH³Ùè¡V,@’y(Ï €€¬’E’韡¡% €Ä´€Ž1¶nÝöÞ{ÿ¹úêë.¾¸ó)§Ô)_>¥X±K î^¨Ð … ]_¢ÄÇ{n¥JgÖ©Sç¼óÎÓ-Ë?üðÃ;wÆt¯i< 8éééJ2Ÿ~úé /¼Èq‚ÙÉÜxðUDr2L÷%™.|mrrí&MÎ!ÉôÏ®bÅ$™þZ‚‡ X%‹$óP"žA@ÈtffzúŽuëÖÏ™óîqå•ݪU«[¶lµÒ¥«–)S­víF žuóÍ·Ž5jâĉzGÌ}l#sf-@ @tNæ¤I“†Þ©Ó%Æ8ÆôϾ³ÏŽì»¹Y¦ûÏÅÆÜ]¤ÈU•*ÕkÚ´åêÕk ¤ÙlôP+ É<”ˆg@À?VÉ"ÉôÏÐÐ@â@@G:ÍR·„xòÉ'ûõ»«eË6Mšœ¥³Q£³Û·?.yøáAºœæ¬Y³¸6f 7]@„ÈÈȘ:uêÈ‘#»v½,;ÉÔuçeÀ\WÅ´’L=³×˜_é]¬Xç5š´m{ÞÚµkŠËϵb’L?mC«d‘d²K € €ÀÐi™zìÙ³gÛ¶m›7o^³f>N¸jÕŸ_z«Û=è˜z/ÌÍÊ 9/…DG@RUÿé§Ÿî¼³_RR¡@ ­1÷gß¾|×Á§eî7&-ûtÍ‚ÁZ'tz÷î×Üwß}ªÿÑi'[ÉWÀŠH2óc(@«d‘dàX°i@@@ V²²²¶lÙ¢³î ¸¯D‰’… 7×)—Æ ´@@ˆš€>c¾jÕ*Ý¸í©§žêÞ½{Û¶W¬ØªL™VÁàùŽsa±bç|û*UZ§¤4íØñâ‡þÇèÑolܸq÷îÝ$™Q£|7dÅ$™ùб €U²H2 p,Ø4 € € £¿þúëûï¿ÿØcŸqÆÙµkŸV¤HÑ`°PéÒå+W®Ñ²e›ž={2DwÒ§Ñ÷íÛ£}Œ×f[±If¼4ýB >¬’E’ÃJ/@@@h ,[¶lúôéo¾ùVïÞ}®¹æúvíÚ·isn§N].¿¼{ß¾ýüñ1cÆèlÌ;vp6f4Ç%œmY±If8h,ƒ%`•,’Ì‚¶‹ € €Ä®€Î´ÔM|ô±ñôôúÒ¹—zlßž®¯;vfffºŸ('Æôá[±I¦Lj&!€@Ž€U²H2sdø@@@¸°b’̸q:ˆ@L X%‹$3¦G“Æ#€ € € àIÀŠH2=é±0DYÀ*Y$™Qögs € € € € dàX°iÈWÀ*Y$™ùб € € €q#`Å$™q3²tÈÊÊÚ»w¯.•œ‘‘±sçÎôìÇ_RÞ®‡n§çu!e-©ë-‡Ó`«d‘d†ƒÆ2 € € €ć€ dÆÇ°Ò  \@µeáÂ…³gÏ6lØ Aƒn¿ýöîÝ»wéÒ¥möãüóÏ¿øâ‹ûôésÿý÷¿ñÆóæÍÛ°aC8a¦U²H2 | i € € €Q°b’̨ɳ!â[`×®]ß}÷Ý'Ÿ|rçw^yå•Íš5«^½z… Šd?Ž=öØR¥JsÎ9—\rÉ!CfΜ¹råJ™™¯‰U²H2óc@@@âFÀŠH2ãfdé+ ;vðàÁ:ó /¼ôÒK»uëvõÕWßpà 7Þxãõ×_íµ×^pÁíÛ·¿ì²Ënºé¦×_ý·ß~[·n>¢åVÉ"É aÅ@@@ˆ3+ ÉŒ³ñ¥;”À¦M›صk×víÚµjÕêÖ[o}î¹çFýÅ_L›6Mçj¾ûî»=zôйšÕªU+T¨Î?þøÇÔÉœ!Úl•,’ÌVü@@@8°b’Ì8_ºƒ@A lÛ¶íå—_0`À]wÝuÇw<ûì³ï½÷ÞäÉ“•Uê¡ëg*ÏÔ›7ß|sóæÍ‹/~ùå—>|Ò¤IºPˆ6[%‹$3„?B@@@ άX€$3ÎÆ—î PPºèåúõëuõKEš 'usU›={öèy=ôr}¯-_¾\yfÅŠSRR:vìØ¿ÿ7†h³U²H2CXñ#@@@âLÀŠH2ãl|é% ‘§¥¥mÙ²E‰e^mPýÙ¼yóSO=UµjÕ† ¶lÙR·ÒMÌóZ^Ï[%‹$3„?B@@@ άX€$3ÎÆ—î P€ 3õÝ€;vŒ9²E‹7>í´Ó®»îºµk׆XÅ*Y$™!¬ø € € €q&`Å$™q6¾t? ìß¿?==ýÕW_Õ}”dÖ¯__÷4'ÉôóÑ6@@@ P€$³ñÙ4 . ‹g*·:th¥J•5jÔ¾}û¿ÿýï\'3Á÷ º € € €@^$™yÉð<U©«h.\¸ðþûï?î¸ãš4irÙe—=òÈ#ºrfˆíZ%kĈß}ÿÝšµkþØûGÖþ¬|¿öíß§¯¯âGîºùnâÀöýwßþÿî×Wˆ—ÍëGÚÜ/æ÷y½ZèçÝF†¹‰œÅ"ÆÔæ"ÀŒXR}Ïi³§oB£åõÓ0] ͈¼^3ÄóH !ʘjdˆ.äõ#·‘šDžFÍÉë5C?eLuÐS×Ü…Cw!¯ŸF°[jsQÆ<œ‚¤VÉ‹+ôó`º’úoèWÎõ§ª ì™n#s}Á|ŸŒ Lu0ߎº@’Òˆ2f„ûIöÁ†Öõ4|.È¡Pá<¦V‰S+zêš»p89t·‘^71¦6¦ÛHý÷ÐöçûŒ×®EÓÕ8œƒ"½‚§>º˜ùºåº€§ å,œëK…~Òmd©û9>áÙøLûIÄs\]‹`Žk•ˆ÷L¯SÀ½æõS·‘á™»dĘÚ\fæîÌŸçýüÑÇ5JiT¢D >]ž×ñ<YÝ»w¿öÚk hÛ¶í1ÇÓ½{÷±cÇΘ1####ĆL2‹/öÈ3ŒûbÜŒù3l\°hË¢Ð_‹·,^¾mùêí«÷îÛb¹þh×Þ]+ÓVjõЛ°~ºjûª-[Òv¥©êæú²¹>ùGÖ™{27îØh½Z¾ÿü}ëïi»ÓvïÝíéðO[3·nÚ¹iIê’|7‘³ÀÒÔ¥ÒX¿c½~›äÚ‹OnÛµMë.Û¶,çÕòýfqêbm+5#U2!^ùÐIcç;Wn[™ï&¬´ŠVôŠ©æ©‘jªl½`ˆŠB b9´ý¡Ÿ¾¶¥u5!^ßú‘ZíA÷4´SIC;˜v3ëóý§vfÉhÇݪ)£‰£é£Iä Sšªš°¾Z8ßKCÅA««PäÛ£œ–m]¶yçf5ÕÓDж„¹açO“NÕòî÷4vj›†[íTksZžï7‡_0½Îq·`fìɈ `F0ǵ'G0Ç%¯9î¹`n°`jìÜ‚¹t«·9îLOû‰;ÇeÁ—¿æ¸öêpæZÎ2ZEs<‚‚©9AÁ”FS³Æ-˜žæxÖ¾,·`z㚘*˜Z7‚‚©9¾:mu¾SûÀTñT÷"(˜Z%‚‚©æEP0EáÌ[Î÷9Sѳ×åû[05èLí`ž&ÛíÌÚ¥½LmKÓÇkÁ”¤æ]” ¦šêi"¨ÜiÏ‹§I'L-ÿÿsÜcÁÔp«°{»(LýZÔXGpP¤ý*úE:äð4vLíW:”òZ0Õ6¶y-˜‡P¤½:œÂ•³Œ ¦F<úï"=LÍ÷]¤§‚™ó.ÒÓ¤Ë)˜’t æ/ë~ùdæ'#ÞQ÷ôº$™ùþvc8RJ,|ùå—7hРpáÂ}úôùꫯ/^¬¬2Ä&¬$óþ'îóé˜És'·ú»Öýúë§õ?ýºñWý&Ú³/ÏÛ©çµi?ü¶ù7­þãúCoåÀŸê—Ѻôuú5äé¹~#ïøcǪ´U¾T8ßÏÛ8OÛÒ1ª§ã½GÐû&ýºœ»an8[q—ùyÃÏ¿núU¿J}½dò£CŸû®=»¶ïÚ®± ¿kî’ZE+juOTóÔH5U s‹B…@t }hB?£¶i4Ž07§Å4Ðn º§wÊÚ–;h7 [î’Ú™%£;ü‰ %µ3kúhyÀ\ÿ£&©ÆN64Ý¡?UYPqÐêáoN½ÓحپFMÕŸ˜}ͼžÙ“µçÏ÷’i+ç®÷0éþ»õsÝ9®WÈëÅ}^mÓp«jmøc'íZ‡S0ÿœãaLmÎ-˜é»Ó=í'nÁŒ`ŽkOÖ `jŽGP05Ç#(˜šwª ZWs<ü‚©9îL¯sÜ-˜ÌqùkŽkõðÇN;ªVÑ `jsú=rè®úÍñ ¦vc·`zšãzwæL¯s\3TSëjÇÝêLÍqMØð縦§{PAÁÔ*L­AÁ…[0Ãïš»dNÁôôfÙ-˜ô ¦v°Ž0µ3k—öZ05q4}¼LMRÍ»ˆ ¦×ƒ"• ÷ (ü#L:•;÷ ÈÓ˜f„{PAÁÔp«^ ¦vKý‰NÁÔ×XGpP¤ýJÃÁÿÿƒ¢M‘é#:Ss\‡R^ ¦Ú¦C)¯óσ¢è¾‹TÁÔˆ«©ž~±ºE‡ó.ÒSÁÔ¬qßEz*˜9ï"#+˜šãÌu?ÎY9ç/ÞyöõgkׯM’yàQß# º½øúõë—/_þá‡>úè£ÆCw_µjUjjjè[–ïÚµkÖ¬Y&LèÒ¥‹bLݸü¢‹.ÒºK—.Õçͳ²B&™… jѹE—ÛºôУ×à^½‡ô¶¿†öîý\ïÞ¯ôîýVïÞã{÷Ø÷/xfö3úó–×ÁÕãÐCµú­ŸÜÚûãÞa~=ùõ“-üèë•_‡ÿKA¿­ôWÂßSsÞ›an%g±{?¿WÛZ·}§ƒ±-™[>_úùÛ¿¼Ýor¿œ—Ê÷›{>½ç¡iúi”§w[.û—Ë¿|xÚæ ¸åã[òÝ»Àmnõ㨉‹'*ëìt¬²!}Ãüó5van(g1­¢µº'L5OTSÕàœ— ýD!i˧…ß5wIák4ŽÐ[9ð§h ·]Cþå ]K;˜v³_-œïµ3k—ÖŽþ‘­¦Œ¶¥é£I>¦¦§&©ÆN6ü®¹Kª,¨8huŠp:å.sßÔûÞ_𾚚¹7ܳ…Ý÷#k·¯Ë“î[ZRËk[Z×Ó»WµMívªµáoNÚµ§`jÇ¿`j”Ý‚¹póÂð ¦ö(·`F0ǵ'kŽGP05ǽÌ»?½[s<‚‚©9®Ê uõ áLÍq·`zãnÁŒ`ŽË_s\«‡?Ç5ïT05Ç#(˜Úœ~D0Ç#(˜š5nÁ Ž«afÙÓë× UeÐ׎þ»W·`jŽ?5ë©ðç¸[05Ç#(˜Z%‚‚©æEP0EáÌð»æ.éL „†#ü½Å-˜ô ¦v°Ž0µ3k—öZ05q4}¼LMRMÕˆ ¦×ƒ"• ÷ (ü#L:·`ªôy=ÂtŠ"(˜nµÓkÁÔ®¥_"Ñ)˜šã늴_i¸#˜ãîA‘"8(Ò!‡×‚©9®Ã¯SËGP0Õ6mËkÁŒþ»HL¸šþAÑyé©`jÖ¸ï"=Ìœw‘¡ æÎ;uº~øaüøñoþõxâ¥'ú=ѯïã}oróMÜÔõŽ®¯íXºbi’Ìðͱ$q# äpÞ¼yúX·ÎЬX±âñ‡ñhÕªÕìÙ³—-[¶gO¨ó…ÒÒÒ† öÀÔ¬YóØc=ï¼óž|òÉ™3gê,ÍÐ1¦ÌL2MÀSù˜bµ‹¯_¼„.‘rÈW“%:”(Ñ£D‰~%J]1ç¥òý¦Ê³Uh¤7 úã¾WÌÿðï&ÿnR÷ÅºÇ =.ß ¹ ”~¼ô͟ܬßé3VÎsúKß’-K¦þ>µÅ¨an(g1­¢µº'L5OTSÕàœ— ýD!ÿïð»æ.)| BÃz+þT­áÖ kèÃߢ´kiÓnvà«…ó½vfíÒÚ±ÃÿÛ«¦Œ&ަ&Qø˜šžš¤šªš°áwÍ]ReAÅA««P„Ó)w™:/ÖÑq¾šª}‡¹E÷,»›ˆ¥ü“åÃß––Ôò­«óôÂ?YEmÓp«jmø›“ƒv­Ã)˜Ú±Ã/˜e·`~µò«ð ¦ö(·`F0ǵ'kŽGP05ǽ̪ÏVÕ `jŽ«2h]½BøSsÜ-˜^ç¸[0#˜ãò××êáÏqÍLÍñ ¦æ¸~„9ãrÓ `jÖ¸3ü9®-nÎØìL¯s\3T•As\;vøsÜ-˜šãç9/ü9îLÍñ ¦V‰ `ªyLQ¸3ü®¹KºS¡áÈÙ òýÆ-˜ô ¦v°Ž0µ3k—öZ05q4}¼LMRMÕˆ ¦×ƒ"• ÷ (ü#L:·`ªôy=ÂtŠ"(˜nµÓkÁÔ®¥_"Ñ)˜šã늴_ÎA‘"8(Ò!‡×‚©9®Ã¯SËGP0Õ6¶y-˜ð.rLÁ¼‹ôT05kÜw‘ž fλÈÐsÓ¦M:ñiôèÑ·ÝvÛ•=ÎêxVù³Ë'Ÿ™\2¥¤Þþ«S¬hõ¢b’Ì|»±ñ' ðpÁ‚ß|ó.Y©ˆ×:ŒG×®]õw“•+WîÝ›û…(umLýô§Ÿ~êÛ·o·nÝ6lX§N[n¹åƒ>øí·ßB矮üIf )P¹IåÚík׿¸~£Ë¥\‘b]•’Ò;%¥JÊ?SRþ•ÒìÕfßîÜç“>|*Mç±_ûÁµZýÌ—ÏL‘æW¯zø~„þ þy}zç¢Ï;ÌÛ0ïŸ3þæVrëøFÇñ ÇëB%ž®y¥_"cç}rÖ“­FµÊy©|¿iûzÛKß¹tà´ž‚>wßÿîeï^vá›êh3ß ¹ œýÊÙÚ–Îvø~Ý÷áÏAýSï€f¯ž}͸kÂÜPÎbZE+juO˜jž©¦ªÁ9/ú!ˆB ïþúnø]s—¾¶¥Ðp„ÞÊ?Õ@k¸5衬ÆÈA»–v0íf¾Z8ßkgÖ.­;ü?+kÊhâhúh…©é©Iª©ª kµ?ߪ,¨8huŠp:å.sÑ› ûf˜šþ.ÍñÔÌT]#H§I4Ù<ümiI-¯!кz…ðSµMívªµáoNÚµ§`jÇ¿`j”Ý‚ùýÚïÃ/˜Ú£Ü‚Áמ¬9AÁÔ÷\0G·Õ `jŽ«2hݶ£Û†_05ÇÝ‚éuŽ»3‚9.Íq­þ×”TÁÔ `jŽë÷H¾“ÚZ@s<‚‚©YãÌð縶«ë†¹Óë× UÁÔ׎þw ¦æx¯{…?ÇÝ‚©9AÁÔ*L5/‚‚) ·`†ß5wI·`j 4ÖÎâŸnÁÔ GP0µƒEp„©Y»´×‚©miúx-˜š¤šªL¯E*AîAQøG˜*t*wîA‘×#L÷ (‚‚©áV;½LíZú%‚©9®±Žà HûÕáé0 ‚ƒ"rx-˜šã:¼ñZ0µ¼¥¼LµM‡m^ f¼‹ü8¢w‘ik~\ûãÝÜ]â®Eï(jz;¦WaÓëDÓ«ŒéU!ûëÓëXÓ«ˆée ßV¸ÜCå*=R©Á‹ ´'»ï"=LÍ÷]¤§‚™ó.2tÁܶm›Îtúä“OüqÅî£Ç­=ZôhÑ´[S½ëotY£:ëToQ½Ø ÅH2Cü^ãGÄ«€®Y­?y¬Y³fÊ”)#FŒxá0ï¾ûî† ¶oßž×§Ëc>ýôÓýû÷/[¶¬îW~à 7 :TÛU>™ïÙ˜®ÿIfÑbEï|Ï¿?ø÷û_¿ÿÅo_L_<=—¯¥Ó§ÿ>}úò?¿túÇ7k¿Ñµz›œ3èé¤ë ­þÕŠ¯¦¯˜旮߲|ër]{'ü÷#ÚâŸÞÙ½]øs+9‹é€J—:×ý^ ¦&©¦jÄÓëA‘J{Päi"¸S¥ÏëfÎA‘ׂ©áV;½Lí–ú%‚©9®±Žà HûÕáé·OE:äˆNÁÔ~¥C)¯SmÓa›×‚ï"õ+xGæŽÕW?=ú™z^­M@µÂ¦JS¥©r±©r©ÒÓT9×T9ÓT©dª˜²g–ív_·Ûž¼í“_>ÑžAÁÔ¬qßEz*˜9ï"CLe:ÍIïýõ±M}ÒÜ},Û¸lβ9³~Ÿ¥wýS~2j¨¡ÿZ³nM’ÌðX¸P•П<fê´Ì÷ßÿÃx|þùç›7oÞ±c‡^ÓòÑÙ˜úPùܹscöìÙó¤“N*_¾üßþö·W^yå»ï¾³ñÏ“LÝ»|àSßùü/æ}1wÝ\]û7ô—N!ÐU¹ô›ËÓ¯W·1º¦ŠŽs´º®öz+þTÛÒeuœãéÍÝ{ÿб¢Žl|©p¾×!´¶åõzì:Â×E¨tMi}²#œ­¸Ëh[ºµ~yéà*Äxåú#N¦uuþætçÝ&uÓŽM:\Éõ5s}Rì»÷ìÞ±{‡Æ.üm¹Kj­¨Õ=uPÍS#ÕT58ü-ŠB º¦w®½ñ¤Ú¦!кŽð7§ÖpkÐ=½¹Ó¶´kió´-·UÚ™µKkÇ"hImKÓG“(|LMOMR§ 4¹Â* Ú–VW¡sÑæEºn˜šêi?Ù›µW˜º*”§m©UZÞãz…;†õ#µMívªµáwMÛÒ®u8S;vøS£ìLM"Oû‰[0#˜ãÚ“5Ç#(˜šã^ ¦&0#(˜;U­ë©>ka·`zãnÁŒ`ŽË_s\«‡?vÚK5ÖÞ)À{ÁÔæô{ÄÚÏóý§æxS³Æ-˜Þæø¾?ç¸f«×9®ª‚©uµcçÛ£œÜ‚©9®Iþw ¦V‰ `j­èµ`j• ¦(Ü‚~×Ü%ÿW0÷y.˜ô ¦v°Ž0ݳô½LMM¯S“TS5â‚éõ H%È=(òZÁTôTú­Z×>—õ~¨÷—ó¿üeý/©©ÂôÔAÍ÷]¤§‚©YãyÚ–û+ïÀw‘?®þqÜôq/Œy¡Ný:$™9‡|ƒ@B è|H=t#…‡óÈÌÌÔÙ˜¹ž©ëg>üÎ;ï,W®œbÌ^½zÝwß} 6o*ä _ûÀ$S%køˆás¾›³bÍŠÌ?2õg|¿t /OWñÊi˜!ÜuóÝÄ hýØëß”µ-}eíË:ð¥Âü~ŸŽãþkÇÈ9½Èë·‘anÂ]L¿¹Ô»~© :„ˆsïþ½j§×Þ¹˜j­§Þia­â®›Z®Ïk5RMõ´9WÃë~â6@Cðçê;èŽx®]ñ¤z§ÌS×Ü…µ3G€é6R½ó´ES› Ñ‘¼~ä®ëmsY‘Ïq¯û‰Û0wŽ{íàÿczÜO\¼¸B<¯æE‚™]0=½ýQÜ]Ëëp1ÝuCt$×¹˜žö“?öý!È ¦6§uõ ž¶èÌ\ÛâIÄӆ܅£_0½î'n¯#(˜êš;â!Ürý‘0£_0ÕAOÃçÎS55×.„xR«D0ÇÕ¼0ÝÝòp fˆŽäú#·‘^«JÄsüpмNÓk×ÜÊ]7W±O ÓóØeL­âeóú‘;ǽÌvK5Àñ4ã§`j¬ÕÎ?„ñ~'g™ˆç¸:Á~ÁÔÞÁžéŽxd3¯}/Äója˜L½Mž4i’Þq_Úµk‘bE ÓÐ_3ÁÏLp• n2Á-&˜j‚Mp½ þÇû‹\Yò¸Ò5kÕüì‹Ï.Y¸#c‡š¢#¹þÈÅôTU´°@ÔÁ\_0ô“L€úãÏ?~ðѺ>Ifh7~Ѝ¨*«œV,@’[ÃGkð­€Î·üå—_¦Nzã7¶iÓ&%%åÔSOmÛ¶­²G÷¾dÉ’Õ¹=tã¡ÐŸ·JI¦ow† € € }<¼OŸÛÎ8£E¥Jçs™1ÉÈ#ÉÔYšYŽóURRµÒ¥«Ýyç]Ï<óÌŠ+¢ÐÈ#¸ + É<‚¶¼‰,°}ûö·ß~{ðàÁ:Óqœ5j´k×î–[nùòË/u÷Ÿ9sæè¿‡>tŽÐ9·JIf"ïcô@@@@IfÏž½ë×?«\¹ó¹Î˜¡Ædæ‘dþyf¦ãÌ.T¨NéÒµn½µïã?¾lÙ²Ø2´b’ÌØ>Z‹€o¶mÛ¦˜ñ®»îª\¹²’ÌJ•*5nܸS§NºÑn©–×ãÃ?LOOÑ)«d‘d†°âG € € €q/°cÇÿº¼J•ó§“ãÜoLº1ûr 3õÑòŽ3%)é”Ò¥O¹÷ÞzoΧËã~¡ƒ ŽÀ† c¶jÕªT©R@  *T¨H‘"%óx›ý8ÿüóCWQ’ÌpðY@@@ A233Ÿxâ‰k¯½¾qãs“’ªƒ—³Á˜]¹ÝñGÏÿlÌ«Æ[¦Lò /¼ðñÇë"o±eÅœ“[ÃGkð­€îé3lذÛo¿ý /lýPªú¡¥î¼óNE !:e•,ÎÉ aÅ@@@â^@—h{ýõ×xàÁ¶m/NJ* ¶Õ=}ŒùÕ˜íÙy¦îò£ó3u+ómÆ|cÌÀƒÅŠ•©R¥ê;ï¼£k¾é•±EdÅ$™±5|´ß ìÛ·Oa¦bÉU«VéÂa>Ö¯_Ï|;¦4 @@@ÀozýÛo¿}ñÅ·Ürk‘"Å ®\<`Ì÷ƬÈÎ0u~¦NÅœé8ƒMJ”hT­ZíæÍ[ÍŸ¿ --mïÞ½~ëQèöd†öá§ à+«dqN¦¯F‡Æ € € €DY@ç­Y³fîܹ>øÐÉ'W.W®V¡B̓ÁkgÌôì“3ó‘1c“’z-Z-9¹N³f­¯¸¢ÛŠ+u>çþýû£ÜàÃÜœ pNæaz²:U«d‘dUm^@@@Àÿ:-SWËüé§¹cÆŒ8ðåËW/Q¢b PÑ}lLecÊS69¹Æi§¥\zéUÓ¦}ùÓO?éýµÿ»vh ­X€$óP"žAÿX%‹$Ó?CCK@@@ J@_¾|ù´iÓ^zé¥ÚµO«Pá$ÝV·xñâŲú¦D‰5jÔlÑ¢uïÞ·,Xð›Nã }m·‚êH¾Ûµb’Ì|ÅX PÀ*Y$™8l@@@À'ú¸NËܺu«îUñå—Ó?øàçžzjÈ!ƒ²Ï=÷ÜðáÃ?üðÃo¿ýN—Çܹsg,~®Ü¥¶b’LŸì4r°JIf®J<‰ € € ˜ºl¦"͵k×~öÙgãÇÿOöãË/¿ÔmÊrê§zÄ´Œ dÆôhÒxâ^À*Y$™q?ât@@@ |œ¹gÏžôôô¥K—êžæó³+V¬X½zõöíÛõS=Â5.iÅ$™>#š„9VÉ"ÉÌ‘á@@@â^ÀŠH2ã~Äé 1-`•,’̘M € € €€'+ Éô¤Ç e«d‘dFÙŸÍ!€ € € P€V,@’Y€cÁ¦@ _«d‘dæ+Æ € € €Ä€ dÆÍÈÒâRÀ*Y$™q9Êt @@@\¬X€$3W%žDŸX%‹$Ó'ãB3@@@ˆ‚€ dFÁœM €@ÄVÉ"ÉŒX’@@@ˆ9+ ÉŒ¹¤Á$”€U²H2jôé, € €D_`ÿþýz#¶{÷Œ=ve?öîÝ«ŸêýV±Å„°b’Ì„Ýè81!`•,’̘5‰ € €±(°oß>e•Û¶mûþûïgΜùÎ;ïŒ3æõ×ßÐ×äÉ“§M›¶xñâ´´´ÌÌÌXìmŽQ+ ÉŒÑq¤Ù$ˆ€U²H2dÜé& € €D_@1¦NÅ\¶lÙˆ#üñ.].íØñ¼víÚ·oßñÎ;û 8p„ «W¯VÔÉi™Ñ„Ý¢ d&ìž@Lj «d‘dÆÄ¨ÑH@@ˆ-½óR†9kÖìaÃ^4è‘N:·kwa:kÔèxÊ)çW¯~þÙgwhݺýu×ÝøÀþûß/¯Y³655UçpÆV7im, X±If,"mF q¬’E’™8COO@@@ jºæöíÛ‡©Y³–§ŸžR²äñE‹–.\¸e¡B’’.JJº°hÑjÅŠ•NN>©J•—\ré?ü°téRõ²¡„°b’Ì„Ýè81!`•,’̘5‰ € €1$••µdÉ’Ÿ~úiÀ€ªW¯S±b½`°‰ã´pœÛçoÆÜgLÿ`°s0xn±b Ž;®Ê™g¶~ã1'NÒ-b¨›45F¬X€$3FÇ‘f# VÉ"ÉLq§› € € 5Ý–ü…^èׯ_Ó¦­ :>)©™1Œ™eÌVcvf¥³Ü˜…ÀÃII)'œPïÌ3›uérÙºuë¸`fÔ†)a7dÅ$™ »'ÐqbBÀ*Y$™11j4@@bH@§V<¸G 4 +ƒçeǘ¿³Ç˜ÿfíÏN57:ÎóÁ`»’%ϬU«~Û¶–/_®·l„™14Ö±ØT+ ÉŒÅA¤Í$Ž€U²H2gèé) € €DA@׺Խ{t‹ŸääòÅ‹·3¦Ÿ1ÃŒÙnÌŘn˜™eŒ¾~2æmÇy@§nV©RuÚ´iºZffffÚÉ&VÀŠH2vO ãÄ„€U²H2cbÔh$ € €ÄŠ€’Ì-[¶´oß±X±’º¿1ÿ0f´1»Ž1Ý0Sÿ]bÌgÆ5fhRRÏã/_·îi?üðƒÎçÔ»¶£ÝH^?‘¬X€$3‘wúŽ€ÿ¬’E’éÿ!£… € € [:©Roµ мykÇ)æ8)ÙWËœdÌNcög‡™YÆ,2æÇù{0X§T©Ú-[žÛ­ÛÕëÖ­S[¥µ1'`Å$™17‚4„°JIfB>E@@(èm×ĉGŽÙ­[÷äär'œÐÐqúëÜKÇ™ê8³Œ™iÌôìló¥"Eºw\ZµÝrËmƒ=²uëÖ(4M$¸€ d&øþ@÷ð¹€U²H2}>^4@@bN@÷ýÑ¥27mÚôò˯\xáEgŸÝ2)©œ1’’R’’Îõ9Ù˜òeÊT¯U«~×®WÍ™óÍÂ…‹öìÙs¥Á1'`Å$™17‚4„°JIfB>E@ˆ²²²t•‘‘±qãÆõë×ë–+þ|è¿+×®]«'ÓÓÓµÀÞ½{#Þ+"€@< ¨(–üøão½õ¶Ë/¿¼R¥JeË–?ñÄ'žxê‰'V=ñÄÊ¥K—+S¦Ìé§7lßþ¼~ýîVAÙ²e -§}À·}±b’Lߎ C X%‹$“½@G@éå?þøá‡ã¯¹æúÎ/­]»î)§T¯^½fíÚuÎ=·ní1rä¨_ýuÍš5„™áx²  "°sçNý¥cáÂ…ï½÷Þ¨Q¯ÝqG¿[n¹µoß~wßý·'žxâ…^øì³Ï–.]ª»üèÏ%Ę ²Wx7­X€$³ÀG„ €@«d‘d†°âG € €€/(œTÔ0eÊ”W^yµmÛóš4iZ¼x餤c >®X±R§žZ¿cÇ ÿùÏǧOŸ¾`ÁÝéƒ8‚=\}ÌÜý¤ù×_ýé§Ÿ2dàÀ>úèã?>vìØqãÆé/ :Ù›¿€°ÃDSÀŠH2£‰Ï¶@À«€U²H2½²< €$”€bLLõý÷ß?üðÃ7©[·I™2MN8¡Y0ØÓqnuœ[^Å‹_˜œÜ ví3Ï9§EÏž½æÌ™£O‰’K$Ô~Bg- ‚–––ššº|ùòe˖鿪:SÒÔI›úÛ‡ÒÎЯÀO8‚V,@’ymy)8âVÉ"É<â¼  €Ä“€òŘ:óÚk¯ þ½ó“¢XÛvÍì.A2HPQ1bœPLA ¨ˆ¨˜sÎ9áQQ1˜1sΘõ¨(* bŽˆÅŒÓ÷ßgû?ýõ×3; °»ÌÎÞ}yaoOOuÕÝõN½õÔ[UÙl›ŠŠå+*z…pzç‡pnÿÈfVT,Ù¤I—æÍ[­½ö:£G&2Óm;Ê©X H@åD % ¨d–Ó˵,(?©Ÿ,•Ìò{Å–H€$ Z$0cÆŒáÃ/>øàC×\³O6»X6»~6{a6;*„gBÂóœd2·e³çWVhÒd±%—\ýè£O9òRâ¯j1&% H@¨-)Y@%³¶ÀšŽ$PR?Y*™uÙ4%  H@(Ì÷üþû¶ß~ÐB -Ú¶íÊÙì†Ùìá!|Âï!üO⿇ðs&sQEÅZíÚ­´ÒJkm½õvìT,…$  ””, ’Yfï×âH Ì¤~²T2ËìýZ H@€j‹2&™S§NÝj«þ;ÏߪÕ:ÙìîÙìÐ~ ᄌ‰¤‰°9#“¹¶¢b»V­z/±ÄJm´é'Ÿ|ÂÌt×¾«­×a:€$P[R²€Jfm5 H .¤~²T2ë²iJ@€$PXè’-9ÆŽ»úêkd2ÙLfǨžQž’1ãàÌWC¸&„#**:uëÖí7Þ`‚¹ûþ”AM°€ÊŒ@JPÉ,³÷kq$PfR?Y*™eö~-Ž$  H@µE%“-†ÇŒ³êª«†ÿ»„ðDÈ•5)™ãC¸9„ãC˜wÁ?~üôéÓU2këu˜Ž$  Ô”, ’Y[`MG¨ ©Ÿ,•̺€lš€$  ”¼¦·ß~ûé§Ÿ^yå•«•̽Bx)„I!üù§–Ç1™o…põžæQ2_y啯¾úÊÌË &X H@eF % ¨d–Ùûµ8(3©Ÿ,•Ì2{¿G€$ Ú"€×ôÞ{ï=÷ÜsÄdfþsìÂÓ!¼^sLæ!ÜÂI™]>nܸiÓ¦©dÖÖë0 H@¨-)Y@%³¶ÀšŽ$PR?Y*™uÙ4%  H@(ýõ ]~ðÁë­·~“&Í**ú„0,„[Cø­†˜ÌGB8®ªjPûö‹®¸â*¨ ¿þú+‰” ‹  H@åD % ¨d–Ó˵,(?©Ÿ,•Ìò{Å–H€$ Z!À¶ã¿ýöÛ—_~Ù§ÏæmÛ¶oÖlý aDßU‹™‡ÀUÿÇÞå¿V/’¹k³f}Zh¹uÖÙàÓO?UƬ•a"‡&C3–_~ùåçŸþ±úøé§Ÿ8ÇYuöÏ?ÿl<4,©êŽ@JPɬ;Ô¦, Ì9ÔO–Jæœ#5 H@€Ê•² a™GqäÆo²Øbd2½2™Á!{9&„i!|Âô¾yå£Ùµ<„Õ;uê¹õÖ=ôð¯¿þ-´\ÉX. Ô¬fòäÉ/½4ö¶Ûn¿þú.½ôòK.¹Œ“›nºùé§Ÿyçw ¨ ì¦Ù ¤d•ÌFX,²ÔO–JfzwfU€$ ú'@$Øu×]7dÈ 6èÉd3™EC8!„ B˜§!|P½[–BÏš.¹ä’gŸ}ö-·ÜB YýçÖ'J Axë­·î»ï¾‹/¾x»í¶ßh£MzôXyÙeWÜpÃ7ß|‹SO=í3f ‘™ ºŒf^¥@ % ¨d–ÂK1@MR?Y*™5òº$  H@€²É믿Îæ§œrÊ:묳üòëVVœ¹YU«—Ì7?0“ÍöZ|ñ z÷Þx¿ýö{â‰'Þ|óMœ.J@ÅÀÊXWvôèÑC‡Ýyçûöí¿ì²/¶ØF;oÞ©S¿ÅÛ¸{÷Þ믿åŽ;îxä‘G>úè£/¾ø"‹Ð“²÷H@1Z%†Ø¦L™òØcÝ}÷=§œrê~ûí¿à‚ µlÙR%3¦ä‰$P‚T2Kð¥˜% H@€J™š «övøá‡0°yóöÙl‹ZWÿ×*„V­ªªZo¼qŸ“O>ù†nøê«¯ˆä,å™7 ”L ýÿøãïÝ»w»víš7ïÜ´éšMšl˜Íî‘ÍîÅ 6o¾h‹-–YfÆ.¹ä–}(©"˜ ”>dÌ/¾øâ•W^¡©:øàƒWYeõ%–XjžyZ¨d–þ»3‡häT2y°ø€$  Ì*VËäxùå—¯¸âŠÓO?½wï ×Zkíå—_¾G+¬°ÂJ+­´æš=×_¿÷QG}ã7>õÔSìNâ ™³ Ùû',ueêÔ©  0`ÙeשªêÎz³˜Ù, Ï áüŠŠ#+*öÏd6 ¡[çÎ+ì¸ãÎGqÄG}Ä1ÌÆÉÍRK`–0¸6cÆŒ7ßœxß}÷_qÅUƒ î×o›…^µcÇeš4QÉœ%–Þ, Ì*™sº”€$  H á`,‘c?üðÇ~8iÒ¤;3Å0ï½÷ÞGy„—O>ùäÛo¿å|­†_VK z"€Éê >øà^{íÕ´iÓÊÊMC85„Bø<„ŸB˜Qý'?†ð0KÔ²åVÓ¦­»uëvÿý÷O˜0½Íë)£>F –À_ýÅŒò÷ßÿä“OYh¡Eæ›oá-æoÞ|ál¶O&³IŒÉl°ïÖŒK ±PÉl,oÚrJ@€$PÐ3Q, !cåL–{þùç‰Õ¤‡ˆÂéŒò:àm’eNƒÂˆn¾ùævØ1„ʶadU˘ÿBôßß!ðßK! áàZvîûìv¼òÊWV.ÍùC>1“°Ì¿2™*+—mß~©=öØ{È!„C7Ìr›k Ô†ØX„á€êÙ³ cVVö¨¨Ø9„Bø"„ !<Â**™õô2|Œ$0»T2g—œß“€$  H@€j“ÑbìE¾ÕVÛ,»lßLf½LæÚÿ;¯<ŠÆüß3™W++×mÛvÍsÌ1o¿ývmæÆ´$P^˜AÀÊ'„.oºé¦mÚ´iÖ +;#“¹¾Úʈ|~S%³¼^¸¥‘@ÙPÉ,ÛWkÁ$  H@€$Р dž|òÉ[lÑé¥û…°qõ^?,ÿ+]&ΣÕ2_­¨Ø°M›u Øé¨£ŽRÉlPoÛÌÖ7Bùæ›o0“ž={†ÿÛ„pS‡ð{ÿVɬï÷áó$ Ù% ’9»äüž$  H@€$P›˜]~î¹çî²Ën«¬Ò'›í‘É\Â7Õ2K®˜‰öÂR™Ïf³+´m»ÜÞ{ïÆg8»¼6_†i•Öpfº &¬±ÆÕJæ!ÜÂó!ü¡’YvoÛI œ ¨d–óÛµl€$  H@h8Ø6ëÊ+¯<âˆ#×]—u2Ûg³§‡ðyµbIfJÌDÆü–ɰÙl—öíç;öØã.½ôÒO>ù¤á”ÕœJ ¾ üþûïüñرcW[mµj%s·ê]~^áO•Ìú~>O˜*™sϯJ@€$  H@µF€¾É]wÝuÎ9çöë׿ªªmEÅA!<¤êíË ÂŒÄL¦ÁþÂ!ü+“¹¤ªªK—. wÞùwÜqÇ_|QkY1! ”8&“ÙåÙl6“!&ónìÈÙåe÷ª-Êœ€Jf™¿`‹' H@€$ B€Iˆ«|ùå—;ìðæÍ[VU­˜ÉlÉœÂ[!Lc³òê-Ë¿aJ&sY6Û·ªªWëÖ–Zjé^óÙgŸÒÙ@ j6%0°q96Âó 7ܤY³••›„pZ×V ¸Næ\x#>R˜=*™³ÇÍoI@€$  H@µK¥eÚ´iï¾û.1–«®ºz×®=›6íUQAäØuÕ úŸùtõɇ5i²Z‡,ø×kë­·™4iÒ·ß~ËäÙÚÍ©I Ì`#lú3hÐN‹-¶dûö½CØ¥ZÌüјfþ@«´lÙrß}÷7nš'›•‹# ”•Ì2x‰A€$  H@åAå„}^{íµë¯¿~àÀ;uêÖ¼ùüÙìB™L·LfÉLf‰aÁfͺ¶mÛuõÕ×»îºëxàÁüQÉ¥<*€¥¨S üòË/\pÁþûï¿Újëe2óf2ìc~C÷„ðB÷†°²Jf¾—€最Jæœ34 H@€$  H ¶°šßG}ôôÓOuÔÑ+¯¼êâ‹/Ù¹ó|óÎÛ©]»ÎüÇIÇŽYdñ=VÚvÛíŸ|ò)dÏß~û­¶žn:(oËM7Ý4tèо}ûµlÙ¶yóB83„á!Ü•!,§’YÞÀÒI  ¨d–ÁK´€$  H@('Ì%2“¥/ßxãͧžzzĈguÖ±Ç{Ì1Ç\xá…—]vÙC=ôæ›o¾ÿþû˜¡ÌiVNÅ·,¨; K1°=Ö¨QW÷ï¿Í:ëô®ªêBÇL†Èç®!4Sɬ;ø¦, Ô •ÌZÁh"€$  H@@í@Ìœ>}:Ëf²/ùµ×^Ë”XŽ[n¹å¾ûî?~üwß}÷ÓO?©aÖ.sSk Ðÿï¹çž}öÙwë­û·oßõ²Y³ÖM›¶Êf+T2C°ŒhÐT2ôë3ó€$  H@(WleÎLsô̯¿þš2¶5çøê«¯Ø “\³\_½åªSèÿ˜ÕäÉ“_zé%† {`݆aÆuïÞ]%ÓŠ! ”8•ÌAfO€$  H@€$PwR²À¾ûî;nܸ©S§º€CÝ17e H`¶ ¤~²®¼òJ²f¦_”€$  H@€$  4,)Y@%³a½>s+ÆF õ“¥’ÙØ*€å•€$  H@€$ ÆL % ¨d6æÊ`Ù%PúR?Y*™¥ÿÊÌ¡$  H@€$  H ¶¤d•ÌÚk:@]Hýd©dÖdÓ”€$  H@€$  ”&”, ’Yš¯É\I@ÔO–J¦C€$  4r¿ÿþû/¿üòã?~õÕWìi;eÊçŸ}6åóÏ9ýòÛo¿ýé§Ÿf̘ÑÈY| H@åD % ¨d–Ó˵,(?©Ÿ,•Ìò{Å–H€$  ÌO>ùd̘1÷ÜsïI'rÈ!‡ï°ÃN Úk¯}9ä°óÏ¿àþûïá…ð!ÿúë¯YJÖ›%  H 4 ¤d•ÌÒ|MæJˆ¤~²T2­€$  H Ñøã?~ýõ××^{íöÛo?ï¼óûõë¿öÚtë¶Ì‚ vïÑcõµÖÚ`=ö¾è¢‹n½õV‚3‰Ìüûï¿-+ . H l¤d•̲y³DeI õ“¥’Y–oÙBI@€$ ™@Æü裞~úéaÆ <¸oßm–^z£nÝ6l×nó6múué²é o¼êª›õë×oÏ=÷¼ñÆ>õÔÓ?ÿü³bæLÁzƒ$ '’T2Kü}™= 4r©Ÿ,•ÌF^,¾$  H@–јȘ§žzêúë¯ß´iÓÚd³kd³‡pXGe2ƒ2™ÍCèBèØ±SÿþÛžvÚ¯¾úZ%³ÑV . ” ”, ’Y6oÖ‚H , ¤~²T2Ëò-[¨z Àæ~øá¤I“Ø¡ç#$PN0Ÿ·ß~ó!¸«œÊeY$PoæÜˆþüóOf‹ðÁ_|12f·nëWV®ÂÀLæâLæ† á±LæÎêó“CØnžyú.½ô  xê©§°ßd¼¿ýöÛ”)SÞyçgžyæ±Ç{¸ú;vì믿ÎuæË³Þ^\í>ˆZ^"~È›o¾9~üø‰'Nž>|0јÕ2æ!\Âg!ü¯ÕÿýÂôƆpM&s\UUëVXáŠ+®=zô´iÓjÊ[©]gCöW_}ýòœsÎ9å”SŽ9æ˜c=öòË/ÿç?ÿùÊ+¯LŸ>½ánËNÎßÿ}dÌ»îºë–[náßxIó»ï¾CÌ4t¶¦ªHÓCÄÕt×%PöR²€JfÙ¿q (M õ“¥’٠ߦ™Ÿ‹èÝqÇ—^zéK/½4³á£%Ð `>W_}5æC@TCÌ¿y–À\'0çF„Ò…¾Ç€Â.»ì–ÉTe2Û„piu(&2æß!üÏÿû#„Cx2„á!Ì·øâ+òë®»~Ê”Ïç:„Â`›õo¾ùöÝwß;öeÔ׳Î:{=öÙqÇ]·Ûn0ÿ±';zæUWzüñÇÇ÷ã?5érq ÅRHdéM7ÝÄÏ) í 'œÀ*gœq¾ýƒ>ÈËýôÓOœ ¾- ª~JÓ4ì¨ß"K "’T2­@)Hýd©d–òË2o¥L€NöG¸í¶ÛJ9ŸæM%HóÙo¿ý0æB–`öÌ’JŸÀœÑ÷ßÝu×ü ½{÷­¬ìÍžÂÔfü_3Ò3ÿ áw"3+*zÏ7ßz[l±ÝAüÖ[o•2%‰W|ôÑÇŽ:êèwÜ©C‡-Z´mÑ¢k‹ÝZ´X¶E‹Í›whÞ|žXpÙe—4hç ÞøøãÄŒlÊÅähÆR<ð -¶Ø’¢µjÕjžÿ-Z´hÓ¦m‡wØaÐÈ‘#‘4úé§R~Ss%o4=´AØÑ\É€•@)HÉ*™¥ðR̃$PÔO–JfM ¼.ÂX–êøãßa‡n¾ùæÂwú©$"€ù°2æÃ¤ÈÔGþ) C`Έ ÈW]uÕ‘GµÞz}*+;g³ç„ðmˆ–q4fêäõŠŠÍ:wÞ`ÓM·ÚgŸ}K|‚YÃ_~ùå­·Þ¶Ë.»nºi¿ªªN™Ì••+VV®^UµAUUïLfɺ¶nÝmÛd“~>úø+¯¼ÊŠšÅÀŸ‹÷ ÐR®O>ùä²Ë.8pÐZk±ºi§æ aÁ¢DüWQÑ¥ªjÞ7îwÒI'#VñňŸÎ4O¾5šÚ ì(yÝs 4*)Y@%³Q½} +G õ“¥’ÙàÞ .*™%ò"ÌFC$0ç"LC,µy–@-˜s#b§˜áÇï»ïþ={n^UµtEÅÈêå1Sêeòω!ìÔ¶í–k¯½éŽ;î<~ü„Z,Ní&Å ÌG§4hPu¼â2!œ•!L ᓦ„ði/…ðTEÅáM›.ß©Su×ÝÈÌÏ?ÿ¼ÄçbϘñ+;4zèaë­×{ÞyhÑbå¦åݽ/蕞 aD;7o¾F»vzõêuã7²¬7sçkrƒNM%³A¿>3_[R²€Jfm5 H .¤~²T2ë²i6*™á-[Æ:"0ç"LeÌd%ÐP̹¡dŽ1b¿ýXk-B—©V2È7µ<3Êvl×n‹^½6Ûi§Á&”®’‰¯ËÞ7ìïÓ§O¿ªB@Éd‘ÏB €Uò/zæ{™Ì™=[µZ~©¥zl´Ñ¦}ôß-ÙðE2Ƽò!C† ¸C«7kÖ¥¢bÍ® á¢¿¬^ÔôŽŽaíZ,½ôr#F\|ß}÷7 ½æëÁU2ë²(})Y@%³ô_™9”@c&úÉRÉlÌ•Á²Ï •Ì9¡çw99a9@‹/97¢~øáÖ[oeƒ˜M7Ý"›mÉœ»ÕÌ#­/09a‘LÖÏüWEŪ]»®±Ã;³WÎ;ï¼S²oÕîè£ÝpÃ>‹-¶që…°uѦýß¹ó¿UêÅ®ÍfiÑ¢ãâ‹/ñØc±NiŠ~ìòƒøüÞ{ïõëׯsçÎ-[n’ÉÂE!|Â×!ü»ºt¼)6GÕ|'„³3™õçwM6Ùrï½÷ýê+„üß «’ù¿,»M:•PØ5ÖX#üçØ²:ÛVk˜IÙ™sÞÿÝ”É lÙr㥖ZeÓMû|þùÔ:ÈTCMR%³¡¾9ó]«R²€Jf­Ò51 H – ¤~²T2k™¯É5*™æU[ÐÚ'0ç"LíçÉ%Р̹±»Ío¼1zôh”É–-Û4mÚ/›’Í^Â!¾‰™h˜Ó2™—2OjÒ¤Ëò˯6|øÅ÷Þ{/(Y`„›n»í€ùæ[¬U«MC8¼zI"Sr_ô'›QÞ›BhÕ©S§«¯¾ú‰'žøæ›oJ°h8ð“&M"{+¯ÌÚ˜»†€ŒùzÔP´GB8¶ªjPÇŽ‹­ºêjŸ|òiÉΚ¯Ú*™õÏÜ'– ”, ’Y‚ïÈ,I@1ÔO–JfLÆ Ì•ÌYÂåÍH˜s&™šçh„æÜˆÐµËüôÓOÏ8ã¬.]º¶jµdeå ;†ðLõÜdæ)×Ç´åw2™K3™¾k5kÖºW¯uŸ~úi2Ù»d±T¹É&›5o>oeå!œÂm!hšWÉd¯v>z,„6óÎ;ïùçŸçw²9x  àÏ=÷ÜM7Ý´ÜrËU+™GV¿&”X^SÞ¢±ûϨj!·ý /Ì *™ñkUÉŒQxÒ˜ ¤d•ÌÆ\,»JŸ?YãÇ¿ï¾ûÒmÙ²åE]Ɔ,v„ׇCë! IàÃ?<òÈ#·Ûn»k®¹¦È¯x›$À|vÙeÌgìØ±2‘€fƒÀœ‹_ýõûï¿?|øˆµ×^wÑEWmÑb¹&M6ËdØçŸ!<ÎÖÞ!ÜÇy6{deåÚ­Z­É¶8lÿì³Ï¾ûî».ÎF¶ëç+S¦|Ž’ÙªU§&MˆÉ<¹z×r¢LÊ÷×ÙúçŽZwèÐaذa·Ývlë'Ÿ³ô^²_{íµË,ÃFUïTþaõ6Fy‹ötõ>Gûe³ºuë6qâD&ÝÏÒËøfšÚ ŽÒ|×eLÞ¢•–ÞÅXUcÅWDPÉ,}%ÇJ 1`2KE?YÍ›7gÍvt˜GyäÕW_Eáô€Š$ðä“Oî¹çž›m¶Ë…ùo“€"˜Oÿþý1#™H@³A ¶Œ÷'YÕ;î8x¡…o×®K6ÛY/„vÕÿqÞ¦I“¶-[¶_vÙ‡ 9¹«­¶Ú^{íUäW¼Mˆ`>½zõÂ|N=õT™H@³A ¶Œ÷¤N>ùäÍ6ëÓ¥Ëü­[·Éf³ÕBYEü÷Ÿ£ªªIóæ-]tñýöÛïøã9räld¸>¿BÇ|µÕÖìÐa¾yæY:„^ÕbæÈêÈÌ+sþ©!ìBÓÖ­[ï±ÇxŨ…õ™Û"ŸÅÞL'tÒصk×êײË`†pf—ç**æQ<“é…=ß|ó3êZäƒÃm4=´ATþÆP^Ë(¼.½ôRlá ƒZh¡…ZµjÅ/<²ç_|ñ×_5YÃLJ@ŠÀÏ?ÿÌ@$ ÷RK-•ÉdÚ´iÃl9ŸÏC˜X ×͚5kÛ–>‚‡$0 0Ÿyæ™óaaºYøš·J@ÿ%P‹FDRXb‹-***³Ùÿ¯^VkeÿÿÜEŽªªªvíÚq'{|ÿ7%úrÈ´£ŠŠŠL¦IÍÙÍ'„.!Ì—ï¿Î!ÌKÜi$\t¼âÎ;—`Á(ðy•••Õ/fžêœwÊW¨¨¤ª Þ<“ÉòÞr jne ’´Ab™[¯Àç–~U:vìH8:?ï(™Hšo¿ýö´iÓT2•:da%ÐP d²ãäÅ_¼æšŒVÿGÃäGŒ£~N̓$  H@€$  H@õC`èÞ½;Q߬;}út•̆"ì˜O 4*¿ÿþ;«»¿òÊ+ìÏÈ"™g¢j^vÙeycν( H@€$  H@@ù¸êª«®¿þz6;7nÜŒ3Ð •6ba% †B€A†Z>ûì³|ðÆod¥kVnGØdíö û‘$  H@€$  H@eC`„ ï¼óNÙP ó) 4N µ°ï‹`°¢ï·ß~ûý÷ßÿðÃ?yH@€$  H@€$ÐhüòË/DcþñÇS±Ô€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@h þ®>ØŒŒ=Ê¿þúëϪOªÏ?ÿœ½ËÙµœÝÊØÍ¼ÐlK &Ôý?ÿüóÇœ>}ú´iÓ¾üòKêü§ÕÇÇÌÿ¹þý÷ßsOM)D×±ŽÿûßX )L:52¾Ž1q…”ÙØÍþþúë¯ÂéD™ùî»ïHdÊ”)¤C6H„sl“œNáüTõC€Êü믿Òp|óÍ7Ôp ‡ZJ§ÆRo9áϨòsÏo¿ý†­Õ”1̇H‡û£j¥@ÍÿꫯHœc>$‚-c>QfÈ ‰ð'­æC:5åÁë¨OüÔÓdàYñÃŽ—Eµ§¢F56n>h¨ÿ4+?ÿüs6ˆt¨Ø‘ùPÕ#Û‰ ¯s0ŸœÌ`>˜[23œ“È|°¯úDä³$0‡°\&,(Ù0¨ÆQKDK1‡-WSK¤#7‡ïÔ¯K@€’èfâ'?þøãC† 9äCÖ^{íUW]u©¥–ZvÙe×_ý­·ÞúòË/¿ÿþûß~ûmœáä=—@ƒ&@ÏŽ¾Ý´n¸áÿøÇᇾóÎ;o²É&«¬²J=Ydþ=ýôÓ/½ôRú˜JФóᇾùæ›—]vÙŽ;î¸å–[òÅe–Y†1¥Aƒzè¡ÿüç?ñ¥ñ w'éÒÞtÓMgŸ}ö[l±îºë’B÷îÝW_}õ^½zí³Ï>]tÑí·ßNžµÄ¯Ãꇕù…^xä‘GŽ=öØý÷ß³Í6£íXqÅ_|qšªnÏž=wØa‡ƒ:èÉ'Ÿ|íµ×èÙåÍGÌç•W^9î¸ã0ŸÞ½{ó]ZŸÈ|vÛm7Ìç¹çžÃéæM!¾øúë¯_{íµ˜Ï¦›nŠù`ƒK/½4æCš'žx"æC†1Ÿ¢Pœ”'¨S“'OÆ|<ð@Ì„_ø5ÖXƒêŠù,¹ä’XÐJ+­Ô·oß=öØãª«®ºï¾ûÐ$óæóÁ7{þùç1ŸRÕ©ö‘ù`˜æùÆo`>RF{!3˜í ‰ð]ò@~°b¬ ó¡3fL1 yóéE Ô?¬æÎ;ïÄ1£a££Jce/¿ürÞœDŽ-U½@K„#WLK9rqK9rXVÒ‘³%Êû"¼( H@(’m7ƒø|ðÁu×]·×^{ 0`ùå—§¹§Ñ_tÑEiýq°O:餋/¾W™ø4dÏ"Sö6 ”8DE<Ò>úhذaûî»/ÝÀ7Þxå•W¦òwîÜ9›Í¶k×î°Ã:t(¡25•…žFAÂRðT×Zk­Å[ŒDøSâ fuÎ9çpÑ2t<1ºÜÔªAš8q"CüÁîVXazµÝºu£gŠUnµÕVô1/¼ðB¡œ7‘Üd½":"@ì#\Œ –l³Í6(ÔRD˜\0ªüË-·•Ûm·EAŠ¡¡‰B+“ùÁ°ALãî»ïÞu×]¹'i>¤˜Ï­·Þ:vìXºTû¼cÞ`>£G>í´Ó0º«˜M9Á|› “˜Ï]wÝ…ù`–7‘dÆ<—@`Ðj„ TH4†Ïhwî©® UüìcJk®¹f¿~ýN9å”K.¹dÒ¤IÔð¤ôAŽÌç©§žºå–[0†ž£ö‹ša˜ÃsH”˜±Êy͇t04ŸQ£Fa> ½Å™!?X1Ö„ù ”" «ÆÍšOÖ ŸsTuŒïŽ,ªnÇŽ«ªªæ™gžX€q±Üô1¥È‘£%B·/ÐÑZE-Q^,n‰"G.n‰"GŽ–ˆàØ‘£%Ê›Hnö¼" H@@.º–¨”È58̨.è'G}ôÉ'ŸŒ`‚¼Ãè!½HÚb†ø:ê¨xàÕW_5,£W"]º“ãÆ#$†¾Új«m°Á}úôÁÕ\guš4i‚’‰ÏIˆWMJ&)г{ë­·°¾²ÞzëÑ—DºA·<ï¼óø"¦D‚D…q»æškÐsr{‚xÑãÇBCé~rÿ.»ì‚ ƒ3Œ~üñÇ“ ¾Nß–Gœyæ™W\qÅL£â1Ï ˆÀ{ï½Ecn¾ùæTrª+@*çˆ#.¸àšú|Dͧ!B5’ÈL,..#æÃÜUÚ̇"óáóáëT~̇‹˜R ˜bmVœBt‚ù<ú裘ƒqØ÷ÉF~°Ar‚ùpŽÐÊGX:9$'…ãÓRéû§jŠ:’Ú ¿í„43#欳Î>|øÈ‘#ù—z‹¨HuŲP8± f WÒÜÄ9¡£¨`>Œ#Dæ³ÑF1$wþùçŸ{ϑG‰ù ‡’æóâ‹/b>¹5Ÿ)9˜Ï•W^É@6‚­aƒä 'là’&惤‰È‰aØœ›Hœ+O$P ¨Õ ø>ñÄ8føTóÍ7ß¼óÎÛ¦M›®]»æ*™QK9r˜ÍVÜEŽ\ÜEަ„#—*i²%й¸%Š9Z"ÚÄØ‘£%Ò‘K1ôO H@@‘Ð$iŽ™»‡€ƒ·<ÿüó£d2ƒ™°O?ý4ñ-8Ïûí·ß /Ìhfÿþýñ± "J“º¨†eÆ=™+¨É´Ø +!P9QN¨¨÷Þ{/ÑûTfÂÀ˜‹Cp õS¢>s{‰s‹ùiÆȨ}ûö´>˜†ƒ´BåÇ|˜‡ùcÆì<Ìå“®_2$,2ÂÉ¢ˆèfÍša>hª<Žn,ájä i”ùdUó!«ôs †‰_„'õO R2‰UFÃ$ê•òž{îá×½‘…z{Ûm·á›áwa;:t i@„'Æ,Î*B ÓÆ1*|§N0š-̇•‚¸ˆùɉù°Â až˜OZäóa® æƒb¹ÄK`>è™$‚³÷Ì3Ï "‡˜Qmªg´¦ùÄoÁ“Ò$Àò°ï¾û.FD0$Ö 0Y€V&¯’µD‘#Ç=ô†’-QäÈÅ-QäÈÑáƒh‰"G.n‰"GŽ–‹Ž9Z"¹Ò¬?æJ€Jœ2&«“±° +‘p¤OJ q„‡1ß7 r§iÁ¹éàÁƒd±dó]âÅ4{¨‰Rª ˆ]ýõ±ÐwcÄÊéZ¶hÑb¦J&½B¤W˜ŽÇÍ0-‰óŒÈƒù°|Ÿè9D×à·mÛ–n =V¤žä* ĘáÍ^}õÕÃ`eè6ÄÏ«ó¯ý‹t0R¢nƒ!b'º!R\Y–_€šJçu Ô)hMWL©xHzjÔv”I˜ßÿ}ê?Zo¼ñF,‹a–kØ{qDGâ\a>Ü@ÅÆ|ˆ™!Âóa 2þ%AâÓ0Ÿh m÷ÝwGI®ØLK„)a>GqÖ"Šu`>Œ¸a>¨¦äóAY%À†ˆÏáÒAÂ|3ãwáI=`1{¡r¢=âtqNµä"„†JÉê òXZ%ñ–;í´ËÄù$¼óÁ¾ú1̇jÿÎ;ï`>(3˜1ÉÈ8È/¨(Øæ§@ýÇ|x(惀Ià%ÖÁýd ?<`>X1ßÂ|¸óA%V“¯DsÕã¤<‘@I`¹KDx¢úq¨X±„u_Ñá»té’wvyÔEŽ-QäÈÅ-QäÈÅ-Ž\ÔáÈÅ3Ôh‰"G.j‰°”È‘‹[¢È‘òˆ9Ò‰9[¢’ª©Æ.Θ'(Œ5Õí`#Äü±g å“@MÌÇ µ3×|¨öDŽ1 †Î‰ù „ÒZa>q è0˜"*æÃœ"«1‚9ã¢Z(̇Ñ=̇壙!‹ù ·j>)PþY:Øp‡iàX3nˆUf¹ôI4ÿ¼JfÔEŽ-bc–G.j‰pä’-QäÈÅ-QäÈå¶D ±ÅŽ-QäÈiJ¥Ss̉$  4D£-F“ͼWú€|01ŒÂ§º¥´ÔŒlsÌ1D‹1½hà 7$*€`€äôØQ^3)b  ¬UŒ’‰¥Ϲçž{"ò3âsK„ :LÒ)EÌÁ%æ6BkèŠÒ!ŵfÂQ¼-vD‡o– —ÊÊJŒ‘ˆžÎ·R¹Exyøá‡‰«iÙ²%³¥ð¢Yÿ)u›J ~Pÿç*¢OåG*!ÆŒeú°¢¹S¡Ñ‰²™E3-³¥,æ“lYH!Ššf>–qÆÊè–ÕÌs£D¸Ÿµ71bÉ0Ÿ-·Ü’Ö óIÊ¡ÜI6XDóAÌÁ|P„Pf0ꧪø”Ù&À®@Ì…A¡þÇJ&vù '2£óAç'9×|0%̇ÕÿXô¯TÉÒ ˜OœBÑ0fµc>H ·a>³Å7D'¨1˜ÏwÜÁ´F½Y2óAÑ|R üs®À.;Ãjí‰ägÇ+6`qÖüAÉd¤8WÉŒ[¢È‘£%йšZ"¹¨%‘K¶D‘#·D‘#—Û1[!vä°èȑӔæzÍ1€$аôECŒÃâH dz2#ø©f—!ËÐãcú-Úôé·Iœ@î «øæVy àR£dF* Ê?R +É#¡°ÛJnšÜ‰,‰1 À<Þ5sÌ ˆîľ0(¶2Áͦ“H·”%ÎSÀSIE³™ºN°(K9ÉÌŽ©ÛüSõF€ºÍQøqÄ$#³L?‘mÄY»ûùê"æCWŽÙ|˜CiL‰ÍMŠ;1¦ì!æ`>ìÌE (0ÑX+3p1®c>„ÁºŒù$;¡ÑãÈš*!Ö˜‹¥ÐÞa>è<¹OôŠJ‡É´,2ØN¬d¢½`>,ÔÀÒ˜:?±Ê5™«@ `b>4.-GP4Ì©óAÉäóÁLRÅÇš¢™˜VÆ ÌÇÍJR”ü³D•“ LV—¥®rÌ*%,9›7&3ÙEŽ-F‘[–¸%Š9LG.ÙEŽ\ÜEŽ\nK”täh‰"GΖ(¸W$  H@ÍE“MãÎ`=«Ç3†{Ì‘ú 3+&1ág%s…V`a@ÜÝxVEê~ÿ”@ƒ&P¤’‰ƒÊp<£ðÄ*3@˜ ‹0°MIÞ²“& ${šÓ‘d~F‡‰cÌÍŒà6³¯%±št Zcþ ³e“QšÆ0ú€%âoÍ?l–;ó>Ñ‹(˜ ÉRR±WYeæÀ¢’1®£Ob>Œ£Q™1öëAØÌ›ġ™­$‚ù ݰšÁÈ|H„Y„˜š`>ÌUgÊF‘jȸ™®"æC·ó¡ÿí¨ÅJ)yŸèE ÌTTj/~?øè‡È# "uIø%+–BIÆh5¨ù 1œùÏÏ䚚̹’9ã˜Z(2 k/DO!©S§b>ÌuÅ|hÅXðó‰ç ÄÈæÃÚ˜,¡ÉÔZ"<1âÖ4Ÿ‘'¥@¯ i‘-2iSîY~eùáñ»rc2“-QäÈѱBfÞâD-QäÈÑ‘`²%й¨%b×ÈÈ‘Ëm‰’Ž-QäÈiJy{Q€$PFêi‘™%Ál"-¯¼òʼwÒG“5ößzdOÆôY]G:ïý^”@ƒ&P¤’‰;Š`òôÓO'ÆÊ{Œø³aÓýò–ÙŸ^'¾4æÆFB„Ç0Ã(Šjæ#º„t ZCŠ¡ÇÊÊf$Ng37).²È<‹žE^4jlë{›W$P è$"€ 0þÅŽ? ,ÄG´ y£†Ó¬`>¬øJä æC*§2`\¨”,ÎÀrTMÄ™H꧈žù°'æƒPIÃDâ©ø3RoXœóaz s˜‹3ä‚òÊ\!ÕOL “6…a&8º ¿öì×CýgÏ‘(Mž„)Þ¸d˜Ïé§ŸNÌMæÃJ˜ÜÀ×±nFä¡é‰Ì‡& óAKá#ö1!Р󉦲G–0ØóAÿÔ|R”üs. «B…ÄjíiVó¢«BóA{ÁÊ y•ÌdK9r´D,Ô· QK„#µD8r¤Ù -QäÈÅ-QäÈå¦YzäÈÑ‘+[¢\J^‘€$  &Àp Iù Žj>yAyq®@œÇ%c4™Ðef™1»©Ÿ*Íu*jMJf²%Š9ÌŠÙèy‹µD‘#{k‘#‡•EŽ\ÔÅTÞt¸9rØuäÈiJ5òº$  H /Fð™Ë„#Ä“¹ñÆóÞ†¢‚ÛÌð"ã†Ñ cx°ô+qkóÞïE 4hE*™ñ^ Ì™%Ì’î!}IºŸyËŽ¯ûì³Ï²³9‡’‰h‰«Ìjœt` `º ÝæM›²)ƒû5ɘ$Ž£Îœ)6âN–iªé‰y³áE Ô'ö¨:í´Óvß}wÄVv%¢Œ L´ò€ù°±[lÆôẊýDr§µF¹Å|Øñœ¾! ”xIGµ3‰ôâ01´}̇¶ Û)`>lý€ùD;A`>5=±>)ù, P™Ï=÷Ü£>šq1”¶#'® ÙÕe3Ï>ûlb›±‚6Á…?Æ<—^z)‹[b>ÔjjªÌÄR²&æC42.OÁ£‹Z”̇m°0&ª£0žŽ ³³3ÓX·“•9kz¢/TõO‡ŠÕXùŸfo*ZNwŽœP2“-QäÈѱ8mÞüG-Ž\ÔáÈÑEŽ#‘#µD,$[Œ#GK9ršR^à^”€$  ÔDg˜é~ÄXò/»–0|™÷N<[Zj†ûÓŒ”L:§¸Ð*™yqy±¡(Rɤþy×]w±ô0SöX “ÎfÞâã³Ó+Ñ/8À‘’‰ŒCw2R2 ta5'ú°Íš5í¥ã™7‘è"J&Ú)Ë‘Q*™XùÑÜ"@Xá+l ÇœVB1‰A–!Ö…-e §$W˜R æÃ~%H(˜ÏÝwßEäÍ0æCóĤò6Ú%)†ž#æCÛtÜqÇa>ˆ?˜}̼)Ä‘t0f»3x‡ùØŒÉx2 P™‡ Â> #N² 9Í ƒV¸^L„¡ÎcSÔyòÉsbºXr›1NX?¹&ó¡AAÕÁ|"%“øgl'âÚ15óaª8æƒjJ#Uš’)¢(™˜f¨ùÀåGõF€šLà%=öÆb¢ÝÂ2“±”ÌdK„¹E-QGŽ–G.j‰P2±ÊÈ‘£%й¨%BÉ,Æ‘£%Š9M©Þj‹’€$ ò  ’YïÑRÔ.•ÌÚåijû’EI¸³çØÔ`ï½÷&Z†@—x¾dÿQ%³Ö‹œ$€VÏÒ|„D¢“°%Âã…^ˆ¶É®%È2Œ[±’9ƳËU2“ôú(²²ÉÀ|˜iŽùDëdb>Ä›EÏssˆù°!Ê æCÿí%ççŸÆ|˜$‹¼ƒùÐÄ|8'̇-T0˜„ˆùÔ$þäæÁ+¨;Ôd¬ÉAwë³Ï>ÃŽØÍýJX“¼oß¾‘“Ö¯_?LîdFž¯ºêªhL$Òj2Öëc?̇üØ óA½Á|(N¼’-æÃb¶4R˜O4=·°| óa#u!Ä|hÎ4Ÿ\J^©OüÔ³¿Þk& õÓÜÌէVOÃüIÿe›m¶Á:Ÿ|òI®3@Æw¹-n‰"GŽ–hüøñyKÁ·h‰"GŽ–GŽ–(räh‰"G.n‰Šqäh‰"GNSÊ Ü‹€$ š° &»æá”2ÂÎ}xÅyïÄ­ýðÃLXñ,Ú»œöú–[n¡+š÷~/J A(RÉDd±w\ḃ-/Ù‹@eV¿Ì[v`Äœm:¤¬“ÉÊ´,¯í°ÌGL'<üðÃñŠñ×]w]:¤|Dß6oR,Fh ÝIÜrœs÷.ÏKÉ‹s…}CdLäDj8õœŠÊ¶ ,ªœ»bæƒ `>¬ŸÙ¡Ċ"NÞlc#$ÂVã˜O´A9ý>FãfT6CÁ|è?b>lkÂÍ‘eåMŠ}UÈãqÄ|§É{›%P"heXs©áìh5Ü€ùD)u†Dæƒk‡ù°>'!rÎtïrF±.41x§y ŽnÃŽ DŽõìÙ“Þ(ájôO£¾$éÐ!=ñĉÆÄîÕ«½KÜìÜÀ˜(ü€°¶µ%’)D×0‹*ï½(ú$€ðÎÐê ‘ÉÌõ¦‹G*ÍX&Éæ6TûO>ùó¡ß‡6‚ù0CƒÊ›gÌ'Ú–¸el a‡~ÁcÜŒ¥0²†ù0¯ó!ðŒH.æ`nt9‘_0òF&1nÎûD/J D Z2mö°ÃCGld ®“ÉÁ9­ æCý¿òÊ+k2´V¬Ýc=zh8N?ýtl!2Á|˜x‹ù°Ÿ#~A ˜[v¾‚hƒùpMæC{§ùä‚òJ}`Ü e’MÀ‘(Ñ*ÙÇ )òÁÿ{0ß¼ÿþ8Wlk…½ Èó9ƒn,N‹ì‰Aá¹ÑEŽ-‘ÏyKµDÑ nÆ‘£%Š9È‘‹Z"†ð"G.·%J:r´D‘#§)åîE H@@Mh:é÷Ñî3SyèСˆ'¹ú Í4-þí·ßÎ$AÚn–v=z4C–tEkJÙëh¸ŠT2qPF˜Ç.®˜Ï¶Ûn{ÐA1[6oÁQrˆ™a’ Ñ,Ý»wÇweºSt'öE$ £ù Í#Å0W}P„¢þdj$ÂèK ò¸öíۀ˔¼Çs Ì4LÊcR9+–‰†‰<‚ºBÍÛRÄæÃBͬ¥‰ù°2Ö”7óÔ|:†¤Ì º~h/„ÓDwòù°Å3æ³Ï>û°-æCo1™CÏ!3<óAÒ!tó¡û™¼Ís ”*-q˜L릆3”Ìdsä~öi iŽ–™EW$Ò²&óaÆ:7`>,‹ÿ†ùÄeŒ”Ò(qìóÉíÄ-ŒB×0BјËù Ûh>1IOæ j ó»o»í6Ƨ***š6mÊê=*£·'®ðQ“&M¨½-[¶¤XmµÕ-Ž6gd™–(rä¨ä¬óœ·8QK„#µD8rÉ–(r䢖ˆ¥K"G.·%"ˆ4²»¨%Š9M)/p/J@€j"ÀP&Síèo.¹ä’̪ @…æ55†H?”%˜ðuY£‰–—áxâ3™Ž DÖ”¸×%Ð@ ©dR:|TbZPø…GÏÜn»í’á"G²ìt95 ŠŒIPhž°E÷ÃþôUSÀgÝZâˆUcô?™ç|…u8‰ˆ¦?K\³Yä!¹‹Jê~ÿ”@= ¶ †xȤrV*#“µÈPNPEó¢ëWSø"æC”2Ci˜õŸí«¸˜M£Â|ƒÁ|¸ó!ä&^Û„˜:Œ˜3 0fW†ùD!gñ£Ió!̇Ñô×H‰ùxR²ÐÑ Ñ[¨´ˆ3T~¢Èh ¨ÒÔóhÍä-¶Ø‚¨æÈ|’þç˜!g¬#µ>è™×\sM\X&žc>ìÆ…ù ö0 =µéstg4f÷ÜsÏa>Œ°H&æCT[l†q‚žH > P±–î!<’:\ÓAÄ&ј0Gz&ÃaÜÉØñ!‡¬©¨%Š9Z¢È‘›iK„#›-QäÈ‘rÔEŽ\nK”tä0êÈ‘‹Ó©Oz>K€$Ðp  Ø0)ƒøhå¦dx‘ °ÌªHµ¼ÜÆp?13¬¥Éê|¸Ä ñã'æ† ÁœK E x%“/b LÜCäLj˜ý7lØ0¼â¤I“Iy¬fÉH]E–Á¤3H7!ƒè¹Ø”&OžL€4áD‹á]³ä&}ÌTÆð“‰"cq?B£™HEG’…îu€S”ü³ž ”‚6Â|=zpDW²)øž{î¡¿Få,ÜL`>,Z ˜>Áÿ˜O2ó!̇ ^Qï1'`&61n`ó‰öÒâ_"j0ú•I¤Iè&æÃö ˜Ñ8Ï>û,æ“|Vò~Ï%P"Pà‡ ÂÜp¢ÎÅDz¨ðÑÏ>xРA˜z d>É!fª7æCÃAœæ³ýöÛÛŒ×H O ™”̇вø†èÇ|ø& _‘x3̇…M4Ÿ(ÿ¬gÔvš B”Qà‘ ÎÌ=¸ÎìÔ~Â:vìˆaP܆! ÎcD4"QK9r´D‘#—¬ÞÉ–(räh‰pä’-QäÈE-QÔTåm‰’Ž-QäÈ%ŸUÏ }œ$  H !@ddšQë™È 3,•Ip  ~2=AÚhäœÖʦuFÉdvÒî»ïΖ…û§ ‘†yn´¨Ìصw4š¯DÏŽ d†Ý‰‡AKá£èÀ4ø Ä0VðÛsÏ=‰AÆA®dšR´±r”“†Xf–Å-Ù0 +#$†¸ÌÃMN&ÂÜø KuéÒ….ç;ì@xkÔch<‘¼qçL]g‹çÁƒã3ê_ÿú)ŦѾD ^ÿèÜQ-i Xy6‚ÐJ:‰è*,TB Qus¾góa €*ù0À&˜Êh8€Ê™H‰ùD Ìb>$N÷“d£D0C„ù'†ùóL\(æC¬2×±A ó!MZ7̇‰±˜“ßIóI ÛÅóDuM€Ê‰… 0;†zNmª+u;ò¾¨·D#㤱YñcØKù!¿ð-î${La¯+̇X2ä̇¥ù¨ê|5U ¢QÏï¿ÿ~n A4f©c>qÑ"¦…Â|Ø{ ó¡y"K¨—dƒƒì óáY˜2j'ɲ@Šæ“ôd® c/øl¯½ö“Å0þM\á`vš??û¬ÆÀï?d¸‡ØfÔx&D‹'ÐEŽ-QäÈÕÔEŽ-–’l‰"G.n‰"G.n‰¸3j‰èsÅŽYŠ9Mi®Ô* H@ —Í7þ*>*Í7#ƒ•¬ýº1wÞy'Þ2+aŸÉTV–W\‘.*^îÉ'ŸÌD§¸ín¸e7çˆ 0íiÅd=œ^º~̳c1%&¢2yœ†õù(:ð™é'FcèôaÇdPZP>ˆ”Oz‹¸Êü‹üÈ$ÂxR'{4óÂl’CðxãôÙ…Uþ˜¢N¯“öSÀÖHaܸqQ¼Ù ö†È7"°YtžžšÊ Ô5tF¾;añ=züË€¡ÅÔy6P Ö³Ê=øVœ1*06E=¢e¨ü˜ñ3T{ºŸtñH £À|¨ùئ„„B˜YR¥ˆùEÃl`‡ ƒùŒ9’d±M2̇}ˆPAI„ÕQ0:’dƒ§Gãq~<‘@½ †#ÖÅ: ÔO ‹êÀB¥¥™@ñ VcÔ[ì lï½÷Ƭ¨ðÑÏ>*èã?N=Gä$Jó¡}¹êª«¨ö$…ùÐlaÌ£AÅ|˜EÎ tÌ'.#õŸÔËäA R3Tù fâøñ]ÖÌ$'´nØ8æÃ(#5¤ƒù rj>1IOæ¨3nÅp@Mã D†À¦WDõs'­ŽÕ˜œG-QäÈ!u®³Î:É–(räâ–G.j‰pä’-QäÈÅ-QäÈÅ-QäÈaé (ÄŽ-QäÈiJs«þø\ H@hÐhÊY¼}ýØj„•dÐ3iˆq\™ÄÄü º¥¸µ´ÈÌÈcú9,þvrúRƒ.»™—0æÊ¡É°n5œž LöŠeñXª=ë/1)ÀK>ŠŽÈ ŽúqtÓGÛ$á~&ɲN –ÂI¬.Ë=«01­‰€¢Î¤d‚1lxÝ)’ÑÄÔKbÛ:tèÀÒµ¬{ƪì„3|øp”Uz²Äˆ’áLÊ~îÛ”@}`Œõ“™¯Ê8WUU-"!ñO<ñKMÊ8“˜QdH.˜ ­æC£ƒù`FåÇ|À|PQHŸ¶ õ&WÄ|^02€Íb>,€ùÐ3eV,æÃ9¶‰ù>æÃ4ó¨çÄ Ô3Úª:•Gƈi\ð¸P/GfT‹ÆˆÊψ¦´BãÂsÂÀXô2Î'†@ 3æÃðsÏ1Ö›%Mª=æ€ùœuÖY‘ùÐj`>fÏ' í÷3f½ÜrËa> ß%˜F‡c>8˜-#9Ô|’=/qÄ6GÊôeÐüQ&SŽZ¢È‘£%Â’-QäÈÅ-ÖµDNJŒ["¼µÈ‘‹[¢È‘£%b‰†Ø‘£%Ò‘K½ ÿ”€$  O€aDÂfˆ»è¢‹˜ Á¨%Q+gâspŽ[K[Ì”X|lº®4»©¶»øgy§J)x¹Ì›£Ú£7.³Ì2xªt +«–CáGá#\\cZ¾1¶ƒ-à»2¾Ï³ìÅ@/éBD¦‰ùD›,°ÄK7œxâ‰ô 'NœH÷39Ž!Aä$‡^$VÒ‰-‘ˆµ(†Ž-Jq;8 P‚u©Qe‰ÊÌÌV”¢—Ù〘d$z]¥ú D3uD׉@‹)Qí‘D˜ˆù0ã/šHDeÒ|g0Tî¡©¢Ë™ 5ÒÁŠ1ô–/Ã|°Ȧt80blHóÁH1Â`r‰så‰êNCf(,BNÄ#Õ•ŠÊì$ǸÒ2ŽF@2-Û‚0Ô…Œ™”©Ã´&˜:$±Ôp¼5̧ÚwûOëÃ9æC Ämb>ØH^ó¡=â#fÚ¢Ï`>ÜÏiq¢&Œ\aM$αš,´B@¦æS5ÄGÔl$V2*s•̨%Š9Z"º<8`5µD8rQK”ב‹Z"L2räâ–kŠZ"𳨑£%Ò‘«­·l:€$Ð8 à ³.3ji¾QiÐp|' ©µìñ‡?ŒK´ýVÛÜÆYCʻԬ÷Å¢ T{VccÖø`kŽøÏè„+tñ˜â‡¿û±œÐ döûž [ÒEÕ!¸…Y»Þ%f…{Lø…û€d†;‰!D!R`Q&rØšQB1™Diüèò~5–®” Œ?žÈô‹\KIþÇœ²YêpªP¬´€ù Ô0}óaæÕu42”ṘO:},‡’únêOÔ!$̇y²˜6ÈùDAÎ<š]Q4Ÿ4ÿœ+c¿E"!ùµÇé"R‹½•@àhŒØ`‘00*?â?ᑬڗ7Ÿ˜íñ–˜d ÃQçqÞ0Z ÌÙ„¶ óIª ¹I‘0¦á`ƒLH§é!©(D9¨©¬XKÓS¸ ËMÙ+˜»â˜LViÈ«dFÙ‹9Z"ªz–Gn¦-+)þþ9W`>,‰ÉÜp&ùµgáôL •ƒJË9»ó\sÍ5T~Ö«œ¨ ´M˜™ySˆ.’N4='DhqÈÙÀš0Z7‚Biz 7aáG˜+½zôÑGY±‹`¥ ¢÷óf#räh‰èòh‰päfÚ1$9rqK9rXtäòò÷¢$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  Càꫯ>ÇÇÅ_œ|Ö¨Q£â$'Mš”ü¨ÌÎ?þøã¸¤œL˜0¡Ì X?Åi<¦~xú H@€$  H@€$P–æŸþ0ÇGeeeN—.]â$¯¹æšäGevþðÃÇ%ådäÈ‘eVÀú)Nã©0õÃÓ§H@€$  H@€$ ²$Ðx”Ì¿ÿþû³Äñûï¿Ïù -Fɬ‹çÎyÎë!…â ®’Y¯ÃGH@€$  H@€$ †N ñ(™ßÿ}2~òÕW_ówWŒ’YÏóœ×C Å\%³^‡€$  H@€$  H@ @RÉlÙ²åê³uôìÙ3É¡4…©â…µdY Ÿ«dàS<ðÒ¬0ŠæG€$  H@€$  H@õO ©döêÕ«V2p÷Ýwßüßãƒ>¨•4ç<‘ⅵ⟥’Y€UñÀK³Â(šI@€$  H@€$  Ô?ºP2ë¿Å<±xa­˜Ô¢{T2 °ª àçG€$  H@€$  H@åM@%sNÞ¯Jfz*™àø‘$  H@€$  H@À¬PÉœUbÉûU2“4Rç*™) þ) H@€$  H@€$0'ê_Éœ6mÚçÿ=~ÿý÷8ó\»á†?üð]vÙå_ÿúW|=yòÍ7ßÜÿý\pÁ°Ùf›m±Å»ï¾ûi§öüóÏÿñÇÉ;ãóŸþ9zÚäÉ““{—?òÈ#ÿÍÅçÉlÄ_,椀’Y+Ï¥PO<ñÄСC=ôÐwÞùÈ#>|ø /¼PLÞ¸gNPÿùçŸO=õÔå—_~ÜqÇí°Ãƒ âé¿í¶Û¾üò˨•‚HŸŒQ=Ž=öØí¶ÛŽ•]WYejž{îùÏþó믿.ðÅø#ò¿ú¿þú+¾Îù“O>yæ™gxàƒ>âˆ#Î?ÿü7ß|3¾Á H@€$  H@€$ ¹H .”ÌX â¿Çµ×^›*»£ÇŠâK/½Ä§ÿý÷È‘#Ù9=¾~ñŧ¾5cÆ $¦Ö­[Ç÷¤N:vìH"¹zæ¹çž›º3÷Ï—_~9õ¸"ÿ, dÎás§OŸŽzÙ¶mÛÜÜre±Å;ãŒ3~ùå—Âùœ=ÔÄRžwÞyݺuËûh.VUUm»í¶>ú(/.7³QðÂ&~JãUW]•Üè<•ÃÊÊʽ÷ÞûÓO?¿’÷$™ÂÔ©S¹utذaÉëÉ”{ôè1f̘¼IyQ€$  H@€$  H ÞÔ…’™T„®¹æšTYRò"ÁuIáˆó”’I"bWêž¼®µÖZ?üðCò‰³!¬%¿^ø¼Ž”Ì»îºkÞyçÍ[ÀäÅE]”Â9œ Ôo¼ñFMòiòÑÑù®»îš+fÎðÂ&* ñ–k¬±Fnr¯´hÑâöÛo/€%ù8”ÌO>ùdµÕVËM'yôºë®+¦I@€$  H@€$  Ô5¹«d¾øâ‹LOJFÑyRÉDÂJf2º¡U«V .¸ Ÿ¹ßEÌD¹Í†°w¦'u¡dŽ5*›Íæ–+ï•L&sã7֔Ϥ’Y ê)S¦tíÚ5÷A;w&ä•gå~Ä4ÿÔÓgxRZÌ•¾Iÿ³Ï>ëÞ½{îÓ›7oNÝÈ[ Î9çœTÆâ?“{å•WpÍM9÷ Ïzë­·âD<‘€$  H@€$  H@¨gI‘UkåéI¥(W˜JÊk¬Š™’ŒPÒV\qÅ믿>Ê Š7Þxãø$µ‹.ºèÛo¿>e.ùûï¿óÍ7£jÆ÷pÂä¸ ,ykõqõÕW'ïa®ztããoyR@Éœ½çÞ{ï½ÉLr¾ýöÛ³|èĉYôrôèÑ, Ú»wïä=Ìõf-ͼž%ÔDW®°Â É”‰•Eÿüî»ï¢Ä¡=iÒ¤cŽ9¦]»vÉÛROŸ‚®0<73I 1b"d´À)Â5Ë0¯<©£»ÞsÏ=y±$×îgÙUª+«ƒ˜ ó}öÙõ2YÒæMЋ€$  H@€$  H@õ@ VrPlê_ÉdÒn¤­´ÒJb¹Š"+XÆR³†ÇŸ—ÉO?ý´ÕV[Åw2ýßÿþwêκØJ»€’?½øç~ñÅÉIåÌòf{8äÉ)§œ–¦™çÝ´(©dÎujG¤+®¸"ùÄäù«¯¾JLlœ!C†$?Ï‹/xRZÌ•¾I?~'k¯½vjø‰=öXrj<«ªæÖ(nN>.J…|ìØ±q:ñÉ}÷Ý— ø¤Ô¹õ*¾Ù H@€$  H@€$ :%T2Q~Ö™ÅãÔSOÍÍ^R)ʦ’òZ¤#±Uôo¿ý–›W.»ì²XÅÚrË-óÞ]|ýõ×ã;9!¬.usñÂZê‹þ¬]%s·Ýv‹‹€ðH‰ <úôÓOoæ$¯ð8K¨‰BŒÜ|óÍ <šØÐ<¾¹OŸ>yo.x ÃnõÍš5‹Ÿµîºë²7zÞÇEï¼óÎøfNfZ?¹‡S"{kJó¬³ÎJ&XxaÒšñº$  H@€$  H@ÀœH*™IŦÈsæ>çæ¡€0ÅÍ)y m*7…øÊ^{íçdðàÁñõ¼'+¯¼r|3ŠVêžâ…µÔ üY‹J&™Mš4‰óÏ$îÏ>ZýõãûóÆÓÎêC9$N-wÇùTfØ“(¾y‘EI}ýY<ðæì³ÏŽÄÉk¯½–÷YÉ‹›m¶Yü•öíÛ'MnK>Ž;yDòë©s¶J.¯{ºÍ?%  H@€$  H@€êšÀÜU2™º[Ó„ñ¨à ˆU©ù曯p<ÞôéÓÙ‡::˜ožBW¼°–úb?kQÉ<ãŒ3â’2Ç|ÆŒž}tË-·Ä_aµÌÜ"'•Ì™¢¾ôÒKýïÃÂOO*™ /¼pÞ›‹ž”SA¼É~X-3ïƒR“Á¥ða9ÍÔ ÉDZÁLQwëÖ-æ|þùç§RóO H@€$  H@€$ ú!0w•Ì5×\³p1ÙÄ<‘8a_r¶2/ü•š>-^X«)…Ü뵨d&÷ñéÛ·oî³r¯°ONîÄ礒9SÔ¹é¸rØa‡Å®;%“w?…öl*¥ø#^t2º5W{L*™h·ñk:Iî7t 'Ôt›×%  H@€$  H@€ê”@RÉ$þ-Þλȓ^x!7{I¥(bÇÍIymÏ=÷Ìýzò {v'µ,ÎÙ÷‡M¥zè¡Âñ™ÉD¢óRV2Ùž{žyæ‰KzÒI'åæ?ïB ão5*uÏ,¡N}7ïŸìŸ>f̘#<29áºî”L6܉KÇÉ”)Sòæ*÷ââ‹/‘=ÍS7$ë'RyêÓÜ?7ÜpÃ8µ#Ž8"÷¯H@€$  H@€$  Ô¤’™w­ÅÙÈCR)*¬d6l¦éŸyæ™±Ž”
5q†Ç{,±ˆÅì(]ÊJ&;Î$‹¶é¦›^Ü‘|}¹»Û$•ÌbP'ßsÕyä‘óÎ;ï ƒêׯßrË-ײeËd&ãóºS2yzü¶@Ê]ñ2™áä9û›Ç_ÜvÛm“qž¬Ÿ7ÞxcêÓÜ?7Úh£85•Ì\>^‘€$  H@€$  H@õC )…Õ¿’9bĈbŠ™Ú?:–•âD¶­¶Ú Õô×_­)ÁRV2_~ùå¸,³}rÔQG¥ÊžT2‹D&Œ~سgO”Ã"sRwJæ‰'žça¡…J•®ÀŸýû÷¿¸Á¤îL*™¹;C¥næO•Ì\&^‘€$  H@€$  H@õO A(™`yõÕW‘§Ø¶&V¨òžtêÔ‰οþú+—d)+™D?æ-Î,]<øàƒS¥žU%ó™gžYzé¥ ?4›Í¢yàÆ·Õ’yÀÄO!Ì2Uº&•Ì-¶Ø"ugRɼ÷Þ{SŸæþ©’™ËÄ+€$  H@€$  H þ 4%3"óí·ß2xûí·gwïXãÊ=a?š\’¥¬d>öØcÉR,µÔR«ÌúAäjªÔ³¤d2I?¹úeœŸ®]»Ö¸Ç{ :ôÑGýæ›ox ˨Æ7°µwê¹ÑŸÅOJ‹Éåˆ2ŸBYò>%ïÅdÁs÷ôI>N%3/@/J@€$  H@€$ $а”ÌàßÿýÆo >œˆ;öŠõ®ø$w'—â…µø)3=©­½Ë‰8sÎÉ=÷Ü3ÓGsCRÐ+<»|úôé(–É<ˆÈÌëšvН%óŠ+®ˆ³Ô¹sçbŠÝ“܉J’ú¢Jf ˆJ@€$  H@€$ A *™I¶,íøàƒn²É&±êÅÉJ+­”¼‡óRV2?üðÃdæÏ9çœTægïÏâ•Ì£>:™¼A­É<ÜtÓMñýu“I˜hüâEûí·dj:g#øä*<ð@êN•Ìÿ”€$  H@€$  H@ ‚@(™g¢4÷ßÿXøbgóÔî?¥¬d²°g›6mâÌï¹çžµRyŠW2{÷î?}­µÖšéÓ“»Š×Ý:™Ÿ~úiœ+N&Nœ8ÓŒqCjÑÑ·Þz+õ-•Ìÿ”€$  H@€$  H@ ‚@)+™wß}7*Ytì³Ï>3åùå—_&…/¦l'¿RÊJ&ùìÛ·oœù%—\2ï¦EÉâpþñÇ/ºè¢#¿øâ‹Ô Å+™;vŒŸÎŽá©trÿÜ}÷ÝãûÉ@î \)xRZL®“‰:ݬY³øAGqDÞ¥.î²Ë.ñWZµj•´¹9ù8×ÉLÑóO H@€$  H@€$P²JYÉ$/–¤ìfÊiÅIáë³Ï>K~¥xa-ù­ÂçµµN&Oa9Ǹ°œÜqÇ…ͧ;ï¼sü•¼”E*™h}q:œŒ5ªð£¿ûî»äÚ¤u§d’7Þ8Îa«?ýôSá¼QÔËø+Ç|îý*™¹L¼" H@€$  H@€JŸ@)+™þùgR1{ñÅ ó;vl,a¡V¥nN)™/¿ürê†Ùøs6”Ìšžûã?¶mÛ6Î?ë|‘X K¯¿þzr«ñ‘#GæÞ\¤’É éŒ}È!‡ä&_!XtÛm·oæ¤H%³¦‚“rRZLÆdòѸqã’Å<ãŒ3âœä=a…Ï8o-[¶œ6mZîmÉÇ“™ËÇ+€$  H@€$  H 4 ”²’ ±ä>>+¯¼2 'Ö„ñçŸÞ`ƒ b‹=ÍSw¢‹VVVÆ7\wÝu©fãÏb”ÌâŸ{Ê)§ÄÙãd›m¶©)ñ¹çžC?Œo^h¡…Ðisó_¼’Ù¿ÿ8µÖ­[Ož<975®°•ùvÛmß°éyÞ›‹/xRZL)™¤}úÄiF',8¹Ê*«ðÜä¾ê|Dy÷ÝwSù$2“b¦ˆY𤴘«d’fjÑ({Ùl¥wùå—ç$•sÔÝeòqn‹Ë²ÑFÅé¹ëPü]O$  H@€$  H@€j‹@é+™3fÌèÕ«W,%Íô„mµ“Á„IPãÇO.º'U×Jæ,=—ÌÕV[-Î[¶7ºä’K’LÏ’’ÉÖ稑}´þúëøá‡<(¹"eôÑ€R(²àIi1¯’I²—_~y®b™7·¬­Zx¿¤äãT2S¯Ì?%  H@€$  H@@É(}%t̪fÍC6pÉ«\Å×Xc1cÆFýØcåÆpÖµ’I–fé¹”÷‚ .h×®]\´Ô Q©›m¶Sï v–”L’úá‡<ðÀšÃîÝ»_}õÕ±Jüí·ß²az2c¹Jf‘OJ‹5)™$Å&Gè¨É'¦Î‘©˜Ú³>Qòq*™¹|¼" H@€$  H@€$0‡¾ûî»Q£Fí¹çžLy^d‘Eúˆ!\wÝuwÛm·üã¬x‹l…Ä2›'N¼ë®»®¿þz„¬÷Þ{¯È/Nv¦ŸÎêsÙîçÎ;ï$ÄtuÖYb‰%˜åz¹×^{]xá…S§NéãfûÃóÎ;ç¢ £U¢ wÜqyÅÞ_ýuôèÑgžyæ©§žÊ«‰b5sŸ;«ÏM!y…8O^7(V\qE*ÀRK-E4h*+a¥É;=—€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@€$  H@ÿ¯:äo=‹]… 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€m Ó„Óç endstream endobj 8 0 obj 206855 endobj 10 0 obj << /Length 11 0 R /Type /XObject /Subtype /Image /Width 1774 /Height 2629 /ColorSpace /DeviceGray /Interpolate true /BitsPerComponent 8 /Filter /FlateDecode >> stream xìЀ ê)„  0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ ¸:äo=È… 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`à4ÊÄ#d endstream endobj 11 0 obj 20372 endobj 12 0 obj << /Length 13 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >> stream x­XwTSK·Ÿ“F ½H'ôÞ¥K/J‘ª€´„* E@¥ˆR¤Š(HQªŠ HÑ« ‚ XA° "¨ -ß è½ë{oÝõþy³ÖÉùÍov™3;gïìÀÊ"Èø½F8—®8šq@ 0 €Þ›fhkk‹üËøù@Ô¥yª­ú7š‰ ;’ƒ8üw°ûì`*>ËP1!À›ãc0–#;àa\c&ÿÜFÅ>;x€Š£þTÝ10l$b šyë}à ð2Õ/‘Nq½PØ>˘—"„‘a]–U‹QϾÃà ¾Ôú`;2ÿp¡Ù4Ãö¸—þá$MàZ†yº¸eüöYA\Cá~ª*Tk€~C¡,KÀ6sØÌ¦PÖË)”Í ¯è &D’£¶eaiè1ÿ×|ç™k áàP, ² ÔŽˆBÚ¢LÑÞ˜<š×t†ôíX-Ænfg–lQì[œ1\³Ü<…¼3üœê‚®B1¸á6‘qQЏˆ„™dT–t‡Ì{9yc²b•ÒKfUóÝÉj}@ÓT+Qû®Îg]V=m}Wƒ£†¥F÷ŒgMéÍöÚí;lžcqÃrÌjÝšßFÛö€]¾È¾ÃaÂqÍYÀÅä@¨k¹ÛèA´ÇnO¢W¶w·ÏQÄ×Ñ/Ó¿/`3HçP|p' jvéðB¸qĹÈÅ#Ñ>1Á±ä£1ÇãNO‹O=‘~2%!.1:) Ùñ”QŠôiÆÓógî§–¥E¦[dðfÌmÎ<‘å”-ŸƒÊy™{=ïô9|•ó4ç_4_8sÑ»P³ˆ¹hîRwqQIt©cÙîrŽòÏ*ÛªÒ«.‹^^ªéº’qÕ½V¶vµî~}AC@£v}ÓĵºëqÍÖ-¸–¥Ö{7ònÚTo!o=iÏêØ›övß„NƒNÊÝήcݺ= §§7¹Ïêû½—ýU÷è>`xðòaý_'Ù?ü}°sèô»ažáwOFŽŒê?£öìyé‹à1­qšñg•/#^™¼æ|ýñMûdæ[”ú;ÆwŸ¦{fν÷Už]Ÿ{ð!ï#á“úgÆÏ懿ô/ô[¤,-_øAÿ³rÕ}ÍlÃw+‡Bãof Ãˆ]ˆäMTú>f…V—îÉø9ް%Àñ'q qËðDóÞä›ÀJ íÃ…OŠ”‰Þ›‘ÀHJI™I‡ÊäʶÉM+0)j(•Ϫtª.ª‰©Ûk¤jÞÖú¬C»G@WMoŸ¾‹É0Ñ(ßøªÉÓ!³©½Kæ nKi+íýæÖÎ6A¶Gì’ð9öe×ûÞ¹ ˆº»y»ŸÖQw;þŽ}§xçÊ݇]—ºI=½½s}·îeô{ßW ˜|Ðú0ã/â#ýÇbƒìCÈ¡¥'¯‡ž¶Œ&> zŽ¡5&GÿëÄØËžW¯ ߤMƽ ò}ç6Ÿ±|o6k2gøAÿ£ñ'‹Ïøy÷/A ±_3k¾u-M,¯üàý¹gÅs5ñWíÚÓõ•MÁ-}Šávüù€è…Ô¡„byE@ëadhøiyèxéEİrŒ²LbÌlÌë,¬ p6ÐdÿÅÑÊIæRâúº«‘›Ä£À³ÈÛÌů# <ÌòÆ)âÖ…‰”ˆ’ÅLÅÅ—%º%“¤ô¤Ö¤[dH²²²äªåý$æk”‚”••¨´«žØm¦Æ 6ª^¨á­)¥¹¨Õ¦¯c¶‡eÏ„n¥I_Ã2xdxÞˆ`¬dLM/™…î5ÙDZïƒù‹<ËCV&ûùö·~`sÎÖÝNÔnÃ>ÁÁÎQÐqÑ©Ç9ß%ô€™«°+ÅmÒ½ë`™G¢g —•·š"| >ô­ñ;åï`(H z{¨;¸,äéœW4 ’1ä…ð=‘uQG’¢ÇxÆšU>ë‹K:¢Èn@®_œ^Ø2à ôºZ›„øS?Ø0ž dƒZpL‚_¤YAAP T õCsz„Âq qÎ2H¤2Y…œA‰¡üQu¨e´:=„áÇaÚi°4išhÑ´n´Mt´tÞtíôô‡é3È0¤0Ìb÷b«éƒŸ1™0µ2K0±p°¤±¢XãY7ÙbÙÖØ²S8’9é9³¹ø¸ªv©ìêá¶ç~ÇÅËÀ[ΧÍ7Â,€(T¼/ä%´†;/¼[xT$B”Cô†˜«Ø¦ø% #‰9É4)©!éH™Y9 W.o"?«¦(§8¨«l¢" òKõÅîfµõ£þšvZÆÚº:ª{Ôuõõ,ô½à WnôÈaªev|ï€9›…e–Õ¨5m½Ý–½C™ãг…KÅM7G÷zŒ§§×MfB0±×Oÿ;Ð(h Ø>d"40l•œ 糪#{¢‡cƒŽ!ãJãuNL%œIRI~›ríLfZx>S5›#g=o"ÿNAñÅè"çb¥RڲɊ–ªS—®H×ÒÔ-5L7]ÚÒw£§ínû­Ûm­]×{ûêû¯\yXö¨b°èIñÓK£©ÏSÆr&ê^=}óuŠgZõ½ÑÜÞJŸ(ó n_§¾Y.U//þþi±â³Jú°æ¼®¾Á²ñf³rëüvþÀQ°8He <ß ,$ ™AD(*‡z¡÷:8þŽˆxD-bI‡ÔEF ›‹(eTª@[¢Ï¡ßb1Ç1C4¢4‘4iEhch‡édéRè¦éè˃7CV›Š]dtaìeÒdjb–b®de)cf­d“bk`Wgïâ°â˜à àüÅ•¾Kx×-8öŸyÎðJñ>à;ÄÏÄM/ðM0KHYh#,$|_$L”®`d8G HDIŠI>•Š“–‘žI‘U•}+—.¯%ÿ^!_ÑPqQ©^ù¤Š‡ªÞn!5Hí£ú°F§f­V©vNÖžlÝ\½Bý*ƒVÃA£´©˜™ÕÞ#ûªÍ§-­|öWXÏÚÊÚÆßq€-œ²'ˆ¸’ÜZÜ7*Ê-v*å/›©¨«Š¸¬}}µ§ŽÐ€h¼| ߌhi¼Ø&~kª£äñ®Xׇž«}¤~Ùû_ÔüEx,0øôIÚSƒ‘•gÕ/œÇ±·^y½AOÖOÙ¼û2“:‹›»þÑâÓä|Ø—õ¯§¿q-U}WúѶ²wõùq}sóìvü€ ‚ßý60 ÑB*”݆bD1âR|…ÒCU£ÙÐ'ÑËð[>MãIó†Ö‹vŠÎŸn>†ɉÅa§˜r˜M™·XÚX#ØTÙ¾³ßä8ÎiÌÅÈ5¶«†;–ÇŠWœ—Â÷’¿] D0A(g'¬'"/* Æ*Ž_•ø&ùQjRúµÌ ÙQ¹aù!…§Š#J3*(UÉÝûÔ©§i4jj-é0íQÔݯ¨ŸlPnØcôÚxË”×Lw¯×¾dó6‹/VÒû½­/Ú<³cÁÛÙ§;ÐïFën~0Ý㉧·«O)aÁ×Èo8€Ä|èvˆ_¨PØ89/Åqd<¦è¨;ü›ã͉²b’XòlÊý3Mi…G3]²•r1yƒùç œ.Ò¶_ò/a*½^ޝøZuú²`MËÕuœõok®E4ë¶‚Ú2Ûmo³Ý»›×íÜËÝ7Ñ_<àûPê¯ï;†Ò†=FDFóžÓ½83Î>QüJìuÅ$ßÛ´©oÓV3—ÞOÏq0øèóéèçÄùä/ä…ƒ_5™_|+Yr^fZîøîòýç´Ÿ»~V¬H­­2¯&®~û…ÿղƵ½öp}Ý}½j}aCc#j£zãÙ&zs÷&q3w³wsyKdËf+v«jëÉÖ:E’‚§ÄQj(£ÔøïôKÔúèCƒCÉ8+c¸Áù!Á‘pµ=ØàO,ÉÇÚ¾Sñ‡°[j/È_káQö¦ðn‡XüÍÌcÑÛÄÆü0¯`l c,Œ­üÈfxÃv — o [3Á8È—ähÿ› Þîq©2©aFTynù†›þ‘i‰ ppþ­ÛOŽÄ;ÂX –=jI•§úZ%úšüÞE ¶¶‚yxÏŽÀsêþ9`,Ì€7 à ä0†ß¬OÌãày(¼ê Âa¹™m¹?RNÛóÀÿ¡%ü¶íEmë³°Nˆg`¶µc÷ Àœ7œ»3JµJ•6þ̶=o{ý£a Ïþ›ù³CêîvVÆxžê9äº_TAhŒ¶SJ¥‚RC¡táÜ p(./GíFi¢ Qú(xMkpþæüß{Ù9Ÿ¿ŸÑöæ "·O„ô7û¿¼‚@ø?ŒíÞ>e€¿EþTÔÝr‡Ú¿ÿ׈ð†ûzŒCÃbÈþ8CøŸ _9œ9‰  ‡SQRÒÿýÒ`W endstream endobj 13 0 obj 3893 endobj 9 0 obj [ /ICCBased 12 0 R ] endobj 3 0 obj << /Type /Pages /MediaBox [0 0 425.7742 630.9811] /Count 1 /Kids [ 2 0 R ] >> endobj 14 0 obj << /Type /Catalog /Pages 3 0 R /Version /1.4 >> endobj 15 0 obj (Mac OS X 10.7.2 Quartz PDFContext) endobj 16 0 obj (D:20120201222925Z00'00') endobj 1 0 obj << /Producer 15 0 R /CreationDate 16 0 R /ModDate 16 0 R >> endobj xref 0 17 0000000000 65535 f 0000232350 00000 n 0000000178 00000 n 0000232099 00000 n 0000000022 00000 n 0000000160 00000 n 0000000292 00000 n 0000000381 00000 n 0000207436 00000 n 0000232063 00000 n 0000207458 00000 n 0000228024 00000 n 0000228046 00000 n 0000232042 00000 n 0000232192 00000 n 0000232256 00000 n 0000232308 00000 n trailer << /Size 17 /Root 14 0 R /Info 1 0 R /ID [ ] >> startxref 232425 %%EOF pymc-2.2+ds/docs/_images/geweke.png000066400000000000000000006623411204033704200172470ustar00rootroot00000000000000‰PNG  IHDRî EðOBiCCPICC Profilex­XwTSK·Ÿ“F ½H'ôÞ¥K/J‘ª€´„* E@¥ˆR¤Š(HQªŠ HÑ« ‚ XA° "¨ -ß è½ë{oÝõþy³ÖÉùÍov™3;gïìÀÊ"Èø½F8—®8šq@ 0 €Þ›fhkk‹üËøù@Ô¥yª­ú7š‰ ;’ƒ8üw°ûì`*>ËP1!À›ãc0–#;àa\c&ÿÜFÅ>;x€Š£þTÝ10l$b šyë}à ð2Õ/‘Nq½PØ>˘—"„‘a]–U‹QϾÃà ¾Ôú`;2ÿp¡Ù4Ãö¸—þá$MàZ†yº¸eüöYA\Cá~ª*Tk€~C¡,KÀ6sØÌ¦PÖË)”Í ¯è &D’£¶eaiè1ÿ×|ç™k áàP, ² ÔŽˆBÚ¢LÑÞ˜<š×t†ôíX-Ænfg–lQì[œ1\³Ü<…¼3üœê‚®B1¸á6‘qQЏˆ„™dT–t‡Ì{9yc²b•ÒKfUóÝÉj}@ÓT+Qû®Îg]V=m}Wƒ£†¥F÷ŒgMéÍöÚí;lžcqÃrÌjÝšßFÛö€]¾È¾ÃaÂqÍYÀÅä@¨k¹ÛèA´ÇnO¢W¶w·ÏQÄ×Ñ/Ó¿/`3HçP|p' jvéðB¸qĹÈÅ#Ñ>1Á±ä£1ÇãNO‹O=‘~2%!.1:) Ùñ”QŠôiÆÓógî§–¥E¦[dðfÌmÎ<‘å”-ŸƒÊy™{=ïô9|•ó4ç_4_8sÑ»P³ˆ¹hîRwqQIt©cÙîrŽòÏ*ÛªÒ«.‹^^ªéº’qÕ½V¶vµî~}AC@£v}ÓĵºëqÍÖ-¸–¥Ö{7ònÚTo!o=iÏêØ›övß„NƒNÊÝήcݺ= §§7¹Ïêû½—ýU÷è>`xðòaý_'Ù?ü}°sèô»ažáwOFŽŒê?£öìyé‹à1­qšñg•/#^™¼æ|ýñMûdæ[”ú;ÆwŸ¦{fν÷Už]Ÿ{ð!ï#á“úgÆÏ懿ô/ô[¤,-_øAÿ³rÕ}ÍlÃw+‡Bãof Ãˆ]ˆäMTú>f…V—îÉø9ް%Àñ'q qËðDóÞä›ÀJ íÃ…OŠ”‰Þ›‘ÀHJI™I‡ÊäʶÉM+0)j(•Ϫtª.ª‰©Ûk¤jÞÖú¬C»G@WMoŸ¾‹É0Ñ(ßøªÉÓ!³©½Kæ nKi+íýæÖÎ6A¶Gì’ð9öe×ûÞ¹ ˆº»y»ŸÖQw;þŽ}§xçÊ݇]—ºI=½½s}·îeô{ßW ˜|Ðú0ã/â#ýÇbƒìCÈ¡¥'¯‡ž¶Œ&> zŽ¡5&GÿëÄØËžW¯ ߤMƽ ò}ç6Ÿ±|o6k2gøAÿ£ñ'‹Ïøy÷/A ±_3k¾u-M,¯üàý¹gÅs5ñWíÚÓõ•MÁ-}Šávüù€è…Ô¡„byE@ëadhøiyèxéEİrŒ²LbÌlÌë,¬ p6ÐdÿÅÑÊIæRâúº«‘›Ä£À³ÈÛÌů# <ÌòÆ)âÖ…‰”ˆ’ÅLÅÅ—%º%“¤ô¤Ö¤[dH²²²äªåý$æk”‚”••¨´«žØm¦Æ 6ª^¨á­)¥¹¨Õ¦¯c¶‡eÏ„n¥I_Ã2xdxÞˆ`¬dLM/™…î5ÙDZïƒù‹<ËCV&ûùö·~`sÎÖÝNÔnÃ>ÁÁÎQÐqÑ©Ç9ß%ô€™«°+ÅmÒ½ë`™G¢g —•·š"| >ô­ñ;åï`(H z{¨;¸,äéœW4 ’1ä…ð=‘uQG’¢ÇxÆšU>ë‹K:¢Èn@®_œ^Ø2à ôºZ›„øS?Ø0ž dƒZpL‚_¤YAAP T õCsz„Âq qÎ2H¤2Y…œA‰¡üQu¨e´:=„áÇaÚi°4išhÑ´n´Mt´tÞtíôô‡é3È0¤0Ìb÷b«éƒŸ1™0µ2K0±p°¤±¢XãY7ÙbÙÖØ²S8’9é9³¹ø¸ªv©ìêá¶ç~ÇÅËÀ[ΧÍ7Â,€(T¼/ä%´†;/¼[xT$B”Cô†˜«Ø¦ø% #‰9É4)©!éH™Y9 W.o"?«¦(§8¨«l¢" òKõÅîfµõ£þšvZÆÚº:ª{Ôuõõ,ô½à WnôÈaªev|ï€9›…e–Õ¨5m½Ý–½C™ãг…KÅM7G÷zŒ§§×MfB0±×Oÿ;Ð(h Ø>d"40l•œ 糪#{¢‡cƒŽ!ãJãuNL%œIRI~›ríLfZx>S5›#g=o"ÿNAñÅè"çb¥RڲɊ–ªS—®H×ÒÔ-5L7]ÚÒw£§ínû­Ûm­]×{ûêû¯\yXö¨b°èIñÓK£©ÏSÆr&ê^=}óuŠgZõ½ÑÜÞJŸ(ó n_§¾Y.U//þþi±â³Jú°æ¼®¾Á²ñf³rëüvþÀQ°8He <ß ,$ ™AD(*‡z¡÷:8þŽˆxD-bI‡ÔEF ›‹(eTª@[¢Ï¡ßb1Ç1C4¢4‘4iEhch‡édéRè¦éè˃7CV›Š]dtaìeÒdjb–b®de)cf­d“bk`Wgïâ°â˜à àüÅ•¾Kx×-8öŸyÎðJñ>à;ÄÏÄM/ðM0KHYh#,$|_$L”®`d8G HDIŠI>•Š“–‘žI‘U•}+—.¯%ÿ^!_ÑPqQ©^ù¤Š‡ªÞn!5Hí£ú°F§f­V©vNÖžlÝ\½Bý*ƒVÃA£´©˜™ÕÞ#ûªÍ§-­|öWXÏÚÊÚÆßq€-œ²'ˆ¸’ÜZÜ7*Ê-v*å/›©¨«Š¸¬}}µ§ŽÐ€h¼| ߌhi¼Ø&~kª£äñ®Xׇž«}¤~Ùû_ÔüEx,0øôIÚSƒ‘•gÕ/œÇ±·^y½AOÖOÙ¼û2“:‹›»þÑâÓä|Ø—õ¯§¿q-U}WúѶ²wõùq}sóìvü€ ‚ßý60 ÑB*”݆bD1âR|…ÒCU£ÙÐ'ÑËð[>MãIó†Ö‹vŠÎŸn>†ɉÅa§˜r˜M™·XÚX#ØTÙ¾³ßä8ÎiÌÅÈ5¶«†;–ÇŠWœ—Â÷’¿] D0A(g'¬'"/* Æ*Ž_•ø&ùQjRúµÌ ÙQ¹aù!…§Š#J3*(UÉÝûÔ©§i4jj-é0íQÔݯ¨ŸlPnØcôÚxË”×Lw¯×¾dó6‹/VÒû½­/Ú<³cÁÛÙ§;ÐïFën~0Ý㉧·«O)aÁ×Èo8€Ä|èvˆ_¨PØ89/Åqd<¦è¨;ü›ã͉²b’XòlÊý3Mi…G3]²•r1yƒùç œ.Ò¶_ò/a*½^ޝøZuú²`MËÕuœõok®E4ë¶‚Ú2Ûmo³Ý»›×íÜËÝ7Ñ_<àûPê¯ï;†Ò†=FDFóžÓ½83Î>QüJìuÅ$ßÛ´©oÓV3—ÞOÏq0øèóéèçÄùä/ä…ƒ_5™_|+Yr^fZîøîòýç´Ÿ»~V¬H­­2¯&®~û…ÿղƵ½öp}Ý}½j}aCc#j£zãÙ&zs÷&q3w³wsyKdËf+v«jëÉÖ:E’‚§ÄQj(£ÔøïôKÔúèCƒCÉ8+c¸Áù!Á‘pµ=ØàO,ÉÇÚ¾Sñ‡°[j/È_káQö¦ðn‡XüÍÌcÑÛÄÆü0¯`l c,Œ­üÈfxÃv — o [3Á8È—ähÿ› Þîq©2©aFTynù†›þ‘i‰ ppþ­ÛOŽÄ;ÂX –=jI•§úZ%úšüÞE ¶¶‚yxÏŽÀsêþ9`,Ì€7 à ä0†ß¬OÌãày(¼ê Âa¹™m¹?RNÛóÀÿ¡%ü¶íEmë³°Nˆg`¶µc÷ Àœ7œ»3JµJ•6þ̶=o{ý£a Ïþ›ù³CêîvVÆxžê9äº_TAhŒ¶SJ¥‚RC¡táÜ p(./GíFi¢ Qú(xMkpþæüß{Ù9Ÿ¿ŸÑöæ "·O„ô7û¿¼‚@ø?ŒíÞ>e€¿EþTÔÝr‡Ú¿ÿ׈ð†ûzŒCÃbÈþ8CøŸ _9œ9‰  ‡SQRÒÿýÒ`W!ücË pHYs.#.#x¥?v IDATxìÝÛÏ×]7ðqb;‰ØIsrš““Ж„@ˆ Q/@BœJ©Qn·Hˆ+$ÄmùÐ{…„ÜT\ôÊYBEâ©ÐR TIimÎçœØq¿óÝû]ožDNãg­{­ÙŸ‘¶÷cû™Ù¿õù­Ykf~{öÞsj^&  @€ @€ @€çTà¼súê^œ @€ @€ @€•€ÂŽ@€ @€ @€ @ …»’  @€ @€ @€ wú @€ @€ @€î:H‚ @€ @€ @€(Üé @€ @€ @€:P¸ë B @€ @€ @€  p§ @€ @€ @€è@@ᮃ$ @€ @€ @€€Â>@€ @€ @€ @ …»’  @€ @€ @€ wú @€ @€ @€î:H‚ @€ @€ @€(Üé @€ @€ @€:P¸ë B @€ @€ @€  p§ @€ @€ @€è@@ᮃ$ @€ @€ @€€Â>@€ @€ @€ @ …»’  @€ @€ @€ wú @€ @€ @€î:H‚ @€ @€ @€(Üé @€ @€ @€:P¸ë B @€ @€ @€  p§ @€ @€ @€è@@ᮃ$ @€ @€ @€€Â>@€ @€ @€ @ …»’  @€ @€ @€ wú @€ @€ @€î:H‚ @€ @€ @€(Üé @€ @€ @€:P¸ë B @€ @€ @€  p§ @€ @€ @€è@@ᮃ$ @€ @€ @€€Â>@€ @€ @€ @ …»’  @€ @€ @€ wú @€ @€ @€î:H‚ @€ @€ @€(Üé @€ @€ @€:P¸ë B @€ @€ @€  p§ @€ @€ @€è@@ᮃ$ @€ @€ @€€Â>@€ @€ @€ @ …»’  @€ @€ @€ wú @€ @€ @€î:H‚ @€ @€ @€(Üé @€ @€ @€:P¸ë B @€ @€ @€  p§ @€ @€ @€è@@ᮃ$ @€ @€ @€€Â>@€ @€ @€ @ …»’  @€ @€ @€ wú @€ @€ @€î:H‚ @€ @€ @€(Üé @€ @€ @€:P¸ë B @€ @€ @€  p§ @€ @€ @€è@@ᮃ$ @€ @€ @€€Â>@€ @€ @€ @ …»’  @€ @€ @€ wú @€ @€ @€î:H‚ @€ @€ @€(Üé @€ @€ @€:P¸ë B @€ @€ @€  p§ @€ @€ @€è@@ᮃ$ @€ @€ @€€Â>@€ @€ @€ @ …»’  @€ @€ @€ wú @€ @€ @€î:H‚ @€ @€ @€(Üé @€ @€ @€:P¸ë B @€ @€ @€  p§ @€ @€ @€è@@ᮃ$ @€ @€ @€€Â>@€ @€ @€ @ …»’  @€ @€ @€ wú @€ @€ @€î:H‚ @€ @€ @€(Üé @€ @€ @€:P¸ë B @€ @€ @€  p§ @€ @€ @€è@@ᮃ$ @€ @€ @€€Â>@€ @€ @€ @ …»’  @€ @€ @€ wú @€ @€ @€î:H‚ @€ @€ @€(Üé @€ @€ @€:P¸ë B @€ @€ @€  p§ @€ @€ @€è@@ᮃ$ @€ @€ @€€Â>@€ @€ @€ @ …»’  @€ @€ @€ wú @€ @€ @€î:H‚ @€ @€ @€(Üé @€ @€ @€:P¸ë B @€ @€ @€  p§ @€ @€ @€è@@ᮃ$ @€ @€ @€€Â>@€ @€ @€ @ …»’  @€ @€ @€ wú @€ @€ @€î:H‚ @€ @€ @€(Üé @€ @€ @€:P¸ë B @€ @€ @€  p§ @€ @€ @€è@@ᮃ$ @€ @€ @€€Â>@€ @€ @€ @ …»’  @€ @€ @€ wú @€ @€ @€î:H‚ @€ @€ @€(Üé @€ @€ @€:P¸ë B @€ @€ @€  p§ @€ @€ @€è@@ᮃ$ @€ @€ @€€Â>@€ @€ @€ @ …»’  @€ @€ @€ wú @€ @€ @€î:H‚ @€ @€ @€(Üé @€ @€ @€:P¸ë B @€ @€ @€  p§ @€ @€ @€è@@ᮃ$ @€ @€ @€€Â>@€ @€ @€ @ …»’  @€ @€ @€ wú @€ @€ @€î:H‚ @€ @€ @€(Üé @€ @€ @€:P¸ë B @€ @€ @€  p§ @€ @€ @€è@@ᮃ$ @€ @€ @€À^œ}S§NM¯¿þúôÖ[o­ù»… @€ @€êÎ;ï¼iÏž=Ó¾}û¦½{•?ê%­y.ôÜs©ïµ·VàÍ7ßœžyæ™éøñãÓk¯½6åï @€ @€¨HÁî /\í.½ôÒé²Ë.«Ûµœc…»sœ/¿]¹³îĉÓ+¯¼2Ý{ï½ÓÓO?½ºóNán»úÖ @€ @€ °Yîöïß¿*Þ}Ï÷|Ïê9wÝåî; ‘îFÊ–X‡H.źGydú½ßû½é?þã?V•9|Ã4€ @€ @€çX •yñÅOŸùÌgVwÜåλÇOùw QîFÉ”8#ï¶ËÇc>õÔSÓc=6:thõ®LçŸþbÚ©!œ}¼9àÕW_ÞxãÕ»Ê.ºè¢³„W$@`1S^~ùåÕ›Œrâë]ª‹I­†8§Æ–sÊïÅ ,NàäÉ“«s 4,Ç+®«,.ÅDàŒò)g9ÆÈ㥗^š^|ñÅéùçŸ÷Igg¤ç—zP¸ë1+bZ¬@ù¨Ì|\æ[o½µºuûÓŸþôtà 7Ly÷Ç%—\â݋;†øàr`ú÷ÿ÷«ïмãŽ;¦»îºëƒQ¯@€Àb2¦|á _X}Ì÷'?ùÉéÚk¯]l[5Œ³'`l9{Ö^‰À6<ú裫s ´õçþçWoŽÞ†vk#ïȘŸ|òÉéÙgŸþâ/þbzî¹çVoj>~üøêù¿íoúP¸ë?G"\@ w)Øå‘ŸóN°£GN·Þzëtå•WNúЇ¼;lAùÖg[ ¨ßøÆ7VãË-·Ü¢pw¶àõ,L cÊ=÷ܳú¤€Ûo¿}úÈG>²°jçBÀØr.Ô½&å |ó›ßœþë¿þkÕÀ;ï¼sºüòË—ÛX-#@à=ò gßþö·WŸnvðàÁ騱c«k#¹/×`ó°I@án¤l‰uqùxÌ«®ºjºþúë§#GެŠw>ÖaqiÖ gM ½›»w_xá…éꫯžR¼³ @ V cJ> Ç&ùtcJ­¤õØ)`lÙ©ágZò‰F9^ÉrÓM7­®«´nÓúŒ'Â])Ð]pÁã5@ÄÞ% p÷.%p¶2™8p`Ê»A|ûÙÖ÷z–%ï·Û¿ÿ´wïÞÕwÜeL± @ V cJ¾×.cJŽUŒ)µ’Ö#@`§€±e§†Ÿ hÈ1JùÞr]¥u›Ö'@`<î2\tÑE>Íl¼ô‰ø4çæßü @€ @€ @€gY@áî,ƒ{9 @€ @€ @€§P¸;Š#@€ @€ @€ p–îÎ2¸—#@€ @€ @€ p:…»Ó©ø7 @€ @€ @€gY@áî,ƒ{9 @€ @€ @€§Ø{ºôo @€ÀxçwÞtá…N˜öïß?^DL€@WS.ºè¢éÔ©SÓùçŸßUl‚!@`\c˸¹9rŒ’ã•,_, @`  wKÈ¢6 @€Yà‚ .˜n»í¶éÊ+¯œ®»î:&hȘrçwN'Nœ˜:Ô´-+ @ [Š„g6!c”¯dÉøb!@€KP¸[BµÌy·iŠvûöí›.¹ä&hȘräÈ‘éäÉ“îâm’´2;Œ-;5üL€@«@>i$Ç+Y2¾X @€Àî–Em @€³@ v7ÜpêxwÅW0!@€@“@Æ”[n¹ezóÍ7WÁÛ´1+ @àÿ [t6)¯ ÈñJ–Œ/ °…»%dQ @€À,Õ›nº‰6"1åcûØF¶e#(Æ–"á™MøàôôÓOO÷ÜsÏêù‰'žX=¿öÚk«b^–ÝÞ½{§›o¾yºüò˧üÁœîºë®éÃþðtõÕW¯ {Cš @€ @€èJ@᮫tæl 䮺çŸ~zæ™g¦§žzjõ8vìØôÒK/­î¼ËÝwYrg^îºËï宼+®¸bU°Û¿ÿtÉ%—¬ {¹/wåY @€ @€ @€µ wµrÖ^àøñãÓþçN÷ßÿôè£N¯¾úêtýõ×O?ôC?4]tÑEÓe—]¶*Æ¥X—»ó¾úÕ¯NÏ>ûìôÏÿüÏÓ¿øÅéç~îç¦ÿñŸ®¼òÊéÆoœRȳ @€ @€ @€jîjå¬7¼@î¤{ùå—§^xaÕ–Ü5—"ÜM7Ý´ú»k¯½vU¸KA/ùÐC­îÆ{üñǧx`ºõÖ[§Ûn»mõ1š×]wÝð@€ @€ @€œ[…»sëïÕÏ¡@>æòSŸúÔt÷ÝwO^xáêã080å‘ï´ËwÛeI/«yË-·¬>.óÏÿüϧÏþó«â]~¾ýöÛWÿ—»ô, @€ @€ @€Z…»Z9ë /;ìr§Üo¼1]zé¥SþþݖÇOGŽ™¾ò•¯¬>3wë=òÈ#«»ô²  @€ @€ @ E@á®EϺC ìÙ³gu§]î¨;ÿüóß·-ù܉wðàÁéòË/_­“â]>J3Û° @€ @€ @€ZîZô¬;´@ w»ùxËîöïß?]|ñÅÓW\±ú¾»î^yå•éÔ©SC[ž @€ @€8÷çûD@` |Ï]>óøñã«¢]î²Ëwãå‘" … @€ @€ Ð" p×¢gÝ­xíµ×¦_|qzòÉ'§o}ë[«Çüð‡?<]uÕU«ÐÜ* %@€ @€ @€6.à£27NjƒKÈÝu)Ú;vlu·ÝÉ“'W›y饗N‡šÎ;¯¾>ßÄ7Í››^}ý8ƒ¯Û{q¹Ùoß¾wüsÕ_ò‰Ÿ‰'K˧&¦B²Ûö¬_}ýg‰!_!8ßðؼÌ_Q8ß¹~´l¬ÄRžk¶Uò–çÄÕºì4*n5ÛLÞJþJŒ5Û)1¤?•Ÿk¶“uvµÆ§Ä“çڥī–þ]^§Q‹U‰¥<—íïö91äQƂݮ¿ó÷K ŠÛÎÿ?ӟ˾Vòw¦ë½û÷J e,x÷ÿïöﻳ´ä-1£–Ü•bÕÒ¿×-ZKÅ«<—ÿÛÍó¦s×ã\·3‡»±)¿[r·s,(ÿWó\ŒZò–×-¹+Ï5±dÄ‘Ç&æºÒ¿‹YmLe®kÙçòÚ%Ž2ÔÆ“õvµä.1•±²e,(1ìÇ[Ú·³·Ýn/1mb¼Ìë&†8h™è‘Gâšk›«™ ÄƒÌ¸Ì5Ó¦%NW_=Íßk8ÍE×úÏÄô ëÄU^v\âÉÁ\â™oÜl:Îk'–gŸ]Ÿt&Æš%O‡OÓLÓëÖl'Hå€)ý{¾Yµi‰Qr—þ”GíEƒìcyÌ»ï*‡µr%†}hš.¿¼©i«‹O<±6J_ª=©J_ʾ–Ø’Ã<×,“’»ä,¹«§¼vŒW§Êzùÿ3yNžæ÷M¬¾ç¯]å°&wyí¸Ä*û\úUË›GYÇ•ŸcW³dž¸jçßÄtÉ%ë¹®Œ›5ý2ñ$wyd,HL-KŒ²ß%¾ä®¦?åõ3Ïe¬Ìþ–ý®¦g;eŸ»ì²iÊXÞ²Äfs]\’»Ä–˜jÇËÄ“Gæºìw-ãe\K‰'1Ö,e®KÞJk¶Sæº9Ò>×åÜ ¹+ãT­U'ã“9¯6w‰#1dh=7Øô\—Ø^z©}®ËXÜÕν¥ßd¼Ì\ú{ÍXþTŽQJkƦ¼vúvÆíMÎuéçy´ô§8åÜ ¹k™W’¯Œ3kãIîÒ¿Ëx™ÜµÄTŽÁ[çºä.±ô2×¥?eüÎ\×zn¼å±ÉsƒX•±ªì»y.ãdŽÊܲ›õËï–}s]útúQ‰§v®KÿÎy]ë\—x’·ìÿ›<7Èþ–ÜÕŒ—qÏ8™GâŠWÍx™í$†ä¯÷æßj—8•ë`¥¿×l+1•ë`-s]bHßÞä\·ó:Xâ|è¡õuÍÃXŒ.0ï2ÞK wÚ½üòËóá+Ó£>:¬>²*Ú]6‘_>_±¿âŠ+æ“™ÃóÄ3Ï<Ë©ùˆàÙg_šO`ŽÍÛÝ7¿Vôßk[ó™Ó”]6Wæ#ù9/›"K¹ –I°eÉTN¦2Ùe’ËUÍ’bFêWNöjXr°’©œ˜§¸Ù²Ì_E8]|ñÛxµÛJL9ØÌðÜ%VV5ÛÊÁn9 Ë…ºÖ%O¥èšÜÕlæ8'-9ØÌÏy®]Ò‡ÊIBðZ–ô¡ùÆÖÕÒÒÇã’Xr‚«šþ¾œ¾”}/ùk-Ü%OÏ<³>(YöÁš%±¤=ÙçÊÉBÍvOâˆQú÷&vS–ÄX³$¦ŒéO rª&wéÓÉ]☇î•UM—ã‚–±©Ìu›/3×åØ)ñÔ^‹EÆí\èÉþÖ:×%Žìo‰«eÉø´‰¹.ûY¹ø” bµãeöù2×}ç;mãeqÉø± 6we®Ëü›y®¶(UæºX•cñcÍsöµMÌu‰%cfë\—±)ýiçéÛe®«íK1-s]ö¹bUc]æºôí+¯lŸë2^f^iëJA£u®Ë>—Ç&çº8·”¹.û]r—øv»dî/ãvž“¿–%cAÆËÌÁ­s]úf®lb®ËÜÒË\£2×µžÄ'ãö&Ï [­ç‰«—¹.ûYúSë\—mä¼®u®ËxÔãu°Ìu9ÏÜãu°–¹.ãe¹Ö2×¥_—±òLçº\—=>ïTyÎMoîØ¹žzj=~§oeÌ|ã×çãßcÓSO=?ÿ½bPoÀ­Kà˜‡_ ï%ðêü–׿ýÛ¿žŸ™þéŸþiU¸ûØÇ>6ýèþèô#?ò#Ó-·Ü2Ÿ€œOêv¥'NNù—_œß©ïú?í’׸~~ÜX3×e¼,sÝ&ÆËÌuŸýìzœÊ˜Y;^f®û—Yå­s]æ»ÛnkŸë2^~ùËë¹.f¹¨Y3×%Wwß½¿ê§ÚÆË2×ýîï¶—Ùß²ßeŒJáµf¼Ìþ•9.ceö·Ö¹.Ç?û³ëñ©fß-ëd¼ÜÄ\—ñ2¹Kßž¿bzu1º¼Ænž3^¦g®KîZÆË¼næº_ú¥·ß`P3^–¹.oTK\ÉaÍRæºýÆo´Ïu97ØÄ\—±2cfë\—}?sKÆ¥?ýÓ¡·×)s]âÊÅñš1<[+s]Ž{ÿñÛ纜ÌèÒ|^—sƒ¿þëõ8Þ2×å%û^rØ2×e¼ÌX°É¹®õÜ Ìu7“»;w»dÏ9]溌›Ò·j—rn0ÐÏêø e®Ë¹AÆñÖ¹.ç¹PßË\—ñ²Ìu­ç9nŠÑ&Ï bÕRØ(ç)µÎu9Ϲxë\—>sºôñ£äQ3×e¼Ìy]ë\—sƒä.cÀ&Ï 2F-ù:XË\·ó:XË\·ó:Ø™ÎuùÚ¢ÿž;òósù´çv\4ɰ¾ýíu¡<ýëÔ©7çyùØ\´{aÎåSUý´vü¶B ®ÚðADb›:Èp¯ÏW†s·Ý<0\ÅóŽ§ç £¯ÌTÍ n[}Df~Þ_{–7·7ïyòÉgæÉä͹`wÑü˜€¦=ï!1_9]Ýi7ŸLóÊtjuRw,åÂ_Í…Çw¿P&ºLz™s0Uó®Ãl3˜G®ßU›wÄÕ.iS)DÝw_íVÖëå ,'c¹à_s¡¯¼zLrÐ’ào~s}á°üßnžó®¾Œç¹%žòš‰)'0¹ø”1Ùñ&¤ò+ïûœð;îX_4¬-BäE’ó8%–ÄÔš»¼;;ÛÊ6[¬Ò¦œ¼äD*¹Kßí’‹à‰%'/1o]Òž|΃®cˉqÍ’ é“9‰©Ýoóº‰'ûHö•o}k]”ª‰§¬SNZ³/׎Y/ûo.øäÀ¼6w)>åbHNjr_ÚTžÓ¦ìk3s‚—~Q³¤_&w‰«f¿-¯™u“»¼ëðÿ·îâSÙV.Ì•ñ²5¦2^¦?ŪfÉþVÆ€MÎu±Jîjö™Œ—9ùÍ\—ØZúw™ë61^f_I<›˜ë2^¶Îu¹¨Ræ»–ñ;ý&ë—¹.ceâ«éŸ/¿÷{×s]MîKN§ob®KÛRŽQMîKüe¼Ì8×:^f›±Î>W[lÍ6Ê\—}.s]í±S™ëÒÆMÌuÙÆ&溜äã[çºô¥2×ÕÅ;K¯s]ÆÌMÌu/3ï¶Îu97¸à‚ö¹.ãeöáMÎuÙfËÜ’õwž¤H¶Û%çåœ.æ-ñäµ³~ÆË8µÎuOöÌ—ÒÎÚ%ñdŸëi®Ëx™x6qnPîþÚÄx™ý6ãey$Æš%ûIr—ÂX/s]ÆËŒ%­s]Ú“cÕÖ¹.箃YïÚy¬¥?eÙÄy]9/ØÍ\wr~ñæúÙy§ÿö<±åÆŠ²d¬ÌµË´-ûN wo½õòüüÊêî¼ô ‘îFΞØ?0L ÷ηÀdBø×ý×Õ$qà 7Ìz¾wúáþṸqÇ|×ÍÕó;Ùç#õ†eß¾½Ó]wÝ1_Ôºi.\6?Í×óÚi—¼Ö|&7Íg¾«çóW'QygvÞ%¶‰ )ÛÉ»*˵'ùÈúõÙ^-QN2r+úL¾:8?-Ëþc.°ÞtÓúB]Ë…•Ä”;äÒ¶rs†!¼ã×rð›œ%¦\di]SÞŸÂDíIcâÈ»isWK.°Ô.9ÉHûræg~fšn½µvKëõŽ]o+ÛlÉ]Ú”XrríԜĦméK¹€‘~ÞºÄüŸX›çä.k–ô¥;ï\÷ËôÑÚ%.SÒ/ñÛ‹“Ùw³'¦šwe¦Cʾ›÷Iä]•5¹KÛrÁ0±dÿm]bž»sÑ 'DÙ÷j–Ä’‹bÙ_jß’ñ2…¤$bž‹,- ²­˜g{ù9Û¯YÒžŒMi[æ“XÕ,Ùß²ß%›œë’·™ýdãeœâý¸e¼LL/óNØ–¹.wfìÎ]6­s]Öϸ›¹.ceÆÌš ¤éC?ðëq7í¬]â[æºMŒ—éO­ãeÚ’þ˜;vò.ôÄX3^–¹.ý(ûpëóMÌu/“»<׎—iKÆ”2×ýò/·—Ù^ÆÝŒ—‰©v¼,s]Š’ÙÖ|ÚQµ”¹.Fy´.ÙÆ&æºô£ôñÖ¹.ûlÆ‚Mœ”¹.}!}¢v)s]¬’ÇÖ¹.óï&溘缮u®Ë¹AÚÖ:×e¼Ìزɹ®õÜ Ìu97ȾWShI›’¯Ä’9js]ÆËŒá­s]Î Ò¿[çºl#Å{™ë²Ÿ•¹.û_˹AÚ–Ç&ÆËôƒŒ—ytÎÇ[Ï Wë\—ù$cJë\—ñrs]Ú“xZçº2'o›/³M\˸›q Û«=7ÈqDöÙâ:XË\—˜Ò¾Ò¶Ú¹.cer¶›¹îÀ¼B>íìÈ|qé|²“*Ê’OÈ13FåœåÍ7ߘ÷ÁÇçÂî3ÓW¾òùœøéò«ž )°g¾³h~¿Š…ÏoÙøüç??¿ƒöÉésŸûÜ<ØŸ~õWõÿîò1™5Kîâ»ÿþûçw„<<”Õg§o|ã¾é7óÿÌÇ>>OÌ×Ì“àUó Í|$z†KNrr £GÛOr²’wf–I¯vt(êWN„j/bä`7œrð›weµ,qÊÇNä !,±«Yr0ñ<ç`%V5K.¬ä`.@¹8SOyíøä‘‹˜1«É]bÈ…ñø$‡5Ù—xòÚÉ]ŒZîD*mKÎ’»ô§—~Õ²d?{è¡u\ù¹¦?åõSŒrBœÜÕžä%†ôŸŒéßµcSbJ ×]·6ÊX•üÕ,‰!ãdbKLÉaÍ’ý­ô¡MÎuñJlµãeúPN>ËxYÛ¿ã’8òíš‹†;MãTŠd­s]ö»µÎuéC±jë²%–ôñÄ•þU“»ôïìkñÉ1JËx™ÜåÑò)%1Ê~¯ÄVÓŸ²­Ìs+Wë\—X2·´Îuéß¹°Ò:×%WeŽ+ŽŠßnžË¾Ÿý-û]Ëx™×O.°e¬Jîj–2×åM‰+9¬YÊ\«Þ[çºÄ’Ü•qªv®+êZ纣$†Œ;Þp_Cõ޹.cgú{ÍR溕s„ší”¹.çÉ]íÜ[^;F3K¯/SŽQÒŸZçºä.±lr®K\y$Κ%9Ë\—Ø’»š± û\æ•ôŸŒ›jãIÒ¿sn}¯u®K,‰«u®‹OÆñ^æºôår^×znPöýÏ [/s]úxÆ‚ôñôïÚ¹.ûXöµÖ¹.1Ä'ûÿ&Ï _Æ…šñ2ûo9/H\=^+ý=±îvÙ9ǵÌu“ÒŸ69×e¾ËØ™q*×\~øþùk[žþà>;ŠÁ}Ó¯üʯL¿ök¿6¿!âš¹èÕüúsƒTžÒ:aØ¥@ jß™?Ÿæ[ógýãüÁÍ)ØÝ9¿UíÂù,3ßk—wy\›3© -9ÐÏ» r²Ÿ»œò¼›9$ëç %ëìf½÷ ?ybȤ—GíK9‰JL‰±v)ëçÝfµ'Óåµ³­¼³+Ûi)Ar°¯8Õ,É[9àl‰§¼v|²$g5'Y7qä‚J¬’ÃÚ%Û)ÛHÊTËRÊK¨ÝVÚ§´1ù«íß%ŽÖ‹aiG¬r2q•ý®¦}éK%w‰¯vI<ÙG²¯dLªíKåõc÷Ä—m×,Y/ñ”q%ãAMî²û]M,;׉sNÈbÔ2^f;É]Ü_í’u³r×GQyíb¾‰˜Òâ“ý¸¶?%ž8¥-ý»´os]b*cSúfþ^³”¶åyãe|OžkcJ;²~—ÒÎ溴'ý)ZÇËÌicµKÉ]¼71^–þ”í¶ä.ñä{ö·Ö¹.ûÜ&æº8ob®ËvJî61^–¹®e¼Lÿ‰QÆË–¼eÝÄ“~9¡öÍSÙN+³­Ö%ÛØÄ\—~™mµÎ+éi_æºÖöóÖ˜Ê~’¾™v¶ÎuiWËØTrž1'ž2¾õ2×%¦2×å¹·sƒô£Œ5û\ò“}¥ä.ù«]²nr·‰¹.æÙNé -1mz®ÛÄx™qw®ƒµô§8gŒkëC›œëÒ³¿e¿Ëµ§¼Q,ÅáÖã„Ú~n=›˜‡q E E»/ùË«»âò™ùþºÏÌßÀ›weä#2=:¬ln·ÉPN<óNª\ˆÊc·ÙF––Ix½…õÄ–“ó,µšY71•¸ò÷Ú¥Pç¹öÆÎ×Þ­íÎuËÏÙFN„³´ÆTŒÊóz«uæ8øYZrWúQkL9H*uTmn"w9±+oy7\íRlÊsív²^¶‘“Í,-yËú›È]â)yËAyë’핸Z¶•þ%F-N%g›ˆ)ÛÈ;OK\ëŸêþ,ñ”øj¶’}$ô§Ö±)¯¿‰}.í)ãey®i[Ö)6Ūv;Y/}¼Ç¹®ô§–¶eÝMä.Û(ý¨<×ÄUò–uwþ\»­\0Ø9Ôl'ë”~ÔSÖ-ãe™[jã)ëm"w=Îuñîi®KÊò‰ù¡/Ÿ«iÏW«>2Hõ•sE-Ÿ¥|Á&ÎîßM8ÊAUb7q û®—ØÕ_71yîêÏà—{‹©$žë\í¤KL%®ÿ~®îÉ(Ũ§¸zëߥÏôdTòVžKŒçú¹ÇÜŨÇÜõSúM¹ëͨìo=Å•˜J\çzÿßùú=%®bÔS\=îs±êɨä­<'¾–s£s×[L½õ¥ô瞌O1ê)®÷¹ÞrWòVž_‹Ü½JÎÊóû¯qv~£ÇÜõSÉYOãeb*q¥§$¶¸å±óßÏN/ò*6/ p·yS[Làä|/õ=÷Ü3ãÓ?üÃ?L_úÒ—æ»àO?ñ?±ºÓîÓŸþôüNÓËVE¼Áš&\ @€ @€ @` …»’%ÔÍ äN»Wço}~e¾‡ú±Ç›¿Àôáù ¼Ÿ]}¯]î®ËÇc^=ûùs™òwoÌßÇ»—=óÛ8ò‘š @€ @€ @€@‹€Â]‹žu‡HÁ.wØ=øàƒÓç>÷¹é˜Ž92Ý~ûíÓÍ7ß<}⟘?û¢)ß{—»ñÞkÉÇiÞxãŠwïäß  @€ @€ @€3P¸;#&¿´D·æoT}ñŧcÇŽMÏ?ÿüêñ¡ùi÷Îß`šGþ?wØ=÷Üsßµùù½<, @€ @€ @€…»=ë-pâĉé¾ûöµ¯M/½ôÒüÅ¥{¦Ç|U¨»ÿþû§¯~õ«óšž7å#5ßkÉ:ÿøÇ§ßùß™®¹æš÷ú5ÿN€ @€ @€x_…»÷%ò KHAîõ×__=ò‘˜‡^55wÏåc4óšï·¤p—‚Ýé¾ûîýÖõÿ @€ @€ @€ w;5ü¼Uœî¾ûîé£ýèôôÓOOÇ_µÿ»Ýa÷n îòýv‡z÷ù; @€ @€ @`W w»âòËKHáî§ú§—Ô$m!@€ @€ @€8oàØ…N€ @€ @€ @`1 w‹I¥† @€ @€ @€Œ, p7röÄN€ @€ @€ °…»Å¤RC @€ @€ @€FP¸9{b'@€ @€ @€XŒ€ÂÝbR©! @€ @€ @€# (Üœ=± @€ @€ @€,F@án1©Ô @€ @€ @€‘îFÎžØ  @€ @€ @€# p·˜Tj @€ @€ @€ÀÈ w#gOì @€ @€ @€‹P¸[L*5„ @€ @€ @`d…»‘³'v @€ @€ @€Å(Ü-&•B€ @€ @€ 0²€ÂÝÈÙ; @€ @€ @€Àbî“J !@€ @€ @€Y@ánäì‰ @€ @€ @`1 w‹I¥† @€ @€ @€Œ, p7röÄN€ @€ @€ °…»Å¤RC @€ @€ @€FP¸9{b'@€ @€ @€XŒ€ÂÝbR©! @€ @€ @€# (Üœ=± @€ @€ @€,F@án1©Ô @€ @€ @€‘îFÎžØ  @€ @€ @€# p·˜Tj @€ @€ @€ÀÈ w#gOì @€ @€ @€‹P¸[L*5„ @€ @€ @`d…»‘³'v @€ @€ @€Å(Ü-&•B€ @€ @€ 0²€ÂÝÈÙ; @€ @€ @€Àbî“J !@€ @€ @€Y@ánäì‰ @€ @€ @`1 w‹I¥† @€ @€ @€Œ, p7röÄN€ @€ @€ °…»Å¤RC @€ @€ @€FP¸9{b'@€ @€ @€XŒ€ÂÝbR©! @€ @€ @€# (Üœ=± @€ @€ @€,F@án1©Ô @€ @€ @€‘îFÎžØ  @€ @€ @€# p·˜Tj @€ @€ @€ÀÈ w#gOì @€ @€ @€‹P¸[L*5„ @€ @€ @`d…»‘³'v @€ @€ @€Å(Ü-&•B€ @€ @€ 0²€ÂÝÈÙ; @€ @€ @€Àbî“J !@€ @€ @€Y@ánäì‰ @€ @€ @`1 w‹I¥† @€ @€ @€Œ, p7röÄN€ @€ @€ °…»Å¤RC @€ @€ @€FP¸9{b'@€ @€ @€XŒ€ÂÝbR©! @€ @€ @€# (Üœ=± @€ @€ @€,F@án1©Ô @€ @€ @€‘îFÎžØ  @€ @€ @€# p·˜Tj @€ @€ @€ÀÈ w#gOì @€ @€ @€‹P¸[L*5„ @€ @€ @`d…»‘³'v @€ @€ @€Å(Ü-&•B€ @€ @€ 0²€ÂÝÈÙ; @€ @€ @€Àbî“J !@€ @€ @€Y@ánäì‰ @€ @€ @`1 w‹I¥† @€ @€ @€Œ, p7röÄN€ @€ @€ °…»Å¤RC @€ @€ @€FP¸9{b'@€ @€ @€XŒ€ÂÝbR©! @€ @€ @€# (Üœ=± @€ @€ @€,F@án1©Ô @€ @€ @€‘îFÎžØ  @€ @€ @€# p·˜Tj @€ @€ @€ÀÈ w#gOì @€ @€ @€‹P¸[L*5„ @€ @€ @`d…»‘³'v @€ @€ @€Å(Ü-&•B€ @€ @€ 0²€ÂÝÈÙ; @€ @€ @€Àbî“J !@€ @€ @€Y@ánäì‰ @€ @€ @`1 w‹I¥† @€ @€ @€Œ, p7röÄN€ @€ @€ °…»Å¤RC @€ @€ @€FP¸9{b'@€ @€ @€XŒ€ÂÝbR©! @€ @€ @€# (Üœ=± @€ @€ @€,F@án1©Ô @€ @€ @€‘îFÎžØ  @€ @€ @€# p·˜Tj @€ @€ @€ÀÈ w#gOì @€ @€ @€‹P¸[L*5„ @€ @€ @`d…»‘³'v @€ @€ @€Å(Ü-&•B€ @€ @€ 0²€ÂÝÈÙ; @€ @€ @€Àbî“J !@€ @€ @€Y@ánäì‰ @€ @€ @`1 w‹I¥† @€ @€ @€Œ, p7röÄN€ @€ @€ °…»Å¤RC @€ @€ @€FP¸9{b'@€ @€ @€XŒ€ÂÝbR©! @€ @€ @€# (Üœ=± @€ @€ @€,F@án1©Ô @€ @€ @€‘îFÎžØ  @€ @€ @€# p·˜Tj @€ @€ @€ÀÈ w#gOì @€ @€ @€‹P¸[L*5„ @€ @€ @`d…»‘³'v @€ @€ @€Å(Ü-&•B€ @€ @€ 0²€ÂÝÈÙ; @€ @€ @€Àbî“J !@€ @€ @€Y@ánäì‰ @€ @€ @`1 w‹I¥† @€ @€ @€Œ, p7röÄN€ @€ @€ °…»Å¤RC @€ @€ @€FP¸9{b'@€ @€ @€XŒ€ÂÝbR©! @€ @€ @€# (Üœ=± @€ @€ @€,F@án1©Ô @€ @€ @€‘îFÎžØ  @€ @€ @€# p·˜Tj @€ @€ @€ÀÈ w#gOì @€ @€ @€‹P¸[L*5„ @€ @€ @`d…»‘³'v @€ @€ @€Å(Ü-&•B€ @€ @€ 0²€ÂÝÈÙ; @€ @€ @€Àbî“J !@€ @€ @€Y@ánäì‰ @€ @€ @`1 w‹I¥† @€ @€ @€Œ, p7röÄN€ @€ @€ °…»Å¤RC @€ @€ @€FP¸9{b'@€ @€ @€XŒ€ÂÝbR©! @€ @€ @€# (Üœ=± @€ @€ @€,F@án1©Ô @€ @€ @€‘îFÎžØ  @€ @€ @€# p·˜Tj @€ @€ @€ÀÈ w#gOì @€ @€ @€‹P¸[L*5„ @€ @€ @`d…»‘³'v @€ @€ @€Å(Ü-&•B€ @€ @€ 0²€ÂÝÈÙ; @€ @€ @€Àbî“J !@€ @€ @€Y@ánäì‰ @€ @€ @`1 w‹I¥† @€ @€ @€Œ, p7röÄN€ @€ @€ °…»Å¤RC @€ @€ @€FP¸9{b'@€ @€ @€XŒ€ÂÝbR©! @€ @€ @€# (Üœ=± @€ @€ @€,F@án1©Ô @€ @€ @€‘îFÎžØ  @€ @€ @€# p·˜Tj @€ @€ @€ÀÈ w#gOì @€ @€ @€‹P¸[L*5„ @€ @€ @`d…»‘³'v @€ @€ @€Å(Ü-&•B€ @€ @€ 0²€ÂÝÈÙ; @€ @€ @€Àbî“J !@€ @€ @€Y@ánäì‰ @€ @€ @`1 w‹I¥† @€ @€ @€Œ, p7röÄN€ @€ @€ °…»Å¤RC @€ @€ @€FP¸9{b'@€ @€ @€XŒ€ÂÝbR©! @€ @€ @€# (Üœ=± @€ @€ @€,F@án1©Ô @€ @€ @€‘îFÎžØ  @€ @€ @€# p·˜Tj @€ @€ @€ÀÈ w#gOì @€ @€ @€‹P¸[L*5„ @€ @€ @`d…»‘³'v @€ @€ @€Å(Ü-&•B€ @€ @€ 0²€ÂÝÈÙ; @€ @€ @€Àbî“J !@€ @€ @€Y@ánäì‰ @€ @€ @`1 w‹I¥† @€ @€ @€Œ, p7röÄN€ @€ @€ °…»Å¤RC @€ @€ @€FP¸9{b'@€ @€ @€XŒ€ÂÝÿeïNcì¼î;ÏÿkßY«ŠU,î¤DR$Em‘e9’bG‰Ùd’t6´;ý¢“ ax2/f0hÌ40À`0¯z0̼èA£{Ó1`;‰·8^d[¶ìÈZ(‰¢¸ï[Y¬}ßk~¿S¼4ÍËâ"V]Ö­úàðV=õÜgùÜË{ŸçüÏÿœóRr" € € € € € €ù,@à.Ÿ_=Ž@@@@@@`Ÿ[1/%'‚ € € € € € ÏÅù|ð;‹%055sssqþüù¸téRŒŽŽF___LOOGOOOÌÌÌÄÄÄDĆ bÓ¦M±yóæhooâbþ-ÖëÀv@@@@@XÍDVó«Ï¹ßp€ÎÁ¹'NÄ[o½ÝÝÝqöìÙ‹“'O¦ ÝÐÐPųÏ>/½ôRznkk+»Šü€ € € € € €"@àîAôxîŠp¦w®qåÊ•ôè@^aaaÔ×ׇ3òÆÇÇcvvvEœ3' € € € € €ËO€ÀÝò{M8¢‡ à¡1=æÑ£GãG?úQ Ðy̲²²xâ‰'ÒïθëïïOÃezÈLW  € € € € € °XîK’íäµ€3ë\«««£¹¹9êZZZRàο;û®¤¤$¯Ï‘ƒG@@@@@å-@àny¿>]œ9×ÐÐ2ó/ÿò/ãÏþìÏR6]qqq àyž;¡ù‹_ü"®]»–ƒ#b € € € € € °Ü­ÆWsÎ(**JËêêêÂ5S<§ƒvî‘q—Qá@@@@@–B p)6Ê6@@@@@@@àþÜÝŸk¯B¡™©«ðô3º§¿ IDAT9e@@@@@È‘»A³@@@@@@î$@àîN:ü @@@@@@ ¸Ë4»A@@@@@@àNîî¤Ãß@@@@@@È‘@qŽöÃn@à6³³³qùò娭­èêꊢ¢¢Û¬QPP•••QUU•ªö2  € € € € °’¦¦¦R{©‡††brrrÁÓó:çÎ‹ŽŽŽ=þ€@¾¸Ë—WŠã\‘þÂùÎw¾o¾ùfTTTDyyù‚Á¸’’’رcGìÚµ+vïÞ~ö2  € € € € °’úûûãwÞ‰îîî ßÌÌL ÇÈÈHtvv.´ËÈwyóRq +U ¬¬,íœAçÀ]aáíG°uÎ/--MYydÛ­Ôwç… € € € €Àêp©ÛCÝêÈî”IçÀ]¦.Ô¶ºº59û| p—o¯Ç»¢´û½ßû½Ø·o_´´´ÄÚµkï8Tfqqqú²ò—–¦ € € € € €+M ¾¾>žþùðTC/¿ür Ì-tŽÕìÌ™3qñâŸråJúy¡uYŽ@>ÐòŸ¯Ǹbœ5WSS )h×Üܼ`ànÅ"pb € € € € €ÀMΜóe.ÕÕÕ7ý%ûGî<´¦çÂcj¡l–äŸÀíÇäË¿óàˆ@@@@@@Èkwyýòqð € € € € € €+E€ÀÝJy%9@@@@@@¼ p—×/ € € € € € °RŠWʉp,†@ooošÈtff&¦¦¦bvv6†‡‡cpp0ÆÆÆÒï###qíÚµ8wî\¬Y³&ÊÊÊÒ®=ñi{{{𵍍( ãØ € € € € €¬w«ä…æ4ïM ¿¿?Ο?“““1>>žuØ9xçǹ¹¹ôØÓÓ—/_ŽÊÊÊ(--M///µkצŸ ÜÝ9k!€ € € € € €Àuw¼¸IÀ™tÇÑÑÑpf3ïÄsÐο;pç Þ•+WÂ:÷Š‹çÿ9ûî±Ç gÛe‚y7mš@@@@@@; ¸»#\mŒ/ùËáŒ:W•éš Ø9×ÑÑ]]]ñÁ¤ ‡Ätmkk‹O~ò“égŸé@@@@@¸Ww÷*Åz«BÀÙsiLgÝ9`—)Ψs¹yYæoÜ9/3·óÛedxD@@@@@{ pw¯R¬·*þðÿ0>ûÙϦ,;g×ÝOqЮ¹¹9ïȶ»9ÖE@@@@@ ¸ã}€ÀM555áJA@@@@@r-P˜ë²?@@@@@@È p—mÂ@@@@@@r.@à.çäì@@@@@@lwÙ&,A@@@@@@ çîrNÎ@@@@@@È p—mÂ@@@@@@r.@à.çäì@@@@@@lwÙ&,A@@@@@@ çîrNÎ@@@@@@È p—mÂ@@@@@@r.@à.çäì@@@@@@lwÙ&,A@@@@@@ çîrNÎ@@@@@@È p—mÂ@@@@@@r.@à.çäì@@@@@@lwÙ&,A@@@@@@ çîrNÎ@@@@@@È p—mÂ@@@@@@r.@à.çäì@@@@@@lwÙ&,A@@@@@@ çîrNÎ@@@@@@È p—mÂ@@@@@@r.@à.çäì@@@@@@lwÙ&,A@@@@@@ çîrNÎ@@@@@@È p—mÂ@@@@@@r.@à.çäì@@@@@@lwÙ&,A@@@@@@ çîrNÎ@@@@@@È p—mÂ@@@@@@r.@à.çäì@@@@@@lwÙ&,A@@@@@@ çîrNÎ@@@@@@È p—mÂ@@@@@@r.@à.çäì@@@@@@lwÙ&,A@@@@@@ çîrNÎ@@@@@@È p—mÂ@@@@@@r.@à.çäì@@@@@@lwÙ&,A@@@@@@ çîrNÎ@@@@@@È p—mÂ@@@@@@r.@à.çäì@@@@@@lwÙ&,A@@@@@@ çîrNÎ@@@@@@È p—mÂ@@@@@@r.@à.çäì@@@@@@lwÙ&,A@@@@@@ çîrNÎ@@@@@@È p—mÂ@@@@@@r.@à.çäì@@@@@@lwÙ&,A@@@@@@ çîrNÎ@@@@@@È p—mÂ@@@@@@r.@à.çäì@@@@@@lwÙ&,A@@@@@@ çîrNÎ@@@@@@È p—mÂ@@@@@@r.@à.çäì@@@@@@lwÙ&,A@@@@@@ çîrNÎ@@@@@@È p—mÂ@@@@@@r.@à.çäì@@@@@@lwÙ&,A@@@@@@ çîrNÎ@@@@@@È p—mÂ@@@@@@r.@à.çäì@@@@@@lwÙ&,A@@@@@@ çîrNÎ@@@@@@È p—mÂ@@@@@@r.@à.çäì@@@@@@lwÙ&,A@@@@@@ çîrNÎ@@@@@@È p—mÂ@@@@@@r.@à.çäì@@@@@@lwÙ&,A@@@@@@ çîrNÎ@@@@@@È p—mÂ@@@@@@r.@à.çäì@@@@@@lwÙ&,A@@@@@@ çÅ9ß#;D@@@@#077—Îevv6=Îç ¬˜säD@È•»\I³@@@@VˆÀôôt¸:h799™3<ì\‹‹‹SõÏ¥¥¥+äÌ9 @–V€ÀÝÒú²u@@@@VŒÀÌÌL¸¾FÙu»´Â:Õªuªmªª³ª£ª#ªã15U½½ýʺ+‹îîî(..ŽšσW¢¿S@@àfw7kð3 € € € €üŠÀôôt|ôÑGòò|¼ýö[*ó}eÙý3ÕWµ^»ê^Õ Uí2»9öŽê÷#10p<Þ}÷ÿŒææj=¾›6mн{÷FCCƒþNA@›ÜݬÁÏ € € € € ð+θëíí«W¯Æàà„†ÇtÎCc®WmQ­R-U½µx àõë9¥šï®@w=i¨Ì©©©[Wæw@;Þ € € € € ° ÀÌÌLœ:u*:]]QT´UÁ¸G”q·[Ï©U]hÈKÙss½ÖŸ‰#GŽÇÈÈpìß¿?ZZô£ € €ÀÍînÖàg@@@@øgÜÇØ˜ç«›ÓßʯWgÞÝ.Ó.ótô\+Óz³³“ÚÎDÚ–ƒ@È p—mÂ@@@@¸IÀC[NLLjÈËBeÎ9瀜系—R¨ ½ Õ" —9¥:©Ÿ¤ € €À­…·.àw@@@@@àf‚‚‚(,,а—^:«êÀ[æÑËnW2ëdÖ›Ó6 S½ÝÚ,C@æ¸ã=€ € € € €wp°mãÆ1::}})xwLsçõŒ.ÕiUÏsw»ü€!-Ôº—•¥wVsãÆÖ­Ÿ‰M›6De¥³ö( € p«CeÞ*Âï € € € € pCÀÙv´ÕÔTGY™ªŽªŽ«N©.4ì¥ÿ6¦:¢àÝ~¥Q]]©ZÅÅ4K †‚ €@–ßY$,@@@@@Œ@QQQ<òÈ#QUU—.uê±RóÔQýŠVÙ  Ü³z\£êÌ;¥Ù¯:©@݇züPAºŽôœÆÆºØ½{wlذA¿Wéo@¸U€ÀÝ­"üŽ € € € €72»¦¦¦øðÃC ºUèoGbf攂v;ôX£ß[T7«zÈÌsªÃ ÜýXõ£´´ jk«bíÚ¦¸[¿~}”——k  €Ü*@àîV~G@@@@*ÓÁ»ÒÒÒhkkÇß§Ì»þèìЉ‰1Í}ç9ï®h}Wî:UÇ´~·t%QWW{ölŒuëZ¢¢¢"mËÛ¤ € €@¶»l– € € € € €ÀM¸9p÷ÙÏþvìÛ·7¾þõoÆ÷¾÷Ztw_ˆË—ÿ÷˜ššÖÚEé³é±¾¾IÁº¦Ø¹óÑøÒ—þµ²îjõûº())¹iËüˆ €7 ¸»YƒŸ@@@@@ KÀr………iˆËúúúhnnŠõë[£¬¬8fg'4ßÝ„²îæR-..Në¶¶:p×­­- ÚÕEMMuZžµq € €À w7(ø@@@@pàÎYs555ñ…/üóøƒ?øƒŠ ÎÇØØXô÷÷§§677§!1£¡¡!eØÕÕÕi¾»ù!7Ú>Ë@@ ‚Àï@@@@¸'Ïuçê@œƒxkÖÔèys1>>ž~wÖ‡Ã,//O¿{=æ´K üƒ €À]ÜÝ•ˆ@@@@@àVã<÷]{{»†ËœéiÏsi.ŠÃ‡(7¡5ö¨nVýŒêšë?—êqVuZYwåzlU­T°n&*•±÷y×âùçŸOCgê@@XFî–Ñ‹Á¡ € € € p;ÙÙÙŸˆwß=?ÿù?iLgÌ9ÃîÕÏ©zˆÌ[ËÖë ¦õؽ½ÝñÓŸ¾›65Ç_ýÕ_ܺ2¿#€ € €À2(\ÇÀ! € € € €ÀóA»ñÑu“13ãlºJ­½NµAµ`gfWë‡f ›Y§€Ÿç¾OÙ{SSSÚÎ\f%@@@`q· ^@@@…Œ®®ŸGYÙ¸²ïz£ºº:êêꢤ¤DÛ  € € €Àr ãn9¼  € € € 8+î—Õó×9Kηó¸©ftúñ¶%³n±²îæTgolï¶«³@@š»‡FÏŽ@@@¸7‚‚‚pýeqoFÕw+ôe~óCc…+@@–—ÀBãi,¯£äh@@@X¥Ø§!-ýXXX¨Œ¹IÎ" ê IDATÕA‰8ëînóÔMh!þFµm§4mÃÛùÕ`à*æ´@@XFî–Ñ‹Á¡ € € € p«€ƒummmQYYÍQ[ÛããT¿®UUïq=ÞnÈÌù,»‚‚# ÐýCTTôĺuM±iSs444j;µ)€wëþø@@ž»‡gÏž@@@¸«€³â<¬¥3弫ªªŠ™™iîzôÜ^ÕaUgÝ9ûÎÃif2ð¦ôó´ª3ó”m755Uª5)ƒÏw@@X^î–×ëÁÑ € € € %àÀ]eeE|þ󝯾}{âÇ?~KõçZé&õX«Ì»_Óc™ª‡Æ×ò ª§ôó!Õ£ÑÚº1þøÿ™2î6(xW­e@@Xnî–Û+Âñ € € € pgȵ·¯²²ÒøðÃZãšêŒêaÕ:ÕMª•ª£ª#ª'U½ÞEÕ>þÚcóæ ÜmJóåi!@@–™»eö‚p8 € € €ÜNÀYw[¶l‰æææèééIÃgöõMÄûïwÅääp }+fg‹”e7¥:£9íF4¬æDìØ±GÏ{1¶oß;wîÔ/þ¿1<<##o)p7……ŪEQ]Ýk×6ÅóÏ^z!­ïÀ]Y™‡Ó¤ € € €Àr p·_•<<¦¹¹9õèô$è@@@¥¨¬¬TPn­2í&ã×~ííFâêÕö˜žžVP¯$öÖ¬©úú†ìs–]uu5÷mKý°}@@P€ÀÝòôy‚v¼@@@Ü ´··§ ºÙÙÙxå•Wbff&z{{•q7›æ¯ó°šÎ¬«¨¨H¿—””¤ƒór  € €,_wË÷µáÈ@@@¸­€‡Ítu)--M;í<ЇÑô߸cXÌÛò±@@e+@ànÙ¾4 € € €wð(Τ«««K+gFDÉ<Þ} ¬ € €ËE€ÀÝry%òü8˜ã.Ï_@@@ò^€a0óþ%ä@@ˆùq5€@à<Ÿ@@@@@@àã ¸ûøv<ó&Ï¥@A@@@@@øøî>¾ϼIÀCeR@@@@@@>¾»oÇ3o`Òó›0ø@@@@@øÅã9<,ÂBbÀY(,@@@ȹ@fD˜ŽŽŽ¸zõjô÷÷Ç™3çbll,bvv.**Ê£´´4š››cݺ–¨««‹]»vEqqqåü˜Ù! € €w H€Œ»âãÉ € € €‹(ààÝ•+WâðáÃqþü…xýõŸF___tvvÆÌÌt ÔUUU+X÷hìÛ·76lØÛ¶m wJ%p·ˆ/›B@¸ow÷MÆn'@àîv*,C@@È¥ÀììlôööFOOO;v,î._¾¦€Ý¤²í ¼«SÆ]ÄôtIŒŒFee”•ˆ¡¡áزeK466¦GgãQ@@xî†ú Û§{22Tæ {Q9@@@ &''ãÀñýï?Þyç8tè†È¬V nÌÍmPÐn‡ÎªDÃg^Qˆ®®ãñÞ{?Mx¼O<±?¾ô¥/¦!4ɼËÃ7‡Œ €¬w+àE|ا@¶ÝÃ~Ø? € € €€ƒvóóØ * דʪ+‹©©5ÂiR­WmQ-VOiwQ¦a3»Uëô¼2eêõ¥:44UUU©¼@@ §îrÊÍÎ@@@@`±´;{ölš×î7Þˆo|ã19ù)í~K»Ú¢ú’ªx%ª.3ªS àÓã) •y\Ùyÿ—Ö×^{-6nÜÏ>ûl459àGA@@ wîrgÍž@@@@` <…ƒ³í†‡‡Ó|už³Îuë®WàªUo.ÞªŽiÍÑÑq ¡Ùµµµ^súæ•ù@@œ¸Ë 3;A@@@¥˜˜˜ˆãÇÇÉ“§¢³³'ŠŠê•M÷˜rŸÖ.U+n³ëB-s`¯.ý­°ð1þ âàÁciþ»§Ÿ~:Z[[oó<!€ € °tî–Ζ-#€ € € €@fffR¦\ww·²æ&£  L;ä˜ó™ÒÝZ ´ üzõºõi¨Ì¾¾X³¦\?OÝú~G@@`Énwåºä;e € € € €Àb xhË©©ieÙ(pW®êùìÜìáÝÝJ¡}eznqÚ†ƒv~“‚ € €@®ÜåZœý!€ € € €À¢ 8ÈæÀë쬛:œIçA†´»×À]yÌÌ”*p7s=HàNx@@ ¸Ë18»C@@@Å(,,ŒÊÊʨ®®Š’’e˦1¢«.„›ÕߦU'T¢¸xLÛ¨HÛ)..Ò2  € €¹ p—[oö† € € €‹,P\\ëׯ­[·D]]±2ï.)óî’öâÚ¥:s›=:˜ç€Ýêµ(*:¢€Ý•ز¥MusTTTh9@@Ü xÜ  € € € ·EEEÑØØ£££Q__ååe Þ]SýHç´^ÕóÝU^¯îÃì€ë5Õ͇wJ» ëj£µµ5Õ²²2ý²Z&''Ãubb"ºººÒ0¬##£ φ3< õ~)ªªÊ¨­­5kÖè=T”êj5ã¼@@`qÜ-Ž#[A@@@‡$à ÛÎ;£¹¹%Nœ8--­18x8††ÎhÈÌmš»îtd-ª¨zÌ+ª½ À¼©Ìë ¶ (Ø7©ç5ħ>õ|lܸAÀz­CY­ýýýÑÝÝ/^Œoûô^Ò{ët æ•––†ßs7¶Ç¶m[âÙgŸ'žx" ×ê![Ø£ € €W€ÀÝÇ•ãy € € € °, x+OsÓ9óÎÃfÅÔT¯jµ²¤.(€ç¹îœEç¦Õ>í.+hשçÎ(h×”ªvΞòð›”Õ'à ;gÕe‚vçÎ]ˆóç;¸ÖcŸwSQZZ¬À]©ÞSÅé}ÒÚº>Ö®mІ†úhkkÓ<‹%ïVß[‡3F@`Ѹ ]4J6„ € € €CÀ;gA9èö;¿óÙØ·oO|ó›ß‰þðÇ À\‰K—þ7ð<χÌ,PVÐNƒgVGMMI<òÈöø‹¿ø—±aC{ìØ±=Íoça)«K`zz:Ž=ζûû¿ÿûøîw¿§ÌÍI ÁZ£`^EŒ=§`]¹Þ;ã©^½z!>üð»ñÓŸ¾©÷^Mìßÿxüõ_ÿ7ju]>“Ì»Õõþál@X,w‹%Év@@@@à¡ 8xç@IMMM𣮹y­2 Öhn²ñW¦Ô|&•Ðë:0·fM­,Ušo²ôZ£©im ´{h/ãCÝñÜÜœÞ+ÑÓÓW¯vGgç5íèmT­Ô« z¬PKuvöšæÀ ó†ÔŽuëÖÅðð°~KY›Z‰‚€Þ7î4 î û=æÏ?ús&ó¹E—7  €ÀÍînÖàg@@@È[7~WWW§a3ÿ÷ÿëx饕=ÕçÎSf4 èóµkצùÈÒ‡ÕÕU±yóæ´ó0‡”Õ'à Šƒn_ýê߯Áƒ5·ÝLŒ?ªË6eÛý¹@ªUÀs&¦1ÓZÞ­Ç+12ò†'O^ˆ¯|å«iŽÄñ/¾²î´e øsÇó$ŽÇ‘#Gèï@àϪ7¦Ï!íÛÒÒ’ytXÅoN¸I€ÀÝMüˆ € € €ù-à¹é\7n܆¾JChŽŒŒ(ƒª3e¿¸¡Ü™yžÏ æÎzaN»ü~ÝôèÐufÔ… 4\æ1ZÚ˜kÑfÛTŸT­R-UÍ”Yý࿯W&Õ{Z74ÞˆæÁ» es)»*³&«WÀï)„]/]º”:x™weee)¸ë~ÿQ@ȸËHðˆ € € €+NÀãÂpjj*êêêRùš5kRv]eeej@_q'Í Ý—€³íºººâÚµkšÓn@C]ŽèýÒ®`Ü'´íªeª·Îyè!4ËUëT·ê}õ”‚3ƒqêÔE=wBxSZNYm™Ü‰'âøñãiØÕwß}Wï©ñ¸|¹Kݽ¯ Rg#GŽés¨XÙ¾[¢½}ƒ†ëm‹^øõÐóç–;P@V§»ÕùºsÖ € € €¬x7|gw+þd9Á- Ü]¾|9 ­:::¢m­W}QuêB;ÏwW¡ ÝvÕ§¸;¥á2¿¯ ÝPšSÑA‚/"ZEeÖ©—*ÎÚüÖ·¾W®\‰×^ûÞÓ ³Fq¸$½/ffzõ¾™Tfð&íÚcÿþÇãñÇ÷¥làÒÒRÞ;†¤ €«T€ÀÝ*}á9m@@@ _ÜêyÜîvc<Ô˜+såË+Éq"°|<|¡?_2S™K„›Îî–ù4Œ™›+Öp›³iÈÍå{¦ÙR ø»Ê™›žÏÎA`íz{Ç”a·U»ô{¤]Õíë}6«zU?éû­PìŽ)ã³7Nœ8©¡}ëbÏž=é{N+P@V¡»Uø¢sÊ € € €@¾¸Ý ž›ÌÁ;ÏSæe­­­áa+**Òc¾œljËO ó93::ª Ë|ÆÔü0˜µ:ØjÕ»î;|TkT3aýx£druZÒ¢ç_ÑÑqÕÑ4D´óUn<@V‰w2«ä…æ4Xn¾¨u¹xñbÿÝCýüçoÆØØ˜eºÒUUUéÆiãÆ ±}ûÖhnnŽ^x!ñÌ£ € €¬_zXLí¾÷½ÄW¿ú55€ÎèzqR½6éúðY¬?ÝêÒSzVpï„IߎӧϪ¡s"ZZšã/ÿò_©ñ¼ž¬; Q@àîî0ZWW§E±wï>u(-ÐgK\¾üu}ölUu`Åu¯ªƒwÖ¹S=¤ú#Õ÷bíÚæøÍß|%6mÚÀÜ›Y-Åß_îìùX‡†ô]Ö§÷Œ;ïRmU-º …|ξs¸PÏIQÜîáï2•) €«K€ÀÝêz½9[–€/jÝs¬»»;õ¦>{ö|¼ûîAÍ_2ª@^GºP­®®ÑÍN…oôûTêuöøã«GuUš¿Ä7W@@•!à†Og*ôõõ+Ëî||ðÁA]V©1t³N°I é{ôبڬêN`΂é×sœ¡0¬õ âðáÃz~oj§N ªAæí8sæ|êùè ¼^øõ4l&Á»eû2s` € €À} ¸Áóøñãqöì9eÙujXÌb]®Sý¯´Ï´SÕš®.»U=Ôú”Ö)U°¡8wî”:Ç•%s9­ÑØØeen¥ €w())ާžz*ÚÛÛÈ«H˜¾¾Bu.ý¾>gœõôªGq`fR:U/jŽÍRëžGÝ»víRæoKšòA+QV‰€‡gv-))MÕggûuöÜeæB\ÃàAÕ‘´nfèVgÚÑæ±Ë@•-@àne¿¾œËRÀ;ëÎ;?ùÉOâÍ7ßL»‚‚'u¼Uj|yB%ZæùÔ;ªFœƒê½¸&eç=ù䓱ÿã©7$±Ëò%æ @@ûð5â¡C‡”5wDw Ü•èºp½êŸh[õªnü¼yÄ…–ëûX“Ö=¬_¯©ÃWoŠ=3?2»ëL< €À]<4á'?ùÜõÌ©©ìSG‚ ÑÑñ-a¦õüÌgç¸SnTAaªÛ¶}&>õ©OÅŽ;t¯º?Ö¬Y“þÎ?«CÀ6çÌïJôXªï%2Ô+gÒÝ-p7¦uw«ï5çŒxhspp0Í]òÎ;ïÄ‘#G¼ Ý=§cZ§ú²ªdü³/N=‰/`÷è¢wŸ2ñúÕó¡x§âý÷?P/Èõ±{÷nzQKˆ‚ €什¯¯\¹š‚v½½Î¶s†ÝfU_–ª¨Þ®xn ¯;¬tgȦŒ;7 :k†ôÛ™± ð™þw«ï5çŒxhþÈ»®®®8xð`8p@=©?¡êL»Gt1û»zô|¾uÃŒ{¥Miù%=>¦¥4œætsT}tHs ¦ô¢@Ès7”wuõ(èÖ¥Ž^Íjߨ3jWõõ¡‡¦[(pç†Pg4\U–B¹® âêÕ®púç¢ €÷# ”<öØnÝonOso>þø¾4çúÉ“'5ÙT ÖUTT¤ÀŠçÄ«¯¯Oœ•yþýì“uó_À¯½wî0244¤ïŸ3êŒrL'æ¹ï®éÑ›ÎÄÌîÜÞáÀÝ´‚vgôýõ¦Þ;z/ÕFCCc¬]Û”Ád܉ˆ‚¬Bw«ðEç”xXnŒéëëS/ÅkºéW ήnhÙ®ºIÕ .·ö&óï^gR0ݺà­Sæ]±uºÃ7JR‰‚ € °2fgÝÀ9£ ÏÇ#0d:t-´óz^Ç·¶~œŽÌÛp››ÿ]  €÷%àœ1Τòœuθóý§kMMM Ð544(À²6MãàÎ2‘²zdÛ´ÉNBS~ ÅéÓgô]4¤6Œ÷´¤VÕCaºÃßM3z¿ôèqBÃlžÒû¬Wï«BÍ‘øh´µ­S瓲ôÞÓ ¸€¯ñ\ÝI«··7ÆÇÇãÌ™3i¸ô±1ÞEA ¿Üå÷ëÇÑ#W¾Ñ9vìX¸—âðð„.B+ô%û¸êçu ª·í|zn€iVmRu ÎÊÚ÷Þ;¬ áîø“?ùS-£ € €¬7zé:ÑšSª÷ÒIk¾Ô ss®×ç*¦}%¼)8¢€q•••±eË–tžÃÎ% sP/3ïzfYZV¥€ƒ½¯¼òJ $)ˆpJA»kʼûŸÔ!¥\õi¹”«Î¿žÖ{iHâ ‚'5ÜêžøâÿJ™v )«“÷Ôª|qÒ÷(àN΀¾råJ¼þúëiZž7Þx#ñ¼Œ‚@¾ ¸Ë÷WãG ÜÆ_ªî ã•_öŽ.ÓÏþh¡âà‹×)ÓÅî„¶1v};ô¢N4üƒ €ä¹€(Ýèé,ƒ’_㨎«:x7£ê ¼Û56z½Îª´8mÃÙ/™õÛ=‹e €À½ d†+Ì<ÞëóXoõ ø»Çs¬:øÖÞÞ–†Z˜Q[ˆrëô877jaáL”•M§Ž*ž+±ªª4Ö­kÖP™uiØU¾¿Vß{‡3¾7æå288”FõºzõJ Þyjž¾¾-Wf´¯)ä·»ü~ý8zòJÀ;§®ŽŽ)øæ!GªR¯3ãî¸Ëœf±.p×h¨‰)õZTÐïî2:<"€ €ù,àñÝ»Õ)ÌÆ‡žÒýéOGgç•xíµ¤ ÃG¼NT< k[Û3Z¿,ž|òI}oíÑÜv ±uë 9?_Þ’0;@ ÏÜè9$ð•¯|Mõ«122çÏ_ÔõbÚ ×éZpVŸÕÿ­<;9[Üݯ °´¾uϱ‚gÑeÆÿwO˜;õ¢Î“ƒtîY3—†&a؈Œ  € €@þ øÚÎYµµµÊ˜+ÒõÞ¨:i ëÄT=¤z…ªG`È\CÎ_FôkY—ÖPЮH ¥©áÔ§dLj†‚ 3L¦Üš55QQáa1ç”I×¢ïµr͇x^; íÌò’hnnÐ÷UE´¶¶Äúõm©³IYYYjïÈÙ³#òLÀó×y*žîîÍgסÏq7¡€;ûûzÑׇns$ë.Ï^Z÷w·€ð+,€‡‹X¿~}âÒc¸OOwkgîA}NÕóØµªf†ÅÔ7ЇGríSãËa5è̪õÕ6]ìò1vƒ‰@@<p#æ‹/¾;wîÔuâl:tH—Õ“úVCL›zRJgW£ê.Ôn”¹¨ê!2ßMµ±±*>ñ‰—R¨ç¡jjjRÏ#;P@È­€¿ÓÜÒÞÞŸÿüçõ}6ŸûÜçR6;ª¸zhhw0Y³fM Úùg:(çöuboù%à€Ý7¾ñMÍy6Þyç FgÒõáVÕÿ^'â^ܹ­ñÿVõu"ü Å;_;޼ðEh¦ui©/T§Ô3¨ó¸¦ê£µªñ+‡@ IDATþ(óÑ”éEí¹MÆ´þ€j¯‚uå/¾.Ÿéͦ( € €y,à뺖––lkm]§k½zõ¨žQcçÕ>5v¶èÚ±VgX¥êNëqH £§ÕðyI™zëcË–MÊlX—@+*Ü€CA; xH±ù9ÈçR`Áëff#(*òH))øÉ^Í<Þi›ü ”~=8çï¢ 6@‚(àa2?wî\>|8::z44¦Û}mø”ª¯Ý~˜éä¥)ä±@¦uûkñØc»ãäÉ“Ñßß›izz~¡kFÂà‘ œ«J™@>ú‰øä'?‘®3_yå•”±GVÐ x3p K*à ÝÔÔ”æêŽ7Þx#.^¼ï¾û~ ¨cå¸þ©)tÇ6Ý{ÕÄóÏ?Ï<ó´æçZõõõ̹¤¯ G¸UÀ;“éÀÝùóçâøñcJتú’VmS]wý)=×y@ ÿÜåÿkÈ W™¡V¶nÝ’¾tOŸîP™.ÝŽé&ñ#Kµª‡ÏtOáº'õYÕaõ¾.ŒÍ›wÆöíÛÓðGžÜ™¡2EDA@V˜€oà¹Ã×®]»4lfcTT”ëšq"ÜÉ«²r>pçŸ;‡577sm¸ÂÞœÎâ d2í:::âÂ…‹ÑÙyEÃŽ®®þ*׈(… èU¥á2ûúftÏ6§O_P¼DYw­i..ØÙʽØâ¿>l@ [ 3L¦³î<Äó|ñ¨]³\ÕÿçT)¬w+çµäLÈ gÝyâå?ÿó/¤ž2_ûÚßÇw¿û=Ý(^Õïÿ«¾€gt™¦ÙÔ£º´´D 5¥ñè£;â‹_übj˜Ù¹sgª…›Å¼xÙ9H@@àžÜÑËs¹:8°cÇŽ4§‰³€ÜXã×.ž;Ù>__zHöÌP›÷¼#VD` øÿ‡Çü‡øÇøÏÿùÿ‹‘g/\P°®^ÿÏö+`ç çÒØ'½œëT&ÞGú?6»wþëÿV™wñÜsÏ¥ÿ£«SFȱ€¯ÿ†‡‡Ó÷×/ƒwþ®òü‘uªîrü’°»dZÇs°+vÌ ¸QާݳcÇvÍ]rMC´\ÓœwÕi¸–Ìäè™F˜šš5 öÕjN»M)h×ÔÔ”z`¯– ]fÂxe344”æ¢Èô0rÖ¡¬*++oÜ8Û—‚ €ä³@æz&sãžÖÎòÉô¸öcæ:ÈëfÖÏçsæØXjßC\¹r%®^íÒ´z¼¦@x‰²ìvêÿÖZÆÓ!8{¡"ŠFÓԽǠîÑNë÷óºo›Š#GŽFKK“æ¡|2ýŸ\-÷d „@Š€¯óÜIË£1øÚpþºoZß]£:gÜQXyîVÞkÊ!°ìüëÀ\^}õ•xé¥R¯™'N¤ùã5ûú”¥÷7ÑÞ¾.^~ùeÏËÞI‡‚ °´¾æ«©©IýKK˼+V»á€ÚÏhlj!3|æÒ[G —îr©Í¾–­€H.†xèéééCðd2›,ò…{úº:p´š‚G‹ý⹇Œ‹‡Íô—¯tþÈþv½9pçIÐ[ZZnø/ö±,×íÙÂÕÃ\¼x1Mïal<¯‡´q–ç¨p¶/ZJJJ¯7×&+¿g) € €ÀJðµKæq¥œç@®|åÑN:;;ÕqrL  ÎRðPcíªÍªkUoî é¿ù^¹Mu½ÖŸžž£é£8ÝøþÍ÷nÑÅCAX2_û¹Ëó­VVV¤6ĉ‰Iµ#^Õ>ý]6¦êN'VŽ­º+çµäL@ 3>òûᅦNÙM}ôQx¹ƒ$.Îôò<ž[mïÞ½±eË–4l#Á‘€×SýåëjÛmÛ¶¥€ÝÖ­[S6žoàs 4Ó³úÁö–?ÏvoØ“'O¦÷ã¥K—âÛßþðFR™qï×ù¬º²²Ý(ÏFkk[¬[×¶ûÂþ,y:à™ æÏ™s¤ € € °ÓÓ3ÁãX¼óÎAÝóÖëžâEíf§ê&ÕjÕ[›ˆ2¿ïÓýY:¸¾¯€ÝOÓh)'OžÐýòD<òÈ#i4=™‚ €À’¸ÝÐí‚55Õj“ݧ}ÄéÓCqæÌ7õó.}Ÿy¨çJU2ï„@Y!™«°r:œ÷/àl;=è@ÉåË—5lÈñðPâݸknnN™aÞƒ³Ä<Ô£—¹¼K ôLv¥x‰™ôÞëîîŽS§NÅÙ³çãí·ª'Ñ”x<ßD‘‚u¾ ñº}º‰žT¯ÙþhlìP`oT½h»õ~žÖœ î’ÿ €K'àëg0¸úó;ó»÷˜é<áÇÌÏd%,ÝkÁ–@î,077«á÷û´ëÕ=p£Vv&]“ª3ën7GÐ|–k„×uóÑU}×Íê^c2úûûÓ=±G«¡ € °Ô¾ŸrÿuëZbpp0úú>Šóç/êþ«ZßMÚ½; ¸ÍÌÙw𤕂@ž ¸ËóÃpEø7ó7ê©q:IΟ?Ÿn@~÷w7Mxïà‡áŽ;¦/…¾ðøFãܹsiHBgÚ]½z5¥_oذ!eص··§À]ooošoìÌ™3^äHìÚµ+ ›YQQÁÍJ>¼ÐyrŒ»ç³íx_YàJÌèҽبîËu„wûn{H'Án¸Gw÷Åj+OÀsÚ9£É oî!ïÀÝ“O>¿ù›¿™wÏ<ó̯4¨mݺ5¥`{hÍ“'O*8Ò•†ÖtOû?ýÓ?Mpd5­¼÷I®ÏÈÁ}t$ø@»™›wŸÑ¡¸'Ñ|×ùãòÏÜ…ˆŸQmVàî½7¿®çë½}Asᤡ_ Ü%&þAEÀ,´ûÉO~’:ñ¼ùæ›úü-PCf‹¶_¡ Î”.Ôï§õy<¬Ÿ=ÏÂXÊÔojZ›7oN*܉…‚ 3߯64Ôk®öµÊ¸›R‡TÞQ­ûˆ=:sîæ{›«W¿œSuànF÷… þ5¥Êw™H( €9ðp™.O?ý”ÚqŸHI<²#ͽúãÿ8„ÒÛ{A*ÇsvLì¥ p·ªl3/fggo gå`‰3ꪪªÒœ`uuujh˾iñ2gÜyè«¡¡! O8•Æõ÷ÏÃÃÃéo¾‰¡ ðq<ÔŒ/.FGÇ5äœMwkÀîv[÷07έR-ÔÍ·šˆ™wâvP,C>¶€?£=‡¿óµï¡¶ûûçÔøéaµ+U·kÛþÌnVõõ€çÉõ0-nèìÐg{©:ÿ¸‘´ öíÛ§ìèâÔIˆk‘P@–\Àß7ÍÍÍÑÞÞ¦{…~ut@ΙtgT=ßÝZU7yhLw>™V½¤ûã“úÞêÔH35áûeß{ÔßGS@ȵ€Ûh]ÝdíÚµinqjâÀÞ¡C‡Üåúa‹.@ànÑIÙ`¾8sÎsÕ>|X’ÉtÓ±mÛ¶xöÙgÓˆÓn-þ2pæÝg>ó™Ôhç/ωwêÔ©ÄÛ½{7C…ÜŠÆï÷%à€rW×5ÝD_UãðN5ïÓó·¨úý˜LþåÆ=¯³ïztáRª¹+":;;ÓûÑó1R@\ÀŸÑÎп|ùrüð‡?Œ/ùËÊ®û„êçµñúì}UîDáÏlÏ#4©Gg1ü£êw4df_üûÿã™göÇž=¥!º±PVæÎ@–VÀ÷³/¼ð)0³!¾óïê^øÇÚ¡ƒwîp²CõÕ:Õ UgàPíW†Ý7U_Óð³ÊDó µÅ–-[R‡Vw"¢ €ä\ÀA;544¤¶\·ó¶´´¤‘Q82ðr~PìEÈŽL,âÆÙËYÀoþPwvS¦‡†odÜ3ãvA»Ì¹øïî]èuÝóÞÙzÞŽëÇ™˜ÛÇámø‘‚À¼€o’]) €ËIÀßóζó\·ÃÃcº†pP®RÕ žî@±FÕ™Ò™ì{îüyîŽëô}?§ ‡quÌVæþpÊÞ«¯¯'p'  €ÀÒ ø¾·¦¦FóÜÕ«ÖªÖ¨óI‰¾Óºu/ëŒñ‹ªž(3?ö%ý< †ÑÝ'Oé>¸,5Š677é÷²Ô`êmR@xX™6]ß«¹ÍÖ•MÖ«Á~S€ÀÝbj²­¼ðü4êý~!Íæ`œ‡üpÐn¡x/÷:î]èGÿîÀŸçÉóÏ{ö칯Æ7©ôõõ¥¬½ÚÚÚøË+tö®¾àð{qÍš5º‰žÖMô=ÇÙw äy(¶!Õ>½&SÖoÊ]ïˆÖ( €÷(à!²ßzë-e(Õü¸×ôùºYo^RýcmÁ óÃÿrsóó/D|J‹öêóùmïÞˆÞÞ¡ð¼x—ãå—_NCuÿò9ü„ €ÀÒø¾`ïÞ½á‘f<Ì¥§€8þr|íkßQGÔY}ŸýGí¸@ßWÆùþÃPf5—]½vñØc»âK_ú×éþ¹¾þöÓKè @@ p÷€€ËíéÑãíÞ^[yˆLÞ|ã º»8lëuÊËËÓ£w¦œ·ãêmÞOñs{zzÒ†:xWQQ‘‚-¼Ž÷#¹rÖõëî›èšš*ebøý4 ê€Ü˜ªç(Q½]¯Ö-÷üýú К.ÀÛaÞ ‘P@Eð÷¼ç¸L œóÙvΰs‹;ÍGê¬<~;¸W¢àf Ræž«³î) €äJÀ÷²îtêù€6mÚ¤{ØÐÐ͵š‡uT÷ƾ§õH0³éÞÖ÷^wýúÚhk[¯õÖ§`Ÿç†gˆÌ\½bì@V£»ÕøªsÎIÀoÚ¥¡B<¿Œƒww ˜ùo™¡2ýèßÝàæF<×ûîÒÃkþíßþmêiÿä“Oªãci½W_}5퇛¡Õ÷fu`xϞݺA.ˆ>8¡ î›BÖóQ=¶¨nTÍdpèǘRu€ï½¤çuè½S¢¬½ZÍ?±36nÜH&‡™( €À"øÚappHsƒúÞwnƒ¶êá1ݱâv*2;õ%w‘>§«U×j^ÜR͹0¤;ýiŽÜÌZ<"€ ß÷nß¾=š››Ó÷ÚSO=¥‘`z•M~:M‘ Øe†sö=…wÄs³fþž‹ce € €Àj p·Â^u­ç‹pÊÝÜøf/{å»ÝK Ì=\ñ£Kf;ÞÖýúΞ=Ÿžæ9ô²þþþ”yçýÜHôñen’îåXï÷xXÿá øõniiÖÜGƒqîÜ9½Þ½zu«qøòõƒ«×£çœp±v¾ÆÙ—Tjý!í*Ô¼Fé†4¤+Ÿ ¢¡ €‹$0í0­Ïå2}>ûóØ—Ów ÚyÇþ»«¿×ËôX¤çÏÏqëë  €¹ð=‡ƒp®9ÆÃ^ööö¦Ñ:ܹ5sßéÀž3ôÚÛÛ¸k»q/šËce_ €«W ÓæzóãBþ>sr†¿Çî7±b¡m²‡)@àîaê/Á¾oò,ÁæÙä¢ ¸ÏCkÇ•+ýzü( é%ß 544ÜzYcccêé(÷tÌý°ØàCp°vÇŽÊ’«Ž®®î8rä˜z½†~þ¶ˆ›t\{T+ô³ß;szôêQ+Äûªgõ©Ž—^z)Z[[´«Ms.ò> X_gyÒÚÚêèîÓgðU};+Úw<´Ø|§žì]ùïÓZÏÙùýjø¬Òv*Ó¶ü¹OA@àa ø>Óßm~ܽ{wêØêûW»ïN€žÒÁ§½áa½JìXÆùâÅ‹i”³Ë—/§Ç…$ÜÁ²³³S÷iÝ)!b¡õXŽ@¾ÐR/¯Ô=§/¦)ù$àà‹çÆ)ŽŽ>Õ³qôè‘8vìX ¸lذáF¥‡æ|ä‘GÒdâ{öìù• ^>1Çzgÿö©7nÒû¡3Þ{ïýè×…ÇW”á9”Wõ\Iþ¿>«›ç³ªÃúÙsá ( »;>÷¹WÒœ™¡mô  €À"¸Á²¦¦Z#Ö(3~Pš Ä ) ç Ý2ç¸s'‹Q­Û«çÍ¥¹LkjjRCè"›@@àc øþÃßG®î JA@`¹xZ¢'N¨3{Wüâ¿H ›³ì<‡¸³îœENA ßÜåû+xËñ;u˜^p· ,ð«œÕæ^„.Ó%ó¸ÀSÔØ6?¼¦¿ܓÿ»'¢·ãzÿöÖôEUÏ[v^õ²‚3Ã&±K»²øßù4ÿž÷áù7gÜ¤× -~½+*Êã‰'ö§÷Ôµk×tò¦z MÆåË3Îf\ï=÷‚õ7Mz¯4jøšµªMš8~} ü¹×,Cd®Ð7§…MÀ߽Ί.,,ÒÍàp¼ÿþûú<>¤ãyMµ]u¯j…j&ó.3éa-;¤Ïô“ú>ŸNÃ?ú裱iÓÆ”å ?RV¹@æÓ CCÏ¥ùŽ}Mày˜Ý‹‚ € €Àj¨ªªJI nërçò*7gܹÍ•‚@> ¸ËçWc ÙÜâê÷LuCÉŠ×óxÉ~tyðÀÝsÚÊ~U7êTàîbŒŽ^TF]ÄK/ýFlØÐžzã{?n0tõÏ®”•)àר`U³uëÖ”ê_^^š2ð8¤ •±Ð+((Œuëä+‹§Ÿ~*žyæé4O…33½ w+óýÁY!€ÀÃðgë–-[ÒµÃáÇ\q¶ó UgÏïTݪêKæ;Ú»}f{ïë»»G»9ëªbÛ¶­Ê®Þ˜æ´Õ)«\Àןî@æëK÷ž™™IA]—g®YW9§ € °Êœl±mÛ¶Ô©m×®]éq!ÏqwêÔ©¸páB¼öÚkî‚by޸˛—Š]l¾***RÆ]j,ñ‡üwþÛ„&sOh?úw7⹈ëýgÜù¬ÊT=ô¡"uÑ¢m«Ñf65Ø(¶˜¶é/*zü^*++Uð­Xv éBÅ“Ç;®<>î÷Þ|и±±^땤àuëÖ¥÷´ƒÑvWÏ{…3EÜ ø³Ùóüøz¡½}}lß¾UA–¹èë;§!3=êÁzL­>£3ÙQî:­å‡U/k²Yþ¶§NÞßï¹{í–ÛžœYçâkÐÔ{øÊ•«é½ÕÛÛ“®݉Çßéµµui¿_Ö¯oKs¼üã]w.7 Ž@@Û øz7Ó)Ý׿w*^Ïí¼¾†¦MìNRü-_ÜåË+uÇÉ ü=Bi5=é@‡ç‘óD§ž¼Ô 'îáìÆ”Û}È{¹×qï ?úw!´µµ¥êm~üÒ¦§6h›Ey\ 8C©wH¦ÑÆ_>”Õ%à÷ «‡øíßþíô~óûs>¸ìùçƒwð:°›yÿÝî½»ºä8[@`iüùêë.»‡%þá_Ÿýì'úÝóŽ~C;.ÑçuU:€‚gäMê3Úu*6oÞñÿ³wïÏuŸ÷}àI€H (J”(R7R¶,ÙV{mO;iÆMšº³m§¤³3mf»Í&³;Óü;;Ý™ý¡ÓÌîtÓNšÔÉ:õÆNl9NšH±-YWë.Jâý~q!‚öóùRiYФè/Î÷õyt€ƒsžçõœ~ßçó<åŸÿóÿ>.·F»ù>ôóáŒÏ£Þ8¬¬Ë÷‘ßÿþ÷Ë÷¾÷½òÆûÊÃ+žG3o~8,ŸO+Þ|¿:Añ–X¦u{ùgÿìת}Ž7nÜøÖÿ÷o\¯ý& @€¸×’2܈þùP@pwå`yò-ð¥J¹<’'ár½äÜK䂲¥Š» ír9£|Œ Kò¶Ù®Í?ƒ˜KaÌ•Â-› Ï«÷ûdQŒ‘uXú D†vàmÚ4Þˆ÷³ñÞ`EÆ,,ÌW]mk˽psOÝÞheóæepp ªÚË÷×ö¾¡úp5ù~2ßKfåfî½qâĉ¸<×-Äumñ~´+6ßÎGà›ÏŸ¹xŸy.ªîÎÆ^·¹ò|U—Ï+2\Í ¸ @€ê- ¸«÷üè݇(áÜ=÷ÜSÖ¯_Ÿ”$ö•;_^}õÕêëÜsæþûïÿ±O2g¸—ë%ÿùŸÿyì7v¤ºoVÛíØ±#> =úVùöÕuû|Üm,Úx´\nkÅ[  ª«u/ ðaä‡)r…ÜoácûX9vìX´ãå©§ž.““SÕò÷öõ­¯–=νGo¿ý¶ªB/÷.Íe\| ãØ™ú?f†vÓÓÓå÷ÿ?Uï)Ÿ}ö¹òâ‹/ÇuýþþRTÕç~‰wEË¥€rÉ̉Xâê=Qöí{ª<óÌ3å¾ûî-¿ýÛÿSµÚClŠì}býç]  @€ ðAwDËm[J Ordµ]ooou-?±œwgΜ)¹—X~}ù’™Úe¸799YíG’?˽Fò12Ìp×öÉù¹ðÍðn&>=ÝV}‚:û”íÚ·¥¦Í` @€@-òÿýÙ«à$ÿ}äÈáx_Ð{‘ÎT}ܰaCu›ááÍÕ|òöK•þµ„NÜp|ÿ˜ï)OŸ>]¾§O—ññ¹¨Öl‹Ðn0ú³.Z.ŸžÁ]îƒ<·?ïI»ãr6Úñrüø‰êýh€—¿W; @€ @ w-0‰†pu´ÝvÛmÕ2W{ö쩲C‡•ßû½ß+[·n­Bº<¹600Pí)öì³ÏV'X{ì±øDýSåãÿxùùŸÿùê12ü»úpm60÷&Nü=aàX,¥µ-NðmªNæ'©—6b½º‘º ða då~~'÷Û¶m[µŒa.e˜kö§Ó IDATï r9Ì¥ -vWÿ~áÃǽQØåŠ ¹<æc}¯z?95u_,ùßÄ{Í­ÑÏEË=sĶh£ÍÅÏî‰çÕç#¤{1¾ÿßc¹ÌSåk_û³x¿º¥|éK_ª>p?p @€ @€@‹îZd" ム䉴¬¬Ë“j›7o®*íX[ŒŽg•].y,Ú¾x¬ùªÐ®««ÛRZ¡â @€uÈ÷Ù2˜ëëë«k7õ«Y·´rÃÒÞv—Bº;¢w7GÛ­#ÚåÇb¼]ªÂ[ˆ¯+–Ô¼X8áðbU½wù­}M€ @€Ë_@p·üçЮQ ƒ»¬žËOÉgUÝ‹/¾X}JþÉ'Ÿ¬>%ŸËZepwöìÙXÆh® ù2¬ËûìÚµ«ä2XWÜÍÅïønŒà@\¾Ug«ÀîSŸúéøäþPìq×u£sw @€:dÅ]vYu77·ïý:ã=æÆh·G÷6EË*»·+⊠óVÇíÖLJËn‰ýðf¢êîd|ø¬]p÷v.ß @€ @ w-0‰†pm¹dæ§?ýéªÊ.—ÅìîîŽO1(<òHµGM~2:‘‘‘’ËV~ìc+=ôP¹óÎ;Ëí·ß~ ¡]>ê\„„—Ú]Œ0óØm-_øÂÏU¿+—Þr @€, îŽ;Vöïßï1ó=`r›#Û—룵¿Ë óvÙúãýêmQqw<Þ«îû_Œ0—Ót @€ @€@+ îZi6åªrÙÌ<²z.+ïr¹«<¹ráÂ…øTótõ³ÁÁÁjéÌ[o½µªŠËPíZ÷©Éû¯]»:¿îxÌuÖõ–;wVKxf€x­_uÜ @€ZF Þ>¾u\þõ[Wú‚ @€–µ€ànYOŸÎ_/\3x Üwß}ñÉçî’_çÑÞ~éSÐy™ËkfØ·t]uƒ«øO{{[Tím©ªë>÷¹Ï–O~ò“%«þr)Î|ü¥@ñ*Ú] @€j*ï/—Z)ù^óÒûÍ÷ïîÒm3½»,Á{ÿ;º @€,ÁÝ2™(ݼ1Èe»QGs##ÃÕ2œ£££ehh¨ª¶Ë@PµÝš¿‡ ðá äû¾5kÖ”õë×Çj ù°…hÑNDË@n Ú;…qóq}¶©xx:î;‘³Î‡¼BÅA€ @€V¸q E«Éë ÐÑÑQí—wï½÷–­[·–M›6U{æ í®®‡ @€ÔH ß÷åû½¼ìêêˆýêf£wû£}?ÚÖhŸˆ–{Ù]~d 7í|„vÇcµ‡§ãC^åŽ;î‰Ç-¹W³ƒ @€ZK@p×Zói4ËL º¥O^çžyy"çZ—ß\fºK€h„@VÜå>ʽ½½ñþ¯'¾^]ææÎÇžÊcüYw6Z.ßža\VÞ]|³Çå™hÇ£Ân²¬Zµ>öF¨ö\¶¬z°8 @€ Ðb‚»›PÃ!@€ @ ~¹{®®ÖúèGï/ÝÝ«Ëk¯.üA¹xq8ö¼Ëà®7ÚŽhùÏ´“Ñ&"¬{)ªí~˹E¥ÞÅ2<ó™O—-[¶T7r @€ @€@ îZh2 … @€z äJ ÝÝÝUçFGGÊùóçËøø3åäÉÃeff6*ï^ŠŸ­‹¶:Z.™y$ÚXw/Fh÷L,‹¹XÖ­ë.ý%÷F¾¡{3Gg @€ pw7Ù¯ @€,wÅÅŨZŒ€!÷ÛŠ…ýÚÛ£ hEui™çå>»ú#V­ZU¾øÅ/–©©©òÈ#”Çÿ~9tèTùÎwþ*»ùh_‹×Z¾Æ.D+Ôu—‡ÊM7–_ù•_(###åæ›o®ªí,•y#gÎï"@€ @€ÀÜÝg¿… ÐóóóÕ82´´Ä”Ä È×M.s™Aø‘#GÊñãÇ#¬»ÕsÇcÉÌ Æ§¢ErûÞ­XÑ{ÚF¥]_,³¹¡ìÞ½»ôõõU{$çÒ› @€h=ÿÚk½95" @€ÀuÈ@áĉåôé3åùçŸ/³³³åÌ™3eaa>*VVËôeˆ000Pn»m{Ù¶m[ìÁÕ¥èºè{VÈà;Û-·ÜK`v–»ï¾»ìØqGàMLœ‹×ØBµ¬fGGgÔõ÷oˆ×Ù†288×w Í[ùÉal @€4^@p×ø§ @€À d%PG-/¼ðByõÕ½åÿðÊääd\w0ª‚.VKd®\ÙQn¾y[Ù¾}{ùüç¾ªÊ /Ã;Õx?jê;— ,-/›¯lÔ}þóJV´f`ž¯ÁuëÖU¡^.­™ÍA€ @€ÍÜ5cž’--':§§§«Ÿ¹gPžÍÐ «2@èîî~3d𿽖~"ÜuÈÀ «ì²ºîõ×_/¯¼òJÙ¿ÿh9¾+®k@¡;~ÏBõ»WÄk¯§œ=;·Ý_Ö¯º o.÷Þ{oUu'l¸.SâA ÿ¿Êÿoåë/ÿŸ•ÿË¥03à‚7à `ˆ @€¸LÀÌË0|I€ËO Orfh·oß¾ê2«ƒ.í´²ªTÈ}„n¾ùæªraíÚµU˜·üF©ÇnœÀÜÜ\yôÑGËáÇ˷¾õ­êë©©î27·':±6*‚>—q9Uµ#Gž‹ ïÉòÒKo”?øƒ?,÷Ý·»üëý¿”ÑÑÑ244T7®÷~å)Á].™™ÇRà-°[žs©× @€¸VÁݵ º?Üp ëòÈêºóçÏ—‰‰‰*dÈ/—öËண££jy24+fffª%ÈòÄhOOï†Ïš_¸²Ê'—ÁÌ}ìŽ;•tçcy̶¨´ëŽ×ÌÆÂÚhCÑ2`˜ŒÖ•ACqŸœŸŽË³e||"î¶Z63÷¾[Z0nì @à vW€ä& @€haÁ] O®¡ @ Ur ¿ ~ø[åßøF9}úTyì±ÇªÀ.2‡j©±¥¥ü::VF€·²<øàƒe÷îÝåÖ[o-¿ôK¿TU4d¨ç @à’@¾¦r»³gÏ–?ù“ÿR½¦ÎŸß¯«/Ä n×Õ?ŒË\&³+Z¾v2@Ÿ×âD´±øùˆpü+±¬æÉ¨¼ûrÙºu´üÆoü‹Òßß·s @€ @€\‰€àîJ”܆j#ÕvãããÕþ[Y]·ÿ¨î™(GŽÌFµÏbT­‰¾æ>Aóq¹ß_ˆËÉràÀ‰V{;w®ÚkÍš5*ïj3³:ò“È×V†âYÉ:66Vx ñZÚ]Ž–•v«ÞÖÍ ï²ú®'n7^oTÞ•rüø‰Ø_²£ªr}Û|K€ @€ ð‚»÷Àñ#¨Ÿ@.ƒùÍo>AÜò½ï=^žzê±÷Ö¦þItvm„»ã2Ã…(½+³ñýÞ¸|!ößz=–ÑüVyíµ½eóæÍeÆ 塇ª‚¼¸ƒ@ãro»ýû÷—C‡EåÝD¼¦ò5tK´ÏFËðîÞ6få]¾Þ:"´»-^o¥k•_ÜËØNVU°ñC @€ @€À ¼Ó˜+¼«› @€+A¹ÿÖ¾}û"x1.–S§¢¼'…ÅÅ;ãrC´OFËåüæ¢åÏz£Í—sçE;^-›™÷Ͻñææ.Fp?nÈ1?ŸUˆQ‡K"æ‘K…fËý”,Z‘4ú?KKefEj†x—ö’Ì=íF£ Dk{Ÿ¼>[ç›"¬›®ª`{{Ûßz®½Ë]M€ @€ ð6ÁÝÛ@|K€õÈaff&ªy&Ê믿ÁÝ åäÉu |":¼-ÚÑ2dÈý·òoY ”aÂÖhíÑÎD;÷o+O>ùlTÝm,¿ø‹¿ACë/—¹´bî]–LæuÝ‘Zvtt”µk×V-€ª//ÍÈçD†wðæ×—Ž| åë)_Cïw\ºíâb^fHœó~÷ñs @€ @€Ëw—køšj+AÂtlž•¡Ó+¯¼Zž~ú™èëÏE0ðÙ¸‰vo´ÜkkéÈð #Ú-o¶Sqy:ªîŽ•ï|çñ²e˦gãºÖ>Ò-[†žÇŽ«ö/˽3 ÉåBW¯^]†‡‡KooV&:š.¡]Vµþ0¸ËÀn)¸Ë0ü½ŽÞvaáRø^·ö3 @€ @€Üý¸‰k @ †(ŒE•ÝÉXŠ/·,åé¶ýÍË êÞëÈe4o‰Pb1¿Çc¯ñ*ÌÊ=ó:;;[j©È¥3—}þùÊË/¿R²ÚîÀ}oU-æm²â®³sU,7nŠ6Tíû×Ó³º¬_¿¾å«ï2 ÊçU. ™K¯ž;7û ç×\›óñœˆÅW#ÜìêZUnºé¦87Wf}}}-õ|YzÕ¬\¹²z.äk¢«++Wó8í…hŽïŠöN•w¹ôj¾…ËKqß“a5m ¬\ùN·›: @€ @€ÞQ@p÷Ž,®$@€º d…Øøøx@ýpÿ­uÑÍ›£­Žö~Á]Þö¦jÎÅãLDëªÀ )2°hoo€a)¸;sæLùîw¿W¾ñ‡c/À“åС±Tæ…ªÚ.0ªð)Ǿn]_éï(wܱ£Ür˶*¼É ¼Üû®• ífggÃæTTa~§9r´<óÌsQ•x>Þ¹ÿŠrÛm·VÕˆ>ø@õ}j¶âž€ù¨žf_:NÇÅÞh¹ôåŽhïô:ÉÐ.ƒÎÓaôZ„›³÷GÛ¯+o5ÇA€ @€¸bgS®˜Ê  @à'-aÉ&dµO¶÷;.¿m~½XSNýèc¾ßãÔûçFe°™!Ô /¼PöîÝUdcQ­8•†["Ê0®;Z^ÎÄØsYÄù4§" :K>[¶n½)‚¼þÒÓÓS…š­ä“³·dtøðá²ÿð9U‰{£šó\,':U‰% ;âù;&v…ÃùØðÕ*ÐÚ¼yså²jÕª*Ðk¥p3ç9+írއʦM›£2u&‚Ì—ã92rÜåsg}´\6óâ›m,.ÏÆsi´3Ü­ŠçЖh#±‡¢·šÓØ#?D-? ‘$È×^.wœĈ««¿½Yá› È ¬YsiÏÑVú Ec'ßÀ  @€ @જM¹j:w$@€)°*äžl? K¦£ g¢e5P†qïuDSÎʼnâ©8IܪêdqGGGuòø½î¹\~¶Ti—KŠ~ó›—ßýÝÿ+*c È…8a~k„v_Š¡lŒ¶=ZVNˆ“ç§"˜y4ö|8nw$‚¬ÿµÜÿ}ett¤ŒŒŒT'Óó¤z«i”KˆŽ+_ýꟖÿï/Æ>áÝÉðé‹Ànw˜ôD»´Tä©SOÇóíLyì±g¢zlºÜu×ÎòÛ¿ý[U°¹gϞ˖”\þB–d`›áÝ'>ñ‰êëüà¥XFôÂe$–\¢6—§} Úªhç¢MÄëç©h߉öj|¿¯ í*çïü\w[«0®t4T ƒº\’öøñãå/ÿò/«ªé§žzºÚ¯4Iò9—•¾ëÖ­+»wï.;w£ÍÏA€ @€š*Ð:gâš:ƒÆM€†dp—![.á——¹ßââl„ ÜeõOVÝeY~}ù±´ÿÖù¸ò\„0Óeõê®89ÜACÞ¾uެb™žžŽ*©ÉêyîÝ6=Ý¡]X Æ@sŸ¿lY1•ÁÝT´ˆ<syÄÎLF5̩꾹,ižLÏ}ðZ-¸Ë±eõÏÙ³cÑÎÅr™+¢Ê®¯r˜Ÿ ‘ 2¸[ˆÐa(ž'a“û·MFà7]Uè]¼˜UŠ·Ö‘¡xÎwîí—Õ…‡çAG„óñ¼:ƒÍðîP´\Js"Úd¼¦NDËÊÄöxmmˆànCõÜÉðå‡!{ÜÔÑü[”G¾ÖòïPwG¿/“±4íD¼Þfãõv©ê¹¯ïTžg•ðڵ몥h³¢5Ÿ;*ïó”1P @€¸L@pw†/  @ ¾&ŒŽŽVK© ÆþYG"HØíÿŽNïŠà鎸ÌÀ%+–»¬ÂËpj2B—ÇâDðÿUD eÏž”ááMq’¸· ã-qÌÄO<ñDyã7ÊsÏ=Wík·°ð aó÷b|YiwS´ \:¢¥Ñ­Ñ¶ÆÏ·ÅåÏÆåÓFýÏåÀÃå[ßú‹jÉÌÏ~ö³Uå]Ü %Ž\²ïOÿôO£Šì¥XôùrâÄXwE@÷[1¾ íF£¥O†º‹á1—ãùó'Ѿ¶ãåßü›ÿ#ž‹›£BèÞêù“ÏÍVZN4C“_þå¿[-oøío»<úè£eß¾Ãå¿þ×?Œë.†ÉÒÛÇ…w.'º2»Žò³?ûéòS?õ`õ¼¹ÿþû«j» ÙÍ黅 ¶ÿø¿Rþóþ£jyÌ7Þx=^gíñº%^s«¢å2Å åûßÿzümžŒýûK___TµÞY~ó7ÿÇøû¼6Bà!á]óž>FL€ @€Æ ,yi<¨·@#d¨°fMouRwn.«€NEdzênU›G¢bs6¾Î éÎx­ä>‰]ñÊp|>ªíÒ(+XÇãvÓÕsn||¢ ìòõ¥ê.} @€ Ð$ËÏL5iÜÆJ€ËP ƒ¶\ºñW~åï–O~òãåÏþì/£};NŸŽ“ÁÞõÄÉßÝq™U>ØMG%Ç‘øY-'¢:j¶lß~sùÇÿø¿­öïêíͯu޹¹¹räÈ‘¨Ž:áTÔŒµm›-ѲÚn]´wZ4§<‘ž!ËÆ¸ímqò|¡ª°Z\¼´ôfü eŽùù‹å?x®|ç;OƲ—Ãñ|ù|Œí¶h[¢õD»<ØŒoß ñï ›µF<ÁèÓV*¯¼òrY3Õ^n­¶'×R¥\VÎÝ~ûíU ü«¿ú÷c¼³åر£U`™ûMfžKªöõõGÀ7X-±™Ð.Ÿ;Í<2°ûÚ×¾ûeî/û·—C‡NÄël[´ßuÕߘVFÏÇ÷‡âúó±×æÃñúz´¼ðÂÁòïþÝï–M›6–õ¯þ‡êou3%š @€š* ¸kêÌ7–©@V_lÛvsýÕrQ'„'"Px&„Õq8—`ëŒÐê\Œð|Tkж/ªôºcé¾îú#¼Û^… YÁ×JGVºäu¹Ô… YÖÊ-sï6Ú «²å¾n½á9AÍù*¬iµ}ܲ‚'÷¶;uêt'ÛbIÌ…h%n×ÁÂÎë¶•›o¾© ýr¥ Z1dÈ`såÊö[žŸ‰–K]æ^Wräže³qß¹°[S-+ÚJ'Ì3ØÌ67w! PfX™Kaf°ù~K]fEb†{n^ºmVeËÇlõ#_+ùšÉJ¼‘‘‘jÌYm—áw«¾–Z}N?ŒñeÕo†m,/¿üJ,+Ûï_µ#ZäùzË×ÝÒ‘¯¥¬tÍ\lÛ>Kg‹å5Ÿ‹¿EóÕ²¿===Õ~‰–Ì\2sI€ @€­. ¸kõ6>´˜@I›6å àˆQb©¾{î¹§ªîøò—ÿ(¼sÞ=ÁÌ\TØ­e5»Êèè¦rÓM#åg~ægÊÈuÜMW÷íèXY=V+†›Ü]¸06 DÉfȽ_p—ÕxY5”áÝŠr¿·ÙªµZUb ðÇŽ|ä2µy´Ú² ?6XW\•@ØY™™ûÛ½þúëUEôüü§#û©x¼¬lŽööªÖ|Ý--Y|gܶ-‚»g#øûF¼Æ¦ãoúXõ7;CbÁ]P9 @€ @ ‚»FL³A @ 52¤Êð.—éË}¸¦¦¦"\X'ç«ë;;»ÊÀ@_Ù¸q ªÒ[:ùÛŠ¡]Îp†+Jö÷÷…Ñ8 žÁÝX´Ñ2À{§}î–¾¼mî8UT±gYî[ÖWUTÅ•-utuuWϹ¹‹ò昳 èýªæÒ'6¬öN\¬¬ó¹—M ,!Á]¶ ¶/U¢f¥jVÔý°RõÝ¡rùÌ¼í¥€øRuì\õAŒ&Tµ¾»‹Ÿ @€ @€@ÓwM›qã%@€@ ¬[·® ªFGGËÝwß],C»<ÚÚ.UPeH—V.é×j{ÚU½ì?LÞqÇU˜tðàÁX òHüô¹hDÛícѲbìò#½GÛíqŸ½±,ÝMåÞ{ï,[·n­|/¿õrþ:Ÿ ² n,ÃÃñ×ÝL9}ú©RVß]zÞ¼ûøŽÆ^ŠöjuÛ|.åcdË¥"š.a]î±™ ¸p!÷¬»$Äeµ]î¹´_d|ùŽG~°`4ZþÝj«Â¿sçÎUwïxW @€ @€Vܵâ¬"AÌåÁ\C†ý®ÃÌP*«är Ç¡¡Áhq}"N¦¿Õ/ãq¿\’.[VÁd°™'Ö3´ÊÐîÅ6FP·&‚­þ²yóæ¨TÜX-»?l™#CÜM›6V˧..ÎEpw,ƶ>Ú¾hýÑú¢åÛ£\F3«ðÒ-«D{%ŒŽ†Ñú¨jÜP-©â.XB`)ÏP»½}e|`¢=þî\Œ6?ÍïýªZçâ6yÛÜ›óÒãeUu¶|l @€hŠ€à®)3mœ Ðòy‚{Û¶m±<è@9xðPyã}åå—–×^{*ª_²b%«ï2¤Ú-«_r ͉8)þr\>•-=Q¹xGÙ½ûžò‘|¤ îZ­š,>þñ"œÜPþê¯ ›ïÄØs¹Ì›£m‹ö©h¹ï].Û—ACVØ £oFñí²>øî¾{WÙ\UÛ¥µ¥2ƒÈÑx ×zzzª¥-s9ÚU«ºãë‰øÛóZØd(·ð>Fù:ÜíH¼Þ«ðo}¼àòÃùºu @€ @€¦îš2ÓÆI€-/'Îs¹Ì\²npp Zê2—š;{öp™™™Žv<~6õæv¹|èX„QSqR|,*ë.Dà·.*ѶTToooì“×]-3ÚJpi´aÆjI¿ÁÁõÄu†ÇŨL<•AYe·?ZwY•˜AC~6¬N†ÑDnŽŒ GEâ¦j‰ÌV_~5ï pEùÚZZ–8¼ü25•{ÞŒûg¥oVÓe¾*ÚŠhKG†zyý¹hÇã1ÎU{²šµ³³³jùØ @€Ö˜ŸŸ­æ«MOOWÿŽÍ}Èsãöö¶ø0׊øwØÊêC\ùaÉ|é @€@SwM™iã$@€Fä?n²J.+æ¶lÙRüñòì³Ï–ÇO•§žz£LLŒ ïûñ¡KiöÇrÝett$*õî®»/|á ± dÉýó$|«ù¿Ü1÷ïËñe%ϱccå/þâ[±/W.í÷§1ä¼Ì‘ç.-•90Ј›cÁíåŸþÓßúj©Ì¼•ƒK´eà¶gÏîøAgyᅣѾ?Ü'bî‰Ë¬øÝ-ƒñ<2Ï=6ÏÇ‘‡ IDAT‰™Gã5ùøÛ3¯³;£ªuSU=œ‹äiå @€´–À¥™ž-Ç/>úh|¸rº8p° òòC¤ù¡Ô-[FËÍ7o­Þ>ðÀÕ‡º¬xÒZÏ£!@àwïìâZ °l2Ê%³²lrr²ZºnõêåèуêÍG(u.Úbwëâ$y{üCh N”ß'ÊGÊ®]»Zº’,ƒÍ\z/Ã… ïvìØÕ=Âá‘2==Ÿø½87w¡ §rª•+;ªå==««O4f •'ß[ùÈñå§7ï¼óΨ6 Ž—O}êSåÌ™3Õ¾€.\¨–fÉ*Ÿ ?ó¶7ÝtSU‘¸víÚñ6TÿP\2ne+c#ðA²êîsŸû\,“9'\z«“,óqæ‹`¼#þæl‹‡ìˆ¿A³Ñ.ÆI›SñýLT±ÎGµïúøðÀmå×ý¿«ö\nÓA€ Ð:Ú:t¨ìß¿¿<üðÃåoþæoÊØØùrúôBü[µ#Vˆ¹9Þæò˜çãßdsåõ×_ˆj¼¿‰÷†ýåoÿö{ñ!Êåüƒ¿_­ã^­ó¼0~\@p÷ã&®!@€-#AS¶ùT¬|’˧oŒÖá]îc׫7äu¹ Jîƒüzü{íTµ|z~¸2ÿý–+È8 ÐÊ‚»Vž]c#@€ÞW ø î2$ÈÐáâÅ‹U@—ׯY³¦º>ÃOvïKé*<¡’'Sr¯»ü:«Ywî¼#NÊÌÆž’¹ÜÑB¼®rYÍÐ­Š¯Û⃷V•­¹çf¾Þ²ÒUHî E€h\Ù$Wexî¹çËW¿úÿ•_<Ëbn‹| Æ ?-C»‘hyº:?ä5m´×"È‹J½çâ}âÞòØcWû´ïÙ³§zÏ7p @ åw-7¥D€| 2¸Ë–B®M _SyìÞ½»Ü{ï½±ôÑéØOòöXúh¢<ñÄÕ§¤sÿº¥ehs‰Þ\Öwûöí%—Ú\ºÿµõ½  @€ê"êÊà.ß>÷Üså+_ù“Ø‹ýÖh7Gï‰}ýz\®ŽÖ-vC® ê²âîP´ýÜ=ÁÝ·ã_ åñÇ+'Nl†íÜ%–ƒ–ܵä´ @€zd5kì§Ù]¶mÛ'h檓,yýÆKWWW,“ÙSUµª²«Çœé @àz äÞv¹·øÙ³g«ª»……ùçrIõÜÿ8«ìÚ£½}¯õü~U´uÑò¶Cþ­Že6ÏVïççs9MZS@pךójT @€~¢ÂeËjÖ|ä#Õò™>ø`u¹Ðå´ùu^æò´ @€ÖÈj»W_}µ8p }ºìÝ»·ùB™œ<ÕÿáS.¡9ËŠ²\s&–<—ûJ__{Ù³çgÊηW¡T†S¹$d+¹¯Ý+¯¼ÕsÇ«Š»}ûÞˆpn}XüJ sc´ 7×DËÊÄöðº+.g¢=íɨÊ[Qþú¯ÿ¶lÞó™ÏÄršó¥···åœb°Ü5bš ’ @€ @€?Ü×nÕªUeÇŽÄõÇ2™3Q-¶?¹Óåܹ?Š jEwYq·"¾žˆ6?[¨ZÿÖòÐC¯ÜvÛmåöÛo=îÖ•¬âk¥#ƒ¶×_½¼ñƱ¯Ý«åСƒa°6¸/Ä0sÀ]Ѻ£­¨Úââ|\.DÛ­#ö¾Ë}ðþ¬ o(ÇŽ«–Íý[-àŒÁ:4B µþÂ5bÊ ’ @€ @€ËK «î2LÚ°¡¿lß~kùèGwÇ^m'#È{-–ƒœe"Û"¬Šz²öîh‹Q¡×UÝ~tt´ íò2ïßj¡]Îb.“yêÔéräȱ¨@¼kãÚ 2G¢ EËj»Ë÷õ ¨êØÿ½=*óVD…Þ|¢³åôéÓeÍš5Õ¾‚éå @`ù î–ßœé1 @€ @€–•@w===Uøö ¿ðùò©Oýt2=óÌ3ezzºìß0«‹8mˆÛ­®öÅ®B¨Ü×®³³³ºï²ôv6ÇýÒK/—§Ÿ~.»‹Qi˜KaÞ^VÚõF{ûÒ Yy—ÇѲ"ï»Q±øÂo1öÅ{¾LLLDõÝpU˜·r °¼wËk¾ô– @€ @€ËR —ÌÌ–Ë]fUXVÕUÁ]èRp7P|CCCedd¤Zbsýúõf-…UËrèïÛé /'''Ë… Òe…]O´®h—WÚÅ·?räÏó†{¹?`©,ó±rùMËS@p·<çM¯  @€ @€ °,ÚÛÛc9Ìöj9Ç|°Ã… ªË¼>Cº\séëVír©Ìéé™î¦cÉË®àúÃ"—Ë|¿°²=n“^݈®‰Ë…xœÙ*¼[ÈÏA€À²Ü-ËiÓi @€ @€,o¬¾[Ú‡méryèÚzŸå¥Â ݮ$x˽î–Z†|yÿKíÚzâÞü$w?I}¿› @€ @€-æèèp9sæL,qy¦?þƒð茯ÏÇežÂ·å2Çâggb/¼ý±Ìè‰êv[¶ —-[¶TËÆ–¡@Û2ì³. @€ @€ @€–È*¹uëÖ– úÊêÕQ7·âLŒ+ÛD´éh£]^—û×eËŸg`w6îs!–¯öÌ=s©QËSÀ«wyΛ^ @€ @€ @€@ ä^~·Ýv[„måäÉsÂe¥ÝѸüf\ŽFEÝž¸ì‰©^ìiWÊÉh³ñó'ª¶råѲfMoìØ_¶nÝZUÜYz4ˆ–©€àn™Nœn @€ @€ @€ÀòÈê¸;w–þþþòÒK/Å€&£íö•h;£mŠ6-—Ì̽ì²Êî\´G#¸û/¥³³­ôõ­àn°lß~[.ñsËQ@p·gMŸ  @€ @€ @ eºººJooo„n#å®»î*SSíeÿþó±wÝÑØëîÉçúhë¢å)ý}Ѧ"°;QV­Z¡Ýš²k×Ö2<¼)¾ïŒ0oEÕâF–¡€ànNš. @€ @€ @€@k´µµ•¡¡¡àúʾðùrË-ÛÊË/¿Zþí¿ý?ËÄÄ âýY,—¹ƒm{sÀ¹¿])k×ö•ÁÁþín+ÿò_þ‹²~ýúêqTÛ½Éä‚À2Ü-Ó‰Óm @€ @€h ïrÉÌ ß¶lÙRÊ|´Œ•³gOGåÝÅ꺬¦ËÛåí7nÜ\6mÚ\}CCcŸ»žêúÖ1 ÍÜ5wîœ @€ @€j"ÐÞÞaÜÆ²aƲcÇŽ²{÷žræÌ™¨¾{©ÌÌÌ”¹¹¹ª§Y™×ÙÙYFG·D­¾Þ°¡¿Z3ÃA€ÀòÜ-ïùÓ{ @€ @€h\æ2ÛªU«ª@.«èff¦ß1¸Û¼ysìk·Y`×"so–wK.  @€ @€ @€@ r)Ì®®®ªúîÞ{ï­–ÉÌå3/_*3Ã=v5˜,] pw×Ôà @€ @€ @€kÈP.[xš#ÐÖœ¡) @€ @€ @€ú îê;7zF€ @€ @€ Ð Á]ƒ&ÛP  @€ @€ @€ê+ ¸«ïÜè @€ @€ @€@ƒw šlC%@€ @€ @€¨¯€à®¾s£g @€ @€ @€ Ü5h² • @€ @€ @ ¾‚»úΞ @€ @€ @€4H@p× É6T @€ @€ @€ú îê;7zF€ @€ @€ Ð Á]ƒ&ÛP  @€ @€ @€ê+ ¸«ïÜè @€ @€ @€@ƒw šlC%@€ @€ @€¨¯€à®¾s£g @€ @€ @€ Ü5h² • @€ @€ @ ¾‚»úΞ @€ @€ @€4H@p× É6T @€ @€ @€ú îê;7zF€ @€ @€ Ð Á]ƒ&ÛP  @€ @€ @€ê+ ¸«ïÜè @€ @€ @€@ƒw šlC%@€ @€ @€¨¯€à®¾s£g @€ @€ @€ Ü5h² • @€ @€ @ ¾‚»úΞ @€ @€ @€4H@p× É6T @€ @€ @€ú îê;7zF€ @€ @€ Ð Á]ƒ&ÛP  @€ @€ @€ê+ ¸«ïÜè @€ @€ @€@ƒw šlC%@€ @€ @€¨¯€à®¾sS»ž-..Ö®O:D€ @€ @€hÁ]«Ìä ÇŠ+nÀoñ+ @€ @€ @€ÍÜ5sÞš @€ @€ @ f‚»šMˆî @€ @€ @€4S@p×Ìy7j @€ @€ @€š îj6!ºC€ @€ @€ ÐLÁ]3çݨ  @€ @€ @€j& ¸«Ù„è @€ @€ @€@3wÍœw£&@€ @€ @€¨™€à®f¢; @€ @€ @€ÍÜ5sÞš @€ @€ @ f‚»šMˆî @€ @€ @€4S@p×Ìy7j @€ @€ @€š îj6!ºC€ @€ @€ ÐLÁ]3çݨ  @€ @€ @€j& ¸«Ù„è @€ @€ @€@3wÍœw£&@€ @€ @€¨™€à®f¢; @€ @€ @€ÍÜ5sÞš @€ @€ @ f‚»šMˆî @€ @€ @€4S@p×Ìy7j @€ @€ @€š îj6!ºC€ @€ @€ ÐLÁ]3çݨ  @€ @€ @€j& ¸«Ù„è @€ @€ @€@3wÍœw£&@€ @€ @€¨™€à®f¢; @€ @€ @€ÍÜ5sÞš @€ @€ @ f‚»šMˆî @€ @€ @€4S@p×Ìy7j @€ @€ @€š îj6!ºC€ @€ @€ ÐLÁ]3çݨ  @€ @€ @€j& ¸«Ù„è @€ @€ @€@3wÍœw£&@€ @€ @€¨™€à®f¢; @€ @€ @€ÍÜ5sÞš @€ @€ @ f‚»šMˆî @€ @€ @€4S@p×Ìy7j @€ @€ @€š îj6!ºC€ @€ @€ ÐLÁ]3çݨ  @€ @€ @€j& ¸«Ù„è @€ @€ @€@3wÍœw£&@€ @€ @€¨™€à®f¢; @€ @€ @€ÍÜ5sÞš @€ @€ @ f‚»šMˆî @€ @€ @€4S@p×Ìy7j @€ @€ @€š îj6!ºC€ @€ @€ ÐLÁ]3çݨ  @€ @€ @€j& ¸«Ù„è @€ @€ @€@3wÍœw£&@€ @€ @€¨™€à®f¢; @€ @€ @€ÍÜ5sÞš @€ @€ @ f‚»šMˆî @€ @€ @€4S@p×Ìy7j @€ @€ @€š îj6!ºC€ @€ @€ ÐLÁ]3çݨ  @€ @€ @€j& ¸«Ù„è @€ @€ @€@3wÍœw£&@€ @€ @€¨™€à®f¢; @€ @€ @€ÍÜ5sÞš @€ @€ @ f‚»šMˆî @€ @€ @€4S@p×Ìy7j @€ @€ @€š îj6!ºC€ @€ @€ ÐLÁ]3çݨ  @€ @€ @€j& ¸«Ù„è @€ @€ @€@3wÍœw£&@€ @€ @€¨™€à®f¢; @€ @€ @€ÍÜ5sÞš @€ @€ @ f‚»šMˆî @€ @€ @€4S@p×Ìy7j @€ @€ @€š îj6!ºC€ @€ @€ ÐLÁ]3çݨ  @€ @€ @€j& ¸«Ù„è @€ @€ @€@3wÍœw£&@€ @€ @€¨™€à®f¢; @€ @€ @€ÍÜ5sÞš @€ @€ @ f‚»šMˆî @€ @€ @€4S@p×Ìy7j @€ @€$ .4 IDAT @€š îj6!ºC€ @€ @€ ÐLÁ]3çݨ  @€ @€ @€j& ¸«Ù„è @€ @€ @€@3wÍœw£&@€ @€ @€¨™€à®f¢; @€ @€ @€ÍÜ5sÞš @€ @€ @ f‚»šMˆî @€ @€ @€4S@p×Ìy7j @€ @€ @€š îj6!ºC€ @€ @€ ÐLÁ]3çݨ  @€ @€ @€j& ¸«Ù„è @€ @€ @€@3V6sØFMà’Àüü|YXX('Ož,333åÂ… UËëóûÅÅÅ277WÚÚÚÊÐÐPéîî.ëÖ­«C @€ @€ @€ÀõÜ]OMµ¬2”Ë njjª|ík_+,'Nœ¨B¼ñññ²ÿþ*´Ë¯;::Ê/ÿò/—íÛ·—ûï¿¿<ôÐCËj¬:K€ @€ @€Ô_@pWÿ9ÒÃI ƒ»‹/VáÝ‘#GÊo¼Q&''« ovv¶ ë²/¯koo/çÏŸ/y}Vã9 @€ @€ @€×[@pw½E=Þ²ÈànzzºŒ•'žx¢<õÔS¥¿¿¿Z3—Äܽ{wÖ?~¼ ëV¬XQ²9 @€ @€ @€†€àîÃPõ˜ËF ƒ¸Ü¿®···ôõõ•*¼ëéé)ƒƒƒoUÛ©²[6Sª£ @€ @€ @`Ù î–íÔéøµ d`·nݺ²zõêò[¿õ[UH×ÙÙY-‘™ÕxÖåš_ýêW«å4¯õ÷¹? @€ @€ @à½wï¥ãg--ÕvÔe»÷Þ{d¬¹÷ÝøøxY¹reÕ~䇾!@€ @€ @€|mÂczH @€ @€ @€> €ày3r©Ì¥ÖŒ% @€ @€ ð“Üý¤gÀï'@€ @€ @€ ‚;O @€ @€ @€5ÜÕ`t @€ @€ @€€àÎs€ @€ @€ @€@ VÖ º@ ¸páBYXX(SSSU[\\¼®2eÆ ¥­­­¬\Y§~Žqbb¢œ9s¦tttTãmooÇq¯X±¢êwŽ#o›— @€ @€´š@ž'ž™™©ÎÏÎΖùùùwbžWÎó«cccennî]oç–‹@=ҋ墥Ÿš@þáÝ»wo/üÇ\¾þõ¯—óçÏ_×ßw÷Ýw—ßùß)ƒƒƒexxø­ ìºþ’ø`ù?¯|å+å¯ÿú¯ËêÕ«KWWW,¾ÓÃdXwË-·”;vTíÖ[o­MùNýu @€ @€®FàìÙ³åÉ'Ÿ,§OŸ.O?ýt9uêÔ»>Lž[ÎóÊ“““åðáÃïz;? °\wËe¦ÐÏü›-?I±Tuw=‡===]=~~ZÃA€ @€ @€¨›€à®n3ÒÐþä2¹ŒeOOOùéŸþé²~ýú’%Î×ó-›6m*½½½ïZÕv=ß• @€ @€ ðÈmƒªßŸçMßëȼ}ž÷íîî~¯›úe! ¸[ÓÔúÌ -ÿ¨æ׬Œ[³fÍ{n8z5"Y­–¿#ÿˆ×%¸»šq¸ @€ @€ К‚»Öœ×e9ª¥OCdhwÓM7-Ë1è4 @€ @€ @àjÚ®öŽîG€ @€ @€ @€ÀõÜ]?KD€ @€ @€ @àª,•yÕtîØ*‹‹‹ebb¢\¼x±ä× Õ×yÝÙ³g«ïóú™™™255UÆÆÆÊÉ“'ß~î™—Ë{¶µµUí­ø‚ @€ @€ ðwËM[S`~~¾¼þúëU 777W²åuÓÓÓåĉåÂ… UxwêÔ©’ûðeH—aÝÒ±~ýú²k×®êgeÅŠK?rI€ @€ @€¸bÁÝS¹a« d5]VÐeH7;;[uY}—_Ÿ9sæ­J¼ÉÉɪïØ±c¥··÷-Ž¼Ý­·ÞZ2´s @€ @€ @€®V@pwµrî×2¼}ùË_.O<ñD/Ðår™K-¯Ë¯Ÿ~úéÒÞÞ^V®\ùVH—ÕuùÈGÊÈÈHÙ²eKYµjUu›–Á1 @€ @€ @à† înµ_TW¬¸Ë »¥e23ÈËë–Ž¥êºË¯Ëå3óÈà.ï—?»üçK÷uI€ @€ @€¸RÁÝ•J¹]Ë ¬^½ºüæoþf™˜˜¨¼ ñ>ȱvíÚj©LÕvDÍm  @€ @€ @€· îÞ.âûÆ äò—»víjܸ ˜ @€ @€¨—@[½º£7 @€ @€ @€š) ¸kæ¼5 @€ @€ @€@Íw5›Ý!@€ @€ @€h¦€à®™ónÔ @€ @€ @€5ÜÕlBt‡ @€ @€ @ ™‚»fλQ @€ @€ @€ÔL@pW³ Ñ @€ @€ @€f îš9ïFM€ @€ @€ P3Á]Í&Dw @€ @€ @€š) ¸kæ¼5 @€ @€ @€@Íw5›Ý!@€ @€ @€h¦€à®™ónÔ @€ @€ @€5ÜÕlBt‡ @€ @€ @ ™‚»fλQ @€ @€ @€ÔL@pW³ Ñ @€ @€ @€f îš9ïFM€ @€ @€ P3Á]Í&Dw @€ @€ @€š) ¸kæ¼5 @€ @€ @€@Íw5›Ý!@€ @€ @€h¦€à®™ónÔ @€ @€ @€5ÜÕlBt‡ @€ @€ @ ™‚»fλQ @€ @€ @€ÔL@pW³ Ñ @€ @€ @€f îš9ïFM€ @€ @€ P3Á]Í&Dw @€ @€ @€š) ¸kæ¼5 @€ @€ @€@Íw5›Ý!@€ @€ @€h¦€à®™ónÔ @€ @€ @€5ÜÕlBt‡ @€ @€ @ ™‚»fλQ @€ @€ @€ÔL@pW³ Ñ @€ @€ @€f îš9ïFM€ @€ @€ P3Á]Í&Dw @€ @€ @€š) ¸kæ¼5 @€ @€ @€@Íw5›Ý!@€ @€ @€h¦€à®™ónÔ @€ @€ @€5ÜÕlBt‡ @€ @€ @ ™‚»fλQ @€ @€ @€ÔL@pW³ Ñ @€ @€ @€f îš9ïFM€ @€ @€ P3Á]Í&Dw @€ @€ @€š) ¸kæ¼5 @€ @€ @€@Íw5›Ý!@€ @€ @€h¦€à®™ónÔ @€ @€ @€5ÜÕlBt‡ @€ @€ @ ™‚»fλQ @€ @€ @€ÔL@pW³ Ñ @€ @€ @€f îš9ïFM€ @€ @€ P3Á]Í&Dw @€ @€ @€š) ¸kæ¼5 @€ @€ @€@Íw5›Ý!@€ @€ @€h¦€à®™ónÔ @€ @€ @€5ÜÕlBt‡ @€ @€ @ ™‚»fλQ @€ @€ @€ÔL@pW³ Ñ @€ @€ @€f îš9ïFM€ @€ @€ P3Á]Í&Dw @€ @€ @€š) ¸kæ¼5 @€ @€ @€@Íw5›Ý!@€ @€ @€h¦€à®™ónÔ @€ @€ @€5ÜÕlBt‡ @€ @€ @ ™‚»fλQ @€ @€ @€ÔL@pW³ Ñ @€ @€ @€f îš9ïFM€ @€ @€ P3Á]Í&Dw @€ @€ @€š) ¸kæ¼5 @€ @€ @€@Íw5›Ý!@€ @€ @€h¦€à®™ónÔ @€ @€ @€5ÜÕlBt‡ @€ @€ @ ™‚»fλQ @€ @€ @€ÔL@pW³ Ñ @€ @€ @€f îš9ïFM€ @€ @€ P3Á]Í&Dw @€ @€ @€š) ¸kæ¼5 @€ @€ @€@Íw5›Ý!@€ @€ @€h¦€à®™ónÔ @€ @€ @€5ÜÕlBt‡ @€ @€ @ ™‚»fλQ @€ @€ @€ÔL@pW³ Ñ @€ @€ @€f îš9ïFM€ @€ @€ P3Á]Í&Dw @€ @€ @€š) ¸kæ¼5 @€ @€ @€@Íw5›Ý!@€ @€ @€h¦€à®™ónÔ @€ @€ @€5ÜÕlBt‡ @€ @€ @ ™‚»fλQ @€ @€ @€ÔL@pW³ Ñ @€ @€ @€f îš9ïFM€ @€ @€ P3Á]Í&Dw @€ @€ @€š) ¸kæ¼5 @€ @€ @€@Íw5›Ý!@€ @€ @€h¦€à®™ónÔ @€ @€ @€5ÜÕlBt‡ @€ @€ @ ™‚»fλQ @€ @€ @€ÔL@pW³ Ñ @€ @€ @€f îš9ïFM€ @€ @€ P3Á]Í&Dw @€ @€ @€š) ¸kæ¼5 @€ @€ @€@Íw5›Ý!@€ @€ @€h¦€à®™ónÔ @€ @€ @€5ÜÕlBt‡ @€ @€ @ ™‚»fλQ @€ @€üÿìÝY¬×yàñÃårßwq—HQûnFRdÙ²`Ë’,;vb;;10/ àA€<ÏKðÛó0I’‡ÄA‰3v,[†;ÑbÙ‘µR%ŠÅUÜ÷}çôÿHßE¹u·®j’uoýKhõå½Õ§OýNŸïlUÕ ( € ( €5pá®fbvP@P@P@P@P@P@š)àÂ]3ËÝ£V@P@P@P@P@P@¨™€ w5+³£€ ( € ( € ( € ( € ( € (ÐLîšYîµ ( € ( € ( € ( € ( € ( @Í\¸«Y˜P@P@P@P@P@P@f ¸p×Ìr÷¨P@P@P@P@P@P@j&àÂ]Í Äì( € ( € ( € ( € ( € ( € 4SÀ…»f–»G­€ ( € ( € ( € ( € ( € (P3îjV fGP@P@P@P@P@P ™.Ü5³Ü=jP@P@P@P@P@P@š ¸pW³1; ( € ( € ( € ( € ( € ( €Ípá®™åîQ+ € ( € ( € ( € ( € ( € ÔLÀ…»šˆÙQ@P@P@P@P@P@h¦€ wÍ,wZP@P@P@P@P@P f.ÜÕ¬@ÌŽ ( € ( € ( € ( € ( € ( @3\¸kf¹{Ô ( € ( € ( € ( € ( € ( €5pá®fbvP@P@P@P@P@P@š)àÂ]3ËÝ£V@P@P@P@P@P@¨™€ w5+³£€ ( € ( € ( € ( € ( € (ÐLîšYîµ ( € ( € ( € ( € ( € ( @Í\¸«Y˜P@P@P@P@P@P@f ¸p×Ìr÷¨P@P@P@P@P@P@j&àÂ]Í Äì( € ( € ( € ( € ( € ( € 4SÀ…»f–»G­€ ( € ( € ( € ( € ( € (P3îjV fGP@P@P@P@P@P ™.Ü5³Ü=jP@P@P@P@P@P@š ¸pW³1; ( € ( € ( € ( € ( € ( €Ípá®™åîQ+ € ( € ( € ( € ( € ( € ÔLÀ…»šˆÙQ@P@P@P@P@P@h¦€ wÍ,wZP@P@P@P@P@P f.ÜÕ¬@ÌŽ ( € ( € ( € ( € ( € ( @3\¸kf¹{Ô ( € ( € ( € ( € ( € ( €5pá®fbvP@P@P@P@P@P@š)àÂ]3ËÝ£V@P@P@P@P@P@¨™€ w5+³£€ ( € ( € ( € ( € ( € (ÐLîšYîµ ( € ( € ( € ( € ( € ( @Í\¸«Y˜P@P@P@P@P@P@f ¸p×Ìr÷¨P@P@P@P@P@P@j&àÂ]Í Äì( € ( € ( € ( € ( € ( € 4SÀ…»f–»G­€ ( € ( € ( € ( € ( € (P3îjV fGP@P@P@P@P@P ™.Ü5³Ü=jP@P@P@P@P@P@š ¸pW³1; ( € ( € ( € ( € ( € ( €Ípá®™åîQ+ € ( € ( € ( € ( € ( € ÔLÀ…»šˆÙQ@P@P@P@P@P@h¦€ wÍ,wZP@P@P@P@P@P f.ÜÕ¬@ÌŽ ( € ( € ( € ( € ( € ( @3\¸kf¹{Ô ( € ( € ( € F’e5 IDAT( € ( € ( €5pá®fbvP@P@P@P@P@P@š)àÂ]3ËÝ£V@P@P@P@P@P@¨™€ w5+³£€ ( € ( € ( € ( € ( € (ÐLîšYîµ ( € ( € ( € ( € ( € ( @Í\¸«Y˜P@P@P@P@P@P@f ¸p×Ìr÷¨P@P@P@P@P@P@j&àÂ]Í Äì( € ( € ( € ( € ( € ( € 4SÀ…»f–»G­€ ( € ( € ( € ( € ( € (P3îjV fGP@P@P@P@P@P ™.Ü5³Ü=jP@P@P@P@P@P@š ¸pW³1; ( € ( € ( € ( € ( € ( €Ípá®™åîQ+ € ( € ( € ( € ( € ( € ÔLÀ…»šˆÙQ@P@P@P@P@P@h¦€ wÍ,wZP@P@P@P@P@P f.ÜÕ¬@ÌŽ ( € ( € ( € ( € ( € ( @3\¸kf¹{Ô ( € ( € ( € ( € ( € ( €5pá®fbvP@P@P@P@P@P@š)àÂ]3ËÝ£V@P@P@P@P@P@¨™€ w5+³£€ ( € ( € ( € ( € ( € (ÐLîšYîµ ( € ( € ( € ( € ( € ( @Í\¸«Y˜P@P@P@P@P@P@f ¸p×Ìr÷¨P@P@P@P@P@P@j&àÂ]Í Äì( € ( € ( € ( € ( € ( € 4SÀ…»f–»G­€ ( € ( € ( € ( € ( € (P3îjV fGP@P@P@P@P@P ™.Ü5³Ü=jP@P@P@P@P@P@š ¸pW³1; ( € ( € ( € ( € ( € ( €Ípá®™åîQ+ € ( € ( € ( € ( € ( € ÔLÀ…»šˆÙQ@P@P@P@P@P@h¦€ wÍ,wZP@P@P@P@P@P f.ÜÕ¬@ÌŽ ( € ( € ( € ( € ( € ( @3\¸kf¹{Ô ( € ( € ( € ( € ( € ( €5pá®fbvP@P@P@P@P@P@š)0¶™‡íQ+ð¡ÀùóçÓÅ‹ÓÙ³gó3?_¸p!ÿ1žG•ÿ=zôèÄÏcÇŽÍ~æwn ( € ( € ( € ( € ( € ( @7\¸ë†¢i K3gΤM›6¥ƒ¦—_~98p íÛ·/?ŸqâDþ=Y?~|êééI×]w]^¬›\ǂޚ5kòkî¿ÿþ´zõ꼀ǕwÜBÓMP@P@P@P@P@(+àJCY9_7ìNŸ>îÖ®]›>œ¿çnÙ²eiÕªUiÆŒiÉ’%ù;íŽ?žì~ô£¥Í›7§÷Þ{/mÛ¶-ñýxÜ:sÑ¢EùÙ…»aÿ‘ðP@P@P@P@P@¸¢.Ü]Q~ßüJ pûK¾·Ž+ïXÄc!Ž[`.\¸0M:5/Þ‘¿ &$nÉwÛM™2%/æíÞ½;_¡Ç v,ö¹) € ( € ( € ( € ( € ( €U\¸«¢çk‡µ‹s=öX^¸›6mZ¾5æèÑ£óm2¹E&?³]¼x1?n¿ýötèСôøã§÷ß?/Þ‘#G¿¿óÎ;óâÞ°1ó ( € ( € ( € ( € ( € (pE\¸»¢ü¾ù•`qnâĉyÁŽ+ê¸o mÒ¤Iéܹsù5ãÆËß{wòäÉtêÔ©¼°7Ðký› ( € ( € ( € ( € ( € (0˜€ wƒ ù÷+Àu\uÇW× t°,ÖqÛL¾×Žï¿;qâDÚ¿¾ Ûlº) € ( € ( € ( € ( € ( €U\¸«¢çk‡½ÀPìâ ã–™<_¸p!ÿš×såž› ( € ( € ( € ( € ( € (PUàÃ/ñªšŠ¯W ÜóèÑ£iÏž=ióæÍyñnÁ‚iîܹiìX×ÀððP@P@P@P@P@¸¤®6\R^)\eÇ­1Y¸;vìX~¾êª«ÒôéÓóí6;¹r¯Ý$_ÁwñBºÐzœ¿ØºåæÅö=þ÷¨ôá£Gugž|°]ì4#…lrbä+ž îøGòT%?ñ†cF‰+=G^ªlbaÓ²#O|–Ø"eòy‰¼•I£øšü™.þ¢äÏu*»°á¹WÜÆç¨J¹ÁZDzÃ(òU²èóËÂ†çøœ—I/Ê®yâýëXvE¾ÊÅkêTçÈSË®ÛmÝHŽ—”a7êõŸÿØâ9ÿ£ÃÿE^âsÕáË?¶ûH.»âçücÞÁ/".U)7Þ®Že×õ¶®ð9w×ø\‡UïJþв#OÑgŠü•ÌN~Ÿ£ÈW•tFr[‡Qô™ªÔ»âç¨e7¢ãeás^åsYülw£ìºQnOÊ.\xŽÏyó°)~Îˤ¯‰²‹üÅï;}ŽüDþ:}}ûþÝ(;òÔü„M±Oמߡü;òVCyÍ@ût£ìÈS7Û:ò^å}°¿5©­ã³Ž[·ì³õï \jî.µ°é3gΤ'Ÿ|2½ûî»é¥—^J§OŸN«V­J>úhZºtiš4iR©ã¤1ÙsbOÚvd[:5ñT:2öH3fè‹Kt zÆô¤±£Ç¦SäçRùèE§ÎJ{ŽïÉÜ™ógJ'5±gbš4vRÎÏ´ ÓJwðÈÃù çÓÑÓGÓ¡Ó‡Jç‡b4{Òì4aÌ„4n̸ÞU§‰ž»p.ç‡çç—ž4 ó4fô˜4aì„4oò¼Þ‰¨Nóû>u8:u(wìΞ?¿îè™NæÔqSÓ¸ÑãeÈ£ìvúÜé„ÑþûÓ©ó§Ê&“_G™Qv”a•²;yödâqæÂ™tôÌÑÒƒ<êuoÆ„ùQåàr hÕ9êŸõ²ƒ*,ÓÇOÏFSÇOÍÏeòÅŠzG™Qv”a•mÆø‰üðY§ìÊl VŽœ:’órâ܉lUv€N°¢ÎQ÷ªlØì:¶+ç‹:WvPÕ3º'×;>WX•|’>CÄJb&Ÿ­²y˜;ynŽ—”u¯ÌFˆM9Ž·êÜÙ %cÓ%jë¨oUâ%Ÿ!Úºˆ—Ä…2[´u{ï­/)«ù“çWŽ—|ž¨wUjëZŸÚ»n´u|žŽœ>’Û:òÅçªÌÆç{ʸ)¹­£Röóñ«ÝÇwWŽ—´uÔ;ò7~ìø2‡–_C;wâì‰\ߪ¶u”Ý´ñÓ*·uí;±¯r[G¼¤ì(³é¦—Ž—|vÈmõ®J¼¶ŽüЪÚÖ“èÐÞ•ÝÈFs&Í©Ü֑ʯ*m±’8Pµ­#^R÷hëh_ªlŶ/Ú»2[´u;s¬r[‡eW66Å1àC̬ÚÖ16 îUmë`UÇ¶Ž±eW6ðÙ!^26 fòÙ*»‘ÆãylP±­clãøkëèsǸ®êØ€˜„QÇ|®êÒÖñ™fœB{W¥­ãóÍ8¥j[W×y°¿ë8V¥­££ìª¶uÔ7>ÛÝlëŠó`ÌÝ2¿ºóØÎD»ã¦Àp(73ÜÚü+СÀùóçÓöíÛÓÆÓ¾}ûòm2¹ÚnÉ’%iþüÖY…[eæÁyk‚åøÙãi™ iô˜¡wôé@õœïÉ“e'‹t¤˜ìaBƒLÙÉqÒ;ªzxáýlž>:¦Šyíôg:åÓÏOOFxÖRÙ VŒèh2q@™•8¬ÒiêëØ™§ì"e>|žX´K­y‹qcË-²7Þ;—]ësÄ`Š|UÙ.ô\H3.Ìȃ*Ò.[v|–(7>OÇÏ/58AV“{&W9¬Þ×â³DG¸Ì–;¿­Iß‹cªŽ/Ÿ¡sçÏå<ñY¯²MÛZÄ¿8)¾8:.Ê–.”]LH“ÇN7™Ve^ßþ~Xå…àV¾¨eÓd‚•ù#ͲuŽ<0@áóÍç½ìÆ€jæ„™9^Rve7Žs|øŒS†e¶ÜÖ]hµu­øTÅ(Þ'âŸ+òV¦­#O¼Ž¶®ìD=ùáxr¼l•W7â%míRÎ_+í²u#Ê £ˆOá×É3mnm|ž¢ì8Î2Ÿb“дueë-ÇÓ[v­|`T5^ÒÖQo)3Ò.[vÑÖQ~UÛ:Ê®ÊIß‘ÿhëzówöÃþ/u±lŒ´}V ÝI×áhÌð¸p¡ufYë»ãø¹×_=­]»6=[m¸cáÂ…éá‡N“'ON3fÌHC¹½%ùY³fM:xð`zõÕWÓû￟¦M›–>ÿùϧÛo¿=‘&iur•\1_ãsÿõ\zgË;iÒÔIiÒäIiÔè~ÎØç×\ØÇZÖÏã{Æç3yfOœþûíÿ=Ÿ‘ÕúKé3 ¸î‡¹S~ðÄÁtîb¹E„kg]›VÍ^•È×ï,þR“v4âœÑÙ¢/|ðBzv˳¥‹rä—V})]=ãê4{òìÒƒOÎ^c÷iÿÉý9_e¥8{uÒ¸I9?ÿíæÿVéìzŽïí=o§g6?“ž‡NJ­›ðëŽ6&Ãîºê®4Êü´bÖŠ\†%ðÑÎt8Ë£­ÿQÚ|hs™dz_³|Æò\v|žfNšYºìvÝ‘6ؘvÛ^ÙùJ©3¢™”›1qF?f|úôòO§&?ЛÏ2?Ðù¥Ü6Ú”NœiÝŽ·õù*³Mê™”î^tw®sw,¼#?—I‡ŸòCÙqöZ•íÓË>óÅÙÇ3ÇÌÌ‹¯¦ÇDÁ»ûÞÍŸ§õû×çÏôN7Xøü0©B[6cY§IüÖþ”×O6ü$ç‹+“X•Ù¸š”z·`ò‚DÙ1ÜéF¼dRœ˜ù뭿α‰—Ý8òë7~=Q÷òœcÆ–šcB…xyäÌ‘\縊³ÌF}£Þ±˜ØÍ¶Žö%_ÍY¢­#^âC[ÇcEÏŠRmñ2Ú:Úߪñ’¶î[·~+[UmëÖìZÓÛ—më¸:ŠöŽúVµ­#^®Ý»6=»ùÙ+©ƒeÚ:âå­ónÍm}Ú–2ñ2ÚºÇßx¼r¼äóD½#FÍ;§T¼ä8hërÌlÕ·ªm±ûÞÅ÷æö®ŒQ¼†²êF[G¼¤ì(³û–ÝW*^’'&sŽ>–Ûºï½ý½?#¯ežiëxäÉÖÖ‰Oe¢­Ûu|WŽ´we¶hë0úÊõ_©ÜÖ16èF[Gœä3^µ­#^Ò¶ÐÖUD[ÇØ`ÊøV¬j]MRf‹¶Ž~ï{Zc„Šmù¡ì¸Ò¦ÊÆØàùíÏç8^¥­£BÝ«ÚÖ/Yøéf[Wul@¿›¶Ž±eW¦­clÀ˜Ž¶Ž±1³ÊUÓ16ØrhKå¶Ž±q¼j[ÇØà੃©.mñ’¶Ž8YulÀUQusl€fUÇÓÆM«ÜÖ3é[Vm눗|žª¶uÄKú(UÛ:Æ”1 ›cbT•y0â$sa䫎ó`UÚºâÄñªmñ²Nmñ’¯¡­«:6`.£nŽ ¶ÝžÇãe‚‰AÔ7ÆÜú¼j[ÇØ€q]Õ¶ŽxÉUnUÛ:â%㺪mín-çÁZm} ʰŽó`UÚºâ“Ä£3W”ždÏí@«Þñy½êm ’”]™¶ëhëø>‹*ŸoމcìF¼ä³D¼$Uâ%q„˜ÄÕœ×ViëZWIÒÞu£­ãx¢­£ýdà_¦­#^F[W5^òz¼»/)>¤YöóDÝ ­#^rÛܪmét£­ã3Þ¶.ÇËÚºJñ²›¢­«/1çóDzUâS´uÔá%Ó—”î÷’œt£­#n´uS7Ú:Žk&Ú«Ž ~«­«Òþ~ÔÖÑèF[G]©òYâ3ÉFÝe\Wµ­ãóM,¨ÚÖÛºÝÖ‘f7Ú:ޱl[ÇûÓ&ÑÖa^%?”¯ç3À¸®j[ÇØ€¶§²ù¡ÎÕ©­#^òyìÆØ#ÒéF¼¤Þ/ñ&UÇ|žêÒÖ/‰»UÛ:އ1OÕ¶ŽXBÙÕn¬ÕÖñyâ«ôåø,qŒÄ¦ªmֽ㺠mŸk>“UÛºâ<ØPÛ:æ]™'fQnéÒ¥‰ 1b{¤Õ/8<./ÜñÝÅ/´Nh=z*9q&íØ¿#¥ÎÏÏŒ¤}V £Züò7M®Å!˜‰‘ Àdz&ø"ÑuëÖå³)º}«Ìyóæ¥O}êSiâĉiÊ”)^q·uëÖôýï?ß¾ó»ßýn¾…çüÁ¤k¯½6­^½:ÝÿýyÁ®ÓE;ŽoýúõiË–-é/ÿò/ÓÛï¼þÇÿüiÕM­+dæµn8«u+¹Yoâ$ÞÖXøã»È¸UÀ snÈ©*Ÿ΄älvά<}ötž°+“ƒ t€çM™WzíŒ8ëpϱ¯Š(“—x L@LØ1©UvPÅU-ûŽïËgRqæa™³ýÉ·YÛºýù¹vöµ•:å¤ÇíB>8úAžÄ,û%¼t.éÓIäÖtÌÊlLôžO\)‰ƒ4âg™±]Gw}Ç[u®ì-ƒ¨oÔ;òÑͶŽúFÙ•ý<±L[G¬$f–‰M¼÷©³§²·ò­/1b€ÏsÕ¶ŽÏFUÚ:Ú9ê7Ú:>Óä…öŽ|3Ël|¾Yô£­£Rv²Ž:OÙñ¹~wÿ»•ã%FÔ;b'f•‰—xÐÖÅ-ºª¶u”m í]•øôþÁ÷+·u¹k•Ï ¦–_Ü V’'êõ®J¼Ä…¶Ž+€ˆÔ»2[´uôQhç¸J¢ÌmF×̼¦r[‡eWµ­#V3©wUÚºøÎÚºªw(¶uÄ̲‹ÑÖaÄRUÛ:beGžªlÄJbfÕ¶Ž> Ÿ§ªmcƘÝlëÈW•±}KÚ:êeW6D[G¬$fòÙ*»‘‡TmëÈ q¼j[G½#fÖ¥­#^2¦£½#VV0—‚Q7ÇX1¯:6ÈmpMÚ:>Ó|Žh華uÄKæRª¶uäÁy°¡EÚ’˜«ÒÖçÁª´u|®cl¨móÅçÎË wñGO_—õþÝÙ3gÓ¶-ÛÒ®v¥ïþßï¦[v¤o~ó›éOÿôOóÓ˜pÎ5öYšT?m¹&b6†¿gQ°qöWÇ»¹Íœùᢋ]ý]ÕÆ•v|¯ßiÇwÈU€¼†+ìæÎ›ÏôàwÝØÈÇ䉓Óô)­³ô¦ÎL³¦·n4ÐÂ]Û›Òaa’—ÆŸ«n¤ÅÀšÃÙ±gKMf’¾Ÿ…³²÷g=”¼ÒA¼8êb>ó«lƒ»*)ÞŸ×3ÉÇU(ä©ô¯•Òb£ìä\у<Íÿá•-g{Ê-þäÏcë ”ñ£ÇçÏT1ýNæØø\2ISv"$Þ#ÒªZv¤AZÔgneUö¼•¨o|á{Õ²ŸÒ3%IŽˆH IDATŸ¥2Wþlrë‚iÅMÙü„ gç2 ]¥ìø\Æb)‹tôË”Ö|ÉKÙű8.ž‰¹œM™'UzΕœÝ:‹¹uV.ƒÏ*qœïXáØ&œÏú.;YÇñ’tËn±©çBOþε3:¿Ê5òC½£ÜªÅqD[Ççû\«ìJ-ܵ>—”[7ÛºnÄKŽ­ñ’ÏR޽?¼ò®l[õ­mu˜¸K[GÙUÉW ÐÖ‘¿*¯Ç› íªñ£ªñ’c!?|.‰•UÛ:>Oe6‹®ÔÛn´u9^Ò¿lc•X@»BÙç8ó»J¼ä8iëH¯jžhë¢OXöjçhë0¢üªn¤Ñ¶. ºÐÖáÌ1ÒÖUP^ÑÖU¯NŒ ø.Öªm]î«¶Ò¬º‘'ÆuUÛ:â%u¯ã:Ž©Žmcâ@•v%ÇËVu¸lùñúˆ—UÛºÜTì‡suk먯|9¾ªcÊ-eË,^G, ^RnŒÇ˶-16 ¨Ú®t«­#Äݪmét£­#Ê­j ÊŽ´š0V¥­£ì»ÑÖaMZ´u¹Î4_Ü>;}t«óáXœq9 wG¦IÇ'Ï}á(cŸ®^q7\Knæ›/eãJ»n/Ú‘. b|ó¾¶ßüæ7iÍš5ùª¸þçηÂ|ä‘GòBâ׿þõ´¼u›Ì &ô¦ÓWý®ýŠ»wß}7ýïÿó¿ÓwÞ™\µ Í›ÛùÙÑøÒi©ºÑñ‰§2ãñþä):™4Êe·˜L½p¡ü@ªøÞLb1ª: ŠAß³RvËyh]=É3—ª[q°Y¥ì¨ä‰ò«âeÇñsÙcÌF­²c«š'œÈŸ©²[Ô9Œª|¾ãý©sÙ¨u`«˜ä«š'òÀe¯f‰ã♼D¼­RvQçrùU¸Q@”u®J~â°U©sä#Œª”]|v°ªòùŽc‹xÉ¿«Xõ–]«ÎEã=:y޲«c[—˰ÊnáÒxIâd‰*åF:QvUÚºÖ‡'~ÈK7Úºüùþ(Ž·>P¥·hëªÔ9Þ<Ê®Ì÷$¶g>Õ°­Ëq¼Âç;޳m]®kõá»Qv”_Û:Ú”²¾xG¼ìF[—Zý¶*m]îW¶ÆlUÊ.ê\·ÛºnÅKÚßÈc>ØÿGÙåXPñA®bA¸Ô±­#o•úNµuÝd³ m]7Ç|”ëÔÖõŽéè86è7Òðâ¿n´uô"~W‰™Ñ¿ìV[W§±A·Û:âRxõ[ÈCøCŒëª”oy©ÒÖå<\Ây0æ\ùº#îröÿõ<·ëwCø¸KmªÏ×öÐÌØpˆ+ÍâùræŸàNÇáðáýWÚ<ùá÷q¥—SÏš5+_m×í|qv5 άâÒõ+qüqL4¢ÝèøDzUŸ£cÁ ƒÿê²E‡õJ–U»DuÙ¢ìb¹ù"OQv5ú8ue2»›¾8ñ_Õ[4u3OQnñÜÍ´«¤UÇxI›R§Ïw”Yâ%Ÿï:–]â%õ¢ŽeGž"_Uên·^Ëg‰­Nñ’<õÕ§ëd[7„]o¹}ø±Â+.ý.u—¶uƒ—½cƒÁØ£·Þ/û«c[ãÞÞòë7÷—÷uê_rä”ÿÕ©ŸÒ[f¶uý~8£Î9Ö/Qï>ÖÖµb9õGœÈÔ»³?(0 \¸†…f–»+À~O?ýtÚ½{wzæ™gWÝqeÞc=Ö{¥‹v,Þ¹) € ( € ( € ( € ( € ( €—JÀ…»K%kºÃB€+í¸²nëÖ­ióæÍéý÷ßOÛ¶mK ,HË–-KóçÏOK—.í½Ò.nçÙ~puº’ =oþ[P@P@P@P@P@†‡€ wãœÌå%8}út¾÷ñž={Ò /¼6mÚ”Ž;–-Z”–,Y’–/_žf̘‘8Nœ8Ño¸:+ò\¼ë—È?( € ( € ( € ( € ( € ( À\¸’»ŒLîÖ®]›Þ{ï½ôì³Ï¦7¦•+Wæ;žW­Z•o™¹ÿþ¿ðxÚ´i‰‡ w#ósâQ) € ( € ( € ( € ( € (p¹\¸»\Ò¾Oí.\¸Ž9’¯¨ã{îØ¸mæÁƒÓŽ;Òk¯½–Æ7h¾.\˜¯ÐãÊ;7P@P@P@P@P@P ¬€ weå|ݰàŠ»uëÖ¥W_}5ß"sÔ¨QiçÎi÷îÝéÍ7ßLO=õÔ€ÇÈþlŸüä'ÓwÜ‘¦N:àþþQP@P@P@P@P@HÀ…»tüÛˆèééIW_}uâj»)S¦¤ãÇçã½xñâ›Å»¸¥æ_äŽ ( € ( € ( € ( € ( € ( @.Üõ⯚!0cÆŒôo|#/Ü9s&qëÌ2·Èœ3gN™—úP@P@P@P@P@P WÀ…»^ hšÀèÑ£Ó¬Y³švد ( € ( € ( € ( € ( € ÔT`tMóe¶P@P@P@P@P@P@h”€ w*nVP@P@P@P@P@P ®.ÜÕµdÌ— ( € ( € ( € ( € ( € ( @£\¸kTq{° ( € ( € ( € ( € ( € ( €upá®®%c¾P@P@P@P@P@P@%àÂ]£ŠÛƒU@P@P@P@P@P@¨«€ wu-ó¥€ ( € ( € ( € ( € ( € (Ð(îUܬ ( € ( € ( € ( € ( € ( @]\¸«kɘ/P@P@P@P@P@P@F ¸pרâö`P@P@P@P@P@P@ê*àÂ]]KÆ|) € ( € ( € ( € ( € ( € 4JÀ…»F·«€ ( € ( € ( € ( € ( € (PWîêZ2æKP@P@P@P@P@P Q.Ü5ª¸=XP@P@P@P@P@P@º ¸pW×’1_ ( € ( € ( € ( € ( € ( €pá®QÅíÁ* € ( € ( € ( € ( € ( € ÔUÀ…»º–ŒùR@P@P@P@P@P@h”€ w*nVP@P@P@P@P@P ®.ÜÕµdÌ— ( € ( € ( € ( € ( € ( @£\¸kTq{° ( € ( € ( € ( € ( € ( €upá®®%c¾P@P@P@P@P@P@%àÂ]£ŠÛƒU@P@P@P@P@P@¨«€ wu-ó¥€ ( € ( € ( € ( € ( € (Ð(îUܬ ( € ( € ( € ( € ( € ( @]\¸«kɘ/P@P@P@P@P@P@F ¸pרâö`P@P@P@P@P@P@ê*àÂ]]KÆ|) € ( € ( € ( € ( € ( € 4JÀ…»F·«€ ( € ( € ( € ( € ( € (PWîêZ2æKP@P@P@P@P@P Q.Ü5ª¸=XP@P@P@P@P@P@º ¸pW×’1_ ( € ( € ( € ( € ( € ( €pá®QÅíÁ* € ( € ( € ( € ( € ( € ÔUÀ…»º–ŒùR@P@P@P@P@P@h”€ w*nVP@P@P@P@P@P ®.ÜÕµdÌ— ( € ( € ( € ( € ( € ( @£\¸kTq{° ( € ( € ( € ( € ( € ( €upá®®%c¾P@P@P@P@P@P@%àÂ]£ŠÛƒU@P@P@P@P@P@¨«€ wu-ó¥€ ( € ( € ( € ( € ( € (Ð(îUܬ ( € ( € ( € ( € ( € ( @]\¸«kɘ/P@P@P@P@P@P@F ¸pרâö`P@P@P@P@P@P@ê*àÂ]]KÆ|) € ( € ( € ( € ( € ( € 4JÀ…»F·«€ ( € ( € ( € ( € ( € (PWîêZ2æKP@P@P@P@P@P Q.Ü5ª¸=XP@P@P@P@P@P@º ¸pW×’1_ ( € ( € ( € ( € ( € ( €pá®QÅíÁ* € ( € ( € ( € ( € ( € ÔUÀ…»º–ŒùR@P@P@P@P@P@h”€ w*nVP@P@P@P@P@P ®.ÜÕµdÌ— ( € ( € ( € ( € ( € ( @£\¸kTq{° ( € ( € ( € ( € ( € ( €upá®®%c¾P@P@P@P@P@P@%àÂ]£ŠÛƒU@P@P@P@P@P@¨«€ wu-ó¥€ ( € ( € ( € ( € ( € (Ð(îUܬ ( € ( € ( € ( € ( € ( @]\¸«kɘ/P@P@P@P@P@P@F ¸pרâö`P@P@P@P@P@P@ê*àÂ]]KÆ|) € ( € ( € ( € ( € ( € 4JÀ…»F·«€ ( € ( € ( € ( € ( € (PWîêZ2æKP@P@P@P@P@P Q.Ü5ª¸=XP@P@P@P@P@P@º ¸pW×’1_ ( € ( € ( € ( € ( € ( €pá®QÅíÁ* € ( € ( € ( € ( € ( € ÔUÀ…»º–ŒùR@P@P@P@P@P@h”€ w*nVP@P@P@P@P@P ®.ÜÕµdÌ— ( € ( € ( € ( € ( € ( @£\¸kTq{° ( € ( € ( € ( € ( € ( €upá®®%c¾P@P@P@P@P@P@%àÂ]£ŠÛƒU@P@P@P@P@P@¨«€ wu-ó¥€ ( € ( € ( € ( € ( € (Ð(îUܬ ( € ( € ( € ( € ( € ( @]\¸«kɘ/P@P@P@P@P@P@F ¸pרâö`P@P@P@P@P@P@ê*àÂ]]KÆ|) € ( € ( € ( € ( € ( € 4JÀ…»F·«€ ( € ( € ( € ( € ( € (PWîêZ2æKP@P@P@P@P@P Qcu´¬ ( €#XàìÙ³iûöíéäÉ“iΜ9iÞ¼y#øh=4¸ÔÄ”÷ß??>-[¶,Mž<ùR¿¥é+ @Œ- (dQË(püøñ<â-¯¹æšÔÓÓsßÝ·R@PàÒ¸pwi\MUP@Ë.ÀDØÖ­[Ó¡C‡ò{»pwÙ‹À7T`D S6nܘxž;w® w#ªt=®œ€±åÊÙûÎ ŒD'Näþ ǶdÉîFb!{L ( @\¸k`¡{È ( €#S€«böîÝ› ,™éQ) Àe ¦ìÚµ+>}:9sæ²½¯o¤€#[ÀØ2²Ë×£Sàr ÐG¡¿ÂF|qS@P`$øw#¡=P@Z§NJo¾ùfzþùçÓ–-[4Q@* S^zé¥SâJÞJ úbP %`lñc €Ý B…ñÅMP@‘ àw#¡=P@Z/^Ì·´ãTžmêGBª c ?») €Ý0¶tCÑ4P "¦ðoû+¡â³ ( ÀpðŠ»á^‚æ_P@P@P@P@P@P`D¸p7"ŠÑƒP@P@P@P@P@P@î.Ü ÷4ÿ ( € ( € ( € ( € ( € ( €#BÀ…»QŒ„ ( € ( € ( € ( € ( € ( Àppán¸— ùW@P@P@P@P@P@.܈bô P@P@P@P@P@P@†»ÀØá~æ_á&pþüùÄãâÅ‹9ë'NœHGMS¦LI“&MJcÆŒn‡d~P &ÇOgΜIçÎK§NJÇŽ«IÎ̆ GbÊÙ³gsL¡¿bLŽ¥hž¨Ÿ€±¥~ebŽÎôQ诰_ì¯ çÒ4ï ”`.„xpòäÉ<ïZ>%_©@=\¸«G9˜‹†°XGCÂãÂ… ¹!Ù¹sgš6mZnXXÀ;ÖjÙƒ‡©@×öïߟ:”«»wïN7nìú{˜  4G€˜Bß„ÁïÖ­[Óøñã›sð© \2cË%£5a)@…þ Û¦M›Ò‘#GéàA+ÐtæZ·mÛ–˜g=}útÓ9<þ à Á(Daø°pÇäîxlÙ²%?ïÙ³'͘1#íl‡O‰šSê%À uÇŽ‰ 1í^|ñÅzeÐÜ( À° ¦ìÝ»7|ßzë­tðàÁa•3«€õ0¶Ô³\Ì•ÃUàƒ>Èýò¿fÍš|bôp=ó­€å¸ó'03ÂÕ·£FÊîl?—OÝW*pù\¸»üæ¾cƒ¸E& t<âÊ»Ÿþô§ù*;o“Ùà‡‡®@ˆ1Ü‚ë† ÒO~ò“.¤j (ÐTb ·›âD#Î`ïééi*…Ç­€]0¶tÓ¤P ß&“1ÛúõëWñ3¡@C¸X‚>®Â0aBžo熲xØÃXÀ…»a\xf}x 0éÅ­¦¸ºnÖ¬Y¹SéUvó,͵u`ñêÔ©uË–ùQ@a*@L™>}ú0ͽÙV@º [êZ2æKá)À‹ý•áYvæZn pU_?ÄcâĉiÊ”)yîuܸq.èwÚ´.›€ w—Ú7R %‹›o¾9-Z´(_qÇ•wsçÎÍ y4,^qç§DP@P@P@P@è\€<æ_¹ÒnåÊ•iÁ‚y1Ï‹&:·ôWVÀ…»+ëï»7L€…9®²ãŠ»ë®».Í›7/-\¸0Ÿ ÂYb,ÞÑÀ¸) € ( € ( € ( € ( € ]€yUí˜gång\}ç¦ÀpÕºÿëÅá˜qó¬Àp8{öl¾ß2ßÃ÷PÅ%Û4,žý1\KÕ|+ € ( € ( € ( € ( À•`~•yÖ¸HâJçÇ÷W Œ€ weÔ| ( € ( € ( € ( € ( € ( €]ÝåôLNP@P@P@P@P@P@J¸pWÍ—( € ( € ( € ( € ( € ( € (Ðmîº-jz ( € ( € ( € ( € ( € ( € ”pᮚ/Q@P@P@P@P@P@P Ûc» é) @J/^Ì §NJ'OžLçÏŸO§OŸÎ¿»páB~;vl=ztš4iRâçžžžüÐO†¯uŸ:~âĉtîܹ\÷©ÿñàÈø;uÊ”)½ÏcÆŒÒAŸ={6Ç—ˆ-¤ÅïØF•ÄÒ›0aB~ð^<†²‘OòÎ3±‹ôù™ã"MÞcܸqùÁ¿97¸4Ô¿3gÎäúG½¤Æ¿ù¨÷ÔqúÔËÉ“'ç:O]åïmÄÒ9vìXŽY·xM¤M:³¢ï2Ô˜B߇PÚü-ú(ÄÄ”È{Ä'b i’_~vS@úP_cŒqøðáßêËÌ›7oÐ:ýÆB<"Îp„ÄUú-Ä0b ùŒ¾ïÁýbïÁ¿ eÿ§€ (p‰\¸»D°&Ûl:‘ ZŸþùô_ÿõ_iÿþýé•W^É@&ÇèäÍ;7͘1#=üðÃiáÂ…iÕªUiÅŠyÜl=^á)ÀäQ¡ÿñÿ‘¶lÙ’8öîÝ›öìÙ“ãƒAbƒ¼¯}íkiΜ9é‹_übZ¼xñ MLÙ¾}{ž ûÕ¯~•ž{֦M›òà’¸ÂÕµ×^›ø®^½:}êSŸJÓ¦MË¡LБקžz*mÛ¶-ýú׿ÎÇrðàÁ<ñ>}úô™& ˆ3éÒ'¡Ÿ2þüôÍo~3Ç*ÆDCY`£õË_þ2§÷Æo¤×_=­8&Òg\EúŸøÄ'Ò¢E‹r ( € 8ÓÖ©˜û+0ˆJ&ºY¼ûàƒr§‰|&Úâ .—‡ÊgˆÅ€yÖ¬Yy0ÌÙ¡ –ÝP`ø pF&gi2IMݦžÇDq37¨2ðã÷L¸Ç™â-é2!Æà”tˆ-üLœ!͘dgÞ›ýÙ‡<0yÅ•½ (™¼êk#òÍ@˜É{^Ëû·XŒ$½X$ }®èa¡’É9âÕìÙ³ûM»¯÷ów (0¸õ™:I¡Þ1±N‚E»¨³Äö£>r‚?S‡©¯LŒcXÜk_\g?ê6q„ÇÎ;{ãK{Láï¼'q3Ìy/&®èËðèkãýÉùæ$bÇA¾y¯eÒå=—,Y’÷#mûK»¯÷ów (0¸õ±õ6ž~?¨—ü¾ý þÎÏL`ó:ê1ÔÔÑâ$5õ™~1eÇŽ¹ÞS"nñûˆ<S¢Ÿƒàa IDATÂßHXû´ éƒÈkômHƒ˜BÞé¿°Ñg!ßìñ°ØH ¥ÏÂØÒ.뿸|ÔMê2õ˜ñ u˜ºJ=¦þÓîG]î+WÔu⯋×òã«âXˆßG¿%bq†­¿±P±ßc¡b¿…ôcú[űisâ@i÷u<þNP@¡¸p7%÷Q ¶?øÁÒÆÓ{ï½—\UóùÏ>ß²…::6lÈÍ_üâ¹øÈ#äsvëm·Ýö±I¶²à® (pÐ1e¢‹+lß|óͼ`Æ`Ž ô¥K—æ $˜lýMPµgÉ'&žH÷ÿñW°00äõÄ‹ßû½ßËhÄ©/¿ürž(g3Zÿ÷?ÇÎ4íkâŠð»ï¾›8{ öý×ͱêúë¯Ïg§²ðÇâpLì»~ò“Ÿä÷æx‰oôG4ä3YÛÏ+ @ßLqå+ vÔgbÌ]wÝ•þYŒçŠ5ê}Äb±âoÿöoóäú·¿ýí|5\5ïÂþL:1±ELY·n]o<âê®þ'Æ6uœ+\ˆ?ÿðÿ'ÖèÏW˜Àçd£ö˜Â݈¼–Z\¹G¾—·®Ú#}މ‰vâ%ùf¢Ÿ¼ðþ_þò—‡tNû{ûoè_€1 ý&Ïé—pÑ}÷Ý—'Íé0ÁM|àAÜ¡>r²À¿ýÛ¿åºKàJ“Ï|æ3ùõñN¤KLáñ7ó7y> “ñÄî*é²øG?…1Ò_ýÕ_å¾Ã_üÅ_¤n¸¡ß[[‡ˆ)ÑGá™8•uä›þÇD !ßôg¢/ÄU¿û»¿›c'1ËM®Œ‹ôÔeæH¸ÊŸØÂIEÄ!ú -¬G¿…úýŽ‚¾D±ßÂ~ĸb¿…Žè³ð ÆÅ^Q¡½ßòâ‹/æxTì·Wú5ô[ˆ+űýær†zU_ñ½ýYP@\¸HÇ¿)С“\œ)Æ`”A#ƒS:˜Ll_sÍ5y’IpöaœÎ&CÎNePË ”ß19禀ÃO€#ƒ¿œ2I̓³H˜R¿˜öuÄ¤É ‘‰m&Ѹ5“Tq[¼›nº)_ÃÄý,±/ƒËõë×çÉ*âh,ÀÅ™§¼]Ä-ög_ΪgBŒ =ÎTç9ðÞÿýÞÁ*i§¸‹Ä4þÍñ¹) @w¨›Llq†7u‹:L‚[×Sè[P÷¨ûœ½¾¹uû;bq‚ý©ÏÄöÛeSH—…3ö}ë­·ò-ŸØ—«Þˆ)¼é²ýÒ¥oÃï‰ ä‰XÆDx1¦ELá½Éqƒ3×Ùˆ,àq;LòG¬a¢Ÿ[]SØŸßóàØy/~vS@î P·¨‹ÄÆ,Àsb!ÜÔ=ú1ÄN4"Æ_¨‹Äž¹efqcú¼†xÂϤËÕøÜ üÖ[oÍé’6ñ€}˜\§A¿„8@¿†´Û׈)Ä"b ''ø™>ñŠXÈä:}ú[Ä’^x!?³¨GzLªSŠ%æÏ \~æ>ˆ Œ9¨Ã,â{Xlî#ú-œ<ýúCÄb¿%bQ±ßÂûrÒýb\ûIŒ}õ[b,Tì·7éÓ¯¸R°8"v9ºüŸ)ßQh‚€ wM(eñ²0 ¤Ê$ƒR V¹z.žP2F瓎#\ÎØ¢ÃÊëhÒ©|àò„Uq2첄o¢€¥¨¯Ôo’œÕÉYìÔyÎ줎óà;þýßÿ½£÷` ÈäƒEâ oœ™þÙÏ~6O¼1!Åïô2Æ;J¾û«u|òS lï¼óÎ!ˆ‰xâýâJlìO¼"NS¸ª˜|‘WÛSÈ#'‘ob"'M’Oâ ñˆ8ÄXŒ˜Âëˆ;Æ”öYË'@¤ï@ý¤Í'VwˆÄêp[ô[¨ÇÑoá$"ÆBÅ~ 1ƒøTì·°ØýN& _Qì·ÄØ&ú-ä+ÆBÅ~ ý"b ñ(â ÏÑo‰±ý–þJÑß+ € ”pᮌš¯Q :yL~3`dŠIö;î¸#=öØcyP̳8¡Í³Ó±drŽ*ƒ]ÎdeâŠ3K™€sá®h¥@MbáŠI¡o}ë[¿•Kê5&˜b°ø[; ð&žÖ¬Y“¯âe°JaêßøFž\'ÍØ˜lcá-Wéq+^b'0±Æ©ÇþĬ³¸­ Wò<øàƒùŠn…Åb@l ŒÙ³1gÒ-¾Ç†˜EÚÅ8—wô (PJ€ ¦Ï}îs¹/@]h²™úL\àÊn×M½dÁŸzu72ALyþùç{â}î¾ûî|R'ÅFLaRœ+oþó?ÿ3÷sˆ)Ü¶Ž 7#¦‘‡X¸#fñ\]Ç™îôyˆ)"}byebÿ©§žÊ“z'}"&Äœd)Ÿ¨.À‚],ÞÑlcÑ…7Æ*Ä&¿Yp£Q܏І[s3A‹~ýÅê<1‰‰úù—ɱ…»”p’±§}᎘ÂD91…Iú(ôU˜PççâÆÂû¯Ø‡8Å L\!HLa\E¼(–Óógèž'=ù䓹r a,ò3>¢~2ÿÑßýú Œ…¨Çô/ 7ê·pòAô[8A‰>I±ßc¡b¿…«x¹û@{¿…ØÅþŒuˆ'1"¦°pÇXÈ~K¥èïP@ʸpWFÍ×(Ї wL~ÓñägΧSÊÀ˜Î%Óößq<=¾‹3Ðlò̖ɲ¾^מŽÿV@z 0¡Í£Ó-Î6gÂŒÁ!gÆW˜bÚ¾¸O,!ރ؇Ép&¿‰MñûÈiksÂû1©WÇÁñžI—Á2±‰÷c Mú¼ž³Ù™ÌwS@êÔ1êõ¼½®÷•:û3™ÄÙÞLrQ7©—L2Å1…xÂ<1%®B¡Î·÷9¨ã\ùFüâîœ@š\!C`’>6~Ï LLÞ3±Æ¿9«žýb’.ögÞ~ “,4ò~œÔÄì\Y³páBO,Ÿ¸ÔIÆ4<ø¹¸E߆úN?€ºËb>õ–Éë¾b æq5-·¹cÆN¤Å4Å }bJ\ñÇ>,Îq"}‘¾6Ò#¦_&ëy }b ±0®0ìëµþNº+@Ÿƒþ±…;ê2'~á _Èu“vŸzN=ío+ö[³D¿…y’¾bL{¿…µè·Úû-1*ö[b,ÔÞ'"ü®},ÄñÅXÈ~K%éïP@ʸpWFÍ×(Ї@LX1ÆÏt$™°â61L¸µvI‚ŽëL–ÇÕvœ)J“‰w&­úê0öñöþJF˜ƒX«L¾ó=˜,Þq†9q…A+1¦}#Ö°@ÇÆ~œ)Ï@”‰/®Þ!6ÅFÚÄ+Π焲œ)Êăêþ®œ‹÷æŒ{âi2gÊüñþ>+ ÀÀôb!|°…;þ΄“ÕL˜3‰ÄU¶ÄlŘ­½¹íåêÕ«óD;WáôS˜d'/,¾38±ˆ> tđ؈Ä)&ÉÙ'®¼á¬uÒï«?ý Ò&fño&ñb¢ïÞ{ïä}V@+ @ÝháŽ@¥@ x u»äú‹)ÔñX¸c‚›ØEÌ OAL)nœ€@LáALa[Þ7Sˆ}mÄ1ö¡/Äwl¤KL!Fre²› \úÄNú¡2ž¡½ç6àüÅ.¶þú8íýú Œ…8A€0”~KŒ…è·pbS{¿%ÆBÅ~KŒ…úë·ðÞÄÅ E äX췠ঀ (Ð-îº%i: È$:yL¶1 Þßä7`tR™`c‘Ž}Ùø™N ÑbÇ2ÿÑÿ) @c¨ÿœÎÄÏL¾W¸:&âE_Ä&ÚØ‡}™ÀgñŽgÉ ‚Ù‡ç˜Üç=؈W¼†[×F_±‰¿“ö'­ˆ}Å…Á¾^ëïP 3ê×P7ê7}ê3ú"Ä&«Ùˆ)ñ7b õ•zÌ{ìÓ×{EL¡ÞÓga‚Š:O¤1…Ÿé¿ð·ˆ¼?e¼OÇ·ØgòÀIL¼–4ÝPàÒ PÙx¦ÞK¨Ë\ ÇÂý®ŒeAŒ k6ê9}â ñ€×²(Gœ,¦Ÿâ$NXŒt"Ä Ò'¦ðàg~G"¦úÚØ‡XÂ~ìC?…´‰)ô…Œ)}©ù;º/ýîxPYÔgᎱ1#ÆQïÛsA}-ö[H#ú-ýÅÒ 6q ÆBÄ3âiò~ìÃÏ1Š~ ñ#ÆBìÓ×Ö>bÒçaŒéKÌß) € ”pᮬœ¯S M€Îg‘qÖƒV:ŠL†E‡´m÷üOþÆ[ ‚c_:±Ü²Žit ûz­¿S@‘-@ `ÂŒƒJâ·…YÞ:“œå@±…˜Â™˜DœÑÎà—tœÀï9“ -6&ã83•ɹþ&ÝÐ2Xfâ,N<`Ò4‰_n (pùX´#NP—7·®°¥Þßpà 9V ؈)ÔUê=‹oL.SˆM€ñÚè¯Äwhr»*¾×*ú*LŽG?ˆ÷ Ö°«83žIú¾úCLŠÑgb#ŸÄö¥?Eþìeÿ§À%ˆ sê?S§é'Ðgà»í¸•ÏĘ/ùËù;è¸# a\¹ý â·Ôå1XL¡ÁwÄ…×^{-§Å¤7ïM\ -â±€?³/·¨#¦Ðçèkcb ÇBü!¦Ð7! ú6Æ”¾ÔüÝ žÐáñÄOäï§äJ´?ù“?Éñ¾ ò}õ Š9iï·ÄXˆ~ËPÆB̳ð>ôYx«"ÆCH/ÆBÑo¡/c¡¾òG|"¾ÇBô[b,dŒ)– ?+ € Tp᮪ ¯Wà#ˆ 6é 2¥SG'n°}œFÇ0Ò!-7h®±€Á~f#V0ÐJl!¦°?±ˆtLÊ‘V¤1‹ 9öã5ĤÁÒg߈q¤K:<"Ýæ–šG®À• þ±Æmo™¤¦N3yÍD5‹ílÔOö‹˜BŽ˜ÂσmÅþJÄ”ö¸BúôƒØ"FðºèãôõñÞìCìá™tx¸) À¥ þ7báŸç¨{\e ôÄê%·ÜfÑŽ¸ÁûÇDuÄ”è{ –sö‹´Š1%âEĬˆÄö˜éD>Ë—W@jÄú#ÚþÞ©Xwù™˜1Ô±P™~ qc°±Pä=b¯‰Ø9Ðñø7P@:pá®S1÷W :“q;:¾Š+Wú;4’ ³Çíè²?ÿ¦c˧œÅÅ ÖMš)À —˜ÂƒŸ‰ z¹šw(±…˜Â™æ±/±%Òãj9bßçéÇ@˜×ñ3ï7ÐFÜ"/ ȹÒ'ne5Ðkü› \®œ}üñÇóí¨8£œþÃg?ûÙtë­·¦å­«tÙŠ1…ú1…«þ‡²XO…Å@b¯gŽø±&úAüŽ´‰#<øûP6ö#¦«ˆ'äË~ÐPäÜGrŒ7þþïÿ>ÿÔ³Ï>›¯!%ê2u‰hnk÷ÐCå«d{ì±|….±€@]¥/1…z;”˜ÂD7õ˜BüáýèO^ÄŽbÌŠ˜BŸf(1…ýÙ7®¾#]ú*Æ”\tþOK*@lùîw¿›¯f£M§r÷Ýw§/}éK¹¾SLJ²c@ÄÆBĘßô—1€XÅXˆ˜Áëc,Ħ},1†}y %1"Ý cú+¯€ (PFÀ…»2j¾F>bìC=“Œ+:‹±Ñá³Ó>+ÐLˆ)Ä~f#V[xl#¦ [H›˜ÅsÄ žãçÁÞƒôyðzn (py˜,Љ¨¸%.I<¸ÝSûwQ߉)#ÊöWŠ1Š£ŽóÅô‡O"?Æ”ËûòÝš+@»ÍmsYlçÊ®²£î²Å3Wð2‰Í …L”3™uš×GLá5Å:ûðûþ¶èCÄß#†D"þÍ3H(i“fìÏϤéòo7è¾õ”> ‹ð{÷îÍâ}ÐXHïd#½ˆ1üÌFÜ(ÛoáõÅX@šü»ØoabÇPãLıbº¤á¦€ ( @7\¸ë†¢i( € ( € (p™Þ|óÍôÖ[o¥uëÖ¥§žz*_!óÅ/~1ßÎî®»îJË[g¹vVúeβo§€5કGy$_1wß}÷å+F˜tçJ:®˜yçwòwTýìg?ËWüó}U+W®L>ø`þ®¹š†ÙP@šDÜà.|7&W¡ýÙŸýYZµjUþ~ÌšdÓl( € (0l\¸6EeF‡ƒ@œÅÙ[qVØ`ùîkßHg°×úwÙí± âE'ñ¥(Ôž^ü›ç2[ä'Ò)“†¯Q@Θ\ç ñ]»v¥ 6¤Í›7ç«e¸†‰õ äï£âVtÅ­½®F.îÓßϱo1þ´§×þïþÒêë÷Åô«¤ÓWÚþN>.ÀU0‹/ÎWÈðÝuÜ“E;®²ãê;â̦M›Òš5kò‹‰5ÔÓ{î¹§wœÓ^W£üÝ>þ›ö}#-žc‹ßÅ¿;}æ=ت¦Óéûº¿MàJ»;v$îXÄ#ž,Z´(]ýõùQ±)þŸTtÍ5×äþ±$¾÷’:ãê(¯‹-Æ9ÔSü˜P¬»±¯h‹~KŒ…Ø7bJ¤Ç{ÄXˆ¿ÇqD¾ë·ç8&û-è¹) € \ î.…ªi6R€Ž K¾0™Î‹vƒu(¢³W\ä#Ò -—ü(yÐ d‹ÄüPâÅPb 1(ö%–FqâŠßñoâ #Íx0p% ƒ¬Fì"òÉkÜPàÒ P?7·íž}öÙü`ñ®J_ûÚ×Ò²eËÒÝw߿߮=Ôóè_PW©Ã1FšƒmÑ_!Nb’=îH“8À{°E<ᙿñþmìGL)æs 4PZþM ~ ôS7ÜpCÚ¸qcžŒß²eKúÅ/~‘¯¢Ù¹sgZ¾|yî—°¸“à1‰M¬,¦Ð§aB:ÏÏä…+†‰!Qï‰ü›[1¦ësD?ˆô‰K‘ÏÁeÜC: ¾ÓŸØ½{wzúé§{øgÏžæÏŸŸîH:q‚:Ík©£l¤Áï©Û<¢îâßÑoìiÒkï·DL‰X@šüÜW¿…| Öo‰±û‘N1~ñþn ( € Tp᮪ ¯Wà#™ ^éøq6*ÉÁ:”tF°ò¥ðtBù7?ÒáW‘P y1˜d Èñ€xÁ÷E/Úˆ%ìClaPÉ@’tH3â ÏÄ+b “elì{âĉ¼¼gûû0åQpG:ƒ pÛÓòß (0tê5“b\ùÂ$úæÖâ·º[²dIZºtiZ¸paŽùmÿ+ÆêjÄêrU~¦®RgéP?é_ "¦O†Sˆ ¨óÑïˆzO)Æ”bŠýû:úÈÏí7õvŸ:n™Iý~ùå—óÕºíï­4ÙgÿþýyÆo¼ñFcp…Æ.Ó¦MËu7b c!b ï5Ðñ‚±?Hø1†g~Oœ‰~ é’>ñ¢¿~KûXˆ¼E:‘ö@yóo ( € UÀ…»¡J¹Ÿƒ0(dòŒgn%³oß¾<¹“aÑ,&ÃßöìÙ“Ïde"ŽÓI$ÎP#-7h¦aóæÍ˃Y¯ ‰ 9 ~ XBLÙºukŽ+¤Ã­jbÊk‰I|àwÞy''Ç@›×0èfJÚ7öaÌ ºI‡«}X0 }7¸4Ô˧žz*­_¿>ß"“+îî½÷Þô¥/})]wÝuùyÆŒybª¯PŸ©óQ¿©ûÄ&ä‹gÁ÷õÚè¯0ÉÆÏÔ÷éÓ§ç÷оJôƒ˜‹X@œØÜZ`,NüÓg2íèÑ£yŽ˜EL¡ÿC?ˆ³ô#íâküY.Ÿ}N  ®R·™°¦^sK<ê(1…ÛfRçùÛ|û)ƒÅ&ù‰'|O'}â ñ+N$âI“X@ºüLìab ý&ÛÛ7ö!¦Gb ?G:ô…Œ)íbþ[ê,äS×héwÔÓŸýìgyì‡?üaïBYñˆ)¼ŽgâÛw¾ó\G¯½öÚÄ­6o¾ùæôçþç9‹b,DŸbÅŠÅä>ösô[b,D¿…±q,â ñ ÆBÄ 6bGŒ…â„…bâä7N¤dßè·ÄXÈSÔògP@ª® Tôõ |$Àd:A—Ld31FGŽ-Ù3g~¬ÓJ‡’>¹tÙN)W°}-ö ®€ÍàŒMâ qx@ aPÌïy&Ö°±Oq#öÄâg±òw&Õx}q_Ò!]âSâ g™2‘Æ “‰º¾6Þ›9ßyCØ—4xÄ@¸¯×ù;('@=ãÖtœ¹¾aÆ|ë:ê8“æÔÓU«Vågê1RýmŘB<`¢ŒúÌU|ôAxöiï{0±Æû1wðàÁü÷¸õûÇF|™5kVž„cŒtXä§Ãb\_“lôƒˆ%ìq˜'cV¼Ï (pùˆ qeõ•zM[O¬‰+íø™ºO¬ ßÁX&b ûã“ÞôS¸¢…Iob ±‹«jx.n¤OºÄb éĸ©}ßxq˜B\ãu¼ ƒÄÒ2¦„”Ï tO€zE\`ƒ“ ióÛ¨«œ<ñ€ºÊâu›»ÐÏ ÎÒ'àA¿%©ß̳ ¥ßBL"‘iãùޱPô[ˆ1ê¯ßBŸ¥¿±1f°’÷ï ( €¸p׉–û*0€ƒË[n¹%w8þóŸçI.ÎÖz饗rçuõêÕ¹ÓYL‚Îæ›o¾™Ö®]›;®|ÏìW_}uîDÒIuS@æ 0øcŒ3O™ãöxï½÷^þ+&Òˆò÷؈)L®3±Å¾\Iwûí·§o¼1Oî§b#mÎfe²ŒïÈbÀÍ@ô7¿ùMNƒ×ÓŽ××^|ñÅœ&ñ˜°ãŒX¾[k ïʉ×û¬€ 0ÁÍwKq"ÐO<‘˜ãJ»Ï|æ3éž{îÉ]}]}ÒþNSnºé¦œÎöíÛówܪŠ8PŒÄ&Öy{ø¾+bq… ¶â¯½þúëó¾Äþ͢ݯ~õ«kîºë®~ûAìÇÝ ˆ)¼ö¶ÛnËvż´‹ÿV@K/@üÙ´iSîSСÎ3™‹÷ü›‰ï[o½5/ÄqE0ñ"b u˜X'ñw&ìß}÷Ý×|ðÁ<ö!¦7܈)Ä6âXð£•ÆíûŒ­ˆWôWx éS¸²Æ˜Ò.濨.ÀX€ºF}ýö·¿Ç,Ųöw`‘Ž…·ÿøÇyÌB}¥¿ñÇüÇ9 ê; x,² F}§ß‚ ãî˜wa,4X¿%ÆBô[V®\ù±~KŒ…¢ßB¿(ÆBýõ[ÚÇB¼6ÆBƘöÒöß ( €U\¨¢çk(0p¥sI§“&X&Á™ˆŠ«ïèȱGg•Ž>1°e’³ÀxÐAeß:¼…·öG¨‘õ›:Ï4ÿfâ‹ /ê}üŽÉ«øþ‹qÄ6b1ƒ*“dLžW8›œ3=‰L ñÞ‡ô˜Üg@Ëÿ&ñZÒ(N²“6±†‰1œÄ/Òc24™XcÞŸgÒâ˜âlwò@Ú,Öñzž=Ù JÑgª ПàJ&©c~g©S÷˜Œ¦ÏÀÏL\wúÚ¢Çßø7WŸ0ÁÍäïAÜ ¦P‰ ŘÂÝ+­ IDATì}Þ›}Ù/6~fr|0‘OL!npµ i’Ï䕸ÃqûHŸ…;âc{L)¦ïã³ ”ˆ~ýêõ0ê#?óào<¨ëÄÚ|Ä!úÔû§DŸ‚> ‹bÄ–uëÖåñ 1…þuž×&q„:O?…:ÏûÄB`ûUt¤OL! b éз!ï¤OžØ‡c`#Þð;Ò'îҤƒtŒ)™Êÿ)ÐUêõŸ6œ«åèPç‰)í[Äê2õ“˜ÀkÙ¯p" õž8Cz¤ý^ËXˆ×ÄXˆ¸u›¿ŠýþM:ô[ c?ÇX(ú-q%`Œ…H›þ¤E¿…øC¿¥¯±P1ýöc÷ß ( € t*àÂ]§bî¯@?tè8ËŒI5θb‚›Aã?ýÓ?å(I:~ÜNŽNßÛo¿;•¿þõ¯óÄßSsçwæ+k⬵~ÞÊ_+ @¨ß\•ì ™œbg”2eÒŠ}ù"v&·bcr‰³È¤2IÆàõ“ŸüdŽ#Ä &ð‰¤Ï÷ÈJÒâìU¾‹Éx f¹:æsŸû\Þ—´Šÿ&6³¸z‡(Wßñ ¦™Üç `¼üŽI¿§Ÿ~:=óÌ3ùwwß}wN—Ûõ±/ùuS@îPŸ{î¹øŽ&¤Y [´hQ>Óœ+\è{Pך(âJ~±Qïzè¡ü:bñç{ßû^úå/™¯šáj>â1…8ÃU~,º‘ÞŸ³Þ~øáÞ‰úH—¸“l÷ßþ;·ö$^ln}'ýŸˆoä—[Q‘î~ô£<Ç߉)Ä#Ž‘ ñ>+ @y×_=­Y³&/š3Öà±|ùòÞ¾õ’¾ ^Ä®Táê®ø%øž(¾wŽþEÄ&Ã}ôÑ<îyþùçóB1…«Vx ±Š:úCÔ{ú)ÄÆJÄÆ@wÜqÇoÅ)Ž’ô‰)¤OLáù•W^I}âWÑЗ!¯L¨Sø™hõ‘"¦gcJ¦ó tU€zE}¥>3 >¶qò2í>õ˜×Ї`<Á| iEšüýN"`,Düàj~ú(Ä—è·c û-Ôûè·/b‘üñž1*ö[b,Tì·ð:ÆBô[ˆmŒ‡ˆOÑo‰±1f°’÷ï ( €¸p׉–û*0€@±³Ê]LpqµG¦œFg1&𹕠ƒWÎ6c€LG—'>ÒrS@á)À 1ÎPg,Lz1¡D<` ÈÀ’gÎØ$ÄÆ;·m!0ðebž‰2ž‰ ÿ?{÷®ÉU×üd³»i›Þ{#@h!”ˆ´À€!”è#ذP øW,`E@PAÊßЍˆéJ MB ’@zÝ„MBrÿó}ïÿ\Þ÷îݽ÷μ»;{çsžç½o¹SÎùœ™sfæ7%;çwÞè=Ï_Èÿ2ŸhKÛ’ùÉGÎÍYð9û5ãŽï¬f~Ù¹ÌÎræ™çd¥J¾2½ó9ùÈNo¼çj¿ì´&è˜é¦½Jð0ã³ã+ 0=l/d]ΙãYÿr€*ëtÖÇ´9èž3¿Ç¯Ø]hî9›|Òs¦z|eç4Éj»•q3œ}š @vp÷¸ÇÚ¬ÜÖ¦–aþô}'@ @žåôÒ—¾t´>fݯW—d]®¯2åMmÊ×툧=íi%¯š2|ÖíúLˤ:ûì³G¡ÒÖäÀ×x›’í’8ÏUz9ð•ö$íJÚ¦ùÀj~r6|æñÉO~²ä œÌ+'Ôƒ÷.ãæ ZاÝzà8ºó@ò§}YhÚµ Þ X¾@®"ùÜç>7: íKn7—m”lŸdÝÌzŸ¾¾®›Y/ÓÖ$(—ƒß¹"%'%x?dËøYß3½~ðƒ£«a²Þ礃´'iW’Ò&e[!ÓͶÏcó˜QP/û@9) ó]h½ÏvH¶K²’m”l«ä®&yÕ¼gÚ7ícò˜v$w2I»’í–:ý嫃-!uú%/yÉ(vÎ9çŒÚŠ7½éM£»ŒÌŸ_ÝnI;“í¡l·äŠàì-¶Ý’“‚r'“l·¤ØÔ¾PÝnIÛ•v2ùßn©íc¶[Ò¦]©ûBioêI–óóî;è"àŠ».zÆ%°€@6³ƒ›Élæ –í²“™ì9x•a²Ó›¾°Ê°£š[Õä7¿@õíH ¿rUZÎÒ̱œù9žêÁôœ±™”v¢¦ü/ɲcšé$巜ŞÅìtfÇ0;“¹â.ÓÏç6ÿÏÁõÜ.&»ìLæAì þeü…†ÕéçZ^i›rP>óÌÎpβϼ²S\§“3×Óf%X—üdÚ í2ï­²^gÌYåÙ¦ÈA£Ù“²^.–j[“ƒçã)¿ç {Ú„¬ÃÙÉAªl«ä•ás <ëuÚ”ÜÂ.mJ†=î¸ãFmEÚ›M¥L?Wº$åÀz¦™ƒl90—û5?iërv}N2ÈöO n®½ÚÔ<ýN€Àâ jeK»’퇴-¹3Húøœõ>ÃdLÀ>û3 xåÊþ¬Ó¹3H¶æ§´%i+Òfä–t9 m”¬ÿi«²”aòÊîl§dýϰ™~¶?6צdº™ÆM;‘ü¥ i[²o•í¨:íl«äáã'¤MÊÿ%ú#P·Q’£ñÏ å0ÿÏvKŽ“Ôí–ì_å„Ŷ[Ò~¥íØ\“é×í–l£dÚùm|»%Ûai_Ò†¦³/´PMù¦-°é½îiÏÉô H †9À– Ël`æ*›œMšƒp9 Ÿ ÁlôÕƒìÙÌ,~h!QÔ+uû‰O|byÀ0: ”u~9)ÁüËéãšò9¸2ýœAžÝ™v€Ù™ÌÿÓÞÔaXKÛ’Ý´9KI9–«ôr`,;º9—ö+mW=(—3W3ïhËü–:í¥Ìß0üP ‘žüä'ÖÃÏAõ6éä“O^p´ls¤½Èº}úé§â'0˜ŒÆÛ”ä#ä]Èz?~¥Í‚û1·:餓FÇ´I¹ú&ÓÏ6R¦“ðG5'.¥]ËA0mÊž¦,þ;ë}ÖŬo zåuÖ÷¬›yÏÿ³“^¶!²]u4Áû¼6—2n¶_2\Ú”lŸd}O»’m…¼Ò–Ôí”ä'ß7w@}|~™~ž•v%¯<[*Û'9! )ÛMiWrâRòží©:ßñéøL€À¶ȺŸ+ùs%íƒô Ñ6Nڥͥº/”qóüï´!‹m·Ô}¡ÍMwüi[2ŸlóŒo·¤}Ì|³Ý’À]æm_h\ÎgØn•¹%TM“ @€ @€ @€À2Ü3b™`'@€ @€ @€ °%î¶„ªi @€ @€ @€X¦€ÀÝ2Á N€ @€ @€ @`KÜm UÓ$@€ @€ @€ °L»e‚œ @€ @€ @€À–¸Ûª¦I€ @€ @€ @`™wË38 @€ @€ @€-! p·%TM“ @€ @€ @€À2î– fp @€ @€ @€[B@ànK¨š& @€ @€ @€e Ü-Ìà @€ @€ @€¶„€ÀÝ–P5M @€ @€ @€Ë¸[&˜Á  @€ @€ @€l Õ[b¢¦I€ @€[WàÆo,333eݺueÕ*çhn]}s#@€ @€Àtî¦ãh* @€ئ Úí±ÇÛ4fN€ @€ÝvhvîfºMÂØ @€ @€ @€tpÿ”®‚Æ'@€ @€ @€ 0») š @€ @€ @€®w]O€ @€ @€ @` wS@4  @€ @€ @€]îº Ÿ @€ @€ @€Àh @€ @€ @€º Üu4> @€ @€ @€)ÜMÑ$ @€ @€ @€t¸ë*h| @€ @€ @€S¸›¢I @€ @€ @€è* p×UÐø @€ @€ @€¦ p7D“ @€ @€ @€ ÐU@஫ ñ  @€ @€ @€LA@àn ˆ&A€ @€ @€ @ «€À]WAã @€ @€ @€˜‚€ÀÝM‚ @€ @€ @€@W»®‚Æ'@€ @€ @€ 0») š @€ @€ @€®w]O€ @€ @€ @` wS@4  @€ @€ @€]îº Ÿ @€ @€ @€Àh @€ @€ @€º ¬î:ã @€ °õ^ÿú×—õë×o‘¯Zµª<ëYÏš˜öë^÷ºrÓM7ÍýöˆG<¢Üínw›ûîÃÂ]tQyÇ;Þ1ñÏû±+÷º×½&~ó¥?–õþÔ…œ @€¢À3MbÁ•™ @€Àö,p衇–ï~÷»[¤«W¯.·ÝvÛÄ´>øàrÙe—Íý–ÀáSŸúÔ¹ï>,,ðÞ÷¾·œvÚiÿ|õ«_]Î<ó̉ß|é€e½?u!' @€†(àŠ»!Öº2 @€¨@Î[¼ôÒK'Jà–5kÖLü¶­¾ô=ÛÊ¥Í|Y¶Q3 @€ÛZ@àn[×€ù @€ °Õn¸á†røá‡OÌïœsÎ)÷½ï}'~ÛV_úž¿måÒf¾,Û¨‡ @€m- p·­kÀü  @€LA`ݺuS{æÜŽ;î8…™ @€ °\»åŠž @€@î}ï{—}ìc[,g¯}íkˆ æ¦ÿ#?ò#sŸ} °’,ë+©6•… @€Àö' p·ýÕ™ @€ØêgœqÆVŸ§Ø–õm¡nž @€TUõƒw @€ @€ @€¶€Àݶ³7g @€ @€ @€sn•9Gá @€]®ºêªrë­·ÎMfÿý÷/kÖ¬™ûþÝï~·|ðƒ,ŸÿüçËÕW_]~åW~¥<ä!™ûÿü擟üd¹à‚ F¯o}ë[£éí·ß~åÈ#,xÄ#Jž··zõ¦wmnºé¦rýõ×&}à 7ÌŸE¹òÊ+KòUÓü<×ß·Ôû–Ìß~ðƒröÙg—Ï|æ3å²Ë.™xàåˆ#Ž(÷»ßýÊøÀekÚu|ûí·—~ô£åüóÏ/^xáèµÃ;”C9¤zè¡£×É'Ÿ\’ïÅÒ–´\lÞùÊ’åõÝï~wùæ7¿92ÿþ÷¿_²L¥,§œrJ9õÔSGß—2½:Ìå—_>švý~ÐA•U«~xîwÜQ>ò‘”O}êS£e9Ëygæw{Ü£Žê @€¾ ÌH @€lwMPc¦Ùט{=øÁÞ¢eh‚3;î¸ãÜëþáœßI'4—§ä¯ $Œ†k 3¯~õ«gÖ­[7ñÿW½êU Nçæ›ožyÑ‹^4³Ç{L ?^æú¹ PŒ¦}Ûm·-8­?û³?[tuZyÿßÿýß§ÓæÇ÷¼ç=Í;ãiKäïšk®™yÎsž3³×^{m4ÿñ²{ì±3ò'2ӼƳ´ÙÏÓªãë®»næå/ùÌQGµÙ<&¿Mðwæ OxÂÌûßÿþ™,K›JÓ°\ê²>ž‡&`7ów÷w3M@mѲ4Aæ™_ýÕ_ùÎw¾3>‰Í~ž?Ý&Ð<¾ Ìμìe/[t¾÷¼ç=gš€âfç០@€ôCà‡§è5{C @€È•Dã¯fwf¡Áü-ãýÔOýTyÖ³žUÖ¯_¿à0ã?报ãŽ;®üÞïý^Yè ¹ñaó9WÌeÚ¹*k)ÃÏ¥}ÛÛÞVî|ç;—W¾ò•¥ Žm¶x¹*ì÷ÿ÷KØ)úЇ6;ìæþ¹Ü:þÒ—¾Tš€]yîsŸ;ºÂnsÓÎÿš l9묳Ê#ùÈòÔ§>µ,gù[lÚóÿ?¾œçóbóÊò—+›`Üè »ùÓ›ÿ=WA6A¾rüñÇ—·¼å-óÿ½äïMà¯üèþhù­ßú­Eçï‡>ô¡å oxÃ’§o@ @€¶€Àݶq7W @€ƒHÐ#·¾õ­K*o‚ OzÒ“Ê¥—^ºÑð»ï¾{9üðÃKsåßFÿË øýÄOüÄÄ-pÿøº×½nä—ÛY.'夹íè?ÿó?/g´Ñ°Ë­ãÔíi§¶É bn‰™Û<æv™ ¥Ÿ¨íCºä’KF·zýô§?½`vvÙe—Ñ-?Zfs[Ï´›«ws?Æða{Øè¨›nü >ó™Ï,_ýêWÇö™ @€ž lúA=˨ì @€ °ý üû¿ÿ{in«¹QÆ;ì°’çÔ5·Âœû_žÓõ”§÷='ýìèYhy®ÜøUv ÀýÒ/ýR9øàƒËÃþð:ú¢ïË©ãÌãÑ~tIÀk<=ñ‰O,¿ù›¿Yîz×»–æöž£¥žóÜ»êr…Úµ×^;7Êk_ûÚò“?ù“åsZ–s3Ú̇ä/yøú׿>1Ô½ï}ï‘c®†;á„FÏdÌ•{çœsNI`5¯,ë5ýîïþîè ÉÇ?þñõ§Eß÷¸ÇÍ­' p¦~Ï8ãŒÑUŒY¯Î=÷Üòñ¼¼ño,yÆ^MùüGôGåßþíßêOÞ  @€è›@³ã$ @€ ° lígÜÍÆÖë_ÿúÅæ?ÿ,ÏójöF¯O|n*ÃLóËRžq7>¿¶ùûÞ÷¾7Ól&Ê–çÛ½ùÍoŸüFŸÿðÿpbœxsÌ13·ÞzëFÃÖºÔqsµ×Fóû›¿ù›:éM¾§Žš+.'ÆmP›>ÿhk¹Ôe=óŸ¿,=èAš¹þúë7›¯ÿú¯ÿÚèÙƒy–ã¦Ö‹Ll~žê|›ÀöLsµß&ç×sGÏ¥¬Ãç=Ž›Z?69!ÿ @€ @`« ¸â®Ùs‘ @€lï_üâGϰêRŽÜzï…/|a—Il4n®JJ:óÌ3ËŸÿùŸ—vÚi£aê¹l<媯\±´¹´nݺQžsµYM¹`®‚ÊsÛ†’rUâøí1›€iùð‡?\rõ׿R®¾Ê°Mon°Ü63W->íiO›ûms–SÇŸùÌg&&•«ï–2ŸûÞ÷¾£eè%/yÉÜøŸúÔ§æ>oíM­¼øÅ/ž˜mž!×jKpžø}þ—ÿñ/ÿ÷_r•aMy6ã_ýÕ_–åúÛbï{ï½wùÄ'>1qµèüqûØÇ–?þã?.ÏþóçþÕ»GWãe}— @€蟀À]ÿêDŽ @€,[ þ?ö±-{¼ñr‹Ä-‘Ðxõ«_½è¤çîöÜsÏEÇÉ Nå6ŸûÜçæ†Ï-‡¸»ì²ËÊ¿þë¿Î•=~ã7~cÑ ]áþàF·ÌüÈG>RÝbq)µ:ÂRë8·‹OãÁ«ñßú|ÿûßâç¯}íkß·æ—Þ6lØ01ËW¼â‹íêOxÂÊ£õ¨ò¾÷½¯þT^õªW•ÔÅBÏÛhìCn»”Ûºþâ/þbù½ßû½Òœ<7öü[•Îýà @€¶¹€ÀÝ6¯ @€ °r„È•DKIÍ-'kn«9z&ÝbW0e¤ ›+‰jªÏëßWò{ž™ÖÜÚr®ˆyÆÙ —yåäÓŸþô2¸kn¿XÖ¯__rEãbi9uœgØ=ç9Ï™›d—«¾ÆŸ77Á­ôaþsTln»¬¹?ùÉOžÜ]sÍ5åóŸÿ|¹ßýî·ètšÛÁ–g?ûÙ‹—?òÈ#Ë…^87üøÕ™s?ú@€ @€@/îzQ 2A€ @`e $ ±Øí.kÉsÕÖ[Þò–úµ4Ïm+§žzjyûÛß^ößÿ¹ßúÛæ5Äô¡}h¢ØÍ3èÊ.»ì2ñÛb_rõ×xºí¶ÛJóÌÁ²”ÀÚrêø™Ï|æøl–õ¹ë¥ËšÙf¾òÊ+G·bäÏxÆø×%}Îm,×®];týèG?º¤À]®T\NgýÜåVŸ @€ý¸ëg½È @€e Üå.w)y^Y—tøá‡w}Áqï~÷»/øûB?žrÊ)ýüÉO~²}ôÑå)OyJyÜãWN>ùä%ߎp£‰­Àò|¹ùÏzËmC—›öÚk¯’«¸ò|Àš¾ýío×›}_NovB ü3W†}ãß(guVyå+_¹À[ÿ§ÿùŸÿÙh¦|ä#7úm±r+Ø#Ž8¢\pÁsƒ.õöŸwºÓæÆYʇ=öØcb°ù·ùœø§/ @€lS»mÊoæ @€¦#+j~ú§z:›âTrkÄ¥¦€^ô¢žÇ5>ÎM7ÝTþöoÿvôZ³fM¹ï}ï; àåj¼?øÁ£«–ƇÒç‹.º¨Ü|óÍEþÌg>3zÆÝÄKø2þ ´ ~ñÅ/a¬R–SÇ M0·äüøÇ?^¾üå/® Ë•aõ•ÿõ-%8žV¯^]:è ñŸ–üùÀœÜåv™KI ´.'í°ÃËܰ @€lC»mˆoÖ @€VºÀN;í´¬">ÿùÏ/ 2ä}¡”[8æ ³¼^úÒ—ŽžÁöð‡?|t5ÞÏüÛ¨? IDATÌÏ”wÞy¡ÑVìo zÞÿþ÷—¼º¦L—’–[Ç™fžÉ÷ªW½jt%]¹rp{I×^{íDV9ä’çüµIpÀÄh ÕçÄÿÿËrn“¹Ðø~#@€ @ ¿«ú›59#@€ @`ˆÏ{ÞóÊ9çœSÎ8ãŒE"¹"ëïxGù¥_ú¥rä‘G–?ýÓ?-wÜqÇ`ضä³Ên¹å–-âxöÙg—{ßûÞå¹Ï}nÉm' Ú­Zµªœ~úéåÌ3ÏÜ"ùYîDçî¦y‹ÙuëÖ-);¹ÊO"@€ @`e ØÚ_™õªT @€¶kÜómo{[ÉHïyÏ{Ê;ßùÎò¡}¨ä™g›JW\qÅè6›W^yeùË¿üËM ¶¢~_èJ¯Üºr·Ývë\΃>¸ó4æO uøˆG<¢Ì¿-gî°Ã+ÇwÜ蹆yÏóú²,ì»ï¾åÍo~syÍk^S]™9÷e+~Øu×]'æ–«@Û¦ñg fÇsLÛI @€" p·B*R1 @€¬D}öÙ§üìÏþìè•`ÏyçW>üá—|à£@ÞB·s|Å+^QŽ=öØò¬g=k%’L”)>óÓ‹_üâòøÇ?~þÏÛü{®Tû…_ø…‚v ä=ãÏ(}èCKžÕØ÷”€âxÊsÛ&»¶rÆ#@€ °rÜ*såÖ­’ @€XQyöÝ=ïyÏòìg?»üçþçèj¼w½ë]åÔSOݨœ¯ýë7úm%þ°PàîüóÏïeQP¼ä’K&òöë¿þëå¿ÿû¿Ëžð„Eƒv·ß~ûĸÛêËît§‰YçJÏ6·Í-B/»ì²‰i¹ân‚à @€ƒ¸dµ+4 @€í_`íÚµåÑ~tyßûÞWžùÌgN(Wæmذaâ·•ø%ÏõÛsÏ='ŠÖ×ÀÝg?ûÙ‰|>ð\Ö-M¿÷½ïMŒ¿©ÛmN ´¾Ì¿â.ù¸à‚ –=§\5:?™+E% @€†- p7ìúWz @€½øÿørÔQGͽžþô§/9_¹ï/xÁÄðyîØ—¿üå‰ßVâ—U«V•=èAEûØÇ>Vî¸ãމßû’Û=&hTëàè£Þèj°Å¦±Øÿ¿ô¥/M rÊ)§L|_ìK_ê3ÏáÛyç'²Ûæ Ï7½éMÓØ}÷ÝGÏö›øÑ @€' p7¸*W` @€ý¸óï\<ª¯\´œ´ï¾ûnL9ðÀ—3‰ívØG>ò‘yÏwo{ÛÛ&~[ìËïÿþï—o}ë[sþ‡rH9è ƒmÉÿÏÕW^yåÄð .5]wÝuåßÿýß—:ø.â‡<ä!óxÝë^WÖ¯_?ñÛæ¾Ä#Áêñ”g2ÎŽÿßg @€†! p7ŒzVJ @€½¸ë]ïZvÛm·¹<&ˆô©O}jîûb>÷¹ÏMÜ3A§\µ”´Ü«Ó–2Íi³XþžúÔ§–½öÚkb–ú§Z–z+ÉsÏ=·üË¿üËÄøO~ò“'¾wý’€T®æO_üâÇ¿nòsÊÿ+¿ò+妛nÚä0KýÇb–KÎK^ò’’^M×_}yå+_Y¿.úþ¼ç=¯Üxãsí[·®üÆoüÆÜw @€®€ÀÝpë^É  @€ôF`ÇwÜè–gžyf¹øâ‹Íc:¿û»¿;1Üýïÿ‰ïõK$«W¯®_Gï_ùÊW&¾oË/mò—[,>ûÙÏžÈöç?ÿùòÄ'>qÑ«À>þñ—Ç?þñA¾#Ž8¢üìÏþìÄô¦ñåÄOœ˜Ì?þã?–¯}ík¿Íÿ’«ô~ú§ºœuÖYóÿµÑóáæÐÆrþ46õý>÷¹ÏFF¹jñÿø75ÊÜïæ¯xÅÜ÷|øµ_ûµ²ß~ûMüæ  @€Ã¸f½+5 @€Þ ¼ìe/›ªå*º{Ýë^å_ÿõ_Ë­·ÞºQ~o¿ýöò®w½«<ìa+þð‡çþ¿víÚòGôGsßÇ?$@x衇ŽÿT~ó7³¼üå//ï|ç;ËûÞ÷¾ríµ×Nük~i›¿ð€Ld5·ËÌoï}ï{Ëå—_>÷¿<ÿ/Ï›{þóŸ_~ìÇ~lt{ÌúÏ5kÖ”7¿ùÍeÏ=÷¬?Míý1yÌÄ´n¸á†rê©§–û·›f óÎ;¯üöoÿv9þøãË[ßúÖÑxûì³ÏÄø—^zéh¸‰Ǿ´µ›Äf?¾èE/*»ì²ËÄ0ø‡X~ñ±$ :~…`®®Ëí_ý×½d˜ñ´ë®»–ç>÷¹ã?ùL€ @€À€&O50„¢ @€ °m¤Kí¥/}é\Fòl³§<å)åçþçKž‰v—»Üet[ÈK.¹dtµÖx@ªŽ”€Êü«»êÿòþЇ>´¼ñoœûéꫯ.¿õ[¿5÷ýÓŸþt9餓æ¾oímò—€[ž—q/¼ð¹,ùË_.§vÚè{nºÿþû—¯ýë B3Pn±9?87±ŽrKÏ·¼å-£@bT®¨ü™Ÿù™ò´§=­ä9‡ Ð~ç;ß)¹õäxÊ3÷>ò‘Œ}µ|¹è=ïyÏÑ-QO9å”òOÿôO㣌>·±Üh"›øáðÃ/¹eæsžóœ‰!Þð†7”¼V­Z5 <&€˜@äB·éL½%0z‘ @€ WÜY @€èÀ ^ð‚òà?x£üäêº .¸ ¼ûÝï=íì³Ïž¸Š¬ŽàP‚›KùÿøóÉ67ì¶ø_Ûü%”çnê6¡—]vÙèJ»…®^Ì3è^óš×lñ+¿^ÿú×/øìÁ\‘öÙÏ~v”¿ùA»\˜+ØŽ;î¸Ñm=ç×I‚¸6l˜ÿóè{[Ë'¶À¹Eé_ÿõ_‚tóÿ@]§y–ßBA»<Ó1A»Ç=îqóGõ @€ Ü ¸ò @€@ßrëÁ}èC£Û$æeKM?ò#?R>ùÉO–† Êp åýï9ðÀ—:ù­:\—ü¥LŸøÄ'Ê_üÅ_”½÷Þ{Ñ|çj°G=êQ%Wæ9k[:媿³òüÂ\‘¶¹”«+_÷º×–‡\m™ôðå|àæF›ø_ˉ mæËÓŸþôQÐ1Æ¥¤,Ÿyn_žï—çJ @€Ø¡¹½ÈÌø> @€ @ ¹MæYgUþçþ§œ{î¹åšk®)ù-W*sÌ1£×±Ç[œ9ýôÓ ØÍ/S®<ûÆ7¾1ºuäúõëGÏu»ûÝï^2ÍÅ‚ó§µ%¾wÍ_Ê”e®RÌÕŠ¹â.WÖå‡vXIY@:øàƒ·Döfêôƒüà(÷•¯|¥$ˆ˜«¤;ãŒ36y»Ò\]—+.s…^Œ2NžsXƒ{ ͸«åBÓ\è·/|á £g%&xï«®ºª$}ÀŒÜñˆGŒn]š¦D€ @€…îRñ @€ @€ @€­,°ù{“lå̘ @€ @€ @€¡ Ü µæ•› @€ @€ @ Ww½ª™!@€ @€ @€ª€ÀÝPk^¹  @€ @€ @€z% p׫ê @€ @€ @€¡ Ü µæ•› @€ @€ @ Ww½ª™!@€ @€ @€ª€ÀÝPk^¹  @€ @€ @€z% p׫ê @€ @€ @€¡ Ü µæ•› @€ @€ @ Ww½ª™!@€ @€ @€ª€ÀÝPk^¹  @€ @€ @€z% p׫ê @€ @€ @€¡ Ü µæ•› @€ @€ @ Ww½ª™!@€ @€ @€ª€ÀÝPk^¹  @€ @€ @€z% p׫ê @€ @€ @€¡ Ü µæ•› @€ @€ @ Ww½ª™!@€ @€ @€ª€ÀÝPk^¹  @€ @€ @€z% p׫ê @€ @€ @€¡ Ü µæ•› @€ @€ @ Ww½ª™!@€ @€ @€ª€ÀÝPk^¹  @€ @€ @€z% p׫ê @€ @€ @€¡ Ü µæ•› @€ @€ @ Ww½ª™!@€ @€ @€ª€ÀÝPk^¹  @€ @€ @€z% p׫ê @€ @€ @€¡ Ü µæ•› @€ @€ @ Ww½ª™!@€ @€ @€ª€ÀÝPk^¹  @€ @€ @€z% p׫ê @€ @€ @€¡ Ü µæ•› @€ @€ @ Ww½ª™!@€ @€ @€ª€ÀÝPk^¹  @€ @€ @€z% p׫ê @€ @€ @€¡ Ü µæ•› @€ @€ @ Ww½ª™!@€ @€ @€ª€ÀÝPk^¹  @€ @€ @€z% p׫ê @€ @€ @€¡ Ü µæ•› @€ @€ @ Ww½ª™!@€ @€ @€ª€ÀÝPk^¹  @€ @€ @€z% p׫ê @€ @€ @€¡ Ü µæ•› @€ @€ @ Ww½ª™!@€ @€ @€ª€ÀÝPk^¹  @€ @€ @€z% p׫ê @€ @€ @€¡ Ü µæ•› @€ @€ @ Ww½ª™!@€ @€ @€ª€ÀÝPk^¹  @€ @€ @€z% p׫ê @€ @€ @€¡ Ü µæ•› @€ @€ @ Ww½ª™!@€ @€ @€ª€ÀÝPk^¹  @€ @€ @€z% p׫ê @€ @€ @€¡ Ü µæ•› @€ @€ @ Ww½ª™!@€ @€ @€ª€ÀÝPk^¹  @€ @€ @€z% p׫ê @€ @€ @€¡ Ü µæ•› @€ @€ @ Ww½ª™!@€ @€ @€ª€ÀÝPk^¹  @€ @€ @€z% p׫ê @€ @€ @€¡ Ü µæ•› @€ @€ @ Ww½ª™!@€ @€ @€ª€ÀÝPk^¹  @€ @€ @€z% p׫ê @€ @€ @€¡ Ü µæ•› @€ @€ @ Ww½ª™!@€ @€ @€ª€ÀÝPk^¹  @€ @€ @€z% p׫ê @€ @€ @€¡ Ü µæ•› @€ @€ @ Ww½ª™!@€ @€ @€ª€ÀÝPk^¹  @€ @€ @€z% p׫ê @€ @€ @€¡ Ü µæ•› @€ @€ @ Ww½ª™!@€ @€ @€ª€ÀÝPk^¹  @€ @€ @€z% p׫ê @€ @€ @€¡ Ü µæ•› @€ @€ @ Ww½ª™!@€ @€ @€ª€ÀÝPk^¹  @€ @€ @€z% p׫ê @€ @€ @€¡ Ü µæ•› @€ @€ @ Ww½ª™!@€ @€ @€ª€ÀÝPk^¹  @€ @€ @€z% p׫ê @€ @€ @€¡ Ü µæ•› @€ @€ @ Ww½ª™!@€ @€ @€ª€ÀÝPk^¹  @€ @€ @€z% p׫ê @€ @€ @€¡ Ü µæ•› @€ @€ @ Ww½ª™!@€ @€ @€ª€ÀÝPk^¹  @€ @€ @€z% p׫ê @€ @€ @€¡ Ü µæ•› @€ @€ @ Ww½ª™!@€ @€ @€ª€ÀÝPk^¹  @€ @€ @€z% p׫ê @€ @€ @€¡ Ü µæ•› @€ @€ @ Ww½ª™!@€ @€ @€ª€ÀÝPk^¹  @€ @€ @€z% p׫ê @€ @€ @€¡ Ü µæ•› @€ @€ @ Ww½ª™!@€ @€ @€ª€ÀÝPk^¹  @€ @€ @€z% p׫ê @€ @€ @€¡ Ü µæ•› @€ @€ @ Ww½ª™!@€ @€ @€ª€ÀÝPk^¹  @€ @€ @€z% p׫ê @€ @€ @€¡ Ü µæ•› @€ @€ @ Ww½ª™!@€ @€ @€ª€ÀÝPk^¹  @€ @€ @€z% p׫ê @€ @€ @€¡ Ü µæ•› @€ @€ @ Ww½ª™!@€ @€ @€ª€ÀÝPk^¹  @€ @€ @€z%°ºW¹‘˜™™)·Þzk¹ãŽ;F¯|— @€ @€ @ ½ÀªU«Ê;ìPÖ¬YSV¯þh/iÌm)`ÉÝ–úæ=XÛo¿½\uÕUeÆ åûßÿ~Éw‰ @€ @€Ú $`·óÎ;‚v{íµWÙ{ï½ÛMÈX¶±€ÀÝ6®³–@®¬»å–[ÊM7ÝTÎ;ï¼rå•WŽ®¼¸Ör ´ @€ @€LW »µk׎‚wwºÓFï¹ê.WßI¶'»í©¶äu»H€.ÁºK.¹¤¼úÕ¯.ŸÿüçG·ÊÜî ¦ @€ @€ØÆ¹UæºuëÊ“žô¤Ñw¹ònÏ=÷,ù]"°½Üm/5%Ÿ+F ϶Ëí1¯¸âŠòÝï~·ì±Ç£³>Òyì¸ãŽ+¦œ B€ÀÖÈÉ7ß|sùÁ~0:«l—]vÙú™0GVŒ@Ú”õë×N2ÊŽ¯³TWLÕ*m* mÙ¦üfN`Å ÜvÛm£} ,Û+Ž«¬¸*V KÈ]β‘×7ÞXn¸á†rÝu×¹ÓÙ’ô ÔG»>ÖŠ<­Xz«ÌÜ.óŽ;î]ºýØÇ>¶qÄ%gì¾ûîÎþX±µ¯`¶¼@6L?øÁŽž¡y '”“N:iËÏÔX±iSÞþö·nó}Úi§•C=tÅ–UÁØzÚ–­gmN† p饗ŽöRÖÇ?þñ£“£‡Pne$@`R '0_~ùååꫯ.ÿùŸÿY®½öÚÑIÍ6l½Oíþ Üõ¿Žäp $p—€]^ùœ3ÁŽ:ê¨rüñÇ—ý÷ß¿ì³Ï>Î[Aõ­(¶¶@6P¿úÕ¯ŽÚ—c=VànkW€ùXaiS>ñ‰OŒîp{Ü£wÜq+¬„ŠC€À¶жl uó$°r¾ño”/~ñ‹£žxâ‰eß}÷]¹…U26);œ}ç;ßÝÝl·Ýv+×\sÍèØH®ÀË1ؼ$Û“€ÀÝöT[òºâr{Ì8 ~øáå ƒïÜÖaÅU³Øj¹õn®Þ½þúëËX¼“ ÐV mJîm“Ü@›ÒVÒxŒ h[Æ5|&@ «@îh”핤£>zt\¥ë4O€Àö'À] Ðí´ÓNÛ_ä˜À<»y ¾ØÚéLvÝu×’³AÜ}k뛕%çÛ­]»¶¬^½zôŒ»´)Ú ¤MÉsíÒ¦d[E›ÒVÒxŒ h[Æ5|&@ «@¶Qêsxëq•®Ó4>ÛŸ@wˆìü IDATwivÙew3ÛþªOŽXµÀo~"@€ @€ @€ @`+ Ümep³#@€ @€ @€ °€ÀÝB*~#@€ @€ @€ °•î¶2¸Ù @€ @€ @€XH@àn!¿ @€ @€ @€ØÊw[Üì @€ @€ @€,$°z¡ýF€l«V­*;ï¼sÙu×]ËÚµk·¿È1½H›²Ë.»”™™™²ãŽ;ö*o2C€Àö+ mÙ~ëNÎ ôQ Û(Ù^IJû" @€• p·jQ @€@#°ÓN;•»Ýíneÿý÷/‡vtH›râ‰'–[n¹¥ì±Ç¦edTmK•ðN€À4²’핤´/X w+¡•49Û4A»5kÖ”Ýwß : ¤M9è ƒÊm·Ýæ*ÞN’F&@`\@Û2®á3]r§‘l¯$¥}‘ @€ÀJ¸[ µ¨  @ HÀîˆ#ŽïöÛo?&è$6åØc-·ß~ûè¼&fdüm‹Ei ä1Ù^IJû" @€• p·jQ @€@#Õ£>š¦"6å.w¹ËT¦e"¨Ú–*áiì¶Ûn¶W¦i Ð+OmíUuÈ  @€ @€ @€ÀPî†ZóÊM€ @€ @€ Ð+»^U‡Ì @€ @€ @€ U@àn¨5¯Ü @€ @€ @€½¸ëUuÈ  @€ @€ @€ÀPî†ZóÊM€ @€ @€ Ð+»^U‡Ì @€ @€ @€ U@àn¨5¯Ü @€ @€ @€½¸ëUuÈ  @€ @€ @€ÀPî†ZóÊM€ @€ @€ Ð+»^U‡Ì @€ @€ @€ U@àn¨5¯Ü @€ @€ @€½¸ëUuÈ  @€ @€ @€ÀPî†ZóÊM€ @€ @€ Ð+»^U‡Ì @€ @€ @€ U@àn¨5¯Ü @€ @€ @€½¸ëUuÈ  @€ @€ @€ÀPî†ZóÊM€ @€ @€ Ð+»^U‡Ì @€ @€ @€ U@àn¨5¯Ü @€ @€ @€½¸ëUuÈ  @€ @€ @€ÀPî†ZóÊM€ @€ @€ Ð+»^U‡Ì @€ @€ @€ U@àn¨5¯Ü @€ @€ @€½¸ëUuÈ  @€ @€ @€ÀPî†ZóÊM€ @€ @€ Ð+»^U‡Ì @€ @€ @€ U@àn¨5¯Ü @€ @€ @€½¸ëUuÈ  @€ @€ @€ÀPî†ZóÊM€ @€ @€ Ð+»^U‡Ì @€ @€ @€ U@àn¨5¯Ü @€ @€ @€½¸ëUuÈ  @€ @€ @€ÀPî†ZóÊM€ @€ @€ Ð+»^U‡Ì @€ @€ @€ U@àn¨5¯Ü @€ @€ @€½¸ëUuÈ  @€ @€ @€ÀPî†ZóÊM€ @€ @€ Ð+»^U‡Ì @€ @€ @€ U@àn¨5¯Ü @€ @€ @€½¸ëUuÈ  @€ @€ @€ÀPî†ZóÊM€ @€ @€ Ð+»^U‡Ì @€ @€ @€ U@àn¨5¯Ü @€ @€ @€½¸ëUuÈ  @€ @€ @€ÀPî†ZóÊM€ @€ @€ Ð+»^U‡Ì @€ @€ @€ U@àn¨5¯Ü @€ @€ @€½¸ëUuÈ  @€ @€ @€ÀPî†ZóÊM€ @€ @€ Ð+»^U‡Ì @€ @€ @€ U@àn¨5¯Ü @€ @€ @€½¸ëUuÈ  @€ @€ @€ÀPî†ZóÊM€ @€ @€ Ð+»^U‡Ì @€ @€ @€ U@àn¨5¯Ü @€ @€ @€½¸ëUuÈ  @€ @€ @€ÀPî†ZóÊM€ @€ @€ Ð+»^U‡Ì @€ @€ @€ U@àn¨5¯Ü @€ @€ @€½¸ëUuÈ  @€ @€ @€ÀPî†ZóÊM€ @€ @€ Ð+»^U‡Ì @€ @€ @€ U@àn¨5¯Ü @€ @€ @€½¸ëUuÈ  @€ @€ @€ÀPî†ZóÊM€ @€ @€ Ð+»^U‡Ì @€ @€ @€ U@àn¨5¯Ü @€ @€ @€½¸ëUuÈ  @€ @€ @€ÀPî†ZóÊM€ @€ @€ Ð+»^U‡Ì @€ @€ @€ U@àn¨5¯Ü @€ @€ @€½¸ëUuÈ  @€ @€ @€ÀPî†ZóÊM€ @€ @€ Ð+»^U‡Ì @€ @€ @€ U`õP ®Üî¸ãŽrÓM7•Ûn»­\{íµåÖ[o-·ÜrËèýöÛoý¥wܱì°Ãe×]w-kÖ¬){ì±GÙsÏ=ËN;í4z‘$@€ @€ @€LC@ànЦ±] $`÷ío»\yå•åŸøÄèý²Ë.½ÿûßóR°èV¯^]Ž9昲ï¾û–{ßûÞ夓N*‡rH9ðÀG½í@¦  @€ @€ @€^ Üõª:dfk 䪺뮻®\uÕUåŠ+®½®¹æšrã7Ž®¼ËÕwI¹2/WÝe¸\•·ß~ûvk×®-»ï¾û(°—+ñrUžD€ @€ @€h+ p×VÎxÛ½À† ʾð…rþùç—K/½´Ü|óÍåðÃ/÷»ßýÊ.»ìRöÞ{ïQ0.Áº\÷¹Ï}®\}õÕåcûXùÀ>Pó˜Ç”‡?üáeÿý÷/GydI O"@€ @€ @€´¸k+g¼í^ WÒ­_¿¾\ýõ£²äª¹áŽ>úèÑ3ì=ôÐQà.½Ü:ó /]÷½ï}¯|ë[ß*Ç|¹ÛÝî6ºæa‡¶Ý{( @€ @€ °mî¶­¿¹oCÜæòôÓO/'Ÿ|rÙyçG·ÃÜu×]K^y¦]žm—”_n«yì±ÇŽn—ùŽw¼£¼éMoïòù÷¸Çè¹JO"@€ @€ @€´¸k+g¼í^ WØåJ¹üàe¯½ö*ù¾¹´çž{–ƒ:¨œsÎ9£Ûbæj½K.¹dt•^¦! @€ @€ @€ºÜuÑ3îv-°Ã;Œ®´Ëu;î¸ã¢eÉ0¹o·Ýv+ûî»ïhœïr+ÍLC"@€ @€ @€t¸ë¢gÜíZ »åÜÞ2»µk×–uëÖ•ýöÛoô¼»înºé¦233³][È< @€ @€ °íVmû,ÈíC ϹË-17lØ0 Úå*»</¯% @€ @€ @€@».zÆ”À÷¿ÿýrà 7”Ë/¿¼|ó›ßÝóC)pÀ蚃ÂPX @€ @€ @`ên•9uR\‰¹º.A»k®¹ftµÝm·Ý6ºmæ^{íUöØc²jUûxs_i&Wn½uöµ„ÇíM׋ýÖ¬™ø¹Õ—Üñ3ùIêr÷Ïä©’,·<³sŸý[óG6y©mAuÿÿR?×u­ÖßRÇ›?\ÍCm æÿ¹ßÓv'u©·ä©u©»š‡XuY¾gK4Û.U¯ú^ÿ·œ÷i×]ûºñ:\ŽM¶ÖÝx[Pÿ׿½u©·Ì·Ö]}o“—Œ“|ä5¾®.ßÕ¬mžj_×e˼k>j[Ð6?oܨKÝ%Oµ­ìÒÔ<Œ·ã]Ê7¾|W·åN/yšF{™ù&yõ±¯«u¸\Ÿ:|­»iôuãFùÜ6Õu.ãwYïjj[Ð6?u¼jTÍêïË}¯íd]÷–;~>ùÈkíeòRóUÝê|–ó^ë.ùªëßrƯÃÖ<Œ·õmÞ§Ù×%o]ÚËä¿útY¾«C5ªfõ÷å¾×¼Ô÷åŽ_‡¯ùèS_W×µú^óºÜ÷Ô[Rm f¿µÿ[ªY›)Õe)ãN£î’—iôuYÿk~ª[›ò·K]Ö»š‡Ú´ÉKgܨKÝÕö2Ó­VuËy¯yˆOõZÎøó‡­Ëw5›ÿÿ¥~¯yé²ÞÕ<ä}Kôu9®šõ0¯ê¸ÔòŽ@¦p¸¸Å’'Ó¸å–[ÊYgU¾ò•¯”/}éK%ßï~÷»—3Î8£zè¡e·Ývk5ÃtxÍ|墋J¹ùæR®»ny|6 ÒÙecåðûw|Í]@Ëw¿;»qÐ¥£ G^ÉWÛíÈ´J²‘—&fÚ)ÅéÀKó\ÃÒ]Ûïx&O×_?»!|Õ—åf.ùÉÆ\òÓ\¸ÙiG8óN^®¾zv§3yl“²ñ´çž¥ì´S)»î:[‡m¦“ ¤ºÁ”廹XµSŠQê.ËS^mdË«Y}GuØvC®æaŸ}JÙwßNE$¸ì²Y£,Kmwª²,e]KÞR‡yo“Ò&¥îRg©»¶ù©óŽQòUÛ©º¡^ÿ¿”÷ÔSsÞÄhã»y¤è¨ÛÔ]æ—XeËrÕ%Åæ’Kfó•ϱk“Ò¥Îê{Ûå».?i+Ó´ÍOÊ<|ð¬Qê.¯6)y¸öÚÙv2íf–­6)ùIÝ%ÓìëRoyµ]žj;™þ.ŸÛ.ßµ¯ûÞ÷º·—1:ì°Y«®}]–£øtéë²¾%OÓèë²<%/YÆ“¯¶ýoò´ûî³}]m7Û,—ÉOê.¯´ÉS—£¬wÉ_ê®Íò”ù§ŸK[™õ-ë]›å;Ó©ëÜÞ{—’¶¼KŠÍ4úº¸¤î’·ä©m{™ü䕾.ë]—ö2.ÉKÍOòØ&Õ¾.õVë°Ítj_£ƒêÞ×eß uWÛ©¶VµŒOú¼¶u—|$iºîL»¯KÞn¼±{_—¶ u×¶ï­ËMÚËôÁuyoÓdyªÛ(µÛ´M™w–í´ÛÓì벜çÕeyŠSö Rw]ú•ÔWÚ´™mó“ºËò]ÛËÔ]—<Õmð®}]ê.yéK_—å)íwúº®û©·¼¦¹o«ÚVÕõq9ïµÌö@í[–3~¶®ûÓèë²Lg9ªùiÛ×eùÎ~]×¾.ùI½eýŸæ¾AÖ·Ô]›ö2îi'óJ¾âÕ¦½Ìt’‡Ô_ÝîÍomSœêq°º¼·™VòTƒuéë’‡,ÛÓìëÆƒ%Ÿ^8{\3Û0í] Ye$6%+íÖ¯_ßlÞT.½ôÒfcõ’QÐnïf‹|ßæˆý~ûí×ìÌìÙt¶r]qÅlûe+mæ~pk³ý{M¹âŠëšï-õ. ¸q l¦ù•Ø”ÀÍÍ)¯ï}ï{›ç«ÊG?úÑQàî.w¹KyÈCRüà—c=¶ÙÝ­Ùah·*ÝrËmåïü@s¦þyMçµ®™ÎnÍ¿fëÁ”yÞ¼Ži^G7¯#š ‚Õ£» k²2úÜü£uÊÆøßÿýl‡œƒ=éœÛ¤ûÞ·”¼’¯`is#o=pñž÷”ò–·´ÉÉÇÉFÁ3ŸYÊ=ïùÃ3򿧴ÊÁ°O}jv§ó]ïš=ˆ¸ô±8d^dcî÷(åÎwž½Zã‡ÿ]þ§ÿýßY£zÐ ~ËM©§SO-娣fÚ¥²•³ž²cþwWÊ—¿¼ÜœLß\Ü:ª»ºéI³VmòRÇÉAñ·¿½”óΛÝAÏ2ß&e'êôÓg—íSNi”Ê‹,ˆÓÿý¿¥\ye›ÜüpœvÚìÁÃ,_mšÊ´Cçž;»<}ö³³yËFùrSæƒO9H÷Û¿=»þ-wãÃgÇåoœÍWœÚ¥’§¬wG9{P3W–›²¾×à´Ki3sÅFÛ”«ÇžûÜÒ\Y>›§ì\µÙÑËA‹´—9¨’u.ýJ›TÖgÝ›f_—v*uצ¯Ëòœþ¤öwYÛôui/k_7ö2}Ý ^0ÛN¥ÍlÛ^¦¯ûøÇgÛò®}]ú»»Ý­{_—öò3Ÿ™íëb–ƒšmúºÔÕÉ'϶ß|d·ö²öu/y÷ö2ë[Ö»´Q ¼¶i/³~¥K[™õ­k_—í€G?z¶}j³îÖqÒ^N£¯K{™ºË²Ý]Ì»ä'óÎøi/ãÔµ¯K{²Csh!ål›’Ÿ¬s}êëÒ^&?ÓØ7¨WM£½Ìz›ö²¾’Ç6)ëIê.±¾ôui/Ó–tíëRžl«víë²oà8ØÒ–®ñã`]–§´#ÓØ¯«ûËéënkf~}Ó@_ݬôßi:¶\XQSÚÊ»LÙ²î$pwÇë›÷›FWçeY‘lÏwÛsíÉûH§p^s L:„OúÓ£Nâˆ#ŽhôܵÜÿþ÷o‚qºô IDAT'4WÝØœÉÞl©wHkÖ¬.'tBsPëè&°wóÚ£Ù¸n¶ÐL™W³'Wš=ßÑûŽ£¨œ™³Ä¦Ñ!e:9«²^¹Ñv§ñ¸ãfϬÏôÚe'#±Ò¡7ä£óY–øc°}ôìº.V’§\!—²Õ˜%fab°lü¦Î’§déš’§œŸÀDÛÆä#gÓæª–`i›²“‘òåÍOüD)ÇßvJ³ãuÔì´2Í.u—2%/Ù¹ÎtÚìĦlY–r#Ëy×ó<`Ö<;w9ˆØ&eY:ñÄÙå2ËhÛ—´)Y.ò'»'³îfNžÚœ•™r¤ ©ënΓÈY•mê.eËÃä%ëo×ó\ݘƒÙ!ʺ×&%/9(–õ¥íy i/HJ@"æ9ÈÒåD¦óL/Ÿ3ý6)åIÛ”²¥?‰U›”õ-ë]êoš}]ê-¯6}]ÖÝ£Žš-_Ú–¶}]Ö‹,“YO¦Ñ^Æ)ÞY»´—ÉSÚËœ Û¥¯Ë¤i»s•M×¾.ã§ÝM_—¶2mf›¤Y†îu¯Ùv7ål›â[ûºi´—Yžº¶—)K–Ç\±“³Ð“Ç6íeíë²eîšb>¾.íeê.ïmÛË”%mJíë~ꧺµ—™^ÚÝ´—ÉSÛö²öu JfZÍnG«TûºåÕ5eÓèë²eïÚ×eM[0}ƒÚ×eYÈ2Ñ6Õ¾.V©Ç®}]úßiôu1Ï~]×¾.û)[×¾.íeÚ–iöu]÷ j_—}ƒ¬{m-)Sê+yI5¾.íeÚð®}]ö ²|wíë2ïK_—õ¬öuYÿºì¤lyM£½Ìrö2'Ag¼ë¾AòÕµ¯K’6¥k_—ör}]Ê“ütíëj?žz›F{™éLã8XÚÝ´™^Û}ƒlGdÝÇÁºôuÉSÊWËÖ¶¯K[™:[N_·k3BîvvP³±W³³“ *jÊr"fÚ¨ì³Ü~ûšuð{M`÷ªrÎ97ûÄWÖA½Ø.vh®,jÎW‘¸¨9eãMozSsíåå oxCÓØo(?÷s?7¸Ëm2Û¤\Åwþùç7g„\ÔÜÊêå«_ýzù?ÿç/šƒc÷m:惛Nð€f‡¦Ù]bÊŽBv²tÔQÝw²³’33k§×¶u¨ê’¯ìµ=ˆ‘ÝpÊÆoÎÊê’â”ÛNd#!,±k“²1 ñ¼gc%VmR¬dc.@98Ó6?uÞñÉ+1c֦Oê°Í-û’ŸÌ;u£.W"Õ²¥ÎRwYžòjk•³òòJÞ²Lµ9à›e9ËRò+Iòê’’‡¬sÙö̲Ô&€ùgYÊFt|rà>ïmRòŸ´m¯DŸo|²LÕvªM[å)gCgyêr#óŽK¬²Îe¹ê’²ž]xál¾ò¹Íò”ù'O1Êqê®íN^òå'í@–ï¶mSò”<vجQÚªÔ_›”<¤LÞ’§Ôa›”õ­.CÓìë╼µm/³ eç³¶—m—ï¸$9C»ÍAÃqÓ8Õ Y×¾.ë]ŒºöuY†bÕµ¯Ë:–¼dO¾²|µ©»,ßY×â“m”.íeê.¯.w)¨õ£¬wñJÞÚ,O™Vú¹´•ÉW×¾.yIßÒµ¯Ëò+]ûºÔUíãê£ê·œ÷ºîg}Ëz×¥½Ì|ã“li«RwmRíërÒEò•:l“j_«Þ»öuÉKê®¶Smûºz ®k_—m”ä!íÀØ ÷m¨&úº´YÞÛ¤Ú×Ũî#´™Níë²oºkÛ÷ÖyÇ(mf]ÞÛ´—ÉS¶Q²iÇûÒ×eY®ûu]÷ êºßÇ}ƒä­/}]–ñ´YƳ|·í벎e]ëÚ×%ñÉú?Í}ƒä/íB›ö2ëoÝ/H¾úx¬.ïÉërÓx×¥¯K›”åiš}]ú»´i§rÌõ¢‹ÎoÛrQù›¿yAsƒ¯—§<å)åiO{ZsBÄÁMÐÿ€fþM$Û‰@ËÍÓí¤t²I`™ ¨]ÜÜŸæ›Í=ÎnnÜœ€Ý‰Í©j;7{™y®]Îò84{RSJÙÐÏYPÙÙÏUNy_N’ñ³Ñ’q–3Þ¦²ŸŽr@%V©Ã¶)Ó©ÓÈò” ¨.©n”×å¡í´R¦8¥Œ©¿¶ËwÍG׃a)G¬r2ùªë]›òeYªu—üµMÉOÖ‘¬+i“Ú.Kuþ1Š{ò—i·I/ù©íJÚƒ6u—錯wmò2>Nœ³C£.íe¦“º‹{ò×6eÜL£^õÑÆ¨Î»šO#OYâ“õ¸íò”üÄ)eì²|×òM£¯KžjÛ”e3ßÛ¤Z¶¼O£½ŒOò“÷¶yJ92~m—RÎ>ôu)O–§4êÚ^¦Hój›jÝÅ{íe]ž2Ý.u—üä{Ö·®}]Ö¹iôuqžF_—éÔº›F{Yûº.íe–Ÿ¥½ìRo7ùÉr>¡íÉS™Nm+3­®)Ó˜F_—å2ÓêÚ¯dHùÒ×u-_5ïš§ºždÙL9»öu)W—¶©ÖyÚð”±¶—m–óŒ_·/S¶|o“2^­»>öu)c^]ûº´mªkÆŸF{™å2eªíAþrß“ŸÚ¾õ¥¯Kžj_—÷¾íü?öî¬Ç®âÜxõ`w»=ÛØ€c €™ð‰Q‚:ys‘›ää+œs—¯’è(¹<Ò{¤(Q„¢’ñƒ1°çyh¿ûYd¡>”Ûà«ú·¤åÝ]½÷®ªß³{pÿ»jÅë(¾Ìås.êŸ+}í¢~s=â±Q»…ø^æñ<ýka>cZèïu ñõ2¾î.†ßƒÍçõÎñ5n¾ßëb q.ä÷ºx=Æç[|ÞÅïžâÅ"žïÏ s}{…|w Ð Dh÷Æot«âb‹Ì¸~ÝOWà¿Êˆ-2ï¾ûîÁ+ ÷i?Å<ã/©âQqÞìñqÌç›ðgÏðÙ7¶øÏysýA3cêÇïÏõè©ãv®¿À˜Ù÷ÍÚÎ|lÿvϯï8Âh>N}ÍbLññ—§ý¸>{knÿöãéÇ7—g‰Ï‘8ãõ4߯MÑÿB|ÎÅ|ú¯—ýí\æémz«¹>O<.^ãÃø½®=ÍgnñØ…¨]cŠÇö_/ûï-sOÿ¸…¨Ý0~¯ ïaú^ã‰3êæ{]ÿê»þmõ_›æûý·ÿ|ëo¯ßã[ûÿ ë÷º¹?ý¬{›þkTß>—Û…þ¿Á\Æ0ó1ý×Éþõ4ócsy{!¾^Îü^7ŸÚõu‹Ûþí¹Ì)ï¿^Æûóù¼ë_GóS<6jן1¦ù Q»ø^§ÿÌ^…þ^Ï7Ÿ×RŒ4?óç¸ù¼¾û±ô¯óÙ%¾ü#ñúÆÿ ëïÁæóõ²ÄíBÔî‹ßëú•Þõ?3|ù+À= ¯ÀÂ%Ã;G##pCØ-6¶Ä¼8Ø"VÚÅV–‡W„¾m¦­ü¶ê¾Á&Õ‰Zì¥<±ÿ»ÿÂhâŽþ‡ªø!v!~ýB7õîB|󼩿‡mLý‰·ºV3ébLý¸f¶ßê·‡É(,z£a×°½¾û×Ì0õuëoû1ÞêÛa¬] cí†iLñºÆÚ ›Qÿù6LãŠ1õãºÕŸÿ3û&£Wo4LãÆÏ¹°&£¾nýmŒoŽa¬] cí†mLÃöZŠ×ó0Åxz£a×0~Î [íúºõ·1¾a8ÔîË«Ð׬¿ýòG”¹Ç0ÖnØÆÔ×l˜¾^ƘúqÅ+%ÆnqÎl/ó*Ò …Ü-¼©g¬Làò`-õŸþô§Áõö§W^y%½öÚkƒUp«Ó /¼Ð­´{ùå—iº¶ ñ*›šá @€ @€ @€ î**–¡.¬@¬´;7¸êóÙÁê .`ºwpïO»ëÚÅêºØóöÁFîSƒ}™âwWW‡Žó‹ÇÈàÏ8bKM @€ @€ @`>‚»ùèylÕØÅ »>ø ýò—¿L{öìI›6mJ?üpºçž{Òw¾óÁþÛËR\÷.VãÍvÄvš[·nÞͤ @€ @€øJ‚»¯ÄäN- L®¨zêÔ©tìØ±tâĉî\7¸"íøà ¦qÆÇc…ÝñãÇo8ý¸_œ @€ @€ @€À|wóÑóت.^¼˜vìØ‘Þ~ûítúôéÁ…KGÒÁƒ» nçÎéÍ7ß\Ðt4Å–š³ñ˜'Ÿ|2ýâ¿H›7ožínÚ  @€ @€ @€_* ¸ûR"whU ¹K—.ugl‰¹zõênª±z.¶ÑŒ-4¿ìˆà.»ë]ûîËëã @€ @€ @€™‚»™Þ^TË—/OÏ=÷\ºÿþûÓ‘#GÒ… ºùßh…Ý"¸‹ëÛ­Zµê‹ò> @€ @€ @à¦w7ÅåÎ- Dp÷â‹/¶4%s!@€ @€ @€*­xì†N€ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šaBÜ IDATw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y@pWsõŒ @€ @€ @ Á]3¥4 @€ @€ @€šw5WÏØ  @€ @€ @€šÜ5SJ!@€ @€ @€¨Y`¼æÁ;…¸|ùrºvíZÚ»woúøãÓ¹sçÒñãÇÓ•+WÒ§Ÿ~š®^½š.^¼˜FFFÒ–-[ÒÖ­[ÓÝwßîºë®4>îÓh¡êày @€ @€ @€Àb8,æê›ûçÐE8·sçÎô—¿ü%=z4}ðÁéüùói×®]]hwúôé466–ž~úéôüóÏwݼy³àîsEo @€ @€ @€óÜÍGÏc›ˆ•vÜÅyòäÉtèСî6‚¼ÑÑÑ´víÚ+ò.\¸¦§§›˜³I @€ @€ @€Ã' ¸¾šÑ-ˆ­1c+Ì÷ß?ýáèºØsbb"=þøãÝû±âîĉÝv™±efœ @€ @€ @€ÀB îJÒóT-+ëâ\±bEÚ¸qcÔÝ~ûí]pïÇê»%K–T=Gƒ'@€ @€ @€†[@p7Üõ1º±rnݺu)¶ÌüùÏž~ö³Ÿu«éÆÇÇ»/®s[h¾öÚkéÈ‘#F¤  @€ @€ @`1 îcÕÍ9ëÚÖ¬Y“â츦]„vîYq׫¸%@€ @€ @€¾ѯãI=' @€ @€ @€7' ¸»9/÷^„±…f.Âé›2 @€ @€ PH@pWZ7 @€ @€ @€n$ ¸»‘Ž @€ @€ @€($ ¸+­ @€ @€ @€7ÜÝHÇÇ @€ @€ @€/Ôn¸ŽÀôôtÚ¿Z½zu:yòd:|øp»Î=SISSSiùòåÝoG›ƒ @€ @€- \¾|¹û}iÜž>}:]ºtiÖéÅ}>üðÃtàÀtþüùYïçjÜÕR)ãlR ¾áüö·¿MþóŸÓ²eËÒäää¬aÜ’%KÒ}÷Ý—|ðÁ´}ûöîíhs @€ @€ @ %'N¤7Þx#=zôóÛÙæwõêÕtæÌ™töìÙtðàÁÙî¦@5‚»jJe ­ LLLt¡]¬ ‹àntôú;ØFH_ºti·*Ïj»V_æE€ @€ @`q ÄïHã÷¡ñ»ÐØìF+é"¸ëÏÙ~·º¸5;6Á]m3Þ¦"´ûñœ}ôÑtûí·§õë×ßp«Ìñññî›U|ÓŠ· @€ @€hM`íÚµé»ßýnŠK ½ð ]07ÛcW³={ö¤}ûö¥C‡uoÏv_íjð›ÿªdŒÍ ι•+W¦uëÖu¡ÝÆg îšE01 @€ @€Ìˆ•s±CY+V¬˜ñ‘üÍîbk͸žK å>Zê¸þž|õÍÈ  @€ @€ @€T- ¸«º|O€ @€ @€ Њ€à®•Jš @€ @€ @€@Õ‚»ªËgð @€ @€ @€­Œ·2ó °ÇŽë.dzõêÕtùòå4==Μ9“N:•Ο?ß½öìÙtäÈ‘ôᇦU«V¥‰‰‰®ë¸ðé]wÝÕ]ull,ŒŒ,Ä< @€ @€ °Hw‹¤Ð¦ùÕNœ8‘öîÝ›.]º”.\¸ÐuØEx·×®]ën?ýôÓ´ÿþ455•–.]Ú=ùäädZ¿~}÷öèè¨àî«‘» @€ @€ ð/Á—±’nÇŽéܹs)VÖÅÊ»ñ"´‹÷#¸‹ïСC)‚º÷ÆÇ?û4ŠÕw=ôPŠÕv}˜7㩽I€ @€ @€¸¡€àî†<>¸ØÞyçô›ßü&ÅŠº8c«Ì8ûÀ.‚¼¤Ã‡§·ß~» íbKÌ8ï¸ãŽôì³ÏvoÇö™à9 @€ @€ @€_U@p÷U¥ÜoQÄê¹eË–u[`ƪ»ìú#VÔÅ1³­ÿXw±¯¿¶ëÛõ2n  @€ @€ @€¯* ¸ûªRî·(~ò“Ÿ¤_|±[e«ënæˆÐnãÆ]xgµÝÍȹ/ @€ @€ ‚;¯3V®\™ât @€ @€ @€J Œ–îP @€ @€ @€ä‚»ÜD  @€ @€ @€â‚»âä:$@€ @€ @€ îr- @€ @€ @€Š ë @€ @€ @€@. ¸ËM´ @€ @€ @€(. ¸+N®C @€ @€ @€¹€à.7ÑB€ @€ @€ @ ¸€à®8¹  @€ @€ @€ä‚»ÜD  @€ @€ @€â‚»âä:$@€ @€ @€ îr- @€ @€ @€Š ë @€ @€ @€@. ¸ËM´ @€ @€ @€(. ¸+N®C @€ @€ @€¹€à.7ÑB€ @€ @€ @ ¸€à®8¹  @€ @€ @€ä‚»ÜD  @€ @€ @€â‚»âä:$@€ @€ @€ îr- @€ @€ @€Š ë @€ @€ @€@. ¸ËM´ @€ @€ @€(. ¸+N®C @€ @€ @€¹€à.7ÑB€ @€ @€ @ ¸€à®8¹  @€ @€ @€ä‚»ÜD  @€ @€ @€â‚»âä:$@€ @€ @€ îr- @€ @€ @€Š ë @€ @€ @€@. ¸ËM´ @€ @€ @€(. ¸+N®C @€ @€ @€¹€à.7ÑB€ @€ @€ @ ¸€à®8¹  @€ @€ @€ä‚»ÜD  @€ @€ @€â‚»âä:$@€ @€ @€ îr- @€ @€ @€Š ë @€ @€ @€@. ¸ËM´ @€ @€ @€(. ¸+N®C @€ @€ @€¹€à.7ÑB€ @€ @€ @ ¸€à®8¹  @€ @€ @€ä‚»ÜD  @€ @€ @€â‚»âä:$@€ @€ @€ îr- @€ @€ @€Š ë @€ @€ @€@. ¸ËM´ @€ @€ @€(. ¸+N®C @€ @€ @€¹€à.7ÑB€ @€ @€ @ ¸€à®8¹  @€ @€ @€ä‚»ÜD  @€ @€ @€â‚»âä:$@€ @€ @€ îr- @€ @€ @€Š ë @€ @€ @€@. ¸ËM´ @€ @€ @€(. ¸+N®C @€ @€ @€¹€à.7ÑB€ @€ @€ @ ¸€à®8¹  @€ @€ @€ä‚»ÜD  @€ @€ @€â‚»âä:$@€ @€ @€ îr- @€ @€ @€Š ë @€ @€ @€@. ¸ËM´ @€ @€ @€(. ¸+N®C @€ @€ @€¹€à.7ÑB€ @€ @€ @ ¸€à®8¹  @€ @€ @€ä‚»ÜD  @€ @€ @€â‚»âä:$@€ @€ @€ îr- @€ @€ @€Š ë @€ @€ @€@. ¸ËM´ @€ @€ @€(. ¸+N®C @€ @€ @€¹€à.7ÑB€ @€ @€ @ ¸€à®8¹  @€ @€ @€ä‚»ÜD  @€ @€ @€â‚»âä:$@€ @€ @€ îr- @€ @€ @€Š ë @€ @€ @€@. ¸ËM´ @€ @€ @€(. ¸+N®C @€ @€ @€¹€à.7ÑB€ @€ @€ @ ¸€à®8¹  @€ @€ @€ä‚»ÜD  @€ @€ @€â‚»âä:$@€ @€ @€ îr- @€ @€ @€Š ë @€ @€ @€@. ¸ËM´ @€ @€ @€(. ¸+N®C @€ @€ @€¹€à.7ÑB€ @€ @€ @ ¸€à®8¹  @€ @€ @€ä‚»ÜD  @€ @€ @€â‚»âä:$@€ @€ @€ îr- @€ @€ @€Š ë @€ @€ @€@. ¸ËM´ @€ @€ @€(. ¸+N®C @€ @€ @€¹€à.7ÑB€ @€ @€ @ ¸€à®8¹  @€ @€ @€ä‚»ÜD  @€ @€ @€â‚»âä:$@€ @€ @€ îr- @€ @€ @€Š ë @€ @€ @€@. ¸ËM´ @€ @€ @€(. ¸+N®C @€ @€ @€¹€à.7ÑB€ @€ @€ @ ¸€à®8¹  @€ @€ @€ä‚»ÜD  @€ @€ @€â‚»âä:$@€ @€ @€ îr- @€ @€ @€Š ë @€ @€ @€@. ¸ËM´ @€ @€ @€(. ¸+N®C @€ @€ @€¹€à.7ÑB€ @€ @€ @ ¸€à®8¹  @€ @€ @€ä‚»ÜD  @€ @€ @€â‚»âä:$@€ @€ @€ îr- @€ @€ @€Š ë @€ @€ @€@. ¸ËM´ @€ @€#^• IDAT @€(. ¸+N®C @€ @€ @€¹€à.7ÑB€ @€ @€ @ ¸€à®8¹  @€ @€ @€ä‚»ÜD  @€ @€ @€â‚»âä:$@€ @€ @€ îr- @€ @€ @€Š ë @€ @€ @€@. ¸ËM´ @€ @€ @€(. ¸+N®C @€ @€ @€¹€à.7ÑB€ @€ @€ @ ¸€à®8¹  @€ @€ @€ä‚»ÜD  @€ @€ @€â‚»âä:$@€ @€ @€ îr- @€ @€ @€Š ë @€ @€ @€@. ¸ËM´ @€ @€ @€(. ¸+N®C @€ @€ @€¹€à.7ÑB€ @€ @€ @ ¸€à®8¹  @€ @€ @€ä‚»ÜD  @€ @€ @€â‚»âä:$@€ @€ @€ îr- @€ @€ @€Š ë @€ @€ @€@. ¸ËM´ @€ @€ @€(. ¸+N®C @€ @€ @€¹€à.7ÑB€ @€ @€ @ ¸€à®8¹  @€ @€ @€ä‚»ÜD  @€ @€ @€â‚»âä:$@€ @€ @€ îr- @€ @€ @€Š ë @€ @€ @€@. ¸ËM´ @€ @€ @€(. ¸+N®C @€ @€ @€¹€à.7ÑB€ @€ @€ @ ¸€à®8¹  @€ @€ @€ä‚»ÜD  @€ @€ @€â‚»âä:$@€ @€ @€ îr- @€ @€ @€Š ë @€ @€ @€@. ¸ËM´ @€ @€ @€(. ¸+N®C @€ @€ @€¹€à.7ÑB€ @€ @€ @ ¸€à®8¹  @€ @€ @€ä‚»ÜD  @€ @€ @€â‚»âä:$@€ @€ @€ îr- @€ @€ @€Š ë @€ @€ @€@. ¸ËM´ @€ @€ @€(. ¸+N®C @€ @€ @€¹€à.7ÑB€ @€ @€ @ ¸€à®8¹  @€ @€ @€ä‚»ÜD  @€ @€ @€â‚»âä:$@€ @€ @€ îr- @€ @€ @€Š ë @€ @€ @€@. ¸ËM´ @€ @€ @€(. ¸+N®C @€ @€ @€¹€à.7ÑB€ @€ @€ @ ¸€à®8¹  @€ @€ @€ä‚»ÜD  @€ @€ @€â‚»âä:$@€ @€ @€ îr- @€ @€ @€Š ë @€ @€ @€@. ¸ËM´ @€ @€ @€(. ¸+N®C @€ @€ @€¹ÀxÞ¤…Àâ¸víZ7éóçϧ‹/¦+W®t·Ñ8==Ý}l||<ŽŽ¦‰‰‰î\²dIŠÓA€ @€ @€XÁÝB(zŽê.]ºÔto½õVz÷ÝwÓáÇÓßÿþ÷íçÎëæ·aÆ´bÅŠôÀ¤Gy$mÛ¶-mÙ²%E ç @€ @€ @€ÌW@â0_A¯^ VÛ={6]¾|9íß¿?íØ±#8p Eˆ73¸Û¸qcZ¹re7ßU«V¥Õ«W§h‹Cx×1ø‡ @€ @€˜‡€ànxÚ†@lùë_ÿ:ýóŸÿL»wïN{÷îíB¹ýèGirr2­[·.E¸÷ü#?~<íܹ3ýñL/½ôRzî¹çÒæÍ›ÓC=ÔÝ· ³ @€ @€ @€n…€àîV¨ës¨®^½š>üðÃn‹ÌXi÷É'Ÿ¤¥K—vÛ`Æ »»îº« îŽ;Ö]÷nÏž=é½÷ÞK>ø`·mæ²eËR<‡ƒ @€ @€ 0ÁÝ|ô<¶j+W®¤C‡¥£G¦ãâŒkÖ=öØciëÖ­éÉ'ŸLÊÅ–˜qŒu÷ëÜþøã´oß¾n›Ìîžxâ‰ôÃþ° î¾ýío§%K–|>Ê{î¹§»^l­¹k×®tøðánkÍ .¤Ÿþô§Ý–š‚»Ï¹¼A€ @€ @€ܤÀèMÞßÝ 4#0==Ý­œûôÓO»­.cEÝòåËÓúõëÓš5k®»z.‚¹Xq·iÓ¦n5^„çÏŸO§OŸNgΜIñœ @€ @€ @€À\¬¸›‹šÇ4!+çâZuï¾ûnºtéR·Õå½÷Þ›ž~úé.¸Ï?=b^¬¼ûÁ~ÐuûÛߺkâíÞ½;Eˆ·}ûöîúxM™ @€ @€ PTÀŠ»¢Ü:&Xá]lu+é"”‹séÒ¥éz¡]?öøx¬º‹û^»v­[­Ïg¼ï @€ @€ @€ÌE@p75iBàÊ•+éÀé£>J«W¯î®k[dFh7:zýOhûlÛ¶­»÷#ø‹ëäÅÏé @€ @€ @€ÌE ß p.Ïâ1*ˆÕq±EfoÖÅ º­´‹)ÆÊ¼¸ÏäädwïÇʽxž8­¸«ð…`È @€ @€ @`H®¿¬hHg¾NÙ"´;þ|ÂMMMuá]„q³ñ±~«Ì¸÷¯^½šÎž=Ûâ9 @€ @€ @€s°ân.jÓ„@w±µååË—ÓØØXÚÅí—±=æÌí4ûç™ë6™qm¼Ï;×…7C|,ÎÃî÷esðq @€ @€ «@ÿ;×™·³5vB‹ß¯Æ" +fSÒ^“€à®¦jksö½óÎ;éÔ©SiíÚµiÕªU³^_/‚ºÛn»-mܸ±;7lØ0ë}›ƒ2! @€ @€@,rØ·o_·ÐaÿþýÝíl“ß±|8½öÚkÝílŠUvgΜéVÝ;vl¶»i'P€à®šRèB Äõé&''S\Û.´8úÛÙúê—fÇÒëøKŽx?¶­Œç‰óF×Ç»Þs.Y²$=õÔSiÛ¶m7½âÎV™×ÕF€ @€ @€@íË—/ï1ÜyçÝîcäÍvÌ\qwäÈ‘§ƒ@Í‚»š«gìóˆ-V±Å_Üû3¸q¿Ø/9nã˜Op×Ê{ì±ÇÒã?ž6mÚ”bûËrñ±8£Ï8 @€ @€hM [Ü{ï½Ý‰|°»mŽq»Ý»w§>ú(ýþ÷¿ÜÍ¥½Á]5¥2Ð…ˆàkÙ²eÝŠ»Øû8VÛÅùwñ±‹/¦Ó§Ow·ñ~iñ qÞ슻˜SlÙ#žãFÁÝBx> @€ @€ ›@üž5v+‹#^ÜèˆûÅïWcG4‹n$åcµX²SK¥ŒsÁbµ[¬rÛ²eKÄ}üñÇéäÉ“éêÕ«)öE¾ÞíqŸøë¸÷ãÂwÜÑñœ @€ @€ @€À\wsQó˜&úwýJ¹Øú2VÓÅ~Éq{½£_q¡]¬Ð‹çˆ°.þ¢#ι¬¸»^?Ú @€ @€ @€Å' ¸[|57ã Ä•>úhzöÙg»UsçÎK»víJ¯¾újzûí·?¿†ÝL°÷b¿äßýîwéÀiÍš5ÝJ»o}ë[é›ßüæçË·g>ÆÛ @€ @€ @€¯"`_¿¯¢ä>M Äj¹Xm·råÊ.p‹kËÅJ»cÇŽ¥U«VuoÇV˜ý¾ÈÚE¸wæÌ™×Ä‹ÅERã9"Œ½–­¸kò¥bR @€ @€ @ ˆ€à®³N†Q ‚¶ûî»/mܸ1=þøã)‚»¸Îݯ~õ«´uëÖ.¤‹Pnýúõ)¶Èüë_ÿš:”^ýõôÖ[o¥gžy&½ôÒKÝsDø'´Æ* @€ @€¨G@pWO­Œtb%]¬¬‹kÔmÞ¼¹[i·oß¾tðàÁn5Ý|V¬X‘.\¸Ðw;wîì¶Çüä“OºÕx±Mflùo|Ù \OG€ @€ @€£€àn1VÝœÿ—@w±znÛ¶mݪº÷ß¿[=÷æ›ovÛdÆ6˜±âîøñãéòåË]Èa]ú(½úê«Ýj»¸¦]wÞygZ·n]zê©§Ò÷¾÷½ôÐC¥ûï¿_h×Ô«Ád @€ @€ @€À­ÜÝ:{=‘@l›G¬ž‹•wqm»+W®¤K—.¥óçÏwÛ°aC·uæ½÷Þ›âí©©©y_×nzz:ÅÖ›{÷îM Ƶòâ6N @€ @€ °¸w‹«Þf;‹@l‡ÇÓO?žxâ‰nkÌîâˆm2ãûü6¶×Œ°¯oë>0‡bëÍW^y%½÷Þ{é…^H1ޏv^¬ü™Ã3z @€ @€ P«€à®ÖÊ÷×"\œ¥Žéékéèуkç¥ôþû»ÒääÔàz›Òãÿ[·ênrrR€Wªú!@€ @€ @€·X \Bq‹'ª{Ã(põêÕ´k×Gƒ•{Ÿ¤={ö¦ÿùŸÿ—}ôáôŸÿùiõêÕiË–-EƒÄa42& @€ @€ °Xw‹¥Òæ9¤#éâÅ©Áئ×Ô;—N:5¸ÎÞ'éàÁCÝõõî¸ãÁÝVΰ @€ @€ @€ÀB îZÔó¸)‰tõêÿ<â¾AP÷çÁÛo¦½{O¥ÿú¯ß ¶Ì¼=ÝsϽÝuïnê)Ý™ @€ @€¨R@pWeÙ ºÑÁT¶ ·ҵk§éé¦3g.¥üc×àöt·êîÚµk®s×NÁÍ„ @€ @€Ì* ¸›•Æ”t218§¡Ý¿ »uƒÀnOÚ½û¿Ó… §ÒÑ£GÒ²e“iåÊ•¶Ì,Q} @€ @€ @€[( ¸»…øº&ð™ÀØà&>ׂ»kƒkÝ\ëîôà\Ò­¸»téÒ Ô›†E€ @€ @€4.ûô9 Xy·bpN Α.Ä»xñbŠSp72 @€ @€ ðµ î¾V^ONàf–î¼rpFp—>î.\¸ ¸ëDüC€ @€ @€Ú°UfÛõ5»ª. F{jpžN£££ill~6­\¹bp®¼=>Xy7–FFF*™‹a @€ @€ @€s°ân®rG`A® žåíÁybp¾6èÞL7®Iÿþï/¦M›nOkÖ¬I±ÚNp· Øž„ @€ @€ µ€àn¨Ëcpí L¦øéàœt'×´»2ë–¤»îºsàmLK–,Úµÿ"0C @€ @€ Ð î¼ÜR˃Þÿ<8'ÒÝwßžî¹çÿ¤o}ëþôòË/w[eNMMÝÒÑéœ @€ @€(' ¸+g­'׸–&'O¦ÑÑÑÁ »o »­ƒðîžÁíÝiÙ²eÝ5î®ó M @€ @€ @€@ƒ‚»‹jJõÄV˜Ï<óLÚ°aCzôÑGÓ<6oÞ<ó&ÓØØX=1R @€ @€ @`Þ‚»yzsˆàîùçŸOÛ·oïÎû»®ÝÜŸÑ#  @€ @€ @€ZFk¸qhA`dd$­X±"­]»¶[eï; @€ @€ @€Å) ¸[œu7ë!胻իW &†A€ @€ @€n•€àîVÉë—À¿"¼MVÛyI @€ @€ @€Å- ¸[Üõ7{ @€ @€ @€!Ü I! ƒ @€ @€ @`q îwýÍž @€ @€ @`HwCRà @€ @€ @€XÜ‚»Å]³'@€ @€ @€ÁÝÂ0 @€ @€ @€·€ànq×ßì  @€ @€ @€†D@p7$…0  @€ @€ @€Å- ¸[Üõ7{ @€ @€ @€!Ü I! ƒ @€ @€ @`q îwýÍž @€ @€ @`HwCRà @€ @€ @€XÜ‚»Å]³'@€ @€ @€ÁÝÂ0 @€ @€ @€·€ànq×ßì  @€ @€ @€†D@p7$…0  @€ @€ @€Å- ¸[Üõ7{ @€ @€ @€!Ü I! ƒ @€ @€ @`q îwýÍž @€ @€ÿÏÞ>ÙuŸ÷ÿõ¾/Ø;š @‚ .’)É4E+–&’Çq?8Ø[º»»ËÜÜ|ikk+›7o.»w﮺î²/»ñ, @€ @€ @ ^wõr% $Ãcž>}ºLOO—gžy¦¼øâKåòåÑòƧËüüJm/ËË­èMÄ™ì—×^{µlß¾=ºó&ÊŽ;ʃn¼® tÖ• @€ @€Ü\@pwsÏ prN»“'OVÃcþÿñ­’5=óÚõGuF·Ýá¸m‰!1Ç¢«n*B¼KQ«n»éé™räÈ‘rÏ=wwàÚØ% @€ @€|z‚»OÏÞw&Ðp+++Õvå¯þꯣ‹îµòóŸ_Ž¡0÷G0·5<¾Õµ#ª%†ÒœŒšŽ:_¿Ýv‹Ñ¡w¬ÌÌL—Gy¤ìܹ£ìÛ·¯F3V° @€ @€ @€ - ¸ÛЗÏÁØX9DæÌÌL¹víZyê©§ÊÓO?_ï‹á1÷D8w$Næ÷¢2¸ËjŠ0o)ng£^ŒÚY&'O”ŸþôËÒÒl5tæÜÜlÙµk—à.t, @€ @€ °ñwÿ:F ƒ»ÑÑј³n¤š«nrr*B¸Áíî‹s8µ)ª3ª=*—•¨Ž¨Qc½Åùº#À[)çÏ_ˆùïÚcXÍÅxÎB€ @€ @€6¾€ànã_Cg@`ÃÌÍÍ•W^y¥œ8q¢Œ]‹Ðm)¸‡âø7j[TOTsÔêÒw2Ä»;jOÔ¶˜÷îÛÜ-G·Þ Uøµ¯}­ôõõÅs @€ @€ °±wûú9zJ`u¨ÌÉÉɲ°°¡]Îc—aÝ–¨Á¨–8ŸìºËÊ€®7¿Ù2115Ãi.Ä6&@€ @€ @€K@p·±®—£%°¡2dËùí®\¹CdvE÷Ü–Þã~r]·qn±îp™½R._>_zz:âkÁÝmÀY… @€ @€6€ÀcÒm€Ãuˆlt•••è²Ë¹ëòígµrH̬[-××ÉͯWîÇB€ @€ @€êC@Ç]}\GgA`C´´´”-[¶”íÛ‡JkëttË]ŠîrûÕ·¿?n?,ÀË€.k*ºôN”îîÙØÇ`TÎyç÷ÞÆsC€ @€ @€\À'Þü:|I ¹¹¹tuu•ÞÞÞî2ˆ›‹šŠº5•Ã^~XÝb<>[šš¦£®Å¶³¥¯¯;ª·ä>- @€ @€ @ tÜÕÃUt6ˆ@kkkÙ½{w„oM¥¿ ttt•ÅÅQß3¸;ºï¾·QQÙy·•¡Ý©¨7ãùŸÇœx¢ãnK¹ï¾ƒexxoiooç, @€ @€ @`ã î6þ5t6Œ@[[[„mÃÚõ—M›6UÝw³³¯Gw5B¹£QƹôFex—Á]vßÍG½õ½¨3±î¹ÒÓÓ_|ðj_‚»`± @€ @€ @€@]îêâ2: C ;írž»¶¶ör÷ÝûËÔÔT9}z¾œ??]w#”{*N¤':ò¶Ämsy9ŒæLÔKQgJgçDÙ¹s¸ ì6oÞ\€†Ê   @€ @€Ô…€à®..£“ °12¸ëî·üú×ÿQ¹zõjùÆ7þ¬|ë[ß)ãão•é鿎i‹yëöÅmKYZ:áÝdyKUíÞ=\~÷wÿa¹çž{Êg?ûÙ200óÝyÛWßQ @€ @€ @€À­|â}+!Ï °®Þe—ÜÖ­[£ƒ®³>|¨\¾|©Œ•‹G"¬+en.ßšš¢3o Öí®Öëîî*{÷î­B»={öTÃl íÖõÒØ @€ @€|Ê‚»OùøöQ ‡ËÜ·o_tÓ­”-[¶”¯|å+Ú],?ùÉSeff¶œ;—Ãf.—;†J__OÙµkWÚåÜx÷Þ{oéè訂»F´sÎ @€ @€ P¿‚»ú½¶ÎŒ@M ´··WÇ—Á]WWWtÕuDxw!‚»™è´k};¸ÛÁ]_Ìk·³ úr½ÁÁÁªc¯¦OÎÁ @€ @€ @€5îÖ€fÖO ‡Ëlkk«Â» é²Ónvv¶úÙY—Ýy«v9Äf–… @€ @€Ô£€à®¯ªs"°Vø ïzzz6Б;T @€ @€ °¾ZWÖ×ÓÞ @€ @€ @€¬I@p·&6 @€ @€ @€X_ÁÝúzÚ @€ @€ @€5 îÖÄf# @€ @€ @€ë+ ¸[_O{#@€ @€ @€ °&ÁÝšØlD€ @€ @€ @`}wëëio @€ @€ @€Ö$ ¸[› @€ @€ @€¬¯€àn}=í @€ @€ @€Àšwkb³ @€ @€ @€õÜ­¯§½ @€ @€ @€X“€ànMl6"@€ @€ @€ °¾‚»õõ´7 @€ @€ @€kÜ­‰ÍF @€ @€ @€ÖW@p·¾žöF€ @€ @€ @`M‚»5±Ùˆ @€ @€ @€Àú îÖ×ÓÞ @€ @€ @€¬I@p·&6 @€ @€ @€X_ÁÝúzÚ @€ @€ @€5 îÖÄf# @€ @€ @€ë+ ¸[_O{#@€ @€ @€ °&ÁÝšØlD€ @€ @€ @`}wëëio @€ @€ @€Ö$ ¸[› @€ @€ @€¬¯€àn}=í @€ @€ @€Àšwkb³ @€ @€ @€õÜ­¯§½ @€ @€ @€X“€ànMl6"@€ @€ @€ °¾‚»õõ´7 @€ @€ @€kÜ­‰ÍF @€ @€ @€ÖW@p·¾žöF€ @€ @€ @`M‚»5±Ùˆ @€ @€ @€Àú îÖ×ÓÞ @€ @€ @€¬I@p·&6 @€ @€ @€X_ÁÝúzÚ @€ @€ @€5 îÖÄf# @€ @€ @€ë+ ¸[_O{#@€ @€ @€ °&ÁÝšØlD€ @€ @€ @`}wëëio @€ @€ @€Ö$ ¸[› @€ @€ @€¬¯€àn}=í @€ @€ @€Àšwkb³ @€ @€ @€õÜ­¯§½ @€ @€ @€X“€ànMl6"@€ @€ @€ °¾‚»õõ´7 @€ @€ @€kÜ­‰ÍF @€ @€ @€ÖW@p·¾žöF€ @€ @€ @`M‚»5±Ùˆ @€ @€ @€Àú îÖ×ÓÞ @€ @€ @€¬I@p·&6 @€ @€ @€X_ÁÝúzÚ @€ @€ @€5 îÖÄf# @€ @€ @€ë+ ¸[_O{#@€ @€ @€ °&ÁÝšØlD€ @€ @€ @`}wëëio @€ @€ @€Ö$к¦­lD N–––Êòòr¹téR™-óóóUåãùõÊÊJYXX(ÍÍÍehh¨tuu•ªê„Ài @€ @€ @€5" ¸«‘ á0>y å2¨›šš*ñQNŸ>]FFFªo||¼œjÝü\9?_+9ªŽ…ÀFÜmô+X'ÇŸÃ’½þúëe||¼|ãß(ù—Yu<¬çé=z´ü›óoʶmÛÊ®]»Þ ÊÖó{|Ü}å_:ú§Z~ðƒT]«Ø~òâìü8tèPU0\Û‡AyŒ·Xó»ßý^ù³?ûó&ój9vì¹*³-»ñ‹#ñ‚ŽØKSyòÉoGH7Yú¢ó®§<ðÀåþàÿ®ºî†‡‡½ßÂÚÓ @€ @`-9¥ÅsÏ=Wr”œcÇŽ•Ë—/änò³åü\yrr²œ={ö#×ó" ¸Û(WªŽ3ß`³ò7)V»îÖó´gffªýçokX @ 1²Ó.ÿ!Ÿ¿…wáÂÅròäÉøÇýttÚ5Åß]¥¥esÀtÅýî hvöêÛ·óåÚµéè¸;_Î;Wý]µ{÷nÁ]c¾Œœ5 @€ @àŽ îî­2‡±ìéé)O<ñD5YvD¬ç²gÏž²cÇŽj®¢æææõÜõš÷•Ã]~ùË_®æMÊNÀÍ›7LJÆ=Tfέ”FYµÞšƆh2ãÉ'Ÿ,'Nœ(?üáË+¯¼]vûbèÿ+Î~{v‡ã¶+ª)j9‰Û™èÆû^ÜÿÛè-ÿþßÿ‡èÜÞQuAçûx­üj!@€ @€u!óË?òÈ#ÕЗŸùÌgâÿåýYqþ_ÿ­·Þª~ÑöÌ™3åÔ©Suaà$W@p׸׾¦Î<ƒ»&2èì`ÈλÅÅÅu=ÆÕ`0?dÍïW K~Ø›ç{ðàÁ²sçÎ244$«… ã¨[ìº>}út9~üx Ÿq!:ï¦ã\[cxÌãvwÔ}QQ¹ä\«£Qóñ÷Ò‰XçgÕÐ?ÿù«Ñµ7^Í…—_åß)µò÷Jµ… @€ltœ6hëÖ­Õiäç¦7[2ÔËõósß®®üe\ - ¸ÛØ×¯nŽ>?ðÌ7Õ|sÍθÞÞÞ*¼[ÏÌnµüù&îÖõ”µ/l ÚÞ|ó­òòËÇËÈHóÛ]vÙ Gå0™7þÓ(É#ÿÁßëÝw_Œßð{+æÄû_1/i[l±tt´WÝÒ9'ž… @€ @€À/&pã§S¿ØžlMàXýmˆ íöíÛ÷ îÍæ @àƒܽöÚñ˜Øúgezúžä>+Œ:õa¿•·úØ‘X·/‚»gcbì?‰_4YŠ9ò.Dp×Qý²‰àîƒÖ!@€ @€øøµ1Ñ×Ç?n[ @€>¶ÀÊÊJ™››‰a.gbœü¶Ø~{Ô¦¨[ý“¨7ÖÙöκ9äæäädUZ @€ @€¬‡€Ž»õP´ @ æ2´Ëš‰n»©¸Ÿÿ Ú5u«¹O»ß³nîgzzº*Á]ÐX @€ @€ÖE@p·.Œv²‘òÃ׉‰‰²¸¸X} ›]y?9–ßþ w¶LMM•±±±réÒ¥wN9çÌËá=›››«zç wøÄ28ɪüy͟Ӽ͟ɜϲ³³³ªÖÖÖ’e!°:aõââJ̧: ³Q+·€Yˆçg¢æÞY7çeÍ2oê-èÁ¼ÿ•Õ+ IDATm*+Ö«@~àÿæ›oVÜÂÂB ¶ä^FFFb>£ù*¸|ùrÉyø2¤Ë}W—ÁÁÁräÈ‘ê9ப¸%ðÉ døž¡ÝÉ“'«ÛãÇW?·ÜåÏäž={Êððpéïï/}}}B–OîÒÔÜwÊ€-_}}eÓ¦M1Ìå\Ô‰8Ζ¨å[ïh<*ê\µnKKKµÜÏ'Üb'ž&@€ @€ pSÁÝMy<Ùù¡vÐeH777W}àŸwyÿêÕ«ïtâå\FÙwáÂ…êÃÿU›\ïÀU@°ú˜[î¬@þÜæ’Ýu9\áøøx9uêTܽõÖ[ÕÏqv×e ’?ϹlÛ¶­ºŸa^OOOCxé•]ˆù‹yÕdµ+1VçzïËóË_À臕î®Ä«ckÔTT—ÙñömÜTKÎ_—¯·kQâu3ZYuttT¿°‘¿Ð‘!ž… @€ @€ÀzîÖCÑ>6´@oüÇ\ž}öÙêÃÿ èòîÕÊ@ ï;v¬úp6Àüà?—üø³ŸýlÙ½{wÙ»woÉr}€»¡_~ƒÌÎÎV?—ßùÎwÊ·¿ýråÊ•òôÓ?‰`j¡ cVƒ½¦¦•³¥ªÏþóå‘G),¿õ[¿Uý¼Ö{H•—3»ˆ3°Ëa~_y啪&«_VÈ÷µìÎ3ß¿öïß_½uwç\nõ»d@ùÅ/>AîÖxÍ+ó7'ûfš‡âv_ÔÃQ]QâeÞŨÙèÔûNÔ_”îî©ðº+:9wÆ/m,»ví|çï„XÑB€ @€ @àÜýB|6®Õî“Õa23È[ýÐ?Ï/‡ÖËåÆÇòCð\òCÿÜ.Ÿ»ñùêI pGòg-ƒ»üÙË®ØsçÎEp7·cÚ-ÅÏå¡K/9ÙBtË^./^¬†7ÌŸóüùͰ½^— æÒ*;³2¸Ë!3¸¹T œw9Ìh†w›7o®¨ ¶²¯^ !¯{vÛmÙ²9:ï:¢{.ßó§ãõt5^ ½QÙYw½K³”ì¶‹š‰×ËÕp¹F˱ýÖjèÕœ?ÑÉÁc!@€ @€X7ÁݺQÚÑFÈî’?øƒ?(Õðq«CÈÝîùä¼Y9T¦n»Û³_L ƒóo~ó›1§Ý©ò“ŸÎ… @€ @àÓÜ}ºþ¾{ dWÉ‘#GjàH·#°´´TΜ9[Ž?^NŸ>UvJm‹€åžê¶”Çâ6‡{Ì®©™¨ìÀ›)×®ˆ:[:;›Ëùóçßé8‹'ënÉN»ì*Ì¡~ßxãÍ7Ÿpj4êj 1ºáTv–5…ÁTOKaÒfwõ ¿þëWãëÎj(Òºƒ‰Ên¡¡¡ªËpçÎ1dæP<:¯ÆmKÜæÐ˜-Uhw}¨ÌËñõ\˜mŠîºÁ^´'þθ/ºîÞ™0V° @€ @€XÁݺ0Ú ÜiÕ!23ŒzíµW£Cê…þr ¦¯Ä·Þu4ª?*ƒºüë-ç(˺;*;ð&£¦#¼k.?þñ3eçÎíå«_ýj —ØaM®·ñ—U£3çíüÞ÷þgyá…ØuƘ÷Fuœdo˜mŽÛ–¨Ñxl*ºOGçÙ›ˆ.ÄœŸR>TÍ—]‰9Œf½ ›¹:Lê‘#÷ǵo®æHŽ s*†S å8ç¦ùšâõ‘s$6Uˆ»vå|¦{ªà/ÃÍ - @€ @€ÖS@p·žšöE€wL ‡ÌùØ®wÇ#úi|¯¯Eð”ÁÝî¨"³=juÉP¥-*ƒ»¬ìœºÁÝùòä“OG³#ªJ³~– îÒèÚµkå¹çž/ø‡w[¢6…Ó¡¨'»#n÷ÄmwÙ]6AÕ÷¢ûî¿EãDù¯ÿõÏÊç>÷Hyâ‰/Vó·Õã0À¸åyÝÿ‘ªFGGË=÷¬æ@|á…*Ã&´µµµìÚµ«NõèÑ£1L桪±«+Ãa  @€ @€õÜ­¿©= @€ÀXí&Ë`*C¼ëK(Ù=Öu«®¹\wSl;AÖ|™ŸŸ«æµÌ¡7³£¬ºîò\®^½ˆ#àÌy;—â|W‡=ø¶Sç Vt¦ËŽ¨ìÆ»럈@s¡š/»ÊrÏ ¹êyÉ€npp0Í•˜ço5ÌhwùºÈ®Ã<ÿtÈõtÙÕó+Á¹ @€ @€>}Áݧ ܆Àââb&={6:¢¦#dÉð.§ÏDåœvÙAv³%×}°,,4żx^º»›ËôôTÕ]ÕÝÝ]ÃAÎÎΖcÇŽ•×_=æ|=Îo6œ¾aÜïŹo‹Ê3ÿê_âqSÜÏÀjKÔ¯Äz?‰Û'Ë¥K£å‡?üQ y¦ ®úú2­¿e5¬Íó{衇âÜWÊã?^Ý®>—·YâÕÛ¡õwE @€ @`ã î6þ5thÕ %OöÝû+ñUx«xùìG-7®›÷Wªî©ì zwµíÆx<;îr~»kׯ#´[Œª'*C·Á¨Þ¨C»<§ìRÌÊŽº¼ˆêp³-æÅ/cq!«ï%¯vÓåÒ֖ëZ @€ @€|:‚»OÇÝw%@€)áJݘÝqïW8{ZŠÊ0îfK®{-Bº©iÚ" é¨:¨2°©§àîÒ¥Kåܹ àåðŸwÅ9oð.¹ìJ\í´‹»ïY2¬Ê Æ\wwEè7û¸FÍÕ°‘ïYÕ @€ @€Ü1ÁÝ£µcXO ×rÞ±œo,»¢ZZZ#šá/Ç·Yí¦Ë`*;Çn\²/ŸŸŽ‹Ðo:¿ÎÒÕÕ÷ëcn»Ï6»îrXÑåå<çô¸±n\óÆûi–•ë¶„ksxKUåð‘–ÆÈù$W_ ÓÓÓñºZ®º0óuÑÔt½[µ­­µú™ÌŸÍzŸ±q_ Μ @€ø¤wŸ”´ïC€¿@vÆmß¾½ ï¶oßY¶nŠÎ°SQû½7Â…#qÛÕµÞeè45!ËÔ}¯ Ζûï¿¿ìÞ½£ôööTC½tÜåytuu•žžî8¯KqÞÙ˜†«áåªK<ô¡Ëb¢£a¼á榪»Ñ¼n Õ0ŽÇЫ×ÊÅ‹Ëßþíß–©©érêÔ™*¾¤·ÇÏÒ®2<¼¯>|¸“ÁÝÈÈH9}úLùÙÏ~_O–×^;]w‹Ñ]×^½Ö®^‹÷¨¹êçrhh¨ |ûúúâç-;8- @€ @€G@p÷q´¬K€OP`aa¡ ì.\¸P¾ûÝïFÇËHyå•W#¨šŽyÇæ#`)eÇŽí®t•Cf¶ÄÏÖ\¼×,”'Ž—§žúqùÁ~XöîÝSî»ï¾òõ¯ÿnÙ²eKÕ}WOáxc½œ- @€ ðiî> uß“·ÈN—ì´Ëî²üðü7Þ¨:^žzêé299Y…wÍÍM¬ ǰˆ½ÕЈ»ví¬öšÛ­vâÝâÛlȧóÜrX¾ÁÁòÌ3ÏDx0Vsq.ÙU–A\SÜeÞTÔɨ7¤½³··«Ü}÷ÝUwP½u'¦Mv#f¸ÛÝÝA\º\:•.Ò½ÉÎÄ 9ÏG]Šm&£q)B—ÍUðbÈÃ÷{Õÿ×ùþ“ï;£££Õ{ÏsÏ=Cd.Ækc0N¾;Þ—V‡¤Í×ÍòÛ]y'âu7áÞåêýgv6çŸÌ×–… @€ @àãî>Ž–u  ð ä°˜ù¡÷±c/”ÿø©réÒ•èfy¾Œ-Eˆ.¼æøà¼¥:’쀹vm)Ö{¥œ;w6†€Ü®¯TWÙy—sPÕÛ’]w9_v‚ýÚ¯ýj8DZ±ÉÆïÍp[)çÏŸˆÀ 9Bº•¨ë F˜õP¹çž»«ÀoÿþáªÛ®³³³î†òË 2mò6;ï{ì±|çãµñ×ÑI÷jtfgb¼Fúã6‡ÌÌàe:*‡}9æüËŽÄûËÑ£‡ÃëžNtgÕáOZD »ífffª.»ãÇ——_¾¾»âgjk¼nþ·PÈÐn_Tþ2ƒáù¨ÓñÜ[ñKÇãþÉòæ›'Ê“O>Y½}îsŸó   @€ @àvw·+e=|B9DæÄÄdyþùcåÿðâCô¹röì¥ë¶Æ¼R¿\….×;_VÊ•+/F3].¯GÐw:B—ƒe÷îÝeÛ¶mÕýz îrؽ­[sèÇRSwÝuWÕ¸²ò߫Ο™™×«ù·z{{«ù·víÚÃ÷í(¿ò+Åð¿T~›6mªB»zÂ/;îÒ¦§§§®ð³ŸýlvÏÅ0«ÏÅmO¼V.„Z_¼†²;³9¾Î¡4'âëSqûFwC1Ôêãåðá#UWbuXÏÝ›qÒ–2ôÏ.ßìØüñR~ò“ŸÄÏÔ–î¶Åkä¨ßµ3¸ËÊàw%*;ñòuu6‚»?Œ÷«£ÛóLtÃ>¿tp©<üð»б @€ @€nW@pw»RÖ#@€À' CË]¼x±šÏîüù È]»Îøàüp|8¾=º^ÇQôE]Ÿ›my9?8P¦%žŸŒ ¯9æ¦:^X9¤fw9Ôa=Ty9r.·íÛ·Wç÷ÀGb8¿éjèÐÅÅ¥zbN»Ž17Ç:Ûʾ}ûªN»œ#¯žÃ¨<·¼îÞ>|¸òp~~:nW¢;s>BÍñx=åë¥)º§âõ±ÁJOx Wv<ð@Ú¥S½ %š¯ËG äûO¾oŒ]‹÷±¨kñZÙ¯•{b£»£r¨Ì®¨Ž¨Õ%‡Ãܵëíˆ÷¢müµÅ/\¬^?Z @€ @€n_@pwûVÖ$@€ÀÈa2ÿê¯þª¼úê«åé§•‘‘«ñaøÃÑóoã{Eí‰Êá/3°kŠç–â6?8ÿnÔwÊ… ËúOCÔ •߸ߍªœó¬^ç)Ëá2ûûû«!ù2pÊ%C»\rÀ\2´Ìá53„j” *ƒ»Gy$†¼øçõu—–ÆcÈÍ騶x½­þrÁ×ö @€ @€Àw4ñ>5 S²cnjj&æ¶ËP®?*? Ï®—÷‡vñÐ;Kvâåë¹~SÎdÇ]V6–ÆÈaRW‡JÍ9-n&ÃÊæ<‰ï΋™Cñæ{HV†p«¿,w?°äº9§ÝRg(l!@€ @€øx‚»çemÜa•è˜[ˆÐn!· ê²Ë®3êf–ç!e°—ëtÄîù¡{sµŸÜ—¡êÒÇB€À­rxÕmÛ¶ÅûÏ|ywŽÃK±Ù+Q»¢GÝì.Å{Ï«Ñá{© m‰Ú]7[?vg!@€ @€x€àî=¾ @€ÀFÈNCÒmÔ«ç¸ Ô‚@vÙå‡Ù™™C¦fçÝÊÊTtð^ˆÃËùëÞ>Ì÷‡qÙe—5u%º©28Ø5P ¿úöFn @€ @€nC@pwHV!@€À'%ÃÔmÙ²©lß¾%>ðž/ÓÓ'â[wÅçù¡xC÷QCÏÅsÙs>>h_ŒmÛÊÖ­[«2gY°X¸¥@uƒƒƒÕðº;wî*»v](—£~ï+â}hgì#»€·Gex—Ãgf˜w.êTÔ‹±Þ¥··«=úpÞ]€ñ„… @€ @à6w· e5|Ùñ²mÛÖ²{÷P Ww­\¼øZ|Ûœ—,?¿YGÝåxþÕ¨ÓQ‹ÕüRCCC1TÝÎCÄB€À­2¸ËÀ¿³³3Þƒö”‘‘Ëåܹ 1ïækeq1‡ÉülTÎ¥¹%*‰ ƒ»Ù¨7£þ&깨×ÊÀÀò™Ïàn¸ÚWR.])ýýñÞ´Xfg›#°[‰÷—îñVª®Þ|¿yè¡û«Ðnß¾}Õ/ínWÜz @€ @€wwïZ¸G€O] ¹¹9ºåvWóLåã9Ôåo¼Uþãü£29ùjÌ5õ×UÇËõù¥òps˜ºåìv”ýû–{ï½§üóþϪÝú£Fh÷©_T@`ƒ ¬wyØ_ûÚWËãÿJtÛ]-/¾øbü"Átt¿Ãd.Ç/ D@×UÍ¥¹sçÎ’µmÛ¶*ÈëîÎ!}- @€ @€W@p÷qŬO€;,]*ùÁùæÍ›ËððpÕá²oß¶2>~-æ™®»–îú’Ã`65µÆ¼R¹îÞ˜×nwö凿Z °Õ!vª¡{»ººÊµk×â—fª÷  î6mÚݾïwùu®ï½g-â¶!@€ @€\Üy% @ r®» ívíÚsF}®|õ«_-£££åõ×Ç0u³Õ0uùáxv·tvvV/CCC%C¿üà<ƒ?ž×à…uH6˜@¾då/<úè£ÕÑá _¨nWý|¿ÊZ]wƒ¢Ã%@€ @€Ô”€à®¦.‡ƒ!@€À»Âee0—ÕÛÛS¦¦&«à.ƒ¹¬ ë²ãeË–-UåÖù¸…ë)¡\¾×ä²z»žû·/ @€ @€ë‚;¯Ô¸@~`ÞÑÑQu¼<üðÃÕÜR9ÿ]tíííU—Ëêðš5~* @€ @€n" ¸» ާ P+ÞeH—e!@€ @€ @€úh®ÏÓrV @€ @€ @€6–€ànc]/GK€ @€ @€ P§‚»:½°N‹ @€ @€ @`c î6Öõr´ @€ @€ @€u* ¸«Ó ë´ @€ @€ @€6–€ànc]/GK€ @€ @€ P§‚»:½°N‹ @àÓXYY)Y @€ @€ÀÇhý¸XŸ @€ ,--UÝââbuÛÞÞ^š››KSSÓWö @€ @àCw‚â! @€·#!ÝÂÂBY^^.óó«·sÕ¦¥¥¥¥´¶¶V•^†y @€ @€ÀG î>JÆã @€>B ú¬çž{®¼øâ‹åÂ… 套^.SSSevv::îJéëëÀ®­>|_Ô¡²}ûöò«¿ú«¥­­­ ô>b×&@€ @€X@p×Àß© @€¬M ;ìrhÌK—.•7ß|³¼õÖÉòä“O–‰‰‰ï&c§+e``s„tíeqq¡twwVÃgæ6ÜY @€ @€& ¸û0 @€ø ÞæççË /ü´<ýô3å§?}©¼úêkåêÕÅ29y8ºðZ" ëŠ-›ÊÜÜT|½XŽŸ*ÓÓUvíÚv­e÷îÝåóŸÿ\„yÝò†@vÜÍÏÏE·Ý\Õ9w}XÌŽØCÖG…vù ò¹¬®¨ÖèÔ+1\æLU:î‚ÄB€ @€¼# ¸{‡Â @€7XXXŠðn¡,.¶ÄЗÄÝ,°[ÝWÎw—KKtݵGµEx·e˜Ìë.þ$@€ @€Vw«n  @€ÜB )2¸¦ø#oKYŽZ¹¡Vº|îÆeu½wƒºæææ’e!@€ @€Ü(àÓ‚5Ü'@€ ð´mÙ²¥ìر­ô÷/Eðv:¼K±öxÔLT†x¶LŃ£Co$ºìFKkë|Ú5TÚÛÛ?l @€ @€ * ¸kÐ ï´  @€>ž@vÚmß>TöîÝUW"´;5;™ˆÊà.;ë>lÉçÏG],ËË—#¬›+;wnÚY:;;?l @€ @€ *`¨Ì½ðN› @àã ´¶¶–ûôôô–‹/GèöLYXx1êÿ‹펎ºGã¶7ª?*‡Í¼5áÞóQÇJ[ÛHØRöìÙ[î¹çÞ÷”îîîXÇB€ @€¸. ¸óJ @€ p---åàÁƒÑm7X^xá§¥££5ºW£‹î|܈a03°Ûµ3*ƒ»QÚý0†ÕüŸ±~sÙ¶m0†ÚÜYî¾{Ùµk—Ž»² @€ @€ï îÞµp @€ÀMººº¢kn  —Ï|æ‘röìDtßM–¹¹Ëezú¥ðbû­oïã\ÜNG8w1:ëJÙ¼¹·<øà‘rï½÷F×^OtàµE gäú›‚{’ @€4˜€à®Á.¸Ó%@€X›@Îq—C[¶··—¯|å×b¸Ëå›ßüVùþ÷P®^=áÝÿ[sž»–¨ì¸›Z)[·n/ûöí«ºõþÅ¿ø§Ñu·5Ûûi‹ç- @€ @€wwïZ¸G€ @à¦Ù!—sÝåp™ËËËÑy·'jWtеŘ3e~~.ºî–£VJKËõŽº}û6¿½Þîsgéïï}d¸g!@€ @€¼W@p÷^_ @€¸©@†w9\f___ù½ßûÇåw~çwÊääd9sættÝÍU÷sÛ¶m‹yí:ʦM›ªÊ¡13´ËÎ=Cdޔؓ @€ @ aw {é8 @€ÀZZZZ¢£®¥ê¼Ëozz:vµRwÕn‡††b~»Î*¬ËÀÎB€ @€¸•€àîVBž'@€ pì ëêê*{ö쩆Ï\ZZªÖλ ÷rhM  @€ @àv|Šp;JÖ!@€ pú²»»û&kxŠ @€ pkæ[¯b  @€ @€ @€î´€àîN Û? @€ @€ @€Û0Tæm Y… @€µ ¬¬¬”¬éééê6ïç’sæ<€9O`–… @€4º€à®Ñ_Ο @€ÀÈnqq±ÌÏÏ—·Þz«º]^^.9/àððpééé)­­­UÝÁðk @€ °!wâ29H @€K`rr²LMMU]vgΜ)sssåÔ©SUp—g’vgÏž+ÝÝÝeëÖ­eÓ¦Áª/ïë¾ÛX×ÚÑ @€ @€Àú îÖÏÒž @€x[àôéÓå•W^‰.»“å?ÿç?ª¼±±Ñ²¼¼T —™á\OOÕi÷Øc¿\~é—>Suà}ùË_.íííÂ;¯$ @€hHÁ]C^v'M€ @àÎÌÎÎF8·\._¾\Nž<u&êr™™™+““‹Úå÷½>Ÿ]gçD ™YÊž=ʶm§J[[[¹víZÕy×ÛÛ+¼»3—È^  @€ @ †w5|q @€$°´´TuÙeøöÍo~³ª™™ÎãD˜×¡Ýãq:ÝQÜ-Ű™Çâv´<ÿü…òæ›Z®†Îܼysyâ‰'ªû±‚… @€4Œ€à®a.µ%@€ pg²ÓîÒ¥Kedd$‚¸·"Ä{=¾áŽèœ{0n·D=Õ•ÿ YŒ0o*nGÊ•+£ÎÅýR^ýõ244T{ì±êk @€ @€FÜ5ÒÕv® @€îÀJŒ977W¾õ­ï”^øi9qb>»ÏÅw;vÿ*nû£¶FåAb|̲55uWÔ®rñâXù/ÿåÏbèÌå×ý¯†Ìlmm5dfèX @€ @ 1wq% @€;.wgÏž+o¼ñf ¹-¾_u;¢î‹ê‰º>·]Üy{É0/—×¢Þ(³³óÕœx++‹eaa>¿jB¼j  @€ @€FÈ_uµ @€ @`ͰMOO—ÉÉÉìÆÊØØÕá2”{(ê@TË-ö½=ž †Î<óÞ-ƶÓåòå+Õ°›óóÙ‘g!@€ @€! ã®1®³³$@€ pÇ2¸›™™y;¼/ããcÑ-×u8¾g‡™ÿíx·Ý‡“Ýy÷ÆúÜ-Dp7SFG¯–žžî288X:::n\Ù} @€ P·‚»º½´NŒ @€À''á]V—™u=¨k‹ÛÛù/G’ë]ïÌ[Ý×êmûLéí])ËËãenî§qÜíŒÛž¨ îæcxÌ£®D@w¦´¶NÅ™­å¾ûîÛ­1Dæû‡ÕŒM, @€ @ Îwu~ @€OJ ‡ËÌÐ-ç©ûüç¿Ý|Ìs7Yž{î­2;;]._þA„w-ÔÅÀ™M+ìÆ˜ åÀ»cN»ÏÄíþrèСjûÖVÿUù¤®›ïC€ @€µ#àõs-  @€ -ÐÔÔÃ\n¯ÎáK_úÕ*;~üõ22òʵk×Êèèw"¸[ˆÐ®-»֘ ogéêê*ŸûÜÊO<^vïÞ]Ž=Ýwþ›²¡_ž @€Ö,àÄk¦³! @€%Ðßß_öîÝ[zzzÊïÿþ?)333åÂ…seqq±š»®¹¹%†ÔÜCb¶—ƒDÇݾªÓ.»ö, @€ @ Qwzå7 @€;(ÃeöööVxˆ¹î–ËÄÄDu›ß6»ó2ÔË¶¶¶ê1Áݼ(vM€ @€5/ ¸«ùKä  @€l<Õ®%&´Ë®º•••* ËÛÕ%‡É\]oõ1· @€ @ ‘w|õ; @€OH ;ì2¨»qÉÇ, @€ @€À»‚»w-Ü#@€ @à êÞ‹»°°Pæçç«yÿ¦§§«®Ä|,—ÕNÄìVÌaDs8Ñz4 9¾×ÑW @€¨'Á]=]MçB€ @€@Í ¬züøñòú믗“'O•oû{ezzªœ9sº òº»{Jggg9xð@¹ï¾{ËÞ½{Ëßÿû¿š0;…w5™  @€Ö$ ¸[› @€ °6ìª[^^.ãããåòåËedäR9{öB™œœ*§OTÁ]WWO -ÚÕSû«/×Ï¥£££äÜ @€¨?Á]ý]SgD€ @€@ äИßÿþ÷Ë… ÊøÃòôÓO—k×JxCeii[ ùD ™ÙZff&ËÜÜ\ùÙÏΗS§þWè/Ï?ÿb¹ÿþÃå÷ÿŸ”­[·VžÎ»½Ð‹ @€kÜ­Îf @€ø¸9Lf†v'Ož¬†É|õÕWËìlOìfOToÔþ¨Žñ.G]‹Pï|tæ](££cäMÇ|w­±þlÕ±+Z @€ @ ÎwuvA @€µ'CcNNNVÃc>ûì³ÑI÷³ïšbXÌ/ÄÁîŒúZTxy?ÿ›65Ýw‡¢ŠÐn¤\½ú£JólùÉOžŽ9ïö”G}´B3V´ @€ @€@îêäB:  @€jW ƒ»‰‰‰jN»gžy¦<õÔSq°_ŠP.ƒ»CQÿ0ª#êÆe9ž¿\Š!4Ÿàî»åÌ™3Õðš##˃>(¸»‘Ë} @€Ô€à®.¢S @€ @ ¶2¸ðíjYXXŒƒmŠêÊ!2‡Þþ:n>°´Å#ÝQ}Q[bÛÎ6s¼ô÷ÅPšKXÛ @€ °±wûú9z @€6€ÀÜÜ\ÉùìÞxã2s¦45µE7Ýqä/jsTtï_šãÁ¨¨©˜×îóell´;öj„wWcøÌù÷oàk @€Øà‚» ~> @€µ/°²²óÙ-FÇÜBpËqÀÙq—ÿËá1Ûßþ:n>°äzï®»¼ÜÃf.F-Dð·òµ=@€ @€[ …ÓB€ @€wX C»ùùì’k©:îšš2°ËàîúíÞ0-ñ@o„~Uh7??'¸{?‘¯  @€ P‚»:¸ˆN @€Úhmm-mmmÚe].9GÝ\ÔB~ñKvÕe]_·¹y)öñþý|Ħ&@€ @€ '`¨Ì wÉ0 @€M C»;wVCe¶µ5•¥¥é8…sQ¯Fíˆ:•]uï_2°Ë+--/•ÞÞ…2<¼=jgà½m_ @€ @€ÀÆÐq·±¯Ÿ£'@€ @`´´´”¾¾¾288X:;Û"„+¥¹y<Ž<ûKQ9„fvÞÝØa·_gGÞDté]‹ºaÝtÙºu0jKlï¿sc!@€ @€@] 踫«Ëéd @€¨E"sÿþýeÓ¦MåÈ‘bžºÅréÒåÊ•óÖí¼ ñ¢îÊ9ïÆ¢&#¬{!Ꙩóö”íÛ”¿ûw¿wûJwww¬c!@€ @€zÜÕÓÕt. @€Ô¤@vÇõööVÇ600PúûÊÄĥ蚻Á]…9•wû£r¼J3ü3Q/E]‹š‰n½–jÈÍv3‡ß´ @€ @€@} øŸ^}]OgC€ @€@ 455•ŽŽŽòk¿ö¥rèн婧ž-ÇŽý¬Œ­”sçþ<¼Ž8ò¿‰Ê¹î¦¢fchÌóQ#eh¨¯<öØÿYî»ïÞ²oßÞ²yóæèÀû°9ñb3  @€lXÁ݆½tœ @€$Á]™ùË¿üËevv6‚ºå2:z¥´·_(.üÏø:ç´[ý/Úr Ù]u¥««³ìÚµ¥üÆo|­ìÝ»·ìÙ³'ë2ÇÝFºøŽ• @€·)°ú¿ÂÛ\Ýj @€ °V ãrÈÌÎÎΘóî®òðÃÆÐ—Û£¯¥,,,”™™™j×ðµ´´–¾¾þjXÍ»îŽN»á²uë–*üË¡7- @€ P‚»ú»¦Îˆ @€Èà®§§§:º¯~õ«1l毕©©©rêÔ©ª ïôéÓeqq±lÛ¶­twwGP·5†Éªæ³Ëí2°3Df^\‡E€ @€uÜ­¢] @€ @àv2¼Ë¥½½½ª ã6mÚTæææªŽ»¥¥¥j»spp0:îú«a3³ ÏB€ @€õ- ¸«ïëëì @€¨q6sß¾}eee%†ÏÜ_ÝfW]|y«Ã®Æ/ Ã#@€ @€À: îÖÓ® @€ ðq2 ÓM÷qÕ¬O€ @€ú0£y}^WgE€ÿ?{w$×ußyþ_Yû¾¯¨ bᾉ4II¶Û’¬-[ê‘ÇK«Ûm‡':ºcæaÆ3/~ꘙˆ~™ Gôt¿¨{f-kñØ2í¶DK"-Š \AKajAí{eUfÍÿw *ÄR÷f™YßÃ8ÌBUæÍs?çæ9yïÿžs@@@@@ L€À]UÅE@@@@@(NwÅY¯ì € € € € € €@ ¸+° £¸ € € € € € €Å)@à®8땽B@@@@@(0wVa@@@@@@ 8Üg½²W € € € € € €&@à®À*Œâ"€ € € € € €§»â¬Wö @@@@@@ ÀÜX…Q\@@@@@@â pWœõÊ^!€ € € € € €˜»«0Š‹ € € € € € Pœ^Ù+@@@@@@ pW`Fq@@@@@@ŠS€À]qÖ+{… € € € € € P`î ¬Â(. € € € € € €@q ¸+Îze¯@@@@@@ L€À]UÅE@@@@@(NwÅY¯ì € € € € € €@ ¸+° £¸ € € € € € €Å)@à®8땽B@@@@@(0wVa@@@@@@ 8Üg½²W € € € € € €&@à®À*Œâ"€ € € € € €§»â¬Wö @@@@@@ ÀÜX…Q\@@@@@@â pWœõÊ^!€ € € € € €˜»«0Š‹ € € € € € Pœ^Ù+@@@@@@ pW`Fq@@@@@@ŠS€À]qÖ+{… € € € € € P`î ¬Â(. € € € € € €@q ¸+Îze¯@@@@@@ L€À]UÅE@@@@@(NwÅY¯ì € € € € € €@ ¸+° £¸ € € € € € €Å)@à®8땽B@@@@@(0wVa@@@@@@ 8Üg½²W € € € € € €&PV`奸 € € €ÛH`mmͲ٬­¬¬Xô³v¿¬¬ÌJJJ¬´´4ämD®"€ € €@ ¸+âÊe×@@@BPÀnyyÙffflppÐmnn.캻»­¦¦ÆÚÛÛCÖ~*GB@@ Y€À]!×eG@@ŠP@»h”‚vSSS666w³³³!@WYYiKKKVQQaÕÕ5aÔ]uuUÐ €W„»„ € €À6 p·M*šÝD@@ A “ÉØÐÐ]ºtÉΟ¿`ßùÎwmzzÊÆÇÇluu5L™©À\UU•¥R)ëï°¾¾~Û¹sÀ~çw~ÇGáU[CCCø[!ì/eD@@6 ¸Û¨ÁÏ € € €÷T@ëØiJ̉‰‰¼{ýõ7|ªÌiŸ"s&ŒÂ»±pccãÔ›´t:^W^^Ö»ñyü@@(w…PK”@@(rì&''}tÝ´½öÚa{ñÅíêÕ9›mõ ÜNÆíuϵ×$†ýqÉŸ?j/ŽxP¯Ì¾÷½ïZ[[›}å+_õQwõŒº»&Å € €Ž»Â©+JŠ € €­€we7<`™ÌJ˜NsffƦ¦&ÃZwõõõV^^îÏ#!€ €@> ¨ÿ×t׺gaa!eB¶D€ÀÝ–°²Q@@@ÍèNûùù¼ÍúÅ;¨S .ÊÕþ󧯥×6¯ç´xnðÞš­®fÂûºk_wñ“@@ Ôß+/..†:kcc€û”?{ŸçÏ·šî²ËÿÞêyÁJK›3v‡" €["@ànKXÙ( € € €ÀftÁNSde³š³Ò³¦ÅÒš6·Z×F#ïôüŸ÷´ eÝÑOB@üÐHx°›˜˜°+W®Øùó}mÛQÞ-ú ;%¯¾_}~ÖGÕ­ù¨»EÒ-ùH»»pá¼ÿÎlçÎaý;¦ÎÌ:¥ °5î¶Æ•­"€ € €lJ ÄÊËËý"]¹œÓÔXsž=ß.ø¦ç®xN{ .í©0–.è¥R è‘@@à^ èf´;rä¨ýð‡/Ú»ïjMÛSÈkö©®ÿ™¯ÎóϺgÎûôy¿ ç¿™ç;s&cÿþßÿG{ðÁƒÖÐÐà#ïºm`` LéO&!€E'@à®èª”B@@ O@wÑ+ØVYYåâ¬[ð¼äY9åhM;ÿñ’‚uz®‚|z^‰oCÛ©d × !€ m§i2‡‡‡í½÷Þóé±GltT#í:=H§€Ö«}Üs•çIÏ3aÚëµµQ›žó5pßýûèè¨UWW[oo/;W"!€@q ¸+Îze¯@@@‚(--³8à£äÌÞzë´_Ø{ÍË¿àíý±Ýs§ç§°ÑH¼ü÷oz>éyÉ/ê5ÙC=îÄ×]ù$@¸·š [Sc^½zÕŽßÞ|óˆ-.>ã¼ßô ÝN/Ü?ñ¬€úm–¯õ¬õî:]f§e2c¾šBKSi­ùúugýQÿNúż“¨ë·§Ÿþªuvvúk[­®®ÎGßé @w¾¦Ý¨ÍÏÏ{®þ¹Õûï]þØìùfýuôû:ÿ.°ËGí•ÚÈÈ9«ª*ñïZ×–„§»â¬Wö @@((’’¿ƒ¾Âjkë|íš~{üñÇmzzÚ×´9á¼2ÿyØï®Ÿò‹|•¾_k¾®Í˜æ–<`WãyOXÓnïÞ½!hWYYIЮ jŸÂ"€³ÀÚÚúº´z\ÿYÿÖh:æôx'IÏ+ ¯¶w'¯â9 €@! ¸+ÄZ£Ì € € €@ (pW^^nŸÿüçíÙgŸµ .Ø÷¾÷]»xñ²½ñÆ;~—þ¢ßa¯Ñv%ÖÖÖäwÜWا>õDÈi÷ÜsÏ…àŸw$@Èèæœªª*¿!§ÔƒoZ·6íyéÚ£Ö·»UO£ë¼ÿO{?_æùvÏ÷§“@ pWÀ•GÑ@@@bÐŽÊÊ 1WoMMaêËÕÕŒõõ ûÈ»uç—ö®î ëêêð ^›?·Éª««uíŠíˆ`@ ]@SWëæîtƒÎzRÐnÚs…g­aûI;ø¢ ßœý–¼¯¯ò\ãß>éùþt PÙ@@@ ˜tQOy÷îÝöGôG¬[µåååkÓc­ïiii*ð¼Ó…@]$hWLGû‚ P, ÚÝÿýÖÒÒbï¾û^诳Ù÷}ݺ¿ð]¼ßóãY£å7ã4æ¬g÷NyÐîeŸ»ÒžzêaŸ»7ôýþ P”ZÙ)@@@ p4¢NIÁ;¤#!€ €@á ¨_×M6¯¬ŸÓéeÏc¾S­ž Ót˜ºT­ïe§Ïyžòuf<Ï{À¯Ô<7²–­Ë@ xÜoݲg € € € € €À=кv a¤ÝÓOʦ§§ìÈ‘öÎ;/zðîMÊ]òòÕùÈúCþ¨©4G<Ïypîœÿí¤O³¹à¯/³½{wÚ—¿üÖÛÛkµµµþ Pœ^Ù+@@@@@ /4Š^£íºººìÀvùòe;sfÚæç—leå}/ce2Zï®ÂƒuCþ8ãÓcz°ïC]…O“ÙìëÞ¶[¿õôô„ `^ì…@¶@€ÀÝ ²I@@@@@Ÿ hä]ww·=þøã>Ò.muuu622k~8ãÿž°‰‰W}Ý»”ê2>Ê.ãÓe—xÀî>kooµ§Ÿ~ÂvíÚÖÉÓú¶$@ ˜Üsí²o € € € € €@(p××ײ¦Îܹs§>=h33ÿŸÍÎÎúã ­®®ZMM›O…Yg}>=æÛ½{·}ýë_¾úúzַ˃º¤ °µî¶Ö—­#€ € € € €l¨©©±¶¶6[^NÛ£>j‹‹‹¾v]O—™±úúF«¬Ô´šþ»î05¦¦ÚT௤¤dÃVø(NwÅY¯ì € € € € —”ëõ©1³ö¥/})”1›Í„Ç’’TxL¥R¬K…vZÿÎÜþ‡Å.@à®Øk˜ýC@@@@òH@A9e%Ö¬Ë£Š¡( ë­c^…B € € € € € € °}ÜmߺgÏ@@@@@@òH€À]UEA@@@@@ؾ¬q·}ëž=wL&ckkk¶²²õ³ÅUŠKJJ¿5ï¶~.++ Y?Gsq‡'ð?@@@@@@ »x¼´°Òé´={Ö&''íèÑ£611acccáqqqÑfffÂVTT„@]oo¯577Ûþýûíá‡¶ŽŽkoo'xW؇¥G@@@@@ oÜåMUP»- u³³³6>>nƒƒƒ6<Õ]d£Ç\Œ¸Ž£$õ&Ö|¬;EåŠYõáe‘£ã<Îö¢ºËE™ôþùXw2ŠÊÇ(zM>}æT¦|¬»\÷uÅÜ^ªsñ¹Óç_ÿ)Eá›ü_T–è¸ÚäË?öôb®»ÇùÇv|¿ˆÚ¥$õ¦·ËǺËy_·á8ßñõ§FÇuduý1ÈEÝ©LÑw¦¨|1‹^¦ã(*W’ís_'£è;S’ÏÝÆã(uWÔíå†ã<Éq¹ñØÎEÝå¢Þ´?ùTw‘‹£ã<Žyd³ñ8³è5QÝEå‹~¿ÙǨÉÓgNŸ½¦ª¦“ì\hü3§ÏžŽõ¸'U:ai¬l Fõ•õá1N¹t¥ÏêLu§:L’š*›Låѱ®º‹“t²2³4ʲ°º¬âž « ²ÒgNŸ½$I6Ãsá\úÌÅ=©*O•‡ÏŽ+YÅ=ùTyt ©­T›©c+nRÚkÛC{©ºÓg/NRÔ6…vÜ?s+Ù˜mÓõuú¼%i/u ©¯‹ÚKµ qRÔ×]¿š¸½T]uÖv&n/u<és'£D}?êïrÑ×éxšYž }Ê¥ã*NÒñ]WQú:}G‰{|Gí¥¬FæG·—êëô¹Sù*Ë*ãìZxú¹…•…ðyKÚשî*÷u2[KÜש½TݩΫc·—:vT&õuúÜ%i/…®¾NåÑ÷¨¤}Ú$}'P7© 2j«iKÜש,ª;y%éëÔVªHÚש½ÔgO}ú—$ic_'/õwqRÔ×Éh.=—¸¯““ê.nÛíƒ|Ôf&íëtn Ï^Ò¾Nç²ÊǾN窻¸m޵—:7P›©c+nRt>Î öu:7íx‘õuúÎ×%=7P›$£|<7Ðq•/}Ži§¨¿KÒ×éøÖyJÒ¾._¯ƒEçj¿óñ:X’¾N}œê.i_§Ï›Ží\öu¯ƒéÚ­®¯Í ™ú….ïJL¡ï5åG`“™LÆ.]ºdƒƒƒ666¦ÉÔh»¾¾>ëìô d ¦Ê 'ç~e~eÞªÒU–*½ó/úúUž) â^4ÞH¡/RºØ£ :‰{q\Û,+IÞ¼èýu²¹œY'S˺ٟõ¥¼1ÓhÙÔú]Kq/°ÊH_4uá@u÷Âa’/MŸ´ïº ®º‹ÊçxÐñ¤ ùu‹Š²xA•MïêÎ#L©\IR¶s*ƒNPt|ëx›tBÕ\ÕÚKÕ]ܤý‘¹|tŒ«ã¤Ð×e½¯óö)‰QôÞrR»¤ãJe‹ÓשLzúº¸êUíOh/½¾rÑ^ª¯S¿ÊçÛŽû™“‘êKFQûùmæQ}r®’ާ¨î´Ÿq޵º­¾.îçVûs½î¼2JÚ^ª¯ÓçVu¦mÇ­»¨¯Sý%íëTwInâ‰ê]û“‹¾NŸ5Õú:ý7鵪ûÐ×%l/UõuÚ^ÊÿK’ôyÓw”ÅÕÅØß{£¾NVIŽïh?´\ôu:žU¶\öu ´$Iûº¤Ç“>ÿá3—ƒ¾Nû”¤<‘Itn´¯ }¯æò±¯SÊ*n{©ã[õÎ bž×é½Õ¯¨½Ìå¹A.ú:Ý¢r%i ¢öR}n^õu^Õ]Òs]KIj}ædÚK¿Ž¢6!®»>k¡¿[óþÎÿ‹›¢ºËE_§ÏZèW*’õu*S.úºpn‡×Á¢ö nE¯‹Î ¶â:Xô›}Ôñœ‹¾NŸ7µ™JIŽï¨üQ_w½|+ëßõYŒûŒ¶Í#ù »3é|ØÊP°Ù¬ßYækÇi¹wÞyÇŽ?n++É.߈ÑÓÓc_øÂ¬¶¶ÖšššìN¦·TyÞzë-›œœ´cÇŽÙ™3g¬¡¡Á>ÿùÏÛ#¹0i«kñ‚{[öÚ¾Ö}¦r=ÕûT¬‹vêÄuGî}ýòëöòù—cï—^¨; sßoÚ®¦]ÖZÛûäSw¯¿;ò®/އrÅ JéîÕšŠšPžß}àwÝ]¯ýû`ô{éÜKáÄsjqÊ|rýzSIÃï~Ü:ë:mOËžP‡›ÚÀµ'ë ’îò•Ñ÷O~ßÎM‹³™ë¯ÙÙ´3ÔŽ§æšæØuweöŠ N ÚÈ܈½9ôf¬;¢uQ®©ºÉ*K+í3;?cŸ­ýìõrÆùA_~Uog§ÎÚBÚ§ãõã+Nª)¯±OíøTøÌ=ÚóhxŒ³HéøQyTwº{-IúÌÀgB¹t÷qsis¾nv{ºPpbìD8žNŽŸ Ç“¾ o6)À¢ãGUô™hØì&~áùª¯¿=õ·¡\™¤«8I£Iõ¹ëªí2Õ.o6©½ÔEqµ™?»ð³Ð6éßq“î€üÚÁ¯™>{agiY¬‹bº ¢ör&=>sÅ'éó¦Ï‚‰¹ìëÔ¿„Ñœ1ú:µ—òQ_§¼§|O¬¾NíeÔשÿMÚ^ª¯ûúC_VIûº·†ßºÞÇíë4:Jý>oIû:µ—ǯ·—ϽÚJ}ãôuj/êx(ôuúŽ¢¾%NR{õuß|÷›‰ÛKOúÜ©j+k‹Õ^j?Ô×…6Ó?oIû:µÝÏô>ú»8FÑkTW¹èëÔ^ªîTgÏ<«½T™t1gny.ôußþàÛ¡ýŒÊçQ}r¸Øê7>Å "D}ÝðüphÔßÅIQ_'£ßÞÿÛ‰û:䢯S;©c{Iû:µ— ü䲯Kzn ïÝêëtn º‹Ó×éÜ@çtêëtn 63ɨéèÜàüÔùÄ}Î ÔŽ'íëtn0¹4iùÒש½T_§v2é¹FEÉ(—ç²’YÒsƒ†Š†Ä}ÚL}·LÚש½Ôñ”´¯S{©ï(Iû:¨îÔäòÜ@mT’ë`j'u-LåÊÇë`Iúº×Á’ôu¯ƒÝi_7??Rl|ŒúÇË3—C{n\[õ»|ÐÅ䨤ÍMÍÙÕñ«ÑÓxD `ÜlÕWÁuGÉÕ«WmzzÚ~øÃÚ_ÿõ_›å\&Ú|ðÁ0B®¾Þ§#KÝþ®XM‰ùæ›oÚÈȈ½ÿþû6<û¬}æ3Ÿ±ƒšÖ¹«¬¬Œ¸[]±7޽a©|¾ðr?Í/óèÜMâvá&Þi¿–ý皪ë©ë±þÆ~û~Çý¿$I'œ?ü¡M.NÚù™ó±ï~àù0bOåz|Çãæ÷ÛoºX:&ôÅilqÌŽ\9bß|ï››ÞÆÆt×wÛƒ†ÏÆêÆØÁݽ~râ¤]˜¾¾ë$4NÒ8-Õ-ödÏ“öOþS«ôÿ’$•IVtÂyiæR¬Ñ6úB®`­¾lêâ…¾xÆIáB´ŸkÁÿzú¿Ú±¡cq6sý5u?fOõ<ꬾʧòô»ã$M;óáØ‡vjâ”}÷ƒïƺP§» {zM~{ê{ì³;?§(×_£ÔáK‡Ã1>±8¦£ºþÇMü ‹;rÑgn_ÛzÐ|/¿þT]ˆVE»¿üè/mhvèúßâü 'uW]ãÚút=›Ý޾„Ÿ>>s?½ðS;rùH¬ºÓH¤†k®n¶Ïíù\â‹™õ“³? åº2w%ÖÅY¨Îtçábë¢ê<ëB´ÚKê4¥¡ÚËoÿvì °Ê¤*µM²’[mEm%¡¿m&éä\m“¦Ô…:µ›q’Ž#}îzë{sÚשMPÝé"Ùf“ÚË'w<ú:w6ïŒÕש½Œúº\´—êë>·ûs럹„}ÚKébOܾ®½¦=Lù¦vµ™j6›Ô^jD“úºC‡îtC}].ÚKýÊ®_ w·¬µÄÜ©ÎÞ¿ú~ø¼%íë4u˜.Øëbt’¤ö2}ÚK]°Õ㓽OÆj/µº˜õuIÛKmOmÔ#]„GÕF•m6E}.B«ŸS'E}Œ>=ðéÄ}Î rÑ×=ßÿ|h3“öuj/õ]7çQ_§c¼¼Ì§«öÿ⤨¯S÷7'ÿ&q_§þ÷ó÷}>ñyú_×%íëtn ã)i_§örbi"'çQ_§ï¾IÎ t^¨îâôu:7Ð9ÎítnðDωÎë¢s?%íëä£vOÚ×éÜ@çuIû:µ—å–´¯S{©óº¤}úݼ¼æ}¾c¨óñ:X’¾nãu°$}ÝÆë`wÚ×-,,\ŸýLKi´()0}~ú|ø~¨ï÷:/Î.ù,[é5[ž\¶šT¼e¢íóˆÀ½ØüÕô{]bÞ¿h4ÝdEE…i JM?©Æ9—©­­-l_£ãnwB­€‚uvêÔ©Ð1h¤^oo¯íܹÓöìÙc­­~’Wîs¢obMº÷GÁÃÎŽN«i®±ò*Ÿ¦¡ÊG5Üìd_qÆÏÍž›<{Œ®º¢:¬‡Ò]×ëNßÊ/$]ˆ 'f~ǾîÔEü8©¯¾/\Ó]bqî:ŽÞS_X5úD_Zïo½?úu¬G]“L¥:—“î>ÝÙ¸3LÕµÙ²l|¾¶¡mi›I¬´OÚ7í£.ØêÄa³I﯉:.ež4i{:twµÊ¦»óâ$Lim$•INq“Ê.‚øgeOÓÓ.þT IDATg8I’µ¬ôYŽÛèu*‡lÔ¶LµLŪ;•ATtW­Úº¤IÛS0IAI*Òg/NR™Ô>iuñ'nR9¢ 4÷µÜ;¨÷Wµ—ÑT&qÊ¥ýÑ1©öhOóžØÙC?àŸ;OrOš¢¾NIÕ]œ¾NÖQ_§õ,’ßÚ'íc.ÚKKj/U¾$í¥ÚµI͹7I_ç£$Õß墯ÓþD}úOøÇéëÔ^F}]ÒöR¯—w.ÚKÕ¿Žm3îñ¤Ï†ú:µ—š67i_§í䢯Ó1ž‹¾.´—×úºDí¥·MQ_—´½”¹Ž'm/Iûõuú ÷5öÅþÞ«2ÈIç¹èë´\ôuÚ§\ôuÚ?YëB{Òsƒ_èë’ô¿×ú:}ÈE_§ÏJ’cIǤ’>»:¯KÚ×éøV[´¯SÛ–ë¾NÛÌE_§}ŒÛ×éýÕ'©¯“y’ò¨Þôz:¯KÚ×éÜ@}¹œâ&•GŸ¹|êëÔ^êxÌŹŒ´\´—úܪ½”·Ê—ôÜ@ÇS¾ôuj/Õî&íë´?:çIÚש-QÝåÝu0ïëtլγΣϵÎAu#›fY×<[ZZ¬¬Ü׺mi³®†®ŸŸ×%èët\ë˜LÚ×m¼v§}®»ê:±‚rýýý¦Q*›ñïÓ!p§µ‹×²~Cëì’¥ÒveüŠÙæïÏŒ6Í#y!Pâ~üI“ób(D1è0Ô]ZHô£> wSäzªÌŽŽûô§?mÕÕÕVWWwËw.\°ï}ï{aúÎo|ãa ϯ~õ«¶wï^{òÉ'íù矻Íí´'Ož´óçÏÛŸýÙŸÙ~`ÿúù×¶ïéði[|*¹[oÒM¼×âN üi-2Mp í@ø"•äxк›]wV.¯,‡ vq¶§“ e}î¨ëˆ}£©Œt×áèÜú¨ˆ8e‰^£/™:Ò;]ÔŠ{R¥Q-cócáN*Ýyçn•IÓ¬•ùôs*ÏÞÖ½‰¾”k{š.äòìåp3î"¼úr©/äú"¬©'ôÅ,NÒ…ÞÅôb0ÒP:®’$©îtœW•û:~'iÚGM¤/›ºûX匓ÔVtalGýŽ8›¸þ?úÌÉHëèx“t¤“|µÕ¶Å>ùÔEp}îTÕ]œàæÆò‡»X½ Ðñ®º‹s£2© ˆF”izÃ8u§÷ÖôÂ:ÒgNÇU’$Ý¥­»*Ó>-Gœ‚Þ_u}îTwwzscÙUÓ2yÅm›´]O))#¤©ýŒ“ž^oÇý3wÊ }Þô¹S9rÙ×é󦺋{<)¬¾Nm¥ÚÌ8m“Þ{ie)i*ß¤í¥Œt1[Iû:G2JÒשŸÓç?}Ži•EýÊ¥63NÒñ­ Ÿú:}G‰{±NŸyÕŽëã'·—2ÒçNm”nÌŠÓ^ÊC}]4EWÒ¾Nu§¾Eý]’¤öéÌä™Ä}]èã¼îôØU?¸¡¶ReÒçMŸ»$í¥\Ô×iÚ}î⤨¯Ówõs%'E}Œv7ïNÜ×ÉHu—´¯S[©6SŸ»$}]´fúº¤³lìëÔfÆ nD}Œ4B*i_§¶@u§2%Ij+Õf&íëôEÇSÒ¾Nç:ÇÌe_§r%97ÐwKõuúÜ©îâ¶Q_§¶Rm¦Ž­¸IeˆÎ ’öu*‹Úñ¤}>wj3ó¥¯S{©s:õwj+“œèZŠŒryn +'=7}pžôu:¦u©¿KÒש½Ôµ”¤}ÊP¬×Átn0¿8oS³Sö¿ÿ®}ã»ÿÉg#[°sçÎ[6«¶ô¬à¦ãÒ g=kÍ×Ëž/…A¿ú«¿j Þ}áó_°Ö¦Öë×Á’ôu¯ƒ%éët\G×Áî´¯ÓõâÕÕÕ¸‹}gCÒw]e}Þôýn%½bÏ_´áËÃöÿãvåüûýßÿ}û“?ù“0cš® ßòšk´aÈä·-çÉŽPŒÂÐ]Jº{B£ãÔ ç257¯ÅìºÙ¨6´ÓºvZÓNkî)˜¨Q€zFص··‡;=ô»\$•£¶ºÖëü.½úfkiô©‘n¸»áMõ…EyÕùéç¤IÛÒ‰µNVÊVb]ÌT´>‹îÊÒ ðͬ郎ú‚¸V²îðÓÝ‚I’öM'wIN¤ôþz½.òiŠÊûÏË£méFÜ‹s=T¦¦Êõ‘-+åñ‚?áxô(•©ÊpLmÜþfÖ¾é¸ÔEš¸B¢÷”‘¶•´î´ mKŸgMe÷¾•èó¦ß“&Õ}]y]Ø7KqFþ¨ ² Ÿ¹8i[Ñš¸å‰\tw®.B'©;—Q°T'2ú¢§îd­cQe‰‹öKjsu7e¸¨R¾ûä¼"åw1û]¹:ùLÒŽkí[mYm¸ë;îÅ‚hߢöRÛ›´?j›Ê³åa͵tvó£\£òès§zKbíGÔ×éø^õº‹¸óãRõ–˾.í¥ö-í¥Ž¥Ðöú½Iúºèó–‹¾NŸaµ»êëTwqûßð9¹Ö×éç$I¯—·.h'm/e”´½Ô¾¨<:.ÕV&íët<Å lntÕç6}]h/õýÒ÷1I[ ~Eu§vNw~'i/µŸêë´½¤eR_}'Œ;Ú9êëd¤úKš´\ôuáÜ }œµêë’ž¨¾¢¾.Éùжh-Ö¤}]ø®êÛLšT&×%íë4bOŸ½\œ×iŸò±¯Ó¹Ú$ýJh/½Š>ÃqëO¯Úˤ}]è ~×~ä[_§Ï«ŽGí_ÒsÕ[”ãÖYô:µj/Uo:Û·Dçê’ö+¹êëTµ»Iû:m'}¶£zKú} ª;m+o®ƒù½Åº&©È–g—-3›±ì¼_]ìôuÍ^dÝL¥À~V?¯‘vZfHçYs¶6_ké)`ùõ¼ºTÕ•Õ…6<ôŸþÙ‰›ôú\ôu²Ö¶6Ó×…ÏüµëÅ7^‹mLy?Wº~.®órîfêfl¾f>|Ž»¿¼|Hþm>_ö„r´€âh¸³µ~\®“bZNéf'go½õ–)kTÜ·¾õ­0æ¯ÿú¯‡@â×¾ö5ÛéÓdVU%¿X훾phÚ½¦ëj鲎ÖÍßýí‹:À¤IqSØLœ ãÑû«LÚ7¥$'/šƒ[ÿéËîŽOštKåIT&?Ih®Ñ—$ ë¾Ä-S(ƒoÒcdw[z.jj;¥$uÛ Ë¤}ª(¯0ý×_Öë¢xØ‘kÿÓöTwJÁíÚï7û  kº+W'xº{8nŠ>s¹¨7mC£BàÀ¿¤Ç Dû]äÓá¸IåѨ4ÕŸ.Ô$M*‹Ž)¥¸u§×i4“RóZs¢ã;ª»\´—ÚFoco(W’Ïœö/2JrL©Sî(ë£BÁü/j/l"´mQ{ÙR³>íbÜíå²îrÝשõ_œ¤×E}¦4KÒDïÝ,·LÚŽ¶ÑR»~Ì֊®õs*K’ã[ï¯×k%µQ›·\Q_—´½ŒúºÝe»ãåúëd”}]£hçÔ^梯 Çѵ>%Éñ¤ò¨ÏÜŠ¾.ÚçÍ>jߢ¾N}JÜ ¾zß\·—¹èëT_Q¹’ÔÚK¥\÷uò›´?Q_§ó•$í¸Œô_.¾§äúÜ`½dñœôZ}Þ”ò±¯S%97Ðá£}Ô±äø–^µ—Iûº\žh=ö|éëd­ÑÍ:¯ãÜ@GÍ'§\÷uúî”ô;Žï|íërqLûõu:Nã$ÍÒnqQsE{pÆGÚi8µ†šk^å\'Ý]­;…tg•†®ß‹ýöI¨Ê’/)úb¡“ý—/)úÂz/ëêF }ITΗÕ]t9Ê¥2Eu—G‡SN.ÎäÒWNú/éM¹,SToÑc.·d[ùØ^ªOɧã;ª³|j/u|çcÝåS{©ÏE>ÖÊ•+Ég7W¯Õ±¤”Oí¥ÊtÝ(¾:Ñ×ÝÁAw½Þâ]뻃wØüSòµ½¤¯»}]rnp{#=ãúçŽöò¦`ùØ×Eç½×ë殮¿»ȧï—ÚsÕþ˧ï)×댾îN]—œµ©©)›Ÿóij”óÖºýQY7 ¯Hð6¤.ÿ¹Ó×Û·¹´çÚ []ò*Ò¾þo"úoxÁ¦Œê.ŸÎë>Ö×y[®Ï¡rDÝôŽòòH€À]UE¹7º£å'?ù‰ŒŒØK/½d‡#ó¾ô¥/]i§ ‚w$@@@@@ —™LÆŽÿÐÞyç}»xуnö˜ç‡<ò¬7[¶ç€ÿͧӴ£>›Ë_ûÒC){÷Ý÷Âà-TW§é5I Phî ­Æ(oN4ÒN#ë.\¸à‹½ž³3gÎxçxѺººl`` ,ìÚßß}¤:ÑOJùtÇÉ'•ß!€ € € € €@~ hÄFÛû:w ÒiÉM_ßäùVKY(¨§àÜEÏ>òÎgŒœ˜ð%‰êLƒH P˜î ³Þ(u–——íÔ©SajÌ×_=Ì!=77g;vì°¾¾¾°ž]SSSèì´0ìÍ’ÖÍÓˆ<‚w7â÷ € € € € p3îhK§Wý±Ò—ôÑ:m àÝnnÑkëÊû² %%š&Ò|ÚÎú²@7{?~ù-@à.¿ë‡Òm¡€wÇ·Ó§OÛË/¿lƒƒƒvß}÷…€÷íÛ¦Ìëßݬ( ¦LàîfBü@@@@n% €ÛÒRÚ§»Ô:²Sðîv;ý]‹u*h§çg=ð§àߊe³Z'„…(@à®k2çD@×ÌÌLQ ×´™“““våÊ{ûí·­¢âfóGÿ¼===a„žFÞ‘@@@@@Í ”Xmm¨ñë•k„›ô—Ïù`‚UTn}dÝÇ·™ö_)Ïûs—ßëêjÃÚv 2ø¸¿A PÜJMQΜ hÄÝG}dÇŽ3M‘Yâcɇ††lddÄÞ{ï=ûñ|Ë÷Ôó•ž{î9{ôÑG}îèú[>Ÿ?"€ € € € €7 ”–¦¬··'¬s·´tÁ.]úÈq•¾f–ï)÷¬Ÿ4úN¾îy©w5Œºëë[_¨ººÚÿFBB pWˆµF™s"P^^n»ví CÇëêêl~~>lWsJßiRð.šRóN_Ãó@@@@@H •JYgg§MOÏØåËãþkì&<à¹ÃsŸgÍ ¦ žxú»Fã÷|ÒR©sVUUé£öj­½½ÝÚÚÚL×>I P˜î ³Þ(ušššì÷~ï÷BàN ¶Æ÷YSdª3$!€ € € € €›(++³'Ÿ|ÒGÝõÚøø„ýô§?òQt§=ÿßÔ^¿nù[þ¨ë­žuIÿŒçYa÷÷´ûUWg¬££Ívìè´xÐ{BÏŸDB pW€•F‘s# ;YZZZr³1¶‚ € € € €ÄЬ^Z†GKû´µµúè»6K§«<ˆwŃvU¾Å ž5[Øœg]Ò×H»Y+-ö‘uãVSSe==]ž»CÀ®ªªÊÿVêÏ!!€@! ¸+ÄZ£Ì € € € € €E! ]]]aÁW¾ò»ÿþûíÔ©Aûÿñÿ¶ÙÙ3¶°ðÀÓ®*§©2Óž³þüi×ìÏßgÿæßüwÖÔÔhÝÝ]VQ¡i5I P¨î µæ(7 € € € € €@Qh„œÖ¥SðMS]ÎÍÍúÏU>æ²O‡9m™LƧÎ\ ûªzÊ!x×ÖÖÖÈkh¨g¤]Q ìÄv p·Ýö@@@@@àž (x×ÙÙr{öì±ýûØää¤93¦Ñ\YY eljj A¾žžŸsG˜³¿¿Ï´VžFï‘@ °ÜvýQz@@@@@"Ð(ºêêê5š®­­-îjkklqqÑ¢À~_YYé#óv„¬]'`W»€À5w  € € € € €ä‘€‚xAW__o»wïA»ìúBwa„Fç544„)3ó¨Ør @à.ˆl@@@@@\ (p§5#!€Àö`ÂÛíS×ì) € € € € € €@ ¸ËãÊ¡h € € € € € €ÛG€ÀÝö©kö@@@@@@ ÜåqåP4@@@@@@í#@ànûÔ5{Š € € € € € Çîò¸r( € € € € € €Àö(Û>»Êž"€ € € € €wG`mmÍVVVL™L&>cGŽü'[]MYii·¿O©îVCÎf§üß+>­f­µ¶Öøh»ûíŸÿóÖ¶«««ËI™Ø €@a ¸+Ìz£Ô € € €ÛX “Éø…áŒ_ ^µ¹¹9Ëf³–N§ýbðš«h6³òò²0òcãZIee\8üȱ@II‰)à¦vX£æ¬¦fÔ.^ô`^ÆóŒ¿£Ö¬K{Îúˆº´ÂËXOO½O¯Ùe}}=áuÚFiiiŽKÇæ@ I€oì…T[”@@@¸zõª Ù… í/ÿò¯lvvÆ>úè#Þ-û…àTÚõô쎟{îY{ê©'Ã(ŽÎÎÎÌ@ ÷ÑÍ¿üË¿ìíîS699iï½÷žß`1oo¿ýN¸Á¢¼¼"´Ñ]]¦+öíÛg»wïA¿¶¶6oÃK˜&3÷UÃ@‚ pWPÕEa@@@¶³€FÙi4Çüü¼MLLØØØ˜]¹2lÓÓ3ıåå´_ð- Á¹l¶Ì/WÚèèUŸ®m<\nmm Z‹‰„ °5555>Ú®Æ×¯«í¯FF ]ñ6z9üNÓjöôô„À»»»Ãïi·5õÁV@B pWh5Fy@@@¶¥€‚v§OŸSc¾ð ö k‹‹æ9ó)3+mié·|ÊÌʰ¶ÒêjÆ.]ºâ£=.Ùùóß³ïÿ;xp¿ýñÿKŸŠ­ËvìØÁÈ»my±Ó p74jNIÓ^:t(Lm¬‘uºñBS®ªª 7R(À§Ÿ£×Üòñ €ù-@à.¿ë‡Ò!€ € € tÁW£6¦¦¦ììÙ³vìØ1ÿ}_ìðGìúý±Ö³Få-{PoÚƒy þüa_/iÞŸ·^ÛÐÐ.ûI €[( ©3Ã;´´´lá;±i@b pWLµÉ¾ € € €­ÀÊÊŠýìg¯…Qw'Nø0;Ûé¹Ïƒp_öÇzÏ÷y®ðœõ¼ê¿ßçOù(¼ÃþxÌ×Å[¶ýè}Ý»Þ0E[t1ÙÿHB@@< p—'A1@@@¸™€FÛ¥Ó Ü½j‡¿n33MþÔžòÀÜ¿ðG´+÷üó´¶–öàÝŠçRÏ—=p·hÿð/yà®Ç¾úÕß¾> äç¯à'@@¸×¬F}¯k€÷G@@@à Ú---Ù¼-//…œÉ(P§©1;<—z^_OÉØô;ökš¶_¯Ù§Ú\ô<ëAÀ´ÿ[£òÖ6<Ÿ@@@à^ 0âî^×ï € € €À-`µ‘‘ºâ?û³?ëA·¯øc«çjÏŸtz¯xåþ¼}ý»5›}߃ÿ¯­¬LÚôôtqW[[kÂR» IDATZƒ‰„ € €ù!À·óü¨J € € €ÀM²Ù¬ß2>-fÆqZÃN§ó ØiM»Û%=·Ês¥o#ÚNÖ·¥í@@@ Ÿ˜*3Ÿjƒ² € € € pƒÀúúviŸ"syC°M»:Ï Þ}Ò4™7òñ箬¬øÈ;­ÇT™¥ø@@{-@àî^×ï € € €ÀmJKKÔ–©TÊJJJ<¯ú+=§=ß.ø¦ç.…ç––¦LÛÒv”I € € _L•™_õAi@@@ø­A×ÞÞmµµuV^®)/G<õçõy>àùV§÷—ýïÇüuç­¾¾Öššš­¡¡ÁêêêBÏÿHB@@<¸Õ7û<)"Å@@@@`û h„]UU•ÕÖÖZMr---zàî’£TzÖÈ;¥h½»h^Ƨ<éyȃtS¬«ñà]ƒUVVZEE£î\†„ñ¢µ75åîêêj˜z7Z;s}dpI)¬Q¾ú·I € p{w·7â € € €Ü3]ðÖ¨;ïØïÈWìÌå7½L~±|¯?6zÖc¹ç¬gM9ìùŠgÌûÐGÙ•Úc²ž°-m—„Ä7åéé;þ¼ßP°dóó !€WWWÚ­žžëéé¶êêjÛ±c7 ÄÅæu €ÛJ€Àݶªnv@@@ 4RE»‡zÐÊåŒïÛÏGÜ•”ŒúôtC¶{w•õ÷ÚöíÛãП°ÎÎÎ0MfÁBPp¸gšóܹs688ho½õ–?~Ü&&æ}ÄÝœ¸[³¹¹no‹Jüçeq7ï#ðŽypïdÚÍÎΆõ5yä‘Ô»g;Á#€@Á ¤ÓiSžžžöïAxÛ3oo¿ý¶ŽŽz¾ZðûÇ @àŽc@@@Ðt™û÷ï£YæææLÁ/]ºâÅ_ôß-ûÅrÀSZ_ã.•2ÝRb»v=ë#íž°½{÷ÚƒjÄ^#»u(þ›PàNÓb¾üòËöú믇àÝÒR…·A»¼ ªõ :}‹)}wÖoXðÑxç¼ 7hNÝ8pàÀw›tçé ð‹ Úé»ÐÐÐýô§ë#~_}õu›™™ Søêû B pWȵGÙ@@@¶•@y¹FÔY¸ø­ ^ss³_  kKÍÍÍú…óµ0]Ê£v••U~q¼ÚGé=à£íö…õ¥tá¼¢¢b[™±³ \@mËüü|¸aàÊ•+vúôiŸsÅ/œwØÊJ£·;ø›4x¯ÛS> Xën.ø¿Oy»”õvªÜ_s&\hŸœœ4 Öºwz$!€w*°¼¼ìíJÖGþž÷)ÃÏØððˆ·-ç¼mš·±±¬-,¤üóï:wºEž‡@~ ¸ËÏz¡T € € €|L ºÈý裆ÑsºãüþàlqqÑ>üðC¿€¾.†WVVZ[[›uttX]]ÕÔÔ„€A»‘ò ¸](W°îòåËöÿøöýï߃sŸõ äÿ­¿z_HÿUlð¼ˆÓt¾ë£_ñÇW|꺋ö½ïýµO™ÙbŸýìgü]»vY}}½ÿ„Ü^@íÖÖ\ZZ²oûÛöŸÿóÿãß{²>ÊnÅÛ r[^>è7 dò5î&ýÆ¿HþKžË7×乿†ÍFëK=ä¿ßçëÝñ6éï}„Þš>|$¬KÕÓÓÚ¯^È?@OÐ4™ÿå¿|ÛŽ?îëûûõþýç·+ÿ“?¿Êó¬ç!Ï'=Ïy&!P¸î ·î(9 € € €a L1¤ã`@­XXXkÜ-/ûR¦¤¬ÓT—zŒuþã/$]L¯ô¬Ñx~‘=Ö¹cÄÝ/ ñ¸€nPÒ(ÝÉÉ __sÄÛ­uWãmŠFûöxV[3êY;BŽ@*pŽâ¯@Š € € € €ÀV 袹wssó>-]¹_@ïð·«õœò|³ J¤¿)+x×êÚÓ6?¿äyÞGÉ(HBn- µí쟘˜°ÁÁS>ò÷=o‡žõvè—ü…}ž5U¦Ú™1Ï$ŠC€À]qÔ#{ € € € €À– (x—Í*§|”‹FÜ•z¾UÐNEY_ëÎ_ê¯)÷¬×gCÖ_I €ÀíÔnhº^M•©u6§§§ý%a·Ë³n"ÐѺšþ# "Ðm1$@@@@@à´nf}}½¯¥Ùh55Ÿ¢wØ×­ÓÅó%Ï+Ÿøšõ_jTž3ïA»1ͤ¯k×Ö¶Ó$@àv Ü¥Óé¸Sà=éæMÁ[íùv7¬¿‚ÿ#PHî ©¶(+ € € € €wY@»¦¦&kkkµÚÚUÜ]A8³e/‰‚s7í¢¿-zžõ<⯷––FÏ-V^^î¿#!€·ˆwKKKFëjÄ]£gMÙKàîÖ‚üµ¸µ¥k2#€ € € € p—R©”µ¶¶Zgg§54ÔyÐ.ëyÔßý„çNÏž5& Æ¥ýgó†<+ÈwÞJ}fÍŠŠrkoo¹¢BÏ'!€·Ðj/ªªªL#uÕ­­-yžðj\R4 ïÖÛᯒ»Bª-ÊŠ € € € €À]ÐÅò'žxÂúúúlhhÈ~ô£U[]}ÅG¿\ò’ô èàíž[mf·õö¶ÙÌÌŒïf}Ô]Æób(^iéšO‘iVW×à¹ÞŸÛ¦Ùlnn £fmw¯j‘÷E 0¢QwZgsyyÙΟ¿è7¬z›³`‹‹}§êüÚÊJÖo¨öýÍz4æ„=Šªò·áÎpoÃJg—@@@@ˆ# QwÊ­­­aê̪ªJ ;딺ººÂt˜ òiM¼hš;š!!€qÔ~ÔÕÕ…›Z[[¬ƒwg¯æYä¯#îò·n( € € € € € €À6 p·*›]E@@@@@È_wù[7” @@@@@@` ¸ÛF•Í®"€ € € € € €ä¯@Yþ’!€ € € €ñVVVL9“ÉØââ¢e³Yÿ9kkkk–J•z.±ŠŠrÏVZZjÕÕÕñÞˆW!€ € Cw9ÄdS € € € CCCvùòeµ7ßÚ.e ¶ÿþ0ꮪªÊJJJŠÒ†B@Èwù_G”@@@î@@;ëÎ;gGµwß}×xóvöì¬O—™²éé]>efI˜Bsf&kéôE…7dþ»UÛ±c‡=õÔ“>¯†àÝxó@@Ü ¸Ë½)[D@@@{  À‚v/½ô’½üòËöÚk¯Ùòr•O¹ßKÓàA»½þXæÓf^öÇ;þ´?ž°öö›˜˜²‡~È:wþ € €w]€ÀÝ]'ç @Ø•••p‡ùâ⢵µµYGGÇÖ¼[Em! 6åÌ™3aJ¹«­­ÝûÍN"€ÀÖ lUÛ’Éd|4Ý´MMMÙûï¿‚v¿ó6ìß¡N[[{Î=·{.õ<ãyÁó)ÏÚüü‚}ôÑi_ã.eÇ¿o===ÖÛÛ[ômßòò²ùþÏ›ÖL§ÓašQG ëþUTTxP³ÝZZZÂúåååúÓ¶J ÏÌÌ—õ53Á¢´´Ô­¹¹9ü[ë#’î¾€Ž]²UÚ½{·mÇcôî«óŽ €[-À·Š­fû €Ü%]»páB¸`¥·$pw—àyŠT@mÊàà`˜NNm ÜiE³[Üe­j[²Ùlø4<{öl˜ÚèSŸú. €@lµ)GŽ £/>ýéOÛŽ;bo‹"€‘ÀVµ-ºÉ@Sdž8qÒ)£VZªõìó€Üoù[7y®ò¼1h§é’H¿ç^ÏuþšÞæeìèÑw<8jO=õ¤·}=þ·âIkkkᆌ7ß|Ó^|ñE»råŠýàïß#ðP`S&š9å~WüqѧÉlµ¦¦f{衇ìOÿôôé!BŸP¬SCêXRðNk$¾ôÒËaF‹W_ýY¸‰ec`H£ëÊÊÊCþµ_û'öÜsÏÚÎ;í3ŸùL©èx¤»  éqõ}Eé7~ã7¬¾¾þ.¼+o €ÀÖ ¸ÛZ_¶Ž €À]Ð…M壼ñ¢Â]+o„E%°±MÑÏ$@ [Õ¶DÛÕè›LFm–.whZLªóù/?´ó_…¤‘QÊzN…l4âl%i¢‘WáiEò?M÷8;;FÚizÌññi_¿­ÔG‘Uyà²-””(pWâ¿[öÀç‚?_>óþÜ)8l4¬w:Ž´žÝúÚã¾þ߸ï÷Œâ”‘Ž¥ê`c¶>*¯´tÕR©UÎl°ÑÔ¢sssnYjšZ”©3k‹SôÙ×Ûèg €Å @à®j‘}@@@@` (Ȧµ®æææ=°”ò€I‹g ¼»“i Ë=à×ê›Y߯RØÎêjqM»§›»^}õU;wîœýøÇ?¶^xÁ÷¹Ïoúúc7Úé©gýQ£îä¥À”FÜ-ø(Ä¿q—ÙÛoŸ·ûoÿ7m×mÿîßýïÖÙÙTþ¤¢Iš*ô;ßùŽO9èûû®?~§ ít›ÿÞ÷Q#7Ÿö¬Ñ›‹žÜïÏoØ+¯œò‘šÿÁÚL´Öšf¿PðŽ„ €lV€ÀÝfÅx> € € €ä€F7Eùç#ì4GùÆi2?©økþzåh;ŸôœÂý]4šLkÛMMÍúHº¥k;ÓéÝž×§ Õ4™ë;=.ú(Ä6\ÕzkÞ4J¯¢¢,ŒºÓ ©”‚¤wbë›Êó$Ÿl6ÖµÓ¯sÀÍx`S£1eÔê¹Ï³FÝ-\Ë£þØá6gƒF%jýÀ††FèWà×w”„ €wI€ÀÝ]‚æm@@@@`k4mcGGG˜æðìÙ‹4¹äÓæ ù›x^õ¬ÑR DݘVüúû„”:iµµ¥ÖÛ»×sOÑ–Òˆ»Ã‡ß°cÇÞõQwÚç_ò|Ðó¯{nö¼¾¶ÿàIVš:3뎿âž=>òîC»xñÄ[²S§N…é${{{ÝL¯+줛Z+MAM­—¶¾ÆëþOûþïöû5Ï5ž=kD¢FÒéçO{~Ès‡0Ë}mÄŒd|Ѻíé§Ÿ. ß9 €Üewwœ·C@@@Ü häWCCƒ577[uµ.uhDÔŒçIÏ1M›xiÿÛ¼]fm»í¶ÅŒ©©iìXÞ÷6|KA.[¶´¸=]©Xú‘€Ë?F0³Þw…ùa·JÁò¥´n»Å‹ç 3_NÌB$hG`³£X&t|13oZÁuTZ´è¾âogTÜÁ|¸,%ú2ÿ•€$  H`e0p·2(û H@€$  H@€:F`µÕVK›m¶Yž)7kÖ Eàd"HuW±ÄãƒE@e»â¹›³¦XÞ` ;fãÝPlçÁ•'‹ ß3EànÍ´ãŽÛ§M6Ù$­³Î:ŵá“"=ýôÓÅ’KþñÞ¶‹/Çl±>Õû®0cÆ"yGåÀËJŽ7nØÌ*ã}t,“ÉL»çŸg&‰¥B™qÇ'3쥗ó¾ðÂóEðoq8þ{ÁÉwÜ5"æ5 H@€ê0pWŸW$ÐtØè4‘XŠƒÎ£9×Zk­â½ Í:©–…J@ÀÀ²e˲£%‹–/_^,c´t|+¿‚$0PÐf )Ø+jÊ@ý>WË@§´%–:$è²Î:cÓ[lžyä™"³¼Ð²'Š ÊEì¡æ¼b£ÏõtÞ˜q7jÔ’byÍ—Ò”)›¦I“&æY{ôÙÐ>>‡KZºtYþ*£G*¾Á©'‹à$,b–Y±Û#-/Îûl¶ŸùûỽœøÎ,·Ê’˜¸Ïêͺ+.%ìnø>[üý¬’gÙñ·gÜÁ§s‰v³$ƒyçžfÉÀ`%€~£èùpú¿{°ò¶^'`à®óŒ}‚º ¬ã?’è ðÉ#<’ßÅÀ,ðx©ºI@o,Z´¨Aýdv0ZøÞ{YúÉ$ H wÐll”yóæ¥ÕWwõ®<ï’€$Nk ƒ ¶ÚjzzÏ{Þ™.ºè’tÅ3 -›S¼“mæ?OÆ@É—ƒ3£G¯’V[mTža÷æ7Ÿw,»I€m8]^"Jk¯½vÁbIÑ/½­øE˜yˆÍÈûÜê¥EÅ‚väÿ{qïèü>8ø<øàƒyÙÌzw•ó¼ßîñÇÏïî[ñ޾NJêß^l,'Êûão§Øí‘î+ÎÌ-‚v¥1cF7£2›eõ¸ÁýD{…tÿý÷‹¿Ç~Bc1Qðµò~V4Ý$¡NÀÁPÿ­ÿ"@àç£øØxàüùØcåe]x©ºI@o𞑇~8;ÄÚ]{íµ½)Æ{$  dhÊÂ… sÇ÷–[nI¼ûÇ$ H ¯:­-ô±P-Y²¤Xúðñ"8Ŭ¹g‹jãØ'XÁ——gÒuu­V\SôÑ–YWÏæ–,½9Ü+2°ä /,/ú âÂ%4«Øoô}ÉËŒ²û‹íÅ<û¾ûîËŒù=Y9f¨'fláìåÿ:fl¼œ->n-6ÞHð®Q_ý®âú¼"¨ùX±½gïÍ™3';‘‹ ¦˜?~¶WxÄìÙ³óÀè>΢% AJ€ `f€P ¼að +›ñ9œâ ÒŸÀjõ3UŠ@ÂËëõõsÁ' ô$ÀþóŸs°î‡?üaºóÎ;³QÉ,;þ#q™ÌžÌ<# ´N –+Â`]c5Š%ŸÖlýfsJ@¨"€¦àüÆ Î’ÞÌ@1I@è+•¡-<íbÀäòåÏ”®â¸ö’—áÈ£O†ÖÑ'c?Î÷õû¦ûá@@óå`V-¸Ä$xÇûë½çŽ€'üXNó©¼äºë®ÛÍj8 >… 64;ÌÞzy¦I6vð-vk&–eû{ñ·ó\ÁfT?~¼}üš¬ú÷$A×¶Fîß'Xš$0 ãhxè8>‘w¾óé”SNIl°AÖäáðÿÕPø-¬cÿˆáUýSš¥H@M àôb©©õÖ[¯Û÷?ަØÌ  RŸ@ƒ IDAT´@GÓ:ëðž“$ ¾@SÆ×÷‚,A@‰ÀÊОÁFß«ˆ/™þA€`$ýÐö+6p ýÙuµ¾?lø{aÃÙÛ~bÆb£Y‹í—è­à7Ó^i•¹$0œ  ã ¼ac3|þÏc=6IC€»¡ö‹Yß!M€ÿ,¶ß~ûâ¥çSò(G–ÇÜpà s ÿXüdHÿ¼V^€$  H@€$  H@ ðð¿2cË-·L'NÌÁ<'M Ðâc{MÀÀ]¯Ñy£Ú'@`Žå2˜q·õÖ[§6Ú(Mž<9a”Øp]’¥}RÞ! H@€$  H@€$  H uîÚágeƯi9ßq7¸~k3°þ:ë-óÎÖÍ)ÛüÇâèðàW”€$  H@€$  H@€:Bÿ*~Ö˜$Ñ‘‡X¨:LÀÀ]‡[¼$  H@€$  H@€$  H@€Z!ÀÛ…M€$  H@€$  H@€$  H@À0p7À?€—€$  H@€$  H@€$  H@ Üùw  H@€$  H@€$  H@€$ A@ÀÀÝ ø¬‚$  H@€$  H@€$  H@€F‹@è]]]¹ÐåË—§gŸ}6½øâ‹é¹çžËç^zé¥ü9zôè4jÔ¨´ÖZk%öÇŒ“·þ¯%J@+‹mŸ6þÌ3Ϥ¿ÿýï¹íÓþc£\§í;¶ûsÕUWm©Š/¼ðBâ¡-”Å9Ò*«¬’7´„òÖXc¼ñ,¶Võ¤î|¢]”Ï>ϤLž±Új«åc¾ƒIè ÚßóÏ?ŸÛí’vÇ\c‹vOÇ– ]®½öÚ¹ÍÓV¹Þ(¡”³téÒ¬Y¡[ÜeSNhVØ.­j ¶umá;ð u¥´ŠýÕW_=ïç‹þ# ô;Ú!mpÙ²ey?þ瓚ÁghJ´ÑølT1Ú;šBù¡'|F¹´ù°SÖYg¬´ÿ¸Þ¨l®…‚¶°¡)Q÷Ð'´„2©/û& H`ð ½FcÉ’%¶ÌFmԴ͆ÝB_ˆ-t†oˆŽ°õÅnAÃÐê¶Ï …Ý‚†ñ Ží e4þ# H@"`à®C`-vdÀˆ¤Ó:sæÌtÕUW¥E‹¥ë¯¿>8Ç0ò6ÜpôÞzë¥Ã;,Mž<9mµÕVi‹-¶Èä‘MÏo/¡IçQ:¡ûÛßÒ<žx≴páÂôØce 3ˆÐÉ;þøãÓ+^ñŠtÔQG¥7Þ¸é—FSzè¡ì »âŠ+Òå—_žËºÿþûsç]ÁA5}úôDÇw÷ÝwOûï¿ZwÝuóÖŠSŒºÎ˜1#=øàƒéÊ+¯ÌßeñâÅÙñ>nܸÜI}å+_™ØÐ­#Ž8"ŸÃYf’€ú—ÀÓO?n½õÖôÔSO¥K.¹$ÒÞ9S-¡íá@BS6ÝtÓ¬)Ç{lZýõÓ–[n™pŒ×K8¿Ðl”sÎ9'Í›7/-X° kzƒƒMÙ~ûííÿ¸ãŽKÓ¦MëÖ”zå–Ïß~ûíiΜ9éÑGM_|qÖÈÇ<;Û©õÞk¯½²M„fí¼óÎù™è™Iè_Ø$´÷¹sç¦óÏ??ï£h:Ã'ížmÍ5×L“&MJ'NÌm»bÏ=÷ÌöE½Zq?E§|ö±+ÐlÊÅ&ÁN™0aB:ñijVÑ'j%À† uÙe—åònºé¦tã7æ¾߉òéWQþ«^õª4eÊ”¬'èJ|§zõö¼$°òÐ^éà ?øÁr_ƒöqÚi§åþK½ÚD_ˆ2®»îºD¨™Ý‚mDÙhC+é¶ÛnKlô…Êv <ÊÁnÁ¾*÷…¨¿vK+tÍ# H@íÐÓÖ.1óK   JÝïæÏŸŸ>ù8ÚbË'Ÿ|2‹óøñãsg˜Ñ¡t–MÀÐ#ÀˆLFi⤦mÓÎÃQ†.0r“Ž*?Îãp‘â¾-åâ£sJ9h ûè e†“<<›üä¡8¯˜ÙK‡çU­D9Ô›Ž0Î{îå9èÁHÊ‹ å3£‡@%Î9ôjƒ 6¨[v­çyNhN€öL›DGhw8Ö±'ÚE›E?ÈG{d€û´aÚ+Žq4†à^up|´mt„í‘GéÖ—jMá:ÏDaγp\a˰ÕJ<ŸºQo1 |êÍFÜKÊå™S§NÍù(›Àc½²k=Ïs@s´7ú"´7þÇa= ]r„­€]Áuöq`sí5m´ì¤¦=c' )?üpn÷hJèçC/øDSÂNáå¡U‘§ú›P>D]ö¡ 4…ºc¿°Y¨7yø.ÑPl65¥š¬ÇXyh›´eÚ1ýÚ0m•vLûçÿýh˵jE[G7¸/îå3úWå¾çÃn ­BgHõúBe»%úBe»…ò#öV¹/DÙ ¨Wv­ïã9 H@@+ ܵBÉ<hƒÛsÏ=7Ý{ï½éž{îɳj=ôмd :ŒÎ»ï¾;šýë_³øú׿>3ºu§vêádk£ f•€€::£8º˜a{óÍ7ç€9è›l²Iv ÑÁ$ÕsPUWçŽ'Êýñœ˜ÁBÇûÑ‹£>:;ÐÐ:©³fÍÊŽr„Œh}ãߘõ‡‘¦µWt„ï¼óÎÄèuìgŸ}vÖªm¶Ù&N%ðGpŽ=´ëüc~6ß}û§ú§–G²V?% Úp1ó•€íÙm·ÝràŸ`<3Öh÷¡hZñýï?;×?øÁæÙü1k&žB~œN8¶Ð”;[˜Âì4†²iãÌpAÎ<óÌìXÞAWpà3ب:¡)¬6€fp/-fîQïiŬ=Êç;áhG/©7Ž~êÂó9昖fàT?Ûc H >ú(Ø 8ϱKD´Ï>ûd§9önô Ý¡=2Xà·¿ýmn»è3M<ðÀ|<‰rѶÓO?=ø°QpÆ£)¬*åüÃN¡ôï|'ÛùÈGÒ¶Ûn[wiKtM …Ot„™uÔûŠï„†Poì™°…˜õ·÷Þ{gíD³LÀÀ HO[ÆGÂ,´…AEèvC£ÀzØ-´ï°[øØe»…|h\ÙnaÀ6 ¼2…j»åÚk¯ÍzT¶[¨+v v ºRî a·àËiuV_ùÙîK@€0p׈Ž×$Ð&œ\Œ£3J§‘Î)&ŽíÍ7ß<;Ùp‚“8Æ&†!£SéÔÒ åÎ9“$0ôÐa¤óSœÔlŒ"¥cJûnÔ1­õ)“N"Žmœh, …“*–ÅÛn»íò,g8ú ‘—Îå]wÝ•Uè4p1ò”gáèB·ÈO^FÕãáÇHu>#€wß}÷uwV)b?‚hÇ|?“$Ð?h›8¶áMÛ¢ cC°tš‚mAÛ£í3z}n±üÚƒNŸöŒîT/—‰¦P.3òÞrË-yÉ'ò2ë MáY”K>ìÊŶá<š@Ð2áeM MáÙÔÝ`ä: ­ €Çr˜Ô­ÁÑÏRWh ù9ÏÆwçYì›$ þ%@Û¢-¢ô?À3°7m;}` ƒ¾ÐÑ>Y2³œÈýÁ=è û”Ël|–ßqÇs¹”ç:6v :€]CÙÕÁ54-BS8„N° „^¡…8×±A°·Ð’k®¹&Ô£<œêjJùs_+Ÿ¾´>m˜ ÚC@¬™ï#ì„Ý‚=„n”í–Т²ÝÂsô„Ý‚ÆUb¬e·D_¨l· ›Ø4è3Ë}!´Ë¾ÐÊÿ›ò‰€Fw#áWö;®t1BqrÑ)e£³Êì¹ø¤C‰ ãÑ.#¶0X¹Ž&FåVegØJù>Dè5Ú+훎$£:ÅN›gd'mœw&\xá…m=ƒŽ Î-:‹è7F¦|ðÁÙñ†CŠstzq„á`§CÉ»˜­Cç“wLѱÝu×]³“,*@Ù”‰#ŒN.:¶õÖ[§Í6Û¬û]6ñî:º‘ŸÎ6yq¢¡]t^é´2Ò”Ž­Iè;ëûí·_v¢ãX¢ã¬FSpvÑ&i‡´}œîœcÆ vm”`<Ÿ8Æ™%‰v|à 7d›…öc½b€m­àYØ*Üøá‡g>#äq¸aß0K­@ãÐ6uÄAF™hÎyê·Ã;ä²™õ‚FâC/Ñ ôƒÑ÷ @»Ðêƒ}D^œòh‹Iè;‚ó$>Ñ´ƒÿãù›¶L[£Óö€v0;‚vmA›ÆÖ('aCàÐÆqNÙh Á;ôdZ10‘g±¡k”ÁŒßŸÿüçy@Žxt{]‰D~ô @S˜UL½(ƒÙvh udõF4I=ÑAô¢/†¦pº£¦a?%°òÐ&±hŸüŸV ;èC®—Ân¡‡Ý "úBe»Í@ŸÊv Á¾°[L€]Q¶[¢ov õоPÙnÁ.BcУÐA>Ãn‰¾vK½_Ñó€$ÐîzCÍ{$PƒFÎo:Œ8¡p²ï²Ë.éÈ#Ìb:˜e‡6/fÇ°Ä¹Ž¡Jg—‘¬8®YŠÎÀ] О’À %+œBïxÇ;*jI»fÃÁÅŠ p<Íž=;Ïâ¥³ŠŽà„:ᄲs2#ál#pHÇ–Yz,Å‹1(Ç/RüèNtVÑ,–•a&ÏA”gܰÁ€HtŒItŠItÀqºÅ{lÐ,Ê.ë\Îè?@¯à`zÝë^—mÚb#g3í]`f ËuÓ. øÓN£íF%Д™3gvîpDñœ=öØ#*b`Q$4§83o.ºè¢lç ),[‡Ã@bhuˆÀšÅ3˜]ÇHwl4%ô'ÊGƒ¨+Žý3fd§ß›‡˜Nö å§úN€€]ï°š%‚îÞè« -8¿ ¸a_”³hXšyýêi mMÂQÖYgema•  =Õ;4G9š‚Ó[‡:ûåDà¼èyÐ)01CM¡_…Þ5ÒÒryîK@ýG€ÁDçŸ~n‡ à!FŸþíÿG½v ö}!Ú1ö}!t£‘ÝÂàƒ°[ „MR¶[¢/T¶[˜ÅËêÕv ÚE~ú:èIô…Ðwô…´[êýŠž—€$ Þ0p×jÞ#ÜáüÆðdŸã¥tŒ1.1N«ç±Ç»Fg“O:°8ËjÝW]ŽÇÀà&€C›­Ý£Íq˜Ñ9dd<º‚CŠNjup-AoÐ òà Çù6Åù¨e£5t‚p@>œê1;¦Ü Ž{ø¤\:ËhÏ££MùÜÏhvœù& H ïhc´'Úyu[¯U:ùq&1Ú'm“v‰“)Rh z‚M‰Y(´ùj›ƒ6ÎÌ7ô‹Õ@™ÌApÒGâ<˜pÞãXã˜Qõä ']äOž‡D`’@#ÏcP#Ø™Y3yòd,?%0h“ôiØØ/§°mhïØ´]‚ù´[œ×µ4‡y̦e™;òÐw¢,fД}4%fü‘‡à°Ej%ÊCS¨/ÎzîÁÆASИaXë^ÏI@ýK›{m pG[f€áG‘Û&ÿïÓÎi§õRÙn¡Ïv ~’ZSm·P »ý©¶[¢/T¶[¢/TmQGÎU÷…ø~ÑÒn©÷Kz^€zCÀÀ]o¨yj‡Ž0ö1$qX±L ·êÎ.E`øáXÇY³í)Љã§U-ƒ±Æã=% 3tbé¬â|ç=˜ïaŽ®ÐiEcªZC€ŽD>FÊÓÅñÅì´)e£WŒ gÀYFŠâ8£S]oæ\<›÷èeÒ'µ2‚?žï§$ИvC›C g5sœH̲E?ØHeMaio–½Ü}÷ݳ£Y8õ4';u!ø†f0°›…: -@§p’“'fÞ0jòkÙ3aQ6šÅ1N¼pôíµ×^Q¼ŸÀ í7 Ü¡´Yì4à€b¹rõ4…6;ÜhšM¦”Ð64…4­è7¡)èE­„Ž‘[ˆw$ÊESÐHf&›$ •C;m`Ðmþ ÿß³ 8×v‘êÙ8Õv 6}! ­Ø-ÑÂna`SµÝ}¡²Ý}¡zv ÏF£/ÈwÑn‚I€ú‹€»þ"i9#žF N26Œ<œm8Áë9¿†‘Šƒ yIìcbˆ– Ë|Ñ$ C€öÏèpW|â|GW˜zQ º‚£<äÅOðŽO:Ét‚ÉÃg8÷y ½â–®¡ŒZ mâ:u!?e…ö•ƒµîõœ$ÐÚW«‰ö A{fÃApV“Д¸†¦Ð^iÇ8Ø#O­g…¦Ðî±YpPÑæ)ƒ2CSØÇ~áZhÏÇQÆsê}—Xb7>©ƒ˜¸—2M@ç ÐŽI|ÒîÐÚ2³á|a/03–€kíÛ]A¸— :ÑLSЧdÀ€Å('ê^P>šÂÆ>çÐ!4}¨•ȃ–<Ø)”¦` ©)µ¨yNýO ìwl´C‚úîèk Ñ׈v_] ÚkÙn¡Œ°[êie ”D_=CÇ(“瑇ýè …Ý‚~D_ˆ<µRu_ˆ<”ϦÆÔ"æ9 H@è-w½%ç}¨"€±Ç(2FmÑiÅPÄiUö|È5FlÑ Ž¼±,Ù€ad­{=' oh36:•èËÂL+F’Ó¡l”Ð4…2šDŒh§óKG:pž‘ì8´H8㙊s®žÓ-eg1ð§e¢_& H`å h‡NЖç3li÷Ûn»mÖ ´€„¦ÐVi÷ßp.¡)èD#÷†½ïÐd¹*Þk¶ Îñ°ƒxZCB«“¾–=„S ›‰D=ÑòbOQ?í ŒÆ$Ð1á0§½±O›ÆNÀfàÝv,eÇ'sÌ1Çäwб"‰@3wþ@XR—­™¦`c0ã]˜3gN. §7ÏF( A ØØ'/KÔ¡)صyо úƒ¦`›P¶šR‹šç$пÐì¶óÎ;/¿Ÿ’™hoûÛ³>`{¯e”kRm·D_»¥•¾~žƒÍ†V…Æ¡!”}¡°[°E¢/T«~èúVî a·D_H)ÿ‚îK@@_ ¸ë+Aï—À?ÐA¤³‰1Hg£#®Y"/Ó0 £Ê2I@#—Z@ç}ZAG³mASÈѧeEy¡Y8äÈÇ=hR³òÉG¹”ÃåŽÜ_Ío.!@û#Ʋ·8©iÓ8¯qTl'Ñ>ÉšBMa¿Y*Û+¡)ÕºBùØA¤Ðî §Ö3âÙäA{ø¤6“$Ð9´_t#ÿ|FÛc–]èÑÚ%Kn´C7H‘?Õ¡)a{4«9ù¢¬²¦„^„f…´£)ä M‰r¢žÍêåu H oÐì6b´=t„@7þ¯ÿû=©ÜvÙ'¡­ö…zc· ÍúBQ÷Ð$î ílô}¼& H@h—€»v‰™_u`LÆrt¼Š™+õFƒF{,÷€qH~Ž1lqÊ(.:±& H`d Ó‹¦°±>Ðée6o+Ú‚¦0Ò<ò¢-Q³åÐ,ÞçåGG˜ûØçyºE]è3Ó'–²jt×$ Î`æìÏþó¼#ʱ>øà´ãŽ;¦iÅ,]RYShÿ¡)Ìúo%X½B0à~tèGhMØAœ£lt„ë­$ò¡)hzB½´ƒZ!g ôŽý3Î8#¿êÒK/Í3F(‰¶LÛÃͲv‡rHž%sä‘Gæºh  ­bK„¦Ðn[ÑÝ´w4ýáyØ”ÚQÖ¬ÐlšV4…üäÙw”‹­¢¦äŸÎ$ÐQhË~ô£<›ÿÓ±CöØcô†7¼!·wÚx+©¬¡1ô…ИèßÔ+ @«è ¡Ü}!ú0Õ}¡Ðò²µRÇè Qnô…Ô˜z¿ˆç%  H 7 Üõ†š÷H è䆃½Õ‘dt\Ù0#aðiô ?%02 „¦ ì“Ð ´…Ïf Mi¦-”fñÄgì7{å³q?›IX¹p…#*–ÄőįrOÕ3£)¡½µWÊÅ·ŽcžQ.¿U=‰ú¨)+÷oȧ\ü¿Í²¹Û™Ã,;Ú.)>™Á‹›…8ÊqfG›æþÐî)·áÈÃùz)lˆ¸öDóÉå·R6eF~ö)3ÊåØ$ ô?Ú)6 Aø… æ ÝÀ&!€F ½Dy¡1ì“ÐÞÚ-Ü_ÖÊä¸l·íhUgBÇÊåR†I€$Ð ÜõEË€$  H@ÀJ&póÍ7§[n¹%ÝqÇiÆŒy†ÌQG•—³Ûm·ÝÒ´b”{³Qé+¹Ê>N$˜µòú׿>ϘÛgŸ}òŒœî̤cÆÌí·ßžßQuÁäÿ¼¯jË-·LtP~×Ü ùVC$B7X€wc2 í¤“NJ[mµU~?æ ©¦Õ€$  î†ÌOeE‡Åè­Ö¬ÞµòF9Íîõº$0¼ TkAèE;úR&T]^óÙ›õ‰rzS†÷H@íÀ¹Îñ ¤»ï¾;Í;7Ï–a6 Žõ‰'æ÷Q±]9U·ÕhÃå<õö#oYªË«>®WV­óåòûRN­²=' ô$À,˜7Þ8ÏáÝu,IÐŽYv̾Cgî¿ÿþ4{öì|3ZC;ÝsÏ=»û9Õm5Úqϧõ“$Ðh:Aû§ÍÑÙç“@ï‡ÂéNÙv>ø`zòÉ'ó;ïxŸ7yc MjHÛ¥ ³µ¢)å¼´u4%lŽ©_h å—5…klõuá{`Qå°©)õˆy^½'@ÛdcyÌ™3gæAE›o¾y¶Ð’xï%m>ýÚ(÷EŠ~í”khB¹íFîm”Ân‰¾yCS¢<ž}!®Ç÷ˆz5³[Ð9¾“v ôL€$Ð î:AÕ2G$ A K^˜Œ±GЮ™A (Œ½rr(ƒ²ì\ŽÈ?%¿´2:‹èûÑE/ZÑ4(ò¢%”Qv\qŽcô†k”W´¨‘ÑY í¢êÉ=& H ³hŸs‹ Ý¥—^š7‚w“&MJÇ|ÚtÓMÓ{ì‘ßoW] ÚyØ´UÚp8À(³Y {@ÂÉ;ÊDx)ô„O®ñüF‰|hJ¹ž4¨QY^“€š }5zçÔ¶Ûn›î½÷ÞìŒàÒ_ÿú×<‹æ‘GIÓ¦MËv Á½p‚‡­h¦)Ø48ÔióìSf £!ÑîÑŽÙHeMAšÙaQ>ºõlNÆ@;hïØ>úhºøâ‹»ül°Aš0aBÜQm>:A›æ^Ú(‰28OÛf‹¶‹ÄqØ-ÍHS^µÝšZ@™ìײ[¨W3»%úB䣜²~ñ|“$  H ¯ Üõ• ÷KàèdÒyÅðc4*Æd3ƒc”+/…ÇåÃrØ¢ã*d H`äˆÎ$ATèzÁû"ЋF -!ÚB§’Ž$åPfè ŸèZƒ³ŒDÞgžy&çgV?‡Ž,[¹Ãå4ëàV—å±$Ð:Ú5N1f¾àDŸ[ïH,u7uêÔ´É&›¤É“'g½Èªþ)k m54…6OÛo”Â^AاÍGÀ®¬)a¿ð,:Ä=è :yËÏÂV ͉GÝBSjå/ßë¾$ÐY´Gfå±±O[¥ÍbÐ>±/ЂÐô¤UMABhóawD»GGÊšRÖ¡È_ëÛGýød£\òëT¯EËsè;lþÿ¦½ñÿ>:–̤}Ïš5+ÏÖ­~ Ki’gÑ¢E9?}‹›nº)÷1˜¡ÇFßeÝu×Ím74†¾ó¥Ð úB죔‡¾„ÆðÉyt&ìÊ¥|ô¢žÝRÝ¢nQN”ݨnÎãvÓ IDAT^“€$  ´JÀÀ]«¤Ì'&èâ<ã“¥düñì\ gXƒåb¸öØc呬8â8ÆH¤F¨Q–I™p„m´ÑF¹3Kç•Î#zAçQðZ‚¦Ì›7/ë å°TMtB¹Mâ=Xt€o¿ýö\mî¡ÓM”:T'òÐ f€nÊa¶Ê7I@!@»œ1cFºë®»ò™Ì¸Ûk¯½ÒÞð†´õÖ[çÏõÖ[/;¦jÕ€öL›öMÛGSpÈ—GÁ׺7ìœlìÓÞÇ—Ÿ¶JØA8ÆB Љ¹E€±ìø/—3íé§ŸÎ84 MÁþÁb”~”]¾Ç} H`åÀ`Pm•¶ÃšvÍ’x´Q4…e3ió\›?~¶Sši N~ô„÷tbã 'èW $âR&Z@¹ì£=äGS°;p¶W'ò )ÔMa?ÊÁRSª‰y,¾ O[ãÿpÚíô‚ .Ȳßýîwݲò“Ðîã= z꩹NŸ>=±ÔæöÛoŸþõ_ÿ5kZ}!lŠ-¶Ø¢\\ý°[¢/„ÝB_ A¢/„NÐŽè Å€…ráÔ7R’7ì–è ©1eZîK@@_ è+Aï—À?àLǤs‰#dž[ŒÃõ×_¿‡ÑŠAI€N. ù0Jé¸Ò­ì¸$020b]AÐ4„N1çùDkHä)'´'‚kŒbå:N5î/ç¥ÊE·è˜¢7Œ2Å‘F§G]­Ä³éóÎê@^Ê`‹Žp­û<' ôŽíŒ¥é¹~÷Ýwç¥ëhã8Íi§[mµUþ¤㪗ʚ‚à(£=3‹„ç§ÚöÀ±ÆópÆ-^¼8_¥¯È }?~|vÂᣂüØ8ãj9Ù°ƒÐò…®¡)1Ø ¬Yñ?% •G]ˆ™q´WÚ5ÿ×£51ÓŽ}Ú>ZÝA_&4…üeÀéÂŒœÞh ÚŬ>ˉò)m@S('úMÕyã>t MA׸çDS(KM R~J ÿЮÐ| .äÿüf‰¶Êà¡ÐÚ*Á/Ú6«`gÐf± ذ["@HûÆÏÒŠÝ‚&¡C”Ge=¢ÞÑ »݈¾P=»›¥^_HiöË{]€Ú!`à®Zæ•@t.wØa‡lpþå/ÉN.Fk]wÝuÙxÝ}÷ݳÑY.cóæ›oN·Þzk6\yÏöÍ6Û,‘©& H`ä ó‡Œ‘§8ÁXïž{îÉï°Â‘NG”ë‘Мë8¶ÈËLºwÞ9½ò•¯ÌÎ}t*e3šgïÈ¢ÃMGôꫯÎepO¹ì¸]»öÚks=pâá°cD,ïÖjô®œ¸ßO H =8¸y·Î;ï¼Ã1ÆL»<0í¹çžÙÑUköIõ“BS¶Ûn»\ÎC=”ܱT:PÖ 4Ç:ÚÃû®Ðt[ÙAŽÛl³M΋®pLÐîŠ+®ÈZ³Ûn»ÕµƒÈÇjh ÷î´ÓNÙaW®KõwñXè<ôçþûïÏ6vmgzï9Æñ½ãŽ;æ@3‚Ñ‹ÐÚ0Z‰B\Çaçwf];è ƒrßM)'nh Ú†.àp§ÏDÀû„™ÆÕ Ç>}+ô {…{(MafšRMÌc ô}Úíõƒü`î³”dÕO HGàíøCî³Ð^±7Þö¶·å2hïðP£½c·¤Cà¿ }¡fvKô…°[¶ÜrËvKô…ÂnÁ.оP=»¥º/ĽÑRcªm%  H /Œ ô…ž÷J D€Ž+Æ%F'L Xœà8¢bö†Á8ŒU MFtѱÅÉNb*y¼¥G»+ "´oÚ<hÇ8¾pxÑîãΫx×#ŒC?HhšAG'Î3t…ÑäŒôD'p qÏ¡<œûth àqŒq/e”ì”Öà£Ã‰~QÎ4ÊıF~žÏ'eñb´;u l‚uÜϧƒ âWôS}'€=ÁLœÔ`Ãn`”:mg46û8®ÐZ)Úp\ã˜Ù'8¸q>ñ tM¡£ eMáš‚n0[2)ƒOêŠþð=Ð>Ê'p‡>VkJ¹üxŽŸ@ï„‚½@Û¢F{dŸkl´u4‚ÿóÙÐ!lÚ}ôS¦Àf!(†¶Üqǹƒ¦`OÐæ¹‡2Ièm;…6Ïs"X=‹ŽòÑÊ@S(Û†ºS>u"ß„ÞpŽòÑêO™Ø(l”£¦dTþ#~%@»¢ýó8³å°hóhJu - -Ó>Ñî%Ñ_a í¡<Ê»…{é qOô…Ð…hÛ\GÊv Ç”ƒÝB_¨¬ìG_(ì–˜ }!ÊFcÈKYØ-èvK­¾P¹üêïî±$  H ]îÚ%f~ Ô!€AÇ(3œjŒ¸ÂÁM§ñ§?ýi6@1$1üXN£ï¶ÛnËFå•W^™g¼§f×]wÍ3kbÔZGyZÄhßÌJ ;@œStbcD)PœVäåEì8·"á\b9Tœdt^÷Ýw߬#è|tƒòéàpÀ¹CIYŒ^åX8ãÙèÌ2;æu¯{]ÎKYåÄ1Ú„f1{‡(³ïxiœû̦ÃË9œ~_|qºä’Kò¹=öØ#—Ër}䥾& H Ð/¿üò¬¼#‡4Á°)S¦ä‘æÌpÁö ­7r1“Ÿ-íþCÉ÷¡IèϯýëtÙe—åY3ÌæCÐt†Y~ݨÏgÔûa‡Öí¨rѵp²í·ß~ù:K{¢s‹wRaÿ„¾Q_–¢¢Üßÿþ÷ÙÇu4=â;¢Aˆgø) ôžÀ7Þ˜fÏžƒæô5ئM›ÖmkÐ.±Ux¡7ÌTav 3~Ñ´÷DñÞ9ì‹Ðœá‡~xî÷Ìœ93úÐf­pZE€{ˆv‚îÐWBSèí²Ë.:Å·¤|4…òÑ>¯¿þúÄ÷ a“ Ì¢Á–¡®8ÔÑöØp@a#…¦Pg5%£ó ô+Úí•öL_€öØ,1x™ÿ÷iÇ܃ A eE™ì‡Ý úBè³ù±QЗ°[ÐúBe»…vv zABêÇ3£/T¶[¢/T¶[¸¾v ÚF} »%úBjL³_Þë€$ÐwíÐ2¯(«ŒèÂÁÅl;:ŽtL†±|–’¡óÊh3:Ⱥt<1ú(Ë$ Mtc„:°ØpzáPBè(ұ䓛h@$ì,Û‚ÐñÅ1£ŒOt‚N"Æ[n¹%òþ®ñmh Ž|êÁhQFÁ3ú•{ËUžGç’Î2Ïä=Yèõ¢<‚ìS:½8Þ™íG§• #å¢WqÆÓñ5I@ýG{¶ÌÈqÚ*Ú4íÀéÎÈïòŒÝZOg4y9pGû[] žƒnQn8¶ÐlfÐÄ,çÑöióÕö ƒ¦ 9è[ç(— #ÚÙç>l$wh š‚íD½Úñ©·Iè?Øh 6í”6F;'Ø\ÑN?†¶OfŸ¶Íÿ÷Ø'¡Q3´€A>h mí@S°!¸6 çCS¸²hó«Û÷RXf÷2œw3ÃцÞp½:q/Tó8Ò©Žã‹Î)N²Ð-îåŒ>%@÷è£ÎšÅ²6ñªË÷XèÞåôõ¯=·GÚ~Ì.¡-‡óŠ’ë™òaG¼ï}ïKl‘ÈOÛŽwZ⤺ôÒK³ ­ÁñUÖìçÌÒÃñ…ž +hSµ,êÃhxžqÕUW%fàð,„óž|Ü‹ ‡=ºµ÷Þ{ç•pò£/µÊŽïà§$Ð>f‘Üpà y0úÂrsØ(Ø'´MÚ=ÿ×GÛ¤]¢5åp~3#…DïËA6î§½SÞE]”gÃÐît€ž +$4 [r±}Ž:ê¨Ô£Ä ž[«Ýc‡`—`§`£`«°ª [Ô²¹}¤Žè+™ +Ø-Q~ûÔ¼CèÚô×¾öµ›5kVÖŠ_þò—y•‘êç…Ý‚Î`a·0#˜þP3»…AA¬d‚Ý‚NÔë …Ý‚v¡“Ô¯l·„>b· ‡èJô…ЛdY]w%  H@}!àŒ»¾Ðó^ Ô €1H—Ž$ 3XÚÑÉÄÁŽóŠî¸ãÒž{î™J´ùvÁ|cŒH/;šØÇÁEùŒ ÇÑMÙéLr½‰<ÖÐ:ºhN+ G³ôpŒÑÑÅ‘‡~¡]á”cä*ÏÆÑÆóZ-»•ç›GXA'Ò 'œÛ!pœê½I¯yÍkjÞ†Í^ж<òÈìÄ'0È£²¦Pò  ´ûòL›š—N²|Ô«_ýêpD“˜}CùØH”ƒ~Z1p ]à ¦¦”à¹+~&Àÿß´{Ú"í jÚ;m“O®Ó!€‡ ]@%xÏÖ(q/ö ùÐìÚ;º‚­À†–„B}8näP/?òyÿºÂÆ»¥°O@ÂnBW¸Dݱ§â¹årÜ—€žmŸ™ṳ̈ÝgŸ}²ƒ.5JÑâ^Þÿ†4³[¢/Ô¨Üò5´…ç`ó”íô‘çb·¸ãÙö…ÊäÜ—€$ Np©ÌNPµL H@€$  H@€$  H@€$  ´IÀ5#Úfv H@€$  H@€$  H@€$  t‚€»NPµL H@€$  H@€$  H@€$  ´IÀÀ]›ÀÌ. H@€$  H@€$  H@€$ N0p× ª–) H@€$  H@€$  H@€$ 6 ¸k˜Ù%  H@€$  H@€$  H@€$Ð î:AÕ2%  H@€$  H@€$  H@€$Ð&wm3»$  H@€$  H@€$  H@€:AÀÀ]'¨Z¦$  H@€$  H@€$  H@€Ú$`à®M`f—€$  H@€$  H@€$  H@@'¸ëUË”€$  H@€$  H@€$  H@@› ܵ Ìì€$  H@€$  H@€$  H@èw j™€$  H@€$  H@€$  H@h“€»6™]€$  H@€$  H@€$  H@ `à®T-S€$  H@€$  H@€$  H@m0p×&0³K@€$  H@€$  H@€$  H  Üu‚ªeJ@€$  H@€$  H@€$  H MîÚfv H@€$  H@€$  H@€$  t‚€»NPµL H@€$  H@€$  H@€$  ´IÀÀ]›ÀÌ. H@€$  H@€$  H@€$ N0p× ª–) H@€$  H@€$  H@€$ 6 ¸k˜Ù%  H@€$  H@€$  H@€$Ð î:AÕ2%  H@€$  H@€$  H@€$Ð&wm3»$  H@€$  H@€$  H@€:AÀÀ]'¨Z¦$  H@€$  H@€$  H@€Ú$`à®M`f—€$  H@€$  H@€$  H@@'¸ëUË”€$  H@€$  H@€$  H@@› ܵ Ìì€$  H@€$  H@€$  H@èw j™€$  H@€$  H@€$  H@h“€»6™]€$  H@€$  H@€$  H@ `à®T-S€$  H@€$  H@€$  H@m0p×&0³K@€$  H@€$  H@€$  H  Üu‚ªeJ@€$  H@€$  H@€$  H M£ÛÌov H@€$  H`%8óÌ3ÓÒ¥K;òÔQ£F¥SN9¥¢ì3Î8#-[¶¬ûÜÁœ^ùÊWv»S›À<Î;*‹p@ÚqÇ+Îy0xø·>x~ k" H@€$  ¼L`•®" C€$  H@¼¦L™’~øáŽTpôèÑé…^¨({Ò¤IiÁ‚Ýç¾ûÝïî>v§6?ÿùÏéðï¸xúé§§“O>¹âœƒ‡€ëƒç·°&€$  H@ÀËœqç_‚$  H@€$0, 0Fqþüùßm„ i̘1çê`°×o ¸ôæ¹²ì 5ï‘€$  H@€#wƒñW±N€$  H@@Ÿ <õÔSiêÔ©åÌš5+í¶Ûnçê`°×o ¸ôæ¹²ì 5ï‘€$  H@€#wƒñW±N€$  H@h@`ìØ±ýöιUW]µÁ“¼$ H@€$  H@ÀÊ$`àneÒöY€$  H@è;ï¼sºüòËû¡¤ÚE|ï{ßKË—/ᄌÇ{tï»#áDÀ¿õáôkú]$  H@€$0<¸¿£ßB€$  H@ýFàØcí·²,Hƒ™€ëƒù×±n€$  H@™FÌ¯í·–€$  H@€$  H@€$  H@Àà"`ànpýÖF€$  H@€$  H@€$  H`„p©ÌúÃûµ%  H@€$ÐW?þxzþù绋Ùpà Ә1cº~øátÑE¥Ù³g§E‹¥÷¾÷½i¿ýöë¾^½Cž«®º*ÝsÏ=y»ï¾ûry¯xÅ+Ò¦›nš>øàÄûöF®ßY¶lYZ²dI.ú©§žª~DZ¸pa¢^‘ªëç;õÙÉúýýïO—^ziºîºëÒ‚ 2ó &¤M6Ù$½êU¯J{ï½wÛ_«¿ã_|1]vÙeé®»îJsçÎÍÛ*«¬’&Ožœ¦L™’·×¼æ5‰z7KdÙìÙ\ç»ð÷úÇ?þ1Ý{ï½™ù³Ï>›ø›â»xàéCÉÇ­”y}ôÑ\vOœ81µbÌíK/½”.¹ä’tõÕWç¿eþÎã™ó™Tk†\u̘£lfeµ’¿úþáv|î¹ç¦­¶Ú*}ûÛßNEp¬á×cVØg?ûÙTvÒŒ3æmt±Ýßøæ›oNEÀ.}üãÏ3ì•͵"(›Î9çœt衇¦w¿ûÝ©¿¿feW_/ÿ³ßìYüý1s±ÆåvÕåU3 ²ò¥m·Ý6}öÙÕ—[>.i¯½öJŸøÄ'š>Þûï¿úÉO~Òrùf”€$  H@€wƒç·°&€$  H@ÒzÐøÍo~ÓÒ÷ rüñǧùóç÷È¿Î:뤩S§¦bæ_kœ à÷ú׿¾bIÁš‡ñÉ3Î8#óc9ËvK²ìèÿýßÿµs[ÎÛîoÌo{øá‡× *²$&Ë<²\f­Dð‰@í`H=ôP^êõšk®©Y5×\3/ùYëo–e= h³kÞÛè$ :è ¼j£|åk ?ð¤Ûo¿½|Ú} H@€$  H`¨ÿrˆ!Py«( H@€$  ¿þõ¯S±¬f m¼ñƉ÷ÔKav_ã=]'žxbÅûæâ|êSŸJoûÛÓøñãs^<ð@*–´Lÿïÿý¿ôàƒv—AðŽçñî¼HGuT~§ÇKþùŸÿ9.åÏbIÎT,Ù}®¼ß}²ƒ;ýU¿óÎ;¯â{G• yä‘i×]wÍþúëó»Ðx¯\y–¸÷¼ç=iÒ¤I鵯}mÜÞô³ß˜gqĉ€W9wÜqécûXÚf›mR±¼g¾ÄïÌ{ïÔ1CmñâÅÝ·|ï{ßKo|ã{Ô³¿Xv?¨Áõ£wÞygE®wÞ9sd6ÜN;í”ßÉÈ̽Y³f%«lü­Gúä'?™gHsÌ1qªéçÑGÝÝNpòû{ì±y#íjΜ9éŠ+®H?ûÙÏïØ‹Äþ—¾ô¥ô«_ý*Nù) H@€$  EgÊ$ H@€$  b+ûwÕïØ:óÌ3kÒ©~ÿïó*ú@yÛe—]ºþö·¿u-Z´¨æ½¼[.òò¹öÚkwˆšyãäÓO?ÝU1*îãeÏ=÷\d©øä½jåg°_T*òôçA+ï¸+?¯·õ{ä‘GºŠ€MÅwãývguV¹øûŸÿüç+îÇæ›oÞõüóÏ÷È'úò³½z<ï?øA]÷“ߨ˜qYqo€ª›Ÿ ½eÙêß:ϯþ[ÚgŸ}º–,YÒ°^ùË_z¼{w9ÖkV]§xnØî*fûÕ}^ÌÍ樓ü|±^û¨[$  H@€$ %àŒ»¢7c’€$  H@ÀP"pÓM7åwXõ¥Î,½÷Å/~±/Eô¸—YI¤“O>9ýçþgZ}õÕ{ä‰Ì+'f}1c©Q;vl®3³Í"±Œ ³ xoÛHIÌJ,/YLÓÅ_œ˜ýÕ(1ûмE¯;š˜ IDATËf2kñ}ï{_÷¹F;íüÆ×]w]EQ̾kå9»í¶[þúÚ×¾Ö}ÿÕW_ݽ¿²wŠ [úêW¿ZñXÞ!WjSp®8_}ðº×½.ýð‡?LÌ2ŒÄ»¿óïä¿å8×ìsýõ×OW^yeÅlÑê{Þð†7¤SO=5}úÓŸî¾T»ól<Ú»I€$  H@ Ü ßÉZJ@€$  H ›ŽÿË/¿¼û¸7;,‘؉D@ãôÓOoZtuànܸqMï!Á)–¼á†ºó³ÄâH Ü-X° ýâ¿èþîì|ô£m´‹>÷¹Ïå%3/¹ä’8•—Xl% 7´ú³\d9•ƒWåóµöwß}÷ŠÓwÜqGÅñÊ< ð¶|ùòŠG~ë[ßj´‹Þô¦7¥Ã;,]pÁq*vÚi‰ß¢Öûðº3•vX&¶•e]ßõ®w¥Ï|æ3©Ü}wõR¥ÝÜ‘€$  H@€%wƒòg±R€$  H@zB0“¨•T,1X‘­XV3¿“®Ù &n"/3‰"Åûðâx8òδbiËî¯È;Î¾ØæÌÉ“N:)•wÅò‹iéÒ¥‰ÍR;¿1ï°ûð‡?Ü]d_f}•ß×]àJÚ©~o#AÅb)ضž~ 'Tîžxâ‰4{öìôªW½ªi9År°éCúPÓ|d ¿é¦›¦¹sçvç/ÏÎì>éŽ$  H@€$0h ¸´?“€$  H@ÀÐ"@@£Ùr—ñ˜µuöÙgÇa*ÞÛ–9äô»ßý.m¸á†Ýçkí°l ÛHL3f̨øÚÅ;èÒšk®Yq®Ù³¿Êé…^HÅ;S+µv~ã|àåÇ´µß×¥m=¬Aæ… æ¥XËYÞÿþ÷—[ÚgËÕV[­"èzÙe—µ¸c¦b;¿1í§¸c©O“$  H@€$0t¸:¿•5•€$  H@@&°õÖ['ÞWÖ—4uêÔ¾Ü^óÞí¶Û®æùZ'<ðÀ§¯ºêª´Ùf›¥O<1}ôÑé5¯yMËËö(lžàýrÕïzcÙÐvÓzë­—˜ÅÅû#Ýÿý±Ûð³ß¸aA5.23ìî»ïNçœsNúö·¿]#ÇÊ?5sæÌ=ôÐC{œkv‚¥`7Ùd“tÏ=÷tgmuùÏ-·Ü²ûžVvÖ]wÝŠlÕË|V\ô@€$  H@t Ü ºŸÄ I@€$  H 1fÔ¼å-oiœi®²4b«‰Ð—¿üåü>®ò=Ë–-Kÿó?ÿ“·1cƤÝvÛ-ð˜·ï¾ûæYKåü#iÿHÏ<óLÅW¾îºëò;î*N¶pP~Ù|ðÁîJ©ß¸V,ÉyÅW¤[o½5Ï cfXl\l‰@b9=:Mœ8±|ªåý &TîX.³•D µ´Ê*«´“ݼ€$  H@À #`àný VG€$  H@C•ÀꫯÞVÕ?ýéO'‚ |ÖJ,áÈ 3¶¯ýëùl¯}íkól¼·¾õ­i5Ö¨uÛ°=W+Ðsá…&¶¾&¦­¤vcÊä|§vZžIG ‘™ƒC%-^¼¸¢ª“'ON¼ç¯7i£6ª¸­ÖïY‘áí,“Yë~ÏI@€$  H@C‹À¨¡U]k+ H@€$  'ŸúÔ§Ò¬Y³Ò±ÇÛ4 ÂŒ¬óÎ;/½ç=ïI›nºiúÊW¾’^zé¥á„£áwéä»Êž{ÏîíÅK/½4í¼óÎéãÿxbÙÉfA»Q£F¥#<2|òɽ}d¿ÞW¸ëÏ%fÇŽÛR]™åg’€$  H@€F{#ç·ö›J@€$  H`P`9ÌsÏ=71éOúSúÃþf̘‘xçY½ôØcåe6.\˜þû¿ÿ»^¶au¾ÖL/–®\{íµûü='MšÔç2ª à7<øàƒSõ²œ‘oã7NÓ§OÏï5ä“÷õñ·°Á¤³Î:+}÷»ß¬yff÷ÁJÜYk­µ*žÆ,ÐÞ¦ò;)cóÍ7ïmQÞ' H@€$  cî†ñëW“€$  H@ÀP"0~üøô¶·½-o{n¹å–tñŧ¿ýío9Wk9Ço}ë[i‹-¶H§œrÊPúª½ª+|ªÓW¿úÕtÌ1ÇTŸðcfª½óïì´#÷þ÷¿?í¿ÿþ‰w5öD@±œxÏ`o“»Þ’ó> H@€$  Œ,.•9²~o¿­$  H@€†Þ}·Ã;¤}èCé÷¿ÿ}žwþùç§C9¤GýÏ<óÌç†ã‰Z»»îºkP~UŠ=ôPEÝ>ò‘¤¿þõ¯éMozSÓ Ý‹/¾Xqï@l¹å–f¦go–e‰Ð T”医 H@€$  H@ÿ `àÎ? H@€$  H`ÐXmµÕÒG‘.¸à‚ô| ¢¾ÌÌ[¾|yŹáxÀ{ýÆWñÕkàîú믯¨çÞ{ïÝÖ’¦<òHÅýõ–Û¬ÈÔƒêwÔãž{îiûIÌ­F2SÔ$ H@€$  H š€»j"K@€$  H@%ðÛßþ6M›6­{;餓Z~3ñ¾ð…/Täç½c·ÞzkŹáx0jÔ¨´Ï>ûT|µË/¿<½ôÒKçš°Ü#A£ø 6Ûl³³Áš•ÑìúÍ7ß\‘åÀ¬8nv0X~OÞ÷ÆkTT·73<ùË_V”±Î:ëäwûUœô@€$  H@@AÀÀ€$  H@ÀJ%°ÕV[%‚G±1©´Áô¦L˜0¡"†lÞC=´¢î̸;÷Üs+Î5;øìg?›î»ï¾nþ“'ON'Nlv[Ë×™ý¸páŠü[MO>ùdúõ¯ÝjöŽæ#P¼ß~ûU<ãŒ3ÎHK—.­8×è«Ë‰w2VË×Ý—€$  H@€F.w#÷·÷›K@€$  H`@l³Í6iíµ×î~6A¤«¯¾ºû¸ÙÎ 7ÜP±4&A'fFµ’ÚÖJ™ý™§YýÞýîw§õÖ[¯â‘_ùÊWR«KIΙ3'ýüç?¯¸ÿ„N¨8îë)fó•ÓM7ÝT>¬»Ï÷ï{ß›–-[V7O«š±lµœ¯}ík‰^¤%K–¤oûÛqØôóSŸúTzúé§»ó;6}ô£í>vG€$  H@@™€»2 ÷%  H@€$ ŽXuÕU{,ùxòÉ'§|°é³ è|ò“Ÿ¬È·ûî»WÇ’Ñ£GÇaþ¼í¶Û*Žò 7õc‰Å}èCÕž={v:î¸ãšÎ»âŠ+Ò1ÇSäÛd“MÒÛÞö¶Šòúã`—]v©(æÇ?þqºãŽ;*ÎU0Kï-oyK:çœsª/õx?\u†Þ°¬.£Þñ®»îÚƒ³O=õÔz·tŸ'Ï·¾õ­îcv>øÁ¦W¼âç<€$  H@€$ Ü ?%  H@€$ •FàßøFEPYt;î¸cúÅ/~‘žþùõxñÅÓù矟:è tñÅw__mµÕÒ—¾ô¥îãòÂ)S¦”O¥}ìcé›ßüfúÃþ.¸à‚´xñâŠë+ó ·õ#h´çž{VT•å29÷ç?ÿ9=úè£Ý×xÿï›ûô§?8à€¼ñ‰Ot_sÍ5éÕ¯~u÷ñÊÞéMý¸ñ8î;wnw•o½õÖtøá‡çc–Ýpà ÓwÞY3J&–جvÖÇ–ô<ûì³s 1ŠbFå[ßúÖô¾÷½/ñžC´óæÍK,=YN¼sï’K.ɾø~,ºÃ;ä%Q<ðÀôÓŸþ´|KÞï Ë…Ô91uêÔÄ’™þð‡+rüä'?Il£FÊGˆ"k-ÓÉïF`šßÅ$ H@€$  H gÜÕ#ãy H@€$  H £¾ð…/¤}÷Ý·Ç3˜]wÏ=÷¤?þñù}l—^ziÅ,²¸àÁ¿F‰ëå÷“5Ê;×z[?I¼°Þ2¡ ,È3íjÍ^ätßýîw;>óëÌ3ϬùîAf¤]ýõ¹~ÕA;f2ƒmúôéyYÏêß„ îòåË«OçãÞ²¬YX“,Qúýï?éª/¨#pÊ»üjíx§#A»£>ºúV%  H@€$  T0pWà H@€$  H`e`éÁ3fäeyGY«i=öHW]uU"0Ô,(·ÓN;¥ /¼0M˜0¡ÕâWj¾¾Ôïtå•W¦ÿú¯ÿJ믿~Óz3ì°ÃKÌ2ä=kNÌú#˜Åû ™‘Ö(1»òŒ3ÎÈ̶$}îsŸK{ï½w£Û*®õ…eEA N:é¤t$ÀØJâï“÷öñ~?ÞCh’€$  H@€$ÐŒÀ*Å’#]Í2y]€$  H@@' °Læ9眓fΜ™æÌ™“žxâ‰Ä9f*m¾ùæyÛb‹-Á™#<²iÀ®º®Ì<»ûî»óÒ‘K—.ÍïuÛn»íe6 þU—Õ‰ã¾ÖïD€’YŠÌVdÆ3ëxÇ߯oœø®&MšÔ‰ê7-“ßô¢‹.ʼÛn»-DdÖ Aºc=¶îr¥Ì®cÆ%3ô`Ä=¼ç0‚{µÜW–µÊ¬uîÆoÌïJ$x ïÇ<€Þh£2÷ƒ>8/]JÓ$ H@€$  H UîZ%e> H@€$  H@€$  H@€$  t@ãõJ:ø`‹–€$  H@€$  H@€$  H@€V0p·‚…{€$  H@€$  H@€$  H@0î ½–€$  H@€$  H@€$  H@À îV°pO€$  H@€$  H@€$  H@FÀÀÝ€¡÷Á€$  H@€$  H@€$  H@XAÀÀÝ îI@€$  H@€$  H@€$  H`À¸0ô>X€$  H@€$  H@€$  H@+¸[ÁÂ= H@€$  H@€$  H@€$  w†ÞK@€$  H@€$  H@€$  H`w+X¸' H@€$  H@€$  H@€$ #`ànÀÐû` H@€$  H@€$  H@€$  ¬ `àn ÷$  H@€$  H@€$  H@€$0` Ü z, H@€$  H@€$  H@€$  Ü­`áž$  H@€$  H@€$  H@€Œ€»Cïƒ%  H@€$  H@€$  H@€$°‚€»,Ü“€$  H@€$  H@€$  H@À€0p7`è}°$  H@€$  H@€$  H@€V0p·‚…{€$  H@€$  H@€$  H@0î ½–€$  H@€$  H@€$  H@À îV°pO€$  H@€$  H@€$  H@FÀÀÝ€¡÷Á€$  H@€$  H@€$  H@XAÀÀÝ îI@€$  H@€$  H@€$  H`À¸0ô>X€$  H@€$  H@€$  H@+¸[ÁÂ= H@€$  H@€$  H@€$  w†ÞK@€$  H@€$  H@€$  H`ÿ µµ¹2q&IEND®B`‚pymc-2.2+ds/docs/_images/gof.pdf000066400000000000000000001120731204033704200165300ustar00rootroot00000000000000%PDF-1.3 %Äåòåë§ó ÐÄÆ 4 0 obj << /Length 5 0 R /Filter /FlateDecode >> stream x+TT(TÐH-JN-()MÌQ(Ê ˜[é  457Ó3`Nr®‚¾g®¡‚K>Pg '’ endstream endobj 5 0 obj 61 endobj 2 0 obj << /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 792.0792 576.0576] >> endobj 6 0 obj << /ProcSet [ /PDF /ImageB /ImageC /ImageI ] /XObject << /Im1 7 0 R >> >> endobj 7 0 obj << /Length 8 0 R /Type /XObject /Subtype /Image /Width 1100 /Height 800 /Interpolate true /ColorSpace 9 0 R /SMask 10 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream xìÝìdu}/þâ?6©!µ‰&Ä£6Á²K”Ý!@D²eÁE(?\®J/`{Y/"Þ*#B·ô a Qo!P ×…„""mV@–»¡ú¢ XY¶»î÷]&¼3³lçL߯ó9ç=O̹ï™9óž÷y =çù¼óÙùü¿ÿç‡ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€¾ ÜqÇk×®]³fÍÙgŸ½aÆmÛ¶V|É%—œqÆŸý÷ŸË.»,?’n¸áßøI÷ïÞ½{üÐ믿¾~ýúôÄô`Œï7 @€ @€@7+V¬øá˜^ëå—_>ÿüó/¸à‚Ñë®[·î™gžÙãn¾ùæN8aÇŽéÑ/½ñ3ÞíÊ+¯<묳^{ã' ®ºêªñC @€è@à _øÂøU~ô£zè¡¿úÕ¯Ò=©ã<ýôÓã‡ÆƒôIÍñÇã7ŽîyôÑGSKí™ZÏ‘GyÏ=÷Œºûî»ÓÍW^yeü\ @€t)ððÃ/_¾üñÇO/úfç‰'žHûlÞ¼y´°ô‰ÍG‘>ÙI77mÚ”zþùçG=ûì³éæ½÷Þ;ºiK€ @€Ž®¿þúU«V^4uœôomÎ9çœô l·ß~ûÎ;G÷ßwß}©¹<õÔSãµ­\¹òꫯN7o¹å–ôPú gôЫ¯¾šn~ÿûßïi@€ @€Î^|ñÅTpxàÑ+þå_þåm·Ý–Æ¿øÅ/.¼ðÂÏ|æ3£ûÓ©¹Œ?¬IwžtÒI£o$¸îºë?üðÑn£íÇ?þñô=ù=ù8õ¦þçNßrfóC€ P·@J})ûÿÎóXhL H ™ï~÷»{œ<ýöZê5[¶lIü'ýGž>åñC€ °8)î1pº“@qô}h—^zé^¦Mß>ÙI;ü÷8éì¤ÿsþÙÏ~¶ÕO¿~ù™Óÿ¿ãV¥m¿—iu @€@¯RêKÙ/%À½dN(%~ìâ‹/ÍöÈ?iœþ=Îxþô-ésœÑ÷ Œ¾W-ý}œñþé{ÕFß2=ú^µôuj£‡îºë®ÔŒöòqdú46ýwž&O\ú!@€¨[ ¥¾”ýR‡LAé+Ñ>õ©OýÓ?ýSjÖéçšk®ùÛ¿ýÛôZ©Ô¤ïIKƒíÛ·§nsòÉ'¾[àÄOÜãßÇI'ý-ÑÑßÇIƒ½ÿP§îó˜£#@€ä:Î8N„ ¤¿û™>…Iu&ÿýIЛnºéŒ3Î8õÔSSUIôLü=Ðô÷qþøŸTvïÞ/2õšôÄô³÷‚“ž¢ãäÿWoL€¨[@ÇÉ3³q­:ÎPÎcÏþàÖg7þMÚeÁÖI€ôP@Ç©5Õ;®\@ÇéáÉgKÚÙ쳫iÒvº“ 0‹€Ž“'aãZtœYνØç®»·ÝqǶ´õC€˜W@Ç©5Õ;®\@Ç™÷ áy @€á è8y6®U@Ç޹Ɋ  @€ó è8µ¦zÇ• è8óž!< 0<'OÂÆµ è8C97½tØáÛÿàÓv( ¶N @ ‡:N­©Þqå:NO>{\ÒK>ä7¿@ÚîñQw @€fÐqò$l\«€Ž3ËÙÀ> @€:tœZS½ãÊtœ:ÎWŽ‚ 0‹€Ž“'aãZtœYÎö!@€Ô! ãÔšêW. ã æ|õ“Ÿlû‡¶¥­ @€À¼:Nž„kÐqæ=Ctý¼Í>»š&m»~a¯G€T$ ãÔšêW. ã å¤õÜõýÜw®IÛ¡,Ø:  @€ è8y6®U@ÇéáÉÇ’ @€A:N­©Þqå:NÐ Ä´ @€ è8y6®U@ÇéáÉÇ’ @€A:N­©Þqå:NÐ ¤ø´/œrꋟ<6m‹ÏlB @`qtœ< ×* ã åœö›ßÛÇoÿnÚeÁÖI€ôP@Ç©5Õ;®\@ÇéáÉÇ’ @€A:Nž„kÐq‚N ¦%@€ôP@Ç©5Õ;®\@ÇéáÉÇ’ @€A:Nž„kÐq‚N ¦%@€ôP@Ç©5Õ;®\@ÇéáÉgKÚÙ쳫iÒvº“ 0‹€Ž“'aãZtœYÎ}Øç¹K¿úüE_JÛ>,Æ @€ è8µ¦zÇ• è8=AY6 @`'OÂÆµ è8sœ<… 0P§ÖTï¸rg '(Ë&@€Ì! ãäIظVgŽ“Ã’<åù/þ鿬=7m—äÕ½( P‡€ŽSkªw\¹€Ž3”óÕŽßúmš´Ê‚­“è¡€Ž“'aãZtœž|,‰ $ ãÔšêW. ã@LK€è¡€Ž“'aãZtœž|,‰ $ ãÔšêW. ã@LK€è¡€Ž“'aãZtœž|ö¸¤—ßù®Í>i»ÇGÝI€˜E@Ç©5Õ;®\@Ç™ålЇ}ÒG¿pÊ©iÛ‡ÅX 0P'OÂÆµ è8=AY6 @`§ÖTï¸rgŽ“ƒ§ @€* ãäIظVg '(Ë&@€Ì! ãÔšêW. ãÌqrX’§<¿~ýs—=m—äÕ½( P‡€Ž“'aãZtœ¡œ¯Ò—ªíjš´Ê‚­“è¡€ŽSkªw\¹€ŽÓÓÏ—ôë-[~ýóŸ§íu' @`'OÂÆµ è8³œ ìC€¨C@Ç©5Õ;®\@Ç©ã|å( @€³è8y6®U@Ç™ål` @€@:N­©Þqå:ÎPÎWÛ\öò»Þ“¶CY°u @€=Ðqò$l\«€ŽÓÓÏ—ôâÊ?ziù¡i»ÇGÝI€˜E@Ç©5Õ;®\@Ç™ål` @€@:Nž„kÐqê8_9  @€À,:N­©Þqå:Î,gû @€êÐqò$l\«€Ž3”óÕ³?¸õÙ“¶CY°u @€=ÐqjMõŽ+ÐqzxòÙã’v6ûìjš´Ýã£î$@€Ì" ãäIظVg–³A/ö¹ëîmwܱ-mý @€æÐqjMõŽ+Ðqæ=Cx @`x:Nž„kÐq†wn²b @€À¼:N­©Þqå:μgÏ#@€ O@ÇÉ“°q­:ÎPÎM/vøö?øÃ´Ê‚­“è¡€ŽSkªw\¹€ŽÓÓÏ—ôÒ‡ùÍï¶{|Ô @€Ytœ< ×* ãÌr6° @ §ÖTï¸r§Žó•£ @€Ì" ãäIظVg–³} @€uè8µ¦zÇ• è8ƒ9_ýä'Ûþámië‡ 0¯€Ž“'aãZtœyÏ]?og³Ï®¦IÛ®_Øë @€ è8µ¦zÇ• è8C9i=wý_?÷kÒv( ¶N @ ‡:Nž„kÐqzxò±$ @€@€ŽSkªw\¹€Žt1- @ ‡:Nž„kÐqzxò±$ @€@€ŽSkªw\¹€Žt)>í §œúâ'MÛâ3›X'OÂÆµ è8C9§ýæ÷ößñÛ¿›¶CY°u @€=ÐqjMõŽ+Ðqzxò±$ @€@€Ž“'aãZtœ ˆi  @€=ÐqjMõŽ+Ðqzxò±$ @€@€Ž“'aãZFç§?{ü±'Ÿò¿ŸÿóÓAç(Ó @€Ú è8µ¦zÇ• Œ:Îqßøû_½Çÿ"þâ¶ÍmO>{Üg³Ï®¦IÛ=>êN @€À,:Nž„kuœÿrñ?xÞßù_„À—oyx–θÏs—~õù‹¾”¶ÿážv @€¼™€ŽSkªw\¹€ŽÑkò9Kuœ7;S¹Ÿ 0»€Ž“'aãZtœ¼DŒuœÙϺö$@€¢tœZS½ãÊtœˆ^“Ï©ãDŸ«ÍO€Ì. ãäIظV'ï#ãRçù/þ鿬=7mg?‰Ù“ 0! ãÔšêW. ãDôš|ÎRgÇoýο6MÚNœ©Ü$@€Ì. ãäIظV'ï#ãRgös—=  @€o& ãÔšêW. ãDôš|NçÍαî'@€ºÐqò$l\«€Ž“÷‘ˆ±ŽÓýÙÛ+ @€o& ãÔšêW. ãDôš|NçÍαî'@€ºÐqò$l\«€Ž“÷‘ˆq©Žóò;ßµ³Ù'm»?zE @ §ÖTï¸r'¢×äs–ê8é‹£_8åÔ´­æë@ @€îtœ< ×* ãä}$b\ªãtôŠ @€@}:N­©Þqå:ND¯ÉçÔqê»:8" 0\'OÂÆµ è8y‰ë8ý X9¨O@Ç©5Õ;®\@ljè5ùœ¥:Îóë×?wù×Ó¶¾“­#"@€:Ðqò$l\«€Ž“÷‘ˆq©Ž“¾TmWÓ¤mgç@/D€Ô' ãÔšêW. ãDôš|ÎRç×[¶üúç?OÛúN¶ŽˆèL@ÇÉ“°q­:NÞG"Æ¥:Ng§>/D€T, ãÔšêW. ãDôš|N§âË„C#@€ƒÐqò$l\«€Ž“÷‘ˆ±Ž3¸“¿ @€ŠtœZS½ãÊtœˆ^“ÏYªãl?pÙËïzOÚV|Öuh @€@´€Ž“'aãZtœ¼DŒKuœWþÑKËMÛèSŸù  @€ŠtœZS½ãÊtœˆ^“ÏYªãT|²uh @€@g:Nž„kÐqò>1Öq:;i{! @à?ÐqjMõŽ+Ðq"zM>§Žóžlí@€t& ãäIظV'ï#ãRçÙÜúìÆ¿IÛÎÎ^ˆ¨O@Ç©5Õ;®\@ljè5ùœ¥:ÎÎfŸ]M“¶õl Й€Ž“'aãZtœ¼DŒKuœmwݽíŽ;þmë‡ 0¯€ŽSkªw\¹€ŽÑkò9‹uœyOežG€ è8y6®U@ÇÉûHÄXÇŸT  @€%ÐqjMõŽ+Ðq"zM>§Ž³ä's @€Æ:Nž„kÐqò>1.Õq^:ìðíð‡i;>G @€Ú è8µ¦zÇ• è8½&Ÿ³XÇùð!¿ùý^úð!mOeö'@€Œtœ< ×* ãä}$b\ªãŒOM @€¹tœZS½ãÊtœˆ^“Ï©ãÌ}öD @ ¸€Ž“'aãZtœ¼DŒuœâ'g @€s è8µ¦zÇ• è8½&Ÿ³XÇùÉO¶ýÃÛÒÖ @`^'OÂÆµ è8y‰—ê8;›}v5MÚÎ{Jó< @€À6§ÖTï¸r'¢×äs–ê8Ï]ÿ×Ï}çš´uv&@€Ì- ãäIظV'ï#ãRgîS™' @€Æ:N­©Þqå:ND¯ÉçÔqÆ'U @`Étœ< ×* ãä}$b¬ã,ùÉÜ @€±€ŽSkªïáqÝqÇk×®]³fÍÙgŸ½aÆôáx‘·ÝvÛ™oü\tÑEÛ·oߟ7ÜpÿñsÙe—íÞ½{üÐ믿¾~ýú3Î8#=˜ãû÷8Ðq"zM>g©ŽóÂ)§¾øÉcÓv|Ž2 @€´Ðqö‰Ý!°bÅŠþð‡iæ—_~ùüóÏ¿à‚ F¯²iÓ¦O|â¿úÕ¯ÒÍ«®º*u–ñ«ß|óÍ'œpÂŽ;Ò=_zãgüЕW^yÖYg½öÆO¤'Žšè8y‰—ê8¿ù½ýwüöï¦mÛS™ý  @€cg:»'Hà _øÂxæýèG‡zè¨×|ö³Ÿýæ7¿9zè…^X¾|ùC=”n¦OjŽ?þøo¼qôУ>šZÒÓO?n¦Ösä‘GÞsÏ=£‡î¾ûîtó•W^ÝœÞê8½&Ÿ³TÇŸš  @€s è8ÓyØ=<üðéË<þøã©­¤ÁwÞ9~Ñ“N:é[ßúVºùÄO¤‡6oÞûlºyï½÷ŽnNouœ¼DŒuœ¹OžH€Ðq¦ó°{:¸þúëW­Z•^èÉ'ŸLõä¿húų/ÿÙ—ÓÍûî»/=ôÔSOZ¹råÕW_nÞrË-é¡ôAÏè¡W_}5Ýüþ÷¿?Þsb ãDôš|N§øÉÙ„ @€ÀÜ:ÎDv³_|1œQ¯} 3þ°&½úç>÷¹Ïþói¾ˆ 5—ñ‡5éžôOúæ4¸îºë?üð4ÿ|üãOßc0¾91Ðqò>1Öqæ> {" P\@Ç™Ãnv pá…~÷»ß½Ðôç8éûÕ|ŽQCBç,Õqv6ûìjš´-~®3! °8:N‘ÞKäéûÐ.½ôÒñ=ÓÿgõêÕiŸ´ƒÚJÊN^ªãi;÷9Í  @€:N­©Þqå:NÙF3=[©Ž“¾8ú…SNM['g @€ÀÜ:Nž„kÐq¦[IÙ{Juœ¹OežH€ è8µ¦zÇ• è8eÍôl:Îø¤j@€,¹€Ž“'aãZtœéVRögÉOæ@€ŒtœZS½ãÊtœ²fz¶Rçùõ럻üëi;>G @€Ú è8y6®U@Ç™n%eï)ÕqÒ—ªíjš´m{*³? @`, ãÔšêW. ã”m4Ó³•ê8¿Þ²å×?ÿyÚŽÏQ @€¶:Nž„kÐq¦[IÙ{Juœ¶g0û @€¦tœZS½ãÊtœ²fz6gúìê @`©tœ< ×* ãL·’²÷è8Ku÷º @€À´€ŽSkªw\¹€ŽS¶ÑLÏVªãl?pÙËïzOÚNŸ¬ÜC€˜Q@ÇÉ“°q­:Ît+){O©ŽóâÊ?ziù¡i;ãÌn @€i§ÖTï¸r§l£™ž­TÇ™>G¹‡ ÐV@ÇÉ“°q­:Ît+){ŽÓöÜk @ N@Ç©5Õ;®\@Ç)Ûh¦gÓqâÎÒf&@€Ú è8y6®U@Ç™n%eï)ÕqžýÁ­Ïnü›´m{*³? @`, ãÔšêW. ã”m4Ó³•ê8;›}v5MÚŽÏQ @€¶:Nž„kÐq¦[IÙ{JuœmwݽíŽ;þmë‡ 0¯€ŽSkªw\¹€ŽS¶ÑLÏV¬ãÌ{*ó< @€ÀX@ÇÉ“°q­:Ît+){Ž3>© @€K. ãÔšêW. ã”m4Ó³é8K~2· @`, ãäIظVgº•”½§TÇyé°Ã·ÿÁ¦íøe@€h+ ãÔšêW. ã”m4Ó³ë8>ä7¿ÀK>¤í©Ìþ @€±€Ž“'aãZtœéVRöžRg|j2 @€Ì- ãÔšêW. ã”m4Ó³é8sŸ„=‘(. ãäIظVgº•”½GÇ)~r6! 0·€ŽSkªw\¹€ŽS¶ÑLÏV¬ãüä'Ûþámië‡ 0¯€Ž“'aãZtœéVRöžRgg³Ï®¦IÛyOižG€ئãÔšêW. ã”m4Ó³•ê8Ï]ÿ×Ï}çš´uv&@€Ì- ãäIظVgº•”½§TÇ™ûTæ‰ @€±€ŽSkªw\¹€ŽS¶ÑLϦãŒOª @€À’ è8y6®U@Ç™n%eïÑq–üdn @€ÀX@Ç©5Õ;®\@Ç)Ûh¦g+Õq^8åÔ?ylÚŽÏQ @€¶:Nž„kÐq¦[IÙ{JuœßüÞþ;~ûwÓ¶í©Ìþ @€±€ŽSkªw\¹€ŽS¶ÑLÏVªãŒOM @€¹tœ< ×* ãL·’²÷è8sŸ„=‘(. ãÔšêW. ã”m4Ó³é8ÅOÎ&$@€æÐqò$l\«€Ž3ÝJÊÞ£ãÌ}öD @ ¸€ŽSkªw\¹€ŽS¶ÑLÏVªãìlöÙÕ4i[ü\gB @`qtœ< ×* ãL·’²÷”ê8Ï]úÕç/úRÚ.ÎIØ‘ @€ÅtœZS½ãÊtœ²fz¶R§ø)΄ @€À è8y6®U@Ç™n%eïÑqðòá  @€@otœZS½ãÊtœ²fz6§·'y #@€ ( ãäIظVgº•”½§TÇyþ‹ú/kÏMÛ<;d @ ”€ŽSkªw\¹€ŽS¶ÑLÏVªãìø­ßùצIÛR§8ó @€ ( ãäIظVgº•”½§TÇYÀ“°C&@€Š è8µ¦zÇ• è8eÍôl:Nñ“³  @€¹tœ< ×* ãL·’²÷è8sŸ„=‘(. ãÔšêW. ã”m4Ó³é8ÅOÎ&$@€æÐqò$l\«€Ž3ÝJÊÞSªã¼üÎwílöIÛ¹ÏižH€ÐqjMõŽ+ÐqÊ6šéÙJuœôÅÑ/œrjÚ:9 @€æÐqò$l\«€Ž3ÝJÊÞSªãÌ}*óD @€ÀX@Ç©5Õ;®\@Ç)Ûh¦gÓqÆ'U @`Étœ< ×* ãL·’²÷è8K~2· @`, ãÔšêW. ã”m4Ó³•ê8ϯ_ÿÜå_OÛñ9Ê€ ÐV@ÇÉ“°q­:Ît+){O©Ž“¾TmWÓ¤mÛS™ý  @€c§ÖTï¸r§l£™ž­TÇùõ–-¿þùÏÓv|Ž2 @€´Ðqò$l\«€Ž3ÝJÊÞSªã´=ƒÙŸ 0- ãÔšêW. ã”m4Ó³é8ÓgW÷ @€K% ãäIظVgº•”½GÇYªs¸×%@€¦tœZS½ãÊtœ²fz¶RgûË^~×{Òvúdå @€ÀŒ:Nž„kÐq¦[IÙ{JuœWþÑKËMÛÏ`v#@€L è8µ¦zÇ• è8eÍôl¥:Îô9Ê= @€¶:Nž„kÐq¦[IÙ{tœ¶ç^û @€q:N­©Þqå:NÙF3=›Žw–63 ÐV@ÇÉ“°q­:Ît+){O©Žóìn}vãߤmÛS™ý  @€c§ÖTï¸r§l£™ž­TÇÙÙ쳫iÒv|Ž2 @€´Ðqò$l\«€Ž3ÝJÊÞSªãl»ëîmwÜño[? @€ytœZS½ãÊtœ²fz¶bgÞS™ç @€Æ:Nž„kÐq¦[IÙ{tœñIÕ€Xr§ÖTï¸r§l£™žMÇYò“¹ @€c'OÂÆµ è8Ó­¤ì=¥:ÎK‡¾ýþ0mÇç( @€@[§ÖTï¸r§l£™ž­XÇùð!¿ùý^úð!mOeö'@€Œtœ< ×* ãL·’²÷”ê8ãS“ @`n§ÖTï¸r§l£™žMÇ™û$ì‰ @€@q'OÂÆµ è8Ó­¤ì=:Nñ“³  @€¹tœZS½ãÊtœ²fz¶bç'?ÙölK[? @€ytœ< ×* ãL·’²÷”ê8;›}v5MÚÎ{Jó< @€À6§ÖTï¸r§l£™ž­TÇyîú¿~î;פ­³3 @`n'OÂÆµ è8Ó­¤ì=¥:Îܧ2O$@€ŒtœZS½ãÊtœ²fz6g|R5 @€–\@ÇÉ“°q­:Ît+){޳ä's @€Æ:N­©Þqå:NÙF3=[©ŽóÂ)§¾øÉcÓv|Ž2 @€´Ðqò$l\«€Ž3ÝJÊÞSªãüæ÷ößñÛ¿›¶mOeö'@€ŒtœZS½ãÊtœ²fz¶Rg|j2 @€Ì- ãäIظVgº•”½GÇ™û$ì‰ @€@q§ÖTï¸r§l£™žMÇ)~r6! 0·€Ž“'aãZtœéVRögî“°' @€ÅtœZS½ãÊtœ²fz¶Rgg³Ï®¦IÛâç: @€‹# ãäIظVgº•”½§TÇyîÒ¯>Ñ—ÒvqNÂŽ”(. ãÔšêW. ã”m4Ó³•ê8ÅOq&$@€P@ÇÉ“°q­:Ît+){޳€—‡L€z+ ãÔšêW. ã”m4Ó³é8½=É[X@'OÂÆµ è8Ó­¤ì=¥:Îó_üÓY{nÚ.àÙØ! @€¥tœZS½ãÊtœ²fz¶RgÇoýο6MÚ–:Å™‡X@'OÂÆµ è8Ó­¤ì=¥:Ξ„2 P\@Ç©5Õ;®\@Ç)Ûh¦gÓqŠŸœMH€Ì- ãäIظVgº•”½GÇ™û$ì‰ @€@q§ÖTï¸r§l£™žMÇ)~r6! 0·€Ž“'aãZtœéVRöžRçåw¾kg³OÚÎ}NóD @€€ŽSkªw\¹€ŽS¶ÑLÏVªã¤/Ž~á”SÓÖÉ™ 0·€Ž“'aãZtœéVRöžRgîS™' @€Æ:N­©Þqå:NÙF3=[ê8=ùÔýþÂÿâ’ðøÔm@€ìE@ÇÉ“°q­:Ît+){Oê8)Û—ÓlIx/'s @€c§ÖTï¸rg"-¿Yªã¬>ò¼5‡­MÛâ+¬`Bg|å2 @€{Ðqò$l\«€ŽðKuœ­M³«iÒ6zÁCœ_ÇÙûåÌ£ @`, ãÔšêW. ãDGúRgÙ9—sSÚF/xˆóë8ã+—Ø»€Ž“'aãZtœèH_ªãD¯sÐóë8{¿œy”ŒtœZS½ãÊtœèl¯ãD §ùuœñ•Ë€ì]@ÇÉ“°q­:Nt×q¢…uœ½_ËóÌ3ã^rÉ%gœqÆgÿýç²Ë.?”7Üpÿñ“îOO?ôú믯_¿>=1=˜ãû÷8Ðq¢x©Žsë;÷ßôÖýÒ6zÁCœßç8ùÅ˘ìE@ÇÙc$vg„ÀSO=•úHj4Ë—/Ï;κuëò›ùKß|óÍ'œpÂŽ;Ò_zãgühêJguÖkoü¤ÁUW]5~hz ãDGúRç\qí{JÛèq~g/×2 @€\@Ç™ÎÃî xâ‰'~ùË_>øàƒÓçé§Ÿž~ÑôIÍñÇã7ŽzôÑGW¬X1Ú3µž#<òž{î=t÷Ýw§›¯¼òÊô$£{tœèH_ªãD¯sÐóë8ùÅ˘ìE@Çy³Tìþ ÿøÇ3vœÔ‰Òž›7o­$}bsÄG¤OvÒÍM›6¥‡Rs=ôì³Ï¦›÷Þ{ï›­YljÎö:N´pš_ÇÙ˵ÌC @ ÐqÞ,»?H`'ý[›sÎ9çüóÏ¿ýöÛwîÜ9zéûî»/5—ôn㕬\¹òꫯN7o¹å–ôPú gôЫ¯¾šn~ÿûßï91Ðq¢¸Ž-¬ãäW.c °wg" »-0Ýqþò/ÿò¶ÛnK¯û‹_üâ /üÌg>3ZCº35—ñ‡5éΓN:iô×]wÝᇞ/õãÿø† ò{ò±ŽÀKuœ#V}íè•ëÒ6zÁCœßç8{¿œy”Œtœ< w 0Ýqò}üñÇS¯Ù²eKºÓç8Êá¥:ÎÖ¦ÙÕ4i; cïl©:ÎøÊe@€ö. ãäÛ¸½wœ´€ôíé“4ðïq: Ïÿù*Õq>zò•+V_‘¶ÿù%Õ7ƒŽ³÷Ë™G  @€ÀX@Çé Õ{‰\`ºã¤ïŽïþƒLŸãŒ¾g`ô½jéïãŒ}ä‘GÒ÷ª¾ezô½jéëÔFÝu×]©ÿ!Ïx¶ñÀïªEþR'zƒž_Ç_¹  @€ÀÞtœq 6èF`Ôqò/‹N¥&}OZzõíÛ·§nsòÉ'W’¾[àÄOÜãßÇIçì³Ïý}œ4ØûŸÕq¢³½Ž-œæ×qö~9ó( è8ã8m-°{÷î3Î8#U˜TjÖ¬YóßþÛ½âM7Ý”î?õÔSSUIß0ñ÷@ÓßÇI94ý¤ú“fÈ™zMzbúÙ{ÁIOÑq¢¸Ž-¬ãŒ/[ @à?ÐqòÌl\«€ŽÀKuœkÞwðÆýHÛèq~Ÿãü‡W4; @€‘€ŽSkªw\¹€ŽéKuœï½{ÙmoÚF/xˆóë8.Ü @`F'OÂÆµ è8Ñ‘¾Tlj^ç ç×qf¼®Ùè8µ¦zÇ• è8ÑÙ^ljNóë8.Ù @`F'OÂÆµ è8Ñ \ljÖqf¼¨Ù$§ÖTï¸r':—ê8:}ÃÁ§]›¶Ñ âü>ÇqÕ&@€3 è8y6®U@ljŽô¥:ÎÖ¦ÙÕ4i½à!ίãÌx]³ÐqjMõŽ+Ðq¢#}©Žsì1¯:ê‚´^ðç×q\²  @€ÀŒ:Nž„kÐq¢#}©Ž½ÎAϯãÌx]³ÐqjMõŽ+Ðq¢³½Ž-œæ×q\²  @€ÀŒ:Nž„kÐq¢¸Ž-¬ãÌxQ³H:N­©Þqå:Nt/ÕqÖxôøXÚF/xˆóûÇU›Ì( ãäIظV':Ò—ê8wîûž‡›}Ó6zÁCœ_Ç™ñºf7  ãÔšêW. ãDGúR'zƒž_ÇqÉ&@€3 è8y6®U@ljÎö:N´pš_Ç™ñºf7  ãÔšêW. ãD'p'ZXÇq½&@€³ è8y6®U@ljNà:N´°Ž3ûuÍž @@Ç©5Õ;®\@ljNà¥:ÎÖ¦ÙÕ4i½à!ÎïwÕ\²  @€ÀŒ:Nž„kÐq¢#}©Žsúò3×òé´^ðç×qf¼®Ùè8µ¦zÇ• è8Ñ‘¾Tlj^ç ç×q\²  @€ÀŒ:Nž„kÐq¢³½Ž-œæ×qf¼®Ùè8µ¦zÇ• è8Ñ \ljÖq\¯  @€Àì:Nž„kÐq¢x©ŽsîGN¹ð ãÒ6zÁCœßç8³_ÚìI€ . ãÔšêW. ãDGúRgsó¶mM“¶Ñ âü:΂_¯>Ì. ãäIظV':Ò—ê8Ñëôü:Îì—6{ @€À‚ è8µ¦zÇ• è8ÑÙ^ljNóë8 ~½vø 0»€Ž“'aãZtœè®ãD ë8³_×ìI€tœZS½ãÊtœè®ãD ë8®× @`v'OÂÆµ è8Ñ ¼Tǹÿ-ïØÚ4i½à!ÎïwÕf¿´Ù“\@Ç©5Õ;®\@ljŽô¥:Núâè¯xTÚF/xˆóë8 ~½vø 0»€Ž“'aãZtœèH_ªãD¯sÐóë8³_ÚìI€ . ãÔšêW. ãDg{'Z8ͯã,øõÚá @€Àì:Nž„kÐq¢¸Ž-¬ãÌ~]³'ÐqjMõ׫¯¾ÚÁ«y ':—ê8«¯SljŽô¥:ÎÖ¦ÙÕ4i½à!ίã,øõÚá @€Àì:NŸ“yÏ×¶nݺ³Ï>;mÓÏš5kú¼Z':Ò—ê8=ùÊ«¯HÛèq~göK›=  @`Átœ>'óž¯í¢‹.¯pË–-ãq:Nt¤/Õq¢×9èùuœ¿^;|˜]@Çéa Ê’¾óïÜu×]é×Õž~úéë®»®ÏËÖq¢³½Ž-œæ×qf¿´Ù“\@Çés2ïùÚ>ùÉO~ößV­ZÕçÕê8Ñ \ljÖqübíð  @ •€ŽÓçdÞóµýïÿý¿Ç+|àÆãtœè^ªã\ó¾ƒ7îw@ÚF/xˆóû§ÕÕÍÎ °È:NùP–ôÚk¯¥ïTûáøØcíܹ³ÏËÖq¢#}©Žó½w/»ííïOÛèq~g‘/ÖŽZ è8}Næ=_Ûõ×_ùå—ýë_ÿÅ/~qÕUWõyµ:Nt¤/Õq¢×9èùuœVW7; @€À" è8}Næ=_Û† Ò GÛÿõ¿þWŸW«ãDg{'Z8ͯã,òÅÚ± @€@+§Ïɼçk[¿~}úFµ¿ú«¿zöÙg¿ýío÷yµ:Nt×q¢…uœV—6; @€À‚ è8}Næ=_ÛæÍ›Ï:ë¬#<2}¹ÚÏ~ö³>¯VljNà¥:·Nßpðiצmô‚‡8¿Ïqüzíð  @`v§ÏÉ|kÛ±cGZçîÝ»û¼Z':Ò—ê8[›fWÓ¤mô‚‡8¿Ž3û¥Íž °à:NŸ“yÏ×–¾Tmüs饗öyµ:Nt¤/ÕqŽ=æâUG]¶Ñ âü:΂_¯>Ì. ãô9™÷|mkÖ¬Y·nÝ%—\rÚi§{î¹}^­ŽéKuœèuz~göK›=  @`Átœ>'óž¯íñǯðºë®{8Ðq¢³½Ž-œæ×qüzíð  @`v§‡|(KzæßþñÿñËöå>/[ljNà:N´°Ž3ûuÍž @@Çés2ïùÚV­Z•¾Q-ý¤‚óÀôyµ:Nt/ÕqÖxôøXÚF/xˆóûÇ%›Ì( ãô9™÷|m?þñ{¾ÂñòtœèH_ªãܹï{nöMÛèq~gÆëšÝ @€€Ž3ŽÁmÒßý÷ßVû·ÿ7ý=Ð+¯¼²í$Ýì¯ãDGúR'zƒž_ÇqÉ&@€3 è8Ýdì*_夓NJtôg@Ów¬¥_Z;î¸ãúy¤:Nt¶×q¢…Óü:ÎŒ×5» @€§Ÿ™|«ºüòË_}õÕ´Ô´½êª«Ò`Ó¦Mý\¹ŽÀuœhaÇõšÌ. ãô3“bU_ùÊWÆëô7@;ˆ¸}~ §ƒwÇç8³_ÚìI€ . ãŒSºA[ô7qÒï§ýÏÿù?ÓÖßÇé âöù%Juœ­M³«iÒ¶Ï»TkÓqüzíð  @`v§m°·.þ èÆ·lÙ’ßÙñßU‹Žå¥:ÎéËÏ\{ȧÓ6zÁCœ_Ç™ýÒfOXp§‡|@KJߥvß}÷=õÔS=_³ŽéKuœèuz~gÁ¯×ŸfÐqzÎû¼¼›o¾ù¼óÎKÿç‘GùÎw¾Óç¥ê8ÑÙ^ljNóë8³_ÚìI€ . ãô9™÷|m6lH+m¿÷½ïõyµ:Nt×q¢…uœ¿X;|h% ãô9™÷|mßþö·wîÜ™:Îk¯½æsœ"nŸ_¢TÇ9÷#§\xÐqiÛçƒ]ªµù§ÕÕÍÎ °È:NÏ{DŸ—wÿý÷§?ºråÊSN9%û¼TŸãDÇòRgsó¶mM“¶Ñ âü:Î"_¬;´ÐqúœÌ{¾¶Ç{ìÅ_Lÿ ½þúë=_ªŽéKuœèuz~§ÕÕÍÎ °È:NÏÃyŸ—wâ‰'¦ïUëó ÇkÓq¢³½Ž-œæ×qùbíØ  @ •€Ž3ŽÁm.»ì²ñS6mÚ4÷p ãD'p'ZXÇiui³3,¸€ŽÓÃ@>”%ýÉŸüÉêÕ«ÿûÿïëÖ­;í´Óú¼l':ë8ÑÂ:΂_¬>´ÐqúœÌ{»¶|0ýÝÏÏþói~~üãÿÿñ?z»Ú´0':—ê8÷¿å[›&m£<Äùý®Z««›  @`‘tœ>'óÞ®í¢‹.Ú²eËßýÝßýŸÿóR}HëL_ÝÛÕ¦…é8Ñ‘¾TÇI_ý•JÛèq~g‘/ÖŽZ è8}Næ½]Ûu×]—Ö–>¾ù⿘¾Z­·ë/LljŽô¥:Nô:=¿ŽÓêêfgXdgƒ fuœ´ÿ7¿ùÍѳzè¡ÙŸÞýž:Nt¶×q¢…Óü:Î"_¬;´ÐqºÏÛ¼â\ðƒ7~þëý¯£Á…^ØçãÒq¢¸Ž-¬ã´º´Ù™\@Çés2ïíÚÖ¬Y“¾KmüsÉ%—¤{z»Ú´0':—ê8«Ì. ãt“±½ÊÒ è8Ñ‘¾Tlj^ç ç×qf¿´Ù“\@ÇYÚìíÕ»Ðq¢³½Ž-œæ×qüzíð  @`v§›ŒíU–V@ljNà:N´°Ž3ûuÍž @@ÇYÚìíÕ»Ðq¢x©Žsë;÷ßôÖýÒ6zÁCœßç8.Ù @`F§›ŒíU–V@ljŽô¥:Î7>¸âÚ÷”¶Ñ âü:ÎŒ×5» @€gi³·WïF@ljŽô¥:Nô:=¿Žã’M€fÐqºÉØ^eitœèl¯ãD §ùuœ¯kv#@€:ÎÒfo¯Þ€ŽÀuœhaÇõšÌ. ãt“±½ÊÒ è8Ñ ¼TÇ9bÕ׎^¹.m£<Äù}Ž3û¥Íž °à:ÎÒfo¯Þ€ŽéKuœ­M³«iÒ6zÁCœ_ÇYðëµÃ'@€Ùtœn2¶WYZ':Ò—ê8=ùÊ«¯HÛèq~göK›=  @`Átœ¥ÍÞ^½':Ò—ê8Ñëôü:΂_¯>Ì. ãt“±½ÊÒ è8ÑÙ^ljNóë8³_ÚìI€ . ã,mööêÝè8Ñ \ljÖqübíð  @ •€ŽÓMÆö*K+ ãD'ðRçš÷¼q¿Ò6zÁCœßç8­®nv&@€EÐq–6{{õntœèH_ªã|ïÝËn{ûûÓ6zÁCœ_ÇY䋵c'@€V:N7Û«,­€ŽéKuœèuz~§ÕÕÍÎ °È:ÎÒfo¯Þ€Žíuœhá4¿Ž³ÈkÇN€­tœn2¶WYZ':ë8ÑÂ:N«K›  @`Átœ¥ÍÞ^½':—ê8:}ÃÁ§]›¶Ñ âü>ÇYðëµÃ'@€Ùtœn2¶WYZ':Ò—ê8[›fWÓ¤mô‚‡8¿Ž3û¥Íž °à:ÎÒfo¯Þ€ŽéKuœc¹xÕQ¤mô‚‡8¿Ž³à×k‡O€³ è8Ýdl¯²´:Nt¤/Õq¢×9èùuœÙ/mö$@€Ðq–6{{õntœèl¯ãD §ùuœ¿^;|˜]@Çé&c{•¥Ðq¢¸Ž-¬ãÌ~]³'Ðq–6{{õntœè^ªã¬;ðè+>ð±´^ðç÷9ŽK6˜Q@Çé&c{•¥Ðq¢#}©Žsç¾ïy¸Ù7m£<Äùuœ¯kv#@€:ÎÒfo¯Þ€ŽéKuœèuz~Ç%›Ì( ãt“±½ÊÒ è8ÑÙ^ljNóë83^×ìF€tœ¥ÍÞ^½':ë8ÑÂ:Žë5˜]@Çé&c{•¥Ðq¢¸Ž-¬ãÌ~]³'Ðq–6{/Ú«ïÞ½ûÊ+¯<ôÐCŸyæ™üØo»í¶3ßø¹è¢‹¶oßž?tà 7üñ?—]vYzúø¡×_}ýúõgœqFz0 Æ÷ïq ãD'ðRgkÓìjš´^ðç÷»j.Ù @`Fg‘ØO=õTê#—\rÉòåËó޳iÓ¦O|â¿úÕ¯Ò‹^uÕUiŸñ«ß|óÍ'œpÂŽ;Ò=_zãgüPêJguÖkoü¤Azâø¡éŽéKuœÓ—Ÿ¹öO§mô‚‡8¿Ž3ãuÍn @@Ç™ÎÃî xâ‰'~ùË_>øàƒ糟ýì7¿ùÍÑ‹¾ð éчz(ÝLŸÔüñ7Þxãè¡G}tÅŠO?ýtº™ZÏ‘GyÏ=÷Œºûî»ÓÍW^yetsz«ãDGúR'zƒž_ÇqÉ&@€3 è8ÓyØ=¡?þñóŽ“ÚJºyçwŽ_ô¤“NúÖ·¾•n¦N”Ú¼yóè¡ô‰ÍG‘>ÙI7ÓG?é¡Ô\F=ûì³éæ½÷Þ;º9½Õq¢³½Ž-œæ×qf¼®Ùè8ÓyØ=¡çÉ'ŸLõä¿húų/ÿÙ—ÓÍûî»/=”~ÃmüÐÊ•+¯¾úêtó–[nI¥zF½úê«éæ÷¿ÿýñž':ë8ÑÂ:Žë5˜]@Ç™ÃnF Ltœ‡~8Õ“ñ‡5éÕ?÷¹Ï}þóŸOƒôEé¡ñ‡5éžôOúæ4¸îºë?üð4ÿ|üãß°aÃøæÄ@ljNà¥:ι9僎KÛèq~ŸãÌ~i³',¸€Ž3†ÝŒ˜è8ÓŸã¤ïWó9Îàx©Ž³¹yÛ¶¦IÛÁ t°`gÁ¯×ŸfÐq¢#½ù'&:Îô¿ÇY½zuúδô,ÿ§ƒØ\ê%JuœRë©rgöK›=  @`Átœ‰îf´ÀDÇI/—¾WíÏ¿ñç£×}¯ÚOúÓtsô½jéïãŒzä‘GÒ÷ª¾tzô½jéëÔFÝu×]é{ÕvîÜ9º9½õ»jÑ™_ljNóë8 ~½vø 0»€Ž3‡Ý*0ê8£¯€½Pú>´cŽ9fô÷qÒ_óL¿«6^@únO<15štÏÄßÇIçì³Ïý}œ4ØûŸÕq¢¸Ž-¬ãÌ~]³'ÐqÆqÚ Z`÷îÝgœqÆÉ'Ÿœ¾I`Íš5çŸþøo¿ýöTmÒO*2Û·oߟéï㤿 š~Ò· ¤ò‡R¯I¦Ÿ½œô':ë8ÑÂ:Žë5˜]@ÇÉ3³q­:Nt/ÕqîË;¶6MÚF/xˆóû]µÙ/mö$@€ÐqjMõŽ+Ðq¢#}©Ž“¾8ú+•¶Ñ âü:΂_¯>Ì. ãäIظV':Ò—ê8Ñëôü:Îì—6{ @€À‚ è8µ¦zÇ• è8ÑÙ^ljNóë8 ~½vø 0»€Ž“'aãZtœè®ãD ë8³_×ìI€tœZS½ãÊtœè^ªã¬>ò¼5‡­MÛèq~Ÿã¸d @€tœ< ×* ãDGúR'}©Ú®¦IÛèq~gÆëšÝ @€€ŽSkªw\¹€ŽéKuœeçl\vÎMi½à!ίã¸d @€tœ< ×* ãDGúR'zƒž_Ç™ñºf7  ãÔšêW. ãDg{'Z8ͯã¸d @€tœ< ×* ãD'p'ZXÇ™ñ¢f7 tœZS½ãÊtœè^ªãÜúÎý7½u¿´^ðç÷9Ž«6˜Q@ÇÉ“°q­:Nt¤/Õq¾ñÁ×¾÷ ´^ðç×qf¼®Ùè8µ¦zÇ• è8Ñ‘¾Tlj^ç ç×q\²  @€ÀŒ:Nž„kÐq¢³½Ž-œæ×qf¼®Ùè8µ¦zÇ• è8Ñ \ljÖq\¯  @€Àì:Nž„kÐq¢x©ŽsΝ½r]ÚF/xˆóûgöK›=  @`ÁtœZS½ãÊtœèH_ªãlmš]M“¶Ñ âü:΂_¯>Ì. ãäIظV':Ò—ê8=ùÊ«¯HÛèq~göK›=  @`ÁtœZS½ãÊtœèH_ªãD¯sÐóë8 ~½vø 0»€Ž“'aãZtœèl¯ãD §ùuœÙ/mö$@€ÐqjMõŽ+Ðq¢¸Ž-¬ã,øÅÚá @€@+'OÂÆµ è8Ñ ¼Tǹæ}oÜ^ðç÷9N««›  @`‘tœZS½ãÊtœèH_ªã|ïÝËn{ûûÓ6zÁCœ_ÇY䋵c'@€V:Nž„kÐq¢#}©Ž½ÎAϯ㴺ºÙ™Y@Ç©5Õ;®\@ljÎö:N´pš_ÇY䋵c'@€V:Nž„kÐq¢¸Ž-¬ã´º´Ù™\@Ç©5Õ;®\@ljNà¥:·Nßpðiצmô‚‡8¿Ïqüzíð  @`v'OÂÆµ è8Ñ‘¾TÇÙÚ4»š&m£<ÄùuœÙ/mö$@€ÐqjMõŽ+Ðq¢#}©Žsì1¯:ê‚´^ðç×qüzíð  @`v'OÂÆµ è8Ñ‘¾Tlj^ç ç×qf¿´Ù“\@Ç©5Õ;®\@ljÎö:N´pš_ÇYðëµÃ'@€Ùtœ< ×* ãD'p'ZXÇ™ýºfO  ãÔšêW. ãD'ðRgÝG_ñ¥mô‚‡8¿Ïq\²  @€ÀŒ:Nž„kÐq¢#}©Žsç¾ïy¸Ù7m£<Äùuœ¯kv#@€:N­©Þqå:Nt¤/Õq¢×9èùu—l 0£€Ž“'aãZtœèl¯ãD §ùuœ¯kv#@€:N­©Þqå:Nt×q¢…u×k 0»€Ž“'aãZtœè®ãD ë8³_×ìI€tœZS½ãÊtœè^ªãlmš]M“¶Ñ âü~WÍ%›Ì( ãäIظV':Ò—ê8§/?sí!ŸNÛèq~gÆëšÝ @€€ŽSkªw\¹€ŽéKuœèuz~Ç%›Ì( ãäIظV':Ûë8ÑÂi~gÆëšÝ @€€ŽSkªw\¹€ŽÀuœhaÇõšÌ. ãäIظV':—ê8ç~ä” :.m£<ÄùÚòËôQŽÿ… <öäS³_@íI€½ÐqjMõŽ+Ðq¢#}©Ž³¹yÛ¶¦IÛèqþ{öÏC\ö°Öì{W,Œ­tœ< ×* ãDçÌR'zƒž_ÇéàíÓqZE; @ ·:N­©Þqå:Nt8Ôq¢…Óü:NÈ:No㊅ @ •€Ž“'aãZtœèp¨ãD ë8§—ÐqZE; @ ·:N­©Þqå:Nt>Ôq¢…Óü>ÇéYÇém\±0´Ðqò$l\«€ŽKuœûßòŽ­M“¶Ñ âü:NÓ*BØ™½ÐqjMõŽ+Ðq¢Ãa©Ž“¾8ú+•¶Ñ âü:NÓÛ¸bah% ãäIظV':–ê8Ñëôü:NoŸŽÓ*BØ™½ÐqjMõŽ+Ðq¢Ã¡Ž-œæ×q:@ÖqzW,Œ­tœ< ×* ãD‡C'ZXÇé@8½„ŽÓ*BØ™½ÐqjMõŽ+Ðq¢óa©Ž³úÈóÖ¶6m£<Äù}ŽÓÁ»¦ãô6®XZ è8y6®U@lj‡¥:NúRµ]M“¶Ñ âü:NÓ*BØ™½ÐqjMõŽ+Ðq¢Ãa©Ž³ìœËι)m£<ÄùuœÞ5§·qÅ ÐJ@ÇÉ“°q­:Nt8,Õq¢×9èùuœÞ>§U„°3z+ ãÔšêW. ãD‡C'Z8ͯãt€¬ãô6®XZ è8y6®U@lj‡:N´°ŽÓpz §U„°3z+ ãÔšêW. ãDçÃRçÖwî¿é­û¥mô‚‡8¿Ïq:x×tœÞÆ #@€@+'OÂÆµ è8Ñá°TÇùÆW\ûÞƒÒ6zÁCœ_Çéà]ÓqZE; @ ·:N­©Þqå:Nt8,Õq¢×9èùuœÞ>§·qÅ ÐJ@ÇÉ“°q­:Nt8Ôq¢…Óü:NÈ:N«agôV@Ç©5Õ;®\@lj‡:N´°ŽÓpz §·qÅ ÐJ@ÇÉ“°q­:Nt>,ÕqŽXõµ£W®KÛèq~Ÿãtð®é8­"„  Ð[§ÖTï¸r':–ê8[›fWÓ¤mô‚‡8¿ŽÓÁ»¦ãô6®XZ è8y6®U@lj‡¥:ÎGO¾rÅê+Ò6zÁCœ_Çéà]ÓqZE; @ ·:N­©Þqå:Nt8,Õq¢×9èùuœÞ>§·qÅ ÐJ@ÇÉ“°q­:Nt8Ôq¢…Óü:NÈ:N«agôV@Ç©5Õ;®\@lj‡:N´°ŽÓpz §·qÅ ÐJ@ÇÉ“°q­:Nt>,Õq®yßÁ÷; m£<Äù}ŽÓÁ»¦ã´Šv&@€@otœZS½ãÊtœèpXªã|ïÝËn{ûûÓ6zÁCœ_Çéà]ÓqzW,Œ­tœ< ×* ãD‡ÃR'zƒž_ÇéàíÓqZE; @ ·:N­©Þqå:Nt8Ôq¢…Óü:NÈ:No㊅ @ •€Ž“'aãZtœèp¨ãD ë8§—ÐqZE; @ ·:N­©Þqå:Nt>,Õq>tú†ƒO»6m£<Äù}ŽÓÁ»¦ãô6®XZ è8y6®U@lj‡¥:ÎÖ¦ÙÕ4i½à!ίãtð®é8­"„  Ð[§ÖTï¸r':–ê8Çsñª£.HÛèq~§ƒwMÇém\±0´Ðqò$l\«€ŽKuœèuz~§ƒ·OÇi!ìL€Þ è8µ¦zÇ• è8ÑáPljNóë8 ë8½+F€V:Nž„kÐq¢Ã¡Ž-¬ãt œ^BÇi!ìL€Þ è8µ¦zÇ• è8Ñù°TÇYwàÑW|àci½à!ÎïsœÞ5§·qÅ ÐJ@ÇÉ“°q­:Nt8,ÕqîÜ÷=7û¦mô‚‡8¿ŽÓÁ»¦ã´Šv&@€@otœZS½ãÊtœèpXªãD¯sÐóë8¼}:No㊅ @ •€Ž“'aãZtœèp¨ãD §ùuœuœVÂÎè­€ŽSkªw\¹€Žuœha§áô:No㊅ @ •€Ž“'aãZtœè|¨ãD §ù}ŽÓ²ŽÓ*BØ™½ÐqjMõŽ+Ðq¢Ãa©Ž³µiv5MÚF/xˆóë8¼k:No㊅ @ •€Ž“'aãZtœèpXªãœ¾ü̵‡|:m£<ÄùuœÞ5§U„°3z+ ãÔšêW. ãD‡ÃR'zƒž_ÇéàíÓqzW,Œ­tœ< ×* ãD‡C'Z8ͯãt€¬ã´Šv&@€@otœZS½ãÊtœèp¨ãD ë8§—ÐqzW,Œ­tœ< ×* ãDçÃRçÜœráAÇ¥mô‚‡8¿Ïq:x×tœVÂÎè­€ŽSkªw\¹€ŽKuœÍÍÛ¶5MÚF/xˆóë8¼k:No㊅ @ •€Ž“'aãZtœèpXªãD¯sÐóë8¼}:N«agôV@Ç©5Õ;®\@lj‡:N´pš_ÇéYÇém\±0´Ðqò$l\«€Žuœha§áô:N«agôV@Ç©5Õ;®\@lj·:N´pšßç8 ë8½+F€V:Nž„kÐq¢Ãa©Žsÿ[Þ±µiÒ6zÁCœ_Çéà]ÓqZE; @ ·:N­©Þqå:Nt8,ÕqÒGåÀ£Ò6zÁCœ_Çéà]ÓqzW,Œ­tœ< ×* ãD‡ÃR'zƒž_ÇéàíÓqZE; @ ·:N­©Þqå:Nt8Ôq¢…Óü:NÈ:No㊅ @ •€Ž“'aãZtœèp¨ãD ë8§—ÐqZE; @ ·:N­©Þqå:Nt>,ÕqVyÞšÃÖ¦mô‚‡8¿Ïq:x×tœÞÆ #@€@+'OÂÆµ è8Ñá°TÇI_ª¶«iÒ6zÁCœ_Çéà]ÓqZE; @ ·:N­©Þqå:Nt8,Õq–³qÙ97¥mô‚‡8¿ŽÓÁ»¦ãô6®XZ è8y6®U@lj‡¥:Nô:=¿ŽÓÁÛ§ã´Šv&@€@otœZS½ãÊtœèp¨ãD §ùuœuœÞÆ #@€@+'OÂÆµ è8ÑáPljÖq:N/¡ã´Šv&@€@otœZS½ãÊtœè|XªãÜúÎý7½u¿´^ðç÷9NÓÛ¸bah% ãäIظV':–ê8ßøàŠkß{PÚF/xˆóë8¼k:N«agôV@Ç©5Õ;®\@lj‡¥:Nô:=¿ŽÓÁÛ§ãô6®XZ è8y6®U@lj‡:N´pš_ÇéYÇi!ìL€Þ è8µ¦zÇ• è8ÑáPljÖq:N/¡ãô6®XZ è8y6®U@lj·¥:Ϋ¾vôÊui½à!ÎïsœÞ5§U„°3z+ ãÔšêt\×\sͧ?ýéÏþûÏùçŸ?^üm·Ývæ?]tÑöíÛÇ÷§Á 7ÜðÇoü\vÙe»wïΚë8Ñá°TÇÙÚ4»š&m£<ÄùuœÞ5§·qÅ ÐJ@Ç™ÎÃîéX uœ|púE7mÚô‰O|âW¿úUz誫®J…f¼ÏÍ7ß| 'ìØ±#Ýó¥7~Æíq ãD‡ÃRç£'_¹bõi½à!ίãtð®é8­"„  Ð[g‘Ø] ¼YÇIì|ó›ß­ä…^X¾|ùC=”n¾þúëÇü7Þ8zèÑG]±bÅÓO?½—5ë8Ñá°Tlj^ç ç×q:xûtœÞÆ #@€@+g/ÁØCÝì±ã¤ÏhR©¹óÎ;Çk8餓¾õ­o¥›O<ñDzhóæÍ£‡^{íµ#Ž8"}²3Þsz ãD‡C'Z8ͯãt€¬ã´Šv&@€@otœé<잎Rǹä’KÒ§6ŸÿüçðƒŒþÝÍ“O>™ŠÌ<0^ÌYgõå?ûrºyß}÷¥‡žzê©ñC+W®¼úê«Ç7§:Nt8Ôq¢…uœ„ÓKè8½+F€V:ÎtvOÇ·ÞzkúųôqLúO7}À±Ç›Æ?üpþaMZÒç>÷¹T‚Ò }Az(Õ–ñ:ÓG<é‰ã›Ó':–ê8×¼ïàû¶Ñ âü>Çéà]ÓqZE; @ ·:ÎtvÏ ¼øâ‹‡zè~ô£éÏqÒ÷«ù§ƒŒ7ßK”ê8ß{÷²ÛÞþþ´ou?KÇéàýÕqzW,Œ­tœ%Ìó^z§œrÊW¿úÕé³zõê+¯¼2=Å¿Çé éµ}‰R§íë.Ôþ:No·ŽÓ*BØ™½Ðqö³ÝÙ¥@þn^~ùåÃ;ìŽ;îH HÿBçÏ¿ñ磕Œ¾Wí§?ýiº9ú^µô÷qF=òÈ#é{Õžyæ™ÑÍ=ný®Zt8Ôq¢…Óü:NÈ:No㊅ @ •€Ž³ÇHìÎ.Ž;î¸Ñ·¢íܹó»ßýîÑG=ú›ž÷Þ{ï1Ç3úû8ëׯO¿«6^Õ-·Ürâ‰'úû8D¾_BÇ™ê?³›ŽóŸÑ›ñ¹:N«agôV@ÇÇfƒ¥Hß!>²ùÔ§>•þÊç·¿ýíôßäx%·ß~{ª6é'ýÏÑ÷­J_SöO?ùÇ@ãG'>Ç™1àͽ[©Žó¡Ó7|Úµi;÷J*~¢ŽÓÁ›«ãô6®XZ è8aØÍ*tœèpXªãlmš]M“¶Ñ âü:NÓ*BØ™½ÐqªŒôjB@lj‡¥:αÇ\¼ê¨ Ò6zÁCœ_Çéà]ÓqzW,Œ­tœ‰0ìf•:Nt8,Õq¢×9èùuœÞ>§U„°3z+ ãTéÔ„€Žuœhá4¿ŽÓ²ŽÓÛ¸bah% ãL„a7«Ðq¢Ã¡Ž-¬ãt œ^BÇi!ìL€Þ è8UFz5! ãDçÃRgÝG_ñ¥mô‚‡8¿Ïq:x×tœÞÆ #@€@+g" »Y¥€ŽKuœ;÷}ÏÃ;i½à!ίãtð®é8­"„  Ð[§ÊHï &tœèpXªãD¯sÐóë8¼}:No㊅ @ •€Ž3†Ý¬R@lj‡:N´pš_ÇéYÇi!ìL€Þ è8UFz5! ãD‡C'ZXÇé@8½„ŽÓÛ¸bah% ãL„a7«Ðq¢ó¡Ž-œæ÷9NÈ:N«agôV@Ç©2Ò;¨ ':–ê8[›fWÓ¤mô‚‡8¿ŽÓÁ»¦ãô6®XZ è8aØÍ*tœèpXªãœ¾ü̵‡|:m£<ÄùuœÞ5§U„°3z+ ãTéÔ„€ŽKuœèuz~§ƒ·OÇém\±0´Ðq&°›U è8ÑáPljNóë8 ë8­"„  Ð[§ÊHï &tœèp¨ãD ë8§—ÐqzW,Œ­tœ‰0ìf•:Nt>,ÕqÎýÈ)t\ÚF/xˆóû§ƒwMÇi!ìL€Þ è8UFz5! ãD‡ÃRgsó¶mM“¶Ñ âü:NÓÛ¸bah% ãL„a7«Ðq¢Ãa©Ž½ÎAϯãtðöé8­"„  Ð[§ÊHï &tœèp¨ãD §ùuœuœÞÆ #@€@+g" »Y¥€Žuœha§áô:N«agôV@Ç©2Ò;¨ ':ê8ÑÂi~Ÿãt€¬ãô6®XZ è8aØÍ*tœèpXªãÜÿ–wlmš´^ðç×q:x×tœVÂÎè­€ŽSe¤wP:Nt8,ÕqÒGåÀ£Ò6zÁCœ_Çéà]ÓqzW,Œ­tœ‰0ìf•:Nt8,Õq¢×9èùuœÞ>§U„°3z+ ãTéÔ„€Žuœhá4¿ŽÓ²ŽÓÛ¸bah% ãL„a7«Ðq¢Ã¡Ž-¬ãt œ^BÇi!ìL€Þ è8UFz5! ãDçÃRgõ‘ç­9lmÚF/xˆóû§ƒwMÇém\±0´Ðq&°›U è8Ñá°TÇI_ª¶«iÒ6zÁCœ_Çéà]ÓqZE; @ ·:N•‘ÞAMè8Ñá°TÇYvÎÆeçÜ”¶Ñ âü:NÓÛ¸bah% ãL„a7«Ðq¢Ãa©Ž½ÎAϯãtðöé8­"„  Ð[§ÊHï &tœèp¨ãD §ùuœuœÞÆ #@€@+g" »Y¥€Žuœha§áô:N«agôV@Ç©2Ò;¨ ':–ê8·¾sÿMoÝ/m£<Äù}ŽÓÁ»¦ãô6®XZ è8aØÍ*tœèpXªã|ãƒ+®}ïAi½à!ίãtð®é8­"„  Ð[§ÊHï &tœèpXªãD¯sÐóë8¼}:No㊅ @ •€Ž3†Ý¬R@lj‡:N´pš_Çéù¡-¿L5Çÿâ{ò©V)ÅΘO@Ç©2Ò;¨ ':ê8ÑÂ:NÂ;@öIÙ|iͳh+ ãL„a7«Ðq¢£K©ŽsΝ½r]ÚF/xˆóû§ƒw r4²ŽÓ6§ÙŸùtœ*#½ƒšÐq¢sK©Ž³µiv5MÚF/xˆó‹ß¼k£‘uœùÒšg ÐV@Ç™ÃnV) ãDç–Rç£'_¹bõi½à!Î/~wð®AŽFÖqÚæ4û 0Ÿ€ŽSe¤wP:Ntn)Õq¢×9èùÅïÞ>ÈÑÈ:Î|iͳh+ ãL„a7«Ðq¢s‹Ž-œæ¿!w ý:NÛœfæÐqªŒôjB@ljÎ-:N´pš_ÇÜ@ôKè8ó¥5Ï"@ ­€Ž3†Ý¬R@ljÎ-¥:Î5ï;xã~¤mô‚‡8¿ŽÓÁ»9YÇi›ÓìO€À|:N•‘ÞAMè8ѹ¥TÇùÞ»—Ýöö÷§mô‚‡8¿øÝÁ»9YÇ™/­ymtœ‰0ìf•:Ntn)Õq¢×9èùÅïÞ>ÈÑÈ:NÛœfæÐqªŒôjB@ljÎ-:N´pš_ü†Ü@ôKè8ó¥5Ï"@ ­€Ž3†Ý¬R@ljÎ-:N´pš_ÇÜ@ôKè8msšý ˜O@Ç©2Ò;¨ ':·”ê8:}ÃÁ§]›¶Ñ âü:Nïähdg¾´æY´Ðq&°›U è8ѹ¥TÇÙÚ4»š&m£<ÄùÅïÞ5ÈÑÈ:NÛœfæÐqªŒôjB@ljÎ-¥:αÇ\¼ê¨ Ò6zÁCœ_üîà]ƒ¬ãÌ—Ö<‹¶:ÎDv³J':·”ê8Ñëôüâwoähd§mN³?ó è8UFz5! ãDç'Z8Í/~Cî@ ú%tœùÒšg ÐV@Ç™ÃnV) ãDç'Z8ͯã@î@ ú%tœ¶9ÍþÌ' ãTéÔ„€Ž[Juœu}Å>–¶Ñ âü:Nïähdg¾´æY´Ðq&°›U è8ѹ¥Tǹsß÷<Üì›¶Ñ âüâwïähd§mN³?ó è8UFz5! ãDç–R'zƒž_üîà탬ãÌ—Ö<‹¶:ÎDv³J':·è8ÑÂi~ñrÑ/¡ã´Íiö'@`>§ÊHï &tœèÜ¢ãD §ùuÈD¿„Ž3_Zó,Ú è8aØÍ*tœèÜ¢ãD §ùuÈD¿„ŽÓ6§ÙŸùtœ*#½ƒšÐq¢sK©Ž³µiv5MÚF/xˆóë8¼k£‘uœùÒšg ÐV@Ç™ÃnV) ãDç–Rçôåg®=äÓi½à!Î/~wð®AŽFÖqÚæ4û 0Ÿ€ŽSe¤wP:Ntn)Õq¢×9èùÅïÞ>ÈÑÈ:Î|iͳh+ ãL„a7«Ðq¢s‹Ž-œæ¿!w ý:NÛœfæÐqªŒôjB@ljÎ-:N´pš_ÇÜ@ôKè8ó¥5Ï"@ ­€Ž3†Ý¬R@ljÎ-¥:ι9僎KÛèq~§ƒw r4²ŽÓ6§ÙŸùtœ*#½ƒšÐq¢sK©Ž³¹yÛ¶¦IÛèq~ñ»ƒw r4²Ž3_Zó,Ú è8aØÍ*tœèÜRªãD¯sÐó‹ß¼}£‘uœ¶9ÍþÌ' ãTéÔ„€Ž[tœhá4¿ø ¹è—ÐqæKkžE€@[g" »Y¥€Ž[tœhá4¿Ž¹è—ÐqÚæ4û 0Ÿ€ŽSe¤wP:NtnÑq¢…Óü:ä¢_BÇ™/­ymtœ‰0ìf•:Ntn)ÕqîË;¶6MÚF/xˆóë8¼k£‘uœ¶9ÍþÌ' ãTéÔ„€Ž[JuœôÅÑ_9ð¨´^ðç¿;x× G#ë8ó¥5Ï"@ ­€Ž3†Ý¬R@ljÎ-¥:Nô:=¿øÝÁÛ9YÇi›ÓìO€À|:N•‘ÞAMè8ѹEljNó‹ß;ˆ~ g¾´æY´Ðq&°›U è8ѹEljNóë8;ˆ~ §mN³?ó è8UFz5! ãDç–Rgõ‘ç­9lmÚF/xˆóë8¼k£‘uœùÒšg ÐV@Ç™ÃnV) ãDç–R'}©Ú®¦IÛèq~ñ»ƒw r4²ŽÓ6§ÙŸùtœ*#½ƒšÐq¢sK©Ž³ìœËι)m£<ÄùÅïÞ5ÈÑÈ:Î|iͳh+ ãL„a7«Ðq¢sK©Ž½ÎAÏ/~wðöAŽFÖqÚæ4û 0Ÿ€ŽSe¤wP:NtnÑq¢…Óüâ7ä¢_BÇ™/­ymtœ‰0ìf•:NtnÑq¢…Óü:ä¢_BÇi›ÓìO€À|:N•‘ÞAMè8ѹ¥Tǹõûozë~i½à!ίãtð®AŽFÖqæKkžE€@[g" »Y¥€Ž[Juœo|pŵï=(m£<ÄùÅïÞ5ÈÑÈ:NÛœfæÐqªŒôjB@ljÎ-¥:Nô:=¿øÝÁÛ9YÇ™/­ymtœ‰0ìf•:NtnÑq¢…Óüâ7ä¢_BÇi›ÓìO€À|:N•‘ÞAMè8ѹEljNóë8;ˆ~ g¾´æY´Ðq&°›U è8ѹ¥TÇ9bÕ׎^¹.m£<ÄùuœÞ5ÈÑÈ:NÛœfæÐqªŒôjB@ljÎ-¥:ÎÖ¦ÙÕ4i½à!Î/~wð®AŽFÖqæKkžE€@[g" »Y¥€Ž[Juœž|åŠÕW¤mô‚‡8¿øÝÁ»9YÇi›ÓìO€À|:N•‘ÞAMè8ѹ¥Tlj^ç ç¿;xû G#ë8ó¥5Ï"@ ­€Ž3†Ý¬R@ljÎ-:N´pš_ü†Ü@ôKè8msšý ˜O@Ç©2Ò;¨ ':·è8ÑÂi~rÑ/¡ãÌ—Ö<‹¶:ÎDv³J':·”ê8×¼ïàû¶Ñ âü:Nïähd§mN³?ó è8UFz5! ãDç–Rç{ï^vÛÛߟ¶Ñ âüâwïähdg¾´æY´Ðq&°›U è8ѹ¥Tlj^ç ç¿;xû G#ë8msšý ˜O@Ç©2Ò;¨ ':·è8ÑÂi~ñrÑ/¡ãÌ—Ö<‹¶:ÎDv³J':·è8ÑÂi~rÑ/¡ã´Íiö'@`>§ÊHï &tœèÜRªã|èô ŸvmÚF/xˆóë8¼k£‘uœùÒšg ÐV@Ç™ÃnV) ãDç–RgkÓìjš´^ðç¿;x× G#ë8msšý ˜O@Ç©2Ò;¨ ':·”ê8Çsñª£.HÛèq~ñ»ƒw r4òC[~™jŽÿ… <öäSóeBÏ"P“€Ž3†Ý¬R@ljÎ-¥:Nô:=¿øÝÁÛ9™p´pšß‡e5uÇ2·€ŽSe¤wP:NôUUljNó ‡;ˆ~ ÿG §ùuœ¹S±'Ö$ ãL„a7«Ðq¢¯ª:N´pš_8„Ü@ôKøÏ8Z8ͯãÔÔËÜ:N•‘ÞAMè8ÑWÕRgÝG_ñ¥mô‚‡8¿pØÁ»9™p´pš_Ç™;{bM:ÎDv³J'úªZªãܹï{nöMÛèq~á°ƒw r42áhá4¿ŽSSPw,s è8UFz5! ãD_UKuœèuz~á°ƒ·r42áhá4¿Ž3w*öÄštœ‰0ìf•:NôUUljNó ‡;ˆ~ ÿG §ùuœš‚ºc™[@Ç©2Ò;¨ 'úªªãD §ù…CÈD¿„ÿŒ£…Óü:ÎÜ©ØkÐq&°›U è8ÑWU'Z8Í/Bî@ ú%üg-œæ×qj êŽen§ÊHï &tœè«j©Ž³µiv5MÚF/xˆó ‡¼k£‘ G §ùuœ¹S±'Ö$ ãL„a7«Ðq¢¯ª¥:ÎéËÏ\{ȧÓ6zÁCœ_8ìà]ƒL8Z8ͯãÔÔËÜ:N•‘ÞAMè8ÑWÕR'zƒž_8ìàíƒL8Z8ͯãÌŠ=±&g" »Y¥€Ž}UÕq¢…ÓüÂ!ä¢_ÂÆÑÂi~§¦ îXæÐqªŒôjB@lj¾ªê8ÑÂi~árÑ/á?ãhá4¿Ž3w*öÄštœ‰0ìf•:NôUµTÇ9÷#§\xÐqi½à!Î/vð®AŽF&-œæ×qj êŽen§ÊH¿8uÿý÷Ÿ}öÙgžyæyç÷Ì3ϼÙë8ÑWÕRgsó¶mM“¶Ñ âüÂaïähdÂÑÂi~gîTì‰5 è8o–ŠÝßÇ{쨣ŽzüñÇÓRo¹å–U«VíܹsËÖq¢¯ª¥:Nô:=¿pØÁÛ9ùÿoïÎ^£ØÒ€ÿ!ó8ó<ÿÁ<¸‚E0QÜ»£Ä•ŒzqÉËQ5èHÄ%Š! 8AEpÃQÑ88"£â }PƒÌÇm¦hŒ1ã•NNuÿŠNWWwõ;Õ]ç«:uŠp©…ãýå8åÔP·.¿Y@ŽóÕ&±™¹ذaÃÊ•+ ¡öôôD¾ÓÚÚúÕÈå8¥Þ«ÊqJ-ï¯qyJý6ãR Çûßü÷ÓHsü•Nà_ÿyö›Þ^8`rœ¯6‰ÍÌ…@UUUSSSêÒ¥Këë볇Å9N©÷ªrœR ÇûkBR„͸ÔÂñþKìLÙ€å)?òArœâ–°rŽ>|ø0dÈS§Ne1¯ûi]\˜“=,.ÈqJýƒ/Ç)µ°vËCdÍoÈ PêãüHê1`¯•ã·„•s$ÐÙÙ9ιs粘'Ožœ=,.¼zõêäÉ“9Ø^·ÿ’¿Rüýÿ¼xóþŸÖžùÁ¿‹øãÝßý>þÿàû”åËÛot”åz%µRK]„K-ï¹Ôȱ¿‹ö³)q{÷îEÛ/Rªâ¡2ô¾ë<ÎãÇc;7 @€TŽ@´ÓoÓŠÀcÇŽ-¾§®®®¯ëqb¼µØÈ#—Nk& @€òˆ><ÑöëkÄÝ/š”HJ`ãÆÿç¸jI…- @€|U øþ8'Nœ˜8qbt`ûê’f @€ @ W¯^]¸pa §¶|ùò—/_æ"fA @€ @€ @€ @€ @€ @€HYàÊ•+Ù5;/^¼H9ÔJŽíãÇ»ví6l˜:J|38{öìâÅ‹gÍš_«¸½ZšõÕÞÞW)F5Í;wÍš5—/_N3NQeÍÍÍqcë7nds’سgÏÌ™3ÿü¿)Ö5© “ ¼~ýzýúõqW‘ššš9sæ\¿~={J@y½vüøñØÔ”ž`Í>{ölÞ¼yñs»x9N‚TÒСCÏœ9sÞ½{{ùU«V?«œˆÀÒ¥K:T&†¬ªªŠúJ$6aôèììœ0a‚§·L:s"Ç‘¦SߎäíÛ·S¦L9þ|,ÖÓÓ³dÉ’£G~û%ž%; 6d[b;=ztkkkîÖ¢ì~øðáÓ§Oc÷!ÇI¿®—-[–yñâÅ8õͳlŽB"qn´ÌóçÏã›uóæÍDbFoÕ«WG**Çé-“Î9N:uÑo$ÑÇ òšl±ø Œ){¨@ <âèeSSS¶.ql³¾¾>{¨”@œJ–ã$U#ýsëÖ­¨²ô»¤K îôÝÐÐìV>·_ .DÂhƒÉqúµÄä8ƒˆÿ½'q"ÍùÞWYž@Žâ– ±Ë8uêTóºŸÖÙ×g©ä8©ÕH¿ñÄ„èÿÙïb,Ÿþ9úF/ÐÏŸ?V >÷Ûïß¿Ÿ1cF¤¢ÑeWŽóm«Á}6rœø*Åå8q°´¥¥¥»»{pãñé} ÄÏ݈#>ÜØØM¾íÛ·G_‘¾6Ÿ@N¢ Mì2Î;—ÅüäÉ“³‡ I Èq’ªŽ~ƒyóæM$8×®]ëwI ¢@œˆLgöìÙQ_ƒ†îK `ÇŽ‹gå8}%2?Ž—9r$:½Ç@+Ñ–?~|”‰MÅ]]]Ñö9rdŒóéÓ§ø}ª£×Añ2Êò.àw«PQoÙ²%~úâk?ƒq¥[E­{^V¶­­-NÄžøfíÞ½ûÑ£Gy‰¼2ã¼téR\’Sôçqw°Êܬ5 @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€úX´hÑŽ;:::bÉ®®®†††¸ráU===ûöí«©©yñâE¿ïc @€¤ wcÏR˜ööö .,X° 8°âŠç+ @€ @ ýû÷5êÁƒ¿üõ—M›6ÕÖÖ>þ< ìúõërœLC @€\ìÚµëo¿Ní§iä8¹¨AA @€ P,ðñãÇqãÆ]¾|9fÊqŠe”  @€È£@KKK[[ÛÌ™3»»»å8y¬A1 @€ D‚3þü÷ïßÇøiuuuãÇÏÆ¸}ûv\¡S]]}àÀlù/’ l¾ @€ˆ¦xÌÞÊqz›˜C€ @€@²qsœ={öÜ¿¿w„qœ8¡S__÷Íéý¬9 @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€òø/ŸŽÒ& endstream endobj 8 0 obj 31244 endobj 10 0 obj << /Length 11 0 R /Type /XObject /Subtype /Image /Width 1100 /Height 800 /ColorSpace /DeviceGray /Interpolate true /BitsPerComponent 8 /Filter /FlateDecode >> stream xíÐ  þ©o( 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ ü ,Û! endstream endobj 11 0 obj 3860 endobj 12 0 obj << /Length 13 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >> stream x…UßoÛT>‰oR¤? XG‡ŠÅ¯US[¹­ÆI“¥íJ¥éØ*$ä:7‰©Û鶪O{7ü@ÙH§kk?ì<Ê»øÎí¾kktüqóÝ‹mÇ6°nÆ¶ÂøØ¯±-ümR;`zŠ–¡Êðv x#=\Ó% ëoàYÐÚRÚ±£¥êùÐ#&Á?È>ÌÒ¹áЪþ¢þ©n¨_¨Ôß;j„;¦$}*}+ý(}'}/ýLŠtYº"ý$]•¾‘.9»ï½Ÿ%Ø{¯_aÝŠ]hÕkŸ5'SNÊ{äå”ü¼ü²<°¹_“§ä½ðì öÍ ý½t ³jMµ{-ñ4%ׯTÅ„«tYÛŸ“¦R6ÈÆØô#§v\œå–Šx:žŠ'H‰ï‹OÄÇâ3·ž¼ø^ø&°¦õþ“0::àm,L%È3â:qVEô t›ÐÍ]~ߢI«vÖ6ÊWÙ¯ª¯) |ʸ2]ÕG‡Í4Ïå(6w¸½Â‹£$¾ƒ"ŽèAÞû¾EvÝ mî[D‡ÿÂ;ëVh[¨}íõ¿Ú†ðN|æ3¢‹õº½âç£Hä‘S:°ßûéKâÝt·Ñx€÷UÏ'D;7ÿ®7;_"ÿÑeó?Yqx endstream endobj 13 0 obj 1047 endobj 9 0 obj [ /ICCBased 12 0 R ] endobj 3 0 obj << /Type /Pages /MediaBox [0 0 792.0792 576.0576] /Count 1 /Kids [ 2 0 R ] >> endobj 14 0 obj << /Type /Catalog /Pages 3 0 R /Version /1.4 >> endobj 15 0 obj (Mac OS X 10.7.3 Quartz PDFContext) endobj 16 0 obj (D:20120212024458Z00'00') endobj 1 0 obj << /Producer 15 0 R /CreationDate 16 0 R /ModDate 16 0 R >> endobj xref 0 17 0000000000 65535 f 0000037374 00000 n 0000000175 00000 n 0000037123 00000 n 0000000022 00000 n 0000000157 00000 n 0000000289 00000 n 0000000378 00000 n 0000031821 00000 n 0000037087 00000 n 0000031842 00000 n 0000035895 00000 n 0000035916 00000 n 0000037066 00000 n 0000037216 00000 n 0000037280 00000 n 0000037332 00000 n trailer << /Size 17 /Root 14 0 R /Info 1 0 R /ID [ ] >> startxref 37449 %%EOF pymc-2.2+ds/docs/_images/gof.png000066400000000000000000000464431204033704200165520ustar00rootroot00000000000000‰PNG  IHDRL 9÷sBIT|dˆ pHYsaa¨?§i IDATxœìÝ}Œå}&þëÌxìc{Æ6ö060Ý.1;-Ñ.-©’—k›:iíÒ« 4^µ]‹6„’¤HS*"RXhmTXý0a•XO#¤.Ä^¶ËË®,¿4 "8ÆoÁ3ö¼x<çüþ`=‰Ÿ¤IÎ Ožqø|þšsžû_!Í¥ûþ>µf³Ù ãÚª0Õ(L & €… @ @aP 0(P˜(L & €… @ @aP 0(P˜(L & €… @ @aP 0(P˜(L & €… @ @aP 0(P˜(L & €… @ @aP 0(P˜(L & €… @ @aP 0(P˜(L & €… @ @aP 0(P˜(L & €… @ @aP 0(P˜(L & €… @ @aP 0(P˜L«:À›ÝÖ­[óµ¯}-ÇŽK½^ÏÅ_œåË—çŒ3ÎH’Üwß}Ù»wo¦OŸ>þ™Å‹çºë®;å{üñlÛ¶-IÒÛÛ›uëÖeÚ´ïýz›Íf¾ð…/dûöí©ÕjYºtiÖ¬YóS¸C8ýÔšÍf³êof¿û»¿›øÃY¾|y†††òŸÿóN­VËŸþéŸ&Iî¿ÿþ|àHww÷¿ú}}}Ù¼ysþæoþ&õz=û·›$ù“?ù“ñ5=ôPvïÞ[o½5Irë­·æ‚ .ÈÚµkË»98M9’S±_üÅ_ÌòåË“$3gÎÌW\‘gŸ}6‡_ó£:­f³™M›6eÅŠ©×ëI’U«VeÛ¶m9pà@’dxx8}}}¹úê«ÓÖÖ–¶¶¶¬\¹2[¶lÉÈÈH‰w§'…IÅn¾ùæS^wvv¦Ñhd``à'úüË/¿œýû÷gÉ’%ãïõöö¦££#Ï?ÿ|’dÇŽÎùçŸ?¾fÉ’%ÎŽ;Þ€»€Ÿ-f˜L1»wïΙgž™ÞÞÞñ÷}ôѼòÊ+™={v~åW~%—^zéøL“C‡%IæÌ™3¾¾­­-ã»TN®éêê_sòçïßɼNa2…=z4}}}ùÃ?üÃñ÷Î:묜y晹îºë²oß¾<ôÐCÙ¼ys>õ©O&Éøqœ“êõúø.•ttt¤V«_oooÏ´iÓ~¢,ÇÏ¡C‡R¯×ÓÞÞ>éûx³Ëððp,XpÊÃ<˜ú&SÈßÿýßç×ý׳lÙ²ñ÷~ë·~küçE‹eõêÕùÈG>’={öäÜsÏMggg’×ç”|ÿ.“áááñ]$]]]M³Ù/MÆÆÆrâĉSvük:äèÀ$\xá…9묳ªŽA &SÄC=”ÎÎά^½úG®ëííM½^ϳÏ>›sÏ=7 ,H’ô÷÷§§§'IÒh4rôèÑÌŸ??IÆ× Œ—*'w–œ\ó£Ìœ93Iòs?÷s?°“þ53þîïRH³«+#þpÕq ÃÃÃy饗Æÿ®âô¡0™}ôÑ:t(üÇœ$yñÅ“$?ÿó?Ÿûï¿?ëׯ_ûÊ+¯dxx8oûÛ“$gŸ}vzzz²{÷îœwÞyI’—^z)£££¹ä’K’¼ÞdÖëõìÚµ+¿ôK¿”äõY)õz=K—.ý±ùÚÚ^Ÿ \¯×3kÖ¬7è®ù™wãã?ú¯€7»“Wqúð«X___žzê©üÆoüF¾ùÍoæ›ßüfž}öÙìÙ³'IòOÿôOyî¹ç’$ƒƒƒyâ‰'ò–·¼e¼©ÕjYµjUúúú2<<œ$Ù´iS.»ì²tww'y½è¸òÊ+óøã§Ñh¤Ñhä‰'žÈŠ+œ¡€¢Öl6›U‡x³ʺuëòÃ~ëׯÏòåËóÕ¯~5O=õTŽ?žY³fåâ‹/Îå—_>^†œôÄOdëÖ­I^?¶³nݺL›vꢇ~8Û·oO’,[¶,kÖ¬ù‰rö÷÷çŸÿùŸsÁØaЂÁÁÁìÚµ+—^zé)s'™ú&üX &¢ý…’ÑѤ£#c]Tu¨„Âäôe† PŠÎk®IÛÞ½i,^œ#ÿogÀéBa”bà+_IÆÆ’ööª£´La”¢ñÖ·V`Â<% @aPàHPŠY6¤öÚkiΛ—Á»ï®:@K&@9ŽKm` ÍŽŽª“´La”bðsŸ«:À„™aP 0(p$(Emß¾dl,ioOsÑ¢ªã´Da”bÎ{Þ“¶½{ÓX¼8G¶o¯:@K&@)Ž}ö³ÉÈH2cFÕQZ¦0JqâòË«Ž0a†¾(L ÉJQ¿óÎÔúûÓœ3'Ã7ÝTu€–(L€RLÛº5mû÷§ÑÓSu€–)L€R}챪#L˜& €… @Â(ÅÜeËrÆüù™»lYÕQZfè+PŠÁ[oMmh(Í™3«ŽÐ2… PŠÑÕ««Ž0aŽä(L ÉJ1ýÁS;v,ÍÙ³süÚk«ŽÐ… PŠúý÷§mß¾4-R˜§… PŠþgž©:À„™aP 0(P˜˜a”¢ëŠ+Ò¶==xòɪã´Da”âøêÕ© ¤ÙÕUu€–)L€RŒ¬__u€ 3à@aPàHPŠŽ-[’¡¡dæÌŒ^yeÕqZ¢0J1ëÆÓ¶wo‹çˆÂ8Í(L€RÙ¶-i6“Z­ê(-S˜åð8aà4fè+@ À‘ ³×®MÛÁƒitwçØÆUÇh‰Â(Eã¼óÒìîNsÞ¼ª£´La”bè¶ÛªŽ0af˜(L ÉJÑþ ÉèhÒÑ‘±‹.ª:@K&@):¯¹&m{÷¦±xqŽlß^u€–(L€R |å+ÉØXÒÞ^u€–)L€R4ÞúÖª#L˜¡¯ €Gr€RÌÚ°!µ×^KsÞ¼ Þ}wÕqZ¢0ÊqìXjivtT e  ƒŸû\Õ&Ì €… @#9@)jûö%ccI{{š‹U %  sÞóž´íÝ›ÆâÅ9²}{ÕqZ¢0Jq쳟MFF’3ªŽÐ2… PŠ—_^u€ 3ô @aPàHPŠúw¦Öߟæœ9¾é¦ªã´Da”bÚÖ­iÛ¿?žžª£´La”âècU`ÂÌ0(P˜8’ÃOl`øDŽ×F«ŽÁ¤V«enÝÿ~-ñûÌ׿ƒÇmJúY±êmݹúÂ3Kûþ¹Ë–¥mïÞ4/ΑíÛKûwÊ 0á'öþ‘ìªUƒ7Èw‡N”úýƒ·ÞšÚÐPš3g–úï”Aa”btõêª#L˜ó €Gr€RLðÁÔŽKsöì¿öÚªã´Da”¢~ÿýiÛ·/E‹&ÀiGa”¢ÿ™gªŽ0af˜(L &f˜¥èºâŠ´íߟFOOž|²ê8-Q˜¥8¾zujivuU e  #ë×W`ÂÌ0(P˜8’”¢cË–dh(™93£W^Yu€–(L€R̺ñÆ´íÝ›ÆâÅ9¢0N3  G¶mKšÍ¤V«: @Ë&@9Wu€ 3à@aPàHPŠÚ¾}ÉØXÒÞžæ¢EUÇh‰Â(Åœ÷¼'m{÷¦±xqŽlß^u€–(L€Rûìg“‘‘dÆŒª£´La”âÄå—W` }(P˜8’S±­[·æk_ûZŽ;–z½ž‹/¾8Ë—/Ïgœ1¾æé§ŸÎ–-[’$ ,Èõ×_ŸY³fò=?þx¶mÛ–$éííͺuë2mÚ÷~½Íf3_øÂ²}ûöÔjµ,]º4kÖ¬ù)Ü!oVõ;ïL­¿?Í9s2|ÓMUÇh‰&»çž{²|ùòÜyçùèG?šo|ãùüç??~ý¹çžË< 6äöÛoOOOOþê¯þê”ïèëëË–-[ò±},wÜqGsß}÷²fãÆÙ¹sgn¿ýöÜvÛmÙ¹sg6nÜøS¹GÞœ¦mÝšŽ'ŸÌ´­[«ŽÐ2…IÅ~ñ1Ë—/O’Ìœ93W\qEž}öÙ>|8I²iÓ¦¼óïÌüùó“$W_}u¾ñodçÎI^ß9²iÓ¦¬X±"õz=I²jÕªlÛ¶-H’ §¯¯/W_}uÚÚÚÒÖÖ–•+WfË–-ùiß2oG{,ýÛ¶åècU e “ŠÝ|óͧ¼îììL£ÑÈÀÀ@†‡‡³cÇŽ,Y²düzWWW/^œgŸ}6IòòË/gÿþý§¬éííMGGGžþù$ÉŽ;2<<œóÏ?|Í’%KÆ¿8•ÂdŠÙ½{wÎ<óÌôööŽï2éêê:eMWWW¾ûÝï&I:”$™3gÎøõ¶¶¶tvvŽþäšïÿž“?Ÿ\|Âd 9zôhúúúò‡ø‡I’$?jsÒŒ3Ư=zô‡®©×ëãkÒÑÑ‘Z­6~½½½=Ó¦M_|Âd ùû¿ÿûüú¯ÿz–-[–ä{»@†‡‡OY7<<<~­³³óÇ®éêêÊèèhšÍæøõ±±±œ8qâv¯Àeî²e9cþüÌýÿ=œNšC‡å†nH’¼øâ‹yñÅS¯×sá…f÷îÝãkòï|'ïxÇ;’$gŸ}vzzzNYóÒK/ett4—\rI’ä /L½^Ï®]»Æ×ìÞ½;õz=K—.ýiÜ"oB£«Wçøïÿ~F¿¯8](L*Ö××—§žz*¿ñ¿‘o~ó›ùæ7¿™gŸ}6{öìIòú#‚¿þõ¯gݼys–,Y2¾Ã¤V«eÕªUéëë?–³iÓ¦\vÙeéîîNòú<“+¯¼2?þxFFžx≬X±"Ó§O¯à®`j«5¿°?UCCCY·n]~د`ýúõY¾|y’äë_ÿz¾úÕ¯&Iº»»sÝu×eÖ¬Y§¬â‰'²uëÖ$¯?Vxݺu™6íÔW?üp¶oßž$Y¶lYÖ¬YóåìïïÏ?ÿó?çžÉÞ¡Úÿ§…k.^”¾ã¬ªcÀÏ´ÁÁÁìÚµ+—^zé)O7eêS˜ðc)L~6•]˜LðÁÔŽKsöì¿öÚÒþ˜Ê&§/C_RÔï¿?mûö¥±h‘Â8í(L€Rô?óLÕ&ÌÐW€… @ À  ]W\‘¶ýûÓèéÉÀ“OV %  ÇW¯Nm` Í®®ª£´La”bdýúª#L˜& €Gr€RtlÙ’ %3gfôÊ+«ŽÐ… PŠY7Þ˜¶½{ÓX¼8G&ÀiFa”âȶmI³™ÔjUGh™Â(‡Ç §1C_ &Žä¥˜½vmÚL£»;Ç6n¬:@K&@)ç—fwwšóæU e  C·ÝVu€ 3à@aPàHPŠö^HFG“ŽŽŒ]tQÕqZ¢0JÑyÍ5iÛ»7Å‹sdûöªã´Da”bà+_IÆÆ’ööª£´La”¢ñÖ·V` }(P˜8’”bÖ† ©½öZšóæeðŽÐ… PŽcÇRH³££ê$-S˜¥üÜ窎0af˜(L ÉJQÛ·/KÚÛÓ\´¨ê8-Q˜¥˜óž÷¤mïÞ4/ΑíÛ«ŽÐ… PŠcŸýl22’̘Qu€–)L€Rœ¸üòª#L˜¡¯ €Gr€RÔï¼3µþþ4çÌÉðM7U %  Ó¶nMÛþýiôôT e  G{¬êf† @ @aP 0J1wÙ²œ1~æ.[Vu€–ú ”bðÖ[SJsæÌª£´La”btõêª#L˜#9 €Gr€RLðÁÔŽKsöì¿öÚªã´Da”¢~ÿýiÛ·/E‹&ÀiGa”¢ÿ™gªŽ0af˜(L &f˜¥èºâŠ´íߟFOOž|²ê8-Q˜¥8¾zujivuU e  #ë×W`ÂÌ0(P˜8’”¢cË–dh(™93£W^Yu€–(L€R̺ñÆ´íÝ›ÆâÅ9¢0N3  G¶mKšÍ¤V«: @Ë&@9Wu€ 3à@aPàHPŠÚ¾}ÉØXÒÞžæ¢EUÇh‰Â(Åœ÷¼'m{÷¦±xqŽlß^u€–(L€Rûìg“‘‘dÆŒª£´La”âÄå—W` }(P˜8’”¢~ç©õ÷§9gN†oº©ê8-Q˜¥˜¶ukÚöïO£§§ê(-S˜¥8úØcUG˜03L & €… PŠ¹Ë–åŒùó3wÙ²ª£´ÌÐW ƒ·ÞšÚÐPš3gV e  £«WW`ÂÉ(P˜8’”búƒ¦vìXš³gçøµ×V %  õûïOÛ¾}i,Z¤0N;  ýÏúåÏdᑃyunwVÞ¢0N/  ¸ñRK3ÍÔªŽÐ2… PŠÁú¬ª#LX[Õ¦… @#9SÀ‰'òÈ#dóæÍ¹÷Þ{ÓÝÝ=~í¾ûîËÞ½{3}úôñ÷/^œë®»î”ïxüñdzmÛ¶$IoooÖ­[—iÓ¾÷ëm6›ù¾íÛ·§V«eéÒ¥Y³fMÉwƛ٧øXæ=’×:çæÆÝQu€–(L*¶ÿþÜsÏ=9묳Òh4~àz­Vˆ N)QŠúúú²eË–üÍßüMêõzþöoÿ6÷Ýw_þäOþd|ÍÆ³{÷îÜ~ûíI’[o½57nÌÚµkßø›‚$ß:óœž=/³ºªŽÐ2Gr*622’?ú£?Ê»Þõ®uM³Ùü‘×6mÚ”+V¤^¯'IV­Z•mÛ¶åÀI’áááôõõåꫯN[[[ÚÚÚ²råÊlÙ²%###oì ÁÿsÏoÞO¾ÿOsÏoÞPu€–)L*vÎ9çdáÂ…?²ùQ^~ùåìß¿?K–,¯··7yþùç“$;vìÈððpÎ?ÿüñ5K–,ÉððpvìØ1¹€ŸAŽäœ}ôѼòÊ+™={v~åW~%—^zéøL“C‡%IæÌ™3¾¾­­-9|øð)kºº¾w4âäÏ'×ߣ0™âÎ:묜y晹îºë²oß¾<ôÐCÙ¼ys>õ©O%IŽ=š$ãÇqNª×ëH’ ¤££#µZmüz{{{¦M›6¾Þh¼ü/éÍh{Gv½äÇ` Q˜Lq¿õ[¿5þó¢E‹²zõê|ä#Éž={rî¹ç¦³³3ÉësJ¾—Éðððø.’®®®ŒŽŽ¦ÙlŽ—&ccc9qâÄ)»Nàt׃ÏÂ#óêÜ呪ã´DaršéííM½^ϳÏ>›sÏ=7 ,H’ô÷÷§§§'IÒh4rôèÑÌŸ??IÆ× Œ—*'w–œ\o´õ×Ý•i±œhk¯: @Ë }âî¿ÿþS^¿òÊ+ÎÛßþö$ÉÙgŸžžžìÞ½{|ÍK/½”ÑÑÑ\rÉ%I’ /¼0õz=»ví_³{÷îÔëõ,]ºô§p¼íé9'/.ú¹ìé9§ê(-S˜L1ŧåüÓ?ýSž{î¹$Éàà`žx≼å-oÉyç—$©ÕjYµjUúúú2<<œ$Ù´iS.»ì²tww'y}žÉ•W^™Ç<øGr*vâĉüÅ_üE†††’$wÝuW,X|ä#I’uëÖåK_úR~øáÌš5+_|ñ)sM’ä½ï}oFGGsÇw$yýØÎºuëNY³víÚ<üðÃùøÇ?ž$Y¶lYÖ¬YSöíÀiIaR±iӦ哟üä¿z}ÅŠY±bÅýž«®º*W]uÕ\£ á§éæ/Ý9ƒýéŸ5'Ÿúí UÇh‰Â(ÅÌãC™=2˜ÑiUGh™Â(Å'ÖüyÕ&ÌÐW€… @#9@)ôJ{£‘±¶¶š³ ê8-Q˜¥xðÞõYxä`^Û•·úåÏT ev˜LÒÙgŸüÇÌàà`~ù—9K–,©:L ¸ñRK3ÍÔªŽÐ2…É$ýÎïüN’ddd$÷Þ{o8+¯¼2Ë—/wT‡7µÁºÇ §/…É$mܸ1íííÙºuk~á~!øÀÆßÿýßÿýŠÓ¡0™¤ÿù?ÿgV®\™¿þë¿ÎÌ™3“$'NœÈË/¿\q2`¢&“ôÿãÌ¿ù7ÿ&Ó§OÏñãÇ3}úôL›6-6l¨:TêÓ|,óŽÉkssã‡î¨:@K<%g’}ôÑ<ýôÓI’çž{.[¶lI’Ôëõ*cAå¾uæ9yqao¾uæ9UGh™&“ÔÛÛ›+®¸"IòïþÝ¿Ëÿïÿ½âD05Üó›7T`Âì0yœ8q"I266–¡¡¡ŠÓ“e‡É$]xá…¹ñÆÇg˜¬[·®êHÀ$)L&é~áò™Ï|&¯¼òJÎ>ûìªãÀ”qÁËÿ’Ž±ÑŒ¶wd×ÙKªŽÐ…ÉàÀéïïÏŽ;òÔSOå†Ìn€»üx9˜Wçvgå-T % “IºÿþûóꫯfáÂ…I’o}ë['‚©aýuweZc,'ÚÚ«ŽÐ2…É$?~<ù—9þzÏž=¦©cOÇ §/OÉ™¤Å‹ç™gžÉþýûsàÀüïÿý¿«ŽL’&“ôµ¯}-oyË[Æ_8p ï{ßû*LL–Âd’®¹æšüÚ¯ýÚøëíÛ·W˜¦Ž›¿twæ ö§Öœ|ê·7T % “Iºüò˳cÇŽ8p ½½½Y²ÄãS!IfÊì‘ÁŒNë¨: @Ë&“´yóæ8p µZ-çŸ~¾øÅ/fíÚµUÇ‚Ê}bÍŸW` }¤F£‘?øƒ?Èüùó³hÑ¢tuuU ˜$…É$ ï0yíµ×288Xu$`’É™¤K/½4÷Þ{o¾õ­oå…^È5×\Su$˜ôJ{£‘±¶¶š³ ê8-Q˜LÒyç—Ûn»-ÃÃé×ë9qâDÕ‘`JxðÞõYxä`^Û•·õÑ‘ w̨: @Ë&o€Y³feáÂ…©×ëUG)cËÅï®:À„™a2I}}}ùüç?Ÿgžy&GÍûoÿ­êHÀ$)L&ipp0ýèG³páÂüüÏÿ|fÍšUu$`’É™¤‘‘‘?~œÿôŸþSÎ;ï¼´µµeÏž=¹ä’KªŽL‚Âd‚vìØ‘îîîŒåúë¯O’4›Í<õÔS'ƒ©áÁ{>œ‡s¨k~®ýã¿«:@K&Ô××—÷½ï}yç;ß™ÁÁÁ,Y²$sæÌÉÛÞö¶ª£Á”°å¢+2{d0Çf̪: @Ë&tî¹çæÜsÏÍÀÀ@¶lÙ’ .¸ IÒÖf, $ÉÆ_{Õ&Ì_÷“´téÒ,X° I’;wVœ˜,;L&èÅ_Ì“O>™$ùö·¿=þóóÏ?ïXœæ&tàÀìÚµ+I2þüìÚµ+Íf3û÷ï¯8L —ïÜ–£Ç3Ò1=O¿í²ªã´Da2A×^{m.¼ðÂxÇŽ¤©ç£_þL9˜Wçvgå- àô¢0™ V–ü¨÷áÍæ7þCji¦™ZÕQZ¦0J1X÷8aàôå)9 €Gr€R|úeÞÑ#y­snnüÐUÇh‰Â(Å·Î<'‡gÏËÀ¬®ª£´La”âžß¼¡êf† @ À‘ ¼ü/éÍh{Gv½¤ê8-Q˜¥¸ëÁgᑃyunwVÞòHÕqZ¢0J±þº»2­1–míUGh™Â(ÅžžsªŽ0a†¾(L ÉJqó—îΜÁþôÏš“Oýö†ªã´Da”bæñ¡ÌÌè´Žª£´La”âkþ¼êf† @ À‘  ú¥½ÑÈX[[ÍYPu€–(L€Rñ»7gú‰Ñ÷”à4¤0JñÜ¿½¨êfè+@ À‘ ÿáÿk:‡åh}vþË{?Xu€–(L€R\òâÿÉü£ßÍáÎ3ªŽÐ2… PŠõ7|ºêf† @ @aP`†Épâĉ<òÈ#Ù¼ysî½÷ÞtwwŸrý駟Ζ-[’$ ,Èõ×_ŸY³f²æñÇ϶mÛ’$½½½Y·n]¦MûÞ¯·Ùlæ _øB¶oßžZ­–¥K—fÍš5%ßof›?ù;Yxä`^Û•·}õ­‘ƒ9˜UO¨›`”bO“·†/—¾&Žä¥¸iå3¾gWv¶ËÕ—\_õ€º&@)ž›8%;Zǧ»¥½ê)uL€R,ÿøÂª' š;L €Gr€RœðÂÓi<Пþ‘yêÝÓªžPÁ(Å·})“vmËÖq™¿dUÕsê"˜¥XtÙU;ý #«žP7Á(ÅóGO©zÀ ¹ô @0(p$(Åâ»–eìž®tµŒÍWÏý\Õsê"˜¥hÞ×›Ö½{Ò?ª±ê)uL€R\{᪞0hî0(L ÉJÑѵ=#kµhhÈö±UϨ‹`”â¶‹2i×¶l×™ùKVU= .‚ PŠk/XœÑûû³Ï»äÃ`”â±ãN®zÀ ¹ô @0(p$(Å¥ëoO[ßîô4µæ»g_\õ€º&@)N}ö™Ðórv´Uõ€º &@)-¼©ê ƒæ€Á @0(p‡ Pе7œŸI»¶eë¸ÎÌ_²ªê9uL€R¬˜wyšú÷¦¯qLÕSê&˜¥XwÊYUO4w˜&Žä¥øäÏÖ¦eooöŒiÎšÓæW= .‚ PŠ‹º3]Û³ml‡` ;‚ PŠó®YYõ€As‡ @`P ˜¸Ã(Åm˯LG÷ŽloŸÏ\usÕsê"˜¥Xwòœ´îÝ“ÝcZªžP7Á(Å=¯ê ƒæ€Á À‘ ³õHÆôïËÞÆÑyxúéUϨ‹`”âów#“vmËÖq™¿D0†Á(ŧ¯¾5#r03¢ê)uL€RìiòvÂÀðåÒW€Á À‘ 7­übÆ÷ìÊζq¹ú’뫞PÁ(Ås§dGëøt·´W= n‚ PŠå_Xõ€As‡ @`PàHPŠ^x:úÓ?²1O½{ZÕsê"˜ q«W¯Î£>šÖÖÖϵ´´äšk®øøá‡κuë’$¹üòËÓÒÒrÈÏsï½÷æ‘GI’L:5 ,ȨQ¾ý”çÆÛ¾”I»¶eë¸ÎÌ_²ªê9uñ'æaà’K.ÉŒ3^ók=öXV®\™¯}ík™0aBî¸ãŽüÓ?ýS®¿þÞÆõþûïϺuëòµ¯}-MMMùæ7¿™þçÎßýÝß½]¿Ž@‹.»1£j²¿adÕSêæ“aîž{îÉG>ò‘L˜0!IrÎ9çä׿þu~õ«_%I<˜{î¹'ù—™¦¦¦$É'>ñ‰<òÈ#ùÃþPÙnÏ=%Ͼã˜<ô”ª§ÔM0Æúúúòä“OfÚ´ÿ¹¢½½=ïz×»²qãÆ$É /¼—^zé×L:5yüñÇßöÍ08’3 <øàƒY½zu3k֬̚5+---Ù±cG’W"ÉÿÖÞÞž—_~9I²}ûö$ÉØ±c¾ÞÐж¶¶J0â:;;ÓÚÚš+¯¼2»víÊwÞ™U«Våæ›oNwww’ µyÕ˜1c¾ÖÓÓóš¯ijjx ”añ]Ë2vOWºZÆæ«ç~®ê9uq$gˆ;óÌ33oÞ¼444䨣ŽÊ…^˜®®®<þøãO–ôõõòcúúú¾ÖÖÖö¾Êм¯7­{÷¤y_oÕSêæ “a¦­­-“'OÎÆsñÅ'É=)ÒÝÝN8!É+o3œ$]]]9ú裓$µZ-===ÅB®½ð UO4O˜ q·ÜrKöïß?ðqooo^|ñÅ|àHSSSf̘‘M›6 |½»»;¿ÿýï3sæÌ$É»ßýî}ôч¼fË–-éïïÏ©§žúöýB`L†¸ŸÿüçÙ°aC’dß¾}¹÷Þ{ÓÔÔ”~ðƒI^y‹àÿøÇ¸®]»6Ó¦MxÂdĈùÄ'>‘ûï¿àXÎ=÷Ü“ÓO?=üŠ`ès$gˆ»ð óÀdݺuinnΉ'ž˜üÇ̨Q¯|ëN9å”\rÉ%Y¶lY’W.‰]¼xñ!?ÇÙgŸþþþ\ýõI^y[á ¼½¿Ž8]Û3²Vˆ†lÛQõ€º&CÜìÙ³3{öì7|͇?üá|øÃ~Ã×Ì›7/óæÍ{+§ÁºmÅ¢LÚµ-[Çufþ’UUϨ‹`”âÚ gôþþìÕXõ€º &@);îäª' šK_ €Gr€R\ºþö´õíNOSk¾{öÅUϨ‹`”âÔg‘ =/gGÛQUO¨›`”bÑ›ªž0hî0(L €w˜¥X{Ãù™´k[¶ŽëÌü%«ªžPÁ(ÅŠy—§©oúÇT= n‚ PŠu§œUõ€As‡ @`PàHPŠOþlmZööfϘæ¬9m~Õsê"˜¥¸è¡;ÓÙµ=ÛÆv&À°#˜¥8ïš•UO4w˜&‚ @;L€RܶüÊttïÈöö ùÌU7W= .‚ PŠu'ÏIëÞ=Ù=¦¥ê)uL€RÜñÑóªž0hî0(L ÉJ1ûWdLÿ¾ìm‡§Ÿ^õ€º&@)>÷72i×¶l×™ùK`xL€R|úê[3"s0#ªžP7Á(Åž&o' _.}(L ÉJqÓÊ/f|Ï®ìl—«/¹¾ê9uL€R<7qJv´ŽOwK{ÕSê&˜¥Xþñ…UO4Á†‰Æ‘#òÛ}UÏà-Ö>fdÆ77V=(L`˜èí¯eáÝOU=ƒ·Ø÷>5]0€!H0Jq O§ñ@úG6æ©wO«z@] 7Þö¥LÚµ-[Çufþ’UUϨ‹`”bÑe7fTí@ö7Œ¬z @Ý Ï=¥ê ƒÖPõ€¡F0(p$(Åâ»–eìž®tµŒÍWÏý\Õsê"˜¥hÞ×›Ö½{Ò?ª±ê)uL€R\{᪞0hî0(L ÉJÑѵ=#kµhhÈö±UϨ‹`”â¶‹2i×¶l×™ùKVU= .‚ PŠk/XœÑûû³Ï»äÃ`”â±ãN®zÀ ¹ô @0(p$(Å¥ëoO[ßîô4µæ»g_\õ€º&@)N}ö™Ðórv´Uõ€º &@)-¼©ê ƒæ€Á @0(p‡ Pе7œŸI»¶eë¸ÎÌ_²ªê9uL€R¬˜wyšú÷¦¯qLÕSê&˜¥XwÊYUO4w˜&Žä¥øäÏÖ¦eooöŒiÎšÓæW= .‚ PŠ‹º3]Û³ml‡` ;‚ PŠó®YYõ€As‡ @`P ˜¸Ã(Åm˯LG÷ŽloŸÏ\usÕsê"˜¥Xwòœ´îÝ“ÝcZªžP7Á(Å=¯ê ƒæ€Á À‘ ³õHÆôïËÞÆÑyxúéUϨ‹`”âów#“vmËÖq™¿D0†Á(ŧ¯¾5#r03¢ê)uL€RìiòvÂÀðåÒW€Á À‘ 7­übÆ÷ìÊζq¹ú’뫞PÁ(Ås§dGëøt·´W= n‚ PŠå_Xõ€As‡ @`PàHPŠ^x:úÓ?²1O½{ZÕsê"˜¥¸ñ¶/eÒ®mÙ:®3󗬪z@] ‹.»1£j²¿adÕSê&˜¥xþè)UO4—¾&Žä¥X|ײŒÝÓ•®–±ù깟«z@] ÍûzÓºwOúG5V= n‚ PŠk/üBÕÍ&‚ @#9@):º¶gd­– Ù>¶£ê9uL€RܶbQ&íÚ–­ã:3ɪªçÔE0Jqí‹3zöy—€7Ô8rD~»³¯ê” }ÌÈŒoöû Àp%˜¥x츓«ž0,ôöײðžA ¾÷©é‚ À0æÒW€Á À‘ —®¿=m}»ÓÓÔšïž}qSÏ!„ ­IDATÕsê"˜¥8õÙ_dBÏËÙÑvTÕSê&˜¥X´ð¦ª' š;L €Á À&@)ÖÞp~&íÚ–­ã:3ɪªçÔE0J±bÞåiêß›¾Æ1UO¨›`”bÝ)gU=`ÐÜaP ˜8’”â“?[›–½½Ù3¦9kN›_õ€º&G˜'žx"wÝuWjµZZ[[s饗¦³³³êY†.zèÎtvm϶±‚ 0ì&G-[¶dÙ²eYºti¦Nšõë×géÒ¥ùú׿žÑ£GW=ÃÌy׬¬zÀ  &Gûî»/3fÌÈÔ©S“$guVî¸ãŽüô§?ÍG?úÑŠ×^GŽÈowöU=ƒ·Xû˜‘ßÜXõ àm ˜A6nܘ¿ú«¿ø¸¡¡!Ç|6nÜ(˜¼ÅzûkYx÷SUÏà-ö½OMLàá]rŽýýýéééI{{û!ŸoooÏŽ;*ZC“'LŽÝÝÝI’¦¦¦C>ßÔÔ4ðµ×S«Õ’$g¼§5»k#ËÈÛ#Ò¿·7ïj>XÊÏÿ•ï5ãvïÊ®Öq¹ö‚Å¥ü3xmûKü¾R-ßÛÓïëáË÷öðÔ¿·7{öÔªžÁ0Ò×÷ÊѼT¼„z &GˆWŸ,yõÿ¬¯êëëû£§NŠz{{“$'µî.gÕèîÊÎîäªéåüôÛ¾¼8Ûþÿ¿ªœ¯£û÷[Jû¾R-ßÛÓïëáË÷öð´ów¿ÉΪG0,ÿ,ÆÐ'˜!ÓÞÞþGO“tuue„ oøc;::2cÆŒ455eäHO˜¼YµZ-½½½éèè¨z uLŽ 3gÎ̦M›>®ÕjÙ¼ys,Xð†?nôèÑyç;ßYö<€ÃÒøñ㫞À ¸ôõ2wîÜ<ùä“yî¹ç’$6lH[[[N?ýôŠ—ÀÐ2âàÁƒn¢:‚üò—¿ÌwÞ™Z­–ÖÖÖ\vÙe €Á À‘€Á À»äð†žxâ‰Üu×]wž\zé¥éìì¬zCØþýû³jÕª¬]»6+V¬ð¿Þ”Ÿüä'ùá˜Ý»w§©©)§œrJÎ8ãŒuÔQUOcˆzôÑGóÀäå—_ΨQ£rôÑGçŒ3ÎÈÉ'Ÿ\õ4†‰üà¹õÖ[sÝu×eÆŒUÏa[½zu}ôÑ´¶¶|®¥¥%×\sM…«.º»»sûí·gçÎùýcÇæ¢‹.Êûßÿþª§ñ&&¼®-[¶dÙ²eYºti¦Nšõë×géÒ¥ùú׿žÑ£GW=!襗^ÊòåËóÎw¾3µZ­ê9 #Ë—/Ï•W^™3Î8#½½½ùÖ·¾•Í›7çïÿþ﫞Ƶ~ýúœxâ‰9çœs’$?üá³bÅŠ|ë[ßJsssÅëêvìØ‘ÿ÷¯zÃÈ%—\"¬Q·Ý»wçÚk¯Í\ÓN;-µZ-7ÜpC^xáÁd˜p$‡×uß}÷eÆŒ™:uj’䬳ÎÊîÝ»óÓŸþ´âe U{÷îÍßþíßæÌ3Ϭz ÃÌI'”3Î8#IÒÜÜœ9sædãÆÙ±cGÅ˪.¸à‚Ì;wàã“N:)===Ù²eKu£6n½õÖüÍßüMÕ3€ÃÜúõë3a„œvÚiI’†††\qÅ9õÔS+^Æ›%˜ðº6nܘ÷½ï}744äøãÏÆ+\ÅP6eÊ”Lš4)Þ|‹z-^¼øÛÚÚR«ÕÒÝÝ]Ñ"†ºc=6£F½ò ìÎ;s÷ÝwgÚ´i™>}zÅËêþë¿þ+£FÊI'Tõà0÷ŸÿùŸ9ñÄùÜĉ3qâÄŠQ/GrxMýýýéééI{{û!ŸoooÏK/½TÑ*àH±iÓ¦Lœ8qà 7x=ßùÎw²aÆ|ä#ÉW¾ò•ªç0ÄõõõeÕªUY²dIöíÛWõ†‘|0«W¯NcccfÍš•Y³f¥¥¥¥êY aÌK/½”Q£Få–[nÉóÏ?Ÿ÷¾÷½™3gN¦L™Rõ<Þ$O˜ðš^ý[ݦ¦¦C>ßÔÔäo|RõôôäþûïÏW\Qõ†Ë/¿<+V¬Hccc¾ð…/¤§§§êI a«V­ÊÙgŸñãÇW=…a¤³³3ò'’/}éK¹òÊ+óÌ3ÏäsŸûœûÚxCÝÝÝÙ¿¾ÿýïçýï–.]šã?>ÿðÿM›6U=7I0á5½údI__ß!Ÿïëëû£§NÞJßþö·ó±},øÀªžÂ01qâÄ\tÑEÙ²eK}ôѪç0D=ûì³Ù¼ysÎ>û쪧0Ìœyæ™™7o^rÔQGå /LWWWüñª§1„½zltÊ”)ùЇ>”‘#GæCúPŽ;î¸üøÇ?®xo–#9¼¦ÆÆÆ´··ÿÑÓ$]]]™0aBE«€ÃÝ¿þ뿦­­-ŸúÔ§ªžÂ·ÿþM’ÖÖÖ{ì±yâ‰'\<Íkzüñdzoß¾£[¯ÉY¹reZ[[³pá¼ãï¨r"ÃD[[[&Ožœ7fæÌ™UÏaˆjiiISSSŽ9æ˜C>ÜqljmÈ`Âëš9sæ!‹ÕjµlÞ¼9 ,¨pp¸Z³fM¶oßž«®º*É+œ¼r¹']qÅùÎw¾“††W–íïïÏ /¼0ðnKPtî¹çæÜsÏøøøC>ûÙÏz»XþO·ÜrK,X0i{{{óâ‹/z§%þO3fÌÈo~ó›C>÷üóÏçOÿôO+ZD½ÉáuÍ;7O>ùdž{î¹$Ɇ ÒÖÖ–ÓO?½âe Þ-‡7ëþûïÏ~ô£Ì;7Ï<óLžyæ™lܸ1Ï?ÿ|ÕÓ¢º»»³aÆÔjµìß¿?÷Ýw_8Ù³gW=aÂïQ¼Y?ÿùϳaÆ$¯<™tï½÷¦©©)üà+^ÆPwÎ9çä·¿ýmž|òÉ$ÉæÍ›óë_ÿÚ“ÃȈƒ~·à üò—¿ÌwÞ™Z­–ÖÖÖ\vÙeéèè¨zCÔþýûsÝu×¥··7¿ûÝïrÌ1Ǥ³³3×\sMÕÓÂz{{³`Á‚×üÃË¢E‹<1ÀkúÁ~‡~xàÝÞ÷¾÷eÖ¬Yyï{ß[õ4†ï}ï{yúé§³eË–Lž<9“'OÎÕW_]õ,†¨‡~8<ð@ºººÒÜÜœO<1³gÏÎäÉ“«žÆ0ðØceõêÕI’÷¼ç=ùØÇ>–éÓ§W¼Š7K0(p$ @0(L €Á @0(L `XYºtiþå_þ%Ï>ûl’¤««+ßþö·sÝu× ¼¦V«å®»îÊg?ûÙlÛ¶­ª©À0&˜Ãʈ#2wîÜ{ì±I’M›6eæÌ™9xðàÀkrî¹çfâĉU͆¹QUx=ÿöoÿ–5kÖä+_ùJ|ðÁôõõ¥··÷8òçþçùïÿþï W‡#O˜CÖ_ÿõ_ç/þâ/ò“Ÿü$cÆŒÉW\‘æææŒ1¢êiÀaN0†´óÏ??6lÈôéÓ«žA`H{衇ò™Ï|&wÜqGöìÙSõà!˜CÖ† òàƒæÏþìÏÒÜÜœeË–åÅ_<ä5O?ýt~ô£eûöíY³fMEK€ÃK_€!kΜ9™3gN’äË_þòÀþïK_§M›–iÓ¦U²8|yÂVŽ=öØüÇüG~ó›ß¼îkjµZÖ¬Y“±cÇfôèÑoã:àp1âàÿþ+> stream xµÝËŽ¬I–žçy\EŒ ôîðpq z&¢ RE KYxûzÞÏ<2³ª²òÈf¡™{¯mf¿ÖúÖÑÌÿÛó|þoÏ/þw»ßŸ/ïïÏÿý??ÿ§çÿëùŸÿå/¯ÏüKÿôíååãýåíõvíÏ·—ûÇçûó_þøüzÿöy{»<¿¾\¿½¿¼~<ýùùòòñíåþòñ|ûv¹¿ôõóþíýóþù|ýüöþqy~ý¸{yó÷Ë·×ÏÏËýÙHo·o×Ûçó»ß>^?ž?¯ßn·ëÛûÓõÃ'>ïÏ·÷o·Ï×çÛç·—ÏÏëE¯ëÛ·ëÇËûÍ÷_¿]^?/ϯß^ß/&t¹úÄýöüùúíãåòªÉÛåÛÛËëýÉÇ.—o/—W´O\MèíÛýãjªÓ¸¼¾ýýÊ|í¿üË}{ÿ|»|úÓåýz}¿¼<½X¹XùçÿÍ®ýŸÙšMÿò|³1¯¦ôüg´o÷——ÛóÇõÛåíÍnÚo¯÷·û³E¾_®ï÷§W˼ÜoïÏ××o·÷O31ÝÛë·7ž¯/ßn××Í÷þír1èûç·O­?­àúíCÃ(ï·ÛË{Ë´ª;óü~ÿöù±å}¼|{{{åzÿüx~½Zðçí^›·Ëý¥]}í\Þ^~ûv}½>½¾›ßûm”Ûçç«ï½¿|û¸ßßêwy¿Ùß¶õóÛëÍÉ›Ãëû[»øzûövõ«¹^Þ¬w¼}b +~½_>ÞõsÔïïoÏ&çŸÏ÷ë···—÷çm_.Vw3Ìë§s¾½}{óµç?>ÙØ·—»3ó‡×—ûÆÀ ÷«m½}|sÄÆ½¿Zp<ózý¸4ËO~ñ•W ÷öê+¿ß.O˜ùåõòñÑùÜßo˜çnÙ×w'¦ÛåÛíãÓÖa¨·7Koº¦dëÅ<1ŸÝ½^îïVÙ¿µ6,ÿv»¿cµ—;þ½X%†|»^Q^ß¿Ý^ì¥ÏÝ^_Þ°èëç·ÉÚ$o÷ëåòôzyÿv¿Œ>î7¬²]þ|yk›°jLg~êvw`ïF°èoŽßÜâN"2ŠÉ>}^¾]>ñ+»°~àO·÷&€výø¸·¤LäœQî7ãXûÞÇl÷…¤ýÑ*‰Ñ­µ¡Y“8]L‹­Pˆ(MÆH”ûíu²þúöÍ,íúúúÔÂ?ßO·ûû{‹o7äûïwÇ…½Þ ÁånÌ—DãÏ+n@ /zaªÛÛû‡]Ã]¯Ÿ×zÙÝ}?™õIª›i$h¯˜ëãýj6¦…íÛûBR?|âÅùÝï·'¼ ˜HÜëK¼H8^ï°ðêv²7l£>Ój$¼å#73ûèÔ|íK%p÷‚py5/ãèõNn­Û£õÆ%g;ìObÖß®÷€í“( ý+­L®¼·&ƒÂÊN ~´5¾ûò¢yxÕç^ÍéµÉ!Ý…×›üB¼£@…OGûú G·µþÈôû„,Ÿ[‹ÏùÚeLñ´‚×÷k|s}£Fy»¿}€!âýr»ƒ¡ZÙ9˜üöíÓVuÌssr¸b´!$Xù—Þ¬p½Üˆg0ñ†ƒ¶n;çHðªÛq_àâCŠW'cJhЂ·¥u(»ädŸÉ›‘¬Òæ||‚—˜AD{aï€ÅL¬)a¦šEð‰SÕ'åÔÙëöA>Ÿš/Üýx¾%Œ7@ <°là³Ýu*4âÇýáô#(¯P'º\îtà-Ž¿bÞ° b@²û~‘ÁŸù¶>…ãS‡Æ"sÚ®d¬fËç·+À‚l—·Al'lžS·K'2>D†šŠ±Ž³ƒÕ4°«Ðïñ‰Fø Aôƒ÷@ë:Ý}êÅÐoWgG¿¼\ €Å¹ íýò¯¥Ÿ˜OF1Kó}Oe_+°ž°Ârªt³¢e®µ ®íÓÕwï÷8Ò±__ß?Ÿ†¿Wæ„ï¥2^.Jß­Åv¾Ü¦kt’àÔ®Íø¸‚Ö!¾û`¤ë~i3wC¶Ô8Y¬ªu#éÊH”)˧ ´áŒlœ9–åA"Ú5yÉ*ðŽþò‚×üã üA!ymW–žï²…XS#\ïVÔÁ(‡³²x’Ö›iö;Ûå¾UúÜí<`øyciÕWèìDaÍTIß0,ÃfPc$7ß´Rû2lZ–Fpý1Ç Ÿ@2Þyß@© PìsÀçþ’mš²õoOŽàÆ|h™IžIAr†˜o+l|ç‘:=z‰Ò¥'P2H(í—ë\§ ÍsûHÛM°ùÆj´ÕÎÓ®°ÔÝ¢:08„{³“€‚bðDê*0ŽÔd[Sg¦kv´CŽEζx!l@Œm÷rT¦é€èxk§è_ÚÜ_‰«uÚ¦ªÏ\Rƒýz5hÛ‚E˜bÖža°îôÈòk˜ÀÞyÇ[T5Óß ø31 ߥt€8OÞÉØ _§CË'¨y%ïi3î^¹3$¸Ÿ3Æ(šÏO¬­ÑËg~\0²ƒBaùØÎà£ÑNñ(…Am£dRŽYé}Û¬ûAÿŠíüø°Õ}Åž™“³‚Š&•>æËqÜøI2Àj5a‹éä¹ @×tœo£o0°Ð⬌ðëð~ù| â‘è:£7ð™ÉÅÄ4ø—'v@ð3£ÊfbØÄrÏL²C¼ætùªnkqMf¼¦NÃîÄ ròóQ²0c°|ê,`|ey¥É9ÃI7 ¡ªh·zÍ|N%Áôäïƒ7Óba#žKîtÙ4u ˆ/w–K6¦’ð×ñÑ ñqʃ9û/Eöv³¤,ÿµ¶´yº'sløÅb#>³U®// f™KHWÅ(¶‘Rìà® ._š‡˜åeÂÇyÎPflIÈ.ܧ¬¨L$±Îü(>‚ äkd·!ð+fýórÉ—Nõ¤—¨ºHT£c^ÂDæÖ•ô7Ì]£ÉL!áùòÄX7`³ÙY¶º-ö%î(ë&<+pöà-hz2QS+Ú²À ëFcj‡9ÅŒtÉ'¢òI·ºæŸÄ}ï*”iÊ¢5Cà9rtüSn¹Ýg¶‘õ 2 .8ž1¨pÔí+?Û˜›^سpÎé!GóùÁÃÚÌØŒ1¼6ó#Îd%‘ ¬qýX„¬3÷³> ”˜†KN²°R– kz8}a˜]š²çÁ¬Y}Úf‡á†yê¹Îoo,ë=,þ$_±DÂÍ}úœ^åd1;cÔÀ.¹À`–”Ì39 I¶ºà*öŠï\ØD1Óç©~­újk'C=-QÞlÒÂ"/XtÌDö±iŽS(ß*¯Ü¸õ¾Ç-¤¬®qpFzá-/Ó뇋vú±;ý‚CæsËÊ ÅS00Ò¶ñJã¼o¤é?†¨ÑíË'Q·±%€žŸÃ"{Ê’T²ÃEV„»ô£ð¯Aýá£øCÿÈðÁ Z¿›À8ŽÝ3•Az°6^„Ô×ËæRÔúMw°ÿðB>vÀd'S¡ø-ç:4Âh´¤SÏø™Fd_™/ew#Yö¾çvЛxb6³óžÆ”t›Oqsm-Ê~ŠP'ð±ÕA'zaÆÄ‡›*"cõ–Þ`*fc•8ºíe¦:T˜©ÈÔÔŠ, *¤Îrþ2Ô± KçPlø£5]óŽ mÄw¯¯ÙÄ®ŒÕ·B°ßÍñÎ~?,–9B¥ŽÆ9Š12^"¤aG:ó=_°y¿3qÇa³],.G&Ø <0uî_É1VÜVæô$ÿ£IšÇ-Ä¶Í º IôÚH`Óæ ñ‚‡Ù‰ôцXätÚ'Ç„‰C-í‘z»f̈Idfô½LÑf´œÁì?JZØÄHÎסúŒÏYïtÇÏl_^7ç˧ï Í—ëç§)2²rÜ“N“æës¢>”d­‚aú#mÉÕm7}e,ãœø ÐC•²5\í=±é‹}pPM\+†Ï'º‘ÅÕñ@Ì^7ÐgRvgÆ©øT{€ :ˆHaOŽ6Šƒ.HðÇ'ŒHj:…¬Ì\oëˆ{v²M¸«!ˆo¸Îq°(‘Ód©èo,» ÃÉO ª:…LˆäÎ î%ˆZ¥õÔ=Ï_‡9$м#´™YV"6˰÷Ïéép†‘\ë æUÒ\Ôìô@Lì8}°‹¬ NÔ]…­8Ž…üÐ×o…Ù­êáL#ZhGˆ’yl&­j Ì °>¬Nºàõ Ëp¯%Ú3ïŒ3¹=|96€Á™ ´A¹²‹S ÜÙTðÍ=˜‰ ”ÞOÑ eýœ¸Ð³VF¡$ð/ ^Í®Ð-cµóÂaPW ÜpSÛÛÝE”0ƒaaÂá“79ÃÌF½³šRJÐ¥ƒÐ3¼â•…ˆ0TEpƒ÷’WÿÊ9Ø¿Ä xîZÜ,œ¼dP,Æp”6F_'ÇœŸi¥EróÅÚ;/|h­òk)FJì(´$Ô'iãt0Gó‚;ã-~‹@Ó]ŸX‡Š&˜ò‰Ï±ÛµmùZ¿CÇZàw d14ÜöòYÄãØ¨|—'#Èß`¹ìß&†—ãÑ–Ú³7)Ä K÷4sŠ¿CÉxðY‘ŸL{¨¶>ßõ£)˜á3Íc+«‚H¥k’‹Ìõ´4ä¼J,8pìO&§m?Ik;[Jcœ–ÝÁa Ȳ£ Å>8ÁJvTÛ›­TpÆqªþΧ!;…êšpS)j–¿alÓµã¬b€ûÏ™·’«a±ö‚ugrü•ø¶{+Bv˜˜„X˜òý‰]‰â½k vš:XŸm`"//Ãz`î¢tZÁªnÎÞw‹sÁ^VF‹M.r»Š#ù‡wB&«DuK ^DB“opeET„CÔf‡G·‚yŽ?)ोu r$…ž£²¸¸cv¸;óÄñnF­½Á‹õÌëpdpSŸ"=vw”GÂÓÛÁøÆÚtp• Óy”÷{%éeÀZ«x㺂ð˜ o ªëþÂ.˜ÁÄ€d$æxr¸)ãQd…b6KòÁa¬Fã›bZÁ§Î?éHb¡=_…˜V”©- fÆgçDÏz ëB–Œ´4ÅìÐYK;>ÉN217|Æ}T×Qè¨ð·“ªŽ_S²bU!£=~!T(ŒžeßdÈ„i" aqòÝXª~ ¶ÿ˜`àtsÙu,-åáÿøô_VEcc3¬”´¹§Ÿ£ÍÆAKC£XïN …›˜”†ñÉ cxÞ GBszQÃ5p Ðg )¾>7,ÎÔíc` ëŒ(LJÐ@|sf9‚"ŽmW¶w1ño|.ÌÂ2ò9rÉ7Ca… ~£áÝà,@Ó¤Þ(ˆF±Þ7g›µ:Î:“Û…(Vxö„Û§ol _nýšÕÖB˜ï)‡Љ\l?€ë|óëv)³½›Õ‘4qžG(HSFlReߜݡ@d} ]où!µzœ=Ðj ]ÔiM–•óù·rÉ|þÓ¡.›†z¡‚ÄoþÓPSôceFÿûþïüÏÿÏÿûÿýÿöüßÿ«R¤¹q*%ÖøŸ†µÅ ¼uøAXéé~þçýóëóÿòã½PÃÔf¥,眂¦ùóCö¿?ü‹o½ž¼>ÿN;1vØt]Œï¾[&G޵ˆ+ŠÕ?hQ$[Èñô‘(1o:Eí}Æ|ÒÄ¿=NÑFœ“ºD·=Eë}¬³ÍëCó‘gф˨yÿwÝØ,eƒ"Ýñ: iF¡IýZµ1|ògôO‰[#™ XÍÛž~hE%GP_?h{FgŸ‘¿Ö 8ñ …Î>;‡dpü­‘É?x‡r<èM)¯¸F"lmµñz»?­[ÉŠ§l§¯çG¼´-¸²šÔ gVb‚‡’“»~0ùÕH­ÒÆŸ3ÈAˆ$E­ Ä'iµgl¢8ƒìÀ(U\›#B°Í*týóó,7Lª~á—Ý ðr”9Nƒ„Ï€ÅëŠ3r®’¬/L?†K6Á è5€Vyñh9^¢ÍØ;ñ½é‡‰;ãü|VàZÅÏ€ ó ¸æâ ¸¯Í¸Ú($i‹>–ÿI¿ ÐuMe6 )V÷qœp3%’,0¦Uè¬D±›4áP˜à¸ÿÄjTîJõ‹!Ø-^¥úÐÿþéû¿²)èôG¸Žæ%i@áz}þËŸþAÁn a•Ÿp‡ë“šûƒ>2|t7بðÅ‘î£âð?ŽLº Pµi–F’Jt,(K=F š£qÎ÷C›à˜À]ì·‘ð½ÿo#‰ôœ~hÅtŽt;„Z±Nˆ„ˆí%‚¥vk#8t§¨Ä°Ê?oV˜åŒDý=fN•×MTÔçžœú m›…ËÞ‰ÜD‡ù˜5š‡Ë%™ä0 )¥…©!âL¤b ²l®wv›ïh#q •¤ÇË…(2MÑXÁ¡Š’:v¤À[>hJÑHàÆ]3m¹ Œ8\œû ÊYtÐ'c?²åmÊË4 Ã4aÁó9Ó[òE¦%Üju èIÚîȳÃçôã4·PAuI3@”Ð9£¸l✙<ê"0ј¨}/Ÿ_#¦ûŸTeJö9±"U³¦É|ËË<Ë6©œuÖ[ýìe¶ ÊJ”´¡¨vØH Õ¶–„ÌÄbgŸLÁü30£ì;övEØ£;Ï;Þ×4y»`¹(òÌ¢UãiÓ=Ýpç¸WÝÕÖYaš[7K̞ȖX,R¢´› DŠgâ,,ÿ+…Ý«G<@a˜³lwvÛh§YW¶qFÆåçŒ ¾íüŒBfÕÕ@ÅBõ×M~jDS ë¤ šU×Áí'²Á3 ˆ’“ÃC³›hb@äMê´Rz „ž°öc¤üõ(™G‚~´,©)bìçep÷x?£¨üv.QÊóԦʱº!‰y!Ù°¼”MÓR 8]Óè-NEÁS-’‡:…„°`ºF‰‚1Ë  $"P…Rƒ­0ŠØE»¤r´@œZ,æëëĪlqãÎ4‘fÄ|écü˜ŠÑke‹‹tŠ÷·QxÓshÕo?Ê’m lá(¤éP¸ªíu™ÂÙPЬ"êöÿzv›!”eÔ!±´7@FMì~\³§•mžÃ ®Z•ÿÔàÜÆV›Ù^‰;û°´ÛL;=êBÒ?DØp#n ”ßÊ¢’š{ .4nuž`…–ÍþÐFBiýäÙØýfˆ–™9”¼cŸëFR¤gt_ A¡d‡ êeEÓјÀzÂ-W×@f$¨;4!.øqruÔ›øÃ1¶æ*[´ºY®iƒ)ÿ·6brÅS.ÎÂËW¦{8”“ï—OPØ÷á«n„^^-Æ¢§¬F@nÊHyZ•_%„èC„¥`õÃ<ùî數.Ƶ ê¬žüáO—Ÿ³O~žÐµ%qÆò­5XõáKɾ:Qè%½¢±I’0ð.Æ4ÊcÚ¼»#¨'’ìÈ¥¦¬°'ûè{Á<£Ô²à‹üšãŸ‹§U>‚‘>*ó)š& x)ºNž“¨ê« ‰ yðZ2†}Eˆ- Iȱb0«R9áa™’(av&FCUØœ¹ì3…P„jÆK”wáHvy!ʪ%|¯ÈHP-‡FÐI¥#)3ͽìÙ«c+Qd̓‘bðþ‘ £ÙTW>°˜d{³jzq_›lÜvìkKðTUU¾lÐŒ|†¹9: N6AQ/’¡_5mœš¸ýÔHUìŒ"¿`–wÝqX?edg/©é3”dß—Ê b‰L¶Ã6÷Cžþà/왨q<;cUŠ®x›ìâØ¼{Jñâš(†þñ9IøqËNœˆ‘²¼–À’}ŒÃ ›Ñ8ÞΨnÙ%Æ¡‹ ä$|eZ$v™§]³µ’ÒJtÒT~ŸÇâÍ‘ê’É –JoGÎý…#9SFGr ËŸŸ¾$§Œ îÖÕØŒ€Øa´Šóк’‰Ë€pÁ/Fg¬o‰ÿ…/qÙ%0¸b*NÎÇ稂©ðŠÞ@¡WÐç|‚ýc뜺îšÌàÜèÊ%ÇÓVÖkIHQ´ ê¢qýŠ*ØÖ.¡î†£D–DаÛÚPì–Y?¡›´i–FßHŸ6»c)‰N¶Ð–ÐU§žåÙ ùº6¹´ºMðå¥ÓQ@…ˆ[+å|ö´UVÅàiVFºÄˆ O&R7.ŒÂÖu[AÉټ挗H̓ó' nïýt ýüŠ"zr¶Å3ðÖŠÞ<­èºÁ1hÊéŠ8˜;Ó Í‰ˆÊ52¹<>à/†ç¤Ö }›Ø.Æ[¸Ûù ¼w¥wш÷Ÿ1:péö›¬…r{¾ÎV–¶³7Y ѪpFŒ„"ÍòݪŸˆ ŠÈä.lªtãA -û° ›$ÐŬ";µJ͈ÑU÷àÀQ¨ÆÆ.ç_ý>¨ÂþFر*|nè2$›€“;jG©` —ºBÝVˆ…µóÄt܃+Æ5Rš|`Žº¼Qš¼6‚;þ`¹|פ®¯¥ •k{Œ[îo©ô‡2;ÅÄN7†mÞ.“áÀ¬LߺùЧÕ.PÐ:t³·g'oÅÖë%_Ù×89–Üz«~P\C÷OQ`ÁÒ”ó17ìtÛ[®‰Ì×F¶ÂÐÄRê°rDz0*Ì.÷=â%,IlpäÙ Ä¹Æ ºò…F±]»*K:Bóþªv 7‹Z,!€¥Ð9£â¾øgØÕ­pØZ„J&ÆIv 4,Kð.’ìOa×*І]ŽØÅæbo4?ñÏúáÈ™xîJáÑ?ú×%/8àQbsÀ…!r k5Ú*%€¼éªL ýXÄÉ„ãó2€syl$€—&ð`âô+Ò ‚_ÖÂ×_iF$H¬~ÈéùÖÒždøÉ´ÇCñÇ$¼;s½ô œX°Õ\Ë3qòò]ö؋ӆ|WVx¸™¥ðﶺq¨ø#©„æ&MqÛl¯ xš|»5SCÑÇéf§¤Êá&;n¥^}®˜ ˆC´®š%ÎCó®”©Š²È€€§'®T+ ¯ W>¥Zm01ÎÝ·éN<¢úŒ•GÃõýè¸Úd甀L–H¬ª›Ë…8 òóu ¿{-YY+ì*&¥L„ZÁ‘ª™>M©R6 ´õœqatÒß­ÑQð¿`¡ä¦K»?.žt-‘ƒ‚?M 9­ú‰‚>Õ¨s™œöLF0šª\ÀóÊ M*k  ì( )êØ/‡¹~h«/G3¹8e&‘‘”Z/Â2Ü­W9×’å>·+î]±é¹ ­Šì ”jÿ£ˆ‹â9^ܵ)HŽH#ç‘c¡’Í:ójµªî“êFAP°[†ç”Smzt@¿.¸µåYs"QêwTð¥lç²¼¢pÊ­¤Ì·ëç]L²~ ÚèØ·ýÕf»I‡®Ô¤´XÄþðØÌ¨Ý/F…˜–?Œãì${‡·Æ0ûUqýc!Ŧ&åå·Y BnP›¼9NZpº šŠ ´ RE……êðˆ GÜ>¡,…lÎ>,¯‘-ñ–Y·FbNäËþâÌ£›ã$¹(jwº‰GšÀ°Ø °nR y%-•…—Š¢Äv*¤‚°ÒÔÑÔ9a GË;Fw/Hà§Ãîgm¨›ÓÏagWFcœµ˜à˜1Eû ˜Sý¦>ÓÅH*ÀêVhŒ $ü!bÂ* öÅeÈ:ûJ±¥~ªYO+;Ýò²f»„Q0V›’£™EúñèŠl²t§íJ¹Ñg†6³¦,Šô¤BQN~Vg‡Õ5¯Õ^OX¿Øà»ŽÙ)œÝH§ÞOGuZâ©â¥¥~ˆ{¶Ø?A¤iÁd`Îk%Eq0+¦„ÉÝrd’¶I&šv€£%И,;S/V©Š$iAD">óÞ׺Û6SMI„~íÙÉ`[tlª×Ñ.B)û - 48¦öpèˆcJ3 ;=ð+‡ÙQ«ï9‡æk{‡Æª©Êìûmz;@ò}®ys¬GQVšf| CÅvFVâ-ý d°K*Vé«/{áë¯j‹À0¼„J*‰žµpýká÷!CžK—ëÔ`¬dŽ`2kbJv¼¨¿V±~žcläâÇ(ž[)ìX¿êJGc[°’Â$N!¡SHÂǤ釓mOÀ{g¢F܇#9Ðî|• ÉübAhÉžÎ2Îûc–+çÒŠésZe^LÍ(JJžÅs$unÛD.ƒ£IQQ¸† )I?‰ÆÇ¡·æRàGt@ÂD§‰Ø`pò!Î62@ˆN$ wÈ` •ÐZÌŽ¶#Æ# (âÎØ¨ù±4vµ&ùܽ!þœ±‰à©G¡M8Ä{å«_»†VÅb»–ƒe¾Q>ª¾‚Í-¾›Ý5šðLt‰Ðoð]x"Y8O";[_s~U´¤b½Š”ŽP4J@Öæ;ã·€Œšô-G‡'®KCGÈÒBa1-k"¸2ŠA3’S(ïa!\þÄ9Ùu ¦&«BÕÄu¯Ã Y*l™z¹Ž”g¥Ö¢œçCoƒX²óᢠ„ˆ"8H{„Š#ð|ÇštO¢s„Icý•ŒB«‡õ1ó¾íu’"IdcG-<:·*4¶Õ=Jí/?õWà?ZœŠ[8‚ì©ðÏÛ!ã¥v™·ç¢úÂ?ga¹ò\.¿ÍÂ2QóG˜ÝBB+·BS“CŠÐܤ´•(|!QÔ"O-Jèãï’{Kfº ÂW"eÑä¬×FþꌽˆýÆéRD#gVe[*qÉÌwc¢™cøÓ!J‚P麱 /§9Ž ­Ivq/‚ à™¶úéü¶€ÜC¬¬ÕÊìO· ò(‡)°‚S•AœÅb™§_Qò"/Ó­[uãÀ¬ÆaCóŽýÎ×Àt‚Ém)Z5Ðiåê=ÊJWµ œ/{lAå%µâœÑeÏ÷ Vm0#Û#~na׎z~ew,S±ÚìBÿ³ g§µ{Zíö@»â‰£(àÀºŒ„/±|VÔ#(׿µÚ_c«[ˆ™obCÒQFË…MÞ…B)()6´SÊu D4«bÛŽz)žì¤K 6&–¯(Y‡r­’'ŠäÙÁÈp „E«ò@½ì‚(œ~,…Ø, Ûtƒ ‚¸< §R°*qš•ó—N+,/k÷]<ȵrà œÛr%W3ƒÂ©JÃ\>»Ä´Ì3 #÷Ìýúp’ òð~Î4ù½¢”%t²¬ŽŽ=Þ)m·\£°¿ŽH34íЏd FZ]¿?ÅÇÑòÄÖj6|r¸§àtËšðw;ƒu%‡­¸uC'b›õÖl×M¨û«G*†á„Nøë`“0hR/³Œ1êvû’8LSfC9“š`ɳVñ“3 {ìÀ^OyìÈ͉cø'ºç‡1@v íH<ä³'Õ’0±ÚK4ù“˜ $$/ÝËZE ‚©”/äfkÇʤ{n(…Ì…©c\Ær1·2]¢Ú=Ýð!tB:¨¨PjOÊE(ƒ¤DÜÆ‡Î(êaŽ ¢U(¾—:§Ýý¬µRÇ*ïr-ºZô¹Ò~úô›¡ŠR1Iw­ýS³dÜõ˜Ün_?r:h’à}/ð '£d \„«]ª4çñµØ«¯ –å,6'åÇà4/kÑôF)›Ò.¡Tc±~üÎ÷ÔoõìÄÙHyeVÇYìbuGçÍq2YÏX$ÐiðJ63P¼ ,(**ˆ´£+`”ù$.ÎWm€G{¬ŸØuèÅšè_ įLçdØ»h•Ýõk¬ÓçÓÛŠY'fEsÏÞiÛ³vú«Ôê_ÿ|û9ëD;÷ë7Æ?Ô•1`í@)ÉÑ $ßm4¦¬U*G#¥‡BûCjeÚê‡göæZÏ›Œ¶7Àeè’±veÂDá̬G£V|¥ŠE2ó„³{(Âgx-J¼W©”ˆ C1‘Cr?Ï(³¦k$.ÅG²¢(™Ø¡àš¼¸éFÙµ%Å[ndÛ IΖ[äX5hb;&mªAÞY+´M¢¢XcÓ”g¢‘W›á{mŠ—×0m«ÃZÕŠnyJw4׉۩úe4’»Â(¶•?> {p¡È|Lò´ÚÅÚN!³¡nîôœ(;--T²yAkBa(îBöTýVÿÝà8¼‘Òì.ðB]VQ@-§^3ÖDŠu‰–§ÿv„É¥#RBšÛ@Æ l’z¦Q`FN#vß‘8Þ¾mÔ„´~ÅÖÔÈYÚ–:ÌH#-2‹Z7ò®m ˜ùÁ…Ы„g4MD^ÚkOr4†~°Ã%ù -õ…'ŠàÍ®™¯$ZQ¹šoRl®ðKrÍ”´YP/Ü[¢ÎÑ ånt†Ã¡ˆÛ˜pߣ|µÊáÒÂDqIdTe«~q@ÕF žqh¾·O¾þ^~Eý¦…H|çòüáO·Ÿ³O~/¨Î[a¼›F8 rï>Ãx|yò*xwZqzý+ U›¬~®PÁ} ³“;h¤s…I"sûPòkô“4‘p>ÄŽ`4åÊPCïé£?ä‰u¨»¿KIž^dl54Í|r¸R¿¦”c=ñ¥ö*ÌàÓ-w˜×uZᩦ¥GÌÒ“ Ê©Z|ÏyÕÒt»@û½q_!<'qf{EJí"OJ3‰‰ _•-hy%’5ŠýPp‰ÌÔ…p™ÍhEg%»þb­FªqIÉîO,`!ÖÙÔX5ÖòþHWABÍÅÀ4Ï?”TïÆŽ"]i6ŽrŠÐ92‹̔;7+%Sg$øÒ\![K`ð­loËj¬Ÿ¤Àæ 5­Xý-©ÑZÌWøÚÓ4¬/–lyY2%Ä¢­^L+U ºû/Ìó/Ê~íŵ݋X·ê¸X`-Žñh/Ëc%Þ[Ù@hs6 ÿ¦ÄOpÔ?ê&ibáÆá˜o ½›ëFG“U³¸ã‘ÊšÁ‡&àaá—ÔøL™691Tw—6ÿ%dPŒ|Î`™ø  U‹{ÕuÜms*ÈTXM@Eý1¯-LicÝG¹î¬ÿW€Ê$IkFŠmO¡d/„¹ÌÝÚ…eNåþsFJ7|s¥Ó%VµMlÐG˜#T…'h=½2¯€KŒQÔÏŸV¥Ii»bãæ9«·ÉÝAc€GáÜþ«p*g6‡ƒõ¨çñ-®›ãÌK²ägÏ9°õ}LiÒ=‚d·¦FÐ<ÝHXDÊýL²WêF[½ÒSeµQ}¹ †Gƒ×J?Ap­P*÷9©’(¸·6¸?¤ku™2žð¶›QxH­× •Ž©"h›*o=ÆZðÕ¤”•5)I&F0˜å–í\qˆê¸jû& ,×m/5N‘Á(bçÐE¨¶6™`Ì÷úek¢sÙm‡(ü«‡§V5 Gë8}½‹pºíjMݨT¦X‹ëþnƒ‹>Ô-‹…ãU?(‹jí}‰øÃ T'P b!‘=p'ûô+Ä<õçþ ¸•QIèt@ý`ˆ±Œ©6­„}M…tF©M…#Qœo–WÍÁ4@“ûT>Ïr ”æ×tˆ{MÎù£3HÑä ÎgxÿÊõ5)5èÎBû(R¹]Ä­J ³¬B,sµ‘ΙdËb2-¨˜‡ÇãŸwô®Ã¯ºß8:åIM~ð÷´ëKÈ—ød;?â'÷Ÿ³O~ž´:2ÈGœÏƒE.s]½ ¸Ãr„i2¡Òü(œ #Íê f—ÖïÔZ|oŸÙäNâxö¨seÊ( é{Ie©Œöá Á˜9µÈ‘”¶dáõ#©ž—™û‚¶·e›Õ¢•I¡Üé‘pÇ4eL,°ØŸðè]g×O ªÕ”ðÆÞ´Ëè“K…Aäÿ;†é„gàïFq~o¢ôó2»i©œËæhY9LrÖ‚ýÝs´írÐÌ´«Oô¬Io4{Æb0æ®ñäZd9M£`ÞK÷Vé“G?1–žGD+1µ^-Ú׌—÷ÑUr·;TUïkÍìºæÄœ Áµb0nÞŠ´ Å(ÕBhãšËÉJ¯6À$³]Sð5ˆÜ-N@o1ö9€^˜vŽ»¥Tò€VsݺoÝ%.ûv>ï8”ðl%BÈÝU{ß·lÑnÓtì†)ëÈWèj8i»ÛšHm–Fö¯wHŒS‰?Œ÷ú”0ÞÑUhle«ÕÏþ·“×ÅÅÃl÷QZ,@e¶>²¨äì“XZòô‹}—ü3WÏX¢­ZØgÍ¥~Ü;û×?þœÁÇsMûó·Ù=‰V° dÍ‹«FËö!;ÆŸ†(|ª¥}Š ‹¹ „ÝÖ{ 5·%w³F`ðqCQ|7¶DS'@(Ñ(^FÝøÀgð=ƒXGÖm1zê«›;+Í[/U⬥šv”-ÝÀ¸­XÅ;N§_öI±]´½ÜÖç$†Îè‡ÅPäòÎH¬âÙ'h¸»Ú ª¼ëN„®Ëžî˜¶'¡˜MŠÐSt$‰ n–£Ò(⬇˜*3"»¾Q›=aW¿ê-Cb´ã9;Æñ½xPñN·½N-¸‡FKÛ¹†:GÐÉe(>Ò¼£<–+ÃÐ4óÊP‹|o[Tÿñ$xö(ŽŽ3kHÀö¬(ªÜv_n¹+Šˆß E¦ D?àÎ}¥Á–ìiåXv·½Š¨¥ôìà®*¥ú»J½wÀ“0ãº~oÊ i.¯6ÌÇ ¤ìܱžÐøH»ÚÅ÷Ä{AåsmVÆ ŠRò0À;µ‡‘€¾IÍŽÙQxËÖô_¹‚£HÕ:(›oR= ¶~ŒŸ³¶å6ÏÑ8…Ú8–}Îm˜ïPH1ðãz`@(›@Ó.#eѼ,¤ò0òB¡LÇ&Ϧ(Øô·(ôôõÃ`ûbv6’öúîŽïþ^†ÖwRLs2<ŸO?]ªZ´éw –÷°t¸•—Aa)vW%Z¯E¢ð<ÅÂ4áÐ>ÀJ‘VŒ–ŒõîÜ Å;±£¸â}º-ˆ­ +à€u|‚ä·°ôA"ÖèÄwOs*O…:?r"x3íƒÖ/­éWåf™]‘¿FBé·‰Ö¦\BÓd…dJDSJq¦É;­vI§ïíµ¬µéNþYž ˆÓ¯#4‚c7¸§ÖF KåÙà¯Á©ö€–='ȘzM¨TÇ×X@Ó<à ÜvÃóßþÊ›`ZÑá¥t„šNUŽ’5ƒÆapÓK¹÷{Jÿ8=©3Ï^s?œVÍÝPø:ŠSæ”°!ÉΧXœ&Š‚3²+»×0è~l9n~jcš”ÑKêïå8Û(„Ž_¯X»8_ 'dV¾¬p»±Y1 Á£žÓ†Ž^p®"þ0A#ak RV×í5*ŸìPeQ26GøQZÁ;=Ê„rúþ"y.æñ y#XÜ+Ôµ‰Â‰:ýÍm—ˆd{ò£6RW¯µÝ-¼Ìñ³•!×êãz;¨þBrø0h 7drŠ0Ô^²¾Æ¾fÐÙ¶Y± œÈ͈,ˆ7Kÿ,Ÿç×þ º0(…÷:'VËü×àø'$ÎOr<ì6ÅXÆtÒ»5µÂ•×—§Ÿ~;Ì-!OÿþFkˆƒP®¶»2ž\ðÞA®œy )ˆhãéÖxÉV—P¤°ÌŸ&Âz“QÛ¼zùhb1ƒïöì’ Ø$›Ùyw„%ø‰¶‡*‡FD)¨º-a ïçÕof†“3´æ£ÛœaOµð‡e3ºµ¡Ïaª÷]ÌyHNÇE‹\½–è‹cùÿpER±qPѲÞÏÇ,\%NDÅaê¯JÿÈ^Ì ¥ŒgkÓ-CíÐ6'Æ/b#©Æí°™žbDÚÄï¨HJw4î²…;•;0¿ =›A÷:0Ÿ‘oÛ8ÌÝo©•éãäÊM·Þêœåž]hß:ájWG¶W ß¾nÒàuIô['&€ø T[ÑLð".Ap¨kµìñ†V.=õ’²—è—^Éi›çDvÒ!W^"ŠÐQ3Í|2Î2bY.û°ä MX—uzð.ŠÅöäkxW^Ç©óC‹1xå#‡x.mÄõ}Ž×âeK†xcRÛ œ{$™+µsC«ÌC+˜±<ü6+O¥|h&h³~@ðüNs59c‘ÉA•(ò`Ø ú!;§vî'lè¼+PűÎÓ3«|ò(6…Òm5tÝÀ‹™Û¶L‘4ÍCÄð|лþo }÷+©?b ñ’ei¿äëï.ñ•á3°5iæÙ1†dŸÚú]@Ï'ÚÁûtÆšd¡]°ÛŒÞÖ‰÷ºŸVꦨ :ýħ±ÈÓƒTz»FlöàŠ²ÙŽ-ù‡¢šàÈ,Z•Xýd'UuÑçªy 0~ù¸¢ŠfÆBDúÜiCµµ:ÅïTÓŒ{3 -ò¬sñØÃ‚ªÌ¡WB—³½šøãc\®t—¨]Þ¤N»¬›ˆ÷:é(\“]4OÜGgÂG£` Tïce£F/êsùâX3Jµ¹VѪSƨ챊(®•à1”î±¢øpPQ¿9#чgRÞ¢np,5­ÛJzÎ÷PðÓéæ^X“ªUnE)E(UÍ S¾› À©›=¬z6Ò~Å a¢¡gk¡P#¯X(áø½eíïõ¡,Ö†ª?£‰^޹^…øs“p³¡iÏÆ•OÿÎûÛʞШðè¤H#æX”™Üz'hpÃ+z€T @‘ƒt*½Ér©q“ÉÂbÉÔ1e#DÉ-Ѥ‰üÂIOŽ U´ _ÃI“or¡½¡ Õq½N*ÒÉââÂñD1Faûµ.ˆWž«×JæB+ÇH9ýÔKAJæ9^ºŠ>„SÚ€ÎXSwï ¾É‹@¡9÷½~+#Š‹åš4!†cG5¥ô$K\óZ±B÷ȉGD²¹QÖœ?´«ƒFõKƒV5Î({Ù†î}©j6p#&V76b?.ÐçüüfŸƒ™E‡ DÖo¾}MDu±ÍéVä³^¬ÛN “ƒo(òØíB¯+µm/ÖÂ"¨*qÖãAÈ¿7‡¾ –¿C¢¬@eÛ‘@TJ1؇µµèŸÝ8öÐåg¢Cl|é6¨õ›ŠrÈ‚Ÿý¡1{& CCG³ö‘ŒŽ`ñ'9Mª»ÂeÉÈÚ„^øê ûׯHmÛK’ºê$­2 à>”¥PO?O±þª(-«rü2FõÊ·J g“Žþ.ü =´T25d@SÒÇÁ*ã½0`½ªVB‘YL­¢Ta ¾e 7ˆôD#ÇeånX…· Böä'˜an‘|M2ñ'ѲCÐTºäZ­ßõ …Ù•ÜÇZ" ¤<Å hâmý(U¡ã³2°bJt(³ÍÑkRÖe©Š€ " zÕh79§ýl ×Þqµ}t¿…óˆÂ]Ú– UœØ Bhn»!¶?î³YAÜ[?ÞþøC«&³~Ë¥ìØš%†“&&2#Kºå‚›¹í@U¤bÝâZ„ð8eÏk =…sŠ ¾û‰ì üÅVµŒu,¡ŸxŸöi¯PþÖdý"CÙt{éœN”3G«†žÛDØêé×àQØŒtÁ(Œ}`ƒÂ >˜ÎÖå?ÕïxŒæ  Ì­£éh 3´|æW7¹  áø«̱jpvñ,ûE¿¢ fÒti±3ƒ<¯?gwݨ2L¥{ouS4Aˆ6èB“ÐiuœÃ½Ë¥r‰& ðÛHp çâûœÕu±+š‡«lúQ}ÀEDµ])Bþeüúñ´¼ÙFÊ‘ì•Ê"ˆ é4´mÝçJRäÉERÐJ¨cÙ£3·O ’Ì”*lš³åEäë75îìra"€v%JºÃzÛÊÚÏKn¯ðäu*ùê5ÑÆ€,ÿh‚¨àzözEdÕ¿¸8q@¨c|X3GÆîúá›ö?©wi=“LˆP Ä@¯#>½|2z ‹hbÎG©ø¥^\Ý}Í5ÛVBë îZ$ åªî1`ãäïjÃ;f ~ñ½]ÅØ¾»h(âb‰QÀÿúñžÎ£íh«œ©ŸŠzýìÓ®¯ ô¸²«F?ŠÛ 3£ÚáJñ£å[A0¸Üg̳g2Bà®íŠõ"¯L»”@4Ú¯JÙ +ÿÃÒ!I'F1ÂÑ9æÐÛ¿kí&”Ñ Mz§HƒˆÁBÇÑ–TM^r°"ìf‚’Ç+Õ£ÄgIÙ숾ģô€M8#uÄ\…A¢!±•DœnÿeÕKâ|íNî.A‘Z9Özƒ ´DjaȾJá²TòÀÈKe$uA¡¯ÉŒúS$¬—HCÊJ¡ËY3 rm2Ï$™­‚:ÑæL™¥ìÙÙaÙµ=„© ãâ+ö’i}féä×Jà·€«û9ýúušQ̶Yft‡Â—µDþa"½ÜʉUAÉX,pÈHÆG“ê¬ÐN:O¢Xð¶í,м_•0( >Kµ0Y@î¦0©±$†á以*â£AYqa©![e‹ÝñJ‰…½Âº©sÜàç‰HÝ$õö9î ¹?ŸsY¡F"¬]Ô\´QrÀº²‰`Q0ø³;ûZˆS¨9¯Ož‹bggÞ‚"£[Œ£åž£=#íÖVÈúÔÞP´ÇÔz zýÁ‰£ô<ØcqîØx´¥2ÚwR{,¾d›XG#—ëkö»—Ñ@Y@à£"Âá‰C ¯‹ý;L¼¿¡Ø‹M©ƒããjÅŽRÍ|(刡¯}ádYáíD‰è·¿ýˆ_v’eVf» ð#[V%õŽã‹µ’Øê 6Ñ?Âû|*[ö g¹BÀ½–âRjKÒ÷êM´~*š¼C©ö[|Ÿó÷ !'V æÓ1ðs.Ä87Ò^4ÒJÀé´âŸg᥅ôs¼_ý`9¨B#ûÙØúåzoôùÙ¼ÌCÁµÍ;~ÈŒ@ɶ1’ë­ÖÓŬÐNªVààôSݲü(AØä–{W›à«êäË…é‚»w(P£7aF«h‡`»}º¢&8ÓGQ:x¡9­¤ž¨Ù|µª7R!èöÅ‘Všµ±v éà™` ±5ñ(D®å¹Oás{,›Þ%³6«mÿa œ`dŠfæ8 G9Ðèh‚k²ˆˆlÓ@OÔ&Ææ@FÄŸßi/Ì™É#ÞâGѺh’6ûÕmúÉ¿¹bhâQ ,àÛk(B²gB›éD ÒísrùgÒ÷@anV &c±*ö ,QIz( ?ô‘ìó=ê§:s` B¡Ôcz êxç %ÿ-æ ÅØê¿GI[J$µàN-Ý©E#ñ7…¾»§.»mó)D§»RV\´/½«uÎ…'y ”f{n,­½ä ôa‡Êš¨Â¹ì‡ªüˆsŸ+ HÏU©î=Ýz8gýÄçñFƒçÀI‚Í⣄<˜©U#®kù` ¤ým—©È" ÙQÜl†Ñšú@éoàȵT„.!PØ1ŠTV|…&Ýq’+;.ÙÞ·¿îýìÒŠ•VÞ¤ §6øªll“Ð\ÀÞ9ÄxÛ’æ%]“‹F®ÆT¯ÒR-‰'(¸+;æx›NKï¡8ÇCà­ÇÆKêÐz¬¥Cãc¶gVR.p”2ˆ‚‰ûšŸîªta“´O•¾ÿ" úÇ!ã7—W\²ã+"ôãï ÿÏrÆÜ¯oà:¹BU €"•""ŒÌŸÔÅnQ•úÕHhÁá 8$ÿ„Q§èúý¶êj7ûàdO† î¶ÅBÕëEŠEs=Ÿ?P'B{Fuœ±•4T¼šà–<Ü-ðÜÙ®  ä.ã^IÜí—Þ").ÞØôSÁ íÍ>SOû¶&’úçc%¾C2´NÉBé«$•B¶_Ník:và –¡´âDc“¸ «·= º½Œlë$j3‰iŽ‘9Ôf7ý ú #È/à ¥>L6ŠùÚÉýøËÉÿÓ@³÷ØV¬·ªŽPHdPÕÛØ§Ìé´±±ÿò9K …YSÒD€’!HÒ稇@Åšêå~xâ`?¥ Ýø¥ ëE³Ÿu³7JùöM‘Qü…ìb\gJòxõƒ-•­F¡ý! Ù>mz%¦Y*6ó€vzWe„Ý(ND ž¢ð}¦=kSÞý,®¢ÂºUCÞÁ£ƒ‰2¹lÏVÓç…×ËÞîaßh‹Ÿhå'Û ’X+ IÅ!ø»9æi&N~¨jâb±ï …Ø\{Ð/™¥v„Þ3Wïj´h3iPÄ úPàUæ¡3­*gò<4ª[TQ#ä¬KhýýÜ>ÈP’–±Ûkâ|:#µca`½ömc÷&ÛÚô_Ü5ßH·‡Id¥.×{.4·ü¶*-0Êžh%p®±AjeCŒjåS¡XR°€ÓøŠIÝ•ù'¨YÙÅ9†HžêiR„N PzrlÀ‘»×ûÇC£/ÚY›JKÑx¶µ&ÒaçóŒÍ>•] In—­AŸhûmÍR‡(nÜ>zõÃò§ i'«WÜþwlD?Šxuß/_à»¶ò¼†?"–´­™ýþªV\œççª$(T][c>ø*½Û[W§Règ_[þ]NX÷TVÕ㮯•yûh«£ÞUø¶ª·ÔeR ”8è’ÏѬ8TÖ!ÆDó'ÛÙXË.y½ì(Œÿe¦G2¦ïÑΣ{h‚s.\píË@6ÛYŽEH¡D¢¯œ£aö‘”êkí΋<™­ ÞBÉnA›*y§N£‰Ã4IÌ‹6¶Îh×½ú#¹Œ©ÔÍÉíê!—ª½Ø÷³)´ªv{“ì7$aÞÔºxZ›‚zU5;B í#²ÏCŠãƒm¿»b1šð–[DÌœªD¢œXz§Tîr#ÁœN Ó„§ß9Nn ÚÈþþX¬C~x|¨ä÷윒Կz__JYUàÒ…ßðŽ+»—TИ¦…òxl@«~\0ŠŠáËfÜ%Þ.õt©Cåüz/ʉi³Øò" ½s^?lÇ.2VgË5b~6PÛØ!h"3—HZhÂnJl#ÚP”ëókÏŽé¥Þ´qüSÈÓË#’Ö”p÷(L­$N+îrÓ.%Û*µÙs1C.êïÑMPm“¤n£ø|¯q4mÙáº5!ÐÝçìïM¡œ‘ŠM„”^®¤E•ç‰eÖ4(”’‰ý½ôe¤ümµb?sm ?þ¼¬ f8!°}ë˜A·×¡ør K,©Äê âU©s«ŽÖoÜFÙ5‡å#ì¦Al0DÂV€œ,–FæVY è ?Dèaáºñ¶¦¯ÐøIf(Ôû;µÂqçûaÀûw•¢S"Z±D Ä5ËpèaxÍ*sˆøÁ¡^qsìÑzíx8T½qŸë‡^G!ƒ‡âŠ{"ŽË*a¬ŸiÚ Å8åìÁt–VÞÈ0Ë<#1î&  A5ヶߔˆBIn$óõ=U¯Í‰ önרÌh.§kÕ«ÿ0VÜÕ<áÞDÑmÙtñÈ.ç)Èaéú«¦Ò\»!z€BèÔ¾eHT…‚/÷…n¬ï͉ž6­2Wµ¨]ðU)@öNÉ ïKø„œzÛˆV‘Þ¾Yl:е­÷Ù•ÐIG{ãc µ@±F*ûÞ®(q¨Oõ  ì} »±JÂÞ¤7qT+TjźaW Ao¶)ŠhøFÉ(Z­“Ñ©¡ˆÂÀìM“Br€çñ%NÎfÀf|Bá1Bd”Ê'ìJ”²§ŸâË­€hËãÒîqUê‹AYå3çÓúÄðæìégËÝŸÝ÷µÐ®J­TN‚®Šw¶ç:øâ1WçIâ½-üÉÔ(äKÛYLV܃’–CÑtVýŸÖNÜÄiÙÇ_`ô‹îoüXóò‡Ü%Ðc±Ç"úÙ§EäYYåˆUàÐ5a$$Bc’µh ±2YR‹¢.ÊN“gÅL¢¦(B{Å¥Ñ\„–Ÿi¨|t`%BSÇnâ½AAj%$Bb–ã¤hì(¯Qé&•%ÛÐǸ³"¸’š( ]ð¹€/Ú~hFY …¯Ý¯c¡Tuú©á-S.ÇBN,Ž›Èý°Ü(=ƒ’(X ÊÒe›&ш&ÍGšAiabKÒ“Jód4vBqú †ÚàÑJËô;#q1¶+ó c?úÙò½4ZÊ!(M#Åä;¸ÏA)6ïvЬRpâ{¾Ü¯až±v Þùù± ±âî ·—Y·w¹B!*I–¤Þn¥æ¿w“°=:Ìì 7Ð>öc¥hÀòH¹ç}~­˜E»p qó€GéØTH2]¸V²Û¶ƒàW1œA©¸G“^øÌOE’D ²ª’àñ6)€"¸säR‘8õ¹ÙPTO,½iRÅÞª:Cá&;ù€¨LýèÇk1E§»?ø•v@Ù<óæ&ø©ú( þ±º ù0Ðn›”™àu­8:fbç< :¡ôbô Ì'dà"”éïobëíþÏ.‹ôpé6.V< +Ì¢x6ØyDîF¿‹~Â0¢±±{@¤‚¼” ?–ÑÏ> ý;ñ¨´ÄÁ—v²¿1¦ AfcªúH>ÐR7îlE0fÔ„¡QäMÈ“<`|AP*HEGÀëæÊ2OààÑÌh­0\;<òä ùùúþÞó&èbqáX6Ĭöàï=éñ·HモŽy?™àþ0Ö­Ÿ(àœ{@ü8räü=3¬•߆ ,h³¥° dÜ¢qû·»ÙÐRèø¦—.–Ò›$C‡hOÐêÆœËŽèïÞ ë§.¾u 6à B¹0–ªþ¬/zØ”¹Ô‘0å’¤[JÿvƒÈçUO‰$l^¡[1dÆšËhg$j‚iׯ»õ © Ö^N6)ŒBÎN,P+Yl” póõ+×èÒMì@Ï)ðáŒä"$« Dƒ¥ä±TÅ l”¤p5éÌÍ(¹eÚ¨pÀ›'åMÀNˆ¢ÜÑñÀ>—RKŠ4=Ý–j°dÌÊù;­(AwT+nâàçíi”Üϳ-`Ë4k‰Œn¤Ž%m|6ê`¢±…PçFÚóðÀŠ 0;ë†oŠM!ìee•÷5_é?’ˆu¾4Š—®6oL/&0BÈfßÛÃ?‹ª–j»bÏS¿ [ÿÃL™)~_:´Ÿ{3æo±·-ôaýø3Ô_þ‘ø­Ôò[E™ ~3ž~91O´I7šPPÞ-eU-Z­²MG‘#;(ý@‰ÝœÇ Ž"Ñlœ •[ç׿ûeèÜ]Gò#«Îþ¨Œ´^½”Ë‘Ÿ 82q›9þÕÔÕ†‘³³Cc¿BŠö-SAÁ²‰P„¦ Å£ø{AHÜQ°IK£k|–ùñwÏ…QØãJ+[Šˆ=ž'3õ²[ìi¾6ÄÛ«Q÷7êç•ü ó´G»ô³‘á\ÖÔø\Ž/JâF;¿ù…ÂØlŽðºtB+>BÉ~Ýösxw…­÷Ž,¶S ð¬-ÇeŸß¼ö üèV°A³4Mͤô¿»HV$ÇϖyÙèX­5"‰%Ú&‘m‚òÈó @™!—ÈÍ©Z@Ë ¸Î«ëp«`xÇFJdXþyxwÄÚˆ»pÚU…V›J‘ú”X$8R÷<ã­M­Eëh­T&„beÄT[>àHuâäZF¥êÿ Å–nr´±«ntéµ …þŽƒÖÉŸß2éŠK5²wù覘íÚžñÐ ”·c‚L8§–6ö Mm?ài‰rø½ôf½0üxX§…ÊØöWñùËçyOœ¥>ÿQhȬcã(úçX@Ÿ?óØâoFŸ>ú0wŽðïŠm4þìÊﻃ×ö{± äkׯ%7 ¦ŒÇŸ™Ñv%+‘tñ¡~¹ ÙP䦓ˆðgÎÀ· ­רœ‡~„a¬zpËUÌDk´VçV¦ñÄuó.±$?xU¼/§'E)àÐ4‘z*’™ƒ%ÒZ§Óºå €—k³»ç›%}ú(LmÎõ6•Í )Ÿ~/}ñÔ¢åã¡©#.QÜb˜ö}O\ì<ÍD ,úò€…Ò¸usúatˆ™&ÃL²ÊÆIÿEÛ•44ÀY´c’áÔ`¿²Q“Jçꕹ•@Šruê \N‘³Äç’p²‚LƒhQZaˆ„®5õQýö˜sƒ›¬è‹ØNØÓЬ0X¿JX3Ó5¹íi 65 ?PÂXœb~M¶¯âe´W†k§²hQf§ö9æ¹äx² Ÿ3K3ítÙb³”E©Šq©£n%¥ÉQ Õm–.—ÙðÑÿÛ¦Šɱk^‡]Ãà©Ú)S?¨'º`WЄµ‚’8Kå&\èÝê‚ØÊ‰}4Cyˆ“ «ÇÕ¬œœ%læ=É{ˆRpªëA%ßc+ÃG^­ÑlÎûB£_ä1¡þîY[ûà­eNຼü»–P÷5»>•~ÉÀDÑzƒ"µ+êGRQf´GèE1ÑQÖ¢¢I>/Ϋ]¤gHªó¨Ø"»(ó{=32æ—׈ç&ï­W!+‚Bµˆûè6A§ PwùÉIi*’TG9÷>¢kŽÐC>þî0ç}Dª,4n(To_#¦ËœúˆlùŠ8s€ š¹½eHÞXçóh¾ü™£®^ðü£`=4å;gœž‹¨•ð²T’‘f}?xôƒ°+ŒFãAXÛ-’›ªj¢x¦ëP„ŒV3êw‹*(ÞPgÿ‹ÀaÞ(ÁÿR¾Á•åš!Ôñ’Ém Õúƒç…-¸Oó§*Ëx¶6`TÐØz?Žqà¥ÇÖø|PrbçWQЯ;xá¢QD’p X 2޽œ«z¬bªßRsZ±øɬpÑÀRýéH¦ÆB¿Z1KrVˆn÷H‡yb „†Šé8Þá‘cuV¯ÌÉÊr¡×YŽ 2ìòØ(Ôm­œ¯6$ •³-Z/Ö2¢GÂÏriˆ¯,ÙÔ ýý«¯Çú«ˆPÙ©Íåð•sN©Aÿúg:ýÜ&óÒË<¢ö;"BóÉ\Aȇq±˜a;êîÆB-Ñ2V»¦ÀØ' (pÇ6w•!´ŽR,5 mW7êV 6Bï~k”Z«%•9Š´ÈŒ´UÖJ6gW7\꤭;Vì¾EGaA«>&³ÖÐÊ^Âll˜X–·6×VQy'£e› y¶ë!0$`›Uh”&)é“ÕEµää­¥¨Û0”­XF^+*¬4_ú|rP²~œ¼G+Š}›Â\<#•UB/7§ ðÑ>–5CRއ9·¦# _«ˆr2yuˆÙ8L/>Ÿ~ç üãPY«~~ýd<ÏÐý‰†6ù=»G½þÀšd ¸²>°ÉIeðæßˆ)´OpöjPd UQ\¾Øa£)|O*öÂ(Þ¯i x·"Ó(ÙQÒñXP¯*]¿Ák0¹n>—Ji²æ‰$À ÓBRC§Ö¸ÅÐC»x-hKíG‘´?ØŠ¶9šÀ,nî¸kk% ’®®«6ÇŠ&rFg–¥ì€kogôlš¶m¯"oði“Täñ5º"y8«•þ¡™÷¶NèÙÝïßZDíAõÏŠÏLýÛ¸ôo1†1õPÜÓÏ’Ê$úßÜyûéŸâø}Ñ¡Pf?¡G6YÓ«OCó–×yªÚœ´íM‚éŽ zòüø…,aQ¡þJü¢O¸nâ0ûq•(sÊPªò:&Û{+îfoŽ!ôÏÿòÖ_”Ÿ©¾R`‚µýY”ˆ¢¾¬µ„XܪÃg†/ôNÉðJƒšx;ÇVS ÙoÆÅ%¾ CM)ù®Ï‹VnÁòµƒ¬EQy£çq1zÏër,ZLcìü=`YÇó“˜òë'›e9E$L„à ´¤ÑšÏìnê&£¨¯ ¢’‡ÀÛl;1¢ÇŽûeULt.Z•ˆãÔHOzcŠQе<Ñ›wV„Œ`°e0Y.'€¦l[¶°±¡Ú;6]±wàC™íE°9kî¿Øp6\Ï£ž?y¦øÍŸÜNò‚fäű{>¡<ÀÍ”.|i$Ò³¯¥¯¥wüÛÝQ.…?g€–ai–Lt:æßN».è—jû³›>ç‘Vp ¤sS°ã<,ñ6V¤™ÿ‡¦IÉôvÃÿðg†6£\ŠìGþô‡)1q²g¯ÏÿDÉ ÑLöùN3bË-â¢JÜ­¾Ìõ¢÷ªãcçb Ùv=Aš=J§à‡¤ëPê‡Ãz (¦©\aKEœa¡£c@SNoY؆xJ‡ìilëåÙú¼ó9Ê¢=é ÐV§e"½^!Bc`m¼) ±7Qe`m8A kh¼ œYÖªXwnWë7Ì.°õáFb÷N}â̤%}b&¬[òC35%¬VwùˆÆA¨"¾ ã÷r]ì7ã46s!S<~>^†Óx<Ñð–% ‰8~øÌ® Ô,Ž€smt¯M>ëÆ6îŸé}¶éo•ÙJU5ú%Reÿ¢À$˜H9d%Ýêqòh“¨„ ŠˆEN8Ñ(‘tH€=“õQÊ~Pž¶61ˇ@…ª?Ø©$ê{CîaK@5úk[âùË–(ÐÇx£Æ‡^va…ÃY%çÊ„M¨#ebjX\–·÷êQÄ4ð|òc…ÔÏ"áZÍwñ_+¥í}r×õž/Ê—ÝðS¶Â¦ Š,fcv/~ÚÖŸ 5õž5+òý¨@dౚ§`Çl.¯°1/„´Y²iʵ¼1Pf=æ:ô¬t³t iéÇ"ù§[ˆÊÍ\/GV«ÞC)a ä;!wh=3¯_Kñ"Êdzá³-˜éĺ3mÂîûcC[¡²÷ö2ÖFrñ-v(”Ÿ±-Zµla¶þ-+t[’;Çxü™U}¡Ä ã¬4ßÊ@éSH5û#Ú<ë׃¿ >•úß};öþX,KšA-¨)e‹véB®@Ž?e€­ TÞ›n‘«ä}åd`VÜòo«hw:†ÈÜUÅÐ[Ãî1³VY>a>Ä4½b>  †2[„,6?aq{àÏ$žì¹UZP§?ÛƒK½­§‹Ø´YC¹_…ÀÙy¢;¶\óssÇVY¨)e( k©B­éû÷·ðúpÙ{àà§0Ì©óU–>ûÑdx¼&x€ï?ó“+¿_áðÃfyúE6 £v¿æ.s¾b°,Í€ŠoËšÌR®F8 âgapö4c â¥*3óqjfOú=Ú²V³"‹j„T`“7¨]µ€oÁ†¯è×Ah.pJžè`‡ÜÏük€SµI"l¸.€«¤¶ TáL QÏ“6‡r…%Æ3R¤i‚¼ÿãób!u,*„)°Y< >-p`d hRÛ˜ýE’wåÆN©–ÍQïù©d è¦ðKØ|mߣjÚEœÚ…ž[³³l'þUÝ¿°Ý»ÔˆcC%Õâ“Á%uð½Eç· “q‹i>k?ö½ò¢É>ó|Ÿ+dž_?‘q Œ¶Ÿù‘«“­_f.Òü¼Ñœ¸-•ˆp¾NÀ5y £úx/>Ò ´)îŽ8­èÈÃéÃÖf“÷Tj{º£m$ã+›ˆ66ÄU…ás E‹bÌOa݈ÕʪÆÀÒeµÊlÒ¼ä«ÚK‘‚NþfqÿhÉ õ?âžž`"ë6^¿“ÆøûÙOþíÏÌ,øO5áþt þiÿh#Œ÷•о|}-ÙFX£­YàwEìšÃ+=@_0s*oÉÎà0spŠøÖêõáCg¼ nãCæö;§rv58Aö)å¹vM)"f®*O4 À_DÈ$Š´²9Pý‹“L´ö[oT~Ï´l(ÍØS¤-®3Ó‹íÅë¢G„»Î©fMD¡N:ÑÁ¯’àH­[ fõÁ(t¦ml1^á\?zjØœç2”6Kpž²™ú<'³³/ÖóMRfÐÚ´ž'Ëñc=¾>pt…`?žƒß¶ÅÌ¥BûƒG}ÂEuݳ+´  á­vNϨ×2BŽhÔÞ&¦j\‰àä5¾î–Hi*T²GÔ‹ÌdMfÝ©j-gç2u'c=N Ç׫kÆpc®„åZ¢C#ËáðŸMcMP‚üæ(™Kœ519¬ð7œöoé5ÛÌ2´hªBm΀}^Ü,ȳ`#²«=l•lG1. ㌔+ì0”NŸ ”ëâÒí´ Ïu¹wõùO¦©…V'Q Ãx¾IVÞ~b{ۤϹRwà­}“â –R*Hq–Ò ˜¿_ÜTù,ùoåÿšz¿Oþç`˾¼}_›«jâ:ÂØ#”Ev•Q_Y¿„o¦$Nd‰«ë+„ÈŒ.Ò^Á nV-¶€‡„a9©„Ðaq|BÔïrb´2 ÊXZmFh}Œ›l>VÙ 7-.g‚m×÷«{6Jù³šS+#–ZñÙRks«šBstF|óAÊ”%o–8¦7AÀô¨P¢,þ>×õñ—©­ž“\ÍÔfvpç íwc¶d1ebLí¿õ»ãý_ÿ|Ròÿ?Ô‘‡û endstream endobj 5 0 obj 28145 endobj 2 0 obj << /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 788.1133 244.8319] /CropBox [55.72045 45.99384 200.5221 138.4378] /BleedBox [0 0 788.1133 244.8319] /TrimBox [0 0 788.1133 244.8319] /ArtBox [0 0 788.1133 244.8319] >> endobj 6 0 obj << /ProcSet [ /PDF /ImageB /ImageC /ImageI ] /ColorSpace << /Cs1 7 0 R >> /ExtGState << /Gs1 84 0 R >> /XObject << /Im8 29 0 R /Im18 59 0 R /Im2 11 0 R /Im24 75 0 R /Im20 65 0 R /Im13 44 0 R /Im3 14 0 R /Im21 68 0 R /Im14 47 0 R /Im1 8 0 R /Im5 20 0 R /Im17 56 0 R /Im6 23 0 R /Im23 73 0 R /Im25 79 0 R /Im9 32 0 R /Im16 53 0 R /Im7 26 0 R /Im11 38 0 R /Im15 50 0 R /Im22 71 0 R /Im19 62 0 R /Im10 35 0 R /Im4 17 0 R /Im12 41 0 R /Fm1 81 0 R >> /Shading << /Sh8 31 0 R /Sh2 13 0 R /Sh3 16 0 R /Sh14 49 0 R /Sh15 52 0 R /Sh6 25 0 R /Sh13 46 0 R /Sh17 58 0 R /Sh18 61 0 R /Sh21 70 0 R /Sh10 37 0 R /Sh12 43 0 R /Sh4 19 0 R /Sh16 55 0 R /Sh23 78 0 R /Sh20 67 0 R /Sh5 22 0 R /Sh7 28 0 R /Sh22 77 0 R /Sh19 64 0 R /Sh11 40 0 R /Sh1 10 0 R /Sh9 34 0 R >> >> endobj 81 0 obj << /Length 82 0 R /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [46 0 788 198] /Resources 83 0 R /Group << /S /Transparency /CS 7 0 R /I true /K false >> >> stream xmšKÎ%· …çÿ*jåÒ[{ 3£Y€‘dÒàô Û÷G–®Dªã†Ö¹©×á«úÏë·ëÏ+×»…'µë¹Zwì£^a´»=­\ÿýçõë?W¸~ü~ýò·ñú÷3á~ø/”Xz_\­÷;„”®Çþp}ß?,½ß·–ÿƒ} þ¥+ iÜ©—ÆòîÆòêUZ¾1¯P0]ëg½éúkþûõ˯?ÂׯßXÐ(qä€ o©Å’ÇõíW¶ÿܵ×ÜsdÿüY£},v3_¿ÿq…Tø?Ü=—1Ýòƾ‹ÈRî'VžÈæÜ¯W®V9ð¾ëhvPeù0QïÐ&BbÑ9ªºŠÙ‰‰qö!Õ»<Í銽XÏV]Ãlß&T]Ãl=L´;åt˜hw áTW[ß&¦ºžËa¢ßOH‡ î·?Û„î¶cö§©%LÄr÷ð5Ñ9ŸˆœÇ:—Áé´{¤ÚUÝÀ,êƒéÜY®›w–xcJ%bÂc% LLlª«ú4½\/ËuSšS;9#T+Cè;-–»aîŽiç¯3„¯k‹Põ%ëÉQXº~…x[¬œÎúqë­!~e#§¦vö¶p»sι$-C)(„,øº)Èp¤—‚º;2’G(8§â4È$ÍP3¢õc}„skHþº×ÔQ,L›¿’s<;öÜB[±QÎ;ö1¬ÏûtM’¿±O70nÏZS%­X¯ƒAl;ö1ä±ë’$Ø1$ê¯%1lmÇ>†#¯(ZId韫Ë`± QÌsËYˆbÜ*nzL³D"D±ê1A^¦•ƒî]ž‚Çr‘°ç1ÂØ‚äè`*At›Ð]DꡌšpØÂÅ!¼™˜êƒî?O­KLM@÷ax3±Q_Þ¨¦ŒÅÍ› ÉÇâ #â<:߷ðFá©'ÀÚhxY\X±ÅÊ­Y·‡âÐ7Ë9(˜^ɘm F¦Ç¡˜$¬?G" 6êNDu³ø•Tñ‹&S©”1Ïv sÛLcH$dísË;v4ZBÝü‘j%¿LSc$ÏfZ…ým3aÍÉvü¢Œð^l4dFg…xv.å ±ýÄ4B¹™•Dî”",p‹^IòaO‘‡•¼!ÀM{œøŒ.õX-Z=~Ü?7KÅË‘S° ƒ5üˆwá±Ú„´£©ÀAYŒ„âÑ4ug ×£gç z rP+AØì1Š?¹ 'GS»0®¬‘`Èí!z ˜ðXÊBnÑTjî'ÔwhE»´ ^§ÓH9ÈÍ4 •ëWÊS´­!­N| é˜uÒÖD±…´SVz"Â×5$7ßš(Ov`h4A†tÉ’ nM”#±nMøº"K—RWâШDâN+Ö±ÓJ†ýKSÇÑ¥íj›ä]#Šüµ&†$¤kM ©ò­&ª|y™;uê ÛŒÃéQ1¢Ó‹¥:äñ»©”þò2FÕ"&ö=£O›8’Æð¿“x<#EqÂ3òÚè0×8qäè° ‹á$Js1¡Óúˆ¼×C,#x"G7à0Aa+WáM¼­½ì:þ¢ÁŒrŠ]Ø©d/CXê1úÇ.¨[h bôŽ]àMjñ>Íc]š‡ œ‹6#Í.h}¤âã3ê(]àkšO» jœ$äöÍ¿Y\Or{±–$xzŒî€71x[-û»{Û§{@4¼ 0êVoŒî€¿ 0º~CZ!’ñ¸¨¬­W‡åü]0•îÀ± é„HðôúÞ†¯Q‡‹ê’[1\T9‚ç i Gð£O€ ãÀh@ÚcèpPÃEõ£Ç3pQEÈmê%0š܅ǤEíúXð]®Âbx¨!ÕcôØ„Çh"œ„ÃåR \…ŸJOáØj¥ëÀCÉÍÚ©”KIú>£¹!êýt#Si6Èm;ŒŽƒÜ¶Á¸‚'|bþÀ;ññç©æ´ƒ1CÚè|ã-CÚ¨[CÚK•Ò³ƒ1i¸°Ä)K¥”w+‡_i; ÉÄùdØà«‡è?°:‹IÛD+Ôž^§i0v Æ;¿EÑ™øÉÝ!Önbû ¥á3‚ËÀhRÈ.vF“â„èQˆ 'ÖºžÇhRpÚ‹´\„¯{¿ž,u"F‚GâÅj¾zŒ&&6éd.M LXŒZ)ÂW½¼øàpÆêÉ0—·gÄÓ!]‰Ï#‘! Ô­¹orJ'‚ÄJ:Ÿ×&CmŸ7"CZ[ÅO\‰­üJBÔNMô¶&ª´Ûøà3†Ðm®wQWb+¿êg¥©)I›Áj¢Û·×D=“Vo%…½9š'M[]½“´¸$²ýY\’!…½&*–¼¸¾ÁÈ]M«ê ~óŤˆÑ|Ürzþú¥Åöžé“4“ìª>ˆŸ©1¬}’à“]²PÌj1¹|µ`ô01ŸÈTGáx6õÖqö%IEøå1z¦ìb.EÕá ä#úÓá%ŠçŸÌ¤ÇpŠÑbÀ„U‡—(šì’ÐO‰'¿ÈMúÉ/¼„ðÁ«£Å°MèêÈMÆÉ/¼D~ÙC¦ú‰§>¼ÄpÅd|¨ƒª/&ëÑ“‚ÑcØ&äð^¢ çŒY0ùâé: ~HÑ¡öWF‹a[Í‚Ñb8,à$*Œ´&è§$¡åÄtq¤!pÓËÑb8LpSIXjåÈCÌ™¨:|H¾z1ë‡ ÒG˜ëåh1lS-/Fò‘íTd\Ô8ÈpQÕ[R)ù%ãŸ3ýö]zo endstream endobj 82 0 obj 3071 endobj 83 0 obj << /ProcSet [ /PDF ] /ColorSpace << /Cs1 7 0 R >> /ExtGState << /Gs2 85 0 R >> >> endobj 31 0 obj << /ColorSpace 7 0 R /ShadingType 2 /Coords [ 409.4464 225.7094 392.8362 205.6023 ] /Domain [ 0 1 ] /Extend [ true true ] /Function 86 0 R >> endobj 13 0 obj << /ColorSpace 7 0 R /ShadingType 2 /Coords [ 409.4464 225.7094 392.8362 205.6023 ] /Domain [ 0 1 ] /Extend [ true true ] /Function 87 0 R >> endobj 16 0 obj << /ColorSpace 7 0 R /ShadingType 2 /Coords [ 313.0801 134.3021 310.8946 130.8052 ] /Domain [ 0 1 ] /Extend [ true true ] /Function 88 0 R >> endobj 49 0 obj << /ColorSpace 7 0 R /ShadingType 2 /Coords [ 348.251 193.3633 332.515 161.0171 ] /Domain [ 0 1 ] /Extend [ true true ] /Function 89 0 R >> endobj 52 0 obj << /ColorSpace 7 0 R /ShadingType 2 /Coords [ 348.251 193.3633 332.515 161.0171 ] /Domain [ 0 1 ] /Extend [ true true ] /Function 90 0 R >> endobj 25 0 obj << /ColorSpace 7 0 R /ShadingType 2 /Coords [ 409.4464 225.7094 392.8362 205.6023 ] /Domain [ 0 1 ] /Extend [ true true ] /Function 91 0 R >> endobj 46 0 obj << /ColorSpace 7 0 R /ShadingType 2 /Coords [ 348.251 193.3633 332.515 161.0171 ] /Domain [ 0 1 ] /Extend [ true true ] /Function 92 0 R >> endobj 58 0 obj << /ColorSpace 7 0 R /ShadingType 2 /Coords [ 348.251 193.3633 332.515 161.0171 ] /Domain [ 0 1 ] /Extend [ true true ] /Function 93 0 R >> endobj 61 0 obj << /ColorSpace 7 0 R /ShadingType 2 /Coords [ 348.251 193.3633 332.515 161.0171 ] /Domain [ 0 1 ] /Extend [ true true ] /Function 94 0 R >> endobj 70 0 obj << /ColorSpace 7 0 R /ShadingType 2 /Coords [ 348.251 193.3633 332.515 161.0171 ] /Domain [ 0 1 ] /Extend [ true true ] /Function 95 0 R >> endobj 37 0 obj << /ColorSpace 7 0 R /ShadingType 2 /Coords [ 348.251 193.3633 332.515 161.0171 ] /Domain [ 0 1 ] /Extend [ true true ] /Function 96 0 R >> endobj 43 0 obj << /ColorSpace 7 0 R /ShadingType 2 /Coords [ 348.251 193.3633 332.515 161.0171 ] /Domain [ 0 1 ] /Extend [ true true ] /Function 97 0 R >> endobj 19 0 obj << /ColorSpace 7 0 R /ShadingType 2 /Coords [ 313.0801 134.3021 310.8946 130.8052 ] /Domain [ 0 1 ] /Extend [ true true ] /Function 98 0 R >> endobj 55 0 obj << /ColorSpace 7 0 R /ShadingType 2 /Coords [ 348.251 193.3633 332.515 161.0171 ] /Domain [ 0 1 ] /Extend [ true true ] /Function 99 0 R >> endobj 78 0 obj << /ColorSpace 7 0 R /ShadingType 2 /Coords [ 150.9611 192.3518 112.0314 137.273 ] /Domain [ 0 1 ] /Extend [ true true ] /Function 100 0 R >> endobj 67 0 obj << /ColorSpace 7 0 R /ShadingType 2 /Coords [ 348.251 193.3633 332.515 161.0171 ] /Domain [ 0 1 ] /Extend [ true true ] /Function 101 0 R >> endobj 22 0 obj << /ColorSpace 7 0 R /ShadingType 2 /Coords [ 313.0801 134.3021 310.8946 130.8052 ] /Domain [ 0 1 ] /Extend [ true true ] /Function 102 0 R >> endobj 28 0 obj << /ColorSpace 7 0 R /ShadingType 2 /Coords [ 409.4464 225.7094 392.8362 205.6023 ] /Domain [ 0 1 ] /Extend [ true true ] /Function 103 0 R >> endobj 77 0 obj << /ColorSpace 7 0 R /ShadingType 2 /Coords [ 26.64894 20.60378 135.6653 114.3977 ] /Domain [ 0 1 ] /Extend [ true true ] /Function 104 0 R >> endobj 64 0 obj << /ColorSpace 7 0 R /ShadingType 2 /Coords [ 348.251 193.3633 332.515 161.0171 ] /Domain [ 0 1 ] /Extend [ true true ] /Function 105 0 R >> endobj 40 0 obj << /ColorSpace 7 0 R /ShadingType 2 /Coords [ 348.251 193.3633 332.515 161.0171 ] /Domain [ 0 1 ] /Extend [ true true ] /Function 106 0 R >> endobj 10 0 obj << /ColorSpace 7 0 R /ShadingType 2 /Coords [ 313.0801 134.3021 310.8946 130.8052 ] /Domain [ 0 1 ] /Extend [ true true ] /Function 107 0 R >> endobj 34 0 obj << /ColorSpace 7 0 R /ShadingType 2 /Coords [ 348.251 193.3633 332.515 161.0171 ] /Domain [ 0 1 ] /Extend [ true true ] /Function 108 0 R >> endobj 29 0 obj << /Length 30 0 R /Type /XObject /Subtype /Image /Width 9 /Height 9 /ColorSpace 7 0 R /SMask 109 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream xuŒ1À ÿÿ†deÎJÖde-ï©‹i„*ÕC@§³UŸˆHÝÔÌ>Nk­÷ž™åãƒ@Žˆ1Æœ“u\ÈîÈpð”Á¯Ê\xõýž pY)‡õ?H­ªÜ¿˜´÷ endstream endobj 30 0 obj 93 endobj 59 0 obj << /Length 60 0 R /Type /XObject /Subtype /Image /Width 6 /Height 6 /ColorSpace 7 0 R /SMask 111 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x›3fÏž '‘@öŽ;à²;wî¼@qûêÕ«@‰Ì€(C#”ÔN÷ endstream endobj 60 0 obj 47 endobj 11 0 obj << /Length 12 0 R /Type /XObject /Subtype /Image /Width 10 /Height 10 /ColorSpace 7 0 R /SMask 113 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream xe1À ÿÿm­mµ…Ö6¾'«†1W .wóRJÉë«ÔZ/ˆ •R‰½6^=¼÷>Ƙsòui­©*ÜÄÈR1òla°+¬âÊ—8/–+Âè6®øžÈ­ÿÆ‘ÃØ¼×Vß! endstream endobj 12 0 obj 105 endobj 75 0 obj << /Length 76 0 R /Type /XObject /Subtype /Image /Width 115 /Height 51 /ColorSpace 7 0 R /SMask 115 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream xÍ› “UU–…oƒˆ"2È$2 ˜ÉÌc’Éœ˜ŠSE …*”V ”6`6Ú†ZjµQjk¯sö;ï=2M¥"º"vd\î»ï¼{Ö]gíµ÷¹Ìœ±}æDÌšIø¸ÿ/—å•ñ鬙;‰'Ÿ~êÉ=O=¹wÎSûŸyú1÷™Ãóæ7÷Ø‚yljçŒ-\0¶háÉ%‹ÎKŸ%–/'V,› ^X6±ò…WˆÕ+_[µâUbͪ7ˆµ«ÿ@¬[£Ø°öÄúˆë/6qiãúK›7\&6ElÞð'bS„ÏûÌæ—¹²ùâÅë.­_û–Çdp~¥üâê?¬Yõ:7Àý8|{/&rnÉ¢ÓL`šÄ‚y#Óö™Ã ùÄŒ!¢ÂÛÈÉ@»ó©Áz¨ÎªOÏÞ7ç©}ÏÌÕƒ ¨ÿìÈÂù£ ç ÒÅÏÒÅϤÜÕÒó+–O†tÅò «V¼¶Zx¾¾fåÄ:ð\Ý æºKà`X Z…îO›®´±eÓ¢žy{`ÓÛ¯(â¤Á/ßm¡n@j~}íê7 /s{„áõ{&‰ Sá}nÁ¨±mX* ÈS²¢Îž5l®BÔàêÁ¹sƒêüg“¨ú CÊc]ºøœ‰úüÒó~ô+–›¥¦¨brò7ˆôVË®„¢šáÚxeËæ«["8Ø|•f´ç}\o †Éão\ÇBÿù]¯˜¿Ü[À«[]¹üá)tÃ{Úì ê ÛI×¾Ö{µÅaÆÐ¬™;€”˜ÝpÕDÿìQ¯5¸*–¶Dí,ü²ê©—¼W%»™y9ù,[6¿zŠ æ¶-ï:^Üò.‘ÿlÞÛ¶…ÐGÆÜßõqò9DzÂAÜÀ¥?ñ.xC»˜ Uæ°°wÑÂLõ°ýülÏ4êúÄ ‰jr•µO„¨ Qeù#5£ ÎÂ÷Úç K;ZÊ£M«~Õë¾ç 뤟š´YwѪ˜‹ºÆ÷¶Ôà¶kÄ‹[¯ƒ[¯)Ú3q<¸ízD|´õZî‘©ª‡t#Öžû‰[ *¼SˆY›ºRWCׂYùÙ s¨º*Qs –?© ®’§´üy^ñì´üý4­K¬ ª¥o¬…QYõƒ›ß°î’Ø S¸éíº¢ßI¾q0€ PC/¾OlT”cþù¨3ù©¾À#ïå³A΄h‰°@™ Ü?‘Ú«ü¼¨‹80k“ªG j"‹´ex㯠ÒÙ  ®Zbù+û[ÀA•g·l‰PuÞϤO’- õ›¦A,º‹H³ÐtBýÌ¢\ÚÁÃÀs뵡ÿ,ÜO°Ú1t£7oì úÏûÌà =ˆ&*Ï5~’™౦yùV ¼«ß\§ì†sá e`²&’©œl`ìã-PÕÔÕD5DÕžJËߢºlñ9‚g' zžìQ3C½,­ ýÅHidíR‘Sü¼–0‚êŽÁvÝ €n×öwFpÑufLJ»vpÍ_ˆ¼€ƒ{<‚ö1&W­nàÕ ree°Bʰ&óš\ ü±êš·‘¡¶÷ð¶ü3@.¨ÎÚfµØ*ëj8U骖hK»üMTP +U’> ßk?î³$¦’‰®J<XïRË:å?·ôëµãÃÝ;ÿ:ÁAÄG»w:öùá)Ê5úÔg È{;¸±>ÐëN…zÖW•7#XY•º¢‡ÓnPW¦À»|éxªè#ŒÖŒívV¨º¢*3ìTeQõò7W+ªZûNRÅD…#µu÷­ZKK2 –z‚ZÑ< iÔ_÷ ßÚ³ËqsÏ."ÿyKeøüðÍ=DWðÁü£Âpƒ\8ŒÚHp”·¢Rà`ï;«p†öï[ÀӔꬩ%@[˜½a´flµ—* À¨ÎŸ§ R%•uuœ‡Eªbd » %cë³¶^9=‰ ›¯ZK[–&‹D-1³°î À@l÷®[{wßÞ»ûcbßîÛ=Ѿ=OÁÏâf¼Œo‹Ô„#>º±m {Ñ^©VQfä5˜ž!U·×n5‹e…«ö«VÙJ%€¸Z«*Ù*sÕ ¨v-ž©ë¦¢¨¯xí;#R¦@xR©“^ÅàŒ„ÑKˆöï½SbÏý„ÿ¹çÎ}ŸÜ÷ ¡“Ýq`ïbïðm£dïŸK5öó…ºä»Pû€wà=–˜Å!\Ùe[ÄVuMªT×ꂱ!éW][ÙYÕ[µlIp5œ*ò.l¨2õEgÝaiøÌ²ð#9ѰB ¬É 3¡®ƒû?Q€õ/x~zèÀ‡Ü%8ÐGÍ•`îØ¿ço œs|ÿ\ýõ¤?5ÓÅsxà ³ÊŒ-ì…-êY„ÔØD˜KktWÔ °³ÂXì¬ìÖº¸NÕjƒ1ªäP+*÷ µ? µoGjoib˜¥…¢–Ç]7cÊ·“ÆÄ0ÀCû¤ðË¿äý¤á?Á“)ÒšÓc©Þ ^ÝK¦UN œnôŽ|9vü âÄñ/3ÆF¾ˆø’O}}‚Ï uŽok8ëá+^³·ø‡‘Ô¬ºƒ¯ ŠêuUÛ&y©}­Z`ö5®ŸVƒ…lÕ&,ëj&,Puù~õMܲû™*ü£S¢úžÛ&܃R@,W@0!Xú±ð܉~ß'ÊæûïzŽ^鱨Ì‘‡£DpRHÖÉ“£_ýâÔèWĉˆ8ÉyE¢Í_l¹íñ×?ײ×é²Â+ÏŒdÉ6DRsF l‹×…·’Üè•ÌN Ó¹r?pŽ€…«¹:ªâjqV¥HWKU%]õO8Uu–)j“¤p>ÖRevCzè~,ÕÏ´l¡V]àÉ`æÉ±¯Úé_?2Nøš8=öâÄ×\lØsòÙã§>wÁÛ°×Æ &ˆºÃ]ªëƵ —„í¦+¶i_—Ý«èVTµ›ã }Û¸ZéªÚÊå?Ú¢l宾 €Z(8ÿ÷!jfIVÔMf)Þ“”¤¬Ìaši´Bj¾FÀ9=&ÄZÄÙS'ΜüVqJÑžÉc.n¿•Æ’Úâ§i}(â°ÿ®½Y`«)”Œ†aºU°Ê´b6_•ݪ=l ºÂªN z,‹*Wë^• ’­´%¨JÌUÌ*OÐN•ßETËòwʽA/4PU¼On‚-^˜L"åb/̃~ól —ž;ý½âLÄéïÎ)Ú3q|úû@Ìÿ“ßj(ö OªrØjŒÚ<´žxÝ·@x£¦0¼ÈS#`Nå­Údëþ•¹š+èÚq­±i¥+N@\½Tu}‹ ¸„È@(@تh™ÂU®+)'½Ü£G*¢zÊ)KÍ¢ÀSÊifNžüVп?öý1~æÂçó¸ù–À7·ÓÌaÑo9 rðeç¼&÷Þ ÛañÖÔErM¤Ð„wÑW¶X‘³µ"à A‰@´X«”ê–«¶ÁÕë^‘ª„*4ÉMEñnwÊ}’)Ì /@¯G%£±¢‡íb*Š 6~ö‚ƒ‰ñ_:÷¿üøÿÔ™NpA\£3 2_¬æ;°…Ì–eÀ1e:àõª©Êð™ – ØämÁ6|Bذë²Xñn€µÎÊœ…¿RçÊæ*×îZZÑUzVNXBµ¶þ\Uñ‹æ*÷Àòç~Œª ª—?Ä9-k¿,üÐO³ÔšÌÝÄù¾ÜœŒó?½|žè\ЂìÑ€Úƒë‡N}«ç8â`xG/Ñ¡®d¡ø1“$x[ºdY!¶Þu…®Úi)[-Þ4·ˆÒUûV¸Ö°Hë[TX”Fµõ«Õ0Õp•_Wß# €Ròª¨åï¬ÝÅÒXò!ai°úéÂÄ/¯¼ô3ÁAÆ+?ùϼ&p.P{4þzp«4ÔaßÏ—ûAç ¶QÓ±¾ÈhJ h8|*ªHÐù7‘˜;¤ ºú=í·Ú»f¯•N êÚˆ€_S‘¥½*ºÒª&€º±ibèáj¤Zeÿ\þá-¿èÑÒ–¥^Úãÿ$@5ÏW_þeúáGà¿9š¥x+{Is]â`O"ÞÖª­ÈBÔérákS¹,zbö®Q¨Ùb'PKW9Z‚î ¦ºfÝ PvTµ¥²MæŠç•"à èjØ*wœàªÒn¤*ü¤” U¼¹Iy|\BúCjŠ&,-’¯½òËÔá‹}MûÅÍbu%Âx¥½¾%óx ¶G”Ñ¢*¼ÏêCÙ‚´Q> ߢsnA¨9« šiËÛX©®éU‰þJV¥+ªR ¨­ߨ†„®–zJ\MJްŸd ¶Oä”ñ3JOýXúl¡›äöSËäd¯~Ôâà‡k…Ç6ðè[Yàþ…m´qB>q.“&Di†&X½Ïæ÷.J³ÅN -]c³uÕ+.]U èÕµ$ÛäZUDkEå 6`X6 Ú*5”ÌU›ä‹ÚS÷,kú÷˜ËwpF¨Žÿh–zâÉ´Dfú`N}eŽ ¶ü"ìjÿÀ-Iu#©9¥š·rbG>'ó²Ý[À†1S%²Ø<‚W)ÖT׎(ý«ÌY”®7¢Çª×é¤YJgµ$,U–zPåN)çî0—?wn†$QÍ&;5,‰sLçúöš<æÀâàjx¹¹2Á[ h€vÕtV4!Z»¡ áÁÀ–äâ ºX®ÜqV§@ʆK¼»" ˆÒµåj©°Ë Wm®\ «æªPSeJ°Ü”§bù;SGzrÖ‰ý'ûÏL}}ûi{ìq*¼?ÕM?VÌØ×hBðV¤o¥ ÷ÛZ;üM¼¾Õ³Ÿ•E]MׯæVJ+": @]¡+¢MÝÊó’®Ú²FÂBç¥ÑQáYKWcù[WAµgùÿ¢¶ø<æ±á½0ñs¡nãÇTGD†o£‚P ¶ÞFÙ«DV W=f µXu ‹Æu}‹å€^û‰ ë/)”{–ÖRDWÙ"`®Š®d«à*ËÍ ¢:5Ûã\ó«ßõ<_ß’Ó…&Ë¢·fM°Øf]f±6_ì]£•]ÞhmÓV¼b9+:-­„P½B×0oéxjŒïê/–¸:òëˆ@"[}¤¤ -–ÿ/¸z&ÕO¹_…‚¯Lçšþ‘§xL ètƽq‡%Q:ãþÕò¦:ó‚36`Î&ƶQ×òV[Î@Sj©ãÚÔYÚ,N Ú,nZÜ ä9ªˆ­߆VÑUDàÌð\lekQ} ¦€+±Îø\S%WØ*—E÷Œûo#‘9kAÀ$ØÙî½CµÕ­*µÚ.V«®a±´áW³Ù"3P-–Û,¢k´­xŽVW~Ý…€ zûÿÂÕjZl„þƒ~XúÏLç[ý×øLŽÆAðVÍ‡Š­Hk½…'Jd#$2‘¶$²¨ÈÂeéýöØ&èj¹øÖÚÐÆkôõz€€ýÖTWò`A56YÔŒÎDƒ…_·TiU `®°] “šlÖyþ·Ž_±UKGš Þ6,Ú5ál‹ @*²XÛwÅ»¶êê½×ÚqÕ»ÍÒZÙÝô®ª³ús–E€ê T%­ª­¤«¨ÚL†Õo¡‡o“ ›ç§9~`«\îMÈÂÁ!ÄÖîKU:àÿáâÍ—n`ãe¡ô®*µ¤V]õŠZ-²R]!²¥›jTYe9G¦žædŸNv¾ÙÇS_9Ù§>Ï_ûªB;„ÂÛØƒ(îKï0|ÆR%‹õ0¶5ZÞ|)…üwª¶(ˆÎ€*‚’¶ŠwU9=P†€œ€‹Á «j›+$k² ÉÎLÅd×ÿÖóíø>.؆I`é¥ÒbÀ»Ž ¼W_Ðp+tõæËÊ, ô® [Ùî ”Š ndcp2ñV@¦-t rV)]¹wWBZK÷»ý­“ýÿ½¾5`aì¾¾<6€ýRAZš]›°uÿ¥Ø×º[ü€‹•Z嵫ֻ]•³úEÀ[xºŽ÷JkË C÷ûÎ<Îw§ù‹–V†²X—Òj¿L¡ÚZûhgu­xk¨´^£ë’ÕVñØØpY­w•q-å@:‚ªéÚ?.NBéÇcõ¿v|fA`éÙÙV[›=„´›¶mkóò¼_ÇjíkqYÚ&ÐËB]íÁx›¥ÓL‹5"‹%Tc7ŸŸÎ.««Qí°¯ÑšŸN ÎÔŸæ SL=BϧüÓÎV¤Më/„ÐE ´{~äó|Ë¥íº4½,¿0P^Ãp/Ëï Ö´öÕ[„5m—5òuŸúWQ4åÀÏí{n»ýhŠãékúW¶?÷«ß2¶i½”ÅÆô²ìÁÈCwÛe´üÚ€7¶zv ¶¹ëâæ€7µ?fO —Õ¦-uŽ«3À¦'k—Åm N¬#n»EÏq;©ö¸ç²Gþs:׷״ǰ礯çoÚ«AiΨS·–B¬éƦ!–`ù^uC ¼ ã¶ví¾J \ÃÒ!ôÿ È–K¦-¡:¥Vma¹"x¤ü¾©µóz„©?mÇñqÿõ“±C(Y¬X/m;…ÙôÔ\¶~m û kI[´^e´–´¥ÆN³G Þ`ÐUÞÕ.ëWéÚ?ÓÏ3 M/ªô+­…±Þájö¸{va:elël´\ƺIX:„±ùÒi¹Lž¶ú™0gú±ì»í•“]3Ùùé|7¯aH‚²uyƒh'2wÖl­ò¡_z·ÝòE—4ZÚÛŠCv!ó3V{辫-Y§éZ·\)µD×ÉSÞsÿÁ¿ŠþaóÌïߨš´.Ü=`î(áÿñDMÁ endstream endobj 76 0 obj 5722 endobj 65 0 obj << /Length 66 0 R /Type /XObject /Subtype /Image /Width 6 /Height 6 /ColorSpace 7 0 R /SMask 117 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x›3fÏž '‘@öŽ;à²;wî¼@qûêÕ«@‰Ì€(C#”ÔN÷ endstream endobj 66 0 obj 47 endobj 44 0 obj << /Length 45 0 R /Type /XObject /Subtype /Image /Width 6 /Height 6 /ColorSpace 7 0 R /SMask 119 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x›3fÏž '‘@öŽ;à²;wî¼@qûêÕ«@‰Ì€(C#”ÔN÷ endstream endobj 45 0 obj 47 endobj 14 0 obj << /Length 15 0 R /Type /XObject /Subtype /Image /Width 9 /Height 9 /ColorSpace 7 0 R /SMask 121 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x]Ž!! ÿÿp(p8p8P Ž÷0´—ærM3Ûݬ÷wœs¶øRÊðÃäœ×Zª »7¼÷¾÷V»í”Ò®’ýÇ[kÀGÆCÊÅñºHƒ×ZçœjQUÓ¨J%bÌÂd•¾?vQ«. endstream endobj 15 0 obj 110 endobj 68 0 obj << /Length 69 0 R /Type /XObject /Subtype /Image /Width 6 /Height 6 /ColorSpace 7 0 R /SMask 123 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x›3fÏž '‘@öŽ;à²;wî¼@qûêÕ«@‰Ì€(C#”ÔN÷ endstream endobj 69 0 obj 47 endobj 47 0 obj << /Length 48 0 R /Type /XObject /Subtype /Image /Width 6 /Height 6 /ColorSpace 7 0 R /SMask 125 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x›3fÏž '‘@öŽ;à²;wî¼@qûêÕ«@‰Ì€(C#”ÔN÷ endstream endobj 48 0 obj 47 endobj 8 0 obj << /Length 9 0 R /Type /XObject /Subtype /Image /Width 6 /Height 6 /ColorSpace 7 0 R /SMask 127 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x=‹!À@ÿÿN!qH‡£ïé¶7CD&KÂ9ŸDäzD,Ü}f¶5³ç»›PU«êp¾2s‘ði L` endstream endobj 9 0 obj 68 endobj 20 0 obj << /Length 21 0 R /Type /XObject /Subtype /Image /Width 11 /Height 11 /ColorSpace 7 0 R /SMask 129 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x]1E E÷¿¯¢ÓQÑ騨XÏ?Ï}cÌO‘‰Üs%yž7Œ1'ïÆ›œs9ç¿>¤`kmJ©Öªçn’:!„ÖÚZë|¨B$j)uΩr){ïQ‘ˆ[–:Æ@sF@²k÷Þ·õKô 0­-ï±SHådã¨Û«bŒ:êT ž£ä:™âÙ0 endstream endobj 21 0 obj 142 endobj 56 0 obj << /Length 57 0 R /Type /XObject /Subtype /Image /Width 6 /Height 6 /ColorSpace 7 0 R /SMask 131 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x›3fÏž '‘@öŽ;à²;wî¼@qûêÕ«@‰Ì€(C#”ÔN÷ endstream endobj 57 0 obj 47 endobj 23 0 obj << /Length 24 0 R /Type /XObject /Subtype /Image /Width 5 /Height 5 /ColorSpace 7 0 R /SMask 133 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x›3fÏž $ׯ_gïܹóÚµk@q à™3g€l 8tè„qõêUHÂÙ´w7™ endstream endobj 24 0 obj 52 endobj 73 0 obj << /Length 74 0 R /Type /XObject /Subtype /Image /Width 39 /Height 17 /ColorSpace 7 0 R /SMask 135 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x½“½OAÅÿâ˜ð@°lä|`d™Ãè°œ#àœ‰8 Æ4PQ9ݘ&TvchBÞÌìÎíS¤Š´ZÍíÍÝüöÍ›|6Z\—Þ†ØçgƒùÙC¬™©ƒéIëufwâ–7¡bœ˜G~% ´ïþcþÚêåÚêö|6ÂÊ-G€Ý23S€ÅöÏTwb*›À1‰“_zw[ÚºÝ,´7 ×XÌ bÈeϰCÅ…¯Ì E0Í IÞ׋¯IR>¤˜«Oe§³ýánûãvT/mÝ£¸A Å a À2„K¶soŒÄ Wã?'èœ8¯öª]¯Úóª]T¯”|b†÷„†ë"KatX¹BXŠØsÖÔ¶„Þ+d¼FýásýÁ¯Ýûµ¾¿Á`Â@uˆ ,1…öºõCŽýg?ŒyÒ‡-­Òïèpp x6ê¿ T èîU{•rG¤ ^p;Ø 7¤C¡-®)€ç‚ü5ÄÑ·çÓ“§°9j?b—ê„ ÀÕ!Ù Â@/D 2z?OB2Fƒz± [r/x<œ¿|?3 Õ…¡Õ|tXŠ` €¤/8AÚ!"$˜ ØÒz’ ÀåÅKj¥€ÑRXÖaØ8 3öûh‡Õ¡3°h.À ÒÜT‹jìÂpý>=y¶:Œ¨è…0°+ Ö¡Ö‡â¹Àhìt¤`ЊhEsâPá$ÖÍŒðØ0|‰upü žtç¢ÜÁÒUÆO%¸Ê€ê¬õ¬ÃÐŒûÁÎ& ¦^P÷Ÿz(Á__¹‡è‚`œ C’%’s¡¿u¿uKŒŸ»oõs’éæ»:ÀÌfs¤Éú¹û•ºi©„Ô£~¢çÔМÿü#qE~ endstream endobj 74 0 obj 702 endobj 79 0 obj << /Length 80 0 R /Type /XObject /Subtype /Image /Width 115 /Height 16 /ColorSpace 7 0 R /SMask 137 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream xíUÑnƒ0 üÿ_­ª*´ú²³Ï>Ø&àiÒ¨Òèb_Œï’Òax÷`óüx̘ 3 ,»çØc4ñ’àÛåiþ8.ãøŽy˜,£Ùgd}X4®ðŸÏe?PÜ‚œIpñÝÄ!¿¸axè‰ ¡9ŒDç¡Ù^u…"ô@QV$7â£ÿÚ-÷†ÒTâeþËÝx½ Á’àùl ‚Ñó­s]t>¾u.«À<©UfŠ2É%kË>²1¡f³ïv#Óû§v(eÙ üÉê˜Q>ö`™&¥,{?M u¼ŠVÛìB8ëd©î,¿vëm[å¡”K‰êÁ!>uùÜ&—–Siê-L³Â<9Áo viP€Nú¬#ã!J>–á@!G0-òýÔúÎãøL±©è> stream x›3fÏž '‘@öŽ;à²;wî¼@qûêÕ«@‰Ì€(C#”ÔN÷ endstream endobj 33 0 obj 47 endobj 53 0 obj << /Length 54 0 R /Type /XObject /Subtype /Image /Width 6 /Height 6 /ColorSpace 7 0 R /SMask 141 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x›3fÏž '‘@öŽ;à²;wî¼@qûêÕ«@‰Ì€(C#”ÔN÷ endstream endobj 54 0 obj 47 endobj 26 0 obj << /Length 27 0 R /Type /XObject /Subtype /Image /Width 7 /Height 7 /ColorSpace 7 0 R /SMask 143 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream xmŠ!Aÿÿ°h,h,HxÏuC‚ºŠfÒó ]«êñû˜Í,3Ï3ÓÝxEÄÝ!ì‚^/øRUÇ¿°>ú‚> stream x›3fÏž '‘«V­Ú¿?DÈ>pàÀ50€³¯^½ €È ˆ24Ä×O· endstream endobj 39 0 obj 49 endobj 50 0 obj << /Length 51 0 R /Type /XObject /Subtype /Image /Width 6 /Height 6 /ColorSpace 7 0 R /SMask 147 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x›3fÏž '‘@öŽ;à²;wî¼@qûêÕ«@‰Ì€(C#”ÔN÷ endstream endobj 51 0 obj 47 endobj 71 0 obj << /Length 72 0 R /Type /XObject /Subtype /Image /Width 39 /Height 17 /ColorSpace 7 0 R /SMask 149 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x¥•ÁkQÆÿî¶6¶1ÙtSEQbk³ÁbP4hmõà!B=DH =¤)4ÐЃ…ì73ïÍÚæRx,oº?¾ù¾™7ø°üßúØ]ö{Ënûw»¹hžÌÇ?±ŽªwÕÃï•÷7åƒ)Ö~ék©øe¯pQÈçsç+Dü]Oì^×O@ìu€k·ÍÆŒpµ»jå¸Jù¦]G¥«·Œ+.AÌf>¥ÃÑ¿¾¦hlÖY8ÁÎ l@¨±vxK¸ƒ)p"pP—M±Ò»ga0´_ÿþ:N~s›II]=Ë"ÐÕ8””ˆÆí AÜN ô#ÓõgROG¬“Àã ¬VœƒûØA˜¿G$p‡p›Énòùé ˾®ÈÄ«:h£õ„ƒ¾žùì„ÃAÁ[ýÔK">{Òx„¢ê°ê:­EÔ;uQvPò©¥Àìž Ñâ@èŠ"Ëœu°~t_׈zGô3fû(0!Õ3Hõ7_ôPÒÄiâ鉱ù+Q¸xÜÜöqRr=¡Žãû¤¤¨çF¢Å¬˜(Ja7‚£¤œC Ò‚ÌH–#Êgôîªô-ï; G¯‚a°5€@¨SPç•ÒÆ*Õ½8Èöͼƒ?\`¢kéA±íàZÞå³bŠê "í²êl=‰È!Æ&šBú=î¶O;BpQ¥ˆFûžPgäÀÜ£ž¦#@t#4Ÿ›@cη¼Ô%M&ÐÖ>»ÅŠRß¿d„Šƒ‚ãOì½|؇µÍµöA£w Ǖÿ’ºÎƒ m±ê(0¾Ñ"°( #”ƒF“]my­§Ýت깡¾#p%a Ñýf®¤KÚd_0ÔŽûðeûq•©‘©O™0ROwGð%(#”ïºå‚À˜ŽŒÍRŠnDÝÊëqjeK endstream endobj 72 0 obj 718 endobj 62 0 obj << /Length 63 0 R /Type /XObject /Subtype /Image /Width 6 /Height 6 /ColorSpace 7 0 R /SMask 151 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x›3fÏž '‘@öŽ;à²;wî¼@qûêÕ«@‰Ì€(C#”ÔN÷ endstream endobj 63 0 obj 47 endobj 35 0 obj << /Length 36 0 R /Type /XObject /Subtype /Image /Width 13 /Height 12 /ColorSpace 7 0 R /SMask 153 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream xuÑÀ C÷ŸA¿t]@'Ð/;OSÓËqÔòÁxAŒñ‰‚òn¼‰}NËB‘s®µÚ¦4í)¥RJï}ŒaŸ€‰à×(¾ÀZ ¼˜srmÃÝ€¦ªÄ/Zk8RÚLà8"éx’ÙZ åÑ+Ø^r.¸\¾ endstream endobj 36 0 obj 126 endobj 17 0 obj << /Length 18 0 R /Type /XObject /Subtype /Image /Width 14 /Height 14 /ColorSpace 7 0 R /SMask 155 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream xm±ÅEÿÿ¤J*:ª¨è¨¨øžw_næŽ1Qì¬Ý㰎㿌1ŠOá ¬;çbŒ€»J®ë !”RÖºr±æ½O)õÞ×»èO,çÜZ›sn]›°1† d´Å÷}×ZaãZ%+†a1ØÑÀS´{uOLWŸç‰çm6ò"á×i WNý ¾Noc j­µ°@†N’ŸS á†} Áÿ]ž% endstream endobj 18 0 obj 179 endobj 41 0 obj << /Length 42 0 R /Type /XObject /Subtype /Image /Width 6 /Height 6 /ColorSpace 7 0 R /SMask 157 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x›3fÏž '‘@öŽ;à²;wî¼@qûêÕ«@‰Ì€(C#”ÔN÷ endstream endobj 42 0 obj 47 endobj 153 0 obj << /Length 154 0 R /Type /XObject /Subtype /Image /Width 13 /Height 12 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xUL‡ 0úÿhHe˜¶&Š2$Á”Ð; ˜]]Ò+â²ÜïÞ\ùxss[ úõY•–~m>šŸ endstream endobj 154 0 obj 57 endobj 145 0 obj << /Length 146 0 R /Type /XObject /Subtype /Image /Width 6 /Height 6 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xû÷ïï? €Á ¨È_ 0ÿ”p#¯ endstream endobj 146 0 obj 26 endobj 147 0 obj << /Length 148 0 R /Type /XObject /Subtype /Image /Width 6 /Height 6 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xû÷ïï? €Á ¨È_ 0ÿ”p#¯ endstream endobj 148 0 obj 26 endobj 139 0 obj << /Length 140 0 R /Type /XObject /Subtype /Image /Width 6 /Height 6 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xû÷ïï? €Á ¨È_ 0ÿ”p#¯ endstream endobj 140 0 obj 26 endobj 141 0 obj << /Length 142 0 R /Type /XObject /Subtype /Image /Width 6 /Height 6 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xû÷ïï? €Á ¨È_ 0ÿ”p#¯ endstream endobj 142 0 obj 26 endobj 143 0 obj << /Length 144 0 R /Type /XObject /Subtype /Image /Width 7 /Height 7 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xû÷ïï?“$CÀ_ Ahˆ"¾›0’ endstream endobj 144 0 obj 29 endobj 155 0 obj << /Length 156 0 R /Type /XObject /Subtype /Image /Width 14 /Height 14 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xEŽÉ0û/Z'À†Ä‡Œêî,% }¢Ö"#láF;zEÃñZÏ^w\Ÿ‚‰¬9«-3Ä RþCïÒÃØÂB endstream endobj 156 0 obj 66 endobj 157 0 obj << /Length 158 0 R /Type /XObject /Subtype /Image /Width 6 /Height 6 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xû÷ïï? €Á ¨È_ 0ÿ”p#¯ endstream endobj 158 0 obj 26 endobj 149 0 obj << /Length 150 0 R /Type /XObject /Subtype /Image /Width 39 /Height 17 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream x}[À ïh’ ¢RýÂc¡sL¿ð„½Î’ÜîćŽplIÜk­dÚ.øÑÔh×6èÙžzÏÅ.Zʜڈ" ã8sáÝ5]jIP§ãhxG­†RÆÐ’¾SRߣ"Œ»VNö5…ÅK¢ÿ ·T]Á~žè4×a¸ À_·3œIrJ¼ôk…‘> endstream endobj 150 0 obj 143 endobj 125 0 obj << /Length 126 0 R /Type /XObject /Subtype /Image /Width 6 /Height 6 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xû÷ïï? €Á ¨È_ 0ÿ”p#¯ endstream endobj 126 0 obj 26 endobj 111 0 obj << /Length 112 0 R /Type /XObject /Subtype /Image /Width 6 /Height 6 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xû÷ïï? €Á ¨È_ 0ÿ”p#¯ endstream endobj 112 0 obj 26 endobj 129 0 obj << /Length 130 0 R /Type /XObject /Subtype /Image /Width 11 /Height 11 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xû÷ïï?ø a) Ø_°8ª$HI1L)L#ˆ†*(ƒñAfCD!&•Ñwï endstream endobj 130 0 obj 49 endobj 113 0 obj << /Length 114 0 R /Type /XObject /Subtype /Image /Width 10 /Height 10 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xû÷ïï?(3þù@Æ_(, "ó` ª> stream x5ŠÿÿhÂj”#ÁW„Ü;écd­S³ˆÀ-}jܳPI endstream endobj 122 0 obj 40 endobj 119 0 obj << /Length 120 0 R /Type /XObject /Subtype /Image /Width 6 /Height 6 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xû÷ïï? €Á ¨È_ 0ÿ”p#¯ endstream endobj 120 0 obj 26 endobj 131 0 obj << /Length 132 0 R /Type /XObject /Subtype /Image /Width 6 /Height 6 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xû÷ïï? €Á ¨È_ 0ÿ”p#¯ endstream endobj 132 0 obj 26 endobj 137 0 obj << /Length 138 0 R /Type /XObject /Subtype /Image /Width 115 /Height 16 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xÝP[à »úx|¶óQÔŸŠUZZ;qâÒÞ[Ï Žó†7DÇ ó…·ÊêƵÖÕ6H+†e‚…«»ß¦Vkµò¥#j ÏÍ.§b@!qÍÛðžk»–Wùm8êуm%3›8¡ #¯ÜÚ·¹”ЇÉCfîÂ’sBhR¶å¹Éd\k›5Y*¹+ \„ˆÀÄ(MPÅà<ñhš¢ Gç£öH3§ýl0r,šù˜Žò œæñÅéã…Ó<|ÿù´ˆì?ó4á_êJ~=Úÿ„¿pϰœ®ªÒ1þ]¢ò endstream endobj 138 0 obj 219 endobj 115 0 obj << /Length 116 0 R /Type /XObject /Subtype /Image /Width 115 /Height 51 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xµ•rà Cÿÿ£Û[…x‘ÉÒm w‹’l{>ŸÇsž§šÌËvñ"(*艩8£N¼ƒ‡×Àh2ÑyFÔšN|!±Rç@[ðà“Xç iÖ>ÁûÓ&Djžj²=|4l)¥Éê,Õd÷ñù|ÎP;Ö¯ÛÚÁ¥5ÆJ«´Ýø¸ÁÈ)ó¯D­Õ|·…7_K½_囸¶ñ#rÓ„ ŒJ ™3##váãÅ®÷S]#WïwŸÇ*WC’ȶâÇ‹eëÅ_­CŒ‹U®/‚x‘tÚX3fÄóJêÄ+|<Ÿÿú/q53¹;}Ó§j¤šÌˆ¿©&»Ä_ PëÇ?é,ïöÚÙ.>œÛÉw·Ô‰8›ÊÙ|†—ce£bÍ™ÕZÍ?ÅixŠ@õÎq>™H_ÿÕ9¹â~¸¼JDýÓ¸‰Ó1Û™UooÁCÏ¡Ur‹âÕ‡º‡Ï£«÷g‘ëÄç“ÁÅ9êê)´áÇ‹eëÅ_mCŒƒU®/‚x‘tÚX3fÄóJêÄ+|<Ÿ«whaoý/|8C¢vW¼ ÔÄŠ8q¼‹¿"€¤æ©&ÛÃGÖRš¬ÎRMvŸÏçLµcýº­\Zc¬´*AÛŒœ²ü ÂQ/n o¾«Ïï‹nâö•cŒ£(kTiÁM‚@fdD fFFü+>^ìzÜ )j++:O%µßö›M}þV¢3¦ùmœy«ªà$Ä=x!–ˆÆ*ÇÜX> ²\•¡¯¬uŸãó×&“ˆëÄUì.þßX¶: endstream endobj 116 0 obj 586 endobj 123 0 obj << /Length 124 0 R /Type /XObject /Subtype /Image /Width 6 /Height 6 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xû÷ïï? €Á ¨È_ 0ÿ”p#¯ endstream endobj 124 0 obj 26 endobj 117 0 obj << /Length 118 0 R /Type /XObject /Subtype /Image /Width 6 /Height 6 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xû÷ïï? €Á ¨È_ 0ÿ”p#¯ endstream endobj 118 0 obj 26 endobj 109 0 obj << /Length 110 0 R /Type /XObject /Subtype /Image /Width 9 /Height 9 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream x5ŠÿÿhÂj”#ÁW„Ü;écd­S³ˆÀ-}jܳPI endstream endobj 110 0 obj 40 endobj 133 0 obj << /Length 134 0 R /Type /XObject /Subtype /Image /Width 5 /Height 5 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xû÷ïï¿0üĆpÿBIÈ endstream endobj 134 0 obj 21 endobj 127 0 obj << /Length 128 0 R /Type /XObject /Subtype /Image /Width 6 /Height 6 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xû÷ïï? €Á ¨È_ 0ÿ”p#¯ endstream endobj 128 0 obj 26 endobj 135 0 obj << /Length 136 0 R /Type /XObject /Subtype /Image /Width 39 /Height 17 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream x}[À ïh’ ¢RýÂc¡sL¿ð„½Î’ÜîćŽplIÜk­dÚ.øÑÔh×6èÙžzÏÅ.Zʜڈ" ã8sáÝ5]jIP§ãhxG­†RÆÐ’¾SRߣ"Œ»VNö5…ÅK¢ÿ ·T]Á~žè4×a¸ À_·3œIrJ¼ôk…‘> endstream endobj 136 0 obj 143 endobj 151 0 obj << /Length 152 0 R /Type /XObject /Subtype /Image /Width 6 /Height 6 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xû÷ïï? €Á ¨È_ 0ÿ”p#¯ endstream endobj 152 0 obj 26 endobj 84 0 obj << /Type /ExtGState /ca 0.4000000 >> endobj 85 0 obj << /Type /ExtGState /ca 0 >> endobj 159 0 obj << /Length 160 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >> stream x…”MHaÇÿ³±Ñ—ÅÐÁ$T& RÓõ+S¶eÕL b}wg§™Ý-E"„è˜uŒ.VD‡ˆNá¡C§:D™u‰ £E^"¶ÿ;“»cT¾03¿yžÿû|½ÃURŽcE4`ÊλÉÞ˜vztLÛüU¨F\)Ãs:‰Ÿ©•Ïõkõ-iYj”±Öû6|«v™P4*wd>,y<àã’/ä<5g$©4Ù!7¸CÉNò-òÖlˆÇCœžTµS“3—q";È-E#+c> ëvÚ´Éï¥=íSÔ°ßÈ79 Ú¸òý@Û`Ó‹ŠmÌÜv×Ulõ5ÀÎ`ñPÅö=éÏGÙõÊËjöÃ)ÑkúP*}¯6ß~^/•~Ü.•~ÞaÖñÔ2 nÑײ0å%Ôìfüäý‹ƒž|U °À9Žlú¯7?ûÛ‰j`¨‘Ël7¸òâ"çtæœi×ÌNäµf]?¢uðh…ÖgM Zʲ4ßåi®ð„[é&LYÎÙ_Ûx {xOö¹$¼î̥߬S]œ%šØÖ§´èê&7ïgÌž>r=¯÷·g8`候ï 8rʶâ<©‰ÔØãñ“dÆWT'“ó<çeLß~.u"A®¥=9™ë—š]ÜÛ>31Ä3’¬X3ñßüÆ-$eÞ}ÔÜu,ÿ›gm‘g…6ï64$Ñ‹áÀEzL*LZ¥_ÐjÂÃä_•å]½XážÏy¸[Æ?…Xs åšþNÿ¢/ë ú]ýó|m¡¾â™sϚƫk_Wf–ÕȸA2¾¬)ˆo°Úz-diâôä•õáê2ö|mÙ£Éâj|5Ô¥ejÄ8ãÉ®e÷E²Å7áç[Ëö¯éQû|öIM%ײºxf)ú|6\ kÿ³«`Ò²«ðä.> endobj 161 0 obj << /Type /Catalog /Pages 3 0 R /Version /1.4 >> endobj 108 0 obj << /Length 162 0 R /FunctionType 0 /Size [ 1365 ] /BitsPerSample 8 /Order 1 /Domain [ 0 1 ] /Range [ 0 1 0 1 0 1 ] /Encode [ 0 1364 ] /Decode [ 0 1 0 1 0 1 ] /Filter /FlateDecode >> stream xÍÁµ€0°ÿÏ,îî0pF“„_âI=™''žÒSyjOCj=§÷ ž‘4yfÏâYI›g÷žÓs‘nÏãy=_T?Åàç• endstream endobj 162 0 obj 72 endobj 107 0 obj << /Length 163 0 R /FunctionType 0 /Size [ 1365 ] /BitsPerSample 8 /Order 1 /Domain [ 0 1 ] /Range [ 0 1 0 1 0 1 ] /Encode [ 0 1364 ] /Decode [ 0 1 0 1 0 1 ] /Filter /FlateDecode >> stream xÍÁµ€0°ÿÏ,îî0pF“„_âI=™''žÒSyjOCj=§÷ ž‘4yfÏâYI›g÷žÓs‘nÏãy=_T?Åàç• endstream endobj 163 0 obj 72 endobj 106 0 obj << /Length 164 0 R /FunctionType 0 /Size [ 1365 ] /BitsPerSample 8 /Order 1 /Domain [ 0 1 ] /Range [ 0 1 0 1 0 1 ] /Encode [ 0 1364 ] /Decode [ 0 1 0 1 0 1 ] /Filter /FlateDecode >> stream xÍÁµ€0°ÿÏ,îî0pF“„_âI=™''žÒSyjOCj=§÷ ž‘4yfÏâYI›g÷žÓs‘nÏãy=_T?Åàç• endstream endobj 164 0 obj 72 endobj 105 0 obj << /Length 165 0 R /FunctionType 0 /Size [ 1365 ] /BitsPerSample 8 /Order 1 /Domain [ 0 1 ] /Range [ 0 1 0 1 0 1 ] /Encode [ 0 1364 ] /Decode [ 0 1 0 1 0 1 ] /Filter /FlateDecode >> stream xÍÁµ€0°ÿÏ,îî0pF“„_âI=™''žÒSyjOCj=§÷ ž‘4yfÏâYI›g÷žÓs‘nÏãy=_T?Åàç• endstream endobj 165 0 obj 72 endobj 104 0 obj << /Length 166 0 R /FunctionType 0 /Size [ 1365 ] /BitsPerSample 8 /Order 1 /Domain [ 0 1 ] /Range [ 0 1 0 1 0 1 ] /Encode [ 0 1364 ] /Decode [ 0 1 0 1 0 1 ] /Filter /FlateDecode >> stream x­Âi;bQàŸD’KBI;ZôFÙ†CÈÈ’©l£½ŒÉšAÄÈ–±gþÐ<·/ÝÓs®Î™ë}^}ø¯>gèMzk¢5ÝÊ ¦›(ê‚é|_uApàU‡SxÕ^àý/ZŒÏZ?¤ÆÿLô¡|ÒøzŸ4`µ÷‰ôQíÅéyTC>¨=Ùž¤óÙ÷óæïßïˆ>â]ÃÜ]=Ý©ú¹ÌÙT=EÕlêÝ·ªYðÌ­ §ræV9s?}£Äx­œ†WL_§P^)¦º¯¤r÷é¥ÜÓu)‡LÊ]@™+™¿3)^Èœ¨¥Î‹Üß.¤Äß´ŸK'Ï%tŸI&3gŠu޳|uÒ‰DNñDB¤Í¾Âloa3ê‚foîOÞ¢ç?þ¤æ0 endstream endobj 166 0 obj 617 endobj 103 0 obj << /Length 167 0 R /FunctionType 0 /Size [ 1365 ] /BitsPerSample 8 /Order 1 /Domain [ 0 1 ] /Range [ 0 1 0 1 0 1 ] /Encode [ 0 1364 ] /Decode [ 0 1 0 1 0 1 ] /Filter /FlateDecode >> stream xÍÁµ€0°ÿÏ,îî0pF“„_âI=™''žÒSyjOCj=§÷ ž‘4yfÏâYI›g÷žÓs‘nÏãy=_T?Åàç• endstream endobj 167 0 obj 72 endobj 102 0 obj << /Length 168 0 R /FunctionType 0 /Size [ 1365 ] /BitsPerSample 8 /Order 1 /Domain [ 0 1 ] /Range [ 0 1 0 1 0 1 ] /Encode [ 0 1364 ] /Decode [ 0 1 0 1 0 1 ] /Filter /FlateDecode >> stream xÍÁµ€0°ÿÏ,îî0pF“„_âI=™''žÒSyjOCj=§÷ ž‘4yfÏâYI›g÷žÓs‘nÏãy=_T?Åàç• endstream endobj 168 0 obj 72 endobj 101 0 obj << /Length 169 0 R /FunctionType 0 /Size [ 1365 ] /BitsPerSample 8 /Order 1 /Domain [ 0 1 ] /Range [ 0 1 0 1 0 1 ] /Encode [ 0 1364 ] /Decode [ 0 1 0 1 0 1 ] /Filter /FlateDecode >> stream xÍÁµ€0°ÿÏ,îî0pF“„_âI=™''žÒSyjOCj=§÷ ž‘4yfÏâYI›g÷žÓs‘nÏãy=_T?Åàç• endstream endobj 169 0 obj 72 endobj 100 0 obj << /Length 170 0 R /FunctionType 0 /Size [ 1365 ] /BitsPerSample 8 /Order 1 /Domain [ 0 1 ] /Range [ 0 1 0 1 0 1 ] /Encode [ 0 1364 ] /Decode [ 0 1 0 1 0 1 ] /Filter /FlateDecode >> stream x­ÂWRÂ`…Ñ})ŠEQ,(ŠbAQ Š[¥„’’@ØÅ7¾&aÂ?÷Ì¡³†áu:ª: »V¸AWr“®j–nd/‹á-zªÛôû;hîÒWÍÑ7jåˆÝÃ’ÜÇRÍc¥;ȳìÉCª ‡VxÄPò˜¡j‘a䨈áFª§ŒÇghž3V-16j—ˆ½À–¼ÄV-c§ë”Yö GòGµ‚“Э°Â\É[\Õ*n䤊á;&ª÷L§h>2U­15êÕˆ}“|ÆS­ã¥ë×Yö_ò_µŸ0h°Â7ÉwÕ&A䬉áfªŸÌç_h~3Wm17¶ˆý!”ü%Tm¦»h³ì‹Øþ3¬û endstream endobj 170 0 obj 275 endobj 99 0 obj << /Length 171 0 R /FunctionType 0 /Size [ 1365 ] /BitsPerSample 8 /Order 1 /Domain [ 0 1 ] /Range [ 0 1 0 1 0 1 ] /Encode [ 0 1364 ] /Decode [ 0 1 0 1 0 1 ] /Filter /FlateDecode >> stream xÍÁµ€0°ÿÏ,îî0pF“„_âI=™''žÒSyjOCj=§÷ ž‘4yfÏâYI›g÷žÓs‘nÏãy=_T?Åàç• endstream endobj 171 0 obj 72 endobj 98 0 obj << /Length 172 0 R /FunctionType 0 /Size [ 1365 ] /BitsPerSample 8 /Order 1 /Domain [ 0 1 ] /Range [ 0 1 0 1 0 1 ] /Encode [ 0 1364 ] /Decode [ 0 1 0 1 0 1 ] /Filter /FlateDecode >> stream xÍÁµ€0°ÿÏ,îî0pF“„_âI=™''žÒSyjOCj=§÷ ž‘4yfÏâYI›g÷žÓs‘nÏãy=_T?Åàç• endstream endobj 172 0 obj 72 endobj 97 0 obj << /Length 173 0 R /FunctionType 0 /Size [ 1365 ] /BitsPerSample 8 /Order 1 /Domain [ 0 1 ] /Range [ 0 1 0 1 0 1 ] /Encode [ 0 1364 ] /Decode [ 0 1 0 1 0 1 ] /Filter /FlateDecode >> stream xÍÁµ€0°ÿÏ,îî0pF“„_âI=™''žÒSyjOCj=§÷ ž‘4yfÏâYI›g÷žÓs‘nÏãy=_T?Åàç• endstream endobj 173 0 obj 72 endobj 96 0 obj << /Length 174 0 R /FunctionType 0 /Size [ 1365 ] /BitsPerSample 8 /Order 1 /Domain [ 0 1 ] /Range [ 0 1 0 1 0 1 ] /Encode [ 0 1364 ] /Decode [ 0 1 0 1 0 1 ] /Filter /FlateDecode >> stream xÍÁµ€0°ÿÏ,îî0pF“„_âI=™''žÒSyjOCj=§÷ ž‘4yfÏâYI›g÷žÓs‘nÏãy=_T?Åàç• endstream endobj 174 0 obj 72 endobj 95 0 obj << /Length 175 0 R /FunctionType 0 /Size [ 1365 ] /BitsPerSample 8 /Order 1 /Domain [ 0 1 ] /Range [ 0 1 0 1 0 1 ] /Encode [ 0 1364 ] /Decode [ 0 1 0 1 0 1 ] /Filter /FlateDecode >> stream xÍÁµ€0°ÿÏ,îî0pF“„_âI=™''žÒSyjOCj=§÷ ž‘4yfÏâYI›g÷žÓs‘nÏãy=_T?Åàç• endstream endobj 175 0 obj 72 endobj 94 0 obj << /Length 176 0 R /FunctionType 0 /Size [ 1365 ] /BitsPerSample 8 /Order 1 /Domain [ 0 1 ] /Range [ 0 1 0 1 0 1 ] /Encode [ 0 1364 ] /Decode [ 0 1 0 1 0 1 ] /Filter /FlateDecode >> stream xÍÁµ€0°ÿÏ,îî0pF“„_âI=™''žÒSyjOCj=§÷ ž‘4yfÏâYI›g÷žÓs‘nÏãy=_T?Åàç• endstream endobj 176 0 obj 72 endobj 93 0 obj << /Length 177 0 R /FunctionType 0 /Size [ 1365 ] /BitsPerSample 8 /Order 1 /Domain [ 0 1 ] /Range [ 0 1 0 1 0 1 ] /Encode [ 0 1364 ] /Decode [ 0 1 0 1 0 1 ] /Filter /FlateDecode >> stream xÍÁµ€0°ÿÏ,îî0pF“„_âI=™''žÒSyjOCj=§÷ ž‘4yfÏâYI›g÷žÓs‘nÏãy=_T?Åàç• endstream endobj 177 0 obj 72 endobj 92 0 obj << /Length 178 0 R /FunctionType 0 /Size [ 1365 ] /BitsPerSample 8 /Order 1 /Domain [ 0 1 ] /Range [ 0 1 0 1 0 1 ] /Encode [ 0 1364 ] /Decode [ 0 1 0 1 0 1 ] /Filter /FlateDecode >> stream xÍÁµ€0°ÿÏ,îî0pF“„_âI=™''žÒSyjOCj=§÷ ž‘4yfÏâYI›g÷žÓs‘nÏãy=_T?Åàç• endstream endobj 178 0 obj 72 endobj 91 0 obj << /Length 179 0 R /FunctionType 0 /Size [ 1365 ] /BitsPerSample 8 /Order 1 /Domain [ 0 1 ] /Range [ 0 1 0 1 0 1 ] /Encode [ 0 1364 ] /Decode [ 0 1 0 1 0 1 ] /Filter /FlateDecode >> stream xÍÁµ€0°ÿÏ,îî0pF“„_âI=™''žÒSyjOCj=§÷ ž‘4yfÏâYI›g÷žÓs‘nÏãy=_T?Åàç• endstream endobj 179 0 obj 72 endobj 90 0 obj << /Length 180 0 R /FunctionType 0 /Size [ 1365 ] /BitsPerSample 8 /Order 1 /Domain [ 0 1 ] /Range [ 0 1 0 1 0 1 ] /Encode [ 0 1364 ] /Decode [ 0 1 0 1 0 1 ] /Filter /FlateDecode >> stream xÍÁµ€0°ÿÏ,îî0pF“„_âI=™''žÒSyjOCj=§÷ ž‘4yfÏâYI›g÷žÓs‘nÏãy=_T?Åàç• endstream endobj 180 0 obj 72 endobj 89 0 obj << /Length 181 0 R /FunctionType 0 /Size [ 1365 ] /BitsPerSample 8 /Order 1 /Domain [ 0 1 ] /Range [ 0 1 0 1 0 1 ] /Encode [ 0 1364 ] /Decode [ 0 1 0 1 0 1 ] /Filter /FlateDecode >> stream xÍÁµ€0°ÿÏ,îî0pF“„_âI=™''žÒSyjOCj=§÷ ž‘4yfÏâYI›g÷žÓs‘nÏãy=_T?Åàç• endstream endobj 181 0 obj 72 endobj 88 0 obj << /Length 182 0 R /FunctionType 0 /Size [ 1365 ] /BitsPerSample 8 /Order 1 /Domain [ 0 1 ] /Range [ 0 1 0 1 0 1 ] /Encode [ 0 1364 ] /Decode [ 0 1 0 1 0 1 ] /Filter /FlateDecode >> stream xÍÁµ€0°ÿÏ,îî0pF“„_âI=™''žÒSyjOCj=§÷ ž‘4yfÏâYI›g÷žÓs‘nÏãy=_T?Åàç• endstream endobj 182 0 obj 72 endobj 87 0 obj << /Length 183 0 R /FunctionType 0 /Size [ 1365 ] /BitsPerSample 8 /Order 1 /Domain [ 0 1 ] /Range [ 0 1 0 1 0 1 ] /Encode [ 0 1364 ] /Decode [ 0 1 0 1 0 1 ] /Filter /FlateDecode >> stream xÍÁµ€0°ÿÏ,îî0pF“„_âI=™''žÒSyjOCj=§÷ ž‘4yfÏâYI›g÷žÓs‘nÏãy=_T?Åàç• endstream endobj 183 0 obj 72 endobj 86 0 obj << /Length 184 0 R /FunctionType 0 /Size [ 1365 ] /BitsPerSample 8 /Order 1 /Domain [ 0 1 ] /Range [ 0 1 0 1 0 1 ] /Encode [ 0 1364 ] /Decode [ 0 1 0 1 0 1 ] /Filter /FlateDecode >> stream xÍÁµ€0°ÿÏ,îî0pF“„_âI=™''žÒSyjOCj=§÷ ž‘4yfÏâYI›g÷žÓs‘nÏãy=_T?Åàç• endstream endobj 184 0 obj 72 endobj 1 0 obj << /Producer (Mac OS X 10.5.5 Quartz PDFContext) /CreationDate (D:20081212125515Z00'00') /ModDate (D:20081212125515Z00'00') >> endobj xref 0 185 0000000000 65535 f 0000066187 00000 n 0000028262 00000 n 0000058196 00000 n 0000000022 00000 n 0000028241 00000 n 0000028522 00000 n 0000058159 00000 n 0000044366 00000 n 0000044611 00000 n 0000035994 00000 n 0000036846 00000 n 0000037132 00000 n 0000032852 00000 n 0000043567 00000 n 0000043856 00000 n 0000033010 00000 n 0000049921 00000 n 0000050281 00000 n 0000034574 00000 n 0000044629 00000 n 0000044952 00000 n 0000035203 00000 n 0000045217 00000 n 0000045448 00000 n 0000033480 00000 n 0000047669 00000 n 0000047919 00000 n 0000035362 00000 n 0000036310 00000 n 0000036582 00000 n 0000032694 00000 n 0000047179 00000 n 0000047405 00000 n 0000036153 00000 n 0000049594 00000 n 0000049901 00000 n 0000034262 00000 n 0000047938 00000 n 0000048166 00000 n 0000035837 00000 n 0000050301 00000 n 0000050527 00000 n 0000034418 00000 n 0000043322 00000 n 0000043548 00000 n 0000033638 00000 n 0000044121 00000 n 0000044347 00000 n 0000033168 00000 n 0000048185 00000 n 0000048411 00000 n 0000033324 00000 n 0000047424 00000 n 0000047650 00000 n 0000034732 00000 n 0000044972 00000 n 0000045198 00000 n 0000033794 00000 n 0000036601 00000 n 0000036827 00000 n 0000033950 00000 n 0000049349 00000 n 0000049575 00000 n 0000035680 00000 n 0000043077 00000 n 0000043303 00000 n 0000035046 00000 n 0000043876 00000 n 0000044102 00000 n 0000034106 00000 n 0000048430 00000 n 0000049329 00000 n 0000045467 00000 n 0000046350 00000 n 0000037152 00000 n 0000043056 00000 n 0000035521 00000 n 0000034888 00000 n 0000046370 00000 n 0000047159 00000 n 0000029290 00000 n 0000032575 00000 n 0000032596 00000 n 0000057143 00000 n 0000057196 00000 n 0000065879 00000 n 0000065571 00000 n 0000065263 00000 n 0000064955 00000 n 0000064647 00000 n 0000064339 00000 n 0000064031 00000 n 0000063723 00000 n 0000063415 00000 n 0000063107 00000 n 0000062799 00000 n 0000062491 00000 n 0000062183 00000 n 0000061875 00000 n 0000061362 00000 n 0000061053 00000 n 0000060744 00000 n 0000060435 00000 n 0000059580 00000 n 0000059271 00000 n 0000058962 00000 n 0000058653 00000 n 0000058344 00000 n 0000055924 00000 n 0000056136 00000 n 0000052924 00000 n 0000053122 00000 n 0000053385 00000 n 0000053603 00000 n 0000054706 00000 n 0000055467 00000 n 0000055706 00000 n 0000055904 00000 n 0000053855 00000 n 0000054053 00000 n 0000053623 00000 n 0000053835 00000 n 0000055488 00000 n 0000055686 00000 n 0000052706 00000 n 0000052904 00000 n 0000056369 00000 n 0000056567 00000 n 0000053142 00000 n 0000053365 00000 n 0000054073 00000 n 0000054271 00000 n 0000056156 00000 n 0000056349 00000 n 0000056587 00000 n 0000056904 00000 n 0000054291 00000 n 0000054685 00000 n 0000051233 00000 n 0000051431 00000 n 0000051451 00000 n 0000051649 00000 n 0000051669 00000 n 0000051870 00000 n 0000050797 00000 n 0000050995 00000 n 0000051015 00000 n 0000051213 00000 n 0000052368 00000 n 0000052685 00000 n 0000056925 00000 n 0000057123 00000 n 0000050546 00000 n 0000050777 00000 n 0000051890 00000 n 0000052130 00000 n 0000052150 00000 n 0000052348 00000 n 0000057241 00000 n 0000058138 00000 n 0000058279 00000 n 0000058633 00000 n 0000058942 00000 n 0000059251 00000 n 0000059560 00000 n 0000060414 00000 n 0000060724 00000 n 0000061033 00000 n 0000061342 00000 n 0000061854 00000 n 0000062163 00000 n 0000062471 00000 n 0000062779 00000 n 0000063087 00000 n 0000063395 00000 n 0000063703 00000 n 0000064011 00000 n 0000064319 00000 n 0000064627 00000 n 0000064935 00000 n 0000065243 00000 n 0000065551 00000 n 0000065859 00000 n 0000066167 00000 n trailer << /Size 185 /Root 161 0 R /Info 1 0 R /ID [ <5b52a50b3f7c30361349231a4c0db8c8> <5b52a50b3f7c30361349231a4c0db8c8> ] >> startxref 66329 %%EOF pymc-2.2+ds/docs/_images/icon.png000066400000000000000000000353421204033704200167230ustar00rootroot00000000000000‰PNG  IHDR‘]¥ò„ì pHYs  šœ IDATxí}€UÕµö:çöé½0ÃÐEÚ ½£ DA,áùÔ45}OMŒIÔhÈÄòbLyÑø'æ¥ØMPA+"J‘*½Ã0½÷rûÿ}ûÞs¹s§0TAÙpç´}öÙgïוּöÚk­­ùý~9—εÀ‰´€ùDn>÷NËË3;·Kœ×#)Vq§y\¾$¿®Ç{u-Îâó;üºfÓübóù½Ý,𦉸D÷k~·&“[ó‰Ë§ù]~¿æÄõ¿×Ûh¶˜ëÌ^oÇd©Æ{”g™¥vÁ‚ù®ÓñN_µghg%š8ïÝYãѤ€ÑKü’…ÎOÖÄd8|~Ý"šÏ"~͈˜E×M¨¿IMñ›Ð9&ÐUdUÉØúq§ý>]?®z37ö}(ׇœ\ôèš´¢Ü:À®Ï(A¡E&M?ìÒ‡f wÕÌŸ?ŸyÏ¥ZàKѼyyÖBŸôÕÜ® |º~>º¹ú5=m×5Í€ØÐét½TÄ, oAdÂ4‡ûÐq%Ü R`¡ /÷}ÿk^€Ë \¶ .­ØºP‡:<­P4Ï>ñé{­NÙuñkÙ9`Úý´ƒhÎmyQÕeÞQÍ?8@|þôcªj£Å¢gmèD (X~‘ ”Ç*D Ä::@}ü~R#ç€3²´ð„“©ž2ƒ}ÀAŠ„ŸÀ€*) á|xâ=à“(ÍŠè‹Óšqܬëz%HÛ~“®á7éÛmÃdßòùó=á·]öO ˆ(×x·¸rÝ^ýB|ïƒÑÍ LŒÏï‹G§F£Ç­èe°) P|>›ßçµø|^P"°ÈÊ–.¡¢RhG¡bÛì3†6P™Ü xM‡,¥énpL·¦kn‚ÏȈÒ@Á4·O÷á[Ð@­¤ÀªÓÅ´ ¤l½&– «ÍÏGþðJ·å¶§D—Î{<¾ÑÙx1(Í4g:dÝ8|ÛÉhÙ´¤ ?Ê1*,6Ÿ×ãð)à<”y’߇>¤P1†ûȧ¶~pžÀ9£¿°å®«[p-<P“ riºÙ©›tgX¤X~¿Ït™*µ”RfòÉzŸIÿ¬ÁjÚ´í+,´ŸM÷@ª«Y›-&m<:4 }—ˆVNÁ÷kÇ~~Ýçõ:¼W4@áP¬)Øk áó¸ÅëñÀ)Å#·S<ÎVq¹ZÅË}ü|n·xyQÀ…¼ OD~ wuÑLf1›!“›-b2Ûð3á‡}‹M,6‡X¬v1[­ÈgÁÈùLÆ{Yˆ.E©Lz+@Õ‚|­86Ø1ìÂÓ¸¥  ­ÁþfHtËMæ¦Õ«ü¾% gûþIÑ´«òšýÞ99MF&¡q2ðK«²áX}âD€J…sêsW ñy Â`¸ÄÙÒ ®æFimn'~n§Sé´48zÞd±ŠÕ%V{´ÚÚ£â±VçMÁ¹(*" ÔÌ¥ëZ«n²TJˆ‚ (%Õâz³×üA¦]>ÿ*¨N ˆFßöW‹¹¤`¾¸Ùà1é :=Ð`d[VlILN,¨J,( ô98E–DêªBд45HKc­4×W‰³±×9`:ðb¶:Ä_œDÅ&Š-:VL&«¢lPCSÞÁ*ºÙÜŠaéKc,+Þ~q~}÷~fä:nåååéïot]ˆ¡Ì<’–Õ¯D°K~Ýãr&P!R*—Él®7™­ ¸Ÿ-å…"˜ª knò¸}KüfÛ¦õKæ7wXþ—xò˜@4ùÊßÄzõÚ»ýês>¨OëÎdœTR Ìng‹´BH®.:$ Õ¥h’¯3zÚ÷.Ùe§¸¤ ‰INW€2™0Ãc‚ Í9XÀdiP¸_½§Ä@†²@†RÔIW¬® ”©ŽT ´É‚J+ôójlßͶX6Ÿ *‚nhÞ¼WM‡Z¿ø/€g<ÈÊ0¼¾ÇÕ’‚a»¢F^Œ¶šA}*ï‘Æªòs9Ö@ãR~ŠKɔؔV¼Rv‚jù¡sj2[í5Õ!•˜`€ùÕ?†ªàãí;¾L¼[ šxŃßÄÔö•ø†bøËöq;›Ó !Ž!÷v·6ISm¥”ØŽý3ŽekwžÖü“&–‚‚9œ_z® ²R4„ñ¤ŒqÄ%A£N ºI áЬ×*6'þ Ó+úvŸ×ÿ¡)Z>Yµà‘#…„J;õ;GÑĹ¿aùÏÁjêu Q ÈÕÚ=O™”ìÛzŽ}ûë†ïM—?>s»:º`À¤0¿ªMO~¸öq>¢¯|üþNÉH̯×'Ïüåyyù¥7Úä£V<&!Y{ô†º UiË`27@0)»¨FÈJ¾eD­.¯uõé¾Õ´C›š‡Ìà|§¨@Lá%¥<$ ¨¡²DŠ÷žPX³‰Åbý¨ÅŽL6›E]Ÿ6c 때¬9|¸#4ŒTâãäŠÙ—¨[8_ØPU&Û×IáÎuR_QŒ¹Ã}àjmÊÆQBpp“±ËL¯W¿Éìsß8åê¼ó"Ÿy*ÛÌ”G>¨Òï½63Ù ›½9êE²£â¢I¤©&ÀÂø²'’ÆO)kVo첈{î½MÖ¬Ù «>]ße¾3á"'õja솶Æ)N3½ð«òÙgë$''KÞ\úœ455Ëþýù²sÇ^u#^‚©í“˜"ÉÙý%*>#a?eÒXLW‚B™1 ÛÎL·Ï5qîÏWÙ­+–ÿsþ)×è¶ÿLTµ!A_“— Û˜‹0ë*„ !h¡¡BEaEãÆ”E­’NdfwØeñ›ÏÊÿýí·2õBÈìiîÕ—IN¯,¹æ›WÈý÷ß) ñ0?: RGÀ ¯v$uúðƒO1Wˆi—Kž{îeùOÿ= ðû8ŸH0åo[#E»7©yFŸÛiUêáq6£o|  H= ÿž Ü]×RåûæÔk~ž^Æ©Øï”in÷Õ°àI¹Làƒ1‘ÈÉS~NL–Vì!i=¡:¹1k¿zõÙ»wúò" ‹ŽŠ’M›?/Ì;ØÀwÞu“¬[·Yš›[¥©‘z¸33…ƒÈ :á55¦?Œs°MR»%Ååò»'þ­¶š£6.·ÛÂÑÚÿ%‹&eõ•ÄŒ^, â0ЉÆ(®D Öžþá>Ò`˜2áꇖ­^øðÎv¤R¢±—çe ÐHKO>‡àQ“¨ØwƒÕW•aúâ“×ã•ÇýŒ<ò🤨°¤]i/½øº<ýôߤ¸¨X¸aÃΗuëß–›núvyϤmAÔ9;3êl†MSxr»Ôülø©÷9¥Tqh—äo]¥@…¯ ŠÞ ôQnH€{B™ nqÄ+1 çÚW¦Ã’ídÇ”Èì¾Å$³«!<Šdc”}\ B•EŽí)]ä&¯­éxÒ:5-YzôH‘Ý»wCµHUU½ü*ïwQâɽÊ׬,)9˜èN¢€ÜUмn R¢®îéê9CÁ®õÐ1õ´^çÓTTÉ瀑]9X'Èš~1,@'Ì}È1s„ù£“­SjG‰¦MË3ãähÌ-g8PÀœd’/á¬{-È(­ OGš5ë"Y¿~›¼»l¥”•UÊâÅïIF1ÝíÌ“QljGÉšµKå‡?ü~·‹;%‚áZ›²ÌlñMøëË‹äàŸbºé§ž,.gs&¬?Ó 'Á@P¾üÎ;ë=3©<>ÑÇ…ßߎ9ãZ{Cަ0¦”Š¢AH…|â"±®¢­>«Oß9xðð)éØW^yÀ ø.Zôžœ?¨xÝOË~mmH]=çE»—:ѨqýåŽÎVdd¢OÃfòÃŽNl×ërBå²x©dô¢Û£ã“8ªÆ} G,Ýws‘s›–—·ã“E‘Úž:¹@D,fç­üâA…hT­ CÌòv ÅŸþìØ,›äàùðÕ²vͦk…°» ñTMu¬þlCØÕÓ³»aÃV¹ÿ¾ÇåÞ¯»)\˜6ösz§Ëµ×Mí°ˆ“B‰ÂKF¿DÍ0úKï7TÒ³£ 6ô´Ø$Ì•Àžô¶e›Å7_dnë&“@Ûý訟Ÿ;É+ðR £3ÌÈ·Ëî “ÔkúôIrÛ¾%_|qÊmk}(üïÞöÐMa—U §DFU 0Çá[: œŠDg†âÝ”:f9`o-ÙÙõ3M‡›æã¯~Âö §v ¨¬ࣨ†Œv>¼T™¯Ò¼#<ÅC»úÚ«oÉ–-[¤ººÊ2šVŸKá€ÿP Ò°Œ–:QÁÚ(§Ã-èL]éa9¸y…4U—é.gå¤Pˆqû2~îƒ;¼ïN¶agÓ¾—g‡@¤‹ß 僆ö0Öl¨Ã1ÏIÛ·í‘={Êè1¹òû+\mÎ¥¶”(PµÍœk&H]m£|ðÎæÎ²´;ãÍÓ%++Yöí-‘×_ù4tý®Ÿ\)‡UžýÛRV\:ÿßwú'³”Thúº­õV[”;!%V¿í;CÿUÒôé[MÑ ¿ŒG¢Cl·ò&`oA¬LØ* ‹6 ’Zú…ù£ÁÉ@_A“ü~¥õ¢?´¢ãÍГ|VÉ,f8 Or! VˆQ1±JµÐÔX/­­p,héž…Bäè‹M©¥o–¹×L”ò²ÚcÑ­ÿ5 “¸ýäƒw7¶ѽΓø¸(YñѶ6 úÙ/æAô°É¢×VÉ¢W_’Ì~C{¦¦Ø,—Ïìº ƒÓ‡³PÓ<Ö ®ìÛ°9vyu—V‹pSIˆÈèmꆽPG‰z ½§:ÑÐf³ÚÙ$!!IÒÓzHRRŠØápHEdsK£T×TIYy±4CoB 7™SÕìv‡Ì¾ü?dÜØ‹$-9SÜðƒku6H~Á!L’î—»·Èý»¥ ¦¿l—£¥®(Q%ô^)ÉÊ«Kuô ƒ=FÖ8¶ÚÚÒļހ‰\gc$ÅM!€TúÑ·^óûßMùÚ‰:FÞÈm›'5¶jV œ@DdÅÐ^ÝôF¼ùTó¥£`å—•ÝKr‡Ž‘~}Bæê/Y=zãKKd%áïE”:N“rÒ¥Ú/U–âÒ|(&È®=[åÀÁÝÒ¥¡º.æé(ÅÅ'ÈÍß½G¦O…Ѩ_ȧI«Í*ûÅHŸ^eÒøéRË…½ûvÊ[ÖÉ¡ü}í(T›i ŠÂ'eg®8n`1Àd”i ê l 2ò÷¹Zš¤hïÌT7ºfmÚRU0:7]å¬2¶m"8{z¼N8ÿ࣋‘Ð=ÇüE÷Ë–Ô&&6VF /£FN’¹ã¤gÏ~ \Ÿñk‚š¿¸©NCÕÐŒ}/¨Œ‚k4\rrb“$9Šª-¿d˜«Gf/€…ޏ°+5iuÚ»‡ìÞ³£Èµ²}æàšš@Åz¨ŒÌ,ùÑ˘‘ ãu³à‹â¼–ÛŸ};ܪA}˜yÏHë%Ép 3j²—–í;6ɺ«A‘+uêŠú„·‡Û}„Jv2#ï´Ã%.Nù?`†¿U¢£íŸ¨Æ>í(˜’I “üƒå²gg@¯gÔÉËöcNÒH-õÕ}>_S>Î¥ˆ¼8Ò1:‹"CFñüÖ‰¨0T¹tRö¢`´>xÐp™:å2~ÌE _˜ àv; þ×– à›s”ÓȪ<ØbGuÞ„¬~2ÔÊh(ck…}" Ǿ ™*×]{«ÔÔUÊ[?— 0ƒŽØ ³g~W† ‰·Ô85€Åí5Ô¬â‚e!ýÿ©syZ”·«ËeR,¾'&@{dæÈ䉗(V÷Æ›/C[ƨƒÁNÂÌí>Ò‰F¾ðëÆþú¾ q)?¿\zõâÔX  1Ž Åå~r•´p¿Î[ .…ÊëF#/3TÊÝ·/¡âQ°¨à°2xÔÕ¦ %JÎÎl¬Ê/uㆽ'MâÊc§žÌÄHIÍéÎ’ 'Ï’óæâ˧ Mà- –CsSe±\€¹¡óÒdÁîÒJAyLqJQYÉÈóR2$®ÍøŒûFdù”«ÒPÖŒéWuÍV,ÎånQre,3<*ZðÎ %¢¦‰SÇ>(S‹·EJA ‹‹ ƒIEEX\©4B·ÃÍÚøêÙ^Æs#Û®µÕ)[7’ “#ì6,0"³FlF²DL‘DÞg´ŸÊÆ‘Œz ž’QT›z6U—hcG‰\¼þ¡[:Üiƒ :ÈMœó`#‰@,x0CÑÙøÑ‹ód$v`¿~åÒ‹çÊ”‰3$™N}8¿tÀ®€ð>-`;nº`ƒú¸I”P‹ EˆÆf±”èjiò6Kº9@꽤P0geòŒ}nM …iˆ9á¡[Z[v'q±ñÁk1‚I , îï´P>]õ¾”——|ˆLÛªðÄgy>ü¸°°JþðøBá(‹©«.£%¤‘"Ay_8Å ”Q'cËòÂóúÜ`Õ˜o3žÓÒì²a×­ÔD¼íZzL •¡è-ë˜íÝ,±“Ç:0dž;F.™6[FŽ˜"datewÀA¥­¡˜ÃžjT¬b,V Ð>š‡m³H¾L’Ð:Ñ)f©Žî“n•¤(ˆ…h]²=R"ü#Ün<ý <À¥[½'îGGÈ”­ ÖP(6&‚rƒì.Ë—¾½1#n‹Âs5ùhÅRyþå§¥´¤y`ïèU=r¥_ÿLÅz{@§žÜN@x€‰qÎ eá# €Ø*´ºfŽ˜ñ‰±¹7„ƒ¤£ýXÈVÆsRÓ•©˜*wÀÀlILaH>[S6ú±ßöÂúgž9RÉPíÚî´2÷{زl~ú; Ê)·áë<žÄ¯|äˆñ2ã’«dèàQbµØK H9¥`2ƒJøR(‚ T qÆÐfð­R#8Hk¦öÉbxè¯ùålšœ@„êTu¬[‹á 0 ñù¬P  L+Bz{…b”³1óš0© ÕuèhÄ7"÷Æó¬`i‰ñ)²eû§2è¼ òì ¿“×>¯(Rgm0àü,™|áPIM‹—£û…²½´ð¾Ð~øN+&–çRfÏ/ü‰”6œRçõvF]ÑçÛÿd\n³5@¨Huðʤ)CBù·l>Êÿ¯Å„ö¹³m[ÁÅÖ²ÔûWó×Gómk"¯Û¿µ‡fÑ—ÀwË/ Âpv¼hð## ^ë,ÙlvÉÍ ¹c® <àaPÔ!Ñ¿0Z„2O;\l¶@ƒÁ_O}I„H1bUBÁI*¥ Cö…R ’Kc§D⫌(#%yƒ®@Né N¯P5 @¼´ºˆ&j÷J<&Ô[ÀÀëëý°–ä»…v”™á»Õᔦ–ä·µ‘#Ê*³¯ž ßýþ ™4uH›g„:Ù©­†‹y ‚\@¸¦a?ASZR-Ñ1‰§ãÙ%¼ˆŽÎW×4(c¸ Ì{ÂÙYxƾ #N&Ê“•õ’ž¡ÌçÕ¹êòªþÎææ±‡µ¸;¤§ºR;éž–/|Ö(Ú= gZn½hxÄu²!ÚE,«ÔC:ûCùfР\™5ó9¯ÿ0P†Y$[‚mIœ?›ØŒ>F—aþÍ ˆ3RØ\'ÕÎf¼œOš\ðxhƽ¯°O6f³àƒNÄ¢N”ÉÁ–øä ×|ȳl#`ŒFNæ P+²:îS·DNmuè—h’Ú*ŒäHÅ|Ò@Ž4`:bÆ¥³å²Ë.“’’bÉ?|XŠŠòeÆœ¡rÝ·.Âл#6²Y‡.Ò‹ÿü£?ìØ–¯4ÏU•õ2(ûûòƒ»/—Çÿ÷–NïìD÷Ýý7y ïzéÝ' ã1n6Ø™±5Î[{M––ÔÈ´q?•=Eÿ0.XxôÆÚŠ ‰ö(ý0bMÁóç‘%Äh¢UË~_=qîCðe÷B‰vÈCÍô(`ä°è¸ÔNADJÓ¿ÿ ¹è¢™2lÈqLñ ø%F8VÀz02R,Iu&»”[1[ó·“D®@y÷p¡4´ºpø…rX¦¨‡ödƒ¤2¨—XÁ£1'k‚xÈ}ãÓÑÿÍ'ÁK ùÅa+•ú&°R,œc"°y=P•À> I©&øxY¥´Ð%‡¿(‘ïÞt™ä*“];ò%6&C†ë!wþðFéŸÛ•¨Ð5€ø|¾—ÚÌHŠ’†mÕÉþt4YëD[)UGD~GÝ£¦FpU` ]­ÊÆ>Y'5È”Q< †.ØqÄÆ`ïžBõc£‘̸bö:Wy´ïfÞÙ6ñ#P‰@b»1ñÃé*Eõ3/Gyhšv‰SGÔ+p%ð×tø9ÞZW^È`V„ALCà.?ºí;ã.ùŸýk?¸¿LÓ!ˆ>YðXôE¼~ „4€Ô€àU #—A~÷sçþ§ä hq²M¤¤¨ZÊJêq M3jOªÂ!< ƒ ê8œ&B‰Þ€€Mù¸AâP]g²/‚ÈØ’mõD8»+1´ÏJ-¥@^‚#Sn°µ}`gKq 4¼"À#~*$Y.…Ç K$BGQÛÍAH‘Ò1Œ>ë!{ŵξ`\:JRoÊóûÇ_—{~vM蘊ƥ‹×ªcŒ„ÕÖèH~H]%£N/?¿\®ÿö4•• òµß”±–½µ^=ÏŸ‚8í´X¶uÔÁ\ìC†Cd˜ €(1*ktÍ&gKc \Û eNåÏ—¬Yüè#{§ útñü æ<°M‰8ÔJ^Q²c='cŽªh×Fyïý%²zí L˜Ž‘‘Œ—ì¬>ª“Èn“^¼j‡šd|í8ÇCõªxªš?N/ð ¥ hŒÔßXP0v$e„Àâ•>¨Ù»çZT#ÐðªkA1•P€´¾$LÿaŸ@ œsC¨F½P^ ƒLRnYlqÍKªó< LQ\| t?QÐV—ËòèfˆIDATW¤ÚêJï—È› × ¯ÈÐá½eÊ´ará%¹2íbLß`ÝÖs¤lá)ü«7Ø—ƒ­…çç>ëoÈ86òaÞSrŸíÆdTÁ Hêd(Z<÷ü“¸RºúÓ¿)·Ü1ÇÔÛa*G×{Ú¬¬s¢õovzÿu×SwxòÎ'Õ×Ñ)ˆp7>8ósšÏ˹†4Á‹D“Å`ª" 6=͵ÕÒP_'Ÿ¬ü@ÖoXƒIÔ\;f² è;ýÃBð&Ð>ˆ]K"_ÒŒIM¨—c1™1ý€s”A¢Ø8ĉ®Â4e 6žç,ª®PS8€)ò ø*AÃs! jD€€‰ß)¥Õc 8ܠƾ¢(ÓƒûìEYônIÃ@â¼CäŸ/ü¯¼õÖ>¹Ã´í‹CÂ߆Ï÷Èe—n—'Dî0PN0¥¤&ËÍ7_×î~žà‡…ï+” ðñ„bgh'&R¥ †@Ùùy“:èàÀþh  ݆༅߮Rƒ’úì8V_QÛ;#0k„é³w7z7£þ`k¤FJ6Š'2SsJ~ÊÖ¸FZë7¬’mÛ7a´vžLw@5B=Õ ``¦€D–Ƈz!LSâ„` S)(ƒU€Úä"bØÇbª¹/”OD€‘^Áé Ï4¨Ø•¢ Ø@еØ©TR3YjûG/ F 6ªãP®b8L™à9J†˜ ^<§_¿a’•9@nûÞC9Ì DoµS8†7YYésÔðó‘ "@dÈ@dg55µPzÒÀ/ŸÚR>¤RÒHíôñ?Q‡÷—Ê]·< 3Ìl›dîµÕyƒɸ—Û•+¶É¯ùop^™5kÌ[vKî„À`aí§rÿ½¤L¤—¦f#Ôr\ƒ#.¡¾²²¹º´¢õ<\=:ˆ¨xçÚŸ?ísÉta&UÖ >c ÊF‰™½¤¦øPðQM+&1wìøþõ;ÁÞzÉĉÓa4VÍ•è:BÀÉÐ]8AM |i<“^ÖXÒëAtv:´åjTEà)êCÐxåPá(Ø e`Ÿw¡c8ìú ¸óA­®xihé‰Ó4 ‚WH”õa‡4#ê@µí¢ ÷e÷è‡kèÒähÔ'ÔHtÑ’`ôV*—Íš*ýË‹êºñÇ`IƱ± ·â¹6 B™ølRÝ… ß“i3)»¶M冧úúfÙ°v_èÔîE¡ý`‘øHÙà¤Dm(vª« öh2Á­È/Ë?Ø(“§@ÔGe)+©kS¶Å^$Ùƒ`Óe«E˜$o$\2æ Ëͯ=íð'„í¯yíÑ-®|è¼å5G­U3È'Gj)9à‹V!nè"½Ú+‡aY¸|ùÛ2iÂt9r¢$&¤(3Rô@çƒáf,ÂE‚2¦„øô€ØâUÏïÁ¢‰fZ%‚Â(™Ç‹áü' DåÁ&» ®‘C«ƒƒB)#ú€l•ðbgóeÀFý|¨:;—À7zta1ýӀѦl6Œ¥æ ô‘£¶¾£©Ã1FdÌkŒÊQÇÆ†ömÉ|m€ÇR¸‘Œ2 wíŽ@Dj¼aÝêÇÛ©½¾|^Dƒ 3/’÷–}¬J¦i4ýþ¡äÑý?±4£ìþ->W2D,Ågò>¥{õQˆY}>£š2Z,~Ñ6èfz`j#†«¼; ¸¤@^[ô5ÚÌvttåÚ1 jFóeá»ÏB–-G¥D,gíÂǪÆ_9ÿIø£=ŠÃd°µ*w+|Ò@&¢a&šÚ{ TÜŬ&6VUU…¼õö«²â“e2#ºÑ04`ÖË@Q¨•b!Ì.d#îS^u¸œ­:¦60œKSÔ` Ø),.¥•C¤oæÛÐ&Ç@~aƒ( q <<"xP®:g€€ ~hÇÎMRX|H.“`B4\æ·”]Ú ÿi¸u  mÀ Ô–öÖ5ûäþÇÆ´k:iÍêòôïŽéÆÐþýeU–õkwËíßû£ÚŸ:}¸üç·.Rû¾àèKà>ã8|KÐ3‚µq÷ìÛW¬¬$Ãï'Å*/;¢?li†n¿ðÄ€ö¬‰ ‹3±Ac¡ V¤«[ bakç½?þª§‚åÌeˆb(¢Ò¡CÒR ;Ð/¡÷º“±ÌgŸ}„` ŸIjj&À4AY6öí}”˜.塼DZ &Ù¶g¬L±Zo²3¾ ¶J'ä“á}_’°7jhÉ”‚òaNÆjžŽ€$˜H|î€,T[[![a½zír¸HïQó&á»7Ü!éé9ŠÚP6¢POêC=…[–CªUEÜ~Ü·eëz)(<¨Œõ³rÚ Ä|f8+:´¿L–¼®äQ^ a×öÃê¸àP¥¼üìÇjßn·†@Îy±3Š¥®Ad(c ŠDà”B)LSÛpñ{õÕ·åÿ^¹E=7’rò$ƒ»2ù}n%}û5ÝŽQZÊ7¾ýÛènƒˆ àoÜšù<ôíÐL7@µà•‰fÿLPNÚ9a"ÚÝDËÀÂÂCêg·¿!)Rçbþ­_Ÿó¥ßóaÞ€¹Œàb]Ê«2ä½Oo”¾Ùë%=q¨Rx´3ûñRÝ-Å䨒 3ÀMªì(JF@’zÔÕÕÂX›lÙ¶^¶nÛ€‘P=®ÀÅ:ïÙ½MžúócrÍU߆^ª¯½0Š=ØuuÕRX”/»÷n“}tÂÇ`P:ÞßYò„Q‘ÈÎ7ØR°ßÛÞ™áº%f2¨M›‚@F ?äzÈ;QÏ”Ïx®qxùá 7®sրȅ|§–O…jØq5­©® ³ŒÇ>]üxÃä+ú…Góý·õ„p]ùÀªä#{Œô4JmYs\Ô8ª3ÅI] Žz÷ê0 ļ\ µ{I*ì§7ïœJ5‘TQuâ%Ø+Jˆ$Õá?ƒÐØT«:½¡VvìÚ‚è%{¡ÑmT¥³×.))„âíOÒ3§ôÈȆ†Ú¦üØ šÄb^x9F]ÂÏq?¼ƒ"¯½þ¯•²yãÙ¾õPä%E“‘”ˆïÞY2€š{A_áÏHá ꬮÌK962F´”^ÙèNcÄâ÷i ›çØ( þtñû'^÷{Ÿ×õ KE¤‰ Wk 4Ab³Ã´´'¬ó·­Ûh«ê¬TWÇÙ¹ë\ðñ_¯~ÔlÛívØ='À…¨r\LNÆ*>0±¥oDGÅf²Õ!–dyE ì~À€¾Dy®r„u,©Ô”j þŽ%uÖ1”ɶ-ehnŸèrÿõü c·ÝßD(-xiEG¾ùý{‹C×"w6®Û'xbQäiÅ–‡æöVç#ëJÖÿ‡ß,å×äÀ¾Òv÷’å)Ü¡¸-ޤû£0+ CœãH«Î_:vîý `º·Cùh/Ã2T™b,јå'E*Ø œŒD–ÒØÈ_ƒéŒ2YÁwÉ%SUHœ®¨Å‰>ïÀ¾ù|Í^"%Üw³ÀpŠð¿¼+ÅG„ß®ŠX½r§ð×Qziñ}êtGìó—?{¡£[çjr&H‘:ÂÆ‚ÁrP/Þù­^¹|„ý/Q-†ÐÆÅK<»£”[ލb1!Û“3ü˜Ú8SôäS¿’?ÿåä–[®?)ÕŒüºB)7…®uÁ†ŒüÆ6\ÞâÔÆÉHÆÇªO7 ¥¾Žž€p@ˆ%Ì*Õn7‹i›ÚlÌÈýÊyZ.OéJ@‚üØsàþ¬C)y¦¦uŸo”%K–ʲeËOiÙaÇÚi¬P8µàœØÉH†°Ðî”Kð¨QضŠÑb*ÊãÕ<ÎãbgÆCi¼p4?o©öØ Û™˜ dmf®íÕ{Ø8)عZm¸UœA‰<þÅch»¬Näx«Ù  ÚòD&·R+eÛ™¡“㢂ÊPyá¦dïÖéëöªÐ3[7ìV~#uyd\Ê^,èJ†±Z‹Õbk‚Eè1ÐW£Äˆ-ã5W¹~ªt1J³C’·HÜR»ëlª—BD7eõ¯k¢+4ŸûÇr×ÍOŸuÍÚg ÄaK’z­Q±ù|¸`½§Ù’ïáü '†þïe·Þ«™´ek³Ú£Šaþê$´c=¯^CÇ«%˜Nøagi!öq>ÚÓÝ\¨Æjü;—rW¾ˆ@‹’ÏÅûN ˆX$Y[nZÎ}Ð3/×lãôZÁÚ@þš¨õ³`-¯ž˜¯R¥<Ý-qšŸ7dèyòÄo’Ûnÿ¶zß“AñOó+„GŸC3¢àQgsh5‚.uY,þ­ÌtÒ@ÄžyæVwŽ=7éï°«[/lÊ0i«ø'ð¢œ!ã1™wæ Ü|—MÊØqÃäúëç" {¦TÁ9ðÀR©(§½ÐÙ•¸€Ÿ*H‰ðS  ¿Š#ÅÖNŠLÔQ“Œ»ê¹0Èÿ1t XâAt®R€“)¦`b̯ֈe¼åΜ!¹dÓw|[~÷»gÚ¸wô¬3ñ\¬t„€ÉR+mù¢ëÉé3±þFL°lÈìŸ Y(El±ñ.«=ºP]Ó´•ɱ–»Þ~q~ýI¥Dƃ¹]»è±7¬ÿÝîb=\rR‘â©8i‡÷F¯a“$¦´©«î¾û{k|£<òÈOË=kö‹‹Êdõªr6ˆíˆK‚‡™áËÖFÕ´·ñé@<>e b៼þèF¯Çz–1] 9 þkº›@ HÓýôªMA»~ˆâÀ”FxZ½z½üéO—¼¼?„ŸþZî'%'Ê/æÿHúöë}ZߟT(VCÐg^zý¨ hZE“ FeN;3À-Xó[]\ˆøzî'‚Áþß뀅d Õœ”aàîêÂR–¿KM †ßÿuß¿ÿÿ–ÛïøŽìÚµOn¼áNØþTž–&IìÑž=%ÂRXÕtÖÀ€ â÷9OFŸ_¯‡ ÌŠœo<öʧµñ~˜1ôÅ ŠN¿›¤*• :¥V蔸ž,ו=—-0÷ª2aâYºt9 ìÛy1w«™HÍn¿ý[òè#Ov+?V*’ô>ƒáÕƒeÖó ¢,„ÏÝ_Ýõ=«—<°¢ÃÉÓ "Ö~â̼$ŸÝU€v)Œ~âx¦$QXö!YQ%ÃŽWêá4W Ûše~U’#Ê+„L™2e¼üýo/wûµ|”*úž®Ý½™«[ÆÆF«e3n½í¹dú<¬ØT ¯ÎG‰ÔN§ÁZ5Ë«@ˆ˜]Jû1|øèwFÎSb=N;ˆøPD—Зmv}ö(÷`V f„¤J¢aô–€Q\¼Áá„âÕ%ùRqxöÍœƒÏ9ÓR|B¼¬üô5ø‰yä¶[&7l9åU¤KÐ}÷ß.cÇŽDüïeDÇEo®ž{s‡Ïfœ„Ôž$>½—rZÄ4V@0Ðd=b0Ü¿òµùÂoþR@dT`Ü%$kíǘQŸ‰©,P%µ(T)‰†n*(Ö7•ŠÂ½R3ÔcY´˜Ë`RO³`ÁÒ“6?fÔýx¶ié)ò™S¤¾®Q¿ñþñq\÷ <¿¯<úØ¡¯êw-,[ý:l΋%ÁU Ëb4š jå\(ŠŽÑ*!ýlìÈJ|© VF›<çÁq “÷Âìv0(“ÒB*Ó[X)´’ ç4¯*Ø'U%Í5’H¾|è‡òÞ»+ä–›ï=Jî¯îåI“GËåWLCd“ƒˆ'Oþï?Ú½¬XøÜ×°·¢@0yv!ì` g0²n…øñ—äÞiepØÈ›Ï©:qw¸Åw¬ ¾Sú8iâR$x_L†¡°2¯*:(ÕÅ0ªëÜDbÊÔ1Xåz¬üë•¥²ŸR®ªg}Ýþ$§$Á ¯IYæäd!Œ ddPx#™±Ü”–}"éZ­0ë‰ ˜õ`Æn[ £Ì±¿ý`aÛ2Æýg ˆŒ žsoŠY·ÞòyÞ+`tY•bá€%»¡`"›Ã¢Æ\N´ 6Ô.ØNŸKÇÞ…‘…ÅÂY“a¦M6» –ªC|Ã0ÈǪûŸXñÆ#•~ÆÈ¨è¸9?鯶ÿ†í4Xâ¨EüpMãô ~q!6‡“ôÎl®«Jø5Ö@5ö•åu´Ž‰–~ýrdÐàóä߯,î(ËWöƒ¸ÆÁp013GìX+Ål€¬ÖfÈAåhf€Wšö¾Ý¯?±bÉûjˆ3DF¥±¦û @ø/ˆv“¡åâz´ÐY’Íy^3Û(#/CÄP%PSZ ul¯kC¸¬ìpƒ~ þÕÉÍ7ýXvîØkuL[‚pøðÁ`›o`‚’Þº€ý™šÐz4ÍILï)1pÇÚ°ðœ±ú0!^Gï@µ57¬—Âûþ÷1Ô¹G@ðÏx}1~VÞ`Íê¹ßÇ…¾ãq^‰ì Úîxµ«U~P"/›ëª¤€ª¯*éÐi +;C.1¡ËeÙ;Ÿ:æí„‰£eÑÿ—_Z(#F‘«¯ú>‹9ó ð,0éˆÛŠƒ »óa:¼hðsc^¬6Ôp/VÚ!úßQbùëò%ó»¥?k@dôì¤ËìåµÈM0Ÿ\ ðœÿóÃRÀíC¤[øÐÖ3˜ ;  "°Ô‰ëØ2ÀÖÉJ¶ßy×weöìKá|™"»wï—‹§Í;YÅŸx9øÔ0ó™']âÓ²TP{™a.̇_=t@¤>†Pg ?›­ÉKhlÖ݇Ÿu 2^lÊ÷'z4óµÐ]\ æÑÓP ðz€:¹b9‚}*2)¨æhl±4{å:AÛoŸÓÒ’eöœé2lØ,S.×^sÛ—n¾B™ÇÎ5Jàð7.kƒÙ[ õ&õ17!žB5'ÄUÃh`_"Ÿ!ªÙ“kßü5 ¨‚ ×õ欑ñZÔ~¿µ¾yâV_ “‘x}„Pñi˜…½v,¹€(&^,K(4ýâ\Pd6!<Y^3ܬ}asÌ =pïOnU‘5ê›dóæ²iã¶c.æDo )2¦(`¾‘(ñ˜²°FјŒÖˆ ¼jòsêrO-ò^’“©~_ÚíYÍf{sÕ‚ùÕÇS‡³Dá/=v^^†Öê¹/5S/€É~N6°¶hØ;cø Þ)˜\ßÃÕÚˆ0‚5å•#jj] ÁQ¾K Ósç΀ûÑÇ<·^¿ãÙ§9Õõjã’$Z¬0Cf$;åâƒÐ=šI÷1ÂÍ8B”‚‘òÎ2,~óüg‹Þ<Ï6îùJÈx)n'νo˜Ç¯_‰uÊ.‚0ž ‘“p,ŠLX2Ð!Ó™[ä%à"Ùaû»ëŒ‹fBÄS¿@q8n€ «?GVa¥’âg0ÛÐ`5„áâóY¶.ºZf*ìöãÞýZƒ(²Õ&ÎûƒÃï­¤¹ýc|š> ÀèA0xèP«ˆûÑ–Xõ¶cÜâ^Z’!<—Ú’|àжö ŠŠVÄ‹Ü"À¤4Š%‘g"žGJ¯l­Ä© Eo™úP·xwXs-E'CÖ‰|^gÇç@ÔYËÏOœ——¤µ¶ösùõAU†BÒè X¤¡ó°ä…u¿ü!¨ð> stream x+TT(TÐH-JN-()MÌQ(Ê X˜è˜(¡©……ž‘¥…˜“œ« ï™k¨à’Ô&ƒ endstream endobj 5 0 obj 64 endobj 2 0 obj << /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 804.3204 588.2988] >> endobj 6 0 obj << /ProcSet [ /PDF /ImageB /ImageC /ImageI ] /XObject << /Im1 7 0 R >> >> endobj 7 0 obj << /Length 8 0 R /Type /XObject /Subtype /Image /Width 1117 /Height 817 /Interpolate true /ColorSpace 9 0 R /SMask 10 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream xìÝÓU•èÿêþ-e Aœ$2\ A‘DP&†ÂÄ(¡t1ƒÈÌŽH"¨¼H¡ÁXÈ"àDy‹¸¿ý»§nש~žg§Ï9}º÷^ý¡,«»wŸîµ¾½{õú>ç%ÿçÿø@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ O?ýô5×\³mÛ¶‡{ì±ÇÎ:ë¬C‡5Cï¾ûîþýû/ºè¢íÛ·ß}÷ÝÍö´ð£ýhÇŽ_|ñ 7ÜpòäÉù!Ë € € €@±Þzë­«®ºê¾ûîÛ¨EÉ€.¹ä’dLóZtðàÁ={öœ>}:¦>|x–ÚsÏ=wÞyç½òÊ+iõÞ{ï½îºëŠMY` € € €ÀF¯½öÚF-ºýöÛÓûA_ýêW-:uêÔÙgŸ}üøñÙüñ$M³åÜrË-³å÷ß?)Ò믿¾ñD¶ € € €eبE/¼ðÂe—]–Þš×¢´1}¦.}@nçÎûöí{ùå—“þÌ2Ú½{wzËéÎ;ïLŸ¯{ã7®¼òÊ_üâ[%ûä“Oþô§?ý¥ÿ@@˜#ZÄÔ(nÕCÚŽÀº ´´(½Ý“¼æW¿úU:ï¼=z4iÑ{ï½—¾C”¾a”ÞjÞcJ¢ôãÿ8iÑ…^øÇ?þñsŸûÜ£>ºUØiÂ?üðÃÉ›ü‡ € €@C µˆ©Qܪ‡´uhiÑ<Þ š4}:®ùÝìÝ¢¤E³¡—^zéüóÏŸ-§w‹î¿ÿþ&ÎdUO<ñD³ÚZHH“?Ù“ÿ@@h¤15Š­ÖÑ*ƒhiÑg>ó™sÏ=7}@.ý÷á8}Ÿ(ýÒB föÝ¢'NÌK¿Swíµ×ΖӛJ·ÞzëlùŒß-¢Eͽo@@ !@‹fí´ÿ‹@K‹æÃ˜ÿ]ÚžühïÞ½Í/Ñ9rd¶sú%º .¸àÕW_M«é—访þúùƒ´–iQsï[@@hТVÛlu0éƒpé-¡ôÞPúÒPZصkWëÔ--šÿw‹š×Í^òàƒ6ÿnÑ›o¾Ù:Îü*-jî}  € € Z4ß3[O€5÷¾@@†- /œ'@‹š{ß € €@C€Í÷̖àEͽo@@ !@‹Â‹€ç ТæÞ·€ € РEó=³åðhQsï[@@hТð" Áy´¨¹÷- € €4hÑ|Ïl9<ZÔÜû@@´(¼Hpž-jî}  € € Z4ß3[O€5÷¾@@†- /œ'@‹š{ß € €@C€Í÷̖àEͽo@@ !@‹Â‹€ç ТæÞ·€ € РEó=³åðhQsï[@@hТð" Áy´¨¹÷- € €4hÑ|Ïl9<ZÔÜû@@´(¼Hpž-jî}  € € Z4ß3[O€5÷¾@@†- /œ'@‹š{ß € €@C€Í÷̖àEͽo@@ !@‹Â‹€ç ТæÞ·€ € РEó=³åðhQsï[@@hТð" Áy´¨¹÷- € €4hÑ|Ïl9<ZÔÜû@@´(¼Hpž-jî}  € € Z4ß3[O€5÷¾@@†- /œ'@‹š{ß € €@C€Í÷̖àEͽo@@ !@‹Â‹€ç ТæÞ·€ € РEó=³åðhQsï[@@hТð" Áy´¨¹÷- € €4hÑ|Ïl9<ZÔÜû@@´(¼Hpž-jî}  € € Z4ß3[O€5÷¾@@†- /œ'@‹š{ß € €@C€Í÷̖àEͽo@@ !@‹Â‹€ç ТæÞ·€ € РEó=³åðhQsï[@@hТð" Áy´¨¹÷- € €4hÑ|Ïl9<ZÔÜû@@´(¼Hpž-jî}  € € Z4ß3[O€5÷¾‘ÀmÛõ½§Bþ/¥6"X§F–&@‹Â‹€ç Т¥k…"€@’ý¯=†ü_J­GP… F€Í÷̖àEƒÕ'B Z”c…- /œ'@‹F©3NŠ-´¨Ä* 0:Z4ß3[O€^s€‰-2 @ÒТð" Áy´¨´$¦I€MóºËJ&@‹æ{fËá Т’Ë‘Ø˜Z4k-S¨…- /œ'@‹j)MâD 6ZûúÊj$@‹æ{fËá ТË”˜ˆG€Å»¦2BÚ Ð¢ð" Áy´¨ö’%~b E1®£,@ Z4ß3[O€E*_rA ^´¨Þk'rˆJ€… ΠEQK™¼¨‹-ªëz‰¦@€Í÷̖àES(krD |´¨ük$B˜Z^$8O€M­ÄÉ2 Т2¯‹¨@`ÊhÑ|Ïl9<Z4år'wÊ!@‹Ê¹"AfhQxà<Z¤ô!€@ hQ WA  €À<Z4ß3[O€Íßþ–@`,´h,ò΋lE€… ΠE[•Û@`H´hHÚÎ…t!@‹æ{fËá Т.eÁ> °n´hÝ„X”- /œ'@‹-öGu Eë ê˜ €À*hÑ|Ïl9<Z´J¹ðZè‹-ꋤ㠀} EáE@‚óhQ_¥Ãq@`´hz^‹¬ƒ-šï™-‡'@‹ÖQF%@‹%f@`ÝhQxà<Z´î’âø Ð…-êBÉ> €ÀhÑ|Ïl9<Z4dyq.ØŠ-ÚŠŒí €ÀXhQxà<Z4V©q^˜'@‹æiXFJ @‹æ{fËá ТÊŽ@€™ €@ihQxà<ZTZ Ó$@‹¦yÝe% Eó=³åðhQÉåHlL‡-šÎµ–)ÔB€… ΠEµ”&q"›-Š}}e‡5 Eó=³åðhQeJÌÄ#@‹â]S!€@íhQxà<ZT{É?1Т×Q ‰-šï™-‡'@‹"•/¹ P/ZTïµ9D%@‹Â‹€ç Т¨¥L^ÔE€Õu½D‹S @‹æ{fËá Т)”59"P>ZTþ5!L- /œ'@‹¦Vâä‹@™hQ™×ET 0e´h¾g¶ž-šr¹“;å Eå\ ‘ €3´(¼Hpž-Rú@ ´¨„« @`ž-šï™-‡'@‹æoË 0Z4yçE¶"@‹Â‹€ç Т­Jí 0$Z4$mçBº Eó=³åðhQ—²`X7Z´nÂŽ,J€… ΠE‹–û#0Û=–Ü!äÿ~øÌïhÑXóÊy@­ТùžÙrx´h«R`;¥,ßøÉÿo|ÿkσ!ÿ—R+m.‰èB€… ΠE]Ê‚}(@`q E%L01 €-´h¾g¶<0§Ÿ~úšk®Ù¶mÛüyÓ–¿ýÛ¿=ï¼ó®»îº×^{­z÷Ýw÷ïßÑEmß¾ýî»ïn¶§…ýèG;vì¸øâ‹o¸á†“'Oε–iQ«XE X´¨Ò÷’¼[Tì=%0È E­¶Ùê`Þzë­«®ºê¾ûîkiÑL…NŸ>$èÓŸþtÏÁƒ÷ìÙ“¶'?J/<|øðlè¹çžKõÊ+¯¤Õ{ï½7ÉTó’ ´(_Œ"PZD‹Ê™"A) E;g[†$$¨¥EÍÙŸzê©|ä#³ÕS§N}öÙÇŸ­>þøãéM¥Ùòn¹å–Ùòû￟éõ×_Ÿ­nüZ4…²&Çh-Š1“eµ E;g[†$Ñ¢ôÖÏ•W^9 æ…^8묳Òävîܹoß¾—_~9éÏlh÷îÝé-§;ï¼3}¾î7ÞH/I³z«hQ-¥IœÐ"Zä.@†$@‹¶êŸm†ÀVZ”ÞJôÄOÌÂ8zôhÒ¢÷Þ{/}‡(}¸.½Լǔvûñœ´è /L÷Îç>÷¹G}t«àiÑåŹX…-¢E«Ì¯E%@‹¶êŸm†ÀVZtóÍ7ßqÇM ³w‹’Ͷ¼ôÒKçŸþl9½[tÿý÷7{¦w‹™j66 ´hÑaÆ"@‹hÑXsÏy@`šhQÓ0[…À¦ZôÝï~÷k_ûÚ|<³ï8qb¶ñ±Ç»öÚkgË_ýêWo½õÖÙ²ïM³ŽÉ:$ZD‹BNlI!€@±hÑ|ïmyxµè?øÁW¾ò•>ø Lú%º½{÷6¿DwäÈ‘Ùé—è.¸à‚W_}5­¦¯#]ýõ­ίz·¨ØZ$0Zh-jM « €ÀZ ТùžÙòÒáÒÏ&œ{î¹éKCia×®]éìéw¶Ójúˆ>þÿþk~Vnþß-:tèÐ|¨>ø`óï½ùæ›óC­eZ´ÖzâàôH€Ñ¢§“C!€g$@‹Zm³ÕØhÑk‚(„-¢E…LEa €ÀDТØ »Z4‘Ê&Íh- 0¥€ E­¶Ùjl´¨¢ê$Ô‰ E´hâ·€ô@``´(¶È®E€ \aœ¥ Ð"Z´ôäñB@` ´¨Õ6[M€-Q%¼QÐ"Z4ÊÄsR˜,ZÛd×"@‹&[ë$^ZD‹ª›´Fª ТVÛl56ZTu½ü¤Ð"Z4© /Y-Šm²k E£× Б-¢E§ŠÝ@^ТVÛl56ZÔKÝp @‹hÑÓÌ)@†-Šm²k Eͽo Ð"ZTø#@‹Zm³ÕØhQ° &Àh- <½¥† E±-@v-´¨À*$$6%@‹hѦÃF@`MhQ«m¶›-ZS%qXz'@‹hQï“Ê@ ZÛd×"@‹2ÕÀE E´¨¨ )O€µÚf«± Тð5M‚aÐ"Zf2Kª @‹b[€ìZhQuI$´ˆ¹@! ТVÛl56Z4dyq.V!@‹hÑ*óÇk@E ТØ »Z´h‰°?c E´h¬¹ç¼ 0M´¨Õ6[M€M³ÐɺF´ˆÕ8oÅŒõ E±-@v-´¨Þb%ò© E´hjs^¾ 0.ZÔj›­Æ&@‹Æ-8ÎŽ@w´ˆuŸ-öDV'@‹b[€ìZhÑêEÆ-¢EÃÌ4gAfhQ«m¶›-Rú¨…-¢EµÌUq"€@ ´(¶È®E€Å(\²˜ZD‹¦0Ïåˆå E­¶Ùjl´¨œâ#òh-ÊÏ£ €@¿hQl ]‹-ê·€8ë#@‹hÑúf—##€ ТVÛl56Z´±Ø‚@™h-*sfŠ ¢ E±-@v-´(j)“W<´ˆÅ›Õ2B’ ТVÛl56ZTr9óh-šŸ–@u E±-@v-´hÝ%Åñè‹-¢E}Í%ÇAº E­¶Ùjl´¨KY°% E´¨„y(˜ZÛd×"@‹¦SÜdZ;ZD‹jŸÃâGºТVÛl56ZTWí” Ð"Z4åù/wž-Šm²k EÃgD`9´ˆ-7s¼ XŽ-jµÍVc EË ¯B`x´ˆ ?뜦L€ŶٵТ)—;¹×E€Ñ¢ºf¬h@ v´¨Õ6[M€Õ^²Ä?´ˆMg¶ËJ @‹b[€ìZhQ eG t!@‹hQ—yb@ /´¨Õ6[M€õU:u E´hÝsÌñ@y´(¶È®E€Íßþ–(™-¢E%ÏO±!€@<´¨Õ6[M€Å+b2ŠJ€Ñ¢¨s[^ P&ZÛd×"@‹Ê,D¢B`#ZD‹6Î [@õ E­¶Ùjl´h}ÅÄ‘è—-¢EýÎ(GCòhQl ]‹-Ê£”C€Ñ¢rf£H@` hQ«m¶›-šBY“c ´ˆŘɲ@ZТØ »ZTKi'´ˆ¹ @! ТVÛl56Z4dyq.V!@‹hÑ*óÇk@E ТØ »Z´h‰°?c E´h¬¹ç¼ 0M´¨Õ6[M€M³ÐɺF´ˆÕ8oÅŒõ E±-@v-´¨Þb%ò© E´hjs^¾ 0.ZÔj›­Æ&@‹Æ-8ÎŽ@w´ˆuŸ-öDV'@‹b[€ìZhÑêEÆ-¢EÃÌ4gAfhQ«m¶›-Rú¨…-¢EµÌUq"€@ ´(¶È®E€Å(\²˜ZD‹¦0Ïåˆå E­¶Ùjl´¨œâ#òh-ÊÏ£ €@¿hQl ]‹-ê·€8ë#@‹hÑúf—##€ ТVÛl56Z´±Ø‚@™h-*sfŠ ¢ E±-@v-´(j)“W<´ˆÅ›Õ2B’ ТVÛl56ZTr9óh-šŸ–@u E±-@v-´hÝ%Åñè‹-¢E}Í%ÇAº E­¶Ùjl´¨KY°% E´¨„y(˜ZÛd×"@‹¦SÜdZ;ZD‹jŸÃâGºТVÛl56ZTWí” Ð"Z4åù/wž-Šm²k EÃgD`9´ˆ-7s¼ XŽ-jµÍVc EË ¯B`x´ˆ ?뜦L€ŶٵТ)—;¹×E€Ñ¢ºf¬h@ v´¨Õ6[M€Õ^²Ä?´ˆMg¶ËJ @‹b[€ìZhQ eG t!@‹hQ—yb@ /´¨Õ6[M€õU:u E´hÝsÌñ@y´(¶È®E€Íßþ–(™-¢E%ÏO±!€@<´¨Õ6[M€Å+b2ŠJ€Ñ¢¨s[^ P&ZÛd×"@‹Ê,D¢B`#ZD‹6Î [@õ E­¶Ùjl´h}ÅÄ‘è—-¢EýÎ(GCòhQl ]‹-Ê£”C€Ñ¢rf£H@` hQ«m¶›-šBY“c ´ˆŘɲ@ZТØ »ZTKi'´ˆ¹ @! ТVÛl56Z4dyq.V!@‹hÑ*óÇk@E ТØ »Z´h‰°?c E´h¬¹ç¼ 0M´¨Õ6[M€M³ÐɺF´ˆÕ8oÅŒõ E±-@v-´¨Þb%ò© E´hjs^¾ 0.ZÔj›­Æ&@‹Æ-8ÎŽ@w´ˆuŸ-öDV'@‹b[€ìZhÑêEÆ-¢EÃÌ4gAfhQ«m¶›-Rú¨…-¢EµÌUq"€@ ´(¶È®E€Å(\²˜ZD‹¦0Ïåˆå E­¶Ùjl´¨œâ#òh-ÊÏ£ €@¿hQl (<»§Ÿ~úšk®Ù¶mÛ|œÇŽÛµk×Å_|ÅW?~¼z÷Ýw÷ïßÑEmß¾ýî»ïn¶§…ýèG;vìH/¹á†Nž<9?ÔZ¦EýGC`}h-Zßìrd@`#ZÔj›­F୷޺ꪫî»ï¾y-zûí·/¸à‚ǧ0žþùd:ï¼óÎ,¤ƒîÙ³çôéÓÉÒ gû¤¡çž{î¼óÎ{å•WÒò½÷Þ{Ýu×ÍößôÿiÑÆ"` e E´¨Ì™)*ˆJ€mÚ<Û8×^{m^‹zè¡K/½´9{z÷çá‡N«§N:ûì³›7üñô6Ól·ÜrË-³å÷ß?)Ò믿Þ¡µ@‹¢–2yÅ#@‹hQ¼Y-#(™-jµÍV&ÐÒ¢Ûo¿ýÆoLÓòÜsÏ}òÉ'ï¼óδ%…ô /œuÖYér;wîÜ·oßË/¿œôgêîÝ»Ó[NiÏôùº7ÞxãÊ+¯L/ß* ZTr9óh-šŸ–@u E[õ϶C ¥E7ß|sz÷ç‰'ž8çœsžzê©»îº+}v.ErôèѤEï½÷^úQú†Qz?¨y)‰Òüã¤E^xaº_>÷¹Ï=úè£[O‹Ö]R¾Ð"ZÔ×\r@  Z´Uÿlû0ZZ4{·¨9u’;î¸#­ÎÞ-JZ4z饗Î?ÿüÙrz·èþûïo^’Þ-JVÕ¬¶hQ—²`J @‹hQ óP  0´¨Õ6[˜@K‹Òw‹.»ì²&†ôÝ¢Gy$­Î¾[tâĉÙÐc=víµ×Ζ¿úÕ¯Þzë­³eß-šNí’ix´ˆ…ŸäD¢ТY;íÿÇ"ÐÒ¢Ù/Ñ%ëIñ¤_êN¿D—~wn[ú4ÝÞ½{›_¢;räÈl{ú%ºôãu¯¾újZM¿Dwýõ×϶oúÿÞ-*ªþ ZD‹2Óà Ð;Z´iólãÒáÒÏ&¤ŸVH_J éß*š4ý.÷å—_ž„(}:®ùé¹44ÿï:th>Â|°ùw‹Þ|óÍù¡Ö2-꽆8 k"@‹hÑš¦–Ã"€› E­¶Ùjl´hÓ:`# E´¨Ài)$L€ŶٵТÀÕLjÁÐ"ZlJK '@‹Zm³ÕØhQáIx4h-j&ƒ@`´(¶È®E€ PUœ^Ð"ZÔËDr@ #ZÔj›­Æ&@‹:V»!0:ZD‹FŸ„@I E±-@v-´hRõM²U E´¨ê ,x¨Ž-jµÍVc EÕÕ(O–-¢E“üGQТØ »Z4JqR– @‹hÑÓÆK@¥ ТVÛl56Z´t­ðB&@‹hÑÀSÎé@`âhQl ]‹-šxÅ“~Eh-ªhº  E­¶Ùjl´(@Õ’ÂDÐ"Z4‘©.M(„-Šm²k E…Ta pF´ˆq’Øè‘-jµÍVc E=V‡B`­h-Zësp@ E€ŶٵТV°Š@±h-*vr B E­¶Ùjl´(d“TH´ˆ…œØ’Bb ТØ »ZTl--´ˆµ¦„U@`­hQ«m¶›-Zk=qpz$@‹hQÓÉ¡@3 E±-@v-´èŒ5ÁB€Ñ¢B¦¢0@`"hQ«m¶›-šHe“f´ˆ˜ÆR@ŠТØ »ZTQuêÄ Ð"Z4ñ[@ú 00ZÔj›­Æ&@‹®0N‡ÀÒh-Zzòx! °ZÛd×"@‹–¨^‚À(h-eâ9)L–-jµÍVc E“­u¯Ž-¢EÕMZ#€@ÕhQl ]‹-ªº^ ~Rh-šÔ„—,ŒN€µÚf«± ТÑkŽèH€Ñ¢ŽSÅn €@/hQl ]‹-ê¥n8 E´h€iæ €@C€µÚf«± ТæÞ·€@áh-*|Š ‚ E±-@v-´(X“N`´ˆžÞRC ТVÛl56ZT`› E´hÓ‰a# °&´(¶È®E€­©’8,½ E´¨÷Iå€ €@†-jµÍVc E™j`¢Ð"ZTÔ„ „'@‹b[€ìZhQøš&Á0h- 3™%‚U E­¶Ùjl´¨Šº$HZD‹Ü €ÀhQl ]‹-²¼8« E´h•ùãµ €À¢hQ«m¶›-Z´DرÐ"Z4ÖÜs^˜&ZÛd×"@‹¦Yèd]#ZD‹jœ·bFz ТVÛl56ZTo±ùÔÐ"Z4µ9/_—-Šm²k EãgG ;ZD‹ºÏ{"€« E­¶Ùjl´hõ¢á C€Ñ¢afš³ €3´(¶È®E€)}ÔB€Ñ¢Zæª8@ ZÔj›­Æ&@‹b.YL-¢ES˜çrDrТØ »ZTNñ y´ˆågˆQ@ _´¨Õ6[M€õ[@ õ E´h}³Ë‘@hQl ]‹-ÚXlA L´ˆ•93E…Q ТVÛl56Zµ”É+ZD‹âÍj!€@ÉhQl ]‹-*¹‰ y´ˆÍÏË €Àº ТVÛl56Z´î’âøôE€Ñ¢¾æ’ã €]ТØ »ZÔ¥,ØÐ"ZTÂ<L‡-jµÍVc EÓ)n2­-¢EµÏañ#€@]hQl ]‹-ª«@‰vÊh-šòü—; O€µÚf«± Тዌ3"°ZD‹–›9^…,G€ŶٵÐ¢å …W!0<ZD‹†ŸuΈS&@‹Zm³ÕØhÑ”ËÜë"@‹hQ]3V´ P;ZÛd×"@‹j/YâŸZD‹¦3ÛeŠ% E­¶Ùjl´¨„²#º E´¨Ë<± ÐZÛd×"@‹ú*ŽƒÀº Ð"Z´î9æø €À<ZÔj›­Æ&@‹æoË”L€Ñ¢’ç§Ø@ ZÛd×"@‹â1E%@‹hQÔ¹-/(“-jµÍVc Ee"Q!°‘-¢Eg…- €ÀúТØ »Z´¾bâÈôK€Ñ¢~g”£!€y´¨Õ6[M€å ‚QÊ!@‹hQ9³Q$ 0´(¶È®E€M¡¬É1ZD‹bÌdY €@-hQ«m¶›-ª¥4‰ZD‹Ü €ÀhQl ]‹-²¼8« E´h•ùãµ €À¢hQ«m¶›-Z´DرÐ"Z4ÖÜs^˜&ZÛd×"@‹¦Yèd]#ZD‹jœ·bFz ТVÛl56ZTo±ùÔÐ"Z4µ9/_—-Šm²k EãgG ;ZD‹ºÏ{"€« E­¶Ùjl´hõ¢á C€Ñ¢afš³ €3´(¶È®E€)}ÔB€Ñ¢Zæª8@ ZÔj›­Æ&@‹b.YL-¢ES˜çrDrТØ »ZTNñ y´ˆågˆQ@ _´¨Õ6[M€õ[@ õ E´h}³Ë‘@hQl ]‹-ÚXlA L´ˆ•93E…Q ТVÛl56Zµ”É+ZD‹âÍj!€@ÉhQl ]‹-*¹‰ y´ˆÍÏË €Àº ТVÛl56Z´î’âøôE€Ñ¢¾æ’ã €]ТØ »ZÔ¥,ØÐ"ZTÂ<L‡-jµÍVc EÓ)n2­-¢EµÏañ#€@]hQl ]‹-ª«@‰vÊh-šòü—; O€µÚf«± Тዌ3"°ZD‹–›9^…,G€ŶٵÐ¢å …W!0<ZD‹†ŸuΈS&@‹Zm³ÕØhÑ”ËÜë"@‹hQ]3V´ P;ZÛd×"@‹j/YâŸZD‹¦3ÛeŠ% E­¶Ùj ¾ûÝï~ìc»ð ¿ô¥/‘lèƒ>øÆ7¾±gÏžÌÛo¿}Á>|8-?ÿüóIŽÞyçYLûœ>}:ùÑUW]5Ûg«øiQ_¥ÃqX7ZD‹Ö=ǘ'@‹¶êŸm‹À}÷Ý·wïÞÙÙþóŸúÓŸNË=ôÐ¥—^Ú„tà 7<üðÃiõÔ©SgŸ}vóæÑã?~Í5×4»m\ Eó·¿eJ&@‹hQÉóSl -ÚØ9Û2.ô¦Ï¿øÅo~ó›÷Þ{ï§>õ©ßüæ7)žÛo¿ýÆoLÓõÜsÏ}òÉ'ï¼óδ%má…Î:ë¬ôÖÒÎ;÷íÛ÷òË/ŸwÞy™øiQ¼"&£¨h-Š:·å…e E™ÚÐ(’¥ÏÅ}þóŸ¿ù曯¾úê_|1…‘–8ðÄOœsÎ9O=õÔ]wÝ•öIÛ=š´è½÷ÞÛ±cGú†Ñ믿¾mÛ¶LØ´¨ÌB$*6 E´h㬰XZ”i¡ B ÙÍwÜ1;õ³Ï>ûñ<}ÉhönQOz·h¶ÏìÝ¢¤E³¡—^zéüóÏovÛ¸@‹ÖWL~ Ð"ZÔïŒr4@ O€mìœm—À%—\òÌ3ÏÌbH_JoýùÏNß-ºì²ËšÀÒw‹yä‘´:ûnщ'fCé箽öÚf· ´(_Œ"PZT©}öž_–3‹D‚t'@‹6vζŒK }^î _øBR¡ôãrßùÎwf¿´0û%ºd=)¶ôKÝé—èÒgífq¦OÓ¥Ÿhh~‰îÈ‘#™øiQ÷â`OÆ%@‹*Õ¢oüäØmK—/äÿRjãÞÎŽë#@‹2-´¡Q$ßùÚ×¾–> —~]áúë¯õÕWga¤ßå¾üòË“íÞ½»ùé¹4”öoþÝ¢C‡åc¦Eë+&ŽŒ@¿hQ½ZøÚ¥Ôú玆å Eù.Úh0´¨œâ#ò·ÖéýÙU*}´(ÛE j´(XÛ/<ZTu½ü¤‡JÅ!¶ôÑ¢IU!ÉN-ÊwÑFƒ ES+qò­—-¢E Eõ–‘#pF´(XÛ/<ZtÆš` !@‹ ”‚.!y·¨;H °(Z”ï¢#@‹-öG`,´¨‹ƒ¸-ë–q^X‘- ÖöK'O€­X1¼ÁТ•§KH´h°{ĉ@ _´(ßE F€õ[@ õ E]¤À}hÑún GFµ EÁÚ~éä ТµÖG G´¨@åé-êñ.p(’-ÊwÑFƒ EC–çB`´¨‹ƒ¸-ZeÚ{-ŒH€kû¥“'@‹F¬6NÀBhQÊÓ%$Z´Ð<·3”C€å»h£ÁТrŠHÈ E]¤À}hQ~bEb Т`m¿tòhQ±µH`´Т•§KH´¨5“­"€@-hQ¾‹6Œ-ª¥4‰ZÔÅA ܇¹y@ R´(XÛ/<ZTi¥ö Т•§KH´h‚w«”ˆA€å»h£ÁТ…KS @‹º8HûТ)ÜžrD $Z¬í—Nž- YÇ$’-*Pyº„D‹BÞ’B` hQ¾‹6Œ-šBY“c ´¨‹ƒ¸-ŠqÊ  EÁÚ~éä Т V9)WJ€¨<]B¢E•ÞqÂFZ”ï¢#@‹=j!@‹º8HûТZn1q"€@‹- ÖöK'O€µ*€UŠ%@‹ Tž.!Ñ¢bï)!€@ž-ÊwÑFƒ Eù‚`rТ.Rà>´¨œ›H$ °Z¬í—Nž-Z¨>Ø Т•§KH´hĻƩ@`´(ßE F€­R.¼! Т.Rà>´hÈÛĹ@ G´(XÛ/<ZÔcõp(ÖJ€¨<]B¢Ek½/ÖG€å»h£ÁТõGF _´¨‹ƒ¸-ê÷Fp4Œ- ÖöK'O€ V[œ Т•§KH´hÅ™ïå 0Z”ï¢#@‹Æ*5΋À¢hQ)pZ´èT·?B€kû¥“'@‹ ©<Â@àŒhQÊÓ%$Ztƹm(“-ÊwÑFƒ Ee"Q!°‘-êâ îC‹6Nf[@  ´(XÛ/<ZTE]$‰-*Pyº„D‹Ü¿ P)Z”ï¢#@‹*­Tž ZÔÅA ܇Mðn•21Т`m¿tòhQŒÂ%‹) E*O—hÑnO9"’-ÊwÑFƒ E!똤B E]¤À}hQÈûQRL- ÖöK'O€M¡¬É1ZT òt ‰ŸeÀ Т|m4Z4Á*'åJ Т.Rà>´¨Ò;NØ @‹‚µýÒÉ Eе E*O—hQ-·˜8@ E€å»h£ÁТV°Š@±hQ)pZTì=%0È EÁÚ~éä Т|A0Š@9hQÊÓ%$ZTÎM$Xˆ-ÊwÑFƒ E Õ;#0"ZÔÅA ܇x×85¬B€kû¥“'@‹V)^‹ÀhQÊÓ%$Z4ämâ\ Ð#Z”ï¢#@‹z¬…ÀZ Т.Rà>´h­÷…ƒ#€ÀúТ`m¿tòhÑúЉ##Ð/ZT òt ‰õ{#8 F€å»h£ÁТÁj‹!°"ZÔÅA ܇­8ó½Æ"@‹‚µýÒÉ Ec•çE`Q´¨@åé-ZtªÛ !@‹ò]´Ñ`hQ!•Gœ‘-êâ îC‹Î8·í€e EÁÚ~éä Т2 ‘¨ØH€¨<]B¢E'³- PZ”ï¢#@‹ª¨K‚D  E]¤À}h‘û*%@‹‚µýÒÉ E•V*aO-*Pyº„D‹&x·JhQ¾‹6Œ-ŠQ¸d1´¨‹ƒ¸-šÂí)GB EÁÚ~éä ТuLR! Т•§KH´(äý()¦@€å»h£ÁТ)”59Æ @‹º8HûТ7 ,˜ Z¬í—Nž-š`•“r¥hQÊÓ%$ZTé'l Eù.Úh0´HÑC ´¨‹ƒ¸-ªå'´Т`m¿tòhQ«XE X´¨@åé-*öžä Т|m4Z”/F(‡-êâ îC‹Ê¹‰D‚  EÁÚ~éä Т…êƒ‘-*Pyº„D‹F¼kœV!@‹ò]´Ñ`hÑ*åÂk’-êâ îC‹†¼Mœ z$@‹‚µýÒÉ E=V‡B`­hQÊÓ%$Z´ÖûÂÁ@`}hQ¾‹6Œ-Z_1qdú%@‹º8HûТ~oGCÁТ`m¿tòhÑ`µÅ‰X‘-*Pyº„D‹Vœù^Žc Eù.Úh0´h¬Rã¼,J€uq÷¡E‹Nuû#€@!hQ°¶_:y´¨Ê# ÎH€¨<]B¢EgœÛv@2 Т|m4ZTf! Т.Rà>´hãd¶ª @‹‚µýÒÉ EUÔ%A"Т•§KH´Èý‹• Eù.Úh0´¨ÒJ%ì  E]¤À}hÑïV)#ƒ- ÖöK'O€Å(\²˜ZT òt ‰Máö”#! Т|m4Z²ŽI*$ZÔÅA ܇…¼%…ÀТ`m¿tòhÑÊšc E*O—hQŒPL-ÊwÑFƒ E¬rR®”-êâ îC‹*½ã„´(XÛ/<Z¤è!P ZT òt ‰Õr‹‰ZhQ¾‹6Œ-jU«U¸íÑcÉBþï‡ÏüŽuq÷¡EUWÁ#0e´(XÛ/<Z4år/wâP t )¶8ÄÎ.Ýtñ*‰Œ@`F€å»h£ÁÐ"¥/ZÔÅA Ü'¶8ÄÎŽE*¡rA E€kû¥“'@‹ZÀjÕhQÊÓ%¤Øâ;;ZTuÍ<y´(ßE F€å ‚ѺТ.Rà>±Å!vv´¨®")Z"@‹‚µýÒÉ E Õ;N€¨<]BŠ-±³£E…WEá!° Z”ï¢#@‹V)^[ZÔÅA Ü'¶8ÄÎŽ•VŃ@hQ°¶_:y´¨ÇêáP£ E*O—b‹CììhÑèuO¬-ÊwÑFƒ Eë+&Ž<<ZÔÅA Ü'¶8ÄÎŽ _èœÁТ`m¿tòhÑ`µÅ‰ @‹ Tž.!ŇØÙÑ¢*›S 0Z”ï¢#@‹Æ*5λ´¨‹ƒ¸Olqˆ-ZG)sL !@‹‚µýÒÉ E…TaôB€¨<]BŠ-±³£E½Ô.A L´(ßE F€•YˆDµZÔÅA Ü'¶8ÄÎŽ-W¬¼ *Т`m¿tòhQuI Т•§KH±Å!vv´¨cu²5 Eù.Úè(~ÿûß_sÍ5ÿ¿ÿ=ðÀ³Ž;¶k×®‹/¾øŠ+®8~üxػᄏÿþ‹.ºhûöíwß}w³}ÓZTc™óVhQ)pŸØâ;;Z´U9²hѦͳ#xï½÷.»ì²_ÿú׳ÒjZxûí·/¸à‚ǧåçŸ>ÉÑ;ï¼3ÛáàÁƒ{öì9}útò£«®ºj¶ÏlhãÿÓ¢UK ZT òt )¶8ÄÎŽ5õÇñТ³-ãøáxûí··bx衇.½ôÒfã 7ÜððçÕS§N}öÙÍ›G?þxz›©Ùmã-ŠWĦœ-êâ î[bgG‹¦\råž-ÚØ9Û2./ùË{÷îݽ{wúPÜM7ÝtòäÉO¥o¼1M×sÏ=÷É'Ÿ¼óÎ;gêô /œuÖYiŸ;wîÛ·ïå—_>ï¼ó2ñÓ¢ð5mR Ò¢•§KH±Å!vv´hR5V²S#@‹2-´¡Q\{íµÉ€’é|ðÁßùÎwfïþ|ík_;pàÀO±Å!vv´¨üÂ(B–&@‹ò]´Ñ`hÑҵ $@‹ Tž.!ŇØÙÑ¢+¡è‹- ÖöK'O€õU:§´¨‹ƒ¸Olqˆ-*¡ô‰5 Eù.Úh0´hM•ÄaG!@‹ Tž.!ŇØÙÑ¢Qj“"0 Z¬í—Nž-¦°8Ë0hQ)pŸØâ;;Z4LqsF!@‹ò]´Ñ`hÑ(uÆI×D€¨<]BŠ-±³£Ekªf‹@ hQ°¶_:y´¨„²#†¾Т.Rà>±Å!vv´¨¯òå8H€å»h£ÁТ«–&@‹ Tž.!ŇØÙÑ¢¥ë•"P>Z¬í—Nž-*¿(‰°;ZÔÅA Ü'¶8ÄÎŽu/PöD :´(ßE F€UW£œ!@‹ Tž.!ŇØÙÑ¢LE2„@íhQ°¶_:y´¨ö’%þy´¨‹ƒ¸Olqˆ-š/A–F€å»h£ÁТ`lâéТ•§KH±Å!vv´hâUWú± Т`m¿tòhQì‚6µìhQ)pŸØâ;;Z4µ2+ßI Eù.Úh0´hRõ-|²´¨@åéRlqˆ- _W%8e´(XÛ/<Z4år/wZÔÅA Ü'¶8ÄÎŽÅ+¤2B !@‹ò]´Ñ`hQsï[@€¨<]BŠ-±³£E*§ØŠ- ÖöK'O€mU l¯‘-êâ î[bgG‹j,•bF #Z”ï¢#@‹:V»UA€¨<]BŠ-±³£EUÔFA"°Z¬í—Nž-Z®PxU™hQ)pŸØâ;;ZTf1½ Eù.Úh0´¨—ºá … E*O—b‹CììhQ!ÕO¬ƒ- ÖöK'O€­£Œ8æXhQ)pŸØâ;;Z4V¹s^ @‹ò]´Ñ`hÑUÅ)#@‹ Tž.!ŇØÙÑ¢Áê›!0<Z¬í—Nž-¾È8ãúТ.Rà>±Å!vv´h}Í‘-ÊwÑFƒ E£×ôH€¨<]BŠ-±³£E=V0‡B 4´(XÛ/<ZTZ Ï*hQ)pŸØâ;;Z´JÉòZ '@‹ò]´Ñ`hQáIx  E*O—b‹CììhÑB5ÊÎÔE€kû¥“'@‹ê*P¢Í E]¤À}b‹CììhQ¾(E j´(ßE F€U]¯ß"@‹ Tž.!ŇØÙÑ¢V²Š@$´(XÛ/<Z©|É…uq÷‰-±³£E / Т|m4Z¸šM05ZT òt )¶8ÄÎŽM°ÒJy:hQ°¶_:y´h:Åm ™Ò¢.Rà>±Å!vv´h ¥UŽ“%@‹ò]´Ñ`hÑdk]ÈÄiQÊÓ%¤Øâ;;Z²–J Z¬í—Nž-Rú" E]¤À}b‹CììhQ¤*ZhQ¾‹6Œ-jU«U E*O—b‹CììhQÕ5Sðä Т`m¿tòhQ¾ ­‹-êâ î[bgG‹ê*’¢E`!´(ßE F€-Tì\8ZT òt )¶8ÄÎŽ^…‡À*hQ°¶_:y´h•ráµ¥ E]¤À}b‹CììhQieP<ôH€å»h£ÁТ«‡CN€¨<]BŠ-±³£E£×= °>´(XÛ/<Z´¾bâÈàE]¤À}b‹CììhÑð…ÎŒ-ÊwÑFƒ EƒÕ'€-*Pyº„[bgG‹¨lNÀXhQ°¶_:y´h¬Rã¼ë @‹º8HûćØÙÑ¢u”2ÇD ´(ßE F€Ry„Ñ ZT òt )¶8ÄÎŽõR»2 Т`m¿tòhQ™…HTË E]¤À}b‹CììhÑrÅÊ«¨‚-ÊwÑFƒ EUÔ%Av$@‹ Tž.!ŇØÙÑ¢ŽÕÉnÔH€kû¥“'@‹j,SbÞŠ-êâ î[bgG‹¶*G¶#€-ÊwÑFƒ Eª–´¨@åéRlqˆ-jêâ EÁÚ~éä ТxElÊÑ¢.Rà>±Å!vv´hÊ%Wîá Т|m4Z¾¦M*AZT òt )¶8ÄÎŽMªÆJvjhQ°¶_:y´hj%.v¾´¨‹ƒ¸Olqˆ-Š]Te7q´(ßE F€M¼âKŸ¨<]BŠ-±³£EÁª¨t˜'@‹‚µýÒÉ Eó·¿åÚ Ð¢.Rà>±Å!vv´¨ö²)~2hQ¾‹6Œ-ÊTCÕ E*O—b‹CììhQuuRÀt'@‹‚µýÒÉ EÝ‹ƒ=Ë'@‹º8HûćØÙÑ¢ò £Xš-ÊwÑFƒ EK× /,-*Pyº„[bgG‹ ¬„BB /´(XÛ/<ZÔWépœТ.Rà>±Å!vv´¨„Ò'ÖD€å»h£ÁТ5U‡…-*Pyº„[bgG‹F©uNŠÀ0hQ°¶_:y´h˜Ââ,àE]¤À}b‹CììhÑ0ÅÍY…-ÊwÑFƒ E£Ô']ZT òt )¶8ÄÎŽ­©š9,% EÁÚ~éä ТÊŽú"@‹º8HûćØÙÑ¢¾Ê—ã P Z”ï¢#@‹ ¬BBZš-*Pyº„[bgG‹–®W^ˆ@ùhQ°¶_:y´¨ü¢$ÂîhQ)pŸØâ;;ZÔ½@ÙêТ|m4ZT]p†-*Pyº„[bgG‹2ɵ EÁÚ~éä ТÚK–øç Т.Rà>±Å!vvŸ½ç—ó÷ eˆD€å»h£ÁТHåK.´¨@åéRlqŸÝmK·^¼ÿ¥¼U&N€kû¥“'@‹&^ñ‚¥O‹º8Hû„3³ÀYwÆÒU V!¥ƒÀ¢hQ¾‹6Œ-Z´DØ¿dšÏ3vzeî@‹Ê¼.]¢ |íhQÉÕ^làEÁÚ~éä Тa ‹³ C€uéc Ü'pkhË®À)×%$Z4LÝv–’ Т|m4ZTr9Û¢hQ—f¯À}ˆC¥cH¯-Z´Û?Z¬í—Nž-ŠWĦœ-êØÊ–¶[àÖ:¡–]ió­c<´hÊO¹ÏТ|m4Z¤ôE"@‹:ö{¥íFJ»"Ýã |íhQ¤§ƒ\–#@‹‚µýÒÉ EË ¯*“-êÞ͵gàÖ:q–]Q“­{0´¨Ì:/ª! Т|m4Z4dyq®u EÝ[¾¢ö$E]Ž…‚ |íhѺ+¶ã—O€kû¥“'@‹Ê/J"ìN€-ÔЖ³sàÖ:A–]93m¡HhQ÷ÚkϨhQ¾‹6Œ-ŠZʦ™-Z¨ë+ggâPεX4’À׎Mó9"ëy´(XÛ/<Z4û[®-Z´§-dÿÀ­u",»B¦Ù¢aТڟâ_-ÊwÑFƒ E« G(‡-Z´ñ+dâPÈ…X"ŒÀ׎•SÛE2Z¬í—Nž-«Ô8ï:Т%ÚÚ^¸µNxeWÂ["Z´Ž*í˜u Eù.Úh0´¨®%Ú<Z´DïWÂKˆC Wa¹_;Z”¯·F§@€kû¥“'@‹¦PÖ¦“#-Z®³ýU[ëÄVv£O°å EÓyvÈt+´(ßE F€mU l¯‘-Z®ýýUÄaôK°t¯-ªñ) æ~ Т`m¿tòhQ¿ÄÑÆ%@‹–nnÇ}aàÖ:•ݸ³ké³Ó¢që¹³—@€å»h£ÁТÊŽú"@‹–îÇ}!q—ÿ*g|íhQ_•Ùqê%@‹‚µýÒÉ Eõ+‘o$@‹VéoG|màÖ:Q•݈Sk•SÓ¢5Ö–© Eù.Úh0´hj%.v¾´h•&pÄׇá¯xêÀ׎Å~^È® Z¬í—Nž-êRìS Z´b‹;ÖË·Ö ©ìÆšW+ž—ÕRùŹ>´(ßE F€­¯˜8òðhÑŠ}àX/'c‘_ý¼¯-¾†;cihQ°¶?X:7ÜpÃYgõÆoÌò:vìØ®]».¾øâ+®¸âøñãM²ï¾ûîþýû/ºè¢íÛ·ß}÷ÝÍö ´¨´$žUТջÜQޏµNü誫®ší³i´(Fá’ÅŒ-Z½åÄa콜4ðµ£Ež,ТM›gG'ç’K.yíµ×-z衇.½ôÒ&°ôFÒÃ?œVO:uöÙg7o=þøã×\sM³[k)z‘Т^ÝḵN0e7üŒê匴(ÒÓA.Ë E­¶Ùj!¾ùÍo~ï{ßKÁ4Ztûí·ßxãiÆž{î¹O>ùäwÞ™¶¤^xá…´ÏÉ“'wîܹoß¾—_~ù¼óÎÛ* Z´\¡ðª2 Т^ºÁáB†gÞ×_;ZTfÕhÑVý³í#øÝï~÷¿ÿ÷ÿNŠK14ZtóÍ78pà‰'ž8çœsžzê©»îº+}v.ípôèÑ´Ï{ï½·cÇŽô £×_}Û¶m[O‹†,/εn´¨¯^wàãn­IÙ <ú:-ZwÅvüò Т­úgÛÇ"ðÁ|æ3Ÿyæ™gRi¹Ñ¢Ù»EMTéÝ¢;î¸#­ÎÞ-JZ4z饗Î?ÿüf·Ö-*¿(‰°;ZÔWC8ðqˆÃÀÀ{<]àkG‹º×^{F%@‹Zm³ÕÑ ¼øâ‹é»Béƒp³ÿ’¥…gŸ}6}·è²Ë.kÂKß-zä‘GÒêì»E'Nœ˜ =öØc×^{m³[kE-eÓÌ‹õØîy¨À­uÂ(»!çRç¢EÓ|ŽÈzž-jµÍVK#м[4û%ºd=)ÂôKÝé—èÒÏ2Ì¢MŸ¦Û»woóKtGŽÙ* Z4û[®-ê±'òPÄaHÚýž+ðµ£Eµ?Ä¿:Z´Uÿl{!-Jñ¤ßå¾üòË“íÞ½»ùé¹´}þß-:tèP&rZ´zÑp„rТ~;ÞÁޏµN e7ØDê÷D´¨œÚ.’±ТL m(Z4V©qÞu Eý¶…ƒ8 †º÷¾v´hUÚ1ë"@‹âuþ2Ê Eu(Ñæ ТޛÞa¸µNe7Ì,êý,´(_oN-ʴІâ ES(kÓÉ‘õÞs@â0 çuœ%ðµ£EÓyvÈt+´(^ç/£ Z´U)°½F´h}ïÇ ÜZ'z²` ­ã´¨Æ§€˜û%@‹2-´¡xhQ¿ÄÑÆ%@‹ÖÑpLâ0ä5"ðµ£EãÖsg/-Š×ùË(C€•PvÄÐZ´¦Öw݇ ÜZ't²[÷üYÓñiQ_•Ùqê%@‹2-´¡xhQ½ÅJä Т5õ‡ë>,qX7áõ?ðµ£Ek¬-S#@‹âuþ2Ê ES+q±ó¥Eëë~×zäÀ­uâ&»µNžõœÅ~^È® Z”i¡ Å#@‹º”ûÔB€­¯E\둉ÃZñ®õà¯-ª¥ò‹s}hQ¼Î_F´h}ÅÄ‘‡'@‹ÖÚ¯ïà[ëMvë›9k=2-¾†;cihQ¦…6-*­‰g´h­]âúNÖÇvÝG|íhÑ*ÕØkc Eñ:eТ…K3´hÝ=𚎸µNÄd·¦i³îÃÒ"OhQ¦…6-Rô" Eën×t|â°&°6ðµ£E‘žrYŽ-Š×ùË(C€-W(¼ªL´h€6x§ÜZ'\²[Çœà˜´¨Ì:/ª! ТL m(Z4dyq®u EôŠë8qXÕaŽøÚÑ¢uWlÇ/Ÿ-Š×ùË(C€•_”DØ-¦îý,[ëÄJv½O˜aH‹º×^{F%@‹2-´¡xhQÔR6ͼhÑ0íbïg!½#쀯-šæsDÖóhQ¼Î_F´hþö·\;Z4X3Üï‰·Ö ”ìú-ƒÕþDÿêhQ¦…6-Z½h8B9hÑ`c¿'"ýòòh¯-*§¶‹d,´(^ç/£ Z4V©qÞu ECöÃ=ž+pk(ɮǩ2ä¡hÑ:ª´cÖE€eZhCñТº ”hóhÑMcç"=ÂøP¯-Ê×[£S @‹âuþ2Ê ES(kÓÉ‘ Ü÷uºÀ­uB$»¾æÉÀÇ¡EÓyvÈt+´(ÓBŠG€mU l¯‘-¸oìëtÄ¡/’Ã'ðµ£E5>ÄÜ/Z¯ó—Q†-ê·€8Ú¸hÑð]q/g ÜZ'>²ëe’ Z4n=wöТL m(ZTBÙC_hÑð­c/g$½`å ¯-ê«2;N½hQ¼Î_F´¨Þb%òhÑ(ñê' ÜZ'8²[}†ŒrZ´±ÆÚ25´(ÓBŠG€M­ÄÅΗÒ=®~Râ°:ñŽøÚÑ¢ØÏ Ùu!@‹âuþ2Ê E]Ê‚}j!@‹ÆêW´(^ç/£ Z´¾bâÈàEevÎgŒ*pkr—Ý'@™;Тák¸3–F€eZhCñТÒJxV!@‹Êl/Ïq8#¢bw|íhÑ*ÕØkc Eñ:eТ…K3´¨Øæ9XàÖ:%.»üÕ/v”y² @‹2-´¡xh‘¢‰-*¶ÃÌFò|J |íhQ¤§ƒ\–#@‹âuþ2Ê EË ¯*“-*¹ÎĸµNYË.séK¢EeÖyQ I€eZhCñТ!Ë‹s­›-*¹ÉÌÄF2p  |íhѺ+¶ã—O€Åëüe”!@‹Ê/J"ìN€ÞBo^àÖ:¥,»­®{áÛiQ÷ÚkϨhQ¦…6-ŠZʦ™-*¼ÏÜ*<â°™ò·¾v´hšÏYÏ Eñ:eТùÛßríhQù]ô¦n­S¾²Ûô¢—¿‘ÕþDÿêhQ¦…6-Z½h8B9hQù­æ¦‡M±T±1ðµ£EåÔv‘ŒE€Åëüe”!@‹Æ*5λ´¨ŠFzc[딬ì6^ñ*¶Ð¢uTiǬ‹-ʴІâ Eu(Ñæ Т*ºÍA‡LjÙøÚÑ¢|½5:´(^ç/£ Z4…²6iQ-½t+ÎÀ­uÊTv­Ë]Ë*-šÎ³C¦[ E™ÚP<´h«R`{hQ- g+NâÐRÑjàkG‹j| ˆ¹_´(^ç/£ ZÔoq´q ТŠÚéùP·Ö)MÙÍ_늖iѸõÜÙK @‹2-´¡xhQ eG } Eõœó¡‡yu-¾v´¨¯Êì8õ Eñ:eТz‹•È7 EuuÔM´[ë”£ìš ]×-ÚXcm™Z”i¡ Å#@‹¦VâbçK‹êj;›h‰Cƒ¢º…À׎Å~^È® Z¯ó—Q†-êRìS ZT]S= 8pk”]¥Ó’ÕRùŹ>´(ÓBŠG€­¯˜8òðhQ¥ý'q¨ôÂÅ–>Z4| wÆÒТx¿Œ2hQi%H<« E•v×´¨Ò G‹V©W^‹@ùhQ¦…6-*¿(‰°;ZTiwM‹*½p´¨{u²'5 Eñ:eТË”˜·"@‹*í®iQ¥ŽmU‹lG Z”i¡ Å#@‹b.YÌТJ»kZTé…£Ej/± Тx¿Œ2hQì‚¶1»Û=–Ü!äÿ~øÌïhQ¥Ý5-ªôÂÑ¢5Ö" E™ÚP<´(Rùê’ q¨´ÿ$•^¸Øâ;»T-»Uû ˜-Š×ùË(C€®f›¦F‹*í®iQ¥.¶8ÄÎŽmú±qRhQ¦…6-šT}KÉÒ¢J»kZTé…‹-±³£ES{>Êw#Z¯ó—Q†-ÚXbo¡E•v×´¨Ò [bgG‹b? e×…-ʴІâ E]ÊB¤}hQ¥Ý5-ªôÂŇØÙÑ¢HÏ>¹,G€Åëüe”!@‹–+õ¾ŠUÚ]Ó¢J/\lqˆ-ª÷I'ò¾ТL m(ZÔWé¨å8´¨ÒîšUzáb‹CììhQ-Ï5q®-Š×ùË(C€­¯˜”ydZTiwM‹*½p±Å!vv´¨Ì§˜¨†$@‹2-´¡xhÑ奄sÑ¢J»kZTé…‹-±³£E%<³Ä0.Z¯ó—Q†-·à vZTiwM‹*½p±Å!vv´hø'”3–F€eZhCñТÒJкã¡E•v×´¨Ò [bgG‹ÖýŽV#Z”i¡ Bà׿þõ¥—^zñÅ_tÑEßþö·?øàƒYÇŽÛµkWÚ~ÅW?~¼‰íÝwßÝ¿Úyûöíwß}w³}ÓZTc™Z%fZTiwM‹*½p±Å!vvŸ½ç—«[¯E Z´iólãˆÞzë­·ß~;ð‡?ü!ÉÎ<–Ó– .¸àðáÃiùùçŸOrôÎ;ïÌ‚ü誫®ší3Úøÿ´(@ÕZ(ZTiwM‹*½p±Å!vv馻íÑc©f†ü_Jm¡g‡§I€mìœm)‡ÀM7ÝtË-·¤xzè¡ôRØ 7ÜððçÕS§N}öÙÍ›G?þø5×\Óì¶qM­ÐÑ¢J»kZTé…‹-±³‹}Ó¥gÁÔò]‚-ÚØ9ÛRO~ò“³w‹n¿ýöo¼1M×sÏ=÷É'Ÿ¼óÎ;Ó–ç /¼pÖYgòñÿ÷_RžYHéw¹/¿üò$D»wïn>\—†æÿÝ¢C‡åã§E+VŒê^N‹*mcˆC¥.¶8ÄÎ.öMG‹ª{|0-ÊwÑFƒ E£Ô™OJ‹*í®cwh²«tZÒ¢z/-ñA\Ñ©iQ°¶_:y´¨¢êÔK¨´¨Ò6†8Tzáb‹Cììbßt´¨—GjøƒÐ¢|m4Z¾¦µ¤E•v×±;4ÙU:-iQ½ŽµŽV7%@‹‚µýÒÉ E›ÖÀiQ¥m q¨ôÂŇØÙžéhQà}©Ñ¢|m4ZÔcõ¨âP´¨Òî:v‡&»J§%-ª÷ÂÑ¢*Ù£I‹‚µýÒÉ E£×œ E•¶1Ä¡Ò [bgû¦£E?|+=-ÊwÑFƒ E•Vª¥Ã¦E•v×±;4ÙU:-iQ½Ž-ýÔ iQ°¶_:y´hRõ-%K‹*mcˆC¥.¶8ÄÎ.öMG‹¦öô_._Z”ï¢#@‹–+õ¾ŠUÚ]ÇîÐdWé´¤Eõ^8ZTïs|ÈÈiQ°¶_:y´hÈòR¹hQ¥m q¨ôÂŇØÙžéhQ Oäòc Eù.Úh0´¨ü¢Ôo„´¨Òî:v‡&»J§%-ª÷ÂÑ¢~Ÿ­QF‹‚µýÒÉ EQKÙVyÑ¢JÛâPé…‹-±³‹}ÓÑ¢­ž’¶Ï Eù.Úh0´hþöŸÂ2-ª´»ŽÝ¡É®ÒiI‹ê½p´h OüÕs¤EÁÚ~éä ТՋF]G E•¶1Ä¡Ò [bgû¦£Eu=»ÇŠ–å»h£ÁТ±JÍXç¥E•v×±;4ÙU:-iQ½Žõ®ë¼´(XÛ/<ZTWZ=ZZTiC*½p±Å!vv±o:Z´úót G Eù.Úh0´h em>GZTiw»C“]¥Ó’Õ{áhÑü“ÑòVhQ°¶_:y´h«Ru;-ª´!•^¸Øâ;»Ø7-Šú”ï7/Z”ï¢#@‹ú- åUÚ]ÇîÐdWé´¤Eõ^8ZTþóº„iQ°¶_:y´¨„²3d ´¨Ò6†8Tzáb‹Cììbßt´hÈ'o½ç¢Eù.Úh0´¨Þbµ\ä´¨Òî:v‡&»J§%-ª÷ÂѢ垡S{- ÖöK'O€M­ÄÑ¢JÛâPé…‹-±³‹}ÓÑ¢©=ý—Ë—å»h£ÁТå E½¯¢E•v×±;4ÙU:-iQ½ŽÕû2rZ¬í—Nž-²¼”p.ZTiC*½p±Å!vv±o:ZT¹ühQ¾‹6Œ-*¿(õ!-ª´»ŽÝ¡É®ÒiI‹ê½p´¨ßgkԣѢ`m¿tòhQÔR¶U^´¨Ò6†8Tzáb‹Cììbßt´h«§¤íóhQ¾‹6Œ-š¿ý§°L‹*í®cwh²«tZÒ¢z/-šÂõiQ°¶_:y´hõ¢Q×hQ¥m q¨ôÂŇØÙžéhQ]Ïî±¢¥Eù.Úh0´h¬R3ÖyiQ¥ÝuìMv•NKZTï…£Ec=…ë:/- ÖöK'O€ÕU V–UÚÆ‡J/\lqˆ]웎­þ<ÂhQ¾‹6Œ-šBY›Ï‘UÚ]ÇîÐdWé´¤Eõ^8Z4ÿd´¼Z¬í—Nž-ÚªDÝN‹*mcˆC¥.¶8ÄÎ.öMG‹¢>åûÍ‹å»h£ÁТ~ HùG£E•v×±;4ÙU:-iQ½Ž•ÿ¼.!BZ¬í—Nž-*¡ì -ª´!•^¸Øâ;»Ø7-òÉ[ï¹hQ¾‹6Œ-ª·X-9-ª´»ŽÝ¡É®ÒiI‹ê½p´h¹gèÔ^E‹‚µýÒÉ ES+q´¨Ò6†8Tzáb‹Cììbßt´hjOÿåò¥Eù.Úh0´h¹BQï«hQ¥ÝuìMv•NKZTï…£Eõ>LJŒœkû¥“'@‹†,/%œ‹UÚÆ‡J/\lqˆ]웎•ðD.?Z”ï¢#@‹Ê/JýFH‹*í®cwh²«tZÒ¢z/-ê÷Ùõh´(XÛ/<Zµ”m•-ª´!•^¸Øâ;»Ø7-Úê)iû<Z”ï¢#@‹æoÿ),Ó¢J»ëØšì*–´¨Þ G‹¦ðÄ_=GZ¬í—Nž-Z½hÔuZTiC*½p±Å!vv±o:ZT׳{¬hiQ¾‹6Œ-«ÔŒu^ZTiw»C“]¥Ó’Õ{áhÑXOáºÎK‹‚µýÒÉ Eu¨Õ£¥E•¶1Ä¡Ò [bgû¦£E«?O§pZ”ï¢#@‹¦PÖæs¤E•v×±;4ÙU:-iQ½ŽÍ?-oE€kû¥“'@‹¶*Q·Ó¢JÛâPé…‹-±³‹}ÓÑ¢¨Où~ó¢Eù.Úh0´¨ßRþÑhQ¥ÝuìMv•NKZTï…£Eå?¯Kˆkû¥“'@‹J(;CÆ@‹*mcˆC¥.¶8ÄÎ.öMG‹†|òÖ{.Z”ï¢#@‹ê-VËEN‹*í®cwh²«tZÒ¢z/-Zî:µWÑ¢`m¿tòhÑÔJ-ª´!•^¸Øâ;»Ø7-šÚÓ¹|iQ¾‹6Œ-Z®PÔû*ZTiw»C“]¥Ó’Õ{áhQ½Ïñ!#§EÁÚ~éä Т!ËK ç¢E•¶1Ä¡Ò [bgû¦ûì=¿,á‘$†Â Т|m4ZTxEê=èuh•^¸Øâ;;7]½7-ÚØÛ,·…kû¥“'@‹6 âPé£PSé…‹ÝZËδ,“@ì‚ùÙ{~¹ñánËhQ¾‹6Œ-ÚX%hQ™ñ3Fû)/»3N€bwp튽4ùÀ\¸<Ÿ’GÓµ üÁ”ÚÆÖeM[hQ°¶_:y´hc%¡E%?ì2±éa2p rí ¿@™ð_»À©¥ *»Ì¬.|hÈÒ¢|m4ZD‹ ¯ÿÝÃó”ïΪ´=]»Ò®H÷x_»À©¥ë+»î“¼´=iQ°V\:å E´¨´‚¿t<žòK£ý…®Ýè—`é_»À©¥Ë-»¥çüè/¤EåtÑ" F€Ñ¢Ñ+|_xÊ÷Erøã¸vÃ3ï댯]àÔÒÕ—]_·ÀðÇ¡EÁZqé”C€Ñ¢áKúšÎè)¿&°ÖµòšNøÚN-MÙ­éŽà°´¨œ.Z$ÁÐ"Z4@ æžòÃp^ÇY\»uP是]àÔÒÜÝ07È:ÎB‹‚µâÒ)‡-¢Eë(Ú£ÓS~콜Եëã( |í§–¦ŠìF¹_z9)-*§‹I0´ˆõR¥K8ˆ§| Wa¹\»å¸•ðªÀ×.pjiæÈ®„Ûg¹hQ°V\:øÞ÷¾÷ñÿûßÞ{ï½­ÎH‹hÑre¹ÀWyÊxQ:†äÚuUàn¯]àÔÒD’]wSÇhÑV=­ílJà'?ùÉöíÛÿô§?}ðÁ·ÝvÛ׿þõMwKi-êX‡ËßÍS¾ük´U„®ÝVdÊßøÚN-Í+Ù•sm!-Úª§µM \}õÕßÿþ÷gCþóŸÿæoþæôéÓ›îI‹hÑV…·ºížòÕ]²&`×®AQÝBàk8µ4ÍdWݽÖL‹6mhmD`+çwÞ“O>yÓM7}âŸ8uêÔ…^øâ‹/nºóOúÓ‡~øþ›#pïû¾GBþï?~òSÙUze]»J/\ Ûµ«ôÚ¹p•^¸ð7]zŽÏõ,ë]L-bj7m mD úЇž}öÙ/ùËI‹þú׿îܹó7¿ùͦÁ'{J>½gä?@@©EL⦠¤ÔB`önQmæÝ¢f  € € €@$×\sÍ=÷Ü3ËèäÉ“™ïEÊZ. € € €@CàÑGMŸ{óÍ7ÏøKtÍK, € € €Á:t(ý³E_|ñþýû3ÿnQ°¬¥ƒ € € € € € € € € € € € € € € €Ì|ï{ßK¿½þ;pà@—ß^øÕ¯~õáxö’ôÿþóŸc“\”O¢‘þi³O~ò“ ÎöíÛûÛßâ3O`Ff6Ò¿ŸõùÏ~~4Þò¢óçí·ßNÿÎrú§Ä>ö±ýã?þãûï¿I+£E½ñÆ×]w]Bôw÷w?þxëhñVŸ~úéôO*lÛ¶­Kjï¾ûnú‹.º(Ÿ»ï¾»ËKì³¢Ó§OÿÇüÇ%—\ríµ×ȽK ñù×ý×4yÒý•¥­írüÚ÷YˆÏÏ~ö³ôC¾éçª.½ôÒ4‘jϽKü ñ™ðwÞI°ªËñíƒ@9~ò“Ÿ¤ø§?ý©û/u'-JÏèrRXk$Kðyá….¿üò×_=ö?ÿó?é¼ÖÇ=ø|æ¾þúë|ðÁù-Á–—àsë­·Þxãiæ¤ÇÊg>ó™Ô¢cÒJg D©›ýö·¿ŽóÇ?þ1™Ñ‹/¾Ø:f¤Õ·Þz몫®ºï¾û:jÑÁƒ÷ìÙ“ÊNò£ôÂÇG¢±i.‹"J¶ºé¦›î¸ãމhÑ¢|ÒŸf­'žxâCúÐK/½´)ö0å“þzœú¥”þk¯½vÎ9ç¼òÊ+aPlšÈ¢|fùÆ7¾ñ…/|!™õ¦Ç´b \}õÕßÿþ÷gá¥÷}ºü»®“Ò¢%ø¤?õÿâ¿(öŠ÷Ø|š~÷»ß¥¿&ÅÖÆ%ø$'J=ðŒÒí·ß~çw6ÄB.,è#ùÈïÿûx ‰dH2óI¥¬‹:uêì³Ï>~üøìµé­´éü «#¢†êC=4-š¥¼(ŸÙ«Ò{FGŽi ^X”Ozr%2éÏ2éï±4©-Ä'}Hf×®]Ï<óŒw‹€j!>Å4ûÓYš½é‘šjàÿôzìØ±dOé=¦Ý»w?õÔSµdº\œKðI­~úƒmú#IBšþ¦ûCPKði.Dú¨Oøù,Á'ým6ý‘ÿž{îI“糟ýlú7—b!–@tå•W&[LwÖ_ÿú×ô¼OúÓ!ÉÌ'Õ±'IoUŸuÖY'OžÜ¹sç¾}û^~ùå„wþ8—;"jТÅV i"%O³h«"m_hþ¤ÏÑ¥?Τg}úã^$™\ºóI•9Õäçž{.ý e*“@z‹üÙgŸMop¤Ù›zŒô0ýÍo~sÆPÓ›ªiŸô7É .¸ ö;ÈKðIÏ‘ù—IJJoµ§/ÎÜu×]gäYïKð™%›>dxþùç§ïÑÔ›{—È—à“ÞIŸ-L·äßÿýß§ÿŸÝk]ÎUé>K J“gïÞ½éëi—]vYB”>á_iîÝÃîØ“=z4iQª<;vìHvH º¼ÇÔ=Œ’÷숨I5(¶ZøÖ·¾•n´­Fƒm_tþ¤æ?}±(™QúB0›¦ÓOú´Cú¢z:-Ú”¤…˜ý©¶ ²Ë»EÍÎi!}BûÞ{ïßly >IOœ81ãðóŸÿ<½•ŒÉ|:Kð™½ü¶Ûnûæ7¿9¨Ë‹òIÚô>lzwFãŸÿùŸÓßüC’i’ZQóÂÙBjn§ð9±Ž=ÉìÝ¢æ—sÒ;é-bQW;"jÒ§E ŠMRO›þàþÏ2Mî‹ÎŸÙ Ó×gþýßÿ½9Hà…Ž|’$¦¿É¤÷ Zx>N-uéã:³ÓLîòÝ¢yéOIÍ÷ æ·‡Y^‚Ï 7ÜpèСôVû§>õ©046&²Ÿt¿üå/©þïÿþï ¶eQ>éËÎé¯ýé÷fÒ‡TÓ"Á˜´ÒYQëå_úÒ—Â3¥Ü±'™}·¨ù³Ìc=6¯ÏtDÔÌZԠظü:ýAoöÃAGCnYtþÌ |ñ‹_Œý«A͵îÈçþûïOmdz¾§ÿÒïQ¤¤…Øß nYˆA ýüfúø\úþ¦¿D—¾g”¾æÐúvCêÜÒÇíRúéKFáßA^‚ϯýë~ô£é³…é/ÿé'¡bˆn >iæ¤ïƒ|å+_‰qå³X”Oº ÓýøOÿôOé9’ä1ý)òë_ÿzþµ.Š(å›þ€3{Î>üðÃé͵ô“}µC8cü›ö$›ÖçôÅÆôתÄgöKtù¾|ØÑŒ6-J6BéMÆôÅá?üágœ–‘vè>þó?ÿsVÒŸ=ÓGy'ò†Zw>ͬH½ï54,TD ½µ‘níô#üé³èͧ/fñ'ñI kýÉè?øAÚ9½$ýzpógÉŠò]4ÔEù¤ã?òÈ#©¤:$5ÿ³ú¹èI+ÚQ>éÚ‰ÌÙ£"ùPå“„:}%íÜsÏM·Þ?üÃ?´nÉü¹*]Ñ¿ýÛ¿¥?ȤÿÒ[!ÍOÒUšûÃN=júskšémÄ´0ÿ¡ÜMëóü¿[”ÀžñøvXQúJH"™þ¦¾x•Âÿ’á¢|Ò“=aIøÙé‰`’dRX”Oúi÷T|R”þl¾þ$n‹òiP§Ñù@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@þ¿vèX`¿õ,vB 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ΰ|ç endstream endobj 8 0 obj 30785 endobj 10 0 obj << /Length 11 0 R /Type /XObject /Subtype /Image /Width 1117 /Height 817 /ColorSpace /DeviceGray /Interpolate true /BitsPerComponent 8 /Filter /FlateDecode >> stream xíÐà ê]á…PaÀ€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0p ó°E endstream endobj 11 0 obj 4003 endobj 12 0 obj << /Length 13 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >> stream x–wT×ÇßÌl/´]–"eé½·¤.½H•& ËîKYÖe°7D"ŠˆV$(bÀh(+¢Xì "J F•ÌÆõ÷;'ùýNÞw>ó}÷žwçÞûÎ(!a¬@¶P"Žô÷fÆÅ'0ñ½D€6p¸¹¢Ð(¿h€®@_63u’ñ_ àõ-€Z®[„3™éÿïC‘+K€ÂÑ;?—‹r!ÊYù‘LŸD™ž’)c#c1š ʪ2NûÄæú|bOó²…<ÔG–³ˆ—Í“qÊó¤|”‘”‹òü|”o ¬Ÿ%Í üez6Ÿ“ †"Ó%|n:ÊÖ(SÄÑ‘l”ç@ ¤}Å)_±„_€æ ;G´D,HK—0¹&Lgg3€ŸŸÅ—H,Â9ÜLŽ˜Çdçd‹8Â%|úfYP’Õ–‰ÙÑÆÙÑÑÂÖ-ÿçõ›Ÿ½þd½ýäñ2âÏžAŒž/Ú—Ø/ZN-¬)´6[¾h);h[€êÝ/šþ>ä híûê{²yI—HD.VVùùù–>×RVÐÏë:|öü{øêù ¢‚¡[£°R¡Fá„ ”"MÑF1L1[±Tñ°âeÅ'Jx%C%_%žR¡Ò¥óJ#4„¦GcÓ¸´u´:ÚÚ(G7¢Ò3è%ôïè½ôIe%e{ååååSÊC „aÈdd1ÊÇ·ïT4U¼Tø*›TšTT¦Uç¨zªòU‹U›Uoª¾ScªùªeªmUkS{ ŽQ7UPÏWߣ~A}b}Žëîœâ9ÇæÜÕ€5L5"5–iÐèјÒÔÒô×iîÔ<¯9¡ÅÐòÔÊЪÐ:­5®MÓv×hWhŸÑ~ÊTfz1³˜UÌ.椎†N€ŽTg¿N¯ÎŒ®‘î|ݵºÍºôHz,½T½ ½N½I}mýPýåúúw ˆ,ƒtƒÝÓ†F†±† Û Ÿ©-5j4ºoL5ö0^l\k|ÃgÂ2É4ÙmrÍ6u0M7­1í3ƒÍÍf»ÍúͱæÎæBóZóA Š…—EžE£Å°%Ã2Är­e›ås+}««­VÝV­¬³¬ë¬ïÙ(ÙÙ¬µé°ùÝÖÔ–k[c{ÃŽjçg·Ê®Ýî…½™=ß~ýmšC¨Ã‡N‡ŽNŽbÇ&Çq'}§d§]Nƒ,:+œUʺäŒuöv^å|Òù­‹£‹Äå˜Ëo®®™®‡]ŸÌ5šËŸ[7wÄM×ã¶ßmÈéžì¾Ï}ÈCǃãQëñÈSÏ“çYï9æeâ•áuÄë¹·µ·Ø»Å{šíÂ^Á>ëƒøøûûôú*ùÎ÷­ö}è§ë—æ×è7éïà¿Ìÿl6 8`kÀ` f 7°!p2È)hEPW0%8*¸:øQˆiˆ8¤# ÝzžÁ<á¼¶0¶-ìA¸Qøâð#pá5#m"—GvGÑ¢’¢G½ŽöŽ.‹¾7ßx¾t~gŒ|LbLCÌt¬OlyìPœUÜŠ¸«ñêñ‚øö|BLB}ÂÔßÛŒ&:$%ÞZh´°`áåEꋲJ’Oâ$OÆ&Ç&N~Ï ãÔr¦RSv¥LrÙÜÜgIsKÛ–6žî‘^™>!` ª/22öfLg†e̜͊ÍjÎ&d'gŸ* 3…]9Z99ý"3Q‘hh±Ëâí‹'ÅÁâú\(wan»„ŽþLõH¥ë¥Ãyîy5yoòcò( z–˜.Ù´dl©ßÒo—a–q—u.×Y¾fùð ¯ûWB+SVv®Ò[U¸jtµÿêCkHk2×ü´ÖzmùÚWëb×uj®.Y￾±H®H\4¸ÁuÃÞ˜‚½›ì6íÜô±˜W|¥Äº¤²ä})·ôÊ76ßT}3»9uso™cÙž-¸-Â-·¶zl=T®X¾´|d[è¶Ö fEqÅ«íIÛ/WÚWîÝAÚ!Ý1TRÕ¾Sç–ï«Ó«oÖx×4ïÒØµi×ônÞî=ž{šöjî-ÙûnŸ`ßíýþû[k k+àäx\S×ý-ëÛ†zõú’ú…‡Eêjpjh8¬q¸¬n”6ŽI§¾ökÎ×:úçöŸð8wÝçúÅ7®Þœw³ÿÖü[·‡nón?¹“uçÅݼ»3÷VßÇÞ/~ ð ò¡ÆÃÚŸM~nr:5ì3Üó(êѽîȳ_ry?Zø˜ú¸rL{¬á‰í““ã~ãמ.x:úLôlf¢èWÅ_w=7~þÃož¿õLÆM޾¿˜ý½ô¥Ú˃¯ì_uN…O=|ýzfºøÚ›CoYo»ßž›É_õÁäCÇÇà÷g³ggÿ˜óü endstream endobj 13 0 obj 2615 endobj 9 0 obj [ /ICCBased 12 0 R ] endobj 3 0 obj << /Type /Pages /MediaBox [0 0 804.3204 588.2988] /Count 1 /Kids [ 2 0 R ] >> endobj 14 0 obj << /Type /Catalog /Pages 3 0 R /Version /1.4 >> endobj 15 0 obj (Mac OS X 10.6.7 Quartz PDFContext) endobj 16 0 obj (D:20110615031649Z00'00') endobj 1 0 obj << /Producer 15 0 R /CreationDate 16 0 R /ModDate 16 0 R >> endobj xref 0 17 0000000000 65535 f 0000038629 00000 n 0000000178 00000 n 0000038378 00000 n 0000000022 00000 n 0000000160 00000 n 0000000292 00000 n 0000000381 00000 n 0000031365 00000 n 0000038342 00000 n 0000031386 00000 n 0000035582 00000 n 0000035603 00000 n 0000038321 00000 n 0000038471 00000 n 0000038535 00000 n 0000038587 00000 n trailer << /Size 17 /Root 14 0 R /Info 1 0 R /ID [ ] >> startxref 38704 %%EOF pymc-2.2+ds/docs/_images/ltrace.png000066400000000000000000000333641204033704200172470ustar00rootroot00000000000000‰PNG  IHDR]19vÌýsBIT|dˆ pHYsaa¨?§i IDATxœìݬÖõ}ÿÿÇiÎÅ9¶#¶ˆÝ öôTN뤙‰$¸Áت„&u,÷Ç–åÔsÃÌR“7“-ê·C 6HóJ¦0q³a¶>ëJlQbeBm{Éä£NR çòpvÎçד©Ý·Ó§‡·[bÂy¿^ïÃó¥1!wÞïëtŒ€ÕǦz€s‘èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( ºèœêx·çž{.O>ùd>œG}ô=÷ìÛ·/÷Ýw_~÷w7×]wÝÄõv»f³™ƒ¦ÑhdùòåY¹rå¤{÷ìÙ“'žx"£££Èš5kÒÛÛ[z&8ßxÒå,sêÔ©<þøã¹êª«ÞwO»ÝΣ>šË/¿ü]kÛ·oO»ÝÎÖ­[³iÓ¦<ûì³yúé§'Ö>œ‡~8wÜqG¶mÛ– äþûï/9 œÏD—³Ì¬Y³r×]wåÊ+¯|ß==öX®¾úê\tÑE“®ŒŒdïÞ½YµjU:;;ÓÝÝ+Vd÷îÝ{öìÙ“%K–¤¯¯/Iríµ×æÅ_Ì믿^s 8Oy½hš9zôhžþù¬_¿><ðÀ¤µãÇçÌ™3™;wnÖ­[—ÁÁÁüÎïüNŽ=:±çå—_ÎÕW_Gy$ÿò/ÿ’¿üË¿L___Ž=š9sæüÌßûÀyûí·ÓÓÓSq4þ›Ó§O§««ëgþÅö±åµ×^Ëþ᦯¯/F#­Vk"Œ´Z­ L|þþþ´Z­‰¯ÇÆÆrüøñô÷÷´‡€sœè2Ü}÷Ý“¾Þºuk>ùÉONüÈè3fdéÒ¥Ù¹sgn½õÖŒŽŽf×®]ùÒ—¾4qÏ5×\“ 6ä·~ë·òÉO~2O=õTÿÇÏs~>¢ËY¦ÕjåÎ;ïÌØØXÆÆÆrýõ×gΜ9Ù°aÃÿ¯û‡††Òl6³víÚ4,[¶,‹/žX¿ì²Ë²zõêÜ}÷ÝÍÀÀ@n¹å–ªãÀy«cü¿0¼ï}ï{9sæŒÏtøˆüô3]®¸âŠ©…ÿ…Mõç"Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.:§z`zyòÐk9tâÔTqV[pñ¬|yÁES=0ÅDàçrèÄ©|û‡oNõg=Ñðz@Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.:§z8[ýéOO|}üøñœ9s&sçÎͺuë²yóæÌ›7/GØóòË/gÞ¼yyä‘GróÍ7çäÉ“éëë›´øàD—ijdd$ÿôOÿ”ë®»nâÚððp’¤««+ãããéèèHWWWÚíöÄžÓ§O§««+IÞwðÁù Ýiêoþæo²hÑ¢,\¸pâÚÌ™3'~½eË–$I«Õšt½§§'###Y½zuV¯^$yûí·'í>8OºLCßüæ73>>žßÿýߟt½¯¯/F#­VkâZ«ÕÊÀÀÀÄ×ýýý“ÖÇÆÆrüøñô÷÷×çÑešùû¿ÿûœ8q"ôGô®µ3fdéÒ¥Ù¹sgFGGÓn·³k×®,[¶lbÏ5×\“ï~÷»yõÕW“$O=õT3gΜì p>ðzÑY¦ÕjåÎ;ïÌØØXÆÆÆrýõ×gΜ9Ù°aCŽ?ž‡~8^xaÖ®];qÏ]wÝ5M†††Òl6³víÚ4,[¶,‹/žØ{Ùe—eõêÕ¹ûî»3::šÜrË-ù9à\'ºœeæÍ›—|ð=×úúúòØcýÌû»»»³nݺŸ¹çšk®É5×\ó¿žøŸy½ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( ºèœêx·çž{.O>ùd>œG}tÒÚ‘#GÒl6óÖ[oeöìٹ馛2þü‰õv»f³™ƒ¦ÑhdùòåY¹rå¤ï±gÏž<ñÄÍÀÀ@Ö¬Y“ÞÞÞälp¾ð¤ËYæÔ©SyüñÇsÕUW½kíôéÓY¿~}V®\™mÛ¶åÆoÌÆ3<<<±gûöíi·ÛÙºuk6mÚ”gŸ}6O?ýôÄúáÇóðÃçŽ;îȶmÛ²`Á‚ÜÿýÉÙà|"ºœefÍš•»îº+W^yå»ÖöïߟÞÞÞ,Y²$I288˜ìß¿?I222’½{÷fÕªUéììLwwwV¬X‘Ý»wO|={ödÉ’%éëëK’\{íµyñÅóú믧€ó‡è2;v,—\rIžyæ™ åÀ™7o^Ž=š$9~üxΜ9“¹sçfݺuÙ¼yó¤õ$yùå—3oÞ¼<òÈ#¹ùæ›sòäÉôõõMÚ|p¢Ë42<<œ®®®tttd||<éêêJ»ÝžXO’®®®÷\OÞyE©««+IÞwðÁù ÝidæÌ™yã7²páÂìØ±#Iò /¤§§gbý§¶lÙ’$iµZ“®÷ôôddd$«W¯ÎêÕ«“$o¿ýö¤=ÀçI—i¤¿¿?¯¼òʤk­V+ýýýI’¾¾¾4´Z­I듾Ç]ËñãÇ'¾ðá]¦‘E‹åäɓٷo_’w~|ôK/½”E‹%If̘‘¥K—fçÎM»Ýή]»²lÙ²‰ïqÍ5×ä»ßýn^}õÕ$ÉSO=•ÁÁÁÌ™3ç£?œÃ¼^t–iµZ¹óÎ;366–±±±\ýõ™3gN6lØžžžÜ~ûíi6›y衇rÁä¶ÛnKww÷ÄýCCCi6›Y»vmF–-[–Å‹O¬_vÙeY½zuî¾ûŽf`` ·ÜrËTÎiããããS=ÓÃ÷¾÷½œ9s&—^zéTPâÿû?Góí¾9ÕcœÕÖþê¼¼ðOù÷ô?øÂg.Ì×|zªÇàðƒü F#W\qÅTÂÿ‚׋ ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€S=?¿o~ó›Ù½{wÆÆÆò¹Ï}.7ß|sz{{“$GŽI³ÙÌ[o½•Ù³g禛nÊüùó'îm·Ûi6›9xð`F–/_ž•+WNÕQàœåI—ifß¾}Ù»wo6lØx ŸøÄ'ò×ý×I’Ó§OgýúõY¹re¶mÛ–o¼17nÌðððÄýÛ·oO»ÝÎÖ­[³iÓ¦<ûì³yúé§§ê8pÎ]¦™“'O¦¿¿?½½½éèèÈç?ÿù¼ùæ›I’ýû÷§··7K–,I’ f`` û÷ïO’ŒŒŒdïÞ½YµjU:;;ÓÝÝ+Vd÷îÝSv8W‰.Ó̾ð…œ9s&;vìÈ?üÃ?ä[ßúV†††’$ÇŽË%—\’gžy&CCC9pà@æÍ›—£G&IŽ?ž3gÎdîܹY·n]6oÞœ[>}áÌ—¯}íkI’žžžÜ~ûíi6›y衇rÁä¶ÛnKww÷ÄýCCCi6›Y»vmF–-[–Å‹OÕqàœuèÄ©|û‡oNõg=Ñ€s™è2ÍtwwgÍš5Y³fÍ{®æÞ{ïý™÷¯[·®j<à?yá €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] tNõÔ{òÐk9tâÔTqVûâàǧzÎ1¢ ÀyàЉSùößœê1Îj—Ï5Õ#pŽñz@Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t(Ð9Õðóû·û·<ðÀyõÕW“$«V­Ê¿øÅ$É‘#GÒl6óÖ[oeöìٹ馛2þü‰{ÛívšÍf<˜F£‘åË—gåÊ•Sr8—‰.ÓÌÛo¿7æÆoÌå—_>q-INŸ>õë×ç†nÈ’%Kòýï?7nÌ}÷Ý—™3g&I¶oßžv»­[·ftt4÷ÜsO.ºè¢,Y²dÊÎç"¯M3ßùÎwò+¿ò+Á%Iººº’$û÷ïOooïD@ÌÀÀ@öïߟ$ÉÞ½{³jÕªtvv¦»»;+V¬ÈîÝ»?úƒÀ9Nt™f^xá…¼þúëùÚ×¾–[n¹%ßøÆ7òãÿ8IrìØ±\rÉ%yæ™g244”dÞ¼y9zôh’äøñã9sæLæÎ›uëÖeóæÍ“Ö€è2ÍüøÇ?NGGGþôOÿ4[¶lÉ/ýÒ/å¾ûîKòÎëE]]]éèèÈøøx:::ÒÕÕ•v»$NòΓ1ïµ|x|¦Ë4ÓÓÓ“ùóç§··7IòÛ¿ýÛùÖ·¾•S§N¥§§'o¼ñF.\˜;v$yçɘžžž$™ø\—$Ù²eK’¤ÕjMº|8<é2Í|ö³ŸÍóÏ??ñõøøx’¤³³3ýýýyå•W&íoµZéïïO’ôõõ¥Ñh¤ÕjMZø&€ó‹è2Í\}õÕ9zôhöíÛ—$ùçþç\~ùåéêêÊ¢E‹ròäɉµ#GŽä¥—^Ê¢E‹’$3fÌÈÒ¥K³sçÎŒŽŽ¦Ýng×®]Y¶lÙ”ÎU^/šf~á~!wÜqGšÍf|ðÁÌ;7üÇœäWn¿ýö4›Í<ôÐC¹à‚ rÛm·¥»»{âþ¡¡¡4›Í¬]»6F#Ë–-ËâÅ‹§ê8pÎ]¦¡Ï|æ3ùú׿þžkƒƒƒ¹÷Þ{ß÷Þîîî¬[·®j4à?y½ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º]˜= àÜÖ9Õp~úô…3óä¡×rèÄ©©嬵àâYùò‚‹¦z þ—D¦Ì¡§òí¾9ÕcœÕD€éË3D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP sªàƒY¿~}8¿ú«¿ÊÇ?þñ$É‘#GÒl6óÖ[oeöìٹ馛2þü‰{ÚívšÍf<˜F£‘åË—gåÊ•Su8'yÒeÛ¿ÆÆÆ&];}útÖ¯_Ÿ•+WfÛ¶m¹ñƳqãÆ OìÙ¾}{Úív¶nÝšM›6åÙgŸÍÓO?ýQç4Ñešj·Ûyä‘Grã7Nº¾ÿþôööfÉ’%I’ÁÁÁ dÿþýI’‘‘‘ìÝ»7«V­Jgggº»»³bÅŠìÞ½û#?œËD—iêïþîïò¿ñ™;wî¤ëÇŽË%—\’gžy&CCC9pà@æÍ›—£G&IŽ?ž3gÎdîܹY·n]6oÞ‹-ÊÉ“'³oß¾$ïüøè—^z)‹-J’̘1#K—.ÍÎ;3::šv»]»veÙ²eSv&8yÒåÓÓÓ“Ûo¿=Íf3=ôP.¸à‚ÜvÛméîîžØ344”f³™µkצÑhdÙ²eY¼xñN çÑåðØcMúzpp0÷Þ{ïûîïîîκuëªÇ€óš×‹ ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP@t( º] ˆ.D€¢ @Ñ €èP sªø ž<ôZ85ÕcœÕ¾8øñ©ÎK¢ 0­:q*ßþá›S=ÆYíò¹³¦z8/y½ €èP@t( º] ˆ.D€¢ @Ñ €èP@t(Ð9Õðóyá…Òl63<<œ±±±\}õÕù½ßû½ttt$IŽ9’f³™·Þz+³gÏÎM7Ý”ùóçOÜßn·Ól6sðàÁ4,_¾<+W®œªãð3ô4ü)Àt&ºL3ýýý¹çž{ÒÓÓ“'NäÎ;ïÌ'>ñ‰|ñ‹_ÌéÓ§³~ýúÜpà Y²dI¾ÿýïgãÆ¹ï¾û2sæÌ$ÉöíÛÓn·³uëÖŒŽŽæž{îÉE]”%K–LñÉøï>}áÌöv~æK}}}ñIÎnÏÐß 4ÈçožÄD—~¨©©)mmm™?~×u­­­ijjúØÛMœ8±ôhP3|¦K?4f̘´´´t]>xð`Z[[3jÔ¨>œ j‹èÒM›6-›6mÊÒÙÙ™õë×gêÔ©©«sâTK¥³³³³¯‡ ÷­_¿>Ï<óL:;;3a„ÜtÓMÞ'U$ºàíEˆ.ˆ.øu5dݺuÙ´iS’ä¼óÎË 7Üp\ª»cÇŽ,]º4C‡íºîî»ïÎ)§œRõYkQO÷Ÿ$/¿ür~ñ‹_äðáÃ0`@,XÏ|æ3%Æ­9=ÝÿÂ… søðá®Ë­­­ùìg?›Å‹W}ÖZÔÓýðÁY¹re^}õÕ 0 —\rIfÍš•¼¦Ð]==ï½÷^zè¡ìÙ³'C† É7¿ùÍLž<¹Ô¸5çOúS6lØ;wfíÚµÇuÛÖÖÖ¬\¹2ýë_S__Ÿ¯~õ«¹úê« MZ»zr ÚÛÛ³eË–üú׿Έ#²dÉ’BSÖ®žìãÆyê©§ÒÖÖ–ÁƒçÚk¯Í”)S MZ›z²ÿíÛ·çg?ûYÚÚÚÒÔÔ”™3gæ²Ë.+4imêÉþ?täÈ‘ÜvÛmihhÈ}÷ÝWå ©Ñ¥ŸÛ¶m[6oÞœ»îº+C‡Íš5kòÈ#äÆo<®¯ó¹Ï}.ßýîw MY»ª±ÿ={öä±ÇË¢E‹2bĈ;v,>»{ª±ÿ{î¹ç_./[¶,_þò—«=jMªÆþ×®]›cÇŽeÅŠikkËÒ¥Kó›ßü&3gÎ,8yí¨Æ1xà2vìØÜqÇyÿý÷óýï?ŸúÔ§röÙgœ¼6>|8ëÖ­ËÅ_œ;w÷í׬Y“ÖÖÖ<øàƒiooÏÒ¥Ksúé§çâ‹/.0mmêé1øË_þ’W_}5^xaöìÙSýk\O÷ÿ•¯|%3fÌH]]]^zé¥,_¾F÷ß’¤¥¥å?ú÷ Nv;vìÈ‹/¾˜;ï¼³¯Gé— Ë.»,/¾øb~ÿûßçòË/ïë‘jÞþýûóä“OfÙ²e}= ÝàL—~n̘1iiiéº|ðàÁ´¶¶ö(˜;vÌ+ÍÝTýŸ{î¹ùóŸÿÜu¹³³Óþ»©Zßÿ‡ÊÖ­[}xëqêéþ÷ïߟwß}7\pA×uãÆKsssÕg­U%þøãÿø/Ç„2F•úúú9~---ùô§?݇SAïÛ³gO~øáÜqÇ]/Ò7><ãŽòþð‡?äÀ™?~æÌ™“ýèGÙ·o_æÌ™ã³9O@¢K?7mÚ´lÚ´)HgggÖ¯_Ÿ©S§þÛío½õV–,Y’üÛ×xï½÷rôèÑ$É믿ž×_Ýooé¦jìÿª«®ÊSO=•½{÷¦££#[·nͤI“zë.œÔª±ÿ$yúé§3iÒ¤œvÚi½1vÍèéþO=õÔœqÆùå/™ööö:t(¿ýíof{ªñ8xð`×¼­[·æÍ7ßÌŒ3zeþþà£v?hР\rÉ%ùÕ¯~•ööö´¶¶fãÆ™6mZMZ»>éÿÊú¸ý·´´ä¡‡ÊÂ… »~¡Õõqûûí·»þýß¾}{š››3yòäÞ±¦}Ôþg̘‘G}4«W¯ÎêÕ«³hÑ¢Œ92«W¯öâë Èéç¦L™’}ûöeÑ¢EéììÌ„ rÓM7ýÛßkmmíúоÿ× /¼7¦R©ä´ÓNË·¾õ­ 6¬7Æ?éUcÿãÇÏõ×_Ÿþð‡immÍù矟«¯¾º7Æ?éUcÿmmmyúé§³xñâÞ¹¦ôtÿ•J%‹-ÊOúÓÌ;7uuu™•J%çœsN¾óï8Ûè8ôtÿÿìÃÏöâÄTéô»¥ªÎÛ‹ ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ø?ýíK-^IEND®B`‚pymc-2.2+ds/docs/_images/metastable.pdf000066400000000000000000000141501204033704200200730ustar00rootroot00000000000000%PDF-1.4 %¬Ü «º 1 0 obj << /Type /Catalog /Pages 3 0 R >> endobj 2 0 obj << /CreationDate (D:20091014113421+01'00') /Producer (matplotlib pdf backend) /Creator (matplotlib 1.0.svn, http://matplotlib.sf.net) >> endobj 9 0 obj << /XObject 8 0 R /Pattern 6 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /ExtGState 5 0 R /Shading 7 0 R /Font 4 0 R >> endobj 11 0 obj << /Contents 10 0 R /Type /Page /Resources 9 0 R /Parent 3 0 R /MediaBox [ 0 0 480 432 ] >> endobj 10 0 obj << /Filter /FlateDecode /Length 12 0 R >> stream xœ¥šK޹q„÷<OPâ3Inh!{á†AŒ7¾¾¿HV[ó³],AšéŽf‹ŒŒŒL2Ç?‡süÿû]H1Å¿Æ6õÏ¿ø?[-üÛ?þÉïÃoÃ/Ñô««Ä:ø_ë—ÅÿúÏøïño¯Qóh‰ÉøôÒ¼Rª«¯l}„jõ²^ëä™Ëߟ Ó_9•Ñ;Ó·yåšÖb†CãëWç©iè Ë{弘fá+/Wjf™5]åïW“õ²RLø´«ôl#5xÿàù¬x_Ó¬;žøþÒøeŸæ?V>4Óò³*×b7ªißB¼nµ•¾^oL¯vÃzãó'`«˜êÕñ|¥ÑrâÃ× Â'boVÓòj=;“é«ÔÞ}üìýH÷ç³ :¬Å‚ïñ5Á”ÅÀéx¾ÌS«yΨéå¹riüèó«ýb  ÃÒäTš«±(Ó?®¬ Þ•Éløs-NMsôbm/Üê¡[Pµí¬­MPÿ¸Ìäò²Ê3ÄhöVð¸<«‡|Ù,R3yöd>g˜|Ì›©°¼ÞÚUøÂ¦ÝÙ8« YOhì}g¶lò`w—¦_ÖºäèBš¯%ɹµ>6nWV´ ^Êû›¨^ra¢Ëáz5&S!|õë5áIè9š ”Ê—'ÿ8âjG0™ ð¹®a ¥lÚù*bòEðBS&”ÚÔ¬$S)L¾[VÜáL3ó´e¼¼¤‹ø±œùyÜãGaYŸÁÚävÁ!â>u­MÐë-¥F\uf§(ƒ`mÝ3O3Whi•"Ârc“ˆÊþõÝ™=ž‰ )A«EšV­tÇQ e©e£ñcº&+˜ëfŽO–‚i²pºÌ.ÅiÚ¶±|ÛŠ-ÊU3_’.6Œÿ¦V6n×\ÐF¬­¡ »´hˆmÎg‹˜Éh<)#_'׿tW%¢Š$."° H”ç˜þøR®14٤χ˄22Ìw|rµ³vHãÙçÙQ¬•—¿¾’¼¿÷Yãa˰Êï<äXÒÙ‹4R VÂ/¶h9ëÛ¸ Ùd;ÏÎÃ?½ùô;¸Ð\¦g¼¿U­·±X¨-)R$K„šAám²=Eóù™1ž€”Œ ç³|D_¸nÅÊ< `;4=‚ŸÔ1nED“YUìe8>6ÍRùÛÉ÷1œ¤7X^^᳓ާ4Sg>¯‰˜å!)î|1˜}™–Efâ½ÌSùÈà Vðñ,&³GR cƒ)Û]îtÕŸqqgj/ *CýõYa©§ObÓ£h~–‰w¶ÔÃàòPà©7è–ïl‹Ú'¥¯F:Lp[rÈf¤zgk4àµuSäÝÑ|Ç œhñØ ®58s:yÜ$TÖ{iy\a';+öµöÀɇ Œÿ3"½iF°úx-?:EZf¾¤1¤ “2vÈä¸qüáG8Wša¤T‘d`’øMb&v<³&ðAO«šo–KQ¤¾¬y"àÈÔàR6”‘1ÅÓLâ僟ø-I¯h dqP0¥6MbûR$ϯ²ÕoJ²Iïd™ñ‹ÄóƒÂ’R6Ù°‹sÍd¸P}lÊÖ»t™”ØŒTADå‹ï@ªs*ˆd2ÈÕå‰8)êœv¤9bá!»8fmZõñC9”À äXÜRÀPþ|¿Ÿ“CQɽ®‡†…èJÄžJP8¼ª¾Ÿ4$~a¶¿!©3¦Ü¤§dùL´áSöûY#a4‰Š¹^c ÀÒô4O F2³bÁjAZ‚Ø4¾ðýD ÝÒŽ9fª¬™]1 ûOZJŽ“´ˆä’ª§2B}Æ--?ú“‰_Lq/+Ý, ’äxC°P#„YoÏÚM½Tåá‚C²›SÉVÙ.SrH„fX£IɦGbØ›Á\Xÿú$i#zDf íµNt¬é›Ye8È8ÍÇK@I–µ*‡ºbáæäË]ébM…;£Ã Â- Y“_|ü”˜¢å̬ËF)ܼܳÉí*¼=UÁzä%ûÊT6ùžp©Ît"¦'œHA ¡!ⳡ¼´±, S·,}hq“Õ%ÒH7eãì”ì5Çd0¹M/ùÒd–Þx?òUÈDUÄ1Y&ÂY8ê‡Ùt±í Ü*íò¿n?Éá—\y’Ø3>xÔ@ÌÅE''2 I“X#! +Èæ ?ÙÝšãþ YÑϲü5N¯$^64;4 BU•*pH!D<`=¦ñjHY`Á‘®Š•ЂÃä]XKÌ*fE¥‰{´\<º·òVÍ€ä`D L,1¶¾`¨X{ôHÕÛߥ”JTñÎp<éJdùŲÀ&H’arMË>y7ñØîeEËdOp9à諞Th8»B†å›˜ŸŽ¢ŽÊÞÅí¡v©fù å$aä%ó~=9…|5¨“„Z†Ãbß5ÂÝX$Á§—™-b„Ïmrýá“•>Ûѵ\ðÄœÖ&ËH®ÓgÿQn"©škß„¥#M¹¥OŠAZq›ïXú d¶ñHß:0•˜½$WÙ÷‘©”ÂöòSöÑŸ*„-a[¨E(Ö|M>5L|bwm4ÓOT¶÷2¶l=ä3#´ãXtÏŸêË£I’è…Ô|Š7óÎÊInTU̧ö«ºe‘¾Ü¾IrS„îPvù&óL6¶(Ó•äfèH\2Ž^º+w<óY˜zkÊ+û’i“ "Ø¢Úïê#ë’o ik—‹—²6UŽ 0Š>×*oÈXWÏú¨e¦ìõM‡i”ÕlBÞEJ–¥$ l€óxjÒÑòbÑaèc=-"7` ô|#Ìi·c!°ª’o2 Rý½)nû”ÃÔ¶¨pa”ÿGƒv Ká Wà¦8_°3XúRË]áÃ?Ô©yš…ïEZËmÖ ¡-ešì¼ï|„QTì¢>¹—ñ¿žÿˆ©E­ëÆ«,6\ÏL^TW2#kÕñÀÉ¿YÐÓÕãÿÃŒþö¿Ræâþ·5ö¿ùCŠÿò÷ðÇÿÇ#Ù¿k~9Ýâ‘xdÖ}¨rPÕ½¼ÕƒL)äà.Ó|àUÝ –™u[JhQÔPô’ N4hR¤*­¸ˆó2µµÚPçBuÂÏø¦£j\4e{î:Uƒ·ÊBá‰cr¦Î¿ÿ{¹Ðù?•”Û“yfèh…D_pob—Aût1.hEó÷©È/xpJ“öUúúÕ¹"¥ÁÈñ ÔIZjí¨»#¨³œF"ö?ÃA/OÈ‘^«ÃÂëR—ûñ÷·C’æJÞ!QQ†›º0¹Åœ¯ÇÇaÛ ÎpO견tšÜ©½àA}6mÆDÿl÷¶Ð΢„ªÄŸá ¥ä7äÑt78Dei6)kÅŸaFKGªôÝšL6«Å\Tþ¼à;Yœéý£[[RRç¨Îœñ ¨&—Rßa/½ä…²"CÒŒ/xP³«À驲woŒ—š ÉâV›Â°ŸpxÀÕS;YÈÌÊWo Q–S“Å?ñpâ¤H¤l?úfü³^<Õ/A†žãœŠ¼ ÞSV»9¨œdy²ŠßOœ½” $Hœû7ã•8MíÚwâÄ1ˆ j@ñ‹'®ŠG†Õ÷ûÉÓJè”Ãx8q<Þu©ÿ»S§’Ù²Œ±éjˆx8qž?ÙêÁµÉ¡Óµ)ºþþ€Ã«ù¤.$èrg­&oÇ"IÂ!Ý(:€¨.;TZälI¿Çÿ /êÒtL†JŽIG5äAµ³°%'X mÑ€ò¤ä͹vhÕIÉǧlQ©-ûÚ7D)iñõO<ž¸ú¢˜Z %ß{tê™ò™–x*ÅÝ;cƒ›ûÆŽ'¬iÇŽêxÇc7¹tð1ImåÇNÊ_ºß‘F^ßÿÄ™½S˜OEºû7ãO‡ ‹Nð÷a¤š2£²ó–î_ãáÀÕ]Ÿjâô6vô’öÈ#ºAPÜÒ|âáÄ»ÎÛ ¯Ž=z†®°”‰²'ûpõ”9:ƿǓF—~ÛYÝë¨2ÓüÒ¾î’Vò'n:Ï[SÕê7ÃÕľcÆíy(³•†ÕT<œ¸[®5àÿÜ~³¨Íh$P|„=ððÀUÕò¯¥ß7,ðûê_J f~àáÀõ8r”¸'6lñAæIæyÖ˜HÑÍž=çvŒòC‡!^Êx8ñ¤Ób3Ç7ã©Øæ¦Ì¡ÎgðÃX\FÎI§«'OœâÅFÕIþÛteÈ‘¦º©ã‰ÇWê1tµ ¿ ³É«&®r™åOÜÎx(,¸íå[¤.ÆöÀwùEZ$¸×ÏhP¿ÅB·Æ-Û™¢=ã]!ë\ñ÷žOLÚíîs|®XÀ…Æf¬;0Ðó6tT5 ueÀ³Ø&öçð¬«DÚU7öýûË[Œ[,»©+ðTÇ7¸÷|ûWÝQ Û9P–S&³X³ÄδƒêPŸ‡|—ˆ¡º[y“ºéŽ’sxÁÝëºZ:œ•Z¦®šÓðŽØÙð‚»šSÛ7±xßÖÓõ½‚rëÿJxÁ½P.Ûnª~ŽßôÐ5Nþ²Ü¹laýI}U~ƃ²A×%œFÜλéÚy|÷ŽYüï”ôM*ßÿ5KUÝw)ï6nºz”ts“/x¤‚DÏñ•:òÞçxM7mO_~ÚþÀ©ûª|ZVåñ‚ó~¦ÛÕ°¦,ñcåì7‹Kñ6/xȦãóEPû]¿Ôš.ö-‹/xÐ1®NÚ«ŸÞÆ}€š*éN7eg|Áƒ#OÝM½}ÝóÐíSc³ÿ/x Fãù…ü;ö¹´Ž‘j«¦[8¸˜ø>ˆ¶©k{?ã1ëb.&Vç¿öuò¬+Ìü=ï/¸Ï–©,y¿VxŽ?ñâz@^uT÷ÍxôféØ]í-{ŽÿÄ÷¹¯NzuTçô,8eŠ`vƒ? /¸_‰àÓr÷»Î޾¢¶€…<æ-ö*º“w)JÖ±!®ƒOÆÿŒûY¾U´ S°ïã&«±8Êl5¼à~k‚Ðì°§ìÃèçxÝ*ïÔ¾Šã·¼V—\‘û^p?³*> endobj 5 0 obj << >> endobj 6 0 obj << >> endobj 7 0 obj << >> endobj 8 0 obj << /M0 13 0 R >> endobj 13 0 obj << /Filter /FlateDecode /Subtype /Form /Length 139 /Type /XObject /BBox [ -3.25 -3.25 3.25 3.25 ] >> stream xœ}P¹ 1 ë5…¡Ço›UܤÉþmNMÎpi Ðâ’‘ ?Èe¬Öy™C)­Ía«‹V$-}ÚbáQ'jS¶jÝO7‚IÁåò½# ·¿¿ŸS Aؘˆ‡E̲‹âéQ™:¥À¸EœÉâ†ÞÎÖ@æ¡ç]ÝçäfŸ”J^ö /øŒî[ endstream endobj 3 0 obj << /Count 1 /Kids [ 11 0 R ] /Type /Pages >> endobj xref 0 14 0000000000 65535 f 0000000016 00000 n 0000000065 00000 n 0000005830 00000 n 0000005440 00000 n 0000005461 00000 n 0000005482 00000 n 0000005503 00000 n 0000005524 00000 n 0000000217 00000 n 0000000468 00000 n 0000000360 00000 n 0000005419 00000 n 0000005556 00000 n trailer << /Info 2 0 R /Root 1 0 R /Size 14 >> startxref 5890 %%EOF pymc-2.2+ds/docs/_images/metastable.png000066400000000000000000000275261204033704200201210ustar00rootroot00000000000000‰PNG  IHDR¾¤Á¢×CgAMAÙܲÚ IDATxœíÝi\SWÂðDÐR6µÖº€KßÖÀŠ@UTPQѺÐaª¶*¢2êX¥S´: E-Ó) £­» 0¨l²EZEQÁEd'ï‡;“É$r!ɹ7yþæ“›ð¨ÇssÏ=‡'‰(`B‡tîAu0†ê` Õ Àª€1T'c¨NÆPŒ¡:Cu0¦K:@GèèèàþQP×ÒÒÒÆœ¬N‘H„êÕáñxm€vÆPŒ¡:Cu0†ê` Õ Àª€1T'c¨NÆPŒ¡:Cu0†ê` Õ Àª€1T'c¨NÆPŒ¡:Cu0†ê` Õ Àª€1T'c¨NÆPŒ¡:Cu0†ê` Õ Àª€1T'c¨NÆPŒ¡:Cu0†ê` Õ Àª€1T'c¨NÆPŒ¡:Cu0†ê` Õ Àª€1T'c¨NÆPŒ¡:Cu0†ê` Õ Àª€1T'c¨NÆPŒ¡:Cu0†ê` Õ Àª€1T'c¨NÆPŒ¡:Cu0†ê` Õ Àª€1T'c¨NÆPŒ¡:Cu0†ê` Õ Àª€1T'c¨NÆPŒ¡:Ó%ÚQYYYRRòðáÃÇ×ÕÕÕÕÕÕ×××É044ì!O¿~ýºwïNú7¡ix"‘ˆtÆx$‚T'pI]]Ý®]»† fhhXXX¸víZ]]œ9‘dnn®Õ‰ÿì€D"щ'6mÚdcc“••5xð`Ò‰€¢(ªÿþeee"‘HÛ6Þ@u¤¦¦nܸ‘nO{{{Òqà¿tttš››[ZZ´íÞVT'°Ú‹/¼¼¼Á®]»¾øâ mÚpB÷îÝkkkß}÷]ÒAÔ ßuK‰D¢ˆˆˆaƽ÷Þ{wïÞ]´hz“èMßH§P7Œ:nß¾½jÕªÆÆÆ¤¤$ÜIÉr•••Ú6ä¤0ê¶©­­Ý´i“ƒƒÃâÅ‹322Л,×ØØØÒÒ¢¯¯O:ˆº¡:E.\¸0lذGåçç¯^½gèì÷æÍ###Ò)À ;°Â“'Oþú׿ …ÂððpGGGÒq@Q?îÓ§é`Ô „‰D¢={öŒ9rĈwîÜAorKqqñ AƒH§ £N ©¸¸ø«¯¾êÒ¥KzzúG}D:0öàÁ\%¾]u1øä“O>ûì³äädô&G2„t 0êJKK—/_þòåËk×® :”tè¸ëׯÏ;—t 0êu;zôè˜1c&L˜™™‰Þä´–––¼¼<+++ÒAÀ¨Ôçùóç«V­úã?GM:tVAAA¿~ý´srF &gΜ9räÇœ““ƒÞÔ ©©©vvv¤SQ'¨Üëׯÿú׿fffž;wnüøñ¤ã€Ò$$$Ì›7t 20êÕÊÈÈ3fLÏž=oܸÞÔ$---IIINNN¤ƒQ'¨ŠH$ øñÇ#""°†æÉÍÍíß¿ÿûï¿O:¨NP‰—/_~ùå—¯^½ÊÉÉ0`é8 |QQQÚ9-‰†vP¾k×®=ÚÂÂâêÕ«èMMÅçó]]]I§ £NP&‘HôÃ?ìÙ³çðáÃ3fÌ T%77WGGg̘1¤ƒƒê¥)//_´hQ}}½P(ìÛ·/é8Ú¥²²2""¢ªªJÁ㌌ÜÝÝ;ö㢣£.\ر÷jT'(‡@ øâ‹/ÜÝÝ}||´m‡/6ˆˆˆðòòbú®7vàg555|X(’Â.¨NãùóçÎÎΖ––¡¡¡X‰åè IŠLNÃèó“’’<==ÍÌÌ:‘Q¡:AZQQÑ´iÓ–,Y¢ÈB@½ºä„$E&'‰Ppÿô¢¢¢Í›7w"¦fBuÂÿÈÉÉ™={ö÷ߥqØžÜ.žÏè깡¡á£G$ÿulm4:uêTƒÎäÔH¨Nø¯„„„Å‹>sž9JrÚE¦Í‹}ýõ×ÖÖÖ×®]SN>Ó©õ:E"QAAANNNCCƒ²ú?ÞÝÝýÂ… èM %&&fffNœ8‘töêxu†††2dÇŽ¾¾¾C‡ÍÍÍUb,P›3gά\¹2!!ÁÚÚšt`…W¯^-]º4<<¼k×®¤³°WGNØkkk,XpãÆ„„ú¦æåË—/Z´H(vëÖMÙ A…¢££×¬Y“€KÜ%œª©àÂt§OŸ0`À•+W˜ÎÕ."†gÏžÍãñ.]º$~òܹsEùùù1ý´Žé@luêÔ©Þ½{߸qƒtè”íÛ·«´"Hÿ h·d:ׯ_çéééèè(~rÀ€E?~ëÖ­Jü;Õ9yòä×_””„ŸN‘݃ií^a¯¨¨8pàÀÒ¥K{÷îM?ÓÆÒÈÚŽQ'%%QejjZ]]-ù|YYEQ:::¯_¿f\ïÌ1 RŽ=Ú§OŸÛ·o“jEO·oß.÷Õææf{{{ícÊj·d\&zûöíŠ+(Šrww—Ú\¡±±‘¢¨–––{÷î)­ÔA5222–.]zéÒ¥áÇ“Î,âïﯯ¯¿aÃÒA¸Á ûÑ£G‹‹‹uttÖ¬Y#õRyy9ýàÕ«WJ‹*””äè蘙™‰ót”››»{÷îÜÜ\L€WƒQgHHEQ...”z‰>a§(ª¥¥EIÁ@ùrssÝÜÜÆG: °Hmmí_|±wï^lu©8E«3===//úÏý^R è½zõRV2P®{÷îÍš5+""bÚ´i¤³»x{{[[[ÿéO"„K=a¦(J__Ê”)²¯Š—AEu²Ó³gϦM›¶cÇŽ9sæÎB@]]f·&222!!!++‹tŽQhÔùâÅ >ŸOQÔĉå.?•žžNQ”žž^ß¾}•›:¯ªªjúôé+V¬Ð¶Y&oÞ¼ñðð;vl¯^½ÆŽëááQSSC:»dffz{{ÇÄÄ(¸v'ˆ)T‡ª¯¯§(ÊÉÉ©IÆ“'Oè ë–––zzzªÍ Õ××»¸¸888|÷Ýw¤³¨Õ“'O,--MMM÷îÝûâÅ‹½{÷šššŽ=šžwE=}útÁ‚‘‘‘ü1é,ܣР»x'¼o¿ýöÛo¿mí°ñãÇ+'(IKK‹››[ß¾}Û]™QÃ477÷ë×/$$dõêÕô3¶¶¶¶¶¶ƒþôÓOSRRtuµ}Ͱ†††ùóç{zzΚ5‹tNjÔ)‰®_¿NQT=îß¿_,cÁ‚ô‘S§NUmX`ÈÓÓ³¦¦æðáÃÚ6ã$00pâĉâÞ[½zu¯^½‚‚‚ˆ¤b•¿üå/ýúõÛ²e é \Õþ¿½………EM˜0aРA²Ð׈ú÷ï?sæL¹ŸP__¿sçN—O>ù¤siü177÷êÕ«Zø-Ê… Z+…5kÖøûûÿíoSs$V ÉÈÈÈÌÌ$„Ãگ΢¢"ú½½½ì«üñÇýû÷)ŠòððÜ:±©©éåË—=ááá………|ðªSm.]º”••¥W–oÞ¼9jÔ(ñ/SRRD"}ãö¨Q£nÞ¼I, <|ø0$$$==;uFûÕùâÅ ú¥¥¥ì«çÏŸ§(JWW—¾GS,;;{ݺufffÎÎÎ}ôQaa¡2Ò‚Bîß¿¿xñ⨨(Ìp¦Mš4‰táóùgÏž}úȾ$5 Õ*MMMEÙÚÚ:99‘ÎÂy ]&¢(ŠÇã‰×¡»|ù2=œ”ý>HY²d‰§§'é $9;;ÿüóÏr_Ú¹s§³³³šó°ACCÃñãÇ©V¾y¦Ú¯Î÷Þ{¢(Ùù¡¡¡EÙØØàÚ:KìܹóéÓ§ûöí#„° 6ܽ{—¾NRhhè•+W´pq ‘H´dÉ}}}ÒA4Gû'ìô™x÷îÝ¥ž/))9{ö¬žž^DD„¶Í}a§_ý5$$$++K /©KÑÕÕ}ûö-**Z¸p¡¥¥¥P(<{öìÙ³gKKKµpRçúõëËÊÊ,X°sçNÒY4Dû£N;;»nݺUVVJ=ïííÝØØø÷¿ÿ}ĈªÉ üþûïË–-‹ŠŠúàƒHga…>øàÍ›7UUUëÖ­ëի׺uë^¿~- µð^á]»v¥¤¤ÄÄÄhῪÓþ¥ÁäÉ“/\¸ðêÕ«=zÐOÆÄÄœ–-[¶hÑ¢ääd##£Ý»wãBK”––®]»6!!Aö:h³ëׯOŸ>=11ÑÚÚštÍÄàkc==½3f¨. 0EÏ8Ù¸q£••é,À"ùùùvvvéééøî[uìMlÔÐÐàííM:°ÈíÛ·ùåô¦Ja²WåççïÚµ+;;[GÿþÁ¿ÝºukÚ´i{öìÁFCª¦òÿ×ÕÔÔÐk/ݹs‡¾…:¯¾¾þÏþs`` ìµnÞ¼éää„ÞTU:_¼xAWWWÇãñúôésêÔ©Ó§OwëÖ­oß¾ô^FÐaß}÷ÝСC¿üòKÒA€-òòò¦OŸ,^zTJUÕÙ«W¯’’}¸–KNN>uê”–/: ’„BáôéÓ÷ïß?oÞ<ÒY´¾ëä˜ÚÚÚ+V:tH|gh¹œœggçððpíÜ)šT'ÇøùùÙØØ8::’¬››ëììáââB:‹vAurÉ;w8pûömÒA€ÒÓÓ?ûì³ÈÈHìj©~˜×Â"‘håÊ•;vìxÿý÷IgòbccçÌ™säÈô&¨NΈŒŒ‰DX(Š [¹re||ü´iÓHgÑR8a熚šš-[¶ÄÆÆ’äùøø9räÚµkC† !E{¡:¹á‡~prr;v,é @Rss³§§gnnnFF½ó ‚ê䀒’’LäÔrµµµnnnuuu)))ØB8|×É›6múúë¯ûõëG:óêÕ«)S¦ýúë¯èM6@u²Ý­[·’““½¼¼Hb>|hkkëààpäÈì/ĨN¶Û¶mÛ¦M›ÞyçÒA€Œ[·nÙÙÙ­[·î‡~ þ ÿ‚±Znnîõë×Oœ8A:qæÌOOO,êÁB¨NVûûßÿ¾eË­Ý•L›‰D"__߃ÆÇÇ[ZZ’ŽÒPìuãÆ›7oŠ7"íñæÍ›/¿ü²¬¬,;;»wïÞ¤ã€ø®“½~úé§uëÖá²€¶)..¶µµíÙ³§@ @o²ª“¥?~‡Û.µÍåË—Ç¿zõê°°°®]»’Ž­Âˆ†¥öìÙ³lÙ2###ÒA@}öíÛçççwêÔ)ÒY ¨N6ª­­ŒŒ¼qãé  &MMMžžž™™™ØoŠpÂÎF|>߯Æ·i‰gÏžM™2ååË—èM®@u²QXX˜‡‡é III–––NNNÑÑѸÒCpÂÎ:wïÞ½wïÞìÙ³IÕjnnöññ‰ˆˆ8qâ¾ÜäT'ë>|xùò嘓¤ÙžƒA¨*¤¦¦nذ¢¨ãÇcy„êd]]ÝŠŠ Jf@*E ¤¤¤ˆ¡)õÍ)tÞýû÷½½½333ýýýÿüç?ã ¤ :YÇãõîÝ›rJ H¥øøø¤¤¤ˆ¡©®˜Z¡¢¢bÇŽ‘‘‘^^^GŽéÖ­éDÀF˜œÄæææô¨HijjÚ·oßÇ\]]]PPðÝwß¡7¡5u²…™™λ Š‹‹óòò8p`RR’……é8Àv¨N•;y“¾ÞÚ[FuþüyÕGi™™™Û¶m{ôèÑž={f̘A:pªS%Ú˜¼Ù›ŸþYÁƒý]§@ ü% Ó•”½mÛ¶üüü­[·º»»c±TPªS%d'o¶v)\ ÐõW__ÿôéSJ¦e§d&'ÉÎU¢0]©M999>>>B¡pëÖ­çÏŸïÚµ+éDÀ1¨N’¼V.u)\rØ(Õzr{)zÎ<†Ÿ²òòò¶oßž““³yóæèèh===Ò‰€“PêfddD)Ö²>>›7o>}ú´¾¾>éDÀa¨Nu£¯‰ÏÜ%§¸ÇÇÇgffNœ8‘ÇãINÞ“ºÒo‘š!/ùEa¶<íÎ;Û¶mKMMõöö>~ü8¦Aç¡:ÕÍØØXr(5Å=33ÓØØØÊʪÝÑ%ý©·K~ EQ˜-õêÕŸ~ú)++ë›o¾9räH÷îÝI' )ñ¬“žžN:ç555qwwŸ9sfQQÑÆÑ› Du²Ž®®nAAé\UUU¶{÷î!C†lÛ¶möìÙ¸ýT£NÖqvv¾páéÜSRRBß”››#\\\Л "¨NÖ133Ã.ÞŒdgg»¹¹3FGGçæÍ›Ç޳´´$ 4NØÙhÖ¬YwïÞ}øð!õ¿÷tÒóáiôÌPÙ»‰ÄÏH&ùá3Ù³¦¦æÔ©S‘‘‘%%%6lÇæN  ¯Ä»IDAT6¨N6¢+àÌ™3‡’{O§äÌMÙY¢m¼DãôdÏëׯ‡‡‡óùüI“&y{{;;;ãJP3T§È.öÑÚ`PöxÉ#¥Œ&&&£F4hܪà¼N©yõœ^ùÕ«WG ûöíŠ+ úôéC:h+±-v@@€‚ÚÛ·o‰Dèü_\@@€H$Ú¾}»øciâgd_’{<ûµ´´$%%¹¹¹/Z´èòåˤqÿöIi·d0êT‚Öû}†~üùçŸWWW‹Gâ#eŒ“&MúùçŸ_¾|ùé§ŸN:U|Àœ9sÚX¿NcüñÇQQQaaaFFF!!!&&&¤CPNØ•Hî-=r—ÿ¼¡HòH©è'y<ž¯¯ïýû÷OŸ>-~žÓßT¶ëîÝ»|>?**ª¼¼|áÂ…|>ßÚÚšt(€ÿêT!¹¾¥®w‹Ÿ ¬¬¬lí£>þøcKKKGGGUeeÛ·oÓYQQ±páŸþÙÞÞ3P*ÑÚòH­]烈744lí'Nœøý÷ßÏœ9“¢¨††eç%éæÍ›tcÖÔÔ¸ºº†……? ,‡êT ©å‘(yß~J>O?¦wÄ”š’)yÙ}äÈ‘iii÷îÝ>|8ÕÞ¥|Öªªªº|ùrbbbbbb]]««ëáÇÇG:€¢Pí“»ÑÕæÜr©å‘(yß~J>O?644¬®®–;%SòqCCŸÏ—üÙÁ¬‘‘Ûf 544¤¥¥%&&&%%åççÛÙÙ9::?~wþ¡:Û×öFCJ¼bãîî>`À€ªª*¹—Ý%Oš4©  àÊ•+555oÞ¼±³³srrÝéAAAÊ Öyyyôè255uĈŽŽŽ»ví²³³ÃJÃÀi¨ÎöÉÎ=¢äÍ-WdO¡Ö.Ñ„B¡‚÷Gòx¼áÇ><:::???33³¼¼ÜÂÂbèСúúúUUUAAArbk1:Ir^\\œ+ÁÔÔÔÑÑqõêÕ§NÒ€»?þM=óK•KͱÛ[®ø”x æàà0eÊ“þýûÏ™3ÇÇÇ'&&¦´´TSÐ6L‰W…)ñj {QH–ÜËDô·¨ôÕ!Jb`Ûî »Ü™öŠsqq±²²bú®ºººŠŠŠJ UUUÏž=ëÒ¥K]]ŽŽÎ·ß~keeõÞ{ï1ýdÎAu*ìE!Yr/Š{“’˜T/wž|ÛiÐ¥zùÒ¥Kiiiƒ600xúôiee¥A÷îÝ »víúüùóÿallüöíÛ:õõõ >,)))))áñxæææfff¤˜™™YXXùúúN˜0aúôéÊøãàT'Iʽnii)yaÞ[|À€tŸ666VWW×þGqqñ;wèÇ ºòtéÒEWW×ÄÄÄÜÜÜØØXr7´ÚÚÚÂÂÂÂÂÂK—.©èûSP:NL\ã T'‹HnÎNÉÌëlcuNšä¹¿˜RvuW„Ú~t}¿tªS™dg€¶½®°ÔÄRíÓÚ¼ÎÖJJ¶7©ÿÌ•ŠÚ‰þ’t M€ê쩳ÔÜÜÜØØXÙc¬¬¬äžÕVVVÒÕÖîRü2‘ä«FFF=Ú½{·ìT|è Tgµv—º¬ØØXqŸvø¬vΜ97nlû2Mª%јª€êì ¹’¤F…m¯Å)y ýv¹o¤p’À>¨Î’;!IjT(;¯¨c?‹¾;ˆRl±¹·€r¡:ÕD|‚OÿRî™{—‰Ú8L‘W%ûTcvÄ Õ©&â|¹'õô1rŸT Ù>ÕìuæT Õ©¨ÊÊÊÀÀÀvï¶lí%ñ ¾Ü“zú¹OÊRü »øU©RfÛztœƒêT”Ü ç*ÕZE*~…]üª‚¥ Bu*ŠîͶç–+÷D»íŠ‚PÌ´=· %tHàŒ:™ic} ##£6vVQLÛ ÕÙ>ÉE:ÚžSÙÆnÀJÔZo‡€ÎCu¶ž’#w7`}H¼°ìÚq’GÊ£ Öö"ž4iÒœ9sè•>üÆ £Pí£§dVUUÉÝ ˜&yH‘›‚Ú¾çG‘.¥TUU …B¦ï€ŽAu*£Å1%ç3µÛ¹ŠÜš‰%‡ÔÕ©|ŒÇlc>“ì”ø6NØå®æI©àžN P,!÷ ½F'ýXî®p”¼Å™d×ëLIIÉÍÍ­¬¬Ä’Ê‚êl½mFÛ›—I~«Èhƒ3úC† )**’lOCCÃGI}k)ûÉmï\$> 666""K~(zöƒW.5Ç ý·¤"‘hûöíEmß¾]€œCµW2u2ãââbee%û¼Üµã¨Ö¿£”ûÆN¦jãgayåBu¶O¼Ôf‹Ë];Žjý;J¹ol·aÛ¨Eccã6®8I­3„êlŸÜ½4T¡Ý†mûÚ½â;Ía'n€NBuj¹;ÍÉÂÉ;@ç¡:5‡ÚFÇ€EçèSùdï"oc¦'®ÛpªS™è›‚¿÷\ê*NJƒêT&ww÷H^¨iw^'EQFFFX/€[PÊ${¡F‘IEôa* Ê…êT¦¶ï1oûm†¯DXÕ©mOGWp ÍvÃTv–@u*GkÓÑÝ¢ÞîW¢˜ÊÀÿüóøøøÃ‡Ó½IQÔܹsïÞ½ûÓO?‘ÍšÕ býúõqqq«W¯vtt?9`ÀŠ¢ÎŸ?O.h&œ°ƒ&HNNž:uª©©iIIÉ»ï¾+~¾¼¼üý÷ß×ÑÑyùò¥‰‰ Á„ a0êÎ{ûöíŠ+(Šrww—ìMŠ¢)Šjii¹wï™p ¡PÀyG-..ÖÑÑY³fÔKåååôƒW¯^©=h2T'p^HHEQ...”z©¬¬Œ~ÐÒÒ¢æT ÙPÀméééyyyE¹»»Ë¾ZPP@?èÕ«—Zc¦Cu·S¥¯¯?eÊÙW…B!ýÕ Ê…ê{ñâŸÏ§(jâĉ²¤§§S¥§§×·o_u‡†1Ã:T__OQ”““SSS“Ô«åååô…uKKK===ù@saÔ véÒ%úÁ·ß~ÛUF¿~ýèWÇO.#h&Œ:«D"Ñõë×)ŠêÑ£Gvv6Ç“:à›o¾‰ŽŽ¦(jêÔ©òFCuWVTTP5a„AƒÉ@_#êß¿ÿÌ™3¥^ÊÏÏOLLÌÏÏ700øè£œ¬†Ì 1pÂ\UTTD?°··—}õ?þ¸ÿ>EQ]ºt?ßÐаvíÚ5kÖÔ××ÏŸ?ßÌÌlß¾}C‡õôô¬­­UOrÐuW½xñ‚~`ii)û*½ä‡®®.}¦˜···¡¡aJJ ýË™3g®^½ÚÅÅ%44´²²òøñã*N £Nà*qu>\öÕððpŠ¢æÎ+9-©¤¤$""búôé’Góx¼'N\¼xQ•‘As :«èE¿x<^ïÞ½¥^º|ùraa!EQ«W¯–|>##£ººzòäÉ%%%’Ï:ÔÌÌŒ¢¨«W¯ª64h T'pÕ{ï½GQ”‰‰‰®®ô÷N¡¡¡EÙØØH][8p ŽŽNÏž={öì)õSSSŠ¢JKKU˜4¾ë®¢ÏÄ»wï.õ|IIÉÙ³gõôô"""¤f,7®¤¤ÄÈÈHêÖ£æææßÿ¢¨‘#Gª85hT'p•]·nÝ*++¥ž÷öönllôóó1b„ì»Äóä%>}úíÛ·ÆÆÆK–,QIVÐ88a®200˜Ÿ/Þ)³¸¸855uñâÅd³'à„´ŽH$¢Oê/\¸ 9'T <|ø\.àT'h—––ú®ö­[·Šï)jiiyóæÍ±cÇ}O Ú 'ì EZZZ–-[öË/¿´vÀ­[·,,,Ô 8 Õ Z䨱cm|•©««[SSƒ­8@¨NÆ0%€1T'c¨NÆPŒ¡:Cu0†ê` Õ Àª€±ÿË&…„öLHwIEND®B`‚pymc-2.2+ds/docs/_images/missing.pdf000066400000000000000000002126451204033704200174340ustar00rootroot00000000000000%PDF-1.3 %Äåòåë§ó ÐÄÆ 4 0 obj << /Length 5 0 R /Filter /FlateDecode >> stream x+TT(TÐH-JN-()MÌQ(Ê ˜è˜)¡‰±‘žs’sô=s \òP¯ endstream endobj 5 0 obj 61 endobj 2 0 obj << /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 720.072 432.0432] >> endobj 6 0 obj << /ProcSet [ /PDF /ImageB /ImageC /ImageI ] /XObject << /Im1 7 0 R >> >> endobj 7 0 obj << /Length 8 0 R /Type /XObject /Subtype /Image /Width 1000 /Height 600 /Interpolate true /ColorSpace 9 0 R /SMask 10 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream xì ÔUÕuï3Æím;r“Þ¦I“4iÚŽÞ&}$ƘWÛ4IÕÄGMŒÑD|+â 1øä%FE^E0ᡈJä¡Q$ˆ@„" Ф<’½ãZGÔ‘Ä὿ ÓåÚsÎ÷}ö9›ÿ7›¹×šk®µÿûìµþ{í¹æúÿOB@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€µ˜0aB¿~ý.¹ä’+V˜vÿþý/Úû7räHKyõÕW¯ºêªÓN;mðàÁ¯½öš%®]»ö¬½÷Þ{oíj¤!„€B@! „@øíoKéÿóþÏÙgŸmf.¾øâÈÞ´iÓ&Ožüæ›orœ1c†åöíÛwóæÍ¼à‚ 8FEt*„€B@! „@ôîÝû•W^Ár’·3;{÷n²8"# éj“&MZºtiM’M! „€å"ðúë¯oß¾ýW¿ú3TúB@„Ð3Ð?ÐK´¸›¢ çœsŽUzÙe—á&3nÜ8Zb)xÈìÙ³§W¯^7nD&qåÊ•£Gž5kÖ…^¸hÑ"œmr¬N/¼Å’…€(«ÓËé²”%B çêO!€æ°ë(T3fŒû·¿ñÆÔµ~ýzŸQ‡«¿üòËðù;wo_µj¼}ñâÅkòvuzÙ·Z9B@t!ÐúN¯ÐUÆ«„À‹/¾ÈO”i«ŸwÎߦç¶:üû×9­VK…@ç!@Ï@ÿ@/ÑÊNú}ë­·&k<óÌ3mæèСæ'³k×®Aƒ¡‰Ÿ KY­~2K–,I÷”NìôŸÎÇ?þñøÃÃDÉB@4R:=ï$šðyˆq™_;߆:åoÛ/^øÄåóí_§´Yíˆ=ý½DÍž¤Y ¬-…–Û»ÙüÝï~‡°uëVbÈXÊÌ™3§L™‚ÎÔ©S§OŸn‰D¡Ù²e Mej~ƒ­Óצïm~ßûÞ÷Žw¼ƒc‡¶¿Ó›}Ë-·Úˆc§_ˆÚŸŠ@ë;=ëÁt<Ðx饗ø@|ä‘GúxwÏ=÷0=ÅÚ®§žz* Â:‹·oÝ)ÞžÚß(Q4Öa„‘Á³Ý?Âá /CH8ù 7ܰcÇëʈýÈrTéÍoÇ!ç£ýhøðð9ÿ0¥‡2Q î¸ëGEóöM›6}æ3Ÿùó?ÿóÏ}îsÏ<óL~›i±òòu”눷;í/Tr³NïÉ'ŸlüS[(Þž KË6lØÀ±e5ª¢V"PÉN/‡*«,fϞݧOŸ£>š# iƽ÷ÞKH4‚ªñ9/§UEóö¦?nçž{îÅ//š·Ÿxâ‰ìÆHã/¿ürÂÍå_M"²t¾Žrñv‡¢ý…JaÍíôZÅÛ[¹jè ƒÈâÍÂÒqÅ?þøã?õ©O|ðÁ=ô%¦jòíàOÿôO?ðÁ¾ëƒÿë#Ç „¢ÌÔÇé§ŸþÉO~ò›ßü&1œ­83ÿó7£¦¢Ã?<ǦeEÇ¿ýÛ¿}þùçI䃢ÜðÔšôgög¨±É£e¥Öžz™Û¶m»òÊ+¹vv?¼ôÒK­xê…•v´,ÞÞA·¯’CXS:½o¢x{‰à«êÊ#PÉN¯ã¨©œƒ@S†°Ï~ö³D°aÏñ3Î8Ãy»=Ý|øÁ~àO:DzàÀ~jܘ²È×^{í7¾ñ KLÕ$‹ôþ—¾m¾ý¬³Î²­ën»í6¾/Xq˜ó;ßùNZe§ù6CäíÛ·èCºï¾ûÞÿþ÷³þyçΑNxJ“p SRkO½LæóO>ùd6” ‹§^Q¨ÐѲx{ݾJaMéôRoâO<ñßþÛ‹²è—˜Rˆ{ršäíTJOÕ›Ý.Ë^WÌ¥|ðƒd·¬zŒÐ©²1VŽ&£ÉÃ?œ£f±ùýs˜"YôJvz9$PY‡@χ0fŒéŠíI!pM’·‡óíôØù—‰>Ž=áÃEl‡o¼¾ú±}ÌÒ³4!ÉýÞî'ó‘|„Évû;äC¬¸Íx‡U gٌԌ·/]ºw6®ª‡·G~2©µSKò2ù(°víÚ¨©Wétî©x{Ý»JaÖéÝqÇM¿©¼½éµD¼ý—¿ü%¼}õêÕM¯¨¦ÁáÇÓ=â™ùÈ#üýßÿýˆ#jùÀ>ÏÛkZJáíS¦L!À2ǰ%’+ƒ@%;½Ž£¦jp=çíL•3ÙbÏ,|5Ÿ·£ö /àBƒ«ŒO¼_óÝk8ýÞMßcb*,žÔ¤8¼ý¢ï¼m¾ý¯ÿú¯©7ê4’-1…T›QYNƒ˜G€·ã3“TShR’·‡bÊ©— oO¸©WÖØÑ²x{ݾJaÖéMž<¹)7ÚÈ0Žs7ß|³§Ó}ýë_G™"ø‡øŽw¼Ëä⛇@¥ï}ï{Ü׎,^"˜ ÁÔ·¾õ-d7…€>«é©?ÆãŽ;γ¨‘É ª Ô¨Q£<=K8ì°Ãúõëg¹ø=yä‘YšžogŠ·JZKñpu'qHüýßÿ}^\çI¼+ñE¤l¯^½<ëÔSOýã?þcô)Å_4äjMøŒ;nܸècnÓk‘Á²¨d§—C•Õqôœ·óptÅÁï|ç;_ÅO&œoß½{·=ŒŒt'œp‚ÉôÞVœàZðXKLÕ$ëŠ+®8¾×)p¿_z?GR¨”idÆP+n¼}àŒÕ·,Ø`)³lºÂ¸Ÿ|OW” Ö¢².kø±ðuÀRš„ƒ=Y¼˜Bê[Cêebß~:ŠÐrê… -·'o¿ñ§ÝÝ©FŠû=TrkJ§ç˜Ãœa¹D”¢ :æ˜cBÞn:œŒx;Ý<ýúõ(03°gÏ·Þ¼y3§ôPqïÐèa¾úÕ¯Z/Gºóv+H¥I?™¿ú«¿ºè¢‹(ÂñáU  Ïb">bŸX‹ƒ ÁóæÍãÏÀ¨S ‹» ǾBõ°¯ö¬,³¼°©xëÖ­|]MNÑ''ä™9!è"(ÑZÇàû©!Ðs*Ùéu5UƒshʶxñbæOÎ;ïh–áítqwß}7“”­ÉۙÇ!;íg>dÉ’%Þf¹`Á?5ùÝï~73öÞ3G Ñ)#v¨ÞNoI.§þ)ûiHË™ñM© –Hï È>ú¨ë¸PŠŸŒ×.¡’T²ÓË!Êê8š;„µæ)þÙ³;eq̯±Q2Ö¨~~íÊME =AnÏV¥ØÊÄJaÍíô Ä¾ôžWøzx;w_AüapSùÊW¾²qãF¿§wÝu×?ýÓ?ÁTy‘ge½»‚C×q&‡!3Ùþ?þÇÿ¨ÉÛ™ F ’lò'‚ÓŽ×B#“óóä⦎S EX.tÿý÷»~–À|;ï – cç4KÓÓ1î…‡á×¾ö5Ï2!T°|ix3g>Rðí ÔoÑÜ*Ùéu5UƒshîÖ”§¦¦‘Õ››ÆÛ™Â ÿ/ùGùxÍH¡'´'CnÏVõ禔­äfÑV›~n>ߎçI¼ÝªæËîs|”´S¶‚‚«ãûa§©¡Wx5À£;ÉÛ£e2´–›uY¼Ýô™¥gñü9«¸§qÄ87Ú)lOÏÊBZ^'owSTo?—æ)ðvüÞý´5>,7àØšêTK‹¨d§—C•ÕVðócÖ…uCx˜g5¬3yûcYóŸèFÉX£úùµ+7ö¹=[• `++9„Y§‡ÛyS$´uóçÏgÂù _øB=¼ÍÇ{ŒÚq5ùÇüGÈXK˜×»Þ3‡âG9s¦e‘hþðË—/ÿïÿý¿G¼ýÃþ0—Ãú0‚"Þw¶ïxI ½è³x;+@1BXÚóÏ?ÿ‹_ü¢UsĈ·V¤2QÏH=vƒ·ã! ´Ÿ.7'‡åþà“7 |æsšÚÄ,FUÞV86ѦLµ•ìô² ÒÛ :b Ò*ºSzûÔæu"o_µY¼½}:¹†[Òž ¹=[Õ0¸Í.PÉ!Ì:½fÑ<øä·¿ýmVt²ÜrôèÑ¿÷{¿ÝºßOúÓa"DׂÉàûwȨm¢›Ð4æïn!liÇ:SQXGƒzÄÛ©—å™P裎:Ê}Úq¿á€e>ÌHã`Ãd¾·F&ýdx› c^Cð'çMÁõs^ h!Å|ïŒe²"ÞNHH?T°,|à¹:Ò¿ô¥/ùÇ/€8üƒ¤/nò¬‚Âù2žr,Ⱦ̖‹@%;½Tú§Ä6D`È!¬¯¤atþUâí?#Þ^nÇÖ£ÚÛ“!·g«zt3 WrëÄÉŠðf&×¥†¹’…€è •ìôÚ ªI©¼üòËD >óÌ3 Õ•ª@b'aooïI·TrÙödÈíÙª’oÕ¯~UÉ!¬;½ð— Þ¢!Y4JvzY Pé톀ÙÇ?¾–²–'µy aOzòPL¦/ÙüOW/\ð³·…÷Ü‚„å›¶Ëâ˜SŃk¶Ö$c>µí³C²ý]q×·ìØmúvšc¹¡¬,Úôoc~º{Ïÿ^òôö#F-~r˾EµmÜÞ”wìÞóùa?Y´ö?-ØVú~SÖ=ÿ‹C-xzë/j6oÉÓÛ>;dÁîÜ¿¦~£ Û~ñ‚·*«ìæm»>=hÁêÍ;²*™^É!¬¡N¯ ok+y;~;T—ü‹<Ú%5ItJvz©ôO‰í†Àk¯½ÆÊ&k^îlÖ™Ú††0ã6£ܵ]ˆý ¹çIoûÉ[qÌöçøÿò uñöSo[^“Œ]tÇ*tx ¹CÓ‡Z7±õ_¾öÌòR0rÞSw/ßbµ\Õø.?æØþÔ·Â)4±-3e—Ouÿþ“È“éÚe&ÿý³Ðä%+_­Û¹¡(ÇÂ={o71G§zY•¬Ӌ6åì {‹ŽüÛ;¨ñh*¿œiÓ¦uîï§· ÐK¨d§—Jÿ”؆ŒpUo¾ùæm·ÝÆJ¨Ôvƒ· x;»‹B¨Â=I } ÌøÒuñöÓäíL€¥l.oÿâ5cöÙí»¯ŸÛÅÛg­ØÇÛ»±;çš½ëÏ\ÞÎë€ð=¢æoæÒ½¼½¸ îy•ÓñöÔ¤­ÓcŸÓœÛÝÎYâíåÞÖ‹1æK†ËmŒjo:âíØ«W¦Íl{‡‡LŸ>}èa˜~O½®nðö±¼5ßù„zÝ4¿9‘ë|q8¡Rû—Säô‰Í·;og_§³f}áš…4uÓ¶]ß³aöãÏ[ËÝóVx‡:mšMŸIשߞj~ã&,ìâí·?\›·_6óghÇÛýÖç &ÞžÚtbbC^ÎO¢¬,ñö²W½âíØ«Pmnh3ÆuãOû˳‰ß{ð­Ï*Nøéú}-TSËWXƒstÞî'³ïu€iíœ"fýóð.Þ¾áç»®þÑZ„¹«öñv>U4jjí–_`áìT„·Ãعœ‰ k;Y]¾—·/,̱ñþ_TÎo¯LÇØP§—ó“Hf±bå3;šþ³a]âí!’…@so¯LW_Õ ihƒeñ/äíWܵ&Jiî”jÍYU§*Xâ™·7ÆÛýu \x›c¿Î,ÖíÒÎõ[1tVo¿õ¾Õ², ¨Ó‚«± ½¿_ÞþýE]¼Yw¿À,Á~f?y²¨¹ÌäÓþe5€tñöÊô uz9?‰dŒÝ~HÍ=b6¬K¼=DC²h.âí•éê«z! a6%y{¸Rµ¹OPª5Ö'ú°˜ª`‰õóö{×¥ºY–æ˜m4Ëx;Så¶à¾Uûx;4¾QSæ'sÖ÷W4Z°­ôíÞÑ$<Û‘ëYÔl¼½¸°EXöVea%Þ^™>°¡N/ë÷š.Þž ‹…@! Þ^™®¾ªÒÐfÜf\àcŽÇ#ï{Ëã½ç#O훥=9ÕÁok’±ÐOÆ']£Ù­œ*êÉ"r#ÍÀgÞ|ŠÜOfØæí¶.•÷‘zêm[¿)D’A¾õ¡Ú‹# º‡ 7ZOÈPñöÊôÖé±iÓŸñö¦CÚ†Ùˆüâ‹/æØ†mS“zŽ€x{eºúª^H’·oüù.Øk?“¿c\¾ò!˽tFׂÁskdz²I›ÝHéyK²Šmì’|Q÷­ÿǽŒµÃ®;®Ï~¬fö†yO ÆdtpP÷êØLüð5ΉŒ•% ¸+¸`YþpU¯[ó*,~C± NAKºñ¦;_؃Ù{Þ­Y;“<™o_Y£ö+ïz²wî3N]S?ƒ\O0"[þüàšôm޽˜J½ñ‘@ä|jÉíæùû~Q^Öb±*ÁSî}ü9ìœ×Œ`><5ü>ÝrÏ…¯ß¸„;ݰã÷"«l%‡0ëô,XuÕÝNoï6tTpÑ¢E=ôÇj³šZ?•ìôªÊ`ÌëJòvø£ùµsÖ%ç6ʇc½ÖNUŽŠ‡¥¢¬FOošÿ´·$«¬+À–Su\Áæ)D´"žÅi(s o'äK»ÿR7å±,ެ'uḛ–rlhÖÝX»8Yóšu„Ò’pßÚyɬ‰ª°ô(1:­©ã ?üioçnF’§æbĬx2‹7˜šûÜö}Ûi¥æZ"ï‘ Ú¾ËØòÞ¿rìÔ™ÕUg©µn¬Y°’CX²ÓËÁ¶¡,ñö†à’²hC*Ùé˜ü¶ªWÂ,Pa*·Q>ë¿ó]ëR‰pXóé KÕTÎWÀQ‡+ó Z.Ǭè+®àv<ÅÜÝiƒgE2§{öòv|`﬷³žÔ«@øÆ÷º¾ Ÿ]:ª°?F‘cZÅÛ¹¹ûkÞ÷¿µ?JŒNkê¸Â,éò“ —KD¦üÔ¶÷úq ¼ý9oƒ­†®o·wOn_cR¨ä–ìô’Þ½ñöîá¦RB }¨d§WU{`^Wr3ÞžJÅq9ïâAcJ–ÓÐ$ëé KeéÔ™Óc×û|ƒ–˱¼Ý¶O¥1a¡LÖ {½/>;´‹·Ï\V×|;Þ#Þ*|8¦âœ…ƒm{ÌØ&Ï·›gTr¾½hÞn¸®cqÄý¡xR‘‰nM¤SÏ|{ÒOÆ7ÉrkîÙ·Bóíö=¿Æ¤Ðú!l„ ýúõ»ä’KV¬Xa}2Sžy晽{÷fC KyõÕW¯ºêªÓN; cß™‚]¡ÏÚû—µÇœ÷ðÉN/yáÝKoïn*%ÚÖwzÞ5IŒ€ v}ûöݰaCÉ!lÎÊ.?™T>i)¤I¦?Ái=¡QÂR=|BÙ°œoÐr9fEMt·ã)Ðck¡gqÊœîãíCº\dëäí¾NÖLo‡Z]õÍéº2¼ÝVz²ˆ æµ[MBñ¤jF·&Òa§Ú|ôÙ8Ìt˜‚¶â,Ù åž[Üš…ªoßµw]—éטZ?„ýö·¿¥³¢_:ûì³^|ñÅóÎ;Óçž{.²~Œ]æ'OžÌNÐg̘a‰tt›7oF“}¢9Zbê‘ܹsç>ðÀÉëíaŠx{ìˆâóçÏŸ7oÇŽh­Ù(­ïôR»)%€<òÈ##GŽ|ýõ×ó¯Ý†0~¨þÛnˆ·_<­‹·×³…ñ"¯¥'3´¤%‡rXu³ÖHº‚ ´ÇS ÇÖ<Ïò\ovÏy;ôûõ°V¯tÉÓ]0[ÆÛY¼àU›eùiMWÈYIáÖL°-«æ­zkål¨àÃD—Ù³&_M_1á¼ûB©·[£*ñö»»Ö#óϱJ %aÌ9¼òÊ+K–,™4i’ub øõ¯Ì4ûîÝ»8"# IˆSCéÒ¥&§­Ó5jTòz{˜"ÞÞC;¢øðáÃ/»ì2ŽÑZ5²QJìôRû+%8Œ=zëÖ­5¯7ÉÛçîo¿&ÍïÚFùp¬ï¿—·¦/ÿѨǓ6ßB˜KØI¦‡²75+Ú¹+øåxŠÇÒñ,,‡2§¥7{ä»–?k¹ùëR=ž¼)³¼°6a³óesÕhn(j4?¶—õÚ­…Eóv ‰Y‡ÿ¾­fWÅÛÙð×.™e Â>Þ¾ü­ùv Z%Þ¾ý/ØUûÛŠÿ\(k£_:çœsè¾&Nœ¸páÂaÆ?~ìØ±æ<ƒ‡Ìž={zõêµqãFdÔV®\I7kÖ¬ /¼@|jÌéú’ž_oñö¨âB tÊêôrº,e 0[ÅH‡›(ß”ó›ßd]ur36U'o·øçlCŸÿ¬Ù*NHB¾Z¹p*ÛÌ(Ç Ž!owVæï®FÕ.9ÄZb)I™ó1 &6ï^¾Å4âíGîâíøü˜}?æ(›òÅÁÆ•ó¿Þ|µM{g¤OŸ¸ÜÔœˆ·{z¾µ´TMW°-¨êq²â×H)¾åL͵·ЧæZ"+­U|F±”‘6ßðö…{÷T½`ÊÊ;ufY]97ºN;nÁ ÖYÊÔømlݹ·ûU'-”5„3Æ(úí·ßoç8gÎx;üœ® ®þòË/3ç¹sçNãí«V­‚·/^¼˜£x{ò>*E:(«ÓË"iJ?p8å”SX¨õÆoÀÞï»ï¾¬ Ïâí©³ FB’`¼”ÐOÛ⫇ψ9f£&¨ÿõº®¸Ôf±,”S¢1™ºþyøBt쟳åO]õK)ŸÞMÝr}¹%j]1ß|¤Ãèî¦Æ¾D°Š,ù ýuyc0åúO†”(¸-¨tͤ€gµÙü—k>gÒJ^Xr»}÷¯(Ì… #žhÍ9,H4KR²Üû‰C†fÇo¯ì9‹`Ã,“·ìèòíO¾ï˜¯þ·nYf ìãeï_ݵŸ/? K)eƒ~ßzë­Öe-[¶,ô“Á†ô¡C‡šŸÌ®]» D éÌQXôñ®19õ˜ìôüò{(h¾½‡ª¸(R:½ÔžJ‰×|÷š;vpÕ,Jå+sÖå'‡0¼ˆ¸Syû¿û° ôíáÂm J!}p\ÁÔn[¸ÑÔÂGÒS>uåC¡>ßsj„$Ôw™•_¸fa¯ß·aÀ-Ë ú†¤vêÜ/ôÛ·¬ðxܸ®hêþ/4ˆ¥‡)dMÝ»PR'Tëóöàí®Lì÷°.ó¥IòOÓ± jÊÚ©ÛwÚ¹aë[ûYtôPÙKyAK±•›èžý‰¼mläE<1Ë`¤É©/×Å ÅsÃ%‘M[ Ê›‹)[®Éx…§n-ÔD!(ÒBÓç”5  š–¾ÇYÊ‚'Nn*oç%ÎtN›¸'½–˜Ý‰Bƒ T9fõx¤';=¿ü âí=PÅ…@é´¾ÓË鬔u@!À;ŸŒ Î@¼…Ù³gg]{rËáíGŒê"äöÏ.Ü¢Ò“¼}Â~ž>’n'âíÿ^‹·3ûÊ6¦WÜÕ‚’wüôY3k§æŸo2GwÛÎçíÑ |hÙ­yû=Áöýô×ñ‚|°¼®ãÂ,Ý7Õi)ù¼Ý_I¼ +ån!oËuåP³l¾Ýxû¡×-²,Ž=äí.;°b¯:‡·›Ky*og%rØ`·f‚78ÉÛÃ/Q©ðtìñ×SÀ¸i.øYoOî—Jb)¼Gªîo¿ýáM”õa¬T>²îÛø¶~#Œ ží„ŽáOÇE\Gâ@’¾nÝ:ëLjýÈrTÞMYǼý¶ý¼}¯ß¾ÅÉ I‹Éá<3)ÖNo¡ë{û=¡&oçë@¸ ,9çÛžª!ýö'ne=ÑN·¯æÛYl){)„0ËâÉ|ûÖe¤%ƒ·ñÒŠp í$e·ìÞøÌ–» LÁܳC›9¼ÝyµÛ 7’œo÷µ±è„E"Ùçó]-ÉÛ\“é'ÃKl”·¯Ø´o§ŠSµóÿ¨y©§ѨÞÎæh‘…ȳËßmQce.-Y,ÞAVß©x{}8IK´/âí©\Q‰íƒ@’·›{*oÿÊÈ·-ÚSÇŠ6Fyûçϡͷ‡A›ËÛ‡Üó$ÁFØìÉêÍçí§¾·Ûz[o³ ázLíZ,ÙÕü=Á¯Îõ#5^ B‡¢°, *¬+Ÿ·{ÀÉȾóvÜB< Ïùd{<7̲H‰ûx{p‹Ãùv¢Üx³ÝHªà–ñ679ŒQOØK4÷ìÐfowÿóœ1eÁ‚BŸ=»3¬"Ì å$KO2y»^TÃ‚ÈØ/…·Û®IÝãíÑJêSÆï{·årŒ·{(ÔJaÉN/º§Ý>oï6t*(ÚJvzíÃ9Õ’ž#ÂâíÆ3ùCg¼= íÌÖu¬¡ qFö,[—šã'ÃL;LØC,B}w¾ÐyÏ †QIqN®·5Íðˆ zxj±·Ì©¥ûñ¦àWg§á‡KÁ 't(²D;âÖex®yvçî|ÁÒãGhñD3ÒmÞÎ…`Ê‚®oý…XùëùµÔ^ +˜nÁiá賦`ÇþЈÎÛÍÍÃÚo6·sfʲ©Îâ@’Uj’òv~ü´Vo®‹·'½Ù}†³ö벉©¼ý&Í·»Ÿ|êeF‰@JÛx•&‘§æ'“œox;;ðú=½dï|;‘EÍZ%‡0ëô~ôãŸ@³›ûÏ~$v;šx¤‘áÍ}ßûÞ÷Žw¼ƒc˜(¹e›ôÑG娲UQ+¨d§×s®( 타 a‡à“ûcÙåÄ (ì9Â_Ň'²Œ·‡Ñ¿Ýgcâ„CáT^Ð/náßI´‚]˜‚G Á³–0Z°ÔaJ$o'Ñ•£ÜèÔª¶ÄЩ€t|"åÈ[˜°Ø~-¦ÉNIYq Q0WÓ$ܺ'ÏÍ ¿’àHãj7Íß~<Äœ“¦sÜMK½=.xq6ß! §ÆÛ™¿õ,X K)b§{ºdqk&øëš0F‹Ç܎šÏÛ;Ã73Lˆx;~MÉ Q½^·Ø²Üx8ÿiíaw€°¸9Òœ´?¦(¦,×gøÍ8±qlõ±Ç“!=ùÒj~2n$¬(”ͦq²,;µ§ÃRø®”cÊCÓ³•å7Öâ “OÛÿÉÉr-8¤Im!ƒž•¬Ó8xxòòÛ3E¼=üa—.Læâ‹/æXzKÔ€"¨d§×>œS-é9ÎÛ°ì`™§ ^É'"t·\©t®ÿocºv 'ÝeÂ#ÚZH/‹àÅ·Û ëX(Ô˜f…ì- 6x¬ý¾ßab(;o·¸%aVR¶ÆXzH¹I÷õžäÚŠOƒ»¿K…ÏÕL0*h²¿¤pnWdíõ‡U®“Ðí8o'Ë«v’š'ºàe™Û··ãívEž‹€?¥|ž<Ìrk&üxÙ‰Þ¤,ò‰/ˆ€vÚº3èþ#ÞŽÿR¸4 ªÑN½IÎÛm¿!Òm/S°× _P`eíi_|LÍÒ#ÞΫ¢ï3y¥{7x;Å£«ð̺l:áqÛ/öív.%üßPÂt_Ž‘zO©Ñÿá,WÉ!Ì:½Ã¯žçWÚæ‚x{ø.]f—^öFáXzKÔ€"¨d§×s®( íƒ@’·û7ôäòv#ÕaØs×·DjMº>öH†ÝàíîrÏL;‘äý»€¹5y»¿2ô·û·êÅcÈ­1…ž2þ1 ðh§Ñ1‹·»±[³W*¦Ä¼}ß+ŒHŠ„­r .xØFÖx»}&°w.ÏE0Þ~Xñ\·fBÈÛù±wk"i5'“Ìó{lr›ÂÛ¹ÅÖ’ç¶wíÊ?ߨ9‡·ó±Éô9š…p’ŸD@°÷5ÜHLÁõ À–ØJÞ€Ö†,ÞîK*ÌÞZÈÑy»m£æÛã†Wd2ûÀVr ;½äU·aŠx»ÿz%¢¨d§×>œS-é9áfƒ»…$ŸŽ·Û²Óæ¹þ7¾·oÞSœ·{°Û£3"]Ù'Ò­ ×!ŒŒé°“·þ]À<ÖŠëG‚WmûrF¹Ñ©Ud‰Ñ|»¯÷$×ñ…LÞŠøµØ)Ž Îè,%<Úœ–η{L·f¯*\»íÝéFnš¿·Ã„]9ü à‰.xÙU›w…†Sãíøix– xkP*ÜÉÜš !o§©‘Ÿ ?Ôœ·3%nóÉfÍ6ÉEæuìYú—®}[(ž¨ÆP}çíþëâÝÇìpÌáíÉèôoç·g¿·TÞî¾.~—SÛé‰Þ$¢« ÑR,Ö½—Š„š¼Ý÷D³7&/î¼ÝæÛÝs)j§\u%‡°°ÓK^u¦ˆ·û¯W‚(Jvz=犲ÐJØ}éÄO̪1ÂìqpoíäÓ‘äí¡[…ëó¦¥6öyЇ¼÷ñ}N×>#꣤+;o·•­®`¿¨b*ñvâ~»fªàU7‘·Û&5QK¨Ý¯ÅZž­L¹§¶ŠÄ·‡ï¾g¥[³W*0x;®ãfÜ'~)R'oü™¶9Ñ>Þ>6·À'Ù~o˜ ¡Ó˜D¼Å¨ù$0?€·ÛbdªèoßëŠO-þ5'œóOçí+Ÿ§Òš¼o=æ.îk)m“äQnt†² CÁ‚óŠØž­¾¦Òø…[ ¿yŸïë¸pΤ•DkwMO'Eq§1°\&ðÎN#£ï—†g4ûÈ?§g(x{Pày-LÝo?aoøJ_›à \# ©óí6ç>º#G¸v–-žÅƒ žÜ¿ýñM;˜ù¾ó¯ÖZk@þ|;baÌM™—+kž?$>¸ï'd£âüN@•ûHìzÚï~õf£Yðˆñ–ÎZfãíO‚J³¢˜²ôÀôÑáÇ 2v4›ëùûÖÌz(“姦o3᜽kI•‰dî»vBø±ŸªòöäŠTŠ@}ýÂÍ‚’j0LŒ^”È瘷i2o‡xS‘ñödȰy&›1L4ÞÎÄ]˜ˆ}±\€eƒ'“SWD&y»û{ø–¾¼a½–µzó¾¯9þÂêäËX Øc¤×5º’áP‡—D_»áé¶¿°óvŸ&ºSxû¼§h†Ùágé×kB¼=|Å-xÀ(žoj–PaÞ~Ì𻲮ºÍÓÅÛÃßsëåuëÖ­Y³†cë«V-@@¼½ÅUÕ¥"P?oÇ5Ńó€DóÕ!ogúptc}Kqšê˜‡‘±µ¨em¶nS”f'd·IŠóvrâ.NVèxµ‡Õv(˜GY«yÄuÇÃ}ãçV–½{\SƒØx¸l>^XAgž¡T9t#1¾kD¼÷‚æÎ·‘& —\oç-l¼m´š| }Ë]Ÿ˜îF•º"’`ø4ƒ?+Â|»£îäê¸qK'(½%ÖŒê–5 –?ÌrÞ:Ÿ„ x¡‡ –-Ë6»åZ«œ·‡ rÑÌçí|™²â~¬—·_ ¼,‚óöTüËB¾®ºóí.¶SNÅÛÃßsëåÁƒ_|ñÅ[_µjlâí©4R‰íƒ@ä'UvjÍÒûû‡cY8ѹvçóvŸŠt/ô%O¿µ!NX{;ú)¾´ÁO·Cnmr˜uŽžË1.#àŠ@Yb¡„‰ù2ÎÎÛ¡—aÕaA¿“TD÷“á%È †3Ÿ¡©¤œäí|G(š·[¬ãíõøÉX\qo¼ñöä e]­ë¸@{_¶ü©+Sæ{#ÞΖFoñöý´œ[cnÖKw/¬ðãˆëä X`ƒ€H‡õ¶ðÙ)M=ùgN_\¯µÊ߶•¤ØIòv–ÁRĪ`ËW+îÇ:y;¡o¼‘^Áy{ä®ãÊ¡PaÞ~ôðYá•v,Þþž[/oÚ´iÆ [_µjlâííCPÕ’T"ÞN  §Ö< a(ƵбÙÖÜù`¥GßN“óí>GíaCÜ#Å-˜Àdµ§Ð·I¢û·ãLbA 7m{‹·ºûmÝæf#2ï–S‰|²ÃiXu¨Náúu… ¡,ý°ô¤ßE¨ÊIÞ…‹x;ùÌ­•uï£ÐT([{즛¼Ÿ·w}¨‡·G´Óx»;o»}_,à)(3ÿl)©¼1æíÃßâí”òØ5Y×bé>ùŸúb¶')c y£ôš¼@1áj +nžüIÞÎËHh?ÉÛY)L3L'¹mn¼=üÕ,vtÞî6¶'”¯¯î|û¡Ã¯´ƒdñöð÷,Y4ñöT®¨ÄöA âí¸éŽ}`½ a< „p ‡³ÞŽ ú¦œäí>í 5$ͳôÐO#â혵ǯ{ó©&Ú¡7/ŠîxÐÞ¹Ùèå•S¢:o7ŸäTµ·‡sï®Ì'k§GüKú]¸r$$y;K¼}qÄÛ}ӢȚŸZ{ìè‰.ðñÙ\êáí‘›‡ñöh+( ú&¹^‘Õ¶–’Êóy;®Gù×b¹î…•œ“*cáò™1o'8êĽñQ³æÛy…ôõžnÖüÊð ²Vy ð9BÞÎûˆ—Bà# E,%Æ¿NÞþê¬vLn7VÉâí íp*Þþž% æ" ÞÞ>U-IE âí¸ézð¸D4³:ÄÓÛ’‡¼Ý½kpa擵®N,H»Ï@4†ky‰ðÀæ¨Ñ0|X¬Jô?ãB!o½Ì&ÏräÌÕô{ÉÓÛ-‡Ðy>ÔôéJSy»¹ Q»7/9 åä¶Gň+BÛ¢©ÝQ÷í{Õ M…²Ñ]®È]îÃ\Ûß–K&7â䡚ˬu% L2äþô™PÍd.W“y·J*ÀYhà?–p†—Ï«÷È{édqV¤2Ïï/a,š¤rj ?¹äÛïŒþ=Ë Øúëjd–wÌõ[Á×_íu\3º/Pngò¸!{TžÐhºÞ 24!âíä•“‡Ñ¿y…³äë´Rñd²À)+]¼Ý{ B éˆ·§rE%¶o÷)b†$'Ûõ OlÉÄãi½»/Û?“éÌ**žFìÔ§â»i)2Õ…›7á‘–…z¡M‡ Ir:Ì'’)6›L·žÄ7 ™gR¹)PYsé ¹œ×ë{B%ùªë4K öà)ãã ëùÆ“èq§ ᬂÑÊÙ,µÔt‹®“šEb9÷U!YÃtV@„§È¼F)¾”›€BwüôYr-°L¤BÎWlê2…ƒÐ°½ÑãM¸,¸ßk/}Sót¾ÿГUåí½‡Þ]l§œŠ·Ûã_ÖqÊ”)ãÇçXVTo¡ˆ··AUKRˆx{¸{N*ÇËÚ˜­åQŠr-Ð\¸ŒÑ]>¢Í4£‚v…šôÉ-ÌÿXH†€x{ûTµ$ˆ·»K6]ºû´ø ŽúŸ‡éðv÷ÈõôÏ íbÚ> ‹pßÚ䣗r!Ú’Õ§qnï³w_$‚ï¹rø¹ßûŸÔW/‚òv&)hnÌ¡NŽ oÇiö0 }r¬FYñÖ—²¢ÜDÞžu;¢63áo¼=\¡à:É¥–倻f¾ÊÛ£(î\ûé{y{ýóíIJühyóí|ÖI½}Yóð©ˆE>]èÌ]ù|¤‰Ÿ¿¥°xÁžD[ ©E§üØlÛVÞyñsã‰ã3EøŒ4ý4|ˆ<Ñ…¹K+;ß.ÞÎ]o÷ÁB‚0ÄÛS¹¢[ƒÀ„ úõëwÉ%—¬X±"«Æˆ·‡ÍC"êãx—ÃÕ×W3Á&l·3×JtËŠ¦a£‚všÅÛ‰[}âÃ›× †¾Þÿ44ßNH 6ä¨ o7²ÊrË0‰5À&Q ï¾ÊÖÚÔ8*~! ©~/I i1Þžú¹$Ë!ªNã^]Òwš¬‡~ösW0ÖÊ·‰äÚÌHÍNiC oª4?b¥Þ>÷’J½Š(1|Ç´¬ä¾®.ž\x»½~DˆßUd*:…†9oÇÓ†O?]›”íÝ\8ÒôÓð!òD户§­žv|Jä'ã=¼!ÐtÄÛ³è¢Ò[€Àoû[j™Ÿ}öÙYÕE¼o‰Ry{èô⚸=ø6CžnŒÝy;“½#÷Çœ·*ž`ôR.D¼ÝfïÉ廿-; )‡GDÁä,FêUØ|»Bä[æí7wQ<öÆ%aÐk€]cHÄêM%~Þ¤†„:]YîX²ÙÀL­:ë«DªSMNóÌÝ(RH.@†µâ°îá O?;ô'IJl CÍÖÈ|è‰ÂéX½Yþ3©­â‹C”}‘!×£Jòªk¯Ÿö•!*.ß°Ýýdàí¼¦ñÖ“ï߆lЬqzï’õU]—zÄð9ÉëíˆñvïáK¶nݺeËŽ¥Ô®J‹F@¼=‹.*½•ôîÝû•W^I­1âíøÇúÈN {bÝúÊÈGØkÕÕL0’ïSô,SõøíIÇ€¨,§6EìéP8“™×e‘‡7¤a®k®K y;¾ý¼iþÓ^cMùvÛ´è¸qKù}k€]#aá£ÙÔTâW³®T'JÍõDB2ÚbTT‡(ʦ:ոͤ`¯?QºGtôtxû {žŒb˜{n$pÓ“”؟ڭɨ1rĨ8\žYÆ¥œYDžÜr„NþP·Ä“*„¼zl”·³ë–™Ò çö!êxûƒâUÈ\¼©Î*žÛÊ;´Cʬ 1¨%Æeë—í&ÒOòö³¾¿bð=oÛÜ6*žÂÛ“”˜úNÜ‘xO $³¶"ÕrªPªfjbr_W_gÍv«æ‹ÅG¾Ý¤÷Dfémêž×4^$ù¥qßY:ÍÛu"øQJx:xÆòªÎ·{õŒðJ;Ho÷¾aÕªUË—/çXJíª´hÄÛ³è¢Ò[†À˜1cê÷o¯9x1Sš¥“dh>ÓžU¤Ûé°Þ䛂ôç:Iù¢CÞÎ= &¯"*žÖÒˆ´˜-aþ66ÍŽë‘xÏM°õ܆„œ×¨†ì4E¹÷÷ßBßl†+&,…ùö†‚mâš’Ú<øjz21ë0©YVJrת¶Äß"ûM{‚Åü°³¼ž’ŸÉªY¼YUÞ®u©Üh­KõÁB‚0ÄÛ[ÆNUQ*‹/¾õÖ[S³,1šo‡ìT™)î¬yÎ(–³¸ì¤™jÄ¡Ê5u\9úO{‚G,kªÐûs&là?_hŧ.~Û&žÆÛm¢oy+Vd2¾ë!íñýI kIPJt,ÔÞî=ÿÛc*ÒBÛ“Í+#§ FýO’íñ”¶b¤¸dD—ÆG 6Å»{Ȭµ~ «Â]p’U‘ *4…·³@~É’%×]wÝÑÂ… ÷»ß¥öEžˆj't’÷]¸{® Ó¦M›á؇ãzMNÎ\‘ÏÃRuÊ8œóðBûSõý¹6¶ÆÚ+çíÑ>­uòv"R†óí>;:bîS6¯‹—»Uêqrpö¶ÂKƼ}ЂÔfw#±ænØìv\2"ÞŽ{’ÁÚ„RF¼=éåê'£‡¹&GîO$†^ñøS%ƒÀ'Ôü¹&‹D)Kžî&o÷/8‘ÁüS'çø·G¼ÝY:o¸üH¸ YWGVN-Máí»Žº;Ñ£”äiÈÛÍafýúõ>£Wùå—áó;wî4ÞN|x;+z8ÖÃÛ¹´œ oç¬&òvº&ºÇ¦ÿ³½0ìÙ×QtâíÉÞX)m…@y{´¶Ž˜jrrg‚KwcˆdO(Êf¹æz/a^Í,ÙsÞþàš·mßY'og^=äí->o³Á¸%X¥y’H•Üð’ÑËB¸Äµ×éÞê€ÐBå ÞN Pƒ%¬…¨†Ãg¯ S¢øöa²}ш£Óȉ\_˜‰Œ?ÿ£"ÉÓ,f›ÔÌJùéúmÝ›o÷Y–SÓCÞ¾>Ø1 e¡cÁÎTÜ…¯MyAÆ×ˆ¬Tã–ØÞöxx¤‡§9rÈÛ]íÌ3Ï|ýõ×9eÆÞüdvíÚ5hÐ Rð“aohÓÄOz/ vz9ø”’ÕDÞ^Pû¦Æú=;ñö¨ÃÔi»!Ðèfajoß Úƒ5"Ÿ§ZËO¼ò®')['o_óìN$ÏÌdh¹NÞÎ6¯!owl6!µýžN¿Üñx2“`&®ÙVú™!M›oo+ÿöäÚO6WJþ`ˆ]i›@9&ss7Ï ãÆx‘HˆÞŒÈ cð§â5**’<­ùš™,¥°¥iCñÿ½xÖ¢QWHœ·ÏÿÙÏÃŽCeÛTËB…é.sƒ\N MáíÆ ó~oÈ!.ç !o·¥¬ìPI +5sæÌ)S¦0?uêÔéÓ§["k˜Û§Oc*Ç,ûvzIXÊMo·^EG!PâíY=§ÒÛF‡0{LÂa ‚úÃöíd¦×#c-k¹\~ñAwwñö¤k.oDüógÙ˜$¡6<:‘7BˬæC™}|HÄëÆ þëu‹Bd¨&‹.=‘pLþÉ“ÿi‚­“¥x8ÍkY3÷àÛö` ·ˆr›Ý"¯ûnX(ºˆÇ“ñé_«1âíÉÙòdÃX.‘Lôˆ«‡ ²Äpé+ïw¼ ¹r–Ð=ÊZÃ=€-tÔBePµmg7ü|W´.ÕëÍÚ ÷Ë×>b:]?ÚŒù(4…·»s ^(gõ³gÏîÓ§ÏÑG͑լi%$œü†nرc‡•"ö#ËQña²ÝfàIê©§Øš9y¼Ü³Œ“Þh§ç`¶‰ ÞnµŽB ÄÛs:Oeµ©Ca1l„ ƒéYŠ=&&Û´3ŽQ º¬Ñ-ªkÑ\t²,sÝÉD6Ü [b xã0ÏŸ?˶ïÍ#Åt®ÝÇ´9…º¸f(<òÔ[:V w‚pÕ­¯£t³^ir'Px»»s3÷ŽÁTޞݬø 1iL-ýƒöP»OqÃC¦J©çñêÞ …YˆŽ°\ÂÚG‰œfmäÄ”¸Ag}õ@ –Ƹ&ß)B;Ë7íû½…‰¡L(È䌺)˜Ô‚Ÿý<ú’V¦ކЦÉþY„ÓÈÕ„R~ã’I1ræØí‹qr(ECM-艰îŸ=[c TWN  Õ®.ëŒ^T݈¯¹ ¸ce¹árƒ¦ðvÖ“>úè£Ìݹô~Ï:½ƒ‡;%ˆ·Ûo¾¬#/Œ¼~r,«ª·PÄÛKï¢Õ€|Ry;Þ‰6%CgÛób¹æÐÎ,eDx²ÁÃox4ÊšOYGY~š:Ið°%¦Lôìèq¶Ùï·‡Û¡~éÚ}^Q©%O§Úp'zçð´ªÝB´£¹!twn8$)©¼í™ÌTêñŽŸ>kU8Å‚\‘âË- w㵘…œm¤P€1B8“ue9̳.ÀIMt"瘂-‹u®ƒà¿·01”™Ž&x®y@ÁNÃ72r©ÑtOñ²a˜ è ½ …‘¿yG|Úí{A)’ïóYàÍ1ZO)äŸúWêÍâíÉ—P³òö™08OSx; çPb­#ç÷H-ȵNï„a?̇·msÅÛùÅ–øÇªç‡zˆc‰mPÕÅ! ÞÞ‚NXUôTÞŽC¸YI¯{X,2‰€HDx²Æ»ä\.Ö²x…IÝL“‰Ð°%¦ÌúÓèYNòöGŸz‹¬fñöÔé_Ÿc§. ðˆ@uVµ×í(D.AQÃ!Iùìз"¶g2S©GB¨4v'¼úê«Saaçñ¹sç~kÔ ýßʧž5yèË=Ñ~Òü™<óѧnž÷ÄSÏl‰ÔRO½ JÇÔŠu›£ÄètÖO×G)œÞ8gÕÞ†ìk‰)¬Û´Åýø©KÉârH1Ÿ®ÙdGÚãš¡°fãs®ãÂ?éò¼Çž6ÙÍzñ1sV¹š Ïnyþš»W˜¼iËóÇÜðP¤Ãij¥®6cÑ:¯Âg-YOÊàûnÐñc~rÓ¼'\›bEÂD—¿5náCoôSÎÿ¨Ë¡0ï±§R­¥&†MÁ–5umà¡‘+¦=¶ð‰·n\˜Å…sJîòuÏ„éÔh§ë÷ãà)¡Zø›Ü°ùm?cô¯½ûñP9’/üÁR~¼bÃ7Çvý°þpEX±!RË9å.<±aß³–£–•Eó¨Ñþ*ý9Zµ>ÝþÜ¥]/ÿ¬xXEx ô ôŒ’©½G‰3f̘8qb»ùÉ\2ø»BÔ£vŠ·JÛjç=”oÙkjJ¡ K¤Óãí¾ÎþMjB YèÞN@cÂUmذ!‹·Cïù‰êO!…½DOú¥ý2ò“™1ðw"T›;ñöžôö*ÛCÎ;ï<³€ŸÌÝwßj-K”y x»ÔŸB D€ïqô¾±QjÒq‰\ o(|bèm.½”x{§0@µ³oï¸.½J fOð5kÖ°.aãÆUº4]‹‚ž._¾|êÔ©4xݺu¥7[¼½èWV-u"aS›…ˆ·—ÞEÈ `¢Œ)÷ü82>ºv! Z€À­·Þʺø /¼º˜ChAùUˆ·‹·‹  ,ÄÛóûOå ! „@µ`§T.ÐŽ,ýb·÷2¢húZ}ùÉd1®Ö¤1‚Uc[Sji1âí¥wÑj€B@”ˆÀäÉ“G}ÖYg;6k¡M+›g¼ýä¡ß/ˆWmV¼½ÅD.ªŽ |?â¥ë´ˆ··²7V]B@!І<÷Üs³fÍ"ÈU;´M~2E¿YÈ¿½ öÀ¼ ñövè¥Õ! „€†€x»xûÉHuÕõ Þ®‘¢ضmÛ¹çžÛY W'L˜Ð¯_?vN_±b…aË'Ë3Ï<³wïÞ«· ¡Ã†Sx!¾öÚk–ÈæS|©çïÞ{ïmÏ›‚/Á‰'žX™‹âNqSúöíËöÕ¸(ús~Qüün¿ýöν¢—^z‰_Ú‘Gé{˜öä bC%:Ö¿çÄx¿(ø½ÒŸ>ñvñözø›tLÄÛKï¢Õ€ØôM a¹W\qŦM›r4Û'‹˜r4†‘÷ì³ÏF ¾4œS>ÄìӦMÃ¥öÍ7ßäÈ^–ܼy3š\pGKlŸ#m»þúë·Wà¢yä‘‘#G†q¿+pQvÞþøÍp§lØ¡WDË.\xÒI'oïÉUðFvùå—ój¼zõê+¯¼²æÓô /øóXS¹8â·óêiEÓׂìË¿½\>¹lÙ²G}”c¹ÍPí! Þ^\ß+Ë=GàœsÎ1#lÌÄœ[Ï ¶Òs¹¯¼òÊ’%KØ…Ñê0`À¯ýkdøÕîÝ»8"# iá,Ñ_ºt)B[ýñõË_þÒx{.ŠÝ­[·†Wࢆ òÌ3ÏpQ¬¯„ývô9oïÉUÜu×]tv—}—·ð¦'åñãÇ'[œb¼}ààáñê¢ÍŠ·DØê4˘Âh±N}©uâí-îU]ýð]ûÒK/eÔÆŸ„YÄ«¯¾ºþ²¥k2òÚKŸé™<6l|6eÎ3\Ñž={zõêÅnSÈ´våÊ•0IVÆDzÑ¢E¸p”~ a~øaÛ•Æx{.Š·*îîL|ûøÍo~ÃÅVà¢^~ùe¾Úà”ŵtú9oïÉ}¹æ»×¬_¿žXøž1ñŽß]ø«v9p“¹è?ø§—%o?üêyEì‚ì‹·—ËwîÜÉ kŽå6Cµ„€x{Y=³ê­‰=¼Ÿpæ øÞÝY¼}̘1FÑñ4†·sœ3g¼~Î…ÃÕ¡XÌ`Óµo_µj¼}ñâÅÛ·ãLÒ¿s)1Þ^‹:å”SxÄö~ß}÷qS*pQxþÜqÇÏ?ÿ<~eüÒ:úŠœ·÷ä*Œ· °àí9.î5»£V*o?tøñê¢ÍŠ·DØdV€€x{+{cÕÕ(þi›ÝíW¹ÎöC¿ÙÑ”q2 ýdð‡!}èСæ'³k×®Aƒ‘B:s¿V}¾2˜ÜG ,·ÏÞ¿£Ž:ŠÆWà¢`tôWB¾†€s§_^ܧŸ~ºý`x%á;úŠœ·÷ä*ø€å~2¬po‡§©ž6ˆ·ýf¡8"À‹€x{=½¨tÊB€=Ç׬YcÑWp))« ÕËúM˜­‡Â`^ÝÖ™nÙ²Å6RÇÚÌ™3§L™‚Î'Ó§O7û²@‡!WŽ UÚ2e›oÿ¿ÿ÷ÿvúE1ÇΧ ³qöìÙX‹â¦ðb½óm·Ý†gHGÿöœ·÷ä*xùôÀ ÝBÖcÂ+)o¦xËP)2B¹QeÄÛÅÛ;—UªåE# ÞžÕ“+½à»6Sî’02x¶›Ç,´aP¸“¾nÝ:C"ó2L¶{H<‚pºF“IÂv?µ ÆÛ+pQ¼4ÁÛ¹)8/ÙG \?!Ø)Ì“‹â7Ö¡WÄk—pôÑGs´Õè=y‚ðW¯z"É¿v‡G(÷ÏxûùCÇM_ ²/?™¢™[¾ý[n¹ß0ŽùjÊíPÄÛËíŸU»B@”‹oÙ艗ÿ(Vb“Œ·Ÿ1äß âÕE›o/—ò gKŽå6Cµ„€x{‰³ªB@Ò`Õ*t…«DÏk‡¬ò“)úÍâþÕ[qq/âßæm» bk2+ ñöÒ‡ 5@! JGÀ¦ÜKo o/š·g_+^Å®‹F@¼½ziµA! JDÒN,VÀ2Ø›aU‹·Ç«‹¶,Þ^4k•}ñöÒ»h5@! JD`îܹÇ·@‘ƒ*±%Vµñöc†ßU4É,È~ûû·tá˜mÞN(qÅ­$âí¥wÑj€B@”ˆ€m€s;mðmJlñöƒ‡G/ µ,Þ^.]$X?fŽå6Cµ„€x{‰³ªB@Ò hÞ‚ ˆ*ÃÖÆDÏ+½=ÆÛ>«Pv]œqñö‚[f7mÚÄvrëÔ—Zg! Þ^z­! „@‰°åÖ]wÝ…‡Ì¼yóØå­Ä–XÕòo/î¢hËíà'ÓY,T­mñöÒ»h5@! :—^z‰M»Ž<òHß™ý¡Ø1}ÓØúÊ.Ävyfo5Ül,Ò×®]{ÖÞ?v’ʹ^ñö¢ÙuqöÅÛe¡ÒoñöœÎSYB@!Py˜foè—/_ŽGÍI'd¼ýÅ_d[gÈösÏ=‡³™š6mÚäÉ“ß|óMŽì€c‰}ûöee4/¸àŽY•Š·Ç«‹¶,ÞÞ( •~£ˆ·gõœJB@[‘Úè•:o_²d ÛSZñXx¦ÙwïÞM"Gd„W^yÅ+B?gƒ'ãí½‡ÞR4É,ȾüÛebÍÕŸ2eÊøñã96׬¬µ âíöÕÒB@*!pçw.[¶ŒÉsû«óÒœ·Oœ8‘é÷aÆA–ÆŽ»bÅ ,à!³gÏž^½zmܸ™”•+Wâ]3kÖ,öf]´hÑ„ ²*2Þ~ÎÐqñê¢ÍŠ·—KðøAŽ7Žc¹ÍPí! ÞžÕs*]! ú÷ïÏL¸ÿÕyÉÎÛo¿ývx;Ç9sæÀÛáçX€«³…Óe—]¶sçNãíìëo_¼x1Çzxû¡Ã(š`d_¼½ Â&³BÄÛë좥&„€BÀpÞÎ\}è'ƒ? :D§1?™]»v 4ˆÒ=8<úx׸©H{A/-0+ÿvQë¢o:L ! „À‚îv¥÷Ýw_£—ì¼yu[gºeË|`ÌÎÌ™3q0ÆñfêÔ©Ó§O·Ä~ýú¡-g*ǬÅÛ[@° ªB¼½hÖ*ûâíY=§Ò…€B ÚàcèB=×;{öì>}ú}ôщIâ:òì³Ïfsy³@ìG–£â!Ãdû믿n‰D‰$V$šx¹çTd¼ýˆás â–E›•ŸL¹ÜrëÖ­¼r,·ª½ ÄÛs:Oe ! „@…À³ÝÖ¢ºÀié×k¼}ààáEì‚ì‹·DØê4Ë #ï¡ëÔ—Zg! Þ^z­! „@)D+Rmij)- +5Þ~ìÕ3 âÕE›o/—²š-8–Û Õ^âíao)Y! „@¹È¿½è7‹âìË¿½ ²*³Ž€x{¹ý³jB@!" Þ^¯.Ú²x»ÓK ! Þö–’…€B@”‹€x{Ñìº8ûâí‘U™uÄÛËíŸU»B@ãí§½­8zY¨eù·;Å*E ÆÑ´iÓ8–R»*-ñö°·”,„€B \Œ·÷2²Pv]œqñö¢™[¾}6í½æ»×pÌWSn‡" Þ^nÿ¬Ú…€B@„ÈO¦¸wŠ¢-ËO¦CÉp5[¼=ì-% ! „€(ñö¢ÙuqöÅÛ;ˆwhSÅÛËíŸU»B@ñöâxuÑ–ÅÛ;” wP³ÅÛÃÞR²B@ro/š]g_¼½ƒp‡6U¼½ÜþYµ×Dàõ×_ß¾};Ïc™þ„€!ô ôô5{’RàçÎ;pððâèe¡–µ.µ\B8xð`vþåXn3T{Aˆ·wPg~`6•A™!LB@,è%ªÔ=o?aØ e×Åo/ˆ°ÕivÑ¢E=ôÇ:õ¥ÖYˆ·W©·¯äµ¼øâ‹ Ö7nä·ª?! „@ˆ=ý½D•z?ã퇠8j]¨eñöÎâjmg!@H§G/Q¥NO×R Ë—/çÛÜ‘GYOí¿ýíoGýíoû´ÓN›5kVNÂø¡vÖ“¥Ö !Ð*9„‰·úZQ¨qù··à©?À«¨d§—C•Uÿõ_ÿuá…²A[¼}âĉçwÞóÏ?¿~ýú3Î8cÍš5Y o?Àû(]¾ÈA ’C˜x{¡ÔºPãâí9O«²š‚@%;½,¨ô¢صkW¼’¿`Ákžx?øÁ²Ú&ÞÞ”']F„@%¨äfÞ‰Ã&Ê0‹3.?™rŸµùóçÏ›7c¹ÍPí!PÉN/‹*½hêäí8ú裟yæ™Þ½{3æ¹çžÃÁ&«mâí=û2+*€@%‡0ëô.üÝâ¨u¡–ÅÛË}²†~Ùe—q,·ª½ *Ùée1@¥@¼}óæÍ_ýêW_yåxûرc)uì±ÇfµM¼½ g_f…@¨äfžÖ¥úrQñûWoÅU¦éÿ6oÛU§U—Ð*Ùée1@¥@¼ÝæÛ·nÝjíÆ÷ë×/«mâíMyÒ+cdÀ€ÿò/ÿR™ËÑ…ôJaâí‘êÎ5+·ùvU*^ÉN/‹*½hêäí4¢¾páBkþí·ß~{VÛšËÛW¬XñÑ~4|„ 4gΜ0¥‡òwÞIŒ¦©Y|Ó¦MŸùÌgþüÏÿüsŸûG5õ+£Ð«W¯|ä#•¹]H¨ä&ÞÞ¹» –‹·÷°£¨RñJvzY PéE#ÊÛ·mÛ6pàÀ—_~9¬}Ò¤I}ûöeÊý©§ž:óÌ3[O&ÉÛ›þ8Ÿ{î¹W]uUÓÍFO<ñD<I¼üòˉ¥åVøT¼½Â7·—VÉ!L¼½ öÛ¹fÅÛ»Ñ9TµH%;½Jn 0p|Ô¿þõ¯ã¸ŽpöÙg{½Ì ŸtÒIÑÆ(¿ý[ßúœ“è‘®œš2ßÎÎqÿ¼÷oذa>ß>uêÔø‡xÏ{ÞÃl¿?à´öË_þòADÖ½÷Þké|8þøã?õ©O|ðÁ|°ÄTMâäüéŸþéŸýÙŸQüÖ[o5Í 6œ~úéŸüä'¿ùÍoòžb‰¼AüÍßü $ÍÃ?<ǦeEÇ¿ýÛ¿%Š&‰[¶lÁB”ž¦6ž—©+¯¼’+úøÇ?~饗šþO<+þ»¿û»N8aåÊ•–˜ÚÎÔİÒâdñöâ°íDË•¬Óë7dD‡òÌy]jA·¬!Þ>bĈÁƒsìÄ'Zm®‰@%;½$÷SJç"ÐÞþÙÏ~–ˆñ| V¼óv{:ˆlCJR Ò|ðSàÆ”E¾öÚk¿ñoXbª&Y¤ã{c:v<묳n¹åäÛn»7K„ú¾óï¤U¡f–ÍP™]Ý?ô¡Ýwß}ïÿûùT¼sçÎHÇOSÏ,ýÉ'Ÿ¼cÇWC †ç7ÞˆÀÇ—¾ô%ËJmgjbhª8Y¼½8l;Ñr%‡0ëôNúý‚H`ÑfÅÛ›ŽpC¼ ̆qìÄ'Zm®‰@%;½Îå¨jyžóvæ–á·ö,0œäíá|;›·þå_þ%fÏž>>«V­‚ÓÂÀ?ö±Yz–&Ü;ò“Á›Évû;äC¬¸MY‡U gٌԌ·/]ºw¢hæóvÊ&ÏTÿÚµkC³0>x 6é8Mmgj¢—-H`G{ðá xšxÙ²eU$³„@%‡0ëôO¦éì·s 6ÄÛ;èùUS»@%;½$÷SJç"ÐsÞÎTù?øA{: œù¼µ^x\e|âýšï^Ãé÷núæañ¤&Å“¼ý¯ÿú¯©7z<“-1…T›QYNÿþïÿž‰tx;>3IOIm<¼}õêÕ®ƒJðö_þò—–øá˜·äÔv¦&†ÖŠùfñŽw¼ƒïðvÚ;VµÈfg!PÉ!L¼½s vA-oï¬~©ÐÖV²Óë\Žª–'è9oç "èÊäÉ“¾óï„Ä›üdÂùöÝ»wÛ7räHܼM>ì°Ã¬8ûCÁ-1U“¬+®¸ov¸iR)žÿLûsêÄ8•úfÙ4;á‘u¬KÅ/|³"9µñ”ÂcŸÇ?TþÊW¾2jÔ(RxCÁÉß²RÛ™šš*Bo/ÕN·YÉ!L¼½ öÛ¹fÅÛ;½§jbû+Ùé%¹ŸR:¦ðöÅ‹³,•U¥çwž;ºØsù·ã Ã2ÏO|â‡z¨¯!%P$¥(~Ýu×}à°‚©šd±º“ p”ñÄ6MuÜÌ^rÉ%–õZBz–M+‰ýøùÏž8¸î?ÌŠäÔÆóàCÝY—Ê•^tÑEVw¼Ph„>ú¨< +п¥^B%;½Îå¨jy¦ðöÔ¿; ñöκ_­im%‡0ëôÞtú׃âíMǹ!ÞN0> slÍ3¨ZZŒ@%;½$÷SJÑÜ}÷ݧžz*AÅÇŽû»ßý®fu¿ùÍoáÞ»wï .¸ q [üX5±:fé£?|~šh¿#LáiÏ—Ž¡C‡†þí¸‘¨9¥Ž¸ƒÅ5²’C˜ñöïž×tú׃âíMǹ!ÞNb…å+îy”å PÉN¯&i”Bs H ÎÒK–,ÁÝïn\ÁkÚ‡«ã1òÊ+¯ð#gß%,dÑ|{ ú6¯býúõ0vV „¼ý˜cŽáÔòÛ¼ýj^q´Évÿý÷³ä—3þX¥BoFGÏÆÔîvÖ¹½úê«DšB‰Ð×^{-«Ç#Ý:=Å“i:ûí\ƒ ñöâ7YnÚ¤ÓËéÁ”ÕþL˜0aôèÑÖN¨{ÿþýk¶™UŸwÞy§©áÔ}Çwdoo‡Ž¢Ü6ˆ·—‹;×Þ&C¼ýðNŒmæXJCßE¸'˜¼¥O›697ß|“ãŒ3\9)ˆ·w.Á.¨åâííÜ µ¸mmÒé%;.¥týúõcr‰™Ï>}úà$êF¶CÍo?_ñ‡]'²"sP/¿ür–¾x{‹û„6¬N¼½ oJ›4©M†0x;Þ‰ññ?@;eMú¯ýkd¦Ùm*ž#²+'ñö‚Øoçšoo“§šÑ&^²ãRJ!@$íÇ{Œ)wxûo¼AXBf™òÛÏ´È .6lØøñãYòCü%Qسga¦ØA 9«Ç#Ý:½ó‡ŽíPž)ÿö¦ß¸†x;Køù¢Í±Ÿ\µ­Û´I§—Óƒ)«ý`¾,½„=¯9ßÞ·o_Ÿžb\ctóâ‘ ÞÞí§»ÙµêÛßþv–ûgœñÎw¾“؛ոX]E£´Ï† vðŠa 3¶„€·s$ +ý›­ß«óa‘ïŒ,¬‡·Ÿ1äß›NÿZcP¼½é87ÄÛñÂâsÇFŸ&éwíÓéElM§„ÃÓ˜1c¬ÁL¤Cãóÿúë¯uÔQ< ¦öàƒ´*«ˆx{Gô$Å5’õÇw\o·ÅªâíÅáßæ–ÛmûáW'ÌQè'Ÿ§# ’ùÉ@ì ”Õã‘nžÖ¥6ýv®Á†x{›?³j^h·N/§+SVÛ"°zõj|Úªø L<°¬Áì:pàÀȃýÚk¯½á†žÈ=ÿüóçÏŸŸuuâí=|Æ;½¸x{§ßÁBÛß&Cþô`„·%LÖK/½DwG„[ú®-[¶\xá…ֹ͜9sÊ”)hN:uúôéY=éâíK° j¹x{¡ÝHgo“N/§SVG ÀºÔSN9…øíx¹GñÛ7mÚ„Ç; áßzë­„|?÷ÜsY 5ÅÛ;«KibkÙg–…õðvöÃeÙ&V-S‚@› aPq|ÿðY´h‘u_÷Þ{/q Ï>ûìuëÖY ±YŽŠ‡ “í|s {¹Ho/ˆýv®YñöNé‘ZÐÎ6éô¢^K§BÀooA?ОU|ík_ûØÇ>VoÇþýï{^…ZU(•¬Ó;fø]Ê3åßÞô×oçUqÍš5 }ôd¼,*Ùé9å“PÄÛËêJ¯W¼½ô[Ðþ ¨äfÞÀÁÛNÿZcP¼½é87ÄÛù¬Ã’1Žíÿüª…Ý@ ’^Ȫ.ÁoïÆs]"âíÕ¸…^E%‡0ëôŽ>«éô¯5ÅÛ›ŽsC¼ßÔ 6p,ôÑ“ñ²¨d§ç”OBo/«s(±^Â_þñßþíßò“9æ˜cØV¾Äf«êÖ#PÉ!Ì:=Å“i:ûí\ƒ ñöÖ?†ª±•T²Ó«YÕ%8âí­ìÚ¤.b ø±QÞ~ÐA}õ«_m“KP3Zƒ@%‡0ñöÎ%صüþÕ[¡îMÿ·yÛ®Ö<§ª¥‰T²ÓsÊ'¡eÜ}÷݇!ž ›Œä‡ Û³víZB¥@ò¬³Îâ‹^˜ÊâíM|Þ;Å”x{§Ü©ÒÛYÉ!L¼½ ö+³šÆ/½ëF*Ùé…¬Or `7Àã?~É’%lºDüöÉ“'׬ô…^`§ËGyMB¢åì¯*ÞÞçºs‹ð6÷éOšºnÏ·æ3Ÿa#°ÎE@-oJaÖéõzKIJ:åTþíåÞ©o~gô·/Á±f3ÄÛêmÚD¹’^MÒ(…æ"0a¶›M¨{ÿþýkÚ'¸1aÛkª¡ ÞÞ&}Ekš±bÅ ßµ{~2¿÷{¿7lذִVµ”Ž@%‡0ëôÎ:®&ïjOñörïË —Üpò€k8Öl†x{é=X7PÉN¯6(&"Я_?ö]5jTŸ>}p’Áõ%gþÜê½òÊ+ÇG¬ª<ôÐCo¾ùfV{ÄÛ»ñ\wh‘Í›7ó ¦ç¼hx^ñM§CqP³ëG ’C˜uzZ—Z“vJ¡‡ˆ·×ßÕ´f%;½,¨ô‚8öØc{ì1¦ÜáíìâÍî¨ls™_×qLJþöíÛwìØSÄÒ¥K³ôÅÛÛ§»(º%ï{ßûX"ÑsÞΖ”açÊ¢,û¥#PÉ!L¼½‡tTÅëD@¼½ô¬ ¨d§—Å•^Ì·Ïš5ËŸp 5çÛ™i÷ ÁçÍ›‡W¼ñön<×ZD¼½Co\‰Í®ä&Þ^'í”Zo/±ïêvÕ•ìô"â§Ó¢`à˜1c¬üÛ¡ñ5kĹÈ3¦6gΜ«¯¾:«ˆx{·Ÿî*8bĈ«®ºª¹¼ýšï^C¨¢AM핬Ó;bøœ²²²ŠË¿½,ä­ÞC.›óéKgs¬Ù ñönô9¥©d§—Å•^«W¯Æ§}Ù²e{öìaæ|Ò¤IaEÛ¶m8pàË/¿&>ÿüó¸ÊàNÃ…‹ûÃ?憲x{é½D pØa‡|ðÁÍåí½zõúŸÿó¶ ñª¢D*9„Y§7pð𚼫=ÄÛ˽/縜/Úk6C¼½Ä¾«ÛUW²Ó YŸäÖ ÀºÔSN9çd¼Ö£øí¬ÄãýÅ_ŒZ²xñâ³Ï>›h”Íñ«oïöÓÝ—/_>~üøâx;‘‹fÏžÝP¨‘Ý@ ’C˜uzÇ^=£&ïjOñörïË.þÅK§q¬Ù ñönô9¥©d§ñCv4âí¥÷…6€Ø/¿ÿû¿_oÿÜç>÷…/|¡ÐKñ¨äfžâÉÔ¤Rè!âí%ö]Ý®º’^GÓT5>B@¼½ÛOw›ÄKjâĉ—\rI x;{ò¨ÍQóº@%‡0ñöÒQ¯ñönô9¥©d§?v4âí¥÷5`áÂ…Dk<õÔS[ÀÛßõ®w±È¢  ‘Ù¨ä&Þ^'í”Zo/±ïêvÕ•ìô:š¦ªñâíÝ~ºÛ¹àm·ÝÆd{+y{ß¾}o¾ùfV[´3,j[£Tr³NïÔ¡·õ••U\þíe!oõþÛÀ›ýÎ8Ž5›!ÞÞh‡Óú•ìô"â§ÓŽF@¼½:Ц·áÝï~7«•[ÉÛO>ùdª›;wnÓ¯EKD ’C˜uz}‡Œ¬É»ÚSA¼½Üûrê€á½/ıf3ÄÛK컺]u%;½Ž¦©j|„€x{·Ÿîö,xåÞ¿²xû Aƒ¾ño´'2jU7¨äfžÖ¥Ö¤Rè!âíÝèsJ/RÉN/"~:mwß}7ŽÊÄd7¥(dNí¿þõ¯ üNÁñöÒ{‰æ6àŸöþ•ÅÛ‰Vú‡ø‡Í½"Y+Jaâí=¤£*^'âí%ö]Ý®º’^ TV¬\¹òøã_²d ›¥²ï±;ê¬eܸq—]vÙi§–£/ÞÞí§»Ý ²#ê‡?üávàí_ÿú׿üå/·>jO7¨ä&Þ^'í”Z¸õV¨{ÿ6oÛÕÇYEêA ’^ TVL˜0í–Ì2Ô½ÿþõÔ Aö]‚ók¾½žGµ£u6lØ0jÔ¨óÏ?Ÿiövàíÿú¯ÿzÈ!‡ÜrË- ,èh`ÕøJaâí=¤£*^:šÉ/®s®d§Wi”Nèׯ{žBÌúô郓 ®/9ûŸZ½o¼ñ,níÚµ«W¯o/îoËlZÊšP¢¶oï{ß˰M R3º‡@%‡0ãí×^WX:=Km€Ö¥¦ÂÒ²Äs\~ñÅslYÉŠÄۻסÕSª’^©LÕƒÀ±Ç˦6L¹ÃÛ!äÐ3¶ÔÉ/Ï¿îºëÐo¯ç9íh|ä#çw^{òv~«¸îÌž=»£>_É!Ìxû Ã~˜¤C‘"Þ^îm:tà¤Ã~Ÿc‰Ío/®[®d§—Ï•Ût˜oŸ5k–›=á„òçÛ_|ñE‚ò16QD¼½¸§»tË#FŒÀ…m•ø¤Òž¼•Ô4ìꫯæÍbÏž=¥#¦4Š@%‡0ùÉ”H8UuSoo´+«_¿’žH ­AàöÛo3fŒÕ…;4>¿^Hþ1ÇÃ,=_ûÚ׎8â„,ªoC?ÔúÕÒ,©S§^xá…|ða‡Öþ¼ýôÓO‡½ ‰(‘¥C§4„@%‡0ñö¦PG)‚V¼j¹+Ýc%;½|Ҩܦ#Àœ9>íË–-cÆ’x2“&M «ØöÿÙ{h-ª+ïÛµ:+טÁ8Æ ö›õÕ8%šD;GÄ¢(3È ^P.\'fq LaRhDäD[Å”0†)2„©Ò Í`·~KšO`©,¾ï;žTꩪç¹Ï\õüﺫÖyNí3ý«jŸíÚgŸ;ØbþÀÞL—^½zµüÛkETÊ\xÑ¢EâïôÓOo¯[·î…^ˆ_èØ±cËduÏ!È)L¼½„„SM—32ã£ú©ô'T¢hà¯Ndl¼ðr÷Åo'n ^ÄøÆvÎÇ ”¬]»vvöQºë®»*“·›ó »¬âÏ_>×¥’{/Þ¾sçÎîÝ»/\¸Åø,`ã€@e+ÞÁÜtª’PxIñö@©ÌìÀ˜ˆŽøÛR&°BlM,ýC¾OŸ>+V¬”!S¼½XÛ'vÚiÛ?ï¼óÄÛ 8söÙg_sÍ5ܽåpu*¹ñâí»ví‚·ó½¦wïÞ6lãíDßzíµ×zõ÷8þÿð¼ Ù†˜c;Ÿ€>wêÓ¿ªw ÇŒ¥8Cx}韽¿9.ÿïþñ}ôj?Œ5)_d‚ÀòåËëׯ‰}—ðÛ?~|ÚR{ÿôÓOaøì2OÙÏ>û,°ˆx{ Y~ì„åÿú׿Î2: ìâífo7Þ~ÑEÝzë­€óä“OnÛ¶MÛ­–äFoGÅájeŠ?lJ³<ó²þ„€a %µ‡2…@†Œ5ŠÈí& uïܹs†;vìÎÃK—. ,"Þ^:ÄG|VÏyæ™ì¨cç³¾x»s òòvάY³–,YR’‹UÉÆŽ·÷ìÙ“ÍæX—JbãÆJïÈ‘#LÊ\V´Ÿþ„€^ø‡~@Kje `·ü^ „ë &tÈÞ矞aYöë¹ùæ›Ã6fâvå}“Ù¹’ÉI1Ǿwï^tWä’K.o·8Ä“±u©©övÇÛñ™9õÔSwŸø+æõªð¶bÇÛy¸0¹GÇÌPsJL! „@v@o06br‡·=z” RÙ­&ê† öÔSO… ‹·™˜’ý+_ùŠx»7~{æ¼ýç?ÿùµ×^[äKVÉÍÅŽ·‡):å ! „€(ØÛÙÞ5‡#A†övœ10=áèîÊúâíEce¸²‰½yóæâíÎ%¦¶övãíðüþýûíÂUrCâí>…©ŸB@! Ò"ÀÞC† 11üÛ¡ñi‹ °eË––-[îÛ·/BX¼½8¬Œ(10vóúoÏ‘·Ÿ|òÉÄVúÎw¾3gΜâ\¾ŠmE¼=Byê”B@@V­Z…O;[¢jOfܸq^1¶ö®ªª:pà€7“X%lA‚s»735-Þ^8J†/ß;~ó›ßÒð[ßúVÆ ÅÛÏ9çœ{î¹'wÞÞ¨Q#ó›ßüæúõëµUSncñöT©! „€i`]jãÆY‡—»/~;Ûyãñî[yÊž›¶wßDÚ´isÊ)§@Ú¯ºê*ñöºuë^xá…ùåí<ØÞñxÇæ‘GÁ—¬W³’ëoT›ÊB@!PÄÛóÈÊýÎ;ïœqÆæƒMX¼Ý™Ö ÍÛ‰6ÃÛ+Ç‘#G¾øâ‹y¼¬•\Uòx;_'y¡ŽiÀcèÖ­Û²eËJ2_ä«Q¬OX“òU[1ëá´hѳ{³Ý|µÅÍ®dÜE8ßæ«ÎB×óñÇsÃÔ©S‡ ÖfÌfÍšq!øÒZèÖU¿(7ÄÛsdeĈF±ç–[n¹âŠ+ðŠùÚ×¾†¾*ÞÎÔ\LÞîmÏ1|à'Ožüî»ïæx‰+¹xòx{=ð^#À;‡|©,7…Ý G€ÒfáR´d9ŸeáÕÓO?GÞŽ28p`¬#{CÚÙ=„ÛƒK¶«K¹Ý<ôsîܹ˜eŒ·ãZ@¬Wž‹øt˜ø8ù  ±cÄ«ÿŽ·ÓsT7;¡p-xûˆ»ÏX¼®‚z[dÁÛ‰Q3sæL¹yd^zé%vqŘMWQȬÇäžçèí·ß?~ü+¯¼¹}ü‰ÇÙ”Ïs7Üpy“\8!£=X-;`À„gÏžÍÆRÙ¶m+#ˆD¾Nað“̘1ãõ×_òÉ'édçÎñKçë!´üá‡ÆTËÂÞŸüä'çž{. Çý‡ÂâJñvÂã°Ø–%·,¼Å?¼]Y‰ýî» {¢t^wÝuøÕpéárˆñ5œi‚{On^ܸaøË×íQßá– ,€ðˆñÇ ‰;÷'ñ`ù”€•‰4}ÆÙƒŸXŸ¸o-ZÄ3ÈkæÚµkIÌŸ?Ÿ×jà e <³üá”Ñtê©„ñö]»v¡ð‰EELy;÷@L¹ &¨Yó3‰#oÇ.ÁëÞ0F&Žr˜ÁkÛ4ú%ƒêX¾|ym‹—PÞñv4!¼ã¬Y³ !ñE TÓ‰AÀx;œÊ ÍfêG1ïCT˜²YÃE €Übj>ÿüóy|‰½ë®»à<çwÞí·ßî2ñL8óÌ3áêì J¬rL[œÊœæáºùío»W¯^$øãÓäc=FÇèLæÄ‰ ÕDçyؽ{7Dˆ7 †Fm={öÄù™ŒL®ÏέÂkž ¤yâíµ½ ¶5j©üdòxA!{wß}7/›á7ß|“gÄn-&nNž—TÞ–ƒá—"ÜØØŽ¸Íxm¤æþç&ýÕ¯~•7îL´o|ã¿:ñGž;N!À+ðe—]vúé§{ïáÛn»Ç“½½¨ÊÝØ¾';‘3á«0“çÙºu+_ÿqö† ò°ó¬™°bÅ (.Z"1£?™iÓ¦Ån\¼Í >óÒ‡½7^§·‡F[·ya81‚ãí|$•ŸLŒ.\Åv•ù…ùš9š·K_È@LX¾A…?C±¼­¦ o‡xç…CË‘·Gм.]ºð‚ÀÄØ±cáNð ”p x‹†°á?ûܳD.˜¹m¯I¨@g vaÅÛ3¡y…¾ Ùí—Z¶”ˆp{nB A°b¶]€ 3ÅóÇíŠÝc#ν,a†`ûü¬ áPqyAy{m/(cIoçµ.Ö¥’`QyªJ,çVtÂu]TrîjÚ¾ÅÑÞn–¦W{çM;Æ2h×®ïéÇŽã“7© {Ö%ÇÛqõaPÂú²0yå "€¢~ýúØÁ°6óm‹OÞi;ƒ³g¬ÍDI&ÇoŸrÍ5¿ìzùO[}÷Œ[¬®¹ÿs~“~ïÎ:7öEÒ*¹ùú^?>·ÁOþ÷½7ý¦—ˤ¹žsÇÅœqêo®º¢=ÿ$ L]P]Ð\žÐ¦M†$Ì¿=L*_! „@^ÀÞî][J|ŒLìín{h<5„õÄxûÙ'}qÒIÿŸþ…€^Ð âíaÊSùB@! R N)î.–{ we‘!À©ýÄ¿Ü)_Âxûë³ö¾1ëÿÕ¿BÀ‹šA¼Ý§3õS! „@D“瘥û÷ïg%¸‹\jEˆM4r"#yk@ÇTLî,gÙuÚx2µ =’ZùB@$ „í»äU’J ! „€(¬K%R³ðr÷Åog·<Þ?úè#oÓ¿¶O€A‹›ä=ëM›½]¼=atKÃyA@¼Ý«-•B@!PZÄÛóBoT‰H$âí¥ÕÏj]! „€ñöDÒ- Jäñv¯¶TZ! „@iÀÁ†ugì÷Í­?! „€4úW€Òª)µ.„€B@€»~3/ëO!†ZBÚR! „€(9l®Ê¤Œ= ‡ý ! ¼ð=ý€–(¹¦R„€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€qD`ß¾}Æ »ýöÛß~ûmoÿ?ÿüóÁƒß{ï½<ðÀôéÓ½§æÎÛ¼yó ôë×ïÓO?õžJFú©§žºë®»î;ñGÚ *'“°Ä´iÓš4iC‡ýâ‹/6ºèáÜ|óÍvp\´h‘ oÛ¶­C‡wß}wÇŽ·oß]C|Ï.]º´K—.uêÔñ!lìø\xaQZ! „@Ñ€œOœ8±mÛ¶sæÌñ6:zôh2™©×¯_ß´iÓÕ«WÛÙ;vÜy篿þú пo©d¤Ÿ~úé7ß|3u,a˜¤J&#gùòåõë×_¸pá‡~øè£Ž?>ãÊpðöTI8üðáÃ<øÊ+¯ðJ›*€œÿùŸÿáÝäÕW_õñö°±WÚs‘€K¬!! „@¬À¶æãíLÜï¼óŽ ŠScÇŽµô¬Y³ªªª, û¥“t„·¿ñÆ©# Ã$U29£FâµÎÆuïܹs2Æ•á(Ry;/­·ÝvÛ±cǬ„={ödX[ìÄš—·GŒ½Òž‹Ø]JuX! †€·³bݺu7oÞÜ¢E‹!C†|ðÁØâqì˜è5j„ɽuëÖ{÷îMƒ ÂÎÌÐ^~ùe,«6ºL6|7œN:atV­Zá$óÛßþ–75w6ñ‰[o½•›¼gÏž‹/¶ÁΞ=»M›6+V¬Š•+W>ÿüóïwÉ@ÆÇÛÃÆ^ÏE2®¯F!„€e‹ÀgŸ}æÞ¾eËŒPVx;ŽÍÌàõêÕ3a(ÜŒ3àí÷ß?¼,~®ž%"0£â*ÀÞîÞqþ·AE`£Qת«\ô%K–`rç¢=z”+Î\­jˆµ0÷?w† `ï›6mb,Ï>÷luu5¼Å«V­7nÔ=ÖcŒè¼·3ÒÀ±WàsšN ! „€(>Þn64·ìީӫuƒuš¿ûÝï\—0J3¿»Ÿ KìÞ½›ˆ¶3“„Ú ‡‹î]’ Y­({»Ãa̘1Ï<ó ?YÖÁ¢—_Qöö°±Wàsán%„€B@”o§p6âÆXgðo‡ºXšÏå=zô°4&ëfÍšY:‘Ç­[·bdvC ÃÄ $,ÁEÇKÊ…»{wKØ0ÓÇ0[ß±k×."/9yüÛy³s?–ðÙÛ#Æ^iÏEÂ.´†#„€±Cw_H|Ú·oÉ}ݺusO¢‚ûÄ[o½õÉ'ŸLO’Ø 6m‡¡ë¼’|üñÇ555“&Mròa˜8„%pÁ‘ïîýû÷O†á'l€ÃÁQÊ89ñ”xwãµÅ„I³\7Ùñdl¤>ÞNfØØ+í¹ˆ¸mtJ! „@AÀÒ'p†Dk×®µæ,&3´`w,NôöaÞ¼y0yVnâïš¼øí8rÃQ6lØ®];‚çààÆ‰“IX‚K߸qcÖDàånþB `ØpxQ}衇8ïnkÖ¬qba1Ì@¼­£ ÷Ê"-[¶´A…½Ÿ‹\e A! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@!†À‘#GvîÜùßÿýßÿþ„€šý€–S ÊB@! І“òkúB@„#€–(šFRCB@! „@}ôÓõÆÿ¢?! „Àß#€f@? %ˆò…€B@¢!ÀWqæeæj>ˆëO!àEÍ€~@KM#©!! „€‰Gàã?ùäyóæ¥.N—ÒvCB 稓U\! „@Ž·8p ]»vØÒ·nÝÚ¡C‡0yòókoOåíy'mÚ´éÙ³gÞ«õU8uêÔššš‹.º(Þ^œ.ùz¨ŸB ˆ·G(OB@!3gÎlÕªUݺu9’Jf̘AÈ–-[®]»6¢Î¼ðöùóç_}âzgoŸ8q"¼÷ÔSOÅ]ÇŒM›6]wÝu—\r §è¡åãÒS¿~ýË/¿ü²Ë.›3gŽeJòrÆg|÷»ß¥øðáÃMrÆ >øà¥—^zÏ=÷ôÒ2yƒ8ï¼ó`ÔHÞxãuÚ©À#u¦åí] l=p˜;vìxì±ÇûÅ_ܽ{wëFàˆ{¨L!PPÄÛ#”§N ! „€(2yáíW^y%+a÷ìÙÓ´iSÇÛNð*1vìXG- ÒUUUî§%ø(@YÒO>ùä]wÝe™’œ"ß“±cóæÍ_xáÒ#GŽä=Å2aÎx¹Ð+¯dX^o:ÞŽ|j—[æ#<Ò¨Q£]»vyÛ ‘W@i!PÄÛ‹¬ÕœB@rçíXŒÏ<óLc,€Måí^{ûôéÓÏ=÷\üyø@à%+V¬xæ™gà«çŸ¾å‡IB’}~2?øÁ ØöwÅWXq³x{› V§OÌý¤Î´öv„S»Ø:’©Ãä£Àš5k\‹–‘OF?…@oPž:%„€B ÈäÎÛ1•Ÿ}öÙF!à«Ñ¼±}ûöáBƒ«Œ3¼?þÄãü|ö¹g1˜{‹§JR<•$ÿèG?¢]‡Ií‰ Öé+ë~æÂÛ½± ‡ o_µj•kÑ#òÉè§(âíEVÈjN! „@¹óvÈÃUW]5~üx?ü°¯â'ãµ·ïÝ»×ÈÆÀ4h`én¸ÁŠwéÒk™’œzôÑGñf'7I½óÎ;1ûóóÃ?´Ì@ÞV§I=fÈÛS»Øzà0ñ“Á·väm=pD^¥…@qoPž:%„€B Èä…·/X°€e©¬*mÛ¶­st1^áóodž…¢?ýéO¯¿þz·†”@‘”¢øSO=uÖYgYÁ@IN­\¹ò‚ .@¸aÆ&¹mÛ6ö„µj»uëf™0g_Oȫӊx½çä”SNÁ«Ç¹Ü{¼éÔ.¶8LxÔu©`Ò±cG«6pDÞ•ÅA@¼½È YÍ ! „€ˆ@ /¼½8B­!PdÄÛ#”§N ! „€(2ÎÛ±Òûþðù)25RsB lo/²BVsB@! "¨pÞ^¶|I倀x{„òÔ)! „€yD€9·wïÞ:ubehXµâíåÀŽÔ!Pžˆ·‡iNå ! „€È/vbƒSçÓO?½téÒÀÊÅÛË“/©WB oT›ÊB@!wúôé³yófª%:Šx{9° õAÄ òöÁƒßwß}¦;wîL´%þˆk9‡bÿµxëÄáÇ-3{·ñ7cÆ ËÑQ! „@\8pà@ûöí›5k6zôè°>ËÞ/¥Þ b"P*Þ¾e˾:ÞÎÎ> 6iÒ$6}8vìÇ)S¦ØYÔÑiíÚµãè+¢ŸB@! ÊlS/½ôÁÀÙhùòå]o/& R[B ^”Š·÷èу=Ô"x;fv¶QC§q$MâàÁƒŽÞ7nÑ¢EO™B@! ʾ³¯¨uŒÏÇ?ñx`'ÅÛãÅ£Ô[!PLJÂÛçÍ›7qâDô•ãíÐxœd† ¶sçNÓcxÈìß¿ŸÍ×6nÜHšLL¸ÖLŸ>½C‡óçÏ5jT ÆS¦B@òD€Å[·nåSòÈ‘#Ã>ÅۋɂԖˆÅçíGŽÁ›#JÕñö£Gòsýúõ΢WÇ>¿{÷nãí+V¬€·³w3ÇhÞNåð.ÚOB@/hôƒ© ò¤vêU‚X·n2­Zµb]ª[ºå/·ëk¯½Æì/:¡Þ !PŠÏÛ1›7nÜ­Åß­·ÞZ]]íUY¬Ö±ù”|ó“Ù³gO¯^½ÁO¦[·n&ŒŸÌÂ… ½½i&e”žþ„€a¸O{^Õ¡´(ÄÛ‹@~Ô„ˆ)Åçí^­èìí_|ñùÛ·o'†Œ L:u„ Øáñ¨™ˆ·Ç”P©ÛB 0?2…Epà‚ª2ãíŸþ9ž3pòìÚµËZä"ËQñÁØî¾hó…±E‹Øäñrè˜)=à àé§Ÿ~ÒI'q,Pý…®ö…^ ¦ÇB7¤ú…@"PZ¥¡¸tJâíe¨7Ô%!P&$r 3¥÷òË/ä¸óvâjâhı@ø¨Z!PÎ$Ré‰ñ& ñörV •Ü·ý~¸{ïþJF ÆžÈ)¬ÐJ/î¼½n<õA” D*½$±V¥ÐSX©=µw:OZùÓGÞŽû(âÞÿDNa…Vzâíq¿íÕÿJF ‘JO\7Iz «äÇ_cÏ+z½#Þž €y)›È)¬ÐJO¼=/÷ž*%A ‘J/I¬Uc)ôV’çN&+ûˆ·—þ2&r 3¥G¼÷áwÞ¾víÚÕ«Ws,>ªV”3‰TzâºIB@¼½œH%÷í}ÿMöö’߉œÂLé=ýôÓ‚7î¼@=ìoű@ø¨Z!PÎ$Ré%‰µ&{,:#*¡Œ7lØ6RñörV •Ü·_õ›+Þ^ò ‘S˜)½÷ß¿@ðÆ·oÚ´‰)ƒcðQµB œH¤Ò c€Ê/+Þ}÷]bðºÈÆa}o/gRÉ}»ºæ8oÿðÃ+„’=‘SX¡•^Üy{Éï:u@”D*½0¨ü²B`ðàÁl/˜¶K…žÂJøô©éX#ðÏσ·ïÛÿ_±EÜ;ŸÈ)¬ÐJO¼=î·½ú_É$R饥‚(ð1bD·nÝ&MšôÙgŸ…u©ÐSX%?þ{.üú‰ã¼ý?vïË¥’X—%‚ýÚmÿYÚ!$r +œÒ[¹rå?üÃ?øxûÈ‘#ï¹çž‚^Ge%iA›¬œÏaÆ ûÑ~tÎ9ç ¤fžyæ™ìf›šïr®¼òÊyóæ¹ŸÑ 6‡Ê¼éèªtV‰Tza Pùe…@ãÆ×¬YsôèQØû믿Ö·ÂMaRB Œ·ß8à½\*‰uÙás6ðæ²iÇžŽ"‘S˜)½—^z)ïÀòö¼·â«ò o_µj•/?ëŸ&L`Öà˜¶†9sæ@³YB•9y>묳¢y{ÚF½âí^4”Î ‰Tza Pùe…ÀãO<¾k×.ºÄ £¾}û†õM¼=/Oº*É;MG/ƒµòŸ÷šãRáC—3üU[v•°Ã‰œÂLé?>/ÀB›YIôƒü³suuµ×ÞÎOlïßüæ7¯¸â _[pÝ /¼ðŒ3Î8÷ÜsçÏŸïÎ2äÆo„_|ñÅÏ?ÿ¼ËߺuëwÞ‰0E~úÓŸºuǧ =í´ÓHtïÞÝá%¢yóæTõÛßþ–´Ë'üË/¿L§žzêÝwßíNÑâÏþóoûÛßùÎw5jäò£µ"Ïðögžyæê«¯¦·7Üpƒwõë÷¿ÿ}2¿úÕ¯¾úê«Þy;¸îºë¾ûÝïR¶aÆîT“&Mè*ò”âoæÌ™î”B k©ô òË l츸þùç(UZXßÄÛ³~ºU° 4#Þ.Þ¦·rÊϯ҃9Ã_{íµ;vÜ~ûí^Þn'}¼Wxþúõëøàƒöïßï%èô–-[øÉ»TÜñó|ðæ›o¦ NmÞ¼ÙÉ[‚FSýdþéŸþ©cÇŽ:tèøCoä/»ì²åË—S?°SëÖ­ƒÏž=›Ÿ»wx‹D¤kÅÛñ“á…eñâÅ,¿:ÿüóû÷ïï«9Õ Á””è­ãŠWæ¦~WJ !€x{NêU…s@x{Ë–-QÚ «)¿SXij SB V4ÿ½x»x{˜ÞÊ)ߔޢ÷7/ß¼+÷ÿßÜT§QóÖÔ³eÇœURyûSO=åãíãÆÃ>üìsÏFpc˜3†ú·ÞzËžxûE]4mÚ´}ûV|¤òvlø0dGûÏ;ï¼… ºùwÞyÇý´¼ýßø{¾SÑ?kÅÛ½´ü¸ë®»|•{ì¼¢÷Þ p™«UÓ¾†ôS" Þž“zUáÂ# Þøä*³ä´¨xÞÞv|EóvÌ÷ÝwŸ©@'š5kÆZ{(¥å:t¨gÏž?,±‡¶LVôàÂߌ3"t§)½ëkÞ4G¬_?ã?¬×“J îþí©¼‡kâĉøÃà¦rÓM7mܸÑ=n¯¼òʯ~õ+˜*Î0'Ÿ|²s‡®×ÔÔàÄ‚¾U«V^=eSy;°|ýë_‡Û~/8í¸VRåíуqª¡È¥—^úÆo8ùèD­È3•»AµiÓæŽ;îðUî°SøÒ´k׎W>R`†òÊתioA¥…@âíÊS§Êñö°‡Wù¥E åØ?¡*m7JØú—¼}w ûPª) wÜKŒ·ôÑGmÛ¶ESáÑ㇩MÂdámrìØ1Ž7ËÄiœ‚HBó8†)XSz·ÔÌÊ‘±[ñï\|ý™¿¨o¼Ï(1¶ô“N:‰£]¸@Þn§¶mÛ†wݺuí'[AÁÕñý°Ÿ¡Wx5€¾ú6{¥QߺTz‚˜Õ“z ãí&I¯À™ÖS æÔŠ<{iy†¼Ý5 áÿÚ×¾ÆÐ\Mã÷î~*!rG TJ/L_)_ø°)Œ5÷»]5<" Þ^ɼ½GøxoÇÁÇS\]»výôÓOIcOÞ»w/ ޤIà Ø¥KC~Ñ¢E–N=šÒ«ê]“Þþƒ;ºÿ¯SÏúq“gçþqý5×\“ oçdÉ’%<,¼eüò—¿|ôÑGíÁÁGý”SN™ãûc uêÔ©vŠLó‡_ºt)Œúí·ÿn½ö÷¾÷=˜F¸Rà Éf%.S !5âíašSùe‚@\x;3,ϵ}oò –ºÿwKÂNʇeÚÔvÖ—0Áý|™©?{ø_J°‹JjOŠœã³õ¸ãÞÝügÞ.÷•}ü«í2)ÞdäÒZ5”I¹ËT&o?räHçÎ9¢!·3ÞÎqÖ¬YðXø9§`kÀ,ÏúMãí+V¬€¾.X°€c&¼=_þív—rÄ¿Ý.º·ç~'¨! І€x{™°Su# ñö_õ›[Û'צÔÀR—>Z;NX ™M¤Aø’GÓQÄ  ©ÅŸã³Í‰U™äd>joñÌK!yyÏ9µj¨V•g-ü%o¯¬øíÐröŒcé%XYM‰ÿƒ×OÆ¢c‘o~2{öìéÕ«ú|,®¦èÇ»&Z鉷g}gª H0âíašSùe‚@ÅòöËËU«WD8-oç37bâíÆZkE§ku-¼óŽx» oº´S˜ÙÛ?ùä[gÊÞCøÀ˜æÄñog¢ÝâQ3yòdËìÔ©2è4¨r Ó±¦ôÄÛ½:,ߟRÿ|ž?aÅ•/b‡@i•^˜ÖR¾pT.oÏ“‰µV\á´¼ÍEo·ÝB"sµ_«ká­¶í†É×Ñ])¬ÓÞ8ż^yi‹E?ñ¸[›—:U‰ˆ ‰Tz©ÜO9e‹€7 r`'+–·_Q®öv"É@$ÄÛÅÛÍÞþÇ/W;–dÖKäfJO~2%¹£Ô¨(s©ôéŸ2ËoäÀƈ·_]“Ïu©Wôzzœ»1c]†õ œÖÞ¾{ß~ñvðìøRñìíùz‰Ëð6ÈP쯼}Se­K TSùÍoÏ𔘨@ÄÛó«oU[­ð…A,[n¼}뮽X¿ÃéŠw×ýë4ÿ¼ý?¡²×ÔÌ]´q§Eq'*{jôõùkþã_WoÇÏä½/kˆ Õ? áí”ÅÃÜu m"¢‰Ô²aÂŒ‘‘š<±Ä«;xAjñ´9!wñÏ#„™Hòœú·÷ÿØ£eÂÎ ‘ØÃΦæÓçwÞ?¾ó—Ÿ¬yûÂ?ïô6áÅÖ›ïMgÈÛ ’þTµ}÷¾×Wl·:ÿôï»Wÿ{¼ïüé/©w¯•ó§¿lüË_w0Þ¾lÓß Çu›kí$]¦7Á¶aÝà›O ÈxåIÓó?~ùš`^"§0ñvßu×O! ‰TzôO™å†@jäÀ–ooñûã»íØ´`ýÒcæm2:o'ã¬å¸Í–9`ö:Æ9ÅLøç}ìílxD‘Á¯¯÷Õñ3¢‰ÔRaÂSÀ©7V'~;Oðö[eÃÛÃê÷õ䆧ßCÒ—éû‰ÀíÙÆ¢|á w ÐWsêÏß¾°yh$GþM C¶þíÔ°gßß¶è2l©Nmœ y»·{V9Fßø²û”?‘¶Í›X³Ôü îº0µ'ö©åÞáÝöÑxûÒÞžÚ_…×<~üyñeÚÏ‘s7rÊ÷‚Ã)º}ÙcsH¼µz;//ú ‘S˜x{à]¡L! @ ‘J/þ)³ÜH ƒØÃrãí¸‘8²1óÛH?>s-Gþ·á±Ÿ’±Ló‹¶(bVŠ z8ë«ó)™]&­ôåGüŒh"µT˜ðso'ºl¦{¼’.(o놷ÙÈxå½éG_YMq3¡{óÃÒvÑmA.MÌ®c&ÛT™¼£ýÔÀ7 ×–a;á¶.Ó—ÈÐi*—cÛx­:ûÅeúZ±Ÿ|0 °Kï¶Žú+oßlo«Ä5!ÐgúÎbrw–pE^úÿ“~îí?'r 3¥WÕ»ÆÆ›¯cbÖ¥¨§K—.}·‡~ J@ ‘J/þ)³œˆQ</oŸq‚·?1ëïxûÏ7T:‚áU#–™;oï\tÞþü ÞnÜ R§öö@ô¼H:ìÍÌ<ýÈÔãÆgG"³@¼=‚ {yû¶]{éÃ-%åíŽûðÉðg¼}îšÚñvŸ!Úâ·gÎÛ¹ôàÆ®«™ðö@§)WƒKP3ÿî' —sß ÞnÌÍez%]ú?N¼—ùê±³vé}¼o@®¬7Ý ’5'¾a½¶|›·Bo‘/yû†DNaò“ñ]wýBÀ!H¥W9t·FZv~2j4ãǽ¾½½–¼ýøÂÀêrU8oïT{{6‡p³ ³h”n—–·;ìTY­æìÍ2á KÙGsìgìVÊöKÍœ·›ß¸]qN\Ó™øÉ:M¹\"õvr9æ¢o.ý.Óô&Ì¨ŽŒ7ÓÒ¬$%ßÇÛS½ÐM8ºd"ì™ÂÍ×W—-Ò@—È)L¼ÝwÝõS‡@"•^%°ÙÊc¹ñvÇxˆŒ·?ù¥ŸŒñözéüdÌNkñR¼µ¹§Ò¿è`o_ºá¸½½@¼=‚ {y»‘·ÒòvÇ} eø³û”UÀX[ÞnÞÝ´VÌ»›c†:7j€»RÅáí N,­µØ/tÀÂuÃ%ì½,P€Ð4ä§ðöàÈ<Ñ­Ð\„ÀÓ¯_»=}ÙV×+K¸"ÆÛù ”È)L¼ÝwÝõS‡@"•^åpÚJi9óvxD¢¶¼Ýì´Ïx†n÷HºDo·5N2:á¨N´g±L•4Þ>þÝ-œÚ²cuÞ2°€ñdÒöÙ› –ÚÕLrªNðöÌCAš½Ýgˆn5îxd¡Ìy»ë3¥p8qýÌ„·ÛÇ™\©ÀD*n.§þó‹H[ì—X‰‘s\úSÏڥǃËN™»7,ª·Ht+HFXÌ¥iKCy;Ÿ~(žlÞ~_ßqQ¾Ž‰ñoûí·gÏžÍÑ{¿)-*ñöJ ¾±£ñöQo­&05ëÔ ¸¯­ð=‡€¢Ð‹F1&)æ;>¸óÙœÉêÙ+¶±á#‘+ U„•#¨#qù0¤{WZAø‰ñª¥!Aú¼ú>i³ ’0{ûož:¾ZŠŸü».á¼á/Çé.ÿÆÛé•ÃÐMšà7{eé¿wBØKÕˆÎMÉ4ÞNÿeá+‹Ø¬åÇËZW½Gk”q œ½Î‚{#æ<‡ÁíÕe[ÁŠ“Î›aâ’JhÌ_]ºÕ¾o·X”ÎèêmË—D©žSΞOý„Á$”ŸWžžÐ¨%£Û\Âà› g¹(n€WGE¨œ‹â­Ð¥ ~hvf»y»a2vþ&“!° ]¥ û¹ðÏ;)ÒŸãnûãí® µÕjìqÞw¥op\;.±kÔt˜KÿĈmß)¬iÒ&0òß6Úý}ûOá7–÷YåVŠÛ˜Ï4˜ý‡½õgô$kÐëëŸyóÏîæü¯ëY1MAž +h†Hó½†|ˤÜf,2$™gÝY=ðvêg Àä…[\,wîgÊoÿÝ¿ÕÈ?MSÜ÷çÞqh…rsÒ´Å>µÑq´âÔÏ fO.@—ùɰ‚Ûª¥ ­~µ"dÚMt·l}íµ×бÖr¾Î›ÒëÖû o¾Žîa9ýôÓO:é$޾«—Ÿ555lØÇ1.V?…@o÷)Lý,7l cËï_?1ùë÷ó7q|kõñMpÜŸÍkÐfr`>ü„Y¦;:a_ ÖanN>զͩëž|× °þÔÒŽ·»S4aé_öý«e’ŸÖ köëÄ,š·'„4"óÏ,ÿÐ×aËáh}38d‹áwÂ.áJ‘h9öäÃWIóª÷žuþÛ¼zämCþà0¢kK¹®‰°{3Y=&@Øy«n˜ù×´wζøý2o‹OÄwgakVÄÉØ[™U2c‰›026pW–„¯6oP} i‚ kB·»‚CN´uóÀã£Ãêî¾Sð‰Ä*tG[GŒ—ŒQ»l/$[æé2-2æâ^C|.î¨/߂޻LÛ\Àý´ýqoOÐcË´ÞÚ÷Þœ{ šëb¼Âow´ÜÄ|›=!ÙëÄ+-g½˜_úèqÀ!êä[ U+nG^HF•£aKÂbu^þØÒ”åh ãí¤;_˜TÞŽÒ³ñæë˜ÞΠ?!P±ˆ·—MU|8Þn“FcÐTï3ëæ52¸µ¢ÞSÞ".ínúw`'c 'i ã¤#x;gSËšw×Þn[¬š2<ÜÛÆO× —o¼Ýø–LFŸØ§fÔÜNØ%\)7xü'ø3$[«÷¬óß¶L$½gI{y{ÓÑË\a £»î¬Eq¡÷úãNÁ·­­›þí͈¶æAÆu¦]¶£Ubo=¡˜qûÔ².Çë¼dŸì”·[[önowï;»YÂÞ"É'l&»D¹†ì²šeÛeZ‚×O†I~k•øÌ>ïËLýÉ{Yj&ŸÜÒ·_˜·^œûÊš †wòáíÞoäð]ÆÜѽ¤ð-À[ædï&ÞSî…‚LûtEÂ\ÜMŒ².ÁKßÿìü"óö©S§vêÔéᇞ;w®)«Î;w<ñ7pà@Ë9tèPÏž=xàbŒ>|Ø2׬YÓüÄߌ3|ZÎ÷Ó§ôl¤¹ÅÛÝý©„ˆ/âí>…©Ÿå†€o 3ÎÁÛ-¦ºó9w“]ØCê|¶åúÏ–·{)¢E¬ÿÜqd>%¸.‘ðZ2]¾ñvoÌ û ëBê0])7o?ñÕÇÛ}FTªò–%m¼ÝLÍÆ¤çíØW)åºÁÛqذ¶|Fcãíx¹ØÙ¡oþu£XûiG«ÿ±WŽû,½sâëƒkÑNÌìä¾²Îaƒ|ïË”—òvÛîoðœ|MóaͱM•÷ÅШÂx;n0”z)7Þn;ŠZëîHì÷u ·ã®ã»+¬¬ËNálïÖ®ÚYûxä{$o?>:ûjã:FÂëÿïx;N\TkbÞÄßxûsÅæíÇŽCI~þùçpp6}&Í@>µ9iÒ¤ñãÇ#ÉqÊ”)v¶}ûö[¶lA¡µk׎£¯ˆ÷§OéyQÊ%-Þî½E•1E@¼Ý«-•.C|S˜™ïÒòö@xàCêæA,¢.MwŸ¼÷,iö[·œþ'b_xÏRÐý´JÜO¶žÑ¿ˆÙˆÝ=ì8o÷™I½.Ó®’'ü~·›'ó¸æGŒ¥¾>{{Bq¬Ù䨢?‘™O]µ>· _YÄx; ÓÚÊ„·D±?ÛíˆzÌå‰Ä—gþFaݸþ„‹Ž¥9ow¬>‚·÷œvœ·›×«ÖVi³c»ÊIiî–éu^JËÛ¯®9®‚êž[…ÞÖy°šëþƒ—·›ß¾Ïjm’PÖg·ÿá¯^O–ïŽÞ޹ÌÔ„ïÐðÂr«Âx;ÆóÔÚlPæ°o÷õ<•·›ó?õ¤ÚÛÝè|­x?[Ø;¸¾Ó´Izv’ßè¹yE¶·›’ÄxÞªU+K§òvÌì{÷îå,GÒ$<èÄÆ·hÑ"+xô)=PYÿo÷>›J ˜" Þ¨6•YFÅçnݺ-[¶,¬Eßf4€µ~Þ'ÎMddÚ¼ y»×ÖJ€W ¬ßÞ&H{Ï’v¼Ýh°÷¬WØ*ñž5JãݹC7bæ0ÏêH¯°<_%¶^Ͼ)0^Κ œ|LÒ{ôÖ†Û0§  âÎí=ë#cHzÏ’†é‘iËÍŸÞÞîÜ’­?æ^B=©¼·kË¹ÐØÏÌy»9Tû>X»Vi³cÛO—éuÏðòv{½2±@{»Ù„áíÞïÖ¢;:òÌ×óܶ m¥§p;Eµ¶ÓK¹ñvŸÃ•UÎÚjGy;N,FÎMÞmD| Ox_Ïí;…5 ‡^*ow_\å–ð¾þüúËõ¶dèÖ%œÛ|ãRðöÇŸxü¶ÛnÛ¼y³i-ÖHâ&3lذ;wZ2û÷ïoذáÆI“¹|ùòÁƒOŸ>½C‡lô‰ê Óxä›ÒëÔ§¿¢¢[ îüç´ãëR9ÚÏ\Ž^G>ï PÐtÿþýyâXÐVT¹(OÄÛ#”§N¾5Û$Õ²e˰¶|¼ÝÖ6æ‹·{9>$Þi1-o7'ŠÔ–·› AlÐ Ö¢->5{,1L¼Ýp¡<œ0gSy;|çþíÕ6ÞÚŒ·á·ø'Þ³.ˆez[´ãíÆ÷X@êm%0}yÏ¿.'´³Ž·»U·®ÑQ¬ Géí§·ãèbEì¬-§÷‰…|­puº„3>ì+ëuÏðòvçé|4o÷~§pZÂ}=Á¹Ý-d¦BNó“±~âIb•x;LÚ·€ÚwÖýœó¥©ßå`±ª[ÅÆÛñàò±´õÄ.¼Ý×ssú2;Fðvç½ïkÅ £» ìËšIº·lš(-oGYmÚ´‰]ž±¢“>zô(Çõë×;‹:\ýÀðùÝ»wo_±b¼}Á‚3äíªïƒ(_?ÿñ§ÂÛ9æ^!œß{Ý‹“&䫯¾Ê±8Í©!PVˆ·‡ÑEå-ZØ ˜Úh oŸno·˜êÚÛ½œÍçY}O:{»ãr¶TÖ;òŒ»Ÿö¼»Ÿ$þÊÛ7ý·[ts°'žWØž¯ãí6F[¸GJ9ZëU2ÞÚ,èº9ØåÏ9ÄGƼ£°JXýJ&«_ù™ o¿"„·;/×O3äR­3´Z‹åí_zѰ°ÔŠØY;ZNŸékøéb9ºšI81œ·½Is–È“.ÓÖWÚOodw­í”½€,ˆŸ-~ÿG¯³··]ÒÄ„±"¼”yy»½ øâù˜ä {ûñ~²rÓj³|wÌ·‰Åq "C:³¶­eæ”·ìí| rò.a2v Þîë9|ÞÜÑ_S<ÕÞn¼ý_ýua©kÂkÃw¼ÝÞÐMƽeÓÊßxûó¥ñ“AS=ýôÓ°q¯ÊjÖ¬™y¼WWW›ŸÌž={zõê… ú‹&ŒŸÌÂ… ½}iŸÒså+wÞîn3%„@" ÞîS˜úY|˜¤Z·nÖ®o 3'pâUNpiâ=:³!“´Í(±û|sÆ:œ1 «xYw™´’¥Ž˜Ï€O˜ŸÔ€-ô£ÉÈ¥ða­:U’ÝK}™^Ë!Z“”O€Ÿ0m3’“&@‡…$íœÀ­®ì𽻟[tÍ ojËäˆ+»¹‚ß7|IÍ̵–}{øœ Øx!–ø±ðE€ð鮈%Ì»˜4¾îŽüØ)ÛÈÉÓs—¶DÃáKìÁ~ò¡†Ó;FQüyÌc‡Ešô.a.¾¢×ñ«òø§¾IqŠ÷&òé°‹»b5{Œu¸–oçZø|inè?Ÿ¯0}ÿïqÞÎ?ßMð*çâñ7gñ†][äLoå\VoÓ¼%š©½ERÓÞj»ýËj–ß Ìì諯o[xnƒ›/ßûß'^ YÐêÍÌ<ú:IY¾J¸‹ÎŽ·Výo7a¹«Ùv%p?-ATL ºÅ¤¾E¯ÕÓ×pyšÀÜ IYo÷¾ãøšð>ÈîoèΕݑyî1„š Á‹ìßN¬”Õ'Ÿ|ÂòR³´ñÅälß¾2¦Çˆ93aÂÎNœ8qòäÉ–‰OàÖ­[Qh,Påh™GŸÒshä+!Þ^dOCN âíjS™ÅD`È!™û·g=s¹ÈÞÌÞ›“÷t`í¼·Rˆ Sy{ÚV(âïg~2Pz w“ZÜ…"·ý@S|9.¼/ŸŸ.XMê)ËéñBvÖò-^J´LÑκåEk1ó†ìÌ'ïX½7ßÇÛÝ+˜W&"êÚ„°Yì­Tñy;nÕø¨cQ_»v-zg?â@ÂÉ °k×.ÓœÄ~ÄŒíf'ݺu|XÄ&—{´‚oO ÅÒ@„@ÞoÖŸ:[hpø>|xD+ùšÂ|~ã6éj/‚3äåTöÛ¼´›{%h›ÚVB¯ÕÔ<p>ÁHXÕÃÿ²:0?,ÓG½bæ'ãÍñ¥Ù*⣉ .ÉôÕS´ŸåÌÛA0*ß)֣߫—ú¢A(UÀûE ø¼=BYåë”)½{úMJ{^râno_¼xñ{ï½Ç1ïŒH òG@¼=_šVõdÑŒ1[Ù·æ°âùâí¾8-6ýZó23ºJ*Š·ããåí¶ÓdØGÞ8>Ï—–ˆàí½NÄ +H>¼}ä Ïü™²âí.DyD‡ËêTê&ÅtϷוóoɰçwŽÛŒ•JÌÛ«z×dˆRmÅâÎÛù–Á`ŽåO±ÔC!wÄÛÃè¢ò‹€adðl·­áð-”·Á¤ޝ¶ólIäÑ6µm?v/o·È‡,Z ôµ¦òîSVÕª‰ÔÐ=®¸ Vãr| x»[‰é;å~†Rqg‹œp~ÝEn7ëæÝ|ŸZXŽQ«ú¯¸í±eõ$˜·ßØov­°Ê\8î¼(=¸$qÌ;#R…B üoäŠÊ, ÊÛ‹@\ïÌgÕ2‘D}Õ¶'Düðº²[–å¦nMe5wŸò§Z5‘º ®+žö€žÞw WЛpá(½™¥JáæÌïÐRÃõP¿ÏÑ¥Á ‹kÕhà÷¾£%˜·3´Za•¹pÜy{ù3+õPñöò!¨êI ùâí.®ˆwvó’Lo~Ó•ÆÛ]¸04{;¡{ƒÉ à ž“v¢š„ÉÆ$ì”å>%íå ]máÎz‘,\+y¬9íRÚ":P­Zô†¦q½kÅÛ,™'ÄÛ Ç©T³(4âí\Q™åƒ@Ay{Zlj̧Â0I_ļ0±2ÌGùÔ¶W{÷ÿ——mšû’;-b|jm^ÃiêÙÔï‚DßÙÎ)Ñ8}ì9åí›ï¬ý ŒØ(Y„Ì´½-BjÕ„7Ì‹+èÛ£ÖÄÞÉD$ˆ0™zÖûmE¼=Ÿ´9âí…fVª_ñöò!¨êI ùâí¾m•ÒNmÈ.Nx¾*̺ž £Mf]¿ óö‡ª‡ϸóö^xaàÀ GT³([ÄÛ¹¢2Ë|ñöÍ€ªV"`ÞÞ´Ïï lÜyû”)SØs–cÙ2+uLñöò!¨êI âíš»P­oÙŒ¨b‡Pwð²{‚y;CË“´¥âÎÛ ÇˆT³(ÄÛ¹¢2Ëñö´³pÅ üúñy;ö„ ܶèÊbPâíY€&Þ^þÜL=aˆ·—AUOoÏb^®"×=ùn…Œ4ñÃ$º~vcoÏ7ñö0F¤|!Pþˆ·rEe;v´iÓ¦iÓ¦cÆŒ kQ¼=‹y¹BŠ\ÿÔü iâ‡YgxûßT )½Ûk^)Ðu;o_»víêÕ«9–?ÅR…@Þoÿ›®TªèôèÑcåÊ•‡zôÑG7mÚؾx{æîT«A ¸ˆ6„[Š·ÿMÿ™Ò«ê]S ëwÞÞ»wï.]ºpÌ;#R…B üoÿ›®Tªè´nÝÚÚ|ã7^}õÕÀöÅÛ 4w' Ú›ÊOæí\G†pÓ€÷²H‚ýdêÖLÏ“´¥âÎÛ1òlذcùS,õPäñö@®¨Ì" °sçÎîÝ»/\¸ðX³fM¿~ýýè£^{íµßúW&hý /ž›çý©t|hü|–—Í€~`f Ô…Èœ:uj§N~øá¹sçZýØš5kÖ¢E‹uëÖYß{öì‰fÃ&|øðaËDË5?ñ7cÆŒèŽÚXwÞžw"¤ …@ŒoÖŸ:[8víÚog¦cjÃxÆÛ¡÷ÌËúB@„!€–(œ¦òÕ|ìØ1r>ÿüs8ø‘#G0,´mÛ¦ýÁtìØÑ„'Mš4~üx$9fÜ2Û·o¿eË$ÛµkÇÑW­÷§x{ŒH”º*ŠŒ€x»W[*]d˜ï¬Eüd¦M›Ø:3#“2Ïs™þ„€^ Íè´D ö(\&ÆóV­ZQ?_ ÙÈêڵ맟~J[ÄÞ½{Ip$MâàÁƒ¸d›ò‹-²tà‘ò†Âד´/Ù ÈÞ^d¢¥æ„@oT›Ê,|J&,€}SÞ¸qcqU+B@\xü‰Ço»í6ŒçT2zôhfúöí;bĈ¡C‡.[¶ŒLxðàéÓ§wèÐaþüù£FŠè€ñöÕ/dGËÓ–Š;oŸ0ahsÌ#RUB .ˆ·G(O*4Ê0¹GÇ,tT¿B ¶°(ò¾ûîÊN [x;ÇY³fÁÛáçTW?pàñ²vïÞm¼}ÅŠðö pÌ··®––g'wÞλҰaÃ8Æ…h©ŸB ˆ·×V]K^! „ÀÓO? K_¼x±×O&2ÕÕÕæ'³gÏž^½z‘C~·nÝ 4äñ®‰P~2y$9ªJ$ ñöå©SB@! ¼à×ÇÏO>ù„å¥GµL{ëÖ­øÀ˜$1gðâàìĉ'Ožl™D¡AI¨rôÖéK‹·'Œhi8B ˆ·û¦~ ! „€C ÿþðs,êì×i2Äu$dË–-]±YŽŠ‡ Æv·f–ØYÄŠD/÷°Ê-_¼=$GU „! Þ­?uV! „@10Þ~KͬìÜ×Ó–Š»ûöíÛùrÁ1a|LÙ Þ^Lm¬¶j‹ÀŽ;Ú´i¯…«DŠàƒ8¾¬Y‚!ç}[–Ú˜/y–Ô±ÏjKÀ ¸RØ?qZ`û€d }Ž™—Ûe’ñÑÇÌV§NüLr«Q ¬/fŒwëvÖGãíU½kÒ2ðìâÎÛ¹É ªÉ1’#!0ÄÛ³V­*XȰråJJ}ôQ8¡ÅÜ›`C*aæå»9‰BlË’{'³¨¨w,Ä3Þž€A½ûî»t> ɸR0âŠ3®ÔÒ¥Kcz™è9Zî¿ÿ~ãí¹Œ‚7²Gy¯•U«V=öØcYÜö%)b¼½^¿)ÙÑò´¥âÎÛ ÎÃMÂ1a|LÙ Þ^µ¬F3D uëÖ&ÉÆLx3,U&bØr "QˆmYJ2@Þ¡>üðCãí ]¾³{‘LÀ úôé³yófE@BˆM¬Gäx{.£xå•WPv•Ý.oÞ‹^žiãíÚw)#!Piˆ·—§ÞV¯@€ïÚÝ»wgÖfyVÄ~ýúÅf^{é(Ķ,ÅÇaÞ¼yDÆ ]ãí oUlÝ‚;[ÒöÙg -ƒ"f8n?¬|d,q‘ãí¹\6HZ¿~=_X:Šá¿;`IýóhÊ”)öSO•$G¼½Ò˜˜Æ+2G@¼½$jYf‚À®]»àíaàë?ß»ãÅÛ‡ bþí…Ø–%ôò(ƒ3IçÎÍ¥Äx{Õ¸qc^ñÄ€½¿þúëÀ•€AáùóÒK/mÛ¶ ¿2B‹ÇzDŽ·ç2 ãíÀ²hÑ"x{˜‹;¾mØžzê)¢Äà¢óÅ_äññÉ¢*ñöÌ9Œ$…@¥! Þž…RU‘¢!à>mó±{Ú´iEk7džØqøðáVI!¶eɱ{µ-„å¶:ñwë­·Âm0(/†@Á+!›Ô“ˆû ðâ~ðÁíâòJÂc="ÇÛsŸ +Ü#î|£î˜°tÂ…>e¼½IõÈ´žêÙ ÄÝ¿ŸI>“q¬4¦ñ o/´Vý¹ гgÏÕ«W³.•ÄÆs©ªheY¿ ³u¡0p]à3=q·e)ÚXR2{{!öšIm« 9ØØqq‡­á 1sæLÚJÀ ¸Ó¸ÍŽ;6räH-ÏN î¼ |áX9TM#ñö’«hu@! J‹À|ÀrQ·°´´‘ŸŒ£(J!àC@¼½´úY­ ! „€ð" Þî#*ú)„€C@¼Ý«-•B@JCÀ‚:Ú‘ˆŽ%¾x»£(J!àC@¼½ä*ZB@r@`ß¾}ìZòžo¿§ß¤ìÜ×Ó–Š»ûâÅ‹ß{ï=Ž>>£ŸB o/¹ŠV„€B L1bDÉ{b¼½ªwMZž@Üy;ÁdþñHšÆ(|ˆ·—\E«B@!PB¼~2cÇŽ-aO¬iãí7ö›-O[*î¼}÷îݬ æèã3ú)*ñö’«hu@! „€C@þí•À¾4F!âíNU*!„€B äˆ·gÇgTJTâí%WÑê€B@”V­Z5nÜo™û￟4‰ÒF•o¯ö¥1 ìo/ád¡¦…€B äŒ=šH2tãàÁƒýû÷îϨQ£`õݺu[¶l™I²wg³fÍZ´h±nÝ:Ë9tèPÏž=xàÖN>|Ø2׬YÖ¬ü͘1#º ãíUM멞@ÜýÛ_xá…rÌŽö¨”ˆ5âíÑúSg…€B Ù``ÿôÓO#»C‡уýüóÏ€Z·lÙ’ÄG}Ô¶m[~²ã*õXÙI“&?þرc]`ÉöíÛoÙ²ÉvíÚqŒh…³¯½öZÓ>¿ËŽ–§-wÞ¤ãÆãkö¥Î ìoPž:U9rdçÎÜÞÌeúB@x@3 Ð¹(«E‹A×yä¢ ’ΰ* ìØç.\‡´"]»v5þ™}ïÞ½dr$MI*71ä£[a€ðöëkÞLËÀ³ˆ;oÏŽí¨”Hâí¦Hu,[˜”™Âô'„€C-‘»3Êa=PëÖ­[#ŒÍܹsûöíKà÷¡C‡šó 2û÷ïoذáÆI#¶|ùòÁƒOŸ>„ùóçãlÑx{2ø•F! €x{„òÔ©r@€ÏÐLÖLÜ«úB@x@3 Ð9*+HûŠ+¨äÀ™T5dÈ£ècÆŒ·sœ5k¼~Nq¸:õôèуãÆÛ©Þ¾`ÁŽâí… 3ªST(@”o÷™h*É–.]ʇà:uêDȸSøˆ2Ý{ï½LjØ \~jÂLOܨòHj˜B@dŽ@^¦0&Áššš6mÚ ª««Sµ/ú=|øpË\¼x±×O«ÄüdöìÙÓ«W/rÈg)«AïKMéÝ^óJvn0iKÅÝOfíÚµ«W¯æ˜ù}"I!ò¢ô52+ ÿùŸÿáû/q2äí|\f1×¶mÛÖ¯_ß´iS”p\âí‰Ñ6ˆÈ;y™ÂŒQ›ÿ¹c×a‰µ¥pû£Gšvu[gºuëVt eN:u„ ÈLœ8qòäÉ–IdPh,PåV?ù¦ôªzפeàÙ Ä·³d€‹Å1ï·“*å@^”^„þÑ©ŠBãR†¼ îwÞ1pæÌ™±·¸x{ù«õP” ¼LaD ¢ F+mÂÈàÙŽ0px„‰ëHHò±[YâÒÀ*ù˜ˆ±Ý­™%J$KY‘ŒþÂH ¦ôêÖLÏŽ–§-wÞ¾iÓ¦ 6p,Õ]§v…@ ȋҋÖr:[9dÈÛ™ÈêÖ­»yóff1ÜD‰Ÿæ"-¤b%Þ^Bý ¦…@™#—)ì“O>yå•W°¢Ïž=›Ðë©Z¨È9¦ôO¦Ìï=uO”¼(½"ë45W¶dÈÛ1RÝ|óÍ8|ÂÛYÉE©zõê… J¼½$šA X È)L¼=÷ž:)J‚@"•^T~¡È·›½}ûöíÖh|Ä®ââí%Ñ eÛ(±õ~ðƒ”m÷Ô±"#—) 3{¡uc­êo/ò]¤æ„@Œȋҫ•F’p‚È·ƒDWRƒÿv¢¨…Á’_ÞNè¶Ÿüä'Þ'T¸ysrL¿üòË„§È±’´ÅyÙiܸñÉ'Ÿùä]wÝe™’œ"ß“±cóæÍ .GzäÈ‘¼ÑX&Ô/ŸÉ(¬NomÞt&¼=°ó<òH£FvíÚå­žÏ<ó 9¼q\{íµv*°Ÿ™Þª —o/¶q¬9‘S˜x{oEõYD*½Š¢µ‰lî¼Ûò™gžifäTÞîµ·ZùÜsÏåÁÌ™3½Ï Û”Ãiaà矾å‡I½}~2¬£„`ÛßW\aÅÍdím‚tX>1÷“:ÓÚÛNí<¦þ5kÖ¸zH°!;Ÿ \Î9眃ràg`?3]Ù‚&ÄÛ oì*Ïq ÃÝÂTè믿^>ºT¼=v÷¡:,І@ŽJ¯|z’Trçí˜ÊÏ>ûl{¦ œÑ¼±}ûöáBƒ«Œ3¼?þÄãü|ö¹g1˜{‹§JR<•·ÿèG?¢]ßCÚ¬ÓWÖýÌ„·vÞ¾jÕ*W P‚·øá‡–ù½ï}oçΤû˜é­­piñöÂaÇšsœÂð1Íéå HMéÝR3+­§zvq÷oÇ-“ψãxǪÏB GrTzå âÔ‡d#;oç¹êª«ÆOâá‡öorð“ñÚÛ÷îÝkÏ[(âæmén¸ÁŠ3¹Ãx-3P’S>ú(Þì$`à&I£xþcöç§#ÆÔ7¬N«'õ˜ oì<~2xìóø{ë¼é¦› Do(8ùÛ©À~fz«*\Z¼½pØÆ±æ§0<Ûm-ªKð³äÕ”^UïšìhyÚRqçíìE‹*æÇ;V}9"£Ò+¹~S@^xû‚ X–ʪҶmÛ:G{v|þí8ðPô§?ýéõ×_ïÖ(’Rê©§Î:ë,+(É)Vw^pÁÃ0MrÛ¶m]»vµj»uëf™P__OȫӊxìWÅ È)§œ‚Ws¹÷ ¸t`çyð¡î¬Ke¤l×n¸ӰR˜Îs$m™ý Ìt-4!Þ^PxcWyŽS˜oE*l¿’+USzõúMIËÀ³ˆ;oG;-]ºÔé¨ØÝ´ê°È•^Éõ›:xòÂÛsyFT¶¬o/«ËQòÎ$r 3¥§x2%¿»Ô!P†$Ré%žÊ–á§M›Ö¤I“ûî»;ð_|‘¶‡Ÿ}ö!Ü[´hÑ®]»"Ä,ÃG/Ã.a¥÷ýáó“aÙDЉ·'ò²f=¨DNaâíYß*(@"•^ZÒ(ü"@œ¥.\ˆó6Þݸ‚§­®ŽÇÈÁƒyÄØw‰ŠÈÞžx-T«Š·× ®Ä 'r oOü}« ¬H¤Ò c€Ê/£Fí‹/ƾD<>{Â>¡UUU>ö'Ÿ|rÀ€prÎ>ôÐCo¿ý¶·ˆ7-ÞñüVÔ)ñöŠºÜ¶„S˜—·;•Et,ìüd †ùÉìÙ³§W¯^äà'C-“DI€Ë•ò%doÏðêKLT %Tz>M¥Ÿ±F€u©7&~;¦$_üöM›61Á}ôÑGÞÂð‡NÈ÷6mÚ°:ÕWÄ+)Þ^z)pÈâí°Txf §0/o7 ¶}ûvVÙ›úš:uê„ °ÃOœ8qòäÉ–É·È­[·¢ÓpäèUtÞ´)½ªÞ5Fé\Nåq]j.Ý+›ÖÞÎz¾kp¬ð›_ïLJ¨ô¼jJi!†€x{eª¦ÔQ‹·§b¢œ’La3gÎd ~ݺu9b²`9q áä|C$R–©2b?B,ñÁØnxò×­[ÇfsØä½ ‚RUŸ)½}_ c¶9æÇ·ãe4gÎŽºÿ…@"P¥—ª¦”#Âo¯@½8dñö@X*<3‘S˜)=­K­ð{[Ã$Ré…1@åÇñöÀ'·3ÅÛ+ð¢§r"§0ñö´×]B bH¤Ò‹#;UŸÃo¯Xíä¸x»ýDNaâíº·…€C ‘J/Œ*?Žˆ·‡=¼•–/Þ^iW<“ñ&r 3¥w_ßq9ú±‡»;ñÇfÏžÍ1“;D2B a$RéőƽÏÓ¦M#8 ñdØD)"8Œw˜kÖ¬a³oH6oÞœ˜3ÞSÞ´x{ÂtNÃakøK/½”Ýj¼û¥ÞqÇd¾øâ‹YT¨"‰A ‘S˜)½n½Ÿ#Þ9æÇ·×ÔÔŸcbnc DdŽ@"•ž—õ)]ذ~ýú„#fÓ%â·?>m£ûöíkÚ´é»ï¾‹$Á"öWoÏüqNª$ÛÙÀØ|ðA/o¿ýöÛù9hР¤ŽZãÊDNa¦ô´.5“@2B ÒH¤ÒKK%_ذ›°íV'ÔhiëŸ1caÛÓŠ! Þ^iJ)u¼âí©˜(ÇHä&Þ®Û[0©ô2aƒ’É#.&ˆ1–O¢ã$ƒëK„ýÜÚ}ì±Ç† ÆÞ]»v%ï±cÇÂú#ÞöðVN¾x{å\ëÚŽ4‘S˜x{moÉ ÊA ‘J/Œ*¿@Ô«WoÉ’%˜ÜáíìÈ6‚|ðAt[wß}7ò;wîd›¼Ü-Z&/Þ^9ê(l¤âíaÈ(?‘S˜x»nl! ÂH¤Ò c€Ê/ØÛ½Ûÿ5hÐ ­½K;»ÝYˆ €W|XßÄÛÃÞÊÉo¯œk]Û‘&r 3¥×©Oÿן†ûºÔþýû³-ÇÚÞ-’ @ ‘J/Œ*¿@Œ3fÈ!V9þíÐø´ áÜNä›5kV¿~ýŠˆ·'@Ïä8ñöLpñDNa¦ôUÿ>Œxç˜wÞŽ©ÏLŽ ¾±54!†@"•^T~Xµj>í‹/Þ¿?–óqãÆyÚ±cGUUÕ¼™Û¶mÃUwf(\ÜçÍ›ç=ëM‹·‡=¼•“/Þ^9׺¶#MäfJOñdj{3H^T‰Tz^Ö§tqÀúѸqcâ·ãµî‹ßNlv<Þ?úè#_O,XвeK¢AR6¯F¼½QôÅÛ£ñ©ä³‰œÂÄÛ+ù–ÖØ…@4‰Tz>~¨Ÿ±F@¼=úNüY^îØ`%,~;AGÙ€‰wÃÄã "P’)ìã?Æ@Q§N–á›vÅøÐ¬Y³-Z¬[·Îr:Ô³gÏxOìÇ[&›Í±ÍÂPËâí×Z™B@€@I”^„¾Ò)!àC@¼½Â5Õ÷¿ÿ}\ªÂx»mÆ´råÊ G©b‡_’)léÒ¥sçÎå3¢ñv>&¶mÛM…ã_ÇŽMƒMš4‰èˆpËqÊ”)–Ù¾}{6ÿE’ Z}ºÎý4¥wO¿I9ú±‡»;>™ï½÷ÇŠ½í5ðJF $JÏi'%„@Zl ãF­äç´’Ç.Þ^ÉW?íØK8…9ÞÎVÑnQ«u>ýôSÔfö½{÷’àHšÄÁƒ‰£eù´Áo«zׄïóãÎÛÁ$9¦½=$ ’‡@ •ž©/…@4âíÉS;µ‘x{­àª4áNaŽ·=ó{ß¾}GŒA˜¬eË–¡Óða~Æ 7nÜHšœåË—ã]CÈÜ:—m¦ÃTŸ)½ûÍΑŸ‡;oß½{7p¬´»]ã PB¥¦²”/¼ˆ·W¸¦o¯ð zø%œÂo'.¼#!máíðs4\ Z=zô€^o_±b¼õø3áíŠ'}éuVT&%Tz^n¦´C@¼½2U“µx»ƒB‰TJ8…9ÞŽ£µ×O´YuuµùÉìÙ³§W¯^äß­[7StÈã]­ôÄÛS/·r„€(¡Ò SYÊ#Ó¦MkÒ¤ q 17ùâ@F GP¿S0BF¼½ÂÕ”x{…ßÑÃ/áæx;vu[gºuëV|`L›M:u„ ,\8qâäÉ“-“=éA§±@•c˜Þ3¥'Þ}éuVT&%Tza*Kù±C€ïÂõë×Ç|Äf©ì»Dü„ ‡0lØ0¾#ÛGä°"âí•©šÜ¨ÅÛJ¤"P’)læÌ™­Zµª[·.G"@¢»ˆëHHb–®]»ÖT±Y8‰rÃØ~äÈË$J$±"‘ÄË=Lã‘oJï¡ê¡aê9æÇÝ¿ý…^8p ÇÔûA9B ñ”DéEè+Š#,°ÂcÓzu'¤v&£ æ6Óœ_ööÄë™ìHŒÇ«¯¾:ÞÎtÑEe׊JÅDNaÆÛ›öù]Žü<¬xÜy;q5q4âë[WÙ!H¥— i”Làã/F§Aƒa}ÂI×—ˆýO­]>?ôÐCìB²jÕ*ñöìÞÄ—bC¥óÏ??Þ~ï½÷žy晉DLE ‘S˜üdR/´r„€0©ôòÈHUU&Ô«WoÉ’%˜ÜáírÜ>Ù$º <ÿ©§žBF¼]º( ñö0d”ïHä&ÞB@øH¤Ò‹fŒ:›w°·{Ý54hmog{ÁF17‰·ûžGýô" ÞîECé@9…‰·^ke !‰Tzy祪02Ädðo‡ÆGËCòo¿ýv¬ôüÁÍn¹åaTߦ0nT=°•†€x{¥]ñ,Æ›È)Ì”Þí5¯„9¨ç˜wÿvÿ®^½šc7ŒŠ¸#H¥Mu6ïàë‚O;AŒÙx2.”±5´cÇŽªª*B¥¶‹ú•{ÜÕHú/Þ^ `“Tm"§0ãíU½kräçaÅãÎÛ ÔÓ¥KŽIº“5!!‰TzüP™EõÆ¿/w_üvâÆàñŽoL`àüŠ™áÓZ9bóæÍc‡>ÊÔj]ê3Ï<3vìØÊAI#DNaÆÛëÖL#Þ9æÇ·3§lذ£!P$RéòCeÆùÉT ^0`ÀI'tÛm·ÕŠ·_rÉ%7ß|sÂUÉCNäfJOû.Uò­± 0©ôbJPÕí@ÄÛÃÞç‹·'øâæwh‰œÂÄÛó{“¨6!$©ôéŸ2cŠ€x{’N†coÏ(‰%r o×-„@‰Tz1%¨êv âíao‚óÅÛ|qó;´DNa¦ôZT¿£{Xñ¸û·O˜0aĈó{/©6! ©ôéŸ2cŠ€x{,4I¾:IH"6íbO®¬ýÛ)¾{÷î|õGõ”9‰œÂLéµ®F¼sÌ;o=zô°aÃ8–ùÍ©î B H¥S‚÷nO›6ˆŽ„”:t¨/¤LàÐAÃþªÈ÷éÓgÅŠ2dŠ·âÁ/Û:—-[cðÁ³æí_ùÊWúöí[¶TÇò‹@"§0SzZ—šß[Eµ d H¥Æ•_8–/_^¿~ý… ²ï!ÜÇŸ¶-,«Ÿ~ú) æÌ™”ýì³Ï‹ˆ·'CÕd8 ñö ’˜!P&SØo¼A<ÛŽ'þöîÝ‹*Ã.ѬY³-Z¬[·Î4Û¡C‡zöì‰Ç>¨î,S¼]··a”‰Ò‹Ð`: FEävë*Ô½sçΙwûرcwÞyçÒ¥K‹ˆ·‡=¼‰ÌoOäe-Ü Êd ƒ·¿ùæ›Nƒ±]EÛ¶mÑ]xmÁå-Ò¤I4Pw§L™â„SÎÛßXµ}ùæ]ùýß²cOánBÕ,Љ@™(½TÅ¥œx!ЩS'ìKƒ Âõ:Û§~þùçaÏž=„ÝÛ˜I¼½˜ ¡äm‰·—üÄ«e2…ÁÛùs/nÛè®]»òa‘S˜ÙÍÏ‘´NM˜Ò»¥fVŽ~ìaÅËÜ¿=¬Û.ÿг~Ö}&G—“6Á[@¼nlõV„!P&J/Uq)'^Ô«WoÉ’%˜ÜáíGeƒT MF¬C o{x“—‡7Cîþí¼EvèГ‘FäC L¦0vøÅ7˜÷Þ{Uƒɹsç²Î‚°'¬÷ám”LplذáÆI‡i<òMéUõ®IKG³ˆ;ooÓõ‘.]ºpÌ|øâí¾G?ã‹@™(½ ¦S±@¦4}út×Õ dho_¹reÓ¦MÍåŠ{âíñU/µíùé§ŸÎ:åÜy;¤ˆJæÏŸ_ÛH>v”φÌÁƒñŠáâ˜1càígÍšogù:ÛòÀ=zô ÞQ&¼½^¿)™óÒZIÆ·_Ó}ò¯»Oâ˜ù¨ÅÛc÷h«Ãa”ÒóR5¥c‡3Ô!C¬Ûø·Cã3–-[Z¶l¹oß¾añö°‡7yùâíÉ»¦…Q¹Ma/¾ø"\}ñâÅ^?ø<*®ººÚüd ö½zõJ«ô*6žLælãíàæ,ëóŽ;ªªª°5y‡°}ûöÖ­[3…y3SÓâíEÓ%oH¼½ä— v(“) ç@tA±ºuëöñÇ£ëÚµk‡îÚºu+.[¦Ö¦NÊVAHNœ8qòäÉ©ºÎå˜ÒoÏœ–§•oÝ£­‡!P&JÏé+%â‹ëR7nŒŸ^î¾øí›6mÂãÝ·ò´}ûöxÅ#oaÄÛÃÞ$åüCe~yûÈ‘#Ÿ}îÙ$¡¤±¤"P&ST…† ÞY¦Ãg̘AH¾'®]»ÖrˆýÈrTjñöb>•j« $Ré%Œ¸VøpÄÛ ªJ^97ÝtSáx;[€=üðÃ%¦:P 9…™Ò“{æ´<­¤x{@U[|©ô*œè&løâíÅW Ål߯~õ«…ãíW]uÕ5×\SÌ©­b"È)L¼=-¯­€x{1ŸJµUP©ôF\+|8âíÕ%¬|ÅŠ×]w]›6mŠÀÛëÔ©ÃV8%¬š.‰œÂÄÛkKËÓÊ‹·èTµÅG ‘J¯Â‰n†/Þ^|µPœÙ˜†Ý‘š4iRÞ~Ê)§‰´8ãR+ÅD ‘S˜x{Z^[ñöb>•j« $Ré%Œ¸Æb8Äñƒ€Ñ‘Í}A ûÏnª„‹¼÷Þ{‰ŠæÝh5UX¼½  T•ŸsÎ9Í›7/&oçþ<õÔSß|óÍR YíDNa¦ôªz×bÝe­xlÜ×¥¶éúH—.]8f>jñöÿ¿½{®¢Ê8îþaYå_þ£e9ÿ,î8åÎC©•uv]ØFA$ †g oy òB bÀ„A˜ˆ1° Œè°òZgPFƒ°«Xˆîê.ȪU*åî·<5]wor/7nr»ù¦R·:};§ÏùôéÓ¿>}º;{Ÿi¶‰@"½Æ±Ÿsò*À[¼{õêõúë¯ó¦T^º´zõê‹®ŽA #FŒ8qâÄ¡C‡ ôæ›ofúãö6iò·RÞÏÅÏ5×\Ã#ý[3n/..fu¼ 禛nÊ_éL¹•y ^Ѭ'sK›µdÜãöNë~6ñ >s/µq{+.‰lô2E€ÎÏ“@MM ç!qBwžàqÑñÁmÛ¶…ŶnÝZ[[›é_b·ó6ØãÇoß¾— åo/nnÊ/¾øâ–-[ˆ`ËËËy–Kee%›W544ðö«cÇŽ±››föåy‹.¬Ž‡´ÿÝw?m·ój°«®ºŠâp¦I–Μ9“=çÍý:~x3&Õ{áÂ…¼“ª>~üø‘#G2PgíÚµõõõ¼C³¹ÉæiyªÁúõëÉo4ÎÓ*òl"a¡Ñóy2¹‡å]Ò¸=ß{¢é·š@"½L óó$0fÌ^–J”RRR zS“e]¼+°K—.G:tèâÅ‹‰l¹è™iùÛ ÌçÓ©S§ªªªÑ£G÷>öØc¼‘?;tè@¹èã-**ºîºëX†¡¼E‘÷'¶Úž¶¢Ù³gWTT¸¾’1º øÍãVxè ¯(âEEÌdäÒ•W^ÎÅÒþ½erÿ)ñ*)ÓÁN¸^q{ÇŽo½õÖk¯½vøðádïý÷ßoYÑRÿ‹j0eÊ”öíÛßyçW_}uèÞÇ™iæ0ŸQ: $ÃaæÌ™Ô„ÔÿmÍéS§NQ 9S»þúë»uëÖ®]»o¼ñ¾û2“÷{R‡9‰+++£Pi«««—/_~òäÉÖÌdîëJä!̸ý¢qxs0nÏ}ŸrÉHd£—)t~žºwï¾{÷núÄí.\ <#ϲ.zt;wî|þüyâvÆÃÓíI ™–‡°òy[–.zsÚä—ø|xÊ–%oT”íš=ã•h&_U.߆Յ<‡Õâ ʧ“•“*¶uTØÜTæ0“"ÓöPþ‹š0vÔs/>–ý.ä'ª*ä9u¡þ°{†Š}6ÞCWTíåú­D¦$ŽóÛ›–_tyãöEÍ^îÆíqlÕ -Ïô·§Þ[J÷r.ýíôà…‚Æ“B¦B…CØuW|sÅÿë¯ (*@ËÔ¸ýþYÍ¿}ÑÀ5u¸oÿùÄU¿˜XÍgj¡²O·çºd ·g Ÿ»ÀªU«î–gpo– Lz/mʹ§öü3Ÿ>ÿìæ¾<]”ô‡)}šÎÛ¢‹é§—;÷wÉÂàúÕoè :.ްAÙ²ô9ç^ÕYò¹õÿÑVÅÙðô't¼WWý‘k@ùÈCÃÆ³\)[S{’«Qú´ IÛ'LŸ›=mñ·qÛ‡›V:î!>sØ|à$¡û¥ý=öÞéðÌ^"ŒÛÓ¢DÿlÀÓ¾k×.n?äy2uuu©‰pËwä;w.u&Ë”––ÒåþöÛos“ Ï“Idób¡È·@"aŽ“É= oÃ%íÃÏ÷ÞmúM $²ÑKnîKåù$5'áùíDûÜÉÿ¦~•6aTÔ&+°3PàrˆÝ!Œ~ ÞÌÃo/z‘ÑçÉ´aLžËªÛ/ç–§ Ë»F/-¨óÏÄ ··aûàª(pØÂ&Ož¼ÿþ/¾ø‚K“ôi4Ù€ÛßžKØÜæË·xãÔìÅ®Ñk²•sf‚ŒÛ“ÚøX.þrØÂxôhh®7oÞœéR£q{›Çä¹dÀ¸ý/ßM¡±kô Z´&`Ã}g‡¦®ú£€ ¤ Ð2Ð>pìk²õ(´™¼)`Ò¤I¼Zšñä} Mæ04z—W2T&¿ßkwó 7ÜÀg>o…4ÇÌ(Ÿ8}Ÿ­°®,«Ø´ç;ÿp´ð>žºË8wx5zM6qÎL¶G:ŽËþ( €™h%bÑ òÒ+âvnÆŸ>}ú;3)n·ÑË´¡¯€A .^,Zf3yix¹*õ“þ4®û£€ ¤ Ð5Mû@+qi›ü¥6bĈ8ãdž}öÙ&Wd£—º‰V@TØ5zM¶rÎT@P ð¦M›Æco¹/• ®w~†Í¡ ( € ( €—¡WèrÏþÈËÅ"+ € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( €-8sæÌÒ¥Kï¹çž-[¶¤¦ðõ×_/Z´¨OŸ>¼¯dÆ ©_½òÊ+C† )**âaÈŸþyêWɘ.++ëÑ£Çýßý0*‹I´LÂ&xnÞ€X²dÉ7ß|“°Òe/NçÎCàsçÎaá'NŒ5ªgÏž£G>yòdöâûíž={Æw×]w¥!SÙã¾_¼÷Þ{<ð@Lo\­©©3fÌ„ öîÝ›º±b7Íá†-vÙ&Ãl‚¡C‡–––ò‚€8柗"ñvjѪU«â’ÿO?ý” CuáÂ…g^…WOèudì_^Uó”8=ÑÙGžV‘¿d·oßÎ…ôã·sˆ¬®®fœÒºuë¾úê«ü)å/eŽã òa Îò·–|¤Åíäœî÷Y³f±-8ûˆû˜±|X™fìhOhÓ~^}õÕ¨ iq;W-él$d¥Qb/àÞ½{÷°0!ÜÆifÙeØßéƒå¥£‰,&Ĩ àPHÇ;ƒÿC¡²˜Ä¨ÔÍÊ*}÷îÝt(±Ñ¹Éç ®Y)Äzaê?51«DïaøÄ£Ë9s&q;7w8p€B÷X—1KæÓâvJÚdÙã¾_œ:uЏ1±Œ`[Ç4n§w%¦± ç}Dø¤*r„ÊR! ó«þýûsºGóHÄÈðÑÂÌdö\1ÎgíÚµŒ‰eœc#³/\PßFq;#ó‰Ûùd<K¼JQP¤f&Fiq{èC‹.ÿqh¦ë5‡û4W¬XNŽïÑŸ ›øàƒ¸1Ü™Å$a¥ŽŠÃFO½%™`õ²êo8TVVò'ÇeFQFó/«þöLeOÀ~mS®žp#v´}ã2±cÇ®Æ%·iù$Ä"ô¥g€®pqn˜¶@ÿÉhNýÈ$'}ô÷xngïË/¿8p`˜Ï Åi¼LÁΉâv.‰:N¦`7“Ë“@ZÜÎZˆÙ8 «c|{t§9—Ë‹æÓeÍŵø G:nÛyüñǹ˜‹<‡LFq;—þ)—È)·ÛĨfU p¥2í9œ½2æ.w® œGÏ“!PaøÄË/¿|öìY&ÃH’¯´`ÿ‘}ŸSž45gÎF-FùÌd-° †‚0›®Œ>úˆK¨Q‡FŠÙdq(brž§ÄÑÓ–°Óܮ˚?O&”4-ngf¦²Ç}¿`ˆ;]î1}$‘á¢'ÏÐà‡¾ÉÊ—™qŒÛ9c"ng+0<#º*.à!ŸâiÞ¹ÞAè~Eæ9E"ÃÜ…Çg¸—œ36Ä[o½‹"˜IZ,@O;q8Ž #‘‰¨ÎÓ@sDØÆíZiÏXà6"vîܤŸ'yÏo§¦ëÛ·/çï – /o“ûø?²é¹ŠÍñ”ÊÆ x†/Uö8Q9r$çÜ-<$-¤œéæ—j½…gë4<î•›\˜ˆ0˜©ì—á~Q›É<( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( €(ðNW5 endstream endobj 8 0 obj 65859 endobj 10 0 obj << /Length 11 0 R /Type /XObject /Subtype /Image /Width 1000 /Height 600 /ColorSpace /DeviceGray /Interpolate true /BitsPerComponent 8 /Filter /FlateDecode >> stream xíÐ1 þ©g ˆ@aÀ€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€I±! endstream endobj 11 0 obj 2640 endobj 12 0 obj << /Length 13 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >> stream x…TßkÓPþÚe°á‹:g >h‘ndStCœ¶kWºÍZê6·!H›¦m\šÆ$í~°Ù‹o:Åwñ>ù Ùƒo{’ Æaø¬ˆ"Lö"³ž›4M'S¹÷»ßùî9'çä^ ùqZÓ/USOÅÂüÄäßò^C+ühM‹†J&G@Ó²yï³óÆltîoß«þcÕš• ð ¾”5Ä"áY i\ÔtàÖ‰ï15ÂÍLsX§ g8ocáŒ#–f45@š ÂÅB:K¸@8˜iàó ØÎä'&©’.‹<«ER/ådE² öðsƒò_°¨”é›­çmšNÑ|ŠÞ9}pŒæÕÁ?_½A¸pX6ã£5~BÍ$®&½çîti˜íeš—Y)%$¼bT®3liæ ‰šæÓíôP’°Ÿ4¿43YóãíP•ë1ÅõöKFôº½×Û‘“ã5>§)Ö@þ½÷õrŠåy’ðë´Õô[’:VÛÛäͦ#ÃÄwQ?HB‚Žd(à‘B ašcĪøL"J¤ÒitTy²8Ö;(“–íGxÉ_¸^õ[²¸öàûžÝ%׎¼…Å·£ØQíµéº²šua¥£ná7¹å›m« QþŠå±H^eÊO‚Q×u6æS—üu Ï2”î%vX º¬ð^ø*l O…—¿ÔÈÎÞ­Ë€q,>«žSÍÆì%ÒLÒëd¸¿ŠõBÆù1CZ¾$MœŠ9òÚP 'w‚ëæâ\/מ»Ì]áú¹­.r#ŽÂõE|!ð¾3¾>_·oˆa§Û¾Ódë£1Zë»Ó‘º¢±z”Û'ö=Žª²±¾±~V+´¢cjJ³tO%mN—ó“ï„ |ˆ®-‰«bWO+ o™ ^— I¯HÙ.°;í¶SÖ]æi_s9ó*péýÃë.7U^ÀÑs. 3uä °|^,ëÛ<ž·€‘;Ûc­=maº‹>V«Ût.[»«ÕŸÏªÕÝçä x£ü©# Ö endstream endobj 13 0 obj 785 endobj 9 0 obj [ /ICCBased 12 0 R ] endobj 3 0 obj << /Type /Pages /MediaBox [0 0 720.072 432.0432] /Count 1 /Kids [ 2 0 R ] >> endobj 14 0 obj << /Type /Catalog /Pages 3 0 R /Version /1.4 >> endobj 15 0 obj (Mac OS X 10.7.1 Quartz PDFContext) endobj 16 0 obj (D:20111006030734Z00'00') endobj 1 0 obj << /Producer 15 0 R /CreationDate 16 0 R /ModDate 16 0 R >> endobj xref 0 17 0000000000 65535 f 0000070504 00000 n 0000000175 00000 n 0000070254 00000 n 0000000022 00000 n 0000000157 00000 n 0000000288 00000 n 0000000377 00000 n 0000066435 00000 n 0000070218 00000 n 0000066456 00000 n 0000069289 00000 n 0000069310 00000 n 0000070198 00000 n 0000070346 00000 n 0000070410 00000 n 0000070462 00000 n trailer << /Size 17 /Root 14 0 R /Info 1 0 R /ID [ <85b0d03b0da44b2e022678b8aa8db4db> <85b0d03b0da44b2e022678b8aa8db4db> ] >> startxref 70579 %%EOF pymc-2.2+ds/docs/_images/missing.png000066400000000000000000002026421204033704200174430ustar00rootroot00000000000000‰PNG  IHDRèXñÌ%sBIT|dˆ pHYsaa¨?§i IDATxœìÝy|uþ?ðWÒô†B‹ÈeK+RPPDXÙ]VE@AQŽUeõ' _ÔÕåo\e¼8¼@ÄUQ±x‚ ¨\K)m)´”£¥ mÒ¦Iæ÷G:é$™™Ì$i“Âë¹}ØNf>ó™#eÞó9ÞAQXÃ]"""""""b€NDDDDDD EèDDDDDDD€:Q`€NDDDDDD EèDDDDDDD€:Q`€NDDDDDD EèDDDDDDD€:Q`€NDDDDDD EèDDDDDDD€:Q`€NDDDDDD EèDDDDDDD€:Q`€NDDDDDD EèDDDDDDD€:Q`€NDDDDDD EèDDDDDDD€:Q`€NDDDDDD EèDDDDDDD€:Q`€NDDDDDD EèDDDDDDD€:Q`€NDDDDDD EèDDDDDDD€:Q`€NDDDDDD EèDDDDDDD€:Q`€NDDDDDD EèDDDDDDD€:Q`€NDDDDDD EèDDDDDDD€:Q`€NDDDDDD ES¸+@DDDá³jÕ*äääÀd2ᦛnB¯^½sæÌÓétêÔ S§NÔÔÔàÕW_ÅÑ£G‘––†x±±±€œœ,Y²0tèP 2$ GDDDÔ|1@'"":‡;&“ f³óæÍsèƒO=õ”ÏúYYYÈÈÈÀŒ3°nÝ:lܸ7Þx#`ÅŠ˜6mRRRð /`À€HJJjÒã!""jÎØÅˆˆèf2¹ÞÕ'%%AX,Õõóòò0hÐ   4¹¹¹‹Å‚èèh¤§§#)) ½{÷ÆÁƒ½þDDDg¶ Ÿcl6ÊÊʇ¨¨¨pW‡ˆèœáp8PSSƒ6mÚ &&&ÜÕña6›…„„@LL fÍš…ŒŒ 6 :tÁh4âþûïÇôéÓQTTÀ¸wìØYYYغu+†ŽÜÜ\ôíÛ×ï¾ùoQxDú¿Mç"è瘲²2ìß¿?ÜÕ ":g]rÉ%î`7’¬Y³ãÇwÿþè£Âh4âàÁƒxë­·0{öl÷g±±±HMME‹-ÜË  %%iiiºöÍ›ˆˆÂ+Rÿm:1@?ÇÄÇÇÒÓÓæÚ4¾Z»¬oèbùÚ¨îa¬ ËjjjPXXèþ;IvîÜ‰ØØX÷øs0]£àºvíŠÊÊJØl6ÄÄÄ ==V«?þ8Nœ8ÔÔT@—.]ðÉ'Ÿ _¿~èׯÖ®]‹®]»jÚÿ¹öo“·±cÇâäÉ“hÛ¶-Ö®]îêÑ9$’ÿm:W1@?Lj\qqqînŒg3C%Vƒû÷sᘉ(²‰‡#Eaa!¶nÝŠ‡zÈc¹Ãá@TTŽ=Š:¸»>fffbË–-5j¶nÝŠÌÌL®¿¯v»EEEhݺ5öìÙƒ¡C‡jªƒxNvìØaÆ…ð蚇Ç£¤¤‹…ÿNƒÖ¯_«ÕŠøøx÷„‹DM-Òþm:—1@o*++±fÍ|÷ÝwX¹r¥û ôÕW_aãÆ0¸÷Þ{ÝIÔÀ)„»DD‘mñâÅ0˜3g`òäÉ¸à‚ ðôÓOCtèГ&Mr¯?xð`,Z´<òRSSñàƒº?›0a.\§Ó‰¡C‡êžÁ½eË–!9&¢æ$99ñññçdï"òŽ(((@=°{÷n÷²ŠŠ lÞ¼sæÌÁéÓ§±lÙ2Ùt8DDDjæÏŸ/»\ Ø½ÅÆÆbúô鲟eff⥗^ ¸.—_~yÀÛ5WþóŸÃ]"Š ìËÐ ôîÝW]u•Dz¼¼<ôéÓIIIèܹ3L&“ßÔ8ç"§À&t"""""jØ‚ÞLååå!-- ,@Û¶mÑ©S'dÈ 2$ 5’wàÀÌ›7‚ øÔëûï¿Çüùó‘ŸŸ… z|~úôiüóŸÿÄ©S§`·ÛñÔSO¡_¿~€?þøo¿ý6<AðÌ3Ï G~·{ùå—]9ãM&”ã´ûë$÷t¥1)++âE‹ð믿¢[·n˜9s&Ú¶m ÀÕòçwbèСشiRSSñÖ[oùÝŸš_~ùÿú׿ãÇÇ­·Þªé|ŠÇ?þ÷ß?FŒá·žjçÌjµbÅŠøòË/a³Ù0bÄÜwß}~Ï 5>¶ SÈüûßÿƤI“ðÎ;ïàðáß]}õÕøòË/1xð`ŸÉìÞzë-ôë×ëׯdž <‚Þ .¸Ï<ó þ÷¿ÿaìØ±X¾|¹¦íþùÏb„ ¸ëž©è~ÿwp¯¿þ:úôéƒÏ>û ×\s –,YâQŸ wïÞØ°aƒ;èõ·?%555(//G^^zõê…ªª*œ:u 6›Íï¶â1ÜÿýøòË/ÝÁ¹¿zª³÷Þ{EEEX½z5¾øâ wp®å¼mŠ‹‹Ñ¦MÙÏ6lØ€ÿû¿ÿkâyjÓ¦ Ž‹ì9/žyæ\vÙeèÓ§žþyÝÛ÷êÕ ;vìдފœœÝû\=Ò®¸âŠ€¶%"jJlA§°Z­8pà† ¸ë®»°yófÙu½'n»úê«ñÈ# ¤¤#GŽôø´eË–8zô(vî܉‚‚ìÙ³GÓv ûòÝÿ_|;v¸P“ÉókЭ[7÷qh­§ƒÁ€¤¤$dff"11Q÷ÄuJë+ÕSíœ}øá‡Xµjbcc}¶ów^ˆˆÛÎ;1hРpWpýõ×ãúë¯ÛþÅ¿ý‘<Ùéûï¿O>ùK–,Arr2|ðA¤§§ã¶ÛnÓ\†ž 4kÖ¬ ¤šï»ï¾CMM âââpÍ5ׄ»:DflA§0™LˆŠŠrÿ®çâÊ+¯Ä–-[píµ×bîܹxíµ×ÜŸ­X±÷ÝwŒF#úöíëQ®Úv õðÝ_ll,-Z„Ï>û Ÿ}ö>þøcÏ•´ìÏ[\\Ú´iƒ¶mÛbíÚµ€””ÄÄÄøÝÖ¥zª3p8²Ûù;/DDÍn·7jù‚ `Íš5øÓŸþ„¿ýíoøúë¯}ÖyçwгgOtéÒ£G–-ç?ÿù†ŠK/½Ä<>_·nî½÷^ôë×ÇÇgŸ}æñù™3gððÃcàÀ¸ôÒKqêÔ)Ï?ÿüs\z饀Áƒ£gÏžxýõ×=Ö)..ÆÓO?~ýúá±ÇCqq±O=Û´iƒmÛ¶aøðáèÖ­f̘áñùgŸ}†1cÆà²Ë.C¿~ýÜÿNiµeËL˜0ýû÷Gff&æÍ›‡-[¶è*C<–‰'¢gÏž˜2e NŸ>íñyÿþýѳgOœþùؾ}»Ïö¿ÿþ;îºë.ôíÛ½{÷ÆO<áñùìÙ³1yòd¡gÏžèÙ³'~ùåÝõl,uuu°Ùl¨«« wUˆ(0@§ˆŽŽF×®]ñí·ßÖ¯_¯y[»Ýލ¨(\}õÕ˜4i’G÷øÍ›7ãá‡ÆÍ7ßìS­e;À5éʱ׋àlJÇŽ‹W^yV«Õõ™L¿èÇ#ølÿIÍõôöqö ,ÝáÚ÷€°råJ‚€U«VáÊ+¯Ôzjœœì~èR ¬½©³qãÆaÁ‚°X,>Ûi9/töX·ï–l÷} ' §?ýéOZþ_|_|‹/Ɔ d'á¼óÎ;‘§Ÿ~Z¶Œo¿ýk×®ÅÊ•+±oß>lذ]»võX§}ûö˜?>vî܉;î¸=ö˜ÇßÔ—_~555øæ›o°oß>¤¤¤xl?bÄdgg»÷—í1$ n»í6$&&bË–-¸òÊ+1vìXÙú¾øâ‹xã7““ƒY³f¹—ŸÊÊÊœœ¬«»üï¿ÿŽnݺ¹Ckë¹è/ù .\ˆ?ýéOhÕªfÏž¿ÿýïºÊ…ƒ¢cÇŽˆGUUÚµk‡óÎ;ÏcŒŒ =z………8ï¼ópòäIddd4y]å|øá‡¨ªªB‹-0yòäpW‡ˆÂŒz3·zõj >Ý»wÇk¯½†Ý»w£wïÞá®VĈÌwåDD$gÀ€Zþ°aÃðÃ?`ôèÑÈÈÈÀ=÷܃ ä{: Ù¹>8€'Ÿ|%%%hÛ¶-þú׿bÊ”)îÏ;tè€G}ÇG«V­0uêT\uÕU(--u¯óÍ7ß`éÒ¥¨¨¨@—.]ТE TVVúìkæÌ™xá…°páBôéÓ‹-r×iÙ²eøè£0a”——###‹-Bûöí=ŽA‰ÙlƬY³pèÐ!ÄÆÆ¢ÿþxöÙgýŸD‰ñãÇ£°°“'O†ÉdÂØ±cCò‚EOê5xã7°eËÔÕÕ¡wïÞX¼x1âãã=ÖéÔ©î»ï>Œ1çŸ>Fx 躆Â!Càp8<²áÑ¹Ë DjÒäå—_ƨQ£‘‘eË–¹SŒ(1›Íعs'ºwïÞ¨Ý#EQE ¦|ô‡û÷S”»J‰-àZ×õö¹Î–k{¶Gsb±X““ƒ~ýú5F÷lt®ýÛä­gÏž())AÇŽ}&“#"jLü·)ò°½™»÷Þ{ñüóÏÃb±àÊ+¯dë¹7¾~"""""¢f‚iÖš¹•+WâŠ+®À#<‚ÇcïÞ½¶¯[‹0dé.WÖz,ßœ·®Ø‡ßKõÍBÛœDè{ѵ~îI F½·5u®<ågjÆŠËÛÆÜ2Üÿ¿Ø•YqϺ?Pz¦C–îÂ¥»PPnõ_ˆµv'ny/rNT‡ Æg‡U6ÜøÎœª¶éÚîP™#ßÝ‹­iîoV÷e…µ7½³Å•5T#"Š$¯½özöì©øÿ[n¹%ÜU$":k1@oÆjkkñÇ`äÈ‘HMMÅÍ7ߌ͛77Úþ¾Ì)l;\á±<ï”5vžŽÀ‡÷ZÐÅüåZ­ÿã$ªm”V¹‚´U ÁZE]i³zÿ·Rä•Ya­s`ç‘J>]ƒ‚ò†ëñõÁr•­µ9YmÙZ>Ý2è²Î;Ž˜QkwbW‰¾—S”ÁRçÄQ¯—]M¥Ü¢ï¾Ì9aA݉ *ü¯L„}ûö…» àþûïGvv¶âÿ×­[î*žU¶oߎ-[¶`ûöíá® EvqoÆbcc‘˜˜ˆ¢¢"¤¦¦â·ß~C·nÝ}¿ÞS·ˆ1°#§3$޾©i|uNn Žú|rNpb=>EÄãjŠÔuÍ…x^õNå!nç ÓwÆÁ‹HêäI¾¤sOqq1,Ë99ÿùb€ÞÌÝqÇXµjÊÊÊЭ[7 4¨Ñ÷éŠ1F$>óÿ„2¾nªøKìÊïwÐçñ¢ Ç$üá *#‘Á}Nôn×ô/q¤"ñe\sÍ5á®Q“=zt¸«@D„z3—™™‰G}´I÷iðŠöÄGýHLH¼O/i°ÖTgDú’Dl•¦Â E8(ž—¼Ìa#¾ ´=\§Ò‰oӈ ÂZ‡3µM;DËØ(´ŽnÒ}QóÁ‚&¶¨Fâ3 U ¶qS¬5Y º;@Ü?GI$$z}! иÏI Û…é\²‹;‘Ë™Zî–¤âl ËÆ\̈ˆq’8 ™Hì6Û”UjW,Ù·‘: /L¤ÇŠ.Õî1Ì]çÖ0=°íÃÕë„:Qdb€NºyÇzNÁó¿‘$9ÐXVÜ“3,-èÒ1èõË$ÇŠ!Ïb¹ø&l î‰óôw×ø×H›H|™FŸ~úi¸«@Ôä–/_Ž… bùòåá® Eè(·ÔaÈÒ]8Tæ?_ö?ã†å»Ý¿»Ç?ëŒÐÅÝ)÷¤E×ú|rÛ +5­ûážãóþ^dåºR˜Íýºðàg¹îu¤gdÕîRŒÿ Ûýûköã_J<Ê“×îÇúúTf'«mîó¤–»ZC¹rW)òë¯áã¹?¯¬±cÈÒ]ºÏ‡wÝhºGBÅæpbÈÒ]ØqÄì±\<'Ù¥òéÍ–ï,ÁÝí×¼Ÿ7.ÆSßä뮟1Ð.îõÿõ÷•ùÇÇàÍŸ‹ý–gw ²t&­þ]Óþ¥)ø¤òË­²tÊ,uËÅù 3•âââO4ZùRÓ>=€Å? IYMñwì\Ò«W¯pW¨É 8×^{-îªQ`€N€¼ú ë§ÃÚòK'™$3ˆG½-…¹§Ø>[ª®»lg Ì’É…ŠÍ29­%»û—c8% |J̵ø`÷qŸMŽVÖâ½ßJ¸òO‹Ê½‚&9–#16Êg¹Xyç°×C¼ä-eÊo,⋇/sNÉ~þݡӲËWï9Ž#ÚsŒ¯Ë>­_ÌH:³}CõíòËk°.û„ßò,6×y:^eÓ¹O?vï—0)õãeMÆÆ›}þÓý'=¾éÀI >Ý/OQx¥§§‡» DM®[·nèÑ£G“¤Ê%¢ÈÇ7‰˜›D^xî *ãLÝæ-BˆêíbïÝM> ë"³K±õ;˜íAÕ©‘„».âD|§¾íÂ=‹»‚Êo$ŠÄÌDDDÔ¼qwòÈ㦸M$N<% ­œº· Åþõ®ï5ž?xZX^0  îX¤ £âpàþDÅ]w"táÏïo¿ÞŸ ^ÿ%—ü“U«V!''&“ 7Ýt“»›ùW_}…7Âh4âÞ{ïEff& ¦¦¯¾ú*Ž=Š´´4<ðÀˆäää`É’%€¡C‡bÈ!á9(""¢fŠz3·jÕ*üú믈‹‹ÃwÞ‰‹.º( r‚™DLpOPxÅ)Ï`Ž]Ü,ˆÈMmË ZÐÞòìånA4zˆ¾3º_I–|G[ö#ð» "qXO ÆŽ “ɳٌyóæ¡W¯^¨¨¨ÀæÍ›1gΜ>}Ë–-ÃSO=ÈÊÊBFFf̘uëÖaãÆ¸ñÆ+V¬À´iÓ’’‚^x @RR’æºäååá²Ë.k”ã$ŠTÙÙÙ¨««Ctt4zöìîêQ˜1@oƶoß³ÙŒgŸ}111a«GC«oä=¬ׂüñDJPëtwq¼ŒHìΊÙéƒa °½ar¹ÐœSý×F~}¥óÙÔ雋üJÄdr= $%%AX,äåå¡OŸ>HJJBRRL&¬V+âãã‘——‡¿ÿýï0 4hÞ{ï=€ÅbAtt´{yïÞ½qðàAôíÛWs]8ÀÎ9»víBuu5 ôælïÞ½>|xH‚ó`ZôÆMëØ¦‰žl¼›tHÐuâ}.êâ.;Ýõß`ZÐbÂÐñ߸”4)®¬Á ËwcWñÀ´Os!gõÏ´i÷+äuª7ùÆwöpèÖíöüîZ+Ÿ{ÙNÏ\ê?öM#±I¸ IDAT–_îJ›Õð•¿ýƒl<û]!~:\‰QïíE]½C¾˜òì€W.u1ô¡2‹ûgﲊN×`زݘ÷Mê>žÿ¾ãVîsÿ.^º²jWйO?‰[Þ÷ý\´fïq ]¶[uþ”ž©•“gº±O?éñû£ò¸®»xÿ䜨ƥ»püLCʳ;×üŽ9_7äY㜹~·H.7¹¨¦ÎÛ>ÈÖTŽHzo¿öÓQŸÏg}[‹|ÖWúû0dé.¼ýKÃ}¸9ÿ4†,Ý›Ÿ{JÎÈ÷ö¢ªÖîSþ;¿”(l¡Í­+³±1·LÓºgjí²t~9j–ý<÷¤Öíö¸¦Û =Sî.9ƒ!Kw¡Âê?=b$عs'bccÝÄuíÚÅÅÅ7nŒââb÷'ééé°Z­xüñÇa0šš èÒ¥ JKKѯ_?ÜsÏ=8räºví¶c"""jŽ 7c™™™hݺ5ŒF#ú÷ï={ö\––†Ÿ¶‰ò­óÒÖ»w=æñÙ ù«ÿ8Q­¸Ÿm…•(­nÖìñÍþ{©kÛ•2D®V3 O§†œæÒ\Ë6‡€õœÂa?Áþ±368 ûx•OR?ËDzõRXîÝjóÊß%—ûCÉ9”ÑZu¿m®a™¥›òO#+· –:'ªm•-&DS²»¤Êýsu­gY‡Ê]çë‡Bõ<ìß:ÓÖ†àLl‘këêìóѾ¨ò¨§g–î.ˆ]v›ÌÌL¼ôÒK×¥sçÎoKÔ\uëÖ 6›-¬yˆ(r0@oÆŒF#î¹çž–©Ö§ôI ¿MõÌ*ÔOLæ/vù\ãzRz' óGOêºh£AÃj¾Ëä&b“¯‹úþÕNq°±›¸kïÀÈ»Ø(£Î@§TËê}þ5µ µwýB|ú›$.m#àõ_­ë+ÑÒ‚ÞL;„]÷îÝÃ]¢&wùå—‡» DA8× S˃¨wàŠÙ”µtíu· «7 +ì@ò³ÆBÝ‚®Gt”Áo-„k=z^x¯lª;ÁÝ]X¿qòZH[‚}ŽXR|03š‡´‹{¡ Þ-4j*Ô=0½VJ‡$ׂîðÚ‡øk$¿¸ ""¢ÈÃh{ VZGKà®°ÕÕ‚ØC²|·wu¡Ðõeô{-‚©ž®.î!ŠÐõ–Š1êFÉ_EïýK_ds¥C•ß^m¹za Ë•ÒðÕo ¶«HDCÝÅ]îX ãK"ù¼Qäaw š–nÝÒ\ËZÕØÕ§%Ó4® Jº®Ý)ÀæpºgÒägÓ–>Ôk­z•Ÿ™ÐÕÔ9´ÍÆ­”ÏÙÕÅÝß¶ÊŸÙ,6‡k2@zZЃUçp":Êèsý^WÂû4DyEèZr_{§“¶ÂÛNÔÚˆ5ù¾Ë”»í¥-µÊµk3¯‹us ŽAWXî}¦ÄKߨh0wŸ¸­w+w(UÔÔyÜoâž"xh~DÊÎ+D‡´ ›lJé ‰šRAAìv;L&222Â]" 3èç¨ûÿ—ƒã5l¸Û5ƕÖèƒÝÇqçå7Rx¶ÍóÊ-çŸâÿ]•êþ=!º!à9~Ɔ§¾ÉGi• +oïé^~Ó;òiãÄ hþæÃ¸®k `Þ·ø¡À•æhþð‹Ð«CËúu]­ªÒ ì…M‡ñ¦ÃXts7÷²§¾-ðÙÏΣfwnëç¯ïX¹«Ô#e›7©ÊàÛúTR‡O[qϺŸåÞ'Ìü2ó‡û掋6ú}YòâæÃˆ2WwIq/[…ï\³°â¶8¿…ïD5ÒØæTµ ãWýîñ¹4Y»÷¸Çõ–¶ nTO½4üí=øßß/ó¹ç¼ƒ³Oâãì“xvX\qAl^ãÏŸý¾›ó]÷ÅÆ)¾cüþ—}¯KrËç—[a’œó÷+Åû¿•âÿýéÜÜ£-¬’´aN™sWfÅò_Žù,½÷ë1$ÆDáýßü§kó&íÁb³;1¢þû±lÌÅë在ƃŸåâ­[º#=9Þã³Ò3µøû‡ûÑWáö>¿#ÞÞƒ§®»ÐýâIúñ¥»ðçôVØZŸN¬Vfìÿ­+³eÏ»?÷¬ËAJ‚ «Ç_ê^fw øÿËAi• ë&]X¶£î=áwâߌ#µX)I•÷Ì·xâZχáM‡NãÙï 4¤[“*(·âùM‡}–ƒç¯ï‚îÉü'ן_~ùŸì¨ w5ˆšÔ÷ߪª*´hÑ‚:±‹û¹Lú<­uFt9­â”:Åñ¼_Hr*@«ø†mŽškp°ÌŠ3µÔèÌ›,>x‹Á9ì•ä&vÖ·hujë³íik`-'Ù¥UþWR!—+½ð´gŽë Sâx¾ÈIs/Kµˆ‰ÒÔB¸½Èì¹ÀëÒŸ©•¿b zë8ŽŸQÏí¼)ß3'´tûûÏ_¸^y«P꾻ĕB¯…Wëÿæ|õ¼ëß:íñ{A¹Uv6ò/s\¹Âû§µr/s ¢½*”{Ê¢º¿¯–{äGT­¤·…÷5ÿã„ëüÈì§Øì |”î!9{K«ÜÁ¦w?18ÔÿB.ºøwBôU®ïË.9Ò3$}A¶¹À÷þø¹¨á˜Jeîóƒ’kÜ&!ZqŸâË¢_ëÓ;îÕqÎÏe¿Ä\ì%¢³Ìĉ1uêTLœ81ÜU!¢ÀÈ·ú#Çj1¡ìxw–þê^§ÒVd¡~’¸–±êùÁýiìÎÝÞ!áÅç'ºö«cÇ¡H1æÚ§Â\õÿm¯ˆd~ M=Ünùy‘Üž P˜H¯~¿ÒÒBð÷•ÒZI/Q`iÖä7’›,ÒhÐ6 º©)’Ô{Ñ>Á¡Ž2 ò?ËÙûÅÎê®ÓÐtß)¢HƒØØX¦Y#" Щž¦™Ø~W›,óV{@öë­¡%_PøYäô ^Œ åêy`–NÕ(ÃX}òyË¿ØPc44µ {Ÿ ï3£T‚Ôä6ò©‹ú>µdê¢ôËàõß@ ò×W.öt ‚ï}íçÅS¨f'—–ÐË5ë š>mŒñÝÒ"ýåvO½¦‰2¡‘ ÐÏK–,Á}÷ÝðöÁ´¼ª=œ*=àz´ Kìõ>oËíZZÊ“„éKÖ´O×b@¨g*1£ÁP°æ +!­³H‡"žSÐ?‹»ÞÝú¯P€¸Xú± (¿´jÁÃ/º&>  ‚FCÃvªéÊÂ€Š—Ã_5=ßué=à¯C†Xn /8‰ˆˆˆäpÆš³@aa!êê‚›‰V[ž`™nêϱìÞ”téüìz[–üÅ`N@FyÜrZÅ½Ë ~Òm7¹½zw-'‡Óp€CÃ~çO9^ýöƒlWh=ûÐD¦þ÷Š.îÚ¸Zн¿ê[ Bð9áÏï\`]ܵ¯e4Dn*Åú“é“ʉ ´õÚß‹¦†t …± ]“KêòQ‚.á®F£’›9^LÑiw 8RQãóy(´ŒBëxåy(|Ö¯_«ÕŠøøxÜxãá®…ô³ÀªU«0uêTìÛ·/à2¯]რƠû[]Z×$qòëé ÐC™žI>@÷ÔÐÅ]{¹FƒASÊ;ÔÒƒÚLïsHµœ|ó‡¸Ý{uƒAþ~– üuÜ>!çÑ‚Â.îrçOs÷°´ »*lw ªcàõTͳ‹»úºâuÐò#„ïøÎjVøNèy¶™ùežÏ2qÒÒÓÖ:ÜýѲßec.f€¡’““¸¸¸pW…ˆ"ôfî§Ÿ~B·nÝ’’âeÖ:´ŽöyÀt NU×!)6 6‡€8“|.äÒ3µ°Ù}?¨¶9g2ʦ ¼ÆÐJ[Óê)¦·Š5Q#I™&·¾÷$qJ­øv4Ý’¹Öwvi5Þ¹¸½[Ymv§ï¸ðúßk5æFÄIâü“Ý X¤éà¼ö]ëpºó¡ ‚€r«‰ÑF÷Lóƒÿ@ØáPcwºgå·ú™¿Æîô™Ýbs"Þäš0J<*¥€É Wº>µKjs8a­s")6Ê}=*j<¯eC¦ß:€#•5(·Ôy|ªk>û“æ7&^u8ŸûÓ"MñæÑ‚îÕŠ_ÿßZ»+¯½Éhp­‡ü¬äRri¥ç\¨¯[̉–žË’ý8œl'âê¿»q&£Ç÷¡²Æ®Ø•Üáÿ†p§SzIáØìNÔI¾GJY DÒ{Ûß‹9ñS-/'Nø9÷äRÝ Ð÷'–¨ÙûóŸÿî*Qa€ÞŒÙl6deeá_ÿúWÀeܺ2Yw÷öyÀ\½û8ÞùÕ3Ÿsû–ž³‹þZ|Of’-÷Žw¥¤RlmøYü*å¿ùݽ蘋«:·ÂGûNHÊ©ïg/qRRž³þÓ™V-9ËE‹:êþùã쓚·€¬Ür ëÖÆý»45ŒxgföÌ{S?»Þ·Ѽ£Á€}¥þS˜mÊ?Mù éż[‡ÿï WëÎSC.„S0çëÏ•º‘K›r«]1½œ›ÞÙƒA­=–=¼>wöíà±ÌR'ÿÂbíÞX»÷„ìg¢o»êsÏ•1ö²v0ר}Ö6ÆË#|sÌ[뜸íƒl\Ó%Ù½lʺ?|Òà-ÝY¢Z­­Ì³¿ÎÇŽ#žéðžþ¶§¸öïÙKÄsÛ7êóº¿üC^þ¡Ð99‡O«w›ý6¯\6?»ÇË9xîûBl‘IO¸å¼2 $ûzú»l+¬ÄøÞíðÁîã˜Ú¿n¹ô|@Yun_•­X§×~:ŠiS}–ÿx¸WunÚú—u5uNŸp°lg Öî=íÝË*kÔ£?é˃ƒ§ÔSâ9$Ý’ýÙ\P«;'€ícDDD¤†“Ä5c999(++ÓO>‰™3g¢²²¯¼òŠîrøÆÑ‡5ŒË=é &×§à2×:ðõÁr$'È¿’î/Jò@lWé7\b®Å‡=¹µ¥)A€Ñ`À¥íñèß:{¬W§Ð:ýé—á/^Á¢ÿ¾6/Þp‘û÷ßêó «ñn‘îÐR9ÕŠ˜#Ý[¨³\8iAqe­ÏrBhƘ{‘ËI½×+ç¼w+»?m}_ÌürÔu=”^Ш…Z<_T©¯ëû©ÖVuïàܧIAZ†_ø Î`_©|žî–±&z+ç€+P5×xž×mõ/¤ÄS¿7›t,®\u¥}UxÞ—u “Dˆûþý¸ÿW"=w˜Þ^ù2¹é‰ˆˆˆ¤Ø‚ÞŒ]vÙexõÕWÝ¿ßwß}xä‘Gt—#¾ÝdåºJ{/’{8òŠ4•ÓÉÏBíôóÈë/íàì:±K¶½:´ðXOî]@l”ñÑQh×"ð\¤¦Äy´ô2~]m<­ÒÄUZÎ|yò˵ÌÐØ|Æ ëÜ^í”(µzª].»S@û–1î–÷@ÆÖKëhÚvé~uŒ‚P¥8¡£GVuNAPìn.7žô%FL”Aû°¯²B1÷‚Èß%‘~ÿÉš@êZ‰~×#:›œ8q‡QQQ8ÿüóÃ]" 3è$›ÏYKL)·ŽÖÑ£Ðk̸Ÿ ÂÏú®ôúºy=zË=Ô‹±N0YÂ\³œKÊÔ’›\aw9Òâ¤eÚ‚®´YÄçî.Ð ÈäVÅ2•_œ(ïÌî`”œ™`ÓŽz.¥­žbj´Ü>þtåâb¥êªÝóþ„ê%]oôî¶1zžœm.±å#—†»DMêóÏ?GUUZ´hÉ“'‡»:Df ÐÏ"¯¿þz@Û ‚o !÷íÝe7˜°À3È”þì¯Ý»Nê\-讼ƒn¹@BÜ}0c?¼µ¤hóÞÆ»'‚'IïÉ1¨o£ŸRK}“èzm¨Q»Ÿ[zUʳ;Kÿß3-¤÷TÈt¥ ø$ÅkÉ7®ôâÃý²EºLò‹žû×{öN!¯«‹;ÐCn_ÌE@ãd#ŠX£F‚Óé„ÑÈ‘§DÄàjòiA—?ëÓÊætÉÏÒ@É_Qït¹Õ¥Õ’N!ç]7Ùt1•XÁ®÷,çš(¯ÝimA—ƒ1ăЕŠ„àz&°HH-šR««Úåªs ¤îZɼpðžå_ éP-/€´6‡< ­]‰žçRïkÒ.î:®…Þ—#lA÷Ïjà4ztîINNö¿3øªŽ ‚O@èó®Ö‡|éþ¤-nþžwµŒÙ•ᬟ$ÎU7Or-}îô`º¸{w¥ ™M[û¹g0ê‡å@Eþx#ø6ìR  ƒîp ú_¾øH z'‰ÓB1… øm9—®«<]üA²Lò¹R ºüØuOM:]ò3‡ Q¨1@'8àPYÃì‚ ÈÎzìžhï1ùYŸ¥j$“¥Õ9œ(çpåœÖjï±*X뜘ýu>n¼ø<•5]7D‰Ù†7Öõ"ïâ^TQƒ1+ö)nóÜ÷¾Ç&ݶg»†lj·ë™ör/1Ä|ñ+oﶉêÙîZ»p^BCú¸寓s¿)À®ùt€_,Ç×]?ûk0ÞRp_û©Ï®’3˜°êwŸåÞ9åE…2)âÖÿq W¦&¹ß{¬ §-v<û}!Þ{1:µŠÃ¨÷öú©­KµÍSÕ6ܳ.³®Í@‹Xß|ê~zG*kqiûDì+õý»wUçVøñp¥ß}µIˆä߇Q½‹êŽ iá®Q“úî»ïPSSƒ¸¸8\sÍ5á®…[ÐÉ'(–{ ÖJ­hÇ×ìÏEž²Ò\ÕZ»ÒŠJdZOHØ„h#RêƒïªÅy«Æ÷Äÿ ê À÷e„š]Ž&^Š Zź÷“’q—ž*ÅRçDçÖ®±˜í[ÆàÚ‹ƧIS°‰ã¨ßÝW¦¶ xMÍZçtç„þ6O9 ë˜ëþù»C§}>o)LéÑ*Nùåœë2|–‰iûnèÞ$uÓJ)€J«| ¶œSÁ´âÊP νùû~jí Géå„´•]JÚ›"6ʈÜS®M:Î#àêÕ ¾ô*8mÅùõ)Û&F£G;Wº¯#õ=Fä‚sxp`ª¦}—ÈwâþD!ð—£DÍU]]l6êêBû·ˆš'>-O«˜Úøk“Ñ_®b壌Ù&M1ã*%k%xiQŠ¼Ç­¶‘´JêƒmDRœ ÉñÑ8ZYën©oígKu 1®z·ˆ‰Bë8ù—âXþ˜(ƒlîtÖõh£u:ãJ»µ«mêofï`; §¶ŠUìÚíü‹cÐãLÆ æ)Ó†3û»ÌAƒÒx…? ÞC:àÑgüºàúþ_Ú¾…æ!rß= Ìèt@ß;¢foèСá®E¶ “O«˜Ú®¿\Å™òDâµôyØèA†bVdï4NâM®%ÍšZ¹zëìpSiz8ÏIõÖO—Á`ÛðÖ@fךZÏß15fP+wXgÃt,<(ÝvÍ!@—fEý<ˆ ëŒ %+ÝÒë# á¼ê½íNÁ+í£èkO£¦ù»×.2…[Л¹U«V!''&“ 7Ýtzõꥻ ï€Aí7&Ê…§\ªJˆ\¹FƒÁ£Õ<Ôy…‚à ½[ÜÔf~¦ân‚—Å FƒAñ¼¸t…ýé 2¥ef}o‚Ætß;{·Zñrûv¨®ÿ…*ÿ¸GáÎ)ª÷T(¾7Þ”^„ø¤\”ÖzxßCâKµ—þê¢Äß """"èÍÜØ±ca2™`6›1oÞ¼tíÕÑZЕÊ[„eðxÚIÚ*¯4NJ5VKOH5B˜7”×N¹Õµ!( W z Ý{h~Ô®¹¿¢ƒOs¥¼¥ K<×Ü«ƒr`ïê0" þZÐ/Zé¼hmA4ƒwê<± ƒÁ ùŠhn@o—8Üb„:ê“%mª««át:a4‘˜˜îêQ˜1@oæL&×%LJJr¥³X « Ÿ!˜*‘&Í¥*­kâ¦Òn#|»¤ë!÷0îYžà~÷Ƀ®2à=¸–À†®éÁëm4ƒ·†tù6ô¦ˆÙIï& G¤vÍý[Á¾ÐQoAWß.Ð]ûë Éœp]o¥—[Á¼0Q:~¥kì=ÜFÜ·ÞÞÇ"Òtme0{Zèô¶@!. w5ˆšÔ‡~ˆªª*´hÑ“'Owuˆ(Ì Ÿ%Ìf3¢¢¢tç€o>ór•_&£ú´G*jUZ¼\O±ÒTYµϼÂÛ4¤*’Ú”ï;³·4O¸CP˜œ”Ÿ‘.ð ] zý«³ãˆý.h)i5TêâÞø}Üýܲ~+n˜5\­v{©Ï.®g¶}9\+ñ\Ÿô“Û^‰R{¤²1&c@³Ã7•êZ‡ê„€e}yꥶ+äsWš$î'ÉߊÝ%g`«O§x¤²‰1Úg÷?TfE’d6ÿ#•5®ž7í½´¶Úï9V…>ñš«vN:Ý™©èèœ3dÈ8DE—™„ˆÎ ÐÏkÖ¬ÁøñãÚöE¯Ü›ó+Ö¦·ÂÚ½'TËSJÓV«ÐdýéþSîŸ?ÿã”ì:JûI ·ÿx5R%éϤärR»?³>Ÿ¼ø¬Þ½màÝÔœ‚àž4Ëhútj‰õ’sódÖ!Ü7 :µŠs¯##4EÃ^œ) z§]Vʱî-¿<ð”Z¨¥iÓmy[XQms(Žkž_ÿ=˜Xº¼ÎÉq~¿ÁúÍO:6¥4dÁPj­ßRÐðwJúÂçÙï u•ÿÒ–"÷ÏV»û{æŽàZg2¢Æ®ü7Aë;ª­…ès±®ês*-Ã]¢&wÁ„» DA8‹ûY`çΈ hü¹^/oõwªïÇ*ø^˜‡diÇÖMºiõyÀƒe”6EkUÿÍX<²’ãÞc=ö·ÎŠÛˆ¥‹ûë~¾r€~ó%mgòüúÝݯ£ûg±ÏUm¦·Æ—“{ã†nmÜë¸^„ÔA¯ïä®X©FÈ,q"!: 12õOˆ6"%!_ÝÝÛç3§ ÈÞK\¥íË_›ìžÏ-_-Ïõ»À3yyDWüYgpßõ¼ÆiÎ}ktwL‘ÜÏÁÕd|—¶oø>¾<¢+Þë)›%3`J¿™mÕ{&EB÷Ù³gcýúõ¨¨P~Áª¦²²K–,Áí·ß§¤Ûœ9s0kÖ,Ìš5 o¾ù¦{yMM æÏŸ‡zÿùÏP[ÛÐì““ƒéÓ§cúô騏qcàEDDtb z3WXXˆ­[·â¡‡j’ýE ˆëL ¶ IDAT‰R¯#×â%úÒE ! ü™¼M<„(£gàÛ*.4_™Ä#â£=[å<ºåJΗ¸“×9‘¦– ç$q›ÌuÞ ð›£fþ\ç\_¸(ñoÖyõ4qõPðå]7£Á€h?ßMe„ŠÁÄj<þ? ‹ôX ù”‘uÒ!’‰ýÍæÞXçQÿûߨ½{7V®\ ›Í†þýû£ÿþš»Ì Gؽ{·ÇrƒÁ€§žzÊgý¬¬,ddd`ÆŒX·n6n܈o¼°bÅ L›6 )))xá…0`À$%%DDDç¶ 7s‹/Fii©»•£°°°Q÷¥áAT.¿¸}±Fƒ!d7§Xç@ž¡€G4¦¥ -»‘;ÒxÁ ù±óÞàA ‡i’¸ð‡&S;¬v¯Š©Æ¼iÍÞé§ Ý{Œ·R±¾zä\ É­´`Sé)‘û¾H_Ž]ƒÐ]uðS…ˆÏa2™Ð»woôïßN§›6mÂk¯½†ß~ûMÓö½{÷ÆUW]¥yyyy4h  „ÜÜ\€ÅbAtt4ÒÓÓ‘””„Þ½{ãàÁƒšËM³Ó¼.ÑÙbûöíØ²e ¶oßîªQ` z37þü&ÝŸ\«“7¹jAhè6®…Ñhpç/V0éÏŒÏÎãZ^2h©¶ÜÜmÒ²Ih„t¹ç6Nw÷ðA„à$PJUW;$‡Sþs¿êùkA÷þú(ÝsÞ“óEÒe|™²#>—¥à1é  Çá¯=Îý›o¾‰ãÇ£OŸ>¸ûî»ÑºukÀ+¯¼‚>}ú\nLL fÍš…ŒŒ 6 :tÁh4âþûïÇôéÓQTäËŸ——‡Ž;"++ [·nÅðáÑ››‹¾}ûjÚ_+g•ÿ•ˆÎ2ÅÅÅeá!¢³t 9ÙÐp‡²5P °õæGvm£þ{ ŒƒOYy…†À\¹]’fM©b2Ý·C/“À(6µ[UiLt´ÆéìõŽ©ÖÚ‚n¹§Â%”‰B5]J©D›¤]úÍßK‚@þ¶„Úõ×_´´4ÙåÁxôÑGa4qðàA¼õÖ[˜={¶û³ØØX¤¦¦¢E‹îeâ¹HII‘­?ûbºÖ ªL Ê,ežFËØ(´Ö1ÿ̹jôèÑá®EèròcÐ]aœÑ`Ù¸N±å^×tw=<—+LŦ›\ÐåÑ‚Ž†àÑ£ë»äÜ æAg z ”ª®vï9œ‚l@¦¥w  ÿu‰b ºÌË£H¹þZœõh¤î²÷m­Ý³]pAW.'D}‚æ »záн{÷ Ê5Ö¿xêÚµ+*++a³ÙƒôôtX­V<þøã8qâRSS]ºtÁ'Ÿ|‚~ýú¡_¿~X»v-ºvíT(4f~™×äû\6æbèDD:q :…ÜÇÙ'}–©¬EÎI‹®rBøT ž[‡êa\®ÏtA2¾|úÏE•xêÛ‚úz*åA¶¦þ9+‚j–:'jeÒg©·r«]ö>Ð:„ãw©È”æ½çƒp½¤ÑwÁëöpÑÐÜßÒ–’OòÇž_ÞÐtk0Ppº;ŽT"÷”òß®H¹ý,Xàñû+¯¼’ràèÑ£èСbb\é333±eË8Nlݺ™™™€„„ØívÁl6cÏž=îψˆˆÈ?è-c£TŸSú€Î@\I¨ž{Å`J)¸îÑ.Q1=•ÑŒìÑÖý»\ü“žìJU5$Ó•Í$‰ÔÚ·”Ï¥ýUn9ú§yîS: O§$ìªÏ9--£ºÎáþùLmÃÏFƒye¾ýB;>ŸÔ§=Ê­úr G’ï–].]ÿÂÏTd%æZïÕxΠ¦Êæºn5¦4 H‰÷íìÔÎëÞ2 økFkMeŠ®¹(Y×úZŸ Gˆ¢‡*·ú™ZÚ&ºZò:&Åj®ß“Yù²ËÛµð<ÿƒtžûP«¬¬ôøýÌõœõÞ¾þúkÌœ9xì±ÇðÕW_Án·cÞ¼y˜={6>ÿüsLš4ɽþàÁƒQXXˆGyùùù6l˜û³ &`áÂ…˜3gþò—¿pw""" “Û[£ºBöOÕö@%æŸÔ§ì¦{Ÿj¹Î'_ÑAs9jëJó‰{{}TwügDWüûÚ åÒ.­·öjçþÙ»»q»1î@麮)Ø8årÙ¼Ÿ¸&]¶N¥gj}αôÂ%ír6Kók{R暆@yݤK×½?®‡ßuWî/îê…¬»{{äŸ=8“út@ŸN ù¸[ÆFáöÞí|ÊøxÒ¥øêîÞØ8årÕ}¥Ä›°Xå>ꔫºýs×wÁÆ)—+îgÃäÞØ0Ù7·¹7iº­7FwÇWw{n'Š''h1ô—ôÖx` zÞô6 ®`ÒàI¯ûîìÛpÏ<éRD èŸÖJõ·ŒõL¹50Ý7¨Ü8årŒ—¹†r.>ß5¡Ñ¢‘ÝТ>Mà´DëøhtNÖöBNÛÄh¼{ë%o/§ûù Xy{Olœr9Ú$DCðó pÐ…ê÷ô¿zv)ÿ—Ìw}îuê®g ÒÒÒ°cÇ8NüøãºÇ_wÝuxñűråJ¼øâ‹6lL&æÌ™ƒ¹sçâÿøÚ·oï^?66Ó§OÇÿû_̘1Ãݲ¸Z×_zé%¼üòË:t¨®z\Y›­k}¢³Áòå˱páB,_¾<ÜU!¢À1èä&Cë/×¹¨!^4Á•R›Ê¤qÒ-ªùŸÕÆ›ŒòŸ+=¼{¯éï!_)õ–Sðת”ÂNúbA9-˜×zªµR¯›Ïþ!ɯ-©´xÞ¤Å(Í`Ð8§@”Ñ zFã¢Õï µi'îuqŒ^cdÇ ëJ#èè…Aòƒ\ÙZî ßýz®§Ô꯵÷Šø5BÚSÅwrC½ŒC@OÔè¹>€öï‡Hîè-#·Ür ²²²°aÃôèÑ·ÜrK“í;” L[¸kAÔ´»Ý“‰åDÄ$¤ÄZcc1Èp Ú»øJ©ßÔ“–-Z%Å•Ú3²Þh½שÞù°ƒÉ±î½¼!‡ºr¡šÅO`jôz1LLâš9[ù¦ð_vhFÒ;[ϽázaáoúÿÂÿºZÉM,'Gë¸jñûã„ôž«/;€ú5&½/ üýmÐ2^SN —””„±cÇ6ÝÉɨÆvAɺuÓß‘ˆÎ^ Л¹’’,\¸µµµ0`ÆpYÒ‡IÍkýj‚B^aÔ‚1=Á³Z‹¿Zª@»gG÷šˆKç1ªµÚ©åAW¢œMÍ {.ÕJlŒ Ïh .03ÀàgÆlõÒC5a—¿àK®z^(¹zLj ĘD€PÀ§Ú‚®ãá6Ðt½Ýhõ£ÚK†€t•åÒs)®×˜ñX´´ÞF—Ïߦ¡ Týñ—{[®úZÐý¯/m‰Uwoï—UJuÐúžCÜ^ü,V5˜KÕWYÏ ×úþtÿš2á3Ï<ƒvíÚ!9¹¡š:Qóý™«¨¨p?„õïß¹¹¹èR´ ˜©Bz‚õ]¥]oZ*¯õý54ªvq÷ÚXå÷/åDèZKk¦X”LWfWà)³/-²ª­à~Ž+Té·ýµÄË· k¿—Œÿí¹â¡lA×ÚÅ]ëy·—¶ »Ç P?-u ¸<½-èþ®g„uqoÕª¦L™âÎ[Þ\µwœB Úú_‘è,’ºº:DGGóÅ1@oÎŽ;†V­Zá—_~Áûï¿ûî»YYYén¼9®Ñµmãï'ÌZ«ã]Ë’¢ì,W 5ñ³(» ãÄ8m¨­±Ên£&9Ö‰h™hÈb±Ài³i./ÖY§¸nœ`ó©·È^[ ê|¶ßVc…Er.œµžÇ˜ët—-Çn“?`tÔz|f°7ün±X<~%äÓjµ  竦þZ$Æhi”߿ժízíµu·1Ô/oal8Æ6qâà[G«Õ £#Êc{9mc8m5Šë¤˜ªÛ uVX,ÊûQºäÈ]Wq;¹c´ë¸ÿ[íêjU×oëD”C€ÓV §`ðYWzX-ì 3´+•ëý}³ÉÔÙb± ^æøä´®¿v[ ÚŹÊnmr¸ÎŸãSÓ6N­[0 u×ÔV£þ÷Eí>ÔÕø|G}Ö÷:më'¶s‹‡RFFÖ¬Yƒž={6ë.îØOà7ètŽÙµkª««‘˜˜Ø,¿·DZAkÓEœÒÒR,_¾cÆŒÁúõëqóÍ7ã‹/¾ÀC=¤¸Í±cǰÿþ&¬%I]rÉ%èÐA{I-Ö®]볬9Mg6›±sçN,ü(±FÚƒoÏ3ãPWy Ñ­ÎC¯'> wuBfÙ˜‹‘ª’N•ˆÂÏb± ''ýúõCR’¶4ËԸ؂ތµoßgΜAff&¦OŸŽM›6!33Su›6mÚà’K.A\\¢¢¢T×%"¢Ðq:°Z­hÓ¦MÈËnNÁ8)c€ÞÌ¥¤¤`ÿþý¸ð ±sçNŒ=Zuý˜˜˜·Ü‘6­[·n”rív;²³³‘ŸŸÑ£GãÀLÝDDDÔ 5ïÙd'NÄûï¿ÇiiièÒ¥K¸«DDDMlÕªU(--Å®]»Ÿ}öY˜kDDDD` z3סC<÷Üsá®…Q~~>&Mš„íÛ·l6[˜k˜Þ¶(A÷pWƒ¨I­^½‹ ¸í¶ÛÂ]" 3èDDDÍ\=°dɘÍf,[¶ }úô w•rÒ˜ „~’{¢ˆÖ­[7Øl6ÄÄÄ„»*D 5scÆŒÁáÇ‘––†^½z¡}ûöá®R@ŠMçC&ó%ÑYíòË/wˆ(‚0@'"": tîÜ;ww5ˆˆˆ( ÐÏ!%%%X¸p!jkk1`ÀŒ7.ÜUjT«V­BNNL&nºé&ôêÕ ðÕW_aãÆ0¸÷Þ{Ý©éjjjðꫯâèÑ£HKKÃ<€ØØX@NN–,Y:t(† žƒ ±%K–à·ß~Ã믿€çpÝ7¿þú+âââpçw⢋.ÀsS\\ŒÕ«WÃl6ã’K.qÿý8×ÎKee%Ö¬Yƒï¾û+W®„Ñèšk5ÔçaõêÕØ¾};âââðàƒú;1kÖ,ß æÎ²ã&""¢¦ÁYÜÏ!ï¾û.&Nœˆçž{………ÈÏÏw•ÕØ±c1wî\<ôÐCX±b ¢¢›7oÆœ9s0mÚ4÷rÈÊÊBFF,X€Î;cãÆîÏV¬XiÓ¦aöìÙØ¼y3Ìfs“O¨¢®®¡/)Ï °}ûv˜Íf<ûì³xúé§ÝÁ9Ï+`>|8æÎ‹²²2ìÞ½ûœ}:üýý|ß„„„`óæÍ0 ÈÈÈ@pp04ø¾‘Ëåpvv†J¥‚ÉdBJJ ù÷é¿êºqøðaTVV"==7¾c†3fàå—_Æ{g—^z 3fÌÀ{g÷ß¿þNœˆˆˆêœÄd2™D‡ ˸xñ"bcc¡ÕjÄkÖ^ýuH¥Ró„VãÇG›6m°cÇlÛ¶ vvvxá…àú]ÂÅ‹C¥RA©TbêÔ©æaggϞŊ+`4…¨¨(açU×&Mšd~ÍZCï£ÑˆU«VáìÙ³h×®FŽi.´zßœ={›6mBQQ1zôhÈåò×/;wîÄÎ;‘ŸŸoooôêÕ ýû÷¯ó~X¿~=:Të׬­]»}úôA“&MPQQo¿ý“&Mª¿Ž¨cjµÉÉÉøýd6~7´ÇâR玀¾ä ìÝš ÓÌu¢ãÔ™UÃÛCé®ÃêmÞ¼ŽŽŽxê©§DÇ¡¦¢¢™™™èÒ¥ \]]EÇ!°@'""²yï½÷Þzë-8::¢²²~ø!æÌ™#:V­Ý(Ð7ŸÌÇC+Ñq,Žzöÿ~hµZ( <ú裢ãPÃÝú4œ™ÂˆˆˆPƒÆG}gggTVVbÈ!¢#Ý“{oÀ :Õ•¢ ½ã6’ÛÁÝÑvÞdÀ¢œˆþŠ:‘ CXX˜y˜,‘5˜±5KÈqW ooS:Ñ_q’8""¢€F£AVÖõ‚¨¬¬Lp"""º,ЉˆˆlÜ®]»‡„„@\\œàD÷ÆÅT!:‘ÅââÅ‹(,,…ˆ¬ t"""wðàAL:Õ<¼ÝVï é²EG ²¸-[¶`Æ زe‹è(Ddø :‘kÖ¬8€ªª*öîÝ µZ}_ÙˆˆˆèDDD6î?ÿùÏ}mß¹sgôèÑ£Ú²¬¬,„††ÂÕÕ­[·†L&ƒF£1·EFFB"‘ 22gÏžTTTÀÞÞmÚ´««+:wîŒsçÎÕ:‡ŸþÂ}‘-JJJÂÖ­[ïûB=X Ù¸°°0¤¤¤Àh4šÿw¿²²²àíí  !!ÞÞÞæB\¥RA*•bòäÉP«ÕP©TæmZ¶l‰íÛ·ãÝwß…R©4oSv¨ºïÜD¶F¯×C§ÓA¯×‹ŽBDV€Ï Ù¸£GB"‘`óæÍæeï¿ÿþ}íS"‘¼¼¼àéé‰óçÏ›—€\.‡R©„‹‹ËMÛxxxÀÇÇç®yƾ `¸¯ØD6'**Jt"²",ЉˆˆlܬY³ê|Ÿþþþøã?0bÄÀìÙ³1räH@›6m ÑhðÖ[o¡°°J¥жm[üüóÏèÒ¥ ºté‚ 6Àß߿γ=¨8ĈˆÈFÅÇÇ›ÿ¼{÷î:Ýw@@Nœ8a®×ëáäädnÛ·oŒF#öïßožÝÝÉÉ ƒ*• jµ©©©æ6"""º3ÞA'""²Q7žý€}ûö¡gÏž÷´Ÿ;wbçÎ(..Æ›o¾‰^½z¡ÿþˆŒŒÄ¬Y³`gg‡^xÁ¼~Ÿ>}°xñbLŸ>J¥S§N5·5 ±±±0ˆŠŠ‚««k­s8˜ôîéˆlUyy9ŒF#¤R)œEÇ!"ÁX Ù(“Édžî¯`~—ymôíÛ}ûö½iy¿~ýnùs¹\ŽW_}õ–û ÀgŸ}VëcÿUgÝä¢Ã=mKd«Ö­[‡²²2¸¸¸`üøñ¢ã‘`,ЉˆˆlØœ9s\Ÿ íÆŸûŸ$N„3ö­JÑ)ˆ,«_¿~¨ªª‚è(DdX Ù¨ú˜N¤i#ш,®U«V¢#‘á$qDDDDDDDV€:‘àw"""² >†‹(@KÑ1ˆ,êðá謬„\.G×®]EÇ!"ÁX ‘Up3–‰Ž@dqùùù¨¨¨€“““è(DdX ‘U8åàhD§ ²¬aƉŽ@DV„Ï YèDDDDDDDV€:‘à3è ŒN§CQQ ìììDÇ!"j0ªªª Õjáéé Ñq¬RDåiüŒ¢cYÔ×_²²2¸¸¸`üøñ¢ã‘`,И¢¢"¤§§‹ŽADÔ`ÁËËKt «”#ót¢SYÖ#<ƒÁ™Œ_ˉˆzƒãèèhÓ¦  …à4DD ‡V«Enn®ùs˜nvÙ®±èD(:Yè8q¿üò 233±fÍš»ÚÖ`0 >>ÇŽƒ\.ÇÀuÇí¤ÒëÓ( ¾o“ˆH€ŸÃDDDDÇo ‚”——ã§Ÿ~B×®]ïiûüÙÙÙ˜9s&¦L™‚mÛ¶qè:‘ c.ˆ³³3æÌ™ƒÐÐÐ{Ú>-- ƒ ‚R©„¿¿?žyæœ>}ºŽSYN‹ª+¢#YÜéÓ§qüøq~#"ân“t:²³³Ñ²eK¼öÚkh×®úöí‹]»v‰ŽFDDtÏZ ‘‚¦¢cYÔñãÇQ^^ggg„„„ˆŽCD‚±@·A0 hÞ¼9@"‘ÀÑѹ¹¹bƒ݇£ò @#:Ùº¢ ½ÅÙHnwGû{Úv̘1uœ†ˆl tÔ²eKÈd2\½zŸ}ö 77>>>‚“Õ¯E‹!99ß}÷è(DDd¥flͲø1W oÏ:Ñ_ñtäàà???¨T*ó²¼¼< LUJ¥BïÞ½oZ¾jÕ*;vÌ"8€””‹«&×®]óÏ>‹®]»bĈ(..ÉfýùçŸ8wîœèDDDDDõ‚º+((ÀܹsQVVvS[HH¶nÝŠ¼¼<œ={7nD‡¤¼;&L@XX˜E޵ÿ~«(ÐçÏŸÞ½{ãðáÃèÕ«,X :Y!q$//ï¾û.ŒF#ŒF#Ƈ&Mš`þüùæu´Z­ùyó¿:t(Š‹‹1gÎ( 0@øô3gÎ`Μ90™Lèׯ_µ¶Ý»wcþüùÈÎÎFlllµök×®áßÿþ7®\¹ƒÁ€Ù³g£K—.€ŒŒ ÄÇÇãܹs0™L˜;w.‚ƒƒï¸Ý_|„„ØÛÛcãÆ˜[µj…¹sçÂÞÞ øúë¯ñùçŸßq»ÿûßÐëõhÒ¤ &L˜P­mÙ²e Åûï¿ÄÄDÄÅÅ™ hàú…†7Þxo¼ñF­sÞŽV«ÅÕ«W‘••…çŸÛ¶mÕ+W ÓéàààPã¶5ûwß}‡¼¼<¬]»r¹¼ÚvsçÎEß¾}1wî\lÙ²ï¾û.¾ùæ›;žßÚˆˆêÛeic Jt "Ë ¬Õ÷"jX SÐh48sæ ¢¢¢ãÆÃÞ½{o¹®ÉdªösÏž=1}út`È!7·5jÔyyyHNNFNNRSSkµÝ펿ýöŽ9‚¸¸8×/vüU`` ù€êÅì³Ï>‹/¿üÍõ—íÖöbÂŽw;ݺuCBBL&Ö¬YƒˆˆˆZmWÓ¹1 ,@EEEµmìííŽüðË/¿ 88 …¢VÇ$"""""qX S™;w.¾þúk 2ååå·½û÷å›7oÆ€0hÐ lß¾¯½öš¹íÅ_ÄÇŒ!C† I“&¸zõj­¶€'Ÿ|ÀàÁƒñÞ{ï™—?ÿüóðõõÅ3Ï<ƒAƒÝôœÿírßéx·óÊ+¯`Ïž=èÖ­víÚ…×_½VÛÕtîcÆŒAÛ¶m1jÔ( 4_~ù¥¹íÝwßűcÇЯ_?:tsæÌ©ÕùÝ©ˆ¨¾yKDG ²¸œœœ;w999¢£‘˜îf,2Ù<µZääd´k×ÎüL2‘µÛ¼y3žþyŒ7„££#:wîŒ/¾øBt4¢Z«¨¨@ff&ºtéWWWÑq¬Ê›þïÄiül´þW†ÖµÔ¹# /¹{·&è4sè8tV o¥û½Vûúë¯QVVŒ?¾Ž“ÕŒÿ6YN'Hbb"¡×ëޱcÇV{†ûNôz=~þùg>|r¹=öú÷ï_‰évxËå5ºuü¢u?´Z-6nÜNwS›ÑhÄ?ü€îÝ»s²8¢ÄQ‡ö€Vt "Ë=z4L&G±èBœvíÚ…ÌÌLÌž=•••˜3gZ¶l‰Ž;Öcrº•­[·ŠŽðÀ*++Ô)S0mÚ´›ÚŒF#¦L™‚¯¾úŠ:Q=Ù³g6mÚ777ÀË/¿Œ¦M›bÛ¶mرc¤R)bbbàúEµE‹!//>>>˜2eÊMo›¨‰QRû ÕD ¾^ˆþŠÏ  ––†ˆˆ„‡‡ÃÃÃÑÑÑ8}úô]íãüùóxøá‡áä䄯#$$ÙÙÙõ”˜ˆˆªaÆaöìÙ˜={6š6mŠââbìÝ»³fÍÂË/¿ŒÕ«W›×ݾ};zè!,X°­[·ÆŽ;&'""²=,ÐÈÌÌ„R©ÄŠ+0cÆ ¸¹¹áâÅ‹0 µÞÇàÁƒqêÔ)üüóÏøá‡PTT„>}úÔcj""jˆþ>UMVVBCCáêêŠÖ­[C&“™ßŠ‘••…ÈÈHH$DFFâìÙ³""Ù,è¨T*4oÞÜü¬‘D"L&3¿¬6àââ‚ÌÌLœ:u M›6…LÆ'ˆˆ¨îÈårlÚ´ óçÏÇ‘#G\/½½½±`Á$$$ÀÛÛÛ\ˆ«T*H¥RLž<jµ*•ꮎ¤çH0jx6oÞŒõë×ßÕ+j‰èÁÅŠN"::Ú¼L¯×ÃÛÛ»Öûøâ‹/ЧO<ñÄ€U«Vá§Ÿ~¨Q£ê:.‘‘‘‘èÑ£Ç×ËÈÈ@«V­pøðá»ú;DDwÖ½{wtëÖ ü1Ú´ic¾¸ìååOOOœ?¾ÚäVr¹J¥...w}< jÿ¼:у¢qãÆptt„Bqo³Àу…wÐ Â… Ì?_½z^^^µ¾®ÓéN:™—ùûû#++«Î³‰¢Õj¡×ë︞ÉdBEE…5L‰NNNxøá‡qòäIøûû#??#FŒ@Ÿ>}ŸŸ???@›6m ÑhðÖ[oA"‘@©TÞÕ±rìy‘žG}}úôÁ£>*: Yè„„„ 99)))(**B\\BBBnZ¯  sçÎEYYYµåèÑ£Ö­[µZ‚‚lÛ¶ ½zõ²Ô)Q`4\åuúôitéÒ8qâ„y»^¯‡““ ûöíƒÑhÄþýûͳ»Qípˆ»ÁÁÁ:t(âããa0ŠaÆݴžV«EAAÁ-'9r$¶nÝŠwÞyNNNèÖ­[­†Y»²²2sQp74 Š‹‹áîî^©ˆ¦Ÿþ)))pvvFß¾}ͯ[‹ŒŒÄ¬Y³`gg‡^xÁ¼~Ÿ>}°xñbLŸ>J¥S§NˆˆÈ&±@¤ÿþèß¿ëøúúbÉ’%·lóôôĘ1c0f̘úˆG$ÌÌ™3‘žž~×Û­Zµ [·nEjjj=¤"j˜† vË ÈýúõC¿~ýnZ.—ËñꫯÞóñ\Lœïy{"[TXXˆªª*ØÙÙ¡Y³f¢ã‘`,ЉˆˆÈ*é²qDÇ ²¨-[¶ ¬¬ ...?~¼è8D$ t"""² §ü­èD–5tèPFH¥œŠˆ8IY‰íÛ·#22òžž?ÿ«©S§bîܹu”Šˆ,I#ák¦¨áiܸ1<==ѸqcÑQˆÈ ð:Y…ââbœ:u ;v¼¯ýäää@§ÓÕQ*""¢;+ª¸ókAëZ#¹Üí-~\"ª_,ÐILLDbb"ôz=ÂÃÃ1vìXØÙÙÝÕ>233ñý÷ßãÊ•+pqqÁK/½__ßzJLDDDD·2ck–Źjx{èD qàäɓظq#þõ¯aîܹ¸rå 6mÚtWû¸rå ¾úê+<ýôÓøê«¯0oÞ<øøøÔSb¢úséÒ%<óÌ3¸páBîwøðáØ±cGꗟ¾n?ˆlAÝ9„Vf ƒîœè(DdX  ––†ˆˆ„‡‡ÃÃÃÑÑÑ8}úô]í#%%‘‘‘èÚµ+ÀÁÁ2Dí©¬¬ÄîÝ»Q^^^§ûݳg.^¼X§û$¢úe‡*ш,ÎÎT™É;ÿ‰ˆCÜ…ÈÌÌD÷îݱbÅ deeaÞ¼y¸xñ" C­‹ì'N iÓ¦øàƒ ‘HЫW/<òÈ#H$õœž¨î”””@«­¿)›«ªªpíÚ5¸ººÞõ#$DdygìÛÑ)ˆ,넼èDdEx]•J…æÍ››‹i‰D™L†üüüZïãÌ™30 ˆ‰‰ALL ‘’’R_‘‰êÅ#<‚o¾ù¦Þö¯R©Ð¶m[deYþÙ@""""¢»Å;èøøø °°ÑÑÑæez½ÞÞÞwµ:ÀËË Ð»woüþûï «ó¼DDDDDDTÿx]€   jb]½z^^^wõ y§N––fþÙh4B¡àûcÉ6¬]»+W®´Øñ’““ñá‡ZìxDtoL–U‘hr“ c%ä&¾"”ˆX  ‚ääd¤¤¤ ¨¨qqq ¹i½‚‚Ì;eee7µ………áàÁƒ8þ<Ôj5<ˆˆˆKÄ'ºo»ví–-[,v¼ŒŒŒzJODu£³îŒèD÷¨ö8úhàQíqÑQˆÈ pˆ»ÁÁÁ:t(âããa0ŠaÆݴžV«EAA †›gÌQ*•xñűxñb DEE¡K—.–ˆOtÏΟ?_m䇥%''C"‘ <<\X"º½3ö­JÑ)ˆ,ë„C ¤0ÁNôKD,Ð…éß¿?ú÷ï_ã:¾¾¾X²dÉmÛ»t颜lÊ®]»ðæ›obðàÁBŽÿÙgŸÁÁÁßÿ½ãQÍJ¤DG ²¸";wшȊpˆ;Õ;µZíÛ·£¢¢Bt×/äææŠŽADDDDT t"ªwùùù9r$._¾,: `üøñغu«èDDDDDÕ°@'¢z•˜˜•J%:ÆM4 ~ýõW\»vMt"ú/ÃEш,Î_AºløëÏ‹ŽBDV€:Õ«É“'ã?ÿùè7)..ÆØ±c‘““#: ý—›ñæ·–=è<«Jдê<«JDG!"+ÀI∨^ÄÅʼnŽP+ÇGBB>ÿüsÑQˆ¼Sþ€Ft "Ëú?EGшÈа@$11‰‰‰ÐëõÇØ±caggw×ûÑh4xå•W —Ë[I‰îÍîÝ»EG¨•óçÏã‡~`NDDDD±@àäɓظq#&Nœ___ÄÅÅaÓ¦M>|ø]ïkíÚµhÓ¦ þüóÏzHJt÷V®\‰+VÀÏÏOt”»òÊ+¯ ¤¤ñññ¢£ÝQQ…^ÈqÉíàîh/äØD  tÒÒÒððp@tt4bccïº@ÏÎÎFzz:ÆŒƒ•+WÖGT¢Z+**BRR®]»†Ë—/Û\®V«QRR‚Í›7£mÛ¶ ‰ˆˆè¶flÍrÜUÃÛ³@'ªGœ$N€ÌÌL(•J¬X±3fÌ€››.^¼ƒÁPë}F¬\¹&L¸§¡ñDu-;;'NDI‰mOróÆoà·ß~ƒ¨AЍ<-:‘ÅõÖÆ Šÿ ·æ°è(DdX   R©Ð¼ysH$€D"L&C~~~­÷±cÇx{{£]»võ“¨Öºwïn3Ïœ×FII """pôèQÑQˆ”™·èD—aÿRü‘aÿè(Dd8Ä]"::Ú¼L¯×ÃÛ»v_LŠ‹‹±eË|ôÑGõ‘¨VÖ®] gggüñÇ(//§ÎFdee!==IIIxíµ× •òz&Q}»l×Xt"‹+5ˆ¬ t‚‚‚páÂóÏW¯^…——d²Úýç8|ø0JJJ0mÚ4@UUt:Ƈ¸¸¸Zï‡è^íÞ½ÇǾ}ûдiSÑqêMNN.\???\»v &L‰ˆˆH(“Óqb:jHXÉ ‚ØØX„††¢uëÖX¹r%BBBnZ¯  ñññ˜6m\\\ÌË£¢¢eþ9==Ë—/çkÖ¨Þeggã»ï¾üøã67ܽJJJ¹sçP^^ŽöíÛ£oß¾¢# !br:NLG Çl Œ¡C‡">>ï¼ó<<<0lذ›ÖÓjµ(((¸ãäq&“Éü<;Q}ÐëõxòÉ'ñ믿"66:Nt$!¾ûî;üþûïxòÉ'qäÈÑqˆ8-ª®ˆŽ@dq>†‹xHŸÃEÑQˆÈ ðº ýû÷Gÿþýk\Ç××K–,¹ã¾‚ƒƒ±pẊF¨¨¨€Á`@LL Ú¶m‹C‡!""Bt,áŒF#:„]»vaüøñصkáêê*:‘Íke(D ÜÇfˆnÅWŸ¹I‡J‰T2/ÑqˆH0èDTJ¥ÂîÝ»‘™™‰¤¤$¸ºº¢I“&¢cYN‡‚‚|òÉ'8räf̘fÍš¡[·n¢£ WPP€ØØXTVV¢[·n1bD­¶;*4õŽÈÊìq ˆ¬‡¸ ¼¼o¿ý6¶nÝŠéÓ§C¯·ü$0¶ìóÏ?ÇúõëñöÛo#55Ut"¡¾ýö[Œ=óæÍCnn.²³³EG"""² ,Љ/¼ð–/_ŽåË—ãÒ¥K¢ãØ,£ÑˆåË—cûöíèׯ._¾,:‘ÅÅÅ B¡@×®]qöìYÑ‘ˆˆˆl‡¸5`Ÿ}öΜ9ƒ´´4¸¹¹‰ŽóÀÐh48zô(¾ùæ;v k×®‰Èb.^¼777=zßÿ=&Mš„íÛ·ßqÞ"¢Ûá«Ý¨!a.Pbb"¡×ëޱcÇÂÎήÖÛoÛ¶ III(--…¿¿?úöí‹:ÔcbzPlÞ¼o¾ù&úôéƒ?þøCtœÖ•+WpöìYŒ3J¥}ô‘èHDõîÆ[E\]]áãã™ìÎ_5ŒF#àQ»\ìwlSŸñ¬RÙCm`(s‡ÌÅ-M¢ã…uÖƒIÄ'EDZJ vŸ³ø1§=ª„›âÁ/• ºJ@UU•à$tÃÿ[g¥Nž<‰7bâĉðõõE\\6mÚ„áÇ×z]ºtAdd$””„ØØX,]ºöö¼ÚG7+//Gaa!üqDGGãâE¾ÎÅRŠŠŠàêê ¥R‰?þƒ†““¤R>eDž-Z ´´xõÕW±gÏÔ¸Fs}f¸Ð€6µDHkóÙÇ¢Pÿ+ʘ‚ª3]@±è¤ÕjEG ÿb.HZZ"""~}æÎèèhÄÆÆÞUîééiþsŸ>}°zõj¤¥¥¡sçÎuž—l×¥K—`00pà@ 0åååæ»UdYååå8wî|||°sçNxzz¢M›6¢cÕ9¤§§Ã××ÉÉÉ6lXë{zz"(( …â®F’Ñý1Ðh4Õê ‹º ™™™èÞ½;V¬X¬¬,Ì›7/^„Á`¨ÕpÀ¿»|ù2´Z-¿ì“™Á`€Á`Àûï¿üü|Ñqèo~úé'üôÓO8uêÀÁÁAp"¢º3zôhÄÆÆB«Õ¢[·nhÛ¶më;88ÀË‹ï&"ÁÝÝ]tú ޝD¥R¡yóæægõ$ d2Ù=R¿ýöüqþ#³„„´jÕJt ºƒçž{111¢cÕ)///Ì›7_~ùe­ßNDDD,Ð…ñññAaa!¢££ñé§ŸB*•B¯×ÃÛÛû®÷uúôiœ>ƒ¡¡¡·œåV«Õ¢  à–wC—/_ŽÂÂB¼ÿþûæeÄSO=U¯ÙI¼?ÿük×®Eee%–.]ŠÇ:Nt,ª#F£•••xíµ×PVV†¾}ûâá‡FDD„èhDDDDTX  Ô¿ôïß¿Æu|}}±dÉ’[¶}øá‡õ‹¬Tjj*ìíí1bÄŒ1_|ñ^zé%ѱȾøâ <ûì³3f ,XGGG<ñÄ¢cÕ‰‚‚ÄÆÆ¢²²ݺukP“Ê­Y³™™™Édxúé§Ñ©S'Ñ‘„‰‹‹CJJ –-[&:ŠE­Y³ÇŽƒB¡Àرcáçç':’EåççcíÚµP«Õ zàÿþ—””`ýúõHJJBBB¤Ò냙·mÛ†;v@*•"&&‚“’H,Љ¬ÔÕ«WqôèQ\¹rÿùÏpéÒ%¸»»ãÊ•+¼[ÞF\¾|GŽÁÂ… ñá‡âÒ¥KèÓ§š7oÎÌÉf}ûí·=z4üüü°páBdggÃ××Wt,‹xöÙg!“É V«1gΜ[ çææB¯×‹Žaq‡†Z­ÆG}Ô`_µ¹víZ<ùä“h×®–.]Š'N sç΢cÕ›œœãĉæeÅÅÅØ»w/fÍš…k×®aÕªU˜={¶À”$ŸA'²"‡Fjj*zöì‰o¾ùÿüç?qúôiìÝ»Wt4²2iiiHNNÆ´iÓž={â·ß~ÃöíÛ9A Ù”ââb„„„@¡P k×®8{ö¬èHscbXWWW˜L&TTTN$Æš5kðÏþSt ‹;yò$ž|òÉ[œ×_3,—ËÀüÿ²Î;£GÕ–eee!44®®®hݺ5d2Yƒý, ëxÈÂòóó!•Jñûï¿ÃÛÛIIIpssáC‡P^^¤¦¦r3ÕšÑhDjj*Ž=Š… búôéÈÌÌD÷îÝѪU+”––"<< …J¥ò®ßAT_.^¼777=zßÿ=&Mš„íÛ·ßññ¯Z­†œœœDG±¸C‡!00¢£XÜ™3gàää„ììltìØ„½½½èXƒ?þˆˆˆx ïžßNVV|||°`Á4mÚÞÞÞ8wî\ƒQC,Ðéèõz¤¦¦ÂÉÉ ™™™ðôôDaa!š6m WWW899ÁÝÝ•••H$P«Õ¸t霜œ€nݺaݺu:t(:„N:ÁÎÎ¥¥¥èСÒÓÓѵkWäçç#88z½7†‹‹  agg'º`2™ Ñh––{{{¤¥¥Ád2¡¨¨¥¥¥hÛ¶-6lØ€Þ½{cÕªUxâ‰'ššŠÊÊJDDDà›o¾Á´iÓ°téRL˜0*• žžž¢O‹EEEÈËËÃÚµk«ý®-\¸ÑÑÑØ»w/Ú·oœ:u C† ÁñãÇѽ{wœüë_ÿÂ’%K0eÊÄÅÅaÀ€(..Fff&† ‚åË—ãµ×^C||<Þ|óM\ºt €k×®¡wïÞðòò‚B¡¸§·ÊÊJèõzTTT@*•ÂÕÕZ­YYYJ¥ÈÊÊBqq1t:.\ˆgžyË—/7ŸïÈ‘#‘““ƒ?ÿü}ûöÅž={ЩS'äææÂh4rè1 wã÷°  ÎÎÎæßÑo¿ýŽŽŽøù矑žžwww$&&"::‹/ÆgŸ}†ôôt 2F£îîîhÚ´)<==¡ÕjQRR‚&MšÀd2Ýó]@­V “ɄիWÃÇÇÛ¶mCXXNœ8ÂÂBxzz"!!“&M¢E‹0yòd$$$ {÷î®ß‰5j–.]Š—_~6lÀàÁƒqùòedeeÁËË kÖ¬A³fͰpáBŒ5 ™™™P«Õxì±Çðõ×_×ø¹6}útÄÇÇcÖ¬YÈÊÊB¿~ý P(àããGGGH¥Rèt:”––B¯×C"‘àÊ•+hÖ¬d2Yƒ¾y·Z´hÒÒRàÕW_Åž={Ü| ÉÉÉËå ònYff&ŠŠŠðÎ;ï¸>Ö—_~‰éÓ§ Nfpww‡T*E×®]±eË–U WVV"##'N <;wîlpº¿¿?þøãóy³gÏÆÈ‘#§"‘X  ’˜˜ˆÄÄDèõz„‡‡cìØ±wuWØ`0 >>ÇŽƒ\.ÇÀUëíÇ=z˜¿È.[¶¬ÚÙ§Ÿ~ÁGµ§ IDATºZáù×/²Z­ö^N¹Îèõzáøñã8wŠÐ³gO¬ZµÊœ÷Æè®]»¢Y³fËåðõõ5Óh4P«ÕP(ؼy3üüüðý÷ß#88k×®E‡àââ‚ßÿãÆ3_4øúë¯Ñ§OŸ[¾—žèA–““ƒ 6àÒ¥KÐét8vìFŒeË–aêÔ©X¼x1†Žüü|(•J„‡‡ãÚµkxâ‰' Ñhàëë ƒÁgggן¡wttÄÁƒ!—Ë‘ššŠ¬¬,â‡~À´iÓÌ ¶mÛ???á®ÑhDqq1222°uëV?~Ü|áqÊ”)ˆÅ¤I“°nÝ:„……ÝtáqæÌ™ êËwmyxx ==¾¾¾HNN¾å+GT¹¹¹Ø¿?¦M›&:Š;vÄ¢E‹Ì?Oš4©Áç‚Í›7cܸqÈÈÈ@pp°èH%—Ëáìì •J¥R‰””ŠŽeqøé§Ÿ…ââbèõúù¸ ý tNž<‰7bâĉðõõE\\6mÚ„áÇ×z?þø#²³³1sæLhµZ,]ºJ¥AAAõ˜Üväææ"%%©©©xøá‡ñÝwßUâ»sçN´hÑ=ôÖ¬Yƒ©S§"))©Áݹ!ª€««+V¬XÒÒRÄÆÆb̘18uê4 zôèøøxóßÉñãÇ#%%®®®¢£“£GFll,´Z-ºu놶mÛŠŽd1K–,T*ŬY³\¿xÞ¦M¡™Èr"##‘••…·Þz íÚµkwMŸþy¬Y³EEE Ddd¤èHõjçÎØ¹s'Š‹‹ñæ›o¢W¯^èß¿?"##1kÖ,ØÙÙá…^“c.@ZZ"""ˆŽŽFllì]èiii4h”J%à™gžÁéÓ§Y ‘Mñòò¼yóDÇbþüù¢#X•†öt©TŠèèhÑ1„ Ào¼!:†ÅôíÛ}ûö½iy¿~ýЯ_?‰Èñ5kdffB©TbÅŠ˜1cÜÜÜpñâÅZ?Ÿ¬Óé–-[âµ×^ÃÊ•+¡T*‘‘‘QÏɉˆˆˆˆˆ¨¾ðº*• C† Á… \Ÿ½Q&“!??­[·¾ãö0 hÞ¼¹y{GGGäææÖ:ƒ³s(Ôj?¸»÷BII[¸»÷„N“©NN-þÖÖ M{H¥.pp¨@yy`µ¶òò@88!“ɡѴ®ÖVZêGÇG ‘4Ce¥'Üݯþ¥Í..Ãhô‡Á ƒ‹ PZzý¸ju[¸º>½¾L¦28:z¢¬, Ú¾µÚ H¥nËÕæLÅžpwï…ŠŠ@ØÛK •J¡ÑøUk+/€BQ‰¤1*+[TÛgYYœœ…Éô G¸ºêÿ–)C˜L89¹¡´Ô¿Ú¾++ƒ ‘x@¡¸fÎ{£M£i™ÌR©ËÛr¹R©+´Zï›29:>“Éz½ \]5P«ÿ׿..Ã`è£Ñç›þÛUVC"iGG%ÊÊüÿ{.~æãÊdŽpp¨¼ÍW=¤R'hµ­þößÕÿ¿ýäÎîîjs›Zí‡FGUÕõÑÙów¿kü]sï…òòVwù¯54Ó÷ÓżÿþûèÑ£GµIÝbbb°téÒZ½bF§Óaܸqøä“OЪÕõ/|¹¹¹ˆÇ|Pã¶jµÉÉÉxñÅ.ÈÊâóžDD–âç§ÆòåÉèÒ¥ Ÿ·'""¢[ât‚‚‚ÌwÏàêÕ«ðòòªõû_àçç•Je.Ðóòòîêùó+ÊÁW,YŽÉT£Qt """²f,Ð All,BCCѺuk¬\¹!!!7­WPP`žéØÅÅå¦}Üx¿xEE6nÜxW³>áäTußçBDDµSQaDf¦èDDDdÍX  Œ¡C‡">>ƒ¡¡¡·|ï«V«5?oþwC‡Eqq1æÌ™…Bpw""""""ÆgИϠ·k×NNN¢ã5ÈÌÌä3èDDDt[|Í‘à÷ÆøßŠ´Z­à$DD ËÏݪ*ÎÿADDD·Æ½Ñh4pWïL'"¢ºÃ ¤DDDt;|½Ñét(**‚B¡€è8DD †Ñh„F£§§'DÇ!"""+ĈˆˆˆˆˆÈ p’8"""""""+ÀˆˆˆˆˆˆÈ °@'""""""²,Љˆˆˆˆˆˆ¬ t"""""""+À÷ ? ®\¹‚Í›7#)) 111xì±Çªµ ÄÇÇãØ±cËå8p ¢¢¢ª­sðàAüôÓO(--Epp0bbbàèèhÉÓ°K–,1÷%„„„ॗ^2·×¦¿©f‰‰‰HLL„^¯Gxx8ÆŽËWÞ‡#FÀÃÃÃüó /¼€°°0À… °bÅ ÀÛÛ111hÕª•¨¨6áĉøå—_™™‰5kÖTk»Sò󈈈n`þ€Ú´i<==ѪU+H$’›ÚüñGdggcæÌ™ÐjµXºt)”J%‚‚‚øê«¯0vìXtéÒ«W¯Æ7ß|ƒI“&YúTl‚D"ÁóÏ?ÈÈÈ[¶ß©¿©f'OžÄÆ1qâDøúú"..›6mÂðáÃEG³iË–-»åò>ú=zôÀ[o½…={ö`þüùX¸p¡…ÓÙŽòòrüôÓOxä‘G™™ySûú“ŸDDDt‡¸? ¢££1lØ0(Š[¶§¥¥aРAP*•ð÷÷Ç3Ï<ƒÓ§O›ÛÓÓÓ€ž={ÂÅÅ/¼ð²²²,ß&™L¦Û¶Ý©¿©fiiiˆˆˆ@xx8<<<Íþ«'(--ÅèÑ£áää„¢Y³f(,,Íj9;;cΜ9 ½©­6ýÉÏ"""ºz¤Óé–-[âµ×^ÃÊ•+¡T*‘‘‘a^'##>>>ظq#¦L™­V ™L†Ë—/ Ln½d2ðÆo`Ë–-¨¨¨0·Õ¦¿©f™™™P*•X±bf̘777\¼xƒAt4›egg‡)S¦`þüùHII1/ÏÌÌD«V­púôiLœ8§OŸF«V­žž.0­íºSò󈈈þŠCÜm^¯ÇÔ©SoÙöüóÏ£[·n5n_PPƒÁ€æÍ›¸><ÛÑѹ¹¹æu.\¸€ÀÀ@”••™ï ;::âüùóhÚ´iÝœˆ¨MO˜0£FBUUV¯^uëÖaܸqj×ßT3•J…!C†àÂ… ®÷¡L&C~~>Z·n-8mZ¹r%är9rrr°`Á¸»»Ã××*•Êü»j2™ ‘Hàää„óçÏ Nl›.\¸Pcò󈈈þŠº ²··¿í³£µÑ²eKÈd2\½zŸ}ö 77>>>æuZ·nÂÂBŒ=Æ h4šjë4µéo;;;8;;žyæ¼ýöÛø×¿þ;;»Zõ7ÕÌÇÇ………ˆŽŽ6/Óëõðöö˜Ê¶999üüüðØcaÏž=ðõõEëÖ­qæÌtèÐ+V¬=z”Bî‘233oÛŸü| ""¢¿â÷ÈÁÁ~~~P©TæeyyyÕ&$jß¾½ùn%p½ÒëõhÖ¬™E³Ú¢ÊÊJ( ó ãµéoªYPPPµßÇ«W¯ÂËË 2¯1ÖN×ÿîçååUkÏËËCûöíED³ywêO~>Ñ_±@À™L¦[N^‚­[·"//gÏžÅÆÑ¡Cs{pp0Ξ=‹}ûö¡´´+W®„ŸŸŸ%£Û•J½^’’üüóÏèׯ_µö;õ7Õ,$$ÉÉÉHIIAQQâââ":–Í*//Ç¥K—çÎÃÿýßÿ¡OŸ>€-ZÀÕÕkÖ¬AEE¶nÝŠÂÂBólº;µéO~>Ñ SMSO“Íúàƒ››kžÜM&“áÍ7ßD`` €ÿ½w÷èÑ£P(0`ú÷ï_m‡† PZZŠ   ¼øâ‹|ú-FÌŸ?çÏŸGãÆÑ³gO<þøãppp0¯S›þ¦šmÛ¶ ¿ýö BCC1~üx¾ý¥§§cõêÕ¸víÚ·o~ýú¡]»væv¾ýîäååáÝwß…Ñh„V«…““š4i‚ùóç¨ý{Ðùù@DDD,Љˆˆˆˆˆˆ¬‡¸YèDDDDDDDV€:‘`NDDDDDDdX YèDDDDDDDV€:‘`NDDDDDDdX YèDDDDDDDV€:‘`NDDDDDDdX YèDDDDDDDV€:‘`NDDDDDDdX YèDDDDDDDV€:‘`NDDDDDDdX YèDDDDDDDV€:‘`NDDDDDDdX Y™èdY:EEEP(°³³‡ˆ¨Á¨ªª‚V«…§§'DÇ!"""+Ľ)**BzzºèDD VPP¼¼¼DÇ """+Ľqtt´iÓ …Bp"¢†C«Õ"77×ü9LDDDôw,Щôú´ …NNN‚Ó5<7>‡‰ˆˆˆþŽº ())Áúõë‘””„„„ó—»mÛ¶aÇŽJ¥ˆ‰‰A@@€à¤DDDDDDt¯xßäää 88æeÅÅÅØ»w/fÍš…—_~«W¯˜ˆˆˆˆˆˆî tйsgôèÑ£Ú²¬¬,„††ÂÕÕ­[·†L&CEE… „DDDDDDt¿8ÄÝFeeeÁÇÇ ,@Ó¦MáíísçΡS§N¢£Ñ=àt%‘H^^^hÞ¼yµeDDDDDDd{X Û(äççcĈèÓ§òóóáçç':–™J¥BïÞ½oZ¾jÕ*;vÌ"8€””‹«&%%%xï½÷ЪU+dffÞÕ¶ÖrDDDDDTÿX Û¨€€œ8qjµ*• z½Þ&^›6a„……YäXû÷ï·Šâ6-- þþþèСÃ]ok-ç@DDDDDõº عs'f̘ââb¼ùæ›Ø¶m\\\‰Y³faÑ¢E=z´è˜8sæ FQ£Fa÷îÝÕÚvïÞ¢]»vرcGµ¶k×®aܸqxê©§0`À$''›Û2220cÆ :C† AZZZ­¶ûâ‹/€eË–aàÀزe‹¹­¨¨|ðž~úi¼þúë¸|ù²¹M¥R¡W¯^øä“O0`ÀÄÄÄÔêx5éѣƌ{{ûZ­_›s¨)gM}¦Ñh‡¡C‡âÉ'ŸÄ²eËjÕ/DDDDDTÿ$&“É$:YŽZ­Frr2ÚµkWçwÜÿñ`„ èÕ«æÍ›‡½{÷b×®]ÕÖ™2e Œ¾}ûš—}òÉ'hÔ¨&Ož|Ó>KKK¡P(`oo„„¤¤¤àóÏ?¿ãv7Ú›4i‚ &T[þᇢS§Nxê©§˜˜ˆãÇãí·ßp½ðíÞ½;¾þúkDEEÝ´¿šŽw'O?ý4>ýôS´k×®ÖÛÜîjÊYSŸ}õÕWÈËËÃ;ï¼¹\^m»šú…ˆî_EE233Ñ¥K¸ººŠŽCDDDVˆ³¸SÐh48s挹X7nöîÝ{Ëuÿ~M¨gÏž˜>}: 0dÈ„‡‡›Û5j„¼¼<$''#''©©©µÚîvÇ€ß~û GŽA\\@&«þ× 00𦢷¶Ç«·»†v»œ5õÙºuë°fÍš›ŠsàÎýBDDDDDõ‹CÜ©NÈd2ØÙÙ™¾›Ø·oz÷î>øK—.5·­^½“&M‚T*EXXØÿ³wïqQ–éÿÀ?3 ¢¢ –ˆƒxJ1ñÀÚVû#ˤSK¿VjYš¥ë!W7×LEÍŽ¶ú;|uµ­Õ<­®©¥PZêâ)1œDEa€™†™ß0 à Ìð0ÎçýzùRžãõçzîû¹/“íZZϹ\Žõë×cß¾}Ø·oöìÙc2¿¡Ñð›º?Gi(NKç ªªªÌ®×Øy!"""""Çb‚Nváî  ¡Kûþýû­^W§ÓA&“aذa˜˜ “ݬZµ ›7oƘ1cPVVÖ` oÝéû÷ïÇ3Ï<ƒèèhÄÅÅaÁ‚¼7ß|~ø!ÆŒƒÎ;ãöíÛV­QQQ8vìF¥K— Ó_yåôêÕ Ï?ÿ<¢££ñÙgŸYŒÏÚý5dÏž=xòÉ'‘œœŒ©S§bþüùV­gé,ÅiéœMž<½{÷ÆÄ‰5kÖó;/DDDDDäX$ÎÅ8r8""j‰#""¢Æp(¢f9r¤ÙéíÛ·ÇŽ;Z8"""""rVLЉšé‡~;"""""º0Awr¹¹¹Ø¾};T*úöí‹ &ˆ5‰srÛ·oGTT–/_ŽÂÂBœ;wN숈ˆˆˆˆ¨ Ø‚îä$ är95ÅÆqöìY|ñÅ€˜˜èõz€¿¿?Þxã €V«Ell,rrr€Y³f ÿ¥¤¤`ãÆ€ÈÈHŒ1B„#!""rNLÐÜôéÓñá‡B­VãøÂÂÂĉˆˆœPVV*++M¦I$¬X±¢Þ²qqqèÙ³',X€Ý»w#>>£FlÙ²³gφ¯¯/>úè#<üðõžˆˆÈJìâîä¶nÝŠ!C†`Þ¼yÈÎÎÆùóçʼnˆˆœÐ¶mÛð /XµlFF""" ‘H´´4Õ¥äÜÝÝooo„……!==Ý‘aÝS˜ ;±òòr\¾|cÆŒB¡ÀèÑ£‘ vXDDädNœ8øúúšL÷ððÀÒ¥KñÕW_áúõëÂt¥R ©TŠ™3gB¥RA©T¨NÜ»u놸¸8,Y² …BHÞ‰ˆˆ¨qìâîÄär9Ú¶m ¥R …B³gÏ"$$Dì°ˆˆÈ‰TTT ..ï¼óN½y .„T*Ezz:6lØ€eË– óär9 Úµk'L“H$___ØCaa!<==!“Éšq4DDd‹ªª*hµZtêÔ b‡C`‚îô^yålÛ¶ ……… ADD„Ø!‘IIIAaa!Þ}÷]@qq1Ö¬YƒyóæA*­îh„ââbTTTÀÃÃÐh4X´h  P(½{÷ÆÞ½{ŽððpìÚµ AAAÆPXXˆK—.9î ‰ˆÈ¢¾}ûÂÏÏOì0LÐ^pp0.\(vDDä¤zè!ÄÆÆ ?Ϙ1óæÍPݲ"“É““???¡u%88GÅØ±c‘˜˜ˆàà`€——t:”J%:vìˆäädDFF6C›6mðôô´÷!6jüøñ¸yó&ºté‚]»vµøþ‰ˆÄ¢Õj‘••%ü&ñ1A'""¢zt:Þ{ï= øùùaòäɼáÇcýúõ˜7o æÌ™#Ì›8q"Ö­[½^ÈÈH«Fp7¶ÔŸ}ĉˆêJ˜ Ycذab‡à’ÆŽ ½^Ï2KDD­t'–””•J…÷ßb‡CD 06  H˜¬5Èššéd>>>b‡@DD5ø¨Ô‰?QQQLΉZ9c ºÞ r DDDDÔª1Awb©©©HHHÀÊ•+ñÝwß¡²²RìˆÈ c z¹N/n ÷½Á€‚Ò ±Ã '–››‹N:™wðàAüõ¯máˆLuêÔ ×¯_5K öîÝ‹ÇC† iÒ6 €“'OZµìÿüÏÿ %%¥IûILLlrŒDD-‰ º+//ÇàÁƒ±xñb”––"11QìˆÈ‚YߥŠÂ=åûË·0iûEÜÑðáä½âÔ©Sb‡ xæ™gðÉ'Ÿˆ¶ƒÁ`ò·#9r?üðŽ9bÓz—.]·ß~‹Q£F5yß¶¼ö³sçN<ðÀMÞ‘3`‚îÄ‚ƒƒÑ±cGH¥R :ÉÉÉb‡DDfôéT]6*§¸\äHî-— ÊêŠ*‘#!{ÑétݾÁ`ÀÎ;ñÇ?þ?þ8~üñÇzËüóŸÿDhh(z÷îçž{Îìv>ýôSDFF¢ÿþxôÑG‘šjúðm÷îݘ>}:ÂÃÃ…}ûö™Ì/))Á[o½…G}ýû÷Gtt´I"~àÀôïß0|øp„††â‹/¾0ÙFnn.Þ{ï=„‡‡ãoûrssëÅÙ©S';v QQQ Á‚ LæïÛ·ãÆÃ›o¾‰ùóçã矶pöêëׯvî܉¡C‡Ú´^]¹¹¹˜4iBCC1mÚ4ܹsÇdþСCŠûî»IIIõÖ¿xñ"^}õU <aaaX¼x±ÉüeË–áµ×^ƒR©Dhh(BCCqúôéfÅLDä($Ή…††bÿþýxõÕWqùòeôë×OìˆÈ Ž Gd?þñÝþ÷ß?þ6lÀƒ>ˆ… Ö[fÊ”)˜2e ¶mÛ†]»vÕ›øða¡$YçΡR©Ð®];“eºvíŠO>ù:tÀÎ;ñ·¿ý £FZ‹ÿþ÷¿C«Õâ§Ÿ~B›6mPTTdÒ’èèhtêÔ ‡†ŸŸ_½8^xá<÷Üs8zô(<ˆñãÇãøñãõ–ûøãñå—_¢{÷î())¦ß¼y ,ÀŽ;0pà@TTT8ü‰9ƒ_~ù%¾üòKÜwß}=z4âââð /Ë“ò°°0³-îóæÍà /¼€M›6A"‘@¥R™Ì_¾|9FŒ¹sç21'¢V-èN,""°hÑ"àÑG9""2‡ :‘uòKÊq­Hë°?{öÿ€gÆŒC—^}Q7üíok0–†º– ”––âØ±cP«Õðöö®WžìÑGE‡cÆŒV«Å… L–ÉÎÎFrr2ªªªÐ±cG›ÎSjj*T*Þzë-´iÓÏ=÷<==qåÊ•zË~ðÁP(H$õFɯ¬¬Äÿû_ܼyðòò²){H$X¹r%zö쉶mÛâ±ÇkÒ«çÎÕ+W ‘H„s_[K¼*@DdlAwbR©¯¿þºØaQ#˜Ÿ;¿oÛ߯qöìY¡;õ¡C‡©TŠéÓ§#88 Õj‹œœ`Ö¬YË倔”lܸ‰#FX½ÿ?]EžÆqŸ˜K'΢[û‡ôïËØ4îAH›p >±±±Ø¶m.\ˆˆˆ|ðÁðõõ–9qâbccqëÖ-xxx ¢¢F˜ÿî»ïâÛo¿Å§Ÿ~Š‹/bòäÉX¸p¡ÕuÈ;†;wî`àÀ´òòrüúë¯èÝ»·É² •PëÒ¥ âââ°yóf<õÔSÀÊ•+1`À[N‡ÝµiÓ¦^÷Æìر›6mÂo¼µZ·ß~»Á׈ˆZ;¶ 9kŸ;ϯ=dee™T)**BBBbbb0{öllÙ²E˜‡ž={bíÚµèÑ£âãã…y[¶lÁìÙ³±lÙ2$$$Ôënl‰‡Á±þµ xêÜtág½¾i•† † 6àôéÓ¨ªªÂÒ¥K…yùùù7nþüç?#>>¨7R¼L&ÃäÉ“±k×.üøãØ·ovìØav_æZ~Ÿzê)tëÖ çÎþ\¾|S¦L±é8‚ƒƒñá‡"11Æ ÃË/¿lÓú­…,X€#GŽ`ݺuøóŸÿŒk×®Õ[Ž­èDä ˜ 9ÓGrÛ¶m3yï7##ƒ ‚··7zôè777¡8##H$ˆˆˆ@ZZ@­VÃÝÝðööFXXÒÓÓÍîÏœ° ÇV:ðŒÛg*Lw– IDAT‚:ï JKJðÎ;ïØ¼ •J…¬¬,@UUÊÊÊðÐC ó ÜÜ܈²²2,_¾7nÜ0y¿;77·nÝP=0žZ­…«­wïÞHHH€N§3)/¦P(àçç‡÷߀ÂÂB›8\¼x:ß~û-mîjßZ¤§§£¬¬ z½¥¥¥¸ÿþûѹsg“ezö쉜œdee¡´´W¯^)Z""˘ Ó=¥ ´v¨5­©¬Ba™å–œr7ËWƒ¹X«ƒJÛ´{r‹Ë¡­´mdëü’rèôl]°‡´›j“Ò_öh@/ÒTâF‰}î·ržõÃÉĉ'bÒM;##þþþX»v-¶nÝ !W*•J¥˜9s&T*”J¥°N·n݇%K–@¡PëX#Õ½‡}¬ŽŽþÞÁC¶ñmÌ|u"FÝ`‰Dbv^jj*Þxã ôïßcÇŽEHH¦M›&Ì÷óóÃÂ… …‘#G"((<òòóó…e~úé'Œ;ýû÷Çܹs±`Á„††ÖÛ×Ûo¿¿ÿýïøÓŸþ„ØØX“àM›6¡sçΘ8q"Œ7ÞxCHÖkCCT*–.]Š!C†àË/¿D‡ðé§Ÿ6|òÌ8|ø0zö쉗^z J¥RøwsÙÚëèË/¿Äã?ŽAƒá›o¾ÁgŸ}†6mÚ˜,ãïï3f ::Ï>û,¾ÿþûfÇIDä|î)“¶_Äc°tx¯fmgþtdj?m`ƒËÄü˜‰3¹%—iŽñ[~€&mÿÕ]—ðd,|<Ðêu^Þq £ìŒÙ*lÞ™2Ö;7^;‰Úк‚ëªrì}¥ù<|'¯©vï’s©¨¨@\\\½Ödc’äçç‡N:!;;Û$q’ËåP(&#˜çûúú" ÀæXŠ¥í›rV“H¥= £gaÓ¸¡èè‰qãÆ™MŽ_|ñE¼øâ‹õ¦‡‡‡#..Îâ~fΜ‰™3g ?×MZ_yå¼òÊ+Æ;nÜ8Œ7Îì<___LŸ>Ó§Oop}c+½9ÞÞÞØ½{w£1Xòä“O6»%úܹs&?›Y¿¡e¬}°ƒ˜˜«c#"[Ðéžó{~Y³·‘Q¨it™sy%.#¦Ÿ¯Ø6È\.hþ¹£úìÑ‚~¥Pueó{‡­ÿÞµ{~4GJJ ñî»ïâí·ßFqq1Ö¬Yƒ   äææb„ >|8rssѧO@`` 4 -Z‰D…¢úÁ^ïÞ½‘ŸŸððp¼þúë¸ví‚‚‚Ä<<"""§Ât¢&’J$¨ºGœáÀ9ŽÅwЩ5{衇+ü;ÏßÀ¬½©6%|–ÐóKÊ1ko*þ}¾Àêíµ¤ãÙŘý]šPnKlËN9Ĥí1aë›Ö™ý]^ÝuÉêåßÚŸ†eñ™¶†Ö —oaÖw©&‰•-Þ?’…yûÓÍ&böÌÍfü'•U¦å֌׳vrlo“w˜¿¦oîIÁG¿dþyú:Ì@Aiõçhî¾4¼µ/­ÑmëôÌ;Žå?6\O¹¢J¿HLJ5ûª­±Ó;iûE¼ð­u÷ãô=—1e§åû0.­ý>™·Íß+s÷¥áÍÿ¤Î_/ÁìïÒp,«Øªý‘kã;èN¬víZBíÚy󿉙ãË.2ù¹HSÝrgLj»ÚÀ—gsrjZnµ:ëëL[jA7Ö«¶¶õ°¥Ý,«nM4¶*¶†Ö½¦œ«t+êÕÛºÿ’ ]“Öÿ=¿ºõÜ\Ïã¤'ûø4iÛu¯OÝ}×ÓÚ^  ìÙ/ütNõƒœâêÏœñB‘Öºs©¯9 K½XªŒË˜ëå`ÇÛ÷¶ºñ˜óKªß”6p¯Ô>nãön©+x4?À{ÜÊ/`/ú‹†ËÙ¼y3JKKÑ®];¼öÚkb‡CDäÒ˜ ;±†j׺ã÷rs­Ù­áqñÓ^óŒ§ÆŸ1ák­ñÖåˆ ÆMJ𸆶q}s¯5ãmjØuW3³›¶ç¨†¡‰÷‘5¯‚˜}ð!Ò}+«9z+žç5ÖýžL]uóì÷æ YéÑG…N§ƒ›¿‰¿‰éžcéÝë†([‰…'b>hJò*$öÆA§¥‡=6mÇB ºÝ¶ÙÌŽzxÕÔW%¬ùÌZº¯[ú¾5~ömc¢<1t7eMëeBÍ"vDDTƒï ßC\¡zýïÃöþjný—hk–#áµfŸu4gIÌÑ#ÿn zÓÏ©¹FÕæÆÛx ºmQ;*UÔ7±§€5‹[ôжý5—qT~ë,86"""º·0A'§ÒÐw]s ‡-IHS¾C[j…·½eÖ“cµÏVÍ×Ì=4özkq÷8m К–hËK´ì ‘6¡íçDDDd vq'§f¯îÄBëioÑzƒAø2Þb ¾fKÒPï½éVšøÕåˆòuÆ-6çzæ“çæÆ[¿‡{ó¶gþu6?m ÅýþíàxºI¡Õé1¬·~¾rÇd~d°/æÿ¿õÖ›¹7÷·»[¢èo¯ ¤‹RÍ”\*®IÌ¥Œ¦ï¾ŒO~@uífO·»Ï§ Lo0@ þuö:ö\¸‰/Ɔ æÇ«èäå.,SZQ…öò»¥É;ê×\O+Äúã9ø4:ý»¶Ãñìb,ÿé*bžê‰Gzt¬·|mÿU  º¤Ø’'{âÇôÛX}T‰O¢ú  £'Þþ!Ãdù}Sÿž³/ ù%ˆŸ61?eâJ²dÆ–]cÂÞÖCf1–ºÞþ!™·µ&×}÷ïw¿`ÇÏA‘¦¿ç—™,“_R.ÄýX`$Öª½ü§«ïÞ«žîc²ÜÂÇ{àÉ>¾ª¯ŸÑâ¸+øfB¿ê}_(À?NæaÃó Ч٘'m¯¾>ñÓâ§šsYÛê£JŒî˜·?]˜þí‹ýй­fü§ú3‘S¬Å·çnڸ߽—º"ü{Ï…l<™‡€Žžª»~WV鱤¦~{{¹ »kîÉÚ²îh±âpuMðÈ`_hê$èÆûµ´\'|à³9¿ûwm‹¨:ãÃ_²ñá3½1Èß„}À«».WŸ“]±å·||ùß\3g Øù–ðïœÌ«Þטá÷¼ww»˜>¨ù¯R…e?VÏ7ÞSÿ}%åUìß¡]Û ëÕ>tñºÑÕƒWÕ~ðTVQ…uµŽûÿ’rñDø´¹û¹4úö\¾ðïë\o™88u Ž^-ª#YXÙ[˜·êH–ðïCSðèàwöBÚ-µp=L¿‘tB¿ûÛá•—P©74ø;ðÈ•;*aùãîòNËûö«žHVš«¬èçj¬×^^³OUÍù4N·†±uîvÍ:eU¨¬j¸¤`ú¢nrnNŸN^VÇT'’uݪunÒnªë]7ÀôÜgÕ߯•šc­½\Cçªö1{I¨+¬«gomn¨¨s®k—¦R/t{®ÍxŸÔnÅ­½™’ró-ªåµŽ;õ¦îu6n¼Æ: ÷Þµ¢rÜј~nÒX zsóÕZƒ 0mD/6sž1iu vQO©õN_k‹æ>s:ó©}Ü©s¯ÅÝódþ~0Ægì-RûxJkŽ£²kQûØ J+V˜ ÿý÷8yò$ÜÝÝñÄOà‘GÄÄÄ@_SKÎßßo¼ñ@«Õ"66999À¬Y³ —Ë)))ظq# 22#FŒለˆˆœt²©æ’ÐÒl‡ÝZªk,–º»7¶0ë…®é¯cŽñ×—JƒLY›pÎ…’pæ¯BSÞ¶ñÂ6õ>ÖZÓR-éÚÛ·fà1ã9±ömkÞynhY[îU!vƒu+Ö¾†3;·ö ÷u‹ÛÄò¹³þ @•5ƒÄÕzOÝÜ}ÚÐýaÝ=j|¿Ýüܺñ™Þ—6h¥#Å9QQQÐétX¸p!† H$¬X±¢ÞòqqqèÙ³',X€Ý»w#>>£FlÙ²³gφ¯¯/>úè#<üðÃðöönéC"""rZ|šôÑK™oy¶a€³Úñ43ã—û†FËÖL—3·ŒÙíÖm‘¯ù»)£@£N²%‘4¨Ø2H\ÍßMÜÜ}P{JCÇW{5Kç ¡‡ ÇS³M+—·4 \ݨšsË׃ÏÖšß–Ekl@»»uß§í,¦è¶=À°bÙÚ÷I>6VíßÚ‡^ÒÚÿs6‹=O9ŠñËÈÈ€L&ƒ‡‡‡Åå322‰D‚ˆˆ¤¥¥Ôj5ÜÝÝooo„……!==ÝⶈˆˆÈ[ÐܶmÛ’’777<ûì³0`@ã+5Àº/½Mÿ¦_7q4ÛÝäD±iëÝݱÉ_u' -hfã³” ×ü-©3åî(ÐÖ°1yÐ É™ù/ü¶$Ûw»ö[nAl8&3Ӭ؆Ô$A·mŸ–Ôí©`íòæ4¶ kZ}ën«n×}÷ßIýÄQoåçÐŽ´Û´mƒÁú‡$ÕçĆôöÛàå°â«6°¬¾ÎMjÒ¤±pµ¶4Šhbcc‘””„•+W Ó<<<°téRôìÙO?ý4üüüJ¥R©3gÎÄüùó¡TV¿×Ÿ‘‘nݺ!..‰‰‰ˆŠŠBZZlua©ÈÃö=¸Ô~UÉøºˆNo0xÒžÚËeèhfœ„Ö`ûöíP«Õðòò /¼ v8DD. º“?~<ÜÜÜ R©°råÊ&%è-õ¥±n"ÖìÒSvìßPK²ÐÅÝB‚nm²T›¬&˨²6‹©EH¦!1ߺjû&­*seV#+4œ|×Jplè mm8ÖÖá6÷Þ¸Qc ¸m]Ük¯gE2Zk )ê'¥õÊãÙ°½Æâ³–åösÛ>ŸÖ<¤©½Œ¹ãnÎoC#÷ÝýÕ¾õÇ­pHw‡›={6¢¢¢ðñÇãÓO?…——.\©TŠôôtlذË–-–—ËåP(h×îîÀ¢ÆßG¾¾¾hR7¥>@ v_{€Mc•Œ;šJLý÷e‡ìoÓ¸[m‚‚ŠŠŠF{O‘㱋»“ss«~Æâíí ƒÁµºþ¨æÖ²ækes¾{ÖMxÌŒofÓ—lûvq7@Ý.îæ’q«G¡îtõÏMkA7 ±¡t›º¸×ya«Æ~4”J-$8&j/gElÑX zí}6vOZs.kßKf;²4° [^“hè˜lyÅâÆÖÜ„ W¯^èß¿?®\©I_ZÓ—?((ÅÅŨ¨¨p/00‹-‚D"B¡ôîÝùùùÇ믿Žk×®!((ȦrÝî³ã‘µˆ¡C‡bà@Ë•XˆˆÈñØ‚~P©TÉdðò²mn8ž]]âjïÅ›¸V¤Å@ÿöÈ,Ô@V§yñ\^‰P*içùf·e0§*G~IN^«®U>6´ ¶ü–_¯|𹑡3okðcúmœº¦‚º² üÚ¡»ùÒ_µ¿ç50ú{©™Q™Íu_üõju=ã¬;dÖªe?a¾~üCý…亵1`΃@xxx«Ùü‹/¾@^^|}}1räH„„„@§Óá½÷ÞƒÁ`€ŸŸÆŒƒ®]»ÊË˱~ýz(•J( Ì™3GHÞÓÒÒ°aÃèõzDFFZ ;úÿ¦Æ$¯š€Êâ[pïÐïpÈ>6{ŠZ®ˆˆZµZ”””V÷“+c ú=àÔ©SËåÍ Î^úÒ Ü­!.&KñQãêÖïÑÑ…èô¡¶{CLjGÛ˜œÖu —»YÿÖN¡ºÒ¦jÍ3ìÇÒçXcá÷Œ¹«]ÔÈ}ÛKµè‹4õ{‡´F3f̨7ÍÍÍ 111f——Ëå˜?¾ÙyÁÁÁX½zu“cñÕ#¯5‹¿Ç]½z:nnnèÙ³§Øá¹4&èN.++ ‰‰‰˜;w®Ø¡hì½T&8ÎÌÜõ«=([c—ב#ŠÕm»1-SkàJ=kÇ40²õž©¿¾…yÍÚ²kêSy ˜ ·¸Ÿþ¥¥¥h×®t""‘1AwrŸ}ö¤R©ÐÒñÚk¯!00PÔ˜bÏrZMÕ BpZæÎ¤Öhôµ077¶¦Û–Òg€m£d¶†û·©œ8t›YºOÌ݃ÍíTcéž³”¼“y§=SåŒ,˜4i ƒM½ŠˆˆÈ1˜ ;¹O>ùDì¬ÖWjI´7ƒ¡~‹³ñg½Á`ÅõmÞ¿*+n k–1ª>ëcâ½ã,Ýæ.·­uê­oa‡Ö–û£»ô󃂒c±¼QëÁ2kdW–ò¾Ãëüê^ÞÚõ¸»º–jŽ[ÃÒ»¾FæJ÷5DÛº¸;s²åJ¯—XºNæJ®Ys_Ybéžk %‰ˆˆÈ¹0A§ÓÜw=í£5ÄàœÌמ6ÖQ·¢‹{3t‡´ Û°ÊqZ•…nåf[Л› [jAçMCDDD6b™5ãèR6þÞräš©oN÷¶>žÈ¾ã|/Ž6¥ÜQSµÖ2k­ñÿ¦ŸÎgâ']ïß¿«—YÛ¿?4 Ú´iƒQ£F‰µ –Yk}ø:Ù“s×äŒÉ9дroDä8ÈÅÁ%ùøø M›6ðôlˆˆ\ t"rZ¾mÜp[Ó¼:ÖD–ôòmƒÌÛ±ÃpWÝý~¤[Üc=&vDDTƒï ‘Ó’²$9o1"""jILЉÈiÉš;4}:‚ƒƒZ­±±±ÈÉÉA@@fÍš¹¼º>£FlÙ²³gφ¯¯/>úè#<üðÃðööóðˆˆˆœ t'ÖµkW””” 88óçÏÇ/¿ü"´p4¤S§NèÛ·/<==!“ÉZ(R""ÒëõÐh4èÔ©“Ø¡˜0>ìÍÈÈ€L&ƒ‡‡Ο?AƒÁÛÛÞÞÞpssƒF£A›6m‘‘—_~‰øæ›ojµîîî „……!==ƒëЈˆˆœt'çëë‹K—.¡W¯^8uêž{î9‹Ë{xxÀÏϯ…¢#"¢Ú:vì(vfÅÆÆ")) ï½÷€êP‡íç IDATd= k×®E—.]àïï´´4 0J¥R©3gÎÄüùó¡T*…uºu놸¸8$&&"** iii6%è}*¯!9FjØ‘#G Õjáéé‰'žxBìpˆˆ\Gqr“&M¿þõ/,Z´èÝ»·Ø!‘“™={6V¬X>újµZhU÷óóÃý÷ßànK;Èår( ´k×N˜fœïëë‹€€¦%Ù2´®÷ó]Eee%***PYY)v(DD.-èNÎÏÏ|ðØa‘“ëÕ«ú÷ áÊ•+˜0a`ÅŠxñÅÐh4X´h  P(½{÷ÆÞ½{ŽððpìÚµ AAA6ÅêèìzXd…ÈÈH±C "¢lA'""raÆAëJJJ››‹ÐÐPáܹsP©TP*•¨¬¬„—— 88G…^¯Gbb¢0ö‰——t:”J%T*’““…ˆˆˆL±ˆˆÈ…}õÕWÈË˃¯¯/^~ùeH¥R´o߈‰‰L&ôiӄ凎õë×cÞ¼yP(˜3gŽ0oâĉX·nôz="##9‚;‘˜ ¹°3f˜>bijuÌår9æÏŸovàà`¬^½ºÉ±x*x4y}jš²²2èõzH¥R´mÛVìpˆˆ\t’——‡uëÖ¡¼¼?ü°ðná½jÛ¶mHII››ž}öY 0pèÐ!ÄÇÇC*•búôéBL­V‹ØØXäää ³fÍ‚\.¤¤¤`ãÆªßÕ3÷¥ÕmܸgÏžÅ_|€ç¨¾oΜ9OOOL™2}úôÀs“››‹íÛ·C¥R¡oß¾ÂïW;/ÅÅÅØ¹s'Ž9‚­[·B*­~SÌÞçaûöíHJJ‚§§'æÌ™ã2Õ7Â*R‘…þb‡árvìØÒÒR´kׯ½öšØá¹4¾ƒîB¾þúkLš4 |ð²²²™™)vH5~üx,_¾sçÎÅ–-[EEEHHH@LL fÏž-L€¸¸8ôìÙk×®E=/ÌÛ²e fÏžeË–!!!*•ªÅÇÞ²²²LFìå¹’’’ R©ðþûïã½÷Þ’sž›ê„1** Ë—/Gaa!Î;ç’çåêÕ«èׯ|}}…iö>ÈÊʇ~(Têp©î=ÄÁ%1£Gvª‡eDD÷*&è.¤¨¨¡¡¡ðôôÄСC‘––&vHåæVÝAÄÛÛƒjµ4h¼½½Ñ£G¸¹¹A£Ñ¨þR‰D‚ˆˆáü¨Õj¸»»#00ÞÞÞ CzzºhÇe/Û¶mà /¼ üÌsœ?QQQðð0íbËsS]BËØòküÛÏKXXyä“iö>iiixøá‡!—Ëѯ_?ܹs§eRDÅÒöb‡à’ºwïŽ=z {÷îb‡BDäò˜ »ˆëׯ£C‡8}ú4æÎ‹®]»"55Uì°Z„J¥‚L&ƒ——222àïïµk×bëÖ­ð÷÷¾0+•JH¥RÌœ9S¹¨þ‚Ý­[7ÄÅÅaÉ’%P(Nÿpãĉ 1iä¹RSS‘€•+Wâ»ï¾zðÜÓ§OǦM›ð—¿ümÛ¶EXXÏK {Ÿ‡+W®Àßß‹/F||<:t耼¼<‹1,[¶ û÷ïGQQ‘c–ˆˆˆŠ º‹H$ª[“„ÖeW°sçN¼ôÒKîž???Üÿý&Ó€ê–A…BvíÚ ÓŒó}}}ÐRa;LEEâââm2ç(//ÇàÁƒ±xñb”––"11Ï lݺC† Á¼yóóçÏó¼ÔpÔy@§NêmÏœ%K–ÀÏÏ[·nÅš5kpüøqTUU5ý ˆˆˆHLÐ]D×®]QRR‚àà`ÌŸ?999.QŸöÔ©SËåÂqAAAÈÍÍÅ„ 0|øpäææ ïB£Ñ`Ñ¢EH$P(€Þ½{#??áááxýõ×qíÚ5‰vLÍ•’’‚ÂÂB¼ûî»xûí·Q\\Œ5kÖðÜ zêŽ;B*•bèСHNNÀû¦¼¼—/_Ƙ1c P(0zôh$$$¸üy1²÷yFnn.Þxã <EEEçææ†°°0 :z½¿üò >ÿüsœ={Ö±ogºëb‡à’’’’pôèQ$%%‰ ‘Ëc‚îB|}}qéÒ%hµZœ:uêžOг²²˜˜ˆ‰' Ó‚ƒƒqîÜ9¡«iee%¼¼¼„yG…^¯Gbb¢p~¼¼¼ Óé T*¡R©œœìÔçBll,>þøc|üñÇèСæÍ›‡   —?7¡¡¡Ø¿?t:._¾Œ~ýú€ËŸ¹\޶mÛB©TÂ`0àìÙ³ á穆½ÏCHH’’’P^^ŽK—.ÁÇǧÑþïÿþï¿ÿ>òóó1uêT¼óÎ;˜={6wàÐA_*v.)77J¥¹¹¹b‡BDäò$ƒÁ vÔ2®_¿ŽuëÖA«ÕºD™µ¿þõ¯J¥Â€V¯½öC‡A&“aÚ´i PÝJ¸~ýz(•J( Ì™3G,,-- 6l€^¯Gdd$"##E;.{›1c†PfÍÕÏ^¯Ç¦M›––†x/¾ø¢h¹ú¹IKKÃþó"$$“&M‚\.w¹óòã?âÇDnn.üýýñÄOàé§Ÿ¶ûyعs'Nœ8au™5¥Ri¶«|JJ xà;žÇP©T8uêÖ]ò4–»ó;Bòª ¨,¾÷1`ñ‡ìcÓ¸¡èèém5•Z­FJJ ÂÃÃáíí-v8&èDDD÷ƒÁÐè{ë­ t""q0Ao}ØÅˆˆÈÉ­]»Öäç5kÖˆ 5t"""'W\\lòsII‰H‘Qs0A'""rr8yò$ôz=Ž?î´%ìþP~Aì\ÒæÍ›±nÝ:lÞ¼YìPˆˆ\žëÃ&""ºG=ÿü󈋋ÃÁƒѯ_?<ÿüóV¯»mÛ6¤¤¤ÀÍÍ Ï>û¬P–2&&z½àïï7Þx Õj‹œœ`Ö¬YÂ`œ)))ظq# 22#FŒ°é8®ºù6­Bvðè£B§ÓÁÍ_ ‰ˆÄÆßÄDDDNÎÛÛãÇoÒºãLJ››T*V®\)$è‰+V¬¨·|\\zöì‰ `÷î݈ǨQ£[¶lÁìÙ³áëë‹>ú?ü°MƒÝ”5^RŽìÏXu€ˆˆÄÇ.îDDDNN¯×#33.\Àï¿ÿŽ ¬ï*nl5õöö†Á`€Z­¶¸|FF""" ‘H´´4Õ#»»»#00ÞÞÞ CzzzÓŠˆˆÈ1A'""rr«V­ÂO?ý„Ë—/#%%—/_¶y*• 2™ ^^^,]º_}õ®_¿.,§T*!•J1sæL¨T*(•JÕ‰{·n݇%K–@¡PÉ;Y‡]܉ˆˆœ\‡0mÚ4H¥Mî¾sçN¼ôÒKÂÏ .„T*Ezz:6lØ€eË– óär9 Úµk'L3Ö]÷õõmò u]«n!]šxÔT.\@ee%ÜÝÝ*v8DD.-èDDDN®gϞعsg“º¸À©S§ —Ë…÷ÏÉ~PPŠ‹‹QQQ=z[`` 4 -Z‰D…BèÝ»7òóóŽ×_×®]CPPMqtר´<ÙÇo¿ý†¤¤$üöÛob‡BDäòØ‚NDDää´Z-d2™I×vk[B³²²˜˜ˆ¹sçšL¯ªª‚L&CNNüüüàááÆÑ£G1vìX$&&"88àååN¥R‰Ž;"99‘‘‘6Çiy_@cÓ*d“'O;""ªÁˆˆÈÉ5uwøì³Ï •Jxíµ×н{w¼÷Þ{0 ðóó3Ià†Žõë×cÞ¼yP(˜3gŽ0oâĉX·nôz="##mÁˆˆˆ˜ 9=N‡ . 33Ï=÷RSS­.õÉ'Ÿ˜nLØë’Ëå˜?¾ÙyÁÁÁX½zµUû%""¢úø:‘“Û¶mòóó…wˆ÷íÛ'rDDDDÔLЉˆˆœ\ff&ž~úi¡¦¹q@7gV‘*v.iûöíØ¼y3¶oß.v(DD.]܉ˆˆœ\¿~ý°qãF¨T*lÚ´ ƒ ;¤&¹)õªÄŽÂõ„„„ ¢¢BˆˆÄȈÈÉ7ÙÙÙÀ€еkW±Cj’\·û€J±£p=;""ªÁˆˆèУGôèÑCì0ˆˆˆ¨˜ 9¹¥K—šü,‘H°|ùr‘¢!""¢¦b‚NDDääV¬X!üûÖ­[8q℈Ñ4¯¾yè(v.çêÕ«ÐétpssCÏž=ŇˆÈ¥1A'""º‡tîÜ*•Jì0š¤Oå5\`‚Þâ~þùg”––¢]»vLЉˆDƈˆÈÉÕíâ*R$ÍsÚãA@+v®gÒ¤I0 H$b‡BDäò˜ 9¹Ú]Ü™^";—ÄòjDD­‡T숈ˆˆˆˆˆˆ-èDDDNïí·ß†F£ Ѷm[xzzr4w"""'ȈÈÉ 4ÇGçΡV«ñõ×_cÆŒV­»mÛ6¤¤¤ÀÍÍ Ï>û, 8tèâãã!•J1}út´Z-bcc‘““ƒ€€Ìš5 r¹’’‚7"##1běޣoe&òÐÛ¦u¨ùöïßFƒ6mÚ`Ô¨Qb‡CDäÒØÅˆˆÈÉ]ºt mÛ¶Èd2äååY½îøñã±|ùrÌ;[¶l!!!111˜={¶0âââгgO¬]»=zô@||¼0oË–-˜={6–-[†„„›G“×@nÓòd>>>ðõõ…Ø¡¹<¶ »˜ŠŠ ÂÓÓ2ã!"j)UUUÐjµèÔ©“Ýå=z4Þÿ}´mÛååå3fŒÕ뺹Uðöö†Á`€Z­FFF ooox{{ÃÍÍMhaÍÈÈÀË/¿ ‰D‚ˆˆ|óÍ7µZ wwwžžŽÁƒ[ËUw@gýq“}<öØcb‡@DD5˜ »˜ÂÂB\ºtIì0ˆˆ\Vß¾}áççg×m<ƒ’è¦P©TÉdðòòBFF°víZtéÒþþþHKKÀ T*!•J1sæLÌŸ?J¥‘‘nݺ!..‰‰‰ˆŠŠBZZšM :‘«c‚îbŒ_Üáéé)r4DD®C«Õ"++«É tc4 222п”––¢]»v6­¿sçN¼ôÒK ÔÃöóóC§NmR#[.—C¡P˜ìÃ8ß××Í="""—Ä]DçÎÃwß}‡””l۶ͦuu:¾úê+œ9sr¹#GŽDddd£ëI¥ÕÃxzzÂËË«IqQÓÛÓáÇqñâEäååáÃ?ÄÆ1oÞ<«×?uêär¹0@\PP®\¹‚ &¨®³þâ‹/¨~À«Ñh°hÑ"@¡Pz÷î½{÷"<<áááØµk‚‚‚l:Žv5€¶6­CÍWPP€ªª*Èd2Üwß}b‡CDäÒ8HœHÊÊʰ{÷n :´IëÿûßÿFff&/^ŒY³fáСCìºND䢎?Ž9sæ­ó¥¥¥V¯›••…ÄÄDLœ8Q˜ŒsçÎA¥RA©T¢²²Rx¨Œ£GB¯×#11QÝÝËË :J¥*• ÉÉÉÂùÄìô#F˜­c.—Ë1þ|³ëcõêÕVï».„c£ˆåÕˆˆZ&èN(//:÷ß?€êyÚ´iƒ¬¬,q#""Q´oß#GŽÄÈ‘#Å…ˆˆˆš}™œP·nÝàææ†Û·ocõêÕ˜:u*Ôj5GÍ¥{ÞâÅ‹ñÇ?þQì0ˆZ#GŽˆÙt'äáá>}úµg ''§U½®T*ñä“OÖ›¾iÓ&œ9s¦Eb8vìΞ=Û"û²¤¸¸K—.E÷îÝ‘’’"v8Dtúõ×_ÅÁ.úT^;—täÈüðÃ|ÐCDÔ 0AoÅòòò°jÕ*³£ñ†††â‡~@NNÒÒÒ°gÏôïß_„(m3uêT <¸Eö•˜˜Ø*ô‹/"((È)®9§ÁƒãìÙ³ÐëõÂg$C•Ø!¸¤ÊÊJTTT ²²RìPˆˆ\ßAINN–,Y"|‘zõÕWѹsg“Áz´Z­ð¾y]cÇŽEQQV®\ OOO<óÌ3¢· §¦¦båÊ•0 õúùçŸñÉ'Ÿ 33ëÖ­3™çÎüå/Á­[· Óé°bÅ „‡‡._¾Œ¯¾ú ééé0 Xµjúõë×èzÿûß±uëV¸»»cÏž=˜9s&¢££………X¿~=Μ9ƒ¼ýöÛèÒ¥ €ê–ÿ)S¦ 22¿üò  6lØÐèþ,yä‘GðÈ#`×®]6OKÇ®Ñh°eËüð訨@tt4f̘ÈÍÍÅ矎ӧO#,, ³fÍFû·t|–æQëvúôiH$ìß¿_˜¶lÙ2#jšT÷@ þyä`‘‘‘b‡@DD5˜ ‹¤{÷îøê«¯,.Ó«W/|öÙgfç¹¹¹áõ×_Ç믿îˆðšdÉ’%˜:u*žxâ |ðÁ&ó† †aÆaÖ¬YH$&ó6lØ€ððpÌœ9³Þ6»wïŽU«VÁÝÝ[·nÅæÍ›ñé§Ÿ6ºÞ_þòTVV¢sçΘ:uªÉ¼/¾øƒ ²eËpðàAlܸï¼óŽ0?55 .ÄÂ… ­ŽÓ,û7ß|ƒœœlß¾r¹Üd½U«Vá©§žÂªU«pàÀ,Y²ÿüç?…ù _cóˆ¨õ2–H#"""çÆ.îd©©©ˆŒŒ„»»;^}õÕ—5 &?6 [·nŻヒӧO›Ìkß¾=nܸÿüç?¸zõ*’““­Z¯¡}À÷ß7âÙgŸÅ_|Qoݳ­ ÖìÏž,ûŽ;0kÖ¬zÉyEE’’’0vìX@tt4.^¼µZ-,ÓÐñ56ˆZŸÚzþùg#!"""{`‚Nváææ™L&ül.1nÈþð=zO>ù$–/_ŽÏ?ÿ\˜·eË̘1R©ƒ6Ù®¥õ,‘ËåX¿~=öíÛ‡}ûöaÏž=&óë¶ð7wMe騠ªªþ»šÆØk/+‘H •Jë-cŽ¥yDÔúÔ,ôèÑ£"Fb¾-†²²2””” ¬¬LìPˆˆ\t² wwwáðáÃ`òdct:d2† †É“'#;;[˜—€·Þz £GÞŶf=ðññAnn.ÓdvüøñX³f 4 ë&4¶?{³tì&LÀÚµkMZÆêë0dÈüûßÿ|÷Ýwèׯ<==+‰Ã`0c™Ôþ·³V‘*v.iÇŽøê«¯°cDZC!"ryLÐÉnV­Z…Í›7c̘1(++k°5¶îôýû÷ã™gžAtt4âââ°`ÁaÞ›o¾‰?ücÆŒAçÎqûöm«Ö€¨¨(;v £GÆÒ¥K…鯼ò zõê…çŸÑÑÑõÞóo(îÆö×={öàÉ'ŸDrr2¦NŠùóç[µž¥cŸL…Yƒó~=OOÌú®Ë{-‡5|f­õýÙºŠŠŠpàÀ¤§§C©T";;¹¹¹˜;w®ÝëøÇ?þµZ5kÖ ££k×®ÅðáÃ1nܸ~LN×sðàA¡#Ñ€ºJJJ0qâD¨T*@jj*233{U WWWcüøñðôô„§§'bbbPQQÁˆˆz­µµûöíñcǰ{÷nÛȶ炃ƒ‘žž0 ؼy3jkk¡P(º û¨V«‘ HNNîÕsÍ s=´Þ—»Fvøî»ïÐÑѹ\ŽI“& ‡ˆÈ¥±@€Z­Æ”)S••…òòr¬_¿õõõ0›ÍJíû'yôÑG‘““³ÙŒööv455á_ÿõ_û99‘0Ôj5>ùä˜L]C0ýíoðaÃøXQ©¬¬Dtt4 »M‰DX³fMù>Œ‘#GâÅ_ÄþýûqäÈ<üðú†ˆ|á…€¿þõ¯˜ú:Z­‡Â<à¨] ""p­³¸ˆˆ´¶¶Âh4 ×ë±zõjˆD"„„„î¾ûn\¼x HMMEMM """ËODD4ÐðwDGGcÖ¬Y¶NÞâãã¯ûü—Á`€V«…ÙlîÑöÄOààÁƒøÓŸþOOOLž<S§NuD|""rH$¨­­EPPd2 22_}õfÍš…üü|DFF<==a6›¡Ñhàçç‡3gÎ 99ÙîíMì(Æ'Û/ûB¿îý÷ßÇ•+WàíígžyFè8DD.º@RRRnÚÁ•R©ÄÖ­[¯Ûˆ'Ÿ|O>ùdÄ#""rôèQ=z---Xµjxà$%%áÏþ3¬V+‚‚‚º}Þ$%%aË–-X±bBBB°lÙ2[Ûüùó‘™™ ‹Å‚ääd»{p€Ji0`ìÓ]#;ÜsÏ=½I†ˆˆúÏÄDDD.núôé˜>}zé×_.—cåÊ•×m‹ŒŒÄ[o½uK9.Iüoi9º=£F:ý‚Ï 9èDDDDDDDN€·¸‘SÖÙ- ÃåÃd2ÁÍÍíº£Ê‘ã°@H^^òòò`2™ R©°páBH$’^­C­VcçÎhll„··7žþy(•Ê~JLäx­­­xòÉ'qß}÷õhëììÄ#<‚?üá×m'¢g„¹,ÐîÇÄÕ«WáååňH`,ÐPTT„ ==J¥ÙÙÙÈÍÍÅܹsí^Gcc#Þ{ï=<þøã˜4iŒF£m¼Z¢;…Éiné; IDATdB~~>&L˜Ð£Íjµ"??Ÿ#ÝANË£½Ð)\Ï£DD΃JJJ0qâD¨T* 55ÅÅŽZGAA1iÒ$€L&ãð(DDDDDD t¨Õj„„„ ++ /½ô|}}Q__³Ùl÷: qùòe¼þúëX³f òóóaµZû15õ'èÐh4:t(D"@$A*•¢®®Îîuœ?f³iiiHKKC^^ ú+2õ3Þ-…B††¤¦¦Ú¦™L&÷jcÇŽEPPà·¿ý-¾üòËë>«KDD4ÄÏC‹ÑBÇp9{÷îE{{;<==ñøã ‡ˆÈ¥±@@TTjjjl¯›››Ô«gÈcccQRR‚É“', ÜÝÝû<+‘£\ûB§p=£F‚Ñh„L&: ‘Ëã-‰Á©S§PPP€¦¦&dgg_wX­V‹7ÞxW®\éÑ6aÂ|ýõר®®†N§Ã×_‰':">Q¿¨“:‚K?~<&Mš„ñãÇ …ˆÈåñ º¢££1kÖ,äääÀl6#>>³gÏî1ŸÁ`€V«½nçq!!!xöÙg±e˘Íf$''#!!Áñ‰ˆˆˆˆˆ¨°@HJJ RRRn8R©ÄÖ­[µ=!!E9ݱ֭[‡›Î§Õj±|ùrdddÀßßßɈî<­­­Ø·oŽ;†Ý»wC,îºÁîСC8räÄb1ÒÒÒ  ë äÍ›7£¶¶ …K—.…\.Ð5RIvv6 993fÌf§ˆˆˆ ÞâNDNéÓO?Å™3gn:_KK vî܉ööv¤"º3UVV"::¶i---8yò$222ð /`×®]¶¶Ã‡cäȑظq#BCCqäÈ[Û®]»ð /àµ×^ÃÉ“'¡ÓéìÎ`i훢^©¬¬Ä… PYY)t""—LjˆÈÅÅÅÅaêԩݦ•——#>>>>> …T*…^¯·µ%&&B$!11eee€ööv¸¹¹!,, >>>ˆ‹‹Ã… ìÎnª¹ùLÔçŽ?޼¼<?~\è(DD.·¸QåååP(ظq#Œàà`”••!66b±K–,ÁÊ•+¡ÑhlË >‡F~~>fΜ‰²²2»‡=-ús¯èz,X«Õ ‘H$t""—Ç+èDDDÔõb-((C‡í6 är9BBBàííÝc™€€(Š^oÓ"’ÜNdºE2™ r¹œÃ¬9èDDDÔCDDêêê0oÞ<$%%¡®®ááူ°0èõz¬^½"‘ÈÖ¡ãÝwß‹/"!!©©©¨©©ADD„»ADD4 °@H^^–-[†çž{;vì@ggç-­G¯×#==Ë–-ëã„DDäÊ"##QXXNF“ÉOOO[ÛW_}‹Å‚üü|[ïîžžž0›ÍÐh4Ðét8s挭ˆˆˆnŽÏ   ¨¨@zz:”J%²³³‘››‹¹sçöz]{÷îEXX.^¼ØI‰ˆÈ=zGEKK V­Z…x)))HLLDFF$ /^l›?)) [¶lÁŠ+ÒíKâùóç#33‹ÉÉÉðññ±;G”©ZÜݧûF7÷ÙgŸA¯×ÃÃÃ?ü°Ðqˆˆ\ t”””`âĉP©T€ÔÔTdfföº@¯¨¨@ii)ž|òIlß¾½?¢9Ü믿ޫ^Ÿ¯ùàƒð?ÿó?ÈËËë‡TDw¶éÓ§cúôé=¦Ï˜1ãºã˜Ëår¬\¹òºëŠŒŒÄ[o½uK9ôßÒrt{üýýáááwww¡£¹<èP«Õ˜2e ²²²P^^Žõë×£¾¾f³R©}ÿ$‹Û·oÇïÿû[¾=žÈ577ãçŸîõrmmmÐjµýˆˆ¥Ò-0 ÂõL›6MèDDô >ƒ.Fƒ¡C‡Úz»‰DJ¥¨««³{GŽApp0FÝ_1‰ˆˆˆˆˆÈx] … HMMµM3™L¶kù––|þùçX·n]E$""""""c.€¨¨(ÔÔÔØ^777#((ÈîÛÛ¿ûî;´¶¶bùòå€ÎÎNF,Z´ÙÙÙv¯‡ˆˆÈ™x[Ûx Ãå444 ³³‰C† :‘Kc%'€˜˜dff">>¡¡¡Ø¾};bbbz̧Õj‘““ƒåË—ÃÛÛÛ6=99ÉÉɶץ¥¥x÷Ýw‘™™éüDDDý!ÊX2Œ:†ËùüóÏqåÊx{{ã™gž:‘Kc.€èèhÌš5 9990›ÍˆÇìÙ³{Ìg0 Õja6߸Ç«Õj{žh R«ÕøòË/aµZok=¹¹¹ðöö¾nÔDäÜÎʃÐ)\ϬY³`±X ³k"""¡±@HJJ RRRn8R©ÄÖ­[oº®èèhlÚ´©¯¢ âÌ™3xõÕW1þüÛZÏûï¿àà`èD^Äa¾„àïï/t""ú¿*%""""""r,Љˆˆˆˆˆˆœoq'"""§nª ¡c¸œcÇŽÁ`0ÀÝÝ<ð€Ðqˆˆ\¯ ‘ , t::;;ût½:F£±O×IDýK‚¾=}L&ŒF#L&“ÐQˆˆ\¯  (//yyy0™LP©TX¸p!$‰ÝË:tÇŽC[["""0}útŒËáih`©­­E\\–/_Þ§ëU*•øÏÿüO<ýôÓ}º^"ê?çÝ€\BýàÝJDDÂb.¢¢"8péééP*•ÈÎÎFnn.æÎk÷:˜˜™L†cÇŽ!33Û¶mƒ››[?&'""WqâÄ äææÂ××ð /`ðàÁ8tèŽ9±XŒ´´4DFFètóæÍ¨­­…B¡ÀÒ¥K!—Ë…Ü""¢…º@JJJ0qâD¨T*@jj*233{U Ú~NJJ®]»PRR‚¸¸¸>ÏKDD®iöìÙHLL´½niiÁÉ“'‘‘‘Ë—/cÇŽX³f àðáÃ9r$^|ñEìß¿GŽÁÃ?,Tt—ÖÔîØÛÕï’KàçÁ DD·‹º@Ôj5¦L™‚¬¬,”——cýúõ¨¯¯‡Ùl†TÚû–K—.Á`0 ,,¬ïÑ˲Z­Ý^———#>>>>>ðññT*…^¯‡‡‡ÊËËñÔSOA$!11~øa¯¶%³šÈú0½ëzé`¹ÝóÊ­Fˆ¬VXE"tˆníøï˜;†:Q`'qÑh4:t(D"@$A*•¢®®î–Ö÷Å_àÞ{ï…ŸŸ__Æ$êWYYY(((è·õ_¾|o¿ý6šššúmDw2¹\ŽÜÜ\lذßÿ=€®=887nÄîÝ»Œ²²2]Ÿmb±K–,N§ƒF£éÕöâŒçû|èæ¦~D’á{L3ü(t""—Ç+èQ(hhh@jjªmšÉdBppp¯×U\\Œ¢¢"¬[·®/#õ»ÌÌL<òÈ#ý¶þ––dffbæÌ™Ý !"ûL™2“'O†^¯Ç_þò„……Ù¾X B`` ª««mÓ€®¢>$$ÞÞÞ½ÞÞy·P £Ïâ“ e£ †ˆn>3õ+^AHTTjjjl¯›››ÔëÛÛ«ªªðÁà•W^‡‡G_Ç$""'‰àéé‰ñãÇ£¨¨¨««Ã¼yó””„ºº:„‡‡ ×ë±zõjˆD"„„„ôj[­â»úcè&š$~¸$ñG“„wá º@bbbpêÔ) ©© ÙÙÙˆ‰‰é1ŸV«Åo¼+W®ôh«­­Å;#ÿ÷Ç Aƒ›ˆˆ\ˆÅbÐu‡Wqq1‰ÂÂBÛ-ì&“ žžž€ÈÈH|õÕW°X,ÈÏÏ·õîNDDDöá-î‰ŽŽÆ¬Y³““³ÙŒøøxÌž=»Ç|ƒZ­fsÏaß}÷]444àµ×^³M{ðÁÙc.9½o¿ýƒÁaÛ«¨¨€Z­Æ£>ê°mÝ >ùäÀËË Ó§O· ·–˜˜ˆŒŒ H$,^¼Ø6RR¶lÙ‚+V $$Ë–-*:Ñ€Ä]@)))HII¹áNèDDô vGDSYY‰ÜÜ\Á¶ÿõ×_ãÛo¿lûDDDDD7ˆú]mm--ZäÐçÎodÉ’%8|ø°Ð1ˆˆˆˆˆºaNDý®­­ Ÿ~ú)ÚÛÛ…Žøâ‹/ðÓO? ƒˆˆˆˆ¨>ƒ.¼¼<äååÁd2A¥RaáÂ…H$v/o6›‘““ƒ~ør¹>ø ’““û11Ñ­IHHpÊÞÓþùgŒ5 ü1Æãó—DÎ`bG1>ÁX¡c¸œß꿃‡Õ½H†xL:‘Kc.€¢¢"8péééP*•ÈÎÎFnn.æÎk÷:þþ÷¿£¢¢¯¼ò ¶mÛ†DEEõcr"û­Zµ ÐØØèÐ1Ïíe±XpéÒ%9r+V¬À?þñ¡#¹¼Ji0`:…ë9ç6XÐÉ+‰ˆÇ]%%%˜8q"T* 55™™™½*ÐKJJðÐC!$$0gγ@¿“ɽ^­V‹‹/â¾ûî:Ò-)((€L&áC‡0bÄ?~)))èìì„›› ®^½Š±cÇÂÇÇ"‘È!¹, :;;±ÿ~ìÝ»žžžÙîíÒét(--ÅÚµkÑÖÖ†7Þxb±¸Ww´Ü«Õ øæ›oàç燒’¢°°nnn0 ðòòBtt4¼½½‰»îºË!ÙúRqq1Z[[1nÜ8H¥Rxxx‰œÐ%‰¿Ð\’V:DèDDô èP«Õ˜2e ²²²P^^Žõë×£¾¾f³RéÍÿIŒF#***0|øp¼øâ‹=z4¦OŸî²W;ooo¼÷Þ{xôÑGñÓO?!!!—/_FCCŒ={ö`Ê”)ÈÈÈ@jj*Ž=ŠñãÇcĈx衇Š!Cœû”?üîîîX¾|9RSS±eË<ÿüó8tèÚÛÛa4ñÃ?`Þ¼yxçw°lÙ2lÙ²»ví•+WzõPoÕÖÖâ§Ÿ~¬Y³°dÉœ9sS¦Lé·íõ‡ÊÊJ´´´ 66O=õ,X€AƒÁÝݽ_¶÷ý÷ßãÇÄÑ£Gáíí/¿ü‹-ÂÖ­[±téR¼ÿþûHJJ•+WpöìYÌ™3ï¾û.Þ~ûmTVVâõ×_ï—\}¥££EEE¨®®Æúõë1mÚ4œ={z½Ó¦MCmm-æÌ™ƒ²²2Ü{ï½hjjÂÕ«W€?þsæÌÅbÁý÷ß///¡w‡ˆˆˆÈ!X  @£Ñà±ÇCMM @$A*•¢®®¡¡¡7]^«ÕÂl6cèС¶å=<>>€ÒÒÒnû©Óéàåå©TŠmÛ¶aêÔ©P©Òàæ6ãÆI1dÈHÀ¸q‘ps‹‡Je†X¬Âøñ¿‡¿,¤Ò6¸¹5ÂÍ- *•b± *UîºK…b4:: ððPB¥’B$š•* žžq÷ÝÁpssƒ·wT*O[››Û$Œí?øùùc¿nm11r ª€D"Á¸qJH¥]m‰ qqˆ†‡‡"Q< †(<óÌ<þøãH$ðõõ…Á`€Ùl¶½ÿà—Ë`2™a2™ “É •J`0t@*•¢µµžžž0 P(€;w"""gϞŰaÃPPЀàà!—Ë;Ri‚-Sl¬càíÝÎÎXÈd±P©,Ðhá›oÔØ·ï D"qŸ½×ÑÖ¦ƒ»»;¤R)ZZZØãýo±XpõêUøùù¡±±J¥b±—.]‚Édĉ'1räH?~Ó¦MC`àtxy©“Éw÷045}ÒRwäçë ×_Beeärw ↚šÁ8}Ú‚üü|œ;çêêjÄÆÆB.—!<<F£ååå DKK‹íŽ‚¶¶6Û9â×Îk—.]B@@êêê0mÚ4ˆD"\¾|b±ååå7<¯ýß÷¿\.‡L&³Ïnv^ òCPݧi"""rA"ëµû+Éa^{í5L:µ[§niiiضm›ÝWÐ-Z„¿þõ¯1b ªª 9997½ª¦ÓépêÔ)<ûlÊË}noGˆˆÈnáá:¼ûî)$$$ؾø¢.×>›ö7¢À8ØáÛ?óÆ<˜Záæ;±¯|äðí Ma®‡ÄÚ‰N‘é­}‹´cî„øõÏGDÔÚÛÛ¡V«ùÙäDx]QQQ¶«çÐÜÜŒ   »ŠsÉd‡F£±èµµµ½zþ<+ë*®=š|õêUèt: 2V«Õî}¥ºº "‘&“ð÷wîg»®8[!“ÉoiùÊÊJÈdn¸páQ\\Œ{ï½f³aaa}š•\SCC Ξ=ûËÝ/z„††¡££ááá·ô;n6›a6›ûí–ÿ¾ÒÑÑFOOO´´´ ::Ú¡Û·X:ÑÙiA[›€¶6«õ*,‡ÆpF˜PÇè®NiªƒÜjD‡HvËzS»©SÝØ]r ü<ܺM""G`.€˜˜dff">>¡¡¡Ø¾};bbbz̧Õj‘““ƒåË—ÃÛÛ»Ç:<…Bööv8p‹/¶;Cd¤žž¿¼rÿå?è¼þBý$66äÿLqìö{ïZça·–36VñËO×þúß„³ï; €‡þ•ö[yŸ‰¸ÝⲎ$ÅĉÊ_~aòŠøýòó?·ßÞnZ-@œä´< Ð ÂõœðPÝö:^:XÞIì·cîèDtGb.€èèhÌš5 9990›ÍˆÇìÙ³{Ìg0lÏ›ÿ_³fÍBKK Ö®] wwwüîw¿cîDDä´Z-233ÑÑÑÉ“'cÞ¼yBG"""X  $%%)))7œG©TbëÖ­×m“J¥HMMEjjjÄ#""ºe|ð,X€ððplÚ´ P*•7_ˆˆÈʼn…@DDDw–––ÄÄÄÀÝÝ“&MBYY™Ð‘ˆˆˆ^Aw1–_z(2 '!"r-×λÎþÿí©¯¯‡¯¯/NŸ>;wâ¹çžÃáÇoxרµÏ¦i’*ä{„9(é?]ó?H½ý0ÜÃõ·‰3ž‡Ìj‚Qä†BÙ(¡ãØ¥±µ ¦Ž;·Ã/7 îrçŸéÔÿ\å³i áo¾‹é½3ˆˆúÎþ©è—!B||| P(ì5àÚgS|dâû5ݯxë/BlÕ‰ü³(¿WÀ½amªA‹Ð!úѼoäœîôϦ„º‹ DTTÜÝÝ!‘Hn¾õ ‹Å½^ÀÀ@¡£ô«aÆ¡­­ ‘‘‘X¹r%Nœ8ÈÈÈ.ÃÏ&""a¸ÊgÓ@ÂÝÅÈd2ÝÚ§DDt{üüün>Ó ¥¥¥P*•8uêÔuG*ùßøÙDD$Wùl(DV«Õõ¶"""¢~S__ÌÌL ³FDDÔ ,Љˆˆˆˆˆˆœ‡Y#""""""r,Љˆˆˆˆˆˆœ t"""""""'À^ÜïPøì³ÏpìØ1¤¥¥á7¿ùM·v³ÙŒœœüðÃËåxðÁ‘œœÜmž¯¿þû÷ïG[[¢££‘––GîÆ€±uëVÛ±€˜˜<ÿüó¶v{Ž7ÝX^^òòò`2™ R©°páBÇtæÍ›‡€€ÛëÅ‹c„ €ššdeeA«Õ"88iii1b„PQ„ÂÂB|úé§P«ÕسgO·¶›OW??hµZdff¢££Ãå:”Û³gÔj5¤R)yäÄÆÆ I0ÙÙÙ(((À;ï¼#t‡Ú³g~øá¸»»cáÂ…:’CÕÕÕaïÞ½ÐétˆŠŠºãÿ[[[±oß>;v »wï†XÜu­ôСC8räÄb1ÒÒÒn:4%ÝÙX ß¡rssˆ#F@$õhÿûßÿŽŠŠ ¼òÊ+0 ضmBBB ë¦÷Þ{ .DBBvíÚ…¿ýíoxî¹ç½+‚H$ÂÓO?ÄÄÄë¶ßìxÓáÀHOO‡R©Dvv6rss1wî\¡£ h¿ö‡ðºuë0uêT¬^½'NœÀ† °iÓ&§8®^½Šýû÷ãž{îZ­îÑ~³ãéêç‡>ø ,@xx86mÚ„ŠŠ (•J¡c9Ä¿üË¿@*•B§ÓaíÚµ.[ WUUÁd2 Ãá¾ûî;èt:¬[·2™Lè8‚Ø»w/fΜ‰Ñ£GcÛ¶m(,,D\\œÐ±úMee%¢££QXXh›ÖÒÒ‚“'O"##—/_ÆŽ;°fÍS’Ðx‹û*55³gφ»»ûuÛKJJðÐC!$$˜3gŠ‹‹mí¥¥¥ˆŒŒÄý÷ßooo,^¼åå厊? Ýh@„›oº±’’Lœ8*• HMMåñë'Z­mmmX°`<==ñàƒbÈ!hhh:šÓòòòÂÚµkߣ͞ãéê燖–ÄÄÄÀÝÝ“&MBYY™Ð‘F*íºNâãã«ÕŠööv cÏž=xüñÇ…ŽápEEE˜9s¦Ëç@׎kw^ûÿ,..S§Ní6­¼¼ñññðññAhh(¤R©Ëž ¨ td4QQQáÇãÅ_ÄöíÛ‚sçÎÙæ9wî 8€¥K—Â`0@*•âÒ¥K&w^R©»wïÆË/¿ŒÏ?ÿ¼Û‰ÕžãM7¦V«‚¬¬,¼ôÒKðõõE}}=Ìf³ÐÑ,‰D‚¥K—bÆ (((°MW«Õ1bŠ‹‹‘žžŽââbŒ1¥¥¥¦¸nv<]ýüP_____œ>}Ë—/ǰaÃpþüy¡c9œN§ƒD"§§§ÐQî›o¾Á¨Q£º=rã*Ο?“'ObíÚµøôÓO]ò.‚´´4ìØ±øÃàååuG_=ÿ5åå寯±{÷nãÂ… BÇ"ñ÷Èd2aÙ²e×m{úé§1yòä.¯Õja6›1tèP]ß^zxx ªªÊ6OMM F…+W®Ø® {xx ººƒî› ì9Þ¿ÿýï1þ|tvvb×®]øè£°hÑ"öoº1FƒÇ{ 555ºŽ¡T*E]]BCCN70mß¾r¹•••ظq#üüü T*¡ÑhlïU«Õ ‘HOOOTWW œx`ª©©¹áñtõóõG°||| P(lW”];}ûðoÿöoBÇp8£ÑˆÃ‡ãü£ÐQÑÑÑ &à‰'žÀž={ŸŸûï¿_èXµ{÷n¨T*L˜0ÿýßÿ¢¢"Œ7NèXuí<„ÀÀ@TWW_÷ñTr®ùI8À¹¹¹ÝV'*LJT*Ess3Þzë-]Ï) Û<¡¡¡hhhÀ‚ 0{öl€^¯ï6«°çxK$xyyæÌ™ƒ?þñxê©§ ‘Hì:Þtc … HMMµM3™L0ÕÀvíJ]xx8~ó›ßàĉP*• Åùóç1vìXdeeNŸ>Í/Bn‘B¡€Z­þÕãéêç‡aÆ¡­­ ‘‘‘X¹r%Nœ8ár#:u ‚DZäIDATr¹Ü%Ÿ?W«ÕhjjŸþô']hý×ýV¬X!p2LjŒŒ„ŸŸÄb1&Mš„Ï?ÿÜ¥ ôŽŽœ;wééé€G}Gu¹=""?ýô“­ƒ¼5kÖà‰'ž8 ‰·¸» ™L†ððph4Û´ÚÚÚn3Ævµè*†L&† âЬQGGÜÝÝm=ŒÛs¼éÆ¢¢¢º½›››ä²WÛúšÑh„··7€®ßýÚÚÚníµµµ3fŒÑ¼›Ož€€€”––Â`0àÔ©S.U WUU!??óçÏ:Š Æ‡Í›7ãÍ7ßÄ›o¾ ___—)ή_>ûì3˜Ífœ;wÑÑÑBGr(¹\///h4X­V`Ô¨QBÇr¸ÈÈHB§ÓA£ÑÀd2¹äã.ôO,ÐïpV«õº—ÅÄÄààÁƒ¨­­EYY8€±cÇÚÚ£££QVV†¯¾ú mmmؾ}»Ë ýÑ×N¨­­­øä“O0cÆŒní7;Þtc1118uê ÐÔÔ„ììlÄÄÄkÀºzõ*~þùgÀ… ðí·ß")) @×MìÙ³ííí8xð l·`SïØs<]ýü°`Áìܹ«W¯†B¡ÀÝwß-t$‡Ùºu+.^¼ˆŒŒ ¼úê«.óhu¹6òËêÕ«ÑÐЀ{î¹GàDŽ÷ôÓOcÏž=xùå—¡×ëu4œ;ÅÑ£GñÒK/¡¥¥«V­Â¡C‡àííÄÄDddd`óæÍX°`Ð1I`"뺞¦ëõ×_GUU•­s7©TŠU«VÙ¾™¼6îîéÓ§áîîŽßýîwHIIé¶Žo¾ùü1ÚÚÚ…gŸ}–ã _‡ÅbÁ† P]] Üÿý¸÷Þ{»õÊjÏñ¦;tè¾øâ ˜ÍfÄÇÇã™gžá8è·¨´´»víÂåË—1fÌ̘1£G¶µsôÞ©­­ÅüÇÀb±À`0ÀÓÓƒ † Ø?:ÏDDDĈˆˆˆˆˆÈ ðw"""""""'ÀˆˆˆˆˆˆÈ °@'""""""r,Љˆˆˆˆˆˆœ t"""""""'ÀˆˆˆˆˆˆÈ °@'""""""r,Љˆˆˆˆˆˆœ t"""""""'ÀˆˆˆˆˆˆÈ °@'""""""r,Љˆˆˆˆˆˆœ t"""""""'ÀˆˆˆˆˆˆÈ °@'""""""r,Љˆˆˆˆˆˆœ t"""""""'ÀˆˆˆˆˆˆÈ °@'""""""r,Љˆˆˆˆˆˆœ t"""""""'ÀˆˆˆˆˆˆÈ °@'""""""r,Љˆˆˆˆˆˆœ t"""""""'ÀˆˆˆˆˆˆÈ °@'""""""r,Љˆˆˆˆˆˆœ t"""""""'ÀˆˆˆˆˆˆÈ °@'""""""r,Љˆˆˆˆˆˆœ t"""""""'ÀˆˆˆˆˆˆÈ °@'""""""r,Љˆˆˆˆˆˆœ t"""""""'ÀˆˆˆˆˆˆÈ °@'""""""r,Љˆˆˆˆˆˆœ t"""""""'ÀˆˆˆˆˆˆÈ ü ¨çk*Þ]IEND®B`‚pymc-2.2+ds/docs/_images/poormixing.pdf000066400000000000000000000047561204033704200201600ustar00rootroot00000000000000%PDF-1.4 %¬Ü «º 1 0 obj << /Type /Catalog /Pages 3 0 R >> endobj 2 0 obj << /CreationDate (D:20091014113348+01'00') /Producer (matplotlib pdf backend) /Creator (matplotlib 1.0.svn, http://matplotlib.sf.net) >> endobj 9 0 obj << /XObject 8 0 R /Pattern 6 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /ExtGState 5 0 R /Shading 7 0 R /Font 4 0 R >> endobj 11 0 obj << /Contents 10 0 R /Type /Page /Resources 9 0 R /Parent 3 0 R /MediaBox [ 0 0 480 432 ] >> endobj 10 0 obj << /Filter /FlateDecode /Length 12 0 R >> stream xœ…–ÍŠmÇ …çû)ê *Ré§JÓ¸`ðÀöÀ`B \'8“¼~>UÇoC»›æœ>kK%--­::þù¬ñÍÐñþ¾<2dü<üôë×ûê¶x÷Û+Ÿ?}~ÙÍ5lóç1süçïãÇñ/ÒôCßyÖ^ÓeGšm«±4Im²¦•˶å9‰Þ¡RZ`&Ó»Ô2÷¤€é±FÃçZ'Ö²ÈM2%Ú´jeFã[ 8¾ùIlɬÅQµOœÆÏž¦Y€QÄ[ͺÂK6^gJ¹¬]–õX¬™q²»{º™¹u;… ás¯mçÔÅ•z2ÈOWÊy+DãâF=ºÌ‹¨–æ)t“Ÿ‹ÇŠq=Ä_³ª¶WZÙÅ}FT–,*¦›5UÊÿþCnxV&l?Ç&¡ñ›_ÎŒîOtQíÇkT¯‹3Q[YÊùg¦˜1öAOÎcËULøM9Ì1™âç É™Ž)áióÌ'#¹á™3Žå6ߌӂañðÙÙl|½2Bqš/¦g67‡C£ïl\™Ž¦Ÿf”ö¥fšçÔÓù×éz]¹Pþ¢œt¨µî¦ñ`|îV%2èî”w×RšObBŸµÐ/ÅÁV®®O‹ñ(ó_dQþÕ©ío=4uŽÙ£)ó¨îê”»qW"Ôªæ¨çÐEBièÞ7棈Iö¶-Ký¦GÜÄÌÄF­¹)ÏCÎÝœB[‚ª—$ÃB:†Üú÷<_Çñið©ø`,gô*­‹#M$©@ƒÍ¦JÚ­RPT 0”=”ó+I}‹Ì—4 ŸpF@ˆ¥tË{OvÙz›¥†×d9AB}(’E4Á Ž7ê‹\´såplzwT,GŒ~V6ýÜa2k6GÜD¼Fi½ä%#¦æŽSH‹Xª`Ùl£¥K${E^V/O<‚Õ[´Ä>øÁte(l²î&Çx”­Õ»DŠeá ®ÍOcqn¶+yGoæpÐö%¡®¶VÙ‘J‹LºÔ(¨§k ¸ÌîƒxÌ"Y[˜ û®.žªšDbŒ®ð˜…Ä9ït<®« =Ì…ë¢IzÅïØÚŽÿ~x¾Ÿ¸»pYÈŒñßß|þ—çã­¶›_›ÿéçñ—oeüíßÏw–í˳¯êYq.oñ•á¯Ìúp]üdŽÐ–›±ä‡l#œ§¯õ|v¤(3¥Ñ‹Sª\ˆä>/¥CJãwü'á‹L\(?GŸ@Ñwn¼Vtõuƒƒ¦]ãsó¤o°è~°Ì­pT£€Ç Þ­wv»ïh¼´Abüªox¼àƒ/÷.æ}7¢¹v±é}Ãã sI´s½¨ÝÊ} ²Íà.¶7<Þp_¹,“Ü÷lî4¡):ÅëßðxÁl£ÖÚÜ7±~ÝeaÓY˜Mò<^°òåƒíë÷c—\è~p‚<^0žÃÍ\|¹•³šÆW¤@§/x¼`½ßÌÏZòÁ9>tS±ó†Ç曬¿Î5ÀK:KÓW© Ó7>Þ8éñ8e‚riÇžÿ)p  endstream endobj 12 0 obj 1169 endobj 4 0 obj << >> endobj 5 0 obj << >> endobj 6 0 obj << >> endobj 7 0 obj << >> endobj 8 0 obj << /M0 13 0 R >> endobj 13 0 obj << /Filter /FlateDecode /Subtype /Form /Length 139 /Type /XObject /BBox [ -3.25 -3.25 3.25 3.25 ] >> stream xœ}P¹ 1 ë5…¡Ço›UܤÉþmNMÎpi Ðâ’‘ ?Èe¬Öy™C)­Ía«‹V$-}ÚbáQ'jS¶jÝO7‚IÁåò½# ·¿¿ŸS Aؘˆ‡E̲‹âéQ™:¥À¸EœÉâ†ÞÎÖ@æ¡ç]ÝçäfŸ”J^ö /øŒî[ endstream endobj 3 0 obj << /Count 1 /Kids [ 11 0 R ] /Type /Pages >> endobj xref 0 14 0000000000 65535 f 0000000016 00000 n 0000000065 00000 n 0000002124 00000 n 0000001734 00000 n 0000001755 00000 n 0000001776 00000 n 0000001797 00000 n 0000001818 00000 n 0000000217 00000 n 0000000468 00000 n 0000000360 00000 n 0000001713 00000 n 0000001850 00000 n trailer << /Info 2 0 R /Root 1 0 R /Size 14 >> startxref 2184 %%EOF pymc-2.2+ds/docs/_images/poormixing.png000066400000000000000000000253151204033704200201650ustar00rootroot00000000000000‰PNG  IHDR¾¤Á¢×CgAMAÙܲÚ IDATxœíÝ{\Í÷ãðÏI«Œ¥bî ù+Òe.Å(EFŠ´er­Ð0#[|g™ùn.3[eº™»ŠV™¢RH¥ËéFØgŠ©”n§>¿?Îã×·o57óþ|Îy=ÿ:û|^¶yy¿?Ÿ÷çý°,Ë ÚøÕ @ Õ @ Õ @ Õ @ Õ @ Õ @ Õ @ Õ @ Õ @L•v€W¡¢¢‚çG@vAssóK¾ÀËêdYÕ ²#^þL؈¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ¡:ˆ©Ò¨¬¬‰Dnܸ_~ùÅÖÖ–vÙButâùóçû÷ï×ÓÓ[¾|ù‡~ˆ§¹_âêÕ«NNN999ýúõ£E†PÿèáÇ ²±±Ù´i“™™íDü°cÇŽœœœððpÚAd¨Ó’Ám"PFYYY‹-;vlss³P(½víÚ¨Q£hÇWwãÆ {{{Ú)(À¨äíØ±cãÆ›2eJZZz“ך››³³³MLLh¡£NŸ¿ÿþ{ÕªUüñG\\œ‘‘í8ðº  ¤œ‹“0ê99{öì˜1cÞyçÌÌLô¦bHNN677§‚Œ:Aæž={öé§Ÿ¦¥¥EDDLœ8‘vè2±±±óæÍ£‚Œ:A¶RSSÇ×»wô¦"innŽ·±±¡„Œ:AVX–Ý»wïwß}ˆw`(ž¬¬¬Áƒ÷ë×v:P OŸ>]²dIyyyffæ!ChÇ®¦œË’$0a‡®wíÚ5###CCëW¯¢7Uhh¨““íÔ`Ô ]‰eÙo¿ýöÀGޱµµ¥d%++KEEeܸq´ƒPƒê„.SVV¶hÑ¢úúz¡P8pà@Úq@†ÂÃÃ,X@;M˜°C×HLL7nÜĉ/_¾ŒÞTlb±8((héÒ¥´ƒÐ„Q'¼.–ewîÜéëë{ìØ±éÓ§ÓŽ2=bÄ%ˆÕ ¯¥¦¦fÉ’%ÿý·P(TÎ-o•ÐáÇÝÝÝi§  vxu÷ïߟ8q¢¶¶vBBzSI§¥¥)ó½u T'¼¢ÄÄÄ &¬Zµ* @UÓe±oß¾eË–uïÞvÊ,ËÒÎ@L àelEâëë»}ûöS§NYZZÒÎòSUU¥§§———7xð`ÚYd«Ó’Á`È466®]»699955U9_J£Ì:4{öl…ïMi :@YYÙüùóûô铚šÚ³gOÚq@®Äbñ?þM;'àZ'HK(š™™MŸ>ýܹsèM%tèÐ!###ìµ*ÁË‹†¸Ö)aaaŸ|ò‰¿¿ÿüùóig êêêôõõ£¢¢”äu¸Ö ]à§Ÿ~Ú½{wBB‚¡¡!í,@‡¿¿ÿøñ㕤7¥ÁËáFò´eË–³gÏ^¼xQOOv ãŋǿtéÒ˜1chg‘Œ:áÕ‰ÅbWW×»w捻¤èèèÐŽÔìÝ»×ÊÊJyzS¼¾aÔ)555ŽŽŽo¼ñÆ™3g°þY™;V(êêêÒÎ"?– î°Cþþûï©S§2$""½©ä¶lÙâáá¡T½) LØ¡­ÂÂÂ3f,^¼ØÛÛ›v ,##ãÒ¥Kþù'í œƒê„ÿ‘™™9gΜ;v`k`fýúõ»víêÑ£í œƒê„ÿŠuqq  ,a@°lÙ2ÚA¸ˆ—÷[p›HΟ?ïêêzîܹI“&ÑÎô•––\¹råÝwߥ…‚NK†—„êìrQQQ®®®111Xó  .6lØ®]»h¡C¶ë:Y–½}ûö‹/ÆŒ£¦¦ö:?PôÛo¿¹»»_¸p½ qqqiiiAAA´ƒp׫W§¿¿ÿwß}7iÒ¤çÏŸçç燅…á={ÖÃÃ#66ÖØØ˜và„òòòeË–ýúë¯X—ö¯2ó­­­uttÌÉɉ•<Ô¼bÅŠ””¡P¨¡¡!ƒmaÂÞUÂÃÃ׬Y£Ì/Ô†6œœœtuu÷îÝK;M— K¨±±qΜ9àÒ¥K-#""†ñññ!ýÙ^Í+ĆöNŸ>Ý·oßœœÚA€CBBBÆŒSWWG;e– q}òÉ' Ãxxx´>˜™™É0Œ™™éÏöjP¯ïäÉ“ýúõËËË£8¤¨¨¨wïÞø¿‚•¢dÈf¾ Ó§O×ÖÖ‰D­7»-++ëׯŸŠŠÊÓ§Oµ´´ÈGÇd0aMÇß´iS||¼r®;577¿ÿþûóçÏ߸q#í,ôuå3ì/^¼psscÆÕÕµÍ&á Ã477ã-îKMM]¶lÙ¥K—ЛÐÚîÝ»ÕÕÕ7lØ@;?Üa?vìXQQ‘ŠŠÊš5kÚœ*++“|(//ï²h ñññÖÖÖiiiØ´ZËÊÊúᇲ²²í,ü@0êôóócÆÎÎnèСmN•––J>477wQ0èzYYYÎÎα±±ãǧ8¤¶¶öã?>xð ^u)=i«3%%%;;›aWW×ög $úôéÓUÉ kýù石gÏ œ1cí,À-^^^¦¦¦}ôí |"í„Ý××—auuu++«ög…B¡äª“›?~|8Ã0ƒ‹Å~¡®®î«¯¾ºqãF§¿–”¤‰ ÿùÏÌÌÌjkki¡ÀÒÒ266¶ÃS±±±–––rÎÃ5¾¾¾ÕÕÕ´ƒpW§%ÓùöÂÂBÉ ‹ögÿøã{÷î1 ãîîÞ­[·–ãb±øéÓ§ýõWbbb@@À;w ðÞ{ïI×øðº.]º´ÿþôôtå¼³œ››;vìØ–LJJbYvÚ´i ÃŒ;677—Z2¸zõª··wJJ Þ8ô::¯Î'OžH>t¸Ÿão¿ýÆ0ŒªªªäÍëÖ­ÓÕÕ5kÖÈ‘#ïܹÓiA*÷îÝsqq à g‰©S§ÒŽÀ>üðÃ;&™,Â+#¨Îy`ÆÞ޾Ͳ¤‰'¶¬KNN~ݘ µššš¹sçz{{O™2…vj$CËþýû·?Õf@ªTêêêæÍ›·aÃÚYx¯óÅI’i¿@ èÛ·o›S—/_– 'W¯^-‹pð /^lnnîááA;M³fÍúùçŸ;<õÍ7ßÌš5KÎy¸ ¡¡ÁÎÎÎÔÔô‹/¾ Et^o¿ý6Ã0ZZZªªm‡¨þþþ ÃL˜0aúô鲤¾ùæ›GýôÓO´ƒP¶aÆ۷oKkÍßßÿÊ•+J¸9˲‹/ÖÔÔlÿï^MçvÉL¼ý[JD"ѹsçÔÔÔ±Û œ?ÞÏÏ/==]Ù–"µ§ªªš˜˜8pàÀ  …ÂsçÎ;w®¸¸¸ý @á­_¿¾´´466VE…`Çx‰Îÿ=š››khhTVV¶9îååÕØØøÕW_È&¸{÷îòåËà@; ' 0 ºººªªjݺu}úôY·nݳgÏ„B¡>+¼k×®¤¤¤ÈÈHuuuÚYˆ4Kœ$׆ž>}ÚrDrcÝÅÅEšÇT–-[Æ0Œ¯¯¯4¿–4¤Œ­<*++GŽD;G)çâV‰€€€aÆ=zôˆvžé´d¤½ûøø¨««Kê’a˜ŒŒŒeË–Í›7/88Su.ððð˜9sæòåËiá(å\ÜÊ0LddäÖ­[/^¼ØábxR]ô155õóóÛ¾}{qqqIIIxxøîÝ»W®\)ëp Ó§Ogff¶ìû qñâE77· .Œ1‚v$íõòåË—/Z´(!!ASSó‡~ÀŽ(..^»vmlllûûx Ìnܸ1sæÌ¸¸8SSSÚYÁ­F555[[[ÙER,Ë.^¼xãÆ&&&´³‡äçç›››§¤¤Lœ8‘v……• <¶ÿþ††///ÚA€CnÞ¼immý믿¢7eJé¸)Œüüü]»vedd`¥´ÈËË›1cÆð¢!Y“ùŸºššÉÞK·nÝ’l@ ¯¯¾¾~áÂ…ûöíkÿvRPZ¹¹¹666èMùÕžÁOž<‘\€«««***MMM@CCcàÀ’w½2luìéé)‰$/Œ`&;;{æÌ™¾¾¾ŽŽŽ´³(‚NK†—¤äÕ™°dÉ’ÜÜ\ÚY€„BáÌ™3:4oÞ<ÚYD§%ƒkzôèÅ‹õõõigQX¸Ã® ¾ýö[ô¦’kjjòððÈÊÊJMM•¼ùháåðMÙF"‘ÈØØ877wРA´³5µµµÎÎÎuuugÏžÅ+Ôe ·‰ÁæÍ›?ûì3ô¦2+//·²²ÒÔÔ<þ>>§OŸž6mí,Ð ^ß~ÔY[[;dÈœœ,ƒWb±ØÃÃ#555** ï›â¬ëä¥ÐÐÐ & 7•ÄãÇ­¬¬ž>}šššŠÞä T'>|ØÝÝv ‡øøxccc›ððp½©HRSSÇŽûìÙ³ììlô¦"ÁµN‰ÇkµFCCÃ×_ìçç7oÞ<Úq ‹a€Ã!ׯ_·°° º@vv¶©©é;wòòòЛ ‰— òZçóçÏû÷ï_UUÕ­[7ÚYàÕ‰Åâo¿ýöàÁƒûöísqq¡^ž&⬬,###ô&¯Ý¾}{ñâŽ{÷ …ؽE±aÂÎYYYãǧ^˲ûöí³°°pww‰‰Ao*<Œ:¹âÞ½{#FŒ ^ÅÝ»wW­ZÕÔÔ”™™‰]ã”F\QTT4lØ0Ú)€L}}ý¶mÛ&Mšäàà””„ÞTurÅýû÷ñ_âââV­Zebb’——7pà@Úq@®P\ñèÑ£!C†ÐNR)--ݰaÃõë×ýüüfÍšE;P€ ;WTUUõìÙ“v è˲þþþ†††zzzèM¥…Q''Ô×׫¨¨¼ñÆÒ|¹²²200°ªªªý)MMMWW×^½zuu@`†ÉÍÍuwwã7 hÇšPœP]]-}ßzzz¾ä 7nìŠPð_µµµ[·nýõ×_wïÞ½bÅ @@;P†êä šš)¿,oN:µÍ m“’’:Â+cYöäÉ“[¶l±´´,((èÓ§íDÀ ¨NNÐÐШ««#ú!Ó¦Móöön}ÄÛÛ;))©+c)½äää 60 sâÄ l/­¡:9áùóç`Û¶mî8‡+˜òwïÞ=//¯´´´Ý»w/\¸3thÕÉ AAAMMM>>>/ù®`ÊGEEÅÎ;ƒƒƒ====ª¡¡A;pª“$(ŒŒÚœÂL¹‹Åþþþ>>>xW%¼ª“CôõõÛ\¾dpS^¢££===‡ohhH;pª“CJJJhGPFiiiÛ¶mû믿8`kkK;ðž&â‡ÒŽ \222>øà'''GGǼ¼<ô&HÕÉ!eeeb±˜v ¥™™iggçàà0wîÜ•+Wb“i ‚êäþýûÇÆÆÒN¡à²³³íííííímmmïÝ»·zõj)Ÿh ÕÉ!£G§BaåææÎŸ?ÿƒ>°¶¶.,,\³fššíPÀW¸MÄ!£F:yò¤X,VUíø¿‹dãÄÄD†aÛÜŽo}«è[»uëÖ¶mÛ’““½¼¼Nœ8¥šðúP¢¥¥5~üø77·¿pæÌ™–?’’’:\´Ôú8VÑ_½zuÏž=ééé›6m:zôh÷îÝi'êä– 6¬[·îŸªóÃ?|þüydddRRÒ?mÿ1uêT†a”|½X, Û»woee¥§§ç©S§PšÐµP’˜˜È²lyyùG}4zôè–ƒLGÓó"éS¥]E_UUuøðá~øA__Û¶msæÌÁãç ¨NjZïX,éÇ–¹ö™3gÚ|¹ýôüŸ&ìšššÊ9Þ‰Dž5kVdd¤±±1íD ÈPÔ¼dÇâ>}úJ¦Þ-Óð–éyû#-$w‡öïß/ÃÜÜ“‘‘±gÏž‹/ºººæææ<˜v"P|¨Nj:ܱXR‹K—.=vìØŽ;¦L™"y†½õîœí(§šššÓ§O‹D¢ 6àåN 7¨NÊÚ4 ¤{öì²hÑ¢ììlzѸëÆ¡¡¡S§Nõòòš5kž9Cur”­­íÒ¥KgÏžmeeE; W”——;v, àÅ‹nnnýû÷§ ”ª“»|||Š‹‹Ož}[/ƒÂ@ur]ë –$$Ë6£¢¢/^lbbòî»ïŽ1âîÝ»»vírww9rä¦M›,,,ôõõåp³…eÙ»wï¶îÊž={š˜˜˜˜˜|òÉ'¦¦¦”uùCurÝK6XŠŠŠŠŠŠjs0??ÿûï¿ÿúë¯ËËËÇgüÿ þé½Rª¨¨xðàH$‰D’ÅÅÅB¡°_¿~’®üâ‹/LLLÞ~ûí×ùUxÕIY›‡‚Ú?)ô’Gƒþi£ø x{{?{öL( …¸¸¸ï¿ÿ^$õíÛW§#½zõzñâE];õõõ -u)ôôôtuuuuuõôôŒuuu 1 %„ê¤FrQ²Ã‡‚:}RHbîܹmÞ>$ÙxIòY[[ÛÊʪe÷ÚÚÚ’’’òÿ%‰²³³«««ÕÕÕ5þWŸ>}$çÌ™#©KT$@ T'5’§}Úìè.ýÆÆ¤Ï uïÞ]_____ÿ5cƒê¤Hò˜P›ƒØØ€ThàT'1T'1T'1T'1T'1,Nâ")Ÿ&ZPÜòOQß ZCurK‡ññECŠ ÕÉ->b\ƒÛDÄPÄPÄPÄPÄPÄPÄPŠ#11OmȪSqHÞbÄà©MÙÃÓDŠCòÞ7<µ –eig &ð26ðE§%ƒ ;1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1T'1UÚ^…@ ´S€Âê´a,ËÊ' €ÂÀ„€ª€ª€ª€ª€ª€ª€ª€ª€ª€ª€ª€ª€ª€ª€ª€ª€ª€ª€ª˲™™™ ´³€bâå1^Âßßÿ»ï¾›4iÒóçÏóóóÃÂÂLLLh‡Eƒ7b‚⨭­uttÌÉɉ544dfÅŠ)))B¡PCCƒv:P(˜°ƒ‚‹Å~øaLLÌ‘#G$½É0Œ½½ýíÛ·÷ìÙC7(T'(ˆõë×GGG¯^½ÚÚÚºåà!C†ùí·ßèåÅ„ ;(‚„„„éÓ§kkk‹D¢ž={¶/++ëׯŸŠŠÊÓ§Oµ´´(&ƒQ'ðÞ‹/ÜÜ܆quumÝ› Ã4662 ÓÜÜüçŸÒ  Õ ¼wìØ±¢¢"•5kÖ´9UVV&ùP^^.÷\ ÈPÀ{~~~ ÃØÙÙ :´Í©ÒÒRɇææf9§ņê~KIIÉÎÎfÆÕÕµýÙ‚‚ɇ>}úÈ5(:T'𛯯/Ã0êêêVVVíÏ …BÉT't-T'ðØ“'OBCC†yÿý÷{ôèÑþ ))) è©© 8PÞá@¡áALà±úúz†alllÄbq›³eee’ëÆÆÆjjjòâ¨xìÒ¥K’_|ñÅí 4Hrvâĉô2‚b¨øŠeÙ7n0 £££“‘‘!Ú|aÓ¦Mááá ÃLŸ>B>Ph¨Nà«;wîTTT0 3eÊ”aƵÿ‚äÑàÁƒ?øàƒ6§òóóãââòóó{ôè1räÈY³f >\™Aa`Â|UXX(ù`aaÑþìüqïÞ=†aÜÝÝ»uëÖr¼¡¡aíÚµkÖ¬©¯¯Ÿ?¾®®îO?ý4jÔ(ÚÚZù$€Q'ðÕ“'O$ŒÛŸ•lù¡ªª*yF³…——×[o½•””$ùÇ>ø`õêÕvvvþþþ•••'NœqjPu_µTç»ï¾Ûþl@@Ã0ööö­—%‰D¢ÀÀÀ™3g¶þf=|}}ÁÉ“'/^¼(ËÈ 8PÀW’M¿Aß¾}Ûœº|ùò;w†Y½zuëã©©©ÏŸ?·´´‰D­5JWW—a˜«W¯Ê64( T'ðÕÛo¿Í0Œ–––ªjÛëNþþþ ÃL˜0¡Í½õ¡C‡ª¨¨ôîÝ»wïÞm~ˆ¶¶6Ã0ÅÅÅ2L ×:¯$3ñîÝ»·9.‰Î;§¦¦ØfÅÒøñãE"‘¦¦f›GšššîÞ½Ë0̘1cdœªøÊÜÜ\CC£²²²Íq//¯ÆÆFƒö?ªe|kgΜyñâE¯^½/^,“¬ p0a¾êÑ£‡¥¥eMMMë½8###O:åââòå—_JùóTTT|ùå—ݺu;tèv )¡:Ç|||ÔÕÕ[^=”‘‘±lÙ²yóæ·¸¨C,Ë.]º´¸¸844ô£>’eXP(˜°™ššúùùmß¾½¸¸¸¤¤$<<|÷îÝ+W®”þgX¿~}BBBddd›K/‡×ºï544$$$hjjš™™I¿C˲k×®½xñbDDD‡WE^Õ ÊˆeYÂÂÂÐÐЖ7e%''»¸¸Ðͼ€ ;(–e%“ú .´^š˜˜øàÁz¹€OP \š››%Oµoݺµå™¢æææêêêãÇ]'e† ;(‘æææåË—ÿúë¯ÿô…¼¼> stream x¥K¯kIR…çûWxÜÞOÛCºÅ‰A«k€ Ð…’@]ƒ¦ôÏç[+"ó¸êBºRÕ9aGìÏŒLûüáöÛÛn¿úÍ×Û·?ÞÖø÷Ço·ÿ^Û~»¶óöÿzûñö¸_·Óû¶Ûo~Ç‹¿ûÍmÝ®ûyÞž¯ûyûéöz¼ï¯k[—øý÷·õɫȈó— üþ¶çx%ñ+û~ŒWâ—ůë>^É_ê•·áçñ‹_9Ÿëx%~)i×9½’¿˜ç¹?OþâW~‡¾O^{òô]ò·k]ïÇyCÝ]"ó¿?ñV©˜¿õk/)ׯÅo~mÙv‰®×ò·âÛޒܯÅoõÚ~Ì2ã·¥_{Ï2÷ø­^;bJfþV¯Iæ’¿õkç,óŒß~“?è_øÍ¿Ý~ýÞòx<ŽÛßX‰x‰ÿ½¸ÓºüðÓíW?ü°Þ¸Ú?Þþâv»ýåí‡ç]¼ûo~ø÷º­pß&îå;ÜÛOäëóq;A¡'~Ûú‰Ï›µ|ºïGýo€îÛëÿ¡æñx~<û{jþÒ¯Oîùò?,ñy]Ïž¹n ¯«v_ ô=îa '?†–/úõÏ ôÕ“Öz\³3ô³–?Õ`î¿ÈýÕ—_Zc=œÌ÷g°ÿbûóýž¾íÛüôÿƒèéÛë»àÿ'û¾¿ç§÷Âÿ™K·¿¿€ÿûw—î8®ÿÏÒï/à¿·të+“ÖëF*8O#žRÈßýóŸn?þã_üéÿÒ®ºl·ÿ¼ýÃmó¿‚ÿ_\3)ÈxÞŸ*’ëv?6¼ç<ûkÛÞTŽßeU¥úFU]y>žërž×ýýæ-JÓ¯ûãýÛó¾¿vRÛ ðÒJäïyÝI#Ôó í¼ˆ¬×ýù~>¡\÷K¾P6=æ ßy?œðYzRÔ®»ùŒSÏkéü B%Hš(_õûF{ñ¢¾¯Û[+uÜ×õ|ÅbQó7ª†hçãÚã]¦œ÷uS÷Í.*îŽÎZâ§¼L”÷Fšeåÿa½?WªøÄ´ÞwZ$wyQדÐnÌG¥àýþÜxúô즤^àk¶qÿÒQÔ­'õ”ÞëóÀXj¾×}?^{8‰Þó"ÁÒ°ì¯÷¢7òó¹FO"£nå¥eg› À)Â+t<°½Ã«öe}ž÷×NN, lçX{©»|çýqbh%¼(Ïðª-$%ŸaÊ [:Žò ¹ P‰`¦ÌÚݾ-?&ˆ÷û`!ÎûuÐCHg Fú¿?öU¢ú÷ë"ZxòyWK7E¨Œ ù†c éå…à†‹¦«ΡŸÒEp>ßê´°Í©©7îOšN-Ïã 7|¡\/V®Ø–k%¯=©£ß‚v¾ÞêMÉ›Þù$·¾OÖ÷ å¼NµGßëŽa%Cx¦ç#Ç\ RkÑdÏëuÌOÊR Tl„Âíooÿ^{µØƒ±Uy¬ŸWµûH"™RØŽÝ´ƒX„Â~÷m%£îd£÷ë8nÝê·ÛZ¯kß)wd¹iøÀ…^¼¶ïä¯H9Nì¾®Ïe{?î¯s½ÄözÞ×7r·Cš>©Xùµ_çmߨ•= žóbUßÛegy_zœ‚l=h‚öíÀ“Õ0´çê?·“.Eæ“4þ¾hžX½a§²©ú½Wš]™X"-ëgEË7"ƒr"TĨµO“=oRŸÊѱ+ 2 s6vÅw±À ÂöÂ\¤¾óŸh‡÷”€‰B†×cNó-âÛ¨ƒø¢ ©¤Ï”BÀ"$_á_I?÷ûŽPSxOá|?ÒÝmÖúÁ¶1µFkÍ®€^& ùGŠM|hj½½VkýPû€Ö›¢>´6eÙˆðDQ‹|—Z+»…ôAIHj¾ÄÉjMÒÕy³l‚¦|ê§|@KœZk4 8TÇaBØúX©§=QÀ¸`­ñˆxñØÈ(h½ V (Êm£­ ­#ṙÍB냌Ò% ©ù'¾5¤Ós„€­ ʧ~Òz¿vk]‹ù´ÓZ—©¥Ì9øì,¬=ah­ËYv">–íe8<ü('ƒ/ú:LuXú2(çO¾Â)¾’^®1˜² œƒ­•¬´ä¤£‹Ö64uû5S¨¹Šë‰N*mF‘ZŸ gÙËY&ŠMEÒ >­V†î+¤Ï”B`W8ÅgW<™–ÉÖ *¦ü‚~²õIúL­G\SâôYq=QyJ­O²’–ävV\ŸkXƒÜUq-õÃf40ͧ‚Ù¬âZKbŠãzâ븞¤;Š'MùÔ/´¦ü„Ödý€C\Ÿ»µÞU"" JXƒ4=øÚÖ'±ZïjSתVé,¦°ÊÖzW·]«ewü2âúÔ6GëPÔ|öÉoQ Sú•¶U!”Oý¤5ÍËÁ"1ŃÂ?ASæÀ±í¥õ ¨*› >ˆÐã©Ç›õ ½¡Ú91h‚¸^ªñEyÑåôÅ®úªxÇK‹DyXú2( ù §žWÒ)k±H)ËÀ9ø~¤ÝñZÐ%”Öá•9œ ­ëKk°â£a·Í.Ò@Øš.?%m=Qü˜Ã|¬V´ú²ìaé¥"™Í §øJú•®ªB`Ê/è¶fQ4­\Õk™=´î¸ž(Žëcðu|äˆtЊk¬X¶ŽëƒHÿŒk¬0ÕYq=Q×_Çõ$ÝQVË6[É©¡õy8c¯dç°uQvCŽë‰ïe=[zSŒà6øŒS«ÕÒi¡cÙ‚AùÔ/<œP Ðìî:®ÉÏ¡õñr2ÚÅ kk>zMkÍF5µ>^™ñˆ*}¦àG^\õ¨ÅÇùU€frfg”D€¤â3NÅuK§ÛLgiƒò©_jÍ J~nÃÃÉ©ikš-Ùú¶ Jx8Au3_z¸â𔕶¦¥ÈamÒÖƒò°­)­õ+A«DÀŽMiÍמª•Oék]LY&œÍG½¦úÇõp6»ðTÛÚ¹d¢8ßL|•˜ hÚg³ Oe›(•‹qu=˜ÕbðR¶v®œ(…×Èz]8Å×Ò»&ÎoÎ)›u·1Ùº{µµMõ¯ÎÜÖÕ_Í£mÖ=‚ÚÇX6 Z…¡»™ï S•­G—R 4_ÚL«ÕÒËÖÁ ¸‰jýäáM m›!êõE7k[{S3Q¼©™øz}ÑuËAi½¿¾X’´µ)ºvP6›øœÃ5vйèwbýrâeâó¦ ­[:íD¼} hÊÏô ­ñæÐZó­öpg3N‰ã™·‹Ú’Êì*q5³šòTT ­uá!m¡õDqVâ,¡}Õ´&c’¾054¥^㔇—tš‡Ôº˜²(6¿êZS,‚ÊŒ¿µ¦úhmWµÒ1±K -fâj>²`E2´Öô/µ¦Ì„ÖŶÞÍ'Oek µ±—ô‰ÒØõ…ÖS|%4*Ë@` È?õ“Ö +ïO-†*¶õÉ&pßLA™›†MûàÄמz²¡ Â 뙎t’ óÑA`7±®Œíw6^,&¨ŒÖjïüJO‡Øi¾“f G”ý{<P>µ“ÎÚ ¥¥é[­3£ý0Ô¢þ0,]”›úÊ€5ø(°~ñâN‡–>زǢMן}âCÿ´tK”F|`2Nö™–ªJ`P>õ ­+(µ_(­+(wj=(µ½¨ ÔV¨´® <ðÝÔº‚r¢Ô~qâ« Ôü0×´‚r ¨¤Ó8Ѻ¥³Ê±lG%ílLqÒ™ø4?r¿¶Ó…•³‡Ì&†Öç T`¾e§d–£¢, qg’LÐÔŒÝÅýèÌÇâFPÐZã³´~# ¼^ãÄÁ[:[½x»Š“,šå˜ò©_ä2^к—Ö ¦"'…ÖEY´Í\×à= ‘Z°@D§ÖÅåQS¯Ö…§ÄIzS #´nœä2KUu$AS>õ‹\Fº²Ö^L¦fŒ!iµu0%¦>i櫱8kÏŒ9µ®qºŽ7dëåh ³ÜD?ñqO µ®a¶nx ùÀdœz^JgÎU›—F0(Ÿú…Ö®f‹"¨<¼jóA-Kg³³ª Ö¹<ܵdÎfgÕÓ‰R{ˆ‰¯j³rD®©) *U­'Z·t¶FéÏU­u¢aJ–Õ¡Ÿ´~/z¯rÈQ(ÅJ©õD1®â[ö*‡œ¯1lÍU‚ðäá׃â@ú—î¸p7(µ~’àô„ ø §žWÒ«Ü$YëÂÉIdç~r•Öìv 0íq'ÂZ³KÞr~”t$«ÇØ`𑹴ecÇ…=ÂT\µàjN¹Ø8†³L”D¤‰¯tÒ›ÒJë©ç¥ôXynTéy€Üœ”OýdëƒåM[“-íá‚#®9¥OÐE!{D4ñõÞãØ]xöô¢õÁKk2½w# ðxÌ@GÆAˆ§e‡ô¦ó!©÷‹%ÈûÌ`P>õ“Öu÷½]L—œeØzPœGsZì‰Â D¶¢]L&ÞÑs‹Jɉà8²Š%ãN§Õ\+) ½¡Vå½~á£2sRÉnB=Ý\"Ù»eã1±`ãùƒš1³fÐT%­uœøÒåȵ¹\”®½²Oyȵ' írí§ù8ÑÆjéÚO²—z៻,Y‰ z¢¸=™ùHyÅÚ)Ý$‚: ÒÉtàT@—t é[Ž\8­nʧ~Òz« ØÆƒìÚ:Ô4¦ÉIÄã Ô¶ ø8YíM×ê2 ·ÚtpãÎÅÙä _ædyÓ!±AmL'ÝÒk‹Q˜œÔ^ígú…ÖlÒ#®4q+­I¡õJ>K­MaZè ¦F;ÉG5s`j|iLsÌ\6Æ^!`¢¸=Ñô³ùÜŒLÒ‹Òt¾(WlœhméLí,Á ÎÒOZׇ ¸2>.°pw\™A hó»mQ e؆¥2ƒÂä*ó¶ù89u(Y™Þ8_­·Æö¥ÒÛÌWÉlHO ¨ Y¦Å©çyß -JæG#`ƒÒ”Oý´‡®þs‰ÕG ¸ Ãa‰^Þ¹üÈõKnµ ·.‚WÌD)OÙäï7wöbò÷ä«Nø.ÎÍ”U« °ÄņÃíï7¢ZxRæç›1êi–­‰8eSç‰~~Qè?u“ÆÚM‡óm0p'QŽûlvZZvÿÚ‡7…ÅÐàcðѲp“JÅ[W tÀÕ$Îd³$_7¥ÚÓÍ| ¸ÒäÈÖR+N”BÐ|…SÏsΧÁÀyu€ßLá=Ÿú…Öåd›rÇz»âÆí …êp×{é݃¯‹°®¤Öì•¿†—Ê‚2‚ˆ7V¬·+é圅wuðN­V¹þÆ’¤w7‚AqðÖÁÖÔʰõîˆÁ¡ºª]ÚDq£6ñuÃ¥..—Ä”;ŽnÔô˜ŒÍѨ©+MÐÕ¨M”lÔÔ|n(ÑzHw[6!hʧ~¡5~¿Åå5mkíá4\/n*®´t·8xØX‡.n¥*‚×{¢]dÞwø7nÆa—àÈ©¦™“#z[q)*T¤ŸO=,eÓO7¥o.#WK¦þ©zOOoJjFÖo>rÇyŸ}P² UDOÇ\ñÑ8uD¤ÁôíŽß·ïˆè¸ Aâ˜ø¸µVŽóÌŒhSh.*¢›oŠè–^ñ[”1þ úÉÊqÙQ ¾’Ñ'»ÝÐz% Dñ-Ê•‹TlâsydH…ÖÈê‘!tYÙ †3z ’&>׫IzS ùN=/¥#ËÅ~ ”¬W3Í‘eØš›ï¥õÎ!¬´^V’Gh]”ÛJó’AÛ|¤Ž€Çцċ+;ÁL l{# MH,.ãÒæÃÕ#¢‡ô¦4óÉ8õõ DZ?ãšÍ©uGÕDq\kh«5ŧîɆ‡wŸ”p)Š]»uK6ÐÏ|¾`8â:?J¢}sÅõàq=¤W‚×…IîD¤µn<…Ö{¥Ô‘y/ÂÐ ³(¤V'¬ÁÇ›C]RíEôiÖpMÃ%÷"Hšø¼óÒk/2Ô^¤qêy)«Õî:‚¦üL¿Ðš0I­q¡wÖ¬ƒº/Ћ™;uôx¦àz|xDUë(¾ƒ{ÜåŽËct×Jð\àf¸ÀÒz™(®¸Ÿ„f¥.é¥$˜Œ­-=Ê¡Êu¸)ŸúE\»WcìÀ™zÑÑÔW/ZÛŠÑãÕ¦eêEcì¶înqlZª§œùªÒM•CW×e#2'Ù¬zQ]CÌe«^t¢d6úIk œØ3n­¾×èÀ5RãØš¡>¹˜+q4ЃÂÛõù«â‹[«ÜìÏñwy3DÙÙü3Ð8‹ÍÂɧ 'ŠJ˜>ÀN¾ø4bçËÈ*é¦Ìš‘©ñYKçE}Ο Hjʧ~¡5ƒøðpÕÊXL†† Þ3‡SS#,‹Â§†ªi>ÖÙq½Q”³rá7!`ChÐçLɃ¤Á‡¿eoéMix[ÀkœhméÔkÇõ@0(Ÿú…ÖíÔ>¤òÑ ´v6[}ƒ™“Ê¢Ü*é…­›/Ï}ôÙºškÜ裤"ïª|3QE—md}P‚-m]8Ѻ¥³? gÑø)½mP>õK·£õLNnwìÉÝDñt•yµÆìp+íI¡¶–©5Õ2¦‰òÊD?ñÙ™–ôrРùÆìpHÇè1;,LB›ò©Ÿ´ÖÅä0ÕV®®KÛ²n ‹ŸæˆÅœøÜèRIÈyñ¢>ƒ¶®»%DSÒfHšølk}šÃÒ›Rhcµ§ž—ž„,çð`P>õ ­¹ Z¯4VöpŠ 4YÂ'E¡‡÷Ã1øúˆR7®Ó¿x1µÆfZ6$5¥:KŒçÈ8xtf³!½)…€ü&xH2N´¶tPùÄdBДOýf­Vy1±µµf\å°œ(6gkÝ£S¡p®›†_´&›b­¿ðYÇxÖ:€ªXë¡…u&­5é‹e+¼«)©õÐOZóÑ`{8®ÎG!41;}ðCùÓg4ÉfƒÂ¶àPoV||hOdovæÁ·IЧ²™>P­éÃ¥´žùRkdµôZ‡F 4 x[ád§ÙÒuˆ¤Þ¬ð)´¦|ê¶®ðRI.¯ T˸6%>‰–‘7ø8¬}…å6Nÿ–ÅžªûÜåá„ú¼š¥—Ö ÒNãÔó?JbiëF0(¥ué¶fÉ3®+7bëÞ_Sìâü§(œö8ËžÍ7rñ™ûk¦ •±1xØzœ1zÎÅÎtqÝÒ¥ôþºpbkK§=Aåðsð{ªÐ—(õ©¹°õ °a¾Ž©ìl›Õ¥ÆØçE\£‹=œ½ )µÓœøØÉ„Öj}Rº) *ìÒà 'G}-G…€£)µ#|hM™¶®tÁÙ&µ8 ªÓK­Åiºø";—Ö$j@k‚ä:Å'/Së‰âfHY½ù²É@VI§x„PBkMµâ´néU.#ˆLŸëð3ýäáúuj]3 ´îN¬f)EaJâYÊÄדN}ú:µ&ãÄ4ôÊî)ϪLq½žf)úÞ¦ÔqHoŠ'¤ò­Ôºp¢µ¥ƒÊ““ AS>õ‹¸¦ÒjÍ&)l4?³(=¹åjHóµÖ'oÿªõ åð1S:93úÁGûªõ9(…À|Hê oIó¢ µžp6Ÿ*W4±ûPþG{a¦r5%eU.ïÖÉ(Z5í"TI¤õB¿ÞS…ë6QÌn·‰ò©_T®êH5³ #LéÊNÄuu¤ÌHk\b¾…­nÅg÷ƒ+aËV=#|M)OùÒŸ‘ÕÒËÃz¤N*—;Òǃ¹l…€IjSÊÃq]©Rjغ/G§Tl]”Å6w5š/¥ÊÖl/ÒÃùÚº/4OﯽjÁÇsÒÖY®‘Þ”h„«‡Ö“ç&â§O[7‚‰â3ñ¡µoš D9¸o£ÈOÓ¿ëz ýU:`3¥™y]Oa6kë IQ–¾žB?PQqù6Ê]„~z]jiˆßDÐÕbÂúÖó'J^OlJÞU9€úê“UqX᢬ ¥òà[iu#ª„DÅ¡dÑÌKçåÊšGò6…÷¸â|ás 6I7¥ É|…SNUÒi•¬t!˜(®ŒÅÇ!iL½žn‡Oë¾ ÞÛÚ‰RMYó¹)CZßÎMeR·ÃEÖíðù.O߯Žo™(Õ“5ßè­êêyo¢Çó»%3Êqåèk™fSñ2—i櫑ĪLc±j\Þ#]”¥»L“0"‰U!%‰5¥’i¦ù*‰ é•ÄA—鉥» `2ù Ê4¨šRIlðq¼Õ-Kƒ3î ¡uQH®¾:¯×€ÖsŸ8¡µ.5„€‰’­’zH¨+zHoJ#è–¬pêy)=$šò3ýdkÍ|cÉu f[ïÔJ¡H­MÁf}Ù¿ùrÚG”éN„<ßc­³Af˜0(n£Uœlk}àÀZ—ôA)¨/xH2Nžgéá!` àí¦4ÎæCkßc3ä^ [× ±UGÒÚVOŸVßmåë7 ½ïŒÅh/m²ik²).<3K™Zë2„2¥.…ˆ‚¤BPwâ§V¹¤sk u4’FS2Õýdk.&ØÖÜ¢´­7—ÆžvЉb'.>Úû1uÕaS£Ñ,zdÊAq4óe‘AGÎ5BkM1r‚â+œŒF[:U7Þ®™… ©)Ÿú…Ö´a* ÚJk·ßlÓ<¬ÒD"|^ÛPãj¾{éo¾H–Õ !l­‘`RªÖÖÑ>¢B‚néƒRªmoœhmélC=›4¥qö˜ [׬n¥0–Öd¥ÐqÅè Ú”C¥bŧez²K¾H¾L=eŒ±—)~ø¾‚Hå·tS&ÉÇGãDkKç#ÑuäQ&ŠwâCkVU  [³®6Ì´Ò¦”bækd³Ï€ 4²þ¥u _imMAR#h>ÿ ¾~ñ{xϧ~áá|§oz8¸lMP¤Žy3—#¦i óá]N’ à#_dŽ•¸OeoгÙÌGB”‡#«¤›ÂHµ®³’ÞV8y^K'ÕeˆWh›ò©_T®º4¥»mÖºnVõGØLàNœ³ y=/hMŸDëËN*¡s_ˆš(t:"Í ´|±j’ÝçRá‹«’½™CÅ%®úôgÿj¨¸èUÞS_\žå[ëü]¡[õ êGÊäî58ñ-O2…>¦}ðä4:™rt÷HjŠ£sŸ}t%}P {$ GïN¦#e (×8›ð& Fxk]KküÍ6óîZhŠ÷¿ÅÇʺBàxxe„·\$ GŸ(ö¬/|®6²[F -T¸¾nqd¤ÐۼƩç•ôJú WÀÂ7KB@8:-}„÷zk­[}Zm º(4K×Ebµô¹€ûQ“âѦ#‰Ae˜(nÇ¿ð¹?†t·ãY$à5N=¯¤³ Šð.ñ!2S>õ‹¤ÆÖ$µ®Ó#hºŸâÛ½Ò¦,œz؃ox8‘Zw½ÃõRë¦ðƒÐ#iðñc@Ò¥˜C¥öT•IGVùó@ДOýÂÖ´!¡µpÊÖL9dªE_æX}ÖÒ.«/A1}³ø¦Æ”‰VhÍ<ÙÖþ¤’šâ@:'>‚>´Ò¥$ßÒ8±u}I_r’–mƒR8K¿°5u>a+гði>ж¾ñËVNé3¥põ*àÉ;âñ•tßÃXS~A¿Ðš}NjMå/­¹h›Z“¥5‰¢)‘ ùŽŒÁçô nI:¢+Ù³C²o'e9øÜ[¢—ç¤è£â©µ £|1Q”æKœZ­–®>F'¸Á |êZwÖRiU§õ•½cÉ{PbÉX_& ºU¾ì:îvî£s>ÉÜÙÛ’¯ÓåÌ×¹º¥7ÅX÷â3Nÿ!]>Z7‚A)œ¥_z¸³›¾'¡l]¹º](¿NOW#ˉõ=G©µ]]k_¹³B?„­'гw‡ˆÐ;{—ôðÔ4^9±¾±3à5N=¯¤Wˆ ¦‰…³ô“Ö:ûMô:[ëÓç2ñ-„é ƒ>H‚|í©:“UvÉá™ rRS¼¸|cF<˜ÕÒ©TêHÙÈ· gžððªÂ)¾ zŠ„,@ßg"'œÖ/´®M×IÒ,­k‹¥«ÿÍ—¿»Í:‰ôTlðuÍR‚ʉO§ÃhëÐÚ”(ÙñE9®U´bK×,%Vó%N­VnºN‹˜Á ¸ilý¤5_é—>«CÖÕÙ,’_–=(žóO|cċǥ־в\ønÚÚ¼£­ -æãÆÖº¤J"@Ró9­‰¯¤Ó§‡}e”×½)Ÿú…Ö•Jûæ1ZÓª„Ö}Cz¢ø†ôU|uÓ™µç{Æó™}úrˆËÌqgZ_‚6+>i] ·î_ó7vРø§øœàû>t#( ’€ß—Okæ¨xðw ø?㯸Ðò2Î? ’##þ®Æß×_qù|ëí¯Vþ·¯ìô–¾ýôU¨g„?°ñ÷ü ýEþXÏoo¿ý/ Öî| endstream endobj 5 0 obj 8851 endobj 2 0 obj << /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 823 625] >> endobj 6 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R /Cs2 8 0 R >> /Font << /TT1.0 9 0 R /Tc2.0 10 0 R >> >> endobj 11 0 obj << /Length 12 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >> stream x…UßoÛT>‰oR¤? XG‡ŠÅ¯US[¹­ÆI“¥íJ¥éØ*$ä:7‰©Û鶪O{7ü@ÙH§kk?ì<Ê»øÎí¾kktüqóÝ‹mÇ6°nÆ¶ÂøØ¯±-ümR;`zŠ–¡Êðv x#=\Ó% ëoàYÐÚRÚ±£¥êùÐ#&Á?È>ÌÒ¹áЪþ¢þ©n¨_¨Ôß;j„;¦$}*}+ý(}'}/ýLŠtYº"ý$]•¾‘.9»ï½Ÿ%Ø{¯_aÝŠ]hÕkŸ5'SNÊ{äå”ü¼ü²<°¹_“§ä½ðì öÍ ý½t ³jMµ{-ñ4%ׯTÅ„«tYÛŸ“¦R6ÈÆØô#§v\œå–Šx:žŠ'H‰ï‹OÄÇâ3·ž¼ø^ø&°¦õþ“0::àm,L%È3â:qVEô t›ÐÍ]~ߢI«vÖ6ÊWÙ¯ª¯) |ʸ2]ÕG‡Í4Ïå(6w¸½Â‹£$¾ƒ"ŽèAÞû¾EvÝ mî[D‡ÿÂ;ëVh[¨}íõ¿Ú†ðN|æ3¢‹õº½âç£Hä‘S:°ßûéKâÝt·Ñx€÷UÏ'D;7ÿ®7;_"ÿÑeó?Yqx endstream endobj 12 0 obj 1047 endobj 7 0 obj [ /ICCBased 11 0 R ] endobj 13 0 obj << /Length 14 0 R /N 1 /Alternate /DeviceGray /Filter /FlateDecode >> stream x…UMlUgתŠ´U+•'þZEi´ * ®:i"×ÍRm×ÏñÖ›Ýewí6QO¹T!® „z¨Z~ÔæÒ^ЍTTÈ©H­ ª8â›õÚY‡CÖzö÷æÍÌ›ùfÆKÔ}Ñð<»KÍ;¡_˜Ìξ<{Ltß .Ò¨‡ðfàeK¥ ÆŽëHþí|î}K)–ÜÜ˾:Ï6Ý¥Ë20¡uË-æD|ÿÝXÏU·©ºú$Ö~uB}NR‡I¨/¨ÔçÕ<¤ÃêþÈÆ‡í¼®çÁ7ޅצ§×¨žŒçÜŽúÏ{ç%ÿUËüæÍß:,ÝvÜsˆ«¹ksöÜ$GÈ­ëÿ³!“|];ûåöD„bU½xüfϵ³t$Y‹¨:åµHßNßI¯âûVz-é#ýCz Ÿ[”E½ìˆÙydÇʈëx0q€ˆê¨+G¿·#Ç؅бéGœ¹‘U€ ü ËZÄT²æ‰žèÈ—sgWœs;<ïć̫|½x¯HK}úÇú/úúwú¯úªþÐÏÑ´ú¤Õ%Q÷)o)Ÿ)_)—”Ï•ë$”+ÊŠrY¹ª|¤|ݧ®(—à…u[=×ì±vfšq1ܱAÄk3o,mEp gë™Kä¶ñ†Î~nߥÔvjjyíaíqmBëÕöi´mÚ Ö€6ªíÆÉÎvߨq5y¶’=kÑlÄf³’UüúˆÒÀg=.žS‹f·E§#‚¨fàÿÓÊs…¹H½‚ÞµÔ]ê€:ÏQV݇I!ž´ÌH&ŸÉ’Èôf†3™ÃŒ}sÊDf7N‡ñ=ÒΈY1“:yÉ„sÚd{}^ø_‰{‰½4€mìd(ÏàE”s½ßš«†bPןY¼"¥sÌþ>aضˆŽáË@ú Yî'~ÿ²ÑG£÷jjëu³î7š2J¥¾&ú"jˆê endstream endobj 14 0 obj 1088 endobj 8 0 obj [ /ICCBased 13 0 R ] endobj 3 0 obj << /Type /Pages /MediaBox [0 0 823 625] /Count 1 /Kids [ 2 0 R ] >> endobj 15 0 obj << /Type /Catalog /Pages 3 0 R >> endobj 10 0 obj << /Type /Font /Subtype /Type1 /BaseFont /QHSUUA+Inconsolata /FontDescriptor 16 0 R /Encoding /MacRomanEncoding /FirstChar 32 /LastChar 120 /Widths [ 500 0 0 0 0 0 0 0 500 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 500 0 0 0 0 0 0 0 0 0 0 500 0 0 0 0 0 0 0 0 0 0 500 0 0 0 0 0 0 0 0 500 0 0 0 0 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 ] >> endobj 16 0 obj << /Type /FontDescriptor /FontName /QHSUUA+Inconsolata /Flags 32 /FontBBox [-33 -209 542 867] /ItalicAngle 0 /Ascent 834 /Descent -176 /CapHeight 632 /StemV 66 /Leading 90 /XHeight 468 /StemH 63 /AvgWidth 500 /MaxWidth 573 /FontFile3 17 0 R >> endobj 17 0 obj << /Length 18 0 R /Subtype /Type1C /Filter /FlateDecode >> stream xšyœÏUûÿ¯ÏìfÆ:33c7c_JÇVR*YRÝ(¥YB$é]d‰²s#éN´—D²T§,‘Ý`F†a˜Æ1Ÿó}^ﺿûŸûûøÎ¯Çë\ÛÙ®s½Ïûý™€„…H ˆëÖ¹{ÏžíêÝ;ä©¡CF üäÈ'U\·¨ŠU )ªZÖ$6ôר°i%ߺթhö¬ðª2´tU™TvCÕˆ¼rDÅ%¦§g4LÏHÿ0ÿA…¿€”h©)ÉÒPZI{¹G•…Ë $DBewàÁÀÀÐÊ¡ãBÏ…E„§‡/0¥J¹Àä]Æ…,ºÃ«àÜ€¶Ö¹ …À’÷€§6Óœë|UÀ.}Œ“~ =çýöÞ3âÜçG¼('ÕwÐnú¡îÜèîž“ç¾*Nf_Å_÷±à;Y:5^ëÑȃÖIÇ3@ÈgÆI`ŽÀžÓÐê:ÁS¬ÏH‚9…^×p!¾®çDj¡O¡ \0Q¥œtýÌs!ßa+8™X·uÅI÷E#«‚¯4ˆîù7à§éÀÈáâܘà»1–©”+F¸i„;Yže™J`àQÏÉŠD¡ïo>ѾWÅá0ÿ2ÒÄs®ÏdqÒåÑ”úÌ:ç’¥Bj´“ÇÇ|±¶©*½‡¸¡¥‚»=ó,+KšH'uûkܺù–ÙŒGZ¯4Pî~ã¤CIdUÇ{Njéäï 5š–Šg0€}M¶{Â8·>£øÉÖI‹XÅ=@­h6ï©Öm6z`‹ >¹P5cÁÜ–ÆIå—EVæŠu.û´0Š!²¯dZ”ss«£ß<’!Kÿ'm„“„w…PUÇbâÔ¸Ê×°«{ U§›qî⃄ªSÎ7ôérR|Šêìr¤G×Ù›=,ÑìFóÊ|šyµa.Ï:wª½Ñžß{ÅD0ÈnædÀA®“^¶txk÷4Ý$%ç.ßa4¼ ¿³±È*MB›9…1ºý—3‡ctæ>àöu€=s… iæÇWŽ#Ë_`‰8YeåüIO9#lWí¤ÒßÛURXéùÖ2öìUç9Õ®¬jÒûÐ[5é0X{—qÒ~„™6Í… ÛKø{Œ£ÿEqÁݯá6`’¸@ú2/œƒ7öˆvq…åu¯MCW÷5‚­>g¾â’uÁ]{Ĺž‹=ü¹-êûwk·oêj_»Jû­)Ö¹±°¦hwö2.pWÚK¾€¥Ïº“Ç–x.0'Ü«Ð*Ú*èbw[¡5¹xd¼q!ï]6ŒäÇ=ôê6ýÁNõ¤×ãåŒs;ã€3ó,™qìåÁ. †Y/rn\fªwBõK´uòe$8­ýwЦÿ‘û`óî÷œ´ü“ßÀ’ûK$s¨O$7S¡ÆIÙ²°Dú‘rY°?Éh–9KÙÆÐ¤^P±Ö"aDÛÄI\ XÞ%C%hF°[)4]àvGdÒvk=Þò6ìF*²°W=æÐÄâQ^P<$ÿ®bíGhËÕ…M{Ä8·»/æñ¬s[§ØiðÀÀQÖ¶?eY©·Ù>׋!¸)óIKØ×£=·d·q.q§u®ßb„ñ{ˆ×-I‡=:…€_`I¢?°y ÍnÅh\ïÊÏžæjºçïÙ…O)chŠ$×ò8<ž“ž—YÞó `õ‹M¹ý°G/ ‡ä®?¡i7<̆c´¥©p4o‡rô5¿Îp敵NJßöÞrRíTÍF},Âæ£…‘ÔIö|'r8Ðz'¹áLÊý6‰¯Nûß,¼Ôk ŠúÌ»ž>ûË·ÌÌȨ‰Ñ¡óÓ"ûÅ–˜ýkô®˜moÇÆîx;¶dÑ”ò+lˆ“ôY4_ö¦–.†HHË.¡Ï‡ ëövøîˆÈˆÇ#2#Ÿ¼56êRtNL Öľ{¢TL©Y¥G•iUfh™ŸÊ}75î»òÑåOUˆ«p¥b§Š âëÆ_©|¤JRÕÎÕ¶&ÖH|ά ×Z’m!ÍKšvÙ¯z‰,ÈÙGÅIÙé CtÝÎvQ,|‹[Ë<çÎ×n.6T»úd˜;;Ø:·ñ+·E4d*V]bP/xàT:F»ãS¨£^‡%å[ò%¡“ŠáèWNuü^nåYã\GMê¶Î:ÙÐ öi.ìÎN˜ô¬nh—È'Mê{Ϋ&Äû –3È­ˆÑéGaùä;±St6ùU ‹êª‹:»™da+ÖVj#²k¿2.wîyÅ‹#<qÀžäîV5àúMƒL'xñ ͋ӟÒ<Ó8›n8k5ßúÝÁY“N+Œ“»×Òc­ÑE»æ¬¡4-ã鬿ŸNÁz6Wt…ÁB¹-i×ø˜ôp';àµw(°›Ù¹“K`{ü'Ö‡Ý|ÕÓ~['–O1< úÃþÁ#@zWОҷXÙà%õg¯¤r*ìÀLûS±q®x¶²Q¥s †î֣зu³Ü•¾Á@Ým½•¹àÜ5T7ç %U/†Å[=6—½Ò;¡Òcã¡÷%b´æC÷]0ú¢…4†;V¹77ëó4c²0¬:½,WÀÖ;ïq‹™g¨jÝ‘5`¯%ýá&V[ §<¦8ºˆ°šÏò\Ð2ýCÞ¤žül©TËLµ”øKh·Ç²P1Œ¥¼¥ ¦qÇ¢¸ý#Æ©3…œ)ku·½ÜâzÁ>ò`ÅDË„§¶Ä<ûŸH7|ÛÝB˜ßs4³/ÒÌÿvx#²`;šÙû=½ÅØdñ÷T¯|çq\kR”·n'§;S¹ÃÞ§Ï»rÝêGŸ;§ˆ ´9ÃŽdt_Ô$ê“[€½Å/,öœ+_ýÄh:Y•á9¼Ácc[­õ˜Qû…†ë×DqÒú{TõŒnÇ•>8=ÐJô^‹zxIšƒfrõtG™±;]Ⱥ ü¡ð[.kë²V²@.s AJ_ô˜gUXêRô;n JÆîŠ( òÈ`í·Ý^Ì¥u„¡^DzE>¬Ò@ƒ\šÕÉ2¹c¼EÁ–ª›aM_U—ï*ÖïHà㩨âJøP[vhYè{„”ìÑ[Ô‘™Þ¼ÅÁŒt‚4.iI²íÈÌÂ|CÌÓr1ú¦ ëÏrt2‚½ †BüæH`ËC¬|»ßqjµŸæøé4o ·N^yhý•ÖM?;#÷"ÐRÌä …”=aõÊR¢„0¨ T¡÷z°?Œ“ðÅ4cµ¹—fh¼Êv ÙpYd-âÒá!ÏÎ6â9(7” å¯Šÿ(лb¯Ò&œØ* è>…ŒSГ6Ce‰@Hu•-ôí!¶^r$|?ËáÖl#^ÆñÁ›H¢]«=–ƒ$ !jë.–܉_W¦èŽ…á×~,‹Ú)颯K³Ü¯¨ç–•ó¸‹þ„`­&yL…4B¼þ‚%õ¢__Kêuè {x唉†cŽª{ˆGÝJÚ‘…ê´ºN ›¯]‹ú~ov/ñó× ¬ [»Å’¿¥a;Þƒ…fÞ>zÞíhïiZ²èîörôVñûKžs¿êÜNÖC¶éq`Ï:Ó¦+²Cqþ<Öx¼ë á k$[5ÍÖm2Nz17i´c“tËÏÂïÞl\ î~ؘ}–ÒôVyÏ WÓþëf=ô«ËÝ™'×},´”ÿÐäeàžt†(ûyÝv6C9Ñië;a[—fX–=Éâ˲?ÉdYë(KÂɤ6%D1_©¬&®*°¼¨´÷8Y°Â  >nÙûK2̲0Ùø—”ߎΜÎoô8Ý7,ÞÙ†5iKÓ „ê/Ìä†Z›ÜÁ]tÒ8åOœ ©2Õ’qt†^eÝ*vÇ­™!ÐO·©àÈg†›rûjÚ\Ááð2\[­5„ëïQµ/¡=; m£xXž¦rícÂŽ©6æyìrGbª©·oG°_ç¹¥°ü-|Zt;Æ·Æħj ïZyŠsa¡×PH{ d²²R§Bχ„[ŽË š¢Ïp[-»ô¤šãñ²ßOØÀ 1äÏ2Ãã};Fù1°ûOÒ«,øDÀ–a–—Ï”>0È«ký½Æ#@êMÄ5Û ·–õȶïIJI4²›#+»JØôb‘÷F»ã7´‰¯!»:Y­k†X•ÇX°Ñuô×› »§‡åìIëÕÕß2¨—Wª‰oÎXÈrdŬoŒ†³pÖ0MÕ?lar7GÁBNxÔž´!,ƽôйŸ˜°w¼½)¹Î%&c/²µûhr•¤òŸÝ%Ó(s.óª°Ž-ˆsp>&ñe‰s°±ÇåmŠá-ñ¬SM´¹u`÷NÒ9uSì´,U‚a·† §«úø¹@½—húYX]óm” Ìý‘pzÓ >?Y_ ]î.zr=}|ªK_ì>Ø™"ËÃùqÌ+Oó÷Å4÷ô#’Û=OÀ½× ç' Îü“žƒ]^K\ s”ehlj —kxZÎæá%íÙãüÍ^ãøùõPÒ»“îDUû“ÿÐãõÎjs¿—7ák¬ËB`àÏÀs$›´×õ5·=÷W„^dÊúÞN8Þ$œ„î3$hgmήéÂDêñ¼á¯ôì<9”¶|?)m <û‹e"wþœ!NÆUôè¢]3H›ÖøÇç O«æ±R‘š}Ù]¦Ô‰äµ2ÜrVàzà‚ð$¼ìŸÃàÜÏ'<ð£ xÕÐ"}s&NSvÊAÇ6\Ì$d ª¤§<òhºå¡ýìÖŒÞ4,Ë]ÈÆê´>݈]Ú°5úÃ#±5’A?`Ði*Ô[H¹Hn—ŦÇõ«å®ÖœóËE‹>†B¨ÙÝ ¯“}šQ†A[ç¶iܦggÿy_ö²A6Ú£yMC€Ý­¾Ñ.Eµ2˵ë€LSÞæ±÷äšÛ÷:¶uŽbtêg 7Z`¥€óm€ú•Êå-·`áMÃ6mó8¯Xîíwé °û:²ã«€ß7VúYµ>ò «èvgàÓð%Œ¶Påýª8.Zï1º±ÀƒÝy·å{ƒ¤MÇ¿àUôi…˜ïyY¸ÿ¯F¶÷Ae},܇âÆd;[kGOéàÎ.Â'´Òkí=vì Ã)ôÌß—â?÷¢ÞâÑC©g0—J PUM⛪ѫÞ«aå4ðj4ã>‚µ°=šòòØXaÛ’ÎuÑ÷ènYC>v ›wAÂ9ËRd¡¯¸ÏÐE Ôp Ê\ òK©ÚyÔAHÔ>â»¶H£t‚Á×å¯ÕÖ†X¼>¸ÛGjÌæï¥íõ.þҾܻCß•†¥•{g™#[H&nöHÕoð¯ø(,.«ü°åÎ;¯½Ö; «ÝHÐàRñ¼§¸ž®}‰´Ìs°Â§=rv,O—YšÂ²w01—«9ó×+—^P"üû¨$†‰C")«„t´†´^çQCÚÁš<ƒv_=KÉnƒlÇ%VÇý ÷ËJTYà Ù;ØUÞrÂõCûv¹èü–|øÝáDyX7òŸõ…t›þÝF°Å)À‹Ù–ëZ˜Çï`E4ß ‡¨…Ç`LäÉ^@¯ ²#µK»3¨:]Äç—êÀï~-ýPOÈì`ßwƒ­Í0ÈaÜñ ¼‡}-N†Þ¶L³íC”\!¥v‚'¶zdX à±t`h¡uî_£ yq•æÁ¦î·©‡ìS,O¼ K^m8nÇ` ?Ñ 4÷×±™`^ñ{«É!ú¼¡ú0ÚüJŸ‡Ûéd} g¶GÊ$'êðŽþ®˜3ÿrÇЭ„5?* ü%ÜÃôI¢+ eçb(í[j§mÖbBzI›=¶~«Àž¦O™_‡v›é8ñûk„¾FF¨ÙÃ÷"#G¥ršbË~D¦ &xWü*,:Yï«ú¯ ÎêÈÝQtÙ-ÐÉs°¬óCÉVÆh%á+Ãy "kqvlŸ¡÷¡:ÄV] ØÎ.ò‡¬xá;TZþö(aÓr• Rv7€ˆÏݬì![ª úÛ)Ú?ÞÍvIBá¾þ“e´¥,‰V –2Ã2î:z¤î.¥àš8\¸E î*²Š# /§+hVª¤Œ•’Ê9º ï 0þ÷ ¢—yU½×=BG_CúŸê8øW¶«h$C8TŸ!]áYã²ÆzTËPX¶oôñ!4Ñg޽ƒÀÍÒ<æ3D5®Cx' X‰üªðpDXôÃ`QAÿòèC‰xŒOÁSو嗘â_ßPfÌú/ßPñ×7”²Z|ƒ—´N*þh]à±óxëOúyæä›ôª7ós€ì\†!ÓOÇ.·©eÕ#å¯_ôßX(sŒÿ¡/®ù¦ðF˹Eu=ªK<ŸYóo}ä¾½ôºÇãoO™Ø0CÊa:Œ¤UaïÀivmšÃôø½R¬°T¸ æX>Þ¶2,ÈØðÉÆÉ [PÌ ›ø˜Ÿ£ëã9é“ôžFÑ|¬$–ËÈ 7…¡¹)º=Ë?…- ·Ò·as["[Q·>QÀèzþ/©Ûÿå¹@Ÿ ÄiÞ׋ägwf%çq{D«Rš6ÓtªÞÝž“i»1ûÅÉKmˆw¸®!{ºÄ¿œFuû;K¬D(çžÓ Ï™«šýõÍB]ÝT—w·å?¹20ñ£gw…-¹ üÚYwLªŒ®@çZqìTMó7ôè¹8UÓ‡›øÆUŽZ|)^R‘ǘïKSô~W傇ã몚£Ž/`0¬`¢ÂóÍ q‚Éx• òp›¥0Û"k€Ú,ðWO¿^¸õ•P}’ŠùÏë…XW Î`?ëô¡[qñjyhŽÁ2ÅêÛ´èýÉ:ö‚¡Ý¾:yv†Çg®64ýÿÐK¹Aà‰ ÷Õ‰ã¿4+%þOLSW¥C„A-µbœ7£kÀ*割º'úÖþ“»Vž/mcP]Á¡¦Nª^ä_Õ†6Û̱=kðÊ#ª»zYn¸ðôâ¹ó½ñw—Š1-õ-ú‹;`eN E™Kɧ±ÌOóx.K.kžZó/jàoù˜Ÿ E$TxrÔ'Rðz!|Ïç€ÿZ£ÿeÇ7U"½¶Žã/õ›Y&Q£7‚ @ò†îÆx|[: «ÏÀ¤I 0ú~ú‰|àWár¯ çEGQ}‹)†{õ Ëjj°Eö vÛ¯pk‰á›Ø`¬ZiV.˜ƒÕ®â×>*¥êÈÒD—$Ø iÝ™Øò,e2æ;—x,~4ÚUYŒÁ­ŸnÀ% Ô¯ô35Úô=,«»å©´ 8Ó‚æ±ÝBIJ°œzsÒWVýMG«Ÿ;ÈâÊÓE(õ]N+¥²7õÏ×G7пÐåo©~çTKôü#›¦„Ÿ)G_ÿŸ–üÿ¿ûë?+ÝB=Z ¡¨ù&!fM5NÞž"ÿ?™þOG O=ƒÆ‚>–D:êƒÊ>€ùðÿŽæÿËQ³zÔ4bœzÿ÷£†¶Jÿr–žî±’YIËÂ{' ïvE ²WaÙºâ{~3À7 ¥ö|Ù `ó…= í63–´ ½‰^IЃWÚv"­8Ja5Írë‰x.Hˆß»1¿v^s·°)P0Ùm=dð(…Gå…~9Ø™ ¯q£ãè%yP½ÀðæHIÂ~ ±©þÛŽ$œÄ¿ð ª˜×`×ëÂÂØCûv¹²ÍH*)?_±ÌtA!P6UXn‘mFV&–f™]@¥ž4ã×öXÒËO Í!rôQKméLGúÒÅ¿ )»ã¢Ï>ò“pMî \ Ò>ƒî%ñ¥ùlóεùRÃú‚%M©Ô|Ú2Ùlá;æ ¡›“ä–_÷è1ÿÌËys†UlMCúæèv/Ö³6ªÿ¤°ZeDO¢f¨û½*wˆÖ5¬ ù˜ãíöN%>ÿ®I~»~™Ö¹ÆW4Ìɯ='³>×+ûº˜ f‰Þ»v‡7~Æ(O)Â|?GÂ7—ó#L½LT}8±*8Ï-ÆÈ™(™h¨u)ÄíÚ]XòpƒºôÐ&ñ¼fà1.ï ëé!é¶ú>&³²­\ÿ«þ08Îá1ÿþ.ý¸ endstream endobj 18 0 obj 8057 endobj 9 0 obj << /Type /Font /Subtype /TrueType /BaseFont /NUYZDR+LucidaGrande /FontDescriptor 19 0 R /Encoding /MacRomanEncoding /FirstChar 32 /LastChar 32 /Widths [ 316 ] >> endobj 19 0 obj << /Type /FontDescriptor /FontName /NUYZDR+LucidaGrande /Flags 32 /FontBBox [-1067 -737 1641 1162] /ItalicAngle 0 /Ascent 967 /Descent -211 /CapHeight 723 /StemV 103 /XHeight 530 /StemH 77 /AvgWidth -490 /MaxWidth 1640 /FontFile2 20 0 R >> endobj 20 0 obj << /Length 21 0 R /Length1 8924 /Filter /FlateDecode >> stream x½Z xSÕ–^{ŸôIÒ¤”¶ö„P@N¡<|´!}¤W¨`(EPH …‚•–7ÒˆjÀøà~êUœ{ç~ó¸ÊiZ¯é(¶£ƒŸÌ\ç"ã뎠^ߌÌå:^ñ»:dþ}ÎI ½½~̧3'Yûß{­½Ö^{íµwÎIÒ±qS Y(Bù–„ÚV‘vS+×…Úô¶ó[`ÉÊͲÞÎÉ$Jÿ媶ÕëôvÁ ‘eæêÛ·%õE?OkK(¬ËIè_Ý †ÞfWÇ·®ëت·_3oß°Ò+B;}]h«1>½¶¼>´®Eï?®8©mC{‡Ñjí-Fæ'2!.§-d¥)-M£Dig,31_¦ÉÓYú#qËË­î?0¦…«¯ó•?e?w~ógÖ|4³´þB»/^ðaÎ¥ç7Ÿ¯³8S!ÓJœVƒn-RjrÀl ˆS'¯'Æçp7ô>›»cLùÝ ü:0¯C£ ŒŽBfq¶—uÇJÊS8zÌ›o¡Ø±³ÐaÝQ¶£r‡´cgñ'ÁÚ¼ź6·o@qÛúBÇòõ·ñÛÖwn,éØT`³z-ŠUkP´´8h9Ür¢Ejiíº£¤¸½p{]±sˆ÷KMÒ<Œl;*5ÄÉ#UÇFåT÷'¥ªXŽQéÍ2WûjFISˆIÓ¤éX…Éÿ‹2Å^âJœ¿ßûRsåïõNŸU-0æš(¬ RP U~›YmT&O5*N—Q]lTrrµÊ‰X.*<· ÷jÞA>GhoEíVÔFñȺ $¡ÕˆV#q>‹›¨Êx08ƒOÁæÓ ¬–‚?•O•–Éq@^au?;Ï>ŠIJv̾$Æ~ÇþSh±³~nàøûT„}4?¢âÙG½£àzÍX0mF¹GˆØÃì fð!²)Š€À€bÀûÙƒ˜òÀšŒÚPF„€Ý;hRâlQ쀀c‡\ÝÛ))H°êX^QuMÏÊ5§l,WC“çÚo¾¯}_sÏ'%%Õ=.)O¦Úó1R^´¦±X«á©§Ï×ìkë‹ô öè;Ów®/«ïH¸ì³OMÊ½Ñ %º/]Ù‚Êó÷O›Q}ÿ}ê÷•ºªïÛÇ•}]™Êî»LÊ]b‰ÁÞȼùÂ~odNŽWVë8iª6®92ÖUÙÅ•Î]šUùNïÜê;ÑØK嫆 Óݘá^0öt¥+wß“­ÜlëŠtñ.V“--’š)GòI Q.neL —Õ,–næ“UrHc¤±d–¬’MÊš%‹”œ¼‚,’r°r8‘Ü’T r€¬ 3¹ù3üY~„Ìüiþü§À'ùSü0°øYx/äÏUÈcÀ~èô‚T¡ zô$è.¾›rø.Þ‰r'¿S”š¿›øv¾{ÅÆsyìZx·ç\"3»ÀŸý8Éséq}qÖÛè)Ðè4( '·…æ€:A•± Ø7ÅÐuÀ§|Ø´‹áG>Ȳ€ÒAŒÜèëfGÙKlãõ°ë>ËŽ0xøOda¯@~ 8ùËÀãÐy4(tA= gAëØz¶z!¶‚­.cËYPk¯Š.+«©e«h¨$±mvhm¶Ak#p,µƒÚ„EÐ*P´ TÁ¦•M`QNbWP›Ì”E¬œ<–²€ÙÁ)d£Q¦±t”œI(±…Eéù+¤Ê…„Õq½èj»ý*{Þ•vëL»y†=kº=}š]ª´ÓTû„‰9“&Z'+9Šuœ+g¼ËZZ–#—Y­¶\sVö(szF¦Y2¥™i3IžüIùeéÒ˜²2ëk§U’%V&Ý( H Éä`c-E%»m´%ÏT`yÐÁ*ܓݓÜÜãÝãܲ»Ôíp¹íî<·ÕåNwKnrûf25¯‘›kÕ|\T«ÎTã’ܤÎPÕ,ßRc÷ÀUywœQ³jêŽs@^Ý’¥þ8+â.G¿˜·Úìº/ÐéVeݪk‘_€g¡_•»ã6jö÷pVÔk}¨Sm@«†Ñ-26 Î•ǨQµPu¸j•áW»`´whpQÖ3i‚Wì ©Þ`ýE¶¢pØ«^ð†âŒ»†“‡K²í¸ŒfœïôÆùv˜á»F6“Ò‹K ¼qét•|¢kG;KÉF¨´w€É´r¸T¼c"W; TE<4¸¤ÐÜn×t©˜R–’Ü$^2È%Ó6l ­v…ÕùEQ‹T’$©`XÀâl§ì][gwê°K‡N":Ü¥ÃnîÖáºtØ£Ã^ºu¸W€13Ü•\«q¹[‡ët˜­Ã<:ÔèP«Cõ:xuhÐáG7Ì­½'Kd¿¯©¶QÍlù–ª%.4^Cãj4Ì®ZJW¨OF¯Qy²ÔdôÒ4›Ä%ÞÓÊÏ’õ ›Z軂÷}.ñì%Èô}ŒÝc„5qmâ@âK V*HÔ$~œø|D³»»è4¤ãÔGÏÐãt õcôõÓßÒG¨¿ŠÚ3ô­€öÏè'Ôüzš¦à œcj›MÂ;Oçé«¡yÀá×ðòðpæŸm’(Av*1ŽvÒN¾‰ÿ–6áõ,þ‚_Òs êIíxþ=ÆÎÒ ö"­Â|º)Lp_âßÓŽS¡´<L‡E& ¹%?m£°ôDâ÷Èk†ªG¿ÏÒC®ïê·c'¯~Úϲiâ6OæQmR0Ãó˜ÃJÌe7^‡°½xíĸ.í™^/ZI¿3IÏÖd¥‰ïp%>mÕªÇD¼Œý€6c7MÁãœ5Q†¼¹>Ñ’Ø–øIâ(²A¬þϬ@ë¯é;VÐ-tÿìDkÚ7Ñ<6–YèIؾJ%U»JÒ"ÇÅ•ôÏdDÑØ[ðR¿×&kì >˜ÏÓkô Å5ž ƒ¥âÐü^B>ø> _Kèý>ÖrXx~±Ï2jFîáBÎÆ|N%m L{KÛûÆw7âŸØûǤ—uEýº¬½Ž•ÔwC7¢± ñX‰•=¯í±~ǰjO#×’²›RÒWµµýgÓ áEbVbbÿÏt3mླྀa¹z݇JÕ~n2“‹è›’ ­|Ÿ¼ß‰=tŒb°‹n¥–!œaáñ&¡™v·ŽcÕ~‰ñvàµs„NýÈïcˆÓvZH5´ëx û£{8ŒˆŸd2Öç œb#]!Ø=UÙ ­’ŒU©2D¼F¸ÒÎêÌLb&d~*w“]õÜM¶†àì4‰Þeyȇè]äÄ3ô<Î’Õ‚‹,Ö¯ÿÝí¦õ4Ùx‘ÇÓ4÷z÷µ³ª«®¹úª+gΘ>­rê” eò“&N(ïç”ËJÇŽq”.´äçåÚ¬9ó¨ì¬ÌŒô4“„ûù V¤Õù½kÕ⺠> ë]6Y5/87¿R¥<‡Ó•+Ϭ L1z©iŠJùjîùÈSPÓ•á]¨R¹í '”ç;d¯j*ÇÛ5/V'5ù.ÛÛŽ”<³jIßét¨¼ï¹á=/$‡U›|4Î\•|~AñćU`R•3€²É¯–&›¸ÁÉ~ì¨Áan.`Q[¹¸®^¥‚2¨’]t;WExS'áָ܆šf*UVð…ÊòUfŸ) B¨©!ÞðZ—7¼ /ÆôœQ§•£MþÜ™§Ssw" ý=£²ë\u-Ù˜nšÁ žìQàŒ ,K[3ÏfZ…›½³pÇiAøò„»^AkUϾ *®zÄ ’ü‹<$ï¿TDPÓ;ºi5¦©¦×©ºòÕRiŸÜS1Ý;þAÅv…C·øU)§zH*÷¶6«c}KÀ‚ `«,–»^+ÄâÉÞV9жèD骇êP~¸µ%(Ò„]õeÕù÷:x$ñïõª¹ŠjºeûoRÔ[´FÍht¯¬Æ£È%R§èƒ$(šR!G½.ŒcÞµµbÅ*S˦eãܰ¶8ž}!Y¬X‹˜áÚŸÌgÔ¦š¿rbu°>лCXP8¸VLe-4M9º¯E›ê~mjÈWqÛ)H("ûi1´—ø½­./âi ˆ€@_*®ëtªÅŠPŒF½ÂÅPÞ‹Èà]Œ›u¸¡7°' ƒ?uª§YjÖÖ#zBõƒet€Ä„uP=Áú@@LJ_5£|oÚT—F3ÊÕÅæüȧT46ù½õ";Ñ“×ù¯;[ä8‹:ô’lV„>Ñʳ"HB²ÈÕ¸PÏ‚VQ›õ Œ¨+®FÍêëEŽ×¡ÛàjF£ .¹!Œ†â‰È —lsE{Ìæh›7(k;ŸÿwûjÃþ€j ¶²YXd‘o ¸ƒÏ_¸T,OƒÜï9.g•Ù Ózœ#‹}†ŒGÞ‹}µ}Ž›q"9äq¼Äq*8T[•ئðd±û`%†ð†µû¹Ü!vŠ(÷®YdÈáÄZˆso¡Á…§Sì¡}q­@C,ôëm™V8bä©T°vA!LJì‹…$’”¤Ôƒ.¬U‘xÌÖrâÏå4ÎóT>Gs]yrµ8ÌáÞsÃê`3æøu•š‰ˆiË_ç—\tA;$QËVð‘àVG+š¢ˆ NɨÍ%Ÿp©6EM«ó:ÜÙ–‹’¥’Á°(ÒÔvÂuœ‰C” l*s«¬Pl+¡Š0âÐ]aJQöFƒFö]:?t½Ã­©}¤ÏWLa°¹°oz&C¾T·‚\ÀD 6ù]HóhÔÅ<Œ6¾áÎðŒ8 LÜgt.íþÀërºDäõêÄ=yJá·ÇïŽð²”ßÐ\o—iþ@]N„W\V„W¦<á0|^)"Ü2r„U>á;b|iH=zH=#„tÕ®þ…Wkà^«Òµ?PHo»œÞ~Y!]—òtHH×Ãçu"¤FéÿEÒ¶ ‰ðßá)¿ád;¼Ý¨E¸ãŠð¦Ë‰ðæËŠð–”§C"¼>oÞöÿáí—D?l2âú3µþñƒI:ˆðó`’#ê28xBÂ7xág’ *x>›HPåëo¾®Ó§9s¹å(ž ¿õH‘o#iô yLhâíJTá9u¤KÈõoF~hƒáŸ”O´`q`I}“ræ•k¡m ­kÝzÑË“0.ÁHÕ™æ9ýã+‚‰ endstream endobj 21 0 obj 4756 endobj 22 0 obj (Mac OS X 10.7.3 Quartz PDFContext) endobj 23 0 obj (D:20120313173130Z00'00') endobj 1 0 obj << /Producer 22 0 R /CreationDate 23 0 R /ModDate 23 0 R >> endobj xref 0 24 0000000000 65535 f 0000025978 00000 n 0000008967 00000 n 0000011651 00000 n 0000000022 00000 n 0000008947 00000 n 0000009071 00000 n 0000010366 00000 n 0000011615 00000 n 0000020584 00000 n 0000011784 00000 n 0000009195 00000 n 0000010345 00000 n 0000010402 00000 n 0000011594 00000 n 0000011734 00000 n 0000012153 00000 n 0000012413 00000 n 0000020563 00000 n 0000020761 00000 n 0000021017 00000 n 0000025863 00000 n 0000025884 00000 n 0000025936 00000 n trailer << /Size 24 /Root 15 0 R /Info 1 0 R /ID [ <966053be7474dc9d91ba0bfca44d19e2> <966053be7474dc9d91ba0bfca44d19e2> ] >> startxref 26053 %%EOF pymc-2.2+ds/docs/_images/reject.png000066400000000000000000001204761204033704200172520ustar00rootroot00000000000000‰PNG  IHDR7q§L ©iCCPICC ProfileH‰•—P“ÙÇï÷¥7Z Ò ½wRB  U°’B !;"®ÀZPÁŠ®ˆ(¸@Ö‚X°"Ø ºAe],ˆŠÊû€G|ïÍÛyóÎÌÉýåÌ™î¹ßwgþ€Ü̉2`2…RqT°}^B"× `  ”˜°9322üm|| ‰õ®í„Öß÷ý×Påò$ H„“¹N&Â'‘Ü͉¥ bºI®T4Áy«‹‘ "\:Áü)Þ;ÁÉS|r²'&Êá«àÉl¶˜éR§çpøˆéÂB®@ÙaoN*›‹0’À&33k‚7!l‘ü/:üÓLVh²Ù|OÍ2øD”Á^òÇÿŽÌ Ùôoè#I–¤G‡!«rfyv`ô4§òXáÓ,’úEM³@ÊŠQôÈBb§Y–Ëœæô¬0E¿0yN„B_âŸ8Íù©1ñÓÌåN³8+JÑ/ɉüÑï?gšÓØ¡‘ÓÌOÎ2ɼŒà¨{ŽTìS˜1G1KŠ8HÑÓü˜Wš¢`äPô ‚XŠyÅ!?ô3"šbY”âxÂX…&— 8[R ð€$ƒ,¤€€H€ùÆÈã–òò¤ùg‰–ˆüT)‰Ü ž %äØÙÐÀÄ›z„ïi“w¢]ÿQËnÀ½)òÔØÆœ~ õãšñ»©÷ôl'G&Ιª¡'>0€ˆÜ]u …¼!ÆÀØ'à ,‡_Ã#(€"¡h(C”-ŠòGE Q)(1jªUŽªFÕ£ZPí¨»(9jõESÑt´-Ú‚ŽEsÐÙèèRt%úº} }݃FÇP0ºkŒ†…™‡ácr1E˜rÌAÌ)ÌeÌ}Læ#‹¥aͱnØl6 »[ŠÝ…mÀ¶b»°½Ø§…³Æyá"plœW„Û;‚;»ƒëÃ}“ðx'|>/ÄàËñ‡ñçðwðýø1‚ Á”àAˆ p K -„Û„>ÂQ•hNô"ÆÓˆ«‰Äzâeb7ñ=‰D2"¹“æ’¤U¤ Ò1ÒURé3YlEö'/ ËÈÈ5äVòcò{ …bFñ¥$R¤” ”ZÊEÊsÊ'%ª’K‰«´R©J©QéŽÒe‚²©2Sy‘r¾r¹ò åÛÊC*3¶Ê •*•Ó*UFT©ªŽªª™ª¥ª‡U¯©¨áÔÌÔÕ¸j…jûÕ.ªõRQTcª?•C]C=@½LíSǪ›«³ÔÓÔKÔªw¨k¨iÌÔˆÓÈÓ¨Ò8«!§¡hf4-ƒ¶‘vœö€öe†Þ æ ÞŒõ3êgÜ™1ª©£é«ÉÓ,Ölм¯ùE‹®¨•®µY«Ië™6ZÛJ{®v®öníËÚC:ê:ž:bã:Ota]+Ý(Ý¥ºûuoêŽèéëë‰ôvè]ÔÒ§éûê§éoÕ?§?h@5ð6l58oðŠ®AgÒ3èôKôaC]ÃC™á>ÃÃ1#s£X£££gÆDc†qŠñVã6ãa“Ù&ËLêLž˜L¦©¦ÛMÛMGÍÌÍâÍÖ™5™ ˜kš³ÌóÍëÌ»-(>ÙÕ÷,±– ËtË]–V°•‹UªU•ÕmkØÚÕZ`½ËºËcãn#´©¶yhK¶eÚæØÖÙöØÑìÂí ìšìÞØ›Ø'Úo¶o·ÿîàâápÀá©£šc¨cc‹ã;'+'ŽS•Ó=gŠsóJçfç·3­gòfîžùÈ…ê2ÛeK›Ë7W7W±k½ë ›‰[’ÛN·‡ uF$£”qÕãîç¾ÒýŒûgW©Çq¿2 âÕ »/ n Á„„…lyÈÒcqXµ¬áP·Ðå¡—ÂÈaÑa•a/­ÂÅá-³áÙ¡³·Ìîžc:G8§)D°"¶D<‹4ÌŽüm.vnäܪ¹/££–EµGS£GŽþã³1æi¬E¬,¶-N9nA\mÜh|@|Y¼|žý¼åón$h'šq‰q‰GæÎß6¿oË‚¢š/Ì[xm‘ö¢ŒEg+/f/>‘„IŠO:œô•Á®f$³’w&sü9Û9¯¹¾Ü­ÜAž¯Œ×Ÿâ•R–2À÷âoá¦ú¤–§ ü•‚·i!i{ÒFÓ#ÒkÒÇ3â32ñ™I™§…jÂtá¥,ý¬¼¬.‘µ¨H$ÏöÈÞ–=,”@’…’f©:bfnÊ,dke=9Þ9U9ŸrãrO䩿 ón.±Z²~I~Pþ/KÑK9KÛ–.[½¬g9sù¾Њäm+W®ì[¼êÐjâêôÕ·  Ê >¬‰_ÓR¨W¸ª°wmðÚº"¥"qÑÃužëöü„þIðSÇzçõ;Ö/æ_/q()/ùZÊ)½þ³ãÏ?oHÙбÑuãîMØMÂM6ûl>T¦Z–_Ö»eö–Æ­ô­Å[?l[¼íZùÌò=Û‰ÛeÛåáÍ;LvlÚñµ2µò~•_UÃNÝëwŽîâÛwwý½=%{¾ìì}´/x_cµYuù~ìþœý/Ähÿ…ñKíAíƒ%¿Õk䇢]ªu«­=¬{xc\'«<²àHçÑ€£Íõ¶õûh %ÇÀ1Ù±W¿&ýúàxØñ¶Œõ'MOîúÌøÜþ%þKÿXîWÜ׊o–ßZ¾‡}ïϱÅìI+€BNIà] ”Ä;t@TšòÀ“MùöIÇS>y2\¨ñ váˆGÙ¤)Âdd°s1¾vvVä?C’âì4¥EFœæÓøø{=p-|íÿvÙìcZ³§¼÷D`‘$eæöô[ׇªÁÆ?mþÄïkD IDATxœìÝyXTeûðï3â†+c*H¥å–•cb.YšØ¢eJ™V–ö–f½©-XZꋾeF‹úf?ÍJËdLmÑ23\Ê´„rÉ}5ÑÜf``îß#GTÀ3gÎ÷s]\uÏa¹e™y¾çyÎs”ˆˆˆˆˆˆˆ ΢wDDDDDDþÀpCDDDDDAᆈˆˆˆˆ‚à †""""" 7DDDDD~”™™‰Õ«Wë݆)1ÜùÑ£>ŠŽ;bÕªUz·b:!z7@DDDDLкuk´oß^ïVLGñ&žDDDDD ¸,ˆˆˆˆÈºví ¥/^¬w+¦ÃpCDDDDDAᆈˆˆˆÈ”R^ýQönLìÝwßÕ»"""""¿a¸1±_|Qˆˆˆü†»¥™˜RŠÓ¥DDDD48sCDDDDDAᆠiýúõøûï¿õnƒˆˆˆ¨€nݺA)…ï¿ÿ^ïVL‡á† '##mÚ´ÁÀõn…ˆˆˆˆHˆÞ Wxx8FމN:éÝ QÜ Z? 7d8J)$$$èÝ.K#""""ò#ÎÜè‡[A›˜Q·‚NMME«V­…””½Û!"""¢Á™2ž !"""¢Â0ÜùQLL ”RøöÛoõnÅtnÈp8sCDDDFÀ±JÙc¸!Ãâ‹[A“áÜtÓM 6DDD°¸ÊD?œ¹!""""¢ À­ M̨[A†37DDDDDnˆˆˆˆˆü¨gÏžPJá믿ֻÓa¸!ÃÙ¸q#”R¸ñÆõn…ˆˆˆˆà †2n¯HDDDŒcý0Üañ ƒˆˆˆˆÎÅ›x’áä !""" D_~ù¥Þ-˜ïscb¼Ï .K#""""ò£Þ½{C)…yóæéÝŠé0ÜQP`¸!""""ò#î–¦†""""" 7d8Û¶mƒR Mš4Ñ»"""¢ âÌMÙãVÐd8œê%""¢@6gν[0-ÎÜa1ÜѹnÈpxO""" d<ò”Røâ‹/ônÅtnÈp¸,ˆˆˆŒ€c•²ÇknÈp®½öZ>YQÀâ*ýp憈ˆˆˆˆ‚à ‘q ½~”ð»nZJ)þÑQÐàÌ †2œ½{÷B)…úõëëÝ Q}úôR IIIz·b: 7DDDDD¥€ËÿËà /Ò#"""¢Â0Üá0ÜQ ãXE? 7DDDDD¸´‰q+h"""" &œ¹!""""¢ ÀpCDDDDäG?þ8”Røì³ÏônÅtBôn øå ý‡ñþש …õšhük@Ô«TØûÅòÓÙê)ôjV䯰gù $g·C¿®×ù­k"""""£ Š™›é3 ÔýX}ô¼îtôU “ROèÒp FÜ Û=OãÃmNoÀ¨!1ˆ¼w* täÞ‚±-¬¸£ÿËèýÖ"¸‹ü5ÜHžÔýïi†ÏÏÃùß""""Ò¯m.{An€,ó1zÚº|¦ú>äèÐ÷.|2.0 Ç—OÅ{S—cûÜ¡èskTË÷އ1éÞf• Ÿ›ÏÌ8:±S¨Jè7{7¦°!mBotz~A1‚‘19N(¥¡w+DDDDämMe/HÂOòËãÎÎÞ¸SñÖÓŸëÚOŽc'æ˜øïžZ˜iØë=Ì•ïýR§>…!É@Ÿ))x£Wó⯬Tý¦®À” mB †ÏÛqÁwØív 0`·Û wV{ÇQa‚$ÜT<óßùxg¦oö&ýÓ©ø\;šŽbõŒ±è¬Ô™·ç'-?;Óqx5¶h¾c8göã0f<?ZôŠÃEîÇ{ö eÝÏ€]é°gÇlÙq à’;ï==°Ç»ó‡žâõ†3SÐÀ„ÞïcG!“UÙÙÙèÒ¥ âââ0mÚ4@\\ºté‚ììì"ÿëôÆpCDDDlÆŒ<þøãz·b>ާMb³A€>’âH‘€ &FÈÄ”Lq,*1Ceâô)24¾>_\""â’ùCm@Æ,sˆˆÈæY€ ˜•VŒ†Öú¾N!okçWDz1@†Ÿùzù¿Ÿ¼ãc ù|£G¾`_£G.ú¿OgR§N½[!"""¢Dá¦,[;KlÚ€=Zm^+}Î 7âÚ-Ë–¥‰çìGʬ>ØÆË¡¼‡\i¾`„>2Õ\‰ÑS$³Xy$óÐ!I›?Ü\æ§É¡CÙíÈ<çkû¤LŒ ZV]è ·ŸCËÄHôÄ”‡š6mzÁpÓ´iSyà¤gÏžÚû÷îÝ[~øa­Ž‹‹“G}T«{ì1yüñǵú‰'žýë_Z=pà@yúé§µúÙgŸ•ÿûßZ=dÈ:t¨V¿ôÒK¯Õ¯¼òŠ >\«_{í59r¤:tHHhh¨$$$hÇ_ýuyã7´züøñòÖ[oiõ;ï¼#ï¾û®VOš4Iþ÷¿ÿiõ| ÿ÷ÿ§Õ~ø¡L›6M«§OŸ.3fÌÐê™3gÊ矮Õv»]fÏž­ÕsçΕyóæiõ7ß|#óçÏ×êï¾ûN.\¨Õ?üðƒ,^¼X«—-[&Ë—/×ê•+WʪU«´ú矖5kÖhõºuëä·ß~ÓêÔÔTùý÷ßµ:--MÒÓÓµzÓ¦M²yóf­Þ¶m›lß¾]«wíÚ%»wïÖê}ûöÉþýûµÚétÊÁƒµúï¿ÿ–#GŽhõ±cÇäŸþÑê“'OÊéÓ§µ:++K²³³µ:77W¼^¯]ÿþý€|òÉ'z·b:Anb$Íã’ùÎÌÆŒY%"›%æÜp#""9´{»¤¥¬•µ)keúP›1ùfTާL9gà-‹çG’¢q¥M2%íøß'mJŒd³ë"ÿ¾âôãÙ.C± _V HU¯^ý‚áæÜ7Ç“¯ÎÎÎ.V}þÇ{““cª:77÷¢uqß¿°Z)%‹E«+T¨ +VÔêÐÐP©R¥ŠVW¯^]jÔ¨¡ÕµjÕ’+®¸B«ëÖ­+áááZ)W^y¥Vׯ__®¹æ­nÔ¨‘4nÜXDD¼^¯\wÝuÒ¬Y3íø7Þ(Í›7×ê–-[JTT”öþ­[·–6mÚhõ-·Ü"íÛ·×êŽ;Êí·ß®Õ;w–;î¸C«ï¾ûnéÒ¥‹Vß{ï½rß}÷iuLLŒÜÿýZýàƒJ¯^½´úᇖGyD«ûôé#}ûöÕê~ýúIÿþýµúÉ'Ÿ”§žzJ« $Ï<óŒV?÷Üs2xð`­~þùçå…^<ñññ2lØ0­1b„¼úê«Z=jÔ(m†Øëõʘ1cdìØ±ÚñqãÆÉ›o¾©Õ‰‰‰òöÛokõ{ï½'&LÐê÷ß_&Ož¬ÕS¦L‘©S§jõG}$ü±VϘ1C>ýôS­ž5k–$%%iõ_|!sæÌÑê/¿üR¾úê+­^°`|ûí·Zýý÷ßË¢E‹´úÇ”%K–hõòåËeÅŠZ½zõjùé§Ÿ´ú—_~‘µk×jõo¿ý&ëׯ×ê?þøC6lØ Õþù§lܸQ«·lÙ"ýõ—VïØ±CvîÜ©Õ{ö쑽{÷jµÃáhõÁƒåðáÃZ™™)GÕêãÇˉ'´úôéÓâr}¡òx<’““#DT8†ýQ¸‰–—ˆlŸuv&Ä•"Ñç„›C)³|3Þb$%_þðÈļc}æò‹Ó×ùá*¿¢„›âõ“)S¢!ˆ™.çGª:\0ÐtèÐA¾úê+ùòË/EÄ7Xûâ‹/ä‹/¾ß`uÖ¬Y2kÖ,­þôÓOµ™Œœœùøãå£>Òê)S¦È”)S|ÿGÞÿ}m¦ÄãñÈ„ ä½÷ÞÓêÄÄDILLÔêqãÆÉ¸qãDĞƎ+cÆŒÑêÑ£G˨Q£´zĈ2bÄ­6l˜6”••%/¼ð‚<ÿüóZýÜsÏÉsÏ=§Õƒ ’AƒiõSO=%O>ù¤ˆˆ¸ÝnéׯŸôë×O«ûôé#}úôÑêGyD›ér»ÝÒ«W/yðÁEDÄårILLŒÄÄÄhu·nݤ[·nZÝ¥K¹ûºsçÎÒ¹sgñ ,:vì(;vÔêöíÛË-·Ü¢Õ­[·–Ö­[kuË–-¥eË–""rêÔ)iÞ¼¹6?uê”4kÖL®»î:­nÔ¨‘4jÔH«4h 4߬˕W^)‘‘‘Z]·n]©[·®VתUKjÕª¥Õ5jÔÐÂÆ‰'$44TBCCµºB… R¡B­¶X,Z˜9qâD¾°Ãš5ëÒ«Ož<é÷º\¹rR¾|y­®T©’T®\Y««V­*ÕªUÓêš5kŠÕjÕê+®¸B[z|òäI‰ˆˆzõêiõUW]%W_}µV_sÍ5Ò°aC­nÒ¤‰4mÚT«¯¿þz¹á†DÄ÷üf³Ù䦛nÒêV­ZÉÍ7߬½Û¶m¥]»vÚñ[o½U:tè Õ·ß~»DGGkõwÞ)wÝu—VwíÚUî¹ç­¾ï¾û¤GZ}îJ‰S§NIï޽塇ßówll¬¶RâôéÓùVJœ>}:ßJ —Ë% jõ3Ï<£­”p¹\ùVJ¸\.yñÅ套^ßëÕË/¿¬­”p»ÝÚJ‰¼ú?ÿù¶RÂívËÿû_m¥DVVV¾•YYYùVJdeeÉĉeÒ¤IZ=yòdm¥Dvvv¾•ÙÙÙòÉ'ŸÈôéÓµú³Ï>ÓVJdggç[)áñxò­”ðx<òõ×_Ë7ß|£Õç®”ðx<ùVJäääÈÒ¥KeÙ²eZ½bÅ m¥DNNN¾•999²nÝ:ùõ×_EÄ7^JII‘ÔÔT­NKK“x@È´iÓò­”ÈÍÍ•­[·Ê¶mÛDÄw²çÜ•^¯7ßJ ¯×+ât:µúðáÃò÷ßKžÂVJœ:uJ«Ýn·deeiu°¯”®psþhþÜps|í™`ÓGæ¦l—ÌãÇÅåqɪñÑr~¸qm>wy›Mfm¾ðÌË¥ûºx¸I™â[–¶ö"ëÞŠÕ+Eb‰™RpYZrr²(¥´¡¼7¥”$''ã_FTú¼^¯äææjuVV–¸Ýn­>uꔜCeh4 i.Ïîù¾Ôgú9Aã¸ÌàÛŽyúÅ/Œ)Àµy–/µ_dC‘ec|ŸÀ¬Íù/n?yÁC‹Äò¦$&33SHXX˜Þ­QQ"&»¢ûŸp!•P;¬šÞÝø¸Ó1°² ˜¸êw¨]ìO±gù[hpLjb³ë=\WéÒ£”2ä0;†°°0Ô¬YGÕ»"¢Kr8ˆGrr2 ::‰‰‰ˆŒŒÔ¹3"* O=õ>úè#L›6 O>ù¤Þ혊EïÊ\¥j¨]»và¨Ô“wχ ÀŽuðüŒuÈ)òç`õ¤¾g‚M –9‹lˆˆ¨l8Øl6Øív8N8NØívØl68½Û#¢R ”CžD6:ó…›R¿Öí^…–ï;…"dþö93i™ß s½¢¤Qñ ƒˆŒ$>>™™™ÏÌÌD||¼¯à H¥ú0µØöJè5Ý át Q Ê[ŠVÜcDDT| 7ÁÀdÁ¦Fœµ!""¢€ÅU&úá²4"ÒÃá@\\"""¸¸8^‹@A#::ºDLjȸ¦N Á€ônÅtÌ·[iŒº[—¼‹­Ï¿&Ájµ"--»Iùwí*{ü'"*;œ¹!"]ñbë²Ã]»ô‰´´4ÄÆÆ"<<áááˆe°! bƒ ‚R S§NÕ»Óá57D¤+^l]v.$“’’tèÊ"##ùý%2!®){œ¹!Ã9}ú4”R¨Zµj±>Ž×uÙ1HQ°c¸!Ã*ÎÙ.Ç \¼Øšˆˆ‚ wKÓà NIž0x]GàJLL„Õj-ð¸ÕjEbb¢/I" t\eA—‹»¥™˜QwKs¹\ E¥J•àr¹Šô1p:… GFF†?[¤bâ^eƒ»v ‰ôÁç(ò†3j¸q»Ý¨\¹2à Q pà~q\é'..v»½Ðc±±±Ü”ƒŠ„ËÒÈp*Uª)r°¸‡(OÞ®]ÈÈÈ@RRìçàV"ýÓ¦'ÿþ÷¿¡”ÂäÉ“õnÅtnÈx]E0 ®Œ‚×X‘?1Ü)ð&zDD‡;YÒ¹‚q•…—ÿà ™—ãÑ¥ãà*q +˜VYäíìJeᆈˆèŒ`\—Ò¹¸Ê‚ü»¥™˜QwKËÉÉAùòåÇ£w;Dd¸£\ÙáN–Däo!z7@T\¼ë/•¦¼%¬Tú¢££/¸õ/—QIpYé‚Ë)X 2J)Lš4IïVL‡á† ‡37DDÁ×X‘¿qYà Qðà2@ F«è‡37d8y!x½^½[Ñð&tDDT|Ý *œ¹!ºLy7¡;÷^ v»‹/æÒ ""*€¯Á37úáVÐ&fÔ­ M\\Üwû‰år ""ʇ¯D¥‡áÆÄnüƒ÷i "¢âàëQéá57DDDDD~ô /@)…÷Þ{OïVL‡á† ©\¹rPJĦ»ÑoBGDDçãëFðã57úa¸!ºL¼ _7ˆJà R áM興¨8øºa0N1nM†HáàM興¨xøºÜòÆ)Tö¸[š‰y·´òåË#''!!ÌèDDDDÄeidP"Â`C—Ä»€™à ­¼»€Ûív8N8NØívØl6""*5Æ ƒR o¿ý¶Þ­˜à ­øøxdffx<33ñññ:tDDDfbÔåÿFÆpCDA+99¹DLjˆˆÈ˜nˆˆˆˆˆü(Ðvu5†2¤ÐÐP(¥àv»õn…ïNDDd.Ü ÚÄŒ¼thh(\.NŸ>Ê•+ëݨ¼ οîÆjµòfyDDDAˆ37dHœî¥¢à]À‰ˆˆÌ…ᆈ‚ZÞ]À322‘‘¤¤$""*ULJR o¾ù¦Þ­˜ï€H†Ä™›ÀvèÐ!¬[·жm[Ô©SGçŽü#77)))رcš6mŠ–-[j¿‹tù‚õ÷ƈø³ "£âÌ ÒÉ“'!"¨R¥ŠÞ­Ðy&Nœˆ  GèÑ£4h€‰'êÝÖeÛ¾};Ú·o¶mÛ"..­ZµBtt4öíÛ§wkA!XoŒˆ? ¢ËÇ“°úa¸!"¿™?>† —Ë¥=ær¹0tèPÌŸ?_ÇÎ.ÇãAÏž=ñ믿æ{|åÊ•xä‘Gàõzuê,8ëïñgADFÇpCD~3nܸ t .Dzzz¡ÇÖ¬YƒU«V•qGÁ%XoŒˆ? "2:†JHHЦK•RÚ[BB‚ΑÑmܸ±DÇÝ¥zß´iSuœ‚õ÷ƈø³ ò7Þx"‚áÇëÝŠé0ܘÐèÑ£µ5 "¢½=ZçÎÈè4hP¢cîR½×¯_¿l RÁú{cDüY‘Ñ1Ü!………A)…þùGïVèO<ñD‰Žº{ï½ááá…»æšk]Æ—`ý½1"þ,ˆüãµ×^ƒR ¯¿þºÞ­˜à w! ,C† Aß¾} <Þ·o_ 2D‡Žü#,, ³fÍBíÚµó=^¯^=Øív„††êÔYpÖß#âÏ‚ˆŒŽ÷¹!"¿±X,øì³ÏðÄO`ÅŠ€N:¡S§Nºöå;wÆÆ1oÞ>^[šÄÄÄ {žàó"gnÈÐŒΈ.„3ƒæÂY:º‘‘‘HJJBFF222”””ýÈÈH¤¥¥!66áááGlll@›7ÞxJ)¼úê«z·b:!z7@d4ÑÑѰÛí§Ç©´$&&bñâÅ…^8Ë™A""¢‹ãÌ QáÌ yp–Ž(x >"‚7ÞxCïVL‡[A›˜‘·‚&"2:noKD䜹!""ÒgéÌÛ€·ñãÇC)…W^yEïVL‡×Üé„×ï™·'*=œ¹!CjÔ¨”Rرc‡Þ­ ·~Ü Z? 7DDDDeˆÛ€•†2$ž!""¢@ÅqŠ~nÈø¤ADDFÅmÀƒ_||¯ÎÜQ‘q‡""" d 7DDDDD~Ä™ý0ÜQ‘q‡""" dJ)MK)eØ3 7Üp6mÚ„M›6¡Y³fz·cy œÝÕjå…°DDD¤;ÎÜ¡5œwø!""¢@ÆpC†Äµ¬úÉÛá'##HJJb°!"":Ç„  ”ÂóÏ?¯w+¦ÃpCDDDDDAᆠ‰37DDDDt>ÞÄ“ )==]ˆˆ Å“°úáÌ nmbFÞ šˆ(egg*T¨ s'DDæÂ™"""?ùóÏ?Ñ©S'T­ZU«VE§NðçŸêÝ‘i0ÜùÁÖ­[ѦM¬\¹+W®D›6m°uëV½Û#¢2ô¿ÿýJ) RSSaµZuꌈÈ<nLÌÈᆈ(?~ X±b ::£FBõêÕõmŒˆÈ$nLŒá†ˆˆˆÈÿ>øà<ûì³xæ™g0yòd½Û1^sCDDDDT x¹ì1ÜùQÞÆGTö¸4Q:pJðs†`ÝA`ß ãqÚw¬b9 R9 A5àz«B3+Ð9R!¢ _‰ˆÈ¸nÈÚµk‡uëÖaíÚµhÛ¶­ÞíPp8ˆGrr2ß…à‰‰‰ˆŒŒÔ¹³âùë¨ i›à›‚]Ç/ýþÛÿ–îÏ[6!h]è~ÂcM¬•tˆˆJ‚·¬Ð701#o(ÀpCþäp8`³Ù™™™ïq«ÕŠ´´´€8¹^Áœí‚©©‡Ï>Vh´W¸¶ºÂUUˆ*¾cÙ¹À©`ë1`s¦ å°`ù~Àë;ôo¦ðïæ ‘UrˆˆÈ8sC†Ä3"äOñññ‚ à»oI||<’’’tèêÒr¼‚ÙÛoÿ.Øyf–&¬"л‘Blc…¨Ú—^÷ݤ&p_ßûœÎ,Û|ºÅ‹÷“Óm¼¥0¤…By C6n(@D¦—·­¸Çô”¼_Ðf®Ϭô›faÀ'¶ö±àí[-hUGû‚ÖÐ…î×(Ì»§~~Ђ®UÈÊÆü&¸õK/~=È“ DDEñá‡B)…§Ÿ~ZïVL‡á† ‰37dVO žXæEÌ÷^lÿhZ˜q‡ÂÚ^ôjdAÅrþ™]i^KáÓ;-XxŸj[Ž]¿õbêŸ^¿|~""3à8¥ì1Ü!­Y³"‚[n¹EïV(DGG—èXYûb›­æx1o‡ jyàÍ[|¡¦gCK©m;Ú¡žÂ/½,lSÈññk’½påð›ˆˆà ™^bb"¬VkÇ­V+uè(¿“ÁÓ+¼x*Yp<¸¯ð[o žinA¹2¸¦b9…ÿ¶³à³;-¨ÌÞ&xà{/Nd3à†+LôÃpCD¦‰´´4ÄÆÆ"<<ááሠˆÒ6ü-èð¥I[UB€£’î.§Ëf÷_«°ü~ "«kœ@…^Íâ 7nmbFÞ šÈ ¾Ùé[æÎlµ€wZШ†þ;–í=!è¾Ð‹]Ç­À÷Ý-¨YQÿ¾ˆˆˆ8sCD€ÞJõâ±¥¾`Ó¿™Â²û#ØÀÕÕ~ènAãšÀŸ™À#‹½ÈÊå‰*;‡qqqˆˆˆ@DDâââàp8ôn‹ˆà Òí·ß¥V¯^­w+D~••+xr¹ÿ]/°(`|{…‰ü· š¿DTQø¶›õÎ,Q,œ .%ëׯÇ]wÝ…°°04jÔñññ8}ú´Þmé&僚v»N§N§v»6›‡ÆÇ ¥ž|òI½[1†24¦(˜œÎ<ôƒs¶ûvCû¢‹ƒn ܧézU¾ºÇ‚ꀯw FýÊ¿G[ºt)Úµk‡¥K—âØ±cرcÞ~ûmtìØGïötq©›î‘¹î«&‘‰ü“-ˆYèE²¨ ,‰± ËÕ5[S˜ë­ Iw[b&nÌßÉ€ãODnnnÇSRRðÁèБþŒxÓ]"*; 7dHÜb‘‚É·à¾ï¼Xw¸ª*ðCw n°~°ÉÓ±žÂëí|ýZéŶcü»ô‡½{÷bçÎ<¾bÅŠ²k†ˆŠ…ãý0Ü!ñIƒ‚Åß.A×^løhTX܆²q@q ºÑ‚ž×*œô-åTzŒrÓ]º4n A¥[A›·‚&Ò×±,A·ï¼H?\oÜkAPã›<'=‚Ž_y±ý`ˆMal;ž?»\ 6¼àìÍĉ1xðà2îHy œÝÕj ˆ{SQÑðçH¥…¯ëׯG­Zµpÿý÷c̘1 Õ»5¢‹ˆˆ€Óé,ôXxx8222ʸ#ÿš1cú÷ï~ýúaúôéz·c*!z7@Dd&¹^A¿¥¾`Š3÷Š ®ÁÿËQ ‹öÒŽãÖ Æ¶ ®_Y»ùæ›±dÉ½Û "2.K#"*C/­,Ú X+ßÞgAƒêÁ7ð±(Lêhð~ºàÏ#œ!&¢ü‚}cn|¤†2¤»îº J),]ºTïVˆŠìÝ?¼øx“ b9`v šÔ ¾`“'ª¶ÂÀr¼ÚËx"Ê'11V«µÀãV«‰‰‰:tDÁ‚ᆈ¨ ÌÙîÅ~(w¶ ]xð›<#oVˆÖ’¶1Ü1q»âÒìCpæF?ÜPÀÄŒ¼¡ÀÝwß%K–àÇÄ]wÝ¥w;Dµ&CÐ}¡/ðæ- Ï47Ïy¥ÙÛ¼,~Ø‚*å'Ô9ÄÇÇkwµŽŽFbbbP ¬È?¸]1‘ñ˜ç–‚J0žáÙÁà´÷„àÑ%¾`óÌæ 6ðp#…Vµçiའó÷š7hµÛíp:p:°Ûí°Ùlü»# ·+&2s½Ê(´‚ÓéÁ#‹½8âî¼xã–À™µ(+J)Œ»Å÷R3iƒ ãT`Z©(òfõŠ{ŒhæÌ™PJá±ÇÓ»Óa¸!CZ¼x1Dwß}·Þ­øZÁGD00Ù‹?3F5€éwZ`Qæ 7Ð.\áþkܹÀøÔÀ7´Qi Æ&FÁpC8Ð >ãSówÕ+øvF«QÁœÁ&Ïk7+XðÙ_‚]ÇùbOÆìÛ#†""?[´GðFŠog´éw÷–ÏEÕ¤¦B\c…/0.EÿpÃA+·+&2†¢ÀVðØ}Ü· Ú(ÜuƒMžWZ)”·_ll=¦oÀá •Š"Ø·+¦ÒÃeiúáVÐ&fä­ ƒÑ·å–º>Y¹‚;ç{±áo [À~w9½[ 8CW{ñÉfAlc…©Ñúž_ãï-Qða¸11#‡›ûî» .ÄÂ… qï½÷êÝŽ_u eô`æOƒWy1c‹àšêÀªž¼Î¦0{Nnší›Ùúýa Tç÷ˆˆˆü‡ËÒÈЌΠ‰¤¤$ddd ##III†ÜéÍ'i«/ØT,̼“ÁæBêWSx¸±B®Ö}oˆˆüÉn·C)…G}TïVL‡á† ‰kYwz6g †®öý.¾s«‚í ›‹yá&`Ö_çiþ Qðâ8¥ì1Ü]WŽàñe^¸s>M»ŽO«—Ò¤¦Bk€l/0åO¾ð‘ÿðU˜ ‰37Ãì;½ ÿE°å(и&ðömœ±)ªçl¾—Ÿé›§søwLDÁ…ãý0Ü!-X°"‚îÝ»ëÝŠé™yKÝ»ŸlT°3î° 4„ᦨÚÔUh[8š|þ_ü‰ˆÈ?¸[š‰y·4 ,FÝéírì;)¸užDzÄö o乢⚿SÐw©×VR¶À¢‰ˆèò0ܘà QÉäz÷|çÅZ'po}`vÞϦ$¼âÛz÷ à‹.ÜSŸá†ˆˆ.O5SâN "˜|;ŸFKÊ¢ž¼Áh¦môêÜ ‘ÿÌ™3J)<üðÃz·b:|U&"*†ÔÂñ©¾Ïi-¨U‰³ —£oS…J倥ûÿp&™ˆˆ.à RÏž=¡”Â×_­w+d"®ÁS˽ÈàßÍ:Öc°¹\az7ò}?ÞÄpCDÁ…ËÿËà ·X$=¼¶V°í Y0º ƒ dç &¥yñйxè‡\LJó";·x—OYšöù_·…&ò›ììl¼óÎ;èÞ½;ºwïŽwÞyÙÙÙz·e Фè&DŒ`Ù~Á´M‚òà£ÎT,Ç®SÁÝ ¼H?rö±ö ¾Ø&ø±‡UÊí{tÓ ­ë¿¾Þ)ˆkÂï-Ñå:uên»í6üñÇÚcß}÷>ÿüsüôÓO¨R¥ŠŽÝ•ÎÜ!qæ†ÊR¦[0h…ï‚÷×nVh^‹ƒoøïzÉlò¤ñ+ŽÇ¯ó}O?Û¿i"9rd¾`“ç?þÀÈ‘#uèÈ\z÷î Áœ9sônÅtnˆˆ.áÅŸÎÓ@»p`H ›< w_8ˆ\ìXaz6T¨¬qÛ¹±Ñe›?~‰Žà %$$h3J)í-!!AçΊnÞ¼y<øàƒz·BAîÛ]‚/wBC€;ñF“ç:šU²c…©Z^¡gCß÷væ_ 7D—+33³DÇÈ?¾üòK(¥Ð«W/½[1†=z´¶œKD´·Ñ£GëÜQ`9â ýÉ·ml[…ÕlÎUûÂÇZÕ)þçëÛÔ÷ýMÚ*Èñ2à]ŽÖ­[_ðX›6mʰ¢²ÅpCDtñ? »€Û"€'¯g°9_B[ ÛW¡œþÓ¦ø//íšԞïõCƒD&öæ›o"$¤à¾Q!!!7nœ™ ¯ Öà Q!¾Ý%˜wf9Ú·[¸­g!nºBaA7 Õ8ûX£À‚nÜtEɾ_]—·4Íë‰L+** K–,A“&M´Çš4i‚%K– **JÇΈJ·‚&":ϹËÑÆp9ÚEu¨§úp9dœòŒ¨ryß«ØÆ ÿùU°x/pð´ n(¿÷D%Õ©S'üõ×_8pà ^½z:wdœ¹ÑgnÈbcc¡”ÂìÙ³õn…‚йËÑžâr´"‰¨¢.;Ø@íÊ ]¯røb;DþP¯^=›2öÀ@DðÕW_éÝŠé0ÜcÑž³ËÑ&s9š.mâ{iš½•ᆈˆŠ‡á† ‰Ó½TNd ^8³mTk…k¸Mw]„UþÌ6fòoœˆŒç›o¾R <ð€Þ­˜à ÑÿùUà8´ª <}#ƒ^*”;{ÏÎÞ‘ñ$¬~nÈø¤Aþ¶Ö)øh“ ļ;oÖ©·Gû¾ÿs¶ ¼ü;'"¢"b¸!Cš5kDqqqz·BA ;WðÜ*/Àó-n°2Øè­m]…Õ€ŒÓÀšŒ‹¿¯Ãá@\\"""¸¸88޲i”ˆè"x¶ì1Ü‘é½ý»à¯c@ãÀ°(›@ñ`ó³7âp8`³Ù`·Ûát:át:a·Ûa³ÙpJ€A‘È?¸~”0Rš–RŠgÈô¶Üú¥/ðCw ÚGð)PlÊ´›ç…µ"°­¯å-6qqq°Ûí…~|ll,’’’J»Í ‘333ó=nµZ‘––†ÈÈH:#"*:ÎÜ‘i‰¯ö›'š)›s½Uáz+™,Û_øû$''_ðã/vŒ Š/l 33ñññ:tDDT| 7DdZ3ÿ¬uu* mlQï3KÓ¾ÚÁYæÒÆ Hä?ß}÷”RèÑ£‡Þ­˜à R¿~ý ”ÂgŸ}¦w+dPGÜ‚‘ë|æ7oQ¨Qá&=p&Ü,Ü-ÈÊ-p¢££/ø±;FDT¸ü¿ì1Ü¡ñIƒJêÕµ‚£Y@ç+^øT¨®­®Ðâ à„Xº¯àñÄÄDX­Ö[­V$&&–A‡ÁƒA‘ˆ‚_щÈtV$mT,¼{[`> 8%xb™fæ¢ÑÌ\<±Ì‹§Ìæ{^{fiÚ΂ÿþÈÈH¤¥¥!66áááGll,/€/E"ÿáýøô¢wD%Á' *©ì\ÁП¼€ø– ×V¼åhN n™çÅѬ³ÍÛ!X¶_ðK/ êU ¼žKÓ×*ŒþU°hÀ#¨’ÿßÉ]Ñü /(ÆÇÇkרDGG#11‘A‘ˆ ƒá† )ÂÃáà À€&ll;4® m˜!áµ3KæÎw4Ëwì“;³ïÒÒ ºBË+€ßÿöíšÖ­Þ/E"ÿèÖ­OÀê„÷¹11Þç¦äx?cÚ}\Ðf®î\àûû,¸­^`†„F3sqÈUø±:•í}Ë•mCà½?¼ý«àáF Ó:æRB³á " D|… *Þ˜^^ã 67Rl¨p=®ñý¼íd²k•­¼V1ðƒYiŠ9³kÚü]œ¹ÑOð]\ \lV 7D%ÀûAË»vŸn°oüpP¯ŠÂ/½,èÕP¡Neßu6½*Sî”v®û¯9{CÏ\/ DDTà Ò€ ”´iÓtùú¼„qì:.xoƒo üîm”³#Ô«¢ðÉlï[Ûû–Ã'w˜;Ø@Ó0…Æ5Ì,àg§ÞݘOðQ b¸!*Þ8Ð8†­ñ"+ˆm¬pK¸¹ÃA0èÞÀ÷3ü–KÓtÅ.M£":t(Nž5Q±¬u ælT,¼ÑŽço‚QˆE¡k}ÎÞQàâÌ~.ã•ÿÒ—'áùû;£|e+"4B³fÍЬY34j kåòhqÿó˜ñC:Nø¯_"¢ òŠ ~o¡-®®ÆY›`Õ­þÙzÏb±àöÛo¿àñN:•]3dJwÞy'DK–,Ñ»ÓQR‚H¹g]^k÷(>/pÄÒVàñL_5ý:Ô/Y—T*”R<£@AeÆf/¯\YHyÈ‚Ê! 7Áê”GÐà3/²sí}-¨]™?kÊoÛ¶mˆŠŠ*pÝM½zõ––†ZµjéÔ•¦bÎÜä`õ¤¾hpN°‰0‹ÖnFæqD6`ƒ<®LìN[…‰Ãûœy¯ùèß±:ýnvO¦õÜsÏA)…É“'ëÝ ˆ² ¿ùÂúëíl‚]•ò "°hOÒPA7FZZ|ðAÔ©S‘‘‘èׯ~ÿýw*uË–-ƒR wÞy§Þ­˜N±ÂÍ–¤gÑqÈ™X=«¶gbùÔ‘èÚö:„U«¤½_H¥0Ôoރߘ ס4L`$ºLZç¿îÉô8óDySGÜ@ûpàklÌ€KÓèR®¹æÌ›7Äþýû1}útÔ©SGï¶ÈxÍ~ŠnÜ;æ¡Ù£úŠÓ‘¹ü thvÉ«T»9OMÁª‰1€ùCÚá­Õ‡KÖ-Ñ|Ò síøGð €ñí¹‰€YÜs&Ü$;WŸ ˆˆ¨Èáæ0&=ÕÛ÷¿¶ñpLí‡KÇšs… ÃàÙ˜?Ô7ƒórÇ×ÎõiDä'¯®õÂãú4UhqgmÌ¢n¨ÂÍuw.°|¿ÞÝÅ“°ú)R¸qïIÁšd°aÑ¢P¯D_ªz$~…¡€±f÷P£’ã“åYé|¿¨ŒjÍ`c6÷\íû™ÏënˆˆÅÜ-íĉT«rY_Ð}ôN„ÔAíËüi·/¶ ÒWVåµ*T2÷6àu7DT2ÉÉÉ%:F¡Ø»¥Ø²Ï4‹ÁççUpK8°¸oxI—gçqÁM³½¨QØù˜å- ËDT4—»´ü×_EÛ¶mѦM¬[·®4[¥óð" ‡N ÞOó…í„6<ËN>Ný?{w_Eu÷qüs&! aKÀ…M¾TpAÑZ[µj[ U[žº´ÚÅ*µZ*¥ÒVªµVm]ªU+XE¬VÛê#î ¢la_ $„-a I ™óü1„Å,$!¹sçÎ÷ýzåõ’“œ{3÷ÌùÍïœß±Lžky·Ð»6Fg¦4d¥;PéÙÎÐ?V”À{…pN—–n­ˆÄŠìììãše¡ÂGþiÔbO‰6Þ”è0uêTŒ1L:Õï¦Ôj̘1M:fw/°”VÂÝad†ž°‹ØŒšå2+ß²µ ¶–Á¬|ïXaià _;Ñ»–^^¯†ˆH48¸ùüåÛi—ÖŽ!—ÞÉ‚m ßãF¤%Eë‘éÓ§“––VãxZZÓ§O÷¡EÑmýnË+-Ž_)k#Mžk)©¨y¼¤Â;×, ýÊg7Jû ‰=ÊÜø§a£ˆò%L¾äwtCÇ$Íf©Ovv6yyyŒ?žŒŒ 222?~¼"ÖáÎO,•.Lèmè§M/å ê©h=w¤ÜN†m½¬Ï¼-ÍÕ2‰V ŠRö¬ùÐÛ׿ÛOðÒo'P½gá{cê#‹¹ðW¿æâíÌ)‘„'"Ç;_7,–ì°ÌÊ·$ÆÁí#ØHó»øDÃýy–—×[My‘ˆ1bDTQbYƒ27Éí:pɹ#92„)ZøOùû}|¶KÓÔ$²‚ÜHÃLçpÍC—6xÊa£³ê¾ê;÷EZw#" nÊvïà¥P~ÄñV‰Õ¡Ž¦©Idýò—¿ÄZ˯ýk¿›"Çan‘åõЦÜ|’9Ú´‘†ÔÄšÇS½s uJ:d´† {aÑv8"Òò,X€1†áÇûÝ”ÐiPpÓ¶÷i|à‘o1îö,ù|å•ålÛZ@yi1åå{س§î¯r%wDä ¦ÌÚÜ8ØÐ1IÁ-+ÅðÑX‡±9†ôdHO†±9Þ±†”‚®fŒá¢ÊÞˆˆ„Aƒ7ñÌù&z]r_“ÑÝó‹ùÙ°Ô&¿4?mâ)~z}ƒeì]Ò’`É8‡¶ n¤å¼S`ùÚ«.½ÛÃüojƒXiY ,`øðá 6ŒùóçûÝœPið|²œ‹ÿÀŠÿôã7·^Ïßóÿ‹’ÿ-"£¬µüú/ksóP£ÀFZÜ™Ð1 ÖìòŠX î¨k.Öìµäï†åPRnÙ}â $ÄARœ— ìÚº¶…ÖñúûKËÒÚ`ÿ4j±L¿¯\ÇÓ_¹ŽGË÷@|+?4Ž‘?~‰»ß-à§£Ò¨¬cêÙHNV55ñ¼¸Î’·²R¼B"--Î1\r¢áñ–Ùù n‚n[™åƒÍÞº½¹[,+K`ß1§¿{ƒLôé#Ò '§ÃyÝ ]UÌD$f4©@R’¨´b·w %™øø$âëøiIIÊÛHóúÝï~Çí·ßÎm·ÝÆoû[¿›#PéZ¦}ê 2~>̤'¨!—çxÁÍ‹ë,SNñ»5ÒXkvZ^ùÌûúdkÍó’ womVj¢¡]TYØ_å>›öZ6î…{aÕNXµÓòÌjË 4¸°‡á[} =ÚÅ^ŸTPPÀ¤I“xë­·3f Ó§O×¾k-褓NRÖÆ'ÇUæ¬ë˜©<ÿüOèÛ5¹¹Ú#"1î™Õ–µ» §|»oì "$zžé |×íöª¦ í¤ë/ÚíÙo™½ÎòôJ˼#š¤8•§eFewôš†Ø_eY²>Ýjy³eÎ&XZ K‹-w/°œ ßíïpq/ãtäææR\\|èØÌ™3yíµ×´±´Ä¤ã nN|&c7WSDNsYƒi•å®ùÞßlòɆø8Hp8Æ›šöèrojš‚›èµn·å¡%–¿¯²‡¦›µmõð*ßÛµéëfâ ÃÓaxºáºAPQey·f­õ²zoÀÛ.9íড†ñ} ­ÜWMš4é¨À¦Zqq1“&MÒfÓ-dñâÅ :”!C†°hÑ"¿›* *-mÜÓ+,¥00 .ëÜÁ‚×å9Þu÷â:õÑhá6˄׫8éY—G–yÍ™ððÙ†5W:<<Æák'šf-g8¯«áá1«¿íð¿§z¶ƒüÝpã»–¡ÏºÌZë6Ûï‹´ê©h='TÚ}SDZÔÿm´ük½ek™åok,&p¨"‘4*2[Ãç{`ÞË)uFƒ%;,¿ùÔåߟ{ÿNpà›½ 76ôO‹ÜߨC¢áúA†kXžÏ·ü~¡eõN˜ø¦åáeUÜ5Êaxº®96=„õ27H·Þz+ÖZîºë.¿›"õ˜ôËåÿqùÛJË¿?‡ÒJhå@ÿ4¿[&aeŒáŠ^Þ ãk4èðÛç{,ßyÃåô¼À¦u<üxˆaù‡Ïr"Ø)Î1Œëí0ï ‡FNH†·À9ÿtùù‡.û*ƒsíŒ3¦IçD‚JÁˆ´ˆÿ|nyxYÍÀn|'¸S<$ø¾ÙÛ0¿°ÎRégKvï·Üñ±Ëð¸Ì^gIŠƒ–Œw¸óT‡ôÖÑ‘qŒáª~ ¿éð£\ƒcà¡¥–Q³\Þ/ Ƶ3}útÒÒj>QJKKcúôé>´H¤e«|Yhc”.•sýÛ.3V×}}­¿Ê¡cRt `$|N}¾Š%ðó¾Ú]×a$ÍXí2y®e{¹÷ïñ½ SN1d¥DÿßañvËõo»,;¸>ÿ框É#LÔWUS)h 7!¦àFZÒeÿ®âMuŸŸw…C¿ÔèHìºw‘˯æY.Ï1‚ ™ÂRËÄ9.½ž®¢×ÓULœãRXªGª^wóêg–=ûõÞ´¤²JËÔy.§½à6’¼êg¯]¸À •cøÅ‡_äÙæÁé/¸¼ijK—.ÅÃàÁÚ3%ÒÜH Ý{ï½c¸å–[ünŠÔáÆ\CZbíç&Ð7-¥°Ô[0+ß²µ ¶–Á¬|ú¶1œž åU* Ý’æYNÁåžE–.|·¿aþ7Æ÷ þðã´L×;œÛŠ+à’»<¾\ë åhš!yÁï]$ÔÔiD¯ŽI†¯t;úXRÜyªáƒƒØ<±ÂåôªÈ|¼ŠÑ³«øÇšèÈLžk)©¨y¼¤Â;'‡]Ù×»ŸZÙ¼ïKAA&L 33“ÌÌL&L˜@AAA³þŽhW^iùÅ\—ó_vY» ú§Â—8üñL‡ÔÄ`~þkÓ)ÙðÂW~<ÄPéÂOÞ·ÜòK• U„ž¶;ðö¹‘@RýøèW´Ï2{÷ß³¾bHomèŸêm˜D·~èò祇¯·EÛáš·,ù»\n=ωޭgjL}çÂèÒž†IXæmõÖƒôm†5`äææµ#üÌ™3yíµ×ÈËË Åîy[,ßÇeÍNp ütˆá¶á†„€~öÅ1†;O5ôOuùÑ»–G–Y J-OœãÔŒ›ŠHÃDÏYDbÊïZÊ«àâáË݆v2 lò¶Û£›#M_hY¿[ACµŽ7Œ=¸öæ©UÍó7œ4iÒQMµââb&MšÔ,¿#ZUº–;?qùòË^`Ó·¼y©Ã”Sœ˜ lŽ4¡Ã+9¤&«ŸÁ¥ÿvÙ¥õ\¡¥‡°þQp#¤Nã°hœ³q¯å‰LŽ¢¬FS½¿¹îë¬Ê‡EÑsŽÎª{Yß¹°ºêàÔ´™«-ša*Qu©ÝÆž º5;-_zÉeúB‹µð“!†÷/wÀ‚Çcd†áµ‹²RàÃ"øÊË.[÷EOÿ ‘3`À¬µ,[¶Ì濾NðGJ?ùÉO°Öò‡?üÁï¦øªz ÌÌ™3)**¢¨¨ˆ™3g’››ëk€s÷oñð½L(Ê=GÓ+œ6ÒZK!‡ÔDïœmxºa@l/÷ž¶Kã=½ÊåÌÙ. ¶A·6ðŸ¯9üúT'°™ÚãÕ/Õð—8ônËŠá‚W\¶(À‰7"S`Öí¶<³Êgà¶á±1¸9#³î×g`TFô¼Î¬ÃGcÆæÒ“!=ÆæxÇ‚°I¢¾ÛÏ{_Yvü"ƌӤsA´k¿åê7\nxDz¯¾ÑËðáX‡Óêù¼„E×6†×/q˜«wzN‘œPY±bÆ àwSBG›x†˜6ñ ¾ÌÌLŠŠŠj=—‘‘ÁæÍ›#Ü"øþÛ.Ϭ¶\Ù×ðàY±óü䋪ý|˜‰ª‚Òx{ö[ú>ã²÷Ìë0 ­éƒóÚ ¤¥¥ÅTAy[¼½”6ì…6­àÞ3 ãzësðE;Ê-_{Åei1ônÿþšCçÖ þÂ`åÊ•ôïߟ~ýú±bÅ ¿›*ê‰D¤Ùäï²<»ÆËÚL:)¶nàwŸæðÇ3 ƒ;BJ< íŽQ` Ú&Æ÷®ÎÞߟììlòòò?~<ddd0~üø˜ l¬µÜ·È+ñ¼a/ ;Þ¿ÜQ`S‡ŽI†]ä0¸#¬Ù¿êRR¡‡Š"-I¥ El̘1Ìœ9³Îs‘6}¡¥Êzû‡ôh[Á Àwû;|·¿ß­–pí@ã˽à|ê©–ö M¿~³³³™1cF3¶.:l/³\ó–ËœMÞ¿˜køÕ)†VÚ·^“ /_èð•—]V”ÀåÿqyùB‡6­ô¾Å2>òµH =ðÀcøáèwS|5}útÒÒÒjOKKcúôémËÚƒY›x~6L7m –¾©†³³a_%üm…#_ô~¡å´¼À¦cÌúŠÃoF: l¨:ÀéÞ>Ý ã_s©¨Òu&ÒÜH …ý‰H4Mùßׄ>†îm5à‘à¹a°wK|p‰e¿ž¸Ör×|—‹^u)Ú§g‡—;|¹›>ã•™bxéB‡ôdx§®{ˆþËúö틵–•+WúÝ”ÐÑ´4 ¤êt¯Dǘ5;-Ï­õ²6±¶ÖFÂãün†i^ùÞg×X®êîkyë>Ëÿ¼éòN¡Wîügà · 3Ä)[Ód=ÛyÎù/»Ì^géÚî~7%t܈ÈqY½Óò|¾—µ¹EY ¸Ëzz´…µ»àŸëÂܸÖòÛO].~ÕekŒÎò¦¡é¢Ïvs:;Ûpÿ™Þ{zó–×6„ïZi) n$~ðƒ`­åÁô»)¡Wµ¹²¯¡›²6pqŽá¦ƒÙ›ß|j©rÃ3è,Úg¹è—»x¯ù¶áÞ"xíËÒ2¾Ý×áçà ®…‰s\V•„çZiI nD¤ÉVï´<¿ÖÒJY‰!Wö5ôlçíKòÌêp 8ߨh9m–Ëû›¡skø×E· wp´¾±EÝ>ÂᲞ†=`ÜkÚ'–hú¼܈H“Ý5ßb«úº¶Ñ HbC¼c˜<»ž7߯tÉÞJ×rÇÇ.—ýÇe{9ŒÉö¦¡Î:þÏóæRËæÒØ}ïšËŸÏ6 éù»á;o¸¡ÊŠ´cR†–1FO¤ÉV•XNyÞ%ÞÅãº(¸‘b­åŒÙ.KvÀÔS 7 ½göX&Îq™·â üb„áæ¡æ¸«Q¾Whùñ{.kwyÿîÕþx¦Ã™Í0ŪM{-g½è²­ nløí¨Ø»ÞD"EŸi’»xY›«û6sŒ1L;Õ»EÞ½À²iol=zqåô¼À&;þó5‡[NrŽ;°Y´Ýrñ«‡ðŠ3\üªË¢í±õ6§.m Ϭ öÀÊb"ÍEÁÒ£>Š1†k¯½Ö濾ÒÊËì|K‚7U`#±iLÃ×{öUÂÏ>Œr½¥,7¼ãrõ.»öÃE=àñ#3šçs<åc—ÚfñUYïœÔmd†áw#½¿ÃÞqY½SN­[·c 999~7%tÜ„ÐÔ©S=3Æúš:uªÏ-“ ¨^ksu?C¶²6ÃîehÓ ^ù þóy°›ó¶xÙš§WY’âàÞ3 3¾Gjbó}†lkÚ9ñ\7ÈalŽaïøöÿ¹”ö5'â7!4eÊ”Ckm¬µ‡¾¦L™âsËNUHü³ªÄò⺃YUH“—™bøÅÁâ7¼ãR´/x}Îþ*ËÔy._~ÙeÝn”ï^æð½Í?HMlÚ99ìO£ };ÀÊøñ{Á»ÞÄ£qŠ܈H£L_x¸BZVŠ‚‰}?d8§ l/‡kÞtq4XY´Ý2úE—{Y¬…1¼ýu‡~©-óÙ½°GÝ?·¾srXJ+Ã3_vH‰‡çÖZžY­é|"¡àFIODü±v—eV¾%ÞáÐF‡"±ÎãcÒ“áB¸gaô÷;å•–_Ísó¢Ëòb¯bÙk;ÜyªCB\Ë}v'0 îXóøàŽ*¯-ÇÖ§ƒá÷gxï×-ï[ÖîŠþkNަqŠT :ÄT Zëú·]f¬¶\ÝÏð§Ñz6"áòvå’W]Œ—/lž½`ZÂ[›,?yßeýn0À÷¦œbHŽL{÷WYþ²Ìò~¡w9#Ëpý@Ó¢AU¬š8ÇeV¾eh'˜s©C+Gï¡È±(¸ 17Òëw[†ýÛ±ð›=Úé&+ásç'.ÓZÚ´òœéÑó9Ø^f¹í#Ë?ÖzýúÀ4¸´ÃÉQÔFiœÝû½"Ÿïå¦ÔC%‘cѧDDäžE–* ã{6Z¿aøf/¯šÕeÿvY²ÃÿDû«,.qö—¬õ*¡M=ÅðÞe l‚®]‚á¯ç8ĸ?Ïòæ&ÿ¯7i˜Ï?ÿc =zôð»)¡£àFDŽiÃËŒÕǨBš„›c 9ÛpiOÃÎýÞæ”+Šýp¾´Îròó.·}dÙ¹¾Ôæ]ápÓP‡xMaŠ §t>\±ïÚ·\¶—)À ­¹ñ‚9¦{Y*]¸"ÇÓ^& ·8Çð×s t‡åpÎ?]f­lE«w ,ç½TÅ•oxkkúv€ç¿â0û‚8eVcÐO‡ÎÌ‚­eðýwT=M¤> n$ž|òIŒ1|ç;ßñ»)1¯`¯åéUL¦A“@+ÇðÔ—¾ÑËPZ ß´Üô¾KEUË=¥µÖòÊg–1/VñµW]>Þ’à¾3 sÇ:œßMŸÏX嬨—š¯m€§V*À©‹‚ $¥{#ç‹-\¸,ÇЧƒO"Õâ ãpÿ™†Ä8øërËèÙ.¯~Ö¼ýÒŽrË_–ºœò¼Ë„×]æoƒŽIpÇɆÅã&pˆÓ´˜—•bøýéÞßù¶,›öêþÍ4NñO¼ß ‘èU´ÏòäJ¯cþ™ÖÚˆÔê;ýF¤[®~ÃeE ŒÝeH'¸m¸ÃW»ä4Æžý–w aæj—ÿn€ÔwmãUͺª_äJ;Kô¸¢—Ã?×Uñ¯Ïà†w\^º0Îï&IºvíªÀÆ' n$ôD$2þ¸ØRQ—œýÓ4’È*,µLžky÷à~)£³ ÓF²R¢ïZÔÑðáX‡¿­°Ü»È²x;Œ{Í¥cŒÉ6œÛÎÌ4d¦Pc¯’²JKÑ>X» Þ+´¼¿Ù²`¸»7ÇÀùÝà[}.ê „Ü}g:|PäòVüu¹Ëÿ Ð$‘#)¸‘Zm+³<¾â`ÖfXí7Ï >%X K-£f¹”T>6+ß2g“壱NT^c‰q†ë¾ÓßòÔJ˃K,ëv{íž•à}NÚ¶‚´$Hˆƒ­û`×þš?+Þ“Óᢆq½ [Gßëœl¸ï ‡«Þp™<×ò¥®–îmu}D›M›6ѵkWºtéÂÆýnN¨hÏÓ&žRŸ_Îuùcžå‚îðìù5§>Ô6øHM$jŸÕ;³×flŽáñsƒñ´:—·7ÉœM^6fGùá)fÕã £5ti#;ÎÌ2ŒÌ€Öšv&õøÎ.³×YÎÈ„W/rš4ýQZNAA]ºt!;;›M›6ùÝœPQæFDjØQnyt¹7°¼µŽ¬Íä¹¶F`PRá{ü\Ýh¥éª³=mrÚ{åÓ¯xøØžý–å°ß…ôdè¨ÏŠ4Þ=gÞÛly3<¼Ìrý ]G" ji"R‹ò,û*½yþ'Pû 3VŸ"‘Ö6ÁУW}P4UÇ$ÃÏô†q¿šgÙ°Gýn4ÑÚ`ÿ(¸‘£ìÚ8k3é$uâÑYuúë;'&õ0\žcØW 7 ½oD@Áˆ|Á#K-»÷ÃYYpJç¦ 05ø”ã5m¤!5±æñÔDxîehŸàmî9;_N´ÈÊÊÂZKAAßM 7HÏ>û,ÆÆïwSbJé˃KfmêXkSMƒOiIY)†Æ:ŒÍ1¤'{kSÆæ«ù‚ôÖ†;Oõ>?ûв³BÓ $Ü܈È!¯°—Ã)éÇξhð)--+ūжöÊ8Ö^ÇãçêÚ©ÍÕý £2`kÜñ±‚›hPTT„1†ÌÌL¿›:ª–&¤…zͯ¢Êò§¼†emªyƒO 6EDüdŒáþ3N{Áåo+-ãûXFe¨o–pRæFIÁMóûû*o—ôÁáünº)ŠˆIßTÃO‡z}÷ÞuÙ_¥ûc4Ð8%ò܈•®å‹T!MD$Èn9Éл=¬Ú A7S¼ IDATX¬AµŸ´©ªŒUHZÆ=QžYíòý·-½;À'W88ì” K-“çÚC{ìŒÎ2Li´FCDBåýB˯¸$ÆÁ¼+Nl§>Ð[¶l!##ƒÎ;STTäwsBEÁMˆ)¸×ZN~ÎeÍ.xølÃø>ÁËÜ–ZFÍr)©8úxj"*p "¡sýÛ.3V[¾Ò žûJœß͉¨àbD¤Y½´Öì‚îmáŠ^Á &ϵ5€’ H˜üúC»øïøïõ. nDBî÷ ½Mßnbˆw‚ÜTOEkì9‘X”ÞÚpÛp¯?¿õC— ˆ¸mÛ¶aŒ!==Ýï¦„Ž‚‘ûÏç–%; £5|«o0©éº†þ©°~7üQÅ$DÜH ½øâ‹c¸üòËýnJ Ugm~<ÄÜা Gµ©ˆH,Šw ¿?ÝæÝ³È²q¯œHÒ–þQp#¦N£éÞ)°|²Ò’à»ýƒLiHM¬y<5Ñ;'"Fgf.Ï1”UÂm¹~7G$"ÜH )¸iºé³676´Žv•bøh¬ÃØCz2¤'ÃØ£Ji"z¿iH‰‡—×Ã[›tÏŒenüïwDšB›cŸ·XÞ-„v píÀØx/³R Ÿ¯ED¤¹d¥~6Ì0ežå–]æŽuhÐâ1AÒ±cG6>QæFIODŽÏ½³6×4´KÐMND$–Ý0ØÐ»=¬Ù ,Ó}Sb›6ñ 1mâNË‹-#g¹$ÅÁò ’܈ˆÄº×6X®ø¯K‡X4Î!-I}K*..¦cÇŽ¤¥¥±cÇ¿›*Ê܈„̽‹¼€öê~FˆHHœßÍpNع~7_6[šf˜øGÁHˆ|¾ÇòB¾%Þ Q`#"&¿éàxl¹eõÎúÝÅÅÅ\sÍ5tëÖN8K/½”5kÖD¨¥"M§àF$Dî[l©²ð^†®m܈ˆ„É€4ÃÕý U&Ï­»4ô®]»6l=ö7ndûöí¼ôÒK 2„eË–E°Å50aÂ233ÉÌÌd„ øÚ¦ú(syZsbZs.[÷YÎt©¨‚O®p蛪àFD$l¶•Y†>ë²ç¼tØ.5ï7ß|3÷Þ{o­ßöÙgóÖ[oµt3kUPP@nn.ÅÅÅGOKK#//ììl_ÚU›;w’ššJ‡())ñ»9¡¢ÌÒ«¯¾Š1†‹.ºÈï¦ƃK-UpQ؈ˆ„Ô É†I'y÷€ÛæºT¹5rÖ¼|øá‡ìß¿¿ÅÚWŸI“&ÕlÀ›B7iÒ$ZT·:`­U`ã7hÊ<5Ì®ý–Ç–ÿ¼y¨>ö""aöýÁ†îmay1<µ*8÷Ñú‚.¿²I}4Ê‘@Ò&žóØ2ËžpV O×{'"f‰q†;Oõ†€w~bÙ½ÿèg̘1u~ïi§FBBB‹¶/ìÚµ c :tð»)¡£àFI%®¬Òòà’ƒY›“ô‘¸´§adl/‡{}/½ãŽ;èÞ½{ïINNæˆTk¨/èªïœ4NñF:"1îéU–íå0ì8;[Yñün¤7 |h‰eÓÞÃðöíÛ3þ|¾÷½ïѵkW:uêÄ%—\ÂâÅ‹8p _Íeúô餥¥Õ8ž––ÆôéÓ}h‘D#UK 1UK;ZAA“&M:4ow̘1LŸ>=ªª¯4V¥kò¬ËƽðÌy_;QÁˆˆöÝ9./ä[&ô1üåìèæ”{õž={h×®mÛ¶e÷îÝ~7'TÜ„˜‚›Ã‚T^²1f®v¹îmKŸ^ùg­U‘#}¶Û2ü9—JÞ¿ÜapGÝ'šƒ‚ÿDˆ.A*/ÙPÖZþ°Ø ^oj؈ˆH =Ú®h°À/?®{cOiœ¶mÛb­U`ã7"ÄfyÉ+K KøF/6""R»I'Ú'À››àÍMšÑ!Á¦àF$FݳÈ{÷£\C+GÁˆˆÔ.-ÉpóPï>qÇÇ®¦¬7ƒÒÒRŒ1´iÓÆï¦„Ž‚ ¤7Þxc çw^³ü¼ •—lˆ÷ -Ÿn…´$¸ªŸ©ßõƒ Y)·få+¸‘àRp#Bì•—üÃb/ksý@Cëx7A´{¿ås]Μ]Å™³«øÅ\·ÆF{j—„‘®Á–‘o¸}¸w¿¸óËWïéñÐ>7þ‰÷»"MÑÜFvv6yyy(/y,ËŠ-ÿ·ZÇõØQq¹åÌÙ^ ïj‹·[þ¹ÎòÞeiIþü]£µ]º[Ö·úþ”gYµ_n¹nÞO enDÊÎÎfÆŒlÞ¼™Í›73cÆŒÀ68¸ÓôÕýŒnôuÇ<{Ôà­ÚƽÞ9¿Dk»$·¬áÎ9笵̙3Çï¦D•?åYª,\ÑËе‚› *«jÚ¹–­í’ðÐ5Sfoîϳì(W€#Á¢à&„¦L™r(ãa­=ô5eÊŸ[&ÇcG¹å©UÞßõ'CØÙÈÎM;×Ò¢µ]º#ã´L×»ÂÞpÏB7MQ^^Ž1†ääd¿›: nDbÄ#Ë,e•p~7¦à&Èî<Õ!)®æñ¤8ïœ_¢µ]º#玓½÷óÑå–‚½ p$8ԈĀ}•–‡—y7Ÿ›†èct½;ÞþºÃé™ïx_§gÂÛ_wèÝÁ¿À5ZÛ%á¡k0rr;.Ï1TTÁoç+¸i,­ ö±z×CË£]ŒøËR—Ÿ}h99æ\ZËcM ¬ýUÞg4!.ºnÑÚ. ]ƒ-/—eÄs.˜w…C VQQARR‰‰‰”——ûÝœPÑ#^ ¤wß}c gu–ßMñ]¥kùÓÁŠ67 ÕG:Ö$Ä™¨¼Ek»$<‚~ –Z&Îqéõt½ž®bâ—ÂÒèzà˜ÓÞpU?ƒká7ŸFWÛ¢27þÑHHIÆa/ä{û>ôîv÷»5""r,…¥–Q³\få[¶–ÁÖ2˜•ï‹¶çÖa†Ä8xqeÉŽèj[4KHHÀZKEE…ßM 7"wßbïfóã\s(è‘` ÂS|i>“çZJjó–Txç¢IVŠášÞ½åÎO\Ÿ[#rl n$”¹ñ¼¾Á²¬2ZÃ¸Þ lD‚(HOñ¥y¼[X÷ßµ¾s~ùéPCJ<üw|¼%úÚ8€1†„„¿›: nDì¾ÅÞS´GßÜs=‰i˜ =Å—pê”l¸!×»ÇüZÙ›ÑCXÿ(¸‘@:ãŒ3°ÖòÞ{ïùÝß|ºÕòþfhŸûG_`£'Ñ" ´§ørüFgÕÝg×wÎO?Ì5tH€÷ áí]—½܈ÔyOÏþg€¡mBtÝ õ$ZD¤nÓFRkOMôÎE£ö †Ÿ ÕÚ›†RæÆ? nD(—å•Ï Áïо¡žD‹4\ŸâËñÉJ1|4ÖalŽ!=Ò“alŽw,+%zÿæ× 4tJ‚O¶ÂkÔ—KtŠ÷»"ÒxʳX`\CçÖ5o„…¥–Ésí¡@bt–aÚHÕ7M‘°š6Ò0gSÍlg4?Å—ã—•bxüÜ`ý}SZ~:Ôpû\Ë´O]Îï¦M£ë§¬O”¹ ˜íe–«½óG¹µ6~¯wÑ“h‘† êS| §ï 0d´†ÅÛá_ë5x—è£àFéã?ÆÃÈ‘#ýnÊq+((`„ dff’™™É„ (((¨óÿx™¥¼ .è}:ÔøDÃz— Î'ñ“÷ßaí•q¬½2ŽÇÏU`#Ñ))Þ0é$ïÚœö©‹«ìD­\×Ńãh¨izÇE|TPP@nn.3gΤ¨¨ˆ¢¢"fΜInnn­ξJË£ËnÚ9¤öo4¬wÑ“h‘Øuu?C×6°¢fç+¸©6Õö‚ ¤X©B2iÒ$Š‹‹k/..fÒ¤I5Žÿ}•¥¸NN‡QÑÝqêI´ˆHlJˆ3Ü:ÌëÏ7ßRåû^,±EÁR¬7o½õVƒÏ¹Öòà’ú³6 õ.""Òò&ô1œØÖì‚çÖû^ÜbeœD nDâ¥õ°~7ôlõ¨ûÿÓziiñÎáìÍÝ ,•ÊÞH”Pp#tòÉ'c­eÞ¼y~7希3¦Áçî_ìmšöÃ\ƒSÏ\^­w‘Høf/C¯ö°n7Ì\£à括µÊÜøÀX½ë¡eŒÑ‡ÎgÕ¾¸î&--¼¼<²³³ø`³å«ÿré˜Ë'8$Ç+Hÿ=·Öå{oZº·…ßthåèþ$þRæFÄGÙÙÙäåå1~üx222ÈÈÈ`üøñG6<˜µ¹v Q`#""QclŽ¡Oø|<³JLä8Ž$û@™›Ó.V•XN~Þ%)V|Ë¡c’‚‰³ó]¾3ÇÒµ ,ü¦CBœîSà7ÖÚC{ÞHd(s#åîÏóÐo÷5 lDD$ê|½§¡*lÜ O+{sˆ*¦ùCÁÒÂ… 1Æ0lØ0¿›Ò¢ŠöYž]c1À¹ lDD$úc¸m¸7¤üýBËþ* æÅ? n$Âò4äÏK-\¸øDèÙNÁˆˆD§KN„iPP O){s”X«D7h±ÜaìÙoy|ù±7íñ›1†ÛÈÞT({CUUÖZâââünJ¨hÄ$†…yO­²ìÚ§eÀˆôؽ"ASXj™8Ç¥×ÓUôzºŠ‰s\ K5 “ðúZ”…¥ðäJ}Ä n$b}ZZ•kyh‰÷Ú~¤¬Hö°ÌÛbùlwdû‚ÂR˨Y.³ò-[Ë`kÌÊ÷Ž)À‘°:ríÍ=ÊÞЪU+Œ1TVVúÝ”PѨI)77k-‹/ö»)-âŸë-÷BïöðÕn~·F$úTº–ß|êÒíI—/½ä’û¬ËY³«XQ™ÁÔä¹–’ŠšÇK*¼s"auQÜ6­ÐgA"OÁHúÓÁòÏ7 6¡˜‚'ÒXÿ»Àr÷K¥{øØÂípÉ¿]vV´ü€êݺG}çDbݑٛ{…;{ë³L¢•‚‘(óáfË‚m–ãû(°ù¢Ò–ß/ª}°P´]¦„ˆŸ.ì®ìøGÁH”¹?Ï{}íCr¼‚‘/ZQÂQ›/Z¼£åS£³êþlÖwN$ ”½ñ(sã7"Qdí.Ë>‡Ä8¸f $U’hÖ¹õ1Î'·üggÚHCjbÍ㩉Þ9‘°Sö***°Ö’àwSBEÁÒòåË1Æ0pà@¿›Ò¬ȳX`\oà  ÕFU $Úumc89½îó_ïÙòŸ¬ÃGcÆæÒ“!=ÆæxDzR܈({#~Qp#K©Þå–«½×óÃ\ÿGª%Aðç³²RjÿÙ0Ú–•bxü\‡µWƱöÊ8?Wȑž½INNÆCEE-7Ui1ñ~7@¤)b±‚ØcË-åUp~7èÓÁ¿×§*P}:æ]áð×å–ÅÛ!½5\r¢áôÌØëD‚ª:{3áu—{Y¾Óß’¾Ïh,=ˆ 7H±¶H¯¢ÊòÈÁ O?ÊUBU¤!Ú%n¾’HTgo–ì€'WZ®õq=©„ƒFQ"Qàk,ÛÊ`H'8ÓçJKª%""Íåȵ7÷, ×Ú›X{ n$úõ뇵–+VøÝ”ãf­=´i§Ÿkmª© ”ˆˆ4§#×Þ<¹R}iY nD|öúFXµ²Sà²Ty:U‘ædŒáçÃÂW9mß¾}XkINNö»)¡¢57">ûÓÁM;¯dˆw¢#xðª@EG[DD$ø.êƒÒ`i1<µÒúº—›Ä6enD¨  € &™™Iff&&L   à¸~fÞvË»…Ц|·¿:z‰MÆ~^½öf‘e²7mÚ´ÁCii©ßM 7" PPP@nn.3gΤ¨¨ˆ¢¢"fΜInnîq8Õkm¾ÓÏÐ.AÁˆˆÄ®¯õ€iPX O­ŠýàFü¡àF)??c ½{÷ŽÈï›4iÅÅÅ5Ž3iÒ¤&ýÌÂRË ë,q¾?XˆˆÄ¶/VN CöF"OÁZ¤Ê+¾õÖ[M:WŸ‡—Y*]oãÁ®m܈ˆHì«ÎÞ„ {£RÐþPp#ôc_¥åo+¼¶ßåŸEDD"áÈÊi¿WöFZ€‚‘3fL“ÎÕeÆjKIœ’'§+¸‘ð¸øÄÃkobyß›={ö`­¥M›6~7%TŒ ê£o9nƘÀf>Ö¯_OÏž=9ñÄY·n]‹ÿ¾ê‚_\w“––F^^ÙÙÙ þYÖZF<ç²f<ù%‡¯GÁÞ6Ò0ÛË,ÿ\oY· zw€¯÷4tH Çßï½BË{…^qf–á̬p¼n h¹Æ£¥-í_ë-ßú?—¬X<Î!1.6_§Dž‚› rp㇂‚&Mšth͘1c˜>}z£€ÿn°|ã¿.]ÚÀ’qqQ²·ÔïËwæ¸ì(?|,³5üýËNLgß\k¹þm˳kŽî+Æõ6üålƒcb÷µK8DË5-íˆk-§¿à²´~ºáÚ±7™¨}ûöìÞ½›]»vÑ®];¿›±w%‰´ììlf̘ÁæÍ›Ù¼y33fÌht`ðà›v*° †’ Ëÿ¼yt`°yLœã²¯2v<´¤æ` àÙ5–‡–Äîë–ðˆ–k·,¶m+³<·Öbð¦¤IpôO«ÿïÕ/5vÿžýÓšvN$(¢å–vDÚ…ÝapGošo,fo@™›HSp#´qãFŒ1tëÖÍï¦4Ø£Ë,û]¸ ôl»ƒáXt~7PÇàâÔÎpzfdÛI7­û6Qß9‘ ˆ–k–w2\Ø#v_·„G´\ãÑÒ?\ØÃ{0{óDŒfo$rT :Ä‚\ zÓ¦MtíÚ•.]º°qãF¿›sLO­t¹ñ]ËNðÞeqÇþ‰JU®eávX¿ÛÒ»ƒaHÇÃv¬ÛVfùd«÷ß'§Ã ÉáxÝÑrGK;"íÕÏ,ã_wÉh yã’âƒÿºÓÒÒ())¡¸¸˜ÔÔT¿›ñ~7@¤)‚–¹yh©×ο³³8Ç0"FÄð¾6u9!ÙpAw¿[!Òr¢å–vDZuö&oüm¥©µ©A«Ä Íiaom²,/†ŒÖpyNìtÖ"""ÍéÈ}oÊc`ÿ°°dö£‚ ¤ììl¬µlÚ´Éï¦ÓƒK¼M;¯hh¥M;EDDjuaÃNP´žXüàFü¡àF¤­Þiy}£·(ô»ý؈ˆˆÔ'–²7A›B+܈´ ‡–xÚø>†ŽI nDDDêsAw/{³e<ðÊiÛ·oÇZKÇŽýnJ¨(¸i!Åå–™kTH@DD¤1ª³7XüìDž‚‘òÄ KY%œ×útvpSXj™8Ç¥×ÓUôzºŠ‰s\ KuÑæwAwÃÐÈÞ¤§§cŒaûöí~7%TÜH mݺc ;wö»)µ:àZYVµ öǬ°Ô2j–ˬ|ËÖ2ØZ³ò½c pDD¤%¹ö¦,àÙ­¹‰¬`ºD¢Ôì|Ëæ}Ð?Îéì¬Íä¹–’ŠšÇK*¼s"""Íí«Ý 'uò¨9{#‘§àF)Ú+Tˆ…µ6ïÖý×wNDDÂíx§4ÿ¼zíM@³7Ñ>V‰U n$Т±Ãøp³eávè˜ßèüàFD´öN§9¦4µ»aØ Þ÷>¶\ך4Œ‚ ¤hÞõ÷ƒ›v~o€!)>zÛÙP£³ê~ õ‰uaìkí4VsMi¾ýˆì;€eo¶lÙ‚µ–ôôt¿›* n$:uꄵ–mÛ¶ùÝ”£|¶ÛòêgàÀ5bcà?m¤!5±æñÔDïœH…m°¯µwÒXÍ5¥ùËÝ #Òa{9‡ õˆÔGÁH3úóR‹®èeHoÿ¬ÃGcÆæÒ“!=ÆæxDzRbã5Š4VØûZ{'~úÅo¸úÇÅ–ÒÁ¹Þ2331ÆPTTäwSB%ÞïˆÄŠÝû-O¯ò:ÝÄ@!#e¥?7¶^“ÈñÐ`_¤~£³ ³òkÿ,4vJó¹] §v†·ÀÃË,?ªû‘ÔM™‘fòäJËÞ0: wTÇ+"±Ck櫓š{JsõÚ›û[öìש›‚‘fPåZ^›vŠÈ±…m°¯µwÒXÍ=¥yLè (®€¿, Fp£RÐþ0VïxhcûÛ¹s'©©©tèÐ’’¿›Ã+ŸY&¼îÒ³,ü¦ÕÕÜDäøUøâº›ÔDbv=Za©eò\{hÚÝè,ô‘&&_«D§w -½âÒ!–Nph—Ý×^VV›7o¦°°ÌÌL¿›Zs#mOC:XþùºAFMià$ARýT:L׬ÖÞ‰ßFgÎÈ„÷7{›eÿ|xt_………~7!””¹ ± gnvíÚE‡h×®»víòµ-ËŠ½'¸mZÁªo9´ò'IÑ(ŒOÁED¤ñ>Ølùê¿\ÚÌÞ´×=W¾@‹$¢);òÐ/@üv_£À¦‰ÂVVWDDšæôLÃYY°k?<˜Ý÷‡.]º`Œ¡  Àï¦„Š‚ ¤h™–¶£ÜòüZ¯ × T`ÓT*«+"" U½ïÍCK-%ºGÈÑÜH µmÛk-»wïöµ[a)¯‚ó»AN{7"""-md†áœ.°{?<ÅÙ›hy6 nDš¨Òµ<ºÜë°®¤Òñ[Y]9>ÕûÞüy©¥¸\Áƒ¦™Hýë3(,…>àœl¿[lÚCCDDã”Ά/u½àþ(ÍÞ(sã7"MT]þùz•>nͽٛˆˆÄ¾Û®½yx©eGfo6lØ€µ–®]»úÝ”PQ)è r)h¿-Ún=Û+E¹ò[)­4‰´+þ[ÅkàÇC wžªgö¢ÌTYYÆZ·níËïÿóÁòÏWõ3 lDDD|R½öæÑe–meÑõÀ¶{÷îcذaƒßM 7h~dž¶•Y^È·àÚZÊ?–Z&Îqéõt½ž®bâ—ÂÒèêpEDDbÁI'.èû*á¾ÅÑu¯Õš(¸‘@òsË_—[ö»pAèÞöèv–ZFÍr™•oÙZ[Ë`V¾wLŽˆˆHó»íˆìÍ–}º×†‚ $¿ž†p-]áýÎÔRþyò\KIEÍï+©ðΉˆˆHóÒÉðµP^÷.Ò½6ì܈4Âì|Ë–}0 άeÿ•w ëîTë;'"""MW]9íñ6jfJhZš?ÜH %&&b­¥¼¼<¢¿÷/K½êûƒTD@DD$Z L3\ÖÓPQ¿_ÁÄúõë±ÖÒ£G¿›* nDè“­–ùÛ -¾Ñ«öàft-Ùœ†œ‘ãsÛpƒž\iÙ¸7:‰<7" T]þùêþ†äøÚ•i# ©‰5§&zçÄ_ªd'"»ú¦®èe8àÂÿ.ð¿oÏÉÉÁÃúõëýnJ¨(¸i€Í¥–®·Ä¸f@ÝAJVŠá£±cs éÉž cs¼cY) nü¤Jv""±ïçà ŽgV[>Û}»ÖÜDV¼ß  ‚Ç–[*]¸´§¡K›úƒ”¬Ããç*‰6Ǫd§¿™ˆHðõjoßÛðÌjËÝ ,>[}{Ø(s#TUU…1†øø–Ï+ª,*ÿ¬N2¨TÉND$nfˆw`æËÚ]þõ殺æ7H‘ì0ž_kÙQC:ÁÈ 7"""ѬG;÷ú\ wÍW`6 n$"ÜT—¾^Y›@S%;‘ðøÙ0C+Ç{@¹ªÄŸgíÚµXkÉÉÉñå÷‡•‚‘z|TdÉÛ’¼Â\ªd'"]Û®îg°Ào•½ 7H‘ÊÜ<´Ä`âCbœÀA¦Jv""árËI†Ä8xqeYqäœ>}ú`ŒaÍš5ÿÝa¦jiX-ØlÚkù×gïÀ÷ê)ÿ,Á¡Jv""á‘•b˜Øßð祖ß|ê2ãËq~7I"@™‘:<²ÌâZøzOCFk ˆEDD‚æ§C IqðÊg°x»?ÓÓT--²܈Ԣ¬ÒòäJ¯3ú¾ RQeY¸Íûª¨Rg-"ѯ¬ÒòéVKÞvRC#¬ IDATË÷øû-õƒÁÒ¹µáÚÞ}ü·ŸºÍò3+**˜?>óçϧ¢¢– ÔªžB/‘¥àF¤Ï­õ6|‘#ÒÕ9ÌÎwéûw—³^ô¾úþÝev~óÜ(DDZÂÓ«\zÿÝ场œ1ÛeÀ —ÿ|Þô€Dý`0ýdˆ¡u<ügÌßz|ésÏ=Gvv6#FŒ`ĈdggóÜsÏ5SK¥9«\Yhc”*­Ãi³ªXZ cøF/=x¯Ðrá+µßÀ_½ÈáL•R‘(óêg–ñ¯×ì·â ¼y©ÃI'4®ßR?l¿šçrï"Ë—ºÀì š¶öæí·ßæœsΩ1v2Æðæ›oröÙg7CKåxiÔ&1†ªªªfý¹l¶,-†’áÒu³˜VO*ÿ7Í”æiNuõ[Uîšßø~Ký`°ý(×ж¼± æ5íÁîwÜQëCak-S¦L9Þ&J3QpBS§N=4ÔsèkêÔ©>·¬qZªôÃ˼Ÿ7±¿!AåŸXº£îsKê9'"â‡Jײ¢¤îóyMè·Ô[Z’ჽ{zSƒÑÅ‹×ynÑ¢E5Žõïßc +W®lÒQpBS¦L9Xk}é©–ZþµÞïÀÿ¨üó!­›vNDÄñŽ¡SRÝç3Sÿ3Õß ƒ íàBx¿°ñF333›tN"KÁVKdn[n©²pɉ*ÿ|¤Ësê~/ê;'"â—±õôM—õl|¿¥~0ø:$~˜ëý­~Ý„ì͸qãu.RŽËÑÜHà5W§QQeùÛ ïg]7P7ª#Ýr’aLvÍãc²½s""Ñæ—'Ní\óøE=84=©1ÔƆï2¤%ÁÜ"˜³©qã‡Ûo¿óÎ;¯ÆñóÎ;Ûo¿½¹š(ÇIÕÒBLÕÒŽ6sµËuo[r;Âû—kã/²Ö2+ßòn¡÷ïÑYÞ“QÕñ‘håZËŒÕ–Š •c² —4!kSMý`l¸o±Ë[†Ÿo}½q÷{k-Ï>û,o½õcÆŒaܸqµ^dùòå,[¶Œ4KÛåØÜ„˜‚›£ýb ¶Áƒg®ì«¤¦ˆˆH,ÚWiÉé²µ ž=ßá‚î Nc‰Fp"À'[- ¶AZ"\¡¹Ó"""1«u¼áæ“WNÓƒÞØ¢àFxx©×±]ÕϯàFDD$–MìoÈJñÊx¿´¾e~Ç Aƒ0ưlÙ²–ùR+7zÛÊ,/®³8®Q!‘˜—gøÙÙ·²7ª–æ7X)))cØ·oßqýœ'VX¸pAwèÚFÁˆˆH\ÙÏЭ ¬Ú ϯU+ÜH¨Uº–Ç•ÖÇADD$,Z9†[‡{5ïšo©r[&ÀQæ&²4š“ÀjŽtï+ŸAa)ôége+k#""&zrÚAþn˜±¦yƒ•÷‡‚ ¼ã nYæíP|­ÖÚˆˆˆ„Nœc¸m„7¸{¾å@3foòòò°Ö2xðàfû™rl n$°Ž÷‰ÈòbËû›¡M+ß[ÁˆˆHÍ1ôK… {á©•šBt n$°öìÙƒµ–6mÚ4éûYæu`úÚ&(¸ÿ–Z&Îqéõt½ž®bâ—ÂR ²D"Á1†_ ÷†ÄÓZ*ªšç³7tèPŒ1äåå5ËÏ“†Qp#¡´k¿åÙƒsk5%-vh€(ATXj5ËeV¾ekl-ƒYùÞ1]¿"‘qñ‰0¸£·÷¯Ë›÷s§‚‘¥àFBé™U–}•pVôé à&h€(A5y®¥¤¢æñ’ ´ÎìÍÂ… ±Ö2tèÐfj4„‚ ¼Æ¤{7ì±üw$8pU_ bIˆ-=õNë–ü1m¤!5±æñÔDDÖ/foþ”gÙY¡¾/hÜHà5&¸yl¹Å—å:%kÐKÂ0@lé©wZ·ä¬ÃGcÆæÒ“!=ÙÛw㣱Y)±qíJÃ(sÎÈ2œ »öÃýyMÿ‡Ž1† 4cëäXâýn€HS5vÏŠ*ËS«¼Nꕎ9ÕÄÉsí¡þè,ô‘FÄ ˺¥h”•bxü\]§aV9=òì|ËœMV®&px»ÀåÏK,7 ¶tLÒûÊÜH`5¶ Éì|Kq9 é'§«“ŠEÞÑaí•q¬½2ŽÇÏ­A¦Þ‰„•2§Ñå”Ά¯tƒÒJ¸wQÓÞUKó‡‚ ¬íÛ·c­¥cÇŽ úÿ]®M;%ØZzê‚'ÿ(s}ª÷½yt™¥hŸþA¡àFBaá6˧[½AàØ Ò$˜ZzmFÖ-‰ˆ4Tn'Ã%'ByL_ à&(ŒU®,´Œ1¡I•þàm—¿¯¶ü0×𛑊éEêRXjµnIÄçx• k36Ç›r+‘·²Ärêó.ñ,ü¦C·¶ê £‚› KpS\néûŒKE,çг:&‰.µ/sª‚þºæM—¬µ\Ù×ðàY 2£þBóž^e©¨‚óº¢ÀFDD¢’J‚G¯ÛFâ ÌXmY»«á…O9åŒ1|òÉ'-Ø:ù"•‚–ÀÊÈÈ`Ë–-ѹsçZÿk-]^]þY±¼ˆˆD¯X* KS\{¶3|»¯áÉ•–ßÍ·üõœà½†0ÑhO¯¾©uÿ·>ÛÝÚÀ—»F°Q"""!U=ÅnV¾ekl-óöì5+¸›’Þ:ÌàÀ¬µ–åÅ { *í7X ÙÄó±å.ÿ3Àà4rÓOi¼Xܳ§KÃwû,0íS×ïæH=ÜH`ë‰È†=–×6@‚WõS`#"" ±ºgÏ-'’ãá•ϼ-&ŽE™(¸‘˜õ× |½§¡c’‚iºÎ­Í¡ÀïüäØÙ›¹sçb­åÔSOmé¦ÉÜH`b­%33³Æ¹ýU–§VzOJ¾7PˆˆHc—[n|×¥ÿ3UôxªŠq¯U5¸RØè¬ºï»õ ‚Ÿ 1´mol‚¹EÊÈD#7“^\gÙQƒ;©£»#-,µLœãÒëé*z=]ÅÄ9Á]p)""Á·k¿åÌÙ.O­´”Bq9üûs8m–ËŠ,¦Ÿ6ÒšXóxj¢w.È:&n콆©ÇÈÞŒ5 c sçÎDÓä 7“«.ÿ< º;ÑX¬(#""Áv÷|ËÆ½5—WÁÍ{:V¬ïÙsc®¼}°ÞÜT÷½Zknü¡}n$æ,Ùaùx ´K€oôŽîNôXebe¿ Žúý¼Å›úWÿý)–öìù¢v †›†î˜g¹ó—sºÄùÝ$9‚27sª³6úZÇGwÇ«eDDDbÙµƒ¼¬Ôümðêgõ߯•¹‰,7XÝ»wÇÃÆÛ½ßòÜšƒ…¢|JšˆˆH4ªoÑÿ©9fÖ& ZÇn9É{¦}êÖÀ4d?>i~ n$ðŽìPž]c)­„3³ O‡èïTb¹¢Œˆ„‡ £Ä–[‡º¶©y<)î9]CÇjûº´eÅðB~Íëýƒ>ÀZËi§æCëÂKW¨Vm õª§¤}o@0.íX®(#"á Â(±§}‚áÝË®êgÈN´$¸ ;|8Ö¡šîMÕâ ?öÿíÝlUåÇñÏ)[´(`q¶Ì6¶ °PÐÃ"-FËØ¸D‹S(›Ì ÆŠ˜ÁJ”3v ´‘`mœÕY6ÌQÓÎÙ^ è4¦,ÞšÑ ­:œiB#ÕQÚ+gÜÒ!àÞÚûô<çýúëÜs.É7Ooçsžó|Od<žltõùY~ïC7®oà\5wH׌”~˜nºšoÆöŽ2ì÷uQàMcm›§#K‡©õ'ôóŽaʼÒüÿKCm–pÉDG£¤cŸH;ÞûbÙÙÙrG‡2T?Ñ- žuáÌ͹Y›ŸNrgþüMÙÜQ€ýhŒ‚X97Kx~˜ÞÓâªîCרMÁáqŽÖßäèþzW%‡]Ý3áë;Éap1sÏ:~ü¸\×UzzºÚO»ª>î*Α–O⤀m†ê,á]ަŒ‘>øTª’ž¹zì&ó5ù37ð¬ &(nÌwUÛæ*>NZv'‘þØ´i“é<‹±‹c=Æ.zŒÝÀ •ñóÂ,á¹Ù›íM®n¹c¡ÇÑ Wå/ŽË*'ßrÇÓ‹Ü&Nœ¨¶ÉKuÙ‚Ç”Ÿáèùydõþðúßß$Æ.zŒ]ô»è1vÃøõÏâÚÏõ×÷¥qGv«¥ô^íß¿_·Þz«é²|ƒ«Ax–ë SüìŸI’îŸ24îØ;×9­}b@ÎU)Ã#ÜÀ³º3swUŠÒGvköµ„`^ÖÕŽî¼Þ‘;l„F,xÜt9¾CCŸÚ²e‹$yz~âC/k¸¤æÊur–=mºOòòßß4Æ.zŒ]ô»è1vÃøõ3n‚.ßô®âg/Wn Mî©M—ä9™™™:zôh¿ÿkn|lË–-Z³fé2¢6ë7ûúl”Z×~OÉI—xɾÏPG±‹c=Æ.zŒÝÀ0~Ñ™_vH ŸŽSã}cuCêXÓåøÆ°7n4]̘5k–éäç·¤+ÜP¡Ü>Ït)žä8ŽæÎkº Obì¢ÇØE±‹c70Œ_t f^§žà6Ýõ£ù¦KñfnX†¬@¸` +nXpÀ ¼ÄVí¯7H÷oV^ ?c`R‡öÔèc8o_·º»Gè;7hꔩJN2Vœ¯Ð ÞÔÕ¤E‰YRy£ö®œfºàgo)wÔL¿â+%u­Z››³’üŠ[Þð¤ö·÷ªZ’Ü£¶•ÓÄ©¯ÔÞÍÍ»k4{Ì©ûS½ÿÞ›ú}a±‚’ÖÍK×øc§µ$#Ád¥ÖcÍ <¨Kª6ôn«úp§Ñj" ´hQžrss•›·P÷­zRõ'ßTAïÑ]¯5Znà=飯âÿ÷Òë ›« W§zN_°kô ­-D¶Ïôļ"¿!ÜÀsN¼^y$­W¨´\LÞã’¤ø v…[ôÇí‘+—¤«Gƾ$Ÿ!ÜÀc:µG±$©2Ôª’T­Á6£UH!…ÞnRss³š›šT¿ï-›ž©â$åhùÜLÓZnið–Ž厙£ V똻U‰ûÖ+5P,å”édý*6]ðŸ®ÃZ–8]U_ñ•ÕOjk6W*ƒ™xJ[ÝË JÊ)¹S’RnÏ,Ò ª®•7À¬‚Íe*++SYY‰ŠVúö—Îù¥ÞjçZe°Ñ Ò©ÚªRIRêøËÕ~â„zâGjbïÑíÕÊ_5Ã\yÀç ´¶h•¦žw…½ù‰ÃúÅmÓUªÐÌOÓ©ú•â}žƒ‡™xGûëê]§ª¥Ó5.5U©ã&ë\Sè`áNµpCsq·´áÉÓTü§‘Áý“&HƒŠ™xFóßþ¢$V«|þ$9sFÒeºLmÚ^X¬JõçÆ Z;ƒçYÀБ9U’ªtq35|»7ðˆ½ú\äå6E«ÖkenòަEóKCZ÷|ÖÌÈç‡ †Œöƒ{ûš ð¦›ÁÅcið„p[ƒ ƒ’Pàæä‹ŽÏ^öPd£b»þÞÓÒzÒg]a)V8VWW‡šêŸÕmóz¢Ïú¾®gÁÍ â7<áHíîÈFÁݺñ'…¤iy*’T¬ ªjš•½dRLëþYJÔœq_öàYŽjö­ÒÅ·hñmbæЩÆC‘ÉÜÍËç*á’ßIÓ½•’¤Šïª+fµÄëš/9’•PQÙ9ùªòÒ.}ƒo/ñ`fnXpÀ „V ܰá€7¬@¸` +nXpÀ „V ܰá€7¬@¸` +nXpÀ „V ܰá€7¬@¸` +nXpÀ ÃM€§„O¨v׫úO÷M,ÑÔÑnoÒ®WÞP÷StW~¶’ÌT ¾ä¸®ëš.ïhÓz']Å’´ºF=[óλSÖ¾Gâ(•¨Ô©½÷n †7ôSGÃo5fÎ:IÒŽc§µ$#A’ÔÕò%f.½h? 6Xs@?Î~@åÈöÒGwªS’Ô©F‚VìÖ݈9fnˆBWó Jœ¼\’TÖxZÅ¿¨ø¬%I»[{”ŸÆ²Vˆ5 QéÒž•‰Z\!IYÊRH!éëp±B¸ Z'öéÆÔ@$ÔH’²TóïFå¥mÀÖÜ­”…Ú¶9«ïcNÉ6‚ D¸`®ºrlßö(ƒux, €èu¾¥E£fªºoG–ª[µf`37D©á™¢ó‚$…xr¯º Õ~G¸ íõzx]P’´ººU'ß,‰ì¯X¬›: þE¸ ßªÝúHo—´"­^˜¦Ñ3PYNä胅•j7Xøá€~ ·ìÕüâÞhS÷°Ò$I£µ¢¬2ò…`¡ÊëO˜*|‹p@¿tj×ÆÅ‘Í¬=’›Òw$aê=Ú½"²½aÞSj (|Œp@´¿­çª"›å•(ù ”ÿ«EžN+Õ+±®|VЬÀÌ +nXpÀ „V ܰá€7¬@¸` +nXál“-F˜IEND®B`‚pymc-2.2+ds/docs/_images/spost.pdf000066400000000000000000001515651204033704200171360ustar00rootroot00000000000000%PDF-1.3 %Äåòåë§ó ÐÄÆ 4 0 obj << /Length 5 0 R /Filter /FlateDecode >> stream x+TT(TÐH-JN-()MÌQ(Ê ˜è˜)¡‰±‘žs’sô=s \òP¯ endstream endobj 5 0 obj 61 endobj 2 0 obj << /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 720.072 432.0432] >> endobj 6 0 obj << /ProcSet [ /PDF /ImageB /ImageC /ImageI ] /XObject << /Im1 7 0 R >> >> endobj 7 0 obj << /Length 8 0 R /Type /XObject /Subtype /Image /Width 1000 /Height 600 /Interpolate true /ColorSpace 9 0 R /SMask 10 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream xì ”ÕÿsÎìsfýgöÌœÙ÷ÉÄ,³$ã$“„(0(T$¨ ‚Òq["(;ˆ²)‚b@lÙÂ&b+´ 4 ›l­@‡m¢sTŽÄãr˜ÿ·û×ü¸T½W]¯–W·îûöá·nÝåw¿·Þï~Þ}·nýßÿñ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ T€ P*@¨ ùV ]»v×_üÛ´i“4fÔ¨Q×^{­D#œïÒz*@\T`çÎ €›4hÐÒ¥Kµ‰ÅÜ×ÇøàóÃT€ P*@ìQÜî7fôèÑ«V­òÇ3† P*`‰ï¿ÿþO~ò³oß¾Ž;8p@ +æ¾fΜٯ_¿£GîÝ»÷æ›oÞ±c‡¤?vìX§NV¬XñÞ{ï;v̘1–4fP*@¨ð(PŒÛW®\éIÉS*@¨€ :tÆŒb¸½ ûÂäüºuë$ÍÚµkgÏž-aÌÕüðÃöíÛù?4cÌÒšƒß ÿ÷ÿ3W“'O.¦†ÂãÇã§j¤ä TÀTžþ^¢˜I*¾¶¶ë^´¢‚îëСCømîÜ>iÒ¤“'O^sÍ5b@Ÿ>}–,YnüƒÛ±Z~ãÆÅl£Ó3»˜a*@LÊæôŠ9(ÆW”³fÍzøá‡=Mnjjêܹ3ÆAO¼œbP^Æ?*@¨@qà% z¤"1PöèÑCçÌbM÷ÞÆ|{cc£$ÆßyçÆs¬Ó§O׌˜oÕë©'@§W¼«y… PfÒvz§ÄÓŠU¿ë‚OáÈ‘#˜ƒÒSOàí·ßÆ-ºÿþ7ùG¨¸\xøx ßHð? Þ~ûí›7o.X¦Ç}Ô±oŒ¤ÄúvÌTHxùòåC† ‘ðG}tË-·,M"ÝszO?ý4¤ÀñòÞË÷ÙßÿýßîsŸÃ1ßÍ0¬w²›Œö9,ƒÓ ðN¼T `ÔÔZŠ ÀçgÏž•Vc¼ÃøõÎ;ïŒ1bþüùŤÀÏC—ñyÔÿ¨ ¦ð ððÅHÌøóçÏÅÍs‚Ýל9sú÷ï)÷={öÎu?ø@¬™Y½zõ»ï¾‹Íd°80À0÷œ¶ÙÁbH;Ë{ø·~ë·>ó™Ïà˜÷†¨ýNv“¶Î™@ÚN/À5ñR…(€‘ ³UØ|¾k×.iõ§Ÿ~ŠÍn¸á†;î¸;-èªQ¿&î aÎx6„ d®@ÚCØc=†¥/ß>q}uu5|T€û’ýÛ»uë†ýÛkjjL‡öâ‹/‚äñ0þðáÃ÷o§ÓËü¾ c€{ܦÕL“¹i;=Ók1L"(À!,s/A¨€µ 89„ÑéY{¿™†‘ÛM5.›N:½pÈ,Ö*À!¬lÞ€QÜ)àäF§—‹ûÜž‹nrÏH'žµJÃ"(À!Ì=·ÃQ¤prsÏéaÁ?hÂ1©~·¡÷¸ÝÉn²áVIÖ'^8dkpoKö#ÌÒ¨@%+àäæžÓÃsxŽ.Ý«îq»“ÝäÒ-'mqÒéY‹ 4,‚î aî¹¶ˆ d¥€“C˜{N¯¡¡¡¾¾Ǭî“4êuÛì¦4º>Û2tzàY¬U “!ì¾ûîÃ.7ægsáÂ…ØnÎŒ)þüç?]# ^ 鯽`Þ&!oø”+b$°V'‡°Lœžµ]l­aîq»µRÓ0S'žµJÃ"(`ÉÖ·oßaÆ™Ÿ‚áüÇŒÏíKöG†4 çô×Â*`³Na–8=›ûÝÛÈí6ôBÚà¤Ó‹‡Ìb­‰ axAù׿þuL†ÿÝßýÝóÏ?Oúܹs¿ûÝïêG¾OŸ>cÇŽÅé¼yóæ7ó7ñv?½:`À€ßþíßþýßÿ}\Â+_%þرc÷Þ{ïW\÷åÝ}÷Ý nÇëE:wîü§ú§ ,HÔ{ÓM7ýÕ_ýÕ¿øÅ+VHä¶mÛ°}ýßüÍßtíÚuëÖ­Y°vd÷—YÐ$)Äs,˜/ü‹¿ø ðÛ†;éô¬EPAD†0êàÁƒÍÏÚ«¯¾úÕ¯~1ë֭ñC‡K–,ÑxÓÊìÙ³õ”€å+fÌ=÷Üsã7ž8qÂŒÊâ­ˆ‡~üñÇÿã?þC.!òºë®;~üø¢E‹êyÕUW=üðÃã‹À¿ÿû¿›…xj/X&ÒûM2 1Ãþ”àö_þå_ö¼¾>œdb$ûßùÅ‹¤ÿÊW¾"?ª†ávÌÞüÁüA@iV]J¶›¬jšKÆ8éô"À!³X«@"CüðÿñwïÞ]&Ûñ>uêÔ_ÿõ_ãµã¿ök¿öä“O~éK_²~´1.˜óíˆÇèãY'ƒùj¼þU³HŒ-.aýå_þ¥'§˜´Õã¥çh^8v|õÔS{Á2‘Øo’–à øSÊ|»'Nñ\¾MËñë€\-ØÌ?ú£?‚Uò‡üå0† ”G'‡°Dœ^zúãƒ_·wêÔiÒ¤I#‰czV+¹TnÿÝßýÝ`n׊Üãö »IUe MœtzÖ"( ‹ @RCØéÓ§± 3E:ñþ·û·PíW^y%Þü°xÈ—üè  Ý¾}»™ aŒhÂí, rûç>÷9L¼cZÜ~öìYÉ.‘Z”§ö‚e"±ß$-Áð§4ÍÓÄX¡Ï#>‚Yt5¾`3ÿìÏþ %hF¨@V 89„%åô´S¦L™òå/‹ý0E ÈýÍo~¿¬i>ûÙÏÖÖÖ"pðàA@)þ~æg~fÇŽš3ˆüÅ_üELw ðo|C/Á›ÁÁ~ç;ßA-ò'¢¿WÂùtìØ±ÿþø²g‚4’äç~îçÆ÷çþçH µ¨£GbCB$†ëÃA̱è%ÌˆÚ ¹;Q2Öøá*¼ºfÁÏ…h®"f-Z¦'nÇÜ~EzH„5–šàÿð‰Ù{ùááÏ|æ38bU!ÖaÂ¥#/V?júï}ï{¿ñ¿ôHƒ?5Ò P 8éô"À!³X«@"C˜ºq XO.Ÿ døC. o~|<äŒKC‡ÅŠnÀÿ’#Vƒãdf,ÈØˆÄà…dY0±/é¿ýíoËÐN†f!žÚ –‰ô~“ÌB̰?eAnÇ …o1Ȉ–1hJ ›ù_ÿõ_±ôiôÛ‡Y#ÃT < 89„%âôT<z\¾|9bðKŸº,8¥~ýúi2L&ÈÕUJ¼‡Û%i„ šQ`]|—å+‡{Kûì³ kݰ ~¾³"˜ÁB„%õÙ _¹=¼VLIJRÀÉ!,%§‡UxºØ) ‰±`O²`rëÒ1M ¶÷ˆ_ŒÛ1WïI‰ùvÿ$<Òúb ÉnuŽ]p³ëR 'd¾}ãÆ?cÆ l´ë©Ë6nWóð@+Öé¾¾ˆ·›[hJ;ÒM8Úi­œtzàY¬U ¥!Œ€ PprKÜéáÁI,\Ǧµ·ß~;Ã×~ÇÌö?ÿó?ãkä~ög«eô’ r;Ö´`Y¾€®å!$ž8q"f›ñH;žÂo{nß°alÀêw“ÛQ8V¡`9V*þú¯ÿ:~JñæÞ±ºoÍš5XIèÙÈ iJâv,ú•_ùüš€@Á¥,R©u:1!çÛQ,Zox-²«&(­ø…_ø|3ÂÚB¬™×Zì H7áh§y´JpÒéY‹ 4,‚‰aüìS*àŒNaÉ:=l<‹ÇáÁ“˜]oƒ$µ÷ñ<‹<ŠŽ3¬ óºn\#W­Z…'7ñø'Õ…èÀxP+^Kýϱbóä’è«ëÛ1Lj•x™oíc‡^,h×m¾pUö“Á>3òÊ9Ï£²HàçvÓN¬“ÁËæ¤9¢pX…]kzôèaÆ {¸]×Äš@×ÉàÛ>E<¾nà ‚¦”É#%4á£@exM'^8dkHv‹ö1a.*@ìTÀÉ!¬œ^©ËÎ-¼ý”Û-´&9¬€“NÏZ¥a¨„!ÌaæQTpr«§GnOõsÁÂVÀI§™ÅZ*asØÃ°iT UœÂÜszX©Ž äqÔ›Á\3£‘ù ¸7ßîï¦|õH…Xë¤Ó³AiXÜÂ*Ä·°™T  89„¹çôFŒ1dÈËpK”­ ÷¸ÝÉn*ÛýP¶ŠœtzàY¬UÀ½!¬lŸnVDœWÀÉ!ŒN/÷­{Üž Ùi¤“NÏZ¥aàF7E¨@1œÂèôŠu·Uñäv«º£rŒqÒéE€Cf±Va•ãŽØR*PªNatz¥Þ™¤'·g";+uÒéY‹ 4,‚Â覨(¦€“C^±î¶*žÜnUwTŽ1N:½pÈ,Ö*À!¬rÜ[JJUÀÉ!Ì=§7f̘êêjKí_›Ó—Ä퇎ÜzðD˜H™U«ì¦¬ÄL¯^'žµJÃ"(àÞ–ÞÇ™%{8~êÌ?ܳæù-G=ñyòd1SÝÂÜs#Ö¶ˆÜnm×$e˜“C˜{N›ÉTUUá˜T¿ÛPŽ{Üîd7Ùp«$kƒ“N¯2>®¾úêo¼qذaø./à¡õ¾}û644tëÖmÛ¶mS¦LY¹re1ÛÜÂ’ý³´Èíâ¸qÉÉ!Ì=§×ÔÔtâÄ ݸë¤îq»“ÝäÒ-'mqÒé#@Æg¢Ã|òÉ'ûöí½8p6<òè#Ç·wíÚuûöísæÌº³Í½!Ì=7bm‹ÈíÖvMR†99„Ñé%u{¤ZŽ{Üžª\,<)œtzÅñÙ*0kÖ¬‡~6¬X±¢_¿~j çÛ“ú8³äv î:9„‘Ûsq£’ÛsÑMîé¤ÓS dÀ*ð êìÙ³a~0íØ±£Ú†õíøyNO=aî¹²µH¸½÷Ü¿½l’—»"'‡0:½rßF‘ê#·G’™â*à¤Óó€O3Tàý÷ß&ß»wo÷îÝÏž=+Æ üøãs?™¸`æT`ocó>äö@‘ò}ÑÉ!Ì=nŸ:uê¸qãpÌ÷Ýv¹õîq»“Ýty§¹pæ¤ÓËSYµG;vÜ~ûíØõqĈ»víÒ«Ü¿Ý÷a}ÈíÖwQ\ÂÜãö à9&ãö·MùÝãv'»É¦[&[œtz ‡ 8 €{CX2]–B‹Ü¾9DZ&É¥Natz¹¸Ýãö\ÈN#tzÀ*›  p£›Š¬Àë­ëdÈí‘%´=£“Cží·]‹}äö\t“{F:éôùp@aî¹²µˆÜ^6©³ªÈÉ!ŒN/«Û©¤zÉí%ÉÅÄI)à¤ÓsVÙU€CXRö ,‡Üî|§;9„¹çôvïÞgpté†tÛì&—n9i‹“NO‘posÏXÛ"áö^OpŒµ]×0'‡0÷œ^uuuUUŽqûÛ¦üîq»“ÝdÓ-“Œ-N:=`•MPÜÂ’ùè²” ìk<‰} Éí!¤Êk'‡0÷œÞ”Wfã˜×û¬Ýîq»“ÝT¨ëòç¤ÓSäcÀÜÂòí2re½pû-³8ßž«n+ÅX'‡0:½RnÌÒºÇí™IÉŠKQÀI§ç¬² ª‡°R>ÐL{™ûÞlžo'·_&Š['Natz¹¸IÉí¹è&÷ŒtÒé)ò1à€ÂÜs;ek¹½lRgU‘“C^V·SIõ’ÛK’‹‰“RÀI§ç¬² ª‡°¤>ìXÎ~η»ÞëNaî9½¹sçΘ1G—îG÷¸ÝÉnré–“¶8éôùp@÷†0÷܈µ-"·[Û5IæäæžÓ›9sæäÉ“qLªßm(Ç=nw²›l¸U’µÁI§ç¬² ª@¶CØýpGõÉ~è<¥MøÑÞvã^öDVøéæÇ¿þÐKõûŽÇÔA¸ý晹y.õðñSXÿÊÞcáÞcÆ«÷/ÞU,ýñSgPàêoKP0þ{ÕO^ýzÁKåŒü½kn:\£“CX¶N/Xp^UÜãvm6+à¤ÓSäcÀ²ÂÀ<ø—êG¸ U¤j…?±ády|ýþ˜…8Öü\jޏ}õŽF|ÍÎð ¾v¼Ñ„·ÏÛ¾@¤ .³¤¢â$†×<¼1¸'‡°l^°à¼ª ÛU Ê©€“NÏXeTl‡°2Lª(§KI¤®Y/V,·¿‰û¡šÜÞrAŠNäöD>Q,$Èí)ˆÊ"ÛV€Ü®|È€ ÛÛþ;—B¸}fBóí7ÍLw¥S‚ò¯y-anß~(ßóíäöï® ‹jllc4!|~ó´äØ9ËKP`©Õiz4ùõÆÇ1ÉÏí ð§š•„mÇ|:dáò¾Ôo{éäÅ^8}æ`çî£EÍÛ~è„T„*<=²Ò8ÉÖíl^ß~ϳ¯y ACšZšï‰Çiðý#ÜþÝG7!%tӞŇHOK-ÓŸ¾XŒÞKš@oÁg:ë©„Û;ÛU,S€ÜnY‡TŠ9äö²ñ'+Ц€Éí!³7\¶ìyÓþã@—g6Šù¡•G—75Ë †"3¥? DDvsO?œ~qØZÇ-ߣéCVQ ¹™OÇn¦Ö[,€'QÑ’-Gq|aç[Å’yâ±C8Ò‹z·ÍÙŠ°'AI§Ø%˜óí8í2¥… Ð&Ëi]²ìY†_ÜáSÙ8Å?óû”¦—òÍ߆ÀÑÍ[©›=e&K)¼a×[¨Ô¿m#"±§zÁJq ÿ–m½ì¾Õ”²$ k°æù.óèš}rª)Í€”iÆD cG¥yq÷âÔ³-ÿèe{‰ï³šLòÓƒ™Ý“@NÂL§W°ÕŒ´Ar» ½P68éô¢ñ!sÙ©€9„\ý+„ùàÒÝ1?¿ø:Hxì…Ëö GL›äP¬^!òšÖIi8ö~âÒ›€$²X!¿¬¡¤G>·™Z`±€ØóÈêט÷òÁbÉ<ñ²ãúôõþõõÈëIPÒéc-ÜŽ25—X…S 襀€|›@EýÎn’ NÚËï•#_D™øÉ)Íž ¨(©K_?†Jñ¶/Oˆ¼âÞµžH9•æL]·¯àUùª‹4¸±%å–'øtƒœÌp©`úb‘žrp÷"w²™O òPËOÐ · yêG; 9hbO =1nßÚÌí#låvQoÚÚfz´™Û»L)Û{ß°<ý›Æ©pû]¥sû”59àvܽ¸‡=ÜŽ]:) xLIÉíMArž4iÒÈGâ˜ëVxŒwÛì&O¯9pJn“ÌU6Úäö¥ mâÜŽeÒŹ}‹z¤Á?=-ÀB$³–Ûç¼Ô¼Bf}mâöæ×âŸÎ·w›Z'1çÛ±ÖWe¾}_có»Väöƒ™Í·?ðß» ©g)Þf‹H<¿à¹óÉí.q»§sÝ8uÛÝèç[An/²¢h àöËw· Äü´ y&8ßž0·—wÌ£kš×É€Bªúd²ÜÞ²¨ߤ´vƒ8Õ€^ ühG+··ŸÐº-ÉõÓ^• r»<’`rû-³.­h ¨(©Kå˜ooáöOe°NF¸}EÃe/ßÂ謺÷hˆ5ZaúÚÉ!ÌtzYxjäv{ú¢¢,qÒéEãCæ²Ss+ø6IYøm!·c3 €G‘u2¥Ï·çÛeµFóí©q{÷项ýÍæùv÷¸}+¹ÝNOgXe:½Š’|5–Üž¯þrÆZr»á,´Qs“Ç «/ŸoÇÏîà«|qû­³]ãvYÕ€]Jàíáö•Û½óí=f4¯¦Æ¿¶çÛãö–G}ÑpK¹½‘óí—ܯéôœ ÷Bnw¯OsÑ"rû%_É• ˜C˜p;6ÖÀ:äÃÇOÉÞ/ÂíØ$»Íȇî©WŽ]¾;à=¼êuüÃïòȨŸÇ—÷Ã’x=]¼ùÈ«ûãTÖÉx^1/Œ·åà IGM±mݱË÷Ç&$~´›b×q-!²œoo7îe¬¢Áž-²0É$ã³u‡Q×s·>WÄ, a|[A²€õíØƒOì.ÙrøóC/íßX»çb VžccC³Ll9•¾5¶vòê×Íxi2Ð8šŒh£™¦Y|£±XÝñµ‘Í{È °ÿ¹”€¦¡^5£Ø†çˆ5õ»ÞÂrü’"‘Ø¥aµ éÿT²@UÙæ1H#…›% Œûuae¶OA_cô—ö¼Uõ̶!Ͼ&éqüæèZT-»—àT¸}Qý›4÷>2¢yÆW±6GOMJ]è_ló‚ÛjÈ’_?kå*,„ÂÈŽæK Ž0›”"€z±>ó¤ÓñMóŠakq;Ér l)µå!kÏs©¸Ea þ¡¤yí&˜ñí±µxÊ”Khn;HýÓýd°‰½¤” E¿|ÿ:9Õ”}p1¨î†é¯¢^íM¹oƒ-ñ!”Ç=¦šÂ$ôÚ•¾ˆ¶‹€(÷nuÜÀ²ó$ Æ*¬Æ¦ÓãWì·b¯˜±·ñÇ 6†z¨~Oní1£õ—5 Ü-ø.fÆ89„™NÏll~ÃÕÕÕUUU8æ· ~ËÝãv'»ÉßqyqÒéY‰Ÿ4*¢æ&ÜŽT€‘p‚ΩâT>Bž£~T%Þ*Ü®…xŠ’Ó…›#¹¯8âA Z—‹ðñ¹ñظGÙaɈ€þ3‹BXâ¸]3JÀ_ €Ê,ÓLïWnÛ#åê—ÁRŸÙ[ z—ŒWÙ,MÂÂÀÀ0-\Óh ‰)z‰”SávMB–°¦7K@¸¦¾•lÿù/HÊoŽÙ ÙÍ€ì^‚áv¹„þixkF‰Ãÿ å!J| ’ºÌB&¬Ø‹HÍ‹°~[Kz3¦”Õ, a$‡#ð•œöp»&–׿êi—–·)éiÁ­P•Û5zDèµPó´ X|þô+o 1væ”íÖñ=Kv Å'QJ“ì²X]bðUBú=B®â eè· 3‹¦ö˜1Na¦Ó3›ßð† Ö®]‹c~›à·Ü=nw²›ü—÷'^D@d6+0‡0У è˜&•m(°ísRÜ.OV¢|óC­ü ‘Â<ž=÷Ž´¼ GRšyƒ¹]æÏõ5@’Q«ó˜«r)·›‹s´@¿Ù£Ü.ÏzöÁ;€Læ{Q”ЦdÔ£lî߃ ¤±rÔôæ)ö“Ôx0£+§H£³EM`¶$øÇ‹9Õã%noyý¨–¦ $€×-Ý»¨õ M¦arõ¡–—h^$MÑÍÓT—€0°„õ’,.’ÓÜ.›äh9÷_|·”©Ln7?R8¶Ö‘oaèS¼Á ‘øÐa¶üB$i¤Ò.>ö‹H³E’Æ<~mÄzóÔo§^5›#‘fŒ“C˜éôÌÆ2l•îq»UòÒ˜b 8éô¬ÄOQs³„Û=ï¸Á´sAÆÀ+ _l¾ïQÅUk¹ßM`¾§È/nï‚ÛeÎ<·Ca•¸ýâms{Ëb'©îñó3JLªÜŽwûš­C˜”k·¿Y€Ûñ£,Ìí_%·÷ˆ¦Ó+6v3>sÈí™wAe@n/î;y%a†Ú®];¬Œ•rGuíµ×^ßò‡p±ÊÌ!L·õ-è|»F ÿàƒì"9Õx±SsšÑ“XK–ùö äv]À,Ê·ë;. η'Éí{Û˜o—õKè&Åï/Ü»V:Ús¼4ßÞ·|¥*0ßÞ²I‹Ôå¹ypªñøá¦¢Ü.ö‡äöŽ›7·Ô&5ß® i´p¬“ñÏ·ã™T­ÊK«ÃÏ·›ßSPçÛMh:=–G  ·[Ø)•`¹Ýô– §§@mmí!CLn=zôªU«Ú¬ÑÂÑÁí²’訓ðýå3«$côã,‘þÓĹ]Ö½çz¾šÈ|»—Û/7}.¹ýòu2 ür{`¾ùš·Šy/ÉJró*¥Ôþ[KSJ@ç¨Í,±²ÎçûÏlÓBÐdàg # ·–ÆäœÛ/ ¨-’€_ 3ÆÉ!Ìtzfcó^³fÍòåËqÌoü–»ÇíNv“¿ãòã¤Ók™ Ì œ?¾gÏž'OžôpûÊ•+Û´ÄÂ2çva{Ï|;–y+i˜!×Ü.+UŠq»ÌZ‡™o—ÍRD–‚*y"åÔ³N[I<ÊÑ€)µÎújimÏ·—Âíø‘HKF mnÇN8fë´jy…«žfÀíë/­oOz¾Ü~ÉšNϼò1bæmpÌoü–»ÇíNv“¿ãòCn¿ä+JM©S§Î;Å›Ü>~üø.]ºÜvÛm .òùæ}oðRZ³iÂí_"í™o׎(™Û/޵y¾½åéúD¸] Á&Ÿj§ ã¿´ì„#Ëò«ægÉíæObö±ñ¬“ÁÞª[ÖÉèÁr'ÄX'Cn¿äM§g~î¶J÷¸Ý*yiL1Èí—|%Cé(pøðá[n¹åã?Fñ&·òÉ'ï¿ÿ>F(,˜™ß~ñ[m‘ô½Kx¢V/õœY_·Ë¯’]z\çÛ±¼Þ’ ì|ûýë^ž ¾cîV-ļ+v‰0ßîåö§^‰²¾]¸w¾p{·©­ëÛÉíiøLÓé™wÃV)à·[%/)¦¹= ¯Ë2TÀÂüÜŽ5*ëÊÅíBÑ€+]O"«8Üj¾ÝX¾’ê:™ðÜŽítJË3ß…ÛÛZ'‡Ûe+!Q@î.Ãíú)G"[}ñ¾fz¿}^‚ÜÞ¤µH ·c¾mG9ÊíOëdÆ.ç|{2žÏtzÅÆnÆg®¹=ó.¨LÈíÉøY–’𿦛Wè:™ÈÜ~êÌÿÈG^`aÝÏtÊ<ˆôs»bî·=Û·¼Ðéå}LÅÖ·—°N&*·›hІt™R÷–­ßj: ó´ià§ÄèïˆÑU.²û’-G±mŽìúˆ”&·£ dm¶Y YÒËŸ&€JÈå‰Ä)ô”4ØÏP# ëddK|Ä`á ìi-÷'? ¿¾½óäMR²)æÛ=ûÏàKé $F-žu2ýžÜª–ˆ ú0Üî·…ˆU_jáv”H„}lôlÚ\’‘¾éÔÜ{;4¡£õ …fyú•74ŒÒ{þ î'#óí¸¼Ü~±4R·›6 ì·S ä¦Ógä•H5ìlß÷ƲeËà%Ró@l:=m,¶)@n·­G*Är{N™U–¢€ a[vÂGR‡rO÷é¯âï—aç[ÐO´¤ÑGÿätóãṽݸ—%—¬CöìÎ÷Í1¤.ÙR¹]¶—Q e½A©óíÈ¥ 1Z¬pÕâz \5O%æÊ_ÔHåv)‚cã>h.•*·ËêwÍet¥Úi^EØ$1œ"xUÒx¸]÷Ôð»§/~ùò“°<à©éý“Û±xÆ£–ÍH!# CEþ$Wu‡vÄàùViïÉÓg$Œ¿(d‘H™uïûäV¹[&·ìÇîOƒ¢º<ÚúÝÉü<Ûñ‡p; ôp»ÎÞ£^<`Xð%¿škzÌhþ°«JÈ"ÿcÄ*rûE=ìý¿®®®¶¶G{M,Ý2÷¸ÝÉn*½cmÏAn/!™6„Û×ln~E©åà4Ù^¼½~WnÿÚˆæ÷i™Ø/EŸ×“x9j8¼`»žJ(‹xÿ.’×ÃížÅÉa¸]VÔ›Óà˜–Â=Ga8E¤Æø¯zb”Û%‹‰gHÙû‰-¯BjÉ=Ø >—*i0!lVŠ°ì…ˆ«àU-Œ%¿ €iXäÂ_nÇ\´Vn÷ï?#€Š4(?˜Ûu­+·¿¸~^·ý×êüT!‘Âí·ÍÙ*w ¶Ü×Kþ\c<éýûÉäŽÛuûmòÈíŰúl&SUU…£ÕV–hœ{Üîd7•Ø«9HNnÏ€DYe) ¸Íí÷=ô\ªŸÛ±9aA·âG8$óGjŒÿª'ÆÃíž#À“RTy¸ý¥=Þ¯f­Ü~qIRLnÇë_cqûŵ"Ðä·ŸjoÃíú^'yƒUŸ9[äË -ÜÞn¾}Å^½ÁJ 能þŒäö‚ù|Eâåz'NœÀ1_f[ë·;ÙMÁ˜Ç«äöR’i3P  ·ã½öqçÛG^6ß¾,Ä|ûÝ ^ó@EIóížiy™o/•ÛïˈÛÍ5Ïpta¸]ö`˜oí ï|»î è™oßàûI¥kË~&XÈ-^×Bn?‡Ûg·r;~×@=w]ð©'}„ùv¼$WªÐ¢ðäµgŒèdæ¯TãÈí 9HqzåöæÑNÜãv;u¦UÈí 9Z“–mr»ê ‚Þùrõk¥sûg s»g Ê—ºä=ªº¾ÝÃí² # ·ëö5(éµ!fÀßd\õGjŒÿª'Æ3ßü–¼R©r;fªµLOàÑ5Ík]¢qûë.['ã_ åáöEõ—=k‰zÛ\ß®–"qó|»oßÈÖÉšoÇw ¤´ùö–ð!¯<4ç<ý"e=éýÜ®Kž¤éPóèçvRòÄyn“Û šdFšëdtcO3Axn7ׇ`?Iéÿ³´fážðŽ7.ûÉæÛã^³¬uOÅ_Kµ@Ý“Gb<%#RW¶HìÕƒeHÏà¼ö‘K7¤v~:Qn׊<$N‰Ûµ"µß”o>"§iï'³sçÎ\ýõƒ Zºt©ºº£G"¾sçÎlllÔø?þx„ ×]w]Ïž=/^¬ñ¬_¿¾W¯^]»v}à>øàó’'ìÞ|û‚ æÌ™ƒ#zÍ™?÷¸ÝÉnræ~Ó†Û=“§¶)PÛ½Êíx8TGö€€ÞófDÊ©‡ÛÍ46÷6÷_õÄH]©ÜîÙæÝ“%ü©Ú\°EáËñ¤ÔbÍxpû Óš·ÎÖH&r²Eäv¿ÏdŒU äv’p;ÖɘÔ0ôëç×LƒH9]ÖpÙ|»™FÂþ}ýi4Fê’Ó¼s;Væh»@ÓÌùó’',?CÈ¢‹+G¾¨R›É0¯§ÿ6òÒ[Ÿ4²X@¸]_Mû\ý‘b)‹Åsûý‹wÉ‹b‘–¯“1«ˆÆíf ɆýÜ~ýå_ĤºùÁ þzÍ.³ŠÛÅT1/mn7áСCg̘@x‡.\¸ W|òäI c~ݺu^»víìÙ³%Œ¹z$“0æä1ñ.á‚Gr;:×þ?r»ý}䤅äö‚n“‘ö(` ·cݲlŠÅˆ¯«îq».á(Ö|‰—Å-Âí²{?½ÉíÿþPY¹Ý\–ã7 kxLnX„¾6³ãûÙûæ¥LÂ~n¿nZó+«<ÿávÿr&O-§øpU.y¤–Órr{÷îÝ…É—/_Þ·o߆††nݺmÛ¶mÊ”)+W®„ÏüðÃÛ·oðàÁÞ½{Oœ8ñðáÃxÙøÒ‘ŽÄüü¼yón¼ñFL¹ßvÛm§N*æfÉíò!²üHn·¼ƒ\5Ü^Ìs2ÞZ¹}ËeïKMc¾]ß#‰»!>ïCw!§ÊíÁ ¨yÛ ¨yê”ÚÌ&k&Æ:ÿ|ûè‹K¯Í”þð„–U­ÜÞòvZåvÈûQü ŠÅÄŸo^¶T]³Ó\'ã·‹tauç|3Þ¼%ÂÌ·»ÍíµµµX÷2‡c|äÑG†nÇbõíÛ·cå6Ðñ‡j׮πÛ'Mš„Iøk®¹FiŸ>}–,YnüƒÛ±Z~ãÆÅ|¬{ܾ{÷n,ÂQ½–÷¸ÝÉnràNó4Ü^Ìs2ÞÊ6ßÌí&Ï´–O™$#·C‡¯†àöoŽ®mSXMÐÊí?>-RGX'SìAc©ï·"·C[< ·ûÐÖìm6zŒZ²›ö FNË3ߎºzôè¡‹Û±L‹ØÕCzæÛõ1U`üwÞ)ÉF5}útÍ‚ùv]Z£‘pÛ«««ñÓŽPÒ™?÷¸ÝÉnræ~Ó†ÛÕU2`§…¹ýž„×·/o8Jn÷ÃfËýóí.ÝíOé‘ÝEd¾]^,ëO³àâúvÌ·c‚b1²ØãxzÜþ\Ôu2ÃìZ'ƒ—Òz4ÔW&™ñ‰Ì·»Êíx4õöÛoß¼y³zÈ'NàU=ÅÂu¼ ^NêØ7FÂXß>kÖ, ciÍ!C$üÑGÝrË-.xtÛñ•öâ¨ìá@À=nw²›¸Óßž$·O.ð¸¢ÓÜÞö‹~ìäÕ’¬j7îå’Òç(1¹=o¸áš½îq»k=äh{Èíá’)3Q@¹Ýè­Ü¾¯ímŸKE|ÖKÍ’IzØéÑ$Ž×<|Ù“žRT3·×\ö\jœ*¬ÊÛp¨"¸½¤Ý5­ê 6!·;J%¹i¹=7]å–¡äöLX”•†W@¹Ý³×_ë:™Êæöï*†C*ŒÛ·¬ n[ÂÛ¬ŠÝvÆ=Ѽ™ŸKu IòÔr{žzË![Éíá’)3Q@¹}üн&?üÛÈqºöµ»šÉ"„ñùŽ«üY6¾~lìò=IÕ{۵þ¢ðÒ¥»¼æw fɖĶâ±Y/ß¿ÎfóâØ&;ð“ÛsÁ#ØÐþÈ‘#8æÂÚFºÇíNvSÈÞÌQ2r{&,ÊJÃ+ Ügˆ/)/>¿%¥gb*@²R€Üž ÞÀ¾÷UUU8æÂÚFºÇíNvSÈÞÌQ2r{x€dÊL ·gED¬— د¹=¼ÑÐÐP__c.¬ i¤{Üîd7…ìÍ%#·g¢¬4¼ävûÙ‰R¬ ·çˆ73Õ=nw¬ƒ\m¹=<@2e†Ú®]»³gÏJ!ÅÞܞ±^*`¿ävWáÄþv‘Ûíï#'-$·ûA‘1‰+P[[;dȓۯ¿þúiÓ¦;wnÑ¢E={ö ¨‘Ün?;ÑB*•äv'É$"·ç¢›Ü3’Ü@Œ¼”ˆçÏŸ™ŸrÒBr»m˜J{< Û+ÄØ^*^r»“d’‹F‘ÛsÑMîIn÷P"OmS€ÜžalH9|ñ.Ì  v*pàØÉd #·çKÖ¬Yƒ×d㘠kCé·;ÙM!{3GÉÈí¶a*íñ(Û¯¶6Y6Hµ´¯XŸjùå,üG;áý’­±ÓÓ-¥e¥À•¾˜øíAnÏoŒ1bÈ!8æÂÚFºÇíNvSÈÞÌQ2r»‡yj›¸ý‹ùâö‘îpûÊíäö5YQ±ýõ’ÛCzWqzsÄhª{Ü^˜Ç&“ÛC:R&ËJ(Ü~ß:ûF-ü¹ýž Öå|»Þ*yüûCœoåGÉí¹ )áöÿ÷ÙßÚzðD›ÿ0§òó‹¢rÑ|™•äöPn”‰²S€ÜÒÛÛ,ùök¸N&ð{ ýÒr{H?JnÏŠˆJªW¸ý~õ7CÞÿ!“‘ÛKê… LLnéH™,+Èí!½½ ÉÒàökáúö ß#lè÷6|ý¡—0ȆL2×·W ·XÒdr»%QifÛ³ÂQÖRÜþåûó´NæßF¾QìO¶¢!ùõí'o²¿á´0Œäö’œFgg€d̘1ÕÕÕ8:Ó"4Ä=nw²›\ºå¤-äöޔɲR ·ãçø0aIš+âö͎ñ$+ì? !ÙYZV |cTókî“­óí¹ÀlYSSƒc.¬ i¤{Üîd7…ìÍ%#·g…£¬7¤¸++&¬Ø›,¤WšÉí.Ý^Ei—¼óH“¸¾´+J°|Sü‹eQør{8¯'NÏ¥ùöAQxSÝãöðmgÊ  ·‡ó£L•™Ѹ 6 ’ƒ…‘&:ŽËÏ× ¿’êÇü—¬éò(á”oñü7Çp¾=”#%·«3±9@n·¹w¶ÜÊ2Qv T·çèg?Š«Ÿô_²6†Ü^ήùæèZÜ$ÉÖÈu2ú¹c Ì ÛË,8«ÈíÙ)k¥@nÇ“ŒyšoðÒjü‰?ÊÍò?}©Sõ_²6†Ü^ή!·‡ryÿ÷îÍ·×ÕÕÕÖÖâ¨^€{Üîd79p§yš@néH™,+*ŠÛ'­"·—oÙ•Ü^NnÿÖXη‡ò£îq;6“©ªªÂÑC ¹>uÛì¦\ßc'·‡r£L”¸Ï¥æt¾ýáU¯—“£’­K=L²Å¦ZZ—)\ß^¾/Jß&·‡s¤îq{SSÓ‰'pT/á@À=nw²›¸ÓÝ EÛo˜þªœnØõ–Ækà‹÷µ¾þo5ÒÈb{íSgo8€4ÓÖzIÉüš …,ÝzY$ŒÀñŸ6 G̳uAúüË^õ¨E™å˜áSgþÇ< ~cìÝ ¶›‰ã‡o™µY ½l†XûÚ›ØcÜŒÑ0Z'a è%®ÿòuÓÚø~ñq/#oÍæ#fÆ€ð¿>°ÞõÎùÛ àIÙ­åËžEüñSgŠ)\¬(Ä£"O™r:ëÅæû*àßUã_.vuËÅj”,W‹½6—ÜÑø—‰äöLdg¥äöPìÈDÙ)™ÛZÌí&™ÜþÒžÜþ¥R¸]ç½£sû©3&wÁI. ü^¼ô8Ò6ìôåÜü~ÛSâ¦ýþp·¯s…ÛåG áö¦Óg¾6²ÀW(ƒŽóë#ñæWK3Í̶~ âöƒ1¸½ÈNûävϧÏÎÓ©S§Ž7G;Í‹f•{Üîd7Eë\›s‘Û³RÖJR¹]?nM—Í›ìá GœoœuôTá9dLfšÜ^»÷˜'%N¿|ë|;¦+ýW=1˜žh™oŸþÂ~œšiÚžo/;·›â³‡.ÚaÚ?Üû‰¢óíNr;~݈ÀíýŸºô“©ùãäöP~+V"qzÕ›å=°`Á‚9sæà˜÷†˜ö»ÇíNv“Ùen„Éí±Ü+3§¯@¸=x>Y E>ï&ÀÄ WÜŽÙf]'óJ!nÿJ)Üþ_?Ü!¦Êz†ÇBpûó[.['s¢ìÜŽíÄLÛ/-P÷¬“‰Ìíí'¼,KSRÎu2ò€ÞO {ðëFn¿cîÖ‚mióŒ€ùö­1æÛ¿Ëùv7˜Ã¡V¸ÇíuŽËM!·§ž¬!–Åí_/0ß~‰Û¶=ß^õLóúgüµrûú¶çÛÛäöàß#⯓ÐDD‰,+·ïŒ¸¾= nǃ~YðK :×}r„ÛñÄGnï÷danÇ/8žº<§)q{gr{Ëçš{ ·ÛÓe ¹=S2sú Dæö·B¯“ ~îR°DÜ‚Q"Ÿ‚®5ï×zIçÛ7¾^àÉÓ¯ oå·-!¸Ë’ÅÔðܾäòùö&ß|{ÚÜèU5üĹÝÜÆ;ßž&··+ñ¹ÔŽÃí-”+ÜŽûák#J^ßÞ··ãIg™1ÜÞpˆëÛCyL÷ÖÉ8‰Uäv'»ÕþF‘ÛC¹Q&ÊNk¹ýŠakM\))lr;ÖÉt¿¸ŸÌ«û p;À^ ß~¨„ùö¹/D®'_:/dÚ†=´ÍS„…Ûÿ±e{$ös;öÕôd1O ηc³O½fÏs©Å¶ ‘,÷×ì4óÆ÷™siÌø—½ ö…o}§Èv(Ú ˜–Ü8ãÕ3Z72ãͰpûâÐûÉøŸD@iòܱYlÁð Óš‘¥;0¸ØÛ‚Œˆ/¶¾]ž›(X©DbÇÔbWãp{±ízø\*:Ëþ¿Ý»wïØ±GûM o¡{Üîd7…ïм¤$·g¤¬9”Â탟ª›ºnß}5;oŸ·U/©…b†yÂöêÆúÑ;vq?CL/ª¿Œ<'¬Ø‹ME°© þ°¢»÷—XÔáA¦Ûæl•bZ@ÅØ•qÊš}}foÁÎ-X—þÇþsÒF¼ðôÁ¥»@!?øï]¸„¹tYškÎê ·?´t7’a:]¹dþèš×Û&ù:vv_¼ëÌÙ³(Åš¬|îbßB$Æ.¡¸„Ý/ÅTìþpÄ)Ö6¨hûO"cÏ™õh¸lÕ"ÜŽÝ '­Ú‹ÄØ~Ĭ1jÏ÷|¬LŽ'd\|nÑÏí§þÀqdĶ–Pþ{ÕCœ×Œ”ˆyz㥯°ÓéXöŒ™aÔÝ@¿ØEkÄÕÝGlÚƒ0ž€ÎÒ§dâö®ÜÞ8vùü»ñ.üаiÿqÌá×î9|Å©çWŒy/Ô)wtý•#_”ï,(yý®·viBáèÌ/Ùrûj"‹æÔÔY·³ùQAµý‚{©ÃÄW@¤ûß< MÐû¨Zzɱè)Y+.ÜŽmŽ:N|½ùOÃ_€Pò†\Ü!˶•E±@"`»È퇚`ü3ám\è)ÙË/&€O½rU þG•qCBí}ožÄfé° â ýko4¡ï~¸é,ÄB|Žð4.¹|'Liâ?±š:‰ì1£“ðøXÝ4³^b°hçå½Çð›úQ¾#  è/ÜŠÐÊ?ñ.Ü.Ý—F¾ à–¢^)Ââ;¬ì‰„l©„íIu™>©Kävˆfÿ_uuuUUŽö›ÞB÷¸ÝÉn ß¡yIInÅŽL”þŸŒ«¯žO™Œø)ûÉ$ÆÜ]Ó˜É.GY z¼{Aó{yWSzjÑø0å G‘ý®înóà¼Êí;Þh}8âe?”- åƒNÍìÂíøN„KRûœ–ïøj`&“0|u„wH2Œ`?¾ûø/iÉR;NÅ=‚èŠå*/yå{Šô¦ÄhzÌc#Ü®1É @m3&@ávI*€/•b£‹¯NÈ„–™yO!ž’å“P÷'ûÌHdÄm¬ ~„ÛÍþ°Y×É–¯øAÊŸì ÷¶þÚµvËþeË–ÁKd碒¯Ùïôü ä+æÀûöíÃ1_f[ë·;ÙMÁ˜Ç«äöä}.KLTÿ¶zG#w,Ÿð|âÌ—„.0¾K2¸}EC³åßfþ! ÜŽWö(·c^T¬ÅÕ2p»L {¸]`)mn—íÁ3ávl’‘=w‹ =¹= ·Ë/Yø½FîU=BÒd¹]ÞÏ…ubZ…Èí*Y)à·g¥$ë-Ir{¢ŒÉ¼ œÅÊ‘xÉ[*·Ëf’Á%G¸:îò-è#”€,˜ G£ÀíØO!Ò^”_²ª =Ž,5Ȉm-±çª”f¾]¶—Bð¦Wdù›eJX·s'·ûÅaLypÛË£k‰©¹=€y)Y0Ç>aÂO™X9Ó¹sg`¼'^OýÜŽ{û`L÷ÜüØçÿ4Ræ•Û%—‡@41Ø%…jydµxö<jâ¹<3cø°ŸÛ±a;ž*c#n¼U‹‚åãöúËæÛaø [y`ZU¸º•Û×àvˆƒ}{ÔìðL¥z„õäÕŽ@<º+ÿ!„ Îå)DOñ…[šã+Š•}ËÍò‘ÌßÑš×ý°#½ÿ’Æ`V_Ÿ2F$¾úá†Ô«  $¾HJspŒV²r;¾íú¿¼x´BX¾ðÔ…öÊû4E¡@ÜL]Z~¾ ÃíøpéS(UävÜu½žhþ:@nWµ(³äö2 ÎêDr»ò!i+0iÒ¤ xj9räv›ñDš§¹=ÌçWöE1¹¹üâ)ªÍžô%®iÙyÔx *Âs©Å²ãj¸]Þ¹ƒWä3Câ¸=8cœ«itD·—dª¼ä+˜ÛK*0fbóÑÔhE)·Ì¿/äåJa¸Ýc€|<‘rŠŸ„p•Ü^PF–Ar{Df~Èí&"2œ¸˜N?vìv•‘çRu);pý£>zçwFŒ1þü€zãrû°ÖýÛåæo“@ÚLàÿ…‘7FåŽÛåÕ–šoßöRS¦Ñäöb½`3·{lu2hH+·oæúöb½jQ|cc#|>ŽÙÛ÷¸ÝÉnŠÝÏÖ@n F^НÀ† úõë‡uL¶:tH Æ:ô†n¸ãŽ;–.]úá‡T™Ûå¥-WØÄíëd¾ý™PóíÀ•4ØÕôA2ßþ\[óí vXz7ó¦N£íæÏqÊ—öÌ·›¯LÖ/Vs{‘ý3ï]´¸†Ü­ËË›«ºººªª ÇòV›nmîq»“Ý”îMEéäöbä%ˆÌíò|¥]ܾ³õ¹T ~î$eàö±Ë÷ ¢6¹ý±nÇj™‚¦¦‡«‹™$²¿Rè¹ÔbY ÆËƒ–û/=LQ0YÙ"“âv<”ZÐæø}gL»q/´ŠÜ^P;#ð“+ŽvšÍ*÷¸ÝÉnŠÖ¹6ç"·Û€¦´!@—¸ý…otŒ< YÐ? YÙ¸}QýmÐHr»J!VnÓnÇóѸåÈíލœ—";=ÏÊÓTpÛS•‹…'¥¹½œÞ˜uEP òfá|ûú]ÍÜŽ§eâ· n÷ã_Rv92ßÞ6·¿Ð¼N†óí* ¹]¥ˆ3ßþñAóí«¸N&d0YÒ Û“V”å…R€Ü$™¥œ Dævyi‹Uëddy¼ U6–9r¢u·vÿgU89mnß´ÿ8ªÞ‡¶Éâgs{¿Á‰Ç¤Ñvs öïüè¦hf ·ï·f¾½Ïœ- ³åW>øb´a§M”€7ÌŽmóý¯9+˜²XdnŸ½¡ð-ìª Ã¶¿~˜ï]*&;ãSU€Üžª¼,¼˜äör"(늠@LnÇ wÌ›¿Ml3YZ©aya͵l ™1UcBÚU²4Ú.¯»Â{»b6ÊNnx‰UÌöÆÏ™ÛÛ¬ÚÉ!,²ÓkS®¬ÔÔÔ`ß0³2 zÝãv'»)®Ï¶L'^8dkˆ<„ÉË­âvy…+¹=ŒÓ³™ÛožÙüÆÛæÛÉíÖ:±R ‹ìôÂ|²2IƒýÄF>8ÇLjO©R÷¸ÝÉnJ©÷3,–Ü^ªGeú2+ykåöûÖ™Ÿ¯6i°Ífi¥†ÉíáK£#’šon?`¼œ7|»ÒHÙgvó:r{™]SzÕEvziÜ],³˜îq{±–2Þ*Èíéù^–œˆq†0ÀÌ­âöÓg`çÛÃøÀ4¹ýxÒÜ4³æ‘Û$ò\â:™’œa§çQž§é)@nOO[– ¹½$wÊÄåW ÎFnøì[~) nÿþ3ÛPìÆ×“áöCœo}‘ÛKòœqœ^è>a¸ Ûã*Èü‘ ·—äN™¸ü ÄÂlãö“œoí¦Òãvì¢ÚŠÂ {¶Ì·“Û «S(–Ü^’çŒãô ÉϸT ·§"+ mKr{I˯@œ!ÌNnï<9ìöƒi°k[.Á–ëi´]æÛãs»ì'Cn¯Ü½à5t(6 Ÿ%dJ'‡°8N/¤neNV]]]UU…c™ëMµ:÷¸ÝÉnJõȤp'^ùÙ’5¦§@œ!,·cgõ§7JéÃxêÌÿÀ$r{y±—x›/„ SŽ™¦ªeL|nÇN2£—íÁƒÏfá†oµþ¹Ô×|ßs;ñJ…ÄUrr‹ãôW8‘7lذvíZ)Í’BÜãv'»É’»%A3œtzé1$K.¿q†0@ò—J|.5Á—¿(y…+¹Ý¯Lyb„Û_½N¦<Ö†¯Å~nß–RS:9„Åqz¥ Èô‘pÛ#KÁŒåTÀI§W~¶dé)g#·—Ó™Ø_WÕüæçRÉíö÷Tx Ââ8½ðÒ1eLÈí1döh 8éôÒcH–\~â aäöhnÁÕ\nsûÞÆ»Úqírr‹ãô´â¥d ·'«'K ©€“N¯ülÉÓS Înÿòý¥½w)ä'Z²Öu2ò¹ÔhúÅÍEn« }ùÂâ8=ûº¨Ù¢5kÖ,_¾G;Í‹f•{Üîd7Eë\›s9éôÒcH–\~â a¶q;žËƒI\ßž•KÔ²N¦~_Ü} ³²¿X½²¾óíå÷N)ÕÇé»I²1bÄ!CpÌÖŒdkwÛì¦d;݆ÒÈí)9^›”q†0@òWlšoÇ$äö ý^+·p“Û±gK†ÚfUµ“CX§—UGT`½îq{vb›ì¤ÓKŠYŽ ÄÂɽžØl~0ÛOx‘fL9ÃÂíØÕ$d¥05CkC™£dVì…ž»ºÆ·#žßv>~*G}‘”©Naqœ^R²œ6 ··)¤¡€“NÏÚ¤ I)g{iÏ[˜9zâÔö^þþ³‰ÍLšNŸ ™žÜR¨Éð|ÁË{…Lœ£dh×+.¶+L89„ÅqzaDcšD ·'"# )U'^RÄÈrlP ’‡0r{©é+M'‡°Jvz9ºÉí9ê,—LuÒéÙ@›´!)*y#·»älÙ–4prsÏé3¦ººÇ4î¬ÊtÛ즬nôêuÒé%EŒ,ÇÜœÉíáµbÊÊTÀÉ!Ì=§‡M kjjpté.uÛì&—n9i‹“NÏÚ¤ I)àÞÞÛÃkÅ”•©€“CX%;½ÝÆîq{ŽÄ¯dStzI#˱AJÂÈí•ìœÙö0 89„U²Ó Óé–¤!·[Ò•f†“NÏÚ¤ I)PÉC¹½Ò2Û[ªNa•ìôJ½2LOnÏPüJ®ÚI§—1²¨ä!ìºiu×<¼±’ÛN‚prsÏéÕÕÕÕÖÖâÜ›ùºê·;ÙMùº©ÂXë¤Ó³6iCR ¸7„…ù`2  aprsÏéa3™ªª*Ãôi^Ò¸ÇíNvS^n§ðv:éô’"F–cƒî aá?žLI¨@°Naî9½¦¦¦'NàÜ›ùºê·;ÙMùº©ÂXë¤Ó³6iƒ(pòäÉvïÞ}À€Ï<óŒÊrôèQÄtîÜW5Þpo óÁd*@Â(P†!¬¾¾sÅW]u•éFuíµ×^ßò‡°^úøã'L˜pÝu×õìÙsñâÅÀúõë{õêÕµk×xàƒ>0/yÂtzaº>ó4îq{æ’Ò€0 ”Áéy<O+JO?ýTF¨÷Þ{鍊nÚºu«4ÃÝ´iÓÎ;·hÑ" pšp óAf*P™ ¤=„½ÿþû˜aÀÞãn=zôªU«üŽkæÌ™ýúõüÄÞ½{o¾ùæ;vHšcÇŽuêÔiÅŠð„cÇŽÅ nüy5†N/73¹=Ýäž‘i;=uD T²çÏŸÇœU·nÝð3tÀÖ¡C‡ .ˆ&ƒÆ´|1}8„¹çvØ"*”åÂà üܾråJ¿×ä¯[·Nâ×®];{öl /]ºŽN˜“ÇÄ»„ éô’º=R-‡Üžª¼,¼˜åqz]#+D·ß~ûꫯnß¾ýž={¤Éx)[ß¾}@òÛ¶m›2eJÁPs+öáe< åÂüÜ>~üø.]ºÜvÛm .Äï†â¬>üðC8ºƒöîÝ{âĉ‡Æ¹4òÁ‘ø…qÞ¼y7Þx#¦Ü‘ñÔ©SrÉtÏéM:uܸq8ºtǺÇíNv“K·œ´¥X•òÑØ%K–€ÛÑ^p;~eÀJ¡U§‘ šãM1òI¹=¿í’݉±* ÚŽ7_‘ Z~›#=Ž› ·–]á+ÉÝwß÷ræ·QnÇç%©OGÝ~ûíøÁÜŽ_(ð zذai|d)“Üž äD(ŠÜA4f)›äöDÜ, I\Ì·›l}íŸoÇǶGº¸ËÔASªŒg¾!—€ñh¬„G5}útÍ‚iaŒž–9€>xc;4@½+·ç·]à[|QÁ·˜€ÅO9ùmŽ4+Êô9¼‘oðD|Nåáö[¼ð€(†#çÛËÆy¬ˆÜžÇ^«›ÉíêɰJY³fa ‰˜„õíJ¶Viƒë0¡·yóf~ ?p;ž™ÿ 9mמ={ô‘ãÇcêÂæ½›p/á’;äôéÓX‚…o¸9m”‡Ûl…,N{çwD(üÚÂõíåäLSÀŸàXÎJ#×U±Üž¯nŠÜ¿yÏHnÏ„ˆXi› `a °ª®®îÌ™3xÒӿōh žz>ÁZO»°ÜÓ¡þýdÐLeÃI‚$纟 Œõ·Øõ“¨£Gö˜á©Î·Ã†œ¶ ®pS­Zµ ߉°n_çÞsÚ¹ð]_ñ'WGñ'ñyl”‡Û“½Ó°ê Ÿ)ÙO¿ßÉb6Ñʶ£{ëdd‰޹@¦Šåö|uS.î¥4Œ$·Ûæ±i*€çR±ìÁa•»åû·cßlÌsÂTùƒ÷“Vï> †ÄV-h¦6,uÉã7}¬ìµgÿvfr{~Û¾¿Ýpà Øótä@7avýé§ŸÆŠ,|Xðe?Nå±Qø‹o¬øA··Þzkâ­€2øÍKöoÇ ¤|;îq;óÁþü8¦1‰—Y±Üž¯nJ¼ßóR ¹ÝN¿M«¨ T 2pÛóBDbgÅr{¾º©b­%·Wæ¸ÀVS*@¨€ Û³E2r{¶ú³ö`ÈívúmZE¨ •©¹=˜[Ò¾JnO[a–Gr{eŽ l5 T€ Ø©€{ÜŽ§xæÏŸc\)[ÞŠåö|uSÙîÛ*"·Ûé·i T€ T¦îq;önÂ[}q´ ÚS±Üž¯n*Øw•In¯Ìq­¦T€ P;pÛóESËíùꦊµ–Ün§ß¦UT€ P*P™ Û³E2r{¶ú³ö`Èí•9.°ÕT€ PÊT¯H[°`ÁÛo¿mmóÉíÁÜ’öUr{Ú ³ü8 Û­uÝ4Œ P*@WoªÚ¸qã¨Q£ðj³õë×[øN7r{ª‰Ÿ—Ü_C–žäöÄH¨ 6+ èŽ÷ß}÷Ýx^²®®Î*kÝãvH]UU…cz0“`ÉËíùê¦{<_E‘Û­r×4† P*@RU`ܸqßÿþ÷.\¨Ke0ñžj¥î·oذaíÚµ8æ*–ÛóÕM¹¸—Ò0’Ü^ªGez*@¨ȯGŽñ¿k×.OL¶§îq{ô’^™ËíéIÊ’T€Üž­fíT€ P*•.\Ȫê€zÉí BN„¢ÈíDc–²)@npž¼D¨ Ž)ðƒü@[tÿý÷kØž¹½lT°"r{AYi‰äv{|5-¡T€ P´À’Z…ÖÈÌîqûš5k–/_Ž£%älFÅr{¾º)¸¾JnÏÜEÓ*@¨(›“'O®­­ýôÓO± $Âe«7|Eîqûˆ#† ‚c.hªb¹=_Ý”‹{) #Éíá})SR*@¨@ÞÏ™33íO>ù$Â6Ç=nOƒ^Ò+³b¹==IYr‚ Û-tÚ4‰ P*@*Vr{‚¡(r{ј¥l Û+vh`é ¨VÈ8p`Û¶m 8Z¨¹½lT°"r{AYi‰äv 6M¢T€ P”¸ë®»Æ¥2ò—R-qŠ%·g HäölõgíÁ ÛãxWæ¥T€ P|)€‡ï0ån³Íîqû˜1cª««q K®V,·ç«›,¹[Êo¹ÝfïMÛ¨ T Y,X0sæL®“)'o`ÈššËYiäº*–ÛóÕM‘û7ïÉíÉŽ, P*@lVà⮓É;¿¤eÅr{Z‚²ÜD ·Û<¾Ð6*@¨¨4Ü['“(¶¤^¹=u‰YA Èí•6"°½T€ PJVàã?®¯¯Ÿ7oDؽ{·…RÛc@MYÉí ˆÈ"RS€Ün¡Ó¦IT€ P*’Ó¦MÃZë üaÆ¥TKœbÝãöºº:¼£ÇÔX&É‚+–ÛóÕMIvy®Ê"·Çñ®ÌK¨ ùRoJ…ÁrªXnÏW7åâ^JÃHr»…N›&Q*@¨@J <ùä“&LèիפI“ž{î¹”j‰S¬{ÜÞÔÔtâÄ ÓÀ˜ÄˬXnÏW7%Þïy)ÜÇ»2/ T€ äNÇ/^¼$i§åîq{^ˆHì¬XnÏW7U¬µäv;ý6­¢T€ PÊT€Üž-’‘Û³ÕŸµ+@n¯Ìq­¦T€ T¦¿;ï¼ÓBÈíÁÜ’öUr{Ú ³ü8 Û-tÚ4‰ P*@ÒVàôéÓxwjÚµD(ß=nŸ:uê¸qãpŒƒ+eË[±Üž¯n*Ûý`[EäöN•Y¨ TÀf̘aa+Üãv|?Âëiq´ ÚS±Üž¯n*Øw•In·ÐiÓ$*@¨HIc™ÌÀÙ³g§TKœbÝãö|ÑTÅr{¾º©b­%·Çñ®ÌK¨ T YÈíÙ"¹=[ýY{°äödý-K£T€ P*Gr{0·¤}•Üž¶Â,?Žäö8Þ•y© T _ ôéÓ§GX-Ó½{w„°mW÷¸}÷îÝ;vìÀ1®”-oÅr{¾º©l÷ƒm‘Ûó5âÐZ*@¨ˆ£ÀÌ™3±“ J8wîܘ1câ•R^÷¸½ºººªª GÛ¨ =Ëíùꦂ}W ‘äö”/‹¥T€ P Àû|Ã~úÓŸ0ÀB ÝãöìÛ·Ç\`UÅr{¾º)÷RF’Û-tÚ4‰ P*@RR`Ó¦MÀõ{î¹3À§TKœbÝãö4è%½2+–ÛÓ“”%'¨¹=Žwe^*@¨È£2ån§åäö!'BQäö¢1KÙ ·Ûé·i T€ ¤¤ ½¡¡…¿÷Þ{)U§Xr{Ù¨`Eäö‚²0ÒÈíq¼+óR*@¨@¾X¶lÙˆ#úöí ³‡n¡ñîqûܹsñjZ-!Ÿ`3*–ÛóÕMÁèðUr»…N›&Q*@¨@J Üu×](‹Ûq”pJE.Ö=nÇ>“'OÆ14U±Üž¯nÊŽ”†‘äöÈ®•© T w Œ7nݺuØUfýúõS§NµÐ~÷¸= zI¯ÌŠåöô$eÉ *@n·ÐiÓ$*@¨HIwß}wÑ¢EX!³|ùòóçϧTKœbÉí BN„¢ÈíDc–²)@nã]™— P*@¨@² Ûˆ@+"·”…‘–(@nOÖß²4*@¨°YL³ÛllsÛ9‚£%älFÅr{¾º)¸¾Jn·ÜÓ<*@¨HPy"5Á/Ê=n¯®®†ì8悦*–ÛóÕM¹¸—Ò0’Üž¸ËeT€ P*`­ .¬««ûô⟅vºÇíØ-¿¾¾Ç40&ñ2+–ÛóÕM‰÷{^ $·[è´i T€ ¤¤À Aƒ0÷«)Õ§X÷¸=/D$vV,·ç«›*ÖZr{ïʼT€ P*@’U€Üž-’‘Û³ÕŸµ+@nOÖß²4*@¨°S¼úG [±b…ŠUäö`nIû*¹=m…Y~Èí6{oÚF¨ I)€µ1R”’*9ÙrÜãöšššùóçãWÊ–·b¹=_ÝT¶ûÁ¶ŠÈíÉú[–F¨ v*€•íò4ªpj¡©îqû¤I“F>8GÛ¨ =Ëíùꦂ}W ‘äv 6M¢T€ PÄð<‘*¦&^KüÝãö|ÑTÅr{¾º©b­%·Ç÷±, P*@¨@R Û³E2r{¶ú³ö`ÈíIyZ–C¨ T ¾äö`nIû*¹=m…Y~Èíñ},K T€ P*”äö8T?/¹=¾†,!=ÈíIyZ–C¨ T ¾îq{uu5ž&À1=˜I°äŠåö|uS‚=ž¯¢Èíñ},K T€ P*”îqû† Ö®]‹c.©b¹=_Ý”‹{) #ÉíIyZ–C¨ T ¾îq{ô’^™ËíéIÊ’T€ÜßDz*@¨ I)@nOr"En ³”Mr{Rž–åP*@¨ˆ¯¹½lT°"r{AYi‰äöø>–%P*@¨HJ÷¸}Íš5Ë—/ÇÑò 6£b¹=_Ý܉_%·'åiY T€ Pø ¸Çí#FŒ2d޹ ©Šåö|uS.î¥4Œ$·Ç÷±, P*@¨@R ¸ÇíiÐKzeV,·§')KNPr{Rž–åP*@¨ˆ¯¹=AȉP¹=‚hÌR6Èíñ},K T€ P*”äö²!PÁŠÈíea¤% Û“ò´,‡ P*@¨@|ÈíÙ¹=[ýY{°äöø>–%P*@¨HJ÷¸}̘1ÕÕÕ8‰%W+–ÛóÕM–Ü-å7ƒÜž”§e9T€ P*@â+à·cÈššË9j¬XnÏW7EèY7²ÛãûX–@¨ T )Üãö|ñRÅr{¾º©b­%·'åiY T€ Pø Û³E2r{¶ú³ö`Èíñ},K T€ PW¨¯¯¯ªªºêª«Ì=ztÀ€;w8p`cc£^úøã'L˜pÝu×õìÙsñâÅÀúõë{õêÕµk×xàƒ>0/yÂäö`nIû*¹=m…Y~Èí‡ÉS*@¨ ¢Àûï¿>ÇÚl·_ýõÓ¦M;wîÜ¢E‹€è*×Ì™3ûõëªß»wïÍ7ß¼cǹtìØ±N:­X±â½÷Þ;v,Ô,þ€{Ü^WWW[[‹c\)[ÞŠåö|uSÙîÛ*"·û}&c¨ T€ ¨'Ož4¹Þ¡C‡ .H‚Áƒ#„ùëÖ­“ðÚµkgÏž-á¥K—"™„1'‰w <ºÇíØL¿Yàh´§b¹=_ÝT°ï*!’Ü^Ðm2’ P*@¨€(àávl»Ñ·o߆††nݺmÛ¶mÊ”)+W®DÊ?ü°}ûöìÝ»÷ĉ> X•F>8óóóæÍ»ñÆ1å~Ûm·:uª˜¼îq{SSÓ‰'pÌVU,·ç«›rq/¥a$¹½˜çd¼% `(<~ü8n~Œeü£T€ ˜ À3À?ÀK¤ê¯<ÜP>|8¸‹Õ·oß>gÎÄÀ€C‡µk׋gÀí“&MB®k®¹F ëÓ§Ï’%KÀíÝ»w·4hãÆÅlF—-[†Ñ9AŸe¶©@År{›Ê0 Û‹yNÆ[¢e aü£T€ S^"Uåáv,SÇ"v­Ñ3ß®©ãï¼óNI6jÔ¨éÓ§kÌ·£L=õÈíÙÒ¹=[ýY{°ävÃä©m ¼ýöÛ¬÷ïß{•T€ PSxøx‰T—‡Û±ä£cÇŽZ#®cœÔ±oŒ„±¾}Ö¬YÆÒš!C†Hø£>ºå–[$\ðHnæ–´¯’ÛÓV˜åÇQN^¢ ÷`$È\aÿ¿½o²ª:×ìºå$u½1‰71Ñ(qÌ£FcÔä&&_(mæ¼DšV[@l 44!<:<Œ8 ÐDFF¸X@“š’džiìš 2%2¦(ræ»wWíÚµÏ>§ÿÓì}Ö^ÿúººví³ÎÖú×÷ïõýßYgíµ/f€ó³D@7…Ia!ÝVÄr—yóæeî'ƒ53#FŒÀ”û¾}û Îýýd ì±fæý÷ßÿì³Ï°™Ì«¯¾šƒZõ‘Þ¬Y³¦NŠ£W£³ºÝ®0Yq-%ádaH/Añ-"}),‰Ì:‰€›$ À¡·±…#®ãdðàÁ_åÞ¿÷«bsHì$·7BÉwíÚkã]Û¿}éÒ¥øFƒ£W©³ºÝ®0Yq-%ádÒ¤d-žV @ÝžÄÀgD@*SIÏìÅé¬n7 ;[" ’ôZ!ù‘Ô"À&Ë4#" 2…‘ôÌ^ÉÔífñgë¹PIz©• t¬0…åÂ|—¸Œ€ÊFÒ3{IS·›ÅŸ­çF@%éµBò#©E€),÷æ»DÀeT¦0}¤·wï^Ü¢‹£ת³ºÝ®0Yq-%á¤JÒK­¥c­@@_ Kb ³N"à&*S˜>Ò«¨¨À£cq´â*uV·Û&+®¥$œTIz­‡üHj0’žþù5kÖGܲe˰cj°$òü–[nÁ®‘oÉ 3[ü¬Ð¥Èϲè@@e 3Bz‰^ À1ÑVâªÜ¬n_Wß$ÿ‡šÅÕe¯»Âoß-ªM%é¥V‚Ò±V ’6tèÐqãÆµ8´ö³Ÿ]¼no±Ï@è’°6šP™ÂRBz6^±ølV·ß<¦Vø?cé/+± •¤× qÈ\<Û·oÇ/¡=ô¤ªsçÎM›6­{÷îØå¸¦¦&ÇGbIa˜FøÝï~‡Éð›nºiõêÕ¤‹/~ôÑGýÑ:dÈ)S¦àåo¼›Ë/¿:ôß}òÉ'¯¸âŠ«®º oÍž=Û+onn~î¹ç~þóŸÿô§?}öÙg½Bèö™3gvéÒåºë®ó7+F»ýúõ»þúëo»í6Ó¥`%þùáÇñ´G¼œ8qbçνòHç#]‚D¿ôÒK/¿BœD xN ƒ€Ê é•­P·« «šN©$½LíÇ’Â ù4ðlíBäC0{ïb"9›e,) Sú×^{-MîM¶cü~úé§?ùÉOðØño~ó›‹-ºýöÛ±üÒ×PÎÁùv”C$‡ÖÉ`zÏž=þG¼hlo ~}øñ*ÄKLÚCÕã¡ç8ñ?ûƒü#Ñj=²Ngºä×:Ù¹s'¾# 8sþÞ[™ÎgsÉ›ZUY²áK"PT¦°XH¯àË›Àï›sæÌÁQþƒ–Îêv»Âdð 1Û´JÒ˦Yž4BÝ~öìYHÓƒ4húôéбX`“Í·¸RØñãDZ kNü‰÷o¼/‡h¿ë®» áƒ#1¤œñV¦H†ô­¯¯~ ç¾Æ†²ÔíW_}5&ÞtûÉ“'½{…~U¡Ö#ë„q¦K~ Á“ ¯L@¯_ûýksçÎõ]Êt>›KÁŽøÕFúïò„ •),.Ò+XZl?Øa±_èg»?eÊÀYÝnW˜L]ÆÛUIzÙ Ë“F@¨Û:Ô®]»3gÎ@·WUUáSX[’Í·XRf×½±6uêT¬'÷Îïø÷?œcé;4|p0†”3Þ;v,Ö¨ãúß³ÄR¬Ç ~0Rc£føâ€‰}Ïþ¨¬¬Ä95Vj=²NØgº¬Ä?¿ï¾ûðÝ/ñårÝ+t>Ò¥H‰Yè·È"P0T¦°XH¯`!ˆ½!l“å,ù}C¯/ÎêöØCÉ “@@%éeS€,O¡n÷æÛ›šš< ãKKK³ùK Ã*ÜVyóÍ7cÍù¾}û¼¡„ûRqo,Î!kýµèÞ[PΡõí¸gsò¸µ7“z6;P¿¸ßÕŽ9Ò+ jlQ ñ `Eý‡~èYbíJ·nÝP'Ž8÷ ½c¨õÈ:a™éR°ÿZÂx>iÒ¤ïÿû^y¤ó‘.A¢ûñëŒ,ôßMôø·iÓ&Ñ&X¹E¨La±žEA ¹*”ÍØt–¡ÏÆòRèÀ×/»¼¨¨Gáö/±›%ÔýX0d%É! ’ô²)@–'€P·Ã uìsâùƒõíXLžÍ7)ÌÞÉ dwj¦nw'Ö’žªLa HO»l6BÙLÝNÝžíÒ]®’ô²)@–'@¤nÇ–ƒXR~úôé`ë .1b¦Ü1û=`À€¤÷“1;Š©ÛcÄŸº=F0T¥2…éÓí zll…£ä’£nÎÌÇ®Ûó “$”´I•¤Ô‡Òý3Ø7t#O¶øÊuûºú&KþóºƒU耾õíy…)[øXž4*IÏj™JçCèKaIjÝõS·ëŽo¾½S™Â'=¡lNJ{f¨S~i ЧÛåÑÒ *I/$üøÒjOaÉ!MS·§3.¦¼R™Â'=¡l¦nÏëˈ©ÊvcG@%éY-Sé|ÇSXìCÞö ©Ûm`¼þ«LaŽ“u»ð+ u{¼dbKm*I/$üøÒjOa¶0IÁü¤n/ÔV4¤2…é#=l>°dÉ%u»)ÝžW˜$¡¤M¨$=«e*! /…%1Ý©“ºÝXKzª2…é#=<{Â+p”Ä”ºÝ”nÏ+L’PÒ& T’^Høñ¥ÕèKaI dwê¤nw'Ö’žªLaŽ“u»)Ý.q´1Ž€JÒ³Z¦Òùާ0ã‘6¨ÛÓ³þ¨LaŽ“u;u»YVIyë*I/$üøÒjOa)'»GÝ^xÌÓÜ¢Êæ8éQ·S·§™sŒû¦’ô¬–©t>„€ã)Ì8E¤Íêö´EĬ?*S˜ã¤GÝNÝn–URÞºJÒ ?¾´ÇSXÊ ¤ðîQ·ó4·¨2…é#½ŠŠŠ²²2%×u»)ÝžW˜$¡¤M¨$=«e*! /…%1Ý©“ºÝXKzª2…é#½M›6­_¿GIL©ÛMéö¼Â$ %m’@@%é…„_Z€¾–Ä@v§Nêvwb-é©Êæ8éQ·›Òí’Gã¨$=«e*!àx 3Nis€º=m1ëÊæ8éQ·S·›e•”·®’ôBÂ/­FÀñ–r)¼{Ôí…Ç<Í-ªLaŽ“u;u{š9Ǹo*IÏj™JçC8žÂŒSDÚ nO[DÌú£2…é#½ÚÚÚµk×â(¹Z¨ÛMéö¼Â$ %m’@@%é…„_Z€¾–Ä@v§Nêvwb-é©Ê¦ôÆ?zôh%1¥n7¥Ûó “$”´I•¤gµL¥ó!ô¥°$²;uR·»kIOU¦0ÇIºÝ”n—Œ8ÚG@%é…„_Z€ã)Ì8E¤Íêö´EĬ?*S˜ã¤GÝNÝn–URÞºJÒ³Z¦Òùާ°”HáÝ£n/<æinQe sœô¨Û©ÛÓÌ9Æ}SIz!áÇ—V#àx 3Nis€º=m1ëÊæ8éQ·S·›e•”·®’ô¬–©t>„€ã),åRx÷¨Û yš[T™Âô‘ÞäÉ“+**p”\KÔí¦t{^a’„’6I  ’ôBÂ/­F@_ Kb »S'u»;±–ôTe ÓGzØråÊ•8JbJÝnJ·ç&I(i“*IÏj™j©ó+V¬èÛ·o=ªªªÎŸ?ßb/¾üòË… 4è‰'žŸç°×—Â’ÈîÔIÝîN¬%=U™Â'=êvSº]2âhc•¤—Cò­$رcG×®]·lÙròäɱcÇ.Z´¨ÅV ÕŸ~úé3gÎ` 05dûˆã)Ì8E¤Íêö´EĬ?*S˜ã¤GÝNÝn–URÞºJÒ˦YžóæÍ›6mšW9¤û¨Q£ZlhêÔ©Ë–-óÌf̘ñæ›ofûˆã),åRx÷¨Û yš[T™Â'=êvêö4sŽqßT’^6Èò„(--Åüyeeå!C°H¦[·nçÎËÝÖ‘#Gðø<Èõ¹sçŽ7îôéÓÙìOaÆ)"mP·§-"fýQ™Âô‘Þ¶mÛ6oÞŒ£äj¡n7¥Ûó “$”´I•¤—M²qâÄ)S¦ =áÝáÇ×ÖÖ?žÛŽ€¾–Ä@v§Nêvwb-é©Êæ8éQ·›Òí’Gã¨$=Û•*ý"àx 3Nis€º=m1ëÊæ8éQ·S·›e•”·®’ô‚ªç¶#àx K9Þ=êöÂcžæU¦0ÇIºº=ÍœcÜ7•¤g»R¥ÿAOaÆ)"mP·§-"fýQ™Âô‘ÞÞ½{wïÞ£äj¡n7¥Ûó “$”´I•¤T}<·}),‰ìNÔíîÄZÒS•)LéUTTàáz8JbJÝnJ·ç&I(i“*IÏv¥JÿƒèKaI dwê¤nw'Ö’žªLaúHOñ8pàŽ’˜R·›Òíy…IJÚ$€JÒ ª>žÛŽ€¾–Ä@v§Nêvwb-é©Êæ8éQ·›Òí’Gã¨$=Û•*ý"àx 3Nis€º=m1ëÊæ8éQ·S·›e•”·®’ô‚ªç¶#àx K9Þ=êöÂcžæU¦0ÇIºº=ÍœcÜ7•¤g»R¥ÿAOaÆ)"mP·§-"fýQ™Âô‘ÞâÅ‹çÌ™ƒ£äj¡n7¥Ûó “$”´I•¤T}<·}),‰ìNÔíîÄZÒS•)LéÍŸ?æÌ™8JbJÝnJ·ç&I(i“*IÏv¥JÿƒèKaI dwê¤nw'Ö’žªLaŽ“u»)Ý.q´1Ž€JÒ ª>žÛŽ€ã)Ì8E¤Íêö´EĬ?*S˜ã¤GÝNÝn–URÞºJÒ³]©Òÿ ާ°”HáÝ£n/<æinQe sœô¨Û©ÛÓÌ9Æ}SIzAÕÇsÛp<…§ˆ´9@Ýž¶ˆ˜õGe ÓGzMMM‡ÆQrµP·›Òíy…IJÚ$€JÒ³]©Òÿ úRXÙ:©Û݉µ¤§*S˜>Ò«¨¨(++ÃQSêvSº=¯0IBI›$PIzAÕÇsÛЗ’È.ÔùÑGÍ;·[·nmÚ´Y¶lYmm­ ½fs# 2…é#½;wnß¾ÇÜÑôÞ¥n7¥Ûó “$”´I•¤g»R¥ÿAô¥°$² uΚ5«¨¨¨sçÎÐímÛ¶-..v¡×ìcnT¦0ÇIºÝ”nÏ=ÖønJPIzAÕÇsÛp<…¥„(Òàu{¢6T¦0ÇIºº=m<“*T’žíJ•þp<…¥Š.Ì:CÝnÿt¶®2…9NzÔíÔíéd›”x¥’ô‚ªç¶#àx K Q¤Á êö4D!m>¨LaúHoåÊ•K–,ÁQrýP·›Òíy…IJÚ$€JÒ³]©ÚèÿŠ+úöíÛ£GªªªóçÏKº°gÏž'žx·8°¡¡!ÛGô¥°$² uR·»å|û¨2…é#=ä… ¯LÀQ_êvSº=¯0IBI›$PIzÙ ËB`ÇŽ]»vݲeËÉ“'ÇŽ»hÑ¢:~üxÿþýÿõ_ÿ–gÏž=wî\¶èKaI dê¤nw!ÊùöQe sœô¨ÛMéö|Gí  ’ô²)@–'„À¼yó¦M›æUé>jÔ¨ZµjÕ›o¾Ù¢ OaFh!R·§3.f½R™Â'=êvêv³¬’òÖU’žD Ò&FJKK±.®²²rÈ!X$ƒ¥/9æÏ½vŸ{î¹™3gâIO=õÔúõë¿úê«lþ8žÂRN …tº½hÛÒ–Êæ8éQ·S·ÛÂ?FüTIzÙ ËB;i×ÕÕaʺýÂ… ½zõjllÌÝV—.]`ÿÉ'Ÿ9r«Ü·nÝšÍÞñf„ÒÙ(u{:ãbÖ+•)ÌqÒ£n§n7Ë*)o]%éeS€,OÌ·×ÔÔø•—””´8ߎ™öM›6yY»v-VÅû8žÂRN …tº½hÛҖʦô***Àù8J®+êvSº=¯0IBI›$PIz!áÇ—I#P]]=}út¯¬o‡Œo±E,nÇ­ëžÙš5k^~ùålÑ—Â’È.ÔIÝîB”óí£Ê¦ô0Kƒõ8JâKÝnJ·ç&I(i“*I/›dyBÔ××cMû¶mÛNœ8™ó… jnn.//?}út°ðã?ÆR,§A†Â÷7ß žëKaI dê¤nw!ÊùöQe sœô¨ÛMéö|Gí  ’ô‚ªç…A÷¥öéÓû·cÕzhÿvìÍŽï§N yòá‡<»Aâ³9ÖÕ8žÂŒÐB:¥nOg\Ìz¥2…9NzÔíÔífY%å­«$½>äK«p<…¥œ@ éu{!Ѷ¥-•)ÌqÒ£n§n·…Œø©’ô¬–©t>„€ã)Ì-¤³QêötÆÅ¬W*S˜>Ò«­­Åþ8J®êvSº=¯0IBI›$PIz!áÇ—V# /…%1]¨“ºÝ…(çÛG•)Lé?~ôèÑ8JâKÝnJ·ç&I(i“*IÏj™JçCèKaI dê¤nw!ÊùöQe sœô¨ÛMéö|Gí  ’ôBÂ/­FÀñf„ÒÙ(u{:ãbÖ+•)ÌqÒ£n§n7Ë*)o]%éY-Sé|ÇSXÊ ¤îQ·m[ÚR™Â'=êvêv[øÇˆŸ*I/$üøÒjOaFh!R·§3.f½R™Â'=êvêv³¬’òÖU’žÕ2•·p<…¥œ@ éu{!Ѷ¥-ƒ)¬]»vxb…÷·uëV¸ðD¹'Ÿ|•9rdSS“ÏfxDžmѽ{÷Ç{¬¦¦Æ/<ÑGz“'O®¨¨ÀQr]Q·›Òíy…IJÚ$€AÒ‹ä+úRXÙ…:©Û]ˆr¾}4˜Â ÛCd…—ñ³gÏ>sæÌòåË!Ñ}ƒùóç6 ª~ÿþýxØÜîÝ»ý·2Oô‘6Äóõp”Ä—ºÝ”nÏ+L’PÒ&  ’^&Y±„d" /…%1]¨“ºÝ…(çÛGƒ),S·777wìØñ«¯¾òx¬¼¼üرcÞ9&á7lØà¯_¿~Á‚™\ç—8NzÔí¦t{¾£öF0Hz>Gñ„ä@Àñf„ÒÙ(u{:ãbÖ+ƒ)¬}ûö½{÷7nܶmÛ<ÃtåСCwîÜÙ­[·]»v½þúëëÖ­Ã[gÏžíСÃÁƒ 4}úôÆÆÆ²²2’^¶+‡ºº=ÛµÁr `ôr°ß">Ôíd*êv^ ™LaX sþüù@½744€²^ûýk/¾ø"t{III}}ýÂ… !ÝQ~èÐ!LÎú½ªª “ðÅÅÅ>Åež8NzÔíÔí™#%>I/“¬XB2p<…ùC•'Ôí¼2HC «®®ž1c¸ëÝwßÅ"vŸÄBóíþmªñ¥¥¥¾Yæ‰>ÒÃO›7oÆ13‚™%Ôí¦t{^aÊ K ƒ@H/“µXB|ô¥°Â m}­P·ë‹éÅ÷( ) 7¢zëÕ9Ò©S'Ÿ»°¾ýèÑ£ÞKõ>øÀ;ÇúvH}ß,óDéa3, ÂQqêvSº=¯0IBI›$Hée²Kˆ€€¾–Ä@v¡Nêv¢œoM¥°Ï?ÿÜÓ䨦W¯^'Ožô( çóæÍËÜOkfFŒ)÷}ûö 0Àµýd€¾Ôà(‰/u»)ÝžW˜$¡¤M˜"=_•ñ„äF€º=‰ocÔí6F-iŸM¥0ïáÇc×ÇñãÇïÙ³Ç'±Üû·ã~Ul‰}ûÈÇIºÝ”nOz´²þX0Ez‘dÅB"‰€ã),–a®£êvqŒ·*S˜ã¤GÝNÝ/K(«M%éej?–Ø‹€ã)Lá\Lw¨Û/=­ŸU™Â'=êvêv­|K¿T’ž½•žg"àx ‹e˜ë¨„º]Gãí…ʦô0x§NŠ£$úÔí¦t{^a’„’6I  ’ô2µKìE@_ Kb ë®ûæÝ|ó͸­¯¨¨¨sçÎmÚ´iÛ¶íÃ?ŒÂ7ÞxCwßٻܨLaúHoéÒ¥¸3ÇÜÑôÞ¥n7¥Ûó “$”´I•¤g¯F¥ç™èKaI dÝubË(ö~ýúu;6ÜÃËÊÊJÝ}gïr# 2…9NzÔí¦t{î±ÆwS‚€JÒËÔ~,±ÇSXJˆÂ¬ÔífñOsë*S˜ã¤GÝNÝžfÎ1î›JÒ³W£ÒóLOaÆ)" P·§! éôAe sœô¨Û©ÛÓÉ6)ñJ%éej?–$ÀŠ+úöí‹ÝŒ«ªªÎŸ?/lî‹/¾À†Æø`{ÇSXJˆÂ¬ÔífñOsë*S˜>ÒÛ»w/v¼ÇQr-Q·›Òíy…IJÚ$€JÒË!ùVìØ±£k×®[¶lÁCÇŽ»hÑ"a+3gÎ=z4D’Ã^_ Kb 뮓º]w|/¦w*S˜>Ò«¨¨(++ÃQkêvSº=¯0IBI›$PIz9D ßJ<×{Ú´i^Íî£F’´ÒÐÐ0xð`h~η'1´5ÕIÝ®)šñöEe Ó§ÛÁöÀQ}êvSº=¯0IBI›$PIzÑH›(--Å“»±³Ç!C°HK_Î;—»þ .à)áx>x}}=u{C[SÔ횢o_T¦0}º=¯ S·›Òíy…‰Æ¦PIz¹#ßââ⺺:L¹C·C÷êÕ«±±1w+Ðù“&M‚ u»©±oQ»Ôí«À®ªLaÔíBá*7Ãwù•)üâðõË.ÇV´8Ê݈×2¯NÉ»OË”# ’ôr+F¾;˜o¯©©ñ«-))É=ß~êÔ©Þ½{#7á#Ôí)§ˆ4¸GÝž†(¤Ó•)Œº=^}‹Úò’¸¶èöuõMpUò¨ùX:Ç/½j*IÏ<) ÕÕÕÓ§O÷ÚÂúvÈøÜíBäã¡9˜¥Çžzùàƒâ$›Ôw<…µbPëûu»¾˜ÆÕ#•)Lé-^¼xΜ98Jâ.”Íyi{Ô)iÚ³:`|¾]Ž€°ûy…IŽ'-ãE@%éå|7v0gŽ5íÛ¶m;qâö“Áó¬ƒM477———Ÿ>}:XèŸcs0®owP뫺]_Lãê‘ʦO·ÏŸ?»‡á(‰»P6ËU«Öùv9BÝžW˜$¡¤M¨$=_ò¤``½zŸ>}°;V¹‡öoÇ-êXñ޵1‘Î@ósÈ$†¶¦:©Û5E3Þ¾¨Laút{^A§n— r¡¥P·ç&›B@%éEêCZŠ€ã)Ì3¤ª]êöT…#UΨLaŽ“u»PËͨÛSÅZéŒJÒ³T ÒíHOa9Àu|œº]G“è…Êæ8éQ·Ë¹Ð’º= ò1U§JÒ‹”,´ÇS˜)fHU»Ôí© GªœQ™Âô‘^SSÓáÇq”\<ÔíB5.7êö¼Â$ %m’@@%éY*Pév$úRXYwÔíºã{1½S™Âô‘^EEEYYŽ’XS·Ë¹ÐR¨Ûó “$”´I•¤)ÿXh)úRXYwÔíºã{1½S™Âô‘ÞÎ;·oߎ£$ÖÔíB5.7êö¼Â$ %m’@@%éY*Pév$úRXYwÔíºã{1½S™Â'=êv¹ Z uûÅŒD~¶`¨$½HùÇBKp<…Œ ÒÜu{š£cÖ7•)ÌqÒ£nªq¹u»YšŠ·u•¤g©@¥Û‘8žÂâï–ÖFÝnià à¶Êæ8éQ·Ë¹Ð’º½\T°&T’^¤üc¡¥8žÂ F©m覛nÂu‹ŠŠúõë‡cçÎÛ´iÓ¶mÛN:áåÀ/¿ür<½+µþÓ±DP™Âô‘Ì·dÉ%u»PËÍ„º=¯0IBI›$PIz– Tº‰€¾–Ä@V\ç5×\Ó¥K—lºÝó»víRŒ»–•)LéUUUMxeŽ9Bé¿EÝ.äBK¡nÏ+L~¼xR`T’^¤üc¡¥èKaã¶7GÝn{õ_e sœô¨Û…j\n&Ôí‰UV*IÏRJ·#p<…Å5Òí­‡ºÝÞØÀs•)ÌqÒ£n— r¡%u{¸¨`M¨$½HùÇBKp<…Œ RÛu{jC“ÇT¦0ÇIº]¨ÆåfIèöCÍÇP­ä–ià 5>¨$=K*ÝŽDÀñ¦†jZÝêöVCçÂU¦0ÇI/ ݾ®¾I¢0=K$ñ×/»÷Ýà(16kƒ~ÅÎò0%Ñzìݱ¨B•¤)ÿXh)ާ0‹È$!W©ÛVGµ*S˜>Ò«¨¨(++ÃQrÕÉ¡Y1¬O·'&êvÉe/·QIz– Tº‰€¾&ž´Ôí¼ r  2…é#½M›6­_¿Ç¡ôߢnýûˆP9'&aëþÀ“ܨ$½HùÇBKЗÂrI¾B€º=_P™Â'=êvSº=8²Z<—‡‰º½E0ó2PIz– Tº‰€ã),¯á¬Ò˜º]eXãê”Êæ8éÉaìú6¯ õ­“ÉkTÊÃDÝž°-«$½HùÇBKp<…µ8„ÕP·«ñÅtPe sœôä‚0/™»1u»Rêö‹¡¸ÌϪ$=K*ÝŽDÀñ–9f]+¡nw-âyõWe ÓGzµµµk×®ÅQ\êv¡–› •sBa¶.¹6hT’^¤üc¡¥èKadž¼ nÏ .׌U¦0}¤7~üøÑ£Gã(¹>©Ûå‚\h)TÎ …IغäÚ  PIz– Tº‰€¾FæÉ êö¼àrÍXe sœô¨Û…j\n–„r–‡)‰Ö]#º`U’^¤üc¡¥8žÂ‚£ÕÍsêv7ã.ìµÊæ8éÉ¡\¸&aÉõíBT©Û…l&4SIz– TÛÝ^±bEß¾}{ôèQUUuþüù»³råÊ!C†Àþ…^عsg6{ÇS˜p «4:tè}÷Ý'ÑíÇ¿ãŽ;T‚ÀNåF@e sœô¨Û…zXn–„r–‡)‰ÖsÓ‚îwU’^6ÈòäرcG×®]·lÙròäɱcÇ.Z´¨Å¶Nœ8ñÅ_@á¯^½ŸýòË/#?âx ÓÍ?¹{÷ðÃ_ýõÝÞ½{÷ï}ï{¹kã»*P™Â'=¹ ” ×$,9ß.D•º=^îUIz‘ò…‰"0oÞ¼iÓ¦yM@º5JÞÜW_}õÈ#lß¾=ò#ާ°xÇ»]µQ·Û/#ÞªLaúHoòäÉ8J.êv¡–› •sBa¶.¹6hT’^¤üca¢”––bÝKee%–¾` ½[·nçζxìØ±víÚ:u*Ò^_ #ó n岙ʦô° $Ž’k•º].È…–BåœP˜„­K® Ú•¤)ÿX˜(ÅÅÅuuu˜r‡n¿páB¯^½…-Μ9sÒ¤IÙŒõ¥02êv!P.›©LaŽ“u»PËÍ’PÎò0%Ñ:I,‘M5±œHÀ|{MMoYRR"œoßµkWÿþý±ÐÝÿlèÄñæ2;Q·»}aߩۅ@Yd&„ráš„%×· Q¥nwô©$½ðãË P]]=}út¯!¬o‡Œ—4zèСÁƒ?~<‡1u{¼CÞ¢Ú¨Û- –)WU¦0ÇIº]¨‡åfI(gy˜’hÝᤡ]•¤—Cò­„¨¯¯ÇšömÛ¶a—ì'³páÂ`CÍÍÍååå§OŸ655=þøãXÜ,ÌÒÃf2eee8JbJÝû· ¡rN(LÂÖ%×m€€JÒ‹”,´})ŒÌÓ"X@µqãÆ|uû_þòüîÓbå4Є€Ê¦ôŽ=zäÈ%×u»)ÝžP˜¨Û%—½ÜF%éY*Pév$úR˜|x:k9eÊ”¢¢¢Ž;æõÜ¥[n¹Š: š›W™Â'=êvSº=/‘‡‰º=/`[4VIz‘ò…–"àx kq«4 nWÖ$:¥2…9NzrA»¾Í«B}ëÛó¡ò0Q·çl‹Æ*IÏRJ·#p<…µ8„UP·« kR™Â'=¹ ÌKfÇnLÝ.„”º=^êSIz‘ò…–"àx ‹w¼ÛRu»-‘2î§Ê¦ôfÍš5uêT% u»PËÍ„Ê9¡0 [—\´*IÏRJ·#ЗÂÈ<-"@ÝÞ"D4ðP™Âô‘¶ ÃæÀ8J®[êv¹ Z •sBa¶.¹6hT’^¤üc¡¥èKadž no"x¨LaŽ“u»PËÍ’PÎò0%Ѻ˨’ô,¨t;ÇS˜kì´k×®+¯¼OÑmõ~2W]uÝënÎöWe sœôä‚P.\“°äúv!ªÔíñò³JÒ‹”,´ÇSX¼ã=ýµav(ö~ýúµZ·_rÉ%/½ôRú{JcA@e sœô¨Û…zXn–„r–‡)‰ÖcaK+QIz– Tº‰€ã)ÌRbiµÛÔí­†ÎͪLaúHoïÞ½»wïÆQr•Ê¡\¸&a©o¾=¡0Q·K.{¹JÒ‹”,´})L><´¤nw0èÓe•)LéUTT”••á(‰5u{ìß2ÖÕ7ÕÿÇŽ{>‰0Q·K.{¹JÒ³T ÒíHô¥0ùðtͲ¶¶võêÕ¿NfìØ±k×®mnnv @û«2…é#½†††à(¹D©Ûc×í 1ºfCÝîØÃDÝ.¹ìå6*I/Rþ±ÐRô¥0ùðtÍò»ßýn=.^·?öØc¨dÓ¦M®è`U¦0ÇIº](³“0“kly˜äu:È`­è²JÒ³T ÒíHOa­Ôö~„ºÝÞØ™ò\e sœôä‚0 á*¯Ó¢õíòNÉ5¶Ò›?þÌ™3q”\¥Ôí± ra…%OO™ô<7*S˜ã¤GÝ.ÔÃI˜É5¶ÒÃ0/++ÃQr%P·Ë¿;Äk9ô©1I„‰º]rÙËmT’^¤üc¡¥èKaòᙯeccãºuëŽ;–ï ÚS·g‚¿qãÆ]»ve–³$•)Léíܹsûöí8fF0³„º=^5.¯í7Ͼµzý‡±‡‰º=ó"¿˜•¤g©@µÚí+VôíÛ©¯ªª:þ|‹}9wîÜ´iÓºwïŽGÒ×ÔÔä°Om CÚ´iÓÅŒ¾?ûé§Ÿ®^½íÙ³'Æš“«ª¹¹¹¶¶öÙgŸ-À:™ 6ìß¿?¹¾Ä[óµ×^‹eùè_ÿú×xknumõõõV«?žÜ¡1Þyç°D±î­Ô’^rq ÖLÝ.WÚ±[Ê5¶ùä“l6ûöí1b~6ƒXÊW­Z…kûµß¿¶víÚ?ýéOø½†º=`ÓS‰\Æ®ZóªPßúvt_®±åa’×™ž‹0ÍžP·g“‹,—#0oÞ<Ìôzöî£Fjñ³O>ù$¦@=3ò dûˆ§Û±åH¯^½|™÷ꫯ>÷Üsñެ#GŽàΩƒ:t2oàÀwÜqÇæÍ›ýV&Ož¼téRHúgžyžtèкýG?úÑã?îÛ9nÁò¸äéöG}ô?ø|Ã7  ¬ð~ ùÎw¾sÿý÷ãÝlNbêòöÛoŸ1cF°G@šâ?Û§Z]®C·H\$øvù«_ýjöìÙ~aèøÕ¾}û›nºéÊ+¯ìÝ»7„?„é‘GÁåëö ¯LÀ%wôèÑP …| 0pý@·ãÙX¸ƒ×ÿ›o¾‰çÛ644øžÜu×]O?ý4ºðÖ[oíÝ»™Exw›_C‹'Pé@Û»Ñ.74‡o Ôí-Bg—\æ%³c7¦nBJÝï¤nÏ&Y.G ´´tåÊ•xT=+E2˜ìÅ2˜?{ö,D/ò Aƒ¦OŸŽ¹bÜ “Í>R·{Û´k×2 ËB ¹1. ‡0§ŠIË÷Þ{uæ»Ì½Àã5Cª’ÀqнP/ ž<öt;rIIÉ7ÞÑ‚s¨ø†¯˜¬®®†¢›8q"~#€ÎA!_[,'Ë—/Ç”¬/óBºúÞzºý¶Ûn»çž{"›†ÃPì°ÇÊ¥K.¹¤sçÎwÞy'ú…¡pÊ”)˜á<~üxäg[Qˆéå5kÖ æ‚Í·ã ~Ö‰QCÐâò@ð:Ç6mÚà»ÞÝwß}饗>W#l&8ãÇǧ|ÝŽë/½Ø…t»Wˆ§0L2빘’%K–ÀU\Ÿo¿ý6¾bàBÂ势ßþö·èþðC.¼„{AÝŽßG5z?èxn\vÙeÁoÖÞÍËC|åǰÅÂ~\Ò³fÍ ¿÷q pø oFæ¥nÏ dSÆH¸äp”8@Ý.Ôñ›u,½jîâ?¾¹ !hñ]}“ÐêvÉe/·¡nÏ&Y.G¿é×ÕÕaʺýÂ… HßÈ¿9>Ž)\Hî3gÎ@BlC`£†löžnÿÑ|è{ž/*úɃ÷½ðŠnºýÖa?¾®û·ÿéÎû~‡YÊŸtj?ñ²üů9ê‡W?ü½¾ïî;ËQøÌ¨UëÖü_ÉÿÚUŸ¯ZùºOûÆ×qãõ}o¹iॗü¼Ý½ÿÖÜ£T^צËü?œóúþoýÓ¯½æÚ?ð2ÞúÕ/J¯½¦ø»ß¾çw¿y/½Â»~ýÌUW¦ñgNÛ ðÑôŸWüï74áçŒÐV{f nW¯ºÝ¸ÒŽ×êöxÇu{H%òe+ÀXÓ¾mÛ¶'N`?™… +ÁXè{úôé`!l°0SîØƒ÷šµ¸Ÿ .Ô¯|¬˜MÉŽ#GŽ8XíÝd×§OœÇØÓTϯ¹æšë¯¿>´œÞ¿1r9tk±‰l7,àÖ]Á9Vpáö«J•ž‹Û4°¼gÏžèȘ1c°Ú< bízì78«LaÞdE¼¤—† @èu{¼²ÙxmÔíÂ+_h¦’ô‚úç…A7Asâæ5¬ríߎM'°âýÔ©SAO¼ýÛ¡öq$>|+tîB Ã"¸kr {¿@( oJÌp&ö3ÔªÛq}âfÞ”@-tß±+þƒ>ˆAñ• { ?h£™Êæé叨¨Û+íxÀ¬ˆ©äÿP³M Ìq 'ú–JÒ ?¾´ÇSX¢Ã?ÆÊsëöçŸO†Âª[¼øªà¦ý©uƒ à|;î°¾ø†XCr¨LaúHÛUaÓ0%Wu{¼²Y^ÛÐ§Æ L8Ê?¯%B/¹B·QIzVËT:B@_ SÉ9XÕGx<¶ìÃv—ØBÐ_'ƒ ½ñn:{ Äöt˜—†z÷t;6iĦèž&¶uëÖ·¾L'¶{¥2…é#=¬K\µö¿¼ýÎzɤ«|ƒÁxEc¾µéÛ¿ýÞò…÷—ÿÇ|¡ˆËžº]BÈ*I/$üøÒjô¥0ÉÀ´Ý»‚cY56džäéï îªþö·¿ç–Nš4)ýÞÒà *S˜JÒ³e].Aõévyß²¤n’[¶s•¤gµL¥ó!T¦°lã‘åD€ä…€Ê¦’ô¨ÛÒºšª¥n—°ŸJÒ ?¾´•)L26iCˆ@‹¨La*Iº]“ÀN¨/Ôí-2 T’žÕ2•·P™Â$c“6D€´ˆ€Ê¦ôjkk¿ýçÊ«Ò{FªÕ·Nz°|ŽÁ0Q··Èx0PIz!áÇ—V# /…I&mˆ  2…é#=Üî]þì³ƒËÆØ 5ªO·#@#Êž1&êvgIÏj™JçCèKa’I"@$Ø¥ÛW¬XÑ·o_<碪ª*ôœ‹ ïYDzØpZKòoË.1r‘¯O·Ëûž%wz×GzAfã¹#X”Â$#Ž6D€Ĉ€Eº;‹víÚ Àƒ ðl¬E‹eãp‹HŠ=! —þj©Û ÆÈå™y‹H/ű\7¥°Õ«"D@‚€E)lÞ¼yxœ´G×î£FÊFÝ‘u;Ô»AùêlÓÔí`‰lÂr"`‹R˜DfІ°H·—––®\¹²²²rÈ!X$Ó­[·sçÎE²kB¤'_ÓQ$ü×·úE®„9ß.Ç*vKêvêöHòda8uêÔ;ï¼ó׿þ šD€ `𾤬rûP\\\WW‡)wèö .ôêÕ«±±1ò# ‘ÞÖÞ;þ=#ÿ¥/L.¯£‘Öjô‡mo¸úê«qL¨þÂWkQ˜p1yÀ©s‹H/’ßX¨O>ùy™D€l€%ÒÏ„˜o¯©©ñý,))É6ßNÒËh–"à!`éùtǧ8{ö,®O̧áW!þ"@‚`jü–H?+VWWOŸ>ÝóëÛ!ã³ùLÒ †˜çD€°ˆô²Qˉ D€¤úúz¬iß¶mÛ‰'°ŸÌÂ… Sî0Ý#D€"@ˆ n"€ûRûôéƒýÛ±Ê=Çþín‚Ã^"@ˆ D€"@ˆ D€"@ˆ D€"@ˆ D€"@ˆ D€"@ˆ D€"@ZÀñãÇgΜ٩S§ÚÚÚàDZÑ1îäêÞ½ûc=Ü6|ðÁÀ±òË/¿üÅ_?¥ã|Ò¤I;wƽløÃ¹ß©˜ø6ÊNV¬XÑ·o_àPUUåÚm}íÚµû÷Kàß[·nõ"ûñÇ?ùä“]ºt9rdSS“²pûÝÙ¾}{YYÙC=ä—à$[ßíÇŽCìð &Äñ­·Þò;˜­w¾AšO²u*•¥¹/™¾a/ Fìäé½eu¤¼.„zdu˜Tòdd§¬Sæ°b‰½@œ¿ñÆÆ [¿~}°óçÏG!rÿþýýû÷ß½{·÷nssó#<òî»ïž>}zÊ”)“'O~JÇù«¯¾úÞ{ïeö%&™–:JvìØÑµk×-[¶ c"Ñ,Z´HG¿„½ugZBÃÏž=ûÌ™3Ë—/ÇWÚL%Ÿþ94-vb éöl}·k\àÁ©Þl¬_¿~¸È½eëÍÖ©lTfE§<'7oÞû ›É`%‰Õt£_Iþö·¿?~É’%¾M6L|e'X ‚…ÜXÝ}âÄ ì'ƒî+ë`Žî`¡”§É±Ÿ¾»y÷ÄÁç¸]¿¢*ÞOƃ%¤ÛsôÝ®q°âÞF¬ûòîKE(½þZÙlÊFe^—-:úóí9®C‹ºWƒ=²7L*y2[§ì “]CƒÞ¶ˆfڡñq&1p²wï^ï#X_!Ûp;?nN Ö³qãF(yܹ‰õ®úöoGB‡FíÙ³çO<Ís° Àï{L|e'}Ÿ>}pg.o½²f뾨>Çw·={öøf öŽöû’íßÖA˜Þ„´ÀÉàÁƒ=Ël}·k\à¾,v‚JǼ4Vú dëoæ“ÈNå ²4÷%Ò· Êµ:R~ïüY&•<Ù)«Ãä_u> stream xíÐ1 þ©g ˆ@aÀ€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€I±! endstream endobj 11 0 obj 2640 endobj 12 0 obj << /Length 13 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >> stream x…TßkÓPþÚe°á‹:g >h‘ndStCœ¶kWºÍZê6·!H›¦m\šÆ$í~°Ù‹o:Åwñ>ù Ùƒo{’ Æaø¬ˆ"Lö"³ž›4M'S¹÷»ßùî9'çä^ ùqZÓ/USOÅÂüÄäßò^C+ühM‹†J&G@Ó²yï³óÆltîoß«þcÕš• ð ¾”5Ä"áY i\ÔtàÖ‰ï15ÂÍLsX§ g8ocáŒ#–f45@š ÂÅB:K¸@8˜iàó ØÎä'&©’.‹<«ER/ådE² öðsƒò_°¨”é›­çmšNÑ|ŠÞ9}pŒæÕÁ?_½A¸pX6ã£5~BÍ$®&½çîti˜íeš—Y)%$¼bT®3liæ ‰šæÓíôP’°Ÿ4¿43YóãíP•ë1ÅõöKFôº½×Û‘“ã5>§)Ö@þ½÷õrŠåy’ðë´Õô[’:VÛÛäͦ#ÃÄwQ?HB‚Žd(à‘B ašcĪøL"J¤ÒitTy²8Ö;(“–íGxÉ_¸^õ[²¸öàûžÝ%׎¼…Å·£ØQíµéº²šua¥£ná7¹å›m« QþŠå±H^eÊO‚Q×u6æS—üu Ï2”î%vX º¬ð^ø*l O…—¿ÔÈÎÞ­Ë€q,>«žSÍÆì%ÒLÒëd¸¿ŠõBÆù1CZ¾$MœŠ9òÚP 'w‚ëæâ\/מ»Ì]áú¹­.r#ŽÂõE|!ð¾3¾>_·oˆa§Û¾Ódë£1Zë»Ó‘º¢±z”Û'ö=Žª²±¾±~V+´¢cjJ³tO%mN—ó“ï„ |ˆ®-‰«bWO+ o™ ^— I¯HÙ.°;í¶SÖ]æi_s9ó*péýÃë.7U^ÀÑs. 3uä °|^,ëÛ<ž·€‘;Ûc­=maº‹>V«Ût.[»«ÕŸÏªÕÝçä x£ü©# Ö endstream endobj 13 0 obj 785 endobj 9 0 obj [ /ICCBased 12 0 R ] endobj 3 0 obj << /Type /Pages /MediaBox [0 0 720.072 432.0432] /Count 1 /Kids [ 2 0 R ] >> endobj 14 0 obj << /Type /Catalog /Pages 3 0 R /Version /1.4 >> endobj 15 0 obj (Mac OS X 10.7.1 Quartz PDFContext) endobj 16 0 obj (D:20111006025414Z00'00') endobj 1 0 obj << /Producer 15 0 R /CreationDate 16 0 R /ModDate 16 0 R >> endobj xref 0 17 0000000000 65535 f 0000053560 00000 n 0000000175 00000 n 0000053310 00000 n 0000000022 00000 n 0000000157 00000 n 0000000288 00000 n 0000000377 00000 n 0000049491 00000 n 0000053274 00000 n 0000049512 00000 n 0000052345 00000 n 0000052366 00000 n 0000053254 00000 n 0000053402 00000 n 0000053466 00000 n 0000053518 00000 n trailer << /Size 17 /Root 14 0 R /Info 1 0 R /ID [ <8e46439a21c1f950502f8a3b56468355> <8e46439a21c1f950502f8a3b56468355> ] >> startxref 53635 %%EOF pymc-2.2+ds/docs/_images/spost.png000066400000000000000000001223171204033704200171420ustar00rootroot00000000000000‰PNG  IHDRèXñÌ%sBIT|dˆ pHYsaa¨?§i IDATxœìÝ{@Teþ?ð÷0ÜAP¹(ŠwÌÌh·ÒZµ¼¥y«µoi%˲ïws5-·mÍ_mænµ»•¥†mb†š™ºµZ©™–xïÜG„aæúûc˜a†¹Ã0s¼_ÿˆçú9ç<3s>çyÎóHôz½DDDDDDDäS~¾€ˆˆˆˆˆˆˆ˜  t"""""""`‚NDDDDDD$LЉˆˆˆˆˆˆ€ :‘0A'""""""&èDDDDDDDÀˆˆˆˆˆˆH˜  t"""""""`‚NDDDDDD$LЉˆˆˆˆˆˆ€ :‘0A'""""""&èDDDDDDDÀˆˆˆˆˆˆH˜  t"""""""`‚NDDDDDD$LЉˆˆˆˆˆˆ€ :‘0A'""""""&èDDDDDDDÀˆˆˆˆˆˆH˜  t"""""""`‚NDDDDDD$LЉˆˆˆˆˆˆ€ :‘0A'""""""&èDDDDDDDÀˆˆˆˆˆˆH˜  t"""""""`‚NDDDDDD$LЉˆˆˆˆˆˆ€ :‘0A'""""""&èDDDDDDDÀˆˆˆˆˆˆH˜  t"""""""`‚NDDDDDD$LЉˆˆˆˆˆˆ€ :‘0A'""""""&èDDDDDDDÀˆˆˆˆˆˆH˜  t"""""""`‚NDDDDDD$LЉˆˆˆˆˆˆ€ :‘øû:rlÖ¬YèÚµ«éÿiii1bàƒ>À‰'HIIÁóÏ?ï“8‰ˆHØrssñù矣²²±±±9r$î»ï>Ó|g¿)6l0-3iÒ$Œ?Þb?ÿü3¾üòKÔÖÖbÈ!˜?>BBB¼s€DDDítX³fÍé‰O<ñî½÷^/GDDDb“˜˜ˆE‹!22—.]Š+ЧOôéÓ€óß”mÛ¶áÊ•+X¾|9”J%>üðC$$$`ðàÁ™L†?þO>ù$RSS‘‘‘O?ý ,ðÚ1‰›¸‹œ^¯÷uDD$aaaˆŒŒ$''#%%¿üò‹Å2Ž~SΞ=‹É“'#!!ýúõÃÌ™3‘““cšîÜ9ôïߣGFxx8ÒÒÒpéÒ¥¶9""¢vŠ ºÀI¥R,\¸«W¯ÆÉ“'-æùûûcÓ¦MXºt)vïÞ …Bá£(‰ˆHlŠŠŠÐ»woÓÿý¦¨T*\¹r={öÄâÅ‹±~ýz$$$ 77×´Lnn.±}ûv,\¸J¥þþþ¨¨¨ðæa‰›¸ Üúõë„üü|¼÷Þ{èÒ¥‹©9â¼yóðØcA«Õ"##™™™xê©§nO¥Ráúõë†T*õÆ!­V ¥R‰¨¨(ú4–£G"00©©©¦iŽ~Sd24 bccšÃ‡„„   À´~qq1 ¹\nª‰ Aaa!¢££ÆÃß&""ßÒo0A¸ÐÐP†æˆ£FÂL ºT*EXX`æÌ™xå•Wðøã;¼¹¹~ý:Î;×ö‘MƒF=|¶ÿªª*lܸ/¾ø¢Å͘£ß”ž={Âßß7nÜÀßþö7@AAMë÷êÕ ååå˜={6f̘¨¯¯·XÆþ6ù–¯›¨ tQ©T·9¯¡¡Á¥šcoº½{÷Fpp°Çc$""Û”J% |Ú«y]]V¯^´´4ÓÃ^[šÿ¦"99EEEˆ”””˜:ˆ€Aƒ!++ËôµZ µZ˜˜§qñ·É¶cÇŽ¡¡¡AAA­xøá‡QQQèèhlݺÕ×áË ¹K¿Md‰ º€ÕÕÕA.—#66/^Ä‘#G°råJÓü¢¢"ôèÑ …;vìÀ¸qãœnÓÏÏÐí@pp°©vžˆˆ¼Çø=ìmJ¥o¿ý6zè! 6Ìj¾³ß”””|óÍ7HLL„B¡ÀöíÛ‘––fš?dÈlܸÄðáÑ‘‘ääd—bão“mJ¥õõõÐëõû¬×ޝ=j>Î<‘3,3Dâ'Ñsœ®¥¦¦ÇŽÃÀùd•ˆÈ‹ òòòššŠˆˆ_‡#(üm"w¥¤¤@&“¡gÏžÃý‘{øÛ$Á‰'¬¦>|'Ožtk[S¦LA^^ž§B³`/NGZr ­YˆˆÄ/>>½zõ2=Oä Ë ‘ø±cÞ¼y6§:tQQQ¸í¶Û\Þ–D"ñTXVìÅéHKŽ¡5ë‘ø°<¦ªª O=õ¦L™‚‰'âøñã€}ûöaÉ’%Ëþõ¯Eff&`ÿþý˜4iˆ½{÷Z,÷Î;ï`Ó¦MX³f &Mš„Ý»w›æÕ××cݺu˜>}:xà¬Y³Æbݼ¼<,^¼÷Üs:dš>eʬX±÷ß?f̘S§N™æ•––bùòå?~<–.]ŠââbÓÉd€sçÎaðàÁÉd¸ï¾û£GÆèÑ£±páB«šïE‹A­V£[·nV5ן}öJJJðÅ_ ((È*žƒâ/ù ~þùglذ#GŽ`¨]W*•صk²³³±téRìÙ³ðÆoàþûïÇo¼Ý»wãÕW_ŧŸ~ê4N‰DbwŽŽÁgë?K—.ÅÒ¥K-¦ÇÇÇã7Þ@@@6mÚ„ôôtüýïwzÎÖ¬YƒÛn» ¯½ö¾ýö[¬[·¯¼òŠËñu$ …¿ÿýïñé§Ÿ¢[·nVó§L™‚Ç?ü°ÛÛ^µjd2}ôQ444 ((¿ùÍo<¶M .ÄC=„ßýîwn¯[TT„Ûo¿ååå-Ú÷°aðnÝ:ÜqÇN—ýýï×_t{?‡ÂþðSåA{•••å•2CDm‡ :yÌèÑ£ñâ‹/B&“aÚ´i¸ýöÛÆŠŠ œ9sS§Nźuë “ÉЧO«mèõz›Û¶5=33›7o¶™œÀüùóAƒ¡  ÀbÞO<àà`Üy稬¬DMM ‚ƒƒ‘••…?ü0yòd¬X± …¡¡¡Nãq´?GÇæŒ½õ €ñãÇ[MïÔ©JJJpìØ1äççã×_5ÍstÎþóŸÿàèÑ£X·nÀߟ_DDö„††:lÕÚW­$ JKKmþyÚûï¿ß¦ÛwÄó´eË–6Œ¤}ðV™!¢¶Ã&îä1wÜq<ˆ±cÇbÅŠ¦D×ßß~~~HOOǺuëðÙgŸ¡¶¶QQQ­Þ§V«uºŒ³©TŠÀÀ@Óræ ±D"ŸŸ{“¶|ÿÝ•ýddd`Á‚ðóóÈ#¬|{ç,((ï¿ÿ>vî܉;wbûö홈È×vî܉‡z·Ür RSS±uëVÓ¼§Ÿ~›6m²ZgðàÁ¸xñ" ºº)))HIIATT®^½j±ìµk×’’‚cÇŽaÙ²eHII±îJ¯×cÿþýX°`n¹åŒ5 ß}÷Å2:ùùùxÿý÷ñþûïcÿþý¦yEEEˆŽŽÆ–-[0zôhŒ5 ;wî´X_.—#==cÆŒÁƒ>ˆ;v@£ÑX,3cÆ ¤¤¤ GçÁ(** û÷ïÇôéÓ‘’’‚?üáÛøøã1aÂhµZÓ9i‡+JKK1{öl¤¤¤ -- UUUóó›ß %%111ÈÊʲZÿìÙ³xê©§0bÄÜzë­X¾|¹Åü×^{ sçÎEQQ‘)ÎöZ“>cÆ Ìž=3fÌðu(DÔBLÐÉc4 ¤R)F9sæ °°Ð4/<<%%%;v,üüüÜJz###QZZ À2¹œ5kÞ{ï=( ·cýúë¯Þ+OHH@pp0pûí·cÛ¶m¦e† ‚àà`··ïê1´Åz?þø#þð‡?`êÔ©¸xñ¢E‚îèœ=üðÃx÷ÝwQ__ å5þDDBUQQÅ‹cùòå8}ú4>ŒxÀ4?99Ùôk¤V«qãÆ $%%ºt邜œäääØÜGll,rrrššŠU«V!''éééËìØ±+V¬À¬Y³púôiìÞ½wÞy§Å2»víBRR~ùåL›6 ï½÷žÅ|N‡Ë—/cïÞ½Xµj–-[f1êÇë¯¿ŽŸþxûí·±~ýzlذÁbÛ·o7Åjï¡ïºuëðñÇãàÁƒøá‡pôèQÓ¼gžy{öìT*5“|ÐævìÑëõøè£°råJdee¡  ÀôÚ™QVVrrrгgO›q¾øâ‹5jŽ;†ììl¼ôÒKóW¬X 6 11ѧ±•‘Ð0A'Ùµk&NœˆÉ“'cÏž=X¼x±i^RRfÍš˜={6âââlnÃÖï<€Ã‡cêÔ©øóŸÿlš>gÎôíÛ=ö&OžŒwß}×nlÍ·«Ñh0iÒ$|òÉ'Xµj•iú«¯¾Š'N`ܸqøå—_°råJ—ãt4ßÞ18ãh={1<ûì³xë­·0mÚ4tëÖ 7nÜ0ÍstΞxâ ôéÓ3gÎÄäÉ“ñÁ¸'‘X¨Õj9r ´h œ””„ÒÒR(•Jüö·¿ÅÚµkqõêUôìÙ³E¯ýØ{ÐùÙgŸáÅ_4½óݹsg„‡‡[,3uêT̘1‰ãÆÃ±cÇ,æK¥R¼üòËÀ]wÝ…qãÆaß¾} ÉûîÝ»ñ§?ý ={öÄÀñÿ÷øê«¯Ü>†¿ÿý‰A×®]‘ššjGkæJ$¬\¹III ÃÈ‘#­öáŠS§NáòåËH$èܹ³Õ|>t&"±àK¦ä1Ó§OÇôéÓmÎ[½zµéï±cÇbìØ±VËØ{...Ϊ×tÀðþß3Ï<ƒgžyÆjžy»ÄÄD|ÿý÷ógΜiÕ0¼/ÿÖ[oÙŒÃQœÎög·ž­}1¢©ä£>júÛÑ9 Ç /¼€^xÁí8‰ˆÄ ::{öìAzz:î¿ÿ~$&&båÊ•6lC§¦[¶lÁ¶mÛpë­·"==C† ±ÙgŠ+l=HU(8|ø°Umvsæ ehh¨Uóôæ† ‚Ç.\¸€††ôîÝÛ4Ĉ8vìT*Ý8Š&®ÄÑZ!!!VMÜÉÌÌÄ'Ÿ|‚gžy …/½ô›x‘h±ˆˆˆ:Œþýûã­·ÞBvv6&L˜€'žxÂ4¯OŸ>(..Ɔ °lÙ2 >Ÿ|ò ’““[´/Ng5-44wß}·Õ;綤§§ãŸÿü§ÝÎÑÌ·òäISOèýû÷GPP._¾lšäÈÜqÇ-NÎ…,22‹/ƾ}ûðÏþÏ?ÿ¼Å0©F¡ÝXfš¿VADâÁ:œ;w¶hˆ""¿³gÏB£Ñ@¥R¡®®ÎT{]»vEEE¢££Ñ»wo¤¥¥açÎ-ªAïÛ·/:½^Ë—/›ú÷ ¯z½óÎ;øöÛo¡ÕjqóæMTWW[mãî»ïÆØ±cm¾/­Õj±dÉÔÕÕá‡~Àwß}g¾ÔÏÏS¦LÁÊ•+QZZŠœœ¼÷Þ{v[¹µFLL BBBpøða(•JSgzÞtñâEÔÕÕA§ÓA.—#66Öj軤¤$”””   r¹ùùù^ÓŒeæî»ïöu(DÔBlâNDDDBMM þüç?ãòå˦q¢ß|óM‹eúöí‹§Ÿ~€¡YøðáÃÑ·o_›ÛsÔÉSO=…%K–à–[nÁСCñæ›oššœÏ˜1‘‘‘ضm–-[†¨¨(,^¼“&M²Øö€zmo¾/©Tjz÷¼ªª ‹-BÿþýMó_}õUlÙ²³gÏFxx8ž{î9Lž<Ùõ“eçøšO ÆÒ¥KñÜsÏ!""£GÆë¯¿îÖ~\Ù¯#}ô<µZ[o½|ðBBB,–‰‹‹Ã‚ 0yòdÄÄÄ`ÆŒX¸pa«â"c™!"ñ’è;B{2©©©Á±cÇ0pà@Ž‘IDäE …yyyHMMEDD„¯Ãþ6¹§¨¨·ß~;ÊËË}ŠÏ¤¤¤@&“¡gÏžv{Ô'"çøÛ$Ž˜ˆˆˆ<…Ce‘»XfˆÄ½¸ Xhh(¤R)’““1jÔ(8pЫW/”——cèСX»v-† …B^½zù6`""""""j1&è"¡R©4hJJJ,æ—””`РA¾H\ø: ›¸ T]]är9bccqñâE9r+W®tïÞؼy3¦NŠ ¼¼ÜÔ숬ñu<"›]»v¡¾¾!!!˜2eНÃ!`™!?&èUXXˆŒŒ TUUaРAxá…,ÆD_¶lÖ®]‹ï¿ÿqqqX²d‰£%"""O‹ŒŒDHH‚ƒƒ} ‰Ë ‘ø1A¨ÁƒãÍ7ß´;?!!ÁT£ND®Ó³;‰ÄÈ‘#}‰ Ë ‘øñt"êØÂˆˆˆˆ„Ž :‘°‰;‘•——C«ÕB*•"&&Æ×á°Ì‰t"êPø:‰ÅîÝ»!—Ë޹sçú:–"ñc‚ND‚„o¡‘ÈLŸ>:~~|#‘\Ã2C$~LЉ¨Cѳ ˆD"22Ò×!Ȱ̉¯QÇÀ t""""8&èDDDDDDDÀ&îDÔ!°ˆÄfß¾}P*•Ƙ1c|‰Ë ‘ø1A'""" µZ •J©TêëPH$XfˆÄMÜIþu¸Ëÿ{Ù§1l9} iÛr}CGRXU9_œEÁú6ÝOGè$®F©Á¸õÙ¸T©hñ6–ÿ÷>9&sºœR£Ã¸õÙ8}UÞâ}ÀŸö\ÆöœòVmÃÛ&¥ŸÂ¡üj_‡AíØøñã1mÚ4Œ?ÞסH°Ì‰t¤]¹•8VRãÓÖ•¡¨ZéÓ:’¼ ®ÉU8W^×&Û—t 6îU†‡?^©jñ6Ž•Ô"ó×kN—»¡P¾=_Ùâ}ÀÑâ|t¤´UÛð6N-§Ÿ#""""W1A'"Aè5ÛÞcxÁSÚöxމˆˆÈ“ø: J[Wtë;@JåÍÖ|°BÔvêêê Óéàç燰°0_‡C"À2C$~LЉHP$mœ]v¤|²#«¯ðµ¥ÌÌLÈår„‡‡cîܹ¾‡D€e†Hü˜ Q‡Ð‘)Ó#/sGz·ßœ¾±@u„ä;ãÆƒV«eÜä2–"ñc‚ND‚ ïHt3æÌÞ8£þ²uôã§6ïëHdXfˆÄÄÊjì&Geµ m¾oo)¹©„J«³˜vS©B¥ÅµZtÊ4¼yLŽ(5:TÕzØnmLæë«´:TÖ©Zµ=wÜP¨Ñ 1\·ªz5”jm‹¶c¼º²š¨ÍÊV§GYmÊåΩô¦Ò –jÌе:Û±]W¨¡ÒèlÎk©²ZÃùSªµåN¯×[Lóóσ9{Ÿ ^kµÎË„¯>‰ô®ôfÏ<‡ï.Þ°šwåF=Ï<ת¡š9S&Çã™çp²´í‡SÓêô˜»5O\µ˜þpÆÌÚts2Ïb‹ CJ9SPe8gÚ蜹cÉ.bÖ¦-®Áã™çpîZˆ/;}Õò:ýíÇ"<ºù¬'C`?Ñyäó¼òßË€Y›r°h÷Åmÿj!+®nÀÆ“e¦éŸ“áñÌs˜ýÅY«8Í=µ5þR7hîºÎN3ÐÔÿX±a]ec ´'ʧH '14Àþ;ˆÙ¥®]ÇÒÇ导ÁÕ.V®O]ƒ!±½|]ašæKyÖ×Éø9½n£f=¯ÂP.ì=´)s¡ÅQkeeeáàÁƒÈÊÊòu($,3DâÇwÐ;8GÍ3Mï±¶qN¯4õV;T½wwç MåÀØ)Vû"me'gB>žˆMˆ-ø=Å¥ï?oBdGii) BCC} ‰Ë ‘ø1A'»Œ5™íáÕ•c´ùÜâdöLüåÀöø¹Ø yóµY^œÁé1>t²ªñú¶ç$|3fÌðu$2,3DâÇ&îd`ãµyÍ©ÇwÙÇg’Xü#­}ÐâµcÑ·íþÌß¼H»œ Û9LàÃù±õ°ÅÙçFHŸq"""j?˜ ;7›íèT9‚à‰!Ñj ¿––óvôùh <=DDDDîc‚ÞÁ9Jº:Ü v‡;`×´—Wì•uWkÐÉíñTнà‘¨ðt|•S¹©=!oÐâ§üj<0¨›iÞ™²:ä”É‘Ò=°ÿò ”ÕªpoŸHüRxЧk¤~ÜÒ#Ü´ÞÅJn*5¸=>Â4-«è&b‘Ô5Ä4íªƒÞÅ‹ª•Hì PitØz¦3R¢Ò¬wj½^­gÊä½^‰»¡ÙNÏAa•aŒëoò*ñààh«ù‡ ª‘Ð%_œ*è¤HÜÙ«³Õ2Æž±]¹§ÿO^%d70¬g8þ¼÷ ޙ܃cÃ*¨VªQ\Ý€©cúF"<ÈòãšW^‡lY-¾»x“uÃŒ”;{jÊšTvçUbúh«W j”üTPÌÎÝåë ¬;Z ø)¿©ñpSiºK«ÓcÇÙ L ©Y5ôÑâ›øóÞ+X9®/R",ö‘[^‡-§¯aFJ †6–§£Å5ˆ õ7³_¯ÊÑ%Ä×ëÔ˜0 Ê…3i ÓëñUN"Cü1 : ×jHý? ¾=Ò¦ç‘WnÔã©-çðÜñð³ñ˜òçÂjÄE¡WdJo6àHÑMt 2”¹J…*­šÆÞÿÍÇAÿïùë¸X©@p€¢B0yPJ‘qY IDAT7Jýpùz=®+Ô¸£ñ|èõzìÊ­D°¿†Ä†!®s°Åùëˆ>]Cp¬¸ÛΔcÕ¤dœ½&‡V ‰ ÃÄôSxôÖXl=SŽGoíŽè°Œë…r¹ gÊ䈲ÿÕžUdøÌªuzèõzì»\…Á1aØW‰#…7ñΔþèÜ´þWg+0a@‚ü?ÏÝžSnúÛ8rÂOÕN×kÞSú—n໋7ð× }¡ÓÃTÎ4:=¾É«4ý½+×ð÷¥ÊzÔª4g8¿7•¬Í*Å)Y-þodzuiú¾Ùq¶z½×jd7ŽH‘}…Õõ¸¿_vçVBàçÆï6ôø)¿}º#¯B~ÝBñyvjí aÊyƒF‡[{vrzìDޤ§§C.—#<<sçÎõu8$,3DâÇnÖ—Ô`ߥ*ì»\…‘I]L5‹gÊäX´û"ö¦ üu!`Ãñ«VÛ1.Ïï8o5íÕ½W¬¦m=]Ž§ïˆ³WÚ¶\Ó²G‹kðïW`•¸)Ô:¬?*3ý¿y‚îJÂ\T­Ä–Ó×°ñdj¬Ç>^ñ}Ó¸Ñß_ª²8£-§Ë­¦ÙóCÅ€­g ëüa×Ó6~}ÞbÙó ,¹·—Å´ÿÝyÁô÷GGJ$èM¾Ì)džãW‘‚[zX&ÿ:\Œó«1ªwD4&h«â†Âˆœ)“ã©­¹¦å¸tg•¢Kˆ?Æ&w5MÿÓÃ5^¾ç²Õ9ú¿Æ˜sÊê°uöÐÆå cœÿïÝ €ï.’3èæô˜ŒŽÕàã,ÃÄNARÔ6^Þ¦!âÌ•Ö4`ùžËømb„Õ¼¿|g¸Ö{ӆㅯÏCÞl,ì]ç*McŒ-n²íŸŠ,–Óhõøý°X,ø*Ï´=Õ4àýŸ 㩇øáë'†™Ö1ž¿½iñ¼ñÜÀ‹» ã¿¿:6 ðù)Ãøëÿ>aøŽë…—¿½„â›  °ŸL?ƒPU¯Áª…óW|wïLéoú¿¬¦[N_ÜÛzØÝ¦QquÓöËÃáÕ«-YE–c­cºQ¯Á™«r|œUŠð )*ëÔø÷‰«HîŠK• |t¤ñƒ,μûS‘)ÁþÓž+ˆ‹2mÛ8޽¹3eu8SV‡]¹•Ç Vþ?—Žh*ç¶¾#ˆÜq÷ÝwC£ÑÀߟ·kä–"ñã§·ÃkJ]5:½é´­:†3çnk؆ÆZ¶õM²ÎCñ·mk¾¤ôP<ÆãÒØ﻾qžùœrc=«kmmËc-¼9[eNëÆ¶ÕfËÖ™%Ô×jݯÚFs÷æÉ9¨µ:¨4Ætû›³7†¶ùdW“¾¦uíïÐøPBáæ6ÍÕÛ(k*mÛ~Øý¼é›Î¡F«7-§ÕéM1©mĦlvüu6®¡-u6Ì;s÷:y€|‰ Ë ‘øñt[¯ ;ËÏ]ÍßÛã+´æÇä¨ç|wÝÓ)›'·×âç56VZ™hëWæu¼‚i‹8ùº9ùkÐEbÕªU8yò$Ö¬Yƒ®] ͉?øàœ8qAA†æ›)))xþùçÝÚ®½¡§€¶OÈw%"Þh=á27Ê ½E%I›tAߪÏG+Öu´_ãQJÐòdÓûKcç…¼´B*úDDDÔ11A£GB§³n^)‘HðÄOàÞ{ïõؾÌo”ÛS~.öûnO\ §ÉG{ºà-åF¦èÊ’mQî¤.Äh|&áìa‹­¹ŽZYtLbÿö 1ËÉÉZ­F@@RRR|‰Ë ‘ø±‰»À)•JlÚ´ óæÍ³9_PµmÌÑ¡vœ³à>Wó-!ÞÒmû¢<ñ³è4"á…lŸP”¬¬,dggû: –"ñc ºÀmÙ²÷Üsbb¬{èö÷÷ǦM›ðí·ßbÔ¨Q3f BCCÝÚ¾½œB¶¯IswóæÍw­æ 09"Ó¹óàÃŽ¶<óB¸ªv[È{1a4/ߎÆm7.çÊu{_‹#5[F¯ošçѾ <¸-"O˜3gޝC ‘a™!?Ö  Xaa!N:…©S§Úœ?oÞ<¼÷Þ{X¾|9ŠŠŠ™™éÑý7OÆ­ÏÆ¸õ¾y"{¡RÕ?†^’H$xýû+øô¸ÌÉZM\Nàm$?|~Æîâ—*˜öï_q½N©ÿþÕåxžovË?VcÎg.W.WaʆS6ç9z(bì­zÖ¦Ô«]ëõÚ“„òŒå_‡‹MŸj'ÛÓ\Éí/T(L?»½©¼¸ôzãBÎú×ÛHI/T*ðä–sÓ2½†¯r\B°­½ä¦ë‡Ul~ %7•8ÙìºUÛ5€ˆˆˆHˆ˜  ”^¯Çºuëðä“OÂßßßf‚)•J†ˆˆÌœ9‡‚VëýÄÊþ“[iú[àPÁMÓ8ÐmÍ8¸-ßž¿…Z‡_Šnº5 ÓÅÆ1¢Ýñéñ«¸æ`Ø3£ã%5h°1ô”ÓWÐÍ?[ã†Û]Ïå%Ýçζ=Õàc—YYÛvÆ~RêÒ;è­xè°+·Âôw~•Òôw°¿ë_Û-y0Œ}ÞÜš#¥.ïhƒra¶ÁŸ ªí.öãû󈈈ˆ„ŽMܪ¸¸x÷Ýw-¦/Z´‹/¶êø£¡¡ÁÁÁJ¥Þ ÓkœÝì;˃R9+<vx©¿­Þ1†ß¡úyóh/îüd‘o1A¨ÄÄDdddXL›5kÞyçÓ0kEEEèÑ£ vìØqãÆy4AÝãKìüÝÈSã ·T[Ÿ+·j’=¹_/fzmõšw[†Ö|ž§‹XKÎ}ó|ý¹h­õ È†/¾ø …¡¡¡xä‘G|‰Ë ‘ø1A)N‡Í›7£°°‘‘‘=z4î¹ç··#ôtWyê0Ús>`^;h뺻ÝiŸÇ 0 £ÝÓ"àì±-:P³¯m÷ânë˜Ö\a–@êÈ •J…ÀÀ@_‡B"Á2C$~LÐEļ8???,]º´mw( üüçj›ayøÎZÌ.ÚÓ8Ö97¶auÙ[¹WŠ‘'¯Vó^ܾƒÞ†åÜ×Î<>‰éDíÙðáÃ}‰ Ë ‘ø±“8²Ih7ÀNZ¸{~îî¤äÄíàlóaY¶— ·ªÙ½ ½¸òÒõ^Ù‹ÞΞ¬jÐÛmA&""¢Ž€ zW«jûá‡4º¶KŒÛn>ÔRJ ¥¦©Wu=opÈÖg7ê5¦cP¨l÷Ô_Ó8””®YRh«æQ º^íp8µ µ«!ÛU§Ò:ÜŽyÙ°•ËšO«3;n^êúÖÇ5JÇ#Øj‘ Õ»–––Õª,â6ºQßòϼÁ~¼Æ‘šjÐ÷§PÛ|XPׂáôTn*5(«mh,‹öBx6S¾^gçz{ðÃ]ëàÜ:£ÒêLŸA[*êT+³DDDÔ~1Aï *‡ëú?XLohLjå*­Çn°ßû©ÈjZa•ûÃŒ}™Ó4üÔ»Ûn~>ý³Óxv{®éÿ¶’“Úë›iOÕ¾5O’Ý1s£õ¸ëgÊä(ljkÚg§m®÷P†a½MÙev·ýů†¡éÔZžþ2¯Ÿos¹Ÿ «ñÈç96“K#WŽpúg§ñÈç9v—¿5ŽmïÊ>¦›÷Æ“eøý¦h]yøãäšž+¯s{ÕŒ“W­ÊŠ­K¾ïr•EÜ€a|ó?î¾Ø´³í¨µÎ‡ê[açš™3nSC9äó|u¶Âj9óñÕ]µìÛKx8ã ÏN_•´z=¤LÉlvžgc9WkÐm‘ÕZ1nÚ®Ùµ÷ÄQéõMåüܵ:ÌHq²‚ r®5 Á6å•uj+©u¾ ‘›öïß¹\Žððp$%%ù:–"ñc‚NdCkS¡§ló€ó¬æµ£6hSžn¦ ÀqÌ­x*f^æšzq×[Ô¦‹NK‚öðKè¢Øl¯ÑšÛò·«õuómË×ÚMØÛŸ³kÐÒõÄÊ㇥·ó·À¸šÅa ø¸ˆZ‹Ce‘»XfˆÄï “]BÊZšÈ™æ»º—sºžÀ“[ïÈ»?Œ•gÒf'qn¬ï‘a½ln¸õÛu•§ve¬9ÑÁü}tïJOìÏêýrÙ“ã ùtjœ%nײµò.¿ ;®÷[ñ¹{ÈÞ¨¹ôă—¶ÒÌS$vþãöõ°µ½ysw"""":6q'›ÚäÝÛæûpcb«óvm¥»ZÓ˼‘7ŽÐÞyByÃû}zèMŸeo7÷ÔkînÇÓW…MèÉ—víÚ…úúz„„„`Ê”)¾‡D€e†Hü˜ “É ³1zõУ¦c[lW¡AéM%â:;\®¸Z‰r¹ erËÞ×Ëå*›CD†Þè¿g½ln³¡Å4:=~̯6ýÿ—¢›N·kL\$ åWcPL¢G°ïÜÔžÓ*ëTãN±±OGçÊU*mË3¬’› P·b}[®5+ßæ‰~þ¦ëÿMcYtUYmÓvåÃãV+±ç‚a;?ÞDžƒ!å\1ÃÆ°jöžSØ:k*Ðêõˆ Àù Â¥Øp\†Ür…ÍmʯFH€Ôôã‚æŸÏUÕç /}sÉæô²ÚV)ñ›ÄÎ^ŽÈ¶ÜÜ\|þù稬¬Dll,Fމûî»Ï4¿¸¸k×®…L&C\\æÏŸøøxÓ|Fƒ 6àĉ ¤I“0~üx‹}üüóÏøòË/Q[[‹!C†`þüù ñÚ1¶7‘‘‘ Ap°ãßO"#–"ñc‚N&Ÿg—!5!ÂôÿÕNƨvÇS[s±7m¸Ãeæm˵9ýÅ]®÷qV©Óý¿cc,v[‰ÅzC¢}¾Â2a°uþƾÓßéǯZÌËj| `ïÚüØÿààx|åÚ¸Ôï*vi9ÀrXºÛzvÂIY-ö\¸a±Ìr]Oømyý‡|ôé‚f ´9?ót9†ö·˜Ö|Lè_›=€uGe­ŠË]Je÷~æçÎÜÐîa-Þdžãöé…¯—uGî8o5­¸ºŸžh*›ÿ»³åÛšW¼Rm5má׆»Û=·æÖ)Å¢Q‰®x¼ ½5gžßqµ Z§ß}Þ’˜˜ˆE‹!22—.]Š+ЧOôéÓðæ›oâ®»îÂË/¿Œ`õêÕøÇ?þaZÛ¶m¸rå –/_¥R‰?ü ‰ÔÔTdddàÓO?Å‚ |r¼íÁÈ‘#}‰ Ë ‘øñt2©6«–@‚ÚÛc¥{„7ÑÕõmGÓ»«í'êõj÷[K4oµP£t|TËåk=ÐBÃò½kï59Þâ½µUÿî$ÏÞÐüa‡¹j³Ö:í™'ʸ'………!22œœŒ””üòË/ Éumm-fÏžÐÐPLš4 111(//7­öìYLž< èׯfΜ‰œœÓüsçΡÿþ=z4ÂÃÑ––†K—l·. """Û˜ “àyâ}ir¬%IcóË¢s³®Q*Ào—ǯ·±\KK©ðßdo_õÃЦCÕµ3EEEèÝ»7 //ñññÈÉÉÁ3Ï<ƒœœÄÇÇãܹs•J…+W® gÏžX¼x1Ö¯_„„äæ6µ|ÊÍÍEbb"¶oߎ… B©TÂßß¶_Q""""k¼E&¯@Vàjg[Õ8 àFKN±Õ:nlDÀO€¬¹zz7–í¨=ëà¹ó½£G"00©©© Ézll,Ã*‰D‚ÐÐP^u’ÉdÐh4¦e$ BBBPPP`Úfqq±Å6 $$Ä´ r_yy9®^½jÑ’È–"ñã;蕈îEj‡æîuòH‚îáÖ.W {t¯äIž~î#ôZ¢ªª 7nÄ‹/¾ˆÀÀ@@¯^½pþüy :k×®?~½zõôìÙþþþ¸qãþö·¿ ˜ØÔG@¯^½P^^ŽÙ³gcÆŒ€úúz‹eÈ=»wï†\.Gxx8æÎëëpHXfˆÄ :™x³%¹ðêNÛ?Gµè5‚f«¸;fykš¸û¼ò]ïÁ2ìëci%{á·¿´¶}¨««ÃêÕ«‘––fê „ôôt‹eKJJ0aÂ@`` ’““QTTdêÙ½¤¤ÄÔAœqYYY¦ÿ«Õj¨ÕjÄÄÄ´å!µkÓ§O‡N§ƒŸ<’kXfˆÄŸÞŽÊÆ]µÞâoÞ^·7z½Þîk-ÉÏ]€·èÎ&$ÏÔ [v×z¬A÷—ßç÷0OwØž®µR©ÄÛo¿‡zÆ ³˜×½{wDDD`óæÍP(øæ›oP^^nj²)))øæ›oPRR‚ .`ûöí:t¨iþ!CpáÂëƒ#""j'˜ wPg¯Õá”̳7²F¶’s_1OÎÍå–+[®°9ÏSÎ]³LPΔµÍù6÷ÙÉ«vçÙkâÞ’äÜžŠ:ï Ÿu¡ÒúÚ}“çuÍ£Ûû)ßzütWy:9Ü/Ó¶®±JkÈ9ozôÑGñè£ÚŸ€•+WÚïïï§Ÿ~O?ý´Ýeî¼óNÜyç­Š“ˆˆ¨#c‚Þ9ja,â|¡CÓ ¤¦N¬xö¨-p¤Hj©}ûöA©T"88cÆŒñu8$,3Dâǽâ0Wí™7N·³z:^qǘH¹§Ì9ž#j)µZ •J©TêëPH$XfˆÄ zæg«£8ÞIН_+ñº‹ßDmgüøñ¾D†e†HüØ‹{æ°F—7Ý¢ät¸4V¡;Äbï>Žø@DDDä9LÐ;0?Ù[½·Oÿd S¥Öá+ü-Às支†œ#"""ña÷¬°Úz˜«ã%µ¹Êþ0Hä¾Ë×(¨²Ý£¼'åÛéµÞƒ@:“¬²ZÛ½¬“}• ïôÜ/fu*~ð¨eêêê Óéàç燰°0_‡C"À2C$~LÐ;°ODZ6w½ñf{Ñî‹Þ§][ðÕy¯ìGå`¼®í9^‰AÌþ´çНCz5“Ogædžõu$R™™™ËåÇܹs}‰Ë ‘ø1A'""" qãÆA«Õ²GnrË ‘ø1A'""" øøx_‡@"Ã2C$~LÐE`ÕªU8yò$Ö¬Yƒ®]»Š‹‹±víZÈd2ÄÅÅaþüùüR&"""""1öâ.pG…NgýŽç›o¾‰þýûã_ÿú~ûÛßbõêÕ>ˆŽˆˆˆˆˆˆ<… º€)•JlÚ´ óæÍ³˜.“ÉP[[‹Ù³g#44“&MBLL ÊËË})yZVV<ˆ¬¬,_‡B"Á2C$~LÐlË–-¸çž{c1=//ñññÈÉÉÁ3Ï<ƒœœÄÇÇãܹs>Š”ˆˆˆ<­´´EEE(--õu($,3DâÇwЪ°°§NÂÛo¿m5¯¨¨±±±½^‰D‚ÐÐPz;LùûAñÆNDDÔf̘áëHdXfˆÄ5è¤×ë±nÝ:<ùä“ð÷÷‡^o9¶u¯^½P^^Ž¡C‡bíÚµ2d zõê壈[oÏ…¾ˆˆˆˆˆÈ§Xƒ.@ÅÅÅ(((À»ï¾k1}Ñ¢EX¼x1Œôôt‹y%%%˜0a‚7Ã$""""""b‚.@‰‰‰ÈÈȰ˜6kÖ,¼óÎ;¦aÖ"""°yófL:@yy¹©Ù;‰t‘Z¶lÖ®]‹ï¿ÿqqqX²d‰¯C""""JOO‡\.Gxx8æÎëëpHXfˆÄ ºHdffZü?!!+W®ôQ4DDDÔÖî¾ûnh4øûóv\Ã2C$~üô Ѐ|‰ Ë ‘ø±w"""""""`‚NDDDDDD$LЉÈe ãHÔ¾d>–âëˆìÊÉÉAvv6rrr| ‰Ë ‘øñtr[ T•Vïë0Ú\×܍׸: ÁXý@2†õè„/~½æ•ý ˆÅù …WöEStX"C|‘]ÙÙÙ¨««CXXRRø0‰œc™!?&èä6‰¯ð–s ®Ñ·ÿg2DD‚2gÎ_‡@"Ã2C$~LÐÉ} fkD$n>„#=Nâj¥[ë\W¨Û("¢Öc‚ND‚Ä܉ˆˆœ©ªWcÞ¶\_‡ADä1ì$Žˆ‰µ›ÔÖ$| DDDDÃtr›_¹§åÍ»%o¿ƒÎóODÝ_|…BÐÐP<òÈ#¾‡D€e†Hü˜ “Û:IQ¯Öù:Œ6ÇôÐR×Pï~]¹ùN!‘»ØJƒ„nÀ€P©T ôu($,3DâÇÜ€Ecý1™¯Cñª9·uÇÆ“e¾Ã'>›5Ý;yuŸr•Ö«û3×-4•ìD¨Ýc~NB7|øp_‡@"Ã2C$~|Z¤_·P_‡àuÒŽûqñvrîkÝ;±æ¡#` : MÇÍ8ˆÜÄ Q{à ˆˆˆ„…MÜÉm¥ó®æµk¬m#j_ø‘&¡ËÏχF£¿¿?’’’|‰Ë ‘ø1A'rt¢ö…Ÿiºýû÷C.—#<<œÉ¹„e†Hü˜ “Ûôðòx[ÑQZ·Ž‚—™„nöìÙÐëõðK‰\Ä2C$~LЉ\Äß:¢v†Ÿi8•Eîb™!?ö{En›>$}¢B¼¶¿Ñ¡‚¸òo»‹ÀÐîá­ÚÆÀè¶éYúè6Ù®3·ôhÝùh¾Q­?—£’ºx jKSù¦lÙÃܲgÞ­ø]ßHtöÇ—s†¶h¯Žuï¨M€=iÖãzúy8kß¿«Õ´Ûâ:™þîÛÕþC óä}ÝÌníwfJ ö¤ Çß'÷Ãâ{/ܽ6Ž9:,Àæ6ÞœÐÿœ:Àôÿ½iñó‰[¬–Û›6¯ÝçÚù’boÚp,¸3Þæ|[ñ5÷ÍÜ[­¦E…Ú>†æ’"ƒ]ZÎîêÕÙâÿƒ­½3¹z8~Íüœ8*çI‘Á¸µ§ë zu ÆÞ´áx}\—×1gëxŒ& ˆréZšÖøð$.Â0üÞÎ'‡9½®Îö±7m8& ˆr¸Ì¢Q‰.ÇØÛ…òs[ÏNN—1rå Ž sy{DDDD¶°‰;µ˜jµ=ÉÙûZŽf·æ\èômôN¿€]Ý'Þ_³µW‡“ÚûsŠƷš!?‰gú¦Ð;)œÎæ»ÍÓ•…„ËÝÎäÌtã_¾>·mIêâ±yº…„Pö՞˫Ÿ‡Ê«ÎÉgºcvOIYdd$BBBì½E$n,3DâǼÎS¹§oÖ›ÇÕ<çpTñÛºô¦¿¹º»Û³õ°B¨9§T€Ù°·{è—H<ÿ€É›šb7üá±Ï´³tíLjè$t#GŽôu$2,3DâÇwЉ\är%¡›wéZ/g׾Π]­A‘† 8N|[vX–ÛóÔ3§5è¾.¼N<<"""&èÔb-½'l~&iþ_«:uû«¶â ´Î²ØÚ‚PO³«ï {•POV£Ö–O'ŽÍe‰Dâ‘8Û„§ßAìwuXlâN¢(•@¥m»:+=ôy›£ZÂð@)êTZ€ÔÍ›~ó&ß+ÙÉbƒg·R àì”xâ@kjLƒý¥.-àŦðÍwåocßHè¡¡öº†´è™@KÏH°¿j´vç¹+°±|F‡BV£à™amw‹ýº±¶Ñž@w?üDN”——C«ÕB*•¹°ñ IDAT"&&Æ×á°Ì‰ôêöø$FwÆ5¹ 7j̯†º1³K‰ ÃÍ Ç„!¡K0òÊëp¨à¦Õ6ÌkŸ^›©ð—ïò-–IKí‰såuˆh橬¶·ÇG`Tï.ø© ÚbÙè°TÔ©-¦ý®O¤éï?Þ“ˆ¿,,ý]/$G…à”LŽœ29R"Чkd5 Ørº£ûFB¡Ö"«¨*øŸ[c„}—«Ð Ñáìµ:¼v_V|o/<~[w|v² u*Åô@©Ï݇ð@¼ýc¡Å¼MíôãWÑ%Ø="‚ðÚ}I(­iÀÏ…7QVÛ€îáAH»£'ÊjUøä˜ ÿsk,$ê5:L4ZêîÞ]ð?·*1²q íÿ½;)1=ˆx{b?¬ü!‚¥hÐèÐ;2;ÎV˜Ö_9¾/ ªê/Õ¡4f ú”AÝP.WáXI Ö΄-§¯aïÅŽVÇÒßõBß(Ãsÿ|°?nÔ«ñMÞuŒë׃cÃðÜWçñú¸>(“«,> Ž ÃÀ˜P<0°^Ý{“uÃËÕè,Ei ³‡w7×)ј28™§Ë­ö?i@º£GD þò]>^»/ ²šôëŠÜò:€B­C\DúG‡âíX4ªÒÉ𻾑è×- ¾Ê³Øæ‰¡×ó erÚh|}¶UõjÓ‰X9®ÜDFv¢ÃvGOd—ÊñeN9îïg¦ïõûû S°õCˆ ¢„ýWªðÜñ "ý˜ ±q¸ #{wÁg'Ë¢CQQ§Âm=;áûKU¦m ‰ C¿¨ŒˆÀîÜJ<W<ªë5ø8«CbÃ0{xw,ßs:=0¦o$j4˜28 ƒq¦LŽ?\W¨QV«ÂOùÕ¸®PãÑáÝ/î…Ò› ¸#¡3‚ýýöe®Õ1ܛԣ’º`H÷pü”_Ûã;á—BÃwÃ[“±íL9†õ G\D|u÷&u¿T‚é)†›Ä'GôÀ§'®Ú)YÀ3¿‰C€Ÿý¢C!«iÀÖÆëŸð )îIê‚ÃÕ8RT˜8 “uÃÑâ+®A€T‚_¯Êá'1|'eÝDtX ÒËPP¥´»ß§ €¬¦u*-Þ=T ¸¿_W|wñ& ŒÂðfñM…éC¢q±R¿5~'ûûáõûû ´¦ ¾: ðC½Úò{„È»wï†\.Gxx8æÎëëpHXfˆÄO¢÷ø¸5$d5558vìˆÐÐPÓôœ29í¾ˆ‡o‰ÁÓwÄY­7n}6˱€•j-ü÷iH%À·ó ÓóÊëð¿;/˜–q4v°q›F/Üý\‚—îí…ó |}®ÿ|°?š-l+ŽÖ8YZƒeß’E^oò®ãƒiðüŽóèŒn¡8QZ øô÷ƒÑ³qÜçqë³Ñ3"²šÆã®'¯bãÉ2ü¿ñ}pG‚åXÞ*­“7üŠ”Ø0ä\3$®{ӆ㻋7°úÇB,¼+޶¹Ýqë³âÌÇZ6Ö½¹¿ýXˆ½o`ÝÌèi,yã~qšÿßÜÇ3"ÉÁ˜ô®0nwÚhì8ÛTÎl•¯5¿”૳øÇƒý1ÈÍq®ÛËxdb¡n¾¼ùþÇ­ÏFb—`¬h[ûn­7÷àÀ•*‹iž*çÅÕJÌÛ–‹ûûuEN™WkU6·íè{gXp¬~ ŸÍu‚üý°ëÉaVÓ{F¡¶AcjMþð Äwv½§ãæñ¨µ:<°áWÄ„ ã‘›ëLJ?ez(öÎøD¨* ‘ššŠˆˆ—÷ÛØûmê說ª Óéàçç‡ÈÈHç+t )))ÉdèÜ Ã–gzeŸŸ<4 ]„Ý;:Ë ¹K¡P //¿MÂtÐ4ÔWK…ŠyH0ã{æz½ÞªÆ¸ù¹âQ:ŠI(ñŠ¡x8Š‘O0…¥i(BŸ†Ñƒ!o@,rË ‘ø1A¨òòr¼ÿþû¸~ý:ºvíŠÔÔT<øàƒ¦ù|ðNœ8  CnJJ žþùïOgjÆëƦî[ÉÑ!H$ËñÍ|¸ŽÚÁ4ÛWf„˜èºs*|ùEÍÝÏUÓP„:mlE<î`™ """Oc‚.PݺuÃË/¿ŒÈårüéOBïÞ½qË-·0$O<ñî½÷^îW€CT{Mó‡ÍÏEó„@§ª5­„¿P½TïƒÇB~ «ü:lÁ·ÈˆˆˆÈ LÐÊÏÏ!!!P*•¸téêëëk±Œ'oüŒcq»“ðµå ²·’ã~ô€Uujó„ž°¸ËÙµöøáŠ4Oa~%,­½mñ1ng_ $ ûöíƒR©Dpp0ÆŒãëpHXfˆÄ º€UWWã¹çžƒD"Ák¯½f‘ ûûûcÓ¦MøöÛo1jÔ(Œ3¦Uë“wjÐÛÃM©£cðQFn+i±—ȘÞáu¶Q¾ñA€0ó\W¢2>¼jù^DT”¼Êð±…'Çáë)-Û¤Û!HÜÛŸ/ZB¸©Õj¨T*H¥® OIÄ2C$~LЬK—.X¿~=Ž?Ž·Þz ¯¼ò ’““óæÍÃc=­V‹ŒŒ dffâ©§žjñ¾"C E!¾sÛëšß›v r½H™÷.Ý;ö¥&Øîö’£Z׃·¥¦è›×(ˆEH€ÇK ½¸7/ZèI—´1À~ÝBQ£Ô¢°Ú0Ì”«5¿mÖ+|KõŽ4\˰@÷oÌËH—`T+5-ÚNsAR ÌŒwp-=öºS¶=m`´{½Ç{BR×ì¿\å|Á0ÿì Š 5†à ãX鎾RbmŸ¯Ñ¡Pjtø¹ÐzØHW ˆÅù …éÿ57´G8NÉä-ÚÑøñã}‰ Ë ‘ø1A¸ÐÐPÜsÏ=ÈËËÃþýûM ºT*EX˜á&tæÌ™xå•Wðøã·ø‰iߨP¬›9‰v†Ùò˜!„lÜ“Æuº™ñô—yÖ3›ycB_ÜTjðxæ9@jBÖΈޑ!¸¥{8†vC\³ A¸4g6<<1áð“HprW@ÓXî‚d#é–úIþð tï„9·éP§ÒZ.à )]7s b]ÌÓ†DcD\'—†kî }Q£Ô¢A£C\ç ”ÜT¶h;ÍmúŸ¨uzl>UætÙ)ƒºaXpÓ{î× 'Jk]®#~êD4C}ÃÃðÿÙ»÷ø¨ê;ÿãïÉ I&M€Ü„!¬%ÜT(]¼H¡p«­A!´Õ®m×k)?«,¨Å•j½Ô€D먵Pb­e[,‚@ÙAhîŒ5™\ÈL’ß,S#ÈäÌ7y=’9—yŸÃ'$Ÿ9ßs¾­~ïKõÖ–¢Ïuèhm@ßçÇã4+µO‹×s„èņœ÷ïã77&«»óìóõÒw’Õ+¢‹š$ýôCúßTŸ½ñWx|òÿmÒŸâ~~\ß_ÿ©T)¹¸@çľÈn·+::úœËN:¥ðððKÎt¡9ªÏõ ïù~)ýª¹®Ïpv±ËÙ¥yæËÿo[›ÍvÎý´EsöEþ+yMͯêÅ~an䄨àóô«¿3s<;Bí­ºòÜҿÖ9ÏßeK|¹FÚ*Wk>l9_-¶„³Kë&.ôµ³oSùò‡Tí%ÄfS|÷ð€7衎Vøq¡yˆÏŒÄù²/¾GïËÂ.ªAµ+âßGMÞÅÞfv€Žïb¦½F;øôÓOåv»ÕØØ¨Ý»wëÃ?Ôµ×^ë_^VV&¯×«'Nè­·ÞÒĉ­ äC½/ÄàèíÌÃ;ã±Ðâï%nAG+UWW«ªªJÕÕ­ÿ@ 5˜+èAª¸¸Xo¿ý¶Nž<©ÔÔT=øàƒþ‡À566jåÊ•*--UTT”&L˜ ñãÇ·{ÆK™â+XØÎúÃElZó{‹× üsNíí?@ûm/<Á¾…¾¢€‚}?¯Õ«WËãñÈår)++Ëê805˜=H]y啺òÊ+Ϲ,$$D÷ß;':[‡ø•Óðƒ¸˜ÏHü zø€¥­¬A÷À¹>—ŽÒÿó÷‹@™8q¢x"7ZŒšÌGƒŽKfò¯¦þ_¬¿0Û“‰MÓ79“¿I€Ó´L\\œÕ`j0÷ £S;s¹Ö×x·m–vC/´©–σpa4è¸ha„t×ÿ›ÛºâDþí_¢$I}.kÙ—ÿ}XLÀrµÔ˜„Ós•ìuöÓ¿Ï犾.IÒ°Þ®€d2Ù5ÿ¥äóÌ¡})LýV932ãÚQúZdÛMõÖ#âô¾®Øã‚ëu whVjï6{ß@ù÷açža㌫»©[¸C½"yš;¸0†¸ã’™Ú|HR¯ÿk:!6 ëíÒ»s‡·h»3ë=ù?eËÖý{8[œùŒ¸ná­Þ¦£úçýø§ÿÿÀ„Ë-JÜæŒìÛ¦S:»Ø[Tƒodk³÷ ”–Ç¿öqéÌaª©©Ñ?Ú!:ŽmÛ¶éÔ©S Ó˜1c¬ŽP3€ùhÐqÑLnÌÏèÇ€àÅSÐ\ŠÃ‡«¦¦Æ?‹ ðU¨À|4è¸ta¬;@Æ~‹ð`©3fX†¡fóq:.Z‡˜¦«ÚB` §ë 5hÐtZMí4ÏÐ4èèÔhœ n:×ÏÐ܃H²Ñª#ìá6(¢‹Ýê@‹¬X±BG.—KYYYVǨÀ|4è°ÜO¨£5^KÞ»CÜGß<:ù_tÊרnïè+Üÿ16^{E¨[¸™ÿÔvÔ7^­P»M}»†Y¸ ±cÇÊçóÉá0óß´?j0ß½¸d—Úâëíj“ƒö<¸ŒˆíjÉûªzDtÑÍÃ{hï¸X½"C•=&ÖêÀWJJJ²: CÍæãtWG½D #Ñ .ˆ;AÚCÜqÉ:Ä/ïáJAA¼^¯ºt颔”«ãÀÔ `>ttjþêÜ)ùkçó™sãÛ°Ö®]»T]]­ÈÈHš-´5˜—Ì俯äìhCÂqzkÌš5Ëê0 5˜{ÐqɆÇ^vÖký{„[äâ]nX^´Øÿ›f‹y±Ï-¡ûéï‹P;?*ÚWÐqI~5mú\vö\ÂO|k NÔù,HÔ:6›M/̬ØṅÜÍ­á±—)Úju” ”9¼·Æ&vSWCçq0 ¿uá’$}-òœ¯»Âr…™Q^ýz8­Ž‹ØClØ+ÂêAËbÓÎ@»1£ƒèdV­Z¥ššEDD覛n²: @Íæ£ABIIIª¯¯Wh(·á e¨À|4èAhøðáVG€a¨À|<š€ @ƒ@`ˆ;p ¾Þ×¥:o£Õ1Pqq±|>Ÿ‡úõëgu€šÌGƒ\‚_¤´: ƒÚ´i“<\.ÍZ„šÌGƒ„233ÕÔÔ$›Ífu‚šÌGƒ¤*++õÌ3ÏèèÑ£êÑ£‡F¥oûÛþååååÊÉÉ‘ÛíVll¬æÍ›§¸¸8 ‚ÝîÝ»õöÛo«°°P+W®l¶ìÙgŸÕG}¤°°0IRJJŠî¼óNÿrŸÏ§ÜÜ\ÿ:éééJKKk¶­[·jíÚµªªªÒСC5oÞ<9ÎÀXÅTYh-j0 zêÕ«—|ðA9Ny<ýìg?Óå—_®ýו$-^¼XW_}µ|ðAmÞ¼YK–,ÑSO=eqj@°ª®®ÖÚµk5vìXžµÜf³éÖ[oÕ7¿ùÍsn¿fÍiþüùª««ÓsÏ=§øøx%''K’Ün·^xáÍž=[£FÒ«¯¾ª—^zIßÿþ÷z\t$<Å=H…„„Èétª®®N‡Rmm­bbb$þ%¨ªªJ™™™ŠˆˆPzzº¢££UYYiqj@°ŠŒŒÔÂ… •ššzÞušššÎ»lïÞ½š2eŠâãã5pà@Íœ9SþåûöíÓ Aƒ4a¹\.Í;W‡jÓc £ã z;~ü¸~ðƒÈf³é¡‡ò7è………Š‹‹SAAžyæýð‡?T\\œöíÛ§èèh‹SLäp8ôÚk¯)??_ßøÆ7tÍ5×(""B’T__¯¢¢"õíÛW÷Üs¬ë¯¿^ï¿ÿ¾ûýû÷+!!AyyyÚ¸q£{ì19}öÙgúÚ×¾fÕamݺuª­­•ÓéÔÔ©S­ŽP3€ùhЃX÷îݵ|ùríØ±C=ö˜~úÓŸjÀ€*++ó7ëg¡ÒÒÒ¯Ügcãé)ÁêêêšÐÜ™w,Nrn·Ýv›n¾ùf544èÕW_ÕêÕ«5gÎI§Gnù|>ÿÏ›Í&§Ó©’’ÿöåååJJJ’Çãñ_‰w:*--¥A¿HQQQr: ·: AÍæ£Ar?~¼ µiÓ& 0@‰‰‰:pà€† ¦œœIÒŽ;”˜˜ø•û«­­•¤f¿TÚO°~@j·Û)Iš9s¦~úÓŸê–[n‘ÝnWß¾}åp8tìØ1=ñÄ’NÿIHHðoŸ˜˜¨ÊÊJeffjÆŒ’NÿÌùâ:hqãÆY†¡fóÑ Ân·û‡¯2D+V¬h¶¼¢¢B“&MúÊýôìÙSÉÉÉ —ÝnHVÀÙU[[«ž={Zå+:uªÙωÐÐPÿ®33†TTTø'þÙ´mÛ6ÿ×^¯W^¯—[¯hô õé§Ÿª¡¡A½{÷Öž={ôá‡jéÒ¥’¤Þ½{«k×®Z¹r¥¦M›¦Í›7«²²Ò?ôðBBCCÕ§OŸ@ÇœC÷îÝ­Žp^eeeêÓ§jjjôÖ[oiâĉ͖§¤¤hÆ JHHPMMòòò4wî\ÿò¡C‡ê•W^Ñ–-[4|øp½úê«0`@{F£ARÅÅÅzûí·uòäI¥¦¦êÁô?¬G’xàåääè½÷ÞSll¬î½÷^ Ó‚]EE…,X ÆÆF566jΜ9êÕ«—–,Y¢ÆÆF­\¹R¥¥¥ŠŠŠÒ„ 4~üøfÛgddèøñãZ¸p¡ÂÃÃ5yòäfWÐcbb4oÞ<½ñÆzå•W”œœ¬;½³C©¬¬TCCC³QtÑñZ¯ªNµîÙ ¾ÆóÏ8Йu–š:2[Ó…æT°“'OjûöíŸrssõÑG),,LéééJKKkö[·nÕÚµkUUU¥¡C‡jÞ¼yr:ívŒmåñÇ×Î;õüóÏ«G’:ïùùüóÏ•““£ââb………éÛßþ¶®½öZI÷œœ±yófmÚ´I'OžÔ¨Q£4}útÿýÁéÜìÞ½[o¿ý¶ µråÊfËÚã<;vLÏ?ÿ¼Š‹‹Õ«W/Íž=[ƒìAKp½سgòòòtË-·hÑ¢E:räˆÞ|óM«cµ¹„„ýä'?ÑóÏ?¯ÌÌL½üòË***ò/_¼x± ¤_ýêWºòÊ+µdÉ’fÛ¯Y³FEEEš?¾îºë.½óÎ;Ú·oŸ¹ÛíÖ /¼ )S¦èÉ'ŸTXX˜^zé¥ö:¼6óᇪ±±ñ¬×;ëùyôÑG•’’¢§žzJK—.ÕØ±cýË:ë9‘NO¹õÚk¯éÎ;ïÔc=¦£Gêw¿ûyg97ÕÕÕZ»v­ÆŒsÎåíq–.]ªnݺiéÒ¥JOO×Ò¥KU__ßæÇŠà³qãFmذA7n´: AÍæ£AïöîݫѣGkäÈ‘êÑ£‡²³³UPP`u¬6é¿÷jÀ€JIIÑ| éô/ÁUUUÊÌÌTDD„ÒÓÓ­ÊÊJÿö{÷îÕ”)S¯jæÌ™ÍÎÓ¾}û4hÐ M˜0A.—KsçÎÕ¡C‡Ú÷ /Q]]^{í5ÝvÛmÍ^ï¬ç§¢¢BݺuÓ·¾õ-………)$$Dáá§ŸÐÛYÏÉeee8p ¢££¦Q£Féïÿ»¤Îun"##µpáB¥¦¦žµ¬=ÎC]]:¤ÌÌL]vÙe?~¼FŒ¡?þ8°Ž àõzU__/¯×ku‚šÌGƒÞ *>>^999ºï¾ûÔ­[7}òÉ'òù|VG ¨²²2]~ùå’NŸƒ¸¸8èöÛoWAAâââüW²êëëUTT¤¾}ûêž{îÑòå˯ýûÿ9íËþýû• ¼¼<Ýu×]ª««“ÃáÐgŸ}fÅá]”ßþö·?~üYs£vÖó³{÷n………iéÒ¥ºÿþûµnÝ:ÕÔÔHê¼çäŒ1cÆÈétêå—_ÖºuëôÇ?þQßýîw%qnÎhópðàAEDD¨ªªJ·ß~»¶lÙ¢¸¸¸fû@Ç•––¦éÓ§Ÿu[p>Ô `>ôN ¬¬L111²Ùl’$›Í&‡Ã¡Ã‡[œ,p>üðC…††jÔ¨Q’þy$©©©I6›M*--•túJ˜Ïçó¯c³Ùät:URRâßgyyy³}H’Óéôï#Ø•––j÷îÝš6mÚYË:ëù9pà€ª««•––¦ ÈívkíÚµ’:ï99£©©I½{÷Vaa¡8 »Ý®ÈÈHIœ›3¾| 8_þ÷;$$DÍö:× $$$¨²²RÙÙÙþ×¼^¯bcc-L8Ÿþ¹^yåýøÇ?Vhh¨$)11QаaÔ““#IÚ±c‡%I}ûö•ÃáбcÇôÄOH’JJJ”àßobb¢*++•™™©3fH’jkk›­¬ššš´lÙ2Íž=[‡ÃßœÑYÏOBB‚Nž<©äädIÒôéÓõÓŸþTßûÞ÷:í99cíÚµ:~ü¸}ôQIÒ| §Ÿ~Z‹-êôçæŒ„„ô<$&&ê­·ÞR\\œ^xáIÒ† ü£ƒ@ÇÂôN 99Yåååþ¯;¦>}úÈáèxŸÏTWWkÉ’%š;w®ú÷ïï}È!ª¨¨h¶nEE…† "I Õ€TVVÖlù™ÆíÌ>¾x½^¯¼^ïYÃŃQyy¹JJJ´téRÍ™3GYYY’¤Ÿüä'*((Prrr§©””ÅÄÄtÊó3`Ày<ýéO’×ëÕÿøG=Z5óÍo~S6lÛíÖÉ“'µvíZ?^‡£ÓŸ›3Úã<„††jàÀzýõ×UUU¥-[¶è£>Ò AƒÚõXaÕ«W+77W«W¯¶: AÍæ³5}y¬+:¤wÞyG¿ÿýïåóù”ššª¬¬¬7ú믿®ßÿþ÷êÚµ«ÿµè?ÿó?%µ|¾â;v(<<\“'OÖ¤I“š½Ç| 7ÞxCUUUJNNÖwÜ”ó6·Ä7ÞxQó w´óãv»•““£ÊÊJ;VS§Nõ×Pg='Òéc[¿~½¶mÛ&Ç£Q£FiÊ”)®^***´`Á566ª®®NêÕ«—:µö8_žýÖ[oípWÐOž<©íÛ·kðàÁŠˆˆ°:NШ¨¨PCCƒìv{³ºêhÊ×é¶5­{ðáßÝ(ï‰#êÒ­—®˜ß>Íè‹7 Q|÷ðvy¯‹ÕYjm§¦¦F………5jT³ß¡at`)ôΰ zðaˆ;A€€ Ðñã ÐlÛ¶M§NRXX˜ÆŒcu€šÌGƒ„>¬ššîËG‹Q3€ùhЂЌ3¬ŽÃP3€ù¸€ @ƒ€!zè!­[·NÇ·: †¸`ˆ h÷îÝzíµ×T__¯1cÆh̘1²ÛíVGm€C8}ýë_—$ýéOÒæÍ›õÑGiìØ±JMMµ8ÚÚŠ+äñxär¹”••eu€šÌGƒ€!^xá}úé§~#½ IDATJMMÕm·Ý¦îÝ»K’–.]JƒÞ;V>ŸO¿®¡e¨À||÷`ˆÉ“'+!!ᜯ£ãIJJ²: CÍæã!qâËÍySS“$iðàÁVÄmŒCüò—¿löõÒ¥K-J!îâĉ;®ªª²( ÚCAA¼^¯ºt颔”«ãÀÔ `>t ‘ ?üP#GŽÔ_ÿú×sÞŽŽc×®]ª®®Vdd$ÍZ„šÌGƒ€!fΜ©?üáÊÏÏ×СC5sæL«#!€fÍšeu†šÌGƒ€!ºvíªÿ÷·:t ÑØØ¨’’ÕÔÔ¨©©I6›a¬t 4èbÑ¢EЉ‰QTT”ÿ5t:t Ñ­[7Í;W!!Ì’Ú¬ZµJ555ŠˆˆÐM7Ýdu€šÌGƒ€!úõë§ßþö·JIIaˆ{'””¤úúz…††Z† fóÑ `ˆºº:Ùívíß¿ßÿ zÇ5|øp«#À0Ô `>t ÁÜèØ¸‰ Cø|>íÞ½[yyy’¤Xœ´%t ±råJýãÿЮ]»$I¿ûÝï,N„@*..ÖÁƒU\\lu‚šÌÇw QTT¤Y³fiÛ¶m’¤úúz‹!6mÚ$Ç#—Ë¥~ýúY fóÑ `ˆ¡C‡jÙ²e:yò¤^|ñE¥¦¦Z ”™™éZ?ÐÔ `>t qà 7¨´´T ºâŠ+Ô»wo«#!€˜* ­EÍæ£AÀ ‰‰‰JLL´:t ñÿþßÿköµÍfÓÃ?lQÐÖhÐ0Ä#<âÿó‘#GôÁX˜¶nÝ:ÕÖÖÊétjêÔ©VǨÀ|4è¨W¯^:yò¤Õ1@QQQr: ·: AÍæ£AÀ_âž’’bQ´‡qãÆY†¡fóÑ `ˆ/qOˆÕWÐ0Æ}÷ݧÚÚZEEEéèÑ£ŠŒŒTxx8Osï *++ÕÐÐ »Ý®èèh«ãÀÔ `>t ‘ššªë®»N½zõRMM^~ùe}ÿûß·:dýúõòxt 1mÚ4-^¼X‘‘‘:uꔦOŸnu$PTT”Õ`j0 :†1b„FŒ¡ÚÚZ9N«ã€6Æø R[[«C‡I’<Åi@[â :†xÿý÷µwï^¹Ýn=öØcZ¶l™~üã[ ²qãFÕÕÕ)<<\×\sÕq`j0WÐ0ÄÖ­[õÿñþáí\AïØ¼^¯êëëåõz­ŽCP3€ù¸‚€!¢££õ—¿üE Úºu«­Ž„JKK³: CÍæã :†øÞ÷¾§'N(**JuuuúÎw¾cu$І¸‚€!.»ì2¥§§+==Ýê( ¸‚€!6nÜhu´£êêjUUU©ººÚê(05˜+èâþçx2s'²zõjy<¹\.eeeY fóÑ `ˆ#FhçÎúú׿î-$„ÁpÕĉÕÐÐ »Ýnu‚šÌGƒ€!vìØ!›Í¦uëÖù_{衇,L„@Š‹‹³: CÍæ£AÀ?ÿùÏ­Žˆqq¹ÜÜ\ÿŸ7mÚdaH\A È•••ùÿ¼eËM˜0ÁÂ4h/Û¶mÓ©S§¦1cÆX fóÑ äšššÔØØxÖŸ%ב>|X555Šˆˆ°: AÍæ£AÀ .”$Ùl6ÿŸ%ב͘1Ãê0 5˜€ ÇÃáè@ A 0Ä ­X±BG.—KYYYVǨÀ|4èAhìØ±òù|r8øu -CÍæã» %%%Y†¡fóq:A€€ Àw€ TPP ¯×«.]º(%%Åê805˜ íÚµKÕÕÕŠŒŒ¤ÙB‹P3€ùhЂЬY³¬ŽÃP3€ù¸€ @ƒ@ A p:@Zµj•jjj¡›nºÉê805˜ %%%©¾¾^¡¡¡VG!¨À|4èAhøðáVG€a¨À|܃@à :ÄîÝ»õöÛo«°°P+W®l¶¬¼¼\999r»ÝŠÕ¼yóç_îóù”››«>úHaaaJOOWZZZ³}lݺUk×®UUU•†ªyóæÉét¶Ë±Ðp€N ººZk×®Õ˜1cι|ñâÅ4h~õ«_éÊ+¯Ô’%Kš-_³fŠŠŠ4þ|Ýu×]zçw´oß>ÿr·Û­^xAS¦LÑ“O>©°°0½ôÒK<¤¯¸¸XTqq±ÕQ`j0 :@dd¤.\¨ÔÔÔ³–¹ÝnUUU)33SJOOWtt´*++ýëìÝ»WS¦LQ||¼¨™3gª  À¿|ß¾}4h&L˜ —Ë¥¹sçêСCírlÕ¦M›”ŸŸ¯M›6Y† fó1Ä€N®°°Pqqq*((Ð3Ï<£þð‡Š‹‹Ó¾}û­úúz©oß¾ºçž{4xð`]ýõzÿý÷ýûØ¿¿”——§7ê±Ç“ÃáÐgŸ}¦¯}ík¹233ÕÔÔ$›Ífu‚šÌGƒÞÉÔ××ëèÑ£ —Ýn·:t ª««SÏž=ƒn ¤òòrÅÄÄH’ÿ—ûˆˆ•––J:}…Ýçóù×±Ùlr:*))i¶¤¤$y<555I’œN§JKKiÐ/R°Õ ‚5˜½“9zôh³{í+99Y}úô±:F3 *,,Ô°aÔ““#IÚ±c‡%I}ûö•ÃáбcÇôÄOH’JJJ”àßGbb¢*++•™™©3fH’jkk›­.Œ½“9ó4ÝË/¿\ááᧀΣ®®N%%%AùTó!C†hÅŠÍ^«¨¨Ð¤I“$¾*7`À•••ùŸì^QQ¡äääfûضm›ÿk¯×+¯×«èèèv8:ôN&$äôsÃÃÃaqè|Îü;Lz÷î­®]»jåÊ•š6mš6oÞ¬ÊÊJÿvIJIIц ” ššåååiîܹþåC‡Õ+¯¼¢-[¶høðázõÕW5`À+§ÃX·njkkåt:5uêT«ãÀÔ `>t:ŠŠ -X°@jllÔœ9sÔ«W/ÿtj<ð€rrrôÞ{ï)66V÷Þ{o³í322tüøq-\¸PááášZ„šÌGƒ„Ö¯_/Ç#—Ë¥¬¬,«ãÀÔ `>t_|Q_ÿú×5bĈf¯ÿå/‘ÓéTjjj‹÷5uêT-Y²Dƒnë˜çÍy!s €Î-##CA95_gt´Æ{QÛ]fWwg—6NsnÔ `>tÛn»íœ¯ÿùÏVÏž=[ÕÜÚl¶¶Šu–ó弋9@çeu|Á}]Ôv/Þ0¤Ýtj0¯Yh÷îÝzøá‡õÝï~·ÕÛú|>-[¶LwÜq‡î¾ûnýá@ÂÖùüóÏ5gÎM:U“'OÖŽ;$I7nÝG}T«W¯–$mÚ´Iééé¬ùóç+--M÷ß¿ÊËËýË.”sêÔ©zë­·Îù~:† Ù¿¿î»ï>eddhúôéÚ»wo‹ŽýBÇPVV¦k®¹F?þ¸&Ož¬yóæµh€Àã ºEª««µvíZ;V………­Þ~Íš5***ÒüùóUWW§çž{NñññJNN@Ú–ÉÉÉѨQ£ôƒü Ùëýû÷—Ûí–$íÛ·OÉÉÉr»Ýºîºë$I&LЄ t×]wuåû'?ù‰¼^¯zõêuÖ•ëßüæ7ª¨¨ÐªU«vVž-[¶èç?ÿ¹¶nݪÜÜ\ÿÜ 6›MuuuZ·nvíÚ¥ûï¿ßÿÇ¢E‹týõ×kÑ¢EZ¿~½,X —^zé+sÚl¶ó¾ß…ŽáBâââ´hÑ"uéÒE¯½öšV¬X¡ÿþïÿþÊc¿Ð1HÒtÿý÷ëþûï?ë=/´ @`qÝ"‘‘‘Z¸páEyÞ»w¯¦L™¢øøx 8P3gÎTAAA§l &èµ×^ÓÏ~ö3ÿÕsét£ùÙgŸéÿ÷5eʽÿþûr»Ýêß¿ÿYûhjj:ç¾ÏõúêÕ«u×]w³9—¤yóæ©k×®2dˆJJJš-»õÖ[®«®ºJGŽÑÉ“'U__¯mÛ¶)##C’4eÊíÝ»W555-Ês¡÷»Ð±Ïe—]¦O?ýTo¾ù¦Š‹‹õ·¿ýÍ¿ì|ÇÞ’cHJJRZZÚ9ßóBËíkãÆÚ°aƒ6nÜhu‚šÌGƒn úúz©oß¾ºçž{´|ùrÅÇÇkÿþý–æ=z´¶lÙ¢k¯½V?ü°ž{î9I’ÃáPHHˆV¬X¡eË–é7¿ùªªªÔ³gÏK~φ††¯\ç«îG·Ûí õ¯÷ÅFÚf³µúA+muÿû«¯¾ªïÿû ш#ÎjðÏuì-9† å ä½û€Öñz½ª¯¯—×{q'CçCÍæ£A7Ûí–ÏçSLLŒ¤ÓM•Óé<çUÛöäóùd·Û5aÂÍš5K¥¥¥þe.—KºöÚkÒª¦7**J‡–Ô¼)½ñÆõË_þòœW¸¿ÊÛo¿-éô}åñññ W—.]4räH­Y³Æ¿ÎСCÞêý·ô.äOú“~ô£iÚ´i:xð`³¦û|ÇÈc´¯´´4MŸ>ý¢F6¯õªüx]«ÿ;^Kcg²K©Á{Ð Ô·o_9;vLO<ñ„$©¤¤D –æZ·nrrrd·Û£Ç{Ì¿¬_¿~3fŒ$)33S¯¿þú9÷q®+¸ßúÖ·4gÎM›6M)))Z´h‘$iÖ¬Yzå•WtóÍ7ËëõêÚk¯Õüãí×çó)==]=zôÐã?î}Á‚zæ™g´lÙ2¥¦¦jáÂ…-Îy¡åç;† ¹ãŽ;ôÀèW¿ú•¾óïèØ±cþe:ö¯:“¯ ÏŸ?_7nÔ|`ujU§tÛšÖ¬kÏ'ŽÎfkjí±hS•••ºûråÊVm÷ÐC)--MW_}µ¤ÓÓx>|X7Þxã·;yò¤¶oß®Áƒ+""â¢s›ìÛßþ¶~ñ‹_dŽt :LVSS£ÂÂB5J]»vµ:NPágSÛ+?^wÑ z|÷öuu1Yÿ¶èFyOQ—n½tÅüÕJÖ6¬8§@Kñ³)ø0Ä=ˆ¹Ýn-Z´Hç¬e)))Ú°aƒ***ôñÇ+//OÆ ³ %„êêjUUU©ººÚê(05˜!¨Ð‚ ÔØØ¨ÆÆFÍ™3G½zõÒ’%KüëÔÕÕùï7ÿ²ŒŒ ?~\ .Txx¸&Ožlék&ùÝï~gu¾ÒêÕ«åñxär¹”••eu€šÌGƒn‘¸¸8åææ^pþýûëÙgŸ=ç2‡Ã¡ììlegg"°ØÄ‰ÕÐÐ »ÝÞnïy´æâwY˜{׃€5 mÑ ¡¸¸¸vÏû6º¨íx¸\p°¢f´-îA Рâ„¶mÛ¦S§N),,LcÆŒ±: @Íæ£AB‡VMM sãŨÀ|4èAhÆŒVG€a¨À|܃@ A Р¸ ­X±BG.—KYYYVǨÀ|4èAhìØ±òù|r8øu -CÍæã» %%%Y†¡fóq:A€€ Àw€ TPP ¯×«.]º(%%Åê805˜ íÚµKÕÕÕŠŒŒ¤ÙB‹P3€ùhЂЬY³¬ŽÃP3€ù¸€ @ƒ@ A p:@Zµj•jjj¡›nºÉê805˜ %%%©¾¾^¡¡¡VG!¨À|4èÉÏÏW~~¾¼^¯FŽ©Ù³gËn··x{¯×«·ÞzKÛ¶mSXX˜¾ñohÒ¤IL ÚÓðáíŽÃP3€ù¸Ý{öìQ^^žn¹å-Z´HGŽÑ›o¾Ùª}¼ÿþû*,,Ô#<¢{î¹Gï¾û®öì٠Ā@£A·ÀÞ½{5zôh9R=zôPvv¶ ZµÒÒR >\ŠŠŠRJJŠŠŠŠ”h q·@aa¡®ºê*åääèСCzôÑGõÉ'ŸÈçóÉáhÙ_É´iÓ”››+ŸÏ§šš=zTßùÎwœ´—ââbÿïýúõ³: @Íæ£A·@YY™¦OŸ®òòrI’Íf“ÃáÐáÇ•˜˜Ø¢}„††Êår©°°P'NœPRRR‹›{ü6mÚ$Ç#—ËE³…¡fóÑÑY !!A•••ÊÎÎö¿æõzÛâ}<ù䓺îºëôoÿöo’¤_|Qk×®ÕÍ7ßÜÖq€233ÕÔÔ$›Ífu‚šÌÇ=èHNNö_=—¤cÇŽ©OŸ>-¾^__¯¢¢"]qÅþרC‡µyV`ÐÐP………1eZŒšÌGƒn””mß¾];wîÔÑ£GµlÙ2¥¤¤œµžÛíÖ¢E‹äñxš½ª«¯¾Z«W¯ÖÉ“'åv»õÎ;ïèšk®i¯C´1†¸[`èСÊÈÈð?ä-55U3fÌ8k½ºº:¹Ýnù|¾³–}÷»ßÕ† ô³ŸýLºòÊ+uõÕW·G|@Р[dÒ¤Iš4iÒ×éß¿¿ž}öÙs.ëÙ³§fÍš¥Y³f"°ØºuëT[[+§Ó©©S§Z fóÑ ¡¨¨(9N…‡‡[† fóÑ ¡qãÆY†¡fóñ8‚ :A€!îA¨²²R ²ÛíŠŽŽ¶: @Íæ£ABëׯ—Çã‘ËåRVV–Õq`j0 :@ÊÈÈPcc£BB¸#-CÍæ£ABQQQVG€a¨À||¼@ A 0Ä mܸQuuu ×5×\cu€šÌGƒ„¼^¯êëëe·Û­ŽCP3€ùhЂPZZšÕ`j0÷ hÐ qBÕÕÕjllTHHˆ"##­ŽP3€ùhЂÐêÕ«åñxär¹”••eu€šÌGƒ èýãÿЮ]»ÔÐÐ IúË_þ¢nݺ)%%Åâd8'NTCCOäF‹Q3€ù¸@ÐÛ¾}»n¾ùfy½^IÒ‚ ´bÅ ‹S@`ÅÅÅ)11QqqqVG!¨À|4èt‚÷ ¡mÛ¶éÔ©S Ó˜1c¬ŽP3€ùhÐ-’ŸŸ¯üü|y½^9R³gÏnõ= õÊ+¯èÈ‘#r¹\ºóÎ;Õ¿ÿ%íéðáê©©QDD„ÕQ`j0 ºöìÙ£¼¼<Ý~ûíêß¿¿–-[¦7ß|S7ÜpC‹÷qäȽð ºé¦›4fÌÕ××+$„;è(f̘au†šÌGGg½{÷jôèÑ9r¤zôè¡ììl´j;wîÔ7¿ùMÿð¥ÐÐP9|Þ¦¢A·@aa¡âãã•““£ûî»OݺuÓ'Ÿ|"ŸÏ×â}ìÞ½[Ÿþ¹~øa=òÈ#úóŸÿ¬¦¦¦¦ ºÊÊÊ#›Í&I²Ùlr8:|øp‹÷qàÀù|>Í›7OóæÍS~~¾vîܨȀcL´TYY©ììlÿk^¯W±±±­ÚǰaÃÔ§OIÒµ×^«÷Þ{O#FŒhó¼ ý­X±BG.—KYYYVǨÀ|4èHNNVyy¹ÿëcÇŽ©OŸ>­º‡üŠ+®ÐÞ½{uå•WJ’ÞæY€5ÆŽ+ŸÏÇ3fÐbÔ `>†¸[ %%EÛ·o×Î;uôèQ-[¶L)))g­çv»µhÑ"y<ž³–1B[·nUii©Nž<©­[·jôèÑí´ƒ¤¤$ :TIIIVG!¨À||¼f¡C‡*##C¹¹¹òù|JMM=ç´uuur»Ýç|x\||¼î¸ã=óÌ3òù|JKKÓ¨Q£Ú#> hÐ-2iÒ$Mš4é‚ëôïß_Ï>ûìy—5Ц:t€ TPP ¯×«.]ºœóV8à˨À|4èAh×®]ª®®Vdd$ÍZ„šÌGƒ„fÍšeu†šÌÇSÜ4èt‚÷ IÒ7Þ¨=zø¿ž;w®FŒ!I*//WNNŽÜn·bcc5oÞ<ÅÅÅù×õù|ÊÍÍÕG}¤°°0¥§§+--­Ý¡#Yµj•jjj¡›nºÉê805˜ø=ÿüóç|}ñâźúê«õàƒjóæÍZ²d‰žzê)ÿò5kÖ¨¨¨HóçÏW]]ž{î9ÅÇÇ+99¹½¢w8IIIª¯¯Whh¨ÕQ`j0 :¸ ·Û­ªª*effÊf³)==]»víRee¥¢££%I{÷îÕ”)S/Iš9s¦ hÐ/ÁðáíŽÃP3€ù¸H’ìv»îºë.-Y²D;wîô¿^XX¨¸¸8èöÛoWAAâââ´oß>IR}}½ŠŠŠÔ·o_ÝsÏ=Z¾|¹âããµÿ~«#qH’–/_®°°0ë—¿ü¥ºwï®þýû«¬¬L111’¤¦¦&Ùl6EDD¨´´TÒé+ì>ŸÏ¿ŽÍf“ÓéTII‰U‡€‘hЀ$)""B’4`À}ãßÐæÍ›Õ¿%&&êÀ6l˜rrr$I;vìPbb¢$©oß¾r8:v옞xâ IRII‰¬9¢¸¸X>ŸO‡Cýúõ³: @Íæ£Ag©¯¯—Ëå’$ 2D+V¬h¶¼¢¢B“&M’$…††jÀ€*++ó?Ù½¢¢‚ûÏ/ѦM›äñxär¹h¶Ð"Ô `>t êêjy<ÅÄÄèàÁƒúë_ÿª… J’z÷î­®]»jåÊ•š6mš6oÞ¬ÊÊJÿvIJIIц ” ššåååiîܹVN‡™™é¿¥h j0 :Pii©^}õU}þùç2dˆ~øÃ6›ýPNNŽÞ{ï=ÅÆÆêÞ{ïm¶}FF†Ž?®… *<<\“'Oæ ú%bª,´5˜(99Y‹/>ïòøøxÿõsq8ÊÎÎVvvv âÐ)0ÍA€+èAhݺuª­­•ÓéÔÔ©S­ŽP3€ù¸‚ h8qBS¦LÑÇ|Ö²††M™2E›6m² ^TT”zô表¨(«£ÀÔ `>® Z^¯W[·nÕ¨Q£ÎZÖÔÔ¤­[·êÖ[oµ Þ¸q㬎ÃP3€ù¸‚@ A 0ÄÝ"ùùùÊÏÏ—×ëÕÈ‘#5{ölÙíöVï§¶¶V?úѦ§Ÿ~:I€*++ÕÐÐ »Ý®èèh«ãÀÔ `>® [`Ïž=ÊËËÓ-·Ü¢E‹éÈ‘#zóÍ7/j_«V­Òå—_.›ÍÖÆ)€•Ö¯_¯7ÞxCëׯ·: AÍæã ºöîݫѣGkäÈ‘’¤ììl=ýôÓºá†ZµŸ¢¢"íÛ·O³fÍÒòåËX$##C áz Z†šÌGƒnÂÂB]uÕUÊÉÉÑ¡C‡ôè£ê“O>9ñ´A IDAT‘Ïç“ÃѲ¿’ÆÆF-_¾\·Ýv›œ´7¦ÊBkQ3€ùøxÍeeeЉ‰ñK·Ùlr8:|øp‹÷ñî»ï*66VƒTL@;â ºTYY©ììlÿk^¯W±±±-ÚþøñãZ¿~½/^¨ˆhGk¼µÝeavuwviã4‚ º’““U^^îÿúرcêÓ§O‹‡·oÛ¶M'NœÐÝwß-IjhhP}}½æÌ™£eË–µx? xmܸQuuu ×5×\cu\¤û6º¨í^¼aH«tj0œRRRôôÓO+55U‰‰‰Z¾|¹RRRÎZÏív+77Wwß}·\.—ÿõ´´4¥¥¥ù¿Þ·oŸ~ýë_3͈×ëU}}ýEMÊΉšÌGƒn¡C‡*##C¹¹¹òù|JMMÕŒ3ÎZ¯®®Nn·[>Ÿï‚ûkjjbš5:˜/~´5˜Ý"“&MÒ¤I“.¸Nÿþýõì³Ï~徆ª§žzª­¢,ÀSÜ\ABÕÕÕjllTHHˆ"##­ŽP3€ùhЂÐêÕ«åñxär¹”••eu€šÌGƒ„&Nœ¨††žÈ£fóÑ ¡¸¸8«#À0Ô `>@ A 0Ä@PštA騱cª®®þÊõTYY©¦¦¦vHíçðáê©©QDD„ÕQ`j0 :@š1c†Õ`j0÷ ¸‚trÇk½ª:ÕÐêí. ³«»³K :.Éѯ%Û¢íTjÐmkö·z»oBƒ´!t€ ´bÅ y<¹\.eeeYç‚îÛpÈêY5àÜhÐ‚ÐØ±cåóùäpðëZ†šÌÇw/@JJJ²: CÍæã)ît‚CÜ‚PAA¼^¯ºt颔”«ãÀÔ `>t€ ´k×.UWW+22’f -BÍæ£AB³fͲ: CÍæãt‚WÐ-”ŸŸ¯üü|y½^9R³gÏ–Ýnoñöï¼óŽ6nܨªª* 8P×_½† ÀÄ@à=þøã:tèP«·{ýõ×µmÛ6­Y³&©€Àã ºEöìÙ£¼¼<ÝrË-Z´h‘Ž9¢7ß|³Uû5j”~øa=óÌ36l˜ž~úiy½Þ%Ú‡ÛíVIII«·;vì˜<Øö€vBƒn‘½{÷jôèÑ9r¤zôè¡ììl´j={ö”Óé”Ýn×u×]§úúzíÝ»7@‰@{Zµj•V¬X¡U«VY† fó1ÄÝ"………ºêª«”““£C‡éÑGÕ'Ÿ|"ŸÏ'‡£õ-Ÿ}ö™êêêtùå—·}XÐî’’’T__¯ÐÐP«£ÀÔ `>t‹”••iúôé*//—$Ùl69>|X‰‰‰­Þßïÿ{?^Ý»woë¨ÀÇ·: CÍæ£A·HBB‚*++•íÍëõ*66¶Õû*((О={´xñâ¶ŒhG܃n‘äädÿÕséô®úôéÓêáí%%%zùå—5þ|9Î¶Ž h'4èIIIÑöíÛµsçN=zTË–-SJJÊYë¹Ýn-Z´Hç¬ezþùçuï½÷ªW¯^í´“ââb¥¦¦jÆŒg­WWW'·Û-ŸÏwÖ²_ÿúת¬¬ÔC=ä-==]S§N hvx›6m’Çã‘ËåR¿~ý¬ŽP3€ùhÐ-4iÒ$Mš4é‚ëôïß_Ï>ûì9—ý×ýW b–8qâ„>ùä“KÞOYY™‡úöíÛ©À:™™™jjj’Íf³: AÍæcˆ;€ ðÎ;ïèꫯVccã%íçÎ;ïÔ#<ÒF©À:¡¡¡ cÊ,´5˜€ @ƒ@àt€ ´nÝ:ÕÖÖÊétòX´5˜ EEEÉét*<<Üê(05˜ 7Îê0 5˜{ÐXêðáÃ>|¸þþ÷¿·é~GŒ¡µk×¶é>€@¢A`©††•––Êëõ¶é~KKKåñxÚtŸ@ 1Ä UVVª¡¡Av»]ÑÑÑVǨÀ|4èAhýúõòxËÜtÓMÊËË ØþÝn·®½öZ•••ì= P¢¢¢Ô³gOEEEY†¨‰P×î=¨À`4èt‚÷ hwo¼ñF»N¶cÇåååéÁl·÷€KµqãFÕÕÕ)<<\×\sÕq`€aõµíO:xY$5Š+èÚݻᆱ·ß~»ÝÞoß¾}zñÅÛíý -x½^Õ××ËëmýÓ¼Ñ9Ù›äóz©À`\ABiiiVG€av‡ Ö¯¢øîáVGp‘¸‚@ AÐnÞzë-Kï¾û4þ|ËÞ¸tíæØ±c*((°ìýKKK™€1ª««UUU¥êêj«£ÀaMõª­öP3€Á¸ ­^½ZG.—KYYYVÇÆÕíÒ;k·Q3€ÁhÐ ŸvïÞ­’’Í›7Oû÷ïWLLŒÕ±¦¶¶VÿûßuêÔ)«£H:=íZttôÿoïN££*³ý‹„!0e€È” ‰@6¨Ë–E 2Ø ˆñ¶-NÈri® ¶­ h’+zÅËÐFÕ ¨ Í?s&THBÈœªJþ/j"!¡*©ßg-^¤Î9UûÙÙ9»êÔsèСƒ½CiT³gÏfĈLž<™ÀÀ@¼¼¼ìR½eff’““CHHˆ½C¹i999öAš___{‡ ML¶‹'ºùá«UÜEš,}ÝŽ=JLL Ó§Oçí·ßæâÅ‹lܸ±^ϱ~ýzNŸ>Í‚ xöÙgÙ¹s'‰‰‰u>>..Ž„„bbb8rä;vì¨ï0ÜÒ¥K‰­u?³ÙLaa!K–,aÞ¼y· ²†WTTÄèÑ£IHH`ëÖ­¼òÊ+ÄÆÆ’””À©S§x饗ˆˆˆ ÿþö ÷¦¥¤¤0jÔ(Ο?oïP;v,ëÖ­³w7eÞ¼y<øàƒ,Z´Èö÷{þüyvíÚÅ_|Áo¼\y3hôèÑìÛ·ÏžáÞ°/¿ü’©S§R\\LIII­ûgeeñþûï“™™y ¢«Þ¡C‡ˆeóæÍÄÅűgÏþùÏÚ5&q|jÐí !!¡C‡2xð`¼¼¼¯÷ÂY Œ7???zõêEXXX½žcáÂ…¬^½šÙ³g³qãFf̘ÁêÕ«‰ŠŠªïpnXii)ùùù\ºt‰¼¼<–,YÂÎ;™4i'Nœ¨´ïš5kØ¿?K—.%22???***¸ë®»xï½÷nYÜ7ëðáÜ9s¦ÒcÇŽãÛo¿eÁ‚,_¾œ¨¨(|8‘‘‘œ>žqãÆ5úwÏŸ?OQQQ£¾Æ°Z­œ;wooo[ý5–ýû÷ãîîÎ|€Á``ÆŒLž<™mÛ¶áë닇‡ÿú׿ %--I“&áããSås’‘‘Qé±²²²*kæZ§NbÞ¼y¬^½š‚‚ÂÂÂtŒÕÙ·o}ô , ¸¸˜œœ¼½½mã«V­"44”#GŽÈ3fÌuç€7ß|“§žzŠ¥K—2lØ0Ú·o_éµüüüøöÛo ãü#YYYlÚ´é†ÇPQQA~~>ùùù:tyùå—¸pá™™™¼óÎ;„„„ðå—_rÇwÜðë‰\õÓO?QZZJ«V­øíokïp¤ èeNåà9$¹·&h`ýÎCÙEæFŠJDêC º¤¥¥1aÂÒÓÓ0 FΞ=K@@@­Çgffb±XlßY6 ¸¹¹‘’’RçÊË{‘•å Âdò¥¢b¹¹=ÈÏ÷$11«5—§Ÿ~„Ç›ÎÖ­[>|))g((8Ä AƒØ²e3ÿÍï~÷»z¿¼¼«ÕJffg,–\¾Ü“–-[bµæ‘•å bõêcü×ý/ ,Àjµ`6÷¯/ "'§;……-(-ÍÃdòåàÁXn¿ÝS§Úrô¨‘øx..éÓÇ›¯¿þŠiÓaõêÿ㡇&òã?Ò¡ƒ7]»3ŸÉ“'3lذz¥¶q–••ñóÏ?³|ùr ıcǰZƒÈΨ4–‹ý)-íGaa;rrü+mËÊòÃlîO~~wà6‚ƒÿÄ”)SèÑ£˜LY¶fà­·¶1zôh®ý½fdø`2Áùóàëë bïÞ|Ö¬‰dêÔ,RSSxçwtì×zðÁ¹Œ{?UÕZYYë*¯EE””rñbå\dgûSRr‰ŠŠVääTÎaV–ee!t&7×‡ŠŠÊÛ~]k ®¼ñÆ£¬Xñ }ûöm”±¯Y³š~*èÚµ0ˆÌÌÎddt$5Õ“É—vízb±¸S^>S§Ú²nÝ:¼½ï£G/NŸ>My¹‹ÅJDDcÆŒá?õß’ÒRï*ò@qq V«õºZ[³æ8±±±¬Z•H×®]™>}:-[¶lð7jrss‰ˆˆà7¿ù »wçÒºõwœùäC† ¡m[¯uunêÛ·¯šÑ’~©„'Ö'Ù;ŒFóï·§`λHËv¸`­½Ãqjÿ3)?-J×d‘œœ¬¹Éèt;¶}zWVöíÒ¥KšsWWWzöìIZZš­AÏÈÈ 88¸Î1DFb0Ô/îê”——ŸŸÑh¤M›6¿\†›Î¾}ÿb×®]¬Y³¦a^¬‘8q‚””¾ù柸¹¹sðàOŒ?žuëÖ1yò¶lÙÌŽ;¯;îòåýôSÆO\\mèÎÎ;lŸ †…MbïÞ½øùùѾ}{öîÝˤI“X»v K—.£}{OÛ‚^·ßÞÓÎ#«™ÉdâìÙ³øùùQ^^ÎÓO?ÍÝwß͆ ëmã3f,iiiäåå1xð`6oÞdÛöàƒã‰Çht¡oß ò £_¿¦·êøÖ­[Ù³g/¼ðg\\ŒtîÜùº}.\ˆÙl&))‰Ñ£G³~ý?˜:uk×®åý÷ß§¤¤„áÇÛ!úú[¼x1gΜfþü—hÓ¦ >>>”••RPP@»vž Z´h¸¥Z** ùåt)"""R%5èvÂG}Dhh(DGGWy ¡ÌÌLV®\ÉóÏ?‡‡Çuϱ}ûvüýý)**"&&†Ù³g×9†Þ½Ëqw·ÞôX*»£h ôâ®»ÚòÜswÒ§OC¿Vã80ÄÅåß´jÕŠØØÓ±c(‡Ï´hño¬j,€aa=~ù¹iŒ·²VlØð:ï¾û0 .$))w÷¶\¹;W>>£€8:vü-®®ñÜv[ íÛwÄ`ˆÃÇgGh(u¹æy=Þ¿ü»¢eËÿGÇŽ·síx½¼‚ÈÎ>AII6:øTÚæí=7·$öïßÿ«çuôq_oàÀûyýõû¯yäú1´kwв²2ŒÆ£tìÄ1pàdÊʘ9s@µÇ9¢E‹¦PRRÂí·ûÿòˆ•+Ó¢ç/?WÐc)**'9¹ÁžNDDDš!5èvЯ_?zè!V®\‰Åb!44”‰'^·_II‰íûæ¿öÐCqéÒ%"""hݺ5cÇŽ­×'è·J§Nšäý½ÿüç?°víZ|||xà bòäÉvŽìÖiÛ¶->>>uºµ•3»š'g1räH¬V+^^^ôèу^½z1lØ0æÎkïÐê­[·nöAD¤É»ÑÅånkå‚§Û/6,Ò\©A·“1cÆü²ØSõùøã«Üf4 '<<¼1“_ìÝ»·ÒÏÓ¦M³S$·Þüùó™?>÷Ýw_ö÷÷÷Çd25úªðíèÑ£¤¦¦òÉ'ŸÔiÿ^xÁ©¾³5gΜJ?×çÊ©ŸÏ>ûŒ‚‚<<<˜5k–½Ã‘&àÞâŸp«(£ØàÊ.·[³òÿKÛOÞÐqÿ3)H ºHÔ ‹H>ÿüsŒF#Ó¦MÃÝÝ:]iŸ 6Xçu™Ñh¤K—.lÚ´‰ãÇWÚöüóÏãïïÏ„ ð÷÷ç±Ç£M›6vŠTDš»;3ËE%˜+\H¿T¿«™tË,ç”Ô².”c¥áÖÏ‘[«éÿoZDÕÕË€¯~UaРA8p€N:ñý÷ßãááÁÈ‘#íbƒswwgÔ¨QdeeáííÍ<@nn.<òˆ½C'Ò§OŸÿ¬Æ~¸ù®È. 'Óè<_¹i®Ô ‹H½1‚#F4Éï×GXXaaaöCDDDDœ„®qú]DDDÄÅÇÇcº\„¿å"iÆ.µ NÏßr— +Vƒ‹jF¤‰Rƒ."""â€âââÈ/( ÐbT³%uh>K«Š2J ®ª‘&J ºˆˆˆ4˜;v°cÇÌf3ƒfæÌ™Mþö‹ áR±™üRk½Ž¹ûÁ‡É.2ßðm¬ÄùìqlïêL÷O©štiG%&&†¹sçHTT7ndÒ¤IöÍîòK­WVc@÷O©Ž‰‘‘ÀСC=ÈÉÉ¡K—.µ^Þ®¹IDÄ>œanjjÔ ;WWWºtÑ}1EDìÁÓÓÓÞ!4ª>úè#BCC  ::šZÓÜ$"b?Í}njj ú⎈ˆˆ4ˆ;wòõ×_c±X eÖ¬YúT\DD¤ŽÔ ‹ˆˆˆˆˆˆ8Ý]DDDDDDĨAqjÐEDDDDDD€Vqo¦.^¼ÈÖ­[Ù½{7sæÌaäÈ‘•¶[,V®\ÉÏ?ÿL«V­¸ÿþûùÃþPiŸ°aÃòóóéׯsæÌÁÍÍíV£Éøøãm¹„++?óÌ3¶íuÉ·ÔlÇŽìØ±³ÙÌàÁƒ™9s¦žº S¦LÁËËËöóìÙ³¹ãŽ;HOO'22’ÌÌLºuëÆœ9sðõõµW¨M‘#Gؼy3ÉÉɬ^½ºÒ¶Úòé,ç“ÉIJeËÈÎÎÆËË‹!C†0~üxÛvg®»ÚrSÛã,-ZÄáÇY±b…íüåÌusUUyqæšÑüV½šrãÌ5ãhÔ 7S7nÄÛÛ___ ÃuÛׯ_ÏéÓ§Y°`%%%,_¾???‚ƒƒÈÌÌäÓO?eæÌ™ 2„U«VñùçŸóÔSOÝê¡4 ƒ3fp×]wU¹½¶|KÍŽ=JLL sçÎ%00¨¨(6nÜȤI“ìZ“¶bÅŠ*çw1b¯¾ú*{öìañâÅ|øá‡·8º¦£°° 6pçw’œœ|ÝöÚòé,ç‡:ðê«¯âææFAA¯¿þ:Ý»wgÀ€€s×]m¹©mŽq¤¼¼üºÇ¹n ú¼8{Íh~«^u¹qöšq$ºÄ½™ gâĉ´nݺÊí Œ7???zõêEXXñññ¶í‰‰‰ôîÝ›{î¹fÏžÍÉ“'oUøMRM7D¨-ßR³„„†ÊàÁƒñòò"<<\ùk$™™™äççóè£âîîÎý÷ß&“ÉÞ¡9¬6mÚAhhèuÛê’Og9?´hÑ777JJJ8yò$ÅÅÅtêÔ PÝÕ”›«œù¦;%%%|õÕW<ñÄ•wöº©./W9sÍTÅÙë¥.T3ŽA º*++ãôéÓtíÚ•_|‘èèhüüüHJJ²í“””„¿¿?111<ûì³”””`4ÉÊʲcäŽËh4òÕW_ñòË/³mÛ6ŠŠŠlÛê’o©Yrr2~~~DFFòÒK/Ñ®];Î;‡Åb±whM–‹‹ Ï>û,‹/æðáöǓ““ñõõ%>>ž¹s篯/‰‰‰vŒ¶éª-ŸÎv~¸té³fÍbñâÅüå/±5¡ª»ês5Ï1Î`ݺuŒ5 ŸJ;{ÝT—pîšÑüV½êrÎ]3ŽF—¸7Af³™yóæU¹mÆŒ 6¬Æã333±X,¶Éß`0àææFJJŠmŸôôtúôéCAAíÝ4777RSS騱cà ¤‰¨K¾Ÿxâ þô§?aµZYµjk×®åñÇê–o©YZZ&L ==¸’C£ÑÈÙ³g °stMStt4­ZµâÌ™3üýïÇÓÓ“ÀÀ@ÒÒÒlµZQQÁ`ÀÝÝÔÔT;GÜ4¥§§×˜Og;?xzzMll,ï½÷¯½ö={öTÝQ}n€ç˜æ.55•#GŽð׿þõºmÎ\75圻f4¿U¯ºÜ€s׌£QƒÞµlÙ²ÚïÔE×®]1äää°dÉRRRð÷÷·í€ÉdâÑGeâĉWÚÇYÔ%ß...´iÓ€°°0^{í5¦OŸŽ‹‹Kò-5ó÷÷Çd2n{Ìl6Ó­[7;FÕ´¹»»гgOFŽÉž={ $ €cÇŽÑ¿"##ˆÕ!7ÈßߟäääjóéŒçwwwFErr2ß}÷={öTÝý¢ªÜ@ÍsLsVQQATT3gÎÄh4^wù­³ÖMmyç­ÐüV“êrÎ]3ŽF—¸;!WWWÛ'WeddTZ(((Èöi%\i†Ìfs•—QIe¥Á½Ím5IDAT¥¥´nÝÚvB«K¾¥fÁÁÁ•ê1''‡.]º`4ê=ƆPVV†‡‡påo?##£ÒöŒŒ ‚‚‚ìZ“W[>ùüàââBçÎÕݯ]››_ûõÓœ¥§§“’’Â|Àã?άY³xá…ˆ'88Ø)릶¼üš3Õ̯i~«Þµ¹ù5g®G ½™«¨¨¨òÕ¶oßNFFÇ'&&†þýûÛ¶÷ë×ãdzoß>òó󉎎¶½“/×KKKÃl6“——ǦM›=zt¥íµå[j¡C‡8|ø0ÙÙÙDEEbï°š¬ÂÂB.\¸À‰'øñÇùýï@çÎiÛ¶-«W¯¦¨¨ˆíÛ·c2™®[°Jê¦.ùt–óÃ… ÈÌ̤¼¼œ#GŽpðàAî½÷^@uWSn ö9¦¹ò÷÷gÕªU¬\¹Òöàoû!!!têÔÉ)릶¼€óÖŒæ·êÕ”pÞšqD† -××,½ù曤¤¤Øw3¼òÊ+ôéÓøÏ}wccciݺ5cÇŽe̘1•žã‡~àÿøùùùóä“Oê>èU(//gñ⍦¦Ò¾}{î¹çF…«««mŸºä[j¶sçN¾þúk, ¡¡¡Ìš5KïìÞ ÄÄDV­ZEnn.AAAŒ=š¾}ûÚ¶;û}bë+##ƒ… R^^NII îîîtèÐÅ‹u¿zs??üøãlÞ¼™Ë—/ʽ÷ÞK÷îÝmÛ¹îjÊM]æg2eÊݽ ׿řkFó[õjÊ3׌#Rƒ.""""""ât‰»ˆˆˆˆˆˆˆPƒ.""""""âÔ ‹ˆˆˆˆˆˆ85è"""""""@ ºˆˆˆˆˆˆˆPƒ.""""""âÔ ‹ˆˆˆˆˆˆ85è"""""""@ ºˆˆˆˆˆˆˆPƒ.""""""âÔ ‹ˆˆˆˆˆˆ85è"""""""@ ºˆˆˆˆˆˆˆPƒ.""""""âÔ ‹ˆˆˆˆˆˆ85è"""""""@ ºˆˆˆˆˆˆˆPƒ.""""""âÔ ‹ˆˆˆˆˆˆ85è"""""""@ ºˆˆˆˆˆˆˆPƒ.""""""âÔ ‹ˆˆˆˆˆˆ85è"""""""@ ºˆˆˆˆˆˆˆPƒ.""""""âÔ ‹ˆˆˆˆˆˆ85è"""""""@ ºˆˆˆˆˆˆˆPƒ.""""""âÔ ‹ˆˆˆˆˆˆ85è"""""""@ ºˆˆˆˆˆˆˆPƒ.""""""âÔ ‹ˆˆˆˆˆˆ85è"""""""@ ºˆˆˆˆˆˆˆPƒ.""""""âÔ ‹ˆˆˆˆˆˆ85è"""""""@ ºˆˆˆˆˆˆˆPƒ.""""""âþ?p‰1/©š¬UIEND®B`‚pymc-2.2+ds/docs/_images/summary.pdf000066400000000000000000001214401204033704200174500ustar00rootroot00000000000000%PDF-1.3 %Äåòåë§ó ÐÄÆ 4 0 obj << /Length 5 0 R /Filter /FlateDecode >> stream x+TT(TÐH-JN-()MÌQ(Ê ˜[é  457Ó3`Nr®‚¾g®¡‚K>Pg '’ endstream endobj 5 0 obj 61 endobj 2 0 obj << /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 792.0792 576.0576] >> endobj 6 0 obj << /ProcSet [ /PDF /ImageB /ImageC /ImageI ] /XObject << /Im1 7 0 R >> >> endobj 7 0 obj << /Length 8 0 R /Type /XObject /Subtype /Image /Width 1100 /Height 800 /Interpolate true /ColorSpace 9 0 R /SMask 10 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream xìÝ °uW]ü3}[¿Ð~×VÊã[µ@í´µ_ZÚÒÚV°¡%@PHH¸1 A‘¶H"J@°á±ŠÓD¨Žqë}Cñí%:dRa®Êð5¨™G¾F`¤´0áýË®»ç=çÜ“½÷Ykïµ×þ=óÌ™s÷Yë¿Öúÿ:k¯»Ï9÷³Ÿõ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @ 6×¼æ5_÷u_÷ÿâ_ü“òOþý¿ÿ÷¿ïû¾o{„é/ý¥ÿkëß_þËy½äÇ?þñoú¦oúóþÏÿ…¿ðÿøÇÿ¯ÿõ¿Öûÿæßü›/ù’/yï{ß»q|ÏÿãüïüÎïügÿìŸÝÿþ÷¿ßýî÷å_þåyÈC"Îoþæoî©uàC¯xÅ+Ú±þÖoýVíU¯zUŒîÇüÇ›#×^{m[¬-³}ç‘|dS, ·íud½Å&æë^÷º^Ž#È{Þóž^µF(k1o»í¶ZÔì\›>ïó>/–ŒoüÆoÜ¿RœõR?˜%^]o¾ùæÁÕU$@€„W\qEœ[þÃøc§ó¿ñ±IùÂ/üÂ8-ÿÌg>³ÞJ¬#±£ù¿ÿÿÿb»±^æÒK/ÒþÏÿù§ú§ãΓžô¤õGû·;6)ÏûÞç­Üÿñcúª¯úªÿôŸþSTÿßùïÿþïÿ§ÿôŸ~Á|Aôù’K.Ù_ýÀG/¾øâ?þÇÿøúç/xÁŸøâ…/|ázä¿ý·ÿv[?²ó~~Ù—}Ù·úŒŽÅð_þò—÷­å›]RßÑ€††U¹îºëbhÅvoØ Ô"@ ·@¼n¬¿ÿò/ÿòSŸúÔX)¾è‹¾è­o}ëþÖ·_ê÷—ßóhtãïþÝ¿»§€‡ @`×¾öµñšü¥_ú¥ëÍ=îq‹ƒ?ú£?º~0NÑ×Ïö×jîß{ï½q#®°4?~×w}Wls֋ŵ˜>ðQlýàžû¿ò+¿Š¿÷÷þ^\Ú(võÕWG#àÆñ´?6×_6Fý𭌿Çi:Vå§ð-ØÆSïG ˆa}Óô*~wÇãv'w¾Ôï¯r֣ќ=ÎY8Ž @`LË.»,^“7.ˆÄ;²âà_ûkm½'÷¹Ç‰ß›E­×¿þõM­x»Qüø¦7½©ù1®ìÄô†7¼a=æžûqéÁ~pTyó›ß¼]ì£ýèŸþÓz’=Îvgæ¸Ç)öÍ`ö8Û æ÷)ËÍöçÅ/~qÿsîÏí¯n³ßÇ£˜£@ók®xØzçãó2Ízñþ÷¿¿={œýâˆÝMÔºýöÛ›*ñ6³øñ¿ý·ÿ?~⟈·œ=æ1i£Ýçù‘‰êëoý­³JƇb^ö²—56o]‹òñN§“““¯ÿú¯E-~Œ>·Õ_ô¢}Í×|M|à(zò ßð §§§íCÍ»îº+Þ¼Ÿ$Š«ZøÃã]Ü _D‹˜ñ/ÞØ°^·ÙãÜsÏ=GGGzЃ¢‰8o®[/÷£úö{Õ~í×~íŸÿóÇÿÔŸúSñÛ¿—¾ô¥µvþ¸}çܹsmßš˜æÏü™h1Þ­ñ©O}ª òîw¿»)³~û¨G=ªm"Þ ø¯þÕ¿ŠPñ™©¿ù7ÿæ¿ý·ÿ¶½èö{¿÷{m­x·ùOýÔOÅÛ£Ïqðïü¿Ó>wžñŒg4[®æÄ#6­qá)ò-®îÅ»G¢•ØYo2k{ó‘|ä%/yÉ¿øÿ"vµQ÷ý£ôƒÿþ·?êÕŽÂ(/>Û{œxwqÿʯüÊý Í+j,pñÙÏx À¿ñ7þF»–5uãå1^âÑxÝ‹ùø`o_!£LdýÅ0ú³ñ6€ýÝð($ˆOÐÄkòú‰næ4ëE¼[¬m+NY¿õ[¿õ¯þÕ¿úÅ_üűˆ·ýÇÿøÛGãNœäÇyõsŸûÜæà¿ûwÿ.~lî_sÍ5q‚úÁ~p½üþû—_~yôá‰O|âþbí£Íe£‡>ô¡_ýÕ_ýC?ôC±ÅÉp»§xØÃo{‹¾ýþïÿ~l^âü<>ôs?÷smõ·¿ýí±-ú³öÏþìÏþìÇ>ö±Xݾök¿6öDчõE*Ám®ØÑÄÁXà~à~ âÇgš¢±ºÝtÓMmü¸³½Çù±û±øèÓ?øÿàmo{Û‡>ô¡n¸!>'Ÿ‡Z¯µóþö'Š5}‹Rl ÏŸ?1¿ù›¿9:ÏÚz³>ð{ÒX¸c gq™, c'Pë‹xìn"``Æ(¶9 }óÆŒ]”Šëm}Û·}ÛE]ÔùÀ>uÿñ?þDZ ¥[n¹å¯ÿõ¿àq½Êö'xãÉúÉŸüÉ ŠNFë§ØëPëcqŸÑâea{¯®qüÙÏ~öþn4¯¨qûèG?:^Ö~ø‡øx@¼ì¬¿:ÅŠ¡b‰_E™ïþîïŽoˆV¢L󒸿E @€@nW¾ò•ñš{–õ†â»â`üû‰Ÿø‰öxœÄÆ p|ùU| %¶ ñµiQà_þËÙˆ;±FÄ÷žÅá—~é—š_ÔÇÁXâL>.£¬—¼ÏûqvñãC=÷Y²)Ð|+WldÚT\BŠwâÅ£Í%¡õ7¶ÅÙr¬†ñõ í |\Ù‰æâ¼½m®¹,µñ‹¸æRÈÆ–°Ùãć˜Úºqé$vL±ŒûöàÆ'.OÄ065ëËè?ù'ÿ$ºqŸïèÛ¹Çi/Óüú¯ÿzÛh\´jwšÍÁíMDÿô§?1Ø;ï¼³­Û¼1¾w¨=P¢{±jÝâjÚ3ŸùÌ(ÛØx(~±ÙŽ 7‘W?ÿó?ßùð‡?ÛÏ÷½ï}mfT¹êª«Ú#qg£{‘ñB±¾Çi¿s ~[—¡÷û4¯¨q¿-Ûœ¸þ{ªøÅÑÆïÜâ—HÑâ[Þò–¶V܉Zö8ë î @`BxgW¼,Çž".ßÄæå)OyJœÇ¿8¸þ†«ØD|ò“Ÿ\ïgœ²F™õO¾Çl¼)Þ9ÿâ7öÍ[Ýâ7iQ2*Þ}÷ÝOúÓãKÒât:‹øRèõh÷£L+#ÇÏú±Ùãì|OB\{ÚõWþÊ_‰ƒ1äؼ7/®4µ§îq0z&ºïqb'µÞ·fƒ¿úknìqn¼ñÆè@\i ÄæW…ñN¹õƒÛ÷÷ìqbëåãbV aý]›ˆ¦plU¢3[Ý[o½5ÆÕ–6`³Ç‰«Tí‘öλÞõ®h(>BÕ Û/hjïÄ—TÄÁöǸ³Ñ½ßýÝß}kìÔ.\¸Ð‹ûñîÇöGw /VÿâÅ0~ÛÖE¦yE]ÿ£ ñ†ˆö´§=mOõx'@”‰½Ïz™8b³â>&ˆûøõ{œÊÆïçã£(ññx·U\²‰×ê7¾ñ{:öíßþí;_ÏcwÐ~$ΓãµyÏ[ìžâÒF¼#+…ØCÅ›Žöo>(Ô÷:Ξð„˜q5!®"Åéw|Üfý¡æ»ãb£ÿëý¯1òz¸KU_¯Úžë8ñc˜Q÷±}lscEïøŽïh ĸcS¶~pûþž=Nl-×ËÇçk"`¼s¯=¸±‰hŽÇ»Ð7zÇ›­_dE[·Ùã¬oÜÚ‡âNóÁœÿþßÿ{s0žß¸¸³^ ô"ÓâZU¤A4×üÛøKÛÝkÞœ»æý¯ÿuì›â’ÓzL÷  ñz¯ó Eüz-^jâÇxÕm¯ìïQj^Q××»w¾ó0ÞºÖÖŠ…2VŠxÿmóe8ÿûõkë5<ŽÛã´hî @ @XbX«Õv'ãƒñz©Ø~¨9l‰Kñ‘ŸæÇØ@Å;ÜšûÏzÖ³âGë×6‚Ä/Ð"øÆ{6ʬÿØ\Çi?ðÞ>—–"ÎÎ1ÀøÔO”ŒoÉŽñÇOÛZÍfáë²Ç‰PuãòVÄŒZ{|cÓlâ¶;¡Ö·mõõ;{ö8ï£ÛÂö&""7ï<ÜîL‰þ´Ÿ²iö8ëWîÖ{Õ 9v²q0Þ€WÁââN[ ö¹±Ù „øxRšã&qpg÷â“__ñ_Ñt/öDñYž6¬;æÅj¢yYk?Ø”i_åÖ_´·_'·uå•WFÝxÏs|f³ùMKó!ÐE'ÊØã¬? î @ (x#PœŽÆûˆö÷*>¯ç{ö8ñ¥^ñh|ð$â4ß,Ý^Öÿ…_ø…¨_R}Vñyü(°ñV®õÂq½þ­\gíqÚë8{ökÍGo¼ŽŸt½{÷y'¾[ øœçÿ¼ï}^ˆ+­×Šûñµf÷ùòCö8;¿W-¾µ,:_±Ñ™ø|Öú7˜íßãDÝø–¡ˆùæí~¶‰Ù|êŽ;îh›ˆß…Æ«ö»ïšã×qâ}&ñ̶UâN|F4±ñ)žõî °@xYØØãBó](ñ‚¹ä>÷8ñÂñãEl=Nó‰E×qÖMÜ'@€@QñI‡õWéø%||QXüú+ÞiÖö³9óŒ/¹jÄ>ðñ²ÖoÔc‡²þ×mâÍÌñUcO~ò“›ñÅ›q©hÿ×Ds±Ëˆ³Ùb*®ÄçÙ×·f{ö8±±Š~n|Éç÷|Ï÷DÚñ1ÿ(§úí›élìqö|wt|ÇN[7>‘°¾äK¾xý­à{œøct Þ°×~v)ªÇ§éãRÈÆv¬ ÛÞÙ¹ÇÙÙ·íµ»ÙÀ6o÷Š?Ìï-½FlîâëB`ýSEÁo/\ÿHÔ}îqšl|_DŒ}ãˆÍWÆ]ýõí(šÕþ=N<­‘Ÿí{Û¢nüJ6ú¹½7lúC€Àâea{¯Àñ¿m‹—Ç=&Û¯“/§ñ¶&þú¯¼â³«qp}õŒ&â]µñØ´ŸŽÜøÛs{úà!H.{xQœ¾Æ»¹âòJœ‹Æ™í›Þô¦õ†âe<^Ìã{ âTÆÇ9ãK šÌÇ_f\/ÖÞË7qY¿ýøys<ÞgþqŽ—âSÑP[þ¬;ñ.²ø;qú›bq‰ñÔñpñ=¿Þoö8q‘bg¨G<â±ÌÅuŸØ¹Ä­ãA㯼EOÚÂqa(Þ›ñ^ëøøI|ö?Û|d}qlÞ¤½ý7@'¶]ñ-pñ­ÔK[ôpý{G£¡ØãÄ¿¶Å¸—$b£‹AÅi|œóÇÆpãKÖË·÷›¹½FÖßÙ·¦äú¢‡Ñ·xúb?ïkŸ…r\ÉŠo0‹kOñ~Œ×¾öµñ…{±]¿¶Õìq6Úm{Õ܉‹A¡±±£Œ‡âI3ØÖŢߖ'ÎâȆI³›n/5OkœKÄóÒx{d<û‘Z¯~õ«7Úõ#Kˆ—í=N€4j­ýXèN¢í×Éí—Óøþhâë¾îëâµ1ïWï8²±èÄïñbI/”Ž÷cG6VÒ­;H€™â%:þ¦sœÞÇï»âó/ñ‘‡õϹ4Æ'tâjHœjÆl¼°Ç&(>¡Ö;Íâ\4ö2ÍgÏ×û×âÛÌâ[¢­øÃ:ë×8Ö‹mܦãÓ"ñÈQ1®qľ#®˜l¼¿:Γ›.nã߯çqfo“ŽÓøx¿A¬zñFµ†âÄ;z­Äyx4oNˆ½L°ù½ÜF+°yßW”‰µìãÿxt,‚Çî).„Å·1·ñ›4ÊÄ¿îņ(v^Í_±‰kIñyüöÒR[}ýN³hZlúÖü¥˜æoô4ñãxlvŸkó]‹x|9@ü͈xŽb€ë'‚.o!‹½ÏóŸÿüõ7Ÿ7͵Mlüö²íd\÷‰2qA§=ÒÞ‰=ïÕW_ÛÛH€èOl[ÒˆÑb_³ÞD‰Šñì‡s¼O2JFâÅ•Áøs<ë_Ôw‡e ´¯ÌÍ«SóÒÑRÄ/sâZpóÚÒ~éMûèÎ×Éí—Ó(ÜãU=ÖˆxyŒ±Øò4y-"G‹ñû·&f|ÑJlsâmñ[²³¾‚²mÝ @€ @€ @€ @€ @€ @€ @€ @€ @€ @` ÷ÜsOüQÿ @€=±\.ᬠ£sƒ=™à¡„‹šVËy)d¤‘¨?ï °W –ËBîºáÜ`o.x0™À¢¦Õ3W뱃¾Ë? @àl8[Ô/œœ I&°´iµ~úíþ8¿ï p¶À8ËqQ­œáiŠJx©R M¦ŠB€*¨rõß?¨JŸIÃ*H`z”À᥻® @€ò_jg¡¼'Aj˜Ý¤ÐáÙ L5gNOOŽŽâvªh—t˜ÝÊ~x‡»°(CàóTûÉÏCê¯V«¸=$ˆº @ ·Àþe´ÊGs“ŠO Ê‰cPE L5Ëìq¦’×.ô(jÕ§3½|&0@`œLÖÊ’¤e’*ö8I!@€Ü N+CY`ªYf3•¼v  @ —ÀÈër ÍõòQ˜Àò\ê–IªØã$a„r Ô}°st¹IÅ'°3ñ$P`ªYf3•¼v  @ —@Â5w.¡zù(L`€À\æ‚~ÎW`@Z&©b“„QÈ-0ß%~pÏs“ŠO`prªH £ÀT³ìäääܹsq;U´K€ºt\Ok*Ö…E‡Ô4_Œ¥LCòS] P½@™ËwÖ^UÿœàäYXp!0y’ë(Y`g %?úV‡À§•!,PÇL1  I`äu¹„æ2I K (!Ïõ¡n6ÙÜ!@€¶ê> Ø9ºmG¤Ø™xH(6cE#@€• $\s窲gÐp ˜Ë\ÐÏù ˜öºD€Ê˜ï?¸çåàëI­ƒ“SEj;ÆE€’t\Ok*–ÄM{jš/ÆR¦Àžôó PæòµWžt¹²&°àB wŸßß=KÆq(J`g EùëL• œV†<²ÀTçøøxµZÅíTÐ.è"0òº\Bs]X”!pˆ@ y®u ’Ÿ‡ÔµÇ9DO]M îÓ€£ÍVC‹Ø™xH(0Õä²Ç™J^» ÐK áš;—P½|&0@`.sA?ç+0 -“T±ÇIÂ(ä˜ï?¸ç¹IÅ'089U$ÐQ`ªYf3•¼v  @ —@Çõ´¦b½|&0@ ¦ùb,e HË$Uìq’0 B€¹Ê\¾³ö*7©ø²&°àB`ªYf3•¼v  @ —ÀÏzù(L`€À§•!,0 -“T9===::ŠÛ$Ñ!@€™F^—Kh.“¤°Zò\êh“Í @`[ îÓ€£ÛFp„@Z‰ç „i3V4 P™@Â5w.¡*{ §@¹Ìýœ¯@i¯K @ ù.ñƒ{^¾žÔ*089U$ÐQ Ö¹c\ @ ‰@Çõ´¦bIÜ!°G ¦ùb,e ìI? @€e.ßY{åI'[ k N rç°ø @`Ö <[˜õó¥ó³Xà´2ä‘f1t’L%0òº\BsSQkw9%ä¹>Ô-0ÕlºpáÂÉÉIÜNÕí @€.uŸì]e"°3ñ$Pàü<¤îñññjµŠÛC‚¨K€r $\sç*7©øæ2ôs¾SÍ2{œ©äµK€½æ»Äîy/… œœ*è(0 -“T±ÇIÂ(ä踞ÖT,7©øjš/ÆR¦ÀT³Ìg*yí @€@/2—﬽êå£0YXp!0 -“T±ÇIÂ(äXàÙBnRñ ,pZòÈSÍ2{œ©äµK€½F^—Kh®—”çúP·À€´LRÅ' £  [ îÓ€£ËM*>‰ç „SÍ2{œ©äµK€½®¹s ÕËGaæ2ôs¾Ò2I4 £  [`¾Küàžç&ŸÀàäT‘@G³ŒÀb®¸üúÜÿ!q»X'@ ‹@Çõ´¦b]X”!pˆ@MóÅXÊ8$?Õ%0_=ð¡÷[ݰZ}6nü ‡Îw zN€@n2—﬽ÊM*>¬ ,80ËÒ Üuׇ_û?øÿËVŸýÂùü_­îýÜÿÏÆçsÿÿðÇõ?yWãé[`Òr­ñ:œö…}g iE#°-°ÀiµØ!¿úÕ¯~ò“Ÿ|饗vx÷»ßµº—ßYr;ë9D Îþè´¹=v‡Æˆ×áC^Æ·ëî\=ë>¸à´uÏ £Ûˆ¯ëµÇé[~£¹æÇ´+šë8É/1äè:Άªë8µ^ÑXæ¸\ÇÙ¹Ü÷:h5'[ WB*æ²Ë.ûñÿñ(óƒÿþŸýìg⟈ãq?v@MÅë8QàQzÔÇ>ö±xô7ó7ýèGÇ®g£‰í§še§§§GGGq;U´K`¿€/^ÛïãQËØ^:«?ÒëÉõjÙ‹KáF úId€ë±gyØÃö¾÷½¯9xóÍ7_sÍ5qÿq{Ü›Þô¦æà{Þóž¸vÛ™øqcsï½÷ÆÕœ¦XÜ^uÕUo~ó›ÛϺ3Õ\‹Î¯V«¸ª™Ú]æçqæõ¥jEÙù£쬳ø´Î2?Õ2ßQû<ÎY+~÷ãݗȸ‚Ó¼ï·ù¾¸—È»WWr±ݳQÉ â„ÿ’K.iïFûÆoüÆ·¿ýí±ñ‰·Ÿ5ïI‹Û'<á wÞygÛØãÄ‘7¾ñ/zÑ‹šÂ_|ñýصÑκ3Õäªug¾W&ˆ×á´KÛY hÅÇ»Æ;~7žë8Ò½º’‹¨xúÚ¶@œö?æ1i¯ïqÞõ®wµÇÛ;{œ»îº+vC¿ôK¿ÔˆÝЭ·ÞÚ>ëÎT“«Ö=Žë8ë¿ÿŸï}×qÖŸ;×qæ{Ec™=w笿ûñîç®ãt·Rr] {6*Y@œöÇ&å½ï}o3–ö½jüãæg~¦àùóç?øÁƯ{ÝëšïšŽÏÝÄ·¼â¯Xß"=íiO³ÇYŸMîè%à‹×zq)L bvý]Î^ϦWË^\ 7Ë™MF±Ç‰7§ýÐýPû?ñ?ÇcSsõÕWÿîïþnÜ¿ãŽ;âû®æ³9ñ1œ[n¹%¾í-oyKl‘Þö¶·Å£ï|ç;ã~oJî¹j®Õzg*Oíæ¸Ï/^ËѨ˜”&°g ­õ¡¾OW˾bÊ×:wŒk[àÕ¯~u|ís|Öæ¿ü—ÿo3k¾;ºùb´O}êS/ùËŸøÄ'>ãψ‹;øÀÚê7ÝtÓ·û·?÷¹Ïýä'?_õªW]yå•ñyœç}ïóâNDûÉŸüɶðÎ;SÍ2{œ©äµK€½v®žuìå£0uÏ £+A`@Z&©b“„QÈ-PÂb=rr“ŠO`ä”Öܦše'''ç΋۩: ] ÐEÀ¹A%eôXà´2ä‘z%¤Â @`i#¯Ë%4·´§ØxÇ(!Ïõ¡nñ³Z‹ @`FuŸìÝŒž]©ÀÎÄs@B™N Ý&@€ã$\sçjX­,Y`.sA?ç+°äùeì @à>æ»Äîù}š(@à@ÁÉ©"ަ¨ê @ nŽëiMÅê~B®𿋱”)PBžë(V Ìå;k¯Š}.t¬¬ ,8¨f²È!°À³…ŒbXXà´2ä‘ÖóÍ} @`C`äu¹„æ6üH ¹@ y®u $OÚŽý ÐŽPŠ @€À´uŸìÝ´àZ_‚ÀÎÄs@B©æÑñññjµŠÛ©: ] ÐE áš;—P]X”!pˆÀ\æ‚~ÎWàü<¤®=Î!zê @€Àhó]â÷|4[ -V`prªH £ÀT“Ëg*yí @€@/ŽëiMÅzù(L`€@MóÅXÊ–IªØã$a„r ”¹|gíUnRñ dM`Á „ÀT³Ìg*yí @€@/ž-ôòQ˜ÀN+CY`@Z&©b“„QÈ-0òº\Bs¹IÅ'PBžëCÝSÍ2{œ©äµK€½ê> Ø9º^>  °3ñ$P`@Z&©rzzztt·I¢ B€2 $\sç*“¤°Z¹Ìýœ¯@›lî @€Ûó]â÷|Ái'§Š: ¤ÍXÑ @€@e×ÓšŠUö N5Íc)S À´×% PŽ@™ËwÖ^•ƒ¯'µ dM`Á „@­sǸ @€@ž-$q„ÀN+CY`Oúyˆy].¡9O:Ü%ä¹>Ô-;‡Å'@€³¨û4`çèfý|éü,v&žƒ Ìb"è$˜J áš;—PSQkw9s™ ú9_©fÓ… NNNâvªh—t˜ï?¸ç]X”!pˆÀàäT‘@GCòóºÇÇÇ«Õ*n ¢.È-Ðq=­©XnRñ Ô4_Œ¥L©f™=ÎTòÚ%@€^e.ßY{ÕËGa²&°àB`@Z&©b“„QÈ-°À³…ܤâXà´2䑦šeö8SÉk—z Œ¼.—Ð\/… (!Ïõ¡ni™¤Š=NFA @ ·@ݧ;G—›T|;ÏA ¦šeö8SÉk—z $\s窗ÂÌe.èç|¤e’*ö8I!@€Üó]â÷<7©ø'§Š: L5Ëìq¦’×.ô踞ÖT¬—ÂÔ4_Œ¥Li™¤Š¿š„QÈ-PæòµW¹IÅ'5'f °G`g {4 Ø9ºŸ]ªL`gâ9H ¡@eSÆp @€@Z„kî\B¥À¶À\æ‚~ÎW`;ë!@€Zù.ñƒ{ÞŽÝ™'§Š: dJ]a  @€@×ÓšŠÕñÄEÉ5Íc)S äü×7 0¹@™ËwÖ^Mn®Õ dM`Á „ÀT“èôôôèè(n§ê€v  @€@ž-taQ†À! œV†<²À!ùyHÝãããÕj·‡Q—äy].¡¹Ü¤â(!Ïõ¡n©f™=ÎTòÚ%@€^uŸì]/… Ø™xH(0 -“T±ÇIÂ(äH¸æÎ%TnRñ Ìe.èç|¦šeö8SÉk—z Ìw‰Üó^>  089U$ÐQ`@Z&©b“„QÈ-Ðq=­©XnRñ Ô4_Œ¥L©f™=ÎTòÚ%@€^e.ßY{ÕËGa²&°àB`@Z&©b“„QÈ-°À³…ܤâXà´2䑦še'''ç΋۩: ] ÐE`äu¹„溰(Càò\ê8$?Õ%@€Õ Ô}°stÕ?§8¹ÀÎÄs@BÉ“\ @€@É ×ܹ„*ùéз:æ2ôs¾uÌ£ @€™æ»Äîy&Ia ´ƒ“SEÚds‡Ø踞ÖTlÁijš/ÆR¦@ÚŒT&PæòµW•=ƒ†S @Öœ@˜öºD€ÊXàÙB9øzR«À§•!,PëÜ1. D`äu¹„æ’¸ B`@ y®u ìI? @€uŸì'@n‰ç „¹sø¬øþèY2Ž @€@Q ×ܹ„*Ê_gª˜Ë\ÐÏù L5qŽW«UÜNÕí @€.ó]â÷¼ ‹2œœ*è(pH~R×ç=u  @`4ŽëiMÅF³ÕÐbjš/ÆR¦ÀT“Ëg*yí @€@/2—﬽êå£0YXp!0 -“T±ÇIÂ(äXàÙBnRñ ,pZòÈSÍ2{œ©äµK€½F^—Kh®—”çúP·À€´LRÅ' £  [ îÓ€£ËM*>‰ç „SÍ2{œ©äµK€½®¹s ÕËGaæ2ôs¾Ò2I•ÓÓÓ£££¸MM I`¾Küàžg’–@+089U$ÐQ M6w @€mŽëiMŶ!V ¦ùb,e ¤ÍXÑ @€@ee.ßY{UÙ3h8 dM`Á „@i¯K @ ž-”ƒ¯'µ ,pZòȵÎã"@€IF^—Kh.‰› ö”çúP·Àžôó P÷iÀÎÑyÒ äØ™xH(;‡Å'@€³H¸æÎ%Ô¬Ÿ/Ÿ…À\æ‚~ÎW`A'  @€ÀTó]â÷|*jí.G`prªH £ÀT³éÂ… '''q;U´K€ºt\Ok*Ö…E‡Ô4_Œ¥LCòóºÇÇÇ«Õ*n ¢.È-PæòµW¹IÅ'5'SÍ2{œ©äµK€½x¶ÐËGa8­ ydi™¤Š=NFA @ ·ÀÈër Íå&Ÿ@ y®u L5Ëìq¦’×.ô¨û4`çèzù(L`€ÀÎÄs@Bi™¤Š=NFA @ ·@Â5w.¡r“ŠO`.sA?ç+0Õ,³Ç™J^» ÐK`¾Küàž÷òQ˜ÀÁÉ©"ŽÒ2I{œ$Œ‚ @€@nŽëiMÅr“ŠO ¦ùb,e L5Ëìq¦’×.ô(sùÎÚ«^>  5'Ò2I4 £  [`g ¹IÅ'°ÀieÈ# ˜e @€À‘×åšÛ£á!IJÈs}¨[ I¢ B€j¨û4`çèj}*«‰ç „åd»ž @€®¹s Uà³ K• Ìe.èç|*›2†C€Ò Ìw‰Ü󴀢؜œ*è(°uŽ @€­@Çõ´¦bíØÝ!I ¦ùb,e dJ]a  @€@e.ßY{UÇg% dM`Á „@Éù¯o @`rž-Ln®Õ ,pZòÈSM¢ÓÓÓ£££¸ªÚ%@€]F^—Kh® ‹2(!Ïõ¡nCòóºÇÇÇ«Õ*n ¢.È-P÷iÀÎÑå&ŸÀÎÄs@B©f™=ÎTòÚ%@€^ ×ܹ„êå£0s™ ú9_i™¤Š=NFA @ ·À|—øÁ=ÏM*>ÁÉ©"ŽSÍ2{œ©äµK€½:®§5ëå£05Íc)S`@Z&©b“„QÈ-PæòµW¹IÅ'5'SͲG\ô¸øÎ¸ªÚ%@€]x¶Ð…E‡,pZòȇäçàºzàC¿huEìqâöÁzèà8* @€Ü#¯Ë%4—›T|%ä¹>Ô-0þ,»âòëï·ºaµz÷jõqû«W<é Ï¿Z$@€]ê> Ø9º.,Ê8D`gâ98¹À[Þò–ø8IÛïú®ïºøâ‹o¹å–öH—;á­o}k—’ëe®½öÚK/½ôºë®»óÎ;Ûã¿ú«¿úÍßüÍ8þ|»è¢‹Ö»ÚViï’ŸÃê>àþY­>»þÿK¿äÉÃB©E€r ´+ærîä&ŸÀrfÓ¼F»‰Ø>¬÷9~¼õÖ[×ÜçýØ­ô­1·zéK_úÝßýÝ—\rÉÎh±!ºí¶ÛötfüYöG×qþ÷6ÇuœñŸ- @€@w=kh­uÇQ’À0ZçÎÜÇ•d»•+/]X¶÷8¿üË¿c/3—=NÌ…ø ÎçÞ®öÙ¸õyœa/j @€À8]VçÊÊŒ«•% T6eêÎOýÔOņ"ÞœÛø÷©O}*Æw~ôGôÅ/~ñ·|Ë·|Ï÷|Ï… ÚÁþÖoýV<ú´§=í†nxó›ß|ï½÷ÆCß÷}ßšwE­8òîw¿ûYÏzÖ•W^…_ùÊW~ä#i#¬ß‰GÏÚËœu¼´ë8ÍŒþêýçÿ±¯ŠÛ%Opc'@€òÖWá…Üïû¤Ä;4âèqÛ·¢ò‹XÈTšÝ0·¯ã4“‰íLla^ð¹Í î¹çžG?úÑÍ'b>ô¡]vÙe¯ý뛇6v+¯yÍk¢^<ô™Ï|&Þ~ö²—½l'ËF­¶Ì¼®ãÄ÷ª¹Ž³Ø—5'@€À¼Ú¥v9wz=AÖô^\ 7Ë™MóéÎ=Îw~çw6£ø…_ø…'=éIÍýøf€Ç>ö±±mi~¼ùæ›o¼ñÆæþÆnåþà>þñ7Å5øæþÆíF­öÑíq|ÇëÌH ]j—s§û³³±¦Ç/0¯¸ü™Ý«+¹Xå̦yt{[ù‘iFñk¿ök{ØÃšûñ>´¸Ž6ÿâlñ¦µæ¡8²þî²ØàÄ¥œg?ûÙ×\sÍÕW_>øÁn³lÔj Ìhã{Õû‚fà˜£@»Ô.çN÷§i{M#Ý«+¹Xå̦ytç§Ý°Ä7K·{œ—¼ä%O}êSwŽnc·[¤§<å);æýïDøÀ>°]q£V[`F{œßùø^µÅ¾¾8f!Ð.µË¹ÓýyÙXÓ]ÇéN·ð’Ë™Móilgâ8ÑçOúÓÍûÐÖ·ë{œ¸¦óð‡?üŸøD3À÷½ï}ÿá?ü‡æþõ×_{¥¸÷Ýwǧx÷¸Çµ½ç=ï©x“:¾Kí‹VO‹¿·¾Wmá¯r†O€ÂšU{Q·½žߕڋKáF`QjFƒ½ãŽ;âÛ¢Ã7ÝtÓ;ßùθ[žfÃ÷×÷8±Š¿\óŠW¼"62ñ lÏûÞç½á ohFúò—¿üE/zQÜw¯E±ç?ÿùq'ŠÅýü÷?{œ¸šÓ”\¿]ßL­ë8m6Ž—ù½j¸èñ«Õ*nMv P²Àúªºû}ŸŽø Îç¾WÍ'qúÊ-·üB¦Ò솟yÎsžûšæ›ÐâK¡ã‹ Ÿð„'Ä×J¿õ­o½êª«b‡›‘~ô£1´»îºë™Ï|擟üäø¬ÍOÿôO·ƒ}×»Þ—ržñŒg¼úÕ¯Žƒ¿÷{¿÷¾ð‰O|b„ :áÛ¾íÛâ‹ÚÚòÍí=N|gu|~碋.Š+AqçïxÇz•Øû”¹Ç‰ïš‹=NÜ.wz9ÌA`}U]Èý9<-ú8o…L%Ãì.{œ×kΊ`3ï—½'@€©ÎZa+>>5¹öë¨xúÚ0øêé¸N;øVêýΟ?Åâ=u·ß~ûž’SÍ"×q¦’×.ôس†ÖúP/… ¨uîW9Ò2I{œ$Œ‚ @€@nr–ìÑz’›T|£%³†+0Õ,³Ç™J^» ÐK`g½|&0@`ÓÊG–IªØã$a„r Œ¼.—Ð\nRñ ”çúP·ÀT³ìôôôèè(n§ê€v  @€@ºOvŽ® ‹2Ø™xH(pH~ªK€ªH¸æÎ%TõÏ©N.0—¹ Ÿó˜<Éu€”,0ß%~pÏK~:ô­ÁÉ©"ŽuÌ£ @€™:®§5Ë$),V ¦ùb,e ´Éæ °-PæòµWÛŽH+5'i3V4 P™ÀÏ*{ §@N+CY À´×% PŽÀÈër Í•ƒ¯'µ ”çúP·@­sǸ @€@ºOvŽ.‰› öìL< $Ø“~YºpáÂÉÉIÜfmEp p @Â5w.¡SÀ} Ìe.èç|î3 38>>^­Vq›)¾° @ ‰À|—øÁ=Oâ&=ƒ“SEö¤_Ö‡ìq²ò N€©:®§5KE'³jš/ÆR¦ÀY¹—û¸=Nnañ  @ ‰@™ËwÖ^%q„À¬ ,8Ø“~Y²ÇÉÊ+8¤XàÙB*:qœ%°ÀieÈ# œ•{¹Ûã䟒Œ¼.—Ð\7Aì(!Ïõ¡n=é—õ!{œ¬¼‚ @€@*ºOvŽ.8ÎØ™xH(pVîå>n“[X|H"pÍK¨$n‚Ø#0—¹ ŸóØ“~Y²ÇÉÊ+8¤˜ï?¸ç©èÄ!p–ÀàäT‘@G³r/÷q4·°ø D ãzZS±$n‚Ø#PÓ|1–2ö¤Ÿ‡ @€2—﬽ò¤È-5'¹sX| 0kž-ÌúùÒùY,pZòȳ˜:I€¦y].¡¹©¨µ»ò\êXÎl2R 0@ îÓ€£ ¤ ^;ÏA z%¤Â @`i ×ܹ„ZÚSl¼ã Ìe.èç|ÆÏj- @€ Ìw‰Üó=;º:SÁÉ©"Ž3ºM€Æ踞ÖTlX­,Y ¦ùb,e L5¿NOOŽŽâvªh—t(sùÎÚ«.,Ê8D k N ÉÏCê¯V«¸=$ˆº @ ·ÀÏr“ŠO`ÓÊG˜j–ÙãL%¯]è%0òº\Bs½|&0@ „<ׇº¤e’*ö8I!@€ÜuŸì]nRñ ìL< $˜j–ÙãL%¯]è%pÍK¨^>  0—¹ Ÿó–IªØã$a„r Ìw‰Üóܤ✜*è(0Õ,³Ç™J^» ÐK ãzZS±^>  PÓ|1–2¤e’*ö8I!@€Üe.ßY{•›T|YXp!0Õ,;999wî\ÜNÕí @€. <[è¢ C8­ ydCòS] P½ÀÈër ÍUÿœàä%ä¹>Ô-0y’ë(Y îÓ€£+ùéз:v&žƒ Ô1SŒ‚dH¸æÎ%T&Ia ´s™ ú9_6ÙÜ!@€¶æ»Äîù6‚#Ò NN tH›±¢ @€Ê:®§5«ì4œjš/ÆR¦@i¯K @ 2—﬽*_OjÈšÀ‚ZçŽq @€$ <[Hâ&= œV†<²Àžôó 0òº\Bsžt¹JÈs}¨[ wŸßß=KÆq(J îÓ€£+Ê_gªØ™xH(0ÕÄ9>>^­Vq;U´K€º$\sçª ‹2˜Ë\ÐÏù ’Ÿ‡ÔµÇ9DO]M`¾Küàžf«¡Å NN t˜jrÙãL%¯]è%Ðq=­©X/… ¨i¾K™Ò2I{œ$Œ‚ @€@n2—﬽ÊM*>¬ ,8˜j–ÙãL%¯]è%°À³…^>  °ÀieÈ# HË$Uìq’0 B€¹F^—Kh.7©øJÈs}¨[`ªYf3•¼v  @ —@ݧ;G×ËGav&žƒ HË$UNOOŽŽâ6I4A @€@&„kî\Be’–@+0—¹ Ÿóh“Í @`[`¾Küàžo#8B ­ÀàäT‘@G´+¨L ãzZS±ÊžAÃ)P ¦ùb,e ˜öºD€Ê(sùÎÚ«rðõ¤V¬ ,8¨uîH"°À³…$n‚Ø#°ÀieÈ# ìI? @€#¯Ë%4çI'[ „<ׇºrç°ø @`ÖuŸìݬŸ/Ÿ…ÀÎÄs@BYL$@€S $\sçj*jí.G`.sA?ç+0ÕlºpáÂÉÉIÜNÕí @€.ó]â÷¼ ‹2œœ*è(pH~R÷øøxµZÅí!AÔ%@€¹:®§5ËM*>𿋱”)0Õ,³Ç™J^» ÐK Ìå;k¯zù(L`€@Öœ@ HË$Uìq’0 B€¹x¶›T| œV†<²ÀT³Ìg*yí @€@/‘×åšëå£0%ä¹>Ô-0 -“T±ÇIÂ(ä¨û4`çèr“ŠO`gâ9H ¡ÀT³Ìg*yí @€@/„kî\BõòQ˜À¹Ìýœ¯À€´LRÅ' £  [`¾Küàžç&ŸÀàäT‘@G©f™=ÎTòÚ%@€^×ÓšŠõòQ˜À𿋱”)0 -“Tñ7@“0 B€¹Ê\¾³ö*7©ø²&°àBÀ,#@€ö,ðla†‡$Xà´2ä‘’$ª  @ V‘×åš«õ©4®rJÈs}¨[ œl× P @ݧ;GWà³ K• ìL< $¨lÊH+pÍK¨´€¢Ø˜Ë\ÐÏù lg# @€@+0ß%~pÏÛ±»C “ÀàäT‘@GL©+,¨C ãzZS±:ž8£(Y ¦ùb,e ”œÿúF€&(sùÎÚ«ÉÍu z¬ ,8˜jžžÅíTÐ.è"°À³….,Ê8D`ÓÊG8$?©{||¼Z­âö ê @€Ü#¯Ë%4—›T|%ä¹>Ô-0Õ,³Ç™J^» ÐK îÓ€£ëå£0;ÏA ¤e’*ö8I!@€Ü ×ܹ„ÊM*>¹Ìýœ¯ÀT³Ìg*yí @€@/ù.ñƒ{ÞËGa'§Š: HË$Uìq’0 B€¹:®§5ËM*>𿋱”)0Õ,³Ç™J^» ÐK Ìå;k¯zù(L`€@Öœ@ HË$Uìq’0 B€¹x¶›T| œV†<²ÀT³ìäääܹsq;U´K€ºŒ¼.—Ð\e"PBžëC݇䧺 @ zºOvŽ®úçÔ'Ø™xH(0y’ë(Y áš;—P%?úV‡À\æ‚~ÎW Ž™b @ “À|—øÁ=Ï$),V`prªH £@›lî @€Û×ÓšŠm#8B ­@MóÅXÊH›±¢ @€ÊÊ\¾³öª²gÐp ÈšÀ‚Ó^— @€@9 <[(_OjXà´2ä‘j;ÆE€’Œ¼.—Ð\7Aì(!Ïõ¡n=éç! @ îÓ€£ó¤È-°3ñ$P wŸßß=KÆq(J áš;—PEùëL•s™ ú9_©&ÎñññjµŠÛ©: ] ÐE`¾KüàžwaQ†À!ƒ“SEÉÏCêÚ㢧.Œ&Ðq=­©Øh¶Z¬@MóÅXʘjrµ{œ+.¿þ÷HÜNÕí @€=e.ßY{µGÃC’dM`Á „@’D¤Ùãüß_þ5÷[ݰZ}6nü ‡ˆ£ È*°À³…¬ž‚N+C¾Ok¯½öÒK/½îºëî¼óλîºëû¿ÿû¯¸âŠ«¯¾úÅ/~ñ¯ÿú¯·ÕÏŸ?e.ºè¢ØM´·ïL5Ñ^óšÿ'>³ZýJlpþèÿ½_¸úøñkÿgûÿ®»>3Ó—)Ý&@€@Ýë«êBîø„ú6¡—P}!SÉ0{ œµÇ‰w©=ìa{ë[ߺ­Ø=N3ôÀ‡~ÁêV«?¼µÇYÂkš1 @`vë«êBîòÅÊîÛ„\HÝ…L%Ãì%pÖç¥/}éM7Ý´ªØ=N|Ÿ@|ÃÀjuïÚçq|çÀB^Ø “sØXX—ðãà§'®à4œfqûW\þÌÁÑT¬X` óÈû ìÜãÜqÇW^yåÝwß½­Ø=N|ŸÀÚîæÿ|ÏÀúAß9Pñ‹›¡ @`. ë~üÔļ[_Çã~MÅŠ–0Œ±¯ÀöçíoûSŸúÔ}èCÛ¡ŠÝ㸎Sñ —¡ @ &íµµú#ƒŸ>×qÓ-­bõ“Èlìq~û·;68ï}ï{›P¯}ík×c»Çiær|Ç»v—ö²f¼˜—Àúªºû‡þÎ;þè_<º­ð=NÌåx§n\Èö~Ý弬)æ%°¾ª.äþO•ý@À%T_ÈT2Ì^ë{œç>÷¹ñ]jëÿf·ÇYÂD6F˜¯@¯5ºŽÂó}²ô|.uÌ£H+»˜[n¹¥cÌb¯ã\¸páää$nç2õ“–)ÐqÁ­©Ø2Ÿh£S ¦ùb,©n¼ñÆ«®º*v:wÞy瞘çÏŸ2ñWAo¿ýö=ÅÆÌçõ¶ŽW«UÜ®tŸ”&°g ­õ¡Òžý©O Ö¹c\åL5kìq¦’×.ô(gÉ­'½|&0@`´dÖÐb¤e’*ö8I!@€Ü N+CY`ªYf3•¼v  @ —ÀÈër ÍõòQ˜Àò\ê–IªØã$a„r Ô}°st¹IÅ'°3ñ$P`ªYf3•¼v  @ —@Â5w.¡zù(L`€À\æ‚~ÎW`@Z&©b“„QÈ-0ß%~pÏs“ŠO`prªH £ÀT³Ìg*yí @€@/ŽëiMÅzù(L`€@MóÅXÊ–Iªø I!@€Üe.ßY{•›T|YXp!`– @€{x¶°GÃC’,pZòÈIU P«ÀÈër ÍÕúTW9%ä¹>Ô-PN¶ë (P îÓ€£+ðYÐ¥Êv&žƒ T6e ‡¤H¸æÎ%TZ@Ñl Ìe.èç|¶³Î @ ˜ï?¸çíØÝ!I`prªH £@¦Ô–Ô!Ðq=­©XOœQ”,PÓ|1–2JÎ}#@€“ ”¹|gíÕäæ:P½@Öœ@L5‰NOOŽŽâvªh—tXàÙBe"°ÀieÈ# ’Ÿ‡Ô=>>^­Vq{Hu  @€@n‘×åšËM*>ò\ê˜j–ÙãL%¯]è%P÷iÀÎÑõòQ˜À‰ç „Ò2I{œ$Œ‚ @€@n„kî\Bå&ŸÀ\æ‚~ÎW`ªYf3•¼v  @ —À|—øÁ=ïå£0ƒ“SE¤e’*ö8I!@€Ü×ÓšŠå&Ÿ@MóÅXʘj–ÙãL%¯]è%PæòµW½|&0@ k N ¤e’*ö8I!@€Ü <[ÈM*>N+CY`ªYvrrrîܹ¸ªÚ%@€]F^—Kh® ‹2(!Ïõ¡nCòS] P½@ݧ;GWýsj€“ ìL< $˜<Éu€”,pÍK¨’Ÿ}«C`.sA?ç+PÇL1  I`¾Küàžg’–@+089U$ÐQ M6w @€mŽëiMŶ!V ¦ùb,e ¤ÍXÑ @€@ee.ßY{UÙ3h8 dM`Á „@i¯K @ ž-”ƒ¯'µ ,pZòȵÎã"@€IF^—Kh.‰› ö”çúP·Àžôó P÷iÀÎÑyÒ äØ™xH(;‡ÏŠïo€ž%ã8%pÍK¨¢üu¦J¹Ìýœ¯ÀTçøøxµZÅíTÐ.è"0ß%~pÏ»°(CàÁÉ©"އäç!uíqÑS—F踞ÖTl4[ -V ¦ùb,e L5¹ìq¦’×.ô(sùÎÚ«^>  5'Ò2I{œ$Œ‚ @€@nž-ä&ŸÀ§•!,0Õ,³Ç™J^» ÐK`äu¹„æzù(L`€@ y®u HË$Uìq’0 B€¹ê> Ø9ºÜ¤âØ™xH(0Õ,³Ç™J^» ÐK áš;—P½|&0@`.sA?ç+0 -“T9===::ŠÛ$Ñ!@€™æ»Äîy&Ia ´ƒ“SEÚds‡Ø踞ÖTlÁijš/ÆR¦@ÚŒT&PæòµW•=ƒ†S @Öœ@˜öºD€ÊXàÙB9øzR«À§•!,PëÜ1. D`äu¹„æ’¸ B`@ y®u ìI? @€uŸì'@n‰ç „¹sX| 0k„kî\BÍúùÒùYÌe.èç|f1t’L%0ß%~pϧ¢Öîr'§Š: L5›.\¸prr·Su@» @ ‹@Çõ´¦b]X”!pˆ@MóÅXÊ8$?©{||¼Z­âö ê @€Üe.ßY{•›T|YXp!0Õ,³Ç™J^» ÐK`g ½|&0@`ÓÊG–IªØã$a„r Œ¼.—Ð\nRñ ”çúP·ÀT³Ìg*yí @€@/ºOvŽ®—ÂìL< $–IªØã$a„r $\sç*7©øæ2ôs¾SÍ2{œ©äµK€½æ»Äîy/… œœ*è(0 -“T±ÇIÂ(ä踞ÖT,7©øjš/ÆR¦ÀT³Ìg*yí @€@/2—﬽êå£0YXp!0 -“Tñ7@“0 B€¹x¶›T| œV†<²€YF€ìy].¡¹="D „<ׇº’$ª  @ VºOvŽ®Ö§Ò¸ÊØ™xH(PN¶ë (P áš;—P> ºT™À\æ‚~ÎW ²)c8 @ ­À|—øÁ=O (mÁÉ©"ŽÛYç Ð t\Ok*ÖŽÝ™jš/ÆR¦@¦Ô–Ô!PæòµWu  0—¹ Ÿó–IªØã$a„r Ìw‰Üóܤ✜*è(0Õ,³Ç™J^» ÐK ãzZS±^>  PÓ|1–2¤e’*ö8I!@€Üe.ßY{•›T|YXp!0Õ,³Ç™J^» ÐK`g ½|&0@`ÓÊG–IªØã$a„r Œ¼.—Ð\nRñ ”çúP·ÀT³ìäääܹsq;U´K€ºÔ}°st]X”!pˆÀÎÄs@BCòS] P½@Â5w.¡ªN pr¹Ìýœ¯ÀäI® @ dù.ñƒ{^òÓ¡ou NN t¨c¦È$Ðq=­©X&Ia ´5Íc)S M6w @€m2—﬽ÚFp„@Z¬ ,8H›±¢ @€Êx¶PÙ3h8 ,pZòȦ½. @€rF^—Kh®|=©U „<ׇºj;ÆE€’Ô}°stIÜ!°G`gâ9H ¡Àžôó pÍK(O:Üs™ ú9_Ü9|V|ô,Ç  @ (ù.ñƒ{^”¿ÎT)089U$ÐQ`ª‰s||¼Z­âvªh—t踞ÖT¬ ‹2¨i¾K™‡äç!uíqÑS—F(sùÎÚ«Ñl5´X¬ ,8˜jrÙãL%¯]è%°À³…^>  °ÀieÈ# HË$Uìq’0 B€¹F^—Kh.7©øJÈs}¨[`ªYf3•¼v  @ —@ݧ;G×ËGav&žƒ HË$Uìq’0 B€¹®¹s •›T|s™ ú9_©f™=ÎTòÚ%@€^ó]â÷¼— NN t–IªœžžÅm’h‚ @€L×ÓšŠe’–@+PÓ|1–2Úds‡Ø(sùÎÚ«mG¤ÈšÀ‚´+¨L`g •=ƒ†S À§•!,P`Úë(G`äu¹„æÊÁדZJÈs}¨[ Ö¹c\ @ ‰@ݧ;G—ÄM{v&žƒ ìI? @€ ×ܹ„ò¤È-0—¹ ŸóÈÃâ @€Y Ìw‰ÜóY?_:? ÁÉ©"޳˜:I€¦踞ÖTl*jí.G ¦ùb,e L5›.\¸prr·÷Ù+.¿þ÷HÜÞgI @€@r2—﬽Jn( ¬ ,8ØH¹Ñ~<>>^­Vq»¿Å=ð¡÷[ݰZ}6nü ‡î/ìQ \`g É $°!°ÀieÈ# l¤Üh?nïqîºëÃǯýŸíÿ/[}vµº÷sÿãNóÿŒãM™(?Zo5D€‹y].¡¹Å>×>š@ y®¥ \{íµ—^zéu×]wçw¾ÿýïÿø+¯¼òéOúõ×_ÿÊW¾òÞ{ïm:|þüù(sÑEÅnbÏFK憶÷8±sù£½L»©Ùw'ÊoÄô#H.°g ­õ¡ä†Ø¨uî×!±s¹õÖ[›¿ø‹¿ø-ßò-ŸúÔ§âÇ|ä#_|ñë_ÿúõ౺í¶ÛÖlÜßH¹Ñ~ÜÞ㸎3¾† @ »Àƺ¹„»ã(I`˜Àæ‘1öXßã|øÃŽK9m„xè/xAûcÜ™Ñgç‰Ïàø<ÎN  @`õUu!÷ÇÕÊ’2• ³—Àú§­x÷ÝwßqÇzÔ£Þþö··ãÎÜ÷81ý¿úÁ_ÿùì«âvÉ/ÆN€S ¬¯ª ¹µo:=KÆñ¾ ™J†ÙK`{óÆ7¾ñ1yÌãÿø÷½ï}¡æ¾Çñ½j}_4”'@€´ ë~Ü hEÞÉâà0%Ì#cì+°½Ç‰ñ‘œ×½îu{ÜãâjÎzÀíq6>_)ð…«û^µa/j @€@*õUu!÷·éâ NóÖñæÛâþ—?s»˜#: ,d*f/{œ&Âsžóœk®¹f=Z±{œí¿ê{Õ:¾,(F€c ¬¯ª ¹¿ÍŒ{ã»OãÈv1GtXÈT2Ì^ë{œ{î¹g½îÏþìÏ>üáÏæ´‹ÝãlO×q¶M!@€ÉÚ%u9w¶Í]ÇÙ6qäåÌ&#í.°¾ÇyþóŸ¿þæ´½èEßú­ßºjF{œ3Å÷ªídqFX_Ur§­y'‹ƒÃ2• ³—Àú禛nzÖ³žõ±},"¼ãï¸ä’KâRÎz´¹ïqbâÄ;~ジ÷ý{ Q‹X_Urÿ,1+òY2Ž÷XÈT2Ì^ë{œ·½ímÏ}îsŸøÄ'^}õÕ7ÜpCüIÐæï¶+Øãô5Ê @€„í’ºœ; õ„"°S`9³ÉH» Äç–[néXÞgçÌrtè¸àÖT¬£Œb Ô4_Œ%•À7ÞxÕUWÅNçÎ;ïÜóüùóQæ²Ë.»ýöÛ÷œœ* @€%ìYCk}h O«1N+PëÜ1®r¦Íp­ @€ÂÊY²GëIáψîU 0Z2kh±SM“ÓÓÓ£££¸ªÚ%@€]x†Ð…E‡,pZòȇäç!uW«UÜD] [`äu¹„ær“ŠO „<ׇº¦šeö8SÉk—z Ô}°st½|&0@`gâ9H ¡À€´LRÅ' £  [ áš;—P¹IÅ'0—¹ Ÿó˜j–ÙãL%¯]è%0ß%~pÏ{ù(L`€ÀàäT‘@Gi™¤Š=NFA @ ·@Çõ´¦b¹IÅ'PÓ|1–2¦šeö8SÉk—z ”¹|gíU/… ÈšÀ‚i™¤Š=NFA @ ·ÀÏr“ŠO`ÓÊG˜j–œœœ;w.n§ê€v  @€@‘×åšë¢ CJÈs}¨[àüT—T/P÷iÀÎÑUÿœàä;ÏA &Or @€% $\sçªä§Cßê˜Ë\ÐÏù Ô1SŒ‚d˜ï?¸ç™$…%Ð NN th“Í @`[ ãzZS±mG¤¨i¾K™i3V4 P™@™ËwÖ^Uö NYXp!P`Úë(G`g åàëI­ œV†<²@­sǸ @€@‘×åšKâ&=%ä¹>Ô-°'ý>^­Vq;U´K€ºÌw‰Üó.,Ê8D`prªH £À!ùyH]{œCôÔ%@€Ñ:®§5ÍVC‹¨i¾K™SM.{œ©äµK€½Ê\¾³öª—ÂdM`Á „À€´LRÅ' £  [`g ¹IÅ'°ÀieÈ# L5Ëìq¦’×.ôy].¡¹^>  PBžëCÝÒ2I{œ$Œ‚ @€@nºOvŽ.7©øv&žƒ L5Ëìq¦’×.ôH¸æÎ%T/… ˜Ë\ÐÏù HË$UNOOŽŽâ6I4A @€@&ù.ñƒ{žIRX­ÀàäT‘@G6ÙÜ!@€¶:®§5ÛFp„@Z𿋱”)6cE#@€• ”¹|gíUeÏ á(5'¦½. @€rx¶P¾žÔ*°ÀieÈ# Ô:wŒ‹$y].¡¹$n‚Ø#PBžëCÝ{ÒÏC @€@ݧ;GçI'[`gâ9H ¡@îŸÌZ áš;—P³~¾t~s™ ú9_YL$@€S Ìw‰Ü󩨵»ÁÉ©"ŽSͦ .œœœÄíTÐ.è"Ðq=­©Xe"PÓ|1–2ÉÏCê¯V«¸=$ˆº @ ·@™ËwÖ^å&Ÿ@Öœ@L5Ëìq¦’×.ôXàÙB/… Xà´2䑤e’*ö8I!@€Ü#¯Ë%4—›T|%ä¹>Ô-0Õ,³Ç™J^» ÐK îÓ€£ëå£0;ÏA ¤e’*ö8I!@€Ü ×ܹ„ÊM*>¹Ìýœ¯ÀT³Ìg*yí @€@/ù.ñƒ{ÞËGa'§Š: HË$Uìq’0 B€¹:®§5ËM*>𿋱”)0Õ,³Ç™J^» ÐK Ìå;k¯zù(L`€@Öœ@ HË$Uü Ð$Œ‚ @€@nž-ä&ŸÀ§•!,`– @€{F^—Khn†‡$(!Ïõ¡n$‰*¨U îÓ€£«õ©4®rv&žƒ ”“ízB€ H¸æÎ%TÏ‚.U&0—¹ Ÿó¨lÊH+0ß%~pÏÓŠF`[`prªH £ÀvÖ9B€´×ÓšŠµcw‡@&𿋱”))u…%@€u”¹|gíUOœQ”,5'%翾 @€Éx¶0¹¹T/°ÀieÈ# L5‰NOOŽŽâvªh—ty].¡¹.,Ê8D „<ׇºÉÏCê¯V«¸=$ˆº @ ·@ݧ;G—›T|;ÏA ¦šeö8SÉk—z $\s窗ÂÌe.èç|¤e’*ö8I!@€Üó]â÷<7©ø'§Š: L5Ëìq¦’×.ô踞ÖT¬—ÂÔ4_Œ¥Li™¤Š=NFA @ ·@™ËwÖ^å&Ÿ@Öœ@L5Ëìq¦’×.ôXàÙB/… Xà´2䑤e’*ö8I!@€Ü#¯Ë%4—›T|%ä¹>Ô-0Õ,;999wî\ÜNÕí @€.uŸì]e"°3ñ$PàüT—T/pÍK¨êŸSœ\`.sA?ç+0y’ë(Y`¾Küàž—ütè[ƒ“SEê˜)FA€2 t\Ok*–IRX­@MóÅXÊh“Í @`[ Ìå;k¯¶!V k N Òf¬h @ 2ž-Tö N œV†<²@i¯K @ ‘×åš+_Oj(!Ïõ¡nZçŽq @€$uŸì]7AìØ™xH(°'ýò\ê˜j–ÙãL%¯]è%P÷iÀÎÑõòQ˜À‰ç „Ò2I{œ$Œ‚ @€@n„kî\Bå&ŸÀ\æ‚~ÎW`ªYf3•¼v  @ —À|—øÁ=ïå£0ƒ“SE¤e’*§§§GGGq›$š  @ “@Çõ´¦b™$…%Ð Ô4_Œ¥L6ÙÜ!@€¶Ê\¾³öjÁi²&°àB mÆŠF€*XàÙBeÏ á(°ÀieÈ# ˜öºD€Êy].¡¹rðõ¤Vò\ê¨uîH"P÷iÀÎÑ%q„À‰ç „{ÒÏC @€@Â5w.¡<ér Ìe.èç|rç°ø @`Öó]â÷|ÖÏ—ÎÏB`prªH £À,&‚N @€©:®§5›ŠZ»Ë¨i¾K™Sͦ .œœœÄíTÐ.è"PæòµW]X”!pˆ@Öœ@’Ÿ‡Ô=>>^­Vq{Hu  @€@nž-ä&ŸÀ§•!,0Õ,³Ç™J^» ÐK`äu¹„æzù(L`€@ y®u HË$Uìq’0 B€¹ê> Ø9ºÜ¤âØ™xH(0Õ,³Ç™J^» ÐK áš;—P½|&0@`.sA?ç+0 -“T±ÇIÂ(ä˜ï?¸ç¹IÅ'089U$ÐQ`ªYf3•¼v  @ —@Çõ´¦b½|&0@ ¦ùb,e HË$Uìq’0 B€¹Ê\¾³ö*7©ø²&°àB`ªYf3•¼v  @ —ÀÏzù(L`€À§•!,0 -“Tñ7@“0 B€¹F^—Kh.7©øJÈs}¨[À,#@€öÔ}°st{4•ÆUŽÀ\æ‚~ÎW œl× P À|—øÁ=/ðYÐ¥Ê'§Š: ÌtÊ\qùõ¸ÿCâv¦ý×m˜‹@Çõ´¦bsyjôs¾5Íc)S`޳ãA|èýV7¬VŸÛ?è¡s‚> @€À\Ê\¾³öj.O~ÎW k N f7;âÚÍ­¾768ÍÿØæ\qù3g7 &@€¹,ðla.O~ÎW`ÓÊïSàÚk¯½ôÒK¯»îº;ï¼³-ü¡}è‘|äM7ÝÔ9þ|”¹è¢‹â/Ñ´·ïÌnvÄ[ÔÚ Ns'ŽÌn:L€sØ^:«?2—§F?ç+Pý$2À±s¹õÖ[7*>ç9Ϲøâ‹_ð‚lÝÐm·Ý¶qpýÇ©fÇéééÑÑQÜöí€ë8}Å”'@€CÖÍ…Ü?„K]]2• ³—ÀöçŽ;î¸ñÆãøúuœ&f±{œ¸º´Z­â¶ËDØ(ŸÁñyœ ? @€@&^kt…3I K ¨c¦EZ=Î'>ñ‰+¯¼ò#ùH¼‡mF×qÙãÄùêýçÿ±¯ŠÛv²¸C€r¤]Ägm£ï;€¶ä*³˜:9²ÀÆçæ›oþ¹Ÿû¹èÃrö8¾WmɝЯN€‘F^åKh®¯°u¹¯˜ò%ä¹>”&°¾Çy×»ÞuÍ5×4=ŒãK¸Žãó8^  @`LÒNFèO/ÞX—›7û¾Ó^n /ÁÉ©"ŽSÍ2{œ©äµK€½:®§5ëå£05Íc)S`@Z&©b“„QÈ-PæòµW¹IÅ'5'SÍ2{œ©äµK€½x¶ÐËGa8­ ydi™¤Š¿š„QÈ-0òº\Bs¹IÅ'PBžëCÝf °G îÓ€£Û£á!Iv&žƒ $ITA @€@­ ×ܹ„ªõ©4®ræ2ôs¾åd»ž @€æ»ÄîyÏ‚.U&089U$ÐQ ²)c8 @ ­@Çõ´¦biE#°-PÓ|1–2¶³Î @ (sùÎÚ«vìîÈ$5'™RWX P‡ÀÏêx⌢dN+CY äü×7 0¹ÀÈër ÍMn®Õ ”çúP·ÀT“èôôôèè(n§ê€v  @€@ºOvŽ® ‹2Ø™xH(pH~R÷øøxµZÅí!AÔ%@€¹®¹s •›T|s™ ú9_©f™=ÎTòÚ%@€^ó]â÷¼— NN t–IªØã$a„r t\Ok*–›T|5Íc)S`ªYf3•¼v  @ —@™ËwÖ^õòQ˜À¬ ,8–IªØã$a„r ,ðl!7©ø8­ yd©f™=ÎTòÚ%@€^#¯Ë%4×ËGaJÈs}¨[`@Z&©b“„QÈ-P÷iÀÎÑå&ŸÀÎÄs@B©fÙÉÉɹsçâvªh—tH¸æÎ%Te"0—¹ Ÿó8$?Õ%@€Õ Ìw‰ÜóêŸSœ\`prªH £ÀäI® @ dŽëiMÅJ~:ô­𿋱”)PÇL1  I Ìå;k¯2I K ÈšÀ‚6ÙÜ!@€¶x¶°à´ œV†<²@ÚŒT&0òº\Bs•=ƒ†S @ y®u ˜öºD€Ê¨û4`çèÊÁדZv&žƒ Ô:wŒ‹$H¸æÎ%T7Aì˜Ë\ÐÏù ìI? @€ó]â÷Ü“N ·ÀàäT‘@GÜ9|V|ô,Ç  @ (ŽëiMÅŠò×™*jš/ÆR¦ÀTçøøxµZÅíTÐ.è"PæòµW]X”!pˆ@Öœ@’Ÿ‡ÔµÇ9DO]M`g £Ùjh± œV†<²ÀT“Ëg*yí @€@/‘×åšëå£0%ä¹>Ô-0 -“T±ÇIÂ(ä¨û4`çèr“ŠO`gâ9H ¡ÀT³Ìg*yí @€@/„kî\BõòQ˜À¹Ìýœ¯À€´LRÅ' £  [`¾Küàžç&ŸÀàäT‘@G©f™=ÎTòÚ%@€^×ÓšŠõòQ˜À𿋱”)0 -“T9===::ŠÛ$Ñ!@€™Ê\¾³ö*“¤°Z¬ ,8h“Í @`[`g ÛŽH+°ÀieÈ# ¤ÍXÑ @€@e#¯Ë%4WÙ3h8 ”çúP·@i¯K @ ºOvŽ®|=©U`gâ9H ¡@­sǸ @€@„kî\B%q„À¹Ìýœ¯Àžôó 0ß%~pÏ=ér NN tÈÃâ @€Y t\Ok*6ëçKçg!PÓ|1–2f1t’L%PæòµWSQkw9YXp!0ÕlºpáÂÉÉIÜNÕí @€. <[è¢ C8­ ydCòóºÇÇÇ«Õ*n ¢.È-0òº\Bs¹IÅ'PBžëCÝSÍ2{œ©äµK€½ê> Ø9º^>  °3ñ$P`@Z&©b“„QÈ-pÍK¨Ü¤â˜Ë\ÐÏù L5Ëìq¦’×.ô˜ï?¸ç½|&0@`prªH £À€´LRÅ' £  [ ãzZS±Ü¤â¨i¾K™SÍ2{œ©äµK€½Ê\¾³öª—ÂdM`Á „À€´LRÅ' £  [`g ¹IÅ'°ÀieÈ# L5Ëìq¦’×.ôy].¡¹^>  PBžëCÝÒ2I4 £  [ îÓ€£ËM*>‰ç „f °G áš;—P{4•ÆUŽÀàäT‘@Gr²]O @€@×ÓšŠø,èRe5Íc)S ²)c8 @ ­@™ËwÖ^¥À¶@Öœ@lg# @€@+°À³…vìîÈ$°ÀieÈ# dJ]a  @€@#¯Ë%4WÇg% ”çúP·@Éù¯o @`rºOvŽnrs¨^`gâ9H ¡ÀT“èôôôèè(n§ê€v  @€@„kî\BuaQ†À!s™ ú9_CòóºÇÇÇ«Õ*n ¢.È-0ß%~pÏs“ŠO`prªH £ÀT³Ìg*yí @€@/ŽëiMÅzù(L`€@MóÅXÊ–IªØã$a„r ”¹|gíUnRñ dM`Á „ÀT³Ìg*yí @€@/ž-ôòQ˜ÀN+CY`@Z&©b“„QøÿÚ»ß_«‰<Žã'ÙG›}´ëw]²ÖÝÍþûÀ‡ˆDA@L€DîU/ˆ "ˆC‚?¯š€Š>IäF¢Ë>0‚äj »1jÈ „„‘‰Hp?ÒÐ4=mOOÏL;¾OnnzÚétæÕït:§==¶Jî—]ØœmRòGÀ…8§ ~ TÕÊãT%Ïv@ºðû4 ±v]ù‰ÇL K#«0Æ1ÂH& €¶ ö¹uÉÊ6)ù#P—¶@9ë+PU+3fŒþWU¶‹ €@úvñ…Kž‡…4ô"P88Yœ½Ä'ë"€ à½@ÎþÔ§dÞïS*X¹€Oí…º¸)Py÷^€þ¾EþÓ¿ô¿÷¬È@˜€›Ý·ÕRÅx‹€q«LæN ŒŽŽ.X°`ìØ±‡Ê.ØË/¿:!Š<-4 €Î tì»ýKàì¾ `Þø×j¨Q  ç‰Ýwß}sæÌY¼xñÎ;/]ºÌÇ8ƒƒƒÁ i¯¾úêüùóï¼óN]» õ‚ë8Û¶mÓímz}òÉ'ÑEýýýóæÍ[µjÕ¾}ûÂùi6 ×qÂK<\DZ`䉔)Öz<¿L^¶ÕL›Oë¶bÅ ý@Œ.\¸ ‘ÎG}€„c½Õ@fܸqo½õ–¦>;zË–-Mœ8Q—uÎ;§gGk8p@kmß¾]ƒ&=˜Z×}-Z¤¯ä<ÿüóæ±+í­Á1ŽÊ¬[ueœ€KÛ}lhŽ@Fêë¢;—ޏZ“WñµíP¯<±‹5yV)¦ªöevŒSU-Ø. €€÷úÖº¯âý>¥‚• Ô½Pþ^ãTÞ) €½tå5]—Ž€mš6 ŠÝ»Ààà`pCšn9ë=·ŒlÇpZþ\ÇI“a> €€S}¨¯‹œò§0^ øÚv¨—;U5ýŽÏìÙ³õ¿ª°]@ò¸Óe—V’<,¤A Ò‚™ 5V —ød]@¼hà‚÷û” V.ÐÀfE•K¨<È) €. ”Ü/»°9—weóCÀ…8§ ~ øÑR¨ €–ü> H¬%I²E H %ñUÀ§öB]ÜðµíP/@Œ¸Ù}[-•72A CÀj“9È?«‹FGG‡‡‡õßêVÈ@x¶Ð£«#ÐQ ÍŠ*—,Ð1-%jµZúo)²E@Àˆ@Éý² ›3âF&d¸ç”ÁoŒð³ºˆ1ŽU^2G0%à÷i@bíLÑ‘i‰ÇL ¤ÅžíùŒql “? €€ƒ}n]²2âF&dÔ¥-PÎú d„ŸÕEŒq¬ò’9 €€)úvñ…KnŠŽ|H(œ¬ˆ@N´Ø³=Ÿ1ŽmaòG0"³?õ)™72A CÀ§öB]ÜÈ?«‹ãXå%s@SnvßVKeŠŽ|H°ÀdŽ€ÒbÏö|Æ8¶…É@Àˆ@ÏŒ¸‘  lVT¹dŒð³ºˆ1ŽU^2G0%Pr¿ìÂæLÑ‘i.Ä9eð[ -ölÏç7@m “? €€¿OkgÄLÈH $F €€Oí…º¸)P ,¬ÂÇ#™ €Øp³û¶Z*Û¤ä€Õ&s$PU+cŒS•<ÛEèJ g ]ù lVT¹daidÆ8FÉ@À¶@Éý² ›³MJþ¸ç”ÁoªZcœªäÙ. €@W~Ÿ$Ö®+#P@ 1𘉀AaidÆ8FÉ@À¶€Á>·.YÙ&%êÒ(g}ªjeÃÃÃcÆŒÑÿª Àv@È#Pß.¾pÉó°^ '+"S —ød]@¼ÈÙŸú”Ìû}J+ð©½P7*r € €€ËnvßVKåòî l~X `2G@~´j €€%ž-X’$[B6+ª\²@lL € €@»@Éý² ›kG`f\ˆsÊà·€Ùˆ%7@<ðû4 ±vžíAªã @bà1ƒ†=EB@Àƒ}n]²rŸ’ø*P—¶@9ë+àkÛ¡^ €¨o_¸äFÜÈ ÂÁÉŠäÈ?!€ €@ÎþÔ§dìtl øÔ^¨‹›¶c8-~4M†ù €N ¸Ù}[-•SþÆK«LæH ª†344Ôjµô¿ª°]@ò4ðl! ièE ÍŠ*—,ÐK|ö².cœ^ôX@ 4’ûe6Wš-j¬€ qNü¨ªq1Æ©Jží"€t%à÷i@bíºò!1™(–FVaŒc„‘L@l ìsë’•mRòG .mrÖW ªVƧ*y¶‹ Е@}»øÂ%ïʇÄ(œ¬ˆ@NaidÆ8FÉ@À¶@ÎþÔ§d¶IÉŸÚ uqPàçŸ>RÑk×®]7ÜpƒþW´}6‹ €@.3gΨ»t°·T¤ Ï ríy!дfe©µ’mš€l'/@ÈPw™Ö“ú7ŸsƒÌX`¡1F5+ÿŽ×HŸÕ(Àx!€ €@†@Ó®ãdP°SjVŽ( € € € € € € € € € € € € € € € € € € €À§Ÿ~:þüyóæ-Y²ä»ï¾ƒ%§À¦M›î½÷Þ…×^Ë–-˹b““]ºtéÅ_7n\,ÒÞÿ}E ^+W®uê”ê;88¨4žU¼÷ê¤Ñ­]»6*Ùû†|Íáæ›o~ï½÷T»óçÏëãˆåË—5%ö:îñ4:b¯#]% ÒŽ•ÆêFóÔTcœ á[-IU™§µÍªÊÃvpM@ýTxâòåËïìÞ½ÛµBºYÆ8Ýî—o¿ýöرcÆÆ8úlíÙgŸ rûþûïµtdd¤ÛÌýNŸF§ö{âÄ ¿ën¤v‹/óùøãu%1S{!KÚD±—&Víü´cEµ¥²±õ<5ÕG/!Ï´¶-Û´iÓø06 Ât£&Mšôæ›o†U~øá‡{ì±ð-Œq2p2}öÙgÑ1Î… ôvxx8\E·¼ð á[&BæsžâäŸøâ‹/rºxMìåG R†tzKìu«WfúöcE™[/s[Ù5õ{Œu޶Íè|Æ8Q ¦%ðÓO?©¯ßµkWXëÕO¬Öw"·LdhŒ£Û®ô9°†ï¾û.ß"ɰŠ.ŠuI£££ ƒ†iî¿ÿþÇ<|ËD(£Ó|gê;8 ,ÐÕØ>ø€MC«Œ }ª£›r•€ØËPJ\Òi)±—HäÈÌöc…#3^ŒìšjŒ³bÅ }oÑ¢E[·n=}ú´ñ8’a´mF‹Ä'ªÁt£t·Fì#t/Ýu×]B(\Y uÌÔ ~úþ²Ü¦Nªé¹5gÅX—|útøðáPࡇÒ°1|ËD(£Óü×_]_™×ÄÑ£G}ôÑ9s愉™H8{ö¬8Á˜šØK$J›¥Sb/ Ê…ùíÇ Je£ Ù5Ý¿ÿK/½¤GüðÃúXrüøñ cŨ6ÏXÛŒ†1NTƒéF pÇÔîÖFwøë>SzœO¬Kjÿ,]Wu=ÑcÂU‹ÑÅòÑÍWúÈâ›o¾‰ÍçmT@#ÁÍ›7sˆ½¨LÇé(],1±©ümö±¢òâ,@þš^¹rE7çoÛ¶ÍàÖÉ*Ö6õèHÝa¼4¬‹>Öã+YŽì Šá”€žgý>Ž>Bçû8ÅvÐÝwß½~ýúbë6j­X—Ôþ]IÔó¥e’³²1ºöµ&L˜ O×Ûç3'P\=õÔS¡±RtœˆÑµ§'öÚM*œÓñXQaÙÌnº«š.]ºT'9f PynÙm“ë8•ï P¡Àºuëx®Z1ÝŸ¦+àÁºz í-·Ü¢‡Õ˪QkµwIú¸iã3„à¹jŸþy£LrV¶N߉×=r䈮ãDïú 1!}¶~Ïë¿W_šIìå‰D:b/]UiÚU•Äöv³kª#¯\è:Žn)ã7l©ÌüÛf´Œq¢L7M úû8;vì˜1c†n`kB±úêÐñÎ;ïh]}Ñ[w¿Ü~ûíá§X† Y+è’¢O<Þ·oß”)S‚gùêÞižz‘ ítÔè^”^¼Ð »¯¯/m݆ÏWSíïïÿòË/ÿsõ¥;óƒ'Ê{#ŽØëHWa‚öcE……±ºéöšêH¸aÆ`£úCÃ}UV/=H·”Gÿ×jÁJÈ<­mF7Í'ªÁt8 ßþÖ‰å’%KNž<Ù@bUÖw½uüÔ‰“~³ò•W^ѧèÅòiÎZ è<\gGúÅùð¢ôL0E ^«V­â uí!£{ä‘G‚4º·\¤÷Üsš°>Ðã÷@Ûé4G—YõcyŠºè+üe@b/-˜™AGìe¸U¸(v¬ˆf+,•MÇju…Q7¨[Ô3tb£ß#Ðqò¹çžÓ'6JRIžm3ZÆ8Q ¦@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@«ÿ7ÝÙ endstream endobj 8 0 obj 35057 endobj 10 0 obj << /Length 11 0 R /Type /XObject /Subtype /Image /Width 1100 /Height 800 /ColorSpace /DeviceGray /Interpolate true /BitsPerComponent 8 /Filter /FlateDecode >> stream xíÐ  þ©o( 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ ü ,Û! endstream endobj 11 0 obj 3860 endobj 12 0 obj << /Length 13 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >> stream x…UßoÛT>‰oR¤? XG‡ŠÅ¯US[¹­ÆI“¥íJ¥éØ*$ä:7‰©Û鶪O{7ü@ÙH§kk?ì<Ê»øÎí¾kktüqóÝ‹mÇ6°nÆ¶ÂøØ¯±-ümR;`zŠ–¡Êðv x#=\Ó% ëoàYÐÚRÚ±£¥êùÐ#&Á?È>ÌÒ¹áЪþ¢þ©n¨_¨Ôß;j„;¦$}*}+ý(}'}/ýLŠtYº"ý$]•¾‘.9»ï½Ÿ%Ø{¯_aÝŠ]hÕkŸ5'SNÊ{äå”ü¼ü²<°¹_“§ä½ðì öÍ ý½t ³jMµ{-ñ4%ׯTÅ„«tYÛŸ“¦R6ÈÆØô#§v\œå–Šx:žŠ'H‰ï‹OÄÇâ3·ž¼ø^ø&°¦õþ“0::àm,L%È3â:qVEô t›ÐÍ]~ߢI«vÖ6ÊWÙ¯ª¯) |ʸ2]ÕG‡Í4Ïå(6w¸½Â‹£$¾ƒ"ŽèAÞû¾EvÝ mî[D‡ÿÂ;ëVh[¨}íõ¿Ú†ðN|æ3¢‹õº½âç£Hä‘S:°ßûéKâÝt·Ñx€÷UÏ'D;7ÿ®7;_"ÿÑeó?Yqx endstream endobj 13 0 obj 1047 endobj 9 0 obj [ /ICCBased 12 0 R ] endobj 3 0 obj << /Type /Pages /MediaBox [0 0 792.0792 576.0576] /Count 1 /Kids [ 2 0 R ] >> endobj 14 0 obj << /Type /Catalog /Pages 3 0 R /Version /1.4 >> endobj 15 0 obj (Mac OS X 10.7.3 Quartz PDFContext) endobj 16 0 obj (D:20120210173634Z00'00') endobj 1 0 obj << /Producer 15 0 R /CreationDate 16 0 R /ModDate 16 0 R >> endobj xref 0 17 0000000000 65535 f 0000041187 00000 n 0000000175 00000 n 0000040936 00000 n 0000000022 00000 n 0000000157 00000 n 0000000289 00000 n 0000000378 00000 n 0000035634 00000 n 0000040900 00000 n 0000035655 00000 n 0000039708 00000 n 0000039729 00000 n 0000040879 00000 n 0000041029 00000 n 0000041093 00000 n 0000041145 00000 n trailer << /Size 17 /Root 14 0 R /Info 1 0 R /ID [ <4e69284ab6a8cf5a242e66a99d15148b> <4e69284ab6a8cf5a242e66a99d15148b> ] >> startxref 41262 %%EOF pymc-2.2+ds/docs/_images/summary.png000066400000000000000000000555411204033704200174730ustar00rootroot00000000000000‰PNG  IHDRL 9÷sBIT|dˆ pHYsaa¨?§i IDATxœìÝyxVõ™7ðû h ˆq«`e«ômA .HëÒb)nE™q©"ŠUÛ×Ò×ÁêhSÇY\°¸‚XŪUKµˆvX, "ZB@ŠP1%âBKÎû‡“Œ9  ð„äó¹®\’³ÞçÏ9ùæ·d’$I€*9Ù. ¡˜¤LR&)€ @ŠÀ E`"0H˜¤LR&)€ @ŠÀ E`"0H˜¤LR&)€ @ŠÀ E`"0H˜¤LR&)€ @ŠÀ E`"0H˜¤LR&)€ @ŠÀ E`"0H˜¤LR&)€ @ŠÀ E`"0H˜¤LR&)€ @ŠÀ E`"0H˜Ô“éÓ§Ç)§œ:uŠöíÛÇI'·ß~ûV·ïܹsäääÔúÕµk×Û¯_¿>FŒx`tÐAq饗FYYY­ÇþÕ¯~íÚµ‹’’’í¾žO>ù$n¼ñÆ8ãŒ3¢K—.Ѻuë8ì°Ãâ;ßùNüêW¿Š¢¢¢í>öŽš:ujµÏkåÊ•ÕÖ?ñÄqàÆSO=UµlܸqÕö©‹óÎ;¯jûC9¤^¯akuU~Í™3g‡Ž;kÖ¬7n\¼õÖ[õTiöÌš5«Úg3{öìl—Àÿø¼÷™=öØ#ºtéC‡­ó{Ã=ãëÓ¸qãbòäÉ;íøìþ&õà§?ýi 80š5k'NŒùóçÇ—¿üå¸úê«cøðáQQQQcŸL&‡zhôèÑ£ÆW—.]jlõÕWÇôéÓ㮻ï¾;ž~úé=ztíV­Z×_}\ýõ‘ŸŸ¿]×3wîÜèÕ«Wüö·¿sÏ=7fΜ………qå•WFnnnü⿈=zÄE]´]ÇßQçœsNTTTÄðáÃ#“ÉÔX_\\%%%ñÎ;ïT-7n\TTTÄñÇ_ë>µ™4iRTTTD§Nê¼Ï¶ª¬køðáÕÎyüñÇïÐqgÍš×]w]£LN8ᄨ¨¨ˆ±cÇFDì´¿ ¶ÝŠ+ªÞs2™LTTTT}Í›7/N;í´xâ‰'â«_ýj,Z´è ÷EÏøútÝu× Lø\ͳ]ÀîîùçŸÿ÷ƒ:(žy晪å'NŒœœœ˜8qb 80Î>ûìûþéOŠƒ>ø Ï‘$I<ùä“qÅWÄ©§ž#GŽŒ;ï¼3n½õÖjÛ^qÅѵk×5jÔv]ÏÂ… £ÿþq 'ÄïÿûhÕªUÕº#FĈ#âŸÿùŸã¦›nŠ÷ß»ÎQ_’$‰$Ij,9rdüð‡?Œ6mÚÔÛyvöK[m×Au>#€ÝKŸ>}¢OŸ>±hÑ¢˜>}z\}õÕñôÓO×iß­=ãaWÒÂ`M›6-""N9å”ëN>ù䈈¸å–[v诼òJ¼óÎ;ѯ_¿ªe}ûöU«VÅÿ÷W-ûãÿO=õTL˜0a»~À¯¨¨ˆK.¹$’$‰[n¹¥ZXòY£GŽ:lû…ìBõ–ìî¼lm§Ÿ~zDDüå/Ér%°m&;hÙ²eÑ»wïë*Ž… Æš5kj¬¯ë³ååå±Ç{T-kÞüÓF‚•ã˜lذ!.¿üò8ÿüóãßøÆ6\Áÿzä‘Gbá…ѯ_¿èÕ«×V·kÛ¶mÜsÏ=1hРªe-Z´¨êo<~üø˜?~œ~úé±ÿþû×:È]wÝýû÷öíÛG—.]bÈ!±xñâZÏ÷öÛoÇСCãK_úR|ðÁqÎ9çlµ/ôgûRŸþù[½†-[¶ÄÏþóèÝ»wäååÅ 'œO>ùäç}<µzýõ×ãÌ3ÏŒ/ùËÑ¡C‡øæ7¿÷Ýwß6gkzôèQíz*Ï—ŸŸ‡rHüßÿûcÓ¦MUÛ¯X±"rrrâºë®‹ˆˆTíÁT;öªU«bذaÑ£Gh×®]{ì±qóÍ7WûwY\\\­/ùäÉ“ãøC|ç;߉:DNNNµsT~Už?¢úßI³fÍ"âÓpîˆSO=5:uê­Zµªêæµ­cï¬[·.î½÷Þøþ÷¿ûì³OtêÔ)¾ûÝïÆ¤I“¶:Î»ÎæÍ›#"¢cÇŽÛ¼o’$qã7FïÞ½£]»vqÌ1ÇÄK/½Tc»U«VŸqã¢wïÞÑ¡C‡ÈËË‹£Ž:*î¼óÎï[•c”ET'«Y³f;uÌv?€Ô¹s爈ZÞŸmýQÛxâĉñþÏÿ‰¶mÛÆA'žxbüö·¿­±]ß¾}cŸ}ö‰yóæU-›?~tìØ±*”¹é¦›âƒ>ˆ‚‚‚í¾– DDÄW¿úÕ/ÜvðàÁÕ‰ 6ÄÌ™3#âÓ€èÊ+¯Œ3Ï<3^~ùå8p`µ/gŸ}v\zé¥qÚi§Å›o¾Ï<óL|ôÑGqÔQGÅsÏ=Wí<Ë–-‹>}úÄÌ™3ãÞ{ïE‹ÅUW]£FŠ¿ÿýï5êZ±bEÕò­µ²I’$.¸à‚èÒ¥K<÷Üsñâ‹/FÛ¶mãÌ3ÏŒ &|áµWzüñÇ£OŸ>ñÉ'ŸÄ³Ï>K—.ï}ï{U]—êCaaaÕõ¼õÖ[1räÈ8í´ÓâÏþsœrÊ)ñoÿöoUc{D|úïñ³ã}Ìš5«ª/ùgƒœÊqj-Z<òH¬\¹2.¹ä’7n\ 8°êår¿ýö‹ŠŠŠ¸ÿþû#"â™gž‰_þò—qÙe—ÅK/½½{÷®ê³~ðÁGË–-ãƒ>ˆ_üâUçZ±bE\sÍ51tèÐØ²eKDD¬]»¶ê…uêÔ©ñöÛoÇõ×_¯½öZôêÕ+JKKëü <8®¼òÊ8÷Üs£¨¨(zè¡Øk¯½â‚ .ˆ—_~y;?yêKå ì?øÁ¶yß±cÇÆ›o¾S§N &Äš5kâÄO¬ñœxä‘Gâºë®‹üà±páÂX°`AœsÎ9ñ³Ÿý,.¾øâjÛVŽñ¿ãdUTTÄ–-[êÔUš&$`‡<þøãI&“I:è ë.¿üò$“É$™L&yê©§ª­ëܹsòõ¯=™9sfòá‡&K–,IFŽ™d2™dèС5Ž5|øð¤GÉ‹/¾˜¼ôÒKI÷îÝ“ýèGI’$ÉÒ¥K“-Z$'NÜ¡kùö·¿d2™ä¦›nÚ®ýgΜ™d2™¤Y³fÉ{ï½Wµ|îܹÉüã$I’䡇J2™Lrúé§WÛ÷ý÷ßOrrr’ž={&UË¿ÿýï'™L&™6mZµí_xá…$“É$999É[o½UmÝßÿþ÷$“É$çŸ~û÷ïŸd2™ä’K.©¶|ãÆÉ~ûí—´iÓ&Y³fMµu:uJ9äjË>øàƒ¤cÇŽIóæÍ“µk×V[÷½ï}/Éd2Éüùókýœj3|øð$“É$“'O®±®òz2™L²xñâjë=ôФcÇŽ5ö;vl’Éd’Ù³g×X·iÓ¦¤gÏžINNNòꫯV[÷ãÿ8Éd2ÉÃ?\mùý÷ߟd2™$//¯ÚßÏ“O>™\ýõI’$É/~ñ‹$“É$&L¨¶ï–-[’ƒ:(yþùç«–•––&GuTRRRRmÛùóç'™L&¹úê«ëtMK—.M2™Lrá…VÛ¶´´4Ùk¯½j½~ê_å3ù³^~ùåä§?ýi’›››œtÒIÉ;ï¼SçãU>Ï9çœjËó›ß$™L&¹ãŽ;ª-à’Q£FÕ8Έ#’œœœäõ×_¯µæÔ¹&š-LvÐgœƒŽ·ß~;¾óïÄôéÓ£¨¨(®ºêªxä‘GªšŸ¦gʹÿþûcîܹq 'D›6m¢[·n1a„èÓ§OL:5xàjÛÿêW¿ŠC9$Ž?þø8þøã£k×®qã7FDĨQ£âÈ#Œ‹/¾86nÜ×^{m|õ«_ž={Æå—_Ÿ|òI®¥²Ì>ûì³CŸIÏž=«qÒ¯_¿øÏÿüϪ눈8p`µ}Ú·o‡vX,^¼8ž}öÙˆˆ())‰Ç{,Ú·o_5Øm¥£Ž:*Z´h±Ý5¦g¡Ùc=bÈ!ññÇǤI“¾pÿI“&Å{ï½G}täååU[wÜqÇEDÄüÇlw}µiß¾}ôèÑ£Ú²=zÄûï¿¿M]Ož~úéX¼xqpÀqä‘GV[÷Eµ{ì±ÕZî <8ÆŒŸ6qÎd25º$͘1#rrrâ[ßúVÕ²víÚÅK/½ûî»oµm¿ñoÄþûï .¬Óµìµ×^‘““³fÍŠÕ«WW;~QQQuÔQu:;.I’jÝ3>úè˜ë7Þˆˆ¨ÓuÔ—¾}ûÖX–——I’lÓßÙŽÔþyÓWz .Œ×^{­jùý÷ßçw^íW¬XwÞyg <8Ú¶m[õ‚ýÎ;ïÔ¹ùþûïgžyf,_¾<9ä8÷Üscúôé±yóæ8à€v(T`Û|vZá’’’¸ãŽ;bíÚµ1dÈížYï³ÞGDÕ/)ÒϽ$Iâ…^ˆ1cÆDŸ>}¢Y³f‘““Sõ^el¶‡À d2™9rd¼øâ‹QZZ+W®ŒÇ{,ºwïï½÷^d2™:÷‰­ü!vÑ¢Eµ®ßsÏ=«ýøã㪫®Š#FÄ׿þõˆøt\þð‡qå•WưaÃâÊ+¯Œ§Ÿ~ºN-¾ò•¯Dħƒ¬îˆt«Jï½÷^”——G’$ñ¥/}©Æ@¡'NŒL&Sõ[£ÊíÛ·¯õxÛÛÏ8“ÉÄXcyåyêrýÿøÇ?""âÚk¯­q}ûö­võ¥¶Áò*Qݖਲö{î¹§Fíûï¿DD|øá‡ñá‡ÖØwk·•*ǵ©leRZZÓ¦M«˜,\¸0;ì°(((ˆï}ï{±lÙ²ª—ìƒ>¸j¬“ºxä‘GbêÔ©Ñ­[·xðÁcàÀqØa‡Å£>ZçcP¿:vì#GŽŒ#FÄÊ•+ãÇ?þqµõéçOåó,-Ýêµr°Öôsïg?ûYôïß?-Zÿò/ÿåååQQQQ5¾Ú¶}ú¯²ûÂg«ÝšÒÒÒmžÍdŸ}ö‰ÜÜÜÈd2ñî»ïVý€üÙ¯-[¶Ä¿ýÛ¿EDT…k×®­õxÛûÛ¢$IªBƒÏªºÆ,I•/³—^zi\xá…_Ä|‘!C†Äk¯½¯¾új\uÕU±zõê8ûì³ëÔ½ €§   òòòbêÔ©QXXXµ¼¶çÎöZ·n]ÜrË-ѬY³˜0aBœ|òÉU³ noKTˆ˜Ô‹'žx">øàƒËŸ~úé(//+¯¼²Úòý×­1†G¥Ê`£gÏžŸ{Î×_=n½õÖ(((ˆ½÷Þ;"þ7lùlWŸÊ. 7nüÂë8óÌ3ãØcyóæÅ_ÿú×­n÷æ›oÆATã·E_$'''zöìI’ÄóÏ?_c}EEE<ûì³U-<ºuëŸöSNS^^/¾øâVgÂù"sæÌ©±ìÍ7ߌˆÿíýy*[ã¤gõ©ôꫯfu†–Ïû\¾¨ö¢¢¢˜={öv·eË–qöÙgÇš5kâ÷¿ÿ}Lš4©Ö.a•Ýž¾ùÍoV[¾yóæX·n]Ï÷þûïǬY³ª¾?âˆ#â–[n‰‡~8""¦L™²W@}iÓ¦MŒ5*’$‰›nºi§œcéÒ¥ñéó;=NÊŽv3¦i˜Ôƒ¡C‡Æ­·ÞZmÙ¦M›â¶Ûn‹¼¼¼9rdµuüqLŸ>=–-[VãX•ɹçžû¹ç¼ì²Ëâ裎áÇW-ëÛ·oì·ß~5¦ÎÍÍï~÷»uº–ûî»/Z¶l?ýéOk,6I’øÑ~ûì³OLœ8±NÇü¬Ñ£GGDÄŸþô§ën¿ýö8ï¼ób¯½öŠˆO» 2$Ö®]O?ýtµm_~ù娰aC­ç¨Kˆ’L6nÜ>úh´iÓ¦Öñ6ÒÎ;ï¼ÈÏÏ?ÿùÏ5Z­^½:Ž;î¸X¾|ù§.¶'ª E*[ýñŒ>}úÄæÍ›ãÔSO¯|å+QTTT£ûÑ'Ÿ|'žxbÌŸ?»ë­ì–síµ×ÆÒ¥K㬳Ϊ±Í¡‡ZU×gýñܦÀäµ×^‹SN9%Þ}÷ÝjË+öÊîkdÏüãØk¯½âá‡Þá=+Ÿ)‹/®Ñú´2@¯Íá‡ÅÅÅUß4h»Þmh¼&õ “ÉÄwÜQ5sÊüùó㬳ΊåË—ÇóÏ?­[·®¶}eÿÛþð‡qß}÷Åš5kbÉ’%qñÅÇ_ÿú×8óÌ3?÷‡öÉ“'Ǽyóªzýl§vZL:5üñ˜={vÜyçqòÉ'W…_¤K—.ñì³ÏƪU«¢_¿~ñÄOÄÊ•+cåÊ•q×]wÅÀã…^ˆÉ“'G»víj=Æç52dHüÓ?ýSLž<9Î>ûìxá…bÅŠ1a„øÅ/~·ß~{µãþË¿üKì¿ÿþñ£ý(f̘~øa¼ôÒKqõÕWÇá‡I’Ô8_å÷ŸWÇ’%Kâž{kׯ’%KâÌ3ÏŒ÷Þ{/nºé¦j3ülíšÚ´i'NŒ$I¢wïÞq×]wÅ»ï¾Ó¦M‹¡C‡FÿþýãœsÎÙêù·¦¶šër=éu ˆœœœxî¹çbõêÕq÷ÝwÇÍ›7œœœ¸û}ûöqüñÇÇ-·ÜÅÅÅñüóÏÇøÃØgŸ}âg?ûYëKëׯ_tíÚ5 cÈ!ѲeËÛüä'?‰L&wÞygLœ81ÞyçxðÁãç?ÿyd2™mºÖM›6ÅÈ‘#cÆŒñÁÄœ9s⪫®ŠfÍšms+(ê_‡⢋.ŠÍ›7WÍ–WWuyÆçååÅùçŸI’ÄE]Ï?ÿ|¬X±"®½öÚª`¾¶çÊ·¾õ­øûßÿo¼ñFÌœ93žy泫QÝΟ¹ ñ7n\Ò¯_¿¤cÇŽIëÖ­“cŽ9&ùÉO~’׺}YYYòÈ#$gœqFÒ­[·¤U«VÉ—¾ô¥äÄOL¦Nú¹ç*--Mòóó“+¯¼²ÖõüqrÉ%—$x`Ò±cÇdèСÉ{ï½·Í×TVV–ÜxãÉ©§žštÐAI›6m’¯|å+Ɉ#’Å‹ר¾S§NI&“Irrr’L&“d2™äüóÏßêñ'Mš” 0 éСCrøá‡'W]uU2}úôZ·]½zu2tèÐä ƒJößÿäÔSOM,XœwÞyUç:ì°Ã¶ZǤI“’qãÆU}Ÿ“““|òÉ'Ɉ#’Ã?<Ù{sþýû'O>ùdµó>¼jûÊ㥯©°°02dHr衇&;vLÎ>ûìäž{îIJKKëô9;¶Z]•ž={v’$IÒ¿ÿZ×Íœ9³Fm ¨vìÉ“'''tR’ŸŸŸœwÞyÉ«¯¾Zãs=ÿüó“Ã;,ÉËËK¾÷½ï%·ß~{òÎ;ïTÛ®¶úÆÿ¹×uÓM7%999Éܹs·ºÍßþö·äšk®Iºté’ì»ï¾É€’gŸ}6éܹsµóÌš5«F 999I’|úïtÒ¤IÉÀ“Î;'­ZµJŽ=öØäúë¯O.\X§¿¶ßgŸ»é{ôg½ýöÛInnnÕý|äÈ‘µïóžo[{&&I’lܸ1yòÉ'“¡C‡&yyyI—.]’ .¸ y衇ª=CÞzë­ªs-_¾<¹âŠ+’ƒ>89ú裓›o¾y'|BìÎ2Ib€ÏÒ% E`"0H˜¤LRšg»—-[¶Ä'Ÿ|’í2š´½öÚ+š5k–í2vKÞgaÛ5Ö{ŽÀ„zõÉ'ŸÄ‚ ²]@“Ö§OŸhÛ¶m¶ËØ-yŸ…m×Xï9™$I’lAã±eË–(..ÎvMV›6mío{wï³°mó=G êU³fÍ¢U«VÙ. ÉjŒ¿åÝ•¼Ï¶iÌ÷ƒ¾¤LR&49ÅÅÅQPP o*[%0¡É)))‰‚‚‚())Év)4P€ @ŠÀ E`"0H˜¤Lhrrss£{÷î‘›››íRh 2I’$Ù.‚Æ¥´´4Û%4YyyyÙ.a·ç}ê®1ßs´0H˜¤LR&)€ @ŠÀ E`B“SXX}ûöÂÂÂl—@%0¡É)//%K–Dyyy¶K ˜¤LR&)€ @ŠÀ E`B““ŸŸ£GŽüüül—@•I’$Év4.¥¥¥Ù. ÉÊËËËv »=ï³Pwùž£… @ŠÀ E`"0H˜¤LR&49eeeQXXeeeÙ.€J`B“STTýúõ‹¢¢¢l—@%0H˜¤LR&)€ @ŠÀ ¥y¶ €]­[·n1oÞ¼èÔ©S¶K Ò„&§eË–Ñ£GhÙ²e¶KFå†n‹£>'n¸á¶l—;L`À;é¤aqï½¹±té³qï½¹qòÉò]ìL’$I¶‹ q)--Ív ì€õë#–.m–í2…#ZÅÚµ?—þä“õQVÑú3K?Ž–-#öÚ«U–ªjœÚ·¯ˆ‰×g» `;tíº%Zí¢[b^^Þ®9Q#æ}ê®1ßs&»¡gžy&f̘›6mŠ;î¸c»Ž±bÅŠX´hQ 8°ž«ó€Ùݽúj³0 m¶Ë€FeæÌ£W¯-»ä\ù‡—]Åû,Ô]c¾çôu74pàÀhÕªU<úè£Û}Œ+VÄÓO?½Svo]»n‰™3?Ìv‚&Z˜Ô7-L`÷Õµë® K¨? šV­b—ý¬±{ñŲ]Â.sòÉÃbéÒãbݺѱ÷Þѵë 1cÆ”ˆX—íÒ`»47nܸlÁ¶«ìRÓ¡C‡˜ÛTÛ† vÒU Õ°agÄÇÏ÷Þ»1Î9çÀ¸ûî_~îö7Üp[\}õ¿GIÉ;qüñGï¢*š3î¸}Ÿõœ£)iÌ÷c˜ì¦fÍš÷ÜsO 80† ï¾ûnÄ7¿ùÍo¿ývüó?ÿsÕþ>úhµ1P6lØ—^ziÜzë­Ñºuë(**Š‚‚‚¸ûî»#'§îÝ zŸÏâââ˜<öÛo¿l—MÎI' ‹eËjk@}hÌã ì*;ò>ë9GSÓ˜ï9ºäìÆ6mÚ'žxb4oÞ<8à€øÚ×¾ùË_bðàÁñÒK/ÅÅ_-Z´ˆˆˆÄ5×\6l¨Z––››Ѻõ§ãtëÖ-:t诽öZôêÕk—]×ÎVRRñío[`R ³äÔ¦2~ɶút¼“©Q9Þɺu£ã•W.‹4ÞI}2Ö 4<»r–²ç†n« K">}Î-]qà ·Ç˜1£²\°­&»±¶mÛÆ¾ûî[õý¡‡Ó§OeË–ÅÚµkãw¿û]üþ÷¿¯ZŸ——EEEqä‘GÖz¼L&«V­Š'žx"²Þ) IDATV­ZÍ›75kÖIJeËU`Âç[ºÔ,9ìL­k]VVÿ3p,õá½÷rü Ì®œ%‡ì™6mn¬[÷lµeëÖŽiÓN˜ÀnH`²û¢ÞT\pArÈ!u>ÞÛo¿ñÓŸþ4.¾øâˆˆ?~üž‡ÆÅ,9õC “Ú™Qg×гä4 ƒ÷Þ[PÕÂ$"bï½ bРc³X°½&»±>ú(JJJ"???""Þ|óÍèÖ­[téÒ%:tèEEEÕ“)S¦ÄÀ£C‡ÕÆ$©¨¨ˆ$Iâ…^ˆ6mÚÄQGUµnýz/ÜMYrêGSš!g[™Q€Æj̘ËcΜa±tiT{Îc Øùõçn,'''ž{î¹Ø¼ys¬^½:þò—¿Ä׿þõˆˆèÛ·oÌ™3'Þy爈xå•WbõêÕÑ¡C‡ˆˆèÔ©S|ðÁ‘$I<þøã±`Á‚8âˆ#â£>Š¥K—FDÄòåËcÅŠZ˜õjÆŒ)qá…£k×Sâ 7€FÅs³ä솞yæ™xî¹çbÓ¦MqÆgÄ /¼«W¯Ž£Ž:*Î?ÿüÈÉɉM›6ÅÃ? ,ˆŽ;F§NâÔSO­6Eð„ ¢¸¸8òòòâÒK/ÜÜÜxâ‰'bÞ¼yÑ¢E‹Øwß}cåÊ•QVV§œrJ 4¨Nõ5ôYr^}õÕ0`@Ìœ9ÓØ,@£Ó˜g¬ØUúû,4$ùž#0¡Þ5ôŒÀhÌó/»JCŸ…†¤1ßstÉ¡ÉÉÍÍîÝ»Gnnn¶K Ò„z'‘ÈžÆüÛÞ]Åû,Ô]c¾çha"0H˜¤LR&)€ @ŠÀ„&§°°0úöí………Ù.€J`B“S^^K–,‰òòòl—@%0H˜¤LR&)€ @ŠÀ„&'???FùùùÙ.€*“$I’í"h\JKK³]@“•———ív{Þg¡îó=G € @ŠÀ E`"0H˜¤LhrÊÊÊ¢°°0ÊÊʲ] ”À„&§¨¨(úõëEEEÙ.€J`"0H˜¤LR&)€ @Jól»Z·nÝbÞ¼yÑ©S§l—@%0¡ÉiÙ²eôèÑ#ÛeЀé’"0H˜¤LR&)€ MNqqqDqqq¶K ˜Ðä”””DAAA”””d»( @ŠÀ E`"0H˜¤LR&49¹¹¹Ñ½{÷ÈÍÍÍv)4P™$I’lAãRZZší𬼼¼l—°Ûó> uטï9Z˜¤LR&)€ @ŠÀ E`"0¡É),,Œ¾}ûFaaa¶K ˜Ðä”——Ç’%K¢¼¼<Û¥Ð@ LR&)€ @ŠÀ E`"0¡ÉÉÏÏÑ£GG~~~¶K Ê$I’d»—ÒÒÒl—Ðdåååe»„Ýž÷Y¨»Æ|ÏÑ E`"0H˜¤LR&)šœ²²²(,,Œ²²²l—@%0¡É)**Š~ýúEQQQ¶K ˜¤LR&)€ @ŠÀ E`Ò<ÛÀ®Ö­[·˜7o^têÔ)Û¥Ð@ LhrZ¶l=zôÈv4`ºä¤LR&)€ @ŠÀ E`B“S\\Q\\œíRh &49%%%QPP%%%Ù.€J`"0H˜¤LR&49÷Ü3µÚ M`B“rÒIÃâ©§öŒˆˆ§žÚ3N>yX–+ !˜ÐdÜpÃm±lÙqññÇ—DDÏøøãK¢°ð¬;ö×Ù. €F`RÞxã˜5kVµe¿üå/ãüóÏG}t‡Ž=kÖ¬X´hÑ#"bܸqqÙe—Åøñããoû[µuýë_ã’K.©µÖ)S¦Äøñãã?øAkÜÝL›67Ö­=#âø449/ž|òY® €†F`R-Z³gÏ®¶ìç?ÿytîÜ92™Ì»¾“L& ˆ±cÇÆ‘GYµü¾ûî‹ÿú¯ÿŠ-[¶ÔZë°aÃbìØ±Ñ®]»¾–l4è˜Ø{ï‚jËZ·ž§vP–* ¡˜4p™L&’$ÙiÇ?âˆ#â'?ùIì¹çž;í Ř1—G×®/T…&{ï]=z<ãÇ_’åÊhhšg»€ÝÝþð‡˜5kV¬_¿>Æ×\sMì±Ç±eË–¸ûî»cùòå±ÿþûÇYgp@Õþ+W®Œûï¿?Ö¯_ûï¿ 0 Ž<òÈÈd2qûí·ÇŠ+âÝwßE‹Å]tQ¬X±"~øáX»vm´nÝ:Ž8âˆøÖ·¾{ï½÷6×ß§OŸúù v3fL‰oû¼øïÿ>"ºwÿrLŸ>%Û%ÐÈÜpÃm1mÚÜ4è˜3æòl—l'-LvÐw¿ûÝ8á„¢sçÎ1vìØ;vlUX’$IÌ™3'N9唸ñÆc=öˆ§žzªjß-[¶Äøñã£ÿþQPPçž{nÜwß}1wî܈ˆ5jTtîܹª+ÍE]………Ñ®]»¸ùæ›ãÚk¯>ø ~÷»ßíú‹ß tÒ°X²¤_lÚôZ,YÒÏ,9Ô«“N÷Þ›K—>÷Þ›ë}vc“ìÀŒƒ>82™LôèÑ#/^\µî7ÞˆfÍšÅñÇíÛ·¯}ík±páÂÏ=æ1ÇLjˆœœœøæ7¿/½ôÒλˆF¢r–œO~X·n´Yr¨7µ½o.]z\ÜpÃíY® غäìD™L&9äªï;vì%%%Uß¿ôÒK±eË–¸þúë«–mذ!***>÷¸Íš5‹9sæÄ«¯¾ëׯ͛7Giii¼ÿþûÑ¡C‡ú¿FâÓYrž­¶ìÓYr.‹ÿéMÛ­¶÷ÍuëFÇ´i§Ä˜1£²T°½&;Ye÷œˆ¨1ËLNNNäååÅØ±c·é˜O=õT¼üòË1f̘èСC¬Y³&FµS‡m  :&î½· *ñ0Kõ§¶÷ͽ÷.ˆAƒŽÍbUÀöÒ%§|v&›Í›7a ‘JG}tüãÿˆ 6T-{÷Ýwã7¿ùMÕ÷999UÇÞ¸qcÕ¸(½{÷®jM²~ýúúº”F­r–œÖ­‡GëÖ?1Kõ¦¶Y»v}AëØM LêAçΣ´´4""îºë®X±bED|:èëçµúèÙ³g´iÓ&ž|òÉØ¸qclÚ´)yä‘8ôÐC«¶éÔ©SÕ±¯½öÚH’$¾ò•¯Äßþö·Ø¸qcTTTÄÌ™3«Î·#šB •3¦ÄàÁe±(.‹3Ì’@ý™1cJ\xáÆèÚõ”¸ðÂÞ7a7Ölܸqã²]Äî®]»v±téÒ˜1cF´nÝ:N>ùäøÿøX²dI¬^½:***bóæÍ1yòäX·n],Z´(¾öµ¯E‹-âë_ÿzü×ýW<õÔSñúë¯Ça‡ ¨:vÛ¶mcþüù1{öìèׯ_tëÖ->øà())‰|0,X;vŒ%K–ÄÒ¥K£K—.µN/<{öìØwß}£gÏžÕ–?òÈ#ñðÃGqqq¬^½:æÏŸ;wŽöíÛWÛî™gž‰Ã?<:wîü…ŸÇg[Ì4D¸OLž<9n½õæØo¿ý²]@½jÙ²e¶KØííèûìñÇ]tVüQõT4\ùž“IšB³büøñѳgÏøþ÷¿¿]û_vÙe1dÈèß¿ÿn[Ù"¦¡zõÕWcÀ€1sæÌèÕ«W¶Ë¨WyyyÙ.a·×Ðßg¡!iÌ÷ƒ¾6íÚµ‹ Ä¢E‹âôÓO#<²NûM™2%–/_Í›7-Zìä* a˜4W\qÅví7lذz®>ƒ¾¤LR&49ùùù1zôèÈÏÏÏv)4PfÉ¡ÞU {󌻊÷Y¨»Æ|ÏÑ E`"0H˜¤LR&)šœ²²²(,,Œ²²²l—@%0¡É)**Š~ýúEQQQ¶K ˜¤LR&)€ @ŠÀ E`Ò<ÛÀ®Ö­[·˜7o^têÔ)Û¥Ð@ LhrZ¶l=zôÈv4`ºä¤LR&)€ @ŠÀ E`B“S\\Q\\œíRh &49%%%QPP%%%Ù.€J`"0H˜¤LR&)€ MNnnntïÞ=rss³] T&I’$ÛEи”––f»€&+///Û%ìö¼ÏBÝ5æ{Ž&)€ @ŠÀ E`"0H˜¤Lhr £oß¾QXX˜íRh &49ååå±dÉ’(//Ïv)4P€ @ŠÀ E`"0H˜¤LhròóócôèÑ‘ŸŸŸíRh 2I’$Ù.‚Æ¥´´4Û%4YyyyÙ.a·ç}ê®1ßs´0H˜¤LR&)€ @ŠÀ„&§¬¬, £¬¬,Û¥Ð@ LhrŠŠŠ¢_¿~QTT”íRh &)€ @ŠÀ E`"0H˜¤4Ïv°«uëÖ-æÍ›:uÊv)4Pšœ–-[F=²] ˜.9)€ @ŠÀ E`"0H˜ÐäGAAAg»( MNIIIDIII¶K ˜¤LR&)€ @ŠÀ E`B““››Ý»wÜÜÜl—@•I’$Év4.¥¥¥Ù. ÉÊËËËv »=ï³Pwùž£… @ŠÀ E`"0H˜¤LR&)šœÂÂÂèÛ·of»( MNyyy,Y²$ÊË˳] ”À E`B“và ·ÅÑGŸ7Üp[¶K ˜Ðd]zéµqï½¹±té³qï½¹qòÉò] DólÀ®3nܸX³fMì»ï¾qúé§G‡âøCE‹-¢sçÎqÜqÇE=ªö™2eJ,_¾<ŠŠŠâ¢‹.ŠN8!{PO6løô¿‹ßÇFDĺu£ã•W.‹.]ÊâñÇs«mßµë–hÕj @V LšL& ˆ³Î:+""~ýë_ǺuëâÆoŒÜÜܘ3gN\ýõqçwFÛ¶m#"bذO[]\vÙe‘Éd²V{}Z¹²²aU:ik×¶Žª/9óÃèÕkË®( €B—œ&lß}÷ÁƒGnî§-*Ž;î¸hÕªUüéOÊre;×ÁWüÏŸÖ§Ö|íÛ¯‰™3?¬öÕµ«° ©˜4agœqFµî7™L&Zµj~øa«Úù:uÊÑ£GÇ‘GŽ‹ÜÜë"""7÷ºèÝûœX¶¬yôêµ¥Ú—î8ì(“ ÀîG`B•?ü0Š‹‹£OŸ>Ù.e§Úo¿ýbôèѱÇ-"â¯1ðþ õ邏†™lvCÆ0¡Êc=ýû÷ž={f»”jýúˆ#Ük×NˆÖQ^ñÊ+ô€zuà ·Å²eÇźu£#âÓÉ–.¸á†Ûc̘QY®øËUí\­ZE,[Ö'öÞ» ">}hô€ú6fÌåѵë ÕÞ;»v}AwØ Lš°’’’¸é¦›bРAññÇÇ›o¾o¾ùfÌ;7Û¥í3fL‰ /Ü]»ž^¸1f̘’í’h„¼wÂîI—œ&졇Š÷ß?&L˜Pmycôõ³ÆŒ%Ý`§óÞ »I“$IÕŸ¯ºêª,V’=eeeñÖ[oE§N¢eË–Ù.€H`Ò„´k×.,X‹-ŠÓO?=Ž<òÈ/ÜgÊ”)±|ùòhÞ¼y´hÑbT¹óÅ€bæÌ™Ñ«W¯l—@$0iB®¸âŠmÞgذa;¡hØ ú "0H˜¤LR&)€Ó ÓätëÖ-æÍ›:uÊv)4Pšœ–-[F=²] ˜.9)€ @ŠÀ E`"0H˜ÐäGAAAg»( MNIIIDIII¶K ˜¤LR&)€ @ŠÀ E`B““››Ý»wÜÜÜl—@•I’$Év4.¥¥¥Ù. ÉÊËËËv »=ï³Pwùž£… @ŠÀ E`"0H˜¤LR&)šœÂÂÂèÛ·of»( MNyyy,Y²$ÊË˳] ”À E`"0H˜¤LR&)šœüüü=ztäççg»¨L’$I¶‹ q)--Ív MV^^^¶KØíyŸ…ºkÌ÷-LR&)€ @ŠÀ E`"0¡É)++‹ÂÂÂ(++Ëv)4Pšœ¢¢¢èׯ_e»( @ŠÀ E`üÿöî>Ȫú°øwyqY@`UX“µVâûK”€/H­$þAGžÔt†Ö4R«4Ó:O"“æ¦ÔtÛi;ÖÔIHÍ0qâ˜8f°Œ¢£‚¦­IC—]!j+ÝÕè "Ëá>X·î8w÷~>3ÎxÏÞ{÷{÷ÌùíïþÎ9(L & €… @Á°²ÀÑÖÒÒ’µkצ¹¹¹ì(T)… 5§¡¡!S¦L);UÌ)9 €… @ @aP 0(P˜Ps:;;ÓÚÚšÎÎβ£P¥&Ôœ®®®´¶¶¦«««ì(T)… @ @aP 0(P˜(L &ÔœúúúLž<9õõõeG JÕU*•JÙ!\º»»ËŽP³ËŽ0à™ÏÂÁÌcŽ& €… @ @aP 0(P˜(L¨9mmm™6mZÚÚÚÊŽ@•R˜Psz{{³iÓ¦ôöö–€*¥0(P˜(L & €… @„šÓÔÔ”… ¦©©©ì(T©ºJ¥R);ƒKwwwÙjVcccÙ<óY8xƒy̱ @aP 0(P˜(L & jNOOOÚÚÚÒÓÓsH¯[ºôöLzm–.½ý% Z(L¨9ííí™>}zÚÛÛú5W]5/Ë–Õ§£ãá,[VŸY³æÁ„”mXÙ ZìÜ™tt í·í†Fæ?ÿsWzz¾Ÿdt’dÛ¶…yöÙ™81ùØÇFä®»v&I&MÚ“‘#vjŽ…I Y¼xq^}õÕL˜0!sæÌÉI'”ýèGÙ´iSFŒ‘cŽ9&gžyfæÌ™“ººº$Éòå˳eË–´··gþüù¹âŠ+ÊýGPGÇÐÌœ9f?_½ßm==I{{ú^³zõöœ{îž#š€£CaRCêêê2sæÌÌ;7I²fÍšlÞ¼9·Ýv[†žmÛ¶åÏþìÏ2a„\zé¥I’yóÞ9õdÁ‚}%Ê`5iÒž¬^½½ß¶ÿ]a’ô/Nv¤¡aß&  “væ™g¦¥¥%ÇO’Œ;6§žzj~þóŸ÷&µdäÈì³Bä™gÞL’Ìš5/—eÛ¶…;¶5“&=™U«–'ùu I8Ò\ôµ†7.ãÇO’ìÞ½;Ï>ûl^|ñÅ\uÕU%'«>«V-ÏäÉk3|øÙ™[v¤RìÜ™<÷ÜÐ}þ;ýô·³~ý÷³mÛÂ$ïÞ%çû™8qx>õ©cûž·sgÉ€#jéÒÛóüó—õ›vt\–¥Kï(9p$¸† I’áÇçòË/Ϻuë²bÅŠ|ò“Ÿ,;ÒÓÒÒ’µkצ¹¹¹ßö÷¿KÎþ¸K@­Y±bM¶m{¸ß¶mÛfÅŠOgÑ¢?))p¤(LjØž={2tèÐ~ÛÎ>ûì|ç;ßÉîÝ»sÌ1Ç””ìÈjhhÈ”)SöÙ¾¿»ä$Ég?Û›×_oˆ»äÔ¶Ù³/ɲe­}+L’dìØÖÌž]{7L€Z 0©aÿøÿ˜©S§ö[Mò /ä´ÓN´eÉÙß]r’äùç‡eÖ¬kÝ% Æ-Zôå<ñļtt¤ß¼pÑ"7€ÁÈ5LjX]]]yä‘ìØ±#I²yóæ¬[·.W\qE¹ÁªÐªUËó¥/íΤIŸÎ—¾´Û]rj”y!ÔŽºJ¥R);GÇ’%Kræ™gfîܹI’ŽŽŽ<øàƒÙ²eKÆŒ“ñãÇ碋.ÊÅ_œáÇ÷{í‚ òùÏ>3fÌ8à÷éîî>"ù8°ÆÆÆ²# xæ³pðó˜ã”œóÞ~lÒ¤I¹ùæ›KLÕIaRCÆ—uëÖeãÆ™3gNÎ9眾fùòåÙ²eK† –#F…”P>§äpØYÂPžÁ¼<þh1Ÿ…ƒ7˜Ç}¥ætvv¦µµ5eG J)L¨9]]]immMWWWÙQ¨R €… @ @aP 0(P˜(L¨9õõõ™=íííeG J)L & €… @ @aP 0(Vv8ÚZZZ²víÚ477—€*¥0¡æ444dÊ”)eÇ Š9% @aP 0Ã`éÒÛ3uêµYºôö²£p(Là#ºêªyY¶¬>gÙ²úÌš5¯ìH|D ø–.½=3³mÛÂ$ɶm ÓÑqY–.½£äd|u•J¥RvŽŽÅ‹çÕW_Í„ 2gΜœsÎ9}_{ýõ×sóÍ7gêÔ©¹é¦›ú¶/_¾<[¶lI{{{æÏŸŸ+®¸â€ß§»»ûHįJS§^›ŽŽ‡÷Ù>iÒ§óÓŸ~¿„D@­kll,;€WKóYø¨ó˜c…I ©««ËÌ™3së­·ö+K’äŸþéŸ2dÈÔÕÕõÛ>oÞ¼Üzë­7nÜ>_¨:;;ÓÚÚšÎÎÎü^³g_’1cþ¦ß¶±c[3{ö¥ù½(„<ûì³6lXN=õÔÔ‚£®®®´¶¶¦««ë#¿×¢E_NKËêŒÛšä²dÒ¤'³hÑŸ|ä÷ < “·k×®Ü{ï½¹îºëR©TÍ*’£iժ噅I»÷Þ{3kÖ¬Œ;¶ì(ÖUWÍ˦MÓóë_ÿ<›6Mw—€ç.Š08(LjØ/ùËlÙ²%W]uU’X]ò!¸KïµtéíyþùËÌaP˜Ô¨½{÷æÛßþvþðÿ°o[¥R©‰k˜N+V¬Éöíÿ·ß¶mÛfÅŠ§JJ@™V¬XÓW–¼Ëü¦ae [·nÍŽ;r÷Ýw÷m{ñųuëÖ,Y²$S§NÍg>ó™ò³g_’oûoú•&î’P»fϾ$Ë–µö+MÌa`R˜Ô¨SN9%ÿ÷ßoÛ’%K2a„Üxã%¥x-úržxb^::Þζm ßs—~¨Eÿ;?Œù! pNÉ¡O­œ’S__ŸÉ“'§¾¾þ°¼ßªUËó¥/íΤIŸÎ—¾´Û]rjœù! u•Zø2IÞYAræ™gfîܹý¶oذ!?üáó_ÿõ_>|xšššrýõ×ç7~ã7úž³`Á‚|þóŸÏŒ3ø}º»»{vNcccÙ<óY8xƒyÌqJNÙ_?vÁä‚ .(! T'…I 7n\Ö­[—7fΜ99çœsøšåË—gË–-6lXFŒqR@ùœ’Ãag #@yóòø£Å|Þ`s\ô @aP 0(P˜(L¨9mmm™6mZÚÚÚÊŽ@•R˜Psz{{³iÓ¦ôöö–€*¥0(P˜(L & €… @„šÓÔÔ”… ¦©©©ì(T©ºJ¥R);ƒKwwwÙjVcccÙ<óY8xƒy̱ @aP 0(P˜(L & jNOOOÚÚÚÒÓÓSvª”„šÓÞÞžéÓ§§½½½ì(T)… @ @aP 0(P˜(L &ÃÊG[KKKÖ®]›æææ²£P¥&Ôœ†††L™2¥ìT1§ä(L & €… @ @aBÍéììLkkk:;;ËŽ@•R˜PsºººÒÚÚš®®®²£P¥& €… @ @aP 0(P˜Psêëë3yòäÔ××—€*UW©T*e‡`péîî.;@Íjll,;€g> o09V˜(L & €… @ @aP 0¡æ´µµeÚ´iikk+; UJaBÍéííͦM›ÒÛÛ[vª” @aP 0(P˜(L & jNSSS.\˜¦¦¦²£P¥ê*•J¥ì .ÝÝÝeG¨YeGðÌgáà æ1Ç €… @ @aP 0(P˜(L¨9===ikkKOOOÙQ¨R jN{{{¦OŸžööö²£P¥& €… @ @aP 0(P˜ +;m---Y»vmš››ËŽ@•R˜Ps2eÊ”²cPÅœ’P 0(P˜(L & €… 5§³³3­­­éìì,; UJaBÍéêêJkkkºººÊŽ@•R˜(L & €… @ @aBÍ©¯¯ÏäÉ“S___vªT]¥R©”‚Á¥»»»ì5«±±±ìžù,¼Á<æXaGÀÒ¥·gêÔk³téíeGàCP˜ @[·nÍâÅ‹ó»¿û»Ù¸qãA¿îûßÿ~,X%K–Át\uÕ¼,[VŸŽŽ‡³lY}fÍšWv$Ѱ²pèN>ùä¾ÂäP\{íµ:tè!•,ÁÎIGÇÐ#òÞ7Ü02¯¿~ð½â[oíLOÏ÷“ŒN’lÛ¶0Ï>» '&£F<äïÜq{s×];ùu‡Û¤I{2òÐã X ¼ŽŽ¡™9sLÙ1þÇèýnëéIzzýÝ~õ«!UñÙV¯ÞžsÏÝSv €£FaRÅž~úé¬X±"•J%cÆŒÉÅ_œ3fdذ}wÛ=÷Ü“5kÖd„ 9묳ò³Ÿý,]]]¹òÊ+ó¹Ï}nŸç?ôÐCyæ™g’$sæÌɹçžÛ÷µûî»/Ï<óLFŽ™N8!—_~yÎ?ÿü#÷A?¢I“ödõêíGä½?Ü “¤q²# … @-Q˜T±§Ÿ~:³fÍÊW\‘]»veÉ’%9öØcsñÅïóÜßû½ßËðáÃsÿý÷瓟üd–,Y’çŸ>_ÿú×3qâÄLŸ>½ï¹¿üå/3sæÌ,^¼8?þx¾ýíoçöÛÿ÷â¤>úh–,Y’O<1¯¼òJ¾ò•¯äŽ;îȘ1å¯tØŸ‘#sÄV?<óÌ›‡üšY³æ¥£ã²lÛ¶0C†ü¿45­Ì/~ñH’m‡? UiéÒÛ³bŚ̞}I-úrÙq€ÁE_«Ø¼yórùå—'IFŒ‘K/½4O?ýô¾fÈ!ùô§?$9ýôÓó‰O|"6lè÷œ½{÷æÒK/M’|âŸÈ+¯¼’×_½ïëþçžO<1I2a„œ}öÙù—ù—Ãö¹»U«–§¡á2djöî“;?ç¯5ÄM`p°Â¤ŠíÙ³'÷ß~ñ‹_$IÞxã¼ýöÛøšSO=µß);§vZV®\Ùï9ÍÍÍ2ä®lüøñI’®®®wÜqI’×^{-+W®ÌæÍ›3lذ¼üòË=zt~û·û°}¶ÃáÃ^ìõ…Ú²dÉäÖ[¿›SOrP¯9”SsÞ9-guþ÷¯ùH~MªçÔœw¹,Àþ-]z{žþÕÆÉ;7èèH–.½#‹ýIÉé€C¡0©bwÜqGšššrË-·¤¡¡!?þxî»ï¾|ÍÞ½{÷ÙVWW×ïñ{ •w‹“J¥’$Ù±cGn»í¶|á _ÈïÿþïgÈ!¹óÎ;û¾^M>üÅ^‡%iË¿8,É‘8Íèð^ø5©ž‹¿¾ËE`öoÅŠ5Ù¶íá~Û¶m[˜+>­0FaR¥:;;ÓÑÑ‘Ï~ö³ihhH’ìÜyà/½ôRvïÞcŽ9&I²yóæœwÞyý}úÓŸf÷îݹòÊ+ûÊ”;wfÔ¨QâSYöb¯íí;rà É]wíHKËÁ½þÐW˜$‡ë¯Iu®0`_³g_’eËZûV˜$ÉØ±­™=ûÒS†Â¤Jxâ‰?~|6lØóÎ;/»wïΚ5køºaÆåÑGÍÕW_Í›7§­­-×_ýAß³Ï>;I²~ýúLŸ>=¯½öZž{î¹L›6íC–#åÃ_ìõU8--{úõ‡zñ×÷^øuìØÖLšôdV­Z~Ü-úržxb^::Òo.¸hÑò²£‡hèâÅ‹—‚ýûøÇ?žçž{.÷ßž}öÙœtÒIiooÏ¿ÿû¿ç'?ùI^}õÕ¼øâ‹3fLN9å”lܸ1o¿ývN9å”ÜsÏ=YµjUfÍšÕwØx =öX^}õÕ¼üòË9묳òñùÕ¯~•_|1'žxbN;í´Œ7.<òH~üã§­­-cÇŽM{{{Þxã~·~?»ví:Ò?𤫫+ßýîwsÝu×õ]Üöp›7ïÿdÇŽ§ó«_Ý–k¯˜o}ë/È÷(zwu2ÞGÏš RKó˜SW©Æ‹Sð¡Üwß}Ù¸qcn½õÖRstww—úýä¹çžËÌ™3³zõêƒ*€’ÆÆÆ²# xÕ>Ÿ…j2˜Ç·(P˜ ÷ÜsOüñ¼ð ùë¿þë²ãÀ€æ”»j_ÂØÙÙ™ï~÷»ùƒ?øƒ#v €² æåñGKµÏg¡š æ1GaÂaç @yó?^ŽóY8xƒyÌqJ@ @aP 0(P˜(L &Ôœžžž´µµ¥§§§ì(T)… 5§½½=Ó§OO{{{ÙQ¨R €… @ @aP 0(P˜(L †•޶–––¬]»6ÍÍÍeG J)L¨9 ™2eJÙ1¨bNÉ(P˜(L & €… @„šÓÙÙ™ÖÖÖtvv–€*¥0¡ætuu¥µµ5]]]eG J)L & €… @ @aP 0¡æÔ××gòäÉ©¯¯/; Uª®R©TÊÁàÒÝÝ]v€šÕØØXv„Ï|Þ`s¬0(P˜(L & €… @ @aBÍikkË´iÓÒÖÖVvª”„šÓÛÛ›M›6¥···ì(T)… @ @aP 0(P˜ +;ƒËž={²sçβc| J¥’ÓO?=•J¥ê³ª¡C‡fÔ¨Q:thÙQ¤0Ÿ…j2˜ÇœºJ¥R);ƒÇöíÛ³nݺ²cÔ´‹.º(cÆŒ);Æ€d> ‡n°Ž9 «={öä­·Þ*;@M¬í=ÌgáÐ Ö1GaPࢯ €… @ @aP0¬ìp4ýìg?ËøÃìÝ»7£FÊõ×_ŸN8¡ìXüûî»/ë֭˨Q£ú¶92_ýêWKLE’¼ýöÛ¹÷Þ{óàƒæöÛoßç¸yê©§òðÃ'IŽ?þøüÑýQFŽYFÔšõAûèþá²uëÖsÌ1}ÛN>ùäÌŸ?¿Œ¨5míÚµyôÑGóÖ[oeĈ9ÿüó3cÆŒ466ö=ÇñT®í#Çr ß™ìß¡üÜüñüèG?ʸqãúmÿÚ×¾ÖïØ¬uó;‡¦0¡f¼ð ù»¿û»,^¼8ÍÍÍyä‘G²xñâüíßþ­µŠ\wÝu9ãŒ3ÊŽÁ{¼òÊ+ùÆ7¾‘“N:){÷îÝçë6lÈÝwß¿ú«¿ÊqÇ—{î¹'·Ýv[–.]ZBÚÚt }TWW—›o¾Ù¤½ |ãßÈ7Þ˜3f¤§§'wÜqGžþù|å+_IâxªÚGŽ'>ÈÆcöïÃüÜ®¹æšÌ˜1ã'Ø4žq`NÉ¡f¬\¹2gœqFš››“$W^yeÞzë­<óÌ3%'ƒêÖÛÛ›/ùË™9sæ~¿¾bÅŠ\vÙe9î¸ã’$³gÏNGGGþã?þãhƬiÚGIR©TŽb"ÞϹçžÛ7ÁohhÈoýÖoeýúõyýõד8žªÁöQâxâýÌx̾>ÌÏÍqx`3ž½×‚ ²qãÆ£±ê)L¨ëׯÏäÉ“û2$“&MÊúõëKLÕïcûXšššö;1ÙµkW6nܘ–––¾mÇ{lN>ùdÇÖQôAûˆêòµ¯}­ßãÑ£GgïÞ½yóÍ7OUâƒöˆñøÃñs;2ŒgSr¨ ¿þõ¯³cÇŽ{ì±ý¶{ì±yå•WJJÅþ¬^½:÷Ýw_†žO}êSùÔ§>åÜý*öî_(öwl½ß_/(Ç<—_~9£FÊôéÓsÑE9± lÚ´)ãÇOsss¶nÝšÄñTmÞ»Þåx‚òmذ!O<ñDêêêrá…fúôéû\Ó„þö7žñÁ&Ô„w[Ô#FôÛ>bÄ k9á„2jÔ¨ÜxãÙ¶m[~ðƒäÞ{ïÍ7¿ùÍ bA\5z¿c«¾¾>;vì(#ûqÒI'eüøñ™?~:;;ó½ï}/>ø`¾þõ¯—­¦íر#«V­Êÿñ'qJOP Æ—“N:)ŸûÜçÒÛÛ›•+WfÁ‚¹ë®»2zôè²ãU¥ýg˜Â„šðî_ëvíÚÕoû®]»öùKåyïy«ù¾Ç{,ÿú¯ÿš /¼°Äd¼Ÿ:¶&L˜PF$öcΜ9}ÿâ‰'fîܹ¹å–[òÒK/åãÿx‰ÉjÛ]wÝ•+®¸"guVÇS5*î£ÄñÕà¼óÎËyç—$6lXæÎ›‡z(O=õT>ó™Ï”œ®:ío<{àòÜsÏõ=~ã7r÷Ýw÷»cåŸþéŸÖôÊ… 5aøðá9öØc÷YM²}ûö¾ ëQ}F‰'fýúõ “*õîñS<¶Þ|óÍL™2¥ŒH„æææŒ1"ëׯ÷¼’|ï{ßËèÑ£3wîܾmŽ§ê²¿}´?Ž'(_]]]ZZZ²~ýz…É~¼ßxvÍ5×äšk®é{¼`Áw¬,°Æšqá…fÓ¦M}÷îÝ›çŸÞ?īȷ¾õ­¼ýöÛ}{zz²uëÖ~M8ÕeĈ9ãŒ3ú[o¾ùfþû¿ÿÛ±UEî¼óÎ~_~ùåìÚµ+gŸ}vI‰jÛ<×^{-7ÜpC’dË–-Ù²e‹ã©Š¼ß>JOP î¹çž¼ñÆ}+•J¶lÙbθ4žq` jÆÕW_7æÅ_L’<öØc=zt¦M›Vr2Þõoÿöoyì±Ç’$»wïÎ?ÿó?gĈ¹øâ‹KNÆ{¯`ÿ;¿ó;Y³fMßE)|ðÁ´´´ø‹x‰Šûè'?ùI6lØ$Ù¹sgV®\™‰'æôÓO/#^M[µjUž|òÉ\}õÕÙ¼ys6oÞœõë×祗^JâxªÚGŽ'…»¾|8ÅŸÛ·¾õ­,[¶¬ïqGGGV®\™½{÷fïÞ½Y½zu¶oßžË/¿ühG­jÏ8°ºŠ£˜òóŸÿ> stream x+TT(TÐH-JN-()MÌQ(Ê XY(¡%ˆ0PHÎUÐ÷Ì5TpÉ*ˆ~ Ê endstream endobj 5 0 obj 54 endobj 2 0 obj << /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 828 90] >> endobj 6 0 obj << /ProcSet [ /PDF /ImageB /ImageC /ImageI ] /XObject << /Im1 7 0 R >> >> endobj 7 0 obj << /Length 8 0 R /Type /XObject /Subtype /Image /Width 828 /Height 90 /Interpolate true /ColorSpace 9 0 R /SMask 10 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream xí}=¯ëJ–Ýù Îý˜ø0tÄ?ÀX±B+2 8QdNäHN@†ayÐrÏ1ó„é‘=&z îQ_Cw>€`fÀ@^kY,VQGÒ9çê|¸ˆ‹{$ªXµ×Ú»vmV¹Ïgx<žÏ€gÀ3àð x<žÏ€gÀ3àð x<žÏ€gÀ3àð x<žÏ€gÀ3àð x<žÏ€gÀ3àð x<žÏ€gÀ3àð x<žÏ€gÀ3àð x<žÏ€gÀ3àð x<žÏ€gÀ3àð x<žÏ€gÀ3àð x<žÏ€gÀ3àð x<žÏ€gÀ3àð x<žÏ€gÀ3àð x<žÏ€gÀ3àð x<žÏ€gÀ3àð x<žÏ€gÀ3àð x<žÏ€gàÿ#þ·?<žÏ€gÀ3àð x^ÁÀcGø˜†ÜŠÇõ`Â_Ùœ××+ |ðå^_&ü•Í}U}–¯ Íãz¥Í?øò‡éëa }U=®7aÀÛá›Ðø°J¼¾Fõ›4ôUõr¾*4ëM,ÿa•…ÓÆï¿¾³†|FÛßO4.ÝönJXó´ñ=å>Â÷`ÚŽ^ºèþàâ:mÆÀ1ž/Óîós‘OOÑp4"|zŠ·™?(6×3ú:¬†@5š-–sb,ö-*ûh4ަ‡Fám™~êÁ…~6N~„åa m‡q N¢ÙM¤s|£( ƒhÁà½Z‚`8ŽŸ‚…ðRîgàÏ¢¨ØÕ‰ît X;§k¸ ¹H×ñ:¸e:¤0f‡æ¨´Lçü(ÀF‹ô‡ârD¯6cx’ f׊¶&Är_Ó…Ñpùãœ#Ú宾œ².®rÆi>QŽöïÚiÛ7@s;BΞ b‡ùA#]+áË>]ÇUîáñƒ CmâU>Ê®ã:«¡x2vøxWœ‹ýß)þhÛë÷2²ßàªp½A+¨B7Tì§OÁ¬î—ù6x åtª²´üª>áþRuøÉ”Ï(Y fKÚ_ÔMåæå/ø¬qék÷t@OÁx«Îdê<…³ÚµBV*±¿Wœ®ò>8¸ªõài¸®ãë-ƶÑö\î§pWk A2bñµ¥ÃwýÙ&\çËú:ÀS WGU_¾E€·³Bì&[ËÒŸ¨ôKŒ‹ ±h0a@Õ9n•Äé/F-»I@íŸÏÅn ;AÛQ8Ù›óI¡íÃ,ñÆ)E—X:3ÍtOSrÔwˆÍ¯á*fÁÓd§]«#¶sâ™Þ%·“cÖUòfduª² Ð .ÕJë ÈH£4ð(ÑA¬˜ãÛx€›,´–®8]ƒc0OàrËú†ýoŽ%nêq+£ÐÍ)]õ?8¸ªÕè:“Ø£ÊöÛ=¸dÌV‡ÜÐM‚9vÚäÂÞÑ”ƒë|I_çX†F7ÎVóåQÇÛ*´Ð_!B™ƒpHÃû7ÿAp¥ƒÑx÷Šq£yw€ E]\nÌÖ•„–)î—F⯶ãh¼ÍºýŸ˜‡^:O¹CwCÿ†ál“l7É¡^cÈ'è¼Õ9[ ‡Ë,gЄ¾¦øV̶WAf'f«®á¢³ĔdLñIŸÏk·ŸƒHõû§ñJž"ÔŽ`˜d•«ˆt5Qnµ Æ|7â9€mwu·òqóÝH:?}_4Üe»8ªgföSÄhmøP9ˆç‰ˆe Éí{}võuW™DOƒÍ.Á–wø½€¸í^‡ætÞ„sÑü'ŒKß\¸Õ¿Û™pÕ²–1z2¿|•]ÅõÓÏ3„ªq’¢W%*jø~u¶‹ûHúú1²h ®’„ã ¬} 8dÛápk.+5Ìp>œò2ÛNGs:«ã«Tˆè¢ÇÛâ`p‚KTó¸ÍépéQ3× ƒ Àûã`¼ŽKi„£Rm–ŸBe×qåܶ4“…#­.©X{™ª÷^tpý(AtCrs=Üì±Ów·ÛËÎÌ긢(pJ-Úán…÷Î4”ò”Ô¿0ŠÃò"w©ÉЧZa¹=OÜBc‡ 6xÄø°9ej?[uZaDåòË`òºò7ªqéÚ8¿1M‹t œÌãp–"ØÁðû5ì"бgƒ"bBñxJ›¡+ 7e¡êàV,¤«~àW±OTYùq5 ±À(Åœg«è{?ß<Û%}}—ºÝlY'Éޥ¨Ô-#¯ŠT£&ˆxÛÖ°,®Õ3$%‚ÀÁŠÍ5nü õéèël5äJ‚ùÞ­'ƒér 7Û6£•vÙXõˆÌÅv1%¦°¸ñvò„p¨ÙDWäyv@ïà Tމ¢uVl†9»(®`†02CŸæÛ8ˆ´&ö u%ÖFQgÛw°l³f3» FËzJÚý;ºåÆCăé_üÛE·‹ÜÇh‚ða’äíŠÞi©mûÇàBÀ¬×¹Ë%å|Ï(& À[ºfص۰}ý¯£¯pxV1µy½™÷(q´‰êœg¬•°É8n0ÛðáŽpQæd´Ž«zþ°*»WqÜŽÙáÇèða=ÏÆé ~ªj›.Î(ð¸®Õ´nˆ³IÍ„¤j숵“hÁÁóla³±ç¢'ÓŽ˜· °¼¨Ÿ,¨ï¯ñ“SpïŒ6:«Ã8§%ü^¸®çÙ‚õ‰¿VãÑâg‰ÙÞÌ-h\¨_ÍwÂdÌ,T²o'ã”ËX:m¹ éßãnYvhWNb65Þuc¡¦â‡þup¸Ûg\ÒÅqÚÜ$9ùÜA…‡j¶€ÊŽô‡ zgc.ÛØú**îg‹çj£MµãfâqÂØ%h«TÌ&Ó#­qÊ&v.ÐcÆL0v%5æq§Ü׊»¸x/3Æú¤Ä”eõg.õv$A” ‘p,O%æða²Íd^Úì/=§‹á@&$JdZXæ teLz7Â’RÜ‹ û¹áöjrò¹9ž[­£­žùCΨ?Õã åqÛ<ì”Sw‚òè²Ìg.R=φ]w¸`.ól#4ËÃj0\nà¹LÑ`Á–er~eðÞ3v@,Š›”Zò«Ä4`ÌÇ©ASa’8û¾¦÷ƒ@òyØïOE•ŒÕÑð0or®¤Ì;ÿçØáu\y2†ÑÐ,°»#½åaô5Ú7®˜¡:BA27%õIö³9*ƒÝ‹üØá©ˆù*»®¯l? ‡2Q¡÷ לe q¤c땦'µòej¶Ï@tÎÁõ£ÚÕ Ñ»2újìôå€Á…&>±Íl˜QKÿ§-"ê!µÙþ[ó4hå'8Ï&³š'vXxÀåÔjͧ®0kwÖ•à—$ÿUWÞJðŠO—®£‘çÌE%L\À ¿ÚNeŒ1:n›í5qLQÿÇO˜%u.Qòw<\\Õ)áC6õ¯1EZr4lŽ`4ß~¤Ñ£Ÿ<×e}«Ñú†[óUì(í2Ì´«µîøjö®Tɬ!)žÁÀ*êÙÔ~_x¶—nWLwXsëH‚–äîÙ“uùqtûKÕ#pž4´KyJt7çª(`¬ýúq}ÐlÙÏó`Â{ÔNT¢Ñ®+¨ѽaqq!¨Yrú©>FË=d–eV4 G¦šŸbÀ(¹ŠM»Êwº'θQ䮾®ã:g‹O<ã]ÆÇ<®BijÛ’YÝW¢‰L)|ÈÇ úºŽ ž°QÝb‹q+4b혠Ygìªßõû­¸!?¸ÊnÅ%Þ×wÂÑl_¡~î®·o÷a ½½èÏÖèq=KχûÑëëéäYnÔ—löÖ}±ÆÝ4Ɔ´gë~ÏŸÅUàqUý Â{JyÛ_˜øªÐ<®ûÍü=¯xV_o)ØÃzK¡o¨Ë㺤TÄëë)ãQ¼¾n éùªúÅ_šÇõúÏ ¢žNž“è«ê ˜¿*4ë9ƒþx¿=L_kèÁ{\&ü•Íy}½’À_îõõ`Â_ÙÜWÕhùªÐ<®WÚüƒ/˜¾ÖÐW%Ðãz¼¾ «ÄëëaT¿IC_U_ ç«Bó¸ÞÄòVÉÃô¥ªò4IÛW“> éjHã²êÇ»ø’$IOÎ;"Š /xO-å %wÇ6Ó^qúAþ"; c„Qà|:ì“ÄÈÍWžvø®ëÄ n›#¯k)(±S/"¥¤Ù5ì éXèFïÆ…JËSzhŸÔsp±Dºo3…—ÙB9ÀO ŒS[m–¦FÚ'W©‹ã²SÜ®ón\eF¦ðZÅæ°4‹W?h){.pG_v¬9\59–BñδêImÖ¢Txßã±6°»qMêÎy—»sÙšÐíVxÅdcÓåqO©š¯4€ŽŠ˜}uŒÿ‚¾n³CÔ-æÖy©BÍKÇ«V=-ŒŽ§”ÐøÕÆ%õæ$»n®@ŸÝêäªçB³gjG¡¬¡Óè%}ÕÚ?x.‘|1íIG_üÉ.éø G_õ•›ÎÕã7XïEà}Fr —ÕkX¯:пhDmÿ’Ó¦™áD‡:·YXCÇx¢c‡N£–?t;5j¸ZÇÚ)Ž®ÑÚÞIŠ4Øûèu- > ãÉ-eé´¯ÎK¸iE:žíq_]\Ž)š]¬OUuki]±Ë®{Òƒ”ÕÅ,7{7®pƒóìô þbz]Ǫ…v¸²=^/®«¦ø .-ù›|Ð xëõhëÖÉ÷)}àgó]ÕË,€ŒÕxQŸ¼!pŒðì°ÄúÔû#IpÚàUëÌh…ÿ§(Y¦Ìž ®Œ˜Ið°ä yé®z%{µá»‚Ã_:ÀJñÊJ|Gv.Ö,ïMùÆþ0B’,ä"âˆzšð7uÅŸðíÃÁ@Rfmø¦P)€ŒÚR…÷.\Ä^å+HÚä-²qI‰”%êäVY·%#]þãíôp¼‰¸†d_Í ó™2t²ž.®’Y\ñRd®D”Ä­ó‚㽤/õ }¨‡ÄÈëa’%ro ÙHŽ6Ú—ÈÑUèÙÖ—[§²ä¸Sä8 E Jø?6ºH&WÔ/¸¸S_]êÎÅï’îÐÄø¶ç»dõ N(£”H ‘3¦ë„ÙÑø&q± ËÔ^ÚO15Nãwõu³¢fÜú‰¹5ñ[“£k‡’‡â }a$Yp©i‡§ YŒ쀒òÀÆUW›mP@ñ T‰«óÅ˶¾ðš]«¤ã7l\Õ‰)$Â_"‹/rü†4u8ú®µŒ¤—Ók„9²ÃÈTÞéö•³†™¡¤¥/«ÙXu×p´óӨãíNÍ:/¨ì4ÛÚ¥†ŽÑöy'”ÒØ{èu,m/ZÅ>˜`DR~˜þÊÒiOpA’Ž´"?ÿsšpJÚ¦hu±^X³ai–Ø|#wkhO:Y›ÑÅ7{/.aaN¢ŒR{][õ®B-®çâºÅ{»˜îmÿ× 13`3²ë7Ê¢-‰Ùô-»ùKŸ íïødhPgíïçêm_®«q™B m½z<óìH*õëÁ“Ä«òÚùÑ/ÏD:FÉt/y·¿ ?ÝÓ˜ãP™À®N¿"²!£¤èBvsÁó–(`<£$ß#!D¼Ä÷ŠÉ‰bDqÛQ8Ù·óÌy×Ô‰`‹t®žR@¦¡Ñ&“¼?æÈ©˜3W%X¹ ’þ f*åKA»¸JI}¢J(ƒ $rB›' ±5…à³aÓF“h ¨ æ%¨YwdÕ­fûÂ,P×y¡#_ÒrtÊK°‘M¸­À­¥Yta&hàŽ¾Ü:yÙŽ/½}P¬­Ð_ùöû5M Ä;¹uø´“¤Lª.Ç]ú2™éR€ÐË^ÕÉÿsÄ*1bQÒsàW‡H¼ŽD¢8Ë”—›Ì»¬ci}9Æ/uò?ºAê ižn²ÃTåÜ‚n$Œ®È±CŒì º€JÁC‘zÕ9ûÂ@rÖð…çðK.¹¶`€Z7—³KJÄÝ'z c¨¼ÂT¨Ó( ôê‹?˜G1•Y#EìÖ›ù¨Ö—]ò Ùõ¶¾€WRa2K‹ÜIY~Cy¸Õ0’^\N¯©¯¤†sÓ¹6‰áL3³ý†Ó¿ì¸Q³|‘m‡N£¶?ƒ4;u-í]Ð\k·ŒÖìƒÚ;uº˜K¯íÙq&¼ƒbê%¸S×·ôéT꽦2KZ-‹Û„]²Ï;]L×eÈ@ÏÙv1{3®§A:]Ìq³¸¤W_¶´MÕŽÙÐ*:=HJš^ײjgìF~'{øhZ«=^ó.DáºÉ{qéªÞðƒn¶Ê˜­“:íºÙ{qÙfS2¡9ò¢«t½®­z{ìNr—+D{<×M¦Ø«¯ºª7ý£R1[¶Ž˜ô|\#S!×Ë’1•¢úi‘âDŽ´Ìj*Ƅڑµº,â&}´ÿ3oEÍ í&èlUòë áoS™U¿è³Æe\Döq"®V<|›¦M&ÓfÇ<ß-:ÔEË#S b‰°L1ßoùiÇ»Åéî;¼h¶Í‹¯fß÷’…0‡¸"n½xyä‚çxƒ›zÌ#G£é|Êó=&â×WÈz+¢!œ‘3$z*«ØHjgÉ]¸v„zµ>ÓàªÉ©vI9N@»Ðcs@ïðü° Žé|ÎÜ’1—‰å(›„³’P²‹‹˜¯\MMàŽÛ"“uÜ…«É„ëxƒ?eºÛŽfú{ª‰d‹”®B%&VZ}9u˜ ¬Qì£pª¬†@´Bù…ƒšèLÍ1žÆAÀ+Ò©N]z.×$¤¦D7ƒkAc33©LË ­’ØvnÑDÅC"hc‡R#×úê7~C_õç«vXÜ3bm좹 ;,m¡3ÌçS1¢}]ʰCž©Ò‘;c ãàÊ6ÁÓ"";sì²;ñxÌþ…åT×PûÚm´O_µtú|JÈ…3è[’UYÿˆ­¾œ’?Y~±MŸ¾Êå 8=îø øÕç+QL#Á™>\ý¡Z5€8‚ o3“FºÔá”v˜ò34Ø:uưú„¶C·QËJ–ðžN}´~k§k£u½S/v“^ÛÒŠ/uËÖõˆòWû³5(.Ì:q¦—*ØJ[WËaµ›S.Qµß–tLQ:]Œ•ud°,Í5Ei>×›ÔË VsÝ,®¸ —´ÐqN²¼®mÕ?ýÎn\WÏVgâºÅŸÁ¥P¼Õÿº!³•§d<ˆ"ìg‚ϹN€ðÀÕi…5qŒÝAQÇƒÉÆ€—‹âÚÓ’Tú¯~o_h7ÑZ8ͺC·Z¹ý«Æe\÷Էųe* ’Åv1‰#„T“°-TÂëh¹¯Ç½ãv1ˆ£Áh‚(€Bƒ >‹Ä`Áô›Ì¶©~]‡³=ªÝËž·ñR-ˆ¶«Á'D½ãÑ~“ª»À <ûì ×|ÚéË1KÄ)©|¿„¢ñRGpwâ"8¥Y~âaãâ9¨ Ž Œ ã 'p2. rnÇÞÂÕ·fé=%RŸm\œô9'[÷k|µêÄ™»pÁÖ+5Ë”cÊm9š5¤\a2†!D88Adê˪sõWÜú8[­W ,œGóM !M…VØï^ï/·@7N8@m› Lé)ÄååXô‚öR'7AõDB8‘½JÙälµYsUr4ß|ûkü8#âF)Å’)¶ÔÀJ´¾ ~Çøm}Ýf‡uÝÊc4 µM;lsXrõ­¾_hí°*‡ú¹›7Ç`ÛÂõ{¸n çq„£yúí·pPꎌ[sÃùŸÛ„¦\&þo?÷(”µÆÏo}vÈóæAã‘8'“q8ĶOã0õÕS²Çotô•ê±§ò„Ø sþ­)‹ßøÍUàra‰ÈÖ‡Ëé5 ô…`¼¡'ʸ±mõ§ÿi™Yý´Q‡ºNÿªkêà9Ó¤Lk‡v£ø­í[&ÎM§fwAëµvTbmÇ;ý0»˜`ïÐkÈEKÛ~Çþ„zV¼€ãn,ß‚Ùom›j,PT´ýZ¾÷á’ºÒªSNvIÛÿë?X]Lî²L\¥miy›#¸›“ŠúfÜîbl´ëf!Ö]¸ŒŽÙt{Pb{Ý?º£|G¡œg³†6bPrQãÂï-¦ø .…â­þ× )ZТ·PW E00 Öéd ;VãfÛp+…f•nO2ÄHÌ–ä˜gë\h7Á~­œ6s>¡­ýþO—q)2€‰›Ã¹z.°Mù°ßŸŠ*] ²YHfYGØyÏ’ãµÓ1á…Uu,ÒÊ>uöçÅÛ‹ø;·Æ 7ˆi9½Æ6²±#³§±z"´B ã#™+P9‚º–é5¬3D èæCnXEl;¬ª#†³`­Mc<îÂ¥.Ѫ —* Ö¡y:#çóÃßÛÀ+‰H}ɺ‰ž«l}¯ 1¯VGË=dÚ]¸Ž¢HP%»¢´²5ûOµ¹ %0í2Ýgð}uëü_Ùa»Ù¬q,³-’ƒ­Pj¤ÚÊf~Øa‘x-‹Ñˆ³yV÷.\=Ôa» ;eg—R–Ì6ÀDå¨òºÉ ¬-/‰mÔ®ø\Œèh‹­.4b6Çøm}Ýl‡uÕÆðW÷/õƒa‡äÉ.ÁcšZu4Ã1öaŸOKÌ6ýNçoâ:àQ!{¥Øh¼8€¢eFŽ ¯è–¡þõ?Ù ­ÅmýOôé«.¨ÿ!âÏ۱Ÿ Ï©íëG,;úrJþjù pÒÅu„{ •/bÌ&ß,¿ñ·WCÎŽ‘ˆÜ}¸ì^£ýa{ï »µWÊ,3/¥Â]å7®:–š<ÃÔ™ÖoØþá¯-˜Ûº¶š» õX»¢Övõß{°[ôZ–¶+ô9ôõ4¬IÙþ*³tº‡V8Ó‡K‘fF˜u³›¨‡‹¶¤cŠ¿·ºØìÊ€Åënûö—Öi8ü5÷/XÇ´|¦ëfïÅ¥fSZ=ÈñºâêQþWgëáª;BY¸dU®34÷šâ3úR(ÞêÝhÁ8sÚÖKcê92ì@>®qŸK Ô?á¶o–¼¼~‚oV;aÆlÓ­ õ׺‰dƒ™dq¢©^Dz¸ó«ÆÕ¹.K`¨rDœÑ*¹œQb®ÏKŒj·mP¯TÊ~òlιx —œrÉw|8KŽ‘Ú"—Ì꺃Á"¯·nê*0*U»9WmxÄ3>zÎäé"ž.ØmÓ©æ !”Z)ÓU(bîÃ%à•fù±—*ÁÉ|凱ù«2<‚ÝŽ ȇ òÙVÏ0´¾×Å…v•%HcøÏ©ó’ƒº¤/ƒº‰Ì ž­’çlÑH϶Uð®¾D*ÌUÉQשÄÅúN8ÃnCYÊÖÚ)h­Ðp,ñE "zíìN}Ù&áFFmeTµóžH9uƒøSÎÂX¶y«1&xÃ^;T×ú²Œ¿wõu‡JÝâ Äštÿ’ó­ÂÚî3ØJg`„Oý+Z‘\ —Ô(ÿí§ñTg ÷'ÈÁîsÁP‘*…65âT¿¾š²ú¯6žhÂÇ*ù „ºQuôe•4p)¿áà2ú×xWãúZŠ‹À©@ÛHúqY½Fë«Hù¼¢rÑNf&2hêúúKèµÈŒ£Ló  ;tµü!¬¦Ó©›ZîƒæZ»ÔÓmŸw’"º‹9ô*S.±5Åh"/Qjûµø–Þª2KZ­2×%Z%1•ÔŒPÊh ST]ÌÁ%5à¿ÆÒzÄÆîåpÊÁ«s]L7*Ã"KõëK®oµÐââ¦Ùb×#¯\ÊõÓÚëZVÝ£PKl ;BᾯƒëS|—’ð­þïi¨™¸mþšM•õÓˆÚgÓYsLgËz%Ã,ÛùÜ\¨N6U7;EßäK®º^< Ú¼Î©ÛE´CÑN‰Ê.áTU–׫è¶á\q…’àê`¸íK; .åàgŠýlU.»´Uç pÙÚà£ÇÍ‚ÊîÃ˶ ££r§NçëÛèÔ`ýþ\׌Èj¢çë5©ÜKî~—[÷¥30çˆ0:_Å%Ve^rÕPÍÂø|;.Èr¥³7U;%mC=;¸l«"UÏ™jxþ¹û˸a ±Ÿo³)ø–&p¢œºFñhW­]èì´{¤miŽFìF¯éô2®‹²ØM8Á^×H§SêÙ×ÄÛè p9u^4Ú¦¤]ÀUèU®šªôß+¦ø¸t[Ï}xiCåOgÕ/-å'Ü ¨ã¥¸>ˆa<®R>ð)¯¯¬œѼ¾zHùا¼Ê>¶~lé¼¾lFîüýáð x<žÏ€gÀ3ðbî ¾^Xâ½ðÊ}™Çõ±õcKçõe3ò±¿{}}lýØÒ}U}çW…æqÙFü±¿?L_kèÁ|{\&ü•Íy}½’À_îõõ`Â_ÙÜWÕhùªÐ<®WÚüƒ/˜¾ÖÐW%Ðãz¼¾ «ÄëëaT¿IC_U_ ç«Bó¸ÞÄòVÉÃôugCUšìôû]{ب²]’Þ÷¼ ÞÞõ|=Í\?u'®ë^)Qeû½<Õre¶O’]ý¾¦Îux~9™l”'¤ºÒ…ð¢Öd['·Ò'+\Ö<äq W‰ “ÝQ½ŽS_Ù|ÈYA«iSÅ~vÉN½®¾ -Pæõƒ&ò9¹x”§]’ìí[öyòY²£¼<²Ñö qeÀ•¤ÊØšEr~2Ä<)> àÚ¥íÍEvØí µ`èÅ%[\eiھؚ¥ÔÍNª–œš¼ þ6\ÒÔ»ÿW¤„£)ª²†Eä~ê gÉ%}u¯zÏoF¯ù2¸,}áì‰Mþ/“íÏ¥/W§«š°ð 1ÇY}*S„ߺàÐhŸ ´ÔŽϪì“áúx]ìNùÚy¼îïK±Ò!ÕZ*ð¶@É¥ÞÑÚó_ê:BÆ«{œß®ž¸×Õú®àËÚÕëÜå-”O®†òÂ:}å^^ÇGüE½; AWÈ×Õ¼°è´Á 6Ÿ¾_k¡ÞÆË‹™¸©T=½¸Ô…QÌ §òF\ݨT€$b*¿Uy*mªÀ&¡"J½³´S Øó5tÂJFXɈ| L‰AòêBÕÖ3 ý&® p]¸á˸øŠ~VÁŠ&*êÅ…Ö!y(¸&&.›äb·çi)¡ˆ’ë+åÅÅ*s®4É·¹º¸ I¸Ör•§xUrPçzà«!5aà-ñ€‘’»0Š¢0ˆ ?oÅU·õÎó…Q‘BRƒ3ÀžîK³{Œ¤W_ï ¨Ó|Ûk¾ .[_Õ‰=1ðÅ‘ƒ%_„ÞŸK_6.««6 ð·Î~"S¼èÐú }"\ÐBwXÑJëQÙ'Âõ1»˜E õ2M½õ‰ÑuFEüÔ¾ã…/QÄ H3êJûÕ&gë51º~¾ý¥þ‚Ĭ*…¢þñŽ®;®¼¿hÁ4Oíøâýlƒ`i ªFÀؘsä 2aõJ½[ÞᯮSo­drÛ‘d¦Ç ¿ŸFu¶›ñM¯ò^_JÖ‡‹9¿bqÚ’MOò5´(ÔË`Õ{¹%Û¬¿Jˆ¢2t0-,ÞèÎ f]OŽÀ/Fâã=^|/qºâ§¢­g(€k&D ÕÀh“áM›¨BN0Õ NàèÃuÞŽÓ‘¾m;jq]&—LPÁ×Ë˽C‰Ô*È_ü+¹EÚ\äõ@ŠËášMª£Á%ßL®Ê† •K”÷)xC=g'™aŒº¶£p¢ò’©ªnÆ¥Š¿ïÿÌ1'ù:ñÒV$üE\ V§G*&î Êôê«çÚw:eöš¯ËÕ ;à’þ¸SþTúrpÑ]ôwÕ>\ŸË/94×.\G>•}"×ñ1»˜&°8¬yÇ#&ù¯ó(@L¾ãÃhÍÜŽ[&‹ÿã<üæwL‚‰ƒùžò}óÆì˜Y–$S³ÌÚ š%b˜ý|DœÿÁ!¯õF•é¤>×/£H:ˤÈ4ªŠƒÅþûJ²$czF2D¡ýûë¾Ë^Pº: ðX§ÛX^á-‡³TªA“&a¾3/›Jut>­H¾‰LÉs¤òGH‚Œ89Ó}ŠÞ©Å)É¥5Ùc¢ª™‹ëÃUÌâXb½:%1Ô¦²q7É,Vi»óC²ÞlîGåuUqˆ„]Hd¡r«@SO…jê䕳rÇó|…,!ß@…ÄÞä!*—ƒ€yÐJLX ©Öê€iȾ‡Êúp1ˆ© a’dRSò\"Yèb¦¿t†|h*®È,û›ßFJT p çš—çjîr…Ô-HEÜm(ï–ø(I»¬¸ÂÙù]šµì[q)ïüyXM$û²ª!I0"åS<ž­µÖæ DïÓ×;#ÒÍ[½ækàrô% 2R­ñþçÒ—+Û_èªõM“é¬äÏcŠÚçRh·ºØ…Q£_eŸG_´‹iw¸W‹1$Uûåt¶90„©ŽË8|å˜ÁŠ^½^‰<Èáx‹á ¥bñüY2 q¹äUë_˜o€»Ç´Æ`Éñ9Ãì –ü~å,ÓŒãi¾Çôæ[ê:1¢–œr,³…óòœMÂhóÜæ9í¥z>h\=¿½é)LN VˆaöH»Âìuú-NµY‡$‹ þÈŠ©xLÂ]¬½ÇLq%Ù±j°îtªg5ŸÁU7ˆ…ÇfÆê ) ‡X|L™ÖC5NðÈò¡B8Ä!:Ë §už]@QEÔIäîÊ#<ǼͿÊÀŽ™}ÔY5DhHN­OL$þë`±Êú-­Îmz‰äŒÑ³!Ë(Mk{ÌO»Zšî¾#ßq4ÛæÅi v›ÜO\ý\•m.uFÝõL¶˜gD®²h4O©¯ùíÞˆ«áðüUëP²6Z"<žù=ö)–”—JÀ^#yÆß–Õk¾ .òjè‹™þ`Ê£1s•ÅâQ?§¾,\LMîvUêµCœÿ<¦xÑ¡õBû<¸”ݵÃJýý‚Ê>®ÚÅ4˜öYŒ¹5"‡kLåîÇÛõd0]Ž£áf;ÞªI‡û‰40•ÔŽ¤ÔT™0bÁdŽÄ0ro„Á}Œ“ãάà(§ˆIN™u´#³åHYÇrªè½ÿk\÷^xWyµUf¶Z¯Ì$>ߤ FÍGaÇ”ÛZE$¨” gœ’“`Èh‡ŸõÎ@† Q fCžÿI¾1¹µÙ,&È=ÚpNò’ƒÊ—#xðh¹×í¡,½ßÓ`¶Ù¬&qŽæz3=¨nb¶‰Îð›ŒÃaïé@ !ß’›ÅÆK® ^gà€‡Ìîz®ìc¬xSù4–ܦèêÓB ˜‡ØJ¹ LmÕG/ɸP«ÒªÐq»ÄÑ`41œTDþãñ0Š„XuüiâºÄUk„h÷„‘qcÛꄵŸè|œÜŒ«ñ®ñ´Kó8ƶ {hw8pñWOEÊÍr“ZIŸ¾ÞOÓ8·t{Í×Àåèën|d¯œsŽcß‚:h‡ŸG_®Þ®Jd½¸pþó˜â/9´^hŸ&ÝQƒg>9®ÚÅ´al'ùÌQp…èi‚eNµŸgy*1ƒ1z±z+’ V¹TT0XqûkÆ©˜Y˜-PÞžóŠ˜ôÐólÐwLÉ<›º‹Ï¹Ã®¦®Sk72øª˜§i÷×=Ý]îv³YãX2f[`©{¶$$íjvmáA¡=Ÿ4D|«v‘qr2š§ª1Xuó4 Ì8]ÃU*îl;ì°8·–õÓ'Yòxi®’mŽ×*¨¾ðtÕþT”xU*Xc14/Í££šj¤­·*Uõ~6%•.€¯v°ÁDÇKGÄ'Ocõ„DUaëé5þŒíRõ3{Œ§u̦žwÈå#Ù>\X®—ÜÏÆý!ö³)\•K2Ä«Ãu-&ȲÿMp­³?/Üæ†ª¸5Næ..¬„öreÆlÚ\§,yõ¿ÿ—S@Î; ‹Þ‚ R¼ÿq\Ò9©N“ÿÿËì.&sÀû @¬¨ê5’>}½?(Hàôš/‚ËÑW¶4 t˜¸£ù”úrp}wºês¸ ñÏcŠÙ%‡öÉ»˜³=§²O¤¯ÙÅ4Eºl–~‚ùŽÓ5ÙË¥œ’ j ›Æë!¬:®9­3Ý•Ç5ã9áÎÉ<›¨óŠÓ]±ÇLJPWËø[eÛz›;F¸-Ù6f«7YaÍ”CFµæV¹zø½ãÆuï…/,_íÔàMžÄ$#“ £‘=ùTB–È£ ø!š4¯áˆÞ«ÖxJ0PË‚õS½‚Ùƒ«ØQ É|Z¡äжZ%TUì§1t¥¡¡ME5Î$3Ä`<¢ Ÿ…T‡Y€Úoa ЧÑÔÔ—HW0$9…«Xq=‡G0\¨߃ gI-ÜSÄ™º—M2ÍíJ4´À9cÃ%Ãã|Ç`å5ÏM˜¸Ô—ÉU³af³uói¸À"rµ›sU”G<“éÀ›qµ­½ã§–¢h¼¢}¶ ¶ÀÓ²Ýc$ýúzG4NÓº×|\¶¾ŒÞ À˜žj{½Û©?°¾l\vW}Ôþ¡ÕF©MÑP™åÐ>wS8ÛQãY•}N}} .ÖøË/ç_þ©ÌåeTüüËùÿþ_êâúçªüǬ.”ßýë9ù `YþŸ2ëä%·Ö_[þ]Z\w]öF…Ë¢hÖͺ5â±Xý\l÷—úÛµ?ê½ n¯ˆ7tpžÆ ƒ£Ë¸ª¢hæ»-;MtFPe—¸X•}ååï]©¥ ¯ë–¸Œërü¥+¬HÁ>QÒ4’ŽË¡Ðx½ûÛçÂÕ§¯þÞñÙq]êõ.(óÓ™âÐ>®n¿2¾Y*ûl¸8ŒèÙ =ý»¸Ä–Àñ/Îø÷ïÿ=¥z»Ï»þÏ&ÿêß¾¶N“©Û>·¸n+ÿYJy\ŸESJN¯/¯¯ÀÀWµCpûU¡y\¡ãÜ.ÃÃôÕ64žñï¿ü ùÑ>ßN\S²ÅÕœù=®Ï¥G¯/¯¯ÀÀWµCpûU¡y\¡ãÜ.ÃÃô…†üáð x<žÏ€gÀ3ðbnð^Sâ½æò{­ÇõaUÓ+˜×W/-ö¤×ׇUM¯`_U_ûU¡y\½–üaO>L_kèÁT{\&ü•Íy}½’À_îõõ`Â_ÙÜWÕhùªÐ<®WÚüƒ/˜¾ÖÐW%Ðãz¼¾ «ÄëëaT¿IC_U_ ç«Bó¸ÞÄòVÉÃôõ‚†ªu€JJ$x¹Ó몳 `¨s)õE£‘>^ÎÔiAL’ ¹X Ù¥ËÆ’b®dþ.eFáHå´º—Ó„ãí&,ÇÒÔÚŒã±2oѺvpƒ«‡£¦“TŽz°DN&Ô3­Âéƒ6v×)ƒÑžæLó®‡%¢h«Þîêû Œd»®^e_Œ)œ‹eVU=¦h ‹Ž'wtj»Ä×ãr¨s<¹ ·<¦•Äá©1Óv¼‡ÑÅ,}]òW†Bë*®ºDUîmÿ· ¯‰kcS´dljÊH·tU–öz«b¼Î¼¸-×œí¼®®9yû_ —\X ^Hz#æ&h†0ü”m a¦*¨~¶¾mg; ôH}ßÍ$¾b"uV5b2/ä™BÑ5@ Snh#ô8J´+PYÿðlDè¾$?`¥rWíÐ%ô•4#•ŠTbI¤B’¼«ÌðŽ7î‡MäЇë¼aÌ‘H‰™"ÉÙ$í‘‹"^²‚Tp•H 8è¿çÒ¨˜wŽ1"Þ—ÌÓqSôð¦*¸ÃÕŸùöuI«Šì±e.“YãÑ俺Q~¾ —Û„ÅÀ/’Ò”Ú(©—:i©´©*y¦ÆfGuî6°FªUV‘ÃZ"d}Êi¢rÜÄ@åR½üwW?Éªê ˜Ö瘙To¨Ã©Jrua´Âm€DšH‹Ôcêì‡m‡r’ÿ=Ëh”…ûôu±ñ9š&l±aÐìª=Ìyú‹m‡NÿrôÅФ‰fЬS€âͤoÓö7™¤Výˆd]8£—- ʤ̎¾:ÆQ/S‰Kpƒ£4ÔT%P}QÙFTª;ôîp²o‚¦ÎùiaÇ™Á :àp GëœÎªÂûpÙMÔuðOãí&z‹i3¶?tÅî#óª¾ R¯ÊhO·¹z±f.ÙÇ9C›VáöA»ãŽlÏ`ztÅma÷Á›]ýÅ.æºzH»¡ÎêÃûbUpÊ\MMâC0BÙ:u\âëq9ÔiStºÊ1UÉ„ K?M¯N( }T³õ¥ÛhüUÓ¼qIŸêšÞòƒÑμÌ9ÁR¬‘š\Žxº)ËtˆäñCÜ‘L¾IŠÌd‚ŒŽý‘IsDÊãµ’!&Ç4ÆK¨<qŸæô‹E:_Æ “ )rÈ`®¾O™ì tXÏo#IÙÖzû'—¾¨XMêTç ò}OÔÆ_ÑmÃYeøj_Z1ÕfØ]>Oö¸÷C°Wbd U2¨’á8™"åä3°éá€U¨ò|XM™PC!r—SdbÕyœ/“ÿîÈ+ÎæË¸Ð2ßë`ÅÓ‡Õd!.G†ôZª>\´¨™JÈ7޶X)ýl0–ÀQ_ #“©ÒrJJÆXU°’6Iþ,Ž% Ä:µS¸ËU–NÇKé† $̺D¦Æ¥šÄðÜ4Êwárš°øy†´·J¿Õ‚<«~Š˜¼Vhjøæ¨H‘î2FZ5´: W0,HÇÉñ˜Rå‡S»0|Wɬìï¦A^}=ƒËlB/Áêîã6á:Ëf,˜9b»dÞ¢¯K*»ÙÕ´7ä‰nº±mßþÖrõ¹C¯íŽ2Û3à¾>š%§cJOq8•öX°»ÙÕ»&æsÁÕÇsØ |‰ÜØb_ªªu_6®Æîµ'·tZ8.ñõ¸lêj¸Ê ª¡Ùîbù!Yo6H±­ò3²¿t‡fÔÑébŽØu#Ú_õ°Ì—ôu±FÜ7ý«bîìßœ7æñÿú¾J.Èò¸bD‘1©e8ÙäÍ<›ê¿èÎÈû>å4ZÑ3d Wl-¹ŒÏ›‹Ù>Ã,Ó`‰ÛÝ*E*êhñm;Í9p×ÈÞˆv¢±dêÜŽƒ°É¥ÞÖ|Û'Ë.^¥#‰U6võ+¥Õ“)œhÒVf’;[ }X¦ V€“NC%†Œh¶Í‹ÓR3 : BãÑxžâ&[h¹d”+KŸ’‰UY½ ‡~æDÖì˜ç;VÖíç « !žš™vm91ãD)€´GFfQÁW¹(4æ½dnŽ:œÃI¬ÔH^{Åþ/¹êµ€#¾íáJ­C©)©ÞhÃÂe5Ú§¯‹¸œ&¾Y üô;¨#ÞóÓŽ³Lõ ×¹Uh‰!£[@æuœK¸[cl='° –*Ík<3ë¨^j¿WM³Ar}æ°Àòk4ÏG°šKº¶™a=¶k‡ªBî×ÀX…B÷ÓPM,;v¨lòY\=öéK„éë_Jʶ‰ZjÓÌÔ©b#–ªƒMòƒd³¹ú¼€]t…Œa܈ˆÛǬ"´Ü81‘í9Ç«…iÄ?;ú’_\ u0‰ó`r³0ªû¬Õ³ fËÀ@Ê$ÃȺœÒ&FÓù”f6Çm Ì( Ád«f&gbëX-‘W˜7&O¼BÌH9–‹úêtö™ÕD}Úè>NŽcé±4ÕúC™P5ÅvɼE_í"4W¼å´Ü×w¬EÀ²Fc¦@–M,–UØ}0s°ÛuþÍUÁXµgÀ NÔƒ¶j\èƒ7¸zÑD®ZE­«/øÃnæs¬Á—ì{­Öe†¦û²q© Û“:½à_ƒË¦Î1Åú„ÑÅÔäèV·ê®ëÀZQ§‹]»õW=zÌû¢Ö"¾ÙÝæÍ¸¹ ibü?Øüé‹ñ аõ Ž.ÚñÞ¡žYÂt¥øÉ¿?­íY&|X36•¥‹á@àÛˆŒÈÒ¼Þ|u”*ØFu’‡¡Q®JħOàR~ˆýl .8ù§±zT©¢j•ƒb0–sÓ>ý†ÜIë8{.YÕxÍFÑlðÜæêOp‘ìs®0/ }ÙhCi½ž(Õâ¿n£<{.[_6¿¦ ¬ÓgIÓ²ìÕQ(mèQåêÄl2½æiT¨š­ÅÂTŽS·á²Iæub‡¸³ ñ4 ¿“Õ]YZfæÚ¡¥/Ê…C÷>õ'àë œ¶¢Èó¸œF/ÙáÅþå4a3P7XÄîh©N§YúúS~ØnÐC×ë%c¶Er° œÄáÙ{DuÌÆç e9Á»¶>;´…¹¬/—ÖÞª£Êk?²AÏ ÆK†S]›ÁŠ¼àØ¬±¸‡o 82o_@׸lG1Ù"¾úÃßáê€Êe弃àŽ>¸3úqSwá²›ÀN€s§û8M|—ȧu,g;ÌÜö‡ÙÞÛ6þ_9KpU_@ÙÍUDã×9>#àp6þñ¦UüÞŽÇ³=à C›zˆŒw`Þîƒ7»ú˸lWÏèKMþc V‚¾Ùbÿ½3Z¦ˆÙ»žÜÖia=.‡:šµ94ã;Çãé˜Íšÿdw±â®'#—¨„{ãÿ ƒ?q]BŽÁ|We\ÃÈIÑ¿ûϘ†Ó1÷tñ8a'–ˆË ª5œWT»¸Õ¼\Qe[Œàró]vÚJà'“o89Ûc«^¼(¦úíšoûnàj/Èw|LRŽh…à­äþylÁº­Î%Çx•âD–p}‡G4á‹ò¤¾à)XJ$‰‘µ»²™ÍùÔ©\1^©8ªªnªŠ8“Pãú&SòAS7¥é ÷ñr 5ÀSõ~õzw´¾Â _w¹ÚÍaòr„cÁáiãâÆ­¶Qa÷\}ú²€Bê†K’ï(Ô)ઃWub6ÜD„Ó=OËÑ*ôi¨VÃoÂ¥¶ ›$k;4lf¶eïš™jºV‡[•úY÷>õàÅ…©o­ØÊ±`t W§QùÒ«/CZ«u›pÄV+ š’ÝwµîÜX®Ø¡Ó¿´Í7ÝGI‰U’pÆpÝQhºÂìºÒ—ÞÁ‹­µÒg{GÚ¦åfwô% (‘u`Ü™…±ÚÃàÚŒºh?±Î‰»Ž¶Å3FOEÊ'Ôå.è‹v|¢™G Ï£‡.×϶¸G¾žÁå4áv« ×±H³\”WÓäJùC[lÇøoÑW?´NDZLÑñN­ëd²m†U+WïÒk×Ùv±Ú3´†²E¹-P÷ÁÖEϺzCW«ÏÚÁn°¥ÝØbÛUÑKXn¹»-On¨Ìã4ðÆ¿WÇÕ+êSCsºv›m̶ëP¦‰{·º‹CsãÉßÊ%6M½å_«/—Ç5›Yàæ¯ÕpŻȕÉrÖSìS ×|æ( õî!)ÒÔßü}æº[²p—¡‘~Ù R©œQúÙUa¢@Ñ.}r¢[eÅFÌ:¯6Jq ©žÁe c6ÓýÜ­²ûÛmßl±-)ÁÄd¾—Ó„­!ÛàÎæpêt®±N8 µ~¿ŒË*Ø~¥µßðÉÆÕùñe_®‰õ5ËP­v.ãºØ¿¬^òÕí_×ÌÌQ(ÄëšD×t/ãº(¯«¯KæbW€:ºbw¥†ØúbÃŒ^€ËnÂÒj¿_u,vGì>2ŸÓ½ :RóDUXžÜo÷Áì–)öB3¡8¬6_€Ë‹6: 8bó„sUç„ÃUçW|¹ªÓ×ãrú½-ÃõïW«pÔa×y­Àe}Ù5½òû‹R[ûÔêdÈŽx"¦~#>e]óJ!_pù‹q½ ­G^âq=’í×·åõõzYƒ××#Ù~“¶¼ÊބƇUâõõJªA ?<žÏ€gÀ3àð x^ÌÀ+ƒ1¹gÀ3àð x<žÏ€gÀ3àð x<žÏ€gÀ3àð x<žÏ€gÀ3àð x<žÏ€gÀ3àð x<žÏ€gÀ3àð x<žÏ€gÀ3àð x<žÏ€gÀ3àð x<žÏ€gÀ3àð x<žÏ€gÀ3àð x<žÏ€gÀ3àð x<žÏ€gÀ3àð x<žÏ€gÀ3àð x<žÏ€gÀ3àð x<žÏ€gÀ3àð x<žÏ€gÀ3àð x<žÏ€gÀ3àð x<žÏ€gÀ3àð x<žÏ€gÀ3àð x<žÏ€gÀ3àð x<žÏ€gÀ3ðø»aˆ endstream endobj 8 0 obj 19331 endobj 10 0 obj << /Length 11 0 R /Type /XObject /Subtype /Image /Width 828 /Height 90 /ColorSpace /DeviceGray /Interpolate true /BitsPerComponent 8 /Filter /FlateDecode >> stream xíÐ  þ©o( 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ŸØ(ç endstream endobj 11 0 obj 348 endobj 12 0 obj << /Length 13 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >> stream x­Yyÿ½çó9û|ïÚk¯½öZ{ZëÀ{ƒ3AŽ¡8Yš<<½¸q~À°O$EG;8Ø‚ÿú¬<µrHž*뿲ýß,þÑ$ ¤ÚÏ?šà ZH‘”0Tybñ1‘T|ÁìDA—SqÐ_¸…ŠýþÂ}Û<.N¦Ï$4x"‘ÃB'Ä‘‚9Œx°¬dÿ2ÒŒ€`R0Ñ^_„G."b/g"XÊï_äý &ýþ–I$ýÿ ÒéØ,$:2œ¸oûÇÿg‹ØkûDJ|t˜³ òåDì–@"š;#˜ÁYÁÖ¶¿é‘1&N¿éí!1Ö.fGx†ƒc­\ãÙØ0Wcó#ôõ°½6T~ÄN07Ùo§=‚Y,FŠ6ElOí ÖH vqÿÍcë`fŽ`dÁ”½Nøƒ£ãœÿЃMwþá%î ú›áO'R´­œnIíW¡_Œq êIí«Ÿ¾ó÷Xàw *•¾½=^ªnÁ1Á.VÑÅCq¡ò cDñ†XX#Ñ ¥L±úC7Š ßžÓH[” %Ö‰j1]©6¤ÒÓý‰fTÛ"6A @ül°¦ÀìwI@èd„F{A8òRLj0ï1ƒ˜·˜Ì$fì iù›„ÿ%ë_Ú#tg>!R@ôŸÞмh´.Ú)W­…ÖþS׿мðÿÖ5i+ÿ[¶ÉoíãþUû=!)”ÿÕÆïïÿ©“x‡X è‡Ò¥9¥õ?íÿ1Ök†µÂZ`¥QÇQ×Q=¨.T/ªÕ ¨Û¨TªƒŠëõ§"B¡Z…jáh`ƒX1Änÿ"ÿéï߬û7Ço Œ2ŒêÀ iEaH]Èß=¸mkòRb?¤ÇP„׿oüÖ -XWm‚ÖGìŒØ͉æòh5ÄâÆhCÄêõ/þûhäAà¶µã¶ÇÞ#㈈ HˆAæ0ݹC0FvË9‚5™¤ GPQRVÔ½—ÊÀ²Óöž qüCóS@kÙZúþ¡E¬PwÁûÿÐ$ª‘-àW I±”¸¿ä¡©  LȪà‚@H!Q@s°Øà v#s8D ǃ$p¤ pœù ”*P A3h]àx ž‚ð L‚0Á Xƒ 1@l$‰C² ¤@æ-äyB¾PD†b¡$(Ê€²¡|èT 5@­PÔ BcÐ4}…VaŒ‡ÙaXV„µ`cØv}à 8 N„ÀYp\ _…›à.ø1<OÂóðw@Ñ£8QÂ(y”ÊeòB¢(¨¨tT.ªU‡jCæâjµ€ú…Æ¢Ùд<âI+´+š„ŽB@g¢óÑUè&ô=ôz ½ˆÞÄ0`ø1²Œ5Æ„‰Ç¤ar1˜›˜ûÈzžÁ¬`±XN¬$V™ížØPì~l&¶[½ƒÄNc¿ãp8œ,Ng#âbpi¸ ¸«¸Û¸g¸ÜOz! /2M M.M M'Í3š4k´Ì´â´:´ö´þ´ûhOÑ–Ó¶ÑÐÎЮѱÐIÒéӹЅÒ¦Ë£«£»O7N·LOO/B¯MïHBˆ>þýCú)ú_xV¼ ÞïÅgá+ñwðcøe #/††,†j†»  ?Ù­ý2061>cüÌDË$ÎdÌ´›)‘)—é:ÓÓ3-³³)3‘ùss+ó æï,l,Ê,ö,,™,5,½,³¬8V VsVÖ#¬e¬wY§ÙPl¢l¦l$¶T¶r¶ûl3ìXvIvköPö öZö~öEV57ŽŽŽŽIN§§5g8ç)ÎFÎ眫\\Æ\\'¸ê¸žqýàæã6âàNç®çá^å!ð˜ó„ñœáiæyÍ‹æ•áuäç½È{ŸwO—Ä—Î×È÷’æ—áwâßÏ_ÆßÇÿ]@PÀR Rà‚À]ANA#ÁPÁÁNÁ9!6!¡¡¡ÛB cB8!p°(Ì/l%+|I¸_xMDRÄU$E¤^äµ(¨–h hŽh·è¢˜˜X’ر—â´âZâÁâçÅ{ÄHHJ¸K“h–˜•ä–´–L”¼"9.Å e(%U*5,•Ö’“.’~*˨ËËÈ È²²!²E²ƒr9m9²\©Ü y¼¼±|œüù)N[……f…ÏŠbŠ^Šg{7•ԕ•ʕ^)³*ïPNQnSþª"£BR)PVePµP=¨Ú¢º¤&« vQmTMÝNý˜z·ú††¦E£NcNSLÓW³Pó…»–ƒV¦ÖCmŒ¶‰öAíví_::1::_tåuÃtktgõ$õôÊõ¦õEô‰ú—ô' ¾%“†Â†DÃR÷F¢FþFFŒ¥C¯6Q2¡˜Ü4ùaªcšlzÇ efi–nÖoÎjîjžo>a!bdqÅbÑRÝr¿å+Œ•Õ«ÖÖ$ëjëÅš;’wܳÁÛ8ÛäÛ¼µ•±¥Ø¶ÙÁv;ìÎÚïßIÞÙlì­íÏÚ¿vtˆr¸åˆutp,p|ï¤ì”äÔãÌæ¼Ç¹ÆyÅÅÄå”Ë+W)×X×n7&7o·j·îfîÙÉ=y=C<[¼p^n^^ßw™ï:·kÆ[Ý;Íû¹¤O‚OïnÞÝá»;ö0í!î¹î‹ñu÷­ñ]'ÚK‰ßý¬ý ýI¦¤ó¤y#ÿÿ¹ý€ì€úÙ³AúAgƒæ‚ ƒsƒBLCòC–B­B‹C„Ù‡U†m…»‡×GÐDøF´’YÉaä{{÷&쌔L‹œŒÒ‰:µH±¡TDCÑ>Ñ-1ìÈ%·/V*öhìTœA\AÜÏx·øë , 䄾}2ûNìûh‘xy?z?iw’pÒᤩdãäK ~ºŠOw>öüdžm^˱ §/¬çç˜Ôòž(üQä_ôì¢ÑźbâŒâÕ’’ÑK–—šJ%Js˰eqeïËÝÊ{.k]®®à­È¨Ø¨$WNV9Uݫ֬®®á¯9u¾{eîª÷Õ§µfµ-uòu—ê9ë3®k±×>6ø6ÒzÔüXãqSŸzßÍ'êOnökô7 h´<Õ~Ú6¨7ØùÌðY×ÙЃaëáÇ#;GŸ»>}áýbrÔtv,|léeÜ˵W‡Æ1ã鯙_çNðO”¾‘~S?©1Ù1e6Õ÷Öùí«iÒôü»èwë3GÞ3¼Ïý ô¡zVe¶}ÎbîéÇ]gæ#ç×Ò>±|*ü,õùÆ£/}‹‹3K”¥­¯™Ë<Ë•ßÔ¾uwø>±±²ö#ý'ÏϪ_Z¿zVÝW?¬Å¯ãÖó6¤7Ú6m6Ç·"¶¶"‰âö]…”p` _+‘¸È¶§Ð1þms ×]áA°¤ÍÃGP*¨Yt †ˆœu‹¸šLÚ :Czv<3+#3;3?‹0«,›»‡g×Yî:ž>ÞY¾ïü‚4BÜqa%Q{1_ñh‰ã’ERÒOd1rDùNE‚Ò~åaUµxõnM¬–©vŒN™nŸÞ:C#cnS^3.sv &KË-«oÖó;ÞØ Ù>°kÞYeŸïpÒ1Õ)Ñ9Æ%Ê5Ú-Þý€ÇqϯÒ]µÞu>5»+ö”ù^"û•.ù—TÖµß [ŠÀ’y÷ÊFêDYQ\£wÇĆÇEÅÇ%ìÛ—œxhQR[òÐ73¦ð¥JQ8ªž¦sÌà¸É ËtÇ JfáÉÞ¬Ÿ§¥ÏxgŸ<Û™³Ëy^7ÏûBBþ邲¦¢G_/]B—r–I•k_¶®ð¨ ªŠ­N©ÉºRpõrmCÝíúk“ Ë×±7øn*5™7{¶D´j˾u©ýdGL§çmý;B] ëm÷Ý»÷2îSøôìx¨Ó+Ø;ÿ¨ü±{¶¯þ‰Ë“Ÿýù†3OÏš®?»5”2l?"4òùyÇ‹ôQ×1¡±Ù—µ¯¢ÆUÇ¿½nœˆ|£òfc²ªømä´Ñ;–wogÞþà0+4ûiîÖÇó. < cŸÎöú"úå×⇥¥eéo§Vd2­:®/lmmû_ºÛ‹¨\´ú;¦ë‡ÃÍÒÔÑÆÐÓ‹ãYð« 󌯘ž2ßgédmfkaoçèàìâêåäéáíàkâo¸"X%TA¸(|Vä´h™XøgIN)#ép™|Ù‡r+ ŠÎJ”kTUWÔ¹5´4íµˆÚ¡:$]O=;}c5Cq#vcØø‹É+Óf×Ìó-ŽX†[9Ykìà³6lûínî,¶?áçHrrr6qQqsãt§q_óøäùÆkp×=ïfd6ïÉñM'ò‹#‘ýÉäÀˆ ðà°ÐÐà°€pbÄn²×^÷Hç({Š]´gL reNŽOKÈÚ—“xaaRQrñ’ƒ%‡J—¥4¥ö™MÃAæ)=5£,³ëäDÖÓŒgD³5ÏÚæøKÈ=u¾<¯íÂ@þtÁ"Ú‹¼Å²%:—,KÝÊ‚Ë\Ω¨­|Xõ®\¸ª[ë^G©Ï¼v¹¡½ñéõ×7æn~o†ZZyÚÄo)µkw˜tî¸ípǵ˫{×]—{Ö÷õÈ÷ð=Ä=\ì}þ¨õqA_Òï~ÝÞŸOŸÞxvv(fØcÄè¹ü ¡Qî1®—‚¯dÆõ^;Oø½ñš´œR{+<Í8½ùîóÌÔûfÏõ~ì²0ôéãh‘kIî«Ù²ï·Ôï +ó?õ~•¬q¯×lÚnû_܃l Qd<@Y£Fоèo˜4¬0¶çŒ[¦©¤õ¡c£{JŸ…wb 0,2>bºÊœÃr˜5†-ŒÝ‡CŸ“›s™ %Yïp´lmýìXìîïL¶×±ÿápтܾ8×¹]å]?¹ÕºGxÈyÌz–zyîbß5è}ÚÇy7Ïî·{ê|÷müøý>“ºü³¼E烮'…˜‡2‡Ž‡Õ„'FØ‘EÈ¿ö>‹¬ŒŠ¤¨RV¢[c’cMãðq£ñ• IûÜ5÷ó%¡’>'¸{°öÐùÇSÂRÝŽUH8ÆplóøÒ‰÷é/2:3/LÍ 8euZþ Û™ìgÇsž{’ûøü@Þð…Ñüñ‚7…ïŠf/~)^¹JéËxÊ¥/ëU8VWªÎ«¹v¥çêdí¯z¶kò ÖA×ÓnTÜ|Ø´ÐÂÒjØ–vk¨C°3ðvíånÝ»Gï >ëIzøê‘Éã†'2ýÅOуÄg]Ã*#m/(c¤W—'¼§ªg†æ‰Ë¢Tÿÿ•#£ž X Î!ù&$â|€“È!ù.:pÑð}³'È\ðïóh$ædE2(RH¤iÜ‘hûÈÕàK’BbC”•A÷ 0=¬»Ã)p=ü…Gé£"Qå¨143£F·£b40ј+˜7X¬ 6{ ‰±”qd\î K%ÐÜ¡ÅÓzÑÖÐn"QR==ý>ú)¼-¾•A†¡‰t2‘Øæ8Íd±p°³Ê³¶³Ù±½a§p`9ò98»¹Ü¹¸SxxxxxWùÊùø7j}„˜„º q²“"¹¢;Űbâ1òs’ÕRáÒ*Òk2½²ùrdys!…uÅWJÊ™*>ª*jôj³ê½õšùZ'´“t(ºz!ú!¡†FvÆj&¼¦Àô=rCn²¸d™euÀ:zG¸M˜í^»Äéö—Z‡œ¾¸0¸Ê»9ºÇ{”xöy­yËûøíÎß3Bdós&åù¿ ® YÓ OèÛËÕMCŒ½/Жè“D“Üz0ò°lÊÜ‘Ê4ÒqþCÇNjR>C>û8×:oºàÄEé’†2áËû*›ªß^e¯³»–Õ8vS±9» jOºîʽ?ðyØþ˜ðäØÀ·gÃ/v½˜ø:uþÝîòs³ ÑŸ;}=ÿMù{ÕÊÖO…_ΫŽk¶ë èÑÍÓ[–Ûû„äð€E`‘|HÈF¼ß ÆÁOˆRƒ\ 8(j‡Þ´°2¼ ΀oÁŸP”*u !y®ýè茆ˆ)¼ÄrcݱyØ—8œ®·D£Ksœæ9­$m"í ,Ý ºEú]ô½xmüU†BFnÆ<&^¦f)æë,Æ,ì¡l0[»6û(G'/g—7 ÷5/^ ïu>?ÿ#A]ÁB7 ±Â«"·E‰9ˆsˆKTHR¤Œ¥Y¥ßËtÈž—‹–wRPUäRÜPšVîT)TMV#ª[k¨iŠjqhÓë`t!= à Œ0F«Æ‹&3¦¯Ìž™÷Zt[vXµY·íè°¹o;h7µó»ÞQÔI×ٹŜv»æ>ì±ê%ºËÞû OãîY_â¿BÒ‹–@Û cÁÝ!ˆ·"ZÈ«‘†QÇ)Ã1b±ñq jû ÷c“(ÉS=HÑOm9ª™ÖzÜðÄ£ ÌYÇNkœùx¶â\Èyõ tù³…;JK¯–_©¨­jªéºú¤îùµ±Æ‘›®µœlóm—íX¼]×|×òþ®ž¨ÞôÇ—ŸÜ\Æ<çy)7®6¡=©ýVàfféÃä\ÿ|Û§â/ KæËð·êƒ~­V¯Óo6¯oû4H¾IYû¶HN,É!Ý“Yõ;¡¨º -ÀœHv'®†§P¨]¨"ÔZ‰¾…¡Á¸cª0›Hf¥'ˆ;ûENóYßCtvt½ôvôÃx_ü†FÆLÎL+ÌE,V,k¬ láì²ìŸ9š8S¹œ¹¥y`ž7¼=|üeÏ Gî!W¯ŽŠÍ‹ÿ’¤—"HkÊ8ËFÉ•oU˜VbU¶Q9£:¬Î©áªyFë±ZW_/^ÿºÁ’‘©qÉ37ófK«ýÖã6z¶ùv¿ìÝ^8:¯ºžq—ðhñ2ßõÈÇrw§¯"±DçŸð-("øchHØÇˆpòçȨ¨oÑñ1«qÉ <ûîîJ90rèXŠfêôÑôc²Ç{Ò÷d|=™rŠûtC¶íÙ¹sÇÏKæõäbŠJ‹ K^–Æ”3^®¬4®š¨I¾*X{§Þ¿¶ñÚ ·›Íå­6m_Û/tÝþÐuê®À½œL='{™ë|R5 ò´ó™Õг·ç££nc¯ÌÆoL¿9:¹ðÖkztfÏûÙYòÜì¼ÓBý§Å/„E½%ӯ˄åOßÚ¾SVxWº¼ÿþséW̯—«F«k kÑkÖ™ÖÝ×KÖg7”7ömto,m lZoÆn–lömþÜÛrØÚ¿U¹5Dõt ª õôÞI?Nlm-K€Ë`ãÌÖÖZéÖÖFlŒp'ü¯ÿ]¨ÌXäŒ)\¦¢GÂÔÏ¿=ÿÄÑËj endstream endobj 13 0 obj 6166 endobj 9 0 obj [ /ICCBased 12 0 R ] endobj 3 0 obj << /Type /Pages /MediaBox [0 0 828 90] /Count 1 /Kids [ 2 0 R ] >> endobj 14 0 obj << /Type /Catalog /Pages 3 0 R /Version /1.4 >> endobj 15 0 obj (Mac OS X 10.7.3 Quartz PDFContext) endobj 16 0 obj (D:20120402181914Z00'00') endobj 1 0 obj << /Producer 15 0 R /CreationDate 16 0 R /ModDate 16 0 R >> endobj xref 0 17 0000000000 65535 f 0000027034 00000 n 0000000168 00000 n 0000026794 00000 n 0000000022 00000 n 0000000150 00000 n 0000000271 00000 n 0000000360 00000 n 0000019888 00000 n 0000026758 00000 n 0000019909 00000 n 0000020448 00000 n 0000020468 00000 n 0000026737 00000 n 0000026876 00000 n 0000026940 00000 n 0000026992 00000 n trailer << /Size 17 /Root 14 0 R /Info 1 0 R /ID [ <1e89e0ffc98a053302fb815f92f6ad32> <1e89e0ffc98a053302fb815f92f6ad32> ] >> startxref 27109 %%EOF pymc-2.2+ds/docs/_images/write_csv.png000066400000000000000000000643131204033704200200000ustar00rootroot00000000000000‰PNG  IHDR<ZòÑÄcüiCCPICC ProfileX…•Y 8UQ×ÞçÜ×<Ï×<Ïó‰`6*¢ ‚Ë6pàoܼ}ãÞMgG€'HÔ@èg:1–ˆÈa €e¡øSV"‚õÉA$?x|ÙððÝ8Á’¾ÿ$'ðÉôý+“D ü‹Ïe³àMƒ£"ÂH{þŸæø¿KxXÌŸ1Jˆ u²FžˆÝâÉ$3's!83ÈßÊf‹^mì¸Eo ޶rÞ°‚‡‚b,]¶ðTL¨‹‚ù¼ºÛzƒ±ÌEñÝn‡`‹’£L<˄ՂœÝ¶xlüüMÍŒDìNÝíø‡?(*Öé=!!ÈdûþÒ¶ 3 8DÝœ ¢œëf±1®0‚/GDÛ;oÕG Û¾5ø]ÕÜq /ùGmÎws¬è gËßòQLÑHü–‰â 6·ú­J1ˆjù‡n¶ÓH_”35Æqâð§¸lÉD¥ù‘L­ÛUÌ P?ð° ˆÀ˜Ó­–ˆÐ)HK»AR©DÆ?o0ï1˜·˜§˜1ÌÈ_n“?| ø!Ï?tò?Ñ@ø„HõQFCó õÑ:h¤5Dª2Z­õç]ßlÓì_­~ëˆô•Û¢oiûÏÚï N¦þKß¿=þ]'sðnSê‡â%ÅiÅ•?ýÿ1c¬Ök‰5ÇJ¡Ž¢®¢ºQ¨Tª Q7Qͨ^Tûþ—QH[V¡nÎ×ÑÄlþ¢üGbþrlQ¤Ô€ã&(ò.øï®›Zÿ›”¤ú"’BwÖçøÇÒâˆuÕÐÆh=ÄΈÑh ‡VE,n„6@| †PMþµ×V+6m»9—PðÁáÑþñÑn²;b580(šh„ì–þ²D+ Y^–¨¬¨¤ 6öÞßK{ÁqsO…8úÿAóU@sÙZzÿA _ ö²ÜýM¼ Yêû¸T@Ž¡Æþ¦¡7  ŒHôs#;‡DôTê@3° Øgàv"Ö áˆÆq © œg@(¥ Ô€ÐÚ@'¸‚Çà)x ÆÀ$˜s`,C„ƒè!Vˆ„Ä HÒ„ô!3Èr„< (¢@1P"”¥CYPtª‚ꡨê hš†¾BK0 &Àl0?,+Àš°l ;ÃÞp  'À‡àL8./Ãp'ü~ Á3ðw@Ñ¡8PB(9”&Êe‡òD ¨¨}¨4TªU‹jEbq5†šEýBcѬh"Zñ¤%ÚMFG¢÷¡3ÐyèJt#úz=ŽžC¯aè1|Œ6Æ ãŽ ÄÄaR19˜rÌuÌ]d=Ob±X,V«D»6»›-ÄÖaoa°Øï8Ž'ƒÓÃÙáH¸h\*îî2î&î n÷O‡Ä+ãÍñžx >Ÿƒ¯ÆwàŸà?à—i˜hÄh´iìhühöМ )£i¥é§™¤Y¦e¦• Õ£u¦ ¡=H›K[K{—v”vŽŽN˜N‹Î.˜î].ݺûtãt¿,i‚ Á‹CÈ$TnF ôôôâô†ôžôÑô™ôUô·é_Óÿd`eg°bðcØÏÏÐÈð„á3# ££ãNÆÆÆ«ŒýŒ³L4LâL&L$¦}LùL-LÏ™¾3³2+1Û1‡3g0W3÷0O±àXÄYÌXüX±”²Üf™`E±Š°š°’YSXËXï²N²aÙ$جØBØÒÙjØúØæØYØUÙ]ÙãÙóÙÛÙÇ8PâVa'88žq,qòsqúsã¬å|Âùƒ‹—ËËŸ+«Žë)×7‘ÛŒ;”ûw÷+44OÏyž»<³¼l¼:¼dÞ4ÞÞ|0Ÿ4Ÿ#ß^¾R¾^¾ïüüüüçøoóÏ p „d tL ² ê  f ÞüHd'ȹÄ;Ä9!>!K¡¡ B}BËÂÂ.ÂÉÂu¯DhE4ED²EºDæDEmEE/‰¾£Ó ;+Ö-öC\BÜMüˆx“ø”—„•D‚Ä%‰QIzIÉHÉÉ!)¬”¦T¨T¡ÔciXZM:H:_º_–Q— –)”ÅÈjÉRdKdŸËäŒäbå.ÉËsÈÛÈ'Ë7ÉVUðT8¥Ð­°¦¨¦¦X¦øR‰Ei›R²R«ÒWeie²r¾ò ½Š¹Ê~•f•yUUÕóªÃj¬j¶jGÔºÔVÕ5Ô©êµêÓ¢>Ï5Ù4í534ïka´ŒµökµiýÒV׎ÖnÐþ¢#§ªS­3¥+¡ë¯[¦;¡'¬GÒ» 7¦OÔ÷Ñ/Ö32 ”¼51ô3,7ü`$ebtÙè³±¢1Õøºñm“$“[¦(S Ó4Ó>33³<³×æÂææ—Ìç,Ô,öZܲÄXZ[ž²|nÅoE¶ª²šÛ¦±-iÛk‚µ“užõ[iªM«-l»Íö´íèv±í”íMvÀÎÊî´Ý+{ ûHûX{‡|‡÷ŽJމŽÝN¬N»œªO8¿t‘t‰qéretõr­rýáfê–å6æ®àžäþЃÇ#Ø£ÙçéêYîù}‡ÙŽ3;&½Ô¼R½žyKxÇ{÷ìäÙ¶³}ã.Ò®«>7ŸjŸ’©„ôÝ×Ê·ÀwŽlB>Kžñ3ôËö›ö×óÏòÿ 0¨x:p:È ('h6Ø$8/x>Ä2¤(äG¨]hEèz˜[X]8>Ü'¼…ÂB ¥ÜÙ-°;~÷@„LDjÄX¤vä™È9ª5µ< ŠòŽjŽfC.¹½1’1‡cÆcõcócƹÆ]gާÄ÷î‘Þslχó„‹{Ñ{É{»…&Ž'%]ØíóÝ×µ_dÿ¡ý“,T¤=zðQ²brVò··”ÖCü‡š8lqøR*C*5õù#EGÑGƒöS9vîØZš_ÚƒtÅôœô• rƃãJÇs¯gdöP?qþ$ö$åä³S§*³˜³²&NÛžnÌ&f§e;³ëLOŽjNÑYÚ³1gÇrmr›Ï‰ž;yn%/(ïi¾q~]_Á±‚…~…OΞ¯-â/J/Z*.¾`q¡±D¼$§[[ú¾Ìµ¬û¢æÅªržòôòÕ JÅX¥cå*ªªj¾ê—àK1—¦/{]~\cZÓ\+W{¡Ž£.ý ¸såc½Oý³놮«šWk¯‰]+¸Îz=­jÜÓ8×Ô4ÖìÑ<в­¥«U§õú ùmBmùíìí':h;u¬ßL¸ùýVÄ­ÙÎÀΉ®]]/o»ßºãp§ï®õÝû÷ÌïÝî6ê¾y_ï~[vOËÍMÕ6öªõ^¤öèzŸz_c¿Fóc­Ç­ºO žtšÞ²zøtûÓg.φŸ{=öž ™ûbùåQÌhÚ+¦W9¯ù^—¼‘zS7¦>Ö>n:ÞûÖéíË òÄÌ»¨w+“‡ÞÓ¿Ïù ø¡jJyªmÚ|úñÇ'g"f–gS?1*ø,ùùÚÃ/½sîs“óÔùõ¯ Ü ßT¿u}·ÿþz1|qùGÚO¿4u/¹-}XŽ[Á­ä®J­¶®Y¯®‡¯¯G¨¤Í« ©p@_+¼ÅÖÇÐ2üζ ¹|ÀÈÓ’‡fàC(eÔºCBκ9\3>ƒ&Ö€ŽÀDÏÂÀÄÈÆÄÇ,Ä"êÍfËîËÏyš«–»—gŠ÷;ߪ^‹(&¤(¬/b'ê#%~T¢P²Aê‘ F–$ס@TÜ«4¤"­§Ö¥Õ4ÑŠÖ.ÕéÕý¢OkÀlÈnÄeÌmÂcÊiÆfÎh·X·üf5³íõ Í=Û¦í•vyöÇRœ¢#]¢\ãÜö¹õÈö,ÙQãUë]½³|W©ÏR‘o1ù‚_™U@]`KÐíàþסóáX Ïn™íHKªKÔÎhÿ˜°ØÈ¸Øø={’ì-LlMÜ÷qÿÚA†dÞñCò‡ÕRµè5>f‘æNÍ(8Þ“ùó¤Ô)¯¬ã§;²gs8Îêäz‹Ï;™_ZÐXøàü«¢ù èŽRÉ2­‹Våî•1UÉÕ™—ò/_¬©¯½Y×e¬~á*öïuÅF³&æð–­Y7.´oîð¸©wK°t¾íº}»üNú]ê=ïîm÷µ{zf”=tëÅöÖ=r~ô³/¯ß òñ鳕'7“‡ìž >ýü¬ýyڰˈàÈÔ‹š—‘£*£ß^5¼Žx£üfu¬o¼èmÄ„á;æwo'ëßü`?%8õiúÆÇc3γܳ#ŸÎ~öü"òå×܇ùù©o'e~2.9¬Ì®¯oú_ºÛÀs¨´9ú;¦ë‹ÅMáki¢ièÄÌ„%ú†—Œ™î2w°4±6³µ±·ströp pwó´ó6òÕó_¨,'ž:-|R¤T´[쳇¤¡T˜tžÌ}ÙEyq'Å}JÕÊ*‹j\êšvš$­m²Ž‡®­ž‘¾ª˜!›lôÅø¥É=Ó+fyæ‡,Â,­Ô·ñZë6}¶×·Ù³u ;::;+»ˆºr¸áÝ–Ý?y¼ñØqÇ« ‰†¢]Ù>i¤¾±dŠÅŸêF ßIñÜíáiGµòˆ@®ÌIq©ñ™{²Îí-H,L*ÚW¼¿ø@ñÁÒ䯔¾CS©˜#ÂH<ÓRÒK3:¿Îüq’á”H–Æi›lß3ñ9'Ζ嶞ëÏ›ÈÿQHsž§H¦Xû‚E‰kiPÙ¾‹Ùå5÷+ßUƒKü—ujÜj©uW.Ö·5<¾úêÚôõïMP3} w«Ø Å6­vãŽm7ío¹tzví¸í|Çê®î=¹nÞû¸ûs=Ï´<ÌïM|äÕ§ÓÏÓÿóñ³kONF¹?5|&÷\p˜k„ó…ÀKéQÝWN¯}ßxŽYŒ«¾š`˜X{÷yrüýóýS§{>öÌ<šüôñ 4Ç9/ûÕtÁç[Ê÷úÅ™Ÿº¿Š—¹Vª×l6ý/î@ÖÐ0÷PV¨§hô7L*VÛ„sÂ-à+h¼iYiÓeé‰ôs /3e3d‰f eóf×ãàâX@"¡˜;–ÇšWˆ÷ß#þ2$A7¢Š“Ðá‘£¢Îbübcâ%dI1É÷RUÒ»e4eѲryò$I…YÅz¥Xemå5•NÕCjêxõéš¶Z4Z÷´St uVt›õ¢õõ?\4ô1â12Î4±2Y3½jb.h>hqÄRÇò“UÑ6kȺÁÆ×–Ùöîö$;m»öרÈýá‹S­3ÅEÎå“k[¸»¬û”G‰§Ç¶^'½vrï|»«Ög/ÉÚ—Ï÷3¹Ó/Ëß+@$`&ðjPb°YSÈhhuXB¸-E˜òk÷“ˆŠÈª u1ª%:)Æ$–;WŸ¸Ç-Ac/o"*ñsÒȾÛûkœ=x094ÅõÑaùTþ#ôGÖŽÎ{Ÿö<½#ãÂñ”Lÿ–'åN±žZÍúxz4ûÉ™G9ÏöçÎÍSð®pêü—¢Å  „®”»Lê¢n¹CEPåªÜê+—º/Õüªc½"WoÕx5õZùõû³ÍÌ-­©7Û:nÖÜZèÒ¹}øÎÀ=ÑîÄû/?¬$ÝWô=@zÒ9¤ü´õ9u„üòâk¯ñªÉÁ҂ȆÿÿG¶Q°êœÀ §3G‰/pÒ`O€³€·é˜-@fÏIwÌ=øzö›Ò÷ÊÅõŸò¿œ––mVäWÑ«Ãk'×-6÷`°!  €ð‰ ñ~?!vHr†b¡\¨ z ÓÀJð8¾BQ®¨ Ô]4„6DïE_CÏbÄ1$L!æ– ë†ÍžÀñã|qU¸y¼þ(þMÍ­ í1Ú9ºt=-Âezaú.†\FÆb&I¦«ÌFÌC,!¬0k!›Û0{<G;§/žë ·'†ç*/™ï²€ŽÀÁëÄ!u¡%á›"GDíÅØÅFÅË%¨’FR,Rï¥ÛeÎÊFÉ9Ê«(p*¬*N(u(¨$©’Ô¬ÔU5D4Ùµè´1:.Ѓõqô†Ã%£9ãI“—¦OÌzÌ»,Ú-[­Z·µ[ßµ°ßþÝžà â¨ãä‚ÜbNº^qr_òÙaçµß»aç”0i—où¹?s€Mà‘ ®àUÄÛñáÍ”¥ƒÈ£Ô¡hј¸ØþxÕ={±‰Ô¤ñýŽî%ë¥4ÖHm9jpìAº{ÆÇÌ#'ÕO}<]~&ø¬Ú9Ú¼©‚þóíÅ %—Ë.•×T6Vw^~TûìÊHÃÓk÷¯4oõi“iŸ»YÛtÛâîŽîÈž´‡Ý옆‡~ £|ŽˆŒü½›ϽçöÞÈ$á}OIÖH™8œvDæhwÚ®ô¯Ç“Op¬Ï²9=}æèY‰Üî¼€LaI‘Añ‹’è2†‹F•¯«“. Ôܪó«§i¸rÍõújSY‹uë×¶s†7?tž¸Í'ûc÷ñÆgzUö+?îxb9øä©ë³áaבþ—¦£×^ ½9<6ûÖsbxr×û©)ÊôÔŒãlݧ¹/Ä9Ýy“¯ê Ä…OßZ¿Sy»~~¼ÿösþWô¯K†KåËôËQË÷VWÜVŠW¦V•V÷¬v­Î¯ñ¯Y­Å¬¯õ®ý\]·_ß»^±>¸áÿ¨åÍã"€y½¾¾ . €ÕSëëË%ëë«¥H²1 À­°ßß]6ÏäŒ)XØ@„òÿíûÇÿÄÑËj£Œƒi pHYs  šœ IDATxœì½tç/üQ*a *ƒÁÄ 4b’CÚ2Þ ›cÒæ×˜67Ùôf8-iºaèB»+²ys³Û†WyN®è–ìîM&'›ɽ+ös»+vE7uÞ6²ïŠÞT>É8dD¬b‡ÊmeâQÃF9ÏûÇèÇhfdI`‚ÍÏ?¶FÏ|ŸïçûkžyžÑ<6B,X°`Á‚ ,Ìn\s¥°`Á‚ ,X°PÖ Í‚ ,X°`aÀ´Y°`Á‚ ,ÌXƒ6 ,X°`Á‚…9kÐfÁ‚ ,X°0` Ú,X°`Á‚ æ¬A› ,X°`Á€5h³`Á‚ ,X˜°m,X°`Á‚ sÖ Í‚ ,X°`aÀ´Y°`Á‚ ,ÌXƒ6 ,X°`Á‚…9kÐfÁ‚ ,X°0`¯Û" zX°`Á‚ ,\­¸å–[.]HýAÛLõ4ÛÇ-^s¯¹‹×ÜÂÕÊ W/5‹×ÜÂLÍYË£,X°`Á‚ sÖ Í‚ ,X°`a ¡åQ…lò—ïL(P8,ýÒúµmMœ=yëCÇ­w¬uÆG~ù!>Ûºsh69<ðÆð™–e·ÓÿyÝ 7 Ù‘_ÿHQ8-ûƒukÜuEÌ>Lï¯"e´ÿ§»¾vÇš¥•Ó4Ü þÓݳ*’³Éá”›»×´]é¹ÉØÉÓŽ%7¬Y± Ùñ”¤~ÓÚ±¢Í Ÿ~ëÜu_Z·¢¨@rðÈ™5÷t/s–e²É_~€Ûº;U³eÃ8nî^a\}«ž—Ú¬S[HÿR¹ù¶53fú\2vrʱä kV8 09ž:p´v,ks^>^¦˜LÄ~uÎqãÖ,uVÏMŒg”¢Z+–]_Nèx²“)©h掘Ӟ;«a–ÉØ‰3ÊÂ/¬ëœ‹åŸÿ]¹Ò©‰pÕ¸l2;=å¸A Å|vüwRù«’˜zvŽƒÔÉ'Ô$Ðëóù|^ͧëž|1Èð4‘.‹h-ʼÊx@ .?Ë"€â3—]—™„‘W*ìà ûx€€˜!R”˜^¯Ïëe(l$­\mGSþ õðúû‚OŸX9MÃÝëõözùQ™\A˜ðâ_ôrô%)€fYŒ_ „Ä,@3 CSL_\"DðRT¯Õ7*BdÑxt&’À•ó¢¨pÙ°>Ÿ‡F=^ø¢3”[rÜ €fL Cˆ`†¡)o_ü²ò2@ ûh€b `"ZвX47C3½ÁË_äšÀEñ’L‰í¯hMƒ¨!`0 uù®t—Šú¼dÑPEÓ4 fßpYþ’B½T)áYA"’ ŠL)Tƒg¯‰ÃFÐÌ MäAù‹^ÎD(PQÕŠ,ë®øJñ€ñY’KMäê3Ê-%žf¢²Ù7ÕÂ/F Š勨ÓaÐ~©¬Huˆë?+erW^Ê€½ŲñÞ‘´P´c†§ÞY>jkÆ_£ 74¦ÏD|;Z¦WŽ •È*ÿ§È†ža˜F)N0*ט&ÆœÓHæ(x#„Iàï!/͉ÚöŽbBFý¬7"g€à˜^ $ò_®E…«ƒª/ÉOʵÕ$Íu¦É.Ià_†"G) ”RÒa/ÍiFê—“WQ½r5ŽõÉâ-ÂÅÏÎD»(^iÓTšU¨O͘é0@G%BHœÕÞÎ&4«„´ð‹ÒœpY}^R”ÂBˆÄSè«4Ê„V;5”¸+†™´]ì3mmKW@îõç¶Ú.—öõÅÁ<ò‡wölÝ¹Ãæèþådò¹­]—ËaëzqpÈÚÑÓÕÓåjuÙ¶îyñ©­—ËfÛ1œ;²g“Úrÿðé#;™'†BºwÄrÈ%Žl²9\.G׎ý“ZṋԺ$Pž^ì>+ȽöâaÏœ8²Çæp¹\¶û‡ @>ùúV›ÍårÙl[ÇóùÄþ®®ž.‡«ÕeÛy(vy”»x\ß&ó·í#¼F=®Èêß¶í{9¼ ^&£^FÔðW>qôôö>°BmÕvÇ#¡c/TŸ«ý˜OììêÙ¹³ÇáâþIc‰#ÏÙ.—˱iÏ‘,8¼³gëΛmÏpöÓbXDµ&¹ý›ºöÅr@nÿ¦®§^ptϦ=G'«óŨpN|]ô1Àý…Û×~›Ë½ÅÂIáèàpr2_ìL<õq­×·Ë¿;ydÇ-¡±Íõžp˜«¿ t^Õ)¶¿§kSÍár96íy=ÄöïìÚ¤ò°í9’€\â¹M6W«ËÖµsx²`tDê­7)îþ6Îõ»h¼{:wúø‰å×N=:’œ¼ì¼²#OuÙ\.WÏÖ;6íÉa9Ãßµ€s}uª¸¹SÇAµ ÃGŽ$ó&‚fêòÊÿJ@ÇGâðàÑØäࣞš>r§ßý.7€Õz¨ô9ùJkÜ .S‘<ü»=¡kÝsÕeÕ¼~ùÁ1‘â¿ÜÀ}û¼ þ¶Ô®pøñžÐ×VÖ@ÍJÜ\GãÃCIô´ã8ŽóÐåMGz{û2„Èc!€ŠJ’Ÿhn4#§#¼7 BÆz.C$ž‚/’"$Þà(!$âíGûXx‚B2ñ>€+iŽfÂi…(qè‹gÉ=`o—…ÏÈpÕt&€öGB½ðF2$3øDÁð™ÑЗE=@`4á½!Cˆ<Ð ø¢’À¾1E€d®ìœ³Ép^õ÷2ÊÃÇäâlS´<¥ û8+Ѹ¿&D”¿&Y`P4MÓ4ÊÓ'ÉÐ\8#gË1&VÈB2꼂èg:<š™Ù»¶º3mFMFûx£D(lˆ1èHZ—/& Ç ÿX&#{ZÈÄ=ãå|/ÔusB¢]w¦§À Iä^Q"„¤y lߨÈÓð%B”t”úF³} <Á¸B”xЦï-/9îØÈX&%ôà…‰ 0Þ@€§6 ^N^r ¶O$„¤£~hòh,ÌTXóàÁhŸ`ø@ÀKl`V=wq¼äÑ>^>À{iu•jv¢>5C"HÏ”bUäiš7Ì|Ï4ê²L„*ý?'\Ö€¿DðGÆ2)Á ”½“‰øô3)&%îJa¦fÚšz ø<Ðõ•ûî[¤(_½oôo×vº ã·.>¸}Ó@‡[V9€ógÁþ¼³Í™ïìvôm w¸S¯€öÛQÀæž[—¹…:o¼À¢ëè³SçÎLåp2ôø¦—sîå,3" 'àpÚ éDPø«íÿ=…åËÙŽôoËÂgnȪÇÙóKé<óWÌÆÚÿÿÜ´ð?Lžü8õW[7§à^Î²ÒøÙÎî/ômwt¤^Í;€<Íݿ¸,tNfÑÓŽ¹Ø»çþäùþÏrÙÔЫÛWvŸ•†oÕ¶(¤C¸÷æ9ø´­©¿ b:_ž)Œ?÷ƒ~`ï“kJN‘@Gþ×ÏîhC¡ØíöüˆúoïisæÊ16ùÎ4·s]€¶oïá·¿ôÁî/J÷·=ŸöÃã¹q½&ýý8µågGïlÙÀ7 ýM”ùS^ù౪|™Pœz…×l;™÷Ooß~CÏ—i¼«ØWó²âtÚܳìÜòþ¶­íî~ü@(›ÍgŽ~uu0®l<¼þî;߸żÝþÒp÷3ÝeQçîÁ'Û »Ý>ò\Ïö¼jXlºû«ë@ùê1P9 gyöÊÑL)ò4·u­ÀÒ?æzÿÇ[g”–VnÇ×Ý–v?ÝKýï3Ê!œtÿÕæ—sîån¶ãÌïd=/çšc÷žÞŽ¾ì¥‘Wœ_U&N'€m÷,³-xqÛÚËÆëwÿ1ÄìüÙZK»¿ÅQdcO}“ÚÛêÒº¥•»â¼BœvÛè³¶Ž¿¼íŽÙ›t ðjû†\â³ò´íµ/®ëž?­0P3$Â7ïχ’iµõ¹)t}åº+©o£0s0üêcàÝnp®˜‹.3úkí±È ?zz;nV}õÎÝœ Uñ1+qW€ÁŒ¢™åQ V}yíÚuëÖ­[ÛéÆú£-Â]‡ûüý÷åßnül×ᮿë?°ï‡½½8«®„à‚—E ª<À±ðZP¶úûÏÞìþܲÅöüYéã|Á~íͰ…;<8Øÿìƒ7/ùÜueá—ùsî5›½·lØ.>ù­5ösç´Ýt3°žëïìõÁæ·/ûø¿nØr×ßýøÀ¾¿ïíÅYõÄóÊ´r¯$†6P´o¸»»mÅþáˆSª/ä (²ãGÿ¯Õ[hÿWgîšÀÌ_Ÿ¥î÷`÷_ì)@aäàÓ»^8¿D7Œ.”B©PŒ¨ÊÏIQà^vóЮ}±€ì¿=÷sÛÍŸç?.…B¡/¸Œš´}y»ûÎûv}mó×ïï9µñÎG¶üåלú|Yf”œ8´ûà…ûô÷ûîÿÜ6ÜPøe·kóH@î퟿B_;_mæn“Ÿ_Í|Oxy]:%R+—º—^¿D¾ ætv»€£b[šºuÝÚuëÖ­[cì}a;%>ѯ® æÇÿ×Ë"n¹Î ‡sh×D@ö5ÿ «::œÒ®}ÿž ¼ ÞÐþù/1ذëìõÙçÏ_Öj(ZùÄ¡'‚?пÏ÷Àé!P7^t¹öd$ßü9¨…öËÈ«ã.&ôü¿$dc¡]¢4¯Ü¹˜r=9JúŸYWüÕr>‹Mä Âßtß³o@>ùÖ+XµÀlýuÖ >¯¬ð7®{öeäC±pþlú öt0PûHŸ®%7â•ç†s@!ñÒî¡®e‹¯´ÎÀÀ @!ñÒ.qK©-æ¦Ë ¼ò±ÝÛÿm Ÿ÷s'†º¨ä“»àe×oƒò“ÉXbYó7§ÑÌ ÍGZE,¿í!&´Åa³­ßd0ä;t¢uIñ«?ôð¡-«m6ÛöàˆOŠý¾|VË8aWå-qbͶ—¿wb£Ãf³9Vÿzãýkœnj3î»v󈼆‹|ï¾å›Í¶šù5s_gYøe‚ª°ìý ˜]w·¡€jqv²þƒå6›ÍæbÎÞöµ57³³eµËf[µü5.úø:7°â»ù·tuQ}¾skõ¨žªúT+µo^:~1èZí²Ùl6×ÊûWØ`ð¡V›Í¶x»ÛÿêÃkÐÒŠèžV›ÍÖº|t[ç¢o½9½q¹Ífs­~æ¶­w-2ðr®ùÚ&p.›Í渥=¿wéÒíBàåõ‹m6Ûêøžû2òr~ëåpnË-6›m1ûÿËÏãàð®oØl6›ÍñâHùß ¨ƒ'sݺ^^o³Ù\«ôG^^7‹æã¨Ï«­û‘¾®—Ûl6×-gü‘G×ÎÞiÃjè©a‘>ì+6Gý7mhµÙ·ä¸0»fV»ª/ò¹˜Ï-.Îæ¦Ë ¼œk·~çå²ÙlnUÐwï2ÊÔP+Ê|NþÏoP·ÎÕ(qs—¼[ú•—ÙoHk}c„,K5ÉÒåùMfÓ ÌÕ*–I™ýTçJ¢/E–2³á×­‹‹x @’2™Ì¥=µ¡ÔŒË™B£¼Õ¤~¾ÈRµ$½d%“N뾿L‡™LY¢$pêÃCR)Žá‰ý¯ee©ŽŠ1íÇËÉKíKò7ðº"yVüÊ\‹æ¥È³­êÑ(5CŠ)µ/K³W«ËšðWƒ™tùËx#¸"Ï´™ÂîtVýmä#œÎZC~§{–Ü T«X&ål€Ýl€Ýé¾Þ+Ø ÜîK^òµ;ݳd¡QMê狾…^²½méRÝ÷tÜ qèT§ïÝåóì³ÏNßâÌ™3K—.PÈ&Þ'Ÿk_ðièuùQæ¥C~2)?ùûk¶»[ª¾ÈMÆÞ{?{ÁÞ¾¨hüDR81öIKÛ¢ê*s.{o,{¡­}Qñódò½÷Sì K 0‘Œ8™niï(ÈOŒ'Î|ÒÒ¡Ê,dÇO§§¦¦¦¦¦ˆs‘Ë —9vò7çÛ¯/¾igr1þÛÌÔÔÔÔÔ9²È];™H\XÔ¢v‰W~b<¥6Ÿšš:Gœn—Ý(³i^ùɘp<õûk®ow›¶,d'O§Ï¨}:¹ífÄ þÒË€Âdì½3KTãè L$FN|8µ ­Ýeמ‘|cQËEù«*$²ãií9òã©tés9Š’±í-‰ï§¦^ßÞRr¹Nm½¿ª‚¿†¿‹CÃmÑb—ñ%¹Ú8,LŽŸ>SÕtq˜›H;ñá' ÚJ$ ¼Ùd,íX²¨å¹‰ä±c'ÏÏo_¼ÀŽZåPC§ÓðÒ‘IÆÄ“©s ¯_\¥ŒÎ_n—±¥¡nxå&FŽ˜údAû"`Z7¦%žÏƒäbòK<žšªÎ…ª0Ó›®naQiktqhèTWI™(õЭ¾:Uq73¯1Ò&“±ã'5•\W[t>-4á2ƒ¶ÂÆòUÝÒŠÚ3㥢iÕjÛr)M¸—=¢K1]™½äÒaråEuÕ5¸ÞàÐ*[é+ž#Ÿ6òªŠ —Žzhüå"RÔoÄØ@à.:«¶Ñk¦/M‘ÄšepÑtù¸<¤še0~’ s–ÀGÓDŽ{Ëg2 !£A/–¥ø… !JØG´‡à‰ËDI…i€bY  ù(!$`šašbúâ!)Ž*Ÿ” ‰ò @y<4@‡SJ±Å0@óéæyBˆ’ y_Tý¤çE!J<ä8ÕÇé(€õ°|ᔑ8‘Å" †fzƒÅíïâ!€*½7¨š—,zŠ¢hš_ÔDf³¼$À°@sQ³–r€)iI{EÙH\ï/£LT㪄}*O `5)’ö(IhÒ_ºú<”j; ¸Å…Ê_©×tÄPQ‰’ö3Ų4@q)µõþÒ¿Ñ_ Ç!!DÉĽÅ´_hãPŽ0 ÃД·/®¶ÐÆa*ìÀz˜R~éy•Œ.ÛAu±ÇÃè•MUëPc§ÓðªF&À¨2!„ü•1´4Ô £¿(€öx(€õ ĤnÔ!.™Isq˜‰2Ū{P‡Ë¯ÀÒ„™Ñ_u !ú ººaèÔPõI=Ë/õD´fÕIËÝļ†H,–¡:’1©-:Ÿ6î2½¶Â&嫺¥>u)fª!U‘¦S[ x4g üÞ8MŠÊì%—Cµ,W]½ëÕÙÊPñŒ¼ Å™zO[3ƒ6£KvѾ/WலÙx½7éV¾Wªßï§?Ñ H™Ù·ìšZ0âÅE !£},˜¾rG©VIàï‘üØà()nÂÝ7)p€/C‘£JeyÀIBžFï‘¢ÎB$àfD? 6HQâ€Ë$â¥9±BZÒÈ‘$ðÇBHÈo8-‰<à%„("âr³¼äxŸ:v/•'=/Y‰³¥RÉL NI…<ðF$=q…dÂÅk|'÷•D¨ûx•[¦}€_”Ld6É+ö¼Dˆ2ظbl™ö4ÆÖ7øË(“" ~Õ8BôÍ 0&„È·µËár9l]/Ž'?µ~Wh׆Û÷Çr¹Ä‘M6‡ËåèÚ±Òx^b—­§Ëár9ºžzQ•aÛ±o€þÄê.íèêêér´¶ººvÎ6­qãȾ³>Рón§Î”¶®É‰¯‹>渿p;ðÚosÅnߨ `åúœÊ¿õ&ÅÝßÀ¹~wGß½ùÖ¥¾pû½xA<}rX¤ýr2–H?ýAWp“ÏsûjŠBêrïD±pR8:8œœÌ8ù‹×ÿ=òx"‘jMÝêhª2¿ P€ÆÇv°ßÔCAª¹ÕN-^°wt‡ÂAžU÷îô¼{Çcáp8ÄQÒùâ&ÎUó@¾ JJGüt.wê8¨VaøèÑuŸI{÷cáp8È–ö@3áHþ‹ÝžÐ޵n£Ìfy~û5Ú°wÒ½HMɆ–ù_ èøH<›Ì›Ïüe ’ß_ÿò@<ÂJêîº:‡Îÿž/ؽ@@‹ ÉCëY+FùŠÁ›áUËt…ä¡;÷öðÛÊ›´?¾ÑúáZ'€ÂáG×!,ø\à@+Ú(æP0¨­ó—YðWû«á8DG÷cá0ÏRùê&Æ8<}üÄòk'‡INª-tq¸’ãv|e€sù%T‹ÃŒ’‡}d}8êg§ ª,Ó)%b‰ö‡GS?è2ªÁ¡Æào ¹ÓoƒþN—Àê=Túœ¬kPö—¾eö}]ÝÈxÍ_ù½¾ÇºÈçò œvCݨK¼¬…&HLQ3'ZçÉ@^ŠqRfFÓÕ+,†Ð× “NuõИÔ5ÑD©×­Yuªæn0¯>Òr¿: æ¾.7`¿û»žSés†ÚbâÓÆ\V3ÅŒåK×Ò´ú3Ó¡*ÒÌB ÉÇ7î ½Ìº¡O±œÉe±9^ú°Éé3H_uõ®×_»OçLJ=T²åŠgàuñ¡Ø<êët3méï „±^õ>/êc|‘´zkÕÏ’ z NÆh! ¼:½Ÿ‰r€'®¨C{FÌéOÔw! 4¨”BHÚ øÍn[/fÃÞ O³QU¼,Ð`„RWñÆ?–ÉÁ^€JCmy,̾pJŽû62–I }xa"@ƒñG2R*Ø Pþ Ñ€b½¾^`+w òϾ0Qâ€ñò¾@@̈~@ñ &!DàË;#RáÊ–ûAuË7C.i¹ò´íµ/®ë†–xndJ篿­–¹&÷¯÷ùC‘Câ©¡7xó’Ï-39ù¼ VŽ}f©þD“.ÎæÕ)ôóF¹3÷Ê â3‡‰Ÿ¼2Dw.F>‹Mä ‰C»^¸ï@¿ïþÏ aà îü‘‹÷¸ž”HÿæµK @>q艃àôïó=pzÔŽCOüå…M¾þþ}ßl?ƒž/]Ý v2`òظá¦%ã‡wPºFeòÌæµ(Ù_v»6däÞþù+ôµó¯[Ó#¾ÏÈžxÔŠŽE´:û|õ÷)ã‡S{ž•úŸÙ¼Ó,àÔäeh©ç¥ýªü_Ë‚ùìŽçõÄÝÂßtß³o@>ùÖ+XµÀà/=¯ëÜ($^Ú%îa‹7+cÖÚa®&¯%knzå™PÈ'v‰­+Ûô-¯þÆuϾ,€|bè Î/舻 þÒÉì¼éŽH8¼bæÍ€y :‡Úso®^¹=–`Çy ÅÑqÇîpø¡y0Ï ´ºŒ–©ËËÄtÈìÝÕ;°¹l£|r`¼ì:õ@Çîpø¡ó0oÞ|P®Ï.Àg,œïìvõwSú84ÀüÐù«á84¢Vf_t¹öd$ßü9¨…š›KuÉ=óÜê•?N”×ÍÕ½µ¼>sÇÞHø¡%cÏs,º¾ⱓY'‡løü{ÕÚº\ïPè:m®%7â•ç†s@!ñÒî¡®e‹ó“ÉXbB¥õ—¡å|]ÝX¤ç…_>»ú¡ÇP|1ú|¤«­u‰;õAR ÓÔ³hYàìN‡0 ³ŠÃTÓ5TXêA×é©§™’h¼ÔëÏÔW§U7¹ëÌ«/‰m×uá…ÐHÈÿdï®U]Ëôõ úku™µJ¢¾>o Æ«ÖÁ®´ßGj'ò’èyRëØ;ô)f,³Íò2×eÐÍúªûYëç.7&¶ª®x:^ê äbC±yÔ‹Ó.2¾h*R\S_㥱^È”¿<ÑŒþiDIà˜âo7ü ü©ÌKëNÔw 3´:+ùið‚Dfæs•騧¨ 30&Y Ô…ŒLù8ŒKÅÇN©¢ ^ $ð?öㄌ(yØ«®èFýE”§/S|~³,Â/EôÏ`ý)…’¾DoŸH‰‡|%-z…Lq±¬,bº9ØZ¼Ê®Qç–Mx©-¢%)¢KJô #q’zKÌý‘òÏø2•e/"ém 2›æUé‚ ™´$é¾’–¬?¢˜¯ö1‘©BÚ/›8”TJûâš°•ÅÊJÄEó*šŽH¼f±ƒŸCð’DöÓ¬ B¤)‘iü¥ ~ƒ¿šˆCBˆö÷æµât%}<‘T©˜hâP“_L(.xU ò,/È„tÔ’ñ„L­@-;”;ž—åàa¸°¢>Ê ¾øŠjéZꆗFm_(NLêF=âfAÒ\Jq_© ôöiËaVmº Kñ€&!UqhèTWõI}qÔŒÑN©zI‚IuÒq×›×i0ÜXu©çÂc¦>mÔe:m§)‰z^Ó„¢šbµjK9ÒLÔxšæEý š3”ÙK-Æ+¯ŠJÕ5\ 5ØJ…Òój$gjy´¡½Gõ{Jòy8öò_-ò¹Ün' ã‡ÿGè,Šï¿9%ÌŸl^1Ý"CéÄú]Ì jï•QÈåd—Ûmì4ŸËÁåžF›B>'Wµ0ˆÊçs°×Q¨j`8£ŽI.‚×E ŸÏÛ5Jˆ#ŸÏÁéžÆáXB+s&ü¥oYÈç p:›Ñ²n iä ö™õW]Ó]ºVF4K|&ö¢)äs…iƒ¨ÏªüW—W!Ÿ“5u¦@Õ¡q^…|^nÌO†–×xéÐX7Œ}èˆëpqØ|Í êë¡1©?•R_úH3†¢®Óz>½ˆk€—>õ)VuCÑD­ªŠ6#¥£ÞÅÎx-0\š-õõBq¦¶çº¨„³Õ°›øÒé.NvÜúÕû v» …‚}q¿—N¬ßÅå†Ýí6Ÿ‚vÖ8^9Sß Êé¬/¢Ú'†3.Ú$5y]til ^Ÿh#–hLÝÆý¥oYÿŠcвQ¥šè£æ™5yÕ3]²›Öªiâ3C2èhÔåeˆª0fÍ®mhip½—þ:Ú€©.Ö5ãðS°™vª¯‡Íh5ƒ¥¾> N6„¢Áé3s‡=MC±i'_„Ú3Ÿ„u/vÆkáÖ´‡/%›@C3m—¡_ ,X°`Á‚…ÿSðéÍ´ÍHO³ 35W9Û`ñš[°xÍ-X¼æ®Vj¯¹…™šÿ²6Œ·`Á‚ ,X˜°m,X°`Á‚ s3>h+$†G&§yUSard8ÑÔ«œêËœ(LÆbãEùÉØððHñ½MU˜LƆ‡G&´û6å'ÉÊÞ]¹‰äðQÝÞ&(L&cãµöz*‹IŒ×ØS#›ŒkÞy“ŸH$³åùdldx$iPªùì¸Ùâ[™&F†‡cãÕ›™MkÉqñüxldx$Q‡ŸL'& «»ÈNh´œPí™KÆFFãe‹ä&“##±¢‰Ly™Ùj2‘Иj26¢áUÈ$4Êkv —Ö˜¨0Y1¡.L‚d–C“5W /¿€ÜÄÈðpq+°*Ìm^U©Z…¹Å«m¯YÐæ 5Ý…©ú²R9<·y}ú)V÷¥ M¾\$ÃQtDªÚ]¾ R„R7gm^¦ñ¸æÕ_Mc¦^šÒ ">¨»~I`0,Ð\•‰Ä €e(€Ž¨6R2!/Ê›õ¦Â‡Ð7ZÙÝ $Ê”—z"Ã2øhZÿu: Tv4W2qoåc&À`  ù´¡$(€¢(š¦T!J*LËRÍWNc(Ï”ÇCt8¥’ö3Ų4Ô­Ïjñ’ÄšepZ^ú.¤>UÑ\FŽ{Ëg2 !£A/–¥ø…Œ‘—©­2ñ@•ßgÆë¡ÊV‰X€f†¦˜¾¸Ô8¯Ù”h–¥Š&’ã Ã04åíÓ¾¡Ê$Hf1/•¬¹Zxéý¥f"íñP€'8ªi9·yéRUÓÒ„™ÕÔTTB±fA›c.SQuaª¾¬”1·y]‘kzÐ&Ëú·æšB¸òY.0¤¨úV½ÊŠ^°,™÷¤ÈRY¯Ýç®I|š‘! ~`üBÒa¯úšMe4°ñ É´à¢!J&—ã}êÀšñ«–Ìð€7œ!„D}€·˜ ‚Ÿ…æ}•f¼$?68JŠ;ëõɺo ´Åg¼¯øVAõ#I‡QÜp-θ¬oPF& °¢LD? 6HQâ€Ëu- ñ€?®BBxÃi"Eé¢eÆ< ÂéZ¼HÄ Š‹BFûX-¯ÚF&/ÅDIà Þ<ÈQ ¥²<ठ!O£wÀÈË`+¹d‰âëd%P!© àKñÒœ¨é»a^³’Ƚ)Bˆ"Р"I‡½4gxO&1 2‹y©ÐfÍÕÁËè/£à Bä¨Ú[å¹ÍKª™ªf¼È,¦¦Bе ÚÜr™ -¯šW9Î늤XË£¹äë[»l.—ÃÖµs8ûÑþM]ûb9 ·S×S¯8ºgÓž£§öoÝy÷ð­ß5´kýŽý1dc{zl.—ËfÛúz2‡C|{S—ËåêÚy8 ÄöïìÚ´Éæp¹¶=GK<·Éæju9l›Ž$²@nÿÖÃ9$öïèêéq¸Z]¶®C±ßÙÉ<1Úн#6ËçU Éï¯y a¥óN¿ýí¿Ç Ø;é^¤¦Ê{ëå~uÌ}]nÀ~÷w=§ÒçìÝápg1¥@þT?X¦SJÄí¦~Р<´þ‘µb”/¶©ŠÝ¾±ÀÊõ=8•Ó6M~ô‘õ᨟Utt?6ó,¥îø™;ý6èït¹¬~ÐC¥Ïɺe’‡ßè ýp­ÀM>Ï]ì«) ©sX€¦Z ù  ´¢]‘Ba>p¡æÎHÙwöâѺtÞÍàÔ™²FµŒ\Hºso¿mmê­7)îþ6Îõ»h¼;úÞ èÍ·.ð…ÛïÅ biAZËKg+{÷cáp8È¥~h'yäÞ‰bá¤pt°´œÝ(¯YÇü•\ßw—È} ,™œ>~bùµ“ÃGêÖŒAre4nº¬¹:xü•ûEŸÈ3+Ʊ±ö‡GS•7.šÛ¼òc5RuŽñRQŠ5 Úœ£¦K±W¹ÎëʤXƒ¶“‡î;HõIDŸYuì©;¾µê‘ÿy…“χĽ}ïãwKwi‘”úíÆÍÿåh_dß¶›m§>øS‘’ŽÞúܳ?ÉèÇ_Ißÿƒÿ’ÈCzWì`%B”ttˆ¹åPò£C[oyó>’ïcnyµbYkç}S{vô76ðA_nhðèëQæOo+ 5íó€ß½bv~c-€¥ÝxØ­(­ô¦[—Ùç SS²’oåv|Ý Ø—v?ÝK%ÏL&CÌîï­жöOxJü ]šÈ·n¹ÿV;`_´C’ »p\—r7|bÿƽCë 94pjhðǃ @Jþ:(L¾ùºÊJ:¥~¡œËS=7©_(J)qå¨èðgžy^Šúù~èÝýî7 6xèÈ[C¯LdQÙÃOõ¸V¾ÈŠégz–•µÛÿÐFѳ&1xäÈ[§^?ü¯å'ê•J±È‡’iõ¿sSèúÒu†²¯Þ¹› l/ßgÄ?es­œbE噞úXtâûO,“ Q¢þUŸþinäÕ'DߘLˆ’ö¯Úõô‘ñš´ÎŠ¿Ë@ùX]å…Ô&FÎvÿóumœkvŒEî;øôöÿzø×^yÅ¹í§£ßJÿÛö­ÿõW«zó=¯Z¶ªÜBüƒ¾°Lˆ’Ž®Úuç‘ôJ^Vúôø¶ÇŸO=Ûû?h‚×,@n"9>™ïÜü#"q§¶¿4,ýU™ôÿhÛ¶ÇSÁƒÛ4Ñf$³ }Ö\%¼ þúèüYpÑ_üè™gú¥ˆøˆ/V/©g'Œqh–ª*æ/˜„âGµ Ú\¢fàUL)ÅäWpsš×•I±&m¿|õ¥ ÷ÿõ»„üÛ£gî»åÕ\Û—w±»ï¼o××6ýþžSï|dË_~­2€RpVþèè¢Cû~–0yt­k_ÀÙ¼šfç8àpJ»öý{@n$ð‚xCûÒN&ôüÁ€lìÇOˆ«V-®H=¯¨ v Vú8?«×˜ìwDÂáó0oÌ[àX²æ¦Wž e|b`—غ² ùÉd,1÷u]x!4’ò?Ù»kU×2½,÷u=Ì89,`Ãç?Çîpø¡y0Ï ´ºÔœkËÙ±xëI‰ôo^»TýÍg2›ÈᎽ‘ðC+Jæ9 `×’ñÊsÃ9 xi÷PײÅ&Ò“»àe×GŸã‡wPºFeòÌæµ(4b€­NÀ>¿¥,uá|'`··ûÓXdåñ™Ã€ÄO^¢;yŒFò{wõlVµÌ'=qüþ}¾NºÑq艿¼°É×ß¿ï›ígÐó¥6=/{][gѲÀ Ø7€©h·kóH@î퟿B_;¿a^³™·Ÿ]ùÐsìˆhq|ô¢Ëµo$ ùæÏA-´—¬ÝHÌtè³æ*áeð—óæ xóØIÙ“ïˆX¿ÄyuðÊRuNò‚I(~¶VA›[Ô ¼ŒM®^W(Åê>õV~zNŠ‹ÛÖƒ iBH:ìzÇ‘ðÄRþE§26@ /ÈcLñ,:—ˆeh>C!’Ÿ/H¢ŸUÌòQBˆ’ް%õøHª,Sà®ø‹E?(¿D”]~ ¼Y|ÚO;*‚ú BÒ=.õ¿`¸±Òóë’À1¥_V Wû@§,ò Wû‡’Àe#3¼@d8‘gy¡òØkÙÔ„¨ßSR*¬˜5”¿äõQýrgþŠsj[ ò•"Kå%…|Lé@_¦/BH:ê)™l`LÖðÒwAˆÄSàŲ:逧¨co0NÉRx{K?žÐòª ÚVšŸ0Kq]rOŸ@ˆ"z‹ŸYJi†×¬@ÅDŒ/$’®˜ÈI)Ú(2É,æUD9k®^zi²ƒê3W /}ªNË‹ÌjjET xÍ‚6·\V„öÂD´W«†×•H±†ö-î)qæ PȦÅÞÖf?s,€Ë…úÿ;òc¿¶ö³v³6#/}çÿüOOÞæÎÿú#§Ó^>žÿýïíö†ä»¦§P‡×•@>—ƒËm²´[Èçd¸Ýµ÷„¯×àrð*äó2ìfê^< (äó¨Ú`·Ï*[îÖæUÈåd—Ûd“âšF®ô“«ZÔÕ8ªµ ù\¡ÚtòšÐÓA!Ÿ+8ÍÂO$³œ—W /3Év³žë¼j¥ª±XÍrj4Jm®ñª‰9ÎëÓN±f^®{ク÷ëÎ`Ð^üÿ^8€†þ·;7o¶×jóÃ8Ò8›¾®=îܼÙÞ¨ü¹§»Æ`ÂîœnÄÖHƒË»Ó9³#6˜X ª$4Ô©Ý]c˜UÓÈ•t-jŠjz­íÓ5ÊkVÀ ¬ÝtdƒË$Ÿ"®^fþ2é¹Î«VªÎ-^f¸Š©™cŽóú´S¬‰wÜ+VÌìÿëpǺ»o¹T9,X°`Á‚ W5ZýtT±`Á‚ ,X¸*1#Ë£ Í´Í©æF1×Î…ÅknÁâ5·`ñšs¸Z©Y¼æfjþkÆ7Œ·`Á‚ ,X°0ó°m,X°`Á‚ sŸyöÙg§oqæÌ™¥K—6%´M¼5N>×¾àâõºü¨Å+7‘8vâÃO´-rU¯ç'cÂñÔﯹ¾Ý ;1žÎLqŽ,r_;R˜L¾wÆÑ±¨@n2ùÞû© ö…‹EM$c'N¦[Ú;Šr#ÇNL}² }QñôÉdìøÉÔ5 ¯w«o_ÍMÆÞ{?{ÁÞ¾hŸOiútº]v —9öáÔ'mí‹ìÓòÊO&…ã'ÍÂvwõ‹]ó#‰3Ÿ´t,ZPj9.Jm™ÏŽ§Ò¥>§ˆs‘ËŽüDR81öIK[™—ޏÎV&#'>œZÐÖ^4jU/[ÎØió¼ô:Zæ’±÷ƲTÓ™9´ªÁEL&µ»®A>;‘Òˆp.rÛÜDòر“çç·/^`75fM^fF›ÿm¦*êŒa¦s‡™¨|"–ZÔ±èM‰ñBûb“8¬ÏˬӦòË´ ƒÚ¹äȱ±3Ÿ´uÝaäeÈ/¡0{ïÌ•»¡ÁäxìøûšD~<&¾ŸšZx}»z`üebƒ;PHÆ>pt´·˜ÅŒŠl2–v,YÔr ÙñÓéªùɘx<5U þÉdìý±¬½­]Õ®<>£µv³¼t]ÓÇØEUa©xCS7Ìê¡Vm£1ëúk—5XêËŠýæ|Ëõ‹˜ö¢ËA#w£LCå’#ÇNþæ|ûõÅ·Éë¯ —úÚ¼t¥¾09~úŒæjbT»J”i(N_É]v£OÄ/•Wµéj\šõ)–ŸHŒ-vèKmŠU«=³%±iÔ}“ÛE¼NŠúà\Ä[ã>M˜òJ…}XÀ¯}}­$°–h.JˆÔç¡@QMSÀ•š¦}¸(!d4èÀ²tI”öÑíaxâ2QR@{<ÀúBˆ`° Б ‘Gƒ@³,Æ/Yô@í“_””OmAL`š—µJbÍ2¸hº|\I…i€bY  ù(!$å°€/œ’Ä… Q_4“ s–ÀWDUˆl¥„}@{X `£C/c§Íò2è`h)ǽåÏL ct¨¾Á„B2ñ@©/×ÖˆHDµ•ÇÃè•çUÃÈ„È" Ð Ã04Ó”LÂLï3QJ<äÕ-!J&äU#Šã°./“h2¿ju¡Q;ÅQÅ0@ói^úü2õ!$â+&¬±A”gÊã¡:œRIû€bY ¸Ôt¼õ—™ î $ñTT"¦1C!épùcÅ”LÜ[É&}é(Åf%ÅtjÏ`I¼4=hSdY™î3QdE8ºt¨‡Êù:A²$›·Ó4Ði f”xÀ3"ê. é°WÝ´@ l\ÓqÄK1Qý_ð³P· x#iBˆÀÓè R”ÂBˆä¼ÑŒÈSð Bd‘¸ Iû.*¢ô1`q£Ô±¯$ð€w¬ÒgÚøEIy 7EQº4t0Œˆ”:”ìcÁô•-+úi°ABˆl\&G18!$òT¼3a€eÉO ŽBâ¦,JCÜ`«œ@iBˆÌSðE3µYäeè´i^Æ.t-'ðe!r”B)E#“b¢dh`p‡ÜWÜtA¿'G&ìH†¼á !$ê¼Qm‹iy™Y=‘¢xMôÂLïƒ(%^Òº¸Ùƒï+Ê^ÐÆaƒ¼´1P‹W­ü2t¡W{RäÏ(!D ŸÔó2ä—iúH‚_¥š!ÄÐ@â\!„„<ð†ÓDŠÒÅøó€ §gÆ_U0¸CÕ’6ª+MÌ”ö/d!/Í‰Šælt@!„¤‚€/­± O¡w`Œ´ŒP]=›â¥ïBsN©ê»0-,Ú˜Ñ×C£ÚfƬë¯ZÔ/õGÁ&„ÈQàËè{1æ ž»A¦>ƒ´Õ@DÒç`Ã¥¾&/c©O‡½4'jÎÕ©];[K¡X·’®qâ—ÌËHÁdÝ]IDAT`ºÊ9ÅP4¤X¼T¸Õô1^šUÁš«YÉ/¹$^ šz¦-wdÏ&‡Ëå°uížr¯?·Õæp¹¶­/æó‰]=;wö8\ÿí#Àðs›vJÆ÷tmœ¬–íèêêér¸\Ž­{^|jk—Ëå°mÝ? —xn“ÍÕê²uíž, Ÿ|nk—Úã@îÐŽžžž.W«ËÑõT,× ƒzXÉq;¾² À¹üª¥²eÚé·_£ý÷¸{'Ý‹ÔTi—ðBòÐ{{ømkÕÿ×?²VŒò˜R½ùÖ¥¾pû½xA<}rX¤ýr2–H?ýAWÛü•ßë{¬€|.ÊiÏýê0˜ûºÜ€ýîïzN¥Ïˆ¯‹>渿p;ðÚoKL“‡ÿb·'´c­Û1%×÷ÝerKæÕ¤•}g/}  @çÝ NQ*_ÝäóÜÀ¾š¢:À¹ªcÈ@¡Ü°pøñžÐ×:ŠÝ¾±ÀÊõ=8•StÄMl5ÿ{¾`÷R9-ŽšÆ,ó2é´I^†.ô-Çßz“âîoà\¿‹Æ»§s:‡¦ô ~cp‡½û±p8dE«T!ùøÆ½¡—YwþT?X¦SJÄí¦~ÐÕ0/#«È:ªU>zt$™Œa–5¸C/ÊÞñX8q”TÜiÛÞÑy¶Ø^‡çá¥ï´jå—¾  ´0>¶€ý¦ ’¢èdõùe7IŸBòûë_ˆGXé<3i@S-üP€ZÑ®È@¡0¸€ÚÛ7è/£ î ‡]ÿ…°àgpAcmÌ$?úÈúpÔÏN)rïD±pR8:8œœT;q¢už äeÈ¥Ž‰ÿå6îÛ·àñ·ÈÿJ@ÇGâðàÑØ¤ÉÞõy麨”‰r=4va(,º˜ÑÕÂAm£1/Þ_M”úÜ/úDžY1žˆµ?<šz¬M×K>©ÏAw½Ì¬>ƒNþâuÆ<žH¤ÚGGS·BŸƒ —úiRL_êO?±üÚÉá£GG’“Œ.«!ªŠu+¹þg(—ÎKoºÒÕ£Іëè~l æY*¯<Ã¥º«UÉg¢$^ êëÊÃÃÑ>ž`†L¼`ODz{û2„Èc!€Š¦ ¹p¦4Ó¦Œö©ƒh)ÊÈ:¹²@ƒ§ ‘"•KÃótO0®%ô€éû0Â{!dl à2Dâ)øÂc„ˆ¢53M¡æ°W‰{)ð‹•9Xc¸âtŠä¯la™æ*;x¦|JçiN DÐ`ü‘Œ” ö”Bô X¯¯—ØÒü®쥡NrHQ†æ‹“"Êÿv€ãËd„`/@ûÏD(ÐÚ[pur~Ú¹å O³QÕ²@ƒtÎÇxð… !/dž/R¼WÍD| øLÕa¦¸Ì¡#nn+u)J”27¦—®Ó¦xºøP×òÍc~€ŒeRBÊ·\‡Êq}ƒ¸©;ˆ\Ù{”BHÔGQê¶t²ºå+ëóõB3¥ß/£‘‹íó xi€ d a&Üa.Jªj=Nùâì¸!¥ú¼L:m*¿ô¦«i)Ì3€/eh òË诰—ö„Ò„ˆ ÍËĤÀ—ö´N+„d4¸ô ø«†4îH‡}ê䄟f¢¥x®Š™t˜BoŠ8Ïp‚D”¸`¼|€ï3êÌAIëˆ:7éŒeR‚ yAíàå¼—.-˜6ÇKßEšô1ta(,¦ª©‡µÆlÄ_ÓQk¨ÔOøi”×çcŠk|º^ô9˜6p×Ë|+¢Ë ÑÏ(/ÈÔÈÁJ}M^e_–J½dÆð4ÀDÓ¨0ŠÒ†bc•\ãÓ%ñRxéMW<¬½4«çê+žÈ3¾òVæºK³.Åj¨=c%±I41h‹r h–eh†eYÆOöù< ÃzX `„´@ƒŠ;m«Ë£’Ÿ/¦<šG1Ê(Ç¥,ÐÅK ä§À ïzQé‡õðïG‹ýÐí—H†/•3‘§)®ÁuØš¼*P¤ÑÑ1µN¦">í¸ÀÑžºÀ’á(z M!™(§NõO(îãXÐÞp_/Ãx8¾ÿ¡À\ùúGûÅôèhZ&„9¦@E'¢4z‹‹8QŽê "Eú8–a¼Ëx|œ—¦¹¨V­;ݳ•µx» ºôÑwñ¡®°„ 1£¯‡Ñ©­7fcþ2§ÖD©—xJ]©Tç˜è›†^ªs0c0¯^æ¯ôô&G•.dø£a]6Zê§M±êROd¹tO œ^íÿý¡™¨ªòU·’¯q:â“—ÌKЙN”ˆ¡’«ýé*žÀ•múÒñ–>Å>ü…I%Ÿ‘’xQhbytáµ 6lôÿÿíoh÷ÇØY9É•³:IãvIí&i£U`cØoBQ…2ØæbØ # ܽ‹`cFBP ÁëÓÖœ½ÃqÄÒòÂ/Šbð Ï¡½4œGep m‡ûB[$ÐuèÜ^H§?¿çÎw'«ßÏcû§ßóÿÑ£ßIºÙÌõ³ÑôÑüOÔ7–³‹xïQ¥¾¦Öqýñ¯S—cßzk#ù³ñçv|j4ϯëÛ#":öšB—æ³²¼þN$òÒ'¿œPßøMvqá½D‚žîÕ×?«5Å.²tTúÕ™±»[Í ®²DÆÎææ—ºyäÜ«·®æÊDÆÖʬ64ö<+7g+“õãØã®åóS¡g’‰†ÂƒÆË¿xöv2›]øÑÑÑÅ×^9G´¹­Ñ?¯j¯ùÛõ3Sw7©ñÇG蹑óôÛÜ£2‘qÿæì+ç_Úºsíö³·³ÙäN¬ÒÄÉ(‘¹õÁ¬vcºñB¯ôñõ±©»:I¤¿Üd›Ð®.«D´uÿÖjüô°m×çËïÆÞ ?©ZW'_o^L84!"iÀþ8ÖÎÊ,ÍM§n¨ñ×w‡o„¯T¬ìäëÇLÃIðÕéo¬Ÿ»´i‘D{D‡œÙiØ.&B\Ùºsù6¥³ Éþc•b§¢B@ ¶À!Œûh3WÆëÿŠŽ\$íñv™ˆ¶ª4ñ²ì×.ÑÉdÛ¥¾?þæÂ#"2v>ºE¯ð4;ËòmÕ’ââT1=íz™å€3îõ%Š`0?_ŽÝ¸ò¤’½:yŒL¾ ÌêKˆ×Ø© kùühˆB!"¢Ðà è ÉDR¤õéÆÃ™H’:?™Üm¼ÂÜB8Ž_Ëç§FC E(~n$!g¤ 7×òS£¶³C_mŒ‡'•‰HÿøÃ[ñ"DOéРL$ÉQ"2þ~íÒ_ÞN-fæN|ºz>v²¬¾~s¡LDÆÖêm:qûŠuW»DDBù8Šho,GYΈýÐØÔfÉßu¼µúðÙ Z¼MDåíO4úîð!AÊžPƒÄl÷<)VÐ蹋Úz¡LDåO×)6zê´Pƒ~[½»]¬Õ—/<*ÑÎú‡;ü• vTç¹*´/ÏNΟãÃÿ}`»F׈¼ çŽÇZÇ b‰}óEÞÉ{Ó»Ãs¬kwSJãQ3µVÌ׋ŧ"å÷VìÁ³¢Î+· îÎM/=qØ·²¡ÄS%«~´¨4NÚâ”Ò*µâZã‚˨Åݵƹzýs^ií‹æÙ†–Vâ)Õas8޽%5cJ®P±ªj¬qÊZÌØ:Íç/R­ë¤-ªZJ™W;·š« e#=Ó°jf©dYVIMØ+’¹‚eYÅ´-|þ³še•6fl?Ü+4<Ûyq³˜™il¡$sw»¬bs+e峪m×i…ˆböéŠeU ¹¸-tI­¿iÏ7Þ"Ý|D›ó›†s_©™Dã÷x²PqXÀìêØ.§x +Û\—¸Wp ([ÀÃaYÂI›šŠÇSZ›vv@)ÑxÏ«»¸“›vµåLzm×rJ³Žp¸Å«Y}-™Íšeyèî¡îñr¯¯NLm­3SÕ/ìbõå/˪©J<]uZPÈ%í?Ôíªä’Šý‡%×k7]ÆKÉ5µbá°¬j:>m_¸s¦Ž–šN©U˪µêk:½[³¬J!i×pbIµ,KÍØžIÜ«X–e—lµ¦Ókµ.ìb"xù"xcs†õCQmæL?ñr6-P«oµŽØ’VâRX r÷Š{² j-H,i–C úmõ.v9´úbkåÌÚn«Ís•¥¢W'ßç9®iøì*q×9?5³Sç•yû Ø:lìsèx½j‰]àëÞ£í÷”0 ¤æ­ëMà Y–š?ÌòÃÉṹʃñ¨ñpùOŸÚÿØ£o+?½0ºÏ;±ÉÐu)õ'§Üï•a†)˺ºNáhñ¦®WÃM+Ht†!µ[dz•¢Ñ–tO¡¦a˜m[ìc—¨Œ;¢VÁÕ´ îÌ.ìb"Ä•¦¡W÷U‚/œ, ]ܳÅ0t’Ûw Y¿x©}»\ë«ðúòŠO±Çt¦nOâÕ{˜†nJ‚Çâe†I--º°‹Õ´Óê0Ô³±x÷Cgî/êM«7 ½*µ—ó/ë-ÌvÖL“ö[à¿ÕûN0ÓÐMÙ=+ülå]b^1=¸]¬îƒã¹ÅרƒØJYn?t””©o. Å~>“ÑÆ£D$ŸúÞ÷š’TÿjGÓ:î!Z޶ ÚONÏqí**ùÛ**<¤Ó}D$¦ $ ñê{ºbʸsðgQm¦epgºáj!®dÎf[³Õö”–D"ë—.\ãëÞ¼ìr‚×——–C@€¡  ÀÐÐ`hè0´ôÚú m}†6€>C@€¡  ÀÐÐü_1óÄúUKBIEND®B`‚pymc-2.2+ds/docs/conclusion.rst000066400000000000000000000030151204033704200165570ustar00rootroot00000000000000********** Conclusion ********** MCMC is a surprisingly difficult and bug-prone algorithm to implement by hand. We find PyMC makes it much easier and less stressful. PyMC also makes our work more dynamic; getting hand-coded MCMC's working used to be so much work that we were reluctant to change anything, but with PyMC changing models is much easier. We welcome new contributors at all levels. If you would like to contribute new code, improve documentation, share your results or provide ideas for new features, please introduce yourself on our `mailing list`_. Our `wiki page`_. also hosts a number of tutorials and examples from users that could give you some ideas. We have taken great care to make the code easy to extend, whether by adding new database backends, step methods or entirely new sampling algorithms. .. _`mailing list`: pymc@googlegroups.com .. _`wiki page`: https://github.com/pymc-devs/pymc/wiki **************** Acknowledgements **************** The authors would like to thank several users of PyMC who have been particularly helpful during the development of the 2.0 release. In alphabetical order, these are Mike Conroy, Abraham Flaxman, J. Miguel Marin, Aaron MacNeil, Nick Matsakis, John Salvatier, Andrew Straw and Thomas Wiecki. Anand Patil’s work on PyMC has been supported since 2008 by the Malaria Atlas Project, principally funded by the Wellcome Trust. David Huard’s early work on PyMC was supported by a scholarship from the Natural Sciences and Engineering Research Council of Canada. pymc-2.2+ds/docs/conf.py000066400000000000000000000215331204033704200151550ustar00rootroot00000000000000# -*- coding: utf-8 -*- # # PyMC documentation build configuration file, created by # sphinx-quickstart on Tue Jan 25 12:00:55 2011. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.insert(0, os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # If your documentation needs a minimal Sphinx version, state it here. #needs_sphinx = '1.0' # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.todo', 'sphinx.ext.coverage', 'sphinx.ext.viewcode'] extensions.append('sphinx.ext.mathjax') # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8-sig' # The master toctree document. master_doc = 'index' # General information about the project. project = u'PyMC' copyright = u'2012, Christopher J. Fonnesbeck' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = '2.2' # The full version, including alpha/beta/rc tags. release = '2.2' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. exclude_patterns = ['_build'] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] mathjax_path = 'http://mathjax.connectmv.com/MathJax.js?config=default' # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an file (relative to this directory) to place at the top # of the sidebar. html_logo = '_images/icon.png' # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_domain_indices = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. #html_show_sphinx = True # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. #html_show_copyright = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # This is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = None # Output file base name for HTML help builder. htmlhelp_basename = 'PyMCdoc' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'PyMC.tex', u'PyMC Documentation', u'Christopher J. Fonnesbeck', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # If true, show page references after internal links. #latex_show_pagerefs = False # If true, show URL addresses after external links. #latex_show_urls = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_domain_indices = True # -- Options for manual page output -------------------------------------------- # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ ('index', 'pymc', u'PyMC Documentation', [u'Christopher J. Fonnesbeck'], 1) ] # If true, show URL addresses after external links. #man_show_urls = False # -- Options for Texinfo output ------------------------------------------------ # Grouping the document tree into Texinfo files. List of tuples # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ ('index', 'PyMC', u'PyMC Documentation', u'Christopher J. Fonnesbeck', 'PyMC', 'One line description of project.', 'Miscellaneous'), ] # Documents to append as an appendix to all manuals. texinfo_appendices = [] # -- Options for Epub output --------------------------------------------------- # Bibliographic Dublin Core info. epub_title = u'PyMC' epub_author = u'Christopher J. Fonnesbeck' epub_publisher = u'Christopher J. Fonnesbeck' epub_copyright = u'2011, Christopher J. Fonnesbeck' # The language of the text. It defaults to the language option # or en if the language is not set. #epub_language = '' # The scheme of the identifier. Typical schemes are ISBN or URL. #epub_scheme = '' # The unique identifier of the text. This can be a ISBN number # or the project homepage. #epub_identifier = '' # A unique identification for the text. #epub_uid = '' # A tuple containing the cover image and cover page html template filenames. #epub_cover = () # HTML files that should be inserted before the pages created by sphinx. # The format is a list of tuples containing the path and title. #epub_pre_files = [] # HTML files shat should be inserted after the pages created by sphinx. # The format is a list of tuples containing the path and title. #epub_post_files = [] # A list of files that should not be packed into the epub file. #epub_exclude_files = [] # The depth of the table of contents in toc.ncx. #epub_tocdepth = 3 # Allow duplicate toc entries. #epub_tocdup = True pymc-2.2+ds/docs/database.rst000066400000000000000000000252501204033704200161540ustar00rootroot00000000000000.. _chap_database: ************************************ Saving and managing sampling results ************************************ .. _accessing_data: Accessing Sampled Data ====================== The recommended way to access data from an MCMC run, irrespective of the database backend, is to use the ``trace`` method:: >>> from pymc.examples import disaster_model >>> from pymc import MCMC >>> M = MCMC(disaster_model) >>> M.sample(10) Sampling: 100% [00000000000000000000000000000000000000000000000000] Iterations: 10 >>> M.trace('early_mean')[:] array([ 2.28320992, 2.28320992, 2.28320992, 2.28320992, 2.28320992, 2.36982455, 2.36982455, 3.1669422 , 3.1669422 , 3.14499489]) ``M.trace('early_mean')`` returns a copy of the ``Trace`` instance associated with the tallyable object `early_mean`:: >>> M.trace('early_mean') Particular subsamples from the trace are obtained using the slice notation ``[]``, similar to NumPy arrays. By default, ``trace`` returns the samples from the last chain. To return the samples from all the chains, use ``chain=None``:: >>> M.sample(5) Sampling: 100% [000000000000000000000000000000000000000000000000000] Iterations: 5 >>> M.trace('early_mean', chain=None)[:] array([ 2.28320992, 2.28320992, 2.28320992, 2.28320992, 2.28320992, 2.36982455, 2.36982455, 3.1669422 , 3.1669422 , 3.14499489, 3.14499489, 3.14499489, 3.14499489, 2.94672454, 3.10767686]) Output Summaries ---------------- PyMC samplers include a couple of methods that are useful for obtaining summaries of the model, or particular member nodes, rather than the entire trace. The ``summary`` method can be used to generate a pretty-printed summary of posterior quantities. For example, if we want a statistical snapshot of the ``early_mean`` node:: >>> M.early_mean.summary() early_mean: Mean SD MC Error 95% HPD interval ------------------------------------------------------------------ 3.075 0.287 0.01 [ 2.594 3.722] Posterior quantiles: 2.5 25 50 75 97.5 |---------------|===============|===============|---------------| 2.531 2.876 3.069 3.255 3.671 A method of the same name exists for the sampler, which yields summaries for every node in the model. Alternatively, we may wish to write posterior statistics to a file, where they may be imported into a spreadsheet or plotting package. In that case, ``write_csv`` may be called to generate a comma-separated values (csv) file containing all available statistics for each node:: M.write_csv("disasters.csv", variables=["early_mean", "late_mean", "switchpoint"]) .. _write_csv: .. figure:: _images/write_csv.* :alt: Table of summary stats :scale: 90 :align: center Summary statistics of stochastics from the ``disaster_model`` example, shown in a spreadsheet. ``write_csv`` is called with a single mandatory argument, the name of the output file for the summary statistics, and several optional arguments, including a list of parameters for which summaries are desired (if not given, all model nodes are summarized) and an alpha level for calculating credible intervalse (defaults to 0.05). .. _saving_data: Saving Data to Disk =================== By default, the database backend selected by the ``MCMC`` sampler is the ``ram`` backend, which simply holds the data in memory. Now, we will create a sampler that instead will write data to a pickle file:: >>> M = MCMC(disaster_model, db='pickle', dbname='Disaster.pickle') >>> M.db >>> M.sample(10) >>> M.db.close() Note that in this particular case, no data is written to disk before the call to ``db.close``. The ``close`` method will flush data to disk and prepare the database for a potential session exit. Closing a `Python` session without calling ``close`` beforehand is likely to corrupt the database, making the data irretrievable. To simply flush data to disk without closing the database, use the ``commit`` method. Some backends not only have the ability to store the traces, but also the state of the step methods at the end of sampling. This is particularly useful when long warm-up periods are needed to tune the jump parameters. When the database is loaded in a new session, the step methods query the database to fetch the state they were in at the end of the last trace. Check that you ``close()`` the database before closing the Python session. .. _reloading_database: Reloading a Database ==================== To load a file created in a previous session, use the ``load`` function from the backend:: >>> db = pymc.database.pickle.load('Disaster.pickle') >>> len(db.trace('early_mean')[:]) 10 The ``db`` object also has a ``trace`` method identical to that of ``Sampler``. You can hence inspect the results of a model, even when you don't have the model around. To add a new trace to this file, we need to create an MCMC instance. This time, instead of setting ``db='pickle'``, we will pass the existing ``Database`` instance and sample as usual. A new trace will be appended to the first:: >>> M = MCMC(disaster_model, db=db) >>> M.sample(5) Sampling: 100% [000000000000000000000000000000000000000000000000000] Iterations: 5 >>> len(M.trace('early_model', chain=None)[:]) 15 >>> M.db.close() The ``ram`` backend ------------------- Used by default, this backend simply holds a copy in memory, with no output written to disk. This is useful for short runs or testing. For long runs generating large amount of data, using this backend may fill the available memory, forcing the OS to store data in the cache, slowing down all other applications. The ``no_trace`` backend ------------------------ This backend simply does not store the trace. This may be useful for testing purposes. The txt backend --------------- With the ``txt`` backend, the data is written to disk in ASCII files. More precisely, the ``dbname`` argument is used to create a top directory into which chain directories, called ``Chain_<#>``, are going to be created each time ``sample`` is called:: dbname/ Chain_0/ .txt .txt ... Chain_1/ .txt .txt ... ... In each one of these chain directories, files named ``.txt`` are created, storing the values of the variable as rows of text:: # Variable: e # Sample shape: (5,) # Date: 2008-11-18 17:19:13.554188 3.033672373807017486e+00 3.033672373807017486e+00 ... While the txt backend makes it easy to load data using other applications and programming languages, it is not optimized for speed nor memory efficiency. If you plan on generating and handling large datasets, read on for better options. The ``pickle`` backend ---------------------- The ``pickle`` database relies on the ``cPickle`` module to save the traces. Use of this backend is appropriate for small-scale, short-lived projects. For longer term or larger projects, the ``pickle`` backend should be avoided since generated files might be unreadable across different Python versions. The `pickled` file is a simple dump of a dictionary containing the NumPy arrays storing the traces, as well as the state of the ``Sampler``'s step methods. The ``sqlite`` backend ---------------------- The ``sqlite`` backend is based on the python module `sqlite3`_ (built-in to Python versions greater than 2.4) . It opens an SQL database named ``dbname``, and creates one table per tallyable objects. The rows of this table store a key, the chain index and the values of the objects:: key (INTT), trace (INT), v1 (FLOAT), v2 (FLOAT), v3 (FLOAT) ... The key is autoincremented each time a new row is added to the table, that is, each time ``tally`` is called by the sampler. Note that the ``savestate`` feature is not implemented, that is, the state of the step methods is not stored internally in the database. .. _`sqlite3`: http://www.sqlite.org The ``hdf5`` backend -------------------- The ``hdf5`` backend uses `pyTables`_ to save data in binary HDF5 format. The ``hdf5`` database is fast and can store huge traces, far larger than the available RAM. Data can be compressed and decompressed on the fly to reduce the disk footprint. Another feature of this backends is that it can store arbitrary objects. Whereas the other backends are limited to numerical values, ``hdf5`` can tally any object that can be pickled, opening the door for powerful and exotic applications (see ``pymc.gp``). The internal structure of an HDF5 file storing both numerical values and arbitrary objects is as follows:: / (root) /chain0/ (Group) 'Chain #0' /chain0/PyMCSamples (Table(N,)) 'PyMC Samples' /chain0/group0 (Group) 'Group storing objects.' /chain0/group0/ (VLArray(N,)) ' samples.' /chain0/group0/ (VLArray(N,)) ' samples.' ... /chain1/ (Group) 'Chain #1' ... All standard numerical values are stored in a ``Table``, while ``objects`` are stored in individual ``VLArrays``. The ``hdf5`` Database takes the following parameters: * ``dbname`` (`string`) Name of the hdf5 file. * ``dbmode`` (`string`) File mode: ``a``: append, ``w``: overwrite, ``r``: read-only. * ``dbcomplevel`` (`int` (0-9)) Compression level, 0: no compression. * ``dbcomplib`` (`string`) Compression library (``zlib``, ``bzip2``, ``lzo``) According the the `pyTables`_ manual, `zlib` ([Roelofs2010]_) has a fast decompression, relatively slow compression, and a good compression ratio. `LZO` ([Oberhumer2008]_) has a fast compression, but a low compression ratio. `bzip2` ([Seward2007]_) has an excellent compression ratio but requires more CPU. Note that some of these compression algorithms require additional software to work (see the `pyTables`_ manual). .. _writing_backend: Writing a New Backend ===================== It is relatively easy to write a new backend for ``PyMC``. The first step is to look at the ``database.base`` module, which defines barebone ``Database`` and ``Trace`` classes. This module contains documentation on the methods that should be defined to get a working backend. Testing your new backend should be trivial, since the ``test_database`` module contains a generic test class that can easily be subclassed to check that the basic features required of all backends are implemented and working properly. .. _`pyTables`: http://www.pytables.org/moinpymc-2.2+ds/docs/distributions.rst000066400000000000000000000042631204033704200173130ustar00rootroot00000000000000.. _chap_distributions: ************************* Probability distributions ************************* PyMC provides a large suite of built-in probability distributions. For each distribution, it provides: * A function that evaluates its log-probability or log-density: normal_like(). * A function that draws random variables: rnormal(). * A function that computes the expectation associated with the distribution: normal_expval(). * A Stochastic subclass generated from the distribution: Normal. This section describes the likelihood functions of these distributions. .. module:: pymc.distributions Discrete distributions ====================== .. autofunction:: bernoulli_like .. autofunction:: binomial_like .. autofunction:: categorical_like .. autofunction:: discrete_uniform_like .. autofunction:: geometric_like .. autofunction:: hypergeometric_like .. autofunction:: negative_binomial_like .. autofunction:: poisson_like .. autofunction:: truncated_poisson_like Continuous distributions ======================== .. autofunction:: beta_like .. autofunction:: cauchy_like .. autofunction:: chi2_like .. autofunction:: degenerate_like .. autofunction:: exponential_like .. autofunction:: exponweib_like .. autofunction:: gamma_like .. autofunction:: half_normal_like .. autofunction:: inverse_gamma_like .. autofunction:: laplace_like .. autofunction:: logistic_like .. autofunction:: lognormal_like .. autofunction:: noncentral_t_like .. autofunction:: normal_like .. autofunction:: pareto_like .. autofunction:: skew_normal_like .. autofunction:: t_like .. autofunction:: truncated_normal_like .. autofunction:: truncated_pareto_like .. autofunction:: uniform_like .. autofunction:: von_mises_like .. autofunction:: weibull_like Multivariate discrete distributions =================================== .. autofunction:: multivariate_hypergeometric_like .. autofunction:: multinomial_like Multivariate continuous distributions ===================================== .. autofunction:: dirichlet_like .. autofunction:: mv_normal_like .. autofunction:: mv_normal_chol_like .. autofunction:: mv_normal_cov_like .. autofunction:: wishart_like .. autofunction:: wishart_cov_like pymc-2.2+ds/docs/extending.rst000066400000000000000000000416451204033704200164030ustar00rootroot00000000000000.. _chap_extending: ************** Extending PyMC ************** PyMC tries to make standard things easy, but keep unusual things possible. Its openness, combined with Python's flexibility, invite extensions from using new step methods to exotic stochastic processes (see the Gaussian process module). This chapter briefly reviews the ways PyMC is designed to be extended. .. _nonstandard: Nonstandard Stochastics ======================= The simplest way to create a ``Stochastic`` object with a nonstandard distribution is to use the medium or long decorator syntax. See Chapter :ref:`chap_modelbuilding`. If you want to create many stochastics with the same nonstandard distribution, the decorator syntax can become cumbersome. An actual subclass of ``Stochastic`` can be created using the class factory ``stochastic_from_dist``. This function takes the following arguments: * The name of the new class, * A ``logp`` function, * A ``random`` function, * The NumPy datatype of the new class (for continuous distributions, this should be ``float``; for discrete distributions, ``int``; for variables valued as non-numerical objects, ``object``), * A flag indicating whether the resulting class represents a vector-valued variable. The necessary parent labels are read from the ``logp`` function, and a docstring for the new class is automatically generated. Instances of the new class can be created in one line. Full subclasses of ``Stochastic`` may be necessary to provide nonstandard behaviors (see ``gp.GP``). .. _custom-stepper: User-defined step methods ========================= The ``StepMethod`` class is meant to be subclassed. There are an enormous number of MCMC step methods in the literature, whereas PyMC provides only about half a dozen. Most user-defined step methods will be either Metropolis-Hastings or Gibbs step methods, and these should subclass ``Metropolis`` or ``Gibbs`` respectively. More unusual step methods should subclass ``StepMethod`` directly. Example: an asymmetric Metropolis step -------------------------------------- Consider the probability model in :file:`examples/custom_step.py`:: mu = pymc.Normal('mu',0,.01, value=0) tau = pymc.Exponential('tau',.01, value=1) cutoff = pymc.Exponential('cutoff',1, value=1.3) D = pymc.Truncnorm('D',mu,tau,-np.inf,cutoff,value=data,observed=True) The stochastic variable ``cutoff`` cannot be smaller than the largest element of :math:`D`, otherwise :math:`D`'s density would be zero. The standard ``Metropolis`` step method can handle this case without problems; it will propose illegal values occasionally, but these will be rejected. Suppose we want to handle ``cutoff`` with a smarter step method that doesn't propose illegal values. Specifically, we want to use the nonsymmetric proposal distribution: .. math:: :nowrap: \begin{eqnarray*} x_p | x \sim \textup{Truncnorm}(x, \sigma, \max(D), \infty). \end{eqnarray*} We can implement this Metropolis-Hastings algorithm with the following step method class:: class TruncatedMetropolis(pymc.Metropolis): def __init__(self, stochastic, low_bound, up_bound, *args, **kwargs): self.low_bound = low_bound self.up_bound = up_bound pymc.Metropolis.__init__(self, stochastic, *args, **kwargs) def propose(self): tau = 1./(self.adaptive_scale_factor * self.proposal_sd)**2 self.stochastic.value = \ pymc.rtruncnorm(self.stochastic.value, tau, self.low_bound, self.up_bound) def hastings_factor(self): tau = 1./(self.adaptive_scale_factor * self.proposal_sd)**2 cur_val = self.stochastic.value last_val = self.stochastic.last_value lp_for = pymc.truncnorm_like(cur_val, last_val, tau, self.low_bound, self.up_bound) lp_bak = pymc.truncnorm_like(last_val, cur_val, tau, self.low_bound, self.up_bound) if self.verbose > 1: print self._id + ': Hastings factor %f'%(lp_bak - lp_for) return lp_bak - lp_for The ``propose`` method sets the step method's stochastic's value to a new value, drawn from a truncated normal distribution. The precision of this distribution is computed from two factors: ``self.proposal_sd``, which can be set with an input argument to Metropolis, and ``self.adaptive_scale_factor``. Metropolis step methods' default tuning behavior is to reduce ``adaptive_scale_factor`` if the acceptance rate is too low, and to increase ``adaptive_scale_factor`` if it is too high. By incorporating ``adaptive_scale_factor`` into the proposal standard deviation, we avoid having to write our own tuning infrastructure. If we don't want the proposal to tune, we don't have to use ``adaptive_scale_factor``. The ``hastings_factor`` method adjusts for the asymmetric proposal distribution [Gelman2004]_. It computes the log of the quotient of the 'backward' density and the 'forward' density. For symmetric proposal distributions, this quotient is 1, so its log is zero. Having created our custom step method, we need to tell MCMC instances to use it to handle the variable ``cutoff``. This is done in :file:`custom_step.py` with the following line:: M.use_step_method(TruncatedMetropolis, cutoff, D.value.max(), np.inf) This call causes :math:`M` to pass the arguments ``cutoff``, ``D.value.max()``, and ``np.inf`` to a ``TruncatedMetropolis`` object's ``__init__`` method, and use the object to handle ``cutoff``. Its often convenient to get a handle to a custom step method instance directly for debugging purposes. ``M.step_method_dict[cutoff]`` returns a list of all the step methods :math:`M` will use to handle ``cutoff``:: >>> M.step_method_dict[cutoff] [] There may be more than one, and conversely step methods may handle more than one stochastic variable. To see which variables step method :math:`S` is handling, try:: >>> S.stochastics set([]) General step methods -------------------- All step methods must implement the following methods: ``step()``: Updates the values of ``self.stochastics``. ``tune()``: Tunes the jumping strategy based on performance so far. A default method is available that increases ``self.adaptive_scale_factor`` (see below) when acceptance rate is high, and decreases it when acceptance rate is low. This method should return ``True`` if additional tuning will be required later, and ``False`` otherwise. ``competence(s):`` A class method that examines stochastic variable :math:`s` and returns a value from 0 to 3 expressing the step method's ability to handle the variable. This method is used by ``MCMC`` instances when automatically assigning step methods. Conventions are: 0 I cannot safely handle this variable. 1 I can handle the variable about as well as the standard ``Metropolis`` step method. 2 I can do better than ``Metropolis``. 3 I am the best step method you are likely to find for this variable in most cases. For example, if you write a step method that can handle ``MyStochasticSubclass`` well, the competence method might look like this:: class MyStepMethod(pymc.StepMethod): def __init__(self, stochastic, *args, **kwargs): ... @classmethod def competence(self, stochastic): if isinstance(stochastic, MyStochasticSubclass): return 3 else: return 0 Note that PyMC will not even attempt to assign a step method automatically if its ``__init__`` method cannot be called with a single stochastic instance, that is ``MyStepMethod(x)`` is a legal call. The list of step methods that PyMC will consider assigning automatically is called ``pymc.StepMethodRegistry``. ``current_state()``: This method is easiest to explain by showing the code:: state = {} for s in self._state: state[s] = getattr(self, s) return state ``self._state`` should be a list containing the names of the attributes needed to reproduce the current jumping strategy. If an ``MCMC`` object writes its state out to a database, these attributes will be preserved. If an ``MCMC`` object restores its state from the database later, the corresponding step method will have these attributes set to their saved values. Step methods should also maintain the following attributes: ``_id``: A string that can identify each step method uniquely (usually something like ``_``). ``adaptive_scale_factor``: An 'adaptive scale factor'. This attribute is only needed if the default ``tune()`` method is used. ``_tuning_info``: A list of strings giving the names of any tuning parameters. For ``Metropolis`` instances, this would be ``adaptive_scale_factor``. This list is used to keep traces of tuning parameters in order to verify 'diminishing tuning' [Roberts2007]_. All step methods have a property called ``loglike``, which returns the sum of the log-probabilities of the union of the extended children of ``self.stochastics``. This quantity is one term in the log of the Metropolis- Hastings acceptance ratio. The ``logp_plus_loglike`` property gives the sum of that and the log-probabilities of ``self.stochastics``. .. _user-metro: Metropolis-Hastings step methods -------------------------------- A Metropolis-Hastings step method only needs to implement the following methods, which are called by ``Metropolis.step()``: ``reject()``: Usually just :: def reject(self): self.rejected += 1 [s.value = s.last_value for s in self.stochastics] ``propose():`` Sets the values of all ``self.stochastics`` to new, proposed values. This method may use the ``adaptive_scale_factor`` attribute to take advantage of the standard tuning scheme. Metropolis-Hastings step methods may also override the ``tune`` and ``competence`` methods. Metropolis-Hastings step methods with asymmetric jumping distributions may implement a method called ``hastings_factor()``, which returns the log of the ratio of the 'reverse' and 'forward' proposal probabilities. Note that no ``accept()`` method is needed or used. By convention, Metropolis-Hastings step methods use attributes called ``accepted`` and ``rejected`` to log their performance. .. _user-gibbs: Gibbs step methods ------------------ Gibbs step methods handle conjugate submodels. These models usually have two components: the 'parent' and the 'children'. For example, a gamma-distributed variable serving as the precision of several normally-distributed variables is a conjugate submodel; the gamma variable is the parent and the normal variables are the children. This section describes PyMC's current scheme for Gibbs step methods, several of which are in a semi-working state in the *sandbox* directory. It is meant to be as generic as possible to minimize code duplication, but it is admittedly complicated. Feel free to subclass ``StepMethod`` directly when writing Gibbs step methods if you prefer. Gibbs step methods that subclass PyMC's ``Gibbs`` should define the following class attributes: ``child_class``: The class of the children in the submodels the step method can handle. ``parent_class``: The class of the parent. ``parent_label``: The label the children would apply to the parent in a conjugate submodel. In the gamma-normal example, this would be ``tau``. ``linear_OK``: A flag indicating whether the children can use linear combinations involving the parent as their actual parent without destroying the conjugacy. A subclass of ``Gibbs`` that defines these attributes only needs to implement a ``propose()`` method, which will be called by ``Gibbs.step()``. The resulting step method will be able to handle both conjugate and 'non-conjugate' cases. The conjugate case corresponds to an actual conjugate submodel. In the non-conjugate case all the children are of the required class, but the parent is not. In this case the parent's value is proposed from the likelihood and accepted based on its prior. The acceptance rate in the non-conjugate case will be less than one. The inherited class method ``Gibbs.competence`` will determine the new step method's ability to handle a variable :math:`x` by checking whether: * all :math:`x`'s children are of class ``child_class``, and either apply ``parent_label`` to :math:`x` directly or (if ``linear_OK=True``) to a ``LinearCombination`` object (chapter :ref:`chap_modelbuilding`), one of whose parents contains :math:`x`. * :math:`x` is of class ``parent_class`` If both conditions are met, ``pymc.conjugate_Gibbs_competence`` will be returned. If only the first is met, ``pymc.nonconjugate_Gibbs_competence`` will be returned. .. _custom-model: New fitting algorithms ====================== PyMC provides a convenient platform for non-MCMC fitting algorithms in addition to MCMC. All fitting algorithms should be implemented by subclasses of ``Model``. There are virtually no restrictions on fitting algorithms, but many of ``Model``'s behaviors may be useful. See Chapter :ref:`chap_modelfitting`. .. _custom-mc: Monte Carlo fitting algorithms ------------------------------ Unless there is a good reason to do otherwise, Monte Carlo fitting algorithms should be implemented by subclasses of ``Sampler`` to take advantage of the interactive sampling feature and database backends. Subclasses using the standard ``sample()`` and ``isample()`` methods must define one of two methods: ``draw()``: If it is possible to generate an independent sample from the posterior at every iteration, the ``draw`` method should do so. The default ``_loop`` method can be used in this case. ``_loop()``: If it is not possible to implement a ``draw()`` method, but you want to take advantage of the interactive sampling option, you should override ``_loop()``. This method is responsible for generating the posterior samples and calling ``tally()`` when it is appropriate to save the model's state. In addition, ``_loop`` should monitor the sampler's ``status`` attribute at every iteration and respond appropriately. The possible values of ``status`` are: ``'ready'``: Ready to sample. ``'running'``: Sampling should continue as normal. ``'halt'``: Sampling should halt as soon as possible. ``_loop`` should call the ``halt()`` method and return control. ``_loop`` can set the status to ``'halt'`` itself if appropriate (eg the database is full or a ``KeyboardInterrupt`` has been caught). ``'paused'``: Sampling should pause as soon as possible. ``_loop`` should return, but should be able to pick up where it left off next time it's called. Samplers may alternatively want to override the default ``sample()`` method. In that case, they should call the ``tally()`` method whenever it is appropriate to save the current model state. Like custom ``_loop()`` methods, custom ``sample()`` methods should handle ``KeyboardInterrupts`` and call the ``halt()`` method when sampling terminates to finalize the traces. .. _dont-update-in-place: A second warning: Don't update stochastic variables' values in-place ==================================================================== If you're going to implement a new step method, fitting algorithm or unusual (non-numeric-valued) ``Stochastic`` subclass, you should understand the issues related to in-place updates of ``Stochastic`` objects' values. Fitting methods should never update variables' values in-place for two reasons: * In algorithms that involve accepting and rejecting proposals, the 'pre-proposal' value needs to be preserved uncorrupted. It would be possible to make a copy of the pre-proposal value and then allow in-place updates, but in PyMC we have chosen to store the pre-proposal value as ``Stochastic.last_value`` and require proposed values to be new objects. In-place updates would corrupt ``Stochastic.last_value``, and this would cause problems. * ``LazyFunction``'s caching scheme checks variables' current values against its internal cache by reference. That means if you update a variable's value in-place, it or its child may miss the update and incorrectly skip recomputing its value or log-probability. However, a ``Stochastic`` object's value can make in-place updates to itself if the updates don't change its identity. For example, the ``Stochastic`` subclass ``gp.GP`` is valued as a ``gp.Realization`` object. GP realizations represent random functions, which are infinite-dimensional stochastic processes, as literally as possible. The strategy they employ is to 'self-discover' on demand: when they are evaluated, they generate the required value conditional on previous evaluations and then make an internal note of it. This is an in-place update, but it is done to provide the same behavior as a single random function whose value everywhere has been determined since it was created.pymc-2.2+ds/docs/index.rst000066400000000000000000000006721204033704200155200ustar00rootroot00000000000000.. PyMC documentation master file, created by sphinx-quickstart on Tue Jan 25 12:00:55 2011. PyMC User's Guide ================= Contents: .. toctree:: :maxdepth: 2 :numbered: README INSTALL tutorial modelbuilding modelfitting database modelchecking extending distributions conclusion theory references Indices and tables ================== * :ref:`genindex` * :ref:`modindex` * :ref:`search` pymc-2.2+ds/docs/modelbuilding.rst000066400000000000000000000671341204033704200172350ustar00rootroot00000000000000.. _chap_modelbuilding: *************** Building models *************** Bayesian inference begins with specification of a probability model relating unknown variables to data. PyMC provides three basic building blocks for Bayesian probability models: ``Stochastic``, ``Deterministic`` and ``Potential``. A ``Stochastic`` object represents a variable whose value is not completely determined by its parents, and a ``Deterministic`` object represents a variable that is entirely determined by its parents. In object-oriented programming parlance, ``Stochastic`` and ``Deterministic`` are subclasses of the ``Variable`` class, which only serves as a template for other classes and is never actually implemented in models. The third basic class, ``Potential``, represents 'factor potentials' ([Lauritzen1990]_,[Jordan2004]_), which are *not* variables but simply log-likelihood terms and/or constraints that are multiplied into joint distributions to modify them. ``Potential`` and ``Variable`` are subclasses of ``Node``. PyMC probability models are simply linked groups of ``Stochastic``, ``Deterministic`` and ``Potential`` objects. These objects have very limited awareness of the models in which they are embedded and do not themselves possess methods for updating their values in fitting algorithms. Objects responsible for fitting probability models are described in chapter :ref:`chap_modelfitting`. .. _stochastic: The Stochastic class ==================== A stochastic variable has the following primary attributes: ``value``: The variable's current value. ``logp``: The log-probability of the variable's current value given the values of its parents. A stochastic variable can optionally be endowed with a method called ``random``, which draws a value for the variable given the values of its parents [#]_. Stochastic objects have the following additional attributes: ``parents``: A dictionary containing the variable's parents. The keys of the dictionary correspond to the names assigned to the variable's parents by the variable, and the values correspond to the actual parents. For example, the keys of :math:`s`'s parents dictionary in model (:eq:`disastermodel`) would be ``'t_l'`` and ``'t_h'``. Thanks to Python's dynamic typing, the actual parents (*i.e.* the values of the dictionary) may be of any class or type. ``children``: A set containing the variable's children. ``extended_parents``: A set containing all the stochastic variables on which the variable depends either directly or via a sequence of deterministic variables. If the value of any of these variables changes, the variable will need to recompute its log-probability. ``extended_children``: A set containing all the stochastic variables and potentials that depend on the variable either directly or via a sequence of deterministic variables. If the variable's value changes, all of these variables will need to recompute their log-probabilities. ``observed``: A flag (boolean) indicating whether the variable's value has been observed (is fixed). ``dtype``: A NumPy dtype object (such as ``numpy.int``) that specifies the type of the variable's value to fitting methods. If this is ``None`` (default) then no type is enforced. Creation of stochastic variables -------------------------------- There are three main ways to create stochastic variables, called the **automatic**, **decorator**, and **direct** interfaces. **Automatic** Stochastic variables with standard distributions provided by PyMC (see chapter :ref:`chap_distributions`) can be created in a single line using special subclasses of ``Stochastic``. For example, the uniformly-distributed discrete variable :math:`switchpoint` in (:eq:`disaster_model`) is created using the automatic interface as follows:: switchpoint = DiscreteUniform('switchpoint', lower=0, upper=110, doc='Switchpoint[year]') In addition to the classes in chapter :ref:`chap_distributions`, ``scipy.stats.distributions``' random variable classes are wrapped as ``Stochastic`` subclasses if SciPy is installed. These distributions are in the submodule ``pymc.SciPyDistributions``. Users can call the class factory ``stochastic_from_dist`` to produce ``Stochastic`` subclasses of their own from probability distributions not included with PyMC. **Decorator** Uniformly-distributed discrete stochastic variable :math:`switchpoint` in (:eq:`disaster_model`) could alternatively be created from a function that computes its log-probability as follows:: @pymc.stochastic(dtype=int) def switchpoint(value=1900, t_l=1851, t_h=1962): """The switchpoint for the rate of disaster occurrence.""" if value > t_h or value < t_l: # Invalid values return -numpy.inf else: # Uniform log-likelihood return -numpy.log(t_h - t_l + 1) Note that this is a simple Python function preceded by a Python expression called a **decorator** [vanRossum2010]_, here called ``@stochastic``. Generally, decorators enhance functions with additional properties or functionality. The ``Stochastic`` object produced by the ``@stochastic`` decorator will evaluate its log-probability using the function :math:`switchpoint`. The ``value`` argument, which is required, provides an initial value for the variable. The remaining arguments will be assigned as parents of :math:`switchpoint` (*i.e.* they will populate the ``parents`` dictionary). To emphasize, the Python function decorated by ``@stochastic`` should compute the *log*-density or *log*-probability of the variable. That is why the return value in the example above is :math:`-\log(t_h-t_l+1)` rather than :math:`1/(t_h-t_l+1)`. The ``value`` and parents of stochastic variables may be any objects, provided the log-probability function returns a real number (``float``). PyMC and SciPy both provide implementations of several standard probability distributions that may be helpful for creating custom stochastic variables. The decorator stochastic can take any of the arguments ``Stochastic.__init__`` takes except ``parents``, ``logp``, ``random``, ``doc`` and ``value``. These arguments include ``trace``, ``plot``, ``verbose``, ``dtype``, ``rseed`` and ``name``. The decorator interface has a slightly more complex implementation which allows you to specify a ``random`` method for sampling the stochastic variable's value conditional on its parents. :: @pymc.stochastic(dtype=int) def switchpoint(value=1900, t_l=1851, t_h=1962): """The switchpoint for the rate of disaster occurrence.""" def logp(value, t_l, t_h): if value > t_h or value < t_l: return -numpy.inf else: return -numpy.log(t_h - t_l + 1) def random(t_l, t_h): return numpy.round( (t_l - t_h) * random() ) + t_l The stochastic variable again gets its name, docstring and parents from function :math:`switchpoint`, but in this case it will evaluate its log-probability using the ``logp`` function. The ``random`` function will be used when ``switchpoint.random()`` is called. Note that ``random`` doesn't take a ``value`` argument, as it generates values itself. **Direct** It's possible to instantiate ``Stochastic`` directly:: def switchpoint_logp(value, t_l, t_h): if value > t_h or value < t_l: return -numpy.inf else: return -numpy.log(t_h - t_l + 1) def switchpoint_rand(t_l, t_h): return numpy.round( (t_l - t_h) * random() ) + t_l switchpoint = Stochastic( logp = switchpoint_logp, doc = 'The switchpoint for the rate of disaster occurrence.', name = 'switchpoint', parents = {'t_l': 1851, 't_h': 1962}, random = switchpoint_rand, trace = True, value = 1900, dtype=int, rseed = 1., observed = False, cache_depth = 2, plot=True, verbose = 0) Notice that the log-probability and random variate functions are specified externally and passed to ``Stochastic`` as arguments. This is a rather awkward way to instantiate a stochastic variable; consequently, such implementations should be rare. .. _warning: .. topic:: A Warning: Don't update stochastic variables' values in-place ``Stochastic`` objects' values should not be updated in-place. This confuses PyMC's caching scheme and corrupts the process used for accepting or rejecting proposed values in the MCMC algorithm. The only way a stochastic variable's value should be updated is using statements of the following form:: A.value = new_value The following are in-place updates and should _never_ be used:: * ``A.value += 3`` * ``A.value[2,1] = 5`` * ``A.value.attribute = new_attribute_value`` This restriction becomes onerous if a step method proposes values for the elements of an array-valued variable separately. In this case, it may be preferable to partition the variable into several scalar-valued variables stored in an array or list. .. _data: Data ==== Data are represented by ``Stochastic`` objects whose ``observed`` attribute is set to ``True``. If a stochastic variable's ``observed`` flag is ``True``, its value cannot be changed, and it won't be sampled by the fitting method. Declaring stochastic variables to be data ----------------------------------------- In each interface, an optional keyword argument ``observed`` can be set to ``True``. In the decorator interface, this argument is added to the ``@stochastic`` decorator:: @pymc.stochastic(observed=True) In the other interfaces, the ``observed=True`` argument is added to the instantiation of the ``Stochastic``, or its subclass:: x = pymc.Binomial('x', n=n, p=p, observed=True) Alternatively, in the decorator interface only, a ``Stochastic`` object's ``observed`` flag can be set to true by stacking an ``@observed`` decorator on top of the ``@stochastic`` decorator:: @pymc.observed(dtype=int) def ... .. _deterministic: The Deterministic class ======================= The ``Deterministic`` class represents variables whose values are completely determined by the values of their parents. For example, in model (:eq:`disaster_model`), :math:`rate` is a ``deterministic`` variable. Recall it was defined by .. math:: :nowrap: \begin{eqnarray*} r_t=\left\{\begin{array}{ll} e & t\le s\\ l & t>s \end{array}\right., \end{eqnarray*} so :math:`rate`'s value can be computed exactly from the values of its parents :math:`early_mean`, :math:`late_mean` and :math:`switchpoint`. A ``deterministic`` variable's most important attribute is ``value``, which gives the current value of the variable given the values of its parents. Like ``Stochastic``'s ``logp`` attribute, this attribute is computed on-demand and cached for efficiency. A Deterministic variable has the following additional attributes: ``parents``: A dictionary containing the variable's parents. The keys of the dictionary correspond to the names assigned to the variable's parents by the variable, and the values correspond to the actual parents. ``children``: A set containing the variable's children, which must be nodes. Deterministic variables have no methods. Creation of deterministic variables ----------------------------------- Deterministic variables are less complicated than stochastic variables, and have similar **automatic**, **decorator**, and **direct** interfaces: **Automatic** A handful of common functions have been wrapped in Deterministic objects. These are brief enough to list: ``LinearCombination``: Has two parents :math:`x` and :math:`y`, both of which must be iterable (*i.e.* vector-valued). This function returns: .. math: \sum_i x_i^T y_i. ``Index``: Has two parents :math:`x` and ``index``. :math:`x` must be iterables, ``index`` must be valued as an integer. The value of an ``index`` is: .. math: x[\mathtt{index}]^T y[\mathtt{index}]. ``Index`` is useful for implementing dynamic models, in which the parent-child connections change. ``Lambda``: Converts an anonymous function (in Python, called **lambda functions**) to a ``Deterministic`` instance on a single line. ``CompletedDirichlet``: PyMC represents Dirichlet variables of length :math:`k` by the first :math:`k-1` elements; since they must sum to 1, the :math:`k^{th}` element is determined by the others. ``CompletedDirichlet`` appends the :math:`k^{th}` element to the value of its parent :math:`D`. ``Logit``, ``InvLogit``, ``StukelLogit``, ``StukelInvLogit``: Common link functions for generalized linear models, and their inverses. It’s a good idea to use these classes when feasible in order to give hints to step methods. **Elementary operations on variables** Certain elementary operations on variables create deterministic variables. For example:: >>> x = pymc.MvNormalCov('x',numpy.ones(3),numpy.eye(3)) >>> y = pymc.MvNormalCov('y',numpy.ones(3),numpy.eye(3)) >>> print x+y >>> print x[0] >>> print x[1]+y[2] All the objects thus created have ``trace=False`` and ``plot=False`` by default. This convenient method of generating simple deterministics was inspired by [Kerman2004]_. **Decorator** A deterministic variable can be created via a decorator in a way very similar to ``Stochastic``'s decorator interface:: @deterministic(plot=False) def rate(s=switchpoint, e=early_mean, l=late_mean): ''' Concatenate Poisson means ''' out = empty(len(disasters_array)) out[:s] = e out[s:] = l return out Notice that rather than returning the log-probability, as is the case for ``Stochastic`` objects, the function returns the value of the deterministic object, given its parents. This return value may be of any type, as is suitable for the problem at hand. Also notice that, unlike for ``Stochastic`` objects, there is no ``value`` argument passed, since the value is calculated deterministically by the function itself. Arguments' keys and values are converted into a parent dictionary as with ``Stochastic``'s short interface. The ``deterministic`` decorator can take ``trace``, ``verbose`` and ``plot`` arguments, like the ``stochastic`` decorator [#]_. **Direct** ``Deterministic`` objects can also be instantiated directly:: def rate_eval(switchpoint = s, early_rate = e, late_rate = l): value = zeros(N) value[:switchpoint] = early_rate value[switchpoint:] = late_rate return value rate = pymc.Deterministic(eval = rate_eval, name = 'rate', parents = {'switchpoint': switchpoint, 'early_mean': early_mean, 'late_mean': late_mean}), doc = 'The rate of disaster occurrence.', trace = True, verbose = 0, dtype=float, plot=False, cache_depth = 2) .. _containers: Containers ========== In some situations it would be inconvenient to assign a unique label to each parent of some variable. Consider :math:`y` in the following model: .. math:: :nowrap: \begin{align*} x_0 &\sim N (0,\tau_x)\\ x_{i+1}|x_i &\sim \text{N}(x_i, \tau_x)\\ &i=0,\ldots, N-2\\ y|x &\sim N \left(\sum_{i=0}^{N-1}x_i^2,\tau_y\right) \end{align*} Here, :math:`y` depends on every element of the Markov chain :math:`x`, but we wouldn't want to manually enter :math:`N` parent labels ```x_0'``, ```x_1'``, etc. This situation can be handled naturally in PyMC:: N = 10 x_0 = pymc.Normal(`x_0', mu=0, tau=1) x = numpy.empty(N, dtype=object) x[0] = x_0 for i in range(1, N): x[i] = pymc.Normal(`x_%i' % i, mu=x[i-1], tau=1) @pymc.observed def y(value=1, mu=x, tau=100): return pymc.normal_like(value, numpy.sum(mu**2), tau) PyMC automatically wraps array :math:`x` in an appropriate ``Container`` class. The expression ``'x_%i' % i`` labels each ``Normal`` object in the container with the appropriate index :math:`i`. For example, if ``i=1``, the name of the corresponding element becomes ```x_1'``. Containers, like variables, have an attribute called ``value``. This attribute returns a copy of the (possibly nested) iterable that was passed into the container function, but with each variable inside replaced with its corresponding value. Containers can be constructed from lists, tuples, dictionaries, Numpy arrays, modules, sets or any object with a ``__dict__`` attribute. Variables and non-variables can be freely mixed in these containers, and different types of containers can be nested [#]_. Containers attempt to behave like the objects they wrap. All containers are subclasses of ``ContainerBase``. Containers have the following useful attributes in addition to ``value``: * ``variables`` * ``stochastics`` * ``potentials`` * ``deterministics`` * ``data_stochastics`` * ``step_methods``. Each of these attributes is a set containing all the objects of each type in a container, and within any containers in the container. .. _potential: The Potential class =================== The joint density corresponding to model (:eq:`disastermodel`) can be written as follows: .. math:: :nowrap: \begin{eqnarray*} p(D,s,l,e) = p(D|s,l,e) p(s) p(l) p(e). \end{eqnarray*} Each factor in the joint distribution is a proper, normalized probability distribution for one of the variables conditional on its parents. Such factors are contributed by ``Stochastic`` objects. In some cases, it's nice to be able to modify the joint density by incorporating terms that don't correspond to probabilities of variables conditional on parents, for example: .. math:: :nowrap: \begin{eqnarray*} p(x_0, x_2, \ldots x_{N-1}) \propto \prod_{i=0}^{N-2} \psi_i(x_i, x_{i+1}). \end{eqnarray*} In other cases we may want to add probability terms to existing models. For example, suppose we want to constrain the difference between :math:`e` and :math:`l` in (:eq:`disastermodel`) to be less than 1, so that the joint density becomes .. math:: :nowrap: \begin{eqnarray*} p(D,s,l,e) \propto p(D|s,l,e) p(s) p(l) p(e) I(|e-l|<1). \end{eqnarray*} Its possible to express this constraint by adding variables to the model, or by grouping :math:`e` and :math:`l` to form a vector-valued variable, but it's uncomfortable to do so. Arbitrary factors such as :math:`\psi` and the indicator function :math:`I(|e-l|<1)` are implemented by objects of class ``Potential`` (from [Lauritzen1990]_ and [Jordan2004]_, who call these terms 'factor potentials'). Bayesian hierarchical notation (cf model (:eq:`disastermodel`)) doesn't accomodate these potentials. They are often used in cases where there is no natural dependence hierarchy, such as the first example above (which is known as a Markov random field). They are also useful for expressing 'soft data' [Christakos2002]_ as in the second example below. Potentials have one important attribute, ``logp``, the log of their current probability or probability density value given the values of their parents. The only other additional attribute of interest is ``parents``, a dictionary containing the potential's parents. Potentials have no methods. They have no ``trace`` attribute, because they are not variables. They cannot serve as parents of variables (for the same reason), so they have no ``children`` attribute. An example of soft data ----------------------- The role of potentials can be confusing, so we will provide another example: we have a dataset :math:`t` consisting of the days on which several marked animals were recaptured. We believe that the probability :math:`S` that an animal is not recaptured on any given day can be explained by a covariate vector :math:`x`. We model this situation as follows: .. math:: :nowrap: \begin{eqnarray*} t_i|S_i \sim \text{Geometric}(S_i), & i=1\ldots N\\ S_i = \text{logit}^{-1}(\beta x_i), &i=1\ldots N\\ \beta\sim \text{N}(\mu_\beta, V_\beta). \end{eqnarray*} Now suppose we have some knowledge of other related experiments and we have a good idea of what :math:`S` will be independent of the value of :math:`\beta`. It's not obvious how to work this 'soft data', because as we've written the model :math:`S` is completely determined by :math:`\beta`. There are three options within the strict Bayesian hierarchical framework: * Express the soft data as an informative prior on :math:`\beta`. * Incorporate the data from the previous experiments explicitly into the model. * Refactor the model so that :math:`S` is at the bottom of the hierarchy, and assign the prior directly. Factor potentials provide a convenient way to incorporate the soft data without the need for such major modifications. We can simply modify the joint distribution from .. math:: :nowrap: \begin{eqnarray*} p(t|S(x,\beta)) p(\beta) \end{eqnarray*} to .. math:: :nowrap: \begin{eqnarray*} \gamma(S) p(t|S(x,\beta)) p(\beta), \end{eqnarray*} where the value of :math:`\gamma` is large if :math:`S`'s value is plausible (based on our external information) and small otherwise. We do not know the normalizing constant for the new distribution, but we don't need it to use most popular fitting algorithms. It's a good idea to check the induced priors on :math:`S` and :math:`\beta` for sanity. This can be done in PyMC by fitting the model with the data :math:`t` removed. Its important to understand that :math:`\gamma` is not a variable, so it does not have a value. That means, among other things, there will be no :math:`\gamma` column in MCMC traces. Creation of Potentials ---------------------- There are two ways to create potentials: **Decorator** A potential can be created via a decorator in a way very similar to ``Deterministic``'s decorator interface:: @pymc.potential def psi_i(x_lo = x[i], x_hi = x[i+1]): """A pair potential""" return -(xlo - xhi)**2 The function supplied should return the potential's current *log*-probability or *log*-density as a Numpy ``float``. The ``potential`` decorator can take ``verbose`` and ``cache_depth`` arguments like the ``stochastic`` decorator. **Direct** The same potential could be created directly as follows:: def psi_i_logp(x_lo = x[i], x_hi = x[i+1]): return -(xlo - xhi)**2 psi_i = pymc.Potential(logp = psi_i_logp, name = 'psi_i', parents = {'xlo': x[i], 'xhi': x[i+1]}, doc = 'A pair potential', verbose = 0, cache_depth = 2) .. _graphical: Graphing models =============== The function ``dag`` (or ``graph``) in ``pymc.graph`` draws graphical representations of ``Model`` (Chapter :ref:`chap_modelfitting`) instances using `GraphViz `_ via the Python package `PyDot `_. See [Lauritzen1990]_ and [Jordan2004]_ for more discussion of useful information that can be read off of graphical models [#]_. The symbol for stochastic variables is an ellipse. Parent-child relationships are indicated by arrows. These arrows point from parent to child and are labeled with the names assigned to the parents by the children. PyMC's symbol for deterministic variables is a downward-pointing triangle. A graphical representation of model :eq:`disastermodel` is shown in :ref:`dag`. Note that :math:`D` is shaded because it is flagged as data. The symbol for factor potentials is a rectangle, as in the following model. Factor potentials are usually associated with *undirected* grahical models. In undirected representations, each parent of a potential is connected to every other parent by an undirected edge. The undirected representation of the model pictured above is much more compact: Directed or mixed graphical models can be represented in an undirected form by 'moralizing', which is done by the function ``pymc.graph.moral_graph``. .. _pot: .. figure:: _images/PotExample.* :width: 800 Directed graphical model example. Factor potentials are represented by rectangles and stochastic variables by ellipses. .. _sec_caching: Class LazyFunction and caching ============================== This section gives an overview of how PyMC computes log-probabilities. This is advanced information that is not required in order to use PyMC. The ``logp`` attributes of stochastic variables and potentials and the ``value`` attributes of deterministic variables are wrappers for instances of class ``LazyFunction``. Lazy functions are wrappers for ordinary Python functions. A lazy function ``L`` could be created from a function ``fun`` as follows:: L = pymc.LazyFunction(fun, arguments) The argument ``arguments`` is a dictionary container; ``fun`` must accept keyword arguments only. When ``L``'s ``get()`` method is called, the return value is the same as the call :: fun(**arguments.value) Note that no arguments need to be passed to ``L.get``; lazy functions memorize their arguments. Before calling ``fun``, ``L`` will check the values of ``arguments.variables`` against an internal cache. This comparison is done *by reference*, not by value, and this is part of the reason why stochastic variables' values cannot be updated in-place. If ``arguments.variables``' values match a frame of the cache, the corresponding output value is returned and ``fun`` is not called. If a call to ``fun`` is needed, ``arguments.variables``' values and the return value replace the oldest frame in the cache. The depth of the cache can be set using the optional init argument ``cache_depth``, which defaults to 2. Caching is helpful in MCMC, because variables' log-probabilities and values tend to be queried multiple times for the same parental value configuration. The default cache depth of 2 turns out to be most useful in Metropolis-Hastings-type algorithms involving proposed values that may be rejected. Lazy functions are implemented in C using Pyrex, a language for writing Python extensions. .. rubric:: Footnotes .. [#] Note that the ``random`` method does not provide a Gibbs sample unless the variable has no children. .. [#] Note that deterministic variables have no ``observed`` flag. If a deterministic variable's value were known, its parents would be restricted to the inverse image of that value under the deterministic variable's evaluation function. This usage would be extremely difficult to support in general, but it can be implemented for particular applications at the ``StepMethod`` level. .. [#] Nodes whose parents are containers make private shallow copies of those containers. This is done for technical reasons rather than to protect users from accidental misuse. .. [#] Note that these authors do not consider deterministic variables. pymc-2.2+ds/docs/modelchecking.rst000066400000000000000000000627741204033704200172200ustar00rootroot00000000000000.. _chap_modelchecking: ****************************** Model checking and diagnostics ****************************** .. _convergence: Convergence Diagnostics ======================= Valid inferences from sequences of MCMC samples are based on the assumption that the samples are derived from the true posterior distribution of interest. Theory guarantees this condition as the number of iterations approaches infinity. It is important, therefore, to determine the minimum number of samples required to ensure a reasonable approximation to the target posterior density. Unfortunately, no universal threshold exists across all problems, so convergence must be assessed independently each time MCMC estimation is performed. The procedures for verifying convergence are collectively known as convergence diagnostics. One approach to analyzing convergence is analytical, whereby the variance of the sample at different sections of the chain are compared to that of the limiting distribution. These methods use distance metrics to analyze convergence, or place theoretical bounds on the sample variance, and though they are promising, they are generally difficult to use and are not prominent in the MCMC literature. More common is a statistical approach to assessing convergence. With this approach, rather than considering the properties of the theoretical target distribution, only the statistical properties of the observed chain are analyzed. Reliance on the sample alone restricts such convergence criteria to heuristics. As a result, convergence cannot be guaranteed. Although evidence for lack of convergence using statistical convergence diagnostics will correctly imply lack of convergence in the chain, the absence of such evidence will not *guarantee* convergence in the chain. Nevertheless, negative results for one or more criteria may provide some measure of assurance to users that their sample will provide valid inferences. For most simple models, convergence will occur quickly, sometimes within a the first several hundred iterations, after which all remaining samples of the chain may be used to calculate posterior quantities. For more complex models, convergence requires a significantly longer burn-in period; sometimes orders of magnitude more samples are needed. Frequently, lack of convergence will be caused by poor mixing (Figure 7.1). Recall that *mixing* refers to the degree to which the Markov chain explores the support of the posterior distribution. Poor mixing may stem from inappropriate proposals (if one is using the Metropolis-Hastings sampler) or from attempting to estimate models with highly correlated variables. .. _mix: .. figure:: _images/poormixing.* :alt: Poor mixing figure :scale: 70 :align: center An example of a poorly-mixing sample in two dimensions. Notice that the chain is trapped in a region of low probability relative to the mean (dot) and variance (oval) of the true posterior quantity. Informal Methods ---------------- The most straightforward approach for assessing convergence is based on simply plotting and inspecting traces and histograms of the observed MCMC sample. If the trace of values for each of the stochastics exhibits asymptotic behavior [#]_ over the last :math:`m` iterations, this may be satisfactory evidence for convergence. A similar approach involves plotting a histogram for every set of :math:`k` iterations (perhaps 50-100) beyond some burn in threshold :math:`n`; if the histograms are not visibly different among the sample intervals, this is reasonable evidence for convergence. Note that such diagnostics should be carried out for each stochastic estimated by the MCMC algorithm, because convergent behavior by one variable does not imply evidence for convergence for other variables in the analysis. An extension of this approach can be taken when multiple parallel chains are run, rather than just a single, long chain. In this case, the final values of :math:`c` chains run for :math:`n` iterations are plotted in a histogram; just as above, this is repeated every :math:`k` iterations thereafter, and the histograms of the endpoints are plotted again and compared to the previous histogram. This is repeated until consecutive histograms are indistinguishable. Another *ad hoc* method for detecting lack of convergence is to examine the traces of several MCMC chains initialized with different starting values. Overlaying these traces on the same set of axes should (if convergence has occurred) show each chain tending toward the same equilibrium value, with approximately the same variance. Recall that the tendency for some Markov chains to converge to the true (unknown) value from diverse initial values is called *ergodicity*. This property is guaranteed by the reversible chains constructed using MCMC, and should be observable using this technique. Again, however, this approach is only a heuristic method, and cannot always detect lack of convergence, even though chains may appear ergodic. .. _metas: .. figure:: _images/metastable.* :align: center :scale: 70 An example of metastability in a two-dimensional parameter space. The chain appears to be stable in one region of the parameter space for an extended period, then unpredictably jumps to another region of the space. A principal reason that evidence from informal techniques cannot guarantee convergence is a phenomenon called metastability. Chains may appear to have converged to the true equilibrium value, displaying excellent qualities by any of the methods described above. However, after some period of stability around this value, the chain may suddenly move to another region of the parameter space (Figure 7.2). This period of metastability can sometimes be very long, and therefore escape detection by these convergence diagnostics. Unfortunately, there is no statistical technique available for detecting metastability. Formal Methods -------------- Along with the *ad hoc* techniques described above, a number of more formal methods exist which are prevalent in the literature. These are considered more formal because they are based on existing statistical methods, such as time series analysis. PyMC currently includes three formal convergence diagnostic methods. The first, proposed by [Geweke1992]_, is a time-series approach that compares the mean and variance of segments from the beginning and end of a single chain. .. math:: z = \frac{\bar{\theta}_a - \bar{\theta}_b}{\sqrt{Var(\theta_a) + Var(\theta_b)}} where :math:`a` is the early interval and :math:`b` the late interval. If the z-scores (theoretically distributed as standard normal variates) of these two segments are similar, it can provide evidence for convergence. PyMC calculates z-scores of the difference between various initial segments along the chain, and the last 50% of the remaining chain. If the chain has converged, the majority of points should fall within 2 standard deviations of zero. Diagnostic z-scores can be obtained by calling the ``geweke`` function. It accepts either (1) a single trace, (2) a Node or Stochastic object, or (4) an entire Model object:: geweke(x, first=0.1, last=0.5, intervals=20) The arguments expected are the following: * ``pymc_object``: The object that is or contains the output trace(s). * ``first`` (optional): First portion of chain to be used in Geweke diagnostic. Defaults to 0.1 (*i.e.* first 10% of chain). * ``last`` (optional): Last portion of chain to be used in Geweke diagnostic. Defaults to 0.5 (*i.e.* last 50% of chain). * ``intervals`` (optional): Number of sub-chains to analyze. Defaults to 20. The resulting scores are best interpreted graphically, using the ``geweke_plot`` function. This displays the scores in series, in relation to the 2 standard deviation boundaries around zero. Hence, it is easy to see departures from the standard normal assumption. .. _geweke: .. figure:: _images/geweke.* :align: center :alt: Geweke figure. :width: 800 Sample plot of Geweke z-scores for a variable using ``geweke_plot``. The occurrence of the scores well within 2 standard deviations of zero gives not indicate of lack of convergence (top), while deviations exceeding 2 standard deviations suggest that additional samples are requred to achieve convergence (bottom). ``geweke_plot`` takes either a single set of scores, or a dictionary of scores (output by ``geweke`` when an entire Sampler is passed) as its argument:: def geweke_plot(scores, name='geweke', format='png', suffix='-diagnostic', path='./', fontmap = {1:10, 2:8, 3:6, 4:5, 5:4}, verbose=1) The arguments are defined as: * ``scores``: The object that contains the Geweke scores. Can be a list (one set) or a dictionary (multiple sets). * ``name`` (optional): Name used for output files. For multiple scores, the dictionary keys are used as names. * ``format`` (optional): Graphic output file format (defaults to *png*). * ``suffix`` (optional): Suffix to filename (defaults to *-diagnostic*) * ``path`` (optional): The path for output graphics (defaults to working directory). * ``fontmap`` (optional): Dictionary containing the font map for the labels of the graphic. * ``verbose`` (optional): Verbosity level for output (defaults to 1). To illustrate, consider the sample model ``gelman_bioassay`` that is used to instantiate a MCMC sampler. The sampler is then run for a given number of iterations:: >>> from pymc.examples import gelman_bioassay >>> S = pymc.MCMC(gelman_bioassay) >>> S.sample(10000, burn=5000) It is easiest simply to pass the entire sampler ``S`` the ``geweke`` function:: >>> scores = pymc.geweke(S, intervals=20) >>> pymc.Matplot.geweke_plot(scores) Alternatively, individual stochastics within ``S`` can be analyzed for convergence:: >>> trace = S.trace("alpha")[:] >>> alpha_scores = pymc.geweke(trace, intervals=20) >>> pymc.Matplot.geweke_plot(alpha_scores, "alpha") An example of convergence and non-convergence of a chain using `geweke_plot` is given in Figure 7.3. The second diagnostic provided by PyMC is the [Raftery1995a]_ procedure. This approach estimates the number of iterations required to reach convergence, along with the number of burn-in samples to be discarded and the appropriate thinning interval. A separate estimate of both quantities can be obtained for each variable in a given model. As the criterion for determining convergence, the Raftery and Lewis approach uses the accuracy of estimation of a user-specified quantile. For example, we may want to estimate the quantile :math:`q=0.975` to within :math:`r=0.005` with probability :math:`s=0.95`. In other words, .. math:: Pr(|\hat{q}-q| \le r) = s From any sample of :math:`\theta`, one can construct a binary chain: .. math:: Z^{(j)} = I(\theta^{(j)} \le u_q) where :math:`u_q` is the quantile value and :math:`I` is the indicator function. While :math:`\{\theta^{(j)}\}` is a Markov chain, :math:`\{Z^{(j)}\}` is not necessarily so. In any case, the serial dependency among :math:`Z^{(j)}` decreases as the thinning interval :math:`k` increases. A value of :math:`k` is chosen to be the smallest value such that the first order Markov chain is preferable to the second order Markov chain. This thinned sample is used to determine number of burn-in samples. This is done by comparing the remaining samples from burn-in intervals of increasing length to the limiting distribution of the chain. An appropriate value is one for which the truncated sample's distribution is within :math:`\epsilon` (arbitrarily small) of the limiting distribution. See [Raftery1995a]_ or [Gamerman1997]_ for computational details. Estimates for sample size tend to be conservative. This diagnostic is best used on a short pilot run of a particular model, and the results used to parameterize a subsequent sample that is to be used for inference. Its calling convention is as follows:: raftery_lewis(x, q, r, s=.95, epsilon=.001, verbose=1) The arguments are: * ``pymc_object``: The object that contains the Geweke scores. Can be a list (one set) or a dictionary (multiple sets). * ``q``: Desired quantile to be estimated. * ``r``: Desired accuracy for quantile. * ``s`` (optional): Probability of attaining the requested accuracy (defaults to 0.95). * ``epsilon`` (optional) : Half width of the tolerance interval required for the q-quantile (defaults to 0.001). * ``verbose`` (optional) : Verbosity level for output (defaults to 1). The code for ``raftery_lewis`` is based on the FORTRAN program *gibbsit* ([Raftery1995b]_). For example, consider again a sampler S run for some model my_model:: >>> S = pymc.MCMC(my_model) >>> S.sample(10000, burn=5000) One can pass either the entire sampler S or any stochastic within S to the `raftery_lewis` function, along with suitable arguments. Here, we have chosen :math:`q = 0.025` (the lower limit of the equal-tailed 95% interval) and error :math:`r = 0.01`:: >>> pymc.raftery_lewis(S, q=0.025, r=0.01) This yields diagnostics as follows for each stochastic of S, as well as a dictionary containing the diagnostic quantities:: ======================== Raftery-Lewis Diagnostic ======================== 937 iterations required (assuming independence) to achieve 0.01 accuracy with 95 percent probability. Thinning factor of 1 required to produce a first-order Markov chain. 39 iterations to be discarded at the beginning of the simulation (burn-in). 11380 subsequent iterations required. Thinning factor of 11 required to produce an independence chain. The third convergence diagnostic provided by PyMC is the Gelman-Rubin statistic ([Gelman1992]_). This diagnostic uses multiple chains to check for lack of convergence, and is based on the notion that if multiple chains have converged, by definition they should appear very similar to one another; if not, one or more of the chains has failed to converge. The Gelman-Rubin diagnostic uses an analysis of variance approach to assessing convergence. That is, it calculates both the between-chain varaince (B) and within-chain varaince (W), and assesses whether they are different enough to worry about convergence. Assuming :math:`m` chains, each of length :math:`n`, quantities are calculated by: .. math:: B &= \frac{n}{m-1} \sum_{j=1}^m (\bar{\theta}_{.j} - \bar{\theta}_{..})^2 \\ W &= \frac{1}{m} \sum_{j=1}^m \left[ \frac{1}{n-1} \sum_{i=1}^n (\theta_{ij} - \bar{\theta}_{.j})^2 \right] for each scalar estimand :math:`\theta`. Using these values, an estimate of the marginal posterior variance of :math:`\theta` can be calculated: .. math:: \hat{\text{Var}}(\theta | y) = \frac{n-1}{n} W + \frac{1}{n} B Assuming :math:`\theta` was initialized to arbitrary starting points in each chain, this quantity will overestimate the true marginal posterior variance. At the same time, :math:`W` will tend to underestimate the within-chain variance early in the sampling run. However, in the limit as :math:`n \rightarrow \infty`, both quantities will converge to the true variance of :math:`\theta`. In light of this, the Gelman-Rubin statistic monitors convergence using the ratio: .. math:: \hat{R} = \sqrt{\frac{\hat{\text{Var}}(\theta | y)}{W}} This is called the potential scale reduction, since it is an estimate of the potential reduction in the scale of :math:`\theta` as the number of simulations tends to infinity. In practice, we look for values of :math:`\hat{R}` close to one (say, less than 1.1) to be confident that a particular estimand has converged. In PyMC, the function `gelman_rubin` will calculate :math:`\hat{R}` for each stochastic node in the passed model:: >>> pymc.gelman_rubin(S) {'alpha': 1.0036389589627821, 'beta': 1.001503957313336, 'theta': [1.0013923468783055, 1.0274479503713816, 0.95365716267969636, 1.00267321019079]} For the best results, each chain should be initialized to highly dispersed starting values for each stochastic node. By default, when calling the ``summary_plot`` function using nodes with multiple chains, the :math:`\hat{R}` values will be plotted alongside the posterior intervals. .. _summary_plot: .. figure:: _images/summary.* :align: center :width: 800 Summary plot of parameters from `gelman_bioassay` model, showing credible intervals on the left and the Gelman-Rubin statistic on the right. Additional convergence diagnostics are available in the `R`_ statistical package ([R2010]_), via the `CODA`_ module ([Plummer2008]_). PyMC includes a method ``coda`` for exporting model traces in a format that may be directly read by ``coda``:: >>> pymc.utils.coda(S) Generating CODA output ================================================== Processing deaths Processing beta Processing theta Processing alpha The lone argument is the PyMC sampler for which output is desired. Calling ``coda`` yields a file containing raw trace values (suffix ``.out``) and a file containing indices to the trace values (suffix ``.ind``). .. _`R`: http://lib.stat.cmu.edu/r/cran/ .. _`CODA`: http://www-fis.iarc.fr/coda/ .. % section convergence_diagnostics (end) .. _autocorr_section: Autocorrelation Plots ===================== Samples from MCMC algorithms are ususally autocorrelated, due partly to the inherent Markovian dependence structure. The degree of autocorrelation can be quantified using the autocorrelation function: .. math:: \rho_k & = \frac{\mbox{Cov}(X_t, X_{t+k})}{\sqrt{\mbox{Var}(X_t)\mbox{Var}(X_{t+k})}} \\ & = \frac{E[(X_t - \theta)(X_{t+k} - \theta)]}{\sqrt{E[(X_t - \theta)^2] E[(X_{t+k} - \theta)^2]}} PyMC includes a function for plotting the autocorrelation function for each stochastics in the sampler (Figure 7.5). This allows users to examine the relationship among successive samples within sampled chains. Significant autocorrelation suggests that chains require thinning prior to use of the posterior statistics for inference. :: autocorrelation(pymc_object, name, maxlag=100, format='png', suffix='-acf', path='./', fontmap = {1:10, 2:8, 3:6, 4:5, 5:4}, verbose=1) * ``pymc_object``: The object that is or contains the output trace(s). * ``name``: Name used for output files. * ``maxlag``: The highest lag interval for which autocorrelation is calculated. * ``format`` (optional): Graphic output file format (defaults to *png*). * ``suffix`` (optional): Suffix to filename (defaults to *-diagnostic*) * ``path`` (optional): The path for output graphics (defaults to working directory). * ``fontmap`` (optional): Dictionary containing the font map for the labels of the graphic. * ``verbose`` (optional): Verbosity level for output (defaults to 1). Autocorrelation plots can be obtained simply by passing the sampler to the `autocorrelation` function (within the `Matplot` module) directly:: >>> S = pymc.MCMC(gelman_bioassay) >>> S.sample(10000, burn=5000) >>> pymc.Matplot.autocorrelation(S) Alternatively, variables within a model can be plotted individually. For example, the parameter `beta` that was estimated using sampler `S` for the `gelman_bioassay` model will yield a correlation plot as follows:: >>> pymc.Matplot.autocorrelation(S.beta) .. _autocorr: .. figure:: _images/autocorr.* :align: center :alt: Autocorrelation figure :scale: 70 % :width: 800 Sample autocorrelation plot for the switchpoint variable from the coal mining disasters example model. .. % section autocorrelation_plots (end) .. _gof_section: Goodness of Fit =============== Checking for model convergence is only the first step in the evaluation of MCMC model outputs. It is possible for an entirely unsuitable model to converge, so additional steps are needed to ensure that the estimated model adequately fits the data. One intuitive way of evaluating model fit is to compare model predictions with the observations used to fit the model. In other words, the fitted model can be used to simulate data, and the distribution of the simulated data should resemble the distribution of the actual data. Fortunately, simulating data from the model is a natural component of the Bayesian modelling framework. Recall, from the discussion on imputation of missing data, the posterior predictive distribution: .. math:: p(\tilde{y}|y) = \int p(\tilde{y}|\theta) f(\theta|y) d\theta Here, :math:`\tilde{y}` represents some hypothetical new data that would be expected, taking into account the posterior uncertainty in the model parameters. Sampling from the posterior predictive distribution is easy in PyMC. The code looks identical to the corresponding data stochastic, with two modifications: (1) the node should be specified as deterministic and (2) the statistical likelihoods should be replaced by random number generators. As an example, consider a simple dose-response model, where deaths are modeled as a binomial random variable for which the probability of death is a logit-linear function of the dose of a particular drug:: n = [5]*4 dose = [-.86,-.3,-.05,.73] x = [0,1,3,5] alpha = pymc.Normal('alpha', mu=0.0, tau=0.01) beta = pymc.Normal('beta', mu=0.0, tau=0.01) @pymc.deterministic def theta(a=alpha, b=beta, d=dose): """theta = inv_logit(a+b)""" return pymc.invlogit(a+b*d) # deaths ~ binomial(n, p) deaths = pymc.Binomial('deaths', n=n, p=theta, value=x, observed=True) The posterior predictive distribution of deaths uses the same functional form as the data likelihood, in this case a binomial stochastic. Here is the corresponding sample from the posterior predictive distribution:: deaths_sim = pymc.Binomial('deaths_sim', n=n, p=theta) Notice that the observed stochastic `pymc.Binomial` has been replaced with a stochastic node that is identical in every respect to `deaths`, except that its values are not fixed to be the observed data -- they are left to vary according to the values of the fitted parameters. The degree to which simulated data correspond to observations can be evaluated in at least two ways. First, these quantities can simply be compared visually. This allows for a qualitative comparison of model-based replicates and observations. If there is poor fit, the true value of the data may appear in the tails of the histogram of replicated data, while a good fit will tend to show the true data in high-probability regions of the posterior predictive distribution (Figure 7.6). .. _gof: .. figure:: _images/gof.* :align: center :alt: GOF figure :scale: 70 % :width: 800 Data sampled from the posterior predictive distribution of a binomial random variate. The observed value (1) is shown by the dotted red line. The Matplot package in PyMC provides an easy way of producing such plots, via the ``gof_plot`` function. To illustrate, consider a single data point ``x`` and an array of values ``x_sim`` sampled from the posterior predictive distribution. The histogram is generated by calling:: pymc.Matplot.gof_plot(x_sim, x, name='x') A second approach for evaluating goodness of fit using samples from the posterior predictive distribution involves the use of a statistical criterion. For example, the Bayesian p-value [Gelman1996]_ uses a discrepancy measure that quantifies the difference between data (observed or simulated) and the expected value, conditional on some model. One such discrepancy measure is the Freeman-Tukey statistic [Brooks2000]_: .. math:: D(x|\theta) = \sum_j (\sqrt{x_j}-\sqrt{e_j})^2, where the :math:`x_j` are data and :math:`e_j` are the corresponding expected values, based on the model. Model fit is assessed by comparing the discrepancies from observed data to those from simulated data. On average, we expect the difference between them to be zero; hence, the Bayesian *p* value is simply the proportion of simulated discrepancies that are larger than their corresponding observed discrepancies: .. math:: p = Pr[ D(x_{\text{sim}}|\theta) > D(x_{\text{obs}}|\theta) ] If :math:`p` is very large (e.g. :math:`>0.975`) or very small (e.g. :math:`<0.025`) this implies that the model is not consistent with the data, and thus is evidence of lack of fit. Graphically, data and simulated discrepancies plotted together should be clustered along a 45 degree line passing through the origin, as shown in Figure 7.7. .. _deviate: .. figure:: _images/deviates.png :align: center :alt: deviates figure :scale: 80 % :width: 800 Plot of deviates of observed and simulated data from expected values. The cluster of points symmetrically about the 45 degree line (and the reported p-value) suggests acceptable fit for the modeled parameter. The ``discrepancy`` function in the ``diagnostics`` package can be used to generate discrepancy statistics from arrays of data, simulated values, and expected values:: D = pymc.discrepancy(x, x_sim, x_exp) For a dataset of size :math:`n` and an MCMC chain of length :math:`r`, this implies that ``x`` is size ``(n,)``, ``x_sim`` is size ``(r,n)`` and ``x_exp`` is either size ``(r,)`` or ``(r,n)``. A call to this function returns two arrays of discrepancy values (simulated and observed), which can be passed to the ``discrepancy_plot`` function in the `Matplot` module to generate a scatter plot, and if desired, a *p* value:: pymc.Matplot.discrepancy_plot(D, name='D', report_p=True) Additional optional arguments for ``discrepancy_plot`` are identical to other PyMC plotting functions. .. % section goodness_of_fit (end) .. rubric:: Footnotes .. [#] Asymptotic behaviour implies that the variance and the mean value of the sample stays relatively constant over some arbitrary period.pymc-2.2+ds/docs/modelfitting.rst000066400000000000000000000666241204033704200171070ustar00rootroot00000000000000.. _chap_modelfitting: ************** Fitting Models ************** PyMC provides three objects that fit models: * ``MCMC``, which coordinates Markov chain Monte Carlo algorithms. The actual work of updating stochastic variables conditional on the rest of the model is done by ``StepMethod`` objects, which are described in this chapter. * ``MAP``, which computes maximum *a posteriori* estimates. * ``NormApprox``, which computes the 'normal approximation' [Gelman2004]_: the joint distribution of all stochastic variables in a model is approximated as normal using local information at the maximum *a posteriori* estimate. All three objects are subclasses of ``Model``, which is PyMC's base class for fitting methods. ``MCMC`` and ``NormApprox``, both of which can produce samples from the posterior, are subclasses of ``Sampler``, which is PyMC's base class for Monte Carlo fitting methods. ``Sampler`` provides a generic sampling loop method and database support for storing large sets of joint samples. These base classes implement some basic methods that are inherited by the three implemented fitting methods, so they are documented at the end of this section. .. _sec_modelinstantiation: Creating models =============== The first argument to any fitting method's ``__init__`` method, including that of ``MCMC``, is called ``input``. The ``input`` argument can be just about anything; once you have defined the nodes that make up your model, you shouldn't even have to think about how to wrap them in a ``Model`` instance. Some examples of model instantiation using nodes ``a``, ``b`` and ``c`` follow: * ``M = Model(set([a,b,c]))`` * ``M = Model({`a': a, `d': [b,c]})`` In this case, :math:`M` will expose :math:`a` and :math:`d` as attributes: ``M.a`` will be :math:`a`, and ``M.d`` will be ``[b,c]``. * ``M = Model([[a,b],c])`` * If file ``MyModule`` contains the definitions of ``a``, ``b`` and ``c``:: import MyModule M = Model(MyModule) In this case, :math:`M` will expose :math:`a`, :math:`b` and :math:`c` as attributes. * Using a 'model factory' function:: def make_model(x): a = pymc.Exponential('a', beta=x, value=0.5) @pymc.deterministic def b(a=a): return 100-a @pymc.stochastic def c(value=.5, a=a, b=b): return (value-a)**2/b return locals() M = pymc.Model(make_model(3)) In this case, :math:`M` will also expose :math:`a`, :math:`b` and :math:`c` as attributes. .. _sec_model: The Model class =============== This class serves as a container for probability models and as a base class for the classes responsible for model fitting, such as ``MCMC``. ``Model``'s init method takes the following arguments: ``input``: Some collection of PyMC nodes defining a probability model. These may be stored in a list, set, tuple, dictionary, array, module, or any object with a ``__dict__`` attribute. ``verbose`` (optional): An integer controlling the verbosity of the model's output. Models' useful methods are: ``draw_from_prior()``: Sets all stochastic variables' values to new random values, which would be a sample from the joint distribution if all data and ``Potential`` instances' log-probability functions returned zero. If any stochastic variables lack a ``random()`` method, PyMC will raise an exception. ``seed()``: Same as ``draw_from_prior``, but only ``stochastics`` whose ``rseed`` attribute is not ``None`` are changed. As introduced in the previous chapter, the helper function ``graph.dag`` produces graphical representations of models (see [Jordan2004]_). Models have the following important attributes: * ``variables`` * ``nodes`` * ``stochastics`` * ``potentials`` * ``deterministics`` * ``observed_stochastics`` * ``containers`` * ``value`` * ``logp`` In addition, models expose each node they contain as an attribute. For instance, if model ``M`` were produced from model (:eq:`disastermodel`) ``M.s`` would return the switchpoint variable. .. _sec_map: Maximum a posteriori estimates ============================== The ``MAP`` class sets all stochastic variables to their maximum *a posteriori* values using functions in SciPy's ``optimize`` package; hence, SciPy must be installed to use it. ``MAP`` can only handle variables whose dtype is ``float``, so it will not work, for example, on model (:eq:`disastermodel`). To fit the model in :file:`examples/gelman_bioassay.py` using ``MAP``, do the following:: >>> from pymc.examples import gelman_bioassay >>> M = pymc.MAP(gelman_bioassay) >>> M.fit() This call will cause :math:`M` to fit the model using Nelder-Mead optimization, which does not require derivatives. The variables in ``DisasterModel`` have now been set to their maximum *a posteriori* values:: >>> M.alpha.value array(0.8465892309923545) >>> M.beta.value array(7.7488499785334168) In addition, the AIC and BIC of the model are now available:: >>> M.AIC 7.9648372671389458 >>> M.BIC 6.7374259893787265 ``MAP`` has two useful methods: ``fit(method ='fmin', iterlim=1000, tol=.0001)``: The optimization method may be ``fmin``, ``fmin_l_bfgs_b``, ``fmin_ncg``, ``fmin_cg``, or ``fmin_powell``. See the documentation of SciPy's ``optimize`` package for the details of these methods. The ``tol`` and ``iterlim`` parameters are passed to the optimization function under the appropriate names. ``revert_to_max()``: If the values of the constituent stochastic variables change after fitting, this function will reset them to their maximum *a posteriori* values. If you're going to use an optimization method that requires derivatives, ``MAP``'s ``__init__`` method can take additional parameters ``eps`` and ``diff_order``. ``diff_order``, which must be an integer, specifies the order of the numerical approximation (see the SciPy function ``derivative``). The step size for numerical derivatives is controlled by ``eps``, which may be either a single value or a dictionary of values whose keys are variables (actual objects, not names). The useful attributes of ``MAP`` are: ``logp``: The joint log-probability of the model. ``logp_at_max``: The maximum joint log-probability of the model. ``AIC``: Akaike's information criterion for this model ([Akaike1973]_,[Burnham2002]_). ``BIC``: The Bayesian information criterion for this model [Schwarz1978]_. One use of the ``MAP`` class is finding reasonable initial states for MCMC chains. Note that multiple ``Model`` subclasses can handle the same collection of nodes. .. _sec_norm-approx: Normal approximations ===================== The ``NormApprox`` class extends the ``MAP`` class by approximating the posterior covariance of the model using the Fisher information matrix, or the Hessian of the joint log probability at the maximum. To fit the model in :file:`examples/gelman_bioassay.py` using ``NormApprox``, do:: >>> N = pymc.NormApprox(gelman_bioassay) >>> N.fit() The approximate joint posterior mean and covariance of the variables are available via the attributes ``mu`` and ``C``:: >>> N.mu[N.alpha] array([ 0.84658923]) >>> N.mu[N.alpha, N.beta] array([ 0.84658923, 7.74884998]) >>> N.C[N.alpha] matrix([[ 1.03854093]]) >>> N.C[N.alpha, N.beta] matrix([[ 1.03854093, 3.54601911], [ 3.54601911, 23.74406919]]) As with ``MAP``, the variables have been set to their maximum *a posteriori* values (which are also in the ``mu`` attribute) and the AIC and BIC of the model are available. In addition, it's now possible to generate samples from the posterior as with ``MCMC``:: >>> N.sample(100) >>> N.trace('alpha')[::10] array([-0.85001278, 1.58982854, 1.0388088 , 0.07626688, 1.15359581, -0.25211939, 1.39264616, 0.22551586, 2.69729987, 1.21722872]) >>> N.trace('beta')[::10] array([ 2.50203663, 14.73815047, 11.32166303, 0.43115426, 10.1182532 , 7.4063525 , 11.58584317, 8.99331152, 11.04720439, 9.5084239 ]) Any of the database backends can be used (chapter :ref:`chap_database`). In addition to the methods and attributes of ``MAP``, ``NormApprox`` provides the following methods: ``sample(iter)``: Samples from the approximate posterior distribution are drawn and stored. ``isample(iter)``: An 'interactive' version of ``sample()``: sampling can be paused, returning control to the user. ``draw``: Sets all variables to random values drawn from the approximate posterior. It provides the following additional attributes: ``mu``: A special dictionary-like object that can be keyed with multiple variables. ``N.mu[p1, p2, p3]`` would return the approximate posterior mean values of stochastic variables ``p1``, ``p2`` and ``p3``, raveled and concatenated to form a vector. ``C``: Another special dictionary-like object. ``N.C[p1, p2, p3]`` would return the approximate posterior covariance matrix of stochastic variables ``p1``, ``p2`` and ``p3``. As with ``mu``, these variables' values are raveled and concatenated before their covariance matrix is constructed. .. _sec_mcmc: Markov chain Monte Carlo: the MCMC class ======================================== The ``MCMC`` class implements PyMC's core business: producing 'traces' for a model's variables which, with careful thinning, can be considered independent joint samples from the posterior. See :ref:`chap_tutorial` for an example of basic usage. ``MCMC``'s primary job is to create and coordinate a collection of 'step methods', each of which is responsible for updating one or more variables. The available step methods are described below. Instructions on how to create your own step method are available in :ref:`chap_extending`. ``MCMC`` provides the following useful methods: ``sample(iter, burn, thin, tune_interval, tune_throughout, save_interval, ...)``: Runs the MCMC algorithm and produces the traces. The ``iter`` argument controls the total number of MCMC iterations. No tallying will be done during the first ``burn`` iterations; these samples will be forgotten. After this burn-in period, tallying will be done each ``thin`` iterations. Tuning will be done each ``tune_interval`` iterations. If ``tune_throughout=False``, no more tuning will be done after the burnin period. The model state will be saved every ``save_interval`` iterations, if given. ``isample(iter, burn, thin, tune_interval, tune_throughout, save_interval, ...)``: An interactive version of ``sample``. The sampling loop may be paused at any time, returning control to the user. ``use_step_method(method, *args, **kwargs)``: Creates an instance of step method class ``method`` to handle some stochastic variables. The extra arguments are passed to the ``init`` method of ``method``. Assigning a step method to a variable manually will prevent the ``MCMC`` instance from automatically assigning one. However, you may handle a variable with multiple step methods. ``goodness()``: Calculates goodness-of-fit (GOF) statistics according to [Brooks2000]_. ``save_state()``: Saves the current state of the sampler, including all stochastics, to the database. This allows the sampler to be reconstituted at a later time to resume sampling. This is not supported yet for the ``sqlite`` backend. ``restore_state()``: Restores the sampler to the state stored in the database. ``stats()``: Generate summary statistics for all nodes in the model. ``remember(trace_index)``: Set all variables' values from frame ``trace_index`` in the database. MCMC samplers' step methods can be accessed via the ``step_method_dict`` attribute. ``M.step_method_dict[x]`` returns a list of the step methods ``M`` will use to handle the stochastic variable ``x``. After sampling, the information tallied by ``M`` can be queried via ``M.db.trace_names``. In addition to the values of variables, tuning information for adaptive step methods is generally tallied. These ‘traces’ can be plotted to verify that tuning has in fact terminated. You can produce 'traces' for arbitrary functions with zero arguments as well. If you issue the command ``M._funs_to_tally['trace_name'] = f`` before sampling begins, then each time the model variables’ values are tallied, ``f`` will be called with no arguments, and the return value will be tallied. After sampling ends you can retrieve the trace as ``M.trace[’trace_name’]``. .. _sec_sampler: The Sampler class ================= ``MCMC`` is a subclass of a more general class called ``Sampler``. Samplers fit models with Monte Carlo fitting methods, which characterize the posterior distribution by approximate samples from it. They are initialized as follows: ``Sampler(input=None, db='ram', name='Sampler', reinit_model=True, calc_deviance=False, verbose=0)``. The ``input`` argument is a module, list, tuple, dictionary, set, or object that contains all elements of the model, the ``db`` argument indicates which database backend should be used to store the samples (see chapter :ref:`chap_database`), ``reinit_model`` is a boolean flag that indicates whether the model should be re-initialised before running, and ``calc_deviance`` is a boolean flag indicating whether deviance should be calculated for the model at each iteration. Samplers have the following important methods: ``sample(iter, length, verbose, ...)``: Samples from the joint distribution. The ``iter`` argument controls how many times the sampling loop will be run, and the ``length`` argument controls the initial size of the database that will be used to store the samples. ``isample(iter, length, verbose, ...)``: The same as ``sample``, but the sampling is done interactively: you can pause sampling at any point and be returned to the Python prompt to inspect progress and adjust fitting parameters. While sampling is paused, the following methods are useful: ``icontinue()``: Continue interactive sampling. ``halt()``: Truncate the database and clean up. ``tally()``: Write all variables' current values to the database. The actual write operation depends on the specified database backend. ``save_state()``: Saves the current state of the sampler, including all stochastics, to the database. This allows the sampler to be reconstituted at a later time to resume sampling. This is not supported yet for the ``sqlite`` backend. ``restore_state()``: Restores the sampler to the state stored in the database. ``stats()``: Generate summary statistics for all nodes in the model. ``remember(trace_index)``: Set all variables' values from frame ``trace_index`` in the database. Note that the ``trace_index`` is different from the current iteration, since not all samples are necessarily saved due to burning and thinning. In addition, the sampler attribute ``deviance`` is a deterministic variable valued as the model's deviance at its current state. .. _sec_stepmethod: Step methods ============ Step method objects handle individual stochastic variables, or sometimes groups of them. They are responsible for making the variables they handle take single MCMC steps conditional on the rest of the model. Each subclass of ``StepMethod`` implements a method called ``step()``, which is called by ``MCMC``. Step methods with adaptive tuning parameters can optionally implement a method called ``tune()``, which causes them to assess performance (based on the acceptance rates of proposed values for the variable) so far and adjust. The major subclasses of ``StepMethod`` are ``Metropolis``, ``AdaptiveMetropolis`` and ``Gibbs``. PyMC provides several flavors of the basic Metropolis steps. The ``Gibbs`` steps are not ready for use as of the current release, but since it is feasible to write Gibbs step methods for particular applications, the ``Gibbs`` base class will be documented here. .. _metropolis: Metropolis step methods ----------------------- ``Metropolis`` and subclasses implement Metropolis-Hastings steps. To tell an ``MCMC`` object :math:`M` to handle a variable :math:`x` with a Metropolis step method, you might do the following:: M.use_step_method(pymc.Metropolis, x, proposal_sd=1., proposal_distribution='Normal') ``Metropolis`` itself handles float-valued variables, and subclasses ``DiscreteMetropolis`` and ``BinaryMetropolis`` handle integer- and boolean-valued variables, respectively. Subclasses of ``Metropolis`` must implement the following methods: ``propose()``: Sets the values of the variables handled by the Metropolis step method to proposed values. ``reject()``: If the Metropolis-Hastings acceptance test fails, this method is called to reset the values of the variables to their values before ``propose()`` was called. Note that there is no ``accept()`` method; if a proposal is accepted, the variables' values are simply left alone. Subclasses that use proposal distributions other than symmetric random-walk may specify the 'Hastings factor' by changing the ``hastings_factor`` method. See :ref:`chap_extending` for an example. ``Metropolis``' ``__init__`` method takes the following arguments: ``stochastic``: The variable to handle. ``proposal_sd``: A float or array of floats. This sets the proposal standard deviation if the proposal distribution is normal. ``scale``: A float, defaulting to 1. If the ``scale`` argument is provided but not ``proposal_sd``, ``proposal_sd`` is computed as follows:: if all(self.stochastic.value != 0.): self.proposal_sd = ones(shape(self.stochastic.value)) * \ abs(self.stochastic.value) * scale else: self.proposal_sd = ones(shape(self.stochastic.value)) * scale ``proposal_distribution``: A string indicating which distribution should be used for proposals. Current options are ``'Normal'`` and ``'Prior'``. If ``proposal_distribution=None``, the proposal distribution is chosen automatically. It is set to ``'Prior'`` if the variable has no children and has a random method, and to ``'Normal'`` otherwise. ``verbose``: An integer. By convention 0 indicates no output, 1 shows a progress bar only, 2 provides basic feedback about the current MCMC run, while 3 and 4 provide low and high debugging verbosity, respectively. Alhough the ``proposal_sd`` attribute is fixed at creation, Metropolis step methods adjust their initial proposal standard deviations using an attribute called ``adaptive_scale_factor``. When ``tune()`` is called, the acceptance ratio of the step method is examined, and this scale factor is updated accordingly. If the proposal distribution is normal, proposals will have standard deviation ``self.proposal_sd * self.adaptive_scale_factor``. By default, tuning will continue throughout the sampling loop, even after the burnin period is over. This can be changed via the ``tune_throughout`` argument to ``MCMC.sample``. If an adaptive step method's ``tally`` flag is set (the default for ``Metropolis``), a trace of its tuning parameters will be kept. If you allow tuning to continue throughout the sampling loop, it is important to verify that the 'Diminishing Tuning' condition of [Roberts2007]_ is satisfied: the amount of tuning should decrease to zero, or tuning should become very infrequent. If a Metropolis step method handles an array-valued variable, it proposes all elements independently but simultaneously. That is, it decides whether to accept or reject all elements together but it does not attempt to take the posterior correlation between elements into account. The ``AdaptiveMetropolis`` class (see below), on the other hand, does make correlated proposals. .. _subsec:adaptive_metropolis: The AdaptiveMetropolis class ---------------------------- The ``AdaptativeMetropolis`` (AM) step method works like a regular Metropolis step method, with the exception that its variables are block-updated using a multivariate jump distribution whose covariance is tuned during sampling. Although the chain is non-Markovian, it has correct ergodic properties (see [Haario2001]_). To tell an ``MCMC`` object :math:`M` to handle variables :math:`x`, :math:`y` and :math:`z` with an ``AdaptiveMetropolis`` instance, you might do the following:: M.use_step_method(pymc.AdaptiveMetropolis, [x,y,z], \ scales={'x':1, 'y':2, 'z':.5}, delay=10000) ``AdaptativeMetropolis``'s init method takes the following arguments: ``stochastics``: The stochastic variables to handle. These will be updated jointly. ``cov`` (optional): An initial covariance matrix. Defaults to the identity matrix, adjusted according to the ``scales`` argument. ``delay`` (optional): The number of iterations to delay before computing the empirical covariance matrix. ``scales`` (optional): The initial covariance matrix will be diagonal, and its diagonal elements will be set to ``scales`` times the stochastics' values, squared. ``interval`` (optional): The number of iterations between updates of the covariance matrix. Defaults to 1000. ``greedy`` (optional): If ``True``, only accepted jumps will be counted toward the delay before the covariance is first computed. Defaults to ``True``. ``verbose``: An integer from 0 to 4 controlling the verbosity of the step method's printed output. ``shrink_if_necessary`` (optional): Whether the proposal covariance should be shrunk if the acceptance rate becomes extremely small. In this algorithm, jumps are proposed from a multivariate normal distribution with covariance matrix :math:`\Sigma`. The algorithm first iterates until ``delay`` samples have been drawn (if ``greedy`` is true, until ``delay`` jumps have been accepted). At this point, :math:`\Sigma` is given the value of the empirical covariance of the trace so far and sampling resumes. The covariance is then updated each ``interval`` iterations throughout the entire sampling run [#]_. It is this constant adaptation of the proposal distribution that makes the chain non-Markovian. The DiscreteMetropolis class ---------------------------- This class is just like ``Metropolis``, but specialized to handle ``Stochastic`` instances with dtype ``int``. The jump proposal distribution can either be ``'Normal'``, ``'Prior'`` or ``'Poisson'`` (the default). In the normal case, the proposed value is drawn from a normal distribution centered at the current value and then rounded to the nearest integer. The BinaryMetropolis class -------------------------- This class is specialized to handle ``Stochastic`` instances with dtype ``bool``. For array-valued variables, ``BinaryMetropolis`` can be set to propose from the prior by passing in ``dist="Prior"``. Otherwise, the argument ``p_jump`` of the init method specifies how probable a change is. Like ``Metropolis``' attribute ``proposal_sd``, ``p_jump`` is tuned throughout the sampling loop via ``adaptive_scale_factor``. For scalar-valued variables, ``BinaryMetropolis`` behaves like a Gibbs sampler, since this requires no additional expense. The ``p_jump`` and ``adaptive_scale_factor`` parameters are not used in this case. .. _gibbs: Gibbs step methods ================== Gibbs step methods handle conjugate submodels. These models usually have two components: the `parent' and the `children'. For example, a gamma-distributed variable serving as the precision of several normally-distributed variables is a conjugate submodel; the gamma variable is the parent and the normal variables are the children. This section describes PyMC's current scheme for Gibbs step methods, several of which are in a semi-working state in the sandbox. It is meant to be as generic as possible to minimize code duplication, but it is admittedly complicated. Feel free to subclass ``StepMethod`` directly when writing Gibbs step methods if you prefer. Gibbs step methods that subclass PyMC's ``Gibbs`` should define the following class attributes: ``child_class``: The class of the children in the submodels the step method can handle. ``parent_class``: The class of the parent. ``parent_label``: The label the children would apply to the parent in a conjugate submodel. In the gamma-normal example, this would be ``tau``. ``linear_OK``: A flag indicating whether the children can use linear combinations involving the parent as their actual parent without destroying the conjugacy. A subclass of ``Gibbs`` that defines these attributes only needs to implement a ``propose()`` method, which will be called by ``Gibbs.step()``. The resulting step method will be able to handle both conjugate and 'non-conjugate' cases. The conjugate case corresponds to an actual conjugate submodel. In the nonconjugate case all the children are of the required class, but the parent is not. In this case the parent's value is proposed from the likelihood and accepted based on its prior. The acceptance rate in the nonconjugate case will be less than one. The inherited class method ``Gibbs.competence`` will determine the new step method's ability to handle a variable :math:`x` by checking whether: * all :math:`x`'s children are of class ``child_class``, and either apply ``parent_label`` to `x` directly or (if ``linear_OK=True``) to a ``LinearCombination`` object (:ref:`chap_modelbuilding`), one of whose parents contains $x$. * :math:`x` is of class ``parent_class`` If both conditions are met, ``pymc.conjugate_Gibbs_competence`` will be returned. If only the first is met, ``pymc.nonconjugate_Gibbs_competence`` will be returned. .. _subsec:granularity: Granularity of step methods: one-at-a-time vs. block updating ------------------------------------------------------------- There is currently no way for a stochastic variable to compute individual terms of its log-probability; it is computed all together. This means that updating the elements of a array-valued variable individually would be inefficient, so all existing step methods update array-valued variables together, in a block update. To update an array-valued variable's elements individually, simply break it up into an array of scalar-valued variables. Instead of this:: A = pymc.Normal('A', value=zeros(100), mu=0., tau=1.) do this:: A = [pymc.Normal('A_%i'%i, value=0., mu=0., tau=1.) for i in range(100)] An individual step method will be assigned to each element of ``A`` in the latter case, and the elements will be updated individually. Note that ``A`` can be broken up into larger blocks if desired. Automatic assignment of step methods ------------------------------------ Every step method subclass (including user-defined ones) that does not require any ``__init__`` arguments other than the stochastic variable to be handled adds itself to a list called ``StepMethodRegistry`` in the PyMC namespace. If a stochastic variable in an ``MCMC`` object has not been explicitly assigned a step method, each class in ``StepMethodRegistry`` is allowed to examine the variable. To do so, each step method implements a class method called ``competence(stochastic)``, whose only argument is a single stochastic variable. These methods return values from 0 to 3; 0 meaning the step method cannot safely handle the variable and 3 meaning it will most likely perform well for variables like this. The ``MCMC`` object assigns the step method that returns the highest competence value to each of its stochastic variables. .. rubric:: Footnotes .. [#] The covariance is estimated recursively from the previous value and the last ``interval`` samples, instead of computing it each time from the entire trace.pymc-2.2+ds/docs/references.rst000066400000000000000000000102571204033704200165320ustar00rootroot00000000000000.. List of References ****************** List of References ****************** .. [Akaike1973] H. Akaike. Information theory as an extension of the maximum likelihood principle. In B.N. Petrov and F. Csaki, editors, Second International Symposium on Information Theory, pages 267–281, Akademiai Kiado, Budapest, 1973. .. [Bernardo1992] J.M. Bernardo, J. Berger, A.P. Dawid, and J.F.M. Smith, editors. Bayesian Statistics 4. Oxford University Press, Oxford, 1992. .. [Brooks2000] S.P. Brooks, E.A. Catchpole, and B.J.T. Morgan. Bayesian animal survival estimation. Statistical Science, 15: 357–376, 2000. .. [Burnham2002] K.P. Burnham and D.R. Anderson. Model Selection and Multi-Model Inference: A Practical, Information-theoretic Approach. Springer, New York, 2002. .. [Christakos2002] G. Christakos. On the assimilation of uncertain physical knowledge bases: Bayesian and non-Bayesian techniques. Advances in Water Resources, 2002. .. [Gamerman1997] D. Gamerman. Markov Chain Monte Carlo: statistical simulation for Bayesian inference. Chapman and Hall, 1997. .. [Gelman1992] A. Gelman and D.R. Rubin. A single series from the Gibbs sampler provides a false sense of security. In Bayesian Statistics (eds. J. Bernardo et al.) 1992, Oxford University Press, 625-31. .. [Gelman1996] A. Gelman, X.L. Meng, and H. Stern. Posterior predictive assessment of model fitness via realized discrepencies with discussion. Statistica Sinica, 6, 1996. .. [Gelman2004] A. Gelman, J.B. Carlin, H.S. Stern, and D.B. Rubin. Bayesian Data Analysis, Second Edition. Chapman and Hall/CRC, Boca Raton, FL, 2004. .. [Geweke1992] J. Geweke. Evaluating the accuracy of sampling-based approaches to calculating posterior moments. In Bernardo et al. 1992, pages 169–193. .. [Haario2001] H. Haario, E. Saksman, and J. Tamminen. An adaptive metropolis algorithm. Bernoulli, 7(2):223–242, 2001. .. [Jarrett1979] R.G. Jarrett. A note on the intervals between coal mining disasters. Biometrika, 66:191–193, 1979. .. [Jaynes2003] E.T. Jaynes. Probability theory: the logic of science. Cambridge university press, 2003. .. [Jordan2004] M.I. Jordan. Graphical models. Statist. Sci., 19(1):140–155, 2004. .. [Kerman2004] J. Kerman and A. Gelman. Fully Bayesian computing. Available at SSRN: http://ssrn.com/abstract=1010387, 2004. .. [Langtangen2009] Hans Petter Langtangen. Python Scripting for Computational Science. Springer-Verlag, 2009. .. [Lauritzen1990] S.L. Lauritzen, A.P. Dawid, B.N. Larsen, and H.G. Leimer. Independence properties of directed Markov fields. Networks, 20:491–505, 1990. .. [Lutz2007] M. Lutz. Learning Python. O’Reilly, 2007. .. [Oberhumer2008] M.F.X.J. Oberhumer. LZO Real-Time Data Compression Library. 2008. URL http://www.oberhumer.com/opensource/lzo/. .. [Plummer2008] M. Plummer, N. Best, K. Cowles and K. Vines. coda: Output Analysis and Diagnostics for MCMC. R package version 0.13-3, 2008. URL http://CRAN.R-project.org/package=coda. .. [R2010] R Development Core Team. R: A Language and Environment for Statistical Computing. R Foundation for Statistical Computing, Vienna, Austria. ISBN 3-900051-07-0, 2010. URL http: //www.R-project.org/. .. [Raftery1995a] A.E. Raftery and S.M. Lewis. The number of iterations, convergence diagnostics and generic metropolis al- gorithms. In D.J. Spiegelhalter W.R. Gilks and S. Richardson, editors, Practical Markov Chain Monte Carlo. Chapman and Hall, London, U.K., 1995. .. [Raftery1995b] A.E. Raftery and S.M. Lewis. Gibbsit Version 2.0. 1995. URL http://lib.stat.cmu.edu/ general/gibbsit/. .. [Roelofs2010] G. Roelofs, J. loup Gailly, M. Adler. zlib: A Massively Spiffy Yet Delicately Unobtrusive Compression Library. 2010. URL http://www.zlib.net/. .. [Roberts2007] G.O. Roberts and J.S. Rosenthal. Implementing componentwise Hastings algorithms. Journal of Applied Probability, 44(2):458–475, 2007. .. [Schwarz1978] G. Schwarz. Estimating the dimension of a model. The Annals of Statistics, 6(2):461–464, 1978. .. [Seward2007] J. Seward. bzip2 and libbzip2, Version 1.0.5 – A Program and Library for Data Compression. 2007. URL http://www.bzip.org/. .. [vanRossum2010] G. van Rossum. The Python Library Reference Release 2.6.5., 2010. URL http://docs. python.org/library/. pymc-2.2+ds/docs/theory.rst000066400000000000000000000424771204033704200157340ustar00rootroot00000000000000.. _chap_mcmc: ********************************** Appendix: Markov Chain Monte Carlo ********************************** Monte Carlo Methods in Bayesian Analysis ======================================== Bayesian analysis often requires integration over multiple dimensions that is intractable both via analytic methods or standard methods of numerical integration. However, it is often possible to compute these integrals by simulating (drawing samples) from posterior distributions. For example, consider the expected value of a random variable :math:`\mathbf{x}`: .. math:: E[{\bf x}] = \int {\bf x} f({\bf x}) d{\bf x}, \qquad {\bf x} = \{x_1,...,x_k\} where :math:`k` (the dimension of vector :math:`x`) is perhaps very large. If we can produce a reasonable number of random vectors :math:`\{{\bf x_i}\}`, we can use these values to approximate the unknown integral. This process is known as *Monte Carlo integration*. In general, MC integration allows integrals against probability density functions: .. math:: I = \int h(\mathbf{x}) f(\mathbf{x}) \mathbf{dx} to be estimated by finite sums: .. math:: \hat{I} = \frac{1}{n}\sum_{i=1}^n h(\mathbf{x}_i), where :math:`\mathbf{x}_i` is a sample from :math:`f`. This estimate is valid and useful because: * By the strong law of large numbers: .. math:: \hat{I} \rightarrow I \mbox{ with probability 1} * Simulation error can be measured and controlled: .. math:: :nowrap: \begin{equation}Var(\hat{I}) = \frac{1}{n(n-1)}\sum_{i=1}^n (h(\mathbf{x}_i)-\hat{I})^2\end{equation} Why is this relevant to Bayesian analysis? If we replace :math:`f(\mathbf{x})` with a posterior, :math:`f(\theta|d)` and make :math:`h(\theta)` an interesting function of the unknown parameter, the resulting expectation is that of the posterior of :math:`h(\theta)`: .. math:: :nowrap: \begin{equation} E[h(\theta)|d] = \int f(\theta|d) h(\theta) d\theta \approx \frac{1}{n}\sum_{i=1}^n h(\theta) \end{equation} Rejection Sampling ------------------ Though Monte Carlo integration allows us to estimate integrals that are unassailable by analysis and standard numerical methods, it relies on the ability to draw samples from the posterior distribution. For known parametric forms, this is not a problem; probability integral transforms or bivariate techniques (e.g Box-Muller method) may be used to obtain samples from uniform pseudo-random variates generated from a computer. Often, however, we cannot readily generate random values from non-standard posteriors. In such instances, we can use rejection sampling to generate samples. Posit a function, :math:`f(x)` which can be evaluated for any value on the support of :math:`x:S_x = [A,B]`, but may not be integrable or easily sampled from. If we can calculate the maximum value of :math:`f(x)`, we can then define a rectangle that is guaranteed to contain all possible values :math:`(x,f(x))`. It is then trivial to generate points over the box and enumerate the values that fall under the curve (Figure :ref:`bound`). .. _bound: .. figure:: _images/reject.* :alt: Rejection figure. :align: center :scale: 100 Rejection sampling of a bounded form. Area is estimated by the ratio of accepted (open squares) to total points, multiplied by the rectangle area. .. math:: \frac{\mbox{Points under curve}}{\mbox{Points generated}} \times \mbox{box area} = \lim_{n \to \infty} \int_A^B f(x) dx This approach is useful, for example, in estimating the normalizing constant for posterior distributions. .. _envelope: .. figure:: _images/envelope.* :alt: envelope figure :align: center :scale: 100 Rejection sampling of an unbounded form using an enveloping distribution. If :math:`f(x)` has unbounded support (i.e. infinite tails), such as a Gaussian distribution, a bounding box is no longer appropriate. We must specify a majorizing (or, enveloping) function, :math:`g(x)`, which implies: .. math:: g(x) \ge f(x) \qquad\forall x \in (-\infty,\infty) Having done this, we can now sample :math:`{x_i}` from :math:`g(x)` and accept or reject each of these values based upon :math:`f(x_i)`. Specifically, for each draw :math:`x_i`, we also draw a uniform random variate :math:`u_i` and accept :math:`x_i` if :math:`u_i < f(x_i)/cg(x_i)`, where :math:`c` is a constant (Figure :ref:`envelope`). This approach is made more efficient by choosing an enveloping distribution that is "close" to the target distribution, thus maximizing the number of accepted points. Further improvement is gained by using optimized algorithms such as importance sampling which, as the name implies, samples more frequently from important areas of the distribution. Rejection sampling is usually subject to declining performance as the dimension of the parameter space increases, so it is used less frequently than MCMC for evaluation of posterior distributions [Gamerman1997]_. Markov Chains ============= A Markov chain is a special type of *stochastic process*. The standard definition of a stochastic process is an ordered collection of random variables: .. math:: \{X_t:t \in T\} where :math:`t` is frequently (but not necessarily) a time index. If we think of :math:`X_t` as a state :math:`X` at time :math:`t`, and invoke the following dependence condition on each state: .. math:: Pr(X_{t+1}=x_{t+1} | X_t=x_t, X_{t-1}=x_{t-1},\ldots,X_0=x_0) = Pr(X_{t+1}=x_{t+1} | X_t=x_t) then the stochastic process is known as a Markov chain. This conditioning specifies that the future depends on the current state, but not past states. Thus, the Markov chain wanders about the state space, remembering only where it has just been in the last time step. The collection of transition probabilities is sometimes called a *transition matrix* when dealing with discrete states, or more generally, a *transition kernel*. In the context of Markov chain Monte Carlo, it is useful to think of the Markovian property as "mild non-independence". MCMC allows us to indirectly generate independent samples from a particular posterior distribution. Jargon-busting -------------- Before we move on, it is important to define some general properties of Markov chains. They are frequently encountered in the MCMC literature, and some will help us decide whether MCMC is producing a useful sample from the posterior. * *Homogeneity*: A Markov chain is homogeneous at step :math:`t` if the transition probabilities are independent of time :math:`t`. * *Irreducibility*: A Markov chain is irreducible if every state is accessible in one or more steps from any other state. That is, the chain contains no absorbing states. This implies that there is a non-zero probability of eventually reaching state :math:`k` from any other state in the chain. * *Recurrence*: States which are visited repeatedly are *recurrent*. If the expected time to return to a particular state is bounded, this is known as *positive recurrence*, otherwise the recurrent state is *null recurrent*. Further, a chain is *Harris recurrent* when it visits all states :math:`X \in S` infinitely often in the limit as :math:`t \to \infty`; this is an important characteristic when dealing with unbounded, continuous state spaces. Whenever a chain ends up in a closed, irreducible set of Harris recurrent states, it stays there forever and visits every state with probability one. * *Stationarity*: A stationary Markov chain produces the same marginal distribution when multiplied by the transition kernel. Thus, if :math:`P` is some :math:`n \times n` transition matrix: .. math:: {\bf \pi P} = {\bf \pi} for Markov chain :math:`\pi`. Thus, :math:`\pi` is no longer subscripted, and is referred to as the *limiting distribution* of the chain. In MCMC, the chain explores the state space according to its limiting marginal distribution. * *Ergodicity*: Ergodicity is an emergent property of Markov chains which are irreducible, positive Harris recurrent and aperiodic. Ergodicity is defined as: .. math:: \lim_{n \to \infty} Pr^{(n)}(\theta_i \rightarrow \theta_j) = \pi(\theta) \quad \forall \theta_i, \theta_j \in \Theta or in words, after many steps the marginal distribution of the chain is the same at one step as at all other steps. This implies that our Markov chain, which we recall is dependent, can generate samples that are independent if we wait long enough between samples. If it means anything to you, ergodicity is the analogue of the strong law of large numbers for Markov chains. For example, take values :math:`\theta_{i+1},\ldots,\theta_{i+n}` from a chain that has reached an ergodic state. A statistic of interest can then be estimated by: .. math:: \frac{1}{n}\sum_{j=i+1}^{i+n} h(\theta_j) \approx \int f(\theta) h(\theta) d\theta Why MCMC Works: Reversible Markov Chains ======================================== Markov chain Monte Carlo simulates a Markov chain for which some function of interest (*e.g.* the joint distribution of the parameters of some model) is the unique, invariant limiting distribution. An invariant distribution with respect to some Markov chain with transition kernel :math:`Pr(y \mid x)` implies that: .. math:: \int_x Pr(y \mid x) \pi(x) dx = \pi(y). Invariance is guaranteed for any **reversible** Markov chain. Consider a Markov chain in reverse sequence: :math:`\{\theta^{(n)},\theta^{(n-1)},...,\theta^{(0)}\}`. This sequence is still Markovian, because: .. math:: Pr(\theta^{(k)}=y \mid \theta^{(k+1)}=x,\theta^{(k+2)}=x_1,\ldots ) = Pr(\theta^{(k)}=y \mid \theta^{(k+1)}=x) Forward and reverse transition probabilities may be related through Bayes theorem: .. math:: .. \begin{eqnarray} .. Pr(\theta^{(k)}=y \mid \theta^{(k+1)}=x) &=& \frac{Pr(\theta^{(k+1)}=x \mid \theta^{(k)}=y) Pr(\theta^{(k)}=y)}{Pr(\theta^{(k+1)}=x)} \\ .. &=& \frac{Pr(\theta^{(k+1)}=x \mid \theta^{(k)}=y) \pi^{(k)}(y)}{\pi^{(k+1)}(x)} .. \end{eqnarray} .. math:: \frac{Pr(\theta^{(k+1)}=x \mid \theta^{(k)}=y) \pi^{(k)}(y)}{\pi^{(k+1)}(x)} Though not homogeneous in general, :math:`\pi` becomes homogeneous if **Do you ever call the stationary distribution itself homogeneous?**: * :math:`n \rightarrow \infty` * :math:`\pi^{(i)}=\pi` for some :math:`i < k` If this chain is homogeneous it is called reversible, because it satisfies the **detailed balance equation**: .. math:: \pi(x)Pr(y \mid x) = \pi(y) Pr(x \mid y) Reversibility is important because it has the effect of balancing movement through the entire state space. When a Markov chain is reversible, :math:`\pi` is the unique, invariant, stationary distribution of that chain. Hence, if :math:`\pi` is of interest, we need only find the reversible Markov chain for which :math:`\pi` is the limiting distribution. This is what MCMC does! Gibbs Sampling ============== The Gibbs sampler is the simplest and most prevalent MCMC algorithm. If a posterior has :math:`k` parameters to be estimated, we may condition each parameter on current values of the other :math:`k-1` parameters, and sample from the resultant distributional form (usually easier), and repeat this operation on the other parameters in turn. This procedure generates samples from the posterior distribution. Note that we have now combined Markov chains (conditional independence) and Monte Carlo techniques (estimation by simulation) to yield Markov chain Monte Carlo. Here is a stereotypical Gibbs sampling algorithm: As we can see from the algorithm, each distribution is conditioned on the last iteration of its chain values, constituting a Markov chain as advertised. The Gibbs sampler has all of the important properties outlined in the previous section: it is aperiodic, homogeneous and ergodic. Once the sampler converges, all subsequent samples are from the target distribution. This convergence occurs at a geometric rate. #. Choose starting values for states (parameters): :math:`{\bf \theta} = [\theta_1^{(0)},\theta_2^{(0)},\ldots,\theta_k^{(0)}]` #. Initialize counter :math:`j=1` #. Draw the following values from each of the :math:`k` conditional distributions: .. math:: :nowrap: \begin{eqnarray*} \theta_1^{(j)} &\sim& \pi(\theta_1 | \theta_2^{(j-1)},\theta_3^{(j-1)},\ldots,\theta_{k-1}^{(j-1)},\theta_k^{(j-1)}) \\ \theta_2^{(j)} &\sim& \pi(\theta_2 | \theta_1^{(j)},\theta_3^{(j-1)},\ldots,\theta_{k-1}^{(j-1)},\theta_k^{(j-1)}) \\ \theta_3^{(j)} &\sim& \pi(\theta_3 | \theta_1^{(j)},\theta_2^{(j)},\ldots,\theta_{k-1}^{(j-1)},\theta_k^{(j-1)}) \\ \vdots \\ \theta_{k-1}^{(j)} &\sim& \pi(\theta_{k-1} | \theta_1^{(j)},\theta_2^{(j)},\ldots,\theta_{k-2}^{(j)},\theta_k^{(j-1)}) \\ \theta_k^{(j)} &\sim& \pi(\theta_k | \theta_1^{(j)},\theta_2^{(j)},\theta_4^{(j)},\ldots,\theta_{k-2}^{(j)},\theta_{k-1}^{(j)}) \end{eqnarray*} #. Increment :math:`j` and repeat until convergence occurs. The Metropolis-Hastings Algorithm ================================= The key to success in applying the Gibbs sampler to the estimation of Bayesian posteriors is being able to specify the form of the complete conditionals of :math:`{\bf \theta}`. In fact, the algorithm cannot be implemented without them. Of course, the posterior conditionals cannot always be neatly specified. In contrast to the Gibbs algorithm, the Metropolis-Hastings algorithm generates candidate state transitions from an alternate distribution, and accepts or rejects each candidate probabilistically. Let us first consider a simple Metropolis-Hastings algorithm for a single parameter, :math:`\theta`. We will use a standard sampling distribution, referred to as the *proposal distribution*, to produce candidate variables :math:`q_t(\theta^{\prime} | \theta)`. That is, the generated value, :math:`\theta^{\prime}`, is a *possible* next value for :math:`\theta` at step :math:`t+1`. We also need to be able to calculate the probability of moving back to the original value from the candidate, or :math:`q_t(\theta | \theta^{\prime})`. These probabilistic ingredients are used to define an *acceptance ratio*: .. math:: a(\theta^{\prime},\theta) = \frac{q_t(\theta^{\prime} | \theta) \pi(\theta^{\prime})}{q_t(\theta | \theta^{\prime}) \pi(\theta)} The value of :math:`\theta^{(t+1)}` is then determined by: .. math:: \theta^{(t+1)} = \left\{\begin{array}{l@{\quad \mbox{with prob.} \quad}l}\theta^{\prime} & \min(a(\theta^{\prime},\theta),1) \\ \theta^{(t)} & 1 - \min(a(\theta^{\prime},\theta),1) \end{array}\right. This transition kernel implies that movement is not guaranteed at every step. It only occurs if the suggested transition is likely based on the acceptance ratio. A single iteration of the Metropolis-Hastings algorithm proceeds as follows: The original form of the algorithm specified by Metropolis required that :math:`q_t(\theta^{\prime} | \theta) = q_t(\theta | \theta^{\prime})`, which reduces :math:`a(\theta^{\prime},\theta)` to :math:`\pi(\theta^{\prime})/\pi(\theta)`, but this is not necessary. In either case, the state moves to high-density points in the distribution with high probability, and to low-density points with low probability. After convergence, the Metropolis-Hastings algorithm describes the full target posterior density, so all points are recurrent. #. Sample :math:`\theta^{\prime}` from :math:`q(\theta^{\prime} | \theta^{(t)})`. #. Generate a Uniform[0,1] random variate :math:`u`. #. If :math:`a(\theta^{\prime},\theta) > u` then :math:`\theta^{(t+1)} = \theta^{\prime}`, otherwise :math:`\theta^{(t+1)} = \theta^{(t)}`. Random-walk Metropolis-Hastings ------------------------------- A practical implementation of the Metropolis-Hastings algorithm makes use of a random-walk proposal. Recall that a random walk is a Markov chain that evolves according to: .. math:: :nowrap: \begin{eqnarray*} \theta^{(t+1)} &=& \theta^{(t)} + \epsilon_t \\ \epsilon_t &\sim& f(\phi) \end{eqnarray*} As applied to the MCMC sampling, the random walk is used as a proposal distribution, whereby dependent proposals are generated according to: .. math:: q(\theta^{\prime} | \theta^{(t)}) = f(\theta^{\prime} - \theta^{(t)}) = \theta^{(t)} + \epsilon_t Generally, the density generating :math:`\epsilon_t` is symmetric about zero, resulting in a symmetric chain. Chain symmetry implies that :math:`q(\theta^{\prime} | \theta^{(t)}) = q(\theta^{(t)} | \theta^{\prime})`, which reduces the Metropolis-Hastings acceptance ratio to: .. math:: a(\theta^{\prime},\theta) = \frac{\pi(\theta^{\prime})}{\pi(\theta)} The choice of the random walk distribution for :math:`\epsilon_t` is frequently a normal or Student's :math:`t` density, but it may be any distribution that generates an irreducible proposal chain. An important consideration is the specification of the scale parameter for the random walk error distribution. Large values produce random walk steps that are highly exploratory, but tend to produce proposal values in the tails of the target distribution, potentially resulting in very small acceptance rates. Conversely, small values tend to be accepted more frequently, since they tend to produce proposals close to the current parameter value, but may result in chains that mix very slowly. Some simulation studies suggest optimal acceptance rates in the range of 20-50%. It is often worthwhile to optimize the proposal variance by iteratively adjusting its value, according to observed acceptance rates early in the MCMC simulation [Gamerman1997]_.pymc-2.2+ds/docs/tutorial.rst000066400000000000000000000755371204033704200162700ustar00rootroot00000000000000.. _chap_tutorial: ******** Tutorial ******** This tutorial will guide you through a typical PyMC application. Familiarity with Python is assumed, so if you are new to Python, books such as [Lutz2007]_ or [Langtangen2009]_ are the place to start. Plenty of online documentation can also be found on the `Python documentation`_ page. An example statistical model ---------------------------- Consider the following dataset, which is a time series of recorded coal mining disasters in the UK from 1851 to 1962 [Jarrett1979]_. .. _disasters_figure: .. figure:: _images/disasterts.* :width: 800 Recorded coal mining disasters in the UK. Occurrences of disasters in the time series is thought to be derived from a Poisson process with a large rate parameter in the early part of the time series, and from one with a smaller rate in the later part. We are interested in locating the change point in the series, which perhaps is related to changes in mining safety regulations. We represent our conceptual model formally as a statistical model: .. math:: :label: disaster_model \begin{array}{ccc} (D_t | s, e, l) \sim\text{Poisson}\left(r_t\right), & r_t=\left\{\begin{array}{lll} e &\text{if}& t< s\\ l &\text{if}& t\ge s \end{array}\right.,&t\in[t_l,t_h]\\ s\sim \text{Discrete Uniform}(t_l, t_h)\\ e\sim \text{Exponential}(r_e)\\ l\sim \text{Exponential}(r_l) \end{array} The symbols are defined as: * :math:`D_t`: The number of disasters in year :math:`t`. * :math:`r_t`: The rate parameter of the Poisson distribution of disasters in year :math:`t`. * :math:`s`: The year in which the rate parameter changes (the switchpoint). * :math:`e`: The rate parameter before the switchpoint :math:`s`. * :math:`l`: The rate parameter after the switchpoint :math:`s`. * :math:`t_l`, :math:`t_h`: The lower and upper boundaries of year :math:`t`. * :math:`r_e`, :math:`r_l`: The rate parameters of the priors of the early and late rates, respectively. Because we have defined :math:`D` by its dependence on :math:`s`, :math:`e` and :math:`l`, the latter three are known as the "parents" of :math:`D` and :math:`D` is called their "child". Similarly, the parents of :math:`s` are :math:`t_l` and :math:`t_h`, and :math:`s` is the child of :math:`t_l` and :math:`t_h`. Two types of variables ---------------------- At the model-specification stage (before the data are observed), :math:`D`, :math:`s`, :math:`e`, :math:`r` and :math:`l` are all random variables. Bayesian "random" variables have not necessarily arisen from a physical random process. The Bayesian interpretation of probability is *epistemic*, meaning random variable :math:`x`'s probability distribution :math:`p(x)` represents our knowledge and uncertainty about :math:`x`'s value [Jaynes2003]_. Candidate values of :math:`x` for which :math:`p(x)` is high are relatively more probable, given what we know. Random variables are represented in PyMC by the classes ``Stochastic`` and ``Deterministic``. The only ``Deterministic`` in the model is :math:`r`. If we knew the values of :math:`r`'s parents (:math:`s`, :math:`l` and :math:`e`), we could compute the value of :math:`r` exactly. A ``Deterministic`` like :math:`r` is defined by a mathematical function that returns its value given values for its parents. ``Deterministic`` variables are sometimes called the *systemic* part of the model. The nomenclature is a bit confusing, because these objects usually represent random variables; since the parents of :math:`r` are random, :math:`r` is random also. A more descriptive (though more awkward) name for this class would be ``DeterminedByValuesOfParents``. On the other hand, even if the values of the parents of variables ``switchpoint``, `disasters` (before observing the data), ``early_mean`` or ``late_mean`` were known, we would still be uncertain of their values. These variables are characterized by probability distributions that express how plausible their candidate values are, given values for their parents. The ``Stochastic`` class represents these variables. A more descriptive name for these objects might be ``RandomEvenGivenValuesOfParents``. We can represent model :eq:`disaster_model` in a file called ``disaster_model.py`` (the actual file can be found in ``pymc/examples/``) as follows. First, we import the PyMC and NumPy namespaces:: from pymc import DiscreteUniform, Exponential, deterministic, Poisson, Uniform import numpy as np Notice that from ``pymc`` we have only imported a select few objects that are needed for this particular model, whereas the entire ``numpy`` namespace has been imported, and conveniently given a shorter name. Objects from NumPy are subsequently accessed by prefixing ``np.`` to the name. Either approach is acceptable. Next, we enter the actual data values into an array:: disasters_array = \ numpy.array([ 4, 5, 4, 0, 1, 4, 3, 4, 0, 6, 3, 3, 4, 0, 2, 6, 3, 3, 5, 4, 5, 3, 1, 4, 4, 1, 5, 5, 3, 4, 2, 5, 2, 2, 3, 4, 2, 1, 3, 2, 2, 1, 1, 1, 1, 3, 0, 0, 1, 0, 1, 1, 0, 0, 3, 1, 0, 3, 2, 2, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 2, 1, 0, 0, 0, 1, 1, 0, 2, 3, 3, 1, 1, 2, 1, 1, 1, 1, 2, 4, 2, 0, 0, 1, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1]) Note that you don't have to type in this entire array to follow along; the code is available in the source tree, in :download:`this example script <../pymc/examples/disaster_model.py>`. Next, we create the switchpoint variable ``switchpoint`` :: switchpoint = DiscreteUniform('switchpoint', lower=0, upper=110, doc='Switchpoint[year]') ``DiscreteUniform`` is a subclass of ``Stochastic`` that represents uniformly-distributed discrete variables. Use of this distribution suggests that we have no preference ``a priori`` regarding the location of the switchpoint; all values are equally likely. Now we create the exponentially-distributed variables ``early_mean`` and ``late_mean`` for the early and late Poisson rates, respectively:: early_mean = Exponential('early_mean', beta=1.) late_mean = Exponential('late_mean', beta=1.) Next, we define the variable ``rate``, which selects the early rate ``early_mean`` for times before ``switchpoint`` and the late rate ``late_mean`` for times after ``switchpoint``. We create ``rate`` using the ``deterministic`` decorator, which converts the ordinary Python function ``rate`` into a ``Deterministic`` object.:: @deterministic(plot=False) def rate(s=switchpoint, e=early_mean, l=late_mean): ''' Concatenate Poisson means ''' out = empty(len(disasters_array)) out[:s] = e out[s:] = l return out The last step is to define the number of disasters ``disasters``. This is a stochastic variable but unlike ``switchpoint``, ``early_mean`` and ``late_mean`` we have observed its value. To express this, we set the argument ``observed`` to ``True`` (it is set to ``False`` by default). This tells PyMC that this object's value should not be changed:: disasters = Poisson('disasters', mu=rate, value=disasters_array, observed=True) Why are data and unknown variables represented by the same object? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Since its represented by a ``Stochastic`` object, `disasters` is defined by its dependence on its parent ``rate`` even though its value is fixed. This isn't just a quirk of PyMC's syntax; Bayesian hierarchical notation itself makes no distinction between random variables and data. The reason is simple: to use Bayes' theorem to compute the posterior :math:`p(e,s,l \mid D)` of model :eq:`disaster_model`, we require the likelihood :math:`p(D \mid e,s,l)`. Even though `disasters`'s value is known and fixed, we need to formally assign it a probability distribution as if it were a random variable. Remember, the likelihood and the probability function are essentially the same, except that the former is regarded as a function of the parameters and the latter as a function of the data. This point can be counterintuitive at first, as many peoples' instinct is to regard data as fixed a priori and unknown variables as dependent on the data. One way to understand this is to think of statistical models like :eq:`disaster_model` as predictive models for data, or as models of the processes that gave rise to data. Before observing the value of `disasters`, we could have sampled from its prior predictive distribution :math:`p(D)` (*i.e.* the marginal distribution of the data) as follows: * Sample ``early_mean``, ``switchpoint`` and ``late_mean`` from their priors. * Sample `disasters` conditional on these values. Even after we observe the value of `disasters`, we need to use this process model to make inferences about ``early_mean`` , ``switchpoint`` and ``late_mean`` because its the only information we have about how the variables are related. Parents and children -------------------- We have above created a PyMC probability model, which is simply a linked collection of variables. To see the nature of the links, import or run ``disaster_model.py`` and examine ``switchpoint``'s ``parents`` attribute from the Python prompt:: >>> from pymc.examples import disaster_model >>> disaster_model.switchpoint.parents {'lower': 0, 'upper': 110} The ``parents`` dictionary shows us the distributional parameters of ``switchpoint``, which are constants. Now let's examine `disasters`'s parents:: >>> disaster_model.disasters.parents {'mu': } We are using ``rate`` as a distributional parameter of `disasters` (*i.e.* ``rate`` is `disasters`'s parent). `disasters` internally labels ``rate`` as ``mu``, meaning ``rate`` plays the role of the rate parameter in `disasters`'s Poisson distribution. Now examine ``rate``'s ``children`` attribute:: >>> disaster_model.rate.children set([]) Because `disasters` considers ``rate`` its parent, ``rate`` considers `disasters` its child. Unlike ``parents``, ``children`` is a set (an unordered collection of objects); variables do not associate their children with any particular distributional role. Try examining the ``parents`` and ``children`` attributes of the other parameters in the model. The following `directed acyclic graph` is a visualization of the parent-child relationships in the model. Unobserved stochastic variables ``switchpoint``, ``early_mean`` and ``late_mean`` are open ellipses, observed stochastic variable `disasters` is a filled ellipse and deterministic variable ``rate`` is a triangle. Arrows point from parent to child and display the label that the child assigns to the parent. See section :ref:`graphical` for more details. .. _dag: .. figure:: _images/DisasterModel2.* :width: 600 px Directed acyclic graph of the relationships in the coal mining disaster model example. As the examples above have shown, pymc objects need to have a name assigned, such as ``switchpoint``, ``early_mean`` or ``late_mean``. These names are used for storage and post-processing: * as keys in on-disk databases, * as node labels in model graphs, * as axis labels in plots of traces, * as table labels in summary statistics. A model instantiated with variables having identical names raises an error to avoid name conflicts in the database storing the traces. In general however, pymc uses references to the objects themselves, not their names, to identify variables. Variables' values and log-probabilities --------------------------------------- All PyMC variables have an attribute called ``value`` that stores the current value of that variable. Try examining `disasters`'s value, and you'll see the initial value we provided for it:: >>> disaster_model.disasters.value array([4, 5, 4, 0, 1, 4, 3, 4, 0, 6, 3, 3, 4, 0, 2, 6, 3, 3, 5, 4, 5, 3, 1, 4, 4, 1, 5, 5, 3, 4, 2, 5, 2, 2, 3, 4, 2, 1, 3, 2, 2, 1, 1, 1, 1, 3, 0, 0, 1, 0, 1, 1, 0, 0, 3, 1, 0, 3, 2, 2, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 2, 1, 0, 0, 0, 1, 1, 0, 2, 3, 3, 1, 1, 2, 1, 1, 1, 1, 2, 4, 2, 0, 0, 1, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1]) If you check the values of ``early_mean``, ``switchpoint`` and ``late_mean``, you'll see random initial values generated by PyMC:: >>> disaster_model.switchpoint.value 44 >>> disaster_model.early_mean.value 0.33464706250079584 >>> disaster_model.late_mean.value 2.6491936762267811 Of course, since these are ``Stochastic`` elements, your values will be different than these. If you check ``rate``'s value, you'll see an array whose first ``switchpoint`` elements are ``early_mean`` (here 0.33464706), and whose remaining elements are ``late_mean`` (here 2.64919368):: >>> disaster_model.rate.value array([ 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 0.33464706, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368, 2.64919368]) To compute its value, ``rate`` calls the function we used to create it, passing in the values of its parents. ``Stochastic`` objects can evaluate their probability mass or density functions at their current values given the values of their parents. The logarithm of a stochastic object's probability mass or density can be accessed via the ``logp`` attribute. For vector-valued variables like ``disasters``, the ``logp`` attribute returns the sum of the logarithms of the joint probability or density of all elements of the value. Try examining ``switchpoint``'s and ``disasters``'s log-probabilities and ``early_mean`` 's and ``late_mean``'s log-densities:: >>> disaster_model.switchpoint.logp -4.7095302013123339 >>> disaster_model.disasters.logp -1080.5149888046033 >>> disaster_model.early_mean.logp -0.33464706250079584 >>> disaster_model.late_mean.logp -2.6491936762267811 ``Stochastic`` objects need to call an internal function to compute their ``logp`` attributes, as ``rate`` needed to call an internal function to compute its value. Just as we created ``rate`` by decorating a function that computes its value, it's possible to create custom ``Stochastic`` objects by decorating functions that compute their log-probabilities or densities (see chapter :ref:`chap_modelbuilding`). Users are thus not limited to the set of of statistical distributions provided by PyMC. Using Variables as parents of other Variables ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Let's take a closer look at our definition of ``rate``:: @deterministic(plot=False) def rate(s=switchpoint, e=early_mean, l=late_mean): ''' Concatenate Poisson means ''' out = empty(len(disasters_array)) out[:s] = e out[s:] = l return out The arguments ``switchpoint``, ``early_mean`` and ``late_mean`` are ``Stochastic`` objects, not numbers. If that is so, why aren't errors raised when we attempt to slice array ``out`` up to a ``Stochastic`` object? Whenever a variable is used as a parent for a child variable, PyMC replaces it with its ``value`` attribute when the child's value or log-probability is computed. When ``rate``'s value is recomputed, ``s.value`` is passed to the function as argument ``switchpoint``. To see the values of the parents of ``rate`` all together, look at ``rate.parents.value``. Fitting the model with MCMC --------------------------- PyMC provides several objects that fit probability models (linked collections of variables) like ours. The primary such object, ``MCMC``, fits models with a Markov chain Monte Carlo algorithm [Gamerman1997]_. To create an ``MCMC`` object to handle our model, import ``disaster_model.py`` and use it as an argument for ``MCMC``:: >>> from pymc.examples import disaster_model >>> from pymc import MCMC >>> M = MCMC(disaster_model) In this case ``M`` will expose variables ``switchpoint``, ``early_mean``, ``late_mean`` and ``disasters`` as attributes; that is, ``M.switchpoint`` will be the same object as ``disaster_model.switchpoint``. To run the sampler, call the MCMC object's ``sample()`` (or ``isample()``, for interactive sampling) method with arguments for the number of iterations, burn-in length, and thinning interval (if desired):: >>> M.sample(iter=10000, burn=1000, thin=10) After a few seconds, you should see that sampling has finished normally. The model has been fitted. What does it mean to fit a model? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ `Fitting` a model means characterizing its posterior distribution somehow. In this case, we are trying to represent the posterior :math:`p(s,e,l|D)` by a set of joint samples from it. To produce these samples, the MCMC sampler randomly updates the values of ``switchpoint``, ``early_mean`` and ``late_mean`` according to the Metropolis-Hastings algorithm [Gelman2004]_ over a specified number of iterations (``iter``). As the number of samples grows sufficiently large, the MCMC distributions of ``switchpoint``, ``early_mean`` and ``late_mean`` converge to their joint stationary distribution. In other words, their values can be considered as random draws from the posterior :math:`p(s,e,l|D)`. PyMC assumes that the ``burn`` parameter specifies a `sufficiently large` number of iterations for the algorithm to converge, so it is up to the user to verify that this is the case (see chapter :ref:`chap_modelchecking`). Consecutive values sampled from ``switchpoint``, ``early_mean`` and ``late_mean`` are always serially dependent, since it is a Markov chain. MCMC often results in strong autocorrelation among samples that can result in imprecise posterior inference. To circumvent this, it is useful to thin the sample by only retaining every *k* th sample, where :math:`k` is an integer value. This thinning interval is passed to the sampler via the ``thin`` argument. If you are not sure ahead of time what values to choose for the ``burn`` and ``thin`` parameters, you may want to retain all the MCMC samples, that is to set ``burn=0`` and ``thin=1``, and then discard the `burn-in period` and thin the samples after examining the traces (the series of samples). See [Gelman2004]_ for general guidance. Accessing the samples ~~~~~~~~~~~~~~~~~~~~~ The output of the MCMC algorithm is a `trace`, the sequence of retained samples for each variable in the model. These traces can be accessed using the ``trace(name, chain=-1)`` method. For example:: >>> M.trace('switchpoint')[:] array([41, 40, 40, ..., 43, 44, 44]) The trace slice ``[start:stop:step]`` works just like the NumPy array slice. By default, the returned trace array contains the samples from the last call to ``sample``, that is, ``chain=-1``, but the trace from previous sampling runs can be retrieved by specifying the correspondent chain index. To return the trace from all chains, simply use ``chain=None``. [#1]_ Sampling output ~~~~~~~~~~~~~~~ You can examine the marginal posterior of any variable by plotting a histogram of its trace:: >>> from pylab import hist, show >>> hist(M.trace('late_mean')[:]) (array([ 8, 52, 565, 1624, 2563, 2105, 1292, 488, 258, 45]), array([ 0.52721865, 0.60788251, 0.68854637, 0.76921023, 0.84987409, 0.93053795, 1.01120181, 1.09186567, 1.17252953, 1.25319339]), ) >>> show() You should see something like this: .. figure:: _images/ltrace.* :width: 800 px Histogram of the marginal posterior probability of parameter ``late_mean``. PyMC has its own plotting functionality, via the optional ``matplotlib`` module as noted in the installation notes. The ``Matplot`` module includes a ``plot`` function that takes the model (or a single parameter) as an argument:: >>> from pymc.Matplot import plot >>> plot(M) For each variable in the model, ``plot`` generates a composite figure, such as this one for the switchpoint in the disasters model: .. figure:: _images/spost.* :width: 800 px Temporal series, autocorrelation plot and histogram of the samples drawn for ``switchpoint``. The upper left-hand pane of this figure shows the temporal series of the samples from ``switchpoint``, while below is an autocorrelation plot of the samples. The right-hand pane shows a histogram of the trace. The trace is useful for evaluating and diagnosing the algorithm's performance (see [Gelman1996]_), while the histogram is useful for visualizing the posterior. For a non-graphical summary of the posterior, simply call ``M.stats()``. Imputation of Missing Data ~~~~~~~~~~~~~~~~~~~~~~~~~~ As with most textbook examples, the models we have examined so far assume that the associated data are complete. That is, there are no missing values corresponding to any observations in the dataset. However, many real-world datasets have missing observations, usually due to some logistical problem during the data collection process. The easiest way of dealing with observations that contain missing values is simply to exclude them from the analysis. However, this results in loss of information if an excluded observation contains valid values for other quantities, and can bias results. An alternative is to impute the missing values, based on information in the rest of the model. For example, consider a survey dataset for some wildlife species: ===== ==== ======== =========== Count Site Observer Temperature ===== ==== ======== =========== 15 1 1 15 10 1 2 NA 6 1 1 11 ===== ==== ======== =========== Each row contains the number of individuals seen during the survey, along with three covariates: the site on which the survey was conducted, the observer that collected the data, and the temperature during the survey. If we are interested in modelling, say, population size as a function of the count and the associated covariates, it is difficult to accommodate the second observation because the temperature is missing (perhaps the thermometer was broken that day). Ignoring this observation will allow us to fit the model, but it wastes information that is contained in the other covariates. In a Bayesian modelling framework, missing data are accommodated simply by treating them as unknown model parameters. Values for the missing data :math:`\tilde{y}` are estimated naturally, using the posterior predictive distribution: .. math:: p(\tilde{y}|y) = \int p(\tilde{y}|\theta) f(\theta|y) d\theta This describes additional data :math:`\tilde{y}`, which may either be considered unobserved data or potential future observations. We can use the posterior predictive distribution to model the likely values of missing data. Consider the coal mining disasters data introduced previously. Assume that two years of data are missing from the time series; we indicate this in the data array by the use of an arbitrary placeholder value, None.:: x = numpy.array([ 4, 5, 4, 0, 1, 4, 3, 4, 0, 6, 3, 3, 4, 0, 2, 6, 3, 3, 5, 4, 5, 3, 1, 4, 4, 1, 5, 5, 3, 4, 2, 5, 2, 2, 3, 4, 2, 1, 3, None, 2, 1, 1, 1, 1, 3, 0, 0, 1, 0, 1, 1, 0, 0, 3, 1, 0, 3, 2, 2, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 2, 1, 0, 0, 0, 1, 1, 0, 2, 3, 3, 1, None, 2, 1, 1, 1, 1, 2, 4, 2, 0, 0, 1, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1]) To estimate these values in PyMC, we generate a masked array. These are specialised NumPy arrays that contain a matching True or False value for each element to indicate if that value should be excluded from any computation. Masked arrays can be generated using NumPy's ``ma.masked_equal`` function:: >>> masked_values = numpy.ma.masked_equal(x, value=None) >>> masked_values masked_array(data = [4 5 4 0 1 4 3 4 0 6 3 3 4 0 2 6 3 3 5 4 5 3 1 4 4 1 5 5 3 4 2 5 2 2 3 4 2 1 3 -- 2 1 1 1 1 3 0 0 1 0 1 1 0 0 3 1 0 3 2 2 0 1 1 1 0 1 0 1 0 0 0 2 1 0 0 0 1 1 0 2 3 3 1 -- 2 1 1 1 1 2 4 2 0 0 1 4 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1], mask = [False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False True False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False True False False False False False False False False False False False False False False False False False False False False False False False False False False False], fill_value=?) This masked array, in turn, can then be passed to one of PyMC's data stochastic variables, which recognizes the masked array and replaces the missing values with Stochastic variables of the desired type. For the coal mining disasters problem, recall that disaster events were modeled as Poisson variates:: >>> from pymc import Poisson >>> disasters = Poisson('disasters', mu=rate, value=masked_values, observed=True) Here ``rate`` is an array of means for each year of data, allocated according to the location of the switchpoint. Each element in `disasters` is a Poisson Stochastic, irrespective of whether the observation was missing or not. The difference is that actual observations are data Stochastics (``observed=True``), while the missing values are non-data Stochastics. The latter are considered unknown, rather than fixed, and therefore estimated by the MCMC algorithm, just as unknown model parameters. The entire model looks very similar to the original model:: # Switchpoint switch = DiscreteUniform('switch', lower=0, upper=110) # Early mean early_mean = Exponential('early_mean', beta=1) # Late mean late_mean = Exponential('late_mean', beta=1) @deterministic(plot=False) def rate(s=switch, e=early_mean, l=late_mean): """Allocate appropriate mean to time series""" out = np.empty(len(disasters_array)) # Early mean prior to switchpoint out[:s] = e # Late mean following switchpoint out[s:] = l return out # The inefficient way, using the Impute function: # D = Impute('D', Poisson, disasters_array, mu=r) # # The efficient way, using masked arrays: # Generate masked array. Where the mask is true, # the value is taken as missing. masked_values = masked_array(disasters_array, mask=disasters_array==-999) # Pass masked array to data stochastic, and it does the right thing disasters = Poisson('disasters', mu=rate, value=masked_values, observed=True) Here, we have used the ``masked_array`` function, rather than ``masked_equal``, and the value -999 as a placeholder for missing data. The result is the same. .. missing_ .. figure:: _images/missing.* :width: 800 px Trace, autocorrelation plot and posterior distribution of the missing data points in the example. Fine-tuning the MCMC algorithm ------------------------------ MCMC objects handle individual variables via *step methods*, which determine how parameters are updated at each step of the MCMC algorithm. By default, step methods are automatically assigned to variables by PyMC. To see which step methods :math:`M` is using, look at its ``step_method_dict`` attribute with respect to each parameter:: >>> M.step_method_dict[disaster_model.switchpoint] [] >>> M.step_method_dict[disaster_model.early_mean] [] >>> M.step_method_dict[disaster_model.late_mean] [] The value of ``step_method_dict`` corresponding to a particular variable is a list of the step methods :math:`M` is using to handle that variable. You can force :math:`M` to use a particular step method by calling ``M.use_step_method`` before telling it to sample. The following call will cause :math:`M` to handle ``late_mean`` with a standard ``Metropolis`` step method, but with proposal standard deviation equal to :math:`2`:: >>> from pymc import Metropolis >>> M.use_step_method(Metropolis, disaster_model.late_mean, proposal_sd=2.) Another step method class, ``AdaptiveMetropolis``, is better at handling highly-correlated variables. If your model mixes poorly, using ``AdaptiveMetropolis`` is a sensible first thing to try. Beyond the basics ----------------- That was a brief introduction to basic PyMC usage. Many more topics are covered in the subsequent sections, including: * Class ``Potential``, another building block for probability models in addition to ``Stochastic`` and ``Deterministic`` * Normal approximations * Using custom probability distributions * Object architecture * Saving traces to the disk, or streaming them to the disk during sampling * Writing your own step methods and fitting algorithms. Also, be sure to check out the documentation for the Gaussian process extension, which is available on PyMC's `download`_ page. .. _download: http://code.google.com/p/pymc/downloads/list .. _Python documentation: http://www.python.org/doc/ .. [#1] Note that the unknown variables ``switchpoint``, ``early_mean``, ``late_mean`` and ``rate`` will all accrue samples, but `disasters` will not because its value has been observed and is not updated. Hence `disasters` has no trace and calling ``M.trace('disasters')[:]`` will raise an error. pymc-2.2+ds/epydoc.conf000066400000000000000000000060131204033704200150540ustar00rootroot00000000000000[epydoc] # Epydoc section marker (required by ConfigParser) # modules # The list of objects to document. Objects can be named using # dotted names, module filenames, or package directory names. # Alases for this option include "objects" and "values". modules: docs/distributions.py # , pymc/Model.py, pymc/distributions.py, pymc/SamplingMethods.py, pymc/database # output # The type of output that should be generated. Should be one # of: html, text, latex, dvi, ps, pdf. output: pdf # target # The path to the output directory. May be relative or absolute. target: docs/pdf/ # docformat # The default markup language for docstrings, for modules that do # not define __docformat__. Defaults to epytext. docformat: reStructuredText # css # The CSS stylesheet for HTML output. Can be the name of a builtin # stylesheet, or the name of a file. css: white # name # The documented project's name. name: PyMC # url # The documented project's URL. url: http://code.google.com/p/pymc/ # link # HTML code for the project link in the navigation bar. If left # unspecified, the project link will be generated based on the # project's name and URL. # link: My Cool Project # top # The "top" page for the documentation. Can be a URL, the name # of a module or class, or one of the special names "trees.html", # "indices.html", or "help.html" #top: os.path # help # An alternative help file. The named file should contain the # body of an HTML file; navigation bars will be added to it. #help: my_helpfile.html # frames # Whether or not to include a frames-based table of contents. frames: yes # private # Whether or not to inclue private variables. (Even if included, # private variables will be hidden by default.) #private: yes # imports # Whether or not to list each module's imports. imports: no # verbosity # An integer indicating how verbose epydoc should be. The default # value is 0; negative values will supress warnings and errors; # positive values will give more verbose output. verbosity: 0 # parse # Whether or not parsing should be used to examine objects. parse: yes # introspect # Whether or not introspection should be used to examine objects. introspect: yes # graph # The list of graph types that should be automatically included # in the output. Graphs are generated using the Graphviz "dot" # executable. Graph types include: "classtree", "callgraph", # "umlclass". Use "all" to include all graph types #graph: all # dotpath # The path to the Graphviz "dot" executable, used to generate # graphs. dotpath: /usr/local/bin/dot # sourcecode # Whether or not to include syntax highlighted source code in # the output (HTML only). sourcecode: yes # pstat # The name of one or more pstat files (generated by the profile # or hotshot module). These are used to generate call graphs. #pstat: profile.out # separate-classes # Whether each class should be listed in its own section when # generating LaTeX or PDF output. separate-classes: no pymc-2.2+ds/pymc-requirements000066400000000000000000000000731204033704200163360ustar00rootroot00000000000000pymc numpy>=1.3 matplotlib>=0.9 scipy>=0.8 nose==0.11 pydotpymc-2.2+ds/pymc/000077500000000000000000000000001204033704200136725ustar00rootroot00000000000000pymc-2.2+ds/pymc/CircularStochastic.py000066400000000000000000000043321204033704200200370ustar00rootroot00000000000000from .PyMCObjects import Stochastic from .Container import Container from .InstantiationDecorators import stochastic from .flib import mod_to_circle from .distributions import rvon_mises, von_mises_like import numpy as np from .distributions import valuewrapper __all__ = ['CircularStochastic', 'CircVonMises'] class CircularStochastic(Stochastic): """ C = CircularStochastic(lo, hi, *args, **kwargs) Takes two special parents, lo and hi; any incoming value will be mapped into the interval [lo,hi). args and kwargs will be passed to Stochastic.__init__. :Attributes: lo : float Lower bound hi : float Upper bound :SeeAlso: Stochastic """ def __init__(self, lo, hi, *args, **kwargs): self.interval_parents = Container([hi, lo]) Stochastic.__init__(self, *args, **kwargs) def set_value(self, value): modded_value = mod_to_circle(value, *self.interval_parents.value).reshape(np.shape(value)) Stochastic.set_value(self, modded_value) value = property(Stochastic.get_value, set_value) class CircVonMises(CircularStochastic): """ V = CircVonMises(name, mu, kappa, value=None, observed=False, size=1, trace=True, rseed=True, doc=None) Stochastic variable with Von Mises distribution. Parents are: mu, kappa. Docstring of log-probability function: """+von_mises_like.__doc__ def __init__( self, name, mu, kappa, value=None, observed=False, size=1, trace=True, cache_depth=2, rseed=True, plot=None, verbose=-1): if value is None: arg_eval = Container([mu, kappa]).value value = rvon_mises(arg_eval[0], arg_eval[1], size=size) parents = {'mu':mu, 'kappa':kappa} logp = valuewrapper(von_mises_like) random = lambda mu, kappa, size=size: rvon_mises(mu, kappa, size=size) CircularStochastic.__init__(self, -np.pi, np.pi, logp, 'A Von Mises-distributed variable', name, parents, random, trace, value, np.dtype('float'), rseed, observed, cache_depth, plot, verbose) pymc-2.2+ds/pymc/CommonDeterministics.py000066400000000000000000000746761204033704200204270ustar00rootroot00000000000000""" pymc.CommonDeterministics A collection of Deterministic subclasses to handle common situations. It's a good idea to use these rather than user-defined objects when possible, as some fitting methods (particularly Gibbs step methods) will know how to handle them but not user-defined objects with equivalent functionality. """ __docformat__='reStructuredText' from . import PyMCObjects as pm from .Node import Variable from .Container import Container from .InstantiationDecorators import deterministic, check_special_methods import numpy as np from numpy import sum, shape,size, ravel, sign, zeros, ones, broadcast, newaxis import inspect, types from .utils import safe_len, stukel_logit, stukel_invlogit, logit, invlogit, value, find_element from copy import copy import sys import operator try: import builtins # Python 3 except ImportError: import __builtin__ as builtins # Python 2 try: from types import UnboundMethodType except ImportError: # On Python 3, unbound methods are just functions. def UnboundMethodType(func, inst, cls): return func from . import six xrange = six.moves.xrange __all__ = ['CompletedDirichlet', 'LinearCombination', 'Index', 'Lambda', 'lambda_deterministic', 'lam_dtrm', 'logit', 'invlogit', 'stukel_logit', 'stukel_invlogit', 'Logit', 'InvLogit', 'StukelLogit', 'StukelInvLogit', 'pfunc']#+['iter_','complex_','int_','long_','float_','oct_','hex_'] class Lambda(pm.Deterministic): """ L = Lambda(name, lambda p1=p1, p2=p2: f(p1, p2)[, doc, dtype=None, trace=True, cache_depth=2, plot=None]) Converts second argument, an anonymous function, into a Deterministic object with specified name. :Parameters: name : string The name of the deteriministic object to be created. lambda : function The function from which the deterministic object should be created. All arguments must be given default values! p1, p2, ... : any The parameters of lambda. other parameters : See docstring of Deterministic. :Note: Will work even if argument 'lambda' is a named function (defined using def) :SeeAlso: Deterministic, Logit, StukelLogit, StukelInvLogit, Logit, InvLogit, LinearCombination, Index """ def __init__(self, name, lam_fun, doc='A Deterministic made from an anonymous function', *args, **kwds): (parent_names, junk0, junk1, parent_values) = inspect.getargspec(lam_fun) if junk0 is not None \ or junk1 is not None \ or parent_values is None: raise ValueError('%s: All arguments to lam_fun must have default values.' % name) if not len(parent_names) == len(parent_values): raise ValueError('%s: All arguments to lam_fun must have default values.' % name) parents = dict(zip(parent_names[-len(parent_values):], parent_values)) pm.Deterministic.__init__(self, eval=lam_fun, name=name, parents=parents, doc=doc, *args, **kwds) def lambda_deterministic(*args, **kwargs): """ An alias for Lambda :SeeAlso: Lambda """ return Lambda(*args, **kwargs) def lam_dtrm(*args, **kwargs): """ An alias for Lambda :SeeAlso: Lambda """ return Lambda(*args, **kwargs) class Logit(pm.Deterministic): """ L = Logit(name, theta[, doc, dtype=None, trace=True, cache_depth=2, plot=None]) A deterministic variable whose value is the logit of parent theta. :Parameters: name : string The name of the variable. theta : number, array or variable The parent to which the logit function should be applied. Must be between 0 and 1. other parameters : See docstring of Deterministic. :SeeAlso: Deterministic, Lambda, InvLogit, StukelLogit, StukelInvLogit """ def __init__(self, name, theta, doc='A logit transformation', *args, **kwds): pm.Deterministic.__init__(self, eval=logit, name=name, parents={'theta': theta}, doc=doc, *args, **kwds) class InvLogit(pm.Deterministic): """ P = InvLogit(name, ltheta[, doc, dtype=None, trace=True, cache_depth=2, plot=None]) A Deterministic whose value is the inverse logit of parent ltheta. :Parameters: name : string The name of the variable. ltheta : number, array or variable The parent to which the inverse logit function should be applied. other parameters : See docstring of Deterministic. :SeeAlso: Deterministic, Lambda, Logit, StukelLogit, StukelInvLogit """ def __init__(self, name, ltheta, doc='An inverse logit transformation', *args, **kwds): pm.Deterministic.__init__(self, eval=invlogit, name=name, parents={'ltheta': ltheta}, doc=doc, *args, **kwds) class StukelLogit(pm.Deterministic): """ S = StukelLogit(name, theta, a1, a2, [, doc, dtype=None, trace=True, cache_depth=2, plot=None]) A Deterministic whose value is Stukel's link function with parameters a1 and a2 applied to theta. To see the effects of a1 and a2, try plotting the function stukel_logit on theta=linspace(.1,.9,100) :Parameters: name : string The name of the variable. theta : number, array or variable. The parent to which the link function should be applied. Must be between 0 and 1. a1 : number One of the shape parameters. a2 : number The other shape parameter. other parameters : See docstring of Deterministic. :Reference: Therese A. Stukel, 'Generalized Logistic Models', JASA vol 83 no 402, pp.426-431 (June 1988) :SeeAlso: Deterministic, Lambda, Logit, InvLogit, StukelInvLogit """ def __init__(self, name, theta, a1, a2, doc="Stukel's link function", *args, **kwds): pm.Deterministic.__init__(self, eval=stukel_logit, name=name, parents={'theta': theta, 'a1': a1, 'a2': a2}, doc=doc, *args, **kwds) class StukelInvLogit(pm.Deterministic): """ P = StukelInvLogit(name, ltheta, a1, a2, [, doc, dtype=None, trace=True, cache_depth=2, plot=None]) A Deterministic whose value is Stukel's inverse link function with parameters a1 and a2 applied to ltheta. To see the effects of a1 and a2, try plotting the function stukel_invlogit on ltheta=linspace(-5,5,100) :Parameters: name : string The name of the variable. ltheta : number, array or variable. The parent to which the inverse link function should be applied. Must be between 0 and 1. a1 : number One of the shape parameters. a2 : number The other shape parameter. other parameters : See docstring of Deterministic. :Reference: Therese A. Stukel, 'Generalized Logistic Models', JASA vol 83 no 402, pp.426-431 (June 1988) :SeeAlso: Deterministic, Lambda, Logit, InvLogit, StukelLogit """ def __init__(self, name, ltheta, a1, a2, doc="Stukel's inverse link function", *args, **kwds): pm.Deterministic.__init__(self, eval=stukel_invlogit, name=name, parents={'ltheta': ltheta, 'a1': a1, 'a2': a2}, doc=doc, *args, **kwds) class CompletedDirichlet(pm.Deterministic): """ CD = CompletedDirichlet(name, D[, doc, trace=True, cache_depth=2, plot=None]) 'Completes' the value of D by appending 1-sum(D.value) to the end. :Parameters: name : string The name of the variable. D : array or variable Value of object will be 1-sum(D) or 1-sum(D.value). Sum of D or D's value must be between 0 and 1. other parameters: See docstring of Deterministic :SeeAlso: Deterministic, Lambda, Index, LinearCombination """ def __init__(self, name, D, doc=None, trace=True, cache_depth=2, plot=None, verbose=-1): def eval_fun(D): N = len(D) out = np.empty((1,N+1)) out[0,:N] = D out[0,N] = 1.-np.sum(D) return out if doc is None: doc = 'The completed version of %s'%D.__name__ pm.Deterministic.__init__(self, eval=eval_fun, name=name, parents={'D': D}, doc=doc, dtype=float, trace=trace, cache_depth=cache_depth, plot=plot, verbose=verbose) class LinearCombination(pm.Deterministic): """ L = LinearCombination(name, x, y[, doc, dtype=None, trace=True, cache_depth=2, plot=None]) A Deterministic returning the sum of dot(x[i],y[i]). :Parameters: name : string The name of the variable x : list or variable Will be multiplied against y and summed. y : list or variable Will be multiplied against x and summed. other parameters : See docstring of Deterministic. :Attributes: x : list or variable Input argument y : list or variable Input argument N : integer length of x and y coefs : dictionary Keyed by variable. Indicates what each variable is multiplied by. sides : dictionary Keyed by variable. Indicates whether each variable is in x or y. offsets : dictionary Keyed by variable. Indicates everything that gets added to each stochastic and its coefficient. :SeeAlso: Deterministic, Lambda, Index """ def __init__(self, name, x, y, doc = 'A linear combination of several variables', *args, **kwds): self.x = x self.y = y self.N = len(self.x) if not len(self.y)==len(self.x): raise ValueError('Arguments x and y must be same length.') def eval_fun(x, y): out = np.dot(x[0], y[0]) for i in xrange(1,len(x)): out = out + np.dot(x[i], y[i]) return np.asarray(out).squeeze() pm.Deterministic.__init__(self, eval=eval_fun, doc=doc, name = name, parents = {'x':x, 'y':y}, *args, **kwds) # Tabulate coefficients and offsets of each constituent Stochastic. self.coefs = {} self.sides = {} for s in self.parents.stochastics | self.parents.observed_stochastics: self.coefs[s] = [] self.sides[s] = [] for i in xrange(self.N): stochastic_elem = None if isinstance(x[i], pm.Stochastic): if x[i] is y[i]: raise ValueError('Stochastic %s multiplied by itself in LinearCombination %s.' %(x[i], self)) stochastic_elem = x[i] self.sides[stochastic_elem].append('L') this_coef = Lambda('%s_coef'%stochastic_elem, lambda c=y[i]: np.asarray(c)) self.coefs[stochastic_elem].append(this_coef) if isinstance(y[i], pm.Stochastic): stochastic_elem = y[i] self.sides[stochastic_elem].append('R') this_coef = Lambda('%s_coef'%stochastic_elem, lambda c=x[i]: np.asarray(c)) self.coefs[stochastic_elem].append(this_coef) self.sides = Container(self.sides) self.coefs = Container(self.coefs) # TODO: Index should be special-cased in the future. # TODO: - It should be a subclass of LinearCombination. # TODO: Reason: The Gibbs samplers should be able to recognize it as a linear combination. # TODO: - It should be considered an 'ultimate argument' by LazyFunction, so that it is checked for changes rather # TODO: than its parents. # TODO: Reason: If parents change at elements that aren't selected, here's no point having all the descendants # TODO: recompute. class Index(pm.Deterministic): """ I = Index(name, x, index[, doc, dtype=None, trace=True, cache_depth=2, plot=None]) A deterministic returning x[index]. Useful for hierarchical models/ clustering/ discriminant analysis. Emulates LinearCombination to make it easier to write Gibbs step methods that can deal with such cases. :Parameters: name : string The name of the variable x : list or variable Will be multiplied against y and summed. index : integer or variable Index to use when computing value. other parameters : See docstring of Deterministic. :Attributes: index : variable Valued as current index. x: Variable that gets sliced. :SeeAlso: Deterministic, Lambda, LinearCombination """ def __init__(self, name, x, index, doc = "Selects one of a list of several variables", *args, **kwds): self.index = Lambda('index', lambda i=index: np.int(i)) self.x = x def eval_fun(x, index): return x[index] pm.Deterministic.__init__(self, eval=eval_fun, doc=doc, name = '%s[%s]'%(str(x), str(index)), parents = {'x':x, 'index':self.index}, *args, **kwds) # ================================================================= # = pfunc converts ordinary functions to Deterministic factories. = # ================================================================= def pufunc(func): """ Called by pfunc to convert NumPy ufuncs to deterministic factories. """ def dtrm_generator(*args): if len(args) != func.nin: raise ValueError('invalid number of arguments') name = func.__name__ + '('+'_'.join([str(arg) for arg in list(args)])+')' doc_str = 'A deterministic returning %s(%s)'%(func.__name__, ', '.join([str(arg) for arg in args])) parents = {} for i in xrange(func.nin): parents['in%i'%i] = args[i] def wrapper(**kwargs): return func(*[kwargs['in%i'%i] for i in xrange(func.nin)]) return pm.Deterministic(wrapper, doc_str, name, parents, trace=False, plot=False) dtrm_generator.__name__ = func.__name__ + '_deterministic_generator' dtrm_generator.__doc__ = """ Deterministic-generating wrapper for %s. Original docstring: %s %s """%(func.__name__, '_'*60, func.__doc__) return dtrm_generator def pfunc(func): """ pf = pfunc(func) Returns a function that can be called just like func; however its arguments may be PyMC objects or containers of PyMC objects, and its return value will be a deterministic. Example: >>> A = pymc.Normal('A',0,1,size=10) >>> pprod = pymc.pfunc(numpy.prod) >>> B = pprod(A, axis=0) >>> B >>> B.value -0.0049333289649554912 >>> numpy.prod(A.value) -0.0049333289649554912 """ if isinstance(func, np.ufunc): return pufunc(func) elif not inspect.isfunction(func): if func.__name__ == '__call__': raise ValueError('Cannot get argspec of call method. Is it builtin?') try: return pfunc(func.__call__) except: cls, inst, tb = sys.exc_info() inst = cls('Failed to create pfunc wrapper from object %s. Original error message:\n\n%s'%(func, inst.message)) six.reraise(cls, inst, tb) fargs, fvarargs, fvarkw, fdefaults = inspect.getargspec(func) n_fargs = len(fargs) def dtrm_generator(*args, **kwds): name = func.__name__ + '('+'_'.join([str(arg) for arg in list(args) + kwds.values()])+')' doc_str = 'A deterministic returning %s(%s, %s)'%(func.__name__, ', '.join([str(arg) for arg in args]), ', '.join(['%s=%s'%(key, str(val)) for key, val in six.iteritems(kwds)])) parents = {} varargs = [] for kwd, val in six.iteritems(kwds): parents[kwd] = val for i in xrange(len(args)): if i < n_fargs: parents[fargs[i]] = args[i] else: varargs.append(args[i]) if len(varargs)==0: eval_fun = func else: parents['varargs']=varargs def wrapper(**wkwds_in): wkwds = copy(wkwds_in) wargs = [] for arg in fargs: wargs.append(wkwds.pop(arg)) wargs.extend(wkwds.pop('varargs')) return func(*wargs, **wkwds) eval_fun = wrapper return pm.Deterministic(eval_fun, doc_str, name, parents, trace=False, plot=False) dtrm_generator.__name__ = func.__name__ + '_deterministic_generator' dtrm_generator.__doc__ = """ Deterministic-generating wrapper for %s. Original docstring: %s %s """%(func.__name__, '_'*60, func.__doc__) return dtrm_generator # ========================================================== # = Add special methods to variables to support FBC syntax = # ========================================================== def create_uni_method(op_name, klass, jacobians = None): """ Creates a new univariate special method, such as A.__neg__() <=> -A, for target class. The method is called __op_name__. """ # This function will become the actual method. op_modules = [operator, builtins] op_names = [ op_name, op_name + '_'] op_function_base = find_element( op_names,op_modules, error_on_fail = True) #many such functions do not take keyword arguments, so we need to wrap them def op_function(self): return op_function_base(self) def new_method(self): # This code creates a Deterministic object. if not check_special_methods(): raise NotImplementedError('Special method %s called on %s, but special methods have been disabled. Set pymc.special_methods_available to True to enable them.'%(op_name, str(self))) jacobian_formats = {'self' : 'transformation_operation'} return pm.Deterministic(op_function, 'A Deterministic returning the value of %s(%s)'%(op_name, self.__name__), '('+op_name+'_'+self.__name__+')', parents = {'self':self}, trace=False, plot=False, jacobians=jacobians, jacobian_formats = jacobian_formats) # Make the function into a method for klass. new_method.__name__ = '__'+op_name+'__' setattr(klass, new_method.__name__, UnboundMethodType(new_method, None, klass)) def create_casting_method(op, klass): """ Creates a new univariate special method, such as A.__float__() <=> float(A.value), for target class. The method is called __op_name__. """ # This function will become the actual method. def new_method(self, op=op): if not check_special_methods(): raise NotImplementedError('Special method %s called on %s, but special methods have been disabled. Set pymc.special_methods_available to True to enable them.'%(op_name, str(self))) return op(self.value) # Make the function into a method for klass. new_method.__name__ = '__'+op.__name__+'__' setattr(klass, new_method.__name__, UnboundMethodType(new_method, None, klass)) def create_rl_bin_method(op_name, klass, jacobians = {}): """ Creates a new binary special method with left and right versions, such as A.__mul__(B) <=> A*B, A.__rmul__(B) <=> [B*A if B.__mul__(A) fails] for target class. The method is called __op_name__. """ # Make left and right versions. for prefix in ['r','']: # This function will became the methods. op_modules = [operator, builtins] op_names = [ op_name, op_name + '_'] op_function_base = find_element( op_names, op_modules, error_on_fail = True) #many such functions do not take keyword arguments, so we need to wrap them def op_function(a, b): return op_function_base(a, b) def new_method(self, other, prefix=prefix): if not check_special_methods(): raise NotImplementedError('Special method %s called on %s, but special methods have been disabled. Set pymc.special_methods_available to True to enable them.'%(op_name, str(self))) # This code will create one of two Deterministic objects. if prefix == 'r': parents = {'a':other, 'b':self} else: parents = {'a':self, 'b':other} jacobian_formats = {'a' : 'broadcast_operation', 'b' : 'broadcast_operation'} return pm.Deterministic(op_function, 'A Deterministic returning the value of %s(%s,%s)'%(prefix+op_name,self.__name__, str(other)), '('+'_'.join([self.__name__,prefix+op_name,str(other)])+')', parents, trace=False, plot=False, jacobians = jacobians, jacobian_formats = jacobian_formats) # Convert the functions into methods for klass. new_method.__name__ = '__'+prefix+op_name+'__' setattr(klass, new_method.__name__, UnboundMethodType(new_method, None, klass)) def create_rl_lin_comb_method(op_name, klass, x_roles, y_roles): """ Creates a new binary special method with left and right versions, such as A.__mul__(B) <=> A*B, A.__rmul__(B) <=> [B*A if B.__mul__(A) fails] for target class. The method is called __op_name__. """ # This function will became the methods. def new_method(self, other, x_roles=x_roles, y_roles=y_roles): if not check_special_methods(): raise NotImplementedError('Special method %s called on %s, but special methods have been disabled. Set pymc.special_methods_available to True to enable them.'%(op_name, str(self))) x = [] y = [] for xr in x_roles: if xr=='self': x.append(self) elif xr=='other': x.append(other) else: x.append(xr) for yr in y_roles: if yr=='self': y.append(self) elif yr=='other': y.append(other) else: y.append(yr) # This code will create one of two Deterministic objects. return LinearCombination('('+'_'.join([self.__name__,op_name,str(other)])+')', x, y, trace=False, plot=False) # Convert the functions into methods for klass. new_method.__name__ = '__'+op_name+'__' setattr(klass, new_method.__name__, UnboundMethodType(new_method, None, klass)) def create_bin_method(op_name, klass): """ Creates a new binary special method with only a left version, such as A.__eq__(B) <=> A==B, for target class. The method is called __op_name__. """ # This function will become the method. def new_method(self, other): if not check_special_methods(): raise NotImplementedError('Special method %s called on %s, but special methods have been disabled. Set pymc.special_methods_available to True to enable them.'%(op_name, str(self))) # This code creates a Deterministic object. def eval_fun(self, other, op): return getattr(self, op)(other) return pm.Deterministic(eval_fun, 'A Deterministic returning the value of %s(%s,%s)'%(op_name,self.__name__, str(other)), '('+'_'.join([self.__name__,op_name,str(other)])+')', {'self':self, 'other':other, 'op':'__'+op_name+'__'}, trace=False, plot=False) # Convert the function into a method for klass. new_method.__name__ = '__'+op_name+'__' setattr(klass, new_method.__name__, UnboundMethodType(new_method, None, klass)) def create_nonimplemented_method(op_name, klass): """ Creates a new method that raises NotImplementedError. """ def new_method(self, *args): raise NotImplementedError('Special method %s has not been implemented for PyMC variables.'%op_name) new_method.__name__ = '__'+op_name+'__' setattr(klass, new_method.__name__, UnboundMethodType(new_method, None, klass)) def op_to_jacobians(op, module): if type(module) is types.ModuleType: module = copy(module.__dict__) elif type(module) is dict: module = copy(module) else: raise AttributeError name = op + "_jacobians" try: jacobians = module[name] except: jacobians = {} return jacobians # Left/right binary operators truediv_jacobians = {'a' : lambda a, b: ones(shape(a))/b, 'b' : lambda a, b: - a / b**2 } div_jacobians = truediv_jacobians pow_jacobians = {'a' : lambda a, b: b * a**(b - 1.0), 'b' : lambda a, b: np.log(a) * a**b} for op in ['truediv', 'floordiv', 'mod', 'divmod', 'pow', 'lshift', 'rshift', 'and', 'xor', 'or']: create_rl_bin_method(op, Variable, jacobians = op_to_jacobians(op, locals())) try: create_rl_bin_method('div', Variable, jacobians = op_to_jacobians('div', locals())) except NameError: pass # Python 3 has only truediv and floordiv # Binary operators eq not part of this set because it messes up having stochastics in lists for op in ['lt', 'le', 'ne', 'gt', 'ge']: create_bin_method(op ,Variable) def equal(s1, s2): #makes up for deficiency of __eq__ return pm.Deterministic(lambda x1, x2 : x1 == x2, 'A Deterministic returning the value of x1 == x2', '('+'_'.join([s1.__name__,'=',str(s2)])+')', {'x1':s1, 'x2':s2}, trace=False, plot=False) # Unary operators neg_jacobians = {'self' : lambda self: -ones(shape(self))} pos_jacobians = {'self' : lambda self: np.ones(shape(self))} abs_jacobians = {'self' : lambda self: np.sign(self)} for op in ['neg','abs','invert']: # no need for pos and __index__ seems to cause a lot of problems create_uni_method(op, Variable, jacobians = op_to_jacobians(op, locals())) # Casting operators for op in [iter,complex,int,float,oct,hex]: create_casting_method(op, Variable) try: create_casting_method(long, Variable) except NameError: pass # No long in Python 3 # Addition, subtraction, multiplication # TODO: Uncomment once LinearCombination issues are ironed out. # create_rl_lin_comb_method('add', Variable, ['self', 'other'], [1,1]) # create_rl_lin_comb_method('radd', Variable, ['self', 'other'], [1,1]) # create_rl_lin_comb_method('sub', Variable, ['self', 'other'], [1,-1]) # create_rl_lin_comb_method('rsub', Variable, ['self', 'other'], [-1,1]) # create_rl_lin_comb_method('mul', Variable, ['self'],['other']) # create_rl_lin_comb_method('rmul', Variable, ['self'],['other']) #TODO: Comment once LinearCombination issues are ironed out. add_jacobians = {'a' : lambda a, b: ones(broadcast(a,b).shape), 'b' : lambda a, b: ones(broadcast(a,b).shape)} mul_jacobians = {'a' : lambda a, b: ones(shape(a)) * b, 'b' : lambda a, b: ones(shape(b)) * a} sub_jacobians = {'a' : lambda a, b: ones(broadcast(a,b).shape), 'b' : lambda a, b: -ones(broadcast(a,b).shape)} for op in ['add', 'mul', 'sub']: create_rl_bin_method(op, Variable, jacobians = op_to_jacobians(op, locals())) for op in ['iadd','isub','imul','idiv','itruediv','ifloordiv','imod','ipow','ilshift','irshift','iand','ixor','ior','unicode']: create_nonimplemented_method(op, Variable) def getitem_jacobian(self, index): return index # Create __getitem__ method. def __getitem__(self, index): if not check_special_methods(): raise NotImplementedError('Special method __index__ called on %s, but special methods have been disabled. Set pymc.special_methods_available to True to enable them.'%str(self)) # If index is number or number-valued variable, make an Index object name = '%s[%s]'%(self.__name__, str(index)) if np.isscalar(value(index)) and len(np.shape(self.value)) < 2: if np.isreal(value(index)): return Index(name, self, index, trace=False, plot=False) # Otherwise make a standard Deterministic. def eval_fun(self, index): return self[index] jacobians = {'self' : getitem_jacobian} jacobian_formats = {'self' : 'index_operation'} return pm.Deterministic(eval_fun, 'A Deterministic returning the value of %s[%s]'%(self.__name__, str(index)), name, {'self':self, 'index':index}, trace=False, plot=False, jacobians = jacobians, jacobian_formats = jacobian_formats) Variable.__getitem__ = UnboundMethodType(__getitem__, None, Variable) # Create __call__ method for Variable. def __call__(self, *args, **kwargs): if not check_special_methods(): raise NotImplementedError('Special method __call__ called on %s, but special methods have been disabled. Set pymc.special_methods_available to True to enable them.'%str(self)) def eval_fun(self, args=args, kwargs=kwargs): return self(*args, **kwargs) return pm.Deterministic(eval_fun, 'A Deterministic returning the value of %s(*%s, **%s)'%(self.__name__, str(args), str(kwargs)), self.__name__+'(*%s, **%s)'%(str(args), str(kwargs)), {'self':self, 'args': args, 'kwargs': kwargs}, trace=False, plot=False) Variable.__call__ = UnboundMethodType(__call__, None, Variable) # def __getitem__(self, index): # def eval_fun(self, index=index): # return self.__getitem__[index] # return pm.Deterministic(eval_fun, # 'A Deterministic returning the value of %s[%s]'%(self.__name__, str(index)), # self.__name__+'[%s]'%str(index), # {'self':self, 'index': index}, # trace=False, # plot=False) # Variable.__getitem__ = UnboundMethodType(__getitem__, None, Variable) # These are not working # nonworking_ops = ['iter','complex','int','long','float','oct','hex','coerce','contains','len'] # These should NOT be implemented because they are in-place updates. pymc-2.2+ds/pymc/Container.py000066400000000000000000000523271204033704200161770ustar00rootroot00000000000000"""The point of Container.py is to provide a function Container which converts any old thing A to thing B which looks and acts just like A, but it has a 'value' attribute. B.value looks and acts just like A but every variable 'inside' B has been replaced by its value. Examples: class MyObject(object): def __init__(self): self.x = Uninformative('x',0) self.y = 3 A = MyObject() B = Container(A) B.x B.value.x A = [Uninformative('x',0), 3] B = Container(A) B B.value Should work even with nested inputs: class MyObject(object): def __init__(self): self.x = [Uninformative('x',0), 5] self.y = 3 A = MyObject() B = Container(A) In addition, container objects file away the objects they contain into the following sets: stochastics, deterministics, variables, nodes, containers, data, step methods. These flattened representations are useful for things like cache checking. """ from .Node import Node, ContainerBase, Variable, StochasticBase, DeterministicBase, PotentialBase, ContainerRegistry from copy import copy from numpy import ndarray, array, zeros, shape, arange, where, dtype, Inf from pymc.Container_values import LCValue, DCValue, ACValue, OCValue from types import ModuleType import pdb from pymc import six xrange = six.moves.xrange __all__ = ['Container', 'DictContainer', 'TupleContainer', 'ListContainer', 'SetContainer', 'ObjectContainer', 'ArrayContainer'] def filter_dict(obj): filtered_dict = {} for item in six.iteritems(obj.__dict__): if isinstance(item[1], Node) or isinstance(item[1], ContainerBase): filtered_dict[item[0]] = item[1] return filtered_dict def Container(*args): """ C = Container(iterable) C = Container(module) C = Container(object) C = Container(obj_1, obj_2, obj_3, ...) Wraps an iterable object (currently a list, set, tuple, dictionary or ndarray), or a module or other object, or just a sequence of objects, in a subclass of ContainerBase and returns it. Iterable subclasses of ContainerBase strive to emulate the iterables they wrap, with one important difference: They have a value attribute. A container's value attribute behaves like the container itself, but it replaces every PyMC variable it contains with that variable's value. Example: @stochastic def A(value=0., mu=3, tau=2): return normal_like(value, mu, tau) C = Container([A, 15.2]) will yield the following: C[0] = A C.value[0] = A.value C[1] = C.value[1] = 15.2 The primary reason containers exist is to allow nodes to have large sets of parents without the need to refer to each of the parents by name. Example: x = [] @stochastic def x_0(value=0, mu=0, tau=2): return normal_like(value, mu, tau) x.append(x_0) last_x = x_0 for i in range(1,N): @stochastic def x_now(value=0, mu = last_x, tau=2): return normal_like(value, mu, tau) x_now.__name__ = 'x[%i]' % i last_x = x_now x.append(x_now) @stochastic def y(value=0, mu = x, tau = 100): mean_sum = 0 for i in range(len(mu)): mean_sum = mean_sum + mu[i] return normal_like(value, mean_sum, tau) x.value will be passed into y's log-probability function as argument mu, so mu[i] will return x.value[i] = x[i].value. Stochastic y will cache the values of each element of x, and will evaluate whether it needs to recompute based on all of them. :SeeAlso: ListContainer, TupleContainer, SetContainer, ArrayContainer, DictContainer, ObjectContainer """ if len(args)==1: iterable = args[0] else: iterable = args if isinstance(iterable, ContainerBase): return iterable for container_class, containing_classes in ContainerRegistry: if any([isinstance(iterable, containing_class) for containing_class in containing_classes]): return container_class(iterable) # Wrap mutable objects # if hasattr(iterable, '__dict__'): # return ObjectContainer(iterable.__dict__) # Otherwise raise an error. raise ValueError('No container classes available for class ' + iterable.__class__.__name__ + ', see Container.py for examples on how to write one.') class _A(object): pass dict_proxy_type = type(_A.__dict__) del _A def file_items(container, iterable): """ Files away objects into the appropriate attributes of the container. """ # container._value = copy(iterable) container.nodes = set() container.variables = set() container.deterministics = set() container.stochastics = set() container.potentials = set() container.observed_stochastics = set() # containers needs to be a list to hold unhashable items. container.containers = [] i=-1 for item in iterable: # If this is a dictionary, switch from key to item. if isinstance(iterable, (dict, dict_proxy_type)): key = item item = iterable[key] # Item counter else: i += 1 # If the item isn't iterable, file it away. if isinstance(item, Variable): container.variables.add(item) if isinstance(item, StochasticBase): if item.observed or not getattr(item, 'mask', None) is None: container.observed_stochastics.add(item) if not item.observed: container.stochastics.add(item) elif isinstance(item, DeterministicBase): container.deterministics.add(item) elif isinstance(item, PotentialBase): container.potentials.add(item) elif isinstance(item, ContainerBase): container.assimilate(item) container.containers.append(item) # Wrap internal containers elif hasattr(item, '__iter__'): # If this is a non-object-valued ndarray, don't container-ize it. if isinstance(item, ndarray): if item.dtype!=dtype('object'): continue # If the item is iterable, wrap it in a container. Replace the item # with the wrapped version. try: new_container = Container(item) except: continue # Update all of container's variables, potentials, etc. with the new wrapped # iterable's. This process recursively unpacks nested iterables. container.assimilate(new_container) if isinstance(container, dict): container.replace(key, new_container) elif isinstance(container, tuple): return container[:i] + (new_container,) + container[i+1:] else: container.replace(item, new_container, i) container.nodes = container.potentials | container.variables # 'Freeze' markov blanket, moral neighbors, coparents of all constituent stochastics # for future use for attr in ['moral_neighbors', 'markov_blanket', 'coparents']: setattr(container, attr, {}) for s in container.stochastics: for attr in ['moral_neighbors', 'markov_blanket', 'coparents']: getattr(container, attr)[s] = getattr(s, attr) value_doc = 'A copy of self, with all variables replaced by their values.' def sort_list(container, _value): val_ind = [] val_obj = [] nonval_ind = [] nonval_obj = [] for i in xrange(len(_value)): obj = _value[i] if isinstance(obj, Variable) or isinstance(obj, ContainerBase): val_ind.append(i) val_obj.append(obj) else: nonval_ind.append(i) nonval_obj.append(obj) # In case val_obj is only a single array, avert confusion. # Leave this even though it's confusing! val_obj.append(None) nonval_obj.append(None) container.n_val = len(val_ind) container.n_nonval = len(nonval_ind) container.val_ind = array(val_ind, dtype='int32') container.val_obj = val_obj container.nonval_ind = array(nonval_ind, dtype='int32') container.nonval_obj = array(nonval_obj, dtype=object) container.LCValue = LCValue(container) class SetContainer(ContainerBase, frozenset): """ SetContainers are containers that wrap sets. :Parameters: iterable : set. :Attributes: value : set A copy of self, with all variables replaced with their values. nodes : set All the stochastics, deterministics and potentials self contains. deterministics : set All the deterministics self contains. stochastics : set All the stochastics self contains with observed=False. potentials : set All the potentials self contains. observed_stochastics : set All the stochastics self contains with observed=True. containers : list All the containers self contains. :Note: - nodes, deterministics, etc. include all the objects in nested containers. - value replaces objects in nested containers. :SeeAlso: Container, ListContainer, DictContainer, ArrayContainer, TupleContainer, ObjectContainer """ register=True change_methods = [] containing_classes = [set, frozenset] def __init__(self, iterable): self.new_iterable = set(iterable) file_items(self, self.new_iterable) ContainerBase.__init__(self, self.new_iterable) self._value = list(self) sort_list(self, self._value) def replace(self, item, new_container, i): self.new_iterable.discard(item) self.new_iterable.add(new_container) def get_value(self): self.LCValue.run() return set(self._value) value = property(fget = get_value, doc=value_doc) class TupleContainer(ContainerBase, tuple): """ TupleContainers are containers that wrap tuples. :Parameters: iterable : tuple. :Attributes: value : tuple A copy of self, with all variables replaced with their values. nodes : set All the stochastics, deterministics and potentials self contains. deterministics : set All the deterministics self contains. stochastics : set All the stochastics self contains with observed=False. potentials : set All the potentials self contains. observed_stochastics : set All the stochastics self contains with observed=True. containers : list All the containers self contains. :Note: - nodes, deterministics, etc. include all the objects in nested containers. - value replaces objects in nested containers. :SeeAlso: Container, ListContainer, DictContainer, ArrayContainer, SetContainer, ObjectContainer """ register=True change_methods = [] containing_classes = [tuple] def __init__(self, iterable): new_tup = file_items(self, iterable) if len(self.containers)>0: raise NotImplementedError("""We have not figured out how to satisfactorily implement nested TupleContainers. The reason is there is no way to change an element of a tuple after it has been created. Even the Python-C API makes this impossible by checking that a tuple is new before allowing you to change one of its elements.""") ContainerBase.__init__(self, iterable) file_items(self, iterable) self._value = list(self) sort_list(self, self._value) def replace(self, item, new_container, i): list.__setitem__(self, i, new_container) def get_value(self): self.LCValue.run() return tuple(self._value) value = property(fget = get_value, doc=value_doc) class ListContainer(ContainerBase, list): """ ListContainers are containers that wrap lists. :Parameters: iterable : list. :Attributes: value : list A copy of self, with all variables replaced with their values. nodes : set All the stochastics, deterministics and potentials self contains. deterministics : set All the deterministics self contains. stochastics : set All the stochastics self contains with observed=False. potentials : set All the potentials self contains. observed_stochastics : set All the stochastics self contains with observed=True. containers : list All the containers self contains. :Note: - nodes, deterministics, etc. include all the objects in nested containers. - value replaces objects in nested containers. :SeeAlso: Container, TupleContainer, DictContainer, ArrayContainer, SetContainer, ObjectContainer """ change_methods = ['__setitem__', '__delitem__', '__setslice__', '__delslice__', '__iadd__', '__imul__', 'append', 'extend', 'insert', 'pop', 'remove', 'reverse', 'sort'] containing_classes = [list] register=True def __init__(self, iterable): list.__init__(self, iterable) ContainerBase.__init__(self, iterable) file_items(self, iterable) self._value = list(self) sort_list(self, self._value) def replace(self, item, new_container, i): list.__setitem__(self, i, new_container) def get_value(self): self.LCValue.run() return self._value value = property(fget = get_value, doc=value_doc) class DictContainer(ContainerBase, dict): """ DictContainers are containers that wrap dictionaries. Modules are converted into DictContainers, and variables' and potentials' Parents objects are DictContainers also. :Parameters: iterable : dictionary or object with a __dict__. :Attributes: value : dictionary A copy of self, with all variables replaced with their values. nodes : set All the stochastics, deterministics and potentials self contains. deterministics : set All the deterministics self contains. stochastics : set All the stochastics self contains with observed=False. potentials : set All the potentials self contains. observed_stochastics : set All the stochastics self contains with observed=True. containers : list All the containers self contains. :Note: - nodes, deterministics, etc. include all the objects in nested containers. - value replaces objects in nested containers. :SeeAlso: Container, ListContainer, TupleContainer, ArrayContainer, SetContainer, ObjectContainer """ change_methods = ['__setitem__', '__delitem__', 'clear', 'pop', 'popitem', 'update'] containing_classes = [dict] register=True def __init__(self, iterable): dict.__init__(self, iterable) ContainerBase.__init__(self, iterable) self._value = copy(iterable) file_items(self, iterable) self.val_keys = [] self.val_obj = [] self.nonval_keys = [] self.nonval_obj = [] self._value = {} for key, obj in six.iteritems(self): if isinstance(obj, Variable) or isinstance(obj, ContainerBase): self.val_keys.append(key) self.val_obj.append(obj) else: self.nonval_keys.append(key) self.nonval_obj.append(obj) # In case val_obj is only a single array, avert confusion. # Leave this even though it's confusing! self.val_obj.append(None) self.nonval_obj.append(None) self.n_val = len(self.val_keys) self.val_keys = array(self.val_keys, dtype=object) # self.val_obj = array(self.val_obj, dtype=object) self.n_nonval = len(self.nonval_keys) self.nonval_keys = array(self.nonval_keys, dtype=object) self.nonval_obj = array(self.nonval_obj, dtype=object) self.DCValue = DCValue(self) def replace(self, key, new_container): dict.__setitem__(self, key, new_container) def get_value(self): # DCValue(self) self.DCValue.run() return self._value value = property(fget = get_value, doc=value_doc) def conservative_update(obj, dict): for k in dict: if not hasattr(obj, k): try: setattr(obj, k, dict[k]) except: pass class ObjectContainer(ContainerBase): """ ObjectContainers wrap non-iterable objects. Contents of the input iterable, or attributes of the input object, are exposed as attributes of the object. :Parameters: iterable : dictionary or object with a __dict__. :Attributes: value : object A copy of self, with all variables replaced with their values. nodes : set All the stochastics, deterministics and potentials self contains. deterministics : set All the deterministics self contains. stochastics : set All the stochastics self contains with observed=False. potentials : set All the potentials self contains. observed_stochastics : set All the stochastics self contains with observed=True. containers : list All the containers self contains. :Note: - nodes, deterministics, etc. include all the objects in nested containers. - value replaces objects in nested containers. :SeeAlso: Container, ListContainer, DictContainer, ArrayContainer, SetContainer, TupleContainer """ register=False def __init__(self, input): if isinstance(input, dict): input_to_file = input conservative_update(self, input_to_file) # self.__dict__.update(input_to_file) elif hasattr(input,'__iter__'): input_to_file = input else: # Modules, objects, etc. input_to_file = input.__dict__ conservative_update(self, input_to_file) # self.__dict__.update(input_to_file) dictpop = copy(self.__dict__) if 'self' in dictpop: dictpop.pop('self') self._dict_container = DictContainer(dictpop) file_items(self, input_to_file) self._value = copy(self) ContainerBase.__init__(self, input) self.OCValue = OCValue(self) def replace(self, item, new_container, key): dict.__setitem__(self.__dict__, key, new_container) def _get_value(self): self.OCValue.run() return self._value value = property(fget = _get_value, doc=value_doc) class ArrayContainer(ContainerBase, ndarray): """ ArrayContainers wrap Numerical Python ndarrays. These are full ndarray subclasses, and should support all of ndarrays' functionality. :Parameters: iterable : array. :Attributes: value : array. A copy of self, with all variables replaced with their values. nodes : set All the stochastics, deterministics and potentials self contains. deterministics : set All the deterministics self contains. stochastics : set All the stochastics self contains with observed=False. potentials : set All the potentials self contains. observed_stochastics : set All the stochastics self contains with observed=True. containers : list All the containers self contains. :Note: - nodes, deterministics, etc. include all the objects in nested containers. - value replaces objects in nested containers. :SeeAlso: Container, ListContainer, DictContainer, ObjectContainer, SetContainer, TupleContainer """ register=True change_methods = [] containing_classes = [ndarray] def __new__(subtype, array_in): if not array_in.dtype == dtype('object'): raise ValueError('Cannot create container from array whose dtype is not object.') C = array(array_in, copy=True).view(subtype) C_ravel = C.ravel() ContainerBase.__init__(C, array_in) # Sort out contents and wrap internal containers. file_items(C, C_ravel) C._value = C.copy() C._ravelledvalue = C._value.ravel() # An array range to keep around. C.iterrange = arange(len(C_ravel)) val_ind = [] val_obj = [] nonval_ind = [] nonval_obj = [] for i in xrange(len(C_ravel)): obj = C_ravel[i] if isinstance(obj, Variable) or isinstance(obj, ContainerBase): val_ind.append(i) val_obj.append(obj) else: nonval_ind.append(i) nonval_obj.append(obj) val_obj.append(None) C.val_ind = array(val_ind, dtype='int32') C.val_obj = val_obj C.n_val = len(val_ind) nonval_obj.append(None) C.nonval_ind = array(nonval_ind, dtype='int32') C.nonval_obj = array(nonval_obj, dtype=object) C.n_nonval = len(nonval_ind) C.flags['W'] = False C.ACValue = ACValue(C) return C def replace(self, item, new_container, i): ndarray.__setitem__(self.ravel(), i, new_container) # This method converts self to self.value. def get_value(self): self.ACValue.run() return self._value value = property(fget = get_value, doc=value_doc) pymc-2.2+ds/pymc/Container_values.pyx000066400000000000000000000103131204033704200177330ustar00rootroot00000000000000from Node import Variable, ContainerBase from copy import copy from numpy import ndarray, array, zeros, shape, arange, where cdef extern from "numpy/ndarrayobject.h": void* PyArray_DATA(object obj) cdef class LCValue: """ l = LCValue(container) l.run() run() method fills in value of ListContainer. """ cdef void **nonval_obj cdef int *val_ind, *nonval_ind cdef object _value, val_obj cdef int n_val, n_nonval def __init__(self, container): cdef int i self._value = container._value self.val_ind = PyArray_DATA(container.val_ind) self.val_obj = container.val_obj self.n_val = container.n_val self.nonval_ind = PyArray_DATA(container.nonval_ind) self.nonval_obj = PyArray_DATA(container.nonval_obj) self.n_nonval = container.n_nonval def run(self): cdef int i for i from 0 <= i < self.n_val: self._value[self.val_ind[i]] = self.val_obj[i].value for i from 0 <= i < self.n_nonval: self._value[self.nonval_ind[i]] = ( self.nonval_obj[i]) cdef class DCValue: """ d = DCValue(container) d.run() run() method replaces DictContainers'keys corresponding to variables and containers with their values. """ cdef void **val_keys, **nonval_obj, **nonval_keys cdef object _value, val_obj cdef int n_val, n_nonval def __init__(self, container): self._value = container._value self.val_keys = PyArray_DATA(container.val_keys) # self.val_obj = PyArray_DATA(container.val_obj) self.val_obj = container.val_obj self.n_val = container.n_val self.nonval_keys = PyArray_DATA(container.nonval_keys) self.nonval_obj = PyArray_DATA(container.nonval_obj) self.n_nonval = container.n_nonval def run(self): cdef int i cdef object key for i from 0 <= i < self.n_val: key = self.val_keys[i] self._value[key] = self.val_obj[i].value for i from 0 <= i < self.n_nonval: key = self.nonval_keys[i] self._value[key] = ( self.nonval_obj[i]) cdef class OCValue: """ d = OCValue(container) d.run() run() method fills in value of container. """ cdef void **val_keys, **nonval_obj, **nonval_keys cdef object _value, val_obj cdef int n_val, n_nonval def __init__(self, container): self._value = container._value.__dict__ self.val_keys = PyArray_DATA(container._dict_container.val_keys) self.val_obj =container._dict_container.val_obj self.n_val = container._dict_container.n_val self.nonval_keys = PyArray_DATA(container._dict_container.nonval_keys) self.nonval_obj = PyArray_DATA(container._dict_container.nonval_obj) self.n_nonval = container._dict_container.n_nonval def run(self): cdef int i cdef object key for i from 0 <= i < self.n_val: key = self.val_keys[i] self._value[key] = self.val_obj[i].value for i from 0 <= i < self.n_nonval: key = self.nonval_keys[i] self._value[key] = ( self.nonval_obj[i]) cdef class ACValue: """ A = ACValue(container) A.run() run() method fills in value of ArrayContainer. """ cdef void **nonval_obj cdef int *val_ind, *nonval_ind cdef object _ravelledvalue, val_obj cdef int n_val, n_nonval def __init__(self, container): self._ravelledvalue = container._ravelledvalue self.val_ind = PyArray_DATA(container.val_ind) self.val_obj = container.val_obj self.n_val = container.n_val self.nonval_ind = PyArray_DATA(container.nonval_ind) self.nonval_obj = PyArray_DATA(container.nonval_obj) self.n_nonval = container.n_nonval def run(self): cdef int i for i from 0 <= i < self.n_val: self._ravelledvalue[self.val_ind[i]] = self.val_obj[i].value for i from 0 <= i < self.n_nonval: self._ravelledvalue[self.nonval_ind[i]] = ( self.nonval_obj[i]) pymc-2.2+ds/pymc/InstantiationDecorators.py000077500000000000000000000221541204033704200211250ustar00rootroot00000000000000""" The decorators stochastic, deterministic, discrete_stochastic, binary_stochastic, potential and data are defined here, but the actual objects are defined in PyMCObjects.py """ __all__ = ['stochastic', 'stoch', 'deterministic', 'dtrm', 'potential', 'pot', 'data', 'observed', 'robust_init','disable_special_methods','enable_special_methods','check_special_methods'] import sys, inspect, pdb from imp import load_dynamic from .PyMCObjects import Stochastic, Deterministic, Potential from .Node import ZeroProbability, ContainerBase, Node, StochasticMeta from .Container import Container import numpy as np special_methods_available = [True] def disable_special_methods(sma=special_methods_available): sma[0]=False def enable_special_methods(sma=special_methods_available): sma[0]=True def check_special_methods(sma=special_methods_available): return sma[0] from . import six def _extract(__func__, kwds, keys, classname, probe=True): """ Used by decorators stochastic and deterministic to inspect declarations """ # Add docs and name kwds['doc'] = __func__.__doc__ if not 'name' in kwds: kwds['name'] = __func__.__name__ # kwds.update({'doc':__func__.__doc__, 'name':__func__.__name__}) # Instanitate dictionary of parents parents = {} # This gets used by stochastic to check for long-format logp and random: if probe: cur_status = check_special_methods() disable_special_methods() # Define global tracing function (I assume this is for debugging??) # No, it's to get out the logp and random functions, if they're in there. def probeFunc(frame, event, arg): if event == 'return': locals = frame.f_locals kwds.update(dict((k,locals.get(k)) for k in keys)) sys.settrace(None) return probeFunc sys.settrace(probeFunc) # Get the functions logp and random (complete interface). # Disable special methods to prevent the formation of a hurricane of Deterministics try: __func__() except: if 'logp' in keys: kwds['logp']=__func__ else: kwds['eval'] =__func__ # Reenable special methods. if cur_status: enable_special_methods() for key in keys: if not key in kwds: kwds[key] = None for key in ['logp', 'eval']: if key in keys: if kwds[key] is None: kwds[key] = __func__ # Build parents dictionary by parsing the __func__tion's arguments. (args, varargs, varkw, defaults) = inspect.getargspec(__func__) if defaults is None: defaults = () # Make sure all parents were defined arg_deficit = (len(args) - ('value' in args)) - len(defaults) if arg_deficit > 0: err_str = classname + ' ' + __func__.__name__ + ': no parent provided for the following labels:' for i in range(arg_deficit): err_str += " " + args[i + ('value' in args)] if i < arg_deficit-1: err_str += ',' raise ValueError(err_str) # Fill in parent dictionary try: parents.update(dict(zip(args[-len(defaults):], defaults))) except TypeError: pass value = parents.pop('value', None) return (value, parents) def stochastic(__func__=None, __class__=Stochastic, binary=False, discrete=False, **kwds): """ Decorator function for instantiating stochastic variables. Usages: Medium: @stochastic def A(value = ., parent_name = ., ...): return foo(value, parent_name, ...) @stochastic(trace=trace_object) def A(value = ., parent_name = ., ...): return foo(value, parent_name, ...) Long: @stochastic def A(value = ., parent_name = ., ...): def logp(value, parent_name, ...): return foo(value, parent_name, ...) def random(parent_name, ...): return bar(parent_name, ...) @stochastic(trace=trace_object) def A(value = ., parent_name = ., ...): def logp(value, parent_name, ...): return foo(value, parent_name, ...) def random(parent_name, ...): return bar(parent_name, ...) where foo() computes the log-probability of the variable A conditional on its value and its parents' values, and bar() generates a random value from A's distribution conditional on its parents' values. :SeeAlso: Stochastic, Deterministic, deterministic, data, Potential, potential, Model, distributions """ def instantiate_p(__func__): value, parents = _extract(__func__, kwds, keys, 'Stochastic') return __class__(value=value, parents=parents, **kwds) keys = ['logp','random','rseed'] instantiate_p.kwds = kwds if __func__: return instantiate_p(__func__) return instantiate_p # Shortcut alias stoch = stochastic def potential(__func__ = None, **kwds): """ Decorator function instantiating potentials. Usage: @potential def B(parent_name = ., ...) return baz(parent_name, ...) where baz returns the deterministic B's value conditional on its parents. :SeeAlso: Deterministic, deterministic, Stochastic, Potential, stochastic, data, Model """ def instantiate_pot(__func__): junk, parents = _extract(__func__, kwds, keys, 'Potential', probe=False) return Potential(parents=parents, **kwds) keys = ['logp'] instantiate_pot.kwds = kwds if __func__: return instantiate_pot(__func__) return instantiate_pot pot = potential def deterministic(__func__ = None, **kwds): """ Decorator function instantiating deterministic variables. Usage: @deterministic def B(parent_name = ., ...) return baz(parent_name, ...) @deterministic(trace = trace_object) def B(parent_name = ., ...) return baz(parent_name, ...) where baz returns the variable B's value conditional on its parents. :SeeAlso: Deterministic, Potential, potential, Stochastic, stochastic, data, Model, CommonDeterministics """ def instantiate_n(__func__): junk, parents = _extract(__func__, kwds, keys, 'Deterministic', probe=False) return Deterministic(parents=parents, **kwds) keys = ['eval'] instantiate_n.kwds = kwds if __func__: return instantiate_n(__func__) return instantiate_n # Shortcut alias dtrm = deterministic def observed(obj=None, **kwds): """ Decorator function to instantiate data objects. If given a Stochastic, sets a the observed flag to True. Can be used as @observed def A(value = ., parent_name = ., ...): return foo(value, parent_name, ...) or as @stochastic(observed=True) def A(value = ., parent_name = ., ...): return foo(value, parent_name, ...) :SeeAlso: stochastic, Stochastic, dtrm, Deterministic, potential, Potential, Model, distributions """ if obj is not None: if isinstance(obj, Stochastic): obj._observed=True return obj else: p = stochastic(__func__=obj, observed=True, **kwds) return p kwds['observed']=True def instantiate_observed(func): return stochastic(func, **kwds) return instantiate_observed data = observed def robust_init(stochclass, tries, *args, **kwds): """Robust initialization of a Stochastic. If the evaluation of the log-probability returns a ZeroProbability error, due for example to a parent being outside of the support for this Stochastic, the values of parents are randomly sampled until a valid log-probability is obtained. If the log-probability is still not valid after `tries` attempts, the original ZeroProbability error is raised. :Parameters: stochclass : Stochastic, eg. Normal, Uniform, ... The Stochastic distribution to instantiate. tries : int Maximum number of times parents will be sampled. *args, **kwds Positional and keyword arguments to declare the Stochastic variable. :Example: >>> lower = pymc.Uniform('lower', 0., 2., value=1.5, rseed=True) >>> pymc.robust_init(pymc.Uniform, 100, 'data', lower=lower, upper=5, value=[1,2,3,4], observed=True) """ # Find the direct parents stochs = [arg for arg in (list(args) + list(kwds.values())) \ if isinstance(arg.__class__, StochasticMeta)] # Find the extended parents parents = stochs for s in stochs: parents.extend(s.extended_parents) extended_parents = set(parents) # Select the parents with a random method. random_parents = [p for p in extended_parents if p.rseed is True and hasattr(p, 'random')] for i in range(tries): try: return stochclass(*args, **kwds) except ZeroProbability: exc = sys.exc_info() for parent in random_parents: try: parent.random() except: six.reraise(*exc) six.reraise(*exc) pymc-2.2+ds/pymc/LazyFunction.pyx000066400000000000000000000214161204033704200170650ustar00rootroot00000000000000""" Class LazyFunction is defined here. """ __docformat__='reStructuredText' __author__ = 'Anand Patil, anand.prabhakar.patil@gmail.com' from PyMCObjects import Node, ContainerBase, Variable import numpy as np cdef extern from "stdlib.h": void* malloc(int size) void* free(void* ptr) cdef extern from "numpy/ndarrayobject.h": void* PyArray_DATA(object obj) cdef class NumberHolder: cdef int number def __init__(self): self.number = 1000 cdef class PointerHolder: cdef int* my_pointer def __init__(self, number_holder): cdef NumberHolder real_holder real_holder = number_holder self.my_pointer = &real_holder.number def get_number(self): return self.my_pointer[0] cdef class Counter: cdef long count cdef long totcount cdef long lastcount def __init__(self): self.count = 0 self.totcount = 0 def get_count(self): return self.count def click(self): self.lastcount = self.count self.count = self.totcount+1 self.totcount += 1 def unclick(self): self.count = self.lastcount cdef class LazyFunction: """ A function that is bound to its arguments, and which caches its last few evaluations so as to skip computation when possible. L = LazyFunction(fun, arguments, ultimate_args, [, cache_depth]) L.get() :Arguments: fun: The function that the LazyFunction uses to compute its values. arguments: A dictionary of arguments that the LazyFunction passes to its function. If any of the arguments is a Stochastic, Deterministic, or Container, that argument's 'value' attribute will be substituted for it when passed to fun. ultimate_args: A list of stochastics. These should be the extended parents of all variables in 'arguments'. cache_depth: The number of prior computations to 'memoize' in order to skip unnecessary computations. Externally-accessible methods: refresh_argument_values(): Iterates over LazyFunction's parents that are Stochastics, Deterministics, or Containers and records their current values for passing to self's internal function. get(): Refreshes argument values, checks cache, calls internal function if necessary, returns value. Externally-accessible attributes: arguments: A dictionary containing self's arguments. fun: Self's internal function. argument_values: A dictionary containing self's arguments, in which Stochastics, Deterministics, and Containers have been replaced by their 'value' attributes. :SeeAlso: Stochastic, Deterministic, Container """ cdef public object arguments, fun, argument_values cdef int cache_depth, n_ultimate_args cdef public object ultimate_args cdef public object cached_values # cdef object ultimate_arg_counter cdef int *frame_queue cdef long* cached_counts, cdef long** ultimate_arg_counters # cdef public object frame_queue def __init__(self, fun, arguments, ultimate_args, cache_depth): cdef object arg, name cdef int i cdef Counter this_counter # arguments will be parents and value for stochastics, just parents for deterministics. self.arguments = arguments self.cache_depth = cache_depth # Populate argument iterables for name in arguments: # This object is arg. arg = arguments[name] self.ultimate_args = list(ultimate_args) self.n_ultimate_args = len(self.ultimate_args) # Initialize caches self.cached_values = [] for i in range(self.cache_depth): self.cached_values.append(None) # Underlying function self.fun = fun # C initializations self.frame_queue = malloc(sizeof(int)*self.cache_depth) for i from 0<=i malloc(sizeof(long*)*self.n_ultimate_args) for i from 0 <= i < self.n_ultimate_args: this_counter = self.ultimate_args[i].counter self.ultimate_arg_counters[i] = &this_counter.count # Cache is an array of counter values. self.cached_counts = malloc(sizeof(long)*self.n_ultimate_args*self.cache_depth) for i from 0 <= i < self.n_ultimate_args*self.cache_depth: self.cached_counts[i] = -1 def __dealloc__(self): free(self.frame_queue) free(self.ultimate_arg_counters) free(self.cached_counts) cdef int check_argument_caches(self) except *: """ Compare the value of the ultimate arguments to the values in the cache. If there's a mismatch (match is by reference, not value), return -1. Otherwise return 0. """ # TODO: When GIL-less Python becomes available, do this in the # worker threads. cdef int i, j, k, mismatch, this_testval # TODO: Py_BEGIN_ALLOW_THREADS for i from 0 <= i < self.cache_depth: mismatch = 0 for j from 0 <= j < self.n_ultimate_args: this_testval = self.ultimate_arg_counters[j][0] if not this_testval == self.cached_counts[i * self.n_ultimate_args + j]: mismatch = 1 break if mismatch == 0: # Find i in the frame queue and move it to the end, so the current # value gets overwritten late. for j from 0 <= j < self.cache_depth: if self.frame_queue[j] == i: break for k from j <= k < self.cache_depth-1: self.frame_queue[k] = self.frame_queue[k+1] self.frame_queue[self.cache_depth-1] = i return i i=-1 # TODO: Py_END_ALLOW_THREADS return i cdef void cache(self, value) except *: """ Stick self's value in the cache, and also the values of all self's ultimate arguments for future caching. """ cdef int i, j, cur_frame cur_frame = self.frame_queue[0] for j from 0 <= j < self.cache_depth-1: self.frame_queue[j] = self.frame_queue[j+1] self.frame_queue[self.cache_depth-1] = cur_frame # Store new self.cached_values[cur_frame] = value for j from 0 <= j < self.n_ultimate_args: self.cached_counts[cur_frame * self.n_ultimate_args + j] = self.ultimate_arg_counters[j][0] def get_frame_queue(self): cdef int i cdef object out out = np.empty(self.cache_depth,dtype=int) for i from 0<=i0: self.cache(value) def get(self): """ Call this method to cause the LazyFunction to refresh its arguments' values, decide whether it needs to recompute, and return its current value. """ cdef int match_index # print 'get called' if self.cache_depth == 0: return self.fun(**self.arguments.value) match_index = self.check_argument_caches() if match_index < 0: #Recompute value = self.fun(**self.arguments.value) self.cache(value) else: value = self.cached_values[match_index] return value pymc-2.2+ds/pymc/MCMC.py000066400000000000000000000400141204033704200147620ustar00rootroot00000000000000""" Class MCMC, which fits probability models using Markov Chain Monte Carlo, is defined here. """ __all__ = ['MCMC'] from .Model import Sampler from .StepMethods import StepMethodRegistry, assign_method, DrawFromPrior from .distributions import absolute_loss, squared_loss, chi_square_loss import sys, time, pdb import numpy as np from .utils import crawl_dataless from .six import print_ # from .progressbar import ProgressBar, Percentage, Bar, ETA, Iterations from progressbar import ProgressBar GuiInterrupt = 'Computation halt' Paused = 'Computation paused' class MCMC(Sampler): """ This class fits probability models using Markov Chain Monte Carlo. Each stochastic variable is assigned a StepMethod object, which makes it take a single MCMC step conditional on the rest of the model. These step methods are called in turn. >>> A = MCMC(input, db, verbose=0) :Parameters: - input : module, list, tuple, dictionary, set, object or nothing. Model definition, in terms of Stochastics, Deterministics, Potentials and Containers. If nothing, all nodes are collected from the base namespace. - db : string The name of the database backend that will store the values of the stochastics and deterministics sampled during the MCMC loop. - verbose : integer Level of output verbosity: 0=none, 1=low, 2=medium, 3=high Inherits all methods and attributes from Model. Subclasses must define the _loop method: - _loop(self, *args, **kwargs): Can be called after a sampling run is interrupted (by pausing, halting or a KeyboardInterrupt) to continue the sampling run. _loop must be able to handle KeyboardInterrupts gracefully, and should monitor the sampler's status periodically. Available status values are: - 'ready': Ready to sample. - 'paused': A pause has been requested, or the sampler is paused. _loop should return control as soon as it is safe to do so. - 'halt': A halt has been requested, or the sampler is stopped. _loop should call halt as soon as it is safe to do so. - 'running': Sampling is in progress. :SeeAlso: Model, Sampler, StepMethod. """ def __init__(self, input=None, db='ram', name='MCMC', calc_deviance=True, **kwds): """Initialize an MCMC instance. :Parameters: - input : module, list, tuple, dictionary, set, object or nothing. Model definition, in terms of Stochastics, Deterministics, Potentials and Containers. If nothing, all nodes are collected from the base namespace. - db : string The name of the database backend that will store the values of the stochastics and deterministics sampled during the MCMC loop. - verbose : integer Level of output verbosity: 0=none, 1=low, 2=medium, 3=high - **kwds : Keywords arguments to be passed to the database instantiation method. """ Sampler.__init__(self, input, db, name, calc_deviance=calc_deviance, **kwds) self._sm_assigned = False self.step_method_dict = {} for s in self.stochastics: self.step_method_dict[s] = [] self._state = ['status', '_current_iter', '_iter', '_tune_interval', '_burn', '_thin', '_tuned_count', '_tune_throughout', '_burn_till_tuned'] def use_step_method(self, step_method_class, *args, **kwds): """ M.use_step_method(step_method_class, *args, **kwds) Example of usage: To handle stochastic A with a Metropolis instance, M.use_step_method(Metropolis, A, sig=.1) To subsequently get a reference to the new step method, S = M.step_method_dict[A][0] """ new_method = step_method_class(*args, **kwds) if self.verbose > 1: print_('Using step method %s. Stochastics: ' % step_method_class.__name__) for s in new_method.stochastics: self.step_method_dict[s].append(new_method) if self.verbose > 1: print_('\t'+s.__name__) if self._sm_assigned: self.step_methods.add(new_method) setattr(new_method, '_model', self) def remove_step_method(self, step_method): """ Removes a step method. """ try: for s in step_method.stochastics: self.step_method_dict[s].remove(step_method) if hasattr(self, "step_methods"): self.step_methods.discard(step_method) self._sm_assigned = False except AttributeError: for sm in step_method: self.remove_step_method(sm) def assign_step_methods(self, verbose=-1, draw_from_prior_when_possible = True): """ Make sure every stochastic variable has a step method. If not, assign a step method from the registry. """ if not self._sm_assigned: if draw_from_prior_when_possible: # Assign dataless stepper first last_gen = set([]) for s in self.stochastics - self.observed_stochastics: if s._random is not None: if len(s.extended_children)==0: last_gen.add(s) dataless, dataless_gens = crawl_dataless(set(last_gen), [last_gen]) if len(dataless): new_method = DrawFromPrior(dataless, dataless_gens[::-1], verbose=verbose) setattr(new_method, '_model', self) for d in dataless: if not d.observed: self.step_method_dict[d].append(new_method) if self.verbose > 1: print_('Assigning step method %s to stochastic %s' % (new_method.__class__.__name__, d.__name__)) for s in self.stochastics: # If not handled by any step method, make it a new step method using the registry if len(self.step_method_dict[s])==0: new_method = assign_method(s, verbose=verbose) setattr(new_method, '_model', self) self.step_method_dict[s].append(new_method) if self.verbose > 1: print_('Assigning step method %s to stochastic %s' % (new_method.__class__.__name__, s.__name__)) self.step_methods = set() for s in self.stochastics: self.step_methods |= set(self.step_method_dict[s]) for sm in self.step_methods: if sm.tally: for name in sm._tuning_info: self._funs_to_tally[sm._id+'_'+name] = lambda name=name, sm=sm: getattr(sm, name) else: # Change verbosity for step methods for sm_key in self.step_method_dict: for sm in self.step_method_dict[sm_key]: sm.verbose = verbose self.restore_sm_state() self._sm_assigned = True def sample(self, iter, burn=0, thin=1, tune_interval=1000, tune_throughout=True, save_interval=None, burn_till_tuned=False, stop_tuning_after=5, verbose=0, progress_bar=True): """ sample(iter, burn, thin, tune_interval, tune_throughout, save_interval, verbose, progress_bar) Initialize traces, run sampling loop, clean up afterward. Calls _loop. :Parameters: - iter : int Total number of iterations to do - burn : int Variables will not be tallied until this many iterations are complete, default 0 - thin : int Variables will be tallied at intervals of this many iterations, default 1 - tune_interval : int Step methods will be tuned at intervals of this many iterations, default 1000 - tune_throughout : boolean If true, tuning will continue after the burnin period (True); otherwise tuning will halt at the end of the burnin period. - save_interval : int or None If given, the model state will be saved at intervals of this many iterations - verbose : boolean - progress_bar : boolean Display progress bar while sampling. - burn_till_tuned: boolean If True the Sampler would burn samples until all step methods are tuned. A tuned step methods is one that was not tuned for the last `stop_tuning_after` tuning intervals. The burn-in phase will have a minimum of 'burn' iterations but could be longer if tuning is needed. After the phase is done the sampler will run for another (iter - burn) iterations, and will tally the samples according to the 'thin' argument. This means that the total number of iteration is update throughout the sampling procedure. If burn_till_tuned is True it also overrides the tune_thorughout argument, so no step method will be tuned when sample are being tallied. - stop_tuning_adfter: int the number of untuned successive tuning interval needed to be reach in order for the burn-in phase to be done (If burn_till_tuned is True). """ self.assign_step_methods(verbose=verbose) if burn > iter: raise ValueError('Burn interval cannot be larger than specified number of iterations.') self._n_tally = int(iter) - int(burn) if burn_till_tuned: self._stop_tuning_after = stop_tuning_after tune_throughout = False if verbose > 0: print "burn_til_tuned is True. tune_throughout is set to False" burn = int(max(burn, stop_tuning_after * tune_interval)) iter = self._n_tally + burn self._iter = int(iter) self._burn = int(burn) self._thin = int(thin) self._tune_interval = int(tune_interval) self._tune_throughout = tune_throughout self._burn_till_tuned = burn_till_tuned self._save_interval = save_interval length = max(int(np.floor((1.0*iter-burn)/thin)), 1) self.max_trace_length = length # Flags for tuning self._tuning = True self._tuned_count = 0 # Progress bar self.pbar = None if not verbose and progress_bar: self.pbar = ProgressBar(self._iter) # Run sampler Sampler.sample(self, iter, length, verbose) def _loop(self): # Set status flag self.status='running' try: while self._current_iter < self._iter and not self.status == 'halt': if self.status == 'paused': break i = self._current_iter # Update progress bar if not (i+1) % 100 and self.pbar: self.pbar.animate(i+1) # Tune at interval if i and not (i % self._tune_interval) and self._tuning: self.tune() #update _burn and _iter if needed if self._burn_till_tuned and (self._tuned_count == 0): new_burn = self._current_iter + int(self._stop_tuning_after * self._tune_interval) self._burn = max(new_burn, self._burn); self._iter = self._burn + self._n_tally self.pbar = ProgressBar(self._iter) self.pbar.animate(i+1) # Manage burn-in if i == self._burn: if self.verbose>0: print_('\nBurn-in interval complete') if not self._tune_throughout: self._tuning = False # Tell all the step methods to take a step for step_method in self.step_methods: if self.verbose > 2: print_('Step method %s stepping' % step_method._id) # Step the step method step_method.step() # Record sample to trace, if appropriate if i % self._thin == 0 and i >= self._burn: self.tally() if self._save_interval is not None: if i % self._save_interval==0: self.save_state() # Periodically commit samples to backend if not i % 1000: self.commit() # Increment interation self._current_iter += 1 except KeyboardInterrupt: self.status='halt' finally: # Stop progress bar if self.pbar: self.pbar.animate(self._iter) if self.status == 'halt': self._halt() def tune(self): """ Tell all step methods to tune themselves. """ # ======================================= # = This is what makes price.py puke... = # ======================================= # Only tune during burn-in # if self._current_iter > self._burn: # self._tuning = False # return if self.verbose > 0: print_('\tTuning at iteration', self._current_iter) # Initialize counter for number of tuning stochastics tuning_count = 0 for step_method in self.step_methods: verbose = self.verbose if step_method.verbose > -1: verbose = step_method.verbose # Tune step methods tuning_count += step_method.tune(verbose=self.verbose) if verbose > 1: print_('\t\tTuning step method %s, returned %i\n' %(step_method._id, tuning_count)) sys.stdout.flush() if self._burn_till_tuned: if not tuning_count: # If no step methods needed tuning, increment count self._tuned_count += 1 else: # Otherwise re-initialize count self._tuned_count = 0 # n consecutive clean intervals removed tuning # n is equal to self._stop_tuning_after if self._tuned_count == self._stop_tuning_after: if self.verbose > 0: print_('\nFinished tuning') self._tuning = False def get_state(self): """ Return the sampler and step methods current state in order to restart sampling at a later time. """ self.step_methods = set() for s in self.stochastics: self.step_methods |= set(self.step_method_dict[s]) state = Sampler.get_state(self) state['step_methods'] = {} # The state of each StepMethod. for sm in self.step_methods: state['step_methods'][sm._id] = sm.current_state().copy() return state def restore_sm_state(self): sm_state = self.db.getstate() if sm_state is not None: sm_state = sm_state.get('step_methods', {}) # Restore stepping methods state for sm in self.step_methods: sm.__dict__.update(sm_state.get(sm._id, {})) def _calc_dic(self): """Calculates deviance information Criterion""" # Find mean deviance mean_deviance = np.mean(self.db.trace('deviance')(), axis=0) # Set values of all parameters to their mean for stochastic in self.stochastics: # Calculate mean of paramter try: mean_value = np.mean(self.db.trace(stochastic.__name__)(), axis=0) # Set current value to mean stochastic.value = mean_value except KeyError: print_("No trace available for %s. DIC value may not be valid." % stochastic.__name__) # Return twice deviance minus deviance at means return 2*mean_deviance - self.deviance # Make dic a property def _get_dic(self): return self._calc_dic() dic = property(_get_dic) pymc-2.2+ds/pymc/Matplot.py000077500000000000000000001033741204033704200156770ustar00rootroot00000000000000""" Plotting module using matplotlib. """ from __future__ import division # Import matplotlib functions try: import matplotlib.gridspec as gridspec except ImportError: gridspec = None import pymc import os from pylab import hist, plot as pyplot, xlabel, ylabel, xlim, ylim, savefig, acorr, mlab from pylab import figure, subplot, subplots_adjust, gca, scatter, axvline, yticks, xticks from pylab import setp, contourf, cm, title, colorbar, fill, text from pylab import errorbar # Import numpy functions from numpy import arange, log, ravel, rank, swapaxes, concatenate, asarray, ndim from numpy import mean, std, sort, prod, floor, shape, size, transpose from numpy import min as nmin, max as nmax, abs from numpy import append, ones, dtype, indices, array, unique, zeros from .utils import quantiles as calc_quantiles, hpd as calc_hpd try: from scipy import special except ImportError: special = None from . import six from .six import print_ __all__ = ['func_quantiles', 'func_envelopes', 'func_sd_envelope', 'centered_envelope', 'get_index_list', 'plot', 'histogram', 'trace', 'geweke_plot', 'gof_plot', 'pair_posterior', 'summary_plot'] def get_index_list(shape, j): """ index_list = get_index_list(shape, j) :Arguments: shape: a tuple j: an integer Assumes index j is from a ravelled version of an array with specified shape, returns the corresponding non-ravelled index tuple as a list. """ r = range(len(shape)) index_list = (r) for i in r: if i < len(shape): prodshape = prod(shape[i+1:]) else: prodshape=0 index_list[i] = int(floor(j/prodshape)) if index_list[i]>shape[i]: raise IndexError('Requested index too large') j %= prodshape return index_list def func_quantiles(node, qlist=(.025, .25, .5, .75, .975)): """ Returns an array whose ith row is the q[i]th quantile of the function. :Arguments: func_stacks: The samples of the function. func_stacks[i,:] gives sample i. qlist: A list or array of the quantiles you would like. :SeeAlso: func_envelopes, func_hist, weightplot """ # For very large objects, this will be rather long. # Too get the length of the table, use obj.trace.length() if isinstance(node, pymc.Variable): func_stacks = node.trace() else: func_stacks = node if any(qlist<0.) or any(qlist>1.): raise TypeError('The elements of qlist must be between 0 and 1') func_stacks = func_stacks.copy() N_samp = shape(func_stacks)[0] func_len = tuple(shape(func_stacks)[1:]) func_stacks.sort(axis=0) quants = zeros((len(qlist),func_len),dtype=float) alphas = 1.-abs(array(qlist)-.5)/.5 for i in range(len(qlist)): quants[i,] = func_stacks[int(qlist[i]*N_samp),] return quants, alphas def func_envelopes(node, CI=(.25, .5, .95)): """ func_envelopes(node, CI = (.25, .5, .95)) Returns a list of centered_envelope objects for func_stacks, each one corresponding to an element of CI, and one corresponding to mass 0 (the median). :Arguments: func_stacks: The samples of the function. func_stacks[i,:] gives sample i. CI: A list or array containing the probability masses the envelopes should enclose. :Note: The return list of envelopes is sorted from high to low enclosing probability masses, so they should be plotted in order. :SeeAlso: centered_envelope, func_quantiles, func_hist, weightplot """ if isinstance(node, pymc.Variable): func_stacks = asarray(node.trace()) else: func_stacks = node func_stacks = func_stacks.copy() func_stacks.sort(axis=0) envelopes = [] qsort = sort(CI) for i in range(len(qsort)): envelopes.append(centered_envelope(func_stacks, qsort[len(qsort)-i-1])) envelopes.append(centered_envelope(func_stacks, 0.)) return envelopes # FIXME: Not sure of the best way to bring these two into PlotFactory... class func_sd_envelope(object): """ F = func_sd_envelope(func_stacks) F.display(axes,xlab=None,ylab=None,name=None) This object plots the mean and +/- 1 sd error bars for the one or two-dimensional function whose trace """ def __init__(self, node, format='pdf', plotpath='', suffix=''): if isinstance(node, pymc.Variable): func_stacks = node.trace() else: func_stacks = node self.name = node.__name__ self._format=format self._plotpath=plotpath self.suffix=suffix self.mean = mean(func_stacks,axis=0) self.std = std(func_stacks, axis=0) self.lo = self.mean - self.std self.hi = self.mean + self.std self.ndim = len(shape(func_stacks))-1 def display(self,axes,xlab=None,ylab=None,name=None,new=True): if name: name_str = name else: name_str = '' if self.ndim==1: if new: figure() pyplot(axes,self.lo,'k-.',label=name_str+' mean-sd') pyplot(axes,self.hi,'k-.',label=name_str+'mean+sd') pyplot(axes,self.mean,'k-',label=name_str+'mean') if name: title(name) elif self.ndim==2: if new: figure(figsize=(14,4)) subplot(1,3,1) contourf(axes[0],axes[1],self.lo,cmap=cm.bone) title(name_str+' mean-sd') if xlab: xlabel(xlab) if ylab: ylabel(ylab) colorbar() subplot(1,3,2) contourf(axes[0],axes[1],self.mean,cmap=cm.bone) title(name_str+' mean') if xlab: xlabel(xlab) if ylab: ylabel(ylab) colorbar() subplot(1,3,3) contourf(axes[0],axes[1],self.hi,cmap=cm.bone) title(name_str+' mean+sd') if xlab: xlabel(xlab) if ylab: ylabel(ylab) colorbar() else: raise ValueError('Only 1- and 2- dimensional functions can be displayed') savefig("%s%s%s.%s" % (self._plotpath,self.name,self.suffix,self._format)) class centered_envelope(object): """ E = centered_envelope(sorted_func_stack, mass) An object corresponding to the centered CI envelope of a function enclosing a particular probability mass. :Arguments: sorted_func_stack: The samples of the function, sorted. if func_stacks[i,:] gives sample i, then sorted_func_stack is sort(func_stacks,0). mass: The probability mass enclosed by the CI envelope. :SeeAlso: func_envelopes """ def __init__(self, sorted_func_stack, mass): if mass<0 or mass>1: raise ValueError('mass must be between 0 and 1') N_samp = shape(sorted_func_stack)[0] self.mass = mass self.ndim = len(sorted_func_stack.shape)-1 if self.mass == 0: self.value = sorted_func_stack[int(N_samp*.5),] else: quandiff = .5*(1.-self.mass) self.lo = sorted_func_stack[int(N_samp*quandiff),] self.hi = sorted_func_stack[int(N_samp*(1.-quandiff)),] def display(self, xaxis, alpha, new=True): """ E.display(xaxis, alpha = .8) :Arguments: xaxis, alpha Plots the CI region on the current figure, with respect to xaxis, at opacity alpha. :Note: The fill color of the envelope will be self.mass on the grayscale. """ if new: figure() if self.ndim == 1: if self.mass>0.: x = concatenate((xaxis,xaxis[::-1])) y = concatenate((self.lo, self.hi[::-1])) fill(x,y,facecolor='%f' % self.mass,alpha=alpha, label = ('centered CI ' + str(self.mass))) else: pyplot(xaxis,self.value,'k-',alpha=alpha, label = ('median')) else: if self.mass>0.: subplot(1,2,1) contourf(xaxis[0],xaxis[1],self.lo,cmap=cm.bone) colorbar() subplot(1,2,2) contourf(xaxis[0],xaxis[1],self.hi,cmap=cm.bone) colorbar() else: contourf(xaxis[0],xaxis[1],self.value,cmap=cm.bone) colorbar() def plotwrapper(f): """ This decorator allows for PyMC arguments of various types to be passed to the plotting functions. It identifies the type of object and locates its trace(s), then passes the data to the wrapped plotting function. """ def wrapper(pymc_obj, *args, **kwargs): start = 0 if 'start' in kwargs: start = kwargs.pop('start') # Figure out what type of object it is try: # First try Model type for variable in pymc_obj._variables_to_tally: # Plot object if variable._plot!=False: data = pymc_obj.trace(variable.__name__)[start:] if size(data[-1])>=10 and variable._plot!=True: continue elif variable.dtype is dtype('object'): continue name = variable.__name__ if args: name = '%s_%s' % (args[0], variable.__name__) f(data, name, *args, **kwargs) return except AttributeError: pass try: # Then try Trace type data = pymc_obj()[:] name = pymc_obj.name f(data, name, *args, **kwargs) return except (AttributeError, TypeError): pass try: # Then try Node type if pymc_obj._plot!=False: data = pymc_obj.trace()[start:] # This is deprecated. DH name = pymc_obj.__name__ f(data, name, *args, **kwargs) return except AttributeError: pass if type(pymc_obj) == dict: # Then try dictionary for i in pymc_obj: data = pymc_obj[i][start:] if args: i = '%s_%s' % (args[0], i) elif 'name' in kwargs: i = '%s_%s' % (kwargs.pop('name'), i) f(data, i, *args, **kwargs) return # If others fail, assume that raw data is passed f(pymc_obj, *args, **kwargs) wrapper.__doc__ = f.__doc__ wrapper.__name__ = f.__name__ return wrapper @plotwrapper def plot(data, name, format='png', suffix='', path='./', common_scale=True, datarange=(None, None), new=True, last=True, rows=1, num=1, fontmap = None, verbose=1): """ Generates summary plots for nodes of a given PyMC object. :Arguments: data: PyMC object, trace or array A trace from an MCMC sample or a PyMC object with one or more traces. name: string The name of the object. format (optional): string Graphic output format (defaults to png). suffix (optional): string Filename suffix. path (optional): string Specifies location for saving plots (defaults to local directory). common_scale (optional): bool Specifies whether plots of multivariate nodes should be on the same scale (defaults to True). """ if fontmap is None: fontmap = {1:10, 2:8, 3:6, 4:5, 5:4} # If there is only one data array, go ahead and plot it ... if rank(data)==1: if verbose>0: print_('Plotting', name) # If new plot, generate new frame if new: figure(figsize=(10, 6)) # Call trace trace(data, name, datarange=datarange, rows=rows*2, columns=2, num=num+3*(num-1), last=last, fontmap=fontmap) # Call autocorrelation autocorrelation(data, name, rows=rows*2, columns=2, num=num+3*(num-1)+2, last=last, fontmap=fontmap) # Call histogram histogram(data, name, datarange=datarange, rows=rows, columns=2, num=num*2, last=last, fontmap=fontmap) if last: if not os.path.exists(path): os.mkdir(path) if not path.endswith('/'): path += '/' savefig("%s%s%s.%s" % (path, name, suffix, format)) else: # ... otherwise plot recursively tdata = swapaxes(data, 0, 1) datarange = (None, None) # Determine common range for plots if common_scale: datarange = (nmin(tdata), nmax(tdata)) # How many rows? _rows = min(4, len(tdata)) for i in range(len(tdata)): # New plot or adding to existing? _new = not i % _rows # Current subplot number _num = i % _rows + 1 # Final subplot of current figure? _last = (_num==_rows) or (i==len(tdata)-1) plot(tdata[i], name+'_'+str(i), format=format, path=path, common_scale=common_scale, datarange=datarange, suffix=suffix, new=_new, last=_last, rows=_rows, num=_num) @plotwrapper def histogram(data, name, nbins=None, datarange=(None, None), format='png', suffix='', path='./', rows=1, columns=1, num=1, last=True, fontmap = None, verbose=1): # Internal histogram specification for handling nested arrays try: if fontmap is None: fontmap = {1:10, 2:8, 3:6, 4:5, 5:4} # Stand-alone plot or subplot? standalone = rows==1 and columns==1 and num==1 if standalone: if verbose>0: print_('Generating histogram of', name) figure() subplot(rows, columns, num) #Specify number of bins (10 as default) uniquevals = len(unique(data)) nbins = nbins or uniquevals*(uniquevals<=25) or int(4 + 1.5*log(len(data))) # Generate histogram hist(data.tolist(), nbins, histtype='stepfilled') xlim(datarange) # Plot options title('\n\n %s hist'%name, x=0., y=1., ha='left', va='top', fontsize='medium') ylabel("Frequency", fontsize='x-small') # Plot vertical lines for median and 95% HPD interval quant = calc_quantiles(data) axvline(x=quant[50], linewidth=2, color='black') for q in calc_hpd(data, 0.05): axvline(x=q, linewidth=2, color='grey', linestyle='dotted') # Smaller tick labels tlabels = gca().get_xticklabels() setp(tlabels, 'fontsize', fontmap[rows]) tlabels = gca().get_yticklabels() setp(tlabels, 'fontsize', fontmap[rows]) if standalone: if not os.path.exists(path): os.mkdir(path) if not path.endswith('/'): path += '/' # Save to file savefig("%s%s%s.%s" % (path, name, suffix, format)) #close() except OverflowError: print_('... cannot generate histogram') @plotwrapper def trace(data, name, format='png', datarange=(None, None), suffix='', path='./', rows=1, columns=1, num=1, last=True, fontmap = None, verbose=1): # Internal plotting specification for handling nested arrays if fontmap is None: fontmap = {1:10, 2:8, 3:6, 4:5, 5:4} # Stand-alone plot or subplot? standalone = rows==1 and columns==1 and num==1 if standalone: if verbose>0: print_('Plotting', name) figure() subplot(rows, columns, num) pyplot(data.tolist()) ylim(datarange) # Plot options title('\n\n %s trace'%name, x=0., y=1., ha='left', va='top', fontsize='small') # Smaller tick labels tlabels = gca().get_xticklabels() setp(tlabels, 'fontsize', fontmap[rows/2]) tlabels = gca().get_yticklabels() setp(tlabels, 'fontsize', fontmap[rows/2]) if standalone: if not os.path.exists(path): os.mkdir(path) if not path.endswith('/'): path += '/' # Save to file savefig("%s%s%s.%s" % (path, name, suffix, format)) #close() @plotwrapper def geweke_plot(data, name, format='png', suffix='-diagnostic', path='./', fontmap = None, verbose=1): # Generate Geweke (1992) diagnostic plots if fontmap is None: fontmap = {1:10, 2:8, 3:6, 4:5, 5:4} # Generate new scatter plot figure() x, y = transpose(data) scatter(x.tolist(), y.tolist()) # Plot options xlabel('First iteration', fontsize='x-small') ylabel('Z-score for %s' % name, fontsize='x-small') # Plot lines at +/- 2 sd from zero pyplot((nmin(x), nmax(x)), (2, 2), '--') pyplot((nmin(x), nmax(x)), (-2, -2), '--') # Set plot bound ylim(min(-2.5, nmin(y)), max(2.5, nmax(y))) xlim(0, nmax(x)) # Save to file if not os.path.exists(path): os.mkdir(path) if not path.endswith('/'): path += '/' savefig("%s%s%s.%s" % (path, name, suffix, format)) #close() @plotwrapper def discrepancy_plot(data, name='discrepancy', report_p=True, format='png', suffix='-gof', path='./', fontmap = None, verbose=1): # Generate goodness-of-fit deviate scatter plot if verbose>0: print_('Plotting', name+suffix) if fontmap is None: fontmap = {1:10, 2:8, 3:6, 4:5, 5:4} # Generate new scatter plot figure() try: x, y = transpose(data) except ValueError: x, y = data scatter(x, y) # Plot x=y line lo = nmin(ravel(data)) hi = nmax(ravel(data)) datarange = hi-lo lo -= 0.1*datarange hi += 0.1*datarange pyplot((lo, hi), (lo, hi)) # Plot options xlabel('Observed deviates', fontsize='x-small') ylabel('Simulated deviates', fontsize='x-small') if report_p: # Put p-value in legend count = sum(s>o for o,s in zip(x,y)) text(lo+0.1*datarange, hi-0.1*datarange, 'p=%.3f' % (count/len(x)), horizontalalignment='center', fontsize=10) # Save to file if not os.path.exists(path): os.mkdir(path) if not path.endswith('/'): path += '/' savefig("%s%s%s.%s" % (path, name, suffix, format)) #close() def gof_plot(simdata, trueval, name=None, nbins=None, format='png', suffix='-gof', path='./', fontmap = None, verbose=1): """Plots histogram of replicated data, indicating the location of the observed data""" if fontmap is None: fontmap = {1:10, 2:8, 3:6, 4:5, 5:4} try: if ndim(simdata)==1: simdata = simdata.trace() except ValueError: pass if ndim(trueval)==1 and ndim(simdata==2): # Iterate over more than one set of data for i in range(len(trueval)): n = name or 'MCMC' gof_plot(simdata[:,i], trueval[i], '%s[%i]' % (n, i), nbins=nbins, format=format, suffix=suffix, path=path, fontmap=fontmap) return if verbose>0: print_('Plotting', (name or 'MCMC') + suffix) figure() #Specify number of bins (10 as default) uniquevals = len(unique(simdata)) nbins = nbins or uniquevals*(uniquevals<=25) or int(4 + 1.5*log(len(simdata))) # Generate histogram hist(simdata, nbins) # Plot options xlabel(name or 'Value', fontsize='x-small') ylabel("Frequency", fontsize='x-small') # Smaller tick labels tlabels = gca().get_xticklabels() setp(tlabels, 'fontsize', fontmap[1]) tlabels = gca().get_yticklabels() setp(tlabels, 'fontsize', fontmap[1]) # Plot vertical line at location of true data value axvline(x=trueval, linewidth=2, color='r', linestyle='dotted') if not os.path.exists(path): os.mkdir(path) if not path.endswith('/'): path += '/' # Save to file savefig("%s%s%s.%s" % (path, name or 'MCMC', suffix, format)) #close() @plotwrapper def autocorrelation(data, name, maxlags=100, format='png', suffix='-acf', path='./', fontmap = None, new=True, last=True, rows=1, columns=1, num=1, verbose=1): """ Generate bar plot of the autocorrelation function for a series (usually an MCMC trace). :Arguments: data: PyMC object, trace or array A trace from an MCMC sample or a PyMC object with one or more traces. name: string The name of the object. maxlags (optional): int The largest discrete value for the autocorrelation to be calculated (defaults to 100). format (optional): string Graphic output format (defaults to png). suffix (optional): string Filename suffix. path (optional): string Specifies location for saving plots (defaults to local directory). fontmap (optional): dict Font mapping for plot labels; most users should not specify this. verbose (optional): int Level of output verbosity. """ # Internal plotting specification for handling nested arrays if fontmap is None: fontmap = {1:10, 2:8, 3:6, 4:5, 5:4} # Stand-alone plot or subplot? standalone = rows==1 and columns==1 and num==1 if standalone: if verbose>0: print_('Plotting', name) figure() subplot(rows, columns, num) if ndim(data) == 1: maxlags = min(len(data)-1, maxlags) try: acorr(data, detrend=mlab.detrend_mean, maxlags=maxlags) except: print_('Cannot plot autocorrelation for %s' % name) return # Set axis bounds ylim(-.1, 1.1) xlim(-maxlags, maxlags) # Plot options title('\n\n %s acorr'%name, x=0., y=1., ha='left', va='top', fontsize='small') # Smaller tick labels tlabels = gca().get_xticklabels() setp(tlabels, 'fontsize', fontmap[1]) tlabels = gca().get_yticklabels() setp(tlabels, 'fontsize', fontmap[1]) elif ndim(data) == 2: # generate acorr plot for each dimension rows = data.shape[1] for j in range(rows): autocorrelation(data[:, j], '%s_%d' % (name, j), maxlags, fontmap=fontmap, rows=rows, columns=1, num=j+1) else: raise ValueError('Only 1- and 2- dimensional functions can be displayed') if standalone: if not os.path.exists(path): os.mkdir(path) if not path.endswith('/'): path += '/' # Save to fiel savefig("%s%s%s.%s" % (path, name, suffix, format)) #close() def zplot(pvalue_dict, name='', format='png', path='./', fontmap = None, verbose=1): """Plots absolute values of z-scores for model validation output from diagnostics.validate().""" if verbose: print_('\nGenerating model validation plot') if fontmap is None: fontmap = {1:10, 2:8, 3:6, 4:5, 5:4} x,y,labels = [],[],[] for i,var in enumerate(pvalue_dict): # Get p-values pvals = pvalue_dict[var] # Take absolute values of inverse-standard normals zvals = abs(special.ndtri(pvals)) x = append(x, zvals) y = append(y, ones(size(zvals))*(i+1)) vname = var vname += " (%i)" % size(zvals) labels = append(labels, vname) # Spawn new figure figure() subplot(111) subplots_adjust(left=0.25, bottom=0.1) # Plot scores pyplot(x, y, 'o') # Set range on axes ylim(0, size(pvalue_dict)+2) xlim(xmin=0) # Tick labels for y-axis yticks(arange(len(labels)+2), append(append("", labels), "")) # X label xlabel("Absolute z transformation of p-values") if not os.path.exists(path): os.mkdir(path) if not path.endswith('/'): path += '/' if name: name += '-' savefig("%s%svalidation.%s" % (path, name, format)) def var_str(name, shape): """Return a sequence of strings naming the element of the tallyable object. :Example: >>> var_str('theta', (4,)) ['theta[1]', 'theta[2]', 'theta[3]', 'theta[4]'] """ size = prod(shape) ind = (indices(shape) + 1).reshape(-1, size) names = ['['+','.join(map(str, i))+']' for i in zip(*ind)] # if len(name)>12: # name = '\n'.join(name.split('_')) # name += '\n' names[0] = '%s %s' % (name, names[0]) return names def summary_plot(pymc_obj, name='model', format='png', suffix='-summary', path='./', alpha=0.05, quartiles=True, hpd=True, rhat=True, main=None, xlab=None, x_range=None, custom_labels=None, chain_spacing=0.05, vline_pos=0): """ Model summary plot Generates a "forest plot" of 100*(1-alpha)% credible intervals for either the set of nodes in a given model, or a specified set of nodes. :Arguments: pymc_obj: PyMC object, trace or array A trace from an MCMC sample or a PyMC object with one or more traces. name (optional): string The name of the object. format (optional): string Graphic output format (defaults to png). suffix (optional): string Filename suffix. path (optional): string Specifies location for saving plots (defaults to local directory). alpha (optional): float Alpha value for (1-alpha)*100% credible intervals (defaults to 0.05). quartiles (optional): bool Flag for plotting the interquartile range, in addition to the (1-alpha)*100% intervals (defaults to True). hpd (optional): bool Flag for plotting the highest probability density (HPD) interval instead of the central (1-alpha)*100% interval (defaults to True). rhat (optional): bool Flag for plotting Gelman-Rubin statistics. Requires 2 or more chains (defaults to True). main (optional): string Title for main plot. Passing False results in titles being suppressed; passing False (default) results in default titles. xlab (optional): string Label for x-axis. Defaults to no label x_range (optional): list or tuple Range for x-axis. Defaults to matplotlib's best guess. custom_labels (optional): list User-defined labels for each node. If not provided, the node __name__ attributes are used. chain_spacing (optional): float Plot spacing between chains (defaults to 0.05). vline_pos (optional): numeric Location of vertical reference line (defaults to 0). """ if not gridspec: print_('\nYour installation of matplotlib is not recent enough to support summary_plot; this function is disabled until matplotlib is updated.') return # Quantiles to be calculated quantiles = [100*alpha/2, 50, 100*(1-alpha/2)] if quartiles: quantiles = [100*alpha/2, 25, 50, 75, 100*(1-alpha/2)] # Range for x-axis plotrange = None # Number of chains chains = None # Gridspec gs = None # Subplots interval_plot = None rhat_plot = None try: # First try Model type vars = pymc_obj._variables_to_tally except AttributeError: try: # Try a database object vars = pymc_obj._traces except AttributeError: # Assume an iterable vars = pymc_obj # Empty list for y-axis labels labels = [] # Counter for current variable var = 1 # Make sure there is something to print if all([v._plot==False for v in vars]): print_('No variables to plot') return for variable in vars: # If plot flag is off, do not print if variable._plot==False: continue # Extract name varname = variable.__name__ # Retrieve trace(s) i = 0 traces = [] while True: try: #traces.append(pymc_obj.trace(varname, chain=i)[:]) traces.append(variable.trace(chain=i)) i+=1 except (KeyError, IndexError): break chains = len(traces) if gs is None: # Initialize plot if rhat and chains>1: gs = gridspec.GridSpec(1, 2, width_ratios=[3,1]) else: gs = gridspec.GridSpec(1, 1) # Subplot for confidence intervals interval_plot = subplot(gs[0]) # Get quantiles data = [calc_quantiles(d, quantiles) for d in traces] if hpd: # Substitute HPD interval for i,d in enumerate(traces): hpd_interval = calc_hpd(d, alpha).T data[i][quantiles[0]] = hpd_interval[0] data[i][quantiles[-1]] = hpd_interval[1] data = [[d[q] for q in quantiles] for d in data] # Ensure x-axis contains range of current interval if plotrange: plotrange = [min(plotrange[0], nmin(data)), max(plotrange[1], nmax(data))] else: plotrange = [nmin(data), nmax(data)] try: # First try missing-value stochastic value = variable.get_stoch_value() except AttributeError: # All other variable types value = variable.value # Number of elements in current variable k = size(value) # Append variable name(s) to list if k>1: names = var_str(varname, shape(value)) labels += names else: labels.append(varname) #labels.append('\n'.join(varname.split('_'))) # Add spacing for each chain, if more than one e = [0] + [(chain_spacing * ((i+2)/2))*(-1)**i for i in range(chains-1)] # Loop over chains for j,quants in enumerate(data): # Deal with multivariate nodes if k>1: for i,q in enumerate(transpose(quants)): # Y coordinate with jitter y = -(var+i) + e[j] if quartiles: # Plot median pyplot(q[2], y, 'bo', markersize=4) # Plot quartile interval errorbar(x=(q[1],q[3]), y=(y,y), linewidth=2, color="blue") else: # Plot median pyplot(q[1], y, 'bo', markersize=4) # Plot outer interval errorbar(x=(q[0],q[-1]), y=(y,y), linewidth=1, color="blue") else: # Y coordinate with jitter y = -var + e[j] if quartiles: # Plot median pyplot(quants[2], y, 'bo', markersize=4) # Plot quartile interval errorbar(x=(quants[1],quants[3]), y=(y,y), linewidth=2, color="blue") else: # Plot median pyplot(quants[1], y, 'bo', markersize=4) # Plot outer interval errorbar(x=(quants[0],quants[-1]), y=(y,y), linewidth=1, color="blue") # Increment index var += k if custom_labels is not None: labels = custom_labels # Update margins left_margin = max([len(x) for x in labels])*0.015 gs.update(left=left_margin, right=0.95, top=0.9, bottom=0.05) # Define range of y-axis ylim(-var+0.5, -0.5) datarange = plotrange[1] - plotrange[0] xlim(plotrange[0] - 0.05*datarange, plotrange[1] + 0.05*datarange) # Add variable labels yticks([-(l+1) for l in range(len(labels))], labels) # Add title if main is not False: plot_title = main or str(int((1-alpha)*100)) + "% Credible Intervals" title(plot_title) # Add x-axis label if xlab is not None: xlabel(xlab) # Constrain to specified range if x_range is not None: xlim(*x_range) # Remove ticklines on y-axes for ticks in interval_plot.yaxis.get_major_ticks(): ticks.tick1On = False ticks.tick2On = False for loc, spine in six.iteritems(interval_plot.spines): if loc in ['bottom','top']: pass #spine.set_position(('outward',10)) # outward by 10 points elif loc in ['left','right']: spine.set_color('none') # don't draw spine # Reference line axvline(vline_pos, color='k', linestyle='--') # Genenerate Gelman-Rubin plot if rhat and chains>1: from .diagnostics import gelman_rubin # If there are multiple chains, calculate R-hat rhat_plot = subplot(gs[1]) if main is not False: title("R-hat") # Set x range xlim(0.9,2.1) # X axis labels xticks((1.0,1.5,2.0), ("1", "1.5", "2+")) yticks([-(l+1) for l in range(len(labels))], "") # Calculate diagnostic try: R = gelman_rubin(pymc_obj) except ValueError: R = {} for variable in vars: R[variable.__name__] = gelman_rubin(variable) i = 1 for variable in vars: if variable._plot==False: continue # Extract name varname = variable.__name__ try: value = variable.get_stoch_value() except AttributeError: value = variable.value k = size(value) if k>1: pyplot([min(r, 2) for r in R[varname]], [-(j+i) for j in range(k)], 'bo', markersize=4) else: pyplot(min(R[varname], 2), -i, 'bo', markersize=4) i += k # Define range of y-axis ylim(-i+0.5, -0.5) # Remove ticklines on y-axes for ticks in rhat_plot.yaxis.get_major_ticks(): ticks.tick1On = False ticks.tick2On = False for loc, spine in six.iteritems(rhat_plot.spines): if loc in ['bottom','top']: pass #spine.set_position(('outward',10)) # outward by 10 points elif loc in ['left','right']: spine.set_color('none') # don't draw spine savefig("%s%s%s.%s" % (path, name, suffix, format)) pymc-2.2+ds/pymc/Model.py000066400000000000000000000702001204033704200153030ustar00rootroot00000000000000""" Base classes Model and Sampler are defined here. """ # Changeset history # 22/03/2007 -DH- Added methods to query the StepMethod's state and pass it to database. # 20/03/2007 -DH- Separated Model from Sampler. Removed _prepare(). Commented __setattr__ because it breaks properties. __docformat__='reStructuredText' __all__ = ['Model', 'Sampler'] """ Summary""" from numpy import zeros, floor from numpy.random import randint from pymc import database from .PyMCObjects import Stochastic, Deterministic, Node, Variable, Potential from .Container import Container, ObjectContainer import sys,os from copy import copy from threading import Thread from .Node import ContainerBase from time import sleep import pdb from . import utils import warnings, traceback import itertools from .six import print_, reraise GuiInterrupt = 'Computation halt' Paused = 'Computation paused' class EndofSampling(Exception): pass class Model(ObjectContainer): """ The base class for all objects that fit probability models. Model is initialized with: >>> A = Model(input, verbose=0) :Parameters: - input : module, list, tuple, dictionary, set, object or nothing. Model definition, in terms of Stochastics, Deterministics, Potentials and Containers. If nothing, all nodes are collected from the base namespace. Attributes: - deterministics - stochastics (with observed=False) - data (stochastic variables with observed=True) - variables - potentials - containers - nodes - all_objects - status: Not useful for the Model base class, but may be used by subclasses. The following attributes only exist after the appropriate method is called: - moral_neighbors: The edges of the moralized graph. A dictionary, keyed by stochastic variable, whose values are sets of stochastic variables. Edges exist between the key variable and all variables in the value. Created by method _moralize. - extended_children: The extended children of self's stochastic variables. See the docstring of extend_children. This is a dictionary keyed by stochastic variable. - generations: A list of sets of stochastic variables. The members of each element only have parents in previous elements. Created by method find_generations. Methods: - sample_model_likelihood(iter): Generate and return iter samples of p(data and potentials|model). Can be used to generate Bayes' factors. :SeeAlso: Sampler, MAP, NormalApproximation, weight, Container, graph. """ def __init__(self, input=None, name=None, verbose=-1): """Initialize a Model instance. :Parameters: - input : module, list, tuple, dictionary, set, object or nothing. Model definition, in terms of Stochastics, Deterministics, Potentials and Containers. If nothing, all nodes are collected from the base namespace. """ # Get stochastics, deterministics, etc. if input is None: import warnings warnings.warn('The MCMC() syntax is deprecated. Please pass in nodes explicitly via M = MCMC(input).') import __main__ __main__.__dict__.update(self.__class__.__dict__) input = __main__ ObjectContainer.__init__(self, input) if name is not None: self.__name__ = name self.verbose = verbose def _get_generations(self): if not hasattr(self, '_generations'): self._generations = utils.find_generations(self) return self._generations generations = property(_get_generations) def draw_from_prior(self): """ Sets all variables to random values drawn from joint 'prior', meaning contributions of data and potentials to the joint distribution are not considered. """ for generation in self.generations: for s in generation: s.random() def seed(self): """ Seed new initial values for the stochastics. """ for generation in self.generations: for s in generation: try: if s.rseed is not None: value = s.random(**s.parents.value) except: pass def get_node(self, node_name): """Retrieve node with passed name""" for node in self.nodes: if node.__name__ == node_name: return node class Sampler(Model): """ The base class for all objects that fit probability models using Monte Carlo methods. Sampler is initialized with: >>> A = Sampler(input, db, output_path=None, verbose=0) :Parameters: - input : module, list, tuple, dictionary, set, object or nothing. Model definition, in terms of Stochastics, Deterministics, Potentials and Containers. If nothing, all nodes are collected from the base namespace. - db : string The name of the database backend that will store the values of the stochastics and deterministics sampled during the MCMC loop. Inherits all methods and attributes from Model. Subclasses must either define the _loop method: - _loop(self, *args, **kwargs): Can be called after a sampling run is interrupted (by pausing, halting or a KeyboardInterrupt) to continue the sampling run. _loop must be able to handle KeyboardInterrupts gracefully, and should monitor the sampler's status periodically. Available status values are: - 'ready': Ready to sample. - 'paused': A pause has been requested, or the sampler is paused. _loop should return control as soon as it is safe to do so. - 'halt': A halt has been requested, or the sampler is stopped. _loop should call halt as soon as it is safe to do so. - 'running': Sampling is in progress. Or define a draw() method, which draws a single sample from the posterior. Subclasses may also want to override the default sample() method. :SeeAlso: Model, MCMC. """ def __init__(self, input=None, db='ram', name='Sampler', reinit_model=True, calc_deviance=False, verbose=0, **kwds): """Initialize a Sampler instance. :Parameters: - input : module, list, tuple, dictionary, set, object or nothing. Model definition, in terms of Stochastics, Deterministics, Potentials and Containers. If nothing, all nodes are collected from the base namespace. - db : string The name of the database backend that will store the values of the stochastics and deterministics sampled during the MCMC loop. - reinit_model : bool Flag for reinitialization of Model superclass. - calc_deviance : bool Flag for calculating model deviance. - **kwds : Keywords arguments to be passed to the database instantiation method. """ # Initialize superclass if reinit_model: Model.__init__(self, input, name, verbose) # Initialize deviance, if asked if calc_deviance: self._funs_to_tally = {'deviance': self._sum_deviance} else: self._funs_to_tally = {} # Specify database backend and save its keywords self._db_args = kwds self._assign_database_backend(db) # Flag for model state self.status = 'ready' self._current_iter = None self._iter = None self._state = ['status', '_current_iter', '_iter'] if hasattr(db, '_traces'): # Put traces on objects for v in self._variables_to_tally: v.trace = self.db._traces[v.__name__] def _sum_deviance(self): # Sum deviance from all stochastics return -2*sum([v.get_logp() for v in self.observed_stochastics]) def sample(self, iter, length=None, verbose=0): """ Draws iter samples from the posterior. """ self._cur_trace_index=0 self.max_trace_length = iter self._iter = iter self.verbose = verbose or 0 self.seed() # Assign Trace instances to tallyable objects. self.db.connect_model(self) # Initialize database -> initialize traces. if length is None: length = iter self.db._initialize(self._funs_to_tally, length) # Put traces on objects for v in self._variables_to_tally: v.trace = self.db._traces[v.__name__] # Loop self._current_iter = 0 self._loop() self._finalize() def _finalize(self): """Reset the status and tell the database to finalize the traces.""" if self.status in ['running', 'halt']: if self.verbose > 0: print_('\nSampling finished normally.') self.status = 'ready' self.save_state() self.db._finalize() def _loop(self): """ _loop(self, *args, **kwargs) Can be called after a sampling run is interrupted (by pausing, halting or a KeyboardInterrupt) to continue the sampling run. _loop must be able to handle KeyboardInterrupts gracefully, and should monitor the sampler's status periodically. Available status values are: - 'ready': Ready to sample. - 'paused': A pause has been requested, or the sampler is paused. _loop should return control as soon as it is safe to do so. - 'halt': A halt has been requested, or the sampler is stopped. _loop should call halt as soon as it is safe to do so. - 'running': Sampling is in progress. """ self.status='running' try: while self._current_iter < self._iter and not self.status == 'halt': if self.status == 'paused': break i = self._current_iter self.draw() self.tally() if not i % 10000 and self.verbose > 0: print_('Iteration ', i, ' of ', self._iter) sys.stdout.flush() self._current_iter += 1 except KeyboardInterrupt: self.status='halt' if self.status == 'halt': self._halt() def draw(self): """ Either draw() or _loop() must be overridden in subclasses of Sampler. """ pass def stats(self, variables=None, alpha=0.05, start=0, batches=100, chain=None, quantiles=(2.5, 25, 50, 75, 97.5)): """ Statistical output for variables. :Parameters: variables : iterable List or array of variables for which statistics are to be generated. If it is not specified, all the tallied variables are summarized. alpha : float The alpha level for generating posterior intervals. Defaults to 0.05. start : int The starting index from which to summarize (each) chain. Defaults to zero. batches : int Batch size for calculating standard deviation for non-independent samples. Defaults to 100. chain : int The index for which chain to summarize. Defaults to None (all chains). """ # If no names provided, run them all if variables is None: variables = self._variables_to_tally else: variables = [self.__dict__[i] for i in variables if self.__dict__[i] in self._variables_to_tally] stat_dict = {} # Loop over nodes for variable in variables: # Plot object stat_dict[variable.__name__] = self.trace(variable.__name__).stats(alpha=alpha, start=start, batches=batches, chain=chain, quantiles=quantiles) return stat_dict def write_csv(self, filename, variables=None, alpha=0.05, start=0, batches=100, chain=None, quantiles=(2.5, 25, 50, 75, 97.5)): """ Save summary statistics to a csv table. :Parameters: filename : string Filename to save output. variables : iterable List or array of variables for which statistics are to be generated. If it is not specified, all the tallied variables are summarized. alpha : float The alpha level for generating posterior intervals. Defaults to 0.05. start : int The starting index from which to summarize (each) chain. Defaults to zero. batches : int Batch size for calculating standard deviation for non-independent samples. Defaults to 100. chain : int The index for which chain to summarize. Defaults to None (all chains). """ # Append 'csv' suffix if there is no suffix on the filename if filename.find('.') == -1: filename += '.csv' outfile = open(filename, 'w') # Write header to file header = 'Parameter, Mean, SD, MC Error, Lower 95% HPD, Upper 95% HPD, ' header += ', '.join(['q%s' % i for i in quantiles]) outfile.write(header + '\n') stats = self.stats(alpha=alpha, start=start, batches=batches, chain=chain, quantiles=quantiles) buffer = str() for param in stats: values = stats[param] try: # Multivariate node shape = values['mean'].shape indices = list(itertools.product(*[range(i) for i in shape])) for i in indices: buffer += self._csv_str(param, values, quantiles, i) except AttributeError: # Scalar node buffer += self._csv_str(param, values, quantiles) outfile.write(buffer) outfile.close() def _csv_str(self, param, stats, quantiles, index=None): """Support function for write_csv""" buffer = param if not index: buffer += ', ' else: buffer += '_' + '_'.join([str(i) for i in index]) + ', ' for stat in ('mean','standard deviation','mc error'): buffer += str(stats[stat][index]) + ', ' # Index to interval label iindex = [key.split()[-1] for key in stats.keys()].index('interval') interval = stats.keys()[iindex] buffer += ', '.join(stats[interval][index].astype(str)) # Process quantiles qvalues = stats['quantiles'] for q in quantiles: buffer += ', ' + str(qvalues[q][index]) return buffer + '\n' def summary(self, variables=None, alpha=0.05, start=0, batches=100, chain=None, roundto=3): """ Generate a pretty-printed summary of the model's variables. :Parameters: alpha : float The alpha level for generating posterior intervals. Defaults to 0.05. start : int The starting index from which to summarize (each) chain. Defaults to zero. batches : int Batch size for calculating standard deviation for non-independent samples. Defaults to 100. chain : int The index for which chain to summarize. Defaults to None (all chains). roundto : int The number of digits to round posterior statistics. quantiles : tuple or list The desired quantiles to be calculated. Defaults to (2.5, 25, 50, 75, 97.5). """ # If no names provided, run them all if variables is None: variables = self._variables_to_tally else: variables = [self.__dict__[i] for i in variables if self.__dict__[i] in self._variables_to_tally] # Loop over nodes for variable in variables: variable.summary(alpha=alpha, start=start, batches=batches, chain=chain, roundto=roundto) # Property --- status : the sampler state. def status(): doc = \ """Status of sampler. May be one of running, paused, halt or ready. - `running` : The model is currently sampling. - `paused` : The model has been interrupted during sampling. It is ready to be restarted by `continuesample`. - `halt` : The model has been interrupted. It cannot be restarted. If sample is called again, a new chain will be initiated. - `ready` : The model is ready to sample. """ def fget(self): return self.__status def fset(self, value): if value in ['running', 'paused', 'halt', 'ready']: self.__status=value else: raise AttributeError(value) return locals() status = property(**status()) def _assign_database_backend(self, db): """Assign Trace instance to stochastics and deterministics and Database instance to self. :Parameters: - `db` : string, Database instance The name of the database module (see below), or a Database instance. Available databases: - `no_trace` : Traces are not stored at all. - `ram` : Traces stored in memory. - `txt` : Traces stored in memory and saved in txt files at end of sampling. - `sqlite` : Traces stored in sqlite database. - `hdf5` : Traces stored in an HDF5 file. """ # Objects that are not to be tallied are assigned a no_trace.Trace # Tallyable objects are listed in the _nodes_to_tally set. no_trace = getattr(database, 'no_trace') self._variables_to_tally = set() for object in self.stochastics | self.deterministics: if object.keep_trace: self._variables_to_tally.add(object) try: if object.mask is None: # Standard stochastic self._funs_to_tally[object.__name__] = object.get_value else: # Has missing values, so only fetch stochastic elements using mask self._funs_to_tally[object.__name__] = object.get_stoch_value except AttributeError: # Not a stochastic object, so no mask self._funs_to_tally[object.__name__] = object.get_value else: object.trace = no_trace.Trace(object.__name__) check_valid_object_name(self._variables_to_tally) # If not already done, load the trace backend from the database # module, and assign a database instance to Model. if type(db) is str: if db in dir(database): module = getattr(database, db) # Assign a default name for the database output file. if self._db_args.get('dbname') is None: self._db_args['dbname'] = self.__name__ + '.' + db self.db = module.Database(**self._db_args) elif db in database.__modules__: raise ImportError(\ 'Database backend `%s` is not properly installed. Please see the documentation for instructions.' % db) else: raise AttributeError(\ 'Database backend `%s` is not defined in pymc.database.'%db) elif isinstance(db, database.base.Database): self.db = db self.restore_sampler_state() else: # What is this for? DH. self.db = db.Database(**self._db_args) def pause(self): """Pause the sampler. Sampling can be resumed by calling `icontinue`. """ self.status = 'paused' # The _loop method will react to 'paused' status and stop looping. if hasattr(self, '_sampling_thread') and self._sampling_thread.isAlive(): print_('Waiting for current iteration to finish...') while self._sampling_thread.isAlive(): sleep(.1) def halt(self): """Halt a sampling running in another thread.""" self.status = 'halt' # The _halt method is called by _loop. if hasattr(self, '_sampling_thread') and self._sampling_thread.isAlive(): print_('Waiting for current iteration to finish...') while self._sampling_thread.isAlive(): sleep(.1) def _halt(self): print_('Halting at iteration ', self._current_iter, ' of ', self._iter) self.db.truncate(self._cur_trace_index) self._finalize() # # Tally # def tally(self): """ tally() Records the value of all tracing variables. """ if self.verbose > 2: print_(self.__name__ + ' tallying.') if self._cur_trace_index < self.max_trace_length: self.db.tally() self._cur_trace_index += 1 if self.verbose > 2: print_(self.__name__ + ' done tallying.') def commit(self): """ Tell backend database to commit. """ self.db.commit() def isample(self, *args, **kwds): """ Samples in interactive mode. Main thread of control stays in this function. """ self._exc_info = None out = kwds.pop('out', sys.stdout) kwds['progress_bar'] = False def samp_targ(*args, **kwds): try: self.sample(*args, **kwds) except: self._exc_info = sys.exc_info() self._sampling_thread = Thread(target=samp_targ, args=args, kwargs=kwds) self.status = 'running' self._sampling_thread.start() self.iprompt(out=out) def icontinue(self): """ Restarts thread in interactive mode """ if self.status != 'paused': print_("No sampling to continue. Please initiate sampling with isample.") return def sample_and_finalize(): self._loop() self._finalize() self._sampling_thread = Thread(target=sample_and_finalize) self.status = 'running' self._sampling_thread.start() self.iprompt() def iprompt(self, out=sys.stdout): """Start a prompt listening to user input.""" cmds = """ Commands: i -- index: print current iteration index p -- pause: interrupt sampling and return to the main console. Sampling can be resumed later with icontinue(). h -- halt: stop sampling and truncate trace. Sampling cannot be resumed for this chain. b -- bg: return to the main console. The sampling will still run in a background thread. There is a possibility of malfunction if you interfere with the Sampler's state or the database during sampling. Use this at your own risk. """ print_("""============== PyMC console ============== PyMC is now sampling. Use the following commands to query or pause the sampler. """, file=out) print_(cmds, file=out) prompt = True try: while self.status in ['running', 'paused']: # sys.stdout.write('pymc> ') if prompt: out.write('pymc > ') out.flush() if self._exc_info is not None: a,b,c = self._exc_info reraise(a, b, c) cmd = utils.getInput().strip() if cmd == 'i': print_('Current iteration: %i of %i' % (self._current_iter, self._iter), file=out) prompt = True elif cmd == 'p': self.status = 'paused' break elif cmd == 'h': self.status = 'halt' break elif cmd == 'b': return elif cmd == '\n': prompt = True pass elif cmd == '': prompt = False else: print_('Unknown command: ', cmd, file=out) print_(cmds, file=out) prompt = True except KeyboardInterrupt: if not self.status == 'ready': self.status = 'halt' if self.status == 'ready': print_("Sampling terminated successfully.", file=out) else: print_('Waiting for current iteration to finish...', file=out) while self._sampling_thread.isAlive(): sleep(.1) print_('Exiting interactive prompt...', file=out) if self.status == 'paused': print_('Call icontinue method to continue, or call halt method to truncate traces and stop.', file=out) def get_state(self): """ Return the sampler's current state in order to restart sampling at a later time. """ state = dict(sampler={}, stochastics={}) # The state of the sampler itself. for s in self._state: state['sampler'][s] = getattr(self, s) # The state of each stochastic parameter for s in self.stochastics: state['stochastics'][s.__name__] = s.value return state def save_state(self): """ Tell the database to save the current state of the sampler. """ try: self.db.savestate(self.get_state()) except: print_('Warning, unable to save state.') print_('Error message:') traceback.print_exc() def restore_sampler_state(self): """ Restore the state of the sampler and to the state stored in the database. """ state = self.db.getstate() or {} # Restore sampler's state sampler_state = state.get('sampler', {}) self.__dict__.update(sampler_state) # Restore stochastic parameters state stoch_state = state.get('stochastics', {}) for sm in self.stochastics: try: sm.value = stoch_state[sm.__name__] except: warnings.warn('Failed to restore state of stochastic %s from %s backend'%(sm.__name__, self.db.__name__)) #print_('Error message:') #traceback.print_exc() def remember(self, chain=-1, trace_index = None): """ remember(chain=-1, trace_index = randint(trace length to date)) Sets the value of all tracing variables to a value recorded in their traces. """ if trace_index is None: trace_index = randint(self._cur_trace_index) for variable in self._variables_to_tally: if isinstance(variable, Stochastic): try: variable.value = self.trace(variable.__name__, chain=chain)[trace_index] except: cls, inst, tb = sys.exc_info() warnings.warn('Unable to remember value of variable %s. Original error: \n\n%s: %s'%(variable,cls.__name__,inst.message)) def trace(self, name, chain=-1): """Return the trace of a tallyable object stored in the database. :Parameters: name : string The name of the tallyable object. chain : int The trace index. Setting `chain=i` will return the trace created by the ith call to `sample`. """ if type(name) is str: return self.db.trace(name, chain) elif isinstance(name, Variable): return self.db.trace(name.__name__, chain) else: raise ValueError('Name argument must be string or Variable, got %s.'%name) def _get_deviance(self): return self._sum_deviance() deviance = property(_get_deviance) def check_valid_object_name(sequence): """Check that the names of the objects are all different.""" names = [] for o in sequence: if o.__name__ in names: raise ValueError('A tallyable PyMC object called %s already exists. This will cause problems for some database backends.'%o.__name__) else: names.append(o.__name__) pymc-2.2+ds/pymc/Node.py000066400000000000000000000311461204033704200151360ustar00rootroot00000000000000""" Base classes are defined here. """ __docformat__='reStructuredText' __author__ = 'Anand Patil, anand.prabhakar.patil@gmail.com' import os, sys, pdb import numpy as np import types from . import six print_ = six.print_ try: from types import UnboundMethodType except ImportError: # On Python 3, unbound methods are just functions. def UnboundMethodType(func, inst, cls): return func def logp_of_set(s): exc = None logp = 0. for obj in s: try: logp += obj.logp except ZeroProbability: raise except: if exc is None: exc = sys.exc_info() if exc is None: return logp else: six.reraise(*exc) def logp_gradient_of_set(variable_set, calculation_set = None): """ Calculates the gradient of the joint log posterior with respect to all the variables in variable_set. Calculation of the log posterior is restricted to the variables in calculation_set. Returns a dictionary of the gradients. """ logp_gradients = {} for variable in variable_set: logp_gradients[variable] = logp_gradient(variable, calculation_set) return logp_gradients def logp_gradient(variable, calculation_set = None): """ Calculates the gradient of the joint log posterior with respect to variable. Calculation of the log posterior is restricted to the variables in calculation_set. """ return variable.logp_partial_gradient(variable, calculation_set) + sum([child.logp_partial_gradient(variable, calculation_set) for child in variable.children] ) class ZeroProbability(ValueError): "Log-probability is undefined or negative infinity" pass class Node(object): """ The base class for Stochastic, Deterministic and Potential. :Parameters: doc : string The docstring for this node. name : string The name of this node. parents : dictionary A dictionary containing the parents of this node. cache_depth : integer An integer indicating how many of this node's value computations should be 'memorized'. verbose (optional) : integer Level of output verbosity: 0=none, 1=low, 2=medium, 3=high .. seealso:: :class:`Stochastic` The class defining *random* variables, or unknown parameters. :class:`Deterministic` The class defining deterministic values, ie the result of a function. :class:`Potential` An arbitrary log-probability term to multiply into the joint distribution. :class:`Variable` The base class for :class:`Stochastics` and :class:`Deterministics`. """ def __init__(self, doc, name, parents, cache_depth, verbose=-1): # Name and docstrings self.__doc__ = doc if not isinstance(name, str): raise ValueError('The name argument must be a string, but received %s.'%name) self.__name__ = name # Level of feedback verbosity self.verbose = verbose # Number of memorized values self._cache_depth = cache_depth # Initialize self.parents = parents def _get_parents(self): # Get parents of this object return self._parents def _set_parents(self, new_parents): # Define parents of this object # THERE DOES NOT APPEAR TO BE A detach_children() METHOD IN CLASS # Remove from current parents # if hasattr(self,'_parents'): # self._parents.detach_children() # Specify new parents self._parents = self.ParentDict(regular_dict = new_parents, owner = self) # Add self as child of parents self._parents.attach_parents() # Get new lazy function self.gen_lazy_function() parents = property(_get_parents, _set_parents, doc="Self's parents: the variables referred to in self's declaration.") def __str__(self): return self.__repr__() def __repr__(self): return object.__repr__(self).replace(' object ', " '%s' "%self.__name__) def gen_lazy_function(self): pass class Variable(Node): """ The base class for Stochastics and Deterministics. :Parameters: doc : string The docstring for this node. name : string The name of this node. parents : dictionary A dictionary containing the parents of this node. cache_depth : integer An integer indicating how many of this node's value computations should be 'memorized'. trace : boolean Indicates whether a trace should be kept for this variable if its model is fit using a Monte Carlo method. plot : boolean Indicates whether summary plots should be prepared for this variable if summary plots of its model are requested. dtype : numpy dtype If the value of this variable's numpy dtype can be known in advance, it is advantageous to specify it here. verbose (optional) : integer Level of output verbosity: 0=none, 1=low, 2=medium, 3=high :SeeAlso: Stochastic, Deterministic, Potential, Node """ __array_priority__ = 10 def __init__(self, doc, name, parents, cache_depth, trace=False, dtype=None, plot=None, verbose=-1): self.dtype=dtype self.keep_trace=trace self._plot=plot self.children = set() self.extended_children = set() Node.__init__(self, doc, name, parents, cache_depth, verbose=verbose) if self.dtype is None: if hasattr(self.value, 'dtype'): self.dtype = self.value.dtype else: self.dtype = np.dtype(type(self.value)) def __str__(self): return self.__name__ def _get_plot(self): # Get plotting flag return self._plot def _set_plot(self, true_or_false): # Set plotting flag self._plot = true_or_false plot = property(_get_plot, _set_plot, doc='A flag indicating whether self should be plotted.') def stats(self, alpha=0.05, start=0, batches=100, chain=None, quantiles=(2.5, 25, 50, 75, 97.5)): """ Generate posterior statistics for node. :Parameters: alpha : float The alpha level for generating posterior intervals. Defaults to 0.05. start : int The starting index from which to summarize (each) chain. Defaults to zero. batches : int Batch size for calculating standard deviation for non-independent samples. Defaults to 100. chain : int The index for which chain to summarize. Defaults to None (all chains). quantiles : tuple or list The desired quantiles to be calculated. Defaults to (2.5, 25, 50, 75, 97.5). """ return self.trace.stats(alpha=alpha, start=start, batches=batches, chain=chain, quantiles=quantiles) def summary(self, alpha=0.05, start=0, batches=100, chain=None, roundto=3): """ Generate a pretty-printed summary of the node. :Parameters: alpha : float The alpha level for generating posterior intervals. Defaults to 0.05. start : int The starting index from which to summarize (each) chain. Defaults to zero. batches : int Batch size for calculating standard deviation for non-independent samples. Defaults to 100. chain : int The index for which chain to summarize. Defaults to None (all chains). roundto : int The number of digits to round posterior statistics. """ # Calculate statistics for Node statdict = self.stats(alpha=alpha, start=start, batches=batches, chain=chain) size = np.size(statdict['mean']) print_('\n%s:' % self.__name__) print_(' ') # Initialize buffer buffer = [] # Title # buffer += ['Summary statistics'] # buffer += ['%s' % '='*len(buffer[-1])] # buffer += ['']*2 # Index to interval label iindex = [key.split()[-1] for key in statdict.keys()].index('interval') interval = statdict.keys()[iindex] # Print basic stats buffer += ['Mean SD MC Error %s' % interval] buffer += ['-'*len(buffer[-1])] indices = range(size) if len(indices)==1: indices = [None] for index in indices: # Extract statistics and convert to string m = str(round(statdict['mean'][index], roundto)) sd = str(round(statdict['standard deviation'][index], roundto)) mce = str(round(statdict['mc error'][index], roundto)) hpd = str(statdict[interval][index].squeeze().round(roundto)) # Build up string buffer of values valstr = m valstr += ' '*(17-len(m)) + sd valstr += ' '*(17-len(sd)) + mce valstr += ' '*(len(buffer[-1]) - len(valstr) - len(hpd)) + hpd buffer += [valstr] buffer += ['']*2 # Print quantiles buffer += ['Posterior quantiles:',''] buffer += ['2.5 25 50 75 97.5'] buffer += [' |---------------|===============|===============|---------------|'] for index in indices: quantile_str = '' for i,q in enumerate((2.5, 25, 50, 75, 97.5)): qstr = str(round(statdict['quantiles'][q][index], roundto)) quantile_str += qstr + ' '*(17-i-len(qstr)) buffer += [quantile_str.strip()] buffer += [''] print_('\t' + '\n\t'.join(buffer)) ContainerRegistry = [] class ContainerMeta(type): def __init__(cls, name, bases, dict): type.__init__(cls, name, bases, dict) def change_method(self, *args, **kwargs): raise NotImplementedError(name + ' instances cannot be changed.') if cls.register: ContainerRegistry.append((cls, cls.containing_classes)) for meth in cls.change_methods: setattr(cls, meth, UnboundMethodType(change_method, None, cls)) cls.register=False class ContainerBase(object): """ Abstract base class. :SeeAlso: ListContainer, SetContainer, DictContainer, TupleContainer, ArrayContainer """ register = False change_methods = [] containing_classes = [] def __init__(self, input): # ContainerBase class initialization # Look for name attributes if hasattr(input, '__file__'): _filename = os.path.split(input.__file__)[-1] self.__name__ = os.path.splitext(_filename)[0] elif hasattr(input, '__name__'): self.__name__ = input.__name__ else: try: self.__name__ = input['__name__'] except: self.__name__ = 'container' def assimilate(self, new_container): self.containers.append(new_container) self.variables.update(new_container.variables) self.stochastics.update(new_container.stochastics) self.potentials.update(new_container.potentials) self.deterministics.update(new_container.deterministics) self.observed_stochastics.update(new_container.observed_stochastics) def _get_logp(self): # Return total log-probabilities from all elements return logp_of_set(self.stochastics | self.potentials | self.observed_stochastics) # Define log-probability property logp = property(_get_logp, doc='The summed log-probability of all stochastic variables (data\nor otherwise) and factor potentials in self.') ContainerBase = six.with_metaclass(ContainerMeta, ContainerBase) StochasticRegistry = [] class StochasticMeta(type): def __init__(cls, name, bases, dict): type.__init__(cls, name, bases, dict) StochasticRegistry.append(cls) class StochasticBase(six.with_metaclass(StochasticMeta, Variable)): """ Abstract base class. :SeeAlso: Stochastic, Variable """ DeterministicRegistry = [] class DeterministicMeta(type): def __init__(cls, name, bases, dict): type.__init__(cls, name, bases, dict) DeterministicRegistry.append(cls) class DeterministicBase(six.with_metaclass(DeterministicMeta, Variable)): """ Abstract base class. :SeeAlso: Deterministic, Variable """ PotentialRegistry = [] class PotentialMeta(type): def __init__(cls, name, bases, dict): type.__init__(cls, name, bases, dict) PotentialRegistry.append(cls) class PotentialBase(six.with_metaclass(PotentialMeta, Node)): """ Abstract base class. :SeeAlso: Potential, Variable """ pymc-2.2+ds/pymc/NormalApproximation.py000066400000000000000000000404171204033704200202550ustar00rootroot00000000000000__docformat__='reStructuredText' __author__ = 'Anand Patil, anand.prabhakar.patil@gmail.com' __all__ = ['NormApproxMu', 'NormApproxC', 'MAP', 'NormApprox'] from .Node import ZeroProbability from .Model import Model, Sampler from numpy import zeros, inner, asmatrix, ndarray from numpy import reshape, shape, arange, ravel, log, Inf from numpy.random import normal from .utils import msqrt, check_type, round_array, logp_of_set from copy import copy from pymc import six from pymc.six import print_ xrange = six.moves.xrange try: from scipy.optimize import fmin_ncg, fmin, fmin_powell, fmin_cg, fmin_bfgs, fmin_ncg, fmin_l_bfgs_b from scipy.misc import derivative scipy_imported = True except ImportError: scipy_imported = False class NormApproxMu(object): """ Returns the mean vector of some variables. Usage: If p1 and p2 are array-valued stochastic variables and N is a NormApprox or MAP object, N.mu(p1,p2) will give the approximate posterior mean of the ravelled, concatenated values of p1 and p2. """ def __init__(self, owner): self.owner = owner def __getitem__(self, *stochastics): if not self.owner.fitted: raise ValueError('NormApprox object must be fitted before mu can be accessed.') tot_len = 0 try: for p in stochastics[0]: pass stochastic_tuple = stochastics[0] except: stochastic_tuple = stochastics for p in stochastic_tuple: tot_len += self.owner.stochastic_len[p] mu = zeros(tot_len, dtype=float) start_index = 0 for p in stochastic_tuple: mu[start_index:(start_index + self.owner.stochastic_len[p])] = self.owner._mu[self.owner._slices[p]] start_index += self.owner.stochastic_len[p] return mu class NormApproxC(object): """ Returns the covariance matrix of some variables. Usage: If p1 and p2 are array-valued stochastic variables and N is a NormApprox or MAP object, N.C(p1,p2) will give the approximate covariance matrix of the ravelled, concatenated values of p1 and p2 """ def __init__(self, owner): self.owner = owner def __getitem__(self, *stochastics): if not self.owner.fitted: raise ValueError('NormApprox object must be fitted before C can be accessed.') tot_len = 0 try: for p in stochastics[0]: pass stochastic_tuple = stochastics[0] except: stochastic_tuple = stochastics for p in stochastic_tuple: tot_len += self.owner.stochastic_len[p] C = asmatrix(zeros((tot_len, tot_len)), dtype=float) start_index1 = 0 for p1 in stochastic_tuple: start_index2 = 0 for p2 in stochastic_tuple: C[start_index1:(start_index1 + self.owner.stochastic_len[p1]), \ start_index2:(start_index2 + self.owner.stochastic_len[p2])] = \ self.owner._C[self.owner._slices[p1],self.owner._slices[p2]] start_index2 += self.owner.stochastic_len[p2] start_index1 += self.owner.stochastic_len[p1] return C class MAP(Model): """ N = MAP(input, eps=.001, diff_order = 5) Sets all parameters to maximum a posteriori values. Useful methods: revert_to_max: Sets all stochastic variables to mean value under normal approximation fit: Finds the normal approximation. Useful attributes (after fit() is called): logp: Returns the log-probability of the model logp_at_max: Returns the maximum log-probability of the model len: The number of free stochastic variables in the model ('k' in AIC and BIC) data_len: The number of datapoints used ('n' in BIC) AIC: Akaike's Information Criterion for the model BIC: Bayesian Information Criterion for the model :Arguments: input: As for Model eps: 'h' for computing numerical derivatives. May be a dictionary keyed by stochastic variable as well as a scalar. diff_order: The order of the approximation used to compute derivatives. :SeeAlso: Model, EM, Sampler, scipy.optimize """ def __init__(self, input=None, eps=.001, diff_order = 5, verbose=-1): if not scipy_imported: raise ImportError('Scipy must be installed to use NormApprox and MAP.') Model.__init__(self, input, verbose=verbose) # Allocate memory for internal traces and get stochastic slices self._slices = {} self.len = 0 self.stochastic_len = {} self.fitted = False self.stochastic_list = list(self.stochastics) self.N_stochastics = len(self.stochastic_list) self.stochastic_indices = [] self.stochastic_types = [] self.stochastic_type_dict = {} for i in xrange(len(self.stochastic_list)): stochastic = self.stochastic_list[i] # Check types of all stochastics. type_now = check_type(stochastic)[0] self.stochastic_type_dict[stochastic] = type_now if not type_now is float: print_("Warning: Stochastic " + stochastic.__name__ + "'s value is neither numerical nor array with " + \ "floating-point dtype. Recommend fitting method fmin (default).") # Inspect shapes of all stochastics and create stochastic slices. if isinstance(stochastic.value, ndarray): self.stochastic_len[stochastic] = len(ravel(stochastic.value)) else: self.stochastic_len[stochastic] = 1 self._slices[stochastic] = slice(self.len, self.len + self.stochastic_len[stochastic]) self.len += self.stochastic_len[stochastic] # Record indices that correspond to each stochastic. for j in range(len(ravel(stochastic.value))): self.stochastic_indices.append((stochastic, j)) self.stochastic_types.append(type_now) self.data_len = 0 for datum in self.observed_stochastics: self.data_len += len(ravel(datum.value)) # Unpack step self.eps = zeros(self.len,dtype=float) if isinstance(eps,dict): for stochastic in self.stochastics: self.eps[self._slices[stochastic]] = eps[stochastic] else: self.eps[:] = eps self.diff_order = diff_order self._len_range = arange(self.len) # Initialize gradient and Hessian matrix. self.grad = zeros(self.len, dtype=float) self.hess = asmatrix(zeros((self.len, self.len), dtype=float)) self._mu = None # Initialize NormApproxMu object. self.mu = NormApproxMu(self) def func_for_diff(val, index): """ The function that gets passed to the derivatives. """ self[index] = val return self.i_logp(index) self.func_for_diff = func_for_diff def fit(self, method = 'fmin', iterlim=1000, tol=.0001, verbose=0): """ N.fit(method='fmin', iterlim=1000, tol=.001): Causes the normal approximation object to fit itself. method: May be one of the following, from the scipy.optimize package: -fmin_l_bfgs_b -fmin_ncg -fmin_cg -fmin_powell -fmin """ self.tol = tol self.method = method self.verbose = verbose p = zeros(self.len,dtype=float) for stochastic in self.stochastics: p[self._slices[stochastic]] = ravel(stochastic.value) if not self.method == 'newton': if not scipy_imported: raise ImportError('Scipy is required to use EM and NormApprox') if self.verbose > 0: def callback(p): try: print_('Current log-probability : %f' % self.logp) except ZeroProbability: print_('Current log-probability : %f' % -Inf) else: def callback(p): pass if self.method == 'fmin_ncg': p=fmin_ncg( f = self.func, x0 = p, fprime = self.gradfunc, fhess = self.hessfunc, epsilon=self.eps, maxiter=iterlim, callback=callback, avextol=tol, disp=verbose) elif self.method == 'fmin': p=fmin( func = self.func, x0=p, callback=callback, maxiter=iterlim, ftol=tol, disp=verbose) elif self.method == 'fmin_powell': p=fmin_powell( func = self.func, x0=p, callback=callback, maxiter=iterlim, ftol=tol, disp=verbose) elif self.method == 'fmin_cg': p=fmin_cg( f = self.func, x0 = p, fprime = self.gradfunc, epsilon=self.eps, callback=callback, maxiter=iterlim, gtol=tol, disp=verbose) elif self.method == 'fmin_l_bfgs_b': p=fmin_l_bfgs_b(func = self.func, x0 = p, fprime = self.gradfunc, epsilon = self.eps, # callback=callback, pgtol=tol, iprint=verbose-1)[0] else: raise ValueError('Method unknown.') self._set_stochastics(p) self._mu = p try: self.logp_at_max = self.logp except: raise RuntimeError('Posterior probability optimization converged to value with zero probability.') lnL = sum([x.logp for x in self.observed_stochastics]) # log-likelihood of observed stochastics self.AIC = 2. * (self.len - lnL) # 2k - 2 ln(L) try: self.BIC = self.len * log(self.data_len) - 2. * lnL # k ln(n) - 2 ln(L) except FloatingPointError: self.BIC = -Inf self.fitted = True def func(self, p): """ The function that gets passed to the optimizers. """ self._set_stochastics(p) try: return -1. * self.logp except ZeroProbability: return Inf def gradfunc(self, p): """ The gradient-computing function that gets passed to the optimizers, if needed. """ self._set_stochastics(p) for i in xrange(self.len): self.grad[i] = self.diff(i) return -1 * self.grad def _set_stochastics(self, p): for stochastic in self.stochastics: if self.stochastic_type_dict[stochastic] is int: stochastic.value = round_array(reshape(ravel(p)[self._slices[stochastic]],shape(stochastic.value))) else: stochastic.value = reshape(ravel(p)[self._slices[stochastic]],shape(stochastic.value)) def __setitem__(self, index, value): p, i = self.stochastic_indices[index] val = ravel(p.value).copy() val[i] = value p.value = reshape(val, shape(p.value)) def __getitem__(self, index): p, i = self.stochastic_indices[index] val = ravel(p.value) return val[i] def i_logp(self, index): """ Evaluates the log-probability of the Markov blanket of a stochastic owning a particular index. """ all_relevant_stochastics = set() p,i = self.stochastic_indices[index] try: return p.logp + logp_of_set(p.extended_children) except ZeroProbability: return -Inf def diff(self, i, order=1): """ N.diff(i, order=1) Derivative wrt index i to given order. """ old_val = copy(self[i]) d = derivative(func=self.func_for_diff, x0=old_val, dx=self.eps[i], n=order, args=[i], order=self.diff_order) self[i] = old_val return d def diff2(self, i, j): """ N.diff2(i,j) Mixed second derivative. Differentiates wrt both indices. """ old_val = copy(self[j]) if not self.stochastic_indices[i][0] in self.stochastic_indices[j][0].moral_neighbors: return 0. def diff_for_diff(val): self[j] = val return self.diff(i) d = derivative(func=diff_for_diff, x0=old_val, dx=self.eps[j], n=1, order=self.diff_order) self[j] = old_val return d def grad_and_hess(self): """ Computes self's gradient and Hessian. Used if the optimization method for a NormApprox doesn't use gradients and hessians, for instance fmin. """ for i in xrange(self.len): di = self.diff(i) self.grad[i] = di self.hess[i,i] = self.diff(i,2) if i < self.len - 1: for j in xrange(i+1, self.len): dij = self.diff2(i,j) self.hess[i,j] = dij self.hess[j,i] = dij def hessfunc(self, p): """ The Hessian function that will be passed to the optimizer, if needed. """ self._set_stochastics(p) for i in xrange(self.len): di = self.diff(i) self.hess[i,i] = self.diff(i,2) if i < self.len - 1: for j in xrange(i+1, self.len): dij = self.diff2(i,j) self.hess[i,j] = dij self.hess[j,i] = dij return -1. * self.hess def revert_to_max(self): """ N.revert_to_max() Sets all N's stochastics to their MAP values. """ self._set_stochastics(self.mu[self.stochastics]) class NormApprox(MAP, Sampler): """ N = NormApprox(input, db='ram', eps=.001, diff_order = 5, **kwds) Normal approximation to the posterior of a model. Useful methods: draw: Draws values for all stochastic variables using normal approximation revert_to_max: Sets all stochastic variables to mean value under normal approximation fit: Finds the normal approximation. Useful attributes (after fit() is called): mu[p1, p2, ...]: Returns the posterior mean vector of stochastic variables p1, p2, ... C[p1, p2, ...]: Returns the posterior covariance of stochastic variables p1, p2, ... logp: Returns the log-probability of the model logp_at_max: Returns the maximum log-probability of the model len: The number of free stochastic variables in the model ('k' in AIC and BIC) data_len: The number of datapoints used ('n' in BIC) AIC: Akaike's Information Criterion for the model BIC: Bayesian Information Criterion for the model :Arguments: input: As for Model db: A database backend eps: 'h' for computing numerical derivatives. May be a dictionary keyed by stochastic variable as well as a scalar. diff_order: The order of the approximation used to compute derivatives. :SeeAlso: Model, EM, Sampler, scipy.optimize """ def __init__(self, input=None, db='ram', eps=.001, diff_order = 5, **kwds): if not scipy_imported: raise ImportError('Scipy must be installed to use NormApprox and MAP.') MAP.__init__(self, input, eps, diff_order) Sampler.__init__(self, input, db, reinit_model=False, **kwds) self.C = NormApproxC(self) def fit(self, *args, **kwargs): MAP.fit(self, *args, **kwargs) self.fitted = False self.grad_and_hess() self._C = -1. * self.hess.I self._sig = msqrt(self._C).T self.fitted = True def draw(self): """ N.draw() Sets all N's stochastics to random values drawn from the normal approximation to the posterior. """ devs = normal(size=self._sig.shape[1]) p = inner(self._sig,devs) + self._mu self._set_stochastics(p) pymc-2.2+ds/pymc/NumpyDeterministics.py000066400000000000000000000216231204033704200202670ustar00rootroot00000000000000""" pymc.NumpyDeterministics """ __docformat__='reStructuredText' from . import PyMCObjects as pm import numpy as np from numpy import sum, ones, zeros, ravel, shape, size, newaxis from .utils import find_element import inspect from pymc import six xrange = six.moves.xrange #accumulations _boolean_accumulation_deterministics = ['any' , 'all'] _accumulation_deterministics = ['sum']#['sum', 'prod'] #transformations (broadcasted) _generic = ['abs', 'exp', 'log', 'sqrt','expm1', 'log1p'] _trig = ['sin', 'cos', 'tan', 'arcsin', 'arccos', 'arctan'] _hyp_trig = ['sinh', 'cosh', 'tanh', 'arcsinh', 'arccosh', 'arctanh'] _transformation_deterministics = _generic + _trig + _hyp_trig _misc_funcs1 = ['arctan2', 'hypot'] __all__ = _accumulation_deterministics + _boolean_accumulation_deterministics+ _transformation_deterministics + _misc_funcs1 def deterministic_from_funcs(name, eval, jacobians={}, jacobian_formats={}, dtype=np.float, mv=False): """ Return a Stochastic subclass made from a particular distribution. :Parameters: name : string The name of the new class. jacobians : function The log-probability function. random : function The random function dtype : numpy dtype The dtype of values of instances. mv : boolean A flag indicating whether this class represents array-valued variables. """ (args, varargs, varkw, defaults) = inspect.getargspec(eval) parent_names = args[0:] try: parents_default = dict(zip(args[-len(defaults):], defaults)) except TypeError: # No parents at all. parents_default = {} # Build docstring from distribution docstr = name[0]+' = '+name + '('.join(parent_names)+')\n\n' docstr += 'Deterministic variable with '+name+' distribution.\nParents are: '+', '.join(parent_names) + '.\n\n' docstr += 'Docstring of evaluatio function:\n' docstr += eval.__doc__ return new_deterministic_class(dtype, name, parent_names, parents_default, docstr, eval, jacobians, jacobian_formats) def new_deterministic_class(*new_class_args): """ Returns a new class from a distribution. :Parameters: dtype : numpy dtype The dtype values of instances of this class. name : string Name of the new class. parent_names : list of strings The labels of the parents of this class. parents_default : list The default values of parents. docstr : string The docstring of this class. eval : function The function for this class. jacobians : dictionary of functions The dictionary of jacobian functions for the class jacobian_formats : dictionary of strings A dictionary indicating the format of each jacobian function """ (dtype, name, parent_names, parents_default, docstr, eval, jacobians, jacobian_formats) = new_class_args class new_class(pm.Deterministic): __doc__ = docstr def __init__(self, *args, **kwds): (dtype, name, parent_names, parents_default, docstr, eval, jacobians, jacobian_formats) = new_class_args parents=parents_default # Figure out what argument names are needed. arg_keys = [ 'parents', 'trace', 'doc', 'debug', 'plot', 'verbose'] arg_vals = [ parents, False, True, None, False, -1] arg_dict_out = dict(zip(arg_keys, arg_vals)) args_needed = parent_names + arg_keys[2:] # Sort positional arguments for i in xrange(len(args)): try: k = args_needed.pop(0) if k in parent_names: parents[k] = args[i] else: arg_dict_out[k] = args[i] except: raise ValueError('Too many positional arguments provided. Arguments for class ' + self.__class__.__name__ + ' are: ' + str(all_args_needed)) # Sort keyword arguments for k in args_needed: if k in parent_names: try: parents[k] = kwds.pop(k) except: if k in parents_default: parents[k] = parents_default[k] else: raise ValueError('No value given for parent ' + k) elif k in arg_dict_out.keys(): try: arg_dict_out[k] = kwds.pop(k) except: pass # Remaining unrecognized arguments raise an error. if len(kwds) > 0: raise TypeError('Keywords '+ str(kwds.keys()) + ' not recognized. Arguments recognized are ' + str(args_needed)) # Call base class initialization method if arg_dict_out.pop('debug'): pass else: parent_strs = [] for key in parents.keys(): parent_strs.append(str(key)) instance_name = name + '('+','.join(parent_strs)+')' pm.Deterministic.__init__(self, name = instance_name, eval=eval, jacobians = jacobians, jacobian_formats = jacobian_formats, dtype=dtype, **arg_dict_out) new_class.__name__ = name new_class.parent_names = parent_names return new_class _sum_hist = {} def sum_jacobian_a (a, axis): try: return _sum_hist[shape(a)] except KeyError: j = ones(shape(a)) _sum_hist[shape(a)] = j return j sum_jacobians = {'a' : sum_jacobian_a} abs_jacobians = {'x' : lambda x : np.sign(x) } exp_jacobians = {'x' : lambda x : np.exp(x) } log_jacobians = {'x' : lambda x : 1.0/x } sqrt_jacobians = {'x': lambda x : .5 * x **-.5} hypot_jacobians = {'x1' : lambda x1, x2 : (x1**2 + x2**2)**-.5 * x1, 'x2' : lambda x1, x2 : (x1**2 + x2**2)**-.5 * x2} expm1_jacobians = exp_jacobians log1p_jacobians = {'x' : lambda x : 1.0/(1.0 + x)} sin_jacobians = {'x' : lambda x : np.cos(x) } cos_jacobians = {'x' : lambda x : -np.sin(x) } tan_jacobians = {'x' : lambda x : 1 + np.tan(x)**2} arcsin_jacobians = {'x' : lambda x : (1.0-x**2)**-.5} arccos_jacobians = {'x' : lambda x : -(1.0-x**2)**-.5} arctan_jacobians = {'x' : lambda x : 1.0/(1.0+x**2) } arctan2_jacobians = {'x1' : lambda x1, x2 : x2/ (x2**2 + x1**2), 'x2' : lambda x1, x2 : -x1/ (x2**2 + x1**2)} # found in www.math.smith.edu/phyllo/Assets/pdf/findcenter.pdf p21 sinh_jacobians = {'x' : lambda x : np.cosh(x)} cosh_jacobians = {'x' : lambda x : np.sinh(x)} tanh_jacobians = {'x' : lambda x : 1.0 - np.tanh(x)**2} arcsinh_jacobians = {'x' : lambda x : (1+x**2)**-.5} arccosh_jacobians = {'x' : lambda x : (x+1)**-.5*(x-1.0)**-.5} arctanh_jacobians = {'x' : lambda x : 1.0/(1-x**2) } def wrap_function_accum(function): def wrapped_function(a, axis = None): return function(a, axis) wrapped_function.__doc__ = function.__doc__ return wrapped_function for function_name in _accumulation_deterministics: wrapped_function = wrap_function_accum(find_element(function_name, np, error_on_fail = True)) jacobians = find_element(function_name + "_jacobians", locals(), error_on_fail = True) locals()[function_name] = deterministic_from_funcs(function_name, wrapped_function, jacobians, jacobian_formats = {'a' : 'accumulation_operation'}) for function_name in _boolean_accumulation_deterministics: wrapped_function = wrap_function_accum(find_element(function_name, np, error_on_fail = True)) locals()[function_name] = deterministic_from_funcs(function_name, wrapped_function) def wrapped_function_trans(function): def wrapped_function(x): return function(x) wrapped_function.__doc__ = function.__doc__ return wrapped_function for function_name in _transformation_deterministics: wrapped_function = wrapped_function_trans(find_element(function_name, np, error_on_fail = True)) jacobians = find_element(function_name + "_jacobians", locals(), error_on_fail = True) locals()[function_name] = deterministic_from_funcs(function_name, wrapped_function, jacobians, jacobian_formats = {'x' : 'transformation_operation'}) def wrap_function_misc1(function): def wrapped_function(x1, x2): return function(x1, x2) wrapped_function.__doc__ = function.__doc__ return wrapped_function for function_name in _misc_funcs1: wrapped_function = wrap_function_misc1(find_element(function_name, np, error_on_fail = True)) jacobians = find_element(function_name + "_jacobians", locals(), error_on_fail = True) locals()[function_name] = deterministic_from_funcs(function_name, wrapped_function, jacobians, jacobian_formats = {'x1' : 'broadcast_operation', 'x2' : 'broadcast_operation'}) pymc-2.2+ds/pymc/PyMCObjects.py000066400000000000000000001035411204033704200163720ustar00rootroot00000000000000__docformat__='reStructuredText' __author__ = 'Anand Patil, anand.prabhakar.patil@gmail.com' __all__ = ['extend_children', 'extend_parents', 'ParentDict', 'Stochastic', 'Deterministic', 'Potential'] from copy import copy try: import builtins except ImportError: import __builtin__ as builtins from numpy import array, ndarray, reshape, Inf, asarray, dot, sum, float, isnan, size, NaN, asanyarray import numpy as np from numpy import shape, size, ravel, zeros, ones, reshape, newaxis, broadcast, ndim, expand_dims from .Node import Node, ZeroProbability, Variable, PotentialBase, StochasticBase, DeterministicBase from . import Container from .Container import DictContainer, ContainerBase, file_items, ArrayContainer import sys import pdb from . import calc_utils from . import datatypes from . import six from .six import print_ d_neg_inf = float(-1.7976931348623157e+308) # from PyrexLazyFunction import LazyFunction from .LazyFunction import LazyFunction, Counter def extend_children(children): """ extend_children(children) Returns a set containing nearest conditionally stochastic (Stochastic, not Deterministic) descendants. """ new_children = copy(children) need_recursion = False dtrm_children = set() for child in children: if isinstance(child,Deterministic): new_children |= child.children dtrm_children.add(child) need_recursion = True new_children -= dtrm_children if need_recursion: new_children = extend_children(new_children) return new_children def extend_parents(parents): """ extend_parents(parents) Returns a set containing nearest conditionally stochastic (Stochastic, not Deterministic) ancestors. """ new_parents = set() for parent in parents: new_parents.add(parent) if isinstance(parent, DeterministicBase): new_parents.remove(parent) new_parents |= parent.extended_parents elif isinstance(parent, ContainerBase): for contained_parent in parent.stochastics: new_parents.add(contained_parent) for contained_parent in parent.deterministics: new_parents |= contained_parent.extended_parents return new_parents class ParentDict(DictContainer): """ A special subclass of DictContainer which makes it safe to change variables' parents. When __setitem__ is called, a ParentDict instance removes its owner from the old parent's children set (if appropriate) and adds its owner to the new parent's children set. It then asks its owner to generate a new LazyFunction instance using its new parents. Also manages the extended_parents attribute of owner. NB: StepMethod and Model are expecting variables' children to be static. If you want to change independence structure over the course of an MCMC loop, please do so with indicator variables. :SeeAlso: DictContainer """ def __init__(self, regular_dict, owner): DictContainer.__init__(self, dict(regular_dict)) self.owner = owner self.owner.extended_parents = extend_parents(self.variables) if isinstance(self.owner, StochasticBase) or isinstance(self.owner, PotentialBase): self.has_logp = True else: self.has_logp = False def detach_parents(self): for parent in six.itervalues(self): if isinstance(parent, Variable): parent.children.discard(self.owner) elif isinstance(parent, ContainerBase): for variable in parent.variables: variable.chidren.discard(self.owner) if self.has_logp: self.detach_extended_parents() def detach_extended_parents(self): for e_parent in self.owner.extended_parents: if isinstance(e_parent, StochasticBase): e_parent.extended_children.discard(self.owner) def attach_parents(self): for parent in six.itervalues(self): if isinstance(parent, Variable): parent.children.add(self.owner) elif isinstance(parent, ContainerBase): for variable in parent.variables: variable.children.add(self.owner) if self.has_logp: self.attach_extended_parents() def attach_extended_parents(self): for e_parent in self.owner.extended_parents: if isinstance(e_parent, StochasticBase): e_parent.extended_children.add(self.owner) def __setitem__(self, key, new_parent): old_parent = self[key] # Possibly remove owner from old parent's children set. if isinstance(old_parent, Variable) or isinstance(old_parent, ContainerBase): # Tell all extended parents to forget about owner if self.has_logp: self.detach_extended_parents() self.val_keys.remove(key) self.nonval_keys.append(key) if isinstance(old_parent, Variable): # See if owner only claims the old parent via this key. if sum([parent is old_parent for parent in six.itervalues(self)]) == 1: old_parent.children.remove(self.owner) if isinstance(old_parent, ContainerBase): for variable in old_parent.variables: if sum([parent is variable for parent in six.itervalues(self)]) == 1: variable.children.remove(self.owner) # If the new parent is a variable, add owner to its children set. if isinstance(new_parent, Variable) or isinstance(new_parent, ContainerBase): self.val_keys.append(key) self.nonval_keys.remove(key) if isinstance(new_parent, Variable): new_parent.children.add(self.owner) elif isinstance(new_parent, ContainerBase): for variable in new_parent.variables: new_parent.children.add(self.owner) # Totally recompute extended parents self.owner.extended_parents = extend_parents(self.variables) if self.has_logp: self.attach_extended_parents() dict.__setitem__(self, key, new_parent) file_items(self, self) # Tell my owner it needs a new lazy function. self.owner.gen_lazy_function() class Potential(PotentialBase): """ Not a variable; just an arbitrary log-probability term to multiply into the joint distribution. Useful for expressing models that aren't directed, such as Markov random fields. Decorator instantiation: @potential(trace = True) def A(x = B, y = C): return -.5 * (x-y)**2 / 3. Direct instantiation: :Parameters: -logp: function The function that computes the potential's value from the values of its parents. -doc: string The docstring for this potential. -name: string The name of this potential. -parents: dictionary A dictionary containing the parents of this potential. -cache_depth (optional): integer An integer indicating how many of this potential's value computations should be 'memoized'. - plot (optional) : boolean A flag indicating whether this variable is to be plotted. - verbose (optional) : integer Level of output verbosity: 0=none, 1=low, 2=medium, 3=high Externally-accessible attribute: -logp: float Returns the potential's log-probability given its parents' values. Skips computation if possible. No methods. :SeeAlso: Stochastic, Node, LazyFunction, stoch, dtrm, data, Model, Container """ def __init__(self, logp, doc, name, parents, cache_depth=2, plot=None, verbose=-1, logp_partial_gradients=None): if logp_partial_gradients is None: logp_partial_gradients = {} self.ParentDict = ParentDict # This function gets used to evaluate self's value. self._logp_fun = logp self._logp_partial_gradients_functions = logp_partial_gradients self.errmsg = "Potential %s forbids its parents' current values"%name Node.__init__( self, doc=doc, name=name, parents=parents, cache_depth = cache_depth, verbose=verbose) self._plot = plot # self._logp.force_compute() # Check initial value if not isinstance(self.logp, float): raise ValueError("Potential " + self.__name__ + "'s initial log-probability is %s, should be a float." %self.logp.__repr__()) def gen_lazy_function(self): self._logp = LazyFunction(fun = self._logp_fun, arguments = self.parents, ultimate_args = self.extended_parents, cache_depth = self._cache_depth) self._logp.force_compute() self._logp_partial_gradients= {} for parameter, function in six.iteritems(self._logp_partial_gradients_functions): lazy_logp_partial_gradients = LazyFunction(fun = function, arguments = self.parents, ultimate_args = self.extended_parents, cache_depth = self._cache_depth) lazy_logp_partial_gradients.force_compute() self._logp_partial_gradients[parameter] = lazy_logp_partial_gradients def get_logp(self): if self.verbose > 1: print_('\t' + self.__name__ + ': log-probability accessed.') logp = self._logp.get() if self.verbose > 1: print_('\t' + self.__name__ + ': Returning log-probability ', logp) try: logp = float(logp) except: raise TypeError(self.__name__ + ': computed log-probability ' + str(logp) + ' cannot be cast to float') if logp != logp: raise ValueError(self.__name__ + ': computed log-probability is NaN') # Check if the value is smaller than a double precision infinity: if logp <= d_neg_inf: if self.verbose > 0: raise ZeroProbability(self.errmsg + ": %s" %self._parents.value) else: raise ZeroProbability(self.errmsg) return logp def set_logp(self,value): raise AttributeError('Potential '+self.__name__+'\'s log-probability cannot be set.') logp = property(fget = get_logp, fset=set_logp, doc="Self's log-probability value conditional on parents.") def logp_partial_gradient(self, variable, calculation_set = None): gradient = 0 if self in calculation_set: if not datatypes.is_continuous(variable): return zeros(shape(variable.value)) for parameter, value in six.iteritems(self.parents): if value is variable: try : grad_func = self._logp_partial_gradients[parameter] except KeyError: raise NotImplementedError(repr(self) + " has no gradient function for parameter " + parameter) gradient = gradient + grad_func.get() return np.reshape(gradient, np.shape(variable.value)) #np.reshape(gradient, np.shape(variable.value)) class Deterministic(DeterministicBase): """ A variable whose value is determined by the values of its parents. Decorator instantiation: @dtrm(trace=True) def A(x = B, y = C): return sqrt(x ** 2 + y ** 2) :Parameters: eval : function The function that computes the variable's value from the values of its parents. doc : string The docstring for this variable. name: string The name of this variable. parents: dictionary A dictionary containing the parents of this variable. trace (optional): boolean A boolean indicating whether this variable's value should be traced (in MCMC). cache_depth (optional): integer An integer indicating how many of this variable's value computations should be 'memoized'. plot (optional) : boolean A flag indicating whether this variable is to be plotted. verbose (optional) : integer Level of output verbosity: 0=none, 1=low, 2=medium, 3=high jacobian (optional) : function(parameter, **same args as function) function which calculates the analytical jacobian for the deterministic with respect to some parameter jacobian_format (optional) : dict formats of the jacobians returned by the jacobian function for each parameter: 'full' : the function returns the full jacobian 'broadcast_operation' : the function returns the jacobian for an operation where the argument arrays are broadcast to eachother 'accumulation_operation' : the function returns the jacobian for an operation where the number of dimensions is reduced the default is 'full' :Attributes: value : any object Returns the variable's value given its parents' values. Skips computation if possible. :SeeAlso: Stochastic, Potential, deterministic, MCMC, Lambda, LinearCombination, Index """ __array_priority__ =1000 def __init__(self, eval, doc, name, parents, dtype=None, trace=True, cache_depth=2, plot=None, verbose=-1, jacobians = {}, jacobian_formats = {}): self.ParentDict = ParentDict # This function gets used to evaluate self's value. self._eval_fun = eval self._jacobian_functions = jacobians self._jacobian_formats = jacobian_formats Variable.__init__( self, doc=doc, name=name, parents=parents, cache_depth = cache_depth, dtype=dtype, trace=trace, plot=plot, verbose=verbose) # self._value.force_compute() def gen_lazy_function(self): self._value = LazyFunction(fun = self._eval_fun, arguments = self.parents, ultimate_args = self.extended_parents, cache_depth = self._cache_depth) self._value.force_compute() self._jacobians = {} for parameter, function in six.iteritems(self._jacobian_functions): lazy_jacobian = LazyFunction(fun = function, arguments = self.parents, ultimate_args = self.extended_parents, cache_depth = self._cache_depth) lazy_jacobian.force_compute() self._jacobians[parameter] = lazy_jacobian def get_value(self): if self.verbose > 1: print_('\t' + self.__name__ + ': value accessed.') _value = self._value.get() if isinstance(_value, ndarray): _value.flags['W'] = False if self.verbose > 1: print_('\t' + self.__name__ + ': Returning value ',_value) return _value def set_value(self,value): raise AttributeError('Deterministic '+self.__name__+'\'s value cannot be set.') value = property(fget = get_value, fset=set_value, doc="Self's value computed from current values of parents.") def apply_jacobian(self, parameter, variable, gradient): try : jacobian_func = self._jacobians[parameter] except KeyError: raise NotImplementedError(repr(self) + " has no jacobian function for parameter " + parameter) jacobian = jacobian_func.get() mapping = self._jacobian_formats.get(parameter, 'full') p = self._format_mapping[mapping](self, variable, jacobian, gradient) return p def logp_partial_gradient(self, variable, calculation_set = None): """ gets the logp gradient of this deterministic with respect to variable """ if self.verbose > 0: print_('\t' + self.__name__ + ': logp_partial_gradient accessed.') if not (datatypes.is_continuous(variable) and datatypes.is_continuous(self)): return zeros(shape(variable.value)) # loop through all the parameters and add up all the gradients of log p with respect to the approrpiate variable gradient = builtins.sum([child.logp_partial_gradient(self, calculation_set) for child in self.children ]) totalGradient = 0 for parameter, value in six.iteritems(self.parents): if value is variable: totalGradient += self.apply_jacobian(parameter, variable, gradient ) return np.reshape(totalGradient, shape(variable.value)) def full_jacobian(self, variable, jacobian, gradient): return dot(np.transpose(jacobian), np.ravel(gradient)[:,np.newaxis]) def transformation_operation_jacobian(self, variable, jacobian, gradient): return jacobian * gradient def broadcast_operation_jacobian(self, variable, jacobian, gradient): return calc_utils.sum_to_shape(id(variable), id(self), jacobian * gradient, shape(variable.value)) def accumulation_operation_jacobian(self, variable, jacobian, gradient): for i in range(ndim(jacobian)): if i >= ndim(gradient) or shape(gradient)[i] != shape(variable.value)[i]: expand_dims(gradient, i) return gradient * jacobian def index_operation_jacobian(self, variable, jacobian, gradient): derivative = zeros(shape(variable.value)) derivative[jacobian] = gradient return derivative _format_mapping = {'full' : full_jacobian, 'transformation_operation' : transformation_operation_jacobian, 'broadcast_operation' : broadcast_operation_jacobian, 'accumulation_operation' : accumulation_operation_jacobian, 'index_operation' : index_operation_jacobian} class Stochastic(StochasticBase): """ A variable whose value is not determined by the values of its parents. Decorator instantiation: @stoch(trace=True) def X(value = 0., mu = B, tau = C): return Normal_like(value, mu, tau) @stoch(trace=True) def X(value=0., mu=B, tau=C): def logp(value, mu, tau): return Normal_like(value, mu, tau) def random(mu, tau): return Normal_r(mu, tau) rseed = 1. Direct instantiation: - logp : function The function that computes the variable's log-probability from its value and the values of its parents. - doc : string The docstring for this variable. - name : string The name of this variable. - parents: dict A dictionary containing the parents of this variable. - random (optional) : function A function that draws a new value for this variable given its parents' values. - trace (optional) : boolean A boolean indicating whether this variable's value should be traced (in MCMC). - value (optional) : number or array An initial value for this variable - dtype (optional) : type A type for this variable. - rseed (optional) : integer or rseed A seed for this variable's rng. Either value or rseed must be given. - observed (optional) : boolean A flag indicating whether this variable is data; whether its value is known. - cache_depth (optional) : integer An integer indicating how many of this variable's log-probability computations should be 'memoized'. - plot (optional) : boolean A flag indicating whether this variable is to be plotted. - verbose (optional) : integer Level of output verbosity: 0=none, 1=low, 2=medium, 3=high Externally-accessible attribute: - value: any class Returns this variable's current value. - logp: float Returns the variable's log-probability given its value and its parents' values. Skips computation if possible. last_value: any class Returns this variable's last value. Useful for rejecting Metropolis-Hastings jumps. See touch() and the warning below. Externally-accessible methods: random(): Draws a new value for this variable from its distribution and returns it. :SeeAlso: Deterministic, Node, LazyFunction, stoch, dtrm, data, Model, Container """ __array_priority__ = 1000 def __init__( self, logp, doc, name, parents, random=None, trace=True, value=None, dtype=None, rseed=False, observed=False, cache_depth=2, plot=None, verbose = -1, isdata=None, check_logp=True, logp_partial_gradients=None): if logp_partial_gradients is None: logp_partial_gradients = {} self.counter = Counter() self.ParentDict = ParentDict # Support legacy 'isdata' for a while if isdata is not None: print_("Deprecation Warning: the 'isdata' flag has been replaced by 'observed'. Please update your model accordingly.") self.observed = isdata # A flag indicating whether self's value has been observed. self._observed = observed # Default value of None for mask self._mask = None if observed: if value is None: raise ValueError('Stochastic %s must be given an initial value if observed=True.'%name) try: # If there are missing values, store mask to missing elements self._mask = value.mask # Set to value of mean of observed data value.fill_value = value.mean() value = value.filled() # Set observed flag to False, so that missing values will update self._observed = False except AttributeError: # Must not have missing values pass # This function will be used to evaluate self's log probability. self._logp_fun = logp #This function will be used to evaluate self's gradient of log probability. self._logp_partial_gradient_functions = logp_partial_gradients # This function will be used to draw values for self conditional on self's parents. self._random = random # A seed for self's rng. If provided, the initial value will be drawn. Otherwise it's # taken from the constructor. self.rseed = rseed self.errmsg = "Stochastic %s's value is outside its support,\n or it forbids its parents' current values."%name dtype = np.dtype(dtype) # Initialize value, either from value provided or from random function. try: if dtype.kind != 'O' and value is not None: self._value = asanyarray(value, dtype=dtype) self._value.flags['W']=False else: self._value = value except: cls, inst, tb = sys.exc_info() new_inst = cls('Stochastic %s: Failed to cast initial value to required dtype.\n\nOriginal error message:\n'%name + inst.message) six.reraise(cls, new_inst, tb) # Store the shape of the stochastic value self._shape = np.shape(self._value) Variable.__init__( self, doc=doc, name=name, parents=parents, cache_depth=cache_depth, trace=trace, dtype=dtype, plot=plot, verbose=verbose) # self._logp.force_compute() self._shape = np.shape(self._value) if isinstance(self._value, ndarray): self._value.flags['W'] = False if check_logp: # Check initial value if not isinstance(self.logp, float): raise ValueError("Stochastic " + self.__name__ + "'s initial log-probability is %s, should be a float." %self.logp.__repr__()) def gen_lazy_function(self): """ Will be called by Node at instantiation. """ # If value argument to __init__ was None, draw value from random method. if self._value is None: # Use random function if provided if self._random is not None: self.value = self._random(**self._parents.value) # Otherwise leave initial value at None and warn. else: raise ValueError('Stochastic ' + self.__name__ + "'s value initialized to None; no initial value or random method provided.") arguments = {} arguments.update(self.parents) arguments['value'] = self arguments = DictContainer(arguments) self._logp = LazyFunction(fun = self._logp_fun, arguments = arguments, ultimate_args = self.extended_parents | set([self]), cache_depth = self._cache_depth) self._logp.force_compute() self._logp_partial_gradients = {} for parameter, function in six.iteritems(self._logp_partial_gradient_functions): lazy_logp_partial_gradient = LazyFunction(fun = function, arguments = arguments, ultimate_args = self.extended_parents | set([self]), cache_depth = self._cache_depth) lazy_logp_partial_gradient.force_compute() self._logp_partial_gradients[parameter] = lazy_logp_partial_gradient def get_value(self): # Define value attribute if self.verbose > 1: print_('\t' + self.__name__ + ': value accessed.' ) return self._value def get_stoch_value(self): if self.verbose > 1: print_('\t' + self.__name__ + ': stoch_value accessed.') return self._value[self.mask] def set_value(self, value, force=False): # Record new value and increment counter # Value can't be updated if observed=True if self.observed and not force: raise AttributeError('Stochastic '+self.__name__+'\'s value cannot be updated if observed flag is set') if self.verbose > 0: print_('\t' + self.__name__ + ': value set to ', value) # Save current value as last_value # Don't copy because caching depends on the object's reference. self.last_value = self._value if self.mask is None: if self.dtype.kind != 'O': self._value = asanyarray(value, dtype=self.dtype) self._value.flags['W']=False else: self._value = value else: new_value = self.value.copy() new_value[self.mask] = asanyarray(value, dtype=self.dtype)[self.mask] self._value = new_value self.counter.click() value = property(fget=get_value, fset=set_value, doc="Self's current value.") def mask(): doc = "Returns the mask for missing values" def fget(self): return self._mask return locals() mask = property(**mask()) def shape(): doc = "The shape of the value of self." def fget(self): if self.verbose > 1: print_('\t' + self.__name__ + ': shape accessed.') return self._shape return locals() shape = property(**shape()) def revert(self): """ Sets self's value to self's last value. Bypasses the data cleaning in the set_value method. """ self.counter.unclick() self._value = self.last_value def get_logp(self): if self.verbose > 0: print_('\t' + self.__name__ + ': logp accessed.') logp = self._logp.get() try: logp = float(logp) except: raise TypeError(self.__name__ + ': computed log-probability ' + str(logp) + ' cannot be cast to float') if logp != logp: return -np.inf if self.verbose > 0: print_('\t' + self.__name__ + ': Returning log-probability ', logp) # Check if the value is smaller than a double precision infinity: if logp <= d_neg_inf: if self.verbose > 0: raise ZeroProbability(self.errmsg + "\nValue: %s\nParents' values:%s" % (self._value, self._parents.value)) else: raise ZeroProbability(self.errmsg) return logp def set_logp(self, new_logp): raise AttributeError('Stochastic '+self.__name__+'\'s logp attribute cannot be set') logp = property(fget = get_logp, fset=set_logp, doc="Log-probability or log-density of self's current value\n given values of parents.") def logp_gradient_contribution(self, calculation_set = None): """ Calculates the gradient of the joint log posterior with respect to self. Calculation of the log posterior is restricted to the variables in calculation_set. """ #NEED some sort of check to see if the log p calculation has recently failed, in which case not to continue return self.logp_partial_gradient(self, calculation_set) + builtins.sum([child.logp_partial_gradient(self, calculation_set) for child in self.children] ) def logp_partial_gradient(self, variable, calculation_set = None): """ Calculates the partial gradient of the posterior of self with respect to variable. Returns zero if self is not in calculation_set. """ if (calculation_set is None) or (self in calculation_set): if not datatypes.is_continuous(variable): return zeros(shape(variable.value)) if variable is self: try : gradient_func = self._logp_partial_gradients['value'] except KeyError: raise NotImplementedError(repr(self) + " has no gradient function for 'value'") gradient = np.reshape(gradient_func.get(), np.shape(variable.value)) else: gradient = builtins.sum([self._pgradient(variable, parameter, value) for parameter, value in six.iteritems(self.parents)]) return gradient else: return 0 def _pgradient(self, variable, parameter, value): if value is variable: try : return np.reshape(self._logp_partial_gradients[parameter].get(), np.shape(variable.value)) except KeyError: raise NotImplementedError(repr(self) + " has no gradient function for parameter " + parameter) else: return 0 # Sample self's value conditional on parents. def random(self): """ Draws a new value for a stoch conditional on its parents and returns it. Raises an error if no 'random' argument was passed to __init__. """ if self._random: # Get current values of parents for use as arguments for _random() r = self._random(**self.parents.value) else: raise AttributeError('Stochastic '+self.__name__+' does not know how to draw its value, see documentation') if self.shape: r = np.reshape(r, self.shape) # Set Stochastic's value to drawn value if not self.observed: self.value = r return r # Shortcut alias to random rand = random def _get_isdata(self): import warnings warnings.warn('"isdata" is deprecated, please use "observed" instead.') return self._observed def _set_isdata(self, isdata): raise ValueError('Stochastic %s: "observed" flag cannot be changed.'%self.__name__) isdata = property(_get_isdata, _set_isdata) def _get_observed(self): return self._observed def _set_observed(self, observed): raise ValueError('Stochastic %s: "observed" flag cannot be changed.'%self.__name__) observed = property(_get_observed, _set_observed) def _get_coparents(self): coparents = set() for child in self.extended_children: coparents |= child.extended_parents coparents.add(self) return coparents coparents = property(_get_coparents, doc="All the variables whose extended children intersect with self's.") def _get_moral_neighbors(self): moral_neighbors = self.coparents | self.extended_parents | self.extended_children for neighbor in copy(moral_neighbors): if isinstance(neighbor, PotentialBase): moral_neighbors.remove(neighbor) return moral_neighbors moral_neighbors = property(_get_moral_neighbors, doc="Self's neighbors in the moral graph: self's Markov blanket with self removed.") def _get_markov_blanket(self): return self.moral_neighbors | set([self]) markov_blanket = property(_get_markov_blanket, doc="Self's coparents, self's extended parents, self's children and self.") pymc-2.2+ds/pymc/ScipyDistributions.py000066400000000000000000000160231204033704200201200ustar00rootroot00000000000000import scipy.stats.distributions as sc_dst import inspect import numpy as np from pymc import Stochastic from copy import copy from .distributions import * """ Wraps a SciPy rv object in a PyMC random variable object. Needs to wrap the following methods: generic.rvs(,loc=0,scale=1) - random variates generic.pdf(x,,loc=0,scale=1) - probability density function generic.cdf(x,,loc=0,scale=1) - cumulative density function generic.sf(x,,loc=0,scale=1) - survival function (1-cdf --- sometimes more accurate) generic.ppf(q,,loc=0,scale=1) - percent point function (inverse of cdf --- percentiles) generic.isf(q,,loc=0,scale=1) - inverse survival function (inverse of sf) generic.stats(,loc=0,scale=1,moments='mv') - mean('m',axis=0), variance('v'), skew('s'), and/or kurtosis('k') generic.entropy(,loc=0,scale=1) - (differential) entropy of the RV. """ __all__ = ['stochastic_from_scipy_dist'] def separate_shape_args(kwds, shape_args): new_kwds = {} for name in kwds: new_kwds[name] = kwds[name] args = [new_kwds.pop(name) for name in shape_args] return args, new_kwds def remove_size_arg(fun): def wrapper(size=1,*args, **kwds): return fun(*args, **kwds) def stochastic_from_scipy_dist(scipy_dist): """ Return a Stochastic subclass made from a particular SciPy distribution. """ name = scipy_dist.__class__.__name__.replace('_gen','').capitalize() (args, varargs, varkw, defaults) = inspect.getargspec(scipy_dist._cdf) shape_args = args[2:] if isinstance(scipy_dist, sc_dst.rv_continuous): dtype=float def logp(value, **kwds): args, kwds = separate_shape_args(kwds, shape_args) return np.sum(scipy_dist.logpdf(value,*args,**kwds)) parent_names = shape_args + ['loc', 'scale'] defaults = [None] * (len(parent_names)-2) + [0., 1.] elif isinstance(scipy_dist, sc_dst.rv_discrete): dtype=int def logp(value, **kwds): args, kwds = separate_shape_args(kwds, shape_args) return np.sum(scipy_dist.logpmf(value,*args,**kwds)) parent_names = shape_args + ['loc'] defaults = [None] * (len(parent_names)-1) + [0] else: return None parents_default = dict(zip(parent_names, defaults)) def random(shape=None,**kwds): args, kwds = separate_shape_args(kwds, shape_args) if shape is None: return scipy_dist.rvs(*args,**kwds) else: return np.reshape(scipy_dist.rvs(*args,**kwds), shape) # Build docstring from distribution docstr = name[0]+' = '+name + '(name, '+', '.join(parent_names)+', value=None, shape=None, trace=True, rseed=True, doc=None)\n\n' docstr += 'Stochastic variable with '+name+' distribution.\nParents are: '+', '.join(parent_names) + '.\n\n' docstr += """ Methods: random() - draws random value sets value to return value ppf(q) - percent point function (inverse of cdf --- percentiles) sets value to return value isf(q) - inverse survival function (inverse of sf) sets value to return value stats(moments='mv') - mean('m',axis=0), variance('v'), skew('s'), and/or kurtosis('k') Attributes: logp - sum(log(pdf())) or sum(log(pmf())) cdf - cumulative distribution function sf - survival function (1-cdf --- sometimes more accurate) entropy - (differential) entropy of the RV. NOTE: If you encounter difficulties with this object, please try the analogous computation using the rv objects in scipy.stats.distributions directly before reporting the bug. """ new_class = new_dist_class(dtype, name, parent_names, parents_default, docstr, logp, random, True, None) class newer_class(new_class): __doc__ = docstr rv = scipy_dist def __init__(self, *args, **kwds): new_class.__init__(self, *args, **kwds) self.args, self.kwds = separate_shape_args(self.parents, shape_args) self.frozen_rv = self.rv(self.args, self.kwds) def _pymc_dists_to_value(self, args): """Replace arguments that are a pymc.Node with their value.""" # This is needed because the scipy rv function transforms # every input argument which causes new pymc lambda # functions to be generated. Thus, when calling this many # many times, excessive amounts of RAM are used. new_args = [] for arg in args: if isinstance(arg, pm.Node): new_args.append(arg.value) else: new_args.append(arg) return new_args def _cdf(self): """ The cumulative distribution function of self conditional on parents evaluated at self's current value """ return self.rv.cdf(self.value, *self._pymc_dists_to_value(self.args), **self.kwds) cdf = property(_cdf, doc=_cdf.__doc__) def _sf(self): """ The survival function of self conditional on parents evaluated at self's current value """ return self.rv.sf(self.value, *self._pymc_dists_to_value(self.args), **self.kwds) sf = property(_sf, doc=_sf.__doc__) def ppf(self, q): """ The percentile point function (inverse cdf) of self conditional on parents. Self's value will be set to the return value. """ self.value = self.rv.ppf(q, *self._pymc_dists_to_value(self.args), **self.kwds) return self.value def isf(self, q): """ The inverse survival function of self conditional on parents. Self's value will be set to the return value. """ self.value = self.rv.isf(q, *self._pymc_dists_to_value(self.args), **self.kwds) return self.value def stats(self, moments='mv'): """The first few moments of self's distribution conditional on parents""" return self.rv.stats(moments=moments, *self._pymc_dists_to_value(self.args), **self.kwds) def _entropy(self): """The entropy of self's distribution conditional on its parents""" return self.rv.entropy(*self._pymc_dists_to_value(self.args), **self.kwds) entropy = property(_entropy, doc=_entropy.__doc__) newer_class.__name__ = new_class.__name__ return newer_class for scipy_dist_name in sc_dst.__all__: scipy_dist = sc_dst.__dict__[scipy_dist_name] if isinstance(scipy_dist, sc_dst.rv_continuous) or isinstance(scipy_dist, sc_dst.rv_discrete): new_dist = stochastic_from_scipy_dist(scipy_dist) locals()[new_dist.__name__] = new_dist __all__.append(new_dist.__name__) pymc-2.2+ds/pymc/StepMethods.py000066400000000000000000001704561204033704200165200ustar00rootroot00000000000000from __future__ import division import numpy as np from .utils import msqrt, check_type, round_array, float_dtypes, integer_dtypes, bool_dtypes, safe_len, find_generations, logp_of_set, symmetrize, logp_gradient_of_set from numpy import ones, zeros, log, shape, cov, ndarray, inner, reshape, sqrt, any, array, all, abs, exp, where, isscalar, iterable, multiply, transpose, tri, pi from numpy.linalg.linalg import LinAlgError from numpy.linalg import pinv, cholesky from numpy.random import randint, random from numpy.random import normal as rnormal from numpy.random import poisson as rpoisson from .PyMCObjects import Stochastic, Potential, Deterministic from .Container import Container from .Node import ZeroProbability, Node, Variable, StochasticBase from pymc.decorators import prop from . import distributions from copy import copy from .InstantiationDecorators import deterministic import pdb, warnings, sys import inspect from . import six from .six import print_ __docformat__='reStructuredText' # Changeset history # 22/03/2007 -DH- Added a _state attribute containing the name of the attributes that make up the state of the step method, and a method to return that state in a dict. Added an id. # TODO: Test cases for binary and discrete Metropolises. conjugate_Gibbs_competence = 0 nonconjugate_Gibbs_competence = 0 class AdaptationError(ValueError): pass __all__=['DiscreteMetropolis', 'Metropolis', 'PDMatrixMetropolis', 'StepMethod', 'assign_method', 'pick_best_methods', 'StepMethodRegistry', 'NoStepper', 'BinaryMetropolis', 'AdaptiveMetropolis','Gibbs','conjugate_Gibbs_competence', 'nonconjugate_Gibbs_competence', 'DrawFromPrior'] StepMethodRegistry = [] def pick_best_methods(stochastic): """ Picks the StepMethods best suited to handle a stochastic variable. """ # Keep track of most competent methohd max_competence = 0 # Empty set of appropriate StepMethods best_candidates = set([]) # Loop over StepMethodRegistry for method in StepMethodRegistry: # Parse method and its associated competence try: competence = method.competence(stochastic) except: # print_('\n\tWarning, there was an error while step method %s assessed its competence \n \ # \tto handle stochastic %s. It is being excluded from consideration.\n' \ # %(method.__name__, stochastic)) competence = 0 # If better than current best method, promote it if competence > max_competence: best_candidates = set([method]) max_competence = competence # If same competence, add it to the set of best methods elif competence == max_competence: best_candidates.add(method) if max_competence<=0: raise ValueError('Maximum competence reported for stochastic %s is <= 0... you may need to write a custom step method class.' % stochastic.__name__) # print_(s.__name__ + ': ', best_candidates, ' ', max_competence) return best_candidates def assign_method(stochastic, scale=None, verbose=-1): """ Returns a step method instance to handle a variable. If several methods have the same competence, it picks one arbitrarily (using set.pop()). """ # Retrieve set of best candidates best_candidates = pick_best_methods(stochastic) # Randomly grab and appropriate method method = best_candidates.pop() failure_header = """Failed attempting to automatically assign step method class %s to stochastic variable %s. Try setting %s's competence method to return 0 and manually assigning it when appropriate. See the user guide. Error message: """%(method.__name__, stochastic.__name__, method.__name__) try: if scale: out = method(stochastic, scale = scale, verbose=verbose) else: out = method(stochastic, verbose=verbose) except: a,b,c = sys.exc_info() try: args = list(b.args) except AttributeError: args = [] args.append(failure_header) b.args = args six.reraise(a, b, c) return out class StepMethodMeta(type): """ Automatically registers new step methods if they can be automatically assigned: if their init method has one and only one required argument. """ def __init__(cls, name, bases, dict): type.__init__(cls, name, bases, dict) args, varargs, varkw, defaults = inspect.getargspec(cls.__init__) auto_assignment_OK = False if len(args) == 2: auto_assignment_OK = True elif len(args)>2: if defaults is not None: if len(defaults) == len(args)-2: auto_assignment_OK = True elif len(args) == 1 and varargs is not None: auto_assignment_OK = True if auto_assignment_OK: StepMethodRegistry.append(cls) class StepMethod(object): """ This object knows how to make Stochastics take single MCMC steps. Its step() method will be called by Model at every MCMC iteration. :Parameters: -variables : list, array or set Collection of PyMCObjects - verbose (optional) : integer Level of output verbosity: 0=none, 1=low, 2=medium, 3=high. Setting to -1 (Default) allows verbosity to be set by sampler. Externally-accessible attributes: stochastics: The Stochastics over which self has jurisdiction which have observed = False. children: The combined children of all Variables over which self has jurisdiction. parents: The combined parents of all Nodes over which self has jurisdiction, as a set. loglike: The summed log-probability of self's children conditional on all of self's Variables' current values. These will be recomputed only as necessary. This descriptor should eventually be written in C. Externally accesible methods: sample(): A single MCMC step for all the Stochastics over which self has jurisdiction. Must be overridden in subclasses. tune(): Tunes proposal distribution widths for all self's Stochastics. competence(s): Examines Stochastic instance s and returns self's competence to handle it, on a scale of 0 to 3. To instantiate a StepMethod called S with jurisdiction over a sequence/set N of Nodes: >>> S = StepMethod(N) :SeeAlso: Metropolis, Sampler. """ def __init__(self, variables, verbose=-1, tally=False): # StepMethod initialization if not iterable(variables) or isinstance(variables, Node): variables = [variables] self.stochastics = set() self.children = set() self.parents = set() self.tally = tally self._state = [] self._tuning_info = [] self.verbose = verbose # File away the variables for variable in variables: # Sort. if isinstance(variable,Stochastic) and not variable.observed: self.stochastics.add(variable) if len(self.stochastics)==0: raise ValueError('No stochastics provided.') # Find children, no need to find parents; each variable takes care of those. for variable in variables: self.children |= variable.children for parent in six.itervalues(variable.parents): if isinstance(parent, Variable): self.parents.add(parent) self.children = set([]) self.parents = set([]) for s in self.stochastics: self.children |= s.extended_children self.parents |= s.extended_parents # Remove own stochastics from children and parents. self.children -= self.stochastics self.parents -= self.stochastics # self.markov_blanket is a list, because we want self.stochastics to have the chance to # raise ZeroProbability exceptions before self.children. self.markov_blanket = list(self.stochastics)+list(self.children) # ID string for verbose feedback self._id = self.__class__.__name__ + '_' + '_'.join([s.__name__ for s in self.stochastics]) def step(self): """ Specifies single step of step method. Must be overridden in subclasses. """ pass @staticmethod def competence(s): """ This function is used by Sampler to determine which step method class should be used to handle stochastic variables. Return value should be a competence score from 0 to 3, assigned as follows: 0: I can't handle that variable. 1: I can handle that variable, but I'm a generalist and probably shouldn't be your top choice (Metropolis and friends fall into this category). 2: I'm designed for this type of situation, but I could be more specialized. 3: I was made for this situation, let me handle the variable. In order to be eligible for inclusion in the registry, a sampling method's init method must work with just a single argument, a Stochastic object. If you want to exclude a particular step method from consideration for handling a variable, do this: Competence functions MUST be called 'competence' and be decorated by the '@staticmethod' decorator. Example: @staticmethod def competence(s): if isinstance(s, MyStochasticSubclass): return 2 else: return 0 :SeeAlso: pick_best_methods, assign_method """ return 0 def tune(self, *args, **kwargs): return False def _get_loglike(self): # Fetch log-probability (as sum of childrens' log probability) sum = logp_of_set(self.children) if self.verbose>2: print_('\t' + self._id + ' Current log-likelihood ', sum) return sum # Make get property for retrieving log-probability loglike = property(fget = _get_loglike, doc="The summed log-probability of all stochastic variables that depend on \n self.stochastics, with self.stochastics removed.") def _get_logp_plus_loglike(self): sum = logp_of_set(self.markov_blanket) if self.verbose>2: print_('\t' + self._id + ' Current log-likelihood plus current log-probability', sum) return sum # Make get property for retrieving log-probability logp_plus_loglike = property(fget = _get_logp_plus_loglike, doc="The summed log-probability of all stochastic variables that depend on \n self.stochastics, and self.stochastics.") def _get_logp_gradient(self): return logp_gradient_of_set(self.stochastics, self.markov_blanket) logp_gradient = property(fget = _get_logp_gradient) def current_state(self): """Return a dictionary with the current value of the variables defining the state of the step method.""" state = {} for s in self._state: state[s] = getattr(self, s) return state @prop def ratio(): """Acceptance ratio""" def fget(self): return self.accepted/(self.accepted + self.rejected) return locals() StepMethod = six.with_metaclass(StepMethodMeta, StepMethod) class NoStepper(StepMethod): """ Step and tune methods do nothing. Useful for holding stochastics constant without setting observed=True. """ def step(self): pass def tune(self, *args, **kwargs): pass # The default StepMethod, which Model uses to handle singleton stochastics. class Metropolis(StepMethod): """ The default StepMethod, which Model uses to handle singleton, continuous variables. Applies the one-at-a-time Metropolis-Hastings algorithm to the Stochastic over which self has jurisdiction. To instantiate a Metropolis called M with jurisdiction over a Stochastic P: >>> M = Metropolis(P, scale=1, proposal_sd=None, dist=None) :Arguments: - s : Stochastic The variable over which self has jurisdiction. - scale (optional) : number The proposal jump width is set to scale * variable.value. - proposal_sd (optional) : number or vector The proposal jump width is set to proposal_sd. - proposal_distribution (optional) : string The proposal distribution. May be 'Normal', 'Prior' or None. If None is provided, a proposal distribution is chosen by examining P.value's type. - verbose (optional) : integer Level of output verbosity: 0=none, 1=low, 2=medium, 3=high. Setting to -1 (default) allows verbosity to be turned on by sampler. :SeeAlso: StepMethod, Sampler. """ def __init__(self, stochastic, scale=1., proposal_sd=None, proposal_distribution=None, verbose=-1, tally=True, check_before_accepting=True): # Metropolis class initialization # Initialize superclass StepMethod.__init__(self, [stochastic], tally=tally) # Initialize hidden attributes self.proposal_sd = proposal_sd self.adaptive_scale_factor = 1. self.accepted = 0. self.rejected = 0. self._state = ['rejected', 'accepted', 'adaptive_scale_factor', 'proposal_sd', 'proposal_distribution', 'check_before_accepting'] self._tuning_info = ['adaptive_scale_factor'] self.check_before_accepting = check_before_accepting self.proposal_sd=proposal_sd # Set public attributes self.stochastic = stochastic if verbose > -1: self.verbose = verbose else: self.verbose = stochastic.verbose if proposal_distribution != "Prior": # Avoid zeros when setting proposal variance if proposal_sd is None: if all(self.stochastic.value != 0.): self.proposal_sd = ones(shape(self.stochastic.value)) * abs(self.stochastic.value) * scale else: self.proposal_sd = ones(shape(self.stochastic.value)) * scale # Initialize proposal deviate with array of zeros self.proposal_deviate = zeros(shape(self.stochastic.value), dtype=float) # Determine size of stochastic if isinstance(self.stochastic.value, ndarray): self._len = len(self.stochastic.value.ravel()) else: self._len = 1 #else: self.proposal_sd = None # Probably unnecessary # If no dist argument is provided, assign a proposal distribution automatically. if not proposal_distribution: # Pick Gaussian by default self.proposal_distribution = "Normal" else: if proposal_distribution.capitalize() in self._valid_proposals: self.proposal_distribution = proposal_distribution else: raise ValueError("Invalid proposal distribution '%s' specified for Metropolis sampler." % proposal_distribution) _valid_proposals = ['Normal', 'Prior'] @staticmethod def competence(s): """ The competence function for Metropolis """ if s.dtype is None: return .5 if not s.dtype in float_dtypes: # If the stochastic's binary or discrete, I can't do it. return 0 else: return 1 def hastings_factor(self): """ If this is a Metropolis-Hastings method (proposal is not symmetric random walk), this method should return log(back_proposal) - log(forward_proposal). """ return 0. def step(self): """ The default step method applies if the variable is floating-point valued, and is not being proposed from its prior. """ # Probability and likelihood for s's current value: if self.verbose>2: print_() print_(self._id + ' getting initial logp.') if self.proposal_distribution == "Prior": logp = self.loglike else: logp = self.logp_plus_loglike if self.verbose>2: print_(self._id + ' proposing.') # Sample a candidate value self.propose() # Probability and likelihood for s's proposed value: try: if self.proposal_distribution == "Prior": logp_p = self.loglike # Check for weirdness before accepting jump if self.check_before_accepting: self.stochastic.logp else: logp_p = self.logp_plus_loglike except ZeroProbability: # Reject proposal if self.verbose>2: print_(self._id + ' rejecting due to ZeroProbability.') self.reject() # Increment rejected count self.rejected += 1 if self.verbose>2: print_(self._id + ' returning.') return if self.verbose>2: print_('logp_p - logp: ', logp_p - logp) HF = self.hastings_factor() # Evaluate acceptance ratio if log(random()) > logp_p - logp + HF: # Revert s if fail self.reject() # Increment rejected count self.rejected += 1 if self.verbose > 2: print_(self._id + ' rejecting') else: # Increment accepted count self.accepted += 1 if self.verbose > 2: print_(self._id + ' accepting') if self.verbose > 2: print_(self._id + ' returning.') def tune(self, *args, **kwargs): if self.proposal_distribution == "Prior": return False else: return StepMethod.tune(self, *args, **kwargs) def reject(self): # Sets current s value to the last accepted value # self.stochastic.value = self.stochastic.last_value self.stochastic.revert() def propose(self): """ This method is called by step() to generate proposed values if self.proposal_distribution is "Normal" (i.e. no proposal specified). """ if self.proposal_distribution == "Normal": self.stochastic.value = rnormal(self.stochastic.value, self.adaptive_scale_factor * self.proposal_sd, size=self.stochastic.value.shape) elif self.proposal_distribution == "Prior": self.stochastic.random() def tune(self, divergence_threshold=1e10, verbose=0): """ Tunes the scaling parameter for the proposal distribution according to the acceptance rate of the last k proposals: Rate Variance adaptation ---- ------------------- <0.001 x 0.1 <0.05 x 0.5 <0.2 x 0.9 >0.5 x 1.1 >0.75 x 2 >0.95 x 10 This method is called exclusively during the burn-in period of the sampling algorithm. May be overridden in subclasses. """ if self.verbose > -1: verbose = self.verbose # Verbose feedback if verbose > 0: print_('\t%s tuning:' % self._id) # Flag for tuning state tuning = True # Calculate recent acceptance rate if not (self.accepted + self.rejected): return tuning acc_rate = self.accepted / (self.accepted + self.rejected) # Switch statement if acc_rate<0.001: # reduce by 90 percent self.adaptive_scale_factor *= 0.1 elif acc_rate<0.05: # reduce by 50 percent self.adaptive_scale_factor *= 0.5 elif acc_rate<0.2: # reduce by ten percent self.adaptive_scale_factor *= 0.9 elif acc_rate>0.95: # increase by factor of ten self.adaptive_scale_factor *= 10.0 elif acc_rate>0.75: # increase by double self.adaptive_scale_factor *= 2.0 elif acc_rate>0.5: # increase by ten percent self.adaptive_scale_factor *= 1.1 else: tuning = False # Re-initialize rejection count self.rejected = 0. self.accepted = 0. # More verbose feedback, if requested if verbose > 0: if hasattr(self, 'stochastic'): print_('\t\tvalue:', self.stochastic.value) print_('\t\tacceptance rate:', acc_rate) print_('\t\tadaptive scale factor:', self.adaptive_scale_factor) print_() return tuning class PDMatrixMetropolis(Metropolis): """Metropolis sampler with proposals customised for symmetric positive definite matrices""" def __init__(self, stochastic, scale=1., proposal_sd=None, verbose=-1, tally=True): Metropolis.__init__(self, stochastic, scale=scale, proposal_sd=proposal_sd, proposal_distribution="Normal", verbose=verbose, tally=tally) @staticmethod def competence(s): """ The competence function for MatrixMetropolis """ # MatrixMetropolis handles the Wishart family, which are valued as # _symmetric_ matrices. if any([isinstance(s,cls) for cls in [distributions.Wishart,distributions.WishartCov]]): return 2 else: return 0 def propose(self): """ Proposals for positive definite matrix using random walk deviations on the Cholesky factor of the current value. """ # Locally store size of matrix dims = self.stochastic.value.shape # Add normal deviate to value and symmetrize dev = rnormal(0, self.adaptive_scale_factor * self.proposal_sd, size=dims) symmetrize(dev) # Replace self.stochastic.value = dev + self.stochastic.value class Gibbs(Metropolis): """ Base class for the Gibbs step methods """ def __init__(self, stochastic, verbose=-1): Metropolis.__init__(self, stochastic, verbose=verbose, tally=False) # Override Metropolis's competence. competence = classmethod(StepMethod.competence) def step(self): if not self.conjugate: logp = self.stochastic.logp self.propose() if not self.conjugate: try: logp_p = self.stochastic.logp except ZeroProbability: self.reject() if log(random()) > logp_p - logp: self.reject() def tune(self, *args, **kwargs): return False def propose(self): raise NotImplementedError('The Gibbs class has to be subclassed, it is not usable directly.') class DrawFromPrior(StepMethod): """ Handles dataless submodels. """ def __init__(self, variables, generations, verbose=-1): StepMethod.__init__(self, variables, verbose, tally=False) self.generations = generations # Some variables (eg GP) may not have logp attributes, so don't try to # evaluate their logps. self.variables_with_logp = set([]) for s in self.markov_blanket: try: s.logp self.variables_with_logp.add(s) except: pass def get_logp_plus_loglike(self): return logp_of_set(self.variables_with_logp) logp_plus_loglike = property(get_logp_plus_loglike) def step(self): jumped = [] try: for generation in self.generations: for s in generation: s.rand() jumped.append(s) self.logp_plus_loglike except ZeroProbability: if self.verbose > 2: forbidden = [] for generation in self.generations: for s in self.stochastics: try: s.logp except ZeroProbability: forbidden.append(s.__name__) print_('DrawFromPrior jumped stochastics %s to value forbidden by objects %s, rejecting.'%(', '.join(s.__name__ for s in jumped),', '.join(forbidden))) warnings.warn('DrawFromPrior jumped to forbidden value') for s in jumped: s.revert() @classmethod def competence(s): # Dataless gets assigned specially before other step methods. return 0 class NoStepper(StepMethod): """ Step and tune methods do nothing. Useful for holding stochastics constant without setting observed=True. """ def step(self, *args, **kwargs): pass def tune(self, *args, **kwargs): return False class DiscreteMetropolis(Metropolis): """ Just like Metropolis, but rounds the variable's value. Good for discrete stochastics. """ def __init__(self, stochastic, scale=1., proposal_sd=None, proposal_distribution="Poisson", positive=False, verbose=-1, tally=True): # DiscreteMetropolis class initialization # Initialize superclass Metropolis.__init__(self, stochastic, scale=scale, proposal_sd=proposal_sd, proposal_distribution=proposal_distribution, verbose=verbose, tally=tally) # Flag for positive-only values self._positive = positive _valid_proposals = ['Poisson', 'Normal', 'Prior'] @staticmethod def competence(stochastic): """ The competence function for DiscreteMetropolis. """ if stochastic.dtype in integer_dtypes: return 1 else: return 0 def propose(self): # Propose new values using normal distribution if self.proposal_distribution == "Normal": # New normal deviate, centred on current value new_val = rnormal(self.stochastic.value, self.adaptive_scale_factor * self.proposal_sd) # Round before setting proposed value self.stochastic.value = round_array(new_val) elif self.proposal_distribution == "Poisson": k = shape(self.stochastic.value) # Add or subtract (equal probability) Poisson sample new_val = self.stochastic.value + rpoisson(self.adaptive_scale_factor * self.proposal_sd) * (-ones(k))**(random(k)>0.5) if self._positive: # Enforce positive values self.stochastic.value = abs(new_val) else: self.stochastic.value = new_val elif self.proposal_distribution == "Prior": self.stochastic.random() # TODO Implement independence sampler for BinaryMetropolis class BinaryMetropolis(Metropolis): """ Like Metropolis, but with a modified step() method. Good for binary variables. """ def __init__(self, stochastic, p_jump=.1, proposal_distribution=None, verbose=-1, tally=True): # BinaryMetropolis class initialization # Initialize superclass Metropolis.__init__(self, stochastic, proposal_distribution=proposal_distribution, verbose=verbose, tally=tally) self._state.remove('proposal_sd') # adaptive_scale_factor controls the jump probability self.adaptive_scale_factor = log(1.-p_jump) / log(.5) @staticmethod def competence(stochastic): """ The competence function for Binary One-At-A-Time Metropolis """ if stochastic.dtype in bool_dtypes: return 2 elif type(stochastic) is distributions.Bernoulli: return 2 else: return 0 def step(self): if not isscalar(self.stochastic.value): Metropolis.step(self) else: # See what log-probability of True is. self.stochastic.value = True try: logp_true = self.logp_plus_loglike except ZeroProbability: self.stochastic.value = False return # See what log-probability of False is. self.stochastic.value = False try: logp_false = self.logp_plus_loglike except ZeroProbability: self.stochastic.value = True return # Test p_true = exp(logp_true) p_false = exp(logp_false) if self.verbose>2: print_("""%s step information: - logp_true: %f - logp_false: %f - p_true: %f - p_false: %f """ % (self._id, logp_true, logp_false, p_true, p_false)) # Stochastically set value according to relative # probabilities of True and False if random() > p_false / (p_true + p_false): if self.verbose > 2: print_("%s setting %s's value to True." % (self._id, self.stochastic)) self.stochastic.value = True elif self.verbose > 2: print_("%s setting %s's value to False." % (self._id, self.stochastic)) def propose(self): # Propose new values if self.proposal_distribution == 'Prior': self.stochastic.random() else: # Convert adaptive_scale_factor to a jump probability p_jump = 1.-.5**self.adaptive_scale_factor rand_array = random(size=shape(self.stochastic.value)) new_value = copy(self.stochastic.value) # Locations where switches occur, according to p_jump switch_locs = where(rand_array= 2: print_("Initialization...") print_('Dimension: ', self.dim) print_("C_0: ", self.C) print_("Sigma: ", self.proposal_sd) @staticmethod def competence(stochastic): """ The competence function for AdaptiveMetropolis. The AM algorithm is well suited to deal with multivariate parameters. """ # if not stochastic.dtype in float_dtypes and not stochastic.dtype in integer_dtypes: # return 0 # # Algorithm is not well-suited to sparse datasets. Dont use if less than # # 25 percent of values are nonzero # if not getattr(stochastic, 'mask', None) is None: # return 0 # if np.alen(stochastic.value) == 1: # return 0 # elif np.alen(stochastic.value) < 5: # return 2 # elif (len(stochastic.value.nonzero()[0]) > 0.25*len(stochastic.value)): # return 2 # else: # return 0 return 0 def cov_from_value(self, scaling): """Return a covariance matrix for the jump distribution using the actual value of the stochastic as a guess of their variance, divided by the `scaling` argument. Note that this is likely to return a poor guess. """ rv = [] for s in self.stochastics: rv.extend(np.ravel(s.value).copy()) # Remove 0 values since this would lead to quite small jumps... arv = np.array(rv) arv[arv==0] = 1. # Create a diagonal covariance matrix using the scaling factor. return np.eye(self.dim)*np.abs(arv)/scaling def cov_from_scales(self, scales): """Return a covariance matrix built from a dictionary of scales. `scales` is a dictionary keyed by stochastic instances, and the values refer are the variance of the jump distribution for each stochastic. If a stochastic is a sequence, the variance must have the same length. """ # Get array of scales ord_sc = [] for stochastic in self.stochastics: ord_sc.append(np.ravel(scales[stochastic])) ord_sc = np.concatenate(ord_sc) if np.squeeze(ord_sc).shape[0] != self.dim: raise ValueError("Improper initial scales, dimension don't match", \ (np.squeeze(ord_sc), self.dim)) # Scale identity matrix return np.eye(self.dim)*ord_sc def cov_from_trace(self, trace=slice(None)): """Define the jump distribution covariance matrix from the object's stored trace. :Parameters: - `trace` : slice or int A slice for the stochastic object's trace in the last chain, or a an integer indicating the how many of the last samples will be used. """ n = [] for s in self.stochastics: n.append(s.trace.length()) n = set(n) if len(n) > 1: raise ValueError('Traces do not have the same length.') elif n == 0: raise AttributeError('Stochastic has no trace to compute covariance.') else: n = n.pop() if type(trace) is not slice: trace = slice(trace, n) a = self.trace2array(trace) return np.cov(a, rowvar=0) def check_type(self): """Make sure each stochastic has a correct type, and identify discrete stochastics.""" self.isdiscrete = {} for stochastic in self.stochastics: if stochastic.dtype in integer_dtypes: self.isdiscrete[stochastic] = True elif stochastic.dtype in bool_dtypes: raise ValueError('Binary stochastics not supported by AdaptativeMetropolis.') else: self.isdiscrete[stochastic] = False def dimension(self): """Compute the dimension of the sampling space and identify the slices belonging to each stochastic. """ self.dim = 0 self._slices = {} for stochastic in self.stochastics: if isinstance(stochastic.value, np.matrix): p_len = len(stochastic.value.A.ravel()) elif isinstance(stochastic.value, np.ndarray): p_len = len(stochastic.value.ravel()) else: p_len = 1 self._slices[stochastic] = slice(self.dim, self.dim + p_len) self.dim += p_len def update_cov(self): """Recursively compute the covariance matrix for the multivariate normal proposal distribution. This method is called every self.interval once self.delay iterations have been performed. """ scaling = (2.4)**2/self.dim # Gelman et al. 1996. epsilon = 1.0e-5 chain = np.asarray(self._trace) # Recursively compute the chain mean self.C, self.chain_mean = self.recursive_cov(self.C, self._trace_count, self.chain_mean, chain, scaling=scaling, epsilon=epsilon) # Shrink covariance if acceptance rate is too small acc_rate = self.accepted / (self.accepted + self.rejected) if self.shrink_if_necessary: if acc_rate < .001: self.C *= .01 elif acc_rate < .01: self.C *= .25 if self.verbose > 1: if acc_rate < .01: print_('\tAcceptance rate was',acc_rate,'shrinking covariance') self.accepted = 0. self.rejected = 0. if self.verbose > 1: print_("\tUpdating covariance ...\n", self.C) print_("\tUpdating mean ... ", self.chain_mean) # Update state adjustmentwarning = '\n'+\ 'Covariance was not positive definite and proposal_sd cannot be computed by \n'+ \ 'Cholesky decomposition. The next jumps will be based on the last \n' + \ 'valid covariance matrix. This situation may have arisen because no \n' + \ 'jumps were accepted during the last `interval`. One solution is to \n' + \ 'increase the interval, or specify an initial covariance matrix with \n' + \ 'a smaller variance. For this simulation, each time a similar error \n' + \ 'occurs, proposal_sd will be reduced by a factor .9 to reduce the \n' + \ 'jumps and increase the likelihood of accepted jumps.' try: self.updateproposal_sd() except np.linalg.LinAlgError: warnings.warn(adjustmentwarning) self.covariance_adjustment(.9) self._trace_count += len(self._trace) self._trace = [] def covariance_adjustment(self, f=.9): """Multiply self.proposal_sd by a factor f. This is useful when the current proposal_sd is too large and all jumps are rejected. """ self.proposal_sd *= f def updateproposal_sd(self): """Compute the Cholesky decomposition of self.C.""" self.proposal_sd = np.linalg.cholesky(self.C) def recursive_cov(self, cov, length, mean, chain, scaling=1, epsilon=0): r"""Compute the covariance recursively. Return the new covariance and the new mean. .. math:: C_k & = \frac{1}{k-1} (\sum_{i=1}^k x_i x_i^T - k\bar{x_k}\bar{x_k}^T) C_n & = \frac{1}{n-1} (\sum_{i=1}^k x_i x_i^T + \sum_{i=k+1}^n x_i x_i^T - n\bar{x_n}\bar{x_n}^T) & = \frac{1}{n-1} ((k-1)C_k + k\bar{x_k}\bar{x_k}^T + \sum_{i=k+1}^n x_i x_i^T - n\bar{x_n}\bar{x_n}^T) :Parameters: - cov : matrix Previous covariance matrix. - length : int Length of chain used to compute the previous covariance. - mean : array Previous mean. - chain : array Sample used to update covariance. - scaling : float Scaling parameter - epsilon : float Set to a small value to avoid singular matrices. """ n = length + len(chain) k = length new_mean = self.recursive_mean(mean, length, chain) t0 = k * np.outer(mean, mean) t1 = np.dot(chain.T, chain) t2 = n*np.outer(new_mean, new_mean) t3 = epsilon * np.eye(cov.shape[0]) new_cov = (k-1)/(n-1.)*cov + scaling/(n-1.) * (t0 + t1 - t2 + t3) return new_cov, new_mean def recursive_mean(self, mean, length, chain): r"""Compute the chain mean recursively. Instead of computing the mean :math:`\bar{x_n}` of the entire chain, use the last computed mean :math:`bar{x_j}` and the tail of the chain to recursively estimate the mean. .. math:: \bar{x_n} & = \frac{1}{n} \sum_{i=1}^n x_i & = \frac{1}{n} (\sum_{i=1}^j x_i + \sum_{i=j+1}^n x_i) & = \frac{j\bar{x_j}}{n} + \frac{\sum_{i=j+1}^n x_i}{n} :Parameters: - mean : array Previous mean. - length : int Length of chain used to compute the previous mean. - chain : array Sample used to update mean. """ n = length + len(chain) return length * mean / n + chain.sum(0)/n def propose(self): """ This method proposes values for stochastics based on the empirical covariance of the values sampled so far. The proposal jumps are drawn from a multivariate normal distribution. """ arrayjump = np.dot(self.proposal_sd, np.random.normal(size=self.proposal_sd.shape[0])) if self.verbose > 2: print_('Jump :', arrayjump) # Update each stochastic individually. for stochastic in self.stochastics: jump = arrayjump[self._slices[stochastic]] if np.iterable(stochastic.value): jump = np.reshape(arrayjump[self._slices[stochastic]],np.shape(stochastic.value)) if self.isdiscrete[stochastic]: jump = round_array(jump) stochastic.value = stochastic.value + jump def step(self): """ Perform a Metropolis step. Stochastic parameters are block-updated using a multivariate normal distribution whose covariance is updated every self.interval once self.delay steps have been performed. The AM instance keeps a local copy of the stochastic parameter's trace. This trace is used to computed the empirical covariance, and is completely independent from the Database backend. If self.greedy is True and the number of iterations is smaller than self.delay, only accepted jumps are stored in the internal trace to avoid computing singular covariance matrices. """ # Probability and likelihood for stochastic's current value: logp = self.logp_plus_loglike if self.verbose > 1: print_('Current value: ', self.stoch2array()) print_('Current likelihood: ', logp) # Sample a candidate value self.propose() # Metropolis acception/rejection test accept = False try: # Probability and likelihood for stochastic's proposed value: logp_p = self.logp_plus_loglike if self.verbose > 2: print_('Current value: ', self.stoch2array()) print_('Current likelihood: ', logp_p) if np.log(random()) < logp_p - logp: accept = True self.accepted += 1 if self.verbose > 2: print_('Accepted') else: self.rejected += 1 if self.verbose > 2: print_('Rejected') except ZeroProbability: self.rejected += 1 logp_p = None if self.verbose > 2: print_('Rejected with ZeroProbability Error.') if (not self._current_iter % self.interval) and self.verbose > 1: print_("Step ", self._current_iter) print_("\tLogprobability (current, proposed): ", logp, logp_p) for stochastic in self.stochastics: print_("\t", stochastic.__name__, stochastic.last_value, stochastic.value) if accept: print_("\tAccepted\t*******\n") else: print_("\tRejected\n") print_("\tAcceptance ratio: ", self.accepted/(self.accepted+self.rejected)) if self._current_iter == self.delay: self.greedy = False if not accept: self.reject() if accept or not self.greedy: self.internal_tally() if self._current_iter>self.delay and self._current_iter%self.interval==0: self.update_cov() self._current_iter += 1 # Please keep reject() factored out- helps RandomRealizations figure out what to do. def reject(self): for stochastic in self.stochastics: # stochastic.value = stochastic.last_value stochastic.revert() def internal_tally(self): """Store the trace of stochastics for the computation of the covariance. This trace is completely independent from the backend used by the sampler to store the samples.""" chain = [] for stochastic in self.stochastics: chain.append(np.ravel(stochastic.value)) self._trace.append(np.concatenate(chain)) def trace2array(self, sl): """Return an array with the trace of all stochastics, sliced by sl.""" chain = [] for stochastic in self.stochastics: tr = stochastic.trace.gettrace(slicing=sl) if tr is None: raise AttributeError chain.append(tr) return np.hstack(chain) def stoch2array(self): """Return the stochastic objects as an array.""" a = np.empty(self.dim) for stochastic in self.stochastics: a[self._slices[stochastic]] = stochastic.value return a def tune(self, verbose=0): """Tuning is done during the entire run, independently from the Sampler tuning specifications. """ return False class TWalk(StepMethod): """ The t-walk is a scale-independent, adaptive MCMC algorithm for arbitrary continuous distributions and correltation structures. The t-walk maintains two independent points in the sample space, and moves are based on proposals that are accepted or rejected with a standard M-H acceptance probability on the product space. The t-walk is strictly non-adaptive on the product space, but displays adaptive behaviour on the original state space. There are four proposal distributions (walk, blow, hop, traverse) that together offer an algorithm that is effective in sampling distributions of arbitrary scale. The t-walk was devised by J.A. Christen and C. Fox (2010). :Parameters: - stochastic : Stochastic The variable over which self has jurisdiction. - kernel_probs (optional) : iterable The probabilities of choosing each kernel. - walk_theta (optional) : float Parameter for the walk move. Christen and Fox recommend values in [0.3, 2] (Defaults to 1.5). - traverse_theta (optional) : float Parameter for the traverse move. Christen and Fox recommend values in [2, 10] (Defaults to 6.0). - n1 (optional) : integer The number of elements to be moved at each iteration. Christen and Fox recommend values in [2, 20] (Defaults to 4). - support (optional) : function Function defining the support of the stochastic (Defaults to real line). - verbose (optional) : integer Level of output verbosity: 0=none, 1=low, 2=medium, 3=high - tally (optional) : bool Flag for recording values for trace (Defaults to True). """ def __init__(self, stochastic, inits=None, kernel_probs=[0.4918, 0.4918, 0.0082, 0.0082], walk_theta=1.5, traverse_theta=6.0, n1=4, support=lambda x: True, verbose=-1, tally=True): # Initialize superclass StepMethod.__init__(self, [stochastic], verbose=verbose, tally=tally) # Ordered list of proposal kernels self.kernels = [self.walk, self.traverse, self.blow, self.hop] # Kernel for current iteration self.current_kernel = None self.accepted = zeros(len(kernel_probs)) self.rejected = zeros(len(kernel_probs)) # Cumulative kernel probabilities self.cum_probs = np.cumsum(kernel_probs) self.walk_theta = walk_theta self.traverse_theta = traverse_theta # Set public attributes self.stochastic = stochastic if verbose > -1: self.verbose = verbose else: self.verbose = stochastic.verbose # Determine size of stochastic if isinstance(self.stochastic.value, ndarray): self._len = len(self.stochastic.value.ravel()) else: self._len = 1 # Create attribute for holding value and secondary value self.values = [self.stochastic.value] # Initialize to different value from stochastic or supplied values if inits is None: self.values.append(self.stochastic.random()) # Reset original value self.stochastic.value = self.values[0] else: self.values.append(inits) # Flag for using second point in log-likelihood calculations self._prime = False # Proposal adjustment factor for current iteration self.hastings_factor = 0.0 # Set probability of selecting any parameter self.p = 1.*min(self._len, n1)/self._len # Support function self._support = support self._state = ['accepted', 'rejected', 'p'] def n1(): doc = "Mean number of parameters to be selected for updating" def fget(self): return self._n1 def fset(self, value): self._n1 = value self._calc_p() return locals() n1 = property(**n1()) @staticmethod def competence(stochastic): """ The competence function for TWalk. """ # if stochastic.dtype in float_dtypes and np.alen(stochastic.value) > 4: # if np.alen(stochastic.value) >=10: # return 2 # return 1 return 0 def walk(self): """Walk proposal kernel""" if self.verbose>1: print_('\t' + self._id + ' Running Walk proposal kernel') # Mask for values to move phi = self.phi theta = self.walk_theta u = random(len(phi)) z = (theta / (1 + theta))*(theta*u**2 + 2*u - 1) if self._prime: xp, x = self.values else: x, xp = self.values if self.verbose>1: print_('\t' + 'Current value = ' + str(x)) x = x + phi*(x - xp)*z if self.verbose>1: print_('\t' + 'Proposed value = ' + str(x)) self.stochastic.value = x # Set proposal adjustment factor self.hastings_factor = 0.0 def traverse(self): """Traverse proposal kernel""" if self.verbose>1: print_('\t' + self._id + ' Running Traverse proposal kernel') # Mask for values to move phi = self.phi theta = self.traverse_theta # Calculate beta if (random() < (theta-1)/(2*theta)): beta = exp(1/(theta + 1)*log(random())) else: beta = exp(1/(1 - theta)*log(random())) if self._prime: xp, x = self.values else: x, xp = self.values if self.verbose>1: print_('\t' + 'Current value = ' + str(x)) x = (xp + beta*(xp - x))*phi + x*(phi==False) if self.verbose>1: print_('\t' + 'Proposed value = ' + str(x)) self.stochastic.value = x # Set proposal adjustment factor self.hastings_factor = (sum(phi) - 2)*log(beta) def blow(self): """Blow proposal kernel""" if self.verbose>1: print_('\t' + self._id + ' Running Blow proposal kernel') # Mask for values to move phi = self.phi if self._prime: xp, x = self.values else: x, xp = self.values if self.verbose>1: print_('\t' + 'Current value ' + str(x)) sigma = max(phi*abs(xp - x)) x = x + phi*sigma*rnormal() if self.verbose>1: print_('\t' + 'Proposed value = ' + str(x)) self.hastings_factor = self._g(x, xp, sigma) - self._g(self.stochastic.value, xp, sigma) self.stochastic.value = x def _g(self, h, xp, s): """Density function for blow and hop moves""" nphi = sum(self.phi) return (nphi/2.0)*log(2*pi) + nphi*log(s) + 0.5*sum((h - xp)**2)/(s**2) def hop(self): """Hop proposal kernel""" if self.verbose>1: print_('\t' + self._id + ' Running Hop proposal kernel') # Mask for values to move phi = self.phi if self._prime: xp, x = self.values else: x, xp = self.values if self.verbose>1: print_('\t' + 'Current value of x = ' + str(x)) sigma = max(phi*abs(xp - x))/3.0 x = (xp + sigma*rnormal())*phi + x*(phi==False) if self.verbose>1: print_('\t' + 'Proposed value = ' + str(x)) self.hastings_factor = self._g(x, xp, sigma) - self._g(self.stochastic.value, xp, sigma) self.stochastic.value = x def reject(self): """Sets current s value to the last accepted value""" self.stochastic.revert() # Increment rejected count self.rejected[self.current_kernel] += 1 if self.verbose>1: print_(self._id, "rejected, reverting to value =", self.stochastic.value) def propose(self): """This method is called by step() to generate proposed values""" # Generate uniform variate to choose kernel self.current_kernel = sum(self.cum_probs < random()) kernel = self.kernels[self.current_kernel] # Parameters to move self.phi = (random(self._len) < self.p) # Propose new value kernel() def step(self): """Single iteration of t-walk algorithm""" valid_proposal = False # Use x or xprime as pivot self._prime = (random() < 0.5) if self.verbose>1: print_("\n\nUsing x%s as pivot" % (" prime"*self._prime or "")) if self._prime: # Set the value of the stochastic to the auxiliary self.stochastic.value = self.values[1] if self.verbose>1: print_(self._id, "setting value to auxiliary", self.stochastic.value) # Current log-probability logp = self.logp_plus_loglike if self.verbose>1: print_("Current logp", logp) try: # Propose new value while not valid_proposal: self.propose() # Check that proposed value lies in support valid_proposal = self._support(self.stochastic.value) if not sum(self.phi): raise ZeroProbability # Proposed log-probability logp_p = self.logp_plus_loglike if self.verbose>1: print_("Proposed logp", logp_p) except ZeroProbability: # Reject proposal if self.verbose>1: print_(self._id + ' rejecting due to ZeroProbability.') self.reject() if self._prime: # Update value list self.values[1] = self.stochastic.value # Revert to stochastic's value for next iteration self.stochastic.value = self.values[0] if self.verbose>1: print_(self._id, "reverting stochastic to primary value", self.stochastic.value) else: # Update value list self.values[0] = self.stochastic.value if self.verbose>1: print_(self._id + ' returning.') return if self.verbose>1: print_('logp_p - logp: ', logp_p - logp) # Evaluate acceptance ratio if log(random()) > (logp_p - logp + self.hastings_factor): # Revert s if fail self.reject() else: # Increment accepted count self.accepted[self.current_kernel] += 1 if self.verbose > 1: print_(self._id + ' accepting') if self._prime: # Update value list self.values[1] = self.stochastic.value # Revert to stochastic's value for next iteration self.stochastic.value = self.values[0] if self.verbose>1: print_(self._id, "reverting stochastic to primary value", self.stochastic.value) else: # Update value list self.values[0] = self.stochastic.value class IIDSStepper(StepMethod): """ See written documentation. """ pass pymc-2.2+ds/pymc/__init__.py000077500000000000000000000037531204033704200160160ustar00rootroot00000000000000""" Markov Chain Monte Carlo sampling toolkit. Bayesian estimation, particularly using Markov chain Monte Carlo (MCMC), is an increasingly relevant approach to statistical estimation. However, few statistical software packages implement MCMC samplers, and they are non-trivial to code by hand. pymc is a python package that implements the Metropolis-Hastings algorithm as a python class, and is extremely flexible and applicable to a large suite of problems. pymc includes methods for summarizing output, plotting, goodness-of-fit and convergence diagnostics. pymc only requires NumPy. All other dependencies such as matplotlib, SciPy, pytables, or sqlite are optional. """ __version__ = '2.2' try: import numpy except ImportError: raise ImportError('NumPy does not seem to be installed. Please see the user guide.') # Core modules from .threadpool import * import os import pymc if os.getcwd().find(os.path.abspath(os.path.split(os.path.split(pymc.__file__)[0])[0]))>-1: from .six import print_ print_('\n\tWarning: You are importing PyMC from inside its source tree.') from .Node import * from .Container import * from .PyMCObjects import * from .InstantiationDecorators import * from .CommonDeterministics import * from .NumpyDeterministics import * from .distributions import * from .Model import * from .StepMethods import * from .MCMC import * from .NormalApproximation import * from .tests import test # Utilities modules from . import utils append = utils.append from . import CommonDeterministics from . import NumpyDeterministics from .CircularStochastic import * from . import distributions from . import gp # Optional modules try: from .diagnostics import * except ImportError: pass try: from . import ScipyDistributions except ImportError: pass try: import parallel except ImportError: pass try: from . import sandbox except ImportError: pass try: from . import graph except ImportError: pass try: from . import Matplot except: pass pymc-2.2+ds/pymc/blas_wrap.f000066400000000000000000000253051204033704200160200ustar00rootroot00000000000000 subroutine dcopy_wrap(x,y,nx) cf2py intent(inplace) y cf2py intent(hide) nx cf2py threadsafe double precision x(nx), y(nx) external dcopy ! dcopy(n,dx,incx,dy,incy) CALL dcopy(nx,x,1,y,1) RETURN END SUBROUTINE dtrmm_wrap(M,N,A,B,SIDE,TRANSA,UPLO,ALPHA) cf2py intent(inplace)::B cf2py integer intent(hide)::M cf2py integer intent(hide)::N cf2py threadsafe * .. Scalar Arguments .. DOUBLE PRECISION ALPHA INTEGER LDA,LDB,M,N CHARACTER DIAG,SIDE,TRANSA,UPLO * .. * .. Array Arguments .. DOUBLE PRECISION A(M,M),B(M,N) EXTERNAL DTRMM ! DTRMM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB) * X = alpha*op( A )*B, or X = alpha*B*op( A ), DIAG = 'N' LDA = M LDB = M CALL DTRMM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB) RETURN END SUBROUTINE dtrsm_wrap(M,N,A,B,SIDE,TRANSA,UPLO,ALPHA) cf2py intent(inplace)::B cf2py integer intent(hide)::M cf2py integer intent(hide)::N cf2py threadsafe * .. Scalar Arguments .. DOUBLE PRECISION ALPHA INTEGER LDA,LDB,M,N CHARACTER DIAG,SIDE,TRANSA,UPLO * .. * .. Array Arguments .. DOUBLE PRECISION A(M,M),B(M,N) EXTERNAL DTRSM ! DTRSM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB) * op( A )*X = alpha*B, or X*op( A ) = alpha*B, DIAG = 'N' LDA = M LDB = M CALL DTRSM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB) RETURN END SUBROUTINE dpotrf_wrap(A,n,info) cf2py double precision dimension(n,n), intent(inplace) :: A cf2py integer depend(A),intent(hide)::n=shape(A,0) cf2py integer intent(out)::info cf2py threadsafe DOUBLE PRECISION A(n,n) INTEGER n, info, i, j EXTERNAL DPOTRF ! DPOTRF( UPLO, N, A, LDA, INFO ) Cholesky factorization ! C <- cholesky(C) call DPOTRF( 'U', n, A, n, info ) do i=2,n do j=1,i-1 A(i,j)=0.0D0 enddo enddo return END subroutine dchdc_wrap(a,p,work,piv,info) cf2py intent(inplace) a cf2py intent(hide) p cf2py intent(hide) work cf2py intent(out) piv cf2py intent(out) info cf2py threadsafe integer lda,p,piv(p),job,info double precision a(p,p),work(p) c c dchdc computes the cholesky decomposition of a positive definite c matrix. a pivoting option allows the user to estimate the c condition of a positive definite matrix or determine the rank c of a positive semidefinite matrix. c c on entry c c a double precision(lda,p). c a contains the matrix whose decomposition is to c be computed. onlt the upper half of a need be stored. c the lower part of the array a is not referenced. c c lda integer. c lda is the leading dimension of the array a. c c Since f2py will make sure that a is column-major contiguous, c lda is set to p in this wrapper. c c p integer. c p is the order of the matrix. c c work double precision. c work is a work array. c c piv integer(p). c piv contains integers that control the selection c of the pivot elements, if pivoting has been requested. c each diagonal element a(k,k) c is placed in one of three classes according to the c value of piv(k). c c if piv(k) .gt. 0, then x(k) is an initial c element. c c if piv(k) .eq. 0, then x(k) is a free element. c c if piv(k) .lt. 0, then x(k) is a final element. c c before the decomposition is computed, initial elements c are moved by symmetric row and column interchanges to c the beginning of the array a and final c elements to the end. both initial and final elements c are frozen in place during the computation and only c free elements are moved. at the k-th stage of the c reduction, if a(k,k) is occupied by a free element c it is interchanged with the largest free element c a(l,l) with l .ge. k. piv is not referenced if c job .eq. 0. c c job integer. c job is an integer that initiates column pivoting. c if job .eq. 0, no pivoting is done. c if job .ne. 0, pivoting is done. c c In this wrapper, job=1. c c on return c c a a contains in its upper half the cholesky factor c of the matrix a as it has been permuted by pivoting. c c piv piv(j) contains the index of the diagonal element c of a that was moved into the j-th position, c provided pivoting was requested. c c info contains the index of the last positive diagonal c element of the cholesky factor. c c for positive definite matrices info = p is the normal return. c for pivoting with positive semidefinite matrices info will c in general be less than p. however, info may be greater than c the rank of a, since rounding error can cause an otherwise zero c element to be positive. indefinite systems will always cause c info to be less than p. c c linpack. this version dated 08/14/78 . c j.j. dongarra and g.w. stewart, argonne national laboratory and c university of maryland. c c c blas daxpy,dswap c fortran dsqrt c c internal variables c integer pu,pl,plp1,i,j,jp,jt,k,kb,km1,kp1,l,maxl double precision temp double precision maxdia logical swapk,negk c pl = 1 pu = 0 info = p job=1 lda=p if (job .eq. 0) go to 160 c c pivoting has been requested. rearrange the c the elements according to piv. c do 70 k = 1, p swapk = piv(k) .gt. 0 negk = piv(k) .lt. 0 piv(k) = k if (negk) piv(k) = -piv(k) if (.not.swapk) go to 60 if (k .eq. pl) go to 50 call dswap(pl-1,a(1,k),1,a(1,pl),1) temp = a(k,k) a(k,k) = a(pl,pl) a(pl,pl) = temp plp1 = pl + 1 if (p .lt. plp1) go to 40 do 30 j = plp1, p if (j .ge. k) go to 10 temp = a(pl,j) a(pl,j) = a(j,k) a(j,k) = temp go to 20 10 continue if (j .eq. k) go to 20 temp = a(k,j) a(k,j) = a(pl,j) a(pl,j) = temp 20 continue 30 continue 40 continue piv(k) = piv(pl) piv(pl) = k 50 continue pl = pl + 1 60 continue 70 continue pu = p if (p .lt. pl) go to 150 do 140 kb = pl, p k = p - kb + pl if (piv(k) .ge. 0) go to 130 piv(k) = -piv(k) if (pu .eq. k) go to 120 call dswap(k-1,a(1,k),1,a(1,pu),1) temp = a(k,k) a(k,k) = a(pu,pu) a(pu,pu) = temp kp1 = k + 1 if (p .lt. kp1) go to 110 do 100 j = kp1, p if (j .ge. pu) go to 80 temp = a(k,j) a(k,j) = a(j,pu) a(j,pu) = temp go to 90 80 continue if (j .eq. pu) go to 90 temp = a(k,j) a(k,j) = a(pu,j) a(pu,j) = temp 90 continue 100 continue 110 continue jt = piv(k) piv(k) = piv(pu) piv(pu) = jt 120 continue pu = pu - 1 130 continue 140 continue 150 continue 160 continue do 270 k = 1, p c c reduction loop. c maxdia = a(k,k) kp1 = k + 1 maxl = k c c determine the pivot element. c if (k .lt. pl .or. k .ge. pu) go to 190 do 180 l = kp1, pu if (a(l,l) .le. maxdia) go to 170 maxdia = a(l,l) maxl = l 170 continue 180 continue 190 continue c c quit if the pivot element is not positive. c if (maxdia .gt. 0.0d0) go to 200 info = k - 1 c ......exit go to 280 200 continue if (k .eq. maxl) go to 210 c c start the pivoting and update piv. c km1 = k - 1 call dswap(km1,a(1,k),1,a(1,maxl),1) a(maxl,maxl) = a(k,k) a(k,k) = maxdia jp = piv(maxl) piv(maxl) = piv(k) piv(k) = jp 210 continue c c reduction step. pivoting is contained across the rows. c work(k) = dsqrt(a(k,k)) a(k,k) = work(k) if (p .lt. kp1) go to 260 do 250 j = kp1, p if (k .eq. maxl) go to 240 if (j .ge. maxl) go to 220 temp = a(k,j) a(k,j) = a(j,maxl) a(j,maxl) = temp go to 230 220 continue if (j .eq. maxl) go to 230 temp = a(k,j) a(k,j) = a(maxl,j) a(maxl,j) = temp 230 continue 240 continue a(k,j) = a(k,j)/work(k) work(j) = a(k,j) temp = -a(k,j) call daxpy(j-k,temp,work(kp1),1,a(kp1,j),1) 250 continue 260 continue 270 continue 280 continue C Zero the lower triangle do i=2,info do j=1,i-1 a(i,j) = 0.0D0 enddo enddo C decrement the pivots. do i=1,p piv(i) = piv(i)-1 enddo return end SUBROUTINE dpotrs_wrap(chol_fac, b, info, n, m, uplo) cf2py double precision dimension(n,n), intent(in) :: chol_fac cf2py integer depend(chol_fac), intent(hide)::n=shape(chol_fac,0) cf2py integer depend(b), intent(hide)::m=shape(b,1) cf2py optional character intent(in):: uplo='U' cf2py integer intent(out)::info cf2py double precision intent(inplace), dimension(n,m)::b cf2py threadsafe DOUBLE PRECISION chol_fac(n,n), b(n,m) INTEGER n, info,m CHARACTER uplo EXTERNAL DPOTRS ! DPOTRS( UPLO, N, NRHS, A, LDA, B, LDB, INFO ) Solves triangular system call DPOTRS(uplo,n,m,chol_fac,n,b,n,info) return ENDpymc-2.2+ds/pymc/calc_utils.py000066400000000000000000000013271204033704200163710ustar00rootroot00000000000000''' Created on Jan 20, 2011 @author: jsalvatier ''' import numpy as np from collections import defaultdict _sts_memory = defaultdict(dict) def sum_to_shape(key1,key2, value, sum_shape): try : axes, lx = _sts_memory[key1][key2] except KeyError: value_shape = np.array(np.shape(value)) sum_shape_expanded = np.zeros(value_shape.size) sum_shape_expanded[0:len(sum_shape)] += np.array(sum_shape) axes = np.where(sum_shape_expanded != value_shape)[0] lx = np.size(axes) _sts_memory[key1][key2] = (axes, lx ) if lx > 0: return np.apply_over_axes(np.sum, value, axes) else: return valuepymc-2.2+ds/pymc/database/000077500000000000000000000000001204033704200154365ustar00rootroot00000000000000pymc-2.2+ds/pymc/database/README.rst000066400000000000000000000233361204033704200171340ustar00rootroot00000000000000----------------- Database Backends ----------------- In the examples seen so far, traces are simply held in memory and discarded once the Python session ends. PyMC provides the means to store these traces on disk, load them back and add additional samples. Internally, this is implemented in what we call *database backends*. Each one of these backends is built from two classes: ``Database`` and ``Trace`` which all present a similar interface to users. PyMC counts seven such backends: ``ram``, ``no_trace``, ``pickle``, ``txt``, ``sqlite``, ``mysql`` and ``hdf5``. In the following, we present the common interface to those backends and a description of each individual backend. Accessing Sampled Data ====================== The recommended way to access data from an MCMC run, irrespective of the database backend, is to use the ``trace`` method:: >>> from pymc.examples import DisasterModel >>> M = pm.MCMC(DisasterModel) >>> M.sample(10) >>> M.trace('e')[:] array([ 2.28320992, 2.28320992, 2.28320992, 2.28320992, 2.28320992, 2.36982455, 2.36982455, 3.1669422 , 3.1669422 , 3.14499489]) ``M.trace('e')`` returns a copy of the ``Trace`` instance belonging to the tallyable object `e`:: >>> M.trace('e') Samples from the trace are obtained using the slice notation ``[]``, similarly to NumPy arrays. By default, ``trace`` returns the samples from the last chain. To return samples from all the chains, set ``chain=None``:: >>> M.sample(5) >>> M.trace('e', chain=None)[:] array([ 2.28320992, 2.28320992, 2.28320992, 2.28320992, 2.28320992, 2.36982455, 2.36982455, 3.1669422 , 3.1669422 , 3.14499489, 3.14499489, 3.14499489, 3.14499489, 2.94672454, 3.10767686]) Saving Data to Disk =================== By default, the database backend selected by the ``MCMC`` sampler is the ``ram`` backend, which simply holds the data in RAM. Now, we create a sampler that, instead, writes data to a pickle file:: >>> M = pm.MCMC(DisasterModel, db='pickle', dbname='Disaster.pickle') >>> M.db >>> M.sample(10) >>> M.db.close() Note that in this particular case, no data is written to disk before the call to ``db.close``. The ``close`` method will flush data to disk and prepare the database for a potential session exit. Closing a Python session without calling ``close`` beforehand is likely to corrupt the database, making the data irretrievable. To simply flush data to disk without closing the database, use the ``commit`` method. Some backends not only have the ability to store the traces, but also the state of the step methods at the end of sampling. This is particularly useful when long warm-up periods are needed to tune the jump parameters. When the database is loaded in a new session, the step methods query the database to fetch the state they were in at the end of the last trace. .. warning:: Check that you ``close`` the database before closing the Python session. Loading Back a Database ======================= To load a file created in a previous session, use the ``load`` function from the appropriate backend:: >>> db = pymc.database.pickle.load('Disaster.pickle') >>> len(db.trace('e')[:]) 10 The ``db`` object also has a ``trace`` method identical to that of ``Sampler``. You can hence inspect the results of a model, even if you don't have the model around. To add a new trace to this file, we need to create an MCMC instance. This time, instead of setting ``db='pickle'``, we will pass the existing ``Database`` instance and sample as usual. A new trace will be appended to the first:: >>> M = MCMC(DisasterModel, db=db) >>> M.sample(5) >>> len(M.trace('e', chain=None)[:]) 15 >>> M.db.close() Backends Description ==================== ram --- Used by default, this backend simply holds a copy in memory, with no output written to disk. This is useful for short runs or testing. For long runs generating large amount of data, using this backend may fill the available memory, forcing the OS to store data in the cache, slowing down all other applications. no_trace -------- This backend simply does not store the trace. This may be useful for testing purposes. txt --- With the ``txt`` backend, the data is written to disk in ASCII files. More precisely, the ``dbname`` argument is used to create a top directory into which chain directories, called ``Chain_<#>``, are created each time ``sample`` is called:: dbname/ Chain_0/ .txt .txt ... Chain_1/ .txt .txt ... ... In each one of these chain directories, files named ``.txt`` are created, storing the values of the variable as rows of text:: # Variable: e # Sample shape: (5,) # Date: 2008-11-18 17:19:13.554188 3.033672373807017486e+00 3.033672373807017486e+00 ... While the ``txt`` backend makes it easy to load data using other applications and programming languages, it is not optimized for speed nor memory efficiency. If you plan on generating and handling large datasets, read on for better options. pickle ------ The ``pickle`` database relies on the ``cPickle`` module to save the traces. Use of this backend is appropriate for small scale, short-lived projects. For longer term or larger projects, the ``pickle`` backend should be avoided since the files it creates might be unreadable across different Python versions. The `pickled` file is a simple dump of a dictionary containing the NumPy arrays storing the traces, as well as the state of the ``Sampler``'s step methods. sqlite ------ The ``sqlite`` backend is based on the python module `sqlite3`_ (a Python 2.5 built-in) . It opens an SQL database named ``dbname``, and creates one table per tallyable objects. The rows of this table store a key, the chain index and the values of the objects:: key (INT), trace (INT), v1 (FLOAT), v2 (FLOAT), v3 (FLOAT) ... The key is autoincremented each time a new row is added to the table, that is, each time ``tally`` is called by the sampler. Note that the ``savestate`` feature is not implemented, that is, the state of the step methods is not stored internally in the database. .. _`sqlite3`: http://www.sqlite.org mysql ----- The ``mysql`` backend depends on the `MySQL`_ library and its python wrapper `MySQLdb`_. Like the ``sqlite`` backend, it creates an SQL database containing one table per tallyable object. The main difference with ``sqlite`` is that it can connect to a remote database, provided the url and port of the host server is given, along with a valid user name and password. These parameters are passed when the ``Sampler`` is instantiated: * ``dbname`` (`string`) The name of the database file. * ``dbuser`` (`string`) The database user name. * ``dbpass`` (`string`) The user password for this database. * ``dbhost`` (`string`) The location of the database host. * ``dbport`` (`int`) The port number to use to reach the database host. * ``dbmode`` {``a``, ``w``} File mode. Use ``a`` to append values, and ``w`` to overwrite an existing database. The ``savestate`` feature is not implemented in the ``mysql`` backend. .. _`MySQL`: http://www.mysql.com/downloads/ .. _`MySQLdb`: http://sourceforge.net/projects/mysql-python hdf5 ---- The ``hdf5`` backend uses `pyTables`_ to save data in binary HDF5 format. The ``hdf5`` database is fast and can store huge traces, far larger than the available RAM. Data can be compressed and decompressed on the fly to reduce the disk footprint. Another feature of this backend is that it can store arbitrary objects. Whereas most of the other backends are limited to numerical values, ``hdf5`` can tally any object that can be pickled, opening the door for powerful and exotic applications (see ``pymc.gp``). The internal structure of an HDF5 file storing both numerical values and arbitrary objects is as follows:: / (root) /chain0/ (Group) 'Chain #0' /chain0/PyMCSamples (Table(N,)) 'PyMC Samples' /chain0/group0 (Group) 'Group storing objects.' /chain0/group0/ (VLArray(N,)) ' samples.' /chain0/group0/ (VLArray(N,)) ' samples.' ... /chain1/ (Group) 'Chain #1' ... All standard numerical values are stored in a ``Table``, while ``objects`` are stored in individual ``VLArrays``. The ``hdf5`` Database takes the following parameters: * ``dbname`` (`string`) Name of the hdf5 file. * ``dbmode`` {``a``, ``w``, ``r``} File mode: ``a``: append, ``w``: overwrite, ``r``: read-only. * ``dbcomplevel`` : (`int` (0-9)) Compression level, 0: no compression. * ``dbcomplib`` (`string`) Compression library (``zlib``, ``bzip2``, ``lzo``) According the the `pyTables`_ manual, `zlib` has a fast decompression, relatively slow compression, and a good compression ratio; `LZO` has a fast compression, but a low compression ratio; and `bzip2` has an excellent compression ratio but requires more CPU. Note that some of these compression algorithms require additional software to work (see the `pyTables`_ manual). Writing a New Backend ===================== It is relatively easy to write a new backend for ``PyMC``. The first step is to look at the ``database.base`` module, which defines barebone ``Database`` and ``Trace`` classes. This module contains documentation on the methods that should be defined to get a working backend. Testing your new backend should be fairly straightforward, since the ``test_database`` module contains a generic test class that can easily be subclassed to check that the basic features required of all backends are implemented and working properly. .. _`pyTables`: http://www.pytables.org/moin pymc-2.2+ds/pymc/database/__init__.py000077500000000000000000000033161204033704200175550ustar00rootroot00000000000000""" ========================== Database backends for PyMC ========================== A typical MCMC run will generate thousands of samples, and some application requires well over 100000 iterations. Keeping all this information in memory can badly strain the performances of PyMC, and users will find their other applications slowing down. Moreover, we generally wish to store all or part of the sampled data for future use. To do so, PyMC offers different storing strategies: - `no_trace` : don't keep track of the samples, - `ram` : keep everything in RAM (default), - `pickle` : put traces in a dictionnary and pickle it once sampling is over. - `txt` : keep everything in RAM, and dump samples in txt files once sampling is completed, - `sqlite` : store data in a sqlite database, - `hdf5` : store data in a hdf5 file, using pytables. Although what happens under the hood is very different from one backend to another, from the user perspective, there is no difference whatsoever. The only thing that will change is the output file (if any) generated by the backend. Writing a new backend --------------------- Each backend is implemented in a file in the database directory. Each one of these files define two classes: Trace and Database. A new backend can easily be implemented by defining new classes and saving them in a file. Look at base.py for skeleton classes, and the other modules for examples. """ __modules__ = ['no_trace', 'txt', 'ram', 'pickle', 'sqlite', 'hdf5', 'hdf52', "__test_import__"] from . import no_trace from . import txt from . import ram from . import pickle try: from . import sqlite except ImportError: pass try: from . import hdf5 except ImportError: pass pymc-2.2+ds/pymc/database/base.py000066400000000000000000000331061204033704200167250ustar00rootroot00000000000000""" Base backend Trace and Database classes from the other modules should Subclass the base classes. Concepts -------- Each backend must define a Trace and a Database class that subclass the base.Trace and base.Database classes. The Model itself is given a `db` attribute, an instance of the Database class. The __init__ method of the Database class does the work of preparing the database. This might mean creating a file, connecting to a remote database server, etc. Right after a Database is instantiated, the Sampler tells it to connect itself the model. This is taken care of by the connect_model method. This method creates Trace objects for all the tallyable pymc objects. These traces are stored in a dictionary called _traces, owned by the Database instance of this Sampler. Previously, the Trace instances were owned by the tallyable variables themselves. As A.P. pointed out, this is problematic if the same object is used in different models, because each new Sampler will overwrite the last Trace instance of the variable. When the `sample` method is called, the Sampler tells the Database to initialize itself. Database then tells all the tallyable objects to initialize themselves. This might mean creating a numpy array, a list, an sqlite table, etc. When the Sampler calls `tally`, it sends a message to the Database to tally its objects. Each object then appends its current value to the given chain. At the end of sampling, the Sampler tells the Database to finalize it's state, and the database relays the finalize call to each Trace object. To get the samples from the database, the Sampler class provides a trace method ``trace(self, name, chain=-1)`` which first sets the db attribute _default_chain to chain and returns the trace instance, so that calling S.trace('early_mean')[:] will return all samples from the last chain. One potential problem with this is that user could simply do ``S.trace('early_mean') = 5`` and erase the Trace object. A read-only dictionary-like class could solve that problem. Some backends require being closed before saving the results. This needs to be done explicitly by the user. """ import pymc import numpy as np import types import sys, traceback, warnings import copy __all__=['Trace', 'Database'] from pymc import six from pymc import utils from pymc.six import print_ class Trace(object): """Base class for Trace objects. Each tallyable pymc object is given a trace attribute, which is a Trace instance. These trace methods are generally called by the Database instance or by the user. """ def __init__(self, name, getfunc=None, db=None): """Create a Trace instance. :Parameters: name : string The trace object name. This name should uniquely identify the pymc variable. getfunc : function A function returning the value to tally. db : Database instance The database owning this Trace. """ self._getfunc = getfunc self.name = name self.db = db self._chain = -1 def _initialize(self, chain, length): """Prepare for tallying. Create a new chain.""" # If this db was loaded from the disk, it may not have its # tallied step methods' getfuncs yet. if self._getfunc is None: self._getfunc = self.db.model._funs_to_tally[self.name] def tally(self, chain): """Appends the object's value to a chain. :Parameters: chain : integer Chain index. """ pass def truncate(self, index, chain): """For backends that preallocate memory, removed the unused memory.""" pass def gettrace(self, burn=0, thin=1, chain=-1, slicing=None): """Return the trace. :Parameters: - burn (int): The number of transient steps to skip. - thin (int): Keep one in thin. - chain (int): The index of the chain to fetch. If None, return all chains. - slicing: A slice, overriding burn and thin assignement. """ warnings.warn('Use Sampler.trace method instead.', DeprecationWarning) # By convention, the __call__ method is assigned to gettrace. __call__ = gettrace def __getitem__(self, i): """Return the trace corresponding to item (or slice) i for the chain defined by self._chain. """ if type(i) == types.SliceType: return self.gettrace(slicing=i, chain=self._chain) else: return self.gettrace(slicing=slice(i,i+1), chain=self._chain) def _finalize(self, chain): """Execute task necessary when tallying is over for this trace.""" pass def length(self, chain=-1): """Return the length of the trace. :Parameters: chain : int or None The chain index. If None, returns the combined length of all chains. """ pass def stats(self, alpha=0.05, start=0, batches=100, chain=None, quantiles=(2.5, 25, 50, 75, 97.5)): """ Generate posterior statistics for node. :Parameters: name : string The name of the tallyable object. alpha : float The alpha level for generating posterior intervals. Defaults to 0.05. start : int The starting index from which to summarize (each) chain. Defaults to zero. batches : int Batch size for calculating standard deviation for non-independent samples. Defaults to 100. chain : int The index for which chain to summarize. Defaults to None (all chains). quantiles : tuple or list The desired quantiles to be calculated. Defaults to (2.5, 25, 50, 75, 97.5). """ try: trace = np.squeeze(np.array(self.db.trace(self.name)(chain=chain), float))[start:] n = len(trace) if not n: print_('Cannot generate statistics for zero-length trace in', self.__name__) return return { 'n': n, 'standard deviation': trace.std(0), 'mean': trace.mean(0), '%s%s HPD interval' % (int(100*(1-alpha)),'%'): utils.hpd(trace, alpha), 'mc error': batchsd(trace, batches), 'quantiles': utils.quantiles(trace, qlist=quantiles) } except: print_('Could not generate output statistics for', self.name) return class Database(object): """Base Database class. The Database job is to create a database on disk and communicate with its Trace objects to tally values. """ def __init__(self, dbname): """Create a Database instance. This method: * Assigns the local Trace class to the __Trace__ attribute. * Assings its name to the __name__ attribute. * Does whatever is necessary to set up the database. :Note: All arguments to __init__ should begin by db: dbname, dbmode, etc. This is critical to avoid clashes between arguments to Sampler and Database. This method should not be subclassed. """ self.__Trace__ = Trace self.__name__ = 'base' self.dbname = dbname self.trace_names = [] # A list of sequences of names of the objects to tally. self._traces = {} # A dictionary of the Trace objects. self.chains = 0 def _initialize(self, funs_to_tally, length=None): """Initialize the tallyable objects. Makes sure a Trace object exists for each variable and then initialize the Traces. :Parameters: funs_to_tally : dict Name- function pairs. length : int The expected length of the chain. Some database may need the argument to preallocate memory. """ for name, fun in six.iteritems(funs_to_tally): if name not in self._traces: self._traces[name] = self.__Trace__(name=name, getfunc=fun, db=self) self._traces[name]._initialize(self.chains, length) self.trace_names.append(funs_to_tally.keys()) self.chains += 1 def tally(self, chain=-1): """Append the current value of all tallyable object. :Parameters: chain : int The index of the chain to append the values to. By default, the values are appended to the last chain. """ chain = range(self.chains)[chain] for name in self.trace_names[chain]: try: self._traces[name].tally(chain) except: cls, inst, tb = sys.exc_info() warnings.warn(""" Error tallying %s, will not try to tally it again this chain. Did you make all the samevariables and step methods tallyable as were tallyable last time you used the database file? Error: %s"""%(name, ''.join(traceback.format_exception(cls, inst, tb)))) self.trace_names[chain].remove(name) def connect_model(self, model): """Link the Database to the Model instance. In case a new database is created from scratch, ``connect_model`` creates Trace objects for all tallyable pymc objects defined in `model`. If the database is being loaded from an existing file, ``connect_model`` restore the objects trace to their stored value. :Parameters: model : pymc.Model instance An instance holding the pymc objects defining a statistical model (stochastics, deterministics, data, ...) """ # Changed this to allow non-Model models. -AP # We could also remove it altogether. -DH if isinstance(model, pymc.Model): self.model = model else: raise AttributeError('Not a Model instance.') # Restore the state of the Model from an existing Database. # The `load` method will have already created the Trace objects. if hasattr(self, '_state_'): names = set() for morenames in self.trace_names: names.update(morenames) for name, fun in six.iteritems(model._funs_to_tally): if name in self._traces: self._traces[name]._getfunc = fun names.discard(name) # if len(names) > 0: # print_("Some objects from the database have not been assigned a getfunc", names) # Create a fresh new state. # We will be able to remove this when we deprecate traces on objects. else: for name, fun in six.iteritems(model._funs_to_tally): if name not in self._traces: self._traces[name] = self.__Trace__(name=name, getfunc=fun, db=self) def _finalize(self, chain=-1): """Finalize the chain for all tallyable objects.""" chain = range(self.chains)[chain] for name in self.trace_names[chain]: self._traces[name]._finalize(chain) self.commit() def truncate(self, index, chain=-1): """Tell the traces to truncate themselves at the given index.""" chain = range(self.chains)[chain] for name in self.trace_names[chain]: self._traces[name].truncate(index, chain) def commit(self): """Flush data to disk.""" pass def close(self): """Close the database.""" self.commit() def savestate(self, state): """Store a dictionnary containing the state of the Model and its StepMethods.""" self._state_ = state def getstate(self): """Return a dictionary containing the state of the Model and its StepMethods.""" return getattr(self, '_state_', {}) def trace(self, name, chain=-1): """Return the trace of a tallyable object stored in the database. :Parameters: name : string The name of the tallyable object. chain : int The trace index. Setting `chain=i` will return the trace created by the ith call to `sample`. """ trace = copy.copy(self._traces[name]) trace._chain = chain return trace def load(dbname): """Return a Database instance from the traces stored on disk. This function should do the following: * Create a Database instance `db`. * Assign to `db` Trace instances corresponding to the pymc tallyable objects that are stored on disk. * Assign to `db` a _state_ attribute storing the stepping methods state. If this is not implemented, simply set db._state_ = {}. After loading a database `db`, we should be able to call the gettrace method of each tallyable object stored in the database. """ pass def batchsd(trace, batches=5): """ Calculates the simulation standard error, accounting for non-independent samples. The trace is divided into batches, and the standard deviation of the batch means is calculated. """ if len(np.shape(trace)) > 1: dims = np.shape(trace) #ttrace = np.transpose(np.reshape(trace, (dims[0], sum(dims[1:])))) ttrace = np.transpose([t.ravel() for t in trace]) return np.reshape([batchsd(t, batches) for t in ttrace], dims[1:]) else: if batches == 1: return np.std(trace)/np.sqrt(len(trace)) try: batched_traces = np.resize(trace, (batches, len(trace)/batches)) except ValueError: # If batches do not divide evenly, trim excess samples resid = len(trace) % batches batched_traces = np.resize(trace[:-resid], (batches, len(trace)/batches)) means = np.mean(batched_traces, 1) return np.std(means)/np.sqrt(batches) pymc-2.2+ds/pymc/database/hdf5.py000066400000000000000000000470201204033704200166410ustar00rootroot00000000000000""" HDF5 database module. Store the traces in an HDF5 array using pytables. Implementation Notes -------------------- This version supports arbitrary objects through ObjectAtom and VLArray constructs. Ordinary numerical objects are stored in a Table. Each chain is stored in an individual group called ``chain#``. Additional Dependencies ----------------------- * HDF5 version 1.6.5, required by pytables. * pytables version 2 and up. """ import numpy as np from numpy import zeros,shape, asarray, hstack, size, dtype import pymc from pymc.database import base, pickle from copy import copy import tables import os, warnings, sys, traceback import warnings from pymc import six __all__ = ['Trace', 'Database', 'load'] class TraceObject(base.Trace): """HDF5 Trace for Objects.""" def __init__(self, name, getfunc=None, db=None, vlarrays=None): """Create a Trace instance. :Parameters: obj : pymc object A Stochastic or Determistic object. name : string The trace object name. This is used only if no `obj` is given. db : Database instance The database owning this Trace. vlarrays : sequence The nodes storing the data for this object. """ base.Trace.__init__(self, name, getfunc=getfunc, db=db) if vlarrays is None: vlarrays = [] self._vlarrays = vlarrays # This should be a dict keyed by chain. def tally(self, chain): """Adds current value to trace""" # try: self._vlarrays[chain].append(self._getfunc()) # except: # print self._vlarrays, chain # raise AttributeError def __getitem__(self, index): """Mimic NumPy indexing for arrays.""" chain = self._chain if chain is not None: vlarrays = [self._vlarrays[chain]] else: vlarrays = self._vlarrays for i, vlarray in enumerate(vlarrays): if i==0: out = np.asarray(vlarray[index]) else: out = np.hstack((out, vlarray[index])) return out def gettrace(self, burn=0, thin=1, chain=-1, slicing=None): """Return the trace (last by default). :Parameters: burn : integer The number of transient steps to skip. thin : integer Keep one in thin. chain : integer The index of the chain to fetch. If None, return all chains. The default is to return the last chain. slicing : slice object A slice overriding burn and thin assignement. """ if chain is not None: vlarrays = [self._vlarrays[chain]] else: vlarrays = self._vlarrays for i, vlarray in enumerate(vlarrays): if slicing is not None: burn, stop, thin = slicing.start, slicing.stop, slicing.step if slicing is None or stop is None: stop = len(vlarray) col = vlarray[burn:stop:thin] if i==0: data = np.asarray(col) else: data = hstack((data, col)) return data __call__ = gettrace def length(self, chain=-1): """Return the length of the trace. :Parameters: chain : int or None The chain index. If None, returns the combined length of all chains. """ if chain is not None: return len(self._vlarrays[chain]) else: return sum(map(len, self._vlarrays)) class Trace(base.Trace): """HDF5 trace Database backend based on the HDF5 format. """ def tally(self, chain): """Adds current value to trace""" self.db._rows[chain][self.name] = self._getfunc() def __getitem__(self, index): """Mimic NumPy indexing for arrays.""" chain = self._chain if chain is not None: tables = [self.db._gettables()[chain],] else: tables = self.db._gettables() out = [] for table in tables: out.append(table.col(self.name)) if np.isscalar(chain): return out[0][index] else: return np.hstack(out)[index] def gettrace(self, burn=0, thin=1, chain=-1, slicing=None): """Return the trace (last by default). :Parameters: burn : integer The number of transient steps to skip. thin : integer Keep one in thin. chain : integer The index of the chain to fetch. If None, return all chains. The default is to return the last chain. slicing : slice object A slice overriding burn and thin assignement. """ if chain is not None: tables = [self.db._gettables()[chain],] else: tables = self.db._gettables() for i,table in enumerate(tables): if slicing is not None: burn, stop, thin = slicing.start, slicing.stop, slicing.step if slicing is None or stop is None: stop = table.nrows col = table.read(start=burn, stop=stop, step=thin, field=self.name) if i == 0: data = np.asarray(col) else: data = hstack((data, col)) return data __call__ = gettrace def hdf5_col(self, chain=-1): """Return a pytables column object. :Parameters: chain : integer The index of the chain. .. note:: This method is specific to the ``hdf5`` backend. """ return self.db._tables[chain].colinstances[self.name] def length(self, chain=-1): """Return the length of the trace. :Parameters: chain : int or None The chain index. If None, returns the combined length of all chains. """ if chain is not None: tables = [self.db._gettables()[chain],] else: tables = self.db._gettables() n = asarray([table.nrows for table in tables]) return n.sum() class Database(pickle.Database): """HDF5 database Create an HDF5 file .h5. Each chain is stored in a group, and the stochastics and deterministics are stored as arrays in each group. """ def __init__(self, dbname, dbmode='a', dbcomplevel=0, dbcomplib='zlib', **kwds): """Create an HDF5 database instance, where samples are stored in tables. :Parameters: dbname : string Name of the hdf5 file. dbmode : {'a', 'w', 'r'} File mode: 'a': append, 'w': overwrite, 'r': read-only. dbcomplevel : integer (0-9) Compression level, 0: no compression. dbcomplib : string Compression library (zlib, bzip2, lzo) :Notes: * zlib has a good compression ratio, although somewhat slow, and reasonably fast decompression. * LZO is a fast compression library offering however a low compression ratio. * bzip2 has an excellent compression ratio but requires more CPU. """ self.__name__ = 'hdf5' self.dbname = dbname self.__Trace__ = Trace self.mode = dbmode self.trace_names = [] # A list of sequences of names of the objects to tally. self._traces = {} # A dictionary of the Trace objects. # Deprecation of complevel and complib # Remove in V2.1 if 'complevel' in kwds: warnings.warn('complevel has been replaced with dbcomplevel.', DeprecationWarning) dbcomplevel = kwds.get('complevel') if 'complib' in kwds: warnings.warn('complib has been replaced with dbcomplib.', DeprecationWarning) dbcomplib = kwds.get('complib') db_exists = os.path.exists(self.dbname) self._h5file = tables.openFile(self.dbname, self.mode) default_filter = tables.Filters(complevel=dbcomplevel, complib=dbcomplib) if self.mode =='r' or (self.mode=='a' and db_exists): self.filter = getattr(self._h5file, 'filters', default_filter) else: self.filter = default_filter self._tables = self._gettables() # This should be a dict keyed by chain. self._rows = len(self._tables) * [None,] # This should be a dict keyed by chain. self._chains = [gr for gr in self._h5file.listNodes("/") if gr._v_name[:5]=='chain'] # This should be a dict keyed by chain. self.chains = len(self._chains) # LOAD LOGIC if self.chains > 0: # Create traces from objects stored in Table. db = self for k in db._tables[-1].colnames: db._traces[k] = Trace(name=k, db=db) setattr(db, k, db._traces[k]) # Walk nodes proceed from top to bottom, so we need to invert # the list to have the chains in chronological order. objects = {} for chain in self._chains: for node in db._h5file.walkNodes(chain, classname='VLArray'): if node._v_name != '_state_': try: objects[node._v_name].append(node) except: objects[node._v_name] = [node,] # Note that the list vlarrays is in reverse order. for k, vlarrays in six.iteritems(objects): db._traces[k] = TraceObject(name=k, db=db, vlarrays=vlarrays) setattr(db, k, db._traces[k]) # Restore table attributes. # This restores the sampler's state for the last chain. table = db._tables[-1] for k in table.attrs._v_attrnamesuser: setattr(db, k, getattr(table.attrs, k)) # Restore group attributes. for k in db._chains[-1]._f_listNodes(): if k.__class__ not in [tables.Table, tables.Group]: setattr(db, k.name, k) varnames = db._tables[-1].colnames+ objects.keys() db.trace_names = db.chains * [varnames,] def connect_model(self, model): """Link the Database to the Model instance. In case a new database is created from scratch, ``connect_model`` creates Trace objects for all tallyable pymc objects defined in `model`. If the database is being loaded from an existing file, ``connect_model`` restore the objects trace to their stored value. :Parameters: model : pymc.Model instance An instance holding the pymc objects defining a statistical model (stochastics, deterministics, data, ...) """ # Changed this to allow non-Model models. -AP if isinstance(model, pymc.Model): self.model = model else: raise AttributeError('Not a Model instance.') # Restore the state of the Model from an existing Database. # The `load` method will have already created the Trace objects. if hasattr(self, '_state_'): names = set() for morenames in self.trace_names: names.update(morenames) for name, fun in six.iteritems(model._funs_to_tally): if name in self._traces: self._traces[name]._getfunc = fun names.remove(name) if len(names) > 0: raise RuntimeError("Some objects from the database have not been assigned a getfunc: %s"% ', '.join(names)) # Create a fresh new state. This is now taken care of in initialize. else: for name, fun in six.iteritems(model._funs_to_tally): if np.array(fun()).dtype is np.dtype('object'): self._traces[name] = TraceObject(name, getfunc=fun, db=self) else: self._traces[name] = Trace(name, getfunc=fun, db=self) def nchains(self): """Return the number of existing chains.""" return len(self._h5file.listNodes('/')) def _initialize(self, funs_to_tally, length): """ Create a group named ``Chain#`` to store all data for this chain. The group contains one pyTables Table, and at least one subgroup called ``group#``. This subgroup holds ObjectAtoms, which can hold pymc objects whose value is not a numerical array. There is too much stuff in here. ObjectAtoms should get initialized """ i = self.chains self._chains.append(self._h5file.createGroup("/", 'chain%d'%i, 'Chain #%d'%i)) current_object_group = self._h5file.createGroup(self._chains[-1], 'group0', 'Group storing objects.') group_counter = 0 object_counter = 0 # Create the Table in the chain# group, and ObjectAtoms in chain#/group#. table_descr = {} for name, fun in six.iteritems(funs_to_tally): arr = asarray(fun()) if arr.dtype is np.dtype('object'): self._traces[name]._vlarrays.append(self._h5file.createVLArray(\ current_object_group, name, \ tables.ObjectAtom(), \ title=name + ' samples.', filters=self.filter)) object_counter += 1 if object_counter % 4096 == 0: group_counter += 1 current_object_group = self._h5file.createGroup(self._chains[-1], \ 'group%d'%group_counter, 'Group storing objects.') else: table_descr[name] = tables.Col.from_dtype(dtype((arr.dtype,arr.shape))) table = self._h5file.createTable(self._chains[-1], \ 'PyMCsamples', \ table_descr, \ title='PyMC samples', \ filters=self.filter, expectedrows=length) self._tables.append(table) self._rows.append(self._tables[-1].row) # Store data objects for object in self.model.observed_stochastics: if object.keep_trace is True: setattr(table.attrs, object.__name__, object.value) # Make sure the variables have a corresponding Trace instance. for name, fun in six.iteritems(funs_to_tally): if name not in self._traces: if np.array(fun()).dtype is np.dtype('object'): self._traces[name] = TraceObject(name, getfunc=fun, db=self) else: self._traces[name] = Trace(name, getfunc=fun, db=self) self._traces[name]._initialize(self.chains, length) self.trace_names.append(funs_to_tally.keys()) self.chains += 1 def tally(self, chain=-1): chain = range(self.chains)[chain] for name in self.trace_names[chain]: try: self._traces[name].tally(chain) except: cls, inst, tb = sys.exc_info() warnings.warn(""" Error tallying %s, will not try to tally it again this chain. Did you make all the samevariables and step methods tallyable as were tallyable last time you used the database file? Error: %s"""%(name, ''.join(traceback.format_exception(cls, inst, tb)))) self.trace_names[chain].remove(name) self._rows[chain].append() self._tables[chain].flush() self._rows[chain] = self._tables[chain].row def _finalize(self, chain=-1): """Close file.""" # add attributes. Computation time. #self._tables[chain].flush() self._h5file.flush() def savestate(self, state, chain=-1): """Store a dictionnary containing the state of the Model and its StepMethods.""" cur_chain = self._chains[chain] if hasattr(cur_chain, '_state_'): cur_chain._state_[0] = state else: s = self._h5file.createVLArray(cur_chain,'_state_',tables.ObjectAtom(),title='The saved state of the sampler',filters=self.filter) s.append(state) self._h5file.flush() def getstate(self, chain=-1): if len(self._chains)==0: return {} elif hasattr(self._chains[chain],'_state_'): if len(self._chains[chain]._state_)>0: return self._chains[chain]._state_[0] else: return {} else: return {} def _model_trace_description(self): """Return a description of the table and the ObjectAtoms to be created. :Returns: table_description : dict A Description of the pyTables table. ObjectAtomsn : dict A in terms of PyTables columns, and a""" D = {} for name, fun in six.iteritems(self.model._funs_to_tally): arr = asarray(fun()) D[name] = tables.Col.from_dtype(dtype((arr.dtype,arr.shape))) return D, {} def _file_trace_description(self): """Return a description of the last trace stored in the database.""" table = self._gettables()[-1][0] return table.description def _check_compatibility(self): """Make sure the next objects to be tallied are compatible with the stored trace.""" stored_descr = self._file_trace_description() try: for k,v in self._model_trace_description(): assert(stored_descr[k][0]==v[0]) except: raise ValueError("The objects to tally are incompatible with the objects stored in the file.") def _gettables(self): """Return a list of hdf5 tables name PyMCsamples. """ groups = self._h5file.listNodes("/") if len(groups) == 0: return [] else: return [gr.PyMCsamples for gr in groups if gr._v_name[:5]=='chain'] def close(self): self._h5file.close() def add_attr(self, name, object, description='', chain=-1, array=False): """Add an attribute to the chain. description may not be supported for every date type. if array is true, create an Array object. """ if not np.isscalar(chain): raise TypeError("chain must be a scalar integer.") table = self._tables[chain] if array is False: table.setAttr(name, object) obj = getattr(table.attrs, name) else: # Create an array in the group if description == '': description = name group = table._g_getparent() self._h5file.createArray(group, name, object, description) obj = getattr(group, name) setattr(self, name, obj) def load(dbname, dbmode='a'): """Load an existing hdf5 database. Return a Database instance. :Parameters: filename : string Name of the hdf5 database to open. mode : 'a', 'r' File mode : 'a': append, 'r': read-only. """ if dbmode == 'w': raise AttributeError("dbmode='w' not allowed for load.") db = Database(dbname, dbmode=dbmode) return db # TODO: Check this. It seems that pickle is pymc.database.pickle, not the pickle module. def save_sampler(sampler): """ Dumps a sampler into its hdf5 database. """ db = sampler.db fnode = tables.filenode.newnode(db._h5file, where='/', name='__sampler__') import pickle pickle.dump(sampler, fnode) def restore_sampler(fname): """ Creates a new sampler from an hdf5 database. """ hf = tables.openFile(fname) fnode = hf.root.__sampler__ import pickle sampler = pickle.load(fnode) return sampler pymc-2.2+ds/pymc/database/no_trace.py000066400000000000000000000013331204033704200176020ustar00rootroot00000000000000### # no_trace database backend # No memory whatsoever of the samples. ### from numpy import zeros,shape from . import base import pymc __all__ = ['Trace', 'Database'] class Trace(base.Trace): """The no-trace backend provides a minimalistic backend where no trace of the values sampled is kept. This may be useful for testing purposes. """ class Database(base.Database): """The no-trace backend provides a minimalistic backend where no trace of the values sampled is kept. This may be useful for testing purposes. """ def __init__(self, dbname): """Get the Trace from the local scope.""" self.__Trace__ = Trace self.__name__ = 'notrace' self.dbname = dbname pymc-2.2+ds/pymc/database/pickle.py000066400000000000000000000044461204033704200172670ustar00rootroot00000000000000""" Pickle backend module Store the trace in a pickle file. Notes ----- Pickle file are not always compatible across different python versions. Users should use this backend only for shortlived projects. """ from . import ram, no_trace, base import os, datetime, numpy import string try: import cPickle as std_pickle except ImportError: import pickle as std_pickle # In Python 3, cPickle is folded into pickle from pymc import six __all__ = ['Trace', 'Database', 'load'] class Trace(ram.Trace): pass class Database(base.Database): """Pickle database backend. Save the trace to a pickle file. """ def __init__(self, dbname=None, dbmode='a'): """Assign a name to the file the database will be saved in. :Parameters: dbname : string Name of the pickle file. dbmode : {'a', 'w'} File mode. Use `a` to append values, and `w` to overwrite an existing file. """ self.__name__ = 'pickle' self.filename = dbname self.__Trace__ = Trace self.trace_names = [] # A list of sequences of names of the objects to tally. self._traces = {} # A dictionary of the Trace objects. self.chains = 0 if os.path.exists(dbname): if dbmode=='w': os.remove(dbname) def commit(self): """Dump traces using cPickle.""" container={} try: for name in self._traces: container[name] = self._traces[name]._trace container['_state_'] = self._state_ file = open(self.filename, 'wb') std_pickle.dump(container, file) file.close() except AttributeError: pass def load(filename): """Load a pickled database. Return a Database instance. """ file = open(filename, 'rb') container = std_pickle.load(file) file.close() db = Database(file.name) chains = 0 funs = set() for k,v in six.iteritems(container): if k == '_state_': db._state_ = v else: db._traces[k] = Trace(name=k, value=v, db=db) setattr(db, k, db._traces[k]) chains = max(chains, len(v)) funs.add(k) db.chains = chains db.trace_names = chains*[list(funs)] return db pymc-2.2+ds/pymc/database/ram.py000066400000000000000000000124061204033704200165720ustar00rootroot00000000000000""" RAM database module Store the trace in memory using NumPy arrays. Implementation Notes -------------------- This is the only backend using preallocated memory. All others simply append values to a stack. It might be worthwhile to use a list instead of a NumPy array to 1. simplify this backend, 2. standardize the `Trace model` and 3. remove the need for a truncate method. We would need to catch MemoryError exceptions though. """ import pymc from numpy import zeros,shape,concatenate, ndarray,dtype from . import base import warnings import numpy as np __all__ = ['Trace', 'Database'] class Trace(base.Trace): """RAM Trace Store the samples in memory. No data is written to disk. """ def __init__(self, name, getfunc=None, db=None, value=None): """Create a Trace instance. :Parameters: name : string The trace object name. This name should uniquely identify the pymc variable. getfunc : function A function returning the value to tally. db : Database instance The database owning this Trace. value : list The list of trace arrays. This is used when loading the Trace from disk.""" if value is None: self._trace = {} self._index = {} else: self._trace = value self._index = dict(zip(value.keys(), map(len, value.values()))) base.Trace.__init__(self, name=name, getfunc=getfunc, db=db) def _initialize(self, chain, length): """Create an array of zeros with shape (length, shape(obj)), where obj is the internal PyMC Stochastic or Deterministic. """ # If this db was loaded from the disk, it may not have its # tallied step methods' getfuncs yet. if self._getfunc is None: self._getfunc = self.db.model._funs_to_tally[self.name] # First, see if the object has an explicit dtype. value = np.array(self._getfunc()) if value.dtype is object: self._trace[chain] = zeros(length, dtype=object) elif value.dtype is not None: self._trace[chain] = zeros ((length,) + shape(value), value.dtype) # Otherwise, if it's an array, read off its value's dtype. elif isinstance(value, ndarray): self._trace[chain] = zeros ((length,) + shape(value), value.dtype) # Otherwise, let numpy type its value. If the value is a scalar, the trace will be of the # corresponding type. Otherwise it'll be an object array. else: self._trace[chain] = zeros ((length,) + shape(value), dtype=value.__class__) self._index[chain] = 0 def tally(self, chain): """Store the object's current value to a chain. :Parameters: chain : integer Chain index. """ value = self._getfunc() try: self._trace[chain][self._index[chain]] = value.copy() except AttributeError: self._trace[chain][self._index[chain]] = value self._index[chain] += 1 def truncate(self, index, chain): """ Truncate the trace array to some index. :Parameters: index : int The index within the chain after which all values will be removed. chain : int The chain index (>=0). """ self._trace[chain] = self._trace[chain][:index] def gettrace(self, burn=0, thin=1, chain=-1, slicing=None): """Return the trace. :Stochastics: - burn (int): The number of transient steps to skip. - thin (int): Keep one in thin. - chain (int): The index of the chain to fetch. If None, return all chains. - slicing: A slice, overriding burn and thin assignement. """ if slicing is None: slicing = slice(burn, None, thin) if chain is not None: if chain < 0: chain = range(self.db.chains)[chain] return self._trace[chain][slicing] else: return concatenate(self._trace.values())[slicing] def __getitem__(self, index): chain = self._chain if chain is None: return concatenate(list(self._trace.values()))[index] else: if chain < 0: chain = range(self.db.chains)[chain] return self._trace[chain][index] __call__ = gettrace def length(self, chain=-1): """Return the length of the trace. :Parameters: chain : int or None The chain index. If None, returns the combined length of all chains. """ if chain is not None: if chain < 0: chain = range(self.db.chains)[chain] return self._trace[chain].shape[0] else: return sum([t.shape[0] for t in self._trace.values()]) class Database(base.Database): """RAM database. Store the samples in memory. No data is written to disk. """ def __init__(self, dbname): """Create a RAM Database instance.""" self.__name__ = 'ram' self.__Trace__ = Trace self.dbname = dbname self.trace_names = [] # A list of sequences of names of the objects to tally. self._traces = {} # A dictionary of the Trace objects. self.chains = 0 pymc-2.2+ds/pymc/database/sqlite.py000077500000000000000000000225401204033704200173170ustar00rootroot00000000000000""" SQLite database backend Store traces from tallyable objects in individual SQL tables. Implementation Notes -------------------- For each object, a table is created with the following format: key (INT), trace (INT), v1 (FLOAT), v2 (FLOAT), v3 (FLOAT) ... For multidimensional objects, ndim>1, eg (2,2) the table has the following format: key (INT), trace (INT), v1_1 (FLOAT), v1_2 (FLOAT), v2_1 (FLOAT), v2_2 (FLOAT) The key is autoincremented each time a new row is added to the table. trace denotes the chain index, and starts at 0. Additional Dependencies ----------------------- sqlite3 Changeset --------- Created by Chris Fonnesbeck on 2007-02-01. Updated by DH on 2007-04-04. DB API changes, October 2008, DH. Added support for multidimensional arrays, DH Oct. 2009 """ # TODO: Add support for integer valued objects. import numpy as np from numpy import zeros, shape, squeeze, transpose import sqlite3 from sqlite3 import OperationalError import pymc from pymc.database import base, pickle, ram import pdb, os, warnings __all__ = ['Trace', 'Database', 'load'] class Trace(base.Trace): """SQLite Trace class.""" def _initialize(self, chain, length): """Create an SQL table. """ if self._getfunc is None: self._getfunc = self.db.model._funs_to_tally[self.name] # Determine size try: self._shape = np.shape(self._getfunc()) except TypeError: self._shape = None self._vstr = ', '.join(var_str(self._shape)) # If the table already exists, exit now. if chain != 0: return # Create the variable name strings. vstr = ', '.join(v + ' FLOAT' for v in var_str(self._shape)) try: query = "create table [%s] (recid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, trace int(5), %s )" % (self.name, vstr) self.db.cur.execute(query) except OperationalError: "Table already exists" return def tally(self, chain): """Adds current value to trace.""" try: # I changed str(x) to '%f'%x to solve a bug appearing due to # locale settings. In french for instance, str prints a comma # instead of a colon to indicate the decimal, which confuses # the database into thinking that there are more values than there # is. A better solution would be to use another delimiter than the # comma. -DH valstring = ', '.join(['%f'%x for x in np.ravel(self._getfunc())]) except: valstring = str(self._getfunc()) # Add value to database query = "INSERT INTO [%s] (recid, trace, %s) values (NULL, %s, %s)" % \ (self.name, self._vstr, chain, valstring) self.db.cur.execute(query) def gettrace(self, burn=0, thin=1, chain=-1, slicing=None): """Return the trace (last by default). Input: - burn (int): The number of transient steps to skip. - thin (int): Keep one in thin. - chain (int): The index of the chain to fetch. If None, return all chains. By default, the last chain is returned. - slicing: A slice, overriding burn and thin assignement. """ # warnings.warn('Use Sampler.trace method instead.', DeprecationWarning) if not slicing: slicing = slice(burn, None, thin) # If chain is None, get the data from all chains. if chain is None: self.db.cur.execute('SELECT * FROM [%s]' % self.name) trace = self.db.cur.fetchall() else: # Deal with negative chains (starting from the end) if chain < 0: chain = range(self.db.chains)[chain] self.db.cur.execute('SELECT * FROM [%s] WHERE trace=%s' % (self.name, chain)) trace = self.db.cur.fetchall() trace = np.array(trace)[:,2:] if len(self._shape) > 1: trace = trace.reshape(-1, *self._shape) return squeeze(trace[slicing]) def __getitem__(self, index): chain = self._chain if chain is None: self.db.cur.execute('SELECT * FROM [%s]' % self.name) trace = self.db.cur.fetchall() else: # Deal with negative chains (starting from the end) if chain < 0: chain = range(self.db.chains)[chain] self.db.cur.execute('SELECT * FROM [%s] WHERE trace=%s' % (self.name, chain)) trace = self.db.cur.fetchall() trace = np.array(trace)[:,2:] if len(self._shape) > 1: trace = trace.reshape(-1, *self._shape) else: trace = np.squeeze(trace) return trace[index] __call__ = gettrace def length(self, chain=-1): """Return the sample length of given chain. If chain is None, return the total length of all chains.""" return len(self.gettrace(chain=chain)) class Database(base.Database): """SQLite database. """ def __init__(self, dbname, dbmode='a'): """Open or create an SQL database. :Parameters: dbname : string The name of the database file. dbmode : {'a', 'w'} File mode. Use `a` to append values, and `w` to overwrite an existing file. """ self.__name__ = 'sqlite' self.dbname = dbname self.__Trace__ = Trace self.trace_names = [] # A list of sequences of names of the objects to tally. self._traces = {} # A dictionary of the Trace objects. if os.path.exists(dbname) and dbmode=='w': os.remove(dbname) self.DB = sqlite3.connect(dbname, check_same_thread=False) self.cur = self.DB.cursor() existing_tables = get_table_list(self.cur) if existing_tables: # Get number of existing chains self.cur.execute('SELECT MAX(trace) FROM [%s]'%existing_tables[0]) self.chains = self.cur.fetchall()[0][0]+1 self.trace_names = self.chains * [existing_tables,] else: self.chains = 0 def commit(self): """Commit updates to database""" self.DB.commit() def close(self, *args, **kwds): """Close database.""" self.cur.close() self.commit() self.DB.close() # TODO: Code savestate and getstate to enable storing of the model's state. # state is a dictionary with two keys: sampler and step_methods. # state['sampler'] is another dictionary containing information about # the sampler's state (_current_iter, _iter, _burn, etc.) # state['step_methods'] is a dictionary with keys refering to ids for # each samplingmethod defined in sampler. # Each id refers to another dictionary containing the state of the # step method. # To do this efficiently, we would need functions that stores and retrieves # a dictionary to and from a sqlite database. Unfortunately, I'm not familiar with # SQL enough to do that without having to read too much SQL documentation # for my taste. def savestate(self, state): """Store a dictionnary containing the state of the Sampler and its StepMethods.""" pass def getstate(self): """Return a dictionary containing the state of the Sampler and its StepMethods.""" return {} def load(dbname): """Load an existing SQLite database. Return a Database instance. """ db = Database(dbname) # Get the name of the objects tables = get_table_list(db.cur) # Create a Trace instance for each object chains = 0 for name in tables: db._traces[name] = Trace(name=name, db=db) db._traces[name]._shape = get_shape(db.cur, name) setattr(db, name, db._traces[name]) db.cur.execute('SELECT MAX(trace) FROM [%s]'%name) chains = max(chains, db.cur.fetchall()[0][0]+1) db.chains=chains db.trace_names = chains * [tables,] db._state_ = {} return db # Copied form Django. def get_table_list(cursor): """Returns a list of table names in the current database.""" # Skip the sqlite_sequence system table used for autoincrement key # generation. cursor.execute(""" SELECT name FROM sqlite_master WHERE type='table' AND NOT name='sqlite_sequence' ORDER BY name""") return [row[0] for row in cursor.fetchall()] def get_shape(cursor, name): """Return the shape of the table ``name``.""" cursor.execute('select * from [%s]'% name) inds = cursor.description[-1][0][1:].split('_') return tuple([int(i) for i in inds]) def var_str(shape): """Return a sequence of strings naming the element of the tallyable object. :Examples: >>> var_str((5,)) ['v1', 'v2', 'v3', 'v4', 'v5'] >>> var_str((2,2)) ['v1_1', 'v1_2', 'v2_1', 'v2_2'] """ if shape in [None, ()]: return ['v1',] size = np.prod(shape) indices = (np.indices(shape) + 1).reshape(-1, size) return ['v'+'_'.join(map(str, i)) for i in zip(*indices)] if shape in [None, ()]: return ['v1',] size = np.prod(shape) indices = (np.indices(shape) + 1).reshape(-1, size) return ['v'+'_'.join(map(str, i)) for i in zip(*indices)] pymc-2.2+ds/pymc/database/txt.py000066400000000000000000000126651204033704200166410ustar00rootroot00000000000000from __future__ import with_statement """ TXT database module Store the traces in ASCII files. For each chain, a directory named `Chain_#` is created. In this directory, one file per tallyable object is created containing the values of the object. Implementation Notes -------------------- The NumPy arrays are saved and loaded using NumPy's `loadtxt` and `savetxt` functions. Changeset --------- Nov. 30, 2007: Implemented load function. DH Oct. 24, 2008: Implemented savestate. Implemented parallel chain tallying. DH Oct. 1, 2009: Added support for multidimensional arrays. """ from . import base, ram import os, datetime, shutil, re import numpy as np from numpy import array import string from pymc import six from pymc.six import print_ __all__ = ['Trace', 'Database', 'load'] CHAIN_NAME = 'Chain_%d' class Trace(ram.Trace): """Txt Trace Class. Store the trace in a ASCII file located in one directory per chain. dbname/ Chain_0/ .txt .txt ... Chain_1/ .txt .txt ... ... """ def _finalize(self, chain): """Write the trace to an ASCII file. :Parameter: chain : int The chain index. """ path = os.path.join(self.db._directory, self.db.get_chains()[chain], self.name+'.txt') arr = self.gettrace(chain=chain) # Following numpy's example. if six.PY3: mode = 'wb' else: mode = 'w' with open(path, mode) as f: f.write(six.b('# Variable: %s\n' % self.name)) f.write(six.b('# Sample shape: %s\n' % str(arr.shape))) f.write(six.b('# Date: %s\n' % datetime.datetime.now())) np.savetxt(f, arr.reshape((-1, arr[0].size)), delimiter=',') class Database(base.Database): """Txt Database class.""" def __init__(self, dbname=None, dbmode='a'): """Create a Txt Database. :Parameters: dbname : string Name of the directory where the traces are stored. dbmode : {a, r, w} Opening mode: a:append, w:write, r:read. """ self.__name__ = 'txt' self._directory = dbname self.__Trace__ = Trace self.mode = dbmode self.trace_names = [] # A list of sequences of names of the objects to tally. self._traces = {} # A dictionary of the Trace objects. self.chains = 0 if os.path.exists(self._directory): if dbmode=='w': shutil.rmtree(self._directory) os.mkdir(self._directory) else: os.mkdir(self._directory) def get_chains(self): """Return an ordered list of the `Chain_#` directories in the db directory.""" chains = [] try: content = os.listdir(self._directory) for c in content: if os.path.isdir(os.path.join(self._directory, c)) and c.startswith(CHAIN_NAME[:-2]): chains.append(c) except: pass chains.sort() return chains def _initialize(self, funs_to_tally, length): """Create folder to store simulation results.""" dir = os.path.join(self._directory, CHAIN_NAME%self.chains) os.mkdir(dir) base.Database._initialize(self, funs_to_tally, length) def savestate(self, state): """Save the sampler's state in a state.txt file.""" oldstate = np.get_printoptions() np.set_printoptions(threshold=1e6) try: with open(os.path.join(self._directory, 'state.txt'), 'w') as f: print_(state, file=f) finally: np.set_printoptions(**oldstate) def load(dirname): """Create a Database instance from the data stored in the directory.""" if not os.path.exists(dirname): raise AttributeError('No txt database named %s'%dirname) db = Database(dirname, dbmode='a') chain_folders = [os.path.join(dirname, c) for c in db.get_chains()] db.chains = len(chain_folders) data = {} for chain, folder in enumerate(chain_folders): files = os.listdir(folder) funnames = funname(files) db.trace_names.append(funnames) for file in files: name = funname(file) if name not in data: data[name] = {} # This could be simplified using "collections.defaultdict(dict)". New in Python 2.5 # Read the shape information with open(os.path.join(folder, file)) as f: f.readline(); shape = eval(f.readline()[16:]) data[name][chain] = np.loadtxt(os.path.join(folder, file), delimiter=',').reshape(shape) f.close() # Create the Traces. for name, values in six.iteritems(data): db._traces[name] = Trace(name=name, value=values, db=db) setattr(db, name, db._traces[name]) # Load the state. statefile = os.path.join(dirname, 'state.txt') if os.path.exists(statefile): with open(statefile, 'r') as f: db._state_ = eval(f.read()) else: db._state_= {} return db def funname(file): """Return variable names from file names.""" if type(file) is str: files = [file] else: files = file bases = [os.path.basename(f) for f in files] names = [os.path.splitext(b)[0] for b in bases] if type(file) is str: return names[0] else: return names pymc-2.2+ds/pymc/datatypes.py000066400000000000000000000040011204033704200162350ustar00rootroot00000000000000from numpy import obj2sctype, ndarray from numpy import bool_ from numpy import byte, short, intc, int_, longlong, intp from numpy import ubyte, ushort, uintc, uint, ulonglong, uintp from numpy import single, float_, longfloat from numpy import csingle, complex_, clongfloat # These are only used for membership tests, but things break if they are sets # rather than lists. TK, Jan 2012. integer_dtypes = [int, uint, byte, short, intc, int_, longlong, intp, ubyte, ushort, uintc, uint, ulonglong, uintp] try: integer_dtypes.append(long) except NameError: pass # long is just int for Python 3 float_dtypes = [float, single, float_, longfloat] complex_dtypes = [complex, csingle, complex_, clongfloat] bool_dtypes = [bool, bool_] def check_type(stochastic): """ type, shape = check_type(stochastic) Checks the type of a stochastic's value. Output value 'type' may be bool, int, float, or complex. Nonnative numpy dtypes are lumped into these categories. Output value 'shape' is () if the stochastic's value is scalar, or a nontrivial tuple otherwise. """ val = stochastic.value if val.__class__ in bool_dtypes: return bool, () elif val.__class__ in integer_dtypes: return int, () elif val.__class__ in float_dtypes: return float, () elif val.__class__ in complex_dtypes: return complex, () elif isinstance(val, ndarray): if obj2sctype(val) in bool_dtypes: return bool, val.shape elif obj2sctype(val) in integer_dtypes: return int, val.shape elif obj2sctype(val) in float_dtypes: return float, val.shape elif obj2sctype(val) in complex_dtypes: return complex, val.shape else: return 'object', val.shape else: return 'object', () continuous_types = [float, complex] def is_continuous(stochastic): dtype, shape = check_type(stochastic) if dtype in continuous_types: return True else: return False pymc-2.2+ds/pymc/decorators.py000066400000000000000000000017151204033704200164150ustar00rootroot00000000000000#------------------------------------------------------------- # Decorators #------------------------------------------------------------- import numpy as np from numpy import inf, random, sqrt import string import inspect import types, copy from . import distributions from .Node import ZeroProbability def deterministic_to_NDarray(arg): if isinstance(arg,proposition5.Deterministic): return arg.value else: return arg def prop(func): """Function decorator for defining property attributes The decorated function is expected to return a dictionary containing one or more of the following pairs: fget - function for getting attribute value fset - function for setting attribute value fdel - function for deleting attribute This can be conveniently constructed by the locals() builtin function; see: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/205183 """ return property(doc=func.__doc__, **func()) pymc-2.2+ds/pymc/diagnostics.py000066400000000000000000000446761204033704200165740ustar00rootroot00000000000000# Convergence diagnostics and model validation import numpy as np import pymc from pymc.utils import autocorr, autocov from copy import copy import pdb from pymc import six from pymc.six import print_ xrange = six.moves.xrange __all__ = ['geweke', 'gelman_rubin', 'raftery_lewis', 'validate', 'discrepancy', 'iat'] def open01(x, limit=1.e-6): """Constrain numbers to (0,1) interval""" try: return np.array([min(max(y, limit), 1.-limit) for y in x]) except TypeError: return min(max(x, limit), 1.-limit) class diagnostic(object): """ This decorator allows for PyMC arguments of various types to be passed to the diagnostic functions. It identifies the type of object and locates its trace(s), then passes the data to the wrapped diagnostic function. """ def __init__(self, all_chains=False): """ Initialize wrapper """ self.all_chains = all_chains def __call__(self, f): def wrapped_f(pymc_obj, *args, **kwargs): # Figure out what type of object it is try: values = {} # First try Model type for variable in pymc_obj._variables_to_tally: if self.all_chains: k = pymc_obj.db.chains data = [variable.trace(chain=i) for i in range(k)] else: data = variable.trace() name = variable.__name__ if kwargs.get('verbose'): print_("\nDiagnostic for %s ..." % name) values[name] = f(data, *args, **kwargs) return values except AttributeError: pass try: # Then try Node type if self.all_chains: k = pymc_obj.trace.db.chains data = [pymc_obj.trace(chain=i) for i in range(k)] else: data = pymc_obj.trace() name = pymc_obj.__name__ return f(data, *args, **kwargs) except (AttributeError,ValueError): pass # If others fail, assume that raw data is passed return f(pymc_obj, *args, **kwargs) wrapped_f.__doc__ = f.__doc__ wrapped_f.__name__ = f.__name__ return wrapped_f def validate(sampler, replicates=20, iterations=10000, burn=5000, thin=1, deterministic=False, db='ram', plot=True, verbose=0): """ Model validation method, following Cook et al. (Journal of Computational and Graphical Statistics, 2006, DOI: 10.1198/106186006X136976). Generates posterior samples based on 'true' parameter values and data simulated from the priors. The quantiles of the parameter values are calculated, based on the samples. If the model is valid, the quantiles should be uniformly distributed over [0,1]. Since this relies on the generation of simulated data, all data stochastics must have a valid random() method for validation to proceed. Parameters ---------- sampler : Sampler An MCMC sampler object. replicates (optional) : int The number of validation replicates (i.e. number of quantiles to be simulated). Defaults to 100. iterations (optional) : int The number of MCMC iterations to be run per replicate. Defaults to 2000. burn (optional) : int The number of burn-in iterations to be run per replicate. Defaults to 1000. thin (optional) : int The thinning factor to be applied to posterior sample. Defaults to 1 (no thinning) deterministic (optional) : bool Flag for inclusion of deterministic nodes in validation procedure. Defaults to False. db (optional) : string The database backend to use for the validation runs. Defaults to 'ram'. plot (optional) : bool Flag for validation plots. Defaults to True. Returns ------- stats : dict Return a dictionary containing tuples with the chi-square statistic and associated p-value for each data stochastic. Notes ----- This function requires SciPy. """ import scipy as sp # Set verbosity for models to zero sampler.verbose = 0 # Specify parameters to be evaluated parameters = sampler.stochastics if deterministic: # Add deterministics to the mix, if requested parameters = parameters | sampler.deterministics # Assign database backend original_backend = sampler.db.__name__ sampler._assign_database_backend(db) # Empty lists for quantiles quantiles = {} if verbose: print_("\nExecuting Cook et al. (2006) validation procedure ...\n") # Loop over replicates for i in range(replicates): # Sample from priors for p in sampler.stochastics: if not p.extended_parents: p.random() # Sample "true" data values for o in sampler.observed_stochastics: # Generate simuated data for data stochastic o.set_value(o.random(), force=True) if verbose: print_("Data for %s is %s" % (o.__name__, o.value)) param_values = {} # Record data-generating parameter values for s in parameters: param_values[s] = s.value try: # Fit models given parameter values sampler.sample(iterations, burn=burn, thin=thin) for s in param_values: if not i: # Initialize dict quantiles[s.__name__] = [] trace = s.trace() q = sum(trace1: return [geweke(y, first, last, intervals) for y in np.transpose(x)] # Filter out invalid intervals if first + last >= 1: raise ValueError("Invalid intervals for Geweke convergence analysis",(first,last)) # Initialize list of z-scores zscores = [] # Last index value end = len(x) - 1 # Calculate starting indices sindices = np.arange(0, end/2, step = int((end / 2) / (intervals-1))) # Loop over start indices for start in sindices: # Calculate slices first_slice = x[start : start + int(first * (end - start))] last_slice = x[int(end - last * (end - start)):] z = (first_slice.mean() - last_slice.mean()) z /= np.sqrt(first_slice.std()**2 + last_slice.std()**2) zscores.append([start, z]) if intervals == None: return zscores[0] else: return zscores # From StatLib -- gibbsit.f @diagnostic() def raftery_lewis(x, q, r, s=.95, epsilon=.001, verbose=1): """ Return the number of iterations needed to achieve a given precision. :Parameters: x : sequence Sampled series. q : float Quantile. r : float Accuracy requested for quantile. s (optional) : float Probability of attaining the requested accuracy (defaults to 0.95). epsilon (optional) : float Half width of the tolerance interval required for the q-quantile (defaults to 0.001). verbose (optional) : int Verbosity level for output (defaults to 1). :Return: nmin : int Minimum number of independent iterates required to achieve the specified accuracy for the q-quantile. kthin : int Skip parameter sufficient to produce a first-order Markov chain. nburn : int Number of iterations to be discarded at the beginning of the simulation, i.e. the number of burn-in iterations. nprec : int Number of iterations not including the burn-in iterations which need to be obtained in order to attain the precision specified by the values of the q, r and s input parameters. kmind : int Minimum skip parameter sufficient to produce an independence chain. :Example: >>> raftery_lewis(x, q=.025, r=.005) :Reference: Raftery, A.E. and Lewis, S.M. (1995). The number of iterations, convergence diagnostics and generic Metropolis algorithms. In Practical Markov Chain Monte Carlo (W.R. Gilks, D.J. Spiegelhalter and S. Richardson, eds.). London, U.K.: Chapman and Hall. See the fortran source file `gibbsit.f` for more details and references. """ if np.rank(x)>1: return [raftery_lewis(y, q, r, s, epsilon, verbose) for y in np.transpose(x)] output = nmin, kthin, nburn, nprec, kmind = pymc.flib.gibbmain(x, q, r, s, epsilon) if verbose: print_("\n========================") print_("Raftery-Lewis Diagnostic") print_("========================") print_() print_("%s iterations required (assuming independence) to achieve %s accuracy with %i percent probability." % (nmin, r, 100*s)) print_() print_("Thinning factor of %i required to produce a first-order Markov chain." % kthin) print_() print_("%i iterations to be discarded at the beginning of the simulation (burn-in)." % nburn) print_() print_("%s subsequent iterations required." % nprec) print_() print_("Thinning factor of %i required to produce an independence chain." % kmind) return output def batch_means(x, f=lambda y:y, theta=.5, q=.95, burn=0): """ TODO: Use Bayesian CI. Returns the half-width of the frequentist confidence interval (q'th quantile) of the Monte Carlo estimate of E[f(x)]. :Parameters: x : sequence Sampled series. Must be a one-dimensional array. f : function The MCSE of E[f(x)] will be computed. theta : float between 0 and 1 The batch length will be set to len(x) ** theta. q : float between 0 and 1 The desired quantile. :Example: >>>batch_means(x, f=lambda x: x**2, theta=.5, q=.95) :Reference: Flegal, James M. and Haran, Murali and Jones, Galin L. (2007). Markov chain Monte Carlo: Can we trust the third significant figure? :Note: Requires SciPy """ try: import scipy from scipy import stats except ImportError: raise ImportError('SciPy must be installed to use batch_means.') x=x[burn:] n = len(x) b = np.int(n**theta) a = n/b t_quant = stats.t.isf(1-q,a-1) Y = np.array([np.mean(f(x[i*b:(i+1)*b])) for i in xrange(a)]) sig = b / (a-1.) * sum((Y - np.mean(f(x))) ** 2) return t_quant * sig / np.sqrt(n) def discrepancy(observed, simulated, expected): """Calculates Freeman-Tukey statistics (Freeman and Tukey 1950) as a measure of discrepancy between observed and r replicates of simulated data. This is a convenient method for assessing goodness-of-fit (see Brooks et al. 2000). D(x|\theta) = \sum_j (\sqrt{x_j} - \sqrt{e_j})^2 :Parameters: observed : Iterable of observed values (size=(n,)) simulated : Iterable of simulated values (size=(r,n)) expected : Iterable of expected values (size=(r,) or (r,n)) :Returns: D_obs : Discrepancy of observed values D_sim : Discrepancy of simulated values """ try: simulated = simulated.astype(float) except AttributeError: simulated = simulated.trace().astype(float) try: expected = expected.astype(float) except AttributeError: expected = expected.trace().astype(float) # Ensure expected values are rxn expected = np.resize(expected, simulated.shape) D_obs = np.sum([(np.sqrt(observed)-np.sqrt(e))**2 for e in expected], 1) D_sim = np.sum([(np.sqrt(s)-np.sqrt(e))**2 for s,e in zip(simulated, expected)], 1) # Print p-value count = sum(s>o for o,s in zip(D_obs,D_sim)) print_('Bayesian p-value: p=%.3f' % (1.*count/len(D_obs))) return D_obs, D_sim @diagnostic(all_chains=True) def gelman_rubin(x): """ Returns estimate of R for a set of traces. The Gelman-Rubin diagnostic tests for lack of convergence by comparing the variance between multiple chains to the variance within each chain. If convergence has been achieved, the between-chain and within-chain variances should be identical. To be most effective in detecting evidence for nonconvergence, each chain should have been initialized to starting values that are dispersed relative to the target distribution. Parameters ---------- x : array-like A two-dimensional array containing the parallel traces (minimum 2) of some stochastic parameter. Returns ------- Rhat : float Return the potential scale reduction factor, :math:`\hat{R}` Notes ----- The diagnostic is computed by: .. math:: \hat{R} = \frac{\hat{V}}{W} where :math:`W` is the within-chain variance and :math:`\hat{V}` is the posterior variance estimate for the pooled traces. This is the potential scale reduction factor, which converges to unity when each of the traces is a sample from the target posterior. Values greater than one indicate that one or more chains have not yet converged. References ---------- Brooks and Gelman (1998) Gelman and Rubin (1992)""" if np.shape(x) < (2,): raise ValueError('Gelman-Rubin diagnostic requires multiple chains.') try: m,n = np.shape(x) except ValueError: return [gelman_rubin(np.transpose(y)) for y in np.transpose(x)] # Calculate between-chain variance B_over_n = np.sum((np.mean(x,1) - np.mean(x))**2)/(m-1) # Calculate within-chain variances W = np.sum([(x[i] - xbar)**2 for i,xbar in enumerate(np.mean(x,1))]) / (m*(n-1)) # (over) estimate of variance s2 = W*(n-1)/n + B_over_n # Pooled posterior variance estimate V = s2 + B_over_n/m # Calculate PSRF R = V/W return R def _find_max_lag(x, rho_limit=0.05, maxmaxlag=20000, verbose=0): """Automatically find an appropriate maximum lag to calculate IAT""" # Fetch autocovariance matrix acv = autocov(x) # Calculate rho rho = acv[0,1]/acv[0,0] lam = -1./np.log(abs(rho)) # Initial guess at 1.5 times lambda (i.e. 3 times mean life) maxlag = int(np.floor(3.*lam)) + 1 # Jump forward 1% of lambda to look for rholimit threshold jump = int(np.ceil(0.01*lam)) + 1 T = len(x) while ((abs(rho) > rho_limit) & (maxlag < min(T/2, maxmaxlag))): acv = autocov(x, maxlag) rho = acv[0,1]/acv[0,0] maxlag += jump # Add 30% for good measure maxlag = int(np.floor(1.3*maxlag)) if maxlag >= min(T/2, maxmaxlag): maxlag = min(min(T/2, maxlag), maxmaxlag) "maxlag fixed to %d" % maxlag return maxlag if maxlag <= 1: print_("maxlag = %d, fixing value to 10" % maxlag) return 10 if verbose: print_("maxlag = %d" % maxlag) return maxlag def _cut_time(gammas): """Support function for iat(). Find cutting time, when gammas become negative.""" for i in range(len(gammas)-1): if not ((gammas[i+1]>0.0) & (gammas[i+1] 0: raise TypeError('Keywords '+ str(kwds.keys()) + ' not recognized. Arguments recognized are ' + str(args_needed)) # Determine size desired for scalar variables. # Notes # ----- # Case | init_val | parents | size | value.shape | bind size # ------------------------------------------------------------------ # 1.1 | None | scalars | None | 1 | 1 # 1.2 | None | scalars | n | n | n # 1.3 | None | n | None | n | 1 # 1.4 | None | n | n(m) | n (Error) | 1 (-) # 2.1 | scalar | scalars | None | 1 | 1 # 2.2 | scalar | scalars | n | n | n # 2.3 | scalar | n | None | n | 1 # 2.4 | scalar | n | n(m) | n (Error) | 1 (-) # 3.1 | n | scalars | None | n | n # 3.2 | n | scalars | n(m) | n (Error) | n (-) # 3.3 | n | n | None | n | 1 # 3.4 | n | n | n(m) | n (Error) | 1 (-) if not mv: shape = arg_dict_out.pop('size') shape = None if shape is None else tuple(np.atleast_1d(shape)) init_val = arg_dict_out['value'] init_val_shape = None if init_val is None else np.shape(init_val) if len(parents) > 0: pv = [np.shape(utils.value(v)) for v in parents.values()] biggest_parent = np.argmax([(np.prod(v) if v else 0) for v in pv]) parents_shape = pv[biggest_parent] # Scalar parents can support any shape. if np.prod(parents_shape) < 1: parents_shape = None else: parents_shape = None def shape_error(): raise ValueError('Shapes are incompatible: value %s, largest parent %s, shape argument %s'%(shape, init_val_shape, parents_shape)) if init_val_shape is not None and shape is not None and init_val_shape != shape: shape_error() given_shape = init_val_shape or shape bindshape = given_shape or parents_shape # Check consistency of bindshape and parents_shape if parents_shape is not None: # Uncomment to leave broadcasting completely up to NumPy's random functions # if bindshape[-np.alen(parents_shape):]!=parents_shape: # Uncomment to limit broadcasting flexibility to what the Fortran likelihoods can handle. if bindshape>> Exponential = stochastic_from_dist('exponential', logp=exponential_like, random=rexponential, dtype=np.float, mv=False) >>> A = Exponential(self_name, value, beta) .. note:: new_dist_class is a more flexible class factory. Also consider subclassing Stochastic directly. :SeeAlso: new_dist_class """ (args, varargs, varkw, defaults) = inspect.getargspec(logp) parent_names = args[1:] try: parents_default = dict(zip(args[-len(defaults):], defaults)) except TypeError: # No parents at all. parents_default = {} name = capitalize(name) # Build docstring from distribution parents_str = '' if parent_names: parents_str = ', '.join(parent_names) + ', ' docstr = name[0]+' = '+name + '(name, '+parents_str+'value=None, observed=False,' if not mv: docstr += ' size=1,' docstr += ' trace=True, rseed=True, doc=None, verbose=-1, debug=False)\n\n' docstr += 'Stochastic variable with '+name+' distribution.\nParents are: '+', '.join(parent_names) + '.\n\n' docstr += 'Docstring of log-probability function:\n' try: docstr += logp.__doc__ except TypeError: pass # This will happen when logp doesn't have a docstring logp=valuewrapper(logp) distribution_arguments = logp.__dict__ wrapped_logp_partial_gradients = {} for parameter, func in six.iteritems(logp_partial_gradients): wrapped_logp_partial_gradients[parameter] = valuewrapper(logp_partial_gradients[parameter], arguments = distribution_arguments) return new_dist_class(dtype, name, parent_names, parents_default, docstr, logp, random, mv, wrapped_logp_partial_gradients) #------------------------------------------------------------- # Light decorators #------------------------------------------------------------- def randomwrap(func): """ Decorator for random value generators Allows passing of sequence of parameters, as well as a size argument. Convention: - If size=1 and the parameters are all scalars, return a scalar. - If size=1, the random variates are 1D. - If the parameters are scalars and size > 1, the random variates are 1D. - If size > 1 and the parameters are sequences, the random variates are aligned as (size, max(length)), where length is the parameters size. :Example: >>> rbernoulli(.1) 0 >>> rbernoulli([.1,.9]) np.asarray([0, 1]) >>> rbernoulli(.9, size=2) np.asarray([1, 1]) >>> rbernoulli([.1,.9], 2) np.asarray([[0, 1], [0, 1]]) """ # Find the order of the arguments. refargs, varargs, varkw, defaults = inspect.getargspec(func) #vfunc = np.vectorize(self.func) npos = len(refargs)-len(defaults) # Number of pos. arg. nkwds = len(defaults) # Number of kwds args. mv = func.__name__[1:] in mv_continuous_distributions + mv_discrete_distributions # Use the NumPy random function directly if this is not a multivariate distribution if not mv: return func def wrapper(*args, **kwds): # First transform keyword arguments into positional arguments. n = len(args) if nkwds > 0: args = list(args) for i,k in enumerate(refargs[n:]): if k in kwds.keys(): args.append(kwds[k]) else: args.append(defaults[n-npos+i]) r = [];s=[];largs=[];nr = args[-1] length = [np.atleast_1d(a).shape[0] for a in args] dimension = [np.atleast_1d(a).ndim for a in args] N = max(length) if len(set(dimension))>2: raise('Dimensions do not agree.') # Make sure all elements are iterable and have consistent lengths, ie # 1 or n, but not m and n. for arg, s in zip(args, length): t = type(arg) arr = np.empty(N, type) if s == 1: arr.fill(arg) elif s == N: arr = np.asarray(arg) else: raise RuntimeError('Arguments size not allowed: %s.' % s) largs.append(arr) if mv and N >1 and max(dimension)>1 and nr>1: raise ValueError('Multivariate distributions cannot take s>1 and multiple values.') if mv: for i, arg in enumerate(largs[:-1]): largs[0] = np.atleast_2d(arg) for arg in zip(*largs): r.append(func(*arg)) size = arg[-1] vec_stochastics = len(r)>1 if mv: if nr == 1: return r[0] else: return np.vstack(r) else: if size > 1 and vec_stochastics: return np.atleast_2d(r).T elif vec_stochastics or size > 1: return np.concatenate(r) else: # Scalar case return r[0][0] wrapper.__doc__ = func.__doc__ wrapper.__name__ = func.__name__ return wrapper def debug_wrapper(func, name): # Wrapper to debug distributions import pdb def wrapper(*args, **kwargs): print_('Debugging inside %s:' % name) print_('\tPress \'s\' to step into function for debugging') print_('\tCall \'args\' to list function arguments') # Set debugging trace pdb.set_trace() # Call function return func(*args, **kwargs) return wrapper #------------------------------------------------------------- # Utility functions #------------------------------------------------------------- def constrain(value, lower=-np.Inf, upper=np.Inf, allow_equal=False): """ Apply interval constraint on stochastic value. """ ok = flib.constrain(value, lower, upper, allow_equal) if ok == 0: raise ZeroProbability def standardize(x, loc=0, scale=1): """ Standardize x Return (x-loc)/scale """ return flib.standardize(x,loc,scale) # ================================== # = vectorize causes memory leaks. = # ================================== # @Vectorize def gammaln(x): """ Logarithm of the Gamma function """ return flib.gamfun(x) def expand_triangular(X,k): """ Expand flattened triangular matrix. """ X = X.tolist() # Unflatten matrix Y = np.asarray([[0] * i + X[i * k - (i * (i - 1)) / 2 : i * k + (k - i)] for i in range(k)]) # Loop over rows for i in range(k): # Loop over columns for j in range(k): Y[j, i] = Y[i, j] return Y # Loss functions absolute_loss = lambda o,e: absolute(o - e) squared_loss = lambda o,e: (o - e)**2 chi_square_loss = lambda o,e: (1.*(o - e)**2)/e loss_functions = {'absolute':absolute_loss, 'squared':squared_loss, 'chi_square':chi_square_loss} def GOFpoints(x,y,expval,loss): # Return pairs of points for GOF calculation return np.sum(np.transpose([loss(x, expval), loss(y, expval)]), 0) def gofwrapper(f, loss_function='squared'): """ Goodness-of-fit decorator function for likelihoods ================================================== Generates goodness-of-fit points for data likelihoods. Wrap function f(*args, **kwds) where f is a likelihood. Assume args = (x, parameter1, parameter2, ...) Before passing the arguments to the function, the wrapper makes sure that the parameters have the same shape as x. """ name = f.__name__[:-5] # Take a snapshot of the main namespace. # Find the functions needed to compute the gof points. expval_func = eval(name+'_expval') random_func = eval('r'+name) def wrapper(*args, **kwds): """ This wraps a likelihood. """ """Return gof points.""" # Calculate loss loss = kwds.pop('gof', loss_functions[loss_function]) # Expected value, given parameters expval = expval_func(*args[1:], **kwds) y = random_func(size=len(args[0]), *args[1:], **kwds) f.gof_points = GOFpoints(args[0], y, expval, loss) """Return likelihood.""" return f(*args, **kwds) # Assign function attributes to wrapper. wrapper.__doc__ = f.__doc__ wrapper.__name__ = f.__name__ wrapper.name = name return wrapper #-------------------------------------------------------- # Statistical distributions # random generator, expval, log-likelihood #-------------------------------------------------------- # Autoregressive lognormal def rarlognormal(a, sigma, rho, size=1): R""" Autoregressive normal random variates. If a is a scalar, generates one series of length size. If a is a sequence, generates size series of the same length as a. """ f = pymc.utils.ar1 if np.isscalar(a): r = f(rho, 0, sigma, size) else: n = len(a) r = [f(rho, 0, sigma, n) for i in range(size)] if size == 1: r = r[0] return a*np.exp(r) def arlognormal_like(x, a, sigma, rho): R""" Autoregressive lognormal log-likelihood. .. math:: x_i & = a_i \exp(e_i) \\ e_i & = \rho e_{i-1} + \epsilon_i where :math:`\epsilon_i \sim N(0,\sigma)`. """ return flib.arlognormal(x, np.log(a), sigma, rho, beta=1) # Bernoulli---------------------------------------------- @randomwrap def rbernoulli(p,size=None): """ Random Bernoulli variates. """ return np.random.random(size)

>> from pymc import bernoulli_like >>> bernoulli_like([0,1,0,1], .4) -2.854232711280291 .. note:: - :math:`E(x)= p` - :math:`Var(x)= p(1-p)` """ return flib.bernoulli(x, p) bernoulli_grad_like = {'p' : flib.bern_grad_p} # Beta---------------------------------------------- @randomwrap def rbeta(alpha, beta, size=None): """ Random beta variates. """ return np.random.beta(alpha, beta,size) def beta_expval(alpha, beta): """ Expected value of beta distribution. """ return 1.0 * alpha / (alpha + beta) def beta_like(x, alpha, beta): R""" Beta log-likelihood. The conjugate prior for the parameter :math:`p` of the binomial distribution. .. math:: f(x \mid \alpha, \beta) = \frac{\Gamma(\alpha + \beta)}{\Gamma(\alpha) \Gamma(\beta)} x^{\alpha - 1} (1 - x)^{\beta - 1} :Parameters: - `x` : 0 < x < 1 - `alpha` : alpha > 0 - `beta` : beta > 0 :Example: >>> from pymc import beta_like >>> beta_like(.4,1,2) 0.182321556793954 .. note:: - :math:`E(X)=\frac{\alpha}{\alpha+\beta}` - :math:`Var(X)=\frac{\alpha \beta}{(\alpha+\beta)^2(\alpha+\beta+1)}` """ # try: # constrain(alpha, lower=0, allow_equal=True) # constrain(beta, lower=0, allow_equal=True) # constrain(x, 0, 1, allow_equal=True) # except ZeroProbability: # return -np.Inf return flib.beta_like(x, alpha, beta) beta_grad_like = {'value' : flib.beta_grad_x, 'alpha' : flib.beta_grad_a, 'beta' : flib.beta_grad_b} # Binomial---------------------------------------------- @randomwrap def rbinomial(n, p, size=None): """ Random binomial variates. """ # return np.random.binomial(n,p,size) return np.random.binomial(np.ravel(n),np.ravel(p),size) def binomial_expval(n, p): """ Expected value of binomial distribution. """ return p*n def binomial_like(x, n, p): R""" Binomial log-likelihood. The discrete probability distribution of the number of successes in a sequence of n independent yes/no experiments, each of which yields success with probability p. .. math:: f(x \mid n, p) = \frac{n!}{x!(n-x)!} p^x (1-p)^{n-x} :Parameters: - `x` : [int] Number of successes, > 0. - `n` : [int] Number of Bernoulli trials, > x. - `p` : Probability of success in each trial, :math:`p \in [0,1]`. .. note:: - :math:`E(X)=np` - :math:`Var(X)=np(1-p)` """ return flib.binomial(x,n,p) binomial_grad_like = {'p' : flib.binomial_gp} # Beta---------------------------------------------- @randomwrap def rbetabin(alpha, beta, n, size=None): """ Random beta-binomial variates. """ phi = np.random.beta(alpha, beta, size) return np.random.binomial(n,phi) def betabin_expval(alpha, beta, n): """ Expected value of beta-binomial distribution. """ return n * alpha / (alpha + beta) def betabin_like(x, alpha, beta, n): R""" Beta-binomial log-likelihood. Equivalent to binomial random variables with probabilities drawn from a :math:`\texttt{Beta}(\alpha,\beta)` distribution. .. math:: f(x \mid \alpha, \beta, n) = \frac{\Gamma(\alpha + \beta)}{\Gamma(\alpha)} \frac{\Gamma(n+1)}{\Gamma(x+1)\Gamma(n-x+1)} \frac{\Gamma(\alpha + x)\Gamma(n+\beta-x)}{\Gamma(\alpha+\beta+n)} :Parameters: - `x` : x=0,1,\ldots,n - `alpha` : alpha > 0 - `beta` : beta > 0 - `n` : n=x,x+1,\ldots :Example: >>> betabin_like(3,1,1,10) -2.3978952727989 .. note:: - :math:`E(X)=n\frac{\alpha}{\alpha+\beta}` - :math:`Var(X)=n\frac{\alpha \beta}{(\alpha+\beta)^2(\alpha+\beta+1)}` """ return flib.betabin_like(x, alpha, beta, n) betabin_grad_like = {'alpha' : flib.betabin_ga, 'beta' : flib.betabin_gb} # Categorical---------------------------------------------- # Note that because categorical elements are not ordinal, there # is no expected value. #@randomwrap def rcategorical(p, size=None): """ Categorical random variates. """ out = flib.rcat(p, np.random.random(size=size)) if sum(out.shape) == 1: return out.squeeze() else: return out def categorical_like(x, p): R""" Categorical log-likelihood. The most general discrete distribution. .. math:: f(x=i \mid p) = p_i for :math:`i \in 0 \ldots k-1`. :Parameters: - `x` : [int] :math:`x \in 0\ldots k-1` - `p` : [float] :math:`p > 0`, :math:`\sum p = 1` """ p = np.atleast_2d(p) if np.any(abs(np.sum(p, 1)-1)>0.0001): print_("Probabilities in categorical_like sum to", np.sum(p, 1)) if np.array(x).dtype != int: #print_("Non-integer values in categorical_like") return -inf return flib.categorical(x, p) # Cauchy---------------------------------------------- @randomwrap def rcauchy(alpha, beta, size=None): """ Returns Cauchy random variates. """ return alpha + beta*np.tan(pi*random_number(size) - pi/2.0) def cauchy_expval(alpha, beta): """ Expected value of cauchy distribution. """ return alpha # In wikipedia, the arguments name are k, x0. def cauchy_like(x, alpha, beta): R""" Cauchy log-likelihood. The Cauchy distribution is also known as the Lorentz or the Breit-Wigner distribution. .. math:: f(x \mid \alpha, \beta) = \frac{1}{\pi \beta [1 + (\frac{x-\alpha}{\beta})^2]} :Parameters: - `alpha` : Location parameter. - `beta` : Scale parameter > 0. .. note:: - Mode and median are at alpha. """ return flib.cauchy(x,alpha,beta) cauchy_grad_like = {'value' : flib.cauchy_grad_x, 'alpha' : flib.cauchy_grad_a, 'beta' : flib.cauchy_grad_b} # Chi square---------------------------------------------- @randomwrap def rchi2(nu, size=None): """ Random :math:`\chi^2` variates. """ return np.random.chisquare(nu, size) def chi2_expval(nu): """ Expected value of Chi-squared distribution. """ return nu def chi2_like(x, nu): R""" Chi-squared :math:`\chi^2` log-likelihood. .. math:: f(x \mid \nu) = \frac{x^{(\nu-2)/2}e^{-x/2}}{2^{\nu/2}\Gamma(\nu/2)} :Parameters: - `x` : > 0 - `nu` : [int] Degrees of freedom ( nu > 0 ) .. note:: - :math:`E(X)=\nu` - :math:`Var(X)=2\nu` """ return flib.gamma(x, 0.5*nu, 1./2) chi2_grad_like = {'value' : lambda x, nu : flib.gamma_grad_x (x, 0.5* nu, 1./2), 'nu' : lambda x, nu : flib.gamma_grad_alpha(x, 0.5* nu, 1./2) * .5} #chi2_grad_like = {'x' : lambda x, nu : (nu / 2 - 1) / x -.5, # 'nu' : flib.chi2_grad_nu } # Degenerate--------------------------------------------- @randomwrap def rdegenerate(k, size=1): """ Random degenerate variates. """ return np.ones(size)*k def degenerate_expval(k): """ Expected value of degenerate distribution. """ return k def degenerate_like(x, k): R""" Degenerate log-likelihood. .. math:: f(x \mid k) = \left\{ \begin{matrix} 1 \text{ if } x = k \\ 0 \text{ if } x \ne k\end{matrix} \right. :Parameters: - `x` : Input value. - `k` : Degenerate value. """ x = np.atleast_1d(x) return sum(np.log([i==k for i in x])) #def degenerate_grad_like(x, k): # R""" # degenerate_grad_like(x, k) # # Degenerate gradient log-likelihood. # # .. math:: # f(x \mid k) = \left\{ \begin{matrix} 1 \text{ if } x = k \\ 0 \text{ if } x \ne k\end{matrix} \right. # # :Parameters: # - `x` : Input value. # - `k` : Degenerate value. # """ # return np.zeros(np.size(x))*k # Dirichlet---------------------------------------------- @randomwrap def rdirichlet(theta, size=1): """ Dirichlet random variates. """ gammas = np.vstack([rgamma(theta,1) for i in xrange(size)]) if size > 1 and np.size(theta) > 1: return (gammas.T/gammas.sum(1))[:-1].T elif np.size(theta)>1: return (gammas[0]/gammas[0].sum())[:-1] else: return 1. def dirichlet_expval(theta): """ Expected value of Dirichlet distribution. """ return theta/np.sum(theta).astype(float) def dirichlet_like(x, theta): R""" Dirichlet log-likelihood. This is a multivariate continuous distribution. .. math:: f(\mathbf{x}) = \frac{\Gamma(\sum_{i=1}^k \theta_i)}{\prod \Gamma(\theta_i)}\prod_{i=1}^{k-1} x_i^{\theta_i - 1} \cdot\left(1-\sum_{i=1}^{k-1}x_i\right)^\theta_k :Parameters: x : (n, k-1) array Array of shape (n, k-1) where `n` is the number of samples and `k` the dimension. :math:`0 < x_i < 1`, :math:`\sum_{i=1}^{k-1} x_i < 1` theta : array An (n,k) or (1,k) array > 0. .. note:: Only the first `k-1` elements of `x` are expected. Can be used as a parent of Multinomial and Categorical nevertheless. """ x = np.atleast_2d(x) theta = np.atleast_2d(theta) if (np.shape(x)[-1]+1) != np.shape(theta)[-1]: raise ValueError('The dimension of x in dirichlet_like must be k-1.') return flib.dirichlet(x,theta) # Exponential---------------------------------------------- @randomwrap def rexponential(beta, size=None): """ Exponential random variates. """ return np.random.exponential(1./beta,size) def exponential_expval(beta): """ Expected value of exponential distribution. """ return 1./beta def exponential_like(x, beta): R""" Exponential log-likelihood. The exponential distribution is a special case of the gamma distribution with alpha=1. It often describes the time until an event. .. math:: f(x \mid \beta) = \beta e^{-\beta x} :Parameters: - `x` : x > 0 - `beta` : Rate parameter (beta > 0). .. note:: - :math:`E(X) = 1/\beta` - :math:`Var(X) = 1/\beta^2` - PyMC's beta is named 'lambda' by Wikipedia, SciPy, Wolfram MathWorld and other sources. """ return flib.gamma(x, 1, beta) exponential_grad_like = {'value' : lambda x, beta : flib.gamma_grad_x(x, 1.0, beta), 'beta' : lambda x, beta : flib.gamma_grad_beta(x, 1.0, beta)} # Exponentiated Weibull----------------------------------- @randomwrap def rexponweib(alpha, k, loc=0, scale=1, size=None): """ Random exponentiated Weibull variates. """ q = np.random.uniform(size=size) r = flib.exponweib_ppf(q,alpha,k) return loc + r*scale def exponweib_expval(alpha, k, loc, scale): # Not sure how we can do this, since the first moment is only # tractable at particular values of k raise NotImplementedError('exponweib_expval has not been implemented yet.') def exponweib_like(x, alpha, k, loc=0, scale=1): R""" Exponentiated Weibull log-likelihood. The exponentiated Weibull distribution is a generalization of the Weibull family. Its value lies in being able to model monotone and non-monotone failure rates. .. math:: f(x \mid \alpha,k,loc,scale) & = \frac{\alpha k}{scale} (1-e^{-z^k})^{\alpha-1} e^{-z^k} z^{k-1} \\ z & = \frac{x-loc}{scale} :Parameters: - `x` : x > 0 - `alpha` : Shape parameter - `k` : k > 0 - `loc` : Location parameter - `scale` : Scale parameter (scale > 0). """ return flib.exponweib(x,alpha,k,loc,scale) """ commented out because tests fail exponweib_grad_like = {'value' : flib.exponweib_gx, 'alpha' : flib.exponweib_ga, 'k' : flib.exponweib_gk, 'loc' : flib.exponweib_gl, 'scale' : flib.exponweib_gs} """ # Gamma---------------------------------------------- @randomwrap def rgamma(alpha, beta, size=None): """ Random gamma variates. """ return np.random.gamma(shape=alpha,scale=1./beta,size=size) def gamma_expval(alpha, beta): """ Expected value of gamma distribution. """ return 1. * np.asarray(alpha) / beta def gamma_like(x, alpha, beta): R""" Gamma log-likelihood. Represents the sum of alpha exponentially distributed random variables, each of which has mean beta. .. math:: f(x \mid \alpha, \beta) = \frac{\beta^{\alpha}x^{\alpha-1}e^{-\beta x}}{\Gamma(\alpha)} :Parameters: - `x` : math:`x \ge 0` - `alpha` : Shape parameter (alpha > 0). - `beta` : Rate parameter (beta > 0). .. note:: - :math:`E(X) = \frac{\alpha}{\beta}` - :math:`Var(X) = \frac{\alpha}{\beta^2}` """ return flib.gamma(x, alpha, beta) gamma_grad_like = {'value' : flib.gamma_grad_x, 'alpha' : flib.gamma_grad_alpha, 'beta' : flib.gamma_grad_beta} # GEV Generalized Extreme Value ------------------------ # Modify parameterization -> Hosking (kappa, xi, alpha) @randomwrap def rgev(xi, mu=0, sigma=1, size=None): """ Random generalized extreme value (GEV) variates. """ q = np.random.uniform(size=size) z = flib.gev_ppf(q,xi) return z*sigma + mu def gev_expval(xi, mu=0, sigma=1): """ Expected value of generalized extreme value distribution. """ return mu - (sigma / xi) + (sigma / xi) * flib.gamfun(1 - xi) def gev_like(x, xi, mu=0, sigma=1): R""" Generalized Extreme Value log-likelihood .. math:: pdf(x \mid \xi,\mu,\sigma) = \frac{1}{\sigma}(1 + \xi \left[\frac{x-\mu}{\sigma}\right])^{-1/\xi-1}\exp{-(1+\xi \left[\frac{x-\mu}{\sigma}\right])^{-1/\xi}} .. math:: \sigma & > 0,\\ x & > \mu-\sigma/\xi \text{ if } \xi > 0,\\ x & < \mu-\sigma/\xi \text{ if } \xi < 0\\ x & \in [-\infty,\infty] \text{ if } \xi = 0 """ return flib.gev(x, xi, mu, sigma) # Geometric---------------------------------------------- # Changed the return value @randomwrap def rgeometric(p, size=None): """ Random geometric variates. """ return np.random.geometric(p, size) def geometric_expval(p): """ Expected value of geometric distribution. """ return 1. / p def geometric_like(x, p): R""" Geometric log-likelihood. The probability that the first success in a sequence of Bernoulli trials occurs on the x'th trial. .. math:: f(x \mid p) = p(1-p)^{x-1} :Parameters: - `x` : [int] Number of trials before first success (x > 0). - `p` : Probability of success on an individual trial, :math:`p \in [0,1]` .. note:: - :math:`E(X)=1/p` - :math:`Var(X)=\frac{1-p}{p^2}` """ return flib.geometric(x, p) geometric_grad_like = {'p' : flib.geometric_gp} # Half Cauchy---------------------------------------------- @randomwrap def rhalf_cauchy(alpha, beta, size=None): """ Returns half-Cauchy random variates. """ return abs(alpha + beta*np.tan(pi*random_number(size) - pi/2.0)) def half_cauchy_expval(alpha, beta): """ Expected value of cauchy distribution is undefined. """ return inf # In wikipedia, the arguments name are k, x0. def half_cauchy_like(x, alpha, beta): R""" Half-Cauchy log-likelihood. Simply the absolute value of Cauchy. .. math:: f(x \mid \alpha, \beta) = \frac{2}{\pi \beta [1 + (\frac{x-\alpha}{\beta})^2]} :Parameters: - `alpha` : Location parameter. - `beta` : Scale parameter (beta > 0). .. note:: - x must be non-negative. """ x = np.atleast_1d(x) if sum(x<0): return -inf return flib.cauchy(x,alpha,beta) + len(x)*np.log(2) # Half-normal---------------------------------------------- @randomwrap def rhalf_normal(tau, size=None): """ Random half-normal variates. """ return abs(np.random.normal(0, np.sqrt(1/tau), size)) def half_normal_expval(tau): """ Expected value of half normal distribution. """ return np.sqrt(2. * pi / np.asarray(tau)) def half_normal_like(x, tau): R""" Half-normal log-likelihood, a normal distribution with mean 0 limited to the domain :math:`x \in [0, \infty)`. .. math:: f(x \mid \tau) = \sqrt{\frac{2\tau}{\pi}}\exp\left\{ {\frac{-x^2 \tau}{2}}\right\} :Parameters: - `x` : :math:`x \ge 0` - `tau` : tau > 0 """ return flib.hnormal(x, tau) half_normal_grad_like = {'value' : flib.hnormal_gradx, 'tau' : flib.hnormal_gradtau} # Hypergeometric---------------------------------------------- def rhypergeometric(n, m, N, size=None): """ Returns hypergeometric random variates. """ if n==0: return np.zeros(size,dtype=int) elif n==N: out = np.empty(size,dtype=int) out.fill(m) return out return np.random.hypergeometric(n, N-n, m, size) def hypergeometric_expval(n, m, N): """ Expected value of hypergeometric distribution. """ return 1. * n * m / N def hypergeometric_like(x, n, m, N): R""" Hypergeometric log-likelihood. Discrete probability distribution that describes the number of successes in a sequence of draws from a finite population without replacement. .. math:: f(x \mid n, m, N) = \frac{\left({ \begin{array}{c} {m} \\ {x} \\ \end{array} }\right)\left({ \begin{array}{c} {N-m} \\ {n-x} \\ \end{array}}\right)}{\left({ \begin{array}{c} {N} \\ {n} \\ \end{array}}\right)} :Parameters: - `x` : [int] Number of successes in a sample drawn from a population. - `n` : [int] Size of sample drawn from the population. - `m` : [int] Number of successes in the population. - `N` : [int] Total number of units in the population. .. note:: :math:`E(X) = \frac{n n}{N}` """ return flib.hyperg(x, n, m, N) # Inverse gamma---------------------------------------------- @randomwrap def rinverse_gamma(alpha, beta,size=None): """ Random inverse gamma variates. """ return 1. / np.random.gamma(shape=alpha, scale=1./beta, size=size) def inverse_gamma_expval(alpha, beta): """ Expected value of inverse gamma distribution. """ return 1. * np.asarray(beta) / (alpha-1.) def inverse_gamma_like(x, alpha, beta): R""" Inverse gamma log-likelihood, the reciprocal of the gamma distribution. .. math:: f(x \mid \alpha, \beta) = \frac{\beta^{\alpha}}{\Gamma(\alpha)} x^{-\alpha - 1} \exp\left(\frac{-\beta}{x}\right) :Parameters: - `x` : x > 0 - `alpha` : Shape parameter (alpha > 0). - `beta` : Scale parameter (beta > 0). .. note:: :math:`E(X)=\frac{\beta}{\alpha-1}` for :math:`\alpha > 1` :math:`Var(X)=\frac{\beta^2}{(\alpha-1)^2(\alpha)}` for :math:`\alpha > 2` """ return flib.igamma(x, alpha, beta) inverse_gamma_grad_like = {'value' : flib.igamma_grad_x, 'alpha' : flib.igamma_grad_alpha, 'beta' : flib.igamma_grad_beta} # Inverse Wishart--------------------------------------------------- # def rinverse_wishart(n, C): # """ # Return an inverse Wishart random matrix. # :Parameters: # - `n` : [int] Degrees of freedom (n > 0). # - `C` : Symmetric and positive definite scale matrix # """ # wi = rwishart(n, np.asmatrix(C).I).I # flib.symmetrize(wi) # return wi # def inverse_wishart_expval(n, C): # """ # Expected value of inverse Wishart distribution. # :Parameters: # - `n` : [int] Degrees of freedom (n > 0). # - `C` : Symmetric and positive definite scale matrix # """ # return np.asarray(C)/(n-len(C)-1) # def inverse_wishart_like(X, n, C): # R""" # Inverse Wishart log-likelihood. The inverse Wishart distribution # is the conjugate prior for the covariance matrix of a multivariate # normal distribution. # .. math:: # f(X \mid n, T) = \frac{{\mid T \mid}^{n/2}{\mid X # \mid}^{-(n+k+1)/2} \exp\left\{ -\frac{1}{2} Tr(TX^{-1}) # \right\}}{2^{nk/2} \Gamma_p(n/2)} # where :math:`k` is the rank of X. # :Parameters: # - `X` : Symmetric, positive definite matrix. # - `n` : [int] Degrees of freedom (n > 0). # - `C` : Symmetric and positive definite scale matrix # .. note:: # Step method MatrixMetropolis will preserve the symmetry of # Wishart variables. # """ # return flib.blas_inv_wishart(X, n, C) # def rinverse_wishart_prec(n, Tau): # """ # Return an inverse Wishart random matrix. # :Parameters: # - `n` : [int] Degrees of freedom (n > 0). # - `Tau` : Symmetric and positive definite precision matrix # """ # wi = rwishart(n, np.asmatrix(Tau)).I # flib.symmetrize(wi) # return wi # def inverse_wishart_prec_expval(X, n, Tau): # """ # Expected value of inverse Wishart distribution. # :Parameters: # - `n` : [int] Degrees of freedom (n > 0). # - `Tau` : Symmetric and positive definite precision matrix # """ # return inverse_wishart_like(X, n, inverse(Tau)) # def inverse_wishart_prec_like(X, n, Tau): # """ # Inverse Wishart log-likelihood # For an alternative parameterization based on :math:`C=Tau^{-1}`, see # `inverse_wishart_like`. # :Parameters: # - `X` : Symmetric, positive definite matrix. # - `n` : [int] Degrees of freedom (n > 0). # - `Tau` : Symmetric and positive definite precision matrix # """ # return inverse_wishart_like(X, n, inverse(Tau)) # Double exponential (Laplace)-------------------------------------------- @randomwrap def rlaplace(mu, tau, size=None): """ Laplace (double exponential) random variates. """ u = np.random.uniform(-0.5, 0.5, size) return mu - np.sign(u)*np.log(1 - 2*np.abs(u))/tau rdexponential = rlaplace def laplace_expval(mu, tau): """ Expected value of Laplace (double exponential) distribution. """ return mu dexponential_expval = laplace_expval def laplace_like(x, mu, tau): R""" Laplace (double exponential) log-likelihood. The Laplace (or double exponential) distribution describes the difference between two independent, identically distributed exponential events. It is often used as a heavier-tailed alternative to the normal. .. math:: f(x \mid \mu, \tau) = \frac{\tau}{2}e^{-\tau |x-\mu|} :Parameters: - `x` : :math:`-\infty < x < \infty` - `mu` : Location parameter :math: `-\infty < mu < \infty` - `tau` : Scale parameter :math:`\tau > 0` .. note:: - :math:`E(X) = \mu` - :math:`Var(X) = \frac{2}{\tau^2}` """ return flib.gamma(np.abs(x-mu), 1, tau) - np.log(2) laplace_grad_like = {'value' : lambda x, mu, tau: flib.gamma_grad_x(np.abs(x- mu), 1, tau) * np.sign(x - mu), 'mu' : lambda x, mu, tau: -flib.gamma_grad_x(np.abs(x- mu), 1, tau) * np.sign(x - mu), 'tau' : lambda x, mu, tau: flib.gamma_grad_beta(np.abs(x- mu), 1, tau)} dexponential_like = laplace_like dexponential_grad_like = laplace_grad_like # Logistic----------------------------------- @randomwrap def rlogistic(mu, tau, size=None): """ Logistic random variates. """ u = np.random.random(size) return mu + np.log(u/(1-u))/tau def logistic_expval(mu, tau): """ Expected value of logistic distribution. """ return mu def logistic_like(x, mu, tau): R""" Logistic log-likelihood. The logistic distribution is often used as a growth model; for example, populations, markets. Resembles a heavy-tailed normal distribution. .. math:: f(x \mid \mu, tau) = \frac{\tau \exp(-\tau[x-\mu])}{[1 + \exp(-\tau[x-\mu])]^2} :Parameters: - `x` : :math:`-\infty < x < \infty` - `mu` : Location parameter :math:`-\infty < mu < \infty` - `tau` : Scale parameter (tau > 0) .. note:: - :math:`E(X) = \mu` - :math:`Var(X) = \frac{\pi^2}{3\tau^2}` """ return flib.logistic(x, mu, tau) # Lognormal---------------------------------------------- @randomwrap def rlognormal(mu, tau,size=None): """ Return random lognormal variates. """ return np.random.lognormal(mu, np.sqrt(1./tau),size) def lognormal_expval(mu, tau): """ Expected value of log-normal distribution. """ return np.exp(mu + 1./2/tau) def lognormal_like(x, mu, tau): R""" Log-normal log-likelihood. Distribution of any random variable whose logarithm is normally distributed. A variable might be modeled as log-normal if it can be thought of as the multiplicative product of many small independent factors. .. math:: f(x \mid \mu, \tau) = \sqrt{\frac{\tau}{2\pi}}\frac{ \exp\left\{ -\frac{\tau}{2} (\ln(x)-\mu)^2 \right\}}{x} :Parameters: - `x` : x > 0 - `mu` : Location parameter. - `tau` : Scale parameter (tau > 0). .. note:: :math:`E(X)=e^{\mu+\frac{1}{2\tau}}` :math:`Var(X)=(e^{1/\tau}-1)e^{2\mu+\frac{1}{\tau}}` """ return flib.lognormal(x,mu,tau) lognormal_grad_like = {'value' : flib.lognormal_gradx, 'mu' : flib.lognormal_gradmu, 'tau' : flib.lognormal_gradtau} # Multinomial---------------------------------------------- #@randomwrap def rmultinomial(n,p,size=None): """ Random multinomial variates. """ # Leaving size=None as the default means return value is 1d array # if not specified-- nicer. # Single value for p: if len(np.shape(p))==1: return np.random.multinomial(n,p,size) # Multiple values for p: if np.isscalar(n): n = n * np.ones(np.shape(p)[0],dtype=np.int) out = np.empty(np.shape(p)) for i in xrange(np.shape(p)[0]): out[i,:] = np.random.multinomial(n[i],p[i,:],size) return out def multinomial_expval(n,p): """ Expected value of multinomial distribution. """ return np.asarray([pr * n for pr in p]) def multinomial_like(x, n, p): R""" Multinomial log-likelihood. Generalization of the binomial distribution, but instead of each trial resulting in "success" or "failure", each one results in exactly one of some fixed finite number k of possible outcomes over n independent trials. 'x[i]' indicates the number of times outcome number i was observed over the n trials. .. math:: f(x \mid n, p) = \frac{n!}{\prod_{i=1}^k x_i!} \prod_{i=1}^k p_i^{x_i} :Parameters: x : (ns, k) int Random variable indicating the number of time outcome i is observed. :math:`\sum_{i=1}^k x_i=n`, :math:`x_i \ge 0`. n : int Number of trials. p : (k,) Probability of each one of the different outcomes. :math:`\sum_{i=1}^k p_i = 1)`, :math:`p_i \ge 0`. .. note:: - :math:`E(X_i)=n p_i` - :math:`Var(X_i)=n p_i(1-p_i)` - :math:`Cov(X_i,X_j) = -n p_i p_j` - If :math: `\sum_i p_i < 0.999999` a log-likelihood value of -inf will be returned. """ # flib expects 2d arguments. Do we still want to support multiple p # values along realizations ? x = np.atleast_2d(x) p = np.atleast_2d(p) return flib.multinomial(x, n, p) # Multivariate hypergeometric------------------------------ def rmultivariate_hypergeometric(n, m, size=None): """ Random multivariate hypergeometric variates. Parameters: - `n` : Number of draws. - `m` : Number of items in each categoy. """ N = len(m) urn = np.repeat(np.arange(N), m) if size: draw = np.array([[urn[i] for i in np.random.permutation(len(urn))[:n]] for j in range(size)]) r = [[np.sum(draw[j]==i) for i in range(len(m))] for j in range(size)] else: draw = np.array([urn[i] for i in np.random.permutation(len(urn))[:n]]) r = [np.sum(draw==i) for i in range(len(m))] return np.asarray(r) def multivariate_hypergeometric_expval(n, m): """ Expected value of multivariate hypergeometric distribution. Parameters: - `n` : Number of draws. - `m` : Number of items in each categoy. """ m= np.asarray(m, float) return n * (m / m.sum()) def multivariate_hypergeometric_like(x, m): R""" Multivariate hypergeometric log-likelihood Describes the probability of drawing x[i] elements of the ith category, when the number of items in each category is given by m. .. math:: \frac{\prod_i \left({ \begin{array}{c} {m_i} \\ {x_i} \\ \end{array}}\right)}{\left({ \begin{array}{c} {N} \\ {n} \\ \end{array}}\right)} where :math:`N = \sum_i m_i` and :math:`n = \sum_i x_i`. :Parameters: - `x` : [int sequence] Number of draws from each category, (x < m). - `m` : [int sequence] Number of items in each categoy. """ return flib.mvhyperg(x, m) # Multivariate normal-------------------------------------- def rmv_normal(mu, tau, size=1): """ Random multivariate normal variates. """ sig = np.linalg.cholesky(tau) mu_size = np.shape(mu) if size==1: out = np.random.normal(size=mu_size) try: flib.dtrsm_wrap(sig , out, 'L', 'T', 'L', 1.) except: out = np.linalg.solve(sig, out) out+=mu return out else: if not hasattr(size,'__iter__'): size = (size,) tot_size = np.prod(size) out = np.random.normal(size = (tot_size,) + mu_size) for i in xrange(tot_size): try: flib.dtrsm_wrap(sig , out[i,:], 'L', 'T', 'L', 1.) except: out[i,:] = np.linalg.solve(sig, out[i,:]) out[i,:] += mu return out.reshape(size+mu_size) def mv_normal_expval(mu, tau): """ Expected value of multivariate normal distribution. """ return mu def mv_normal_like(x, mu, tau): R""" Multivariate normal log-likelihood .. math:: f(x \mid \pi, T) = \frac{|T|^{1/2}}{(2\pi)^{1/2}} \exp\left\{ -\frac{1}{2} (x-\mu)^{\prime}T(x-\mu) \right\} :Parameters: - `x` : (n,k) - `mu` : (k) Location parameter sequence. - `Tau` : (k,k) Positive definite precision matrix. .. seealso:: :func:`mv_normal_chol_like`, :func:`mv_normal_cov_like` """ # TODO: Vectorize in Fortran if len(np.shape(x))>1: return np.sum([flib.prec_mvnorm(r,mu,tau) for r in x]) else: return flib.prec_mvnorm(x,mu,tau) # Multivariate normal, parametrized with covariance--------------------------- def rmv_normal_cov(mu, C, size=1): """ Random multivariate normal variates. """ mu_size = np.shape(mu) if size==1: return np.random.multivariate_normal(mu, C, size).reshape(mu_size) else: return np.random.multivariate_normal(mu, C, size).reshape((size,)+mu_size) def mv_normal_cov_expval(mu, C): """ Expected value of multivariate normal distribution. """ return mu def mv_normal_cov_like(x, mu, C): R""" Multivariate normal log-likelihood parameterized by a covariance matrix. .. math:: f(x \mid \pi, C) = \frac{1}{(2\pi|C|)^{1/2}} \exp\left\{ -\frac{1}{2} (x-\mu)^{\prime}C^{-1}(x-\mu) \right\} :Parameters: - `x` : (n,k) - `mu` : (k) Location parameter. - `C` : (k,k) Positive definite covariance matrix. .. seealso:: :func:`mv_normal_like`, :func:`mv_normal_chol_like` """ # TODO: Vectorize in Fortran if len(np.shape(x))>1: return np.sum([flib.cov_mvnorm(r,mu,C) for r in x]) else: return flib.cov_mvnorm(x,mu,C) # Multivariate normal, parametrized with Cholesky factorization.---------- def rmv_normal_chol(mu, sig, size=1): """ Random multivariate normal variates. """ mu_size = np.shape(mu) if size==1: out = np.random.normal(size=mu_size) try: flib.dtrmm_wrap(sig , out, 'L', 'N', 'L', 1.) except: out = np.dot(sig, out) out+=mu return out else: if not hasattr(size,'__iter__'): size = (size,) tot_size = np.prod(size) out = np.random.normal(size = (tot_size,) + mu_size) for i in xrange(tot_size): try: flib.dtrmm_wrap(sig , out[i,:], 'L', 'N', 'L', 1.) except: out[i,:] = np.dot(sig, out[i,:]) out[i,:] += mu return out.reshape(size+mu_size) def mv_normal_chol_expval(mu, sig): """ Expected value of multivariate normal distribution. """ return mu def mv_normal_chol_like(x, mu, sig): R""" Multivariate normal log-likelihood. .. math:: f(x \mid \pi, \sigma) = \frac{1}{(2\pi)^{1/2}|\sigma|)} \exp\left\{ -\frac{1}{2} (x-\mu)^{\prime}(\sigma \sigma^{\prime})^{-1}(x-\mu) \right\} :Parameters: - `x` : (n,k) - `mu` : (k) Location parameter. - `sigma` : (k,k) Lower triangular matrix. .. seealso:: :func:`mv_normal_like`, :func:`mv_normal_cov_like` """ # TODO: Vectorize in Fortran if len(np.shape(x))>1: return np.sum([flib.chol_mvnorm(r,mu,sig) for r in x]) else: return flib.chol_mvnorm(x,mu,sig) # Negative binomial---------------------------------------- @randomwrap def rnegative_binomial(mu, alpha, size=None): """ Random negative binomial variates. """ # Using gamma-poisson mixture rather than numpy directly # because numpy apparently rounds mu = np.asarray(mu, dtype=float) pois_mu = np.random.gamma(alpha, mu/alpha, size) return np.random.poisson(pois_mu, size) # return np.random.negative_binomial(alpha, alpha / (mu + alpha), size) def negative_binomial_expval(mu, alpha): """ Expected value of negative binomial distribution. """ return mu def negative_binomial_like(x, mu, alpha): R""" Negative binomial log-likelihood. The negative binomial distribution describes a Poisson random variable whose rate parameter is gamma distributed. PyMC's chosen parameterization is based on this mixture interpretation. .. math:: f(x \mid \mu, \alpha) = \frac{\Gamma(x+\alpha)}{x! \Gamma(\alpha)} (\alpha/(\mu+\alpha))^\alpha (\mu/(\mu+\alpha))^x :Parameters: - `x` : Input data (x > 0). - `mu` : mu > 0 - `alpha` : alpha > 0 .. note:: - :math:`E[x]=\mu` - In Wikipedia's parameterization, :math:`r=\alpha` :math:`p=\alpha/(\mu+\alpha)` :math:`\mu=r(1-p)/p` """ alpha = np.array(alpha) if (alpha > 1e10).any(): if (alpha > 1e10).all(): # Return Poisson when alpha gets very large return flib.poisson(x, mu) # Split big and small dispersion values big = alpha > 1e10 return flib.poisson(x[big], mu[big]) + flib.negbin2(x[big-True], mu[big-True], alpha[big-True]) return flib.negbin2(x, mu, alpha) negative_binomial_grad_like = {'mu' : flib.negbin2_gmu, 'alpha' : flib.negbin2_ga} # Normal--------------------------------------------------- @randomwrap def rnormal(mu, tau,size=None): """ Random normal variates. """ return np.random.normal(mu, 1./np.sqrt(tau), size) def normal_expval(mu, tau): """ Expected value of normal distribution. """ return mu def normal_like(x, mu, tau): R""" Normal log-likelihood. .. math:: f(x \mid \mu, \tau) = \sqrt{\frac{\tau}{2\pi}} \exp\left\{ -\frac{\tau}{2} (x-\mu)^2 \right\} :Parameters: - `x` : Input data. - `mu` : Mean of the distribution. - `tau` : Precision of the distribution, which corresponds to :math:`1/\sigma^2` (tau > 0). .. note:: - :math:`E(X) = \mu` - :math:`Var(X) = 1/\tau` """ # try: # constrain(tau, lower=0) # except ZeroProbability: # return -np.Inf return flib.normal(x, mu, tau) def t_normal_grad_x(x, mu, tau): return flib.normal_grad_x(x,mu, tau) def t_normal_grad_mu(x, mu, tau): return flib.normal_grad_mu(x,mu, tau) def t_normal_grad_tau(x, mu, tau): return flib.normal_grad_tau(x,mu, tau) normal_grad_like = {'value' : t_normal_grad_x, 'mu' : t_normal_grad_mu, 'tau' : t_normal_grad_tau} #normal_grad_like = {'x' : flib.normal_grad_x, # 'mu' : flib.normal_grad_mu, # 'tau' : flib.normal_grad_tau} # von Mises-------------------------------------------------- @randomwrap def rvon_mises(mu, kappa, size=None): """ Random von Mises variates. """ # TODO: Just return straight from numpy after release 1.3 return (np.random.mtrand.vonmises(mu, kappa, size) + np.pi)%(2.*np.pi)-np.pi def von_mises_expval(mu, kappa): """ Expected value of von Mises distribution. """ return mu def von_mises_like(x, mu, kappa): R""" von Mises log-likelihood. .. math:: f(x \mid \mu, k) = \frac{e^{k \cos(x - \mu)}}{2 \pi I_0(k)} where `I_0` is the modified Bessel function of order 0. :Parameters: - `x` : Input data. - `mu` : Mean of the distribution. - `kappa` : Dispersion of the distribution .. note:: - :math:`E(X) = \mu` """ return flib.vonmises(x, mu, kappa) # Pareto--------------------------------------------------- @randomwrap def rpareto(alpha, m, size=None): """ Random Pareto variates. """ return m / (random_number(size)**(1./alpha)) def pareto_expval(alpha, m): """ Expected value of Pareto distribution. """ if alpha <= 1: return inf return alpha*m/(alpha-1) def pareto_like(x, alpha, m): R""" Pareto log-likelihood. The Pareto is a continuous, positive probability distribution with two parameters. It is often used to characterize wealth distribution, or other examples of the 80/20 rule. .. math:: f(x \mid \alpha, m) = \frac{\alpha m^{\alpha}}{x^{\alpha+1}} :Parameters: - `x` : Input data (x > m) - `alpha` : Shape parameter (alpha>0) - `m` : Scale parameter (m>0) .. note:: - :math:`E(x)=\frac{\alpha m}{\alpha-1} if \alpha > 1` - :math:`Var(x)=\frac{m^2 \alpha}{(\alpha-1)^2(\alpha-2)} if \alpha > 2` """ return flib.pareto(x, alpha, m) # Truncated Pareto--------------------------------------------------- @randomwrap def rtruncated_pareto(alpha, m, b, size=None): """ Random bounded Pareto variates. """ u = random_number(size) return (-(u*b**alpha - u*m**alpha - b**alpha)/(b**alpha * m**alpha))**(-1./alpha) def truncated_pareto_expval(alpha, m, b): """ Expected value of truncated Pareto distribution. """ if alpha <= 1: return inf part1 = (m**alpha)/(1. - (m/b)**alpha) part2 = 1.*alpha/(alpha-1) part3 = (1./(m**(alpha-1)) - 1./(b**(alpha-1.))) return part1*part2*part3 def truncated_pareto_like(x, alpha, m, b): R""" Truncated Pareto log-likelihood. The Pareto is a continuous, positive probability distribution with two parameters. It is often used to characterize wealth distribution, or other examples of the 80/20 rule. .. math:: f(x \mid \alpha, m, b) = \frac{\alpha m^{\alpha} x^{-\alpha}}{1-(m/b)**{\alpha}} :Parameters: - `x` : Input data (x > m) - `alpha` : Shape parameter (alpha>0) - `m` : Scale parameter (m>0) - `b` : Upper bound (b>m) """ return flib.truncated_pareto(x, alpha, m, b) # Poisson-------------------------------------------------- @randomwrap def rpoisson(mu, size=None): """ Random poisson variates. """ return np.random.poisson(mu,size) def poisson_expval(mu): """ Expected value of Poisson distribution. """ return mu def poisson_like(x,mu): R""" Poisson log-likelihood. The Poisson is a discrete probability distribution. It is often used to model the number of events occurring in a fixed period of time when the times at which events occur are independent. The Poisson distribution can be derived as a limiting case of the binomial distribution. .. math:: f(x \mid \mu) = \frac{e^{-\mu}\mu^x}{x!} :Parameters: - `x` : [int] :math:`x \in {0,1,2,...}` - `mu` : Expected number of occurrences during the given interval, :math:`\mu \geq 0`. .. note:: - :math:`E(x)=\mu` - :math:`Var(x)=\mu` """ return flib.poisson(x,mu) poisson_grad_like = {'mu' : flib.poisson_gmu} # Truncated Poisson-------------------------------------------------- @randomwrap def rtruncated_poisson(mu, k, size=None): """ Random truncated Poisson variates with minimum value k, generated using rejection sampling. """ # Calculate m try: m = max(0, np.floor(k-mu)) except (TypeError, ValueError): # More than one mu return np.array([rtruncated_poisson(x, i) for x,i in zip(mu, np.resize(k, np.size(mu)))]).squeeze() k-=1 # Calculate constant for acceptance probability C = np.exp(flib.factln(k+1)-flib.factln(k+1-m)) # Empty array to hold random variates rvs = np.empty(0, int) total_size = np.prod(size or 1) while(len(rvs) k # Uniform random variates u = np.random.random(total_size*4) rvs = np.append(rvs, proposals[u 0). - `a` : Left bound of the distribution. - `b` : Right bound of the distribution. """ phia = np.exp(normal_like(a, mu, tau)) phib = np.exp(normal_like(b, mu, tau)) sigma = 1./np.sqrt(tau) Phia = pymc.utils.normcdf((a-mu)/sigma) if b == np.inf: Phib = 1.0 else: Phib = pymc.utils.normcdf((b-mu)/sigma) return (mu + (phia-phib)/(Phib - Phia))[0] truncnorm_expval = truncated_normal_expval def truncated_normal_like(x, mu, tau, a=None, b=None): R""" Truncated normal log-likelihood. .. math:: f(x \mid \mu, \tau, a, b) = \frac{\phi(\frac{x-\mu}{\sigma})} {\Phi(\frac{b-\mu}{\sigma}) - \Phi(\frac{a-\mu}{\sigma})}, where :math:`\sigma^2=1/\tau`, `\phi` is the standard normal PDF and `\Phi` is the standard normal CDF. :Parameters: - `x` : Input data. - `mu` : Mean of the distribution. - `tau` : Precision of the distribution, which corresponds to 1/sigma**2 (tau > 0). - `a` : Left bound of the distribution. - `b` : Right bound of the distribution. """ x = np.atleast_1d(x) if a is None: a = -np.inf a = np.atleast_1d(a) if b is None: b = np.inf b = np.atleast_1d(b) mu = np.atleast_1d(mu) sigma = (1./np.atleast_1d(np.sqrt(tau))) if (x < a).any() or (x>b).any(): return -np.inf else: n = len(x) phi = normal_like(x, mu, tau) lPhia = pymc.utils.normcdf((a-mu)/sigma, log=True) lPhib = pymc.utils.normcdf((b-mu)/sigma, log=True) try: d = utils.log_difference(lPhib, lPhia) except ValueError: return -np.inf # d = np.log(Phib-Phia) if len(d) == n: Phi = d.sum() else: Phi = n*d if np.isnan(Phi) or np.isinf(Phi): return -np.inf return phi - Phi truncnorm_like = truncated_normal_like # Azzalini's skew-normal----------------------------------- @randomwrap def rskew_normal(mu,tau,alpha,size=()): """ Skew-normal random variates. """ size_ = size or (1,) len_ = np.prod(size_) return flib.rskewnorm(len_,mu,tau,alpha,np.random.normal(size=2*len_)).reshape(size) def skew_normal_expval(mu,tau,alpha): """ Expectation of skew-normal random variables. """ delta = alpha / np.sqrt(1.+alpha**2) return mu + np.sqrt(2/pi/tau) * delta def skew_normal_like(x,mu,tau,alpha): R""" Azzalini's skew-normal log-likelihood .. math:: f(x \mid \mu, \tau, \alpha) = 2 \Phi((x-\mu)\sqrt{\tau}\alpha) \phi(x,\mu,\tau) where :math: \Phi is the normal CDF and :math: \phi is the normal PDF. :Parameters: - `x` : Input data. - `mu` : Mean of the distribution. - `tau` : Precision of the distribution (> 0). - `alpha` : Shape parameter of the distribution. .. note:: See http://azzalini.stat.unipd.it/SN/ """ return flib.sn_like(x, mu, tau, alpha) # Student's t----------------------------------- @randomwrap def rt(nu, size=None): """ Student's t random variates. """ return rnormal(0,1,size) / np.sqrt(rchi2(nu,size)/nu) def t_expval(nu): """ Expectation of Student's t random variables. """ return 0 def t_like(x, nu): R""" Student's T log-likelihood. Describes a zero-mean normal variable whose precision is gamma distributed. Alternatively, describes the mean of several zero-mean normal random variables divided by their sample standard deviation. .. math:: f(x \mid \nu) = \frac{\Gamma(\frac{\nu+1}{2})}{\Gamma(\frac{\nu}{2}) \sqrt{\nu\pi}} \left( 1 + \frac{x^2}{\nu} \right)^{-\frac{\nu+1}{2}} :Parameters: - `x` : Input data. - `nu` : Degrees of freedom. """ nu = np.asarray(nu) return flib.t(x, nu) # Non-central Student's t----------------------------------- @randomwrap def rnoncentral_t(mu, lam, nu, size=None): """ Non-central Student's t random variates. """ tau = rgamma(nu/2., nu/(2.*lam), size) return rnormal(mu, tau) def noncentral_t_expval(mu, lam, nu): """noncentral_t_expval(mu, lam, nu) Expectation of non-central Student's t random variables. Only defined for nu>1. """ if nu>1: return mu return inf def noncentral_t_like(x, mu, lam, nu): R""" Non-central Student's T log-likelihood. Describes a normal variable whose precision is gamma distributed. .. math:: f(x|\mu,\lambda,\nu) = \frac{\Gamma(\frac{\nu + 1}{2})}{\Gamma(\frac{\nu}{2})} \left(\frac{\lambda}{\pi\nu}\right)^{\frac{1}{2}} \left[1+\frac{\lambda(x-\mu)^2}{\nu}\right]^{-\frac{\nu+1}{2}} :Parameters: - `x` : Input data. - `mu` : Location parameter. - `lambda` : Scale parameter. - `nu` : Degrees of freedom. """ mu = np.asarray(mu) lam = np.asarray(lam) nu = np.asarray(nu) return flib.nct(x, mu, lam, nu) def t_grad_setup(x, nu, f): nu = np.asarray(nu) return f(x, nu) t_grad_like = {'value' : lambda x, nu : t_grad_setup(x, nu, flib.t_grad_x), 'nu' : lambda x, nu : t_grad_setup(x, nu, flib.t_grad_nu)} # Half-non-central t----------------------------------------------- @randomwrap def rhalf_noncentral_t(mu, lam, nu, size=None): """ Half-non-central Student's t random variates. """ return abs(rnoncentral_t(mu, lam, nu, size=size)) def noncentral_t_expval(mu, lam, nu): """ Expectation of non-central Student's t random variables. Only defined for nu>1. """ if nu>1: return mu return inf def noncentral_t_like(x, mu, lam, nu): R""" Non-central Student's T log-likelihood. Describes a normal variable whose precision is gamma distributed. .. math:: f(x|\mu,\lambda,\nu) = \frac{\Gamma(\frac{\nu + 1}{2})}{\Gamma(\frac{\nu}{2})} \left(\frac{\lambda}{\pi\nu}\right)^{\frac{1}{2}} \left[1+\frac{\lambda(x-\mu)^2}{\nu}\right]^{-\frac{\nu+1}{2}} :Parameters: - `x` : Input data. - `mu` : Location parameter. - `lambda` : Scale parameter. - `nu` : Degrees of freedom. """ mu = np.asarray(mu) lam = np.asarray(lam) nu = np.asarray(nu) return flib.nct(x, mu, lam, nu) # DiscreteUniform-------------------------------------------------- @randomwrap def rdiscrete_uniform(lower, upper, size=None): """ Random discrete_uniform variates. """ return np.random.randint(lower, upper+1, size) def discrete_uniform_expval(lower, upper): """ Expected value of discrete_uniform distribution. """ return (upper - lower) / 2. def discrete_uniform_like(x,lower, upper): R""" Discrete uniform log-likelihood. .. math:: f(x \mid lower, upper) = \frac{1}{upper-lower} :Parameters: - `x` : [int] :math:`lower \leq x \leq upper` - `lower` : Lower limit. - `upper` : Upper limit (upper > lower). """ return flib.duniform_like(x, lower, upper) # Uniform-------------------------------------------------- @randomwrap def runiform(lower, upper, size=None): """ Random uniform variates. """ return np.random.uniform(lower, upper, size) def uniform_expval(lower, upper): """ Expected value of uniform distribution. """ return (upper - lower) / 2. def uniform_like(x,lower, upper): R""" Uniform log-likelihood. .. math:: f(x \mid lower, upper) = \frac{1}{upper-lower} :Parameters: - `x` : :math:`lower \leq x \leq upper` - `lower` : Lower limit. - `upper` : Upper limit (upper > lower). """ return flib.uniform_like(x, lower, upper) uniform_grad_like = {'value' : flib.uniform_grad_x, 'lower' : flib.uniform_grad_l, 'upper' : flib.uniform_grad_u} # Weibull-------------------------------------------------- @randomwrap def rweibull(alpha, beta,size=None): """ Weibull random variates. """ tmp = -np.log(runiform(0, 1, size)) return beta * (tmp ** (1. / alpha)) def weibull_expval(alpha,beta): """ Expected value of weibull distribution. """ return beta * gammaln((alpha + 1.) / alpha) def weibull_like(x, alpha, beta): R""" Weibull log-likelihood .. math:: f(x \mid \alpha, \beta) = \frac{\alpha x^{\alpha - 1} \exp(-(\frac{x}{\beta})^{\alpha})}{\beta^\alpha} :Parameters: - `x` : :math:`x \ge 0` - `alpha` : alpha > 0 - `beta` : beta > 0 .. note:: - :math:`E(x)=\beta \Gamma(1+\frac{1}{\alpha})` - :math:`Var(x)=\beta^2 \Gamma(1+\frac{2}{\alpha} - \mu^2)` """ return flib.weibull(x, alpha, beta) weibull_grad_like = {'value' : flib.weibull_gx, 'alpha' : flib.weibull_ga, 'beta' : flib.weibull_gb} # Wishart--------------------------------------------------- def rwishart(n, Tau): """ Return a Wishart random matrix. Tau is the inverse of the 'covariance' matrix :math:`C`. """ p = np.shape(Tau)[0] sig = np.linalg.cholesky(Tau) if n 0. Tau : matrix Symmetric and positive definite .. note:: Step method MatrixMetropolis will preserve the symmetry of Wishart variables. """ return flib.blas_wishart(X,n,Tau) # Wishart, parametrized by covariance ------------------------------------ def rwishart_cov(n, C): """ Return a Wishart random matrix. :Parameters: n : int Degrees of freedom, > 0. C : matrix Symmetric and positive definite """ # return rwishart(n, np.linalg.inv(C)) p = np.shape(C)[0] # Need cholesky decomposition of precision matrix C^-1? sig = np.linalg.cholesky(C) if n 0. C : matrix Symmetric and positive definite """ return n * np.asarray(C) def wishart_cov_like(X, n, C): R""" wishart_like(X, n, C) Wishart log-likelihood. The Wishart distribution is the probability distribution of the maximum-likelihood estimator (MLE) of the covariance matrix of a multivariate normal distribution. If C=1, the distribution is identical to the chi-square distribution with n degrees of freedom. For an alternative parameterization based on :math:`T=C^{-1}`, see `wishart_like`. .. math:: f(X \mid n, C) = {\mid C^{-1} \mid}^{n/2}{\mid X \mid}^{(n-k-1)/2} \exp\left\{ -\frac{1}{2} Tr(C^{-1}X) \right\} where :math:`k` is the rank of X. :Parameters: X : matrix Symmetric, positive definite. n : int Degrees of freedom, > 0. C : matrix Symmetric and positive definite """ return flib.blas_wishart_cov(X,n,C) # ----------------------------------------------------------- # DECORATORS # ----------------------------------------------------------- def name_to_funcs(name, module): if type(module) is types.ModuleType: module = copy(module.__dict__) elif type(module) is dict: module = copy(module) else: raise AttributeError try: logp = module[name+"_like"] except: raise KeyError("No likelihood found with this name ", name+"_like") try: random = module['r'+name] except: random = None try: grad_logp = module[name + "_grad_like"] except: grad_logp = {} return logp, random, grad_logp def valuewrapper(f, arguments = None): """Return a likelihood accepting value instead of x as a keyword argument. This is specifically intended for the instantiator above. """ def wrapper(**kwds): value = kwds.pop('value') return f(value, **kwds) if arguments is None: wrapper.__dict__.update(f.__dict__) else : wrapper.__dict__.update(arguments) return wrapper """ Decorate the likelihoods """ snapshot = locals().copy() likelihoods = {} for name, obj in six.iteritems(snapshot): if name[-5:] == '_like' and name[:-5] in availabledistributions: likelihoods[name[:-5]] = snapshot[name] def local_decorated_likelihoods(obj): """ New interface likelihoods """ for name, like in six.iteritems(likelihoods): obj[name+'_like'] = gofwrapper(like, snapshot) # local_decorated_likelihoods(locals()) # Decorating the likelihoods breaks the creation of distribution # instantiators -DH. # Create Stochastic instantiators def _inject_dist(distname, kwargs={}, ns=locals()): """ Reusable function to inject Stochastic subclasses into module namespace """ dist_logp, dist_random, grad_logp = name_to_funcs(distname, ns) classname = capitalize(distname) ns[classname]= stochastic_from_dist(distname, dist_logp, dist_random, grad_logp, **kwargs) for dist in sc_continuous_distributions: _inject_dist(dist) for dist in mv_continuous_distributions: _inject_dist(dist, kwargs={'mv' : True}) for dist in sc_bool_distributions: _inject_dist(dist, kwargs={'dtype' : np.bool}) for dist in sc_discrete_distributions: _inject_dist(dist, kwargs={'dtype' : np.int}) for dist in mv_discrete_distributions: _inject_dist(dist, kwargs={'dtype' : np.int, 'mv' : True}) def uninformative_like(x): """ Uninformative log-likelihood. Returns 0 regardless of the value of x. """ return 0. def one_over_x_like(x): """ returns -np.Inf if x<0, -np.log(x) otherwise. """ if np.any(x<0): return -np.Inf else: return -np.sum(np.log(x)) Uninformative = stochastic_from_dist('uninformative', logp=uninformative_like) DiscreteUninformative = stochastic_from_dist('uninformative', logp=uninformative_like, dtype=np.int) DiscreteUninformative.__name__ = 'DiscreteUninformative' OneOverX = stochastic_from_dist('one_over_x', logp = one_over_x_like) # Conjugates of Dirichlet get special treatment, can be parametrized # by first k-1 'p' values def extend_dirichlet(p): """ extend_dirichlet(p) Concatenates 1-sum(p) to the end of p and returns. """ if len(np.shape(p))>1: return np.hstack((p, np.atleast_2d(1.-np.sum(p)))) else: return np.hstack((p,1.-np.sum(p))) def mod_categorical_like(x,p): """ Categorical log-likelihood with parent p of length k-1. An implicit k'th category is assumed to exist with associated probability 1-sum(p). ..math:: f(x=i \mid p, m, s) = p_i, ..math:: i \in 0\ldots k-1 :Parameters: x : integer :math: `x \in 0\ldots k-1` p : (k-1) float :math: `p > 0` :math: `\sum p < 1` minval : integer step : integer :math: `s \ge 1` """ return categorical_like(x,extend_dirichlet(p)) def mod_categorical_expval(p): """ Expected value of categorical distribution with parent p of length k-1. An implicit k'th category is assumed to exist with associated probability 1-sum(p). """ p = extend_dirichlet(p) return np.sum([p*i for i, p in enumerate(p)]) def rmod_categor(p,size=None): """ Categorical random variates with parent p of length k-1. An implicit k'th category is assumed to exist with associated probability 1-sum(p). """ return rcategorical(extend_dirichlet(p), size) class Categorical(Stochastic): __doc__ = """ C = Categorical(name, p, value=None, dtype=np.int, observed=False, size=1, trace=True, rseed=False, cache_depth=2, plot=None) Stochastic variable with Categorical distribution. Parent is: p If parent p is Dirichlet and has length k-1, an implicit k'th category is assumed to exist with associated probability 1-sum(p.value). Otherwise parent p's value should sum to 1. Docstring of categorical_like (case where P is not a Dirichlet): """\ + categorical_like.__doc__ +\ """ Docstring of categorical_like (case where P is a Dirichlet): """\ + categorical_like.__doc__ parent_names = ['p', 'minval', 'step'] def __init__(self, name, p, value=None, dtype=np.int, observed=False, size=None, trace=True, rseed=False, cache_depth=2, plot=None, verbose=-1,**kwds): if value is not None: if np.isscalar(value): self.size = None else: self.size = len(value) else: self.size = size if isinstance(p, Dirichlet): Stochastic.__init__(self, logp=valuewrapper(mod_categorical_like), doc='A Categorical random variable', name=name, parents={'p':p}, random=bind_size(rmod_categor, self.size), trace=trace, value=value, dtype=dtype, rseed=rseed, observed=observed, cache_depth=cache_depth, plot=plot, verbose=verbose, **kwds) else: Stochastic.__init__(self, logp=valuewrapper(categorical_like), doc='A Categorical random variable', name=name, parents={'p':p}, random=bind_size(rcategorical, self.size), trace=trace, value=value, dtype=dtype, rseed=rseed, observed=observed, cache_depth=cache_depth, plot=plot, verbose=verbose, **kwds) # class ModCategorical(Stochastic): # __doc__ = """ # C = ModCategorical(name, p, minval, step[, trace=True, value=None, # rseed=False, observed=False, cache_depth=2, plot=None, verbose=0]) # # Stochastic variable with ModCategorical distribution. # Parents are: p, minval, step. # # If parent p is Dirichlet and has length k-1, an implicit k'th # category is assumed to exist with associated probability 1-sum(p.value). # # Otherwise parent p's value should sum to 1. # # Docstring of mod_categorical_like (case where P is not a Dirichlet): # """\ # + mod_categorical_like.__doc__ +\ # """ # Docstring of mod_categorical_like (case where P is a Dirichlet): # """\ # + mod_categorical_like.__doc__ # # # parent_names = ['p', 'minval', 'step'] # # def __init__(self, name, p, minval=0, step=1, value=None, dtype=np.float, observed=False, size=1, trace=True, rseed=False, cache_depth=2, plot=None, verbose=0, **kwds): # # if value is not None: # if np.isscalar(value): # self.size = 1 # else: # self.size = len(value) # else: # self.size = size # # if isinstance(p, Dirichlet): # Stochastic.__init__(self, logp=valuewrapper(mod_categorical_like), doc='A ModCategorical random variable', name=name, # parents={'p':p,'minval':minval,'step':step}, random=bind_size(rmod_categor, self.size), trace=trace, value=value, dtype=dtype, # rseed=rseed, observed=observed, cache_depth=cache_depth, plot=plot, verbose=verbose, **kwds) # else: # Stochastic.__init__(self, logp=valuewrapper(mod_categorical_like), doc='A ModCategorical random variable', name=name, # parents={'p':p,'minval':minval,'step':step}, random=bind_size(rmod_categorical, self.size), trace=trace, value=value, dtype=dtype, # rseed=rseed, observed=observed, cache_depth=cache_depth, plot=plot, verbose=verbose, **kwds) def mod_rmultinom(n,p): return rmultinomial(n,extend_dirichlet(p)) def mod_multinom_like(x,n,p): return multinomial_like(x,n,extend_dirichlet(p)) class Multinomial(Stochastic): """ M = Multinomial(name, n, p, trace=True, value=None, rseed=False, observed=False, cache_depth=2, plot=None]) A multinomial random variable. Parents are p, minval, step. If parent p is Dirichlet and has length k-1, an implicit k'th category is assumed to exist with associated probability 1-sum(p.value). Otherwise parent p's value should sum to 1. """ parent_names = ['n', 'p'] def __init__(self, name, n, p, trace=True, value=None, rseed=False, observed=False, cache_depth=2, plot=None, verbose=-1, **kwds): if isinstance(p, Dirichlet): Stochastic.__init__(self, logp=valuewrapper(mod_multinom_like), doc='A Multinomial random variable', name=name, parents={'n':n,'p':p}, random=mod_rmultinom, trace=trace, value=value, dtype=np.int, rseed=rseed, observed=observed, cache_depth=cache_depth, plot=plot, verbose=verbose, **kwds) else: Stochastic.__init__(self, logp=valuewrapper(multinomial_like), doc='A Multinomial random variable', name=name, parents={'n':n,'p':p}, random=rmultinomial, trace=trace, value=value, dtype=np.int, rseed=rseed, observed=observed, cache_depth=cache_depth, plot=plot, verbose=verbose, **kwds) def Impute(name, dist_class, imputable, **parents): """ This function accomodates missing elements for the data of simple Stochastic distribution subclasses. The masked_values argument is an object of type numpy.ma.MaskedArray, which contains the raw data and a boolean mask indicating missing values. The resulting list contains a list of stochastics of type dist_class, with the extant values as data stochastics and the missing values as variable stochastics. :Arguments: - name : string Name of the data stochastic - dist_class : Stochastic Stochastic subclass such as Poisson, Normal, etc. - imputable : numpy.ma.core.MaskedArray or iterable A masked array with missing elements (where mask=True, value is assumed missing), or any iterable that contains None elements that will be imputed. - parents (optional): dict Arbitrary keyword arguments. """ dims = np.shape(imputable) masked_values = np.ravel(imputable) if not type(masked_values) == np.ma.core.MaskedArray: # Generate mask mask = [v is None or np.isnan(v) for v in masked_values] # Generate masked array masked_values = np.ma.masked_array(masked_values, mask) # Initialise list vars = [] for i in xrange(len(masked_values)): # Name of element this_name = name + '[%i]'%i # Dictionary to hold parents these_parents = {} # Parse parents for key, parent in six.iteritems(parents): try: # If parent is a PyMCObject shape = np.shape(parent.value) except AttributeError: shape = np.shape(parent) if shape == dims: these_parents[key] = Lambda(key + '[%i]'%i, lambda p=np.ravel(parent), i=i: p[i]) elif shape == np.shape(masked_values): these_parents[key] = Lambda(key + '[%i]'%i, lambda p=parent, i=i: p[i]) else: these_parents[key] = parent if masked_values.mask[i]: # Missing values vars.append(dist_class(this_name, **these_parents)) else: # Observed values vars.append(dist_class(this_name, value=masked_values[i], observed=True, **these_parents)) return np.reshape(vars, dims) ImputeMissing = Impute if __name__ == "__main__": import doctest doctest.testmod() pymc-2.2+ds/pymc/examples/000077500000000000000000000000001204033704200155105ustar00rootroot00000000000000pymc-2.2+ds/pymc/examples/__init__.py000066400000000000000000000000321204033704200176140ustar00rootroot00000000000000""" Examples for PyMC. """pymc-2.2+ds/pymc/examples/custom_step.py000066400000000000000000000056271204033704200204410ustar00rootroot00000000000000import pymc as pm from pymc import six import numpy as np class TruncatedMetropolis(pm.Metropolis): def __init__(self, stochastic, low_bound, up_bound, *args, **kwargs): self.low_bound = low_bound self.up_bound = up_bound pm.Metropolis.__init__(self, stochastic, *args, **kwargs) # Propose method written by hacking Metropolis.propose() def propose(self): tau = 1./(self.adaptive_scale_factor * self.proposal_sd)**2 self.stochastic.value = pm.rtruncnorm(self.stochastic.value, tau, self.low_bound, self.up_bound) # Hastings factor method accounts for asymmetric proposal distribution def hastings_factor(self): tau = 1./(self.adaptive_scale_factor * self.proposal_sd)**2 cur_val = self.stochastic.value last_val = self.stochastic.last_value lp_for = pm.truncnorm_like(cur_val, last_val, tau, self.low_bound, self.up_bound) lp_bak = pm.truncnorm_like(last_val, cur_val, tau, self.low_bound, self.up_bound) if self.verbose > 1: six.print_(self._id + ': Hastings factor %f'%(lp_bak - lp_for)) return lp_bak - lp_for # Maximum data value is around 1 (plot the histogram). data = np.array([-1.6464815 , -0.86463278, 0.80656378, 0.67664181, -0.34312965, -0.29654303, 0.76170081, 0.30418603, -0.45473639, -0.24894277, -0.07173209, -1.64602289, 0.0804062 , -0.82159472, 0.98224623, -1.92538425, -1.95388748, -0.41145515, 0.23972844, -0.78645389, -0.21687104, -0.2939634 , 0.51229013, 0.04626286, 0.18329919, -1.12775839, -1.64187249, 0.33440094, -0.95224695, 0.15650266, -0.54056102, 0.12240128, -0.95397459, 0.44806432, -1.02955556, 0.31740861, -0.8762523 , 0.47377688, 0.76516415, 0.27890419, -0.07819642, -0.13399348, 0.82877293, 0.22308624, 0.7485783 , -0.14700254, -1.03145657, 0.85641097, 0.43396285, 0.47901653, 0.80137086, 0.33566812, 0.71443253, -1.57590815, -0.24090179, -2.0128344 , 0.34503324, 0.12944091, -1.5327008 , 0.06363034, 0.21042021, -0.81425636, 0.20209279, -1.48130423, -1.04983523, 0.16001774, -0.75239072, 0.33427956, -0.10224921, 0.26463561, -1.09374674, -0.72749811, -0.54892116, -1.89631844, -0.94393545, -0.2521341 , 0.26840341, 0.23563219, 0.35333094]) # Model: the data are truncated-normally distributed with unknown upper bound. mu = pm.Normal('mu',0,.01, value=0) tau = pm.Exponential('tau',.01, value=1) cutoff = pm.Exponential('cutoff',1, value=1.3) D = pm.TruncatedNormal('D',mu,tau,-np.inf,cutoff,value=data,observed=True) M = pm.MCMC([mu,tau,cutoff,D]) # Use a TruncatedMetropolis step method that will never propose jumps below D's maximum value. M.use_step_method(TruncatedMetropolis, cutoff, D.value.max(), np.inf) # Get a handle to the step method handling cutoff to investigate its behavior. S = M.step_method_dict[cutoff][0] M.isample(10000,0,10) pymc-2.2+ds/pymc/examples/disaster_model.py000066400000000000000000000026021204033704200210600ustar00rootroot00000000000000""" A model for the disasters data with a changepoint changepoint ~ U(0, 110) early_mean ~ Exp(1.) late_mean ~ Exp(1.) disasters[t] ~ Po(early_mean if t <= switchpoint, late_mean otherwise) """ from pymc import * from numpy import array, empty from numpy.random import randint __all__ = ['disasters_array', 'switchpoint', 'early_mean', 'late_mean', 'rate', 'disasters'] disasters_array = array([ 4, 5, 4, 0, 1, 4, 3, 4, 0, 6, 3, 3, 4, 0, 2, 6, 3, 3, 5, 4, 5, 3, 1, 4, 4, 1, 5, 5, 3, 4, 2, 5, 2, 2, 3, 4, 2, 1, 3, 2, 2, 1, 1, 1, 1, 3, 0, 0, 1, 0, 1, 1, 0, 0, 3, 1, 0, 3, 2, 2, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 2, 1, 0, 0, 0, 1, 1, 0, 2, 3, 3, 1, 1, 2, 1, 1, 1, 1, 2, 4, 2, 0, 0, 1, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1]) # Define data and stochastics switchpoint = DiscreteUniform('switchpoint', lower=0, upper=110, doc='Switchpoint[year]') early_mean = Exponential('early_mean', beta=1.) late_mean = Exponential('late_mean', beta=1.) @deterministic(plot=False) def rate(s=switchpoint, e=early_mean, l=late_mean): ''' Concatenate Poisson means ''' out = empty(len(disasters_array)) out[:s] = e out[s:] = l return out disasters = Poisson('disasters', mu=rate, value=disasters_array, observed=True)pymc-2.2+ds/pymc/examples/disaster_model_gof.py000066400000000000000000000052411204033704200217150ustar00rootroot00000000000000""" A model for the disasters data with a changepoint, with GOF diagnostics added changepoint ~ U(0,110) early_mean ~ Exp(1.) late_mean ~ Exp(1.) disasters[t] ~ Po(early_mean if t <= switchpoint, late_mean otherwise) """ import pymc as pm from numpy import array, concatenate, ones from numpy.random import randint __all__ = ['disasters_array', 'switchpoint', 'early_mean', 'late_mean', 'disasters'] disasters_array = array([ 4, 5, 4, 0, 1, 4, 3, 4, 0, 6, 3, 3, 4, 0, 2, 6, 3, 3, 5, 4, 5, 3, 1, 4, 4, 1, 5, 5, 3, 4, 2, 5, 2, 2, 3, 4, 2, 1, 3, 2, 2, 1, 1, 1, 1, 3, 0, 0, 1, 0, 1, 1, 0, 0, 3, 1, 0, 3, 2, 2, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 2, 1, 0, 0, 0, 1, 1, 0, 2, 3, 3, 1, 1, 2, 1, 1, 1, 1, 2, 4, 2, 0, 0, 1, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1]) n = len(disasters_array) # Define data and stochastics switchpoint = pm.DiscreteUniform('switchpoint',lower=0,upper=110) early_mean = pm.Exponential('early_mean',beta=1.) late_mean = pm.Exponential('late_mean',beta=1.) @pm.stochastic(observed=True, dtype=int) def disasters( value = disasters_array, early_mean = early_mean, late_mean = late_mean, switchpoint = switchpoint): """Annual occurences of coal mining disasters.""" return pm.poisson_like(value[:switchpoint],early_mean) + pm.poisson_like(value[switchpoint:],late_mean) @pm.deterministic def disasters_sim(early_mean = early_mean, late_mean = late_mean, switchpoint = switchpoint): """Coal mining disasters sampled from the posterior predictive distribution""" return concatenate( (pm.rpoisson(early_mean, size=switchpoint), pm.rpoisson(late_mean, size=n-switchpoint))) @pm.deterministic def expected_values(early_mean = early_mean, late_mean = late_mean, switchpoint = switchpoint): """Discrepancy measure for GOF using the Freeman-Tukey statistic""" # Sample size n = len(disasters_array) # Expected values return concatenate((ones(switchpoint)*early_mean, ones(n-switchpoint)*late_mean)) if __name__ == '__main__': vars = [switchpoint, early_mean, late_mean, disasters, disasters_sim, expected_values] # Instiatiate model M = pm.MCMC(vars) # Sample M.sample(10000, burn=5000, verbose=2) # Calculate discrepancy function D = pm.diagnostics.discrepancy(disasters_array, disasters_sim, expected_values) # Plot GOF graphics pm.Matplot.discrepancy_plot(D, 'D') pm.Matplot.gof_plot(disasters_sim, disasters_array, 'disasters') pymc-2.2+ds/pymc/examples/disaster_model_linear.py000066400000000000000000000034741204033704200224220ustar00rootroot00000000000000""" A model for the disasters data with an linearly varying mean: rate_of_mean ~ N(0,1) amp_of_mean ~ Exp(3) disasters[t] ~ Po(intercept_of_mean + slope_of_mean * t) """ from pymc import * from numpy import * disasters_array = array([ 4, 5, 4, 0, 1, 4, 3, 4, 0, 6, 3, 3, 4, 0, 2, 6, 3, 3, 5, 4, 5, 3, 1, 4, 4, 1, 5, 5, 3, 4, 2, 5, 2, 2, 3, 4, 2, 1, 3, 2, 2, 1, 1, 1, 1, 3, 0, 0, 1, 0, 1, 1, 0, 0, 3, 1, 0, 3, 2, 2, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 2, 1, 0, 0, 0, 1, 1, 0, 2, 3, 3, 1, 1, 2, 1, 1, 1, 1, 2, 4, 2, 0, 0, 1, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1]) # Define data and stochastics @stochastic def params_of_mean(value=array([-.005, 1.]), tau=.1, rate = 4.): """ Intercept and slope of rate stochastic of poisson distribution Rate stochastic must be positive for t in [0,T] p(intercept, slope|tau,rate) = N(slope|0,tau) Exp(intercept|rate) 1(intercept>0) 1(intercept + slope * T>0) """ def logp(value, tau, rate): if value[1]>0 and value[1] + value[0] * 110 > 0: return normal_like(value[0],0.,tau) + exponential_like(value[1], rate) else: return -Inf def random(tau, rate): val = zeros(2) val[0] = rnormal(0., tau) val[1] = rexponential(rate) while val[1]<0 or val[1] + val[0] * 110 <= 0: val[0] = rnormal(0., tau) val[1] = rexponential(rate) return val @stochastic(observed=True, dtype=int) def disasters(value = disasters_array, params_of_mean = params_of_mean): """Annual occurences of coal mining disasters.""" val = params_of_mean[1] + params_of_mean[0] * arange(111) return poisson_like(value,val) pymc-2.2+ds/pymc/examples/disaster_model_missing.py000066400000000000000000000036341204033704200226170ustar00rootroot00000000000000""" A model for the disasters data with a changepoint, with missing data changepoint ~ U(0,110) early_mean ~ Exp(1.) late_mean ~ Exp(1.) disasters[t] ~ Po(early_mean if t <= switchpoint, late_mean otherwise) """ __all__ = ['switch','early_mean','late_mean','disasters'] from pymc import DiscreteUniform, Exponential, deterministic, Poisson, Uniform, Lambda, MCMC, observed, poisson_like from pymc.distributions import Impute from numpy.ma import masked_array import numpy as np # Missing values indicated by -999 placeholder values disasters_array = np.array([ 4, 5, 4, 0, 1, 4, 3, 4, 0, 6, 3, 3, 4, 0, 2, 6, 3, 3, 5, 4, 5, 3, 1, 4, 4, 1, 5, 5, 3, 4, 2, 5, 2, 2, 3, 4, 2, 1, 3, -999, 2, 1, 1, 1, 1, 3, 0, 0, 1, 0, 1, 1, 0, 0, 3, 1, 0, 3, 2, 2, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 2, 1, 0, 0, 0, 1, 1, 0, 2, 3, 3, 1, -999, 2, 1, 1, 1, 1, 2, 4, 2, 0, 0, 1, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1]) # Switchpoint switch = DiscreteUniform('switch', lower=0, upper=110) # Early mean early_mean = Exponential('early_mean', beta=1) # Late mean late_mean = Exponential('late_mean', beta=1) @deterministic(plot=False) def rate(s=switch, e=early_mean, l=late_mean): """Allocate appropriate mean to time series""" out = np.empty(len(disasters_array)) # Early mean prior to switchpoint out[:s] = e # Late mean following switchpoint out[s:] = l return out # The inefficient way, using the Impute function: # D = Impute('D', Poisson, disasters_array, mu=r) # # The efficient way, using masked arrays: # Generate masked array. Where the mask is true, # the value is taken as missing. masked_values = masked_array(disasters_array, mask=disasters_array==-999) # Pass masked array to data stochastic, and it does the right thing disasters = Poisson('disasters', mu=rate, value=masked_values, observed=True)pymc-2.2+ds/pymc/examples/disaster_model_null.py000066400000000000000000000020011204033704200221030ustar00rootroot00000000000000""" A model for the disasters data with no changepoint: global_rate ~ Exp(3.) disasters[t] ~ Po(global_rate) """ from pymc import * from numpy import array __all__ = ['global_rate', 'disasters', 'disasters_array'] disasters_array = array([ 4, 5, 4, 0, 1, 4, 3, 4, 0, 6, 3, 3, 4, 0, 2, 6, 3, 3, 5, 4, 5, 3, 1, 4, 4, 1, 5, 5, 3, 4, 2, 5, 2, 2, 3, 4, 2, 1, 3, 2, 2, 1, 1, 1, 1, 3, 0, 0, 1, 0, 1, 1, 0, 0, 3, 1, 0, 3, 2, 2, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 2, 1, 0, 0, 0, 1, 1, 0, 2, 3, 3, 1, 1, 2, 1, 1, 1, 1, 2, 4, 2, 0, 0, 1, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1]) # Define the data and stochastics global_rate = Exponential('global_rate',beta=1./3) @stochastic(observed=True, dtype=int) def disasters(value = disasters_array, rate = global_rate): """Annual occurences of coal mining disasters.""" return poisson_like(value, rate) pymc-2.2+ds/pymc/examples/gelman_bioassay.py000066400000000000000000000010311204033704200212120ustar00rootroot00000000000000from pymc import * from numpy import ones, array # Samples for each dose level n = 5*ones(4,dtype=int) # Log-dose dose=array([-.86,-.3,-.05,.73]) # Logit-linear model parameters alpha = Normal('alpha', 0, 0.01) beta = Normal('beta', 0, 0.01) # Calculate probabilities of death theta = Lambda('theta', lambda a=alpha, b=beta, d=dose: invlogit(a + b*d)) # Data likelihood deaths = Binomial('deaths', n=n, p=theta, value=array([0,1,3,5], dtype=float), observed=True) # Calculate LD50 LD50 = Lambda('LD50', lambda a=alpha, b=beta: -a/b)pymc-2.2+ds/pymc/examples/gp/000077500000000000000000000000001204033704200161165ustar00rootroot00000000000000pymc-2.2+ds/pymc/examples/gp/MCMC.py000066400000000000000000000042311204033704200172070ustar00rootroot00000000000000from . import PyMCmodel from pymc import * from pylab import * import matplotlib matplotlib.rcParams['axes.facecolor']='w' x = linspace(-1,1,400) n_fmesh = 51 fmesh_is_obsmesh = False GPSampler = MCMC(PyMCmodel.make_model(n_fmesh, fmesh_is_obsmesh)) GPSampler.assign_step_methods() sm = GPSampler.step_method_dict[GPSampler.sm.f_eval][0] GPSampler.isample(iter=5000,burn=2500,thin=100) # Uncomment this for a medium run. # GPSampler.isample(iter=500,burn=0,thin=10) # Uncomment this for a short run. # GPSampler.isample(iter=50,burn=0,thin=1) if __name__ == '__main__': N_samps = len(GPSampler.sm.f.trace()) fmesh = GPSampler.fmesh obs_locs = GPSampler.actual_obs_locs close('all') mid_traces = [] figure(figsize=(12,6)) subplot(1,2,1) for i in range(0,N_samps): f=GPSampler.sm.f.trace()[i](x) plot(x,f,linewidth=2) mid_traces.append(f[len(f)/2]) plot(obs_locs,GPSampler.d.value,'k.',markersize=16) axis([x.min(),x.max(),-2.,4.]) xlabel('x') ylabel('f(x)') title('Some samples of f') subplot(1,2,2) plot(mid_traces,linewidth=4) xlabel('iteration') ylabel('f(0)') title('The trace of f at midpoint') # Plot posterior of C and tau figure() subplot(2,2,1) plot(GPSampler.nu.trace()) title("Degree of differentiability of f") subplot(2,2,2) plot(GPSampler.phi.trace()) title("Pointwise prior variance of f") subplot(2,2,3) plot(GPSampler.theta.trace()) title("X-axis scaling of f") subplot(2,2,4) plot(GPSampler.V.trace()) title('Observation variance') # Plot posterior of M figure() subplot(1,3,1) plot(GPSampler.a.trace()) title("Quadratic coefficient of M") subplot(1,3,2) plot(GPSampler.b.trace()) title("Linear coefficient of M") subplot(1,3,3) plot(GPSampler.c.trace()) title("Constant term of M") try: figure() plot(GPSampler.obs_locs.trace()) for al in GPSampler.actual_obs_locs: plot([0,N_samps],[al,al],'k-.') title('Observation locations') except: pass # show() pymc-2.2+ds/pymc/examples/gp/PyMCmodel.py000066400000000000000000000034451204033704200203270ustar00rootroot00000000000000import pymc as pm import pymc.gp as gp from pymc.gp.cov_funs import matern import numpy as np import matplotlib.pyplot as pl import copy from numpy.random import normal def make_model(n_fmesh=11, fmesh_is_obsmesh=False): x = np.arange(-1.,1.,.1) # Prior parameters of C nu = pm.Uniform('nu', 1., 3, value=1.5) phi = pm.Lognormal('phi', mu=.4, tau=1, value=1) theta = pm.Lognormal('theta', mu=.5, tau=1, value=1) # The covariance dtrm C is valued as a Covariance object. @pm.deterministic def C(eval_fun = gp.matern.euclidean, diff_degree=nu, amp=phi, scale=theta): return gp.NearlyFullRankCovariance(eval_fun, diff_degree=diff_degree, amp=amp, scale=scale) # Prior parameters of M a = pm.Normal('a', mu=1., tau=1., value=1) b = pm.Normal('b', mu=.5, tau=1., value=0) c = pm.Normal('c', mu=2., tau=1., value=0) # The mean M is valued as a Mean object. def linfun(x, a, b, c): return a * x ** 2 + b * x + c @pm.deterministic def M(eval_fun = linfun, a=a, b=b, c=c): return gp.Mean(eval_fun, a=a, b=b, c=c) # The actual observation locations actual_obs_locs = np.linspace(-.8,.8,4) if fmesh_is_obsmesh: o = actual_obs_locs fmesh = o else: # The unknown observation locations o = pm.Normal('o', actual_obs_locs, 1000., value=actual_obs_locs) fmesh = np.linspace(-1,1,n_fmesh) # The GP submodel sm = gp.GPSubmodel('sm',M,C,fmesh) # Observation variance V = pm.Lognormal('V', mu=-1, tau=1, value=.0001) observed_values = pm.rnormal(actual_obs_locs**2,10000) # The data d is just array-valued. It's normally distributed about GP.f(obs_x). d = pm.Normal('d',mu=sm.f(o), tau=1./V, value=observed_values, observed=True) return locals()pymc-2.2+ds/pymc/examples/gp/__init__.py000066400000000000000000000000441204033704200202250ustar00rootroot00000000000000""" Gaussian processes examples. """pymc-2.2+ds/pymc/examples/gp/basiscov.py000066400000000000000000000025251204033704200203050ustar00rootroot00000000000000from pymc.gp.cov_funs import * from numpy import * from copy import copy from pymc.gp import * N=25 # Generate mean def quadfun(x, a, b, c): return (a * x ** 2 + b * x + c) M = Mean(eval_fun = quadfun, a = 1., b = .5, c = 2.) # Generate basis covariance coef_cov = ones(2*N+1, dtype=float) for i in xrange(1,len(coef_cov)): coef_cov[i] = 1./int(((i+1)/2))**2.5 basis = fourier_basis([N]) C = SeparableBasisCovariance(basis,coef_cov,xmin = [-2.], xmax = [2.]) obs_x = array([-.5,.5]) V = array([.002,.002]) data = array([3.1, 2.9]) observe(M=M, C=C, obs_mesh=obs_x, obs_V = V, obs_vals = data) if __name__ == '__main__': from pylab import * close('all') x=arange(-1.,1.,.01) figure() # Plot the covariance function subplot(1,2,1) contourf(x,x,C(x,x).view(ndarray),origin='lower',extent=(-1.,1.,-1.,1.),cmap=cm.bone) xlabel('x') ylabel('y') title('C(x,y)') axis('tight') colorbar() # Plot a slice of the covariance function subplot(1,2,2) plot(x,C(x,0.).view(ndarray).ravel(),'k-') xlabel('x') ylabel('C(x,.5)') title('A slice of C') figure() plot_envelope(M,C,x) for i in range(3): f = Realization(M,C) plot(x,f(x)) title('Three realizations') plot(obs_x,data,'k.',markersize=16) # show() pymc-2.2+ds/pymc/examples/gp/cov.py000066400000000000000000000017411204033704200172620ustar00rootroot00000000000000from pymc.gp import * from pymc.gp.cov_funs import matern from numpy import * C = Covariance(eval_fun = matern.euclidean, diff_degree = 1.4, amp = .4, scale = 1.) # C = Covariance(eval_fun = matern.euclidean, diff_degree = 1.4, amp = .4, scale = 1., rank_limit=100) # C = FullRankCovariance(eval_fun = matern.euclidean, diff_degree = 1.4, amp = .4, scale = 1.) # C = NearlyFullRankCovariance(eval_fun = matern.euclidean, diff_degree = 1.4, amp = .4, scale = 1.) #### - Plot - #### if __name__ == '__main__': from pylab import * x=arange(-1.,1.,.01) clf() # Plot the covariance function subplot(1,2,1) contourf(x,x,C(x,x).view(ndarray),origin='lower',extent=(-1.,1.,-1.,1.),cmap=cm.bone) xlabel('x') ylabel('y') title('C(x,y)') axis('tight') colorbar() # Plot a slice of the covariance function subplot(1,2,2) plot(x,C(x,0).view(ndarray).ravel(),'k-') xlabel('x') ylabel('C(x,0)') title('A slice of C') # show() pymc-2.2+ds/pymc/examples/gp/covparams.py000066400000000000000000000024261204033704200204670ustar00rootroot00000000000000from pymc.gp import * from pymc.gp.cov_funs import * from numpy import * # Covariance C = Covariance(eval_fun = matern.euclidean, diff_degree = 1.4, amp = 1., scale = 1.) # C = Covariance(eval_fun = pow_exp.euclidean, pow=1., amp=1., scale=1.) # C = Covariance(eval_fun = quadratic.euclidean, phi=1., amp=1., scale=.2) # C = Covariance(eval_fun = gaussian.euclidean, amp=1., scale=1.) # C = Covariance(eval_fun = sphere.euclidean, amp=1., scale=.5) # Mean def zero_fun(x): return 0.*x M = Mean(zero_fun) #### - Plot - #### if __name__ == '__main__': from pylab import * x=arange(-1.,1.,.01) close('all') figure() # Plot the covariance function subplot(2,2,1) contourf(x,x,C(x,x).view(ndarray),origin='lower',extent=(-1.,1.,-1.,1.),cmap=cm.bone) xlabel('x') ylabel('y') title('C(x,y)') axis('tight') colorbar() # Plot a slice of the covariance function subplot(2,2,2) plot(x,C(x,0).view(ndarray).ravel(),'k-') axis([-1,1,0,1]) xlabel('x') ylabel('C(x,0)') title('A slice of C') subplot(2,1,2) # plot_envelope(M, C, mesh=x) for i in range(3): f = Realization(M, C) plot(x, f(x)) xlabel('x') ylabel('f(x)') title('Three realizations') axis([-1,1,-2,2]) # show() pymc-2.2+ds/pymc/examples/gp/mean.py000066400000000000000000000005231204033704200174100ustar00rootroot00000000000000from pymc.gp import * # Generate mean def quadfun(x, a, b, c): return (a * x ** 2 + b * x + c) M = Mean(quadfun, a = 1., b = .5, c = 2.) #### - Plot - #### if __name__ == '__main__': from pylab import * x=arange(-1.,1.,.1) clf() plot(x, M(x), 'k-') xlabel('x') ylabel('M(x)') axis('tight') # show() pymc-2.2+ds/pymc/examples/gp/mesh_choice.py000066400000000000000000000030741204033704200207420ustar00rootroot00000000000000from . import PyMCmodel import pymc as pm from pymc import six import numpy as np import matplotlib.pyplot as pl import matplotlib matplotlib.rcParams['axes.facecolor']='w' import time n_iter = 10000 rej = [] times = [] mesh_sizes = [0,1,2,4,8,16,32,64,128,256,512] for mesh_size in [0,1,2,4,8,16,32,64,128,256,512]: six.print_(mesh_size) m = PyMCmodel.make_model(mesh_size, False) if mesh_size==0: sm = pm.gp.MeshlessGPMetropolis(m['sm'].f) else: sm = pm.gp.GPEvaluationMetropolis(m['sm'].f_eval, proposal_sd=.01) t1 = time.time() for i in xrange(n_iter): sm.step() times.append((time.time()-t1)/float(n_iter)) rej.append(sm.rejected/float(sm.rejected + sm.accepted)) m = PyMCmodel.make_model(0, True) sm = pm.gp.GPEvaluationMetropolis(m['sm'].f_eval, proposal_sd=.01) t1 = time.time() for i in xrange(n_iter): sm.step() truemesh_time = (time.time()-t1)/float(n_iter) truemesh_rej = sm.rejected/float(sm.rejected + sm.accepted) f=pl.figure(1, figsize=(12,6)) ax1 = f.add_subplot(111) ax1.plot(rej, 'b-', label='Rejection',linewidth=4) ax1.plot([3],[truemesh_rej],'b.',markersize=8) ax1.set_ylabel('Rejection rate', color='b') ax1.set_xticks(range(len(mesh_sizes))) ax1.set_xticklabels(mesh_sizes) ax1.set_xlabel('Number of points in mesh') ax2 = ax1.twinx() ax2.plot(times,'r-',label='Time',linewidth=4) ax2.plot([3],[truemesh_time],'r.',markersize=8) ax2.set_ylabel('Time per jump (seconds)', color='r') ax2.set_xticks(range(len(mesh_sizes))) ax2.set_xticklabels(mesh_sizes) ax2.set_xlabel('Number of points in mesh') pymc-2.2+ds/pymc/examples/gp/more_examples/000077500000000000000000000000001204033704200207565ustar00rootroot00000000000000pymc-2.2+ds/pymc/examples/gp/more_examples/Duffy/000077500000000000000000000000001204033704200220335ustar00rootroot00000000000000pymc-2.2+ds/pymc/examples/gp/more_examples/Duffy/africa.hdf5000066400000000000000000001232671204033704200240430ustar00rootroot00000000000000‰HDF  ÿÿÿÿÿÿÿÿ·¦ÿÿÿÿÿÿÿÿ`ˆ¨ èTREEÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿHEAPX(Èdatamasklonlat0ˆ¨ (TITLE (CLASSGROUP (VERSION1.0 8PYTABLES_FORMAT_VERSION2.0 `x(€˜€˜ 8shuffledeflate@˜kêÂK (CLASSCARRAYSNOD (+øØ°H (VERSION1.0 (TITLE X(€˜€˜ 8shuffledeflatex˜kêÂK (CLASSCARRAY (VERSION1.0 (TITLETREEÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?q‚í9x˜TREEÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡’“f(%”û<‹•$P†–dª—MxŘ%ŒšS 7›P´Šœ1ÈÚ'Ü Ÿ!ð2 BS¡/•¢,Ä£Ø@ǤŸTŸ¥<h>¦=|z¦|˜ (viewy-x+  ?@4 4ÿ˜À kêÂK (CLASSARRAY (VERSION2.3È*`« ¢î>ÀNž²š®Ê=Àð2ÃFY•=À“ÇÓò`=À6\äž®*=ÀÙðôJYõ<À{…÷À<À£®Š<ÀÁ®&OYU<ÀdC7û <ÀØG§®ê;À©lXSYµ;ÀLiÿ€;Àî•y«®J;À‘*ŠWY;À4¿šà:À×S«¯®ª:Àyè»[Yu:À}Ì@:À¿ݳ® :Àb¦í_YÕ9À;þ  9À§Ï¸®j9ÀJddY59Àìø/9À@¼®Ê8À2"QhY•8ÀÔ¶a`8ÀwKrÀ®*8Àà‚lYõ7À½t“À7À` ¤Ä®Š7Àž´pYU7À¥2Å 7ÀHÇÕÈ®ê6Àê[ætYµ6Àðö €6À0…Í®J6ÀÒyY6Àv®(%à5ÀC9Ñ®ª5À»×I}Yu5À^lZ)@5ÀkÕ® 5À£•{YÕ4ÀF*Œ- 4À辜ٮj4À‹S­…Y54À.è½14ÀÐ|ÎÝ®Ê3Àt߉Y•3À¦ï5`3À¹:â®*3À\ÏŽYõ2Àþc!:À2À¡ø1殊2ÀDB’YU2Àæ!S> 2À‰¶cê®ê1À,Kt–Yµ1ÀÎß„B€1Àrt•î®J1À ¦šY1À·¶Fà0ÀZ2Çò®ª0ÀüÆ×žYu0ÀŸ[èJ@0ÀBðøö® 0ÀÉ F³ª/À34ž@/ÀT\Uö]Õ.À™…vN³j.Àß®—¦.À$ظþ]•-ÀjÚV³*-À¯*û®À,ÀôS^U,À:}=_³ê+À€¦^·€+ÀÄÏ^+À ù g³ª*ÀP"¿@*À–Kã^Õ)ÀÚtp³j)À ž%È)ÀfÇF ^•(Àªðgx³*(Àð‰ÐÀ'À6Cª(^U'À|lË€³ê&ÀÀ•ìØ€&À¿ 1^&ÀLè.‰³ª%À’Pá@%ÀÖ:q9^Õ$Àd’‘³j$Àb³é$À¦¶ÔA^•#Àìßõ™³*#À2 òÀ"Àx28J^U"À¼[Y¢³ê!À…zú€!ÀH®›R^!ÀŽ×¼ª³ª ÀÒÞ @ À0Tþµ¼ªÀ¼¦@fgÕÀDù‚ÀÐKÅÆ¼*À\žwgUÀèðI'€ÀpCŒ×¼ªÀü•·gÕÀˆè8À;Sè¼*Àœ•˜gUÀ(à×H€À´2ù¼ªÀ<…\©gÕÀÈמYÀT*á ½*Àà|#ºgUÀhÏej€Àô!¨½ªÀéԕϪÀŽYö$À(3ÞVzU À@Øb·Ïª ÀX}ç% Àh"lxzUÀ€ÇðØÏªÀ˜lu9%À°ú™zUÀÀ¶~úϪÀ°·¶Jþ¿àwõªú¿L8 U÷¿0–"ùJô¿`à+ºõªð¿ Ujö@«ê¿`é|x–ä¿€ûõ׫ڿ€Hˆò­Ê¿Ð”Öß¿ãüM¨Ê?ÀaLú{©Ú?€œ{hÿã? ùªê?ð9w»^ªð?Àïmú³ÿó?¥d9 U÷?p[[x^ªú?@R·³ÿý?ˆc${„ª@x¾Ÿ/U@XºÙÿ@Ht–Y„ª@8Ïù.U@*˜Ùÿ@…8„ª @øßƒ×.U @Ø:ÿvÙÿ @È•z„ª@TøúZ—ª@Ì¥¸ªì@DSvúAU@´4J—*@,®ñ™ìÿ@¤[¯éAÕ@ m9—ª@Œ¶*‰ì@dèØAU@t¦(—*@ì¾cxìÿ@\l!ÈAÕ@Ôß—ª@LÇœgì@¼tZ·AU@4"—*@¬ÏÕVìÿ@}“¦AÕ@”*Qö–ª@l#ö? @¾BæÊ ª @zÅrK!@2ð£ö!@îÆ‚Â ê!@ªajKU"@bt@ö¿"@Kº *#@Ú!þaK•#@’øÜ öÿ#@NÏ»± j$@ ¦šYKÕ$@Â|yö?%@~SX© ª%@6*7QK&@òùõ&@®×ô  ê&@f®ÓHKU'@"…²ðõ¿'@Þ[‘˜ *(@–2p@K•(@R Oèõÿ(@à- j)@ƶ 8KÕ)@‚ëßõ?*@:dʇ ª*@ö:©/K+@²ˆ×õ+@jèf ê+@&¿E'KU,@â•$Ïõ¿,@šlw *-@VCâK•-@ÁÆõÿ-@ÊðŸn j.@†Ç~KÕ.@>ž]¾õ?/@út@ÿ••&¥j>@[…zúŸ>@¹ltÎOÕ>@Øc"¥ ?@sCSvú??@Ñ®BÊOu?@-2¥ª?@‹…!rúß?@txã§ @@".R%@@Òã÷6ý?@@€™ïà§Z@@.OçŠRu@@Þß4ý@@ŒºÖÞ§ª@@:pΈRÅ@@ê%Æ2ýß@@˜Û½Ü§ú@@F‘µ†RA@ôF­0ý/A@¤ü¤Ú§JA@R²œ„ReA@h”.ýA@°ŒØ§šA@^Óƒ‚RµA@ ‰{,ýÏA@¼>sÖ§êA@jôj€RB@ªb*ýB@È_ZÔ§:B@vR~RUB@$ËI(ýoB@Ô€AÒ§ŠB@‚69|R¥B@0ì0&ý¿B@Þ¡(ЧÚB@ŽW zRõB@< $ýC@êÂΧ*C@šxxREC@H.ÿ!ý_C@öãö˧zC@¦™îuR•C@TOæý¯C@ÞɧÊC@²ºÕsRåC@`pÍýÿC@&ÅǧD@¾Û¼qR5D@l‘´ýOD@G¬Å§jD@Êü£oR…D@x²›ýŸD@&h“çºD@Ö‹mRÕD@„Ó‚ýïD@2‰zÁ§ E@à>rkR%E@ôiý?E@>ªa¿§ZE@ì_YiRuE@œQýE@JËH½§ªE@ø€@gRÅE@¨68ýßE@Vì/»§úE@¢'eRF@´Wý/F@b ¹§JF@ÃcReF@Àx ýF@n.þ¶§šF@äõ`RµF@Ì™í ýÏF@zOå´§êF@(Ý^RG@غÔýG@†p̲§:G@4&Ä\RUG@âÛ»ýoG@’‘³°§ŠG@@G«ZR¥G@îü¢ý¿G@ž²š®§ÚG@Lh’XRõG@úŠýH@ªÓ¬§*H@X‰yVREH@?qý_H@¶ôhª§zH@dª`TR•H@`Xþü¯H@ÂP¨§ÊH@pËGRRåH@?üüÿH@Î67¦§I@|ì.PR5I@*¢&úüOI@ÚW¤§jI@ˆ NR…I@6à øüŸI@äx¢§ºI@”.ýKRÕI@BäôõüïI@ð™ìŸ§ J@ OäIR%J@NÜóü?J@üºÓ§ZJ@¬pËGRuJ@Z&ÃñüJ@ܺ›§ªJ@¸‘²ERÅJ@fGªïüßJ@ý¡™§úJ@IJ™CRK@rh‘íü/K@ ‰—§JK@ÐÓ€AReK@ (TITLE (FLAVORnumpy 8 ?@4 4ÿ€ø2 kêÂK (CLASSARRAY (VERSION2.3 (TITLE (FLAVORnumpyƒÞCDÀÔ($™UåCÀ&s,ïªÊCÀw½4E°CÀÈ=›U•CÀREñªzCÀkœMG`CÀ½æUUECÀ1^óª*CÀ_{fICÀ±ÅnŸUõBÀwõªÚBÀSZKÀBÀ¥¤‡¡U¥BÀöî÷ªŠBÀG9˜MpBÀ™ƒ £UUBÀêͨùª:BÀ<±O BÀb¹¥UBÀÞ¬ÁûªêAÀ0÷ÉQÐAÀAÒ§UµAÀÒ‹ÚýªšAÀ$ÖâS€AÀu ë©UeAÀÆjóÿªJAÀµûU0AÀiÿ¬UAÀºI «ú@À ”Xà@À]Þ®UÅ@À¯(%«ª@Às-Z@ÀQ½5°Uu@À£>«Z@ÀôQF\@@ÀFœN²U%@À—æV« @ÀÐa¾¼à?ÀsöÎh«ª?À‹ßVu?À¸ðÀ@?À[´m« ?ÀþHVÕ>À Ý!Å >ÀDr2q«j>ÀæCV5>À‰›SÉ>À,0du«Ê=ÀÎÄt!V•=ÀqY…Í`=Àî•y«*=À¶‚¦%Võ<ÀY·ÑÀ<Àü«Ç}«Š<Àž@Ø)VU<ÀBÕèÕ <Àäiù«ê;À‡þ .Vµ;À*“Ú€;ÀÌ'+†«J;Ào¼;2V;ÀQLÞà:À´å\Š«ª:ÀWzm6Vu:Àú~â@:Àœ£ŽŽ« :À@8Ÿ:VÕ9Àâ̯æ 9À…aÀ’«j9À(öÐ>V59ÀÊŠáê9Àmò–«Ê8À´CV•8À²Hï`8ÀUÝ#›«*8Àøq4GVõ7À›EóÀ7À=›UŸ«Š7Àà/fKVU7ÀƒÄv÷ 7À&Y‡£«ê6ÀÈí—OVµ6Àk‚¨û€6À¹§«J6À°«ÉSV6ÀS@Úÿà5ÀöÔê««ª5À™iûWVu5À;þ @5ÀÞ’°« 5À'-\VÕ4À$¼= 4ÀÆPN´«j4Àiå^`V54À zo 4À®€¸«Ê3ÀQ£dV•3Àô7¡`3À—̱¼«*3À9aÂhVõ2ÀÜõÒÀ2ÀŠãÀ«Š2À"ôlVU2Àij 2ÀgHÅ«ê1À Ý%qVµ1À¬q6€1ÀOGÉ«J1ÀòšWuV1À•/h!à0À7ÄxÍ«ª0ÀÚX‰yVu0À}í™%@0À ‚ªÑ« 0À„-vû¬ª/ÀÊV—S@/À€¸«WÕ.ÀT©Ù­j.ÀšÒú[.Ààû´W•-À&%= ­*-ÀjN^dÀ,À°w¼WU,Àö  ­ê+À<ÊÁl€+À€óâÄW+ÀÆ­ª*À F%u@*ÀPoFÍWÕ)À–˜g%­j)ÀÜÁˆ})À"ë©ÕW•(ÀfË-­*(À¬=ì…À'Àòf ÞWU'À8.6­ê&À|¹OŽ€&ÀÂâpæW&À ’>­ª%ÀL5³–@%À’^ÔîWÕ$À؇õF­j$À±Ÿ$ÀbÚ7÷W•#À¨YO­*#Àî,z§À"À4V›ÿWU"Àx¼W­ê!À¾¨Ý¯€!ÀÒþX!ÀHû`­ª ÀŽ$A¸@ À¨›Ä °ªÀ0îÑZÕÀÀ@IÀH“‹1°*ÀÐåÍáZUÀ`8’€ÀèŠRB°ªÀpÝ”òZÕÀ0×¢Àˆ‚S°*ÀÕ[[UÀ 'ž³€À(zàc°ªÀ¸Ì"[ÕÀ@eÄÀÈq§t°*ÀXÄé$[UÀà,Õ€Àhin…°ªÀðwak¶ªÀæË À Âj,aU À0gª À@ tí À`±øMaUÀpV}®¶ªÀ€û À  †oaUÀ°E жªÀ€Õaþ¿À)"êú¿ài2ãmU÷¿ ´;¤ô¿@þDeêð¿ÀœLܪê¿@%¯Î1ä¿sƒ¡«Ú¿7QKs«Ê¿ qs*ù¾&¤à©Ê?€êçMEªÚ?À`á$Íÿã?€Ì΢wªê?^‘ªð?àÑTOæÿó?À‡KŽ;U÷?€=Bͪú?`ó8 æÿý? Ô—¥ª@€/EHU@pŠŽäòÿ@`å „ª@@@…#HU@0›Ãòÿ@ö{bª @Q÷HU @ð«r¡òÿ @Ðî@ª@à°4ð£ª@X^ò?ù@È °NU@@¹mߣ*@¸f+/ùÿ@(é~NÕ@ Á¦Î£ª@odù@ˆ"nNU@Êß½£*@pw ùÿ@è$[]NÕ@`Ò­£ª@ÐÖüø@H-”LNU@ÀÚQœ£*@0ˆìøÿ@¨5Í;NÕ@㊋£ª@HH¤mü? @ƒ§ª @¼õa½Q!@xÌ@eü!@4£ §ê!@ìyþ´QU"@¨PÝ\ü¿"@d'¼§*#@þš¬Q•#@ØÔyTüÿ#@«Xü¦j$@L‚7¤QÕ$@YLü?%@À/õó¦ª%@|Ô›Q&@8ݲCü&@ð³‘ë¦ê&@¬Šp“QU'@haO;ü¿'@ 8.ã¦*(@Ü ‹Q•(@”åë2üÿ(@P¼ÊÚ¦j)@ “©‚QÕ)@Äiˆ*ü?*@€@gÒ¦ª*@<FzQ+@ôí$"ü+@°Äʦê+@l›âqQU,@$rÁü¿,@àH Á¦*-@˜iQ•-@Tö]üÿ-@Í<¹¦j.@È£aQÕ.@„zúü?/@@QÙ°¦ª/@ü\¬¨ 0@ZKþ?0@¸ê:TSu0@V*¨¨ª0@rÁüýß0@Î, PS1@,˜ø£¨J1@Šè÷ý1@æn×KSµ1@DÚÆŸ¨ê1@¢E¶óý2@þ°¥GSU2@\•›¨Š2@º‡„ïý¿2@ósCSõ2@t^c—¨*3@ÐÉRëý_3@.5B?S•3@Œ 1“¨Ê3@è !çýÿ3@Fw;S54@¤âÿލj4@NïâýŸ4@^¹Þ6SÕ4@¼$Ί¨ 5@½Þý?5@vû¬2Su5@Òfœ†¨ª5@0Ò‹Úýß5@Ž={.S6@ê¨j‚¨J6@HZÖý6@¦I*Sµ6@ë8~¨ê6@`V(Òý7@¾Á&SU7@-z¨Š7@x˜öÍý¿7@Ôæ!Sõ7@2oÕu¨*8@ŽÚÄÉý_8@îE´S•8@J±£q¨Ê8@¦“Åýÿ8@ˆ‚S59@bóqm¨j9@¾^aÁýŸ9@ÊPSÕ9@z5@i¨ :@Ö /½ý?:@6 Su:@’we¨ª:@îâý¸ýß:@NNí S;@ª¹Ü`¨J;@%Ì´ý;@b»Sµ;@Âûª\¨ê;@gš°ý<@zÒ‰SU<@Ú=yX¨Š<@6©h¬ý¿<@’XSõ<@òGT¨*=@Në6¨ý_=@ªV&üR•=@ ÂP¨Ê=@f-¤ýÿ=@˜ô÷R5>@"äK¨j>@~oÓŸýŸ>@ÚÚÂóRÕ>@:F²G¨ ?@–±¡›ý??@ò‘ïRu?@Rˆ€C¨ª?@®óo—ýß?@…¯¯u© @@3e§T%@@ãŸÉþ?@@‘Жs©Z@@?†ŽTu@@ï;†Çþ@@ñ}q©ª@@K§uTÅ@@û\mÅþß@@©eo©ú@@WÈ\TA@~TÃþ/A@µ3Lm©JA@céCTeA@Ÿ;ÁþA@ÁT3k©šA@o +TµA@À"¿þÏA@Íui©êA@{+TB@+á ½þB@Ù–g©:B@‡LùTUB@5ñºþoB@å·èd©ŠB@“màT¥B@A#ظþ¿B@ñØÏb©ÚB@ŸŽÇ TõB@MD¿¶þC@ýù¶`©*C@«¯® TEC@Ye¦´þ_C@ ž^©zC@·Ð•T•C@e†²þ¯C@<…\©ÊC@Ãñ|TåC@xíÐ0Ã4NP}CX‚ 0Ð200`À€5‹ 0`À€ 0ðnàÍÛ‹xíÐ0Ã4NP}CX‚ 0Ð200`À€5‹ 0`À€ 0ðnàÍÛ‹xíÕÁ 1DÑé¿Â´‘ v… 8ç²|O Âóàœ €@N@ÊÍf² øôEUýÕšoN ‚Ãݾ‡u÷«è¯Ý{uö €A)8œÑ-à{Xw¿ŠþÚ½d €l p÷7áNó ÿë»ÿ\ªñïxí•Á À Ù®Á-E2å‘H}`™òÁJøìGke_e,siº”ê¢í]³3ˆùƒô§*ð¼k1lZœwîÁLË¡e,ha¹Ö¢g¥YbXI>ùºè—õb6½£ËEÛ»¦‡Ð2éøqF­EÍKƒ™'4/ˆ”³DÓ'Rð´0Sä©勱›~Y7fÓ{º]´½kz-ƒþˆgÔZÔ¼4˜yBó‚H9K41}"O 3EžhQ´Y7Æè=ýÿý­{ }Ç*ð|ÜmuyÎãï܃ùœ`¶’-,×[Íóø{x Íöæúƒxí•a …0 ƒ{ÿz Oà+›âƒdí²?ŽÔ¤ã«Ã}a™ šÚn…5“œ$à虣0‘ËÂâ¤% 4˜è¹Wž˜&%Màï¾¾k•iÜžôd7ÍÇvÐãûÂöÆ2tµ­2«A˜ä$gÏ•‘œ'-I ±DÏÂX蘱ƒ”Àý÷]{ye*üú…gP¬M€º¡Ç÷…ãe6èjå>a’“3sLèGe'-I FOÄ}VÃ4)i'd÷õ] ˜‘ëé3ÈbÂ¥*ôP"Àÿ/¥ÿ~‰çC&¿,©tUº‰ÅIKh(ѳ0:fì %$pÀßùûØW¦Â¯_xÀÚ¨z|_øø"ôxíÕ  DAú'´ ´Äã3ç@<Ö‘Ìî ¾2ºCèõãUŒB¼Ü…¸”Ï0ËÊ7€³¨~b§½xš8ÑžB®a‹Üá.[še%*΢ºYn{ñ4q£=…\à ¹! Â]2¶4ËJTœÅ›…ræi¼÷› àZß»|?QdfAÆH‚³¨îýu¼ ´xíÕÁ !DQú¯Ð6¬À zÙ+“|bO{ažqçL\F¬9-±…·"PvfÃè·C92úÁjW²,ž^{¾b÷Ï•éÇï'‰ðôÿ7aåQñÐþï+§CÙÁú¹ŠW²,ž^|ÀZûûk¼‰À]¼€Ü›‘÷ÁÝìˆ!`A«4]ð&ųkŠª-i»“rZUšLÂ&nf›†ç‰IÃ×4åGb:î1L f·1rÖ³O®Žå‹™^ŽÃ—Ñ©]Ó ®’æ<çðÙ_ãHîâäÞ쌼nìf@  Z¥é‚7)ž]STmIÛ”ÓªÒd6q«0Û4<L¾Þ )?ÓÉpab0 ¼‘³ž}êtu-_Ìôr¾ŒN…ì èšu•4ç9€ÏþïD"p/ ÷fgä}pc7ûbXÐ*M¼Iñ욢jKÚV•&“°‰[…Ù¦áuaÒðõMù‘˜N†{ ƒYàmŒœõìS7¬˜éå8Ì‚N…ì èšu•4ç9€ÏþïD"p/ ÷fgä}pc7ûbXÐ*M|øÓU {Ó]9­*M2a· ³MÃÿÿ>)„ö$Cô‡Tù¿ÿG“Ž4xÕ•Á Å0 CÿþvNÐ!„H A!5rO‘-lù]zß¿ožy& 3SSÙ—¤Uæêú`rh)óÕcÙ™£uæÆÄëAgr¡Ûö€¯¿¬9‡nÕ½·´ ðVSÏå}ñ¸¾þTØêú¼óÌZ†¦¦²/I«ÌÕõÁäÐRæ«Ç²3GëÌ;ˆ×‚Î åB·í_Xs„ݪ{mià­¦žËûâñ|ý©°Õõy癵 MMe_’V™«ëƒÉ¡¥ÌWegŽÖ™w¯;AÊ…nÛ¾þ °æºU÷ÙÒ.À[M=—7é¡ÂV×'“3k°šÊ¾$­2WדCK™¯Ëέ37î ^w:ƒ” ݶ|ý`Í>t«nåÿ tÉxÝ”QÄ D½ÿ { OÐ5«¾Ì@bêF‡Íc¦nïgWûÐê]‡×ôd³1QÝÐÖ»2¹´é18Q .np¼l™>›LE“L\D8Œ]¤Rcà¹Ř©»ÞËå:¼¨mvÂ]—6ˆmz²Ù‰˜¨nhë]™\Úôœ(78^¶LŒM¦¢I&."Æ.R©1ðÜ€bÌÔ]ïår^Ô6;áî[Ä6=ÙìDLT7´õ®L.mz Î@ˆ‹/[¦Æ&SѤc©Ôxn@1fê®Oäòÿ*¨mvÂ=©Œ>ù䡟1Q…¸«ˆì¿×ô$' ÄÅ Ž—-Óc‚©hÒ‰‹‡±‹Tj <7 3u×{¹ü>³…Öxí•AÄ ùÿ û ^À¢%¹q˜¸²ªrÉ!Š5±Ké]uÚO_Kõ¨`E•í']€l<ðXÚÉ?MߨZ†VpS@cü^•ím?½‚™ëcÒ½…ŠÆuHÓ0g ÝÖKv0·£Àµ ®¨QæûA F <–v°OÔ6¶–¡Ü”9¿•e{ÛO¯`æö˜të ¤qÝÒ5Ì™B·uÈæv jDˆ2ßÂÙx4á±´ƒ}¢¶±µ ­à¦€Èù­,ÛÛ~z3·Ç¤[% Œë.®aÎz¸bnGïÝwL¥Í×úÏÅbß»_pÁ»@ÿ¾ >¥Z'‹Õ¾w¿ØÐ*¹üα^ ÝÖ)¥Úáxݱ A òÿ„Yã'øt®¦èâŠAëyÂ÷ù÷Ó^üQ©úÀcç —ÊÔܺ/ðˆ¼Õ®2ñÔ}ƒ'ä­vU‰‡^`ð‚XËú¦/º­Ð`ðØyƒFÄ¥2õ·î <"oµ«LàÖ}Gä­v•‰§îD,ÈåæE®UIÈq„YKUöz¸ÂÆVêœép‰Å{ÃR}€Np˜š³>D,ÈåæE®UIÈq„YKUöz¸ÂÆVêœép‰ÃS^,Õ˜Ý÷©I0ëCÄ‚\>`^äZ•„H˜•±T%`¯‡+lœña¥NÀ™—X¼Éh$¦xå± ƒ²ÿ„Yã'øÔ¢4jtq§†Ã<¾ÏŸÂù Úé…F §¿ÏNí³ @¸Æ@šÙÐYeD·êA>ªÎ,Š5å¿þš:K,”óêÚé…F §¿ÏNí³ @¸Æ@šÙÐYeD·êA>ªÎ,Š5å_M%ÊyuíôB£„Ó_€g§öY \ã Ílè¬2¢[õ‰ ŸFUg Åšò¾¦Î µ¼:€vz¡QÂé/À³Sû¬®ñf6tVÑ­úDO£ª³‹bMùásxå±€@ ÃØBÖ`(­Ú¯ÆG*W:EÏsx׿õÌä6Ût™d!šél3M•Mª™ÛLSe”•læ¡VËTe¥›ùÀ}z¦Ì ‹ùL}r›mºL²Íô¶™¦Ê& ÕÌ€m¦©2ÊJ6óP«eªŒ²ÒÍ|à==SfÅ|¦>¹Í6]&YˆfúÛLSe“…jæÀ6ÓTe%›ù@¨Õ2UFYéf>j¹L™A«™úä6Ût™d!šél3M•Mª™ÛLSe”•læ¡VËTe¥›ùÀ…ó}xx핱 Ä0üÿ„Y#ä¿X+lä*U„D¾ïWw¾;hº´ f—UVÔ‰¬¹Å*«(˜ó&ÚE¯Ê* Þ¼ €–Ñë2J¢7mÂõî´à47Z³Ë*+êÄaVá\b•UÌyí¢We•oÞ@Ëèu%Ñ›6áywZaP š-ƒÙe•uâ€0«p±Ê* æ¼ €vÑ«²J‚7o eôºŒ’èM›@h‘µàh37Z³Ë*+êÄaVáû÷ÿOsÞÃÚE¯Ê* Þ¼ €–Ñë2J¢7mÂJü?xå±òÿ„Y#$ÕàÎrcBwèl}>x^>S`HÆ„Z[(I-fIËôXPcÍä(¦ˆ3ÞEƧ('ˆ3ØGxÖ†¸ð.Þ@©‡õæRœxC•&ÔÚBIj1KZ¦Ç‚k&G1Eœñ.‚4³0Ä…wñJ=¬/âÄë4ª4¡ÖJR‹YÒ2=ÔX39Š)âŒw¤qà)Ê â öžu€!.¼‹7PJXþ¤8ñ:Í…*M¨µ…’Ôb–´L5ÖLŽbŠ8ã]ixŠr‚8ƒ}„g`ˆ ïâ ”zX?]2Ixå± À@²ÿ„Y#$í w¦#×ü<í]¿?”HÔ(²ÄŽðÌ6¦”Š)1æI‚j^†´¿*1fJ†f^f´¿é°æC3ð ¹ë3 ¶¹A"KìØÏlcJ©˜cž$¨æeHû«c¦dhæeFû›k04Ϥ@xí‘É 1CíþLSArx>ùi  Œo2H_ËqäoÜo Ôh*D ‡>j4!Â1‡:[)‘á1ç½Ì{¶øëaÞ³|w™Ÿ…þw"îrìsJ<.xû÷ èÑ$„D ‡>j4!Bã ÃEDJdX¨¤°E’÷+)K‰û)O‰çoÿ~!=š„ˆ¡ñÐÇA& $BhrØ¢ˆH‰ •¶(BR"Ââ~%e)q?å"}ìß/d A“14ú8¨Ñ„DƒB[)‘aa ’ÂEHJDXܯ¤,%î§<%^ÌÙïÂxíU’à 4ÿÿà}£/¸c#W“^‡ ÓiaÁÝ6¾^¦m›¶‚a# û#­âúý WZDýj«Ù™¶†Pþ¸.I–í…$*Îèh™ò>ó zñò‰!zø ¢ádiÎÚuáßEúã${?IÛ¬3øã!Éã}ÂÈ> ’בݽ–bU'­¿Û)üØ–¢ì¬ê\¼ŽÓQ›Öøäà ‡o$Hø>h¤¿Éa؈GY\üØ‚7¢XoÏÙ59g­!”ÿ肳*H$!^q²4g áͽVêhuŸ0²OÃóJò̹E ˆª_€­]§âõ‚–«ðk[v܈b½=g×äLœµ†Pþ£ Ϊ ‘\„xÅÉÒœ)„7÷ZQ¨£Õ}ÂÈ> Ï+É3çR ª~!¶vN4Š× vÚž{£4e×¼^QCJÙÕ.LtwZÂY¹ñzyî}ð÷#t¹QÙ§á³»NW§Uõ °µët¢ñ¢{ÿ&l³ðxíU ®Ã £÷¿à®±¼g>•’¦ ±:m€´©‡».Ïgol›‹ØìH)Ù "ˆF޵ðÖr1=Û@,ó±µ¢’"‹êIe^žœ*p”=V-* ‚ÖK@âäs^”óÏ?;åkk?©ËNú.BóÇñ°/Éßu†Ÿ—¤Tt_ŒÒ7ü" ÃõyÙ"rƒÂ6ûט-i¦÷—ÂT?Ug™¬¯šh’›¬RxèÄÎ W }»„DÊÊœËâð¾ï>«|“éÊ6ù¯ê¢ý×Åèð莔\ˆwöÙÖ@”&‹"À¥™^¤J^ºÜT`øE†ë’¶„—À•­¹"Ϋ;3ˆ/õ·h¢ðPíÌ‚Ã0û×)¹`á)` J“EÚ¥™^¤J^ºÜT`øE†ë’¶„—À•­¹"Ϋ;3ˆ/õ·h¢ðPíÌ‚Ã2Û(gZt°ð0°£_cêÔ–Û+ªôàà¥ËM^÷þM…ÑŸ±øýÒ¹,Ž´uï“ú¿íÞÿøøÏ xíU[r„0 cïÁ^ƒ´ql+¦ ˘é‡73aË/†}?]¯æ‘‹¬×ýµ…ÐM–<+èw»©IÄÛcFÒ ŒjoÅZ‡=f4Û»ò„ûôº”<ð“ Ê:Ç8‹ßs¡ÎpD©†• œï»‘ú^´Ìèâ ­jP—ô¡®ÀM„£Ã\4ÆñY›Eu±BöÑ@«±B¡SM=W‘ýDú-äˆ 1,SZ:ˆ]eb9„¾|ŸËÑ(ý5òØF˜fi½™sÒå;"Qk{’X4r|O4-â]hfÀIOì“13L¢w_ÐfžÕÿ8[õÇ)X † ³LˆG€dö&ĈZ²;ÿfBÓÏ@ãë|mÍ%Y“jÕMÉ.‰Aô½éºT¶)¨¹>pá²lQ$æóƒ–xݺ^š*à¤'vZ¸°Ó´f Ðãø>_[sÉE+[Ôwì’Dß›®Keë‘‚šËá7.Ë%@b>?hé€×­ëu¡©Nzb§… ;Mk¦ÀÝãøü÷™ªg¾ÏÿL™·‡aÙKà&ÂeÙ¢HÌç-ðºu½.4UÀIOì´pa§iÍ ÇñÔ?/xí• ®Ã €íý/¸kôo€ àO ]ºd¸M"à§®çkÇÇZ9J);¶©À‘}m­Á‡ªBtŠÐºî…ðƒ{Ð\õî‹.­1Ö¦!ÆÜ5Û”õˆ"+^$‡G ël’º™xôti;Œ®š ¢¦”³¤¿½3÷Ûˆà‡nùaÁ6Ÿóxí•Aƒ DÃý/è58E¨†Èm7¸(ŸýSÅûÕr¬Â€Ü °+@sH±±V¹ 6ãdœóþßø~¿¸*˜î³èAåî|¸X§[,Ö;*`þB!Ñ£ƒ939>/Ùï‘Ò©ˆÖCµ-Wc¶²@¯Í!yT›q2GÜÕfø¥4б™Ð4u[¶p±,†Ó€Ö h­Í`¬Lb_ÉmЊÙöåj,ÃV6è 9$oƒƒÊb3N@ÀAæˆ»Ú ¿”:6Ú¦nË.–eÀpðš­µŒ•Iì+¹ Z1h4–a+óÜ϶~5RIo3dxî?¦Ü±™æv ©Û<^fr sxî?ŠûöMõgo,¨˜ý“á}êxí•Qƒ0 CËý/¸kp‚-¡#Éhê¯ZšÔ”Swñô â<׬£V'Іe€›ªÁÖ ;BUÌE áÞa'†mêð‘UŒ0ÖA£p7JgHQU̳—¼&íîÐë*Q~Ci# ­bEøÛãJ:‘›Tá-_‹ÖørÖΗ€nªR,v„ ÒÀÚ6BA¨ÃG¢à½=a8CŠ‚ÙeÎ PÚCçÉå á-ß‹ŠÝÜ3ÂMU ÃŽDX›B ÃF(uøH¼·'Œ gHQ0»Ì9Jaè<¹D \-Qìæž¡®ïþ= ½ôŸ¬:†@Á{{B`´fÂì2çCŠœ'—ƒ$e|¡W<Ãxí•QÃ0CÓû_p×è ¶¶“5¹@þ3|tÌ žUuß•±u ˆEclcÌ$äõˆ‘C(-à½à2Óô´åwû%Oñû 8J­ ×Y¦ÁýiñË<£uà¦^h˜?»@ŽxV6ôVþ󶾜Ÿ›«ŒòIc½¥ýÈz@›e'êó“%)tž€ØÞ.?–})Ví)§PÞÒHÏÔA@êmÖœ (I±X˾DlogO9€ƒ«ù±Ü+İvû3”Z­8˜w™ÖÞÍ›pm{NR¬ÖF³®;ÀÛY.-O9~9wcxí•A„0 Ëÿ?¸ßàljà2Â"á쨵3AÚ}7×öéãõõGÕ%5ó'»×\ŸÌÝÍ߬ì¥á·p.ç,ú¾íç tŽdçO†!ôËF4÷ÀO UŽîãš—F"àæ~Ršˆäè¾XóTýÃ]J˜hÜ ¿ÇÄ´ àè>V¢DspóG¿{d:rt_Y")núèWÓh¤÷B UðâG·š—F"€ ÝRšˆ7~ô[óTÆ?M©¶Cxíѱ €@ CQØAÖ¸   ½XŽt¿r®$–•<Ö:ÿîy¶ÀyýºÑ^j‚5"2pSÑW¥æ^á1%HÍÂÉóý¼kž-ð—•öR, ™Á€› ¿h5÷ @lNîœ/ì_à9+MæøËÊ1·JCf`ï•døEk:¸w¿ÄFÞfÑ)Ì~_mÝ<~/È|m®–g~@ÙšLݺ½¤­íbÔ¾êÅö|ƒ¦EËxí‘Ñ €@ Cuÿ]à ôï 4ô ¥! ý»–Ääyßcsþ³!0†¾6Þ¤úü¹¦7xí±:N¶ÚXQú"™äŒ¤‘µ,·Ôm(0(ed-B-×㟠9ö¥ó&ÕçÏ%¼Éc‡|ÌÕq²ÕÆŠÒÉ$g$¬e¹¥nCAñ(#kj¹vÏÜXC±7Ǿt¶èn¢„7yì0‰¹:N¶ÚXQú"™äŒ¤‘µ,·Ôm(0(ed-B-;k(á|â»q€L³ê0‰ ;N¶ÚXQú"™äŒ¤‘µ,·Ôm(0(ed-B-×î8~¿2xíU;Å0 jïÁ^#'h¥LþH uŠÔL,lxÃãíwr/;‡s˜Î‚¶ñDGÕM„Äh•µGËjcUêkÖYyT‡íQ¡D\:e$=mèãmaL‰Ñþ3"‘3úŸñõú;¸—ÝùLgAÛx¢£ê&ÂFb´ÊÚ£e5]תÔ׬³ò¨Û£B‰¸tÊHz .ÚÐÇÛ˜£ýGD"g<ô?1âûõGv˜ÝCÚ|< ÚÆU76£UÖ-«é¾W¥¾f•GuØJÄ¥SFÒcpц>ÞÆ”í?"9ã¡ÿ‰áú1Ùav ióýñ,hOTTÝDØHŒVY{´¬¦ÿ¿§ÿt ü087e$=mèãmaL‰Ñþÿ[y%xí•Q À Cëý/è5<Á”A?„IÊú1Dhlò†Žq©štØ”(ñ…rHnn ü¢„Áݯ †;Wxº64ÑÀÆ™üV”är’j¿Uæ6%J|¡’›ÍPÁ/Za@hÜýº`¸s…§³®‰6Î,à·¢$—“TŸ[5„N“„ åÜl† ºÇ%;–Ø]J.$„C–ıMÙº¦ßÜ ®üV¤G Hcy݃rHnþßýõ%'K&·lÊ-È‚Ìç÷³MЫýî¿°“ ÝxíÕÁ À CѰÿ‚]ƒ ZõŽ{BOjΖ°ý Ì©ÎXÆ8já™ïÑ\@0Y<]Åí‹^xè_ãÆâe—¸ï‹ZÎ ¶ñÈx5L”ŽqûÂ7žиd©|Æ%.üf§–s KÛeŒWsÁDéx·0|ãYK–ÊWa\ü· þ[Ñ ÁÿïŸh=>{ÇÞÛÇc…¶èÆ1.qºÖD2xíѱ À0 Ádÿ³†'HŠ, 6ΰj"ÿײï¦Îf´?VXQÉK#–ñWŽ—qT­/1”¿‹:v½þ±RgÕ™”¼tr™þåx™&Õû_ñSyñSÄü=qØõú”–ú,>)yáa/Á¨ ¢Š— Pg1Ïlœ¦´ÀœÓê’—t›œw¼È”óxÙ-¾xòxíÕÁ À ÁЃiƒ ‘|‹QðÿÄy×sÊ3‘'Ý–„ZC†ÓÀa·'/»!kèX!†›ž rPþh  uD1 6{𲱎:€•+äðÐ#ˆYiÈAyÄK°!ÄàŒ“ú€—d-<XùÝ×ò” fuÄï¿\ñRÞ‹bxÊõ/õ¥ø`%ýZ^¯nê&xí•A À0Íÿ?˜oäéUÁ¤fk< eÜ t-åøRN·Â>üå±è^=ÝŠ…Wt½`|õQ6Åä °µÃ–®C ±t¼xówmƒ ¤(ž¶OŸFöqá7E)È`‹‚4k¤"®J’³DÞÿžî_ÀmþDIS?@$HY>ØYá“i á‹ Ž5­xí‘Á ! Ã`ÿo &àØ!*²+ú$öZÞ›ðó’šÃ­Ìhœ8 ÷"&VG‹ ·™ã½|âð£MªÃ­Œd›9 ÷bF›uG‹É¦©Ó½lñ¡½œrb´Iõ§%¡W—…{©N-†¯°ßóR7xíå” ¦™£O ÓÜ ÚVh17@ÿèìåøjxí‘Á À0ÂÚýì™ }d8É–ÂìµÄy¹Sͧ_-9Ѫ˜‘³¦R¦Á™­H/«Ÿ97f¬ñö«%F8S@3óVÔÊ#84é¥ñu›ƒ´rF™±ÆÛ¹^âkîª7ÕÂz¦˜Â1yÒ‹œi>iåŒÊω¸^ÄPÓ©bßÔL1j¤•ñH/g?PvçxÕ‘A …´Ak,¬Àà¿3íÛºkûľ·uÁÀòC®2y€* ‡•_2u¡džø-ÝÅ…RïÛºP\ýW™¾OŒ@£ê™ºP6oüLMþ/q¡Ôû¶0WÇU¦ï#P…Á¨úC¦.}› ©Éÿ…áʯØÂä…b®2VH¦¯#0u¡ )˜pxÝ‘A „´Ak\}XÃØ9`&pÛs› ‚¦ È”˜²„IÈ$!aH¢È–" çòny® “cÐtáK–0 › …# T™R„ádÞÂ)šü' :9M©±d Ó° R8€@•)E˜ŠLˆCÑä?Ef4a">1 K ¨2äS± r(Âp<C|ËxíÓ± À0DQ{ÿ³†'H †*Bú%Eì»çœ3dvƒRem ÞÅòìÚL#¾†ÃÈ%}GrIkÁ—´KiÏ”Y fJ—¥9x‹³J#Íø#—ô!É%­_Ò.¥¼S†Vñó§tYšƒ‡±8¢‰¦8Œ\"ŠwB\Zº¤—º~Iÿ,~þõY<ŒÝJ4‘‡‘KDñNè‘KK—ôR—5‚sxíÕ± 1CQ²ÿ‚·F&à&p*¤,S¦Hd(÷ÚÔ˦‘ÓAp—3È㾸ìt„]²-j,Œ`>Ÿ*¸|:9œw©á@&×Åe'$ì’mQcaÓ>E«øtr8 Ó]ÃL®‹ËNHØ%Û¢Æ"0ª3äyTÈî?Þ†aòï ›¸ˆÆÀǰKþ}åoóè«õxíÕÁ €0 CÑtÿY£À¹Yú–qŽ …Ú¯÷&Í'©Ke˜å(³$íª‹©& cZŠÁ±b\ž¨x¢Ê†YF%jU]L9YÓR ŽãòF Ë2U¦0L]„e WÕEX¦r £L’µ«.–ž,KÿûÛ¥¨ËÖ û¼.lÿë×Y˜õX¿ãòO» xí•Á €0 Ëþ ²F'€òKÜú%O¤sW`oÙ,YR!è±N¡xóU«–§9ÜÊã9ÅTzwß/LÃN/ÂïØ«›¥‹Ê'-ëä{wß´jAœL¨a§(D­ñ‚ÐJ8½¿cŸn–.*ŸdÕ‚ gwrs¼œ¤[ÈvŠ)Ôn¿:^˜Š^˜ÿD+«y]â`2A´Š°î]A€–¸g!Þ ŠQ+ÒºxEGà?ëàÈxíÕÁ À0 CQ{ÿ»F&HGÐE ó_ ¦Ò ôÔtvP]:ÃdYºYP·Â0¢Ë½n³]xMqùXSÙa•iL“e©2Fa È2÷ºÍvlà5Åå²&ÌÂ*Ó˜&ìRÆ(¬SaQæ^·Ù.‚ ¼~.#qËH–vÙûÿPÏ! #>o¯ÛlÁ^S\~-ƒ·GxíÕ± 1 CQ{ÿoLpÇõJ'ø äÒ…‰õ 9'¬–­°4}ë°,»¾MÂ&Ñ0•ÑU Þ€yÒjØJ‹Ó¶Ë2c[$m S}Quѹàݘ7­`•´8mûÀ.c[$m S}QuѹàÝÂàâ°ŠxQ[°K—ÛÒ0•Ñ2uѹàݘ§¤ixí•1 À0 “ÿ°ßÈ ÚMkÀ¤ iòPÜêÎÐsâ²Å‰J*$Ö²I5âÖXy©%ÜW½…Õ`åeJæÉË'(§‘XËâ´ÈÛb奖p`õVƒ•—)™7/j/yD9ê…ѽÅÊËb·ûï¾zñtgåÅ‘ä«êE‚ýúÒz¹"’<`å¥ÿ}Ü@½…Õ`åeJæ¿ú¤ixå”Á Ã0 íýì™ •ý$C0TX¿¢˜¨» Ï£v&ûÀ@'œT²µdÚyvƳ¾òÊ] Ûšª@¿îÁ·‚Ã^]¯ ‰úz9ì®÷ÜìpR!ÈÖ’içÙúÊC*Ot-0lkªýºß {u½.$èëåT°»VÜ¿r‡®&:à¤B°›—šþ¨¯DÄèZ`ØÖ4VžøVpØ««°Š°Z_/§‚Ý5´—èj`º§*ø§/ vóRÓÿŸ¿1ûŒèZjé#·¦éîÈ·‚Ã^]uMÄÍúz9ì®±¾O?Jˆ>‡xí•; Å0 íû_ð]#'ð ¡mSY^c5Þb û)ò<']ßáh¡Ó+…­¹VéUøRw—µ{±]¢͡ÈZû‚Å  ÝI[)Iéïƒþum‡£N¯¶ævX¥5TáKÝ]ÖîÅv Oˆ6‡"kí Jƒ€vG$m¥$5¦¿zu·PÑF§E [s…cȧQ…mŒ»‹”¶@²]¢͡ÈZû‚Å  ÝI[)IéÐöLÆ-T´Åi‘ÂÖ\áòiTáýïKck$Û%¼ ÚЬµ/(Q Ú‘´•’Ô˜þ>è?ÖŸüxÝ•± À Éþ f &HÊ÷K‘î;ÇPq…} {Ÿs®œ‰Ðj:¡Ã™ëM¨Që!œè\kF•ÒÙx@Æš#©lõŽok0yíV:ëgb´šNèp¦ÆzjÔzç:ךQ¥´C6±æH*[=‚ãßÛZçL®»•û¦ŸƒN›ë»LŒV» ÎÔXoBZá|@çZ3ª”vÈÆ2ÖIe«Gpü{[ë¼€Éõ´r@ðÜæú.“ÕnB‡35Ö›P£ÖC8й֌*¥²ñ€Œ5GRÙêÿÞÖ:/`rôï¿d]'˶zJûÁÍ–RôyiöîrægOÔÉäôò¨ó«ZÐ$çܨ‹òëƒhW6³(Q”•Äè 0t,›Ó,MQð®Ü^Þi*«%¾=cïÕæŒÏ©“ÉéåQçWµ IޱPå×Ñ®lfQ¢(+‰Ñ`èX6§Yš¢à]¹½¼ÓTVK|{Æ^§Í‰+¶&òØœÖb7Þïþc±ÿûᬖø¹Œ}~ H›xÝÐÁ €PBAí¿AÛøhÌ•öK»ÿq™¦»åÿ!ÕÓ«N&ê ùHõô¢#ž® ÄŒîé=G0Ý@‰ÝÛKŽQº€3ÏÊ]ÿ¸ŒÓÝòÿêéU'u…ü?¤zzÑOWPbF÷ôž#˜n ÄŽîí%Ç(]À™wå<¾êdœ®ÿ‡TO¯:™¨+äÿ!ÕÓ‹Žxº‚3º§÷Át%vto/9FéÎÌ8_u2OWÈÿCª§WLÔòÿêéEG<]A‰ÝÓ{Ž`º;º·—£tg>\8f»xÝÁÃ@Â’þL®À©@â…=Ç}uš®kä}ß}¶"'3k„qù>ñ 律TÚ·QÚï's€sù6‰ãq€¨žÿË—IžŽ°û[yŸwŸÍÈÉÌa\¾O|B¹ïâ•öm”öãûÉà\¾Mâx ªçàòe’§ãìÞ+Ë?BlF`Öãò}âÊ}'¨´o£´ßOæçòmÇãQ=ÿ—/“<Èîñ?¸ü#Äöãf0.ß'>¡Üwq‚Jû6Jûñýdp.ß&q<Õó?pù2ÉÓqvÿk^xÝÁ Ä@ /ý7xm¤‚¤‚YÍEà§ 2Ì}¯ÌõÍ|Lx$X?y0Üð¿1h°îà¨Ñç®WQýØÞƒÖ^¯ƒþ©µæNþÿÌü¾Áƒ ï€ë'†þ7æ öÏ5úïÜõ*ªÛ[bÀÚëuÐ?µÖ¼ ÀÉÿÌ ”O¯?Œ ¼¬Ÿ<nøß˜4Ø?wpÔè¿s׫¨~lo‰Ak¯×AÿÔZó‚Ú_-„òéµ`†„w@‚õ“à ÿó€ûçŽýwîzÕí-1`íõ:èŸZk^àä1Ü\xÝÁ À0ÃÚýì™ ]@ç‚sOcGkt÷Ÿ'Äñ,(¯òÿ3©Q…  ½‹"¡2… ¡¼Œ¡Ô„ $£»ŽæC' ßß#ž£îúó„9ž%åUþ&5ªp´wQ@$T¦p"”—Q@ ”špdt×ÑÀ|è$áû{Ä{Ô¡€T(Ìñ(¯òÿ3©Q…  ½‹"¡2… ¡¼Œ¡Ô„ $£»ŽæC' ßwˆî6 H…BO€ò*ÿ?“U¸ÀÚ»( *S¸@ÊË( JM¸@2ºëh`>t’ðý=âHØ» xÝÑ 1ÃÚýì7A»€àdp ç|û)躶Þû?/“†ÊN<¾úaâ éÉ….J8zW ÷û‘&k¨§Þ£ý~¤Éê©·Åè›ýgì½þó2kø§ìÄãÛè &žžX袄¡wÅp¿i²†zêm1ÚïGš¬¡žz[Œ¾ÙÇK¨§™5Äg'ßFý0ñ„ôäÀB%½+†ûýH“5ÔSo‹Ñ~?Òd õÔÛb´ßO4YB=Í\!>;ñø6:臉'¤'º(á@è]1ÜïGš¬¡žz[Œöû‘&k¨§Þ£oö?~4èUxݱ Ä@ Ã>û/økd‚dâX)èR!ƒ÷»ë“³Úà‹‡z`bKc0+éT TŒc§ŒFk‘ŒiîœÁ¤ƒs-°±•5˜<²ÿÞý>9ë ž±x¨&Ö±4³’NÕ@Å8vÊhÔѱɘæÎL:8×ÛXYƒÉ#ûôTŒcë f-ê‰u,Á¬¤S5P1Ž2ut¬E2¦¹s“εÀÆ6VÖ`R±±¨ÇVÌZ<ÔëXƒYI§j b;e4êèX‹dLsç &œkm¬¬Áä‘}õïäxÝÁ Ä@Ã.ý7xm¤‚¤ÁêaòÐ<…Ýwñ®/N‰ãG,±qê¼á¨C{-”±6\uh¯…2Ö¡ÔF³ÍÕÈÅ<“Öh÷Œþ“÷ûâ”9~D¡ÁÛ§ÎŽ:´×BëÐiÃU‡öZ(cJm4+Ñ\\Ì3ivÏè“F”ž/È}f-¤ffÕ9²:'˜yââ‚©¾ÄeÉ¥êâ L¹­×öÐ2¤††Õ8Âb ½ qÙ‚©>ÄÅäRuÙ L¹­×ÎÐbX††Õ8–\ÃN\…¸Kt ­Qˆ‹É%Ê:µÆÀ¤ZÐæ;±Ü™üaE.P¸{@\ôïßA'WýûI…`;\Ä,}À£ÀÈxí‘Á À aÿ»´±#YÎE8¾[Ët&cLY)k1´Le×,†WVÊ^ñ¢¤ dÕ‹ÂoW׌q…%ìÅÐ2„÷ÛF1ÄØÂ‹!l$ª^ ’~¹ûºN½•ÿGWXÂ^ñ"„D1Ä ùÙ݈—=—ö×z1í• ¨·òÿhÀ¥»B¼t8ä3Ä¢ò ˆ–rµ^Œðú¿êJTREEq‚ÿÿÿÿÿÿÿÿíkqï"Xrä'Gsä,+tå1uò6ôu®;æv¥@”w¦E©Œ”JO’Oã®TuަY#·^É¿c€?h?‘?m~‘?r½‘?wü‘R|;’˜TREE9ÿÿÿÿÿÿÿÿ9x?ø>?7? v?ê÷?á@–ûAÅ‘B(#VC¡(~D#-F!2BG7cHæ<vIèA\JïFDKèK3LàPMßUûMêZÚNò_ÄOçd¶PúiQn—R„s'T¿x«U¢}jW ‚ Y,‡ZŒC[ö‘U\Ú–K]·›%^í Ü^'¥É_ܪð`ª¯Ìaš´vbŸ¹c¿¾¯c“ÃndšÈe”Í›e”Ò/f£×ÃfÜfgáõg±æ…h’ë6i’ðÈi™õZjîúójëÿákíÌl ¹mܽnå™oí~píxí‘Á À0 ÄÚýì™ …`"ô8ìoLÎ'­;7>±¨ÜbãÅåÝN£Å´ƒg±&ÀŠ©³æuƒ*f#÷xõÉ Ÿ\Vj³ñ¢âî‡ÑbúɳY`Å”Qó¸C³|ºûæêäÿ,—•Ú £^F‹ FåVcŸ·G§¡b¢IyåP'ÿgÞíÑI¸˜hZb9ZŒxzv+&›•Úc^þ}==]xÝ‘A ÃÀ¿Al >HhJÒpÛÚ½Û7¹kƒ²×Q^ìÞõ<ÈK“¿ã×Î'^|H+~ƒ»8)yåE®ƒ¼ä9é1zë~ áŧtâGXy?â¤äy”¹v>ò’ç¤DÄè­û„—>%{!aåý°«·ó(1mJþ:È‹_¼žˆˆ©Cú°ðâ×¾¶3ߟxÝ‘Á Ãtÿ]à \!B ÷?Ú&{×o~¸:#e÷¢Ô·b/yBÒ@*Fª…^>+ãÃå!¹£u?{é#rR1Në~*ô¢:ùƒVÞ{’1‹1Z÷3±—>"g!ã´î§B/}@ÊBhå½+Åë¡\L³{qj÷S©˜>!g!ô¢”¾àMx푱 À0“ýÌž )"j¬Y_4)bx¸[ P·U@¡GK|kˆéFχ€*ÆÉœÞ š˜Á‡ž<„º¬"ÊÜ8Z2ÜÛTCL;{T1Fä´îÐÄìL>óæ%”&¥º„27aé›Y™‘* ù›€RWªbRûbr51<™C5)Õ•Ù™Z„¥/PêFIÈß”Z™‘«ŠaÐ ^©‰É-üÓÍhxí‘Á À0 Ûýì™ ¥8 arÙß˺[+cng2Р-G Š¿ 7¼”»æ¡€î¥/{6Õd/õª#/OÈ\΄°!kŽ’~mx©—ÍKÝK[ô,Ú½lvxzCFöòaCÖt¼÷¦d^RР=u/è¹1á²—2lQÙËÿ=9"Ýñ.ix/Έ׽dp¡[Ê^àƒ?pýYxí•A À õÿôymoÉ)É%,LEÁÙÙCͳ»C¢±Ù‹2ƒ¡S ÈFÊF/ÀŠB1f{«è8ˆYÝAXÙìE€‚Ð)¢D"f£ ^ D¡˜sÖRñqS(%^AX­§;bBZ…»Q"ÓiÏ–¼ˆ¬÷üÞïûgÎ@¡”xeýR´žîز&Ó§U¸ “\ô·œölIW5›?kã=Wúï?Ý'xí•Á !±ÿmà <ãø:а¼V¹ËêlÔÖ’T9V×msF-°5€t& Á´¡œ½agà`Œ>Za^9'5Kѱ²¸mŸs0j}DjéL@‚©C9{ÃÎ ÀÁ}´Â¼rNz–’Kl+²¸mŸs j}DjéL@‚éC9{ÃÎ ÀÁ}´Âàœ„¡_Ë%¶ëÿ0û79å‡çFÁp— Þ}wö¦!c~fWÞýÕ"XxíÐ0Ã4NP}CX‚ 0Ð200`À€5‹ 0`À€ 0ðnàÍÛ‹xíÐ0Ã4NP}CX‚ 0Ð200`À€5‹ 0`À€ 0ðnàÍÛ‹xíÐ0Ã4NP}CX‚ 0Ð200`À€5‹ 0`À€ 0ðnàÍÛ‹xíÐ0Ã4NP}CX‚ 0Ð200`À€5‹ 0`À€ 0ðnàÍÛ‹xíÕA 0@ü+œ €‰‘ôq@šãÑn!@€ÿJ"ž @€ÈÑSªF @€À€‰Í8xµ“ @`2WO«M xíÑA€ @üÿ§bOÔÔ‹Épš²$Óm³ @€ @€ @à;־˒T˜çÐÆêasµîé›ÿÀ¹®Ãqïç7yzË1†¾Ï£ˆzÔÊ H „ûz“Iejª ¬§ñì¨þç}Fàiž¹eR׳ëÇxí˜Û„ DáÿzY× ê X2‹ Å—Å^¦íiLtc|á  1Ô.AĦÙH ¡Gµp?R›6+…ï=‰c¯zîbÓb'°bN‰¿Ó¢Pe_ˆðñ³7æ;£¸Õå¨húVøío‘g^ª8º3ÑíÌ ^`aìn YPDšÍ_isÒ{ €D˜VÆáÏ­™ðó$ùÃs†xÝ—í„ Dëý_zÍDÀÔ%meÚþ4è•9íǾÿúÚ¼®êÁš0Uµ±xYÔØç)»0¯+TýmûKÓ*¡éR§BuAzˆ{¯b¯*VÆbØZv±œ«…G,Që!#Åꓨ¹˜bWP/K¼rPøÂuR&½Ú-Ѭ^OåA1p‘òr1j­YȰÒôâzÊÄ®m_Ľ>–šF“úe‘ê¡íõ ãï‚ÆÊ¥'o¿»¬ÇÛ;‹Ve=èµÏöüÞü౩ùö›”'éC{=2F6åNµ@û5ù=B#6Á“ènâÆñk"£sÆFr Cnqç"c3ÂÿI"È,ww,°oÒ„Á&\ºÑû4ÆìÞÕù?øâ>àÇ„S)ÌþŒïáõÎŒ#w¦O2áÔ(­/£´ð}盒왢]mÌ,~óaIé4êZc¦qÁài΂òJ•è[( ©xݘA„0 Äèÿ?½·ÆåX'³œ†]År¦¬Õ|=ÿ~í¾ü¢5¼ìç »DmºIóA»~P%z×b '¯úyô®€MF/@¨½l±“׌  Aï ØPôŽ)h•רL´Š9óìÏZ“5’­`Ò< ´Ú@ÍD+5 ­7P#ÑúEͳA+NV¶vaó(К5­]Ø<Ôæ`õGm¨µx¡ú“–K B­>÷£Õ2 šu0øñ6¬5ÝêDϱA½amY[EÎúì '­çÎ:ÅÌó9öú°¥wè9 R´R à8–×¹œÿÝlÄJ×¢TxÝ˜Û Ã0 C“ÿÿé•]jÙÙ“5¨Ò'94I¦ 6gû›?3ò£¯‘ª›3éÂéÚsi-ËbÚš{¨×Û~|3mæETdcöiµãôØH^Ê–këðëÝLf¦JÜtN_Ê™1vž D3ƒÀƒâýZòoŒ2³ ¼£ôbÉ‚2”þËH¥• ³>}-‡ehM°ŒTZ1eEmÊA¥”ÒŠ) z&*%…V\QÑ›0A@9%´âŠŠâ„ Ê)¡W§‹PR꼘’°7Y„rZfÅ„µÉ2 ”Ô2/¦ R›&E2£Æˆ/¥v&IR¡¿ÏÎ¥²~˜Iô]\›ðå?˜‡ñµ³^ •ÇœôdÖM ôÐцqì Q†!}D&œê0à¡£(âЙ¡6:" 1è¢!)²Ø B.ê*‰"Ièí;ä¡.“(0±þáoÞ½AŽéB‰÷‹Ñ›·"ÐCã·Ž(>$Þ«9m¨Õe]{(s0…›‘[ÈCM+Á“ÄjmÜWmà§T“Òà„ŽRëòb2RÒKè(!µ./^F¤7Z¥ÖíÅ莤ÁQ,u~xñÍ;º›y/xÇ¢u+÷‹‰€ûÆ•§Õ€]·¢ÑÖ9_¤hxí˜ Ä †ëý_új»Â2u mB Ž•Z¿}V°‹‘|Bòäó„óôZZ½wÐo¨ô*Çà^–p¨”O"Éîꯤx5L½ÁëN{ãôH' h6dñf…7vþYs,ÊQçä„·ö±…©øìÁw»ÞÈGxìŠf [&pAB(:Ëfx·‰Jšs£Êhù>¼ä ëˆÌhX–Í tý4¦Õ¡35|¸jZîR:j'¡/*¦UÀ“{¸/ÊÒ=¾¯Ê`l´þ[@GÉ0å$ì"rîiª›L=«Žx¬L…]ÿTA+ xÔJ ¹´4ÏÍÁeµ­Ë¢:÷ÖPi³«Œ= `+YõÆßÛ´ú —Ól ˆï`!hÞ­y`žîÆvý^{Ó”.X'¤`†*^}“‚;HÅÄÑѾxí˜Ñ EáÿZɲQØÖ îÅ"ô¶=£Ñû6ón¨'´3HK`¢KJÇ ˆ¯kÇýò¨½byöŒ ¶–Ø%Ca $«¡j¹÷e¤ÊE†H¤ÖþoÞ@Ü¢÷¥ëvÄuaæ@Ù!4ìD­0^HÕ‰`@­>Ï Cãv–5Ð~ß1æ…¦~’½sº“w§‚^mb:ÌŠD˜èü§5zàÂqº›nUd‚VHiQ±8 ƬfŽdÇÆÅv¬œÀZ‘¨ï˜W»ùûÜE¯ 9xQÔXvøá¾ìôHKÓ5„Èäkpm㙆¬)[kë8‡/ícÚæ³×뚉ûp. Î«ÀW¶TÉ)7ÏØøwl Æü~.‹bÂô>xÝXÑà kÿÿ§çz=‚Uâ¤êž0J av»žç°Ï|R3¿,ha´¹Z0Ìú qîSƒ©üÈ‹Iå„´æiÆXùŠ{·qg²¦p¢‰33¡KÌÝ"Æ3w–Vˆ ÖXíÝ<ÆÀ¢xØ€¥2óé-6æ£YàtQiԆãǖ<+}Ô²i¸Duƒž„ÙÁ²2d‹ F…ºvÚÖ BÉê ¥î%€|4ë·Œ…îÕE%WľL`Úð øµ¬¯03=½èLo>ëÆö1[vškÉïeüi&0 S±aH6cì*•ã/ól6œ…”nOƒ ㎀Յ†í×#mœç-ÌØ×b»IHAÌ¥evêŒT±Ýêþ dGÈ}Ùn¶ È1èZÀŒ-c;T{ÅÀ7ž^½7f;ÿK‚êÖ =áœKI…Æ?™|êxå–[à Eëþ7]ÍT#u¸$™–àO®"‡¦±µÜãõãÑü¹QC§wbð9÷„Ý Â’;ÃpFÜ%8À8VrÐØñúo0µó}ÁÊJï5!ˆw¶åÙ%=h¬¨-ž#ÁlËøÿc¥ÆÊJï Á‰:GûIùÒc@Åÿ¯T•>ÄßÓ¿z*홞1^~áÕÈxÖ¿<¹TáU= âR‚·löÈ®úˆGôzíÀ¸õ„óY+)PØ•ºÀ`ý{qL)¥AmV3Pï£õ¾§QKAÔ‚º–Ö>ÒÖõ¤KrŒ$¦{µg°#‘Œ wÝÂ<†ˆ(%W<ß-&¸ïîÆŠDk,&QI(,Óù–» ²V–Õ&ŠÉ•…a¹¨-ômQW#ß4ë…*w2Ø<¡¶ìœ)ñ&™\"ÿ˜xmðxí—Aà Dãý/]µ Š¢eb\ôM²©Â¨ð§¦¯!üñs¸ŸÜÒ"Ôk.N%?]jÎÏ™õœò%>Thr§Òõ„LNŒ7.Œ^ò=3îZöŸ.²ÆhšŒ‡f³DMCò#SVasÂjFÕ÷oïªös+ÏŽU}¼Ã ÝÖa6Äá ¯Mç[ÝÀ7oª#žâìv® 6¢m}fÇ[«;º­zÞÑ17 O—Ĥ‘§¶¡kÞ°Á -™Ä&úaª«: (Á¡¡Õ!ýÇRç3jŒæ˜Ö¯/i0´æ€¬Ö— 6,šA.hŸDlàf  ÁA‚9ì X2‰ÜƒÒ ¾$= k¤Mˆ¹K,ÆøÞg¯/¦].Ôü}1«zƒr—8]ÿó¨"?Fxí—у Eçÿÿô ’¨¡…{‘„JêË´»ÖzÆí8öÙ~³7AC´Üäì;! BÑ––Ú˜¤gßÐý ÖL¨å¥î^ŒeT£z[‘ -Œ±¢L0Ä¢ )–Ì©0` bÑcæÊl* §@OSÈ¡0ãEŸ)ª CHJ /¨u°À´ñ`1‚ˆ±¦Z[wñ¯ çm%«`Ÿ³vYœW·hÃõJ‹,·|²ôï6ñ@Àé ]vtàÒ㉋±hìîäÓ~>”³‰ N‡x`~slMå£ßÍ)“õcõÑ¡ ¹4zåÖp:Á…hdïnbD‹<`±éFt¨çÜ©­¨ÏÕ±E®nÕÊBA ÅsÒwre³“1_þÎß=xí–݃ ƒåý_zÝOÏôŒ„"ÙEoØh íK™ì:†¯ÒR($c2šºvZPqæË¡ëd2%ø–5f;6T‹êx|ûÐÓéAîäðpåí 5žb¬;PŸõõ@YËO;ÅXx 1_ž?€‘©"Ô—ë¹ý‡J^b^Eël_îl$ÌSéðåNsÞ£‚u¸-ûÍUßW˜§*Òç öéÀ¡zk™gUð™û‹Ã¶2ƒîªÑÔŬ$"-ø)ÍÍžGp C[ÞÖf«_ÈžIY1$+õ#MNG`IC_ì ö*)5ïhñRøLLð¼¸|´·ÌyÞëÿGfL€à©À@vö”S·ÒŸ¿‡‰‘Â+D0~ïÙ”¸xݗრ„áý_zèbPàkƒ¤õdž½;é]ƒËbôs…ï®"nÖh÷°s²Ù½+5Æ{{*Ù>ánwùšÏKèH2·×A6NÉ^?ZÑhÔý©l넇Û7JÅO“Â6> :.Ê{¬êÓ|ò²ÊoO³}!Û ÏÓrì/òíƒ=IVe.8}žñTêfAL²T\E¦ÁÒñ®{!Äâ¬ÆôGÈ÷µkå¾”ò9…’ì}()ŒÊòžB{,ÜK›ï¨ÊÖç¹AC Üü”Ùú’‚iêÚÕ‹Jq^xõM?õÊò› Ey$†É:”¸Øû8"Šöó„ Û‚£*ˆ¼@l~™‹˜"7 Ê|€l~=¢$È (B0›_¨éqªÔ>Í"£o1=:n@×Úg°û¥HGp¼?‹xå™Á Ã0 C›ÿÿ饰B›HñÁnvQ%Ç~QXkUÖá­æÙ™[¡Ç²‡Îï¡ãG>°±¤p~?N™‘Ätz?NV‰‘Ôxz™?HÖq‘ôÙ@ŒlÀ‚ ùìV8Œè¡:Zÿ Ë«Û=Œ¶5)Á>Ì©í@€hB‚˜5rÛ!Mœ~h^b$XÈ+‘Ý Hb¿–÷›¹?õ0Áó½éÝÁZl'õ;ùEÄáK9*x!„µØß—ε6^Õ•x~ëù"ÎçøÖN¿‹ìÁªPÁ )ìuTøl=_ʼn9ìVUZä\5^ÉGPl–EbäT1]ÊFPl–5dä%O Wsm¾\Nƒ†³ù§rBDhì”ÿ/ÖÓу@Ž\óöú]ïxí–Á CåÿÚ©#¥¥9< êLl/…d³>jµ”Äëñ Óƒ k HÓ0W7ʬy* Ã]dØd*³æ©$ wbS±Ð'S,ì5HMäBgžL°ð— 6 y2ÁÂ^¢ÔD0µÆé  RÁЙ',ü%ˆí ‰²+ W¥ÔF[Õ·;uê„O­8´~î Tö0¼û1`]ö˜9LݱðlËë%6Lê>l2œYøvsjþœ;ÉUI˜ïÓˆ¶9¦ÍAFóy¼ÛúÑG1žËþÏø~â×Óx.­ÕúXß¡Áœ\¾%{‡rÿD,?X;ÌåÅñ„–Ç¢ ž 6„xí•Ù …0 Díÿÿ´ DÓ¸œ 3·/.mœÌZ[ËC”jëQ.m\“}öVj+N Ø qAŸAû—ë4߻ʢB½—GÿÚ¾®XÇYº^rº¤`g¥@&ÃíëÊM°.,Ñå„;+Pß—þÏ1$¤z0aÒ¯Hˆ¹8a 2šá¿8·Ž¥P·F2Gºwî·àŒxQVïdq®¡zµÒ9CΞ'›/Êl–C>Ou꥓sVì;Ç ç6Â>ûžëÔKi’ÿ࿲UþÖ ²°xíÓ1€0 ÁøÿŸ&‰QÄN‘óÚ4H4Üd³ÏØy œÏ1âF—c›+ü¸»ˆVކåpfÅÂpüª’PU hW¤ ˆ/K t‘µ†ù»ôºo] i™·Ê á•-¾0ÊØ6O]›³F›[·ÐgΚ]ì¯=_ç+ƒ‚¸ñS…HÌiz/Lß ±€÷•›ÔsRÀò#²xíÐ1 àԿéÙØ( 0`À€ 0`À€ 0`À€ 0`À€÷O”áxíÐ! ýÚF˜@‹ ø 0`À€ 0`À€ 0`À€ëÀÉapymc-2.2+ds/pymc/examples/gp/more_examples/Duffy/duffy-jittered.csv000066400000000000000000000557141204033704200255110ustar00rootroot00000000000000lat,lon,n,africa,datatype,genaa,genab,genbb,gen00,gena0,genb0,gena1,genb1,gen01,gen11,pheab,phea,pheb,phe0,prom0,promab,aphea,aphe0,bpheb,bphe0 6.2325234349736958,9.6778202070931343,10,1,gen,0,0,0,10,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan -3.6085298403125257,30.904145121217063,5,1,gen,0,0,0,5,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan -14.646617347052628,37.52063419410657,160,1,gen,0,0,0,147,13,0,0,0,0,0,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan 34.990332057335031,7.0432082267630207,115,0,gen,8,22,22,9,19,34,0,1,0,0,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan -32.699061736580298,27.877383297052095,100,1,gen,0,1,3,65,6,25,0,0,0,0,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan 9.058058816769563,-0.16776756919402036,12,1,gen,0,0,0,12,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan 12.341501842844336,-2.9694296204555597,7,1,gen,0,0,0,7,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan 5.9689203184766146,-0.25975685747676724,16,1,gen,0,0,0,16,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan 13.187547312221277,-10.518430383849864,21,1,gen,0,0,0,21,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan 16.246342226791295,-16.435472992909848,10,1,gen,0,0,0,10,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan 8.115269567718121,-4.5979792906715424,9,1,gen,0,0,0,9,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan 8.3147255900812596,-6.3896081128322253,7,1,gen,0,0,0,7,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan 7.6436961628434421,-6.4251825643928964,10,1,gen,0,0,0,10,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan 6.2657044936551589,-4.7401322544164133,6,1,gen,0,0,0,6,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan 5.9127546531928044,-5.4965859043840055,5,1,gen,0,0,0,5,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan 7.7717012069845985,-3.3646432111407027,9,1,gen,0,0,0,9,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan 10.881201262369434,-13.399568168637039,9,1,gen,0,0,0,9,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan 10.510822111915585,-14.350548516097811,10,1,gen,0,0,0,10,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan 9.3594991725273076,-12.295056449204859,9,1,gen,0,0,0,9,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan 9.3847191680148434,-12.185585651983111,9,1,gen,0,0,0,9,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan 9.3750019224013563,-11.398841474883909,9,1,gen,0,0,0,9,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan 6.0634055721085875,-9.4708190968658137,8,1,gen,0,0,0,8,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan -18.842980520015502,48.08134078301913,65,1,gen,0,0,0,58,3,4,0,0,0,0,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan -25.276260678855611,44.895364955449871,57,1,gen,2,2,0,40,10,3,0,0,0,0,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan -19.668156146749403,46.734858371014795,86,1,gen,1,0,0,72,9,3,0,0,1,0,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan -21.535663525435428,47.090199839465861,91,1,gen,0,2,0,63,16,10,0,0,0,0,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan -18.333435043377104,47.666311565017807,100,1,gen,2,2,0,68,20,8,0,0,0,0,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan -21.117460661727797,47.115889262967094,88,1,gen,2,1,0,46,36,3,0,0,0,0,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan -22.067673110422604,47.765079440496066,69,1,gen,0,2,0,47,17,2,0,0,1,0,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan -17.257176185545305,44.837150023315871,110,1,gen,3,3,3,65,29,6,0,1,0,0,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan 6.3912817250937319,39.012275549859631,113,1,gen,4,11,10,27,14,47,0,0,0,0,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan 7.0939612588307241,37.44485806471296,51,1,gen,0,1,1,38,6,5,0,0,0,0,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan 13.438949414910795,38.819624395385759,162,1,gen,7,12,17,51,36,38,0,0,1,0,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan 13.65518173713788,37.250262414781368,81,1,gen,1,3,1,35,10,31,0,0,0,0,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan 11.830772494396651,-7.8116949340612196,12,1,gen,0,0,0,12,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan 12.136580282645351,-9.5586391467644169,13,1,gen,0,0,0,13,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan 35.195826726736158,3.1673019975955645,295,0,phe,0,0,0,0,0,0,0,0,0,0,64.0,58.0,145.0,28.0,nan,nan,nan,nan,nan,nan 35.825968198547329,6.7374454949167486,137,0,phe,0,0,0,0,0,0,0,0,0,0,24.0,32.0,56.0,25.0,nan,nan,nan,nan,nan,nan 34.172633344350061,5.3879971751784943,160,0,phe,0,0,0,0,0,0,0,0,0,0,42.0,30.0,82.0,6.0,nan,nan,nan,nan,nan,nan 36.085323472957761,3.604332828717344,175,0,phe,0,0,0,0,0,0,0,0,0,0,52.0,23.0,98.0,2.0,nan,nan,nan,nan,nan,nan 32.708043533412869,5.0516344765160657,95,0,phe,0,0,0,0,0,0,0,0,0,0,23.0,10.0,53.0,9.0,nan,nan,nan,nan,nan,nan 36.81261079619641,4.0078015484819041,189,0,phe,0,0,0,0,0,0,0,0,0,0,58.0,39.0,86.0,6.0,nan,nan,nan,nan,nan,nan 35.871981315503938,5.1112107881595836,179,0,phe,0,0,0,0,0,0,0,0,0,0,35.0,46.0,84.0,14.0,nan,nan,nan,nan,nan,nan 35.264999539257978,0.89139188901172162,209,0,phe,0,0,0,0,0,0,0,0,0,0,53.0,33.0,106.0,17.0,nan,nan,nan,nan,nan,nan 36.290001494414035,7.3911044404968607,223,0,phe,0,0,0,0,0,0,0,0,0,0,46.0,48.0,109.0,20.0,nan,nan,nan,nan,nan,nan 34.710827087171268,9.4949901338355289,265,0,phe,0,0,0,0,0,0,0,0,0,0,72.0,46.0,129.0,18.0,nan,nan,nan,nan,nan,nan 36.855941792935049,6.3995589305348801,169,0,phe,0,0,0,0,0,0,0,0,0,0,55.0,23.0,82.0,9.0,nan,nan,nan,nan,nan,nan 35.735522680266826,-0.91895560586542069,96,0,phe,0,0,0,0,0,0,0,0,0,0,16.0,22.0,48.0,10.0,nan,nan,nan,nan,nan,nan 36.671160466124981,3.2470357385487665,111,0,phe,0,0,0,0,0,0,0,0,0,0,24.0,36.0,39.0,12.0,nan,nan,nan,nan,nan,nan 34.903596961063151,0.23031438194712894,126,0,phe,0,0,0,0,0,0,0,0,0,0,35.0,19.0,69.0,3.0,nan,nan,nan,nan,nan,nan 33.885562019016078,4.7482022850566725,84,0,phe,0,0,0,0,0,0,0,0,0,0,15.0,16.0,42.0,11.0,nan,nan,nan,nan,nan,nan 34.097216966294283,8.2128928067724818,183,0,phe,0,0,0,0,0,0,0,0,0,0,52.0,44.0,81.0,6.0,nan,nan,nan,nan,nan,nan 33.848434608082044,-1.4728041403810161,87,0,phe,0,0,0,0,0,0,0,0,0,0,28.0,19.0,34.0,6.0,nan,nan,nan,nan,nan,nan 32.846670574430163,-1.9241481326792531,63,0,phe,0,0,0,0,0,0,0,0,0,0,25.0,13.0,24.0,1.0,nan,nan,nan,nan,nan,nan 36.097444034953796,6.7147009560951787,344,0,phe,0,0,0,0,0,0,0,0,0,0,123.0,56.0,159.0,6.0,nan,nan,nan,nan,nan,nan 34.436257094980576,-1.3040265336694028,115,0,phe,0,0,0,0,0,0,0,0,0,0,22.0,20.0,66.0,7.0,nan,nan,nan,nan,nan,nan 36.212729451452269,8.1811604916216591,150,0,phe,0,0,0,0,0,0,0,0,0,0,45.0,29.0,67.0,9.0,nan,nan,nan,nan,nan,nan 35.656896302842817,9.1198180018181283,127,0,phe,0,0,0,0,0,0,0,0,0,0,50.0,14.0,61.0,2.0,nan,nan,nan,nan,nan,nan 35.974578517271276,3.6269672645258622,117,0,phe,0,0,0,0,0,0,0,0,0,0,27.0,26.0,47.0,17.0,nan,nan,nan,nan,nan,nan 35.311983662550375,3.7186330211091434,467,0,phe,0,0,0,0,0,0,0,0,0,0,144.0,82.0,231.0,10.0,nan,nan,nan,nan,nan,nan 34.612224995099282,-1.0879292189672263,137,0,phe,0,0,0,0,0,0,0,0,0,0,36.0,34.0,54.0,13.0,nan,nan,nan,nan,nan,nan 20.093411930817467,-7.5167076946563807,94,0,phe,0,0,0,0,0,0,0,0,0,0,12.0,17.0,41.0,24.0,nan,nan,nan,nan,nan,nan -8.0755816234546813,14.967945245933205,120,1,phe,0,0,0,0,0,0,0,0,0,0,0.0,2.0,2.0,116.0,nan,nan,nan,nan,nan,nan -4.0725783788204399,17.342635531825309,109,1,phe,0,0,0,0,0,0,0,0,0,0,0.0,3.0,3.0,103.0,nan,nan,nan,nan,nan,nan -22.002871808173271,23.542937777994485,124,1,phe,0,0,0,0,0,0,0,0,0,0,0.0,23.0,16.0,85.0,nan,nan,nan,nan,nan,nan -1.3236938153497011,13.474242804820513,163,1,phe,0,0,0,0,0,0,0,0,0,0,0.0,0.0,1.0,162.0,nan,nan,nan,nan,nan,nan 4.8477614506690241,22.677182384964887,120,1,phe,0,0,0,0,0,0,0,0,0,0,0.0,10.0,20.0,90.0,nan,nan,nan,nan,nan,nan 4.9788834197798693,19.946213069886387,59,1,phe,0,0,0,0,0,0,0,0,0,0,1.0,6.0,3.0,49.0,nan,nan,nan,nan,nan,nan 31.373236768342387,31.631354339463137,250,0,phe,0,0,0,0,0,0,0,0,0,0,124.0,56.0,68.0,2.0,nan,nan,nan,nan,nan,nan 28.233007862745865,31.72006802027493,50,0,phe,0,0,0,0,0,0,0,0,0,0,13.0,19.0,14.0,4.0,nan,nan,nan,nan,nan,nan 26.567097169698823,31.881108278954052,52,0,phe,0,0,0,0,0,0,0,0,0,0,2.0,11.0,23.0,16.0,nan,nan,nan,nan,nan,nan 28.083804704260139,35.059240414446833,98,0,phe,0,0,0,0,0,0,0,0,0,0,16.0,20.0,54.0,8.0,nan,nan,nan,nan,nan,nan 28.076638898128962,35.258481021751713,95,0,phe,0,0,0,0,0,0,0,0,0,0,10.0,33.0,25.0,27.0,nan,nan,nan,nan,nan,nan 12.637811352060362,38.076969776803843,75,1,phe,0,0,0,0,0,0,0,0,0,0,7.0,22.0,23.0,23.0,nan,nan,nan,nan,nan,nan 12.906164067463834,37.89792578265476,99,1,phe,0,0,0,0,0,0,0,0,0,0,6.0,26.0,28.0,39.0,nan,nan,nan,nan,nan,nan 7.2593738674471489,4.5120189691796808,37,1,phe,0,0,0,0,0,0,0,0,0,0,0.0,0.0,0.0,37.0,nan,nan,nan,nan,nan,nan 32.618339649597168,-4.1618801316551313,140,0,phe,0,0,0,0,0,0,0,0,0,0,48.0,38.0,49.0,5.0,nan,nan,nan,nan,nan,nan -15.62714801107507,46.31519996344889,233,1,phe,0,0,0,0,0,0,0,0,0,0,0.0,1.0,0.0,232.0,nan,nan,nan,nan,nan,nan -16.536910078153824,35.581108205180875,196,1,phe,0,0,0,0,0,0,0,0,0,0,0.0,1.0,1.0,194.0,nan,nan,nan,nan,nan,nan -16.567980795399198,36.924743371962428,1162,1,phe,0,0,0,0,0,0,0,0,0,0,0.0,10.0,6.0,1146.0,nan,nan,nan,nan,nan,nan -18.472824058955112,19.576728273801795,36,1,phe,0,0,0,0,0,0,0,0,0,0,10.0,7.0,15.0,4.0,nan,nan,nan,nan,nan,nan -25.996691660236202,17.103266465584348,33,1,phe,0,0,0,0,0,0,0,0,0,0,8.0,8.0,17.0,0.0,nan,nan,nan,nan,nan,nan -17.244331979073998,14.503211395649704,90,1,phe,0,0,0,0,0,0,0,0,0,0,1.0,8.0,5.0,76.0,nan,nan,nan,nan,nan,nan 9.1052478295228489,3.182431476244993,298,1,phe,0,0,0,0,0,0,0,0,0,0,0.0,2.0,2.0,294.0,nan,nan,nan,nan,nan,nan 2.5324197574757275,34.193820248999621,1020,1,phe,0,0,0,0,0,0,0,0,0,0,1.0,78.0,74.0,867.0,nan,nan,nan,nan,nan,nan 13.314783118561795,41.05243588027728,97,0,phe,0,0,0,0,0,0,0,0,0,0,1.0,16.0,18.0,62.0,nan,nan,nan,nan,nan,nan -3.5442705242274108,37.885385669904736,214,1,phe,0,0,0,0,0,0,0,0,0,0,0.0,5.0,0.0,209.0,nan,nan,nan,nan,nan,nan 12.71018577490725,-14.101266545126951,783,1,phe,0,0,0,0,0,0,0,0,0,0,0.0,0.0,0.0,783.0,nan,nan,nan,nan,nan,nan 12.462960789586628,-15.633774419602407,385,1,phe,0,0,0,0,0,0,0,0,0,0,0.0,0.0,0.0,385.0,nan,nan,nan,nan,nan,nan -10.976601496090943,33.94927580857459,260,1,phe,0,0,0,0,0,0,0,0,0,0,0.0,8.0,10.0,242.0,nan,nan,nan,nan,nan,nan -17.921819391484259,17.710476973185862,37,1,phe,0,0,0,0,0,0,0,0,0,0,0.0,4.0,0.0,33.0,nan,nan,nan,nan,nan,nan -17.930050877012057,19.604331220460256,72,1,phe,0,0,0,0,0,0,0,0,0,0,0.0,4.0,5.0,63.0,nan,nan,nan,nan,nan,nan -19.615715760657913,19.654670831453675,86,1,phe,0,0,0,0,0,0,0,0,0,0,0.0,6.0,11.0,69.0,nan,nan,nan,nan,nan,nan -16.418162344443473,21.043706420818154,37,1,phe,0,0,0,0,0,0,0,0,0,0,0.0,1.0,3.0,33.0,nan,nan,nan,nan,nan,nan -17.372020009967088,21.750945924500904,35,1,phe,0,0,0,0,0,0,0,0,0,0,1.0,4.0,8.0,22.0,nan,nan,nan,nan,nan,nan -4.1340482291102241,32.083856717385622,150,1,phe,0,0,0,0,0,0,0,0,0,0,0.0,1.0,0.0,149.0,nan,nan,nan,nan,nan,nan -16.578522083897127,35.55784159872443,158,1,phe,0,0,0,0,0,0,0,0,0,0,0.0,2.0,1.0,155.0,nan,nan,nan,nan,nan,nan 11.375738607787881,1.8907183540890418,66,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,66.0,0.0,nan,nan,nan,nan 10.813953112962363,-1.3613001681312711,36,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,35.0,1.0,nan,nan,nan,nan 13.478551477627573,0.30478657100162421,5,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,5.0,0.0,nan,nan,nan,nan 13.430461540611736,-1.4477282433488516,7,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,7.0,0.0,nan,nan,nan,nan 10.7409375899846,-3.7649279052408233,55,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,55.0,0.0,nan,nan,nan,nan 13.57886406839096,-0.29256925184970273,62,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,62.0,0.0,nan,nan,nan,nan 10.976881303634602,-2.8532375630963456,52,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,52.0,0.0,nan,nan,nan,nan 13.795873463590599,-0.88977954509969992,74,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,74.0,0.0,nan,nan,nan,nan 13.350826660732164,-0.12464912197262312,136,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,135.0,1.0,nan,nan,nan,nan 5.3436862787390478,8.8580418653996613,77,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,76.0,1.0,nan,nan,nan,nan 5.2386576957167019,9.040297548633724,169,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,168.0,1.0,nan,nan,nan,nan 2.1980469451904616,11.149018174466452,43,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,43.0,0.0,nan,nan,nan,nan 4.9025255549337725,9.9317668110164909,17,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,17.0,0.0,nan,nan,nan,nan 3.5096794581905328,10.009615647085408,2,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,2.0,0.0,nan,nan,nan,nan 4.1893406645862452,10.931844164544014,5,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,5.0,0.0,nan,nan,nan,nan 3.960320193649248,9.3091249652149166,13,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,13.0,0.0,nan,nan,nan,nan 3.7853336410009177,10.596306558848111,1,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,1.0,0.0,nan,nan,nan,nan 5.7488299220424066,9.2460831447441905,1,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,1.0,0.0,nan,nan,nan,nan 3.4786116766726138,9.857934105716966,2,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,2.0,0.0,nan,nan,nan,nan 12.599378904198367,-15.010568903933205,368,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,368.0,0.0,nan,nan,nan,nan 15.190858483113136,-16.180534129081728,20,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,20.0,0.0,nan,nan,nan,nan 13.026335430921858,-15.450920678909938,533,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,532.0,1.0,nan,nan,nan,nan 13.960281832208207,-14.716645355070872,273,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,272.0,1.0,nan,nan,nan,nan 14.037770078979062,-16.603474951322511,16,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,16.0,0.0,nan,nan,nan,nan 12.321649801888894,-14.253134319689353,17,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,17.0,0.0,nan,nan,nan,nan 13.915541133082771,-15.552340775861566,6,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,6.0,0.0,nan,nan,nan,nan 9.4080633047002529,-0.39050953967149193,70,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,70.0,0.0,nan,nan,nan,nan 10.053979325995661,-1.5065478908519587,24,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,24.0,0.0,nan,nan,nan,nan 9.3995434927882204,0.24960582291386668,38,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,38.0,0.0,nan,nan,nan,nan 12.328290433059607,-1.0819052822408055,22,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,22.0,0.0,nan,nan,nan,nan 9.4139038013171348,-1.9945190522724254,98,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,98.0,0.0,nan,nan,nan,nan 12.52823912476649,-1.277874352892725,29,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,29.0,0.0,nan,nan,nan,nan 5.8372688397853825,0.54410285667087566,19,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,19.0,0.0,nan,nan,nan,nan 5.1868108820142682,-1.1632270148850434,10,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,10.0,0.0,nan,nan,nan,nan 6.0429605536535451,-0.73842171671803114,11,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,11.0,0.0,nan,nan,nan,nan 6.2598374181276171,-1.4500781541470489,11,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,11.0,0.0,nan,nan,nan,nan 6.6930110646411318,-1.5648193187342998,10,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,10.0,0.0,nan,nan,nan,nan 9.2472892811264131,-0.28728130708552824,8,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,8.0,0.0,nan,nan,nan,nan 12.017533658299332,-1.4329737456702172,18,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,18.0,0.0,nan,nan,nan,nan 9.1170708959980438,-0.7923299695998498,15,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,15.0,0.0,nan,nan,nan,nan 11.35720816906162,0.085179325682110285,11,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,11.0,0.0,nan,nan,nan,nan 9.1913305270274854,-1.9519729460213981,13,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,13.0,0.0,nan,nan,nan,nan 10.81509072684571,-1.0446945492664566,19,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,19.0,0.0,nan,nan,nan,nan 9.8846727400264527,0.64882861238473399,14,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,14.0,0.0,nan,nan,nan,nan 9.4052094516948372,-1.8955209316779555,9,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,9.0,0.0,nan,nan,nan,nan 10.542590483916813,-2.6092474170661708,8,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,8.0,0.0,nan,nan,nan,nan 9.799165748581153,-2.6045989000019123,13,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,13.0,0.0,nan,nan,nan,nan -2.9400257388367699,38.122568854866756,188,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,188.0,0.0,nan,nan,nan,nan -4.1734942203802099,38.309944840415938,444,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,441.0,3.0,nan,nan,nan,nan -4.6171110705577298,38.926264753512996,176,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,174.0,2.0,nan,nan,nan,nan -2.3508699172973979,38.620414669804205,96,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,96.0,0.0,nan,nan,nan,nan -2.308446414614906,37.993309904114753,413,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,412.0,1.0,nan,nan,nan,nan -4.7408180115868568,39.083954032483128,165,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,165.0,0.0,nan,nan,nan,nan -5.3633949184395044,38.201480676752105,317,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,314.0,3.0,nan,nan,nan,nan -5.0123006547806082,38.68160417827135,373,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,370.0,3.0,nan,nan,nan,nan -2.5034391881182385,39.988834269410098,162,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,162.0,0.0,nan,nan,nan,nan -2.7899154811484044,38.754266055107216,315,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,315.0,0.0,nan,nan,nan,nan -2.80762294592909,37.954571269224864,326,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,325.0,1.0,nan,nan,nan,nan -3.2461097161383203,39.571449370446935,157,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,157.0,0.0,nan,nan,nan,nan -1.7596747570558979,40.648616479320495,300,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,300.0,0.0,nan,nan,nan,nan -2.7257790636143966,39.344542482299758,391,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,388.0,3.0,nan,nan,nan,nan -3.05899858816524,39.110332765365378,300,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,297.0,3.0,nan,nan,nan,nan -16.642192346802432,33.306556417539063,47,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,46.0,1.0,nan,nan,nan,nan -16.206555155800658,33.966404676529422,43,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,42.0,1.0,nan,nan,nan,nan -14.866755851575657,36.956140412551363,27,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,27.0,0.0,nan,nan,nan,nan -14.368057387222121,34.662395935342317,103,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,102.0,1.0,nan,nan,nan,nan -15.038539678579198,36.732155389230989,48,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,47.0,1.0,nan,nan,nan,nan -16.321443607312872,36.352800899380924,108,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,108.0,0.0,nan,nan,nan,nan -17.187499172640784,34.719386460883612,12,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,12.0,0.0,nan,nan,nan,nan -15.659217012073938,33.252970129495509,19,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,19.0,0.0,nan,nan,nan,nan -16.323916860173526,36.132736977238544,12,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,12.0,0.0,nan,nan,nan,nan -14.324159985023872,35.16114180024767,18,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,18.0,0.0,nan,nan,nan,nan -15.815928710444442,36.887879901974955,15,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,13.0,2.0,nan,nan,nan,nan -14.344219025223964,36.068452768150969,10,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,9.0,1.0,nan,nan,nan,nan -3.9300497450173859,39.330120586406863,17,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,16.0,1.0,nan,nan,nan,nan -5.2144891893508625,32.905672501423886,17,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,16.0,1.0,nan,nan,nan,nan -11.553352808701948,34.094852483563692,10,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,10.0,0.0,nan,nan,nan,nan -4.1103181166304443,38.920835405370553,13,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,13.0,0.0,nan,nan,nan,nan -4.9314242629195277,38.966359036869108,13,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,13.0,0.0,nan,nan,nan,nan -3.918022204805689,38.132358861415732,15,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,15.0,0.0,nan,nan,nan,nan -6.9893371677940843,37.820398974915058,19,1,prom,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,18.0,1.0,nan,nan,nan,nan 14.695866356275639,15.515561676681587,257,0,aphe,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,0.0,257.0,nan,nan 16.51909954353868,38.516416623557888,148,0,aphe,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,8.0,140.0,nan,nan 16.824670483102395,35.898381065093453,129,0,aphe,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,8.0,121.0,nan,nan -0.067931571016117687,39.912024665436178,50,1,aphe,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,0.0,50.0,nan,nan -3.1439424245282099,38.180696161996721,86,1,aphe,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,1.0,85.0,nan,nan -2.2105102611435807,40.08966208259794,42,1,aphe,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,1.0,41.0,nan,nan -2.3734590518694194,36.471092464482673,11,1,aphe,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,0.0,11.0,nan,nan -30.838100724828344,28.568713365412712,92,1,aphe,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,20.0,72.0,nan,nan -29.822235456839628,30.124142100960455,89,1,aphe,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,10.0,79.0,nan,nan 31.261614292695938,-4.182998380743868,256,0,aphe,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,110.0,146.0,nan,nan -10.016513125686011,32.919493819405446,117,1,aphe,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,3.0,114.0,nan,nan -18.730210697397744,21.783658044939738,122,1,aphe,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,70.0,52.0,nan,nan -17.533068980030198,20.749767491257511,34,1,aphe,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,11.0,23.0,nan,nan -23.608715694197162,21.742614059391727,185,1,aphe,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,96.0,89.0,nan,nan -24.772916499265897,21.527395405511559,147,1,aphe,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,73.0,74.0,nan,nan -21.564189965119436,18.553582423312374,96,1,aphe,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,19.0,77.0,nan,nan 20.080748600064023,2.6435770827095606,162,0,aphe,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,5.0,157.0,nan,nan 29.779585196903216,56.326149168658745,99,0,aphe,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,19.0,80.0,nan,nan -24.116029430623449,23.674041863929361,262,1,aphe,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,119.0,143.0,nan,nan 13.363688396500809,34.472579014771256,217,0,aphe,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,11.0,206.0,nan,nan 25.528692621168389,49.73490209237702,421,0,aphe,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,25.0,396.0,nan,nan 27.02188387868431,49.393580659291253,281,0,aphe,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,67.0,214.0,nan,nan 23.732847636672997,50.963780436177551,152,0,aphe,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,73.0,79.0,nan,nan 18.722038229384935,43.328949960852853,180,0,aphe,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,85.0,95.0,nan,nan 26.111436889728363,41.912557056623129,100,0,aphe,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,28.0,72.0,nan,nan 17.267452700631882,43.40447538262265,30,0,aphe,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,11.0,19.0,nan,nan 18.843867631814426,49.132571972181665,43,0,aphe,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,1.0,42.0,nan,nan 22.902720993882546,40.130856131235362,118,0,aphe,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,39.0,79.0,nan,nan 21.997424378924951,41.447291861845841,43,0,aphe,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,15.0,28.0,nan,nan 5.2410479894256126,-2.0662274059070431,319,1,aphe,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,1.0,318.0,nan,nan -4.6905282017416674,33.345590621137262,104,1,bphe,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,nan,nan,0.0,104.0 -2.7679092459262544,34.245799261238673,44,1,bphe,0,0,0,0,0,0,0,0,0,0,nan,nan,nan,nan,nan,nan,nan,nan,0.0,44.0 pymc-2.2+ds/pymc/examples/gp/more_examples/Duffy/mcmc.py000066400000000000000000000100351204033704200233230ustar00rootroot00000000000000# ============================================================ # = WARNING: This example is very computationally demanding! = # ============================================================ # I have set the map resolutions to give nice-looking results, but I am using # an 8-core, 3.0GHz Apple Mac Pro with 8GB of RAM and with environment variable # OMP_NUM_THREADS set to 8. If you are using a less powerful machine, you may # want to change the 'm' parameters # below. # The MCMC takes several hours on my machine. To make it run faster, thin the dataset. from model import * # from mpl_toolkits.basemap import Basemap # from matplotlib import * from pylab import * from numpy import * import model import pymc as pm data = csv2rec('duffy-jittered.csv') # Convert from record array to dictionary data = dict([(k,data[k]) for k in data.dtype.names]) # Create model. Use the HDF5 database backend, because the trace will take up a lot of memory. DuffySampler = pm.MCMC(model.make_model(**data), db='hdf5', dbcomplevel=1, dbcomplib='zlib', dbname='duffydb.hdf5') # ==================== # = Do the inference = # ==================== # Use GPEvaluationGibbs step methods. DuffySampler.use_step_method(pm.gp.GPEvaluationGibbs, DuffySampler.sp_sub_b, DuffySampler.V_b, DuffySampler.tilde_fb) DuffySampler.use_step_method(pm.gp.GPEvaluationGibbs, DuffySampler.sp_sub_s, DuffySampler.V_s, DuffySampler.tilde_fs) # Run the MCMC. DuffySampler.isample(50000,10000,100) n = len(DuffySampler.trace('V_b')[:]) # ========================== # = Mean and variance maps = # ========================== import tables covariate_raster = tables.openFile('africa.hdf5') xplot = covariate_raster.root.lon[:]*pi/180. yplot = covariate_raster.root.lat[:]*pi/180. data = ma.masked_array(covariate_raster.root.data[:], mask = covariate_raster.root.mask[:]) where_unmasked = np.where(True-data.mask) dpred = dstack(meshgrid(xplot,yplot))[::-1][where_unmasked] africa = covariate_raster.root.data[:][where_unmasked] Msurf = zeros(data.shape) E2surf = zeros(data.shape) # Get E[v] and E[v**2] over the entire posterior for i in xrange(n): # Reset all variables to their values at frame i of the trace DuffySampler.remember(0,i) # Evaluate the observed mean store_africa_val(DuffySampler.sp_sub_b.M_obs.value, dpred, africa) Msurf_b, Vsurf_b = pm.gp.point_eval(DuffySampler.sp_sub_b.M_obs.value, DuffySampler.sp_sub_b.C_obs.value, dpred) Msurf_s, Vsurf_s = pm.gp.point_eval(DuffySampler.sp_sub_s.M_obs.value, DuffySampler.sp_sub_s.C_obs.value, dpred) Vsurf_b += DuffySampler.V_b.value Vsurf_s += DuffySampler.V_s.value freq_b = pm.invlogit(Msurf_b +pm.rnormal(0,1)*np.sqrt(Vsurf_b)) freq_s = pm.invlogit(Msurf_s +pm.rnormal(0,1)*np.sqrt(Vsurf_s)) samp_i = (freq_b*freq_s+(1-freq_b)*DuffySampler.p1.value)**2 Msurf[where_unmasked] += samp_i/float(n) # Evaluate the observed covariance with one argument E2surf[where_unmasked] += samp_i**2/float(n) # Get the posterior variance and standard deviation Vsurf = E2surf - Msurf**2 SDsurf = sqrt(Vsurf) Msurf = ma.masked_array(Msurf, mask=covariate_raster.root.mask[:]) SDsurf = ma.masked_array(SDsurf, mask=covariate_raster.root.mask[:]) covariate_raster.close() # Plot mean and standard deviation surfaces close('all') imshow(Msurf[::-1,:], extent=np.array([xplot.min(),xplot.max(),yplot.min(),yplot.max()])*180./pi,interpolation='nearest') plot(DuffySampler.lon,DuffySampler.lat,'r.',markersize=4) axis(np.array([xplot.min(),xplot.max(),yplot.min(),yplot.max()])*180./pi) title('Posterior predictive mean surface') xlabel('Degrees longitude') ylabel('Degrees latitude') colorbar() savefig('duffymean.pdf') figure() imshow(SDsurf[::-1,:], extent=np.array([xplot.min(),xplot.max(),yplot.min(),yplot.max()])*180./pi,interpolation='nearest') plot(DuffySampler.lon,DuffySampler.lat,'r.',markersize=4) axis(np.array([xplot.min(),xplot.max(),yplot.min(),yplot.max()])*180./pi) title('Posterior predictive standard deviation surface') xlabel('Degrees longitude') ylabel('Degrees latitude') colorbar() savefig('duffyvar.pdf') pymc-2.2+ds/pymc/examples/gp/more_examples/Duffy/model.py000066400000000000000000000164131204033704200235120ustar00rootroot00000000000000import numpy as np import pymc as pm import gc def store_africa_val(M, mesh, africa_val): M.params['meshes'].append(mesh) M.params['africa_vals'].append(africa_val) def retrieve_africa_val(x, meshes, africa_vals, beta): for mesh, africa_val in zip(meshes, africa_vals): if np.all(x == mesh): return africa_val*beta raise ValueError, 'Value of Africa covariate on input array is unknown.' def make_gp_submodel(suffix, mesh, africa_val=None, with_africa_covariate=False): # The partial sill. amp = pm.Exponential('amp_%s'%suffix, .1, value=1.) # The range parameter. Units are RADIANS. scale = pm.Exponential('scale_%s'%suffix, 1, value=.08) # 1 radian = the radius of the earth, about 6378.1 km scale_in_km = scale*6378.1 # The nugget variance, lower-bounded to preserve mixing. V = pm.Exponential('V_%s'%suffix, 1, value=1.) @pm.potential def V_bound(V=V): if V<.1: return -np.inf else: return 0 # Create the covariance & its evaluation at the data locations. @pm.deterministic(trace=True,name='C_%s'%suffix) def C(amp=amp, scale=scale): return pm.gp.FullRankCovariance(pm.gp.exponential.geo_rad, amp=amp, scale=scale) # Create the mean function if with_africa_covariate: beta = pm.Normal('beta_%s'%suffix, 0, .01, value=1) @pm.deterministic(trace=True, name='M_%s'%suffix) def M(mesh=mesh, africa_val = africa_val, beta=beta): M = pm.gp.Mean(retrieve_africa_val, meshes=[], africa_vals=[], beta=beta) store_africa_val(M, mesh, africa_val) return M else: @pm.deterministic(trace=True, name='M_%s'%suffix) def M(): return pm.gp.Mean(pm.gp.zero_fn) # Create the GP submodel sp_sub = pm.gp.GPSubmodel('sp_sub_%s'%suffix,M,C,mesh) sp_sub.f_eval.value = sp_sub.f_eval.value - sp_sub.f_eval.value.mean() return locals() # ========================= # = Haplotype frequencies = # ========================= h_freqs = {'a': lambda pb, p0, p1: (1-pb)*(1-p1), 'b': lambda pb, p0, p1: pb*(1-p0), '0': lambda pb, p0, p1: pb*p0, '1': lambda pb, p0, p1: (1-pb)*p1} hfk = ['a','b','0','1'] hfv = [h_freqs[key] for key in hfk] # ======================== # = Genotype frequencies = # ======================== g_freqs = {} for i in xrange(4): for j in xrange(i,4): if i != j: g_freqs[hfk[i]+hfk[j]] = lambda pb, p0, p1, i=i, j=j: 2 * np.asscalar(hfv[i](pb,p0,p1) * hfv[j](pb,p0,p1)) else: g_freqs[hfk[i]*2] = lambda pb, p0, p1, i=i: np.asscalar(hfv[i](pb,p0,p1))**2 for i in xrange(1000): pb,p0,p1 = np.random.random(size=3) np.testing.assert_almost_equal(np.sum([gfi(pb,p0,p1) for gfi in g_freqs.values()]),1.) def make_model(lon,lat,africa,n,datatype, genaa,genab,genbb,gen00,gena0,genb0,gena1,genb1,gen01,gen11, pheab,phea,pheb, phe0,prom0,promab, aphea,aphe0, bpheb,bphe0): logp_mesh = np.vstack((lon,lat)).T*np.pi/180. # Probability of mutation in the promoter region, given that the other thing is a. p1 = pm.Uniform('p1', 0, .04, value=.01) # Spatial submodels spatial_b_vars = make_gp_submodel('b',logp_mesh,africa,with_africa_covariate=True) spatial_s_vars = make_gp_submodel('0',logp_mesh) sp_sub_b = spatial_b_vars['sp_sub'] sp_sub_s = spatial_s_vars['sp_sub'] # Loop over data clusters, adding nugget and applying link function. tilde_fs_d = [] p0_d = [] tilde_fb_d = [] pb_d = [] V_b = spatial_b_vars['V'] V_s = spatial_s_vars['V'] data_d = [] for i in xrange(len(n)): this_fb =sp_sub_b.f_eval[i] this_fs = sp_sub_s.f_eval[i] # Nuggeted field in this cluster tilde_fb_d.append(pm.Normal('tilde_fb_%i'%i, this_fb, 1./V_b, value=np.random.normal(), trace=False)) tilde_fs_d.append(pm.Normal('tilde_fs_%i'%i, this_fs, 1./V_s, value=np.random.normal(), trace=False)) # The frequencies. p0 = pm.Lambda('pb_%i'%i,lambda lt=tilde_fb_d[-1]: pm.invlogit(lt),trace=False) pb = pm.Lambda('p0_%i'%i,lambda lt=tilde_fs_d[-1]: pm.invlogit(lt),trace=False) # The likelihoods if datatype[i]=='prom': cur_obs = [prom0[i], promab[i]] # Need to have either b and 0 or a and 1 on both chromosomes p = pm.Lambda('p_%i'%i, lambda pb=pb, p0=p0, p1=p1: (pb*p0+(1-pb)*p1)**2, trace=False) n = np.sum(cur_obs) data_d.append(pm.Binomial('data_%i'%i, p=p, n=n, value=prom0[i], observed=True)) elif datatype[i]=='aphe': cur_obs = [aphea[i], aphe0[i]] n = np.sum(cur_obs) # Need to have (a and not 1) on either chromosome, or not (not (a and not 1) on both chromosomes) p = pm.Lambda('p_%i'%i, lambda pb=pb, p0=p0, p1=p1: 1-(1-(1-pb)*(1-p1))**2, trace=False) data_d.append(pm.Binomial('data_%i'%i, p=p, n=n, value=aphea[i], observed=True)) elif datatype[i]=='bphe': cur_obs = [bpheb[i], bphe0[i]] n = np.sum(cur_obs) # Need to have (b and not 0) on either chromosome p = pm.Lambda('p_%i'%i, lambda pb=pb, p0=p0, p1=p1: 1-(1-pb*(1-p0))**2, trace=False) data_d.append(pm.Binomial('data_%i'%i, p=p, n=n, value=aphea[i], observed=True)) elif datatype[i]=='phe': cur_obs = np.array([pheab[i],phea[i],pheb[i],phe0[i]]) n = np.sum(cur_obs) p = pm.Lambda('p_%i'%i, lambda pb=pb, p0=p0, p1=p1: np.array([\ g_freqs['ab'](pb,p0,p1), g_freqs['a0'](pb,p0,p1)+g_freqs['a1'](pb,p0,p1)+g_freqs['aa'](pb,p0,p1), g_freqs['b0'](pb,p0,p1)+g_freqs['b1'](pb,p0,p1)+g_freqs['bb'](pb,p0,p1), g_freqs['00'](pb,p0,p1)+g_freqs['01'](pb,p0,p1)+g_freqs['11'](pb,p0,p1)]), trace=False) np.testing.assert_almost_equal(p.value.sum(), 1) data_d.append(pm.Multinomial('data_%i'%i, p=p, n=n, value=cur_obs, observed=True)) elif datatype[i]=='gen': cur_obs = np.array([genaa[i],genab[i],gena0[i],gena1[i],genbb[i],genb0[i],genb1[i],gen00[i],gen01[i],gen11[i]]) n = np.sum(cur_obs) p = pm.Lambda('p_%i'%i, lambda pb=pb, p0=p0, p1=p1, g_freqs=g_freqs: \ np.array([g_freqs[key](pb,p0,p1) for key in ['aa','ab','a0','a1','bb','b0','b1','00','01','11']]), trace=False) np.testing.assert_almost_equal(p.value.sum(), 1) data_d.append(pm.Multinomial('data_%i'%i, p=p, n=n, value=cur_obs, observed=True)) # The fields plus the nugget, in convenient vector form @pm.deterministic def tilde_fb(tilde_fb_d = tilde_fb_d): """Concatenated version of tilde_fb, for postprocessing & Gibbs sampling purposes""" return np.hstack(tilde_fb_d) @pm.deterministic def tilde_fs(tilde_fs_d = tilde_fs_d): """Concatenated version of tilde_fs, for postprocessing & Gibbs sampling purposes""" return np.hstack(tilde_fs_d) return locals()pymc-2.2+ds/pymc/examples/gp/more_examples/Geostats/000077500000000000000000000000001204033704200225475ustar00rootroot00000000000000pymc-2.2+ds/pymc/examples/gp/more_examples/Geostats/getdata.py000066400000000000000000000006771204033704200245440ustar00rootroot00000000000000from numpy import * # Download datafile import urllib urllib.urlretrieve('http://www.ai-geostats.org/fileadmin/Documents/Data/walker_01.dat',filename='walker_01.dat') # Whhether to thin dataset; definitely thin it if you're running this example on your laptop! thin = False l = file('walker_01.dat').read().splitlines()[8:-1] a = array([fromstring(line,sep='\t') for line in l]) if thin: a=a[::5] ident,x,y,v,u,t=a.T mesh = vstack((x,y)).Tpymc-2.2+ds/pymc/examples/gp/more_examples/Geostats/mcmc.py000066400000000000000000000064541204033704200240510ustar00rootroot00000000000000# ============================================================ # = WARNING: This example is very computationally demanding! = # ============================================================ # I have set the map resolutions to give nice-looking results, but I am using # an 8-core, 3.0GHz Apple Mac Pro with 8GB of RAM and with environment variable # OMP_NUM_THREADS set to 8. If you are using a less powerful machine, you may # want to change the 'm' parameters # below. # The MCMC takes several hours on my machine. To make it run faster, thin the # dataset in getdata.py from model import * # from mpl_toolkits.basemap import Basemap # from matplotlib import * from pylab import * import model # ==================== # = Do the inference = # ==================== # Use the HDF5 database backend, because the trace will take up a lot of memory. # You can use the 'ram' backend instead if you don't have PyTables installed, but # you should thin the trace more. WalkerSampler = MCMC(model, db='hdf5') WalkerSampler.use_step_method(GPEvaluationGibbs, walker_v, V, d) # WalkerSampler.isample(50000,10000,100) WalkerSampler.isample(500,100,10) n = len(WalkerSampler.trace('V')[:]) # ========================== # = Mean and variance maps = # ========================== # This computation is O(m^2) m = 201 xplot = linspace(x.min(),x.max(),m) yplot = linspace(y.min(),y.max(),m) dplot = dstack(meshgrid(xplot,yplot)) Msurf = zeros(dplot.shape[:2]) E2surf = zeros(dplot.shape[:2]) # Get E[v] and E[v**2] over the entire posterior for i in xrange(n): # Reset all variables to their values at frame i of the trace WalkerSampler.remember(0,i) # Evaluate the observed mean Msurf_i, Vsurf_i = point_eval(WalkerSampler.walker_v.M_obs.value, WalkerSampler.walker_v.C_obs.value, dplot) Msurf += Msurf_i/n # Evaluate the observed covariance with one argument E2surf += (Vsurf_i + Msurf_i**2)/n # Get the posterior variance and standard deviation Vsurf = E2surf - Msurf**2 SDsurf = sqrt(Vsurf) # Plot mean and standard deviation surfaces close('all') imshow(Msurf, extent=[x.min(),x.max(),y.min(),y.max()],interpolation='nearest') plot(x,y,'r.',markersize=4) axis([x.min(),x.max(),y.min(),y.max()]) title('Posterior predictive mean surface') colorbar() savefig('elevmean.pdf') figure() imshow(SDsurf, extent=[x.min(),x.max(),y.min(),y.max()],interpolation='nearest') plot(x,y,'r.',markersize=4) axis([x.min(),x.max(),y.min(),y.max()]) title('Posterior predictive standard deviation surface') colorbar() savefig('elevvar.pdf') # ==================== # = Realization maps = # ==================== # Use thinner input arrays, this computation is O(m^6)!! m = 101 xplot = linspace(x.min(),x.max(),m) yplot = linspace(y.min(),y.max(),m) dplot = dstack(meshgrid(yplot,xplot)) indices = random_integers(n,size=2) for j,i in enumerate(indices): # Reset all variables to their values at frame i of the trace WalkerSampler.remember(0,i) # Evaluate the Gaussian process realisation R = WalkerSampler.walker_v.f.value(dplot) # Plot the realization figure() imshow(R,extent=[x.min(),x.max(),y.min(),y.max()],interpolation='nearest') plot(x,y,'r.',markersize=4) axis([x.min(),x.max(),y.min(),y.max()]) title('Realization from the posterior predictive distribution') colorbar() savefig('elevdraw%i.pdf'%j)pymc-2.2+ds/pymc/examples/gp/more_examples/Geostats/model.py000066400000000000000000000023401204033704200242200ustar00rootroot00000000000000from pymc import * from pymc.gp import * from pymc.gp.cov_funs import matern from getdata import * from pylab import * # ============ # = The mean = # ============ # Vague prior for the overall mean m = Uninformative('m', value=0) def constant(x, val): return zeros(x.shape[:-1],dtype=float) + val @deterministic def M(m=m): return Mean(constant, val=m) # ================== # = The covariance = # ================== # Informative prior for the degree of differentiability diff_degree = Uniform('diff_degree',.5,2,value=1) # Vague priors for the amplitude and scale amp = Exponential('amp',7.e-5, value=np.std(v)) scale = Exponential('scale',4e-3, value=x.max()/2) @deterministic def C(amp=amp, scale=scale, diff_degree=diff_degree): return FullRankCovariance(matern.euclidean, diff_degree = diff_degree, amp = amp, scale = scale) # =================== # = The GP submodel = # =================== walker_v = GPSubmodel('walker_v', M, C, mesh) # ============ # = The data = # ============ # Vague prior for the observation variance V = Exponential('V',5e-9, value=np.std(v)) # This is the observation of the elevation variable 'v', plus normally-distributed error. d = Normal('d',walker_v.f_eval,1./V,value=v,observed=True) pymc-2.2+ds/pymc/examples/gp/more_examples/MKMsalmon/000077500000000000000000000000001204033704200226145ustar00rootroot00000000000000pymc-2.2+ds/pymc/examples/gp/more_examples/MKMsalmon/MCMC.py000066400000000000000000000005441204033704200237100ustar00rootroot00000000000000from salmon_sampler import * from pylab import * # salmon = SalmonSampler('chum') # salmon = SalmonSampler('sockeye') salmon = SalmonSampler('pink') # Really takes 100k iter=100000 thin=iter/2000 burn=50000 # salmon.sample(iter=iter,burn=burn,thin=thin) salmon.isample(iter=iter,burn=burn,thin=thin) close('all') salmon.plot_SR() salmon.plot_traces() pymc-2.2+ds/pymc/examples/gp/more_examples/MKMsalmon/chum.csv000066400000000000000000000005101204033704200242610ustar00rootroot00000000000000487,0.98 92,0.23 202,0.47 1138,2.7 1236,3.23 482,1.24 696,1.76 7333,12.51 3077,4.29 2893,6.18 2532,6.24 6322,5.86 2486,1.65 3535,2.39 2753,3.06 1905,1.87 2928,2.81 3160,3.67 2927,4.43 2186,1.69 2812,1.98 333,0.23 509,0.77 404,0.58 1570,0.93 1426,1.97 263,0.36 681,1.39 1366,2.67 1297,2.74 1360,2.5 1315,1.85 1567,3.31 1919,2.68 pymc-2.2+ds/pymc/examples/gp/more_examples/MKMsalmon/pink.csv000066400000000000000000000002471204033704200242750ustar00rootroot0000000000000032,0.04 70,0.11 108,0.19 178,0.24 364,0.54 633,0.39 600,0.28 444,0.11 671,0.26 1030,1.17 2297,0.92 660,0.81 1326,0.92 1156,1.48 1823,1.36 1077,0.85 1497,0.97 821,0.62 pymc-2.2+ds/pymc/examples/gp/more_examples/MKMsalmon/regression.py000066400000000000000000000007521204033704200253520ustar00rootroot00000000000000from salmon import * # Create a salmon instance for each datafile. chum = salmon('chum') sockeye = salmon('sockeye') pink = salmon('pink') # Fit and make plots. close('all') for species in [chum, sockeye, pink]: observe(species.M, species.C, obs_mesh = species.abundance, obs_vals = species.frye, obs_V = .25*species.frye) species.plot() path = "../../Docs/figs/MMK" + species.name + "reg.pdf" # savefig(path) # show() pymc-2.2+ds/pymc/examples/gp/more_examples/MKMsalmon/salmon.py000066400000000000000000000033451204033704200244640ustar00rootroot00000000000000from pymc.gp import * from pymc.gp.cov_funs import matern from numpy import * from pylab import * from csv import * # Declare salmon class class salmon(object): """ Reads and organizes data from csv files, acts as a container for mean and covariance objects, makes plots. """ def __init__(self, name): # Read in data self.name = name f = file(name+'.csv') r = reader(f,dialect='excel') lines = [] for line in r: lines.append(line) f.close() data = zeros((len(lines), 2),dtype=float) for i in range(len(lines)): data[i,:] = array(lines[i]) self.abundance = data[:,0].ravel() self.frye = data[:,1].ravel() # Specify priors # Function for prior mean def line(x, slope): return slope * x self.M = Mean(line, slope = mean(self.frye / self.abundance)) self.C = Covariance( matern.euclidean, diff_degree = 1.4, scale = 100. * self.abundance.max(), amp = 200. * self.frye.max()) observe(self.M,self.C,obs_mesh = 0, obs_vals = 0, obs_V = 0) self.xplot = linspace(0,1.25 * self.abundance.max(),100) def plot(self): """ Plot posterior from simple nonstochetric regression. """ figure() plot_envelope(self.M, self.C, self.xplot) for i in range(3): f = Realization(self.M, self.C) plot(self.xplot,f(self.xplot)) plot(self.abundance, self.frye, 'k.', markersize=4) xlabel('Female abundance') ylabel('Frye density') title(self.name) axis('tight') pymc-2.2+ds/pymc/examples/gp/more_examples/MKMsalmon/salmon_sampler.py000066400000000000000000000076141204033704200262120ustar00rootroot00000000000000# FIXME: Make sure this still works. from pymc import * from pymc.gp import * from pymc.gp.cov_funs import matern from numpy import * from pylab import * from csv import * class SalmonSampler(MCMC): def __init__(self, name): # Read in data self.name = name f = file(name+'.csv') r = reader(f,dialect='excel') lines = [] for line in r: lines.append(line) f.close() csvdata = zeros((len(lines), 2),dtype=float) for i in range(len(lines)): csvdata[i,:] = array(lines[i]) abundance = csvdata[:,0].ravel() frye = csvdata[:,1].ravel() lfrye = log(frye) labundance = log(abundance) rx = labundance.max() - labundance.min() ry = lfrye.max() - lfrye.min() self.abundance = abundance self.frye = frye self.lfrye = log(frye) self.labundance = log(abundance) self.plot_x = linspace(self.abundance.min()*.1,self.abundance.max(),100) # The mean function's parameters beta_0 = Gamma('beta_0', alpha = log(4.5), beta = 1./(10.*(ry/4.)**2)) beta_1 = Gamma('beta_1', alpha = 1.6 * log(1000.) / ry**2, beta = 1.6 * log(1000.) / ry**2) # The covariance function's parameters invtausq = Gamma('invtausq', alpha = 2., beta = 1./(10.*(ry/4.)**2)) @deterministic def amp(invtausq=invtausq): """ Prior amplitude of f. """ return 1./sqrt(invtausq) scale = InverseGamma('scale' , alpha=2., beta=1./(6. / rx), value=3) diff_degree = Uniform('diff_degree', .1, 3, value=1.5) @deterministic def C(diff_degree=diff_degree, amp=amp, scale=scale): """ The Matern covariance function, observed to be zero at the origin. """ C = Covariance(matern.euclidean, diff_degree = diff_degree, amp = amp, scale = scale) return C @deterministic def M(beta_0 = beta_0, beta_1 = beta_1): """ The mean function is the Cushing stock-recruitment function """ M = Mean(lambda x: beta_0+ x*beta_1) return M SR = GPSubmodel(self.name + '.SR', M, C, mesh = labundance) frye_tau = Gamma('frye_tau', alpha = 2., beta = 1./(10.*(ry/4.)**2)) @deterministic def frye_V(frye_tau=frye_tau): """ frye_V = 1/(frye_tau) """ return 1./(frye_tau) @observed @stochastic def obs_frye(value=lfrye, mu = SR.f_eval, mesh=labundance, tau = frye_tau): """ The log of the frye count. """ return normal_like(value, mu, tau) MCMC.__init__(self, locals()) self.use_step_method(GPEvaluationGibbs, SR, frye_V, obs_frye) def plot_traces(self): for object in [self.beta_0, self.beta_1, self.amp, self.scale, self.diff_degree, self.frye_tau]: try: y=object.trace() except: print object.__name__ break figure() plot(y) title(object.__name__) def plot_SR(self): f_trace = self.SR.f.trace() figure() # subplot(2,1,1) hold('on') gpplots.plot_GP_envelopes(self.SR.f, self.plot_x, transx = log, transy=exp) for i in range(3): plot(self.plot_x, exp(f_trace[i](log(self.plot_x))), label='draw %i'%i) plot(self.abundance, self.frye, 'k.', label='data', markersize=8) # legend(loc=0) axis([self.abundance.min()*.1, self.abundance.max(), 0., self.frye.max()*2.]) # midpoint_trace = [] # for i in range(len(f_trace)): # midpoint_trace.append(f_trace[i](mean(self.abundance))) # subplot(2,1,2) # plot(midpoint_trace) # title('SR(mean(abundance))') pymc-2.2+ds/pymc/examples/gp/more_examples/MKMsalmon/sockeye.csv000066400000000000000000000006001204033704200247670ustar00rootroot000000000000002986,9 3424,12.39 1631,4.5 784,2.56 9671,32.62 2519,8.19 1520,4.51 6418,15.21 10857,35.05 15044,36.85 10287,25.68 16525,52.75 19172,19.52 17527,40.98 11424,26.67 24043,52.6 10244,21.62 30983,56.05 12037,29.31 25098,45.4 11362,18.88 24375,19.14 18281,33.77 14192,20.44 7527,21.66 6061,18.22 15536,42.9 18080,46.09 17354,38.82 17301,42.22 11486,21.96 20120,45.05 10700,13.7 12867,27.71 pymc-2.2+ds/pymc/examples/gp/observation.py000066400000000000000000000012321204033704200210210ustar00rootroot00000000000000# Import the mean and covariance from .mean import M from .cov import C from pymc.gp import * from numpy import * # Impose observations on the GP o = array([-.5,.5]) V = array([.002,.002]) data = array([3.1, 2.9]) observe(M, C, obs_mesh=o, obs_V = V, obs_vals = data) # Generate realizations f_list=[Realization(M, C) for i in range(3)] x=arange(-1.,1.,.01) #### - Plot - #### if __name__ == '__main__': from pylab import * x=arange(-1.,1.,.01) clf() plot_envelope(M, C, mesh=x) for f in f_list: plot(x, f(x)) xlabel('x') ylabel('f(x)') title('Three realizations of the observed GP') axis('tight') # show() pymc-2.2+ds/pymc/examples/gp/realizations.py000066400000000000000000000007051204033704200211760ustar00rootroot00000000000000# Import the mean and covariance from .mean import M from .cov import C from pymc.gp import * # Generate realizations f_list=[Realization(M, C) for i in range(3)] #### - Plot - #### if __name__ == '__main__': from pylab import * x=arange(-1.,1.,.01) clf() plot_envelope(M, C, x) for f in f_list: plot(x, f(x)) xlabel('x') ylabel('f(x)') title('Three realizations of the GP') axis('tight') # show() pymc-2.2+ds/pymc/examples/melanoma.py000066400000000000000000000022751204033704200176610ustar00rootroot00000000000000""" Exponential survival model for melanoma data, taken from Bayesian Data Analysis (Ibrahim et al 2000) Example 2.1 # JAGS model model { for(i in 1:N) { z[i] ~ dinterval(t[i], t.cen[i]) t[i] ~ dweib(1,mu[i]) eta[i] <- beta0 + beta[1]*trt[i] mu[i] <- exp(eta[i]) } # Priors for(j in 1:p) { beta[j] ~ dnorm(0,.0001) } beta0 ~ dnorm(0,.0001) } """ from pymc import Normal, Lambda, observed from .melanoma_data import * # Convert censoring indicators to indicators for failure event failure = (censored==0).astype(int) # Intercept for survival rate beta0 = Normal('beta0', mu=0.0, tau=0.0001, value=0.0) # Treatment effect beta1 = Normal('beta1', mu=0.0, tau=0.0001, value=0.0) # Survival rates lam = Lambda('lam', lambda b0=beta0, b1=beta1, t=treat: exp(b0 + b1*t)) @observed def survival(value=t, lam=lam, f=failure): """Exponential survival likelihood, accounting for censoring""" return sum(f*log(lam) - lam*value) if __name__ == '__main__': from pymc import MCMC, Matplot # Instantiate model M = MCMC([beta0, beta1, lam, survival]) # Sample M.sample(10000, 5000) # Plot traces Matplot.plot(M)pymc-2.2+ds/pymc/examples/melanoma_data.py000066400000000000000000000236531204033704200206550ustar00rootroot00000000000000from numpy import * melanoma_data = reshape([1.57808, 0.00000, 2, 1.27, 35.9945, 1, 1.48219, 0.00000, 2, 0.76, 41.9014, 1, 0.0, 7.33425, 1, 35.00, 70.2164, 2, 2.23288, 0.00000, 1, 1.70, 33.7096, 1, 0.0, 9.38356, 2, 1.00, 47.9726, 1, 3.27671, 0.00000, 1, 11.00, 31.8219, 2, 0.0, 9.64384, 1, 6.50, 32.9479, 1, 1.66575, 0.00000, 2, 3.62, 35.9205, 1, 0.94247, 0.00000, 1, 8.50, 40.5068, 2, 1.68767, 0.00000, 2, 4.20, 57.0384, 1, 2.34247, 0.00000, 2, 5.00, 62.0630, 1, 0.89863, 0.00000, 1, 2.25, 56.5342, 1, 0.0, 9.03288, 2, 2.30, 22.9945, 2, 0.0, 9.63014, 2, 10.00, 18.4712, 1, 0.52603, 0.00000, 1, 3.35, 41.2521, 1, 1.82192, 0.00000, 2, 3.80, 29.5178, 1, 0.93425, 0.00000, 1, 0.75, 59.0493, 2, 0.0, 8.98630, 2, 0.50, 32.2877, 1, 3.35068, 0.00000, 1, 0.46, 26.4822, 1, 8.67397, 0.00000, 1, 2.55, 55.0411, 1, 0.41096, 0.00000, 2, 1.95, 55.1233, 2, 2.78630, 0.00000, 1, 2.50, 22.4055, 2, 2.56438, 0.00000, 1, 2.10, 50.8466, 1, 0.0, 8.75342, 2, 9.00, 56.0274, 1, 0.56986, 0.00000, 2, 5.00, 55.4767, 1, 0.0, 8.40000, 1, 0.55, 41.2411, 1, 0.0, 7.25205, 1, 12.50, 32.7425, 1, 4.38630, 0.00000, 2, 1.16, 45.3479, 1, 0.0, 8.36712, 2, 4.25, 42.8438, 2, 0.0, 8.99178, 2, 15.00, 51.1068, 1, 0.86575, 0.00000, 2, 0.72, 30.1808, 1, 0.0, 4.76986, 1, 1.50, 58.7014, 2, 1.15616, 0.00000, 2, 6.50, 51.5397, 1, 0.0, 7.28767, 1, 2.75, 27.1973, 1, 3.13151, 0.00000, 1, 3.83, 67.6740, 1, 0.0, 8.55068, 2, 1.80, 64.4274, 2, 0.0, 8.45753, 2, 4.75, 35.4411, 1, 4.59452, 0.00000, 1, 5.80, 35.9452, 1, 2.88219, 0.00000, 2, 0.51, 48.1370, 1, 0.89589, 0.00000, 1, 3.25, 58.6082, 1, 1.76164, 0.00000, 2, 0.90, 40.0137, 2, 0.0, 7.81370, 1, 3.45, 26.0055, 1, 0.0, 8.33425, 2, 1.38, 36.9616, 1, 2.62192, 0.00000, 1, 5.28, 25.9068, 2, 0.16164, 0.00000, 2, 3.00, 63.8055, 1, 0.0, 8.24658, 1, 2.20, 29.6986, 2, 1.52603, 0.00000, 1, 7.00, 61.6384, 1, 5.30959, 0.00000, 1, 4.00, 49.9918, 1, 0.87123, 0.00000, 2, 2.36, 37.1068, 1, 0.41644, 0.00000, 1, 1.06, 53.4658, 2, 4.24110, 0.00000, 1, 6.50, 57.7425, 2, 0.13699, 0.00000, 1, 10.00, 29.1479, 1, 7.07671, 0.00000, 2, 1.20, 59.2466, 1, 0.13151, 0.00000, 2, 15.00, 61.3507, 2, 0.0, 8.02740, 1, 0.49, 33.9205, 2, 0.0, 6.16164, 2, 1.60, 43.1918, 1, 1.29863, 0.00000, 2, 11.50, 34.1890, 2, 1.29041, 0.00000, 2, 1.90, 58.3808, 2, 0.0, 7.99726, 1, 4.80, 21.9479, 2, 0.0, 8.34795, 1, 0.55, 35.1151, 1, 0.0, 7.30137, 2, 6.50, 31.6493, 1, 2.32877, 0.00000, 2, 12.00, 56.1890, 1, 0.56438, 0.00000, 1, 7.00, 60.7123, 1, 5.62740, 0.00000, 2, 6.50, 58.8329, 2, 1.23014, 0.00000, 1, 1.60, 44.4849, 2, 0.0, 7.94521, 1, 1.15, 51.1315, 2, 5.06301, 0.00000, 1, 2.65, 34.2164, 1, 3.27671, 0.00000, 2, 2.00, 35.2301, 1, 0.0, 0.60822, 2, 2.50, 32.7425, 2, 0.65753, 0.00000, 1, 4.38, 38.0986, 2, 0.84110, 0.00000, 2, 2.93, 45.7699, 1, 0.0, 8.40000, 2, 3.00, 44.2000, 1, 0.18356, 0.00000, 1, 2.50, 71.3260, 1, 2.62466, 0.00000, 2, 2.30, 59.0795, 1, 0.0, 7.96438, 2, 2.00, 35.3836, 2, 0.0, 7.77808, 1, 0.75, 58.0438, 2, 0.22192, 0.00000, 1, 5.00, 43.2164, 1, 2.33973, 0.00000, 1, 10.00, 60.4932, 1, 0.52329, 0.00000, 1, 0.87, 32.4795, 2, 0.0, 8.04110, 2, 1.33, 60.2986, 1, 0.0, 7.83288, 1, 5.60, 47.1342, 1, 0.64110, 0.00000, 1, 2.55, 42.3233, 1, 0.38356, 0.00000, 1, 6.50, 54.4164, 1, 0.0, 7.82192, 2, 1.20, 51.4219, 1, 0.51781, 0.00000, 2, 3.00, 46.5973, 1, 0.0, 8.09863, 2, 2.55, 58.3562, 1, 0.0, 8.16712, 2, 1.61, 25.6712, 2, 4.42740, 0.00000, 1, 1.40, 29.1726, 1, 0.88493, 0.00000, 1, 2.25, 18.6795, 1, 2.78356, 0.00000, 1, 4.50, 60.9671, 2, 2.64658, 0.00000, 2, 0.81, 63.8849, 2, 0.0, 8.21370, 2, 1.30, 37.9808, 2, 0.0, 7.41918, 2, 3.20, 32.3507, 2, 0.99726, 0.00000, 1, 1.29, 42.9589, 1, 5.88493, 0.00000, 2, 4.40, 40.9562, 1, 0.41644, 0.00000, 1, 6.00, 61.9753, 1, 3.53699, 0.00000, 1, 3.93, 55.3315, 2, 0.0, 7.56164, 1, 0.60, 36.0767, 1, 0.0, 7.53151, 1, 0.75, 50.6795, 1, 0.27671, 0.00000, 1, 0.73, 66.6986, 1, 0.76986, 0.00000, 2, 0.20, 29.3479, 2, 0.0, 7.62192, 2, 3.88, 33.1863, 1, 0.0, 7.79726, 1, 2.48, 48.6356, 2, 0.64110, 0.00000, 1, 2.50, 29.4877, 1, 1.14521, 0.00000, 2, 10.00, 42.6685, 1, 2.01644, 0.00000, 1, 16.00, 24.4055, 2, 2.84384, 0.00000, 1, 4.00, 40.3890, 1, 0.0, 7.00000, 2, 1.35, 45.4192, 1, 1.27397, 0.00000, 2, 3.00, 65.3945, 1, 0.0, 7.09589, 1, 10.72, 47.5753, 2, 2.04110, 0.00000, 1, 1.50, 58.4438, 2, 0.83562, 0.00000, 1, 3.50, 59.2767, 2, 0.92329, 0.00000, 1, 1.10, 30.2630, 2, 0.07397, 0.00000, 1, 1.00, 40.7370, 1, 0.0, 7.30685, 2, 5.10, 44.7452, 1, 2.07671, 0.00000, 2, 0.50, 67.8329, 1, 0.0, 7.70959, 2, 4.03, 27.7452, 1, 0.0, 6.15890, 1, 1.80, 25.9260, 2, 0.0, 6.89315, 2, 3.50, 31.2740, 1, 3.30685, 0.00000, 1, 1.15, 58.8822, 2, 0.36164, 0.00000, 1, 1.75, 57.0575, 1, 1.97808, 0.00000, 2, 2.50, 59.8137, 1, 1.23836, 0.00000, 2, 2.10, 77.5151, 1, 0.10685, 0.00000, 1, 1.35, 43.4219, 1, 0.0, 7.63836, 1, 4.50, 52.2082, 1, 2.06301, 0.00000, 1, 0.50, 36.3205, 2, 0.0, 7.42466, 2, 2.30, 25.9781, 1, 0.50959, 0.00000, 1, 4.00, 49.4411, 1, 0.65753, 0.00000, 1, 5.40, 57.9589, 1, 0.0, 6.93151, 1, 6.00, 65.5644, 1, 0.0, 7.23288, 2, 5.10, 72.3425, 1, 6.01096, 0.00000, 1, 4.50, 68.8548, 1, 0.33699, 0.00000, 1, 1.45, 50.4438, 2, 0.0, 6.47123, 2, 3.38, 48.2877, 1, 0.94795, 0.00000, 1, 3.00, 46.9479, 2, 2.91781, 0.00000, 2, 1.20, 33.6000, 2, 1.59726, 0.00000, 2, 7.30, 51.1644, 2, 0.84932, 0.00000, 2, 1.67, 47.7836, 1, 1.38356, 0.00000, 1, 4.00, 53.8795, 2, 3.81644, 0.00000, 2, 2.10, 38.7068, 2, 0.0, 7.06849, 1, 10.00, 69.3205, 2, 0.0, 7.04110, 2, 3.50, 66.0219, 1, 1.00274, 0.00000, 2, 1.10, 36.0329, 2, 0.0, 6.34795, 2, 0.40, 63.4603, 1, 1.18082, 0.00000, 1, 0.70, 48.8986, 2, 0.97534, 0.00000, 1, 5.00, 45.0575, 1, 2.16712, 0.00000, 1, 0.85, 57.6712, 2, 0.0, 6.85479, 1, 4.80, 45.2000, 1, 1.38356, 0.00000, 1, 1.20, 49.0438, 1, 1.71507, 0.00000, 2, 1.30, 51.4630, 1, 0.79452, 0.00000, 2, 5.80, 34.5479, 1, 0.0, 6.86301, 2, 6.00, 47.6438, 2, 0.0, 6.50411, 1, 3.00, 38.7233, 2, 0.42466, 0.00000, 2, 1.88, 54.0658, 1, 0.98630, 0.00000, 1, 2.60, 45.7397, 1, 0.0, 6.13699, 2, 2.70, 47.2822, 2, 3.80000, 0.00000, 2, 6.00, 62.6411, 1, 0.0, 6.48493, 1, 4.00, 62.0192, 2, 0.0, 6.96438, 2, 1.71, 41.0904, 2, 0.0, 6.78082, 2, 1.60, 50.2712, 2, 0.56164, 0.00000, 2, 1.50, 49.5288, 2, 2.67123, 0.00000, 1, 3.00, 70.8192, 1, 1.56712, 0.00000, 2, 0.90, 59.0712, 1, 2.07397, 0.00000, 2, 4.00, 53.9041, 1, 0.33973, 0.00000, 1, 2.80, 44.7342, 1, 3.37808, 0.00000, 2, 0.80, 22.1397, 1, 3.15068, 0.00000, 1, 0.70, 72.8575, 1, 0.0, 6.81096, 2, 0.90, 61.4521, 1, 3.20822, 0.00000, 2, 12.00, 61.2904, 1, 0.62740, 0.00000, 1, 5.78, 34.7507, 1, 1.64384, 0.00000, 1, 0.60, 67.4164, 2, 1.40822, 0.00000, 1, 12.00, 53.2493, 1, 0.0, 6.06575, 1, 4.00, 49.0082, 1, 1.66301, 0.00000, 2, 0.45, 56.7699, 1, 1.36986, 0.00000, 2, 1.30, 34.0247, 2, 5.46849, 0.00000, 1, 0.81, 34.3014, 2, 0.42740, 0.00000, 1, 3.20, 45.0712, 2, 1.13973, 0.00000, 2, 4.00, 54.7671, 2, 1.73699, 0.00000, 2, 4.77, 42.8548, 2, 0.0, 5.54521, 2, 2.20, 36.6301, 2, 0.85205, 0.00000, 1, 3.00, 43.2466, 1, 0.43014, 0.00000, 1, 3.00, 53.3562, 1, 1.20822, 0.00000, 2, 0.80, 35.3534, 1, 4.36164, 0.00000, 1, 4.00, 36.5233, 1, 0.52877, 0.00000, 2, 5.00, 52.7863, 1, 0.0, 6.51507, 1, 2.00, 24.4329, 2, 2.89863, 0.00000, 2, 3.85, 58.7178, 1, 0.0, 6.20274, 2, 0.76, 45.5479, 1, 1.21644, 0.00000, 2, 0.75, 43.3014, 2, 0.0, 6.00000, 2, 6.50, 51.4055, 2, 0.0, 6.25479, 1, 0.85, 38.9671, 2, 0.0, 6.49863, 1, 4.30, 68.2658, 1, 1.13699, 0.00000, 2, 2.10, 59.4493, 2, 1.69589, 0.00000, 1, 1.50, 30.0192, 1, 0.0, 6.41096, 2, 2.00, 22.1562, 2, 0.0, 6.02192, 1, 11.00, 54.7671, 1, 3.04932, 0.00000, 2, 4.88, 45.0384, 1, 0.0, 5.62740, 2, 5.20, 39.7589, 1, 0.72603, 0.00000, 1, 3.04, 41.3808, 1, 0.73425, 0.00000, 2, 8.00, 34.9671, 1, 1.47945, 0.00000, 2, 1.60, 46.3479, 1, 0.37808, 0.00000, 2, 1.10, 29.9233, 2, 0.0, 5.75890, 2, 3.00, 32.8740, 1, 1.48219, 0.00000, 2, 10.00, 39.5397, 2, 0.0, 5.88493, 1, 1.95, 55.4822, 1, 0.0, 1.80274, 1, 2.00, 32.3562, 1, 1.40548, 0.00000, 2, 3.70, 41.8027, 2, 0.0, 4.74795, 1, 2.90, 35.3452, 2, 0.0, 5.24658, 1, 1.80, 50.4795, 1, 0.29041, 0.00000, 1, 6.00, 61.3507, 2, 0.0, 5.83836, 1, 1.50, 67.3562, 1, 0.0, 5.32055, 2, 1.75, 53.8548, 2, 5.16712, 0.00000, 2, 5.00, 78.7315, 2, 0.0, 5.59178, 2, 0.63, 62.7233, 1, 0.0, 5.77808, 1, 1.15, 65.1507, 1, 0.53425, 0.00000, 2, 1.50, 34.8274, 1, 0.0, 2.22466, 1, 0.98, 33.8466, 2, 3.59726, 0.00000, 1, 5.00, 67.8822, 1, 0.0, 5.32329, 1, 5.50, 66.0712, 2, 1.78630, 0.00000, 2, 1.00, 55.0658, 2, 0.70411, 0.00000, 2, 10.00, 50.5123, 1, 0.0, 4.94795, 2, 5.00, 42.4055, 2, 0.0, 5.45479, 2, 3.75, 58.1068, 2, 4.32877, 0.00000, 1, 10.00, 26.0137, 1, 1.16164, 0.00000, 2, 3.00, 54.4685, 1, 0.0, 5.20274, 2, 8.00, 54.0630, 2, 0.0, 4.40822, 1, 1.64, 34.5589, 1, 1.41096, 0.00000, 1, 4.95, 58.5068, 1, 0.0, 4.92877, 2, 1.45, 63.9370, 1, 0.0, 5.42192, 2, 12.00, 49.8274, 2, 0.98904, 0.00000, 1, 2.05, 50.5562, 1, 0.36438, 0.00000, 1, 3.60, 40.4795, 2, 0.0, 4.38082, 1, 8.30, 61.7479, 2, 0.77260, 0.00000, 2, 0.45, 41.6712, 1, 4.90959, 0.00000, 2, 3.00, 25.5096, 1, 1.26849, 0.00000, 1, 4.40, 61.2000, 1, 0.58082, 0.00000, 2, 1.10, 53.1260, 1, 0.0, 4.95616, 1, 1.05, 40.4658, 1, 0.0, 5.12329, 1, 1.71, 60.3068, 1, 0.0, 4.74795, 1, 6.30, 48.7425, 2, 0.0, 4.90685, 2, 0.50, 46.7562, 2, 1.41918, 0.00000, 1, 5.10, 34.8932, 2, 0.44110, 0.00000, 1, 6.00, 33.3096, 1, 0.0, 4.29863, 2, 1.50, 35.7589, 1, 0.0, 4.63836, 2, 0.36, 49.8575, 1, 0.0, 4.81370, 1, 3.00, 57.3726, 2, 4.50137, 0.00000, 2, 1.24, 29.7726, 2, 3.92329, 0.00000, 2, 0.70, 51.8822, 2, 0.0, 4.86027, 2, 0.80, 65.3123, 2, 0.52603, 0.00000, 1, 1.00, 52.0658, 2, 2.10685, 0.00000, 2, 3.38, 60.9534, 2, 0.0, 4.24384, 1, 1.52, 32.6055, 2, 3.39178, 0.00000, 1, 2.20, 51.5123, 2, 0.0, 4.36164, 2, 2.10, 48.6548, 1, 0.0, 4.81918, 2, 1.40, 43.8438, 2], (255, 6)) # Censoring indicator censored = (melanoma_data[:,0] == 0).astype(int) # Time t = sum(melanoma_data[:,0:2],1) # Treatment treat = melanoma_data[:,2].astype(int)-1 # Breslow scale breslow = melanoma_data[:,3] # Age and sex age = melanoma_data[:,4] sex = melanoma_data[:,5].astype(int)-1pymc-2.2+ds/pymc/examples/weibull_fit.py000066400000000000000000000023201204033704200203640ustar00rootroot00000000000000""" ==================================================== Fitting the parameters of a statistical distribution ==================================================== This simple example shows how to fit the parameters of a statistical distribution given - a series of experimental data, - priors for the parameters. The statistical distribution chosen here is the Weibull distribution, but the same can be done for any other distribution. """ from pymc import rweibull, Uniform, Weibull """ First, we will create a fake data set using some fixed parameters. In real life, of course, you already have the data ! """ alpha = 3 beta = 5 N = 100 dataset = rweibull(alpha, beta, N) """ Now we create a pymc model that defines the likelihood of the data set and prior assumptions about the value of the parameters. """ a = Uniform('a', lower=0, upper=10, value=5, doc='Weibull alpha parameter') b = Uniform('b', lower=0, upper=10, value=5, doc='Weibull beta parameter') like = Weibull('like', alpha=a, beta=b, value=dataset, observed=True) if __name__=='__main__': from pymc import MCMC, Matplot # Sample the parameters a and b and analyze the results M = MCMC([a,b,like]) M.sample(10000,5000) Matplot.plot(M) pymc-2.2+ds/pymc/examples/zip.py000066400000000000000000000020211204033704200166570ustar00rootroot00000000000000#!/usr/bin/env python """ zip.py Zero-inflated Poisson example using simulated data. """ import numpy as np from pymc import Uniform, Beta, observed, rpoisson, poisson_like # True parameter values mu_true = 5 psi_true = 0.75 n = 100 # Simulate some data data = np.array([rpoisson(mu_true)*(np.random.random()= hi) then xi = lo+dmod(xi-hi, hi - lo) end if mx(i) = xi enddo RETURN END SUBROUTINE standardize(x, loc, scale, n, nloc, nscale, z) c Compute z = (x-mu)/scale cf2py double precision dimension(n), intent(in) :: x cf2py double precision dimension(n), intent(out) :: z cf2py double precision dimension(nloc), intent(in) :: loc cf2py double precision dimension(nscale), intent(in) :: scale cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(loc) :: nloc=len(loc) cf2py integer intent(hide),depend(scale) :: nscale=len(scale) cf2py threadsafe DOUBLE PRECISION x(n), loc(nloc), scale(nscale), z(n) DOUBLE PRECISION mu, sigma INTEGER n, nloc, nscale, i LOGICAL not_scalar_loc, not_scalar_scale mu = loc(1) sigma = scale(1) not_scalar_loc = (nloc .NE. 1) not_scalar_scale = (nscale .NE. 1) do i=1,n if (not_scalar_loc) mu = loc(i) if (not_scalar_scale) sigma = scale(i) z(i) = (x(i) - mu)/sigma enddo END DOUBLE PRECISION FUNCTION gammln(xx) C Returns the value ln[gamma(xx)] for xx > 0. DOUBLE PRECISION xx INTEGER j DOUBLE PRECISION ser,stp,tmp,x,y,cof(6) C Internal arithmetic will be done in double precision, C a nicety that you can omit if five-figure accuracy is good enough. SAVE cof,stp DATA cof,stp/76.18009172947146d0,-86.50532032941677d0, +24.01409824083091d0,-1.231739572450155d0,.1208650973866179d-2, +-.5395239384953d-5,2.5066282746310005d0/ x=xx y=x tmp=x+5.5d0 tmp=(x+0.5d0)*dlog(tmp)-tmp ser=1.000000000190015d0 do j=1,6 y=y+1.d0 ser=ser+cof(j)/y enddo gammln=tmp+dlog(stp*ser/x) return END DOUBLE PRECISION FUNCTION mvgammln(x, k) C Returns the logarithm of the multivariate gamma function for x > 0 IMPLICIT NONE DOUBLE PRECISION PI, x DOUBLE PRECISION gammln PARAMETER (PI=3.141592653589793238462643d0) INTEGER j,k mvgammln = k * (k-1) / 4 * log(PI) do j=1,k mvgammln = mvgammln + gammln(x + (1-j)/2) enddo return END DOUBLE PRECISION FUNCTION factrl(n) C Returns the value n! as a floating-point number. INTEGER n DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) INTEGER j,ntop C Table to be filled in only as required. DOUBLE PRECISION a(33),gammln SAVE ntop,a C Table initialized with 0! only. DATA ntop,a(1)/0,1./ if (n.lt.0) then c write (*,*) 'negative factorial in factrl' factrl=-infinity return else if (n.le.ntop) then C Already in table. factrl=a(n+1) else if (n.le.32) then C Fill in table up to desired value. do j=ntop+1,n a(j+1)=j*a(j) enddo ntop=n factrl=a(n+1) else C Larger value than size of table is required. Actually, C this big a value is going to overflow on many computers, C but no harm in trying. factrl=dexp(gammln(n+1.d0)) endif return END DOUBLE PRECISION FUNCTION factln(n) C USES gammln Returns ln(n!). INTEGER n DOUBLE PRECISION a(100),gammln, pass_val DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) SAVE a C Initialize the table to negative values. DATA a/100*-1./ pass_val = n + 1 if (n.lt.0) then c write (*,*) 'negative factorial in factln' factln=-infinity return endif C In range of the table. if (n.le.99) then C If not already in the table, put it in. if (a(n+1).lt.0.) a(n+1)=gammln(pass_val) factln=a(n+1) else C Out of range of the table. factln=gammln(pass_val) endif return END ! def normcdf(x): ! """Normal cumulative density function.""" ! x = np.atleast_1d(x) ! return np.array([.5*(1+flib.derf(y/sqrt(2))) for y in x]) SUBROUTINE normcdf(x, nx) cf2py intent(hide) nx cf2py intent(inplace) x INTEGER i, nx DOUBLE PRECISION x(nx), sqrttwo sqrttwo = dsqrt(2.0D0) do i=1,nx x(i) = x(i) / sqrttwo x(i) = 0.5D0*(1.0D0 + derf(x(i))) end do RETURN end ! mu = np.asarray(mu) ! tau = np.asarray(tau) ! return np.sum(np.log(2.) + np.log(pymc.utils.normcdf((x-mu)*np.sqrt(tau)*alpha))) + normal_like(x,mu,tau) SUBROUTINE sn_like(x,nx,mu,tau,alph,nmu,ntau,nalph,like) cf2py intent(hide) nmu, ntau, nalph, nx cf2py intent(out) like cf2py threadsafe INTEGER i, nx, nalph, nmu, ntau, tnx DOUBLE PRECISION x(nx), mu(nmu), tau(ntau), alph(nalph) DOUBLE PRECISION mu_now, tau_now, alph_now, d_now, like DOUBLE PRECISION scratch LOGICAL vec_mu, vec_tau, vec_alph DOUBLE PRECISION PI, sqrttwo, infinity PARAMETER (PI=3.141592653589793238462643d0) PARAMETER (infinity = 1.7976931348623157d308) sqrttwo = dsqrt(2.0D0) like = dlog(2.0D0) * nx vec_mu = (nmu.GT.1) vec_tau = (ntau.GT.1) vec_alph = (nalph.GT.1) alph_now = alph(1) tau_now = tau(1) mu_now = mu(1) do i=1,nx if (vec_mu) then mu_now = mu(i) end if if (vec_alph) then alph_now = alph(i) end if if (vec_tau) then tau_now = tau(i) end if if ((tau_now .LE. 0.0).OR.(dabs(tau_now).GE.infinity)) then like = -infinity RETURN endif like = like - 0.5 * tau_now * (x(i) - mu_now) ** 2 like = like + 0.5 * dlog(0.5 * tau_now / PI) scratch = (x(i)-mu_now)*dsqrt(tau_now)*alph_now like = like + dlog(0.5D0*(1.0D0+derf(scratch / sqrttwo))) ! print *, scratch, x(i), mu_now, tau_now, alpha_now ! print *, end do RETURN END SUBROUTINE RSKEWNORM(x,nx,mu,tau,alph,nmu,ntau,nalph,rn,tnx) cf2py intent(hide) nmu, ntau, nalph, tnx cf2py intent(out) x cf2py threadsafe INTEGER i, nx, nalph, nmu, ntau, tnx DOUBLE PRECISION x(nx), mu(nmu), tau(ntau), alph(nalph) DOUBLE PRECISION U1,U2, mu_now, tau_now, alph_now, d_now DOUBLE PRECISION rn(tnx) LOGICAL vec_mu, vec_tau, vec_alph vec_mu = (nmu.GT.1) vec_tau = (ntau.GT.1) vec_alph = (nalph.GT.1) alph_now = alph(1) tau_now = tau(1) mu_now = mu(1) do i=1,nx if (vec_mu) then mu_now = mu(i) end if if (vec_alph) then alph_now = alph(i) end if if (vec_tau) then tau_now = tau(i) end if U1 = rn(2*i-1) U2 = rn(2*i) d_now = alph_now / dsqrt(1.0D0 + alph_now * alph_now) x(i)=(d_now*dabs(U1)+dsqrt(1.0D0-d_now**2)*U2) * /dsqrt(tau_now)+mu_now end do RETURN END subroutine uniform_like(x,lower,upper,n,nlower,nupper,like) c Return the uniform likelihood of x. c CREATED 12/06 DH cf2py double precision dimension(n), intent(in) :: x cf2py double precision dimension(nlower), intent(in) :: lower cf2py double precision dimension(nupper), intent(in) :: upper cf2py integer intent(hide), depend(x) :: n=len(x) cf2py integer intent(hide), depend(lower) :: nlower=len(lower) cf2py integer intent(hide), depend(upper) :: nupper=len(upper) cf2py double precision intent(out) :: like cf2py threadsafe IMPLICIT NONE INTEGER n, nlower, nupper, i DOUBLE PRECISION x(n), lower(nlower), upper(nupper) DOUBLE PRECISION like, low, high DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) low = lower(1) high = upper(1) like = 0.0 do i=1,n if (nlower .NE. 1) low = lower(i) if (nupper .NE. 1) high = upper(i) if ((x(i) < low) .OR. (x(i) > high)) then like = -infinity RETURN else like = like - dlog(high-low) endif enddo END subroutine uniform_like subroutine uniform_grad_x(x,lower,upper,n,nlower,nupper,gradxlike) c Return the uniform likelihood gradient wrt x. c CREATED 01/10 cf2py double precision dimension(n), intent(in) :: x cf2py double precision dimension(nlower), intent(in) :: lower cf2py double precision dimension(nupper), intent(in) :: upper cf2py integer intent(hide), depend(x) :: n=len(x) cf2py integer intent(hide), depend(lower) :: nlower=len(lower) cf2py integer intent(hide), depend(upper) :: nupper=len(upper) cf2py double precision dimension(n), intent(out) :: gradxlike cf2py threadsafe IMPLICIT NONE INTEGER n, nlower, nupper, i DOUBLE PRECISION x(n), lower(nlower), upper(nupper) double precision gradxlike(n) DOUBLE PRECISION like, low, high DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) END subroutine uniform_grad_x subroutine uniform_grad_l(x,lower,upper,n,nlower,nupper,gradllike) c Return the uniform likelihood gradient wrt lower. c CREATED 1/10 JS cf2py double precision dimension(n), intent(in) :: x cf2py double precision dimension(nlower), intent(in) :: lower cf2py double precision dimension(nupper), intent(in) :: upper cf2py integer intent(hide), depend(x) :: n=len(x) cf2py integer intent(hide), depend(lower) :: nlower=len(lower) cf2py integer intent(hide), depend(upper) :: nupper=len(upper) cf2py double precision dimension(nlower), intent(out) :: gradllike cf2py threadsafe IMPLICIT NONE INTEGER n, nlower, nupper, i DOUBLE PRECISION x(n), lower(nlower), upper(nupper) double precision gradllike(nlower) DOUBLE PRECISION gradlower, low, high DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) low = lower(1) high = upper(1) do i=1,n if (nlower .NE. 1) low = lower(i) if (nupper .NE. 1) high = upper(i) if ((x(i) < low) .OR. (x(i) > high)) then RETURN endif enddo do i=1,n if (nlower .NE. 1) low = lower(i) if (nupper .NE. 1) high = upper(i) gradlower = 1.0/(high - low) if (nlower .NE. 1) then gradllike(i) = gradlower else gradllike(1) = gradlower + gradllike(1) endif enddo END subroutine uniform_grad_l subroutine uniform_grad_u(x,lower,upper,n,nlower,nupper,gradulike) c Return the uniform likelihood gradient wrt lower. c CREATED 01/10 JS cf2py double precision dimension(n), intent(in) :: x cf2py double precision dimension(nlower), intent(in) :: lower cf2py double precision dimension(nupper), intent(in) :: upper cf2py integer intent(hide), depend(x) :: n=len(x) cf2py integer intent(hide), depend(lower) :: nlower=len(lower) cf2py integer intent(hide), depend(upper) :: nupper=len(upper) cf2py double precision dimension(nupper), intent(out) :: gradulike cf2py threadsafe IMPLICIT NONE INTEGER n, nlower, nupper, i DOUBLE PRECISION x(n), lower(nlower), upper(nupper) double precision gradulike(nupper) DOUBLE PRECISION gradupper, low, high DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) low = lower(1) high = upper(1) do i=1,n if (nlower .NE. 1) low = lower(i) if (nupper .NE. 1) high = upper(i) if ((x(i) < low) .OR. (x(i) > high)) then RETURN endif enddo do i=1,n if (nlower .NE. 1) low = lower(i) if (nupper .NE. 1) high = upper(i) gradupper = 1.0/(low - high) if (nlower .NE. 1) then gradulike(i) = gradupper else gradulike(1) = gradupper + gradulike(1) endif enddo END subroutine duniform_like(x,lower,upper,n,nlower,nupper,like) c Return the discrete uniform likelihood of x. c CREATED 12/06 DH cf2py intent(hide) n,nlower,nupper cf2py intent(out) like cf2py threadsafe IMPLICIT NONE INTEGER n, nlower, nupper, i INTEGER x(n), lower(nlower), upper(nupper) DOUBLE PRECISION like, low, high DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) low = lower(1) high = upper(1) like = 0.0 do i=1,n if (nlower .NE. 1) low = lower(i) if (nupper .NE. 1) high = upper(i) if ((x(i) < low) .OR. (x(i) > high)) then like = -infinity RETURN else like = like - dlog(high-low+1.0D0) endif enddo END subroutine duniform_like SUBROUTINE exponweib(x,a,c,loc,scale,n,na,nc,nloc,nscale,like) c Exponentiated log-likelihood function c pdf(z) = a*c*(1-exp(-z**c))**(a-1)*exp(-z**c)*z**(c-1) c Where z is standardized, ie z = (x-mu)/scale c CREATED 12/06 DH cf2py double precision dimension(n), intent(in) :: x cf2py double precision dimension(na), intent(in) :: a cf2py double precision dimension(nc), intent(in) :: c cf2py double precision dimension(nloc), intent(in) :: loc cf2py double precision dimension(nscale), intent(in) :: scale cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(a) :: na=len(a) cf2py integer intent(hide),depend(c) :: nc=len(c) cf2py integer intent(hide),depend(loc) :: nloc=len(loc) cf2py integer intent(hide),depend(scale) :: nscale=len(scale) cf2py double precision intent(out) :: like cf2py threadsafe DOUBLE PRECISION x(n), z(n), a(na) DOUBLE PRECISION c(nc), loc(nloc), scale(nscale) INTEGER i, n, na, nc, nloc, nscale DOUBLE PRECISION like, t1 LOGICAL not_scalar_a, not_scalar_c, not_scalar_scale DOUBLE PRECISION aa, cc, sigma, pdf DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) aa = a(1) cc = c(1) sigma = scale(1) not_scalar_a = (na .NE. 1) not_scalar_c = (nc .NE. 1) not_scalar_scale = (nscale .NE. 1) c Compute z CALL standardize(x, loc, scale, n, nloc, nscale, z) like = 0.0 do i=1,n if (not_scalar_a) aa = a(i) if (not_scalar_c) cc = c(i) if (not_scalar_scale) sigma = scale(i) ! Check c(i) > 0 if (cc .LE. 0.0) then like = -infinity RETURN endif ! Check a(i) > 0 if (aa .LE. 0.0) then like = -infinity RETURN endif ! Check z(i) > 0 if (z(i) .LE. 0.0) then like = -infinity RETURN endif t1 = dexp(-z(i)**cc) pdf = aa*cc*(1.0-t1)**(aa-1.0)*t1*z(i)**(cc-1.0) like = like + dlog(pdf/sigma) enddo END SUBROUTINE EXPONWEIB SUBROUTINE exponweib_gx(x,alpha,k,loc,scale,n,na,nk &,nloc,nscale,gradlike) c Exponentiated log-likelihood function c pdf(z) = a*c*(1-exp(-z**c))**(a-1)*exp(-z**c)*z**(c-1) c Where z is standardized, ie z = (x-mu)/scale c CREATED 12/06 DH cf2py double precision dimension(n), intent(in) :: x cf2py double precision dimension(na), intent(in) :: alpha cf2py double precision dimension(nk), intent(in) :: k cf2py double precision dimension(nloc), intent(in) :: loc cf2py double precision dimension(nscale), intent(in) :: scale cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(alpha) :: na=len(alpha) cf2py integer intent(hide),depend(k) :: nk=len(k) cf2py integer intent(hide),depend(loc) :: nloc=len(loc) cf2py integer intent(hide),depend(scale) :: nscale=len(scale) cf2py double precision dimension(n), intent(out) :: gradlike cf2py threadsafe DOUBLE PRECISION x(n), z(n), alpha(na), t1, t2 DOUBLE PRECISION k(nk), loc(nloc), scale(nscale) INTEGER i, n, na, nk, nloc, nscale DOUBLE PRECISION gradlike(n) LOGICAL not_scalar_a, not_scalar_k, not_scalar_scale DOUBLE PRECISION aa, cc, sigma, pdf DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) aa = alpha(1) cc = k(1) sigma = scale(1) not_scalar_a = (na .NE. 1) not_scalar_k = (nk .NE. 1) not_scalar_scale = (nscale .NE. 1) c Compute z CALL standardize(x, loc, scale, n, nloc, nscale, z) do i = 1,na if (alpha(i) .LE. 0.0) return enddo do i = 1,nk if (k(i) .LE. 0.0) return enddo do i = 1,n if (z(i) .LE. 0.0) return enddo do i=1,n if (not_scalar_a) aa = alpha(i) if (not_scalar_k) cc = k(i) if (not_scalar_scale) sigma = scale(i) t2 = -z(i)**cc t1 = dexp(t2) gradlike(i) = (aa - 1d0)/(1d0 - t1) * t1 * & z(i) **(cc -1d0) * cc / sigma gradlike(i) = gradlike(i) + (- z(i) **(cc -1d0) & * cc/sigma) - (cc -1d0)/(z(i) *sigma) enddo END SUBROUTINE SUBROUTINE exponweib_gl(x,alpha,k,loc,scale,n,na, &nk,nloc,nscale,gradlike) c Exponentiated log-likelihood function c pdf(z) = a*c*(1-exp(-z**c))**(a-1)*exp(-z**c)*z**(c-1) c Where z is standardized, ie z = (x-mu)/scale c CREATED 12/06 DH cf2py double precision dimension(n), intent(in) :: x cf2py double precision dimension(na), intent(in) :: alpha cf2py double precision dimension(nk), intent(in) :: k cf2py double precision dimension(nloc), intent(in) :: loc cf2py double precision dimension(nscale), intent(in) :: scale cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(alpha) :: na=len(alpha) cf2py integer intent(hide),depend(k) :: nk=len(k) cf2py integer intent(hide),depend(loc) :: nloc=len(loc) cf2py integer intent(hide),depend(scale) :: nscale=len(scale) cf2py double precision dimension(nloc), intent(out) :: gradlike cf2py threadsafe DOUBLE PRECISION x(n), z(n), alpha(na), t1, t2 DOUBLE PRECISION k(nk), loc(nloc), scale(nscale) INTEGER i, n, na, nk, nloc, nscale DOUBLE PRECISION gradlike(nloc), grad LOGICAL not_scalar_a, not_scalar_k, not_scalar_scale DOUBLE PRECISION aa, cc, sigma, pdf DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) aa = alpha(1) cc = k(1) sigma = scale(1) not_scalar_a = (na .NE. 1) not_scalar_k = (nk .NE. 1) not_scalar_scale = (nscale .NE. 1) c Compute z CALL standardize(x, loc, scale, n, nloc, nscale, z) do i = 1,na if (alpha(i) .LE. 0.0) return enddo do i = 1,nc if (k(i) .LE. 0.0) return enddo do i = 1,n if (z(i) .LE. 0.0) return enddo do i=1,n if (not_scalar_a) aa = alpha(i) if (not_scalar_k) cc = k(i) if (not_scalar_scale) sigma = scale(i) t2 = -z(i)**cc t1 = dexp(t2) grad = (aa - 1d0)/(1d0 - t1) * t1 * z(i) **(cc -1d0) & * cc / sigma grad = grad + (- z(i) **(cc -1d0) * cc/sigma) - & (cc -1d0)/(z(i) *sigma) grad = -grad if (nloc .NE. 1) then gradlike(i) = grad else gradlike(1) = gradlike(1) + grad endif enddo END SUBROUTINE SUBROUTINE exponweib_gk(x,alpha,k,loc,scale,n,na,nk, &nloc,nscale,gradlike) c Exponentiated log-likelihood function c pdf(z) = a*c*(1-exp(-z**c))**(a-1)*exp(-z**c)*z**(c-1) c Where z is standardized, ie z = (x-mu)/scale c CREATED 12/06 DH cf2py double precision dimension(n), intent(in) :: x cf2py double precision dimension(na), intent(in) :: alpha cf2py double precision dimension(nk), intent(in) :: k cf2py double precision dimension(nloc), intent(in) :: loc cf2py double precision dimension(nscale), intent(in) :: scale cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(alpha) :: na=len(alpha) cf2py integer intent(hide),depend(k) :: nk=len(k) cf2py integer intent(hide),depend(loc) :: nloc=len(loc) cf2py integer intent(hide),depend(scale) :: nscale=len(scale) cf2py double precision dimension(nk), intent(out) :: gradlike cf2py threadsafe DOUBLE PRECISION x(n), z(n), alpha(na), t1, t2 DOUBLE PRECISION k(nk), loc(nloc), scale(nscale) INTEGER i, n, na, nk, nloc, nscale DOUBLE PRECISION gradlike(nk), grad LOGICAL not_scalar_a, not_scalar_k, not_scalar_scale DOUBLE PRECISION aa, cc, sigma, pdf DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) aa = alpha(1) cc = k(1) sigma = scale(1) not_scalar_a = (na .NE. 1) not_scalar_k = (nk .NE. 1) not_scalar_scale = (nscale .NE. 1) c Compute z CALL standardize(x, loc, scale, n, nloc, nscale, z) do i = 1,na if (alpha(i) .LE. 0.0) return enddo do i = 1,nk if (k(i) .LE. 0.0) return enddo do i = 1,n if (z(i) .LE. 0.0) return enddo do i=1,n if (not_scalar_a) aa = alpha(i) if (not_scalar_k) cc = k(i) if (not_scalar_scale) sigma = scale(i) t2 = -z(i)**cc t1 = dexp(t2) grad = 1d0/cc + (aa - 1d0)/(1d0 - t1) * (-t1) * (-t2) grad = grad + t2 +1d0 grad = grad * dlog(z(i)) if (not_scalar_k) then gradlike(i) = grad else gradlike(1) = gradlike(1) + grad endif enddo END SUBROUTINE SUBROUTINE exponweib_ga(x,alpha,k,loc,scale,n,na, &nk,nloc,nscale,gradlike) c Exponentiated log-likelihood function c pdf(z) = a*c*(1-exp(-z**c))**(a-1)*exp(-z**c)*z**(c-1) c Where z is standardized, ie z = (x-mu)/scale c CREATED 12/06 DH cf2py double precision dimension(n), intent(in) :: x cf2py double precision dimension(na), intent(in) :: alpha cf2py double precision dimension(nk), intent(in) :: k cf2py double precision dimension(nloc), intent(in) :: loc cf2py double precision dimension(nscale), intent(in) :: scale cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(alpha) :: na=len(alpha) cf2py integer intent(hide),depend(k) :: nc=len(k) cf2py integer intent(hide),depend(loc) :: nloc=len(loc) cf2py integer intent(hide),depend(scale) :: nscale=len(scale) cf2py double precision dimension(na), intent(out) :: gradlike cf2py threadsafe DOUBLE PRECISION x(n), z(n), alpha(na), t1, t2 DOUBLE PRECISION k(nk), loc(nloc), scale(nscale) INTEGER i, n, na, nk, nloc, nscale DOUBLE PRECISION gradlike(na), grad LOGICAL not_scalar_a, not_scalar_k, not_scalar_scale DOUBLE PRECISION aa, cc, sigma, pdf DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) aa = alpha(1) cc = k(1) sigma = scale(1) not_scalar_a = (na .NE. 1) not_scalar_k = (nk .NE. 1) not_scalar_scale = (nscale .NE. 1) c Compute z CALL standardize(x, loc, scale, n, nloc, nscale, z) do i = 1,na if (alpha(i) .LE. 0.0) return enddo do i = 1,nk if (k(i) .LE. 0.0) return enddo do i = 1,n if (z(i) .LE. 0.0) return enddo do i=1,n if (not_scalar_a) aa = alpha(i) if (not_scalar_k) cc = k(i) if (not_scalar_scale) sigma = scale(i) t2 = -z(i)**cc t1 = dexp(t2) grad = 1d0/aa + dlog(1d0 - t1) if (not_scalar_a) then gradlike(i) = grad else gradlike(1) = gradlike(1) + grad endif enddo END SUBROUTINE SUBROUTINE exponweib_gs(x,alpha,k,loc,scale,n,na, &nk,nloc,nscale,gradlike) c Exponentiated log-likelihood function c pdf(z) = a*c*(1-exp(-z**c))**(a-1)*exp(-z**c)*z**(c-1) c Where z is standardized, ie z = (x-mu)/scale c CREATED 12/06 DH cf2py double precision dimension(n), intent(in) :: x cf2py double precision dimension(na), intent(in) :: alpha cf2py double precision dimension(nk), intent(in) :: k cf2py double precision dimension(nloc), intent(in) :: loc cf2py double precision dimension(nscale), intent(in) :: scale cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(alpha) :: na=len(alpha) cf2py integer intent(hide),depend(k) :: nk=len(k) cf2py integer intent(hide),depend(loc) :: nloc=len(loc) cf2py integer intent(hide),depend(scale) :: nscale=len(scale) cf2py double precision dimension(nscale), intent(out) :: gradlike cf2py threadsafe DOUBLE PRECISION x(n), z(n), alpha(na), t1, t2 DOUBLE PRECISION k(nk), loc(nloc), scale(nscale) INTEGER i, n, na, nk, nloc, nscale DOUBLE PRECISION gradlike(nscale), grad LOGICAL not_scalar_a, not_scalar_k, not_scalar_scale DOUBLE PRECISION aa, cc, sigma, pdf DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) aa = alpha(1) cc = k(1) sigma = scale(1) not_scalar_a = (na .NE. 1) not_scalar_k = (nk .NE. 1) not_scalar_scale = (nscale .NE. 1) c Compute z CALL standardize(x, loc, scale, n, nloc, nscale, z) do i = 1,na if (alpha(i) .LE. 0.0) return enddo do i = 1,nc if (k(i) .LE. 0.0) return enddo do i = 1,n if (z(i) .LE. 0.0) return enddo do i=1,n if (not_scalar_a) aa = alpha(i) if (not_scalar_k) cc = k(i) if (not_scalar_scale) sigma = scale(i) t2 = -z(i)**cc t1 = dexp(t2) grad = -1d0/sigma + (aa -1d0)/(1-t1) * & t1 * z(i) **(cc - 1d0) *cc grad = grad + z(i) **(cc - 1d0) *cc & + (cc - 1d0)/z(i) grad = grad * (-z(i)/sigma) if (not_scalar_a) then gradlike(i) = grad else gradlike(1) = gradlike(1) + grad endif enddo END SUBROUTINE SUBROUTINE exponweib_ppf(q,a,c,n,na,nc,ppf) c Compute the percentile point function for the c Exponentiated Weibull distribution. c Accept parameters a,c of length 1 or n. c CREATED 12/06 DH. cf2py double precision dimension(n), intent(in) :: q cf2py double precision dimension(na), intent(in) :: a cf2py double precision dimension(nc), intent(in) :: c cf2py integer intent(hide),depend(q) :: n=len(q) cf2py integer intent(hide),depend(a) :: na=len(a) cf2py integer intent(hide),depend(c) :: nc=len(c) cf2py double precision dimension(n), intent(out) :: ppf cf2py threadsafe IMPLICIT NONE INTEGER n,na,nc,i DOUBLE PRECISION q(n), a(na), c(nc), ppf(n),ta,tc LOGICAL not_scalar_a, not_scalar_c DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) c Check length of input arrays. not_scalar_a = (na .NE. 1) not_scalar_c = (nc .NE. 1) if ((not_scalar_a) .AND. (na .NE. n)) return if ((not_scalar_c) .AND. (nc .NE. n)) return ta = a(1) tc = c(1) DO i=1,n if (not_scalar_a) ta = a(i) if (not_scalar_c) tc = c(i) ppf(i) = (-dlog(1.0 - q(i)**(1.0/ta)))**(1.0/tc) ENDDO END SUBROUTINE exponweib_ppf SUBROUTINE constrain(pass, x, a, b, allow_equal, n, na, nb) c Check that x is in [a, b] if allow_equal, or c that x is in ]a, b[ if not. cf2py integer, intent(out) :: pass cf2py double precision dimension(n), intent(in) :: x cf2py double precision dimension(na), intent(in) :: a cf2py double precision dimension(nb), intent(in) :: b cf2py integer intent(hide), depend(x) :: n = len(x) cf2py integer intent(hide), depend(a) :: na = len(a) cf2py integer intent(hide), depend(b) :: nb = len(b) cf2py logical intent(in) :: allow_equal cf2py threadsafe IMPLICIT NONE INTEGER n, na, nb, i, pass DOUBLE PRECISION x(n), a(na), b(nb), ta, tb LOGICAL allow_equal, not_scalar_a, not_scalar_b pass = 1 ta = a(1) tb = b(1) not_scalar_a = (na .NE. 1) not_scalar_b = (nb .NE. 1) if (allow_equal) then do i=1,n if (not_scalar_a) ta = a(i) if (not_scalar_b) tb = b(i) if ((x(i) .LT. ta) .OR. (x(i) .GT. tb)) then pass = 0 RETURN endif enddo else do i=1,n if (not_scalar_a) ta = a(i) if (not_scalar_b) tb = b(i) if ((x(i) <= ta) .OR. (x(i) >= tb)) then pass = 0 RETURN endif enddo endif END SUBROUTINE poisson(x,mu,n,nmu,like) c Poisson log-likelihood function c UPDATED 1/16/07 AP cf2py integer dimension(n),intent(in) :: x cf2py double precision dimension(nmu),intent(in) :: mu cf2py double precision intent(out) :: like cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(mu) :: nmu=len(mu) cf2py threadsafe IMPLICIT NONE INTEGER n, i, nmu INTEGER x(n) DOUBLE PRECISION mu(nmu), like DOUBLE PRECISION sumx, mut, infinity, sumfact DOUBLE PRECISION factln PARAMETER (infinity = 1.7976931348623157d308) mut = mu(1) c CALL constrain(x,0,INFINITY,allow_equal=1) c CALL constrain(mu,0,INFINITY,allow_equal=0) sumx = 0.0 sumfact = 0.0 do i=1,n if (nmu .NE. 1) then mut = mu(i) endif if (mut .LT. 0.0) then like = -infinity RETURN endif if (x(i) .LT. 0.0) then like = -infinity RETURN endif if (.NOT.((x(i) .EQ. 0.0) .AND. (mut .EQ. 0.0))) then sumx = sumx + x(i)*dlog(mut) - mut sumfact = sumfact + factln(x(i)) endif enddo like = sumx - sumfact return END SUBROUTINE poisson_gmu(x,mu,n,nmu,gradlike) c Poisson log-likelihood function c UPDATED 1/16/07 AP cf2py integer dimension(n),intent(in) :: x cf2py double precision dimension(nmu),intent(in) :: mu cf2py double precision intent(out) :: gradlike cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(mu) :: nmu=len(mu) cf2py threadsafe IMPLICIT NONE INTEGER n, i, nmu INTEGER x(n) DOUBLE PRECISION mu(nmu), gradlike(nmu), grad DOUBLE PRECISION sumx, mut, infinity, sumfact DOUBLE PRECISION factln PARAMETER (infinity = 1.7976931348623157d308) mut = mu(1) c CALL constrain(x,0,INFINITY,allow_equal=1) c CALL constrain(mu,0,INFINITY,allow_equal=0) do i = 1,nmu if (mu(i) .LT. 0.0) return enddo do i = 1,n if (x(i) .LT. 0.0) return enddo do i=1,n if (nmu .NE. 1) then mut = mu(i) endif grad = x(i) / mut -1d0 if (nmu .NE. 1) then gradlike(i) = grad else gradlike(1) = gradlike(1) + grad endif enddo return END SUBROUTINE trpoisson(x,mu,k,n,nmu,nk,like) c Truncated poisson log-likelihood function c UPDATED 1/16/07 AP cf2py integer dimension(n),intent(in) :: x cf2py double precision dimension(nmu),intent(in) :: mu cf2py integer dimension(nk),intent(in) :: k cf2py double precision intent(out) :: like cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(mu) :: nmu=len(mu) cf2py integer intent(hide),depend(k) :: nk=len(k) cf2py threadsafe IMPLICIT NONE INTEGER n, i, nmu, nk, kt INTEGER x(n), k(nk) DOUBLE PRECISION mu(nmu), like, cdf DOUBLE PRECISION sumx, mut, infinity, sumfact, sumcdf DOUBLE PRECISION factln, gammq PARAMETER (infinity = 1.7976931348623157d308) mut = mu(1) kt = k(1) sumx = 0.0 sumfact = 0.0 sumcdf = 0.0 do i=1,n if (nmu .NE. 1) then mut = mu(i) endif if (nk .NE. 1) then kt = k(i) endif C if (mut .LT. kt) then C like = -infinity C RETURN C endif if (kt .LT. 0.0) then like = -infinity RETURN endif if (x(i) .LT. kt) then like = -infinity RETURN endif if (.NOT.((x(i) .EQ. kt) .AND. (mut .EQ. kt))) then sumx = sumx + x(i)*dlog(mut) - mut sumfact = sumfact + factln(x(i)) cdf = gammq(dble(kt), mut) sumcdf = sumcdf + dlog(1.-cdf) endif enddo like = sumx - sumfact - sumcdf return END SUBROUTINE trpoisson_gmu(x,mu,k,n,nmu,nk,gradlike) c Truncated poisson log-likelihood function c UPDATED 1/16/07 AP cf2py integer dimension(n),intent(in) :: x cf2py double precision dimension(nmu),intent(in) :: mu cf2py integer dimension(nk),intent(in) :: k cf2py double precision dimension(nmu),intent(out) :: gradlike cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(mu) :: nmu=len(mu) cf2py integer intent(hide),depend(k) :: nk=len(k) cf2py threadsafe IMPLICIT NONE INTEGER n, i, nmu, nk, kt INTEGER x(n), k(nk) DOUBLE PRECISION mu(nmu), gradlike(nmu),grad, cdf DOUBLE PRECISION sumx, mut, infinity, sumfact, sumcdf DOUBLE PRECISION factln, gammq PARAMETER (infinity = 1.7976931348623157d308) mut = mu(1) kt = k(1) do i = 1, nk if (kt .LT. 0.0) return enddo do i = 1,n if (nmu .NE. 1) then mut = mu(i) endif if (nk .NE. 1) then kt = k(i) endif if (x(i) .LT. kt) return if (mut .LT. kt) return enddo mut = mu(1) kt = k(1) do i=1,n if (nmu .NE. 1) then mut = mu(i) endif if (nk .NE. 1) then kt = k(i) endif grad = x(i) / mut -1d0 if (nmu .NE. 1) then gradlike(i) = grad else gradlike(1) = gradlike(1) + grad endif enddo return END SUBROUTINE t(x,nu,n,nnu,like) c Student's t log-likelihood function cf2py double precision dimension(n),intent(in) :: x cf2py double precision dimension(nnu),intent(in) :: nu cf2py double precision intent(out) :: like cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(nu) :: nnu=len(nu) cf2py threadsafe IMPLICIT NONE INTEGER n, i, nnu DOUBLE PRECISION x(n) DOUBLE PRECISION nu(nnu), like, infinity, nut PARAMETER (infinity = 1.7976931348623157d308) DOUBLE PRECISION gammln DOUBLE PRECISION PI PARAMETER (PI=3.141592653589793238462643d0) nut = nu(1) like = 0.0 do i=1,n if (nnu .GT. 1) then nut = nu(i) endif if (nut .LE. 0.0) then like = -infinity RETURN endif like = like + gammln((nut+1.0)/2.0) like = like - 0.5*dlog(nut * PI) - gammln(nut/2.0) like = like - (nut+1)/2 * dlog(1 + (x(i)**2)/nut) enddo return END SUBROUTINE t_grad_x(x,nu,n,nnu,gradlikex) c Student's t log-likelihood function cf2py double precision dimension(n),intent(in) :: x cf2py double precision dimension(nnu),intent(in) :: nu cf2py double precision dimension(n),intent(out) :: gradlikex cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(nu) :: nnu=len(nu) cf2py threadsafe IMPLICIT NONE INTEGER n, i, nnu DOUBLE PRECISION x(n), nu(nnu), gradlikex(n),gradx, infinity, nut PARAMETER (infinity = 1.7976931348623157d308) DOUBLE PRECISION gammln DOUBLE PRECISION PI PARAMETER (PI=3.141592653589793238462643d0) nut = nu(1) do i =1,nnu if (nu(i) .LE. 0.0) then RETURN endif enddo gradx = 0.0 do i=1,n if (nnu .GT. 1) then nut = nu(i) endif gradx = - (nut + 1) * x(i) / ( nut + x(i)**2) if (nnu .GT. 1) then gradlikex(i) = gradx else gradlikex(1) = gradlikex(1) + gradx endif enddo return END SUBROUTINE t_grad_nu(x,nu,n,nnu,gradlikenu) c Student's t log-likelihood function cf2py double precision dimension(n),intent(in) :: x cf2py double precision dimension(nnu),intent(in) :: nu cf2py double precision dimension(nnu),intent(out) :: gradlikenu cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(nu) :: nnu=len(nu) cf2py threadsafe IMPLICIT NONE INTEGER n, i, nnu double precision x(n) DOUBLE PRECISION nu(nnu), gradlikenu(nnu),gradnu, infinity, nut PARAMETER (infinity = 1.7976931348623157d308) DOUBLE PRECISION psi DOUBLE PRECISION PI PARAMETER (PI=3.141592653589793238462643d0) nut = nu(1) do i =1,nnu if (nu(i) .LE. 0.0) then RETURN endif enddo gradnu = 0.0 do i=1,n if (nnu .GT. 1) then nut = nu(i) endif gradnu = psi((nut + 1d0)/2d0) * .5 - .5/nut - psi(nut/2d0) *.5 gradnu = gradnu - .5 * dlog(1 + x(i)**2/nut) gradnu = gradnu + ((nut + 1)/2) * x(i)**2/(nut**2+x(i)**2*nut) if (nnu .GT. 1) then gradlikenu(i) = gradnu else gradlikenu(1) = gradlikenu(1) + gradnu endif enddo return END SUBROUTINE chi2_grad_nu(x,nu,n,nnu,gradlikenu) cf2py double precision dimension(n),intent(in) :: x cf2py double precision dimension(nnu),intent(in) :: nu cf2py double precision dimension(nnu),intent(out) :: gradlikenu cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(nu) :: nnu=len(nu) cf2py threadsafe IMPLICIT NONE INTEGER n, i, nnu double precision x(n) DOUBLE PRECISION nu(nnu), gradlikenu(nnu),gradnu, infinity, nut PARAMETER (infinity = 1.7976931348623157d308) DOUBLE PRECISION psi DOUBLE PRECISION PI, C PARAMETER (PI=3.141592653589793238462643d0) PARAMETER (C = -0.34657359027997264d0) nut = nu(1) do i =1,nnu if (nu(i) .LE. 0.0) then RETURN endif enddo gradnu = 0.0 do i=1,n if (nnu .GT. 1) then nut = nu(i) endif gradnu = C - psi(nut /2d0) + dlog(x(i))/2d0 if (nnu .GT. 1) then gradlikenu(i) = gradnu else gradlikenu(1) = gradlikenu(1) + gradnu endif enddo return END SUBROUTINE nct(x,mu,lam,nu,n,nmu,nlam,nnu,like) c Non-central Student's t log-likelihood function cf2py double precision dimension(n),intent(in) :: x cf2py double precision dimension(nmu),intent(in) :: mu cf2py double precision dimension(nlam),intent(in) :: lam cf2py double precision dimension(nnu),intent(in) :: nu cf2py double precision intent(out) :: like cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(mu) :: nmu=len(mu) cf2py integer intent(hide),depend(lam) :: nlam=len(lam) cf2py integer intent(hide),depend(nu) :: nnu=len(nu) cf2py threadsafe IMPLICIT NONE INTEGER n, i, nnu, nmu, nlam DOUBLE PRECISION x(n) DOUBLE PRECISION nu(nnu), mu(nmu), lam(nlam), like, infinity DOUBLE PRECISION mut, lamt, nut PARAMETER (infinity = 1.7976931348623157d308) DOUBLE PRECISION gammln DOUBLE PRECISION PI PARAMETER (PI=3.141592653589793238462643d0) nut = nu(1) mut = mu(1) lamt = lam(1) like = 0.0 do i=1,n if (nmu .GT. 1) then mut = mu(i) endif if (nlam .GT. 1) then lamt = lam(i) endif if (nnu .GT. 1) then nut = nu(i) endif if (nut .LE. 0.0) then like = -infinity RETURN endif if (lamt .LE. 0.0) then like = -infinity RETURN endif like = like + gammln((nut+1.0)/2.0) like = like - gammln(nut/2.0) like = like + 0.5*dlog(lamt) - 0.5*dlog(nut * PI) like = like - (nut+1)/2 * dlog(1 + (lamt*(x(i) - mut)**2)/nut) enddo return END SUBROUTINE multinomial(x,n,p,nx,nn,np,k,like) c Multinomial log-likelihood function c Updated 12/02/2007 DH. N-D still buggy. c Fixed 22/11/2007 CF cf2py integer intent(hide),depend(x) :: nx=shape(x,0) cf2py integer intent(hide),depend(n) :: nn=shape(n,0) cf2py integer intent(hide),depend(p) :: np=shape(p,0) cf2py integer intent(hide),depend(x,p),check(k==shape(p,1)) :: k=shape(x,1) cf2py intent(out) like cf2py threadsafe DOUBLE PRECISION like, factln, infinity, sump DOUBLE PRECISION p(np,k), p_tmp(k) INTEGER i,j,n(nn),n_tmp,sumx INTEGER x(nx,k) PARAMETER (infinity = 1.7976931348623157d308) like = 0.0 n_tmp = n(1) do i=1,k p_tmp(i) = p(1,i) enddo do j=1,nx if (np .NE. 1) then do i=1,k p_tmp(i) = p(j,i) enddo endif if (nn .NE. 1) n_tmp = n(j) ! protect against negative n if (n_tmp .LT. 0) then like=-infinity RETURN endif sump = 0.0 sumx = 0 do i=1,k ! protect against negative x or negative p if ((x(j,i) .LT. 0) .OR. (p_tmp(i).LT.0.0D0)) then like = -infinity RETURN endif ! protect against zero p AND nonzero x if (p_tmp(i) .EQ. 0.0D0) then if (x(j,i) .GT. 0.0D0) then like=-infinity return end if else like = like + x(j,i)*dlog(p_tmp(i)) end if like = like - factln(x(j,i)) sump = sump + p_tmp(i) sumx = sumx + x(j,i) enddo c This is to account for the kth term that is not passed! c The kth term does get passed... we can check for consistency. c But roundoff error ofter triggers a false alarm. if (sumx .NE. n_tmp) then like=-infinity return endif if ((sump .GT. 1.000001) .OR. (sump .LT. 0.999999)) then like=-infinity return endif ! xk = n_tmp - sumx ! pk = 1.0 - sump ! print *,sump, pk, sumx, n_tmp, xk ! if ((xk .LT. 0) .OR. (pk .LT. 0)) then ! like = -infinity ! RETURN ! endif ! like = like + (xk) * dlog(pk) ! like = like - factln(xk) like = like + factln(n_tmp) enddo RETURN END SUBROUTINE weibull(x,alpha,beta,n,nalpha,nbeta,like) c Weibull log-likelihood function c UPDATED 1/16/07 AP cf2py double precision dimension(n),intent(in) :: x cf2py double precision dimension(nalpha),intent(in) :: alpha cf2py double precision dimension(nbeta),intent(in) :: beta cf2py double precision intent(out) :: like cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(alpha) :: nalpha=len(alpha) cf2py integer intent(hide),depend(beta) :: nbeta=len(beta) cf2py threadsafe DOUBLE PRECISION x(n),alpha(nalpha),beta(nbeta) DOUBLE PRECISION like, alphat, betat INTEGER n,nalpha,nbeta,i DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) alphat = alpha(1) betat = beta(1) like = 0.0 do i=1,n if (nalpha .NE. 1) alphat = alpha(i) if (nbeta .NE. 1) betat = beta(i) if ((alphat .LE. 0.0) .OR. (betat .LE. 0.0)) then like=-infinity RETURN endif if (x(i) .LE. 0.0) then like=-infinity RETURN endif c normalizing constant like = like + (dlog(alphat) - alphat*dlog(betat)) c kernel of distribution like = like + (alphat-1) * dlog(x(i)) like = like - (x(i)/betat)**alphat enddo return END SUBROUTINE weibull_gx(x,alpha,beta,n,nalpha,nbeta,gradlike) c Weibull log-likelihood function c UPDATED 1/16/07 AP cf2py double precision dimension(n),intent(in) :: x cf2py double precision dimension(nalpha),intent(in) :: alpha cf2py double precision dimension(nbeta),intent(in) :: beta cf2py double precision dimension(n), intent(out) :: gradlike cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(alpha) :: nalpha=len(alpha) cf2py integer intent(hide),depend(beta) :: nbeta=len(beta) cf2py threadsafe DOUBLE PRECISION x(n),alpha(nalpha),beta(nbeta) DOUBLE PRECISION gradlike(n), alphat, betat INTEGER n,nalpha,nbeta,i DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) alphat = alpha(1) betat = beta(1) do i=1,nalpha if (alpha(i) .LE. 0.0) return enddo do i=1,nbeta if (beta(i) .LE. 0.0) return enddo do i=1,n if (x(i) .LE. 0.0) return enddo do i=1,n if (nalpha .NE. 1) alphat = alpha(i) if (nbeta .NE. 1) betat = beta(i) gradlike(i) =(alphat-1d0)/x(i) +-alphat*betat**(-alphat)*x(i)**(alphat-1d0) enddo return END SUBROUTINE weibull_ga(x,alpha,beta,n,nalpha,nbeta,gradlike) c Weibull log-likelihood function c UPDATED 1/16/07 AP cf2py double precision dimension(n),intent(in) :: x cf2py double precision dimension(nalpha),intent(in) :: alpha cf2py double precision dimension(nbeta),intent(in) :: beta cf2py double precision dimension(nalpha), intent(out) :: gradlike cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(alpha) :: nalpha=len(alpha) cf2py integer intent(hide),depend(beta) :: nbeta=len(beta) cf2py threadsafe DOUBLE PRECISION x(n),alpha(nalpha),beta(nbeta) DOUBLE PRECISION gradlike(nalpha), alphat, betat, glike INTEGER n,nalpha,nbeta,i DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) alphat = alpha(1) betat = beta(1) do i=1,nalpha if (alpha(i) .LE. 0.0) return enddo do i=1,nbeta if (beta(i) .LE. 0.0) return enddo do i=1,n if (x(i) .LE. 0.0) return enddo do i=1,n if (nalpha .NE. 1) alphat = alpha(i) if (nbeta .NE. 1) betat = beta(i) glike = 1d0/alphat+dlog(x(i))-dlog(betat) +-(x(i)/betat)**alphat*dlog(x(i)/betat) if (nalpha .NE. 1) then gradlike(i) = glike else gradlike(1) = glike + gradlike(1) endif enddo return END SUBROUTINE weibull_gb(x,alpha,beta,n,nalpha,nbeta,gradlike) c Weibull log-likelihood function c UPDATED 1/16/07 AP cf2py double precision dimension(n),intent(in) :: x cf2py double precision dimension(nalpha),intent(in) :: alpha cf2py double precision dimension(nbeta),intent(in) :: beta cf2py double precision dimension(nbeta), intent(out) :: gradlike cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(alpha) :: nalpha=len(alpha) cf2py integer intent(hide),depend(beta) :: nbeta=len(beta) cf2py threadsafe DOUBLE PRECISION x(n),alpha(nalpha),beta(nbeta) DOUBLE PRECISION gradlike(nbeta), alphat, betat, glike INTEGER n,nalpha,nbeta,i DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) alphat = alpha(1) betat = beta(1) do i=1,nalpha if (alpha(i) .LE. 0.0) return enddo do i=1,nbeta if (beta(i) .LE. 0.0) return enddo do i=1,n if (x(i) .LE. 0.0) return enddo do i=1,n if (nalpha .NE. 1) alphat = alpha(i) if (nbeta .NE. 1) betat = beta(i) glike = -1d0/betat-(alphat-1d0)/betat+x(i)**alphat +*alphat*betat**(-alphat-1d0) if (nalpha .NE. 1) then gradlike(i) = glike else gradlike(1) = glike + gradlike(1) endif enddo return END SUBROUTINE logistic(x, mu, tau, n, nmu, ntau, like) c Logistic log-likelihood function cf2py double precision dimension(n),intent(in) :: x cf2py double precision dimension(nmu),intent(in) :: mu cf2py double precision dimension(ntau),intent(in) :: tau cf2py double precision intent(out) :: like cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(mu,n),check(nmu==1||nmu==n) :: nmu=len(mu) cf2py integer intent(hide),depend(tau,n),check(ntau==1||ntau==n) :: ntau=len(tau) cf2py threadsafe IMPLICIT NONE INTEGER n,i,ntau,nmu DOUBLE PRECISION like DOUBLE PRECISION x(n),mu(nmu),tau(ntau) DOUBLE PRECISION mu_tmp, tau_tmp LOGICAL not_scalar_mu, not_scalar_tau DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) not_scalar_mu = (nmu .NE. 1) not_scalar_tau = (ntau .NE. 1) mu_tmp = mu(1) tau_tmp = tau(1) like = 0.0 do i=1,n if (not_scalar_mu) mu_tmp=mu(i) if (not_scalar_tau) tau_tmp=tau(i) if (tau_tmp .LE. 0.0) then like = -infinity RETURN endif like = like + dlog(tau_tmp) - tau_tmp * (x(i)-mu_tmp) like = like - 2.0*dlog(1.0 + dexp(-tau_tmp * (x(i)-mu_tmp))) enddo return END SUBROUTINE normal(x,mu,tau,n,nmu, ntau, like) c Normal log-likelihood function c Updated 26/01/2007 DH. cf2py double precision dimension(n),intent(in) :: x cf2py double precision dimension(nmu),intent(in) :: mu cf2py double precision dimension(ntau),intent(in) :: tau cf2py double precision intent(out) :: like cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(mu,n),check(nmu==1||nmu==n) :: nmu=len(mu) cf2py integer intent(hide),depend(tau,n),check(ntau==1||ntau==n) :: ntau=len(tau) cf2py threadsafe IMPLICIT NONE INTEGER n,i,ntau,nmu DOUBLE PRECISION like DOUBLE PRECISION x(n),mu(nmu),tau(ntau) DOUBLE PRECISION mu_tmp, tau_tmp LOGICAL not_scalar_mu, not_scalar_tau DOUBLE PRECISION PI PARAMETER (PI=3.141592653589793238462643d0) DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) not_scalar_mu = (nmu .NE. 1) not_scalar_tau = (ntau .NE. 1) mu_tmp = mu(1) tau_tmp = tau(1) like = 0.0 do i=1,n if (not_scalar_mu) mu_tmp=mu(i) if (not_scalar_tau) tau_tmp=tau(i) if ((tau_tmp .LE. 0.0).OR.(dabs(tau_tmp).GE.infinity)) then like = -infinity RETURN endif like = like - 0.5 * tau_tmp * (x(i)-mu_tmp)**2 like = like + 0.5*dlog(0.5*tau_tmp/PI) enddo return END SUBROUTINE normal_grad_tau(x,mu,tau,n,nmu, ntau, grad_tau_like) c Normal log-likelihood function c Updated 26/01/2007 DH. cf2py double precision dimension(n),intent(in) :: x cf2py double precision dimension(nmu),intent(in) :: mu cf2py double precision dimension(ntau),intent(in) :: tau cf2py double precision dimension(ntau), intent(out) :: grad_tau_like cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(mu,n),check(nmu==1||nmu==n) :: nmu=len(mu) cf2py integer intent(hide),depend(tau,n),check(ntau==1||ntau==n) :: ntau=len(tau) cf2py threadsafe IMPLICIT NONE INTEGER n,i,ntau,nmu DOUBLE PRECISION grad_tau_like(ntau) DOUBLE PRECISION x(n),mu(nmu),tau(ntau) DOUBLE PRECISION mu_tmp, tau_tmp,grad_tau LOGICAL not_scalar_mu, not_scalar_tau DOUBLE PRECISION PI PARAMETER (PI=3.141592653589793238462643d0) DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) not_scalar_mu = (nmu .NE. 1) not_scalar_tau = (ntau .NE. 1) mu_tmp = mu(1) tau_tmp = tau(1) do i = 1, ntau if (tau(i) .LE. 0.0) then RETURN endif enddo do i=1,n if (not_scalar_mu) mu_tmp=mu(i) if (not_scalar_tau) tau_tmp=tau(i) grad_tau = 1.0 / (2 * tau_tmp) - .5 * (x(i) - mu_tmp)**2 if (not_scalar_tau) then grad_tau_like(i) = grad_tau else grad_tau_like(1) = grad_tau + grad_tau_like(1) endif enddo return END SUBROUTINE normal_grad_x(x,mu,tau,n,nmu, ntau, grad_x_like) c Normal log-likelihood function c Updated 26/01/2007 DH. cf2py double precision dimension(n),intent(in) :: x cf2py double precision dimension(nmu),intent(in) :: mu cf2py double precision dimension(ntau),intent(in) :: tau cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(mu,n),check(nmu==1||nmu==n) :: nmu=len(mu) cf2py integer intent(hide),depend(tau,n),check(ntau==1||ntau==n) :: ntau=len(tau) cf2py double precision dimension(n), intent(out) :: grad_x_like cf2py threadsafe IMPLICIT NONE INTEGER n,i,ntau,nmu DOUBLE PRECISION grad_x_like(n) DOUBLE PRECISION x(n),mu(nmu),tau(ntau) DOUBLE PRECISION mu_tmp, tau_tmp LOGICAL not_scalar_mu, not_scalar_tau DOUBLE PRECISION PI PARAMETER (PI=3.141592653589793238462643d0) DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) not_scalar_mu = (nmu .NE. 1) not_scalar_tau = (ntau .NE. 1) mu_tmp = mu(1) tau_tmp = tau(1) do i = 1, ntau if (tau(i) .LE. 0.0) then RETURN endif enddo do i=1,n if (not_scalar_mu) mu_tmp=mu(i) if (not_scalar_tau) tau_tmp=tau(i) grad_x_like(i) = -(x(i) - mu_tmp) * tau_tmp enddo return END SUBROUTINE normal_grad_mu(x,mu,tau,n,nmu,ntau,gradmulike) c Normal log-likelihood function c Updated 26/01/2007 DH. cf2py double precision dimension(n),intent(in) :: x cf2py double precision dimension(nmu),intent(in) :: mu cf2py double precision dimension(ntau),intent(in) :: tau cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(mu,n),check(nmu==1||nmu==n) :: nmu=len(mu) cf2py integer intent(hide),depend(tau,n),check(ntau==1||ntau==n) :: ntau=len(tau) cf2py double precision dimension(nmu), intent(out) :: gradmulike cf2py threadsafe IMPLICIT NONE INTEGER n,i,ntau,nmu DOUBLE PRECISION gradmulike(nmu) DOUBLE PRECISION x(n),mu(nmu),tau(ntau) DOUBLE PRECISION mu_tmp, tau_tmp,grad_mu LOGICAL not_scalar_mu, not_scalar_tau DOUBLE PRECISION PI PARAMETER (PI=3.141592653589793238462643d0) DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) not_scalar_mu = (nmu .NE. 1) not_scalar_tau = (ntau .NE. 1) mu_tmp = mu(1) tau_tmp = tau(1) do i = 1, ntau if (tau(i) .LE. 0.0) return enddo do i=1,n if (not_scalar_mu) mu_tmp=mu(i) if (not_scalar_tau) tau_tmp=tau(i) grad_mu = (x(i) - mu_tmp) * tau_tmp if (not_scalar_mu) then gradmulike(i) = grad_mu else gradmulike(1) = grad_mu + gradmulike(1) endif enddo return END SUBROUTINE hnormal(x,tau,n,ntau,like) c Half-normal log-likelihood function c Updated 24/01/2007 DH. cf2py double precision dimension(n),intent(in) :: x cf2py double precision dimension(ntau),intent(in) :: tau cf2py double precision intent(out) :: like cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(tau,n),check(ntau==1 || ntau==n) :: ntau=len(tau) cf2py threadsafe IMPLICIT NONE INTEGER n,i,ntau DOUBLE PRECISION like DOUBLE PRECISION x(n),tau(ntau),tau_tmp LOGICAL not_scalar_tau DOUBLE PRECISION PI PARAMETER (PI=3.141592653589793238462643d0) DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) not_scalar_tau = (ntau .NE. 1) tau_tmp = tau(1) like = 0.0 do i=1,n if (not_scalar_tau) tau_tmp = tau(i) if ((tau_tmp .LE. 0.0) .OR. (x(i) .LT. 0.0)) then like = -infinity RETURN endif like = like + 0.5 * (dlog(2. * tau_tmp / PI)) like = like - (0.5 * x(i)**2 * tau_tmp) enddo return END SUBROUTINE hnormal_gradx(x,tau,n,ntau,gradlike) c Half-normal log-likelihood function c Updated 24/01/2007 DH. cf2py double precision dimension(n),intent(in) :: x cf2py double precision dimension(ntau),intent(in) :: tau cf2py double precision dimension(n),intent(out) :: gradlike cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(tau,n),check(ntau==1 || ntau==n) :: ntau=len(tau) cf2py threadsafe IMPLICIT NONE INTEGER n,i,ntau DOUBLE PRECISION gradlike(n), grad DOUBLE PRECISION x(n),tau(ntau),tau_tmp LOGICAL not_scalar_tau DOUBLE PRECISION PI PARAMETER (PI=3.141592653589793238462643d0) DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) not_scalar_tau = (ntau .NE. 1) tau_tmp = tau(1) do i = 1, ntau if (tau(i) .LE. 0.0) then RETURN endif enddo do i = 1, n if (x(i) .LE. 0.0) then RETURN endif enddo do i=1,n if (not_scalar_tau) tau_tmp=tau(i) gradlike(i) = -x(i) * tau_tmp enddo return END SUBROUTINE hnormal_gradtau(x,tau,n,ntau,gradlike) c Half-normal log-likelihood function c Updated 24/01/2007 DH. cf2py double precision dimension(n),intent(in) :: x cf2py double precision dimension(ntau),intent(in) :: tau cf2py double precision dimension(ntau),intent(out) :: gradlike cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(tau,n),check(ntau==1 || ntau==n) :: ntau=len(tau) cf2py threadsafe IMPLICIT NONE INTEGER n,i,ntau DOUBLE PRECISION gradlike(ntau), grad DOUBLE PRECISION x(n),tau(ntau),tau_tmp LOGICAL not_scalar_tau DOUBLE PRECISION PI PARAMETER (PI=3.141592653589793238462643d0) DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) not_scalar_tau = (ntau .NE. 1) tau_tmp = tau(1) do i = 1, ntau if (tau(i) .LE. 0.0) then RETURN endif enddo do i = 1, n if (x(i) .LE. 0.0) then RETURN endif enddo do i=1,n if (not_scalar_tau) tau_tmp=tau(i) grad = 1.0 / (2 * tau_tmp) - .5 * x(i)**2 if (not_scalar_tau) then gradlike(i) = grad else gradlike(1) = grad + gradlike(1) endif enddo return END SUBROUTINE lognormal(x,mu,tau,n,nmu,ntau,like) c Log-normal log-likelihood function c Updated 26/01/2007 DH. cf2py double precision dimension(n),intent(in) :: x cf2py double precision dimension(nmu),intent(in) :: mu cf2py double precision dimension(ntau),intent(in) :: tau cf2py double precision intent(out) :: like cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(mu,n),check(nmu==1||nmu==n) :: nmu=len(mu) cf2py integer intent(hide),depend(tau,n),check(ntau==1||ntau==n) :: ntau=len(tau) cf2py threadsafe IMPLICIT NONE INTEGER n,i,ntau,nmu DOUBLE PRECISION like DOUBLE PRECISION x(n),mu(nmu),tau(ntau) DOUBLE PRECISION mu_tmp, tau_tmp LOGICAL not_scalar_mu, not_scalar_tau DOUBLE PRECISION PI PARAMETER (PI=3.141592653589793238462643d0) DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) not_scalar_mu = (nmu .NE. 1) not_scalar_tau = (ntau .NE. 1) mu_tmp = mu(1) tau_tmp = tau(1) like = 0.0 do i=1,n if (not_scalar_mu) mu_tmp=mu(i) if (not_scalar_tau) tau_tmp=tau(i) if ((tau_tmp .LE. 0.0).OR.(x(i) .LE. 0.0)) then like = -infinity RETURN endif like = like + 0.5 * (dlog(tau_tmp) - dlog(2.0*PI)) like = like - 0.5*tau_tmp*(dlog(x(i))-mu_tmp)**2 - dlog(x(i)) enddo return END SUBROUTINE lognormal_gradx(x,mu,tau,n,nmu,ntau,gradlike) c Log-normal log-likelihood function c Updated 26/01/2007 DH. cf2py double precision dimension(n),intent(in) :: x cf2py double precision dimension(nmu),intent(in) :: mu cf2py double precision dimension(ntau),intent(in) :: tau cf2py double precision dimension(n), intent(out) :: gradlike cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(mu,n),check(nmu==1||nmu==n) :: nmu=len(mu) cf2py integer intent(hide),depend(tau,n),check(ntau==1||ntau==n) :: ntau=len(tau) cf2py threadsafe IMPLICIT NONE INTEGER n,i,ntau,nmu DOUBLE PRECISION gradlike(n) DOUBLE PRECISION x(n),mu(nmu),tau(ntau) DOUBLE PRECISION mu_tmp, tau_tmp LOGICAL not_scalar_mu, not_scalar_tau DOUBLE PRECISION PI PARAMETER (PI=3.141592653589793238462643d0) DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) not_scalar_mu = (nmu .NE. 1) not_scalar_tau = (ntau .NE. 1) mu_tmp = mu(1) tau_tmp = tau(1) do i=1,n if (x(i) .LE. 0.0) return enddo do i=1,nmu if (mu(i) .LE. 0.0) return enddo do i=1,ntau if (tau(i) .LE. 0.0) return enddo do i=1,n if (not_scalar_mu) mu_tmp=mu(i) if (not_scalar_tau) tau_tmp=tau(i) gradlike(i) = - (1 + (dlog(x(i)) - mu_tmp) * tau_tmp)/x(i) enddo return END SUBROUTINE lognormal_gradmu(x,mu,tau,n,nmu,ntau,gradlike) c Log-normal log-likelihood function c Updated 26/01/2007 DH. cf2py double precision dimension(n),intent(in) :: x cf2py double precision dimension(nmu),intent(in) :: mu cf2py double precision dimension(ntau),intent(in) :: tau cf2py double precision dimension(nmu), intent(out) :: gradlike cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(mu,n),check(nmu==1||nmu==n) :: nmu=len(mu) cf2py integer intent(hide),depend(tau,n),check(ntau==1||ntau==n) :: ntau=len(tau) cf2py threadsafe IMPLICIT NONE INTEGER n,i,ntau,nmu DOUBLE PRECISION gradlike(nmu), glike DOUBLE PRECISION x(n),mu(nmu),tau(ntau) DOUBLE PRECISION mu_tmp, tau_tmp LOGICAL not_scalar_mu, not_scalar_tau DOUBLE PRECISION PI PARAMETER (PI=3.141592653589793238462643d0) DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) not_scalar_mu = (nmu .NE. 1) not_scalar_tau = (ntau .NE. 1) mu_tmp = mu(1) tau_tmp = tau(1) do i=1,n if (x(i) .LE. 0.0) return enddo do i=1,nmu if (mu(i) .LE. 0.0) return enddo do i=1,ntau if (tau(i) .LE. 0.0) return enddo do i=1,n if (not_scalar_mu) mu_tmp=mu(i) if (not_scalar_tau) tau_tmp=tau(i) glike = (dlog(x(i)) - mu_tmp) * tau_tmp if (not_scalar_mu) then gradlike(i) = glike else gradlike(1) = glike + gradlike(1) end if enddo return END SUBROUTINE lognormal_gradtau(x,mu,tau,n,nmu,ntau,gradlike) c Log-normal log-likelihood function c Updated 26/01/2007 DH. cf2py double precision dimension(n),intent(in) :: x cf2py double precision dimension(nmu),intent(in) :: mu cf2py double precision dimension(ntau),intent(in) :: tau cf2py double precision dimension(ntau), intent(out) :: gradlike cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(mu,n),check(nmu==1||nmu==n) :: nmu=len(mu) cf2py integer intent(hide),depend(tau,n),check(ntau==1||ntau==n) :: ntau=len(tau) cf2py threadsafe IMPLICIT NONE INTEGER n,i,ntau,nmu DOUBLE PRECISION gradlike(ntau), glike DOUBLE PRECISION x(n),mu(nmu),tau(ntau) DOUBLE PRECISION mu_tmp, tau_tmp LOGICAL not_scalar_mu, not_scalar_tau DOUBLE PRECISION PI PARAMETER (PI=3.141592653589793238462643d0) DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) not_scalar_mu = (nmu .NE. 1) not_scalar_tau = (ntau .NE. 1) mu_tmp = mu(1) tau_tmp = tau(1) do i=1,n if (x(i) .LE. 0.0) return enddo do i=1,nmu if (mu(i) .LE. 0.0) return enddo do i=1,ntau if (tau(i) .LE. 0.0) return enddo do i=1,n if (not_scalar_mu) mu_tmp=mu(i) if (not_scalar_tau) tau_tmp=tau(i) glike = 1D0 /(2D0 * tau_tmp) - (dlog(x(i)) - mu_tmp)**2/2D0 if (not_scalar_tau) then gradlike(i) = glike else gradlike(1) = glike + gradlike(1) end if enddo return END SUBROUTINE arlognormal(x, mu, sigma, rho, beta, n, nmu, like) C Autocorrelated lognormal loglikelihood. C David Huard, June 2007 cf2py double precision dimension(n),intent(in) :: x cf2py double precision dimension(nmu),intent(in) :: mu cf2py double precision intent(in) :: sigma, rho, beta cf2py double precision intent(out) :: like cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(mu,n),check(nmu==1||nmu==n) :: nmu=len(mu) cf2py threadsafe IMPLICIT NONE INTEGER n,i,nmu DOUBLE PRECISION like DOUBLE PRECISION x(n),mu(nmu),sigma, rho, beta DOUBLE PRECISION mu_tmp,logx(n),r(n),t1,t2,t3,t4,quad DOUBLE PRECISION PI PARAMETER (PI=3.141592653589793238462643d0) DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) if ((abs(rho) > 1).OR.(sigma <= 0.0)) then like = -infinity RETURN endif t1 = n/2. *dlog(2*pi) t2 = .5 * (dlog(beta) + 2*n*dlog(sigma) - dlog(1.-rho**2)) t3 = 0.0 mu_tmp = mu(1) do i=1,n if (x(i) <= 0.0) then like = -infinity RETURN endif logx(i) = dlog(x(i)) t3 = t3+logx(i) if (nmu .NE. 1) mu_tmp=mu(i) r(i) = logx(i) - mu_tmp enddo quad = 1.0/beta * (1.-rho**2)*r(1)**2 do i=1,n-1 quad = quad + (r(i+1) - rho*r(i))**2 enddo t4 = .5 * quad/sigma**2 like = -t1-t2-t3-t4 END SUBROUTINE SUBROUTINE gev(x,xi,mu,sigma,n,nxi,nmu,nsigma,like) C C COMPUTE THE LIKELIHOOD OF THE GENERALIZED EXTREME VALUE DISTRIBUTION. C Cf2py double precision dimension(n), intent(in):: x Cf2py double precision dimension(nxi), intent(in):: xi Cf2py double precision dimension(nmu), intent(in):: mu Cf2py double precision dimension(nsigma), intent(in):: sigma Cf2py integer intent(hide), depend(x) :: n=len(x) Cf2py integer intent(hide), depend(xi,n),check(nxi==1||nxi==n) :: nxi=len(xi) Cf2py integer intent(hide), depend(mu,n),check(nmu==1||nmu==n) :: nmu=len(mu) Cf2py integer intent(hide), depend(sigma,n),check(nsigma==1||nsigma==n) :: nsigma=len(sigma) Cf2py double precision intent(out):: like INTEGER n, nmu, nxi, nsigma, i DOUBLE PRECISION x(n), xi(nxi), mu(nmu), sigma(nsigma), like DOUBLE PRECISION Z(N), EX(N), PEX(N) DOUBLE PRECISION XI_tmp, SIGMA_tmp DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) CALL standardize(x,mu,sigma,n,nmu,nsigma,z) xi_tmp = xi(1) sigma_tmp = sigma(1) LIKE = 0.0 DO I=1,N if (nxi .NE. 1) xi_tmp = xi(i) if (nsigma .NE. 1) sigma_tmp = sigma(i) IF (ABS(xi_tmp) .LT. 10.**(-5.)) THEN LIKE = LIKE - Z(I) - dexp(-Z(I)) - dlog(sigma_tmp) ELSE EX(I) = 1. + xi_tmp*z(i) IF (EX(I) .LT. 0.) THEN LIKE = -infinity RETURN ENDIF PEX(I) = EX(I)**(-1./xi_tmp) LIKE = LIKE - dlog(sigma_tmp) - PEX(I) LIKE = LIKE - (1./xi_tmp +1.)* dlog(EX(I)) ENDIF ENDDO end subroutine gev SUBROUTINE gev_ppf(q,xi,n,nxi,ppf) C C COMPUTE THE Percentile Point function (PPF) OF THE C GENERALIZED EXTREME VALUE DISTRIBUTION. C C Created 29/01/2007 DH. C Cf2py double precision dimension(n), intent(in):: q Cf2py double precision dimension(nxi), intent(in):: xi Cf2py integer intent(hide), depend(q)::n=len(q) Cf2py integer intent(hide), depend(xi,n),check(nxi==1 || nxi==n) :: nxi=len(xi) Cf2py double precision dimension(n), intent(out):: ppf IMPLICIT NONE INTEGER n,nxi,i DOUBLE PRECISION q(n), xi(nxi), ppf(n) DOUBLE PRECISION xi_tmp xi_tmp = xi(1) do i=1,n if (nxi .NE. 1) xi_tmp= xi(i) IF (ABS(xi_tmp) .LT. 10.**(-5.)) THEN ppf(i) = -dlog(-dlog(q(i))) ELSE ppf(i) = 1./xi_tmp * ( (-dlog(q(i)))**(-xi_tmp) -1. ) ENDIF enddo return END SUBROUTINE gev_ppf SUBROUTINE gamma(x,alpha,beta,n,na,nb,like) c Gamma log-likelihood function c Updated 19/01/2007 DH. cf2py double precision dimension(n),intent(in) :: x cf2py double precision dimension(na),intent(in) :: alpha cf2py double precision dimension(nb),intent(in) :: beta cf2py double precision intent(out) :: like cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(alpha),check(na==1 || na==len(x)) :: na=len(alpha) cf2py integer intent(hide),depend(beta),check(nb==1 || nb==len(x)) :: nb=len(beta) cf2py threadsafe INTEGER i,n,na,nb DOUBLE PRECISION like DOUBLE PRECISION x(n),alpha(na),beta(nb) DOUBLE PRECISION beta_tmp, alpha_tmp LOGICAL not_scalar_a, not_scalar_b DOUBLE PRECISION gammln DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) not_scalar_a = (na .NE. 1) not_scalar_b = (nb .NE. 1) alpha_tmp = alpha(1) beta_tmp = beta(1) like = 0.0 do i=1,n if (not_scalar_a) alpha_tmp = alpha(i) if (not_scalar_b) beta_tmp = beta(i) if ((x(i) .LT. 0.0) .OR. (alpha_tmp .LE. 0.0) .OR. +(beta_tmp .LE. 0.0)) then like = -infinity RETURN endif if (x(i).EQ.0.0) then if (alpha_tmp.EQ.1.0) then like = like + dlog(beta_tmp) else if (alpha_tmp.LT.1.0) then like = infinity RETURN else like = -infinity RETURN end if else like = like - gammln(alpha_tmp) + alpha_tmp*dlog(beta_tmp) like = like + (alpha_tmp - 1.0)*dlog(x(i)) - beta_tmp*x(i) end if enddo return END SUBROUTINE gamma_grad_x(x,alpha,beta,n,na,nb,gradxlike) c Gamma log-likelihood gradient function wrt x c Updated 19/01/2007 DH. cf2py double precision dimension(n),intent(in) :: x cf2py double precision dimension(na),intent(in) :: alpha cf2py double precision dimension(nb),intent(in) :: beta cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(alpha),check(na==1 || na==len(x)) :: na=len(alpha) cf2py integer intent(hide),depend(beta),check(nb==1 || nb==len(x)) :: nb=len(beta) cf2py double precision dimension(n),intent(out) :: gradxlike cf2py threadsafe INTEGER i,n,na,nb DOUBLE PRECISION x(n),alpha(na),beta(nb) double precision gradxlike(n) DOUBLE PRECISION beta_tmp, alpha_tmp LOGICAL not_scalar_a, not_scalar_b DOUBLE PRECISION gammln DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) not_scalar_a = (na .NE. 1) not_scalar_b = (nb .NE. 1) alpha_tmp = alpha(1) beta_tmp = beta(1) do i = 1, n if (x(i) .LT. 0.0) return enddo do i=1,na if (alpha(i) .LE. 0.0) RETURN enddo do i=1,nb if (beta(i) .LE. 0.0) RETURN enddo do i=1,n if (not_scalar_a) alpha_tmp = alpha(i) if (not_scalar_b) beta_tmp = beta(i) if (x(i).EQ.0.0) then if (alpha_tmp .EQ. 1.0) then gradxlike(i) = -beta_tmp else c might be a better way to handle this, but this will do for now gradxlike(i) = 0 end if else gradxlike(i) = (alpha_tmp - 1.0)/x(i) - beta_tmp end if enddo return END SUBROUTINE gamma_grad_alpha(x,alpha,beta,n,na,nb,gradalphalike) c Gamma log-likelihood gradient function wrt alpha c Updated 19/01/2007 DH. cf2py double precision dimension(n),intent(in) :: x cf2py double precision dimension(na),intent(in) :: alpha cf2py double precision dimension(nb),intent(in) :: beta cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(alpha),check(na==1 || na==len(x)) :: na=len(alpha) cf2py integer intent(hide),depend(beta),check(nb==1 || nb==len(x)) :: nb=len(beta) cf2py double precision dimension(na),intent(out) :: gradalphalike cf2py threadsafe INTEGER i,n,na,nb DOUBLE PRECISION x(n),alpha(na),beta(nb) double precision gradalphalike(na) double precision gradalpha DOUBLE PRECISION beta_tmp, alpha_tmp LOGICAL not_scalar_a, not_scalar_b DOUBLE PRECISION gammln, psi DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) not_scalar_a = (na .NE. 1) not_scalar_b = (nb .NE. 1) alpha_tmp = alpha(1) beta_tmp = beta(1) do i = 1, n if (x(i) .LT. 0.0) return enddo do i=1,na if (alpha(i) .LE. 0.0) RETURN enddo do i=1,nb if (beta(i) .LE. 0.0) RETURN enddo do i=1,n if (not_scalar_a) alpha_tmp = alpha(i) if (not_scalar_b) beta_tmp = beta(i) if (x(i) .EQ. 0.0) then gradalpha = -infinity else gradalpha = dlog(x(i)) - psi(alpha_tmp) + dlog(beta_tmp) end if if (not_scalar_a) then gradalphalike(i) = gradalpha else gradalphalike(1) = gradalpha + gradalphalike(1) end if enddo return END SUBROUTINE gamma_grad_beta(x,alpha,beta,n,na,nb,gradbetalike) c Gamma log-likelihood gradient function wrt beta c Updated 19/01/2007 DH. cf2py double precision dimension(n),intent(in) :: x cf2py double precision dimension(na),intent(in) :: alpha cf2py double precision dimension(nb),intent(in) :: beta cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(alpha),check(na==1 || na==len(x)) :: na=len(alpha) cf2py integer intent(hide),depend(beta),check(nb==1 || nb==len(x)) :: nb=len(beta) cf2py double precision dimension(nb),intent(out) :: gradbetalike cf2py threadsafe INTEGER i,n,na,nb DOUBLE PRECISION x(n),alpha(na),beta(nb) double precision gradbetalike(nb) double precision gradbeta DOUBLE PRECISION beta_tmp, alpha_tmp LOGICAL not_scalar_a, not_scalar_b DOUBLE PRECISION gammln DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) not_scalar_a = (na .NE. 1) not_scalar_b = (nb .NE. 1) alpha_tmp = alpha(1) beta_tmp = beta(1) do i = 1, n if (x(i) .LT. 0.0) return enddo do i=1,na if (alpha(i) .LE. 0.0) RETURN enddo do i=1,nb if (beta(i) .LE. 0.0) RETURN enddo do i=1,n if (not_scalar_a) alpha_tmp = alpha(i) if (not_scalar_b) beta_tmp = beta(i) if (beta_tmp .EQ. 0.0) then gradbeta = infinity else gradbeta = -x(i) + alpha_tmp/beta_tmp end if if (not_scalar_b) then gradbetalike(i) = gradbeta else gradbetalike(1) = gradbeta + gradbetalike(1) end if enddo return END SUBROUTINE igamma(x,alpha,beta,n,na,nb,like) c Inverse gamma log-likelihood function c Updated 26/01/2007 DH. cf2py double precision dimension(n),intent(in) :: x cf2py double precision dimension(na),intent(in) :: alpha cf2py double precision dimension(nb),intent(in) :: beta cf2py double precision intent(out) :: like cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(alpha,n),check(na==1||na==n) :: na=len(alpha) cf2py integer intent(hide),depend(beta,n),check(nb==1||nb==n) :: nb=len(beta) cf2py threadsafe IMPLICIT NONE INTEGER i,n,na,nb DOUBLE PRECISION like DOUBLE PRECISION x(n),alpha(na),beta(nb) DOUBLE PRECISION alpha_tmp, beta_tmp DOUBLE PRECISION gammln DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) alpha_tmp=alpha(1) beta_tmp=beta(1) like = 0.0D0 do i=1,n if (na .NE. 1) alpha_tmp=alpha(i) if (nb .NE. 1) beta_tmp=beta(i) if ((alpha_tmp .LT. 0.0) .OR. (beta_tmp .LT. 0.0)) then like = -infinity RETURN endif if ((x(i) .LE. 0.0).OR.(alpha_tmp.LE.0.0).OR. + (beta_tmp.LE.0.0)) then like = -infinity RETURN endif like = like - gammln(alpha_tmp) + alpha_tmp*dlog(beta_tmp) like = like - (alpha_tmp+1.0D0)*dlog(x(i)) - 1.0D0*beta_tmp/x(i) enddo return END SUBROUTINE igamma_grad_x(x,alpha,beta,n,na,nb,gradxlike) c Gamma log-likelihood gradient function wrt x c Updated 19/01/2007 DH. cf2py double precision dimension(n),intent(in) :: x cf2py double precision dimension(na),intent(in) :: alpha cf2py double precision dimension(nb),intent(in) :: beta cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(alpha),check(na==1 || na==len(x)) :: na=len(alpha) cf2py integer intent(hide),depend(beta),check(nb==1 || nb==len(x)) :: nb=len(beta) cf2py double precision dimension(n),intent(out) :: gradxlike cf2py threadsafe INTEGER i,n,na,nb DOUBLE PRECISION x(n),alpha(na),beta(nb) double precision gradxlike(n) DOUBLE PRECISION beta_tmp, alpha_tmp LOGICAL not_scalar_a, not_scalar_b DOUBLE PRECISION gammln DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) not_scalar_a = (na .NE. 1) not_scalar_b = (nb .NE. 1) alpha_tmp = alpha(1) beta_tmp = beta(1) do i = 1, n if (x(i) .LE. 0.0) return enddo do i=1,na if (alpha(i) .LE. 0.0) RETURN enddo do i=1,nb if (beta(i) .LE. 0.0) RETURN enddo do i=1,n if (not_scalar_a) alpha_tmp = alpha(i) if (not_scalar_b) beta_tmp = beta(i) gradxlike(i) = -(alpha_tmp + 1.0)/x(i) + beta_tmp/x(i)**2 enddo return END SUBROUTINE igamma_grad_alpha(x,alpha,beta,n,na,nb,gradalphalike) c Gamma log-likelihood gradient function wrt alpha c Updated 19/01/2007 DH. cf2py double precision dimension(n),intent(in) :: x cf2py double precision dimension(na),intent(in) :: alpha cf2py double precision dimension(nb),intent(in) :: beta cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(alpha),check(na==1 || na==len(x)) :: na=len(alpha) cf2py integer intent(hide),depend(beta),check(nb==1 || nb==len(x)) :: nb=len(beta) cf2py double precision dimension(na),intent(out) :: gradalphalike cf2py threadsafe INTEGER i,n,na,nb DOUBLE PRECISION x(n),alpha(na),beta(nb) double precision gradalphalike(na) double precision gradalpha DOUBLE PRECISION beta_tmp, alpha_tmp LOGICAL not_scalar_a, not_scalar_b DOUBLE PRECISION gammln, psi DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) not_scalar_a = (na .NE. 1) not_scalar_b = (nb .NE. 1) alpha_tmp = alpha(1) beta_tmp = beta(1) do i = 1, n if (x(i) .LE. 0.0) return enddo do i=1,na if (alpha(i) .LE. 0.0) RETURN enddo do i=1,nb if (beta(i) .LE. 0.0) RETURN enddo do i=1,n if (not_scalar_a) alpha_tmp = alpha(i) if (not_scalar_b) beta_tmp = beta(i) gradalpha = -dlog(x(i)) - psi(alpha_tmp) + dlog(beta_tmp) if (not_scalar_a) then gradalphalike(i) = gradalpha else gradalphalike(1) = gradalpha + gradalphalike(1) end if enddo return END SUBROUTINE igamma_grad_beta(x,alpha,beta,n,na,nb,gradbetalike) c Gamma log-likelihood gradient function wrt beta c Updated 19/01/2007 DH. cf2py double precision dimension(n),intent(in) :: x cf2py double precision dimension(na),intent(in) :: alpha cf2py double precision dimension(nb),intent(in) :: beta cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(alpha),check(na==1 || na==len(x)) :: na=len(alpha) cf2py integer intent(hide),depend(beta),check(nb==1 || nb==len(x)) :: nb=len(beta) cf2py double precision dimension(nb),intent(out) :: gradbetalike cf2py threadsafe INTEGER i,n,na,nb DOUBLE PRECISION x(n),alpha(na),beta(nb) double precision gradbetalike(nb) double precision gradbeta DOUBLE PRECISION beta_tmp, alpha_tmp LOGICAL not_scalar_a, not_scalar_b DOUBLE PRECISION gammln DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) not_scalar_a = (na .NE. 1) not_scalar_b = (nb .NE. 1) alpha_tmp = alpha(1) beta_tmp = beta(1) do i = 1, n if (x(i) .LE. 0.0) return enddo do i=1,na if (alpha(i) .LE. 0.0) RETURN enddo do i=1,nb if (beta(i) .LE. 0.0) RETURN enddo do i=1,n if (not_scalar_a) alpha_tmp = alpha(i) if (not_scalar_b) beta_tmp = beta(i) gradbeta = alpha_tmp/beta_tmp - 1d0/x(i) if (not_scalar_a) then gradbetalike(i) = gradbeta else gradbetalike(1) = gradbeta + gradbetalike(1) end if enddo return END SUBROUTINE hyperg(x,draws,success,total,n,nd,ns,nt,like) c Hypergeometric log-likelihood function c Updated 5/02/07, DH. Changed variable names. c Distribution models the probability of drawing x successes in a c given number of draws, knowing the population composition (success, failures). c where failures = total - success cf2py integer dimension(n),intent(in) :: x cf2py integer dimension(nd),intent(in) :: draws cf2py integer dimension(ns),intent(in) :: success cf2py integer dimension(nt),intent(in) :: total cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(draws,n),check(nd==1||nd==n) :: nd=len(draws) cf2py integer intent(hide),depend(success,n),check(ns==1||ns==n) :: ns=len(success) cf2py integer intent(hide),depend(total,n),check(nt==1||nt==n) :: nt=len(total) cf2py double precision intent(out) :: like cf2py threadsafe IMPLICIT NONE INTEGER i,n,nd,ns,nt INTEGER x(n),draws(nd), success(ns),total(nt) INTEGER draws_tmp, s_tmp, t_tmp DOUBLE PRECISION like, combinationln DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) c CALL constrain(d,x,total,allow_equal=1) c CALL constrain(red,x,total,allow_equal=1) c CALL constrain(x, 0, d, allow_equal=1) draws_tmp = draws(1) s_tmp = success(1) t_tmp = total(1) ! print *,draws,success,total like = 0.0 do i=1,n c Combinations of x red balls if (nd .NE. 1) draws_tmp = draws(i) if (ns .NE. 1) s_tmp = success(i) if (nt .NE. 1) t_tmp = total(i) if ((draws_tmp .LE. 0) .OR. (s_tmp .LT. 0)) then like = -infinity RETURN endif if (t_tmp .LE. 0) then like = -infinity RETURN endif if (x(i) .LT. MAX(0, draws_tmp - t_tmp + s_tmp)) then like = -infinity RETURN else if (x(i) .GT. MIN(draws_tmp, s_tmp)) then like = -infinity RETURN endif c like = like + combinationln(t_tmp-s_tmp, x(i)) c like = like + combinationln(s_tmp,draws_tmp-x(i)) like = like + combinationln(t_tmp-s_tmp, draws_tmp-x(i)) like = like + combinationln(s_tmp, x(i)) like = like - combinationln(t_tmp, draws_tmp) enddo return END SUBROUTINE geometric(x,p,n,np,like) c Geometric log-likelihood c Created 29/01/2007 DH. cf2py integer dimension(n),intent(in) :: x cf2py double precision dimension(np),intent(in) :: p cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(p,n),check(np==1 || np==n) :: np=len(p) cf2py double precision intent(out) :: like cf2py threadsafe IMPLICIT NONE INTEGER n,np,i INTEGER x(n) DOUBLE PRECISION p(np), p_tmp DOUBLE PRECISION like DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) p_tmp = p(1) like = 0.0 do i=1, n if (np .NE. 1) p_tmp = p(i) if ((p_tmp .LE. 0.0) .OR. (p_tmp .GE. 1.0)) then like = -infinity RETURN endif if (x(i) .LT. 1) then like = -infinity RETURN endif like = like + dlog(p_tmp) + (x(i)-1)* dlog(1.0D0-p_tmp) enddo return END SUBROUTINE geometric SUBROUTINE geometric_gp(x,p,n,np,gradlike) c Geometric log-likelihood c Created 29/01/2007 DH. cf2py integer dimension(n),intent(in) :: x cf2py double precision dimension(np),intent(in) :: p cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(p,n),check(np==1 || np==n) :: np=len(p) cf2py double precision dimension(np), intent(out) :: gradlike cf2py threadsafe IMPLICIT NONE INTEGER n,np,i INTEGER x(n) DOUBLE PRECISION p(np), p_tmp DOUBLE PRECISION gradlike(np), grad DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) p_tmp = p(1) do i=1, np if ((p(i) .LE. 0.0) .OR. (p(i) .GE. 1.0)) return enddo do i=1, n if (x(i) .LT. 1) return enddo do i=1, n if (np .NE. 1) p_tmp = p(i) grad = - (x(i) - 1)/(1 - p_tmp) + 1d0 / p_tmp if (np .NE. 1) then gradlike(i) = grad else gradlike(1) = grad + gradlike(1) end if enddo return END SUBROUTINE ! SUBROUTINE dirichlet(x,theta,nx,nt,k,like) ! ! c Dirichlet log-likelihood function ! ! cf2py integer intent(hide),depend(x) :: nx=shape(x,0) ! cf2py integer intent(hide),depend(theta) :: nt=shape(theta,0) ! cf2py integer intent(hide),depend(x,theta),check(k==shape(theta,1)) :: k=shape(x,1) ! cf2py intent(out) like ! ! IMPLICIT NONE ! INTEGER i,j,k,nx,nt ! DOUBLE PRECISION like,sumt,sumx ! DOUBLE PRECISION x(nx,k),theta(nt,k) ! DOUBLE PRECISION t_tmp(k) ! DOUBLE PRECISION gammln ! DOUBLE PRECISION infinity ! PARAMETER (infinity = 1.7976931348623157d308) ! ! ! like = 0.0D0 ! do i=1,k ! t_tmp(i) = theta(1,i) ! enddo ! do j=1,nx ! if (nt .NE. 1) then ! do i=1,k ! t_tmp(i) = theta(j,i) ! enddo ! endif ! ! sumt = 0.0D0 ! sumx = 0.0D0 ! ! do i=1,k ! ! protect against non-positive x or theta ! if ((x(j,i) .LE. 0.0D0) .OR. (t_tmp(i) .LE. 0.0D0)) then ! like = -infinity ! RETURN ! endif ! ! like = like + (t_tmp(i)-1.0D0)*dlog(x(j,i)) ! like = like - gammln(t_tmp(i)) ! ! sumt = sumt + t_tmp(i) ! sumx = sumx + x(j,i) ! ! enddo ! ! make sure x sums approximately to unity ! if ((sumx .GT. 1.000001) .OR. (sumx .LT. 0.999999)) then ! like=-infinity ! return ! endif ! like = like + gammln(sumt) ! enddo ! RETURN ! END SUBROUTINE dirichlet SUBROUTINE dirichlet(x,theta,nx,nt,k,like) c Dirichlet log-likelihood function with k-1 elements cf2py integer intent(hide),depend(x) :: nx=shape(x,0) cf2py integer intent(hide),depend(theta) :: nt=shape(theta,0) cf2py integer intent(hide),depend(x,theta) :: k=shape(theta,1) cf2py intent(out) like cf2py threadsafe IMPLICIT NONE INTEGER i,j,k,nx,nt DOUBLE PRECISION like,sumt,sumx DOUBLE PRECISION x(nx,k-1),theta(nt,k) DOUBLE PRECISION t_tmp(k) DOUBLE PRECISION gammln DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) like = 0.0D0 do i=1,k t_tmp(i) = theta(1,i) enddo do j=1,nx if (nt .NE. 1) then do i=1,k t_tmp(i) = theta(j,i) enddo endif sumt = 0.0D0 sumx = 0.0D0 do i=1,k-1 ! protect against non-positive x or theta if ((x(j,i) .LE. 0.0D0) .OR. (t_tmp(i).LE.0.0D0)) then like = -infinity RETURN endif like = like + (t_tmp(i)-1.0D0)*dlog(x(j,i)) like = like - gammln(t_tmp(i)) sumt = sumt + t_tmp(i) sumx = sumx + x(j,i) enddo ! implicit kth term like = like + (t_tmp(k)-1.0D0)*dlog(1.0D0-sumx) like = like - gammln(t_tmp(k)) sumt = sumt + t_tmp(k) if (sumx .GT. 1.0D0) then like = -infinity RETURN endif like = like + gammln(sumt) enddo RETURN END SUBROUTINE dirichlet SUBROUTINE cauchy(x,alpha,beta,nx, na, nb,like) c Cauchy log-likelihood function c UPDATED 17/01/2007 DH. cf2py double precision dimension(nx),intent(in) :: x cf2py double precision dimension(na),intent(in) :: alpha cf2py double precision dimension(nb),intent(in) :: beta cf2py double precision intent(out) :: like cf2py integer intent(hide),depend(x) :: nx=len(x) cf2py integer intent(hide),depend(alpha),check(na==1 || na==len(x)) :: na=len(alpha) cf2py integer intent(hide),depend(beta),check(nb==1 || nb==len(x)) :: nb=len(beta) cf2py threadsafe IMPLICIT NONE INTEGER nx,na,nb,i DOUBLE PRECISION x(nx),alpha(na),beta(nb) DOUBLE PRECISION like, atmp, btmp, PI LOGICAL not_scalar_alpha, not_scalar_beta PARAMETER (PI=3.141592653589793238462643d0) DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) not_scalar_alpha = (na .NE. 1) not_scalar_beta = (nb .NE. 1) atmp = alpha(1) btmp = beta(1) like = -nx*dlog(PI) do i=1,nx if (not_scalar_alpha) atmp = alpha(i) if (not_scalar_beta) btmp = beta(i) if (btmp .LE. 0.0) then like = -infinity RETURN endif like = like - dlog(btmp) like = like - dlog( 1. + ((x(i)-atmp) / btmp) ** 2 ) enddo return END SUBROUTINE cauchy_grad_x(x,alpha,beta,nx, na, nb,gradlike) c Cauchy log-likelihood function c UPDATED 17/01/2007 DH. cf2py double precision dimension(nx),intent(in) :: x cf2py double precision dimension(na),intent(in) :: alpha cf2py double precision dimension(nb),intent(in) :: beta cf2py double precision dimension(nx),intent(out) :: gradlike cf2py integer intent(hide),depend(x) :: nx=len(x) cf2py integer intent(hide),depend(alpha),check(na==1 || na==len(x)) :: na=len(alpha) cf2py integer intent(hide),depend(beta),check(nb==1 || nb==len(x)) :: nb=len(beta) cf2py threadsafe IMPLICIT NONE INTEGER nx,na,nb,i DOUBLE PRECISION x(nx),alpha(na),beta(nb) DOUBLE PRECISION gradlike(nx), atmp, btmp, PI, glike LOGICAL not_scalar_alpha, not_scalar_beta PARAMETER (PI=3.141592653589793238462643d0) DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) not_scalar_alpha = (na .NE. 1) not_scalar_beta = (nb .NE. 1) atmp = alpha(1) btmp = beta(1) do i=1,nb if (beta(i) .LE. 0.0) return enddo do i=1,nx if (not_scalar_alpha) atmp = alpha(i) if (not_scalar_beta) btmp = beta(i) gradlike(i) = - 2 * (x(i) - atmp)/ &(btmp**2 + (x(i) - atmp)**2) enddo return END SUBROUTINE cauchy_grad_a(x,alpha,beta,nx, na, nb,gradlike) c Cauchy log-likelihood function c UPDATED 17/01/2007 DH. cf2py double precision dimension(nx),intent(in) :: x cf2py double precision dimension(na),intent(in) :: alpha cf2py double precision dimension(nb),intent(in) :: beta cf2py double precision dimension(nx),intent(out) :: gradlike cf2py integer intent(hide),depend(x) :: nx=len(x) cf2py integer intent(hide),depend(alpha),check(na==1 || na==len(x)) :: na=len(alpha) cf2py integer intent(hide),depend(beta),check(nb==1 || nb==len(x)) :: nb=len(beta) cf2py threadsafe IMPLICIT NONE INTEGER nx,na,nb,i DOUBLE PRECISION x(nx),alpha(na),beta(nb) DOUBLE PRECISION gradlike(na), atmp, btmp, PI, glike LOGICAL not_scalar_alpha, not_scalar_beta PARAMETER (PI=3.141592653589793238462643d0) DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) not_scalar_alpha = (na .NE. 1) not_scalar_beta = (nb .NE. 1) atmp = alpha(1) btmp = beta(1) do i=1,nb if (beta(i) .LE. 0.0) return enddo do i=1,nx if (not_scalar_alpha) atmp = alpha(i) if (not_scalar_beta) btmp = beta(i) glike = 2 * (x(i) - atmp)/(btmp**2 + (x(i)-atmp)**2) if (not_scalar_alpha) then gradlike(i) = glike else gradlike(1) = gradlike(1) + glike endif enddo return END SUBROUTINE cauchy_grad_b(x,alpha,beta,nx, na, nb,gradlike) c Cauchy log-likelihood function c UPDATED 17/01/2007 DH. cf2py double precision dimension(nx),intent(in) :: x cf2py double precision dimension(na),intent(in) :: alpha cf2py double precision dimension(nb),intent(in) :: beta cf2py double precision dimension(nx),intent(out) :: gradlike cf2py integer intent(hide),depend(x) :: nx=len(x) cf2py integer intent(hide),depend(alpha),check(na==1 || na==len(x)) :: na=len(alpha) cf2py integer intent(hide),depend(beta),check(nb==1 || nb==len(x)) :: nb=len(beta) cf2py threadsafe IMPLICIT NONE INTEGER nx,na,nb,i DOUBLE PRECISION x(nx),alpha(na),beta(nb) DOUBLE PRECISION gradlike(nb), atmp, btmp, PI, glike LOGICAL not_scalar_alpha, not_scalar_beta PARAMETER (PI=3.141592653589793238462643d0) DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) not_scalar_alpha = (na .NE. 1) not_scalar_beta = (nb .NE. 1) atmp = alpha(1) btmp = beta(1) do i=1,nb if (beta(i) .LE. 0.0) return enddo do i=1,nx if (not_scalar_alpha) atmp = alpha(i) if (not_scalar_beta) btmp = beta(i) glike = -1D0/btmp glike = glike + 2d0 * (x(i)-atmp)**2/ & (btmp**3*(1D0+(x(i)-atmp)**2/btmp**2)) if (not_scalar_beta) then gradlike(i) = glike else gradlike(1) = gradlike(1) + glike endif enddo return END SUBROUTINE negbin(x,r,p,n,nr,np,like) c Negative binomial log-likelihood function c Updated 24/01/2007. cf2py integer dimension(n),intent(in) :: x cf2py integer dimension(nr),intent(in) :: r cf2py double precision dimension(np),intent(in) :: p cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(r,n),check(nr==1 || nr==n) :: nr=len(r) cf2py integer intent(hide),depend(p,n),check(np==1 || np==n) :: np=len(p) cf2py double precision intent(out) :: like cf2py threadsafe IMPLICIT NONE INTEGER n,nr,np,i DOUBLE PRECISION like DOUBLE PRECISION p(np),p_tmp INTEGER x(n),r(nr),r_tmp LOGICAL not_scalar_r, not_scalar_p DOUBLE PRECISION factln DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) not_scalar_r = (nr .NE. 1) not_scalar_p = (np .NE. 1) r_tmp = r(1) p_tmp = p(1) like = 0.0 do i=1,n if (not_scalar_r) r_tmp = r(i) if (not_scalar_p) p_tmp = p(i) if ((r_tmp .LE. 0.0) .OR. (x(i) .LT. 0.0)) then like = -infinity RETURN endif if ((p_tmp .LE. 0.0) .OR. (p_tmp .GE. 1.0)) then like = -infinity RETURN endif like = like + r_tmp*dlog(p_tmp) + x(i)*dlog(1.-p_tmp) like = like+factln(x(i)+r_tmp-1)-factln(x(i))-factln(r_tmp-1) enddo return END SUBROUTINE negbin2(x,mu,a,n,nmu,na,like) c Negative binomial log-likelihood function c (alternative parameterization) c Updated 1/4/08 CF cf2py integer dimension(n),intent(in) :: x cf2py double precision dimension(na),intent(in) :: a cf2py double precision dimension(nmu),intent(in) :: mu cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(mu,x),check(nmu==1 || nmu==len(x)) :: nmu=len(mu) cf2py integer intent(hide),depend(a,x),check(na==1 || na==len(x)) :: na=len(a) cf2py double precision intent(out) :: like cf2py threadsafe IMPLICIT NONE INTEGER n,i,nmu,na DOUBLE PRECISION like DOUBLE PRECISION a(na),mu(nmu), a_tmp, mu_tmp INTEGER x(n) LOGICAL not_scalar_a, not_scalar_mu DOUBLE PRECISION gammln, factln DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) not_scalar_mu = (nmu .NE. 1) not_scalar_a = (na .NE. 1) mu_tmp = mu(1) a_tmp = a(1) like = 0.0 do i=1,n if (not_scalar_mu) mu_tmp = mu(i) if (not_scalar_a) a_tmp = a(i) if ((x(i) .LT. 0) .OR. (mu_tmp .LE. 0.0) .OR. +(a_tmp .LE. 0.0)) then like = -infinity RETURN endif if (not_scalar_mu) mu_tmp=mu(i) if (not_scalar_a) a_tmp=a(i) like=like + gammln(x(i)+a_tmp) - factln(x(i)) - gammln(a_tmp) like=like + x(i)*(dlog(mu_tmp/a_tmp) - dlog(1.0+mu_tmp/a_tmp)) like=like - a_tmp*dlog(1.0 + mu_tmp/a_tmp) enddo return END SUBROUTINE negbin2_gmu(x,mu,alpha,n,nmu,na,gradlike) c Negative binomial log-likelihood function c (alternative parameterization) c Updated 1/4/08 CF cf2py integer dimension(n),intent(in) :: x cf2py double precision dimension(na),intent(in) :: alpha cf2py double precision dimension(nmu),intent(in) :: mu cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(mu,x),check(nmu==1 || nmu==len(x)) :: nmu=len(mu) cf2py integer intent(hide),depend(alpha,x),check(na==1 || na==len(x)) :: na=len(alpha) cf2py double precision dimension (nmu), intent(out) :: gradlike cf2py threadsafe IMPLICIT NONE INTEGER n,i,nmu,na DOUBLE PRECISION gradlike(nmu), grad DOUBLE PRECISION alpha(na),mu(nmu), a_tmp, mu_tmp INTEGER x(n) LOGICAL not_scalar_a, not_scalar_mu DOUBLE PRECISION gammln, factln DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) not_scalar_mu = (nmu .NE. 1) not_scalar_a = (na .NE. 1) mu_tmp = mu(1) a_tmp = alpha(1) do i =1,n if (x(i) .LT. 0) return enddo do i =1,nmu if (mu(i) .LE. 0.0) return enddo do i=1,na if (alpha(i) .LE. 0.0) return enddo do i=1,n if (not_scalar_mu) mu_tmp = mu(i) if (not_scalar_a) a_tmp = alpha(i) grad= x(i)/mu_tmp - (x(i) + a_tmp)/(mu_tmp + a_tmp) if (not_scalar_mu) then gradlike(i) = grad else gradlike(1) = gradlike(1) + grad endif enddo return END SUBROUTINE negbin2_ga(x,mu,alpha,n,nmu,na,gradlike) c Negative binomial log-likelihood function c (alternative parameterization) c Updated 1/4/08 CF cf2py integer dimension(n),intent(in) :: x cf2py double precision dimension(na),intent(in) :: alpha cf2py double precision dimension(nmu),intent(in) :: mu cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(mu,x),check(nmu==1 || nmu==len(x)) :: nmu=len(mu) cf2py integer intent(hide),depend(alpha,x),check(na==1 || na==len(x)) :: na=len(alpha) cf2py double precision dimension (na), intent(out) :: gradlike cf2py threadsafe IMPLICIT NONE INTEGER n,i,nmu,na DOUBLE PRECISION gradlike(na), grad DOUBLE PRECISION alpha(na),mu(nmu), a_tmp, mu_tmp INTEGER x(n) LOGICAL not_scalar_a, not_scalar_mu DOUBLE PRECISION gammln, factln, psi DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) not_scalar_mu = (nmu .NE. 1) not_scalar_a = (na .NE. 1) mu_tmp = mu(1) a_tmp = alpha(1) do i =1,n if (x(i) .LT. 0) return enddo do i =1,nmu if (mu(i) .LE. 0.0) return enddo do i=1,na if (alpha(i) .LE. 0.0) return enddo do i=1,n if (not_scalar_mu) mu_tmp = mu(i) if (not_scalar_a) a_tmp = alpha(i) grad=psi(x(i)+a_tmp)-psi(a_tmp)+dlog(a_tmp)+1.0 + - dlog(a_tmp+mu_tmp)-a_tmp/(a_tmp+mu_tmp) + - x(i)/(mu_tmp+a_tmp) if (not_scalar_a) then gradlike(i) = grad else gradlike(1) = gradlike(1) + grad endif enddo return END SUBROUTINE binomial(x,n,p,nx,nn,np,like) c Binomial log-likelihood function c Updated 17/01/2007. DH. cf2py integer dimension(nx),intent(in) :: x cf2py integer dimension(nn),intent(in) :: n cf2py double precision dimension(np),intent(in) :: p cf2py integer intent(hide),depend(x) :: nx=len(x) cf2py integer intent(hide),depend(n),check(nn==1 || nn==len(x)) :: nn=len(n) cf2py integer intent(hide),depend(p),check(np==1 || np==len(x)) :: np=len(p) cf2py double precision intent(out) :: like cf2py threadsafe IMPLICIT NONE INTEGER nx,nn,np,i DOUBLE PRECISION like, p(np) INTEGER x(nx),n(nn) LOGICAL not_scalar_n,not_scalar_p INTEGER ntmp DOUBLE PRECISION ptmp DOUBLE PRECISION factln DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) not_scalar_n = (nn .NE. 1) not_scalar_p = (np .NE. 1) ntmp = n(1) ptmp = p(1) like = 0.0 do i=1,nx if (not_scalar_n) ntmp = n(i) if (not_scalar_p) ptmp = p(i) if ((x(i) .LT. 0) .OR. (ntmp .LT. 0) .OR. (x(i) .GT. ntmp)) then like = -infinity RETURN endif if ((ptmp .LE. 0.0D0) .OR. (ptmp .GE. 1.0D0)) then ! if p = 0, number of successes must be 0 if (ptmp .EQ. 0.0D0) then if (x(i) .GT. 0.0D0) then like = -infinity RETURN ! else like = like + 0 end if else if (ptmp .EQ. 1.0D0) then ! if p = 1, number of successes must be n if (x(i) .LT. ntmp) then like = -infinity RETURN ! else like = like + 0 end if else like = -infinity RETURN endif else like = like + x(i)*dlog(ptmp) + (ntmp-x(i))*dlog(1.-ptmp) like = like + factln(ntmp)-factln(x(i))-factln(ntmp-x(i)) end if enddo return END SUBROUTINE binomial_gp(x,n,p,nx,nn,np,gradlike) c Binomial log-likelihood function c Updated 17/01/2007. DH. cf2py integer dimension(nx),intent(in) :: x cf2py integer dimension(nn),intent(in) :: n cf2py double precision dimension(np),intent(in) :: p cf2py integer intent(hide),depend(x) :: nx=len(x) cf2py integer intent(hide),depend(n),check(nn==1 || nn==len(x)) :: nn=len(n) cf2py integer intent(hide),depend(p),check(np==1 || np==len(x)) :: np=len(p) cf2py double precision dimension(np), intent(out) :: gradlike cf2py threadsafe IMPLICIT NONE INTEGER nx,nn,np,i DOUBLE PRECISION gradlike(np), p(np) INTEGER x(nx),n(nn) LOGICAL not_scalar_n,not_scalar_p INTEGER ntmp DOUBLE PRECISION ptmp DOUBLE PRECISION factln DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) not_scalar_n = (nn .NE. 1) not_scalar_p = (np .NE. 1) ntmp = n(1) ptmp = p(1) do i =1,nx if (not_scalar_n) ntmp = n(i) if ((x(i).LT.0).OR.(ntmp.LT.0) .OR.(x(i) .GT. ntmp)) return enddo do i=1,nx if (not_scalar_n) ntmp = n(i) if (not_scalar_p) ptmp = p(i) if ((ptmp .LE. 0.0D0) .OR. (ptmp .GE. 1.0D0)) then ! if p = 0, number of successes must be 0 if (ptmp .EQ. 0.0D0) then if (x(i) .GT. 0.0D0) return else if (ptmp .EQ. 1.0D0) then ! if p = 1, number of successes must be n if (x(i) .LT. ntmp) RETURN else RETURN endif endif enddo do i=1,nx if (not_scalar_n) ntmp = n(i) if (not_scalar_p) ptmp = p(i) if ((ptmp .LE. 0.0D0) .OR. (ptmp .GE. 1.0D0)) then gradlike(i) = 0d0 else gradlike(i) = x(i) / ptmp - (ntmp - x(i))/(1d0 -ptmp) endif enddo return END SUBROUTINE bernoulli(x,p,nx,np,like) c Modified on Jan 16 2007 by D. Huard to allow scalar p. cf2py logical dimension(nx),intent(in) :: x cf2py double precision dimension(np),intent(in) :: p cf2py integer intent(hide),depend(x) :: nx=len(x) cf2py integer intent(hide),depend(p),check(len(p)==1 || len(p)==len(x)):: np=len(p) cf2py double precision intent(out) :: like cf2py threadsafe IMPLICIT NONE INTEGER np,nx,i DOUBLE PRECISION p(np), ptmp, like LOGICAL x(nx) LOGICAL not_scalar_p DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) C Check parameter size not_scalar_p = (np .NE. 1) like = 0.0 ptmp = p(1) do i=1,nx if (not_scalar_p) ptmp = p(i) if (ptmp .LT. 0.0) then like = -infinity RETURN endif if (x(i)) then like = like + dlog(ptmp) else like = like + dlog(1.0D0 - ptmp) endif enddo return END SUBROUTINE bern_grad_p(x,p,nx,np,grad_like) c Modified on Jan 16 2007 by D. Huard to allow scalar p. cf2py logical dimension(nx),intent(in) :: x cf2py double precision dimension(np),intent(in) :: p cf2py integer intent(hide),depend(x) :: nx=len(x) cf2py integer intent(hide),depend(p),check(len(p)==1 || len(p)==len(x)):: np=len(p) cf2py double precision dimension(np),intent(out) :: grad_like cf2py threadsafe IMPLICIT NONE INTEGER np,nx,i DOUBLE PRECISION p(np), ptmp, glike, grad_like(np) LOGICAL x(nx) LOGICAL not_scalar_p DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) C Check parameter size not_scalar_p = (np .NE. 1) ptmp = p(1) do i=1,np if (p(i) .LT. 0.0 .OR. p(i) .GT. 1.0) return enddo do i=1,nx if (not_scalar_p) ptmp = p(i) if (x(i)) then glike = 1.0D0 / ptmp else glike = -1.0D0 / (1.0D0 - ptmp) endif if (not_scalar_p) then grad_like(i) = glike else grad_like(1) = grad_like(1) + glike endif enddo return END SUBROUTINE beta_like(x,alpha,beta,nx,na,nb,like) c Beta log-likelihood function c Modified by D. Huard on Jan 17 2007 to accept scalar parameters. c Renamed to use alpha and beta arguments for compatibility with c random.beta. cf2py double precision dimension(nx),intent(in) :: x cf2py double precision dimension(na),intent(in) :: alpha cf2py double precision dimension(nb),intent(in) :: beta cf2py integer intent(hide),depend(x) :: nx=len(x) cf2py integer intent(hide),depend(alpha),check(na==1 || na==len(x)) :: na=len(alpha) cf2py integer intent(hide),depend(beta),check(nb==1 || nb==len(x)) :: nb=len(beta) cf2py double precision intent(out) :: like cf2py threadsafe IMPLICIT NONE INTEGER i,nx,na,nb DOUBLE PRECISION like DOUBLE PRECISION x(nx),alpha(na),beta(nb), atmp, btmp DOUBLE PRECISION gammln DOUBLE PRECISION infinity, e, zero, one PARAMETER (infinity = 1.7976931348623157d308) data e/1.0d-9/, zero/0.0d0/, one/1.0d0/ atmp = alpha(1) btmp = beta(1) like = 0.0 do i=1,nx if (na .NE. 1) atmp = alpha(i) if (nb .NE. 1) btmp = beta(i) if ((atmp .LE. 0.0) .OR. (btmp .LE. 0.0)) then like = -infinity RETURN endif if ((x(i) .LE. 0.0) .OR. (x(i) .GE. 1.0)) then like = -infinity RETURN endif like =like + (gammln(atmp+btmp) - gammln(atmp) - gammln(btmp)) like =like + (atmp-one)*dlog(x(i)) + (btmp-one)*dlog(one-x(i)) enddo return END SUBROUTINE beta_grad_x(x,alpha,beta,nx,na,nb,gradlikex) c Beta log-likelihood function c Modified by D. Huard on Jan 17 2007 to accept scalar parameters. c Renamed to use alpha and beta arguments for compatibility with c random.beta. cf2py double precision dimension(nx),intent(in) :: x cf2py double precision dimension(na),intent(in) :: alpha cf2py double precision dimension(nb),intent(in) :: beta cf2py integer intent(hide),depend(x) :: nx=len(x) cf2py integer intent(hide),depend(alpha),check(na==1 || na==len(x)) :: na=len(alpha) cf2py integer intent(hide),depend(beta),check(nb==1 || nb==len(x)) :: nb=len(beta) cf2py double precision dimension(nx),intent(out):: gradlikex cf2py threadsafe IMPLICIT NONE INTEGER i,nx,na,nb DOUBLE PRECISION gradlikex(nx), gradx DOUBLE PRECISION x(nx),alpha(na),beta(nb), atmp, btmp DOUBLE PRECISION psi DOUBLE PRECISION infinity, e, zero, one PARAMETER (infinity = 1.7976931348623157d308) data e/1.0d-9/, zero/0.0d0/, one/1.0d0/ atmp = alpha(1) btmp = beta(1) gradx = 0.0 do i=1,na if (alpha(i) .LE. 0.0) return enddo do i=1,nb if (beta(i) .LE. 0.0) return enddo do i=1,nx if ((x(i) .LE. 0.0) .OR. (x(i) .GE. 1.0)) return enddo do i=1,nx if (na .NE. 1) atmp = alpha(i) if (nb .NE. 1) btmp = beta(i) gradlikex(i) = (atmp - 1)/x(i) - (btmp - 1)/(1 - x(i)) enddo return END SUBROUTINE beta_grad_a(x,alpha,beta,nx,na,nb,gradlikea) c Beta log-likelihood function c Modified by D. Huard on Jan 17 2007 to accept scalar parameters. c Renamed to use alpha and beta arguments for compatibility with c random.beta. cf2py double precision dimension(nx),intent(in) :: x cf2py double precision dimension(na),intent(in) :: alpha cf2py double precision dimension(nb),intent(in) :: beta cf2py integer intent(hide),depend(x) :: nx=len(x) cf2py integer intent(hide),depend(alpha),check(na==1 || na==len(x)) :: na=len(alpha) cf2py integer intent(hide),depend(beta),check(nb==1 || nb==len(x)) :: nb=len(beta) cf2py double precision dimension(na),intent(out):: gradlikea cf2py threadsafe IMPLICIT NONE INTEGER i,nx,na,nb DOUBLE PRECISION gradlikea(na), grada DOUBLE PRECISION x(nx),alpha(na),beta(nb), atmp, btmp DOUBLE PRECISION psi DOUBLE PRECISION infinity, e, zero, one PARAMETER (infinity = 1.7976931348623157d308) data e/1.0d-9/, zero/0.0d0/, one/1.0d0/ atmp = alpha(1) btmp = beta(1) grada = 0.0 do i=1,na if (alpha(i) .LE. 0.0) return enddo do i=1,nb if (beta(i) .LE. 0.0) return enddo do i=1,nx if ((x(i) .LE. 0.0) .OR. (x(i) .GE. 1.0)) return enddo do i=1,nx if (na .NE. 1) atmp = alpha(i) if (nb .NE. 1) btmp = beta(i) grada = dlog(x(i)) - psi(atmp) + psi(atmp + btmp) if (na .NE. 1) then gradlikea(i) = grada else gradlikea(1) = gradlikea(1) + grada endif enddo return END SUBROUTINE beta_grad_b(x,alpha,beta,nx,na,nb,gradlikeb) c Beta log-likelihood function c Modified by D. Huard on Jan 17 2007 to accept scalar parameters. c Renamed to use alpha and beta arguments for compatibility with c random.beta. cf2py double precision dimension(nx),intent(in) :: x cf2py double precision dimension(na),intent(in) :: alpha cf2py double precision dimension(nb),intent(in) :: beta cf2py integer intent(hide),depend(x) :: nx=len(x) cf2py integer intent(hide),depend(alpha),check(na==1 || na==len(x)) :: na=len(alpha) cf2py integer intent(hide),depend(beta),check(nb==1 || nb==len(x)) :: nb=len(beta) cf2py double precision dimension(nb),intent(out):: gradlikeb cf2py threadsafe IMPLICIT NONE INTEGER i,nx,na,nb DOUBLE PRECISION gradlikeb(nb), gradb DOUBLE PRECISION x(nx),alpha(na),beta(nb), atmp, btmp DOUBLE PRECISION psi DOUBLE PRECISION infinity, e, zero, one PARAMETER (infinity = 1.7976931348623157d308) data e/1.0d-9/, zero/0.0d0/, one/1.0d0/ atmp = alpha(1) btmp = beta(1) gradb = 0.0 do i=1,na if (alpha(i) .LE. 0.0) return enddo do i=1,nb if (beta(i) .LE. 0.0) return enddo do i=1,nx if ((x(i) .LE. 0.0) .OR. (x(i) .GE. 1.0)) then RETURN endif enddo do i=1,nx if (na .NE. 1) atmp = alpha(i) if (nb .NE. 1) btmp = beta(i) gradb = dlog(1 - x(i)) - psi(btmp) + psi(atmp + btmp) if (nb .NE. 1) then gradlikeb(i) = gradb else gradlikeb(1) = gradlikeb(1) + gradb endif enddo return END SUBROUTINE betabin_like(x,alpha,beta,n,nx,na,nb,nn,like) c Beta-binomial log-likelihood function cf2py integer dimension(nx),intent(in) :: x cf2py double precision dimension(na),intent(in) :: alpha cf2py double precision dimension(nb),intent(in) :: beta cf2py integer dimension(nn),intent(in) :: n cf2py integer intent(hide),depend(x) :: nx=len(x) cf2py integer intent(hide),depend(alpha),check(na==1 || na==len(x)) :: na=len(alpha) cf2py integer intent(hide),depend(beta),check(nb==1 || nb==len(x)) :: nb=len(beta) cf2py integer intent(hide),depend(n),check(nn==1 || nn==len(x)) :: nn=len(n) cf2py double precision intent(out) :: like cf2py threadsafe IMPLICIT NONE INTEGER i,nx,na,nb,nn DOUBLE PRECISION like DOUBLE PRECISION alpha(na),beta(nb) INTEGER x(nx),n(nn) DOUBLE PRECISION atmp,btmp,ntmp DOUBLE PRECISION gammln DOUBLE PRECISION infinity,one PARAMETER (infinity = 1.7976931348623157d308) data one/1.0d0/ atmp = alpha(1) btmp = beta(1) ntmp = n(1) like = 0.0 do i=1,nx if (na .NE. 1) atmp = alpha(i) if (nb .NE. 1) btmp = beta(i) if (nn .NE. 1) ntmp = n(i) if ((atmp.LE.0.0).OR.(btmp.LE.0.0).OR.(ntmp.LE.0)) then like = -infinity RETURN endif if (x(i) .LT. 0) then like = -infinity RETURN endif like =like + gammln(atmp+btmp) like =like - gammln(atmp) - gammln(btmp) like =like + gammln(ntmp+one) like =like - gammln(x(i)+one) - gammln(ntmp-x(i)+one) like =like + gammln(atmp+x(i)) + gammln(ntmp+btmp-x(i)) like =like - gammln(atmp+btmp+ntmp) enddo return END SUBROUTINE betabin_ga(x,alpha,beta,n,nx,na,nb,nn,gradlike) c Beta-binomial log-likelihood function cf2py integer dimension(nx),intent(in) :: x cf2py double precision dimension(na),intent(in) :: alpha cf2py double precision dimension(nb),intent(in) :: beta cf2py integer dimension(nn),intent(in) :: n cf2py integer intent(hide),depend(x) :: nx=len(x) cf2py integer intent(hide),depend(alpha),check(na==1 || na==len(x)) :: na=len(alpha) cf2py integer intent(hide),depend(beta),check(nb==1 || nb==len(x)) :: nb=len(beta) cf2py integer intent(hide),depend(n),check(nn==1 || nn==len(x)) :: nn=len(n) cf2py double precision dimension(na), intent(out) :: gradlike cf2py threadsafe IMPLICIT NONE INTEGER i,nx,na,nb,nn DOUBLE PRECISION gradlike(na), grad DOUBLE PRECISION alpha(na),beta(nb) INTEGER x(nx),n(nn) DOUBLE PRECISION atmp,btmp,ntmp DOUBLE PRECISION gammln, psi DOUBLE PRECISION infinity,one PARAMETER (infinity = 1.7976931348623157d308) data one/1.0d0/ atmp = alpha(1) btmp = beta(1) ntmp = n(1) do i = 1,na if (alpha(i) .LE. 0.0) return enddo do i = 1,nb if (beta(i) .LE. 0.0) return enddo do i = 1,nn if (n(i) .LE. 0) return enddo do i = 1,nx if (x(i) .LT. 0) return enddo do i=1,nx if (na .NE. 1) atmp = alpha(i) if (nb .NE. 1) btmp = beta(i) if (nn .NE. 1) ntmp = n(i) grad=psi(atmp+btmp)-psi(atmp)+ + psi(atmp+x(i))-psi(atmp+btmp+ntmp) if (na .NE. 1) then gradlike(i) = grad else gradlike(1) = gradlike(1) + grad endif enddo return END SUBROUTINE betabin_gb(x,alpha,beta,n,nx,na,nb,nn,gradlike) c Beta-binomial log-likelihood function cf2py integer dimension(nx),intent(in) :: x cf2py double precision dimension(na),intent(in) :: alpha cf2py double precision dimension(nb),intent(in) :: beta cf2py integer dimension(nn),intent(in) :: n cf2py integer intent(hide),depend(x) :: nx=len(x) cf2py integer intent(hide),depend(alpha),check(na==1 || na==len(x)) :: na=len(alpha) cf2py integer intent(hide),depend(beta),check(nb==1 || nb==len(x)) :: nb=len(beta) cf2py integer intent(hide),depend(n),check(nn==1 || nn==len(x)) :: nn=len(n) cf2py double precision dimension(nb), intent(out) :: gradlike cf2py threadsafe IMPLICIT NONE INTEGER i,nx,na,nb,nn DOUBLE PRECISION gradlike(nb), grad DOUBLE PRECISION alpha(na),beta(nb) INTEGER x(nx),n(nn) DOUBLE PRECISION atmp,btmp,ntmp DOUBLE PRECISION gammln, psi DOUBLE PRECISION infinity,one PARAMETER (infinity = 1.7976931348623157d308) data one/1.0d0/ atmp = alpha(1) btmp = beta(1) ntmp = n(1) do i = 1,na if (alpha(i) .LE. 0.0) return enddo do i = 1,nb if (beta(i) .LE. 0.0) return enddo do i = 1,nn if (n(i) .LE. 0) return enddo do i = 1,nx if (x(i) .LT. 0) return enddo do i=1,nx if (na .NE. 1) atmp = alpha(i) if (nb .NE. 1) btmp = beta(i) if (nn .NE. 1) ntmp = n(i) grad =psi(atmp+btmp)+ psi(ntmp + btmp - x(i)) + -psi(atmp +btmp+ntmp) if (na .NE. 1) then gradlike(i) = grad else gradlike(1) = gradlike(1) + grad endif enddo return END SUBROUTINE mvhyperg(x,color,k,like) c Multivariate hypergeometric log-likelihood function c Using the analogy of an urn filled with balls of different colors, c the mv hypergeometric distribution describes the probability of c drawing x(i) balls of a given color. c c x : (array) Number of draws for each color. c color : (array) Number of balls of each color. c Total number of draws = sum(x) c Total number of balls in the urn = sum(color) cf2py integer dimension(k),intent(in) :: x,color cf2py integer intent(hide),depend(x) :: k=len(x) cf2py double precision intent(out) :: like cf2py threadsafe INTEGER x(k),color(k) INTEGER d,total,i,k DOUBLE PRECISION like DOUBLE PRECISION factln DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) total = 0 d = 0 like = 0.0 do i=1,k c Combinations of x balls of color i like = like + factln(color(i))-factln(x(i)) +-factln(color(i)-x(i)) if ((color(i) .LT. 0.0) .OR. (x(i) .LT. 0.0)) then like = -infinity RETURN endif d = d + x(i) total = total + color(i) enddo if (total .LE. 0.0) then like = -infinity RETURN endif c Combinations of d draws from total like = like - (factln(total)-factln(d)-factln(total-d)) return END SUBROUTINE dirmultinom(x,theta,k,like) c Dirichlet-multinomial log-likelihood function cf2py integer dimension(k),intent(in) :: x cf2py double precision dimension(k),intent(in) :: theta cf2py double precision intent(out) :: like cf2py integer intent(hide),depend(x) :: k=len(x) cf2py threadsafe INTEGER i,k,sumx INTEGER x(k) DOUBLE PRECISION like,sumt DOUBLE PRECISION theta(k) DOUBLE PRECISION factln, gammln DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) like = 0.0 sumt = 0.0 sumx = 0 do 222 i=1,k c kernel of distribution like = like + dlog(x(i) + theta(i)) - dlog(theta(i)) sumt = sumt + theta(i) sumx = sumx + x(i) if ((theta(i) .LT. 0.0) .OR. (x(i) .LT. 0.0)) then like = -infinity RETURN endif 222 continue c normalizing constant if ((sumx .LE. 0.0) .OR. (sumt .LE. 0.0)) then like = -infinity RETURN endif like = like + factln(sumx) like = like + gammln(sumt) like = like - gammln(sumx + sumt) return END SUBROUTINE wishart(X,k,n,sigma,like) c Wishart log-likelihood function cf2py double precision dimension(k,k),intent(in) :: X,sigma cf2py double precision intent(in) :: n cf2py double precision intent(out) :: like cf2py integer intent(hide),depend(X) :: k=len(X) cf2py threadsafe INTEGER i,k DOUBLE PRECISION X(k,k),sigma(k,k),bx(k,k) DOUBLE PRECISION dx,n,db,tbx,a,g,like DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) c determinants call dtrm(X,k,dx) call dtrm(sigma,k,db) c trace of sigma*X call matmult(sigma,X,bx,k,k,k,k) call trace(bx,k,tbx) if ((dx .LE. 0.0) .OR. (db .LE. 0.0)) then like = -infinity RETURN endif if (k .GT. n) then like = -infinity RETURN endif like = (n - k - 1)/2.0 * dlog(dx) like = like + (n/2.0)*dlog(db) like = like - 0.5*tbx like = like - (n*k/2.0)*dlog(2.0d0) do i=1,k a = (n - i + 1)/2.0 call gamfun(a, g) like = like - dlog(g) enddo return END SUBROUTINE trace(mat,k,tr) c matrix trace (sum of diagonal elements) INTEGER k,i DOUBLE PRECISION mat(k,k),tr tr = 0.0 do i=1,k tr = tr + mat(k,k) enddo return END SUBROUTINE gamfun(xx,gx) c Return the logarithm of the gamma function c Corresponds to scipy.special.gammaln cf2py double precision intent(in) :: xx cf2py double precision intent(out) :: gx cf2py threadsafe INTEGER i DOUBLE PRECISION x,xx,ser,tmp,gx DIMENSION coeff(6) DATA coeff/76.18009173,-86.50532033,24.01409822, +-1.231739516,0.00120858003,-0.00000536382/ x = xx tmp = x + 5.5 tmp = tmp - (x+0.5) * dlog(tmp) ser = 1.000000000190015 do i=1,6 x = x+1 ser = ser + coeff(i)/x enddo gx = -tmp + dlog(2.50662827465*ser/xx) return END double precision function gammds (y,p,ifault) cf2py double precision intent(in) :: y,p,ifault cf2py double precision intent(out) :: gammds cf2py threadsafe c c Algorithm AS 147 Appl. Statist. (1980) Vol. 29, No. 1 c c Computes the incomplete gamma integral for positive c parameters y,p using an infinite series c c Auxiliary function required: ALNGAM = CACM algorithm 291 c c AS239 should be considered as an alternative to AS147 c implicit double precision (a-h,o-z) data e/1.0d-9/, zero/0.0d0/, one/1.0d0/, uflo/1.0d-37/ c c Checks admissibility of arguments and value of f c ifault = 1 gammds = zero if(y.le.zero .or. p.le.zero) return ifault = 2 c c alngam is natural log of gamma function c arg = p*log(y)-gammln(p+one)-y if(arg.lt.log(uflo)) return f = exp(arg) if(f.eq.zero) return ifault = 0 c c Series begins c c = one gammds = one a = p 1 a = a+one c = c*y/a gammds = gammds+c if (c/gammds.gt.e) goto 1 gammds = gammds*f return end double precision function psi(x) c taken from c Bernardo, J. M. (1976). Algorithm AS 103: Psi (Digamma) Function. Applied Statistics. 25 (3), 315-317. c http://www.uv.es/~bernardo/1976AppStatist.pdf cf2py double precision intent(in) :: x cf2py double precision intent(out) :: psi double precision x, y, R DATA S /1.0e-5/, C /8.5/ S3 /8.333333333e-2/ DATA S4 /8.333333333e-3/, S5 /3.968253968e-3/ DATA D1 /-0.5772156649/ psi = 0 y = x if (y .LE. 0.0) return if (y .LE. S) then psi = d1 - 1.0/y return endif do while (y .LT. C) psi = psi - 1.0 / y y = y + 1 enddo R= 1.0 / y psi = psi + dlog(y) - .5 * R R= R*R psi = psi - R * (S3 - R * (S4 - R * S5)) return end SUBROUTINE gser(gamser,a,x,gln) INTEGER ITMAX DOUBLE PRECISION a,gamser,gln,x,EPS PARAMETER (ITMAX=100,EPS=3.e-7) C USES gammln C Returns the incomplete gamma function P (a, x) evaluated by its series representation as C gamser. Also returns ln Γ(a) as gln. INTEGER n DOUBLE PRECISION ap,del,sum,gammln gln=gammln(a) if(x.le.0.)then if(x.lt.0.) write (*,*) 'x < 0 in gser' gamser=0. return endif ap=a sum=1./a del=sum do n=1,ITMAX ap=ap+1. del=del*x/ap sum=sum+del if (abs(del).lt.abs(sum)*EPS) goto 1 enddo write (*,*) 'a too large, ITMAX too small in gser' 1 gamser=sum*exp(-x+a*log(x)-gln) return END SUBROUTINE gcf(gammcf,a,x,gln) INTEGER ITMAX DOUBLE PRECISION a,gammcf,gln,x,EPS,FPMIN PARAMETER (ITMAX=100,EPS=3.e-7,FPMIN=1.e-30) C USES gammln C Returns the incomplete gamma function Q(a, x) evaluated by its continued fraction C representation as gammcf. Also returns ln Γ(a) as gln. C Parameters: ITMAX is the maximum allowed number of iterations; EPS is the relative C accuracy; FPMIN is a number near the smallest representable floating-point number. INTEGER i DOUBLE PRECISION an,b,c,d,del,h,gammln gln=gammln(a) b=x+1.-a c=1./FPMIN d=1./b h=d do i=1,ITMAX an=-i*(i-a) b=b+2. d=an*d+b if(abs(d).lt.FPMIN)d=FPMIN c=b+an/c if(abs(c).lt.FPMIN)c=FPMIN d=1./d del=d*c h=h*del if(abs(del-1.).lt.EPS)goto 1 enddo write (*,*) 'a too large, ITMAX too small in gcf' 1 gammcf=exp(-x+a*log(x)-gln)*h return END FUNCTION gammq(a,x) cf2py double precision intent(in) :: a,x cf2py double precision intent(out) :: gammaq cf2py threadsafe DOUBLE PRECISION a,gammq,x C USES gcf,gser C Returns the incomplete gamma function Q(a, x) ≡ 1 − P (a, x). DOUBLE PRECISION gammcf,gamser,gln if(x.lt.0..or.a.le.0.) write (*,*) 'bad arguments in gammq' if(x.lt.a+1.)then C Use the series representation call gser(gamser,a,x,gln) gammq=1.-gamser else C Use the continued fraction representation. call gcf(gammcf,a,x,gln) gammq=gammcf endif return END SUBROUTINE trans(mat,tmat,m,n) c matrix transposition cf2py double precision dimension(m,n),intent(in) :: mat cf2py double precision dimension(n,m),intent(out) :: tmat cf2py integer intent(hide),depend(mat) :: m=len(mat) cf2py integer intent(hide),depend(mat) :: n=shape(mat,1) cf2py threadsafe INTEGER i,j,m,n DOUBLE PRECISION mat(m,n),tmat(n,m) do 88 i=1,m do 99 j=1,n tmat(j,i) = mat(i,j) 99 continue 88 continue return END SUBROUTINE matmult(mat1, mat2, prod, m, n, p, q) c matrix multiplication cf2py double precision dimension(m,q),intent(out) :: prod cf2py double precision dimension(m,n),intent(in) :: mat1 cf2py double precision dimension(p,q),intent(in) :: mat2 cf2py integer intent(hide),depend(mat1) :: m=len(mat1),n=shape(mat1,1) cf2py integer intent(hide),depend(mat2) :: p=len(mat2),q=shape(mat2,1) cf2py threadsafe INTEGER i,j,k,m,n,p,q DOUBLE PRECISION mat1(m,n), mat2(p,q), prod(m,q) DOUBLE PRECISION sum if (n.eq.p) then do 30 i = 1,m do 20 j = 1,q sum = 0.0 do 10 k = 1,n sum = sum + mat1(i,k) * mat2(k,j) 10 continue prod(i,j) = sum 20 continue 30 continue else write (*,*) 'Matrix dimensions do not match' end if return END c Updated 10/24/2001. c ccccccccccccccccccccccccc Program 4.2 cccccccccccccccccccccccccc c cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc c c c Please Note: c c c c (1) This computer program is part of the book, "An Introduction to c c Computational Physics," written by Tao Pang and published and c c copyrighted by Cambridge University Press in 1997. c c c c (2) No warranties, express or implied, are made for this program. c c c cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc c SUBROUTINE DTRM(A,N,D) C C Subroutine for evaluating the determinant of a matrix using C the partial-pivoting Gaussian elimination scheme. C cf2py double precision dimension(N,N),intent(in) :: A cf2py double precision intent(out) :: D cf2py integer intent(hide),depend(A) :: N=len(A) cf2py threadsafe DOUBLE PRECISION A(N,N), D INTEGER INDX(N) CALL ELGS(A,N,INDX) C D = 1.0 DO 100 I = 1, N D = D*A(INDX(I),I) 100 CONTINUE C MSGN = 1 DO 200 I = 1, N DO 150 WHILE (I.NE.INDX(I)) MSGN = -MSGN J = INDX(I) INDX(I) = INDX(J) INDX(J) = J 150 END DO 200 CONTINUE D = MSGN*D RETURN END SUBROUTINE ELGS(A,N,INDX) C Subroutine to perform the partial-pivoting Gaussian elimination. C A(N,N) is the original matrix in the input and transformed C matrix plus the pivoting element ratios below the diagonal in C the output. INDX(N) records the pivoting order. DOUBLE PRECISION A(N,N),C(N),C1,PI,PJ,PI1 INTEGER N INTEGER INDX(N) C Initialize the index DO 50 I = 1, N INDX(I) = I 50 CONTINUE C Find the rescaling factors, one from each row DO 100 I = 1, N C1= 0.0 DO 90 J = 1, N C1 = MAX(C1,ABS(A(I,J))) 90 CONTINUE C(I) = C1 100 CONTINUE C Search the pivoting (largest) element from each column DO 200 J = 1, N-1 PI1 = 0.0 DO 150 I = J, N PI = ABS(A(INDX(I),J))/C(INDX(I)) IF (PI.GT.PI1) THEN PI1 = PI K = I ELSE ENDIF 150 CONTINUE C Interchange the rows via INDX(N) to record pivoting order ITMP = INDX(J) INDX(J) = INDX(K) INDX(K) = ITMP DO 170 I = J+1, N PJ = A(INDX(I),J)/A(INDX(J),J) C Record pivoting ratios below the diagonal A(INDX(I),J) = PJ C Modify other elements accordingly DO 160 K = J+1, N A(INDX(I),K) = A(INDX(I),K)-PJ*A(INDX(J),K) 160 CONTINUE 170 CONTINUE 200 CONTINUE RETURN END FUNCTION bico(n,k) C USES factln Returns the binomial coefficient as a C floating point number. INTEGER k,n DOUBLE PRECISION bico DOUBLE PRECISION factln C The nearest-integer function cleans up roundoff error C for smaller values of n and k. bico=nint(dexp(factln(n)-factln(k)-factln(n-k))) return END subroutine chol(n,a,c) c...perform a Cholesky decomposition of matrix a, returned as c implicit double precision (a-h,o-z) double precision c(n,n),a(n,n) cf2py double precision dimension(n,n),intent(in) :: a cf2py double precision dimension(n,n),intent(out) :: c cf2py integer intent(in),depend(a) :: n=len(a) cf2py threadsafe c(1,1) = sqrt(a(1,1)) do i=2,n c(i,1) = a(i,1) / c(1,1) enddo do j=2,n do i=j,n s = a(i,j) do k=1,j-1 s = s - c(i,k) * c(j,k) enddo if(i .eq. j) then c(j,j) = sqrt(s) else c(i,j) = s / c(j,j) c(j,i) = 0.d0 endif enddo enddo return end SUBROUTINE hermpoly( n, x, cx ) C******************************************************************************* C CC HERMPOLY evaluates the Hermite polynomials at X. C C Differential equation: C C Y'' - 2 X Y' + 2 N Y = 0 C C First terms: C C 1 C 2 X C 4 X**2 - 2 C 8 X**3 - 12 X C 16 X**4 - 48 X**2 + 12 C 32 X**5 - 160 X**3 + 120 X C 64 X**6 - 480 X**4 + 720 X**2 - 120 C 128 X**7 - 1344 X**5 + 3360 X**3 - 1680 X C 256 X**8 - 3584 X**6 + 13440 X**4 - 13440 X**2 + 1680 C 512 X**9 - 9216 X**7 + 48384 X**5 - 80640 X**3 + 30240 X C 1024 X**10 - 23040 X**8 + 161280 X**6 - 403200 X**4 + 302400 X**2 - 30240 C C Recursion: C C H(0,X) = 1, C H(1,X) = 2*X, C H(N,X) = 2*X * H(N-1,X) - 2*(N-1) * H(N-2,X) C C Norm: C C Integral ( -Infinity < X < Infinity ) exp ( - X**2 ) * H(N,X)**2 dX C = sqrt ( PI ) * 2**N * N! C C H(N,X) = (-1)**N * exp ( X**2 ) * dn/dXn ( exp(-X**2 ) ) C C Modified: C C 01 October 2002 C C Author: C C John Burkardt C C Reference: C C Milton Abramowitz and Irene Stegun, C Handbook of Mathematical Functions, C US Department of Commerce, 1964. C C Larry Andrews, C Special Functions of Mathematics for Engineers, C Second Edition, C Oxford University Press, 1998. C C Parameters: C C Input, integer N, the highest order polynomial to compute. C Note that polynomials 0 through N will be computed. C C Input, double precision ( kind = 8 ) X, the point at which the polynomials are C to be evaluated. C C Output, double precision ( kind = 8 ) CX(0:N), the values of the first N+1 Hermite C polynomials at the point X. C cf2py double precision intent(in) :: x cf2py integer intent(in) :: n cf2py double precision dimension(n+1),intent(out) :: cx cf2py threadsafe integer n,i double precision cx(n+1) double precision x if ( n < 0 ) then return end if cx(1) = 1.0 if ( n == 0 ) then return end if cx(2) = 2.0 * x do i = 3, n+1 cx(i) = 2.0 * x * cx(i-1) - 2.0 * real(i - 1) * cx(i-2) end do return end ! double precision function uniform() ! c ! c Generate uniformly distributed random numbers using the 32-bit ! c generator from figure 3 of: ! c L`Ecuyer, P. Efficient and portable combined random number ! c generators, C.A.C.M., vol. 31, 742-749 & 774-?, June 1988. ! c ! c The cycle length is claimed to be 2.30584E+18 ! c ! c Seeds can be set by calling the routine set_uniform ! c ! c It is assumed that the Fortran compiler supports long variable ! c names, and integer*4. ! c ! integer*4 z, k, s1, s2 ! common /unif_seeds/ s1, s2 ! save /unif_seeds/ ! c ! k = s1 / 53668 ! s1 = 40014 * (s1 - k * 53668) - k * 12211 ! if (s1 .lt. 0) s1 = s1 + 2147483563 ! c ! k = s2 / 52774 ! s2 = 40692 * (s2 - k * 52774) - k * 3791 ! if (s2 .lt. 0) s2 = s2 + 2147483399 ! c ! if (z .lt. 1) z = z + 2147483562 ! c ! uniform = z / 2147483563. ! return ! end subroutine set_uniform(seed1, seed2) c c Set seeds for the uniform random number generator. c integer*4 s1, s2, seed1, seed2 common /unif_seeds/ s1, s2 save /unif_seeds/ s1 = seed1 s2 = seed2 return END ! ! SUBROUTINE categorical(x,n,hist,k,mn,step,logp) ! ! cf2py intent(out) logp ! cf2py intent(hide) n,k ! ! DOUBLE PRECISION hist(k),logp,x(n),mn,step,nrm ! INTEGER n,k,i,j ! DOUBLE PRECISION infinity ! PARAMETER (infinity = 1.7976931348623157d308) ! LOGICAL match ! ! logp = 0.0D0 ! nrm = 0.0D0 ! do i=1,k ! nrm = nrm + hist(k) ! end do ! if (dabs(nrm-0.0D0).GT.1.0D-7) then ! logp = -infinity ! return ! end if ! ! do i=1,n ! match = .FALSE. ! ! j = int(x(i)-mn/step)+1 ! logp = logp + dlog(hist(j)) ! ! end do ! ! return ! END ! ! SUBROUTINE categorical(x,p,n,k,like) ! ! c Categorical log-likelihood function ! c Need to return -Infs when appropriate ! ! cf2py integer dimension(n),intent(in) :: x ! cf2py double precision dimension(k-1),intent(in) :: p ! cf2py integer intent(hide),depend(x) :: n=len(x) ! cf2py integer intent(hide),depend(p) :: k=len(p)+1 ! cf2py double precision intent(out) :: like ! cf2py threadsafe ! ! DOUBLE PRECISION p(k),val,like ! INTEGER x(n) ! INTEGER n,k,i,j ! DOUBLE PRECISION infinity, sump ! PARAMETER (infinity = 1.7976931348623157d308) ! ! like = 0.0 ! sump = 0.0 ! do j=1,k-1 ! sump = sump + p(j) ! end do ! c loop over number of elements in x ! do i=1,n ! c elements should not be larger than the largest index ! if ((x(i).GT.(k-1)).OR.(x(i).LT.0)) then ! like = -infinity ! RETURN ! endif ! c increment log-likelihood ! if (x(i).eq.(k-1)) then ! c likelihood of the kth element ! like = like + dlog(1.0D0-sump) ! else ! like = like + dlog(p(x(i)+1)) ! endif ! enddo ! return ! END SUBROUTINE categorical(x,p,nx,np,k,like) c Categorical log-likelihood function cf2py integer dimension(nx), intent(in) :: x cf2py double precision dimension(np,k), intent(in) :: p cf2py integer intent(hide), depend(p) :: np=shape(p, 0) cf2py integer intent(hide), depend(x) :: nx=len(x) cf2py integer intent(hide), depend(p) :: k=shape(p, 1) cf2py double precision intent(out) :: like cf2py threadsafe DOUBLE PRECISION like, factln, infinity, sump DOUBLE PRECISION p(np,k), p_tmp(k) INTEGER i,j,n_tmp INTEGER x(nx) PARAMETER (infinity = 1.7976931348623157d308) sump = 0.0 do i=1,k p_tmp(i) = p(1,i) sump = sump + p_tmp(i) enddo like = 0.0 do j=1,nx if (np .NE. 1) then sump = 0.0 do i=1,k p_tmp(i) = p(j,i) sump = sump + p_tmp(i) enddo endif c Protect against zero p[x] if (p_tmp(x(j)+1).LE.0.0D0) then like = -infinity RETURN end if c Category outside of set if ((x(j) .GT. k-1) .OR. (x(j) .LT. 0)) then like = -infinity RETURN end if like = like + dlog(p_tmp(x(j)+1)) enddo RETURN END SUBROUTINE rcat(p,s,k,n,rands) c Returns n samples from categorical random variable (histogram) cf2py double precision dimension(k-1),intent(in) :: p cf2py double precision dimension(n),intent(in) :: rands cf2py integer dimension(n),intent(out) :: s cf2py integer intent(hide),depend(p) :: k=len(p)+1 cf2py integer intent(hide),depend(rands) :: n=len(rands) cf2py threadsafe DOUBLE PRECISION p(k-1),sump,u,rands(n) INTEGER s(n) INTEGER n,k,i,j c repeat for n samples do i=1,n c initialize sum sump = p(1) c random number u = rands(i) c initialize index j = 0 c find index to value do while (u.gt.sump) j = j + 1 if (j.eq.(k-1)) then goto 1 endif sump = sump + p(j+1) enddo c assign value to array 1 s(i) = j enddo return END subroutine logit(theta,n,ltheta) c Maps (0,1) -> R. cf2py intent(hide) n cf2py intent(out) ltheta cf2py threadsafe DOUBLE PRECISION theta(n), ltheta(n) DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) INTEGER n, i do i=1,n if (theta(i).LE.0.0D0) then ltheta(i) = -infinity else if (theta(i).GE.1.0D0) then ltheta(i) = infinity else ltheta(i) = dlog(theta(i) / (1.0D0-theta(i))) endif end do RETURN END c subroutine invlogit(ltheta,n,theta) c Maps R -> (0,1). cf2py intent(hide) n cf2py intent(out) theta cf2py threadsafe DOUBLE PRECISION theta(n), ltheta(n) DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) INTEGER n, i do i=1,n theta(i) = 1.0D0 / (1.0D0 + dexp(-ltheta(i))) end do RETURN END c subroutine stukel_logit(theta,n,ltheta,a1,a2,na1,na2) ! ! Reference: Therese A. Stukel, 'Generalized Logistic Models', ! JASA vol 83 no 402, pp.426-431 (June 1988) ! cf2py intent(hide) n, na1, na2 cf2py intent(out) ltheta cf2py intent(copy) theta cf2py threadsafe DOUBLE PRECISION theta(n), ltheta(n) DOUBLE PRECISION a1(na1), a2(na2), a1t, a2t LOGICAL a1_isscalar, a2_isscalar DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) INTEGER n, i, na1, na2 a1t = a1(1) a2t = a2(1) CALL logit(theta,n,ltheta) a1_isscalar = (na1.LT.n) a2_isscalar = (na2.LT.n) do i=1,n if (ltheta(i).GT.0.0D0) then if (.NOT.a1_isscalar) then a1t = a1(i) end if if (a1t.GT.0.0D0) then ltheta(i)=dlog(ltheta(i)*a1t+1.0D0)/a1t else if (a1t.LT.0.0D0) then ltheta(i) = (1.0D0-dexp(-ltheta(i)*a1t))/a1t end if else if (ltheta(i).LT.0.0D0) then if (.NOT.a2_isscalar) then a2t = a2(i) end if if (a2t.GT.0.0D0) then ltheta(i)=-dlog(-ltheta(i)*a2t+1.0D0)/a2t else if (a2t.LT.0.0D0) then ltheta(i)=-(1.0D0-dexp(ltheta(i)*a2t))/a2t end if else ltheta(i) = 0.0D0 end if end do RETURN END c subroutine stukel_invlogit(ltheta,n,theta,a1,a2,na1,na2) ! ! Reference: Therese A. Stukel, 'Generalized Logistic Models', ! JASA vol 83 no 402, pp.426-431 (June 1988) ! cf2py intent(hide) n, na1, na2 cf2py intent(out) theta cf2py intent(copy) ltheta cf2py threadsafe DOUBLE PRECISION theta(n), ltheta(n) DOUBLE PRECISION a1(na1), a2(na2), a1t, a2t LOGICAL a1_isscalar, a2_isscalar DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) INTEGER n, i, na1, na2 a1t = a1(1) a2t = a2(1) a1_isscalar = (na1.LT.n) a2_isscalar = (na2.LT.n) do i=1,n if (ltheta(i).GT.0.0D0) then if (.NOT.a1_isscalar) then a1t = a1(i) end if if (a1t.GT.0.0D0) then ltheta(i) = (dexp(a1t*ltheta(i))-1.0D0)/a1t else if (a1t.LT.0.0D0) then ltheta(i) = -dlog(1.0D0-a1t*ltheta(i))/a1t end if else if (ltheta(i).LT.0.0D0) then if (.NOT.a2_isscalar) then a2t = a2(i) end if if (a2t.GT.0.0D0) then ltheta(i) = -(dexp(-a2t*ltheta(i))-1.0D0)/a2t else if (a2t.LT.0.0D0) then ltheta(i) = dlog(1.0D0+a2t*ltheta(i))/a2t end if ! else ! ltheta(i) = 0.5D0 end if end do CALL invlogit(ltheta,n,theta) RETURN END c ! SUBROUTINE RNORM(U1, U2, rands) ! C ! C ALGORITHM AS 53.1 APPL. STATIST. (1972) VOL.21, NO.3 ! C ! C Sets U1 and U2 to two independent standardized random normal ! C deviates. This is a Fortran version of the method given in ! C Knuth(1969). ! C ! C Function RAND must give a result randomly and rectangularly ! C distributed between the limits 0 and 1 exclusive. ! C Note- this seems to be faster than Leva's algorithm from ! C ACM Trans Math Soft, Dec. 1992 - AP ! C ! DOUBLE PRECISION U1, U2 ! C ! C Local variables ! C ! DOUBLE PRECISION X, Y, S, ONE, TWO ! DOUBLE PRECISION rands(2) ! DATA ONE /1.0/, TWO /2.0/ ! C ! 1 X = rands(1) ! Y = rands(2) ! X = TWO * X - ONE ! Y = TWO * Y - ONE ! S = X * X + Y * Y ! IF (S .GT. ONE) GO TO 1 ! S = SQRT(- TWO * dlog(S) / S) ! U1 = X * S ! U2 = Y * S ! RETURN ! END ! wshrt is not used by anything ! SUBROUTINE WSHRT(D, N, NP, NNP, SB, SA, rnorms) ! C ! C ALGORITHM AS 53 APPL. STATIST. (1972) VOL.21, NO.3 ! C ! C Wishart variate generator. On output, SA is an upper-triangular ! C matrix of size NP * NP (written in linear form, column ordered) ! C whose elements have a Wishart(N, SIGMA) distribution. ! C ! C D is an upper-triangular array such that SIGMA = D'D (see AS 6) ! C ! C Auxiliary function required: a random no. generator called RAND. ! C The Wichmann & Hill generator is included here. It should be ! C initialized in the calling program. ! ! ! cf2py double precision dimension(NNP),intent(in) :: D ! cf2py double precision dimension(NNP),intent(out) :: SA ! cf2py double precision dimension(NNP),intent(hide) :: SB ! cf2py integer intent(hide),depend(D) :: NNP=len(D) ! cf2py integer intent(in) :: NP ! cf2py integer intent(in) :: N ! ! INTEGER N, NP, NNP ! DOUBLE PRECISION D(NNP), SB(NNP), SA(NNP) ! C ! C Local variables ! C ! INTEGER K, NS, I, J, NR, IP, NQ, II ! DOUBLE PRECISION DF, U1, U2, RN, C ! DOUBLE PRECISION ZERO, ONE, TWO, NINE ! DOUBLE PRECISION rnorms(NNP) ! DATA ZERO /0.0/, ONE /1.0/, TWO /2.0/, NINE /9.0/ ! C ! K = 1 ! C ! C Load SB with independent normal (0, 1) variates ! C ! ! 1 continue ! SB(K) = rnorms(k) ! K = K + 1 ! IF (K .GT. NNP) GO TO 2 ! SB(K) = rnorsm(k) ! K = K + 1 ! IF (K .LE. NNP) GO TO 1 ! 2 NS = 0 ! C ! C Load diagonal elements with square root of chi-square variates ! C ! DO 3 I = 1, NP ! DF = N - I + 1 ! NS = NS + I ! U1 = TWO / (NINE * DF) ! U2 = ONE - U1 ! U1 = SQRT(U1) ! C ! C Wilson-Hilferty formula for approximating chi-square variates ! C ! SB(NS) = SQRT(DF * (U2 + SB(NS) * U1)**3) ! 3 CONTINUE ! C ! RN = N ! NR = 1 ! DO 5 I = 1, NP ! NR = NR + I - 1 ! DO 5 J = I, NP ! IP = NR ! NQ = (J*J - J) / 2 + I - 1 ! C = ZERO ! DO 4 K = I, J ! IP = IP + K - 1 ! NQ = NQ + 1 ! C = C + SB(IP) * D(NQ) ! 4 CONTINUE ! SA(IP) = C ! 5 CONTINUE ! C ! DO 7 I = 1, NP ! II = NP - I + 1 ! NQ = NNP - NP ! DO 7 J = 1, I ! IP = (II*II - II) / 2 ! C = ZERO ! DO 6 K = I, NP ! IP = IP + 1 ! NQ = NQ + 1 ! C = C + SA(IP) * SA(NQ) ! 6 CONTINUE ! SA(NQ) = C / RN ! NQ = NQ - 2 * NP + I + J - 1 ! 7 CONTINUE ! C ! RETURN ! END ! C ! ! SUBROUTINE WSHRT_WRAP(DIN,N,NP,SAOUT,NNP,D,SA,SB) ! SUBROUTINE WSHRT_WRAP(DIN,N,NP,SAOUT,NNP) ! cf2py intent(out) SAOUT ! cf2py intent(hide) NP ! cf2py integer intent(hide),depend(NP)::NNP=NP*(NP+1)/2 ! INTEGER N, NP, NNP, i, j, ni ! DOUBLE PRECISION DIN(NP,NP), SAOUT(NP,NP) ! DOUBLE PRECISION D(NNP), SA(NNP), SB(NNP) ! ! ni=0 ! do i=1,np ! do j=i,np ! ni = ni + 1 ! D(ni) = DIN(j,i) ! end do ! end do ! ! CALL WSHRT(D,N,NP,NNP,SB,SA) ! ! print *,D ! print *,SA ! ! ni=0 ! do i=1,np ! do j=i,np ! ni = ni + 1 ! SAOUT(i,j) = SA(ni) ! SAOUT(j,i) = SA(ni) ! end do ! end do ! ! RETURN ! END ! rbin and fill_stdnormal don't seem to be used by anything ! SUBROUTINE rbin(n,pp,x) ! ! cf2py double precision intent(in) :: pp ! cf2py integer intent(in) :: n ! cf2py integer intent(out) :: x ! ! INTEGER n,x ! DOUBLE PRECISION pp,PI ! C USES gammln,rand ! PARAMETER (PI=3.141592654) ! C Returns as a floating-point number an integer value that is a random deviate drawn from ! C a binomial distribution of n trials each of probability pp, using rand as a source ! C of uniform random deviates. ! INTEGER j,nold ! DOUBLE PRECISION am,em,en,g,oldg,p,pc,rn ! DOUBLE PRECISION pclog,plog,pold,sq,t,y,gammln ! SAVE nold,pold,pc,plog,pclog,en,oldg ! C Arguments from previous calls. ! DATA nold /-1/, pold /-1./ ! if(pp.le.0.5)then ! C The binomial distribution is invariant under changing pp to ! C 1.-pp, if we also change the answer to n minus itself; ! C we’ll remember to do this below. ! p=pp ! else ! p=1.-pp ! endif ! C This is the mean of the deviate to be produced. ! am=n*p ! if (n.lt.25) then ! C Use the direct method while n is not too large. This can ! C require up to 25 calls to ran1. ! x=0. ! do 11 j=1,n ! ! call random_number(rn) ! rn = 0 ! if(rn.lt.p) x=x+1. ! 11 enddo ! else if (am.lt.1.) then ! C If fewer than one event is expected out of 25 or more tri- ! C als, then the distribution is quite accurately Poisson. Use ! C direct Poisson method. ! g=dexp(-am) ! t=1. ! do 12 j=0,n ! ! call random_number(rn) ! rn = rand() ! t=t*rn ! if (t.lt.g) goto 1 ! 12 enddo ! j=n ! 1 x=j ! else ! C Use the rejection method. ! if (n.ne.nold) then ! C If n has changed, then compute useful quantities. ! en=n ! oldg=gammln(en+1.) ! nold=n ! endif ! if (p.ne.pold) then ! C If p has changed, then compute useful quantities. ! pc=1.-p ! plog=dlog(p) ! pclog=dlog(pc) ! pold=p ! endif ! sq=sqrt(2.*am*pc) ! C The following code should by now seem familiar: rejection ! C method with a Lorentzian comparison function. ! ! call random_number(rn) ! rn = rand() ! 2 y=tan(PI*rn) ! em=sq*y+am ! C Reject. ! if (em.lt.0..or.em.ge.en+1.) goto 2 ! ! C Trick for integer-valued distribution. ! em=int(em) ! t=1.2*sq*(1.+y**2)*dexp(oldg-gammln(em+1.) ! +-gammln(en-em+1.)+em*plog+(en-em)*pclog) ! C Reject. This happens about 1.5 times per deviate, on average. ! ! call random_number(rn) ! rn = rand() ! if (rn.gt.t) goto 2 ! x=em ! endif ! C Remember to undo the symmetry transformation. ! if (p.ne.pp) x=n-x ! return ! END ! ! ! ! SUBROUTINE fill_stdnormal(array_in,n) ! ! c Fills an input array with standard normals in-place. ! c Created 2/4/07, AP ! ! cf2py double precision dimension(n),intent(inplace) :: array_in ! cf2py integer intent(hide),depend(array_in),check(n>0) :: n=len(array_in) ! ! INTEGER i, n, n_blocks, index ! DOUBLE PRECISION U1, U2, array_in(n) ! LOGICAL iseven ! ! iseven = (MOD(n,2) .EQ. 0) ! ! if(iseven) then ! n_blocks = n/2 ! else ! n_blocks = (n-1)/2 ! endif ! ! do i=1,n_blocks ! call RNORM(U1,U2) ! index = 2*(i-1) + 1 ! array_in(index) = U1 ! array_in(index+1) = U2 ! enddo ! ! if(.NOT.iseven) then ! call RNORM(U1,U2) ! array_in(n) = U1 ! endif ! ! ! return ! END c ! Commented this out- numpy's rng is much better. ! double precision function whrand() ! c ! c Algorithm AS 183 Appl. Statist. (1982) vol.31, no.2 ! c ! c Returns a pseudo-random number rectangularly distributed ! c between 0 and 1. The cycle length is 6.95E+12 (See page 123 ! c of Applied Statistics (1984) vol.33), not as claimed in the ! c original article. ! c ! c IX, IY and IZ should be set to integer values between 1 and ! c 30000 before the first entry. ! c ! c Integer arithmetic up to 30323 is required. ! c ! integer ix, iy, iz ! common /randc/ ix, iy, iz ! c ! ix = 171 * mod(ix, 177) - 2 * (ix / 177) ! iy = 172 * mod(iy, 176) - 35 * (iy / 176) ! iz = 170 * mod(iz, 178) - 63 * (iz / 178) ! c ! if (ix .lt. 0) ix = ix + 30269 ! if (iy .lt. 0) iy = iy + 30307 ! if (iz .lt. 0) iz = iz + 30323 ! c ! c If integer arithmetic up to 5212632 is available, the preceding ! c 6 statements may be replaced by: ! c ! c ix = mod(171 * ix, 30269) ! c iy = mod(172 * iy, 30307) ! c iz = mod(170 * iz, 30323) ! c ! whrand = mod(float(ix) / 30269. + float(iy) / 30307. + ! + float(iz) / 30323., 1.0) ! return ! end ! SUBROUTINE vonmises(x,mu,kappa,n,nmu, nkappa, like) c von Mises log-likelihood function c Written 13/01/2009 ADS. cf2py double precision dimension(n),intent(in) :: x cf2py double precision dimension(nmu),intent(in) :: mu cf2py double precision dimension(nkappa),intent(in) :: kappa cf2py double precision intent(out) :: like cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(mu,n),check(nmu==1||nmu==n) :: nmu=len(mu) cf2py integer intent(hide),depend(kappa,n),check(nkappa==1||nkappa==n) :: nkappa=len(kappa) cf2py threadsafe IMPLICIT NONE INTEGER n,i,nkappa,nmu DOUBLE PRECISION like DOUBLE PRECISION tmp DOUBLE PRECISION x(n),mu(nmu),kappa(nkappa) DOUBLE PRECISION mu_tmp, kappa_tmp LOGICAL not_scalar_mu, not_scalar_kappa DOUBLE PRECISION PI PARAMETER (PI=3.141592653589793238462643d0) DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) DOUBLE PRECISION i0 not_scalar_mu = (nmu .NE. 1) not_scalar_kappa = (nkappa .NE. 1) mu_tmp = mu(1) kappa_tmp = kappa(1) like = 0.0 do i=1,n if (not_scalar_mu) mu_tmp=mu(i) if (not_scalar_kappa) kappa_tmp=kappa(i) if (kappa_tmp .LT. 0.0) then like = -infinity RETURN endif like = like - dlog(2*PI*i0(kappa_tmp)) like = like + kappa_tmp*dcos(x(i)-mu_tmp) enddo return END SUBROUTINE pareto(x,alpha,m,n,nalpha,nm,like) c Pareto log-likelihood function cf2py double precision dimension(n),intent(in) :: x cf2py double precision dimension(nalpha),intent(in) :: alpha cf2py double precision dimension(nm),intent(in) :: m cf2py double precision intent(out) :: like cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(alpha,n),check(nalpha==1||nalpha==n) :: nalpha=len(alpha) cf2py integer intent(hide),depend(m,n),check(nm==1||nm==n) :: nm=len(m) cf2py threadsafe IMPLICIT NONE INTEGER n,i,nalpha,nm DOUBLE PRECISION like DOUBLE PRECISION tmp DOUBLE PRECISION x(n),m(nm),alpha(nalpha) DOUBLE PRECISION m_tmp, alpha_tmp LOGICAL not_scalar_m, not_scalar_alpha DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) DOUBLE PRECISION i0 not_scalar_m = (nm .NE. 1) not_scalar_alpha = (nalpha .NE. 1) m_tmp = m(1) alpha_tmp = alpha(1) like = 0.0 do i=1,n if (not_scalar_m) m_tmp=m(i) if (not_scalar_alpha) alpha_tmp=alpha(i) if ((alpha_tmp .LE. 0.0) .OR. (m_tmp .LE. 0.0) .OR. +(x(i) .LT. m_tmp)) then like = -infinity RETURN endif like = like + dlog(alpha_tmp) + alpha_tmp*dlog(m_tmp) like = like - (alpha_tmp + 1)*dlog(x(i)) enddo return END SUBROUTINE truncated_pareto(x,alpha,m,b,n,nalpha,nm,nb,like) c Truncated Pareto log-likelihood function cf2py double precision dimension(n),intent(in) :: x cf2py double precision dimension(nalpha),intent(in) :: alpha cf2py double precision dimension(nm),intent(in) :: m cf2py double precision dimension(nb),intent(in) :: b cf2py double precision intent(out) :: like cf2py integer intent(hide),depend(x) :: n=len(x) cf2py integer intent(hide),depend(alpha,n),check(nalpha==1||nalpha==n) :: nalpha=len(alpha) cf2py integer intent(hide),depend(m,n),check(nm==1||nm==n) :: nm=len(m) cf2py integer intent(hide),depend(b,n),check(nb==1||nb==n) :: nb=len(b) cf2py threadsafe IMPLICIT NONE INTEGER n,i,nalpha,nm,nb DOUBLE PRECISION like DOUBLE PRECISION tmp DOUBLE PRECISION x(n),m(nm),alpha(nalpha),b(nb) DOUBLE PRECISION m_tmp, alpha_tmp, b_tmp LOGICAL not_scalar_m, not_scalar_alpha, not_scalar_b DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) DOUBLE PRECISION i0 not_scalar_m = (nm .NE. 1) not_scalar_alpha = (nalpha .NE. 1) not_scalar_b = (nb .NE. 1) m_tmp = m(1) alpha_tmp = alpha(1) b_tmp = b(1) like = 0.0 do i=1,n if (not_scalar_m) m_tmp=m(i) if (not_scalar_alpha) alpha_tmp=alpha(i) if (not_scalar_b) b_tmp=b(i) if ((alpha_tmp .LE. 0.0) .OR. (m_tmp .LE. 0.0) .OR. +(x(i) .LT. m_tmp) .OR. (b_tmp .LT. x(i))) then like = -infinity RETURN endif like = like + dlog(alpha_tmp) + alpha_tmp*dlog(m_tmp) like = like - (alpha_tmp + 1)*dlog(x(i)) like = like - dlog(1 - (m_tmp/b_tmp)**alpha_tmp) enddo return END pymc-2.2+ds/pymc/flib_blas.f000066400000000000000000000251711204033704200157640ustar00rootroot00000000000000c Author: Anand Patil, anand.prabhakar.patil@gmail.com SUBROUTINE checksymm(X,n,cs) c Checks symmetry cf2py intent(hide) n cf2py intent(out) cs DOUBLE PRECISION X(n,n) INTEGER n,i,j LOGICAL cs cs = .FALSE. do j=1,n-1 do i=j+1,n if (X(i,j).NE.X(j,i)) then cs = .TRUE. return end if end do end do return END SUBROUTINE chol_mvnorm(x, mu, sig, n, like, info) cf2py double precision dimension(n), intent(copy) :: x cf2py double precision dimension(n), intent(copy) :: mu cf2py integer intent(hide),depend(x) :: n=len(x) cf2py double precision dimension(n,n), intent(in) :: sig cf2py double precision intent(out) :: like cf2py integer intent(hide) :: info cf2py threadsafe DOUBLE PRECISION sig(n,n), x(n), mu(n), like INTEGER n, info, i DOUBLE PRECISION twopi_N, log_detC, gd DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) DOUBLE PRECISION PI PARAMETER (PI=3.141592653589793238462643d0) EXTERNAL DPOTRS ! DPOTRS( UPLO, N, NRHS, A, LDA, B, LDB, INFO ) Solves triangular system EXTERNAL DAXPY ! DAXPY(N,DA,DX,INCX,DY,INCY) Adding vectors EXTERNAL DCOPY ! DCOPY(N,DX,INCX,DY,INCY) copies x to y ! NB DDOT from ATLAS, compiled with gfortran 4.2 on Ubuntu Gutsy, ! was producing bad output- hence the manual dot product. ! x <- (x-mu) call DAXPY(n, -1.0D0, mu, 1, x, 1) ! mu <- x call DCOPY(n,x,1,mu,1) ! x <- sig ^-1 * x call DPOTRS('L',n,1,sig,n,x,n,info) gd=0.0D0 do i=1,n gd=gd+x(i)*mu(i) end do ! like <- .5 dot(x,mu) (.5 (x-mu) C^{-1} (x-mu)^T) like = -0.5D0 * gd ! print *, like twopi_N = 0.5D0 * N * dlog(2.0D0*PI) ! print *, twopi_N log_detC = 0.0D0 do i=1,n log_detC = log_detC + log(sig(i,i)) enddo ! print *, log_detC like = like - twopi_N - log_detC return END SUBROUTINE cov_mvnorm(x, mu, C, n, like, info) cf2py double precision dimension(n), intent(copy) :: x cf2py double precision dimension(n), intent(copy) :: mu cf2py integer intent(hide),depend(x) :: n=len(x) cf2py double precision dimension(n,n), intent(copy) :: C cf2py double precision intent(out) :: like cf2py integer intent(hide) :: info cf2py threadsafe DOUBLE PRECISION C(n,n), x(n), mu(n), like INTEGER n, info DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) DOUBLE PRECISION PI PARAMETER (PI=3.141592653589793238462643d0) EXTERNAL DPOTRF ! DPOTRF( UPLO, N, A, LDA, INFO ) Cholesky factorization ! C <- cholesky(C) call DPOTRF( 'L', n, C, n, info ) ! print *, C ! If cholesky failed, puke. if (info .GT. 0) then like = -infinity RETURN endif ! Call to chol_mvnorm call chol_mvnorm(x,mu,C,n,like,info) return END SUBROUTINE prec_mvnorm(x, mu, tau, n, like) cf2py double precision dimension(n), intent(copy) :: x cf2py double precision dimension(n), intent(copy) :: mu cf2py integer intent(hide),depend(x) :: n=len(x) cf2py double precision dimension(n,n), intent(copy) :: tau cf2py double precision intent(out) :: like cf2py threadsafe DOUBLE PRECISION tau(n,n), x(n), mu(n), like, gd INTEGER n, info, i DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) DOUBLE PRECISION PI PARAMETER (PI=3.141592653589793238462643d0) DOUBLE PRECISION twopi_N, log_dettau EXTERNAL DPOTRF ! DPOTRF( UPLO, N, A, LDA, INFO ) Cholesky factorization EXTERNAL DSYMV ! DSYMV(UPLO,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY) Symmetric matrix-vector multiply EXTERNAL DAXPY ! DAXPY(N,DA,DX,INCX,DY,INCY) Adding vectors EXTERNAL DCOPY ! DCOPY(N,DX,INCX,DY,INCY) copies x to y twopi_N = 0.5D0 * N * dlog(2.0D0*PI) ! x <- (x-mu) call DAXPY(n, -1.0D0, mu, 1, x, 1) ! mu <- x call DCOPY(n,x,1,mu,1) ! mu <- tau * x call DSYMV('L',n,1.0D0,tau,n,x,1,0.0D0,mu,1) gd = 0.0D0 do i=1,n gd=gd+x(i)*mu(i) end do ! like <- -.5 dot(x,mu) (.5 (x-mu) C^{-1} (x-mu)^T) like = -0.5D0 * gd ! Cholesky factorize tau for the determinant. call DPOTRF( 'L', n, tau, n, info ) ! If cholesky failed, puke. if (info .GT. 0) then like = -infinity RETURN endif ! Otherwise read off determinant. log_dettau = 0.0D0 do i=1,n log_dettau = log_dettau + dlog(tau(i,i)) enddo like = like - twopi_N + log_dettau return END SUBROUTINE blas_wishart(X,k,n,T,like) c Wishart log-likelihood function. cf2py double precision dimension(k,k),intent(copy) :: X,T cf2py double precision intent(out) :: like cf2py integer intent(hide),depend(X) :: k=len(X) cf2py threadsafe INTEGER i,k,n DOUBLE PRECISION X(k,k),T(k,k),bx(k,k) DOUBLE PRECISION dx,db,tbx,a,g,like DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) DOUBLE PRECISION PI LOGICAL csx PARAMETER (PI=3.141592653589793238462643d0) EXTERNAL DCOPY ! DCOPY(N,DX,INCX,DY,INCY) copies x to y EXTERNAL DSYMM ! DSYMM(SIDE,UPLO,M,N,ALPHA,A,LDA,B,LDB,BETA,C,LDC) alpha*A*B + beta*C when side='l' EXTERNAL DPOTRF ! DPOTRF( UPLO, N, A, LDA, INFO ) Cholesky factorization c Check X for symmetry CALL checksymm(X,k,csx) if (csx) then like = -infinity return end if c trace of T*X ! bx <- T * X call DSYMM('L','L',k,k,1.0D0,T,k,x,k,0.0D0,bx,k) c Cholesky factor T, puke if not pos def. call DPOTRF( 'L', k, T, k, info ) if (info .GT. 0) then like = -infinity RETURN endif c Cholesky factor X, puke if not pos def. call DPOTRF( 'L', k, X, k, info ) if (info .GT. 0) then like = -infinity RETURN endif c Get the trace and log-sqrt-determinants tbx = 0.0D0 dx = 0.0D0 db = 0.0D0 do i=1,k tbx = tbx + bx(i,i) dx = dx + dlog(X(i,i)) db = db + dlog(T(i,i)) enddo if (k .GT. n) then like = -infinity RETURN endif like = 0.0D0 like = (n - k - 1) * dx like = like + n * db like = like - 0.5D0 * tbx like = like - (n*k/2.0d0)*dlog(2.0d0) do i=1,k a = (n - i + 1)/2.0D0 call gamfun(a, g) like = like - g enddo like = like - k * (k-1) * 0.25D0 * dlog(PI) ! return END c SUBROUTINE blas_wishart_cov(X,k,n,V,like) c Wishart log-likelihood function. c Doesn't vectorize the determinants, just the matrix multiplication. cf2py double precision dimension(k,k),intent(copy) :: V,X cf2py double precision intent(out) :: like cf2py integer intent(hide),depend(X) :: k=len(X) cf2py threadsafe INTEGER i,k,info, n DOUBLE PRECISION X(k,k),V(k,k),bx(k,k) DOUBLE PRECISION dx,db,tbx,a,g,like DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) DOUBLE PRECISION PI LOGICAL csx PARAMETER (PI=3.141592653589793238462643d0) c EXTERNAL DCOPY ! DCOPY(N,DX,INCX,DY,INCY) copies x to y EXTERNAL DPOTRF ! DPOTRF( UPLO, N, A, LDA, INFO ) Cholesky factorization EXTERNAL DPOTRS ! DPOTRS( UPLO, N, NRHS, A, LDA, B, LDB, INFO ) Solves triangular system c determinants c Check X for symmetry CALL checksymm(X,k,csx) if (csx) then like = -infinity return end if c Cholesky factorize sigma, puke if not pos def ! V <- cholesky(V) call DPOTRF( 'L', k, V, k, info ) if (info .GT. 0) then like = -infinity RETURN endif c trace of V^{-1}*X ! bx <- X call DCOPY(k * k,X,1,bx,1) ! bx <- V^{-1} * bx call DPOTRS('L',k,k,V,k,bx,k,info) ! X <- cholesky(X) call DPOTRF( 'L', k, X, k, info ) ! sqrt-log-determinant of sigma and X, and trace db=0.0D0 dx=0.0D0 tbx = 0.0D0 do i=1,k db = db + dlog(V(i,i)) dx = dx + dlog(X(i,i)) tbx = tbx + bx(i,i) enddo if (k .GT. n) then like = -infinity RETURN endif like = (n - k - 1) * dx like = like - n * db like = like - 0.5D0*tbx like = like - (n*k/2.0D0)*dlog(2.0d0) do i=1,k a = (n - i + 1)/2.0D0 call gamfun(a, g) like = like - g enddo like = like - k * (k-1) * 0.25D0 * dlog(PI) return END SUBROUTINE blas_inv_wishart(X,k,n,T,like) c Inverse Wishart log-likelihood function. cf2py double precision dimension(k,k),intent(copy) :: X,T cf2py double precision intent(out) :: like cf2py integer intent(hide),depend(X) :: k=len(X) cf2py threadsafe INTEGER i,k,n DOUBLE PRECISION X(k,k),T(k,k),TX(k,k) DOUBLE PRECISION dx,db,tbx,a,g,like DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) DOUBLE PRECISION PI LOGICAL csx PARAMETER (PI=3.141592653589793238462643d0) EXTERNAL DCOPY ! DCOPY(N,DX,INCX,DY,INCY) copies x to y EXTERNAL DPOTRF ! DPOTRF( UPLO, N, A, LDA, INFO ) Cholesky factorization EXTERNAL DTRMM ! DTRMM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB) B := alpha*B*op( A ) c Check X and T for symmetry C CALL checksymm(X,k,csx) C if (csx) then C print *,"checksymm failed" C like = -infinity C return C end if c trace of T*X^{-1} ! TX <- T call DCOPY(k*k,T,1,TX,1) ! TX <- T * X^{-1} call DTRMM('R','L','T','N',k,k,1.0D0,X,k,TX,k) c Cholesky factor T, puke if not pos def. call DPOTRF( 'L', k, T, k, info ) if (info .GT. 0) then print *,"cholesky of T failed" like = -infinity RETURN endif c Cholesky factor X, puke if not pos def. call DPOTRF( 'L', k, X, k, info ) if (info .GT. 0) then print *,"cholesky of X failed" like = -infinity RETURN endif c Get the trace and log-sqrt-determinants tbx = 0.0D0 dx = 0.0D0 db = 0.0D0 do i=1,k tbx = tbx + TX(i,i) dx = dx + dlog(X(i,i)) db = db + dlog(T(i,i)) enddo if (k .GT. n) then print *, "k > n" like = -infinity RETURN endif like = -1.0D0*(n + k + 1) * dx like = like + 0.5D0 * n * db like = like - 0.5D0 * tbx like = like - (n*k/2.0d0)*dlog(2.0d0) do i=1,k a = (n - i + 1)/2.0D0 call gamfun(a, g) like = like - g enddo like = like - k * (k-1) * 0.25D0 * dlog(PI) ! return ENDpymc-2.2+ds/pymc/gibbsit.f000066400000000000000000003376051204033704200155020ustar00rootroot00000000000000************************************************************************ * * * gibbsit 1-10-95 * * * * Gibbsit -- Version 2.0, by Adrian E. Raftery and Steven M. Lewis * * (with thanks to Jill Kirby and Jan de Leeuw) * * * * This program calculates the number of iterations required in a MCMC * * run. The user has to specify the precision required. The program * * returns the number of iterations required to estimate the posterior * * cdf of the q-quantile of the quantity of interest (a function of * * the parameters) to within +-r with probability s. It also gives * * the number of "burn-in" iterations required for the conditional * * distribution given any starting point (of the derived two-state * * process) to be within epsilon of the actual equilibrium distri- * * bution. * * * * * * References: * * * * Raftery, A.E. and Lewis, S.M. (1992). How many iterations in the * * Gibbs sampler? In Bayesian Statistics, Vol. 4 (J.M. Bernardo, J.O. * * Berger, A.P. Dawid and A.F.M. Smith, eds.). Oxford, U.K.: Oxford * * University Press, 763-773. * * This paper is available via the World Wide Web by linking to URL * * http://www.stat.washington.edu/tech.reports/pub/tech.reports * * and then selecting the "How Many Iterations in the Gibbs Sampler" * * link. * * This paper is also available via regular ftp using the following * * commands: * * ftp ftp.stat.washington.edu (or 128.95.17.34) * * login as anonymous * * enter your email address as your password * * ftp> cd /pub/tech.reports * * ftp> get raftery-lewis.ps * * ftp> quit * * * * Raftery, A.E. and Lewis, S.M. (1992). One long run with diagnos- * * tics: Implementation strategies for Markov chain Monte Carlo. * * Statistical Science, Vol. 7, 493-497. * * * * Raftery, A.E. and Lewis, S.M. (1995). The number of iterations, * * convergence diagnostics and generic Metropolis algorithms. In * * Practical Markov Chain Monte Carlo (W.R. Gilks, D.J. Spiegelhalter * * and S. Richardson, eds.). London, U.K.: Chapman and Hall. * * This paper is available via the World Wide Web by linking to URL * * http://www.stat.washington.edu/tech.reports/pub/tech.reports * * and then selecting the "The Number of Iterations, Convergence * * Diagnostics and Generic Metropolis Algorithms" link. * * This paper is also available via regular ftp using the following * * commands: * * ftp ftp.stat.washington.edu (or 128.95.17.34) * * login as anonymous * * enter your email address as your password * * ftp> cd /pub/tech.reports * * ftp> get raftery-lewis2.ps * * ftp> quit * * * ************************************************************************ ************************************************************************ * * * Input: * * * * Example values of q, r, s: * * 0.025, 0.005, 0.95 (for a long-tailed distribution) * * 0.025, 0.0125, 0.95 (for a short-tailed distribution); * * 0.5, 0.05, 0.95; 0.975, 0.005, 0.95; etc. * * * * The result is quite sensitive to r, being proportional to the * * inverse of r^2. * * * * For epsilon, we have always used 0.001. It seems that the result * * is fairly insensitive to a change of even an order of magnitude in * * epsilon. * * * * One way to use the program is to run it for several specifications * * of r, s and epsilon and vectors q on the same data set. When one * * is sure that the distribution is fairly short-tailed, such as when * * q=0.025, then r=0.0125 seems sufficient. However, if one is not * * prepared to assume this, safety seems to require a smaller value of * * r, such as 0.005. * * * * The program takes as input the name of a file containing an initial * * run from a MCMC sampler. If the MCMC iterates are independent, * * then the minimum number required to achieve the specified accuracy * * is about $\Phi^{-1} (\frac{1}{2}(1+s))^2 q(1-q)/r^2$ and this would * * be a reasonable number to run first. * * When q=0.025, r=0.005 and s=0.95, this number is 3,748; * * when q=0.025, r=0.0125 and s=0.95, it is 600. * * * * * * Output: * * * * nmin = minimum number of iterations, assuming independence, * * required to achieve the specified accuracy. * * nburn = number of iterations to be discarded at the beginning. * * nprec = number of subsequent iterations required. * * kthin = skip parameter for a first-order Markov chain. The * * desired accuracy will be achieved if at most every * * kthin-th iterate is used. * * kind = skip parameter sufficient to achieve an independence * * chain. * * * ************************************************************************ ************************************************************************ * * * The development of this computer program was supported by the * * Office of Naval Research under contracts N-00014-88-K-0265 and * * N-00014-91-J-1074 and by the National Institutes of Health under * * grant 5R01HD26330. * * * ************************************************************************ ************************************************************************ * * * Development history: * * * * Version 0.3 (May 1, 1991): Initial version of the program. * * Version 0.4 (June 8, 1991): This incorporates Jill Kirby's * * suggestion that lots of things be initialized to zero and her code * * that does that. * * * * Version 1.0 (Sept. 14, 1994): A reorganization of the program by * * Steven Lewis. This included multiplying nprec by an additional * * missing factor, (2-alpha-beta), modifying the way in which ties are * * handled in the calculation of the empirical quantile, and taking * * the logarithm of abs(1-alpha-beta) in the calculation of nburn. * * * * Version 2.0 (Dec. 15, 1994): Add ability to read a matrix of input * * values, add the I_rl statistic to the output, add calculation of * * kind (the spacing needed to achieve an independence chain) to the * * output, add ability to read in a vector of quantiles and add the * * ability to estimate a probability such as described in the Raftery * * and Lewis Bayesian Statistics paper. * * * ************************************************************************ ************************************************************************ * * * The dimensions are currently set for input series of length at most * * 50000, but this is easily changed by editing the line below where * * maxiterates is set. * * * * The maximum number of variables which can be read from the input * * file is given by the maxseries parameter. This is currently set to * * 20, but is also easily changed. * * * ************************************************************************ program gibbsit integer maxiterates parameter (maxiterates=50000) integer maxseries parameter (maxseries=20) integer maxqcnt parameter (maxqcnt=20) integer wasize parameter (wasize=maxiterates*2) ************************************************************************ * * * The following variables hold various temporary values used in this * * subroutine. This includes any do-loop counters and similar such * * temporary subscripts and indices. * * * * data - contains the original input MCMC series * * qs,r,s - parameters used to specify the required precision: * * the q-quantile is to be estimated to within +-r with * * probability s * * irl - the I statistic from the Raftery and Lewis Statistical * * Science paper * * * * inpfile - name of file containing the initial MCMC input matrix * * * * workarea - vector used internally by the gibbsmain subroutine * * iteracnt - the number of iterations (ie., rows) in the input data * * varcnt - number of variables (ie., columns) in the input data * * nburn - the number of iterations required for burn-in * * nprec - the number of iterations required to achieve the * * specified precision * * kthin - skip parameter for a first-order Markov chain * * kmind - minimum skip parameter to get an independence chain * * nmin - minimum number of independent iterates required * * kind - skip parameter sufficient to achieve an independence * * chain (ie., the greater of ceiling(irl) and kmind) * * ccnt - number of control parameters entered by the user * * qcnt - number of quantiles entered by the user * * * ************************************************************************ double precision data(maxiterates,maxseries) double precision qs(maxqcnt) double precision irl double precision controlparms(3) double precision r equivalence (controlparms(1),r) double precision s equivalence (controlparms(2),s) double precision epsilon equivalence (controlparms(3),epsilon) character inpfile*24 integer workarea(wasize) integer argcount integer iteracnt integer varcnt integer nburn integer nprec integer kthin integer kmind integer iargc integer nmin integer kind integer ccnt integer qcnt integer q1 integer v1 integer rc ************************************************************************ * * * Process whatever command line arguments were passed to gibbsit. * * Currently at most one argument is expected. If present, the first * * argument contains the name of the input data file. If not present, * * get the name of the input data file from the user's console. * * * ************************************************************************ argcount = iargc() if (argcount.ge.1) then call getarg(1,inpfile) else write (0,*) 'Enter the name of the input file' read (5,*) inpfile end if ************************************************************************ * * * Open the input data file. If unable to do so, stop the program. * * * ************************************************************************ open (unit=7,file=inpfile,status='old',iostat=rc) if (rc.ne.0) go to 900 ************************************************************************ * * * Read the input data into the data matrix. * * * ************************************************************************ call matinput(7,maxiterates,maxseries,data,iteracnt,varcnt,rc) if (rc.ne.0) then write (0,*) 'matinput exited with a nonzero error code of', rc go to 900 end if ************************************************************************ * * * The main program loop follows. To begin each loop, get the input * * control parameters from the user's console. If the user enters * * an end-of-data or r=99, stop this program. * * * ************************************************************************ 300 write (0,*) + 'Enter r,s,epsilon (e.g. .0125 .95 .001). r=99 to stop' call vecinput(5,3,controlparms,ccnt,rc) if (rc.gt.0) then write (0,*) 'vecinput exited with a nonzero error code of', rc go to 900 end if if (rc.lt.0 .or. r.eq.99) go to 900 if (ccnt.ne.3) then write (0,*) 'r, s, and epsilon are all required' go to 300 end if ************************************************************************ * * * Next get a vector of quantiles at which MCMC settings for each * * variable input series are to be calculated. * * * ************************************************************************ write (0,'(''Enter a vector of quantiles (e.g. .025 .975). '', + ''q=0 to estimate probability'')') call vecinput(5,maxqcnt,qs,qcnt,rc) if (rc.ne.0) then write (0,*) 'vecinput exited with a nonzero error code of', rc go to 900 end if ************************************************************************ * * * Loop through the vector of quantiles, calculating nmin, kthin, * * nburn, nprec and kind for each variable input series at each given * * quantile value, separating each set by an extra blank line. * * * ************************************************************************ do 700 q1=1,qcnt write (6,'(/''q = '',f5.3,'', r = '',f6.4,'', s = '',f4.2, + '', epsilon = '',f6.4,'':'')') qs(q1), r, s, epsilon ************************************************************************ * * * Now execute the gibbmain subroutine once for each variable input * * series for the current quantile value, to perform all of the real * * work. * * * ************************************************************************ do 500 v1=1,varcnt call gibbmain(data(1,v1),iteracnt,qs(q1),r,s,epsilon,workarea, + nmin,kthin,nburn,nprec,kmind,rc) if (rc.ne.0) then if (rc.eq.12) then write (0,'(''When q=0 the input series must consist of '', + ''only 0''''s and 1''''s'')') else write (0,'(''gibbmain exited with a nonzero error code '', + ''of '',i2)') rc end if go to 900 end if irl = dble(nburn + nprec) / dble(nmin) kind = max( int(irl + 1.0d0), kmind ) write (6,'('' ('',i2,'') kthin='',i3,'', nburn='',i5, + '', nprec='',i8,'', nmin='',i5,'', I='',f6.2,'', kind='', + i3)') v1, kthin, nburn, nprec, nmin, irl, kind 500 continue 700 continue ************************************************************************ * * * Repeat the main program loop with possibly new control parameters * * and/or a new vector of quantiles, leaving an extra blank line at * * the end of the current set of outputs. * * * ************************************************************************ write (6,'()') go to 300 ************************************************************************ * * * At this point we are done with the gibbsit program. * * * ************************************************************************ 900 stop end ************************************************************************ * * * matinput 11-04-94 * * * * This subroutine inputs a matrix of double precision numbers from a * * designated file. The input file is assumed to have the same number * * of blank delimited numbers on each record of the file. There is an * * upper limit of twenty numbers per line. This subroutine reads the * * numbers from the first line of the input file into the first row of * * the matrix, from the second line of the input file into the second * * row, and so on. It is important to check the return code from this * * subroutine since there are a number of different error conditions * * which may occur. Error codes less than 0 are just warnings, so in * * most cases may be ignored. * * * ************************************************************************ ************************************************************************ * * * Inputs: * * * * uid = an integer containing the unit identifier number of an * * already opened external input file. The uid must be a * * non-negative number. If not, matinput will return to * * the caller with an error code of 4 without having read * * anything into the output matrix, matout. * * * * rowmax = an integer containing the allocated number of rows in * * the output matrix, matout. If the input file contains * * more than rowmax records, the first rowmax records * * will be read into the output matrix and matinput will * * return to the caller with an error return code of -4. * * The actual number of rows used is returned in the * * rowused argument. * * * * colmax = an integer containing the allocated number of columns * * in the output matrix, matout. The maximum number of * * numbers per line which matinput can read into the * * output matrix is the lesser of colmax and twenty. * * The actual number of columns used is returned in the * * colused argument. * * * * * * Outputs: * * * * matout = a double precision matrix in which this subroutine is * * to return the matrix of numbers read in from the input * * file. This matrix consists of rowmax rows by colmax * * columns. * * * * rowused = an integer containing the actual number of rows of the * * output matrix, matout, into which matinput has read * * data. The rest of the output matrix has not been * * altered by this subroutine. * * * * colused = an integer containing the actual number of columns of * * the output matrix, matout, into which matinput has * * read data. The rest of the output matrix has not been * * altered by this subroutine. * * * ************************************************************************ ************************************************************************ * * * Outputs (continued): * * * * r15 = an integer valued error return code. This variable * * is set to 0 if no errors were encountered. * * Otherwise, r15 can assume the following values: * * * * -4 = the end of file from the input file had not yet * * been reached before running out of the maximum * * number of rows available in the output matrix. * * The first rowmax records from the input file * * will have been read into the output matrix. * * 4 = the input file unit identifier was negative. * * 8 = the rowmax argument was not a postitive number. * * 12 = the oneparse subroutine returned with a nonzero * * error return code. * * 16 = an error occurred while converting one of the * * input numbers into internal double precision * * format. Any input numbers after the number * * causing the error will not have been read into * * output matrix. * * No other possible values are currently in use. * * * ************************************************************************ subroutine matinput(uid,rowmax,colmax,matout,rowused,colused,r15) integer uid integer rowmax integer colmax double precision matout(rowmax,colmax) integer rowused integer colused integer r15 ************************************************************************ * * * The following variables hold various temporary values used in this * * subroutine such as loop counters, indices and so forth. * * * * curterms - parsed version of the current input record * * currecrd - the most recently read record from the input file * * delimit - a single character to be used as the separator between * * numbers in the input file * * collimit - lesser of colmax and twenty * * curcnt - number of tokens parsed from the current input record * * * ************************************************************************ character curterms(20)*24 character currecrd*512 character delimit*1 data delimit/' '/ integer collimit integer curcnt integer c1 integer rc ************************************************************************ * * * Make sure that the external unit identifier of the input file is a * * non-negative number. If it isn't, return to the caller with an * * error code of 4. * * * ************************************************************************ if (uid.lt.0) then write (0,*) 'unit identifier passed to matinput is negative' r15 = 4 return end if ************************************************************************ * * * Make sure that the rowmax argument is greater than 0. If it isn't, * * return to the caller with an error code of 8. * * * ************************************************************************ if (rowmax.le.0) then write (0,*) 'output matrix must have a positive number of rows' r15 = 8 return end if ************************************************************************ * * * The maximum number of columns of the output matrix which matinput * * can read into is the lesser of the colmax argument and twenty, but * * it must be at least 1. * * * * For the moment, initialize the number of columns used to this just * * determined maximum number of columns. * * * ************************************************************************ if (colmax.lt.20) then collimit = max(colmax,1) else collimit = 20 end if colused = collimit ************************************************************************ * * * Initialize the number of rows used argument to 0. * * * ************************************************************************ rowused = 0 ************************************************************************ * * * Read the next record from the input file as a character string. If * * there are no more records in the input file, we have completed our * * job successfully. In this latter case we can jump to the end of * * the subroutine to set the error code to 0 before returning. * * * * Note that I chose to read at least one non-blank record from the * * input file before checking the number of rows used in the output * * matrix so that the error code will be set to 0 in the case where * * the number of non-blank records in the input file is precisely * * equal to the number of rows in the output matrix. * * * ************************************************************************ 200 read (uid,'(a)',end=600) currecrd ************************************************************************ * * * Call the oneparse subroutine to parse the current record into up to * * collimit blank separated tokens. If any blank lines are read from * * the input file, these should be ignored. * * * ************************************************************************ call oneparse(currecrd,delimit,collimit,curterms,curcnt,rc) if (rc.ne.0) then write (0,*) 'oneparse exited with a nonzero error code of', rc r15 = 12 return end if if (curcnt.lt.1) go to 200 ************************************************************************ * * * Make sure that the number of rows used in the output matrix is * * still less than the maximum number of rows in the matrix. If it * * is not, then we have read as much as we can into the matrix. We * * can return to the caller but set the error code to -4 to warn the * * caller that not all the data from the input file could be read * * into the output matrix. * * * ************************************************************************ if (rowused.ge.rowmax) then r15 = -4 return end if ************************************************************************ * * * To make sure that every significant element of the output matrix * * will have been set by the matinput subroutine, this subroutine sets * * the actual number of columns used equal to the fewest number of * * tokens read in from any one record of the input file. * * * ************************************************************************ if (curcnt.lt.colused) colused = curcnt ************************************************************************ * * * Increment the number of rows used in the output matrix. * * * ************************************************************************ rowused = rowused + 1 ************************************************************************ * * * After parsing the input record into separate numbers, convert each * * of the input quantities into internal double precision numbers. * * * ************************************************************************ do 300 c1=1,colused read (curterms(c1),'(f24.0)',err=400) matout(rowused,c1) 300 continue ************************************************************************ * * * Go read the next record from the input file. * * * ************************************************************************ go to 200 ************************************************************************ * * * An error occurred in trying to convert one of the input numbers * * into a floating point number. The most prudent thing to do would * * be to return to the caller without finishing reading from the input * * file. The error return code is set to 16 before returning. * * * ************************************************************************ 400 r15 = 16 return ************************************************************************ * * * Everything has gone as expected if we made it to this point in the * * program, so return to the caller with the good news. * * * ************************************************************************ 600 r15 = 0 return end ************************************************************************ * * * vecinput 12-07-94 * * * * This subroutine reads a vector of double precision numbers from a * * designated file (which may be the standard input). Only a single * * line is read from the input file. This line is assumed to consist * * of up to twenty blank delimited numbers. * * * * Vecinput is a trimmed down version of the matinput subroutine. * * Instead of reading in an entire matrix, vecinput only reads in a * * single line of input into a vector. Since matrix input need not be * * supported by this subroutine, the code may be greatly simplified. * * First, there is no need in vecinput to keep track of row numbers in * * a matrix, so any code referring to row number may be removed. The * * other key simplification possible in this subroutine is a result of * * the fact that only a single line of input is to be read by this * * subroutine, whereas the matinput subroutine always attempts to read * * more than one line of input. This difference in behavior is not * * worth worrying about, except in the case where the input is being * * read from the user's terminal. Any extra attempted reads to the * * terminal would not ordinarily be expected by a user and hence need * * to be prevented. It is particularly this last reason which led me * * to implement a separate subroutine to read in a simple vector of * * numbers (which is very likely to be entered interactively). * * * ************************************************************************ ************************************************************************ * * * Inputs: * * * * uid = an integer containing the unit identifier number of an * * already opened external input file. The uid must be a * * non-negative number. If not, vecinput will return to * * the caller with an error code of 4 without having read * * anything into the output vector, vecout. * * * * vecmax = an integer containing the allocated number of elements * * in the output vector, vecout. The maximum number of * * numbers which vecinput can read into the output vector * * is the lesser of vecmax and twenty. The actual number * * of elements used is returned in the vecused argument. * * * ************************************************************************ ************************************************************************ * * * Outputs: * * * * vecout = a double precision vector in which this subroutine is * * to return the vector of numbers read from the single * * line of the input file. This vector must contain at * * least vecmax elements. * * * * vecused = an integer containing the actual number of elements of * * the output vector, vecout, into which vecinput has * * read data. The rest of the output vector will not * * have been modified by this subroutine. * * * * r15 = an integer valued error return code. This variable * * is set to 0 if no errors were encountered. * * Otherwise, r15 can assume the following values: * * * * -4 = the user entered an end-of-data when prompted * * for the single line of input. * * 4 = the input file unit identifier was negative. * * 8 = the oneparse subroutine returned with a nonzero * * error return code. * * 12 = an error occurred while converting one of the * * input numbers into internal double precision * * format. Any input numbers after the number * * causing the error will not have been read into * * output vector. * * No other possible values are currently in use. * * * ************************************************************************ subroutine vecinput(uid,vecmax,vecout,vecused,r15) integer uid integer vecmax double precision vecout(vecmax) integer vecused integer r15 ************************************************************************ * * * The following variables hold various temporary values used in this * * subroutine such as loop counters, indices and so forth. * * * * septerms - parsed version of the line read from the input file * * charinpt - character form of the line read from the input file * * delimit - a single character to be used as the separator between * * numbers in the input file * * veclimit - lesser of vecmax and twenty * * * ************************************************************************ character septerms(20)*24 character charinpt*512 character delimit*1 data delimit /' '/ integer veclimit integer v1 integer rc ************************************************************************ * * * Make sure that the external unit identifier of the input file is a * * non-negative number. If it isn't, return to the caller with an * * error code of 4. * * * ************************************************************************ if (uid.lt.0) then write (0,*) 'unit identifier passed to vecinput is negative' r15 = 4 return end if ************************************************************************ * * * The maximum number of elements of the output vector which vecinput * * can read into is the lesser of the vecmax argument and twenty, but * * it must be at least 1. * * * ************************************************************************ if (vecmax.lt.20) then veclimit = max(vecmax,1) else veclimit = 20 end if ************************************************************************ * * * Read a single line from the input file as a character string. If * * an end-of-data or an end-of-file occurs, we just need to set the * * error return code to -4 before returning to the caller. * * * ************************************************************************ read (uid,'(a)',end=400) charinpt ************************************************************************ * * * Call the oneparse subroutine to parse the line read from the input * * file into up to veclimit blank separated terms. * * * ************************************************************************ call oneparse(charinpt,delimit,veclimit,septerms,vecused,rc) if (rc.ne.0) then write (0,*) 'oneparse exited with a nonzero error code of', rc r15 = 8 return end if ************************************************************************ * * * After parsing the input record into separate numbers, convert each * * of the input quantities into internal double precision numbers. * * * ************************************************************************ do 300 v1=1,vecused read (septerms(v1),'(f24.0)',err=500) vecout(v1) 300 continue ************************************************************************ * * * Everything has gone as expected if we made it to this point in the * * program, so return to the caller with the good news. * * * ************************************************************************ r15 = 0 return ************************************************************************ * * * An end-of-data or an end-of-file occurred when we attempted to read * * the single line from the input file. Set the error return code to * * -4 before returning to the caller. * * * ************************************************************************ 400 r15 = -4 return ************************************************************************ * * * An error occurred in trying to convert one of the input numbers * * into a floating point number. Set the error return code to 12 * * before returning to the caller. * * * ************************************************************************ 500 r15 = 12 return end ************************************************************************ * * * oneparse 2-17-94 * * * * This subroutine is a very rudimentary parser. The input character * * string passed as the first argument is parsed into 0 or more tokens * * where the tokens are separated by instances of the single character * * delimiter passed as the delimit argument. The separate tokens are * * returned in the output character vector, tokens. * * * ************************************************************************ ************************************************************************ * * * Inputs: * * * * instring = a character string to be parsed into separate tokens. * * * * delimit = a single character to be used to separate the input * * into individual tokens. * * * * maxtok = an integer containing the maximum number of tokens * * which may be returned. This is the number of elements * * available in the tokens vector. * * * * * * Outputs: * * * * tokens = a vector of character strings containing the parsed * * version of the input character string, instring. Each * * entry in tokens will be left justified (leading blanks * * removed). The number of tokens found in the input * * string is returned in tokcnt. * * * * tokcnt = an integer containing the number of tokens actually * * returned in tokens. This will be a number between 0 * * and maxtok, inclusive. * * * * r15 = an integer valued error return code. This variable * * is set to 0 if no errors were encountered. * * Otherwise, r15 can assume the following values: * * * * 4 = the input character string contained more than * * maxtok tokens. The first maxtok tokens have * * been returned in tokens and tokcnt has been set * * equal to maxtok. * * No other possible values are currently in use. * * * ************************************************************************ subroutine oneparse(instring,delimit,maxtok,tokens,tokcnt,r15) character instring*(*) character delimit*1 integer maxtok character tokens(maxtok)*(*) integer tokcnt integer r15 ************************************************************************ * * * The following variables hold various temporary values used in this * * subroutine such as loop counters, indices and so forth. * * * ************************************************************************ integer inlen integer index integer bpos integer dpos integer epos integer len integer tn integer pn ************************************************************************ * * * Parse the input character string into its separate tokens. The * * input string is assumed to contain from 0 to maxtok tokens * * separated by the token separator character, delimit. * * * ************************************************************************ inlen = len(instring) bpos = 1 tn = 0 ************************************************************************ * * * Locate the beginning and the end of the next token within the * * input string. * * * * First, find the next nonblank character in the input string. * * * ************************************************************************ 400 do 450 pn=bpos,inlen if (instring(pn:pn).ne.' ') go to 500 450 continue ************************************************************************ * * * If no nonblank characters were found in the input string, there * * are no more tokens in the input, so we have finished parsing this * * input string. * * * * At this point set tokcnt to the number of tokens found and set the * * error return code to indicate that all went as would be expected * * before returning to the caller. * * * ************************************************************************ tokcnt = tn r15 = 0 return ************************************************************************ * * * The beginning of the next token has been located. Increment the * * subscript to use for this token. The element of the tokens vector * * addressed by this subscript will be the one used to return the * * current token. * * * * If this subscript is greater than maxtok, the passed input string * * contained more tokens than can be returned in the tokens vector. * * In this case, tokcnt is set equal to maxtok and the error return * * code is set to 4 before returning to the caller. * * * * To find the end of this token, find the next token separator or the * * end of the input string if there are no more separators. * * * ************************************************************************ 500 tn = tn + 1 if (tn.gt.maxtok) then tokcnt = maxtok r15 = 4 return end if bpos = pn dpos = index(instring(bpos:),delimit) if (dpos.eq.0) dpos = inlen epos = bpos + dpos - 2 ************************************************************************ * * * We now have the positions of both the beginning and the end of the * * next token within the input string, so save this token in the * * correct element of the tokens vector. * * * ************************************************************************ tokens(tn) = instring(bpos:epos) ************************************************************************ * * * Start looking for the next token immediately following the most * * recently located token separator (the one which terminated the * * previous token). * * * ************************************************************************ bpos = epos + 2 go to 400 end ************************************************************************ * * * gibbmain 1-09-95 * * * * This program calculates the number of iterations required in a run * * of MCMC. The user has to specify the precision required. This * * subroutine returns the number of iterations required to estimate * * the posterior cdf of the q-quantile of the quantity of interest (a * * function of the parameters) to within +-r with probability s. It * * also gives the number of "burn-in" iterations required for the * * conditional distribution given any starting point (of the derived * * two-state process) to be within epsilon of the actual equilibrium * * distribution. * * * * If q<=0, then gibbmain is to treat the original input series as a * * vector of 0-1 outcome variables. In this case no quantile needs to * * be found. Instead, this subroutine just needs to calculate kthin, * * nburn, nprec and kmind tuning parameters such that a MCMC run based * * on these tuning parameters should be adequate for estimating the * * probability of an outcome of 1 within the prescribed (by r, s, and * * epsilon) probability. * * * ************************************************************************ ************************************************************************ * * * Inputs: * * * * original = a double precision vector containing the original MCMC * * generated series of parameter estimates. This vector * * contains iteracnt elements. * * * * iteracnt = an integer containing the number of actual iterations * * provided in the sample MCMC output series, original. * * * * q,r,s = double precision numbers in which the caller specifies * * the required precision: the q-quantile is to be * * estimated to within r with probability s. * * * * epsilon = a double precision number containing the half width of * * the tolerance interval required for the q-quantile. * * * * work = an integer vector passed to various subroutines to * * hold a number of internal vectors. There must be at * * least (iteracnt * 2) elements in this vector. * * * ************************************************************************ ************************************************************************ * * * Outputs: * * * * nmin = an integer which will be set to the minimum number of * * independent Gibbs iterates required to achieve the * * specified accuracy for the q-quantile. * * * * kthin = an integer which will be set to the skip parameter * * sufficient to produce a first-order Markov chain. * * * * nburn = an integer which will be set to the number of * * iterations to be discarded at the beginning of the * * simulation, i.e. the number of burn-in iterations. * * * * nprec = an integer which will be set to the number of * * iterations not including the burn-in iterations which * * need to be obtained in order to attain the precision * * specified by the values of the q, r and s input * * parameters. * * * * kmind = an integer which will be set to the minimum skip * * parameter sufficient to produce an independence chain. * * * * r15 = an integer valued error return code. This variable * * is set to 0 if no errors were encountered. * * Otherwise, r15 can assume the following values: * * * * 12 = the original input vector contains something * * other than a 0 or 1 even though q<=0. * * No other possible values are currently in use. * * * ************************************************************************ C Modified by D. Huard to wrap using F2Py. subroutine gibbmain(original,iteracnt,q,r,s,epsilon,work,nmin, + kthin,nburn,nprec,kmind,r15) integer iteracnt double precision original(iteracnt) double precision q double precision r double precision s double precision epsilon integer work(iteracnt*2) integer nmin integer kthin integer nburn integer nprec integer kmind integer r15 CF2PY INTEGER, INTENT(HIDE), DEPEND(ORIGINAL) :: ITERACNT = LEN(ORIGINAL) CF2PY DOUBLE PRECISION DIMENSION(ITERACNT), INTENT(IN) :: ORIGINAL CF2PY DOUBLE PRECISION INTENT(IN) :: Q,R,S,EPSILON CF2PY DOUBLE PRECISION INTENT(CACHE,HIDE), DIMENSION(2*ITERACNT) :: WORK CF2PY INTEGER, INTENT(OUT) :: NMIN, KTHIN, NBURN, NPREC, KMIND CF2PY INTEGER, INTENT(HIDE) :: R15 CF2PY THREADSAFE ************************************************************************ * * * The following variables hold various temporary values used in this * * subroutine. This includes any do-loop counters and similar such * * temporary subscripts and indices. * * * * cutpt - the q-th empirical quantile * * qhat - when q=0, proportion of 1's in the input data vector, * * when q>0, qhat is set equal to the passed value of q * * g2 - G2 for the test of first-order vs second-order Markov * * bic - the corresponding BIC value * * phi - \PHI^{-1} ((s+1)/2) * * alpha - probability of moving from below the cutpt to above * * beta - probability of moving from above the cutpt to below * * probsum - sum of alpha + beta * * * * The first iteracnt elements of the work vector will be used to * * store a binary 0-1 series indicating which elements are less than * * or equal to the cutpt (set to 1) and which elements are less than * * the cutpt (set to 0). * * * * The remaining iteracnt elements of the work vector are to be used * * to hold thinned versions of the 0-1 series, where the amount of * * thinning is determined by the current value of kthin (or kmind). * * That is, for each proposed value of kthin (or kmind), only every * * kthin-th (or kmind-th) element of the 0-1 series is copied to this * * thinned copy of the series. * * * * ixkstart is the subscript of the first element of the thinned * * series. That is, ixkstart = iteracnt + 1. * * * * thincnt is the current length of the thinned series. * * * ************************************************************************ double precision empquant double precision cutpt double precision qhat double precision g2 double precision bic double precision phi double precision alpha double precision beta double precision probsum double precision tmp1 double precision tmp2 real ppnd7 integer ixkstart integer thincnt integer i1 integer rc ************************************************************************ * * * If the q argument is a postive number, interpret it as the quantile * * which is to be ascertained using MCMC. It should be a positive * * number less than 1. Set qhat to the passed value of q (we will use * * qhat later when we calculate nmin). * * * ************************************************************************ if (q.gt.0.0d0) then qhat = q ************************************************************************ * * * Find the q-th quantile of the original MCMC series of parameter * * estimates. * * * ************************************************************************ cutpt = empquant(original,iteracnt,qhat,work) ************************************************************************ * * * Calculate a binary 0-1 series indicating which elements are less * * than or equal to the cutpt (set to 1) and which elements are * * greater than the cutpt (set to 0). The resulting series is stored * * in the work vector. * * * ************************************************************************ call dichot(original,iteracnt,cutpt,work) ************************************************************************ * * * Otherwise treat the original input series as a binary 0-1 series of * * outcomes whose probability needs to be estimated using MCMC. This * * is easily accomplished by copying the input series into the first * * iteracnt elements of the work vector, converting the double preci- * * sion input into an equivalent integer vector of 0's and 1's. For * * this case we will also need to set qhat equal to the proportion of * * 1's in the original input data vector. * * * ************************************************************************ else qhat = 0.0d0 do 300 i1=1,iteracnt if (original(i1).eq.0.0d0 .or. original(i1).eq.1.0d0) then work(i1) = int( original(i1) ) qhat = qhat + original(i1) else r15 = 12 return end if 300 continue qhat = qhat / dble( iteracnt ) end if ************************************************************************ * * * Find kthin, the degree of thinning at which the indicator series is * * first-order Markov. * * * ************************************************************************ ixkstart = iteracnt + 1 kthin = 1 500 call thin(work,iteracnt,kthin,work(ixkstart),thincnt) call mctest(work(ixkstart),thincnt,g2,bic) if (bic.le.0.0d0) go to 600 kthin = kthin + 1 go to 500 ************************************************************************ * * * Calculate both the alpha and beta transition probabilities (in the * * Cox & Miller parametrization) of the two state first-order Markov * * chain determined above. * * * ************************************************************************ 600 call mcest(work(ixkstart),thincnt,alpha,beta) kmind = kthin go to 750 ************************************************************************ * * * Now compute just how big the spacing needs to be so that a thinned * * chain would no longer be a Markov chain, but rather would be an * * independence chain. This thinning parameter must be at least as * * large as the thinning parameter required for a first-order Markov * * chain. * * * ************************************************************************ 700 call thin(work,iteracnt,kmind,work(ixkstart),thincnt) 750 call indtest(work(ixkstart),thincnt,g2,bic) if (bic.le.0.0d0) go to 800 kmind = kmind + 1 go to 700 ************************************************************************ * * * Estimate the first-order Markov chain parameters and find the * * burn-in and precision number of required iterations. * * * ************************************************************************ 800 probsum = alpha + beta tmp1 = dlog(probsum * epsilon / max(alpha,beta)) / + dlog( dabs(1.0d0 - probsum) ) nburn = int( tmp1 + 1.0d0 ) * kthin ************************************************************************ * * * Note: ppnd7 is the routine that implements AS algorithm 241. * * It calculates the specified percentile of the Normal distribution. * * * ************************************************************************ phi = dble(ppnd7( ((real(s) + 1.0) / 2.0), rc )) tmp2 = (2.0d0 - probsum) * alpha * beta * phi**2 / (probsum**3 * + r**2) nprec = int( tmp2 + 1.0d0 ) * kthin nmin = int( ((1.0d0-qhat) * qhat * phi**2 / r**2) + 1.0d0 ) ************************************************************************ * * * At this point we have calculated nmin, kthin, nburn, nprec and * * kmind, so we can return to the calling program. * * * ************************************************************************ r15 = 0 return end ************************************************************************ * * * empquant 9-13-94 * * * * This function finds the q-th empirical quantile of the input double * * precsion series, data, of length iteracnt. * * * * The algorithm used by this subroutine is the one used in the SPLUS * * quantile function. * * * ************************************************************************ ************************************************************************ * * * Inputs: * * * * data = a double precision vector of numbers whose q-th * * empirical quantile is to be calculated. * * * * iteracnt = an integer containing the number of elements in the * * input data vector, data. There must also be this * * many elements in the work vector. * * * * q = a double precision number between 0.0d0 and 1.0d0, * * inclusive, specifying which empirical quantile is * * wanted. * * * * work = a double precision vector to be used as a work area * * for the sort subroutine called by empquant. This * * vector must contain at least iteracnt elements. * * * * * * Outputs: * * * * empquant = a double precision number corresponding to the q-th * * level of the sorted vector of input values. * * * ************************************************************************ function empquant(data,iteracnt,q,work) double precision empquant integer iteracnt double precision data(iteracnt) double precision q double precision work(*) ************************************************************************ * * * The following variables hold various temporary values used in this * * subroutine. This includes any do-loop counters and similar such * * temporary subscripts and indices. * * * ************************************************************************ double precision order double precision fract integer low integer high integer i1 ************************************************************************ * * * Copy the input series of double precision numbers into the work * * area provided by the caller. In this way the original input will * * not be modified by this subroutine. * * * ************************************************************************ do 300 i1=1,iteracnt work(i1) = data(i1) 300 continue ************************************************************************ * * * Sort the input series into ascending order. * * * ************************************************************************ call ssort(work,work,iteracnt,int(1)) ************************************************************************ * * * Now locate the q-th empirical quantile. This apparently longer * * than necessary calculation is used so as to appropriately handle * * the case where there are two or more identical values at the * * requested quantile. * * * ************************************************************************ order = dble(iteracnt-1) * q + 1.0d0 fract = mod(order, 1.0d0) low = max(int(order), 1) high = min(low+1, iteracnt) empquant = (1.0d0 - fract) * work(low) + fract * work(high) return end ************************************************************************ * * * dichot 9-13-94 * * * * This subroutine takes a double precision vector, data, of length * * iteracnt and converts it into a 0-1 series in zt, depending on * * which elements of data are less than or greater than cutpt. * * * ************************************************************************ ************************************************************************ * * * Inputs: * * * * data = a double precision vector containing a series of * * numbers which are to be compared to cutpt in order to * * determine which elements of zt are to be set to 1 and * * which are to be set to 0. * * * * iteracnt = an integer containing the number of elements in the * * input data vector. * * * * cutpt = a double precision number indicating the boundary * * about which the input data vector is to be dichoto- * * mized, i.e. set to 1 when less than or equal to the * * cutpoint and to 0 when greater than the cutpoint. * * * * * * Outputs: * * * * zt = an integer vector containing zeros and ones depending * * on whether or not the corresponding elements of data * * were less than the cutpoint or not. * * * ************************************************************************ subroutine dichot(data,iteracnt,cutpt,zt) integer iteracnt double precision data(iteracnt) double precision cutpt integer zt(iteracnt) ************************************************************************ * * * The following variables hold various temporary values used in this * * subroutine. This includes any do-loop counters and similar such * * temporary subscripts and indices. * * * ************************************************************************ integer i1 ************************************************************************ * * * If the entry in the input data vector is less than or equal to the * * cutpoint, set the corresponding element of zt to 1, otherwise set * * it to 0. * * * ************************************************************************ do 500 i1=1,iteracnt if (data(i1).le.cutpt) then zt(i1) = 1 else zt(i1) = 0 end if 500 continue return end ************************************************************************ * * * thin 9-13-94 * * * * This subroutine takes the integer-valued vector series of length * * iteracnt and outputs elements 1,1+kthin,1+2kthin,1+3kthin,... in * * the result vector. * * * ************************************************************************ ************************************************************************ * * * Inputs: * * * * series = an integer vector containing the sequence of numbers * * from which this subroutine is to select every kthin'th * * number to be copied to the output vector, starting * * with the first number. There are iteracnt elements in * * this vector. * * * * iteracnt = an integer containing the number of elements in the * * input vector of numbers to be thinned, series. If * * kthin can be as little as 1, the output result vector * * must also contain iteracnt elements. * * * * kthin = an integer specifying the interval between elements of * * the input data vector, series, which are to be copied * * to the output vector, result. If kthin is 1, then all * * of series is to be copied to result. If kthin is 2, * * then only every other element of series is to be * * copied to result. If kthin is 3, then every third * * element is copied and so forth. * * * * * * Outputs: * * * * result = an integer vector containing the thinned subset of the * * input data vector, series, starting with the first * * element and copying every kthin'th from there on. The * * number of meaningful elements in this vector will be * * returned as thincnt. * * * * thincnt = an integer containing the number of elements actually * * copied to the result vector. * * * ************************************************************************ subroutine thin(series,iteracnt,kthin,result,thincnt) integer iteracnt integer series(iteracnt) integer kthin integer result(iteracnt) integer thincnt ************************************************************************ * * * The following variables hold various temporary values used in this * * subroutine. This includes any do-loop counters and similar such * * temporary subscripts and indices. * * * ************************************************************************ integer from integer i1 ************************************************************************ * * * The specified subset of the input data vector, series, is copied to * * sequential elements of the output vector, result. Stop copying * * when the entries in the input data vector run out. * * * ************************************************************************ do 300 i1=1,iteracnt from = (i1-1) * kthin + 1 if (from.gt.iteracnt) go to 600 result(i1) = series(from) 300 continue ************************************************************************ * * * Calculate how many elements have been copied to the output vector, * * result, and return this number as thincnt. * * * ************************************************************************ 600 thincnt = i1 - 1 return end ************************************************************************ * * * mctest 12-05-94 * * * * This subroutine tests for a first-order Markov chain against a * * second-order Markov chain using the log-linear modeling * * formulation. Here the first-order model is the [12][23] model, * * while the 2nd-order model is the saturated model. The [12][23] * * model has closed form estimates - see Bishop, Feinberg and Holland. * * * ************************************************************************ ************************************************************************ * * * Inputs: * * * * data = an integer vector containing the series of 0's and 1's * * for which this subroutine is to determine whether a * * first-order Markov chain is sufficient or whether a * * second-order Markov chain is needed to model the data. * * There must be at least datacnt elements in the data * * vector. * * * * datacnt = an integer containing the number of elements in the * * data argument. * * * * * * Outputs: * * * * g2 = a double precision number in which this subroutine is * * to return the log likelihood ratio statistic for * * testing a second-order Markov chain against only a * * first-order Markov chain. Bishop, Feinberg and * * Holland denote this statistic as G2. * * * * bic = a double precision number in which this subroutine is * * to return the BIC value corresponding to the log * * likelihood ratio statistic, g2. * * * ************************************************************************ subroutine mctest(data,datacnt,g2,bic) integer datacnt integer data(datacnt) double precision g2 double precision bic ************************************************************************ * * * The following variables hold various temporary values used in this * * subroutine. This includes any do-loop counters and similar such * * temporary subscripts and indices. * * * ************************************************************************ double precision fitted double precision focus integer tran(2,2,2) integer i1 integer i2 integer i3 ************************************************************************ * * * Initialize the transition counts array to all zeroes. * * * ************************************************************************ do 300 i1=1,2 do 200 i2=1,2 do 100 i3=1,2 tran(i1,i2,i3) = 0 100 continue 200 continue 300 continue ************************************************************************ * * * Count up the number of occurrences of each possible type of * * transition. Keep these counts in the transition counts array. * * * ************************************************************************ do 400 i1=3,datacnt tran( data(i1-2)+1, data(i1-1)+1, data(i1)+1 ) = + tran( data(i1-2)+1, data(i1-1)+1, data(i1)+1 ) + 1 400 continue ************************************************************************ * * * Compute the log likelihood ratio statistic for testing a second- * * order Markov chain against only a first-order Markov chain. This * * is Bishop, Feinberg and Holland's G2 statistic. * * * ************************************************************************ g2 = 0.0d0 do 700 i1=1,2 do 600 i2=1,2 do 500 i3=1,2 if (tran(i1,i2,i3).eq.0) go to 500 fitted = dble( (tran(i1,i2,1) + tran(i1,i2,2)) * + (tran(1,i2,i3) + tran(2,i2,i3)) ) / dble( tran(1,i2,1) + + tran(1,i2,2) + tran(2,i2,1) + tran(2,i2,2) ) focus = dble( tran(i1,i2,i3) ) g2 = g2 + dlog( focus / fitted ) * focus 500 continue 600 continue 700 continue g2 = g2 * 2.0d0 ************************************************************************ * * * Finally calculate the associated bic statistic and return to the * * caller. * * * ************************************************************************ bic = g2 - dlog( dble(datacnt-2) ) * 2.0d0 return end ************************************************************************ * * * indtest 11-23-94 * * * * This subroutine tests for an independence chain against a first- * * order Markov chain using the log-linear modeling formulation. In * * our case the independence model is the [1][2][3] model, while the * * first-order model is the [12][23] model. Both the [1][2][3] and * * the [12][23] models have closed form estimates - see Bishop, * * Feinberg and Holland (1975). * * * ************************************************************************ ************************************************************************ * * * Inputs: * * * * data = an integer vector containing the series of 0's and 1's * * for which this subroutine is to determine whether an * * independence chain is sufficient or whether a first- * * order Markov chain is needed to model the data. There * * must be at least datacnt elements in the data vector. * * * * datacnt = an integer containing the number of elements in the * * data argument. * * * * * * Outputs: * * * * g2 = a double precision number in which this subroutine is * * to return the log likelihood ratio statistic for * * testing a first-order Markov chain against simply an * * independence chain. Bishop, Feinberg and Holland * * denote this statistic as G2. * * * * bic = a double precision number in which this subroutine is * * to return the BIC value corresponding to the log * * likelihood ratio statistic, g2. * * * ************************************************************************ subroutine indtest(data,datacnt,g2,bic) integer datacnt integer data(datacnt) double precision g2 double precision bic ************************************************************************ * * * The following variables hold various temporary values used in this * * subroutine. This includes any do-loop counters and similar such * * temporary subscripts and indices. * * * ************************************************************************ double precision fitted double precision focus double precision dcm1 integer tran(2,2) integer i1 integer i2 ************************************************************************ * * * Initialize the transition counts array to all zeroes. * * * ************************************************************************ do 300 i1=1,2 do 200 i2=1,2 tran(i1,i2) = 0 200 continue 300 continue ************************************************************************ * * * Count up the number of occurrences of each possible type of * * transition. Keep these counts in the transition counts array. * * * ************************************************************************ do 400 i1=2,datacnt tran( data(i1-1)+1, data(i1)+1 ) = tran( data(i1-1)+1, + data(i1)+1 ) + 1 400 continue ************************************************************************ * * * Compute the log likelihood ratio statistic for testing a first- * * order Markov chain against simply an independence chain. This is * * Bishop, Feinberg and Holland's G2 statistic. * * * ************************************************************************ dcm1 = dble( datacnt-1 ) g2 = 0.0d0 do 700 i1=1,2 do 600 i2=1,2 if (tran(i1,i2).eq.0) go to 600 fitted = dble( (tran(i1,1) + tran(i1,2)) * (tran(1,i2) + + tran(2,i2)) ) / dcm1 focus = dble( tran(i1,i2) ) g2 = g2 + dlog( focus / fitted ) * focus 600 continue 700 continue g2 = g2 * 2.0d0 ************************************************************************ * * * Finally calculate the associated bic statistic and return to the * * caller. Note that the first-order Markov chain model contains just * * one more parameter than does the independence chain model, so p=1. * * * ************************************************************************ bic = g2 - dlog( dcm1 ) return end ************************************************************************ * * * mcest 12-05-94 * * * * Estimate the parameters of a first-order Markov chain (in the Cox * * & Miller parametrization) from a series of binary, i.e. 0-1, data * * passed in the data vector argument. * * * ************************************************************************ ************************************************************************ * * * Inputs: * * * * data = an integer vector containing the series of 0's and 1's * * from which this subroutine is to calculate empirical * * probabilities of a transition from a 0 to a 1 or a * * transition from a 1 to a 0. There must be at least * * datacnt elements in this vector. * * * * datacnt = an integer containing the number of elements in the * * data argument. * * * * * * Outputs: * * * * alpha = a double precision number in which this subroutine is * * to return the empirical probability of a 1 following * * a 0 in the input data vector. * * * * beta = a double precision number in which this subroutine is * * to return the empirical probability of a 0 following * * a 1 in the input data vector. * * * ************************************************************************ subroutine mcest(data,datacnt,alpha,beta) integer datacnt integer data(datacnt) double precision alpha double precision beta ************************************************************************ * * * The following variables hold various temporary values used in this * * subroutine. This includes any do-loop counters and similar such * * temporary subscripts and indices. * * * ************************************************************************ integer tran(2,2) integer i1 integer i2 ************************************************************************ * * * Initialize the transition counts array to all zeroes. * * * ************************************************************************ do 200 i1=1,2 do 100 i2=1,2 tran(i1,i2) = 0 100 continue 200 continue ************************************************************************ * * * Count up the number of occurrences of each possible type of * * transition. Keep these counts in the transition counts array. * * * ************************************************************************ do 400 i1=2,datacnt tran( data(i1-1)+1, data(i1)+1 ) = tran( data(i1-1)+1, + data(i1)+1 ) + 1 400 continue ************************************************************************ * * * Calculate the empirical transition probabilities between 0's and * * 1's in the input (returned in alpha) and between 1's and 0's in the * * input (returned in beta). * * * ************************************************************************ alpha = dble(tran(1,2)) / dble( (tran(1,1) + tran(1,2)) ) beta = dble(tran(2,1)) / dble( (tran(2,1) + tran(2,2)) ) return end REAL FUNCTION PPND7(P,IFAULT) * ALGORITHM AS241 APPL. STATIST. (1988) VOL. 37, NO. 3, 477- * 484. * Produces the normal deviate Z corresponding to a given lower * tail area of P; Z is accurate to about 1 part in 10**7. * The hash sums below are the sums of the mantissas of the * coefficients. They are included for use in checking * transcription. REAL ZERO, ONE, HALF, SPLIT1, SPLIT2, CONST1, CONST2, A0, A1, + A2, A3, B1, B2, B3, C0, C1, C2, C3, D1, D2, E0, E1, E2, + E3, F1, F2, P, Q, R PARAMETER (ZERO = 0.0, ONE = 1.0, HALF = 0.5, + SPLIT1 = 0.425, SPLIT2 = 5.0, + CONST1 = 0.180625, CONST2 = 1.6) INTEGER IFAULT * Coefficients for P close to 0.5 PARAMETER (A0 = 3.3871327179E+00, A1 = 5.0434271938E+01, + A2 = 1.5929113202E+02, A3 = 5.9109374720E+01, + B1 = 1.7895169469E+01, B2 = 7.8757757664E+01, + B3 = 6.7187563600E+01) * HASH SUM AB 32.3184577772 * Coefficients for P not close to 0, 0.5 or 1. PARAMETER (C0 = 1.4234372777E+00, C1 = 2.7568153900E+00, + C2 = 1.3067284816E+00, C3 = 1.7023821103E-01, + D1 = 7.3700164250E-01, D2 = 1.2021132975E-01) * HASH SUM CD 15.7614929821 * Coefficients for P near 0 or 1. PARAMETER (E0 = 6.6579051150E+00, E1 = 3.0812263860E+00, + E2 = 4.2868294337E-01, E3 = 1.7337203997E-02, + F1 = 2.4197894225E-01, F2 = 1.2258202635E-02) * HASH SUM EF 19.4052910204 IFAULT = 0 Q = P - HALF IF (ABS(Q) .LE. SPLIT1) THEN R = CONST1 - Q * Q PPND7 = Q * (((A3 * R + A2) * R + A1) * R + A0) / + (((B3 * R + B2) * R + B1) * R + ONE) RETURN ELSE IF (Q .LT. ZERO) THEN R = P ELSE R = ONE - P END IF IF (R .LE. ZERO) THEN IFAULT = 1 PPND7 = ZERO RETURN END IF R = SQRT(-LOG(R)) IF (R .LE. SPLIT2) THEN R = R - CONST2 PPND7 = (((C3 * R + C2) * R + C1) * R + C0) / + ((D2 * R + D1) * R + ONE) ELSE R = R - SPLIT2 PPND7 = (((E3 * R + E2) * R + E1) * R + E0) / + ((F2 * R + F1) * R + ONE) END IF IF (Q .LT. ZERO) PPND7 = - PPND7 RETURN END IF END SUBROUTINE SSORT(X,Y,N,KFLAG) ****BEGIN PROLOGUE SSORT ****REVISION OCTOBER 1,1980 ****CATEGORY NO. M1 ****KEYWORD(S) SORTING,SORT,SINGLETON QUICKSORT,QUICKSORT ****DATE WRITTEN NOVEMBER,1976 ****AUTHOR JONES R.E., WISNIEWSKI J.A. (SLA) ****PURPOSE * SSORT SORTS ARRAY X AND OPTIONALLY MAKES THE SAME * INTERCHANGES IN ARRAY Y. THE ARRAY X MAY BE SORTED IN * INCREASING ORDER OR DECREASING ORDER. A SLIGHTLY MODIFIED * QUICKSORT ALGORITHM IS USED. ****DESCRIPTION * SANDIA MATHEMATICAL PROGRAM LIBRARY * APPLIED MATHEMATICS DIVISION 2646 * SANDIA LABORATORIES * ALBUQUERQUE, NEW MEXICO 87185 * CONTROL DATA 6600/7600 VERSION 8.1 AUGUST 1980 * * WRITTEN BY RONDALL E JONES * MODIFIED BY JOHN A. WISNIEWSKI TO USE THE SINGLETON QUICKSORT * ALGORITHM. DATE 18 NOVEMBER 1976. * * ABSTRACT * SSORT SORTS ARRAY X AND OPTIONALLY MAKES THE SAME * INTERCHANGES IN ARRAY Y. THE ARRAY X MAY BE SORTED IN * INCREASING ORDER OR DECREASING ORDER. A SLIGHTLY MODIFIED * QUICKSORT ALGORITHM IS USED. * * REFERENCE * SINGLETON,R.C., ALGORITHM 347, AN EFFICIENT ALGORITHM FOR * SORTING WITH MINIMAL STORAGE, CACM,12(3),1969,185-7. * * DESCRIPTION OF PARAMETERS * X - ARRAY OF VALUES TO BE SORTED (USUALLY ABSCISSAS) * Y - ARRAY TO BE (OPTIONALLY) CARRIED ALONG * N - NUMBER OF VALUES IN ARRAY X TO BE SORTED * KFLAG - CONTROL PARAMETER * =2 MEANS SORT X IN INCREASING ORDER AND CARRY Y ALONG. * =1 MEANS SORT X IN INCREASING ORDER (IGNORING Y) * =-1 MEANS SORT X IN DECREASING ORDER (IGNORING Y) * =-2 MEANS SORT X IN DECREASING ORDER AND CARRY Y ALONG. * ****REFERENCE(S) * SINGLETON,R.C., ALGORITHM 347, AN EFFICIENT ALGORITHM FOR * SORTING WITH MINIMAL STORAGE, CACM,12(3),1969,185-7. ****END PROLOGUE INTEGER I, IJ, IL(21), IU(21), J, K, KFLAG, KK, L, M, N, NN DOUBLE PRECISION R, T, TT, TTY, TY, X(N), Y(N) ****FIRST EXECUTABLE STATEMENT SSORT NN = N KK = IABS(KFLAG) * * ALTER ARRAY X TO GET DECREASING ORDER IF NEEDED * 15 IF (KFLAG.GE.1) GO TO 30 DO 20 I=1,NN 20 X(I) = -X(I) 30 GO TO (100,200),KK * * SORT X ONLY * 100 CONTINUE M = 1 I = 1 J = NN R = .375 110 IF (I .EQ. J) GO TO 155 115 IF (R .GT. .5898437) GO TO 120 R = R+3.90625E-2 GO TO 125 120 R = R-.21875 125 K = I * SELECT A CENTRAL ELEMENT OF THE * ARRAY AND SAVE IT IN LOCATION T IJ = I + IDINT( DBLE(J-I) * R ) T = X(IJ) * IF FIRST ELEMENT OF ARRAY IS GREATER * THAN T, INTERCHANGE WITH T IF (X(I) .LE. T) GO TO 130 X(IJ) = X(I) X(I) = T T = X(IJ) 130 L = J * IF LAST ELEMENT OF ARRAY IS LESS THAN * T, INTERCHANGE WITH T IF (X(J) .GE. T) GO TO 140 X(IJ) = X(J) X(J) = T T = X(IJ) * IF FIRST ELEMENT OF ARRAY IS GREATER * THAN T, INTERCHANGE WITH T IF (X(I) .LE. T) GO TO 140 X(IJ) = X(I) X(I) = T T = X(IJ) GO TO 140 135 TT = X(L) X(L) = X(K) X(K) = TT * FIND AN ELEMENT IN THE SECOND HALF OF * THE ARRAY WHICH IS SMALLER THAN T 140 L = L-1 IF (X(L) .GT. T) GO TO 140 * FIND AN ELEMENT IN THE FIRST HALF OF * THE ARRAY WHICH IS GREATER THAN T 145 K = K+1 IF (X(K) .LT. T) GO TO 145 * INTERCHANGE THESE ELEMENTS IF (K .LE. L) GO TO 135 * SAVE UPPER AND LOWER SUBSCRIPTS OF * THE ARRAY YET TO BE SORTED IF (L-I .LE. J-K) GO TO 150 IL(M) = I IU(M) = L I = K M = M+1 GO TO 160 150 IL(M) = K IU(M) = J J = L M = M+1 GO TO 160 * BEGIN AGAIN ON ANOTHER PORTION OF * THE UNSORTED ARRAY 155 M = M-1 IF (M .EQ. 0) GO TO 300 I = IL(M) J = IU(M) 160 IF (J-I .GE. 1) GO TO 125 IF (I .EQ. 1) GO TO 110 I = I-1 165 I = I+1 IF (I .EQ. J) GO TO 155 T = X(I+1) IF (X(I) .LE. T) GO TO 165 K = I 170 X(K+1) = X(K) K = K-1 IF (T .LT. X(K)) GO TO 170 X(K+1) = T GO TO 165 * * SORT X AND CARRY Y ALONG * 200 CONTINUE M = 1 I = 1 J = NN R = .375 210 IF (I .EQ. J) GO TO 255 215 IF (R .GT. .5898437) GO TO 220 R = R+3.90625E-2 GO TO 225 220 R = R-.21875 225 K = I * SELECT A CENTRAL ELEMENT OF THE * ARRAY AND SAVE IT IN LOCATION T IJ = I + IDINT( DBLE(J-I) * R ) T = X(IJ) TY = Y(IJ) * IF FIRST ELEMENT OF ARRAY IS GREATER * THAN T, INTERCHANGE WITH T IF (X(I) .LE. T) GO TO 230 X(IJ) = X(I) X(I) = T T = X(IJ) Y(IJ) = Y(I) Y(I) = TY TY = Y(IJ) 230 L = J * IF LAST ELEMENT OF ARRAY IS LESS THAN * T, INTERCHANGE WITH T IF (X(J) .GE. T) GO TO 240 X(IJ) = X(J) X(J) = T T = X(IJ) Y(IJ) = Y(J) Y(J) = TY TY = Y(IJ) * IF FIRST ELEMENT OF ARRAY IS GREATER * THAN T, INTERCHANGE WITH T IF (X(I) .LE. T) GO TO 240 X(IJ) = X(I) X(I) = T T = X(IJ) Y(IJ) = Y(I) Y(I) = TY TY = Y(IJ) GO TO 240 235 TT = X(L) X(L) = X(K) X(K) = TT TTY = Y(L) Y(L) = Y(K) Y(K) = TTY * FIND AN ELEMENT IN THE SECOND HALF OF * THE ARRAY WHICH IS SMALLER THAN T 240 L = L-1 IF (X(L) .GT. T) GO TO 240 * FIND AN ELEMENT IN THE FIRST HALF OF * THE ARRAY WHICH IS GREATER THAN T 245 K = K+1 IF (X(K) .LT. T) GO TO 245 * INTERCHANGE THESE ELEMENTS IF (K .LE. L) GO TO 235 * SAVE UPPER AND LOWER SUBSCRIPTS OF * THE ARRAY YET TO BE SORTED IF (L-I .LE. J-K) GO TO 250 IL(M) = I IU(M) = L I = K M = M+1 GO TO 260 250 IL(M) = K IU(M) = J J = L M = M+1 GO TO 260 * BEGIN AGAIN ON ANOTHER PORTION OF * THE UNSORTED ARRAY 255 M = M-1 IF (M .EQ. 0) GO TO 300 I = IL(M) J = IU(M) 260 IF (J-I .GE. 1) GO TO 225 IF (I .EQ. 1) GO TO 210 I = I-1 265 I = I+1 IF (I .EQ. J) GO TO 255 T = X(I+1) TY = Y(I+1) IF (X(I) .LE. T) GO TO 265 K = I 270 X(K+1) = X(K) Y(K+1) = Y(K) K = K-1 IF (T .LT. X(K)) GO TO 270 X(K+1) = T Y(K+1) = TY GO TO 265 * * CLEAN UP * 300 IF (KFLAG.GE.1) RETURN DO 310 I=1,NN 310 X(I) = -X(I) RETURN END pymc-2.2+ds/pymc/gp/000077500000000000000000000000001204033704200143005ustar00rootroot00000000000000pymc-2.2+ds/pymc/gp/BasisCovariance.py000066400000000000000000000354131204033704200177140ustar00rootroot00000000000000# TODO: Make a better class for bases. Should be either a multidimensional generator or should output # a multidimensional ndarray, and dots into the basis shouldn't require it to be a matrix. # Note tensordot can do the dot products you need. # Make an object-valued ndarray whose elements are index tuples. # Make it a matrix whose elements are what you want, and then reshape it multidimensional, and see where the indices # have to end up. # Copyright (c) Anand Patil, 2007 __docformat__='reStructuredText' __all__ = ['BasisCovariance', 'SeparableBasisCovariance'] from numpy import * from numpy.linalg import eigh, solve, cholesky, LinAlgError from .GPutils import regularize_array, trisolve from .linalg_utils import basis_diag_call from .incomplete_chol import ichol_basis, ichol_full from .Covariance import Covariance from pymc import six xrange = six.moves.xrange class BasisCovariance(Covariance): """ C=BasisCovariance(basis, coef_cov, relative_precision, **params) Realizations generated using such covariances will be of the form: R(x) = \sum basis(x).ravel()[i] * c[i], c ~ N(mu, coef_cov) :Arguments: - `basis`: An n-dimensional array of functions. Each should take arguments of shape (m, n), where m may be any integer, followed by arbitrary keyword parameters. - `coef_cov`: An array of shape basis.shape or basis.shape*2 (tuple multiplication). If shape=basis.shape, the coefficients are assumed to be independent. Otherwise coef_cov[i[1],...,i[n], j[1],...,j[n]] gives the prior covariance of coefficients i[1],...,i[n] and j[1],...,j[n]. - `params`: Parameters to be passed to basis. - `relative_precision`: See documentation. :SeeAlso: Mean, Realization, Covariance, SeparableBasisCovariance, observe """ def __init__(self, basis, coef_cov, relative_precision = 1.0E-15, **params): self.observed = False self.obs_mesh = None self.obs_V = None self.Uo = None self.obs_piv = None self.obs_len = None self.full_piv = None self.full_obs_mesh = None self.basiscov=True self.basis = ravel(basis) self.shape = self.get_shape_from_basis(basis) self.n = prod(self.shape) self.ndim = len(self.shape) self.relative_precision = relative_precision self.params = params if coef_cov.shape == self.shape: self.coef_cov = asmatrix(diag(coef_cov.ravel())) elif coef_cov.shape == self.shape*2: self.coef_cov = asmatrix(coef_cov.reshape((self.n, self.n))) else: raise ValueError("Covariance tensor's shape must be basis.shape or basis.shape*2 (using tuple multiplication).") # Cholesky factor the covariance matrix of the coefficients. U, m, piv = ichol_full(c=self.coef_cov, reltol=relative_precision) self.coef_U = asmatrix(U[:m,argsort(piv)]) # Rank of the coefficient covariance. self.unobs_m = m self.m = m # Record the unobserved Cholesky factor of the coefficient covariance. self.unobs_coef_U = self.coef_U.copy() self.observed = False def get_shape_from_basis(self, basis): return shape(basis) def eval_basis(self, x, regularize = True): """ basis_mat = C.eval_basis(x) Evaluates self's basis functions on x and returns them stacked in a matrix. basis_mat[i,j] gives basis function i evaluated at x[j,:]. """ if regularize: x = regularize_array(x) out = zeros((self.n, x.shape[0]), dtype=float, order='F') for i in xrange(self.n): out[i] = self.basis[i](x, **self.params) return out def cholesky(self, x, apply_pivot = True, observed=True, nugget=None, regularize=True): __doc__ = Covariance.cholesky.__doc__ if regularize: x = regularize_array(x) # The pivots are just 1:N, N being the shape of x. piv_return = arange(x.shape[1], dtype=int) # The rank of the Cholesky factor is just the rank of the # coefficient covariance matrix. if observed: coef_U = self.coef_U m = self.m else: coef_U = self.unobs_coef_U m = self.unobs_m # The Cholesky factor is the Cholesky factor of the basis times # the basis evaluated on x. This isn't triangular, but it does have # the property U.T*U = self(x,x). U_return = asmatrix(self.eval_basis(x, regularize=False)) U_return = coef_U * U_return if apply_pivot: # Good for users. return U_return else: # Good for self.observe. return {'piv': piv_return, 'U': U_return} def continue_cholesky(self, x, x_old, chol_dict_old, apply_pivot = True, observed=True, nugget=None): __doc__ = Covariance.continue_cholesky.__doc__ # Stack the old and new x's. xtot = vstack((x_old,x)) # Extract information about the Cholesky factor of self(x_old). U_old = chol_dict_old['U'] m_old = U_old.shape[0] # The pivots will just be 1:N. piv_return = arange(xtot.shape[1], dtype=int) # The rank of the Cholesky factor is the rank of the Cholesky factor of the # coefficient covariance. if observed: coef_U = self.coef_U m = self.m else: coef_U = self.unobs_coef_U m = self.unobs_m # The number of old and new observations. N_old = x_old.shape[0] N_new = x.shape[0] # The Cholesky factor is the Cholesky factor of the coefficient covariance # times the basis function. U_new = asmatrix(self.eval_basis(x, regularize=False)) U_new = coef_U * U_new U_return = hstack((U_old, U_new)) if apply_pivot: # Good for users. return U_return else: # Good for self.observe. return {'piv': piv_return, 'U': U_return} def observe(self, obs_mesh, obs_V, output_type='o'): __doc__ = Covariance.observe.__doc__ ndim = obs_mesh.shape[1] nobs = obs_mesh.shape[0] if self.ndim is not None: if not ndim==self.ndim: raise ValueError("Dimension of observation mesh is not equal to dimension of base mesh.") else: self.ndim = ndim # bases_o is the basis evaluated on the observation mesh. basis_o = asmatrix(self.eval_basis(obs_mesh, regularize=False)) # chol(basis_o.T * coef_cov * basis_o) chol_inner = self.coef_U * basis_o if output_type=='s': C_eval = dot(chol_inner.T, chol_inner).copy('F') U_eval = linalg.cholesky(C_eval).T.copy('F') U = U_eval m = U_eval.shape[0] piv = arange(m) else: # chol(basis_o.T * coef_cov * basis_o + diag(obs_V)). Really should do this as low-rank update of covariance # of V. U, piv, m = ichol_basis(basis=chol_inner, nug=obs_V, reltol=self.relative_precision) U = asmatrix(U) piv_new = piv[:m] self.obs_piv = piv_new obs_mesh_new = obs_mesh[piv_new,:] self.Uo = U[:m,:m] # chol(basis_o.T * coef_cov * basis_o + diag(obs_V)) ^ -T * basis_o.T self.Uo_cov = trisolve(self.Uo, basis_o[:,piv[:m]].T, uplo='U', transa='T') # chol(basis_o.T * coef_cov * basis_o + diag(obs_V)).T.I * basis_o.T * coef_cov self.Uo_cov = self.Uo_cov * self.coef_cov # coef_cov = coef_cov - coef_cov * basis_o * (basis_o.T * coef_cov * basis_o + diag(obs_V)).I * basis_o.T * coef_cov self.coef_cov = self.coef_cov - self.Uo_cov.T * self.Uo_cov # coef_U = chol(coef_cov) U, m, piv = ichol_full(c=self.coef_cov, reltol=self.relative_precision) U = asmatrix(U) self.coef_U = U[:m,argsort(piv)] self.m = m if output_type=='o': return piv_new, obs_mesh_new if output_type=='s': return U_eval, C_eval, basis_o raise ValueError('Output type not recognized.') def __call__(self, x, y=None, observed=True, regularize=True, return_Uo_Cxo=False): # Record the initial shape of x and regularize it. orig_shape = shape(x) if len(orig_shape)>1: orig_shape = orig_shape[:-1] if regularize: x=regularize_array(x) ndimx = x.shape[-1] lenx = x.shape[0] # Get the correct version of the Cholesky factor of the coefficient covariance. if observed: coef_U = self.coef_U else: coef_U = self.unobs_coef_U # Safety. if self.ndim is not None: if not self.ndim == ndimx: raise ValueError("The number of spatial dimensions of x does not match the number of spatial dimensions of the Covariance instance's base mesh.") # Evaluate the Cholesky factor of self's evaluation on x. # Will be observed or not depending on which version of coef_U # is used. basis_x_ = self.eval_basis(x, regularize=False) basis_x = coef_U*basis_x_ # ========================================================== # = If only one argument is provided, return the diagonal: = # ========================================================== if y is None: # Diagonal calls done in Fortran for speed. V = basis_diag_call(basis_x) if return_Uo_Cxo: return V.reshape(orig_shape), basis_x_ else: return V.reshape(orig_shape) # =========================================================== # = If the same argument is provided twice, save some work: = # =========================================================== if y is x: if return_Uo_Cxo: return basis_x.T*basis_x, basis_x_ else: return basis_x # ========================================= # = If y and x are different, do needful: = # ========================================= else: # Regularize y and record its original shape. if regularize: y=regularize_array(y) ndimy = y.shape[-1] leny = y.shape[0] if not ndimx==ndimy: raise ValueError('The last dimension of x and y (the number of spatial dimensions) must be the same.') # Evaluate the Cholesky factor of self's evaluation on y. # Will be observed or not depending on which version of coef_U # is used. basis_y = self.eval_basis(y, regularize=False) basis_y = coef_U*basis_y return basis_x.T*basis_y # Helper methods for Mean instances. def _unobs_reg(self, M): # reg_mat = chol(self.basis_o.T * self.coef_cov * self.basis_o + diag(obs_V)).T.I * self.basis_o.T * self.coef_cov * # chol(self(obs_mesh_*, obs_mesh_*)).T.I * M.dev return self.Uo_cov.T * asmatrix(trisolve(self.Uo, M.dev, uplo='U', transa='T')).T def _obs_reg(self, M, dev_new, m_old): # reg_mat = chol(self.basis_o.T * self.coef_cov * self.basis_o + diag(obs_V)).T.I * self.basis_o.T * self.coef_cov * # chol(self(obs_mesh_*, obs_mesh_*)).T.I * M.dev M.reg_mat = M.reg_mat + self.Uo_cov.T * asmatrix(trisolve(self.Uo, dev_new, uplo='U', transa='T')).T return M.reg_mat def _obs_eval(self, M, M_out, x, Uo_Cxo=None): basis_x = Uo_Cxo if Uo_Cxo is not None else self.eval_basis(x, regularize=False) M_out += asarray(dot(basis_x.T, M.reg_mat)).squeeze() return M_out def _mean_under_new(self, M, obs_mesh_new): if not M.observed: return asarray(M.eval_fun(obs_mesh_new, **M.params)).ravel() else: return M.__call__(obs_mesh_new, regularize=False) class SeparableBasisCovariance(BasisCovariance): """ C=SeparableBasisCovariance(basis, coef_cov, relative_precision, **params) Realizations generated using such covariances will be of the form: R(x) = \sum_{i[i],...,i[n]} basis[1][i[i]](x) * ... * basis[n][i[n]](x) * c[i[1],...,i[n]] c ~ N(mu, coef_cov) :Arguments: - `basis`: An n-dimensional array of functions. Each should take an argument x of shape (n,ndim), where n is any integer and ndim is the dimensionality of the space, or shape (n). In the latter case ndim should be assumed to be 1. - `coef_cov`: An array of shape (i[1],...,i[n]) or (i[1],...,i[n])*2 (tuple multiplication). If shape=basis.shape, the coefficients are assumed to be independent. Otherwise coef_cov[i[1],...,i[n], j[1],...,j[n]] gives the prior covariance of coefficients i[1],...,i[n] and j[1],...,j[n]. - `params`: Parameters to be passed to basis. - `relative_precision`: See documentation. :SeeAlso: Mean, Realization, Covariance, SeparableBasisCovariance, observe """ def __init__(self, basis, coef_cov, relative_precision = 1.0E-15, **params): BasisCovariance.__init__(self, basis, coef_cov, relative_precision, **params) self.basis = basis self.n_per_dim = [] for i in xrange(self.ndim): self.n_per_dim.append(len(self.basis[i])) def get_shape_from_basis(self, basis): return tuple([len(dim_basis) for dim_basis in basis]) def eval_basis(self, x, regularize=True): """ basis_mat = C.eval_basis(x) Evaluates self's basis functions on x and returns them stacked in a matrix. basis_mat[i,j] gives basis function i (formed by multiplying basis functions) evaluated at x[j,:]. """ # Make object of same shape as self.basis, fill in with evals of each individual basis factor. # Make object of same shape as diag(coef_cov), fill in with products of those evals. # Reshape and return. if regularize: x = regularize_array(x) out = zeros(self.shape+(x.shape[0],), dtype=float,order='F') # Evaluate the basis factors basis_factors = [] for i in xrange(self.ndim): basis_factors.append([]) for j in xrange(self.n_per_dim[i]): basis_factors[i].append(self.basis[i][j](x, **self.params)) out = ones((self.n, x.shape[0]), dtype=float) out_reshaped = out.reshape(self.shape + (x.shape[0],)) for ind in ndindex(self.shape): for dim in xrange(self.ndim): out_reshaped[ind] *= basis_factors[dim][ind[dim]] return out pymc-2.2+ds/pymc/gp/Covariance.py000066400000000000000000000531401204033704200167270ustar00rootroot00000000000000# Copyright (c) Anand Patil, 2007 __docformat__='reStructuredText' __all__ = ['Covariance'] from numpy import * from numpy.linalg import cholesky, LinAlgError from .GPutils import regularize_array, trisolve, square_and_sum from .linalg_utils import diag_call, dpotrf_wrap from .incomplete_chol import ichol, ichol_continue from pymc import six xrange = six.moves.xrange class Covariance(object): """ C=Covariance(eval_fun, relative_precision, **params) A GP covariance. :Arguments: - `eval_fun`: A function that takes either a single value x or two values x and y, followed by an arbitrary number of keyword parameters. x and y will be of shape (n,n_dim), where n is any integer and n_dim is the dimensionality of the space, or shape (n). In the latter case n_dim should be assumed to be 1. - `params`: Parameters to be passed to eval_fun. - `relative_precision`: See documentation. :SeeAlso: Mean, BasisCovariance, SeparableBasisCovariance, Realization, observe """ def __init__(self, eval_fun, relative_precision = 1.0E-15, rank_limit=0, **params): self.ndim = None self.observed = False self.obs_mesh = None self.obs_V = None self.Uo = None self.obs_piv = None self.obs_len = None self.full_piv = None self.full_obs_mesh = None self.basiscov = False self.eval_fun = eval_fun self.params = params self.relative_precision = relative_precision self.rank_limit = rank_limit def cholesky(self, x, apply_pivot = True, observed=True, nugget=None, regularize=True, rank_limit=0): """ U = C.cholesky(x[, observed=True, nugget=None, rank_limit=00]) {'pivots': piv, 'U': U} = \ C.cholesky(x, apply_pivot = False[, observed=True, nugget=None]) Computes incomplete Cholesky factorization of self(x,x), without actually evaluating the matrix first. :Arguments: - `x`: The input array on which to evaluate the covariance. - `apply_pivot`: A flag. If it's set to 'True', it returns a matrix U (not necessarily triangular) such that U.T*U=C(x,x). If it's set to 'False', the return value is a dictionary. Item 'pivots' is a vector of pivots, and item 'U' is an upper-triangular matrix (not necessarily square) such that U[:,argsort(piv)].T * U[:,argsort(piv)] = C(x,x). - `observed`: If 'True', any observations are taken into account when computing the Cholesky factor. If not, the unobserved version of self is used. - `nugget`: The 'nugget' parameter, which will essentially be added to the diagonal of C(x,x) before Cholesky factorizing. - `rank_limit`: If rank_limit > 0, the factor will have at most rank_limit rows. """ if regularize: x=regularize_array(x) # Number of points in x. N_new = x.shape[0] # diagonal diag = self.__call__(x, y=None, regularize=False, observed=observed) if nugget is not None: diag += nugget.ravel() # Special fast version for single points. if N_new==1: U=asmatrix(sqrt(diag)) # print U if not apply_pivot: return {'pivots': array([0]), 'U': U} else: return U # Create the diagonal and the get-row function differently depending on whether self # has been observed. If self hasn't been observed, send the calls straight to eval_fun # to skip the extra formatting. # get-row function # TODO: Forbid threading here due to callbacks. def rowfun(i,xpiv,rowvec): """ A function that can be used to overwrite an input array with rows. """ rowvec[i:]=self.__call__(x=xpiv[i-1,:].reshape((1,-1)), y=xpiv[i:,:], regularize=False, observed=observed) # ================================== # = Call to Fortran function ichol = # ================================== if rank_limit == 0: rank_limit = N_new U, m, piv = ichol(diag=diag, reltol=self.relative_precision, rowfun=rowfun, x=x, rl=min(rank_limit,N_new)) U = asmatrix(U) # Arrange output matrix and return. if m<0: raise ValueError("Matrix does not appear to be positive semidefinite") if not apply_pivot: # Useful for self.observe and Realization.__call__. U is upper triangular. U = U[:m,:] return {'pivots': piv, 'U': U} else: # Useful for users. U.T*U = C(x,x) return U[:m,argsort(piv)] def continue_cholesky(self, x, x_old, chol_dict_old, apply_pivot = True, observed=True, nugget=None, regularize=True, assume_full_rank = False, rank_limit=0): """ U = C.continue_cholesky(x, x_old, chol_dict_old[, observed=True, nugget=None, rank_limit=0]) returns {'pivots': piv, 'U': U} Computes incomplete Cholesky factorization of self(z,z), without actually evaluating the matrix first. Here z is the concatenation of x and x_old. Assumes the Cholesky factorization of self(x_old, x_old) has already been computed. :Arguments: - `x`: The input array on which to evaluate the Cholesky factorization. - `x_old`: The input array on which the Cholesky factorization has been computed. - `chol_dict_old`: A dictionary with kbasis_ys ['pivots', 'U']. Would be the output of either this method or C.cholesky(). - `apply_pivot`: A flag. If it's set to 'True', it returns a matrix U (not necessarily triangular) such that U.T*U=C(x,x). If it's set to 'False', the return value is a dictionary. Item 'pivots' is a vector of pivots, and item 'U' is an upper-triangular matrix (not necessarily square) such that U[:,argsort(piv)].T * U[:,argsort(piv)] = C(x,x). - `observed`: If 'True', any observations are taken into account when computing the Cholesky factor. If not, the unobserved version of self is used. - `nugget`: The 'nugget' parameter, which will essentially be added to the diagonal of C(x,x) before Cholesky factorizing. - `rank_limit`: If rank_limit > 0, the factor will have at most rank_limit rows. """ if regularize: x=regularize_array(x) # Concatenation of the old points and new points. xtot = vstack((x_old,x)) # Extract information from chol_dict_old. U_old = chol_dict_old['U'] m_old = U_old.shape[0] piv_old = chol_dict_old['pivots'] # Number of old points. N_old = x_old.shape[0] # Number of new points. N_new = x.shape[0] if rank_limit == 0: m_new_max = N_new else: m_new_max = min(N_new,max(0,rank_limit-m_old)) # get-row function def rowfun(i,xpiv,rowvec): """ A function that can be used to overwrite an input array with superdiagonal rows. """ rowvec[i:] = self.__call__(x=xpiv[i-1,:].reshape(1,-1), y=xpiv[i:,:], regularize=False, observed = observed) # diagonal diag = self.__call__(x, y=None, regularize=False, observed = observed) # not really implemented yet. if nugget is not None: diag += nugget.ravel() # Arrange U for input to ichol. See documentation. U = asmatrix(zeros((m_new_max + m_old, N_old + N_new), dtype=float, order='F')) U[:m_old, :m_old] = U_old[:,:m_old] U[:m_old,N_new+m_old:] = U_old[:,m_old:] offdiag = self.__call__(x=x_old[piv_old[:m_old],:], y=x, observed=observed, regularize=False) trisolve(U_old[:,:m_old],offdiag,uplo='U',transa='T', inplace=True) U[:m_old, m_old:N_new+m_old] = offdiag # Initialize pivot vector: # [old_posdef_pivots new_pivots old_singular_pivots] # - old_posdef_pivots are the indices of the rows that made it into the Cholesky factor so far. # - old_singular_pivots are the indices of the rows that haven't made it into the Cholesky factor so far. # - new_pivots are the indices of the rows that are going to be incorporated now. piv = zeros(N_new + N_old, dtype=int) piv[:m_old] = piv_old[:m_old] piv[N_new + m_old:] = piv_old[m_old:] piv[m_old:N_new + m_old] = arange(N_new)+N_old # ============================================ # = Call to Fortran function ichol_continue. = # ============================================ # Early return if rank is all used up. if m_new_max > 0: # ============================================ # = Call to Fortran function ichol_continue. = # ============================================ if not assume_full_rank: m, piv = ichol_continue(U, diag = diag, reltol = self.relative_precision, rowfun = rowfun, piv=piv, x=xtot[piv,:], mold=m_old) else: m = m_old + N_new C_eval = self.__call__(x,x,observed=True,regularize=False) U2 = cholesky(C_eval).T U[m_old:,m_old:N_new+m_old] = U2 if m_old < N_old: offdiag2 = self.__call__(x=x, y=x_old[piv_old[m_old:]], observed=observed, regularize=False) trisolve(U2,offdiag2,uplo='U',transa='T',inplace=True) U[m_old:,N_new+m_old:] = offdiag2 else: m = m_old # Arrange output matrix and return. if m<0: raise ValueError('Matrix does not appear positive semidefinite.') if not apply_pivot: # Useful for self.observe. U is upper triangular. U = U[:m,:] if assume_full_rank: return {'pivots': piv, 'U': U, 'C_eval':C_eval, 'U_new': U2} else: return {'pivots': piv, 'U': U} else: # Useful for the user. U.T * U = C(x,x). return U[:m,argsort(piv)] def observe(self, obs_mesh, obs_V, output_type='r'): """ Observes self on obs_mesh with observation variance obs_V. Output_type controls the information returned: 'r' : returns information needed by Realization objects. 'o' : returns information needed by function observe. 's' : returns information needed by the Gaussian process submodel. """ # print 'C.observe called' # Number of spatial dimensions. ndim = obs_mesh.shape[1] if self.ndim is not None: if not ndim==self.ndim: raise ValueError("Dimension of observation mesh is not equal to dimension of base mesh.") else: self.ndim = ndim # print ndim # ===================================== # = If self hasn't been observed yet: = # ===================================== if not self.observed: # If self has not been observed, get the Cholesky factor of self(obs_mesh, obs_mesh) # and the side information and store it. # Rank so far is 0. m_old = 0 # Number of observation points so far is 0. N_old = 0 if output_type != 's': obs_dict = self.cholesky(obs_mesh, apply_pivot = False, nugget = obs_V, regularize=False, rank_limit = self.rank_limit) else: C_eval = self.__call__(obs_mesh,obs_mesh,regularize=False) U = C_eval.copy('F') for i in xrange(U.shape[0]): U[i,i] += obs_V[i] info = dpotrf_wrap(U) if info>0: raise LinAlgError("Matrix does not appear to be positive definite by row %i. Could not observe with assume_full_rank=True." %info) obs_dict = {'U': U,'pivots': arange(U.shape[0]),'U_new':U,'C_eval':C_eval} obs_dict_new = obs_dict # Rank of self(obs_mesh, obs_mesh) m_new = obs_dict['U'].shape[0] # Upper-triangular Cholesky factor of self(obs_mesh, obs_mesh) self.full_Uo = obs_dict['U'] # print (self.full_Uo[:,argsort(obs_dict['pivots'])].T*self.full_Uo[:,argsort(obs_dict['pivots'])] - self(obs_mesh,obs_mesh)).max() # Upper-triangular square Cholesky factor of self(obs_mesh_*, obs_mesh_*). See documentation. self.Uo = obs_dict['U'][:,:m_new] # Pivots. piv_new = obs_dict['pivots'] self.full_piv = piv_new self.obs_piv = piv_new[:m_new] # Remember full observation mesh. self.full_obs_mesh = obs_mesh # relevant slice is the positive-definite indices, which get into obs_mesh_*. See documentation. relevant_slice = self.obs_piv # obs_mesh_new is obs_mesh_* from documentation. obs_mesh_new = obs_mesh[relevant_slice,:] self.obs_mesh = obs_mesh_new self.obs_V = obs_V[piv_new] self.obs_len = m_new # ======================================= # = If self has been observed already: = # ======================================= else: # If self has been observed, get the Cholesky factor of the _full_ observation mesh (new # and old observations) using continue_cholesky, along with side information, and store it. # Extract information from self's existing attributes related to the observation mesh.. obs_old, piv_old = self.Uo, self.obs_piv # Rank of self's evaluation on the observation mesh so far. m_old = len(self.obs_piv) # Number of observations so far. N_old = self.full_obs_mesh.shape[0] # Number of new observations. N_new = obs_mesh.shape[0] # Call to self.continue_cholesky. obs_dict_new = self.continue_cholesky(x=obs_mesh, x_old = self.full_obs_mesh, chol_dict_old = {'U': self.full_Uo, 'pivots': self.full_piv}, apply_pivot = False, observed = False, regularize=False, nugget = obs_V, assume_full_rank = output_type=='s', rank_limit = self.rank_limit) if output_type=='s': C_eval = obs_dict_new['C_eval'] # Full Cholesky factor of self(obs_mesh, obs_mesh), where obs_mesh is the combined observation mesh. self.full_Uo = obs_dict_new['U'] # Rank of self(obs_mesh, obs_mesh) m_new = self.full_Uo.shape[0] # Square upper-triangular Cholesky factor of self(obs_mesh_*, obs_mesh_*). See documentation. self.Uo=self.full_Uo[:,:m_new] # Pivots. piv_new = obs_dict_new['pivots'] self.obs_piv = piv_new[:m_new] self.full_piv = piv_new # Concatenate old and new observation meshes. self.full_obs_mesh = vstack((self.full_obs_mesh, obs_mesh)) relevant_slice = piv_new[m_old:m_new] - N_old obs_mesh_new = obs_mesh[relevant_slice,:] # Remember obs_mesh_* and corresponding observation variances. self.obs_mesh = vstack((self.obs_mesh, obs_mesh[relevant_slice,:])) self.obs_V = hstack((self.obs_V, obs_V[relevant_slice])) # Length of obs_mesh_*. self.obs_len = m_new self.observed = True # Output expected by Realization if output_type == 'r': return relevant_slice, obs_mesh_new, self.full_Uo[m_old:,argsort(piv_new)[N_old:]], self.full_Uo[:m_old, argsort(piv_new)[N_old:]] # Ouptut expected by observe if output_type == 'o': return relevant_slice, obs_mesh_new # Output expected by the GP submodel if output_type=='s': return obs_dict_new['U_new'], obs_dict_new['C_eval'], self.full_Uo[:m_old, argsort(piv_new)[N_old:]] def __call__(self, x, y=None, observed=True, regularize=True, return_Uo_Cxo=False): if y is x: symm=True else: symm=False # Remember shape of x, and then 'regularize' it. orig_shape = shape(x) if len(orig_shape)>1: orig_shape = orig_shape[:-1] if regularize: x=regularize_array(x) ndimx = x.shape[-1] lenx = x.shape[0] if return_Uo_Cxo: Uo_Cxo = None # Safety if self.ndim is not None: if not self.ndim == ndimx: raise ValueError("The number of spatial dimensions of x, "+\ ndimx.__str__()+\ ", does not match the number of spatial dimensions of the Covariance instance's base mesh, "+\ self.ndim.__str__()+".") # If there are observation points, prepare self(obs_mesh, x) # and chol(self(obs_mesh, obs_mesh)).T.I * self(obs_mesh, x) # ========================================================== # = If only one argument is provided, return the diagonal. = # ========================================================== if y is None: # Special fast-path for functions that have an 'amp' parameter if hasattr(self.eval_fun, 'diag_call'): V = self.eval_fun.diag_call(x, **self.params) # Otherwise, evaluate the diagonal in a loop. else: V=empty(lenx,dtype=float) for i in xrange(lenx): this_x = x[i].reshape((1,-1)) V[i] = self.eval_fun(this_x, this_x, **self.params) if self.observed and observed: sqpart = empty(lenx,dtype=float) Cxo = self.eval_fun(self.obs_mesh, x, **self.params) Uo_Cxo = trisolve(self.Uo, Cxo, uplo='U', transa='T') square_and_sum(Uo_Cxo, sqpart) V -= sqpart if return_Uo_Cxo: return V.reshape(orig_shape), Uo_Cxo else: return V.reshape(orig_shape) else: # ==================================================== # = # If x and y are the same array, save some work: = # ==================================================== if symm: C=self.eval_fun(x,x,symm=True,**self.params) # Update return value using observations. if self.observed and observed: Cxo = self.eval_fun(self.obs_mesh, x, **self.params) Uo_Cxo = trisolve(self.Uo, Cxo, uplo='U', transa='T') C -= Uo_Cxo.T * Uo_Cxo if return_Uo_Cxo: return C, Uo_Cxo else: return C # ====================================== # = # If x and y are different arrays: = # ====================================== else: if regularize: y=regularize_array(y) ndimy = y.shape[-1] leny = y.shape[0] if not ndimx==ndimy: raise ValueError('The last dimension of x and y (the number of spatial dimensions) must be the same.') C = self.eval_fun(x,y,**self.params) # Update return value using observations. if self.observed and observed: # If there are observation points, prepare self(obs_mesh, y) # and chol(self(obs_mesh, obs_mesh)).T.I * self(obs_mesh, y) Cxo = self.eval_fun(self.obs_mesh, x, **self.params) Uo_Cxo = trisolve(self.Uo, Cxo, uplo='U', transa='T') Cyo = self.eval_fun(self.obs_mesh, y, **self.params) Uo_Cyo = trisolve(self.Uo, Cyo,uplo='U', transa='T') C -= Uo_Cxo.T * Uo_Cyo return C # Methods for Mean instances' benefit: def _unobs_reg(self, M): # reg_mat = chol(C(obs_mesh_*, obs_mesh_*)).T.I * M.dev return asmatrix(trisolve(self.Uo, M.dev.T, uplo='U',transa='T')).T def _obs_reg(self, M, dev_new, m_old): # reg_mat = chol(C(obs_mesh_*, obs_mesh_*)).T.I * M.dev reg_mat_new = -1.*dot(self.Uo[:m_old,m_old:].T , trisolve(self.Uo[:m_old,:m_old], M.dev, uplo='U', transa='T')).T trisolve(self.Uo[m_old:,m_old:].T, reg_mat_new, 'L', inplace=True) reg_mat_new += asmatrix(trisolve(self.Uo[m_old:,m_old:], dev_new.T, uplo='U', transa='T')).T return asmatrix(vstack((M.reg_mat,reg_mat_new))) def _obs_eval(self, M, M_out, x, Uo_Cxo=None): if Uo_Cxo is None: Uo_Cxo = trisolve(M.Uo, self(M.obs_mesh, x, observed = False), uplo='U', transa='T') M_out += dot(asarray(M.reg_mat).squeeze(),asarray(Uo_Cxo)).squeeze() return M_out def _mean_under_new(self, M, obs_mesh_new): return asarray(M.eval_fun(obs_mesh_new, **M.params)).ravel() pymc-2.2+ds/pymc/gp/FullRankCovariance.py000066400000000000000000000250351204033704200203700ustar00rootroot00000000000000# Copyright (c) Anand Patil, 2007 __docformat__='reStructuredText' __all__ = ['FullRankCovariance'] from numpy import * from numpy.linalg import cholesky, LinAlgError from .GPutils import regularize_array, trisolve from .linalg_utils import dpotrf_wrap from .Covariance import Covariance from .incomplete_chol import ichol, ichol_continue from pymc import six xrange = six.moves.xrange class FullRankCovariance(Covariance): """ C=FullRankCovariance(eval_fun, **params) A GP covariance. All linear algebra done with dense BLAS, so attempts to invert/ factorize numerically singular covariance matrices will cause errors. On the other hand, computations will be faster than with Covariance for full-rank covariance matrices. :Arguments: - `eval_fun`: A function that takes either a single value x or two values x and y, followed by an arbitrary number of keyword parameters. x and y will be of shape (n,n_dim), where n is any integer and n_dim is the dimensionality of the space, or shape (n). In the latter case n_dim should be assumed to be 1. - `params`: Parameters to be passed to eval_fun. :SeeAlso: Mean, BasisCovariance, SeparableBasisCovariance, Realization, observe """ def __init__(self, eval_fun, nugget=None, **params): self.ndim = None self.observed = False self.obs_mesh = None self.obs_V = None self.Uo = None self.obs_piv = None self.obs_len = None self.full_piv = None self.full_obs_mesh = None self.basiscov = False self.eval_fun = eval_fun self.params = params self.nugget=nugget # # Sorry... the diagonal calls are done using f2py for speed. # def diag_cov_fun(xe): # return self.eval_fun(xe,xe,**self.params) # # self.diag_cov_fun = diag_cov_fun def cholesky(self, x, observed=True, nugget=None, return_eval_also=False): """ U = C.cholesky(x[, observed=True, nugget=None]) Computes Cholesky factorization of self(x,x). :Arguments: - `x`: The input array on which to evaluate the covariance. - `observed`: If 'True', any observations are taken into account when computing the Cholesky factor. If not, the unobserved version of self is used. - `nugget`: The 'nugget' parameter, which will essentially be added to the diagonal of C(x,x) before Cholesky factorizing. """ # Number of points in x. N_new = x.shape[0] U=self.__call__(x, x, regularize = False, observed = observed) if return_eval_also: C_eval = U.copy('F') if nugget is not None: for i in xrange(N_new): U[i,i] += nugget[i] # print self.params, x.shape, observed, nugget info = dpotrf_wrap(U) if info>0: raise LinAlgError("Matrix does not appear to be positive definite by row %i. Consider another Covariance subclass, such as NearlyFullRankCovariance." % info) if return_eval_also: return U, C_eval else: return U def continue_cholesky(self, x, x_old, U_old, observed=True, nugget=None, return_eval_also=False): """ U = C.continue_cholesky(x, x_old, U_old[, observed=True, nugget=None]) Computes Cholesky factorization of self(z,z). Assumes the Cholesky factorization of self(x_old, x_old) has already been computed. :Arguments: - `x`: The input array on which to evaluate the Cholesky factorization. - `x_old`: The input array on which the Cholesky factorization has been computed. - `U_old`: The Cholesky factorization of C(x_old, x_old). - `observed`: If 'True', any observations are taken into account when computing the Cholesky factor. If not, the unobserved version of self is used. - `nugget`: The 'nugget' parameter, which will essentially be added to the diagonal of C(x,x) before Cholesky factorizing. """ # Concatenation of the old points and new points. xtot = vstack((x_old,x)) # Number of old points. N_old = x_old.shape[0] # Number of new points. N_new = x.shape[0] U_new = self.__call__(x, x, regularize=False, observed=observed) # not really implemented yet. if nugget is not None: for i in xrange(N_new): U_new[i,i] += nugget[i] U = asmatrix(zeros((N_new + N_old, N_old + N_new), dtype=float, order='F')) U[:N_old, :N_old] = U_old offdiag = self.__call__(x=x_old, y=x, observed=observed, regularize=False) trisolve(U_old,offdiag,uplo='U',transa='T', inplace=True) U[:N_old, N_old:] = offdiag U_new -= offdiag.T*offdiag if return_eval_also: C_eval = U_new.copy('F') info = dpotrf_wrap(U_new) if info>0: raise LinAlgError("Matrix does not appear to be positive definite by row %i. Consider another Covariance subclass, such as NearlyFullRankCovariance." %info) U[N_old:,N_old:] = U_new if return_eval_also: return U, U_new, C_eval else: return U def __call__(self, x, y=None, observed=True, regularize=True, return_Uo_Cxo=False): out = Covariance.__call__(self,x,y,observed,regularize,return_Uo_Cxo=return_Uo_Cxo) if self.nugget is None: return out if return_Uo_Cxo: out, Uo_Cxo = out if x is y: for i in xrange(out.shape[0]): out[i,i] += self.nugget elif y is None: out += self.nugget if return_Uo_Cxo: return out, Uo_Cxo else: return out def observe(self, obs_mesh, obs_V, output_type='r'): """ Observes self on obs_mesh with observation variance obs_V. Output_type controls the information returned: 'r' : returns information needed by Realization objects. 'o' : returns information needed by function observe. 's' : returns information needed by the Gaussian process submodel. """ # Number of spatial dimensions. ndim = obs_mesh.shape[1] if self.ndim is not None: if not ndim==self.ndim: raise ValueError("Dimension of observation mesh is not equal to dimension of base mesh.") else: self.ndim = ndim # print ndim # ===================================== # = If self hasn't been observed yet: = # ===================================== if not self.observed: # If self has not been observed, get the Cholesky factor of self(obs_mesh, obs_mesh) # and the side information and store it. # Number of observation points so far is 0. N_old = 0 N_new = obs_mesh.shape[0] if output_type=='s': U, C_eval = self.cholesky(obs_mesh, nugget=obs_V, observed=False, return_eval_also=True) U_new = U else: U = self.cholesky(obs_mesh, nugget = obs_V, observed=False) # Upper-triangular Cholesky factor of self(obs_mesh, obs_mesh) self.full_Uo = U self.Uo = U # Pivots. piv_new = arange(N_new) self.full_piv = piv_new self.obs_piv = piv_new # Remember full observation mesh. self.full_obs_mesh = obs_mesh # relevant slice is the positive-definite indices, which get into obs_mesh_*. See documentation. relevant_slice = self.obs_piv self.obs_mesh = obs_mesh self.obs_V = obs_V self.obs_len = N_new # ======================================= # = If self has been observed already: = # ======================================= else: # If self has been observed, get the Cholesky factor of the _full_ observation mesh (new # and old observations) using continue_cholesky, along with side information, and store it. # Number of observations so far. N_old = self.full_obs_mesh.shape[0] # Number of new observations. N_new = obs_mesh.shape[0] # Call to self.continue_cholesky. if output_type=='s': U, U_new, C_eval = self.continue_cholesky( x=obs_mesh, x_old = self.full_obs_mesh, U_old = self.full_Uo, observed = False, nugget = obs_V, return_eval_also=True) else: U = self.continue_cholesky( x=obs_mesh, x_old = self.full_obs_mesh, U_old = self.full_Uo, observed = False, nugget = obs_V) # Full Cholesky factor of self(obs_mesh, obs_mesh), where obs_mesh is the combined observation mesh. self.full_Uo = U # Square upper-triangular Cholesky factor of self(obs_mesh_*, obs_mesh_*). See documentation. self.Uo=self.full_Uo # Pivots. piv_new = arange(N_old + N_new) self.obs_piv = piv_new self.full_piv = piv_new # Concatenate old and new observation meshes. self.full_obs_mesh = vstack((self.full_obs_mesh, obs_mesh)) self.obs_mesh = self.full_obs_mesh self.obs_V = hstack((self.obs_V, obs_V)) # Length of obs_mesh_*. self.obs_len = N_old + N_new self.observed = True # Output expected by Realization if output_type == 'r': return slice(None, None, None), obs_mesh, self.full_Uo[N_old:N_new+N_old, N_old:N_new+N_old], self.full_Uo[:N_old, N_old:N_new+N_old] # Ouptut expected by observe if output_type == 'o': return slice(None, None, None), obs_mesh # Output expected by the GP submodel if output_type=='s': return U_new, C_eval, self.full_Uo[:N_old, N_old:N_new+N_old] pymc-2.2+ds/pymc/gp/GPutils.py000066400000000000000000000262311204033704200162450ustar00rootroot00000000000000# Copyright (c) Anand Patil, 2007 __docformat__='reStructuredText' __all__ = ['observe', 'plot_envelope', 'predictive_check', 'regularize_array', 'trimult', 'trisolve', 'vecs_to_datmesh', 'caching_call', 'caching_callable', 'fast_matrix_copy', 'point_predict','square_and_sum','point_eval'] # TODO: Implement lintrans, allow obs_V to be a huge matrix or an ndarray in observe(). from numpy import * from numpy.linalg import solve, cholesky, eigh from numpy.linalg.linalg import LinAlgError from .linalg_utils import * from threading import Thread, Lock import sys from pymc import thread_partition_array, map_noreturn from pymc.gp import chunksize import pymc from pymc import six from pymc.six import print_ xrange = six.moves.xrange try: from PyMC2 import ZeroProbability except ImportError: class ZeroProbability(ValueError): pass half_log_2pi = .5 * log(2. * pi) def fast_matrix_copy(f, t=None, n_threads=1): """ Not any faster than a serial copy so far. """ if not f.flags['F_CONTIGUOUS']: raise RuntimeError('This will not be fast unless input array f is Fortran-contiguous.') if t is None: t=asmatrix(empty(f.shape, order='F')) elif not t.flags['F_CONTIGUOUS']: raise RuntimeError('This will not be fast unless input array t is Fortran-contiguous.') # Figure out how to divide job up between threads. dcopy_wrap(ravel(asarray(f.T)),ravel(asarray(t.T))) return t def zero_lower_triangle(C): pass def caching_call(f, x, x_sofar, f_sofar): """ Computes f(x) given that f(x_sofar) = x_sofar. returns f(x), and new versions of x_sofar and f_sofar. """ lenx = x.shape[0] nr,rf,rt,nu,xu,ui = remove_duplicates(x) unique_indices=ui[:nu] x_unique=xu[:nu] repeat_from=rf[:nr] repeat_to=rt[:nr] # Check which observations have already been made. if x_sofar is not None: f_unique, new_indices, N_new_indices = check_repeats(x_unique, x_sofar, f_sofar) # If there are any new input points, draw values over them. if N_new_indices>0: x_new = x_unique[new_indices[:N_new_indices]] f_new = f(x_new) f_unique[new_indices[:N_new_indices]] = f_new # Record the new values x_sofar = vstack((x_sofar, x_new)) f_sofar = hstack((f_sofar, f_new)) else: f=f_unique # If no observations have been made, don't check. else: f_unique = f(x_unique) x_sofar = x_unique f_sofar = f_unique f=empty(lenx) f[unique_indices]=f_unique f[repeat_to]=f[repeat_from] return f, x_sofar, f_sofar def square_and_sum(a,s): """ Writes np.sum(a**2,axis=0) into s """ cmin, cmax = thread_partition_array(a) map_noreturn(asqs, [(a,s,cmin[i],cmax[i]) for i in xrange(len(cmax))]) return a class caching_callable(object): """ F = caching_callable(f[, x_sofar, f_sofar, update_cache=True]) f is the function whose output should be cached. x_sofar, if provided, is an initial list of caching locations. f_sofar, if provided, is the value of f at x_sofar. update_cache tells whether x_sofar and f_sofar should be updated as additional calls are made. """ def __init__(self, f, x_sofar=None, f_sofar=None, update_cache=True): self.f = f self.x_sofar = x_sofar self.f_sofar = f_sofar self.update_cache = update_cache if self.x_sofar is not None and self.f_sofar is None: junk, self.x_sofar, self.f_sofar = caching_call(self.f, self.x_sofar) self.last_x = x_sofar self.last_f = f_sofar def __call__(self, x): if x is self.x_sofar: return self.f_sofar elif x is self.last_x: return self.last_f f, x_sofar, f_sofar = caching_call(self.f, x, self.x_sofar, self.f_sofar) self.last_x = x self.last_f = f if self.update_cache: self.x_sofar = x_sofar self.f_sofar = f_sofar return f def vecs_to_datmesh(x, y): """ Converts input arguments x and y to a 2d meshgrid, suitable for calling Means, Covariances and Realizations. """ x,y = meshgrid(x,y) out = zeros(x.shape + (2,), dtype=float) out[:,:,0] = x out[:,:,1] = y return out def trimult(U,x,uplo='U',transa='N',alpha=1.,inplace=False): """ b = trimult(U,x, uplo='U') Multiplies U x, where U is upper triangular if uplo='U' or lower triangular if uplo = 'L'. """ if inplace: b=x else: b = x.copy('F') dtrmm_wrap(a=U,b=b,uplo=uplo,transa=transa,alpha=alpha) return b def trisolve(U,b,uplo='U',transa='N',alpha=1.,inplace=False): """ x = trisolve(U,b, uplo='U') Solves U x = b, where U is upper triangular if uplo='U' or lower triangular if uplo = 'L'. If a degenerate column is found, an error is raised. """ if inplace: x=b else: x = b.copy('F') if U.shape[0] == 0: raise ValueError('Attempted to solve zero-rank triangular system') dtrsm_wrap(a=U,b=x,side='L',uplo=uplo,transa=transa,alpha=alpha) return x def regularize_array(A): """ Takes an ndarray as an input. - If the array is one-dimensional, it's assumed to be an array of input values. - If the array is more than one-dimensional, its last index is assumed to curse over spatial dimension. Either way, the return value is at least two dimensional. A.shape[-1] gives the number of spatial dimensions. """ # Make sure A is an array. if not isinstance(A,ndarray): A = array(A, dtype=float) elif A.__class__ is not ndarray: A = asarray(A, dtype=float) # If A is one-dimensional, interpret it as an array of points on the line. if len(A.shape) <= 1: return A.reshape(-1,1) # Otherwise, interpret it as an array of n-dimensional points, where n # is the size of A along its last index. elif A.shape[-1]>1 and len(A.shape) > 2: return A.reshape(-1, A.shape[-1]) else: return A def plot_envelope(M,C,mesh): """ plot_envelope(M,C,mesh) plots the pointwise mean +/- sd envelope defined by M and C along their base mesh. :Arguments: - `M`: A Gaussian process mean. - `C`: A Gaussian process covariance - `mesh`: The mesh on which to evaluate the mean and cov. """ try: from pylab import fill, plot, clf, axis x=concatenate((mesh, mesh[::-1])) mean, var = point_eval(M,C,mesh) sig = sqrt(var) mean = M(mesh) y=concatenate((mean-sig, (mean+sig)[::-1])) # clf() fill(x,y,facecolor='.8',edgecolor='1.') plot(mesh, mean, 'k-.') except ImportError: print_("Matplotlib is not installed; plotting is disabled.") def observe(M, C, obs_mesh, obs_vals, obs_V = 0, lintrans = None, cross_validate = True): """ (M, C, obs_mesh, obs_vals[, obs_V = 0, lintrans = None, cross_validate = True]) Imposes observation of the value of obs_vals on M and C, where obs_vals ~ N(lintrans * f(obs_mesh), V) f ~ GP(M,C) :Arguments: - `M`: The mean function - `C`: The covariance function - `obs_mesh`: The places where f has been evaluated. - `obs_vals`: The values of f that were observed there. - `obs_V`: The observation variance. If None, assumed to be infinite (observations made with no error). - `lintrans`: A linear transformation. If None, assumed to be the identity transformation (pretend it doesn't exist). - `cross_validate`: A flag indicating whether a check should be done to see if the data could have arisen from M and C with positive probability. """ obs_mesh = regularize_array(obs_mesh) # print_(obs_mesh) obs_V = resize(obs_V, obs_mesh.shape[0]) obs_vals = resize(obs_vals, obs_mesh.shape[0]) # First observe C. relevant_slice, obs_mesh_new = C.observe(obs_mesh, obs_V, output_type='o') # Then observe M from C. M.observe(C, obs_mesh_new, obs_vals.ravel()[relevant_slice]) # Cross-validate if not asked not to. if obs_mesh_new.shape[0] < obs_mesh.shape[0]: if cross_validate: if not predictive_check(obs_vals, obs_mesh, M, C.obs_piv, sqrt(C.relative_precision)): raise ValueError("These data seem extremely improbable given your GP prior. \n Suggestions: decrease observation precision, or adjust the covariance to \n allow the function to be less smooth.") def predictive_check(obs_vals, obs_mesh, M, posdef_indices, tolerance): """ OK = predictive_check(obs_vals, obs_mesh, M, posdef_indices, tolerance) If an internal covariance is low-rank, make sure the observations are consistent. Returns True if good, False if bad. :Arguments: - `obs_vals`: The observed values. - `obs_mesh`: The mesh on which the observed values were observed. - `M`: The mean function, observed at obs_vals[posdef_indices]. - `tolerance`: The maximum allowable deviation at M(obs_mesh[non_posdef_indices]). """ non_posdef_indices = array(list(set(range(len(obs_vals))) - set(posdef_indices)),dtype=int) if len(non_posdef_indices)>0: M_under = M(obs_mesh[non_posdef_indices,:]).ravel() dev = abs((M_under - obs_vals[non_posdef_indices])) if dev.max()>tolerance: return False return True def point_predict(f, x, size=1, nugget=None): """ point_predict(f, x[, size, nugget]) Makes 'size' simulations for f(x) + N(0,nugget). Simulated values of f(x_i) are uncorrelated for different i. Useful for geostatistical predictions. """ orig_shape = x.shape x = regularize_array(x) mu = f.M_internal(x, regularize=False) V = f.C_internal(x, regularize=False) if nugget is not None: V += nugget out= random.normal(size=(size, x.shape[0])) * sqrt(V) + mu return out.reshape((size,)+ orig_shape[:-1]).squeeze() def point_eval(M, C, x): """ Evaluates M(x) and C(x). Minimizes computation; evaluating M(x) and C(x) separately would evaluate the off-diagonal covariance term twice, but callling point_eval(M,C,x) would only evaluate it once. Also chunks the evaluations if the off-diagonal term. """ x_ = regularize_array(x) M_out = empty(x_.shape[0]) V_out = empty(x_.shape[0]) if isinstance(C, pymc.gp.BasisCovariance): y_size = len(C.basis) elif C.obs_mesh is not None: y_size = C.obs_mesh.shape[0] else: y_size = 1 n_chunks = ceil(y_size*x_.shape[0]/float(chunksize)) bounds = array(linspace(0,x_.shape[0],n_chunks+1),dtype='int') cmin=bounds[:-1] cmax=bounds[1:] for (cmin,cmax) in zip(bounds[:-1],bounds[1:]): x__ = x_[cmin:cmax] V_out[cmin:cmax], Uo_Cxo = C(x__, regularize=False, return_Uo_Cxo=True) M_out[cmin:cmax] = M(x__, regularize=False, Uo_Cxo=Uo_Cxo) if len(x.shape) > 1: targ_shape = x.shape[:-1] else: targ_shape = x.shape return M_out.reshape(targ_shape), V_out.reshape(targ_shape) pymc-2.2+ds/pymc/gp/Mean.py000066400000000000000000000066611204033704200155430ustar00rootroot00000000000000# Copyright (c) Anand Patil, 2007 __docformat__='reStructuredText' from numpy import * from .GPutils import regularize_array, trisolve __all__ = ['Mean','zero_fn'] class Mean(object): """ M = Mean(eval_fun, **params) A Gaussian process mean. :Arguments: - `eval_fun`: A function that takes an argument x of shape (n,ndim), where n is any integer and ndim is the dimensionality of the space, or shape (n). In the latter case ndim should be assumed to be 1.. - `params`: Parameters to be passed to eval_fun :SeeAlso: Covariance, Realization, Observe """ def __init__(self, eval_fun, **params): self.ndim = None self.observed = False self.obs_mesh = None self.base_mesh = None self.obs_vals = None self.obs_V = None self.reg_mat = None self.obs_len = None self.mean_under = None self.Uo = None self.obs_piv = None self.eval_fun = eval_fun self.params = params def observe(self, C, obs_mesh_new, obs_vals_new, mean_under = None): """ Synchronizes self's observation status with C's. Values of observation are given by obs_vals. obs_mesh_new and obs_vals_new should already have been sliced, as Covariance.observe(..., output_type='o') does. """ self.C = C self.obs_mesh = C.obs_mesh self.obs_len = C.obs_len self.Uo = C.Uo # Evaluate the underlying mean function on the new observation mesh. if mean_under is None: mean_under_new = C._mean_under_new(self, obs_mesh_new) else: mean_under_new = mean_under # If self hasn't been observed yet: if not self.observed: self.dev = (obs_vals_new - mean_under_new) self.reg_mat = C._unobs_reg(self) # If self has been observed already: elif len(obs_vals_new)>0: # Rank of old observations. m_old = len(self.dev) # Deviation of new observation from mean without regard to old observations. dev_new = (obs_vals_new - mean_under_new) # Again, basis covariances get special treatment. self.reg_mat = C._obs_reg(self, dev_new, m_old) # Stack deviations of old and new observations from unobserved mean. self.dev = hstack((self.dev, dev_new)) self.observed = True def __call__(self, x, observed = True, regularize=True, Uo_Cxo=None): # Record original shape of x and regularize it. orig_shape = shape(x) if len(orig_shape)>1: orig_shape = orig_shape[:-1] if regularize: x=regularize_array(x) ndimx = x.shape[-1] lenx = x.shape[0] # Safety. if self.ndim is not None: if not self.ndim == ndimx: raise ValueError("The number of spatial dimensions of x does not match the number of spatial dimensions of the Mean instance's base mesh.") # Evaluate the unobserved mean M = self.eval_fun(x,**self.params).squeeze() # Condition. Basis covariances get special treatment. See documentation for formulas. if self.observed and observed: M = self.C._obs_eval(self, M, x, Uo_Cxo) return M.reshape(orig_shape) def zero_fn(x): "A function mapping any argument to zero." return zeros(x.shape[:-1]) pymc-2.2+ds/pymc/gp/NearlyFullRankCovariance.py000066400000000000000000000230441204033704200215410ustar00rootroot00000000000000# Copyright (c) Anand Patil, 2007 __docformat__='reStructuredText' __all__ = ['NearlyFullRankCovariance'] from numpy import * from numpy.linalg import cholesky, LinAlgError from .GPutils import regularize_array, trisolve from .linalg_utils import diag_call from .incomplete_chol import ichol_full from .Covariance import Covariance from pymc import six xrange = six.moves.xrange class NearlyFullRankCovariance(Covariance): """ C=NearlyFullRankCovariance(eval_fun, relative_precision, **params) A GP covariance. Good for situations where self's evaluation on observation locations is nearly full-rank, but not quite. Evaluation of the matrix can be parallelized, but Cholesky decompositions are done using a serial incomplete algorithm. :Arguments: - `eval_fun`: A function that takes either a single value x or two values x and y, followed by an arbitrary number of keyword parameters. x and y will be of shape (n,n_dim), where n is any integer and n_dim is the dimensionality of the space, or shape (n). In the latter case n_dim should be assumed to be 1. - `params`: Parameters to be passed to eval_fun. - `relative_precision`: See documentation. :SeeAlso: Mean, BasisCovariance, SeparableBasisCovariance, Realization, observe """ def __init__(self, eval_fun, relative_precision = 1.0E-15, **params): Covariance.__init__(self, eval_fun, relative_precision, rank_limit=0, **params) def cholesky(self, x, apply_pivot = True, observed=True, nugget=None, regularize=True, rank_limit=0): """ U = C.cholesky(x[, observed=True, nugget=None, rank_limit=0]) {'pivots': piv, 'U': U} = \ C.cholesky(x, apply_pivot = False[, observed=True, nugget=None]) Computes incomplete Cholesky factorization of self(x,x). :Arguments: - `x`: The input array on which to evaluate the covariance. - `apply_pivot`: A flag. If it's set to 'True', it returns a matrix U (not necessarily triangular) such that U.T*U=C(x,x). If it's set to 'False', the return value is a dictionary. Item 'pivots' is a vector of pivots, and item 'U' is an upper-triangular matrix (not necessarily square) such that U[:,argsort(piv)].T * U[:,argsort(piv)] = C(x,x). - `observed`: If 'True', any observations are taken into account when computing the Cholesky factor. If not, the unobserved version of self is used. - `nugget`: The 'nugget' parameter, which will essentially be added to the diagonal of C(x,x) before Cholesky factorizing. - `rank_limit`: If rank_limit > 0, the factor will have at most rank_limit rows. """ if rank_limit > 0: raise ValueError('NearlyFullRankCovariance does not accept a rank_limit argument. Use Covariance instead.') if regularize: x=regularize_array(x) # Number of points in x. N_new = x.shape[0] # Special fast version for single points. if N_new==1: V = self.__call__(x, regularize = False, observed = observed) if nugget is not None: V += nugget U=asmatrix(sqrt(V)) # print U if not apply_pivot: return {'pivots': array([0]), 'U': U} else: return U C = self.__call__(x, x, regularize=False, observed=observed) if nugget is not None: for i in xrange(N_new): C[i,i] += nugget[i] # ======================================= # = Call to Fortran function ichol_full = # ======================================= U, m, piv = ichol_full(c=C, reltol=self.relative_precision) U = asmatrix(U) # Arrange output matrix and return. if m<0: raise ValueError("Matrix does not appear to be positive semidefinite") if not apply_pivot: # Useful for self.observe and Realization.__call__. U is upper triangular. U = U[:m,:] return {'pivots': piv, 'U': U} else: # Useful for users. U.T*U = C(x,x) return U[:m,argsort(piv)] def continue_cholesky(self, x, x_old, chol_dict_old, apply_pivot = True, observed=True, nugget=None, regularize=True, assume_full_rank=False, rank_limit=0): """ U = C.continue_cholesky(x, x_old, chol_dict_old[, observed=True, nugget=None, rank_limit=0]) Returns {'pivots': piv, 'U': U} Computes incomplete Cholesky factorization of self(z,z). Here z is the concatenation of x and x_old. Assumes the Cholesky factorization of self(x_old, x_old) has already been computed. :Arguments: - `x`: The input array on which to evaluate the Cholesky factorization. - `x_old`: The input array on which the Cholesky factorization has been computed. - `chol_dict_old`: A dictionary with kbasis_ys ['pivots', 'U']. Would be the output of either this method or C.cholesky(). - `apply_pivot`: A flag. If it's set to 'True', it returns a matrix U (not necessarily triangular) such that U.T*U=C(x,x). If it's set to 'False', the return value is a dictionary. Item 'pivots' is a vector of pivots, and item 'U' is an upper-triangular matrix (not necessarily square) such that U[:,argsort(piv)].T * U[:,argsort(piv)] = C(x,x). - `observed`: If 'True', any observations are taken into account when computing the Cholesky factor. If not, the unobserved version of self is used. - `nugget`: The 'nugget' parameter, which will essentially be added to the diagonal of C(x,x) before Cholesky factorizing. - `rank_limit`: If rank_limit > 0, the factor will have at most rank_limit rows. """ if regularize: x=regularize_array(x) if rank_limit > 0: raise ValueError('NearlyFullRankCovariance does not accept a rank_limit argument. Use Covariance instead.') if rank_limit > 0: raise ValueError('NearlyFullRankCovariance does not accept a rank_limit argument. Use Covariance instead.') # Concatenation of the old points and new points. xtot = vstack((x_old,x)) # Extract information from chol_dict_old. U_old = chol_dict_old['U'] m_old = U_old.shape[0] piv_old = chol_dict_old['pivots'] # Number of old points. N_old = x_old.shape[0] # Number of new points. N_new = x.shape[0] # Compute off-diagonal part of Cholesky factor offdiag = self.__call__(x=x_old[piv_old[:m_old],:], y=x, observed=observed, regularize=False) trisolve(U_old[:,:m_old],offdiag,uplo='U',transa='T', inplace=True) # Compute new diagonal part of Cholesky factor C_new = self.__call__(x=x, y=x, observed=observed, regularize=False) if nugget is not None: for i in xrange(N_new): C_new[i,i] += nugget[i] C_new -= offdiag.T*offdiag if not assume_full_rank: U_new, m_new, piv_new = ichol_full(c=C_new, reltol=self.relative_precision) else: U_new = cholesky(C_new).T m_new = U_new.shape[0] piv_new = arange(m_new) U_new = asmatrix(U_new[:m_new,:]) U = asmatrix(zeros((m_new + m_old, N_old + N_new), dtype=float, order='F')) # Top portion of U U[:m_old, :m_old] = U_old[:,:m_old] U[:m_old,N_new+m_old:] = U_old[:,m_old:] offdiag=offdiag[:,piv_new] U[:m_old, m_old:N_new+m_old] = offdiag # Lower portion of U U[m_old:,m_old:m_old+N_new] = U_new if m_old < N_old and m_new > 0: offdiag_lower = self.__call__( x=x[piv_new[:m_new],:], y=x_old[piv_old[m_old:],:], observed=observed, regularize=False) offdiag_lower -= offdiag[:,:m_new].T*U[:m_old,m_old+N_new:] trisolve(U_new[:,:m_new],offdiag_lower,uplo='U',transa='T', inplace=True) U[m_old:,m_old+N_new:] = offdiag_lower # Rank and pivots m=m_old+m_new piv=hstack((piv_old[:m_old],piv_new+N_old,piv_old[m_old:])) # Arrange output matrix and return. if m<0: raise ValueError('Matrix does not appear positive semidefinite.') if not apply_pivot: # Useful for self.observe. U is upper triangular. if assume_full_rank: return {'pivots':piv,'U':U,'C_eval':C_new,'U_new':U_new} else: return {'pivots': piv, 'U': U} else: # Useful for the user. U.T * U = C(x,x). return U[:,argsort(piv)] # def clean_array(A): # for i in xrange(A.shape[0]): # for j in xrange(A.shape[1]): # if abs(A[i,j])<1e-10: # A[i,j]=0 # # if __name__=='__main__': # from cov_funs import matern # C = NearlyFullRankCovariance(eval_fun = matern.euclidean, diff_degree = 1.4, amp = .4, scale = 1.) # first=C.cholesky([1,1,2],apply_pivot=False) # second=C.continue_cholesky([3,4],regularize_array([1,1,2]),first) # clean_array(first['U']) # clean_array(second) # print second.T*second # print # print C([1,1,2,3,4],[1,1,2,3,4]) pymc-2.2+ds/pymc/gp/Realization.py000066400000000000000000000163701204033704200171420ustar00rootroot00000000000000# Copyright (c) Anand Patil, 2007 __docformat__='reStructuredText' __all__ = ['Realization', 'StandardRealization', 'BasisRealization'] from numpy import * from numpy.random import normal from numpy.linalg import cholesky, eigh, solve from .Covariance import Covariance from .BasisCovariance import BasisCovariance from .Mean import Mean from .GPutils import observe, trisolve, regularize_array, caching_call from .linalg_utils import check_repeats, remove_duplicates import copy def Realization(M, C, *args, **kwargs): """ f = Realization(M, C[, init_mesh, init_vals, check_repeats = True, regularize = True]) Returns a realization from a Gaussian process. :Arguments: - `M`: A Gaussian process mean function. - `C`: A Covariance instance. - `init_mesh`: An optional ndarray giving mesh at which f's initial value will be specified. - `init_vals`: An ndarray giving the value of f over init_mesh. - `regularize`: If init_mesh is not shaped as (n, ndim), where ndim is the dimension of the space, regularize should be True. - `check_repeats: Determines whether calls to the GP realization will be checked against previous calls before evaluation. :SeeAlso: Mean, Covariance, BasisCovariance, observe, GP """ if isinstance(C, BasisCovariance): return BasisRealization(M, C, *args, **kwargs) else: return StandardRealization(M, C, *args, **kwargs) class StandardRealization(object): """ f = Realization(M, C[, init_mesh, init_vals, check_repeats = True, regularize = True]) Returns a realization from a Gaussian process. :Arguments: - `M`: A Gaussian process mean function. - `C`: A Covariance instance. - `init_mesh`: An optional ndarray giving mesh at which f's initial value will be specified. - `init_vals`: An ndarray giving the value of f over init_mesh. - `regularize`: If init_mesh is not shaped as (n, ndim), where ndim is the dimension of the space, regularize should be True. - `check_repeats: Determines whether calls to the GP realization will be checked against previous calls before evaluation. :SeeAlso: Mean, Covariance, BasisCovariance, observe, GP """ # pickle support def __getstate__(self): return (self.M, self.C, self.x_sofar, self.f_sofar, self.check_repeats, False) def __setstate__(self, state): self.__init__(*state) def __init__(self, M, C, init_mesh = None, init_vals = None, check_repeats = True, regularize = True): self.M = M self.C = C # Make internal copies of M and C. Note that subsequent observations of M and C # will not affect self. M_internal = copy.copy(M) C_internal = copy.copy(C) M_internal.C = C_internal self.init_mesh = init_mesh self.init_vals = init_vals self.check_repeats = check_repeats self.regularize = regularize self.need_init_obs = True self.M_internal = M_internal self.C_internal = C_internal self.x_sofar = None self.f_sofar = None def _init_obs(self): # If initial values were specified on a mesh: if self.init_mesh is not None: if self.regularize: self.init_mesh = regularize_array(self.init_mesh) self.init_vals = self.init_vals.ravel() # Observe internal M and C with self's value on init_mesh. observe(self.M_internal, self.C_internal, obs_mesh=self.init_mesh, obs_vals=self.init_vals, obs_V=zeros(len(self.init_vals),dtype=float), lintrans=None, cross_validate = False) # Store init_mesh. if self.check_repeats: self.x_sofar = self.init_mesh self.f_sofar = self.init_vals self.need_init_obs = False def __call__(self, x, regularize=True): # TODO: check repeats for basis covariances too. # If initial values were passed in, observe on them. if self.need_init_obs: self._init_obs() # Record original shape of x and regularize it. orig_shape = shape(x) if len(orig_shape)>1: orig_shape = orig_shape[:-1] if regularize: if any(isnan(x)): raise ValueError('Input argument to Realization contains NaNs.') x = regularize_array(x) if x is self.x_sofar: return self.f_sofar if self.check_repeats: # use caching_call to save duplicate calls. f, self.x_sofar, self.f_sofar = caching_call(self.draw_vals, x, self.x_sofar, self.f_sofar) else: # Call to self.draw_vals. f = self.draw_vals(x) if regularize: return f.reshape(orig_shape) else: return f def draw_vals(self, x): # First observe the internal covariance on x. relevant_slice, obs_mesh_new, U, Uo_Cxo = self.C_internal.observe(x, zeros(x.shape[0]), output_type='r') # Then evaluate self's mean on x. M = self.M_internal(x, regularize=False, Uo_Cxo=Uo_Cxo) # Then draw new values for self(x). q = dot(U.T , normal(size = U.shape[0])) f = asarray((M.T+q)).ravel() # Then observe self's mean using the new values. self.M_internal.observe(self.C_internal, obs_mesh_new, f[relevant_slice]) return f class BasisRealization(StandardRealization): """ f = BasisRealization(M, C[, init_mesh, init_vals, check_repeats = True, regularize = True]) Returns a realization from a Gaussian process. :Arguments: - `M`: A Gaussian process mean function. - `C`: A BasisCovariance instance. - `init_mesh`: An optional ndarray giving mesh at which f's initial value will be specified. - `init_vals`: An ndarray giving the value of f over init_mesh. - `regularize`: If init_mesh is not shaped as (n, ndim), where ndim is the dimension of the space, regularize should be True. - `check_repeats: Determines whether calls to the GP realization will be checked against previous calls before evaluation. :SeeAlso: Mean, Covariance, BasisCovariance, observe, GP """ def __init__(self, M, C, init_mesh = None, init_vals = None, regularize = True): StandardRealization.__init__(self, M, C, init_mesh, init_vals, False, regularize) self.coef_vals = asarray(dot(self.C_internal.coef_U.T,normal(size=self.C_internal.m))) def draw_vals(self, x): # If C is a BasisCovariance, just evaluate the basis over x, multiply by self's # values for the coefficients and add the mean. # TODO: For optimization, you could try a BasisMean class. # However, I don't think it would be very much faster. # You'd only save an evaluation of the underlying mean and # a vector addition. basis_x = self.C_internal.eval_basis(x) f = (self.M_internal(x, regularize=False, Uo_Cxo=basis_x) + dot(self.coef_vals, basis_x)) return f pymc-2.2+ds/pymc/gp/__init__.py000066400000000000000000000016161204033704200164150ustar00rootroot00000000000000# Copyright (c) Anand Patil, 2007 # Where matrix evaluations can be done in chunks, the chunk size will be # kept below this limit. chunksize = 1e8 __modules__ = [ 'GPutils', 'Mean', 'Covariance', 'BasisCovariance', 'FullRankCovariance', 'NearlyFullRankCovariance', 'Realization', 'cov_funs', 'gp_submodel', 'step_methods'] __optmodules__ = ['gpplots'] from .GPutils import * from .Mean import * from .Covariance import * from .BasisCovariance import * from .FullRankCovariance import * from .NearlyFullRankCovariance import * from .Realization import * from .cov_funs import * from .gp_submodel import * from .step_methods import * try: from . import gpplots except ImportError: pass try: import SparseCovariance except ImportError: pass pymc-2.2+ds/pymc/gp/cov_funs/000077500000000000000000000000001204033704200161225ustar00rootroot00000000000000pymc-2.2+ds/pymc/gp/cov_funs/__init__.py000066400000000000000000000022041204033704200202310ustar00rootroot00000000000000from .isotropic_cov_funs import * from .cov_utils import * from .bases import * from .wrapped_distances import * from . import isotropic_cov_funs from .brownian import * from .nsmatern import * extra_parameters = {'gaussian': {'': ''}, 'pow_exp': {'pow': 'The exponent in the exponential.'}, 'exponential':{'':''}, 'matern': {'diff_degree': 'The degree of differentiability of realizations.'}, 'sphere': {'': ''}, 'quadratic': {'phi': 'The characteristic (scaled) distance of decorrelation.'}, 'exponential': {'': ''}} for name in extra_parameters: locals()[name] = covariance_function_bundle(name, 'isotropic_cov_funs', extra_parameters[name], ampsq_is_diag=True) nsmatern_extra_params = {'diff_degree': 'A function giving the local degree of differentiability.', 'h': 'A function giving the local relative amplitude.'} nsmatern = covariance_function_bundle('nsmatern', 'nsmatern', nsmatern_extra_params, ampsq_is_diag=False, with_x=True) for w in nsmatern.wrappers: w.diag_call = nsmatern_diag pymc-2.2+ds/pymc/gp/cov_funs/bases.py000066400000000000000000000014031204033704200175670ustar00rootroot00000000000000# Copyright (c) Anand Patil, 2007 from numpy import * from pymc import six xrange = six.moves.xrange __all__ = ['fourier_basis'] def fourier_basis(n): n_dim = len(n) basis = [] for i in xrange(n_dim): def fun(x, xmin, xmax): return ones(x.shape[0], dtype=float) basis_now = [fun] for j in xrange(1,n[i]+1): def fun(x, xmin, xmax, j=j, i=i): T = xmax[i] - xmin[i] return cos(2.*j*pi*(x[:,i] - xmin[i]) / T) basis_now.append(fun) def fun(x, xmin, xmax, j=j, i=i): T = xmax[i] - xmin[i] return sin(2.*j*pi*(x[:,i] - xmin[i]) / T) basis_now.append(fun) basis.append(basis_now) return basis pymc-2.2+ds/pymc/gp/cov_funs/brownian.py000066400000000000000000000064361204033704200203240ustar00rootroot00000000000000from . import isotropic_cov_funs import numpy as np from .isotropic_cov_funs import symmetrize, imul from copy import copy from pymc import get_threadpool_size, map_noreturn from pymc import six xrange = six.moves.xrange __all__ = ['brownian'] def brownian_targ(C,x,y,h,amp,cmin, cmax,symm): # Compute covariance for this bit if h==.5: isotropic_cov_funs.brownian(C,x,y,cmin=0,cmax=-1,symm=symm) else: isotropic_cov_funs.frac_brownian(C,x,y,h,cmin=0,cmax=-1,symm=symm) imul(C, amp*amp, cmin=cmin, cmax=cmax, symm=symm) # Possibly symmetrize this bit if symm: symmetrize(C, cmin=cmin, cmax=cmax) def brownian(x,y,amp=1.,scale=1.,origin=None,h=.5,symm=None): """ brownian(x,y,amp=1., scale=1.,h=.5,origin=None) Fractional n-dimensional brownian motion. h=.5 corresponds to standard Brownian motion. A covariance function. Remember, broadcasting for covariance functions works differently than for numpy universal functions. C(x,y) returns a matrix, and C(x) returns a vector. :Parameters: - `amp`: The pointwise standard deviation of f. - `scale`: The factor by which to scale the distance between points. Large value implies long-range correlation. - `h': The fractional parameter. - `x and y` are arrays of points in Euclidean coordinates formatted as follows: [[x_{0,0} ... x_{0,ndim}], [x_{1,0} ... x_{1,ndim}], ... [x_{N,0} ... x_{N,ndim}]] - `symm` indicates whether x and y are references to the same array. - `cmin' and `cmax' indicate which columns to compute. These are used for multithreaded evaluation. :Reference: http://en.wikipedia.org/wiki/Fractional_brownian_motion """ # Thanks to Anne Archibald for handythread.py, the model for the # multithreaded call. if h<0 or h>1: raise ValueError('Parameter h must be between 0 and 1.') if amp<0. or scale<0.: raise ValueError('The amp and scale parameters must be positive.') if symm is None: symm = (x is y) # Figure out how to divide job up between threads. nx = x.shape[0] ny = y.shape[0] n_threads = min(get_threadpool_size(), nx*ny / 10000) if n_threads > 1: if not symm: bounds = np.linspace(0,ny,n_threads+1) else: bounds = np.array(np.sqrt(np.linspace(0,ny*ny,n_threads+1)),dtype=int) # Allocate the matrix C = np.asmatrix(np.empty((nx,ny),dtype=float,order='F')) if origin is not None: x = x-origin y = y-origin x = x / float(scale) y = y / float(scale) if n_threads <= 1: brownian_targ(C,x,y,h,amp,0,-1,symm) else: thread_args=[(C,x,y,h,amp,bounds[i],bounds[i+1],symm) for i in xrange(n_threads)] map_noreturn(brownian_targ, thread_args) return C weiner = brownian if __name__ == '__main__': import numpy import pymc from pylab import * N = 100 x,y=numpy.meshgrid(linspace(.01,1,N), linspace(.01,1,N)) z = numpy.empty((N,N,2)) z[:,:,0]=x z[:,:,1]=y C = pymc.gp.FullRankCovariance(brownian, amp=1., scale=1., h=.1) M = pymc.gp.Mean(lambda x: numpy.zeros(x.shape[:-1])) f = pymc.gp.Realization(M,C) imshow(f(z)) pymc-2.2+ds/pymc/gp/cov_funs/cov_utils.py000066400000000000000000000255041204033704200205110ustar00rootroot00000000000000# Copyright (c) Anand Patil, 2007 import numpy as np from . import wrapped_distances import inspect import imp import pickle from .isotropic_cov_funs import symmetrize, imul from copy import copy import sys,os from pymc import get_threadpool_size, map_noreturn import pymc from pymc import six xrange = six.moves.xrange mod_search_path = [pymc.__path__[0]+'/gp/cov_funs', os.getcwd()] + sys.path __all__ = ['covariance_wrapper', 'covariance_function_bundle'] def regularize_array(A): """ Takes an np.ndarray as an input. - If the array is one-dimensional, it's assumed to be an array of input values. - If the array is more than one-dimensional, its last index is assumed to curse over spatial dimension. Either way, the return value is at least two dimensional. A.shape[-1] gives the number of spatial dimensions. """ if not isinstance(A,np.ndarray): A = np.array(A, dtype=float) else: A = np.asarray(A, dtype=float) if len(A.shape) <= 1: return A.reshape(-1,1) elif A.shape[-1]>1: return A.reshape(-1, A.shape[-1]) else: return A def import_item(name): """ Useful for importing nested modules such as pymc.gp.cov_funs.isotropic_cov_funs. Updated with code copied from IPython under a BSD license. """ package = '.'.join(name.split('.')[0:-1]) obj = name.split('.')[-1] if package: module = __import__(package,fromlist=[obj]) return module.__dict__[obj] else: return __import__(obj) class covariance_wrapper(object): """ A wrapper for the Fortran covariance functions that removes the need for worrying about the common arguments amp and scale, and that separates the distance-finding from the covariance-evaluating for less code duplication and easier nonstationary generalizations. Parallelizes calls of sufficient size. """ # pickle support def __getstate__(self): return (self.cov_fun_name, self.cov_fun_module.__name__, self.extra_cov_params, self.distance_fun_name, self.distance_fun_module.__name__) def __setstate__(self, state): self.__init__(*state) def __init__(self, cov_fun_name, cov_fun_module, extra_cov_params, distance_fun_name, distance_fun_module, with_x=False): self.cov_fun_name = cov_fun_name self.distance_fun_name = distance_fun_name try: cov_fun = import_item(cov_fun_module + "." + cov_fun_name) except ImportError: cov_fun_module = 'pymc.gp.cov_funs.' + cov_fun_module cov_fun = import_item(cov_fun_module + "." + cov_fun_name) try: distance_fun = import_item(distance_fun_module+"."+distance_fun_name) except ImportError: distance_fun_module = 'pymc.gp.cov_funs.' + distance_fun_module distance_fun = import_item(distance_fun_module+"."+distance_fun_name) self.cov_fun_module = sys.modules[cov_fun_module] self.cov_fun = cov_fun self.distance_fun_module = sys.modules[distance_fun_module] self.distance_fun = distance_fun self.extra_cov_params = extra_cov_params self.__doc__ = cov_fun_name + '.' + distance_fun.__name__+ covariance_wrapperdoc[0] self.with_x = with_x # Add covariance parameters to function signature for parameter in extra_cov_params: self.__doc__ += ', ' + parameter # Add distance parameters to function signature if hasattr(distance_fun,'extra_parameters'): self.extra_distance_params = distance_fun.extra_parameters for parameter in self.extra_distance_params: self.__doc__ += ', ' + parameter # Document covariance parameters self.__doc__ += covariance_wrapperdoc[1] if hasattr(cov_fun, 'extra_parameters'): for parameter in extra_cov_params: self.__doc__ += "\n\n - " + parameter + ": " + extra_cov_params[parameter] # Document distance parameters. if hasattr(distance_fun,'extra_parameters'): for parameter in self.extra_distance_params: self.__doc__ += "\n\n - " + parameter + ": " + self.extra_distance_params[parameter] self.__doc__ += "\n\nDistances are computed using "+distance_fun.__name__+":\n\n"+distance_fun.__doc__ def __call__(self,x,y,amp=1.,scale=1.,symm=None,*args,**kwargs): if amp<0. or scale<0.: raise ValueError('The amp and scale parameters must be positive.') if symm is None: symm = (x is y) # Figure out how to divide job up between threads. nx = x.shape[0] ny = y.shape[0] n_threads = min(get_threadpool_size(), nx*ny / 10000) if n_threads > 1: if not symm: bounds = np.linspace(0,ny,n_threads+1) else: bounds = np.array(np.sqrt(np.linspace(0,ny*ny,n_threads+1)),dtype=int) # Split off the distance arguments distance_arg_dict = {} if hasattr(self.distance_fun, 'extra_parameters'): for key in self.extra_distance_params: if key in kwargs.keys(): distance_arg_dict[key] = kwargs.pop(key) # Allocate the matrix C = np.asmatrix(np.empty((nx,ny),dtype=float,order='F')) def targ(C,x,y, cmin, cmax,symm, d_kwargs=distance_arg_dict, c_args=args, c_kwargs=kwargs): # Compute distance for this bit self.distance_fun(C, x, y, cmin=cmin, cmax=cmax, symm=symm, **d_kwargs) imul(C, 1./scale, cmin=cmin, cmax=cmax, symm=symm) # Compute covariance for this bit if self.with_x: self.cov_fun(C,x,y,cmin=cmin, cmax=cmax,symm=symm,*c_args,**c_kwargs) else: self.cov_fun(C, cmin=cmin, cmax=cmax,symm=symm, *c_args, **c_kwargs) imul(C, amp*amp, cmin=cmin, cmax=cmax, symm=symm) if n_threads <= 1: targ(C,x,y,0,-1,symm) else: thread_args = [(C,x,y,bounds[i],bounds[i+1],symm) for i in xrange(n_threads)] map_noreturn(targ, thread_args) if symm: symmetrize(C) return C class covariance_wrapper_with_diag(covariance_wrapper): def diag_call(self, x, amp=1., scale=1., *args, **kwds): return amp**2*np.ones(x.shape[0]) # Common verbiage in the covariance functions' docstrings covariance_wrapperdoc = ["(x,y",""", amp=1., scale=1.) A covariance function. Remember, broadcasting for covariance functions works differently than for numpy universal functions. C(x,y) returns a matrix, and C(x) returns a vector. :Arguments: - `x, y`: arrays on which to evaluate the covariance function. - `amp`: The pointwise standard deviation of f. - `scale`: The factor by which to scale the distance between points. Large value implies long-range correlation."""] class covariance_function_bundle(object): """ B = covariance_function_bundle(cov_fun) A bundle of related covariance functions that use the stationary, isotropic covariance function cov_fun. Attributes: - `raw`: The raw covariance function, which overwrites a distance matrix with a covariance matrix. - `euclidean`: The covariance function wrapped to use Euclidean coordinates in R^n, with amp and scale arguments. - `geo_rad`: The covariance function wrapped to use geographic coordinates (latitude and longitude) on the surface of the sphere, with amp and scale arguments. Angles are assumed to be in radians. Radius of sphere is assumed to be 1, but you can effectively change the radius using the 'scale' argument. - `geo_deg`: Like geo_rad, but angles are in degrees. - `aniso_geo_rad`: Like geo_rad, but the distance function takes extra parameters controlling the eccentricity and angle of inclination of the elliptical level sets of distance. - `aniso_geo_deg`: Like aniso_geo_rad, but angles are in degrees. - `nonstationary`: Not implemented yet. Method: - `add_distance_metric(distance_fun)`: Takes a function that computes a distance matrix for points in some coordinate system and returns the covariance function wrapped to use that coordinate system. :Parameters: - `cov_fun` should overwrite distance matrices with covariance matrices in-place. In addition to the distance matrix, it should take an optional argument called 'symm' which indicates whether the output matrix will be symmetric. """ def __init__(self, cov_fun_name, cov_fun_module, extra_cov_params, ampsq_is_diag=False, with_x=False): self.cov_fun_name = cov_fun_name self.cov_fun_module = cov_fun_module self.extra_cov_params = extra_cov_params self.ampsq_is_diag = ampsq_is_diag self.wrappers = [] self.add_distance_metric('euclidean','wrapped_distances',with_x=with_x) self.add_distance_metric('geo_rad','wrapped_distances',with_x=with_x) self.add_distance_metric('geo_deg','wrapped_distances',with_x=with_x) self.add_distance_metric('aniso_geo_rad','wrapped_distances',with_x=with_x) self.add_distance_metric('aniso_geo_deg','wrapped_distances',with_x=with_x) self.add_distance_metric('partition_aniso_geo_deg','wrapped_distances',with_x=with_x) self.add_distance_metric('partition_aniso_geo_rad','wrapped_distances',with_x=with_x) self.raw = self.euclidean.cov_fun def add_distance_metric(self, distance_fun_name, distance_fun_module, with_x): """ Takes a function that computes a distance matrix for points in some coordinate system and returns self's covariance function wrapped to use that distance function. Uses function apply_distance, which was used to produce self.euclidean and self.geographic and their docstrings. :Parameters: - `distance_fun`: Creates a distance matrix from two np.arrays of points, where the first index iterates over separate points and the second over coordinates. In addition to the arrays x and y, distance_fun should take an argument called symm which indicates whether x and y are the same array. :SeeAlso: - `apply_distance()` """ if self.ampsq_is_diag: kls = covariance_wrapper_with_diag else: kls = covariance_wrapper new_fun = kls(self.cov_fun_name, self.cov_fun_module, self.extra_cov_params, distance_fun_name, distance_fun_module, with_x=with_x) self.wrappers.append(new_fun) # try: setattr(self, distance_fun_name, new_fun) # except: # pass return new_fun pymc-2.2+ds/pymc/gp/cov_funs/distances.f000066400000000000000000000151741204033704200202560ustar00rootroot00000000000000! Copyright (c) Anand Patil, 2007 SUBROUTINE euclidean(D,x,y,nx,ny,ndx,ndy,cmin,cmax,symm) cf2py intent(inplace) D cf2py integer intent(optional) :: cmin=0 cf2py integer intent(optional) :: cmax=-1 cf2py logical intent(optional) :: symm=0 cf2py intent(hide) nx, ny,ndx,ndy cf2py threadsafe DOUBLE PRECISION D(nx,ny), x(nx,ndx), y(ny,ndy) INTEGER nx,ny,i,j,k,cmin,cmax,ndx,ndy LOGICAL symm DOUBLE PRECISION dist, dev if (cmax.EQ.-1) then cmax = ny end if ! print *,nx,ny,ndx,ndy,cmin,cmax,symm if(symm) then do j=cmin+1,cmax D(j,j) = 0.0D0 do i=1,j-1 dist = 0.0D0 do k=1,ndx dev=(x(i,k) - y(j,k)) dist = dist + dev*dev enddo D(i,j) = dsqrt(dist) enddo enddo else do j=cmin+1,cmax do i=1,nx dist = 0.0D0 do k=1,ndx dev=(x(i,k) - y(j,k)) dist = dist + dev*dev enddo D(i,j) = dsqrt(dist) enddo enddo endif RETURN END SUBROUTINE geographic(D,x,y,nx,ny,cmin,cmax,symm) ! First coordinate is longitude, second is latitude. ! Assumes r=1. cf2py logical intent(optional) :: symm=0 cf2py integer intent(optional) :: cmin=0 cf2py integer intent(optional) :: cmax=-1 cf2py intent(hide) nx, ny cf2py intent(inplace) D cf2py threadsafe DOUBLE PRECISION D(nx,ny), x(nx,2), y(ny,2) integer nx,ny,j,i,i_hi,cmin,cmax LOGICAL symm DOUBLE PRECISION clat1, clat2, dlat, dlon, a, sterm, cterm if (cmax.EQ.-1) then cmax = ny end if do j=cmin+1,cmax clat2 = dcos(y(j,2)) if(symm) then D(j,j)=0.0D0 i_hi = j-1 else i_hi = nx endif do i=1,i_hi clat1 = dcos(x(i,2)) dlat = (x(i,2)-y(j,2))*0.5D0 dlon = (x(i,1)-y(j,1))*0.5D0 a=dsin(dlat)**2 + clat1*clat2*dsin(dlon)**2 sterm = dsqrt(a) cterm = dsqrt(1.0D0-a) D(i,j) = 2.0D0*DATAN2(sterm,cterm) ! if(symm) then ! D(j,i) = D(i,j) ! end if enddo enddo RETURN END SUBROUTINE paniso_geo_rad(D,x,y,nx,ny,cmin,cmax *,ctrs,scals,na,symm) cf2py intent(inplace) D cf2py logical intent(optional) :: symm=0 cf2py integer intent(optional) :: cmin=0 cf2py integer intent(optional) :: cmax=-1 cf2py intent(hide) na, nx, ny cf2py threadsafe DOUBLE PRECISION D(nx,ny), x(nx,2), y(ny,2) DOUBLE PRECISION ctrs(na), scals(na), w integer nx,ny,i,j,na,i_hi,cmin,cmax LOGICAL symm DOUBLE PRECISION a,pi,da,dlon,dlat PARAMETER (pi=3.141592653589793238462643d0) if (cmax.EQ.-1) then cmax = ny end if CALL geographic(D,x,y,nx,ny,cmin,cmax,symm) w = 0.5D0/real(na) do k=1,na ctrs(k) = ctrs(k)/pi end do do j=cmin+1,cmax if(symm) then D(j,j)=0.0D0 i_hi = j-1 else i_hi = nx endif do i = 1,i_hi if (D(i,j).GT.0.0D0) then dlat = (x(i,2)-y(j,2)) dlon = (x(i,1)-y(j,1)) a=dsqrt(dlon*dlon+dlat*dlat) theta = DATAN2(dlat/a,dlon/a)/pi do k=1,na da=theta-ctrs(k) do while (da.LT.0.0D0) da = da + 2.0D0 end do if ((da.LE.w).OR. * (da.GT.2.0D0-w).OR. * ((da.GT.1.0D0).AND.(da.LE.1.0D0+w)).OR. * ((da.GT.1.0D0-w).AND.(da.LE.1.0D0))) then D(i,j)=D(i,j)/scals(k) go to 1 end if enddo 1 continue end if ! if(symm) then ! D(j,i) = D(i,j) ! end if enddo enddo RETURN END c SUBROUTINE aniso_geo_rad(D,x,y,nx,ny,cmin,cmax,inc,ecc,symm) ! First coordinate is longitude, second is latitude. ! Assumes r=1. cf2py intent(inplace) D cf2py logical intent(optional) :: symm = 0 cf2py integer intent(optional) :: cmin=0 cf2py integer intent(optional) :: cmax=-1 cf2py intent(hide) nx cf2py intent(hide) ny cf2py threadsafe DOUBLE PRECISION D(nx,ny), x(nx,2), y(ny,2) integer nx,ny,i,j,cmin,cmax LOGICAL symm DOUBLE PRECISION clat1, clat2, dlat, dlon, a, sterm, cterm DOUBLE PRECISION slat1, slat2, inc, ecc, theta, dtheta if (cmax.EQ.-1) then cmax = ny end if if (symm) then do j=cmin+1,cmax clat2 = dcos(y(j,2)) slat2 = dsin(y(j,2)) D(j,j)=0.0D0 do i=1,j-1 clat1 = dcos(x(i,2)) slat1 = dsin(x(i,2)) dlat = (x(i,2)-y(j,2)) dlon = (x(i,1)-y(j,1)) a=dsin(dlat*0.5D0)**2 + clat1*clat2*dsin(dlon*0.5D0)**2 sterm = dsqrt(a) cterm = dsqrt(1.0D0-a) D(i,j) = 2.0D0*DATAN2(sterm,cterm) if (D(i,j).GT.0.0D0) then a=dsqrt(dlon*dlon+dlat*dlat) theta = DATAN2(dlat/a,dlon/a) dtheta = theta-inc dtheta = dcos(dtheta) dtheta=ecc*ecc*dtheta*dtheta D(i,j)=D(i,j)*dsqrt(1.0D0 - dtheta) end if ! D(j,i) = D(i,j) enddo enddo else do j=cmin+1,cmax clat2 = dcos(y(j,2)) slat2 = dsin(y(j,2)) do i=1,nx clat1 = dcos(x(i,2)) slat1 = dsin(x(i,2)) dlat = (x(i,2)-y(j,2)) dlon = (x(i,1)-y(j,1)) a=dsin(dlat*0.5D0)**2 + clat1*clat2*dsin(dlon*0.5D0)**2 sterm = dsqrt(a) cterm = dsqrt(1.0D0-a) D(i,j) = 2.0D0*DATAN2(sterm,cterm) if (D(i,j).GT.0.0D0) then a=dsqrt(dlon*dlon+dlat*dlat) theta = DATAN2(dlat/a,dlon/a) dtheta = theta-inc dtheta = dcos(dtheta) dtheta=ecc*ecc*dtheta*dtheta D(i,j)=D(i,j)*dsqrt(1.0D0 - dtheta) end if enddo enddo endif RETURN END pymc-2.2+ds/pymc/gp/cov_funs/isotropic_cov_funs.f000066400000000000000000001570601204033704200222170ustar00rootroot00000000000000! Copyright (c) Anand Patil, 2007 c A collection of covariance functions for Gaussian processes. c By convention, the first dimension of each input array iterates over points, and c subsequent dimensions iterate over spatial dimensions. SUBROUTINE imul(C,a,nx,ny,cmin,cmax,symm) cf2py intent(inplace) C cf2py integer intent(in), optional :: cmin = 0 cf2py integer intent(in), optional :: cmax = -1 cf2py intent(hide) nx,ny cf2py logical intent(in), optional:: symm=0 cf2py threadsafe DOUBLE PRECISION C(nx,ny) DOUBLE PRECISION a INTEGER nx, ny, i, j, cmin, cmax LOGICAL symm EXTERNAL DSCAL if (cmax.EQ.-1) then cmax = ny end if if (symm) then do j=cmin+1,cmax do i=1,j C(i,j) = C(i,j) * a end do ! CALL DSCAL(j,a,C(1,j),1) enddo else do j=cmin+1,cmax do i=1,nx C(i,j) = C(i,j) * a end do ! CALL DSCAL(nx,a,C(1,j),1) enddo endif RETURN END SUBROUTINE symmetrize(C,nx,cmin,cmax) cf2py intent(inplace) C cf2py intent(hide) nx cf2py integer intent(in), optional :: cmin=0 cf2py integer intent(in), optional :: cmax=-1 cf2py threadsafe DOUBLE PRECISION C(nx,nx) INTEGER nx, i, j, cmin, cmax if (cmax.EQ.-1) then cmax = nx end if do j=cmin,cmax do i=1,j-1 C(j,i) = C(i,j) end do end do RETURN END SUBROUTINE matern(C,diff_degree,nx,ny,cmin,cmax,symm,BK,N) cf2py intent(inplace) C cf2py integer intent(in), optional :: cmin = 0 cf2py integer intent(in), optional :: cmax = -1 cf2py intent(hide) nx,ny,Bk cf2py logical intent(in), optional:: symm=0 cf2py integer intent(hide), depend(diff_degree):: N = floor(diff_degree) cf2py double precision intent(in),check(diff_degree>0)::diff_degree cf2py threadsafe DOUBLE PRECISION C(nx,ny) DOUBLE PRECISION diff_degree, rem DOUBLE PRECISION GA, prefac, snu DOUBLE PRECISION far INTEGER nx, ny, i, j, fl, N, cmin, cmax DOUBLE PRECISION BK(N+1), DGAMMA LOGICAL symm DOUBLE PRECISION PI PARAMETER (PI=3.141592653589793238462643d0) DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) ! print *,diff_degree,nx,ny,cmin,cmax,symm,N if (cmax.EQ.-1) then cmax = ny end if if (diff_degree.GE. 0.01) then far = dabs((diff_degree+2.0D0)**2-0.25D0)*10.0D0 else far = infinity end if if (diff_degree .GT. 10.0D0) then call gaussian(C,nx,ny,cmin,cmax,symm) return endif if (diff_degree .EQ. 1.0D0) then prefac = 1.0D0 else GA = DGAMMA(diff_degree) prefac = 0.5D0 ** (diff_degree-1.0D0) / GA endif snu = DSQRT(diff_degree) * 2.0D0 fl = DINT(diff_degree) rem = diff_degree - fl if (symm) then do j=cmin+1,cmax C(j,j) = 1.0D0 do i=1,j-1 if (C(i,j) .EQ. 0.0D0) then C(i,j)=1.0D0 else ! Asymptotic form for large distances, to avoid numerical problems if (C(i,j) .GT. far) then C(i,j) = C(i,j) * snu BK(fl+1) = dsqrt(PI/2.0D0/C(i,j))*dexp(-C(i,j)) else C(i,j) = C(i,j) * snu CALL RKBESL(C(i,j),rem,fl+1,1,BK,N) end if C(i,j)=prefac*(C(i,j)**diff_degree)*BK(fl+1) endif ! C(j,i)=C(i,j) enddo enddo else do j=cmin+1,cmax do i=1,nx if (C(i,j) .EQ. 0.0D0) then C(i,j)=1.0D0 else ! Asymptotic form for large distances, to avoid numerical problems if (C(i,j) .GT. far) then C(i,j) = C(i,j) * snu BK(fl+1) = dsqrt(PI/2.0D0/C(i,j))*dexp(-C(i,j)) else C(i,j) = C(i,j) * snu CALL RKBESL(C(i,j),rem,fl+1,1,BK,N) end if C(i,j)=prefac * (C(i,j) ** diff_degree) * BK(fl+1) endif enddo enddo endif RETURN END SUBROUTINE nsmatrn(C,ddx,ddy,hx,hy,Nmax, 1 nx,ny,cmin,cmax,symm,BK) cf2py intent(inplace) C cf2py integer intent(in), optional :: cmin = 0 cf2py integer intent(in), optional :: cmax = -1 cf2py intent(hide) nx,ny,Bk cf2py logical intent(in), optional:: symm=0 cf2py threadsafe DOUBLE PRECISION C(nx,ny) DOUBLE PRECISION diff_degree, rem, ddx(nx), ddy(ny) DOUBLE PRECISION GA, prefac, snu, hx(nx), hy(ny) DOUBLE PRECISION far INTEGER nx, ny, i, j, fl, N, cmin, cmax, Nmax DOUBLE PRECISION BK(Nmax+1), DGAMMA LOGICAL symm DOUBLE PRECISION PI PARAMETER (PI=3.141592653589793238462643d0) DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) ! N should be floor of diff_degree everywhere. ! print *,diff_degree,nx,ny,cmin,cmax,symm,N if (cmax.EQ.-1) then cmax = ny end if if (symm) then do j=cmin+1,cmax C(j,j) = hx(j)*hx(j) do i=1,j-1 h=hx(i)*hy(j) if (C(i,j) .EQ. 0.0D0) then C(i,j)=h else ! Nonstationary part diff_degree = (ddx(i)+ddy(j))*0.5D0 N = floor(diff_degree) if (diff_degree.GE. 0.01) then far = dabs((diff_degree+2.0D0)**2-0.25D0)*10.0D0 else far = infinity end if if (diff_degree .GT. 10.0D0) then call gaussian(C,nx,ny,cmin,cmax,symm) return endif if (diff_degree .EQ. 1.0D0) then prefac = 1.0D0 else GA = DGAMMA(diff_degree) prefac = 0.5D0 ** (diff_degree-1.0D0) / GA endif snu = DSQRT(diff_degree) * 2.0D0 fl = DINT(diff_degree) rem = diff_degree - fl ! Asymptotic form for large distances, to avoid numerical problems if (C(i,j) .GT. far) then C(i,j) = C(i,j) * snu BK(fl+1) = dsqrt(PI/2.0D0/C(i,j))*dexp(-C(i,j)) else C(i,j) = C(i,j) * snu CALL RKBESL(C(i,j),rem,fl+1,1,BK,N) end if C(i,j)=h*prefac*(C(i,j)**diff_degree)*BK(fl+1) endif ! C(j,i)=C(i,j) enddo enddo else do j=cmin+1,cmax do i=1,nx h=hx(i)*hy(j) if (C(i,j) .EQ. 0.0D0) then C(i,j)=h else ! Nonstationary part diff_degree = (ddx(i)+ddy(j))*0.5D0 N = floor(diff_degree) h=hx(i)*hy(j) if (diff_degree.GE. 0.01) then far = dabs((diff_degree+2.0D0)**2-0.25D0)*10.0D0 else far = infinity end if if (diff_degree .GT. 10.0D0) then call gaussian(C,nx,ny,cmin,cmax,symm) return endif if (diff_degree .EQ. 1.0D0) then prefac = 1.0D0 else GA = DGAMMA(diff_degree) prefac = 0.5D0 ** (diff_degree-1.0D0) / GA endif snu = DSQRT(diff_degree) * 2.0D0 fl = DINT(diff_degree) rem = diff_degree - fl ! Asymptotic form for large distances, to avoid numerical problems if (C(i,j) .GT. far) then C(i,j) = C(i,j) * snu BK(fl+1) = dsqrt(PI/2.0D0/C(i,j))*dexp(-C(i,j)) else C(i,j) = C(i,j) * snu CALL RKBESL(C(i,j),rem,fl+1,1,BK,N) end if C(i,j)=h*prefac*(C(i,j)**diff_degree)*BK(fl+1) endif enddo enddo endif RETURN END SUBROUTINE stein_spatiotemporal *(C,Gt,origin_val,Bk, * cmin,cmax,nx,ny,symm) cf2py threadsafe cf2py integer intent(in), optional :: cmin=0 cf2py integer intent(in), optional :: cmax=-1 cf2py intent(inplace) C cf2py intent(hide) nx, ny, Bk cf2py logical intent(in), optional:: symm=0 cf2py double precision intent(in),check(origin_val>0)::origin_val DOUBLE PRECISION C(nx,ny), Gt(nx,ny) DOUBLE PRECISION origin_val DOUBLE PRECISION rem, dd_here, far DOUBLE PRECISION GA, prefac, snu INTEGER nx, ny, i, j, fl, N, cmin, cmax DOUBLE PRECISION BK(50), DGAMMA LOGICAL symm DOUBLE PRECISION PI PARAMETER (PI=3.141592653589793238462643d0) DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) if (cmax.EQ.-1) then cmax = ny end if if (symm) then do j=cmin+1,cmax C(j,j) = 1.0D0 do i=1,j-1 ! ================================ ! = gamma(t) can be changed here = ! ================================ dd_here=Gt(i,j) if (dd_here.GE. 0.01) then far = dabs((dd_here+2.0D0)**2-0.25D0)*10.0D0 else far = infinity end if if (C(i,j) .EQ. 0.0D0) then C(i,j)=origin_val / dd_here else if (dd_here .GT. 5.0D0) then C(i,j)=dexp(-C(i,j)**2)/dd_here*origin_val goto 1 endif GA = DGAMMA(dd_here+1.0D0) prefac = 0.5D0 ** (dd_here-1.0D0) / GA prefac = prefac * origin_val snu = DSQRT(dd_here) * 2.0D0 fl = INT(dd_here) rem = dd_here - fl N = fl ! Asymptotic form for large distances, to avoid numerical problems if (C(i,j) .GT. far) then C(i,j) = C(i,j) * snu BK(fl+1) = dsqrt(PI/2.0D0/C(i,j))*dexp(-C(i,j)) else C(i,j) = C(i,j) * snu CALL RKBESL(C(i,j),rem,fl+1,1,BK,N) end if C(i,j)=prefac*(C(i,j)**dd_here)*BK(fl+1) endif 1 continue ! 1 C(j,i)=C(i,j) enddo enddo else do j=cmin+1,cmax do i=1,nx ! ================================ ! = gamma(t) can be changed here = ! ================================ dd_here=Gt(i,j) if (dd_here.GE. 0.01) then far = dabs((dd_here+2.0D0)**2-0.25D0)*10.0D0 else far = infinity end if if (C(i,j) .EQ. 0.0D0) then C(i,j)=origin_val / dd_here else if (dd_here .GT. 5.0D0) then C(i,j)=dexp(-C(i,j)**2)/dd_here*origin_val goto 2 endif GA = DGAMMA(dd_here+1.0D0) prefac = 0.5D0 ** (dd_here-1.0D0) / GA prefac = prefac * origin_val snu = DSQRT(dd_here) * 2.0D0 fl = INT(dd_here) rem = dd_here - fl N=fl ! Asymptotic form for large distances, to avoid numerical problems if (C(i,j) .GT. far) then C(i,j) = C(i,j) * snu BK(fl+1) = dsqrt(PI/2.0D0/C(i,j))*dexp(-C(i,j)) else C(i,j) = C(i,j) * snu CALL RKBESL(C(i,j),rem,fl+1,1,BK,N) end if C(i,j)=prefac*(C(i,j)**dd_here)*BK(fl+1) endif 2 enddo enddo endif RETURN END c SUBROUTINE nsst *(C,Gt,origin_val,hx,hy, * Bk,cmin,cmax,nx,ny,symm) cf2py threadsafe cf2py integer intent(in), optional :: cmin=0 cf2py integer intent(in), optional :: cmax=-1 cf2py intent(inplace) C cf2py intent(hide) nx, ny, Bk cf2py logical intent(in), optional:: symm=0 DOUBLE PRECISION C(nx,ny), Gt(nx,ny) DOUBLE PRECISION hx(nx), hy(ny) DOUBLE PRECISION origin_val(nx,ny) DOUBLE PRECISION rem, dd_here, far DOUBLE PRECISION GA, prefac, snu INTEGER nx, ny, i, j, fl, N, cmin, cmax DOUBLE PRECISION BK(50), DGAMMA LOGICAL symm DOUBLE PRECISION PI PARAMETER (PI=3.141592653589793238462643d0) DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) if (cmax.EQ.-1) then cmax = ny end if if (symm) then do j=cmin+1,cmax C(j,j) = hx(j)*hy(j) do i=1,j-1 ! ================================ ! = gamma(t) can be changed here = ! ================================ dd_here=Gt(i,j) if (dd_here.GE. 0.01) then far = dabs((dd_here+2.0D0)**2-0.25D0)*10.0D0 else far = infinity end if if (C(i,j) .EQ. 0.0D0) then C(i,j)=origin_val(i,j) / dd_here else if (dd_here .GT. 5.0D0) then C(i,j)=dexp(-C(i,j)**2)/dd_here*origin_val(i,j) goto 1 endif GA = DGAMMA(dd_here+1.0D0) prefac = 0.5D0 ** (dd_here-1.0D0) / GA prefac = prefac * origin_val(i,j) snu = DSQRT(dd_here) * 2.0D0 fl = INT(dd_here) rem = dd_here - fl N = fl ! Asymptotic form for large distances, to avoid numerical problems if (C(i,j) .GT. far) then C(i,j) = C(i,j) * snu BK(fl+1) = dsqrt(PI/2.0D0/C(i,j))*dexp(-C(i,j)) else C(i,j) = C(i,j) * snu CALL RKBESL(C(i,j),rem,fl+1,1,BK,N) end if C(i,j)=hx(i)*hy(j)*prefac*(C(i,j)**dd_here)*BK(fl+1) endif 1 continue ! 1 C(j,i)=C(i,j) enddo enddo else do j=cmin+1,cmax do i=1,nx ! ================================ ! = gamma(t) can be changed here = ! ================================ dd_here=Gt(i,j) if (dd_here.GE. 0.01) then far = dabs((dd_here+2.0D0)**2-0.25D0)*10.0D0 else far = infinity end if if (C(i,j) .EQ. 0.0D0) then C(i,j)=origin_val(i,j) / dd_here else if (dd_here .GT. 5.0D0) then C(i,j)=dexp(-C(i,j)**2)/dd_here*origin_val(i,j) goto 2 endif GA = DGAMMA(dd_here+1.0D0) prefac = 0.5D0 ** (dd_here-1.0D0) / GA prefac = prefac * origin_val(i,j) snu = DSQRT(dd_here) * 2.0D0 fl = INT(dd_here) rem = dd_here - fl N=fl ! Asymptotic form for large distances, to avoid numerical problems if (C(i,j) .GT. far) then C(i,j) = C(i,j) * snu BK(fl+1) = dsqrt(PI/2.0D0/C(i,j))*dexp(-C(i,j)) else C(i,j) = C(i,j) * snu CALL RKBESL(C(i,j),rem,fl+1,1,BK,N) end if C(i,j)=hx(i)*hy(j)*prefac*(C(i,j)**dd_here)*BK(fl+1) endif 2 enddo enddo endif RETURN END SUBROUTINE gaussian(C,nx,ny,cmin,cmax,symm) cf2py intent(inplace) C cf2py intent(hide) nx,ny cf2py logical intent(in), optional:: symm=0 cf2py integer intent(in), optional :: cmin=0 cf2py integer intent(in), optional :: cmax=-1 cf2py threadsafe INTEGER nx,ny,i,j,cmin,cmax DOUBLE PRECISION C(nx,ny) LOGICAL symm if (cmax.EQ.-1) then cmax = ny end if if(symm) then do j=cmin+1,cmax C(j,j) = 1.0D0 do i=1,j-1 C(i,j) = dexp(-C(i,j)*C(i,j)) enddo enddo else do j=cmin+1,cmax do i=1,nx C(i,j) = dexp(-C(i,j)*C(i,j)) enddo enddo endif return END c SUBROUTINE exponential(C,nx,ny,cmin,cmax,symm) cf2py intent(inplace) C cf2py intent(hide) nx,ny cf2py logical intent(in), optional:: symm=0 cf2py integer intent(in), optional :: cmin=0 cf2py integer intent(in), optional :: cmax=-1 cf2py threadsafe INTEGER nx,ny,i,j,cmin,cmax DOUBLE PRECISION C(nx,ny) LOGICAL symm if (cmax.EQ.-1) then cmax = ny end if if(symm) then do j=cmin+1,cmax C(j,j)=1.0D0 do i=1,j-1 C(i,j) = dexp(-dabs(C(i,j))) ! C(j,i) = C(i,j) enddo enddo else do j=cmin+1,cmax do i=1,nx C(i,j) = dexp(-dabs(C(i,j))) enddo enddo endif return END c SUBROUTINE brownian(C,x,y,nx,ny,ndx,ndy,cmin,cmax,symm) cf2py intent(inplace) C cf2py integer intent(optional) :: cmin=0 cf2py integer intent(optional) :: cmax=-1 cf2py logical intent(optional) :: symm=0 cf2py intent(hide) nx, ny,ndx,ndy cf2py threadsafe DOUBLE PRECISION C(nx,ny), x(nx,ndx), y(ny,ndy) INTEGER nx,ny,i,j,k,cmin,cmax,ndx,ndy LOGICAL symm DOUBLE PRECISION devx, devy, ampx, ampy, sampy DOUBLE PRECISION devd, ampd if (cmax.EQ.-1) then cmax = ny end if ! print *,nx,ny,ndx,ndy,cmin,cmax,symm if(symm) then do j=cmin+1,cmax ampy = 0.0D0 do k=1,ndx devy = y(j,k) ampy = ampy + devy*devy end do sampy = dsqrt(ampy) C(j,j)=sampy do i=1,j-1 ampx = 0.0D0 ampd = 0.0D0 do k=1,ndx devx = x(i,k) ampx = ampx + devx*devx devd = x(i,k)-y(j,k) ampd = ampd + devd*devd enddo C(i,j) = 0.5D0*(sampy + dsqrt(ampx) - dsqrt(ampd)) enddo enddo else do j=cmin+1,cmax ampy = 0.0D0 do k=1,ndx devy = y(j,k) ampy = ampy + devy*devy end do sampy = dsqrt(ampy) do i=1,nx ampx = 0.0D0 ampd = 0.0D0 do k=1,ndx devx = x(i,k) ampx = ampx + devx*devx devd = x(i,k)-y(j,k) ampd = ampd + devd*devd enddo C(i,j) = 0.5D0*(sampy + dsqrt(ampx) - dsqrt(ampd)) enddo enddo endif RETURN END c SUBROUTINE frac_brownian(C,x,y,h,nx,ny,ndx,ndy,cmin,cmax,symm) cf2py intent(inplace) C cf2py integer intent(optional) :: cmin=0 cf2py integer intent(optional) :: cmax=-1 cf2py logical intent(optional) :: symm=0 cf2py intent(hide) nx, ny,ndx,ndy cf2py threadsafe DOUBLE PRECISION C(nx,ny), x(nx,ndx), y(ny,ndy) INTEGER nx,ny,i,j,k,cmin,cmax,ndx,ndy LOGICAL symm DOUBLE PRECISION devx, devy, ampx, ampy, sampy DOUBLE PRECISION devd, ampd, h if (cmax.EQ.-1) then cmax = ny end if ! print *,nx,ny,ndx,ndy,cmin,cmax,symm if(symm) then do j=cmin+1,cmax ampy = 0.0D0 do k=1,ndx devy = y(j,k) ampy = ampy + devy*devy end do sampy = ampy**h C(j,j)=sampy do i=1,j-1 ampx = 0.0D0 ampd = 0.0D0 do k=1,ndx devx = x(i,k) ampx = ampx + devx*devx devd = x(i,k)-y(j,k) ampd = ampd + devd*devd enddo C(i,j) = 0.5D0*(sampy + ampx**h - ampd**h) enddo enddo else do j=cmin+1,cmax ampy = 0.0D0 do k=1,ndx devy = y(j,k) ampy = ampy + devy*devy end do sampy = ampy**h do i=1,nx ampx = 0.0D0 ampd = 0.0D0 do k=1,ndx devx = x(i,k) ampx = ampx + devx*devx devd = x(i,k)-y(j,k) ampd = ampd + devd*devd enddo C(i,j) = 0.5D0*(sampy + ampx**h - ampd**h) enddo enddo endif RETURN END SUBROUTINE pow_exp(C,pow,nx,ny,cmin,cmax,symm) cf2py intent(inplace) C cf2py intent(hide) nx,ny cf2py logical intent(in), optional:: symm=0 cf2py integer intent(in), optional :: cmin=0 cf2py integer intent(in), optional :: cmax=-1 cf2py threadsafe INTEGER nx,ny,i,j,cmin,cmax DOUBLE PRECISION C(nx,ny) DOUBLE PRECISION pow LOGICAL symm if (cmax.EQ.-1) then cmax = ny end if if(symm) then do j=cmin+1,cmax C(j,j)=1.0D0 do i=1,j-1 C(i,j) = dexp(-dabs(C(i,j))**pow) ! C(j,i) = C(i,j) enddo enddo else do j=cmin+1,cmax do i=1,nx C(i,j) = dexp(-dabs(C(i,j))**pow) enddo enddo endif return END SUBROUTINE sphere(C,nx,ny,cmin,cmax,symm) cf2py intent(inplace) C cf2py intent(hide) nx,ny cf2py logical intent(in), optional:: symm=0 cf2py integer intent(in), optional :: cmin=0 cf2py integer intent(in), optional :: cmax=-1 cf2py threadsafe INTEGER nx,ny,i,j,cmin,cmax DOUBLE PRECISION C(nx,ny), t LOGICAL symm if (cmax.EQ.-1) then cmax = ny end if if(symm) then do j=cmin+1,cmax C(j,j)=1.0D0 do i=1,j-1 t = C(i,j) if (t .LT. 1.0D0) then C(i,j) = 1.0D0-1.5D0*t+0.5D0*t**3 else C(i,j) = 0.0D0 endif ! C(j,i) = C(i,j) enddo enddo else do j=cmin+1,cmax do i=1,nx t = C(i,j) if (t .LT. 1.0D0) then C(i,j) = 1.0D0-1.5D0*t+0.5D0*t**3 else C(i,j) = 0.0D0 endif enddo enddo endif return END SUBROUTINE quadratic(C,phi,nx,ny,cmin,cmax,symm) cf2py intent(inplace) C cf2py double precision intent(in),check(phi>0)::phi cf2py intent(hide) nx,ny cf2py logical intent(in), optional:: symm=0 cf2py integer intent(in), optional :: cmin=0 cf2py integer intent(in), optional :: cmax=-1 cf2py threadsafe INTEGER nx,ny,i,j,cmin,cmax DOUBLE PRECISION C(nx,ny) DOUBLE PRECISION phi, t LOGICAL symm if (cmax.EQ.-1) then cmax = ny end if if(symm) then do j=cmin+1,cmax C(j,j)=1.0D0 do i=1,j-2 t=C(i,j)**2 C(i,j) = 1.0D0-t/(1.0D0+phi*t) ! C(j,i) = C(i,j) enddo enddo else do j=cmin+1,cmax do i=1,nx t=C(i,j)**2 C(i,j) = 1.0D0-t/(1.0D0+phi*t) enddo enddo endif return END CS REAL FUNCTION GAMMA(X) DOUBLE PRECISION FUNCTION DGAMMA(X) C---------------------------------------------------------------------- C C This routine calculates the GAMMA function for a real argument X. C Computation is based on an algorithm outlined in reference 1. C The program uses rational functions that approximate the GAMMA C function to at least 20 significant decimal digits. Coefficients C for the approximation over the interval (1,2) are unpublished. C Those for the approximation for X .GE. 12 are from reference 2. C The accuracy achieved depends on the arithmetic system, the C compiler, the intrinsic functions, and proper selection of the C machine-dependent constants. C C C******************************************************************* C******************************************************************* C C Explanation of machine-dependent constants C C beta - radix for the floating-point representation C maxexp - the smallest positive power of beta that overflows C XBIG - the largest argument for which GAMMA(X) is representable C in the machine, i.e., the solution to the equation C GAMMA(XBIG) = beta**maxexp C XINF - the largest machine representable floating-point number; C approximately beta**maxexp C EPS - the smallest positive floating-point number such that C 1.0+EPS .GT. 1.0 C XMININ - the smallest positive floating-point number such that C 1/XMININ is machine representable C C Approximate values for some important machines are: C C beta maxexp XBIG C C CRAY-1 (S.P.) 2 8191 966.961 C Cyber 180/855 C under NOS (S.P.) 2 1070 177.803 C IEEE (IBM/XT, C SUN, etc.) (S.P.) 2 128 35.040 C IEEE (IBM/XT, C SUN, etc.) (D.P.) 2 1024 171.624 C IBM 3033 (D.P.) 16 63 57.574 C VAX D-Format (D.P.) 2 127 34.844 C VAX G-Format (D.P.) 2 1023 171.489 C C XINF EPS XMININ C C CRAY-1 (S.P.) 5.45E+2465 7.11E-15 1.84E-2466 C Cyber 180/855 C under NOS (S.P.) 1.26E+322 3.55E-15 3.14E-294 C IEEE (IBM/XT, C SUN, etc.) (S.P.) 3.40E+38 1.19E-7 1.18E-38 C IEEE (IBM/XT, C SUN, etc.) (D.P.) 1.79D+308 2.22D-16 2.23D-308 C IBM 3033 (D.P.) 7.23D+75 2.22D-16 1.39D-76 C VAX D-Format (D.P.) 1.70D+38 1.39D-17 5.88D-39 C VAX G-Format (D.P.) 8.98D+307 1.11D-16 1.12D-308 C C******************************************************************* C******************************************************************* C C Error returns C C The program returns the value XINF for singularities or C when overflow would occur. The computation is believed C to be free of underflow and overflow. C C C Intrinsic functions required are: C C INT, DBLE, EXP, LOG, REAL, SIN C C C References: "An Overview of Software Development for Special C Functions", W. J. Cody, Lecture Notes in Mathematics, C 506, Numerical Analysis Dundee, 1975, G. A. Watson C (ed.), Springer Verlag, Berlin, 1976. C C Computer Approximations, Hart, Et. Al., Wiley and C sons, New York, 1968. C C Latest modification: October 12, 1989 C C Authors: W. J. Cody and L. Stoltz C Applied Mathematics Division C Argonne National Laboratory C Argonne, IL 60439 C C---------------------------------------------------------------------- INTEGER I,N LOGICAL PARITY CS REAL DOUBLE PRECISION 1 C,CONV,EPS,FACT,HALF,ONE,P,PI,Q,RES,SQRTPI,SUM,TWELVE, 2 TWO,X,XBIG,XDEN,XINF,XMININ,XNUM,Y,Y1,YSQ,Z,ZERO DIMENSION C(7),P(8),Q(8) C---------------------------------------------------------------------- C Mathematical constants C---------------------------------------------------------------------- CS DATA ONE,HALF,TWELVE,TWO,ZERO/1.0E0,0.5E0,12.0E0,2.0E0,0.0E0/, CS 1 SQRTPI/0.9189385332046727417803297E0/, CS 2 PI/3.1415926535897932384626434E0/ DATA ONE,HALF,TWELVE,TWO,ZERO/1.0D0,0.5D0,12.0D0,2.0D0,0.0D0/, 1 SQRTPI/0.9189385332046727417803297D0/, 2 PI/3.1415926535897932384626434D0/ C---------------------------------------------------------------------- C Machine dependent parameters C---------------------------------------------------------------------- CS DATA XBIG,XMININ,EPS/35.040E0,1.18E-38,1.19E-7/, CS 1 XINF/3.4E38/ DATA XBIG,XMININ,EPS/171.624D0,2.23D-308,2.22D-16/, 1 XINF/1.79D308/ C---------------------------------------------------------------------- C Numerator and denominator coefficients for rational minimax C approximation over (1,2). C---------------------------------------------------------------------- CS DATA P/-1.71618513886549492533811E+0,2.47656508055759199108314E+1, CS 1 -3.79804256470945635097577E+2,6.29331155312818442661052E+2, CS 2 8.66966202790413211295064E+2,-3.14512729688483675254357E+4, CS 3 -3.61444134186911729807069E+4,6.64561438202405440627855E+4/ CS DATA Q/-3.08402300119738975254353E+1,3.15350626979604161529144E+2, CS 1 -1.01515636749021914166146E+3,-3.10777167157231109440444E+3, CS 2 2.25381184209801510330112E+4,4.75584627752788110767815E+3, CS 3 -1.34659959864969306392456E+5,-1.15132259675553483497211E+5/ DATA P/-1.71618513886549492533811D+0,2.47656508055759199108314D+1, 1 -3.79804256470945635097577D+2,6.29331155312818442661052D+2, 2 8.66966202790413211295064D+2,-3.14512729688483675254357D+4, 3 -3.61444134186911729807069D+4,6.64561438202405440627855D+4/ DATA Q/-3.08402300119738975254353D+1,3.15350626979604161529144D+2, 1 -1.01515636749021914166146D+3,-3.10777167157231109440444D+3, 2 2.25381184209801510330112D+4,4.75584627752788110767815D+3, 3 -1.34659959864969306392456D+5,-1.15132259675553483497211D+5/ C---------------------------------------------------------------------- C Coefficients for minimax approximation over (12, INF). C---------------------------------------------------------------------- CS DATA C/-1.910444077728E-03,8.4171387781295E-04, CS 1 -5.952379913043012E-04,7.93650793500350248E-04, CS 2 -2.777777777777681622553E-03,8.333333333333333331554247E-02, CS 3 5.7083835261E-03/ DATA C/-1.910444077728D-03,8.4171387781295D-04, 1 -5.952379913043012D-04,7.93650793500350248D-04, 2 -2.777777777777681622553D-03,8.333333333333333331554247D-02, 3 5.7083835261D-03/ C---------------------------------------------------------------------- C Statement functions for conversion between integer and float C---------------------------------------------------------------------- CS CONV(I) = REAL(I) CONV(I) = DBLE(I) PARITY = .FALSE. FACT = ONE N = 0 Y = X IF (Y .LE. ZERO) THEN C---------------------------------------------------------------------- C Argument is negative C---------------------------------------------------------------------- Y = -X Y1 = AINT(Y) RES = Y - Y1 IF (RES .NE. ZERO) THEN IF (Y1 .NE. AINT(Y1*HALF)*TWO) PARITY = .TRUE. FACT = -PI / SIN(PI*RES) Y = Y + ONE ELSE RES = XINF GO TO 900 END IF END IF C---------------------------------------------------------------------- C Argument is positive C---------------------------------------------------------------------- IF (Y .LT. EPS) THEN C---------------------------------------------------------------------- C Argument .LT. EPS C---------------------------------------------------------------------- IF (Y .GE. XMININ) THEN RES = ONE / Y ELSE RES = XINF GO TO 900 END IF ELSE IF (Y .LT. TWELVE) THEN Y1 = Y IF (Y .LT. ONE) THEN C---------------------------------------------------------------------- C 0.0 .LT. argument .LT. 1.0 C---------------------------------------------------------------------- Z = Y Y = Y + ONE ELSE C---------------------------------------------------------------------- C 1.0 .LT. argument .LT. 12.0, reduce argument if necessary C---------------------------------------------------------------------- N = INT(Y) - 1 Y = Y - CONV(N) Z = Y - ONE END IF C---------------------------------------------------------------------- C Evaluate approximation for 1.0 .LT. argument .LT. 2.0 C---------------------------------------------------------------------- XNUM = ZERO XDEN = ONE DO 260 I = 1, 8 XNUM = (XNUM + P(I)) * Z XDEN = XDEN * Z + Q(I) 260 CONTINUE RES = XNUM / XDEN + ONE IF (Y1 .LT. Y) THEN C---------------------------------------------------------------------- C Adjust result for case 0.0 .LT. argument .LT. 1.0 C---------------------------------------------------------------------- RES = RES / Y1 ELSE IF (Y1 .GT. Y) THEN C---------------------------------------------------------------------- C Adjust result for case 2.0 .LT. argument .LT. 12.0 C---------------------------------------------------------------------- DO 290 I = 1, N RES = RES * Y Y = Y + ONE 290 CONTINUE END IF ELSE C---------------------------------------------------------------------- C Evaluate for argument .GE. 12.0, C---------------------------------------------------------------------- IF (Y .LE. XBIG) THEN YSQ = Y * Y SUM = C(7) DO 350 I = 1, 6 SUM = SUM / YSQ + C(I) 350 CONTINUE SUM = SUM/Y - Y + SQRTPI SUM = SUM + (Y-HALF)*LOG(Y) RES = EXP(SUM) ELSE RES = XINF GO TO 900 END IF END IF C---------------------------------------------------------------------- C Final adjustments and return C---------------------------------------------------------------------- IF (PARITY) RES = -RES IF (FACT .NE. ONE) RES = FACT / RES CS900 GAMMA = RES 900 DGAMMA = RES RETURN C ---------- Last line of GAMMA ---------- END SUBROUTINE RKBESL(X,ALPHA,NB,IZE,BK,NCALC) cf2py intent (out) bk C------------------------------------------------------------------- C C This FORTRAN 77 routine calculates modified Bessel functions C of the second kind, K SUB(N+ALPHA) (X), for non-negative C argument X, and non-negative order N+ALPHA, with or without C exponential scaling. C C Explanation of variables in the calling sequence C C Description of output values .. C C X - Working precision non-negative real argument for which C K's or exponentially scaled K's (K*EXP(X)) C are to be calculated. If K's are to be calculated, C X must not be greater than XMAX (see below). C ALPHA - Working precision fractional part of order for which C K's or exponentially scaled K's (K*EXP(X)) are C to be calculated. 0 .LE. ALPHA .LT. 1.0. C NB - Integer number of functions to be calculated, NB .GT. 0. C The first function calculated is of order ALPHA, and the C last is of order (NB - 1 + ALPHA). C IZE - Integer type. IZE = 1 if unscaled K's are to be calculated, C and 2 if exponentially scaled K's are to be calculated. C BK - Working precision output vector of length NB. If the C routine terminates normally (NCALC=NB), the vector BK C contains the functions K(ALPHA,X), ... , K(NB-1+ALPHA,X), C or the corresponding exponentially scaled functions. C If (0 .LT. NCALC .LT. NB), BK(I) contains correct function C values for I .LE. NCALC, and contains the ratios C K(ALPHA+I-1,X)/K(ALPHA+I-2,X) for the rest of the array. C NCALC - Integer output variable indicating possible errors. C Before using the vector BK, the user should check that C NCALC=NB, i.e., all orders have been calculated to C the desired accuracy. See error returns below. C C C******************************************************************* C******************************************************************* C C Explanation of machine-dependent constants C C beta = Radix for the floating-point system C minexp = Smallest representable power of beta C maxexp = Smallest power of beta that overflows C EPS = The smallest positive floating-point number such that C 1.0+EPS .GT. 1.0 C XMAX = Upper limit on the magnitude of X when IZE=1; Solution C to equation: C W(X) * (1-1/8X+9/128X**2) = beta**minexp C where W(X) = EXP(-X)*SQRT(PI/2X) C SQXMIN = Square root of beta**minexp C XINF = Largest positive machine number; approximately C beta**maxexp C XMIN = Smallest positive machine number; approximately C beta**minexp C C C Approximate values for some important machines are: C C beta minexp maxexp EPS C C CRAY-1 (S.P.) 2 -8193 8191 7.11E-15 C Cyber 180/185 C under NOS (S.P.) 2 -975 1070 3.55E-15 C IEEE (IBM/XT, C SUN, etc.) (S.P.) 2 -126 128 1.19E-7 C IEEE (IBM/XT, C SUN, etc.) (D.P.) 2 -1022 1024 2.22D-16 C IBM 3033 (D.P.) 16 -65 63 2.22D-16 C VAX (S.P.) 2 -128 127 5.96E-8 C VAX D-Format (D.P.) 2 -128 127 1.39D-17 C VAX G-Format (D.P.) 2 -1024 1023 1.11D-16 C C C SQXMIN XINF XMIN XMAX C C CRAY-1 (S.P.) 6.77E-1234 5.45E+2465 4.59E-2467 5674.858 C Cyber 180/855 C under NOS (S.P.) 1.77E-147 1.26E+322 3.14E-294 672.788 C IEEE (IBM/XT, C SUN, etc.) (S.P.) 1.08E-19 3.40E+38 1.18E-38 85.337 C IEEE (IBM/XT, C SUN, etc.) (D.P.) 1.49D-154 1.79D+308 2.23D-308 705.342 C IBM 3033 (D.P.) 7.35D-40 7.23D+75 5.40D-79 177.852 C VAX (S.P.) 5.42E-20 1.70E+38 2.94E-39 86.715 C VAX D-Format (D.P.) 5.42D-20 1.70D+38 2.94D-39 86.715 C VAX G-Format (D.P.) 7.46D-155 8.98D+307 5.57D-309 706.728 C C******************************************************************* C******************************************************************* C C Error returns C C In case of an error, NCALC .NE. NB, and not all K's are C calculated to the desired accuracy. C C NCALC .LT. -1: An argument is out of range. For example, C NB .LE. 0, IZE is not 1 or 2, or IZE=1 and ABS(X) .GE. C XMAX. In this case, the B-vector is not calculated, C and NCALC is set to MIN0(NB,0)-2 so that NCALC .NE. NB. C NCALC = -1: Either K(ALPHA,X) .GE. XINF or C K(ALPHA+NB-1,X)/K(ALPHA+NB-2,X) .GE. XINF. In this case, C the B-vector is not calculated. Note that again C NCALC .NE. NB. C C 0 .LT. NCALC .LT. NB: Not all requested function values could C be calculated accurately. BK(I) contains correct function C values for I .LE. NCALC, and contains the ratios C K(ALPHA+I-1,X)/K(ALPHA+I-2,X) for the rest of the array. C C C Intrinsic functions required are: C C ABS, AINT, EXP, INT, LOG, MAX, MIN, SINH, SQRT C C C Acknowledgement C C This program is based on a program written by J. B. Campbell C (2) that computes values of the Bessel functions K of real C argument and real order. Modifications include the addition C of non-scaled functions, parameterization of machine C dependencies, and the use of more accurate approximations C for SINH and SIN. C C References: "On Temme's Algorithm for the Modified Bessel C Functions of the Third Kind," Campbell, J. B., C TOMS 6(4), Dec. 1980, pp. 581-586. C C "A FORTRAN IV Subroutine for the Modified Bessel C Functions of the Third Kind of Real Order and Real C Argument," Campbell, J. B., Report NRC/ERB-925, C National Research Council, Canada. C C Latest modification: May 30, 1989 C C Modified by: W. J. Cody and L. Stoltz C Applied Mathematics Division C Argonne National Laboratory C Argonne, IL 60439 C C------------------------------------------------------------------- INTEGER I,IEND,ITEMP,IZE,J,K,M,MPLUS1,NB,NCALC CS REAL DOUBLE PRECISION 1 A,ALPHA,BLPHA,BK,BK1,BK2,C,D,DM,D1,D2,D3,ENU,EPS,ESTF,ESTM, 2 EX,FOUR,F0,F1,F2,HALF,ONE,P,P0,Q,Q0,R,RATIO,S,SQXMIN,T,TINYX, 3 TWO,TWONU,TWOX,T1,T2,WMINF,X,XINF,XMAX,XMIN,X2BY4,ZERO DIMENSION BK(1),P(8),Q(7),R(5),S(4),T(6),ESTM(6),ESTF(7) C--------------------------------------------------------------------- C Mathematical constants C A = LOG(2.D0) - Euler's constant C D = SQRT(2.D0/PI) C--------------------------------------------------------------------- CS DATA HALF,ONE,TWO,ZERO/0.5E0,1.0E0,2.0E0,0.0E0/ CS DATA FOUR,TINYX/4.0E0,1.0E-10/ CS DATA A/ 0.11593151565841244881E0/,D/0.797884560802865364E0/ DATA HALF,ONE,TWO,ZERO/0.5D0,1.0D0,2.0D0,0.0D0/ DATA FOUR,TINYX/4.0D0,1.0D-10/ DATA A/ 0.11593151565841244881D0/,D/0.797884560802865364D0/ C--------------------------------------------------------------------- C Machine dependent parameters C--------------------------------------------------------------------- CS DATA EPS/1.19E-7/,SQXMIN/1.08E-19/,XINF/3.40E+38/ CS DATA XMIN/1.18E-38/,XMAX/85.337E0/ DATA EPS/2.22D-16/,SQXMIN/1.49D-154/,XINF/1.79D+308/ DATA XMIN/2.23D-308/,XMAX/705.342D0/ C--------------------------------------------------------------------- C P, Q - Approximation for LOG(GAMMA(1+ALPHA))/ALPHA C + Euler's constant C Coefficients converted from hex to decimal and modified C by W. J. Cody, 2/26/82 C R, S - Approximation for (1-ALPHA*PI/SIN(ALPHA*PI))/(2.D0*ALPHA) C T - Approximation for SINH(Y)/Y C--------------------------------------------------------------------- CS DATA P/ 0.805629875690432845E00, 0.204045500205365151E02, CS 1 0.157705605106676174E03, 0.536671116469207504E03, CS 2 0.900382759291288778E03, 0.730923886650660393E03, CS 3 0.229299301509425145E03, 0.822467033424113231E00/ CS DATA Q/ 0.294601986247850434E02, 0.277577868510221208E03, CS 1 0.120670325591027438E04, 0.276291444159791519E04, CS 2 0.344374050506564618E04, 0.221063190113378647E04, CS 3 0.572267338359892221E03/ CS DATA R/-0.48672575865218401848E+0, 0.13079485869097804016E+2, CS 1 -0.10196490580880537526E+3, 0.34765409106507813131E+3, CS 2 0.34958981245219347820E-3/ CS DATA S/-0.25579105509976461286E+2, 0.21257260432226544008E+3, CS 1 -0.61069018684944109624E+3, 0.42269668805777760407E+3/ CS DATA T/ 0.16125990452916363814E-9, 0.25051878502858255354E-7, CS 1 0.27557319615147964774E-5, 0.19841269840928373686E-3, CS 2 0.83333333333334751799E-2, 0.16666666666666666446E+0/ CS DATA ESTM/5.20583E1, 5.7607E0, 2.7782E0, 1.44303E1, 1.853004E2, CS 1 9.3715E0/ CS DATA ESTF/4.18341E1, 7.1075E0, 6.4306E0, 4.25110E1, 1.35633E0, CS 1 8.45096E1, 2.0E1/ DATA P/ 0.805629875690432845D00, 0.204045500205365151D02, 1 0.157705605106676174D03, 0.536671116469207504D03, 2 0.900382759291288778D03, 0.730923886650660393D03, 3 0.229299301509425145D03, 0.822467033424113231D00/ DATA Q/ 0.294601986247850434D02, 0.277577868510221208D03, 1 0.120670325591027438D04, 0.276291444159791519D04, 2 0.344374050506564618D04, 0.221063190113378647D04, 3 0.572267338359892221D03/ DATA R/-0.48672575865218401848D+0, 0.13079485869097804016D+2, 1 -0.10196490580880537526D+3, 0.34765409106507813131D+3, 2 0.34958981245219347820D-3/ DATA S/-0.25579105509976461286D+2, 0.21257260432226544008D+3, 1 -0.61069018684944109624D+3, 0.42269668805777760407D+3/ DATA T/ 0.16125990452916363814D-9, 0.25051878502858255354D-7, 1 0.27557319615147964774D-5, 0.19841269840928373686D-3, 2 0.83333333333334751799D-2, 0.16666666666666666446D+0/ DATA ESTM/5.20583D1, 5.7607D0, 2.7782D0, 1.44303D1, 1.853004D2, 1 9.3715D0/ DATA ESTF/4.18341D1, 7.1075D0, 6.4306D0, 4.25110D1, 1.35633D0, 1 8.45096D1, 2.0D1/ C--------------------------------------------------------------------- EX = X ENU = ALPHA NCALC = MIN(NB,0)-2 IF ((NB .GT. 0) .AND. ((ENU .GE. ZERO) .AND. (ENU .LT. ONE)) 1 .AND. ((IZE .GE. 1) .AND. (IZE .LE. 2)) .AND. 2 ((IZE .NE. 1) .OR. (EX .LE. XMAX)) .AND. 3 (EX .GT. ZERO)) THEN K = 0 IF (ENU .LT. SQXMIN) ENU = ZERO IF (ENU .GT. HALF) THEN K = 1 ENU = ENU - ONE END IF TWONU = ENU+ENU IEND = NB+K-1 C = ENU*ENU D3 = -C IF (EX .LE. ONE) THEN C--------------------------------------------------------------------- C Calculation of P0 = GAMMA(1+ALPHA) * (2/X)**ALPHA C Q0 = GAMMA(1-ALPHA) * (X/2)**ALPHA C--------------------------------------------------------------------- D1 = ZERO D2 = P(1) T1 = ONE T2 = Q(1) DO 10 I = 2,7,2 D1 = C*D1+P(I) D2 = C*D2+P(I+1) T1 = C*T1+Q(I) T2 = C*T2+Q(I+1) 10 CONTINUE D1 = ENU*D1 T1 = ENU*T1 F1 = LOG(EX) F0 = A+ENU*(P(8)-ENU*(D1+D2)/(T1+T2))-F1 Q0 = EXP(-ENU*(A-ENU*(P(8)+ENU*(D1-D2)/(T1-T2))-F1)) F1 = ENU*F0 P0 = EXP(F1) C--------------------------------------------------------------------- C Calculation of F0 = C--------------------------------------------------------------------- D1 = R(5) T1 = ONE DO 20 I = 1,4 D1 = C*D1+R(I) T1 = C*T1+S(I) 20 CONTINUE IF (ABS(F1) .LE. HALF) THEN F1 = F1*F1 D2 = ZERO DO 30 I = 1,6 D2 = F1*D2+T(I) 30 CONTINUE D2 = F0+F0*F1*D2 ELSE D2 = SINH(F1)/ENU END IF F0 = D2-ENU*D1/(T1*P0) IF (EX .LE. TINYX) THEN C-------------------------------------------------------------------- C X.LE.1.0E-10 C Calculation of K(ALPHA,X) and X*K(ALPHA+1,X)/K(ALPHA,X) C-------------------------------------------------------------------- BK(1) = F0+EX*F0 IF (IZE .EQ. 1) BK(1) = BK(1)-EX*BK(1) RATIO = P0/F0 C = EX*XINF IF (K .NE. 0) THEN C-------------------------------------------------------------------- C Calculation of K(ALPHA,X) and X*K(ALPHA+1,X)/K(ALPHA,X), C ALPHA .GE. 1/2 C-------------------------------------------------------------------- NCALC = -1 IF (BK(1) .GE. C/RATIO) GO TO 500 BK(1) = RATIO*BK(1)/EX TWONU = TWONU+TWO RATIO = TWONU END IF NCALC = 1 IF (NB .EQ. 1) GO TO 500 C-------------------------------------------------------------------- C Calculate K(ALPHA+L,X)/K(ALPHA+L-1,X), L = 1, 2, ... , NB-1 C-------------------------------------------------------------------- NCALC = -1 DO 80 I = 2,NB IF (RATIO .GE. C) GO TO 500 BK(I) = RATIO/EX TWONU = TWONU+TWO RATIO = TWONU 80 CONTINUE NCALC = 1 GO TO 420 ELSE C-------------------------------------------------------------------- C 1.0E-10 .LT. X .LE. 1.0 C-------------------------------------------------------------------- C = ONE X2BY4 = EX*EX/FOUR P0 = HALF*P0 Q0 = HALF*Q0 D1 = -ONE D2 = ZERO BK1 = ZERO BK2 = ZERO F1 = F0 F2 = P0 100 D1 = D1+TWO D2 = D2+ONE D3 = D1+D3 C = X2BY4*C/D2 F0 = (D2*F0+P0+Q0)/D3 P0 = P0/(D2-ENU) Q0 = Q0/(D2+ENU) T1 = C*F0 T2 = C*(P0-D2*F0) BK1 = BK1+T1 BK2 = BK2+T2 IF ((ABS(T1/(F1+BK1)) .GT. EPS) .OR. 1 (ABS(T2/(F2+BK2)) .GT. EPS)) GO TO 100 BK1 = F1+BK1 BK2 = TWO*(F2+BK2)/EX IF (IZE .EQ. 2) THEN D1 = EXP(EX) BK1 = BK1*D1 BK2 = BK2*D1 END IF WMINF = ESTF(1)*EX+ESTF(2) END IF ELSE IF (EPS*EX .GT. ONE) THEN C-------------------------------------------------------------------- C X .GT. ONE/EPS C-------------------------------------------------------------------- NCALC = NB BK1 = ONE / (D*SQRT(EX)) DO 110 I = 1, NB BK(I) = BK1 110 CONTINUE GO TO 500 ELSE C-------------------------------------------------------------------- C X .GT. 1.0 C-------------------------------------------------------------------- TWOX = EX+EX BLPHA = ZERO RATIO = ZERO IF (EX .LE. FOUR) THEN C-------------------------------------------------------------------- C Calculation of K(ALPHA+1,X)/K(ALPHA,X), 1.0 .LE. X .LE. 4.0 C-------------------------------------------------------------------- D2 = AINT(ESTM(1)/EX+ESTM(2)) M = INT(D2) D1 = D2+D2 D2 = D2-HALF D2 = D2*D2 DO 120 I = 2,M D1 = D1-TWO D2 = D2-D1 RATIO = (D3+D2)/(TWOX+D1-RATIO) 120 CONTINUE C-------------------------------------------------------------------- C Calculation of I(|ALPHA|,X) and I(|ALPHA|+1,X) by backward C recurrence and K(ALPHA,X) from the wronskian C-------------------------------------------------------------------- D2 = AINT(ESTM(3)*EX+ESTM(4)) M = INT(D2) C = ABS(ENU) D3 = C+C D1 = D3-ONE F1 = XMIN F0 = (TWO*(C+D2)/EX+HALF*EX/(C+D2+ONE))*XMIN DO 130 I = 3,M D2 = D2-ONE F2 = (D3+D2+D2)*F0 BLPHA = (ONE+D1/D2)*(F2+BLPHA) F2 = F2/EX+F1 F1 = F0 F0 = F2 130 CONTINUE F1 = (D3+TWO)*F0/EX+F1 D1 = ZERO T1 = ONE DO 140 I = 1,7 D1 = C*D1+P(I) T1 = C*T1+Q(I) 140 CONTINUE P0 = EXP(C*(A+C*(P(8)-C*D1/T1)-LOG(EX)))/EX F2 = (C+HALF-RATIO)*F1/EX BK1 = P0+(D3*F0-F2+F0+BLPHA)/(F2+F1+F0)*P0 IF (IZE .EQ. 1) BK1 = BK1*EXP(-EX) WMINF = ESTF(3)*EX+ESTF(4) ELSE C-------------------------------------------------------------------- C Calculation of K(ALPHA,X) and K(ALPHA+1,X)/K(ALPHA,X), by backward C recurrence, for X .GT. 4.0 C-------------------------------------------------------------------- DM = AINT(ESTM(5)/EX+ESTM(6)) M = INT(DM) D2 = DM-HALF D2 = D2*D2 D1 = DM+DM DO 160 I = 2,M DM = DM-ONE D1 = D1-TWO D2 = D2-D1 RATIO = (D3+D2)/(TWOX+D1-RATIO) BLPHA = (RATIO+RATIO*BLPHA)/DM 160 CONTINUE BK1 = ONE/((D+D*BLPHA)*SQRT(EX)) IF (IZE .EQ. 1) BK1 = BK1*EXP(-EX) WMINF = ESTF(5)*(EX-ABS(EX-ESTF(7)))+ESTF(6) END IF C-------------------------------------------------------------------- C Calculation of K(ALPHA+1,X) from K(ALPHA,X) and C K(ALPHA+1,X)/K(ALPHA,X) C-------------------------------------------------------------------- BK2 = BK1+BK1*(ENU+HALF-RATIO)/EX END IF C-------------------------------------------------------------------- C Calculation of 'NCALC', K(ALPHA+I,X), I = 0, 1, ... , NCALC-1, C K(ALPHA+I,X)/K(ALPHA+I-1,X), I = NCALC, NCALC+1, ... , NB-1 C-------------------------------------------------------------------- NCALC = NB BK(1) = BK1 IF (IEND .EQ. 0) GO TO 500 J = 2-K IF (J .GT. 0) BK(J) = BK2 IF (IEND .EQ. 1) GO TO 500 M = MIN(INT(WMINF-ENU),IEND) DO 190 I = 2,M T1 = BK1 BK1 = BK2 TWONU = TWONU+TWO IF (EX .LT. ONE) THEN IF (BK1 .GE. (XINF/TWONU)*EX) GO TO 195 GO TO 187 ELSE IF (BK1/EX .GE. XINF/TWONU) GO TO 195 END IF 187 CONTINUE BK2 = TWONU/EX*BK1+T1 ITEMP = I J = J+1 IF (J .GT. 0) BK(J) = BK2 190 CONTINUE 195 M = ITEMP IF (M .EQ. IEND) GO TO 500 RATIO = BK2/BK1 MPLUS1 = M+1 NCALC = -1 DO 410 I = MPLUS1,IEND TWONU = TWONU+TWO RATIO = TWONU/EX+ONE/RATIO J = J+1 IF (J .GT. 1) THEN BK(J) = RATIO ELSE IF (BK2 .GE. XINF/RATIO) GO TO 500 BK2 = RATIO*BK2 END IF 410 CONTINUE NCALC = MAX(MPLUS1-K,1) IF (NCALC .EQ. 1) BK(1) = BK2 IF (NB .EQ. 1) GO TO 500 420 J = NCALC+1 DO 430 I = J,NB IF (BK(NCALC) .GE. XINF/BK(I)) GO TO 500 BK(I) = BK(NCALC)*BK(I) NCALC = I 430 CONTINUE END IF 500 RETURN C---------- Last line of RKBESL ---------- END pymc-2.2+ds/pymc/gp/cov_funs/nsmatern.py000066400000000000000000000036331204033704200203300ustar00rootroot00000000000000from . import isotropic_cov_funs import numpy as np __all__ = ['nsmatern','nsmatern_diag','default_h'] def default_h(x): return np.ones(x.shape[:-1]) def nsmatern(C,x,y,diff_degree,amp=1.,scale=1.,h=default_h,cmin=0,cmax=-1,symm=False): """ A covariance function. Remember, broadcasting for covariance functions works differently than for numpy universal functions. C(x,y) returns a matrix, and C(x) returns a vector. :Parameters: - `amp`: The pointwise standard deviation of f. - `scale`: The factor by which to scale the distance between points. Large value implies long-range correlation. - `diff_degree`: A function that takes arrays and returns the degree of differentiability at each location. - `h`: A function that takes arrays and returns the relative amplitude at each location. - `x and y` are arrays of points in Euclidean coordinates formatted as follows: [[x_{0,0} ... x_{0,ndim}], [x_{1,0} ... x_{1,ndim}], ... [x_{N,0} ... x_{N,ndim}]] - `symm` indicates whether x and y are references to the same array. - `cmin' and `cmax' indicate which columns to compute. These are used for multithreaded evaluation. :Reference: Pintore and Holmes, 2010, "Spatially adaptive non-stationary covariance functions via spatially adaptive spectra". Journal of the American Statistical Association. Forthcoming. """ ddx, ddy = diff_degree(x), diff_degree(y) hx, hy = h(x), h(y) # for rkbesl nmax = np.floor(max(np.max(ddx), np.max(ddy))) # Compute covariance for this bit isotropic_cov_funs.nsmatrn(C,ddx,ddy,hx,hy,nmax,cmin,cmax,symm=symm) return C def nsmatern_diag(x,diff_degree, amp=1., scale=1.,h=default_h): return (h(x)*amp)**2 pymc-2.2+ds/pymc/gp/cov_funs/wrapped_distances.py000066400000000000000000000101311204033704200221670ustar00rootroot00000000000000import numpy as np import imp import pymc mod_search_path = [pymc.__path__[0]+'/gp/cov_funs'] imp.load_module('distances', *imp.find_module('distances',mod_search_path)) from .distances import euclidean, aniso_geo_rad, paniso_geo_rad from .distances import geographic as geo_rad __all__ = ['euclidean', 'geo_rad', 'geo_deg', 'aniso_geo_rad', 'aniso_geo_deg', 'partition_aniso_geo_rad', 'partition_aniso_geo_deg'] euclidean.__name__ = 'euclidean' euclidean.__doc__ = """ euclidean(D,x,y,cmin=0,cmax=y.shape[0],symm=False) :Arguments: - `x and y` are arrays of points in Euclidean coordinates formatted as follows: [[x_{0,0} ... x_{0,ndim}], [x_{1,0} ... x_{1,ndim}], ... [x_{N,0} ... x_{N,ndim}]] - `symm` indicates whether x and y are references to the same array. - `cmin' and `cmax' indicate which columns to compute. These are used for multithreaded evaluation. Return value is a matrix D, where D[i,j] gives the Euclidean distance between the point x[i,:] and y[j,:]. """ geo_rad.__name__ = 'geo_rad' geo_rad.__doc__ = """ geo_rad(D,x,y,cmin=0,cmax=y.shape[0],symm=False) :Arguments: - `x and y` are arrays of points in geographic coordinates formatted as follows: [[lon_0, lat_0], [lon_1, lat_1], ... [lon_N, lat_N]] Latitudes and longitudes should be in radians. - `cmin' and `cmax' indicate which columns to compute. These are used for multithreaded evaluation. - `symm` indicates whether x and y are references to the same array. Return value is a matrix D, where D[i,j] gives the great-circle distance between the point x[i,:] and y[j,:] on a sphere of unit radius. """ def geo_deg(D,x,y,cmin=0,cmax=-1,symm=False): geo_rad(D,x*np.pi/180., y*np.pi/180., cmin,cmax,symm) D *= 180./np.pi geo_deg.__doc__ = geo_rad.__doc__.replace('radian', 'degree').replace('rad','deg') aniso_geo_rad.extra_parameters = {'ecc': 'Eccentricity of level sets of distance', 'inc': 'Angle of inclination, in radians'} aniso_geo_rad.__name__ = 'aniso_geo_rad' aniso_geo_rad.__doc__ = """ aniso_geo_rad(D,x,y,inc,ecc,cmin=0,cmax=y.shape[0],symm=False) :Arguments: - `x and y` are arrays of points in geographic coordinates formatted as follows: [[lon_0, lat_0], [lon_1, lat_1], ... [lon_N, lat_N]] Latitudes and longitudes should be in radians. - `inc` gives the eccentricity of the elliptical level sets of distance. - `ecc` gives the angle of inclination of the elliptical level sets of distance, in radians. - `cmin' and `cmax' indicate which columns to compute. These are used for multithreaded evaluation. - `symm` indicates whether x and y are references to the same array. Return value is a matrix D, where D[i,j] gives the great-circle distance between the point x[i,:] and y[j,:] on a sphere of unit radius. """ def aniso_geo_deg(D,x,y,inc,ecc,cmin=0,cmax=-1,symm=False): aniso_geo_rad(D,x*np.pi/180., y*np.pi/180., inc*np.pi/180., ecc, cmin, cmax, symm) D*=180./np.pi aniso_geo_deg.__doc__ = geo_deg.__doc__.replace('radian', 'degree').replace('rad','deg') aniso_geo_deg.extra_parameters = {'ecc': 'Eccentricity of level sets of distance', 'inc': 'Angle of inclination, in degrees'} def partition_aniso_geo_rad(D,x,y,ctrs,scals,cmin=0,cmax=-1,symm=False): paniso_geo_rad(D,x,y,ctrs,scals,cmin,cmax,symm) partition_aniso_geo_rad.extra_parameters = {'ctrs': 'Centers of angular bins, in radians','scals': 'Scales associated with each angular bin'} partition_aniso_geo_rad.__doc__ = "" def partition_aniso_geo_deg(D,x,y,ctrs,scals,cmin=0,cmax=-1,symm=False): paniso_geo_rad(D,x*np.pi/180., y*np.pi/180., ctrs*np.pi/180., scals, cmin,cmax,symm) D*=180./np.pi partition_aniso_geo_deg.extra_parameters = {'ctrs': 'Centers of angular bins, in radians','scals': 'Scales associated with each angular bin'} partition_aniso_geo_deg.__doc__ = "" pymc-2.2+ds/pymc/gp/epydoc.conf000066400000000000000000000057411204033704200164410ustar00rootroot00000000000000[epydoc] # Epydoc section marker (required by ConfigParser) # modules # The list of objects to document. Objects can be named using # dotted names, module filenames, or package directory names. # Alases for this option include "objects" and "values". modules: Covariance.py, Mean.py, Realization.py, GaussianProcess.py, GPutils.py # output # The type of output that should be generated. Should be one # of: html, text, latex, dvi, ps, pdf. output: latex # target # The path to the output directory. May be relative or absolute. target: Docs # docformat # The default markup language for docstrings, for modules that do # not define __docformat__. Defaults to epytext. docformat: reStructuredText # css # The CSS stylesheet for HTML output. Can be the name of a builtin # stylesheet, or the name of a file. css: white # name # The documented project's name. name: PyMC2 # url # The documented project's URL. url: http://code.google.com/p/pymc/ # link # HTML code for the project link in the navigation bar. If left # unspecified, the project link will be generated based on the # project's name and URL. # link: My Cool Project # top # The "top" page for the documentation. Can be a URL, the name # of a module or class, or one of the special names "trees.html", # "indices.html", or "help.html" #top: os.path # help # An alternative help file. The named file should contain the # body of an HTML file; navigation bars will be added to it. #help: my_helpfile.html # frames # Whether or not to include a frames-based table of contents. frames: yes # private # Whether or not to inclue private variables. (Even if included, # private variables will be hidden by default.) #private: yes # imports # Whether or not to list each module's imports. imports: no # verbosity # An integer indicating how verbose epydoc should be. The default # value is 0; negative values will supress warnings and errors; # positive values will give more verbose output. verbosity: 0 # parse # Whether or not parsing should be used to examine objects. parse: yes # introspect # Whether or not introspection should be used to examine objects. introspect: no # graph # The list of graph types that should be automatically included # in the output. Graphs are generated using the Graphviz "dot" # executable. Graph types include: "classtree", "callgraph", # "umlclass". Use "all" to include all graph types #graph: all # dotpath # The path to the Graphviz "dot" executable, used to generate # graphs. dotpath: /sw/bin/dot # sourcecode # Whether or not to include syntax highlighted source code in # the output (HTML only). sourcecode: yes # pstat # The name of one or more pstat files (generated by the profile # or hotshot module). These are used to generate call graphs. #pstat: profile.out # separate-classes # Whether each class should be listed in its own section when # generating LaTeX or PDF output. separate-classes: no pymc-2.2+ds/pymc/gp/gp_submodel.py000066400000000000000000000210211204033704200171460ustar00rootroot00000000000000# Copyright (c) Anand Patil, 2007 __docformat__ = 'reStructuredText' __all__ = ['GaussianProcess','GPEvaluation','GPSubmodel'] import pymc as pm import copy import numpy as np from .Realization import Realization __all__ = ['GaussianProcess', 'GPEvaluation', 'GPSubmodel'] def gp_logp(x, M, C, mesh, f_eval, M_obs, C_obs): raise TypeError('GP objects have no logp function') def gp_rand(M, C, mesh, f_eval, M_obs, C_obs, size=None): # M and C are input pre-observed, so no need to out = pm.gp.Realization(M_obs, C_obs) out.x_sofar = mesh out.f_sofar = f_eval out.M = M out.C = C return out class GaussianProcess(pm.Stochastic): """ G=GaussianProcess(name, submodel, **kwds) A stochastic variable valued as a Gaussian process realization. :Arguments: - `name`: The name of the variable. - `submodel`: The Gaussian process submodel to which the variable belongs. - `relative_precision`: See documentation. :SeeAlso: GPSubmodel, Realization, GPEvaluation """ def __init__(self,name,submodel,trace=True,value=None,rseed=False, observed=False,cache_depth=2,plot=None,verbose=-1,isdata=None): self.submodel = submodel pm.Stochastic.__init__(self,gp_logp,GaussianProcess.__doc__,name, {'M':submodel.M, 'C':submodel.C,'mesh':submodel.mesh, 'f_eval':submodel.f_eval, 'M_obs':submodel.M_obs, 'C_obs':submodel.C_obs}, gp_rand,trace,value,np.dtype('object'),rseed,observed,cache_depth,plot,verbose,isdata,False) self.rand() def gen_lazy_function(self): pass def get_logp(self): raise TypeError('Gaussian process %s has no logp.'%self.__name__) def set_logp(self, new_logp): raise TypeError('Gaussian process %s has no logp.'%self.__name__) def set_value(self, new_value): # If this is a new value pulled off the trace, save it the trouble of observing if np.all(new_value.x_sofar==pm.utils.value(self.parents['mesh'])): if new_value.need_init_obs: new_value.M_internal = copy.copy(pm.utils.value(self.parents['M_obs'])) new_value.C_internal = copy.copy(pm.utils.value(self.parents['C_obs'])) new_value.need_init_obs = False pm.Stochastic.set_value(self, new_value) logp = property(fget = get_logp, fset = set_logp) # for attr in ['neg','abs','invert'] + ['add', 'mul', 'sub'] + ['iadd','isub','imul','idiv','itruediv','ifloordiv','imod','ipow','ilshift','irshift','iand','ixor','ior','unicode']: # GaussianProcess.__delattr__('__%s__'%attr) class GPEvaluation(pm.MvNormalChol): pass class GPSubmodel(pm.ObjectContainer): """ G=GaussianProcess(name, M, C, mesh[, init_vals, obs_on_mesh, tally_all]) A Gaussian process submodel, which is a container for GaussianProcess and GPEvaluation objects. :Arguments: - `name`: A prefix for the names of all the variables. - `M`, `C`: The mean and covariance serving as parents of the submodel. - `mesh`: See documentation. - `init_vals`: The initial value of self.f_eval - `obs_on_mesh`: Whether self.f_eval's value is observed. - `tally_all`: Whether all variables should be tallied, or just f and f_eval. :Attributes: - `f`: A GaussianProcess object, which is valued as a GP realization with prior mean self.M and prior covariance self.C. - `f_eval`: The evaluation of self.f on self.mesh. This is a multivariate normal variable with a logp attribute. - `mesh`: The mesh that was input, wrapped in a deterministic. - `C_eval`: The evaluation of self.C on self.mesh. - `S_eval`: The lower-triangular Cholesky factor of C_eval. - `M_obs`, `C_obs`: Versions of self.M and self.C, observed on self.mesh with value self.f_eval.value. - `fr_check`: A potential that enforces the constraint that self.C_eval must be full-rank. :SeeAlso: GaussianProcess, Realization, GPEvaluation """ def __init__(self, name, M, C, mesh, init_vals=None, obs_on_mesh=False, tally_all=False, **kwds): if isinstance(mesh, pm.Variable): mesh = pm.Lambda('%s_mesh'%name, lambda mesh=mesh: pm.gp.regularize_array(mesh), trace=False) else: mesh = pm.gp.regularize_array(mesh) self.name = name self.mesh = mesh self.M = M self.C = C if len(mesh)==0: self.M_obs = M self.C_obs = C self.f_eval = None else: @pm.deterministic(trace=tally_all, name='%s_covariance_bits'%name) def covariance_bits(C=C,mesh=mesh): """ Both the realization 'f' and the on-mesh evaluation 'f_eval' need the Cholesky factor of the covariance evaluation. The Gibbs step method also needs the full covariance evaluation. The mean needs a certain other function of the full covariance evaluation. All these things can be got as byproducts of Covariance.observe. Keeping the observed covariance and using it as the parent of f means the computations only get done once. """ C_obs = copy.copy(C) try: U, C_eval, Uo_Cxo = C_obs.observe(mesh, np.zeros(mesh.shape[0]), output_type='s') return U.T.copy('F'), C_eval, C_obs, Uo_Cxo except np.linalg.LinAlgError: return None S_eval = pm.Lambda('%s_S_eval'%name, lambda cb=covariance_bits: cb[0] if cb else None, doc="The lower triangular Cholesky factor of %s.C_eval"%name, trace=tally_all or kwds.get('tally_S_eval',False)) C_eval = pm.Lambda('%s_C_eval'%name, lambda cb=covariance_bits: cb[1] if cb else None, doc="The evaluation %s.C(%s.mesh, %s.mesh)"%(name,name,name), trace=tally_all or kwds.get('tally_C_eval',False)) C_obs = pm.Lambda('%s_C_obs'%name, lambda cb=covariance_bits: cb[2] if cb else None, doc="%s.C, observed on %s.mesh"%(name,name), trace=tally_all or kwds.get('tally_C_obs',False)) Uo_Cxo = pm.Lambda('%s_Uo_Cxo'%name, lambda cb=covariance_bits: cb[3] if cb else None, doc="A byproduct of observation of %s.C that can be used by %s.M"%(name,name), trace=tally_all or kwds.get('tally_Uo_Cxo',False)) M_eval = pm.Lambda('%s_M_eval'%name, lambda M=M, mesh=mesh, Uo_Cxo=Uo_Cxo: M(mesh, Uo_Cxo=Uo_Cxo), trace=tally_all or kwds.get('tally_M_eval',False), doc="The evaluation %s.M(%s.mesh)"%(name,name)) @pm.potential(name = '%s_fr_check'%name) def fr_check(S_eval=S_eval): """ Forbids non-positive-definite C_evals. """ if S_eval is None: return -np.inf else: return 0 fr_check=fr_check f_eval = GPEvaluation('%s_f_eval'%name, mu=M_eval, sig=S_eval, value=init_vals, trace=kwds.get('tally_f_eval',True), observed=obs_on_mesh, doc="The evaluation %s.f(%s.mesh).\nThis is a multivariate normal variable with mean %s.M_eval and covariance %s.C_eval."%(name,name,name,name)) @pm.deterministic(trace=tally_all or kwds.get('tally_M_obs',False), name='%s_M_obs'%name) def M_obs(M=M, f_eval=f_eval, C_obs=C_obs, mesh=mesh): """ Creates an observed mean object to match %sC_obs. """%name M_obs = copy.copy(M) M_obs.observe(C_obs,mesh,f_eval) return M_obs self.M_obs = M_obs self.C_obs = C_obs self.f_eval = f_eval f = GaussianProcess('%s_f'%name, self, trace=tally_all or kwds.get('tally_f',True)) f.rand() l = locals() lk = filter(lambda k:isinstance(l[k],pm.Node), l.keys()) l = dict([(k,l[k]) for k in lk]) pm.ObjectContainer.__init__(self, l) def getobjects(self): names = ['M_eval','C_eval','S_eval','f_eval','f','fr_check'] return dict(zip(['%s_%s'%(self.name, name) for name in names], [getattr(self, name) for name in names])) pymc-2.2+ds/pymc/gp/gpplots.py000066400000000000000000000033101204033704200163370ustar00rootroot00000000000000import numpy as np from copy import copy from pymc import six __all__ = ['plot_GP_envelopes'] def plot_GP_envelopes(f, x, HPD = [.25, .5, .95], transx = None, transy = None): """ plot_GP_envelopes(f, x[, HPD, transx, transy]) Plots centered posterior probability envelopes for f, which is a GP instance, which is a function of one variable. :Arguments: - `f`: A GaussianProcess object. - `x`: The mesh on which to plot the envelopes. - `HPD`: A list of values between 0 and 1 giving the probability mass contained in each envelope. - `transx`: Any transformation of the x-axis. - `transy`: Any transformation of the y-axis. """ try: from pymc.Matplot import centered_envelope f_trace = f.trace() x = x.ravel() N = len(f_trace) func_stacks = np.zeros((N,len(x)),dtype=float) def identity(y): return y if transy is None: transy = identity if transx is None: transx = identity # Get evaluations for i in range(N): f = copy(f_trace[i]) func_stacks[i,:] = transy(f(transx(x))) # Plot envelopes HPD = np.sort(HPD) sorted_func_stack = np.sort(func_stacks,0) for m in HPD[::-1]: env = centered_envelope(sorted_func_stack, m) # from IPython.Debugger import Pdb # Pdb(color_scheme='LightBG').set_trace() env.display(x, alpha=1.-m*.5,new=False) centered_envelope(sorted_func_stack, 0.).display(x, alpha=1., new=False) except ImportError: six.print_('Plotter could not be imported; plotting disabled') pymc-2.2+ds/pymc/gp/incomplete_chol.f000066400000000000000000000344171204033704200176240ustar00rootroot00000000000000! Copyright (c) Anand Patil, 2007 subroutine ichol_continue *(n,nnew,sig,m,diag,piv,reltol,x,ndim,rowfun,rl,mold) cf2py intent(hide) nnew,n,ndim,rl cf2py intent(copy) x c c m is the total rank of the matrix cf2py intent(out) m c c sig will be updated in-place. c The first mold rows should be filled in on input. cf2py intent(inplace) sig c c The pivot vector is are of size nnew cf2py intent(in,out) piv integer nnew, nold, ptemp, ndim,rl,nnewmax, itot integer i, n, m, mold, piv(n), p(n), j double precision rowvec(n), diag(nnew), x(n,ndim) double precision sig(rl,n) c rowfun is the 'get-row' function. external rowfun DOUBLE PRECISION maxdiag, tol, dtemp DOUBLE PRECISION ZERO, ONE, RELTOL, NEGONE PARAMETER (zero=0.0D0) PARAMETER (one=1.0D0) PARAMETER (negone = -1.0D0) EXTERNAL DGEMV * DGEMV(TRANS,M,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY) * Purpose * ======= * * DGEMV performs one of the matrix-vector operations * * y := alpha*A*x + beta*y, or y := alpha*A'*x + beta*y, * * where alpha and beta are scalars, x and y are vectors and A is an * m by n matrix. * EXTERNAL DSWAP * DSWAP(N,DX,INCX,DY,INCY) EXTERNAL IDAMAX * IDAMAX(N,DX,INCX) nold = n - nnew nnewmax = rl-mold ! Make diagonal and index vectors do i=1,nnew itot = i + mold do j=1,mold diag(i)=diag(i)-sig(j,itot)*sig(j,itot) enddo enddo do i=1,n p(i) = piv(i) + 1 enddo maxdiag = diag(idamax(nnew,diag,1)) tol = maxdiag * reltol ! Main loop do i=1,nnewmax ! Find maximum remaining pivot l = idamax(nnew-i+1,diag(i),1)+i-1 maxdiag = diag(l) itot = i+mold ltot = l+mold ! Early return if there are no big pivots left if (maxdiag .LE. tol) then do j=1,n piv(j) = p(j)-1 enddo m = mold + i-1 return endif if (i .NE. l) then ! Swap p and diag's elements i and l ptemp = p(itot) p(itot) = p(ltot) p(ltot) = ptemp dtemp = diag(i) diag(i) = diag(l) diag(l) = dtemp ! Swap the i and lth columns of sig CALL DSWAP(itot,sig(1,itot),1,sig(1,ltot),1) ! Also swap ith and lth rows of x CALL DSWAP(ndim,x(itot,1),n,x(ltot,1),n) ! do j=1,ndim ! tmp = x(itot,j) ! x(itot,j) = x(ltot,j) ! x(ltot,j) = tmp ! enddo endif ! Write diagonal element sig(itot,itot) = dsqrt(diag(i)) ! Assemble the row vector ! Try this: rowfun(itot, x, rowvec, n, ndim) if (itot.LT.n) then call rowfun(itot,x,rowvec,n,ndim) endif ! BLAS-less DGEMV might be useful if you ever do the sparse version. ! do j=itot+1,n ! do k=1,itot-1 ! rowvec(j)=rowvec(j)-sig(k,j)*sig(k,itot) ! enddo ! enddo ! Implement Cholesky algorithm. CALL DGEMV('T',itot-1,n-itot,negone,sig(1,itot+1), 1 rl, 2 sig(1,itot), 3 1, 4 one,rowvec(itot+1),1) if (itot.LT.n) then do j=itot+1,n sig(itot,j) = rowvec(j) / sig(itot,itot) enddo do j=i+1,nnew jtot = j+mold diag(j) = diag(j) - sig(itot,jtot)*sig(itot,jtot) enddo endif enddo do i=1,n piv(i)=p(i)-1 enddo m = rl return end subroutine ichol(n,sig,m,diag,piv,reltol,x,ndim,rowfun,rl) cf2py intent(hide) n, ndim cf2py intent(out) m,sig,piv cf2py intent(copy) x cf2py intent(in) rl integer i, n, p(n), m, piv(n), ptemp, ndim, rl double precision rowvec(n), diag(n), sig(rl,n), x(n,ndim) c rowfun is the get-row function external rowfun DOUBLE PRECISION maxdiag, tol, dtemp DOUBLE PRECISION ZERO, ONE, RELTOL, NEGONE PARAMETER (zero=0.0D0) PARAMETER (one=1.0D0) PARAMETER (negone = -1.0D0) EXTERNAL DGEMV * DGEMV(TRANS,M,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY) * Purpose * ======= * * DGEMV performs one of the matrix-vector operations * * y := alpha*A*x + beta*y, or y := alpha*A'*x + beta*y, * * where alpha and beta are scalars, x and y are vectors and A is an * m by n matrix. * EXTERNAL DSWAP * DSWAP(N,DX,INCX,DY,INCY) EXTERNAL IDAMAX * IDAMAX(N,DX,INCX) ! Make diagonal and index vectors do i=1,n p(i)=i enddo maxdiag = diag(idamax(n,diag,1)) tol = maxdiag * reltol m = rl ! Main loop do i=1,rl ! Find maximum remaining pivot l = idamax(n-i+1,diag(i),1)+i-1 maxdiag = diag(l) ! Early return if there are no big pivots left if (maxdiag .LE. tol) then do j=1,n piv(j) = p(j)-1 enddo m = i-1 return endif if (i .NE. l) then ! Swap p and diag's elements i and l ptemp = p(i) p(i) = p(l) p(l) = ptemp dtemp = diag(i) diag(i) = diag(l) diag(l) = dtemp ! Swap the i and lth columns of sig CALL DSWAP(i,sig(1,i),1,sig(1,l),1) ! Swap the i and lth rows of x * DSWAP(N,DX,INCX,DY,INCY) CALL DSWAP(ndim,x(i,1),n,x(l,1),n) endif ! Write diagonal element sig(i,i) = dsqrt(diag(i)) ! Assemble the row vector. ! Try this: rowfun(i, x, rowvec, n, ndim) if (i.LT.n) then call rowfun(i,x,rowvec,n,ndim) ! do j=i+1,n ! rowvec(j) = c(p(i),p(j)) ! enddo endif if (i.GT.1) then ! BLAS-less DGEMV might be useful if you ever do the sparse version. ! do j=i+1,n ! do k=1,i-1 ! rowvec(j)=rowvec(j)-sig(k,j)*sig(k,i) ! enddo ! enddo ! Implement Cholesky algorithm. CALL DGEMV('T',i-1,n-i,negone,sig(1,i+1), 1 rl, 2 sig(1,i), 3 1, 4 one,rowvec(i+1),1) endif if (i.LT.n) then do j=i+1,n sig(i,j) = rowvec(j) / sig(i,i) diag(j) = diag(j) - sig(i,j)*sig(i,j) enddo endif enddo do i=1,n piv(i)=p(i)-1 enddo return end subroutine ichol_basis(basis,nb,n_nug,n,sig,p,m,nug,reltol) c Incomplete cholesky factorization c Author: Anand Patil c Date: May 6, 2007 c Port of mex function chol_incomplete.c by Matthias Seeger c http://www.kyb.tuebingen.mpg.de/bs/people/seeger/ c cf2py intent(out) sig cf2py intent(out) p cf2py intent(hide) rowvec cf2py intent(hide) diag cf2py intent(out) m cf2py intent(hide) nb cf2py intent(hide) n_nug cf2py intent(hide) n DOUBLE PRECISION basis(nb,n), sig(n,n), diag(n), nug(n_nug) DOUBLE PRECISION rowvec(n) integer p(n), n, m, nb, i, j DOUBLE PRECISION maxdiag, tol, dtemp EXTERNAL DGEMV DOUBLE PRECISION ZERO, ONE, RELTOL, NEGONE PARAMETER (zero=0.0D0) PARAMETER (one=1.0D0) PARAMETER (negone = -1.0D0) * DGEMV(TRANS,M,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY) * Purpose * ======= * * DGEMV performs one of the matrix-vector operations * * y := alpha*A*x + beta*y, or y := alpha*A'*x + beta*y, * * where alpha and beta are scalars, x and y are vectors and A is an * m by n matrix. * EXTERNAL DSWAP * DSWAP(N,DX,INCX,DY,INCY) EXTERNAL IDAMAX * IDAMAX(N,DX,INCX) ! Make diagonal and index vectors do i=1,n if (n_nug.EQ.1) then diag(i) = nug(1) else diag(i) = nug(i) end if do j=1,nb diag(i) = diag(i) + basis(j,i) ** 2 enddo p(i)=i enddo maxdiag = diag(idamax(n,diag,1)) tol = maxdiag * reltol m = n ! Main loop do i=1,n ! Find maximum remaining pivot l = idamax(n-i+1,diag(i),1)+i-1 maxdiag = diag(l) ! Early return if there are no big pivots left if (maxdiag .LE. tol) then do j=1,n p(j) = p(j)-1 enddo m = i-1 return endif if (i .NE. l) then ! Swap p and diag's elements i and l itemp = p(i) p(i) = p(l) p(l) = itemp dtemp = diag(i) diag(i) = diag(l) diag(l) = dtemp ! Swap the i and lth columns of sig CALL DSWAP(i,sig(1,i),1,sig(1,l),1) ! Swap ith and lth columns of the basis CALL DSWAP(nb,basis(1,i),1,basis(1,l),1) endif ! Write diagonal element sig(i,i) = dsqrt(diag(i)) ! Assemble the row vector if (i.LT.n) then * DGEMV(TRANS,M,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY) CALL DGEMV('T',nb,n-i,one,basis(1,i+1), 1 nb, 2 basis(1,i), 3 1, 4 zero,rowvec(i+1),1) ! BLAS-less DGEMV ! do j=(i+1),n ! rowvec(j) = zero ! do k=1,nb ! rowvec(j)=rowvec(j)+basis(k,i)*basis(k,j) ! end do ! end do endif if (i.GT.1) then ! BLAS-less DGEMV might be useful if you ever do the sparse version. ! do j=i+1,n ! do k=1,i-1 ! rowvec(j)=rowvec(j)-sig(k,j)*sig(k,i) ! enddo ! enddo ! Implement Cholesky algorithm. CALL DGEMV('T',i-1,n-i,negone,sig(1,i+1), 1 n, 2 sig(1,i), 3 1, 4 one,rowvec(i+1),1) endif if (i.LT.n) then do j=i+1,n sig(i,j) = rowvec(j) / sig(i,i) diag(j) = diag(j) - sig(i,j)*sig(i,j) enddo endif enddo do i=1,n p(i)=p(i)-1 enddo return end subroutine ichol_full(c,n,sig,m,p,rowvec,diag,reltol) c c Incomplete cholesky factorization c Author: Anand Patil c Date: May 6, 2007 c Port of mex function chol_incomplete.c by Matthias Seeger c http://www.kyb.tuebingen.mpg.de/bs/people/seeger/ c cf2py double precision dimension(n,n), intent(in)::c cf2py double precision dimension(n,n), intent(out)::sig cf2py integer dimension(n), intent(out)::p cf2py double precision dimension(n), intent(hide)::rowvec cf2py double precision dimension(n), intent(hide)::diag cf2py integer intent(hide), depend(c):: n = shape(c,0) cf2py integer intent(out)::m cf2py double precision intent(in) :: reltol cf2py threadsafe DOUBLE PRECISION c(n,n), sig(n,n), diag(n) DOUBLE PRECISION rowvec(n) integer p(n), n, m, i, j DOUBLE PRECISION maxdiag, tol, dtemp EXTERNAL DGEMV DOUBLE PRECISION ZERO, ONE, RELTOL, NEGONE PARAMETER (zero=0.0D0) PARAMETER (one=1.0D0) PARAMETER (negone = -1.0D0) * DGEMV(TRANS,M,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY) * Purpose * ======= * * DGEMV performs one of the matrix-vector operations * * y := alpha*A*x + beta*y, or y := alpha*A'*x + beta*y, * * where alpha and beta are scalars, x and y are vectors and A is an * m by n matrix. * EXTERNAL DSWAP * DSWAP(N,DX,INCX,DY,INCY) EXTERNAL IDAMAX * IDAMAX(N,DX,INCX) ! Make diagonal and index vectors do i=1,n diag(i) = c(i,i) p(i)=i enddo maxdiag = diag(idamax(n,diag,1)) tol = maxdiag * reltol m = n ! Main loop do i=1,n ! Find maximum remaining pivot l = idamax(n-i+1,diag(i),1)+i-1 maxdiag = diag(l) ! Early return if there are no big pivots left if (maxdiag .LE. tol) then do j=1,n p(j) = p(j)-1 enddo m = i-1 return endif if (i .NE. l) then ! Swap p and diag's elements i and l itemp = p(i) p(i) = p(l) p(l) = itemp dtemp = diag(i) diag(i) = diag(l) diag(l) = dtemp ! Swap the i and lth columns of sig CALL DSWAP(i,sig(1,i),1,sig(1,l),1) endif ! Write diagonal element sig(i,i) = dsqrt(diag(i)) ! Assemble the row vector if (i.LT.n) then do j=i+1,n rowvec(j) = c(p(i),p(j)) enddo endif if (i.GT.1) then ! BLAS-less DGEMV might be useful if you ever do the sparse version. ! do j=i+1,n ! do k=1,i-1 ! rowvec(j)=rowvec(j)-sig(k,j)*sig(k,i) ! enddo ! enddo ! Implement Cholesky algorithm. CALL DGEMV('T',i-1,n-i,negone,sig(1,i+1), 1 n, 2 sig(1,i), 3 1, 4 one,rowvec(i+1),1) endif if (i.LT.n) then do j=i+1,n sig(i,j) = rowvec(j) / sig(i,i) diag(j) = diag(j) - sig(i,j)*sig(i,j) enddo endif enddo do i=1,n p(i)=p(i)-1 enddo return end pymc-2.2+ds/pymc/gp/linalg_utils.f000066400000000000000000000132451204033704200171420ustar00rootroot00000000000000! Copyright (c) Anand Patil, 2007 ! TODO: Multithread zeroing the lower triangle, do it straight from Covariance. SUBROUTINE remove_duplicates(x,N,Nd,Nr,rf,rt,Nu,xu,ui) cf2py intent(out) rt cf2py intent(out) rf cf2py intent(out) Nr cf2py intent(out) xu cf2py intent(out) Nu cf2py intent(out) ui cf2py intent(hide) N cf2py intent(hide) Nd cf2py threadsafe INTEGER N, Nd, i, j, k, rf(N), rt(N), Nr, ui(N) INTEGER Nu DOUBLE PRECISION x(N,Nd), xu(N,Nd) LOGICAL match Nr = 0 Nu = 1 do k=1,Nd xu(1,k) = x(1,k) end do ui(1)=0 match=.FALSE. do i=2,N do j=1,i-1 match=.TRUE. do k=1,Nd if(x(i,k).NE.x(j,k)) then match=.FALSE. go to 10 end if end do 10 if (match) then Nr=Nr+1 rt(Nr)=i-1 rf(Nr)=j-1 go to 20 end if end do 20 if (.NOT.match) then Nu=Nu+1 ui(Nu)=i-1 do k=1,Nd xu(Nu,k)=x(i,k) end do end if end do RETURN END SUBROUTINE check_repeats(x, x_sofar, f_sofar, N, N_dim, N_sofar, +f, new_indices, N_new_indices) cf2py double precision dimension(N,N_dim), intent(in) :: x cf2py double precision dimension(N_sofar, N_dim), intent(in) :: x_sofar cf2py double precision dimension(N_sofar), intent(in) :: f_sofar cf2py integer intent(hide), depend(x):: N = shape(x,0) cf2py integer intent(hide), depend(x):: N_dim = shape(x,1) cf2py integer intent(hide), depend(x_sofar):: N_sofar = shape(x_sofar,0) cf2py double precision intent(out), dimension(N) :: f cf2py integer intent(out), dimension(N):: new_indices cf2py integer intent(out):: N_new_indices cf2py threadsafe INTEGER N, N_dim, N_sofar, +N_new_indices, new_indices(N), i, j, k DOUBLE PRECISION x(N,N_dim), x_sofar(N_sofar, N_dim), +f(N), f_sofar(N_sofar) LOGICAL match N_new_indices = 0 match=.FALSE. do i=1,N ! N_new_indices = N_new_indices + 1 ! new_indices(N_new_indices) = i-1 do j=1,N_sofar match=.TRUE. do k=1,N_dim if (x(i,k) .NE. x_sofar(j,k)) then match=.FALSE. GO TO 10 endif enddo 10 continue if (match) then GO TO 20 endif enddo 20 continue if (match) then f(i) = f_sofar(j) else N_new_indices = N_new_indices+1 new_indices(N_new_indices) = i-1 endif enddo RETURN END subroutine diag_call(x,n,ndim,V,cov_fun) cf2py intent(hide) n cf2py intent(hide) ndim cf2py intent(out) V integer i, n, ndim, j double precision x(n,ndim), xe(1,ndim), V(n) external cov_fun cf2py double precision q cf2py q = cov_fun(xe,ndim) do i=1,n do j=1,ndim xe(1,j) = x(i,j) enddo V(i) = cov_fun(xe,ndim) ! print *,xe,cov_fun(xe,ndim) enddo return END SUBROUTINE basis_diag_call(basis_x, V, n, nbas) cf2py intent(hide) n cf2py intent(hide) nbas cf2py intent(out) V integer n, i, j double precision V(n), basis_x(nbas,n) do i=1,n V(i) = 0 do j=1,nbas V(i) = V(i) + basis_x(j,i) ** 2 enddo enddo return END SUBROUTINE gp_array_logp(x, mu, sig, n, like, info) cf2py intent(copy) x, mu cf2py intent(in) sig cf2py intent(out) like cf2py intent(hide) info, n cf2py threadsafe DOUBLE PRECISION sig(n,n), x(n), mu(n), like INTEGER n, info, i DOUBLE PRECISION twopi_N, log_detC, gd DOUBLE PRECISION infinity PARAMETER (infinity = 1.7976931348623157d308) DOUBLE PRECISION PI PARAMETER (PI=3.141592653589793238462643d0) EXTERNAL DTRSV ! DTRSV ( UPLO, TRANS, DIAG, N, A, LDA, X, INCX ) ! EXTERNAL DPOTRS ! DPOTRS( UPLO, N, NRHS, A, LDA, B, LDB, INFO ) Solves triangular system EXTERNAL DAXPY ! DAXPY(N,DA,DX,INCX,DY,INCY) Adding vectors EXTERNAL DCOPY ! DCOPY(N,DX,INCX,DY,INCY) copies x to y ! NB DDOT from ATLAS, compiled with gfortran 4.2 on Ubuntu Gutsy, ! was producing bad output- hence the manual dot product. ! x <- (x-mu) call DAXPY(n, -1.0D0, mu, 1, x, 1) ! mu <- x ! call DCOPY(n,x,1,mu,1) ! x <- sig ^-1 * x ! call DPOTRS('L',n,1,sig,n,x,n,info) call DTRSV('U','T','N',n,sig,n,x,1) gd=0.0D0 do i=1,n gd=gd+x(i)*x(i) end do ! like <- .5 dot(x,mu) (.5 (x-mu) C^{-1} (x-mu)^T) like = -0.5D0 * gd ! print *, like twopi_N = 0.5D0 * N * dlog(2.0D0*PI) ! print *, twopi_N log_detC = 0.0D0 do i=1,n log_detC = log_detC + log(sig(i,i)) enddo ! print *, log_detC like = like - twopi_N - log_detC return END c SUBROUTINE asqs(C,S,nx,ny,cmin,cmax) cf2py intent(in) C cf2py intent(inplace) S cf2py integer intent(in), optional :: cmin = 0 cf2py integer intent(in), optional :: cmax = -1 cf2py intent(hide) nx,ny cf2py threadsafe DOUBLE PRECISION C(nx,ny), cn, S(ny) INTEGER nx, ny, i, j, cmin, cmax EXTERNAL DSCAL if (cmax.EQ.-1) then cmax = ny end if do j=cmin+1,cmax S(j) = 0.0D0 do i=1,nx cn = C(i,j) S(j) = S(j) + cn * cn end do ! CALL DSCAL(nx,a,C(1,j),1) enddo RETURN ENDpymc-2.2+ds/pymc/gp/step_methods.py000066400000000000000000000240231204033704200173510ustar00rootroot00000000000000# Copyright (c) Anand Patil, 2007 __docformat__ = 'reStructuredText' import pymc as pm from . import linalg_utils import copy import types import numpy as np from .gp_submodel import * import warnings from pymc import six from pymc.six import print_ xrange = six.moves.xrange from .Realization import Realization from .Mean import Mean from .Covariance import Covariance from .GPutils import observe, regularize_array __all__ = ['wrap_metropolis_for_gp_parents', 'GPEvaluationGibbs', 'GPParentAdaptiveMetropolis', 'GPStepMethod', 'GPEvaluationMetropolis', 'MeshlessGPMetropolis'] class GPStepMethod(pm.NoStepper): @staticmethod def competence(stochastic): if isinstance(stochastic, GaussianProcess): return 1 else: return 0 def wrap_metropolis_for_gp_parents(metro_class): """ Wraps Metropolis step methods so they can handle extended parents of Gaussian processes. """ class wrapper(metro_class): __doc__ = """A modified version of class %s that handles parents of Gaussian processes. Docstring of class %s: \n\n%s"""%(metro_class.__name__,metro_class.__name__,metro_class.__doc__) def __init__(self, stochastic, *args, **kwds): self.metro_class.__init__(self, stochastic, *args, **kwds) mb = set(self.markov_blanket) for c in list(self.children): if isinstance(c, GaussianProcess): self.children |= c.extended_children mb |= c.extended_children self.markov_blanket = list(mb) # Remove f from the set that will be used to compute logp_plus_loglike. self.markov_blanket_no_f = set(filter(lambda x: not isinstance(x, GaussianProcess), self.markov_blanket)) self.fs = filter(lambda x: isinstance(x, GaussianProcess), self.markov_blanket) self.fr_checks = [f.submodel.fr_check for f in self.fs] def get_logp_plus_loglike(self): return pm.logp_of_set(self.markov_blanket_no_f) logp_plus_loglike = property(get_logp_plus_loglike) def propose(self): self.metro_class.propose(self) try: # First make sure none of the stochastics handled by metro_method forbid their current values. for s in self.stochastics: s.logp # Then make sure the covariances are all still full-rank on the observation locations. for frc in self.fr_checks: frc.logp for f in self.fs: f.rand() self.f_proposed = True except pm.ZeroProbability: self.f_proposed = False def reject(self): self.metro_class.reject(self) if self.f_proposed: for f in self.fs: f.revert() @staticmethod def competence(stochastic, metro_class=metro_class): if any([isinstance(child, GaussianProcess) for child in stochastic.extended_children]): return metro_class.competence(stochastic)+.01 else: return 0 wrapper.__name__ = 'GPParent%s'%metro_class.__name__ wrapper.metro_class = metro_class return wrapper # Wrap all registered Metropolis step methods to use GP parents. new_sm_dict = {} filtered_registry = [sm for sm in pm.StepMethodRegistry if issubclass(sm, pm.Metropolis)] for sm in filtered_registry: wrapped_method = wrap_metropolis_for_gp_parents(sm) new_sm_dict[wrapped_method.__name__] = wrapped_method GPParentAdaptiveMetropolis = wrap_metropolis_for_gp_parents(pm.AdaptiveMetropolis) __all__ += new_sm_dict.keys() locals().update(new_sm_dict) class MeshlessGPMetropolis(pm.Metropolis): def __init__(self, gp): pm.Metropolis.__init__(self, gp, proposal_distribution='Prior', check_before_accepting=False) def propose(self): self.stochastic.rand() @staticmethod def competence(stochastic): if isinstance(stochastic, GaussianProcess): if len(stochastic.submodel.mesh)==0: return 3 else: return 0 else: return 0 class _GPEvaluationMetropolis(pm.Metropolis): """ Updates a GP evaluation, the 'f_eval' attribute of a GP submodel. The stationary distribution of the assymetric proposal is equal to the prior distribution, an attempt to minimize jumps to values forbidden by the prior. """ def __init__(self, stochastic, proposal_sd=1, **kwds): pm.Metropolis.__init__(self, stochastic, proposal_sd=proposal_sd, **kwds) def propose(self): sig = pm.utils.value(self.stochastic.parents['sig']) mu = pm.utils.value(self.stochastic.parents['mu']) delta = pm.rmv_normal_chol(0*mu, sig) beta = np.minimum(1, self.proposal_sd * self.adaptive_scale_factor) bsig = beta*sig sb2 = np.sqrt(1-beta**2) self.stochastic.value = (self.stochastic.value - mu)*sb2+beta*delta+mu xp,x = self.stochastic.value, self.stochastic.last_value self._hastings_factor = pm.mv_normal_chol_like(x,(xp-mu)*sb2+mu,bsig) - pm.mv_normal_chol_like(xp,(x-mu)*sb2+mu,bsig) # self.stochastic.value = self.stochastic.value + self.adaptive_scale_factor*self.proposal_sd*delta # self._hastings_factor = 0 def hastings_factor(self): return self._hastings_factor @staticmethod def competence(stochastic): if isinstance(stochastic, GPEvaluation): return 3 else: return 0 GPEvaluationMetropolis = wrap_metropolis_for_gp_parents(_GPEvaluationMetropolis) class GPEvaluationGibbs(pm.Metropolis): """ Updates a GP evaluation f_eval. Assumes the only children of f_eval are as distributed follows: eps_p_f ~ Normal(f_eval[ti], 1./V) or eps_p_f ~ Normal(f_eval, 1./V) if ti is None. """ def __init__(self, submod, V, eps_p_f, ti=None, tally=True, verbose=0): self.f_eval = submod.f_eval self.f = submod.f pm.StepMethod.__init__(self, [self.f, self.f_eval], tally=tally) self.children_no_data = copy.copy(self.children) if isinstance(eps_p_f, pm.Variable): self.children_no_data.remove(eps_p_f) self.eps_p_f = eps_p_f else: for epf in eps_p_f: self.children_no_data.remove(epf) self.eps_p_f = pm.Lambda('eps_p_f', lambda e=eps_p_f: np.hstack(e), trace=False) self.V = pm.Lambda('%s_vect'%V.__name__, lambda V=V: np.resize(V, len(submod.mesh))) self.C_eval = submod.C_eval self.M_eval = submod.M_eval self.S_eval = submod.S_eval M_eval_shape = pm.utils.value(self.M_eval).shape C_eval_shape = pm.utils.value(self.C_eval).shape self.ti = ti or np.arange(M_eval_shape[0]) # Work arrays self.scratch1 = np.asmatrix(np.empty(C_eval_shape, order='F')) self.scratch2 = np.asmatrix(np.empty(C_eval_shape, order='F')) self.scratch3 = np.empty(M_eval_shape) # Initialize hidden attributes self.accepted = 0. self.rejected = 0. self._state = ['rejected', 'accepted', 'proposal_distribution'] self._tuning_info = [] self.proposal_distribution=None def get_logp(self): return 0. logp = property(get_logp) def get_loglike(self): return pm.utils.logp_of_set(self.children_no_data) loglike = property(get_loglike) def get_logp_plus_loglike(self): return self.get_loglike() logp_plus_loglike = property(get_logp_plus_loglike) def reject(self): self.rejected += 1 if self.verbose: print_(self._id + ' rejecting') # Revert the field evaluation and the rest of the field. self.f_eval.revert() self.f.revert() def tune(self, verbose=0): return False def propose(self): if self.verbose: print_(self._id + ' proposing') fc = pm.gp.fast_matrix_copy eps_p_f = pm.utils.value(self.eps_p_f) f = pm.utils.value(self.f_eval) for i in xrange(len(self.scratch3)): self.scratch3[i] = np.sum(eps_p_f[self.ti[i]] - f[i]) # Compute Cholesky factor of covariance of eps_p_f, C(x,x) + V C_eval_value = pm.utils.value(self.C_eval) C_eval_shape = C_eval_value.shape # Get the Cholesky factor of C_eval, plus the nugget. # I don't think you can use S_eval for speed, unfortunately. in_chol = fc(C_eval_value, self.scratch1) v_val = pm.utils.value(self.V) for i in xrange(pm.utils.value(C_eval_shape)[0]): in_chol[i,i] += v_val[i] / np.alen(self.ti[i]) info = pm.gp.linalg_utils.dpotrf_wrap(in_chol) if info > 0: raise np.linalg.LinAlgError # Compute covariance of f conditional on eps_p_f. offdiag = fc(C_eval_value, self.scratch2) offdiag = pm.gp.trisolve(in_chol, offdiag, uplo='U', transa='T', inplace=True) C_step = offdiag.T * offdiag C_step *= -1 C_step += C_eval_value # Compute mean of f conditional on eps_p_f. for i in xrange(len(self.scratch3)): self.scratch3[i] = np.mean(eps_p_f[self.ti[i]]) m_step = pm.utils.value(self.M_eval) + np.dot(offdiag.T, pm.gp.trisolve(in_chol,(self.scratch3 - self.M_eval.value),uplo='U',transa='T')).view(np.ndarray).ravel() sig_step = C_step info = pm.gp.linalg_utils.dpotrf_wrap(C_step.T) if info > 0: warnings.warn('Full conditional covariance was not positive definite.') return # Update value of f. self.f_eval.value = m_step+np.dot(sig_step,np.random.normal(size=sig_step.shape[1])).view(np.ndarray).ravel() # Propose the rest of the field from its conditional prior. self.f.rand() pymc-2.2+ds/pymc/graph.py000066400000000000000000000245251204033704200153550ustar00rootroot00000000000000import pymc as pm import os from copy import copy __all__ = ['graph', 'moral_graph'] try: import pydot pydot_imported = True except: pydot_imported = False def moral_graph(model, format='raw', prog='dot', path=None, name=None): """ moral_graph(model,format='raw', prog='dot', path=None) Draws the moral graph for this model and writes it to path with filename name. Returns the pydot 'dot' object for further user manipulation. GraphViz and PyDot must be installed to use this function. :Parameters: model : PyMC Model instance format : string 'ps', 'ps2', 'hpgl', 'pcl', 'mif', 'pic', 'gd', 'gd2', 'gif', 'jpg', 'jpeg', 'png', 'wbmp', 'ismap', 'imap', 'cmap', 'cmapx', 'vrml', 'vtx', 'mp', 'fig', 'svg', 'svgz', 'dia', 'dot', 'canon', 'plain', 'plain-ext', 'xdot' prog : string 'dot', 'neato' path : string If model.__name__ is defined and path is None, the output file is ./'name'.'format'. :Note: format='raw' outputs a GraphViz dot file. """ if not pydot_imported: raise ImportError('PyDot must be installed to use the moral_graph function.\n PyDot is available from http://dkbza.org/pydot.html') model.moral_dot_object = pydot.Dot() # Data are filled ellipses for datum in model.observed_stochastics: model.moral_dot_object.add_node(pydot.Node(name=datum.__name__, style='filled')) # Stochastics are open ellipses for s in model.stochastics: model.moral_dot_object.add_node(pydot.Node(name=s.__name__)) gone_already = set() for s in model.stochastics | model.observed_stochastics: gone_already.add(s) for other_s in s.moral_neighbors: if not other_s in gone_already: model.moral_dot_object.add_edge(pydot.Edge(src=other_s.__name__, dst=s.__name__, arrowhead='none')) # Draw the graph ext=format if format=='raw': ext='dot' if name is None: name = model.__name__ name = name + '.' + ext if not path is None: model.moral_dot_object.write(path=os.path.join(path,name), format=format, prog=prog) else: model.moral_dot_object.write(path='./'+name, format=format, prog=prog) return model.moral_dot_object def graph(model, format='raw', prog='dot', path=None, name=None, consts=False, legend=False, collapse_deterministics = False, collapse_potentials = False, label_edges=True): """ graph( model, format='raw', prog='dot', path=None, name=None, consts=False, legend=True, collapse_deterministics = False, collapse_potentials = False) Draws the graph for this model and writes it to path with filename name. Returns the pydot 'dot' object for further user manipulation. GraphViz and PyDot must be installed to use this function. :Parameters: model : PyMC Model instance format : string 'ps', 'ps2', 'hpgl', 'pcl', 'mif', 'pic', 'gd', 'gd2', 'gif', 'jpg', 'jpeg', 'png', 'wbmp', 'ismap', 'imap', 'cmap', 'cmapx', 'vrml', 'vtx', 'mp', 'fig', 'svg', 'svgz', 'dia', 'dot', 'canon', 'plain', 'plain-ext', 'xdot' prog : string 'dot', 'neato' path : string If model.__name__ is defined and path is None, the output file is ./'name'.'format'. consts : boolean If True, constant parents are included in the graph. legend : boolean If True, a graph legend is created. collapse_deterministics : boolean If True, all deterministic dependencies are collapsed. collapse_potentials : boolean If True, all potentials are converted to undirected edges. """ if not pydot_imported: raise ImportError('PyDot must be installed to use the graph function.\n PyDot is available from http://dkbza.org/pydot.html') pydot_nodes = {} pydot_subgraphs = {} obj_substitute_names = {} shown_objects = set([]) model.dot_object = pydot.Dot() def get_obj_names(obj, key): if isinstance(obj, pm.Stochastic): if obj in obj_substitute_names: return obj_substitute_names[obj] if obj.observed: datum = obj # Data are filled ellipses pydot_nodes[datum] = pydot.Node(name=datum.__name__, style='filled') model.dot_object.add_node(pydot_nodes[datum]) shown_objects.add(datum) obj_substitute_names[datum] = [datum.__name__] else: s = obj # Stochastics are open ellipses pydot_nodes[s] = pydot.Node(name=s.__name__) model.dot_object.add_node(pydot_nodes[s]) shown_objects.add(s) obj_substitute_names[s] = [s.__name__] elif isinstance(obj, pm.Deterministic): if obj in obj_substitute_names: return obj_substitute_names[obj] d = obj # Deterministics are downward-pointing triangles if not collapse_deterministics: pydot_nodes[d] = pydot.Node(name=d.__name__, shape='invtriangle') model.dot_object.add_node(pydot_nodes[d]) shown_objects.add(d) obj_substitute_names[d] = [d.__name__] else: obj_substitute_names[d] = [] elif isinstance(obj, pm.Potential): if obj in obj_substitute_names: return obj_substitute_names[obj] potential = obj # Potentials are squares if not collapse_potentials: pydot_nodes[potential] = pydot.Node(name=potential.__name__, shape='box') model.dot_object.add_node(pydot_nodes[potential]) shown_objects.add(potential) obj_substitute_names[potential] = [potential.__name__] else: obj_substitute_names[potential]=[] elif consts: if key in obj_substitute_names: return else: obj_substitute_names[key] = [key] model.dot_object.add_node(pydot.Node(name=key, style='filled')) return else: return return obj_substitute_names[obj] connected = [] def maybe_connect_parent(src, dst, label): if (src,dst,label) in connected: return False else: connected.append((src,dst,label)) model.dot_object.add_edge(pydot.Edge(src=src, dst=dst, label=label)) return True def connect_parents(node): if collapse_deterministics: parent_tups = [(s.__name__, s) for s in node.extended_parents] if consts: parent_tups += filter(lambda x: not isinstance(x[1], pm.Variable), node.parents.items()) parent_dict = dict(parent_tups) else: parent_dict = node.parents for key in parent_dict: key_val = parent_dict[key] label = label_edges*key or '' if hasattr(key_val,'__name__'): const_node_name = key_val.__name__ elif len(key_val.__str__()) <= 10: const_node_name = key_val.__str__() else: const_node_name = key_val.__class__.__name__ if isinstance(key_val, pm.Variable): if any([maybe_connect_parent(name, node.__name__, label) for name in get_obj_names(key_val, None)]): connect_parents(key_val) elif isinstance(key_val, pm.ContainerBase): for var in key_val.variables: if any([maybe_connect_parent(name, node.__name__, label) for name in get_obj_names(var, None)]): connect_parents(var) elif consts: get_obj_names(key_val, const_node_name) maybe_connect_parent(const_node_name, node.__name__, label) # Create edges from parent-child relationships between nodes. if collapse_potentials: shownodes = model.variables else: shownodes = model.nodes for node in shownodes: get_obj_names(node,None) if node in shown_objects: connect_parents(node) if collapse_potentials: for potential in model.potentials: if collapse_deterministics: potential_parents = set() for p in potential.extended_parents: potential_parents.update(get_obj_names(p,None)) else: potential_parents=set() for parent in potential.parents.values(): if isinstance(parent, pm.Variable): potential_parents |= set(get_obj_names(parent, None)) elif isinstance(parent, ContainerBase): for ult_parent in parent.variables: potential_parents |= set(get_obj_names(parent, None)) remaining_parents = copy(potential_parents) for p1 in potential_parents: remaining_parents.discard(p1) for p2 in remaining_parents: new_edge = pydot.Edge(src = p2, dst = p1, label=potential.__name__, arrowhead='none') model.dot_object.add_edge(new_edge) # Add legend if requested if legend: legend = pydot.Cluster(graph_name = 'Legend', label = 'Legend') legend.add_node(pydot.Node(name='data', style='filled')) legend.add_node(pydot.Node(name='stochastics')) legend.add_node(pydot.Node(name='deterministics', shape='invtriangle')) legend.add_node(pydot.Node(name='potentials', shape='box')) if consts: legend.add_node(pydot.Node(name='constants', style='filled')) model.dot_object.add_subgraph(legend) # Draw the graph ext=format if format=='raw': ext='dot' if name is None: name = model.__name__ name = name + '.' + ext if not path == None: model.dot_object.write(path=os.path.join(path,name), format=format, prog=prog) else: model.dot_object.write(path='./' + name, format=format, prog=prog) return model.dot_object # Alias as dag dag = graph pymc-2.2+ds/pymc/histogram.f000066400000000000000000000205241204033704200160410ustar00rootroot00000000000000C******************************************************************* C RETURN THE HISTOGRAM OF ARRAY X, THAT IS, THE NUMBER OF ELEMENTS C IN X FALLING INTO EACH BIN. C THE BIN ARRAY CONSISTS IN N BINS STARTING AT BIN0 WITH WIDTH DELTA. C HISTO H : | LOWER OUTLIERS | 1 | 2 | 3 | ... | N | UPPER OUTLIERS | C INDEX i : | 1 | 2 | 3 | 4 | ... | N+1 | N+2 | SUBROUTINE FIXED_BINSIZE(X, BIN0, DELTA, N, NX, H) C PARAMETERS C ---------- C X : ARRAY C BIN0 : LEFT BIN EDGE C DELTA : BIN WIDTH C N : NUMBER OF BINS C H : HISTOGRAM IMPLICIT NONE INTEGER :: N, NX, i, K DOUBLE PRECISION :: X(NX), BIN0, DELTA INTEGER :: H(N+2), UP, LOW CF2PY INTEGER INTENT(IN) :: N CF2PY INTEGER INTENT(HIDE) :: NX = LEN(X) CF2PY DOUBLE PRECISION DIMENSION(NX), INTENT(IN) :: X CF2PY DOUBLE PRECISION INTENT(IN) :: BIN0, DELTA CF2PY INTEGER DIMENSION(N+2), INTENT(OUT) :: H CF2PY THREADSAFE DO i=1,N+2 H(i) = 0 ENDDO C OUTLIERS INDICES UP = N+2 LOW = 1 DO i=1,NX IF (X(i) >= BIN0) THEN K = INT((X(i)-BIN0)/DELTA)+1 IF (K <= N) THEN H(K+1) = H(K+1) + 1 ELSE H(UP) = H(UP) + 1 ENDIF ELSE H(LOW) = H(LOW) + 1 ENDIF ENDDO END SUBROUTINE C******************************************************************* C RETURN THE WEIGHTED HISTOGRAM OF ARRAY X, THAT IS, THE SUM OF THE C WEIGHTS OF THE ELEMENTS OF X FALLING INTO EACH BIN. C THE BIN ARRAY CONSISTS IN N BINS STARTING AT BIN0 WITH WIDTH DELTA. C HISTO H : | LOWER OUTLIERS | 1 | 2 | 3 | ... | N | UPPER OUTLIERS | C INDEX i : | 1 | 2 | 3 | 4 | ... | N+1 | N+2 | SUBROUTINE WEIGHTED_FIXED_BINSIZE(X, W, BIN0, DELTA, N, NX, H) C PARAMETERS C ---------- C X : ARRAY C W : WEIGHTS C BIN0 : LEFT BIN EDGE C DELTA : BIN WIDTH C N : NUMBER OF BINS C H : HISTOGRAM IMPLICIT NONE INTEGER :: N, NX, i, K DOUBLE PRECISION :: X(NX), W(NX), BIN0, DELTA, H(N+2) INTEGER :: UP, LOW CF2PY INTEGER INTENT(IN) :: N CF2PY INTEGER INTENT(HIDE) :: NX = LEN(X) CF2PY DOUBLE PRECISION DIMENSION(NX), INTENT(IN) :: X, W CF2PY DOUBLE PRECISION INTENT(IN) :: BIN0, DELTA CF2PY DOUBLE PRECISION DIMENSION(N+2), INTENT(OUT) :: H CF2PY THREADSAFE DO i=1,N+2 H(i) = 0.D0 ENDDO C OUTLIERS INDICES UP = N+2 LOW = 1 DO i=1,NX IF (X(i) >= BIN0) THEN K = INT((X(i)-BIN0)/DELTA)+1 IF (K <= N) THEN H(K+1) = H(K+1) + W(i) ELSE H(UP) = H(UP) + W(i) ENDIF ELSE H(LOW) = H(LOW) + W(i) ENDIF ENDDO END SUBROUTINE C***************************************************************************** C COMPUTE N DIMENSIONAL FLATTENED HISTOGRAM SUBROUTINE FIXED_BINSIZE_ND(X, BIN0, DELTA, N, COUNT, NX,D,NC) C PARAMETERS C ---------- C X : ARRAY (NXD) C BIN0 : LEFT BIN EDGES (D) C DELTA : BIN WIDTH (D) C N : NUMBER OF BINS (D) C COUNT : FLATTENED HISTOGRAM (NC) C NC : PROD(N(:)+2) IMPLICIT NONE INTEGER :: NX, D, NC,N(D), i, j, k, T DOUBLE PRECISION :: X(NX,D), BIN0(D), DELTA(D) INTEGER :: INDEX(NX), ORDER(D), MULT, COUNT(NC) CF2PY DOUBLE PRECISION DIMENSION(NX,D), INTENT(IN) :: X CF2PY DOUBLE PRECISION DIMENSION(D) :: BIN0, DELTA CF2PY INTEGER INTENT(IN) :: N CF2PY INTEGER DIMENSION(NC), INTENT(OUT) :: COUNT CF2PY INTEGER INTENT(HIDE) :: NX=SHAPE(X,1) CF2PY INTEGER INTENT(HIDE) :: D=SHAPE(X,2) CF2PY THREADSAFE C INITIALIZE INDEX DO i=1, NX INDEX(i) = 0 ENDDO C INITIALIZE COUNT DO i=1,NC COUNT(i) = 0 ENDDO C ORDER THE BIN SIZE ARRAY N(D) CALL QSORTI(ORDER, D, N) C INITIALIZE THE DIMENSIONAL MULTIPLIER MULT=1 C FIND THE FLATTENED INDEX OF EACH SAMPLE DO j=1, D k = ORDER(j) MULT=MULT*N(k) DO i=1, NX IF (X(i,k) >= BIN0(k)) THEN T = INT((X(i, k)-BIN0(k))/DELTA(k))+1 IF (T <= N(k)) THEN T = T+1 ELSE T = N(k)+2 ENDIF ELSE T = 1 ENDIF INDEX(i) = INDEX(I) + T*MULT ENDDO ENDDO C COUNT THE NUMBER OF SAMPLES FALLING INTO EACH BIN DO i=1,NX COUNT(INDEX(i)) = COUNT(INDEX(i)) + 1 ENDDO END SUBROUTINE C From HDK@psuvm.psu.edu Thu Dec 8 15:27:16 MST 1994 C C The following was converted from Algol recursive to Fortran iterative C by a colleague at Penn State (a long time ago - Fortran 66, please C excuse the GoTo's). The following code also corrects a bug in the C Quicksort algorithm published in the ACM (see Algorithm 402, CACM, C Sept. 1970, pp 563-567; also you younger folks who weren't born at C that time might find interesting the history of the Quicksort C algorithm beginning with the original published in CACM, July 1961, C pp 321-322, Algorithm 64). Note that the following algorithm sorts C integer data; actual data is not moved but sort is affected by sorting C a companion index array (see leading comments). The data type being C sorted can be changed by changing one line; see comments after C declarations and subsequent one regarding comparisons(Fortran C 77 takes care of character comparisons of course, so that comment C is merely historical from the days when we had to write character C compare subprograms, usually in assembler language for a specific C mainframe platform at that time). But the following algorithm is C good, still one of the best available. SUBROUTINE QSORTI (ORD,N,A) C C==============SORTS THE ARRAY A(I),I=1,2,...,N BY PUTTING THE C ASCENDING ORDER VECTOR IN ORD. THAT IS ASCENDING ORDERED A C IS A(ORD(I)),I=1,2,...,N; DESCENDING ORDER A IS A(ORD(N-I+1)), C I=1,2,...,N . THIS SORT RUNS IN TIME PROPORTIONAL TO N LOG N . C C C ACM QUICKSORT - ALGORITHM #402 - IMPLEMENTED IN FORTRAN 66 BY C WILLIAM H. VERITY, WHV@PSUVM.PSU.EDU C CENTER FOR ACADEMIC COMPUTING C THE PENNSYLVANIA STATE UNIVERSITY C UNIVERSITY PARK, PA. 16802 C IMPLICIT INTEGER (A-Z) C DIMENSION ORD(N),POPLST(2,20) INTEGER X,XX,Z,ZZ,Y,N C C TO SORT DIFFERENT INPUT TYPES, CHANGE THE FOLLOWING C SPECIFICATION STATEMENTS; FOR EXAMPLE, FOR FORTRAN CHARACTER C USE THE FOLLOWING: CHARACTER *(*) A(N) C INTEGER A(N) C NDEEP=0 U1=N L1=1 DO 1 I=1,N 1 ORD(I)=I 2 IF (U1.LE.L1) RETURN C 3 L=L1 U=U1 C C PART C 4 P=L Q=U C FOR CHARACTER SORTS, THE FOLLOWING 3 STATEMENTS WOULD BECOME C X = ORD(P) C Z = ORD(Q) C IF (A(X) .LE. A(Z)) GO TO 2 C C WHERE "CLE" IS A LOGICAL FUNCTION WHICH RETURNS "TRUE" IF THE C FIRST ARGUMENT IS LESS THAN OR EQUAL TO THE SECOND, BASED ON "LEN" C CHARACTERS. C X=A(ORD(P)) Z=A(ORD(Q)) IF (X.LE.Z) GO TO 5 Y=X X=Z Z=Y YP=ORD(P) ORD(P)=ORD(Q) ORD(Q)=YP 5 IF (U-L.LE.1) GO TO 15 XX=X IX=P ZZ=Z IZ=Q C C LEFT C 6 P=P+1 IF (P.GE.Q) GO TO 7 X=A(ORD(P)) IF (X.GE.XX) GO TO 8 GO TO 6 7 P=Q-1 GO TO 13 C C RIGHT C 8 Q=Q-1 IF (Q.LE.P) GO TO 9 Z=A(ORD(Q)) IF (Z.LE.ZZ) GO TO 10 GO TO 8 9 Q=P P=P-1 Z=X X=A(ORD(P)) C C DIST C 10 IF (X.LE.Z) GO TO 11 Y=X X=Z Z=Y IP=ORD(P) ORD(P)=ORD(Q) ORD(Q)=IP 11 IF (X.LE.XX) GO TO 12 XX=X IX=P 12 IF (Z.GE.ZZ) GO TO 6 ZZ=Z IZ=Q GO TO 6 C C OUT C 13 CONTINUE IF (.NOT.(P.NE.IX.AND.X.NE.XX)) GO TO 14 IP=ORD(P) ORD(P)=ORD(IX) ORD(IX)=IP 14 CONTINUE IF (.NOT.(Q.NE.IZ.AND.Z.NE.ZZ)) GO TO 15 IQ=ORD(Q) ORD(Q)=ORD(IZ) ORD(IZ)=IQ 15 CONTINUE IF (U-Q.LE.P-L) GO TO 16 L1=L U1=P-1 L=Q+1 GO TO 17 16 U1=U L1=Q+1 U=P-1 17 CONTINUE IF (U1.LE.L1) GO TO 18 C C START RECURSIVE CALL C NDEEP=NDEEP+1 POPLST(1,NDEEP)=U POPLST(2,NDEEP)=L GO TO 3 18 IF (U.GT.L) GO TO 4 C C POP BACK UP IN THE RECURSION LIST C IF (NDEEP.EQ.0) GO TO 2 U=POPLST(1,NDEEP) L=POPLST(2,NDEEP) NDEEP=NDEEP-1 GO TO 18 C C END SORT C END QSORT C END pymc-2.2+ds/pymc/math.f000066400000000000000000000442251204033704200150010ustar00rootroot00000000000000 DOUBLE PRECISION FUNCTION PPND16 (P, IFAULT) C C ALGORITHM AS241 APPL. STATIST. (1988) VOL. 37, NO. 3 C C Produces the normal deviate Z corresponding to a given lower C tail area of P; Z is accurate to about 1 part in 10**16. C C The hash sums below are the sums of the mantissas of the C coefficients. They are included for use in checking C transcription. C INTEGER IFAULT DOUBLE PRECISION ZERO, ONE, HALF, SPLIT1, SPLIT2, CONST1, * CONST2, A0, A1, A2, A3, A4, A5, A6, A7, * B1, B2, B3, B4, B5, B6, B7, * C0, C1, C2, C3, C4, C5, C6, C7, * D1, D2, D3, D4, D5, D6, D7, * E0, E1, E2, E3, E4, E5, E6, E7, * F1, F2, F3, F4, F5, F6, F7, P, Q, R PARAMETER (ZERO = 0.D0, ONE = 1.D0, HALF = 0.5D0, * SPLIT1 = 0.425D0, SPLIT2 = 5.D0, * CONST1 = 0.180625D0, CONST2 = 1.6D0) C C Coefficients for P close to 0.5 C PARAMETER (A0 = 3.3871328727963666080D0, * A1 = 1.3314166789178437745D+2, * A2 = 1.9715909503065514427D+3, * A3 = 1.3731693765509461125D+4, * A4 = 4.5921953931549871457D+4, * A5 = 6.7265770927008700853D+4, * A6 = 3.3430575583588128105D+4, * A7 = 2.5090809287301226727D+3, * B1 = 4.2313330701600911252D+1, * B2 = 6.8718700749205790830D+2, * B3 = 5.3941960214247511077D+3, * B4 = 2.1213794301586595867D+4, * B5 = 3.9307895800092710610D+4, * B6 = 2.8729085735721942674D+4, * B7 = 5.2264952788528545610D+3) C HASH SUM AB 55.88319 28806 14901 4439 C C Coefficients for P not close to 0, 0.5 or 1. C PARAMETER (C0 = 1.42343711074968357734D0, * C1 = 4.63033784615654529590D0, * C2 = 5.76949722146069140550D0, * C3 = 3.64784832476320460504D0, * C4 = 1.27045825245236838258D0, * C5 = 2.41780725177450611770D-1, * C6=2.27238449892691845833D-2, * C7 = 7.74545014278341407640D-4, * D1 = 2.05319162663775882187D0, * D2 = 1.67638483018380384940D0, * D3 = 6.89767334985100004550D-1, * D4 = 1.48103976427480074590D-1, * D5 = 1.51986665636164571966D-2, * D6 = 5.47593808499534494600D-4, * D7 = 1.05075007164441684324D-9) C HASH SUM 49.33206 50330 16102 89036 C C Coefficients for P near 0 or 1. C PARAMETER (E0 = 6.65790464350110377720D0, * E1 = 5.46378491116411436990D0, * E2 = 1.78482653991729133580D0, * E3 = 2.96560571828504891230D-1, * E4 = 2.65321895265761230930D-2, * E5 = 1.24266094738807843860D-3, * E6 = 2.71155556874348757815D-5, * E7 = 2.01033439929228813265D-7, * F1 = 5.99832206555887937690D-1, * F2 = 1.36929880922735805310D-1, * F3 = 1.48753612908506148525D-2, * F4 = 7.86869131145613259100D-4, * F5 = 1.84631831751005468180D-5, * F6 = 1.42151175831644588870D-7, * F7 = 2.04426310338993978564D-15) C HASH SUM EF 47.52583 31754 92896 71629 C IFAULT = 0 Q = P - HALF IF (ABS(Q) .LE. SPLIT1) THEN R = CONST1 - Q * Q PPND16 = Q * (((((((A7 * R + A6) * R + A5) * R + A4) * R + A3) * * R + A2) * R + A1) * R + A0) / * (((((((B7 * R + B6) * R + B5) * R + B4) * R + B3) * * R + B2) * R + B1) * R + ONE) RETURN ELSE IF (Q .LT. ZERO) THEN R = P ELSE R = ONE - P END IF IF (R .LE. ZERO) THEN IFAULT = 1 PPND16 = ZERO RETURN END IF R = SQRT(-LOG(R)) IF (R .LE. SPLIT2) THEN R = R - CONST2 PPND16 = (((((((C7 * R + C6) * R + C5) * R + C4) * R + C3) * * R + C2) * R + C1) * R + C0) / * (((((((D7 * R + D6) * R + D5) * R + D4) * R + D3) * * R + D2) * R + D1) * R + ONE) ELSE R = R - SPLIT2 PPND16 = (((((((E7 * R + E6) * R + E5) * R + E4) * R + E3) * * R + E2) * R + E1) * R + E0) / * (((((((F7 * R + F6) * R + F5) * R + F4) * R + F3) * * R + F2) * R + F1) * R + ONE) END IF IF (Q .LT. ZERO) PPND16 = - PPND16 RETURN END IF END SUBROUTINE CALERF(ARG,RESULT,JINT) C------------------------------------------------------------------ C C This packet evaluates erf(x), erfc(x), and exp(x*x)*erfc(x) C for a real argument x. It contains three FUNCTION type C subprograms: ERF, ERFC, and ERFCX (or DERF, DERFC, and DERFCX), C and one SUBROUTINE type subprogram, CALERF. The calling C statements for the primary entries are: C C Y=ERF(X) (or Y=DERF(X)), C C Y=ERFC(X) (or Y=DERFC(X)), C and C Y=ERFCX(X) (or Y=DERFCX(X)). C C The routine CALERF is intended for internal packet use only, C all computations within the packet being concentrated in this C routine. The function subprograms invoke CALERF with the C statement C C CALL CALERF(ARG,RESULT,JINT) C C where the parameter usage is as follows C C Function Parameters for CALERF C call ARG Result JINT C C ERF(ARG) ANY REAL ARGUMENT ERF(ARG) 0 C ERFC(ARG) ABS(ARG) .LT. XBIG ERFC(ARG) 1 C ERFCX(ARG) XNEG .LT. ARG .LT. XMAX ERFCX(ARG) 2 C C The main computation evaluates near-minimax approximations C from "Rational Chebyshev approximations for the error function" C by W. J. Cody, Math. Comp., 1969, PP. 631-638. This C transportable program uses rational functions that theoretically C approximate erf(x) and erfc(x) to at least 18 significant C decimal digits. The accuracy achieved depends on the arithmetic C system, the compiler, the intrinsic functions, and proper C selection of the machine-dependent constants. C C******************************************************************* C******************************************************************* C C Explanation of machine-dependent constants C C XMIN = the smallest positive floating-point number. C XINF = the largest positive finite floating-point number. C XNEG = the largest negative argument acceptable to ERFCX; C the negative of the solution to the equation C 2*exp(x*x) = XINF. C XSMALL = argument below which erf(x) may be represented by C 2*x/sqrt(pi) and above which x*x will not underflow. C A conservative value is the largest machine number X C such that 1.0 + X = 1.0 to machine precision. C XBIG = largest argument acceptable to ERFC; solution to C the equation: W(x) * (1-0.5/x**2) = XMIN, where C W(x) = exp(-x*x)/[x*sqrt(pi)]. C XHUGE = argument above which 1.0 - 1/(2*x*x) = 1.0 to C machine precision. A conservative value is C 1/[2*sqrt(XSMALL)] C XMAX = largest acceptable argument to ERFCX; the minimum C of XINF and 1/[sqrt(pi)*XMIN]. C C Approximate values for some important machines are: C C XMIN XINF XNEG XSMALL C C C 7600 (S.P.) 3.13E-294 1.26E+322 -27.220 7.11E-15 C CRAY-1 (S.P.) 4.58E-2467 5.45E+2465 -75.345 7.11E-15 C IEEE (IBM/XT, C SUN, etc.) (S.P.) 1.18E-38 3.40E+38 -9.382 5.96E-8 C IEEE (IBM/XT, C SUN, etc.) (D.P.) 2.23D-308 1.79D+308 -26.628 1.11D-16 C IBM 195 (D.P.) 5.40D-79 7.23E+75 -13.190 1.39D-17 C UNIVAC 1108 (D.P.) 2.78D-309 8.98D+307 -26.615 1.73D-18 C VAX D-Format (D.P.) 2.94D-39 1.70D+38 -9.345 1.39D-17 C VAX G-Format (D.P.) 5.56D-309 8.98D+307 -26.615 1.11D-16 C C C XBIG XHUGE XMAX C C C 7600 (S.P.) 25.922 8.39E+6 1.80X+293 C CRAY-1 (S.P.) 75.326 8.39E+6 5.45E+2465 C IEEE (IBM/XT, C SUN, etc.) (S.P.) 9.194 2.90E+3 4.79E+37 C IEEE (IBM/XT, C SUN, etc.) (D.P.) 26.543 6.71D+7 2.53D+307 C IBM 195 (D.P.) 13.306 1.90D+8 7.23E+75 C UNIVAC 1108 (D.P.) 26.582 5.37D+8 8.98D+307 C VAX D-Format (D.P.) 9.269 1.90D+8 1.70D+38 C VAX G-Format (D.P.) 26.569 6.71D+7 8.98D+307 C C******************************************************************* C******************************************************************* C C Error returns C C The program returns ERFC = 0 for ARG .GE. XBIG; C C ERFCX = XINF for ARG .LT. XNEG; C and C ERFCX = 0 for ARG .GE. XMAX. C C C Intrinsic functions required are: C C ABS, AINT, EXP C C C Author: W. J. Cody C Mathematics and Computer Science Division C Argonne National Laboratory C Argonne, IL 60439 C C Latest modification: March 19, 1990 C C------------------------------------------------------------------ INTEGER I,JINT CS REAL DOUBLE PRECISION 1 A,ARG,B,C,D,DEL,FOUR,HALF,P,ONE,Q,RESULT,SIXTEN,SQRPI, 2 TWO,THRESH,X,XBIG,XDEN,XHUGE,XINF,XMAX,XNEG,XNUM,XSMALL, 3 Y,YSQ,ZERO DIMENSION A(5),B(4),C(9),D(8),P(6),Q(5) C------------------------------------------------------------------ C Mathematical constants C------------------------------------------------------------------ CS DATA FOUR,ONE,HALF,TWO,ZERO/4.0E0,1.0E0,0.5E0,2.0E0,0.0E0/, CS 1 SQRPI/5.6418958354775628695E-1/,THRESH/0.46875E0/, CS 2 SIXTEN/16.0E0/ DATA FOUR,ONE,HALF,TWO,ZERO/4.0D0,1.0D0,0.5D0,2.0D0,0.0D0/, 1 SQRPI/5.6418958354775628695D-1/,THRESH/0.46875D0/, 2 SIXTEN/16.0D0/ C------------------------------------------------------------------ C Machine-dependent constants C------------------------------------------------------------------ CS DATA XINF,XNEG,XSMALL/3.40E+38,-9.382E0,5.96E-8/, CS 1 XBIG,XHUGE,XMAX/9.194E0,2.90E3,4.79E37/ DATA XINF,XNEG,XSMALL/1.79D308,-26.628D0,1.11D-16/, 1 XBIG,XHUGE,XMAX/26.543D0,6.71D7,2.53D307/ C------------------------------------------------------------------ C Coefficients for approximation to erf in first interval C------------------------------------------------------------------ CS DATA A/3.16112374387056560E00,1.13864154151050156E02, CS 1 3.77485237685302021E02,3.20937758913846947E03, CS 2 1.85777706184603153E-1/ CS DATA B/2.36012909523441209E01,2.44024637934444173E02, CS 1 1.28261652607737228E03,2.84423683343917062E03/ DATA A/3.16112374387056560D00,1.13864154151050156D02, 1 3.77485237685302021D02,3.20937758913846947D03, 2 1.85777706184603153D-1/ DATA B/2.36012909523441209D01,2.44024637934444173D02, 1 1.28261652607737228D03,2.84423683343917062D03/ C------------------------------------------------------------------ C Coefficients for approximation to erfc in second interval C------------------------------------------------------------------ CS DATA C/5.64188496988670089E-1,8.88314979438837594E0, CS 1 6.61191906371416295E01,2.98635138197400131E02, CS 2 8.81952221241769090E02,1.71204761263407058E03, CS 3 2.05107837782607147E03,1.23033935479799725E03, CS 4 2.15311535474403846E-8/ CS DATA D/1.57449261107098347E01,1.17693950891312499E02, CS 1 5.37181101862009858E02,1.62138957456669019E03, CS 2 3.29079923573345963E03,4.36261909014324716E03, CS 3 3.43936767414372164E03,1.23033935480374942E03/ DATA C/5.64188496988670089D-1,8.88314979438837594D0, 1 6.61191906371416295D01,2.98635138197400131D02, 2 8.81952221241769090D02,1.71204761263407058D03, 3 2.05107837782607147D03,1.23033935479799725D03, 4 2.15311535474403846D-8/ DATA D/1.57449261107098347D01,1.17693950891312499D02, 1 5.37181101862009858D02,1.62138957456669019D03, 2 3.29079923573345963D03,4.36261909014324716D03, 3 3.43936767414372164D03,1.23033935480374942D03/ C------------------------------------------------------------------ C Coefficients for approximation to erfc in third interval C------------------------------------------------------------------ CS DATA P/3.05326634961232344E-1,3.60344899949804439E-1, CS 1 1.25781726111229246E-1,1.60837851487422766E-2, CS 2 6.58749161529837803E-4,1.63153871373020978E-2/ CS DATA Q/2.56852019228982242E00,1.87295284992346047E00, CS 1 5.27905102951428412E-1,6.05183413124413191E-2, CS 2 2.33520497626869185E-3/ DATA P/3.05326634961232344D-1,3.60344899949804439D-1, 1 1.25781726111229246D-1,1.60837851487422766D-2, 2 6.58749161529837803D-4,1.63153871373020978D-2/ DATA Q/2.56852019228982242D00,1.87295284992346047D00, 1 5.27905102951428412D-1,6.05183413124413191D-2, 2 2.33520497626869185D-3/ C------------------------------------------------------------------ X = ARG Y = ABS(X) IF (Y .LE. THRESH) THEN C------------------------------------------------------------------ C Evaluate erf for |X| <= 0.46875 C------------------------------------------------------------------ YSQ = ZERO IF (Y .GT. XSMALL) YSQ = Y * Y XNUM = A(5)*YSQ XDEN = YSQ DO 20 I = 1, 3 XNUM = (XNUM + A(I)) * YSQ XDEN = (XDEN + B(I)) * YSQ 20 CONTINUE RESULT = X * (XNUM + A(4)) / (XDEN + B(4)) IF (JINT .NE. 0) RESULT = ONE - RESULT IF (JINT .EQ. 2) RESULT = EXP(YSQ) * RESULT GO TO 800 C------------------------------------------------------------------ C Evaluate erfc for 0.46875 <= |X| <= 4.0 C------------------------------------------------------------------ ELSE IF (Y .LE. FOUR) THEN XNUM = C(9)*Y XDEN = Y DO 120 I = 1, 7 XNUM = (XNUM + C(I)) * Y XDEN = (XDEN + D(I)) * Y 120 CONTINUE RESULT = (XNUM + C(8)) / (XDEN + D(8)) IF (JINT .NE. 2) THEN YSQ = AINT(Y*SIXTEN)/SIXTEN DEL = (Y-YSQ)*(Y+YSQ) RESULT = EXP(-YSQ*YSQ) * EXP(-DEL) * RESULT END IF C------------------------------------------------------------------ C Evaluate erfc for |X| > 4.0 C------------------------------------------------------------------ ELSE RESULT = ZERO IF (Y .GE. XBIG) THEN IF ((JINT .NE. 2) .OR. (Y .GE. XMAX)) GO TO 300 IF (Y .GE. XHUGE) THEN RESULT = SQRPI / Y GO TO 300 END IF END IF YSQ = ONE / (Y * Y) XNUM = P(6)*YSQ XDEN = YSQ DO 240 I = 1, 4 XNUM = (XNUM + P(I)) * YSQ XDEN = (XDEN + Q(I)) * YSQ 240 CONTINUE RESULT = YSQ *(XNUM + P(5)) / (XDEN + Q(5)) RESULT = (SQRPI - RESULT) / Y IF (JINT .NE. 2) THEN YSQ = AINT(Y*SIXTEN)/SIXTEN DEL = (Y-YSQ)*(Y+YSQ) RESULT = EXP(-YSQ*YSQ) * EXP(-DEL) * RESULT END IF END IF C------------------------------------------------------------------ C Fix up for negative argument, erf, etc. C------------------------------------------------------------------ 300 IF (JINT .EQ. 0) THEN RESULT = (HALF - RESULT) + HALF IF (X .LT. ZERO) RESULT = -RESULT ELSE IF (JINT .EQ. 1) THEN IF (X .LT. ZERO) RESULT = TWO - RESULT ELSE IF (X .LT. ZERO) THEN IF (X .LT. XNEG) THEN RESULT = XINF ELSE YSQ = AINT(X*SIXTEN)/SIXTEN DEL = (X-YSQ)*(X+YSQ) Y = EXP(YSQ*YSQ) * EXP(DEL) RESULT = (Y+Y) - RESULT END IF END IF END IF 800 RETURN C---------- Last card of CALERF ---------- END CS REAL FUNCTION ERF(X) DOUBLE PRECISION FUNCTION DERF(X) C-------------------------------------------------------------------- C C This subprogram computes approximate values for erf(x). C (see comments heading CALERF). C C Author/date: W. J. Cody, January 8, 1985 C C-------------------------------------------------------------------- INTEGER JINT CS REAL X, RESULT DOUBLE PRECISION X, RESULT C------------------------------------------------------------------ JINT = 0 CALL CALERF(X,RESULT,JINT) CS ERF = RESULT DERF = RESULT RETURN C---------- Last card of DERF ---------- END CS REAL FUNCTION ERFC(X) DOUBLE PRECISION FUNCTION DERFC(X) C-------------------------------------------------------------------- C C This subprogram computes approximate values for erfc(x). C (see comments heading CALERF). C C Author/date: W. J. Cody, January 8, 1985 C C-------------------------------------------------------------------- INTEGER JINT CS REAL X, RESULT DOUBLE PRECISION X, RESULT C------------------------------------------------------------------ JINT = 1 CALL CALERF(X,RESULT,JINT) CS ERFC = RESULT DERFC = RESULT RETURN C---------- Last card of DERFC ---------- END CS REAL FUNCTION ERFCX(X) DOUBLE PRECISION FUNCTION DERFCX(X) C------------------------------------------------------------------ C C This subprogram computes approximate values for exp(x*x) * erfc(x). C (see comments heading CALERF). C C Author/date: W. J. Cody, March 30, 1987 C C------------------------------------------------------------------ INTEGER JINT CS REAL X, RESULT DOUBLE PRECISION X, RESULT C------------------------------------------------------------------ JINT = 2 CALL CALERF(X,RESULT,JINT) CS ERFCX = RESULT DERFCX = RESULT RETURN C---------- Last card of DERFCX ---------- END pymc-2.2+ds/pymc/progressbar.py000066400000000000000000000035641204033704200166050ustar00rootroot00000000000000""" A simple progress bar to monitor MCMC sampling progress. Modified from original code by Corey Goldberg (2010) """ import sys, time try: from IPython.core.display import clear_output have_ipython = True except ImportError: have_ipython = False class ProgressBar: def __init__(self, iterations): self.iterations = iterations self.prog_bar = '[]' self.fill_char = '*' self.width = 40 self.__update_amount(0) if have_ipython: self.animate = self.animate_ipython else: self.animate = self.animate_noipython def animate_noipython(self, iter): if sys.platform.lower().startswith('win'): print self, '\r', else: print self, chr(27) + '[A' self.update_iteration(iter) # time.sleep(0.5) def animate_ipython(self, iter): try: clear_output() except Exception: # terminal IPython has no clear_output pass print '\r', self, sys.stdout.flush() self.update_iteration(iter) def update_iteration(self, elapsed_iter): self.__update_amount((elapsed_iter / float(self.iterations)) * 100.0) self.prog_bar += ' %d of %s complete' % (elapsed_iter, self.iterations) def __update_amount(self, new_amount): percent_done = int(round((new_amount / 100.0) * 100.0)) all_full = self.width - 2 num_hashes = int(round((percent_done / 100.0) * all_full)) self.prog_bar = '[' + self.fill_char * num_hashes + ' ' * (all_full - num_hashes) + ']' pct_place = (len(self.prog_bar) / 2) - len(str(percent_done)) pct_string = '%d%%' % percent_done self.prog_bar = self.prog_bar[0:pct_place] + \ (pct_string + self.prog_bar[pct_place + len(pct_string):]) def __str__(self): return str(self.prog_bar)pymc-2.2+ds/pymc/sandbox/000077500000000000000000000000001204033704200153305ustar00rootroot00000000000000pymc-2.2+ds/pymc/sandbox/DP/000077500000000000000000000000001204033704200156335ustar00rootroot00000000000000pymc-2.2+ds/pymc/sandbox/DP/DP.py000066400000000000000000000271741204033704200165230ustar00rootroot00000000000000__author__ = 'Anand Patil, anand.prabhakar.patil@gmail.com' """ Dirichlet process classes: - DPRealization: A Dirichlet process realization. Based on stick-breaking representation, but step methods should use other representations. Attributes: - atoms: A list containing the atom locations. Methods: - rand(m): Returns m random values. - logp(x): A function returning the log-probability of x. DP: A stochastic valued as a DP realization. DPDraw: A stochastic distributed as a DP object's value. Neal cite: Markov chain random methods for Dirichlet process mixture models. Also study up on Gibbs sampler. This should all be written in Pyrex eventually. Many things are screaming for optimization. The C++ vector class would be helpful too but that would have to be swigged. """ import numpy as np from copy import copy from pymc import * from pymc import six xrange = six.moves.xrange def draws_to_atoms(draws): """ atoms, n = draws_to_atoms(draws) atoms is a list of the unique elements in draws, and n is a list of their corresponding multiplicities. Needs optimization badly I'm sure. """ atoms = [] n = [] for element in np.atleast_1d(draws): match=False for i in xrange(len(atoms)): if all(element == atoms[i]): n[i] += 1 match=True break if not match: atoms.append(element) n.append(1) return atoms, n try: import pylab as pl def plot_atoms(DPr): """ plot_atoms(DPr) Plots the atoms of DP realization DPr. Base measure must be over the real line. """ for pair in zip(DPr.atoms, DPr.n): plot([pair[0], pair[0]], [0,pair[1]], 'k-') except ImportError: pass class DPRealization(object): """ A Dirichlet process realization. This is based on the stick-breaking representation rather than the Chinese restaurant process in order to provide a logp method. Step methods are free to use the Chinese restaurant process, though. Arguments: - basemeas: The base measure. Must be a function which, when called with argument n, returns a value. - nu: The whatever parameter. - draws (optional): DPRealization can be initialized conditional on previous draws. Useful for Gibbs sampling, maybe MH too. - basemeas_params: The parameters of the base measure. Methods: - rand(m): Returns m random values. - logp(x): Returns the log-probability of x. """ def __init__(self, basemeas_rand, nu, draws=[], **basemeas_params): # The base measure and its parameters. self.basemeas_rand = basemeas_rand self.basemeas_params = basemeas_params # The tightness parameter. self.nu = np.float(nu) if len(draws)>0: atoms, n = draws_to_atoms(draws) # The number of draws from each atom. self.n = n # The values of the atoms. self.atoms = atoms # Need to triple-check that this is OK! # The probability masses of the atoms. mass_sofar = rbeta(sum(n), nu) if len(n) > 1: self.mass = list((rdirichlet(n) * mass_sofar).squeeze()) else: self.mass = [mass_sofar] self.mass_sofar = mass_sofar self.mass_prod = 1. for m in self.mass: self.mass_prod *= (1.-m) else: self.n = [] self.atoms = [] self.mass = [] self.mass_sofar = 0. self.mass_prod = 1. def logp(self, value): """ F.logp(x) Returns the log of the probability mass assigned to x. Returns -Inf if x is not in self.atoms; this behavior is fine for continuous base distributions but incorrect for discrete. """ logp_out = 0. value = np.atleast_1d(value) for val_now in value: match=False for i in xrange(len(self.atoms)): if all(val_now == self.atoms[i]): logp_out += log(self.mass[i]) match=True break if not match: return -Inf return logp_out def rand(self, m=1): """ F.rand(m=1) Returns m values from the random probability distribution. """ draws = np.empty(m, dtype=float) for i in xrange(m): # Draw from existing atoms if np.random.random() < self.mass_sofar: atom_index = int(flib.rcat(np.asarray(self.mass) / self.mass_sofar,0,1,1)) new_draw = self.atoms[atom_index] self.n[atom_index] += 1 # Make new atom else: new_draw = self.basemeas_rand(**self.basemeas_params) self.atoms.append(new_draw) self.n.append(1) new_mass = self.mass_prod * rbeta(1, self.nu) self.mass.append(new_mass) self.mass_prod *= 1.-new_mass self.mass_sofar += new_mass draws[i] = new_draw if m==1: draws = draws[0] return draws class DP(Stochastic): """ value: A DP realization. Parents: 'alpha': concentration parameter, 'base': base probability distribution. Base parent must have random() and logp() methods (must be an actual distribution object). Should get intrinsic set of clusters. Step methods will update them with the children. A new value should be created conditional on the intrinsic clusters every time a parent is updated. """ def __init__(self, name, basemeas_rand, basemeas_logp, nu, doc=None, trace=True, value=None, cache_depth=2, plot=False, verbose=0, **basemeas_params): self.basemeas_logp = basemeas_logp self.basemeas_rand = basemeas_rand self.basemeas_params = basemeas_params parents = {} parents['basemeas_logp'] = basemeas_logp parents['basemeas_rand'] = basemeas_rand parents['basemeas_params'] = basemeas_params parents['nu'] = nu def dp_logp_fun(value, **parents): return 0. # raise ValueError, 'DPStochastic objects have no logp attribute' def dp_random_fun(basemeas_logp, basemeas_rand, nu, basemeas_params): return DPRealization(basemeas_rand, nu, **basemeas_params) # If value argument provided, read off intrinsic clusters. # If clusters argument provided, well store them. # If no clusters argument provided, propose from prior all over the place. Stochastic.__init__(self, logp=dp_logp_fun, random=dp_random_fun, doc=doc, name=name, parents=parents, trace=trace, value=value, dtype=np.object, rseed=True, observed=False, cache_depth=cache_depth, plot=plot, verbose=verbose) class DPDraw(Stochastic): """ value: An array of values. May want to hide these in the step method, but many step methods need them so it's probably better to keep them here: N: length of value. N_clusters: number of clusters. clusters: values of clusters, length-N list. cluster_multiplicities: multiplicities of clusters. Note may want to make these things their own Stochastics, in case people want to have Deterministics etc. depending on them or to trace them. Parent: 'dist': a DPStochastic. logp: product of base logp evaluated on each cluster (each cluster appears only once regardless of multiplicity) plus some function of alpha and the number of clusters. """ def __init__( self, name, DP, N=1, doc=None, trace=True, observed=False, cache_depth=2, plot=True, verbose = 0): self.N = N def DP_logp_fun(value, dist): return dist.logp(value) def DP_random_fun(dist): return dist.rand(N) Stochastic.__init__(self, logp = DP_logp_fun, doc=doc, name=name, parents={'dist': DP}, random = DP_random_fun, trace=trace, value=None, dtype=float, rseed=True, observed=observed, cache_depth=cache_depth, plot=plot, verbose = verbose) self.clusters = lam_dtrm('clusters',lambda draws=self: draws_to_atoms(draws)) from numpy.testing import * from pylab import * class test_DP(NumpyTestCase): def check_correspondence(self): x_d = linspace(-5.,5.,1000) dx = x_d[1] - x_d[0] nu = 10 p = nu * dx/sqrt(2.*pi)*exp(-x_d**2) DP_approx = rdirichlet(p).squeeze() DP_approx = hstack((DP_approx, 1.-sum(DP_approx))) true_DP = DPRealization(rnormal, nu, mu=0,tau=1) true_DP.rand(1000) clf() subplot(2,1,1) plot(x_d, DP_approx,'k.',markersize=8) subplot(2,1,2) plot_atoms(true_DP) def check_draws(self): D = DPRealization(rnormal,100,mu=-10,tau=.1) draws = D.rand(1000) clf() hist(draws) def check_stochastics(self): S = DP('S', rnormal,normal_like, 100, mu=10, tau=.1) q = DPDraw('q', S, N=1000) clf() hist(q.value) if __name__=='__main__': NumpyTest().run() """ Note: If you could get a distribution for the multiplicities of the currently- found clusters in a DP, could you give its children a logp attribute? Then you could do something like with the GP: give the DPStochastic an intrinsic set of clusters unrelated to its children, assess its logp using only its intrinsic clusters, etc. Yes, you can easily do this. Give the DP object its intrinsic clusters, and let the step methods treat those as the things that are really participating in the model even though from the user's perspective the entire DP is participating. """ # Old random method # val = [] # N = len(self.atoms) # # # Initialize. Optimization 1: keep running sum. # if N>0: # sum_n = np.sum(self.n) # else: # sum_n = 0 # # float_sumn = np.float(sum_n) # # for i in xrange(m): # # # Optimization 2: update cumulative sum on the fly. # self.tables = np.cumsum(self.n) # # # Maybe draw a new atom # if uniform() > float_sumn / (float_sumn+self.nu): # new_val = self.basemeas_rand(**self.basemeas_params) # self.atoms.append(new_val) # self.n.append(1) # N = N + 1 # # # Otherwise draw from one of the existing algorithms # else: # # Optimization 3: Draw uniforms ahead of time. # # DON'T use the same uniform for checking new atom # # creation AND for finding which old atom to draw from, # # you'll introduce painful bias. # # unif = uniform() * float_sumn # for i in xrange(N): # if unif < self.tables[i]: # new_val = self.atoms[i] # self.n[i] = self.n[i]+1 # break # # float_sumn = float_sumn + 1. # val.append(new_val) # # if m>1: # return array(val, dtype=float) # else: # return val[0] pymc-2.2+ds/pymc/sandbox/DP/DPStepMethods.py000066400000000000000000000015371204033704200206760ustar00rootroot00000000000000__author__ = 'Anand Patil, anand.prabhakar.patil@gmail.com' class DPMetropolis(StepMethod): """ Give DPStochastic a new value conditional on parents and children. Always Gibbs. Easy. The actual DPStochastic is only being traced for future convenience, it doesn't really get used by the step methods. You may want to leave this out of the model for simplicity, and tell users how to get draws for the DP given the trace. Alternatively, you could try to move the logp down here, but that would require a new algorithm. """ pass class DPParentMetropolis(StepMethod): """ Updates stochastics of base distribution and concentration stoch. Very easy: likelihood is DPDraws' logp, propose a new DP to match. """ pass class DPDrawMetropolis(StepMethod): """ Updates DP draws. """ pass pymc-2.2+ds/pymc/sandbox/DP/Docs/000077500000000000000000000000001204033704200165235ustar00rootroot00000000000000pymc-2.2+ds/pymc/sandbox/DP/Docs/DP_documentation.tex000066400000000000000000000047041204033704200225060ustar00rootroot00000000000000\documentclass{manual} \usepackage{fullpage} \usepackage{epsfig} \usepackage{amsfonts} \begin{document} \author{Anand Patil} \title{The Dirichlet process module} \maketitle \tableofcontents \chapter{Introduction} Dirichlet processes are probability distributions \emph{for} probability distributions. A realization from a Dirichlet process is a random probability distribution. DP's are characterized by a `base' probability distribution and a scalar parameter, often called $\nu$. DP realizations are countably infinite sets of point masses, whose locations are independent draws from the base measure. If $\nu$ is large, the DP realization will allocate mass equitably amongst many clusters. If $\nu$ is small, it will tend to place almost all of its mass in one or a handful of clusters. See \textbf{ref}. Make plots. This document describes the classes in the DP module, which can be incorporated in PyMC probability models. The core class is called `DPRealization'. DP realizations strive to emulate mathematical the concept of a random probability distribution as closely as possible. In PyMC, probability distributions are represented by pairs of functions: one which evaluates the log-probability or log-density of values, and one which generates random values. DP realizations provide both of these behaviors via the methods logp and rand. The DP class, which is a subclass of Stochastic, represents Dirichlet process variables. A DP object's value attribute is a DP realization. The DPDraws class, another subclass of Stochastic, represents draws from a Dirichlet process realization. The DP and DPDraws classes allow Dirichlet processes to be incorporated in PyMC probability models. DP objects cannot be handled by the standard step methods because they are valued as probability distributions rather than numbers or vectors. DPDraws objects can be handled by Metropolis step methods, but the acceptance rate will be zero because the step methods would not take into account the point mass locations. Two specialized step methods are provided to handle these classes, DPStepper and DPDrawStepper. They essentially implement the algorithm provided by \textbf{ref}. Many other step methods for Dirichlet processes are available in the literature, please consider contributing your work if you implement one. \chapter{Dirichlet process realizations} \chapter{The DP class} \chapter{The DPDraws class} \chapter{The DPStepper class} \chapter{The DPDrawStepper class} \end{document} pymc-2.2+ds/pymc/sandbox/DP/Docs/fancyhdr.sty000066400000000000000000000345461204033704200210760ustar00rootroot00000000000000% fancyhdr.sty version 1.99d % Fancy headers and footers for LaTeX. % Piet van Oostrum, Dept of Computer Science, University of Utrecht % Padualaan 14, P.O. Box 80.089, 3508 TB Utrecht, The Netherlands % Telephone: +31 30 2532180. Email: piet@cs.ruu.nl % ======================================================================== % LICENCE: This is free software. You are allowed to use and distribute % this software in any way you like. You are also allowed to make modified % versions of it, but you can distribute a modified version only if you % clearly indicate that it is a modified version and the person(s) who % modified it. This indication should be in a prominent place, e.g. in the % top of the file. If possible a contact address, preferably by email, % should be given for these persons. If that is feasible the modifications % should be indicated in the source code. % ======================================================================== % MODIFICATION HISTORY: % Sep 16, 1994 % version 1.4: Correction for use with \reversemargin % Sep 29, 1994: % version 1.5: Added the \iftopfloat, \ifbotfloat and \iffloatpage commands % Oct 4, 1994: % version 1.6: Reset single spacing in headers/footers for use with % setspace.sty or doublespace.sty % Oct 4, 1994: % version 1.7: changed \let\@mkboth\markboth to % \def\@mkboth{\protect\markboth} to make it more robust % Dec 5, 1994: % version 1.8: corrections for amsbook/amsart: define \@chapapp and (more % importantly) use the \chapter/sectionmark definitions from ps@headings if % they exist (which should be true for all standard classes). % May 31, 1995: % version 1.9: The proposed \renewcommand{\headrulewidth}{\iffloatpage... % construction in the doc did not work properly with the fancyplain style. % June 1, 1995: % version 1.91: The definition of \@mkboth wasn't restored on subsequent % \pagestyle{fancy}'s. % June 1, 1995: % version 1.92: The sequence \pagestyle{fancyplain} \pagestyle{plain} % \pagestyle{fancy} would erroneously select the plain version. % June 1, 1995: % version 1.93: \fancypagestyle command added. % Dec 11, 1995: % version 1.94: suggested by Conrad Hughes % CJCH, Dec 11, 1995: added \footruleskip to allow control over footrule % position (old hardcoded value of .3\normalbaselineskip is far too high % when used with very small footer fonts). % Jan 31, 1996: % version 1.95: call \@normalsize in the reset code if that is defined, % otherwise \normalsize. % this is to solve a problem with ucthesis.cls, as this doesn't % define \@currsize. Unfortunately for latex209 calling \normalsize doesn't % work as this is optimized to do very little, so there \@normalsize should % be called. Hopefully this code works for all versions of LaTeX known to % mankind. % April 25, 1996: % version 1.96: initialize \headwidth to a magic (negative) value to catch % most common cases that people change it before calling \pagestyle{fancy}. % Note it can't be initialized when reading in this file, because % \textwidth could be changed afterwards. This is quite probable. % We also switch to \MakeUppercase rather than \uppercase and introduce a % \nouppercase command for use in headers. and footers. % May 3, 1996: % version 1.97: Two changes: % 1. Undo the change in version 1.8 (using the pagestyle{headings} defaults % for the chapter and section marks. The current version of amsbook and % amsart classes don't seem to need them anymore. Moreover the standard % latex classes don't use \markboth if twoside isn't selected, and this is % confusing as \leftmark doesn't work as expected. % 2. include a call to \ps@empty in ps@@fancy. This is to solve a problem % in the amsbook and amsart classes, that make global changes to \topskip, % which are reset in \ps@empty. Hopefully this doesn't break other things. % May 7, 1996: % version 1.98: % Added % after the line \def\nouppercase % May 7, 1996: % version 1.99: This is the alpha version of fancyhdr 2.0 % Introduced the new commands \fancyhead, \fancyfoot, and \fancyhf. % Changed \headrulewidth, \footrulewidth, \footruleskip to % macros rather than length parameters, In this way they can be % conditionalized and they don't consume length registers. There is no need % to have them as length registers unless you want to do calculations with % them, which is unlikely. Note that this may make some uses of them % incompatible (i.e. if you have a file that uses \setlength or \xxxx=) % May 10, 1996: % version 1.99a: % Added a few more % signs % May 10, 1996: % version 1.99b: % Changed the syntax of \f@nfor to be resistent to catcode changes of := % Removed the [1] from the defs of \lhead etc. because the parameter is % consumed by the \@[xy]lhead etc. macros. % June 24, 1997: % version 1.99c: % corrected \nouppercase to also include the protected form of \MakeUppercase % \global added to manipulation of \headwidth. % \iffootnote command added. % Some comments added about \@fancyhead and \@fancyfoot. % Aug 24, 1998 % version 1.99d % Changed the default \ps@empty to \ps@@empty in order to allow % \fancypagestyle{empty} redefinition. \let\fancy@def\gdef \def\if@mpty#1#2#3{\def\temp@ty{#1}\ifx\@empty\temp@ty #2\else#3\fi} % Usage: \@forc \var{charstring}{command to be executed for each char} % This is similar to LaTeX's \@tfor, but expands the charstring. \def\@forc#1#2#3{\expandafter\f@rc\expandafter#1\expandafter{#2}{#3}} \def\f@rc#1#2#3{\def\temp@ty{#2}\ifx\@empty\temp@ty\else \f@@rc#1#2\f@@rc{#3}\fi} \def\f@@rc#1#2#3\f@@rc#4{\def#1{#2}#4\f@rc#1{#3}{#4}} % Usage: \f@nfor\name:=list\do{body} % Like LaTeX's \@for but an empty list is treated as a list with an empty % element \newcommand{\f@nfor}[3]{\edef\@fortmp{#2}% \expandafter\@forloop#2,\@nil,\@nil\@@#1{#3}} % Usage: \def@ult \cs{defaults}{argument} % sets \cs to the characters from defaults appearing in argument % or defaults if it would be empty. All characters are lowercased. \newcommand\def@ult[3]{% \edef\temp@a{\lowercase{\edef\noexpand\temp@a{#3}}}\temp@a \def#1{}% \@forc\tmpf@ra{#2}% {\expandafter\if@in\tmpf@ra\temp@a{\edef#1{#1\tmpf@ra}}{}}% \ifx\@empty#1\def#1{#2}\fi} % % \if@in % \newcommand{\if@in}[4]{% \edef\temp@a{#2}\def\temp@b##1#1##2\temp@b{\def\temp@b{##1}}% \expandafter\temp@b#2#1\temp@b\ifx\temp@a\temp@b #4\else #3\fi} \newcommand{\fancyhead}{\@ifnextchar[{\f@ncyhf h}{\f@ncyhf h[]}} \newcommand{\fancyfoot}{\@ifnextchar[{\f@ncyhf f}{\f@ncyhf f[]}} \newcommand{\fancyhf}{\@ifnextchar[{\f@ncyhf {}}{\f@ncyhf {}[]}} % The header and footer fields are stored in command sequences with % names of the form: \f@ncy with for [eo], form [lcr] % and from [hf]. \def\f@ncyhf#1[#2]#3{% \def\temp@c{}% \@forc\tmpf@ra{#2}% {\expandafter\if@in\tmpf@ra{eolcrhf,EOLCRHF}% {}{\edef\temp@c{\temp@c\tmpf@ra}}}% \ifx\@empty\temp@c\else \ifx\PackageError\undefined \errmessage{Illegal char `\temp@c' in fancyhdr argument: [#2]}\else \PackageError{Fancyhdr}{Illegal char `\temp@c' in fancyhdr argument: [#2]}{}\fi \fi \f@nfor\temp@c{#2}% {\def@ult\f@@@eo{eo}\temp@c \def@ult\f@@@lcr{lcr}\temp@c \def@ult\f@@@hf{hf}{#1\temp@c}% \@forc\f@@eo\f@@@eo {\@forc\f@@lcr\f@@@lcr {\@forc\f@@hf\f@@@hf {\expandafter\fancy@def\csname f@ncy\f@@eo\f@@lcr\f@@hf\endcsname {#3}}}}}} % Fancyheadings version 1 commands. These are more or less deprecated, % but they continue to work. \newcommand{\lhead}{\@ifnextchar[{\@xlhead}{\@ylhead}} \def\@xlhead[#1]#2{\fancy@def\f@ncyelh{#1}\fancy@def\f@ncyolh{#2}} \def\@ylhead#1{\fancy@def\f@ncyelh{#1}\fancy@def\f@ncyolh{#1}} \newcommand{\chead}{\@ifnextchar[{\@xchead}{\@ychead}} \def\@xchead[#1]#2{\fancy@def\f@ncyech{#1}\fancy@def\f@ncyoch{#2}} \def\@ychead#1{\fancy@def\f@ncyech{#1}\fancy@def\f@ncyoch{#1}} \newcommand{\rhead}{\@ifnextchar[{\@xrhead}{\@yrhead}} \def\@xrhead[#1]#2{\fancy@def\f@ncyerh{#1}\fancy@def\f@ncyorh{#2}} \def\@yrhead#1{\fancy@def\f@ncyerh{#1}\fancy@def\f@ncyorh{#1}} \newcommand{\lfoot}{\@ifnextchar[{\@xlfoot}{\@ylfoot}} \def\@xlfoot[#1]#2{\fancy@def\f@ncyelf{#1}\fancy@def\f@ncyolf{#2}} \def\@ylfoot#1{\fancy@def\f@ncyelf{#1}\fancy@def\f@ncyolf{#1}} \newcommand{\cfoot}{\@ifnextchar[{\@xcfoot}{\@ycfoot}} \def\@xcfoot[#1]#2{\fancy@def\f@ncyecf{#1}\fancy@def\f@ncyocf{#2}} \def\@ycfoot#1{\fancy@def\f@ncyecf{#1}\fancy@def\f@ncyocf{#1}} \newcommand{\rfoot}{\@ifnextchar[{\@xrfoot}{\@yrfoot}} \def\@xrfoot[#1]#2{\fancy@def\f@ncyerf{#1}\fancy@def\f@ncyorf{#2}} \def\@yrfoot#1{\fancy@def\f@ncyerf{#1}\fancy@def\f@ncyorf{#1}} \newdimen\headwidth \newcommand{\headrulewidth}{0.4pt} \newcommand{\footrulewidth}{\z@skip} \newcommand{\footruleskip}{.3\normalbaselineskip} % Fancyplain stuff shouldn't be used anymore (rather % \fancypagestyle{plain} should be used), but it must be present for % compatibility reasons. \newcommand{\plainheadrulewidth}{\z@skip} \newcommand{\plainfootrulewidth}{\z@skip} \newif\if@fancyplain \@fancyplainfalse \def\fancyplain#1#2{\if@fancyplain#1\else#2\fi} \headwidth=-123456789sp %magic constant % Command to reset various things in the headers: % a.o. single spacing (taken from setspace.sty) % and the catcode of ^^M (so that epsf files in the header work if a % verbatim crosses a page boundary) % It also defines a \nouppercase command that disables \uppercase and % \Makeuppercase. It can only be used in the headers and footers. \def\fancy@reset{\restorecr \def\baselinestretch{1}% \def\nouppercase##1{{\let\uppercase\relax\let\MakeUppercase\relax \expandafter\let\csname MakeUppercase \endcsname\relax##1}}% \ifx\undefined\@newbaseline% NFSS not present; 2.09 or 2e \ifx\@normalsize\undefined \normalsize % for ucthesis.cls \else \@normalsize \fi \else% NFSS (2.09) present \@newbaseline% \fi} % Initialization of the head and foot text. % The default values still contain \fancyplain for compatibility. \fancyhf{} % clear all % lefthead empty on ``plain'' pages, \rightmark on even, \leftmark on odd pages % evenhead empty on ``plain'' pages, \leftmark on even, \rightmark on odd pages \fancyhead[el,or]{\fancyplain{}{\sl\rightmark}} \fancyhead[er,ol]{\fancyplain{}{\sl\leftmark}} \fancyfoot[c]{\rm\thepage} % page number % Put together a header or footer given the left, center and % right text, fillers at left and right and a rule. % The \lap commands put the text into an hbox of zero size, % so overlapping text does not generate an errormessage. % These macros have 5 parameters: % 1. \@lodd or \@rodd % This determines at which side the header will stick % out. % 2. \f@ncyolh, \f@ncyelh, \f@ncyolf or \f@ncyelf. This is the left component. % 3. \f@ncyoch, \f@ncyech, \f@ncyocf or \f@ncyecf. This is the middle comp. % 4. \f@ncyorh, \f@ncyerh, \f@ncyorf or \f@ncyerf. This is the right component. % 5. \@lodd or \@rodd % This determines at which side the header will stick % out. This is the reverse of parameter nr. 1. One of them is always % \relax and the other one is \hss (after expansion). \def\@fancyhead#1#2#3#4#5{#1\hbox to\headwidth{\fancy@reset\vbox{\hbox {\rlap{\parbox[b]{\headwidth}{\raggedright#2\strut}}\hfill \parbox[b]{\headwidth}{\centering#3\strut}\hfill \llap{\parbox[b]{\headwidth}{\raggedleft#4\strut}}}\headrule}}#5} \def\@fancyfoot#1#2#3#4#5{#1\hbox to\headwidth{\fancy@reset\vbox{\footrule \hbox{\rlap{\parbox[t]{\headwidth}{\raggedright#2\strut}}\hfill \parbox[t]{\headwidth}{\centering#3\strut}\hfill \llap{\parbox[t]{\headwidth}{\raggedleft#4\strut}}}}}#5} \def\headrule{{\if@fancyplain\let\headrulewidth\plainheadrulewidth\fi \hrule\@height\headrulewidth\@width\headwidth \vskip-\headrulewidth}} \def\footrule{{\if@fancyplain\let\footrulewidth\plainfootrulewidth\fi \vskip-\footruleskip\vskip-\footrulewidth \hrule\@width\headwidth\@height\footrulewidth\vskip\footruleskip}} \def\ps@fancy{% \@ifundefined{@chapapp}{\let\@chapapp\chaptername}{}%for amsbook % % Define \MakeUppercase for old LaTeXen. % Note: we used \def rather than \let, so that \let\uppercase\relax (from % the version 1 documentation) will still work. % \@ifundefined{MakeUppercase}{\def\MakeUppercase{\uppercase}}{}% \@ifundefined{chapter}{\def\sectionmark##1{\markboth {\MakeUppercase{\ifnum \c@secnumdepth>\z@ \thesection\hskip 1em\relax \fi ##1}}{}}% \def\subsectionmark##1{\markright {\ifnum \c@secnumdepth >\@ne \thesubsection\hskip 1em\relax \fi ##1}}}% {\def\chaptermark##1{\markboth {\MakeUppercase{\ifnum \c@secnumdepth>\m@ne \@chapapp\ \thechapter. \ \fi ##1}}{}}% \def\sectionmark##1{\markright{\MakeUppercase{\ifnum \c@secnumdepth >\z@ \thesection. \ \fi ##1}}}}% %\csname ps@headings\endcsname % use \ps@headings defaults if they exist \ps@@fancy \gdef\ps@fancy{\@fancyplainfalse\ps@@fancy}% % Initialize \headwidth if the user didn't % \ifdim\headwidth<0sp % % This catches the case that \headwidth hasn't been initialized and the % case that the user added something to \headwidth in the expectation that % it was initialized to \textwidth. We compensate this now. This loses if % the user intended to multiply it by a factor. But that case is more % likely done by saying something like \headwidth=1.2\textwidth. % The doc says you have to change \headwidth after the first call to % \pagestyle{fancy}. This code is just to catch the most common cases were % that requirement is violated. % \global\advance\headwidth123456789sp\global\advance\headwidth\textwidth \fi} \def\ps@fancyplain{\ps@fancy \let\ps@plain\ps@plain@fancy} \def\ps@plain@fancy{\@fancyplaintrue\ps@@fancy} \let\ps@@empty\ps@empty \def\ps@@fancy{% \ps@@empty % This is for amsbook/amsart, which do strange things with \topskip \def\@mkboth{\protect\markboth}% \def\@oddhead{\@fancyhead\@lodd\f@ncyolh\f@ncyoch\f@ncyorh\@rodd}% \def\@oddfoot{\@fancyfoot\@lodd\f@ncyolf\f@ncyocf\f@ncyorf\@rodd}% \def\@evenhead{\@fancyhead\@rodd\f@ncyelh\f@ncyech\f@ncyerh\@lodd}% \def\@evenfoot{\@fancyfoot\@rodd\f@ncyelf\f@ncyecf\f@ncyerf\@lodd}% } \def\@lodd{\if@reversemargin\hss\else\relax\fi} \def\@rodd{\if@reversemargin\relax\else\hss\fi} \newif\iffootnote \let\latex@makecol\@makecol \def\@makecol{\ifvoid\footins\footnotetrue\else\footnotefalse\fi \let\topfloat\@toplist\let\botfloat\@botlist\latex@makecol} \def\iftopfloat#1#2{\ifx\topfloat\empty #2\else #1\fi} \def\ifbotfloat#1#2{\ifx\botfloat\empty #2\else #1\fi} \def\iffloatpage#1#2{\if@fcolmade #1\else #2\fi} \newcommand{\fancypagestyle}[2]{% \@namedef{ps@#1}{\let\fancy@def\def#2\relax\ps@fancy}} pymc-2.2+ds/pymc/sandbox/DP/Docs/fncychap.sty000066400000000000000000000241271204033704200210650ustar00rootroot00000000000000%%% Derived from the original fncychap.sty, %%% but changed ``TWELV'' to ``TWELVE''. %%% Copyright Ulf A. Lindgren %%% Department of Applied Electronics %%% Chalmers University of Technology %%% S-412 96 Gothenburg, Sweden %%% E-mail lindgren@ae.chalmers.se %%% %%% Note Permission is granted to modify this file under %%% the condition that it is saved using another %%% file and package name. %%% %%% Revision 1.1 %%% %%% Jan. 8th Modified package name base date option %%% Jan. 22th Modified FmN and FmTi for error in book.cls %%% \MakeUppercase{#}->{\MakeUppercase#} %%% Apr. 6th Modified Lenny option to prevent undesired %%% skip of line. %%% Nov. 8th Fixed \@chapapp for AMS %%% Feb. 11th Fixed appendix problem related to Bjarne %%% Last modified Feb. 11th 1998 \NeedsTeXFormat{LaTeX2e}[1995/12/01] \ProvidesPackage{fncychap} [1997/04/06 v1.11 LaTeX package (Revised chapters)] %%%% DEFINITION OF Chapapp variables \newcommand{\CNV}{\huge\bfseries} \newcommand{\ChNameVar}[1]{\renewcommand{\CNV}{#1}} %%%% DEFINITION OF TheChapter variables \newcommand{\CNoV}{\huge\bfseries} \newcommand{\ChNumVar}[1]{\renewcommand{\CNoV}{#1}} \newif\ifUCN \UCNfalse \newif\ifLCN \LCNfalse \def\ChNameLowerCase{\LCNtrue\UCNfalse} \def\ChNameUpperCase{\UCNtrue\LCNfalse} \def\ChNameAsIs{\UCNfalse\LCNfalse} %%%%% Fix for AMSBook 971008 \@ifundefined{@chapapp}{\let\@chapapp\chaptername}{} %%%%% Fix for Bjarne and appendix 980211 \newif\ifinapp \inappfalse \renewcommand\appendix{\par \setcounter{chapter}{0}% \setcounter{section}{0}% \inapptrue% \renewcommand\@chapapp{\appendixname}% \renewcommand\thechapter{\@Alph\c@chapter}} %%%%% \newcommand{\FmN}[1]{% \ifUCN {\MakeUppercase#1}\LCNfalse \else \ifLCN {\MakeLowercase#1}\UCNfalse \else #1 \fi \fi} %%%% DEFINITION OF Title variables \newcommand{\CTV}{\Huge\bfseries} \newcommand{\ChTitleVar}[1]{\renewcommand{\CTV}{#1}} %%%% DEFINITION OF the basic rule width \newlength{\RW} \setlength{\RW}{1pt} \newcommand{\ChRuleWidth}[1]{\setlength{\RW}{#1}} \newif\ifUCT \UCTfalse \newif\ifLCT \LCTfalse \def\ChTitleLowerCase{\LCTtrue\UCTfalse} \def\ChTitleUpperCase{\UCTtrue\LCTfalse} \def\ChTitleAsIs{\UCTfalse\LCTfalse} \newcommand{\FmTi}[1]{% \ifUCT {\MakeUppercase#1}\LCTfalse \else \ifLCT {\MakeLowercase#1}\UCTfalse \else #1 \fi \fi} \newlength{\mylen} \newlength{\myhi} \newlength{\px} \newlength{\py} \newlength{\pyy} \newlength{\pxx} \def\mghrulefill#1{\leavevmode\leaders\hrule\@height #1\hfill\kern\z@} \newcommand{\DOCH}{% \CNV\FmN{\@chapapp}\space \CNoV\thechapter \par\nobreak \vskip 20\p@ } \newcommand{\DOTI}[1]{% \CTV\FmTi{#1}\par\nobreak \vskip 40\p@ } \newcommand{\DOTIS}[1]{% \CTV\FmTi{#1}\par\nobreak \vskip 40\p@ } %%%%%% SONNY DEF \DeclareOption{Sonny}{% \ChNameVar{\Large\sf} \ChNumVar{\Huge} \ChTitleVar{\Large\sf} \ChRuleWidth{0.5pt} \ChNameUpperCase \renewcommand{\DOCH}{% \raggedleft \CNV\FmN{\@chapapp}\space \CNoV\thechapter \par\nobreak \vskip 40\p@} \renewcommand{\DOTI}[1]{% \CTV\raggedleft\mghrulefill{\RW}\par\nobreak \vskip 5\p@ \CTV\FmTi{#1}\par\nobreak \mghrulefill{\RW}\par\nobreak \vskip 40\p@} \renewcommand{\DOTIS}[1]{% \CTV\raggedleft\mghrulefill{\RW}\par\nobreak \vskip 5\p@ \CTV\FmTi{#1}\par\nobreak \mghrulefill{\RW}\par\nobreak \vskip 40\p@} } %%%%%% LENNY DEF \DeclareOption{Lenny}{% \ChNameVar{\fontsize{14}{16}\usefont{OT1}{phv}{m}{n}\selectfont} \ChNumVar{\fontsize{60}{62}\usefont{OT1}{ptm}{m}{n}\selectfont} \ChTitleVar{\Huge\bfseries\rm} \ChRuleWidth{1pt} \renewcommand{\DOCH}{% \settowidth{\px}{\CNV\FmN{\@chapapp}} \addtolength{\px}{2pt} \settoheight{\py}{\CNV\FmN{\@chapapp}} \addtolength{\py}{1pt} \settowidth{\mylen}{\CNV\FmN{\@chapapp}\space\CNoV\thechapter} \addtolength{\mylen}{1pt} \settowidth{\pxx}{\CNoV\thechapter} \addtolength{\pxx}{-1pt} \settoheight{\pyy}{\CNoV\thechapter} \addtolength{\pyy}{-2pt} \setlength{\myhi}{\pyy} \addtolength{\myhi}{-1\py} \par \parbox[b]{\textwidth}{% \rule[\py]{\RW}{\myhi}% \hskip -\RW% \rule[\pyy]{\px}{\RW}% \hskip -\px% \raggedright% \CNV\FmN{\@chapapp}\space\CNoV\thechapter% \hskip1pt% \mghrulefill{\RW}% \rule{\RW}{\pyy}\par\nobreak% \vskip -\baselineskip% \vskip -\pyy% \hskip \mylen% \mghrulefill{\RW}\par\nobreak% \vskip \pyy}% \vskip 20\p@} \renewcommand{\DOTI}[1]{% \raggedright \CTV\FmTi{#1}\par\nobreak \vskip 40\p@} \renewcommand{\DOTIS}[1]{% \raggedright \CTV\FmTi{#1}\par\nobreak \vskip 40\p@} } %%%%%%% GLENN DEF \DeclareOption{Glenn}{% \ChNameVar{\bfseries\Large\sf} \ChNumVar{\Huge} \ChTitleVar{\bfseries\Large\rm} \ChRuleWidth{1pt} \ChNameUpperCase \ChTitleUpperCase \renewcommand{\DOCH}{% \settoheight{\myhi}{\CTV\FmTi{Test}} \setlength{\py}{\baselineskip} \addtolength{\py}{\RW} \addtolength{\py}{\myhi} \setlength{\pyy}{\py} \addtolength{\pyy}{-1\RW} \raggedright \CNV\FmN{\@chapapp}\space\CNoV\thechapter \hskip 3pt\mghrulefill{\RW}\rule[-1\pyy]{2\RW}{\py}\par\nobreak} \renewcommand{\DOTI}[1]{% \addtolength{\pyy}{-4pt} \settoheight{\myhi}{\CTV\FmTi{#1}} \addtolength{\myhi}{\py} \addtolength{\myhi}{-1\RW} \vskip -1\pyy \rule{2\RW}{\myhi}\mghrulefill{\RW}\hskip 2pt \raggedleft\CTV\FmTi{#1}\par\nobreak \vskip 80\p@} \renewcommand{\DOTIS}[1]{% \setlength{\py}{10pt} \setlength{\pyy}{\py} \addtolength{\pyy}{\RW} \setlength{\myhi}{\baselineskip} \addtolength{\myhi}{\pyy} \mghrulefill{\RW}\rule[-1\py]{2\RW}{\pyy}\par\nobreak % \addtolength{}{} \vskip -1\baselineskip \rule{2\RW}{\myhi}\mghrulefill{\RW}\hskip 2pt \raggedleft\CTV\FmTi{#1}\par\nobreak \vskip 60\p@} } %%%%%%% CONNY DEF \DeclareOption{Conny}{% \ChNameUpperCase \ChTitleUpperCase \ChNameVar{\centering\Huge\rm\bfseries} \ChNumVar{\Huge} \ChTitleVar{\centering\Huge\rm} \ChRuleWidth{2pt} \renewcommand{\DOCH}{% \mghrulefill{3\RW}\par\nobreak \vskip -0.5\baselineskip \mghrulefill{\RW}\par\nobreak \CNV\FmN{\@chapapp}\space \CNoV\thechapter \par\nobreak \vskip -0.5\baselineskip } \renewcommand{\DOTI}[1]{% \mghrulefill{\RW}\par\nobreak \CTV\FmTi{#1}\par\nobreak \vskip 60\p@ } \renewcommand{\DOTIS}[1]{% \mghrulefill{\RW}\par\nobreak \CTV\FmTi{#1}\par\nobreak \vskip 60\p@ } } %%%%%%% REJNE DEF \DeclareOption{Rejne}{% \ChNameUpperCase \ChTitleUpperCase \ChNameVar{\centering\Large\rm} \ChNumVar{\Huge} \ChTitleVar{\centering\Huge\rm} \ChRuleWidth{1pt} \renewcommand{\DOCH}{% \settoheight{\py}{\CNoV\thechapter} \addtolength{\py}{-1pt} \CNV\FmN{\@chapapp}\par\nobreak \vskip 20\p@ \setlength{\myhi}{2\baselineskip} \setlength{\px}{\myhi} \addtolength{\px}{-1\RW} \rule[-1\px]{\RW}{\myhi}\mghrulefill{\RW}\hskip 10pt\raisebox{-0.5\py}{\CNoV\thechapter}\hskip 10pt\mghrulefill{\RW}\rule[-1\px]{\RW}{\myhi}\par\nobreak \vskip -1\p@ } \renewcommand{\DOTI}[1]{% \setlength{\mylen}{\textwidth} \addtolength{\mylen}{-2\RW} {\vrule width\RW}\parbox{\mylen}{\CTV\FmTi{#1}}{\vrule width\RW}\par\nobreak \vskip -1pt\rule{\RW}{2\baselineskip}\mghrulefill{\RW}\rule{\RW}{2\baselineskip} \vskip 60\p@ } \renewcommand{\DOTIS}[1]{% \setlength{\py}{\fboxrule} \setlength{\fboxrule}{\RW} \setlength{\mylen}{\textwidth} \addtolength{\mylen}{-2\RW} \fbox{\parbox{\mylen}{\vskip 2\baselineskip\CTV\FmTi{#1}\par\nobreak\vskip \baselineskip}} \setlength{\fboxrule}{\py} \vskip 60\p@ } } %%%%%%% BJARNE DEF \DeclareOption{Bjarne}{% \ChNameUpperCase \ChTitleUpperCase \ChNameVar{\raggedleft\normalsize\rm} \ChNumVar{\raggedleft \bfseries\Large} \ChTitleVar{\raggedleft \Large\rm} \ChRuleWidth{1pt} %% Note thechapter -> c@chapter fix appendix bug \newcounter{AlphaCnt} \newcounter{AlphaDecCnt} \newcommand{\AlphaNo}{% \ifcase\number\theAlphaCnt \ifnum\c@chapter=0 ZERO\else{}\fi \or ONE\or TWO\or THREE\or FOUR\or FIVE \or SIX\or SEVEN\or EIGHT\or NINE\or TEN \or ELEVEN\or TWELVE\or THIRTEEN\or FOURTEEN\or FIFTEEN \or SIXTEEN\or SEVENTEEN\or EIGHTEEN\or NINETEEN\fi } \newcommand{\AlphaDecNo}{% \setcounter{AlphaDecCnt}{0} \@whilenum\number\theAlphaCnt>0\do {\addtocounter{AlphaCnt}{-10} \addtocounter{AlphaDecCnt}{1}} \ifnum\number\theAlphaCnt=0 \else \addtocounter{AlphaDecCnt}{-1} \addtocounter{AlphaCnt}{10} \fi \ifcase\number\theAlphaDecCnt\or TEN\or TWENTY\or THIRTY\or FORTY\or FIFTY\or SIXTY\or SEVENTY\or EIGHTY\or NINETY\fi } \newcommand{\TheAlphaChapter}{% \ifinapp \thechapter \else \setcounter{AlphaCnt}{\c@chapter} \ifnum\c@chapter<20 \AlphaNo \else \AlphaDecNo\AlphaNo \fi \fi } \renewcommand{\DOCH}{% \mghrulefill{\RW}\par\nobreak \CNV\FmN{\@chapapp}\par\nobreak \CNoV\TheAlphaChapter\par\nobreak \vskip -1\baselineskip\vskip 5pt\mghrulefill{\RW}\par\nobreak \vskip 20\p@ } \renewcommand{\DOTI}[1]{% \CTV\FmTi{#1}\par\nobreak \vskip 40\p@ } \renewcommand{\DOTIS}[1]{% \CTV\FmTi{#1}\par\nobreak \vskip 40\p@ } } \DeclareOption*{% \PackageWarning{fancychapter}{unknown style option} } \ProcessOptions* \relax \def\@makechapterhead#1{% \vspace*{50\p@}% {\parindent \z@ \raggedright \normalfont \ifnum \c@secnumdepth >\m@ne \DOCH \fi \interlinepenalty\@M \DOTI{#1} }} \def\@schapter#1{\if@twocolumn \@topnewpage[\@makeschapterhead{#1}]% \else \@makeschapterhead{#1}% \@afterheading \fi} \def\@makeschapterhead#1{% \vspace*{50\p@}% {\parindent \z@ \raggedright \normalfont \interlinepenalty\@M \DOTIS{#1} \vskip 40\p@ }} \endinput pymc-2.2+ds/pymc/sandbox/DP/Docs/ltxmarkup.sty000066400000000000000000000023111204033704200213100ustar00rootroot00000000000000% Created by Fred L. Drake, Jr. , as part of the % Python Documentation Project. % % Define some simple markup for the LaTeX command documentation: \ProvidesPackage{ltxmarkup} \RequirePackage{python} % fulllineitems environment % These two macros are used in constructing the last parameter to the % envdesc and macrodesc environments. \newcommand{\py@ltx@optparam}[1]{{[}\var{#1}{]}} \newcommand{\py@ltx@param}[1]{\{\var{#1}\}} \newenvironment{envdesc}[2]{ \begin{fulllineitems} \item[\code{\e begin\{{\bfseries #1}\}{% \let\op=\py@ltx@optparam% \let\p=\py@ltx@param% \let\unspecified=\py@unspecified% \let\moreargs=\py@moreargs% #2}}] \item[\code{\e end\{{\bfseries #1}\}}] \index{#1 environment@\py@idxcode{#1} environment} \index{environments!#1@\py@idxcode{#1}} }{\end{fulllineitems}} \newenvironment{macrodesc}[2]{ \begin{fulllineitems} \item[\code{{\e\bfseries#1}{% \let\op=\py@ltx@optparam% \let\p=\py@ltx@param% \let\unspecified=\py@unspecified% \let\moreargs=\py@moreargs% #2}}] \index{#1@\py@idxcode{#1}} }{\end{fulllineitems}} \newcommand{\env}[1]{\code{#1}} \newcommand{\macro}[1]{\code{\e#1}} pymc-2.2+ds/pymc/sandbox/DP/Docs/manual.cls000066400000000000000000000106001204033704200205000ustar00rootroot00000000000000% % manual.cls for the Python documentation % \NeedsTeXFormat{LaTeX2e}[1995/12/01] \ProvidesClass{manual} [1998/03/03 Document class (Python manual)] \RequirePackage{pypaper} \RequirePackage{fancybox} % Change the options here to get a different set of basic options, but only % if you have to. Paper and font size should be adjusted in pypaper.sty. % \LoadClass[\py@paper,\py@ptsize,twoside,openright]{report} \setcounter{secnumdepth}{2} % Optional packages: % % If processing of these documents fails at your TeX installation, % these may be commented out (independently) to make things work. % These are both supplied with the current version of the teTeX % distribution. % % The "fancyhdr" package makes nicer page footers reasonable to % implement, and is used to put the chapter and section information in % the footers. % \RequirePackage{fancyhdr}\typeout{Using fancier footers than usual.} % Required packages: % % The "fncychap" package is used to get the nice chapter headers. The % .sty file is distributed with Python, so you should not need to disable % it. You'd also end up with a mixed page style; uglier than stock LaTeX! % \RequirePackage[Bjarne]{fncychap}\typeout{Using fancy chapter headings.} % Do horizontal rules it this way to match: \newcommand{\py@doHorizontalRule}{\mghrulefill{\RW}} % % % This gives us all the Python-specific markup that we really want. % This should come last. Do not change this. % \RequirePackage{python} % support for module synopsis sections: \newcommand{\py@ModSynopsisFilename}{\jobname\thechapter.syn} \let\py@OldChapter=\chapter \renewcommand{\chapter}{ \py@ProcessModSynopsis \py@closeModSynopsisFile \py@OldChapter } % Change the title page to look a bit better, and fit in with the % fncychap ``Bjarne'' style a bit better. % \renewcommand{\maketitle}{% \begin{titlepage}% \let\footnotesize\small \let\footnoterule\relax \py@doHorizontalRule% \ifpdf \begingroup % This \def is required to deal with multi-line authors; it % changes \\ to ', ' (comma-space), making it pass muster for % generating document info in the PDF file. \def\\{, } \pdfinfo{ /Author (\@author) /Title (\@title) } \endgroup \fi \begin{flushright}% {\rm\Huge\py@HeaderFamily \@title \par}% {\em\LARGE\py@HeaderFamily \py@release\releaseinfo \par} \vfill {\LARGE\py@HeaderFamily \@author \par} \vfill\vfill {\large \@date \par \vfill \py@authoraddress \par }% \end{flushright}%\par \@thanks \end{titlepage}% \setcounter{footnote}{0}% \let\thanks\relax\let\maketitle\relax \gdef\@thanks{}\gdef\@author{}\gdef\@title{} } % Catch the end of the {abstract} environment, but here make sure the % abstract is followed by a blank page if the 'openright' option is used. % \let\py@OldEndAbstract=\endabstract \renewcommand{\endabstract}{ \if@openright \ifodd\value{page} \typeout{Adding blank page after the abstract.} \vfil\pagebreak \fi \fi \py@OldEndAbstract } % This wraps the \tableofcontents macro with all the magic to get the % spacing right and have the right number of pages if the 'openright' % option has been used. This eliminates a fair amount of crud in the % individual document files. % \let\py@OldTableofcontents=\tableofcontents \renewcommand{\tableofcontents}{% \setcounter{page}{1}% \pagebreak% \pagestyle{plain}% {% \parskip = 0mm% \py@OldTableofcontents% \if@openright% \ifodd\value{page}% \typeout{Adding blank page after the table of contents.}% \pagebreak\hspace{0pt}% \fi% \fi% \cleardoublepage% }% \pagenumbering{arabic}% \@ifundefined{fancyhf}{}{\pagestyle{normal}}% \py@doing@page@targetstrue% } % This is needed to get the width of the section # area wide enough in the % library reference. Doing it here keeps it the same for all the manuals. % \renewcommand*\l@section{\@dottedtocline{1}{1.5em}{2.6em}} \renewcommand*\l@subsection{\@dottedtocline{2}{4.1em}{3.5em}} \setcounter{tocdepth}{1} % Fix the theindex environment to add an entry to the Table of % Contents; this is much nicer than just having to jump to the end of % the book and flip around, especially with multiple indexes. % \let\py@OldTheindex=\theindex \renewcommand{\theindex}{ \cleardoublepage \py@OldTheindex \addcontentsline{toc}{chapter}{\indexname} } pymc-2.2+ds/pymc/sandbox/DP/Docs/pypaper.sty000066400000000000000000000011241204033704200207420ustar00rootroot00000000000000% % Change this to say a4paper instead of letterpaper if you want A4. These % are the latex defaults. % \newcommand{\py@paper}{letterpaper} \newcommand{\py@ptsize}{10pt} % These set up the fonts for the documents. % % The "times" package makes the default font the PostScript Times % font, which makes for smaller PostScript and a font that more people % like. % % The "avant" package causes the AvantGarde font to be used for % sans-serif text, instead of the uglier Helvetica set up by the "times" % package. % \RequirePackage{times}\typeout{Using Times instead of Computer Modern.} pymc-2.2+ds/pymc/sandbox/DP/Docs/python.ist000066400000000000000000000003341204033704200205650ustar00rootroot00000000000000line_max 100 headings_flag 1 heading_prefix " \\bigletter " preamble "\\begin{theindex} \\def\\bigletter#1{{\\Large\\sffamily#1}\\nopagebreak\\vspace{1mm}} " symhead_positive "{Symbols}" numhead_positive "{Numbers}" pymc-2.2+ds/pymc/sandbox/DP/Docs/python.sty000066400000000000000000001203051204033704200206060ustar00rootroot00000000000000% % python.sty for the Python docummentation [works only with Latex2e] % \NeedsTeXFormat{LaTeX2e}[1995/12/01] \ProvidesPackage{python} [1998/01/11 LaTeX package (Python markup)] \RequirePackage{longtable} \RequirePackage{underscore} % Uncomment these two lines to ignore the paper size and make the page % size more like a typical published manual. %\renewcommand{\paperheight}{9in} %\renewcommand{\paperwidth}{8.5in} % typical squarish manual %\renewcommand{\paperwidth}{7in} % O'Reilly ``Programmming Python'' % These packages can be used to add marginal annotations which indicate % index entries and labels; useful for reviewing this messy documentation! % %\RequirePackage{showkeys} %\RequirePackage{showidx} % If we ever want to indent paragraphs, this needs to be changed. % This is used inside the macros defined here instead of coding % \noindent directly. \let\py@parindent=\noindent % for PDF output, use maximal compression & a lot of other stuff % (test for PDF recommended by Tanmoy Bhattacharya ) % \newif\ifpy@doing@page@targets \py@doing@page@targetsfalse \newif\ifpdf\pdffalse \ifx\pdfoutput\undefined\else\ifcase\pdfoutput \else \pdftrue \input{pdfcolor} \let\py@LinkColor=\NavyBlue \let\py@NormalColor=\Black \pdfcompresslevel=9 \pdfpagewidth=\paperwidth % page width of PDF output \pdfpageheight=\paperheight % page height of PDF output % % Pad the number with '0' to 3 digits wide so no page name is a prefix % of any other. % \newcommand{\py@targetno}[1]{\ifnum#1<100 0\fi\ifnum#1<10 0\fi#1} \newcommand{\py@pageno}{\py@targetno\thepage} % % This definition allows the entries in the page-view of the ToC to be % active links. Some work, some don't. % \let\py@OldContentsline=\contentsline % % Backward compatibility hack: pdfTeX 0.13 defined \pdfannotlink, % but it changed to \pdfstartlink in 0.14. This let's us use either % version and still get useful behavior. % \@ifundefined{pdfstartlink}{ \let\pdfstartlink=\pdfannotlink }{} % % The \py@parindent here is a hack -- we're forcing pdfTeX into % horizontal mode since \pdfstartlink requires that. \def\py@pdfstartlink{% \ifvmode\py@parindent\fi% \pdfstartlink% } % % Macro that takes two args: the name to link to and the content of % the link. This takes care of the PDF magic, getting the colors % the same for each link, and avoids having lots of garbage all over % this style file. \newcommand{\py@linkToName}[2]{% \py@pdfstartlink attr{/Border [0 0 0]} goto name{#1}% \py@LinkColor#2\py@NormalColor% \pdfendlink% } % Compute the padded page number separately since we end up with a pair of % \relax tokens; this gets the right string computed and works. \renewcommand{\contentsline}[3]{% \def\my@pageno{\py@targetno{#3}}% \py@OldContentsline{#1}{\py@linkToName{page\my@pageno}{#2}}{#3}% } \AtEndDocument{ \def\_{\string_} \InputIfFileExists{\jobname.bkm}{\pdfcatalog{/PageMode /UseOutlines}}{} } \newcommand{\py@target}[1]{% \ifpy@doing@page@targets% {\pdfdest name{#1} xyz}% \fi% } \let\py@OldLabel=\label \renewcommand{\label}[1]{% \py@OldLabel{#1}% \py@target{label-#1}% } % This stuff adds a page# destination to every PDF page, where # is three % digits wide, padded with leading zeros. This doesn't really help with % the frontmatter, but does fine with the body. % % This is *heavily* based on the hyperref package. % \def\@begindvi{% \unvbox \@begindvibox \@hyperfixhead } \def\@hyperfixhead{% \let\H@old@thehead\@thehead \global\def\@foo{\py@target{page\py@pageno}}% \expandafter\ifx\expandafter\@empty\H@old@thehead \def\H@old@thehead{\hfil}\fi \def\@thehead{\@foo\relax\H@old@thehead}% } \fi\fi % Increase printable page size (copied from fullpage.sty) \topmargin 0pt \advance \topmargin by -\headheight \advance \topmargin by -\headsep % attempt to work a little better for A4 users \textheight \paperheight \advance\textheight by -2in \oddsidemargin 0pt \evensidemargin 0pt %\evensidemargin -.25in % for ``manual size'' documents \marginparwidth 0.5in \textwidth \paperwidth \advance\textwidth by -2in % Style parameters and macros used by most documents here \raggedbottom \sloppy \parindent = 0mm \parskip = 2mm \hbadness = 5000 % don't print trivial gripes \pagestyle{empty} % start this way; change for \pagenumbering{roman} % ToC & chapters % Use this to set the font family for headers and other decor: \newcommand{\py@HeaderFamily}{\sffamily} % Set up abstract ways to get the normal and smaller font sizes that % work even in footnote context. \newif\ifpy@infootnote \py@infootnotefalse \let\py@oldmakefntext\@makefntext \def\@makefntext#1{% \bgroup% \py@infootnotetrue \py@oldmakefntext{#1}% \egroup% } \def\py@defaultsize{% \ifpy@infootnote\footnotesize\else\normalsize\fi% } \def\py@smallsize{% \ifpy@infootnote\scriptsize\else\small\fi% } % Redefine the 'normal' header/footer style when using "fancyhdr" package: \@ifundefined{fancyhf}{}{ % Use \pagestyle{normal} as the primary pagestyle for text. \fancypagestyle{normal}{ \fancyhf{} \fancyfoot[LE,RO]{{\py@HeaderFamily\thepage}} \fancyfoot[LO]{{\py@HeaderFamily\nouppercase{\rightmark}}} \fancyfoot[RE]{{\py@HeaderFamily\nouppercase{\leftmark}}} \renewcommand{\headrulewidth}{0pt} \renewcommand{\footrulewidth}{0.4pt} } % Update the plain style so we get the page number & footer line, % but not a chapter or section title. This is to keep the first % page of a chapter and the blank page between chapters `clean.' \fancypagestyle{plain}{ \fancyhf{} \fancyfoot[LE,RO]{{\py@HeaderFamily\thepage}} \renewcommand{\headrulewidth}{0pt} \renewcommand{\footrulewidth}{0.4pt} } % Redefine \cleardoublepage so that the blank page between chapters % gets the plain style and not the fancy style. This is described % in the documentation for the fancyhdr package by Piet von Oostrum. \@ifundefined{chapter}{}{ \renewcommand{\cleardoublepage}{ \clearpage\if@openright \ifodd\c@page\else \hbox{} \thispagestyle{plain} \newpage \if@twocolumn\hbox{}\newpage\fi\fi\fi } } } % This sets up the {verbatim} environment to be indented and a minipage, % and to have all the other mostly nice properties that we want for % code samples. \let\py@OldVerbatim=\verbatim \let\py@OldEndVerbatim=\endverbatim \RequirePackage{verbatim} \let\py@OldVerbatimInput=\verbatiminput % Variable used by begin code command \newlength{\py@codewidth} \renewcommand{\verbatim}{% \setlength{\parindent}{1cm}% % Calculate the text width for the minipage: \setlength{\py@codewidth}{\linewidth}% \addtolength{\py@codewidth}{-\parindent}% % \par\indent% \begin{minipage}[t]{\py@codewidth}% \small% \py@OldVerbatim% } \renewcommand{\endverbatim}{% \py@OldEndVerbatim% \end{minipage}% } \renewcommand{\verbatiminput}[1]{% {\setlength{\parindent}{1cm}% % Calculate the text width for the minipage: \setlength{\py@codewidth}{\linewidth}% \addtolength{\py@codewidth}{-\parindent}% % \small% \begin{list}{}{\setlength{\leftmargin}{1cm}} \item% \py@OldVerbatimInput{#1}% \end{list} }% } % This does a similar thing for the {alltt} environment: \RequirePackage{alltt} \let\py@OldAllTT=\alltt \let\py@OldEndAllTT=\endalltt \renewcommand{\alltt}{% \setlength{\parindent}{1cm}% % Calculate the text width for the minipage: \setlength{\py@codewidth}{\linewidth}% \addtolength{\py@codewidth}{-\parindent}% \let\e=\textbackslash% % \par\indent% \begin{minipage}[t]{\py@codewidth}% \small% \py@OldAllTT% } \renewcommand{\endalltt}{% \py@OldEndAllTT% \end{minipage}% } \newcommand{\py@modulebadkey}{{--just-some-junk--}} %% Lots of index-entry generation support. % Command to wrap around stuff that refers to function / module / % attribute names in the index. Default behavior: like \code{}. To % just keep the index entries in the roman font, uncomment the second % definition; it matches O'Reilly style more. % \newcommand{\py@idxcode}[1]{\texttt{#1}} %\renewcommand{\py@idxcode}[1]{#1} % Command to generate two index entries (using subentries) \newcommand{\indexii}[2]{\index{#1!#2}\index{#2!#1}} % And three entries (using only one level of subentries) \newcommand{\indexiii}[3]{\index{#1!#2 #3}\index{#2!#3, #1}\index{#3!#1 #2}} % And four (again, using only one level of subentries) \newcommand{\indexiv}[4]{ \index{#1!#2 #3 #4} \index{#2!#3 #4, #1} \index{#3!#4, #1 #2} \index{#4!#1 #2 #3} } % Command to generate a reference to a function, statement, keyword, % operator. \newcommand{\kwindex}[1]{\indexii{keyword}{#1@{\py@idxcode{#1}}}} \newcommand{\stindex}[1]{\indexii{statement}{#1@{\py@idxcode{#1}}}} \newcommand{\opindex}[1]{\indexii{operator}{#1@{\py@idxcode{#1}}}} \newcommand{\exindex}[1]{\indexii{exception}{#1@{\py@idxcode{#1}}}} \newcommand{\obindex}[1]{\indexii{object}{#1}} \newcommand{\bifuncindex}[1]{% \index{#1@{\py@idxcode{#1()}} (built-in function)}} % Add an index entry for a module \newcommand{\py@refmodule}[2]{\index{#1@{\py@idxcode{#1}} (#2module)}} \newcommand{\refmodindex}[1]{\py@refmodule{#1}{}} \newcommand{\refbimodindex}[1]{\py@refmodule{#1}{built-in }} \newcommand{\refexmodindex}[1]{\py@refmodule{#1}{extension }} \newcommand{\refstmodindex}[1]{\py@refmodule{#1}{standard }} % Refer to a module's documentation using a hyperlink of the module's % name, at least if we're building PDF: \ifpdf \newcommand{\refmodule}[2][\py@modulebadkey]{% \ifx\py@modulebadkey#1\def\py@modulekey{#2}\else\def\py@modulekey{#1}\fi% \py@linkToName{label-module-\py@modulekey}{\module{#2}}% } \else \newcommand{\refmodule}[2][\py@modulebadkey]{\module{#2}} \fi % support for the module index \newif\ifpy@UseModuleIndex \py@UseModuleIndexfalse \newcommand{\makemodindex}{ \newwrite\modindexfile \openout\modindexfile=mod\jobname.idx \py@UseModuleIndextrue } % Add the defining entry for a module \newcommand{\py@modindex}[2]{% \renewcommand{\py@thismodule}{#1} \setindexsubitem{(in module #1)}% \index{#1@{\py@idxcode{#1}} (#2module)|textbf}% \ifpy@UseModuleIndex% \@ifundefined{py@modplat@\py@thismodulekey}{ \write\modindexfile{\protect\indexentry{#1@{\texttt{#1}}}{\thepage}}% }{\write\modindexfile{\protect\indexentry{#1@{\texttt{#1} % \emph{(\py@platformof[\py@thismodulekey]{})}}}{\thepage}}% } \fi% } % *** XXX *** THE NEXT FOUR MACROS ARE NOW OBSOLETE !!! *** % built-in & Python modules in the main distribution \newcommand{\bimodindex}[1]{\py@modindex{#1}{built-in }% \typeout{*** MACRO bimodindex IS OBSOLETE -- USE declaremodule INSTEAD!}} \newcommand{\stmodindex}[1]{\py@modindex{#1}{standard }% \typeout{*** MACRO stmodindex IS OBSOLETE -- USE declaremodule INSTEAD!}} % Python & extension modules outside the main distribution \newcommand{\modindex}[1]{\py@modindex{#1}{}% \typeout{*** MACRO modindex IS OBSOLETE -- USE declaremodule INSTEAD!}} \newcommand{\exmodindex}[1]{\py@modindex{#1}{extension }% \typeout{*** MACRO exmodindex IS OBSOLETE -- USE declaremodule INSTEAD!}} % Additional string for an index entry \newif\ifpy@usingsubitem\py@usingsubitemfalse \newcommand{\py@indexsubitem}{} \newcommand{\setindexsubitem}[1]{\renewcommand{\py@indexsubitem}{ #1}% \py@usingsubitemtrue} \newcommand{\ttindex}[1]{% \ifpy@usingsubitem \index{#1@{\py@idxcode{#1}}\py@indexsubitem}% \else% \index{#1@{\py@idxcode{#1}}}% \fi% } \newcommand{\withsubitem}[2]{% \begingroup% \def\ttindex##1{\index{##1@{\py@idxcode{##1}} #1}}% #2% \endgroup% } % Module synopsis processing ----------------------------------------------- % \newcommand{\py@thisclass}{} \newcommand{\py@thismodule}{} \newcommand{\py@thismodulekey}{} \newcommand{\py@thismoduletype}{} \newcommand{\py@standardIndexModule}[1]{\py@modindex{#1}{standard }} \newcommand{\py@builtinIndexModule}[1]{\py@modindex{#1}{built-in }} \newcommand{\py@extensionIndexModule}[1]{\py@modindex{#1}{extension }} \newcommand{\py@IndexModule}[1]{\py@modindex{#1}{}} \newif\ifpy@HaveModSynopsis \py@HaveModSynopsisfalse \newif\ifpy@ModSynopsisFileIsOpen \py@ModSynopsisFileIsOpenfalse \newif\ifpy@HaveModPlatform \py@HaveModPlatformfalse % \declaremodule[key]{type}{name} \newcommand{\declaremodule}[3][\py@modulebadkey]{ \py@openModSynopsisFile \renewcommand{\py@thismoduletype}{#2} \ifx\py@modulebadkey#1 \renewcommand{\py@thismodulekey}{#3} \else \renewcommand{\py@thismodulekey}{#1} \fi \@ifundefined{py@#2IndexModule}{% \typeout{*** MACRO declaremodule called with unknown module type: `#2'} \py@IndexModule{#3}% }{% \csname py@#2IndexModule\endcsname{#3}% } \label{module-\py@thismodulekey} } \newif\ifpy@ModPlatformFileIsOpen \py@ModPlatformFileIsOpenfalse \newcommand{\py@ModPlatformFilename}{\jobname.pla} \newcommand{\platform}[1]{ \ifpy@ModPlatformFileIsOpen\else \newwrite\py@ModPlatformFile \openout\py@ModPlatformFile=\py@ModPlatformFilename \py@ModPlatformFileIsOpentrue \fi } \InputIfFileExists{\jobname.pla}{}{} \newcommand{\py@platformof}[2][\py@modulebadkey]{% \ifx\py@modulebadkey#1 \def\py@key{#2}% \else \def\py@key{#1}% \fi% \csname py@modplat@\py@key\endcsname% } \newcommand{\ignorePlatformAnnotation}[1]{} % \moduleauthor{name}{email} \newcommand{\moduleauthor}[2]{} % \sectionauthor{name}{email} \newcommand{\sectionauthor}[2]{} \newcommand{\py@defsynopsis}{Module has no synopsis.} \newcommand{\py@modulesynopsis}{\py@defsynopsis} \newcommand{\modulesynopsis}[1]{ \py@HaveModSynopsistrue \renewcommand{\py@modulesynopsis}{#1} } % define the file \newwrite\py@ModSynopsisFile % hacked from \addtocontents from latex.ltx: \long\def\py@writeModSynopsisFile#1{% \protected@write\py@ModSynopsisFile% {\let\label\@gobble \let\index\@gobble \let\glossary\@gobble}% {\string#1}% } \newcommand{\py@closeModSynopsisFile}{ \ifpy@ModSynopsisFileIsOpen \closeout\py@ModSynopsisFile \py@ModSynopsisFileIsOpenfalse \fi } \newcommand{\py@openModSynopsisFile}{ \ifpy@ModSynopsisFileIsOpen\else \openout\py@ModSynopsisFile=\py@ModSynopsisFilename \py@ModSynopsisFileIsOpentrue \fi } \newcommand{\py@ProcessModSynopsis}{ \ifpy@HaveModSynopsis \py@writeModSynopsisFile{\modulesynopsis% {\py@thismodulekey}{\py@thismodule}% {\py@thismoduletype}{\py@modulesynopsis}}% \py@HaveModSynopsisfalse \fi \renewcommand{\py@modulesynopsis}{\py@defsynopsis} } \AtEndDocument{\py@ProcessModSynopsis\py@closeModSynopsisFile} \long\def\py@writeModPlatformFile#1{% \protected@write\py@ModPlatformFile% {\let\label\@gobble \let\index\@gobble \let\glossary\@gobble}% {\string#1}% } \newcommand{\localmoduletable}{ \IfFileExists{\py@ModSynopsisFilename}{ \begin{synopsistable} \input{\py@ModSynopsisFilename} \end{synopsistable} }{} } \ifpdf \newcommand{\py@ModSynopsisSummary}[4]{% \py@linkToName{label-module-#1}{\bfcode{#2}} & #4\\ } \else \newcommand{\py@ModSynopsisSummary}[4]{\bfcode{#2} & #4\\} \fi \newenvironment{synopsistable}{ % key, name, type, synopsis \let\modulesynopsis=\py@ModSynopsisSummary \begin{tabular}{ll} }{ \end{tabular} } % % -------------------------------------------------------------------------- \newcommand{\py@reset}{ \py@usingsubitemfalse \py@ProcessModSynopsis \renewcommand{\py@thisclass}{} \renewcommand{\py@thismodule}{} \renewcommand{\py@thismodulekey}{} \renewcommand{\py@thismoduletype}{} } % Augment the sectioning commands used to get our own font family in place, % and reset some internal data items: \renewcommand{\section}{\py@reset% \@startsection{section}{1}{\z@}% {-3.5ex \@plus -1ex \@minus -.2ex}% {2.3ex \@plus.2ex}% {\reset@font\Large\py@HeaderFamily}} \renewcommand{\subsection}{\@startsection{subsection}{2}{\z@}% {-3.25ex\@plus -1ex \@minus -.2ex}% {1.5ex \@plus .2ex}% {\reset@font\large\py@HeaderFamily}} \renewcommand{\subsubsection}{\@startsection{subsubsection}{3}{\z@}% {-3.25ex\@plus -1ex \@minus -.2ex}% {1.5ex \@plus .2ex}% {\reset@font\normalsize\py@HeaderFamily}} \renewcommand{\paragraph}{\@startsection{paragraph}{4}{\z@}% {3.25ex \@plus1ex \@minus.2ex}% {-1em}% {\reset@font\normalsize\py@HeaderFamily}} \renewcommand{\subparagraph}{\@startsection{subparagraph}{5}{\parindent}% {3.25ex \@plus1ex \@minus .2ex}% {-1em}% {\reset@font\normalsize\py@HeaderFamily}} % Now for a lot of semantically-loaded environments that do a ton of magical % things to get the right formatting and index entries for the stuff in % Python modules and C API. % {fulllineitems} is used in one place in libregex.tex, but is really for % internal use in this file. % \newcommand{\py@itemnewline}[1]{% \@tempdima\linewidth% \advance\@tempdima \leftmargin\makebox[\@tempdima][l]{#1}% } \newenvironment{fulllineitems}{ \begin{list}{}{\labelwidth \leftmargin \labelsep 0pt \rightmargin 0pt \topsep -\parskip \partopsep \parskip \itemsep -\parsep \let\makelabel=\py@itemnewline} }{\end{list}} % \optional is mostly for use in the arguments parameters to the various % {*desc} environments defined below, but may be used elsewhere. Known to % be used in the debugger chapter. % % Typical usage: % % \begin{funcdesc}{myfunc}{reqparm\optional{, optparm}} % ^^^ ^^^ % No space here No space here % % When a function has multiple optional parameters, \optional should be % nested, not chained. This is right: % % \begin{funcdesc}{myfunc}{\optional{parm1\optional{, parm2}}} % \let\py@badkey=\@undefined \newcommand{\optional}[1]{% {\textnormal{\Large[}}{#1}\hspace{0.5mm}{\textnormal{\Large]}}} % This can be used when a function or method accepts an varying number % of arguments, such as by using the *args syntax in the parameter list. \newcommand{\py@moreargs}{...} % This can be used when you don't want to document the parameters to a % function or method, but simply state that it's an alias for % something else. \newcommand{\py@unspecified}{...} \newlength{\py@argswidth} \newcommand{\py@sigparams}[1]{% \parbox[t]{\py@argswidth}{\py@varvars{#1}\code{)}}} \newcommand{\py@sigline}[2]{% \settowidth{\py@argswidth}{#1\code{(}}% \addtolength{\py@argswidth}{-2\py@argswidth}% \addtolength{\py@argswidth}{\textwidth}% \item[#1\code{(}\py@sigparams{#2}]} % C functions ------------------------------------------------------------ % \begin{cfuncdesc}[refcount]{type}{name}{arglist} % Note that the [refcount] slot should only be filled in by % tools/anno-api.py; it pulls the value from the refcounts database. \newcommand{\cfuncline}[3]{ \py@sigline{\code{#1 \bfcode{#2}}}{#3}% \index{#2@{\py@idxcode{#2()}}} } \newenvironment{cfuncdesc}[4][\py@badkey]{ \begin{fulllineitems} \cfuncline{#2}{#3}{#4} \ifx#1\@undefined\else% \emph{Return value: \textbf{#1}.}\\ \fi }{\end{fulllineitems}} % C variables ------------------------------------------------------------ % \begin{cvardesc}{type}{name} \newenvironment{cvardesc}[2]{ \begin{fulllineitems} \item[\code{#1 \bfcode{#2}}\index{#2@{\py@idxcode{#2}}}] }{\end{fulllineitems}} % C data types ----------------------------------------------------------- % \begin{ctypedesc}[index name]{typedef name} \newenvironment{ctypedesc}[2][\py@badkey]{ \begin{fulllineitems} \item[\bfcode{#2}% \ifx#1\@undefined% \index{#2@{\py@idxcode{#2}} (C type)} \else% \index{#2@{\py@idxcode{#1}} (C type)} \fi] }{\end{fulllineitems}} % C type fields ---------------------------------------------------------- % \begin{cmemberdesc}{container type}{ctype}{membername} \newcommand{\cmemberline}[3]{ \item[\code{#2 \bfcode{#3}}] \index{#3@{\py@idxcode{#3}} (#1 member)} } \newenvironment{cmemberdesc}[3]{ \begin{fulllineitems} \cmemberline{#1}{#2}{#3} }{\end{fulllineitems}} % Funky macros ----------------------------------------------------------- % \begin{csimplemacrodesc}{name} % -- "simple" because it has no args; NOT for constant definitions! \newenvironment{csimplemacrodesc}[1]{ \begin{fulllineitems} \item[\bfcode{#1}\index{#1@{\py@idxcode{#1}} (macro)}] }{\end{fulllineitems}} % simple functions (not methods) ----------------------------------------- % \begin{funcdesc}{name}{args} \newcommand{\funcline}[2]{% \funclineni{#1}{#2}% \index{#1@{\py@idxcode{#1()}} (in module \py@thismodule)}} \newenvironment{funcdesc}[2]{ \begin{fulllineitems} \funcline{#1}{#2} }{\end{fulllineitems}} % similar to {funcdesc}, but doesn't add to the index \newcommand{\funclineni}[2]{% \py@sigline{\bfcode{#1}}{#2}} \newenvironment{funcdescni}[2]{ \begin{fulllineitems} \funclineni{#1}{#2} }{\end{fulllineitems}} % classes ---------------------------------------------------------------- % \begin{classdesc}{name}{constructor args} \newenvironment{classdesc}[2]{ % Using \renewcommand doesn't work for this, for unknown reasons: \global\def\py@thisclass{#1} \begin{fulllineitems} \py@sigline{\strong{class }\bfcode{#1}}{#2}% \index{#1@{\py@idxcode{#1}} (class in \py@thismodule)} }{\end{fulllineitems}} % \begin{classdesc*}{name} \newenvironment{classdesc*}[1]{ % Using \renewcommand doesn't work for this, for unknown reasons: \global\def\py@thisclass{#1} \begin{fulllineitems} \item[\strong{class }\code{\bfcode{#1}}% \index{#1@{\py@idxcode{#1}} (class in \py@thismodule)}] }{\end{fulllineitems}} % \begin{excclassdesc}{name}{constructor args} % but indexes as an exception \newenvironment{excclassdesc}[2]{ % Using \renewcommand doesn't work for this, for unknown reasons: \global\def\py@thisclass{#1} \begin{fulllineitems} \py@sigline{\strong{exception }\bfcode{#1}}{#2}% \index{#1@{\py@idxcode{#1}} (exception in \py@thismodule)} }{\end{fulllineitems}} % There is no corresponding {excclassdesc*} environment. To describe % a class exception without parameters, use the {excdesc} environment. \let\py@classbadkey=\@undefined % object method ---------------------------------------------------------- % \begin{methoddesc}[classname]{methodname}{args} \newcommand{\methodline}[3][\@undefined]{ \methodlineni{#2}{#3} \ifx#1\@undefined \index{#2@{\py@idxcode{#2()}} (\py@thisclass\ method)} \else \index{#2@{\py@idxcode{#2()}} (#1 method)} \fi } \newenvironment{methoddesc}[3][\@undefined]{ \begin{fulllineitems} \ifx#1\@undefined \methodline{#2}{#3} \else \def\py@thisclass{#1} \methodline{#2}{#3} \fi }{\end{fulllineitems}} % similar to {methoddesc}, but doesn't add to the index % (never actually uses the optional argument) \newcommand{\methodlineni}[3][\py@classbadkey]{% \py@sigline{\bfcode{#2}}{#3}} \newenvironment{methoddescni}[3][\py@classbadkey]{ \begin{fulllineitems} \methodlineni{#2}{#3} }{\end{fulllineitems}} % object data attribute -------------------------------------------------- % \begin{memberdesc}[classname]{membername} \newcommand{\memberline}[2][\py@classbadkey]{% \ifx#1\@undefined \memberlineni{#2} \index{#2@{\py@idxcode{#2}} (\py@thisclass\ attribute)} \else \memberlineni{#2} \index{#2@{\py@idxcode{#2}} (#1 attribute)} \fi } \newenvironment{memberdesc}[2][\py@classbadkey]{ \begin{fulllineitems} \ifx#1\@undefined \memberline{#2} \else \def\py@thisclass{#1} \memberline{#2} \fi }{\end{fulllineitems}} % similar to {memberdesc}, but doesn't add to the index % (never actually uses the optional argument) \newcommand{\memberlineni}[2][\py@classbadkey]{\item[\bfcode{#2}]} \newenvironment{memberdescni}[2][\py@classbadkey]{ \begin{fulllineitems} \memberlineni{#2} }{\end{fulllineitems}} % For exceptions: -------------------------------------------------------- % \begin{excdesc}{name} % -- for constructor information, use excclassdesc instead \newenvironment{excdesc}[1]{ \begin{fulllineitems} \item[\strong{exception }\bfcode{#1}% \index{#1@{\py@idxcode{#1}} (exception in \py@thismodule)}] }{\end{fulllineitems}} % Module data or constants: ---------------------------------------------- % \begin{datadesc}{name} \newcommand{\dataline}[1]{% \datalineni{#1}\index{#1@{\py@idxcode{#1}} (data in \py@thismodule)}} \newenvironment{datadesc}[1]{ \begin{fulllineitems} \dataline{#1} }{\end{fulllineitems}} % similar to {datadesc}, but doesn't add to the index \newcommand{\datalineni}[1]{\item[\bfcode{#1}]\nopagebreak} \newenvironment{datadescni}[1]{ \begin{fulllineitems} \datalineni{#1} }{\end{fulllineitems}} % bytecode instruction --------------------------------------------------- % \begin{opcodedesc}{name}{var} % -- {var} may be {} \newenvironment{opcodedesc}[2]{ \begin{fulllineitems} \item[\bfcode{#1}\quad\var{#2}] }{\end{fulllineitems}} \newcommand{\nodename}[1]{\label{#1}} % For these commands, use \command{} to get the typography right, not % {\command}. This works better with the texinfo translation. \newcommand{\ABC}{{\sc abc}} \newcommand{\UNIX}{{\sc Unix}} \newcommand{\POSIX}{POSIX} \newcommand{\ASCII}{{\sc ascii}} \newcommand{\Cpp}{C\protect\raisebox{.18ex}{++}} \newcommand{\C}{C} \newcommand{\EOF}{{\sc eof}} \newcommand{\NULL}{\constant{NULL}} \newcommand{\infinity}{\ensuremath{\infty}} \newcommand{\plusminus}{\ensuremath{\pm}} % \guilabel{Start} \newcommand{\guilabel}[1]{\textsf{#1}} % \menuselection{Start \sub Programs \sub Python} \newcommand{\menuselection}[1]{\guilabel{{\def\sub{ \ensuremath{>} }#1}}} % Also for consistency: spell Python "Python", not "python"! % code is the most difficult one... \newcommand{\code}[1]{\textrm{\@vobeyspaces\@noligs\def\{{\char`\{}\def\}{\char`\}}\def\~{\char`\~}\def\^{\char`\^}\def\e{\char`\\}\def\${\char`\$}\def\#{\char`\#}\def\&{\char`\&}\def\%{\char`\%}% \texttt{#1}}} \newcommand{\bfcode}[1]{\code{\bfseries#1}} % bold-faced code font \newcommand{\csimplemacro}[1]{\code{#1}} \newcommand{\kbd}[1]{\code{#1}} \newcommand{\samp}[1]{`\code{#1}'} \newcommand{\var}[1]{% \ifmmode% \hbox{\py@defaultsize\textrm{\textit{#1\/}}}% \else% \py@defaultsize\textrm{\textit{#1\/}}% \fi% } \renewcommand{\emph}[1]{{\em #1}} \newcommand{\dfn}[1]{\emph{#1}} \newcommand{\strong}[1]{{\bf #1}} % let's experiment with a new font: \newcommand{\file}[1]{`\filenq{#1}'} \newcommand{\filenq}[1]{{\py@smallsize\textsf{\let\e=\textbackslash#1}}} % Use this def/redef approach for \url{} since hyperref defined this already, % but only if we actually used hyperref: \ifpdf \newcommand{\url}[1]{{% \py@pdfstartlink% attr{ /Border [0 0 0] }% user{% /Subtype/Link% /A<<% /Type/Action% /S/URI% /URI(#1)% >>% }% \py@LinkColor% color of the link text \py@smallsize\sf #1% \py@NormalColor% Turn it back off; these are declarative \pdfendlink}% and don't appear bound to the current }% formatting "box". \else \newcommand{\url}[1]{\mbox{\py@smallsize\textsf{#1}}} \fi \newcommand{\email}[1]{{\py@smallsize\textsf{#1}}} \newcommand{\newsgroup}[1]{{\py@smallsize\textsf{#1}}} \newcommand{\py@varvars}[1]{{% {\let\unspecified=\py@unspecified% \let\moreargs=\py@moreargs% \var{#1}}}} % I'd really like to get rid of this! \newif\iftexi\texifalse % This is used to get l2h to put the copyright and abstract on % a separate HTML page. \newif\ifhtml\htmlfalse % These should be used for all references to identifiers which are % used to refer to instances of specific language constructs. See the % names for specific semantic assignments. % % For now, don't do anything really fancy with them; just use them as % logical markup. This might change in the future. % \newcommand{\module}[1]{\texttt{#1}} \newcommand{\keyword}[1]{\texttt{#1}} \newcommand{\exception}[1]{\texttt{#1}} \newcommand{\class}[1]{\texttt{#1}} \newcommand{\function}[1]{\texttt{#1}} \newcommand{\member}[1]{\texttt{#1}} \newcommand{\method}[1]{\texttt{#1}} \newcommand{\pytype}[1]{#1} % built-in Python type \newcommand{\cfunction}[1]{\texttt{#1}} \newcommand{\ctype}[1]{\texttt{#1}} % C struct or typedef name \newcommand{\cdata}[1]{\texttt{#1}} % C variable, typically global \newcommand{\mailheader}[1]{{\py@smallsize\textsf{#1:}}} \newcommand{\mimetype}[1]{{\py@smallsize\textsf{#1}}} % The \! is a "negative thin space" in math mode. \newcommand{\regexp}[1]{% {\tiny$^{^\lceil}\!\!$% {\py@defaultsize\code{#1}}% $\!\rfloor\!$% }} \newcommand{\envvar}[1]{% #1% \index{#1}% \index{environment variables!{#1}}% } \newcommand{\makevar}[1]{#1} % variable in a Makefile \newcommand{\character}[1]{\samp{#1}} % constants defined in Python modules or C headers, not language constants: \newcommand{\constant}[1]{\code{#1}} % manifest constant, not syntactic \newcommand{\manpage}[2]{{\emph{#1}(#2)}} \newcommand{\pep}[1]{PEP #1\index{Python Enhancement Proposals!PEP #1}} \newcommand{\rfc}[1]{RFC #1\index{RFC!RFC #1}} \newcommand{\program}[1]{\strong{#1}} \newcommand{\programopt}[1]{\strong{#1}} % Note that \longprogramopt provides the '--'! \newcommand{\longprogramopt}[1]{\strong{-{}-#1}} % \ulink{link text}{URL} \ifpdf \newcommand{\ulink}[2]{{% % For PDF, we *should* only generate a link when the URL is absolute. \py@pdfstartlink% attr{ /Border [0 0 0] }% user{% /Subtype/Link% /A<<% /Type/Action% /S/URI% /URI(#2)% >>% }% \py@LinkColor% color of the link text #1% \py@NormalColor% Turn it back off; these are declarative \pdfendlink}% and don't appear bound to the current }% formatting "box". \else \newcommand{\ulink}[2]{#1} \fi % cited titles: \citetitle{Title of Work} % online: \citetitle[url-to-resource]{Title of Work} \ifpdf \newcommand{\citetitle}[2][\py@modulebadkey]{% \ifx\py@modulebadkey#1\emph{#2}\else\ulink{\emph{#2}}{#1}\fi% } \else \newcommand{\citetitle}[2][URL]{\emph{#2}} \fi % This version is being checked in for the historical record; it shows % how I've managed to get some aspects of this to work. It will not % be used in practice, so a subsequent revision will change things % again. This version has problems, but shows how to do something % that proved more tedious than I'd expected, so I don't want to lose % the example completely. % \newcommand{\grammartoken}[1]{\texttt{#1}} \newenvironment{productionlist}[1][\py@badkey]{ \def\optional##1{{\Large[}##1{\Large]}} \def\production##1##2{\code{##1}&::=&\code{##2}\\} \def\productioncont##1{& &\code{##1}\\} \def\token##1{##1} \let\grammartoken=\token \parindent=2em \indent \begin{tabular}{lcl} }{% \end{tabular} } \newlength{\py@noticelength} \newcommand{\py@heavybox}{ \setlength{\fboxrule}{2pt} \setlength{\fboxsep}{7pt} \setlength{\py@noticelength}{\linewidth} \addtolength{\py@noticelength}{-2\fboxsep} \addtolength{\py@noticelength}{-2\fboxrule} \setlength{\shadowsize}{3pt} \Sbox \minipage{\py@noticelength} } \newcommand{\py@endheavybox}{ \endminipage \endSbox \fbox{\TheSbox} } % a 'note' is as plain as it gets: \newcommand{\py@noticelabel@note}{Note:} \newcommand{\py@noticestart@note}{} \newcommand{\py@noticeend@note}{} % a 'warning' gets more visible distinction: \newcommand{\py@noticelabel@warning}{Warning:} \newcommand{\py@noticestart@warning}{\py@heavybox} \newcommand{\py@noticeend@warning}{\py@endheavybox} \newenvironment{notice}[1][note]{ \def\py@noticetype{#1} \csname py@noticestart@#1\endcsname \par\strong{\csname py@noticelabel@#1\endcsname} }{\csname py@noticeend@\py@noticetype\endcsname} \newcommand{\note}[1]{\strong{\py@noticelabel@note} #1} \newcommand{\warning}[1]{\strong{\py@noticelabel@warning} #1} % Deprecation stuff. % Should be extended to allow an index / list of deprecated stuff. But % there's a lot of stuff that needs to be done to make that automatable. % % First parameter is the release number that deprecates the feature, the % second is the action the should be taken by users of the feature. % % Example: % \deprecated{1.5.1}{Use \method{frobnicate()} instead.} % \newcommand{\deprecated}[2]{% \strong{Deprecated since release #1.} #2\par} % New stuff. % This should be used to mark things which have been added to the % development tree but that aren't in the release, but are documented. % This allows release of documentation that already includes updated % descriptions. Place at end of descriptor environment. % % Example: % \versionadded{1.5.2} % \versionchanged[short explanation]{2.0} % \newcommand{\versionadded}[2][\py@badkey]{% \ifx#1\@undefined% { New in version #2. }% \else% { New in version #2:\ #1. }% \fi% } \newcommand{\versionchanged}[2][\py@badkey]{% \ifx#1\@undefined% { Changed in version #2. }% \else% { Changed in version #2:\ #1. }% \fi% } % Tables. % \newenvironment{tableii}[4]{% \begin{center}% \def\lineii##1##2{\csname#2\endcsname{##1}&##2\\}% \begin{tabular}{#1}\strong{#3}&\strong{#4} \\* \hline% }{% \end{tabular}% \end{center}% } \newenvironment{longtableii}[4]{% \begin{center}% \def\lineii##1##2{\csname#2\endcsname{##1}&##2\\}% \begin{longtable}[c]{#1}\strong{#3}&\strong{#4} \\* \hline\endhead% }{% \end{longtable}% \end{center}% } \newenvironment{tableiii}[5]{% \begin{center}% \def\lineiii##1##2##3{\csname#2\endcsname{##1}&##2&##3\\}% \begin{tabular}{#1}\strong{#3}&\strong{#4}&\strong{#5} \\% \hline% }{% \end{tabular}% \end{center}% } \newenvironment{longtableiii}[5]{% \begin{center}% \def\lineiii##1##2##3{\csname#2\endcsname{##1}&##2&##3\\}% \begin{longtable}[c]{#1}\strong{#3}&\strong{#4}&\strong{#5} \\% \hline\endhead% }{% \end{longtable}% \end{center}% } \newenvironment{tableiv}[6]{% \begin{center}% \def\lineiv##1##2##3##4{\csname#2\endcsname{##1}&##2&##3&##4\\}% \begin{tabular}{#1}\strong{#3}&\strong{#4}&\strong{#5}&\strong{#6} \\% \hline% }{% \end{tabular}% \end{center}% } \newenvironment{longtableiv}[6]{% \begin{center}% \def\lineiv##1##2##3##4{\csname#2\endcsname{##1}&##2&##3&##4\\}% \begin{longtable}[c]{#1}\strong{#3}&\strong{#4}&\strong{#5}&\strong{#6}% \\% \hline\endhead% }{% \end{longtable}% \end{center}% } \newenvironment{tablev}[7]{% \begin{center}% \def\linev##1##2##3##4##5{\csname#2\endcsname{##1}&##2&##3&##4&##5\\}% \begin{tabular}{#1}\strong{#3}&\strong{#4}&\strong{#5}&\strong{#6}&\strong{#7} \\% \hline% }{% \end{tabular}% \end{center}% } \newenvironment{longtablev}[7]{% \begin{center}% \def\linev##1##2##3##4##5{\csname#2\endcsname{##1}&##2&##3&##4&##5\\}% \begin{longtable}[c]{#1}\strong{#3}&\strong{#4}&\strong{#5}&\strong{#6}&\strong{#7}% \\% \hline\endhead% }{% \end{longtable}% \end{center}% } % XXX Don't think we can use this yet, though it cleans up some % tedious markup. There's no equivalent for the HTML transform yet, % and that needs to exist. I don't know how to write it. % % This should really have something that makes it easier to bind a % table's ``Notes'' column and an associated tablenotes environment, % and generates the right magic for getting the numbers right in the % table. % % So this is quite incomplete. % \newcounter{py@tablenotescounter} \newenvironment{tablenotes}{% \noindent Notes: \par \setcounter{py@tablenotescounter}{0} \begin{list}{(\arabic{py@tablenotescounter})}% {\usecounter{py@tablenotescounter}} }{\end{list}} % Cross-referencing (AMK, new impl. FLD) % Sample usage: % \begin{seealso} % \seemodule{rand}{Uniform random number generator.}; % Module xref % \seetext{\emph{Encyclopedia Britannica}}. % Ref to a book % % % A funky case: module name contains '_'; have to supply an optional key % \seemodule[copyreg]{copy_reg}{Interface constructor registration for % \module{pickle}.} % \end{seealso} % % Note that the last parameter for \seemodule and \seetext should be complete % sentences and be terminated with the proper punctuation. \ifpdf \newcommand{\py@seemodule}[3][\py@modulebadkey]{% \par% \ifx\py@modulebadkey#1\def\py@modulekey{#2}\else\def\py@modulekey{#1}\fi% \begin{fulllineitems} \item[\py@linkToName{label-module-\py@modulekey}{Module \module{#2}} (section \ref{module-\py@modulekey}):] #3 \end{fulllineitems} } \else \newcommand{\py@seemodule}[3][\py@modulebadkey]{% \par% \ifx\py@modulebadkey#1\def\py@modulekey{#2}\else\def\py@modulekey{#1}\fi% \begin{fulllineitems} \item[Module \module{#2} (section \ref{module-\py@modulekey}):] #3 \end{fulllineitems} } \fi % \seelink{url}{link text}{why it's interesting} \newcommand{\py@seelink}[3]{% \par \begin{fulllineitems} \item[\ulink{#2}{#1}] #3 \end{fulllineitems} } % \seetitle[url]{title}{why it's interesting} \newcommand{\py@seetitle}[3][\py@modulebadkey]{% \par \begin{fulllineitems} \item[\citetitle{#2}] \ifx\py@modulebadkey#1\else \item[{\small{(\url{#1})}}] \fi #3 \end{fulllineitems} } % \seepep{number}{title}{why it's interesting} \newcommand{\py@seepep}[3]{% \par% \begin{fulllineitems} \item[\pep{#1}, ``\emph{#2}''] #3 \end{fulllineitems} } % \seerfc{number}{title}{why it's interesting} \newcommand{\py@seerfc}[3]{% \par% \begin{fulllineitems} \item[\rfc{#1}, ``\emph{#2}''] #3 \end{fulllineitems} } % \seeurl{url}{why it's interesting} \newcommand{\py@seeurl}[2]{% \par% \begin{fulllineitems} \item[\url{#1}] #2 \end{fulllineitems} } \newenvironment{seealso*}{ \par \def\seetext##1{\par{##1}} \let\seemodule=\py@seemodule \let\seepep=\py@seepep \let\seerfc=\py@seerfc \let\seetitle=\py@seetitle \let\seeurl=\py@seeurl \let\seelink=\py@seelink }{\par} \newenvironment{seealso}{ \par \strong{See Also:} \par \def\seetext##1{\par{##1}} \let\seemodule=\py@seemodule \let\seepep=\py@seepep \let\seerfc=\py@seerfc \let\seetitle=\py@seetitle \let\seeurl=\py@seeurl \let\seelink=\py@seelink }{\par} % Allow the Python release number to be specified independently of the % \date{}. This allows the date to reflect the document's date and % release to specify the Python release that is documented. % \newcommand{\py@release}{} \newcommand{\version}{} \newcommand{\shortversion}{} \newcommand{\releaseinfo}{} \newcommand{\releasename}{Release} \newcommand{\release}[1]{% \renewcommand{\py@release}{\releasename\space\version}% \renewcommand{\version}{#1}} \newcommand{\setshortversion}[1]{% \renewcommand{\shortversion}{#1}} \newcommand{\setreleaseinfo}[1]{% \renewcommand{\releaseinfo}{#1}} % Allow specification of the author's address separately from the % author's name. This can be used to format them differently, which % is a good thing. % \newcommand{\py@authoraddress}{} \newcommand{\authoraddress}[1]{\renewcommand{\py@authoraddress}{#1}} \let\developersaddress=\authoraddress \let\developer=\author \let\developers=\author % This sets up the fancy chapter headings that make the documents look % at least a little better than the usual LaTeX output. % \@ifundefined{ChTitleVar}{}{ \ChNameVar{\raggedleft\normalsize\py@HeaderFamily} \ChNumVar{\raggedleft \bfseries\Large\py@HeaderFamily} \ChTitleVar{\raggedleft \rm\Huge\py@HeaderFamily} % This creates chapter heads without the leading \vspace*{}: \def\@makechapterhead#1{% {\parindent \z@ \raggedright \normalfont \ifnum \c@secnumdepth >\m@ne \DOCH \fi \interlinepenalty\@M \DOTI{#1} } } } % Definition lists; requested by AMK for HOWTO documents. Probably useful % elsewhere as well, so keep in in the general style support. % \newenvironment{definitions}{% \begin{description}% \def\term##1{\item[##1]\mbox{}\\*[0mm]} }{% \end{description}% } % Tell TeX about pathological hyphenation cases: \hyphenation{Base-HTTP-Re-quest-Hand-ler} pymc-2.2+ds/pymc/sandbox/DP/Docs/underscore.sty000066400000000000000000000236721204033704200214470ustar00rootroot00000000000000% underscore.sty 12-Oct-2001 Donald Arseneau asnd@triumf.ca % Make the "_" character print as "\textunderscore" in text. % Copyright 1998,2001 Donald Arseneau; Distribute freely if unchanged. % Instructions follow after the definitions. \ProvidesPackage{underscore}[2001/10/12] \begingroup \catcode`\_=\active \gdef_{% \relax % No relax gives a small vulnerability in alignments \ifx\if@safe@actives\iftrue % must be outermost test! \string_% \else \ifx\protect\@typeset@protect \ifmmode \sb \else \BreakableUnderscore \fi \else \ifx\protect\@unexpandable@protect \noexpand_% \else \protect_% \fi\fi \fi} \endgroup % At begin: set catcode; fix \long \ttdefault so I can use it in comparisons; \AtBeginDocument{% {\immediate\write\@auxout{\catcode\number\string`\_ \string\active}}% \catcode\string`\_\string=\active \edef\ttdefault{\ttdefault}% } \newcommand{\BreakableUnderscore}{\leavevmode\nobreak\hskip\z@skip \ifx\f@family\ttdefault \string_\else \textunderscore\fi \usc@dischyph\nobreak\hskip\z@skip} \DeclareRobustCommand{\_}{% \ifmmode \nfss@text{\textunderscore}\else \BreakableUnderscore \fi} \let\usc@dischyph\@dischyph \DeclareOption{nohyphen}{\def\usc@dischyph{\discretionary{}{}{}}} \DeclareOption{strings}{\catcode`\_=\active} \ProcessOptions \ifnum\catcode`\_=\active\else \endinput \fi %%%%%%%% Redefine commands that use character strings %%%%%%%% \@ifundefined{UnderscoreCommands}{\let\UnderscoreCommands\@empty}{} \expandafter\def\expandafter\UnderscoreCommands\expandafter{% \UnderscoreCommands \do\include \do\includeonly \do\@input \do\@iinput \do\InputIfFileExists \do\ref \do\pageref \do\newlabel \do\bibitem \do\@bibitem \do\cite \do\nocite \do\bibcite } % Macro to redefine a macro to pre-process its string argument % with \protect -> \string. \def\do#1{% Avoid double processing if user includes command twice! \@ifundefined{US\string_\expandafter\@gobble\string#1}{% \edef\@tempb{\meaning#1}% Check if macro is just a protection shell... \def\@tempc{\protect}% \edef\@tempc{\meaning\@tempc\string#1\space\space}% \ifx\@tempb\@tempc % just a shell: hook into the protected inner command \expandafter\do \csname \expandafter\@gobble\string#1 \expandafter\endcsname \else % Check if macro takes an optional argument \def\@tempc{\@ifnextchar[}% \edef\@tempa{\def\noexpand\@tempa####1\meaning\@tempc}% \@tempa##2##3\@tempa{##2\relax}% \edef\@tempb{\meaning#1\meaning\@tempc}% \edef\@tempc{\noexpand\@tempd \csname US\string_\expandafter\@gobble\string#1\endcsname}% \if \expandafter\@tempa\@tempb \relax 12\@tempa % then no optional arg \@tempc #1\US@prot \else % There is optional arg \@tempc #1\US@protopt \fi \fi }{}} \def\@tempd#1#2#3{\let#1#2\def#2{#3#1}} \def\US@prot#1#2{\let\@@protect\protect \let\protect\string \edef\US@temp##1{##1{#2}}\restore@protect\US@temp#1} \def\US@protopt#1{\@ifnextchar[{\US@protarg#1}{\US@prot#1}} \def\US@protarg #1[#2]{\US@prot{{#1[#2]}}} \UnderscoreCommands \let\do\relax \let\@tempd\relax % un-do %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \endinput underscore.sty 12-Oct-2001 Donald Arseneau Features: ~~~~~~~~~ \_ prints an underscore so that the hyphenation of constituent words is not affected and hyphenation is permitted after the underscore. For example, "compound\_fracture" hyphenates as com- pound_- frac- ture. If you prefer the underscore to break without a hyphen (but still with the same rules for explicit hyphen-breaks) then use the [nohyphen] package option. A simple _ acts just like \_ in text mode, but makes a subscript in math mode: activation_energy $E_a$ Both forms use an underscore character if the font encoding contains one (e.g., "\usepackage[T1]{fontenc}" or typewriter fonts in any encoding), but they use a rule if the there is no proper character. Deficiencies: ~~~~~~~~~~~~~ The skips and penalties ruin any kerning with the underscore character (when a character is used). However, there doesn't seem to be much, if any, such kerning in the ec fonts, and there is never any kerning with a rule. You must avoid "_" in file names and in cite or ref tags, or you must use the babel package, with its active-character controls, or you must give the [strings] option, which attempts to redefine several commands (and may not work perfectly). Even without the [strings] option or babel, you can use occasional underscores like: "\include{file\string_name}". Option: [strings] ~~~~~~~~~~~~~~~~~ The default operation is quite simple and needs no customization; but you must avoid using "_" in any place where LaTeX uses an argument as a string of characters for some control function or as a name. These include the tags for \cite and \ref, file names for \input, \include, and \includegraphics, environment names, counter names, and placement parameters (like "[t]"). The problem with these contexts is that they are `moving arguments' but LaTeX does not `switch on' the \protect mechanism for them. If you need to use the underscore character in these places, the package option [strings] is provided to redefine commands taking a string argument so that the argument is protected (with \protect -> \string). The list of commands is given in "\UnderscoreCommands", with "\do" before each, covering \cite, \ref, \input, and their variants. Not included are many commands regarding font names, everything with counter names, environment names, page styles, and versions of \ref and \cite defined by external packages (e.g. \vref and \citeyear). You can add to the list of supported commands by defining \UnderscoreCommands before loading this package; e.g. \usepackage{chicago} \newcommand{\UnderscoreCommands}{% (\cite already done) \do\citeNP \do\citeA \do\citeANP \do\citeN \do\shortcite \do\shortciteNP \do\shortciteA \do\shortciteANP \do\shortciteN \do\citeyear \do\citeyearNP } \usepackage[strings]{underscore} Not all commands can be supported this way! Only commands that take a string argument *first* can be protected. One optional argument before the string argument is also permitted, as exemplified by \cite: both \cite{tags} and \cite[text]{tags} are allowed. A command like \@addtoreset which takes two counter names as arguments could not be protected by adding it to \UnderscoreCommands. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! When you use the [strings] option, you must load this package !! !! last (or nearly last). !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! There are two reasons: 1) The redefinitions done for protection must come after other packages define their customized versions of those commands. 2) The [strings] option requires the _ character to be activated immediately in order for the cite and ref tags to be read properly from the .aux file as plain strings, and this catcode setting might disrupt other packages. The babel package implements a protection mechanism for many commands, and will be a complete fix for most documents without the [strings] option. Many add-on packages are compatible with babel, so they will get the strings protection also. However, there are several commands that are not covered by babel, but can easily be supported by the [strings] and \UnderscoreCommands mechanism. Beware that using both [strings] and babel may lead to conflicts, but does appear to work (load babel last). Implementation Notes: ~~~~~~~~~~~~~~~~~~~~~ The first setting of "_" to be an active character is performed in a local group so as to not interfere with other packages. The catcode setting is repeated with \AtBeginDocument so the definition is in effect for the text. However, the catcode setting is repeated immediately when the [strings] option is detected. The definition of the active "_" is essentially: \ifmmode \sb \else \BreakableUnderscore \fi where "\sb" retains the normal subscript meaning of "_" and where "\BreakableUnderscore" is essentially "\_". The rest of the definition handles the "\protect"ion without causing \relax to be inserted before the character. \BreakableUnderscore uses "\nobreak\hskip\z@skip" to separate the underscore from surrounding words, thus allowing TeX to hyphenate them, but preventing free breaks around the underscore. Next, it checks the current font family, and uses the underscore character from tt fonts or otherwise \textunderscore (which is a character or rule depending on the font encoding). After the underscore, it inserts a discretionary hyphenation point as "\usc@dischyph", which is usually just "\-" except that it still works in the tabbing environment, although it will give "\discretionary{}{}{}" under the [nohyphen] option. After that, another piece of non-breaking interword glue is inserted. Ordinarily, the comparison "\ifx\f@family\ttdefault" will always fail because \ttdefault is `long' where \f@family is not (boooo hisss), but \ttdefault is redefined to be non-long by "\AtBeginDocument". The "\_" command is then defined to use "\BreakableUnderscore". If the [strings] option is not given, then that is all! Under the [strings] option, the list of special commands is processed to: - retain the original command as \US_command (\US_ref) - redefine the command as \US@prot\US_command for ordinary commands (\ref -> \US@prot\US_ref) or as \US@protopt\US_command when an optional argument is possible (\bibitem -> \US@protopt\US_bibitem). - self-protecting commands (\cite) retain their self-protection. Diagnosing the state of the pre-existing command is done by painful contortions involving \meaning. \US@prot and \US@protopt read the argument, process it with \protect enabled, then invoke the saved \US_command. Modifications: ~~~~~~~~~~~~~~ 12-Oct-2001 Babel (safe@actives) compatibility and [nohyphen] option. Test file integrity: ASCII 32-57, 58-126: !"#$%&'()*+,-./0123456789 :;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ pymc-2.2+ds/pymc/sandbox/DP/__init__.py000066400000000000000000000001031204033704200177360ustar00rootroot00000000000000#!/usr/bin/env python # encoding: utf-8 """ Dirichlet process """ pymc-2.2+ds/pymc/sandbox/EM.py000066400000000000000000000132041204033704200162030ustar00rootroot00000000000000__author__ = 'Anand Patil, anand.prabhakar.patil@gmail.com' from pymc.NormalApproximation import * import pymc as pm import numpy as np from pymc import six xrange = six.moves.xrange class EM(MAP): """ N = EM(input, sampler, db='ram', eps=.001, diff_order = 5) Normal approximation to the posterior of a model via the EM algorithm. Useful methods: draw: Draws values for all stochastic variables using normal approximation revert_to_max: Sets all stochastic variables to mean value under normal approximation fit: Finds the normal approximation. Useful attributes (after fit() is called): mu[p1, p2, ...]: Returns the posterior mean vector of stochastic variables p1, p2, ... C[p1, p2, ...]: Returns the posterior covariance of stochastic variables p1, p2, ... logp: Returns the log-probability of the model logp_at_max: Returns the maximum log-probability of the model len: The number of free stochastic variables in the model ('k' in AIC and BIC) data_len: The number of datapoints used ('n' in BIC) AIC: Akaike's Information Criterion for the model BIC: Bayesian Information Criterion for the model :Arguments: input: As for Model sampler: Should be a Sampler instance handling a submodel of input. The variables in sampler will be integrated out; only the marginal probability of the other variables in input will be maximized. The 'expectation' step will be computed using samples obtained from the sampler. db: A database backend. eps: 'h' for computing numerical derivatives. May be a dictionary keyed by stochastic variable as well as a scalar. diff_order: The order of the approximation used to compute derivatives. :SeeAlso: Model, NormApprox, Sampler, scipy.optimize """ def __init__(self, input, sampler, db='ram', eps=.001, diff_order = 5, verbose=0, tune_interval=10): Q = pm.Container(input) new_input = (Q.nodes | sampler.nodes) - sampler.stochastics MAP.__init__(self, input=new_input, eps=eps, diff_order=diff_order) self.tune_interval = tune_interval self.verbose = verbose self.sampler = sampler # Figure out which stochastics' log-probabilities need to be averaged. self.stochastics_to_integrate = set() for s in self.stochastics: mb = s.markov_blanket if any([other_s in mb for other_s in sampler.stochastics]): self.stochastics_to_integrate.add(s) def fit(self, iterlim=1000, tol=.0001, na_method = 'fmin', na_iterlim=1000, na_tol=.0001, sa_iter = 10000, sa_burn=1000, sa_thin=10): """ N.fit(iterlim=1000, tol=.0001, na_method='fmin', na_iterlim=1000, na_tol=.0001, sa_iter = 10000, sa_burn=1000, sa_thin=10) Arguments 'iterlim' and 'tol' control the top-level EM iteration. Arguments beginning with 'na' are passed to NormApprox.fit() during the M steps. Arguments beginning with 'sa' are passed to self.sampler during the E-steps. The 'E' step consists of running the sampler, which will keep a trace. In the 'M' step, the log-probability of variables in the sampler's Markov blanket are averaged and combined with the log-probabilities of self's other variables to produce a joint log-probability. This quantity is maximized. """ logps = [] for i in xrange(iterlim): # E step self.sampler.sample(sa_iter, sa_burn, sa_thin, verbose = self.verbose, tune_interval = self.tune_interval) # M step MAP.fit(self, method = na_method, iterlim=na_iterlim, tol=na_tol, post_fit_computations=False, verbose=self.verbose) logps.append(self.logp) if abs(logps[i-1] - logps[i])<= tol: print 'EM algorithm converged' break if i == iterlim-1: print 'EM algorithm: Maximum number of iterations exceeded.' self.post_fit_computations() def i_logp(self, index): """ Evaluates the log-probability of the Markov blanket of a stochastic owning a particular index. Used for computing derivatives. Averages over the sampler's trace for variables in the sampler's Markov blanket. """ all_relevant_stochastics = set() p,i = self.stochastic_indices[index] logps = [] # If needed, run an MCMC loop and use those samples. if p in self.stochastics_to_integrate: for i in xrange(sampler.db.length): sampler.remember(i-1) try: logps.append(p.logp + np.sum([child.logp for child in self.extended_children[p]])) except ZeroProbability: return -Inf return mean(logps) # Otherwise, just return the log-probability of the Markov blanket. else: try: return p.logp + np.sum([child.logp for child in self.extended_children[p]]) except pm.ZeroProbability: return -np.Inf def func(self, p): """ The function that gets passed to the optimizers. """ self._set_stochastics(p) logps = [] for i in xrange(sampler.db.length): sampler.remember(i-1) try: logps.append(self.logp) except pm.ZeroProbability: return np.Inf return -np.mean(logps) class SEM(EM, NormApprox): """ Normal approximation via SEM algorithm """ pass pymc-2.2+ds/pymc/sandbox/GibbsStepMethods.py000066400000000000000000000551641204033704200211230ustar00rootroot00000000000000""" Gibbs step methods apply to conjugate submodels. In other words, if in the following model: B|A ~ d2(A, p2) A ~ d1(p1) d1 is a standard distribution and A's distribution conditional on B is d1 with parameters p1_*, A can be Gibbs sampled using standard random variables. If, on the other hand, the likelihood p(B|A) regarded as a function of A is proportional to a standard distribution d3, but A's distribution conditional on its parents is /not/ d3, A can be Metropolis sampled using p(B|A) as a proposal distribution. In this case the Metropolis-Hastings acceptance threshold is min(1, p(A_p|parents) / p(A|parents)). Each Gibbs step method has a fully conjugate version and a nonconjugate version. """ from pymc import * from pymc.utils import safe_len import numpy as np from pymc import six xrange = six.moves.xrange __author__ = 'Anand Patil, anand.prabhakar.patil@gmail.com' __all__ = ['GammaNormal', 'GammaPoisson', 'GammaExponential', 'GammaGamma', 'WishartMvNormal', 'DirichletMultinomial', 'BetaBinomial', 'BetaGeometric', 'BernoulliAnything', 'check_children', 'check_linear_extended_children', 'check_conjugacy','StandardGibbs'] # If we implement Pareto: # ParetoUniform # GammaPareto # TODO, long-term: Allow long sequences of LinearCombinations. # TODO, long-term: Allow children to be of different classes, as long as they're all conjugate. # Wrapped in try block bc NormalSubmodel requires cvxopt. try: from .NormalSubmodel import NormalSubmodel, crawl_normal_submodel, normal_classes __all__.append('NormalNormal') class NormalNormal(Gibbs): """ N = NormalNormal(input, verbose=0) Handles all-Normal submodels conditional on 'extremal' stochastics. See NormalSubmodel's docstring. If input is not a NormalSubmodel (a stochastic, list, etc.) then the Normal submodel containing input is found. N will claim the entire submodel. """ linear_OK = True child_class = normal_classes parent_label = 'mu' target_class = normal_classes def __init__(self, input, verbose=0): # if input is not a Normal submodel, find maximal Normal submodel incorporating it. if not isinstance(input, NormalSubmodel): # TODO: Uncomment when crawl_... is working # input = NormalSubmodel(crawl_normal_submodel(input)) input = NormalSubmodel(input) # Otherwise just store the input, which was a Normal submodel. self.NSM = input self.verbose = verbose # Read self.stochastics from Normal submodel. self.stochastics = set(self.NSM.changeable_stochastic_list) self.children = set([]) self.parents = set([]) for s in self.stochastics: self.children |= s.extended_children self.parents |= s.extended_parents # Remove own stochastics from children and parents. self.children -= self.stochastics self.parents -= self.stochastics self.conjugate = True def propose(self): self.NSM.draw_conditional() @staticmethod def competence(stochastic): test_input = stochastic.extended_children | set([stochastic]) try: NormalSubmodel.check_input(test_input) return pymc.conjugate_Gibbs_competence except ValueError: return 0 except ImportError: pass def check_children(stochastic, stepper_class, child_class, parent_key): """ Make sure all children are of the required class, and that self.stochastic is the correct parent of each. """ d = [] parent_dict = {} for name in child_class.parent_names: if not name == parent_key: parent_dict[name] = [] for child in stochastic.children: if isinstance(child, Stochastic): if not isinstance(child, child_class): raise ValueError, 'Stochastic children of %s must all be %s for %s\n \ to be able to handle it.' \ %(stochastic, child_class.__name__, stepper_class) d.append(child) for name in child_class.parent_names: if not name == parent_key: parent_dict[name].append(child.parents[name]) return d, parent_dict def check_conjugacy(stochastic, target_class): """ See whether the conjugate or non-conjugate sampling strategy should be used. """ parent_dict = {} if not isinstance(stochastic, target_class): for name in stochastic.parents: parent_dict[name] = None conjugate = False else: for name in stochastic.parents: parent_dict[name] = Lambda(name, lambda parent = stochastic.parents[name]: parent) conjugate = True return conjugate, parent_dict def check_linear_extended_children(stochastic, stepper_class, child_class, parent_key): """ Make sure all extended children are of the required class, that correct parent is a LinearCombination, and that stochastic appears only once in LinearCombination's coefficient list. TODO Need to refactor this to allow p.x and p.y to change. In particular p.x and p.y may not contain stochastic all the time. Lambda_deterministics aren't the way to go here because you need to check whether stochastic is in p.x and p.y. Just do everything you can in the init method and do the rest in sum_ld, etc. """ d = [] coef = [] parent_dict = {} side = [] for name in child_class.parent_names: if not name == parent_key: parent_dict[name] = [] for child in stochastic.extended_children: # If extended child is a direct child, make sure everything is in order. if child in stochastic.children: continue # If extended child is not direct, make sure direct child is LinearCombination # with parent stochastic. elif isinstance(child.parents[parent_key], LinearCombination): p = child.parents[parent_key] if sum([p.x[i] is stochastic for i in xrange(len(p.x))]) + sum([p.y[i] is stochastic for i in xrange(len(p.y))]) != 1: print [p.x[i] is stochastic for i in xrange(len(p.x))] print [p.y[i] is stochastic for i in xrange(len(p.y))] print len([p.x[i] is stochastic for i in xrange(len(p.x))]) + len([p.y[i] is stochastic for i in xrange(len(p.y))]) raise ValueError, 'Stochastic %s must appear only once as a parent of %s for %s to apply.' \ % (stochastic, p, stepper_class) coef.append(p.coefs[stochastic]) side.append(p.sides[stochastic]) d.append(child) for name in child_class.parent_names: if not name == parent_key: parent_dict[name].append(child.parents[name]) else: raise ValueError, "Child %s's %s parent must be LinearCombination\n or %s itself for %s to apply."\ %(child, parent_key, stochastic, stepper_class) return d, coef, side, parent_dict def zap_extended_children(stochastic, cls_name): # Raise error if any extended children aren't direct children. if len(stochastic.extended_children - stochastic.children) > 0: raise ValueError, 'Stochastic %s must have only direct children for %s to apply.'\ %(stochastic, cls_name) class StandardGibbs(Gibbs): """ All Gibbs steppers in GibbsStepMethods subclass StandardGibbs. It keeps the following attributes: - N_d: Number of direct children, total. - N: Total length of direct children. - sum_d: Sum of values of direct children. """ linear_OK = False def __init__(self, stochastic, verbose=0): self.stochastic = stochastic # Get distributional parameters from children and make sure children are Exponential. self.d, self.parent_dict = check_children(self.stochastic, self.__class__.__name__, self.child_class, self.parent_label) # See whether to use conjugate or non-conjugate version. self.conjugate, parent_dict = check_conjugacy(self.stochastic, self.target_class) self.__dict__.update(parent_dict) self.N = int(np.sum([safe_len(d_now.value) for d_now in self.d])) self.N_d = len(self.d) # TODO: Do this 'at runtime' somehow to accomodate Index. if self.linear_OK: # Get distributional parameters from extended children via LinearCombinations. self.ld, self.lcoef, self.lside, self.lparent_dict = \ check_linear_extended_children(self.stochastic, self.__class__.__name__, self.child_class, self.parent_label) self.lN = int(np.sum([safe_len(d_now.value) for d_now in self.ld])) self.N_ld = len(self.ld) else: zap_extended_children(stochastic, self.__class__.__name__) @deterministic def sum_d(d=self.d): """The sum of the number of 'successes' for each 'experiment'""" return np.sum([np.sum(d_now) for d_now in d]) self.sum_d = sum_d Gibbs.__init__(self, stochastic, verbose) def propose(self): """ Checks that the lengths of the linear parents are zero, then calls Gibbs.propose(). """ if self.linear_OK: for i in xraneg(self.N_ld): # Check that offsets are zero. lincomb = self.ld[i].parents[self.parent_label] if len(lincomb.x) > 0 or len(lincomb.y) > 0: raise ValueError, '%s cannot handle stochastic %s: Child %s depends on %s plus a nonzero offset.' % \ (self.__class__.__name__, self.stochastic, self.ld[i], self.stochastic) # Check that lengths of factor arrays are 1. if len(self.lcoef[i]) > 1: raise ValueError, '%s cannot handle stochastic %s: Child %s multiplies it by more than one coefficient.' % \ (self.__class__.__name__, self.stochastic, self.ld[i]) Gibbs.propose(self) @classmethod def competence(cls, stochastic): for req_attr in ['child_class', 'target_class', 'parent_label', 'linear_OK']: if not hasattr(cls, req_attr): return 0 import pymc try: junk = check_children(stochastic, cls.__name__, cls.child_class, cls.parent_label) if cls.linear_OK: junk = check_linear_extended_children(stochastic, cls.__name__, cls.child_class, cls.parent_label) else: zap_extended_children(stochastic, cls.__name__) except: return 0 conjugate, junk = check_conjugacy(stochastic, cls.target_class) if conjugate: return pymc.conjugate_Gibbs_competence else: return pymc.nonconjugate_Gibbs_competence # TODO: When allowing mixed conjugacy, allow Categorical children also. class DirichletMultinomial(StandardGibbs): """ Applies to p in the following submodel: d_i ~ind Multinomial(n_i, p) p ~ Dirichlet(theta) [optional] """ linear_OK = False child_class = Multinomial parent_label = 'p' target_class = Dirichlet def __init__(self, p, verbose=0): StandardGibbs.__init__(self, p, verbose=0) @deterministic def like_theta(d=self.d, N_d = self.N_d): out = 0. for i in xrange(N_d): out += d[i] return out self.like_theta = like_theta def propose(self): theta = self.like_theta.value if self.conjugate: theta = theta + self.theta.value else: theta += 1. self.stochastic.value = rdirichlet(theta) class WishartMvNormal(StandardGibbs): """ Applies to tau in the following submodel: d_i ~ind Normal(mu_i, tau) tau ~ Wishart(n, C) [optional] where the stochastics d are parametrized by precision, not covariance. """ linear_OK = True child_class = MvNormal parent_label = 'tau' target_class = Wishart def __init__(self, tau, verbose=0): StandardGibbs.__init__(self, tau, verbose=verbose) @deterministic def like_Tau(N_d = self.N_d, d = self.d, parent_dict = self.parent_dict): quad_term = 0. for i in xrange(N_d): delta_now = d[i] - parent_dict['mu'][i] quad_term += np.outer(delta_now, delta_now) return np.asmatrix(quad_term) @deterministic def like_lin_Tau(N_ld = self.N_ld, ld = self.ld, lparent_dict = self.lparent_dict, lside = self.lside, lcoef = self.lcoef): quad_term = 0. for i in xrange(N_ld): delta_now = ld[i] - lparent_dict['mu'][i] if lcoef[i][0] is not None: if lside[i] == 'L': quad_term += np.dot(np.outer(delta_now, delta_now), lcoef[i][0]) else: quad_term += np.dot(lcoef[i][0], np.outer(delta_now, delta_now)) return np.asmatrix(quad_term) self.like_Tau, self.like_lin_Tau = like_Tau, like_lin_Tau def propose(self): n = self.N_d Tau = self.like_Tau.value + self.like_lin_Tau.value pdb.set_trace() if self.conjugate: n += self.n.value Tau += self.Tau.value else: n += 1. self.stochastic.value = np.asmatrix(rwishart(n, Tau)) class BetaX(StandardGibbs): """ Base class for conjugacy involving Beta. """ linear_OK = False target_class = Beta def __init__(self, stochastic, verbose=0): StandardGibbs.__init__(self, stochastic, verbose=verbose) def propose(self): alpha = self.like_alpha.value beta = self.like_beta.value if self.conjugate: alpha = alpha + self.alpha.value beta = beta + self.beta.value else: alpha += 1. beta += 1. self.stochastic.value = np.random.beta(alpha, beta) class BetaGeometric(BetaX): """ Applies to p in the following submodel: d_i ~ind Geometric(p) p ~ Beta(alpha, beta) [optional] """ child_class = Geometric parent_label = 'p' def __init__(self, p, verbose=0): BetaX.__init__(self, p, verbose) @deterministic def like_alpha(N = self.N): return N self.like_alpha = like_alpha self.like_beta = self.sum_d # TODO: When allowing mixed conjugacy, allow Bernoulli children also. class BetaBinomial(BetaX): """ Applies to p in the following submodel: d_i ~ind Binomial(n_i, p) p ~ Beta(alpha, beta) [optional] """ child_class = Binomial parent_label = 'p' def __init__(self, p, verbose=0): BetaX.__init__(self, p, verbose) self.like_alpha = self.sum_d @deterministic def like_beta(N_d = self.N_d, d = self.d, parent_dict = self.parent_dict): out = 0. for i in xrange(N_d): out += np.sum(parent_dict['n'][i] - d[i]) return out self.like_beta = like_beta class GammaX(StandardGibbs): """ Base class for conjugacy involving Gamma. """ linear_OK = True target_class = Gamma def __init__(self, stochastic, verbose=0): StandardGibbs.__init__(self, stochastic, verbose=verbose) @deterministic def sum_ld(N_ld = self.N_ld, ld = self.ld, lcoef = self.lcoef, lside=self.lside): out = 0. for i in xrange(N_ld): if lcoef[i][0] is not None: if lside[i] == 'L': out += np.sum(np.dot(np.transpose(lcoef[i][0]), ld[i])) else: out += np.sum(np.dot(ld[i], np.transpose(lcoef[i][0]))) return out self.sum_ld = sum_ld def propose(self): alpha = self.like_alpha.value beta = self.like_beta.value if self.conjugate: alpha = alpha + self.alpha.value beta = beta + self.beta.value else: alpha += 1. self.stochastic.value = np.random.gamma(alpha, 1./beta) class GammaExponential(GammaX): """ Applies to beta in the following submodel: d_i ~ind Exponential(beta) beta ~ Gamma(...) [optional] Optionally, can apply to beta in: d_i ~ind Exponential(l_i) l_i = LinearCombination([beta],[y_i]) beta ~ Gamma(...) [optional] where beta is one of the elements of either x or y. """ child_class = Exponential parent_label = 'beta' def __init__(self, beta, verbose=0): self.stochastic = beta GammaX.__init__(self, beta, verbose) @deterministic def like_alpha(N = self.N, lN = self.lN): return N + lN self.like_alpha = like_alpha @deterministic def like_beta(sum_ld = self.sum_ld, sum_d = self.sum_d): return sum_d + sum_ld self.like_beta = like_beta class GammaPoisson(GammaX): """ Applies to mu in the following submodel: d_i ~ind Poisson(mu) mu ~ Gamma(...) [optional] Optionally can apply to mu in: d_i ~ind Poisson(l_i) l_i = LinearCombination([mu],[y_i]) mu ~ Gamma(...) [optional] """ child_class = Poisson parent_label = 'mu' def __init__(self, mu, verbose=0): self.stochastic = mu GammaX.__init__(self, mu, verbose) self.like_alpha = Lambda('like_alpha', lambda sum_d = self.sum_d, sum_ld = self.sum_ld: sum_d + sum_ld) @deterministic def like_beta(d = self.ld, lN = self.lN, N = self.N, lcoef = self.lcoef, lside = self.lside): out = N for i in xrange(lN): if lcoef[i][0] is not None: if lside[i]=='L': out += np.sum(np.sum(lcoef[i][0], axis=1)) else: out += np.sum(np.sum(lcoef[i][0], axis=0)) return out self.like_beta = like_beta class GammaGamma(GammaX): """ Applies to beta in the following submodel: d_i ~ind Gamma(alpha_i, beta) beta ~ Gamma(...) [optional] Optionally can apply to beta in: d_i ~ind Gamma(alpha_i, l_i) l_i = LinearCombination([beta],[y_i]) beta ~ Gamma(...) [optional] """ child_class = Gamma parent_label = 'beta' def __init__(self, beta, verbose=0): self.stochastic = beta GammaX.__init__(self, beta, verbose) @deterministic def like_alpha(lparent_dict = self.lparent_dict, parent_dict = self.parent_dict, N_d = self.N_d, N_ld = self.N_ld): out = 0. for i in xrange(self.N_d): out += np.sum(parent_dict['alpha'][i]) for i in xrange(self.N_ld): out += np.sum(lparent_dict['alpha'][i]) return out self.like_alpha = like_alpha @deterministic def like_beta(sum_ld = self.sum_ld, sum_d = self.sum_d): return sum_d + sum_ld self.like_beta = like_beta class GammaNormal(GammaX): """ Applies to tau in the following submodel: d ~ind N(mu, tau * theta) tau ~ Gamma(alpha, beta) [optional] Optionally can apply to tau in: d ~ind N(mu, l_i * theta) l_i = LinearCombination([tau],[y_i]) tau ~ Gamma(...) [optional] """ child_class = Normal parent_label = 'tau' def __init__(self, tau, verbose=0): self.stochastic = tau GammaX.__init__(self, tau, verbose) @deterministic def like_alpha(N=self.N, lN=self.lN): return .5 * (N + lN) @deterministic def like_beta(d=self.d, ld=self.ld, parent_dict=self.parent_dict, lparent_dict=self.lparent_dict, lcoef=self.lcoef, lside=self.lside, N_d=self.N_d, N_ld=self.N_ld): quad_term = 0. for i in xrange(self.N_d): delta_now = d[i] - parent_dict['mu'][i] quad_term += np.dot(delta_now, delta_now) for i in xrange(N_ld): if lcoef[i][0] is not None: delta_now = ld[i] - lparent_dict['mu'][i] if lside[i] == 'L': quad_term += np.dot(np.dot(delta_now, lcoef[i][0]), delta_now) else: quad_term += np.dot(delta_now, np.dot(delta_now, lcoef[i][0])) return quad_term * .5 self.like_alpha, self.like_beta = like_alpha, like_beta class BernoulliAnything(Gibbs): """ Formerly known as BinaryMetropolis. """ target_class = Bernoulli child_class = None parent_label = 'p' linear_OK = True def __init__(self, stochastic, dist=None): # BinaryMetropolis class initialization # Initialize superclass Metropolis.__init__(self, stochastic, dist=dist) # Initialize verbose feedback string self._id = stochastic.__name__ def set_stochastic_val(self, i, val, to_value): """ Utility method for setting a particular element of a stochastic's value. """ if self._len>1: # Vector-valued stochastics val[i] = to_value self.stochastic.value = reshape(val, check_type(self.stochastic)[1]) else: # Scalar stochastics self.stochastic.value = to_value def step(self): """ This method is substituted for the default step() method in BinaryMetropolis. """ # Make local variable for value if self._len > 1: val = self.stochastic.value.ravel() else: val = self.stochastic.value for i in xrange(self._len): self.set_stochastic_val(i, val, True) try: logp_true = self.stochastic.logp loglike_true = self.loglike except ZeroProbability: self.set_stochastic_val(i, val, False) continue self.set_stochastic_val(i, val, False) try: logp_false = self.stochastic.logp loglike_false = self.loglike except ZeroProbability: self.set_stochastic_val(i,val,True) continue p_true = exp(logp_true + loglike_true) p_false = exp(logp_false + loglike_false) # Stochastically set value according to relative # probabilities of True and False if np.random.random() > p_true / (p_true + p_false): self.set_stochastic_val(i,val,True) # Increment accepted count self.accepted += 1 pymc-2.2+ds/pymc/sandbox/MultiModelInference/000077500000000000000000000000001204033704200212225ustar00rootroot00000000000000pymc-2.2+ds/pymc/sandbox/MultiModelInference/ModelPosterior.py000066400000000000000000000065561204033704200245570ustar00rootroot00000000000000# March 30 07 AP: This can work with any Model subclass, not just Sampler. from pymc import * from numpy import mean, exp, Inf, zeros from pymc import six xrange = six.moves.xrange __all__ = ['sample_likelihood', 'weight'] def sample_likelihood(model, iter, verbose=0): """ Returns iter samples of log p(data|self.stochastics, self) * sum(self.potentials) and sum(self.potentials), where 'sample' means that self.stochastics are drawn from their joint prior and then these quantities are evaluated. See documentation. Exponentiating, averaging and dividing the return values gives an estimate of the model likelihood, p(data|self). """ model._generations = find_generations(model) loglikes = zeros(iter) if len (model.potentials) > 0: logpots = zeros(iter) else: logpots = zeros(1, dtype=float) try: for i in xrange(iter): if verbose>0: if i % 10000 == 0: print 'Sample ', i, ' of ', iter model.draw_from_prior() for datum in model.observed_stochastics | model.potentials: loglikes[i] += datum.logp if len (model.potentials) > 0: for pot in model.potentials: logpots[i] += pot.logp except KeyboardInterrupt: print 'Halted at sample ', i, ' of ', iter return loglikes[:i], logpots[:i] def weight(models, iter, priors = None, verbose=0): """ posteriors, loglikes, logpots = weight(models, iter, priors = None) models is a list of Models, iter is the number of samples to use, and priors is a dictionary of prior weights keyed by model. Example: M1 = Model(model_1) M2 = Model(model_2) p, ll, lp = weight(models = [M1,M2], iter = 100000, priors = {M1: .8, M2: .2}) Returns a dictionary keyed by model of the model posterior probabilities, and two similar dictionaries containing the log-likelihoods and log-potentials sampled over the course of the estimation. WARNING: the weight() function will usually not work well unless the dimension of the parameter space is small. Please do not trust its output unless you check that it has weighted a large number of samples more or less evenly. """ # TODO: Need to attach a standard error to the return values. loglikes = {} logpots = {} i=0 for model in models: if verbose > 0: print 'Model ', i loglikes[model], logpots[model] = sample_likelihood(model, iter, verbose) i+=1 # Find max log-likelihood for regularization purposes max_loglike = -Inf max_logpot = -Inf for model in models: max_loglike = max((max_loglike,loglikes[model].max())) max_logpot = max((max_logpot,logpots[model].max())) posteriors = {} sumpost = 0 for model in models: # Regularize loglikes[model] -= max_loglike logpots[model] -= max_logpot # Exponentiate and average posteriors[model] = mean(exp(loglikes[model])) / mean(exp(logpots[model])) # Multiply in priors if priors is not None: posteriors[model] *= priors[model] # Count up normalizing constant sumpost += posteriors[model] # Normalize for model in models: posteriors[model] /= sumpost return posteriors, loglikes, logpots pymc-2.2+ds/pymc/sandbox/MultiModelInference/__init__.py000066400000000000000000000002751204033704200233370ustar00rootroot00000000000000""" PyMC multi-model inference support """ # __modules__ = ["RJMCMC", "ModelPosterior"] __modules__ = ["ModelPosterior"] for mod in __modules__: exec "from %s import *" % mod del mod pymc-2.2+ds/pymc/sandbox/NormalSubmodel.py000066400000000000000000000714671204033704200206440ustar00rootroot00000000000000# Bottleneck is now slicing in two places: tau_chol, which fetches from 'A' and places into # the Cholesky factor based on stochastics (not much to do about this); and tau_offdiag / # changeable_tau, which doesn't yet slice efficiently with irregular strides. Hopefully # the post to scipy gives some ideas. # May want to construct sparse matrices directly in coordinate format in Pyrex in the future. # # TODO: Real test suite. # TODO: Possibly base this on GDAGsim. Would make programming a little # easier, but mostly would be a lighter dependency. __author__ = 'Anand Patil, anand.prabhakar.patil@gmail.com' from pymc import * import copy as sys_copy import numpy as np from graphical_utils import * import cvxopt as cvx from cvxopt import base, cholmod from IPython.Debugger import Pdb from pymc import six xrange = six.moves.xrange normal_classes = [Normal, MvNormal, MvNormalCov, MvNormalChol] __all__ = ['normal_classes', 'sp_to_ar', 'assign_from_sparse', 'slice_by_stochastics', 'spmat_to_backsolver', 'crawl_normal_submodel', 'NormalSubmodel'] def sp_to_ar(sp): """ Debugging utility function that converts cvxopt sparse matrices to numpy matrices. """ shape = sp.size ar = np.asmatrix(np.empty(shape)) for i in xrange(shape[0]): for j in xrange(shape[1]): ar[i,j] = sp[i,j] return ar def assign_from_sparse(spvec, stochastics, slices): for i in xrange(len(slices)): stochastics[i].value = spvec[slices[i]] def greedy_slices(x, y): """ x and y must be the same length. Will try to match long contiguous or strided blocks in x with long contiguous or strided blocks in y. Return value will be a tuple consisting of two lists of slices. """ if len(x)==0: return ([slice(0,0)], [slice(0,0)]) slices_x = [] slices_y = [] sx = x[0] sy = y[0] csx = x[1]-x[0] csy = y[1]-y[0] for i in xrange(1,len(x)): # Break current slice if x or y breaks stride if not (x[i]-x[i-1]==csx and y[i]-y[i-1]==csy): slices_x.append(slice(sx, x[i-1]+1, csx)) slices_y.append(slice(sy, y[i-1]+1, csy)) csx = x[i+1]-x[i] csy = y[i+1]-y[i] sx = x[i] sy = y[i] # Append final slice slices_x.append(slice(sx, x[-1]+1, csx)) slices_y.append(slice(sy, y[-1]+1, csy)) return (slices_x, slices_y) def contiguize_slices(s_list, slices_from, slices_to): def none_to_1(x): if x is None: return 1 else: return x # Find all indices needed ind_from = [] ind_to = [] for i in xrange(len(s_list)): sf = slices_from[i] st = slices_to[i] ind_from.extend(range(sf.start, sf.stop, none_to_1(sf.step))) ind_to.extend(range(st.start, st.stop, none_to_1(st.step))) ind_from = np.array(ind_from) ind_to = np.array(ind_to) # Greedily break indices into chunks return greedy_slices(ind_from, ind_to) # def slice_by_stochastics(spmat, stochastics_i, stochastics_j, slices_from, slices_to, stochastic_len, mn): # """ # Arguments: # # - spmat : cvxopt sparse matrix # Matrix to be sliced # - stochastics_i : list # Stochastics determining row-indices of slice, in order. # - stochastics_j : list # Stochastics determining column-indices of slice, in order. # - slices_from : dictionary # spmat[slices_from[s1], slices_from[s2]] will give the slice of the precision # matrix corresponding to s1 and s2. # - slices_to : dictionary # Only used if not symm. Saves figuring out how to pack the output matrix # from stochastic_i and stochastic_j. # - stochastic_len : dictionary # stochastic_len[s] gives the length of s. # - mn : dictionary # mn[s] gives the moral neighbors of s. The only nonzero entries in the # precision matrix correspond to moral neighbors, so this can be used to # speed up the slicing. # """ # Ni = len(stochastics_i) # Nj = len(stochastics_j) # # m = sum([stochastic_len[s] for s in stochastics_i]) # n = sum([stochastic_len[s] for s in stochastics_j]) # # out = cvx.base.spmatrix([],[],[], (n,m)) # # symm = stochastics_i is stochastics_j # # i_index = 0 # if not symm: # j_index = 0 # j_slices = {} # for j in xrange(Nj): # sj = stochastics_j[j] # lj = stochastic_len[sj] # j_slices[sj] = slice(j_index, j_index+lj) # j_index += lj # # for i in xrange(Ni): # si = stochastics_i[i] # li = stochastic_len[si] # i_slice = slice(i_index,i_index+li) # i_index += li # i_slice_to = slices_to[si] # i_slice_from = slices_from[si] # # if symm: # # Superdiagonal # for sj in mn[si]: # if slices_to.has_key(sj): # out[slices_to[sj], i_slice_to] = spmat[slices_from[sj], i_slice_from] # # Diagonal # out[i_slice_to,i_slice_to] = spmat[i_slice_from, i_slice_from] # else: # for sj in mn[si]: # if sj not in stochastics_j: # continue # j_slice_from = slices_from[sj] # if i_slice_from.start < j_slice_from.start: # out[j_slices[sj],i_slice] = spmat[i_slice_from, j_slice_from].trans() # else: # out[j_slices[sj],i_slice] = spmat[j_slice_from, i_slice_from] # # return out def spmat_to_backsolver(spmat, N): # Assemple and factor sliced sparse precision matrix. chol = cvx.cholmod.symbolic(spmat, uplo='U') cvx.cholmod.numeric(spmat, chol) # Find the diagonal part of the P.T L D L.T P factorization inv_sqrt_D = cvx.base.matrix(np.ones(N)) cvx.cholmod.solve(chol, inv_sqrt_D, sys=6) inv_sqrt_D = cvx.base.sqrt(inv_sqrt_D) # Make function that backsolves either the Cholesky factor or its transpose # against an input vector or matrix. def backsolver(dev, uplo='U', squared=False, inv_sqrt_D = inv_sqrt_D, chol=chol): if uplo=='U': if squared: cvx.cholmod.solve(chol, dev) else: dev = cvx.base.mul(dev , inv_sqrt_D) cvx.cholmod.solve(chol, dev, sys=5) cvx.cholmod.solve(chol, dev, sys=8) elif uplo=='L': if squared: cvx.cholmod.solve(chol, dev) else: cvx.cholmod.solve(chol, dev, sys=7) cvx.cholmod.solve(chol, dev, sys=4) dev = cvx.base.mul(dev , inv_sqrt_D) return dev return backsolver def crawl_normal_submodel(input): """ Finds the biggest Normal submodel incorporating 'input.' TODO: Make this actually work... """ input = Container(input) NormalSubmodel.check_input(input) output = input.stochastics return output class NormalSubmodel(ListContainer): """ G = NormalSubmodel(input) Input is a submodel consisting entirely of Normals, MvNormals, MvNormalCovs, MvNormalChols and LinearCombinations. The normals can only depend on each other in the mean: the mean of each must be a linear combination of others. Has the capacity to compute the joint canonical parameters of the submodel. The Cholesky factor of the joint precision matrix is stored as a sparse matrix for efficient conditionalization. Supports the following queries: - G.posterior(stochastics) : Cholesky factor of posterior precision and posterior mean of stochastics, conditional on parents and children of submodel. - G.full_conditional(stochastics) : Cholesky factor of precision and mean of stochastics conditional on rest of submodel. - G.prior(stochastics) : Cholesky factor of precision and mean of stochastics conditional on parents of submodel - G.conditional(stochastics, evidence_stochastics) : Cholesky factor of precision and mean of stochastics conditional on evidence_stochastics. """ def __init__(self, input): ListContainer.__init__(self, input) # Need to figure out children and parents of model. self.children, self.parents = find_children_and_parents(self.stochastics | self.observed_stochastics) self.stochastic_list = order_stochastic_list(self.stochastics | self.observed_stochastics) self.check_input(self.stochastic_list) self.N_stochastics = len(self.stochastic_list) self.stochastic_list_numbers = {} for i in xrange(self.N_stochastics): self.stochastic_list_numbers[self.stochastic_list[i]] = i self.stochastic_indices, self.stochastic_len, self.slices, self.len\ = ravel_submodel(self.stochastic_list) self.slice_dict = {} for i in xrange(self.N_stochastics): self.slice_dict[self.stochastic_list[i]] = self.slices[i] self.changeable_stochastic_list = [] self.fixed_stochastic_list = [] for stochastic in self.stochastic_list: if not stochastic in self.children and not stochastic.observed: self.changeable_stochastic_list.append(stochastic) else: self.fixed_stochastic_list.append(stochastic) self.changeable_stochastic_indices, self.changeable_stochastic_len, self.changeable_slices, self.changeable_len\ = ravel_submodel(self.changeable_stochastic_list) self.fixed_stochastic_indices, self.fixed_stochastic_len, self.fixed_slices, self.fixed_len\ = ravel_submodel(self.fixed_stochastic_list) self.get_diag_chol_facs() self.get_A() self.get_mult_A() self.get_tau() self.get_changeable_tau() self.get_mean_dict() self.get_changeable_mean() def get_diag_chol_facs(self): """ Creates self.diag_chol_facs, which is a list. Each element is a list of length 2. The first element is a boolean indicating whether this precision submatrix is diagonal. The second is a Deterministic whose value is the Cholesky factor (upper triangular) or square root of this precision submatrix. """ self.diag_chol_facs = {} for i in xrange(self.N_stochastics): s = self.stochastic_list[i] parent_vals = s.parents.value # Diagonal precision if isinstance(s, Normal): diag = True @deterministic def chol_now(tau=s.parents['tau'], d=s): out = np.empty(np.atleast_1d(d).shape) out.fill(np.sqrt(tau)) return out # Otherwise else: diag = False if isinstance(s, MvNormal): chol_now = Lambda('chol_now', lambda tau=s.parents['tau']: np.linalg.cholesky(tau).T) # Make the next two less stupid! elif isinstance(s, MvNormalCov): chol_now = Lambda('chol_now', lambda C=s.parents['C']: np.linalg.cholesky(np.linalg.inv(C)).T) elif isinstance(s, MvNormalChol): chol_now = Lambda('chol_now', lambda sig=s.parents['sig']: np.linalg.cholesky(np.linalg.inv(np.dot(sig, sig.T))).T) self.diag_chol_facs[i] = [diag, chol_now] self.diag_chol_facs = Container(self.diag_chol_facs) def get_A(self): """ Creates self.A, which is a dictionary of dictionaries. A[si][sj], if present, is a Deterministic whose value is -1 times the coefficient of si in the mean of sj. """ self.A = np.zeros(self.N_stochastics, dtype=object) for i in xrange(self.N_stochastics): s = self.stochastic_list[i] self.A[i] = [] this_A = self.A[i] for c in s.children: if c.__class__ is LinearCombination: for cc in c.children: @deterministic def A(coefs = c.coefs[s], side = c.sides[s]): A = 0. for elem in coefs: if side == 'L': A -= elem.T else: A -= elem return A this_A.append((self.stochastic_list_numbers[cc],(A))) elif c.__class__ in normal_classes: if s is c.parents['mu']: if self.stochastic_len[c] == self.stochastic_len[s]: this_A.append((self.stochastic_list_numbers[c],-np.eye(self.stochastic_len[s]))) else: this_A.append((self.stochastic_list_numbers[c],-np.ones(self.stochastic_len[c]))) self.A = Container(self.A) def get_mult_A(self): """ Creates self.mult_A. This is just like self.A, but self.mult_A[si][sj] = self.diag_chol_facs[sj][1] * self.A[si][sj] """ self.mult_A = np.zeros(self.N_stochastics, dtype=object) for i in xrange(self.N_stochastics): si = self.stochastic_list[i] this_A = self.A[i] self.mult_A[i] = [] this_mult_A = self.mult_A[i] for j, A_elem in this_A: chol_j = self.diag_chol_facs[j] @deterministic def mult_A(diag = chol_j[0], chol_j = chol_j[1], A = A_elem): # If this parent's precision matrix is diagonal if diag: out = (chol_j * A.T).T # If this parent's precision matrix is not diagonal else: out = copy(A) flib.dtrmm_wrap(chol_j, out, side='L', transa='N', uplo='U') return out this_mult_A.append((j, mult_A)) self.mult_A = Container(self.mult_A) def get_tau(self): """ Creates self.tau and self.tau_chol, which are Deterministics valued as the joint precision matrix and its Cholesky factor, stored as cvxopt sparse matrices. """ @deterministic def tau_chol(A = self.mult_A, diag_chol = self.diag_chol_facs): tau_chol = cvx.base.spmatrix([],[],[], (self.len,self.len)) for i in xrange(self.N_stochastics): si = self.stochastic_list[i] i_slice = self.slices[i] this_A = A[i] chol_i = diag_chol[i] chol_i_val = chol_i[1] # Write diagonal if chol_i[0]: tau_chol[i_slice, i_slice] = \ cvx.base.spmatrix(chol_i_val, range(len(chol_i_val)), range(len(chol_i_val))) else: tau_chol[i_slice, i_slice] = cvx.base.matrix(chol_i_val) # Append off-diagonals for j, A_elem in this_A: # If j is a parent of s, tau_chol[self.slices[j], i_slice] = A_elem return tau_chol # Square sparse precision matrix. @deterministic def tau(tau_chol = tau_chol): tau = cvx.base.spmatrix([],[],[], (self.len,self.len)) cvx.base.syrk(tau_chol, tau, uplo='U', trans='T') return tau self.tau, self.tau_chol = tau, tau_chol def get_mean_dict(self): """ Forms self.mean_dict, which is a dictionary. self.mean_dict[x] for stochastic x is: - A constant or PyMC object if x is in the first generation of the normal submodel. - self.slices[x.parents['mu']] if x's direct parent is normal and in the normal submodel. - A list of (constant or PyMC object, slice) or (constant or PyMC object, constant or PyMC object) tuples if x's direct parent is a LinearCombination. In this case, in each element the slice corresponds to x's extended parent that is in the normal submodel (there should only be one per tuple), and the constant or PyMC object that multiplies that parent. """ mean_dict = {} # for i in xrange(self.N_stochastics-1,-1,-1): for s in self.stochastic_list: mu_now = s.parents['mu'] # If parent is in normal submodel if mu_now.__class__ in normal_classes: if mu_now in self.stochastic_list: mean_dict[s] = ('n',self.slice_dict[mu_now]) # If parent is a LinearCombination elif isinstance(mu_now, LinearCombination): mean_terms = [] for j in xrange(len(mu_now.x)): # For those elements that are Normal, # add in the corresponding coefficient times # the element's mean if mu_now.x[j].__class__ in normal_classes: if mu_now.x[j] in self.stochastic_list: mean_terms.append(('l', self.slice_dict[mu_now.x[j]], mu_now.y[j])) if mu_now.y[j].__class__ in normal_classes: if mu_now.y[j] in self.stochastic_list: mean_terms.append(('r', mu_now.x[j], self.slice_dict[mu_now.y[j]])) else: mean_terms.append(('n', mu_now.x[j], mu_now.y[j])) mean_dict[s] = ('l',mean_terms) else: mean_dict[s] = ('c',mu_now) self.mean_dict = mean_dict def get_changeable_mean(self): """ Computes joint 'canonical mean' parameter: joint precision matrix times joint mean. """ @deterministic def mean(mean_dict = self.mean_dict): mean = cvx.base.matrix(0.,size=(self.len, 1)) for i in xrange(self.N_stochastics-1,-1,-1): s = self.stochastic_list[i] sl = self.slices[i] case, info = mean_dict[s] # Constant-parent case if case=='c': mean[sl] = np.ravel(info) # Parent in normal submodel elif case=='n': mean[sl] = mean[info] # Parent is LinearCombination else: this_mean = np.zeros(sl.stop - sl.start) for pair in info: # Left-hand member is in normal submodel if pair[0]=='l': this_mean += np.ravel(np.dot(mean[pair[1]], pair[2])) # Right-hand member is in normal submodel if pair[0]=='r': this_mean += np.ravel(np.dot(pair[1], mean[pair[2]])) # Neither member is in normal submodel else: this_mean += np.ravel(np.dot(pair[1], pair[2])) mean[sl] = this_mean return mean self.mean = mean # Multiply mean by precision @deterministic def full_eta(tau = self.tau, mean = mean): full_eta = cvx.base.matrix(0.,size=(self.len, 1)) cvx.base.symv(tau, mean, full_eta, uplo='U', alpha=1., beta=0.) return full_eta self.full_eta = full_eta # FIXME: Values of 'data'. This is a hack... fix it sometime. @deterministic def x(stochastics = self.fixed_stochastic_list): x = cvx.base.matrix(0.,size=(self.fixed_len, 1)) for i in xrange(len(self.fixed_stochastic_list)): x[self.fixed_slices[i]] = self.fixed_stochastic_list[i].value return x self.x = x # j_slice_from = slices_from[sj] # if i_slice_from.start < j_slice_from.start: # out[j_slices[sj],i_slice] = spmat[i_slice_from, j_slice_from].trans() # else: # out[j_slices[sj],i_slice] = spmat[j_slice_from, i_slice_from] # Slice tau. @deterministic def tau_offdiag(tau = self.tau): out = cvx.base.spmatrix([],[],[], (self.fixed_len, self.changeable_len)) Nc = len(self.changeable_slices_from) Nf = len(self.fixed_slices_from) for i in xrange(Nc): sfi = self.changeable_slices_from[i] sti = self.changeable_slices_to[i] for j in xrange(1, Nf): sfj = self.fixed_slices_from[j] stj = self.fixed_slices_to[j] if sfi.start < sfj.start: out[stj, sti] = tau[sfi,sfj].trans() else: out[stj, sti] = tau[sfj, sfi] return out # return slice_by_stochastics(tau, self.changeable_stochastic_list, # self.fixed_stochastic_list, self.slices, self.changeable_slices, self.stochastic_len, self.moral_neighbors) self.tau_offdiag = tau_offdiag # Condition canonical eta parameter. # Slice canonical eta parameter by changeable stochastics. @deterministic(cache_depth=2) def eta(full_eta = full_eta, x=x, tau_offdiag = tau_offdiag): eta = cvx.base.matrix(0.,size=(self.changeable_len, 1)) for i in xrange(len(self.changeable_slices_from)): sfi = self.changeable_slices_from[i] sti = self.changeable_slices_to[i] eta[sti] = full_eta[sfi] # for s in self.changeable_stochastic_list: # eta[self.changeable_slices[s]] = full_eta[self.slices[s]] cvx.base.gemv(tau_offdiag, x, eta, alpha=-1., beta=1., trans='T') return eta self.eta = eta @deterministic def changeable_mean(backsolver = self.backsolver, eta = self.eta): return np.asarray(backsolver(sys_copy.copy(eta), squared=True)).squeeze() self.changeable_mean = changeable_mean def get_changeable_tau(self): """ Creates self.changeable_tau_slice, which is a Deterministic valued as self.tau sliced according to self.changeable_stochastic_list, and self.backsolver, which solves linear equations involving self.changeable_tau_slice. """ changeable_slices_from = [] fixed_slices_from = [] for s in self.changeable_stochastic_list: changeable_slices_from.append(self.slices[self.stochastic_list_numbers[s]]) for s in self.fixed_stochastic_list: fixed_slices_from.append(self.slices[self.stochastic_list_numbers[s]]) self.changeable_slices_from, self.changeable_slices_to = \ contiguize_slices(self.changeable_stochastic_list, changeable_slices_from, self.changeable_slices) self.fixed_slices_from, self.fixed_slices_to = \ contiguize_slices(self.fixed_stochastic_list, fixed_slices_from, self.fixed_slices) @deterministic def changeable_tau_slice(tau = self.tau): out = cvx.base.spmatrix([],[],[], (self.changeable_len, self.changeable_len)) N = len(self.changeable_slices_from) for i in xrange(N): sfi = self.changeable_slices_from[i] sti = self.changeable_slices_to[i] for j in xrange(i, N): sfj = self.changeable_slices_from[j] stj = self.changeable_slices_to[j] out[sti, stj] = tau[sfi,sfj] return out # return slice_by_stochastics(tau, self.changeable_stochastic_list, # self.changeable_stochastic_list, self.slices, self.changeable_slices, self.stochastic_len, self.moral_neighbors) self.changeable_tau_slice = changeable_tau_slice @deterministic def backsolver(changeable_tau_slice = changeable_tau_slice): cvx.cholmod.options['supernodal'] = 1 return spmat_to_backsolver(changeable_tau_slice, self.changeable_len) self.changeable_tau_slice, self.backsolver = changeable_tau_slice, backsolver def draw_conditional(self): """ Sets values of stochastics in tau_slice_chol's keys to new values drawn conditional on rest of model. """ dev = cvx.base.matrix(np.random.normal(size=self.changeable_len)) dev = np.asarray(self.backsolver.value(dev)).squeeze() dev += self.changeable_mean.value assign_from_sparse(dev, self.changeable_stochastic_list, self.changeable_slices) @staticmethod def check_input(stochastics): """ Improve this... """ if not all([s.__class__ in normal_classes for s in stochastics]): raise ValueError, 'All stochastics must be Normal, MvNormal, MvNormalCov or MvNormalChol.' for s in stochastics: # Make sure all extended children are Normal. for c in s.extended_children: if c.__class__ in normal_classes: if c in s.children: if not s is c.parents['mu']: raise ValueError, 'Stochastic %s is a non-mu parent of stochastic %s' % (s,c) else: raise ValueError, 'Stochastic %s has non-Normal extended child %s' % (s,c) # Make sure all children that aren't Normal but have extended children are LinearCombinations. for c in s.children: if isinstance(c, Deterministic): if len(c.extended_children) > 0: if c.__class__ is LinearCombination: for i in xrange(len(c.x)): if c.x[i].__class__ in normal_classes and c.y[i].__class__ in normal_classes: raise ValueError, 'Stochastics %s and %s are multiplied in LinearCombination %s. \ They cannot be in the same Gassian submodel.' % (c.x[i], c.y[i], c) if sum([x is s for x in c.x]) + sum([y is s for y in c.y]) > 1: raise ValueError, 'Stochastic %s cannot appear more than once in the terms of \ LinearCombination %s.' % (s,c) else: raise ValueError, 'Stochastic %s has a parent %s which is Deterministic, but not\ LinearCombination, which has extended children.' % (s,c) if __name__=='__main__': from pylab import * import numpy as np # # ========================================= # # = Test case 1: Some old smallish model. = # # ========================================= # A = Normal('A',1,1) # B = Normal('B',A,2*np.ones(2)) # C_tau = np.diag([.5,.5]) # C_tau[0,1] = C_tau[1,0] = .25 # C = MvNormal('C',B, C_tau,observed=True) # D_mean = LinearCombination('D_mean', x=[np.ones((3,2))], y=[C]) # # D = MvNormal('D',D_mean,np.diag(.5*np.ones(3))) # # D = Normal('D',D_mean,.5*np.ones(3)) # G = NormalSubmodel([B,C,A,D,D_mean]) # # G = NormalSubmodel([A,B,C]) # G.draw_conditional() # # dense_tau = sp_to_ar(G.tau.value) # for i in xrange(dense_tau.shape[0]): # for j in xrange(i): # dense_tau[i,j] = dense_tau[j,i] # CC=(dense_tau).I # sig_tau = np.linalg.cholesky(dense_tau) # # ================================ # # = Test case 2: Autoregression. = # # ================================ # # # N=100 # W = Uninformative('W',np.eye(2)*N) # base_mu = Uninformative('base_mu', np.ones(2)*3) # # W[0,1] = W[1,0] = .5 # x_list = [MvNormal('x_0',base_mu,W,value=np.zeros(2))] # for i in xrange(1,N): # # L = LinearCombination('L', x=[x_list[i-1]], y = [np.eye(2)]) # x_list.append(MvNormal('x_%i'%i,x_list[i-1],W)) # # # W = N # # x_list = [Normal('x_0',1.,W,value=0)] # # for i in xrange(1,N): # # # L = LinearCombination('L', x=[x_list[i-1]], coefs = {x_list[i-1]:np.ones((2,2))}, offset=0) # # x_list.append(Normal('x_%i'%i,x_list[i-1],W)) # # # x_list[-1].value = x_list[-1].value * 0. + 1. # x_list[N/2].observed=True # # G = NormalSubmodel(x_list) # # C = Container(x_list) # # # # dense_tau = sp_to_ar(G.tau.value) # # for i in xrange(dense_tau.shape[0]): # # for j in xrange(i): # # dense_tau[i,j] = dense_tau[j,i] # # CC=(dense_tau).I # # sig_tau = np.linalg.cholesky(dense_tau) # # # # clf() # # for i in xrange(10): # # G.draw_conditional() # # # G.draw_prior() # # # # # for x in x_list: # # # x.random() # # # # plot(array(C.value)) # # # plot(hstack(C.value)) # # # # # dev = np.random.normal(size=2.*N) # # # plot(np.linalg.solve(sig_tau.T, dev)[::-2]) # # # # pymc-2.2+ds/pymc/sandbox/RJMCMC/000077500000000000000000000000001204033704200163035ustar00rootroot00000000000000pymc-2.2+ds/pymc/sandbox/RJMCMC/RJMCMC.py000066400000000000000000000101151204033704200176260ustar00rootroot00000000000000from pymc import Stochastic, Deterministic, Node, StepMethod from numpy import ma, random, where from numpy.random import random from copy import deepcopy class OneAtATimeRJ(StepMethod): """ S = OneAtATimeRJ(self, stochs, indicator, p, rp, g, q, rq, inv_q, Jacobian, **kwargs) OneAtATimeRJ can control single indicatored-array-valued stochs. The indicator indicates which stochs are currently 'in the model;' if stoch.value.indicator[index] = True, that index is currently being excluded. indicatored-array-valued stochs and their children should understand how to cope with indicatored arrays when evaluating their logpabilities. The prior for the indicatored-array-valued stoch may depend explicitly on the indicator. The dtrm arguments are, in notation similar to that of Waagepetersen et al., def rp(indicator): Draws a new value for the indicator. def p(indicator): Returns the probability of jumping to indicator.value from indicator.last_value inder rp. def rq(indicator): Draws a value for the auxiliary RV's u given indicator.value (proposed), indicator.last_value (current), and the value of the stochs. def g(indicator, u, **stochs): g generates a new value for the stochs given indicator.last_value (current) and indicator.value (proposed), the current value of the stoch, and the auxiliary RV's u which are generated by rq. def q(indicator, u): q computes the density of the auxiliary RV's u given the last_values of the stochs, and the current and proposed indicator values. def inv_q(indicator): inv_q computes the density, under the distribution defined by rq, of the value of u which would have been required to propose last_value of stochs from current_value. def Jacobian(indicator, u, **stochs): Returns the log Jacobian of the jump transformation (u,z) -> (u',z'), where u' is the value of the auxiliary RV u which would have been required to propose the current value z from the proposed value z_p. (u' is never used directly by this class, just implicitly in inv_q and Jacobian in case the transformation (z',z) -> u' isn't invertible. I think it's OK as far as math goes to use inverse images.) """ def __init__(self, stochs, indicator, p, rp, g, q, rq, inv_q, Jacobian): StepMethod.__init__(self, nodes = stochs) self.g = g self.q = q self.rq = rq self.p = p self.rp = rp self.inv_q = inv_q self.Jacobian = Jacobian self.stoch_dict = {} for stoch in stochs: self.stoch_dict[stoch.__name__] = stoch self.indicator = indicator def propose(self): """ Sample a new indicator and value for the stoch. """ self.rp(self.indicator) self._u = self.rq(self.indicator) self.g(self.indicator, self._u, **self.stoch_dict) def step(self): # logpability and loglike for stoch's current value: logp = sum([stoch.logp for stoch in self.stochs]) + self.indicator.logp loglike = self.loglike # Sample a candidate value for the value and indicator of the stoch. self.propose() # logpability and loglike for stoch's proposed value: logp_p = sum([stoch.logp for stoch in self.stochs]) + self.indicator.logp # Skip the rest if a bad value is proposed if logp_p == -Inf: for stoch in self.stochs: stoch.revert() return loglike_p = self.loglike # test: test_val = logp_p + loglike_p - logp - loglike test_val += self.inv_q(self.indicator) test_val += self.q(self.indicator,self._u) if self.Jacobian is not None: test_val += self.Jacobian(self.indicator,self._u,**self.stoch_dict) if log(random()) > test_val: for stoch in self.stochs: stoch.revert def tune(self): pass pymc-2.2+ds/pymc/sandbox/RJMCMC/test_RJMCMC.py000066400000000000000000000004071204033704200206700ustar00rootroot00000000000000from numpy.testing import * from RJMCMC import * import transd_model from numpy.testing import * def test_RJMCMC(NumpyTestCase): def check(self): RM = Sampler(transd_model) RM.sample(100,10,1) if __name__=='__main__': NumpyTest().run() pymc-2.2+ds/pymc/sandbox/RJMCMC/test_trans_d.py000066400000000000000000000006051204033704200213470ustar00rootroot00000000000000""" The trans-dimensional example """ from numpy.testing import * from pylab import * PLOT=True class test_Sampler(NumpyTestCase): def check(self): from pymc import Sampler from pymc.examples import trans_dimensional M = Sampler(trans_dimensional) M.sample(5000,0,10,verbose=False) M.plot() if __name__ == '__main__': NumpyTest().run() pymc-2.2+ds/pymc/sandbox/RJMCMC/trans_dimensional.py000066400000000000000000000033231204033704200223670ustar00rootroot00000000000000from pymc import stoch, data, discrete_stoch from numpy import arange, ones, eye, sum, zeros, exp, concatenate from numpy.random import normal from pymc import normal_like, uniform_like, JointMetropolis, DiscreteMetropolis from pymc import six xrange = six.moves.xrange # Generate data K_true = 5 T=20 A_true = -.4*exp(arange(0,-K_true,-1,dtype=float)) X_true = zeros(T,dtype=float) X_init_val_true = 2. X_true[:K_true] = X_init_val_true for i in xrange(K_true,T): X_true[i] = sum(A_true * X_true[i-K_true:i]) + normal() obs_interval = 5 X_obs_vals = X_true[::obs_interval] + normal(size=T/obs_interval) if __name__ == '__main__': from pylab import * plot(X_true) show() # Probability model mu_x_init = 1. tau_x_init = 1. K_min = 0 K_max = 15 @discrete_stoch def K(value=5, min = K_min, max = K_max): """K ~ uniform(min, max)""" return uniform_like(value, min, max) A_init = zeros(K_max,dtype=float) A_init[:K_true] = A_true @stoch def A(value=A_init, mu=-1.*ones(K_max,dtype=float), tau=ones(K_max,dtype=float)): """A ~ normal(mu, tau)""" return normal_like(value, mu, tau) @stoch(trace=False) def X(value=X_true, K=K, A=A, mu = mu_x_init, tau = tau_x_init): """Autoregression""" # Initial data logp=normal_like(value[:K], mu, tau) # Difference equation for i in xrange(K,T): logp += normal_like(value[i], sum(A[:K]*value[i-K:i]), 1.) return logp @data def X_obs(value=X_obs_vals, mu=X, tau=1.): """Data""" return normal_like(value, mu[::obs_interval], tau) # JointMetropolis step method to handle X and A oneatatime_scales = {X: .2, A: .2} J = JointMetropolis([X, A], oneatatime_scales = oneatatime_scales) # S = DiscreteOneAtATimeMetropolis(K, scale=.01) pymc-2.2+ds/pymc/sandbox/__init__.py000066400000000000000000000002541204033704200174420ustar00rootroot00000000000000__modules__ = ['bayes','EM','parallel','NormalSubmodel','NormalModel','DLM','DP'] for mod in __modules__: try: exec('import %s' %mod) except: pass pymc-2.2+ds/pymc/sandbox/bivariate_normal.py000066400000000000000000000031061204033704200212200ustar00rootroot00000000000000"""Example of trivial Gibbs sampling from Gelman et al., Bayesian Data Analysis. Consider a single observation $(y_1, y_2)$ from a bivariate normal distribution populatioan with unknown mean $\theta=(\theta_1, \theta_2)$ and known covariance matrix ${1,\rho \choose \rho, 1}$. With a uniform prior distribution on $\theta$, the posterior distribution is $$p(\theta_1, \theta_2|y) = \mathrm{N}\left( {y_1\choose y_2} , {1,\rho \choose \rho, 1} \right)\]$$ p(\theta_1 \mid \theta_2, y) = \mathrm{N}(y_1 + \rho(\theta_2 -y_2), 1-\rho^2) p(\theta_2 \mid \theta_1, y) = \mathrm{N}(y_2 + \rho(\theta_1 -y_1), 1-\rho^2) """ from pymc import stoch, observed, rnormal, normal_like, Uniform, GibbsSampler @stoch def theta1(value, theta2, y, rho): """Conditional probability p(theta1|theta2, y, rho)""" def logp(value, theta2, y, rho): mean = y[0]+rho*(theta2-y[1]) var = 1.-rho^2 return normal_like(value, mean, 1./var) def random(theta2, y, rho): mean = y[0]+rho*(theta2-y[1]) var = 1.-rho^2 return rnormal(value, mean, 1./var) @stoch def theta2(value, theta1, y, rho): """Conditional probability p(theta2|theta1, y, rho)""" def logp(value, theta2, y, rho): mean = y[1]+rho*(theta1-y[0]) var = 1.-rho^2 return normal_like(value, mean, 1./var) def random(theta2, y, rho): mean = y[0]+rho*(theta2-y[1]) var = 1.-rho^2 return rnormal(value, mean, 1./var) rho = Uniform('rho', rseed=True, lower=0, upper=1) @observed def y(value=(3,6)): return 0 G = GibbsSampler([theta1, theta2, rho]) pymc-2.2+ds/pymc/sandbox/dselect/000077500000000000000000000000001204033704200167535ustar00rootroot00000000000000pymc-2.2+ds/pymc/sandbox/dselect/defaults.py000066400000000000000000000031011204033704200211270ustar00rootroot00000000000000"""Default parameters for pymc distributions.""" import pymc import inspect pymc_default_parameters = { 'arlognormal': dict(a=1., sigma=1., rho=0., beta=1.), 'bernoulli': dict(p=.5), 'beta': dict(alpha=1., beta=1.), 'binomial': None, 'categorical': None, 'cauchy': dict(alpha=0., beta=1.), 'chi2': dict(nu=1), 'dirichlet': None, 'discrete_uniform': dict(lower=-10000, upper=10000), 'exponential': dict(beta=1.), 'exponweib': dict(alpha=1., k=1., loc=0., scale=1.), 'gamma': dict(alpha=.5, beta=.5), 'geometric': dict(p=.5), 'gev': dict(xi=1., mu=0., sigma=1.), 'half_normal': dict(tau=1.), 'hypergeometric': dict(n=2, m=1, N=5), 'inverse_gamma': dict(alpha=1., beta=1.), 'lognormal': dict(mu=0., tau=1.), 'multinomial': None, 'multivariate_hypergeometric': None, 'mv_normal_chol': None, 'mv_normal_cov': None, 'mv_normal_like': None, 'negative_binomial': dict(mu=1., alpha=1.), 'normal': dict(mu=0., tau=1.), 'one_over_x': None, 'poisson': dict(mu=2.), 'skew_normal': dict(mu=0., tau=1., alpha=1.), 'trunc_norm': dict(mu=0., sigma=1., a=-10000, b=10000), 'uniform': dict(lower=-10000, upper=10000), 'uninformative': None, 'weibull': dict(alpha=1., beta=1.), 'wishart': None, 'wishart_cov': None} def pymc_default_list(dist): """Return the list of default values for distribution.""" f = getattr(pymc, '%s_like'%dist) vars = inspect.getargs(f.func_code)[0][1:] return [pymc_default_parameters[dist][v] for v in vars] scipy_default_parameters={} pymc-2.2+ds/pymc/sandbox/dselect/istat.mac000066400000000000000000000002121204033704200205540ustar00rootroot00000000000000 eq1: m = alpha/(alpha+beta)*scale+loc; eq2: v = alpha*beta/(alpha+beta)^2/(alpha+beta+1)*scale^2; sol: solve([eq1,eq2], [alpha, beta]); pymc-2.2+ds/pymc/sandbox/dselect/istat.py000066400000000000000000000045771204033704200204660ustar00rootroot00000000000000"""Distribution parameters given the mean and variance.""" import numpy as np from scipy import special as sp from scipy.stats import skew, kurtosis import defaults import pymc def beta(**kwds): """Return the parameters of the beta distribution (alpha, beta) given the mean and variance.""" mean = kwds['mean'] var = kwds['variance'] alpha = -(mean*var + mean**3 - mean**2) / var beta = ((mean-1)*var + mean**3 - 2*mean**2 + mean) / var return alpha, beta def cauchy(**kwds): """Return the parameters of the cauchy distribution (alpha, beta) given the median and entropy.""" alpha = kwds['median'] E = kwds['entropy'] beta = np.exp(E)/4./np.pi return alpha, beta def chi2(**kwds): """Return the parameter of the chi2 distribution (nu) given the mean.""" return kwds['mean'] def exponential(**kwds): """Return the parameter of the exponential distribution (beta) given the mean.""" return 1./kwds['mean'] def exponweib(**kwds): """Return the parameters of the exponweib distribution (alpha, k, loc, scale) given the mean and variance.""" # Here we need to optimize based on the theoretica moments raise NotImplementedError def gamma(**kwds): """Return the parameters of the gamma distribution (alpha, beta) given the mean and variance.""" mean = kwds['mean'] var = kwds['variance'] beta = mean/var alpha = mean * beta return alpha, beta def weibull(**kwds): """ median=\beta \ln(2)^{1/\alpha} """ #mean = kwds['mean'] #var = kwds['variance'] median = kwds['median'] mode = kwds['mode'] raise NotImplementedError def entropy(r): """Compute a naive estimator of the Shannon entropy.""" p, b = pymc.utils.histogram(r, 'scott', normed=True) p[p==0] += p.mean()*1e-10 return -(p * np.log(p)).sum() def mode(r): """Return an approximative mode.""" p, b = pymc.utils.histogram(r, 'scott', normed=True) i = p.argmax() return b['bincenters'][i] def describe(r): """Return a dictionary with various statistics computed on r: mean, variance, skew, kurtosis, entropy, median. """ stats = {} stats['mean'] = r.mean() stats['variance'] = r.var() stats['skew'] = skew(r) stats['kurtosis'] = kurtosis(r) stats['median'] = np.median(r) stats['entropy'] = entropy(r) stats['mode'] = mode(r) return stats pymc-2.2+ds/pymc/sandbox/dselect/jacobians.py000066400000000000000000000010031204033704200212500ustar00rootroot00000000000000"""Determinant of the Jacobian of the transformation from the parameters of distributions to their mean and variance. |d mean(a,b) d mean(a,b)| |----------- -----------| | da db | | | | d var(a,b) d var(a,b) | |----------- -----------| | da db | """ def beta(alpha, beta): """Return the determinant of the jacobian for the beta function. """ return -1.0*alpha*beta/((beta+alpha)**3*(beta+alpha+1)**2) pymc-2.2+ds/pymc/sandbox/dselect/model_selection.py000066400000000000000000000176761204033704200225130ustar00rootroot00000000000000import pymc import numpy as np from numpy import exp, log import moments, jacobians, defaults, istat import warnings """ Bayesian Distribution Selection =============================== :author: David Huard :date: May 7, 2008 :institution: McGill University, Montreal, Qc, Canada Introduction ------------ This module implements a function that, given a dataset, selects the `best` statistical distributions among a set. Finding the statistical distribution best suited for describing a particular dataset is part art part science. Decision trees exist, that can help identify the appropriate distribution by answering to some elementary questions. .. image:: figs/decision_tree.jpg Chi square. Of course, simply fitting the Maximum Likelihood parameters and compare the likelihoods of different distributions will lead to spurious results since the likelihood is very much dependent on the whole shape of the distribution and the number of parameters. Concept ------- Here, the idea is to apply Bayesian model selection to select the best model (the statistical distribution). That is, we compute .. math:: W_i \prop p(M_i | data, I) where `W_i` stands for the weight of each distribution, :math:`M_i` the different models, and `I` the prior information on the data. The way we solve this equation is by inserting the distribution parameters as latent variables: .. math:: p(M_i |data, I) & = \int p(M_i, \theta_i | data, I) d\theta_i \\ & = \int p(data | M_i, \theta_i) \pi(\theta_i | I). Now :math:`p(data | M_i, \theta_i)` is simply the likelihood, but we still need to define :math:`\pi(\theta | I)`. The way this is done here is by defining a prior distribution on X :math:`I : \pi(x)`. The problem now boils down to finding `\pi(\theta_i | I)` such that .. math:: \int p( x | M_i, \theta_i) \pi(\theta_i | I) d\theta_i = \pi(x). This is problematic because there won't, in general, exist a unique solution for `\pi(\theta_i | I)`. We need another constraint to define a unique solution. One such constraint is entropy. We will hence define `\pi(\theta_i | I)` as the distribution that satisfies the previous equation and maximizes the entropy. The question now is: how to draw samples `\theta_i^j` that satisfy those constraints ? Here is a potential solution, I don't really know if it works. 1. N random values (r) are drawn from distribution :math:`M_i` using :math:`\theta_i`. 2. The likelihood of `r` is evaluated using :math:`\pi(r)` and assigned to the parameters :math:`\theta_i`. In nature, systems tend to increase their entropy. So I kinda expect the same thing to happen here. With time, the parameter distribution should increase its entropy. Magical thinking ! The whole procedure can be implemented easily using pymc's MCMC algorithms. The MCMC sampler will explore the parameter space and return a trace that corresponds a random sample drawn from :math:`\pi(\theta_i | I)`. This sample can then be used to compute :math:`E(p(data | M_i, \theta_i)`, which provides the weight of model `i`. Usage ----- """ def builder(data, distributions, xprior, initial_params={}): """Return a MCMC model selection sampler. Parameters --------- data : array Data set used to select the distribution. distributions : sequence A collection of Stochastic instances. For each given function, there has to be an entry in moments, jacobians and defaults with the same __name__ as the distribution. Basically, all we really need is a random method, a log probability and default initial values. We should eventually let users define objects that have those attributes. xprior : function(x) Function returning the log probability density of x. This is a prior estimate of the shape of the distribution. weights : sequence The prior probability assigned to each distribution in distributions. default_params : dict A dictionary of initial parameters for the distribution. """ # 1. Extract the relevant information about each distribution: # name, random generating function, log probability and default parameters. names=[]; random_f={}; logp_f={}; init_val={} for d in distributions: name = d.__name__.lower() if d.__module__ == 'pymc.distributions': random = getattr(pymc, 'r%s'%name) logp = getattr(pymc, name+'_like') initial_values = guess_params_from_sample(data, name) elif d.__module__ == 'pymc.ScipyDistributions': raise ValueError, 'Scipy distributions not yet supported.' else: try: random = d.random logp = d.logp initial_values = d.defaults except: raise ValueError, 'Unrecognized distribution %s'%d.__str__() if initial_values is None: raise ValueError, 'Distribution %s not supported. Skipping.'%name names.append(name) random_f[name] = random logp_f[name] = logp init_val[name] = initial_values init_val.update(initial_params) print random_f, logp_f, init_val # 2. Define the various latent variables and their priors nr = 10 latent= {} for name in names: prior_distribution = lambda value: xprior(random_f[name](size=nr, *value)) prior_distribution.__doc__ = \ """Prior density for the parameters. This function draws random values from the distribution parameterized with values. The probability of these random values is then computed using xprior.""" latent['%s_params'%name] = pymc.Stochastic(logp = prior_distribution, doc = 'Prior for the parameters of the %s distribution'%name, name = '%s_params'%name, parents = {}, value = np.atleast_1d(init_val[name]), ) # 3. Compute the probability for each model lprob = {} for name in names: def logp(params): lp = logp_f[name](data, *params) return lp lprob['%s_logp'%name] = pymc.Deterministic(eval=logp, doc = 'Likelihood of the dataset given the distribution and the parameters.', name = '%s_logp'%name, parents = {'params':latent['%s_params'%name]}) input = latent input.update(lprob) input['names'] = names M = pymc.MCMC(input=input) #for name in names: #M.use_step_method(pymc.AdaptiveMetropolis, input['%s_params'%name], verbose=3) return M def guess_params_from_sample(r, dist): stats = istat.describe(r) try: f = getattr(istat, dist) return np.atleast_1d(f(**stats)) except (NotImplementedError, AttributeError): return defaults.pymc_default_list(dist) def select_distribution(data, distributions, xprior, weights=None, initial_params={}): # 1. Define the prior for the distributions. N = len(distributions) if weights is None: weights = np.ones(N)/N else: assert(np.sum(weights) ==1.) # 2. Create the MCMC sampler and sample M = builder(data, distributions, xprior, initial_params) return M iter = 10000*N tune = iter/5 M.sample(iter, tune) # 3. Compute the weights for name in names: dtrm = getattr(M, '%s_logp'%name) W[name] = np.mean(np.exp(dtrm.trace())) return W def test_builder(): from numpy import random data = random.normal(3,.1,20) return builder(data, [pymc.Lognormal, pymc.Normal], lambda x: pymc.uniform_like(x, 0, 100), initial_params={'normal':np.array([50.,1.])}) def test_selection(): N = 40 r = pymc.rexponential(2.0, size=N) def prior_x(x): """Triangle distribution. A = h*L/2 = 1 """ L=5 h = 2./L if np.all(0.< x) and np.all(x < L): return np.sum(log(h - h/L *x)) else: return -np.inf W = select_distribution(r, [pymc.Exponweib, pymc.Exponential, pymc.Weibull, pymc.Chi2], prior_x) return W pymc-2.2+ds/pymc/sandbox/dselect/moments.py000066400000000000000000000005551204033704200210140ustar00rootroot00000000000000"""moments of some distributions.""" import numpy as np def beta(alpha, beta): """Mean and variance of the beta function. :math:`E(X)=\frac{\alpha}{\alpha+\beta}` :math:`Var(X)=\frac{\alpha \beta}{(\alpha+\beta)^2(\alpha+\beta+1)}` """ m = 1.0 * alpha / (alpha + beta) v = alpha *beta /(alpha+beta)**.2/(alpha+beta+.1) return m,v pymc-2.2+ds/pymc/sandbox/dselect/stat.mac000066400000000000000000000003011204033704200204020ustar00rootroot00000000000000m(alpha, beta) := alpha/(alpha+beta); v(alpha, beta) := alpha*beta/(alpha+beta)^2/(alpha+beta+1); J: jacobian([m(alpha, beta), v(alpha, beta)], [alpha, beta]); dJ: determinant(J); fortran(dJ); pymc-2.2+ds/pymc/sandbox/graphical_utils.py000066400000000000000000000060501204033704200210550ustar00rootroot00000000000000__author__ = 'Anand Patil, anand.prabhakar.patil@gmail.com' from pymc import * def find_generations(stochastics): """ A generation is the set of stochastic variables that only has parents in previous generations. """ generations = [] # Find root generation generations.append(set()) all_children = set() for s in stochastics: all_children.update(s.extended_children & stochastics) generations[0] = stochastics - all_children # Find subsequent _generations children_remaining = True gen_num = 0 while children_remaining: gen_num += 1 # Find children of last generation generations.append(set()) for s in generations[gen_num-1]: generations[gen_num].update(s.extended_children & stochastics) # Take away stochastics that have parents in the current generation. thisgen_children = set() for s in generations[gen_num]: thisgen_children.update(s.extended_children & stochastics) generations[gen_num] -= thisgen_children # Stop when no subsequent _generations remain if len(thisgen_children) == 0: children_remaining = False return generations def ravel_submodel(stochastic_list): """ Takes a list of stochastics and returns: - Indices corresponding to each, - Length of each, - Slices corresponding to each, - Total length, """ N_stochastics = len(stochastic_list) stochastic_indices = [] stochastic_len = np.zeros(N_stochastics, dtype=int) slices = np.zeros(N_stochastics, dtype=object) _len = 0 for i in xrange(len(stochastic_list)): stochastic = stochastic_list[i] # Inspect shapes of all stochastics and create stochastic slices. if isinstance(stochastic.value, np.ndarray): stochastic_len[i] = len(np.ravel(stochastic.value)) else: stochastic_len[i] = 1 slices[i] = slice(_len, _len + stochastic_len[i]) _len += stochastic_len[i] # Record indices that correspond to each stochastic. for j in xrange(len(np.ravel(stochastic.value))): stochastic_indices.append((stochastic, j)) return stochastic_indices, stochastic_len, slices, _len def set_ravelled_stochastic_values(vec, stochastics, slices): for stochastic in stochastics: stochastic.value = vec[slices[stochastic]].reshape(np.shape(stochastic.value)) def find_children_and_parents(stochastic_list): children = [] parents = [] for s in stochastic_list: if len(s.extended_children) > 0: if all([not child in stochastic_list for child in s.extended_children]): children.append(s) if all([not parent in stochastic_list for parent in s.extended_parents]): parents.append(s) return set(children), set(parents) def order_stochastic_list(stochastics): generations = find_generations(stochastics) out = [] for generation in generations[::-1]: out += list(generation) return out pymc-2.2+ds/pymc/sandbox/parallel.py000066400000000000000000000114131204033704200174760ustar00rootroot00000000000000import subprocess from IPython.kernel import client import os, time from pymc import Sampler import numpy as np """ It seems to work, but the real challenge is to get the results back. One solution may be to create a parallel database backend. The backend is instantiated in Parallel, communicates with each process, and serves as a middle man with the real backend. Each time the tally method is called, it calls the real backend tally with the correct chain. This requires setting an optional argument for tally to each backend. def tally(self, index, chain=-1): The sample method is Parallel must initialize the chains """ class Parallel(Sampler): """ Parallel manages multiple MCMC loops. It is initialized with: A = Parallel(prob_def, dbase=None, chains=1, proc=1) Arguments prob_def: class, module or dictionary containing nodes and StepMethods) dbase: Database backend used to tally the samples. Implemented backends: None, hdf5. chains: Number of processes (generally the number of available CPUs.) Externally-accessible attributes: dtrms: All extant Deterministics. stochs: All extant Stochastics with observed = False. data: All extant Stochastics with observed = True. nodes: All extant Stochastics and Deterministics. step_methods: All extant StepMethods. Externally-accessible methods: sample(iter,burn,thin): At each MCMC iteration, calls each step_method's step() method. Tallies Stochastics and Deterministics as appropriate. trace(stoch, burn, thin, slice): Return the trace of stoch, sliced according to slice or burn and thin arguments. remember(trace_index): Return the entire model to the tallied state indexed by trace_index. DAG: Draw the model as a directed acyclic graph. All the plotting functions can probably go on the base namespace and take Stochastics as arguments. See also StepMethod, OneAtATimeMetropolis, Node, Stochastic, Deterministic, and weight. """ def __init__(self, input, db='ram', chains=2): try: mec = client.MultiEngineClient() except: p = subprocess.Popen('ipcluster -n %d'%proc, shell=True) p.wait() mec = client.MultiEngineClient() # Check everything is alright. nproc = len(mec.get_ids()) assert chains <= nproc Sampler.__init__(self, input, db=db) # Import the individual models in each process #mec.pushModule(input) proc = range(chains) try: mec.execute('import %s as input'%input.__name__, proc) except: mec.execute( 'import site' , proc) mec.execute( 'site.addsitedir( ' + `os.getcwd()` + ' )' , proc) mec.execute( 'import %s as input; reload(input)'%input.__name__, proc) # Instantiate Sampler instances in each process mec.execute('from pymc import MCMC', proc) #mec.execute('from pymc.database.parallel import Database') #for i in range(nproc): # mec.execute(i, 'db = Database(%d)'%i) mec.execute("S = MCMC(input, db='txt')", proc) self.mec = mec self.proc = proc def sample(self, iter, burn=0, thin=1, tune_interval=100): proc = self.proc # Set the random initial seeds self.mec.execute('S.seed()', proc) self.mec.execute('nugget = {}') length = int(np.ceil((1.0*iter-burn)/thin)) for i in proc: self.db._initialize(length=length) # Run the chains on each process self.result = self.mec.execute('S.sample(%(iter)i, %(burn)i, %(thin)i, %(tune_interval)i)'%vars(), proc, block=True) self.mec.execute("print 'Sampling terminated successfully on process %d.'%id", proc) # Launch a subprocess that will tally the traces of each sampler. #self.tally() def fetch_samples(self): """Read in the traces dumped by the samplers.""" mec = self.mec data = {} for obj in self._variables_to_tally: name = obj.__name__ print 'getting ', name mec.execute('x = S.%s.trace(chain=-1)'%name, self.proc) data[name] = mec.pull('x', self.proc) for obj in self._variables_to_tally: name = obj.__name__ traces = data[name] for chain, trace in enumerate(traces): for index, v in enumerate(trace): obj.value = v obj.trace.tally(index, chain) if __name__ == '__main__': from pymc.examples import disaster_model P = Parallel(disaster_model, 'ram') P.sample(1000,500,1) #P.mec.killAll(controller=True) pymc-2.2+ds/pymc/sandbox/parse_winbugs.py000066400000000000000000000151031204033704200205520ustar00rootroot00000000000000""" Syntax needed: arrays: x[n:m], x[], x[,3] just translate straight to numpy arrays repeated structures: for (i in a:b) { list of statements to be repeated for increasing values of loop-variable i } Replace '.' with '_' Note will allow some disallowed WinBugs syntax because 'compiles' to Python. Need to deal with constructions like z <- sqrt(y) z <- dnorm(mu, tau) which are allowed only if z is data and if 'sqrt' is invertible. In datafile parser: Pass S-plus structures to rpy... but note WinBugs is row-major, S-Plus is column-major. Need to extract model definition from compound document. Can also write PyMC to WinBugs? """ import pyparsing as pp import pymc as pm import numpy as np # =========================================== # = Map BUGS arithmetic obs to numpy ufuncs = # =========================================== arith_ops = {'+':np.add, '*': np.multiply, '/': np.divide, '-': np.subtract} # ================================================== # = Map BUGS functions to numpy or scipy functions = # ================================================== bugs_funs = {'cloglog': lambda x: log(-log(1-x)), # 'cut' : None Not implemented. 'equals': np.equal, 'inprod': pm.LinearCombination, 'interp.lin': np.interp, 'inverse': np.linalg.inv, 'logdet': lambda x: np.log(np.linalg.det(x)), # Can be optimized 'logit': pm.logit, 'phi': pm.utils.normcdf, 'pow': np.power, 'rank': lambda x, s: np.sum(x<=s), 'ranked': lambda x, s: np.ranx(x)[s], 'round': np.round, 'sd': np.std, 'step': lambda x: x>0, 'trunc': np.floor} for numpy_synonym in ['abs', 'cos', 'exp', 'log', 'max', 'mean', 'min', 'sin', 'sqrt', 'round', 'sum']: bugs_funs[numpy_synonym] = getattr(np, numpy_synonym) try: import scipy bugs_funs.update({'logfact': scipy.special.gammaln, 'loggam': scipy.special.gammaln}) except: pass # ======================================================== # = Map BUGS distributions to PyMC Stochastic subclasses = # ======================================================== bugs_dists = {'bern': (pm.Bernoulli, 'p'), 'bin': (pm.Binomial, 'p', 'n'), 'cat': (pm.Categorical, 'p'), # 'negbin': (pm.NegativeBinomial, '') Need to implement standard parameterization or else translate with a Deterministic. 'pois': (pm.Poisson, 'mu'), 'beta': (pm.Beta, 'alpha', 'beta'), 'chisqr': (pm.Chi2, 'nu'), # 'dexp': Double exponential distribution not implemented. 'exp': (pm.Exponential, 'beta'), 'gamma': (pm.Gamma, 'alpha', 'beta'), # 'gen.gamma': Not implemented 'lnorm': (pm.Lognormal, 'mu', 'tau'), # 'logis': Logistic distribution not implemented 'norm': (pm.Normal, 'mu', 'tau'), # 'par': Pareto distribution not implemented. # 't': T distribution not implemented !? 'unif': (pm.Uniform, 'lower', 'upper'), # 'weib': Uses different parameterization than we do. 'multi': (pm.Multinomial, 'p', 'n'), # 'dirch': Need to apply CompletedDirichlet 'mnorm': (pm.MvNormal, 'mu', 'tau'), # 'mt': Multivariate student's T not implemented 'wish': (pm.Wishart, 'T', 'n')} # ===================================== # = Helper functions for BUGS grammar = # ===================================== def check_distribution(toks): if toks[0] not in bugs_dists: raise NameError, 'Distribution "%s" has no analogue in PyMC.' % toks[0] def check_function(toks): if len(toks) > 1: if toks[0] not in bugs_funs: if toks[0] == 'cut': raise NameError, 'Function "cut" has no analogue in PyMC.' elif toks[0] in ['logfact', 'loggam']: raise NameError, 'Function "%s" requires scipy.special.gammaln, which could not be imported.' % toks[0] else: raise NameError, 'Function %s is not provided by WinBugs.' % toks[0] # ================ # = BUGS grammar = # ================ sl = lambda st: pp.Literal(st).suppress() slo = lambda st: pp.Optional(pp.Literal(st)).suppress() BugsSlice = pp.Forward() # Convert to reference to existing PyMC object or new array, number or Deterministic BugsVar = pp.Word(pp.alphas).setResultsName('name') + pp.Optional(BugsSlice).setResultsName('slice') # Convert to reference to existing object or number BugsAtom = pp.Group((BugsVar ^ pp.Word(pp.nums))) # Convert to number, array or exising object BugsExpr = pp.Forward() # Convert to numpy slice or slice-valued deterministic Bugs1dSlice = pp.Group(pp.delimitedList(pp.Optional(BugsExpr),':')) # Convert to tuple of whatever Bugs1dSlice is BugsSlice << pp.Group(sl('[') + pp.delimitedList(Bugs1dSlice) + sl(']')) # Convert to Stochastic subclass or submodel class. BugsDistribution = (sl('d') + pp.Word(pp.alphas).setResultsName('dist') + sl('(') + pp.delimitedList(BugsExpr).setResultsName('args') + sl(')'))\ .setParseAction(lambda s, l, toks: check_distribution(toks)) # Convert both of these to function, Deterministic instance or new array or number. BugsFunction = pp.Group(pp.Word(pp.alphas).setResultsName('fun') + sl('(') + pp.delimitedList(BugsExpr).setResultsName('args') + sl(')'))\ .setParseAction(lambda s, l, toks: check_function(toks)) BugsExpr << pp.operatorPrecedence(BugsFunction ^ BugsAtom, [('-', 1, pp.opAssoc.RIGHT), (pp.oneOf('* /'),2, pp.opAssoc.LEFT), (pp.oneOf('- +'), 2, pp.opAssoc.LEFT)]) # Convert to Stochastic instance or to submodel. BugsStochastic = pp.Group(BugsVar.setResultsName('lhs') + sl('~') + BugsDistribution.setResultsName('rhs')) # RHS should be Deterministic instance already, change it as needed. BugsDeterministic = pp.Group(BugsVar.setResultsName('lhs') + sl('<-') + (BugsFunction | BugsExpr).setResultsName('rhs')) # Convert to PyMC submodel. BugsSubModel = pp.OneOrMore(BugsStochastic ^ BugsDeterministic) # =============================================== # = Parse actions corresponding to BUGS grammar = # =============================================== if __name__ == '__main__': st = """ x[3] ~ dnorm(2, 5+3) y ~ dnorm(x[18:23,5,], 4) z[] <- log(exp(x+y)/k, y) w <- x + (y + z) * x """ q=BugsSubModel.parseString(st) pymc-2.2+ds/pymc/sandbox/test_Gibbs.py000066400000000000000000000177611204033704200200030ustar00rootroot00000000000000from numpy.testing import * from numpy import * from pymc import * from numpy.random import randint from pylab import * from .GibbsStepMethods import * try: from .NormalSubmodel import * from NormalModel import * except: pass from pymc import six xrange = six.moves.xrange class test_Gibbs(NumpyTestCase): def check_BetaBinomial(self): p = Beta('p',value=.2,alpha=5.,beta=1.) d1 = Binomial('d1', value=randint(0,16,10), n=15, p=p) n2 = Uninformative('n2', value=4) d2 = Binomial('d2', value=randint(0,5,3), n=n2, p=p) p_stepper = BetaBinomial(p) p_values = empty(10000,dtype=float) for i in xrange(10000): p_stepper.step() p_values[i] = p.value a_real = float(sum(d1.value) + sum(d2.value) + 5) b_real = float(15 * 10 + n2.value * 3 + 1 -sum(d1.value) - sum(d2.value)) assert(abs(mean(p_values) - a_real / (a_real + b_real))< .01) assert(abs(var(p_values) - (a_real*b_real) / (a_real + b_real)**2 / (a_real + b_real + 1)) < .001) def check_GammaPoisson(self): mu = Gamma('mu',value=3.,alpha=1.,beta=1.) d_list = [] for i in xrange(10): d_list.append(Poisson('d_%i'%i,mu)) beta_real = 1. + len(d_list) alpha_real = 1. + sum([d.value for d in d_list]) mu_stepper = GammaPoisson(mu) mu_values = empty(10000,dtype=float) for i in xrange(10000): mu_stepper.step() mu_values[i] = mu.value assert(abs(mean(mu_values)-alpha_real/beta_real)<.05) assert(abs(var(mu_values) - alpha_real/beta_real**2)<.05) def check_GammaExponential(self): beta = Gamma('beta',value=3.,alpha=1.,beta=1.) d_list = [] ld_list = [] for i in xrange(10): d_list.append(Exponential('d_%i'%i,beta)) for i in xrange(10): L = LinearCombination('L_%i'%i,[2],[beta]) ld_list.append(Exponential('ld_%i'%i,L)) alpha_real = 1. + len(d_list) + len(ld_list) beta_real = 1. + sum([d.value for d in d_list]) + sum([2.*d.value for d in ld_list]) beta_stepper = GammaExponential(beta) beta_values = empty(10000,dtype=float) for i in xrange(10000): beta_stepper.step() beta_values[i] = beta.value assert(abs(mean(beta_values)-alpha_real/beta_real)<.1) assert(abs(var(beta_values) - alpha_real/beta_real**2)<.05) def check_GammaGamma(self): beta = Gamma('beta',value=3.,alpha=1.,beta=1.) d_list = [] ld_list = [] for i in xrange(10): d_list.append(Gamma('d_%i'%i,i+1,beta)) for i in xrange(10): L = LinearCombination('L_%i'%i,[2],[beta]) ld_list.append(Gamma('ld_%i'%i,i+1,L)) alpha_real = 1. + 2.*sum(arange(1,11)) beta_real = 1. + sum([d.value for d in d_list]) + sum([2.*d.value for d in ld_list]) beta_stepper = GammaGamma(beta) beta_values = empty(10000,dtype=float) for i in xrange(10000): beta_stepper.step() beta_values[i] = beta.value assert(abs(mean(beta_values)-alpha_real/beta_real)<.1) assert(abs(var(beta_values) - alpha_real/beta_real**2)<.05) def check_BetaGeometric(self): p = Beta('beta',value=.5,alpha=1.,beta=1.) d_list = [] for i in xrange(10): d_list.append(Geometric('d_%i'%i,p)) alpha_real = 1. + len(d_list) beta_real = 1. + sum([d.value for d in d_list]) p_stepper = BetaGeometric(p) p_values = empty(10000,dtype=float) for i in xrange(10000): p_stepper.step() p_values[i] = p.value assert(abs(mean(p_values)-alpha_real/(alpha_real + beta_real))<.01) assert(abs(var(p_values) - (alpha_real*beta_real) / (alpha_real + beta_real)**2 / (alpha_real + beta_real + 1)) < .001) def check_GammaNormal(self): tau = Gamma('tau', value=3., alpha=1., beta=1.) d1 = Normal('d1',mu=ones(3)*.1,tau=tau,value=ones(3)) L = LinearCombination('L',[tau],[2.]) d2 = Normal('d2', mu=3.*ones(3), tau=L, value=ones(3)) tau_stepper = GammaNormal(tau) tau_values = empty(10000,dtype=float) for i in xrange(10000): tau_stepper.step() tau_values[i] = tau.value beta_real = 1.+(np.sum((d1.value-.1)**2) + np.sum((d2.value-3.)**2)*L.y[0])/2. alpha_real = 4. assert(abs(mean(tau_values)- alpha_real / beta_real)<.05) assert(abs(var(tau_values)- alpha_real / beta_real ** 2)<.05) def check_DirichletMultinomial(self): p = Dirichlet('p',ones(10)*3.) d_list = [] for i in xrange(10): d_list.append(Multinomial('d_%i'%i, sum(arange(10)), p, value=arange(10))) p_stepper = DirichletMultinomial(p) p_values = empty((10,10000),dtype=float) for i in xrange(10000): p_stepper.step() p_values[:,i] = p.value mean_p_values = mean(p_values,axis=-1) var_p_values = var(p_values,axis=-1) theta_real = 10.*arange(10) + 3.*ones(10) real_mean = theta_real / sum(theta_real) real_var = theta_real * (sum(theta_real) - theta_real) / sum(theta_real)**2/(sum(theta_real)+1) assert((abs(real_mean-mean_p_values)/real_mean).max()<.01) assert((abs(real_var-var_p_values)/real_mean).max()<.01) def check_WishartMvNormal(self): tau = Wishart('tau',10,(asmatrix(eye(3)+.1*ones((3,3))))*10.) orig_value = tau.value d_list = [] for i in xrange(5000): d_list.append(MvNormal('d_%i'%i,zeros(3),tau)) tau_stepper = WishartMvNormal(tau) val_mat = asmatrix(empty((len(d_list),3))) for i in xrange(len(d_list)): val_mat[i,:] = d_list[i].value tau_values = empty((3,3,1000),dtype=float) for i in xrange(1000): tau_stepper.step() # tau.random() tau_values[:,:,i] = tau.value avg_tau_value = mean(tau_values, axis=-1) delta = avg_tau_value - orig_value assert(np.abs(np.asarray(delta)/np.asarray(orig_value)).max()<.1) def check_ClusterModel(self): mu = Gamma('mu',value=3.,alpha=1.,beta=1.) other_mu = 30. d_list = [] indices = [] mu_list = [] for i in xrange(10): indices.append(randint(2)) mu_list.append(Index('mu_list[%i]'%i, x=[mu, other_mu], index=indices[i])) d_list.append(Poisson('d_%i'%i,mu_list[i])) beta_real = 1. alpha_real = 1. for i in xrange(len(mu_list)): if mu_list[i].index.value == 0: beta_real += 1. alpha_real += sum(d_list[i].value) mu_stepper = GammaPoisson(mu) mu_values = empty(10000,dtype=float) for i in xrange(10000): mu_stepper.step() mu_values[i] = mu.value assert(abs(mean(mu_values)-alpha_real/beta_real)<.05) assert(abs(var(mu_values) - alpha_real/beta_real**2)<.05) def check_NormalNormal(self): A = Normal('A',1,1) B = Normal('B',A,2*np.ones(2)) C_tau = np.diag([.5,.5]) C_tau[0,1] = C_tau[1,0] = .25 C = MvNormal('C',B, C_tau, observed=True) D_mean = LinearCombination('D_mean', x=[np.ones((3,2))], y=[C]) D = MvNormal('D',D_mean,np.diag(.5*np.ones(3))) # D = Normal('D',D_mean,.5*np.ones(3)) G = NormalSubmodel([B,C,A,D,D_mean]) N = NormalModel(G) all_stepper = NormalNormal([A,B,C,D]) all_values = np.empty((10000,6),dtype=float) for i in xrange(10000): all_stepper.step() for s in G.changeable_stochastic_list: all_values[i,G.changeable_slices[s]]=s.value assert(abs(mean(all_values, axis=0) - N.mu[G.changeable_stochastic_list]).max() < .1) assert(abs(var(all_values, axis=0) - np.diag(N.C[G.changeable_stochastic_list])).max() < .1) if __name__ == '__main__': NumpyTest().run() pymc-2.2+ds/pymc/sandbox/test_model_ave.py000066400000000000000000000032771204033704200207050ustar00rootroot00000000000000# 30-3-07 AP: Changed Sampler to Model. """ This demo compares three different models for the coal mining disasters data. It doesn't use RJMCMC, it just integrates out the model stochastics by sampling their values conditional on their parents. Nothing fancy, but it works OK. The biggest problem is that the variance of the samples of the model likelihoods can be pretty big, so it takes a lot of samples to get a good estimate of the model posterior probabilities. This'll probably be worse for more complicated models. Maybe there's a literature on this problem. """ from pymc import Model from pymc.MultiModelInference import weight from numpy import log from pymc.examples import model_1, model_2, model_3 from numpy.testing import * class test_model_ave(TestCase): def test(self): # Changepoint model M1 = Model(model_1) # Constant rate model M2 = Model(model_2) # Exponentially varying rate model M3 = Model(model_3) # print 'Docstring of model 1:' # print model_1.__doc__ # print 'Docstring of model 2:' # print model_2.__doc__ # print 'Docstring of model 3:' # print model_3.__doc__ posterior = weight([M1,M2,M3],10000)[0] # print 'Log posterior probability of changepoint model: ',log(posterior[M1]) # print 'Log posterior probability of constant rate model: ',log(posterior[M2]) # print 'Log posterior probability of linearly varying rate model: ',log(posterior[M3]) assert(abs(log(posterior[M1]))<1e-10) assert(abs(log(posterior[M2])+30)<4) assert(abs(log(posterior[M3])+60)<30) if __name__=='__main__': import unittest unittest.main() pymc-2.2+ds/pymc/sandbox/test_twalk.py000066400000000000000000000016361204033704200200710ustar00rootroot00000000000000from pymc.sandbox.TWalk import * from pymc import * from numpy import random, inf import pdb """ Test model for T-walk algorithm: Suppose x_{i,j} ~ Be( theta_j ), i=0,1,2,...,n_j-1, ind. j=0,1,2 But it is known that 0 < theta_0 < theta_3 < theta_2 < 1 """ theta_true = array([ 0.4, 0.5, 0.7 ]) ### True thetas n = array([ 20, 15, 40]) ### sample sizes #### Simulated data, but we only need the sum of 1's r = zeros(3) for j in range(3): r[j] = sum(random.random(size=n[j]) < theta_true[j]) @stochastic def theta(value=(0.45, 0.5, 0.55)): """theta ~ beta(alpha, beta)""" a,b,c = value if not a .5) if __name__ == '__main__': import unittest unittest.main() pymc-2.2+ds/pymc/tests/test_container.py000066400000000000000000000044061204033704200204330ustar00rootroot00000000000000from numpy.testing import * from numpy import * from pymc.examples import disaster_model as DM from pymc import Container, Normal class test_Container(TestCase): def test_container_parents(self): A = Normal('A',0,1) B = Normal('B',0,1) C = Normal('C',[A,B],1) assert_equal(Container([A,B]).value, [A.value, B.value]) assert_equal(C.parents.value['mu'], [A.value, B.value]) def test_nested_tuple_container(self): A = Normal('A',0,1) try: Container(([A],)) raise AssertionError('A NotImplementedError should have resulted.') except NotImplementedError: pass def test(self): # Test set container: S = [DM.early_mean, DM.switchpoint, DM.late_mean] R = Container(S) for item in R: assert(item in S) for item in R.value: val_in_S = False for S_item in S: if S_item.value is item: val_in_S = True assert(val_in_S) # Test list/dictionary container: A = [[DM.early_mean, DM.switchpoint], [DM.late_mean, DM.disasters, 3.], 54.323] C = Container(A) for i in range(2): for j in range(2): assert(C[i][j] == A[i][j]) assert(all(C.value[i][j] == A[i][j].value)) assert(C[1][2] == A[1][2]) assert(C.value[1][2] == A[1][2]) assert(C[2] == A[2]) assert(C.value[2] == A[2]) # Test array container: B = ndarray((3,3),dtype=object) B[0,:] = DM.early_mean B[1,:] = 1. B[2,:] = A D = Container(B) for i in range(2): assert(D[0,i] == DM.early_mean) assert(D.value[0,i] == DM.early_mean.value) assert(D[1,i] == 1.) assert(D.value[1,i] == 1.) P = D[2,:] Q = D.value[2,:] for i in range(2): for j in range(2): assert(P[i][j] == A[i][j]) assert(all(Q[i][j] == A[i][j].value)) assert(P[1][2] == A[1][2]) assert(Q[1][2] == A[1][2]) assert(P[2] == A[2]) assert(Q[2] == A[2]) if __name__ == '__main__': import unittest unittest.main() pymc-2.2+ds/pymc/tests/test_convergence.py000066400000000000000000000070511204033704200207460ustar00rootroot00000000000000### # # Test of convergence diagnostics # ### from __future__ import with_statement from numpy.testing import assert_equal, assert_array_equal, assert_approx_equal, TestCase import unittest import numpy as np import pymc import pymc.examples.weibull_fit as model import os, warnings import copy S = pymc.MCMC(model, 'ram') S.sample(10000, 2000, progress_bar=0) #a = S.a.trace() #b = S.b.trace() # Known data for testing integrated autocorrelation time = 2.28 x = np.array([ 0.98073604, 0.98073604, 0.98073604, 0.98073604, 0.98073604, 0.41424798, 0.58398493, 0.27391045, 0.27391045, 0.27391045, 0.27391045, 0.27391045, 0.72886149, 0.72886149, 0.72886149, 0.67478139, 0.67478139, 0.67478139, 0.67478139, 0.67478139, 0.67478139, 0.27720909, 0.6026456 , 0.6026456 , 0.47108579, 0.47108579, 0.47108579, 0.47108579, 0.47108579, 0.47108579, 0.47108579, 0.47108579, 0.47108579, 0.47108579, 0.47108579, 0.47108579, 0.47108579, 0.47108579, 0.47108579, 0.47108579, 0.47108579, 0.47108579, 0.47108579, 0.47108579, 0.47108579, 0.34546653, 0.34546653, 0.5441314 , 0.5441314 , 0.5441314 , 0.5441314 , 0.5441314 , 0.5441314 , 0.5441314 , 0.5441314 , 0.37344506, 0.37344506, 0.83126209, 0.83126209, 0.3439339 , 0.3439339 , 0.3439339 , 0.34551721, 0.34551721, 0.34551721, 0.44112754, 0.44112754, 0.44112754, 0.55397635, 0.55397635, 0.55397635, 0.55397635, 0.55397635, 0.55397635, 0.55397635, 0.55397635, 0.55397635, 0.55397635, 0.55397635, 0.55397635, 0.55397635, 0.55397635, 0.55397635, 0.55397635, 0.55397635, 0.55397635, 0.36521137, 0.36521137, 0.36521137, 0.36521137, 0.36521137, 0.36521137, 0.36521137, 0.36521137, 0.36521137, 0.36521137, 0.36521137, 0.36521137, 0.36521137, 0.32755692]) DIR = 'testresults' class test_geweke(TestCase): def test_simple(self): scores = pymc.geweke(S, intervals=20) a_scores = scores['a'] assert_equal(len(a_scores), 20) # If the model has converged, 95% the scores should lie # within 2 standard deviations of zero, under standard normal model assert(sum(np.abs(np.array(a_scores)[:,1]) > 1.96) < 2) # Plot diagnostics (if plotting is available) try: from pymc.Matplot import geweke_plot as plot plot(scores, path=DIR, verbose=0) except ImportError: pass class test_gelman_rubin(TestCase): """Unit test for Gelman-Rubin diagnostic""" def test_fail(self): pass def test_simple(self): S2 = copy.copy(S) S2.sample(10000, 2000, progress_bar=0) gr = pymc.gelman_rubin(S2) for i in gr: assert_approx_equal(gr[i], 1., 2) class test_iat(TestCase): def test_simple(self): iat = pymc.iat(x) # IAT should be approximately 2.28 assert_approx_equal(iat, 2.28, 2) if __name__ == "__main__": original_filters = warnings.filters[:] warnings.simplefilter("ignore") try: import nose C =nose.config.Config(verbosity=1) nose.runmodule(config=C) finally: warnings.filters = original_filters # TODO: Restore in 2.2 # with warnings.catch_warnings(): # warnings.simplefilter('ignore', FutureWarning) # import nose # C =nose.config.Config(verbosity=1) # nose.runmodule(config=C) pymc-2.2+ds/pymc/tests/test_cov.py000066400000000000000000000007531204033704200172410ustar00rootroot00000000000000from numpy.testing import * from pymc.gp import * from pymc.gp.cov_funs import matern from numpy import * from copy import copy from .test_mean import x, y C = Covariance(eval_fun = matern.euclidean, diff_degree = 1.4, amp = .4, scale = 1.) D = copy(C) class test_cov(TestCase): def test(self): assert(C(x).shape == x.shape) assert(C(x,x).shape == (len(x), len(x))) assert(D(y).shape == (y.shape[0],)) assert(D(y,y).shape == (y.shape[0], y.shape[0])) pymc-2.2+ds/pymc/tests/test_database.py000066400000000000000000000332261204033704200202170ustar00rootroot00000000000000""" Test database backends """ from __future__ import with_statement import os,sys, pdb from numpy.testing import TestCase, assert_array_equal, assert_equal from pymc.examples import disaster_model from pymc import MCMC import pymc, pymc.database import numpy as np import nose import warnings # TestCase = object testdir = 'testresults' try: os.mkdir(testdir) except: pass class test_backend_attribution(TestCase): def test_raise(self): self.assertRaises(AttributeError, MCMC, disaster_model, 'heysugar') def test_import(self): self.assertRaises(ImportError, MCMC, disaster_model, '__test_import__') class TestBase(TestCase): """Test features that should be common to all databases.""" @classmethod def setUpClass(self): self.S = pymc.MCMC(disaster_model, db='base') def test_init(self): assert hasattr(self.S.db, '__Trace__') assert hasattr(self.S.db, '__name__') @classmethod def tearDownClass(self): try: self.S.db.close() except: pass def NDstoch(self): nd = pymc.Normal('nd', value=np.ones((2,2,))*.5, mu=np.ones((2,2)), tau=1) return nd class TestRam(TestBase): name = 'ram' @classmethod def setUpClass(self): self.S = pymc.MCMC(disaster_model, db='ram') self.S.use_step_method(pymc.Metropolis, self.S.early_mean, tally=True) def test_simple_sample(self): self.S.sample(50,25,5, progress_bar=0) assert_array_equal(self.S.trace('early_mean')[:].shape, (5,)) assert_array_equal(self.S.trace('early_mean', chain=0)[:].shape, (5,)) assert_array_equal(self.S.trace('early_mean', chain=None)[:].shape, (5,)) assert_equal(self.S.trace('early_mean').length(), 5) assert_equal(self.S.trace('early_mean').length(chain=0), 5) assert_equal(self.S.trace('early_mean').length(chain=None), 5) self.S.sample(10,0,1, progress_bar=0) assert_array_equal(self.S.trace('early_mean')[:].shape, (10,)) assert_array_equal(self.S.trace('early_mean', chain=1)[:].shape, (10,)) assert_array_equal(self.S.trace('early_mean', chain=None)[:].shape, (15,)) assert_equal(self.S.trace('early_mean').length(), 10) assert_equal(self.S.trace('early_mean').length(chain=1), 10) assert_equal(self.S.trace('early_mean').length(chain=None), 15) assert_equal(self.S.trace('early_mean')[:].__class__, np.ndarray) # Test __getitem__ assert_equal(self.S.trace('early_mean').gettrace(slicing=slice(1,2)), self.S.early_mean.trace[1]) # Test __getslice__ assert_array_equal(self.S.trace('early_mean').gettrace(thin=2), self.S.early_mean.trace[::2]) # Test Sampler trace method assert_array_equal(self.S.trace('early_mean')[:].shape, (10,)) assert_array_equal(self.S.trace('early_mean', chain=0)[:].shape, (5,)) assert_array_equal(self.S.trace('early_mean', chain=1)[:].shape, (10,)) assert_array_equal(self.S.trace('early_mean', chain=1)[::2].shape, (5,)) assert_array_equal(self.S.trace('early_mean', chain=1)[1::].shape, (9,)) assert_array_equal(self.S.trace('early_mean', chain=1)[0], self.S.trace('early_mean', chain=1)[:][0]) assert_array_equal(self.S.trace('early_mean', chain=None)[:].shape, (15,)) # Test internal state t1 = self.S.trace('early_mean', 0) t2 = self.S.trace('early_mean', 1) assert_equal(t1._chain, 0) # Test remember s1 = np.shape(self.S.early_mean.value) self.S.remember(0,0) s2 = np.shape(self.S.early_mean.value) assert_equal(s1, s2) self.S.db.close() class TestPickle(TestRam): name = 'pickle' @classmethod def setUpClass(self): self.S = pymc.MCMC(disaster_model, db='pickle', dbname=os.path.join(testdir, 'Disaster.pickle'), dbmode='w') self.S.use_step_method(pymc.Metropolis, self.S.early_mean, tally=True) def load(self): return pymc.database.pickle.load(os.path.join(testdir, 'Disaster.pickle')) def test_xload(self): db = self.load() assert_array_equal(db.trace('early_mean', chain=0)[:].shape, (5,)) assert_array_equal(db.trace('early_mean', chain=1)[:].shape, (10,)) assert_array_equal(db.trace('early_mean', chain=-1)[:].shape, (10,)) assert_array_equal(db.trace('early_mean', chain=None)[:].shape, (15,)) db.close() def test_yconnect_and_sample(self): original_filters = warnings.filters[:] warnings.simplefilter("ignore") try: db = self.load() S = pymc.MCMC(disaster_model, db=db) S.use_step_method(pymc.Metropolis, S.early_mean, tally=True) S.sample(5, progress_bar=0) assert_array_equal(db.trace('early_mean', chain=-1)[:].shape, (5,)) assert_array_equal(db.trace('early_mean', chain=None)[:].shape, (20,)) db.close() finally: warnings.filters = original_filters # TODO: Restore in 2.2 # with warnings.catch_warnings(): # warnings.simplefilter('ignore') # db = self.load() # with warnings.catch_warnings(): # warnings.simplefilter('ignore') # S = pymc.MCMC(disaster_model, db=db) # S.use_step_method(pymc.Metropolis, S.early_mean, tally=True) # S.sample(5, progress_bar=0) # assert_array_equal(db.trace('early_mean', chain=-1)[:].shape, (5,)) # assert_array_equal(db.trace('early_mean', chain=None)[:].shape, (20,)) # db.close() def test_yrestore_state(self): original_filters = warnings.filters[:] warnings.simplefilter("ignore") try: db = self.load() S = pymc.MCMC(disaster_model, db=db) S.sample(10, progress_bar=0) sm = S.step_methods.pop() assert_equal(sm.accepted+sm.rejected, 75) finally: warnings.filters = original_filters # TODO: Restore in 2.2 # with warnings.catch_warnings(): # warnings.simplefilter('ignore') # db = self.load() # S = pymc.MCMC(disaster_model, db=db) # S.sample(10, progress_bar=0) # sm = S.step_methods.pop() # assert_equal(sm.accepted+sm.rejected, 75) def test_nd(self): M = MCMC([self.NDstoch()], db=self.name, dbname=os.path.join(testdir, 'ND.'+self.name), dbmode='w') M.sample(10, progress_bar=0) a = M.trace('nd')[:] assert_equal(a.shape, (10,2,2)) db = getattr(pymc.database, self.name).load(os.path.join(testdir, 'ND.'+self.name)) assert_equal(db.trace('nd')[:], a) class TestTxt(TestPickle): name = 'txt' @classmethod def setUpClass(self): self.S = pymc.MCMC(disaster_model, db='txt', dbname=os.path.join(testdir, 'Disaster.txt'), dbmode='w') def load(self): return pymc.database.txt.load(os.path.join(testdir, 'Disaster.txt')) class TestSqlite(TestPickle): name = 'sqlite' @classmethod def setUpClass(self): if 'sqlite' not in dir(pymc.database): raise nose.SkipTest if os.path.exists('Disaster.sqlite'): os.remove('Disaster.sqlite') self.S = pymc.MCMC(disaster_model, db='sqlite', dbname=os.path.join(testdir, 'Disaster.sqlite'), dbmode='w') def load(self): return pymc.database.sqlite.load(os.path.join(testdir, 'Disaster.sqlite')) def test_yrestore_state(self): raise nose.SkipTest("Not implemented.") class TestHDF5(TestPickle): name = 'hdf5' @classmethod def setUpClass(self): if 'hdf5' not in dir(pymc.database): raise nose.SkipTest self.S = pymc.MCMC(disaster_model, db='hdf5', dbname=os.path.join(testdir, 'Disaster.hdf5'), dbmode='w') self.S.use_step_method(pymc.Metropolis, self.S.early_mean, tally=True) def load(self): return pymc.database.hdf5.load(os.path.join(testdir, 'Disaster.hdf5')) def test_xdata_attributes(self): db = self.load() assert_array_equal(db.disasters, disaster_model.disasters_array) db.close() del db def test_xattribute_assignement(self): arr = np.array([[1,2],[3,4]]) db = self.load() db.add_attr('some_list', [1,2,3]) db.add_attr('some_dict', {'a':5}) db.add_attr('some_array', arr, array=True) assert_array_equal(db.some_list, [1,2,3]) assert_equal(db.some_dict['a'], 5) assert_array_equal(db.some_array.read(), arr) db.close() del db db = self.load() assert_array_equal(db.some_list, [1,2,3]) assert_equal(db.some_dict['a'], 5) assert_array_equal(db.some_array, arr) db.close() del db def test_xhdf5_col(self): import tables db = self.load() col = db.early_mean.hdf5_col() assert col.__class__ == tables.table.Column assert_equal(len(col), len(db.early_mean())) db.close() del db #def test_zcompression(self): # TODO: Restore in 2.2 # with warnings.catch_warnings(): # warnings.simplefilter('ignore') # db = pymc.database.hdf5.Database(dbname=os.path.join(testdir, 'disaster_modelCompressed.hdf5'), # dbmode='w', # dbcomplevel=5) # S = MCMC(disaster_model, db=db) # S.sample(45,10,1, progress_bar=0) # assert_array_equal(S.trace('early_mean')[:].shape, (35,)) # S.db.close() # db.close() # del S # class testHDF5Objects(TestCase): # @classmethod # def setUpClass(self): # if 'hdf5' not in dir(pymc.database): # raise nose.SkipTest # from . import objectmodel # self.S = pymc.MCMC(objectmodel, # db='hdf5', # dbname=os.path.join(testdir, 'Objects.hdf5')) # # def load(self): # return pymc.database.hdf5.load(os.path.join(testdir, 'Objects.hdf5')) # # def test_simple_sample(self): # self.S.sample(50, 25, 5, progress_bar=0) # # assert_array_equal(self.S.trace('B')[:].shape, (5,)) # assert_array_equal(self.S.trace('K')[:].shape, (5,)) # assert_array_equal(self.S.trace('K', chain=0)[:].shape, (5,)) # assert_array_equal(self.S.trace('K', chain=None)[:].shape, (5,)) # # assert_equal(self.S.trace('K').length(), 5) # assert_equal(self.S.trace('K').length(chain=0), 5) # assert_equal(self.S.trace('K').length(chain=None), 5) # # # self.S.sample(10, progress_bar=0) # # assert_array_equal(self.S.trace('K')[:].shape, (10,)) # assert_array_equal(self.S.trace('K', chain=1)[:].shape, (10,)) # assert_array_equal(self.S.trace('K', chain=None)[:].shape, (15,)) # # assert_equal(self.S.trace('K').length(), 10) # assert_equal(self.S.trace('K').length(chain=1), 10) # assert_equal(self.S.trace('K').length(chain=None), 15) # # self.S.db.close() # # def test_xload(self): # db = self.load() # assert_array_equal(db.B().shape, (10,)) # assert_array_equal(db.K().shape, (10,)) # assert_array_equal(db.K(chain=0).shape, (5,)) # assert_array_equal(db.K(chain=None).shape, (15,)) # db.close() # # def test_yconnect_and_sample(self): # db = self.load() # from . import objectmodel # S = pymc.MCMC(objectmodel, db=db) # S.sample(5, progress_bar=0) # assert_array_equal(db.K(chain=0).shape, (5,)) # assert_array_equal(db.K(chain=1).shape, (10,)) # assert_array_equal(db.K(chain=2).shape, (5,)) # assert_array_equal(db.K(chain=-1).shape, (5,)) # assert_array_equal(db.K(chain=None).shape, (20,)) # db.close() def test_identical_object_names(): A = pymc.Uniform('a', 0, 10) B = pymc.Uniform('a', 0, 10) try: M = MCMC([A,B]) except ValueError: pass def test_regression_155(): """thin > iter""" M = MCMC(disaster_model, db='ram') M.sample(10,0,100, progress_bar=0) def test_interactive(): if 'sqlite' not in dir(pymc.database): raise nose.SkipTest M=MCMC(disaster_model,db='sqlite', dbname=os.path.join(testdir, 'interactiveDisaster.sqlite'), dbmode='w') M.isample(10, out=open('testresults/interactivesqlite.log', 'w'), progress_bar=0) # def test_getitem(): # class tmp(database.base.Database): # def gettrace(self, burn=0, thin=1, chain=-1, slicing=None): # return if __name__ == '__main__': original_filters = warnings.filters[:] warnings.simplefilter("ignore") try: C =nose.config.Config(verbosity=3) nose.runmodule(config=C) try: S.db.close() except: pass finally: warnings.filters = original_filters # TODO: Restore in 2.2 with warnings.catch_warnings(): warnings.simplefilter('ignore') C =nose.config.Config(verbosity=3) nose.runmodule(config=C) try: S.db.close() except: pass pymc-2.2+ds/pymc/tests/test_distributions.py000066400000000000000000001147421204033704200213600ustar00rootroot00000000000000"""Test the distributions from flib and their random generators to check they are consistent with one another. For each distribution: 1. Select parameters (parameters = {'alpha':.., 'beta'=...}). 2. Generate N random samples. 3. Compute likelihood for a vector of x values. 4. Compute histogram of samples. 5. Compare histogram with likelihood. 6. Assert if they fit or not. """ # TODO: Improve the assertion of consistency. # Maybe compare the relative error (hist-like)/like. Doesn't work so well. # Tried (hist-like)/sqrt(like), seems to work better. # FIXME no tests for discrete_uniform, negative_binomial, uniform. # TODO add tests for boundaries of distributions with restricted support #from decorators import * #from decorators import * from __future__ import with_statement from unittest import TestCase from pymc.distributions import * import unittest import os, pdb, warnings, nose from numpy import exp, log, array, sqrt from numpy.linalg import cholesky, det, inv from numpy.testing import * import numpy as np import numpy.random as _npr from pymc.distributions import * from pymc import flib, utils, six xrange = six.moves.xrange PLOT=True DIR = 'testresults' if PLOT is True: try: os.mkdir(DIR) except: pass try: import scipy.stats from scipy import integrate, special from scipy.misc import factorial, comb from scipy.stats import genextreme, exponweib from scipy.optimize import fmin SP = True except: SP = False try: import pylab as P except: six.print_('Plotting disabled') PLOT = False # Some python densities for comparison def cauchy(x, x0, gamma): return 1/pi * gamma/((x-x0)**2 + gamma**2) def gamma(x, alpha, beta): return x**(alpha-1) * exp(-x/beta)/(special.gamma(alpha) * beta**alpha) def multinomial_beta(alpha): nom = (special.gamma(alpha)).prod(0) den = special.gamma(alpha.sum(0)) return nom/den def dirichlet(x, theta): """Dirichlet multivariate probability density. :Stochastics: x : (n,k) array Input data theta : (n,k) or (1,k) array Distribution parameter """ # x = np.atleast_2d(x) # theta = np.atleast_2d(theta) f = (x**(theta-1)).prod(0) return f/multinomial_beta(theta) def geometric(x, p): return p*(1.-p)**(x-1) def hypergeometric(x, n, m, N): """ x : number of successes drawn n : number of draws m : number of successes in total N : successes + failures in total. """ if x < max(0, n-(N-m)): return 0. elif x > min(n, m): return 0. else: return comb(N-m, x) * comb(m, n-x) / comb(N,n) def mv_hypergeometric(x,m): """ x : number of draws for each category. m : size of each category. """ x = np.asarray(x) m = np.asarray(m) return log(comb(m,x).prod()/comb(m.sum(), x.sum())) def multinomial(x,n,p): x = np.atleast_2d(x) return factorial(n)/factorial(x).prod(1)*(p**x).prod(1) def mv_normal(x, mu, C): N = len(x) x = np.asmatrix(x) mu = np.asmatrix(mu) C = np.asmatrix(C) I = (N/2.)*log(2.*pi) + .5*log(det(C)) z = (x-mu) return -(I +.5 * z * np.linalg.inv(C) * z.T).A[0][0] def multivariate_lognormal(x, mu, C): N = len(x) x = np.asmatrix(x) mu = np.asmatrix(mu) C = np.asmatrix(C) I = (2*pi)**(N/2.) * sqrt(det(C)) z = (np.log(x)-mu) return (1./I * exp(-.5 * z * inv(C) * z.T)).A[0][0] def consistency(randomf, likef, parameters, nbins=10, nrandom=1000, nintegration=15,\ range=None, plot=None): """Check the random generator is consistent with the likelihood. :Stochastics: - `random`: function: Random generator. - `like`: function: Log probability. - `parameters`: dict: Stochastics for the distribution. - `nbins`: int: Number of bins in histogram. - `nrandom`: int: Number of random samples. - `nintegration`: int: Number of divisions in each bin. - `range`: (float,float): Range of histogram. :Return (hist, like): - `hist`: Histogram of random samples from random(**parameters). - `like`: integrated likelihood over histogram bins. """ # Samples values and compute histogram. samples = randomf(size=nrandom, **parameters) hist, output = utils.histogram(samples, range=range, bins=nbins, normed=True) # Compute likelihood along x axis. if range is None: range = samples.min(), samples.max() x = np.linspace(range[0], range[1], nbins*nintegration) l = [] for z in x: l.append(likef(z, **parameters)) L = np.exp(np.array(l)) figuredata = {'hist':hist, 'bins':output['edges'][:-1], \ 'like':L.copy(), 'x':x} L = L.reshape(nbins, nintegration) like = L.mean(1) return hist, like, figuredata def discrete_consistency(randomf, likef, parameters,nrandom=1000, \ range=None,plot=None): """Check the random generator is consistent with the likelihood for discrete distributions. :Stochastics: - `randomf`: function: Random generator. - `likef`: function: Log probability. - `parameters`: dict: Stochastics for the distribution. - `nbins`: int: Number of bins in histogram. - `nrandom`: int: Number of random samples. - `range`: (float,float): Range of histogram. :Return (hist, like): - `hist`: Histogram of random samples. - `like`: likelihood of histogram bins. """ samples = randomf(size=nrandom, **parameters) hist = np.bincount(samples)*1./nrandom x = np.arange(len(hist)) l = [] for z in x: l.append(likef(z, **parameters)) like = np.exp(np.array(l)) figuredata = {'hist':hist, 'bins':x, \ 'like':like.copy(), 'x':x, 'discrete':True} return hist, like, figuredata def mv_consistency(random, like, parameters, nbins=10, nrandom=1000, nintegration=15,\ range=None, plot=None): """Check consistency for multivariate distributions.""" samples = random(n=nrandom, **parameters) hist, edges = np.histogramdd(samples.T, nbins, range, True) z = [] for s in samples: z.append(like(s, **parameters)) P = np.exp(np.array(z)) def compare_hist(hist, bins, like, x, figname, discrete=False): """Plot and save a figure comparing the histogram with the probability. :Stochastics: - `samples`: random variables. - `like`: probability values. - `bins`: histogram bins. - `x`: values at which like is computed. - `figname`: Name of figure to save. """ ax = P.subplot(111) width = 0.9*(bins[1]-bins[0]) ax.bar(bins, hist, width) P.setp(ax.patches, alpha=.5) if discrete: ax.plot(x, like, 'k', linestyle='steps') else: ax.plot(x, like, 'k') P.savefig(os.path.join(DIR, figname)) P.close() def normalization(like, parameters, domain, N=100): """Integrate the distribution over domain. :Stochastics: - `like`: log probability density. - `parameters`: {}: distribution parameters. - `domain`: domain of integration. - `N`: Number of samples for trapezoidal integration. Note: The integration is performed using scipy.integrate.quadg if available. Otherwise, a trapezoidal integration is done. """ f = lambda x: exp(like(x, **parameters)) if SP: out = integrate.quad(f, domain[0], domain[1]) return out[0] else: y = [] x = np.linspace(domain[0], domain[1], N) for i in x: y.append(f(i)) return np.trapz(y,x) def discrete_normalization(like, parameters, N): return sum(exp([like(x,**parameters) for x in np.arange(N)])) class test_arlognormal(TestCase): def like(self, parameters, r): a = parameters[2:] sigma = parameters[1] rho = parameters[0] like = np.array([arlognormal_like(x, a, sigma, rho) for x in r]) return -like.sum() def test_random(self): a = (1,2) sigma = .1 rho = 0 r = rarlognormal(a, sigma, rho, size=1000) assert_array_almost_equal(np.median(r, axis=0), [1,2],1) rho =.8 sigma = .1 r = rarlognormal(1, sigma, rho, size=1000) corr = utils.autocorr(np.log(r)) assert_almost_equal(corr, rho, 1) assert_almost_equal(r.std(), sigma/sqrt(1-rho**2),1) def test_consistency(self): if not SP: raise nose.SkipTest("SciPy not installed.") # 1D case a = 1 rho =.8 sigma = .1 r = rarlognormal(a, sigma, rho, size=1000) opt = fmin(self.like, (.8, .4, .9), args=([r],), disp=0) assert_array_almost_equal(opt, [rho, sigma, a], 1) # 2D case a = (1,2) sigma = .1 rho = .7 r = rarlognormal(a, sigma, rho, size=1000) opt = fmin(self.like, (.75, .15, 1.1, 2.1), xtol=.05, args=(r,), disp=0) assert_array_almost_equal(opt, (rho, sigma)+a, 1) class test_bernoulli(TestCase): def test_consistency(self): N = 5000 parameters = {'p':.6} samples = [] for i in range(N): samples.append(rbernoulli(**parameters)) H = np.bincount(samples)*1./N l0 = exp(flib.bernoulli(0, **parameters)) l1 = exp(flib.bernoulli(1, **parameters)) assert_array_almost_equal(H, [l0,l1], 1) # Check normalization assert_almost_equal(l0+l1, 1, 4) def test_calling(self): a = flib.bernoulli([0,1,1,0], .4) b = flib.bernoulli([0,1,1,0], [.4, .4, .4, .4]) assert_array_equal(b,a) class test_beta(TestCase): def test_consistency(self): parameters ={'alpha':3, 'beta':5} hist, like, figdata = consistency(rbeta, flib.beta_like, parameters, nrandom=5000, range=[0,1]) assert_array_almost_equal(hist, like,1) if PLOT: compare_hist(figname='beta', **figdata) def test_calling(self): a = flib.beta_like([.3,.4,.5], 2,3) b = flib.beta_like([.3,.4,.5], [2,2,2],[3,3,3]) assert_array_equal(a,b) def test_normalization(self): parameters ={'alpha':3, 'beta':5} integral = normalization(flib.beta_like, parameters, [0,1], 200) assert_almost_equal(integral, 1, 3) class test_binomial(TestCase): def test_consistency(self): parameters={'n':7, 'p':.7} hist, like, figdata = discrete_consistency(rbinomial, flib.binomial, \ parameters, nrandom=2000) assert_array_almost_equal(hist, like,1) if PLOT: compare_hist(figname='binomial', **figdata) # test_normalization assert_almost_equal(like.sum(), 1, 4) def test_normalization(self): parameters = {'n':20,'p':.1} summation = discrete_normalization(flib.binomial, parameters, 21) def test_calling(self): a = flib.binomial([3,4,5], 7, .7) b = flib.binomial([3,4,5], [7,7,7], .7) c = flib.binomial([3,4,5], [7,7,7], [.7,.7,.7]) assert_equal(a,b) assert_equal(a,c) class test_betabin(TestCase): def test_consistency(self): parameters={'n':7, 'alpha':1, 'beta':2} hist, like, figdata = discrete_consistency(rbetabin, flib.betabin_like, \ parameters, nrandom=2000) assert_array_almost_equal(hist, like,1) if PLOT: compare_hist(figname='beta-binomial', **figdata) # test_normalization assert_almost_equal(like.sum(), 1, 4) def test_normalization(self): parameters = {'n':20, 'alpha':1, 'beta':2} summation = discrete_normalization(flib.betabin_like, parameters, 21) def test_calling(self): a = flib.betabin_like([3,4,5], 7., 3., 7,) b = flib.betabin_like([3,4,5], 7., 3., [7,7,7]) c = flib.betabin_like([3,4,5], [7.,7.,7.], [3.,3.,3.], [7,7,7]) assert_equal(a,b) assert_equal(a,c) class test_categorical(TestCase): def test_consistency(self): parameters={'p':[0.5,0.3,.2]} hist, like, figdata = discrete_consistency(rcategorical, categorical_like, \ parameters, nrandom=2000) assert_array_almost_equal(hist, like, 1) if PLOT: compare_hist(figname='categorical', **figdata) # test_normalization assert_almost_equal(like.sum(), 1, 4) def test_support(self): """Check to make sure values outside support are -inf""" assert categorical_like([-1], [[0.4,0.4,0.2]]) < -1e300 assert categorical_like([3], [[0.4,0.4,0.2]]) < -1e300 assert categorical_like([1.3], [[0.4,0.4,0.2]]) < -1e300 class test_cauchy(TestCase): def test_consistency(self): parameters={'alpha':0, 'beta':.5} hist, like, figdata = consistency(rcauchy, flib.cauchy, parameters, \ nrandom=5000, range=[-10,10], nbins=21) if PLOT: compare_hist(figname='cauchy', **figdata) assert_array_almost_equal(hist, like,1) def test_calling(self): a = flib.cauchy([3,4], 2, 6) b = flib.cauchy([3,4], [2,2], [6,6]) assert_equal(a,b) def test_normalization(self): parameters={'alpha':0, 'beta':.5} integral = normalization(flib.cauchy, parameters, [-100,100], 600) assert_almost_equal(integral, 1, 2) class test_chi2(TestCase): """Based on flib.gamma, so no need to make the calling check and normalization check.""" def test_consistency(self): parameters = {'nu':2} hist, like, figdata = consistency(rchi2, chi2_like, parameters, range=[0,15]) if PLOT: compare_hist(figname='chi2', **figdata) assert_array_almost_equal(hist, like, 1) class test_dirichlet(TestCase): """Multivariate Dirichlet distribution""" def test_random(self): theta = np.array([2.,3.,5.]) r = rdirichlet(theta, 2000) s = theta.sum() m = r.mean(0) m = np.append(m, 1-sum(m)) cov_ex = np.cov(np.append(r.T, 1.-sum(r.T,0))) # Theoretical mean M = theta/s # Theoretical covariance cov_th = -np.outer(theta, theta)/s**2/(s+1.) assert_array_almost_equal(m, M, 2) assert_array_almost_equal(cov_ex, cov_th,1) def test_like(self): if not SP: raise nose.SkipTest("SciPy not installed.") theta = np.array([2.,3.,5.]) x = np.array([.4,.2,.4]) l = flib.dirichlet(np.atleast_2d(x[:-1]), np.atleast_2d(theta)) f = dirichlet(x, theta) assert_almost_equal(l, np.sum(np.log(f)), 5) # Disabled vectorization bc got confused... AP # def test_vectorization(self): # theta = np.array([[2.,3.], [2,3]]) # r = rdirichlet(theta) # a = dirichlet_like(r, theta) # b = dirichlet_like(r, theta[0]) # assert_equal(a,b) def normalization_2d(self): pass class test_exponential(TestCase): """Based on gamma.""" def test_consistency(self): parameters={'beta':4} hist, like, figdata = consistency(rexponential, exponential_like, parameters, nrandom=6000) if PLOT: compare_hist(figname='exponential', **figdata) assert_array_almost_equal(hist, like,1) class test_laplace(TestCase): """Based on gamma.""" def test_consistency(self): parameters={'mu':1, 'tau':0.5} hist, like, figdata = consistency(rlaplace, laplace_like, parameters, nrandom=5000) if PLOT: compare_hist(figname='laplace', **figdata) assert_array_almost_equal(hist, like,1) class test_logistic(TestCase): """Based on gamma.""" def test_consistency(self): parameters={'mu':1, 'tau':0.5} hist, like, figdata = consistency(rlogistic, logistic_like, parameters, nrandom=5000) if PLOT: compare_hist(figname='logistic', **figdata) assert_array_almost_equal(hist, like,1) class test_t(TestCase): """Based on gamma.""" def test_consistency(self): parameters={'nu':5} hist, like, figdata = consistency(rt, t_like, parameters, nrandom=5000) if PLOT: compare_hist(figname='Student t', **figdata) assert_array_almost_equal(hist, like,1) class test_noncentral_t(TestCase): """Based on gamma.""" def test_consistency(self): parameters={'mu':-10, 'lam':0.2, 'nu':5} hist, like, figdata = consistency(rnoncentral_t, noncentral_t_like, parameters, nrandom=5000) if PLOT: compare_hist(figname='noncentral t', **figdata) assert_array_almost_equal(hist, like,1) def test_vectorization(self): a = flib.nct([3,4,5], mu=3, lam=.1, nu=5) b = flib.nct([3,4,5], mu=[3,3,3], lam=.1, nu=5) c = flib.nct([3,4,5], mu=[3,3,3], lam=[.1,.1,.1], nu=5) d = flib.nct([3,4,5], mu=[3,3,3], lam=[.1,.1,.1], nu=[5,5,5]) assert_equal(a,b) assert_equal(b,c) assert_equal(c,d) class test_exponweib(TestCase): def test_consistency(self): parameters = {'alpha':2, 'k':2, 'loc':1, 'scale':3} hist,like,figdata=consistency(rexponweib, exponweib_like, parameters, nrandom=5000) if PLOT: compare_hist(figname='exponweib', **figdata) assert_array_almost_equal(hist, like, 1) def test_random(self): r = rexponweib(2, 1, 4, 5, size=1000) r.mean(), r.var() # scipy.exponweib.stats is buggy. may 17, 2007 def test_with_scipy(self): if not SP: raise nose.SkipTest("SciPy not installed.") parameters = {'alpha':2, 'k':.3, 'loc':1, 'scale':3} r = rexponweib(size=10, **parameters) a = exponweib.pdf(r, 2,.3, 1, 3) b = exponweib_like(r, **parameters) assert_almost_equal(log(a).sum(), b, 5) class test_gamma(TestCase): def test_consistency(self): parameters={'alpha':3, 'beta':2} hist, like, figdata = consistency(rgamma, flib.gamma, parameters,\ nrandom=5000) if PLOT: compare_hist(figname='gamma', **figdata) assert_array_almost_equal(hist, like,1) def test_calling(self): a = flib.gamma(array([4,5],dtype=float),array(3,dtype=float),array(2,dtype=float)) b = flib.gamma(array([4,5],dtype=float), array([3,3],dtype=float),array([2,2],dtype=float)) assert_equal(a,b) def test_normalization(self): parameters={'alpha':3, 'beta':2} integral = normalization(flib.gamma, parameters, array([.01,20]), 200) assert_almost_equal(integral, 1, 2) class test_geometric(TestCase): """Based on gamma.""" def test_consistency(self): parameters={'p':.6} hist, like, figdata = discrete_consistency(rgeometric, geometric_like, parameters,\ nrandom=5000) if PLOT: compare_hist(figname='geometric', **figdata) assert_array_almost_equal(hist, like,1) class test_gev(TestCase): def test_consistency(self): parameters = dict(xi=.1, mu=4, sigma=3) hist, like, figdata = consistency(rgev, flib.gev, parameters,\ nbins=20, nrandom=5000) if PLOT: compare_hist(figname='gev', **figdata) assert_array_almost_equal(hist, like,1) def test_with_scipy(self): if not SP: raise nose.SkipTest("SciPy not installed.") x = [1,2,3,4] scipy_y = log(genextreme.pdf(x, -.3, 4, 2)) flib_y = [] for i in x: flib_y.append(flib.gev(i, .3, 4, 2)) assert_array_almost_equal(scipy_y,flib_y,5) def test_limit(self): x = [1,2,3] a = flib.gev(x, 0.00001, 0, 1) b = flib.gev(x, 0, 0, 1) assert_almost_equal(a,b,4) def test_vectorization(self): a = flib.gev([4,5,6], xi=.2,mu=4,sigma=1) b = flib.gev([4,5,6], xi=[.2,.2,.2],mu=4,sigma=1) c = flib.gev([4,5,6], xi=.2,mu=[4,4,4],sigma=1) d = flib.gev([4,5,6], xi=.2,mu=4,sigma=[1,1,1]) assert_equal(a,b) assert_equal(b,c) assert_equal(c,d) class test_half_normal(TestCase): def test_consistency(self): parameters={'tau':.5} hist, like, figdata = consistency(rhalf_normal, flib.hnormal, parameters,\ nrandom=5000) if PLOT: compare_hist(figname='hnormal', **figdata) assert_array_almost_equal(hist, like,1) def test_normalization(self): parameters = {'tau':2.} integral = normalization(flib.hnormal, parameters, [0, 20], 200) assert_almost_equal(integral, 1, 3) def test_vectorization(self): a = flib.hnormal([2,3], .5) b = flib.hnormal([2,3], tau=[.5,.5]) assert_equal(a,b) class test_hypergeometric(TestCase): def test_consistency(self): parameters=dict(n=10, m=12, N=20) hist, like, figdata = discrete_consistency(rhypergeometric, \ hypergeometric_like, parameters, nrandom=5000) if PLOT: compare_hist(figname='hypergeometric', **figdata) assert_array_almost_equal(hist, like,1) class test_inverse_gamma(TestCase): def test_consistency(self): parameters=dict(alpha=1.5, beta=.5) hist, like, figdata = consistency(rinverse_gamma, flib.igamma, parameters,\ nrandom=5000) if PLOT: compare_hist(figname='inverse_gamma', **figdata) assert_array_almost_equal(hist, like,1) def test_consistency_with_gamma(self): parameters=dict(alpha=1.5, beta=.5) rspecial_gamma = lambda *args, **kwargs: 1./rinverse_gamma(*args, **kwargs) rspecial_igamma = lambda *args, **kwargs: 1./rgamma(*args, **kwargs) hist, like, figdata = consistency(rspecial_igamma, flib.igamma, parameters,\ nrandom=5000) if PLOT: compare_hist(figname='inverse_gamma', **figdata) assert_array_almost_equal(hist, like,1) hist, like, figdata = consistency(rspecial_gamma, flib.gamma, parameters,\ nrandom=5000) if PLOT: compare_hist(figname='gamma', **figdata) assert_array_almost_equal(hist, like,1) def test_normalization(self): parameters=dict(alpha=1.5, beta=0.25) integral = normalization(flib.igamma, parameters, [0, 10], 200) assert_almost_equal(integral, 1, 2) def test_vectorization(self): x = [2,3] a = flib.igamma(x, alpha=[1.5, 1.5], beta=.5) b = flib.igamma(x, alpha=[1.5, 1.5], beta=[.5, .5]) assert_almost_equal(a,b,6) class test_lognormal(TestCase): def test_consistency(self): parameters=dict(mu=3, tau = .5) hist, like, figdata = consistency(rlognormal, flib.lognormal, parameters,\ nrandom=5000) if PLOT: compare_hist(figname='lognormal', **figdata) assert_array_almost_equal(hist, like,1) def test_normalization(self): parameters=dict(mu=1, tau = 1) integral = normalization(flib.lognormal, parameters, [0, 50], 200) assert_almost_equal(integral, 1, 2) def test_vectorization(self): r = rlognormal(3, .5, 2) a = lognormal_like(r, 3, .5) b = lognormal_like(r, [3,3], [.5,.5]) assert_array_almost_equal(a,b) class test_multinomial(TestCase): def test_random(self): p = array([.2,.3,.5]) n = 10 r = rmultinomial(n=10, p=p, size=5000) rmean = r.mean(0) assert_array_almost_equal(rmean, n*p, 1) rvar = r.var(0) assert_array_almost_equal(rvar, n*p*(1-p),1) def test_consistency(self): if not SP: raise nose.SkipTest("SciPy not installed.") p = array([.2,.3,.5]) n = 10 x = rmultinomial(n, p, size=5) a = multinomial_like(x,n,p) b = log(multinomial(x,n,p).prod()) assert_almost_equal(a,b,4) def test_vectorization(self): p = array([[.2,.3,.5], [.2,.3,.5]]) r = rmultinomial(10, p=p[0], size=2) a = multinomial_like(r,10,p[0]) b = multinomial_like(r,[10,10],p) assert_equal(a,b) class test_multivariate_hypergeometric(TestCase): def test_random(self): m = [10,15] N = 1000 n = 6 r = rmultivariate_hypergeometric(n, m, N) assert_array_almost_equal(r.mean(0), multivariate_hypergeometric_expval(n,m),1) def test_likelihood(self): if not SP: raise nose.SkipTest("SciPy not installed.") m = [10,15] x = [3,4] a = multivariate_hypergeometric_like(x, m) b = mv_hypergeometric(x, m) assert_almost_equal(a,b,4) class test_mv_normal(TestCase): def test_random(self): mu = array([3,4]) C = np.matrix([[1, .5],[.5,1]]) r = rmv_normal(mu, np.linalg.inv(C), 5000) rC = rmv_normal_cov(mu,C,5000) rchol = rmv_normal_chol(mu,cholesky(C),5000) assert_array_almost_equal(mu, r.mean(0), 1) assert_array_almost_equal(C, np.cov(r.T), 1) assert_array_almost_equal(mu, rC.mean(0), 1) assert_array_almost_equal(C, np.cov(rC.T), 1) assert_array_almost_equal(mu, rchol.mean(0), 1) assert_array_almost_equal(C, np.cov(rchol.T), 1) def test_likelihood(self): mu = array([3,4]) C = np.matrix([[1, .5],[.5,1]]) tau = np.linalg.inv(C) r = rmv_normal(mu, tau, 2) # mv_normal_like is expecting tau as its last argument a = sum([mv_normal_like(x, mu, tau) for x in r]) b = sum([mv_normal_cov_like(x, mu, C) for x in r]) # mv_normal_like_chol is expecting a Cholesky factor as the last argument. c = sum([mv_normal_chol_like(x,mu,cholesky(C)) for x in r]) d = sum([mv_normal(x, mu, C) for x in r]) assert_almost_equal(a, d,6) assert_almost_equal(a,b,6) assert_almost_equal(b,c,6) class test_normal(TestCase): def test_consistency(self): parameters=dict(mu=3, tau = .5) hist, like, figdata = consistency(rnormal, flib.normal, parameters,\ nrandom=5000) if PLOT: compare_hist(figname='normal', **figdata) assert_array_almost_equal(hist, like,1) def test_vectorization(self): a = flib.normal([3,4,5], mu=3, tau=.5) b = flib.normal([3,4,5], mu=[3,3,3], tau=.5) c = flib.normal([3,4,5], mu=[3,3,3], tau=[.5,.5,.5]) assert_equal(a,b) assert_equal(b,c) class test_von_mises(TestCase): def test_consistency(self): parameters=dict(mu=3, kappa = .5) hist, like, figdata = consistency(rvon_mises, flib.vonmises, parameters,\ nrandom=5000) if PLOT: compare_hist(figname='von_mises', **figdata) assert_array_almost_equal(hist, like,1) def test_vectorization(self): a = flib.vonmises([3,4,5], mu=3, kappa=.5) b = flib.vonmises([3,4,5], mu=[3,3,3], kappa=.5) c = flib.vonmises([3,4,5], mu=[3,3,3], kappa=[.5,.5,.5]) assert_equal(a,b) assert_equal(b,c) class test_pareto(TestCase): def test_consistency(self): parameters=dict(alpha=5, m = 3) hist, like, figdata = consistency(rpareto, flib.pareto, parameters,\ nrandom=5000) if PLOT: compare_hist(figname='pareto', **figdata) assert_array_almost_equal(hist, like, 1) def test_vectorization(self): a = flib.pareto([3,4,5], alpha=3, m=1) b = flib.pareto([3,4,5], alpha=[3,3,3], m=1) c = flib.pareto([3,4,5], alpha=[3,3,3], m=[1,1,1]) assert_equal(a,b) assert_equal(b,c) class test_truncated_pareto(TestCase): def test_consistency(self): parameters=dict(alpha=5, m = 3, b=5) hist, like, figdata = consistency(rtruncated_pareto, flib.truncated_pareto, parameters,\ nrandom=5000) if PLOT: compare_hist(figname='truncated_pareto', **figdata) assert_array_almost_equal(hist, like, 1) def test_random(self): r = rtruncated_pareto(alpha=3, m=1, b=6, size=10000) assert_almost_equal(r.mean(), truncated_pareto_expval(3, 1, 6), 1) assert (r > 1).all() assert (r < 6).all() def test_vectorization(self): a = flib.truncated_pareto([3,4,5], alpha=3, m=1, b=6) b = flib.truncated_pareto([3,4,5], alpha=[3,3,3], m=1, b=6) c = flib.truncated_pareto([3,4,5], alpha=[3,3,3], m=[1,1,1], b=[6,6,6]) assert_equal(a,b) assert_equal(b,c) class test_poisson(TestCase): def test_consistency(self): parameters = {'mu':2.} hist,like, figdata = discrete_consistency(rpoisson, flib.poisson, parameters, nrandom=5000, range=[0,10]) if PLOT: compare_hist(figname='poisson', **figdata) assert_array_almost_equal(hist, like,1) def test_normalization(self): parameters = {'mu':2.} summation=discrete_normalization(flib.poisson,parameters,20) assert_almost_equal(summation, 1, 2) def test_calling(self): a = flib.poisson([1,2,3], 2) b = flib.poisson([1,2,3], [2,2,2]) assert_equal(a,b) class test_truncated_poisson(TestCase): def test_consistency(self): parameters = {'mu':4., 'k':1} hist,like, figdata = discrete_consistency(rtruncated_poisson, flib.trpoisson, parameters, nrandom=5000, range=[1,10]) if PLOT: compare_hist(figname='poisson', **figdata) assert_array_almost_equal(hist, like,1) def test_random(self): r = rtruncated_poisson(mu=5, k=1, size=10000) assert_almost_equal(r.mean(), truncated_poisson_expval(5, 1), 1) assert (r >= 1).all() def test_normalization(self): parameters = {'mu':4., 'k':1} summation=discrete_normalization(flib.trpoisson,parameters,20) assert_almost_equal(summation, 1, 2) def test_calling(self): a = flib.trpoisson([3,4,5], 4, 1) b = flib.trpoisson([3,4,5], [4,4,4], [1,1,1]) assert_equal(a,b) class test_skew_normal(TestCase): def test_consistency(self): parameters = dict(mu=10, tau=10, alpha=-5) hist,like, figdata = consistency(rskew_normal, skew_normal_like, parameters, nrandom=5000) if PLOT: compare_hist(figname='truncnorm', **figdata) assert_array_almost_equal(hist, like,1) def test_normalization(self): parameters = dict(mu=10, tau=10, alpha=-5) integral = normalization(skew_normal_like, parameters, [8.5, 10.5], 200) assert_almost_equal(integral, 1, 2) def test_calling(self): a = skew_normal_like([1,2,3], 2, 1, 5) b = skew_normal_like([1,2,3], [2,2,2], 1, 5) c = skew_normal_like([1,2,3], [2,2,2], [1,1,1], 5) d = skew_normal_like([1,2,3], [2,2,2], [1,1,1], [5,5,5]) assert_equal(a,b) assert_equal(a,c) assert_equal(a,d) class test_truncnorm(TestCase): def test_consistency(self): parameters = dict(mu=1, tau=1, a=0, b=5) hist,like, figdata = consistency(rtruncnorm, truncnorm_like, parameters, nrandom=5000) if PLOT: compare_hist(figname='truncnorm', **figdata) assert_array_almost_equal(hist, like,1) def test_random(self): r = rtruncnorm(mu=-1,tau=1,a=-20,b=20,size=10000) assert_almost_equal(r.mean(), truncnorm_expval(-1, .1, -20., 20.), 1) assert (r > -20).all() assert (r < 20).all() def test_against_scipy(self): if not SP: raise nose.SkipTest("SciPy not installed.") mu = 3. sigma = 2. tau = 1./sigma**2 a=2;b=4; x = 3.5 y1 = truncnorm_like(x, mu, tau, a, b) y2 = scipy.stats.truncnorm.pdf(x, -.5, .5, mu, sigma) assert_almost_equal(y1, np.log(y2), 8) def test_normalization(self): parameters = dict(mu=1, tau=1, a=0, b=2) integral = normalization(truncnorm_like, parameters, [-1, 3], 200) assert_almost_equal(integral, 1, 2) def test_calling(self): a = truncnorm_like([0,1,2], 2, 1, 0, 2) b = truncnorm_like([0,1,2], [2,2,2], 1, 0, 2) c = truncnorm_like([0,1,2], [2,2,2], [1,1,1], 0,2) #d = truncnorm_like([0,1,2], [2,2,2], [1,1,1], [0,0,0], 2) #e = truncnorm_like([0,1,2], [2,2,2], [1,1,1], 0, [2,2,2]) assert_equal(a,b) assert_equal(a,b) assert_equal(a,c) #assert_equal(a,d) #assert_equal(a,e) class test_weibull(TestCase): def test_consistency(self): parameters = {'alpha': 2., 'beta': 3.} hist,like, figdata = consistency(rweibull, flib.weibull, parameters, nrandom=5000, range=[0,10]) if PLOT: compare_hist(figname='weibull', **figdata) assert_array_almost_equal(hist, like,1) def test_normalization(self): parameters = {'alpha': 2., 'beta': 3.} integral = normalization(flib.weibull, parameters, [0,10], N=200) assert_almost_equal(integral, 1, 2) def test_calling(self): a = flib.weibull([1,2], 2,3) b = flib.weibull([1,2], [2,2], [3,3]) assert_equal(a,b) #------------------------------------------------------------------------------- # Test Wishart / Inverse Wishart distributions _Tau_test = np.matrix([[ 209.47883244, 10.88057915, 13.80581557], [ 10.88057915, 213.58694978, 11.18453854], [ 13.80581557, 11.18453854, 209.89396417]]) class test_wishart(TestCase): """ There are results out there on the asymptotic distribution of eigenvalues of very large Wishart matrices that we could use to make another test case... """ # precision matrix Tau_test = _Tau_test / 100 # def test_samples(self): # # test consistency between precision and cov-based # _npr.seed(1) # sample_a = rwishart(100, self.Tau_test) # _npr.seed(1) # sample_b = rwishart_cov(100, self.Tau_test.I) # assert_array_almost_equal(sample_a, sample_b) def test_likelihoods(self): try: from scipy.special import gammaln except: raise nose.SkipTest("SciPy not installed.") W_test = rwishart(100,self.Tau_test) def slo_wishart_cov(W,n,V): p = W.shape[0] logp = ((n-p-1)*.5 * np.log(det(W)) - n*p*.5*np.log(2) - n*.5*np.log(det(V)) - p*(p-1)/4.*np.log(pi)) for i in xrange(1,p+1): logp -= gammaln((n+1-i)*.5) logp -= np.trace(np.linalg.solve(V,W)*.5) return logp for i in [5,10,100,10000]: right_answer = slo_wishart_cov(W_test,i,self.Tau_test.I) assert_array_almost_equal(wishart_like(W_test,i,self.Tau_test), right_answer, decimal=5) assert_array_almost_equal( wishart_cov_like(W_test,i,self.Tau_test.I), right_answer, decimal=5) def test_expval(self): n = 1000 N = 1000 A = 0.*self.Tau_test for i in xrange(N): A += rwishart(n,self.Tau_test) A /= N delta=A-wishart_expval(n,self.Tau_test) assert(np.abs(np.asarray(delta)/np.asarray(A)).max()<.1) A = 0.*self.Tau_test for i in xrange(N): A += rwishart_cov(n,self.Tau_test.I) A /= N delta=A-wishart_cov_expval(n,self.Tau_test.I) assert(np.abs(np.asarray(delta)/np.asarray(A)).max()<.1) # class test_inverse_wishart(TestCase): # """ # Adapted from test_wishart # """ # # Covariance matrix (!) # C_test = _Tau_test.I # # def test_samples(self): # # # test consistency between precision and cov-based # # _npr.seed(1) # # sample_a = rinverse_wishart(100, self.C_test) # # _npr.seed(1) # # sample_b = rinverse_wishart_prec(100, self.C_test.I) # # assert_array_almost_equal(sample_a, sample_b) # def test_likelihoods(self): # try: # from scipy.special import gammaln # except: # raise nose.SkipTest("SciPy not installed.") # IW_test = rinverse_wishart(100,self.C_test) # def slo_inv_wishart(W,n,V): # p = W.shape[0] # logp = (-0.5*(n+p+1) * np.log(det(W)) - n*p*.5*np.log(2) # + n*.5*np.log(det(V)) - p*(p-1)/4.*np.log(pi)) # for i in xrange(1,p+1): # logp -= gammaln((n+1-i)*.5) # logp -= 0.5*np.trace(V*W.I) # return logp # for i in [5,10,100,10000]: # right_answer = slo_inv_wishart(IW_test,i,self.C_test) # calculated = inverse_wishart_like(IW_test,i,self.C_test) # assert_array_almost_equal(calculated, right_answer, decimal=1) # calculated = inverse_wishart_prec_like(IW_test,i,self.C_test.I) # assert_array_almost_equal(calculated, right_answer, decimal=1) # # def test_wishart_equivalence(self): # # IW_test = rinverse_wishart(100,self.C_test) # # iwlike = inverse_wishart_like(IW_test, 100, self.C_test) # # wlike = wishart_like(np.linalg.inv(IW_test), 100, np.linalg.inv(self.C_test)) # # assert_almost_equal(iwlike, wlike, decimal=6) # """ # def test_expval(self): # n = 100 # N = 1000 # A = 0.*self.C_test # for i in xrange(N): # A += rinverse_wishart(n,self.C_test) # A /= N # delta=A-inverse_wishart_expval(n,self.C_test) # print np.abs(np.asarray(delta)/np.asarray(A)).max() # assert(np.abs(np.asarray(delta)/np.asarray(A)).max()<.5) # """ class test_Stochastic_generator(TestCase): def test_randomwrap(self): for s in ( (1,), (10,), (10,2)): B = Bernoulli('x', np.ones(s)*.5) B.random() assert_equal(B.value.shape, s) N = Normal('x', np.ones(s), 1) N.random() assert_equal(N.value.shape, s) N = Normal('x', np.ones(s), np.ones(s)) N.random() assert_equal(N.value.shape, s) N = Normal('x', 1, 1) N.random() assert_equal(N.value.shape, ()) class test_shape_consistency(TestCase): def test(self): shape = (10, 5) data = np.zeros(shape) mean = pymc.Normal("mean",mu = 0, tau = 1) @pymc.deterministic def means (mean = mean): return (np.ones(shape) * mean).ravel() #data has shape (10,5) but means returns an array of shape (10 * 5,) assert_raises(ValueError, pymc.Normal, "obs", mu = means, tau = 1, observed = True, value = data) if __name__ == '__main__': original_filters = warnings.filters[:] warnings.simplefilter("ignore") try: import nose nose.runmodule() finally: warnings.filters = original_filters # TODO: Restore in 2.2 # with warnings.catch_warnings(): # warnings.simplefilter('ignore', DeprecationWarning) # import nose # nose.runmodule() pymc-2.2+ds/pymc/tests/test_gradients.py000066400000000000000000000256471204033704200204430ustar00rootroot00000000000000from numpy import * from pymc import * from numpy.testing import * import nose import sys from pymc import utils from pymc import six import pymc float_dtypes = [float, single, float_, longfloat] def generate_model(): # Simulated data ReData = arange(200, 3000, 25) measured = 10.2 * (ReData )** .5 + random.normal(scale = 55, size = size(ReData)) sd =pymc.Uniform('sd', lower = 5, upper = 100) a = pymc.Uniform('a', lower = 0, upper = 100) b = pymc.Uniform('b', lower = .05, upper = 2.0) nonlinear = a * (ReData )** b precision = sd **-2 results = pymc.Normal('results', mu = nonlinear, tau = precision, value = measured, observed = True) return locals() def find_variable_set(stochastic): set = [stochastic] for parameter, variable in six.iteritems(stochastic.parents): if isinstance(variable, Variable): set.append(variable) return set def check_jacobians( deterministic): for parameter, pvalue in six.iteritems(deterministic.parents): if isinstance(pvalue, Variable): grad = random.normal(.5, .1, size = shape(deterministic.value)) a_partial_grad = get_analytic_partial_gradient(deterministic, parameter, pvalue, grad) n_partial_grad = get_numeric_partial_gradient(deterministic, pvalue, grad) assert_array_almost_equal(a_partial_grad, n_partial_grad,4, "analytic partial gradient for " + str(deterministic) + " with respect to parameter " + str(parameter) + " is not correct.") def get_analytic_partial_gradient(deterministic, parameter, variable, grad): try: jacobian = deterministic._jacobians[parameter].get() except KeyError: raise ValueError(str(deterministic) +" has no jacobian for " + str(parameter)) mapping = deterministic._jacobian_formats.get(parameter, 'full') return deterministic._format_mapping[mapping](deterministic, variable, jacobian, grad) def get_numeric_partial_gradient( deterministic, pvalue, grad ): j = get_numeric_jacobian(deterministic, pvalue) pg = deterministic._format_mapping['full'](deterministic, pvalue,j , grad) return reshape(pg, shape(pvalue.value)) def get_numeric_jacobian( deterministic, pvalue ): e = 1e-9 initial_pvalue = pvalue.value shape = initial_pvalue.shape size = initial_pvalue.size initial_value = ravel(deterministic.value) numeric_jacobian= zeros((deterministic.value.size,size)) for i in range(size): delta = zeros(size) delta[i] += e pvalue.value = reshape(initial_pvalue.ravel() + delta, shape) value = ravel(deterministic.value) numeric_jacobian[:, i] = (value - initial_value)/e pvalue.value = initial_pvalue return numeric_jacobian def check_model_gradients( model): model = set(model) # find the markov blanket children = set([]) for s in model: for s2 in s.extended_children: if isinstance(s2, Stochastic) and s2.observed == True: children.add( s2) # self.markov_blanket is a list, because we want self.stochastics to have the chance to # raise ZeroProbability exceptions before self.children. markov_blanket = list(model)+list(children) gradients = utils.logp_gradient_of_set(model) for variable in model: analytic_gradient = gradients[variable] numeric_gradient = get_numeric_gradient(markov_blanket, variable) assert_array_almost_equal(numeric_gradient, analytic_gradient,3, "analytic gradient for model " + str(model) + " with respect to variable " + str(variable) + " is not correct.") def check_gradients( stochastic): stochastics = find_variable_set(stochastic) gradients = utils.logp_gradient_of_set(stochastics, stochastics) for s, analytic_gradient in six.iteritems(gradients): numeric_gradient = get_numeric_gradient(stochastics, s) assert_array_almost_equal(numeric_gradient, analytic_gradient,4, "analytic gradient for " + str(stochastic) + " with respect to parameter " + str(s) + " is not correct.") def get_numeric_gradient( stochastic, pvalue ): e = 1e-9 initial_value = pvalue.value i_shape = shape(initial_value) i_size = size(initial_value) initial_logp = utils.logp_of_set(stochastic) numeric_gradient = zeros(i_shape) if not (pvalue.dtype in float_dtypes): return numeric_gradient for i in range(i_size): delta = zeros(i_shape) try: delta[unravel_index(i,i_shape or (1,))] += e except IndexError: delta += e pvalue.value = initial_value + delta logp = utils.logp_of_set(stochastic) try: numeric_gradient[unravel_index(i,i_shape or (1,))] = (logp - initial_logp)/e except IndexError: numeric_gradient = (logp - initial_logp)/e pvalue.value = initial_value return numeric_gradient class test_gradients(TestCase): def test_jacobians(self): shape = (3, 10) a = Normal('a', mu = zeros(shape), tau = ones(shape)) b = Normal('b', mu = zeros(shape), tau = ones(shape)) c = Uniform('c', lower = ones(shape) * .1, upper = ones(shape) * 10) d = Uniform('d', lower = ones(shape) * -10, upper = ones(shape) * -.1) addition = a + b check_jacobians(addition) subtraction = a - b check_jacobians(subtraction) multiplication = a * b check_jacobians(subtraction) division1 = a / c check_jacobians(division1) division2 = a / d check_jacobians(division2) a2 = Uniform('a2', lower = .1 * ones(shape), upper = 2.0 * ones(shape)) powering = a2 ** b check_jacobians(powering) negation = -a check_jacobians(negation) absing = abs(a) check_jacobians(absing) indexing1 = a[0:1,5:8] check_jacobians(indexing1) indexing3 = a[::-1,:] check_jacobians(indexing3) # this currently does not work because scalars use the Index deterministic # which is special and needs more thought indexing2 = a[0] check_jacobians(indexing2) def test_numpy_deterministics_jacobians(self): shape = (2, 3) a = Normal('a', mu = zeros(shape), tau = ones(shape)*5) b = Normal('b', mu = zeros(shape), tau = ones(shape)) c = Uniform('c', lower = ones(shape) * .1, upper = ones(shape) * 10) d = Uniform('d', lower = ones(shape) * -1.0, upper = ones(shape) * 1.0) e = Normal('e', mu = zeros(shape), tau = ones(shape)) f = Uniform('c', lower = ones(shape) * 1.0, upper = ones(shape) * 10) summing = sum(a, axis = 0) check_jacobians(summing) summing2 = sum(a) check_jacobians(summing2) absing = abs(a) check_jacobians(absing) exping = exp(a) check_jacobians(exping) logging = log(c) check_jacobians(logging) sqrting = sqrt(c) check_jacobians(sqrting) sining = sin(a) check_jacobians(sining) cosing = cos(a) check_jacobians(cosing) taning = tan(a) check_jacobians(taning) arcsining = arcsin(d) check_jacobians(arcsining) arcosing = arccos(d) check_jacobians(arcosing) arctaning = arctan(d) check_jacobians(arctaning) sinhing = sinh(a) check_jacobians(sinhing) coshing = cosh(a) check_jacobians(coshing) tanhing = tanh(a) check_jacobians(tanhing) arcsinhing = arcsinh(a) check_jacobians(arcsinhing) arccoshing = arccosh(f) check_jacobians(arccoshing) arctanhing = arctanh(d) check_jacobians(arctanhing) arctan2ing = arctan2(b, e) check_jacobians(arctan2ing) hypoting = hypot(b, e) check_jacobians(hypoting) def test_gradients(self): shape = (5,) a = Normal('a', mu = zeros(shape), tau = ones(shape)) b = Normal('b', mu = zeros(shape), tau = ones(shape)) b2 = Normal('b2', mu = 2, tau = 1.0) c = Uniform('c', lower = ones(shape) * .7, upper = ones(shape) * 2.5 ) d = Uniform('d', lower = ones(shape) * .7, upper = ones(shape) * 2.5 ) e = Uniform('e', lower = ones(shape) * .2, upper = ones(shape) * 10) f = Uniform('f' , lower = ones(shape) * 2, upper = ones(shape) * 30) p = Uniform('p', lower = zeros(shape) +.05 , upper = ones(shape) -.05 ) n = 5 a.value = 2 * ones(shape) b.value = 2.5 * ones(shape) b2.value = 2.5 norm = Normal('norm', mu = a, tau = b) check_gradients(norm) norm2 = Normal('norm2', mu = 0, tau = b2) check_gradients(norm2) gamma = Gamma('gamma', alpha = a, beta = b) check_gradients(gamma) bern = Bernoulli('bern',p = p) check_gradients(bern ) beta = Beta('beta', alpha = c, beta = d) check_gradients(beta) cauchy = Cauchy('cauchy', alpha = a, beta = d) check_gradients(cauchy) chi2 = Chi2('chi2', nu = e) check_gradients(chi2) exponential = Exponential('expon', beta = d) check_gradients(exponential) t = T('t', nu = f) check_gradients(t) half_normal = HalfNormal('half_normal', tau = e) check_gradients(half_normal) inverse_gamma = InverseGamma ('inverse_gamma', alpha = c, beta = d) check_gradients(inverse_gamma) laplace = Laplace('laplace', mu = a , tau = c) check_gradients(laplace) lognormal = Lognormal('lognormal', mu = a, tau = c) check_gradients(lognormal) weibull = Weibull('weibull', alpha = c, beta = d) check_gradients(weibull) binomial = Binomial('binomial', p = p, n = n) check_gradients(binomial) geometric = Geometric('geometric', p = p) check_gradients(geometric) poisson = Poisson('poisson', mu = c) check_gradients(poisson) u = Uniform('u', lower = a, upper = b) check_gradients(u) negative_binomial = NegativeBinomial('negative_binomial', mu = c, alpha = d ) check_gradients(negative_binomial) #exponweib still not working for unknown reasons #exponweib = Exponweib('exponweib', alpha = c, k =d , loc = a, scale = e ) #check_gradients(exponweib) def test_model(self): model = generate_model() model["sd"].value = 55.0 model["a"].value = 10.2 model["b"].value = .5 check_gradients(model["sd"]) M = pymc.MCMC(model) check_model_gradients(M.stochastics) if __name__ == '__main__': C =nose.config.Config(verbosity=1) nose.runmodule(config=C) pymc-2.2+ds/pymc/tests/test_graph.py000066400000000000000000000032451204033704200175520ustar00rootroot00000000000000import pymc as pm from numpy.testing import * import numpy as np import nose from pymc import six xrange = six.moves.xrange DIR = 'testresults' def mymodel(): mu=pm.Normal('mu',0,1) N= [pm.Normal('N_%i'%i,mu,1) for i in xrange(3)] z1 = pm.Lambda('z1',lambda n=N: np.sum(n)) z2 = pm.Lambda('z2',lambda n=N: np.sum(n)) @pm.potential def y(z1=z1, z2=z2,mu=mu): return 0 return mu,N,z1,z2,y def powerset(seq): """ Returns all the subsets of this set. This is a generator. From http://blog.technomancy.org/2009/3/17/a-powerset-generator-in-python """ if len(seq) <= 1: yield seq yield [] else: for item in powerset(seq[1:]): yield [seq[0]]+item yield item class test_graph(TestCase): def test_graph(self): try: import pydot except ImportError: raise nose.SkipTest mu,N,z1,z2,y = mymodel() for mods in [[mu], [mu,N], [mu,N,z1,z2], [mu,N,z1,z2,y]]: for args in powerset([('collapse_deterministics', True), ('collapse_potentials', True), ('label_edges', False), ('legend', True), ('consts', True)]): M = pm.Model(mods) pm.graph.graph(M, path=DIR, **dict(args)) def test_moral(self): try: import pydot except ImportError: raise nose.SkipTest mu,N,z1,z2,y = mymodel() for mods in [[mu], [mu,N], [mu,N,z1,z2], [mu,N,z1,z2,y]]: M = pm.Model(mods) pm.graph.moral_graph(M, path=DIR) if __name__ == '__main__': C =nose.config.Config(verbosity=1) nose.runmodule(config=C) pymc-2.2+ds/pymc/tests/test_instantiation.py000066400000000000000000000064431204033704200213400ustar00rootroot00000000000000### # Test that decorators return the appropriate object. # David Huard # June 21, 2007 ### ### # TODO # ---- # Add test for deterministic # Check discrete and binary stochastics # Test the distribution instantiators. ### from numpy.testing import * import pymc from pymc import Sampler, observed, stochastic, deterministic, \ Stochastic,Deterministic from numpy import array, log, sum, ones, concatenate, inf from pymc import uniform_like, exponential_like, poisson_like D_array = array([ 4, 5, 4, 0, 1, 4, 3, 4, 0, 6, 3, 3, 4, 0, 2, 6, 3, 3, 5, 4, 5, 3, 1, 4, 4, 1, 5, 5, 3, 4, 2, 5, 2, 2, 3, 4, 2, 1, 3, 2, 2, 1, 1, 1, 1, 3, 0, 0, 1, 0, 1, 1, 0, 0, 3, 1, 0, 3, 2, 2, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 2, 1, 0, 0, 0, 1, 1, 0, 2, 3, 3, 1, 1, 2, 1, 1, 1, 1, 2, 4, 2, 0, 0, 1, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1]) # Define data and stochastics @stochastic(dtype=int) def s(value=50, length=110): """Change time for rate stochastic.""" return uniform_like(value, 0, length) @stochastic def e(value=1., rate=1.): """Rate stochastic of poisson distribution.""" return exponential_like(value, rate) @stochastic def l(value=.1, rate = 1.): """Rate stochastic of poisson distribution.""" return exponential_like(value, rate) @observed(dtype=int) def D( value = D_array, s = s, e = e, l = l): """Annual occurences of coal mining disasters.""" return poisson_like(value[:s],e) + poisson_like(value[s:],l) E = observed(e) @observed def F(value = D_array*.5, s = s, e = e, l = l): """Annual occurences of coal mining disasters.""" return poisson_like(value[:s],e) + poisson_like(value[s:],l) @observed def G(value = D_array*.5, s = s, e = e, l = l): """Annual occurences of coal mining disasters.""" return poisson_like(value[:s],e) + poisson_like(value[s:],l) class test_instantiation(TestCase): def test_data(self): assert(isinstance(D, Stochastic)) assert(D.observed) assert(isinstance(E, Stochastic)) assert(E.observed) assert(isinstance(F, Stochastic)) assert(F.observed) assert(isinstance(G, Stochastic)) assert(G.observed) def test_stochastic(self): assert(isinstance(l, Stochastic)) assert(not l.observed) def test_invalid_keyword(self): # Ticket 239 # Normal is given values instead of value and should raise an error try: pymc.Normal(name='alpha', values=D_array, mu=1, tau=1) except TypeError: pass else: raise AssertionError('Instantiation should fail.') class test_out_of_bound_initialization(TestCase): def test_simple(self): """We create a variable whose initial value creates a ZeroProbability error in its children, and check that robust_init can randomly sample the variable until it finds a suitable value. """ lower = pymc.Uniform('lower', 0., 2., value=1.5, rseed=True) pymc.robust_init(pymc.Uniform, 100, 'data', lower=lower, upper=5, value=[1, 2, 3, 4], observed=True) if __name__ == '__main__': #import unittest #unittest.main() run_module_suite() pymc-2.2+ds/pymc/tests/test_interactive.py000066400000000000000000000005171204033704200207650ustar00rootroot00000000000000""" Test interactive sampler """ # TODO: Make real test case. from pymc import MCMC from pymc.examples import disaster_model import os, nose def test_interactive(): S = MCMC(disaster_model) S.isample(200,100,2, out=open('testresults/interactive.log', 'w'), progress_bar=0) if __name__ == '__main__': nose.runmodule() pymc-2.2+ds/pymc/tests/test_mean.py000066400000000000000000000010071204033704200173630ustar00rootroot00000000000000from numpy.testing import * from numpy import * from pymc.gp import Mean from copy import copy def quadfun(x, a, b, c): return (a * x ** 2 + b * x + c) M = Mean(eval_fun = quadfun, a = 1., b = .5, c = 2.) def constant(x, val): """docstring for parabolic_fun""" return zeros(x.shape[:-1],dtype=float) + val N = Mean(constant, val = 0.) x=arange(-1,1,.01) y=vstack((x,x)).T class test_mean(TestCase): def test(self): assert(M(x).shape == x.shape) assert(N(y).shape == (y.shape[0],)) pymc-2.2+ds/pymc/tests/test_missing.py000066400000000000000000000021611204033704200201160ustar00rootroot00000000000000from pymc import rnormal, Normal, MCMC, Uniform, Matplot, Metropolis from numpy import ma, shape, ravel from numpy.testing import * # Generate some data with missing observations fake_data = rnormal(0, 1, size=100) m = ma.masked_array(fake_data) m[[3,6]] = ma.masked class TestMissing(TestCase): """Unit test for missing data imputation""" def test_simple(self): # Priors mu = Normal('mu', mu=0, tau=0.0001) s = Uniform('s', lower=0, upper=100, value=10) tau = s**-2 # Likelihood with missing data x = Normal('x', mu=mu, tau=tau, value=m, observed=True) # Instantiate sampler M = MCMC([mu, s, tau, x]) # Run sampler M.sample(10000, 5000, progress_bar=0) # Check length of value assert_equal(len(x.value), 100) # Check size of trace tr = M.trace('x')() assert_equal(shape(tr), (5000, 2)) sd2 = [-2 < i < 2 for i in ravel(tr)] # Check for standard normal output assert_almost_equal(sum(sd2)/10000., 0.95, decimal=1) pymc-2.2+ds/pymc/tests/test_norm_approx.py000066400000000000000000000027661204033704200210240ustar00rootroot00000000000000from pymc import NormApprox from pymc.examples import gelman_bioassay try: from pylab import * except: pass from numpy import * from numpy.testing import * from numpy.linalg import cholesky import nose PLOT=False model = gelman_bioassay class test_norm_approx(TestCase): @classmethod def setUpClass(self): try: import scipy except: raise nose.SkipTest("SciPy not installed.") def test_fmin(self): N = NormApprox(model) N.fit('fmin') def test_fmin_l_bfgs_b(self): N = NormApprox(model) N.fit('fmin_l_bfgs_b') def test_fmin_ncg(self): N = NormApprox(model) N.fit('fmin_ncg') def test_fmin_cg(self): N = NormApprox(model) N.fit('fmin_cg') def test_fmin_powell(self): N = NormApprox(model) N.fit('fmin_powell') def test_revert(self): N = NormApprox(model) N.fit() max_alpha = N.alpha.value.copy() N.alpha.random() N.revert_to_max() assert_almost_equal(N.alpha.value, max_alpha) def test_sig(self): N = NormApprox(model) N.fit('fmin') assert((abs(N._sig * N._sig.T - N._C) < 1.0e-14).all()) def test_draws(self): N = NormApprox(model) N.fit('fmin') N.sample(1000) if PLOT: plot(N.alpha.trace(),N.beta.trace(),'k.') xlabel(r'$\alpha$') ylabel(r'$\beta$') if __name__=='__main__': import unittest unittest.main() pymc-2.2+ds/pymc/tests/test_observation.py000066400000000000000000000011301204033704200207730ustar00rootroot00000000000000from numpy.testing import * from pymc.gp import * from .test_mean import M, x from .test_cov import C from numpy import * from copy import copy M = copy(M) C = copy(C) # Impose observations on the GP class test_observation(TestCase): def test(self): obs_x = array([-.5,.5]) V = array([.002,.002]) data = array([3.1, 2.9]) observe(M=M, C=C, obs_mesh=obs_x, obs_V = V, obs_vals = data) # Generate realizations for i in range(3): f = Realization(M, C) f(x) pymc-2.2+ds/pymc/tests/test_realization.py000066400000000000000000000004651204033704200207730ustar00rootroot00000000000000from numpy.testing import * from pymc.gp import * from .test_mean import M, x from .test_cov import C from numpy import * from copy import copy # Impose observations on the GP class test_realization(TestCase): def test(self): for i in range(3): f = Realization(M, C) f(x) pymc-2.2+ds/pymc/tests/test_special_methods.py000066400000000000000000000056441204033704200216210ustar00rootroot00000000000000from numpy.testing import * import numpy as np import pymc as pm try: from types import UnboundMethodType except ImportError: # On Python 3, unbound methods are just functions. def UnboundMethodType(func, inst, cls): return func submod = pm.gp.GPSubmodel('x5',pm.gp.Mean(lambda x:0*x),pm.gp.FullRankCovariance(pm.gp.cov_funs.exponential.euclidean, amp=1, scale=1),np.linspace(-1,1,21)) x = [pm.MvNormalCov('x0',np.zeros(5),np.eye(5)), pm.Gamma('x1',4,4,size=3), pm.Gamma('x2',2,2), pm.Binomial('x3',100,.4), pm.Bernoulli('x4',.5), submod.f] do_not_implement_methods = ['iadd','isub','imul','itruediv','ifloordiv','imod','ipow','ilshift','irshift','iand','ixor','ior'] uni_methods = ['neg','pos','abs','invert','index'] rl_bin_methods = ['div', 'truediv', 'floordiv', 'mod', 'divmod', 'pow', 'lshift', 'rshift', 'and', 'xor', 'or']+['add', 'mul', 'sub'] bin_methods = ['call','getitem'] class test_special_methods(TestCase): def test_call(self): for y in x[:2]: assert_equal(y[0].value, y.value[0]) def test_getitem(self): assert_equal(x[5](3).value, x[5].value(3)) for dnim in do_not_implement_methods: def meth(self, dnim=dnim): for y in x: if hasattr(y, '__%s__'%dnim): raise AssertionError('Method %s implemented in class %s'%(dnim, y.__class__)) setattr(test_special_methods, 'test_'+dnim, UnboundMethodType(meth, None, test_special_methods)) for dnim in uni_methods: def meth(self, dnim=dnim): # These methods only work on integer-valued variables. if dnim in ['index','invert']: testvars = [x[3]] # All the others work on all numeric ar ndarray variables. else: testvars = x[:5] for y in testvars: assert_equal(getattr(y,'__%s__'%dnim)().value, getattr(y.value,'__%s__'%dnim)()) setattr(test_special_methods, 'test_'+dnim, UnboundMethodType(meth, None, test_special_methods)) for dnim in rl_bin_methods: def meth(self, dnim=dnim): # These only work for boolean-valued variables. if dnim in ['or','xor','and']: testvars = [x[4]] for y in testvars: assert_equal(getattr(y,'__%s__'%dnim)(True).value, getattr(y.value,'__%s__'%dnim)(True)) # These only work for integers and booleans. elif dnim in ['lshift','rshift']: testvars = x[3:5] for y in testvars: assert_equal(getattr(y,'__%s__'%dnim)(2).value, getattr(y.value,'__%s__'%dnim)(2)) # These should work for all numeric or ndarray variables else: testvars = x[:4] for y in testvars: assert_equal(getattr(y,'__%s__'%dnim)(3.0).value, getattr(y.value,'__%s__'%dnim)(3.0)) setattr(test_special_methods, 'test_'+dnim, UnboundMethodType(meth, None, test_special_methods)) if __name__ == '__main__': import unittest unittest.main() pymc-2.2+ds/pymc/tests/test_utils.py000066400000000000000000000024311204033704200176050ustar00rootroot00000000000000from pymc import * from numpy import * from numpy.testing import * import nose import sys from pymc import utils from pymc import six xrange = six.moves.xrange class test_logp_of_set(TestCase): A = Normal('A',0,1) B = Gamma('B',1,1) C = Lambda('C',lambda b=B: sqrt(b)) D = Gamma('D',C,1) @stochastic def E(x=1,value=3): if value != 3: raise RuntimeError else: return 0. E.value = 2 def test_logp(self): self.B.rand() lp1 = utils.logp_of_set(set([self.A,self.B,self.D])) assert_almost_equal(lp1, self.A.logp+self.B.logp+self.D.logp, 10) def test_ZeroProb(self): self.B.value = -1 for i in xrange(1000): try: utils.logp_of_set(set([self.A,self.B,self.D, self.E])) except: cls, inst, tb = sys.exc_info() assert(cls is ZeroProbability) def test_other_err(self): self.B.rand() for i in xrange(1000): try: utils.logp_of_set(set([self.A,self.B,self.D,self.E])) except: cls, inst, tb = sys.exc_info() assert(cls is RuntimeError) if __name__ == '__main__': C =nose.config.Config(verbosity=1) nose.runmodule(config=C) pymc-2.2+ds/pymc/threadpool.py000066400000000000000000000323431204033704200164120ustar00rootroot00000000000000# -*- coding: UTF-8 -*- """NOTE: The code here has been altered. The docstring of the original package follows. Easy to use object-oriented thread pool framework. A thread pool is an object that maintains a pool of worker threads to perform time consuming operations in parallel. It assigns jobs to the threads by putting them in a work request queue, where they are picked up by the next available thread. This then performs the requested operation in the background and puts the results in another queue. The thread pool object can then collect the results from all threads from this queue as soon as they become available or after all threads have finished their work. It's also possible, to define callbacks to handle each result as it comes in. The basic concept and some code was taken from the book "Python in a Nutshell" by Alex Martelli, copyright 2003, ISBN 0-596-00188-6, from section 14.5 "Threaded Program Architecture". I wrapped the main program logic in the ThreadPool class, added the WorkRequest class and the callback system and tweaked the code here and there. Kudos also to Florent Aide for the exception handling mechanism. Basic usage:: >>> pool = ThreadPool(poolsize) >>> requests = makeRequests(some_callable, list_of_args, callback) >>> [pool.putRequest(req) for req in requests] >>> pool.wait() See the end of the module code for a brief, annotated usage example. Website : http://chrisarndt.de/projects/threadpool/ """ __all__ = [ 'WorkRequest', 'set_threadpool_size', 'get_threadpool_size', '__PyMCThreadPool__', '__PyMCExcInfo__', '__PyMCLock__', 'map_noreturn', 'thread_partition_array' ] __author__ = "Christopher Arndt and Anand Patil" __version__ = "1.2.4, modified" __license__ = 'MIT license' # standard library modules import sys import threading try: import queue # Python 3 except ImportError: import Queue as queue # Python 2 import traceback import os import numpy as np from . import six # exceptions class NoResultsPending(Exception): """All work requests have been processed.""" pass class NoWorkersAvailable(Exception): """No worker threads available to process remaining requests.""" pass # internal module helper functions def _handle_thread_exception(request, exc_info): """Default exception handler callback function. This just prints the exception info via ``traceback.print_exception``. """ #print exc_info traceback.print_exception(*exc_info) # utility functions def makeRequests(callable_, args_list, callback=None, exc_callback=_handle_thread_exception): """Create several work requests for same callable with different arguments. Convenience function for creating several work requests for the same callable where each invocation of the callable receives different values for its arguments. ``args_list`` contains the parameters for each invocation of callable. Each item in ``args_list`` should be either a 2-item tuple of the list of positional arguments and a dictionary of keyword arguments or a single, non-tuple argument. See docstring for ``WorkRequest`` for info on ``callback`` and ``exc_callback``. """ requests = [] for item in args_list: if isinstance(item, tuple): requests.append( WorkRequest(callable_, item[0], item[1], callback=callback, exc_callback=exc_callback) ) else: requests.append( WorkRequest(callable_, [item], None, callback=callback, exc_callback=exc_callback) ) return requests # classes class WorkerThread(threading.Thread): """Background thread connected to the requests/results queues. A worker thread sits in the background and picks up work requests from one queue and puts the results in another until it is dismissed. """ def __init__(self, requests_queue, **kwds): """Set up thread in daemonic mode and start it immediatedly. ``requests_queue`` and ``results_queue`` are instances of ``Queue.Queue`` passed by the ``ThreadPool`` class when it creates a new worker thread. """ threading.Thread.__init__(self, **kwds) self.setDaemon(1) self._requests_queue = requests_queue # self._results_queue = results_queue self._dismissed = threading.Event() self.start() def run(self): """Repeatedly process the job queue until told to exit.""" while True: if self._dismissed.isSet(): # we are dismissed, break out of loop break # get next work request. request = self._requests_queue.get() # print 'Worker thread %s running request %s' %(self, request) if self._dismissed.isSet(): # we are dismissed, put back request in queue and exit loop self._requests_queue.put(request) break try: result = request.callable(*request.args, **request.kwds) if request.callback: request.callback(request, result) del result self._requests_queue.task_done() except: request.exception = True if request.exc_callback: request.exc_callback(request) self._requests_queue.task_done() finally: request.self_destruct() def dismiss(self): """Sets a flag to tell the thread to exit when done with current job.""" self._dismissed.set() class WorkRequest: """A request to execute a callable for putting in the request queue later. See the module function ``makeRequests`` for the common case where you want to build several ``WorkRequest`` objects for the same callable but with different arguments for each call. """ def __init__(self, callable_, args=None, kwds=None, requestID=None, callback=None, exc_callback=_handle_thread_exception): """Create a work request for a callable and attach callbacks. A work request consists of the a callable to be executed by a worker thread, a list of positional arguments, a dictionary of keyword arguments. A ``callback`` function can be specified, that is called when the results of the request are picked up from the result queue. It must accept two anonymous arguments, the ``WorkRequest`` object and the results of the callable, in that order. If you want to pass additional information to the callback, just stick it on the request object. You can also give custom callback for when an exception occurs with the ``exc_callback`` keyword parameter. It should also accept two anonymous arguments, the ``WorkRequest`` and a tuple with the exception details as returned by ``sys.exc_info()``. The default implementation of this callback just prints the exception info via ``traceback.print_exception``. If you want no exception handler callback, just pass in ``None``. ``requestID``, if given, must be hashable since it is used by ``ThreadPool`` object to store the results of that work request in a dictionary. It defaults to the return value of ``id(self)``. """ if requestID is None: self.requestID = id(self) else: try: self.str_requestID = requestID self.requestID = hash(requestID) except TypeError: raise TypeError("requestID must be hashable.") self.exception = False self.callback = callback self.exc_callback = exc_callback self.callable = callable_ self.args = args or [] self.kwds = kwds or {} def __str__(self): return "" % \ (self.str_requestID) def self_destruct(self): """ Avoids strange memory leak... for some reason the work request itself never gets let go, so if it has big arguments, or if its callable closes on big variables, there's trouble. """ for attr in ['exception', 'callback', 'exc_callback', 'callable', 'args', 'kwds']: delattr(self, attr) class ThreadPool: """A thread pool, distributing work requests and collecting results. See the module docstring for more information. """ def __init__(self, num_workers, q_size=0, resq_size=0): """Set up the thread pool and start num_workers worker threads. ``num_workers`` is the number of worker threads to start initially. If ``q_size > 0`` the size of the work *request queue* is limited and the thread pool blocks when the queue is full and it tries to put more work requests in it (see ``putRequest`` method), unless you also use a positive ``timeout`` value for ``putRequest``. If ``resq_size > 0`` the size of the *results queue* is limited and the worker threads will block when the queue is full and they try to put new results in it. .. warning:: If you set both ``q_size`` and ``resq_size`` to ``!= 0`` there is the possibilty of a deadlock, when the results queue is not pulled regularly and too many jobs are put in the work requests queue. To prevent this, always set ``timeout > 0`` when calling ``ThreadPool.putRequest()`` and catch ``Queue.Full`` exceptions. """ self._requests_queue = queue.Queue(q_size) # self._results_queue = queue.Queue(resq_size) self.workers = [] self.workRequests = {} self.createWorkers(num_workers) def createWorkers(self, num_workers): """Add num_workers worker threads to the pool. ``poll_timout`` sets the interval in seconds (int or float) for how ofte threads should check whether they are dismissed, while waiting for requests. """ for i in range(num_workers): self.workers.append(WorkerThread(self._requests_queue)) def dismissWorkers(self, num_workers): """Tell num_workers worker threads to quit after their current task.""" for i in range(min(num_workers, len(self.workers))): worker = self.workers.pop() worker.dismiss() def setNumWorkers(self, num_workers): """Set number of worker threads to num_workers""" cur_num = len(self.workers) if cur_num > num_workers: self.dismissWorkers(cur_num - num_workers) else: self.createWorkers(num_workers - cur_num) def putRequest(self, request, block=True, timeout=0): """Put work request into work queue and save its id for later.""" # don't reuse old work requests # print '\tthread pool putting work request %s'%request self._requests_queue.put(request, block, timeout) self.workRequests[request.requestID] = request try: __PyMCThreadPool__ = ThreadPool(int(os.environ['OMP_NUM_THREADS'])) except: try: import multiprocessing except ImportError: raise ImportError('The multiprocessing module is not available. If you are using Python 2.5, please install the backport of multiprocessing before continuing.') __PyMCThreadPool__ = ThreadPool(multiprocessing.cpu_count()) class CountDownLatch(object): def __init__(self, n): self.n = n self.main_lock = threading.Lock() self.counter_lock = threading.Lock() self.main_lock.acquire() def countdown(self): self.counter_lock.acquire() self.n -= 1 if self.n == 0: self.main_lock.release() self.counter_lock.release() def await(self): self.main_lock.acquire() self.main_lock.release() def map_noreturn(targ, argslist): """ parallel_call_noreturn(targ, argslist) :Parameters: - targ : function - argslist : list of tuples Does [targ(*args) for args in argslist] using the threadpool. """ # Thanks to Anne Archibald's handythread.py for the exception handling mechanism. exceptions=[] n_threads = len(argslist) exc_lock = threading.Lock() done_lock = CountDownLatch(n_threads) def eb(wr, el=exc_lock, ex=exceptions, dl=done_lock): el.acquire() ex.append(sys.exc_info()) el.release() dl.countdown() def cb(wr, value, dl=done_lock): dl.countdown() for args in argslist: __PyMCThreadPool__.putRequest(WorkRequest(targ, callback = cb, exc_callback=eb, args=args, requestID = id(args))) done_lock.await() if exceptions: six.reraise(*exceptions[0]) def set_threadpool_size(n): if n > 0: __PyMCThreadPool__.setNumWorkers(n) def get_threadpool_size(): return len(__PyMCThreadPool__.workers) def thread_partition_array(x): "Partition work arrays for multithreaded addition and multiplication" n_threads = get_threadpool_size() if len(x.shape)>1: maxind = x.shape[1] else: maxind = x.shape[0] bounds = np.array(np.linspace(0, maxind, n_threads+1),dtype='int') cmin = bounds[:-1] cmax = bounds[1:] return cmin,cmax __PyMCLock__ = threading.Lock() __PyMCExcInfo__ = [None] pymc-2.2+ds/pymc/utils.py000066400000000000000000000637151204033704200154200ustar00rootroot00000000000000"""Utility functions for PyMC""" # License: Scipy compatible # Author: David Huard, 2006 import numpy as np import sys, select, os, time from copy import copy from .PyMCObjects import Variable from . import flib import pdb from numpy.linalg.linalg import LinAlgError from numpy.linalg import cholesky, eigh from .Node import logp_of_set, logp_gradient_of_set import types from .datatypes import * from . import six from .six import print_ reduce = six.moves.reduce from numpy import (sqrt, ndarray, asmatrix, array, prod, asarray, atleast_1d, iterable, linspace, diff, around, log10, zeros, arange, digitize, apply_along_axis, concatenate, bincount, sort, hsplit, argsort, inf, shape, ndim, swapaxes, ravel, diag, cov, transpose as tr) __all__ = ['append', 'check_list', 'autocorr', 'calc_min_interval', 'check_type', 'ar1', 'ar1_gen', 'draw_random', 'histogram', 'hpd', 'invcdf', 'make_indices', 'normcdf', 'quantiles', 'rec_getattr', 'rec_setattr', 'round_array', 'trace_generator','msqrt','safe_len', 'log_difference', 'find_generations','crawl_dataless', 'logit', 'invlogit','stukel_logit','stukel_invlogit','symmetrize','value'] symmetrize = flib.symmetrize def value(a): """ Returns a.value if a is a Variable, or just a otherwise. """ if isinstance(a, Variable): return a.value else: return a # ===================================================================== # = Please don't use numpy.vectorize with these! It will leak memory. = # ===================================================================== def logit(theta): return flib.logit(ravel(theta)).reshape(shape(theta)) def invlogit(ltheta): return flib.invlogit(ravel(ltheta)).reshape(shape(ltheta)) def stukel_invlogit(ltheta,a1,a2): return flib.stukel_invlogit(ravel(ltheta),a1,a2).reshape(shape(ltheta)) def stukel_logit(theta,a1,a2): return flib.stukel_logit(ravel(theta),a1,a2).reshape(shape(theta)) def check_list(thing, label): if thing is not None: if thing.__class__ is not list: return [thing] return thing # TODO: Look into using numpy.core.numerictypes to do this part. # TODO : Wrap the nd histogramming fortran function. def safe_len(val): if np.isscalar(val): return 1 else: return np.prod(np.shape(val)) def round_array(array_in): """ arr_out = round_array(array_in) Rounds an array and recasts it to int. Also works on scalars. """ if isinstance(array_in, ndarray): return np.round(array_in).astype(int) else: return int(np.round(array_in)) try: from .flib import dchdc_wrap def msqrt(C): """ U=incomplete_chol(C) Computes a Cholesky factorization of C. Works for matrices that are positive-semidefinite as well as positive-definite, though in these cases the Cholesky factorization isn't unique. U will be upper triangular. This is the dchdc version. It's faster for full-rank matrices, but it has to compute the entire matrix. """ chol = C.copy() piv, N = dchdc_wrap(a=chol) if N<0: raise ValueError("Matrix does not appear to be positive semidefinite") return asmatrix(chol[:N,argsort(piv)]) except: def msqrt(cov): """ sig = msqrt(cov) Return a matrix square root of a covariance matrix. Tries Cholesky factorization first, and factorizes by diagonalization if that fails. """ # Try Cholesky factorization try: sig = asmatrix(cholesky(cov)) # If there's a small eigenvalue, diagonalize except LinAlgError: val, vec = eigh(cov) sig = np.zeros(vec.shape) for i in range(len(val)): if val[i]<0.: val[i]=0. sig[:,i] = vec[:,i]*sqrt(val[i]) return np.asmatrix(sig).T def histogram(a, bins=10, range=None, normed=False, weights=None, axis=None, strategy=None): """histogram(a, bins=10, range=None, normed=False, weights=None, axis=None) -> H, dict Return the distribution of sample. :Stochastics: `a` : Array sample. `bins` : Number of bins, or an array of bin edges, in which case the range is not used. If 'Scott' or 'Freeman' is passed, then the named method is used to find the optimal number of bins. `range` : Lower and upper bin edges, default: [min, max]. `normed` :Boolean, if False, return the number of samples in each bin, if True, return the density. `weights` : Sample weights. The weights are normed only if normed is True. Should weights.sum() not equal len(a), the total bin count will not be equal to the number of samples. `axis` : Specifies the dimension along which the histogram is computed. Defaults to None, which aggregates the entire sample array. `strategy` : Histogramming method (binsize, searchsorted or digitize). :Return: `H` : The number of samples in each bin. If normed is True, H is a frequency distribution. dict{ 'edges': The bin edges, including the rightmost edge. 'upper': Upper outliers. 'lower': Lower outliers. 'bincenters': Center of bins. 'strategy': the histogramming method employed.} :Examples: >>> x = random.rand(100,10) >>> H, D = histogram(x, bins=10, range=[0,1], normed=True) >>> H2, D = histogram(x, bins=10, range=[0,1], normed=True, axis=0) :SeeAlso: histogramnd """ weighted = weights is not None a = asarray(a) if axis is None: a = atleast_1d(a.ravel()) if weighted: weights = atleast_1d(weights.ravel()) axis = 0 # Define the range if range is None: mn, mx = a.min(), a.max() if mn == mx: mn = mn - .5 mx = mx + .5 range = [mn, mx] # Find the optimal number of bins. if bins is None or type(bins) == str: bins = _optimize_binning(a, range, bins) # Compute the bin edges if they are not given explicitely. # For the rightmost bin, we want values equal to the right # edge to be counted in the last bin, and not as an outlier. # Hence, we shift the last bin by a tiny amount. if not iterable(bins): dr = diff(range)/bins*1e-10 edges = linspace(range[0], range[1]+dr, bins+1, endpoint=True) else: edges = asarray(bins, float) dedges = diff(edges) bincenters = edges[:-1] + dedges/2. # Number of bins nbin = len(edges)-1 # Measure of bin precision. decimal = int(-log10(dedges.min())+10) # Choose the fastest histogramming method even = (len(set(around(dedges, decimal))) == 1) if strategy is None: if even: strategy = 'binsize' else: if nbin > 30: # approximative threshold strategy = 'searchsort' else: strategy = 'digitize' else: if strategy not in ['binsize', 'digitize', 'searchsort']: raise ValueError('Unknown histogramming strategy.', strategy) if strategy == 'binsize' and not even: raise ValueError('This binsize strategy cannot be used for uneven bins.') # Stochastics for the fixed_binsize functions. start = float(edges[0]) binwidth = float(dedges[0]) # Looping to reduce memory usage block = 66600 slices = [slice(None)]*a.ndim for i in arange(0,len(a),block): slices[axis] = slice(i,i+block) at = a[slices] if weighted: at = concatenate((at, weights[slices]), axis) if strategy == 'binsize': count = apply_along_axis(_splitinmiddle,axis,at, flib.weighted_fixed_binsize,start,binwidth,nbin) elif strategy == 'searchsort': count = apply_along_axis(_splitinmiddle,axis,at, \ _histogram_searchsort_weighted, edges) elif strategy == 'digitize': count = apply_along_axis(_splitinmiddle,axis,at,\ _histogram_digitize,edges,normed) else: if strategy == 'binsize': count = apply_along_axis(flib.fixed_binsize,axis,at,start,binwidth,nbin) elif strategy == 'searchsort': count = apply_along_axis(_histogram_searchsort,axis,at,edges) elif strategy == 'digitize': count = apply_along_axis(_histogram_digitize,axis,at,None,edges, normed) if i == 0: total = count else: total += count # Outlier count upper = total.take(array([-1]), axis) lower = total.take(array([0]), axis) # Non-outlier count core = a.ndim*[slice(None)] core[axis] = slice(1, -1) hist = total[core] if normed: normalize = lambda x: atleast_1d(x/(x*dedges).sum()) hist = apply_along_axis(normalize, axis, hist) return hist, {'edges':edges, 'lower':lower, 'upper':upper, \ 'bincenters':bincenters, 'strategy':strategy} def _histogram_fixed_binsize(a, start, width, n): """histogram_even(a, start, width, n) -> histogram Return an histogram where the first bin counts the number of lower outliers and the last bin the number of upper outliers. Works only with fixed width bins. :Stochastics: a : array Array of samples. start : float Left-most bin edge. width : float Width of the bins. All bins are considered to have the same width. n : int Number of bins. :Return: H : array Array containing the number of elements in each bin. H[0] is the number of samples smaller than start and H[-1] the number of samples greater than start + n*width. """ return flib.fixed_binsize(a, start, width, n) def _histogram_binsize_weighted(a, w, start, width, n): """histogram_even_weighted(a, start, width, n) -> histogram Return an histogram where the first bin counts the number of lower outliers and the last bin the number of upper outliers. Works only with fixed width bins. :Stochastics: a : array Array of samples. w : array Weights of samples. start : float Left-most bin edge. width : float Width of the bins. All bins are considered to have the same width. n : int Number of bins. :Return: H : array Array containing the number of elements in each bin. H[0] is the number of samples smaller than start and H[-1] the number of samples greater than start + n*width. """ return flib.weighted_fixed_binsize(a, w, start, width, n) def _histogram_searchsort(a, bins): n = sort(a).searchsorted(bins) n = concatenate([n, [len(a)]]) count = concatenate([[n[0]], n[1:]-n[:-1]]) return count def _histogram_searchsort_weighted(a, w, bins): i = sort(a).searchsorted(bins) sw = w[argsort(a)] i = concatenate([i, [len(a)]]) n = concatenate([[0],sw.cumsum()])[i] count = concatenate([[n[0]], n[1:]-n[:-1]]) return count def _splitinmiddle(x, function, *args, **kwds): x1,x2 = hsplit(x, 2) return function(x1,x2,*args, **kwds) def _histogram_digitize(a, w, edges, normed): """Internal routine to compute the 1d weighted histogram for uneven bins. a: sample w: weights edges: bin edges weighted: Means that the weights are appended to array a. Return the bin count or frequency if normed. """ weighted = w is not None nbin = edges.shape[0]+1 if weighted: count = zeros(nbin, dtype=w.dtype) if normed: count = zeros(nbin, dtype=float) w = w/w.mean() else: count = zeros(nbin, int) binindex = digitize(a, edges) # Count the number of identical indices. flatcount = bincount(binindex, w) # Place the count in the histogram array. count[:len(flatcount)] = flatcount return count def _optimize_binning(x, range, method='Freedman'): """Find the optimal number of bins. Available methods : Freedman, Scott """ N = x.shape[0] if method.lower()=='freedman': s=sort(x) IQR = s[int(N*.75)] - s[int(N*.25)] # Interquantile range (75% -25%) width = 2* IQR*N**(-1./3) elif method.lower()=='scott': width = 3.49 * x.std()* N**(-1./3) else: raise ValueError('Method must be Scott or Freedman', method) return int(diff(range)/width) def normcdf(x, log=False): """Normal cumulative density function.""" y = np.atleast_1d(x).copy() flib.normcdf(y) if log: # return np.where(y>0, np.log(y), -np.inf) return np.array([-np.inf if not yi else np.log(yi) for yi in y]) return y def lognormcdf(x, mu, tau): """Log-normal cumulative density function""" x = np.atleast_1d(x) return np.array([0.5*(1-flib.derf(-(np.sqrt(tau/2))*(np.log(y)-mu))) for y in x]) def invcdf(x): """Inverse of normal cumulative density function.""" x = np.atleast_1d(x) return np.array([flib.ppnd16(y,1) for y in x]) def ar1_gen(rho, mu, sigma, size=1): """Create an autoregressive series of order one AR(1) generator. .. math:: X_t = \mu_t + \rho (X_{t-1}-\mu_{t-1} + \epsilon_t If mu is a sequence and size > len(mu), the algorithm loops through mu. :Stochastics: rho : scalar in [0,1] mu : scalar or sequence sigma : scalar > 0 size : integer """ mu = np.asarray(mu, float) mu = np.resize(mu, size) r = mu.copy() r += np.random.randn(size)*sigma r[0] = np.random.randn(1)*sigma/np.sqrt(1-rho**2) i = 0 while True: yield r[i] i+=1 if i==size: break r[i] += rho*(r[i-1]-mu[i-1]) def ar1(rho, mu, sigma, size=1): """Return an autoregressive series of order one AR(1). .. math:: X_t = \mu_t + \rho (X_{t-1}-\mu_{t-1} + \epsilon_t If mu is a sequence and size > len(mu), the algorithm loops through mu. :Stochastics: rho : scalar in [0,1] mu : scalar or sequence sigma : scalar > 0 size : integer """ return np.array([x for x in ar1_gen(rho, mu, sigma, size)]) def autocorr(x, lag=1): """Sample autocorrelation at specified lag. The autocorrelation is the correlation of x_i with x_{i+lag}. """ if not lag: return 1 if lag<0: return # x = np.squeeze(asarray(x)) # mu = x.mean() # v = x.var() # return ((x[:-lag]-mu)*(x[lag:]-mu)).sum()/v/(len(x) - lag) S = autocov(x, lag) return S[0,1]/sqrt(prod(diag(S))) def autocov(x, lag=1): """ Sample autocovariance at specified lag. The autocovariance is a 2x2 matrix with the variances of x[:-lag] and x[lag:] in the diagonal and the autocovariance on the off-diagonal. """ if not lag: return 1 if lag<0: return return cov(x[:-lag], x[lag:], bias=1) def trace_generator(trace, start=0, stop=None, step=1): """Return a generator returning values from the object's trace. Ex: T = trace_generator(theta.trace) T.next() for t in T:... """ i = start stop = stop or np.inf size = min(trace.length(), stop) while i < size: index = slice(i, i+1) yield trace.gettrace(slicing=index)[0] i+=step def draw_random(obj, **kwds): """Draw random variates from obj.random method. If the object has parents whose value must be updated, use parent_name=trace_generator_function. Ex: R = draw_random(theta, beta=pymc.utils.trace_generator(beta.trace)) R.next() """ while True: for k,v in six.iteritems(kwds): obj.parents[k] = v.next() yield obj.random() def rec_getattr(obj, attr): """Get object's attribute. May use dot notation. >>> class C(object): pass >>> a = C() >>> a.b = C() >>> a.b.c = 4 >>> rec_getattr(a, 'b.c') 4 """ return reduce(getattr, attr.split('.'), obj) def rec_setattr(obj, attr, value): """Set object's attribute. May use dot notation. >>> class C(object): pass >>> a = C() >>> a.b = C() >>> a.b.c = 4 >>> rec_setattr(a, 'b.c', 2) >>> a.b.c 2 """ attrs = attr.split('.') setattr(reduce(getattr, attrs[:-1], obj), attrs[-1], value) def hpd(x, alpha): """Calculate HPD (minimum width BCI) of array for given alpha :Arguments: x : Numpy array An array containing MCMC samples alpha : float Desired probability of type I error """ # Make a copy of trace x = x.copy() # For multivariate node if x.ndim>1: # Transpose first, then sort tx = tr(x, range(x.ndim)[1:]+[0]) dims = shape(tx) # Container list for intervals intervals = np.resize(0.0, dims[:-1]+(2,)) for index in make_indices(dims[:-1]): try: index = tuple(index) except TypeError: pass # Sort trace sx = sort(tx[index]) # Append to list intervals[index] = calc_min_interval(sx, alpha) # Transpose back before returning return array(intervals) else: # Sort univariate node sx = sort(x) return array(calc_min_interval(sx, alpha)) def make_indices(dimensions): # Generates complete set of indices for given dimensions level = len(dimensions) if level==1: return range(dimensions[0]) indices = [[]] while level: _indices = [] for j in range(dimensions[level-1]): _indices += [[j]+i for i in indices] indices = _indices level -= 1 try: return [tuple(i) for i in indices] except TypeError: return indices def calc_min_interval(x, alpha): """Internal method to determine the minimum interval of a given width""" # Initialize interval min_int = [None,None] try: # Number of elements in trace n = len(x) # Start at far left start, end = 0, int(n*(1-alpha)) # Initialize minimum width to large value min_width = inf while end < n: # Endpoints of interval hi, lo = x[end], x[start] # Width of interval width = hi - lo # Check to see if width is narrower than minimum if width < min_width: min_width = width min_int = [lo, hi] # Increment endpoints start +=1 end += 1 return min_int except IndexError: print_('Too few elements for interval calculation') return [None,None] def quantiles(x, qlist=(2.5, 25, 50, 75, 97.5)): """Returns a dictionary of requested quantiles from array :Arguments: x : Numpy array An array containing MCMC samples qlist : tuple or list A list of desired quantiles (defaults to (2.5, 25, 50, 75, 97.5)) """ # Make a copy of trace x = x.copy() # For multivariate node if x.ndim>1: # Transpose first, then sort, then transpose back sx = sort(x.T).T else: # Sort univariate node sx = sort(x) try: # Generate specified quantiles quants = [sx[int(len(sx)*q/100.0)] for q in qlist] return dict(zip(qlist, quants)) except IndexError: print_("Too few elements for quantile calculation") def coda_output(pymc_object): """Generate output files that are compatible with CODA :Arguments: pymc_object : Model or Node A PyMC object containing MCMC output. """ print_() print_("Generating CODA output") print_('='*50) name = pymc_object.__name__ # Open trace file trace_file = open(name+'_coda.out', 'w') # Open index file index_file = open(name+'_coda.ind', 'w') variables = [pymc_object] if hasattr(pymc_object, 'variables'): variables = pymc_object.variables # Initialize index index = 1 # Loop over all parameters for v in variables: vname = v.__name__ print_("Processing", vname) try: index = _process_trace(trace_file, index_file, v.trace(), vname, index) except TypeError: pass # Close files trace_file.close() index_file.close() # Lazy shortcut coda = coda_output def _process_trace(trace_file, index_file, trace, name, index): """Support function for coda_output(); writes output to files""" if ndim(trace)>1: trace = swapaxes(trace, 0, 1) for i, seq in enumerate(trace): _name = '%s_%s' % (name, i) index = _process_trace(trace_file, index_file, seq, _name, index) else: index_buffer = '%s\t%s\t' % (name, index) for i, val in enumerate(trace): trace_file.write('%s\t%s\r\n' % (i+1, val)) index += 1 index_file.write('%s%s\r\n' % (index_buffer, index-1)) return index def log_difference(lx, ly): """Returns log(exp(lx) - exp(ly)) without leaving log space.""" # Negative log of double-precision infinity li=-709.78271289338397 diff = ly - lx # Make sure log-difference can succeed if np.any(diff>=0): raise ValueError('Cannot compute log(x-y), because y>=x for some elements.') # Otherwise evaluate log-difference return lx + np.log(1.-np.exp(diff)) def getInput(): """Read the input buffer without blocking the system.""" input = '' if sys.platform=='win32': import msvcrt if msvcrt.kbhit(): # Check for a keyboard hit. input += msvcrt.getch() print_(input) else: time.sleep(.1) else: # Other platforms # Posix will work with sys.stdin or sys.stdin.fileno() # Mac needs the file descriptor. # This solution does not work for windows since select # expects a socket, and I have no idea how to create a # socket from standard input. sock = sys.stdin.fileno() #select(rlist, wlist, xlist, timeout) while len(select.select([sock], [], [], 0.1)[0])>0: input += os.read(sock, 4096) return input def crawl_dataless(sofar, gens): """ Crawls out from v to find the biggest dataless submodel containing v. TODO: Let MCMC start the crawl from its last generation. It doesn't matter that there won't be one contiguous group. """ new_gen = set([]) all_ext_parents = set() for s in gens[-1]: all_ext_parents.update(s.extended_parents) for p in all_ext_parents: if p._random is not None and not p.observed: if len(p.extended_children-sofar) == 0: new_gen.add(p) if len(new_gen)==0: return sofar, gens else: sofar |= new_gen gens.append(new_gen) return crawl_dataless(sofar, gens) def find_generations(container, with_data = False): """ A generation is the set of stochastic variables that only has parents in previous generations. """ generations = [] # Find root generation generations.append(set()) all_children = set() if with_data: stochastics_to_iterate = container.stochastics | container.observed_stochastics else: stochastics_to_iterate = container.stochastics for s in stochastics_to_iterate: all_children.update(s.extended_children & stochastics_to_iterate) generations[0] = stochastics_to_iterate - all_children # Find subsequent _generations children_remaining = True gen_num = 0 while children_remaining: gen_num += 1 # Find children of last generation generations.append(set()) for s in generations[gen_num-1]: generations[gen_num].update(s.extended_children & stochastics_to_iterate) # Take away stochastics that have parents in the current generation. thisgen_children = set() for s in generations[gen_num]: thisgen_children.update(s.extended_children & stochastics_to_iterate) generations[gen_num] -= thisgen_children # Stop when no subsequent _generations remain if len(thisgen_children) == 0: children_remaining = False return generations def append(nodelist, node, label=None, sep='_'): """ Append function to automate the naming of list elements in Containers. :Arguments: - `nodelist` : List containing nodes for Container. - `node` : Node to be added to list. - `label` : Label to be appended to list (If not passed, defaults to element number). - `sep` : Separator character for label (defaults to underscore). :Return: - `nodelist` : Passed list with node added. """ nname = node.__name__ # Determine label label = label or len(nodelist) # Look for separator at the end of name ind = nname.rfind(sep) # If there is no separator, we will remove last character and # replace with label. node.__name__ = nname[:ind] + sep + str(label) nodelist.append(node) return nodelist #deterministic related utilities def find_element(names, modules, error_on_fail): element = None found = False if type(names) is str: names = [names] if type(modules) is dict or type(modules) is types.ModuleType: modules = [modules] for module in modules: if type(module) is types.ModuleType: module = copy(module.__dict__) elif type(module) is dict: module = copy(module) else: raise AttributeError for name in names: try: function = module[name] found = True except KeyError: pass if not found and error_on_fail: raise NameError("no function or variable " + str(names) + " in " + str(modules)) return function pymc-2.2+ds/setup.py000077500000000000000000000134431204033704200144440ustar00rootroot00000000000000#!/usr/bin/env python # Do not add setuptools here; use setupegg.py instead. Nose still has problems running # tests inside of egg packages, so it is useful to be able to install without eggs as needed. from __future__ import print_function from numpy.distutils.misc_util import Configuration from numpy.distutils.system_info import get_info import os, sys #try: # from googlecode import upload2google #except: # def upload2google(): # raise "This commmand is only available with the subversion development version." config = Configuration('pymc',parent_package=None,top_path=None) dist = sys.argv[1] # ============================== # = Compile Fortran extensions = # ============================== # If optimized lapack/ BLAS libraries are present, compile distributions that involve linear algebra against those. # Otherwise compile blas and lapack from netlib sources. lapack_info = get_info('lapack_opt',1) f_sources = ['pymc/flib.f','pymc/histogram.f', 'pymc/flib_blas.f', 'pymc/blas_wrap.f', 'pymc/math.f', 'pymc/gibbsit.f', 'cephes/i0.c', 'cephes/c2f.c','cephes/chbevl.c'] if lapack_info: config.add_extension(name='flib',sources=f_sources, extra_info=lapack_info, f2py_options=['skip:ppnd7']) if not lapack_info or dist in ['bdist', 'sdist']: ##inc_dirs = ['blas/BLAS','lapack/double'] print('No optimized BLAS or Lapack libraries found, building from source. This may take a while...') for fname in os.listdir('blas/BLAS'): # Make sure this is a Fortran file, and not one of those weird hidden files that # pop up sometimes in the tarballs if fname[-2:]=='.f' and fname[0].find('_')==-1: f_sources.append('blas/BLAS/'+fname) ## for fname in os.listdir('lapack/double'): ## if fname[-2:]=='.f': ## inc_dirs.append('lapack/double/'+fname) for fname in ['dpotrs','dpotrf','dpotf2','ilaenv','dlamch','ilaver','ieeeck','iparmq']: f_sources.append('lapack/double/'+fname+'.f') config.add_extension(name='flib',sources=f_sources) # TODO Convert Pyrex to Cython # ============================ # = Compile Pyrex extensions = # ============================ config.add_extension(name='LazyFunction',sources=['pymc/LazyFunction.c']) config.add_extension(name='Container_values', sources='pymc/Container_values.c') config_dict = config.todict() try: config_dict.pop('packages') except: pass # =========================================== # = Compile GP package's Fortran extensions = # =========================================== # Compile linear algebra utilities if lapack_info: config.add_extension(name='gp.linalg_utils',sources=['pymc/gp/linalg_utils.f','pymc/blas_wrap.f'], extra_info=lapack_info) config.add_extension(name='gp.incomplete_chol',sources=['pymc/gp/incomplete_chol.f'], extra_info=lapack_info) if not lapack_info or dist in ['bdist', 'sdist']: print('No optimized BLAS or Lapack libraries found, building from source. This may take a while...') f_sources = ['pymc/blas_wrap.f'] for fname in os.listdir('blas/BLAS'): if fname[-2:]=='.f': f_sources.append('blas/BLAS/'+fname) for fname in ['dpotrs','dpotrf','dpotf2','ilaenv','dlamch','ilaver','ieeeck','iparmq']: f_sources.append('lapack/double/'+fname+'.f') config.add_extension(name='gp.linalg_utils',sources=['pymc/gp/linalg_utils.f'] + f_sources) config.add_extension(name='gp.incomplete_chol',sources=['pymc/gp/incomplete_chol.f'] + f_sources) # Compile covariance functions config.add_extension(name='gp.cov_funs.isotropic_cov_funs',\ sources=['pymc/gp/cov_funs/isotropic_cov_funs.f','blas/BLAS/dscal.f'],\ extra_info=lapack_info) config.add_extension(name='gp.cov_funs.distances',sources=['pymc/gp/cov_funs/distances.f'], extra_info=lapack_info) if __name__ == '__main__': from numpy.distutils.core import setup setup( version="2.2", description="Markov Chain Monte Carlo sampling toolkit.", #maintainer="David Huard", #maintainer_email="david.huard@gmail.com", author="Christopher Fonnesbeck, Anand Patil and David Huard", author_email="fonnesbeck@gmail.com ", url="github.com/pymc-devs/pymc", #download_url="", license="Academic Free License", classifiers=[ 'Development Status :: 5 - Production/Stable', 'Environment :: Console', 'Operating System :: OS Independent', 'Intended Audience :: Science/Research', 'License :: OSI Approved :: Academic Free License (AFL)', 'Programming Language :: Python', 'Programming Language :: Fortran', 'Topic :: Scientific/Engineering', ], requires=['NumPy (>=1.6)',], long_description=""" Bayesian estimation, particularly using Markov chain Monte Carlo (MCMC), is an increasingly relevant approach to statistical estimation. However, few statistical software packages implement MCMC samplers, and they are non-trivial to code by hand. ``pymc`` is a python package that implements the Metropolis-Hastings algorithm as a python class, and is extremely flexible and applicable to a large suite of problems. ``pymc`` includes methods for summarizing output, plotting, goodness-of-fit and convergence diagnostics. ``pymc`` only requires ``NumPy``. All other dependencies such as ``matplotlib``, ``SciPy``, ``pytables``, ``sqlite`` or ``mysql`` are optional. """, packages=["pymc", "pymc/database", "pymc/examples", "pymc/examples/gp", "pymc/tests", "pymc/gp", "pymc/gp/cov_funs"], #cmdclass={'upload2google':upload2google}, **(config_dict)) pymc-2.2+ds/setupegg.py000077500000000000000000000002251204033704200151210ustar00rootroot00000000000000#!/usr/bin/env python """ A setup.py script to use setuptools, which gives egg goodness, etc. """ from setuptools import setup execfile('setup.py') pymc-2.2+ds/stdeb_all.cfg000066400000000000000000000042141204033704200153350ustar00rootroot00000000000000########## WARNING: This file is not (anywhere near) perfect! I haven't # spent enough time understanding Debian Python policy and examing other # packages. Eventually I will do so, and I would welcome help. # You have been warned, use at your own risk. [pymc] Depends: python (>= 2.5.0), python-numpy (>= 1.1.1), python-scipy, python-matplotlib, python-tables Build-Depends: gfortran, python-numpy # [setuptools] # Source: setuptools # #Debian-Version: 0ads1 # Provides: python2.5-setuptools # Conflicts: python2.5-setuptools, python2.4-setuptools # Replaces: python2.5-setuptools # # [numpy] # Source: numpy # # Debian-Version: 0ads3 # Build-Depends: python-dev, refblas3-dev | atlas3-base-dev, lapack3-dev | atlas3-base-dev # Provides: python2.5-numpy # Conflicts: python2.5-numpy, python2.4-numpy # Replaces: python2.5-numpy # # [matplotlib] # # (For some reason, "debuild -sa" won't build matplotlib because tk.h isn't found.) # Build-Depends: python-dev, python-numpy, python-numarray, python-numeric, python-gtk2-dev, tk8.4-dev, libwxgtk2.4-dev, python-tz # Depends: python-gtk2, python-numpy, python-numeric, python-numarray, python-tz # Suggests: gs-gpl # # When building non-release, uncomment this: (Is this still necessary?) # #Upstream-Version-Suffix: .dev-r2587 # # When building release, uncommend this: (This should get fixed upstream.) # # Stdeb-Patch-File: /home/astraw/other-peoples-src/matplotlib/mpl_no_egg_info.patch # Provides: python2.5-matplotlib, python-matplotlib-data # Conflicts: python2.5-matplotlib, python-matplotlib-data # Replaces: python2.5-matplotlib, python-matplotlib-data # # [scipy] # Debian-Version: 0ads1 # Source: scipy # #Upstream-Version-Prefix: 0.4.9+ # Build-Depends: python-numpy, fftw3-dev # Depends: python-numpy # Provides: python2.5-scipy # Conflicts: python2.5-scipy, python2.4-scipy # Replaces: python2.5-scipy # # [tables] # Debian-Version: 0ads2 # Source: pytables # #Upstream-Version-Suffix: .svn1713 # Build-Depends: libhdf5-serial-dev, python-numarray, libbz2-dev, liblzo-dev # Depends: python-numarray, python-numpy # Provides: python2.5-tables # Conflicts: python2.5-tables, python2.4-tables # Replaces: python2.5-tables